uniform sampler2D uTexGarbage; uniform sampler2D uTexGradients; uniform vec3 uCamera; uniform vec3 uSandColour; uniform vec2 uBlendOffset; 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); // Colour blending float amtgrass = step(aNorm.y,0.6); float amtsand = min(max((aCo.y - 10.0) * -0.1,0.0)*aNorm.y,1.0); vec2 uvgradients = aUv + vec2( amtgrass )*uBlendOffset; vfrag = texture( uTexGradients, uvgradients ).rgb; vfrag = mix( vfrag, uSandColour, amtsand ); if( g_light_preview == 1 ) { vfrag = vec3(0.5); } // Lighting vec3 halfview = uCamera - aCo; float fdist = length( halfview ); halfview /= fdist; vfrag = do_light_diffuse( vfrag, aNorm ); vfrag = do_light_spec( vfrag, aNorm, halfview, 0.1 ); vfrag = do_light_shadowing( vfrag ); vfrag = apply_fog( vfrag, fdist ); oColour = vec4(vfrag, 1.0 ); }