reflection.vert 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246
  1. #version 440 core
  2. layout(std140, row_major) uniform nameless {
  3. vec3 anonMember1;
  4. mat3x2 m23;
  5. int scalarAfterm23;
  6. vec4 anonDeadMember2;
  7. vec4 anonMember3;
  8. int scalarBeforeArray;
  9. float floatArray[5];
  10. int scalarAfterArray;
  11. mat2x2 m22[9];
  12. };
  13. layout(std140, column_major) uniform c_nameless {
  14. vec3 c_anonMember1;
  15. mat3x2 c_m23;
  16. int c_scalarAfterm23;
  17. vec4 c_anonDeadMember2;
  18. vec4 c_anonMember3;
  19. };
  20. layout(std140) uniform named {
  21. vec3 deadMember1;
  22. int scalar;
  23. vec4 member2;
  24. vec4 member3;
  25. vec2 memvec2;
  26. float memf1;
  27. bool memf2;
  28. int memf3;
  29. vec2 memvec2a;
  30. mat2x2 m22[7];
  31. } ablock;
  32. layout(std140) uniform namelessdead {
  33. int a;
  34. };
  35. layout(std140) uniform namedDead {
  36. int b;
  37. } bblock;
  38. struct N1 {
  39. float a;
  40. };
  41. struct N2 {
  42. float b;
  43. float c;
  44. float d;
  45. };
  46. struct N3 {
  47. N1 n1;
  48. N2 n2;
  49. };
  50. layout(std140) uniform nested {
  51. N3 foo;
  52. } nest;
  53. layout(std140) uniform nested2 {
  54. vec4 padding; // offset 0, size 16
  55. N3 a; // offset 16, size 32
  56. N1 b[4]; // offset 48, size 64
  57. N1 c[2]; // offset 112, size 32
  58. N1 d[4]; // offset 144, size 64
  59. } nest2;
  60. struct TS {
  61. int a;
  62. int dead;
  63. };
  64. uniform TS s;
  65. uniform float uf1;
  66. uniform float uf2;
  67. uniform float ufDead3;
  68. uniform float ufDead4;
  69. uniform writeonly uimage2D image_ui2D;
  70. uniform sampler2D sampler_2D;
  71. uniform sampler2DMSArray sampler_2DMSArray;
  72. uniform mat2 dm22[10];
  73. struct deep1 {
  74. vec2 va[3];
  75. bool b;
  76. };
  77. struct deep2 {
  78. int i;
  79. deep1 d1[4];
  80. };
  81. struct deep3 {
  82. vec4 iv4;
  83. deep2 d2;
  84. ivec3 v3;
  85. };
  86. in float attributeFloat;
  87. layout(location = 2) in vec2 attributeFloat2;
  88. in vec3 attributeFloat3;
  89. in vec4 attributeFloat4;
  90. in mat4 attributeMat4;
  91. in float attributeFloatArray[3];
  92. uniform deep3 deepA[2], deepB[2], deepC[3], deepD[2];
  93. const bool control = true;
  94. void deadFunction()
  95. {
  96. vec3 v3 = ablock.deadMember1;
  97. vec4 v = anonDeadMember2;
  98. float f = ufDead4;
  99. }
  100. void liveFunction2()
  101. {
  102. vec3 v = anonMember1;
  103. float f = uf1;
  104. }
  105. void liveFunction1(writeonly uimage2D p_ui2D, sampler2D p_2D, sampler2DMSArray p_2DMSArray)
  106. {
  107. liveFunction2();
  108. float f = uf2;
  109. vec4 v = ablock.member3;
  110. }
  111. uniform abl {
  112. float foo;
  113. } arrBl[4];
  114. uniform abl2 {
  115. float foo;
  116. } arrBl2[4];
  117. buffer buf1 {
  118. float scalar;
  119. float runtimeArray[];
  120. } buf1i;
  121. buffer buf2 {
  122. float scalar;
  123. N2 runtimeArray[];
  124. } buf2i;
  125. buffer buf3 {
  126. float scalar;
  127. float runtimeArray[];
  128. } buf3i;
  129. buffer buf4 {
  130. float scalar;
  131. N2 runtimeArray[];
  132. } buf4i;
  133. struct VertexInfo {
  134. float position[3];
  135. float normal[3];
  136. };
  137. struct TriangleInfo {
  138. VertexInfo v[3];
  139. };
  140. buffer VertexCollection {
  141. TriangleInfo t[5];
  142. uint padding[10];
  143. };
  144. out float outval;
  145. void main()
  146. {
  147. liveFunction1(image_ui2D, sampler_2D, sampler_2DMSArray);
  148. liveFunction2();
  149. if (! control)
  150. deadFunction();
  151. float f;
  152. int i;
  153. if (control) {
  154. liveFunction2();
  155. f = anonMember3.z;
  156. f = s.a;
  157. f = ablock.scalar;
  158. f = m23[1].y + scalarAfterm23;
  159. f = c_m23[1].y + c_scalarAfterm23;
  160. f += scalarBeforeArray;
  161. f += floatArray[2];
  162. f += floatArray[4];
  163. f += scalarAfterArray;
  164. f += ablock.memvec2.x;
  165. f += ablock.memf1;
  166. f += float(ablock.memf2);
  167. f += ablock.memf3;
  168. f += ablock.memvec2a.y;
  169. f += ablock.m22[i][1][0];
  170. f += dm22[3][0][1];
  171. f += m22[2][1].y;
  172. f += nest.foo.n1.a + nest.foo.n2.b + nest.foo.n2.c + nest.foo.n2.d;
  173. f += deepA[i].d2.d1[2].va[1].x;
  174. f += deepB[1].d2.d1[i].va[1].x;
  175. f += deepB[i].d2.d1[i].va[1].x;
  176. deep3 d = deepC[1];
  177. deep3 da[2] = deepD;
  178. deep1 db = deepA[i].d2.d1[i];
  179. } else
  180. f = ufDead3;
  181. f += arrBl[2].foo + arrBl[0].foo;
  182. f += arrBl2[i].foo;
  183. f += attributeFloat;
  184. f += attributeFloat2.x;
  185. f += attributeFloat3.x;
  186. f += attributeFloat4.x;
  187. f += attributeMat4[0][1];
  188. f += attributeFloatArray[2];
  189. f += buf1i.runtimeArray[3];
  190. f += buf2i.runtimeArray[3].c;
  191. f += buf3i.runtimeArray[gl_InstanceID];
  192. f += buf4i.runtimeArray[gl_InstanceID].c;
  193. N3 n = nest2.a;
  194. N1 b[4] = nest2.b;
  195. f += nest2.c[1].a;
  196. f += nest2.d[gl_InstanceID].a;
  197. f += t[0].v[0].position[0];
  198. f += t[gl_InstanceID].v[gl_InstanceID].position[gl_InstanceID];
  199. f += t[gl_InstanceID].v[gl_InstanceID].normal[gl_InstanceID];
  200. TriangleInfo tlocal[5] = t;
  201. outval = f;
  202. }