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