From 3615cfce79fe68c9c6c26b91e5e4d6d87e5dd0a1 Mon Sep 17 00:00:00 2001 From: Joey de Vries Date: Thu, 4 Jun 2020 17:41:32 +0200 Subject: [PATCH] Do Geometry Shader normal visualization in view-space to prevent perspective distortion. --- .../9.3.geometry_shader_normals/9.3.normal_visualization.gs | 6 ++++-- .../9.3.geometry_shader_normals/9.3.normal_visualization.vs | 5 ++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/4.advanced_opengl/9.3.geometry_shader_normals/9.3.normal_visualization.gs b/src/4.advanced_opengl/9.3.geometry_shader_normals/9.3.normal_visualization.gs index 1bea216..a1b6607 100644 --- a/src/4.advanced_opengl/9.3.geometry_shader_normals/9.3.normal_visualization.gs +++ b/src/4.advanced_opengl/9.3.geometry_shader_normals/9.3.normal_visualization.gs @@ -8,11 +8,13 @@ in VS_OUT { const float MAGNITUDE = 0.2; +uniform mat4 projection; + void GenerateLine(int index) { - gl_Position = gl_in[index].gl_Position; + gl_Position = projection * gl_in[index].gl_Position; EmitVertex(); - gl_Position = gl_in[index].gl_Position + vec4(gs_in[index].normal, 0.0) * MAGNITUDE; + gl_Position = projection * (gl_in[index].gl_Position + vec4(gs_in[index].normal, 0.0) * MAGNITUDE); EmitVertex(); EndPrimitive(); } diff --git a/src/4.advanced_opengl/9.3.geometry_shader_normals/9.3.normal_visualization.vs b/src/4.advanced_opengl/9.3.geometry_shader_normals/9.3.normal_visualization.vs index 5cf6e44..1adefa7 100644 --- a/src/4.advanced_opengl/9.3.geometry_shader_normals/9.3.normal_visualization.vs +++ b/src/4.advanced_opengl/9.3.geometry_shader_normals/9.3.normal_visualization.vs @@ -6,13 +6,12 @@ out VS_OUT { vec3 normal; } vs_out; -uniform mat4 projection; uniform mat4 view; uniform mat4 model; void main() { mat3 normalMatrix = mat3(transpose(inverse(view * model))); - vs_out.normal = vec3(projection * vec4(normalMatrix * aNormal, 0.0)); - gl_Position = projection * view * model * vec4(aPos, 1.0); + vs_out.normal = vec3(vec4(normalMatrix * aNormal, 0.0)); + gl_Position = view * model * vec4(aPos, 1.0); } \ No newline at end of file