From f9066de98d8823777233c6e8866757c1353f200d Mon Sep 17 00:00:00 2001 From: NAVras-Z Date: Tue, 20 Aug 2019 08:07:57 +0800 Subject: [PATCH] [Filters] Use textureSize() instead As of Cemu 1.15.12b, the textureSrcResolution (textureSrc_Resolution not texture_SrcResolution) uniform used by internal/external resize shaders still gives the native resolution of the game even when a resolution gfx pack is active. We can just ask for texture resolution ourselves in the shaders as a workaround. --- Enhancements/TwilightPrincessHD_Bicubic/output.glsl | 3 ++- Filters/Bicubic (4 taps)/output.glsl | 3 ++- Filters/Bicubic/output.glsl | 3 ++- Filters/Jinc/output.glsl | 3 ++- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/Enhancements/TwilightPrincessHD_Bicubic/output.glsl b/Enhancements/TwilightPrincessHD_Bicubic/output.glsl index bb48f081..9b876c44 100644 --- a/Enhancements/TwilightPrincessHD_Bicubic/output.glsl +++ b/Enhancements/TwilightPrincessHD_Bicubic/output.glsl @@ -4,7 +4,7 @@ in vec2 passUV; layout(binding=0) uniform sampler2D textureSrc; -uniform vec2 textureSrcResolution; +// uniform vec2 textureSrcResolution; layout(location = 0) out vec4 colorOut0; float weight(float x) @@ -45,6 +45,7 @@ vec4 weight4(float x) vec4 DrawBicubic(vec2 f_in) { + vec2 textureSrcResolution = vec2( textureSize(textureSrc,0) ); vec2 stepxy = 1.0/textureSrcResolution; vec2 pos = f_in.st + stepxy * 0.5; vec2 f = fract(pos * textureSrcResolution); diff --git a/Filters/Bicubic (4 taps)/output.glsl b/Filters/Bicubic (4 taps)/output.glsl index 59ecbc54..d177658d 100644 --- a/Filters/Bicubic (4 taps)/output.glsl +++ b/Filters/Bicubic (4 taps)/output.glsl @@ -3,7 +3,7 @@ in vec2 passUV; layout(binding=0) uniform sampler2D textureSrc; -uniform vec2 textureSrcResolution; +// uniform vec2 textureSrcResolution; layout(location = 0) out vec4 colorOut0; vec4 cubic(float x) @@ -44,5 +44,6 @@ vec4 bcFilter(vec2 texcoord, vec2 texscale) } void main(){ + vec2 textureSrcResolution = vec2( textureSize(textureSrc,0) ); colorOut0 = vec4(bcFilter(passUV*textureSrcResolution, vec2(1.0,1.0)/textureSrcResolution).rgb,1.0); } diff --git a/Filters/Bicubic/output.glsl b/Filters/Bicubic/output.glsl index 3fa221ca..361e5d9b 100644 --- a/Filters/Bicubic/output.glsl +++ b/Filters/Bicubic/output.glsl @@ -4,7 +4,7 @@ in vec2 passUV; layout(binding=0) uniform sampler2D textureSrc; -uniform vec2 textureSrcResolution; +// uniform vec2 textureSrcResolution; layout(location = 0) out vec4 colorOut0; float weight(float x) @@ -45,6 +45,7 @@ vec4 weight4(float x) vec4 DrawBicubic(vec2 f_in) { + vec2 textureSrcResolution = vec2( textureSize(textureSrc,0) ); vec2 stepxy = 1.0/textureSrcResolution; vec2 pos = f_in.st + stepxy * 0.5; vec2 f = fract(pos * textureSrcResolution); diff --git a/Filters/Jinc/output.glsl b/Filters/Jinc/output.glsl index f15d9e1d..5d8415af 100644 --- a/Filters/Jinc/output.glsl +++ b/Filters/Jinc/output.glsl @@ -30,7 +30,7 @@ in vec2 passUV; layout(binding=0) uniform sampler2D textureSrc; -uniform vec2 textureSrcResolution; +// uniform vec2 textureSrcResolution; layout(location = 0) out vec4 colorOut0; /* @@ -124,5 +124,6 @@ vec4 JINC2_sharp(vec2 texture_size, vec2 texCoord) void main() { + vec2 textureSrcResolution = vec2( textureSize(textureSrc,0) ); colorOut0 = JINC2_sharp(textureSrcResolution, passUV); }