infinite terrain experiments
[shady.git] / postprocess_darknoise.glsl
bloba797030e4332f58574de8406fd78c4dc2dffab02
2 @@@ FRAGMENT SHADER
4 uniform sampler2D render;
7 uniform float radius;
8 uniform float var;
9 uniform float time;
11 void main() {
12         
13         vec2 p = gl_TexCoord[0].st;
14         vec4 color = texture2D(render, p);
15         
16         //generate noise
17         int a = 12547831;
18         a += int(1254.2654*time);
19         a -= a<<4;
20         a ^= a>>3;
21         a ^= a<<9;
22         a += a>>3;
23         a -= int(1254.2654*p.x);
24         a ^= a<<7;
25         a ^= a>>5;
26         a += a<<3;
27         a -= a>>6;
28         a ^= int(1254.2654*p.y);
29         a ^= a<<5;
30         a += a>>3;
31         a -= a<<2;
32         a ^= a>>9;
33         
34         vec4 colornoise = vec4(float((a%347))/348, float((a%853))/854, float((a%973))/974, 0.0);
35         vec4 bwnoise = float((a%1483))/1484 * vec4(1,1,1,0);
36         
37         colornoise = colornoise * 2 - 1;
38         bwnoise = bwnoise * 2 - 1;
40         float v = var / 2;
41         
42         float darkness = (1 - ((color.r + color.g + color.b)/3)) * 0.8;
43         darkness = clamp(darkness * darkness * darkness - 0.3, 0.0, 1.0);
44         
45         gl_FragColor = color + radius * darkness * ( (v * colornoise) + ((1-v)*bwnoise) );