@phaserjs/phaser
Version:
47 lines (35 loc) • 945 B
JavaScript
export const MULTI_QUAD_FRAG = `
precision highp float;
varying vec2 vTextureCoord;
varying float vTextureId;
varying vec4 vTintColor;
uniform sampler2D uTexture[%count%];
uniform mat4 uColorMatrix;
uniform vec4 uColorOffset;
vec4 getSampler (int index, vec2 uv)
{
for (int i = 0; i < numTextures; ++i)
{
vec4 color = texture2D(uTexture[i], uv);
if (i == index)
{
return color * vec4(vTintColor.rgb * vTintColor.a, vTintColor.a);
}
}
// Return black
return vec4(0);
}
void main (void)
{
vec4 color = getSampler(int(vTextureId), vTextureCoord);
// Un pre-mult alpha
if (color.a > 0.0)
{
color.rgb /= color.a;
}
vec4 result = color * uColorMatrix + (uColorOffset / 255.0);
// Pre-mult alpha
result.rgb *= result.a;
gl_FragColor = vec4(result.rgb, result.a);
}`;