geometry.gs 15 KB

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