Implement a global shader parameter passing system and useful shaders
[oweals/minetest.git] / client / shaders / test_shader_1 / opengl_fragment.glsl
1 \r
2 uniform sampler2D myTexture;\r
3 uniform vec4 skyBgColor;\r
4 uniform float fogDistance;\r
5 \r
6 varying vec3 vPosition;\r
7 \r
8 void main (void)\r
9 {\r
10     //vec4 col = vec4(1.0, 0.0, 0.0, 1.0);\r
11     vec4 col = texture2D(myTexture, vec2(gl_TexCoord[0]));\r
12         float a = col.a;\r
13     col *= gl_Color;\r
14         col = col * col; // SRGB -> Linear\r
15         col *= 1.8;\r
16         col.r = 1.0 - exp(1.0 - col.r) / exp(1.0);\r
17         col.g = 1.0 - exp(1.0 - col.g) / exp(1.0);\r
18         col.b = 1.0 - exp(1.0 - col.b) / exp(1.0);\r
19         col = sqrt(col); // Linear -> SRGB\r
20         if(fogDistance != 0.0){\r
21                 float d = max(0.0, min(vPosition.z / fogDistance * 1.5 - 0.6, 1.0));\r
22                 col = mix(col, skyBgColor, d);\r
23         }\r
24     gl_FragColor = vec4(col.r, col.g, col.b, a);\r
25 }\r