diff --git a/handheld/console-border/dmg-2x.glslp b/handheld/console-border/dmg-2x.glslp index 56cada9..7b0dc34 100644 --- a/handheld/console-border/dmg-2x.glslp +++ b/handheld/console-border/dmg-2x.glslp @@ -10,7 +10,7 @@ shader1 = shader-files/gb-pass1.glsl filter_linear1 = false scale_type1 = source scale1 = 1.0 -alias1 = "PASS1" +alias1 = "ConsoleBorderGameBoyDotMatrixAlphaBlend" shader2 = shader-files/gb-pass2.glsl filter_linear2 = false diff --git a/handheld/console-border/dmg-3x.glslp b/handheld/console-border/dmg-3x.glslp index 203f404..c1494b9 100644 --- a/handheld/console-border/dmg-3x.glslp +++ b/handheld/console-border/dmg-3x.glslp @@ -10,7 +10,7 @@ shader1 = shader-files/gb-pass1.glsl filter_linear1 = false scale_type1 = source scale1 = 1.0 -alias1 = "PASS1" +alias1 = "ConsoleBorderGameBoyDotMatrixAlphaBlend" shader2 = shader-files/gb-pass2.glsl filter_linear2 = false diff --git a/handheld/console-border/dmg-4x.glslp b/handheld/console-border/dmg-4x.glslp index 11cee59..6616099 100644 --- a/handheld/console-border/dmg-4x.glslp +++ b/handheld/console-border/dmg-4x.glslp @@ -10,7 +10,7 @@ shader1 = shader-files/gb-pass1.glsl filter_linear1 = false scale_type1 = source scale1 = 1.0 -alias1 = "PASS1" +alias1 = "ConsoleBorderGameBoyDotMatrixAlphaBlend" shader2 = shader-files/gb-pass2.glsl filter_linear2 = false diff --git a/handheld/console-border/dmg-5x.glslp b/handheld/console-border/dmg-5x.glslp index d61d7a7..c9a1240 100644 --- a/handheld/console-border/dmg-5x.glslp +++ b/handheld/console-border/dmg-5x.glslp @@ -10,7 +10,7 @@ shader1 = shader-files/gb-pass1.glsl filter_linear1 = false scale_type1 = source scale1 = 1.0 -alias1 = "PASS1" +alias1 = "ConsoleBorderGameBoyDotMatrixAlphaBlend" shader2 = shader-files/gb-pass2.glsl filter_linear2 = false diff --git a/handheld/console-border/dmg-6x.glslp b/handheld/console-border/dmg-6x.glslp index cc04d88..4f5d4e4 100644 --- a/handheld/console-border/dmg-6x.glslp +++ b/handheld/console-border/dmg-6x.glslp @@ -10,7 +10,7 @@ shader1 = shader-files/gb-pass1.glsl filter_linear1 = false scale_type1 = source scale1 = 1.0 -alias1 = "PASS1" +alias1 = "ConsoleBorderGameBoyDotMatrixAlphaBlend" shader2 = shader-files/gb-pass2.glsl filter_linear2 = false diff --git a/handheld/console-border/gb-dmg-alt-2x.glslp b/handheld/console-border/gb-dmg-alt-2x.glslp index 4d5d570..d898129 100644 --- a/handheld/console-border/gb-dmg-alt-2x.glslp +++ b/handheld/console-border/gb-dmg-alt-2x.glslp @@ -1,6 +1,7 @@ shaders = 6 shader0 = shader-files/gb-pass0.glsl shader1 = ../shaders/gameboy/shader-files/gb-pass1.glsl +alias1 = "GameBoyDotMatrixAlphaBlend" shader2 = ../shaders/gameboy/shader-files/gb-pass2.glsl shader3 = ../shaders/gameboy/shader-files/gb-pass3.glsl shader4 = ../shaders/gameboy/shader-files/gb-pass4.glsl diff --git a/handheld/console-border/gb-dmg-alt-3x.glslp b/handheld/console-border/gb-dmg-alt-3x.glslp index ab1b161..847c665 100644 --- a/handheld/console-border/gb-dmg-alt-3x.glslp +++ b/handheld/console-border/gb-dmg-alt-3x.glslp @@ -1,6 +1,7 @@ shaders = 6 shader0 = shader-files/gb-pass0.glsl shader1 = ../shaders/gameboy/shader-files/gb-pass1.glsl +alias1 = "GameBoyDotMatrixAlphaBlend" shader2 = ../shaders/gameboy/shader-files/gb-pass2.glsl shader3 = ../shaders/gameboy/shader-files/gb-pass3.glsl shader4 = ../shaders/gameboy/shader-files/gb-pass4.glsl diff --git a/handheld/console-border/gb-dmg-alt-4x.glslp b/handheld/console-border/gb-dmg-alt-4x.glslp index 5f1c19c..1c2be53 100644 --- a/handheld/console-border/gb-dmg-alt-4x.glslp +++ b/handheld/console-border/gb-dmg-alt-4x.glslp @@ -1,6 +1,7 @@ shaders = 6 shader0 = shader-files/gb-pass0.glsl shader1 = ../shaders/gameboy/shader-files/gb-pass1.glsl +alias1 = "GameBoyDotMatrixAlphaBlend" shader2 = ../shaders/gameboy/shader-files/gb-pass2.glsl shader3 = ../shaders/gameboy/shader-files/gb-pass3.glsl shader4 = ../shaders/gameboy/shader-files/gb-pass4.glsl diff --git a/handheld/console-border/gb-dmg-alt-5x.glslp b/handheld/console-border/gb-dmg-alt-5x.glslp index 58af84c..fd4718a 100644 --- a/handheld/console-border/gb-dmg-alt-5x.glslp +++ b/handheld/console-border/gb-dmg-alt-5x.glslp @@ -1,6 +1,7 @@ shaders = 6 shader0 = shader-files/gb-pass0.glsl shader1 = ../shaders/gameboy/shader-files/gb-pass1.glsl +alias1 = "GameBoyDotMatrixAlphaBlend" shader2 = ../shaders/gameboy/shader-files/gb-pass2.glsl shader3 = ../shaders/gameboy/shader-files/gb-pass3.glsl shader4 = ../shaders/gameboy/shader-files/gb-pass4.glsl diff --git a/handheld/console-border/gb-dmg-alt-6x.glslp b/handheld/console-border/gb-dmg-alt-6x.glslp index 4c3b6e3..f9422a8 100644 --- a/handheld/console-border/gb-dmg-alt-6x.glslp +++ b/handheld/console-border/gb-dmg-alt-6x.glslp @@ -1,6 +1,7 @@ shaders = 6 shader0 = shader-files/gb-pass0.glsl shader1 = ../shaders/gameboy/shader-files/gb-pass1.glsl +alias1 = "GameBoyDotMatrixAlphaBlend" shader2 = ../shaders/gameboy/shader-files/gb-pass2.glsl shader3 = ../shaders/gameboy/shader-files/gb-pass3.glsl shader4 = ../shaders/gameboy/shader-files/gb-pass4.glsl diff --git a/handheld/console-border/gb-dmg-alt-7x.glslp b/handheld/console-border/gb-dmg-alt-7x.glslp index e036cf4..ebb8b9e 100644 --- a/handheld/console-border/gb-dmg-alt-7x.glslp +++ b/handheld/console-border/gb-dmg-alt-7x.glslp @@ -1,6 +1,7 @@ shaders = 6 shader0 = shader-files/gb-pass0.glsl shader1 = ../shaders/gameboy/shader-files/gb-pass1.glsl +alias1 = "GameBoyDotMatrixAlphaBlend" shader2 = ../shaders/gameboy/shader-files/gb-pass2.glsl shader3 = ../shaders/gameboy/shader-files/gb-pass3.glsl shader4 = ../shaders/gameboy/shader-files/gb-pass4.glsl diff --git a/handheld/console-border/gb-light-alt-2x.glslp b/handheld/console-border/gb-light-alt-2x.glslp index 6e27850..fc590b2 100644 --- a/handheld/console-border/gb-light-alt-2x.glslp +++ b/handheld/console-border/gb-light-alt-2x.glslp @@ -1,6 +1,7 @@ shaders = 6 shader0 = shader-files/gb-pass0.glsl shader1 = ../shaders/gameboy/shader-files/gb-pass1.glsl +alias1 = "GameBoyDotMatrixAlphaBlend" shader2 = ../shaders/gameboy/shader-files/gb-pass2.glsl shader3 = ../shaders/gameboy/shader-files/gb-pass3.glsl shader4 = ../shaders/gameboy/shader-files/gb-pass4.glsl diff --git a/handheld/console-border/gb-light-alt-3x.glslp b/handheld/console-border/gb-light-alt-3x.glslp index 0c40d8b..798eebe 100644 --- a/handheld/console-border/gb-light-alt-3x.glslp +++ b/handheld/console-border/gb-light-alt-3x.glslp @@ -1,6 +1,7 @@ shaders = 6 shader0 = shader-files/gb-pass0.glsl shader1 = ../shaders/gameboy/shader-files/gb-pass1.glsl +alias1 = "GameBoyDotMatrixAlphaBlend" shader2 = ../shaders/gameboy/shader-files/gb-pass2.glsl shader3 = ../shaders/gameboy/shader-files/gb-pass3.glsl shader4 = ../shaders/gameboy/shader-files/gb-pass4.glsl diff --git a/handheld/console-border/gb-light-alt-4x.glslp b/handheld/console-border/gb-light-alt-4x.glslp index 465e056..2c978e9 100644 --- a/handheld/console-border/gb-light-alt-4x.glslp +++ b/handheld/console-border/gb-light-alt-4x.glslp @@ -1,6 +1,7 @@ shaders = 6 shader0 = shader-files/gb-pass0.glsl shader1 = ../shaders/gameboy/shader-files/gb-pass1.glsl +alias1 = "GameBoyDotMatrixAlphaBlend" shader2 = ../shaders/gameboy/shader-files/gb-pass2.glsl shader3 = ../shaders/gameboy/shader-files/gb-pass3.glsl shader4 = ../shaders/gameboy/shader-files/gb-pass4.glsl diff --git a/handheld/console-border/gb-light-alt-5x.glslp b/handheld/console-border/gb-light-alt-5x.glslp index 6175d04..23158d7 100644 --- a/handheld/console-border/gb-light-alt-5x.glslp +++ b/handheld/console-border/gb-light-alt-5x.glslp @@ -1,6 +1,7 @@ shaders = 6 shader0 = shader-files/gb-pass0.glsl shader1 = ../shaders/gameboy/shader-files/gb-pass1.glsl +alias1 = "GameBoyDotMatrixAlphaBlend" shader2 = ../shaders/gameboy/shader-files/gb-pass2.glsl shader3 = ../shaders/gameboy/shader-files/gb-pass3.glsl shader4 = ../shaders/gameboy/shader-files/gb-pass4.glsl diff --git a/handheld/console-border/gb-light-alt-6x.glslp b/handheld/console-border/gb-light-alt-6x.glslp index f891717..6a974f2 100644 --- a/handheld/console-border/gb-light-alt-6x.glslp +++ b/handheld/console-border/gb-light-alt-6x.glslp @@ -1,6 +1,7 @@ shaders = 6 shader0 = shader-files/gb-pass0.glsl shader1 = ../shaders/gameboy/shader-files/gb-pass1.glsl +alias1 = "GameBoyDotMatrixAlphaBlend" shader2 = ../shaders/gameboy/shader-files/gb-pass2.glsl shader3 = ../shaders/gameboy/shader-files/gb-pass3.glsl shader4 = ../shaders/gameboy/shader-files/gb-pass4.glsl diff --git a/handheld/console-border/gb-light-alt-7x.glslp b/handheld/console-border/gb-light-alt-7x.glslp index e12afb3..b955053 100644 --- a/handheld/console-border/gb-light-alt-7x.glslp +++ b/handheld/console-border/gb-light-alt-7x.glslp @@ -1,6 +1,7 @@ shaders = 6 shader0 = shader-files/gb-pass0.glsl shader1 = ../shaders/gameboy/shader-files/gb-pass1.glsl +alias1 = "GameBoyDotMatrixAlphaBlend" shader2 = ../shaders/gameboy/shader-files/gb-pass2.glsl shader3 = ../shaders/gameboy/shader-files/gb-pass3.glsl shader4 = ../shaders/gameboy/shader-files/gb-pass4.glsl diff --git a/handheld/console-border/gb-pocket-2x.glslp b/handheld/console-border/gb-pocket-2x.glslp index 7f4b855..e6cb984 100644 --- a/handheld/console-border/gb-pocket-2x.glslp +++ b/handheld/console-border/gb-pocket-2x.glslp @@ -10,7 +10,7 @@ shader1 = shader-files/gb-pass1.glsl filter_linear1 = false scale_type1 = source scale1 = 1.0 -alias1 = "PASS1" +alias1 = "ConsoleBorderGameBoyDotMatrixAlphaBlend" shader2 = shader-files/gb-pass2.glsl filter_linear2 = false diff --git a/handheld/console-border/gb-pocket-3x.glslp b/handheld/console-border/gb-pocket-3x.glslp index e3bf55e..3213bdc 100644 --- a/handheld/console-border/gb-pocket-3x.glslp +++ b/handheld/console-border/gb-pocket-3x.glslp @@ -10,7 +10,7 @@ shader1 = shader-files/gb-pass1.glsl filter_linear1 = false scale_type1 = source scale1 = 1.0 -alias1 = "PASS1" +alias1 = "ConsoleBorderGameBoyDotMatrixAlphaBlend" shader2 = shader-files/gb-pass2.glsl filter_linear2 = false diff --git a/handheld/console-border/gb-pocket-4x.glslp b/handheld/console-border/gb-pocket-4x.glslp index 02d00c6..1d6d680 100644 --- a/handheld/console-border/gb-pocket-4x.glslp +++ b/handheld/console-border/gb-pocket-4x.glslp @@ -10,7 +10,7 @@ shader1 = shader-files/gb-pass1.glsl filter_linear1 = false scale_type1 = source scale1 = 1.0 -alias1 = "PASS1" +alias1 = "ConsoleBorderGameBoyDotMatrixAlphaBlend" shader2 = shader-files/gb-pass2.glsl filter_linear2 = false diff --git a/handheld/console-border/gb-pocket-5x.glslp b/handheld/console-border/gb-pocket-5x.glslp index eec185f..f1c8ea5 100644 --- a/handheld/console-border/gb-pocket-5x.glslp +++ b/handheld/console-border/gb-pocket-5x.glslp @@ -10,7 +10,7 @@ shader1 = shader-files/gb-pass1.glsl filter_linear1 = false scale_type1 = source scale1 = 1.0 -alias1 = "PASS1" +alias1 = "ConsoleBorderGameBoyDotMatrixAlphaBlend" shader2 = shader-files/gb-pass2.glsl filter_linear2 = false diff --git a/handheld/console-border/gb-pocket-6x.glslp b/handheld/console-border/gb-pocket-6x.glslp index 8b59fad..519ff46 100644 --- a/handheld/console-border/gb-pocket-6x.glslp +++ b/handheld/console-border/gb-pocket-6x.glslp @@ -10,7 +10,7 @@ shader1 = shader-files/gb-pass1.glsl filter_linear1 = false scale_type1 = source scale1 = 1.0 -alias1 = "PASS1" +alias1 = "ConsoleBorderGameBoyDotMatrixAlphaBlend" shader2 = shader-files/gb-pass2.glsl filter_linear2 = false diff --git a/handheld/console-border/gb-pocket-alt-2x.glslp b/handheld/console-border/gb-pocket-alt-2x.glslp index 24512b7..f49e51e 100644 --- a/handheld/console-border/gb-pocket-alt-2x.glslp +++ b/handheld/console-border/gb-pocket-alt-2x.glslp @@ -1,6 +1,7 @@ shaders = 6 shader0 = shader-files/gb-pass0.glsl shader1 = ../shaders/gameboy/shader-files/gb-pass1.glsl +alias1 = "GameBoyDotMatrixAlphaBlend" shader2 = ../shaders/gameboy/shader-files/gb-pass2.glsl shader3 = ../shaders/gameboy/shader-files/gb-pass3.glsl shader4 = ../shaders/gameboy/shader-files/gb-pass4.glsl diff --git a/handheld/console-border/gb-pocket-alt-3x.glslp b/handheld/console-border/gb-pocket-alt-3x.glslp index fde9314..1c541e3 100644 --- a/handheld/console-border/gb-pocket-alt-3x.glslp +++ b/handheld/console-border/gb-pocket-alt-3x.glslp @@ -1,6 +1,7 @@ shaders = 6 shader0 = shader-files/gb-pass0.glsl shader1 = ../shaders/gameboy/shader-files/gb-pass1.glsl +alias1 = "GameBoyDotMatrixAlphaBlend" shader2 = ../shaders/gameboy/shader-files/gb-pass2.glsl shader3 = ../shaders/gameboy/shader-files/gb-pass3.glsl shader4 = ../shaders/gameboy/shader-files/gb-pass4.glsl diff --git a/handheld/console-border/gb-pocket-alt-4x.glslp b/handheld/console-border/gb-pocket-alt-4x.glslp index b405770..62542b7 100644 --- a/handheld/console-border/gb-pocket-alt-4x.glslp +++ b/handheld/console-border/gb-pocket-alt-4x.glslp @@ -1,6 +1,7 @@ shaders = 6 shader0 = shader-files/gb-pass0.glsl shader1 = ../shaders/gameboy/shader-files/gb-pass1.glsl +alias1 = "GameBoyDotMatrixAlphaBlend" shader2 = ../shaders/gameboy/shader-files/gb-pass2.glsl shader3 = ../shaders/gameboy/shader-files/gb-pass3.glsl shader4 = ../shaders/gameboy/shader-files/gb-pass4.glsl diff --git a/handheld/console-border/gb-pocket-alt-5x.glslp b/handheld/console-border/gb-pocket-alt-5x.glslp index 387e3a7..e68aa62 100644 --- a/handheld/console-border/gb-pocket-alt-5x.glslp +++ b/handheld/console-border/gb-pocket-alt-5x.glslp @@ -1,6 +1,7 @@ shaders = 6 shader0 = shader-files/gb-pass0.glsl shader1 = ../shaders/gameboy/shader-files/gb-pass1.glsl +alias1 = "GameBoyDotMatrixAlphaBlend" shader2 = ../shaders/gameboy/shader-files/gb-pass2.glsl shader3 = ../shaders/gameboy/shader-files/gb-pass3.glsl shader4 = ../shaders/gameboy/shader-files/gb-pass4.glsl diff --git a/handheld/console-border/gb-pocket-alt-6x.glslp b/handheld/console-border/gb-pocket-alt-6x.glslp index 20e9156..69e4328 100644 --- a/handheld/console-border/gb-pocket-alt-6x.glslp +++ b/handheld/console-border/gb-pocket-alt-6x.glslp @@ -1,6 +1,7 @@ shaders = 6 shader0 = shader-files/gb-pass0.glsl shader1 = ../shaders/gameboy/shader-files/gb-pass1.glsl +alias1 = "GameBoyDotMatrixAlphaBlend" shader2 = ../shaders/gameboy/shader-files/gb-pass2.glsl shader3 = ../shaders/gameboy/shader-files/gb-pass3.glsl shader4 = ../shaders/gameboy/shader-files/gb-pass4.glsl diff --git a/handheld/console-border/gb-pocket-alt-7x.glslp b/handheld/console-border/gb-pocket-alt-7x.glslp index 36e2f7a..f7e895d 100644 --- a/handheld/console-border/gb-pocket-alt-7x.glslp +++ b/handheld/console-border/gb-pocket-alt-7x.glslp @@ -1,6 +1,7 @@ shaders = 6 shader0 = shader-files/gb-pass0.glsl shader1 = ../shaders/gameboy/shader-files/gb-pass1.glsl +alias1 = "GameBoyDotMatrixAlphaBlend" shader2 = ../shaders/gameboy/shader-files/gb-pass2.glsl shader3 = ../shaders/gameboy/shader-files/gb-pass3.glsl shader4 = ../shaders/gameboy/shader-files/gb-pass4.glsl diff --git a/handheld/console-border/gba-lcd-grid-v2-2x.glslp b/handheld/console-border/gba-lcd-grid-v2-2x.glslp index 20fe783..63eb62e 100644 --- a/handheld/console-border/gba-lcd-grid-v2-2x.glslp +++ b/handheld/console-border/gba-lcd-grid-v2-2x.glslp @@ -2,7 +2,7 @@ shaders = 4 shader0 = ../../motionblur/shaders/response-time.glsl shader1 = ../shaders/lcd-cgwg/lcd-grid-v2.glsl shader2 = ../shaders/color/gba-color.glsl -shader3 = shader-files/gb-pass-5.glsl +shader3 = shader-files/gb-pass-5-original-size.glsl scale_type0 = source scale0 = 1 @@ -23,7 +23,8 @@ textures = BORDER BORDER = resources/gba-border-square-4x.png BORDER_linear = true -parameters = "SCALE;OUT_X;OUT_Y;RSUBPIX_R;RSUBPIX_G;RSUBPIX_B;GSUBPIX_R;GSUBPIX_G;GSUBPIX_B;BSUBPIX_R;BSUBPIX_G;BSUBPIX_B;gain;gamma;blacklevel;ambient;BGR" +parameters = "video_scale;SCALE;OUT_X;OUT_Y;RSUBPIX_R;RSUBPIX_G;RSUBPIX_B;GSUBPIX_R;GSUBPIX_G;GSUBPIX_B;BSUBPIX_R;BSUBPIX_G;BSUBPIX_B;gain;gamma;blacklevel;ambient;BGR" +video_scale = "2.0" SCALE = "1.0" OUT_X = "1600.0" OUT_Y = "800.0" diff --git a/handheld/console-border/gba-lcd-grid-v2-3x.glslp b/handheld/console-border/gba-lcd-grid-v2-3x.glslp index 2d834d1..5dd576b 100644 --- a/handheld/console-border/gba-lcd-grid-v2-3x.glslp +++ b/handheld/console-border/gba-lcd-grid-v2-3x.glslp @@ -2,7 +2,7 @@ shaders = 4 shader0 = ../../motionblur/shaders/response-time.glsl shader1 = ../shaders/lcd-cgwg/lcd-grid-v2.glsl shader2 = ../shaders/color/gba-color.glsl -shader3 = shader-files/gb-pass-5.glsl +shader3 = shader-files/gb-pass-5-original-size.glsl scale_type0 = source scale0 = 1 @@ -23,7 +23,8 @@ textures = BORDER BORDER = resources/gba-border-square-4x.png BORDER_linear = true -parameters = "SCALE;OUT_X;OUT_Y;RSUBPIX_R;RSUBPIX_G;RSUBPIX_B;GSUBPIX_R;GSUBPIX_G;GSUBPIX_B;BSUBPIX_R;BSUBPIX_G;BSUBPIX_B;gain;gamma;blacklevel;ambient;BGR" +parameters = "video_scale;SCALE;OUT_X;OUT_Y;RSUBPIX_R;RSUBPIX_G;RSUBPIX_B;GSUBPIX_R;GSUBPIX_G;GSUBPIX_B;BSUBPIX_R;BSUBPIX_G;BSUBPIX_B;gain;gamma;blacklevel;ambient;BGR" +video_scale = "3.0" SCALE = "1.0" OUT_X = "2400.0" OUT_Y = "1200.0" diff --git a/handheld/console-border/gba-lcd-grid-v2-4x.glslp b/handheld/console-border/gba-lcd-grid-v2-4x.glslp index fc6300b..abd498c 100644 --- a/handheld/console-border/gba-lcd-grid-v2-4x.glslp +++ b/handheld/console-border/gba-lcd-grid-v2-4x.glslp @@ -2,7 +2,7 @@ shaders = 4 shader0 = ../../motionblur/shaders/response-time.glsl shader1 = ../shaders/lcd-cgwg/lcd-grid-v2.glsl shader2 = ../shaders/color/gba-color.glsl -shader3 = shader-files/gb-pass-5.glsl +shader3 = shader-files/gb-pass-5-original-size.glsl scale_type0 = source scale0 = 1 @@ -23,7 +23,8 @@ textures = BORDER BORDER = resources/gba-border-square-4x.png BORDER_linear = true -parameters = "SCALE;OUT_X;OUT_Y;RSUBPIX_R;RSUBPIX_G;RSUBPIX_B;GSUBPIX_R;GSUBPIX_G;GSUBPIX_B;BSUBPIX_R;BSUBPIX_G;BSUBPIX_B;gain;gamma;blacklevel;ambient;BGR" +parameters = "video_scale;SCALE;OUT_X;OUT_Y;RSUBPIX_R;RSUBPIX_G;RSUBPIX_B;GSUBPIX_R;GSUBPIX_G;GSUBPIX_B;BSUBPIX_R;BSUBPIX_G;BSUBPIX_B;gain;gamma;blacklevel;ambient;BGR" +video_scale = "4.0" SCALE = "1.0" OUT_X = "3200.0" OUT_Y = "1600.0" diff --git a/handheld/console-border/gba-lcd-grid-v2-5x.glslp b/handheld/console-border/gba-lcd-grid-v2-5x.glslp index 54a9833..742e912 100644 --- a/handheld/console-border/gba-lcd-grid-v2-5x.glslp +++ b/handheld/console-border/gba-lcd-grid-v2-5x.glslp @@ -2,7 +2,7 @@ shaders = 4 shader0 = ../../motionblur/shaders/response-time.glsl shader1 = ../shaders/lcd-cgwg/lcd-grid-v2.glsl shader2 = ../shaders/color/gba-color.glsl -shader3 = shader-files/gb-pass-5.glsl +shader3 = shader-files/gb-pass-5-original-size.glsl scale_type0 = source scale0 = 1 @@ -23,7 +23,8 @@ textures = BORDER BORDER = resources/gba-border-square-4x.png BORDER_linear = true -parameters = "SCALE;OUT_X;OUT_Y;RSUBPIX_R;RSUBPIX_G;RSUBPIX_B;GSUBPIX_R;GSUBPIX_G;GSUBPIX_B;BSUBPIX_R;BSUBPIX_G;BSUBPIX_B;gain;gamma;blacklevel;ambient;BGR" +parameters = "video_scale;SCALE;OUT_X;OUT_Y;RSUBPIX_R;RSUBPIX_G;RSUBPIX_B;GSUBPIX_R;GSUBPIX_G;GSUBPIX_B;BSUBPIX_R;BSUBPIX_G;BSUBPIX_B;gain;gamma;blacklevel;ambient;BGR" +video_scale = "5.0" SCALE = "1.0" OUT_X = "4000.0" OUT_Y = "2000.0" diff --git a/handheld/console-border/gba-lcd-grid-v2-6x.glslp b/handheld/console-border/gba-lcd-grid-v2-6x.glslp index f9749f3..730e7e6 100644 --- a/handheld/console-border/gba-lcd-grid-v2-6x.glslp +++ b/handheld/console-border/gba-lcd-grid-v2-6x.glslp @@ -2,7 +2,7 @@ shaders = 4 shader0 = ../../motionblur/shaders/response-time.glsl shader1 = ../shaders/lcd-cgwg/lcd-grid-v2.glsl shader2 = ../shaders/color/gba-color.glsl -shader3 = shader-files/gb-pass-5.glsl +shader3 = shader-files/gb-pass-5-original-size.glsl scale_type0 = source scale0 = 1 @@ -23,7 +23,8 @@ textures = BORDER BORDER = resources/gba-border-square-4x.png BORDER_linear = true -parameters = "SCALE;OUT_X;OUT_Y;RSUBPIX_R;RSUBPIX_G;RSUBPIX_B;GSUBPIX_R;GSUBPIX_G;GSUBPIX_B;BSUBPIX_R;BSUBPIX_G;BSUBPIX_B;gain;gamma;blacklevel;ambient;BGR" +parameters = "video_scale;SCALE;OUT_X;OUT_Y;RSUBPIX_R;RSUBPIX_G;RSUBPIX_B;GSUBPIX_R;GSUBPIX_G;GSUBPIX_B;BSUBPIX_R;BSUBPIX_G;BSUBPIX_B;gain;gamma;blacklevel;ambient;BGR" +video_scale = "6.0" SCALE = "1.0" OUT_X = "4800.0" OUT_Y = "2400.0" diff --git a/handheld/console-border/gbc-lcd-grid-v2-2x.glslp b/handheld/console-border/gbc-lcd-grid-v2-2x.glslp index d9a65df..c185087 100644 --- a/handheld/console-border/gbc-lcd-grid-v2-2x.glslp +++ b/handheld/console-border/gbc-lcd-grid-v2-2x.glslp @@ -2,7 +2,7 @@ shaders = 4 shader0 = ../../motionblur/shaders/response-time.glsl shader1 = ../shaders/lcd-cgwg/lcd-grid-v2.glsl shader2 = ../shaders/color/gbc-color.glsl -shader3 = shader-files/gb-pass-5.glsl +shader3 = shader-files/gb-pass-5-original-size.glsl scale_type0 = source scale0 = 1 @@ -23,7 +23,8 @@ textures = BORDER BORDER = resources/color-border-square-4x.png BORDER_linear = true -parameters = "SCALE;OUT_X;OUT_Y;RSUBPIX_R;RSUBPIX_G;RSUBPIX_B;GSUBPIX_R;GSUBPIX_G;GSUBPIX_B;BSUBPIX_R;BSUBPIX_G;BSUBPIX_B;gain;gamma;blacklevel;ambient;BGR" +parameters = "video_scale;SCALE;OUT_X;OUT_Y;RSUBPIX_R;RSUBPIX_G;RSUBPIX_B;GSUBPIX_R;GSUBPIX_G;GSUBPIX_B;BSUBPIX_R;BSUBPIX_G;BSUBPIX_B;gain;gamma;blacklevel;ambient;BGR" +video_scale = "2.0" SCALE = "1.0" OUT_X = "1600.0" OUT_Y = "800.0" diff --git a/handheld/console-border/gbc-lcd-grid-v2-3x.glslp b/handheld/console-border/gbc-lcd-grid-v2-3x.glslp index b6e5bfa..b7b7b87 100644 --- a/handheld/console-border/gbc-lcd-grid-v2-3x.glslp +++ b/handheld/console-border/gbc-lcd-grid-v2-3x.glslp @@ -2,7 +2,7 @@ shaders = 4 shader0 = ../../motionblur/shaders/response-time.glsl shader1 = ../shaders/lcd-cgwg/lcd-grid-v2.glsl shader2 = ../shaders/color/gbc-color.glsl -shader3 = shader-files/gb-pass-5.glsl +shader3 = shader-files/gb-pass-5-original-size.glsl scale_type0 = source scale0 = 1 @@ -23,7 +23,8 @@ textures = BORDER BORDER = resources/color-border-square-4x.png BORDER_linear = true -parameters = "SCALE;OUT_X;OUT_Y;RSUBPIX_R;RSUBPIX_G;RSUBPIX_B;GSUBPIX_R;GSUBPIX_G;GSUBPIX_B;BSUBPIX_R;BSUBPIX_G;BSUBPIX_B;gain;gamma;blacklevel;ambient;BGR" +parameters = "video_scale;SCALE;OUT_X;OUT_Y;RSUBPIX_R;RSUBPIX_G;RSUBPIX_B;GSUBPIX_R;GSUBPIX_G;GSUBPIX_B;BSUBPIX_R;BSUBPIX_G;BSUBPIX_B;gain;gamma;blacklevel;ambient;BGR" +video_scale = "3.0" SCALE = "1.0" OUT_X = "2400.0" OUT_Y = "1200.0" diff --git a/handheld/console-border/gbc-lcd-grid-v2-4x.glslp b/handheld/console-border/gbc-lcd-grid-v2-4x.glslp index 2994f7c..455e634 100644 --- a/handheld/console-border/gbc-lcd-grid-v2-4x.glslp +++ b/handheld/console-border/gbc-lcd-grid-v2-4x.glslp @@ -2,7 +2,7 @@ shaders = 4 shader0 = ../../motionblur/shaders/response-time.glsl shader1 = ../shaders/lcd-cgwg/lcd-grid-v2.glsl shader2 = ../shaders/color/gbc-color.glsl -shader3 = shader-files/gb-pass-5.glsl +shader3 = shader-files/gb-pass-5-original-size.glsl scale_type0 = source scale0 = 1 @@ -23,7 +23,8 @@ textures = BORDER BORDER = resources/color-border-square-4x.png BORDER_linear = true -parameters = "SCALE;OUT_X;OUT_Y;RSUBPIX_R;RSUBPIX_G;RSUBPIX_B;GSUBPIX_R;GSUBPIX_G;GSUBPIX_B;BSUBPIX_R;BSUBPIX_G;BSUBPIX_B;gain;gamma;blacklevel;ambient;BGR" +parameters = "video_scale;SCALE;OUT_X;OUT_Y;RSUBPIX_R;RSUBPIX_G;RSUBPIX_B;GSUBPIX_R;GSUBPIX_G;GSUBPIX_B;BSUBPIX_R;BSUBPIX_G;BSUBPIX_B;gain;gamma;blacklevel;ambient;BGR" +video_scale = "4.0" SCALE = "1.0" OUT_X = "3200.0" OUT_Y = "1600.0" diff --git a/handheld/console-border/gbc-lcd-grid-v2-5x.glslp b/handheld/console-border/gbc-lcd-grid-v2-5x.glslp index 1a613eb..6cedcb8 100644 --- a/handheld/console-border/gbc-lcd-grid-v2-5x.glslp +++ b/handheld/console-border/gbc-lcd-grid-v2-5x.glslp @@ -2,7 +2,7 @@ shaders = 4 shader0 = ../../motionblur/shaders/response-time.glsl shader1 = ../shaders/lcd-cgwg/lcd-grid-v2.glsl shader2 = ../shaders/color/gbc-color.glsl -shader3 = shader-files/gb-pass-5.glsl +shader3 = shader-files/gb-pass-5-original-size.glsl scale_type0 = source scale0 = 1 @@ -23,7 +23,8 @@ textures = BORDER BORDER = resources/color-border-square-4x.png BORDER_linear = true -parameters = "SCALE;OUT_X;OUT_Y;RSUBPIX_R;RSUBPIX_G;RSUBPIX_B;GSUBPIX_R;GSUBPIX_G;GSUBPIX_B;BSUBPIX_R;BSUBPIX_G;BSUBPIX_B;gain;gamma;blacklevel;ambient;BGR" +parameters = "video_scale;SCALE;OUT_X;OUT_Y;RSUBPIX_R;RSUBPIX_G;RSUBPIX_B;GSUBPIX_R;GSUBPIX_G;GSUBPIX_B;BSUBPIX_R;BSUBPIX_G;BSUBPIX_B;gain;gamma;blacklevel;ambient;BGR" +video_scale = "5.0" SCALE = "1.0" OUT_X = "4000.0" OUT_Y = "2000.0" diff --git a/handheld/console-border/gbc-lcd-grid-v2-6x.glslp b/handheld/console-border/gbc-lcd-grid-v2-6x.glslp index 45f6413..c6434fb 100644 --- a/handheld/console-border/gbc-lcd-grid-v2-6x.glslp +++ b/handheld/console-border/gbc-lcd-grid-v2-6x.glslp @@ -2,7 +2,7 @@ shaders = 4 shader0 = ../../motionblur/shaders/response-time.glsl shader1 = ../shaders/lcd-cgwg/lcd-grid-v2.glsl shader2 = ../shaders/color/gbc-color.glsl -shader3 = shader-files/gb-pass-5.glsl +shader3 = shader-files/gb-pass-5-original-size.glsl scale_type0 = source scale0 = 1 @@ -23,7 +23,8 @@ textures = BORDER BORDER = resources/color-border-square-4x.png BORDER_linear = true -parameters = "SCALE;OUT_X;OUT_Y;RSUBPIX_R;RSUBPIX_G;RSUBPIX_B;GSUBPIX_R;GSUBPIX_G;GSUBPIX_B;BSUBPIX_R;BSUBPIX_G;BSUBPIX_B;gain;gamma;blacklevel;ambient;BGR" +parameters = "video_scale;SCALE;OUT_X;OUT_Y;RSUBPIX_R;RSUBPIX_G;RSUBPIX_B;GSUBPIX_R;GSUBPIX_G;GSUBPIX_B;BSUBPIX_R;BSUBPIX_G;BSUBPIX_B;gain;gamma;blacklevel;ambient;BGR" +video_scale = "6.0" SCALE = "1.0" OUT_X = "4800.0" OUT_Y = "2400.0" diff --git a/handheld/console-border/gbc-lcd-grid-v2-7x.glslp b/handheld/console-border/gbc-lcd-grid-v2-7x.glslp index 763352e..3d552ee 100644 --- a/handheld/console-border/gbc-lcd-grid-v2-7x.glslp +++ b/handheld/console-border/gbc-lcd-grid-v2-7x.glslp @@ -2,7 +2,7 @@ shaders = 4 shader0 = ../../motionblur/shaders/response-time.glsl shader1 = ../shaders/lcd-cgwg/lcd-grid-v2.glsl shader2 = ../shaders/color/gbc-color.glsl -shader3 = shader-files/gb-pass-5.glsl +shader3 = shader-files/gb-pass-5-original-size.glsl scale_type0 = source scale0 = 1 @@ -23,7 +23,8 @@ textures = BORDER BORDER = resources/color-border-square-4x.png BORDER_linear = true -parameters = "SCALE;OUT_X;OUT_Y;RSUBPIX_R;RSUBPIX_G;RSUBPIX_B;GSUBPIX_R;GSUBPIX_G;GSUBPIX_B;BSUBPIX_R;BSUBPIX_G;BSUBPIX_B;gain;gamma;blacklevel;ambient;BGR" +parameters = "video_scale;SCALE;OUT_X;OUT_Y;RSUBPIX_R;RSUBPIX_G;RSUBPIX_B;GSUBPIX_R;GSUBPIX_G;GSUBPIX_B;BSUBPIX_R;BSUBPIX_G;BSUBPIX_B;gain;gamma;blacklevel;ambient;BGR" +video_scale = "7.0" SCALE = "1.0" OUT_X = "5600.0" OUT_Y = "2800.0" diff --git a/handheld/console-border/shader-files/gb-pass-5-original-size.glsl b/handheld/console-border/shader-files/gb-pass-5-original-size.glsl new file mode 100644 index 0000000..abefd1d --- /dev/null +++ b/handheld/console-border/shader-files/gb-pass-5-original-size.glsl @@ -0,0 +1,116 @@ +// Parameter lines go here: +#pragma parameter SCALE "Box Scale" 0.6667 0.6667 1.5 0.33333 +#pragma parameter OUT_X "Out X" 1600.0 1600.0 4800.0 8000.0 +#pragma parameter OUT_Y "Out Y" 800.0 800.0 2400.0 400.0 +#pragma parameter video_scale "Video Scale" 3.0 2.0 20.0 1.0 + +#if defined(VERTEX) + +#if __VERSION__ >= 130 +#define COMPAT_VARYING out +#define COMPAT_ATTRIBUTE in +#define COMPAT_TEXTURE texture +#else +#define COMPAT_VARYING varying +#define COMPAT_ATTRIBUTE attribute +#define COMPAT_TEXTURE texture2D +#endif + +#ifdef GL_ES +#define COMPAT_PRECISION mediump +#else +#define COMPAT_PRECISION +#endif + +COMPAT_ATTRIBUTE vec4 VertexCoord; +COMPAT_ATTRIBUTE vec4 COLOR; +COMPAT_ATTRIBUTE vec4 TexCoord; +COMPAT_VARYING vec4 COL0; +COMPAT_VARYING vec4 TEX0; + +uniform mat4 MVPMatrix; +uniform COMPAT_PRECISION int FrameDirection; +uniform COMPAT_PRECISION int FrameCount; +uniform COMPAT_PRECISION vec2 OutputSize; +uniform COMPAT_PRECISION vec2 TextureSize; +uniform COMPAT_PRECISION vec2 InputSize; +uniform COMPAT_PRECISION vec2 OrigInputSize; +COMPAT_VARYING vec2 tex_border; + +#define vTexCoord TEX0.xy +#define SourceSize vec4(TextureSize, 1.0 / TextureSize) //either TextureSize or InputSize +#define outsize vec4(OutputSize, 1.0 / OutputSize) + +#ifdef PARAMETER_UNIFORM +// All parameter floats need to have COMPAT_PRECISION in front of them +uniform COMPAT_PRECISION float SCALE; +uniform COMPAT_PRECISION float OUT_X; +uniform COMPAT_PRECISION float OUT_Y; +uniform COMPAT_PRECISION float video_scale; +#else +#define SCALE 0.66667 +#define OUT_X 1600.0 +#define OUT_Y 800.0 +#define video_scale 3.0 +#endif + +void main() +{ + gl_Position = MVPMatrix * VertexCoord; + vec2 scale = (OutputSize.xy / (OrigInputSize.xy * video_scale)) / SCALE; + vec2 middle = vec2(0.5, 0.5) * InputSize.xy / TextureSize.xy; + vec2 diff = TexCoord.xy - middle; + TEX0.xy = middle + diff * scale; + middle = vec2(0.5, 0.5); + tex_border = TEX0.xy * (TextureSize.xy / InputSize.xy); + vec2 dist = tex_border - middle; + tex_border = middle + dist * OutputSize.xy / vec2(OUT_X, OUT_Y) / scale; +} + +#elif defined(FRAGMENT) + +#if __VERSION__ >= 130 +#define COMPAT_VARYING in +#define COMPAT_TEXTURE texture +out vec4 FragColor; +#else +#define COMPAT_VARYING varying +#define FragColor gl_FragColor +#define COMPAT_TEXTURE texture2D +#endif + +#ifdef GL_ES +#ifdef GL_FRAGMENT_PRECISION_HIGH +precision highp float; +#else +precision mediump float; +#endif +#define COMPAT_PRECISION mediump +#else +#define COMPAT_PRECISION +#endif + +uniform COMPAT_PRECISION int FrameDirection; +uniform COMPAT_PRECISION int FrameCount; +uniform COMPAT_PRECISION vec2 OutputSize; +uniform COMPAT_PRECISION vec2 TextureSize; +uniform COMPAT_PRECISION vec2 InputSize; +uniform sampler2D Texture; +uniform sampler2D BORDER; +COMPAT_VARYING vec4 TEX0; +COMPAT_VARYING vec2 tex_border; + +// compatibility #defines +#define Source Texture +#define vTexCoord TEX0.xy + +#define SourceSize vec4(TextureSize, 1.0 / TextureSize) //either TextureSize or InputSize +#define outsize vec4(OutputSize, 1.0 / OutputSize) + +void main() +{ + vec4 frame = COMPAT_TEXTURE(Source, vTexCoord).rgba; + vec4 border = COMPAT_TEXTURE(BORDER, tex_border).rgba; + FragColor = vec4(mix(frame, border, border.a)); +} +#endif diff --git a/handheld/console-border/shader-files/gb-pass0.glsl b/handheld/console-border/shader-files/gb-pass0.glsl index 79e7f1b..4c35bb1 100644 --- a/handheld/console-border/shader-files/gb-pass0.glsl +++ b/handheld/console-border/shader-files/gb-pass0.glsl @@ -73,6 +73,7 @@ uniform COMPAT_PRECISION int FrameCount; uniform COMPAT_PRECISION vec2 OutputSize; uniform COMPAT_PRECISION vec2 TextureSize; uniform COMPAT_PRECISION vec2 InputSize; +uniform COMPAT_PRECISION vec2 OrigInputSize; #ifdef PARAMETER_UNIFORM uniform COMPAT_PRECISION float baseline_alpha; @@ -105,12 +106,13 @@ uniform COMPAT_PRECISION float video_scale; void main() { - vec2 scaled_video_out = (InputSize.xy * vec2(video_scale)); + vec2 scaled_video_out = (OrigInputSize.xy * vec2(video_scale)); + vec2 original_texel = InputSize.xy / (TextureSize.xy * OrigInputSize.xy); // Remaps position to integer scaled output gl_Position = MVPMatrix * VertexCoord / vec4( vec2(outsize.xy / scaled_video_out), 1.0, 1.0 ); TEX0.xy = TexCoord.xy + half_pixel; - dot_size = SourceSize.zw; - one_texel = 1.0 / (SourceSize.xy * video_scale); + dot_size = original_texel; + one_texel = original_texel / video_scale; } #elif defined(FRAGMENT) @@ -144,6 +146,21 @@ uniform COMPAT_PRECISION int FrameCount; uniform COMPAT_PRECISION vec2 OutputSize; uniform COMPAT_PRECISION vec2 TextureSize; uniform COMPAT_PRECISION vec2 InputSize; +uniform COMPAT_PRECISION vec2 OrigInputSize; +uniform COMPAT_PRECISION vec2 PrevInputSize; +uniform COMPAT_PRECISION vec2 Prev1InputSize; +uniform COMPAT_PRECISION vec2 Prev2InputSize; +uniform COMPAT_PRECISION vec2 Prev3InputSize; +uniform COMPAT_PRECISION vec2 Prev4InputSize; +uniform COMPAT_PRECISION vec2 Prev5InputSize; +uniform COMPAT_PRECISION vec2 Prev6InputSize; +uniform COMPAT_PRECISION vec2 PrevTextureSize; +uniform COMPAT_PRECISION vec2 Prev1TextureSize; +uniform COMPAT_PRECISION vec2 Prev2TextureSize; +uniform COMPAT_PRECISION vec2 Prev3TextureSize; +uniform COMPAT_PRECISION vec2 Prev4TextureSize; +uniform COMPAT_PRECISION vec2 Prev5TextureSize; +uniform COMPAT_PRECISION vec2 Prev6TextureSize; uniform sampler2D Texture; uniform sampler2D COLOR_PALETTE; uniform sampler2D PrevTexture; @@ -181,14 +198,16 @@ uniform COMPAT_PRECISION float video_scale; // Frame sampling definitions +#define active_coord (vTexCoord * TextureSize.xy / InputSize.xy) +#define history_coord(input_size, texture_size) (all(equal(InputSize, OrigInputSize)) ? vTexCoord : active_coord * input_size / texture_size) #define curr_rgb abs(1.0 - COMPAT_TEXTURE(Source, vTexCoord).rgb) -#define prev0_rgb abs(1.0 - COMPAT_TEXTURE(PrevTexture, vTexCoord).rgb) -#define prev1_rgb abs(1.0 - COMPAT_TEXTURE(Prev1Texture, vTexCoord).rgb) -#define prev2_rgb abs(1.0 - COMPAT_TEXTURE(Prev2Texture, vTexCoord).rgb) -#define prev3_rgb abs(1.0 - COMPAT_TEXTURE(Prev3Texture, vTexCoord).rgb) -#define prev4_rgb abs(1.0 - COMPAT_TEXTURE(Prev4Texture, vTexCoord).rgb) -#define prev5_rgb abs(1.0 - COMPAT_TEXTURE(Prev5Texture, vTexCoord).rgb) -#define prev6_rgb abs(1.0 - COMPAT_TEXTURE(Prev6Texture, vTexCoord).rgb) +#define prev0_rgb abs(1.0 - COMPAT_TEXTURE(PrevTexture, history_coord(PrevInputSize.xy, PrevTextureSize.xy)).rgb) +#define prev1_rgb abs(1.0 - COMPAT_TEXTURE(Prev1Texture, history_coord(Prev1InputSize.xy, Prev1TextureSize.xy)).rgb) +#define prev2_rgb abs(1.0 - COMPAT_TEXTURE(Prev2Texture, history_coord(Prev2InputSize.xy, Prev2TextureSize.xy)).rgb) +#define prev3_rgb abs(1.0 - COMPAT_TEXTURE(Prev3Texture, history_coord(Prev3InputSize.xy, Prev3TextureSize.xy)).rgb) +#define prev4_rgb abs(1.0 - COMPAT_TEXTURE(Prev4Texture, history_coord(Prev4InputSize.xy, Prev4TextureSize.xy)).rgb) +#define prev5_rgb abs(1.0 - COMPAT_TEXTURE(Prev5Texture, history_coord(Prev5InputSize.xy, Prev5TextureSize.xy)).rgb) +#define prev6_rgb abs(1.0 - COMPAT_TEXTURE(Prev6Texture, history_coord(Prev6InputSize.xy, Prev6TextureSize.xy)).rgb) void main() { diff --git a/handheld/console-border/shader-files/gb-pass1.glsl b/handheld/console-border/shader-files/gb-pass1.glsl index 14af424..0baf362 100644 --- a/handheld/console-border/shader-files/gb-pass1.glsl +++ b/handheld/console-border/shader-files/gb-pass1.glsl @@ -1,3 +1,5 @@ +#pragma name ConsoleBorderGameBoyDotMatrixAlphaBlend + /////////////////////////////////////////////////////////////////////////// // // // Gameboy Classic Shader v0.2.2 // diff --git a/handheld/console-border/shader-files/gb-pass4.glsl b/handheld/console-border/shader-files/gb-pass4.glsl index ce44cc9..bf09083 100644 --- a/handheld/console-border/shader-files/gb-pass4.glsl +++ b/handheld/console-border/shader-files/gb-pass4.glsl @@ -133,10 +133,12 @@ uniform COMPAT_PRECISION int FrameCount; uniform COMPAT_PRECISION vec2 OutputSize; uniform COMPAT_PRECISION vec2 TextureSize; uniform COMPAT_PRECISION vec2 InputSize; +uniform COMPAT_PRECISION vec2 ConsoleBorderGameBoyDotMatrixAlphaBlendTextureSize; +uniform COMPAT_PRECISION vec2 ConsoleBorderGameBoyDotMatrixAlphaBlendInputSize; uniform sampler2D Texture; uniform sampler2D BACKGROUND; uniform sampler2D COLOR_PALETTE; -uniform sampler2D Pass2Texture; +uniform sampler2D ConsoleBorderGameBoyDotMatrixAlphaBlendTexture; COMPAT_VARYING vec4 TEX0; COMPAT_VARYING vec2 texel; @@ -186,12 +188,12 @@ uniform COMPAT_PRECISION float screen_offset_y; void main() { -// vec2 tex = floor(outsize.xy * vTexCoord); -// tex = (tex + 0.5) * outsize.zw; - vec2 tex = vTexCoord.xy; + vec2 active_coord = vTexCoord * TextureSize.xy / InputSize.xy; + vec2 tex = floor(ConsoleBorderGameBoyDotMatrixAlphaBlendInputSize * active_coord); + tex = (tex + 0.5) / ConsoleBorderGameBoyDotMatrixAlphaBlendTextureSize; // Sample all the relevant textures - vec4 foreground = COMPAT_TEXTURE(Pass2Texture, tex - screen_offset); + vec4 foreground = COMPAT_TEXTURE(ConsoleBorderGameBoyDotMatrixAlphaBlendTexture, tex - screen_offset); vec4 background = COMPAT_TEXTURE(BACKGROUND, vTexCoord); vec4 shadows = COMPAT_TEXTURE(Source, vTexCoord - (shadow_offset + screen_offset)); vec4 background_color = bg_color; diff --git a/handheld/gameboy-light.glslp b/handheld/gameboy-light.glslp index 964a52a..b55c553 100644 --- a/handheld/gameboy-light.glslp +++ b/handheld/gameboy-light.glslp @@ -10,7 +10,7 @@ shader1 = shaders/gameboy/shader-files/gb-pass1.glsl filter_linear1 = false scale_type1 = source scale1 = 1.0 -alias1 = "PASS1" +alias1 = "GameBoyDotMatrixAlphaBlend" shader2 = shaders/gameboy/shader-files/gb-pass2.glsl filter_linear2 = false diff --git a/handheld/gameboy-pocket.glslp b/handheld/gameboy-pocket.glslp index b477498..d03e43f 100644 --- a/handheld/gameboy-pocket.glslp +++ b/handheld/gameboy-pocket.glslp @@ -10,7 +10,7 @@ shader1 = shaders/gameboy/shader-files/gb-pass1.glsl filter_linear1 = false scale_type1 = source scale1 = 1.0 -alias1 = "PASS1" +alias1 = "GameBoyDotMatrixAlphaBlend" shader2 = shaders/gameboy/shader-files/gb-pass2.glsl filter_linear2 = false diff --git a/handheld/gameboy.glslp b/handheld/gameboy.glslp index a292813..385f902 100644 --- a/handheld/gameboy.glslp +++ b/handheld/gameboy.glslp @@ -10,7 +10,7 @@ shader1 = shaders/gameboy/shader-files/gb-pass1.glsl filter_linear1 = false scale_type1 = source scale1 = 1.0 -alias1 = "PASS1" +alias1 = "GameBoyDotMatrixAlphaBlend" shader2 = shaders/gameboy/shader-files/gb-pass2.glsl filter_linear2 = false diff --git a/handheld/gb-dot-matrix-DMG.glslp b/handheld/gb-dot-matrix-DMG.glslp index 647adfb..9343d89 100644 --- a/handheld/gb-dot-matrix-DMG.glslp +++ b/handheld/gb-dot-matrix-DMG.glslp @@ -13,7 +13,7 @@ shader1 = "shaders/gameboy-dm-color/gb-pass1.glsl" filter_linear1 = "false" wrap_mode1 = "clamp_to_border" mipmap_input1 = "false" -alias1 = "PASS1" +alias1 = "GameBoyDotMatrixAlphaBlend" float_framebuffer1 = "false" srgb_framebuffer1 = "false" scale_type_x1 = "source" diff --git a/handheld/gb-dot-matrix-inverted.glslp b/handheld/gb-dot-matrix-inverted.glslp index ee79bac..43546ce 100644 --- a/handheld/gb-dot-matrix-inverted.glslp +++ b/handheld/gb-dot-matrix-inverted.glslp @@ -13,7 +13,7 @@ shader1 = "shaders/gameboy-dm-color/gb-pass1.glsl" filter_linear1 = "false" wrap_mode1 = "clamp_to_border" mipmap_input1 = "false" -alias1 = "PASS1" +alias1 = "GameBoyDotMatrixAlphaBlend" float_framebuffer1 = "false" srgb_framebuffer1 = "false" scale_type_x1 = "source" diff --git a/handheld/gb-dot-matrix-light.glslp b/handheld/gb-dot-matrix-light.glslp index b5f6e23..72e89b8 100644 --- a/handheld/gb-dot-matrix-light.glslp +++ b/handheld/gb-dot-matrix-light.glslp @@ -13,7 +13,7 @@ shader1 = "shaders/gameboy-dm-color/gb-pass1.glsl" filter_linear1 = "false" wrap_mode1 = "clamp_to_border" mipmap_input1 = "false" -alias1 = "PASS1" +alias1 = "GameBoyDotMatrixAlphaBlend" float_framebuffer1 = "false" srgb_framebuffer1 = "false" scale_type_x1 = "source" diff --git a/handheld/gb-dot-matrix-pocket.glslp b/handheld/gb-dot-matrix-pocket.glslp index 832511f..2e5210b 100644 --- a/handheld/gb-dot-matrix-pocket.glslp +++ b/handheld/gb-dot-matrix-pocket.glslp @@ -13,7 +13,7 @@ shader1 = "shaders/gameboy-dm-color/gb-pass1.glsl" filter_linear1 = "false" wrap_mode1 = "clamp_to_border" mipmap_input1 = "false" -alias1 = "PASS1" +alias1 = "GameBoyDotMatrixAlphaBlend" float_framebuffer1 = "false" srgb_framebuffer1 = "false" scale_type_x1 = "source" diff --git a/handheld/gb-dot-matrix-white.glslp b/handheld/gb-dot-matrix-white.glslp index 648db25..3ff48dc 100644 --- a/handheld/gb-dot-matrix-white.glslp +++ b/handheld/gb-dot-matrix-white.glslp @@ -13,7 +13,7 @@ shader1 = "shaders/gameboy-dm-color/gb-pass1.glsl" filter_linear1 = "false" wrap_mode1 = "clamp_to_border" mipmap_input1 = "false" -alias1 = "PASS1" +alias1 = "GameBoyDotMatrixAlphaBlend" float_framebuffer1 = "false" srgb_framebuffer1 = "false" scale_type_x1 = "source" diff --git a/handheld/gba-dot-matrix-white-720p.glslp b/handheld/gba-dot-matrix-white-720p.glslp index 94d0c8a..d04afd3 100644 --- a/handheld/gba-dot-matrix-white-720p.glslp +++ b/handheld/gba-dot-matrix-white-720p.glslp @@ -16,7 +16,7 @@ shader1 = "shaders/gameboy-dm-color/gb-pass1.glsl" filter_linear1 = "false" wrap_mode1 = "clamp_to_border" mipmap_input1 = "false" -alias1 = "PASS1" +alias1 = "GameBoyDotMatrixAlphaBlend" float_framebuffer1 = "false" srgb_framebuffer1 = "false" scale_type_x1 = "source" diff --git a/handheld/gba-dot-matrix-white.glslp b/handheld/gba-dot-matrix-white.glslp index d3334ce..07e9420 100644 --- a/handheld/gba-dot-matrix-white.glslp +++ b/handheld/gba-dot-matrix-white.glslp @@ -16,7 +16,7 @@ shader1 = "shaders/gameboy-dm-color/gb-pass1.glsl" filter_linear1 = "false" wrap_mode1 = "clamp_to_border" mipmap_input1 = "false" -alias1 = "PASS1" +alias1 = "GameBoyDotMatrixAlphaBlend" float_framebuffer1 = "false" srgb_framebuffer1 = "false" scale_type_x1 = "source" diff --git a/handheld/gbc-dot-matrix-white.glslp b/handheld/gbc-dot-matrix-white.glslp index c27cdbe..736a18b 100644 --- a/handheld/gbc-dot-matrix-white.glslp +++ b/handheld/gbc-dot-matrix-white.glslp @@ -16,7 +16,7 @@ shader1 = "shaders/gameboy-dm-color/gb-pass1.glsl" filter_linear1 = "false" wrap_mode1 = "clamp_to_border" mipmap_input1 = "false" -alias1 = "PASS1" +alias1 = "GameBoyDotMatrixAlphaBlend" float_framebuffer1 = "false" srgb_framebuffer1 = "false" scale_type_x1 = "source" diff --git a/handheld/shaders/bevel.glsl b/handheld/shaders/bevel.glsl index 3c420d0..58db3d1 100644 --- a/handheld/shaders/bevel.glsl +++ b/handheld/shaders/bevel.glsl @@ -96,6 +96,7 @@ uniform COMPAT_PRECISION int FrameCount; uniform COMPAT_PRECISION vec2 OutputSize; uniform COMPAT_PRECISION vec2 TextureSize; uniform COMPAT_PRECISION vec2 InputSize; +uniform COMPAT_PRECISION vec2 OrigInputSize; uniform sampler2D Texture; COMPAT_VARYING vec4 TEX0; @@ -134,7 +135,9 @@ vec3 bevel(vec2 pos, vec3 color) void main() { - vec2 position = fract(vTexCoord*SourceSize.xy); + vec2 position = fract(vTexCoord * SourceSize.xy); + if (any(notEqual(InputSize, OrigInputSize))) + position = fract(vTexCoord * TextureSize.xy / InputSize.xy * OrigInputSize.xy); vec3 color = GAMMA_IN(COMPAT_TEXTURE(Source, vTexCoord).rgb); diff --git a/handheld/shaders/gameboy-dm-color/gb-pass0-NI.glsl b/handheld/shaders/gameboy-dm-color/gb-pass0-NI.glsl index 2709879..3f07f4e 100644 --- a/handheld/shaders/gameboy-dm-color/gb-pass0-NI.glsl +++ b/handheld/shaders/gameboy-dm-color/gb-pass0-NI.glsl @@ -60,6 +60,7 @@ uniform COMPAT_PRECISION int FrameCount; uniform COMPAT_PRECISION vec2 OutputSize; uniform COMPAT_PRECISION vec2 TextureSize; uniform COMPAT_PRECISION vec2 InputSize; +uniform COMPAT_PRECISION vec2 OrigInputSize; #ifdef PARAMETER_UNIFORM uniform COMPAT_PRECISION float baseline_alpha; @@ -85,8 +86,8 @@ uniform COMPAT_PRECISION float console_border_enable; void main() { // Ensure proper scale calculation - float scale_x = max(outsize.x / InputSize.x, 1.0); - float scale_y = max(outsize.y / InputSize.y, 1.0); + float scale_x = max(outsize.x / OrigInputSize.x, 1.0); + float scale_y = max(outsize.y / OrigInputSize.y, 1.0); float video_scale_factor = max(scale_x, scale_y); // Override video scale factor if border is enabled @@ -95,7 +96,8 @@ void main() } // Compute the final output scaling - vec2 scaled_video_out = InputSize.xy * vec2(video_scale_factor); + vec2 scaled_video_out = OrigInputSize.xy * vec2(video_scale_factor); + vec2 original_texel = InputSize.xy / (TextureSize.xy * OrigInputSize.xy); // Assign vertex transformation and attributes gl_Position = MVPMatrix * VertexCoord; @@ -103,8 +105,8 @@ void main() TEX0.xy = TexCoord.xy + half_pixel; // Define texel size based on final scale - dot_size = SourceSize.zw; - one_texel = 1.0 / (SourceSize.xy * video_scale_factor); + dot_size = original_texel; + one_texel = original_texel / video_scale_factor; } #elif defined(FRAGMENT) @@ -139,6 +141,21 @@ uniform COMPAT_PRECISION int FrameCount; uniform COMPAT_PRECISION vec2 OutputSize; uniform COMPAT_PRECISION vec2 TextureSize; uniform COMPAT_PRECISION vec2 InputSize; +uniform COMPAT_PRECISION vec2 OrigInputSize; +uniform COMPAT_PRECISION vec2 PrevInputSize; +uniform COMPAT_PRECISION vec2 Prev1InputSize; +uniform COMPAT_PRECISION vec2 Prev2InputSize; +uniform COMPAT_PRECISION vec2 Prev3InputSize; +uniform COMPAT_PRECISION vec2 Prev4InputSize; +uniform COMPAT_PRECISION vec2 Prev5InputSize; +uniform COMPAT_PRECISION vec2 Prev6InputSize; +uniform COMPAT_PRECISION vec2 PrevTextureSize; +uniform COMPAT_PRECISION vec2 Prev1TextureSize; +uniform COMPAT_PRECISION vec2 Prev2TextureSize; +uniform COMPAT_PRECISION vec2 Prev3TextureSize; +uniform COMPAT_PRECISION vec2 Prev4TextureSize; +uniform COMPAT_PRECISION vec2 Prev5TextureSize; +uniform COMPAT_PRECISION vec2 Prev6TextureSize; uniform sampler2D Texture; uniform sampler2D COLOR_PALETTE; uniform sampler2D PrevTexture; @@ -157,6 +174,7 @@ COMPAT_VARYING vec2 one_texel; #define vTexCoord TEX0.xy #define SourceSize vec4(TextureSize, 1.0 / TextureSize) //either TextureSize or InputSize #define outsize vec4(OutputSize, 1.0 / OutputSize) +#define history_coord(input_size, texture_size) (all(equal(InputSize, OrigInputSize)) ? TEX0.xy : active_coord * input_size / texture_size) #ifdef PARAMETER_UNIFORM uniform COMPAT_PRECISION float baseline_alpha; @@ -189,13 +207,14 @@ void main() // Apply response time smoothing with a decreasing impact of each previous frame float base_factor = pow(response_time, 2.0); // Adjust the exponent for a smoother curve - input_rgb += (COMPAT_TEXTURE(PrevTexture, TEX0.xy).rgb - input_rgb) * response_time; - input_rgb += (COMPAT_TEXTURE(Prev1Texture, TEX0.xy).rgb - input_rgb) * base_factor * 0.5; - input_rgb += (COMPAT_TEXTURE(Prev2Texture, TEX0.xy).rgb - input_rgb) * base_factor * 0.25; - input_rgb += (COMPAT_TEXTURE(Prev3Texture, TEX0.xy).rgb - input_rgb) * base_factor * 0.125; - input_rgb += (COMPAT_TEXTURE(Prev4Texture, TEX0.xy).rgb - input_rgb) * base_factor * 0.0625; - input_rgb += (COMPAT_TEXTURE(Prev5Texture, TEX0.xy).rgb - input_rgb) * base_factor * 0.03125; - input_rgb += (COMPAT_TEXTURE(Prev6Texture, TEX0.xy).rgb - input_rgb) * base_factor * 0.015625; + vec2 active_coord = TEX0.xy * TextureSize.xy / InputSize.xy; + input_rgb += (COMPAT_TEXTURE(PrevTexture, history_coord(PrevInputSize.xy, PrevTextureSize.xy)).rgb - input_rgb) * response_time; + input_rgb += (COMPAT_TEXTURE(Prev1Texture, history_coord(Prev1InputSize.xy, Prev1TextureSize.xy)).rgb - input_rgb) * base_factor * 0.5; + input_rgb += (COMPAT_TEXTURE(Prev2Texture, history_coord(Prev2InputSize.xy, Prev2TextureSize.xy)).rgb - input_rgb) * base_factor * 0.25; + input_rgb += (COMPAT_TEXTURE(Prev3Texture, history_coord(Prev3InputSize.xy, Prev3TextureSize.xy)).rgb - input_rgb) * base_factor * 0.125; + input_rgb += (COMPAT_TEXTURE(Prev4Texture, history_coord(Prev4InputSize.xy, Prev4TextureSize.xy)).rgb - input_rgb) * base_factor * 0.0625; + input_rgb += (COMPAT_TEXTURE(Prev5Texture, history_coord(Prev5InputSize.xy, Prev5TextureSize.xy)).rgb - input_rgb) * base_factor * 0.03125; + input_rgb += (COMPAT_TEXTURE(Prev6Texture, history_coord(Prev6InputSize.xy, Prev6TextureSize.xy)).rgb - input_rgb) * base_factor * 0.015625; // Calculate the alpha based on the weighted input RGB float rgb_to_alpha = (input_rgb.r + input_rgb.g + input_rgb.b) / 3.0 + (is_on_dot * baseline_alpha); diff --git a/handheld/shaders/gameboy-dm-color/gb-pass0.glsl b/handheld/shaders/gameboy-dm-color/gb-pass0.glsl index 4827761..16184e3 100644 --- a/handheld/shaders/gameboy-dm-color/gb-pass0.glsl +++ b/handheld/shaders/gameboy-dm-color/gb-pass0.glsl @@ -60,6 +60,7 @@ uniform COMPAT_PRECISION int FrameCount; uniform COMPAT_PRECISION vec2 OutputSize; uniform COMPAT_PRECISION vec2 TextureSize; uniform COMPAT_PRECISION vec2 InputSize; +uniform COMPAT_PRECISION vec2 OrigInputSize; #ifdef PARAMETER_UNIFORM uniform COMPAT_PRECISION float baseline_alpha; @@ -85,18 +86,19 @@ uniform COMPAT_PRECISION float console_border_enable; void main() { - float scale_x = floor(outsize.x / InputSize.x); - float scale_y = floor(outsize.y / InputSize.y); + float scale_x = floor(outsize.x / OrigInputSize.x); + float scale_y = floor(outsize.y / OrigInputSize.y); float video_scale_factor = min(scale_x, scale_y); if (console_border_enable > 0.5) { video_scale_factor = video_scale; } - vec2 scaled_video_out = InputSize.xy * vec2(video_scale_factor); + vec2 scaled_video_out = OrigInputSize.xy * vec2(video_scale_factor); + vec2 original_texel = InputSize.xy / (TextureSize.xy * OrigInputSize.xy); gl_Position = MVPMatrix * VertexCoord / vec4(outsize.xy / scaled_video_out, 1.0, 1.0); COL0 = COLOR; TEX0.xy = TexCoord.xy + half_pixel; - dot_size = SourceSize.zw; - one_texel = 1.0 / (SourceSize.xy * video_scale_factor); + dot_size = original_texel; + one_texel = original_texel / video_scale_factor; } #elif defined(FRAGMENT) @@ -131,6 +133,21 @@ uniform COMPAT_PRECISION int FrameCount; uniform COMPAT_PRECISION vec2 OutputSize; uniform COMPAT_PRECISION vec2 TextureSize; uniform COMPAT_PRECISION vec2 InputSize; +uniform COMPAT_PRECISION vec2 OrigInputSize; +uniform COMPAT_PRECISION vec2 PrevInputSize; +uniform COMPAT_PRECISION vec2 Prev1InputSize; +uniform COMPAT_PRECISION vec2 Prev2InputSize; +uniform COMPAT_PRECISION vec2 Prev3InputSize; +uniform COMPAT_PRECISION vec2 Prev4InputSize; +uniform COMPAT_PRECISION vec2 Prev5InputSize; +uniform COMPAT_PRECISION vec2 Prev6InputSize; +uniform COMPAT_PRECISION vec2 PrevTextureSize; +uniform COMPAT_PRECISION vec2 Prev1TextureSize; +uniform COMPAT_PRECISION vec2 Prev2TextureSize; +uniform COMPAT_PRECISION vec2 Prev3TextureSize; +uniform COMPAT_PRECISION vec2 Prev4TextureSize; +uniform COMPAT_PRECISION vec2 Prev5TextureSize; +uniform COMPAT_PRECISION vec2 Prev6TextureSize; uniform sampler2D Texture; uniform sampler2D COLOR_PALETTE; uniform sampler2D PrevTexture; @@ -149,6 +166,7 @@ COMPAT_VARYING vec2 one_texel; #define vTexCoord TEX0.xy #define SourceSize vec4(TextureSize, 1.0 / TextureSize) //either TextureSize or InputSize #define outsize vec4(OutputSize, 1.0 / OutputSize) +#define history_coord(input_size, texture_size) (all(equal(InputSize, OrigInputSize)) ? TEX0.xy : active_coord * input_size / texture_size) #ifdef PARAMETER_UNIFORM uniform COMPAT_PRECISION float baseline_alpha; @@ -181,13 +199,14 @@ void main() // Apply response time smoothing with a decreasing impact of each previous frame float base_factor = pow(response_time, 2.0); // Adjust the exponent for a smoother curve - input_rgb += (COMPAT_TEXTURE(PrevTexture, TEX0.xy).rgb - input_rgb) * response_time; - input_rgb += (COMPAT_TEXTURE(Prev1Texture, TEX0.xy).rgb - input_rgb) * base_factor * 0.5; - input_rgb += (COMPAT_TEXTURE(Prev2Texture, TEX0.xy).rgb - input_rgb) * base_factor * 0.25; - input_rgb += (COMPAT_TEXTURE(Prev3Texture, TEX0.xy).rgb - input_rgb) * base_factor * 0.125; - input_rgb += (COMPAT_TEXTURE(Prev4Texture, TEX0.xy).rgb - input_rgb) * base_factor * 0.0625; - input_rgb += (COMPAT_TEXTURE(Prev5Texture, TEX0.xy).rgb - input_rgb) * base_factor * 0.03125; - input_rgb += (COMPAT_TEXTURE(Prev6Texture, TEX0.xy).rgb - input_rgb) * base_factor * 0.015625; + vec2 active_coord = TEX0.xy * TextureSize.xy / InputSize.xy; + input_rgb += (COMPAT_TEXTURE(PrevTexture, history_coord(PrevInputSize.xy, PrevTextureSize.xy)).rgb - input_rgb) * response_time; + input_rgb += (COMPAT_TEXTURE(Prev1Texture, history_coord(Prev1InputSize.xy, Prev1TextureSize.xy)).rgb - input_rgb) * base_factor * 0.5; + input_rgb += (COMPAT_TEXTURE(Prev2Texture, history_coord(Prev2InputSize.xy, Prev2TextureSize.xy)).rgb - input_rgb) * base_factor * 0.25; + input_rgb += (COMPAT_TEXTURE(Prev3Texture, history_coord(Prev3InputSize.xy, Prev3TextureSize.xy)).rgb - input_rgb) * base_factor * 0.125; + input_rgb += (COMPAT_TEXTURE(Prev4Texture, history_coord(Prev4InputSize.xy, Prev4TextureSize.xy)).rgb - input_rgb) * base_factor * 0.0625; + input_rgb += (COMPAT_TEXTURE(Prev5Texture, history_coord(Prev5InputSize.xy, Prev5TextureSize.xy)).rgb - input_rgb) * base_factor * 0.03125; + input_rgb += (COMPAT_TEXTURE(Prev6Texture, history_coord(Prev6InputSize.xy, Prev6TextureSize.xy)).rgb - input_rgb) * base_factor * 0.015625; // Calculate the alpha based on the weighted input RGB float rgb_to_alpha = (input_rgb.r + input_rgb.g + input_rgb.b) / 3.0 + (is_on_dot * baseline_alpha); diff --git a/handheld/shaders/gameboy-dm-color/gb-pass1.glsl b/handheld/shaders/gameboy-dm-color/gb-pass1.glsl index 7a35215..fa987f6 100644 --- a/handheld/shaders/gameboy-dm-color/gb-pass1.glsl +++ b/handheld/shaders/gameboy-dm-color/gb-pass1.glsl @@ -1,3 +1,5 @@ +#pragma name GameBoyDotMatrixAlphaBlend + /////////////////////////////////////////////////////////////////////////// // // // Gameboy Color Dot Matrix v0.9 // diff --git a/handheld/shaders/gameboy-dm-color/gb-pass2.glsl b/handheld/shaders/gameboy-dm-color/gb-pass2.glsl index 3ceda3f..312421f 100644 --- a/handheld/shaders/gameboy-dm-color/gb-pass2.glsl +++ b/handheld/shaders/gameboy-dm-color/gb-pass2.glsl @@ -133,10 +133,12 @@ uniform COMPAT_PRECISION int FrameCount; uniform COMPAT_PRECISION vec2 OutputSize; uniform COMPAT_PRECISION vec2 TextureSize; uniform COMPAT_PRECISION vec2 InputSize; +uniform COMPAT_PRECISION vec2 GameBoyDotMatrixAlphaBlendTextureSize; +uniform COMPAT_PRECISION vec2 GameBoyDotMatrixAlphaBlendInputSize; uniform sampler2D Texture; uniform sampler2D BACKGROUND; uniform sampler2D COLOR_PALETTE; -uniform sampler2D Pass2Texture; +uniform sampler2D GameBoyDotMatrixAlphaBlendTexture; COMPAT_VARYING vec4 TEX0; COMPAT_VARYING vec2 texel; @@ -186,12 +188,12 @@ uniform COMPAT_PRECISION float screen_offset_y; void main() { -// vec2 tex = floor(outsize.xy * vTexCoord); -// tex = (tex + 0.5) * outsize.zw; - vec2 tex = vTexCoord.xy; + vec2 active_coord = vTexCoord * TextureSize.xy / InputSize.xy; + vec2 tex = floor(GameBoyDotMatrixAlphaBlendInputSize * active_coord); + tex = (tex + 0.5) / GameBoyDotMatrixAlphaBlendTextureSize; // Sample all the relevant textures - vec4 foreground = COMPAT_TEXTURE(Pass2Texture, tex - screen_offset); + vec4 foreground = COMPAT_TEXTURE(GameBoyDotMatrixAlphaBlendTexture, tex - screen_offset); vec4 background = COMPAT_TEXTURE(BACKGROUND, vTexCoord); vec4 shadows = COMPAT_TEXTURE(Source, vTexCoord - (shadow_offset + screen_offset)); vec4 background_color = bg_color; diff --git a/handheld/shaders/gameboy/shader-files/gb-pass0.glsl b/handheld/shaders/gameboy/shader-files/gb-pass0.glsl index a3cfdc5..ed05404 100644 --- a/handheld/shaders/gameboy/shader-files/gb-pass0.glsl +++ b/handheld/shaders/gameboy/shader-files/gb-pass0.glsl @@ -76,6 +76,7 @@ uniform COMPAT_PRECISION int FrameCount; uniform COMPAT_PRECISION vec2 OutputSize; uniform COMPAT_PRECISION vec2 TextureSize; uniform COMPAT_PRECISION vec2 InputSize; +uniform COMPAT_PRECISION vec2 OrigInputSize; #ifdef PARAMETER_UNIFORM uniform COMPAT_PRECISION float baseline_alpha; @@ -110,15 +111,16 @@ uniform COMPAT_PRECISION float video_scale; void main() { - float video_scale_factor = floor(outsize.y / InputSize.y); + float video_scale_factor = floor(outsize.y / OrigInputSize.y); if (console_border_enable > 0.5) video_scale_factor = video_scale; - vec2 scaled_video_out = (InputSize.xy * vec2(video_scale_factor)); + vec2 scaled_video_out = (OrigInputSize.xy * vec2(video_scale_factor)); + vec2 original_texel = InputSize.xy / (TextureSize.xy * OrigInputSize.xy); // Remaps position to integer scaled output gl_Position = MVPMatrix * VertexCoord / vec4( vec2(outsize.xy / scaled_video_out), 1.0, 1.0 ); COL0 = COLOR; TEX0.xy = TexCoord.xy + half_pixel; - dot_size = SourceSize.zw; - one_texel = 1.0 / (SourceSize.xy * video_scale_factor); + dot_size = original_texel; + one_texel = original_texel / video_scale_factor; } #elif defined(FRAGMENT) @@ -152,6 +154,21 @@ uniform COMPAT_PRECISION int FrameCount; uniform COMPAT_PRECISION vec2 OutputSize; uniform COMPAT_PRECISION vec2 TextureSize; uniform COMPAT_PRECISION vec2 InputSize; +uniform COMPAT_PRECISION vec2 OrigInputSize; +uniform COMPAT_PRECISION vec2 PrevInputSize; +uniform COMPAT_PRECISION vec2 Prev1InputSize; +uniform COMPAT_PRECISION vec2 Prev2InputSize; +uniform COMPAT_PRECISION vec2 Prev3InputSize; +uniform COMPAT_PRECISION vec2 Prev4InputSize; +uniform COMPAT_PRECISION vec2 Prev5InputSize; +uniform COMPAT_PRECISION vec2 Prev6InputSize; +uniform COMPAT_PRECISION vec2 PrevTextureSize; +uniform COMPAT_PRECISION vec2 Prev1TextureSize; +uniform COMPAT_PRECISION vec2 Prev2TextureSize; +uniform COMPAT_PRECISION vec2 Prev3TextureSize; +uniform COMPAT_PRECISION vec2 Prev4TextureSize; +uniform COMPAT_PRECISION vec2 Prev5TextureSize; +uniform COMPAT_PRECISION vec2 Prev6TextureSize; uniform sampler2D Texture; uniform sampler2D COLOR_PALETTE; uniform sampler2D PrevTexture; @@ -189,14 +206,16 @@ uniform COMPAT_PRECISION float video_scale; // Frame sampling definitions +#define active_coord (vTexCoord * TextureSize.xy / InputSize.xy) +#define history_coord(input_size, texture_size) (all(equal(InputSize, OrigInputSize)) ? vTexCoord : active_coord * input_size / texture_size) #define curr_rgb abs(1.0 - COMPAT_TEXTURE(Source, vTexCoord).rgb) -#define prev0_rgb abs(1.0 - COMPAT_TEXTURE(PrevTexture, vTexCoord).rgb) -#define prev1_rgb abs(1.0 - COMPAT_TEXTURE(Prev1Texture, vTexCoord).rgb) -#define prev2_rgb abs(1.0 - COMPAT_TEXTURE(Prev2Texture, vTexCoord).rgb) -#define prev3_rgb abs(1.0 - COMPAT_TEXTURE(Prev3Texture, vTexCoord).rgb) -#define prev4_rgb abs(1.0 - COMPAT_TEXTURE(Prev4Texture, vTexCoord).rgb) -#define prev5_rgb abs(1.0 - COMPAT_TEXTURE(Prev5Texture, vTexCoord).rgb) -#define prev6_rgb abs(1.0 - COMPAT_TEXTURE(Prev6Texture, vTexCoord).rgb) +#define prev0_rgb abs(1.0 - COMPAT_TEXTURE(PrevTexture, history_coord(PrevInputSize.xy, PrevTextureSize.xy)).rgb) +#define prev1_rgb abs(1.0 - COMPAT_TEXTURE(Prev1Texture, history_coord(Prev1InputSize.xy, Prev1TextureSize.xy)).rgb) +#define prev2_rgb abs(1.0 - COMPAT_TEXTURE(Prev2Texture, history_coord(Prev2InputSize.xy, Prev2TextureSize.xy)).rgb) +#define prev3_rgb abs(1.0 - COMPAT_TEXTURE(Prev3Texture, history_coord(Prev3InputSize.xy, Prev3TextureSize.xy)).rgb) +#define prev4_rgb abs(1.0 - COMPAT_TEXTURE(Prev4Texture, history_coord(Prev4InputSize.xy, Prev4TextureSize.xy)).rgb) +#define prev5_rgb abs(1.0 - COMPAT_TEXTURE(Prev5Texture, history_coord(Prev5InputSize.xy, Prev5TextureSize.xy)).rgb) +#define prev6_rgb abs(1.0 - COMPAT_TEXTURE(Prev6Texture, history_coord(Prev6InputSize.xy, Prev6TextureSize.xy)).rgb) void main() { diff --git a/handheld/shaders/gameboy/shader-files/gb-pass1.glsl b/handheld/shaders/gameboy/shader-files/gb-pass1.glsl index 203b8a6..51a2abc 100644 --- a/handheld/shaders/gameboy/shader-files/gb-pass1.glsl +++ b/handheld/shaders/gameboy/shader-files/gb-pass1.glsl @@ -1,3 +1,5 @@ +#pragma name GameBoyDotMatrixAlphaBlend + /////////////////////////////////////////////////////////////////////////// // // // Gameboy Classic Shader v0.2.2 // diff --git a/handheld/shaders/gameboy/shader-files/gb-pass4.glsl b/handheld/shaders/gameboy/shader-files/gb-pass4.glsl index 818094b..8913833 100644 --- a/handheld/shaders/gameboy/shader-files/gb-pass4.glsl +++ b/handheld/shaders/gameboy/shader-files/gb-pass4.glsl @@ -133,10 +133,12 @@ uniform COMPAT_PRECISION int FrameCount; uniform COMPAT_PRECISION vec2 OutputSize; uniform COMPAT_PRECISION vec2 TextureSize; uniform COMPAT_PRECISION vec2 InputSize; +uniform COMPAT_PRECISION vec2 GameBoyDotMatrixAlphaBlendTextureSize; +uniform COMPAT_PRECISION vec2 GameBoyDotMatrixAlphaBlendInputSize; uniform sampler2D Texture; uniform sampler2D BACKGROUND; uniform sampler2D COLOR_PALETTE; -uniform sampler2D Pass2Texture; +uniform sampler2D GameBoyDotMatrixAlphaBlendTexture; COMPAT_VARYING vec4 TEX0; COMPAT_VARYING vec2 texel; @@ -186,12 +188,12 @@ uniform COMPAT_PRECISION float screen_offset_y; void main() { -// vec2 tex = floor(outsize.xy * vTexCoord); -// tex = (tex + 0.5) * outsize.zw; - vec2 tex = vTexCoord.xy; + vec2 active_coord = vTexCoord * TextureSize.xy / InputSize.xy; + vec2 tex = floor(GameBoyDotMatrixAlphaBlendInputSize * active_coord); + tex = (tex + 0.5) / GameBoyDotMatrixAlphaBlendTextureSize; // Sample all the relevant textures - vec4 foreground = COMPAT_TEXTURE(Pass2Texture, tex - screen_offset); + vec4 foreground = COMPAT_TEXTURE(GameBoyDotMatrixAlphaBlendTexture, tex - screen_offset); vec4 background = COMPAT_TEXTURE(BACKGROUND, vTexCoord); vec4 shadows = COMPAT_TEXTURE(Source, vTexCoord - (shadow_offset + screen_offset)); vec4 background_color = bg_color; diff --git a/handheld/shaders/lcd-cgwg/lcd-grid-v2.glsl b/handheld/shaders/lcd-cgwg/lcd-grid-v2.glsl index 1833e38..b4f41b3 100644 --- a/handheld/shaders/lcd-cgwg/lcd-grid-v2.glsl +++ b/handheld/shaders/lcd-cgwg/lcd-grid-v2.glsl @@ -84,6 +84,7 @@ uniform COMPAT_PRECISION int FrameCount; uniform COMPAT_PRECISION vec2 OutputSize; uniform COMPAT_PRECISION vec2 TextureSize; uniform COMPAT_PRECISION vec2 InputSize; +uniform COMPAT_PRECISION vec2 OrigInputSize; uniform sampler2D Texture; COMPAT_VARYING vec4 TEX0; @@ -129,7 +130,8 @@ uniform COMPAT_PRECISION float BGR; #define BGR 0 #endif -#define fetch_offset(coord, offset) (pow(vec3(gain) * texelFetchOffset(Source, (coord), 0, (offset)).rgb + vec3(blacklevel), vec3(gamma)) + vec3(ambient)) +#define OriginalTexelSize (InputSize.xy / (TextureSize.xy * OrigInputSize.xy)) +#define fetch_offset(coord, offset) (pow(vec3(gain) * COMPAT_TEXTURE(Source, (vec2((coord) + (offset)) + 0.5) * OriginalTexelSize).rgb + vec3(blacklevel), vec3(gamma)) + vec3(ambient)) // integral of (1 - x^2 - x^4 + x^6)^2 float coeffs_x[7] = float[](1.0, -2.0/3.0, -1.0/5.0, 4.0/7.0, -1.0/9.0, -2.0/11.0, 1.0/13.0); @@ -157,7 +159,7 @@ float intsmear(float x, float dx, float d, float coeffs[7]) void main() { - vec2 texelSize = SourceSize.zw; + vec2 texelSize = OriginalTexelSize; /* float2 range = IN.video_size / (IN.output_size * IN.texture_size); */ vec2 range = InputSize.xy / (OutputSize.xy * TextureSize.xy);//outsize.zw; diff --git a/handheld/shaders/lcd-cgwg/lcd-grid.glsl b/handheld/shaders/lcd-cgwg/lcd-grid.glsl index b27ae95..e01d8cd 100644 --- a/handheld/shaders/lcd-cgwg/lcd-grid.glsl +++ b/handheld/shaders/lcd-cgwg/lcd-grid.glsl @@ -68,6 +68,7 @@ uniform COMPAT_PRECISION int FrameCount; uniform COMPAT_PRECISION vec2 OutputSize; uniform COMPAT_PRECISION vec2 TextureSize; uniform COMPAT_PRECISION vec2 InputSize; +uniform COMPAT_PRECISION vec2 OrigInputSize; uniform sampler2D Texture; COMPAT_VARYING vec4 TEX0; @@ -106,10 +107,11 @@ float intsmear(float x, float dx) #define round(x) floor( (x) + 0.5 ) #define TEX2D(c) pow(COMPAT_TEXTURE(Source, (c)), vec4(gamma)) +#define OriginalTexelSize (InputSize.xy / (TextureSize.xy * OrigInputSize.xy)) void main() { - vec2 texelSize = 1.0 / TextureSize.xy; + vec2 texelSize = OriginalTexelSize; vec2 subtexelSize = texelSize / vec2(3.0,1.0); vec2 range; range = InputSize.xy / (OutputSize.xy * TextureSize.xy); diff --git a/handheld/shaders/lcd-shader/lcd-pass-0.glsl b/handheld/shaders/lcd-shader/lcd-pass-0.glsl index 8f48596..ecafd89 100644 --- a/handheld/shaders/lcd-shader/lcd-pass-0.glsl +++ b/handheld/shaders/lcd-shader/lcd-pass-0.glsl @@ -70,6 +70,7 @@ uniform COMPAT_PRECISION int FrameCount; uniform COMPAT_PRECISION vec2 OutputSize; uniform COMPAT_PRECISION vec2 TextureSize; uniform COMPAT_PRECISION vec2 InputSize; +uniform COMPAT_PRECISION vec2 OrigInputSize; void main() { vec2 _oTexCoord; @@ -79,15 +80,28 @@ void main() _r0011 = _r0011 + VertexCoord.y*MVPMatrix[1]; _r0011 = _r0011 + VertexCoord.z*MVPMatrix[2]; _r0011 = _r0011 + VertexCoord.w*MVPMatrix[3]; - _x0013 = OutputSize.y/InputSize.y; - _TMP2 = floor(_x0013); - _TMP7 = OutputSize/(InputSize*_TMP2); + if (any(notEqual(InputSize, OrigInputSize))) + { + _x0013 = OutputSize.y/OrigInputSize.y; + _TMP2 = floor(_x0013); + _TMP7 = OutputSize/(OrigInputSize*_TMP2); + _x0015 = OutputSize.y/OrigInputSize.y; + _TMP3 = floor(_x0015); + _TMP6._cell_height = float((InputSize.y/(TextureSize.y*OrigInputSize.y))); + _TMP6._texel_height = float((_TMP6._cell_height/_TMP3)); + } + else + { + _x0013 = OutputSize.y/InputSize.y; + _TMP2 = floor(_x0013); + _TMP7 = OutputSize/(InputSize*_TMP2); + _x0015 = OutputSize.y/InputSize.y; + _TMP3 = floor(_x0015); + _TMP6._cell_height = float((1.00000000E+00/TextureSize.y)); + _TMP6._texel_height = float((1.00000000E+00/(TextureSize.y*_TMP3))); + } _oPosition1 = _r0011/vec4(_TMP7.x, _TMP7.y, 1.00000000E+00, 1.00000000E+00); _oTexCoord = TexCoord.xy + 5.00000000E-01/OutputSize; - _x0015 = OutputSize.y/InputSize.y; - _TMP3 = floor(_x0015); - _TMP6._cell_height = float((1.00000000E+00/TextureSize.y)); - _TMP6._texel_height = float((1.00000000E+00/(TextureSize.y*_TMP3))); _oLineData1._cell_height = _TMP6._cell_height; _oLineData1._texel_height = _TMP6._texel_height; gl_Position = _oPosition1; @@ -187,11 +201,32 @@ uniform sampler2D Prev3Texture; uniform sampler2D Prev2Texture; uniform sampler2D Prev1Texture; uniform sampler2D PrevTexture; +uniform COMPAT_PRECISION vec2 Prev6InputSize; +uniform COMPAT_PRECISION vec2 Prev5InputSize; +uniform COMPAT_PRECISION vec2 Prev4InputSize; +uniform COMPAT_PRECISION vec2 Prev3InputSize; +uniform COMPAT_PRECISION vec2 Prev2InputSize; +uniform COMPAT_PRECISION vec2 Prev1InputSize; +uniform COMPAT_PRECISION vec2 PrevInputSize; +uniform COMPAT_PRECISION vec2 Prev6TextureSize; +uniform COMPAT_PRECISION vec2 Prev5TextureSize; +uniform COMPAT_PRECISION vec2 Prev4TextureSize; +uniform COMPAT_PRECISION vec2 Prev3TextureSize; +uniform COMPAT_PRECISION vec2 Prev2TextureSize; +uniform COMPAT_PRECISION vec2 Prev1TextureSize; +uniform COMPAT_PRECISION vec2 PrevTextureSize; uniform COMPAT_PRECISION int FrameDirection; uniform COMPAT_PRECISION int FrameCount; uniform COMPAT_PRECISION vec2 OutputSize; uniform COMPAT_PRECISION vec2 TextureSize; uniform COMPAT_PRECISION vec2 InputSize; +uniform COMPAT_PRECISION vec2 OrigInputSize; +vec2 get_history_coord(vec2 history_input_size, vec2 history_texture_size) +{ + if (all(equal(InputSize, OrigInputSize))) + return TEX0.xy; + return TEX0.xy*TextureSize.xy/InputSize.xy*history_input_size/history_texture_size; +} void main() { vec3 _input_dummy_rgb; @@ -200,19 +235,19 @@ void main() vec3 _TMP28; _TMP0 = COMPAT_TEXTURE(Texture, TEX0.xy); _input_dummy_rgb = vec3(float(_TMP0.x), float(_TMP0.y), float(_TMP0.z)); - _TMP1 = COMPAT_TEXTURE(PrevTexture, TEX0.xy); + _TMP1 = COMPAT_TEXTURE(PrevTexture, get_history_coord(PrevInputSize.xy, PrevTextureSize.xy)); _input_dummy_rgb = vec3(float((vec3(float(_input_dummy_rgb.x), float(_input_dummy_rgb.y), float(_input_dummy_rgb.z)) + (_TMP1.xyz - vec3(float(_input_dummy_rgb.x), float(_input_dummy_rgb.y), float(_input_dummy_rgb.z)))*3.33000004E-01).x), float((vec3(float(_input_dummy_rgb.x), float(_input_dummy_rgb.y), float(_input_dummy_rgb.z)) + (_TMP1.xyz - vec3(float(_input_dummy_rgb.x), float(_input_dummy_rgb.y), float(_input_dummy_rgb.z)))*3.33000004E-01).y), float((vec3(float(_input_dummy_rgb.x), float(_input_dummy_rgb.y), float(_input_dummy_rgb.z)) + (_TMP1.xyz - vec3(float(_input_dummy_rgb.x), float(_input_dummy_rgb.y), float(_input_dummy_rgb.z)))*3.33000004E-01).z)); - _TMP2 = COMPAT_TEXTURE(Prev1Texture, TEX0.xy); + _TMP2 = COMPAT_TEXTURE(Prev1Texture, get_history_coord(Prev1InputSize.xy, Prev1TextureSize.xy)); _input_dummy_rgb = vec3(float((vec3(float(_input_dummy_rgb.x), float(_input_dummy_rgb.y), float(_input_dummy_rgb.z)) + (_TMP2.xyz - vec3(float(_input_dummy_rgb.x), float(_input_dummy_rgb.y), float(_input_dummy_rgb.z)))*1.10889003E-01).x), float((vec3(float(_input_dummy_rgb.x), float(_input_dummy_rgb.y), float(_input_dummy_rgb.z)) + (_TMP2.xyz - vec3(float(_input_dummy_rgb.x), float(_input_dummy_rgb.y), float(_input_dummy_rgb.z)))*1.10889003E-01).y), float((vec3(float(_input_dummy_rgb.x), float(_input_dummy_rgb.y), float(_input_dummy_rgb.z)) + (_TMP2.xyz - vec3(float(_input_dummy_rgb.x), float(_input_dummy_rgb.y), float(_input_dummy_rgb.z)))*1.10889003E-01).z)); - _TMP4 = COMPAT_TEXTURE(Prev2Texture, TEX0.xy); + _TMP4 = COMPAT_TEXTURE(Prev2Texture, get_history_coord(Prev2InputSize.xy, Prev2TextureSize.xy)); _input_dummy_rgb = vec3(float((vec3(float(_input_dummy_rgb.x), float(_input_dummy_rgb.y), float(_input_dummy_rgb.z)) + (_TMP4.xyz - vec3(float(_input_dummy_rgb.x), float(_input_dummy_rgb.y), float(_input_dummy_rgb.z)))*3.69260386E-02).x), float((vec3(float(_input_dummy_rgb.x), float(_input_dummy_rgb.y), float(_input_dummy_rgb.z)) + (_TMP4.xyz - vec3(float(_input_dummy_rgb.x), float(_input_dummy_rgb.y), float(_input_dummy_rgb.z)))*3.69260386E-02).y), float((vec3(float(_input_dummy_rgb.x), float(_input_dummy_rgb.y), float(_input_dummy_rgb.z)) + (_TMP4.xyz - vec3(float(_input_dummy_rgb.x), float(_input_dummy_rgb.y), float(_input_dummy_rgb.z)))*3.69260386E-02).z)); - _TMP6 = COMPAT_TEXTURE(Prev3Texture, TEX0.xy); + _TMP6 = COMPAT_TEXTURE(Prev3Texture, get_history_coord(Prev3InputSize.xy, Prev3TextureSize.xy)); _input_dummy_rgb = vec3(float((vec3(float(_input_dummy_rgb.x), float(_input_dummy_rgb.y), float(_input_dummy_rgb.z)) + (_TMP6.xyz - vec3(float(_input_dummy_rgb.x), float(_input_dummy_rgb.y), float(_input_dummy_rgb.z)))*1.22963712E-02).x), float((vec3(float(_input_dummy_rgb.x), float(_input_dummy_rgb.y), float(_input_dummy_rgb.z)) + (_TMP6.xyz - vec3(float(_input_dummy_rgb.x), float(_input_dummy_rgb.y), float(_input_dummy_rgb.z)))*1.22963712E-02).y), float((vec3(float(_input_dummy_rgb.x), float(_input_dummy_rgb.y), float(_input_dummy_rgb.z)) + (_TMP6.xyz - vec3(float(_input_dummy_rgb.x), float(_input_dummy_rgb.y), float(_input_dummy_rgb.z)))*1.22963712E-02).z)); - _TMP8 = COMPAT_TEXTURE(Prev4Texture, TEX0.xy); + _TMP8 = COMPAT_TEXTURE(Prev4Texture, get_history_coord(Prev4InputSize.xy, Prev4TextureSize.xy)); _input_dummy_rgb = vec3(float((vec3(float(_input_dummy_rgb.x), float(_input_dummy_rgb.y), float(_input_dummy_rgb.z)) + (_TMP8.xyz - vec3(float(_input_dummy_rgb.x), float(_input_dummy_rgb.y), float(_input_dummy_rgb.z)))*4.09469148E-03).x), float((vec3(float(_input_dummy_rgb.x), float(_input_dummy_rgb.y), float(_input_dummy_rgb.z)) + (_TMP8.xyz - vec3(float(_input_dummy_rgb.x), float(_input_dummy_rgb.y), float(_input_dummy_rgb.z)))*4.09469148E-03).y), float((vec3(float(_input_dummy_rgb.x), float(_input_dummy_rgb.y), float(_input_dummy_rgb.z)) + (_TMP8.xyz - vec3(float(_input_dummy_rgb.x), float(_input_dummy_rgb.y), float(_input_dummy_rgb.z)))*4.09469148E-03).z)); - _TMP10 = COMPAT_TEXTURE(Prev5Texture, TEX0.xy); + _TMP10 = COMPAT_TEXTURE(Prev5Texture, get_history_coord(Prev5InputSize.xy, Prev5TextureSize.xy)); _input_dummy_rgb = vec3(float((vec3(float(_input_dummy_rgb.x), float(_input_dummy_rgb.y), float(_input_dummy_rgb.z)) + (_TMP10.xyz - vec3(float(_input_dummy_rgb.x), float(_input_dummy_rgb.y), float(_input_dummy_rgb.z)))*1.36353227E-03).x), float((vec3(float(_input_dummy_rgb.x), float(_input_dummy_rgb.y), float(_input_dummy_rgb.z)) + (_TMP10.xyz - vec3(float(_input_dummy_rgb.x), float(_input_dummy_rgb.y), float(_input_dummy_rgb.z)))*1.36353227E-03).y), float((vec3(float(_input_dummy_rgb.x), float(_input_dummy_rgb.y), float(_input_dummy_rgb.z)) + (_TMP10.xyz - vec3(float(_input_dummy_rgb.x), float(_input_dummy_rgb.y), float(_input_dummy_rgb.z)))*1.36353227E-03).z)); - _TMP12 = COMPAT_TEXTURE(Prev6Texture, TEX0.xy); + _TMP12 = COMPAT_TEXTURE(Prev6Texture, get_history_coord(Prev6InputSize.xy, Prev6TextureSize.xy)); _input_dummy_rgb = vec3(float((vec3(float(_input_dummy_rgb.x), float(_input_dummy_rgb.y), float(_input_dummy_rgb.z)) + (_TMP12.xyz - vec3(float(_input_dummy_rgb.x), float(_input_dummy_rgb.y), float(_input_dummy_rgb.z)))*4.54056280E-04).x), float((vec3(float(_input_dummy_rgb.x), float(_input_dummy_rgb.y), float(_input_dummy_rgb.z)) + (_TMP12.xyz - vec3(float(_input_dummy_rgb.x), float(_input_dummy_rgb.y), float(_input_dummy_rgb.z)))*4.54056280E-04).y), float((vec3(float(_input_dummy_rgb.x), float(_input_dummy_rgb.y), float(_input_dummy_rgb.z)) + (_TMP12.xyz - vec3(float(_input_dummy_rgb.x), float(_input_dummy_rgb.y), float(_input_dummy_rgb.z)))*4.54056280E-04).z)); _out_color = vec4(_input_dummy_rgb.x, _input_dummy_rgb.y, _input_dummy_rgb.z, 1.00000000E+00); _b0047 = float(TEX1.x); diff --git a/handheld/shaders/lcd-shader/lcd-pass-2.glsl b/handheld/shaders/lcd-shader/lcd-pass-2.glsl index cde6376..fc742da 100644 --- a/handheld/shaders/lcd-shader/lcd-pass-2.glsl +++ b/handheld/shaders/lcd-shader/lcd-pass-2.glsl @@ -100,7 +100,7 @@ vec3 _TMP27; COMPAT_VARYING vec4 TEX0; uniform sampler2D Texture; -uniform sampler2D Pass1Texture; +uniform sampler2D PassPrev2Texture; uniform COMPAT_PRECISION int FrameDirection; uniform COMPAT_PRECISION int FrameCount; uniform COMPAT_PRECISION vec2 OutputSize; @@ -115,7 +115,7 @@ void main() vec3 _TMP12; _TMP0 = COMPAT_TEXTURE(Texture, TEX0.xy); _lcd_color = vec4(float(_TMP0.x), float(_TMP0.y), float(_TMP0.z), float(_TMP0.w)); - _TMP1 = COMPAT_TEXTURE(Pass1Texture, TEX0.xy); + _TMP1 = COMPAT_TEXTURE(PassPrev2Texture, TEX0.xy); _input_dummy_color = vec4(float(_TMP1.x), float(_TMP1.y), float(_TMP1.z), float(_TMP1.w)); _TMP2 = COMPAT_TEXTURE(BACKGROUND, TEX0.xy); _bg_color = vec4(float(_TMP2.x), float(_TMP2.y), float(_TMP2.z), float(_TMP2.w)); diff --git a/handheld/shaders/lcd-shader/lcd-pass-3.glsl b/handheld/shaders/lcd-shader/lcd-pass-3.glsl index 30793cf..2c42c53 100644 --- a/handheld/shaders/lcd-shader/lcd-pass-3.glsl +++ b/handheld/shaders/lcd-shader/lcd-pass-3.glsl @@ -156,7 +156,7 @@ COMPAT_VARYING vec4 TEX3; COMPAT_VARYING vec4 TEX4; uniform sampler2D Texture; -uniform sampler2D Pass1Texture; +uniform sampler2D PassPrev3Texture; uniform COMPAT_PRECISION int FrameDirection; uniform COMPAT_PRECISION int FrameCount; uniform COMPAT_PRECISION vec2 OutputSize; @@ -188,10 +188,10 @@ void main() _TMP5 = COMPAT_TEXTURE(Texture, _c0035); _adjacent_texel_20019 = vec4(float(_TMP5.x), float(_TMP5.y), float(_TMP5.z), float(_TMP5.w)); _c0037 = vec2(float(_TMP20.x), float(_TMP20.y)); - _TMP6 = COMPAT_TEXTURE(Pass1Texture, _c0037); + _TMP6 = COMPAT_TEXTURE(PassPrev3Texture, _c0037); _adjacent_texel_30019 = vec4(float(_TMP6.x), float(_TMP6.y), float(_TMP6.z), float(_TMP6.w)); _c0039 = vec2(float(_TMP26.x), float(_TMP26.y)); - _TMP7 = COMPAT_TEXTURE(Pass1Texture, _c0039); + _TMP7 = COMPAT_TEXTURE(PassPrev3Texture, _c0039); _adjacent_texel_40019 = vec4(float(_TMP7.x), float(_TMP7.y), float(_TMP7.z), float(_TMP7.w)); _LCD_color0019 = ((_out_color.xyz - _adjacent_texel_10019.xyz) + (_out_color.xyz - _adjacent_texel_20019.xyz))*2.00195312E-01; _original_color0019 = ((_out_color.xyz - _adjacent_texel_30019.xyz) + (_out_color.xyz - _adjacent_texel_40019.xyz))*2.00195312E-01; diff --git a/handheld/shaders/mgba/agb001.glsl b/handheld/shaders/mgba/agb001.glsl index ee50db9..53044a0 100644 --- a/handheld/shaders/mgba/agb001.glsl +++ b/handheld/shaders/mgba/agb001.glsl @@ -79,6 +79,7 @@ uniform COMPAT_PRECISION int FrameCount; uniform COMPAT_PRECISION vec2 OutputSize; uniform COMPAT_PRECISION vec2 TextureSize; uniform COMPAT_PRECISION vec2 InputSize; +uniform COMPAT_PRECISION vec2 OrigInputSize; uniform sampler2D Texture; COMPAT_VARYING vec4 TEX0; @@ -92,6 +93,7 @@ COMPAT_VARYING vec4 TEX0; void main() { vec4 color = COMPAT_TEXTURE(Source, vTexCoord); + vec2 original_coord = vTexCoord * TextureSize.xy / InputSize.xy * OrigInputSize.xy; vec3 arrayX[4]; arrayX[0] = vec3(1.0, 0.2, 0.2); arrayX[1] = vec3(0.2, 1.0, 0.2); @@ -104,7 +106,7 @@ void main() arrayY[3] = vec3(0.8, 0.8, 0.8); color.rgb = pow(color.rgb * vec3(0.8, 0.8, 0.8), vec3(1.8, 1.8, 1.8)) + vec3(0.16, 0.16, 0.16); - int colorX = int(mod(vTexCoord.s * SourceSize.x * 4.0, 4.0)); + int colorX = int(mod(original_coord.x * 4.0, 4.0)); if (colorX == 0) { color.rgb *= arrayX[0]; } else if (colorX == 1) { @@ -115,7 +117,7 @@ void main() color.rgb *= arrayX[3]; } - int colorY = int(mod(vTexCoord.t * SourceSize.y * 4.0, 4.0)); + int colorY = int(mod(original_coord.y * 4.0, 4.0)); if (colorY == 0) { color.rgb *= arrayY[0]; } else if (colorY == 1) { diff --git a/handheld/shaders/mgba/ags001.glsl b/handheld/shaders/mgba/ags001.glsl index efcd926..03274cf 100644 --- a/handheld/shaders/mgba/ags001.glsl +++ b/handheld/shaders/mgba/ags001.glsl @@ -79,6 +79,7 @@ uniform COMPAT_PRECISION int FrameCount; uniform COMPAT_PRECISION vec2 OutputSize; uniform COMPAT_PRECISION vec2 TextureSize; uniform COMPAT_PRECISION vec2 InputSize; +uniform COMPAT_PRECISION vec2 OrigInputSize; uniform sampler2D Texture; COMPAT_VARYING vec4 TEX0; @@ -92,6 +93,7 @@ COMPAT_VARYING vec4 TEX0; void main() { vec4 color = COMPAT_TEXTURE(Source, vTexCoord); + vec2 original_coord = vTexCoord * TextureSize.xy / InputSize.xy * OrigInputSize.xy; vec3 arrayX[4]; arrayX[0] = vec3(1.0, 0.2, 0.2); arrayX[1] = vec3(0.2, 1.0, 0.2); @@ -103,8 +105,8 @@ void main() arrayY[2] = vec3(1.0, 1.0, 1.0); arrayY[3] = vec3(0.9, 0.9, 0.9); color.rgb = pow(color.rgb, vec3(1.6, 1.6, 1.6)); - color.rgb *= arrayX[int(mod(vTexCoord.s * SourceSize.x * 4.0, 4.0))]; - color.rgb *= arrayY[int(mod(vTexCoord.t * SourceSize.y * 4.0, 4.0))]; + color.rgb *= arrayX[int(mod(original_coord.x * 4.0, 4.0))]; + color.rgb *= arrayY[int(mod(original_coord.y * 4.0, 4.0))]; color.a = 0.8; FragColor = color; } diff --git a/handheld/shaders/retro-v2.glsl b/handheld/shaders/retro-v2.glsl index c422fb9..9922b32 100644 --- a/handheld/shaders/retro-v2.glsl +++ b/handheld/shaders/retro-v2.glsl @@ -93,6 +93,7 @@ uniform COMPAT_PRECISION int FrameCount; uniform COMPAT_PRECISION vec2 OutputSize; uniform COMPAT_PRECISION vec2 TextureSize; uniform COMPAT_PRECISION vec2 InputSize; +uniform COMPAT_PRECISION vec2 OrigInputSize; uniform sampler2D Texture; COMPAT_VARYING vec4 TEX0; @@ -114,8 +115,13 @@ void main() // Reading the texel vec3 E = pow(COMPAT_TEXTURE(Source, vTexCoord).xyz, vec3(2.4)); - vec2 fp = fract(vTexCoord*SourceSize.xy); + vec2 fp = fract(vTexCoord * SourceSize.xy); vec2 ps = InputSize.xy * outsize.zw; + if (any(notEqual(InputSize, OrigInputSize))) + { + fp = fract(vTexCoord * TextureSize.xy / InputSize.xy * OrigInputSize.xy); + ps = OrigInputSize.xy * outsize.zw; + } vec2 f = clamp(clamp(fp + 0.5*ps, 0.0, 1.0) - RETRO_PIXEL_SIZE, vec2(0.0), ps)/ps; diff --git a/handheld/shaders/sameboy-lcd.glsl b/handheld/shaders/sameboy-lcd.glsl index bdd3e57..fe2ba56 100644 --- a/handheld/shaders/sameboy-lcd.glsl +++ b/handheld/shaders/sameboy-lcd.glsl @@ -98,6 +98,7 @@ uniform COMPAT_PRECISION int FrameCount; uniform COMPAT_PRECISION vec2 OutputSize; uniform COMPAT_PRECISION vec2 TextureSize; uniform COMPAT_PRECISION vec2 InputSize; +uniform COMPAT_PRECISION vec2 OrigInputSize; uniform sampler2D Texture; COMPAT_VARYING vec4 TEX0; @@ -120,25 +121,27 @@ uniform COMPAT_PRECISION float SCANLINE_DEPTH; void main() { - vec2 pos = fract(vTexCoord * SourceSize.xy); - vec2 sub_pos = fract(vTexCoord * SourceSize.xy * 6.0); + vec2 original_texel = InputSize.xy / (TextureSize.xy * OrigInputSize.xy); + vec2 original_coord = vTexCoord / original_texel; + vec2 pos = fract(original_coord); + vec2 sub_pos = fract(original_coord * 6.0); vec4 center = COMPAT_TEXTURE(Source, vTexCoord); - vec4 left = COMPAT_TEXTURE(Source, vTexCoord - vec2(1.0 / SourceSize.x, 0.0)); - vec4 right = COMPAT_TEXTURE(Source, vTexCoord + vec2(1.0 / SourceSize.x, 0.0)); + vec4 left = COMPAT_TEXTURE(Source, vTexCoord - vec2(original_texel.x, 0.0)); + vec4 right = COMPAT_TEXTURE(Source, vTexCoord + vec2(original_texel.x, 0.0)); if (pos.y < 1.0 / 6.0) { - center = mix(center, COMPAT_TEXTURE(Source, vTexCoord + vec2(0.0, -1.0 / SourceSize.y)), 0.5 - sub_pos.y / 2.0); - left = mix(left, COMPAT_TEXTURE(Source, vTexCoord + vec2(-1.0 / SourceSize.x, -1.0 / SourceSize.y)), 0.5 - sub_pos.y / 2.0); - right = mix(right, COMPAT_TEXTURE(Source, vTexCoord + vec2( 1.0 / SourceSize.x, -1.0 / SourceSize.y)), 0.5 - sub_pos.y / 2.0); + center = mix(center, COMPAT_TEXTURE(Source, vTexCoord + vec2(0.0, -original_texel.y)), 0.5 - sub_pos.y / 2.0); + left = mix(left, COMPAT_TEXTURE(Source, vTexCoord + vec2(-original_texel.x, -original_texel.y)), 0.5 - sub_pos.y / 2.0); + right = mix(right, COMPAT_TEXTURE(Source, vTexCoord + vec2( original_texel.x, -original_texel.y)), 0.5 - sub_pos.y / 2.0); center *= sub_pos.y * SCANLINE_DEPTH + (1.0 - SCANLINE_DEPTH); left *= sub_pos.y * SCANLINE_DEPTH + (1.0 - SCANLINE_DEPTH); right *= sub_pos.y * SCANLINE_DEPTH + (1.0 - SCANLINE_DEPTH); } else if (pos.y > 5.0 / 6.0) { - center = mix(center, COMPAT_TEXTURE(Source, vTexCoord + vec2(0, 1.0 / SourceSize.y)), sub_pos.y / 2.0); - left = mix(left, COMPAT_TEXTURE(Source, vTexCoord + vec2(-1.0 / SourceSize.x, 1.0 / SourceSize.y)), sub_pos.y / 2.0); - right = mix(right, COMPAT_TEXTURE(Source, vTexCoord + vec2( 1.0 / SourceSize.x, 1.0 / SourceSize.y)), sub_pos.y / 2.0); + center = mix(center, COMPAT_TEXTURE(Source, vTexCoord + vec2(0.0, original_texel.y)), sub_pos.y / 2.0); + left = mix(left, COMPAT_TEXTURE(Source, vTexCoord + vec2(-original_texel.x, original_texel.y)), sub_pos.y / 2.0); + right = mix(right, COMPAT_TEXTURE(Source, vTexCoord + vec2( original_texel.x, original_texel.y)), sub_pos.y / 2.0); center *= (1.0 - sub_pos.y) * SCANLINE_DEPTH + (1.0 - SCANLINE_DEPTH); left *= (1.0 - sub_pos.y) * SCANLINE_DEPTH + (1.0 - SCANLINE_DEPTH); right *= (1.0 - sub_pos.y) * SCANLINE_DEPTH + (1.0 - SCANLINE_DEPTH); diff --git a/handheld/shaders/sameboy-palettes/response-time.glsl b/handheld/shaders/sameboy-palettes/response-time.glsl index aaa9df7..7e3ea7e 100644 --- a/handheld/shaders/sameboy-palettes/response-time.glsl +++ b/handheld/shaders/sameboy-palettes/response-time.glsl @@ -83,6 +83,21 @@ uniform COMPAT_PRECISION int FrameCount; uniform COMPAT_PRECISION vec2 OutputSize; uniform COMPAT_PRECISION vec2 TextureSize; uniform COMPAT_PRECISION vec2 InputSize; +uniform COMPAT_PRECISION vec2 OrigInputSize; +uniform COMPAT_PRECISION vec2 PrevInputSize; +uniform COMPAT_PRECISION vec2 Prev1InputSize; +uniform COMPAT_PRECISION vec2 Prev2InputSize; +uniform COMPAT_PRECISION vec2 Prev3InputSize; +uniform COMPAT_PRECISION vec2 Prev4InputSize; +uniform COMPAT_PRECISION vec2 Prev5InputSize; +uniform COMPAT_PRECISION vec2 Prev6InputSize; +uniform COMPAT_PRECISION vec2 PrevTextureSize; +uniform COMPAT_PRECISION vec2 Prev1TextureSize; +uniform COMPAT_PRECISION vec2 Prev2TextureSize; +uniform COMPAT_PRECISION vec2 Prev3TextureSize; +uniform COMPAT_PRECISION vec2 Prev4TextureSize; +uniform COMPAT_PRECISION vec2 Prev5TextureSize; +uniform COMPAT_PRECISION vec2 Prev6TextureSize; uniform sampler2D Texture; uniform sampler2D PrevTexture; uniform sampler2D Prev1Texture; @@ -108,14 +123,16 @@ uniform COMPAT_PRECISION float response_time; #endif // Frame sampling definitions +#define active_coord (vTexCoord * TextureSize.xy / InputSize.xy) +#define history_coord(input_size, texture_size) (all(equal(InputSize, OrigInputSize)) ? vTexCoord : active_coord * input_size / texture_size) #define curr_rgb COMPAT_TEXTURE(Source, vTexCoord).rgb -#define prev0_rgb COMPAT_TEXTURE(PrevTexture, vTexCoord).rgb -#define prev1_rgb COMPAT_TEXTURE(Prev1Texture, vTexCoord).rgb -#define prev2_rgb COMPAT_TEXTURE(Prev2Texture, vTexCoord).rgb -#define prev3_rgb COMPAT_TEXTURE(Prev3Texture, vTexCoord).rgb -#define prev4_rgb COMPAT_TEXTURE(Prev4Texture, vTexCoord).rgb -#define prev5_rgb COMPAT_TEXTURE(Prev5Texture, vTexCoord).rgb -#define prev6_rgb COMPAT_TEXTURE(Prev6Texture, vTexCoord).rgb +#define prev0_rgb COMPAT_TEXTURE(PrevTexture, history_coord(PrevInputSize.xy, PrevTextureSize.xy)).rgb +#define prev1_rgb COMPAT_TEXTURE(Prev1Texture, history_coord(Prev1InputSize.xy, Prev1TextureSize.xy)).rgb +#define prev2_rgb COMPAT_TEXTURE(Prev2Texture, history_coord(Prev2InputSize.xy, Prev2TextureSize.xy)).rgb +#define prev3_rgb COMPAT_TEXTURE(Prev3Texture, history_coord(Prev3InputSize.xy, Prev3TextureSize.xy)).rgb +#define prev4_rgb COMPAT_TEXTURE(Prev4Texture, history_coord(Prev4InputSize.xy, Prev4TextureSize.xy)).rgb +#define prev5_rgb COMPAT_TEXTURE(Prev5Texture, history_coord(Prev5InputSize.xy, Prev5TextureSize.xy)).rgb +#define prev6_rgb COMPAT_TEXTURE(Prev6Texture, history_coord(Prev6InputSize.xy, Prev6TextureSize.xy)).rgb // Fragment Shader diff --git a/handheld/shaders/simpletex_lcd/simpletex_lcd+gba-color-4k.glsl b/handheld/shaders/simpletex_lcd/simpletex_lcd+gba-color-4k.glsl index 7fbe784..a539450 100644 --- a/handheld/shaders/simpletex_lcd/simpletex_lcd+gba-color-4k.glsl +++ b/handheld/shaders/simpletex_lcd/simpletex_lcd+gba-color-4k.glsl @@ -145,6 +145,7 @@ uniform COMPAT_PRECISION int FrameCount; uniform COMPAT_PRECISION vec2 OutputSize; uniform COMPAT_PRECISION vec2 TextureSize; uniform COMPAT_PRECISION vec2 InputSize; +uniform COMPAT_PRECISION vec2 OrigInputSize; uniform sampler2D Texture; uniform sampler2D BACKGROUND; COMPAT_VARYING COMPAT_PRECISION vec4 TEX0; @@ -205,11 +206,13 @@ const COMPAT_PRECISION float INV_DISPLAY_GAMMA = 1.0 / 2.2; void main() { // Get current texture coordinate - COMPAT_PRECISION vec2 imgPixelCoord = TEX0.xy * TextureSize.xy; + COMPAT_PRECISION vec2 imgPixelCoord = TEX0.xy * TextureSize.xy / InputSize.xy * OrigInputSize.xy; COMPAT_PRECISION vec2 imgCenterCoord = floor(imgPixelCoord.xy) + vec2(0.5, 0.5); + COMPAT_PRECISION vec2 sourcePixelCoord = TEX0.xy * TextureSize.xy; + COMPAT_PRECISION vec2 sourceCenterCoord = floor(sourcePixelCoord.xy) + vec2(0.5, 0.5); // Get colour of current pixel - COMPAT_PRECISION vec3 colour = COMPAT_TEXTURE(Texture, InvTextureSize.xy * imgCenterCoord.xy).rgb; + COMPAT_PRECISION vec3 colour = COMPAT_TEXTURE(Texture, InvTextureSize.xy * sourceCenterCoord.xy).rgb; // Darken colours (if required...) and apply colour correction colour.rgb = pow(colour.rgb, vec3(TARGET_GAMMA + 1.0 + DARKEN_COLOUR)); diff --git a/handheld/shaders/simpletex_lcd/simpletex_lcd+gba-color.glsl b/handheld/shaders/simpletex_lcd/simpletex_lcd+gba-color.glsl index b863c56..faa7ee7 100644 --- a/handheld/shaders/simpletex_lcd/simpletex_lcd+gba-color.glsl +++ b/handheld/shaders/simpletex_lcd/simpletex_lcd+gba-color.glsl @@ -145,6 +145,7 @@ uniform COMPAT_PRECISION int FrameCount; uniform COMPAT_PRECISION vec2 OutputSize; uniform COMPAT_PRECISION vec2 TextureSize; uniform COMPAT_PRECISION vec2 InputSize; +uniform COMPAT_PRECISION vec2 OrigInputSize; uniform sampler2D Texture; uniform sampler2D BACKGROUND; COMPAT_VARYING COMPAT_PRECISION vec4 TEX0; @@ -205,11 +206,13 @@ const COMPAT_PRECISION float INV_DISPLAY_GAMMA = 1.0 / 2.2; void main() { // Get current texture coordinate - COMPAT_PRECISION vec2 imgPixelCoord = TEX0.xy * TextureSize.xy; + COMPAT_PRECISION vec2 imgPixelCoord = TEX0.xy * TextureSize.xy / InputSize.xy * OrigInputSize.xy; COMPAT_PRECISION vec2 imgCenterCoord = floor(imgPixelCoord.xy) + vec2(0.5, 0.5); + COMPAT_PRECISION vec2 sourcePixelCoord = TEX0.xy * TextureSize.xy; + COMPAT_PRECISION vec2 sourceCenterCoord = floor(sourcePixelCoord.xy) + vec2(0.5, 0.5); // Get colour of current pixel - COMPAT_PRECISION vec3 colour = COMPAT_TEXTURE(Texture, InvTextureSize.xy * imgCenterCoord.xy).rgb; + COMPAT_PRECISION vec3 colour = COMPAT_TEXTURE(Texture, InvTextureSize.xy * sourceCenterCoord.xy).rgb; // Darken colours (if required...) and apply colour correction colour.rgb = pow(colour.rgb, vec3(TARGET_GAMMA + 1.0 + DARKEN_COLOUR)); diff --git a/handheld/shaders/simpletex_lcd/simpletex_lcd+gbc-color-4k.glsl b/handheld/shaders/simpletex_lcd/simpletex_lcd+gbc-color-4k.glsl index 8fa16c2..65723df 100644 --- a/handheld/shaders/simpletex_lcd/simpletex_lcd+gbc-color-4k.glsl +++ b/handheld/shaders/simpletex_lcd/simpletex_lcd+gbc-color-4k.glsl @@ -145,6 +145,7 @@ uniform COMPAT_PRECISION int FrameCount; uniform COMPAT_PRECISION vec2 OutputSize; uniform COMPAT_PRECISION vec2 TextureSize; uniform COMPAT_PRECISION vec2 InputSize; +uniform COMPAT_PRECISION vec2 OrigInputSize; uniform sampler2D Texture; uniform sampler2D BACKGROUND; COMPAT_VARYING COMPAT_PRECISION vec4 TEX0; @@ -205,11 +206,13 @@ const COMPAT_PRECISION float INV_DISPLAY_GAMMA = 1.0 / 2.2; void main() { // Get current texture coordinate - COMPAT_PRECISION vec2 imgPixelCoord = TEX0.xy * TextureSize.xy; + COMPAT_PRECISION vec2 imgPixelCoord = TEX0.xy * TextureSize.xy / InputSize.xy * OrigInputSize.xy; COMPAT_PRECISION vec2 imgCenterCoord = floor(imgPixelCoord.xy) + vec2(0.5, 0.5); + COMPAT_PRECISION vec2 sourcePixelCoord = TEX0.xy * TextureSize.xy; + COMPAT_PRECISION vec2 sourceCenterCoord = floor(sourcePixelCoord.xy) + vec2(0.5, 0.5); // Get colour of current pixel - COMPAT_PRECISION vec3 colour = COMPAT_TEXTURE(Texture, InvTextureSize.xy * imgCenterCoord.xy).rgb; + COMPAT_PRECISION vec3 colour = COMPAT_TEXTURE(Texture, InvTextureSize.xy * sourceCenterCoord.xy).rgb; // Darken colours (if required...) and apply colour correction colour.rgb = pow(colour.rgb, vec3(TARGET_GAMMA - 0.5 + DARKEN_COLOUR)); diff --git a/handheld/shaders/simpletex_lcd/simpletex_lcd+gbc-color.glsl b/handheld/shaders/simpletex_lcd/simpletex_lcd+gbc-color.glsl index d411236..c3f0d06 100644 --- a/handheld/shaders/simpletex_lcd/simpletex_lcd+gbc-color.glsl +++ b/handheld/shaders/simpletex_lcd/simpletex_lcd+gbc-color.glsl @@ -145,6 +145,7 @@ uniform COMPAT_PRECISION int FrameCount; uniform COMPAT_PRECISION vec2 OutputSize; uniform COMPAT_PRECISION vec2 TextureSize; uniform COMPAT_PRECISION vec2 InputSize; +uniform COMPAT_PRECISION vec2 OrigInputSize; uniform sampler2D Texture; uniform sampler2D BACKGROUND; COMPAT_VARYING COMPAT_PRECISION vec4 TEX0; @@ -205,11 +206,13 @@ const COMPAT_PRECISION float INV_DISPLAY_GAMMA = 1.0 / 2.2; void main() { // Get current texture coordinate - COMPAT_PRECISION vec2 imgPixelCoord = TEX0.xy * TextureSize.xy; + COMPAT_PRECISION vec2 imgPixelCoord = TEX0.xy * TextureSize.xy / InputSize.xy * OrigInputSize.xy; COMPAT_PRECISION vec2 imgCenterCoord = floor(imgPixelCoord.xy) + vec2(0.5, 0.5); + COMPAT_PRECISION vec2 sourcePixelCoord = TEX0.xy * TextureSize.xy; + COMPAT_PRECISION vec2 sourceCenterCoord = floor(sourcePixelCoord.xy) + vec2(0.5, 0.5); // Get colour of current pixel - COMPAT_PRECISION vec3 colour = COMPAT_TEXTURE(Texture, InvTextureSize.xy * imgCenterCoord.xy).rgb; + COMPAT_PRECISION vec3 colour = COMPAT_TEXTURE(Texture, InvTextureSize.xy * sourceCenterCoord.xy).rgb; // Darken colours (if required...) and apply colour correction colour.rgb = pow(colour.rgb, vec3(TARGET_GAMMA - 0.5 + DARKEN_COLOUR)); diff --git a/handheld/shaders/simpletex_lcd/simpletex_lcd-4k.glsl b/handheld/shaders/simpletex_lcd/simpletex_lcd-4k.glsl index 33ead74..0001c62 100644 --- a/handheld/shaders/simpletex_lcd/simpletex_lcd-4k.glsl +++ b/handheld/shaders/simpletex_lcd/simpletex_lcd-4k.glsl @@ -139,6 +139,7 @@ uniform COMPAT_PRECISION int FrameCount; uniform COMPAT_PRECISION vec2 OutputSize; uniform COMPAT_PRECISION vec2 TextureSize; uniform COMPAT_PRECISION vec2 InputSize; +uniform COMPAT_PRECISION vec2 OrigInputSize; uniform sampler2D Texture; uniform sampler2D BACKGROUND; COMPAT_VARYING COMPAT_PRECISION vec4 TEX0; @@ -185,11 +186,13 @@ const COMPAT_PRECISION float INV_BG_TEXTURE_SIZE = 1.0 / BG_TEXTURE_SIZE; void main() { // Get current texture coordinate - COMPAT_PRECISION vec2 imgPixelCoord = TEX0.xy * TextureSize.xy; + COMPAT_PRECISION vec2 imgPixelCoord = TEX0.xy * TextureSize.xy / InputSize.xy * OrigInputSize.xy; COMPAT_PRECISION vec2 imgCenterCoord = floor(imgPixelCoord.xy) + vec2(0.5, 0.5); + COMPAT_PRECISION vec2 sourcePixelCoord = TEX0.xy * TextureSize.xy; + COMPAT_PRECISION vec2 sourceCenterCoord = floor(sourcePixelCoord.xy) + vec2(0.5, 0.5); // Get colour of current pixel - COMPAT_PRECISION vec3 colour = COMPAT_TEXTURE(Texture, InvTextureSize.xy * imgCenterCoord.xy).rgb; + COMPAT_PRECISION vec3 colour = COMPAT_TEXTURE(Texture, InvTextureSize.xy * sourceCenterCoord.xy).rgb; // Darken colours (if required...) colour.rgb = pow(colour.rgb, vec3(1.0 + DARKEN_COLOUR)); diff --git a/handheld/shaders/simpletex_lcd/simpletex_lcd.glsl b/handheld/shaders/simpletex_lcd/simpletex_lcd.glsl index ff29d28..0d5bb5c 100644 --- a/handheld/shaders/simpletex_lcd/simpletex_lcd.glsl +++ b/handheld/shaders/simpletex_lcd/simpletex_lcd.glsl @@ -139,6 +139,7 @@ uniform COMPAT_PRECISION int FrameCount; uniform COMPAT_PRECISION vec2 OutputSize; uniform COMPAT_PRECISION vec2 TextureSize; uniform COMPAT_PRECISION vec2 InputSize; +uniform COMPAT_PRECISION vec2 OrigInputSize; uniform sampler2D Texture; uniform sampler2D BACKGROUND; COMPAT_VARYING COMPAT_PRECISION vec4 TEX0; @@ -185,11 +186,13 @@ const COMPAT_PRECISION float INV_BG_TEXTURE_SIZE = 1.0 / BG_TEXTURE_SIZE; void main() { // Get current texture coordinate - COMPAT_PRECISION vec2 imgPixelCoord = TEX0.xy * TextureSize.xy; + COMPAT_PRECISION vec2 imgPixelCoord = TEX0.xy * TextureSize.xy / InputSize.xy * OrigInputSize.xy; COMPAT_PRECISION vec2 imgCenterCoord = floor(imgPixelCoord.xy) + vec2(0.5, 0.5); + COMPAT_PRECISION vec2 sourcePixelCoord = TEX0.xy * TextureSize.xy; + COMPAT_PRECISION vec2 sourceCenterCoord = floor(sourcePixelCoord.xy) + vec2(0.5, 0.5); // Get colour of current pixel - COMPAT_PRECISION vec3 colour = COMPAT_TEXTURE(Texture, InvTextureSize.xy * imgCenterCoord.xy).rgb; + COMPAT_PRECISION vec3 colour = COMPAT_TEXTURE(Texture, InvTextureSize.xy * sourceCenterCoord.xy).rgb; // Darken colours (if required...) colour.rgb = pow(colour.rgb, vec3(1.0 + DARKEN_COLOUR)); diff --git a/handheld/shaders/simpletex_lcd/simpletex_lcd_720p+gba-color.glsl b/handheld/shaders/simpletex_lcd/simpletex_lcd_720p+gba-color.glsl index fbfbf35..3708c84 100644 --- a/handheld/shaders/simpletex_lcd/simpletex_lcd_720p+gba-color.glsl +++ b/handheld/shaders/simpletex_lcd/simpletex_lcd_720p+gba-color.glsl @@ -144,6 +144,7 @@ uniform COMPAT_PRECISION int FrameCount; uniform COMPAT_PRECISION vec2 OutputSize; uniform COMPAT_PRECISION vec2 TextureSize; uniform COMPAT_PRECISION vec2 InputSize; +uniform COMPAT_PRECISION vec2 OrigInputSize; uniform sampler2D Texture; uniform sampler2D BACKGROUND; COMPAT_VARYING COMPAT_PRECISION vec4 TEX0; @@ -202,11 +203,13 @@ const COMPAT_PRECISION float INV_DISPLAY_GAMMA = 1.0 / 2.2; void main() { // Get current texture coordinate - COMPAT_PRECISION vec2 imgPixelCoord = TEX0.xy * TextureSize.xy; + COMPAT_PRECISION vec2 imgPixelCoord = TEX0.xy * TextureSize.xy / InputSize.xy * OrigInputSize.xy; COMPAT_PRECISION vec2 imgCenterCoord = floor(imgPixelCoord.xy) + vec2(0.5, 0.5); + COMPAT_PRECISION vec2 sourcePixelCoord = TEX0.xy * TextureSize.xy; + COMPAT_PRECISION vec2 sourceCenterCoord = floor(sourcePixelCoord.xy) + vec2(0.5, 0.5); // Get colour of current pixel - COMPAT_PRECISION vec3 colour = COMPAT_TEXTURE(Texture, InvTextureSize.xy * imgCenterCoord.xy).rgb; + COMPAT_PRECISION vec3 colour = COMPAT_TEXTURE(Texture, InvTextureSize.xy * sourceCenterCoord.xy).rgb; // Darken colours (if required...) and apply colour correction colour.rgb = pow(colour.rgb, vec3(TARGET_GAMMA + 1.0 + DARKEN_COLOUR)); diff --git a/handheld/shaders/simpletex_lcd/simpletex_lcd_720p+gbc-color.glsl b/handheld/shaders/simpletex_lcd/simpletex_lcd_720p+gbc-color.glsl index 9fc663c..ffbf5b5 100644 --- a/handheld/shaders/simpletex_lcd/simpletex_lcd_720p+gbc-color.glsl +++ b/handheld/shaders/simpletex_lcd/simpletex_lcd_720p+gbc-color.glsl @@ -144,6 +144,7 @@ uniform COMPAT_PRECISION int FrameCount; uniform COMPAT_PRECISION vec2 OutputSize; uniform COMPAT_PRECISION vec2 TextureSize; uniform COMPAT_PRECISION vec2 InputSize; +uniform COMPAT_PRECISION vec2 OrigInputSize; uniform sampler2D Texture; uniform sampler2D BACKGROUND; COMPAT_VARYING COMPAT_PRECISION vec4 TEX0; @@ -202,11 +203,13 @@ const COMPAT_PRECISION float INV_DISPLAY_GAMMA = 1.0 / 2.2; void main() { // Get current texture coordinate - COMPAT_PRECISION vec2 imgPixelCoord = TEX0.xy * TextureSize.xy; + COMPAT_PRECISION vec2 imgPixelCoord = TEX0.xy * TextureSize.xy / InputSize.xy * OrigInputSize.xy; COMPAT_PRECISION vec2 imgCenterCoord = floor(imgPixelCoord.xy) + vec2(0.5, 0.5); + COMPAT_PRECISION vec2 sourcePixelCoord = TEX0.xy * TextureSize.xy; + COMPAT_PRECISION vec2 sourceCenterCoord = floor(sourcePixelCoord.xy) + vec2(0.5, 0.5); // Get colour of current pixel - COMPAT_PRECISION vec3 colour = COMPAT_TEXTURE(Texture, InvTextureSize.xy * imgCenterCoord.xy).rgb; + COMPAT_PRECISION vec3 colour = COMPAT_TEXTURE(Texture, InvTextureSize.xy * sourceCenterCoord.xy).rgb; // Darken colours (if required...) and apply colour correction colour.rgb = pow(colour.rgb, vec3(TARGET_GAMMA - 0.5 + DARKEN_COLOUR)); diff --git a/handheld/shaders/simpletex_lcd/simpletex_lcd_720p.glsl b/handheld/shaders/simpletex_lcd/simpletex_lcd_720p.glsl index 63d4cf3..beedcd6 100644 --- a/handheld/shaders/simpletex_lcd/simpletex_lcd_720p.glsl +++ b/handheld/shaders/simpletex_lcd/simpletex_lcd_720p.glsl @@ -141,6 +141,7 @@ uniform COMPAT_PRECISION int FrameCount; uniform COMPAT_PRECISION vec2 OutputSize; uniform COMPAT_PRECISION vec2 TextureSize; uniform COMPAT_PRECISION vec2 InputSize; +uniform COMPAT_PRECISION vec2 OrigInputSize; uniform sampler2D Texture; uniform sampler2D BACKGROUND; COMPAT_VARYING COMPAT_PRECISION vec4 TEX0; @@ -185,11 +186,13 @@ const COMPAT_PRECISION float INV_BG_TEXTURE_SIZE = 1.0 / BG_TEXTURE_SIZE; void main() { // Get current texture coordinate - COMPAT_PRECISION vec2 imgPixelCoord = TEX0.xy * TextureSize.xy; + COMPAT_PRECISION vec2 imgPixelCoord = TEX0.xy * TextureSize.xy / InputSize.xy * OrigInputSize.xy; COMPAT_PRECISION vec2 imgCenterCoord = floor(imgPixelCoord.xy) + vec2(0.5, 0.5); + COMPAT_PRECISION vec2 sourcePixelCoord = TEX0.xy * TextureSize.xy; + COMPAT_PRECISION vec2 sourceCenterCoord = floor(sourcePixelCoord.xy) + vec2(0.5, 0.5); // Get colour of current pixel - COMPAT_PRECISION vec3 colour = COMPAT_TEXTURE(Texture, InvTextureSize.xy * imgCenterCoord.xy).rgb; + COMPAT_PRECISION vec3 colour = COMPAT_TEXTURE(Texture, InvTextureSize.xy * sourceCenterCoord.xy).rgb; // Darken colours (if required...) colour.rgb = pow(colour.rgb, vec3(1.0 + DARKEN_COLOUR)); diff --git a/handheld/shaders/zfast_lcd.glsl b/handheld/shaders/zfast_lcd.glsl index 9a9afd2..66dc55e 100644 --- a/handheld/shaders/zfast_lcd.glsl +++ b/handheld/shaders/zfast_lcd.glsl @@ -116,6 +116,7 @@ uniform COMPAT_PRECISION int FrameCount; uniform COMPAT_PRECISION vec2 OutputSize; uniform COMPAT_PRECISION vec2 TextureSize; uniform COMPAT_PRECISION vec2 InputSize; +uniform COMPAT_PRECISION vec2 OrigInputSize; uniform sampler2D Texture; COMPAT_VARYING vec4 TEX0; varying COMPAT_PRECISION vec2 invSize; @@ -136,8 +137,10 @@ uniform COMPAT_PRECISION float GBAGAMMA; void main() { - COMPAT_PRECISION vec2 texcoordInPixels = TEX0.xy * TextureSize.xy; + COMPAT_PRECISION vec2 texcoordInPixels = TEX0.xy * TextureSize.xy / InputSize.xy * OrigInputSize.xy; COMPAT_PRECISION vec2 centerCoord = floor(texcoordInPixels.xy)+vec2(0.5,0.5); + COMPAT_PRECISION vec2 sourceCoordInPixels = TEX0.xy * TextureSize.xy; + COMPAT_PRECISION vec2 sourceCenterCoord = floor(sourceCoordInPixels.xy)+vec2(0.5,0.5); COMPAT_PRECISION vec2 distFromCenter = abs(centerCoord - texcoordInPixels); COMPAT_PRECISION float Y = max(distFromCenter.x,(distFromCenter.y)); @@ -149,7 +152,7 @@ void main() COMPAT_PRECISION float LineWeight = YY - 2.7*YYY; LineWeight = 1.0 - BORDERMULT*LineWeight; - COMPAT_PRECISION vec3 colour = COMPAT_TEXTURE(Texture, invSize*centerCoord).rgb*LineWeight; + COMPAT_PRECISION vec3 colour = COMPAT_TEXTURE(Texture, invSize*sourceCenterCoord).rgb*LineWeight; //#if defined(GBAGAMMA) // //colour.rgb = pow(colour.rgb, vec3(1.35)); diff --git a/motionblur/shaders/response-time.glsl b/motionblur/shaders/response-time.glsl index aaa9df7..7e3ea7e 100644 --- a/motionblur/shaders/response-time.glsl +++ b/motionblur/shaders/response-time.glsl @@ -83,6 +83,21 @@ uniform COMPAT_PRECISION int FrameCount; uniform COMPAT_PRECISION vec2 OutputSize; uniform COMPAT_PRECISION vec2 TextureSize; uniform COMPAT_PRECISION vec2 InputSize; +uniform COMPAT_PRECISION vec2 OrigInputSize; +uniform COMPAT_PRECISION vec2 PrevInputSize; +uniform COMPAT_PRECISION vec2 Prev1InputSize; +uniform COMPAT_PRECISION vec2 Prev2InputSize; +uniform COMPAT_PRECISION vec2 Prev3InputSize; +uniform COMPAT_PRECISION vec2 Prev4InputSize; +uniform COMPAT_PRECISION vec2 Prev5InputSize; +uniform COMPAT_PRECISION vec2 Prev6InputSize; +uniform COMPAT_PRECISION vec2 PrevTextureSize; +uniform COMPAT_PRECISION vec2 Prev1TextureSize; +uniform COMPAT_PRECISION vec2 Prev2TextureSize; +uniform COMPAT_PRECISION vec2 Prev3TextureSize; +uniform COMPAT_PRECISION vec2 Prev4TextureSize; +uniform COMPAT_PRECISION vec2 Prev5TextureSize; +uniform COMPAT_PRECISION vec2 Prev6TextureSize; uniform sampler2D Texture; uniform sampler2D PrevTexture; uniform sampler2D Prev1Texture; @@ -108,14 +123,16 @@ uniform COMPAT_PRECISION float response_time; #endif // Frame sampling definitions +#define active_coord (vTexCoord * TextureSize.xy / InputSize.xy) +#define history_coord(input_size, texture_size) (all(equal(InputSize, OrigInputSize)) ? vTexCoord : active_coord * input_size / texture_size) #define curr_rgb COMPAT_TEXTURE(Source, vTexCoord).rgb -#define prev0_rgb COMPAT_TEXTURE(PrevTexture, vTexCoord).rgb -#define prev1_rgb COMPAT_TEXTURE(Prev1Texture, vTexCoord).rgb -#define prev2_rgb COMPAT_TEXTURE(Prev2Texture, vTexCoord).rgb -#define prev3_rgb COMPAT_TEXTURE(Prev3Texture, vTexCoord).rgb -#define prev4_rgb COMPAT_TEXTURE(Prev4Texture, vTexCoord).rgb -#define prev5_rgb COMPAT_TEXTURE(Prev5Texture, vTexCoord).rgb -#define prev6_rgb COMPAT_TEXTURE(Prev6Texture, vTexCoord).rgb +#define prev0_rgb COMPAT_TEXTURE(PrevTexture, history_coord(PrevInputSize.xy, PrevTextureSize.xy)).rgb +#define prev1_rgb COMPAT_TEXTURE(Prev1Texture, history_coord(Prev1InputSize.xy, Prev1TextureSize.xy)).rgb +#define prev2_rgb COMPAT_TEXTURE(Prev2Texture, history_coord(Prev2InputSize.xy, Prev2TextureSize.xy)).rgb +#define prev3_rgb COMPAT_TEXTURE(Prev3Texture, history_coord(Prev3InputSize.xy, Prev3TextureSize.xy)).rgb +#define prev4_rgb COMPAT_TEXTURE(Prev4Texture, history_coord(Prev4InputSize.xy, Prev4TextureSize.xy)).rgb +#define prev5_rgb COMPAT_TEXTURE(Prev5Texture, history_coord(Prev5InputSize.xy, Prev5TextureSize.xy)).rgb +#define prev6_rgb COMPAT_TEXTURE(Prev6Texture, history_coord(Prev6InputSize.xy, Prev6TextureSize.xy)).rgb // Fragment Shader