summaryrefslogtreecommitdiff
path: root/advanced_lighting/5.parallax_mapping/shaders/normals_debug.geom
diff options
context:
space:
mode:
Diffstat (limited to 'advanced_lighting/5.parallax_mapping/shaders/normals_debug.geom')
-rw-r--r--advanced_lighting/5.parallax_mapping/shaders/normals_debug.geom44
1 files changed, 44 insertions, 0 deletions
diff --git a/advanced_lighting/5.parallax_mapping/shaders/normals_debug.geom b/advanced_lighting/5.parallax_mapping/shaders/normals_debug.geom
new file mode 100644
index 0000000..79fd4f6
--- /dev/null
+++ b/advanced_lighting/5.parallax_mapping/shaders/normals_debug.geom
@@ -0,0 +1,44 @@
+#version 330 core
+layout(triangles) in;
+layout(line_strip, max_vertices=18) out;
+
+in VS_OUT {
+ vec4 tangent;
+ vec4 bitangent;
+ vec4 normal;
+} gs_in[];
+
+out vec3 vcolor;
+
+uniform mat4 proj;
+
+void gen_normals(int index)
+{
+ vcolor = vec3(1.0, 0.0, 0.0);
+ gl_Position = proj*(gl_in[index].gl_Position);
+ EmitVertex();
+ gl_Position = proj*(gl_in[index].gl_Position+0.5*gs_in[index].tangent);
+ EmitVertex();
+ EndPrimitive();
+
+ vcolor = vec3(0.0, 0.0, 1.0);
+ gl_Position = proj*(gl_in[index].gl_Position);
+ EmitVertex();
+ gl_Position = proj*(gl_in[index].gl_Position+0.5*gs_in[index].bitangent);
+ EmitVertex();
+ EndPrimitive();
+
+ vcolor = vec3(0.0, 1.0, 0.0);
+ gl_Position = proj*(gl_in[index].gl_Position);
+ EmitVertex();
+ gl_Position = proj*(gl_in[index].gl_Position+0.5*gs_in[index].normal);
+ EmitVertex();
+ EndPrimitive();
+}
+
+void main(void)
+{
+ gen_normals(0);
+ gen_normals(1);
+ gen_normals(2);
+}