通过在线阅读,我了解了超级采样抗锯齿的工作原理的基本思想,它以比用户显示器更高的分辨率渲染场景,使用额外的像素计算平均值,然后对其进行下采样。
不过,我不太明白这在实践中是如何运作的。例如,如果墙壁的一个红色像素旁边是天空的一个蓝色像素,当场景渲染为 x2 SSAA 时,一个红色像素现在不就是四个红色像素,与蓝天像素相同吗?这对计算平均值有什么帮助?
四个新的红色像素是否与原始图像重叠,这样您是否会得到红色和蓝色像素的混合,并能够计算平均值以帮助平滑墙壁和天空之间的过渡?
任何帮助,将不胜感激。
答案1
这很有帮助。在您的原始示例中:
... 红色 红色 红色 蓝色 蓝色 蓝色 ...
红色和蓝色的边界看起来像楼梯
在过采样图像中
... 红色 红色 红色 红色 蓝色 蓝色 蓝色 ...
当我们进行下采样时
... 红色] [红色 红色] [红色 蓝色] [蓝色 蓝色] [蓝色 ...
现在我们有一个由红色和蓝色平均而成的像素,模糊了红色和蓝色区域之间的边界。
如果您想象红色和蓝色两个区域之间的对角边界,则过采样将在阶梯边缘插入中间像素,因为许多 2x2 框必然包含红色和蓝色像素。
答案2
好的,我会尝试解释它,因为我以前在处理照片时曾经应用过类似的方法,将一些“平滑”算法应用于照片或低分辨率照片,而不会获得非常宽的深度平滑。
它是这样的。
这是您在通常的分辨率下查看的像素。迫切需要抗锯齿或平滑锯齿。
一方面,我们将图像放大到 4 倍,然后应用相同的抗锯齿算法
值得注意的是,作为一台愚蠢的计算机,我不能只将黑色弯曲成白色(改变白色量),还必须将白色弯曲成黑色(平衡方程式 :-)。我盲目地将数学矩阵应用到我被告知要应用的地方。虽然视频卡算法非常复杂,但实际上它们并不像这般盲目。
游戏平衡的典型例子是,你不会希望你的栅栏消失在天空中,你也不希望你的天空变成栅栏,所以任何调整都必须更平等地应用于天空像素和栅栏像素。这也是视频卡和游戏引擎破坏这种平衡以获得最佳画面的一个例子,尽管细节如此复杂。
在某些时候,所有这些都必须回到显示分辨率,在那里它将是较低的分辨率,并且在进行大量的项目调整之后,那些额外的像素现在将完美地混合成更少的像素。
(嗯,它不是那种混合的完美颜色,但我没有做计算)
正如你所看到的,它在显示分辨率下再次看起来很糟糕。
在低分辨率方面,我们有这个巨大的受影响/改变的区域,因为我们将所有这些像素相互弯曲(黑色和白色),并且由于我们仅在低分辨率下工作,因此有大量的平滑区域。
在我们的高分辨率方面,我们获得了一组完美平衡的像素,将 4X 像素混合在一起,从而形成较小的平滑区域。因此,高分辨率方面会找到可以使这一切变得非常漂亮的像素,但不会留下很大的模糊混乱。
因为(再次)我们必须弯曲更多的像素,以保持彼此混合的平衡,如果我们首先放大,我们可以在较小的范围内创建这种弯曲混合,仍然保持彼此弯曲的平衡,最终的结果是受影响的像素更少,锯齿隐藏相同。
当您使用游戏并排比较这两种方法时,看似需要付出大量额外努力才能实现的差异并不大。当我处理将在较低分辨率下使用的照片时也是如此,这对我和机器来说都是大量额外努力,但结果只是略好一些。