延迟着色抗锯齿

Pil*_*pel 1 opengl graphics direct3d

很多人都注意到MSAA不适用于延迟着色.这是为什么?这听起来还不错.

根据维基百科:

...由于将照明阶段与几何阶段分开,硬件抗锯齿不再产生正确的结果,因为插值子样本将导致无意义的位置,法线和切线属性.

你能解释一下吗?

我有哪些其他AA替代品?

Nic*_*las 9

多重采样确实适用于延迟渲染.延期渲染只会改变您为其支付的价格.

多重采样基于这样的一般思想:您只需要对该像素内特定三角形光栅化所覆盖的所有样本执行一次片段着色器.因此,当您写入多个样本时(如使用超级采样),您只需执行一次片段着色器,从而节省了大量纹理访问.在多重采样图像中的样本上写入相同的值.

延迟渲染仍然可以做到这一点.在多重采样规则下,几何通道仍然有意义.或者至少,尽可能多的感觉.

问题是你在照明过程中必须做的事情.

由于几何体通道是多重采样的,因此您的光照通道必须读取多重采样数据.您不能对几何缓冲区进行多重采样解析(这将是维基百科所讨论的"荒谬"部分); 您的照明通道必须读取每个样品并进行处理.每盏灯.因此,如果您进行了8倍多重采样操作,则片段着色器必须为每个像素运行八次.每盏灯.

这通常不是许多人愿意付出的代价.

替代方案是任何"我不能相信它不是抗锯齿"技术,如FXAA或其他任何技术.

  • 另见[抗锯齿延迟渲染](http://docs.nvidia.com/gameworks/content/gameworkslibrary/graphicssamples/d3d_samples/antialiaseddeferredrendering.htm) (4认同)