acomputerdog

Geometry shader

May 11th, 2014
476
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.92 KB | None | 0 0
  1. #version 330
  2.  
  3. layout(points) in;
  4. layout(triangle_strip,max_vertices=36) out;
  5.  
  6. in vec4 pass_Color[];
  7. in vec2 pass_TextureCoord[];
  8.  
  9. out vec4 geom_Color;
  10.  
  11. void main() {
  12.     for (int i = 0; i < gl_in.length(); i++) {
  13.         vec4 inPos = gl_in[i].gl_Position;
  14.         geom_Color = pass_Color[i];
  15.  
  16.         //front
  17.         gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(-0.5, -0.5, 0.5, 0.0)); //bl
  18.         EmitVertex();
  19.         gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(0.5, 0.5, 0.5, 0.0)); //tr
  20.         EmitVertex();
  21.         gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(0.5, -0.5, 0.5, 0.0)); //tl
  22.         EmitVertex();
  23.         EndPrimitive();
  24.  
  25.         gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(-0.5, -0.5, 0.5, 0.0)); //bl
  26.         EmitVertex();
  27.         gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(0.5, 0.5, 0.5, 0.0)); //tr
  28.         EmitVertex();
  29.         gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(-0.5, 0.5, 0.5, 0.0)); //br
  30.         EmitVertex();
  31.         EndPrimitive();
  32.  
  33.         //back
  34.         gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(-0.5, -0.5, -0.5, 0.0)); //bl
  35.         EmitVertex();
  36.         gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(0.5, 0.5, -0.5, 0.0)); //tr
  37.         EmitVertex();
  38.         gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(-0.5, 0.5, -0.5, 0.0)); //br
  39.         EmitVertex();
  40.         EndPrimitive();
  41.  
  42.         gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(-0.5, -0.5, -0.5, 0.0)); //bl
  43.         EmitVertex();
  44.         gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(0.5, 0.5, -0.5, 0.0)); //tr
  45.         EmitVertex();
  46.         gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(0.5, -0.5, -0.5, 0.0)); //tl
  47.         EmitVertex();
  48.         EndPrimitive();
  49.  
  50.         //right
  51.         gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(0.5, -0.5, -0.5, 0.0)); //bl
  52.         EmitVertex();
  53.         gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(0.5, 0.5, 0.5, 0.0)); //tr
  54.         EmitVertex();
  55.         gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(0.5, -0.5, 0.5, 0.0)); //br
  56.         EmitVertex();
  57.         EndPrimitive();
  58.  
  59.         gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(0.5, -0.5, -0.5, 0.0)); //bl
  60.         EmitVertex();
  61.         gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(0.5, 0.5, 0.5, 0.0)); //tr
  62.         EmitVertex();
  63.         gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(0.5, 0.5, -0.5, 0.0)); //tl
  64.         EmitVertex();
  65.         EndPrimitive();
  66.  
  67.         //left
  68.         gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(-0.5, -0.5, -0.5, 0.0)); //bl
  69.         EmitVertex();
  70.         gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(-0.5, 0.5, 0.5, 0.0)); //tr
  71.         EmitVertex();
  72.         gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(-0.5, -0.5, 0.5, 0.0)); //br
  73.         EmitVertex();
  74.         EndPrimitive();
  75.  
  76.         gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(-0.5, -0.5, -0.5, 0.0)); //bl
  77.         EmitVertex();
  78.         gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(-0.5, 0.5, 0.5, 0.0)); //tr
  79.         EmitVertex();
  80.         gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(-0.5, 0.5, -0.5, 0.0)); //tl
  81.         EmitVertex();
  82.         EndPrimitive();
  83.  
  84.         //top
  85.         gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(-0.5, 0.5, -0.5, 0.0)); //bl
  86.         EmitVertex();
  87.         gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(0.5, 0.5, 0.5, 0.0)); //tr
  88.         EmitVertex();
  89.         gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(-0.5, 0.5, 0.5, 0.0)); //br
  90.         EmitVertex();
  91.         EndPrimitive();
  92.  
  93.         gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(-0.5, 0.5, -0.5, 0.0)); //bl
  94.         EmitVertex();
  95.         gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(0.5, 0.5, 0.5, 0.0)); //tr
  96.         EmitVertex();
  97.         gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(0.5, 0.5, -0.5, 0.0)); //tl
  98.         EmitVertex();
  99.         EndPrimitive();
  100.  
  101.         //bottom
  102.         gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(-0.5, -0.5, -0.5, 0.0)); //bl
  103.         EmitVertex();
  104.         gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(0.5, -0.5, 0.5, 0.0)); //tr
  105.         EmitVertex();
  106.         gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(-0.5, -0.5, 0.5, 0.0)); //br
  107.         EmitVertex();
  108.         EndPrimitive();
  109.  
  110.         gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(-0.5, -0.5, -0.5, 0.0)); //bl
  111.         EmitVertex();
  112.         gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(0.5, -0.5, 0.5, 0.0)); //tr
  113.         EmitVertex();
  114.         gl_Position = gl_ModelViewProjectionMatrix * (inPos + vec4(0.5, -0.5, -0.5, 0.0)); //tl
  115.         EmitVertex();
  116.         EndPrimitive();
  117.     }
  118. }
Add Comment
Please, Sign In to add comment