我想列举一些一般的、基本的情况,在这些情况下,多通道渲染成为一种不可避免的必要性,而不是把所有东西都放在同一个着色器程序中。到目前为止,这是我想出的。
- 当结果需要当前片段周围的非本地片段信息(即上下文)时,例如对于框过滤器,那么之前的传递必须提供此信息;
- 当结果需要通过先前通道完成的硬件插值时;
- 当结果充当某些计算集的预缓存时,其性能比简单地(重新)处理使用它们的那些通道中的整个计算集(例如,将深度缓冲区的每个片段转换为特定和昂贵的方式,然后多个后期着色器可以共享,而不是每个重复这些计算。所以,计算一次,多次使用。
我从我自己的(天真的)推论中注意到,顶点和几何着色器似乎并没有真正进入延迟渲染的画面,因此可能通常在第一遍中完成;对我来说,这似乎是明智的,但是对这一点的肯定或否定,以及细节,都会引起人们的兴趣。
PS我将保留这个问题以收集好的答案,所以不要指望快速获胜!