From 82f50f82262ccae0c6bf5a2bba304629dfe31170 Mon Sep 17 00:00:00 2001 From: Crementif <26669564+Crementif@users.noreply.github.com> Date: Mon, 6 Jul 2020 01:04:26 +0200 Subject: [PATCH] [MK8] Fix FXAA further Previously it still had some unscaled parts, causing https://cdn.discordapp.com/attachments/378294926397538325/729461113661554809/unknown.png Now it's fixed and looks like https://cdn.discordapp.com/attachments/378294926397538325/729470410940350504/unknown.png Also added credits to the 60FPS pack --- Mods/MarioKart8_60FPSMultiplayer/rules.txt | 2 +- .../be99d80628d31127_00000000000003c9_ps.txt | 30 ++++++++++--------- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/Mods/MarioKart8_60FPSMultiplayer/rules.txt b/Mods/MarioKart8_60FPSMultiplayer/rules.txt index c6fa2cd6..50ea0daf 100644 --- a/Mods/MarioKart8_60FPSMultiplayer/rules.txt +++ b/Mods/MarioKart8_60FPSMultiplayer/rules.txt @@ -2,5 +2,5 @@ titleIds = 000500001010ec00,000500001010ed00,000500001010eb00 name = 60FPS with 3/4P splitscreen mode path = "Mario Kart 8/Mods/60FPS in splitscreen" -description = Forces the game to run at 60FPS instead of the 30FPS in 3-4P splitscreen. In those splitscreen modes, it normally alternates each side of the screen in one frame. This forces it to draw both sides instead. +description = Forces the game to run at 60FPS instead of the 30FPS in 3-4P splitscreen. In those splitscreen modes, it normally alternates each side of the screen in one frame. This forces it to draw both sides instead. Made by theboy181 and Xalphenos version = 4 \ No newline at end of file diff --git a/Resolutions/MarioKart8_Resolution/be99d80628d31127_00000000000003c9_ps.txt b/Resolutions/MarioKart8_Resolution/be99d80628d31127_00000000000003c9_ps.txt index e6ebb858..8eba37ba 100644 --- a/Resolutions/MarioKart8_Resolution/be99d80628d31127_00000000000003c9_ps.txt +++ b/Resolutions/MarioKart8_Resolution/be99d80628d31127_00000000000003c9_ps.txt @@ -3,6 +3,8 @@ #extension GL_ARB_separate_shader_objects : enable // shader be99d80628d31127 - FXAA in-game (with mod) const float resScale = float($width)/float($gameWidth); + + // start of shader inputs/outputs, predetermined by Cemu. Do not touch #ifdef VULKAN #define ATTR_LAYOUT(__vkSet, __location) layout(set = __vkSet, location = __location) @@ -118,10 +120,10 @@ R1f.x = max(R3f.x, -(R3f.x)); PV0f.x = R1f.x; R2f.y = backupReg0f + R2f.x; PV0f.y = R2f.y; -R0f.z = intBitsToFloat(uf_remappedPS[2].z) * 0.25; +R0f.z = intBitsToFloat(uf_remappedPS[2].z)/resScale * 0.25; R0f.w = max(R1f.y, -(R1f.y)); PV0f.w = R0f.w; -R2f.x = -(intBitsToFloat(uf_remappedPS[3].x)); +R2f.x = -(intBitsToFloat(uf_remappedPS[3].x)/resScale); PS0f = R2f.x; // 1 R3f.y = R2f.z + PV0f.y; @@ -131,13 +133,13 @@ PS1f = R2f.y; // 2 R3f.y = R2f.w + PV1f.y; PV0f.y = R3f.y; -R1f.z = intBitsToFloat(uf_remappedPS[3].x) / resScale; -R0f.w = intBitsToFloat(uf_remappedPS[3].y) / resScale; -R5f.y = -(intBitsToFloat(uf_remappedPS[3].y)) / resScale; +R1f.z = intBitsToFloat(uf_remappedPS[3].x)/resScale; +R0f.w = intBitsToFloat(uf_remappedPS[3].y)/resScale; +R5f.y = -(intBitsToFloat(uf_remappedPS[3].y)/resScale); PS0f = R5f.y; // 3 backupReg0f = R0f.z; -R0f.z = (mul_nonIEEE(backupReg0f,PV0f.y) + intBitsToFloat(uf_remappedPS[2].w)); +R0f.z = (mul_nonIEEE(backupReg0f,PV0f.y) + intBitsToFloat(uf_remappedPS[2].w)/resScale); PV1f.z = R0f.z; // 4 backupReg0f = R2f.y; @@ -153,14 +155,14 @@ PV0f.x = R1f.x; R1f.y = mul_nonIEEE(backupReg0f, PS1f); PV0f.y = R1f.y; // 7 -R1f.x = max(PV0f.x, -(intBitsToFloat(uf_remappedPS[2].y))); +R1f.x = max(PV0f.x, -(intBitsToFloat(uf_remappedPS[2].y)/resScale)); PV1f.x = R1f.x; -R1f.y = max(PV0f.y, -(intBitsToFloat(uf_remappedPS[2].y))); +R1f.y = max(PV0f.y, -(intBitsToFloat(uf_remappedPS[2].y)/resScale)); PV1f.y = R1f.y; // 8 -R1f.x = min(PV1f.x, intBitsToFloat(uf_remappedPS[2].y)); +R1f.x = min(PV1f.x, intBitsToFloat(uf_remappedPS[2].y)/resScale); PV0f.x = R1f.x; -R1f.y = min(PV1f.y, intBitsToFloat(uf_remappedPS[2].y)); +R1f.y = min(PV1f.y, intBitsToFloat(uf_remappedPS[2].y)/resScale); PV0f.y = R1f.y; // 9 backupReg0f = R0f.x; @@ -199,10 +201,10 @@ backupReg0f = R4f.x; backupReg1f = R4f.y; backupReg2f = R4f.z; backupReg3f = R4f.w; -R4f.x = (PV1f.w * intBitsToFloat(0x3f4ccccd) + backupReg0f); -R4f.y = (PV1f.z * intBitsToFloat(0x3f4ccccd) + backupReg1f); -R4f.z = (PV1f.y * intBitsToFloat(0x3f4ccccd) + backupReg2f); -R4f.w = (PV1f.x * intBitsToFloat(0x3f4ccccd) + backupReg3f); +R4f.x = (PV1f.w * (intBitsToFloat(0x3f4ccccd)) + backupReg0f); +R4f.y = (PV1f.z * (intBitsToFloat(0x3f4ccccd)) + backupReg1f); +R4f.z = (PV1f.y * (intBitsToFloat(0x3f4ccccd)) + backupReg2f); +R4f.w = (PV1f.x * (intBitsToFloat(0x3f4ccccd)) + backupReg3f); } activeMaskStackC[1] = activeMaskStack[0] == true && activeMaskStackC[0] == true; // export