From 32a31a729f1c8a538d7904570dd9a53097a1249f Mon Sep 17 00:00:00 2001 From: Camden Dixie O'Brien Date: Sun, 28 Sep 2025 18:37:25 +0100 Subject: [PATCH] Implement lambertian shading w/ directional light --- frag.glsl | 8 +++++++- vert.glsl | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/frag.glsl b/frag.glsl index e9d6fa8..415dff8 100644 --- a/frag.glsl +++ b/frag.glsl @@ -1,9 +1,15 @@ #version 450 +float ambient = 0.05; +vec3 light_dir = normalize(vec3(2, 1, -1)); +vec3 base_colour = vec3(1.0, 0.94, 0.8); + layout(location = 0) in vec3 frag_normal; layout(location = 0) out vec4 out_colour; void main() { - out_colour = vec4(frag_normal, 1.0); + float lambertian = max(dot(frag_normal, light_dir), 0.0); + float intensity = min(lambertian + ambient, 1.0); + out_colour = vec4(intensity * base_colour, 1.0); } diff --git a/vert.glsl b/vert.glsl index edd64e0..ae7dbd7 100644 --- a/vert.glsl +++ b/vert.glsl @@ -13,5 +13,5 @@ layout(push_constant) uniform MVP { void main() { gl_Position = mvp.proj * mvp.view * mvp.model * vec4(position, 1.0); - frag_normal = normal; + frag_normal = mat3(mvp.model) * normal; }