1

我正在渲染一个可能有多个相交透明对象的场景。这使得排序和拉回前面的标准方法存在问题(如果三角形相交,即使对三角形进行排序也不起作用)。所以我使用 GLSL 片段着色器实现了深度剥离来进行第二次深度测试。效果很好。

现在我希望能够使用着色器应用某些效果。场景中的一个对象是注射器,我想应用玻璃效果。如果我从前向后绘制,这将很容易 - 只需在绘制注射器时启动着色器,因为它后面的所有内容都已经在帧缓冲区中。但是,当使用深度剥离时,这种方法将不起作用。

所以我的问题是:

  1. 使用深度剥离时如何将着色器效果应用于场景中的单个对象?
  2. 如何将效果着色器与深度剥离着色器结合使用(假设它们需要同时运行)?

我应该注意,我在使用着色器方面还很陌生,因此感谢代码示例!

4

1 回答 1

0

如果没有光线追踪可能的话,我会感到惊讶。据我所知,使用折射着色器的方法是在环境贴图中进行纹理查找。该地图可以预先计算,也可以在单独的渲染过程中动态计算。对于后一种选项,您需要一个单独的环境贴图和一个额外的通道,用于每个使用着色器的对象。我有点怀疑如果物体相互交叉,这是可能的。即使是这样,对于这些通道中的每一个,您还需要另外几次通道来进行深度剥离。现在,如果您还希望深度剥离着色器通道考虑到周围物体的折射,这将很快失控。

于 2013-05-04T19:14:56.690 回答