varying float oz; #vertex void main() { oz = (gl_Vertex.z + 20.0) * 0.05; gl_TexCoord[0] = gl_MultiTexCoord0; gl_FrontColor = gl_Color; gl_Position = ftransform(); } #fragment uniform sampler2D tex; void main() { vec4 c = gl_Color * texture2D(tex, vec2(gl_TexCoord[0])); float f = max(min(oz, 1.0), 0.0); gl_FragColor = c * (f * f); }