diff options
author | pryazha <pryadeiniv@mail.ru> | 2025-02-19 22:26:48 +0500 |
---|---|---|
committer | pryazha <pryadeiniv@mail.ru> | 2025-02-19 22:26:48 +0500 |
commit | f9ad6fa902c1167d7622ee7af2617d14b62bee21 (patch) | |
tree | 9d78792cf360ed871616a9ea66c4237018292aa7 /advanced_opengl/8.geometry_shader/shaders/normals.geom | |
parent | 926cbd0d49890772f911e6a6bedb7835605ced89 (diff) |
quite a lot of changes that I, of course, are not going to describe;)
Diffstat (limited to 'advanced_opengl/8.geometry_shader/shaders/normals.geom')
-rw-r--r-- | advanced_opengl/8.geometry_shader/shaders/normals.geom | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/advanced_opengl/8.geometry_shader/shaders/normals.geom b/advanced_opengl/8.geometry_shader/shaders/normals.geom new file mode 100644 index 0000000..f0e1a75 --- /dev/null +++ b/advanced_opengl/8.geometry_shader/shaders/normals.geom @@ -0,0 +1,42 @@ +#version 330 core +layout(triangles) in; +layout(line_strip, max_vertices = 6) out; + +in VS_OUT { + vec3 normal; +} gs_in[]; + +uniform mat4 proj; + +const float MAGNITUDE = 0.4; + +void generate_line(int index) +{ + gl_Position = proj*gl_in[index].gl_Position; + EmitVertex(); + gl_Position = proj*(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 = proj*center; + EmitVertex(); + gl_Position = proj*end; + EmitVertex(); + EndPrimitive(); + */ + generate_line(0); + generate_line(1); + generate_line(2); +} |