From 65c0e1b790039fa164b7e0a71a238fdf4d724713 Mon Sep 17 00:00:00 2001 From: Michael Date: Mon, 29 May 2017 00:31:40 -0700 Subject: [PATCH] [Color Splash] Update No Colorless Spots --- ...7c5fc27ffbe_000000078007924b_ps_source.txt | 122 ---- .../efc16c7f50957110_000000078007924b_ps.txt | 610 ++++++++++++++++++ .../ColorSplash_ColorlessSpots/rules.txt | 3 +- 3 files changed, 612 insertions(+), 123 deletions(-) delete mode 100644 Workaround/ColorSplash_ColorlessSpots/459057c5fc27ffbe_000000078007924b_ps_source.txt create mode 100644 Workaround/ColorSplash_ColorlessSpots/efc16c7f50957110_000000078007924b_ps.txt diff --git a/Workaround/ColorSplash_ColorlessSpots/459057c5fc27ffbe_000000078007924b_ps_source.txt b/Workaround/ColorSplash_ColorlessSpots/459057c5fc27ffbe_000000078007924b_ps_source.txt deleted file mode 100644 index 9202778f..00000000 --- a/Workaround/ColorSplash_ColorlessSpots/459057c5fc27ffbe_000000078007924b_ps_source.txt +++ /dev/null @@ -1,122 +0,0 @@ -#version 400 -#extension GL_ARB_texture_gather : enable -// shader 459057c5fc27ffbe -layout(std140) uniform uniformBlockPS7 -{ -vec4 uf_blockPS7[1024]; -}; - -layout(std140) uniform uniformBlockPS8 -{ -vec4 uf_blockPS8[1024]; -}; - -layout(std140) uniform uniformBlockPS9 -{ -vec4 uf_blockPS9[1024]; -}; - -uniform sampler2D textureUnitPS1;// Tex1 addr 0xf4519800 res 1280x720x1 dim 1 tm: 4 format 021a compSel: 0 1 2 3 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 2 2 2 border: 0 -uniform sampler2D textureUnitPS2;// Tex2 addr 0x00000000 res 1280x720x1 dim 1 tm: 4 format 0011 compSel: 0 0 0 0 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler2 ClampX/Y/Z: 2 2 2 border: 0 -uniform sampler2D textureUnitPS4;// Tex4 addr 0xf4c23000 res 1280x720x1 dim 1 tm: 4 format 0816 compSel: 0 1 2 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler4 ClampX/Y/Z: 2 2 2 border: 0 -uniform sampler2D textureUnitPS6;// Tex6 addr 0x4eefd800 res 1280x720x1 dim 1 tm: 4 format 0201 compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler6 ClampX/Y/Z: 2 2 2 border: 0 -uniform samplerCubeArray textureUnitPS15;// Tex15 addr 0x132a0000 res 128x128x1 dim 3 tm: 4 format 0033 compSel: 0 1 2 3 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x6) Sampler15 ClampX/Y/Z: 2 2 2 border: 0 -in vec4 passParameter0; -layout(location = 0) out vec4 passPixelColor0; -layout(location = 4) out vec4 passPixelColor4; -void redcCUBE(vec4 src0, vec4 src1, inout vec3 stm, inout int faceId) -{ -// stm -> x .. s, y .. t, z .. MajorAxis*2.0 -vec3 inputCoord = normalize(vec3(src1.y, src1.x, src0.x)); -float rx = inputCoord.x; -float ry = inputCoord.y; -float rz = inputCoord.z; -if( abs(rx) > abs(ry) && abs(rx) > abs(rz) ) -{ -stm.z = rx*2.0; -stm.xy = vec2(ry,rz); -if( rx >= 0.0 ) -{ -faceId = 0; -} -else -{ -faceId = 1; -} -} -else if( abs(ry) > abs(rx) && abs(ry) > abs(rz) ) -{ -stm.z = ry*2.0; -stm.xy = vec2(rx,rz); -if( ry >= 0.0 ) -{ -faceId = 2; -} -else -{ -faceId = 3; -} -} -else //if( abs(rz) > abs(ry) && abs(rz) > abs(rx) ) -{ -stm.z = rz*2.0; -stm.xy = vec2(rx,ry); -if( rz >= 0.0 ) -{ -faceId = 4; -} -else -{ -faceId = 5; -} -} -} -vec3 redcCUBEReverse(vec2 st, int faceId) -{ -st.yx = st.xy; -vec3 v; -float majorAxis = 1.0; -if( faceId == 0 ) -{ -v.yz = (st-vec2(1.5))*(majorAxis*2.0); -v.x = 1.0; -} -else if( faceId == 1 ) -{ -v.yz = (st-vec2(1.5))*(majorAxis*2.0); -v.x = -1.0; -} -else if( faceId == 2 ) -{ -v.xz = (st-vec2(1.5))*(majorAxis*2.0); -v.y = 1.0; -} -else if( faceId == 3 ) -{ -v.xz = (st-vec2(1.5))*(majorAxis*2.0); -v.y = -1.0; -} -else if( faceId == 4 ) -{ -v.xy = (st-vec2(1.5))*(majorAxis*2.0); -v.z = 1.0; -} -else -{ -v.xy = (st-vec2(1.5))*(majorAxis*2.0); -v.z = -1.0; -} -return v; -} -int clampFI32(int v) -{ -if( v == 0x7FFFFFFF ) - return floatBitsToInt(1.0); -else if( v == 0xFFFFFFFF ) - return floatBitsToInt(0.0); -return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0)); -} -float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; } -void main() -{ -} diff --git a/Workaround/ColorSplash_ColorlessSpots/efc16c7f50957110_000000078007924b_ps.txt b/Workaround/ColorSplash_ColorlessSpots/efc16c7f50957110_000000078007924b_ps.txt new file mode 100644 index 00000000..8e0f80ce --- /dev/null +++ b/Workaround/ColorSplash_ColorlessSpots/efc16c7f50957110_000000078007924b_ps.txt @@ -0,0 +1,610 @@ +#version 420 +#extension GL_ARB_texture_gather : enable +// shader efc16c7f50957110 +layout(binding = 39, std140) uniform uniformBlockPS7 +{ +vec4 uf_blockPS7[1024]; +}; + +layout(binding = 40, std140) uniform uniformBlockPS8 +{ +vec4 uf_blockPS8[1024]; +}; + +layout(binding = 41, std140) uniform uniformBlockPS9 +{ +vec4 uf_blockPS9[1024]; +}; + +layout(binding = 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0xf4519800 res 1280x720x1 dim 1 tm: 4 format 021a compSel: 0 1 2 3 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 2 2 2 border: 0 +layout(binding = 2) uniform sampler2D textureUnitPS2;// Tex2 addr 0x4f527000 res 1280x720x1 dim 1 tm: 4 format 0011 compSel: 0 0 0 0 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler2 ClampX/Y/Z: 2 2 2 border: 0 +layout(binding = 4) uniform sampler2D textureUnitPS4;// Tex4 addr 0xf4c23000 res 1280x720x1 dim 1 tm: 4 format 0816 compSel: 0 1 2 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler4 ClampX/Y/Z: 2 2 2 border: 0 +layout(binding = 6) uniform sampler2D textureUnitPS6;// Tex6 addr 0x4eefd800 res 1280x720x1 dim 1 tm: 4 format 0201 compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler6 ClampX/Y/Z: 2 2 2 border: 0 +layout(binding = 15) uniform samplerCubeArray textureUnitPS15;// Tex15 addr 0x132a0000 res 128x128x1 dim 3 tm: 4 format 0033 compSel: 0 1 2 3 mipView: 0x0 (num 0x8) sliceView: 0x0 (num 0x6) Sampler15 ClampX/Y/Z: 2 2 2 border: 0 +layout(location = 0) in vec4 passParameterSem0; +layout(location = 0) out vec4 passPixelColor0; +layout(location = 4) out vec4 passPixelColor4; +uniform vec2 uf_fragCoordScale; +void redcCUBE(vec4 src0, vec4 src1, out vec3 stm, out int faceId) +{ +// stm -> x .. s, y .. t, z .. MajorAxis*2.0 +vec3 inputCoord = normalize(vec3(src1.y, src1.x, src0.x)); +float rx = inputCoord.x; +float ry = inputCoord.y; +float rz = inputCoord.z; +if( abs(rx) > abs(ry) && abs(rx) > abs(rz) ) +{ +stm.z = rx*2.0; +stm.xy = vec2(ry,rz); +if( rx >= 0.0 ) +{ +faceId = 0; +} +else +{ +faceId = 1; +} +} +else if( abs(ry) > abs(rx) && abs(ry) > abs(rz) ) +{ +stm.z = ry*2.0; +stm.xy = vec2(rx,rz); +if( ry >= 0.0 ) +{ +faceId = 2; +} +else +{ +faceId = 3; +} +} +else //if( abs(rz) > abs(ry) && abs(rz) > abs(rx) ) +{ +stm.z = rz*2.0; +stm.xy = vec2(rx,ry); +if( rz >= 0.0 ) +{ +faceId = 4; +} +else +{ +faceId = 5; +} +} +} +vec3 redcCUBEReverse(vec2 st, int faceId) +{ +st.yx = st.xy; +vec3 v; +float majorAxis = 1.0; +if( faceId == 0 ) +{ +v.yz = (st-vec2(1.5))*(majorAxis*2.0); +v.x = 1.0; +} +else if( faceId == 1 ) +{ +v.yz = (st-vec2(1.5))*(majorAxis*2.0); +v.x = -1.0; +} +else if( faceId == 2 ) +{ +v.xz = (st-vec2(1.5))*(majorAxis*2.0); +v.y = 1.0; +} +else if( faceId == 3 ) +{ +v.xz = (st-vec2(1.5))*(majorAxis*2.0); +v.y = -1.0; +} +else if( faceId == 4 ) +{ +v.xy = (st-vec2(1.5))*(majorAxis*2.0); +v.z = 1.0; +} +else +{ +v.xy = (st-vec2(1.5))*(majorAxis*2.0); +v.z = -1.0; +} +return v; +} +int clampFI32(int v) +{ +if( v == 0x7FFFFFFF ) + return floatBitsToInt(1.0); +else if( v == 0xFFFFFFFF ) + return floatBitsToInt(0.0); +return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0)); +} +float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; } +void main() +{ +ivec4 R0i = ivec4(0); +ivec4 R1i = ivec4(0); +ivec4 R2i = ivec4(0); +ivec4 R3i = ivec4(0); +ivec4 R4i = ivec4(0); +ivec4 R5i = ivec4(0); +ivec4 R6i = ivec4(0); +ivec4 R7i = ivec4(0); +ivec4 R8i = ivec4(0); +ivec4 R9i = ivec4(0); +ivec4 R10i = ivec4(0); +ivec4 R11i = ivec4(0); +ivec4 R12i = ivec4(0); +ivec4 R13i = ivec4(0); +ivec4 R123i = ivec4(0); +ivec4 R124i = ivec4(0); +ivec4 R125i = ivec4(0); +ivec4 R126i = ivec4(0); +ivec4 R127i = ivec4(0); +int backupReg0i, backupReg1i, backupReg2i, backupReg3i, backupReg4i; +ivec4 PV0i = ivec4(0), PV1i = ivec4(0); +int PS0i = 0, PS1i = 0; +ivec4 tempi = ivec4(0); +float tempResultf; +int tempResulti; +ivec4 ARi = ivec4(0); +bool predResult = true; +bool activeMaskStack[3]; +bool activeMaskStackC[4]; +activeMaskStack[0] = false; +activeMaskStack[1] = false; +activeMaskStackC[0] = false; +activeMaskStackC[1] = false; +activeMaskStackC[2] = false; +activeMaskStack[0] = true; +activeMaskStackC[0] = true; +activeMaskStackC[1] = true; +vec3 cubeMapSTM; +int cubeMapFaceId; +float cubeMapArrayIndex15 = 0.0; +//R0i = floatBitsToInt(passParameterSem0); +if( activeMaskStackC[1] == true ) { +R3i.z = floatBitsToInt(texture(textureUnitPS6, intBitsToFloat(R0i.xy)).x); +R1i.w = floatBitsToInt(texture(textureUnitPS2, intBitsToFloat(R0i.xy)).x); +R1i.xyz = floatBitsToInt(texture(textureUnitPS4, intBitsToFloat(R0i.xy)).xyz); +} +if( activeMaskStackC[1] == true ) { +// 0 +backupReg0i = R0i.y; +R127i.x = floatBitsToInt(intBitsToFloat(R0i.x) + -(uf_blockPS7[22].x)); +PV0i.y = floatBitsToInt(max(intBitsToFloat(R3i.z), -(intBitsToFloat(R3i.z)))); +R126i.z = floatBitsToInt((intBitsToFloat(R1i.w) * 2.0 + -(1.0))); +PV0i.w = floatBitsToInt(intBitsToFloat(backupReg0i) + -(uf_blockPS7[22].y)); +PS0i = floatBitsToInt(1.0 / uf_blockPS7[22].w); +// 1 +PV1i.x = floatBitsToInt(intBitsToFloat(PV0i.y) * intBitsToFloat(0x43000000)); +PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PS0i), intBitsToFloat(PV0i.w))); +PV1i.z = floatBitsToInt(intBitsToFloat(R1i.z) * intBitsToFloat(0x3dea7371)); +R127i.w = 0x3f800000; +PS1i = floatBitsToInt(1.0 / uf_blockPS7[22].z); +// 2 +PV0i.x = floatBitsToInt(-(intBitsToFloat(PV1i.y)) + 1.0); +R123i.y = floatBitsToInt((intBitsToFloat(R1i.y) * intBitsToFloat(0x3f162c23) + intBitsToFloat(PV1i.z))); +PV0i.y = R123i.y; +PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PS1i), intBitsToFloat(R127i.x))); +PS0i = int(intBitsToFloat(PV1i.x)); +// 3 +R127i.x = floatBitsToInt((intBitsToFloat(PV0i.z) * 2.0 + -(1.0))); +PV1i.x = R127i.x; +R127i.y = floatBitsToInt((intBitsToFloat(PV0i.x) * 2.0 + -(1.0))); +PV1i.y = R127i.y; +R127i.z = floatBitsToInt((intBitsToFloat(R1i.x) * intBitsToFloat(0x3e990afe) + intBitsToFloat(PV0i.y))); +PV1i.z = R127i.z; +R126i.w = int(-1) + PS0i; +R11i.x = 0; +PS1i = R11i.x; +// 4 +tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(PV1i.x),intBitsToFloat(PV1i.y),intBitsToFloat(R126i.z),intBitsToFloat(R127i.w)),vec4(uf_blockPS7[10].x,uf_blockPS7[10].y,uf_blockPS7[10].z,uf_blockPS7[10].w))); +PV0i.x = tempi.x; +PV0i.y = tempi.x; +PV0i.z = tempi.x; +PV0i.w = tempi.x; +R1i.w = tempi.x; +R125i.w = floatBitsToInt(-(intBitsToFloat(R1i.x)) + intBitsToFloat(PV1i.z)); +PS0i = R125i.w; +// 5 +tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R127i.x),intBitsToFloat(R127i.y),intBitsToFloat(R126i.z),intBitsToFloat(R127i.w)),vec4(uf_blockPS7[7].x,uf_blockPS7[7].y,uf_blockPS7[7].z,uf_blockPS7[7].w))); +PV1i.x = tempi.x; +PV1i.y = tempi.x; +PV1i.z = tempi.x; +PV1i.w = tempi.x; +R124i.z = tempi.x; +R125i.z = floatBitsToInt(-(intBitsToFloat(R1i.y)) + intBitsToFloat(R127i.z)); +PS1i = R125i.z; +// 6 +tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R127i.x),intBitsToFloat(R127i.y),intBitsToFloat(R126i.z),intBitsToFloat(R127i.w)),vec4(uf_blockPS7[8].x,uf_blockPS7[8].y,uf_blockPS7[8].z,uf_blockPS7[8].w))); +PV0i.x = tempi.x; +PV0i.y = tempi.x; +PV0i.z = tempi.x; +PV0i.w = tempi.x; +R3i.y = tempi.x; +R124i.w = floatBitsToInt(-(intBitsToFloat(R1i.z)) + intBitsToFloat(R127i.z)); +PS0i = R124i.w; +// 7 +R3i.x = floatBitsToInt(dot(vec4(intBitsToFloat(R127i.x),intBitsToFloat(R127i.y),intBitsToFloat(R126i.z),intBitsToFloat(R127i.w)),vec4(uf_blockPS7[9].x,uf_blockPS7[9].y,uf_blockPS7[9].z,uf_blockPS7[9].w))); +PV1i.x = R3i.x; +PV1i.y = R3i.x; +PV1i.z = R3i.x; +PV1i.w = R3i.x; +R4i.y = 0; +PS1i = R4i.y; +// 8 +R10i.x = floatBitsToInt((intBitsToFloat(R125i.w) * uf_blockPS9[636].y + intBitsToFloat(R1i.x))); +R9i.y = floatBitsToInt((intBitsToFloat(R125i.z) * uf_blockPS9[636].y + intBitsToFloat(R1i.y))); +R4i.z = floatBitsToInt((intBitsToFloat(R124i.w) * uf_blockPS9[636].y + intBitsToFloat(R1i.z))); +R127i.y = R126i.w * 0x00000007; +PS0i = R127i.y; +// 9 +backupReg0i = R1i.w; +R1i.x = PS0i + 0x0000003d; +R1i.y = PS0i + 0x0000003f; +R1i.z = PS0i + 0x0000003c; +R1i.w = PS0i + 0x0000003e; +R2i.w = floatBitsToInt(1.0 / intBitsToFloat(backupReg0i)); +PS1i = R2i.w; +// 10 +R2i.x = R127i.y + 0x00000041; +R2i.y = R127i.y + 0x00000040; +R9i.z = 0; +R3i.w = 0; +R9i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.z), intBitsToFloat(PS1i))); +PS0i = R9i.x; +} +if( activeMaskStackC[1] == true ) { +R4i.x = floatBitsToInt(uf_blockPS9[R1i.z].x); +R10i.y = floatBitsToInt(uf_blockPS9[R1i.x].y); +R8i.xyzw = floatBitsToInt(uf_blockPS9[R1i.w].xyzw); +R7i.xyzw = floatBitsToInt(uf_blockPS9[R1i.y].xyzw); +R6i.xyzw = floatBitsToInt(uf_blockPS9[R2i.y].xyzw); +R5i.xyzw = floatBitsToInt(uf_blockPS9[R2i.x].xyzw); +} +if( activeMaskStackC[1] == true ) { +activeMaskStack[1] = activeMaskStack[0]; +activeMaskStackC[2] = activeMaskStackC[1]; +// 0 +R127i.x = floatBitsToInt(-(intBitsToFloat(R9i.x)) + uf_blockPS7[23].x); +R2i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R3i.y), intBitsToFloat(R2i.w))); +PV0i.y = R2i.y; +R10i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R3i.x), intBitsToFloat(R2i.w))); +PV0i.z = R10i.z; +R1i.x = floatBitsToInt(1.0); +PS0i = R1i.x; +// 1 +R127i.y = floatBitsToInt(-(intBitsToFloat(PV0i.y)) + uf_blockPS7[23].y); +PV1i.y = R127i.y; +R124i.z = floatBitsToInt(-(intBitsToFloat(PV0i.z)) + uf_blockPS7[23].z); +PV1i.z = R124i.z; +R2i.w = int(intBitsToFloat(R4i.x)); +PS1i = R2i.w; +// 2 +tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R127i.x),intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.z),-0.0),vec4(intBitsToFloat(R127i.x),intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.z),0.0))); +PV0i.x = tempi.x; +PV0i.y = tempi.x; +PV0i.z = tempi.x; +PV0i.w = tempi.x; +// 3 +tempResultf = 1.0 / sqrt(intBitsToFloat(PV0i.x)); +PS1i = floatBitsToInt(tempResultf); +// 4 +R2i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.x), intBitsToFloat(PS1i))); +R1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.y), intBitsToFloat(PS1i))); +R1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.z), intBitsToFloat(PS1i))); +// 5 +predResult = (intBitsToFloat(R10i.y) >= 1.0); +activeMaskStack[1] = predResult; +activeMaskStackC[2] = predResult == true && activeMaskStackC[1] == true; +} +else { +activeMaskStack[1] = false; +activeMaskStackC[2] = false; +} +if( activeMaskStackC[2] == true ) { +// 0 +R127i.x = floatBitsToInt(intBitsToFloat(R10i.y) + -(1.0)); +PV0i.x = R127i.x; +// 1 +R13i.x = floatBitsToInt(min(uf_blockPS9[631].x, 1.0)); +R13i.y = floatBitsToInt(min(uf_blockPS9[631].y, 1.0)); +R13i.z = floatBitsToInt(min(uf_blockPS9[631].z, 1.0)); +R13i.w = floatBitsToInt((2.0 * intBitsToFloat(PV0i.x) + -(1.0))); +R13i.w = clampFI32(R13i.w); +R12i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R8i.x), intBitsToFloat(PV0i.x))); +PS1i = R12i.x; +// 2 +R12i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R8i.y), intBitsToFloat(R127i.x))); +R12i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R8i.z), intBitsToFloat(R127i.x))); +R12i.w = 0x3f800000; +} +activeMaskStack[1] = activeMaskStack[1] == false; +activeMaskStackC[2] = activeMaskStack[1] == true && activeMaskStackC[1] == true; +if( activeMaskStackC[2] == true ) { +// 0 +R1i.x = R11i.x; +} +activeMaskStackC[1] = activeMaskStack[0] == true && activeMaskStackC[0] == true; +if( activeMaskStackC[1] == true ) { +activeMaskStack[1] = activeMaskStack[0]; +activeMaskStackC[2] = activeMaskStackC[1]; +// 0 +predResult = (R1i.x == 0); +activeMaskStack[1] = predResult; +activeMaskStackC[2] = predResult == true && activeMaskStackC[1] == true; +} +else { +activeMaskStack[1] = false; +activeMaskStackC[2] = false; +} +if( activeMaskStackC[2] == true ) { +R0i.xyz = floatBitsToInt(texture(textureUnitPS1, intBitsToFloat(R0i.xy)).xyz); +} +if( activeMaskStackC[2] == true ) { +// 0 +backupReg0i = R0i.x; +backupReg1i = R0i.y; +backupReg2i = R0i.z; +tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(backupReg0i),intBitsToFloat(backupReg1i),intBitsToFloat(backupReg2i),-0.0),vec4(intBitsToFloat(R2i.x),intBitsToFloat(R1i.y),intBitsToFloat(R1i.z),0.0))); +PV0i.x = tempi.x; +PV0i.y = tempi.x; +PV0i.z = tempi.x; +PV0i.w = tempi.x; +R1i.w = floatBitsToInt(uf_blockPS9[638].x * intBitsToFloat(0x41000000)); +PS0i = R1i.w; +// 1 +PV1i.x = floatBitsToInt(-(uf_blockPS9[638].x) + 1.0); +PV1i.y = floatBitsToInt(intBitsToFloat(PV0i.x) + intBitsToFloat(PV0i.x)); +R2i.z = floatBitsToInt(-(uf_blockPS9[637].w) + 1.0); +R0i.w = 0; +PV1i.w = R0i.w; +// 2 +R123i.x = floatBitsToInt((-(intBitsToFloat(PV1i.y)) * intBitsToFloat(R0i.x) + intBitsToFloat(R2i.x))); +PV0i.x = R123i.x; +R123i.y = floatBitsToInt((-(intBitsToFloat(PV1i.y)) * intBitsToFloat(R0i.y) + intBitsToFloat(R1i.y))); +PV0i.y = R123i.y; +R123i.z = floatBitsToInt((-(intBitsToFloat(PV1i.y)) * intBitsToFloat(R0i.z) + intBitsToFloat(R1i.z))); +PV0i.z = R123i.z; +R123i.w = floatBitsToInt((-(intBitsToFloat(PV1i.x)) * intBitsToFloat(0x40400000) + 4.0)); +PV0i.w = R123i.w; +R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.z), -(intBitsToFloat(PV1i.w)))); +PS0i = R127i.x; +// 3 +redcCUBE(vec4(intBitsToFloat(PV0i.z),intBitsToFloat(PV0i.z),intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y)),vec4(intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.z),intBitsToFloat(PV0i.z)),cubeMapSTM,cubeMapFaceId); +R126i.x = floatBitsToInt(cubeMapSTM.x); +R126i.y = floatBitsToInt(cubeMapSTM.y); +R126i.z = floatBitsToInt(cubeMapSTM.z); +R126i.w = cubeMapFaceId; +PV1i.x = R126i.x; +PV1i.y = R126i.y; +PV1i.z = R126i.z; +PV1i.w = R126i.w; +R0i.w = floatBitsToInt(1.0 / intBitsToFloat(PV0i.w)); +PS1i = R0i.w; +// 4 +R123i.x = floatBitsToInt((intBitsToFloat(R0i.z) * -(intBitsToFloat(R1i.z)) + intBitsToFloat(R127i.x))); +PV0i.x = R123i.x; +R1i.z = PV1i.w; +PS0i = floatBitsToInt(1.0 / abs(intBitsToFloat(PV1i.z))); +// 5 +R123i.x = floatBitsToInt((intBitsToFloat(R0i.y) * -(intBitsToFloat(R1i.y)) + intBitsToFloat(PV0i.x))); +PV1i.x = R123i.x; +R123i.z = floatBitsToInt((intBitsToFloat(R126i.y) * intBitsToFloat(PS0i) + 1.5)); +PV1i.z = R123i.z; +R123i.w = floatBitsToInt((intBitsToFloat(R126i.x) * intBitsToFloat(PS0i) + 1.5)); +PV1i.w = R123i.w; +// 6 +R1i.x = PV1i.z; +R1i.y = PV1i.w; +R0i.z = floatBitsToInt((intBitsToFloat(R0i.x) * -(intBitsToFloat(R2i.x)) + intBitsToFloat(PV1i.x))); +} +if( activeMaskStackC[2] == true ) { +R1i.xyzw = floatBitsToInt(textureLod(textureUnitPS15, vec4(redcCUBEReverse(intBitsToFloat(R1i.xy),R1i.z),cubeMapArrayIndex15),intBitsToFloat(R1i.w)).xyzw); +} +if( activeMaskStackC[2] == true ) { +activeMaskStack[2] = activeMaskStack[1]; +activeMaskStackC[3] = activeMaskStackC[2]; +// 0 +PV0i.x = floatBitsToInt(max(intBitsToFloat(R0i.z), -(intBitsToFloat(R0i.z)))); +PV0i.y = floatBitsToInt(max(intBitsToFloat(R1i.w), intBitsToFloat(0x38d1b717))); +// 1 +R126i.w = floatBitsToInt(-(intBitsToFloat(PV0i.x)) + 1.0); +PV1i.w = R126i.w; +PS1i = floatBitsToInt(1.0 / intBitsToFloat(PV0i.y)); +// 2 +PV0i.x = floatBitsToInt(intBitsToFloat(R1i.y) * intBitsToFloat(PS1i)); +PV0i.y = floatBitsToInt(intBitsToFloat(R1i.z) * intBitsToFloat(PS1i)); +PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.w), intBitsToFloat(PV1i.w))); +PV0i.w = floatBitsToInt(intBitsToFloat(R1i.x) * intBitsToFloat(PS1i)); +// 3 +R126i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.w), uf_blockPS8[9].x)); +PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.z), intBitsToFloat(PV0i.z))); +R126i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.y), uf_blockPS8[9].z)); +R127i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), uf_blockPS8[9].y)); +// 4 +PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.w), intBitsToFloat(PV1i.y))); +// 5 +R123i.y = floatBitsToInt((intBitsToFloat(PV0i.x) * intBitsToFloat(R2i.z) + uf_blockPS9[637].w)); +PV1i.y = R123i.y; +// 6 +PV0i.z = floatBitsToInt(intBitsToFloat(PV1i.y) * intBitsToFloat(R0i.w)); +PV0i.z = clampFI32(PV0i.z); +// 7 +R0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.x), intBitsToFloat(PV0i.z))); +PV1i.x = R0i.x; +R0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.w), intBitsToFloat(PV0i.z))); +PV1i.y = R0i.y; +R0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.z), intBitsToFloat(PV0i.z))); +PV1i.z = R0i.z; +// 8 +R123i.x = floatBitsToInt((intBitsToFloat(R8i.y) * uf_blockPS8[1].y + intBitsToFloat(PV1i.y))); +PV0i.x = R123i.x; +R123i.y = floatBitsToInt((intBitsToFloat(R8i.x) * uf_blockPS8[1].x + intBitsToFloat(PV1i.x))); +PV0i.y = R123i.y; +R123i.w = floatBitsToInt((intBitsToFloat(R8i.z) * uf_blockPS8[1].z + intBitsToFloat(PV1i.z))); +PV0i.w = R123i.w; +// 9 +R1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R10i.x), intBitsToFloat(PV0i.y))); +R1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R9i.y), intBitsToFloat(PV0i.x))); +R1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R4i.z), intBitsToFloat(PV0i.w))); +// 10 +predResult = (intBitsToFloat(R3i.z) >= 0.0); +activeMaskStack[2] = predResult; +activeMaskStackC[3] = predResult == true && activeMaskStackC[2] == true; +} +else { +activeMaskStack[2] = false; +activeMaskStackC[3] = false; +} +if( activeMaskStackC[3] == true ) { +// 0 +R127i.x = floatBitsToInt(intBitsToFloat(R10i.z) * intBitsToFloat(0x3f8269a3)); +PV0i.y = floatBitsToInt(uf_blockPS8[34].z + intBitsToFloat(0xc37a0000)); +R127i.z = floatBitsToInt(intBitsToFloat(R2i.y) * intBitsToFloat(0x3f940ffe)); +R127i.w = floatBitsToInt(intBitsToFloat(R9i.x) * intBitsToFloat(0x3f85f616)); +R127i.y = floatBitsToInt(-(intBitsToFloat(R7i.x)) + intBitsToFloat(R6i.x)); +PS0i = R127i.y; +// 1 +PV1i.x = floatBitsToInt(intBitsToFloat(PV0i.y) * intBitsToFloat(0x3b83126f)); +R126i.y = floatBitsToInt(-(intBitsToFloat(R7i.y)) + intBitsToFloat(R6i.y)); +R125i.z = (R2i.w >= 0x00000003)?int(0xFFFFFFFF):int(0x0); +R126i.w = floatBitsToInt(-(intBitsToFloat(R7i.z)) + intBitsToFloat(R6i.z)); +R126i.z = floatBitsToInt(-(intBitsToFloat(R7i.w)) + intBitsToFloat(R6i.w)); +PS1i = R126i.z; +// 2 +PV0i.w = floatBitsToInt(intBitsToFloat(PV1i.x) + 1.0); +// 3 +PV1i.z = floatBitsToInt(floor(intBitsToFloat(PV0i.w))); +// 4 +R123i.y = floatBitsToInt((-(intBitsToFloat(PV1i.z)) * intBitsToFloat(0x437a0000) + uf_blockPS8[34].z)); +PV0i.y = R123i.y; +// 5 +R126i.x = floatBitsToInt(intBitsToFloat(PV0i.y) * intBitsToFloat(0x3b83126f)); +PV1i.x = R126i.x; +// 6 +PV0i.x = floatBitsToInt(intBitsToFloat(PV1i.x) + intBitsToFloat(R127i.x)); +PV0i.y = floatBitsToInt(intBitsToFloat(PV1i.x) + intBitsToFloat(R127i.z)); +PV0i.z = floatBitsToInt(intBitsToFloat(PV1i.x) + intBitsToFloat(R127i.w)); +// 7 +PV1i.x = floatBitsToInt(intBitsToFloat(PV0i.y) * intBitsToFloat(0x40c90fdb)); +PV1i.y = floatBitsToInt(intBitsToFloat(PV0i.z) * intBitsToFloat(0x40c90fdb)); +PV1i.w = floatBitsToInt(intBitsToFloat(PV0i.x) * intBitsToFloat(0x40c90fdb)); +// 8 +R123i.x = floatBitsToInt((intBitsToFloat(PV1i.y) * intBitsToFloat(0x3e22f983) + 0.5)); +PV0i.x = R123i.x; +R123i.z = floatBitsToInt((intBitsToFloat(PV1i.w) * intBitsToFloat(0x3e22f983) + 0.5)); +PV0i.z = R123i.z; +R123i.w = floatBitsToInt((intBitsToFloat(PV1i.x) * intBitsToFloat(0x3e22f983) + 0.5)); +PV0i.w = R123i.w; +// 9 +PV1i.y = floatBitsToInt(fract(intBitsToFloat(PV0i.z))); +PV1i.z = floatBitsToInt(fract(intBitsToFloat(PV0i.w))); +PV1i.w = floatBitsToInt(fract(intBitsToFloat(PV0i.x))); +// 10 +R123i.x = floatBitsToInt((intBitsToFloat(PV1i.y) * intBitsToFloat(0x40c90fdb) + intBitsToFloat(0xc0490fdb))); +PV0i.x = R123i.x; +R123i.y = floatBitsToInt((intBitsToFloat(PV1i.z) * intBitsToFloat(0x40c90fdb) + intBitsToFloat(0xc0490fdb))); +PV0i.y = R123i.y; +R123i.z = floatBitsToInt((intBitsToFloat(PV1i.w) * intBitsToFloat(0x40c90fdb) + intBitsToFloat(0xc0490fdb))); +PV0i.z = R123i.z; +// 11 +R127i.x = floatBitsToInt(intBitsToFloat(PV0i.y) * intBitsToFloat(0x3e22f983)); +PV1i.y = floatBitsToInt(intBitsToFloat(PV0i.z) * intBitsToFloat(0x3e22f983)); +R127i.w = floatBitsToInt(intBitsToFloat(PV0i.x) * intBitsToFloat(0x3e22f983)); +// 12 +PS0i = floatBitsToInt(sin((intBitsToFloat(PV1i.y))/0.1591549367)); +// 13 +PV1i.w = floatBitsToInt(intBitsToFloat(PS0i) + 0.0); +PS1i = floatBitsToInt(sin((intBitsToFloat(R127i.x))/0.1591549367)); +// 14 +PV0i.z = floatBitsToInt(intBitsToFloat(PV1i.w) + intBitsToFloat(PS1i)); +PS0i = floatBitsToInt(sin((intBitsToFloat(R127i.w))/0.1591549367)); +// 15 +PV1i.y = floatBitsToInt(intBitsToFloat(PV0i.z) + intBitsToFloat(PS0i)); +// 16 +PV0i.x = floatBitsToInt(intBitsToFloat(PV1i.y) * intBitsToFloat(0x3eaaaaab)); +PV0i.x = floatBitsToInt(intBitsToFloat(PV0i.x) / 2.0); +// 17 +PV1i.w = floatBitsToInt(intBitsToFloat(PV0i.x) + 0.5); +// 18 +PV0i.z = floatBitsToInt(max(intBitsToFloat(PV1i.w), -(1.0))); +// 19 +PV1i.y = floatBitsToInt(min(intBitsToFloat(PV0i.z), 1.0)); +// 20 +backupReg0i = R126i.x; +R126i.x = floatBitsToInt(-(intBitsToFloat(backupReg0i)) + intBitsToFloat(PV1i.y)); +PV0i.x = R126i.x; +// 21 +PV1i.x = floatBitsToInt(intBitsToFloat(PV0i.x) + 1.0); +PV1i.y = ((-(0.5) > intBitsToFloat(PV0i.x))?int(0xFFFFFFFF):int(0x0)); +R127i.z = floatBitsToInt(intBitsToFloat(PV0i.x) + -(1.0)); +R127i.w = ((intBitsToFloat(PV0i.x) >= 0.5)?int(0xFFFFFFFF):int(0x0)); +// 22 +R123i.w = ((PV1i.y == 0)?(R126i.x):(PV1i.x)); +PV0i.w = R123i.w; +// 23 +R123i.z = ((R127i.w == 0)?(PV0i.w):(R127i.z)); +PV1i.z = R123i.z; +// 24 +PV0i.y = floatBitsToInt(max(intBitsToFloat(PV1i.z), -(intBitsToFloat(PV1i.z)))); +PV0i.y = floatBitsToInt(intBitsToFloat(PV0i.y) * 2.0); +// 25 +PV1i.x = floatBitsToInt(-(intBitsToFloat(PV0i.y)) + 1.0); +// 26 +R123i.w = floatBitsToInt((-(intBitsToFloat(PV1i.x)) * intBitsToFloat(PV1i.x) + 1.0)); +PV0i.w = R123i.w; +// 27 +R123i.x = floatBitsToInt((intBitsToFloat(R126i.y) * intBitsToFloat(PV0i.w) + intBitsToFloat(R7i.y))); +PV1i.x = R123i.x; +R123i.y = floatBitsToInt((intBitsToFloat(R127i.y) * intBitsToFloat(PV0i.w) + intBitsToFloat(R7i.x))); +PV1i.y = R123i.y; +R123i.z = floatBitsToInt((intBitsToFloat(R126i.z) * intBitsToFloat(PV0i.w) + intBitsToFloat(R7i.w))); +PV1i.z = R123i.z; +R123i.w = floatBitsToInt((intBitsToFloat(R126i.w) * intBitsToFloat(PV0i.w) + intBitsToFloat(R7i.z))); +PV1i.w = R123i.w; +// 28 +R123i.x = ((R125i.z == 0)?(PV1i.x):(R1i.y)); +PV0i.x = R123i.x; +R123i.y = ((R125i.z == 0)?(PV1i.y):(R1i.x)); +PV0i.y = R123i.y; +R123i.z = ((R125i.z == 0)?(PV1i.w):(R1i.z)); +PV0i.z = R123i.z; +R13i.w = ((R125i.z == 0)?(PV1i.z):(R8i.w)); +// 29 +R123i.x = floatBitsToInt((uf_blockPS8[1].y * intBitsToFloat(PV0i.x) + intBitsToFloat(R0i.y))); +PV1i.x = R123i.x; +R123i.y = floatBitsToInt((uf_blockPS8[1].x * intBitsToFloat(PV0i.y) + intBitsToFloat(R0i.x))); +PV1i.y = R123i.y; +R123i.w = floatBitsToInt((uf_blockPS8[1].z * intBitsToFloat(PV0i.z) + intBitsToFloat(R0i.z))); +PV1i.w = R123i.w; +// 30 +R13i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R10i.x), intBitsToFloat(PV1i.y))); +R13i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R9i.y), intBitsToFloat(PV1i.x))); +R13i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R4i.z), intBitsToFloat(PV1i.w))); +// 31 +R12i.xyz = ivec3(R5i.x,R5i.y,R5i.z); +R12i.w = R5i.w; +} +activeMaskStack[2] = activeMaskStack[2] == false; +activeMaskStackC[3] = activeMaskStack[2] == true && activeMaskStackC[2] == true; +if( activeMaskStackC[3] == true ) { +// 0 +R13i.xyz = ivec3(R1i.x,R1i.y,R1i.z); +R13i.w = R8i.w; +// 1 +R12i.xyz = ivec3(R11i.x,R4i.y,R9i.z); +R12i.w = R3i.w; +} +activeMaskStackC[1] = activeMaskStack[0] == true && activeMaskStackC[0] == true; +if( activeMaskStackC[1] == true ) { +// 0 +R1i.xyz = ivec3(R12i.x,R12i.y,R12i.z); +R1i.w = R12i.w; +// 1 +R0i.xyz = ivec3(R13i.x,R13i.y,R13i.z); +R0i.w = R13i.w; +} +// export +passPixelColor0 = vec4(intBitsToFloat(R0i.x), intBitsToFloat(R0i.y), intBitsToFloat(R0i.z), intBitsToFloat(R0i.w)); +passPixelColor4 = vec4(intBitsToFloat(R1i.x), intBitsToFloat(R1i.y), intBitsToFloat(R1i.z), intBitsToFloat(R1i.w)); +} diff --git a/Workaround/ColorSplash_ColorlessSpots/rules.txt b/Workaround/ColorSplash_ColorlessSpots/rules.txt index 4a419e05..1b1a56bf 100644 --- a/Workaround/ColorSplash_ColorlessSpots/rules.txt +++ b/Workaround/ColorSplash_ColorlessSpots/rules.txt @@ -1,3 +1,4 @@ [Definition] titleIds = 500001f600900,500001f600a00,500001f600b00 -name = "Paper Mario: Color Splash - No Colorless Spots" \ No newline at end of file +name = "Paper Mario: Color Splash - No Colorless Spots" +version = 2 \ No newline at end of file