纹理如下:
gl_FragColor=texture2D(my_main_texture, vUv);
gl_FragColor= mix(gl_FragColor,texture2D(texture[1], 32.0*vUv),texture2D(mask[0], vUv).r);
gl_FragColor= mix(gl_FragColor,texture2D(texture[2], 32.0*vUv),texture2D(mask[0], vUv).b);
例如,使用掩码:
但由于某些原因,红色和蓝色蒙版之间的边界不会产生纹理值,尽管蓝色和红色蒙版之间每个像素的通道数为255
例如,以下代码具有:
gl_FragColor=vec4(0.0);
gl_FragColor= mix(gl_FragColor,vec4(1.0),texture2D(mask[0], vUv).r);
gl_FragColor= mix(gl_FragColor,vec4(1.0),texture2D(mask[0], vUv).b);
我明白了:
阴影圆圈 - 这是红色和蓝色遮罩之间的边界,它不应该是
如何摆脱它?也许是使用mix()的原因,还有其他方法可以达到预期的效果吗?
答案 0 :(得分:1)
这是因为纹素的线性插值。你可以在价值观中获得""这是半蓝色和半红色。从而导致灰色。你可以关闭纹理插值。 或者尝试:
vec4 m0=texture2D(mask[0], vUv);
gl_FragColor= gl_FragColor*(1.0-m0.r-m0.b)+texture2D(texture[1], 32.0*vUv)*m0.r+texture2D(texture[3], 32.0*vUv)*m0.b;