From a91fc3d57d87880882cb741ba9153b472b3b93b5 Mon Sep 17 00:00:00 2001 From: Warwick Date: Mon, 13 Jun 2022 14:07:55 +0100 Subject: [PATCH] Added diffuse lighting --- data/shaders/fragment.glsl | 16 +++++++++++++++- data/shaders/vertex.glsl | 8 +++++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/data/shaders/fragment.glsl b/data/shaders/fragment.glsl index 784279f..ccbee4a 100644 --- a/data/shaders/fragment.glsl +++ b/data/shaders/fragment.glsl @@ -2,6 +2,8 @@ out vec4 FragColor; in vec2 ourTexCoord; +in vec3 ourNormCoord; +in vec3 FragPos; // Handle multiple textures from the Mesh Object (Might not even be used) uniform sampler2D texture_diffuse1; @@ -14,7 +16,19 @@ uniform sampler2D ourTexture; void main() { - FragColor = texture(texture_diffuse1, ourTexCoord); + // Establish ambient lighting + float ambientStrength = 0.1; + + // Establish a temporary hard coded light position + vec3 lightPosition = vec3(1.0, 1.0, 1.0); + + // Normal light maths + vec3 norm = normalize(ourNormCoord); + vec3 lightDir = normalize(lightPosition - FragPos); + // Calculate diffuse + float diff = max(dot(norm, lightDir), 0.0); + + FragColor = texture(texture_diffuse1, ourTexCoord) * (ambientStrength + diff); //FragColor = texture(ourTexture, ourTexCoord); //FragColor = vec4(ourTexCoord.y,ourTexCoord.x,0,0); } diff --git a/data/shaders/vertex.glsl b/data/shaders/vertex.glsl index f0f9a17..ba278ad 100644 --- a/data/shaders/vertex.glsl +++ b/data/shaders/vertex.glsl @@ -1,15 +1,21 @@ #version 330 core layout (location = 0) in vec3 aPos; -layout (location = 1) in vec3 aNormal; // Currently Unused +layout (location = 1) in vec3 aNormal; layout (location = 2) in vec2 aTexCoord; uniform mat4 MVP; uniform mat4 Model; out vec2 ourTexCoord; +out vec3 ourNormCoord; +out vec3 FragPos; void main() { gl_Position = MVP * Model * vec4(aPos, 1.0); + ourNormCoord = aNormal; ourTexCoord = aTexCoord; + + // Calculate position of fragment + FragPos = vec3(Model * vec4(aPos, 1.0)); };