我有以下渲染管道:
[Input texture that changes every frame]
- > [3D content rendered on top of changing texture]
- >
[Post processing shader]
- > [Composited texture with post processing applied to input texture + 3D content]
。
我想实现这个管道:
[Input texture that changes every frame]
- > [3D content rendered on top of changing texture]+[Post processing shader applied to 3D content]
- > [Composited texture with post processing only applied to 3D content]
。
实现这一目标的最佳方式是什么?
我在考虑将3D内容渲染到屏幕外纹理(使用透明的非渲染部分),然后将后处理着色器应用于此纹理,然后在背景纹理顶部渲染具有透明度的后处理纹理。
有没有更好的方法呢?如果没有,那么如何使用alpha渲染纹理然后在之前的纹理上进行合成?
答案 0 :(得分:1)
如果您的后期处理很简单,例如白平衡或HDR,那么您可以先渲染3D内容,应用后处理,然后在启用深度测试的情况下以适当的最大深度渲染背景纹理
如果您的后处理更复杂,如模糊或类似的东西,那么我担心渲染到第二个纹理是唯一的解决方案。渲染成RGBA纹理很简单,就像RGB一样。只需确保在整个管道中使用预乘alpha,否则您将无法正确组合纹理。在使用(0,0,0,0)颜色渲染清除纹理之前。