geom.glsl 648 B

1234567891011121314151617181920212223242526272829303132
  1. #version 330
  2. layout (triangles) in;
  3. layout (triangle_strip, max_vertices = 6) out;
  4. in vec3 verts[3];
  5. in vec3 v_base_point[3];
  6. out float depth;
  7. #INSERT emit_gl_Position.glsl
  8. void emit_triangle(vec3 points[3]){
  9. for(int i = 0; i < 3; i++){
  10. emit_gl_Position(points[i]);
  11. EmitVertex();
  12. }
  13. EndPrimitive();
  14. }
  15. void main(){
  16. // Curves are marked as ended when the handle after
  17. // the first anchor is set equal to that anchor
  18. if (verts[0] == verts[1]) return;
  19. // Emit two triangles
  20. emit_triangle(vec3[3](v_base_point[0], verts[0], verts[2]));
  21. emit_triangle(vec3[3](verts[0], verts[1], verts[2]));
  22. }