spv.420.geom 750 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #version 420 core
  2. layout(triangles) in;
  3. in gl_PerVertex {
  4. float gl_PointSize;
  5. } gl_in[];
  6. out gl_PerVertex {
  7. float gl_PointSize;
  8. };
  9. layout(line_strip) out;
  10. layout(max_vertices = 127) out;
  11. layout(invocations = 4) in;
  12. uniform sampler2D s2D;
  13. in vec2 coord[];
  14. int i;
  15. void main()
  16. {
  17. float p = gl_in[1].gl_PointSize;
  18. gl_PointSize = p;
  19. gl_ViewportIndex = 7;
  20. EmitStreamVertex(1);
  21. EndStreamPrimitive(0);
  22. EmitVertex();
  23. EndPrimitive();
  24. int id = gl_InvocationID;
  25. const ivec2 offsets[5] =
  26. {
  27. ivec2(0,1),
  28. ivec2(1,-2),
  29. ivec2(0,3),
  30. ivec2(-3,0),
  31. ivec2(2,1)
  32. };
  33. vec4 v = textureGatherOffset(s2D, coord[0], offsets[i].xy);
  34. }