fix: add normal-based diffuse lighting so cube is visible as 3D

- Fragment shader: directional light dot(normal, lightDir) with 0.2 ambient
- Vertex shader: pass normal through mat3(model) to fragment
- Same-color faces now have different shading based on orientation
This commit is contained in:
emil28092005
2026-06-18 12:39:51 +03:00
parent d6bd1807cf
commit d6ca80c678
4 changed files with 6 additions and 1 deletions
@@ -1,8 +1,11 @@
#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 lightDir = normalize(vec3(0.5, 0.8, 0.3));
float diff = max(dot(normalize(fragNormal), lightDir), 0.2);
outColor = vec4(fragColor * diff, 1.0);
}
Binary file not shown.
@@ -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(row_major, set = 0, binding = 0) uniform CameraUBO {
mat4 vp;
@@ -17,4 +18,5 @@ layout(row_major, push_constant) uniform PC {
void main() {
gl_Position = vp * pc.model * vec4(inPosition, 1.0);
fragColor = inColor;
fragNormal = mat3(pc.model) * inNormal;
}
Binary file not shown.