Guest User

Untitled

a guest
Jan 16th, 2019
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.58 KB | None | 0 0
  1. / Debug Name:
  2. /*------------------- Shader -------------------*/
  3. #version 430 core
  4. #define EMULATION_UBO_BINDING 4
  5. #define CBUF_BINDING_3 5
  6. #define CBUF_BINDING_4 6
  7. #define SAMPLER_BINDING_0 0
  8. #extension GL_ARB_separate_shader_objects : enable
  9.  
  10. // Shader Unique Id: FS435890a6ff0950a1
  11.  
  12. #define MAX_CONSTBUFFER_ELEMENTS 4096
  13. #define MAX_GLOBALMEMORY_ELEMENTS 16384
  14. #define ftoi floatBitsToInt
  15. #define ftou floatBitsToUint
  16. #define itof intBitsToFloat
  17. #define utof uintBitsToFloat
  18.  
  19. float fromHalf2(vec2 pair) {
  20. return utof(packHalf2x16(pair));
  21. }
  22.  
  23. vec2 toHalf2(float value) {
  24. return unpackHalf2x16(ftou(value));
  25. }
  26.  
  27. layout (location = 0) out vec4 FragColor0;
  28. layout (location = 1) out vec4 FragColor1;
  29. layout (location = 2) out vec4 FragColor2;
  30. layout (location = 3) out vec4 FragColor3;
  31. layout (location = 4) out vec4 FragColor4;
  32. layout (location = 5) out vec4 FragColor5;
  33. layout (location = 6) out vec4 FragColor6;
  34. layout (location = 7) out vec4 FragColor7;
  35.  
  36. layout (location = 0) in vec4 position;
  37.  
  38. layout (std140, binding = EMULATION_UBO_BINDING) uniform fs_config {
  39. vec4 viewport_flip;
  40. uvec4 config_pack; // instance_id, flip_stage, y_direction, padding
  41. uvec4 alpha_test;
  42. };
  43.  
  44. bool AlphaFunc(in float value) {
  45. float ref = uintBitsToFloat(alpha_test[2]);
  46. switch (alpha_test[1]) {
  47. case 1:
  48. return false;
  49. case 2:
  50. return value < ref;
  51. case 3:
  52. return value == ref;
  53. case 4:
  54. return value <= ref;
  55. case 5:
  56. return value > ref;
  57. case 6:
  58. return value != ref;
  59. case 7:
  60. return value >= ref;
  61. case 8:
  62. return true;
  63. default:
  64. return false;
  65. }
  66. }
  67.  
  68. float gpr_0_fragment = 0;
  69. float gpr_1_fragment = 0;
  70. float gpr_2_fragment = 0;
  71. float gpr_3_fragment = 0;
  72. float gpr_4_fragment = 0;
  73. float gpr_5_fragment = 0;
  74. float gpr_6_fragment = 0;
  75. float gpr_7_fragment = 0;
  76. float gpr_8_fragment = 0;
  77. float gpr_9_fragment = 0;
  78. float gpr_10_fragment = 0;
  79. float gpr_11_fragment = 0;
  80. float gpr_12_fragment = 0;
  81. float gpr_256_fragment = 0;
  82. float gpr_257_fragment = 0;
  83. float gpr_258_fragment = 0;
  84. float gpr_259_fragment = 0;
  85.  
  86. bool pred_0_fragment = false;
  87.  
  88. bool zero_flag_fragment = false;
  89. bool sign_flag_fragment = false;
  90. bool carry_flag_fragment = false;
  91. bool overflow_flag_fragment = false;
  92.  
  93. layout (location = 1) in vec4 input_attr_0_fragment;
  94. layout (location = 2) in vec4 input_attr_1_fragment;
  95.  
  96. layout (std140, binding = CBUF_BINDING_3) uniform cbuf_block_3_fragment {
  97. vec4 cbuf_3_fragment[MAX_CONSTBUFFER_ELEMENTS];
  98. };
  99.  
  100. layout (std140, binding = CBUF_BINDING_4) uniform cbuf_block_4_fragment {
  101. vec4 cbuf_4_fragment[MAX_CONSTBUFFER_ELEMENTS];
  102. };
  103.  
  104. layout (binding = SAMPLER_BINDING_0) uniform sampler2DArray sampler_0_fragment;
  105.  
  106. void execute_fragment() {
  107. uint jmp_to = 10u;
  108. uint flow_stack[20];
  109. uint flow_stack_top = 0u;
  110. while (true) {
  111. switch (jmp_to) {
  112. case 0xau: {
  113. // 11: IPA (0xe003ff87cff7ff05)
  114. gpr_5_fragment = 1.0f;
  115. // 12: MUFU (0x5080000000470505)
  116. float tmp1 = (utof(0x3f800000u) / gpr_5_fragment);
  117. gpr_5_fragment = tmp1;
  118. // 13: IPA (0xe043ff898057ff06)
  119. gpr_6_fragment = input_attr_1_fragment.z;
  120. // 15: IPA (0xe043ff894057ff00)
  121. gpr_0_fragment = input_attr_1_fragment.y;
  122. // 16: IPA (0xe043ff890057ff03)
  123. gpr_3_fragment = input_attr_1_fragment.x;
  124. // 17: F2I_R (0x5cb0100000670902)
  125. float tmp2 = utof(uint(gpr_6_fragment));
  126. gpr_2_fragment = utof((ftou(utof((ftou(tmp2) << ftou(utof(0x10u))))) >> ftou(utof(0x10u))));
  127. // 19: TEXS (0xd8f2008020070200)
  128. gpr_256_fragment = texture(sampler_0_fragment, vec3(gpr_3_fragment, gpr_0_fragment, float(ftoi(gpr_2_fragment)))).x;
  129. gpr_257_fragment = texture(sampler_0_fragment, vec3(gpr_3_fragment, gpr_0_fragment, float(ftoi(gpr_2_fragment)))).y;
  130. gpr_258_fragment = texture(sampler_0_fragment, vec3(gpr_3_fragment, gpr_0_fragment, float(ftoi(gpr_2_fragment)))).z;
  131. gpr_259_fragment = texture(sampler_0_fragment, vec3(gpr_3_fragment, gpr_0_fragment, float(ftoi(gpr_2_fragment)))).w;
  132. gpr_0_fragment = gpr_256_fragment;
  133. gpr_1_fragment = gpr_257_fragment;
  134. gpr_2_fragment = gpr_258_fragment;
  135. gpr_3_fragment = gpr_259_fragment;
  136. // 20: IPA (0xe043ff88c057ff04)
  137. gpr_4_fragment = input_attr_0_fragment.w;
  138. // 21: FSETP_R (0x5bb383800ff70307)
  139. pred_0_fragment = ((gpr_3_fragment <= 0) && true);
  140. // 23: KIL (0xe33000000000000f)
  141. if (pred_0_fragment) {
  142. if (true) {
  143. discard;
  144. }
  145. }
  146. // 24: FSETP_R (0x5bb483800ff70407)
  147. pred_0_fragment = ((gpr_4_fragment > 0) && true);
  148. // 25: BRA (0xe24000001108000f)
  149. if (!(pred_0_fragment)) {
  150. jmp_to = 0x3cu;
  151. break;
  152. }
  153. // 27: ISETP_C (0x4b6503900007ff07)
  154. pred_0_fragment = ((ftoi(0) == ftoi(cbuf_4_fragment[0][0])) && true);
  155. // 28: IPA (0xe043ff880057ff08)
  156. gpr_8_fragment = input_attr_0_fragment.x;
  157. // 29: MOV_C (0x4c98078c01070009)
  158. gpr_9_fragment = cbuf_3_fragment[4][0];
  159. // 31: IPA (0xe043ff884057ff06)
  160. gpr_6_fragment = input_attr_0_fragment.y;
  161. // 32: MOV_C (0x4c98078c0157000a)
  162. gpr_10_fragment = cbuf_3_fragment[5][1];
  163. // 33: IPA (0xe043ff888057ff07)
  164. gpr_7_fragment = input_attr_0_fragment.z;
  165. // 35: MOV_C (0x4c98078c0117000b)
  166. gpr_11_fragment = cbuf_3_fragment[4][1];
  167. // 36: MOV32_IMM (0x0103f8000000f009)
  168. if (pred_0_fragment) {
  169. gpr_9_fragment = utof(0x3f800000u);
  170. }
  171. // 37: MOV_R (0x5c9807800ff0000a)
  172. if (pred_0_fragment) {
  173. gpr_10_fragment = 0;
  174. }
  175. // 39: MOV_R (0x5c9807800090000b)
  176. if (pred_0_fragment) {
  177. gpr_11_fragment = gpr_9_fragment;
  178. }
  179. // 40: MOV_C (0x4c98078c0127000c)
  180. gpr_12_fragment = cbuf_3_fragment[4][2];
  181. // 41: MOV_R (0x5c9807800090000c)
  182. if (pred_0_fragment) {
  183. gpr_12_fragment = gpr_9_fragment;
  184. }
  185. // 43: FFMA_RR (0x59a0050000b70101)
  186. float tmp3 = fma(gpr_1_fragment, gpr_11_fragment, gpr_10_fragment);
  187. gpr_1_fragment = tmp3;
  188. // 44: MOV_C (0x4c98078c0147000a)
  189. gpr_10_fragment = cbuf_3_fragment[5][0];
  190. // 45: MOV_C (0x4c98078c0167000b)
  191. gpr_11_fragment = cbuf_3_fragment[5][2];
  192. // 47: MOV_R (0x5c9807800ff0000a)
  193. if (pred_0_fragment) {
  194. gpr_10_fragment = 0;
  195. }
  196. // 48: MOV_R (0x5c9807800ff0000b)
  197. if (pred_0_fragment) {
  198. gpr_11_fragment = 0;
  199. }
  200. // 49: FMUL_C (0x4c68100c01370303)
  201. float tmp4 = (gpr_3_fragment * cbuf_3_fragment[4][3]);
  202. gpr_3_fragment = tmp4;
  203. // 51: FFMA_RR (0x59a0050000970009)
  204. float tmp5 = fma(gpr_0_fragment, gpr_9_fragment, gpr_10_fragment);
  205. gpr_9_fragment = tmp5;
  206. // 52: FFMA_RR (0x59a0058000c70202)
  207. float tmp6 = fma(gpr_2_fragment, gpr_12_fragment, gpr_11_fragment);
  208. gpr_2_fragment = tmp6;
  209. // 53: FMUL_R (0x5c68100000370403)
  210. float tmp7 = (gpr_4_fragment * gpr_3_fragment);
  211. gpr_3_fragment = tmp7;
  212. // 55: FMUL_R (0x5c68100000670101)
  213. float tmp8 = (gpr_1_fragment * gpr_6_fragment);
  214. gpr_1_fragment = tmp8;
  215. // 56: FMUL_R (0x5c68100000870900)
  216. float tmp9 = (gpr_9_fragment * gpr_8_fragment);
  217. gpr_0_fragment = tmp9;
  218. // 57: FMUL_R (0x5c68100000770202)
  219. float tmp10 = (gpr_2_fragment * gpr_7_fragment);
  220. gpr_2_fragment = tmp10;
  221. // 59: EXIT (0xe30000000007000f)
  222. if (alpha_test[0] != 0) {
  223. if (!AlphaFunc(gpr_3_fragment)) discard;
  224. }
  225. FragColor0[0] = gpr_0_fragment;
  226. FragColor0[1] = gpr_1_fragment;
  227. FragColor0[2] = gpr_2_fragment;
  228. FragColor0[3] = gpr_3_fragment;
  229. return;
  230. }
  231. case 0x3cu: {
  232. // 60: MOV_C (0x4c98078c01870009)
  233. gpr_9_fragment = cbuf_3_fragment[6][0];
  234. // 61: IPA (0xe043ff880057ff08)
  235. gpr_8_fragment = input_attr_0_fragment.x;
  236. // 63: MOV_C (0x4c98078c0197000a)
  237. gpr_10_fragment = cbuf_3_fragment[6][1];
  238. // 64: IPA (0xe043ff884057ff07)
  239. gpr_7_fragment = input_attr_0_fragment.y;
  240. // 65: MOV_C (0x4c98078c01a7000b)
  241. gpr_11_fragment = cbuf_3_fragment[6][2];
  242. // 67: IPA (0xe043ff888057ff06)
  243. gpr_6_fragment = input_attr_0_fragment.z;
  244. // 68: FMUL_C (0x4c68100c01b70303)
  245. float tmp11 = (gpr_3_fragment * cbuf_3_fragment[6][3]);
  246. gpr_3_fragment = tmp11;
  247. // 69: FFMA_RC (0x51a0048c01c70009)
  248. float tmp12 = fma(gpr_0_fragment, gpr_9_fragment, cbuf_3_fragment[7][0]);
  249. gpr_9_fragment = tmp12;
  250. // 71: FFMA_RC (0x51a0050c01d70101)
  251. float tmp13 = fma(gpr_1_fragment, gpr_10_fragment, cbuf_3_fragment[7][1]);
  252. gpr_1_fragment = tmp13;
  253. // 72: FFMA_RC (0x51a0058c01e7020b)
  254. float tmp14 = fma(gpr_2_fragment, gpr_11_fragment, cbuf_3_fragment[7][2]);
  255. gpr_11_fragment = tmp14;
  256. // 73: FMUL_R (0x5c69100000370403)
  257. float tmp15 = (-(gpr_3_fragment));
  258. float tmp16 = (gpr_4_fragment * tmp15);
  259. gpr_3_fragment = tmp16;
  260. // 75: FMUL_R (0x5c68100000970800)
  261. float tmp17 = (gpr_8_fragment * gpr_9_fragment);
  262. gpr_0_fragment = tmp17;
  263. // 76: FMUL_R (0x5c68100000170701)
  264. float tmp18 = (gpr_7_fragment * gpr_1_fragment);
  265. gpr_1_fragment = tmp18;
  266. // 77: FMUL_R (0x5c68100000b70602)
  267. float tmp19 = (gpr_6_fragment * gpr_11_fragment);
  268. gpr_2_fragment = tmp19;
  269. // 79: EXIT (0xe30000000007000f)
  270. if (alpha_test[0] != 0) {
  271. if (!AlphaFunc(gpr_3_fragment)) discard;
  272. }
  273. FragColor0[0] = gpr_0_fragment;
  274. FragColor0[1] = gpr_1_fragment;
  275. FragColor0[2] = gpr_2_fragment;
  276. FragColor0[3] = gpr_3_fragment;
  277. return;
  278. }
  279. default: return;
  280. }
  281. }
  282. }
  283.  
  284. void main() {
  285. execute_fragment();
  286. }
Add Comment
Please, Sign In to add comment