我试图在opengl es 2.0中使用着色器组合两个纹理
正如您在屏幕截图中看到的那样,我正在尝试使用动态环境映射在后向对象上创建针反射。 但是,针的反射看起来是半透明的,它与我的环境贴图混合在一起。
这是我的片段着色器;
varying highp vec4 R;
uniform samplerCube cube_map1;
uniform samplerCube cube_map2;
void main()
{
mediump vec3 output_color1;
mediump vec3 output_color2;
output_color1 = textureCube(cube_map1 , R.xyz).rgb;
output_color2 = textureCube(cube_map2 , R.xyz).rgb;
gl_FragColor = mix(vec4(output_color1,1.0),vec4(output_color2,1.0),0.5);
}
但是,"混合"方法导致混合两个纹理。
我还检查了Texture Combiners个例子,但它也没有帮助。
有没有办法组合两个纹理而不相互混合。
感谢。
答案 0 :(得分:1)
从评论来看,我的猜测是你想在风景画面上画针。我只是将它渲染为叠加层,但由于你想在着色器中进行渲染,这可能会起作用:
void main()
{
mediump vec3 output_color1;
mediump vec3 output_color2;
output_color1 = textureCube(cube_map1 , R.xyz).rgb;
output_color2 = textureCube(cube_map2 , R.xyz).rgb;
if ( length( output_color1 ) > 0.0 )
gl_FragColor = vec4(output_color1,1.0);
else
gl_FragColor = vec4(output_color2,1.0);
}