diff --git a/imgui.ini b/imgui.ini index b286810..da274ca 100644 --- a/imgui.ini +++ b/imgui.ini @@ -19,12 +19,12 @@ Size=300,425 Collapsed=0 [Window][Cortex Engine Debug] -Pos=60,60 +Pos=1,1 Size=226,196 Collapsed=0 [Window][Shadow Parameters] -Pos=60,60 -Size=318,263 +Pos=772,456 +Size=507,263 Collapsed=0 diff --git a/src/Engine.Graphics.Vulkan/Shaders/triangle.frag b/src/Engine.Graphics.Vulkan/Shaders/triangle.frag index dd9681d..d0ceb73 100644 --- a/src/Engine.Graphics.Vulkan/Shaders/triangle.frag +++ b/src/Engine.Graphics.Vulkan/Shaders/triangle.frag @@ -17,7 +17,7 @@ layout(push_constant) uniform PC { vec4 lightPos; vec4 lightColor; mat4 lightViewProj; - vec4 shadowParams; // x=bias, y=sampleRadius, z=farPlane, w=unused + vec4 shadowParams; } pc; const vec3 AMBIENT = vec3(0.01, 0.01, 0.02); @@ -138,6 +138,18 @@ void main() float dist = length(toLight); vec3 L = toLight / max(dist, 0.001); + // Flip normal if it faces away from light (fixes inward normals from bad winding) + if (dot(N, L) < 0.0) + { + N = -N; + } + + // Also flip for view direction if needed + if (dot(N, V) < 0.0) + { + N = -N; + } + float attenuation = pow(clamp(1.0 - dist / max(lightRange, 0.001), 0.0, 1.0), 2.0); vec3 radiance = lightColor * lightIntensity * attenuation; diff --git a/src/Engine.Graphics.Vulkan/Shaders/triangle.frag.spv b/src/Engine.Graphics.Vulkan/Shaders/triangle.frag.spv index 5751d5b..d349aec 100644 Binary files a/src/Engine.Graphics.Vulkan/Shaders/triangle.frag.spv and b/src/Engine.Graphics.Vulkan/Shaders/triangle.frag.spv differ