最近,我阅读了有关太阳着色器(XNA Sun Shader)的文章,并决定使用OpenGL ES 2.0
实现它。但是我遇到了与着色器相关的问题:
我有两个纹理,其中一个是火焰渐变纹理:
另一个是纹理,每个白色部分必须由第一个纹理着色:
所以,我将得到如下结果(不要注意结果纹理在球体网格上呈现):
我真的希望有人知道如何实现这个着色器。
答案 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 );
}
}