]> git.tdb.fi Git - libs/gl.git/blobdiff - shaderlib/unlit.glsl
Implement alpha cutoff for materials
[libs/gl.git] / shaderlib / unlit.glsl
index 57be8b1ba1acc571b7d0dbbbdcd691a1d1a7dd96..f4920a7982db397babd59fcc61e66dc725a55dbf 100644 (file)
@@ -1,19 +1,30 @@
 import msp_interface;
 import common;
 
-uniform sampler2D texture;
-uniform vec4 tint;
+struct UnlitMaterialParameters
+{
+       vec4 color;
+};
+
+uniform UnlitMaterial
+{
+       UnlitMaterialParameters unlit_material;
+       float alpha_cutoff;
+};
+
+uniform sampler2D color_tex;
 
 layout(constant_id=auto) const bool use_texture = false;
 layout(constant_id=auto) const bool use_vertex_color = false;
 layout(constant_id=auto) const bool use_fog = false;
+layout(constant_id=auto) const bool use_alpha_cutoff = false;
 
 #pragma MSP stage(fragment)
-vec4 get_color()
+virtual vec4 get_color()
 {
-       vec4 result = tint;
+       vec4 result = unlit_material.color;
        if(use_texture)
-               result *= texture(texture, texcoord.xy);
+               result *= texture(color_tex, texcoord.xy);
        if(use_vertex_color)
                result *= color;
        return result;
@@ -22,6 +33,9 @@ vec4 get_color()
 void main()
 {
        vec4 color = get_color();
+       if(use_alpha_cutoff && color.a<alpha_cutoff)
+               discard;
+
        if(use_fog)
                color.rgb = apply_fog(color.rgb);
        frag_color = color;