2018-10-16 20:23:31 +00:00
#version 120
varying vec2 diffuseMapUV;
varying float alphaPassthrough;
uniform int colorMode;
uniform bool useDiffuseMapForShadowAlpha;
2020-04-10 14:45:37 +00:00
uniform bool alphaTestShadows;
2018-10-16 20:23:31 +00:00
void main(void)
{
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
vec4 viewPos = (gl_ModelViewMatrix * gl_Vertex);
gl_ClipVertex = viewPos;
2020-04-10 14:45:37 +00:00
if (alphaTestShadows && useDiffuseMapForShadowAlpha)
2018-10-16 20:23:31 +00:00
diffuseMapUV = (gl_TextureMatrix[0] * gl_MultiTexCoord0).xy;
else
diffuseMapUV = vec2(0.0); // Avoid undefined behaviour if running on hardware predating the concept of dynamically uniform expressions
2020-04-10 14:45:37 +00:00
if (!alphaTestShadows)
alphaPassthrough = 1.0;
else if (colorMode == 2)
2018-10-16 20:23:31 +00:00
alphaPassthrough = gl_Color.a;
else
// This is uniform, so if it's too low, we might be able to put the position/clip vertex outside the view frustum and skip the fragment shader and rasteriser
alphaPassthrough = gl_FrontMaterial.diffuse.a;
}