diff --git a/default-frag.glsl b/default-frag.glsl index f053502..5b74bcc 100644 --- a/default-frag.glsl +++ b/default-frag.glsl @@ -1,6 +1,6 @@ #version 450 -float ambient = 0.05; +float ambient = 0.1; vec3 light_dir = normalize(vec3(2, 2, -1)); vec3 base_colour = vec3(1.0, 0.94, 0.8); @@ -13,7 +13,16 @@ layout(binding = 2) uniform sampler2DShadow shadow_map; void main() { - float lambertian = max(dot(frag_normal, light_dir), 0.0); - float intensity = min(lambertian + ambient, 1.0); + const float lambertian = max(dot(frag_normal, light_dir), 0.0); + + const float shadow_bias = 0.005; + const vec3 proj_coords = light_pos.xyz / light_pos.w; + const vec3 shadow_map_pos + = vec3(0.5 * proj_coords.xy + 0.5, proj_coords.z); + float shadow = texture( + shadow_map, + vec3(shadow_map_pos.xy, shadow_map_pos.z - shadow_bias)); + + const float intensity = min(shadow * lambertian + ambient, 1.0); out_colour = vec4(intensity * base_colour, 1.0); }