【发布时间】:2018-07-12 13:01:25
【问题描述】:
我正在尝试使用 OpenGL 为透明对象尝试不同的 alpha 混合方程,但看起来片段着色器对单个对象上的片段颜色进行操作,并且无法考虑对象背后的场景。
另一方面,似乎没有办法用任意 GLSL 代码拦截 blending stage,例如,我想不出用当前 OpenGL 原语重现 soft light blend mode 的方法。
有没有办法调和这些?
【问题讨论】:
-
如果需要复杂的混合功能,可以渲染成纹理。然后,在第二遍中,在您的片段着色器中,您可以从代表先前渲染对象的纹理中进行查询,并自行进行混合。问题是您需要为每个对象调用
glDraw*,再加上另一个将纹理blit 到帧缓冲区。也许对 SSBO 使用原子操作会更好。
标签: opengl glsl alphablending