首页 文章

GLSL玻璃效果加深度剥离

提问于
浏览
1

我正在努力渲染一个可能有多个交叉透明对象的场景 . 这使得排序和绘制的标准方法有问题(如果三角形相交,甚至排序三角形也不起作用) . 所以我使用GLSL片段着色器实现了深度剥离,以进行第二次深度测试 . 它很棒 .

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

所以我的问题是:

  • 如何在使用深度剥离时将着色器效果应用于场景中的单个对象?

  • 如何将效果着色器与深度剥离着色器结合使用(假设它们需要同时运行)?

我应该注意到我在使用着色器时非常新,所以感谢代码示例!

1 回答

  • 0

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

相关问题