Unity Engine手册页“最佳实践:设置照明管线”的“渲染管线”部分包含图块渲染和群集渲染的说明:
提到:


不透明对象很可能会使用tile系统进行着色,
而透明对象将依赖于群集系统。


将聚类着色与透明对象一起使用有什么好处?它与性能有关,还是“平铺阴影”不支持透明对象?

为什么不透明的对象“不太可能”通过聚类阴影渲染?

评论

原因是绘制透明面时,绘制顺序很重要。当将空间分成多个块并将其绘制到远处时,具有粗略的绘制顺序保证会更简单。或那是我的想法。我可能是错的,这就是为什么我没有将其发布为答案。

#1 楼

Unity的“延迟着色渲染路径”和“旧版延迟照明渲染路径”仅适用于不透明的表面。它们都依赖于一组非常相似的过程:


将不透明对象的照明参数渲染到多个渲染目标。这称为“ G缓冲区通过”或“基本遍”。然后,使用第一遍的缓冲区在屏幕空间中计算照明以计算照明。主要好处是照明成本与场景复杂性无关。这允许使用更多数量的光源进行更复杂的照明方程式。
全屏通过将所有这些缓冲区解析为最终颜色。对象是必须将它们完全完全着色(灯光等)从背面渲染。如果透明对象A在透明对象B的前面,则当A将其颜色与B混合时,B必须被完全着色。我们需要最终的阴影颜色,因为无法混合G缓冲区中累积的照明参数。

因此,如果您可以使用它(有缺点),则延迟着色具有一些非常好的属性,可以产生很好的效果并具有良好的性能。这就是为什么不透明对象将“可能”使用延迟阴影的原因。引用Unity文档:


使用延迟着色时,可以影响GameObject的灯光数量没有限制。所有光源均按像素进行评估,这意味着它们都可以与法线贴图等正确交互。此外,所有光源都可以包含Cookie和阴影。

延迟阴影的优点是照明的处理开销与光照射的像素数成正比。这取决于场景中的灯光大小,无论它照亮了多少个GameObject。因此,可以通过保持较小的灯光来提高性能。延迟阴影还具有高度一致且可预测的行为。每种光的效果都是按像素计算的,因此没有分解成大三角形的光照计算。据我了解,这是一种用于正向渲染的优化技术,但是从根本上讲,它仍然是相同的过程。这是有关它在《毁灭战士》中的工作方式的非常好的文章(转到“不透明对象的聚簇转发”部分)。

评论


$ \ begingroup $
感谢您提供了解释群集正向渲染的链接,的确很清楚。那么,使用2D阴影着色仍然渲染不透明对象有什么好处?对所有对象使用3D群集渲染会更容易吗,例如Doom 2016?
$ \ endgroup $
– wip
19年1月23日在11:34

$ \ begingroup $
我加了引号。这是一项性能优化,尤其适用于复杂的照明方程式和/或许多光源。没有银弹。每种渲染方法都具有优点和折衷,这使得它们适合于某些情况。
$ \ endgroup $
–伯尼
19年1月23日在12:36