Implement shadow sampling in fragment shader

This commit is contained in:
Camden Dixie O'Brien committed 2025-10-05 13:51:13 +01:00
1 parent a73975a766
commit 070758b6cc
1 file changed
+12 -3
+12 -3
View File
@@ -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);
}