3 precision mediump float;
7 uniform float uAlphaRef;
8 uniform int uTextureUsage0;
9 uniform sampler2D uTextureUnit0;
10 uniform int uFogEnable;
12 uniform vec4 uFogColor;
13 uniform float uFogStart;
14 uniform float uFogEnd;
15 uniform float uFogDensity;
19 varying vec2 vTextureCoord0;
20 varying vec4 vVertexColor;
21 varying float vFogCoord;
25 const float LOG2 = 1.442695;
26 float FogFactor = 0.0;
28 if (uFogType == 0) // Exp
30 FogFactor = exp2(-uFogDensity * vFogCoord * LOG2);
32 else if (uFogType == 1) // Linear
34 float Scale = 1.0 / (uFogEnd - uFogStart);
35 FogFactor = (uFogEnd - vFogCoord) * Scale;
37 else if (uFogType == 2) // Exp2
39 FogFactor = exp2(-uFogDensity * uFogDensity * vFogCoord * vFogCoord * LOG2);
42 FogFactor = clamp(FogFactor, 0.0, 1.0);
49 vec4 Color = vVertexColor;
51 if (bool(uTextureUsage0))
52 Color *= texture2D(uTextureUnit0, vTextureCoord0);
54 if (Color.a < uAlphaRef)
59 float FogFactor = computeFog();
60 vec4 FogColor = uFogColor;
62 Color = mix(FogColor, Color, FogFactor);