我想知道以下是否可能:
我想分两次渲染一个场景。在第一遍中,检测实际可见的片段和仅可见的片段(即,如果我只有一个被栅格化的三角形,则不包含在三角形栅格化中的任何像素都被视为不可见)。
然后我想在第二遍中使用此信息来生成更复杂的图像。
这里的重点是,我不仅想从计算中忽略被遮挡的片段,我还想忽略任何不是光栅化结果的东西。
最终目标很简单,滥用这种着色器来渲染包含不透明和透明几何体的几何体。不透明几何体在第一遍中被认为不存在并被丢弃。
仅生成第一个可见透明片段的片段图。
然后,我在第二遍中使用此信息来生成基于透明度的光线追踪颜色。
目标是将片段数量减少到实际追踪透明几何体所需的严格最小值。
最佳答案
实现它的方法很少。
- 您可以使用深度预 channel 。这是最简单的方法,而且效果很好。
- 您可以使用计算着色器在栅格化之前实际过滤几何体。 DICE 讨论了这种方法。
- 您可以在第一次通过时将您的片段存储到链表中,稍后再对它们进行着色。
如果没有其他信息,很难回答您的问题。
关于c++ - 延迟渲染的特殊情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50781433/