[MK8] Scaling and res fixes

Scale 4p bloom, textboxes, cup win, in engine AA, Mk tv replays, 19->1f
conversion
This commit is contained in:
getdls 2020-01-18 13:51:11 +01:00
parent 3dec5854f0
commit 7e5e0bc248
2 changed files with 433 additions and 0 deletions

View File

@ -0,0 +1,186 @@
#version 430
#extension GL_ARB_texture_gather : enable
#extension GL_ARB_separate_shader_objects : enable
// shader 8e1337dde42fd224 //AA scaling. Used in in 3d views except gameplay
// start of shader inputs/outputs, predetermined by Cemu. Do not touch
#ifdef VULKAN
#define ATTR_LAYOUT(__vkSet, __location) layout(set = __vkSet, location = __location)
#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation, std140)
#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation)
#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale.xy,gl_FragCoord.zw)
#else
#define ATTR_LAYOUT(__vkSet, __location) layout(location = __location)
#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation, std140)
#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation)
#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale,gl_FragCoord.zw)
#endif
#ifdef VULKAN
layout(set = 1, binding = 2) uniform ufBlock
{
uniform ivec4 uf_remappedPS[4];
uniform vec4 uf_fragCoordScale;
};
#else
uniform ivec4 uf_remappedPS[4];
uniform vec2 uf_fragCoordScale;
#endif
TEXTURE_LAYOUT(0, 1, 0) uniform sampler2D textureUnitPS0;
TEXTURE_LAYOUT(1, 1, 1) uniform sampler2D textureUnitPS1;
layout(location = 0) in vec4 passParameterSem2;
layout(location = 0) out vec4 passPixelColor0;
// end of shader inputs/outputs
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 R123f = vec4(0.0);
vec4 R126f = 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;
bool activeMaskStack[2];
bool activeMaskStackC[3];
activeMaskStack[0] = false;
activeMaskStackC[0] = false;
activeMaskStackC[1] = false;
activeMaskStack[0] = true;
activeMaskStackC[0] = true;
activeMaskStackC[1] = true;
vec3 cubeMapSTM;
int cubeMapFaceId;
float resScale = uf_fragCoordScale.x;
R0f = passParameterSem2;
if( activeMaskStackC[1] == true ) {
R1f.xyzw = (textureGather(textureUnitPS1, R0f.xy).wzxy);
R2f.xyzw = (texture(textureUnitPS0, R0f.xy).xyzw);
}
if( activeMaskStackC[1] == true ) {
activeMaskStack[1] = activeMaskStack[0];
activeMaskStackC[2] = activeMaskStackC[1];
// 0
PV0f.x = R1f.y + R1f.x;
R127f.y = intBitsToFloat(uf_remappedPS[0].z);
PV0f.z = R1f.w + -(R1f.x);
PV0f.w = R1f.z + -(R1f.y);
R127f.z = mul_nonIEEE(R2f.x, intBitsToFloat(uf_remappedPS[1].x));
PS0f = R127f.z;
// 1
R127f.x = PV0f.w + -(PV0f.z);
PV1f.x = R127f.x;
R126f.y = PV0f.w + PV0f.z;
PV1f.y = R126f.y;
PV1f.z = R1f.z + PV0f.x;
R127f.w = min(R1f.z, R1f.x);
R126f.w = min(R1f.w, R1f.y);
PS1f = R126f.w;
// 2
PV0f.x = R1f.w + PV1f.z;
PV0f.y = max(PV1f.x, -(PV1f.x));
PV0f.z = max(PV1f.y, -(PV1f.y));
PV0f.w = max(R1f.z, R1f.x);
PS0f = max(R1f.w, R1f.y);
// 3
PV1f.x = min(PV0f.z, PV0f.y);
R123f.y = (mul_nonIEEE(R2f.y,intBitsToFloat(uf_remappedPS[1].y)) + R127f.z);
PV1f.y = R123f.y;
PV1f.z = min(R127f.w, R126f.w);
R123f.w = (mul_nonIEEE(R127f.y,PV0f.x) + intBitsToFloat(uf_remappedPS[0].w)*resScale);
PV1f.w = R123f.w;
PS1f = max(PV0f.w, PS0f);
// 4
PV0f.x = mul_nonIEEE(PS1f, intBitsToFloat(uf_remappedPS[2].x));
PV0f.y = max(PV1f.y, PS1f);
PV0f.z = min(PV1f.y, PV1f.z);
PV0f.w = max(PV1f.w, PV1f.x);
// 5
R3f.x = max(PV0f.x, intBitsToFloat(uf_remappedPS[2].y));
R3f.y = -(PV0f.z) + PV0f.y;
PS1f = 1.0 / PV0f.w;
// 6
PV0f.x = mul_nonIEEE(R127f.x, PS1f);
PV0f.y = mul_nonIEEE(R126f.y, PS1f);
// 7
PV1f.z = max(PV0f.x, -(intBitsToFloat(uf_remappedPS[0].y)));
PV1f.w = max(PV0f.y, -(intBitsToFloat(uf_remappedPS[0].y)));
// 8
R1f.x = min(PV1f.w, intBitsToFloat(uf_remappedPS[0].y));
R1f.y = min(PV1f.z, intBitsToFloat(uf_remappedPS[0].y));
// 9
predResult = (R3f.y > R3f.x);
activeMaskStack[1] = predResult;
activeMaskStackC[2] = predResult == true && activeMaskStackC[1] == true;
}
else {
activeMaskStack[1] = false;
activeMaskStackC[2] = false;
}
if( activeMaskStackC[2] == true ) {
// 0
R3f.x = (mul_nonIEEE(R1f.x,-(intBitsToFloat(uf_remappedPS[3].z)*resScale)) + R0f.x);
R3f.y = (mul_nonIEEE(R1f.y,-(intBitsToFloat(uf_remappedPS[3].w)*resScale)) + R0f.y);
R0f.z = (mul_nonIEEE(R1f.x,intBitsToFloat(uf_remappedPS[3].x)) + R0f.x);
R0f.w = (mul_nonIEEE(R1f.y,intBitsToFloat(uf_remappedPS[3].y)) + R0f.y);
R3f.z = (mul_nonIEEE(R1f.x,intBitsToFloat(uf_remappedPS[3].z)) + R0f.x);
PS0f = R3f.z;
// 1
R4f.x = (mul_nonIEEE(R1f.x,-(intBitsToFloat(uf_remappedPS[3].x)*resScale)) + R0f.x);
R4f.y = (mul_nonIEEE(R1f.y,-(intBitsToFloat(uf_remappedPS[3].y)*resScale)) + R0f.y);
R3f.w = (mul_nonIEEE(R1f.y,intBitsToFloat(uf_remappedPS[3].w)) + R0f.y);
}
if( activeMaskStackC[2] == true ) {
R1f.xyzw = (texture(textureUnitPS0, R0f.zw).xyzw);
R0f.xyzw = (texture(textureUnitPS0, R3f.zw).xyzw);
R3f.xyzw = (texture(textureUnitPS0, R3f.xy).xyzw);
R2f.xyzw = (texture(textureUnitPS0, R4f.xy).xyzw);
}
if( activeMaskStackC[2] == true ) {
// 0
R127f.x = R0f.w + R1f.w;
R127f.x /= 2.0;
R127f.y = R0f.z + R1f.z;
R127f.y /= 2.0;
R127f.z = R0f.y + R1f.y;
R127f.z /= 2.0;
R127f.w = R0f.x + R1f.x;
R127f.w /= 2.0;
// 1
PV1f.x = R2f.w + R3f.w;
PV1f.x /= 2.0;
PV1f.y = R2f.z + R3f.z;
PV1f.y /= 2.0;
PV1f.z = R2f.y + R3f.y;
PV1f.z /= 2.0;
PV1f.w = R2f.x + R3f.x;
PV1f.w /= 2.0;
// 2
R2f.x = R127f.w + PV1f.w;
R2f.x /= 2.0;
R2f.y = R127f.z + PV1f.z;
R2f.y /= 2.0;
R2f.z = R127f.y + PV1f.y;
R2f.z /= 2.0;
R2f.w = R127f.x + PV1f.x;
R2f.w /= 2.0;
}
activeMaskStackC[1] = activeMaskStack[0] == true && activeMaskStackC[0] == true;
// export
passPixelColor0 = vec4(R2f.x, R2f.y, R2f.z, R2f.w);
}

View File

@ -239,6 +239,24 @@ height = 360
formats = 0x816 formats = 0x816
overwriteFormat = 0x820 overwriteFormat = 0x820
[TextureRedefine]
width = 1280
height = 720
formats = 0x019
overwriteFormat = 0x01f
[TextureRedefine]
width = 320
height = 192
formats = 0x019
overwriteFormat = 0x01f
[TextureRedefine]
width = 320
height = 180
formats = 0x019
overwriteFormat = 0x01f
# Full Res # Full Res
[TextureRedefine] [TextureRedefine]
width = 1280 width = 1280
@ -302,6 +320,20 @@ formats = 0x80e,0x01a,0x806,0x816,0x801,0x019,0x001
overwriteWidth = ($width/$gameWidth) * 640 overwriteWidth = ($width/$gameWidth) * 640
overwriteHeight = ($height/$gameHeight) * 320 overwriteHeight = ($height/$gameHeight) * 320
[TextureRedefine] # depth applied
width = 448
height = 240
formats = 0x1a,0x816
overwriteWidth = ($width/$gameWidth) * 448
overwriteHeight = ($height/$gameHeight) * 240
[TextureRedefine] # depth applied
width = 427
height = 240
formats = 0x1a,0x816
overwriteWidth = ($width/$gameWidth) * 427
overwriteHeight = ($height/$gameHeight) * 240
[TextureRedefine] # MP Selection Menu - Depth Map [TextureRedefine] # MP Selection Menu - Depth Map
width = 768 width = 768
height = 768 height = 768
@ -354,6 +386,13 @@ formats = 0x019
overwriteWidth = ($width/$gameWidth) * 320 overwriteWidth = ($width/$gameWidth) * 320
overwriteHeight = ($height/$gameHeight) * 180 overwriteHeight = ($height/$gameHeight) * 180
[TextureRedefine]#Depth
width = 256
height = 256
formats = 0x80e
overwriteWidth = ($width/$gameWidth) * 256
overwriteHeight = ($height/$gameHeight) * 256
[TextureRedefine] [TextureRedefine]
width = 256 width = 256
height = 128 height = 128
@ -361,6 +400,13 @@ formats = 0x816
overwriteWidth = ($width/$gameWidth) * 256 overwriteWidth = ($width/$gameWidth) * 256
overwriteHeight = ($height/$gameHeight) * 128 overwriteHeight = ($height/$gameHeight) * 128
[TextureRedefine]#Depth
width = 160
height = 160
formats = 0x80e
overwriteWidth = ($width/$gameWidth) * 160
overwriteHeight = ($height/$gameHeight) * 160
[TextureRedefine] [TextureRedefine]
width = 160 width = 160
height = 90 height = 90
@ -375,6 +421,13 @@ formats = 0x816
overwriteWidth = ($width/$gameWidth) * 160 overwriteWidth = ($width/$gameWidth) * 160
overwriteHeight = ($height/$gameHeight) * 96 overwriteHeight = ($height/$gameHeight) * 96
[TextureRedefine]#Depth
width = 148
height = 148
formats = 0x80e
overwriteWidth = ($width/$gameWidth) * 148
overwriteHeight = ($height/$gameHeight) * 148
[TextureRedefine] [TextureRedefine]
width = 128 width = 128
height = 64 height = 64
@ -410,6 +463,28 @@ formats = 0x816
overwriteWidth = ($width/$gameWidth) * 96 overwriteWidth = ($width/$gameWidth) * 96
overwriteHeight = ($height/$gameHeight) * 48 overwriteHeight = ($height/$gameHeight) * 48
[TextureRedefine] #4p bloom
width = 32
height = 16
formats = 0x816
overwriteWidth = ($width/$gameWidth) * 32
overwriteHeight = ($height/$gameHeight) * 16
[TextureRedefine] #4p bloom
width = 24
height = 16
formats = 0x816
overwriteWidth = ($width/$gameWidth) * 24
overwriteHeight = ($height/$gameHeight) * 16
[TextureRedefine]#4p bloom
width = 20
height = 11
formats = 0x816
overwriteWidth = ($width/$gameWidth) * 20
overwriteHeight = ($height/$gameHeight) * 11
# Underwater effect # Underwater effect
[TextureRedefine] # 1P [TextureRedefine] # 1P
width = 640 width = 640
@ -439,3 +514,175 @@ formats = 0x19,0x1a,0x806,0x816
overwriteWidth = ($width/$gameWidth) * 320 overwriteWidth = ($width/$gameWidth) * 320
overwriteHeight = ($height/$gameHeight) * 360 overwriteHeight = ($height/$gameHeight) * 360
[TextureRedefine] #Cup win board
width = 560
height = 64
#formats = 0x019 #,0x01a,0x806,0x816
overwriteWidth = ($width/$gameWidth) * 560
overwriteHeight = ($height/$gameHeight) * 64
[TextureRedefine] #Cup win board
width = 160
height = 16
#formats = 0x019 #,0x01a,0x806,0x816
overwriteWidth = ($width/$gameWidth) * 160
overwriteHeight = ($height/$gameHeight) * 16
[TextureRedefine] #Cup win board
width = 140
height = 16
#formats = 0x019 #,0x01a,0x806,0x816
overwriteWidth = ($width/$gameWidth) * 140
overwriteHeight = ($height/$gameHeight) * 16
[TextureRedefine]#MKtv depth, normals
width = 960
height = 544
formats = 0x80e,0x019,0x816
overwriteWidth = ($width/$gameWidth) * 960
overwriteHeight = ($height/$gameHeight) * 544
[TextureRedefine]#MKtv depth, normals
width = 960
height = 540
formats = 0x80e,0x019,0x816
overwriteWidth = ($width/$gameWidth) * 960
overwriteHeight = ($height/$gameHeight) * 540
[TextureRedefine]#MKtv depth, normals
width = 960
height = 536
formats = 0x80e,0x019,0x816
overwriteWidth = ($width/$gameWidth) * 960
overwriteHeight = ($height/$gameHeight) * 536
[TextureRedefine]#MKtv
width = 480
height = 272
formats = 0x816,0x01a
overwriteWidth = ($width/$gameWidth) * 480
overwriteHeight = ($height/$gameHeight) * 272
[TextureRedefine]#MKtv
width = 480
height = 268
formats = 0x816,0x01a
overwriteWidth = ($width/$gameWidth) * 480
overwriteHeight = ($height/$gameHeight) * 268
[TextureRedefine]#MKtv
width = 256
height = 256
formats = 0x816
overwriteWidth = ($width/$gameWidth) * 256
overwriteHeight = ($height/$gameHeight) * 256
[TextureRedefine]#MKtv
width = 256
height = 144
formats = 0x816
overwriteWidth = ($width/$gameWidth) * 256
overwriteHeight = ($height/$gameHeight) * 144
[TextureRedefine]#MKtv bloom / blur
width = 240
height = 134
formats = 0x816
overwriteWidth = ($width/$gameWidth) * 240
overwriteHeight = ($height/$gameHeight) * 134
[TextureRedefine]#MKtv bloom / blur
width = 128
height = 128
formats = 0x816
depth = 1
overwriteWidth = ($width/$gameWidth) * 128
overwriteHeight = ($height/$gameHeight) * 128
[TextureRedefine]#MKtv bloom / blur
width = 128
height = 80
formats = 0x816
overwriteWidth = ($width/$gameWidth) * 128
overwriteHeight = ($height/$gameHeight) * 80
[TextureRedefine]#MKtv bloom / blur
width = 120
height = 67
formats = 0x816
overwriteWidth = ($width/$gameWidth) * 120
overwriteHeight = ($height/$gameHeight) * 67
[TextureRedefine]#MKtv bloom / blur
width = 64
height = 64
formats = 0x816
depth = 1
overwriteWidth = ($width/$gameWidth) * 64
overwriteHeight = ($height/$gameHeight) * 64
[TextureRedefine]#MKtv bloom / blur
width = 64
height = 48
formats = 0x816
overwriteWidth = ($width/$gameWidth) * 64
overwriteHeight = ($height/$gameHeight) * 48
[TextureRedefine]#MKtv bloom / blur
width = 60
height = 33
formats = 0x816
overwriteWidth = ($width/$gameWidth) * 60
overwriteHeight = ($height/$gameHeight) * 33
[TextureRedefine]#MKtv bloom / blur
width = 60
height = 33
formats = 0x816
overwriteWidth = ($width/$gameWidth) * 60
overwriteHeight = ($height/$gameHeight) * 33
[TextureRedefine]#MKtv bloom / blur
width = 32
height = 16
formats = 0x019
overwriteWidth = ($width/$gameWidth) * 32
overwriteHeight = ($height/$gameHeight) * 16
[TextureRedefine]#MKtv bloom / blur
width = 30
height = 16
formats = 0x019
overwriteWidth = ($width/$gameWidth) * 30
overwriteHeight = ($height/$gameHeight) * 16
[TextureRedefine]#MKtv bloom / blur
width = 64
height = 64
formats = 0x005
overwriteWidth = ($width/$gameWidth) * 64
overwriteHeight = ($height/$gameHeight) * 64
[TextureRedefine]#MKtv bloom / blur
width = 60
height = 60
formats = 0x005
overwriteWidth = ($width/$gameWidth) * 60
overwriteHeight = ($height/$gameHeight) * 60
[TextureRedefine]#MKtv bloom / blur
width = 52
height = 52
formats = 0x005
overwriteWidth = ($width/$gameWidth) * 52
overwriteHeight = ($height/$gameHeight) * 52
[TextureRedefine]#MKtv bloom / blur
width = 32
height = 32
formats = 0x005
overwriteWidth = ($width/$gameWidth) * 32
overwriteHeight = ($height/$gameHeight) * 32
#32x32, 16x16 cube slices - dont scale, should not be sharp