// :D in vec2 aUv; in vec4 aNorm; in vec3 aCo; in vec3 aWorldCo; #include "common_world.glsl" float sdLine( vec3 p, vec3 a, vec3 b ) { vec3 pa = p - a; vec3 ba = b - a; float h = clamp( dot(pa,ba)/dot(ba,ba), 0.0, 1.0 ); return length( pa - ba*h ); } float compute_board_shadow() { // player shadow float dist_to_player = max( 0.0, sdLine( aWorldCo, g_board_0.xyz, g_board_1.xyz )-0.1 ); float player_shadow = max( 1.0-dist_to_player*2.7, 0.0 ); player_shadow *= player_shadow*player_shadow*player_shadow; return 1.0 - player_shadow*0.8; } vec3 scene_compute_lighting( vec3 diffuse, vec3 normal, vec3 co ) { return world_compute_lighting( diffuse, normal, co, compute_board_shadow() ); }