]> git.lizzy.rs Git - irrlicht.git/blob - media/Shaders/LightmapModulate.fsh
Fix mistake in a677f5a01ac428d16e0e83b021dd0e8cb1ee9f53
[irrlicht.git] / media / Shaders / LightmapModulate.fsh
1 #version 100
2
3 precision mediump float;
4
5 /* Uniforms */
6
7 uniform float uModulate;
8 uniform int uTextureUsage0;
9 uniform int uTextureUsage1;
10 uniform sampler2D uTextureUnit0;
11 uniform sampler2D uTextureUnit1;
12 uniform int uFogEnable;
13 uniform int uFogType;
14 uniform vec4 uFogColor;
15 uniform float uFogStart;
16 uniform float uFogEnd;
17 uniform float uFogDensity;
18
19 /* Varyings */
20
21 varying vec2 vTextureCoord0;
22 varying vec2 vTextureCoord1;
23 varying vec4 vVertexColor;
24 varying vec4 vSpecularColor;
25 varying float vFogCoord;
26
27 float computeFog()
28 {
29         const float LOG2 = 1.442695;
30         float FogFactor = 0.0;
31
32         if (uFogType == 0) // Exp
33         {
34                 FogFactor = exp2(-uFogDensity * vFogCoord * LOG2);
35         }
36         else if (uFogType == 1) // Linear
37         {
38                 float Scale = 1.0 / (uFogEnd - uFogStart);
39                 FogFactor = (uFogEnd - vFogCoord) * Scale;
40         }
41         else if (uFogType == 2) // Exp2
42         {
43                 FogFactor = exp2(-uFogDensity * uFogDensity * vFogCoord * vFogCoord * LOG2);
44         }
45
46         FogFactor = clamp(FogFactor, 0.0, 1.0);
47
48         return FogFactor;
49 }
50
51 void main()
52 {
53         vec4 Color0 = vec4(1.0, 1.0, 1.0, 1.0);
54         vec4 Color1 = vec4(1.0, 1.0, 1.0, 1.0);
55
56         if (bool(uTextureUsage0))
57                 Color0 = texture2D(uTextureUnit0, vTextureCoord0);
58
59         if (bool(uTextureUsage1))
60                 Color1 = texture2D(uTextureUnit1, vTextureCoord1);
61
62         vec4 FinalColor = (Color0 * Color1 * uModulate) * vVertexColor;
63         FinalColor += vSpecularColor;
64
65         if (bool(uFogEnable))
66         {
67                 float FogFactor = computeFog();
68                 vec4 FogColor = uFogColor;
69                 FogColor.a = 1.0;
70                 FinalColor = mix(FogColor, FinalColor, FogFactor);
71         }
72
73         gl_FragColor = FinalColor;
74 }