From bd49bd525f4c6c6c15c4142bf42d1dd38be6fc16 Mon Sep 17 00:00:00 2001 From: pryazha Date: Sun, 19 Jan 2025 17:33:44 +0500 Subject: initial commit --- geometry_shader/shaders/normals.gs | 44 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 geometry_shader/shaders/normals.gs (limited to 'geometry_shader/shaders/normals.gs') diff --git a/geometry_shader/shaders/normals.gs b/geometry_shader/shaders/normals.gs new file mode 100644 index 0000000..3720a5f --- /dev/null +++ b/geometry_shader/shaders/normals.gs @@ -0,0 +1,44 @@ +#version 330 core +layout(triangles) in; +layout(line_strip, max_vertices = 6) out; + +in VS_OUT { + vec3 normal; +} gs_in[]; + +uniform mat4 projection; + +const float MAGNITUDE = 0.4; + +void +generate_line(int index) +{ + gl_Position = projection*gl_in[index].gl_Position; + EmitVertex(); + gl_Position = projection*(gl_in[index].gl_Position+ + vec4(gs_in[index].normal, 0.0)*MAGNITUDE); + EmitVertex(); + EndPrimitive(); +} + +void +main(void) +{ + /* + vec4 center = (gl_in[0].gl_Position+ + gl_in[1].gl_Position+ + gl_in[2].gl_Position)/3.0; + vec4 end = center+vec4(((gs_in[0].normal+ + gs_in[1].normal+ + gs_in[2].normal)/3.0), + 0.0)*MAGNITUDE; + gl_Position = projection*center; + EmitVertex(); + gl_Position = projection*end; + EmitVertex(); + EndPrimitive(); + */ + generate_line(0); + generate_line(1); + generate_line(2); +} -- cgit v1.2.3