diff --git a/src/Engine.Graphics.Vulkan/Shaders/triangle.frag b/src/Engine.Graphics.Vulkan/Shaders/triangle.frag index 7122ce8..8d5bf0d 100644 --- a/src/Engine.Graphics.Vulkan/Shaders/triangle.frag +++ b/src/Engine.Graphics.Vulkan/Shaders/triangle.frag @@ -1,8 +1,14 @@ #version 450 layout(location = 0) in vec3 fragColor; +layout(location = 1) in vec3 fragNormal; layout(location = 0) out vec4 outColor; void main() { - outColor = vec4(fragColor, 1.0); + vec3 N = normalize(fragNormal); + vec3 L = normalize(vec3(0.5, 0.8, 0.3)); + float diff = max(dot(N, L), 0.0); + float ambient = 0.25; + vec3 color = fragColor * (ambient + diff * 0.75); + outColor = vec4(color, 1.0); } diff --git a/src/Engine.Graphics.Vulkan/Shaders/triangle.frag.spv b/src/Engine.Graphics.Vulkan/Shaders/triangle.frag.spv index 828f1e5..cb92ce1 100644 Binary files a/src/Engine.Graphics.Vulkan/Shaders/triangle.frag.spv and b/src/Engine.Graphics.Vulkan/Shaders/triangle.frag.spv differ diff --git a/src/Engine.Graphics.Vulkan/Shaders/triangle.vert b/src/Engine.Graphics.Vulkan/Shaders/triangle.vert index 8cfb483..736c74d 100644 --- a/src/Engine.Graphics.Vulkan/Shaders/triangle.vert +++ b/src/Engine.Graphics.Vulkan/Shaders/triangle.vert @@ -5,6 +5,7 @@ layout(location = 1) in vec3 inColor; layout(location = 2) in vec3 inNormal; layout(location = 0) out vec3 fragColor; +layout(location = 1) out vec3 fragNormal; layout(set = 0, binding = 0) uniform CameraUBO { mat4 vp; @@ -17,4 +18,5 @@ layout(push_constant) uniform PC { void main() { gl_Position = vp * pc.model * vec4(inPosition, 1.0); fragColor = inColor; + fragNormal = mat3(pc.model) * inNormal; } diff --git a/src/Engine.Graphics.Vulkan/Shaders/triangle.vert.spv b/src/Engine.Graphics.Vulkan/Shaders/triangle.vert.spv index 7107a91..834e27a 100644 Binary files a/src/Engine.Graphics.Vulkan/Shaders/triangle.vert.spv and b/src/Engine.Graphics.Vulkan/Shaders/triangle.vert.spv differ