我正在尝试使用OpenGL对透明对象使用不同的alpha混合方程式进行实验,但看起来片段着色器对单个对象上的片段颜色起作用,并且无法考虑对象背后的场景。
另一方面,似乎没有一种方法可以使用任意GLSL代码拦截blending stage,例如,我无法想到使用当前OpenGL复制soft light blend mode的方法原语。
有没有办法调和这些?
答案 0 :(得分:0)
混合仍然是片段流水线的少数部分之一,而片段流水线是GPU上的硬连线电路。因此,它不是可编程的。最好的选择是渲染到纹理并进行混合后处理。
答案 1 :(得分:0)
有几个相对较好的扩展名:
答案 2 :(得分:0)
复制渲染目标,并使用它作为纹理绘制对象。
如果有很多小物体,则只能复制渲染目标的一部分。
第一遍:将具有渲染目标作为纹理的对象绘制到texture_2;
第二遍:绘制对象以使用Texture_2渲染目标;