Advertisement
Hexagon12

Undertale IR

Dec 26th, 2018
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.17 KB | None | 0 0
  1. [ 21.821135] Render.OpenGL <Error> video_core\renderer_opengl\gl_shader_util.cpp:LoadShader:44: Error compiling fragment shader:
  2. 0(100) : error C0000: syntax error, unexpected identifier, expecting ',' or ';' at token "gpr_3_fragment"
  3. [ 21.821868] Render.OpenGL <Error> video_core\renderer_opengl\gl_shader_util.h:LoadProgram:76: Error linking shader:
  4. Fragment info
  5. -------------
  6. 0(100) : error C0000: syntax error, unexpected identifier, expecting ',' or ';' at token "gpr_3_fragment"
  7. (0) : error C2003: incompatible options for link
  8. [ 21.821882] Render.OpenGL <Info> video_core\renderer_opengl\gl_shader_util.h:LogShaderSource:32: Shader source #version 430 core
  9. #extension GL_ARB_separate_shader_objects : enable
  10.  
  11. // Shader Unique Id: FSfb1b236bd01eb7e6
  12.  
  13. #define MAX_CONSTBUFFER_ELEMENTS 4096
  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) 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.  
  78. bool zero_flag_fragment = false;
  79. bool sign_flag_fragment = false;
  80. bool carry_flag_fragment = false;
  81. bool overflow_flag_fragment = false;
  82.  
  83. layout (location = 1) in vec4 input_attr_0_fragment;
  84. layout (location = 2) in vec4 input_attr_1_fragment;
  85.  
  86. uniform sampler2D sampler_0_fragment;
  87.  
  88. void execute_fragment() {
  89. uint jmp_to = 10u;
  90. uint flow_stack[20];
  91. uint flow_stack_top = 0u;
  92. while (true) {
  93. switch (jmp_to) {
  94. case 0xau: {
  95. // 11: IPA (0xe003ff87cff7ff07)
  96. gpr_7_fragment = 1.0f;
  97. // 12: MUFU (0x5080000000470707)
  98. float tmp1 = (utof(0x3f800000u) / gpr_7_fragment);
  99. gpr_7_fragment = tmp1;
  100. // 13: IPA (0xe043ff880077ff04)
  101. gpr_4_fragment = input_attr_0_fragment.x;
  102. // 15: IPA (0xe043ff884077ff05)
  103. gpr_5_fragment = input_attr_0_fragment.y;
  104. // 16: TEXS (0xd032008030570401)
  105. vec4 tmp2 = texture(sampler_0_fragment, vec2(gpr_4_fragment, gpr_5_fragment));
  106. gpr_1_fragment = utof(packHalf2x16(vec2(tmp2[0], tmp2[1])))
  107. gpr_3_fragment = utof(packHalf2x16(vec2(tmp2[2], tmp2[3])))
  108. // 17: IPA (0xe043ff890077ff00)
  109. gpr_0_fragment = input_attr_1_fragment.x;
  110. // 19: IPA (0xe043ff894077ff02)
  111. gpr_2_fragment = input_attr_1_fragment.y;
  112. // 20: IPA (0xe043ff898077ff06)
  113. gpr_6_fragment = input_attr_1_fragment.z;
  114. // 21: IPA (0xe043ff89c077ff08)
  115. gpr_8_fragment = input_attr_1_fragment.w;
  116. // 23: HMUL2_R (0x5d0a800020170000)
  117. float tmp3 = fromHalf2((vec2(gpr_0_fragment) * vec2(toHalf2(gpr_1_fragment)[0])));
  118. gpr_0_fragment = float(toHalf2(tmp3)[0]);
  119. // 24: HMUL2_R (0x5d0a800030170201)
  120. float tmp4 = fromHalf2((vec2(gpr_2_fragment) * vec2(toHalf2(gpr_1_fragment)[1])));
  121. gpr_1_fragment = float(toHalf2(tmp4)[0]);
  122. // 25: HMUL2_R (0x5d0a800020370602)
  123. float tmp5 = fromHalf2((vec2(gpr_6_fragment) * vec2(toHalf2(gpr_3_fragment)[0])));
  124. gpr_2_fragment = float(toHalf2(tmp5)[0]);
  125. // 27: HMUL2_R (0x5d0a800030370803)
  126. float tmp6 = fromHalf2((vec2(gpr_8_fragment) * vec2(toHalf2(gpr_3_fragment)[1])));
  127. gpr_3_fragment = float(toHalf2(tmp6)[0]);
  128. // 28: EXIT (0xe30000000007000f)
  129. if (alpha_test[0] != 0) {
  130. if (!AlphaFunc(gpr_3_fragment)) discard;
  131. }
  132. FragColor0[0] = gpr_0_fragment;
  133. FragColor0[1] = gpr_1_fragment;
  134. FragColor0[2] = gpr_2_fragment;
  135. FragColor0[3] = gpr_3_fragment;
  136. return;
  137. }
  138. default: return;
  139. }
  140. }
  141. }
  142.  
  143. void main() {
  144. execute_fragment();
  145. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement