为什么在全屏模式下全屏抗锯齿不能设置我的机器配置是2G内存,In我也是啊,游戏BUG吧什么是全屏抗锯齿???SFAA抗锯齿(anti-aliasing):由于在3d图像中,受分辨的制约,物体边缘总会或多或少的呈现三角形的锯齿,而抗锯齿就是指对图像边缘进行柔化处理,使图像边缘看起来更平滑,更接近实物的物体。它是提高画质以使之柔和的一种方法。如
为什么在全屏模式下全屏抗锯齿不能设置我的机器配置是2G内存,In
我也是啊,游戏BUG吧
什么是全屏抗锯齿???SFAA
抗锯齿(anti-aliasing):由于在3d图像中,受分辨的制约,物体边缘总会或多或少的呈现三角形的锯齿,而抗锯齿就是指对图像边缘进行柔化处理,使图像边缘看起来更平滑,更接近实物的物体。它是提高画质以使之柔和的一种方法。如今最新的全屏抗锯齿(fullsceneanti-aliasing)可以有效的消除多边形结合处(特别是较小的多边形间组合中)的错位现象,降低了图像的失真度。全景抗锯齿在进行处理时,须对图像附近的像素进行2-4次采样,以达到不同级别的抗锯齿效果。简单的说也就是将图像边缘及其两侧的像素颜色进行混合,然后用新生成的具有混合特性的点来替换原来位置上的点以达到柔化物体外形、消除锯齿的效果。
请问FXAA、FSAA与MSAA有什么区别?效果和性能上哪个好?
首先所有msaa, ssaa, fxaa, txaa等都是抗锯齿(anti-aliasing)技术。锯齿的来源是因为场景的定义在三维空间中是连续的,而最终显示的像素则是一个离散的二维数组。所以判断一个点到底没有被某个像素覆盖的时候单纯是一个“有”或者“没有”问题,丢失了连续性的信息,导致锯齿。最直接的抗锯齿方法就是ssaa(super sampling aa)。拿4xssaa举例子,假设最终屏幕输出的分辨率是800×600, 4xssaa就会先渲染到一个分辨率1600×1200的buffer上,然后再直接把这个放大4倍的buffer下采样致800×600。这种做法在数学上是最完美的抗锯齿。但是劣势也很明显,光栅化和着色的计算负荷都比原来多了4倍,render target的大小也涨了4倍。msaa(multi-sampling aa)则很聪明的只是在光栅化阶段,判断一个三角形是否被像素覆盖的时候会计算多个覆盖样本(coverage sample),但是在pixel shader着色阶段计算像素颜色的时候每个像素还是只计算一次。例如下图是4xmsaa,三角形只覆盖了4个coverage sample中的2个。所以这个三角形需要生成一个fragment在pixel shader里着色,只不过生成的fragment还是在像素中央(位置,法线等信息插值到像素中央)然后只运行一次pixel shader,最后得到的结…首先所有msaa, ssaa, fxaa, txaa等都是抗锯齿(anti-aliasing)技术。锯齿的来源是因为场景的定义在三维空间中是连续的,而最终显示的像素则是一个离散的二维数组。所以判断一个点到底没有被某个像素覆盖的时候单纯是一个“有”或者“没有”问题,丢失了连续性的信息,导致锯齿。最直接的抗锯齿方法就是ssaa(super sampling aa)。拿4xssaa举例子,假设最终屏幕输出的分辨率是800×600, 4xssaa就会先渲染到一个分辨率1600×1200的buffer上,然后再直接把这个放大4倍的buffer下采样致800×600。这种做法在数学上是最完美的抗锯齿。但是劣势也很明显,光栅化和着色的计算负荷都比原来多了4倍,render target的大小也涨了4倍。msaa(multi-sampling aa)则很聪明的只是在光栅化阶段,判断一个三角形是否被像素覆盖的时候会计算多个覆盖样本(coverage sample),但是在pixel shader着色阶段计算像素颜色的时候每个像素还是只计算一次。例如下图是4xmsaa,三角形只覆盖了4个coverage sample中的2个。所以这个三角形需要生成一个fragment在pixel shader里着色,只不过生成的fragment还是在像素中央(位置,法线等信息插值到像素中央)然后只运行一次pixel shader,最后得到的结果在resolve阶段会乘以0.5,因为这个三角形只cover了一半的sample。现代所有gpu都在硬件上实现了这个算法,而且在shading的运算量远大于光栅化的今天,这个方法远比ssaa快很多。顺便提一下之前nv的csaa,它就是更进一步的把coverage sample和depth,stencil test分开了。msaa的一个问题就是和现在大街小巷都是的deferred shading框架并不是那么兼容。因为用deferred shading的时候场景都先被光栅化到gbuffer上去了,不直接做shading。硬要做的话可以看我之前写的这个sdk sample(antialiased deferred shading,大概思路就是用各种方法检测一下哪个pixel是被多个fragment cover的才手动做super sampling)。因为msaa这个问题现代引擎里都用的是post processing aa这一类技术。这一类东西包括fxaa,txaa等,不依赖于任何硬件,完全用图像处理的方法来搞。有可能会依赖于一些其他的信息例如motion vector buffer或者前一贞的变换矩阵来找到上一贞像素对应的位置,然后再做一些hack去blur或者blend上一贞的颜色等。通常非常hacky,fxaa的发明人原来是我们组的,他自己都不知道这个为什么会work- -”,但是精心调校之后后效果还是很好的,例如下面是ue4的post processing aa开关对比图:最后再扯一下nv最新的那个mfaa(mother fucking aa, 哦不,multi-frame aa),因为maxwell架构支持的programmable coverage sample location,所以可以做到贞间用不同的coverage sample位置,当fps足够高的时候,2xmfaa就可以达到4xmsaa的效果。对玩家来说,看着舒服就行。当然像使命召唤这种明明是forward rendering还要用ssaa来抗锯齿的,在显卡烂的机子上开还是要慎重的。
创业项目群,学习操作 18个小项目,添加 微信:niuben22 备注:小项目!
如若转载,请注明出处:https://www.sztxc.cn/11517.html