cubes.gs 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. #version 430
  2. layout (points) in;
  3. layout (triangle_strip, max_vertices = 12) out;
  4. uniform mat4 proj;
  5. uniform mat4 view;
  6. uniform mat4 model;
  7. uniform mat4 shadow;
  8. in vec3 varTexture[];
  9. in int varIndex[];
  10. out vec3 varPositionG;
  11. out vec4 varShadowPositionG;
  12. out vec2 varTextureG;
  13. vec3 vectors[13] = {
  14. vec3(0.0, 0.0, 0.0), vec3(0.5, 1.0, 1.0), vec3(0.0, 0.5, 1.0),
  15. vec3(0.0, 1.0, 0.5), vec3(1.0, 0.5, 1.0), vec3(1.0, 1.0, 0.5),
  16. vec3(0.5, 1.0, 0.0), vec3(1.0, 0.5, 0.0), vec3(0.0, 0.5, 0.0),
  17. vec3(0.0, 0.0, 0.5), vec3(0.5, 0.0, 1.0), vec3(1.0, 0.0, 0.5),
  18. vec3(0.5, 0.0, 0.0)};
  19. int table[3072] = {
  20. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  21. 4, 1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 5, 2, 2, 5, 4, 0, 0, 0, 0, 0, 0,
  22. 5, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 6, 7, 3, 1, 2, 0, 0, 0, 0, 0, 0,
  23. 7, 4, 6, 6, 4, 1, 0, 0, 0, 0, 0, 0, 3, 6, 2, 6, 7, 2, 2, 7, 4, 0, 0, 0,
  24. 3, 8, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 1, 8, 8, 1, 2, 0, 0, 0, 0, 0, 0,
  25. 6, 3, 8, 1, 5, 4, 0, 0, 0, 0, 0, 0, 6, 5, 8, 5, 4, 8, 8, 4, 2, 0, 0, 0,
  26. 5, 3, 7, 7, 3, 8, 0, 0, 0, 0, 0, 0, 5, 1, 7, 1, 2, 7, 7, 2, 8, 0, 0, 0,
  27. 1, 3, 4, 3, 8, 4, 4, 8, 7, 0, 0, 0, 8, 7, 2, 7, 4, 2, 0, 0, 0, 0, 0, 0,
  28. 9, 2, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 3, 10, 10, 3, 1, 0, 0, 0, 0, 0, 0,
  29. 4, 1, 5, 2, 10, 9, 0, 0, 0, 0, 0, 0, 4, 10, 5, 10, 9, 5, 5, 9, 3, 0, 0, 0,
  30. 9, 2, 10, 7, 5, 6, 0, 0, 0, 0, 0, 0, 9, 3, 10, 10, 3, 1, 6, 7, 5, 0, 0, 0,
  31. 7, 4, 6, 6, 4, 1, 10, 9, 2, 0, 0, 0, 4, 10, 7, 10, 3, 7, 3, 10, 9, 3, 6, 7,
  32. 9, 2, 10, 3, 8, 6, 0, 0, 0, 0, 0, 0, 9, 8, 10, 8, 6, 10, 10, 6, 1, 0, 0, 0,
  33. 8, 6, 3, 2, 10, 9, 4, 1, 5, 0, 0, 0, 5, 4, 6, 4, 10, 6, 10, 8, 6, 8, 10, 9,
  34. 5, 3, 7, 7, 3, 8, 2, 10, 9, 0, 0, 0, 9, 7, 1, 10, 9, 1, 7, 5, 1, 7, 9, 8,
  35. 10, 9, 8, 4, 10, 8, 4, 10, 7, 3, 2, 1, 10, 9, 8, 4, 10, 8, 4, 8, 7, 0, 0, 0,
  36. 10, 4, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 11, 1, 2, 3, 0, 0, 0, 0, 0, 0,
  37. 5, 11, 1, 1, 11, 10, 0, 0, 0, 0, 0, 0, 10, 2, 11, 2, 3, 11, 11, 3, 5, 0, 0, 0,
  38. 7, 5, 6, 4, 11, 10, 0, 0, 0, 0, 0, 0, 2, 3, 1, 4, 11, 10, 7, 5, 6, 0, 0, 0,
  39. 7, 11, 6, 11, 10, 6, 6, 10, 1, 0, 0, 0, 6, 7, 3, 7, 11, 3, 11, 2, 3, 2, 11, 10,
  40. 10, 4, 11, 8, 6, 3, 0, 0, 0, 0, 0, 0, 6, 1, 8, 8, 1, 2, 4, 11, 10, 0, 0, 0,
  41. 10, 1, 11, 11, 1, 5, 3, 8, 6, 0, 0, 0, 10, 8, 5, 11, 10, 5, 8, 6, 5, 8, 10, 2,
  42. 8, 7, 3, 3, 7, 5, 11, 10, 4, 0, 0, 0, 11, 10, 2, 7, 11, 2, 7, 11, 8, 1, 4, 5,
  43. 7, 11, 8, 11, 1, 8, 1, 11, 10, 1, 3, 8, 11, 10, 2, 7, 11, 2, 7, 2, 8, 0, 0, 0,
  44. 11, 9, 4, 4, 9, 2, 0, 0, 0, 0, 0, 0, 1, 4, 3, 4, 11, 3, 3, 11, 9, 0, 0, 0,
  45. 2, 1, 9, 1, 5, 9, 9, 5, 11, 0, 0, 0, 3, 5, 9, 5, 11, 9, 0, 0, 0, 0, 0, 0,
  46. 2, 4, 9, 9, 4, 11, 5, 6, 7, 0, 0, 0, 6, 7, 11, 3, 6, 11, 3, 6, 9, 4, 5, 1,
  47. 1, 7, 9, 7, 11, 9, 2, 1, 9, 7, 1, 6, 6, 7, 11, 3, 6, 11, 3, 11, 9, 0, 0, 0,
  48. 11, 9, 4, 4, 9, 2, 8, 6, 3, 0, 0, 0, 1, 4, 6, 9, 4, 6, 9, 4, 11, 9, 8, 6,
  49. 8, 6, 5, 9, 8, 5, 9, 8, 11, 1, 3, 2, 8, 6, 5, 9, 8, 5, 9, 5, 11, 0, 0, 0,
  50. 7, 11, 9, 7, 9, 9, 4, 5, 2, 5, 2, 2, 11, 9, 8, 11, 8, 7, 1, 4, 5, 0, 0, 0,
  51. 8, 7, 11, 8, 11, 9, 1, 3, 2, 0, 0, 0, 11, 9, 8, 11, 8, 7, 0, 0, 0, 0, 0, 0,
  52. 11, 7, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 7, 12, 2, 3, 1, 0, 0, 0, 0, 0, 0,
  53. 11, 7, 12, 5, 4, 1, 0, 0, 0, 0, 0, 0, 3, 5, 2, 2, 5, 4, 7, 12, 11, 0, 0, 0,
  54. 11, 5, 12, 12, 5, 6, 0, 0, 0, 0, 0, 0, 11, 5, 12, 12, 5, 6, 1, 2, 3, 0, 0, 0,
  55. 11, 4, 12, 4, 1, 12, 12, 1, 6, 0, 0, 0, 11, 2, 6, 12, 11, 6, 2, 3, 6, 2, 11, 4,
  56. 7, 12, 11, 8, 6, 3, 0, 0, 0, 0, 0, 0, 2, 8, 1, 1, 8, 6, 12, 11, 7, 0, 0, 0,
  57. 4, 1, 5, 7, 12, 11, 8, 6, 3, 0, 0, 0, 12, 11, 4, 8, 12, 4, 8, 12, 2, 5, 7, 6,
  58. 8, 12, 3, 12, 11, 3, 3, 11, 5, 0, 0, 0, 8, 12, 2, 12, 5, 2, 5, 12, 11, 5, 1, 2,
  59. 3, 8, 1, 8, 12, 1, 12, 4, 1, 4, 12, 11, 12, 11, 4, 8, 12, 4, 8, 4, 2, 0, 0, 0,
  60. 12, 11, 7, 10, 9, 2, 0, 0, 0, 0, 0, 0, 1, 10, 3, 3, 10, 9, 11, 7, 12, 0, 0, 0,
  61. 7, 12, 11, 4, 1, 5, 2, 10, 9, 0, 0, 0, 7, 12, 9, 5, 7, 9, 5, 7, 3, 10, 11, 4,
  62. 6, 12, 5, 5, 12, 11, 9, 2, 10, 0, 0, 0, 12, 9, 3, 12, 3, 3, 10, 11, 1, 11, 1, 1,
  63. 11, 4, 12, 4, 1, 12, 4, 1, 6, 10, 9, 2, 9, 3, 6, 9, 6, 12, 4, 10, 11, 0, 0, 0,
  64. 6, 3, 8, 12, 11, 7, 10, 9, 2, 0, 0, 0, 11, 7, 6, 10, 11, 6, 10, 11, 1, 8, 12, 9,
  65. 8, 12, 9, 7, 6, 5, 2, 1, 3, 7, 6, 5, 9, 8, 12, 5, 7, 6, 11, 4, 10, 0, 0, 0,
  66. 8, 12, 3, 12, 11, 3, 12, 11, 5, 9, 2, 10, 11, 5, 1, 11, 1, 10, 8, 12, 9, 0, 0, 0,
  67. 8, 12, 9, 4, 10, 11, 2, 1, 3, 0, 0, 0, 10, 11, 4, 12, 9, 8, 0, 0, 0, 0, 0, 0,
  68. 12, 10, 7, 7, 10, 4, 0, 0, 0, 0, 0, 0, 12, 10, 7, 7, 10, 4, 2, 3, 1, 0, 0, 0,
  69. 5, 7, 1, 7, 12, 1, 1, 12, 10, 0, 0, 0, 7, 12, 10, 3, 7, 10, 7, 3, 5, 2, 3, 10,
  70. 4, 5, 10, 5, 6, 10, 10, 6, 12, 0, 0, 0, 4, 5, 10, 5, 6, 10, 5, 6, 12, 1, 2, 3,
  71. 6, 12, 10, 1, 6, 10, 0, 0, 0, 0, 0, 0, 2, 3, 6, 10, 2, 6, 10, 6, 12, 0, 0, 0,
  72. 4, 7, 10, 10, 7, 12, 6, 3, 8, 0, 0, 0, 8, 6, 2, 6, 2, 2, 7, 12, 10, 7, 10, 10,
  73. 5, 7, 1, 7, 12, 1, 7, 12, 10, 6, 3, 8, 12, 10, 2, 12, 2, 8, 5, 7, 6, 0, 0, 0,
  74. 4, 12, 3, 4, 5, 3, 8, 12, 3, 4, 12, 10, 2, 8, 12, 2, 12, 10, 5, 1, 4, 0, 0, 0,
  75. 3, 8, 12, 1, 3, 12, 1, 12, 10, 0, 0, 0, 12, 10, 2, 12, 2, 8, 0, 0, 0, 0, 0, 0,
  76. 12, 9, 7, 9, 2, 7, 7, 2, 4, 0, 0, 0, 4, 12, 3, 12, 9, 3, 1, 4, 3, 12, 4, 7,
  77. 2, 1, 5, 9, 2, 5, 7, 9, 5, 9, 7, 12, 7, 12, 9, 5, 7, 9, 5, 9, 3, 0, 0, 0,
  78. 9, 2, 4, 6, 9, 4, 9, 6, 12, 5, 6, 4, 6, 12, 9, 6, 9, 3, 4, 5, 1, 0, 0, 0,
  79. 9, 2, 1, 12, 9, 1, 12, 1, 6, 0, 0, 0, 9, 3, 6, 9, 6, 12, 0, 0, 0, 0, 0, 0,
  80. 12, 9, 7, 9, 2, 7, 9, 2, 4, 8, 6, 3, 6, 1, 4, 6, 4, 7, 9, 8, 12, 0, 0, 0,
  81. 5, 7, 6, 9, 8, 12, 3, 2, 1, 0, 0, 0, 8, 12, 9, 7, 6, 5, 0, 0, 0, 0, 0, 0,
  82. 2, 4, 5, 2, 5, 3, 12, 9, 8, 0, 0, 0, 8, 12, 9, 1, 4, 5, 0, 0, 0, 0, 0, 0,
  83. 9, 8, 12, 3, 2, 1, 0, 0, 0, 0, 0, 0, 8, 12, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  84. 12, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 9, 12, 2, 3, 1, 0, 0, 0, 0, 0, 0,
  85. 12, 8, 9, 4, 1, 5, 0, 0, 0, 0, 0, 0, 4, 2, 5, 5, 2, 3, 9, 12, 8, 0, 0, 0,
  86. 12, 8, 9, 6, 7, 5, 0, 0, 0, 0, 0, 0, 7, 5, 6, 8, 9, 12, 2, 3, 1, 0, 0, 0,
  87. 1, 6, 4, 4, 6, 7, 8, 9, 12, 0, 0, 0, 9, 12, 7, 2, 9, 7, 2, 9, 4, 6, 8, 3,
  88. 3, 9, 6, 6, 9, 12, 0, 0, 0, 0, 0, 0, 2, 9, 1, 9, 12, 1, 1, 12, 6, 0, 0, 0,
  89. 12, 6, 9, 9, 6, 3, 5, 4, 1, 0, 0, 0, 2, 9, 4, 9, 6, 4, 6, 9, 12, 6, 5, 4,
  90. 12, 7, 9, 7, 5, 9, 9, 5, 3, 0, 0, 0, 1, 2, 5, 2, 9, 5, 9, 7, 5, 7, 9, 12,
  91. 12, 4, 3, 9, 12, 3, 4, 1, 3, 4, 12, 7, 9, 12, 7, 2, 9, 7, 2, 7, 4, 0, 0, 0,
  92. 10, 12, 2, 2, 12, 8, 0, 0, 0, 0, 0, 0, 8, 3, 12, 3, 1, 12, 12, 1, 10, 0, 0, 0,
  93. 8, 2, 12, 12, 2, 10, 1, 5, 4, 0, 0, 0, 12, 4, 3, 5, 4, 3, 12, 8, 3, 12, 4, 10,
  94. 10, 12, 2, 2, 12, 8, 7, 5, 6, 0, 0, 0, 7, 5, 1, 12, 7, 1, 12, 7, 10, 3, 6, 8,
  95. 6, 8, 2, 6, 2, 2, 12, 7, 10, 7, 10, 10, 7, 4, 10, 7, 10, 12, 3, 6, 8, 0, 0, 0,
  96. 3, 2, 6, 2, 10, 6, 6, 10, 12, 0, 0, 0, 12, 6, 10, 6, 1, 10, 0, 0, 0, 0, 0, 0,
  97. 5, 4, 10, 6, 5, 10, 6, 5, 12, 2, 1, 3, 5, 4, 10, 6, 5, 10, 6, 10, 12, 0, 0, 0,
  98. 12, 7, 10, 7, 3, 10, 3, 7, 5, 3, 2, 10, 7, 5, 1, 12, 7, 1, 12, 1, 10, 0, 0, 0,
  99. 10, 12, 7, 10, 7, 4, 3, 2, 1, 0, 0, 0, 10, 12, 7, 10, 7, 4, 0, 0, 0, 0, 0, 0,
  100. 11, 10, 4, 9, 12, 8, 0, 0, 0, 0, 0, 0, 12, 8, 9, 10, 4, 11, 1, 2, 3, 0, 0, 0,
  101. 5, 11, 1, 1, 11, 10, 12, 8, 9, 0, 0, 0, 12, 8, 3, 11, 12, 3, 11, 12, 5, 2, 9, 10,
  102. 8, 9, 12, 7, 5, 6, 4, 11, 10, 0, 0, 0, 12, 8, 9, 6, 7, 5, 1, 2, 3, 6, 7, 5,
  103. 7, 11, 6, 11, 10, 6, 11, 10, 1, 12, 8, 9, 3, 6, 8, 11, 12, 7, 9, 10, 2, 0, 0, 0,
  104. 3, 9, 6, 6, 9, 12, 10, 4, 11, 0, 0, 0, 4, 11, 12, 1, 4, 12, 1, 4, 6, 9, 10, 2,
  105. 9, 12, 3, 12, 3, 3, 11, 10, 1, 11, 1, 1, 12, 6, 5, 12, 5, 11, 2, 9, 10, 0, 0, 0,
  106. 12, 7, 9, 7, 5, 9, 7, 5, 3, 11, 10, 4, 12, 7, 11, 1, 4, 5, 10, 2, 9, 0, 0, 0,
  107. 10, 1, 3, 10, 3, 9, 7, 11, 12, 0, 0, 0, 11, 12, 7, 9, 10, 2, 0, 0, 0, 0, 0, 0,
  108. 11, 12, 4, 12, 8, 4, 4, 8, 2, 0, 0, 0, 8, 3, 1, 12, 8, 1, 4, 12, 1, 12, 4, 11,
  109. 12, 8, 2, 5, 12, 2, 12, 5, 11, 1, 5, 2, 12, 8, 3, 11, 12, 3, 11, 3, 5, 0, 0, 0,
  110. 11, 12, 4, 12, 8, 4, 12, 8, 2, 7, 5, 6, 1, 4, 5, 12, 7, 11, 6, 8, 3, 0, 0, 0,
  111. 8, 2, 1, 8, 1, 6, 11, 12, 7, 0, 0, 0, 12, 7, 11, 6, 8, 3, 0, 0, 0, 0, 0, 0,
  112. 2, 11, 6, 11, 12, 6, 3, 2, 6, 11, 2, 4, 4, 11, 12, 1, 4, 12, 1, 12, 6, 0, 0, 0,
  113. 5, 11, 12, 5, 12, 6, 2, 1, 3, 0, 0, 0, 5, 11, 12, 5, 12, 6, 0, 0, 0, 0, 0, 0,
  114. 5, 3, 2, 5, 2, 4, 12, 7, 11, 0, 0, 0, 7, 11, 12, 4, 5, 1, 0, 0, 0, 0, 0, 0,
  115. 7, 11, 12, 3, 2, 1, 0, 0, 0, 0, 0, 0, 7, 11, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  116. 9, 11, 8, 8, 11, 7, 0, 0, 0, 0, 0, 0, 7, 8, 11, 11, 8, 9, 3, 1, 2, 0, 0, 0,
  117. 9, 11, 8, 8, 11, 7, 4, 1, 5, 0, 0, 0, 11, 7, 9, 7, 9, 9, 5, 4, 2, 5, 2, 2,
  118. 6, 8, 5, 8, 9, 5, 5, 9, 11, 0, 0, 0, 6, 8, 5, 8, 9, 5, 8, 9, 11, 3, 1, 2,
  119. 4, 1, 6, 4, 9, 6, 4, 9, 11, 8, 9, 6, 9, 11, 4, 9, 4, 2, 6, 8, 3, 0, 0, 0,
  120. 7, 6, 11, 6, 3, 11, 11, 3, 9, 0, 0, 0, 7, 1, 9, 11, 7, 9, 1, 2, 9, 1, 7, 6,
  121. 7, 6, 11, 6, 3, 11, 6, 3, 9, 5, 4, 1, 4, 2, 9, 4, 9, 11, 6, 5, 7, 0, 0, 0,
  122. 5, 3, 9, 11, 5, 9, 0, 0, 0, 0, 0, 0, 1, 2, 9, 5, 1, 9, 5, 9, 11, 0, 0, 0,
  123. 4, 1, 3, 11, 4, 3, 11, 3, 9, 0, 0, 0, 9, 11, 4, 9, 4, 2, 0, 0, 0, 0, 0, 0,
  124. 10, 11, 2, 11, 7, 2, 2, 7, 8, 0, 0, 0, 11, 7, 8, 1, 11, 8, 11, 1, 10, 3, 1, 8,
  125. 10, 11, 2, 11, 7, 2, 11, 7, 8, 4, 1, 5, 7, 8, 3, 7, 3, 5, 10, 11, 4, 0, 0, 0,
  126. 8, 10, 5, 10, 11, 5, 6, 8, 5, 10, 8, 2, 1, 10, 11, 1, 11, 5, 8, 3, 6, 0, 0, 0,
  127. 1, 6, 8, 1, 8, 2, 11, 4, 10, 0, 0, 0, 4, 10, 11, 6, 8, 3, 0, 0, 0, 0, 0, 0,
  128. 7, 6, 3, 11, 7, 3, 2, 11, 3, 11, 2, 10, 11, 7, 6, 10, 11, 6, 10, 6, 1, 0, 0, 0,
  129. 3, 2, 1, 11, 4, 10, 5, 7, 6, 0, 0, 0, 5, 7, 6, 11, 4, 10, 0, 0, 0, 0, 0, 0,
  130. 2, 10, 11, 3, 2, 11, 3, 11, 5, 0, 0, 0, 11, 5, 1, 11, 1, 10, 0, 0, 0, 0, 0, 0,
  131. 4, 10, 11, 2, 1, 3, 0, 0, 0, 0, 0, 0, 4, 10, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  132. 9, 10, 8, 10, 4, 8, 8, 4, 7, 0, 0, 0, 9, 10, 8, 10, 4, 8, 10, 4, 7, 2, 3, 1,
  133. 7, 9, 1, 9, 10, 1, 5, 7, 1, 9, 7, 8, 3, 5, 7, 3, 7, 8, 10, 2, 9, 0, 0, 0,
  134. 4, 5, 6, 10, 4, 6, 8, 10, 6, 10, 8, 9, 6, 8, 3, 10, 2, 9, 1, 4, 5, 0, 0, 0,
  135. 8, 9, 10, 6, 8, 10, 6, 10, 1, 0, 0, 0, 2, 9, 10, 8, 3, 6, 0, 0, 0, 0, 0, 0,
  136. 10, 4, 7, 3, 10, 7, 10, 3, 9, 6, 3, 7, 4, 7, 6, 4, 6, 1, 9, 10, 2, 0, 0, 0,
  137. 3, 9, 10, 3, 10, 1, 7, 6, 5, 0, 0, 0, 2, 9, 10, 5, 7, 6, 0, 0, 0, 0, 0, 0,
  138. 10, 4, 5, 9, 10, 5, 9, 5, 3, 0, 0, 0, 1, 4, 5, 10, 2, 9, 0, 0, 0, 0, 0, 0,
  139. 3, 9, 10, 3, 10, 1, 0, 0, 0, 0, 0, 0, 2, 9, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  140. 7, 8, 2, 4, 7, 2, 0, 0, 0, 0, 0, 0, 3, 1, 4, 8, 3, 4, 8, 4, 7, 0, 0, 0,
  141. 1, 5, 7, 2, 1, 7, 2, 7, 8, 0, 0, 0, 3, 5, 7, 3, 7, 8, 0, 0, 0, 0, 0, 0,
  142. 5, 6, 8, 4, 5, 8, 4, 8, 2, 0, 0, 0, 3, 6, 8, 5, 1, 4, 0, 0, 0, 0, 0, 0,
  143. 1, 6, 8, 1, 8, 2, 0, 0, 0, 0, 0, 0, 8, 3, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  144. 6, 3, 2, 7, 6, 2, 7, 2, 4, 0, 0, 0, 4, 7, 6, 4, 6, 1, 0, 0, 0, 0, 0, 0,
  145. 6, 5, 7, 1, 3, 2, 0, 0, 0, 0, 0, 0, 6, 5, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  146. 5, 3, 2, 5, 2, 4, 0, 0, 0, 0, 0, 0, 1, 4, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  147. 2, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  148. };
  149. const float step = 1.0 / 63.0;
  150. void main(void) {
  151. vec4 base = gl_in[0].gl_Position;
  152. int index = varIndex[0] * 12;
  153. for(int i = 0; i < 12; i += 3) {
  154. vec3 offsetA = vectors[table[index + i + 0]];
  155. vec3 offsetB = vectors[table[index + i + 1]];
  156. vec3 offsetC = vectors[table[index + i + 2]];
  157. // position
  158. vec3 a = base.xyz + offsetA;
  159. vec3 b = base.xyz + offsetB;
  160. vec3 c = base.xyz + offsetC;
  161. // texture coords
  162. vec2 ta = (varTexture[0] + offsetA * step).xy;
  163. vec2 tb = (varTexture[0] + offsetB * step).xy;
  164. vec2 tc = (varTexture[0] + offsetC * step).xy;
  165. // normal, same for all vertices
  166. vec3 ab = b - a;
  167. vec3 ac = c - a;
  168. vec3 normal = normalize(cross(ab, ac));
  169. gl_Position = proj * view * model * vec4(a, 1.0);
  170. varPositionG = a;
  171. varShadowPositionG = shadow * model * vec4(a, 1.0);
  172. varTextureG = ta;
  173. EmitVertex();
  174. gl_Position = proj * view * model * vec4(b, 1.0);
  175. varPositionG = b;
  176. varShadowPositionG = shadow * model * vec4(b, 1.0);
  177. varTextureG = tb;
  178. EmitVertex();
  179. gl_Position = proj * view * model * vec4(c, 1.0);
  180. varPositionG = c;
  181. varShadowPositionG = shadow * model * vec4(c, 1.0);
  182. varTextureG = tc;
  183. EmitVertex();
  184. EndPrimitive();
  185. }
  186. }