Добавьте текстуру радиального градиента к каждой белой части другой текстуры в шейдере
Недавно я прочитал статью о Sun Shader ( XNA Sun Shader) и решил реализовать его с помощью OpenGL ES 2.0
, Но я столкнулся с проблемой, связанной с шейдером:
У меня есть две текстуры, одна из которых - текстура градиента огня:
И еще одна текстура, каждая белая часть которой должна быть окрашена первой текстурой:
Итак, я собираюсь получить результат, подобный приведенному ниже (не обращайте внимания на то, что результирующая текстура визуализируется на сфере сетки):
Я очень надеюсь, что кто-нибудь знает, как реализовать этот шейдер.
1 ответ
Вы можете сначала сэмплировать исходную текстуру, если цвет белый, а затем сэмплировать градиентную текстуру.
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 );
}
}