mirror of
https://git.do.srb2.org/STJr/UltimateZoneBuilder.git
synced 2024-11-25 21:31:14 +00:00
105 lines
No EOL
1.7 KiB
GLSL
Executable file
105 lines
No EOL
1.7 KiB
GLSL
Executable file
uniforms
|
|
{
|
|
mat4 projection;
|
|
|
|
// Render settings
|
|
// w = transparency
|
|
vec4 rendersettings;
|
|
float desaturation;
|
|
|
|
sampler2D texture1;
|
|
vec4 texturefactor;
|
|
|
|
vec4 fillColor;
|
|
}
|
|
|
|
functions
|
|
{
|
|
vec3 desaturate(vec3 texel)
|
|
{
|
|
float gray = (texel.r * 0.3 + texel.g * 0.56 + texel.b * 0.14);
|
|
return mix(texel, vec3(gray), desaturation);
|
|
}
|
|
}
|
|
|
|
shader things2d
|
|
{
|
|
in
|
|
{
|
|
vec3 Position;
|
|
vec4 Color;
|
|
vec2 TextureCoordinate;
|
|
}
|
|
|
|
v2f
|
|
{
|
|
vec4 Color;
|
|
vec2 UV;
|
|
}
|
|
|
|
out
|
|
{
|
|
vec4 FragColor;
|
|
}
|
|
|
|
vertex
|
|
{
|
|
gl_Position = projection * vec4(in.Position, 1.0);
|
|
v2f.Color = in.Color;
|
|
v2f.UV = in.TextureCoordinate;
|
|
}
|
|
}
|
|
|
|
shader things2d_fill extends things2d
|
|
{
|
|
fragment
|
|
{
|
|
out.FragColor = fillColor;
|
|
|
|
#if defined(ALPHA_TEST)
|
|
if (out.FragColor.a < 0.5) discard;
|
|
#endif
|
|
}
|
|
}
|
|
|
|
shader things2d_thing extends things2d
|
|
{
|
|
fragment
|
|
{
|
|
vec4 c = texture(texture1, v2f.UV);
|
|
out.FragColor = vec4(desaturate(c.rgb), c.a * rendersettings.w) * v2f.Color;
|
|
|
|
out.FragColor *= texturefactor;
|
|
|
|
#if defined(ALPHA_TEST)
|
|
if (out.FragColor.a < 0.5) discard;
|
|
#endif
|
|
}
|
|
}
|
|
|
|
shader things2d_sprite extends things2d
|
|
{
|
|
fragment
|
|
{
|
|
// Take this pixel's color
|
|
vec4 c = texture(texture1, v2f.UV);
|
|
|
|
// Modulate it by selection color
|
|
if (v2f.Color.a > 0.0)
|
|
{
|
|
vec3 cr = desaturate(c.rgb);
|
|
out.FragColor = vec4((cr.r + v2f.Color.r) / 2.0, (cr.g + v2f.Color.g) / 2.0, (cr.b + v2f.Color.b) / 2.0, c.a * rendersettings.w * v2f.Color.a);
|
|
}
|
|
else
|
|
{
|
|
// Or leave it as it is
|
|
out.FragColor = vec4(desaturate(c.rgb), c.a * rendersettings.w);
|
|
}
|
|
|
|
out.FragColor *= texturefactor;
|
|
|
|
#if defined(ALPHA_TEST)
|
|
if (out.FragColor.a < 0.5) discard;
|
|
#endif
|
|
}
|
|
} |