]> git.lizzy.rs Git - irrlicht.git/blob - media/Shaders/TransparentVertexAlpha.fsh
OpenGL3: Drop always-zero vSpecularColor from the shaders
[irrlicht.git] / media / Shaders / TransparentVertexAlpha.fsh
1 #version 100
2
3 precision mediump float;
4
5 /* Uniforms */
6
7 uniform int uTextureUsage0;
8 uniform sampler2D uTextureUnit0;
9 uniform int uFogEnable;
10 uniform int uFogType;
11 uniform vec4 uFogColor;
12 uniform float uFogStart;
13 uniform float uFogEnd;
14 uniform float uFogDensity;
15
16 /* Varyings */
17
18 varying vec2 vTextureCoord0;
19 varying vec4 vVertexColor;
20 varying float vFogCoord;
21
22 float computeFog()
23 {
24         const float LOG2 = 1.442695;
25         float FogFactor = 0.0;
26
27         if (uFogType == 0) // Exp
28         {
29                 FogFactor = exp2(-uFogDensity * vFogCoord * LOG2);
30         }
31         else if (uFogType == 1) // Linear
32         {
33                 float Scale = 1.0 / (uFogEnd - uFogStart);
34                 FogFactor = (uFogEnd - vFogCoord) * Scale;
35         }
36         else if (uFogType == 2) // Exp2
37         {
38                 FogFactor = exp2(-uFogDensity * uFogDensity * vFogCoord * vFogCoord * LOG2);
39         }
40
41         FogFactor = clamp(FogFactor, 0.0, 1.0);
42
43         return FogFactor;
44 }
45
46 void main()
47 {
48         vec4 Color = vVertexColor;
49
50         if (bool(uTextureUsage0))
51                 Color *= texture2D(uTextureUnit0, vTextureCoord0);
52
53         if (bool(uFogEnable))
54         {
55                 float FogFactor = computeFog();
56                 vec4 FogColor = uFogColor;
57                 FogColor.a = 1.0;
58                 Color = mix(FogColor, Color, FogFactor);
59         }
60
61         gl_FragColor = Color;
62 }