From 514a1fb80874845e818430b029cd1f0b2a391388 Mon Sep 17 00:00:00 2001 From: Michael Date: Sat, 27 May 2017 23:24:01 -0700 Subject: [PATCH] [XCX] Update Adjustable Bloom --- ...eb8eef36208_00000000000003ca_ps_source.txt | 85 ------------------- .../3cc7e98f78c258b4_00000000000003ca_ps.txt | 73 ++++++++++++++++ Workaround/XCX_AdjustableBloom/rules.txt | 3 +- 3 files changed, 75 insertions(+), 86 deletions(-) delete mode 100644 Workaround/XCX_AdjustableBloom/2a706eb8eef36208_00000000000003ca_ps_source.txt create mode 100644 Workaround/XCX_AdjustableBloom/3cc7e98f78c258b4_00000000000003ca_ps.txt diff --git a/Workaround/XCX_AdjustableBloom/2a706eb8eef36208_00000000000003ca_ps_source.txt b/Workaround/XCX_AdjustableBloom/2a706eb8eef36208_00000000000003ca_ps_source.txt deleted file mode 100644 index a3ca7dd0..00000000 --- a/Workaround/XCX_AdjustableBloom/2a706eb8eef36208_00000000000003ca_ps_source.txt +++ /dev/null @@ -1,85 +0,0 @@ -#version 400 -#extension GL_ARB_texture_gather : enable - -const float bloomFactor = 0.64; // bloom strength AMD = 0.33, Nvidia 0.64 aprox. 1.0 default/disabled. - -// shader 2a706eb8eef36208 -uniform ivec4 uf_remappedPS[1]; -uniform sampler2D textureUnitPS0;// Tex0 addr 0xf470a000 res 1280x720x1 dim 1 tm: 4 format 0816 compSel: 0 1 2 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 2 2 2 border: 0 -uniform sampler3D textureUnitPS1;// Tex1 addr 0x25e75000 res 16x16x16 dim 2 tm: 7 format 001a compSel: 0 1 2 3 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x10) Sampler1 ClampX/Y/Z: 2 2 2 border: 0 -in vec4 passParameter0; -layout(location = 0) out vec4 passPixelColor0; -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 R127i = ivec4(0); -int backupReg0i, backupReg1i, backupReg2i, backupReg3i, backupReg4i; -float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f; -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; -int loopStuckCounter = 0; -vec3 cubeMapSTM; -int cubeMapFaceId; -R0i = floatBitsToInt(passParameter0); -R0i.xyz = floatBitsToInt(texture(textureUnitPS0, intBitsToFloat(R0i.xy)).xyz * bloomFactor); -// 0 -R127i.x = floatBitsToInt(intBitsToFloat(R0i.z) * intBitsToFloat(uf_remappedPS[0].x)); -R127i.x = clampFI32(R127i.x); -PV0i.x = R127i.x; -R127i.y = floatBitsToInt(intBitsToFloat(R0i.y) * intBitsToFloat(uf_remappedPS[0].x)); -R127i.y = clampFI32(R127i.y); -PV0i.y = R127i.y; -PV0i.z = floatBitsToInt(intBitsToFloat(R0i.x) * intBitsToFloat(uf_remappedPS[0].x)); -PV0i.z = clampFI32(PV0i.z); -R1i.w = 0x3f800000; -PV0i.w = R1i.w; -// 1 -tempResultf = log2(intBitsToFloat(PV0i.z)); -if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F; -PS1i = floatBitsToInt(tempResultf); -// 2 -R127i.z = floatBitsToInt(intBitsToFloat(PS1i) * intBitsToFloat(0x3ee8ba2e)); -PV0i.z = R127i.z; -tempResultf = log2(intBitsToFloat(R127i.y)); -if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F; -PS0i = floatBitsToInt(tempResultf); -// 3 -R127i.w = floatBitsToInt(intBitsToFloat(PS0i) * intBitsToFloat(0x3ee8ba2e)); -PV1i.w = R127i.w; -tempResultf = log2(intBitsToFloat(R127i.x)); -if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F; -PS1i = floatBitsToInt(tempResultf); -// 4 -R127i.x = floatBitsToInt(intBitsToFloat(PS1i) * intBitsToFloat(0x3ee8ba2e)); -PV0i.x = R127i.x; -PS0i = floatBitsToInt(exp2(intBitsToFloat(R127i.z))); -// 5 -R0i.x = floatBitsToInt((intBitsToFloat(PS0i) * intBitsToFloat(uf_remappedPS[0].z) + intBitsToFloat(uf_remappedPS[0].w))); -PV1i.x = R0i.x; -PS1i = floatBitsToInt(exp2(intBitsToFloat(R127i.w))); -// 6 -R0i.y = floatBitsToInt((intBitsToFloat(PS1i) * intBitsToFloat(uf_remappedPS[0].z) + intBitsToFloat(uf_remappedPS[0].w))); -PV0i.y = R0i.y; -PS0i = floatBitsToInt(exp2(intBitsToFloat(R127i.x))); -// 7 -R0i.z = floatBitsToInt((intBitsToFloat(PS0i) * intBitsToFloat(uf_remappedPS[0].z) + intBitsToFloat(uf_remappedPS[0].w))); -PV1i.z = R0i.z; -R1i.xyz = floatBitsToInt(texture(textureUnitPS1, vec3(intBitsToFloat(R0i.x),intBitsToFloat(R0i.y),intBitsToFloat(R0i.z))).xyz); -// export -passPixelColor0 = vec4(intBitsToFloat(R1i.x), intBitsToFloat(R1i.y), intBitsToFloat(R1i.z), intBitsToFloat(R1i.w)); -} diff --git a/Workaround/XCX_AdjustableBloom/3cc7e98f78c258b4_00000000000003ca_ps.txt b/Workaround/XCX_AdjustableBloom/3cc7e98f78c258b4_00000000000003ca_ps.txt new file mode 100644 index 00000000..4ced3adb --- /dev/null +++ b/Workaround/XCX_AdjustableBloom/3cc7e98f78c258b4_00000000000003ca_ps.txt @@ -0,0 +1,73 @@ +#version 420 +#extension GL_ARB_texture_gather : enable +const float bloomFactor = 0.64; // 0.33 recommended for AMD, 0.64 recommended for NVIDIA +// shader 3cc7e98f78c258b4 +uniform ivec4 uf_remappedPS[1]; +layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0xf470a000 res 1280x720x1 dim 1 tm: 4 format 0816 compSel: 0 1 2 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 2 2 2 border: 0 +layout(binding = 1) uniform sampler3D textureUnitPS1;// Tex1 addr 0x2603b000 res 16x16x16 dim 2 tm: 7 format 001a compSel: 0 1 2 3 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x10) Sampler1 ClampX/Y/Z: 2 2 2 border: 0 +layout(location = 0) in vec4 passParameterSem0; +layout(location = 0) out vec4 passPixelColor0; +uniform vec2 uf_fragCoordScale; +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){ return min(a*b,min(abs(a)*3.40282347E+38F,abs(b)*3.40282347E+38F)); } +void main() +{ +vec4 R0f = vec4(0.0); +vec4 R1f = vec4(0.0); +vec4 R127f = vec4(0.0); +float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f; +vec4 PV0f = vec4(0.0), PV1f = vec4(0.0); +float PS0f = 0.0, PS1f = 0.0; +vec4 tempf = vec4(0.0); +float tempResultf; +int tempResulti; +ivec4 ARi = ivec4(0); +bool predResult = true; +vec3 cubeMapSTM; +int cubeMapFaceId; +R0f = passParameterSem0; +R0f.xyz = (texture(textureUnitPS0, R0f.xy).xyz * bloomFactor); +// 0 +R127f.x = R0f.z * intBitsToFloat(uf_remappedPS[0].x); +R127f.x = clamp(R127f.x, 0.0, 1.0); +R127f.y = R0f.y * intBitsToFloat(uf_remappedPS[0].x); +R127f.y = clamp(R127f.y, 0.0, 1.0); +PV0f.z = R0f.x * intBitsToFloat(uf_remappedPS[0].x); +PV0f.z = clamp(PV0f.z, 0.0, 1.0); +R1f.w = 1.0; +// 1 +tempResultf = log2(PV0f.z); +if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F; +PS1f = tempResultf; +// 2 +R127f.z = PS1f * intBitsToFloat(0x3ee8ba2e); +tempResultf = log2(R127f.y); +if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F; +PS0f = tempResultf; +// 3 +R127f.w = PS0f * intBitsToFloat(0x3ee8ba2e); +tempResultf = log2(R127f.x); +if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F; +PS1f = tempResultf; +// 4 +R127f.x = PS1f * intBitsToFloat(0x3ee8ba2e); +PS0f = exp2(R127f.z); +// 5 +R0f.x = (PS0f * intBitsToFloat(uf_remappedPS[0].z) + intBitsToFloat(uf_remappedPS[0].w)); +PS1f = exp2(R127f.w); +// 6 +R0f.y = (PS1f * intBitsToFloat(uf_remappedPS[0].z) + intBitsToFloat(uf_remappedPS[0].w)); +PS0f = exp2(R127f.x); +// 7 +R0f.z = (PS0f * intBitsToFloat(uf_remappedPS[0].z) + intBitsToFloat(uf_remappedPS[0].w)); +R1f.xyz = (texture(textureUnitPS1, vec3(R0f.x,R0f.y,R0f.z)).xyz); +// export +passPixelColor0 = vec4(R1f.x, R1f.y, R1f.z, R1f.w); +} diff --git a/Workaround/XCX_AdjustableBloom/rules.txt b/Workaround/XCX_AdjustableBloom/rules.txt index 14be411b..0d24fcad 100644 --- a/Workaround/XCX_AdjustableBloom/rules.txt +++ b/Workaround/XCX_AdjustableBloom/rules.txt @@ -1,3 +1,4 @@ [Definition] titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00,ffffffff0cd546a9 -name = "Xenoblade Chronicles X - Adjustable Bloom" #Github ver +name = "Xenoblade Chronicles X - Adjustable Bloom" +version = 2 \ No newline at end of file