Javascript webgl着色器-分割通道rgba

Javascript webgl着色器-分割通道rgba,javascript,webgl,shader,fragment-shader,Javascript,Webgl,Shader,Fragment Shader,只需分割png图像的通道,即可表示纹理分散,而不相互混合。下面是一个代码示例,用于表示为简单起见我尝试实现的目标: uniform sampler2D my-alpha-png; uniform sampler2D texture1; uniform sampler2D texture2; uniform sampler2D texture3; vec4 alpha = texture2D( my-alpha-png, vUV).rgba; vec4 tex0 = texture2D

只需分割png图像的通道,即可表示纹理分散,而不相互混合。下面是一个代码示例,用于表示为简单起见我尝试实现的目标:

uniform sampler2D my-alpha-png;
uniform sampler2D texture1;
uniform sampler2D texture2;
uniform sampler2D texture3;

vec4 alpha   = texture2D( my-alpha-png, vUV).rgba;
vec4 tex0    = texture2D( texture1, vUV *10.0 ).rgba; 
vec4 tex1    = texture2D( texture2, vUV *10.0 ).rgba; 
vec4 tex2    = texture2D( texture3, vUV *10.0 ).rgba;   

vec4 colornone = alpha.a; // i want this channel to be blank;
vec4 color1  = alpha.r;  // this is texture1
vec4 color2  = alpha.g;  // this is texture2
vec4 color3  = alpha.b;  // this is texture3

gl_FragColor = // ????
我尝试了很多变化,我只能尝试两种纹理,但alpha始终是一种纹理,下面是图像alpha png:

我更感兴趣的是在输出端拆分通道,只需要四个通道r、g、b、a,不需要计算黑白


谢谢。

我仔细研究了一下,想出了一个解决方案:

 vec4 final = (alpha.r * tex0) + (alpha.g *tex1) + (alpha.b * tex2) ;

它似乎只使用alpha map png图像中的绿色、红色和蓝色通道即可正常工作。

我仔细研究了一下,想出了一个解决方案:

 vec4 final = (alpha.r * tex0) + (alpha.g *tex1) + (alpha.b * tex2) ;
它似乎只使用alpha map png图像中的绿色、红色和蓝色通道即可正常工作