#version 120
#pragma optimize(on)
uniform sampler2D texunit0;
uniform sampler1D texunit1;
uniform bool mask;
uniform vec3 add;
uniform vec3 mul;
uniform bool invertall;
uniform float colorbal;
uniform float src_alphamul;
uniform vec2 texsize;
#if defined(INDEX_STANDARD) // This works on Radeon Mobility 1400 and is faster
#define index_correction(a) (a)
#elif defined(INDEX_GEFORCE7) // GeForce 7, some ATI 4xxx, possibly GeForce 6
#define index_correction(a) ((a) * 255.99 / 256.0)
#else // INDEX_SAFE -- Radeon Mobility HD 3400
#define index_correction(a) ((a) * 255.1 / 256.0)
#endif
void apply_colorbal(inout vec4 color)
{
if (colorbal != 1.0) {
float grey;
grey = color.r * .3125 + color.g * .4375 + color.b * .25;
color.rgb = mix(vec3(grey, grey, grey), color.rgb, colorbal);
}
}
void apply_invertall(inout vec4 color)
{
if (invertall)
#if !defined(PREMUL)
color.rgb = 1.0 - color.rgb;
#else
color.rgb = color.a - color.rgb;
#endif
}
void palfx(inout vec4 color)
{
#if !defined(PALFX_DISABLE_COLORBAL)
apply_colorbal(color);
#endif
#if !defined(PALFX_DISABLE_INVERTALL)
apply_invertall(color);
#endif
#if !defined(PREMUL)
color.rgb = (color.rgb + add) * mul;
#else
color.rgb = (color.rgb + color.a * add) * mul;
#endif
//Clamp:Required//color = clamp(color, 0.0, 1.0);
}
vec4 nearest()
{
#if defined(PERSPECTIVE_NONE)
vec4 idxv = texture2D(texunit0, gl_TexCoord[0].st);
#elif defined(PERSPECTIVE_STANDARD)
vec4 idxv = texture2D(texunit0, gl_TexCoord[0].st / gl_TexCoord[0].q);
#else // PERSPECTIVE_EVEN
vec4 idxv = texture2D(texunit0, vec2(gl_TexCoord[0].s / gl_TexCoord[0].q, gl_TexCoord[0].t));
#endif
float idx = idxv.r;
vec4 color = texture1D(texunit1, index_correction(idx));
#if defined(PREMUL)
if (mask)
color.rgb *= color.a;
#endif
if (!mask)
color.a = 1.0;
if (color.a == 0.0)
discard;
#if !defined(PREMUL)
color.a *= src_alphamul;
#else
color *= src_alphamul;
#endif
return color;
}
void main()
{
vec4 color = nearest();
#if !defined(PALFX_DISABLE)
palfx(color);
#endif
gl_FragColor = color;
}
For the sake of space I removed all the commented lines.