|
| 1 | +#version 430 |
| 2 | +#extension GL_ARB_texture_gather : enable |
| 3 | +#extension GL_ARB_separate_shader_objects : enable |
| 4 | +#ifdef VULKAN |
| 5 | +#define ATTR_LAYOUT(__vkSet, __location) layout(set = __vkSet, location = __location) |
| 6 | +#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation, std140) |
| 7 | +#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation) |
| 8 | +#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale.xy,gl_FragCoord.zw) |
| 9 | +#else |
| 10 | +#define ATTR_LAYOUT(__vkSet, __location) layout(location = __location) |
| 11 | +#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation, std140) |
| 12 | +#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation) |
| 13 | +#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale,gl_FragCoord.zw) |
| 14 | +#endif |
| 15 | +#ifdef VULKAN |
| 16 | +layout(set = 1, binding = 2) uniform ufBlock |
| 17 | +{ |
| 18 | +uniform ivec4 uf_remappedPS[3]; |
| 19 | +uniform vec4 uf_fragCoordScale; |
| 20 | +}; |
| 21 | +#else |
| 22 | +uniform ivec4 uf_remappedPS[3]; |
| 23 | +uniform vec2 uf_fragCoordScale; |
| 24 | +#endif |
| 25 | + |
| 26 | + |
| 27 | + |
| 28 | + |
| 29 | + |
| 30 | + |
| 31 | + |
| 32 | +// shader 023831cdf6638473 |
| 33 | +//ps aa restore |
| 34 | +const float resScale = (float($width)/float($gameWidth)); |
| 35 | + |
| 36 | + |
| 37 | + |
| 38 | +TEXTURE_LAYOUT(0, 1, 0) uniform sampler2D textureUnitPS0; // Tex0 addr 0xf531c800 res 1920x1080x1 dim 1 tm: 4 format 001a compSel: 0 1 2 3 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 2 2 2 border: 0 |
| 39 | +TEXTURE_LAYOUT(3, 1, 1) uniform sampler2D textureUnitPS3; // Tex3 addr 0xf5b14800 res 480x270x1 dim 1 tm: 4 format 001a compSel: 0 1 2 3 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler3 ClampX/Y/Z: 0 0 0 border: 0 |
| 40 | +layout(location = 0) in vec4 passParameterSem129; |
| 41 | +layout(location = 1) in vec4 passParameterSem128; |
| 42 | +layout(location = 0) out vec4 passPixelColor0; |
| 43 | +// end of shader inputs/outputs |
| 44 | +int clampFI32(int v) |
| 45 | +{ |
| 46 | +if( v == 0x7FFFFFFF ) |
| 47 | + return floatBitsToInt(1.0); |
| 48 | +else if( v == 0xFFFFFFFF ) |
| 49 | + return floatBitsToInt(0.0); |
| 50 | +return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0)); |
| 51 | +} |
| 52 | +float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; } |
| 53 | +void main() |
| 54 | +{ |
| 55 | +ivec4 R0i = ivec4(0); |
| 56 | +ivec4 R1i = ivec4(0); |
| 57 | +ivec4 R2i = ivec4(0); |
| 58 | +ivec4 R3i = ivec4(0); |
| 59 | +ivec4 R4i = ivec4(0); |
| 60 | +ivec4 R5i = ivec4(0); |
| 61 | +ivec4 R6i = ivec4(0); |
| 62 | +ivec4 R123i = ivec4(0); |
| 63 | +ivec4 R126i = ivec4(0); |
| 64 | +ivec4 R127i = ivec4(0); |
| 65 | +int backupReg0i, backupReg1i, backupReg2i, backupReg3i, backupReg4i; |
| 66 | +ivec4 PV0i = ivec4(0), PV1i = ivec4(0); |
| 67 | +int PS0i = 0, PS1i = 0; |
| 68 | +ivec4 tempi = ivec4(0); |
| 69 | +float tempResultf; |
| 70 | +int tempResulti; |
| 71 | +ivec4 ARi = ivec4(0); |
| 72 | +bool predResult = true; |
| 73 | +bool activeMaskStack[2]; |
| 74 | +bool activeMaskStackC[3]; |
| 75 | +activeMaskStack[0] = false; |
| 76 | +activeMaskStackC[0] = false; |
| 77 | +activeMaskStackC[1] = false; |
| 78 | +activeMaskStack[0] = true; |
| 79 | +activeMaskStackC[0] = true; |
| 80 | +activeMaskStackC[1] = true; |
| 81 | +vec3 cubeMapSTM; |
| 82 | +int cubeMapFaceId; |
| 83 | +R0i = floatBitsToInt(passParameterSem129); |
| 84 | +R1i = floatBitsToInt(passParameterSem128); |
| 85 | +if( activeMaskStackC[1] == true ) { |
| 86 | +R2i.w = floatBitsToInt(textureLod(textureUnitPS0, intBitsToFloat(R0i.zy),0.0).y); |
| 87 | +R2i.z = floatBitsToInt(textureLod(textureUnitPS0, intBitsToFloat(R0i.xw),0.0).y); |
| 88 | +R2i.y = floatBitsToInt(textureLod(textureUnitPS0, intBitsToFloat(R0i.xy),0.0).y); |
| 89 | +R0i.x = floatBitsToInt(textureLod(textureUnitPS0, intBitsToFloat(R0i.zw),0.0).y); |
| 90 | +R3i.xyzw = floatBitsToInt(textureLod(textureUnitPS0, intBitsToFloat(R1i.xy),0.0).xyzw); |
| 91 | +} |
| 92 | +if( activeMaskStackC[1] == true ) { |
| 93 | +activeMaskStack[1] = activeMaskStack[0]; |
| 94 | +activeMaskStackC[2] = activeMaskStackC[1]; |
| 95 | +// 0 |
| 96 | +R127i.x = floatBitsToInt(max(intBitsToFloat(R2i.z), intBitsToFloat(R2i.y))); |
| 97 | +R127i.y = floatBitsToInt(min(intBitsToFloat(R2i.z), intBitsToFloat(R2i.y))); |
| 98 | +PV0i.w = floatBitsToInt(intBitsToFloat(R2i.w) + intBitsToFloat(0x3b2aaaab)); |
| 99 | +R0i.y = 0; |
| 100 | +PS0i = R0i.y; |
| 101 | +// 1 |
| 102 | +backupReg0i = R0i.x; |
| 103 | +backupReg0i = R0i.x; |
| 104 | +PV1i.x = floatBitsToInt(min(intBitsToFloat(PV0i.w), intBitsToFloat(backupReg0i))); |
| 105 | +PV1i.y = floatBitsToInt(-(intBitsToFloat(PV0i.w)) + intBitsToFloat(R2i.z)); |
| 106 | +PV1i.z = floatBitsToInt(max(intBitsToFloat(PV0i.w), intBitsToFloat(backupReg0i))); |
| 107 | +// 2 |
| 108 | +PV0i.y = floatBitsToInt(intBitsToFloat(PV1i.y) + -(intBitsToFloat(R2i.y))); |
| 109 | +R5i.z = floatBitsToInt(min(intBitsToFloat(R127i.y), intBitsToFloat(PV1i.x))); |
| 110 | +PV0i.z = R5i.z; |
| 111 | +PV0i.w = floatBitsToInt(intBitsToFloat(PV1i.y) + intBitsToFloat(R2i.y)); |
| 112 | +R6i.z = floatBitsToInt(max(intBitsToFloat(R127i.x), intBitsToFloat(PV1i.z))); |
| 113 | +PS0i = R6i.z; |
| 114 | +// 3 |
| 115 | +backupReg0i = R0i.x; |
| 116 | +backupReg0i = R0i.x; |
| 117 | +PV1i.x = floatBitsToInt(max(intBitsToFloat(R3i.y), intBitsToFloat(PS0i))); |
| 118 | +PV1i.y = floatBitsToInt(min(intBitsToFloat(R3i.y), intBitsToFloat(PV0i.z))); |
| 119 | +R0i.z = floatBitsToInt(intBitsToFloat(PV0i.w) + -(intBitsToFloat(backupReg0i))); |
| 120 | +PV1i.w = floatBitsToInt(intBitsToFloat(PS0i) * intBitsToFloat(0x3e000000)); |
| 121 | +R0i.x = floatBitsToInt(intBitsToFloat(PV0i.y) + intBitsToFloat(backupReg0i)); |
| 122 | +PS1i = R0i.x; |
| 123 | +// 4 |
| 124 | +PV0i.y = floatBitsToInt(-(intBitsToFloat(PV1i.y)) + intBitsToFloat(PV1i.x)); |
| 125 | +PV0i.z = floatBitsToInt(max(intBitsToFloat(PV1i.w), intBitsToFloat(0x3d4ccccd))); |
| 126 | +// 5 |
| 127 | +PV1i.x = ((intBitsToFloat(PV0i.z) > intBitsToFloat(PV0i.y))?int(0xFFFFFFFF):int(0x0)); |
| 128 | +// 6 |
| 129 | +R2i.x = ((PV1i.x == 0)?(0):(R3i.x)); |
| 130 | +R2i.y = ((PV1i.x == 0)?(0):(R3i.y)); |
| 131 | +R2i.z = ((PV1i.x == 0)?(0):(R3i.z)); |
| 132 | +R2i.w = ((PV1i.x == 0)?(0):(R3i.w)); |
| 133 | +R0i.w = ((PV1i.x == 0)?(0):(0x3f800000)); |
| 134 | +PS0i = R0i.w; |
| 135 | +// 7 |
| 136 | +predResult = (R0i.w == 0); |
| 137 | +activeMaskStack[1] = predResult; |
| 138 | +activeMaskStackC[2] = predResult == true && activeMaskStackC[1] == true; |
| 139 | +} |
| 140 | +else { |
| 141 | +activeMaskStack[1] = false; |
| 142 | +activeMaskStackC[2] = false; |
| 143 | +} |
| 144 | +if( activeMaskStackC[2] == true ) { |
| 145 | +// 0 |
| 146 | +backupReg0i = R0i.x; |
| 147 | +backupReg0i = R0i.x; |
| 148 | +backupReg1i = R0i.y; |
| 149 | +backupReg1i = R0i.y; |
| 150 | +backupReg2i = R0i.z; |
| 151 | +backupReg2i = R0i.z; |
| 152 | +tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(backupReg0i),intBitsToFloat(backupReg1i),intBitsToFloat(backupReg2i),-0.0),vec4(intBitsToFloat(backupReg0i),intBitsToFloat(backupReg1i),intBitsToFloat(backupReg2i),0.0))); |
| 153 | +PV0i.x = tempi.x; |
| 154 | +PV0i.y = tempi.x; |
| 155 | +PV0i.z = tempi.x; |
| 156 | +PV0i.w = tempi.x; |
| 157 | +// 1 |
| 158 | +tempResultf = 1.0 / sqrt(intBitsToFloat(PV0i.x)); |
| 159 | +PS1i = floatBitsToInt(tempResultf); |
| 160 | +// 2 |
| 161 | +R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.z), intBitsToFloat(PS1i))); |
| 162 | +PV0i.z = R127i.z; |
| 163 | +R127i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.x), intBitsToFloat(PS1i))); |
| 164 | +PV0i.w = R127i.w; |
| 165 | +// 3 |
| 166 | +PV1i.x = floatBitsToInt(max(intBitsToFloat(PV0i.z), -(intBitsToFloat(PV0i.z)))); |
| 167 | +PV1i.y = floatBitsToInt(max(intBitsToFloat(PV0i.w), -(intBitsToFloat(PV0i.w)))); |
| 168 | +PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.w), intBitsToFloat(uf_remappedPS[0].z) / resScale)); ///////// |
| 169 | +PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.z), intBitsToFloat(uf_remappedPS[0].w) / resScale)); ///////////// |
| 170 | +// 4 |
| 171 | +R0i.x = floatBitsToInt(intBitsToFloat(R1i.x) + -(intBitsToFloat(PV1i.z))); |
| 172 | +R0i.y = floatBitsToInt(intBitsToFloat(R1i.y) + -(intBitsToFloat(PV1i.w))); |
| 173 | +R2i.z = floatBitsToInt(intBitsToFloat(R1i.x) + intBitsToFloat(PV1i.z)); |
| 174 | +PV0i.w = floatBitsToInt(min(intBitsToFloat(PV1i.y), intBitsToFloat(PV1i.x))); |
| 175 | +R2i.y = floatBitsToInt(intBitsToFloat(R1i.y) + intBitsToFloat(PV1i.w)); |
| 176 | +PS0i = R2i.y; |
| 177 | +// 5 |
| 178 | +PV1i.z = floatBitsToInt(intBitsToFloat(PV0i.w) * intBitsToFloat(0x41000000) / resScale); ////////// |
| 179 | +// 6 |
| 180 | +PS0i = floatBitsToInt(1.0 / intBitsToFloat(PV1i.z)); |
| 181 | +// 7 |
| 182 | +PV1i.x = floatBitsToInt(intBitsToFloat(R127i.w) * intBitsToFloat(PS0i)); |
| 183 | +PV1i.w = floatBitsToInt(intBitsToFloat(R127i.z) * intBitsToFloat(PS0i)); |
| 184 | +// 8 |
| 185 | +PV0i.y = floatBitsToInt(max(intBitsToFloat(PV1i.w), intBitsToFloat(0xc0000000) / resScale)); ////////// |
| 186 | +PV0i.z = floatBitsToInt(max(intBitsToFloat(PV1i.x), intBitsToFloat(0xc0000000) / resScale)); ////////// |
| 187 | +// 9 |
| 188 | +PV1i.x = floatBitsToInt(min(intBitsToFloat(PV0i.z), 2.0)); |
| 189 | +PV1i.w = floatBitsToInt(min(intBitsToFloat(PV0i.y), 2.0)); |
| 190 | +// 10 |
| 191 | +PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.x), intBitsToFloat(uf_remappedPS[1].x) / resScale)); ///////////////// |
| 192 | +PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.w), intBitsToFloat(uf_remappedPS[1].y) / resScale)); /////////////// |
| 193 | +// 11 |
| 194 | +R3i.x = floatBitsToInt(intBitsToFloat(R1i.x) + -(intBitsToFloat(PV0i.z))); |
| 195 | +R3i.y = floatBitsToInt(intBitsToFloat(R1i.y) + -(intBitsToFloat(PV0i.w))); |
| 196 | +R0i.z = floatBitsToInt(intBitsToFloat(R1i.x) + intBitsToFloat(PV0i.z)); |
| 197 | +R0i.w = floatBitsToInt(intBitsToFloat(R1i.y) + intBitsToFloat(PV0i.w)); |
| 198 | +} |
| 199 | +if( activeMaskStackC[2] == true ) { |
| 200 | +R4i.xyzw = floatBitsToInt(textureLod(textureUnitPS0, intBitsToFloat(R0i.xy),0.0).xyzw); |
| 201 | +R2i.xyzw = floatBitsToInt(textureLod(textureUnitPS0, intBitsToFloat(R2i.zy),0.0).xyzw); |
| 202 | +R3i.xyzw = floatBitsToInt(textureLod(textureUnitPS0, intBitsToFloat(R3i.xy),0.0).xyzw); |
| 203 | +R0i.xyzw = floatBitsToInt(textureLod(textureUnitPS0, intBitsToFloat(R0i.zw),0.0).xyzw); |
| 204 | +} |
| 205 | +if( activeMaskStackC[2] == true ) { |
| 206 | +// 0 |
| 207 | +R126i.x = floatBitsToInt(intBitsToFloat(R4i.z) + intBitsToFloat(R2i.z)); |
| 208 | +R126i.x = floatBitsToInt(intBitsToFloat(R126i.x) / 2.0); |
| 209 | +R126i.y = floatBitsToInt(intBitsToFloat(R4i.y) + intBitsToFloat(R2i.y)); |
| 210 | +R126i.y = floatBitsToInt(intBitsToFloat(R126i.y) / 2.0); |
| 211 | +R126i.z = floatBitsToInt(intBitsToFloat(R4i.x) + intBitsToFloat(R2i.x)); |
| 212 | +R126i.z = floatBitsToInt(intBitsToFloat(R126i.z) / 2.0); |
| 213 | +R126i.w = floatBitsToInt(intBitsToFloat(R4i.w) + intBitsToFloat(R2i.w)); |
| 214 | +R126i.w = floatBitsToInt(intBitsToFloat(R126i.w) / 2.0); |
| 215 | +// 1 |
| 216 | +backupReg0i = R0i.y; |
| 217 | +backupReg1i = R0i.x; |
| 218 | +backupReg2i = R0i.w; |
| 219 | +PV1i.x = floatBitsToInt(intBitsToFloat(R3i.z) + intBitsToFloat(R0i.z)); |
| 220 | +PV1i.x = floatBitsToInt(intBitsToFloat(PV1i.x) / 2.0); |
| 221 | +PV1i.y = floatBitsToInt(intBitsToFloat(R3i.y) + intBitsToFloat(backupReg0i)); |
| 222 | +PV1i.y = floatBitsToInt(intBitsToFloat(PV1i.y) / 2.0); |
| 223 | +PV1i.z = floatBitsToInt(intBitsToFloat(R3i.x) + intBitsToFloat(backupReg1i)); |
| 224 | +PV1i.z = floatBitsToInt(intBitsToFloat(PV1i.z) / 2.0); |
| 225 | +PV1i.w = floatBitsToInt(intBitsToFloat(R3i.w) + intBitsToFloat(backupReg2i)); |
| 226 | +PV1i.w = floatBitsToInt(intBitsToFloat(PV1i.w) / 2.0); |
| 227 | +// 2 |
| 228 | +R127i.x = floatBitsToInt(intBitsToFloat(R126i.x) + intBitsToFloat(PV1i.x)); |
| 229 | +R127i.x = floatBitsToInt(intBitsToFloat(R127i.x) / 2.0); |
| 230 | +R127i.y = floatBitsToInt(intBitsToFloat(R126i.y) + intBitsToFloat(PV1i.y)); |
| 231 | +R127i.y = floatBitsToInt(intBitsToFloat(R127i.y) / 2.0); |
| 232 | +PV0i.y = R127i.y; |
| 233 | +R127i.z = floatBitsToInt(intBitsToFloat(R126i.z) + intBitsToFloat(PV1i.z)); |
| 234 | +R127i.z = floatBitsToInt(intBitsToFloat(R127i.z) / 2.0); |
| 235 | +R127i.w = floatBitsToInt(intBitsToFloat(R126i.w) + intBitsToFloat(PV1i.w)); |
| 236 | +R127i.w = floatBitsToInt(intBitsToFloat(R127i.w) / 2.0); |
| 237 | +// 3 |
| 238 | +PV1i.y = ((intBitsToFloat(PV0i.y) > intBitsToFloat(R6i.z))?int(0xFFFFFFFF):int(0x0)); |
| 239 | +PV1i.z = ((intBitsToFloat(R5i.z) > intBitsToFloat(PV0i.y))?int(0xFFFFFFFF):int(0x0)); |
| 240 | +// 4 |
| 241 | +R123i.x = ((PV1i.z == 0)?(PV1i.y):(int(-1))); |
| 242 | +PV0i.x = R123i.x; |
| 243 | +// 5 |
| 244 | +R2i.x = ((PV0i.x == 0)?(R127i.z):(R126i.z)); |
| 245 | +R2i.y = ((PV0i.x == 0)?(R127i.y):(R126i.y)); |
| 246 | +R2i.z = ((PV0i.x == 0)?(R127i.x):(R126i.x)); |
| 247 | +R2i.w = ((PV0i.x == 0)?(R127i.w):(R126i.w)); |
| 248 | +} |
| 249 | +activeMaskStackC[1] = activeMaskStack[0] == true && activeMaskStackC[0] == true; |
| 250 | +if( activeMaskStackC[1] == true ) { |
| 251 | +R1i.xyzw = floatBitsToInt(texture(textureUnitPS3, intBitsToFloat(R1i.zw)).xyzw); |
| 252 | +} |
| 253 | +if( activeMaskStackC[1] == true ) { |
| 254 | +// 0 |
| 255 | +PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.w), intBitsToFloat(R1i.w))); |
| 256 | +PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.z), intBitsToFloat(R1i.w))); |
| 257 | +PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.y), intBitsToFloat(R1i.w))); |
| 258 | +PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.x), intBitsToFloat(R1i.w))); |
| 259 | +// 1 |
| 260 | +R1i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.w),intBitsToFloat(uf_remappedPS[2].x)) + intBitsToFloat(R2i.x))); |
| 261 | +R1i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.z),intBitsToFloat(uf_remappedPS[2].x)) + intBitsToFloat(R2i.y))); |
| 262 | +R1i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.y),intBitsToFloat(uf_remappedPS[2].x)) + intBitsToFloat(R2i.z))); |
| 263 | +R1i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.x),intBitsToFloat(uf_remappedPS[2].x)) + intBitsToFloat(R2i.w))); |
| 264 | +} |
| 265 | +// export |
| 266 | +passPixelColor0 = vec4(intBitsToFloat(R1i.x), intBitsToFloat(R1i.y), intBitsToFloat(R1i.z), intBitsToFloat(R1i.w)); |
| 267 | +} |
0 commit comments