@@ -5,17 +5,38 @@ module.exports = [
55 '' ,
66 'uniform sampler2D uMainSampler;' ,
77 'uniform float uColorMatrix[20];' ,
8+ 'uniform float uAlpha;' ,
89 '' ,
910 'varying vec2 outTexCoord;' ,
1011 '' ,
1112 'void main ()' ,
1213 '{' ,
1314 ' vec4 c = texture2D(uMainSampler, outTexCoord);' ,
1415 '' ,
15- ' gl_FragColor.r = uColorMatrix[0] * c.r + uColorMatrix[1] * c.g + uColorMatrix[2] * c.b + uColorMatrix[4];' ,
16- ' gl_FragColor.g = uColorMatrix[5] * c.r + uColorMatrix[6] * c.g + uColorMatrix[7] * c.b + uColorMatrix[9];' ,
17- ' gl_FragColor.b = uColorMatrix[10] * c.r + uColorMatrix[11] * c.g + uColorMatrix[12] * c.b + uColorMatrix[14];' ,
18- ' gl_FragColor.a = c.a;' ,
16+ ' if (uAlpha == 0.0)' ,
17+ ' {' ,
18+ ' gl_FragColor = c;' ,
19+ '' ,
20+ ' return;' ,
21+ ' }' ,
22+ '' ,
23+ ' if (c.a > 0.0)' ,
24+ ' {' ,
25+ ' c.rgb /= c.a;' ,
26+ ' }' ,
27+ '' ,
28+ ' vec4 result;' ,
29+ '' ,
30+ ' result.r = (uColorMatrix[0] * c.r) + (uColorMatrix[1] * c.g) + (uColorMatrix[2] * c.b) + (uColorMatrix[3] * c.a) + uColorMatrix[4];' ,
31+ ' result.g = (uColorMatrix[5] * c.r) + (uColorMatrix[6] * c.g) + (uColorMatrix[7] * c.b) + (uColorMatrix[8] * c.a) + uColorMatrix[9];' ,
32+ ' result.b = (uColorMatrix[10] * c.r) + (uColorMatrix[11] * c.g) + (uColorMatrix[12] * c.b) + (uColorMatrix[13] * c.a) + uColorMatrix[14];' ,
33+ ' result.a = (uColorMatrix[15] * c.r) + (uColorMatrix[16] * c.g) + (uColorMatrix[17] * c.b) + (uColorMatrix[18] * c.a) + uColorMatrix[19];' ,
34+ '' ,
35+ ' vec3 rgb = mix(c.rgb, result.rgb, uAlpha);' ,
36+ '' ,
37+ ' rgb *= result.a;' ,
38+ '' ,
39+ ' gl_FragColor = vec4(rgb, result.a);' ,
1940 '}' ,
2041 ''
2142] . join ( '\n' ) ;
0 commit comments