为什么有些游戏使用某种抖动模式而不是传统的Alpha透明度?


24

最近,我看到一些3D游戏(例如:)GTA IV使用某种有序抖动来模拟透明度/ alpha。

多边形不像往常一样透明,而是呈现抖动纹理,该纹理从左到右逐渐切换以模拟透明度:

在此处输入图片说明

效果并非令人不愉快,但乍看之下却令人惊讶(相对于传统的alpha混合)

除了产生的视觉美学效果外,有些游戏是否有其他理由(更好的性能,节省的带宽或其他我没有想到的原因)?

我已经在网上搜索过,但找不到有关此技术的任何信息。


可能只是伴随着像素艺术风格。
MichaelHouse

@ Byte56像素艺术风格?GTA IV???
内森·里德

@NathanReed Heh,不在GTA IV中。OP提到最近在游戏中看到它。
MichaelHouse

1
当使太靠近近平面的3D对象淡化时,我发现该技术比alpha混合更令人愉快。
Andreas

Answers:


27

这是使用延迟着色的游戏中提高透明度的一种相当普遍的方法。适当的透明度对于延迟着色根本不起作用,因为每个像素只能存储一个表面的数据(深度,法向矢量,颜色等),并且适当的透明度涉及在一个像素处重叠多个表面,每个表面都需要独立灯光。

游戏引擎可以通过以下几种方式处理此问题:

  • 对透明表面使用前向阴影(可能使用简化的照明模型),对不透明表面使用递延阴影。透明表面必须通过从前到后的排序分别绘制。
  • 使用抖动(通常称为点透明或纱窗透明),该方法可处理延迟阴影,因为每个像素仅提供一个表面。这对于LOD过渡特别有效,因为它们通常在固定的时间内完成,从而限制了点画的可见时间。例如,对于建筑物上的玻璃窗,它的效果不是很好。
  • 也可以使用点画,然后应用后期处理模糊来重新组合点画的像素,从而获得适当透明度的近似值。自愿行为在“圣徒街第三节”(也许还有其他一些游戏)中以“ 推断照明 ” 的名称进行。这看起来很不错,但是后处理模糊非常昂贵。
  • 当然,尽管我不知道有任何使用它们的游戏,但仍然存在所有与顺序无关的透明度方法。到目前为止,它们仅用于技术演示。

还可以将这些方法结合使用,例如,玻璃窗的前向阴影和LOD过渡的点画。

还值得注意的是,某些游戏使用点画来绘制柔和阴影。这是性能的折衷;更好的阴影需要在像素着色器中使用更多的纹理样本,这会花费更长的时间,但是您可以通过使用较少的样本并随机偏移其位置来获得看起来不错的结果。随机偏移会产生点画效果。


我不知道延迟着色技术(在这里解释: en.wikipedia.org/wiki/Deferred_shading)。他们还讨论了可能的alpha问题。现在说得通。感谢您的回答
tigrou

0

这是一个简单的性能折衷。Alpha混合需要从当前颜色缓冲区读取,而这种抖动是只写的(当然还是只允许丢弃的)。

可以将这种技术与多重采样相混合,然后将其称为coverage的alpha


您在谈论哪种“性能折衷”?如果在着色器中使用废弃,则Early-Z将关闭。混合是在硬件上完成的,而且速度很快。
塔拉

实际上,我只是在引擎中的高分辨率场景上对其进行了测试:启用或禁用所有几何体的混合不会导致任何性能差异。内森·里德(Nathan Reed)的回答是正确的,因为抖动通常用于延迟渲染中。
塔拉
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.