From a2630204fcb0d543c571c160f4a7bfcb80e941d5 Mon Sep 17 00:00:00 2001 From: NAVras-Z Date: Sat, 4 Nov 2017 13:55:31 +0800 Subject: [PATCH 1/2] [BotW] contrasty experimental saturation... again only scales original weight (saturation) so at least doesn't potentially mess things up like the last one. still no idea what's that two in uf_remappedPS, together they affect the threshold of saturate/desaturate and how much. perhaps just two calculated values based on some preset. --- .../bd8bba59e2149449_00000000000003c9_ps.txt | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Enhancement/BreathOfTheWild_Contrasty/bd8bba59e2149449_00000000000003c9_ps.txt b/Enhancement/BreathOfTheWild_Contrasty/bd8bba59e2149449_00000000000003c9_ps.txt index 33fb0f62..15af86b3 100644 --- a/Enhancement/BreathOfTheWild_Contrasty/bd8bba59e2149449_00000000000003c9_ps.txt +++ b/Enhancement/BreathOfTheWild_Contrasty/bd8bba59e2149449_00000000000003c9_ps.txt @@ -7,11 +7,14 @@ //----------------------------settings------------------------------------- #define adjust_bloom 1 +#define adjust_saturation 1 #define contrasty 1 // 0: disable, 1: enable. const float bloomFactor = 0.7; // 1.0 is neutral +const float satFactor = 1.3; // 1.0 is neutral. Experimental, adjust native saturation + const float gamma = 0.81; // 1.0 is neutral. Botw is already colour graded at this stage const float exposure = 1.17; // 1.0 is neutral const float vibrance = 0.008; // 0.0 is neutral @@ -140,7 +143,13 @@ R125f.w = R126f.x + -(PS0f); R126f.y = backupReg1f + -(PS0f); PS1f = R126f.y; // 12 + +#if (adjust_saturation == 1) +R126f.x = satFactor * (mul_nonIEEE(PV1f.y,intBitsToFloat(uf_remappedPS[0].y)) + intBitsToFloat(uf_remappedPS[0].x)); +#else R126f.x = (mul_nonIEEE(PV1f.y,intBitsToFloat(uf_remappedPS[0].y)) + intBitsToFloat(uf_remappedPS[0].x)); +#endif + PV0f.x = R126f.x; PV0f.y = -(R126f.z) + PV1f.x; // 13 From be7333c8fd15e3291a65a2349165fece7b998cfe Mon Sep 17 00:00:00 2001 From: Alex Chirila Date: Sat, 4 Nov 2017 11:41:30 +0200 Subject: [PATCH 2/2] [BotW] Added experimental shadow blur fix for the AMDShadows pack --- .../ffe0e8c84f6e8da9_000003c000009269_ps.txt | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Workaround/BreathOfTheWild_!AMDShadows/ffe0e8c84f6e8da9_000003c000009269_ps.txt b/Workaround/BreathOfTheWild_!AMDShadows/ffe0e8c84f6e8da9_000003c000009269_ps.txt index 38f4ab9b..910ead73 100644 --- a/Workaround/BreathOfTheWild_!AMDShadows/ffe0e8c84f6e8da9_000003c000009269_ps.txt +++ b/Workaround/BreathOfTheWild_!AMDShadows/ffe0e8c84f6e8da9_000003c000009269_ps.txt @@ -374,10 +374,10 @@ R2i.y = floatBitsToInt(intBitsToFloat(0x3da22222) * intBitsToFloat(PS1i)); R2i.z = floatBitsToInt(intBitsToFloat(0x3da22222) * intBitsToFloat(PS1i)); R13i.w = PV1i.y - R127i.x; PV0i.w = R13i.w; -PS0i = floatBitsToInt(uf_blockPS6[53].y); +PS0i = floatBitsToInt(uf_blockPS6[53].y * uf_fragCoordScale.y); PS0i = floatBitsToInt(intBitsToFloat(PS0i) / 2.0); // 3 -R6i.x = floatBitsToInt(uf_blockPS6[53].x); +R6i.x = floatBitsToInt(uf_blockPS6[53].x * uf_fragCoordScale.x); R6i.x = floatBitsToInt(intBitsToFloat(R6i.x) / 2.0); PV1i.y = PV0i.w << 0x00000002; R6i.z = floatBitsToInt(-(intBitsToFloat(PS0i))); @@ -493,7 +493,7 @@ PV0i.y = floatBitsToInt(intBitsToFloat(R0i.w) + intBitsToFloat(PV1i.w)); R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.y), intBitsToFloat(PS1i))); PV0i.z = R127i.z; // 13 -R7i.x = floatBitsToInt((uf_blockPS6[53].x * 0.5 + intBitsToFloat(PV0i.z))); +R7i.x = floatBitsToInt((uf_blockPS6[53].x * uf_fragCoordScale.x * 0.5 + intBitsToFloat(PV0i.z))); R127i.y = floatBitsToInt(intBitsToFloat(PV0i.x) + intBitsToFloat(0xbb03126f)); R127i.y = clampFI32(R127i.y); PV1i.y = R127i.y; @@ -503,18 +503,18 @@ R8i.x = floatBitsToInt(intBitsToFloat(PV0i.z) + intBitsToFloat(R6i.x)); PS1i = R8i.x; // 14 R1i.x = floatBitsToInt(intBitsToFloat(R127i.z) + intBitsToFloat(R126i.w)); -R7i.y = floatBitsToInt((uf_blockPS6[53].y * 0.5 + intBitsToFloat(PV1i.w))); +R7i.y = floatBitsToInt((uf_blockPS6[53].y * uf_fragCoordScale.y * 0.5 + intBitsToFloat(PV1i.w))); R7i.w = PV1i.y; R8i.y = floatBitsToInt(intBitsToFloat(PV1i.w) + intBitsToFloat(R6i.z)); PS0i = R8i.y; // 15 -R9i.x = floatBitsToInt((-(uf_blockPS6[53].x) * 0.5 + intBitsToFloat(R127i.z))); +R9i.x = floatBitsToInt((-(uf_blockPS6[53].x) * uf_fragCoordScale.x * 0.5 + intBitsToFloat(R127i.z))); R1i.y = floatBitsToInt(intBitsToFloat(R127i.w) + intBitsToFloat(R2i.w)); R8i.w = R127i.y; R1i.w = R127i.y; PS1i = R1i.w; // 16 -R9i.y = floatBitsToInt((-(uf_blockPS6[53].y) * 0.5 + intBitsToFloat(R127i.w))); +R9i.y = floatBitsToInt((-(uf_blockPS6[53].y) * uf_fragCoordScale.y * 0.5 + intBitsToFloat(R127i.w))); R9i.w = R127i.y; } if( activeMaskStackC[2] == true ) {