Advertisement
Guest User

Cube geometry

a guest
Feb 5th, 2019
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #version 300 es
  2. #extension GL_OES_geometry_shader : enable
  3.  
  4. layout(points) in;
  5. layout(triangle_strip, max_vertices = 14) out;
  6.  
  7. uniform mat4 uMVP;
  8. uniform vec3 uSpacing;
  9.  
  10. out vec4 outGeomColor;
  11.  
  12. in VS_OUT
  13. {
  14.     vec4 outVSColor;
  15. }gsIn[];
  16.  
  17. void main()
  18. {
  19.  
  20.     /*----------------------------------------------------------------------------*/
  21.     /*--------------------------Determine cube position---------------------------*/
  22.     /*----------------------------------------------------------------------------*/
  23.     vec4 cubePos[8];
  24.  
  25.     vec3 spacing = vec3(0.5, 0.5, 0.5);
  26.  
  27.     //Back
  28.     cubePos[0] = gl_in[0].gl_Position + vec4(0,         0,         spacing.z, 0.0);
  29.     cubePos[1] = gl_in[0].gl_Position + vec4(spacing.x, 0,         spacing.z, 0.0);
  30.     cubePos[2] = gl_in[0].gl_Position + vec4(0,         spacing.y, spacing.z, 0.0);
  31.     cubePos[3] = gl_in[0].gl_Position + vec4(spacing.x, spacing.y, spacing.z, 0.0);
  32.  
  33.     //Front
  34.     cubePos[4] = gl_in[0].gl_Position + vec4(0,         0,         0, 0.0);
  35.     cubePos[5] = gl_in[0].gl_Position + vec4(spacing.x, 0,         0, 0.0);
  36.     cubePos[6] = gl_in[0].gl_Position + vec4(0,         spacing.y, 0, 0.0);
  37.     cubePos[7] = gl_in[0].gl_Position + vec4(spacing.x, spacing.y, 0, 0.0);
  38.  
  39.     for(int i = 0; i < 8; i++)
  40.     {
  41.         cubePos[i] = uMVP*cubePos[i];
  42.         cubePos[i].xyz /= 2.0;
  43.     }
  44.  
  45.     vec4 cubeColor[8];
  46.     cubeColor[0] = vec4(0.0, 0.0, 0.0, 1.0);
  47.     cubeColor[1] = vec4(1.0, 0.0, 0.0, 1.0);
  48.     cubeColor[2] = vec4(0.0, 1.0, 0.0, 1.0);
  49.     cubeColor[3] = vec4(0.0, 0.0, 1.0, 1.0);
  50.     cubeColor[4] = vec4(0.0, 1.0, 1.0, 1.0);
  51.     cubeColor[5] = vec4(1.0, 1.0, 0.0, 1.0);
  52.     cubeColor[6] = vec4(1.0, 0.0, 1.0, 1.0);
  53.     cubeColor[7] = vec4(1.0, 1.0, 1.0, 1.0);
  54.  
  55.     int ind[14];
  56.     ind[0]  = 6;
  57.     ind[1]  = 7;
  58.     ind[2]  = 5;
  59.     ind[3]  = 4;
  60.     ind[4]  = 1;
  61.     ind[5]  = 7;
  62.     ind[6]  = 3;
  63.     ind[7]  = 6;
  64.     ind[8]  = 2;
  65.     ind[9]  = 4;
  66.     ind[10] = 0;
  67.     ind[11] = 1;
  68.     ind[12] = 2;
  69.     ind[13] = 3;
  70.  
  71.     for(int i = 0; i < 14; i++)
  72.     {
  73.         outGeomColor = cubeColor[ind[i]];
  74.         gl_Position = cubePos[ind[i]];
  75.         EmitVertex();
  76.     }
  77.     EndPrimitive();
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement