延迟呈现的特例

时间:2018-06-10 07:20:37

标签: c++ opengl graphics glsl rendering

我想知道以下是否可行:

我想在两遍中渲染一个场景。在第一遍中检测实际可见的碎片,只检测那些可见的碎片(即如果我只有一个被栅格化的三角形,则三角形光栅化中未包含的任何像素都被视为不可见)。

然后我想在第二遍中使用这些信息来产生更复杂的图像。

这里的要点是,我不仅想要从计算中省略被遮挡的片段,我还想省略任何不是光栅化的结果。

最终目标很简单,滥用此类着色器渲染包含不透明和透明几何体的几何体。不透明几何在第一遍中被认为是不存在的并被丢弃。

仅生成第一个可见透明片段的片段图。

然后我在第二遍使用此信息,根据透明度生成光线跟踪颜色。

目标是将碎片数量减少到实际跟踪透明几何体所需的严格最小值。

1 个答案:

答案 0 :(得分:2)

实现它的方法很少。

  1. 您可以使用深度预处理。这是最简单的方法,效果很好。
  2. 您可以使用计算着色器在栅格化之前实际过滤几何体。 DICE谈论这种方法。
  3. 您可以在第一次传递过程中将片段存储到链接列表中,然后再将其着色。
  4. 如果没有其他信息,很难回答你的问题。