From 430761da2e25776602ee5961326f5bd7775b57c8 Mon Sep 17 00:00:00 2001 From: Hunter Kvalevog Date: Sun, 31 May 2026 21:29:28 -0500 Subject: --- vk-cube/vk-cube-fs.glsl | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) (limited to 'vk-cube/vk-cube-fs.glsl') diff --git a/vk-cube/vk-cube-fs.glsl b/vk-cube/vk-cube-fs.glsl index 1262747..622d2bd 100644 --- a/vk-cube/vk-cube-fs.glsl +++ b/vk-cube/vk-cube-fs.glsl @@ -1,12 +1,12 @@ #version 450 // ================================================================================================ -// Fragment shader +// Fragment shader, basic Phong shading // // Build: // $ glslc -o vk-cube-fs.spv -fshader-stage=fragment vk-cube-fs.glsl // // Changelog: -// ??/??/????: Initial release +// 5/31/2026: Initial release // // License: // Copyright (c) 2026 Hunter Kvalevog @@ -18,10 +18,30 @@ // WITH REGARD TO THIS SOFTWARE. // ================================================================================================ +layout (location = 0) in vec3 f_c; +layout (location = 1) in vec3 f_n; +layout (location = 2) in vec3 f_p; + layout (location = 0) out vec4 out_color; void main() { - out_color = vec4(1.0f, 0.0f, 0.0f, 1.0f); + vec3 light_pos = vec3(0.0f, 0.0f, -2.0f); + vec3 light_dir = normalize(light_pos - f_p); + vec3 view_dir = normalize(-f_p); + + // ambient + float ambient = 0.15f; + + // diffuse + float diffuse = max(dot(f_n, light_dir), 0.0f); + + // specular + vec3 reflect_dir = reflect(-light_dir, f_n); + float spec = pow(max(dot(view_dir, reflect_dir), 0.0f), 32.0f); + + vec3 result = (ambient + diffuse + 0.5 * spec) * f_c; + + out_color = vec4(result, 1.0f); } -- cgit v1.2.3