f
[carveJwlIkooP6JGAAIwe30JlM.git] / shaders / terrain_fast.fs
1 uniform sampler2D uTexGarbage;
2 uniform sampler2D uTexGradients;
3 uniform vec3 uCamera;
4 uniform vec3 uSandColour;
5 uniform vec2 uBlendOffset;
6
7 in vec4 aColour;
8 in vec2 aUv;
9 in vec3 aNorm;
10 in vec3 aCo;
11 in vec3 aWorldCo;
12
13 #include "common_world.glsl"
14 #include "motion_vectors_fs.glsl"
15
16 void main()
17 {
18 compute_motion_vectors();
19
20 // Colour
21 // ------
22 vec3 vfrag = vec3(0.5,0.5,0.5);
23
24 // Colour blending
25 float amtgrass = step(aNorm.y,0.6);
26 float amtsand = min(max((aCo.y - 10.0) * -0.1,0.0)*aNorm.y,1.0);
27 vec2 uvgradients = aUv + vec2( amtgrass )*uBlendOffset;
28 vfrag = texture( uTexGradients, uvgradients ).rgb;
29 vfrag = mix( vfrag, uSandColour, amtsand );
30
31 if( g_light_preview == 1 )
32 {
33 vfrag = vec3(0.5);
34 }
35
36 // Lighting
37 vec3 halfview = uCamera - aCo;
38 float fdist = length( halfview );
39 halfview /= fdist;
40
41 vfrag = do_light_diffuse( vfrag, aNorm );
42 vfrag = do_light_spec( vfrag, aNorm, halfview, 0.1 );
43 vfrag = do_light_shadowing( vfrag );
44 vfrag = apply_fog( vfrag, fdist );
45
46 oColour = vec4(vfrag, 1.0 );
47 }