diff --git a/Enhancements/TwilightPrincessHD_contrasty/49865bd2e62efda1_0000000000000079_ps.txt b/Enhancements/TwilightPrincessHD_contrasty/49865bd2e62efda1_0000000000000079_ps.txt new file mode 100644 index 00000000..d5df980f --- /dev/null +++ b/Enhancements/TwilightPrincessHD_contrasty/49865bd2e62efda1_0000000000000079_ps.txt @@ -0,0 +1,56 @@ +#version 420 +#extension GL_ARB_texture_gather : enable +#extension GL_ARB_separate_shader_objects : enable +// shader 49865bd2e62efda1 +//dark world bloom + +const float bloom = $bloom; +uniform ivec4 uf_remappedPS[1]; +layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0xf597f000 res 480x270x1 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 +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){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; } +void main() +{ +vec4 R0f = 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 = (textureLod(textureUnitPS0, R0f.xy,0.0).xyz)*bloom; +// 0 +backupReg0f = R0f.y; +backupReg1f = R0f.x; +PV0f.x = mul_nonIEEE(R0f.z, intBitsToFloat(uf_remappedPS[0].z)); +PV0f.y = mul_nonIEEE(backupReg0f, intBitsToFloat(uf_remappedPS[0].y)); +PV0f.z = mul_nonIEEE(backupReg1f, intBitsToFloat(uf_remappedPS[0].x)); +PV0f.w = intBitsToFloat(uf_remappedPS[0].w); +// 1 +PV1f.x = max(PV0f.w, 0.0); +PV1f.y = max(PV0f.x, 0.0); +PV1f.z = max(PV0f.y, 0.0); +PV1f.w = max(PV0f.z, 0.0); +// 2 +R0f.x = min(PV1f.w, 1.0); +R0f.y = min(PV1f.z, 1.0); +R0f.z = min(PV1f.y, 1.0); +R0f.w = min(PV1f.x, 1.0); +// export +passPixelColor0 = vec4(R0f.x, R0f.y, R0f.z, R0f.w); +} diff --git a/Enhancements/TwilightPrincessHD_contrasty/5f422bf63e25be7f_0000000000000079_ps.txt b/Enhancements/TwilightPrincessHD_contrasty/5f422bf63e25be7f_0000000000000079_ps.txt new file mode 100644 index 00000000..b74b8be4 --- /dev/null +++ b/Enhancements/TwilightPrincessHD_contrasty/5f422bf63e25be7f_0000000000000079_ps.txt @@ -0,0 +1,62 @@ +#version 420 +#extension GL_ARB_texture_gather : enable +#extension GL_ARB_separate_shader_objects : enable +// shader 5f422bf63e25be7f // Bleach pass cutscene + +const float bleach = $bleach; + +uniform ivec4 uf_remappedPS[1]; +layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0x24dfb000 res 960x540x1 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 +layout(location = 0) in vec4 passParameterSem1; +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){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; } +void main() +{ +vec4 R0f = vec4(0.0); +vec4 R1f = 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 = passParameterSem1; +R0f.w = (texture(textureUnitPS0, R0f.xy).x); +// 0 +PV0f.x = intBitsToFloat(uf_remappedPS[0].x) * intBitsToFloat(0x3f7f0000); +PV0f.z = intBitsToFloat(uf_remappedPS[0].z) * intBitsToFloat(0x3f7f0000); +PV0f.w = intBitsToFloat(uf_remappedPS[0].y) * intBitsToFloat(0x3f7f0000); +R1f.w = intBitsToFloat(uf_remappedPS[0].w); +R1f.w = clamp(R1f.w, 0.0, 1.0); +PS0f = R1f.w; +// 1 +PV1f.x = fract(PV0f.w); +PV1f.y = fract(PV0f.x); +PV1f.w = fract(PV0f.z); +// 2 +PV0f.x = PV1f.w * intBitsToFloat(0x3f808081); +PV0f.y = PV1f.x * intBitsToFloat(0x3f808081); +PV0f.z = PV1f.y * intBitsToFloat(0x3f808081); +// 3 +R1f.x = mul_nonIEEE(R0f.w, PV0f.z); +R1f.x = clamp(R1f.x, 0.0, 1.0); +R1f.y = mul_nonIEEE(R0f.w, PV0f.y); +R1f.y = clamp(R1f.y, 0.0, 1.0); +R1f.z = mul_nonIEEE(R0f.w, PV0f.x); +R1f.z = clamp(R1f.z, 0.0, 1.0); +// export +passPixelColor0 = vec4(R1f.x, R1f.y, R1f.z, R1f.w) * bleach; +} diff --git a/Enhancements/TwilightPrincessHD_contrasty/95a5a89d62998e0d_0000000000000079_ps.txt b/Enhancements/TwilightPrincessHD_contrasty/95a5a89d62998e0d_0000000000000079_ps.txt new file mode 100644 index 00000000..e6015873 --- /dev/null +++ b/Enhancements/TwilightPrincessHD_contrasty/95a5a89d62998e0d_0000000000000079_ps.txt @@ -0,0 +1,341 @@ +#version 420 +#extension GL_ARB_texture_gather : enable +#extension GL_ARB_separate_shader_objects : enable +// shader 95a5a89d62998e0d + +// blur +const float bloom = $bloom; + +uniform ivec4 uf_remappedPS[3]; +layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0xf59ff000 res 480x270x1 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 +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){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; } +void main() +{ +vec4 R0f = vec4(0.0); +vec4 R1f = vec4(0.0); +vec4 R2f = vec4(0.0); +vec4 R3f = vec4(0.0); +vec4 R4f = vec4(0.0); +vec4 R5f = vec4(0.0); +vec4 R6f = vec4(0.0); +vec4 R7f = vec4(0.0); +vec4 R123f = 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; +float scaler; +int tempResulti; +ivec4 ARi = ivec4(0); +bool predResult = true; +vec3 cubeMapSTM; +int cubeMapFaceId; +R0f = vec4(gl_FragCoord.xy*uf_fragCoordScale,gl_FragCoord.zw); +scaler = uf_fragCoordScale.x; +// 0 +R7f.x = R0f.x * intBitsToFloat(0x3b088889); +PV0f.x = R7f.x; +R7f.y = R0f.y * intBitsToFloat(0x3b72b9d6); +PV0f.y = R7f.y; +// 1 +R0f.x = PV0f.x; +R0f.y = PV0f.y + intBitsToFloat(0x3b72b9d6) * scaler; +R1f.z = PV0f.x; +R1f.y = PV0f.y + intBitsToFloat(0xbb72b9d6) * scaler; +PS1f = R1f.y; +// 2 +R2f.x = R7f.x; +R2f.y = R7f.y + intBitsToFloat(0x3bf2b9d6) * scaler; +R4f.z = R7f.x; +R4f.y = R7f.y + intBitsToFloat(0xbbf2b9d6) * scaler; +PS0f = R4f.y; +R3f.xyzw = (textureLod(textureUnitPS0, R7f.xy,0.0).xyzw); +R0f.xyzw = (textureLod(textureUnitPS0, R0f.xy,0.0).xyzw); +R1f.xyzw = (textureLod(textureUnitPS0, R1f.zy,0.0).xyzw); +R2f.xyzw = (textureLod(textureUnitPS0, R2f.xy,0.0).xyzw); +// 0 +backupReg0f = R0f.x; +backupReg1f = R0f.w; +PV0f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y), R0f.y); +PV0f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y), R0f.z); +PV0f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y), backupReg0f); +PV0f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y), backupReg1f); +R0f.y = R7f.y + intBitsToFloat(0x3c360b60) * scaler; +PS0f = R0f.y; +// 1 +R123f.x = (mul_nonIEEE(R3f.y,intBitsToFloat(uf_remappedPS[0].x)) + PV0f.x); +PV1f.x = R123f.x; +R123f.y = (mul_nonIEEE(R3f.w,intBitsToFloat(uf_remappedPS[0].x)) + PV0f.w); +PV1f.y = R123f.y; +R123f.z = (mul_nonIEEE(R3f.x,intBitsToFloat(uf_remappedPS[0].x)) + PV0f.z); +PV1f.z = R123f.z; +R123f.w = (mul_nonIEEE(R3f.z,intBitsToFloat(uf_remappedPS[0].x)) + PV0f.y); +PV1f.w = R123f.w; +R0f.x = R7f.x; +PS1f = R0f.x; +// 2 +R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y),R1f.y) + PV1f.x); +PV0f.x = R123f.x; +R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y),R1f.x) + PV1f.z); +PV0f.y = R123f.y; +R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y),R1f.w) + PV1f.y); +PV0f.z = R123f.z; +R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y),R1f.z) + PV1f.w); +PV0f.w = R123f.w; +R1f.y = R7f.y + intBitsToFloat(0xbc360b60) * scaler; +PS0f = R1f.y; +// 3 +backupReg0f = R2f.z; +R3f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),R2f.x) + PV0f.y); +R3f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),R2f.y) + PV0f.x); +R2f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),R2f.w) + PV0f.z); +R2f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),backupReg0f) + PV0f.w); +R1f.x = R7f.x; +PS1f = R1f.x; +// 4 +R2f.x = R7f.x; +R2f.y = R7f.y + intBitsToFloat(0x3c72b9d6) * scaler; +R6f.z = R7f.x; +R6f.y = R7f.y + intBitsToFloat(0xbc72b9d6) * scaler; +PS0f = R6f.y; +R4f.xyzw = (textureLod(textureUnitPS0, R4f.zy,0.0).xyzw); +R0f.xyzw = (textureLod(textureUnitPS0, R0f.xy,0.0).xyzw); +R1f.xyzw = (textureLod(textureUnitPS0, R1f.xy,0.0).xyzw); +R5f.xyzw = (textureLod(textureUnitPS0, R2f.xy,0.0).xyzw); +// 0 +R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),R4f.x) + R3f.x); +PV0f.x = R123f.x; +R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),R4f.w) + R2f.z); +PV0f.y = R123f.y; +R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),R4f.z) + R2f.w); +PV0f.z = R123f.z; +R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),R4f.y) + R3f.y); +PV0f.w = R123f.w; +R3f.y = R7f.y + intBitsToFloat(0x3c97b426) * scaler; +PS0f = R3f.y; +// 1 +R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R0f.w) + PV0f.y); +PV1f.x = R123f.x; +R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R0f.x) + PV0f.x); +PV1f.y = R123f.y; +R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R0f.z) + PV0f.z); +PV1f.z = R123f.z; +R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R0f.y) + PV0f.w); +PV1f.w = R123f.w; +R3f.x = R7f.x; +PS1f = R3f.x; +// 2 +R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R1f.w) + PV1f.x); +PV0f.x = R123f.x; +R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R1f.z) + PV1f.z); +PV0f.y = R123f.y; +R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R1f.y) + PV1f.w); +PV0f.z = R123f.z; +R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R1f.x) + PV1f.y); +PV0f.w = R123f.w; +R1f.y = R7f.y + intBitsToFloat(0xbc97b426) * scaler; +PS0f = R1f.y; +// 3 +R0f.x = (mul_nonIEEE(R5f.z,intBitsToFloat(uf_remappedPS[1].x)) + PV0f.y); +R0f.y = (mul_nonIEEE(R5f.w,intBitsToFloat(uf_remappedPS[1].x)) + PV0f.x); +R5f.z = (mul_nonIEEE(R5f.y,intBitsToFloat(uf_remappedPS[1].x)) + PV0f.z); +R5f.w = (mul_nonIEEE(R5f.x,intBitsToFloat(uf_remappedPS[1].x)) + PV0f.w); +R1f.x = R7f.x; +PS1f = R1f.x; +// 4 +R5f.x = R7f.x; +R5f.y = R7f.y + intBitsToFloat(0x3cb60b60) * scaler; +R4f.z = R7f.x; +R4f.y = R7f.y + intBitsToFloat(0xbcb60b60) * scaler; +PS0f = R4f.y; +R6f.xyzw = (textureLod(textureUnitPS0, R6f.zy,0.0).xyzw); +R3f.xyzw = (textureLod(textureUnitPS0, R3f.xy,0.0).xyzw); +R1f.xyzw = (textureLod(textureUnitPS0, R1f.xy,0.0).xyzw); +R2f.xyzw = (textureLod(textureUnitPS0, R5f.xy,0.0).xyzw); +// 0 +R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x),R6f.z) + R0f.x); +PV0f.x = R123f.x; +R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x),R6f.y) + R5f.z); +PV0f.y = R123f.y; +R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x),R6f.x) + R5f.w); +PV0f.z = R123f.z; +R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x),R6f.w) + R0f.y); +PV0f.w = R123f.w; +R0f.y = R7f.y + intBitsToFloat(0x3cd4629b) * scaler; +PS0f = R0f.y; +// 1 +R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R3f.y) + PV0f.y); +PV1f.x = R123f.x; +R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R3f.w) + PV0f.w); +PV1f.y = R123f.y; +R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R3f.x) + PV0f.z); +PV1f.z = R123f.z; +R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R3f.z) + PV0f.x); +PV1f.w = R123f.w; +R0f.x = R7f.x; +PS1f = R0f.x; +// 2 +R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R1f.y) + PV1f.x); +PV0f.x = R123f.x; +R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R1f.x) + PV1f.z); +PV0f.y = R123f.y; +R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R1f.w) + PV1f.y); +PV0f.z = R123f.z; +R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R1f.z) + PV1f.w); +PV0f.w = R123f.w; +R1f.y = R7f.y + intBitsToFloat(0xbcd4629b) * scaler; +PS0f = R1f.y; +// 3 +backupReg0f = R2f.z; +R3f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),R2f.x) + PV0f.y); +R3f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),R2f.y) + PV0f.x); +R2f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),R2f.w) + PV0f.z); +R2f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),backupReg0f) + PV0f.w); +R1f.x = R7f.x; +PS1f = R1f.x; +// 4 +R2f.x = R7f.x; +R2f.y = R7f.y + intBitsToFloat(0x3cf2b9d6) * scaler; +R6f.z = R7f.x; +R6f.y = R7f.y + intBitsToFloat(0xbcf2b9d6) * scaler; +PS0f = R6f.y; +R4f.xyzw = (textureLod(textureUnitPS0, R4f.zy,0.0).xyzw); +R0f.xyzw = (textureLod(textureUnitPS0, R0f.xy,0.0).xyzw); +R1f.xyzw = (textureLod(textureUnitPS0, R1f.xy,0.0).xyzw); +R5f.xyzw = (textureLod(textureUnitPS0, R2f.xy,0.0).xyzw); +// 0 +R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),R4f.x) + R3f.x); +PV0f.x = R123f.x; +R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),R4f.w) + R2f.z); +PV0f.y = R123f.y; +R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),R4f.z) + R2f.w); +PV0f.z = R123f.z; +R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),R4f.y) + R3f.y); +PV0f.w = R123f.w; +R3f.y = R7f.y + intBitsToFloat(0x3d088888) * scaler; +PS0f = R3f.y; +// 1 +R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R0f.w) + PV0f.y); +PV1f.x = R123f.x; +R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R0f.x) + PV0f.x); +PV1f.y = R123f.y; +R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R0f.z) + PV0f.z); +PV1f.z = R123f.z; +R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R0f.y) + PV0f.w); +PV1f.w = R123f.w; +R3f.x = R7f.x; +PS1f = R3f.x; +// 2 +R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R1f.w) + PV1f.x); +PV0f.x = R123f.x; +R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R1f.z) + PV1f.z); +PV0f.y = R123f.y; +R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R1f.y) + PV1f.w); +PV0f.z = R123f.z; +R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R1f.x) + PV1f.y); +PV0f.w = R123f.w; +R1f.y = R7f.y + intBitsToFloat(0xbd088888) * scaler; +PS0f = R1f.y; +// 3 +R0f.x = (mul_nonIEEE(R5f.z,intBitsToFloat(uf_remappedPS[2].x)) + PV0f.y); +R0f.y = (mul_nonIEEE(R5f.w,intBitsToFloat(uf_remappedPS[2].x)) + PV0f.x); +R5f.z = (mul_nonIEEE(R5f.y,intBitsToFloat(uf_remappedPS[2].x)) + PV0f.z); +R5f.w = (mul_nonIEEE(R5f.x,intBitsToFloat(uf_remappedPS[2].x)) + PV0f.w); +R1f.x = R7f.x; +PS1f = R1f.x; +// 4 +R5f.x = R7f.x; +R5f.y = R7f.y + intBitsToFloat(0x3d17b426) * scaler; +R4f.z = R7f.x; +R4f.y = R7f.y + intBitsToFloat(0xbd17b426) * scaler; +PS0f = R4f.y; +R6f.xyzw = (textureLod(textureUnitPS0, R6f.zy,0.0).xyzw); +R3f.xyzw = (textureLod(textureUnitPS0, R3f.xy,0.0).xyzw); +R1f.xyzw = (textureLod(textureUnitPS0, R1f.xy,0.0).xyzw); +R2f.xyzw = (textureLod(textureUnitPS0, R5f.xy,0.0).xyzw); +// 0 +R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].x),R6f.z) + R0f.x); +PV0f.x = R123f.x; +R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].x),R6f.y) + R5f.z); +PV0f.y = R123f.y; +R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].x),R6f.x) + R5f.w); +PV0f.z = R123f.z; +R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].x),R6f.w) + R0f.y); +PV0f.w = R123f.w; +R0f.y = R7f.y + intBitsToFloat(0x3d26dfc3) * scaler; +PS0f = R0f.y; +// 1 +R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R3f.y) + PV0f.y); +PV1f.x = R123f.x; +R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R3f.w) + PV0f.w); +PV1f.y = R123f.y; +R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R3f.x) + PV0f.z); +PV1f.z = R123f.z; +R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R3f.z) + PV0f.x); +PV1f.w = R123f.w; +R0f.x = R7f.x; +PS1f = R0f.x; +// 2 +backupReg0f = R7f.y; +R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R1f.y) + PV1f.x); +PV0f.x = R123f.x; +R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R1f.x) + PV1f.z); +PV0f.y = R123f.y; +R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R1f.w) + PV1f.y); +PV0f.z = R123f.z; +R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R1f.z) + PV1f.w); +PV0f.w = R123f.w; +R7f.y = backupReg0f + intBitsToFloat(0xbd26dfc3) * scaler; +PS0f = R7f.y; +// 3 +backupReg0f = R2f.x; +backupReg1f = R2f.y; +backupReg2f = R2f.z; +R2f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),backupReg0f) + PV0f.y); +R2f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),backupReg1f) + PV0f.x); +R2f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),R2f.w) + PV0f.z); +R2f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),backupReg2f) + PV0f.w); +R4f.xyzw = (textureLod(textureUnitPS0, R4f.zy,0.0).xyzw); +R0f.xyzw = (textureLod(textureUnitPS0, R0f.xy,0.0).xyzw); +R7f.xyzw = (textureLod(textureUnitPS0, R7f.xy,0.0).xyzw); +// 0 +R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),R4f.x) + R2f.x); +PV0f.x = R123f.x; +R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),R4f.w) + R2f.z); +PV0f.y = R123f.y; +R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),R4f.z) + R2f.w); +PV0f.z = R123f.z; +R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),R4f.y) + R2f.y); +PV0f.w = R123f.w; +// 1 +R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),R0f.w) + PV0f.y); +PV1f.x = R123f.x; +R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),R0f.x) + PV0f.x); +PV1f.y = R123f.y; +R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),R0f.z) + PV0f.z); +PV1f.z = R123f.z; +R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),R0f.y) + PV0f.w); +PV1f.w = R123f.w; +// 2 +backupReg0f = R7f.x; +backupReg1f = R7f.y; +backupReg2f = R7f.z; +backupReg3f = R7f.w; +R7f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),backupReg0f) + PV1f.y); +R7f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),backupReg1f) + PV1f.w); +R7f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),backupReg2f) + PV1f.z); +R7f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),backupReg3f) + PV1f.x); +// export +passPixelColor0 = vec4(R7f.x, R7f.y, R7f.z, R7f.w)* bloom; +} diff --git a/Enhancements/TwilightPrincessHD_contrasty/c14019840473ff86_00000000000003c9_ps.txt b/Enhancements/TwilightPrincessHD_contrasty/c14019840473ff86_00000000000003c9_ps.txt new file mode 100644 index 00000000..0161ff1d --- /dev/null +++ b/Enhancements/TwilightPrincessHD_contrasty/c14019840473ff86_00000000000003c9_ps.txt @@ -0,0 +1,240 @@ +#version 420 +#extension GL_ARB_texture_gather : enable +#extension GL_ARB_separate_shader_objects : enable +// shader c14019840473ff86 //aa +uniform vec2 uf_fragCoordScale; + +const float hazeFactor = 0.1; + +const float gamma = $gamma; // 1.0 is neutral Botw is already colour graded at this stage +const float exposure = $exposure; // 1.0 is neutral +const float vibrance = $vibrance; // 0.0 is neutral +const float crushContrast = $crushContrast; // 0.0 is neutral. Use small increments, loss of shadow detail +const float contrastCurve = $contrastCurve; + + +vec3 RGB_Lift = vec3($redShadows, $greenShadows , $blueSadows); // [0.000 to 2.000] Adjust shadows for Red, Green and Blue. +vec3 RGB_Gamma = vec3($redMid ,$greenMid, $blueMid); // [0.000 to 2.000] Adjust midtones for Red, Green and Blue +vec3 RGB_Gain = vec3($redHilight, $greenHilight, $blueHilight); // [0.000 to 2.000] Adjust highlights for Red, Green and Blue +//lumasharpen +const float sharp_mix = $sharp_mix; +const float sharp_strength = 2.0; +const float sharp_clamp = 0.75; +const float offset_bias = 1.0; +float Sigmoid (float x) { + + return 1.0 / (1.0 + (exp(-(x - 0.5) * 5.5))); +} + + +#define px (1.0/1920.0*uf_fragCoordScale.x) +#define py (1.0/1080.0*uf_fragCoordScale.y) +#define CoefLuma vec3(0.2126, 0.7152, 0.0722) + +float lumasharping(sampler2D tex, vec2 pos) { + vec4 colorInput = texture(tex, pos); + + vec3 ori = colorInput.rgb; + + // -- Combining the strength and luma multipliers -- + vec3 sharp_strength_luma = (CoefLuma * sharp_strength); + + // -- Gaussian filter -- + // [ .25, .50, .25] [ 1 , 2 , 1 ] + // [ .50, 1, .50] = [ 2 , 4 , 2 ] + // [ .25, .50, .25] [ 1 , 2 , 1 ] + + vec3 blur_ori = texture(tex, pos + vec2(px, -py) * 0.5 * offset_bias).rgb; // South East + blur_ori += texture(tex, pos + vec2(-px, -py) * 0.5 * offset_bias).rgb; // South West + blur_ori += texture(tex, pos + vec2(px, py) * 0.5 * offset_bias).rgb; // North East + blur_ori += texture(tex, pos + vec2(-px, py) * 0.5 * offset_bias).rgb; // North West + + blur_ori *= 0.25; // ( /= 4) Divide by the number of texture fetches + + // -- Calculate the sharpening -- + vec3 sharp = ori - blur_ori; //Subtracting the blurred image from the original image + + // -- Adjust strength of the sharpening and clamp it-- + vec4 sharp_strength_luma_clamp = vec4(sharp_strength_luma * (0.5 / sharp_clamp), 0.5); //Roll part of the clamp into the dot + + float sharp_luma = clamp((dot(vec4(sharp, 1.0), sharp_strength_luma_clamp)), 0.0, 1.0); //Calculate the luma, adjust the strength, scale up and clamp + sharp_luma = (sharp_clamp * 2.0) * sharp_luma - sharp_clamp; //scale down + + return sharp_luma; +} + +vec3 LiftGammaGainPass(vec3 colorInput) +{ //reshade BSD https://reshade.me , Alexkiri port + vec3 color = colorInput; + color = color * (1.5 - 0.5 * RGB_Lift) + 0.5 * RGB_Lift - 0.5; + color = clamp(color, 0.0, 1.0); + color *= RGB_Gain; + color = pow(color, 1.0 / RGB_Gamma); + return clamp(color, 0.0, 1.0); +} + +vec3 contrasty(vec3 colour){ + vec3 fColour = (colour.xyz); +//fColour = LiftGammaGainPass(fColour); + + fColour = clamp(exposure * fColour, 0.0, 1.0); + fColour = pow(fColour, vec3(1.0 / gamma)); + float luminance = fColour.r*0.299 + fColour.g*0.587 + fColour.b*0.114; + float mn = min(min(fColour.r, fColour.g), fColour.b); + float mx = max(max(fColour.r, fColour.g), fColour.b); + float sat = (1.0 - (mx - mn)) * (1.0 - mx) * luminance * 5.0; + vec3 lightness = vec3((mn + mx) / 2.0); + fColour = LiftGammaGainPass(fColour); +// vibrance + fColour = mix(fColour, mix(fColour, lightness, -vibrance), sat); + fColour = max(vec3(0.0), fColour - vec3(crushContrast)); + return fColour; +} + + +layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0xf4001000 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 +layout(binding = 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0xf5187000 res 1920x1080x1 dim 1 tm: 4 format 0011 compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 2 2 2 border: 0 +layout(location = 0) in vec4 passParameterSem0; +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() +{ +vec4 R0f = vec4(0.0); +vec4 R1f = vec4(0.0); +vec4 R2f = vec4(0.0); +vec4 R3f = vec4(0.0); +vec4 R123f = 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.w = (textureGather(textureUnitPS1, R0f.xy).y); +// 0 +R1f.x = R0f.x + intBitsToFloat(0xba088889); +R1f.y = R0f.y + intBitsToFloat(0xba72b9d6); +R2f.z = R0f.x; +R2f.y = R0f.y + intBitsToFloat(0xba72b9d6); +PS0f = R2f.y; +// 1 +R3f.x = R0f.x + intBitsToFloat(0xba088889); +R3f.y = R0f.y; +R1f.xyzw = (textureGather(textureUnitPS1, R1f.xy).xyzw); +R2f.yz = (textureGather(textureUnitPS1, R2f.zy).yz); +R3f.xy = (textureGather(textureUnitPS1, R3f.xy).xy); +// 0 + + +PV0f.x = R2f.z + R3f.x; +PV0f.y = R1f.w + R0f.w; +PV0f.z = R1f.z + R3f.y; +PV0f.w = R1f.x + R2f.y; +// 1 +R123f.x = (R1f.y * 2.0 + -(PV0f.x)); +PV1f.x = R123f.x; +R123f.y = (R1f.y * 2.0 + -(PV0f.y)); +PV1f.y = R123f.y; +R123f.z = (R1f.y * 2.0 + -(PV0f.z)); +PV1f.z = R123f.z; +R123f.w = (R1f.y * 2.0 + -(PV0f.w)); +PV1f.w = R123f.w; +// 2 +PV0f.x = max(PV1f.x, -(PV1f.x)); +PV0f.y = max(PV1f.y, -(PV1f.y)); +PV0f.z = max(PV1f.z, -(PV1f.z)); +PV0f.w = max(PV1f.w, -(PV1f.w)); +// 3 +PV1f.x = PV0f.x + intBitsToFloat(0xb400d959); +PV1f.y = PV0f.y + intBitsToFloat(0xb400d959); +PV1f.z = PV0f.z + intBitsToFloat(0xb400d959); +PV1f.w = PV0f.w + intBitsToFloat(0xb400d959); +// 4 +R123f.x = intBitsToFloat(((PV1f.w >= 0.0)?(floatBitsToInt(1.0)):(0))); +PV0f.x = R123f.x; +R123f.y = intBitsToFloat(((PV1f.z >= 0.0)?(floatBitsToInt(1.0)):(0))); +PV0f.y = R123f.y; +R123f.z = intBitsToFloat(((PV1f.y >= 0.0)?(floatBitsToInt(1.0)):(0))); +PV0f.z = R123f.z; +R123f.w = intBitsToFloat(((PV1f.x >= 0.0)?(floatBitsToInt(1.0)):(0))); +PV0f.w = R123f.w; +// 5 +tempf.x = dot(vec4(PV0f.x,PV0f.y,PV0f.z,PV0f.w),vec4(0.25,0.25,0.25,0.25)); +PV1f.x = tempf.x; +PV1f.y = tempf.x; +PV1f.z = tempf.x; +PV1f.w = tempf.x; +// 6 +R127f.z = PV1f.x * intBitsToFloat(0x3f400000)*0.5; +PV0f.z = R127f.z; +// 7 +R1f.x = (PV0f.z * intBitsToFloat(0xba088889)*0.5 + R0f.x); +R1f.y = R0f.y; +R2f.z = R0f.x; +R2f.y = (PV0f.z * intBitsToFloat(0xba72b9d6)*0.5 + R0f.y); +PS1f = R2f.y; +// 8 +R3f.x = (R127f.z * intBitsToFloat(0x3a088889)*0.5 + R0f.x); +R3f.y = R0f.y; +R0f.w = (R127f.z * intBitsToFloat(0x3a72b9d6) + R0f.y); +R1f.xyzw = (texture(textureUnitPS0, R1f.xy).xyzw); +R2f.xyzw = (texture(textureUnitPS0, R2f.zy).xyzw); +R3f.xyzw = (texture(textureUnitPS0, R3f.xy).xyzw); +R0f.xyzw = (texture(textureUnitPS0, R0f.xw).xyzw); +// 0 +PV0f.x = R1f.w + R2f.w; +PV0f.y = R1f.z + R2f.z; +PV0f.z = R1f.y + R2f.y; +PV0f.w = R1f.x + R2f.x; +// 1 +PV1f.x = R3f.w + PV0f.x; +PV1f.y = R3f.z + PV0f.y; +PV1f.z = R3f.y + PV0f.z; +PV1f.w = R3f.x + PV0f.w; +// 2 +backupReg0f = R0f.y; +backupReg1f = R0f.x; +PV0f.x = R0f.w + PV1f.x; +PV0f.y = R0f.z + PV1f.y; +PV0f.z = backupReg0f + PV1f.z; +PV0f.w = backupReg1f + PV1f.w; +// 3 +R0f.x = PV0f.w * 0.25; +R0f.y = PV0f.z * 0.25; +R0f.z = PV0f.y * 0.25; +R0f.w = PV0f.x * 0.25; +// export +//R0f.xyz = vec3(Sigmoid(R0f.x), Sigmoid(R0f.y),Sigmoid(R0f.z)); +//R0f.x = Sigmoid(R0f.x); +//R0f.y = Sigmoid(R0f.y); + +//R0f.xyz = contrasty(R0f.xyz); +//R0f.y = Sigmoid(R0f.y) +//R0f.xyz = clamp(R0f.xyz,0,1); +//R0f.x = max(0.0, R0f.x - crushContrast); + +R0f.xyz = contrasty(R0f.xyz); +R0f.xyz = mix(R0f.xyz, smoothstep(0.0, 1.0, R0f.xyz), contrastCurve); +//vec3 mix(vec3 x, vec3 y, float a) +//R0f.xyz = mix(contrasty(R0f.xyz), vec3(Sigmoid(R0f.x), Sigmoid(R0f.y),Sigmoid(R0f.z)), 0.25); +float smask = lumasharping(textureUnitPS0, passParameterSem0.xy); +vec3 temp3 = R0f.xyz; +R0f.xyz = mix(R0f.xyz, (temp3.xyz += (smask)), sharp_mix); + +passPixelColor0 = vec4(R0f.x, R0f.y, R0f.z, R0f.w); +} diff --git a/Enhancements/TwilightPrincessHD_contrasty/e334517825fdd599_0000000000000079_ps.txt b/Enhancements/TwilightPrincessHD_contrasty/e334517825fdd599_0000000000000079_ps.txt new file mode 100644 index 00000000..7e3a3e33 --- /dev/null +++ b/Enhancements/TwilightPrincessHD_contrasty/e334517825fdd599_0000000000000079_ps.txt @@ -0,0 +1,130 @@ +#version 420 +#extension GL_ARB_texture_gather : enable +#extension GL_ARB_separate_shader_objects : enable +// shader e334517825fdd599 +//water, sun, fog. +uniform vec2 uf_fragCoordScale; + +const float hazeFactor = 0.1; + +const float gamma = $gamma; // 1.0 is neutral Botw is already colour graded at this stage +const float exposure = $exposure; // 1.0 is neutral +const float vibrance = $vibrance; // 0.0 is neutral +const float crushContrast = $crushContrast; // 0.0 is neutral. Use small increments, loss of shadow detail +const float contrastCurve = $contrastCurve; + + +vec3 RGB_Lift = vec3($redShadows, $greenShadows , $blueSadows); // [0.000 to 2.000] Adjust shadows for Red, Green and Blue. +vec3 RGB_Gamma = vec3($redMid ,$greenMid, $blueMid); // [0.000 to 2.000] Adjust midtones for Red, Green and Blue +vec3 RGB_Gain = vec3($redHilight, $greenHilight, $blueHilight); // [0.000 to 2.000] Adjust highlights for Red, Green and Blue +//lumasharpen +const float sharp_mix = $sharp_mix; +const float sharp_strength = 2.0; +const float sharp_clamp = 0.75; +const float offset_bias = 1.0; +float Sigmoid (float x) { + + return 1.0 / (1.0 + (exp(-(x - 0.5) * 5.5))); +} + + +#define px (1.0/1920.0*uf_fragCoordScale.x) +#define py (1.0/1080.0*uf_fragCoordScale.y) +#define CoefLuma vec3(0.2126, 0.7152, 0.0722) + +float lumasharping(sampler2D tex, vec2 pos) { + vec4 colorInput = texture(tex, pos); + + vec3 ori = colorInput.rgb; + + // -- Combining the strength and luma multipliers -- + vec3 sharp_strength_luma = (CoefLuma * sharp_strength); + + // -- Gaussian filter -- + // [ .25, .50, .25] [ 1 , 2 , 1 ] + // [ .50, 1, .50] = [ 2 , 4 , 2 ] + // [ .25, .50, .25] [ 1 , 2 , 1 ] + + vec3 blur_ori = texture(tex, pos + vec2(px, -py) * 0.5 * offset_bias).rgb; // South East + blur_ori += texture(tex, pos + vec2(-px, -py) * 0.5 * offset_bias).rgb; // South West + blur_ori += texture(tex, pos + vec2(px, py) * 0.5 * offset_bias).rgb; // North East + blur_ori += texture(tex, pos + vec2(-px, py) * 0.5 * offset_bias).rgb; // North West + + blur_ori *= 0.25; // ( /= 4) Divide by the number of texture fetches + + // -- Calculate the sharpening -- + vec3 sharp = ori - blur_ori; //Subtracting the blurred image from the original image + + // -- Adjust strength of the sharpening and clamp it-- + vec4 sharp_strength_luma_clamp = vec4(sharp_strength_luma * (0.5 / sharp_clamp), 0.5); //Roll part of the clamp into the dot + + float sharp_luma = clamp((dot(vec4(sharp, 1.0), sharp_strength_luma_clamp)), 0.0, 1.0); //Calculate the luma, adjust the strength, scale up and clamp + sharp_luma = (sharp_clamp * 2.0) * sharp_luma - sharp_clamp; //scale down + + return sharp_luma; +} + +vec3 LiftGammaGainPass(vec3 colorInput) +{ //reshade BSD https://reshade.me , Alexkiri port + vec3 color = colorInput; + color = color * (1.5 - 0.5 * RGB_Lift) + 0.5 * RGB_Lift - 0.5; + color = clamp(color, 0.0, 1.0); + color *= RGB_Gain; + color = pow(color, 1.0 / RGB_Gamma); + return clamp(color, 0.0, 1.0); +} + +vec3 contrasty(vec3 colour){ + vec3 fColour = (colour.xyz); +//fColour = LiftGammaGainPass(fColour); + + fColour = clamp(exposure * fColour, 0.0, 1.0); + fColour = pow(fColour, vec3(1.0 / gamma)); + float luminance = fColour.r*0.299 + fColour.g*0.587 + fColour.b*0.114; + float mn = min(min(fColour.r, fColour.g), fColour.b); + float mx = max(max(fColour.r, fColour.g), fColour.b); + float sat = (1.0 - (mx - mn)) * (1.0 - mx) * luminance * 5.0; + vec3 lightness = vec3((mn + mx) / 2.0); + fColour = LiftGammaGainPass(fColour); +// vibrance + fColour = mix(fColour, mix(fColour, lightness, -vibrance), sat); + fColour = max(vec3(0.0), fColour - vec3(crushContrast)); + return fColour; +} + + + +layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0xf4001000 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 +layout(location = 0) in vec4 passParameterSem0; +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){return mix(0.0, a*b, (a != 0.0) && (b != 0.0));} +void main() +{ +vec4 R0f = 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.xyzw = (textureLod(textureUnitPS0, R0f.xy,0.0).xyzw); +// export +R0f.xyz = contrasty(R0f.xyz); +//R0f.xyz = mix(R0f.xyz, smoothstep(0.0, 1.0, R0f.xyz), 0.25); //contrast difference between heat haze and sky + +passPixelColor0 = vec4(R0f.x, R0f.y, R0f.z, R0f.w); +} diff --git a/Enhancements/TwilightPrincessHD_contrasty/rules.txt b/Enhancements/TwilightPrincessHD_contrasty/rules.txt new file mode 100644 index 00000000..cccc7f99 --- /dev/null +++ b/Enhancements/TwilightPrincessHD_contrasty/rules.txt @@ -0,0 +1,160 @@ +[Definition] +titleIds = 000500001019C800,000500001019E600,000500001019E500 +name = Resolution +path = "The Legend of Zelda: Twilight Princess HD/Graphics/Contrasty" +description = Changes the colour and contrast. +version = 3 + +[Preset] +name = default +$redShadows = 1.0 +$greenShadows = 1.0 +$blueSadows = 1.0 +$redMid = 1.0 +$greenMid = 1.0 +$blueMid = 1.0 +$redHilight = 1.0 +$greenHilight =1.0 +$blueHilight = 1.0 + +$contrastCurve = 0.0 +$hazeFactor = 1.0 +$bloom = 1.0 +$gamma = 1.0 +$exposure = 1.0 +$vibrance = 0.0 +$crushContrast = 0.0 +$bleach = 1.0 +$sharp_mix = 0.0 + +[Preset] +name = Neutral default exposure +$redShadows = 0.97 +$greenShadows = 0.97 +$blueSadows = 1.02 +$redMid = 0.95 +$greenMid = 0.96 +$blueMid = 1.02 +$redHilight = 0.98 +$greenHilight = 0.99 +$blueHilight = 1.01 + +$contrastCurve = 0.2 +$hazeFactor = 0.1 +$bloom = 1.0 +$gamma = 1.0 +$exposure = 0.99 +$vibrance = 0.15 +$crushContrast = 0.0 +$bleach = 0.85 +$sharp_mix = 0.15 + +[Preset] +name = Colorful +$redShadows = 0.96 +$greenShadows = 0.97 +$blueSadows = 1.01 +$redMid = 0.94 +$greenMid = 0.96 +$blueMid = 1.01 +$redHilight = 0.97 +$greenHilight = 0.99 +$blueHilight = 1.01 + +$contrastCurve = 0.25 +$hazeFactor = 0.1 +$bloom = 1.0 +$gamma = 1.075 +$exposure = 1.01 +$vibrance = 0.5 +$crushContrast = 0.0 +$bleach = 0.85 +$sharp_mix = 0.05 + +[Preset] +name = Warm +$redShadows = 1.0 +$greenShadows = 1.0 +$blueSadows = 1.0 +$redMid = 0.98 +$greenMid = 0.98 +$blueMid = 1.0 +$redHilight = 1.0 +$greenHilight =1.0 +$blueHilight = 1.0 + +$contrastCurve = 0.7 +$hazeFactor = 0.71 +$bloom = 0.85 +$gamma = 1.1 +$exposure = 1.07 +$vibrance = 0.15 +$crushContrast = 0.00 +$bleach = 0.85 +$sharp_mix = 0.25 + +[Preset] +name = Cold +$redShadows = 0.95 +$greenShadows = 0.96 +$blueSadows = 1.03 +$redMid = 0.95 +$greenMid = 0.96 +$blueMid = 1.03 +$redHilight = 0.98 +$greenHilight = 0.99 +$blueHilight = 1.03 + +$contrastCurve = 0.2 +$hazeFactor = 0.1 +$bloom = 1.0 +$gamma = 1.05 +$exposure = 0.99 +$vibrance = 0.45 +$crushContrast = 0.0 +$bleach = 0.85 +$sharp_mix = 0.35 + +[Preset] +name = Neutral Contrasty +$redShadows = 0.97 +$greenShadows = 0.97 +$blueSadows = 0.99 +$redMid = 0.92 +$greenMid = 0.94 +$blueMid = 1.03 +$redHilight = 0.99 +$greenHilight =1.0 +$blueHilight = 1.0 + +$contrastCurve = 0.5 +$hazeFactor = 0.71 +$bloom = 0.85 +$gamma = 1.19 +$exposure = 1.09 +$vibrance = 0.35 +$crushContrast = 0.00 +$bleach = 0.85 +$sharp_mix = 0.3 + +[Preset] +name = Compensate exposure patch +$redShadows = 0.99 +$greenShadows = 0.99 +$blueSadows = 1.02 +$redMid = 0.95 +$greenMid = 0.97 +$blueMid = 1.04 +$redHilight = 0.99 +$greenHilight =1.0 +$blueHilight = 1.01 + +$contrastCurve = 0.25 +$hazeFactor = 0.71 +$bloom = 0.85 +$gamma = 1.35 +$exposure = 1.1 +$vibrance = 1.25 +$crushContrast = 0.00 +$bleach = 0.85 +$sharp_mix = 0.3 \ No newline at end of file diff --git a/Modifications/TwilightPrincessHD_removeHaze/patches.txt b/Modifications/TwilightPrincessHD_removeHaze/patches.txt new file mode 100644 index 00000000..dac88291 --- /dev/null +++ b/Modifications/TwilightPrincessHD_removeHaze/patches.txt @@ -0,0 +1,12 @@ +[TPHDv81] +moduleMatches = 0x1A03E108 +#Move some look tweaks to patches instead of shaders + +#rodata constants +###exp and haze settings +0x100C3EB8 = .float $nearExp ## Near world (over)exposure +0x100C36C4 = .float $bloomExp ## Bloom npc/object (over) " +0x100C3780 = .float $distExp ## Distant world (over)exposure +0x100C3774 = .float $distanceFog + +#0x100871C8 = .float 0.01 #100871C8:.float 0.00050000002 ###cloud float diff --git a/Modifications/TwilightPrincessHD_removeHaze/rules.txt b/Modifications/TwilightPrincessHD_removeHaze/rules.txt new file mode 100644 index 00000000..1c6482bf --- /dev/null +++ b/Modifications/TwilightPrincessHD_removeHaze/rules.txt @@ -0,0 +1,43 @@ +[Definition] +titleIds = 000500001019C800,000500001019E600,000500001019E500 +name = Resolution +path = "The Legend of Zelda: Twilight Princess HD/Graphics/Less distance fog" +description = Set distance fog and exposure +version = 3 + +[Preset] +name = default +$distanceFog = 21.0 +$nearExp = 0.004 +$bloomExp = 0.004 +$distExp = 0.004 + +[Preset] +name = half distance fog +$distanceFog = 22.0 +$nearExp = 0.004 +$bloomExp = 0.004 +$distExp = 0.004 + +[Preset] +name = no distance fog +$distanceFog = 60.0 +$nearExp = 0.004 +$bloomExp = 0.004 +$distExp = 0.004 + + +[Preset] +name = less over exposure +$distanceFog = 21.0 +$nearExp = 0.00375 +$bloomExp = 0.00375 +$distExp = 0.00375 + + +[Preset] +name = even less exposure +$distanceFog = 22.0 +$nearExp = 0.003 +$bloomExp = 0.00325 +$distExp = 0.00325 \ No newline at end of file diff --git a/Source/TwilightPrincessHD/95a5a89d62998e0d_0000000000000079_ps.txt b/Source/TwilightPrincessHD/95a5a89d62998e0d_0000000000000079_ps.txt new file mode 100644 index 00000000..ad28ce48 --- /dev/null +++ b/Source/TwilightPrincessHD/95a5a89d62998e0d_0000000000000079_ps.txt @@ -0,0 +1,338 @@ +#version 420 +#extension GL_ARB_texture_gather : enable +#extension GL_ARB_separate_shader_objects : enable +// shader 95a5a89d62998e0d +// blur +uniform ivec4 uf_remappedPS[3]; +layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0xf59ff000 res 480x270x1 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 +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){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; } +void main() +{ +vec4 R0f = vec4(0.0); +vec4 R1f = vec4(0.0); +vec4 R2f = vec4(0.0); +vec4 R3f = vec4(0.0); +vec4 R4f = vec4(0.0); +vec4 R5f = vec4(0.0); +vec4 R6f = vec4(0.0); +vec4 R7f = vec4(0.0); +vec4 R123f = 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; +float scaler; +int tempResulti; +ivec4 ARi = ivec4(0); +bool predResult = true; +vec3 cubeMapSTM; +int cubeMapFaceId; +R0f = vec4(gl_FragCoord.xy*uf_fragCoordScale,gl_FragCoord.zw); +scaler = uf_fragCoordScale.x; +// 0 +R7f.x = R0f.x * intBitsToFloat(0x3b088889); +PV0f.x = R7f.x; +R7f.y = R0f.y * intBitsToFloat(0x3b72b9d6); +PV0f.y = R7f.y; +// 1 +R0f.x = PV0f.x; +R0f.y = PV0f.y + intBitsToFloat(0x3b72b9d6) * scaler; +R1f.z = PV0f.x; +R1f.y = PV0f.y + intBitsToFloat(0xbb72b9d6) * scaler; +PS1f = R1f.y; +// 2 +R2f.x = R7f.x; +R2f.y = R7f.y + intBitsToFloat(0x3bf2b9d6) * scaler; +R4f.z = R7f.x; +R4f.y = R7f.y + intBitsToFloat(0xbbf2b9d6) * scaler; +PS0f = R4f.y; +R3f.xyzw = (textureLod(textureUnitPS0, R7f.xy,0.0).xyzw); +R0f.xyzw = (textureLod(textureUnitPS0, R0f.xy,0.0).xyzw); +R1f.xyzw = (textureLod(textureUnitPS0, R1f.zy,0.0).xyzw); +R2f.xyzw = (textureLod(textureUnitPS0, R2f.xy,0.0).xyzw); +// 0 +backupReg0f = R0f.x; +backupReg1f = R0f.w; +PV0f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y), R0f.y); +PV0f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y), R0f.z); +PV0f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y), backupReg0f); +PV0f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y), backupReg1f); +R0f.y = R7f.y + intBitsToFloat(0x3c360b60) * scaler; +PS0f = R0f.y; +// 1 +R123f.x = (mul_nonIEEE(R3f.y,intBitsToFloat(uf_remappedPS[0].x)) + PV0f.x); +PV1f.x = R123f.x; +R123f.y = (mul_nonIEEE(R3f.w,intBitsToFloat(uf_remappedPS[0].x)) + PV0f.w); +PV1f.y = R123f.y; +R123f.z = (mul_nonIEEE(R3f.x,intBitsToFloat(uf_remappedPS[0].x)) + PV0f.z); +PV1f.z = R123f.z; +R123f.w = (mul_nonIEEE(R3f.z,intBitsToFloat(uf_remappedPS[0].x)) + PV0f.y); +PV1f.w = R123f.w; +R0f.x = R7f.x; +PS1f = R0f.x; +// 2 +R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y),R1f.y) + PV1f.x); +PV0f.x = R123f.x; +R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y),R1f.x) + PV1f.z); +PV0f.y = R123f.y; +R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y),R1f.w) + PV1f.y); +PV0f.z = R123f.z; +R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y),R1f.z) + PV1f.w); +PV0f.w = R123f.w; +R1f.y = R7f.y + intBitsToFloat(0xbc360b60) * scaler; +PS0f = R1f.y; +// 3 +backupReg0f = R2f.z; +R3f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),R2f.x) + PV0f.y); +R3f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),R2f.y) + PV0f.x); +R2f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),R2f.w) + PV0f.z); +R2f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),backupReg0f) + PV0f.w); +R1f.x = R7f.x; +PS1f = R1f.x; +// 4 +R2f.x = R7f.x; +R2f.y = R7f.y + intBitsToFloat(0x3c72b9d6) * scaler; +R6f.z = R7f.x; +R6f.y = R7f.y + intBitsToFloat(0xbc72b9d6) * scaler; +PS0f = R6f.y; +R4f.xyzw = (textureLod(textureUnitPS0, R4f.zy,0.0).xyzw); +R0f.xyzw = (textureLod(textureUnitPS0, R0f.xy,0.0).xyzw); +R1f.xyzw = (textureLod(textureUnitPS0, R1f.xy,0.0).xyzw); +R5f.xyzw = (textureLod(textureUnitPS0, R2f.xy,0.0).xyzw); +// 0 +R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),R4f.x) + R3f.x); +PV0f.x = R123f.x; +R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),R4f.w) + R2f.z); +PV0f.y = R123f.y; +R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),R4f.z) + R2f.w); +PV0f.z = R123f.z; +R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),R4f.y) + R3f.y); +PV0f.w = R123f.w; +R3f.y = R7f.y + intBitsToFloat(0x3c97b426) * scaler; +PS0f = R3f.y; +// 1 +R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R0f.w) + PV0f.y); +PV1f.x = R123f.x; +R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R0f.x) + PV0f.x); +PV1f.y = R123f.y; +R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R0f.z) + PV0f.z); +PV1f.z = R123f.z; +R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R0f.y) + PV0f.w); +PV1f.w = R123f.w; +R3f.x = R7f.x; +PS1f = R3f.x; +// 2 +R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R1f.w) + PV1f.x); +PV0f.x = R123f.x; +R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R1f.z) + PV1f.z); +PV0f.y = R123f.y; +R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R1f.y) + PV1f.w); +PV0f.z = R123f.z; +R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R1f.x) + PV1f.y); +PV0f.w = R123f.w; +R1f.y = R7f.y + intBitsToFloat(0xbc97b426) * scaler; +PS0f = R1f.y; +// 3 +R0f.x = (mul_nonIEEE(R5f.z,intBitsToFloat(uf_remappedPS[1].x)) + PV0f.y); +R0f.y = (mul_nonIEEE(R5f.w,intBitsToFloat(uf_remappedPS[1].x)) + PV0f.x); +R5f.z = (mul_nonIEEE(R5f.y,intBitsToFloat(uf_remappedPS[1].x)) + PV0f.z); +R5f.w = (mul_nonIEEE(R5f.x,intBitsToFloat(uf_remappedPS[1].x)) + PV0f.w); +R1f.x = R7f.x; +PS1f = R1f.x; +// 4 +R5f.x = R7f.x; +R5f.y = R7f.y + intBitsToFloat(0x3cb60b60) * scaler; +R4f.z = R7f.x; +R4f.y = R7f.y + intBitsToFloat(0xbcb60b60) * scaler; +PS0f = R4f.y; +R6f.xyzw = (textureLod(textureUnitPS0, R6f.zy,0.0).xyzw); +R3f.xyzw = (textureLod(textureUnitPS0, R3f.xy,0.0).xyzw); +R1f.xyzw = (textureLod(textureUnitPS0, R1f.xy,0.0).xyzw); +R2f.xyzw = (textureLod(textureUnitPS0, R5f.xy,0.0).xyzw); +// 0 +R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x),R6f.z) + R0f.x); +PV0f.x = R123f.x; +R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x),R6f.y) + R5f.z); +PV0f.y = R123f.y; +R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x),R6f.x) + R5f.w); +PV0f.z = R123f.z; +R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x),R6f.w) + R0f.y); +PV0f.w = R123f.w; +R0f.y = R7f.y + intBitsToFloat(0x3cd4629b) * scaler; +PS0f = R0f.y; +// 1 +R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R3f.y) + PV0f.y); +PV1f.x = R123f.x; +R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R3f.w) + PV0f.w); +PV1f.y = R123f.y; +R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R3f.x) + PV0f.z); +PV1f.z = R123f.z; +R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R3f.z) + PV0f.x); +PV1f.w = R123f.w; +R0f.x = R7f.x; +PS1f = R0f.x; +// 2 +R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R1f.y) + PV1f.x); +PV0f.x = R123f.x; +R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R1f.x) + PV1f.z); +PV0f.y = R123f.y; +R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R1f.w) + PV1f.y); +PV0f.z = R123f.z; +R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R1f.z) + PV1f.w); +PV0f.w = R123f.w; +R1f.y = R7f.y + intBitsToFloat(0xbcd4629b) * scaler; +PS0f = R1f.y; +// 3 +backupReg0f = R2f.z; +R3f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),R2f.x) + PV0f.y); +R3f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),R2f.y) + PV0f.x); +R2f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),R2f.w) + PV0f.z); +R2f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),backupReg0f) + PV0f.w); +R1f.x = R7f.x; +PS1f = R1f.x; +// 4 +R2f.x = R7f.x; +R2f.y = R7f.y + intBitsToFloat(0x3cf2b9d6) * scaler; +R6f.z = R7f.x; +R6f.y = R7f.y + intBitsToFloat(0xbcf2b9d6) * scaler; +PS0f = R6f.y; +R4f.xyzw = (textureLod(textureUnitPS0, R4f.zy,0.0).xyzw); +R0f.xyzw = (textureLod(textureUnitPS0, R0f.xy,0.0).xyzw); +R1f.xyzw = (textureLod(textureUnitPS0, R1f.xy,0.0).xyzw); +R5f.xyzw = (textureLod(textureUnitPS0, R2f.xy,0.0).xyzw); +// 0 +R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),R4f.x) + R3f.x); +PV0f.x = R123f.x; +R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),R4f.w) + R2f.z); +PV0f.y = R123f.y; +R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),R4f.z) + R2f.w); +PV0f.z = R123f.z; +R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),R4f.y) + R3f.y); +PV0f.w = R123f.w; +R3f.y = R7f.y + intBitsToFloat(0x3d088888) * scaler; +PS0f = R3f.y; +// 1 +R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R0f.w) + PV0f.y); +PV1f.x = R123f.x; +R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R0f.x) + PV0f.x); +PV1f.y = R123f.y; +R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R0f.z) + PV0f.z); +PV1f.z = R123f.z; +R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R0f.y) + PV0f.w); +PV1f.w = R123f.w; +R3f.x = R7f.x; +PS1f = R3f.x; +// 2 +R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R1f.w) + PV1f.x); +PV0f.x = R123f.x; +R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R1f.z) + PV1f.z); +PV0f.y = R123f.y; +R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R1f.y) + PV1f.w); +PV0f.z = R123f.z; +R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R1f.x) + PV1f.y); +PV0f.w = R123f.w; +R1f.y = R7f.y + intBitsToFloat(0xbd088888) * scaler; +PS0f = R1f.y; +// 3 +R0f.x = (mul_nonIEEE(R5f.z,intBitsToFloat(uf_remappedPS[2].x)) + PV0f.y); +R0f.y = (mul_nonIEEE(R5f.w,intBitsToFloat(uf_remappedPS[2].x)) + PV0f.x); +R5f.z = (mul_nonIEEE(R5f.y,intBitsToFloat(uf_remappedPS[2].x)) + PV0f.z); +R5f.w = (mul_nonIEEE(R5f.x,intBitsToFloat(uf_remappedPS[2].x)) + PV0f.w); +R1f.x = R7f.x; +PS1f = R1f.x; +// 4 +R5f.x = R7f.x; +R5f.y = R7f.y + intBitsToFloat(0x3d17b426) * scaler; +R4f.z = R7f.x; +R4f.y = R7f.y + intBitsToFloat(0xbd17b426) * scaler; +PS0f = R4f.y; +R6f.xyzw = (textureLod(textureUnitPS0, R6f.zy,0.0).xyzw); +R3f.xyzw = (textureLod(textureUnitPS0, R3f.xy,0.0).xyzw); +R1f.xyzw = (textureLod(textureUnitPS0, R1f.xy,0.0).xyzw); +R2f.xyzw = (textureLod(textureUnitPS0, R5f.xy,0.0).xyzw); +// 0 +R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].x),R6f.z) + R0f.x); +PV0f.x = R123f.x; +R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].x),R6f.y) + R5f.z); +PV0f.y = R123f.y; +R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].x),R6f.x) + R5f.w); +PV0f.z = R123f.z; +R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].x),R6f.w) + R0f.y); +PV0f.w = R123f.w; +R0f.y = R7f.y + intBitsToFloat(0x3d26dfc3) * scaler; +PS0f = R0f.y; +// 1 +R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R3f.y) + PV0f.y); +PV1f.x = R123f.x; +R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R3f.w) + PV0f.w); +PV1f.y = R123f.y; +R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R3f.x) + PV0f.z); +PV1f.z = R123f.z; +R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R3f.z) + PV0f.x); +PV1f.w = R123f.w; +R0f.x = R7f.x; +PS1f = R0f.x; +// 2 +backupReg0f = R7f.y; +R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R1f.y) + PV1f.x); +PV0f.x = R123f.x; +R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R1f.x) + PV1f.z); +PV0f.y = R123f.y; +R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R1f.w) + PV1f.y); +PV0f.z = R123f.z; +R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R1f.z) + PV1f.w); +PV0f.w = R123f.w; +R7f.y = backupReg0f + intBitsToFloat(0xbd26dfc3) * scaler; +PS0f = R7f.y; +// 3 +backupReg0f = R2f.x; +backupReg1f = R2f.y; +backupReg2f = R2f.z; +R2f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),backupReg0f) + PV0f.y); +R2f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),backupReg1f) + PV0f.x); +R2f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),R2f.w) + PV0f.z); +R2f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),backupReg2f) + PV0f.w); +R4f.xyzw = (textureLod(textureUnitPS0, R4f.zy,0.0).xyzw); +R0f.xyzw = (textureLod(textureUnitPS0, R0f.xy,0.0).xyzw); +R7f.xyzw = (textureLod(textureUnitPS0, R7f.xy,0.0).xyzw); +// 0 +R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),R4f.x) + R2f.x); +PV0f.x = R123f.x; +R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),R4f.w) + R2f.z); +PV0f.y = R123f.y; +R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),R4f.z) + R2f.w); +PV0f.z = R123f.z; +R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),R4f.y) + R2f.y); +PV0f.w = R123f.w; +// 1 +R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),R0f.w) + PV0f.y); +PV1f.x = R123f.x; +R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),R0f.x) + PV0f.x); +PV1f.y = R123f.y; +R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),R0f.z) + PV0f.z); +PV1f.z = R123f.z; +R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),R0f.y) + PV0f.w); +PV1f.w = R123f.w; +// 2 +backupReg0f = R7f.x; +backupReg1f = R7f.y; +backupReg2f = R7f.z; +backupReg3f = R7f.w; +R7f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),backupReg0f) + PV1f.y); +R7f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),backupReg1f) + PV1f.w); +R7f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),backupReg2f) + PV1f.z); +R7f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),backupReg3f) + PV1f.x); +// export +passPixelColor0 = vec4(R7f.x, R7f.y, R7f.z, R7f.w); +} diff --git a/Source/TwilightPrincessHD/c612390d4c70f430_0000000000000079_ps.txt b/Source/TwilightPrincessHD/c612390d4c70f430_0000000000000079_ps.txt new file mode 100644 index 00000000..7b584bb4 --- /dev/null +++ b/Source/TwilightPrincessHD/c612390d4c70f430_0000000000000079_ps.txt @@ -0,0 +1,541 @@ +#version 420 +#extension GL_ARB_texture_gather : enable +#extension GL_ARB_separate_shader_objects : enable +// shader c612390d4c70f430 //cutscene focus n bloom + +uniform ivec4 uf_remappedPS[5]; +layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0xf597f000 res 480x270x1 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 +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){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; } +void main() +{ +vec4 R0f = vec4(0.0); +vec4 R1f = vec4(0.0); +vec4 R2f = vec4(0.0); +vec4 R3f = vec4(0.0); +vec4 R4f = vec4(0.0); +vec4 R5f = vec4(0.0); +vec4 R6f = vec4(0.0); +vec4 R7f = vec4(0.0); +vec4 R123f = 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; +float scaler; +int tempResulti; +ivec4 ARi = ivec4(0); +bool predResult = true; +vec3 cubeMapSTM; +int cubeMapFaceId; +R0f = vec4(gl_FragCoord.xy*uf_fragCoordScale,gl_FragCoord.zw); +scaler = uf_fragCoordScale.x; +// 0 +R7f.x = R0f.x * intBitsToFloat(0x3b088889); +PV0f.x = R7f.x; +R7f.y = R0f.y * intBitsToFloat(0x3b72b9d6); +PV0f.y = R7f.y; +// 1 +R0f.x = PV0f.x + intBitsToFloat(0x3b088889) * scaler; +R0f.y = PV0f.y; +R1f.z = PV0f.y; +R1f.x = PV0f.x + intBitsToFloat(0xbb088889) * scaler; +PS1f = R1f.x; +// 2 +R2f.x = R7f.x + intBitsToFloat(0x3b888889) * scaler; +R2f.y = R7f.y; +R4f.z = R7f.y; +R4f.x = R7f.x + intBitsToFloat(0xbb888889) * scaler; +PS0f = R4f.x; +R3f.xyzw = (textureLod(textureUnitPS0, R7f.xy,0.0).xyzw); +R0f.xyzw = (textureLod(textureUnitPS0, R0f.xy,0.0).xyzw); +R1f.xyzw = (textureLod(textureUnitPS0, R1f.xz,0.0).xyzw); +R2f.xyzw = (textureLod(textureUnitPS0, R2f.xy,0.0).xyzw); +// 0 +backupReg0f = R0f.y; +backupReg1f = R0f.x; +backupReg2f = R0f.w; +PV0f.x = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y), R0f.z); +PV0f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y), backupReg0f); +PV0f.z = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y), backupReg1f); +PV0f.w = mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y), backupReg2f); +R0f.x = R7f.x + intBitsToFloat(0x3bccccce) * scaler; +PS0f = R0f.x; +// 1 +R123f.x = (mul_nonIEEE(R3f.w,intBitsToFloat(uf_remappedPS[0].x)) + PV0f.w); +PV1f.x = R123f.x; +R123f.y = (mul_nonIEEE(R3f.y,intBitsToFloat(uf_remappedPS[0].x)) + PV0f.y); +PV1f.y = R123f.y; +R123f.z = (mul_nonIEEE(R3f.x,intBitsToFloat(uf_remappedPS[0].x)) + PV0f.z); +PV1f.z = R123f.z; +R123f.w = (mul_nonIEEE(R3f.z,intBitsToFloat(uf_remappedPS[0].x)) + PV0f.x); +PV1f.w = R123f.w; +R0f.y = R7f.y; +PS1f = R0f.y; +// 2 +R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y),R1f.y) + PV1f.y); +PV0f.x = R123f.x; +R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y),R1f.x) + PV1f.z); +PV0f.y = R123f.y; +R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y),R1f.w) + PV1f.x); +PV0f.z = R123f.z; +R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].y),R1f.z) + PV1f.w); +PV0f.w = R123f.w; +R1f.x = R7f.x + intBitsToFloat(0xbbccccce) * scaler; +PS0f = R1f.x; +// 3 +backupReg0f = R2f.z; +R3f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),R2f.w) + PV0f.z); +R3f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),R2f.x) + PV0f.y); +R2f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),backupReg0f) + PV0f.w); +R2f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),R2f.y) + PV0f.x); +R1f.y = R7f.y; +PS1f = R1f.y; +// 4 +R2f.x = R7f.x + intBitsToFloat(0x3c088889) * scaler; +R2f.y = R7f.y; +R6f.z = R7f.y; +R6f.x = R7f.x + intBitsToFloat(0xbc088889) * scaler; +PS0f = R6f.x; +R4f.xyzw = (textureLod(textureUnitPS0, R4f.xz,0.0).xyzw); +R0f.xyzw = (textureLod(textureUnitPS0, R0f.xy,0.0).xyzw); +R1f.xyzw = (textureLod(textureUnitPS0, R1f.xy,0.0).xyzw); +R5f.xyzw = (textureLod(textureUnitPS0, R2f.xy,0.0).xyzw); +// 0 +R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),R4f.x) + R3f.y); +PV0f.x = R123f.x; +R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),R4f.w) + R3f.x); +PV0f.y = R123f.y; +R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),R4f.z) + R2f.z); +PV0f.z = R123f.z; +R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].z),R4f.y) + R2f.w); +PV0f.w = R123f.w; +R3f.x = R7f.x + intBitsToFloat(0x3c2aaaab) * scaler; +PS0f = R3f.x; +// 1 +R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R0f.x) + PV0f.x); +PV1f.x = R123f.x; +R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R0f.w) + PV0f.y); +PV1f.y = R123f.y; +R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R0f.z) + PV0f.z); +PV1f.z = R123f.z; +R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R0f.y) + PV0f.w); +PV1f.w = R123f.w; +R3f.y = R7f.y; +PS1f = R3f.y; +// 2 +R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R1f.w) + PV1f.y); +PV0f.x = R123f.x; +R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R1f.z) + PV1f.z); +PV0f.y = R123f.y; +R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R1f.y) + PV1f.w); +PV0f.z = R123f.z; +R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].w),R1f.x) + PV1f.x); +PV0f.w = R123f.w; +R1f.x = R7f.x + intBitsToFloat(0xbc2aaaab) * scaler; +PS0f = R1f.x; +// 3 +R0f.x = (mul_nonIEEE(R5f.w,intBitsToFloat(uf_remappedPS[1].x)) + PV0f.x); +R0f.y = (mul_nonIEEE(R5f.z,intBitsToFloat(uf_remappedPS[1].x)) + PV0f.y); +R5f.z = (mul_nonIEEE(R5f.y,intBitsToFloat(uf_remappedPS[1].x)) + PV0f.z); +R5f.w = (mul_nonIEEE(R5f.x,intBitsToFloat(uf_remappedPS[1].x)) + PV0f.w); +R1f.y = R7f.y; +PS1f = R1f.y; +// 4 +R5f.x = R7f.x + intBitsToFloat(0x3c4cccce) * scaler; +R5f.y = R7f.y; +R4f.z = R7f.y; +R4f.x = R7f.x + intBitsToFloat(0xbc4cccce) * scaler; +PS0f = R4f.x; +R6f.xyzw = (textureLod(textureUnitPS0, R6f.xz,0.0).xyzw); +R3f.xyzw = (textureLod(textureUnitPS0, R3f.xy,0.0).xyzw); +R1f.xyzw = (textureLod(textureUnitPS0, R1f.xy,0.0).xyzw); +R2f.xyzw = (textureLod(textureUnitPS0, R5f.xy,0.0).xyzw); +// 0 +R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x),R6f.z) + R0f.y); +PV0f.x = R123f.x; +R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x),R6f.y) + R5f.z); +PV0f.y = R123f.y; +R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x),R6f.x) + R5f.w); +PV0f.z = R123f.z; +R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].x),R6f.w) + R0f.x); +PV0f.w = R123f.w; +R0f.x = R7f.x + intBitsToFloat(0x3c6eeef0) * scaler; +PS0f = R0f.x; +// 1 +R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R3f.w) + PV0f.w); +PV1f.x = R123f.x; +R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R3f.y) + PV0f.y); +PV1f.y = R123f.y; +R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R3f.x) + PV0f.z); +PV1f.z = R123f.z; +R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R3f.z) + PV0f.x); +PV1f.w = R123f.w; +R0f.y = R7f.y; +PS1f = R0f.y; +// 2 +R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R1f.y) + PV1f.y); +PV0f.x = R123f.x; +R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R1f.x) + PV1f.z); +PV0f.y = R123f.y; +R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R1f.w) + PV1f.x); +PV0f.z = R123f.z; +R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].y),R1f.z) + PV1f.w); +PV0f.w = R123f.w; +R1f.x = R7f.x + intBitsToFloat(0xbc6eeef0) * scaler; +PS0f = R1f.x; +// 3 +backupReg0f = R2f.z; +R3f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),R2f.w) + PV0f.z); +R3f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),R2f.x) + PV0f.y); +R2f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),backupReg0f) + PV0f.w); +R2f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),R2f.y) + PV0f.x); +R1f.y = R7f.y; +PS1f = R1f.y; +// 4 +R2f.x = R7f.x + intBitsToFloat(0x3c888889) * scaler; +R2f.y = R7f.y; +R6f.z = R7f.y; +R6f.x = R7f.x + intBitsToFloat(0xbc888889) * scaler; +PS0f = R6f.x; +R4f.xyzw = (textureLod(textureUnitPS0, R4f.xz,0.0).xyzw); +R0f.xyzw = (textureLod(textureUnitPS0, R0f.xy,0.0).xyzw); +R1f.xyzw = (textureLod(textureUnitPS0, R1f.xy,0.0).xyzw); +R5f.xyzw = (textureLod(textureUnitPS0, R2f.xy,0.0).xyzw); +// 0 +R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),R4f.x) + R3f.y); +PV0f.x = R123f.x; +R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),R4f.w) + R3f.x); +PV0f.y = R123f.y; +R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),R4f.z) + R2f.z); +PV0f.z = R123f.z; +R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z),R4f.y) + R2f.w); +PV0f.w = R123f.w; +R3f.x = R7f.x + intBitsToFloat(0x3c99999a) * scaler; +PS0f = R3f.x; +// 1 +R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R0f.x) + PV0f.x); +PV1f.x = R123f.x; +R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R0f.w) + PV0f.y); +PV1f.y = R123f.y; +R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R0f.z) + PV0f.z); +PV1f.z = R123f.z; +R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R0f.y) + PV0f.w); +PV1f.w = R123f.w; +R3f.y = R7f.y; +PS1f = R3f.y; +// 2 +R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R1f.w) + PV1f.y); +PV0f.x = R123f.x; +R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R1f.z) + PV1f.z); +PV0f.y = R123f.y; +R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R1f.y) + PV1f.w); +PV0f.z = R123f.z; +R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R1f.x) + PV1f.x); +PV0f.w = R123f.w; +R1f.x = R7f.x + intBitsToFloat(0xbc99999a) * scaler; +PS0f = R1f.x; +// 3 +R0f.x = (mul_nonIEEE(R5f.w,intBitsToFloat(uf_remappedPS[2].x)) + PV0f.x); +R0f.y = (mul_nonIEEE(R5f.z,intBitsToFloat(uf_remappedPS[2].x)) + PV0f.y); +R5f.z = (mul_nonIEEE(R5f.y,intBitsToFloat(uf_remappedPS[2].x)) + PV0f.z); +R5f.w = (mul_nonIEEE(R5f.x,intBitsToFloat(uf_remappedPS[2].x)) + PV0f.w); +R1f.y = R7f.y; +PS1f = R1f.y; +// 4 +R5f.x = R7f.x + intBitsToFloat(0x3caaaaab) * scaler; +R5f.y = R7f.y; +R4f.z = R7f.y; +R4f.x = R7f.x + intBitsToFloat(0xbcaaaaab) * scaler; +PS0f = R4f.x; +R6f.xyzw = (textureLod(textureUnitPS0, R6f.xz,0.0).xyzw); +R3f.xyzw = (textureLod(textureUnitPS0, R3f.xy,0.0).xyzw); +R1f.xyzw = (textureLod(textureUnitPS0, R1f.xy,0.0).xyzw); +R2f.xyzw = (textureLod(textureUnitPS0, R5f.xy,0.0).xyzw); +// 0 +R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].x),R6f.z) + R0f.y); +PV0f.x = R123f.x; +R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].x),R6f.y) + R5f.z); +PV0f.y = R123f.y; +R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].x),R6f.x) + R5f.w); +PV0f.z = R123f.z; +R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].x),R6f.w) + R0f.x); +PV0f.w = R123f.w; +R0f.x = R7f.x + intBitsToFloat(0x3cbbbbbc) * scaler; +PS0f = R0f.x; +// 1 +R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R3f.w) + PV0f.w); +PV1f.x = R123f.x; +R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R3f.y) + PV0f.y); +PV1f.y = R123f.y; +R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R3f.x) + PV0f.z); +PV1f.z = R123f.z; +R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R3f.z) + PV0f.x); +PV1f.w = R123f.w; +R0f.y = R7f.y; +PS1f = R0f.y; +// 2 +R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R1f.y) + PV1f.y); +PV0f.x = R123f.x; +R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R1f.x) + PV1f.z); +PV0f.y = R123f.y; +R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R1f.w) + PV1f.x); +PV0f.z = R123f.z; +R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R1f.z) + PV1f.w); +PV0f.w = R123f.w; +R1f.x = R7f.x + intBitsToFloat(0xbcbbbbbc) * scaler; +PS0f = R1f.x; +// 3 +backupReg0f = R2f.z; +R3f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),R2f.w) + PV0f.z); +R3f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),R2f.x) + PV0f.y); +R2f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),backupReg0f) + PV0f.w); +R2f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),R2f.y) + PV0f.x); +R1f.y = R7f.y; +PS1f = R1f.y; +// 4 +R2f.x = R7f.x + intBitsToFloat(0x3cccccce) * scaler; +R2f.y = R7f.y; +R6f.z = R7f.y; +R6f.x = R7f.x + intBitsToFloat(0xbcccccce) * scaler; +PS0f = R6f.x; +R4f.xyzw = (textureLod(textureUnitPS0, R4f.xz,0.0).xyzw); +R0f.xyzw = (textureLod(textureUnitPS0, R0f.xy,0.0).xyzw); +R1f.xyzw = (textureLod(textureUnitPS0, R1f.xy,0.0).xyzw); +R5f.xyzw = (textureLod(textureUnitPS0, R2f.xy,0.0).xyzw); +// 0 +R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),R4f.x) + R3f.y); +PV0f.x = R123f.x; +R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),R4f.w) + R3f.x); +PV0f.y = R123f.y; +R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),R4f.z) + R2f.z); +PV0f.z = R123f.z; +R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z),R4f.y) + R2f.w); +PV0f.w = R123f.w; +R3f.x = R7f.x + intBitsToFloat(0x3cdddddf) * scaler; +PS0f = R3f.x; +// 1 +R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),R0f.x) + PV0f.x); +PV1f.x = R123f.x; +R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),R0f.w) + PV0f.y); +PV1f.y = R123f.y; +R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),R0f.z) + PV0f.z); +PV1f.z = R123f.z; +R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),R0f.y) + PV0f.w); +PV1f.w = R123f.w; +R3f.y = R7f.y; +PS1f = R3f.y; +// 2 +R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),R1f.w) + PV1f.y); +PV0f.x = R123f.x; +R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),R1f.z) + PV1f.z); +PV0f.y = R123f.y; +R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),R1f.y) + PV1f.w); +PV0f.z = R123f.z; +R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].w),R1f.x) + PV1f.x); +PV0f.w = R123f.w; +R1f.x = R7f.x + intBitsToFloat(0xbcdddddf) * scaler; +PS0f = R1f.x; +// 3 +R0f.x = (mul_nonIEEE(R5f.w,intBitsToFloat(uf_remappedPS[3].x)) + PV0f.x); +R0f.y = (mul_nonIEEE(R5f.z,intBitsToFloat(uf_remappedPS[3].x)) + PV0f.y); +R5f.z = (mul_nonIEEE(R5f.y,intBitsToFloat(uf_remappedPS[3].x)) + PV0f.z); +R5f.w = (mul_nonIEEE(R5f.x,intBitsToFloat(uf_remappedPS[3].x)) + PV0f.w); +R1f.y = R7f.y; +PS1f = R1f.y; +// 4 +R5f.x = R7f.x + intBitsToFloat(0x3ceeeef0) * scaler; +R5f.y = R7f.y; +R4f.z = R7f.y; +R4f.x = R7f.x + intBitsToFloat(0xbceeeef0) * scaler; +PS0f = R4f.x; +R6f.xyzw = (textureLod(textureUnitPS0, R6f.xz,0.0).xyzw); +R3f.xyzw = (textureLod(textureUnitPS0, R3f.xy,0.0).xyzw); +R1f.xyzw = (textureLod(textureUnitPS0, R1f.xy,0.0).xyzw); +R2f.xyzw = (textureLod(textureUnitPS0, R5f.xy,0.0).xyzw); +// 0 +R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].x),R6f.z) + R0f.y); +PV0f.x = R123f.x; +R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].x),R6f.y) + R5f.z); +PV0f.y = R123f.y; +R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].x),R6f.x) + R5f.w); +PV0f.z = R123f.z; +R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].x),R6f.w) + R0f.x); +PV0f.w = R123f.w; +R0f.x = R7f.x + intBitsToFloat(0x3d000000) * scaler; +PS0f = R0f.x; +// 1 +R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].y),R3f.w) + PV0f.w); +PV1f.x = R123f.x; +R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].y),R3f.y) + PV0f.y); +PV1f.y = R123f.y; +R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].y),R3f.x) + PV0f.z); +PV1f.z = R123f.z; +R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].y),R3f.z) + PV0f.x); +PV1f.w = R123f.w; +R0f.y = R7f.y; +PS1f = R0f.y; +// 2 +R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].y),R1f.y) + PV1f.y); +PV0f.x = R123f.x; +R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].y),R1f.x) + PV1f.z); +PV0f.y = R123f.y; +R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].y),R1f.w) + PV1f.x); +PV0f.z = R123f.z; +R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].y),R1f.z) + PV1f.w); +PV0f.w = R123f.w; +R1f.x = R7f.x + intBitsToFloat(0xbd000000) * scaler; +PS0f = R1f.x; +// 3 +backupReg0f = R2f.z; +R3f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].z),R2f.w) + PV0f.z); +R3f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].z),R2f.x) + PV0f.y); +R2f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].z),backupReg0f) + PV0f.w); +R2f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].z),R2f.y) + PV0f.x); +R1f.y = R7f.y; +PS1f = R1f.y; +// 4 +R2f.x = R7f.x + intBitsToFloat(0x3d088889) * scaler; +R2f.y = R7f.y; +R6f.z = R7f.y; +R6f.x = R7f.x + intBitsToFloat(0xbd088889) * scaler; +PS0f = R6f.x; +R4f.xyzw = (textureLod(textureUnitPS0, R4f.xz,0.0).xyzw); +R0f.xyzw = (textureLod(textureUnitPS0, R0f.xy,0.0).xyzw); +R1f.xyzw = (textureLod(textureUnitPS0, R1f.xy,0.0).xyzw); +R5f.xyzw = (textureLod(textureUnitPS0, R2f.xy,0.0).xyzw); +// 0 +R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].z),R4f.x) + R3f.y); +PV0f.x = R123f.x; +R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].z),R4f.w) + R3f.x); +PV0f.y = R123f.y; +R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].z),R4f.z) + R2f.z); +PV0f.z = R123f.z; +R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].z),R4f.y) + R2f.w); +PV0f.w = R123f.w; +R3f.x = R7f.x + intBitsToFloat(0x3d111112) * scaler; +PS0f = R3f.x; +// 1 +R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].w),R0f.x) + PV0f.x); +PV1f.x = R123f.x; +R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].w),R0f.w) + PV0f.y); +PV1f.y = R123f.y; +R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].w),R0f.z) + PV0f.z); +PV1f.z = R123f.z; +R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].w),R0f.y) + PV0f.w); +PV1f.w = R123f.w; +R3f.y = R7f.y; +PS1f = R3f.y; +// 2 +R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].w),R1f.w) + PV1f.y); +PV0f.x = R123f.x; +R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].w),R1f.z) + PV1f.z); +PV0f.y = R123f.y; +R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].w),R1f.y) + PV1f.w); +PV0f.z = R123f.z; +R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].w),R1f.x) + PV1f.x); +PV0f.w = R123f.w; +R1f.x = R7f.x + intBitsToFloat(0xbd111112) * scaler; +PS0f = R1f.x; +// 3 +R0f.x = (mul_nonIEEE(R5f.w,intBitsToFloat(uf_remappedPS[4].x)) + PV0f.x); +R0f.y = (mul_nonIEEE(R5f.z,intBitsToFloat(uf_remappedPS[4].x)) + PV0f.y); +R5f.z = (mul_nonIEEE(R5f.y,intBitsToFloat(uf_remappedPS[4].x)) + PV0f.z); +R5f.w = (mul_nonIEEE(R5f.x,intBitsToFloat(uf_remappedPS[4].x)) + PV0f.w); +R1f.y = R7f.y; +PS1f = R1f.y; +// 4 +R5f.x = R7f.x + intBitsToFloat(0x3d19999a) * scaler; +R5f.y = R7f.y; +R4f.z = R7f.y; +R4f.x = R7f.x + intBitsToFloat(0xbd19999a) * scaler; +PS0f = R4f.x; +R6f.xyzw = (textureLod(textureUnitPS0, R6f.xz,0.0).xyzw); +R3f.xyzw = (textureLod(textureUnitPS0, R3f.xy,0.0).xyzw); +R1f.xyzw = (textureLod(textureUnitPS0, R1f.xy,0.0).xyzw); +R2f.xyzw = (textureLod(textureUnitPS0, R5f.xy,0.0).xyzw); +// 0 +R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].x),R6f.z) + R0f.y); +PV0f.x = R123f.x; +R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].x),R6f.y) + R5f.z); +PV0f.y = R123f.y; +R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].x),R6f.x) + R5f.w); +PV0f.z = R123f.z; +R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].x),R6f.w) + R0f.x); +PV0f.w = R123f.w; +R0f.x = R7f.x + intBitsToFloat(0x3d222223) * scaler; +PS0f = R0f.x; +// 1 +R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].y),R3f.w) + PV0f.w); +PV1f.x = R123f.x; +R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].y),R3f.y) + PV0f.y); +PV1f.y = R123f.y; +R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].y),R3f.x) + PV0f.z); +PV1f.z = R123f.z; +R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].y),R3f.z) + PV0f.x); +PV1f.w = R123f.w; +R0f.y = R7f.y; +PS1f = R0f.y; +// 2 +backupReg0f = R7f.x; +R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].y),R1f.y) + PV1f.y); +PV0f.x = R123f.x; +R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].y),R1f.x) + PV1f.z); +PV0f.y = R123f.y; +R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].y),R1f.w) + PV1f.x); +PV0f.z = R123f.z; +R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].y),R1f.z) + PV1f.w); +PV0f.w = R123f.w; +R7f.x = backupReg0f + intBitsToFloat(0xbd222223) * scaler; +PS0f = R7f.x; +// 3 +backupReg0f = R2f.x; +backupReg1f = R2f.z; +backupReg2f = R2f.y; +R2f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].z),R2f.w) + PV0f.z); +R2f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].z),backupReg0f) + PV0f.y); +R2f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].z),backupReg1f) + PV0f.w); +R2f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].z),backupReg2f) + PV0f.x); +R4f.xyzw = (textureLod(textureUnitPS0, R4f.xz,0.0).xyzw); +R0f.xyzw = (textureLod(textureUnitPS0, R0f.xy,0.0).xyzw); +R7f.xyzw = (textureLod(textureUnitPS0, R7f.xy,0.0).xyzw); +// 0 +R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].z),R4f.x) + R2f.y); +PV0f.x = R123f.x; +R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].z),R4f.w) + R2f.x); +PV0f.y = R123f.y; +R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].z),R4f.z) + R2f.z); +PV0f.z = R123f.z; +R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].z),R4f.y) + R2f.w); +PV0f.w = R123f.w; +// 1 +R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].w),R0f.x) + PV0f.x); +PV1f.x = R123f.x; +R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].w),R0f.w) + PV0f.y); +PV1f.y = R123f.y; +R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].w),R0f.z) + PV0f.z); +PV1f.z = R123f.z; +R123f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].w),R0f.y) + PV0f.w); +PV1f.w = R123f.w; +// 2 +backupReg0f = R7f.x; +backupReg1f = R7f.y; +backupReg2f = R7f.z; +backupReg3f = R7f.w; +R7f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].w),backupReg0f) + PV1f.x); +R7f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].w),backupReg1f) + PV1f.w); +R7f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].w),backupReg2f) + PV1f.z); +R7f.w = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].w),backupReg3f) + PV1f.y); +// export +passPixelColor0 = vec4(R7f.x, R7f.y, R7f.z, R7f.w); +} diff --git a/Source/TwilightPrincessHD/e334517825fdd599_0000000000000079_ps.txt b/Source/TwilightPrincessHD/e334517825fdd599_0000000000000079_ps.txt new file mode 100644 index 00000000..22e6f384 --- /dev/null +++ b/Source/TwilightPrincessHD/e334517825fdd599_0000000000000079_ps.txt @@ -0,0 +1,78 @@ +#version 420 +#extension GL_ARB_texture_gather : enable +#extension GL_ARB_separate_shader_objects : enable +// shader e334517825fdd599 +//basline dof blur.. + +const float dither = 0.5 ; +const float scaleShader = 0.5; +const float scaleBlur = $scaleBlur; //0.125 4k +const int sampleScale = 2; +const float lightBloom = 0.95; + + + +layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0xf4001000 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 +layout(location = 0) in vec4 passParameterSem0; +layout(location = 0) out vec4 passPixelColor0; +uniform vec2 uf_fragCoordScale; + +// FabriceNeyret2 CC, single shader gaussian by intermediate MIPmap level. www.shadertoy.com/view/ltScRG +const int samples = 8 * sampleScale, //8 or 4 balances xy position +LOD = 2, // gaussian done on MIPmap at scale LOD +sLOD = 1 << LOD; // tile size = 2^LOD +const float sigma = float(samples) * .25; + +float gaussian(vec2 i) { + return exp(-.5* dot(i /= sigma, i)) / (6.28 * sigma*sigma); +} + +vec4 blur(sampler2D sp, vec2 U, vec2 scale) { + vec4 O = vec4(0.0); + int s = samples / sLOD; + + for (int i = 0; i < s*s; i++) { + vec2 d = vec2(i%s, i / s)*float(sLOD) - float(samples) / 2.; + O += gaussian(d) * textureLod(sp, U + scale * d, float(LOD)); + } + + //return O / O.a; + return vec4(O.x, O.y, O.z, 1.0)*18; // balance loss of brightness +} + +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 mix(0.0, a*b, (a != 0.0) && (b != 0.0));} +void main() +{ +vec4 R0f = vec4(0.0); +vec4 R9f = 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; + +vec2 coord = R0f.xy*textureSize(textureUnitPS0, 0); // +vec2 ps = vec2(1.0) / textureSize(textureUnitPS0, 0); +vec2 uv = coord * ps; + +R9f.xyzw = blur(textureUnitPS0, R0f.xy, ps*scaleBlur).xyzw; + +R0f.xyzw = (textureLod(textureUnitPS0, R0f.xy,0.0).xyzw); +R0f.xyz = mix(R0f.xyz, R9f.xyz, 0.75); +// export +passPixelColor0 = vec4(R9f.x, R9f.y, R9f.z, R0f.w); +} diff --git a/Source/TwilightPrincessHD/rules.txt b/Source/TwilightPrincessHD/rules.txt new file mode 100644 index 00000000..cef9585e --- /dev/null +++ b/Source/TwilightPrincessHD/rules.txt @@ -0,0 +1,261 @@ +[Definition] +titleIds = 000500001019C800,000500001019E600,000500001019E500 +name = Resolution +path = "The Legend of Zelda: Twilight Princess HD/Graphics/Resolution" +description = Changes the resolution of the game. +version = 3 + +[Preset] +name = 1920x1080 (Default) +$width = 1920 +$height = 1080 +$gameWidth = 1920 +$gameHeight = 1080 +$dither = 0.01 +$scaleShader = 1.0 +$scaleBlur = 0.05 +$internalRes = 1 +// Performance + + +[Preset] +name = 640x360 +$width = 640 +$height = 360 +$gameWidth = 1920 +$gameHeight = 1080 +$dither = 0.01 +$scaleShader = 1.0 +$scaleBlur = 0.05 +$internalRes = 1 + +[Preset] +name = 854x480 +$width = 854 +$height = 480 +$gameWidth = 1920 +$gameHeight = 1080 +$dither = 0.01 +$scaleShader = 1.0 +$scaleBlur = 0.05 +$internalRes = 1 + +[Preset] +name = 960x540 +$width = 960 +$height = 540 +$gameWidth = 1920 +$gameHeight = 1080 +$dither = 0.01 +$scaleShader = 1.0 +$scaleBlur = 0.05 +$internalRes = 1 + +[Preset] +name = 1280x720 +$width = 1280 +$height = 720 +$gameWidth = 1920 +$gameHeight = 1080 +$dither = 0.01 +$scaleShader = 1.0 +$scaleBlur = 0.05 +$internalRes = 1 + +// Quality + +[Preset] +name = 1600x900 +$width = 1600 +$height = 900 +$gameWidth = 1920 +$gameHeight = 1080 +$dither = 0.01 +$scaleShader = 1.0 +$scaleBlur = 0.05 +$internalRes = 1 + +[Preset] +name = 2560x1440 +$width = 2560 +$height = 1440 +$gameWidth = 1920 +$gameHeight = 1080 +$dither = 0.1 +$scaleShader = 1.0 +$scaleBlur = 0.25 +$internalRes = 1 + +[Preset] +name = 2732x1536 +$width = 2732 +$height = 1536 +$gameWidth = 1920 +$gameHeight = 1080 +$dither = 0.2 +$scaleShader = 1.0 +$scaleBlur = 0.25 +$internalRes = 1 + +[Preset] +name = 3200x1800 +$width = 3200 +$height = 1800 +$gameWidth = 1920 +$gameHeight = 1080 +$dither = 0.2 +$scaleShader = 1.0 +$scaleBlur = 0.5 +$internalRes = 1 + +[Preset] +name = 3840x2160 +$width = 3840 +$height = 2160 +$gameWidth = 1920 +$gameHeight = 1080 +$dither = 0.2 +$scaleShader = 1.0 +$scaleBlur = 0.5 +$internalRes = 1 + +[Preset] +name = 3840x2160 (4k - Native x2) x2 sub scaling +$width = 3840 +$height = 2160 +$gameWidth= 1920 +$gameHeight= 1080 +$internalRes = 2 +$dither = 0.2 +$scaleShader = 1.0 +$scaleBlur = 0.5 + + +[Preset] +name = 5120x2880 +$width = 5120 +$height = 2880 +$gameWidth = 1920 +$gameHeight = 1080 +$dither = 0.2 +$scaleShader = 1.0 +$scaleBlur = 0.5 +$internalRes = 1 + +// Enthusiast + +[Preset] +name = 7680x4320 +$width = 7680 +$height = 4320 +$gameWidth = 1920 +$gameHeight = 1080 +$dither = 0.25 +$scaleShader = 1.0 +$scaleBlur = 0.5 +$internalRes = 1 + +[TextureRedefine] +width = 1920 +height = 1088 +#formats = 0x011,0x01a +overwriteWidth = ($width/$gameWidth) * 1920 +overwriteHeight = ($height/$gameHeight) * 1088 + +[TextureRedefine] +width = 1920 +height = 1080 +#formats = +overwriteWidth = ($width/$gameWidth) * 1920 +overwriteHeight = ($height/$gameHeight) * 1080 + +[TextureRedefine] +width = 960 +height = 544 +#formats = 0x01a,0x011 +overwriteWidth = ($width/$gameWidth) * (960*$internalRes) +overwriteHeight = ($height/$gameHeight) * (544*$internalRes) + +[TextureRedefine] +width = 960 +height = 540 +#formats = 0x01a +overwriteWidth = ($width/$gameWidth) * (960*$internalRes) +overwriteHeight = ($height/$gameHeight) * (540*$internalRes) + +#[TextureRedefine] +#width = 864 +#height = 480 +##formats = +#overwriteWidth = ($width/$gameWidth) * 864 +#overwriteHeight = ($height/$gameHeight) * 480 +# +#[TextureRedefine] +#width = 854 +#height = 480 +##formats = +#overwriteWidth = ($width/$gameWidth) * 854 +#overwriteHeight = ($height/$gameHeight) * 480 +# +#[TextureRedefine] #shadows horsie +#width = 768 +#height = 768 +#formatsExcluded = +#overwriteWidth = ($width/$gameWidth) * 768 +#overwriteHeight = ($height/$gameHeight) * 768 +# +[TextureRedefine] # bloom n cutscene +width = 480 +height = 272 +#formats = 0x01a +overwriteWidth = ($width/$gameWidth) * (480*$internalRes) +overwriteHeight = ($height/$gameHeight) * (272*$internalRes) + +[TextureRedefine] # bloom n cutscene +width = 480 +height = 270 +#formats = 0x01a +overwriteWidth = ($width/$gameWidth) * (480*$internalRes) +overwriteHeight = ($height/$gameHeight) * (270*$internalRes) +# +##[TextureRedefine] #Dont scale +##width = 448 +##height = 384 +###formats = +##overwriteWidth = ($width/$gameWidth) * 448 +##overwriteHeight = ($height/$gameHeight) * 384 +# +##[TextureRedefine] # Dont scale +##width = 435 +##height = 381 +###formats = +##overwriteWidth = ($width/$gameWidth) * 435 +##overwriteHeight = ($height/$gameHeight) * 381 +# +#[TextureRedefine] #Wolf shadows +#width = 384 +#height = 384 +####formatsExcluded = +#overwriteWidth = ($width/$gameWidth) * 384 +#overwriteHeight = ($height/$gameHeight) * 384 +# +##[TextureRedefine] #Dont scale +##width = 320 +##height = 288 +###formats = 0x01a +##overwriteWidth = ($width/$gameWidth) * 320 +##overwriteHeight = ($height/$gameHeight) * 288 +# +##[TextureRedefine] #Dont scale +##width = 290 +##height = 280 +###formats = +##overwriteWidth = ($width/$gameWidth) * 290 +##overwriteHeight = ($height/$gameHeight) * 280 +# +##[TextureRedefine] # Dont scale +##width = 282 +##height = 272 +###formats = +##overwriteWidth = ($width/$gameWidth) * 282 +##overwriteHeight = ($height/$gameHeight) * 272