From 0086d9b5862947b503df3adc43ec0343afdf45ae Mon Sep 17 00:00:00 2001 From: hunterk Date: Tue, 24 Dec 2024 16:09:48 -0600 Subject: [PATCH] big reorganization of handheld and presets (#659) * big reorganization of handheld and presets * replace edge-blended-240hz-bfi with blurbusters and lottes' crt-beam-simulator * whoops, forgot to track the new shader --- handheld/SwitchOLED-color.slangp | 17 - handheld/bandlimit-pixel-gba-color.slangp | 11 - handheld/{ => color-mod}/NSO-gba-color.slangp | 2 +- handheld/{ => color-mod}/NSO-gbc-color.slangp | 2 +- .../SwitchOLED-color.slangp} | 9 +- handheld/color-mod/dslite-color.slangp | 17 + handheld/color-mod/gbMicro-color.slangp | 17 + handheld/color-mod/gba-color.slangp | 17 + handheld/color-mod/gbc-color.slangp | 18 + .../{ => color-mod}/gbc-gambatte-color.slangp | 2 +- handheld/color-mod/nds-color.slangp | 17 + handheld/{ => color-mod}/palm-color.slangp | 2 +- handheld/color-mod/psp-color.slangp | 17 + handheld/color-mod/sp101-color.slangp | 17 + handheld/{ => color-mod}/vba-color.slangp | 6 +- handheld/dslite-color.slangp | 17 - handheld/gbMicro-color.slangp | 17 - handheld/gba-color.slangp | 17 - handheld/nds-color.slangp | 17 - handheld/psp-color.slangp | 17 - handheld/retro-v2-nds-color.slangp | 9 - handheld/retro-v3-nds-color.slangp | 9 - handheld/sp101-color.slangp | 17 - .../{ => crt-plus-signal}/c64-monitor.slangp | 10 +- .../crt-geom-deluxe-ntsc-adaptive.slangp | 20 +- .../crt-royale-fast-ntsc-composite.slangp | 30 +- .../crt-royale-ntsc-composite.slangp | 44 +- .../crt-royale-ntsc-svideo.slangp | 44 +- .../crt-royale-pal-r57shell.slangp | 40 +- .../crtglow_gauss_ntsc.slangp | 16 +- .../{ => crt-plus-signal}/my_old_tv.slangp | 2 +- .../ntsc-phosphorlut.slangp | 24 +- .../ntsclut-phosphorlut.slangp | 43 ++ .../agb001-gba-color-motionblur.slangp | 6 +- .../ags001-gba-color-motionblur.slangp | 8 +- .../bandlimit-pixel-gba-color.slangp | 11 + ...lcd-grid-v2-dslite-color-motionblur.slangp | 12 +- .../lcd-grid-v2-dslite-color.slangp | 10 +- ...cd-grid-v2-gbMicro-color-motionblur.slangp | 12 +- .../lcd-grid-v2-gbMicro-color.slangp | 10 +- .../lcd-grid-v2-gba-color-motionblur.slangp | 12 +- .../lcd-grid-v2-gba-color.slangp | 10 +- .../lcd-grid-v2-gbc-color-motionblur.slangp | 12 +- .../lcd-grid-v2-gbc-color.slangp | 10 +- .../lcd-grid-v2-nds-color-motionblur.slangp | 12 +- .../lcd-grid-v2-nds-color.slangp | 10 +- .../lcd-grid-v2-palm-color-motionblur.slangp | 6 +- .../lcd-grid-v2-palm-color.slangp | 4 +- .../lcd-grid-v2-psp-color-motionblur.slangp | 12 +- .../lcd-grid-v2-psp-color.slangp | 10 +- .../lcd-grid-v2-sp101-color-motionblur.slangp | 12 +- .../lcd-grid-v2-sp101-color.slangp | 10 +- .../lcd-grid-v2-vba-color-motionblur.slangp | 8 +- .../lcd-grid-v2-vba-color.slangp | 6 +- .../retro-v2+gba-color.slangp | 4 +- .../retro-v2+gbc-color.slangp | 4 +- .../retro-v2+image-adjustment.slangp | 4 +- .../retro-v2+nds-color.slangp | 4 +- .../retro-v2+psp-color.slangp | 4 +- .../retro-v2+vba-color.slangp | 4 +- .../retro-v2-nds-color.slangp | 9 + .../retro-v3-nds-color.slangp | 9 + .../sameboy-lcd-gbc-color-motionblur.slangp | 12 +- .../simpletex_lcd+gba-color-4k.slangp | 4 +- .../simpletex_lcd+gba-color.slangp | 4 +- .../simpletex_lcd+gbc-color-4k.slangp | 4 +- .../simpletex_lcd+gbc-color.slangp | 4 +- .../simpletex_lcd_720p+gba-color.slangp | 4 +- .../simpletex_lcd_720p+gbc-color.slangp | 4 +- presets/ntsclut-phosphorlut.slangp | 43 -- .../scalefx+rAA+aa-fast.slangp | 22 +- .../scalefx+rAA+aa.slangp | 24 +- .../scalefx-aa-fast.slangp | 18 +- .../scalefx-aa.slangp | 20 +- ...calefx9-aa-blur-hazy-ntsc-sh1nra358.slangp | 34 +- ...fx9-aa-blur-hazy-vibrance-sh1nra358.slangp | 34 +- ...soft+scalefx-level2aa+sharpsmoother.slangp | 20 +- .../xsoft+scalefx-level2aa.slangp | 18 +- subframe-bfi/crt-beam-simulator.slangp | 3 + subframe-bfi/edge-blended-240hz-bfi.slangp | 12 - subframe-bfi/shaders/crt-beam-simulator.slang | 452 ++++++++++++++++++ .../edge-blended/edge-blended-240hz-bfi.slang | 101 ---- .../edge-blended/resources/240hzBot.png | Bin 5818 -> 0 bytes .../edge-blended/resources/240hzMidBot.png | Bin 6203 -> 0 bytes .../edge-blended/resources/240hzMidTop.png | Bin 5824 -> 0 bytes .../edge-blended/resources/240hzTop.png | Bin 5350 -> 0 bytes 86 files changed, 994 insertions(+), 652 deletions(-) delete mode 100644 handheld/SwitchOLED-color.slangp delete mode 100644 handheld/bandlimit-pixel-gba-color.slangp rename handheld/{ => color-mod}/NSO-gba-color.slangp (59%) rename handheld/{ => color-mod}/NSO-gbc-color.slangp (59%) rename handheld/{gbc-color.slangp => color-mod/SwitchOLED-color.slangp} (52%) create mode 100644 handheld/color-mod/dslite-color.slangp create mode 100644 handheld/color-mod/gbMicro-color.slangp create mode 100644 handheld/color-mod/gba-color.slangp create mode 100644 handheld/color-mod/gbc-color.slangp rename handheld/{ => color-mod}/gbc-gambatte-color.slangp (57%) create mode 100644 handheld/color-mod/nds-color.slangp rename handheld/{ => color-mod}/palm-color.slangp (61%) create mode 100644 handheld/color-mod/psp-color.slangp create mode 100644 handheld/color-mod/sp101-color.slangp rename handheld/{ => color-mod}/vba-color.slangp (55%) delete mode 100644 handheld/dslite-color.slangp delete mode 100644 handheld/gbMicro-color.slangp delete mode 100644 handheld/gba-color.slangp delete mode 100644 handheld/nds-color.slangp delete mode 100644 handheld/psp-color.slangp delete mode 100644 handheld/retro-v2-nds-color.slangp delete mode 100644 handheld/retro-v3-nds-color.slangp delete mode 100644 handheld/sp101-color.slangp rename presets/{ => crt-plus-signal}/c64-monitor.slangp (53%) rename presets/{ => crt-plus-signal}/crt-geom-deluxe-ntsc-adaptive.slangp (63%) rename presets/{ => crt-plus-signal}/crt-royale-fast-ntsc-composite.slangp (71%) rename presets/{ => crt-plus-signal}/crt-royale-ntsc-composite.slangp (83%) rename presets/{ => crt-plus-signal}/crt-royale-ntsc-svideo.slangp (83%) rename presets/{ => crt-plus-signal}/crt-royale-pal-r57shell.slangp (83%) rename presets/{ => crt-plus-signal}/crtglow_gauss_ntsc.slangp (62%) rename presets/{ => crt-plus-signal}/my_old_tv.slangp (93%) rename presets/{ => crt-plus-signal}/ntsc-phosphorlut.slangp (55%) create mode 100644 presets/crt-plus-signal/ntsclut-phosphorlut.slangp rename {handheld => presets/handheld-plus-color-mod}/agb001-gba-color-motionblur.slangp (51%) rename {handheld => presets/handheld-plus-color-mod}/ags001-gba-color-motionblur.slangp (51%) create mode 100644 presets/handheld-plus-color-mod/bandlimit-pixel-gba-color.slangp rename {handheld => presets/handheld-plus-color-mod}/lcd-grid-v2-dslite-color-motionblur.slangp (63%) rename {handheld => presets/handheld-plus-color-mod}/lcd-grid-v2-dslite-color.slangp (61%) rename {handheld => presets/handheld-plus-color-mod}/lcd-grid-v2-gbMicro-color-motionblur.slangp (62%) rename {handheld => presets/handheld-plus-color-mod}/lcd-grid-v2-gbMicro-color.slangp (60%) rename {handheld => presets/handheld-plus-color-mod}/lcd-grid-v2-gba-color-motionblur.slangp (62%) rename {handheld => presets/handheld-plus-color-mod}/lcd-grid-v2-gba-color.slangp (59%) rename {handheld => presets/handheld-plus-color-mod}/lcd-grid-v2-gbc-color-motionblur.slangp (63%) rename {handheld => presets/handheld-plus-color-mod}/lcd-grid-v2-gbc-color.slangp (61%) rename {handheld => presets/handheld-plus-color-mod}/lcd-grid-v2-nds-color-motionblur.slangp (63%) rename {handheld => presets/handheld-plus-color-mod}/lcd-grid-v2-nds-color.slangp (61%) rename {handheld => presets/handheld-plus-color-mod}/lcd-grid-v2-palm-color-motionblur.slangp (70%) rename {handheld => presets/handheld-plus-color-mod}/lcd-grid-v2-palm-color.slangp (70%) rename {handheld => presets/handheld-plus-color-mod}/lcd-grid-v2-psp-color-motionblur.slangp (62%) rename {handheld => presets/handheld-plus-color-mod}/lcd-grid-v2-psp-color.slangp (60%) rename {handheld => presets/handheld-plus-color-mod}/lcd-grid-v2-sp101-color-motionblur.slangp (63%) rename {handheld => presets/handheld-plus-color-mod}/lcd-grid-v2-sp101-color.slangp (61%) rename {handheld => presets/handheld-plus-color-mod}/lcd-grid-v2-vba-color-motionblur.slangp (70%) rename {handheld => presets/handheld-plus-color-mod}/lcd-grid-v2-vba-color.slangp (69%) rename presets/{ => handheld-plus-color-mod}/retro-v2+gba-color.slangp (66%) rename presets/{ => handheld-plus-color-mod}/retro-v2+gbc-color.slangp (66%) rename presets/{ => handheld-plus-color-mod}/retro-v2+image-adjustment.slangp (83%) rename presets/{ => handheld-plus-color-mod}/retro-v2+nds-color.slangp (66%) rename presets/{ => handheld-plus-color-mod}/retro-v2+psp-color.slangp (66%) rename presets/{ => handheld-plus-color-mod}/retro-v2+vba-color.slangp (66%) create mode 100644 presets/handheld-plus-color-mod/retro-v2-nds-color.slangp create mode 100644 presets/handheld-plus-color-mod/retro-v3-nds-color.slangp rename {handheld => presets/handheld-plus-color-mod}/sameboy-lcd-gbc-color-motionblur.slangp (53%) rename {handheld => presets/handheld-plus-color-mod}/simpletex_lcd+gba-color-4k.slangp (74%) rename {handheld => presets/handheld-plus-color-mod}/simpletex_lcd+gba-color.slangp (75%) rename {handheld => presets/handheld-plus-color-mod}/simpletex_lcd+gbc-color-4k.slangp (74%) rename {handheld => presets/handheld-plus-color-mod}/simpletex_lcd+gbc-color.slangp (75%) rename {handheld => presets/handheld-plus-color-mod}/simpletex_lcd_720p+gba-color.slangp (74%) rename {handheld => presets/handheld-plus-color-mod}/simpletex_lcd_720p+gbc-color.slangp (74%) delete mode 100644 presets/ntsclut-phosphorlut.slangp rename presets/{ => scalefx-plus-smoothing}/scalefx+rAA+aa-fast.slangp (56%) rename presets/{ => scalefx-plus-smoothing}/scalefx+rAA+aa.slangp (60%) rename presets/{ => scalefx-plus-smoothing}/scalefx-aa-fast.slangp (59%) rename presets/{ => scalefx-plus-smoothing}/scalefx-aa.slangp (64%) rename presets/{ => scalefx-plus-smoothing}/scalefx9-aa-blur-hazy-ntsc-sh1nra358.slangp (53%) rename presets/{ => scalefx-plus-smoothing}/scalefx9-aa-blur-hazy-vibrance-sh1nra358.slangp (53%) rename presets/{ => scalefx-plus-smoothing}/xsoft+scalefx-level2aa+sharpsmoother.slangp (57%) rename presets/{ => scalefx-plus-smoothing}/xsoft+scalefx-level2aa.slangp (52%) create mode 100644 subframe-bfi/crt-beam-simulator.slangp delete mode 100644 subframe-bfi/edge-blended-240hz-bfi.slangp create mode 100644 subframe-bfi/shaders/crt-beam-simulator.slang delete mode 100644 subframe-bfi/shaders/edge-blended/edge-blended-240hz-bfi.slang delete mode 100644 subframe-bfi/shaders/edge-blended/resources/240hzBot.png delete mode 100644 subframe-bfi/shaders/edge-blended/resources/240hzMidBot.png delete mode 100644 subframe-bfi/shaders/edge-blended/resources/240hzMidTop.png delete mode 100644 subframe-bfi/shaders/edge-blended/resources/240hzTop.png diff --git a/handheld/SwitchOLED-color.slangp b/handheld/SwitchOLED-color.slangp deleted file mode 100644 index 392444ff3e..0000000000 --- a/handheld/SwitchOLED-color.slangp +++ /dev/null @@ -1,17 +0,0 @@ -shaders = 2 - -shader0 = ../reshade/shaders/LUT/multiLUT.slang -filter_linear0 = false -scale_type0 = source -scale0 = 1.0 -shader1 = shaders/color/SwitchOLED-color.slang -filter_linear1 = false -scale_type1 = source -scale1 = 1.0 - -textures = SamplerLUT1;SamplerLUT2 - -SamplerLUT1 = ../reshade/shaders/LUT/64.png -SamplerLUT1_linear = true -SamplerLUT2 = shaders/color/lut/psp-grey1.png -SamplerLUT2_linear = true \ No newline at end of file diff --git a/handheld/bandlimit-pixel-gba-color.slangp b/handheld/bandlimit-pixel-gba-color.slangp deleted file mode 100644 index 4f4ef53bdf..0000000000 --- a/handheld/bandlimit-pixel-gba-color.slangp +++ /dev/null @@ -1,11 +0,0 @@ -shaders = 3 -shader0 = shaders/color/gba-color.slang -shader1 = ../linear/linearize.slang -shader2 = ../pixel-art-scaling/shaders/bandlimit-pixel.slang - -filter_linear1 = false -scale_type1 = source -scale1 = 1.0 -srgb_framebuffer1 = true - -filter_linear2 = true diff --git a/handheld/NSO-gba-color.slangp b/handheld/color-mod/NSO-gba-color.slangp similarity index 59% rename from handheld/NSO-gba-color.slangp rename to handheld/color-mod/NSO-gba-color.slangp index ac18496d52..5cc8fa68d3 100644 --- a/handheld/NSO-gba-color.slangp +++ b/handheld/color-mod/NSO-gba-color.slangp @@ -1,6 +1,6 @@ shaders = 1 -shader0 = shaders/color/NSO-gba-color.slang +shader0 = ../shaders/color/NSO-gba-color.slang filter_linear0 = false scale_type0 = source scale0 = 1.0 diff --git a/handheld/NSO-gbc-color.slangp b/handheld/color-mod/NSO-gbc-color.slangp similarity index 59% rename from handheld/NSO-gbc-color.slangp rename to handheld/color-mod/NSO-gbc-color.slangp index 85826829f8..794f04b024 100644 --- a/handheld/NSO-gbc-color.slangp +++ b/handheld/color-mod/NSO-gbc-color.slangp @@ -1,6 +1,6 @@ shaders = 1 -shader0 = shaders/color/NSO-gbc-color.slang +shader0 = ../shaders/color/NSO-gbc-color.slang filter_linear0 = false scale_type0 = source scale0 = 1.0 diff --git a/handheld/gbc-color.slangp b/handheld/color-mod/SwitchOLED-color.slangp similarity index 52% rename from handheld/gbc-color.slangp rename to handheld/color-mod/SwitchOLED-color.slangp index 8226daf78f..05726cf981 100644 --- a/handheld/gbc-color.slangp +++ b/handheld/color-mod/SwitchOLED-color.slangp @@ -1,18 +1,17 @@ shaders = 2 -shader0 = shaders/color/lut/GBC-LUT.slang +shader0 = ../../reshade/shaders/LUT/multiLUT.slang filter_linear0 = false scale_type0 = source scale0 = 1.0 -shader1 = shaders/color/gbc-color.slang +shader1 = ../shaders/color/SwitchOLED-color.slang filter_linear1 = false scale_type1 = source scale1 = 1.0 textures = SamplerLUT1;SamplerLUT2 -SamplerLUT1 = shaders/color/lut/gbc-grey1.png +SamplerLUT1 = ../../reshade/shaders/LUT/64.png SamplerLUT1_linear = true -SamplerLUT2 = shaders/color/lut/gbc-grey2.png +SamplerLUT2 = ../shaders/color/lut/psp-grey1.png SamplerLUT2_linear = true -LUT_selector_param = "2" \ No newline at end of file diff --git a/handheld/color-mod/dslite-color.slangp b/handheld/color-mod/dslite-color.slangp new file mode 100644 index 0000000000..249d0753f7 --- /dev/null +++ b/handheld/color-mod/dslite-color.slangp @@ -0,0 +1,17 @@ +shaders = 2 + +shader0 = ../../reshade/shaders/LUT/multiLUT.slang +filter_linear0 = false +scale_type0 = source +scale0 = 1.0 +shader1 = ../shaders/color/dslite-color.slang +filter_linear1 = false +scale_type1 = source +scale1 = 1.0 + +textures = SamplerLUT1;SamplerLUT2 + +SamplerLUT1 = ../../reshade/shaders/LUT/64.png +SamplerLUT1_linear = true +SamplerLUT2 = ../shaders/color/lut/dslite-grey.png +SamplerLUT2_linear = true diff --git a/handheld/color-mod/gbMicro-color.slangp b/handheld/color-mod/gbMicro-color.slangp new file mode 100644 index 0000000000..ec82c88ca9 --- /dev/null +++ b/handheld/color-mod/gbMicro-color.slangp @@ -0,0 +1,17 @@ +shaders = 2 + +shader0 = ../shaders/color/lut/GBM-LUT.slang +filter_linear0 = false +scale_type0 = source +scale0 = 1.0 +shader1 = ../shaders/color/gbMicro-color.slang +filter_linear1 = false +scale_type1 = source +scale1 = 1.0 + +textures = SamplerLUT1;SamplerLUT2 + +SamplerLUT1 = ../../reshade/shaders/LUT/64.png +SamplerLUT1_linear = true +SamplerLUT2 = ../shaders/color/lut/gbamicro-grey.png +SamplerLUT2_linear = true diff --git a/handheld/color-mod/gba-color.slangp b/handheld/color-mod/gba-color.slangp new file mode 100644 index 0000000000..70c6707127 --- /dev/null +++ b/handheld/color-mod/gba-color.slangp @@ -0,0 +1,17 @@ +shaders = 2 + +shader0 = ../shaders/color/lut/GBA-LUT.slang +filter_linear0 = false +scale_type0 = source +scale0 = 1.0 +shader1 = ../shaders/color/gba-color.slang +filter_linear1 = false +scale_type1 = source +scale1 = 1.0 + +textures = SamplerLUT1;SamplerLUT2 + +SamplerLUT1 = ../shaders/color/lut/gba-grey1.png +SamplerLUT1_linear = true +SamplerLUT2 = ../shaders/color/lut/gba-grey2.png +SamplerLUT2_linear = true diff --git a/handheld/color-mod/gbc-color.slangp b/handheld/color-mod/gbc-color.slangp new file mode 100644 index 0000000000..a2cf260f92 --- /dev/null +++ b/handheld/color-mod/gbc-color.slangp @@ -0,0 +1,18 @@ +shaders = 2 + +shader0 = ../shaders/color/lut/GBC-LUT.slang +filter_linear0 = false +scale_type0 = source +scale0 = 1.0 +shader1 = ../shaders/color/gbc-color.slang +filter_linear1 = false +scale_type1 = source +scale1 = 1.0 + +textures = SamplerLUT1;SamplerLUT2 + +SamplerLUT1 = ../shaders/color/lut/gbc-grey1.png +SamplerLUT1_linear = true +SamplerLUT2 = ../shaders/color/lut/gbc-grey2.png +SamplerLUT2_linear = true +LUT_selector_param = "2" diff --git a/handheld/gbc-gambatte-color.slangp b/handheld/color-mod/gbc-gambatte-color.slangp similarity index 57% rename from handheld/gbc-gambatte-color.slangp rename to handheld/color-mod/gbc-gambatte-color.slangp index 6fde845c2d..54a6950c6d 100644 --- a/handheld/gbc-gambatte-color.slangp +++ b/handheld/color-mod/gbc-gambatte-color.slangp @@ -1,6 +1,6 @@ shaders = 1 -shader0 = shaders/color/gbc-gambatte-color.slang +shader0 = ../shaders/color/gbc-gambatte-color.slang filter_linear0 = false scale_type0 = source scale0 = 1.0 diff --git a/handheld/color-mod/nds-color.slangp b/handheld/color-mod/nds-color.slangp new file mode 100644 index 0000000000..cf3f38fdc1 --- /dev/null +++ b/handheld/color-mod/nds-color.slangp @@ -0,0 +1,17 @@ +shaders = 2 + +shader0 = ../../reshade/shaders/LUT/multiLUT.slang +filter_linear0 = false +scale_type0 = source +scale0 = 1.0 +shader1 = ../shaders/color/nds-color.slang +filter_linear1 = false +scale_type1 = source +scale1 = 1.0 + +textures = SamplerLUT1;SamplerLUT2 + +SamplerLUT1 = ../../reshade/shaders/LUT/64.png +SamplerLUT1_linear = true +SamplerLUT2 = ../shaders/color/lut/nds-grey.png +SamplerLUT2_linear = true diff --git a/handheld/palm-color.slangp b/handheld/color-mod/palm-color.slangp similarity index 61% rename from handheld/palm-color.slangp rename to handheld/color-mod/palm-color.slangp index afe7456fde..2cd18b0485 100644 --- a/handheld/palm-color.slangp +++ b/handheld/color-mod/palm-color.slangp @@ -1,6 +1,6 @@ shaders = 1 -shader0 = shaders/color/palm-color.slang +shader0 = ../shaders/color/palm-color.slang filter_linear0 = false scale_type0 = source scale0 = 1.0 diff --git a/handheld/color-mod/psp-color.slangp b/handheld/color-mod/psp-color.slangp new file mode 100644 index 0000000000..8043cb622d --- /dev/null +++ b/handheld/color-mod/psp-color.slangp @@ -0,0 +1,17 @@ +shaders = 2 + +shader0 = ../../reshade/shaders/LUT/multiLUT.slang +filter_linear0 = false +scale_type0 = source +scale0 = 1.0 +shader1 = ../shaders/color/psp-color.slang +filter_linear1 = false +scale_type1 = source +scale1 = 1.0 + +textures = SamplerLUT1;SamplerLUT2 + +SamplerLUT1 = ../shaders/color/lut/psp-grey1.png +SamplerLUT1_linear = true +SamplerLUT2 = ../shaders/color/lut/psp-grey2.png +SamplerLUT2_linear = true diff --git a/handheld/color-mod/sp101-color.slangp b/handheld/color-mod/sp101-color.slangp new file mode 100644 index 0000000000..cc9ab686f4 --- /dev/null +++ b/handheld/color-mod/sp101-color.slangp @@ -0,0 +1,17 @@ +shaders = 2 + +shader0 = ../../reshade/shaders/LUT/multiLUT.slang +filter_linear0 = false +scale_type0 = source +scale0 = 1.0 +shader1 = ../shaders/color/sp101-color.slang +filter_linear1 = false +scale_type1 = source +scale1 = 1.0 + +textures = SamplerLUT1;SamplerLUT2 + +SamplerLUT1 = ../../reshade/shaders/LUT/64.png +SamplerLUT1_linear = true +SamplerLUT2 = ../shaders/color/lut/sp101-grey.png +SamplerLUT2_linear = true diff --git a/handheld/vba-color.slangp b/handheld/color-mod/vba-color.slangp similarity index 55% rename from handheld/vba-color.slangp rename to handheld/color-mod/vba-color.slangp index a5fc6f2832..bf68fe537d 100644 --- a/handheld/vba-color.slangp +++ b/handheld/color-mod/vba-color.slangp @@ -1,13 +1,13 @@ shaders = 2 -shader0 = shaders/color/vba-color.slang +shader0 = ../shaders/color/vba-color.slang filter_linear0 = false scale_type0 = source scale0 = 1.0 -shader1 = ../misc/shaders/image-adjustment.slang +shader1 = ../../misc/shaders/image-adjustment.slang filter_linear1 = false scale_type1 = source scale1 = 1.0 ia_luminance = 0.75 -ia_bright_boost = 0.15 \ No newline at end of file +ia_bright_boost = 0.15 diff --git a/handheld/dslite-color.slangp b/handheld/dslite-color.slangp deleted file mode 100644 index 37ce7f4574..0000000000 --- a/handheld/dslite-color.slangp +++ /dev/null @@ -1,17 +0,0 @@ -shaders = 2 - -shader0 = ../reshade/shaders/LUT/multiLUT.slang -filter_linear0 = false -scale_type0 = source -scale0 = 1.0 -shader1 = shaders/color/dslite-color.slang -filter_linear1 = false -scale_type1 = source -scale1 = 1.0 - -textures = SamplerLUT1;SamplerLUT2 - -SamplerLUT1 = ../reshade/shaders/LUT/64.png -SamplerLUT1_linear = true -SamplerLUT2 = shaders/color/lut/dslite-grey.png -SamplerLUT2_linear = true \ No newline at end of file diff --git a/handheld/gbMicro-color.slangp b/handheld/gbMicro-color.slangp deleted file mode 100644 index b438a83b4d..0000000000 --- a/handheld/gbMicro-color.slangp +++ /dev/null @@ -1,17 +0,0 @@ -shaders = 2 - -shader0 = shaders/color/lut/GBM-LUT.slang -filter_linear0 = false -scale_type0 = source -scale0 = 1.0 -shader1 = shaders/color/gbMicro-color.slang -filter_linear1 = false -scale_type1 = source -scale1 = 1.0 - -textures = SamplerLUT1;SamplerLUT2 - -SamplerLUT1 = ../reshade/shaders/LUT/64.png -SamplerLUT1_linear = true -SamplerLUT2 = shaders/color/lut/gbamicro-grey.png -SamplerLUT2_linear = true \ No newline at end of file diff --git a/handheld/gba-color.slangp b/handheld/gba-color.slangp deleted file mode 100644 index f713dbe35a..0000000000 --- a/handheld/gba-color.slangp +++ /dev/null @@ -1,17 +0,0 @@ -shaders = 2 - -shader0 = shaders/color/lut/GBA-LUT.slang -filter_linear0 = false -scale_type0 = source -scale0 = 1.0 -shader1 = shaders/color/gba-color.slang -filter_linear1 = false -scale_type1 = source -scale1 = 1.0 - -textures = SamplerLUT1;SamplerLUT2 - -SamplerLUT1 = shaders/color/lut/gba-grey1.png -SamplerLUT1_linear = true -SamplerLUT2 = shaders/color/lut/gba-grey2.png -SamplerLUT2_linear = true \ No newline at end of file diff --git a/handheld/nds-color.slangp b/handheld/nds-color.slangp deleted file mode 100644 index d3f77b781b..0000000000 --- a/handheld/nds-color.slangp +++ /dev/null @@ -1,17 +0,0 @@ -shaders = 2 - -shader0 = ../reshade/shaders/LUT/multiLUT.slang -filter_linear0 = false -scale_type0 = source -scale0 = 1.0 -shader1 = shaders/color/nds-color.slang -filter_linear1 = false -scale_type1 = source -scale1 = 1.0 - -textures = SamplerLUT1;SamplerLUT2 - -SamplerLUT1 = ../reshade/shaders/LUT/64.png -SamplerLUT1_linear = true -SamplerLUT2 = shaders/color/lut/nds-grey.png -SamplerLUT2_linear = true \ No newline at end of file diff --git a/handheld/psp-color.slangp b/handheld/psp-color.slangp deleted file mode 100644 index 574386f772..0000000000 --- a/handheld/psp-color.slangp +++ /dev/null @@ -1,17 +0,0 @@ -shaders = 2 - -shader0 = ../reshade/shaders/LUT/multiLUT.slang -filter_linear0 = false -scale_type0 = source -scale0 = 1.0 -shader1 = shaders/color/psp-color.slang -filter_linear1 = false -scale_type1 = source -scale1 = 1.0 - -textures = SamplerLUT1;SamplerLUT2 - -SamplerLUT1 = shaders/color/lut/psp-grey1.png -SamplerLUT1_linear = true -SamplerLUT2 = shaders/color/lut/psp-grey2.png -SamplerLUT2_linear = true \ No newline at end of file diff --git a/handheld/retro-v2-nds-color.slangp b/handheld/retro-v2-nds-color.slangp deleted file mode 100644 index 134829479c..0000000000 --- a/handheld/retro-v2-nds-color.slangp +++ /dev/null @@ -1,9 +0,0 @@ -shaders = 2 - -shader0 = "shaders/color/nds-color.slang" -filter_linear0 = "false" - -shader1 = "shaders/retro-v2.slang" -filter_linear1 = "false" -scale_type1 = "viewport" - diff --git a/handheld/retro-v3-nds-color.slangp b/handheld/retro-v3-nds-color.slangp deleted file mode 100644 index 777f4f2412..0000000000 --- a/handheld/retro-v3-nds-color.slangp +++ /dev/null @@ -1,9 +0,0 @@ -shaders = 2 - -shader0 = "shaders/color/nds-color.slang" -filter_linear0 = "false" - -shader1 = "shaders/retro-v3.slang" -filter_linear1 = "false" -scale_type1 = "viewport" - diff --git a/handheld/sp101-color.slangp b/handheld/sp101-color.slangp deleted file mode 100644 index 6069073643..0000000000 --- a/handheld/sp101-color.slangp +++ /dev/null @@ -1,17 +0,0 @@ -shaders = 2 - -shader0 = ../reshade/shaders/LUT/multiLUT.slang -filter_linear0 = false -scale_type0 = source -scale0 = 1.0 -shader1 = shaders/color/sp101-color.slang -filter_linear1 = false -scale_type1 = source -scale1 = 1.0 - -textures = SamplerLUT1;SamplerLUT2 - -SamplerLUT1 = ../reshade/shaders/LUT/64.png -SamplerLUT1_linear = true -SamplerLUT2 = shaders/color/lut/sp101-grey.png -SamplerLUT2_linear = true \ No newline at end of file diff --git a/presets/c64-monitor.slangp b/presets/crt-plus-signal/c64-monitor.slangp similarity index 53% rename from presets/c64-monitor.slangp rename to presets/crt-plus-signal/c64-monitor.slangp index 921bc1cf5c..cb6435a2a0 100644 --- a/presets/c64-monitor.slangp +++ b/presets/crt-plus-signal/c64-monitor.slangp @@ -1,26 +1,26 @@ shaders = 5 -shader0 = ../stock.slang +shader0 = ../../stock.slang scale_x0 = "640.0" scale_type_x0 = absolute alias0 = artifact_colors_refpass -shader1 = ../ntsc/shaders/artifact-colors/artifact-colors0.slang +shader1 = ../../ntsc/shaders/artifact-colors/artifact-colors0.slang scale1 = 1.0 scale_type1 = source filter_linear1 = false alias1 = Pass1 -shader2 = ../ntsc/shaders/artifact-colors/artifact-colors1.slang +shader2 = ../../ntsc/shaders/artifact-colors/artifact-colors1.slang scale2 = 1.0 scale_type2 = source filter_linear2 = false alias2 = Pass2 float_framebuffer2 = true -shader3 = ../ntsc/shaders/artifact-colors/artifact-colors2.slang +shader3 = ../../ntsc/shaders/artifact-colors/artifact-colors2.slang scale3 = 1.0 scale_type3 = source filter_linear3 = false -shader4 = ../crt/shaders/crt-lottes.slang +shader4 = ../../crt/shaders/crt-lottes.slang diff --git a/presets/crt-geom-deluxe-ntsc-adaptive.slangp b/presets/crt-plus-signal/crt-geom-deluxe-ntsc-adaptive.slangp similarity index 63% rename from presets/crt-geom-deluxe-ntsc-adaptive.slangp rename to presets/crt-plus-signal/crt-geom-deluxe-ntsc-adaptive.slangp index deef1547ec..dbdd50be29 100644 --- a/presets/crt-geom-deluxe-ntsc-adaptive.slangp +++ b/presets/crt-plus-signal/crt-geom-deluxe-ntsc-adaptive.slangp @@ -1,33 +1,33 @@ shaders = 7 -shader0 = ../ntsc/shaders/ntsc-adaptive/ntsc-pass1.slang +shader0 = ../../ntsc/shaders/ntsc-adaptive/ntsc-pass1.slang scale_type0 = source scale_x0 = 4.0 filter_linear0 = false scale_y0 = 1.0 float_framebuffer0 = true -shader1 = ../ntsc/shaders/ntsc-adaptive/ntsc-pass2.slang +shader1 = ../../ntsc/shaders/ntsc-adaptive/ntsc-pass2.slang scale_type1 = source scale_x1 = 0.5 scale_y1 = 1.0 filter_linear1 = true -shader2 = ../crt/shaders/geom-deluxe/phosphor_apply.slang +shader2 = ../../crt/shaders/geom-deluxe/phosphor_apply.slang alias2 = internal1 -shader3 = ../crt/shaders/geom-deluxe/phosphor_update.slang +shader3 = ../../crt/shaders/geom-deluxe/phosphor_update.slang alias3 = phosphor -shader4 = ../crt/shaders/geom-deluxe/gaussx.slang +shader4 = ../../crt/shaders/geom-deluxe/gaussx.slang filter_linear4 = true alias4 = internal2 -shader5 = ../crt/shaders/geom-deluxe/gaussy.slang +shader5 = ../../crt/shaders/geom-deluxe/gaussy.slang filter_linear5 = true alias5 = blur_texture -shader6 = ../crt/shaders/geom-deluxe/crt-geom-deluxe.slang +shader6 = ../../crt/shaders/geom-deluxe/crt-geom-deluxe.slang filter_linear6 = true mipmap_input6 = true @@ -44,13 +44,13 @@ cust_artifacting = "2.30" # crt-geom-deluxe textures = "aperture;slot;delta" -delta = ../crt/shaders/geom-deluxe/masks/delta_2_4x1_rgb.png +delta = ../../crt/shaders/geom-deluxe/masks/delta_2_4x1_rgb.png delta_filter_linear = true delta_repeat_mode = repeat -slot = ../crt/shaders/geom-deluxe/masks/slot_2_5x4_bgr.png +slot = ../../crt/shaders/geom-deluxe/masks/slot_2_5x4_bgr.png slot_filter_linear = true slot_repeat_mode = repeat -aperture = ../crt/shaders/geom-deluxe/masks/aperture_2_4_rgb.png +aperture = ../../crt/shaders/geom-deluxe/masks/aperture_2_4_rgb.png aperture_filter_linear = true aperture_repeat_mode = repeat curvature = "0.0" diff --git a/presets/crt-royale-fast-ntsc-composite.slangp b/presets/crt-plus-signal/crt-royale-fast-ntsc-composite.slangp similarity index 71% rename from presets/crt-royale-fast-ntsc-composite.slangp rename to presets/crt-plus-signal/crt-royale-fast-ntsc-composite.slangp index 926884f2f2..14de41aeb5 100644 --- a/presets/crt-royale-fast-ntsc-composite.slangp +++ b/presets/crt-plus-signal/crt-royale-fast-ntsc-composite.slangp @@ -3,9 +3,9 @@ shaders = "12" textures = "mask_grille_texture_small;mask_slot_texture_small;mask_shadow_texture_small" -mask_grille_texture_small = "../crt/shaders/crt-royale/TileableLinearApertureGrille15Wide8And5d5SpacingResizeTo64BGR.png" -mask_slot_texture_small = "../crt/shaders/crt-royale/TileableLinearSlotMaskTall15Wide9And4d5Horizontal9d14VerticalSpacingResizeTo64BGRshifted.png" -mask_shadow_texture_small = "../crt/shaders/crt-royale/TileableLinearShadowMaskEDPResizeTo64.png" +mask_grille_texture_small = "../../crt/shaders/crt-royale/TileableLinearApertureGrille15Wide8And5d5SpacingResizeTo64BGR.png" +mask_slot_texture_small = "../../crt/shaders/crt-royale/TileableLinearSlotMaskTall15Wide9And4d5Horizontal9d14VerticalSpacingResizeTo64BGRshifted.png" +mask_shadow_texture_small = "../../crt/shaders/crt-royale/TileableLinearShadowMaskEDPResizeTo64.png" mask_grille_texture_small_wrap_mode = "repeat" mask_slot_texture_small_wrap_mode = "repeat" mask_shadow_texture_small_wrap_mode = "repeat" @@ -16,10 +16,10 @@ mask_grille_texture_small_mipmap = "false" # Mipmapping causes artifacts with m mask_slot_texture_small_mipmap = "false" # Mipmapping causes artifacts with manually resized masks without tex2Dlod mask_shadow_texture_small_mipmap = "false" # Mipmapping causes artifacts with manually resized masks without tex2Dlod -shader0 = ../stock.slang +shader0 = ../../stock.slang alias0 = PrePass0 -shader1 = ../crt/shaders/guest/advanced/ntsc/ntsc-pass1.slang +shader1 = ../../crt/shaders/guest/advanced/ntsc/ntsc-pass1.slang alias1 = NPass1 scale_type_x1 = source scale_type_y1 = source @@ -28,14 +28,14 @@ scale_y1 = 1.0 float_framebuffer1 = true filter_linear1 = false -shader2 = ../crt/shaders/guest/advanced/ntsc/ntsc-pass2.slang +shader2 = ../../crt/shaders/guest/advanced/ntsc/ntsc-pass2.slang filter_linear2 = true float_framebuffer2 = true scale_type2 = source scale_x2 = 0.5 scale_y2 = 1.0 -shader3 = ../crt/shaders/guest/advanced/ntsc/ntsc-pass3.slang +shader3 = ../../crt/shaders/guest/advanced/ntsc/ntsc-pass3.slang filter_linear3 = true scale_type3 = source scale_x3 = 1.0 @@ -43,7 +43,7 @@ scale_y3 = 1.0 # Linearize the input based on CRT gamma and bob interlaced fields. # (Bobbing ensures we can immediately blur without getting artifacts.) -shader4 = "../crt/shaders/crt-royale/src-fast/crt-royale-first-pass-linearize-crt-gamma-bob-fields.slang" +shader4 = "../../crt/shaders/crt-royale/src-fast/crt-royale-first-pass-linearize-crt-gamma-bob-fields.slang" alias4 = "ORIG_LINEARIZED" filter_linear4 = "false" scale_type4 = "source" @@ -57,7 +57,7 @@ srgb_framebuffer4 = "true" # it reduces our samples from vertical*horizontal to vertical+horizontal. # This has to come right after ORIG_LINEARIZED, because there's no # "original_source" scale_type we can use later. -shader5 = "../crt/shaders/crt-royale/src-fast/crt-royale-scanlines-vertical-interlacing.slang" +shader5 = "../../crt/shaders/crt-royale/src-fast/crt-royale-scanlines-vertical-interlacing.slang" alias5 = "VERTICAL_SCANLINES" filter_linear5 = "true" scale_type_x5 = "source" @@ -67,7 +67,7 @@ scale_y5 = "1.0" srgb_framebuffer5 = "true" -shader6 = "../crt/shaders/crt-royale/src-fast/crt-royale-mask-resize-vertical.slang" +shader6 = "../../crt/shaders/crt-royale/src-fast/crt-royale-mask-resize-vertical.slang" filter_linear6 = "true" scale_type_x6 = "absolute" scale_x6 = "64" @@ -76,7 +76,7 @@ scale_y6 = "0.0625" # Safe for >= 341.333 horizontal triads at viewport size #srgb_framebuffer6 = "false" # mask_texture is already assumed linear # Lanczos-resize the phosphor mask horizontally. scale_x7 = scale_y5. -shader7 = "../crt/shaders/crt-royale/src-fast/crt-royale-mask-resize-horizontal.slang" +shader7 = "../../crt/shaders/crt-royale/src-fast/crt-royale-mask-resize-horizontal.slang" alias7 = "MASK_RESIZE" filter_linear7 = "false" scale_type_x7 = "viewport" @@ -87,7 +87,7 @@ scale_y7 = "1.0" # Resample (misconverged) scanlines horizontally, apply halation, and # apply the phosphor mask. -shader8 = "../crt/shaders/crt-royale/src-fast/crt-royale-scanlines-horizontal-apply-mask.slang" +shader8 = "../../crt/shaders/crt-royale/src-fast/crt-royale-scanlines-horizontal-apply-mask.slang" alias8 = "MASKED_SCANLINES" filter_linear8 = "true" # This could just as easily be nearest neighbor. scale_type8 = "viewport" @@ -95,7 +95,7 @@ scale8 = "1.0" srgb_framebuffer8 = "true" # Compute a brightpass. This will require reading the final mask. -shader9 = "../crt/shaders/crt-royale/src-fast/crt-royale-brightpass.slang" +shader9 = "../../crt/shaders/crt-royale/src-fast/crt-royale-brightpass.slang" alias9 = "BRIGHTPASS" filter_linear9 = "true" # This could just as easily be nearest neighbor. scale_type9 = "viewport" @@ -103,14 +103,14 @@ scale9 = "1.0" srgb_framebuffer9 = "true" # Blur the brightpass vertically -shader10 = "../crt/shaders/crt-royale/src-fast/crt-royale-bloom-vertical.slang" +shader10 = "../../crt/shaders/crt-royale/src-fast/crt-royale-bloom-vertical.slang" filter_linear10 = "true" # This could just as easily be nearest neighbor. scale_type10 = "source" scale10 = "1.0" srgb_framebuffer10 = "true" # Blur the brightpass horizontally and combine it with the dimpass: -shader11 = "../crt/shaders/crt-royale/src-fast/crt-royale-bloom-horizontal-reconstitute.slang" +shader11 = "../../crt/shaders/crt-royale/src-fast/crt-royale-bloom-horizontal-reconstitute.slang" filter_linear11 = "true" scale_type11 = "source" scale11 = "1.0" diff --git a/presets/crt-royale-ntsc-composite.slangp b/presets/crt-plus-signal/crt-royale-ntsc-composite.slangp similarity index 83% rename from presets/crt-royale-ntsc-composite.slangp rename to presets/crt-plus-signal/crt-royale-ntsc-composite.slangp index c7cfde8089..88bea27836 100644 --- a/presets/crt-royale-ntsc-composite.slangp +++ b/presets/crt-plus-signal/crt-royale-ntsc-composite.slangp @@ -19,10 +19,10 @@ shaders = "16" # NTSC Shader Passes -shader0 = ../stock.slang +shader0 = ../../stock.slang alias0 = PrePass0 -shader1 = ../crt/shaders/guest/advanced/ntsc/ntsc-pass1.slang +shader1 = ../../crt/shaders/guest/advanced/ntsc/ntsc-pass1.slang alias1 = NPass1 scale_type_x1 = source scale_type_y1 = source @@ -31,14 +31,14 @@ scale_y1 = 1.0 float_framebuffer1 = true filter_linear1 = false -shader2 = ../crt/shaders/guest/advanced/ntsc/ntsc-pass2.slang +shader2 = ../../crt/shaders/guest/advanced/ntsc/ntsc-pass2.slang filter_linear2 = true float_framebuffer2 = true scale_type2 = source scale_x2 = 0.5 scale_y2 = 1.0 -shader3 = ../crt/shaders/guest/advanced/ntsc/ntsc-pass3.slang +shader3 = ../../crt/shaders/guest/advanced/ntsc/ntsc-pass3.slang filter_linear3 = true scale_type3 = source scale_x3 = 1.0 @@ -49,12 +49,12 @@ scale_y3 = 1.0 # non-mipmapped version and a large mipmapped version. # TODO: Test masks in other directories. textures = "mask_grille_texture_small;mask_grille_texture_large;mask_slot_texture_small;mask_slot_texture_large;mask_shadow_texture_small;mask_shadow_texture_large" -mask_grille_texture_small = "../crt/shaders/crt-royale/TileableLinearApertureGrille15Wide8And5d5SpacingResizeTo64.png" -mask_grille_texture_large = "../crt/shaders/crt-royale/TileableLinearApertureGrille15Wide8And5d5Spacing.png" -mask_slot_texture_small = "../crt/shaders/crt-royale/TileableLinearSlotMaskTall15Wide9And4d5Horizontal9d14VerticalSpacingResizeTo64.png" -mask_slot_texture_large = "../crt/shaders/crt-royale/TileableLinearSlotMaskTall15Wide9And4d5Horizontal9d14VerticalSpacing.png" -mask_shadow_texture_small = "../crt/shaders/crt-royale/TileableLinearShadowMaskEDPResizeTo64.png" -mask_shadow_texture_large = "../crt/shaders/crt-royale/TileableLinearShadowMaskEDP.png" +mask_grille_texture_small = "../../crt/shaders/crt-royale/TileableLinearApertureGrille15Wide8And5d5SpacingResizeTo64.png" +mask_grille_texture_large = "../../crt/shaders/crt-royale/TileableLinearApertureGrille15Wide8And5d5Spacing.png" +mask_slot_texture_small = "../../crt/shaders/crt-royale/TileableLinearSlotMaskTall15Wide9And4d5Horizontal9d14VerticalSpacingResizeTo64.png" +mask_slot_texture_large = "../../crt/shaders/crt-royale/TileableLinearSlotMaskTall15Wide9And4d5Horizontal9d14VerticalSpacing.png" +mask_shadow_texture_small = "../../crt/shaders/crt-royale/TileableLinearShadowMaskEDPResizeTo64.png" +mask_shadow_texture_large = "../../crt/shaders/crt-royale/TileableLinearShadowMaskEDP.png" mask_grille_texture_small_wrap_mode = "repeat" mask_grille_texture_large_wrap_mode = "repeat" mask_slot_texture_small_wrap_mode = "repeat" @@ -77,7 +77,7 @@ mask_shadow_texture_large_mipmap = "true" # Essential for hardware-resized mas # Pass 4: Linearize the input based on CRT gamma and bob interlaced fields. # (Bobbing ensures we can immediately blur without getting artifacts.) -shader4 = "../crt/shaders/crt-royale/src/crt-royale-first-pass-linearize-crt-gamma-bob-fields.slang" +shader4 = "../../crt/shaders/crt-royale/src/crt-royale-first-pass-linearize-crt-gamma-bob-fields.slang" alias4 = "ORIG_LINEARIZED" filter_linear4 = "false" scale_type4 = "source" @@ -90,7 +90,7 @@ srgb_framebuffer4 = "true" # it reduces our samples from vertical*horizontal to vertical+horizontal. # This has to come right after ORIG_LINEARIZED, because there's no # "original_source" scale_type we can use later. -shader5 = "../crt/shaders/crt-royale/src/crt-royale-scanlines-vertical-interlacing.slang" +shader5 = "../../crt/shaders/crt-royale/src/crt-royale-scanlines-vertical-interlacing.slang" alias5 = "VERTICAL_SCANLINES" filter_linear5 = "true" scale_type_x5 = "source" @@ -112,7 +112,7 @@ srgb_framebuffer5 = "true" # may be a good thing for people who like to crank it up). # Note the 4:5 aspect ratio assumes the input has cropped geom_overscan (so it's # *intended* for an ~4:5 aspect ratio). -shader6 = "../crt/shaders/crt-royale/src/crt-royale-bloom-approx.slang" +shader6 = "../../crt/shaders/crt-royale/src/crt-royale-bloom-approx.slang" alias6 = "BLOOM_APPROX" filter_linear6 = "true" scale_type6 = "absolute" @@ -124,7 +124,7 @@ srgb_framebuffer6 = "true" # Base this on BLOOM_APPROX: This blur should be small and fast, and blurring # a constant portion of the screen is probably physically correct if the # viewport resolution is proportional to the simulated CRT size. -shader7 = "../blurs/shaders/royale/blur9fast-vertical.slang" +shader7 = "../../blurs/shaders/royale/blur9fast-vertical.slang" filter_linear7 = "true" scale_type7 = "source" scale7 = "1.0" @@ -132,7 +132,7 @@ srgb_framebuffer7 = "true" # Pass 8: Horizontally blur the input for halation and refractive diffusion. # Note: Using a one-pass 9x9 blur is about 1% slower. -shader8 = "../blurs/shaders/royale/blur9fast-horizontal.slang" +shader8 = "../../blurs/shaders/royale/blur9fast-horizontal.slang" alias8 = "HALATION_BLUR" filter_linear8 = "true" scale_type8 = "source" @@ -172,7 +172,7 @@ srgb_framebuffer8 = "true" # scale_y9 = 4.0/3.0 * 2.0/(341.33335 / 8.0) = 0.0625 # IMPORTANT: The scales MUST be calculated in this way. If you wish to change # geom_max_aspect_ratio, update that constant in user-cgp-constants.h! -shader9 = "../crt/shaders/crt-royale/src/crt-royale-mask-resize-vertical.slang" +shader9 = "../../crt/shaders/crt-royale/src/crt-royale-mask-resize-vertical.slang" filter_linear9 = "true" scale_type_x9 = "absolute" scale_x9 = "64" @@ -182,7 +182,7 @@ scale_y9 = "0.0625" # Safe for >= 341.333 horizontal triads at viewport size # Pass 10: Lanczos-resize the phosphor mask horizontally. scale_x10 = scale_y7. # TODO: Check again if the shaders actually require equal scales. -shader10 = "../crt/shaders/crt-royale/src/crt-royale-mask-resize-horizontal.slang" +shader10 = "../../crt/shaders/crt-royale/src/crt-royale-mask-resize-horizontal.slang" alias10 = "MASK_RESIZE" filter_linear10 = "false" scale_type_x10 = "viewport" @@ -193,7 +193,7 @@ scale_y10 = "1.0" # Pass 11: Resample (misconverged) scanlines horizontally, apply halation, and # apply the phosphor mask. -shader11 = "../crt/shaders/crt-royale/src/crt-royale-scanlines-horizontal-apply-mask.slang" +shader11 = "../../crt/shaders/crt-royale/src/crt-royale-scanlines-horizontal-apply-mask.slang" alias11 = "MASKED_SCANLINES" filter_linear11 = "true" # This could just as easily be nearest neighbor. scale_type11 = "viewport" @@ -202,7 +202,7 @@ scale11 = "1.0" srgb_framebuffer11 = "true" # Pass 12: Compute a brightpass. This will require reading the final mask. -shader12 = "../crt/shaders/crt-royale/src/crt-royale-brightpass.slang" +shader12 = "../../crt/shaders/crt-royale/src/crt-royale-brightpass.slang" alias12 = "BRIGHTPASS" filter_linear12 = "true" # This could just as easily be nearest neighbor. scale_type12 = "viewport" @@ -210,21 +210,21 @@ scale12 = "1.0" srgb_framebuffer12 = "true" # Pass 13: Blur the brightpass vertically -shader13 = "../crt/shaders/crt-royale/src/crt-royale-bloom-vertical.slang" +shader13 = "../../crt/shaders/crt-royale/src/crt-royale-bloom-vertical.slang" filter_linear13 = "true" # This could just as easily be nearest neighbor. scale_type13 = "source" scale13 = "1.0" srgb_framebuffer13 = "true" # Pass 14: Blur the brightpass horizontally and combine it with the dimpass: -shader14 = "../crt/shaders/crt-royale/src/crt-royale-bloom-horizontal-reconstitute.slang" +shader14 = "../../crt/shaders/crt-royale/src/crt-royale-bloom-horizontal-reconstitute.slang" filter_linear14 = "true" scale_type14 = "source" scale14 = "1.0" srgb_framebuffer14 = "true" # Pass 15: Compute curvature/AA: -shader15 = "../crt/shaders/crt-royale/src/crt-royale-geometry-aa-last-pass.slang" +shader15 = "../../crt/shaders/crt-royale/src/crt-royale-geometry-aa-last-pass.slang" filter_linear15 = "true" scale_type15 = "viewport" mipmap_input15 = "true" diff --git a/presets/crt-royale-ntsc-svideo.slangp b/presets/crt-plus-signal/crt-royale-ntsc-svideo.slangp similarity index 83% rename from presets/crt-royale-ntsc-svideo.slangp rename to presets/crt-plus-signal/crt-royale-ntsc-svideo.slangp index 4b28f515df..68bc059844 100644 --- a/presets/crt-royale-ntsc-svideo.slangp +++ b/presets/crt-plus-signal/crt-royale-ntsc-svideo.slangp @@ -19,10 +19,10 @@ shaders = "16" # NTSC Shader Passes -shader0 = ../stock.slang +shader0 = ../../stock.slang alias0 = PrePass0 -shader1 = ../crt/shaders/guest/advanced/ntsc/ntsc-pass1.slang +shader1 = ../../crt/shaders/guest/advanced/ntsc/ntsc-pass1.slang alias1 = NPass1 scale_type_x1 = source scale_type_y1 = source @@ -31,14 +31,14 @@ scale_y1 = 1.0 float_framebuffer1 = true filter_linear1 = false -shader2 = ../crt/shaders/guest/advanced/ntsc/ntsc-pass2.slang +shader2 = ../../crt/shaders/guest/advanced/ntsc/ntsc-pass2.slang filter_linear2 = true float_framebuffer2 = true scale_type2 = source scale_x2 = 0.5 scale_y2 = 1.0 -shader3 = ../crt/shaders/guest/advanced/ntsc/ntsc-pass3.slang +shader3 = ../../crt/shaders/guest/advanced/ntsc/ntsc-pass3.slang filter_linear3 = true scale_type3 = source scale_x3 = 1.0 @@ -49,12 +49,12 @@ scale_y3 = 1.0 # non-mipmapped version and a large mipmapped version. # TODO: Test masks in other directories. textures = "mask_grille_texture_small;mask_grille_texture_large;mask_slot_texture_small;mask_slot_texture_large;mask_shadow_texture_small;mask_shadow_texture_large" -mask_grille_texture_small = "../crt/shaders/crt-royale/TileableLinearApertureGrille15Wide8And5d5SpacingResizeTo64.png" -mask_grille_texture_large = "../crt/shaders/crt-royale/TileableLinearApertureGrille15Wide8And5d5Spacing.png" -mask_slot_texture_small = "../crt/shaders/crt-royale/TileableLinearSlotMaskTall15Wide9And4d5Horizontal9d14VerticalSpacingResizeTo64.png" -mask_slot_texture_large = "../crt/shaders/crt-royale/TileableLinearSlotMaskTall15Wide9And4d5Horizontal9d14VerticalSpacing.png" -mask_shadow_texture_small = "../crt/shaders/crt-royale/TileableLinearShadowMaskEDPResizeTo64.png" -mask_shadow_texture_large = "../crt/shaders/crt-royale/TileableLinearShadowMaskEDP.png" +mask_grille_texture_small = "../../crt/shaders/crt-royale/TileableLinearApertureGrille15Wide8And5d5SpacingResizeTo64.png" +mask_grille_texture_large = "../../crt/shaders/crt-royale/TileableLinearApertureGrille15Wide8And5d5Spacing.png" +mask_slot_texture_small = "../../crt/shaders/crt-royale/TileableLinearSlotMaskTall15Wide9And4d5Horizontal9d14VerticalSpacingResizeTo64.png" +mask_slot_texture_large = "../../crt/shaders/crt-royale/TileableLinearSlotMaskTall15Wide9And4d5Horizontal9d14VerticalSpacing.png" +mask_shadow_texture_small = "../../crt/shaders/crt-royale/TileableLinearShadowMaskEDPResizeTo64.png" +mask_shadow_texture_large = "../../crt/shaders/crt-royale/TileableLinearShadowMaskEDP.png" mask_grille_texture_small_wrap_mode = "repeat" mask_grille_texture_large_wrap_mode = "repeat" mask_slot_texture_small_wrap_mode = "repeat" @@ -77,7 +77,7 @@ mask_shadow_texture_large_mipmap = "true" # Essential for hardware-resized mas # Pass 4: Linearize the input based on CRT gamma and bob interlaced fields. # (Bobbing ensures we can immediately blur without getting artifacts.) -shader4 = "../crt/shaders/crt-royale/src/crt-royale-first-pass-linearize-crt-gamma-bob-fields.slang" +shader4 = "../../crt/shaders/crt-royale/src/crt-royale-first-pass-linearize-crt-gamma-bob-fields.slang" alias4 = "ORIG_LINEARIZED" filter_linear4 = "false" scale_type4 = "source" @@ -90,7 +90,7 @@ srgb_framebuffer4 = "true" # it reduces our samples from vertical*horizontal to vertical+horizontal. # This has to come right after ORIG_LINEARIZED, because there's no # "original_source" scale_type we can use later. -shader5 = "../crt/shaders/crt-royale/src/crt-royale-scanlines-vertical-interlacing.slang" +shader5 = "../../crt/shaders/crt-royale/src/crt-royale-scanlines-vertical-interlacing.slang" alias5 = "VERTICAL_SCANLINES" filter_linear5 = "true" scale_type_x5 = "source" @@ -112,7 +112,7 @@ srgb_framebuffer5 = "true" # may be a good thing for people who like to crank it up). # Note the 4:5 aspect ratio assumes the input has cropped geom_overscan (so it's # *intended* for an ~4:5 aspect ratio). -shader6 = "../crt/shaders/crt-royale/src/crt-royale-bloom-approx.slang" +shader6 = "../../crt/shaders/crt-royale/src/crt-royale-bloom-approx.slang" alias6 = "BLOOM_APPROX" filter_linear6 = "true" scale_type6 = "absolute" @@ -124,7 +124,7 @@ srgb_framebuffer6 = "true" # Base this on BLOOM_APPROX: This blur should be small and fast, and blurring # a constant portion of the screen is probably physically correct if the # viewport resolution is proportional to the simulated CRT size. -shader7 = "../blurs/shaders/royale/blur9fast-vertical.slang" +shader7 = "../../blurs/shaders/royale/blur9fast-vertical.slang" filter_linear7 = "true" scale_type7 = "source" scale7 = "1.0" @@ -132,7 +132,7 @@ srgb_framebuffer7 = "true" # Pass 8: Horizontally blur the input for halation and refractive diffusion. # Note: Using a one-pass 9x9 blur is about 1% slower. -shader8 = "../blurs/shaders/royale/blur9fast-horizontal.slang" +shader8 = "../../blurs/shaders/royale/blur9fast-horizontal.slang" alias8 = "HALATION_BLUR" filter_linear8 = "true" scale_type8 = "source" @@ -172,7 +172,7 @@ srgb_framebuffer8 = "true" # scale_y9 = 4.0/3.0 * 2.0/(341.33335 / 8.0) = 0.0625 # IMPORTANT: The scales MUST be calculated in this way. If you wish to change # geom_max_aspect_ratio, update that constant in user-cgp-constants.h! -shader9 = "../crt/shaders/crt-royale/src/crt-royale-mask-resize-vertical.slang" +shader9 = "../../crt/shaders/crt-royale/src/crt-royale-mask-resize-vertical.slang" filter_linear9 = "true" scale_type_x9 = "absolute" scale_x9 = "64" @@ -182,7 +182,7 @@ scale_y9 = "0.0625" # Safe for >= 341.333 horizontal triads at viewport size # Pass 10: Lanczos-resize the phosphor mask horizontally. scale_x10 = scale_y7. # TODO: Check again if the shaders actually require equal scales. -shader10 = "../crt/shaders/crt-royale/src/crt-royale-mask-resize-horizontal.slang" +shader10 = "../../crt/shaders/crt-royale/src/crt-royale-mask-resize-horizontal.slang" alias10 = "MASK_RESIZE" filter_linear10 = "false" scale_type_x10 = "viewport" @@ -193,7 +193,7 @@ scale_y10 = "1.0" # Pass 11: Resample (misconverged) scanlines horizontally, apply halation, and # apply the phosphor mask. -shader11 = "../crt/shaders/crt-royale/src/crt-royale-scanlines-horizontal-apply-mask.slang" +shader11 = "../../crt/shaders/crt-royale/src/crt-royale-scanlines-horizontal-apply-mask.slang" alias11 = "MASKED_SCANLINES" filter_linear11 = "true" # This could just as easily be nearest neighbor. scale_type11 = "viewport" @@ -202,7 +202,7 @@ scale11 = "1.0" srgb_framebuffer11 = "true" # Pass 12: Compute a brightpass. This will require reading the final mask. -shader12 = "../crt/shaders/crt-royale/src/crt-royale-brightpass.slang" +shader12 = "../../crt/shaders/crt-royale/src/crt-royale-brightpass.slang" alias12 = "BRIGHTPASS" filter_linear12 = "true" # This could just as easily be nearest neighbor. scale_type12 = "viewport" @@ -210,21 +210,21 @@ scale12 = "1.0" srgb_framebuffer12 = "true" # Pass 13: Blur the brightpass vertically -shader13 = "../crt/shaders/crt-royale/src/crt-royale-bloom-vertical.slang" +shader13 = "../../crt/shaders/crt-royale/src/crt-royale-bloom-vertical.slang" filter_linear13 = "true" # This could just as easily be nearest neighbor. scale_type13 = "source" scale13 = "1.0" srgb_framebuffer13 = "true" # Pass 14: Blur the brightpass horizontally and combine it with the dimpass: -shader14 = "../crt/shaders/crt-royale/src/crt-royale-bloom-horizontal-reconstitute.slang" +shader14 = "../../crt/shaders/crt-royale/src/crt-royale-bloom-horizontal-reconstitute.slang" filter_linear14 = "true" scale_type14 = "source" scale14 = "1.0" srgb_framebuffer14 = "true" # Pass 15: Compute curvature/AA: -shader15 = "../crt/shaders/crt-royale/src/crt-royale-geometry-aa-last-pass.slang" +shader15 = "../../crt/shaders/crt-royale/src/crt-royale-geometry-aa-last-pass.slang" filter_linear15 = "true" scale_type15 = "viewport" mipmap_input15 = "true" diff --git a/presets/crt-royale-pal-r57shell.slangp b/presets/crt-plus-signal/crt-royale-pal-r57shell.slangp similarity index 83% rename from presets/crt-royale-pal-r57shell.slangp rename to presets/crt-plus-signal/crt-royale-pal-r57shell.slangp index e53bcb53ce..efebb68dd5 100644 --- a/presets/crt-royale-pal-r57shell.slangp +++ b/presets/crt-plus-signal/crt-royale-pal-r57shell.slangp @@ -18,9 +18,9 @@ shaders = "13" -shader0 = "../pal/shaders/pal-r57shell.slang" +shader0 = "../../pal/shaders/pal-r57shell.slang" -nes_lut = "../pal/resources/nes_lut.png" +nes_lut = "../../pal/resources/nes_lut.png" nes_lut_linear = "false" nes_lut_wrap_mode = "repeat" nes_lut_mipmap = "false" @@ -37,12 +37,12 @@ frame_count_mod0 = 2 # non-mipmapped version and a large mipmapped version. # TODO: Test masks in other directories. textures = "nes_lut;mask_grille_texture_small;mask_grille_texture_large;mask_slot_texture_small;mask_slot_texture_large;mask_shadow_texture_small;mask_shadow_texture_large" -mask_grille_texture_small = "../crt/shaders/crt-royale/TileableLinearApertureGrille15Wide8And5d5SpacingResizeTo64.png" -mask_grille_texture_large = "../crt/shaders/crt-royale/TileableLinearApertureGrille15Wide8And5d5Spacing.png" -mask_slot_texture_small = "../crt/shaders/crt-royale/TileableLinearSlotMaskTall15Wide9And4d5Horizontal9d14VerticalSpacingResizeTo64.png" -mask_slot_texture_large = "../crt/shaders/crt-royale/TileableLinearSlotMaskTall15Wide9And4d5Horizontal9d14VerticalSpacing.png" -mask_shadow_texture_small = "../crt/shaders/crt-royale/TileableLinearShadowMaskEDPResizeTo64.png" -mask_shadow_texture_large = "../crt/shaders/crt-royale/TileableLinearShadowMaskEDP.png" +mask_grille_texture_small = "../../crt/shaders/crt-royale/TileableLinearApertureGrille15Wide8And5d5SpacingResizeTo64.png" +mask_grille_texture_large = "../../crt/shaders/crt-royale/TileableLinearApertureGrille15Wide8And5d5Spacing.png" +mask_slot_texture_small = "../../crt/shaders/crt-royale/TileableLinearSlotMaskTall15Wide9And4d5Horizontal9d14VerticalSpacingResizeTo64.png" +mask_slot_texture_large = "../../crt/shaders/crt-royale/TileableLinearSlotMaskTall15Wide9And4d5Horizontal9d14VerticalSpacing.png" +mask_shadow_texture_small = "../../crt/shaders/crt-royale/TileableLinearShadowMaskEDPResizeTo64.png" +mask_shadow_texture_large = "../../crt/shaders/crt-royale/TileableLinearShadowMaskEDP.png" mask_grille_texture_small_wrap_mode = "repeat" mask_grille_texture_large_wrap_mode = "repeat" mask_slot_texture_small_wrap_mode = "repeat" @@ -65,7 +65,7 @@ mask_shadow_texture_large_mipmap = "true" # Essential for hardware-resized mas # Pass1: Linearize the input based on CRT gamma and bob interlaced fields. # (Bobbing ensures we can immediately blur without getting artifacts.) -shader1 = "../crt/shaders/crt-royale/src/crt-royale-first-pass-linearize-crt-gamma-bob-fields.slang" +shader1 = "../../crt/shaders/crt-royale/src/crt-royale-first-pass-linearize-crt-gamma-bob-fields.slang" alias1 = "ORIG_LINEARIZED" filter_linear1 = "false" scale_type1 = "source" @@ -78,7 +78,7 @@ srgb_framebuffer1 = "true" # it reduces our samples from vertical*horizontal to vertical+horizontal. # This has to come right after ORIG_LINEARIZED, because there's no # "original_source" scale_type we can use later. -shader2 = "../crt/shaders/crt-royale/src/crt-royale-scanlines-vertical-interlacing.slang" +shader2 = "../../crt/shaders/crt-royale/src/crt-royale-scanlines-vertical-interlacing.slang" alias2 = "VERTICAL_SCANLINES" filter_linear2 = "true" scale_type_x2 = "source" @@ -100,7 +100,7 @@ srgb_framebuffer2 = "true" # may be a good thing for people who like to crank it up). # Note the 4:3 aspect ratio assumes the input has cropped geom_overscan (so it's # *intended* for an ~4:3 aspect ratio). -shader3 = "../crt/shaders/crt-royale/src/crt-royale-bloom-approx.slang" +shader3 = "../../crt/shaders/crt-royale/src/crt-royale-bloom-approx.slang" alias3 = "BLOOM_APPROX" filter_linear3 = "true" scale_type3 = "absolute" @@ -112,7 +112,7 @@ srgb_framebuffer3 = "true" # Base this on BLOOM_APPROX: This blur should be small and fast, and blurring # a constant portion of the screen is probably physically correct if the # viewport resolution is proportional to the simulated CRT size. -shader4 = "../blurs/shaders/royale/blur9fast-vertical.slang" +shader4 = "../../blurs/shaders/royale/blur9fast-vertical.slang" filter_linear4 = "true" scale_type4 = "source" scale4 = "1.0" @@ -120,7 +120,7 @@ srgb_framebuffer4 = "true" # Pass5: Horizontally blur the input for halation and refractive diffusion. # Note: Using a one-pass 9x9 blur is about 1% slower. -shader5 = "../blurs/shaders/royale/blur9fast-horizontal.slang" +shader5 = "../../blurs/shaders/royale/blur9fast-horizontal.slang" alias5 = "HALATION_BLUR" filter_linear5 = "true" scale_type5 = "source" @@ -160,7 +160,7 @@ srgb_framebuffer5 = "true" # scale_y6 = 4.0/3.0 * 2.0/(341.33333 / 8.0) = 0.0625 # IMPORTANT: The scales MUST be calculated in this way. If you wish to change # geom_max_aspect_ratio, update that constant in user-cgp-constants.h! -shader6 = "../crt/shaders/crt-royale/src/crt-royale-mask-resize-vertical.slang" +shader6 = "../../crt/shaders/crt-royale/src/crt-royale-mask-resize-vertical.slang" filter_linear6 = "true" scale_type_x6 = "absolute" scale_x6 = "64" @@ -170,7 +170,7 @@ scale_y6 = "0.0625" # Safe for >= 341.333 horizontal triads at viewport size # Pass7: Lanczos-resize the phosphor mask horizontally. scale_x7 = scale_y6. # TODO: Check again if the shaders actually require equal scales. -shader7 = "../crt/shaders/crt-royale/src/crt-royale-mask-resize-horizontal.slang" +shader7 = "../../crt/shaders/crt-royale/src/crt-royale-mask-resize-horizontal.slang" alias7 = "MASK_RESIZE" filter_linear7 = "false" scale_type_x7 = "viewport" @@ -181,7 +181,7 @@ scale_y7 = "1.0" # Pass8: Resample (misconverged) scanlines horizontally, apply halation, and # apply the phosphor mask. -shader8 = "../crt/shaders/crt-royale/src/crt-royale-scanlines-horizontal-apply-mask.slang" +shader8 = "../../crt/shaders/crt-royale/src/crt-royale-scanlines-horizontal-apply-mask.slang" alias8 = "MASKED_SCANLINES" filter_linear8 = "true" # This could just as easily be nearest neighbor. scale_type8 = "viewport" @@ -190,7 +190,7 @@ scale8 = "1.0" srgb_framebuffer8 = "true" # Pass 9: Compute a brightpass. This will require reading the final mask. -shader9 = "../crt/shaders/crt-royale/src/crt-royale-brightpass.slang" +shader9 = "../../crt/shaders/crt-royale/src/crt-royale-brightpass.slang" alias9 = "BRIGHTPASS" filter_linear9 = "true" # This could just as easily be nearest neighbor. scale_type9 = "viewport" @@ -198,21 +198,21 @@ scale9 = "1.0" srgb_framebuffer9 = "true" # Pass 10: Blur the brightpass vertically -shader10 = "../crt/shaders/crt-royale/src/crt-royale-bloom-vertical.slang" +shader10 = "../../crt/shaders/crt-royale/src/crt-royale-bloom-vertical.slang" filter_linear10 = "true" # This could just as easily be nearest neighbor. scale_type10 = "source" scale10 = "1.0" srgb_framebuffer10 = "true" # Pass 11: Blur the brightpass horizontally and combine it with the dimpass: -shader11 = "../crt/shaders/crt-royale/src/crt-royale-bloom-horizontal-reconstitute.slang" +shader11 = "../../crt/shaders/crt-royale/src/crt-royale-bloom-horizontal-reconstitute.slang" filter_linear11 = "true" scale_type11 = "source" scale11 = "1.0" srgb_framebuffer11 = "true" # Pass 12: Compute curvature/AA: -shader12 = "../crt/shaders/crt-royale/src/crt-royale-geometry-aa-last-pass.slang" +shader12 = "../../crt/shaders/crt-royale/src/crt-royale-geometry-aa-last-pass.slang" filter_linear12 = "true" scale_type12 = "viewport" mipmap_input12 = "true" diff --git a/presets/crtglow_gauss_ntsc.slangp b/presets/crt-plus-signal/crtglow_gauss_ntsc.slangp similarity index 62% rename from presets/crtglow_gauss_ntsc.slangp rename to presets/crt-plus-signal/crtglow_gauss_ntsc.slangp index 4bee1cc7b0..9b1568d02d 100644 --- a/presets/crtglow_gauss_ntsc.slangp +++ b/presets/crt-plus-signal/crtglow_gauss_ntsc.slangp @@ -1,6 +1,6 @@ shaders = 8 -shader0 = ../ntsc/shaders/maister/ntsc-pass1-composite-3phase.slang +shader0 = ../../ntsc/shaders/maister/ntsc-pass1-composite-3phase.slang filter_linear0 = false scale_type0 = source scale_x0 = 4.0 @@ -8,14 +8,14 @@ scale_y0 = 1.0 frame_count_mod0 = 2 float_framebuffer0 = true -shader1 = ../ntsc/shaders/maister/ntsc-pass2-3phase-linear.slang +shader1 = ../../ntsc/shaders/maister/ntsc-pass2-3phase-linear.slang scale_type1 = source scale_x1 = 0.5 scale_y1 = 1.0 filter_linear1 = false srgb_framebuffer1 = true -shader2 = ../crt/shaders/glow/gauss_horiz.slang +shader2 = ../../crt/shaders/glow/gauss_horiz.slang filter_linear2 = false scale_type_x2 = viewport scale_type_y2 = source @@ -23,29 +23,29 @@ scale_x2 = 1.0 scale_y2 = 1.0 srgb_framebuffer2 = true -shader3 = ../crt/shaders/glow/gauss_vert.slang +shader3 = ../../crt/shaders/glow/gauss_vert.slang filter_linear3 = false scale_type3 = viewport scale3 = 1.0 srgb_framebuffer3 = true alias3 = "CRTPass" -shader4 = ../crt/shaders/glow/threshold.slang +shader4 = ../../crt/shaders/glow/threshold.slang filter_linear4 = false srgb_framebuffer4 = true -shader5 = ../crt/shaders/glow/blur_horiz.slang +shader5 = ../../crt/shaders/glow/blur_horiz.slang mipmap_input5 = true filter_linear5 = true scale_type5 = source scale5 = 0.25 srgb_framebuffer5 = true -shader6 = ../crt/shaders/glow/blur_vert.slang +shader6 = ../../crt/shaders/glow/blur_vert.slang filter_linear6 = true srgb_framebuffer6 = true -shader7 = ../crt/shaders/glow/resolve.slang +shader7 = ../../crt/shaders/glow/resolve.slang filter_linear7 = true parameters = "quality" diff --git a/presets/my_old_tv.slangp b/presets/crt-plus-signal/my_old_tv.slangp similarity index 93% rename from presets/my_old_tv.slangp rename to presets/crt-plus-signal/my_old_tv.slangp index 11172817ec..313389f419 100644 --- a/presets/my_old_tv.slangp +++ b/presets/crt-plus-signal/my_old_tv.slangp @@ -1,5 +1,5 @@ shaders = "1" -shader0 = "../crt/shaders/crt-consumer.slang" +shader0 = "../../crt/shaders/crt-consumer.slang" filter_linear0 = "true" wrap_mode0 = "clamp_to_border" mipmap_input0 = "false" diff --git a/presets/ntsc-phosphorlut.slangp b/presets/crt-plus-signal/ntsc-phosphorlut.slangp similarity index 55% rename from presets/ntsc-phosphorlut.slangp rename to presets/crt-plus-signal/ntsc-phosphorlut.slangp index 05c23a6031..ecba98270c 100644 --- a/presets/ntsc-phosphorlut.slangp +++ b/presets/crt-plus-signal/ntsc-phosphorlut.slangp @@ -1,9 +1,9 @@ shaders = 9 -shader0 = ../stock.slang +shader0 = ../../stock.slang alias0 = PrePass0 -shader1 = ../crt/shaders/guest/advanced/ntsc/ntsc-pass1.slang +shader1 = ../../crt/shaders/guest/advanced/ntsc/ntsc-pass1.slang alias1 = NPass1 scale_type_x1 = source scale_type_y1 = source @@ -12,41 +12,41 @@ scale_y1 = 1.0 float_framebuffer1 = true filter_linear1 = false -shader2 = ../crt/shaders/guest/advanced/ntsc/ntsc-pass2.slang +shader2 = ../../crt/shaders/guest/advanced/ntsc/ntsc-pass2.slang filter_linear2 = true float_framebuffer2 = true scale_type2 = source scale_x2 = 0.5 scale_y2 = 1.0 -shader3 = ../crt/shaders/guest/advanced/ntsc/ntsc-pass3.slang +shader3 = ../../crt/shaders/guest/advanced/ntsc/ntsc-pass3.slang filter_linear3 = true scale_type3 = source scale_x3 = 1.0 scale_y3 = 1.0 -shader4 = ../crt/shaders/phosphorlut/scanlines-interlace-linearize.slang +shader4 = ../../crt/shaders/phosphorlut/scanlines-interlace-linearize.slang alias4 = firstPass scale4 = 2.0 scale_type4 = source srgb_framebuffer4 = true filter_linear4 = false -shader5 = ../blurs/shaders/royale/blur5fast-vertical.slang +shader5 = ../../blurs/shaders/royale/blur5fast-vertical.slang scale_type5 = source scale5 = 1.0 srgb_framebuffer5 = true filter_linear5 = true alias5 = blurPassV -shader6 = ../blurs/shaders/royale/blur5fast-horizontal.slang +shader6 = ../../blurs/shaders/royale/blur5fast-horizontal.slang alias6 = blurPass filter_linear6 = true scale6 = 1.0 scale_type6 = source srgb_framebuffer6 = true -shader7 = ../crt/shaders/phosphorlut/phosphorlut-pass0.slang +shader7 = ../../crt/shaders/phosphorlut/phosphorlut-pass0.slang alias7 = phosphorPass filter_linear7 = true scale_type7 = source @@ -54,7 +54,7 @@ scale_x7 = 4.0 scale_y7 = 2.0 srgb_framebuffer7 = true -shader8 = ../crt/shaders/phosphorlut/phosphorlut-pass1.slang +shader8 = ../../crt/shaders/phosphorlut/phosphorlut-pass1.slang filter_linear8 = true parameters = "diffusion;PHOSPHOR_SCALE_X" @@ -63,6 +63,6 @@ PHOSPHOR_SCALE_X = 4.0 quality = 1.0 textures = "shadow;aperture;slot" -shadow = ../crt/shaders/phosphorlut/luts/shadowmask.png -aperture = ../crt/shaders/phosphorlut/luts/aperture-grille.png -slot = ../crt/shaders/phosphorlut/luts/slotmask.png +shadow = ../../crt/shaders/phosphorlut/luts/shadowmask.png +aperture = ../../crt/shaders/phosphorlut/luts/aperture-grille.png +slot = ../../crt/shaders/phosphorlut/luts/slotmask.png diff --git a/presets/crt-plus-signal/ntsclut-phosphorlut.slangp b/presets/crt-plus-signal/ntsclut-phosphorlut.slangp new file mode 100644 index 0000000000..efa0ebc854 --- /dev/null +++ b/presets/crt-plus-signal/ntsclut-phosphorlut.slangp @@ -0,0 +1,43 @@ +shaders = 6 + +shader0 = ../../crt/shaders/crtsim/composite.slang +filter_linear0 = false + +shader1 = ../../crt/shaders/phosphorlut/scanlines-interlace-linearize.slang +alias1 = firstPass +scale1 = 2.0 +scale_type1 = source +srgb_framebuffer1 = true +filter_linear1 = false + +shader2 = ../../blurs/shaders/royale/blur5fast-vertical.slang +scale_type2 = source +scale2 = 1.0 +srgb_framebuffer2 = true +filter_linear2 = true +alias2 = blurPassV + +shader3 = ../../blurs/shaders/royale/blur5fast-horizontal.slang +alias3 = blurPass +filter_linear3 = true +scale3 = 1.0 +scale_type3 = source +srgb_framebuffer3 = true + +shader4 = ../../crt/shaders/phosphorlut/phosphorlut-pass0.slang +alias4 = phosphorPass +filter_linear4 = true +scale_type4 = source +scale_x4 = 4.0 +scale_y4 = 2.0 +srgb_framebuffer4 = true + +shader5 = ../../crt/shaders/phosphorlut/phosphorlut-pass1.slang +filter_linear5 = true + +textures = "NTSCArtifactSampler;shadow;aperture;slot" +NTSCArtifactSampler = "../../crt/shaders/crtsim/artifacts.png" +NTSCArtifactSampler_linear = true +shadow = ../../crt/shaders/phosphorlut/luts/shadowmask.png +aperture = ../../crt/shaders/phosphorlut/luts/aperture-grille.png +slot = ../../crt/shaders/phosphorlut/luts/slotmask.png diff --git a/handheld/agb001-gba-color-motionblur.slangp b/presets/handheld-plus-color-mod/agb001-gba-color-motionblur.slangp similarity index 51% rename from handheld/agb001-gba-color-motionblur.slangp rename to presets/handheld-plus-color-mod/agb001-gba-color-motionblur.slangp index 5079c570d6..103d378421 100644 --- a/handheld/agb001-gba-color-motionblur.slangp +++ b/presets/handheld-plus-color-mod/agb001-gba-color-motionblur.slangp @@ -1,15 +1,15 @@ shaders = 3 -shader0 = ../motionblur/shaders/response-time.slang +shader0 = ../../motionblur/shaders/response-time.slang filter_linear0 = false scale_type0 = source scale0 = 1.0 -shader1 = shaders/mgba/agb001.slang +shader1 = ../../handheld/shaders/mgba/agb001.slang filter_linear1 = false scale_type1 = source scale1 = 4.0 -shader2 = shaders/color/gba-color.slang +shader2 = ../../handheld/shaders/color/gba-color.slang filter_linear2 = true scale_type2 = viewport diff --git a/handheld/ags001-gba-color-motionblur.slangp b/presets/handheld-plus-color-mod/ags001-gba-color-motionblur.slangp similarity index 51% rename from handheld/ags001-gba-color-motionblur.slangp rename to presets/handheld-plus-color-mod/ags001-gba-color-motionblur.slangp index ca011d35e6..1028991a82 100644 --- a/handheld/ags001-gba-color-motionblur.slangp +++ b/presets/handheld-plus-color-mod/ags001-gba-color-motionblur.slangp @@ -1,20 +1,20 @@ shaders = 4 -shader0 = ../motionblur/shaders/response-time.slang +shader0 = ../../motionblur/shaders/response-time.slang filter_linear0 = false scale_type0 = source scale0 = 1.0 -shader1 = shaders/mgba/ags001.slang +shader1 = ../../handheld/shaders/mgba/ags001.slang filter_linear1 = false scale_type1 = source scale1 = 4.0 -shader2 = shaders/color/gba-color.slang +shader2 = ../../handheld/shaders/color/gba-color.slang filter_linear2 = false scale_type2 = source scale2 = 1.0 -shader3 = shaders/mgba/ags001-light.slang +shader3 = ../../handheld/shaders/mgba/ags001-light.slang filter_linear3 = true scale_type3 = viewport diff --git a/presets/handheld-plus-color-mod/bandlimit-pixel-gba-color.slangp b/presets/handheld-plus-color-mod/bandlimit-pixel-gba-color.slangp new file mode 100644 index 0000000000..4e8fa53d3a --- /dev/null +++ b/presets/handheld-plus-color-mod/bandlimit-pixel-gba-color.slangp @@ -0,0 +1,11 @@ +shaders = 3 +shader0 = ../../handheld/shaders/color/gba-color.slang +shader1 = ../../linear/linearize.slang +shader2 = ../../pixel-art-scaling/shaders/bandlimit-pixel.slang + +filter_linear1 = false +scale_type1 = source +scale1 = 1.0 +srgb_framebuffer1 = true + +filter_linear2 = true diff --git a/handheld/lcd-grid-v2-dslite-color-motionblur.slangp b/presets/handheld-plus-color-mod/lcd-grid-v2-dslite-color-motionblur.slangp similarity index 63% rename from handheld/lcd-grid-v2-dslite-color-motionblur.slangp rename to presets/handheld-plus-color-mod/lcd-grid-v2-dslite-color-motionblur.slangp index 81e126fced..7d5c9a51e4 100644 --- a/handheld/lcd-grid-v2-dslite-color-motionblur.slangp +++ b/presets/handheld-plus-color-mod/lcd-grid-v2-dslite-color-motionblur.slangp @@ -1,30 +1,30 @@ shaders = "4" -shader0 = "../motionblur/shaders/response-time.slang" +shader0 = "../../motionblur/shaders/response-time.slang" filter_linear0 = "false" scale_type0 = "source" scale0 = "1.0" -shader1 = "../reshade/shaders/LUT/multiLUT.slang" +shader1 = "../../reshade/shaders/LUT/multiLUT.slang" filter_linear1 = false scale_type1 = source scale1 = 1.0 -shader2 = "shaders/lcd-cgwg/lcd-grid-v2.slang" +shader2 = "../../handheld/shaders/lcd-cgwg/lcd-grid-v2.slang" filter_linear2 = "false" scale_type2 = "viewport" scale2 = "1.0" -shader3 = "shaders/color/dslite-color.slang" +shader3 = "../../handheld/shaders/color/dslite-color.slang" filter_linear3 = "false" scale_type3 = "source" scale3 = "1.0" textures = SamplerLUT1;SamplerLUT2 response_time = "0.333" -SamplerLUT1 = ../reshade/shaders/LUT/64.png +SamplerLUT1 = ../../reshade/shaders/LUT/64.png SamplerLUT1_linear = true -SamplerLUT2 = shaders/color/lut/dslite-grey.png +SamplerLUT2 = ../../handheld/shaders/color/lut/dslite-grey.png SamplerLUT2_linear = true RSUBPIX_R = "1" RSUBPIX_G = "0" diff --git a/handheld/lcd-grid-v2-dslite-color.slangp b/presets/handheld-plus-color-mod/lcd-grid-v2-dslite-color.slangp similarity index 61% rename from handheld/lcd-grid-v2-dslite-color.slangp rename to presets/handheld-plus-color-mod/lcd-grid-v2-dslite-color.slangp index 4e9484444e..5d63ae81ad 100644 --- a/handheld/lcd-grid-v2-dslite-color.slangp +++ b/presets/handheld-plus-color-mod/lcd-grid-v2-dslite-color.slangp @@ -1,24 +1,24 @@ shaders = "3" -shader0 = ../reshade/shaders/LUT/multiLUT.slang +shader0 = ../../reshade/shaders/LUT/multiLUT.slang filter_linear0 = false scale_type0 = source scale0 = 1.0 -shader1 = "shaders/lcd-cgwg/lcd-grid-v2.slang" +shader1 = "../../handheld/shaders/lcd-cgwg/lcd-grid-v2.slang" filter_linear1 = "false" scale_type1 = "viewport" scale1 = "1.0" -shader2 = "shaders/color/dslite-color.slang" +shader2 = "../../handheld/shaders/color/dslite-color.slang" filter_linear2 = "false" scale_type2 = "source" scale2 = "1.0" textures = SamplerLUT1;SamplerLUT2 -SamplerLUT1 = ../reshade/shaders/LUT/64.png +SamplerLUT1 = ../../reshade/shaders/LUT/64.png SamplerLUT1_linear = true -SamplerLUT2 = shaders/color/lut/dslite-grey.png +SamplerLUT2 = ../../handheld/shaders/color/lut/dslite-grey.png SamplerLUT2_linear = true RSUBPIX_R = "1" RSUBPIX_G = "0" diff --git a/handheld/lcd-grid-v2-gbMicro-color-motionblur.slangp b/presets/handheld-plus-color-mod/lcd-grid-v2-gbMicro-color-motionblur.slangp similarity index 62% rename from handheld/lcd-grid-v2-gbMicro-color-motionblur.slangp rename to presets/handheld-plus-color-mod/lcd-grid-v2-gbMicro-color-motionblur.slangp index cf6311fbd8..845a761455 100644 --- a/handheld/lcd-grid-v2-gbMicro-color-motionblur.slangp +++ b/presets/handheld-plus-color-mod/lcd-grid-v2-gbMicro-color-motionblur.slangp @@ -1,30 +1,30 @@ shaders = "4" -shader0 = "../motionblur/shaders/response-time.slang" +shader0 = "../../motionblur/shaders/response-time.slang" filter_linear0 = "false" scale_type0 = "source" scale0 = "1.0" -shader1 = shaders/color/lut/GBM-LUT.slang +shader1 = ../../handheld/shaders/color/lut/GBM-LUT.slang filter_linear1 = false scale_type1 = source scale1 = 1.0 -shader2 = "shaders/lcd-cgwg/lcd-grid-v2.slang" +shader2 = "../../handheld/shaders/lcd-cgwg/lcd-grid-v2.slang" filter_linear2 = "false" scale_type2 = "viewport" scale2 = "1.0" -shader3 = "shaders/color/gbMicro-color.slang" +shader3 = "../../handheld/shaders/color/gbMicro-color.slang" filter_linear3 = "false" scale_type3 = "source" scale3 = "1.0" textures = SamplerLUT1;SamplerLUT2 response_time = "0.333" -SamplerLUT1 = ../reshade/shaders/LUT/64.png +SamplerLUT1 = ../../reshade/shaders/LUT/64.png SamplerLUT1_linear = true -SamplerLUT2 = shaders/color/lut/gbamicro-grey.png +SamplerLUT2 = ../../handheld/shaders/color/lut/gbamicro-grey.png SamplerLUT2_linear = true RSUBPIX_R = "1" RSUBPIX_G = "0" diff --git a/handheld/lcd-grid-v2-gbMicro-color.slangp b/presets/handheld-plus-color-mod/lcd-grid-v2-gbMicro-color.slangp similarity index 60% rename from handheld/lcd-grid-v2-gbMicro-color.slangp rename to presets/handheld-plus-color-mod/lcd-grid-v2-gbMicro-color.slangp index 45658eb253..e3565c7e50 100644 --- a/handheld/lcd-grid-v2-gbMicro-color.slangp +++ b/presets/handheld-plus-color-mod/lcd-grid-v2-gbMicro-color.slangp @@ -1,24 +1,24 @@ shaders = "3" -shader0 = shaders/color/lut/GBM-LUT.slang +shader0 = ../../handheld/shaders/color/lut/GBM-LUT.slang filter_linear0 = false scale_type0 = source scale0 = 1.0 -shader1 = "shaders/lcd-cgwg/lcd-grid-v2.slang" +shader1 = "../../handheld/shaders/lcd-cgwg/lcd-grid-v2.slang" filter_linear1 = "false" scale_type1 = "viewport" scale1 = "1.0" -shader2 = "shaders/color/gbMicro-color.slang" +shader2 = "../../handheld/shaders/color/gbMicro-color.slang" filter_linear2 = "false" scale_type2 = "source" scale2 = "1.0" textures = SamplerLUT1;SamplerLUT2 -SamplerLUT1 = ../reshade/shaders/LUT/64.png +SamplerLUT1 = ../../reshade/shaders/LUT/64.png SamplerLUT1_linear = true -SamplerLUT2 = shaders/color/lut/gbamicro-grey.png +SamplerLUT2 = ../../handheld/shaders/color/lut/gbamicro-grey.png SamplerLUT2_linear = true RSUBPIX_R = "1" RSUBPIX_G = "0" diff --git a/handheld/lcd-grid-v2-gba-color-motionblur.slangp b/presets/handheld-plus-color-mod/lcd-grid-v2-gba-color-motionblur.slangp similarity index 62% rename from handheld/lcd-grid-v2-gba-color-motionblur.slangp rename to presets/handheld-plus-color-mod/lcd-grid-v2-gba-color-motionblur.slangp index ef64a42243..28eceaa162 100644 --- a/handheld/lcd-grid-v2-gba-color-motionblur.slangp +++ b/presets/handheld-plus-color-mod/lcd-grid-v2-gba-color-motionblur.slangp @@ -1,30 +1,30 @@ shaders = "4" -shader0 = "../motionblur/shaders/response-time.slang" +shader0 = "../../motionblur/shaders/response-time.slang" filter_linear0 = "false" scale_type0 = "source" scale0 = "1.0" -shader1 = shaders/color/lut/GBA-LUT.slang +shader1 = ../../handheld/shaders/color/lut/GBA-LUT.slang filter_linear1 = false scale_type1 = source scale1 = 1.0 -shader2 = "shaders/lcd-cgwg/lcd-grid-v2.slang" +shader2 = "../../handheld/shaders/lcd-cgwg/lcd-grid-v2.slang" filter_linear2 = "false" scale_type2 = "viewport" scale2 = "1.0" -shader3 = "shaders/color/gba-color.slang" +shader3 = "../../handheld/shaders/color/gba-color.slang" filter_linear3 = "false" scale_type3 = "source" scale3 = "1.0" textures = SamplerLUT1;SamplerLUT2 response_time = "0.111" -SamplerLUT1 = shaders/color/lut/gba-grey1.png +SamplerLUT1 = ../../handheld/shaders/color/lut/gba-grey1.png SamplerLUT1_linear = true -SamplerLUT2 = shaders/color/lut/gba-grey2.png +SamplerLUT2 = ../../handheld/shaders/color/lut/gba-grey2.png SamplerLUT2_linear = true RSUBPIX_R = "1" RSUBPIX_G = "0" diff --git a/handheld/lcd-grid-v2-gba-color.slangp b/presets/handheld-plus-color-mod/lcd-grid-v2-gba-color.slangp similarity index 59% rename from handheld/lcd-grid-v2-gba-color.slangp rename to presets/handheld-plus-color-mod/lcd-grid-v2-gba-color.slangp index ff76e87804..d98fb3cc03 100644 --- a/handheld/lcd-grid-v2-gba-color.slangp +++ b/presets/handheld-plus-color-mod/lcd-grid-v2-gba-color.slangp @@ -1,24 +1,24 @@ shaders = "3" -shader0 = shaders/color/lut/GBA-LUT.slang +shader0 = ../../handheld/shaders/color/lut/GBA-LUT.slang filter_linear0 = false scale_type0 = source scale0 = 1.0 -shader1 = "shaders/lcd-cgwg/lcd-grid-v2.slang" +shader1 = "../../handheld/shaders/lcd-cgwg/lcd-grid-v2.slang" filter_linear1 = "false" scale_type1 = "viewport" scale1 = "1.0" -shader2 = "shaders/color/gba-color.slang" +shader2 = "../../handheld/shaders/color/gba-color.slang" filter_linear2 = "false" scale_type2 = "source" scale2 = "1.0" textures = SamplerLUT1;SamplerLUT2 -SamplerLUT1 = shaders/color/lut/gba-grey1.png +SamplerLUT1 = ../../handheld/shaders/color/lut/gba-grey1.png SamplerLUT1_linear = true -SamplerLUT2 = shaders/color/lut/gba-grey2.png +SamplerLUT2 = ../../handheld/shaders/color/lut/gba-grey2.png SamplerLUT2_linear = true RSUBPIX_R = "1" RSUBPIX_G = "0" diff --git a/handheld/lcd-grid-v2-gbc-color-motionblur.slangp b/presets/handheld-plus-color-mod/lcd-grid-v2-gbc-color-motionblur.slangp similarity index 63% rename from handheld/lcd-grid-v2-gbc-color-motionblur.slangp rename to presets/handheld-plus-color-mod/lcd-grid-v2-gbc-color-motionblur.slangp index 4ce6106546..94c9f4cfc4 100644 --- a/handheld/lcd-grid-v2-gbc-color-motionblur.slangp +++ b/presets/handheld-plus-color-mod/lcd-grid-v2-gbc-color-motionblur.slangp @@ -1,21 +1,21 @@ shaders = "4" -shader0 = "../motionblur/shaders/response-time.slang" +shader0 = "../../motionblur/shaders/response-time.slang" filter_linear0 = "false" scale_type0 = "source" scale0 = "1.0" -shader1 = shaders/color/lut/GBC-LUT.slang +shader1 = ../../handheld/shaders/color/lut/GBC-LUT.slang filter_linear1 = false scale_type1 = source scale1 = 1.0 -shader2 = "shaders/lcd-cgwg/lcd-grid-v2.slang" +shader2 = "../../handheld/shaders/lcd-cgwg/lcd-grid-v2.slang" filter_linear2 = "false" scale_type2 = "viewport" scale2 = "1.0" -shader3 = "shaders/color/gbc-color.slang" +shader3 = "../../handheld/shaders/color/gbc-color.slang" filter_linear3 = "false" scale_type3 = "source" scale3 = "1.0" @@ -23,9 +23,9 @@ scale3 = "1.0" textures = SamplerLUT1;SamplerLUT2 response_time = "0.111" LUT_selector_param = "2" -SamplerLUT1 = shaders/color/lut/gbc-grey1.png +SamplerLUT1 = ../../handheld/shaders/color/lut/gbc-grey1.png SamplerLUT1_linear = true -SamplerLUT2 = shaders/color/lut/gbc-grey2.png +SamplerLUT2 = ../../handheld/shaders/color/lut/gbc-grey2.png SamplerLUT2_linear = true RSUBPIX_R = "1" RSUBPIX_G = "0" diff --git a/handheld/lcd-grid-v2-gbc-color.slangp b/presets/handheld-plus-color-mod/lcd-grid-v2-gbc-color.slangp similarity index 61% rename from handheld/lcd-grid-v2-gbc-color.slangp rename to presets/handheld-plus-color-mod/lcd-grid-v2-gbc-color.slangp index a37e271ae3..9f4889a85b 100644 --- a/handheld/lcd-grid-v2-gbc-color.slangp +++ b/presets/handheld-plus-color-mod/lcd-grid-v2-gbc-color.slangp @@ -1,25 +1,25 @@ shaders = "3" -shader0 = shaders/color/lut/GBC-LUT.slang +shader0 = ../../handheld/shaders/color/lut/GBC-LUT.slang filter_linear0 = false scale_type0 = source scale0 = 1.0 -shader1 = "shaders/lcd-cgwg/lcd-grid-v2.slang" +shader1 = "../../handheld/shaders/lcd-cgwg/lcd-grid-v2.slang" filter_linear1 = "false" scale_type1 = "viewport" scale1 = "1.0" -shader2 = "shaders/color/gbc-color.slang" +shader2 = "../../handheld/shaders/color/gbc-color.slang" filter_linear2 = "false" scale_type2 = "source" scale2 = "1.0" textures = SamplerLUT1;SamplerLUT2 LUT_selector_param = "2" -SamplerLUT1 = shaders/color/lut/gbc-grey1.png +SamplerLUT1 = ../../handheld/shaders/color/lut/gbc-grey1.png SamplerLUT1_linear = true -SamplerLUT2 = shaders/color/lut/gbc-grey2.png +SamplerLUT2 = ../../handheld/shaders/color/lut/gbc-grey2.png SamplerLUT2_linear = true RSUBPIX_R = "1" RSUBPIX_G = "0" diff --git a/handheld/lcd-grid-v2-nds-color-motionblur.slangp b/presets/handheld-plus-color-mod/lcd-grid-v2-nds-color-motionblur.slangp similarity index 63% rename from handheld/lcd-grid-v2-nds-color-motionblur.slangp rename to presets/handheld-plus-color-mod/lcd-grid-v2-nds-color-motionblur.slangp index cbc87aab99..4fc84276c8 100644 --- a/handheld/lcd-grid-v2-nds-color-motionblur.slangp +++ b/presets/handheld-plus-color-mod/lcd-grid-v2-nds-color-motionblur.slangp @@ -1,30 +1,30 @@ shaders = "4" -shader0 = "../motionblur/shaders/response-time.slang" +shader0 = "../../motionblur/shaders/response-time.slang" filter_linear0 = "false" scale_type0 = "source" scale0 = "1.0" -shader1 = "../reshade/shaders/LUT/multiLUT.slang" +shader1 = "../../reshade/shaders/LUT/multiLUT.slang" filter_linear1 = false scale_type1 = source scale1 = 1.0 -shader2 = "shaders/lcd-cgwg/lcd-grid-v2.slang" +shader2 = "../../handheld/shaders/lcd-cgwg/lcd-grid-v2.slang" filter_linear2 = "false" scale_type2 = "viewport" scale2 = "1.0" -shader3 = "shaders/color/nds-color.slang" +shader3 = "../../handheld/shaders/color/nds-color.slang" filter_linear3 = "false" scale_type3 = "source" scale3 = "1.0" textures = SamplerLUT1;SamplerLUT2 response_time = "0.111" -SamplerLUT1 = ../reshade/shaders/LUT/64.png +SamplerLUT1 = ../../reshade/shaders/LUT/64.png SamplerLUT1_linear = true -SamplerLUT2 = shaders/color/lut/nds-grey.png +SamplerLUT2 = ../../handheld/shaders/color/lut/nds-grey.png SamplerLUT2_linear = true RSUBPIX_R = "1" RSUBPIX_G = "0" diff --git a/handheld/lcd-grid-v2-nds-color.slangp b/presets/handheld-plus-color-mod/lcd-grid-v2-nds-color.slangp similarity index 61% rename from handheld/lcd-grid-v2-nds-color.slangp rename to presets/handheld-plus-color-mod/lcd-grid-v2-nds-color.slangp index 7e283f7b40..6e372d6a1f 100644 --- a/handheld/lcd-grid-v2-nds-color.slangp +++ b/presets/handheld-plus-color-mod/lcd-grid-v2-nds-color.slangp @@ -1,24 +1,24 @@ shaders = "3" -shader0 = ../reshade/shaders/LUT/multiLUT.slang +shader0 = ../../reshade/shaders/LUT/multiLUT.slang filter_linear0 = false scale_type0 = source scale0 = 1.0 -shader1 = "shaders/lcd-cgwg/lcd-grid-v2.slang" +shader1 = "../../handheld/shaders/lcd-cgwg/lcd-grid-v2.slang" filter_linear1 = "false" scale_type1 = "viewport" scale1 = "1.0" -shader2 = "shaders/color/nds-color.slang" +shader2 = "../../handheld/shaders/color/nds-color.slang" filter_linear2 = "false" scale_type2 = "source" scale2 = "1.0" textures = SamplerLUT1;SamplerLUT2 -SamplerLUT1 = ../reshade/shaders/LUT/64.png +SamplerLUT1 = ../../reshade/shaders/LUT/64.png SamplerLUT1_linear = true -SamplerLUT2 = shaders/color/lut/nds-grey.png +SamplerLUT2 = ../../handheld/shaders/color/lut/nds-grey.png SamplerLUT2_linear = true RSUBPIX_R = "1" RSUBPIX_G = "0" diff --git a/handheld/lcd-grid-v2-palm-color-motionblur.slangp b/presets/handheld-plus-color-mod/lcd-grid-v2-palm-color-motionblur.slangp similarity index 70% rename from handheld/lcd-grid-v2-palm-color-motionblur.slangp rename to presets/handheld-plus-color-mod/lcd-grid-v2-palm-color-motionblur.slangp index c2f97befb2..e56f945b66 100644 --- a/handheld/lcd-grid-v2-palm-color-motionblur.slangp +++ b/presets/handheld-plus-color-mod/lcd-grid-v2-palm-color-motionblur.slangp @@ -1,16 +1,16 @@ shaders = "3" -shader0 = "../motionblur/shaders/response-time.slang" +shader0 = "../../motionblur/shaders/response-time.slang" filter_linear0 = "false" scale_type0 = "source" scale0 = "1.0" -shader1 = "shaders/lcd-cgwg/lcd-grid-v2.slang" +shader1 = "../../handheld/shaders/lcd-cgwg/lcd-grid-v2.slang" filter_linear1 = "false" scale_type1 = "viewport" scale1 = "1.0" -shader2 = "shaders/color/palm-color.slang" +shader2 = "../../handheld/shaders/color/palm-color.slang" filter_linear2 = "false" scale_type2 = "source" scale2 = "1.0" diff --git a/handheld/lcd-grid-v2-palm-color.slangp b/presets/handheld-plus-color-mod/lcd-grid-v2-palm-color.slangp similarity index 70% rename from handheld/lcd-grid-v2-palm-color.slangp rename to presets/handheld-plus-color-mod/lcd-grid-v2-palm-color.slangp index 7d50651f59..e24cca15a0 100644 --- a/handheld/lcd-grid-v2-palm-color.slangp +++ b/presets/handheld-plus-color-mod/lcd-grid-v2-palm-color.slangp @@ -1,11 +1,11 @@ shaders = "2" -shader0 = "shaders/lcd-cgwg/lcd-grid-v2.slang" +shader0 = "../../handheld/shaders/lcd-cgwg/lcd-grid-v2.slang" filter_linear0 = "false" scale_type0 = "viewport" scale0 = "1.0" -shader1 = "shaders/color/palm-color.slang" +shader1 = "../../handheld/shaders/color/palm-color.slang" filter_linear1 = "false" scale_type1 = "source" scale1 = "1.0" diff --git a/handheld/lcd-grid-v2-psp-color-motionblur.slangp b/presets/handheld-plus-color-mod/lcd-grid-v2-psp-color-motionblur.slangp similarity index 62% rename from handheld/lcd-grid-v2-psp-color-motionblur.slangp rename to presets/handheld-plus-color-mod/lcd-grid-v2-psp-color-motionblur.slangp index 40ddd09d7e..470b565b15 100644 --- a/handheld/lcd-grid-v2-psp-color-motionblur.slangp +++ b/presets/handheld-plus-color-mod/lcd-grid-v2-psp-color-motionblur.slangp @@ -1,30 +1,30 @@ shaders = "4" -shader0 = "../motionblur/shaders/response-time.slang" +shader0 = "../../motionblur/shaders/response-time.slang" filter_linear0 = "false" scale_type0 = "source" scale0 = "1.0" -shader1 = "../reshade/shaders/LUT/multiLUT.slang" +shader1 = "../../reshade/shaders/LUT/multiLUT.slang" filter_linear1 = false scale_type1 = source scale1 = 1.0 -shader2 = "shaders/lcd-cgwg/lcd-grid-v2.slang" +shader2 = "../../handheld/shaders/lcd-cgwg/lcd-grid-v2.slang" filter_linear2 = "false" scale_type2 = "viewport" scale2 = "1.0" -shader3 = "shaders/color/psp-color.slang" +shader3 = "../../handheld/shaders/color/psp-color.slang" filter_linear3 = "false" scale_type3 = "source" scale3 = "1.0" textures = SamplerLUT1;SamplerLUT2 response_time = "0.333" -SamplerLUT1 = shaders/color/lut/psp-grey1.png +SamplerLUT1 = ../../handheld/shaders/color/lut/psp-grey1.png SamplerLUT1_linear = true -SamplerLUT2 = shaders/color/lut/psp-grey2.png +SamplerLUT2 = ../../handheld/shaders/color/lut/psp-grey2.png SamplerLUT2_linear = true RSUBPIX_R = "1" RSUBPIX_G = "0" diff --git a/handheld/lcd-grid-v2-psp-color.slangp b/presets/handheld-plus-color-mod/lcd-grid-v2-psp-color.slangp similarity index 60% rename from handheld/lcd-grid-v2-psp-color.slangp rename to presets/handheld-plus-color-mod/lcd-grid-v2-psp-color.slangp index 6fb8b4ad34..85643387a2 100644 --- a/handheld/lcd-grid-v2-psp-color.slangp +++ b/presets/handheld-plus-color-mod/lcd-grid-v2-psp-color.slangp @@ -1,24 +1,24 @@ shaders = "3" -shader0 = ../reshade/shaders/LUT/multiLUT.slang +shader0 = ../../reshade/shaders/LUT/multiLUT.slang filter_linear0 = false scale_type0 = source scale0 = 1.0 -shader1 = "shaders/lcd-cgwg/lcd-grid-v2.slang" +shader1 = "../../handheld/shaders/lcd-cgwg/lcd-grid-v2.slang" filter_linear1 = "false" scale_type1 = "viewport" scale1 = "1.0" -shader2 = "shaders/color/psp-color.slang" +shader2 = "../../handheld/shaders/color/psp-color.slang" filter_linear2 = "false" scale_type2 = "source" scale2 = "1.0" textures = SamplerLUT1;SamplerLUT2 -SamplerLUT1 = shaders/color/lut/psp-grey1.png +SamplerLUT1 = ../../handheld/shaders/color/lut/psp-grey1.png SamplerLUT1_linear = true -SamplerLUT2 = shaders/color/lut/psp-grey2.png +SamplerLUT2 = ../../handheld/shaders/color/lut/psp-grey2.png SamplerLUT2_linear = true RSUBPIX_R = "1" RSUBPIX_G = "0" diff --git a/handheld/lcd-grid-v2-sp101-color-motionblur.slangp b/presets/handheld-plus-color-mod/lcd-grid-v2-sp101-color-motionblur.slangp similarity index 63% rename from handheld/lcd-grid-v2-sp101-color-motionblur.slangp rename to presets/handheld-plus-color-mod/lcd-grid-v2-sp101-color-motionblur.slangp index a6c0a12178..f815732bc9 100644 --- a/handheld/lcd-grid-v2-sp101-color-motionblur.slangp +++ b/presets/handheld-plus-color-mod/lcd-grid-v2-sp101-color-motionblur.slangp @@ -1,30 +1,30 @@ shaders = "4" -shader0 = "../motionblur/shaders/response-time.slang" +shader0 = "../../motionblur/shaders/response-time.slang" filter_linear0 = "false" scale_type0 = "source" scale0 = "1.0" -shader1 = "../reshade/shaders/LUT/multiLUT.slang" +shader1 = "../../reshade/shaders/LUT/multiLUT.slang" filter_linear1 = false scale_type1 = source scale1 = 1.0 -shader2 = "shaders/lcd-cgwg/lcd-grid-v2.slang" +shader2 = "../../handheld/shaders/lcd-cgwg/lcd-grid-v2.slang" filter_linear2 = "false" scale_type2 = "viewport" scale2 = "1.0" -shader3 = "shaders/color/sp101-color.slang" +shader3 = "../../handheld/shaders/color/sp101-color.slang" filter_linear3 = "false" scale_type3 = "source" scale3 = "1.0" textures = SamplerLUT1;SamplerLUT2 response_time = "0.333" -SamplerLUT1 = ../reshade/shaders/LUT/64.png +SamplerLUT1 = ../../reshade/shaders/LUT/64.png SamplerLUT1_linear = true -SamplerLUT2 = shaders/color/lut/sp101-grey.png +SamplerLUT2 = ../../handheld/shaders/color/lut/sp101-grey.png SamplerLUT2_linear = true RSUBPIX_R = "1" RSUBPIX_G = "0" diff --git a/handheld/lcd-grid-v2-sp101-color.slangp b/presets/handheld-plus-color-mod/lcd-grid-v2-sp101-color.slangp similarity index 61% rename from handheld/lcd-grid-v2-sp101-color.slangp rename to presets/handheld-plus-color-mod/lcd-grid-v2-sp101-color.slangp index d0ac49f859..362b63704b 100644 --- a/handheld/lcd-grid-v2-sp101-color.slangp +++ b/presets/handheld-plus-color-mod/lcd-grid-v2-sp101-color.slangp @@ -1,24 +1,24 @@ shaders = "3" -shader0 = ../reshade/shaders/LUT/multiLUT.slang +shader0 = ../../reshade/shaders/LUT/multiLUT.slang filter_linear0 = false scale_type0 = source scale0 = 1.0 -shader1 = "shaders/lcd-cgwg/lcd-grid-v2.slang" +shader1 = "../../handheld/shaders/lcd-cgwg/lcd-grid-v2.slang" filter_linear1 = "false" scale_type1 = "viewport" scale1 = "1.0" -shader2 = "shaders/color/sp101-color.slang" +shader2 = "../../handheld/shaders/color/sp101-color.slang" filter_linear2 = "false" scale_type2 = "source" scale2 = "1.0" textures = SamplerLUT1;SamplerLUT2 -SamplerLUT1 = ../reshade/shaders/LUT/64.png +SamplerLUT1 = ../../reshade/shaders/LUT/64.png SamplerLUT1_linear = true -SamplerLUT2 = shaders/color/lut/sp101-grey.png +SamplerLUT2 = ../../handheld/shaders/color/lut/sp101-grey.png SamplerLUT2_linear = true RSUBPIX_R = "1" RSUBPIX_G = "0" diff --git a/handheld/lcd-grid-v2-vba-color-motionblur.slangp b/presets/handheld-plus-color-mod/lcd-grid-v2-vba-color-motionblur.slangp similarity index 70% rename from handheld/lcd-grid-v2-vba-color-motionblur.slangp rename to presets/handheld-plus-color-mod/lcd-grid-v2-vba-color-motionblur.slangp index f7933a1d6a..90884dde99 100644 --- a/handheld/lcd-grid-v2-vba-color-motionblur.slangp +++ b/presets/handheld-plus-color-mod/lcd-grid-v2-vba-color-motionblur.slangp @@ -1,16 +1,16 @@ shaders = "3" -shader0 = "../motionblur/shaders/response-time.slang" +shader0 = "../../motionblur/shaders/response-time.slang" filter_linear0 = "false" scale_type0 = "source" scale0 = "1.0" -shader1 = "shaders/lcd-cgwg/lcd-grid-v2.slang" +shader1 = "../../handheld/shaders/lcd-cgwg/lcd-grid-v2.slang" filter_linear1 = "false" scale_type1 = "viewport" scale1 = "1.0" -shader2 = "shaders/color/vba-color.slang" +shader2 = "../../handheld/shaders/color/vba-color.slang" filter_linear2 = "false" scale_type2 = "source" scale2 = "1.0" @@ -31,4 +31,4 @@ blacklevel = "0" ambient = "0.02" BGR = "0" color_mode = 2 -darken_screen = "0" \ No newline at end of file +darken_screen = "0" diff --git a/handheld/lcd-grid-v2-vba-color.slangp b/presets/handheld-plus-color-mod/lcd-grid-v2-vba-color.slangp similarity index 69% rename from handheld/lcd-grid-v2-vba-color.slangp rename to presets/handheld-plus-color-mod/lcd-grid-v2-vba-color.slangp index 27d07fa1b2..73727aef2c 100644 --- a/handheld/lcd-grid-v2-vba-color.slangp +++ b/presets/handheld-plus-color-mod/lcd-grid-v2-vba-color.slangp @@ -1,11 +1,11 @@ shaders = "2" -shader0 = "shaders/lcd-cgwg/lcd-grid-v2.slang" +shader0 = "../../handheld/shaders/lcd-cgwg/lcd-grid-v2.slang" filter_linear0 = "false" scale_type0 = "viewport" scale0 = "1.0" -shader1 = "shaders/color/vba-color.slang" +shader1 = "../../handheld/shaders/color/vba-color.slang" filter_linear1 = "false" scale_type1 = "source" scale1 = "1.0" @@ -25,4 +25,4 @@ blacklevel = "0" ambient = "0.02" BGR = "0" color_mode = 2 -darken_screen = "0" \ No newline at end of file +darken_screen = "0" diff --git a/presets/retro-v2+gba-color.slangp b/presets/handheld-plus-color-mod/retro-v2+gba-color.slangp similarity index 66% rename from presets/retro-v2+gba-color.slangp rename to presets/handheld-plus-color-mod/retro-v2+gba-color.slangp index 5d11b7b31e..17e302d664 100644 --- a/presets/retro-v2+gba-color.slangp +++ b/presets/handheld-plus-color-mod/retro-v2+gba-color.slangp @@ -1,7 +1,7 @@ shaders = "2" -shader0 = "../handheld/shaders/color/gba-color.slang" -shader1 = "../handheld/shaders/retro-v2.slang" +shader0 = "../../handheld/shaders/color/gba-color.slang" +shader1 = "../../handheld/shaders/retro-v2.slang" filter_linear0 = "false" scale_type0 = "source" diff --git a/presets/retro-v2+gbc-color.slangp b/presets/handheld-plus-color-mod/retro-v2+gbc-color.slangp similarity index 66% rename from presets/retro-v2+gbc-color.slangp rename to presets/handheld-plus-color-mod/retro-v2+gbc-color.slangp index 660bef8f7d..48177c78f3 100644 --- a/presets/retro-v2+gbc-color.slangp +++ b/presets/handheld-plus-color-mod/retro-v2+gbc-color.slangp @@ -1,7 +1,7 @@ shaders = "2" -shader0 = "../handheld/shaders/color/gbc-color.slang" -shader1 = "../handheld/shaders/retro-v2.slang" +shader0 = "../../handheld/shaders/color/gbc-color.slang" +shader1 = "../../handheld/shaders/retro-v2.slang" filter_linear0 = "false" scale_type0 = "source" diff --git a/presets/retro-v2+image-adjustment.slangp b/presets/handheld-plus-color-mod/retro-v2+image-adjustment.slangp similarity index 83% rename from presets/retro-v2+image-adjustment.slangp rename to presets/handheld-plus-color-mod/retro-v2+image-adjustment.slangp index fedc1a685b..16df1a234c 100644 --- a/presets/retro-v2+image-adjustment.slangp +++ b/presets/handheld-plus-color-mod/retro-v2+image-adjustment.slangp @@ -1,7 +1,7 @@ shaders = "2" -shader0 = "../misc/shaders/image-adjustment.slang" -shader1 = "../handheld/shaders/retro-v2.slang" +shader0 = "../../misc/shaders/image-adjustment.slang" +shader1 = "../../handheld/shaders/retro-v2.slang" filter_linear0 = "false" scale_type0 = "source" diff --git a/presets/retro-v2+nds-color.slangp b/presets/handheld-plus-color-mod/retro-v2+nds-color.slangp similarity index 66% rename from presets/retro-v2+nds-color.slangp rename to presets/handheld-plus-color-mod/retro-v2+nds-color.slangp index 0eea58f456..862c6aeca7 100644 --- a/presets/retro-v2+nds-color.slangp +++ b/presets/handheld-plus-color-mod/retro-v2+nds-color.slangp @@ -1,7 +1,7 @@ shaders = "2" -shader0 = "../handheld/shaders/color/nds-color.slang" -shader1 = "../handheld/shaders/retro-v2.slang" +shader0 = "../../handheld/shaders/color/nds-color.slang" +shader1 = "../../handheld/shaders/retro-v2.slang" filter_linear0 = "false" scale_type0 = "source" diff --git a/presets/retro-v2+psp-color.slangp b/presets/handheld-plus-color-mod/retro-v2+psp-color.slangp similarity index 66% rename from presets/retro-v2+psp-color.slangp rename to presets/handheld-plus-color-mod/retro-v2+psp-color.slangp index cb6e7696fb..492dbf8289 100644 --- a/presets/retro-v2+psp-color.slangp +++ b/presets/handheld-plus-color-mod/retro-v2+psp-color.slangp @@ -1,7 +1,7 @@ shaders = "2" -shader0 = "../handheld/shaders/color/psp-color.slang" -shader1 = "../handheld/shaders/retro-v2.slang" +shader0 = "../../handheld/shaders/color/psp-color.slang" +shader1 = "../../handheld/shaders/retro-v2.slang" filter_linear0 = "false" scale_type0 = "source" diff --git a/presets/retro-v2+vba-color.slangp b/presets/handheld-plus-color-mod/retro-v2+vba-color.slangp similarity index 66% rename from presets/retro-v2+vba-color.slangp rename to presets/handheld-plus-color-mod/retro-v2+vba-color.slangp index 2dba193b00..b533ab5ecc 100644 --- a/presets/retro-v2+vba-color.slangp +++ b/presets/handheld-plus-color-mod/retro-v2+vba-color.slangp @@ -1,7 +1,7 @@ shaders = "2" -shader0 = "../handheld/shaders/color/vba-color.slang" -shader1 = "../handheld/shaders/retro-v2.slang" +shader0 = "../../handheld/shaders/color/vba-color.slang" +shader1 = "../../handheld/shaders/retro-v2.slang" filter_linear0 = "false" scale_type0 = "source" diff --git a/presets/handheld-plus-color-mod/retro-v2-nds-color.slangp b/presets/handheld-plus-color-mod/retro-v2-nds-color.slangp new file mode 100644 index 0000000000..796125cdbd --- /dev/null +++ b/presets/handheld-plus-color-mod/retro-v2-nds-color.slangp @@ -0,0 +1,9 @@ +shaders = 2 + +shader0 = "../../handheld/shaders/color/nds-color.slang" +filter_linear0 = "false" + +shader1 = "../../handheld/shaders/retro-v2.slang" +filter_linear1 = "false" +scale_type1 = "viewport" + diff --git a/presets/handheld-plus-color-mod/retro-v3-nds-color.slangp b/presets/handheld-plus-color-mod/retro-v3-nds-color.slangp new file mode 100644 index 0000000000..2b56fea4a3 --- /dev/null +++ b/presets/handheld-plus-color-mod/retro-v3-nds-color.slangp @@ -0,0 +1,9 @@ +shaders = 2 + +shader0 = "../../handheld/shaders/color/nds-color.slang" +filter_linear0 = "false" + +shader1 = "../../handheld/shaders/retro-v3.slang" +filter_linear1 = "false" +scale_type1 = "viewport" + diff --git a/handheld/sameboy-lcd-gbc-color-motionblur.slangp b/presets/handheld-plus-color-mod/sameboy-lcd-gbc-color-motionblur.slangp similarity index 53% rename from handheld/sameboy-lcd-gbc-color-motionblur.slangp rename to presets/handheld-plus-color-mod/sameboy-lcd-gbc-color-motionblur.slangp index 7c75c5eec5..1c61730001 100644 --- a/handheld/sameboy-lcd-gbc-color-motionblur.slangp +++ b/presets/handheld-plus-color-mod/sameboy-lcd-gbc-color-motionblur.slangp @@ -1,29 +1,29 @@ shaders = "4" -shader0 = "../motionblur/shaders/response-time.slang" +shader0 = "../../motionblur/shaders/response-time.slang" filter_linear0 = "false" scale_type0 = "source" scale0 = "1.0" -shader1 = shaders/color/lut/GBC-LUT.slang +shader1 = ../../handheld/shaders/color/lut/GBC-LUT.slang filter_linear1 = false scale_type1 = source scale1 = 1.0 -shader2 = "shaders/sameboy-lcd.slang" +shader2 = "../../handheld/shaders/sameboy-lcd.slang" filter_linear2 = "false" scale_type2 = "viewport" scale2 = "1.0" -shader3 = "shaders/color/gbc-color.slang" +shader3 = "../../handheld/shaders/color/gbc-color.slang" filter_linear3 = "false" scale_type3 = "source" scale3 = "1.0" textures = SamplerLUT1;SamplerLUT2 response_time = "0.111" -SamplerLUT1 = shaders/color/lut/gbc-grey1.png +SamplerLUT1 = ../../handheld/shaders/color/lut/gbc-grey1.png SamplerLUT1_linear = true -SamplerLUT2 = shaders/color/lut/gbc-grey2.png +SamplerLUT2 = ../../handheld/shaders/color/lut/gbc-grey2.png SamplerLUT2_linear = true LUT_selector_param = "2" diff --git a/handheld/simpletex_lcd+gba-color-4k.slangp b/presets/handheld-plus-color-mod/simpletex_lcd+gba-color-4k.slangp similarity index 74% rename from handheld/simpletex_lcd+gba-color-4k.slangp rename to presets/handheld-plus-color-mod/simpletex_lcd+gba-color-4k.slangp index db6371b05c..e807c797e9 100644 --- a/handheld/simpletex_lcd+gba-color-4k.slangp +++ b/presets/handheld-plus-color-mod/simpletex_lcd+gba-color-4k.slangp @@ -1,6 +1,6 @@ shaders = "1" -shader0 = "shaders/simpletex_lcd/simpletex_lcd+gba-color-4k.slang" +shader0 = "../../handheld/shaders/simpletex_lcd/simpletex_lcd+gba-color-4k.slang" filter_linear0 = "true" wrap_mode0 = "clamp_to_border" @@ -11,7 +11,7 @@ srgb_framebuffer0 = "false" scale_type0 = viewport textures = "BACKGROUND" -BACKGROUND = "shaders/simpletex_lcd/png/4k/textured_paper.png" +BACKGROUND = "../../handheld/shaders/simpletex_lcd/png/4k/textured_paper.png" BACKGROUND_linear = false parameters = "GRID_INTENSITY;GRID_WIDTH;GRID_BIAS;DARKEN_GRID;DARKEN_COLOUR;BACKGROUND_INTENSITY" diff --git a/handheld/simpletex_lcd+gba-color.slangp b/presets/handheld-plus-color-mod/simpletex_lcd+gba-color.slangp similarity index 75% rename from handheld/simpletex_lcd+gba-color.slangp rename to presets/handheld-plus-color-mod/simpletex_lcd+gba-color.slangp index ffb81a37c2..c20ab264eb 100644 --- a/handheld/simpletex_lcd+gba-color.slangp +++ b/presets/handheld-plus-color-mod/simpletex_lcd+gba-color.slangp @@ -1,6 +1,6 @@ shaders = "1" -shader0 = "shaders/simpletex_lcd/simpletex_lcd+gba-color.slang" +shader0 = "../../handheld/shaders/simpletex_lcd/simpletex_lcd+gba-color.slang" filter_linear0 = "true" wrap_mode0 = "clamp_to_border" @@ -11,7 +11,7 @@ srgb_framebuffer0 = "false" scale_type0 = viewport textures = "BACKGROUND" -BACKGROUND = "shaders/simpletex_lcd/png/2k/textured_paper.png" +BACKGROUND = "../../handheld/shaders/simpletex_lcd/png/2k/textured_paper.png" BACKGROUND_linear = false parameters = "GRID_INTENSITY;GRID_WIDTH;GRID_BIAS;DARKEN_GRID;DARKEN_COLOUR;BACKGROUND_INTENSITY" diff --git a/handheld/simpletex_lcd+gbc-color-4k.slangp b/presets/handheld-plus-color-mod/simpletex_lcd+gbc-color-4k.slangp similarity index 74% rename from handheld/simpletex_lcd+gbc-color-4k.slangp rename to presets/handheld-plus-color-mod/simpletex_lcd+gbc-color-4k.slangp index dd6133007b..04f6b5f693 100644 --- a/handheld/simpletex_lcd+gbc-color-4k.slangp +++ b/presets/handheld-plus-color-mod/simpletex_lcd+gbc-color-4k.slangp @@ -1,6 +1,6 @@ shaders = "1" -shader0 = "shaders/simpletex_lcd/simpletex_lcd+gbc-color-4k.slang" +shader0 = "../../handheld/shaders/simpletex_lcd/simpletex_lcd+gbc-color-4k.slang" filter_linear0 = "true" wrap_mode0 = "clamp_to_border" @@ -11,7 +11,7 @@ srgb_framebuffer0 = "false" scale_type0 = viewport textures = "BACKGROUND" -BACKGROUND = "shaders/simpletex_lcd/png/4k/textured_paper.png" +BACKGROUND = "../../handheld/shaders/simpletex_lcd/png/4k/textured_paper.png" BACKGROUND_linear = false parameters = "GRID_INTENSITY;GRID_WIDTH;GRID_BIAS;DARKEN_GRID;DARKEN_COLOUR;BACKGROUND_INTENSITY" diff --git a/handheld/simpletex_lcd+gbc-color.slangp b/presets/handheld-plus-color-mod/simpletex_lcd+gbc-color.slangp similarity index 75% rename from handheld/simpletex_lcd+gbc-color.slangp rename to presets/handheld-plus-color-mod/simpletex_lcd+gbc-color.slangp index d55f03b370..3dee1d7e08 100644 --- a/handheld/simpletex_lcd+gbc-color.slangp +++ b/presets/handheld-plus-color-mod/simpletex_lcd+gbc-color.slangp @@ -1,6 +1,6 @@ shaders = "1" -shader0 = "shaders/simpletex_lcd/simpletex_lcd+gbc-color.slang" +shader0 = "../../handheld/shaders/simpletex_lcd/simpletex_lcd+gbc-color.slang" filter_linear0 = "true" wrap_mode0 = "clamp_to_border" @@ -11,7 +11,7 @@ srgb_framebuffer0 = "false" scale_type0 = viewport textures = "BACKGROUND" -BACKGROUND = "shaders/simpletex_lcd/png/2k/textured_paper.png" +BACKGROUND = "../../handheld/shaders/simpletex_lcd/png/2k/textured_paper.png" BACKGROUND_linear = false parameters = "GRID_INTENSITY;GRID_WIDTH;GRID_BIAS;DARKEN_GRID;DARKEN_COLOUR;BACKGROUND_INTENSITY" diff --git a/handheld/simpletex_lcd_720p+gba-color.slangp b/presets/handheld-plus-color-mod/simpletex_lcd_720p+gba-color.slangp similarity index 74% rename from handheld/simpletex_lcd_720p+gba-color.slangp rename to presets/handheld-plus-color-mod/simpletex_lcd_720p+gba-color.slangp index cfe8fb9c70..fc65ee32eb 100644 --- a/handheld/simpletex_lcd_720p+gba-color.slangp +++ b/presets/handheld-plus-color-mod/simpletex_lcd_720p+gba-color.slangp @@ -1,6 +1,6 @@ shaders = "1" -shader0 = "shaders/simpletex_lcd/simpletex_lcd_720p+gba-color.slang" +shader0 = "../../handheld/shaders/simpletex_lcd/simpletex_lcd_720p+gba-color.slang" filter_linear0 = "true" wrap_mode0 = "clamp_to_border" @@ -11,7 +11,7 @@ srgb_framebuffer0 = "false" scale_type0 = viewport textures = "BACKGROUND" -BACKGROUND = "shaders/simpletex_lcd/png/2k/textured_paper.png" +BACKGROUND = "../../handheld/shaders/simpletex_lcd/png/2k/textured_paper.png" BACKGROUND_linear = false parameters = "GRID_INTENSITY;GRID_WIDTH;GRID_BIAS;DARKEN_GRID;DARKEN_COLOUR;BACKGROUND_INTENSITY" diff --git a/handheld/simpletex_lcd_720p+gbc-color.slangp b/presets/handheld-plus-color-mod/simpletex_lcd_720p+gbc-color.slangp similarity index 74% rename from handheld/simpletex_lcd_720p+gbc-color.slangp rename to presets/handheld-plus-color-mod/simpletex_lcd_720p+gbc-color.slangp index 09b5fd88f6..cc0f63b600 100644 --- a/handheld/simpletex_lcd_720p+gbc-color.slangp +++ b/presets/handheld-plus-color-mod/simpletex_lcd_720p+gbc-color.slangp @@ -1,6 +1,6 @@ shaders = "1" -shader0 = "shaders/simpletex_lcd/simpletex_lcd_720p+gbc-color.slang" +shader0 = "../../handheld/shaders/simpletex_lcd/simpletex_lcd_720p+gbc-color.slang" filter_linear0 = "true" wrap_mode0 = "clamp_to_border" @@ -11,7 +11,7 @@ srgb_framebuffer0 = "false" scale_type0 = viewport textures = "BACKGROUND" -BACKGROUND = "shaders/simpletex_lcd/png/2k/textured_paper.png" +BACKGROUND = "../../handheld/shaders/simpletex_lcd/png/2k/textured_paper.png" BACKGROUND_linear = false parameters = "GRID_INTENSITY;GRID_WIDTH;GRID_BIAS;DARKEN_GRID;DARKEN_COLOUR;BACKGROUND_INTENSITY" diff --git a/presets/ntsclut-phosphorlut.slangp b/presets/ntsclut-phosphorlut.slangp deleted file mode 100644 index d787557530..0000000000 --- a/presets/ntsclut-phosphorlut.slangp +++ /dev/null @@ -1,43 +0,0 @@ -shaders = 6 - -shader0 = ../crt/shaders/crtsim/composite.slang -filter_linear0 = false - -shader1 = ../crt/shaders/phosphorlut/scanlines-interlace-linearize.slang -alias1 = firstPass -scale1 = 2.0 -scale_type1 = source -srgb_framebuffer1 = true -filter_linear1 = false - -shader2 = ../blurs/shaders/royale/blur5fast-vertical.slang -scale_type2 = source -scale2 = 1.0 -srgb_framebuffer2 = true -filter_linear2 = true -alias2 = blurPassV - -shader3 = ../blurs/shaders/royale/blur5fast-horizontal.slang -alias3 = blurPass -filter_linear3 = true -scale3 = 1.0 -scale_type3 = source -srgb_framebuffer3 = true - -shader4 = ../crt/shaders/phosphorlut/phosphorlut-pass0.slang -alias4 = phosphorPass -filter_linear4 = true -scale_type4 = source -scale_x4 = 4.0 -scale_y4 = 2.0 -srgb_framebuffer4 = true - -shader5 = ../crt/shaders/phosphorlut/phosphorlut-pass1.slang -filter_linear5 = true - -textures = "NTSCArtifactSampler;shadow;aperture;slot" -NTSCArtifactSampler = "../crt/shaders/crtsim/artifacts.png" -NTSCArtifactSampler_linear = true -shadow = ../crt/shaders/phosphorlut/luts/shadowmask.png -aperture = ../crt/shaders/phosphorlut/luts/aperture-grille.png -slot = ../crt/shaders/phosphorlut/luts/slotmask.png diff --git a/presets/scalefx+rAA+aa-fast.slangp b/presets/scalefx-plus-smoothing/scalefx+rAA+aa-fast.slangp similarity index 56% rename from presets/scalefx+rAA+aa-fast.slangp rename to presets/scalefx-plus-smoothing/scalefx+rAA+aa-fast.slangp index 593ad38ebc..420a7c2dde 100644 --- a/presets/scalefx+rAA+aa-fast.slangp +++ b/presets/scalefx-plus-smoothing/scalefx+rAA+aa-fast.slangp @@ -1,58 +1,58 @@ shaders = 11 -shader0 = ../stock.slang +shader0 = ../../stock.slang alias0 = refpass filter_linear0 = "false" -shader1 = ../edge-smoothing/scalefx/shaders/scalefx-pass0.slang +shader1 = ../../edge-smoothing/scalefx/shaders/scalefx-pass0.slang filter_linear1 = false scale_type1 = source scale1 = 1.0 float_framebuffer1 = true alias1 = scalefx_pass0 -shader2 = ../edge-smoothing/scalefx/shaders/scalefx-pass1.slang +shader2 = ../../edge-smoothing/scalefx/shaders/scalefx-pass1.slang filter_linear2 = false scale_type2 = source scale2 = 1.0 float_framebuffer2 = true -shader3 = ../edge-smoothing/scalefx/shaders/scalefx-pass2.slang +shader3 = ../../edge-smoothing/scalefx/shaders/scalefx-pass2.slang filter_linear3 = false scale_type3 = source scale3 = 1.0 -shader4 = ../edge-smoothing/scalefx/shaders/scalefx-pass3.slang +shader4 = ../../edge-smoothing/scalefx/shaders/scalefx-pass3.slang filter_linear4 = false scale_type4 = source scale4 = 1.0 -shader5 = ../edge-smoothing/scalefx/shaders/scalefx-pass4.slang +shader5 = ../../edge-smoothing/scalefx/shaders/scalefx-pass4.slang filter_linear5 = false scale_type5 = source scale5 = 3.0 -shader6 = ../anti-aliasing/shaders/reverse-aa-post3x/reverse-aa-post3x-pass0.slang +shader6 = ../../anti-aliasing/shaders/reverse-aa-post3x/reverse-aa-post3x-pass0.slang filter_linear6 = false scale_type6 = source scale6 = 1.0 -shader7 = ../anti-aliasing/shaders/reverse-aa-post3x/reverse-aa-post3x-pass1.slang +shader7 = ../../anti-aliasing/shaders/reverse-aa-post3x/reverse-aa-post3x-pass1.slang filter_linear7 = false scale_type7 = source scale7 = 1.0 -shader8 = ../anti-aliasing/shaders/fxaa.slang +shader8 = ../../anti-aliasing/shaders/fxaa.slang filter_linear8 = true scale_type8 = source scale8 = 1.0 -shader9 = ../anti-aliasing/shaders/aa-shader-4.0-level2/aa-shader-4.0-level2-pass2.slang +shader9 = ../../anti-aliasing/shaders/aa-shader-4.0-level2/aa-shader-4.0-level2-pass2.slang filter_linear9 = true scale_type9 = source scale9 = 2.0 -shader10 = ../deblur/shaders/deblur.slang +shader10 = ../../deblur/shaders/deblur.slang filter_linear10 = true scale_type10 = viewport scale10 = 1.0 diff --git a/presets/scalefx+rAA+aa.slangp b/presets/scalefx-plus-smoothing/scalefx+rAA+aa.slangp similarity index 60% rename from presets/scalefx+rAA+aa.slangp rename to presets/scalefx-plus-smoothing/scalefx+rAA+aa.slangp index d5f5e08bfa..3080c6f148 100644 --- a/presets/scalefx+rAA+aa.slangp +++ b/presets/scalefx-plus-smoothing/scalefx+rAA+aa.slangp @@ -1,63 +1,63 @@ shaders = 12 -shader0 = ../stock.slang +shader0 = ../../stock.slang alias0 = refpass filter_linear0 = "false" -shader1 = ../edge-smoothing/scalefx/shaders/scalefx-pass0.slang +shader1 = ../../edge-smoothing/scalefx/shaders/scalefx-pass0.slang filter_linear1 = false scale_type1 = source scale1 = 1.0 float_framebuffer1 = true alias1 = scalefx_pass0 -shader2 = ../edge-smoothing/scalefx/shaders/scalefx-pass1.slang +shader2 = ../../edge-smoothing/scalefx/shaders/scalefx-pass1.slang filter_linear2 = false scale_type2 = source scale2 = 1.0 float_framebuffer2 = true -shader3 = ../edge-smoothing/scalefx/shaders/scalefx-pass2.slang +shader3 = ../../edge-smoothing/scalefx/shaders/scalefx-pass2.slang filter_linear3 = false scale_type3 = source scale3 = 1.0 -shader4 = ../edge-smoothing/scalefx/shaders/scalefx-pass3.slang +shader4 = ../../edge-smoothing/scalefx/shaders/scalefx-pass3.slang filter_linear4 = false scale_type4 = source scale4 = 1.0 -shader5 = ../edge-smoothing/scalefx/shaders/scalefx-pass4.slang +shader5 = ../../edge-smoothing/scalefx/shaders/scalefx-pass4.slang filter_linear5 = false scale_type5 = source scale5 = 3.0 -shader6 = ../anti-aliasing/shaders/reverse-aa-post3x/reverse-aa-post3x-pass0.slang +shader6 = ../../anti-aliasing/shaders/reverse-aa-post3x/reverse-aa-post3x-pass0.slang filter_linear6 = false scale_type6 = source scale6 = 1.0 -shader7 = ../anti-aliasing/shaders/reverse-aa-post3x/reverse-aa-post3x-pass1.slang +shader7 = ../../anti-aliasing/shaders/reverse-aa-post3x/reverse-aa-post3x-pass1.slang filter_linear7 = false scale_type7 = source scale7 = 1.0 -shader8 = ../anti-aliasing/shaders/fxaa.slang +shader8 = ../../anti-aliasing/shaders/fxaa.slang filter_linear8 = true scale_type8 = source scale8 = 1.0 -shader9 = ../edge-smoothing/xsoft/shaders/4xsoft.slang +shader9 = ../../edge-smoothing/xsoft/shaders/4xsoft.slang filter_linear9 = true scale_type9 = source scale9 = 2.0 -shader10 = ../sharpen/shaders/fast-sharpen.slang +shader10 = ../../sharpen/shaders/fast-sharpen.slang filter_linear10 = true scale_type10 = source scale10 = 1.0 -shader11 = ../deblur/shaders/deblur.slang +shader11 = ../../deblur/shaders/deblur.slang filter_linear11 = true scale_type11 = viewport scale11 = 1.0 diff --git a/presets/scalefx-aa-fast.slangp b/presets/scalefx-plus-smoothing/scalefx-aa-fast.slangp similarity index 59% rename from presets/scalefx-aa-fast.slangp rename to presets/scalefx-plus-smoothing/scalefx-aa-fast.slangp index c10ca9a9b0..07671e02ef 100644 --- a/presets/scalefx-aa-fast.slangp +++ b/presets/scalefx-plus-smoothing/scalefx-aa-fast.slangp @@ -1,48 +1,48 @@ shaders = 9 -shader0 = ../stock.slang +shader0 = ../../stock.slang alias0 = refpass filter_linear0 = "false" -shader1 = ../edge-smoothing/scalefx/shaders/scalefx-pass0.slang +shader1 = ../../edge-smoothing/scalefx/shaders/scalefx-pass0.slang filter_linear1 = false scale_type1 = source scale1 = 1.0 float_framebuffer1 = true alias1 = scalefx_pass0 -shader2 = ../edge-smoothing/scalefx/shaders/scalefx-pass1.slang +shader2 = ../../edge-smoothing/scalefx/shaders/scalefx-pass1.slang filter_linear2 = false scale_type2 = source scale2 = 1.0 float_framebuffer2 = true -shader3 = ../edge-smoothing/scalefx/shaders/scalefx-pass2.slang +shader3 = ../../edge-smoothing/scalefx/shaders/scalefx-pass2.slang filter_linear3 = false scale_type3 = source scale3 = 1.0 -shader4 = ../edge-smoothing/scalefx/shaders/scalefx-pass3.slang +shader4 = ../../edge-smoothing/scalefx/shaders/scalefx-pass3.slang filter_linear4 = false scale_type4 = source scale4 = 1.0 -shader5 = ../edge-smoothing/scalefx/shaders/scalefx-pass4.slang +shader5 = ../../edge-smoothing/scalefx/shaders/scalefx-pass4.slang filter_linear5 = false scale_type5 = source scale5 = 3.0 -shader6 = ../anti-aliasing/shaders/fxaa.slang +shader6 = ../../anti-aliasing/shaders/fxaa.slang filter_linear6 = true scale_type6 = source scale6 = 1.0 -shader7 = ../anti-aliasing/shaders/aa-shader-4.0-level2/aa-shader-4.0-level2-pass2.slang +shader7 = ../../anti-aliasing/shaders/aa-shader-4.0-level2/aa-shader-4.0-level2-pass2.slang filter_linear7 = true scale_type7 = source scale7 = 2.0 -shader8 = ../deblur/shaders/deblur.slang +shader8 = ../../deblur/shaders/deblur.slang filter_linear8 = true scale_type8 = viewport scale8 = 1.0 diff --git a/presets/scalefx-aa.slangp b/presets/scalefx-plus-smoothing/scalefx-aa.slangp similarity index 64% rename from presets/scalefx-aa.slangp rename to presets/scalefx-plus-smoothing/scalefx-aa.slangp index 2e4007ccf1..429329e92c 100644 --- a/presets/scalefx-aa.slangp +++ b/presets/scalefx-plus-smoothing/scalefx-aa.slangp @@ -1,53 +1,53 @@ shaders = 10 -shader0 = ../stock.slang +shader0 = ../../stock.slang alias0 = refpass filter_linear0 = "false" -shader1 = ../edge-smoothing/scalefx/shaders/scalefx-pass0.slang +shader1 = ../../edge-smoothing/scalefx/shaders/scalefx-pass0.slang filter_linear1 = false scale_type1 = source scale1 = 1.0 float_framebuffer1 = true alias1 = scalefx_pass0 -shader2 = ../edge-smoothing/scalefx/shaders/scalefx-pass1.slang +shader2 = ../../edge-smoothing/scalefx/shaders/scalefx-pass1.slang filter_linear2 = false scale_type2 = source scale2 = 1.0 float_framebuffer2 = true -shader3 = ../edge-smoothing/scalefx/shaders/scalefx-pass2.slang +shader3 = ../../edge-smoothing/scalefx/shaders/scalefx-pass2.slang filter_linear3 = false scale_type3 = source scale3 = 1.0 -shader4 = ../edge-smoothing/scalefx/shaders/scalefx-pass3.slang +shader4 = ../../edge-smoothing/scalefx/shaders/scalefx-pass3.slang filter_linear4 = false scale_type4 = source scale4 = 1.0 -shader5 = ../edge-smoothing/scalefx/shaders/scalefx-pass4.slang +shader5 = ../../edge-smoothing/scalefx/shaders/scalefx-pass4.slang filter_linear5 = false scale_type5 = source scale5 = 3.0 -shader6 = ../anti-aliasing/shaders/fxaa.slang +shader6 = ../../anti-aliasing/shaders/fxaa.slang filter_linear6 = true scale_type6 = source scale6 = 1.0 -shader7 = ../edge-smoothing/xsoft/shaders/4xsoft.slang +shader7 = ../../edge-smoothing/xsoft/shaders/4xsoft.slang filter_linear7 = true scale_type7 = source scale7 = 2.0 -shader8 = ../sharpen/shaders/fast-sharpen.slang +shader8 = ../../sharpen/shaders/fast-sharpen.slang filter_linear8 = true scale_type8 = source scale8 = 1.0 -shader9 = ../deblur/shaders/deblur.slang +shader9 = ../../deblur/shaders/deblur.slang filter_linear9 = true scale_type9 = viewport scale9 = 1.0 diff --git a/presets/scalefx9-aa-blur-hazy-ntsc-sh1nra358.slangp b/presets/scalefx-plus-smoothing/scalefx9-aa-blur-hazy-ntsc-sh1nra358.slangp similarity index 53% rename from presets/scalefx9-aa-blur-hazy-ntsc-sh1nra358.slangp rename to presets/scalefx-plus-smoothing/scalefx9-aa-blur-hazy-ntsc-sh1nra358.slangp index 0167e4a236..d0a847eefe 100644 --- a/presets/scalefx9-aa-blur-hazy-ntsc-sh1nra358.slangp +++ b/presets/scalefx-plus-smoothing/scalefx9-aa-blur-hazy-ntsc-sh1nra358.slangp @@ -1,93 +1,93 @@ shaders = 17 -shader0 = ../stock.slang +shader0 = ../../stock.slang alias0 = scalefx_old_refpass -shader1 = ../edge-smoothing/scalefx/shaders/old/scalefx-pass0.slang +shader1 = ../../edge-smoothing/scalefx/shaders/old/scalefx-pass0.slang filter_linear1 = false scale_type1 = source scale1 = 1.0 alias1 = sfxp0 -shader2 = ../edge-smoothing/scalefx/shaders/old/scalefx-pass1.slang +shader2 = ../../edge-smoothing/scalefx/shaders/old/scalefx-pass1.slang filter_linear2 = false scale_type2 = source scale2 = 1.0 alias2 = sfxp1 -shader3 = ../edge-smoothing/scalefx/shaders/old/scalefx-pass2.slang +shader3 = ../../edge-smoothing/scalefx/shaders/old/scalefx-pass2.slang filter_linear3 = false scale_type3 = source scale3 = 1.0 alias3 = sfxp2 -shader4 = ../edge-smoothing/scalefx/shaders/old/scalefx-pass3.slang +shader4 = ../../edge-smoothing/scalefx/shaders/old/scalefx-pass3.slang filter_linear4 = false scale_type4 = source scale4 = 3.0 alias4 = sfxp3 -shader5 = ../edge-smoothing/scalefx/shaders/old/scalefx-pass0.slang +shader5 = ../../edge-smoothing/scalefx/shaders/old/scalefx-pass0.slang filter_linear5 = false scale_type5 = source scale5 = 1.0 alias5 = sfxp4 -shader6 = ../edge-smoothing/scalefx/shaders/old/scalefx-pass1.slang +shader6 = ../../edge-smoothing/scalefx/shaders/old/scalefx-pass1.slang filter_linear6 = false scale_type6 = source scale6 = 1.0 alias6 = sfxp5 -shader7 = ../edge-smoothing/scalefx/shaders/old/scalefx-pass2.slang +shader7 = ../../edge-smoothing/scalefx/shaders/old/scalefx-pass2.slang filter_linear7 = false scale_type7 = source scale7 = 1.0 alias7 = sfxp6 -shader8 = ../edge-smoothing/scalefx/shaders/old/scalefx-pass7.slang +shader8 = ../../edge-smoothing/scalefx/shaders/old/scalefx-pass7.slang filter_linear8 = false scale_type8 = source scale8 = 3.0 alias8 = sfxp7 -shader9 = ../misc/shaders/image-adjustment.slang +shader9 = ../../misc/shaders/image-adjustment.slang filter_linear9 = false scale_type9 = source scale9 = 1.0 -shader10 = ../anti-aliasing/shaders/aa-shader-4.0.slang +shader10 = ../../anti-aliasing/shaders/aa-shader-4.0.slang filter_linear10 = true scale_type10 = viewport scale10 = 1.0 -shader11 = ../reshade/shaders/scanlines.slang +shader11 = ../../reshade/shaders/scanlines.slang filter_linear11 = false scale_type11 = source scale11 = 1.0 alias11 = scanpass -shader12 = ../reshade/shaders/bloom-pass-sh1nra358.slang +shader12 = ../../reshade/shaders/bloom-pass-sh1nra358.slang filter_linear12 = false scale_type12 = source scale12 = 1.0 -shader13 = ../blurs/shaders/blur-gauss-h.slang +shader13 = ../../blurs/shaders/blur-gauss-h.slang filter_linear13 = true scale_type13 = source scale13 = 1.0 -shader14 = ../blurs/shaders/blur-gauss-v.slang +shader14 = ../../blurs/shaders/blur-gauss-v.slang filter_linear14 = true scale_type14 = source scale14 = 1.0 -shader15 = ../reshade/shaders/blur-haze-sh1nra358.slang +shader15 = ../../reshade/shaders/blur-haze-sh1nra358.slang filter_linear15 = true scale_type15 = source scale15 = 1.0 -shader16 = ../misc/shaders/ntsc-colors.slang +shader16 = ../../misc/shaders/ntsc-colors.slang filter_linear16 = false scale_type16 = source scale16 = 1.0 diff --git a/presets/scalefx9-aa-blur-hazy-vibrance-sh1nra358.slangp b/presets/scalefx-plus-smoothing/scalefx9-aa-blur-hazy-vibrance-sh1nra358.slangp similarity index 53% rename from presets/scalefx9-aa-blur-hazy-vibrance-sh1nra358.slangp rename to presets/scalefx-plus-smoothing/scalefx9-aa-blur-hazy-vibrance-sh1nra358.slangp index ae5a2f3ae5..194a581fc2 100644 --- a/presets/scalefx9-aa-blur-hazy-vibrance-sh1nra358.slangp +++ b/presets/scalefx-plus-smoothing/scalefx9-aa-blur-hazy-vibrance-sh1nra358.slangp @@ -1,93 +1,93 @@ shaders = 17 -shader0 = ../stock.slang +shader0 = ../../stock.slang alias0 = scalefx_old_refpass -shader1 = ../edge-smoothing/scalefx/shaders/old/scalefx-pass0.slang +shader1 = ../../edge-smoothing/scalefx/shaders/old/scalefx-pass0.slang filter_linear1 = false scale_type1 = source scale1 = 1.0 alias1 = sfxp0 -shader2 = ../edge-smoothing/scalefx/shaders/old/scalefx-pass1.slang +shader2 = ../../edge-smoothing/scalefx/shaders/old/scalefx-pass1.slang filter_linear2 = false scale_type2 = source scale2 = 1.0 alias2 = sfxp1 -shader3 = ../edge-smoothing/scalefx/shaders/old/scalefx-pass2.slang +shader3 = ../../edge-smoothing/scalefx/shaders/old/scalefx-pass2.slang filter_linear3 = false scale_type3 = source scale3 = 1.0 alias3 = sfxp2 -shader4 = ../edge-smoothing/scalefx/shaders/old/scalefx-pass3.slang +shader4 = ../../edge-smoothing/scalefx/shaders/old/scalefx-pass3.slang filter_linear4 = false scale_type4 = source scale4 = 3.0 alias4 = sfxp3 -shader5 = ../edge-smoothing/scalefx/shaders/old/scalefx-pass0.slang +shader5 = ../../edge-smoothing/scalefx/shaders/old/scalefx-pass0.slang filter_linear5 = false scale_type5 = source scale5 = 1.0 alias5 = sfxp4 -shader6 = ../edge-smoothing/scalefx/shaders/old/scalefx-pass1.slang +shader6 = ../../edge-smoothing/scalefx/shaders/old/scalefx-pass1.slang filter_linear6 = false scale_type6 = source scale6 = 1.0 alias6 = sfxp5 -shader7 = ../edge-smoothing/scalefx/shaders/old/scalefx-pass2.slang +shader7 = ../../edge-smoothing/scalefx/shaders/old/scalefx-pass2.slang filter_linear7 = false scale_type7 = source scale7 = 1.0 alias7 = sfxp6 -shader8 = ../edge-smoothing/scalefx/shaders/old/scalefx-pass7.slang +shader8 = ../../edge-smoothing/scalefx/shaders/old/scalefx-pass7.slang filter_linear8 = false scale_type8 = source scale8 = 3.0 alias8 = sfxp7 -shader9 = ../misc/shaders/image-adjustment.slang +shader9 = ../../misc/shaders/image-adjustment.slang filter_linear9 = false scale_type9 = source scale9 = 1.0 -shader10 = ../anti-aliasing/shaders/aa-shader-4.0.slang +shader10 = ../../anti-aliasing/shaders/aa-shader-4.0.slang filter_linear10 = true scale_type10 = viewport scale10 = 1.0 -shader11 = ../reshade/shaders/scanlines.slang +shader11 = ../../reshade/shaders/scanlines.slang filter_linear11 = false scale_type11 = source scale11 = 1.0 alias11 = scanpass -shader12 = ../reshade/shaders/bloom-pass-sh1nra358.slang +shader12 = ../../reshade/shaders/bloom-pass-sh1nra358.slang filter_linear12 = false scale_type12 = source scale12 = 1.0 -shader13 = ../blurs/shaders/blur-gauss-h.slang +shader13 = ../../blurs/shaders/blur-gauss-h.slang filter_linear13 = true scale_type13 = source scale13 = 1.0 -shader14 = ../blurs/shaders/blur-gauss-v.slang +shader14 = ../../blurs/shaders/blur-gauss-v.slang filter_linear14 = true scale_type14 = source scale14 = 1.0 -shader15 = ../reshade/shaders/blur-haze-sh1nra358.slang +shader15 = ../../reshade/shaders/blur-haze-sh1nra358.slang filter_linear15 = true scale_type15 = source scale15 = 1.0 -shader16 = ../reshade/shaders/vibrance-pass-sh1nra358.slang +shader16 = ../../reshade/shaders/vibrance-pass-sh1nra358.slang filter_linear16 = false scale_type16 = source scale16 = 1.0 diff --git a/presets/xsoft+scalefx-level2aa+sharpsmoother.slangp b/presets/scalefx-plus-smoothing/xsoft+scalefx-level2aa+sharpsmoother.slangp similarity index 57% rename from presets/xsoft+scalefx-level2aa+sharpsmoother.slangp rename to presets/scalefx-plus-smoothing/xsoft+scalefx-level2aa+sharpsmoother.slangp index bacf994864..14cac601b5 100644 --- a/presets/xsoft+scalefx-level2aa+sharpsmoother.slangp +++ b/presets/scalefx-plus-smoothing/xsoft+scalefx-level2aa+sharpsmoother.slangp @@ -1,55 +1,55 @@ shaders = 10 -shader0 = ../interpolation/shaders/jinc2.slang +shader0 = ../../interpolation/shaders/jinc2.slang filter_linear0 = false scale_type0 = source scale0 = 1.0 alias0 = refpass -shader1 = ../edge-smoothing/scalefx/shaders/scalefx-pass0.slang +shader1 = ../../edge-smoothing/scalefx/shaders/scalefx-pass0.slang filter_linear1 = false scale_type1 = source scale1 = 1.0 float_framebuffer1 = true alias1 = scalefx_pass0 -shader2 = ../edge-smoothing/scalefx/shaders/scalefx-pass1.slang +shader2 = ../../edge-smoothing/scalefx/shaders/scalefx-pass1.slang filter_linear2 = false scale_type2 = source scale2 = 1.0 float_framebuffer2 = true -shader3 = ../edge-smoothing/scalefx/shaders/scalefx-pass2.slang +shader3 = ../../edge-smoothing/scalefx/shaders/scalefx-pass2.slang filter_linear3 = false scale_type3 = source scale3 = 1.0 -shader4 = ../edge-smoothing/scalefx/shaders/scalefx-pass3.slang +shader4 = ../../edge-smoothing/scalefx/shaders/scalefx-pass3.slang filter_linear4 = false scale_type4 = source scale4 = 1.0 -shader5 = ../edge-smoothing/scalefx/shaders/scalefx-pass4.slang +shader5 = ../../edge-smoothing/scalefx/shaders/scalefx-pass4.slang filter_linear5 = false scale_type5 = source scale5 = 3.0 -shader6 = ../blurs/shaders/sharpsmoother.slang +shader6 = ../../blurs/shaders/sharpsmoother.slang filter_linear6 = false scale_type6 = source scale6 = 1.0 -shader7 = ../stock.slang +shader7 = ../../stock.slang filter_linear7 = false scale_type7 = source scale7 = 2.0 -shader8 = ../anti-aliasing/shaders/aa-shader-4.0-level2/aa-shader-4.0-level2-pass1.slang +shader8 = ../../anti-aliasing/shaders/aa-shader-4.0-level2/aa-shader-4.0-level2-pass1.slang filter_linear8 = true scale_type8 = source scale8 = 1.0 -shader9 = ../anti-aliasing/shaders/aa-shader-4.0-level2/aa-shader-4.0-level2-pass2.slang +shader9 = ../../anti-aliasing/shaders/aa-shader-4.0-level2/aa-shader-4.0-level2-pass2.slang filter_linear9 = true scale_type9 = source scale9 = 1.0 diff --git a/presets/xsoft+scalefx-level2aa.slangp b/presets/scalefx-plus-smoothing/xsoft+scalefx-level2aa.slangp similarity index 52% rename from presets/xsoft+scalefx-level2aa.slangp rename to presets/scalefx-plus-smoothing/xsoft+scalefx-level2aa.slangp index 3228d5d405..5870364376 100644 --- a/presets/xsoft+scalefx-level2aa.slangp +++ b/presets/scalefx-plus-smoothing/xsoft+scalefx-level2aa.slangp @@ -1,47 +1,47 @@ shaders = 9 -shader0 = ../stock.slang +shader0 = ../../stock.slang alias0 = refpass -shader1 = ../edge-smoothing/scalefx/shaders/scalefx-pass0.slang +shader1 = ../../edge-smoothing/scalefx/shaders/scalefx-pass0.slang filter_linear1 = false scale_type1 = source scale1 = 1.0 float_framebuffer1 = true alias1 = scalefx_pass0 -shader2 = ../edge-smoothing/scalefx/shaders/scalefx-pass1.slang +shader2 = ../../edge-smoothing/scalefx/shaders/scalefx-pass1.slang filter_linear2 = false scale_type2 = source scale2 = 1.0 float_framebuffer2 = true -shader3 = ../edge-smoothing/scalefx/shaders/scalefx-pass2.slang +shader3 = ../../edge-smoothing/scalefx/shaders/scalefx-pass2.slang filter_linear3 = false scale_type3 = source scale3 = 1.0 -shader4 = ../edge-smoothing/scalefx/shaders/scalefx-pass3.slang +shader4 = ../../edge-smoothing/scalefx/shaders/scalefx-pass3.slang filter_linear4 = false scale_type4 = source scale4 = 1.0 -shader5 = ../edge-smoothing/scalefx/shaders/scalefx-pass4.slang +shader5 = ../../edge-smoothing/scalefx/shaders/scalefx-pass4.slang filter_linear5 = false scale_type5 = source scale5 = 3.1 -shader6 = ../stock.slang +shader6 = ../../stock.slang filter_linear6 = false scale_type6 = source scale6 = 2.0 -shader7 = ../anti-aliasing/shaders/aa-shader-4.0-level2/aa-shader-4.0-level2-pass1.slang +shader7 = ../../anti-aliasing/shaders/aa-shader-4.0-level2/aa-shader-4.0-level2-pass1.slang filter_linear7 = true scale_type7 = source scale7 = 1.0 -shader8 = ../anti-aliasing/shaders/aa-shader-4.0-level2/aa-shader-4.0-level2-pass2.slang +shader8 = ../../anti-aliasing/shaders/aa-shader-4.0-level2/aa-shader-4.0-level2-pass2.slang filter_linear8 = true scale_type8 = source scale8 = 1.0 diff --git a/subframe-bfi/crt-beam-simulator.slangp b/subframe-bfi/crt-beam-simulator.slangp new file mode 100644 index 0000000000..aea4c4af80 --- /dev/null +++ b/subframe-bfi/crt-beam-simulator.slangp @@ -0,0 +1,3 @@ +shaders = 1 + +shader0 = shaders/crt-beam-simulator.slang diff --git a/subframe-bfi/edge-blended-240hz-bfi.slangp b/subframe-bfi/edge-blended-240hz-bfi.slangp deleted file mode 100644 index c413bbb4d9..0000000000 --- a/subframe-bfi/edge-blended-240hz-bfi.slangp +++ /dev/null @@ -1,12 +0,0 @@ -shaders = 1 - -shader0 = shaders/edge-blended/edge-blended-240hz-bfi.slang - -textures = "top;bot;midtop;midbot" - -top = shaders/edge-blended/resources/240hzTop.png -top_wrap_mode = mirrored_repeat -bot = shaders/edge-blended/resources/240hzBot.png -bot_wrap_mode = mirrored_repeat -midtop = shaders/edge-blended/resources/240hzMidTop.png -midbot = shaders/edge-blended/resources/240hzMidBot.png diff --git a/subframe-bfi/shaders/crt-beam-simulator.slang b/subframe-bfi/shaders/crt-beam-simulator.slang new file mode 100644 index 0000000000..04f24ff4b8 --- /dev/null +++ b/subframe-bfi/shaders/crt-beam-simulator.slang @@ -0,0 +1,452 @@ +#version 450 + +/*********************************************************************************************************************/ +// +// Blur Busters CRT Beam Simulator BFI +// With Seamless Gamma Correction +// +// From Blur Busters Area 51 Display Science, Research & Engineering +// https://www.blurbusters.com/area51 +// +// The World's First Realtime Blur-Reducing CRT Simulator +// Best for 60fps on 240-480Hz+ Displays, Still Works on 120Hz+ Displays +// Original Version 2022. Publicly Released 2024. +// +// CREDIT: Teamwork of Mark Rejhon @BlurBusters & Timothy Lottes @NOTimothyLottes +// Gamma corrected CRT simulator in a shader using clever formula-by-scanline trick +// (easily can generate LUTs, for other workflows like FPGAs or Javascript) +// - @NOTimothyLottes provided the algorithm for per-pixel BFI (Variable MPRT, higher MPRT for bright pixels) +// - @BlurBusters provided the algorithm for the CRT electron beam (2022, publicly released for first time) +// +// Contact Blur Busters for help integrating this in your product (emulator, fpga, filter, display firmware, video processor) +// +// This new algorithm has multiple breakthroughs: +// +// - Seamless; no banding*! (*Monitor/OS configuration: SDR=on, HDR=off, ABL=off, APL=off, gamma=2.4) +// - Phosphor fadebehind simulation in rolling scan. +// - Works on LCDs and OLEDs. +// - Variable per-pixel MPRT. Spreads brighter pixels over more refresh cycles than dimmer pixels. +// - No image retention on LCDs or OLEDs. +// - No integer divisor requirement. Recommended but not necessary (e.g. 60fps 144Hz works!) +// - Gain adjustment (less motion blur at lower gain values, by trading off brightness) +// - Realtime (for retro & emulator uses) and slo-mo modes (educational) +// - Great for softer 60Hz motion blur reduction, less eyestrain than classic 60Hz BFI/strobe. +// - Algorithm can be ported to shader and/or emulator and/or FPGA and/or display firmware. +// +// For best real time CRT realism: +// +// - Reasonably fast performing GPU (many integrated GPUs are unable to keep up) +// - Fastest GtG pixel response (A settings-modified OLED looks good with this algorithm) +// - As much Hz per CRT Hz! (960Hz better than 480Hz better than 240Hz) +// - Integer divisors are still better (just not mandatory) +// - Brightest SDR display with linear response (no ABL, no APL), as HDR boost adds banding +// (unless you can modify the firmware to make it linear brightness during a rolling scan) +// +// *** IMPORTANT *** +// *** DISPLAY REQUIREMENTS *** +// +// - Best for gaming LCD or OLED monitors with fast pixel response. +// - More Hz per simulated CRT Hz is better (240Hz, 480Hz simulates 60Hz tubes more accurately than 120Hz). +// - OLED (SDR mode) looks better than LCD, but still works on LCD +// - May have minor banding with very slow GtG, asymmetric-GtG (VA LCDs), or excessively-overdriven. +// - Designed for sample & hold displays with excess refresh rate (LCDs and OLEDs); +// Not intended for use with strobed or impulsed displays. Please turn off your displays' BFI/strobing. +// This is because we need 100% software control of the flicker algorithm to simulate a CRT beam. +// +// SDR MODE RECOMMENDED FOR NOW (Due to predictable gamma compensation math) +// +// - Best results occur on display configured to standard SDR gamma curve and ABL/APL disabled to go 100% bandfree +// - Please set your display gamma to 2.2 or 2.4, turn off ABL/APL in display settings, and set your OLED to SDR mode. +// - Will NOT work well with some FALD and MiniLED due to backlight lagbehind effects. +// - Need future API access to OLED ABL/ABL algorithm to compensate for OLED ABL/APL windowing interference with algorithm. +// - This code is heavily commented because of the complexity of the algorithm. +// +/*********************************************************************************************************************/ +// +// MIT License +// +// Copyright 2024 Mark Rejhon (@BlurBusters) & Timothy Lottes (@NOTimothyLottes) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the “Software”), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +// +/*********************************************************************************************************************/ + +layout(push_constant) uniform Push +{ + vec4 SourceSize; + vec4 OriginalSize; + vec4 OutputSize; + uint FrameCount; + uint TotalSubFrames; + uint CurrentSubFrame; + float GAIN_VS_BLUR, GAMMA, FPS_DIVISOR; +} params; + +//------------------ Constants migrated to runtime params --------------------// + + // Brightness-vs-motionblur tradeoff for bright pixel. + // - Defacto simulates fast/slow phosphor. + // - 1.0 is unchanged brightness (same as non-CRT, but no blur reduction for brightest pixels, only for dimmer pixels). + // - 0.5 is half brightness spread over fewer frames (creates lower MPRT persistence for darker pixels). + // - ~0.7 recommended for 240Hz+, ~0.5 recommended for 120Hz due to limited inHz:outHz ratio. +#pragma parameter GAIN_VS_BLUR "Brightness vs Clarity" 0.7 0.01 1.0 0.1 +#define GAIN_VS_BLUR params.GAIN_VS_BLUR + + // Your display's gamma value. Necessary to prevent horizontal-bands artifacts. +#pragma parameter GAMMA "Gamma" 2.4 1.0 5.0 0.01 +#define GAMMA params.GAMMA + + // Reduced frame rate mode + // - This can be helpful to see individual CRT-simulated frames better (educational!) + // - 1.0 is framerate=Hz, 0.5 is framerate being half of Hz, 0.1 is framerate being 10% of real Hz. +#pragma parameter FPS_DIVISOR "FPS Divisor (debug)" 1.0 1.0 10.0 1.0 +#define FPS_DIVISOR (1. / params.FPS_DIVISOR) +//^^ Slow down or speed up the simulation + +//----------------------------------------------------------------------------// + +//-----------------------Shadertoy Compatibility Macros-----------------------// +// We include these definitions to assist other environments (untested) +#define iResolution params.OutputSize.xy // viewport resolution (in pixels) +#define iTime (params.FrameCount / 60.0) // shader playback time (in seconds) +//uniform float iTimeDelta; // render time (in seconds) +#define iFrameRate (params.TotalSubFrames * 60.0) // shader frame rate +#define iFrame (params.FrameCount * params.TotalSubFrames + params.CurrentSubFrame) // shader playback frame +//uniform float iChannelTime[4]; // channel playback time (in seconds) +//uniform vec3 iChannelResolution[4]; // channel resolution (in pixels) +//uniform vec4 iMouse; // mouse pixel coords. xy: current (if MLB down), zw: click +#define iChannel0 Source // input channel 0 +//uniform sampler2D iChannel1; // input channel 1 +//uniform sampler2D iChannel2; // input channel 2 +//uniform sampler2D iChannel3; // input channel 3 +//uniform vec4 iDate; // (year, month, day, time in seconds) +#define fragColor FragColor // output +#define fragCoord (vTexCoord.xy * params.OutputSize.xy) // more consistent than gl_FragCoord +//----------------------------------------------------------------------------// + +layout(std140, set = 0, binding = 0) uniform UBO +{ + mat4 MVP; +} global; + +//------------------------------------------------------------------------------------------------ +// Constants Definitions + +// Play with the documented constants! +// - REALTIME: Use FRAMES_PER_HZ=4 for 240Hz and FRAMES_PER_HZ=8 for 480Hz, to simulate a 60Hz tube in realtime +// - SLOMO: Use crazy large FRAMES_PER_HZ numbers to watch a CRT tube like a slo-motion video. Try FRAMES_PER_HZ=100! +// - FRAMESTEP: Use low frame rates to inspect frames. Try FRAMES_PER_HZ=8 and FPS_DIVISOR=0.02! +// All are floats (keep a .0 for integers) + +#define MOTION_SPEED 10.0 + + // Ratio of native Hz per CRT Hz. More native Hz per CRT Hz simulates CRT better. + // - Use 4.0 for 60fps at 240Hz realtime. + // - Use 2.4 for 60fps at 144Hz realtime. + // - Use 2.75 for 60fps at 165Hz realtime. + // - Use ~100 for super-slo-motion. + // - Best to keep it integer divisor but not essential (works!) +#define FRAMES_PER_HZ params.TotalSubFrames +//^^automating this to work with whatever the user's subframe setting is + + // Splitscreen versus mode for comparing to non-CRT-simulated +#define SPLITSCREEN 0 // 1 to enable splitscreen to compare to non-CRT, 0 to disable splitscreen +#define SPLITSCREEN_X 0.50 // For user to compare; horizontal splitscreen percentage (0=verticals off, 0.5=left half, 1=full sim). +#define SPLITSCREEN_Y 0.00 // For user to compare; vertical splitscreen percentage (0=horizontal off, 0.5=bottom half, 1=full sim). +#define SPLITSCREEN_BORDER_PX 2 // Splitscreen border thickness in pixels +#define SPLITSCREEN_MATCH_BRIGHTNESS 1 // 1 to match brightness of CRT, 0 for original brightness of original frame + + // LCD SAVER SYSTEM + // - Prevents image retention from BFI interfering with LCD voltage polarity inversion algorithm + // - When LCD_ANTI_RETENTION is enabled: + // - Automatically prevents FRAMES_PER_HZ from remaining an even integer by conditionally adding a slew float. + // - FRAMES_PER_HZ 2 becomes 2.001, 4 becomes 4.001, and 6 becomes 6.001, etc. + // - Scientific Reason: https://forums.blurbusters.com/viewtopic.php?t=7539 BFI interaction with LCD voltage polarity inversion + // - Known Side effect: You've decoupled the CRT simulators' own VSYNC from the real displays' VSYNC. But magically, there's no tearing artifacts :-) + // - Not needed for OLEDs, safe to turn off, but should be ON by default to be foolproof. +#define LCD_ANTI_RETENTION true +#define LCD_INVERSION_COMPENSATION_SLEW 0.001 + + // CRT SCAN DIRECTION. Can be useful to counteract an OS rotation of your display + // - 1 default (top to bottom), recommended + // - 2 reverse (bottom to top) + // - 3 portrait (left to right) + // - 4 reverse portrait (right to left) +#define SCAN_DIRECTION 2 +//^^ compensate for RetroArch's weird approach to origin by reversing the scan + +//------------------------------------------------------------------------------------------------- +// Utility Macros + +#define clampPixel(a) clamp(a, vec3(0.0), vec3(1.0)) + +// Selection Function: Returns 'b' if 'p' is true, else 'a'. +float SelF1(float a, float b, bool p) { return p ? b : a; } + +#define IS_INTEGER(x) (floor(x) == x) +#define IS_EVEN_INTEGER(x) (IS_INTEGER(x) && IS_INTEGER(x/2.0)) + +// LCD SAVER (prevent image retention) +// Adds a slew to FRAMES_PER_HZ when ANTI_RETENTION is enabled and FRAMES_PER_HZ is an exact even integer. +// We support non-integer FRAMES_PER_HZ, so this is a magically convenient solution +float EFFECTIVE_FRAMES_PER_HZ = (LCD_ANTI_RETENTION && IS_EVEN_INTEGER(float(FRAMES_PER_HZ))) + ? float(FRAMES_PER_HZ) + LCD_INVERSION_COMPENSATION_SLEW + : float(FRAMES_PER_HZ); + +//------------------------------------------------------------------------------------------------- +// sRGB Encoding and Decoding Functions, to gamma correct/uncorrect + +// Encode linear color to sRGB. (applies gamma curve) +float linear2srgb(float c){ + vec3 j = vec3(0.0031308 * 12.92, 12.92, 1.0 / GAMMA); + vec2 k = vec2(1.055, -0.055); + return clamp(j.x, c * j.y, pow(c, j.z) * k.x + k.y); +} +vec3 linear2srgb(vec3 c){ + return vec3(linear2srgb(c.r), linear2srgb(c.g), linear2srgb(c.b)); +} + +// Decode sRGB color to linear. (undoes gamma curve) +float srgb2linear(float c){ + vec3 j = vec3(0.04045, 1.0 / 12.92, GAMMA); + vec2 k = vec2(1.0 / 1.055, 0.055 / 1.055); + return SelF1(c * j.y, pow(c * k.x + k.y, j.z), c > j.x); +} +vec3 srgb2linear(vec3 c){ + return vec3(srgb2linear(c.r), srgb2linear(c.g), srgb2linear(c.b)); +} + +#pragma stage vertex +layout(location = 0) in vec4 Position; +layout(location = 1) in vec2 TexCoord; +layout(location = 0) out vec2 vTexCoord; + +void main() +{ + gl_Position = global.MVP * Position; + vTexCoord = TexCoord; +} + +#pragma stage fragment +layout(location = 0) in vec2 vTexCoord; +layout(location = 0) out vec4 FragColor; +layout(set = 0, binding = 2) uniform sampler2D Source; + +//------------------------------------------------------------------------------------------------ +// Gets pixel from the unprocessed framebuffer. +// +// Placeholder for accessing the 3 trailing unprocessed frames (for simulating CRT on) +// - Frame counter represents simulated CRT refresh cycle number. +// - Always assign numbers to your refresh cycles. For reliability, keep a 3 frame trailing buffer. +// - We index by frame counter because it is necessary for blending adjacent CRT refresh cycles, +// for the phosphor fade algorithm on old frame at bottom, and new frames at top. +// - Framebuffer to retrieve from should be unscaled (e.g. original game resolution or emulator resolution). +// - (If you do optional additional processing such as scaling+scanlines+masks, do it post-processing after this stage) +// DEMO version: +// - We cheat by horizontally shifting shifted pixel reads from a texture. +// PRODUCTION version: +// - Put your own code to retrieve a pixel from your series of unprocessed frame buffers. +// IMPORTANT: For integration into firmware/software/emulators/games, this must be executed +// at refresh cycle granularity independently of your underlying games' framerate! +// There are three independent frequencies involved: +// - Native Hz (your actual physical display) +// - Simulated CRT Hz (Hz of simulated CRT tube) +// - Underlying content frame rate (this shader doesn't need to know; TODO: Unless you plan to simulate VRR-CRT) +// +vec3 getPixelFromOrigFrame(vec2 uv, float getFromHzNumber, float currentHzCounter) +{ + + // We simulate missing framebuffers (for accurate real world case) + if ((getFromHzNumber > currentHzCounter) || // Frame not rendered yet + (getFromHzNumber < currentHzCounter - 2.0)) { // Frame over 3 frames ago + return vec3(0.0, 0.0, 0.0); + } + + // Continuous horizontal shift depending on hzCounter + float shiftAmount = 1.0;//MOTION_SPEED / 1000.0; +//^^disabling this since we'll be providing our own blurry motion :) + float baseShift = fract(getFromHzNumber * shiftAmount); + + // We'll offset uv.x by baseShift, and round-off to screen coordinates to avoid seam artifacts + float px = 1.0 / iResolution.x; + uv.x = mod(uv.x + baseShift + px*0.1, 1.0) - px*0.1; + + // Sample texture with no mip (textureLod) + vec4 c = textureLod(iChannel0, uv, 0.0); + return c.rgb; +} + +//------------------------------------------------------------------------------------------------- +// CRT Rolling Scan Simulation With Phosphor Fade + Brightness Redistributor Algorithm +// +// New variable 'per-pixel MPRT' algorithm that mimics CRT phosphor decay too. +// - We emit as many photons as possible as early as possible, and if we can't emit it all (e.g. RGB 255) +// then we continue emitting in the next refresh cycle until we've hit our target (gamma-compensated). +// - This is a clever trick to keep CRT simulation brighter but still benefit motion clarity of most colors. +// Besides, real CRT tubes behave roughly similar too! (overexcited phosphor take longer to decay) +// - This also concurrently produces a phosphor-fade style behavior. +// - Win-win! +// +// Parameters: +// - c2: total brightness * framesPerHz per channel. +// - crtRasterPos: normalized raster position [0..1] representing current scan line +// - phaseOffset: fractional start of the brightness interval [0..1] (0.0 at top, 1.0 at bottom). +// - framesPerHz: Number of frames per Hz. (Does not have to be integer divisible!) +// +vec3 getPixelFromSimulatedCRT(vec2 uv, float crtRasterPos, float crtHzCounter, float framesPerHz) +{ + // Get pixels from three consecutive refresh cycles + vec3 pixelPrev2 = srgb2linear(getPixelFromOrigFrame(uv, crtHzCounter - 2.0, crtHzCounter)); + vec3 pixelPrev1 = srgb2linear(getPixelFromOrigFrame(uv, crtHzCounter - 1.0, crtHzCounter)); + vec3 pixelCurr = srgb2linear(getPixelFromOrigFrame(uv, crtHzCounter, crtHzCounter)); + + vec3 result = vec3(0.0); + + // Compute "photon budgets" for all three cycles + float brightnessScale = framesPerHz * GAIN_VS_BLUR; + vec3 colorPrev2 = pixelPrev2 * brightnessScale; + vec3 colorPrev1 = pixelPrev1 * brightnessScale; + vec3 colorCurr = pixelCurr * brightnessScale; + +#if SCAN_DIRECTION == 1 + float tubePos = (1.0 - uv.y); // Top to bottom +#elif SCAN_DIRECTION == 2 + float tubePos = uv.y; // Bottom to top +#elif SCAN_DIRECTION == 3 + float tubePos = uv.x; // Left to right +#elif SCAN_DIRECTION == 4 + float tubePos = (1.0 - uv.x); // Right to left +#endif + + // Process each color channel independently + for (int ch = 0; ch < 3; ch++) + { + // Get brightness lengths for all three cycles + float Lprev2 = colorPrev2[ch]; + float Lprev1 = colorPrev1[ch]; + float Lcurr = colorCurr[ch]; + + if (Lprev2 <= 0.0 && Lprev1 <= 0.0 && Lcurr <= 0.0) { + result[ch] = 0.0; + continue; + } + + // TODO: Optimize to use only 2 frames. + // Unfortunately I need all 3 right now because if I only do 2, + // I get artifacts at either top OR bottom edge (can't eliminate both) + // What I may do is use a phase offset (e.g. input framebuffer chain + // rotates forward in middle of emulated CRT Hz), as a workaround, and + // see if that solves the problem and reduces the queue to 2. + // (Will attempt later) + + // Convert normalized values to frame space + float tubeFrame = tubePos * framesPerHz; + float fStart = crtRasterPos * framesPerHz; + float fEnd = fStart + 1.0; + + // Define intervals for all three trailing refresh cycles + float startPrev2 = tubeFrame - framesPerHz; + float endPrev2 = startPrev2 + Lprev2; + + float startPrev1 = tubeFrame; + float endPrev1 = startPrev1 + Lprev1; + + float startCurr = tubeFrame + framesPerHz; // Fix seam for top edge + float endCurr = startCurr + Lcurr; + + // Calculate overlaps for all three cycles + #define INTERVAL_OVERLAP(Astart, Aend, Bstart, Bend) max(0.0, min(Aend, Bend) - max(Astart, Bstart)) + float overlapPrev2 = INTERVAL_OVERLAP(startPrev2, endPrev2, fStart, fEnd); + float overlapPrev1 = INTERVAL_OVERLAP(startPrev1, endPrev1, fStart, fEnd); + float overlapCurr = INTERVAL_OVERLAP(startCurr, endCurr, fStart, fEnd); + + // Sum all overlaps for final brightness + result[ch] = overlapPrev2 + overlapPrev1 + overlapCurr; + } + + return linear2srgb(result); +} + +void main() +{ +// disable the effect if we don't have any subframes + FragColor = texture(Source, vTexCoord); + if(params.TotalSubFrames < 2) return; + else{ + // uv: Normalized coordinates ranging from (0,0) at the bottom-left to (1,1) at the top-right. + vec2 uv = vTexCoord.xy; + + vec4 c = vec4(0.0, 0.0, 0.0, 1.0); + + //------------------------------------------------------------------------------------------------- + // CRT beam calculations + + // Frame counter, which may be compensated by slo-mo modes (FPS_DIVISOR). Does not need to be integer divisible. + float effectiveFrame = floor(float(iFrame) * FPS_DIVISOR); + + // Normalized raster position [0..1] representing current position of simulated CRT electron beam + float crtRasterPos = mod(effectiveFrame, EFFECTIVE_FRAMES_PER_HZ) / EFFECTIVE_FRAMES_PER_HZ; + + // CRT refresh cycle counter + float crtHzCounter = floor(effectiveFrame / EFFECTIVE_FRAMES_PER_HZ); + +#if SPLITSCREEN == 1 + //------------------------------------------------------------------------------------------------- + // Splitscreen processing + + // crtTube: Boolean indicating whether the current pixel is within the CRT-BFI region. + // When splitscreen is off, apply CRT-BFI to entire screen + bool crtArea = !((uv.x > SPLITSCREEN_X) && (uv.y > SPLITSCREEN_Y)); + + // Calculate border regions (in pixels) + float borderXpx = abs(fragCoord.x - SPLITSCREEN_X * iResolution.x); + float borderYpx = abs(fragCoord.y - SPLITSCREEN_Y * iResolution.y); + + // Border only exists in the non-BFI region (x > SPLITSCREEN_X || y > SPLITSCREEN_Y) + bool inBorderX = borderXpx < float(SPLITSCREEN_BORDER_PX) && uv.y > SPLITSCREEN_Y; + bool inBorderY = borderYpx < float(SPLITSCREEN_BORDER_PX) && uv.x > SPLITSCREEN_X; + bool inBorder = (SPLITSCREEN == 1) && (inBorderX || inBorderY); + + // We #ifdef the if statement away for shader efficiency (though this specific one didn't affect performance) + if (crtArea) { +#endif + + //----------------------------------------------------------------------------------------- + // Get CRT simulated version of pixel + fragColor.rgb = getPixelFromSimulatedCRT(uv, crtRasterPos, crtHzCounter, EFFECTIVE_FRAMES_PER_HZ); + +#if SPLITSCREEN == 1 + } + else if (!inBorder) { + fragColor.rgb = getPixelFromOrigFrame(uv, crtHzCounter, crtHzCounter); +#if SPLITSCREEN_MATCH_BRIGHTNESS == 1 + // Brightness compensation for unprocessed pixels through similar gamma-curve (match gamma of simulated CRT) + fragColor.rgb = srgb2linear(fragColor.rgb) * GAIN_VS_BLUR; + fragColor.rgb = clampPixel(linear2srgb(fragColor.rgb)); +#endif + } +#endif + } +} + +//------------------------------------------------------------------------------------------------- +// Credits Reminder: +// Please credit BLUR BUSTERS & TIMOTHY LOTTES if this algorithm is used in your project/product. +// Hundreds of hours of research was done on related work that led to this algorithm. +//------------------------------------------------------------------------------------------------- diff --git a/subframe-bfi/shaders/edge-blended/edge-blended-240hz-bfi.slang b/subframe-bfi/shaders/edge-blended/edge-blended-240hz-bfi.slang deleted file mode 100644 index 03cd06af98..0000000000 --- a/subframe-bfi/shaders/edge-blended/edge-blended-240hz-bfi.slang +++ /dev/null @@ -1,101 +0,0 @@ -#version 450 - -// edge-blended 240Hz BFI -// by hunterk -// license: public domain - -layout(push_constant) uniform Push -{ - vec4 SourceSize; - vec4 OriginalSize; - vec4 OutputSize; - uint FrameCount; - uint CurrentSubFrame; - uint TotalSubFrames; - float favor_black; -} params; - -// setting this to 1 makes 75% of the screen black at all times -// while setting it to 0 makes it only 25% black -#pragma parameter favor_black "Favor Black" 1.0 0.0 1.0 1.0 - -// set a macro here for debugging purposes since there's no way to advance subframes -#define debugFrame params.CurrentSubFrame - -layout(std140, set = 0, binding = 0) uniform UBO -{ - mat4 MVP; -} global; - -#pragma stage vertex -layout(location = 0) in vec4 Position; -layout(location = 1) in vec2 TexCoord; -layout(location = 0) out vec2 vTexCoord; -layout(location = 1) out vec4 check; -layout(location = 2) out vec2 lutCoord; - -void main() -{ - gl_Position = global.MVP * Position; - vTexCoord = TexCoord; -// TODO/FIXME: figure out some good way to make the seams roll - lutCoord = TexCoord;// + vec2(0., mod(float(params.FrameCount), 250.)/1000.); -// set up a bool to check which sub-frame we're currently on - bvec4 checkbool = bvec4(debugFrame == 1, - debugFrame == 2, - debugFrame == 3, - debugFrame == 4); -// flip the check bool if we want to blackout on all but one sub-frame - bvec4 boolflip = bvec4(params.favor_black); - check.x = boolflip.x ? float(!checkbool.x) : float(checkbool.x); - check.y = boolflip.y ? float(!checkbool.y) : float(checkbool.y); - check.z = boolflip.z ? float(!checkbool.z) : float(checkbool.z); - check.w = boolflip.w ? float(!checkbool.w) : float(checkbool.w); -} - -#pragma stage fragment -layout(location = 0) in vec2 vTexCoord; -layout(location = 1) in vec4 check; -layout(location = 2) in vec2 lutCoord; -layout(location = 0) out vec4 FragColor; -layout(set = 0, binding = 2) uniform sampler2D Source; -layout(set = 0, binding = 3) uniform sampler2D top; -layout(set = 0, binding = 4) uniform sampler2D bot; -layout(set = 0, binding = 5) uniform sampler2D midtop; -layout(set = 0, binding = 6) uniform sampler2D midbot; - -void main() -{ - FragColor = vec4(texture(Source, vTexCoord).rgb, 1.0); -// early return if we don't have subframes enabled - if(params.TotalSubFrames == 1) return; - -// use a nonstandard approximation of linear gamma to blend transitions better -// going higher makes the transitions blend better but creates harsh lines elsewhere - FragColor = pow(FragColor, vec4(2.5)); - -// sample the LUTs, "linearize" them - vec4 Top = texture(top, lutCoord); - Top = pow(Top, vec4(2.5)); - vec4 Bot = texture(bot, lutCoord); - Bot = pow(Bot, vec4(2.5)); - vec4 MidTop = texture(midtop, lutCoord); - MidTop = pow(MidTop, vec4(2.5)); - vec4 MidBot = texture(midbot, lutCoord); - MidBot = pow(MidBot, vec4(2.5)); - -// based on the subframe, apply the blackout LUTs - FragColor = (bool(check.x)) ? mix(FragColor, Top, Top.a) : FragColor; - FragColor = (bool(check.y)) ? mix(FragColor, MidTop, MidTop.a) : FragColor; - FragColor = (bool(check.z)) ? mix(FragColor, MidBot, MidBot.a) : FragColor; - FragColor = (bool(check.w)) ? mix(FragColor, Bot, Bot.a) : FragColor; - -// black-out the other transitions when preferring black - FragColor *= (params.favor_black > 0.5 && debugFrame == 1 && vTexCoord.y > 0.3333) ? vec4(0.0) : vec4(1.0); - FragColor *= (params.favor_black > 0.5 && debugFrame == 3 && (vTexCoord.y > 0.8 || vTexCoord.y < 0.3333)) ? vec4(0.0) : vec4(1.0); - FragColor *= (params.favor_black > 0.5 && debugFrame == 2 && (vTexCoord.y > 0.6667 || vTexCoord.y < 0.2)) ? vec4(0.0) : vec4(1.0); - FragColor *= (params.favor_black > 0.5 && debugFrame == 4 && vTexCoord.y < 0.6667) ? vec4(0.0) : vec4(1.0); - -// de-"linearize" - FragColor = pow(FragColor, vec4(1./2.5)); -} diff --git a/subframe-bfi/shaders/edge-blended/resources/240hzBot.png b/subframe-bfi/shaders/edge-blended/resources/240hzBot.png deleted file mode 100644 index b90dfb0177184017b313da6b55c41746ce3dea38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5818 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 Kzh0^e5BnRRSyCtf diff --git a/subframe-bfi/shaders/edge-blended/resources/240hzMidBot.png b/subframe-bfi/shaders/edge-blended/resources/240hzMidBot.png deleted file mode 100644 index 9fd5eef996129755164ed26e0d13c64606d9ad0d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6203 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