[BotW] Group GPU workarounds to tidy stuff up

(Partially) solves https://github.com/slashiee/cemu_graphic_packs/issues/375 (tidying them makes a lot of sense). We can't change the order of the graphic packs (without a lot of work on our end), if you want to see this happen you should file a feature request on Cemu's bug tracker: http://bugs.cemu.info
This commit is contained in:
Crementif 2019-06-13 17:58:41 +02:00
parent 1078e5543a
commit 50a397c02f
8 changed files with 97 additions and 97 deletions

View file

@ -1,43 +1,43 @@
#version 420 #version 420
#extension GL_ARB_texture_gather : enable #extension GL_ARB_texture_gather : enable
#extension GL_ARB_separate_shader_objects : enable #extension GL_ARB_separate_shader_objects : enable
// shader 1494f789ce9ac901 // shader 1494f789ce9ac901
uniform ivec4 uf_remappedPS[1]; uniform ivec4 uf_remappedPS[1];
uniform vec2 uf_fragCoordScale; uniform vec2 uf_fragCoordScale;
layout(location = 0) in vec4 passParameterSem0; layout(location = 0) in vec4 passParameterSem0;
layout(location = 0) out vec4 passPixelColor0; layout(location = 0) out vec4 passPixelColor0;
int clampFI32(int v) int clampFI32(int v)
{ {
if( v == 0x7FFFFFFF ) if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0); return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF ) else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0); return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.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; } float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
void main() void main()
{ {
vec4 R0f = vec4(0.0); vec4 R0f = vec4(0.0);
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f; float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0); vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
float PS0f = 0.0, PS1f = 0.0; float PS0f = 0.0, PS1f = 0.0;
vec4 tempf = vec4(0.0); vec4 tempf = vec4(0.0);
float tempResultf; float tempResultf;
int tempResulti; int tempResulti;
ivec4 ARi = ivec4(0); ivec4 ARi = ivec4(0);
bool predResult = true; bool predResult = true;
vec3 cubeMapSTM; vec3 cubeMapSTM;
int cubeMapFaceId; int cubeMapFaceId;
R0f = passParameterSem0; R0f = passParameterSem0;
// 0 // 0
backupReg0f = R0f.x; backupReg0f = R0f.x;
backupReg1f = R0f.y; backupReg1f = R0f.y;
backupReg2f = R0f.z; backupReg2f = R0f.z;
backupReg3f = R0f.w; backupReg3f = R0f.w;
R0f.x = mul_nonIEEE(backupReg0f, intBitsToFloat(uf_remappedPS[0].x)); R0f.x = mul_nonIEEE(backupReg0f, intBitsToFloat(uf_remappedPS[0].x));
R0f.y = mul_nonIEEE(backupReg1f, intBitsToFloat(uf_remappedPS[0].y)); R0f.y = mul_nonIEEE(backupReg1f, intBitsToFloat(uf_remappedPS[0].y));
R0f.z = mul_nonIEEE(backupReg2f, intBitsToFloat(uf_remappedPS[0].z)); R0f.z = mul_nonIEEE(backupReg2f, intBitsToFloat(uf_remappedPS[0].z));
R0f.w = mul_nonIEEE(backupReg3f, intBitsToFloat(uf_remappedPS[0].w)); R0f.w = mul_nonIEEE(backupReg3f, intBitsToFloat(uf_remappedPS[0].w));
// export // export
passPixelColor0 = vec4(R0f.x, R0f.y, R0f.z, R0f.w)*float(0); passPixelColor0 = vec4(R0f.x, R0f.y, R0f.z, R0f.w)*float(0);
} }

View file

@ -1,6 +1,6 @@
[Definition] [Definition]
titleIds = 50000101FEA00,50000101FE900,5000010199200,5000010199100,5000010199300,5000010199500,5000010199400,5000010199700,5000010199600,5000010199800,5000010199B00,5000010199A00,5000010199C00,50000101A0E00,50000101A0D00,50000101A1000,50000101A5900,50000101A5800,50000101A5B00,50000101A5A00,50000101AC400,50000101AC600,50000101AC500,50000101B4600,50000101B4500,50000101B4800,50000101B4700,50000101BAF00,50000101BAE00,50000101BB000,50000101BB200,50000101BB100,50000101C5D00,50000101C5C00,50000101C5E00,50000101DA800,50000101DA700,50000101DA900,50000101E6500,50000101E6400,50000101E6700,50000101E6600,50000101EBB00,50000101FE800,50000101FE700 titleIds = 50000101FEA00,50000101FE900,5000010199200,5000010199100,5000010199300,5000010199500,5000010199400,5000010199700,5000010199600,5000010199800,5000010199B00,5000010199A00,5000010199C00,50000101A0E00,50000101A0D00,50000101A1000,50000101A5900,50000101A5800,50000101A5B00,50000101A5A00,50000101AC400,50000101AC600,50000101AC500,50000101B4600,50000101B4500,50000101B4800,50000101B4700,50000101BAF00,50000101BAE00,50000101BB000,50000101BB200,50000101BB100,50000101C5D00,50000101C5C00,50000101C5E00,50000101DA800,50000101DA700,50000101DA900,50000101E6500,50000101E6400,50000101E6700,50000101E6600,50000101EBB00,50000101FE800,50000101FE700
name = Undarken name = Undarken
path = Virtual Console/N64/Enhancements/Undarken path = Virtual Console/N64/Enhancements/Undarken
description = Undarkens the emulator output. description = Undarkens the emulator output.
version = 3 version = 3

View file

@ -1,35 +1,35 @@
#version 420 #version 420
#extension GL_ARB_texture_gather : enable #extension GL_ARB_texture_gather : enable
#extension GL_ARB_separate_shader_objects : enable #extension GL_ARB_separate_shader_objects : enable
// shader d2a97b2fb99411a5 // shader d2a97b2fb99411a5
uniform vec2 uf_fragCoordScale; uniform vec2 uf_fragCoordScale;
layout(binding = 0) uniform sampler2D textureUnitPS0; layout(binding = 0) uniform sampler2D textureUnitPS0;
layout(location = 0) in vec4 passParameterSem0; layout(location = 0) in vec4 passParameterSem0;
layout(location = 0) out vec4 passPixelColor0; layout(location = 0) out vec4 passPixelColor0;
int clampFI32(int v) int clampFI32(int v)
{ {
if( v == 0x7FFFFFFF ) if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0); return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF ) else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0); return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.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; } float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
void main() void main()
{ {
vec4 R0f = vec4(0.0); vec4 R0f = vec4(0.0);
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f; float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0); vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
float PS0f = 0.0, PS1f = 0.0; float PS0f = 0.0, PS1f = 0.0;
vec4 tempf = vec4(0.0); vec4 tempf = vec4(0.0);
float tempResultf; float tempResultf;
int tempResulti; int tempResulti;
ivec4 ARi = ivec4(0); ivec4 ARi = ivec4(0);
bool predResult = true; bool predResult = true;
vec3 cubeMapSTM; vec3 cubeMapSTM;
int cubeMapFaceId; int cubeMapFaceId;
R0f = passParameterSem0; R0f = passParameterSem0;
R0f.xyzw = (texture(textureUnitPS0, R0f.xy).xyzw); R0f.xyzw = (texture(textureUnitPS0, R0f.xy).xyzw);
// export // export
passPixelColor0 = vec4(R0f.x, R0f.y, R0f.z, R0f.w)*float(1.420118343195266); passPixelColor0 = vec4(R0f.x, R0f.y, R0f.z, R0f.w)*float(1.420118343195266);
} }

View file

@ -1,6 +1,6 @@
[Definition] [Definition]
titleIds = 500001012A100,500001012DF00,500001012DE00,500001012E000,500001012E100,500001012E300,500001012E200,500001012E400,500001012E700,500001012E600,500001012E800,500001012F400,500001012F300,500001012F500,500001012F700,500001012F600,500001012F800,5000010106D00,5000010106C00,5000010106E00,5000010107000,5000010106F00,5000010107100,5000010107500,5000010107200,5000010107600,5000010107800,5000010107700,5000010107900,5000010107C00,5000010107B00,5000010107D00,5000010107F00,5000010107E00,5000010108000,5000010108200,5000010108100,5000010108300,5000010108500,5000010108400,5000010108600,5000010108800,5000010108700,5000010108900,5000010108B00,5000010108A00,5000010108C00,5000010113F00,5000010113E00,5000010114000,5000010114200,5000010114100,5000010114300,5000010114500,5000010114400,5000010114600,5000010114800,5000010114700,5000010114900,5000010114A00,5000010119200,5000010119100,5000010119300,500001011A900,5000010119400,500001011AA00,500001011AE00,5000010119500,5000010119700,5000010119800,500001011AC00,500001011AB00,500001011AD00,5000010129800,5000010129700,5000010129900,5000010129A00,5000010129C00,5000010129B00,5000010129D00,5000010129F00,5000010129E00,500001012A000 titleIds = 500001012A100,500001012DF00,500001012DE00,500001012E000,500001012E100,500001012E300,500001012E200,500001012E400,500001012E700,500001012E600,500001012E800,500001012F400,500001012F300,500001012F500,500001012F700,500001012F600,500001012F800,5000010106D00,5000010106C00,5000010106E00,5000010107000,5000010106F00,5000010107100,5000010107500,5000010107200,5000010107600,5000010107800,5000010107700,5000010107900,5000010107C00,5000010107B00,5000010107D00,5000010107F00,5000010107E00,5000010108000,5000010108200,5000010108100,5000010108300,5000010108500,5000010108400,5000010108600,5000010108800,5000010108700,5000010108900,5000010108B00,5000010108A00,5000010108C00,5000010113F00,5000010113E00,5000010114000,5000010114200,5000010114100,5000010114300,5000010114500,5000010114400,5000010114600,5000010114800,5000010114700,5000010114900,5000010114A00,5000010119200,5000010119100,5000010119300,500001011A900,5000010119400,500001011AA00,500001011AE00,5000010119500,5000010119700,5000010119800,500001011AC00,500001011AB00,500001011AD00,5000010129800,5000010129700,5000010129900,5000010129A00,5000010129C00,5000010129B00,5000010129D00,5000010129F00,5000010129E00,500001012A000
name = Undarken name = Undarken
path = Virtual Console/NES/Enhancements/Undarken path = Virtual Console/NES/Enhancements/Undarken
description = Undarkens the emulator output. description = Undarkens the emulator output.
version = 3 version = 3

View file

@ -1,7 +1,7 @@
[Definition] [Definition]
titleIds = 00050000101C9300,00050000101C9400,00050000101C9500 titleIds = 00050000101C9300,00050000101C9400,00050000101C9500
name = "AMD & Intel Shadows Workaround" name = "AMD and Intel Shadows Workaround"
path = "The Legend of Zelda: Breath of the Wild/Workarounds/AMD & Intel Shadows" path = "The Legend of Zelda: Breath of the Wild/Workarounds/GPU specific workarounds/AMD and Intel: Shadows"
description = Fixes shadows when using an AMD or Intel graphics card. description = Fixes shadows when using an AMD or Intel graphics card.
version = 3 version = 3

View file

@ -1,7 +1,7 @@
[Definition] [Definition]
titleIds = 00050000101C9300,00050000101C9400,00050000101C9500 titleIds = 00050000101C9300,00050000101C9400,00050000101C9500
name = "Fix Flipped Lighting On Older Intel iGPU Drivers" name = "Workaround for flipped lights on Intel GPU's with certain drivers"
path = "The Legend of Zelda: Breath of the Wild/Workarounds/Intel Integrated GPU (Only for Intel GPUs)/Fix Flipped Intel Lights v1.5" path = "The Legend of Zelda: Breath of the Wild/Workarounds/GPU specific workarounds/Intel: Flipped Lights"
description = This workaround targets users of Intel iGPU drivers 23.xx and older experiencing flipped lighting issues. These drivers may offer better performance but have graphical glitches. This pack aims to fix the graphical issues so the older drivers create visuals similar to the new drivers. These older drivers may be found on Intel's site https://downloadcenter.intel.com/download/27484/Graphics-Intel-Graphics-Driver-for-Windows-15-65-. description = This workaround targets users of Intel iGPU drivers 23.xx and older experiencing flipped lighting issues. These drivers may offer better performance but have graphical glitches. This pack aims to fix the graphical issues so the older drivers create visuals similar to the new drivers. These older drivers may be found on Intel's site https://downloadcenter.intel.com/download/27484/Graphics-Intel-Graphics-Driver-for-Windows-15-65-.
version = 3 version = 3

View file

@ -1,7 +1,7 @@
[Definition] [Definition]
titleIds = 00050000101C9300,00050000101C9400,00050000101C9500 titleIds = 00050000101C9300,00050000101C9400,00050000101C9500
name = "Remove Intel Excess Bloom" name = "Remove excess bloom on Intel GPU's with certain drivers"
path = "The Legend of Zelda: Breath of the Wild/Workarounds/Intel Integrated GPU (Only for Intel GPUs)/Remove Excess Intel Bloom" path = "The Legend of Zelda: Breath of the Wild/Workarounds/GPU specific workarounds/Intel: Remove Excess Bloom"
description = This workaround targets users of Intel iGPU drivers 23.xx and older experiencing bloom issue. These drivers may offer better performance but have graphical glitches. This pack aims to fix the graphical issues so the older drivers create visuals similar to the new drivers. These older drivers may be found on Intel's site https://downloadcenter.intel.com/download/27484/Graphics-Intel-Graphics-Driver-for-Windows-15-65-. description = This workaround targets users of Intel iGPU drivers 23.xx and older experiencing bloom issue. These drivers may offer better performance but have graphical glitches. This pack aims to fix the graphical issues so the older drivers create visuals similar to the new drivers. These older drivers may be found on Intel's site https://downloadcenter.intel.com/download/27484/Graphics-Intel-Graphics-Driver-for-Windows-15-65-.
version = 3 version = 3

View file

@ -1,7 +1,7 @@
[Definition] [Definition]
titleIds = 00050000101C9300,00050000101C9400,00050000101C9500 titleIds = 00050000101C9300,00050000101C9400,00050000101C9500
name = "NVIDIA Explosion Smoke Workaround" name = "NVIDIA Explosion Smoke Workaround"
path = "The Legend of Zelda: Breath of the Wild/Workarounds/NVIDIA Explosion Smoke" path = "The Legend of Zelda: Breath of the Wild/Workarounds/GPU specific workarounds/Nvidia: Explosion Smoke"
description = Partially fixes thin paper look explosion smoke on NVIDIA when using accurateShaderMul = true. description = Partially fixes thin paper look explosion smoke on NVIDIA when using accurateShaderMul = true.
version = 3 version = 3