在着色器中将径向渐变纹理添加到另一个纹理的每个白色部分

时间:2014-07-11 00:09:25

标签: opengl opengl-es glsl shader fragment-shader

最近,我阅读了有关太阳着色器(XNA Sun Shader)的文章,并决定使用OpenGL ES 2.0实现它。但是我遇到了与着色器相关的问题:

我有两个纹理,其中一个是火焰渐变纹理:fire gradient texture

另一个是纹理,每个白色部分必须由第一个纹理着色: target texture

所以,我将得到如下结果(不要注意结果纹理在球体网格上呈现):

result

我真的希望有人知道如何实现这个着色器。

1 个答案:

答案 0 :(得分:0)

如果颜色为白色,您可以先对原始纹理进行采样,然后对渐变纹理进行采样。

uniform sampler2D Texture0; // original texture
uniform sampler2D Texture1; // gradient texture

varying vec2 texCoord;

void main(void)
{
    gl_FragColor = texture2D( Texture0, texCoord );

    // If the color in original texture is white
    // use the color in gradient texture.
    if (gl_FragColor == vec4(1.0, 1.0, 1.0,1.0)) {
        gl_FragColor = texture2D( Texture1, texCoord );
    }
}