From 621f28fc652cc703aa265cdde83080045a9a45e0 Mon Sep 17 00:00:00 2001 From: Joey de Vries Date: Wed, 23 Nov 2016 08:12:53 +0100 Subject: [PATCH] Normal mapping gram-schmidth bugfix. --- src/5.advanced_lighting/4.normal_mapping/normal_mapping.cpp | 2 +- src/5.advanced_lighting/4.normal_mapping/normal_mapping.vs | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/5.advanced_lighting/4.normal_mapping/normal_mapping.cpp b/src/5.advanced_lighting/4.normal_mapping/normal_mapping.cpp index 09ade9b..7b50f4f 100644 --- a/src/5.advanced_lighting/4.normal_mapping/normal_mapping.cpp +++ b/src/5.advanced_lighting/4.normal_mapping/normal_mapping.cpp @@ -109,7 +109,7 @@ int main() glUniformMatrix4fv(glGetUniformLocation(shader.Program, "projection"), 1, GL_FALSE, glm::value_ptr(projection)); // Render normal-mapped quad glm::mat4 model; - model = glm::rotate(model, (GLfloat)glfwGetTime() * -10, glm::normalize(glm::vec3(1.0, 0.0, 1.0))); // Rotates the quad to show normal mapping works in all directions + model = glm::rotate(model, (GLfloat)glfwGetTime() * -0.1f, glm::normalize(glm::vec3(1.0, 0.0, 1.0))); // Rotates the quad to show normal mapping works in all directions glUniformMatrix4fv(glGetUniformLocation(shader.Program, "model"), 1, GL_FALSE, glm::value_ptr(model)); glUniform3fv(glGetUniformLocation(shader.Program, "lightPos"), 1, &lightPos[0]); glUniform3fv(glGetUniformLocation(shader.Program, "viewPos"), 1, &camera.Position[0]); diff --git a/src/5.advanced_lighting/4.normal_mapping/normal_mapping.vs b/src/5.advanced_lighting/4.normal_mapping/normal_mapping.vs index ba4bfac..10968be 100644 --- a/src/5.advanced_lighting/4.normal_mapping/normal_mapping.vs +++ b/src/5.advanced_lighting/4.normal_mapping/normal_mapping.vs @@ -34,8 +34,9 @@ void main() vs_out.Normal = normalize(normalMatrix * normal); vec3 T = normalize(normalMatrix * tangent); - vec3 B = normalize(normalMatrix * bitangent); vec3 N = normalize(normalMatrix * normal); + T = normalize(T - dot(T, N) * N); + vec3 B = cross(N, T); mat3 TBN = transpose(mat3(T, B, N)); vs_out.TBN = TBN;