X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=shaders%2Fterrain.fs;h=3f5cd3abdf28a3a43a80a9a5ead999fd35764e1b;hb=23ef4d7f6bfe6a5a91c78822b081a9ea63cb74a6;hp=84482af91af1a9fc8b7fd9e5b90f1d04abbe4bda;hpb=ecc4dfbfb3adf91d2dfc03ba0ec9a821fcc2390c;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/shaders/terrain.fs b/shaders/terrain.fs index 84482af..3f5cd3a 100644 --- a/shaders/terrain.fs +++ b/shaders/terrain.fs @@ -1,18 +1,26 @@ -out vec4 FragColor; - uniform sampler2D uTexGarbage; uniform sampler2D uTexGradients; uniform vec3 uCamera; +uniform vec3 uSandColour; +uniform vec2 uBlendOffset; +uniform vec3 uBoard0; +uniform vec3 uBoard1; in vec4 aColour; in vec2 aUv; in vec3 aNorm; in vec3 aCo; +in vec3 aWorldCo; #include "common_world.glsl" +#include "motion_vectors_fs.glsl" void main() { + compute_motion_vectors(); + + // Colour + // ------ vec3 vfrag = vec3(0.5,0.5,0.5); // ws modulation @@ -31,15 +39,26 @@ void main() // Colour blending float amtgrass = step(qnorm.y,0.6); float amtsand = min(max((aCo.y - 10.0) * -0.1,0.0)*qnorm.y,1.0); - vec2 uvgradients = aUv + vec2( amtgrass*0.5 + rgarbage.a*0.4, 0.0 ); + vec2 uvgradients = aUv + vec2( amtgrass + rgarbage.a*0.8 )*uBlendOffset; vfrag = texture( uTexGradients, uvgradients ).rgb; - vfrag = mix( vfrag, vec3(1.0,0.9,0.8), amtsand ); + vfrag = mix( vfrag, uSandColour, amtsand ); + + qnorm = mix( qnorm, aNorm, amtsand ); + + if( g_light_preview == 1 ) + { + vfrag = vec3(0.5); + } // Lighting - vec3 halfview = normalize( uCamera - aCo ); + vec3 halfview = uCamera - aCo; + float fdist = length( halfview ); + halfview /= fdist; + vfrag = do_light_diffuse( vfrag, qnorm ); - vfrag = do_light_spec( vfrag, qnorm, halfview, 0.2 * rgarbage.a ); + vfrag = do_light_spec( vfrag, qnorm, halfview, 0.1 ); vfrag = do_light_shadowing( vfrag ); + vfrag = apply_fog( vfrag, fdist ); - FragColor = vec4( vfrag, 1.0 ); + oColour = vec4(vfrag, 1.0 ); }