OpenGL的自定义混合方程式(着色器)

时间:2018-07-12 13:01:25

标签: opengl glsl alphablending

我正在尝试使用OpenGL对透明对象使用不同的alpha混合方程式进行实验,但看起来片段着色器对单个对象上的片段颜色起作用,并且无法考虑对象背后的场景。

另一方面,似乎没有一种方法可以使用任意GLSL代码拦截blending stage,例如,我无法想到使用当前OpenGL复制soft light blend mode的方法原语。

有没有办法调和这些?

3 个答案:

答案 0 :(得分:0)

混合仍然是片段流水线的少数部分之一,而片段流水线是GPU上的硬连线电路。因此,它不是可编程的。最好的选择是渲染到纹理并进行混合后处理。

答案 1 :(得分:0)

有几个相对较好的扩展名:

答案 2 :(得分:0)

复制渲染目标,并使用它作为纹理绘制对象。

如果有很多小物体,则只能复制渲染目标的一部分。

第一遍:将具有渲染目标作为纹理的对象绘制到texture_2;

第二遍:绘制对象以使用Texture_2渲染目标;