reflection.vert 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  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. struct TS {
  54. int a;
  55. int dead;
  56. };
  57. uniform TS s;
  58. uniform float uf1;
  59. uniform float uf2;
  60. uniform float ufDead3;
  61. uniform float ufDead4;
  62. uniform writeonly uimage2D image_ui2D;
  63. uniform sampler2D sampler_2D;
  64. uniform sampler2DMSArray sampler_2DMSArray;
  65. uniform mat2 dm22[10];
  66. struct deep1 {
  67. vec2 va[3];
  68. bool b;
  69. };
  70. struct deep2 {
  71. int i;
  72. deep1 d1[4];
  73. };
  74. struct deep3 {
  75. vec4 iv4;
  76. deep2 d2;
  77. ivec3 v3;
  78. };
  79. in float attributeFloat;
  80. layout(location = 2) in vec2 attributeFloat2;
  81. in vec3 attributeFloat3;
  82. in vec4 attributeFloat4;
  83. in mat4 attributeMat4;
  84. uniform deep3 deepA[2], deepB[2], deepC[3], deepD[2];
  85. const bool control = true;
  86. void deadFunction()
  87. {
  88. vec3 v3 = ablock.deadMember1;
  89. vec4 v = anonDeadMember2;
  90. float f = ufDead4;
  91. }
  92. void liveFunction2()
  93. {
  94. vec3 v = anonMember1;
  95. float f = uf1;
  96. }
  97. void liveFunction1(writeonly uimage2D p_ui2D, sampler2D p_2D, sampler2DMSArray p_2DMSArray)
  98. {
  99. liveFunction2();
  100. float f = uf2;
  101. vec4 v = ablock.member3;
  102. }
  103. uniform abl {
  104. float foo;
  105. } arrBl[4];
  106. uniform abl2 {
  107. float foo;
  108. } arrBl2[4];
  109. buffer buf1 {
  110. float scalar;
  111. float runtimeArray[];
  112. } buf1i;
  113. buffer buf2 {
  114. float scalar;
  115. N2 runtimeArray[];
  116. } buf2i;
  117. buffer buf3 {
  118. float scalar;
  119. float runtimeArray[];
  120. } buf3i;
  121. buffer buf4 {
  122. float scalar;
  123. N2 runtimeArray[];
  124. } buf4i;
  125. void main()
  126. {
  127. liveFunction1(image_ui2D, sampler_2D, sampler_2DMSArray);
  128. liveFunction2();
  129. if (! control)
  130. deadFunction();
  131. float f;
  132. int i;
  133. if (control) {
  134. liveFunction2();
  135. f = anonMember3.z;
  136. f = s.a;
  137. f = ablock.scalar;
  138. f = m23[1].y + scalarAfterm23;
  139. f = c_m23[1].y + c_scalarAfterm23;
  140. f += scalarBeforeArray;
  141. f += floatArray[2];
  142. f += floatArray[4];
  143. f += scalarAfterArray;
  144. f += ablock.memvec2.x;
  145. f += ablock.memf1;
  146. f += float(ablock.memf2);
  147. f += ablock.memf3;
  148. f += ablock.memvec2a.y;
  149. f += ablock.m22[i][1][0];
  150. f += dm22[3][0][1];
  151. f += m22[2][1].y;
  152. f += nest.foo.n1.a + nest.foo.n2.b + nest.foo.n2.c + nest.foo.n2.d;
  153. f += deepA[i].d2.d1[2].va[1].x;
  154. f += deepB[1].d2.d1[i].va[1].x;
  155. f += deepB[i].d2.d1[i].va[1].x;
  156. deep3 d = deepC[1];
  157. deep3 da[2] = deepD;
  158. } else
  159. f = ufDead3;
  160. f += arrBl[2].foo + arrBl[0].foo;
  161. f += arrBl2[i].foo;
  162. f += attributeFloat;
  163. f += attributeFloat2.x;
  164. f += attributeFloat3.x;
  165. f += attributeFloat4.x;
  166. f += attributeMat4[0][1];
  167. f += buf1i.runtimeArray[3];
  168. f += buf2i.runtimeArray[3].c;
  169. f += buf3i.runtimeArray[gl_InstanceID];
  170. f += buf4i.runtimeArray[gl_InstanceID].c;
  171. }