mirror of
https://github.com/cemu-project/cemu_graphic_packs.git
synced 2024-11-26 11:34:15 +01:00
[BotW] Add AMD crash workaround
Workaround made by Exzap, helped by darkemaste and some other folks
This commit is contained in:
parent
54dc49bc06
commit
c01d0cf5e4
@ -0,0 +1,61 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
#extension GL_ARB_separate_shader_objects : enable
|
||||||
|
#extension GL_ARB_shading_language_packing : enable
|
||||||
|
// shader 15bc7edf9de2ed30
|
||||||
|
layout(binding = 6, std140)
|
||||||
|
uniform uniformBlockVS6
|
||||||
|
{
|
||||||
|
vec4 uf_blockVS6[1024];
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
layout(binding = 7, std140)
|
||||||
|
uniform uniformBlockVS7
|
||||||
|
{
|
||||||
|
vec4 uf_blockVS7[1024];
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
layout(binding = 8, std140)
|
||||||
|
uniform uniformBlockVS8
|
||||||
|
{
|
||||||
|
vec4 uf_blockVS8[1024];
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
layout(binding = 11, std140)
|
||||||
|
uniform uniformBlockVS11
|
||||||
|
{
|
||||||
|
vec4 uf_blockVS11[1024];
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
layout(binding = 45) uniform sampler2D textureUnitVS13;
|
||||||
|
layout(location = 0) in uvec4 attrDataSem0;
|
||||||
|
layout(location = 1) in uvec4 attrDataSem1;
|
||||||
|
layout(location = 2) in uvec4 attrDataSem2;
|
||||||
|
layout(location = 3) in uvec4 attrDataSem3;
|
||||||
|
layout(location = 4) in uvec4 attrDataSem4;
|
||||||
|
layout(location = 5) in uvec4 attrDataSem5;
|
||||||
|
layout(location = 6) in uvec4 attrDataSem6;
|
||||||
|
layout(location = 7) in uvec4 attrDataSem7;
|
||||||
|
out gl_PerVertex
|
||||||
|
{
|
||||||
|
vec4 gl_Position;
|
||||||
|
float gl_PointSize;
|
||||||
|
};
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ return min(a*b,min(abs(a)*3.40282347E+38F,abs(b)*3.40282347E+38F)); }
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
// export
|
||||||
|
gl_Position = vec4(0.0);
|
||||||
|
}
|
@ -0,0 +1,72 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
#extension GL_ARB_separate_shader_objects : enable
|
||||||
|
#extension GL_ARB_shading_language_packing : enable
|
||||||
|
// shader 24838b84d15a1da1
|
||||||
|
layout(binding = 6, std140)
|
||||||
|
uniform uniformBlockVS6
|
||||||
|
{
|
||||||
|
vec4 uf_blockVS6[1024];
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
layout(binding = 7, std140)
|
||||||
|
uniform uniformBlockVS7
|
||||||
|
{
|
||||||
|
vec4 uf_blockVS7[1024];
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
layout(binding = 8, std140)
|
||||||
|
uniform uniformBlockVS8
|
||||||
|
{
|
||||||
|
vec4 uf_blockVS8[1024];
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
layout(binding = 11, std140)
|
||||||
|
uniform uniformBlockVS11
|
||||||
|
{
|
||||||
|
vec4 uf_blockVS11[1024];
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
layout(binding = 13, std140)
|
||||||
|
uniform uniformBlockVS13
|
||||||
|
{
|
||||||
|
vec4 uf_blockVS13[1024];
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
layout(binding = 40) uniform sampler2D textureUnitVS8;
|
||||||
|
layout(binding = 45) uniform sampler2D textureUnitVS13;
|
||||||
|
layout(location = 0) in uvec4 attrDataSem0;
|
||||||
|
layout(location = 1) in uvec4 attrDataSem1;
|
||||||
|
layout(location = 2) in uvec4 attrDataSem2;
|
||||||
|
layout(location = 3) in uvec4 attrDataSem3;
|
||||||
|
layout(location = 4) in uvec4 attrDataSem4;
|
||||||
|
layout(location = 5) in uvec4 attrDataSem5;
|
||||||
|
layout(location = 6) in uvec4 attrDataSem6;
|
||||||
|
layout(location = 7) in uvec4 attrDataSem7;
|
||||||
|
layout(location = 8) in uvec4 attrDataSem8;
|
||||||
|
layout(location = 9) in uvec4 attrDataSem9;
|
||||||
|
layout(location = 10) in uvec4 attrDataSem10;
|
||||||
|
out gl_PerVertex
|
||||||
|
{
|
||||||
|
vec4 gl_Position;
|
||||||
|
float gl_PointSize;
|
||||||
|
};
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ return min(a*b,min(abs(a)*3.40282347E+38F,abs(b)*3.40282347E+38F)); }
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
// export
|
||||||
|
gl_Position = vec4(0.0);
|
||||||
|
}
|
@ -0,0 +1,61 @@
|
|||||||
|
#version 420
|
||||||
|
#extension GL_ARB_texture_gather : enable
|
||||||
|
#extension GL_ARB_separate_shader_objects : enable
|
||||||
|
#extension GL_ARB_shading_language_packing : enable
|
||||||
|
// shader 83a697d61a3b9202
|
||||||
|
layout(binding = 6, std140)
|
||||||
|
uniform uniformBlockVS6
|
||||||
|
{
|
||||||
|
vec4 uf_blockVS6[1024];
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
layout(binding = 7, std140)
|
||||||
|
uniform uniformBlockVS7
|
||||||
|
{
|
||||||
|
vec4 uf_blockVS7[1024];
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
layout(binding = 8, std140)
|
||||||
|
uniform uniformBlockVS8
|
||||||
|
{
|
||||||
|
vec4 uf_blockVS8[1024];
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
layout(binding = 11, std140)
|
||||||
|
uniform uniformBlockVS11
|
||||||
|
{
|
||||||
|
vec4 uf_blockVS11[1024];
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
layout(binding = 45) uniform sampler2D textureUnitVS13;
|
||||||
|
layout(location = 0) in uvec4 attrDataSem0;
|
||||||
|
layout(location = 1) in uvec4 attrDataSem1;
|
||||||
|
layout(location = 2) in uvec4 attrDataSem2;
|
||||||
|
layout(location = 3) in uvec4 attrDataSem3;
|
||||||
|
layout(location = 4) in uvec4 attrDataSem4;
|
||||||
|
layout(location = 5) in uvec4 attrDataSem5;
|
||||||
|
layout(location = 6) in uvec4 attrDataSem6;
|
||||||
|
layout(location = 7) in uvec4 attrDataSem7;
|
||||||
|
out gl_PerVertex
|
||||||
|
{
|
||||||
|
vec4 gl_Position;
|
||||||
|
float gl_PointSize;
|
||||||
|
};
|
||||||
|
int clampFI32(int v)
|
||||||
|
{
|
||||||
|
if( v == 0x7FFFFFFF )
|
||||||
|
return floatBitsToInt(1.0);
|
||||||
|
else if( v == 0xFFFFFFFF )
|
||||||
|
return floatBitsToInt(0.0);
|
||||||
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
||||||
|
}
|
||||||
|
float mul_nonIEEE(float a, float b){ return min(a*b,min(abs(a)*3.40282347E+38F,abs(b)*3.40282347E+38F)); }
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
// export
|
||||||
|
gl_Position = vec4(0.0);
|
||||||
|
}
|
6
Workarounds/BreathOfTheWild_AMD_ShaderCrash/rules.txt
Normal file
6
Workarounds/BreathOfTheWild_AMD_ShaderCrash/rules.txt
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
[Definition]
|
||||||
|
titleIds = 00050000101C9300,00050000101C9400,00050000101C9500
|
||||||
|
name = "Workaround for AMD crashes"
|
||||||
|
path = "The Legend of Zelda: Breath of the Wild/Workarounds/GPU specific workarounds/AMD Crash"
|
||||||
|
description = Workaround for a shader related crash on AMD drivers. Required for Cemu 1.15.8 and above.
|
||||||
|
version = 3
|
Loading…
Reference in New Issue
Block a user