out vec4 FragColor; uniform vec3 uCamera; in vec4 aColour; in vec2 aUv; in vec3 aNorm; in vec3 aCo; in vec3 aWorldCo; #include "common_world.glsl" // Water blending // ============== float water_depth( vec3 pos, vec3 halfview ) { vec3 pnorm = g_water_plane.xyz; float pdist = g_water_plane.w; float d = dot( pnorm, halfview ); float t = dot((pnorm*pdist - pos), pnorm) / d; return t * g_water_fog; } void main() { vec3 halfview = normalize( uCamera - aCo ); vec3 world_pos = vec3( aCo.y, aCo.x, aCo.z ); FragColor = vec4( world_pos, water_depth( aCo, halfview ) ); }