diff --git a/bezel/koko-aio/FXAA-bloom.slangp b/bezel/koko-aio/FXAA-bloom.slangp
index 620e536..71e3451 100644
--- a/bezel/koko-aio/FXAA-bloom.slangp
+++ b/bezel/koko-aio/FXAA-bloom.slangp
@@ -1,20 +1,20 @@
shaders = "17"
-shader0 = "shaders/ntsc_pass.slang"
+shader0 = "shaders/colortools_and_ntsc_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
-alias0 = "ntsc_pass"
+alias0 = "colortools_and_ntsc_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "1.000000"
-shader1 = "shaders/first_pass.slang"
+shader1 = "shaders/flick_and_noise.slang"
filter_linear1 = "false"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "false"
-alias1 = "first_pass"
+alias1 = "flick_and_noise_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
@@ -188,9 +188,9 @@ scale_type_y16 = "viewport"
scale_y16 = "1.000000"
DO_CCORRECTION = "1.000000"
LUMINANCE = "0.100000"
-SATURATION = "1.050000"
TEMPERATURE = "7000.000000"
GAMMA_OUT = "0.500000"
+SATURATION = "1.050000"
DO_FXAA = "1.000000"
SAT_BLEED_PAL = "1.000000"
SAT_BLEED_STRENGTH = "0.500000"
@@ -211,27 +211,26 @@ VMASK_USE_GM = "1.000000"
VMASK_GAP = "1.000000"
DARKLINES_STRENGTH = "0.800000"
DARKLINES_PERIOD = "4.000000"
-HALO_POWER = "0.990000"
-HALO_W = "3.000000"
-HALO_H = "3.000000"
-HALO_GAMMA = "1.400000"
SCANLINE_DARK = "0.700000"
SCANLINES_BLEEDING = "1.000000"
SCANLINE_FLICKERING = "0.000000"
SCANLINE_FLICKERING_POWER = "0.170000"
+HALO_POWER = "0.990000"
+HALO_W = "3.000000"
+HALO_H = "3.000000"
+HALO_GAMMA = "1.400000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.500000"
DO_CURVATURE = "1.000000"
-GEOM_WARP_X = "0.450000"
-GEOM_WARP_Y = "0.500000"
+GEOM_WARP_X = "0.420000"
+GEOM_WARP_Y = "0.470000"
GEOM_CORNER_SMOOTH = "400.000000"
DO_BEZEL = "1.000000"
-BEZEL_INNER_ZOOM = "-0.011000"
+BEZEL_INNER_ZOOM = "-0.018000"
BEZEL_FRAME_ZOOM = "0.170000"
AMBI_FALLOFF = "0.400000"
AMBI_POWER = "5.000000"
AMBI_OVER_BEZEL = "0.200000"
-DO_DYNZOOM = "0.000000"
V_SIZE = "2.700000"
V_POWER = "1.050000"
S_POSITION = "194.000000"
diff --git a/bezel/koko-aio/README.md b/bezel/koko-aio/README.md
new file mode 100644
index 0000000..1e5dc45
--- /dev/null
+++ b/bezel/koko-aio/README.md
@@ -0,0 +1,64 @@
+# Koko-aio
+
+Koko-aio shader is meant to be an all-in one crt shader.
+It can be configured with many parameters, so that can be
+scaled to run on even on modest gpus while still developed to
+run with heavier presets on at least Haswell+ iGpus.
+On that gpu, as in version 3.5, it reaches about 85fps with all features enabled
+When dealing with lowres content on 1920x1080 resolution.
+While it is not meant to simulate the internal behaviour of CRT displays,
+it aims to give users "visual" parameters to make their monitors look similar.
+Several presets are included.
+
+***Additional documentation:***
+* [See here](docs.md)
+
+***Additional artwork:***
+* https://github.com/kokoko3k/koko-aio-slang-presets-and-overlays
+
+***Actually, it provides emulation for:***
+* Scanlines
+* Screenlines
+* RGB phosphors
+* RGB deconvergence
+* NTSC/PAL CVBS color bleeding
+* NTSC color artifacting (early stage)
+* Aperture grille and slot mask.
+* Input signal glowing
+* Output signal glowing
+* Blooming
+* Gamma, contrast, saturation, luminance, color temperature adjustments
+* Black frame insertions through alternate blanking
+* Interlace flickering, forcing and emulation
+* Antialiasing
+* Curvature
+* Ambient lights
+* Vignette and Spotlight
+* Bezel (Thank you HyperspaceMadness for allowing me to rip his automagically generated bezel!)
+ https://github.com/HyperspaceMadness/
+* Background images
+* Full screen glowing
+
+***External code by:***
+* Nvidia (FXAA)
+* EasyMode (curvature related code)
+
+# Examples
+
+***monitor-slotmask-bloom-bezelwider - Arcade - Final fight***
+![alt text](https://github.com/kokoko3k/koko-aio-slang/blob/main/screenshots/screenshots.3.5/monitor-slotmask-bloom-bezelwider.mame.ffight.png?raw=true)
+
+***monitor-Commodore_1084S-wider - Amiga - ProjectX SE***
+![alt text](https://github.com/kokoko3k/koko-aio-slang/blob/main/screenshots/screenshots.3.5/monitor-Commodore_1084S-wider.puae.projectx.png?raw=true)
+
+***tv-PAL-my-old - Master System - Trans Bot***
+![alt text](https://github.com/kokoko3k/koko-aio-slang/blob/main/screenshots/screenshots.3.5/tv-PAL-my-old,mastersystem.transbot.png?raw=true)
+
+***tv-NTSC-1 - Genesis - Sonic 2***
+![alt text](https://github.com/kokoko3k/koko-aio-slang/blob/main/screenshots/screenshots.3.5/tv-NTSC-1.md.sonic2.png?raw=true)
+
+***tv-NTSC-2 - Snes - Aladdin***
+![alt text](https://github.com/kokoko3k/koko-aio-slang/blob/main/screenshots/screenshots.3.5/tv-NTSC-2.snes.aladdin.png?raw=true)
+
+***tv-aperturegrille-bloom-bezel - Amiga - Leander***
+![alt text](https://github.com/kokoko3k/koko-aio-slang/blob/main/screenshots/screenshots.3.5/tv-aperturegrille-bloom-bezel.puae.leander.png?raw=true)
diff --git a/bezel/koko-aio/clean-scanlines-classic_take.slangp b/bezel/koko-aio/clean-scanlines-classic_take.slangp
index 9871e63..9f72d47 100644
--- a/bezel/koko-aio/clean-scanlines-classic_take.slangp
+++ b/bezel/koko-aio/clean-scanlines-classic_take.slangp
@@ -1,20 +1,20 @@
shaders = "17"
-shader0 = "shaders/ntsc_pass.slang"
+shader0 = "shaders/colortools_and_ntsc_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
-alias0 = "ntsc_pass"
+alias0 = "colortools_and_ntsc_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "1.000000"
-shader1 = "shaders/first_pass.slang"
+shader1 = "shaders/flick_and_noise.slang"
filter_linear1 = "false"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "false"
-alias1 = "first_pass"
+alias1 = "flick_and_noise_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
@@ -205,21 +205,21 @@ RGB_MASK_STRENGTH = "1.000000"
VMASK_USE_GM = "1.000000"
VMASK_GAP = "1.000000"
DARKLINES_STRENGTH = "0.000000"
+DO_SCANLINES = "1.000000"
+SCANLINE_MIN = "0.200000"
+SCANLINE_MAX = "0.800000"
+SCANLINE_MINMAX_GAMMA = "0.700000"
DO_HALO = "1.000000"
HALO_POWER = "0.400000"
HALO_W = "3.000001"
HALO_H = "3.000001"
HALO_GAMMA = "1.300000"
HALO_VS_SCAN = "1.000000"
-DO_SCANLINES = "1.000000"
-SCANLINE_MIN = "0.200000"
-SCANLINE_MAX = "0.800000"
-SCANLINE_MINMAX_GAMMA = "0.700000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.500000"
DO_CURVATURE = "1.000000"
-GEOM_WARP_X = "0.450000"
-GEOM_WARP_Y = "0.500000"
+GEOM_WARP_X = "0.420000"
+GEOM_WARP_Y = "0.470000"
GEOM_CORNER_SIZE = "0.010000"
GEOM_CORNER_SMOOTH = "400.000000"
BEZEL_INNER_ZOOM = "-0.215000"
diff --git a/bezel/koko-aio/docs.md b/bezel/koko-aio/docs.md
index 8d9f8d3..720b706 100644
--- a/bezel/koko-aio/docs.md
+++ b/bezel/koko-aio/docs.md
@@ -1,40 +1,48 @@
**koko-aio-slang parameters documentation**
-**Color corrections:**
- Modify luminance, saturation, contrast, brightness and color temperature of the
- signal, at "input" stage.
- Gamma correction is applied to the final processed picture.
+**Color corrections:**
+ Modify luminance, saturation, contrast, brightness and color temperature
+ of the signal, at "input" stage.
+ Gamma correction is applied to the final processed picture.
+ It is also possible to emulate a monochrome display with custom colors:
-**FXAA:**
- Apply the well known antialiasing effect by Nvidia.
- Use it if you don't want to blur the image and you still don't like
- jagged or too much pixelated images.
+ Monochrome screen colorization:
+ The amount of (de) colorization applied.
+ Hue bright, Hue dark:
+ Set the hue for bright and dark colors.
+ Hue bright-dark bias:
+ Controls the distribution of dark and bright hues.
+
+**FXAA:**
+ Apply the well known antialiasing effect by Nvidia.
+ Use it if you don't want to blur the image and you still don't like
+ jagged or too much pixelated images.
-**CVBS: NTSC color artifacts: **
- Tries to emulate typical NTSC color artifacting without emulating
- full NTSC coding/decoding pipeline.
- While it improves the look of NTSC content, don't expect it to be
- an accurate emulation (yet?)
- As today, it is enough to emulate rainbowing effects on genesis.
+**CVBS: NTSC color artifacts: **
+ Tries to emulate typical NTSC color artifacting without emulating
+ full NTSC coding/decoding pipeline.
+ While it improves the look of NTSC content, don't expect it to be
+ an accurate emulation (yet?)
+ As today, it is enough to emulate rainbowing effects on genesis.
-** RF Noise: **
- Emulates radio frequency noise with a given strength
+** RF Noise: **
+ Emulates radio frequency noise with a given strength
-**CVBS: Bandwidth limited chroma:**
- Will cause an horizontal chroma bleed which cheaply mimics the effect of
- poor composite video signals.
- It can be used with RGB shifting and image blurring to give the picture
- an ntsc look without dealing with specific encoding/decoding stuffs.
+**CVBS: Bandwidth limited chroma:**
+ Will cause an horizontal chroma bleed which cheaply mimics the effect of
+ poor composite video signals.
+ It can be used with RGB shifting and image blurring to give the picture
+ an ntsc look without dealing with specific encoding/decoding stuffs.
-**Deconvergence:**
- Shift R,G,B components separately to mimic channel deconvergence.
- By varying Red, Green and Blue offsets, the relative component will be
- shifted column by column, row by row.
+**Deconvergence:**
+ Shift R,G,B components separately to mimic channel deconvergence.
+ By varying Red, Green and Blue offsets, the relative component will be
+ shifted column by column, row by row.
-**Glow/Blur:**
- Emulate the CRT glowing "feature", so that the brighter areas of
- the image will light their surroundings,
- with options to switch to classic blur.
+**Glow/Blur:**
+ Emulate the CRT glowing "feature", so that the brighter areas of
+ the image will light their surroundings,
+ with options to switch to classic blur.
Input signal strength:
The input signal gain
@@ -63,8 +71,8 @@
This will help you to set the previous 2 values as it will show only
the artifacts that will modify the blur.
-**Masks and/or Darklines:**
- Emulates CRT RGB phosphors (RGB Mask),
+**Masks and/or Darklines:**
+ Emulates CRT RGB phosphors (RGB Mask),
slotmasks and aperturegrille (Darklines).
(HiDPI) Vmask and Darklines multiplier:
@@ -104,26 +112,11 @@
Darklines: affect bright colors:
See "RGB Mask: affect bright colors"
-**Halo:**
- Emulates the effect of the brighter pixels reflected by the CRT glass
- that lights nearby zones (a sort of tight bloom).
- The light is meant to be spreaded in a way that it nulls the effect of the
- dark scanline parts, darklines and the RGB masks.
- So you can use this to restore the brightness and color saturation
- loss when using features like scanlines, darklines or RGB masks.
+**Tate mode:**
+ Rotates mask and scanlines by 90°
- Light up scanlines too:
- Theoretically Halo have to be applied
- "over" everything, because that is the way it works in nature.
- But you can choose to cheat and instead apply scanlines over the halo
- instead.
- Do this if you like much more pronunced scanlines, even at the
- price of some graphical artifacts visible on high contrasted areas.
-
- Refer to "Glowing Input/power" for other parameters meaning.
-
-**Scanlines:**
- Emulate CRT scanlines.
+**Scanlines:**
+ Emulate CRT scanlines.
Scanlines gap brightness:
controls how "little" they will look pronunced.
@@ -164,11 +157,57 @@
. Offset
This is the slotmask offset/stagger, (available on type 1 only)
Keep it around 79 or all the way to max
+
+**Dot matrix emulation:**
+ Emulates low refresh "boxed" screens used in old handheld consoles.
+
+ Grid strength:
+ How much the grid is visible.
+ Grid sharpness:
+ Modulates the thickness of the grid around cells.
+ Strength on background:
+ How much should the grid be visible on background?
+ More positive values -> more grid on bright
+ More negative values -> more grid on dark
+ Gap brightness:
+ You may want to use a white grid eg: for gameboy mono emulation.
+ RGB strength:
+ Emulate rgb subpixels (Set 0.0 for BW display)
+ RGB sharpness:
+ Low values will gradually blend subpixels.
+ You may want to lower this value to cancel vertical artifacts.
+ Green gain correction:
+ R and B cnahhels could be partially cancelled by the grid around.
+ Lower this if the image looks green.
+ Refresh inertia:
+ Emulates a low refresh screen, set the power of the effect.
+ Inertia on:
+ 0: display is always slow to refresh
+ 1: display is slow to refresh bright pixels
+ 2: display is slow to refresh dark pixels
-**Bloom:**
- Acts like Halo, but affects a much wider area and is more configurable.
- By using this effect and playing with its parameters, you can achieve funny
- or even artistic results.
+**Halo:**
+ Emulates the effect of the brighter pixels reflected by the CRT glass
+ that lights nearby zones (a sort of tight bloom).
+ The light is meant to be spreaded in a way that it nulls the effect of the
+ dark scanline parts, darklines and the RGB masks.
+ So you can use this to restore the brightness and color saturation
+ loss when using features like scanlines, darklines or RGB masks.
+
+ Light up scanlines too:
+ Theoretically Halo have to be applied
+ "over" everything, because that is the way it works in nature.
+ But you can choose to cheat and instead apply scanlines over the halo
+ instead.
+ Do this if you like much more pronunced scanlines, even at the
+ price of some graphical artifacts visible on high contrasted areas.
+
+ Refer to "Glowing Input/power" for other parameters meaning.
+
+**Bloom:**
+ Acts like Halo, but affects a much wider area and is more configurable.
+ By using this effect and playing with its parameters, you can achieve funny
+ or even artistic results.
Final mix:
Modulates between the original images and the bloomed one.
@@ -196,8 +235,8 @@
Use 1.0 to see naked bloom without any modulation applied
Use 2.0 to see naked bloom with modulation applied
-**Curvature:**
- Emulates a curved CRT display.
+**Curvature:**
+ Emulates a curved CRT display.
WARP X, WARP Y:
control how much the display is curved along its axes.
@@ -206,17 +245,17 @@
Cut curvature ears;
If you see weird image repetition try this.
-**Bezel:**
- Draws a monitor frame with simulated reflections from the game content.
- The monitor frame is an image loaded by the shader and is shipped
- in the "textures" shader subdirectory, named "monitor\_body.png"
- It has been made with the following rules that may come handy
- only if you want to edit it; otherwise go on.
- - The red channel represents the luminance information
- - The green channel represents the highlights
- - The alpha channel in the inner frame represents the part of the bezel
- that will be filled by the game content
- - The blue channel represents the part of the bezel that will be filled by the game reflection.
+**Bezel:**
+ Draws a monitor frame with simulated reflections from the game content.
+ The monitor frame is an image loaded by the shader and is shipped
+ in the "textures" shader subdirectory, named "monitor\_body.png"
+ It has been made with the following rules that may come handy
+ only if you want to edit it; otherwise go on.
+ - The red channel represents the luminance information
+ - The green channel represents the highlights
+ - The alpha channel in the inner frame represents the part of the bezel
+ that will be filled by the game content
+ - The blue channel represents the part of the bezel that will be filled by the game reflection.
Straight
Use a straight bezel instead of a curved one.
@@ -241,13 +280,13 @@
How much the bezel corners should be darkened
-**Backgound image:**
- Draws an image on screen picked from the "textures" shader subdirectory,
- named: background.png
- **-> It is needed that you set retroarch aspect to "Full" <-**
- ( Settings, Video, Scaling, Aspect Ratio = Full )
- The image is painted "under" the game content and under the monitor frame by
- default, and his alpha channel will let you see ambient lighs (see next).
+**Backgound image:**
+ Draws an image on screen picked from the "textures" shader subdirectory,
+ named: background.png
+ **-> It is needed that you set retroarch aspect to "Full" <-**
+ ( Settings, Video, Scaling, Aspect Ratio = Full )
+ The image is painted "under" the game content and under the monitor frame by
+ default, and his alpha channel will let you see ambient lighs (see next).
Image over content (alpha channel driven)?:
...however you can paint the image over the game content and over the
@@ -271,20 +310,21 @@
3 Plain repeat without mirroring.
-**Backdrop support:**
- Some old arcades used a mirror trick to overlay the
+**Backdrop support:**
+ Some old arcades used a mirror trick to overlay the
game content over an high definition printed image.
- The image used by default, picked from the "textures" shader subdirectory,
+ The image used by default, picked from the "textures" shader subdirectory,
is named: boothill.jpg
+
Shift(Zoom) Backdrop over X(Y) axis:
move or zoom the whole background image.
-**Ambient light leds:**
- Emulates the presence of led strips under the monitor that lights the
- surroundings according to the edges of the game content.
- **-> It is needed that you set retroarch aspect to "Full" <-**
- ( Settings, Video, Scaling, Aspect Ratio = Full )
+**Ambient light leds:**
+ Emulates the presence of led strips under the monitor that lights the
+ surroundings according to the edges of the game content.
+ **-> It is needed that you set retroarch aspect to "Full" <-**
+ ( Settings, Video, Scaling, Aspect Ratio = Full )
Slowness:
How much will the leds will take to reflect the game content.
@@ -315,23 +355,23 @@
This internally works by adding the amount of your choice to the alpha channel
of the foreground image.
-**Luminosity dependant zoom:**
- On older CRT monitors, the picture gets bigger when the image was brighter.
+**Luminosity dependant zoom:**
+ On older CRT monitors, the picture gets bigger when the image was brighter.
-**Vignette:**
- Will cause uneven brightness of the image, more at the center,
- less at the edges.
+**Vignette:**
+ Will cause uneven brightness of the image, more at the center,
+ less at the edges.
-**Spot:**
- Simulates external light reflected by the monitor glass.
+**Spot:**
+ Simulates external light reflected by the monitor glass.
-**Aspect Ratio:**
- When using effects that need Retroarch aspect ratio option
- to be set to "full", you have to provide the source aspect
- ratio to the shader.
- Use -6 for MAME cores that pre-rotates the game (TATE mode)
- With Mame 2003 plus and fbneo cores, koko-aio detects if the
- game is rotated or not without any user intervention.
+**Aspect Ratio:**
+ When using effects that need Retroarch aspect ratio option
+ to be set to "full", you have to provide the source aspect
+ ratio to the shader.
+ Use -6 for MAME cores that pre-rotates the game (TATE mode)
+ With Mame 2003 plus and fbneo cores, koko-aio detects if the
+ game is rotated or not without any user intervention.
Aspect Ratio Numerator:
Setting non positive value here will switch to a predefined
@@ -347,12 +387,12 @@
As long as Aspect Ratio Numerator is positive, this will
be used as the denominator of the fraction.
-**Global shift/zoom image:**
- Zoom and shift everything on screen, but background pictures.
+**Global shift/zoom image:**
+ Zoom and shift everything on screen, but background pictures.
-**Override content geometry:**
- Contrary to the global aspect ratio control, this changes only the game geometry.
- Bezel stays the same.
+**Override content geometry:**
+ Contrary to the global aspect ratio control, this changes only the game geometry.
+ Bezel stays the same.
Integer scale: Game content zoom height is rounded to nearest integer.
Maximum integer scale: Dont allow integer scaling more than this
@@ -362,8 +402,11 @@
Vertical/Horizontal position: Shifts the game position
Zoom: Change the size
-**Tilt:**
- Put the bezel and the game content into perspective.
+**Tilt:**
+ Put the bezel and the game content into perspective.
+ The implementation is basic, you can expect correct
+ results when tilting alongside a single axis or when
+ using both, but with small values.
Tilt along X(Y) axis:
Rotate the image in space
@@ -373,11 +416,11 @@
in relation to the game tilt amount
-**Alternate line blanking:**
- CRT monitors \*real\* refresh was amazing, today is just "meh" in most cases.
- This emulates the low pixel persistance of CRT monitors
- and reduces the motion blur, typical of LCD displays, by blanking even/odd
- screen lines on even/odd frames, by sacrificing image brightness, ofc.
+**Alternate line blanking:**
+ CRT monitors \*real\* refresh was amazing, today is just "meh" in most cases.
+ This emulates the low pixel persistance of CRT monitors
+ and reduces the motion blur, typical of LCD displays, by blanking even/odd
+ screen lines on even/odd frames, by sacrificing image brightness, ofc.
This feature is static, to use it
you have to manually enable it by removing the leading: "//"
diff --git a/bezel/koko-aio/gameboy_mono_colorized.slangp b/bezel/koko-aio/gameboy_mono_colorized.slangp
new file mode 100644
index 0000000..43cd38b
--- /dev/null
+++ b/bezel/koko-aio/gameboy_mono_colorized.slangp
@@ -0,0 +1,248 @@
+shaders = "17"
+shader0 = "shaders/colortools_and_ntsc_pass.slang"
+filter_linear0 = "false"
+wrap_mode0 = "mirrored_repeat"
+mipmap_input0 = "false"
+alias0 = "colortools_and_ntsc_pass"
+float_framebuffer0 = "false"
+srgb_framebuffer0 = "false"
+scale_type_x0 = "source"
+scale_x0 = "1.000000"
+scale_type_y0 = "source"
+scale_y0 = "1.000000"
+shader1 = "shaders/flick_and_noise.slang"
+filter_linear1 = "false"
+wrap_mode1 = "mirrored_repeat"
+mipmap_input1 = "false"
+alias1 = "flick_and_noise_pass"
+float_framebuffer1 = "false"
+srgb_framebuffer1 = "false"
+scale_type_x1 = "source"
+scale_x1 = "2.000000"
+scale_type_y1 = "source"
+scale_y1 = "2.000000"
+shader2 = "shaders/fxaa.slang"
+filter_linear2 = "true"
+wrap_mode2 = "mirrored_repeat"
+mipmap_input2 = "true"
+alias2 = "FXAA_pass"
+float_framebuffer2 = "false"
+srgb_framebuffer2 = "false"
+scale_type_x2 = "source"
+scale_x2 = "1.000000"
+scale_type_y2 = "source"
+scale_y2 = "1.000000"
+shader3 = "shaders/shift_and_bleed.slang"
+filter_linear3 = "true"
+wrap_mode3 = "mirrored_repeat"
+mipmap_input3 = "false"
+alias3 = "shift_and_bleed_pass"
+float_framebuffer3 = "true"
+srgb_framebuffer3 = "false"
+scale_type_x3 = "source"
+scale_x3 = "1.000000"
+scale_type_y3 = "source"
+scale_y3 = "1.000000"
+shader4 = "shaders/in_glow_x.slang"
+filter_linear4 = "true"
+wrap_mode4 = "mirrored_repeat"
+mipmap_input4 = "false"
+alias4 = "in_glow_pass_x"
+float_framebuffer4 = "true"
+srgb_framebuffer4 = "false"
+scale_type_x4 = "source"
+scale_x4 = "1.000000"
+scale_type_y4 = "source"
+scale_y4 = "1.000000"
+shader5 = "shaders/in_glow_y.slang"
+filter_linear5 = "true"
+wrap_mode5 = "mirrored_repeat"
+mipmap_input5 = "false"
+alias5 = "in_glow_pass"
+float_framebuffer5 = "true"
+srgb_framebuffer5 = "false"
+scale_type_x5 = "source"
+scale_x5 = "1.000000"
+scale_type_y5 = "source"
+scale_y5 = "1.000000"
+shader6 = "shaders/halo_x.slang"
+filter_linear6 = "true"
+wrap_mode6 = "clamp_to_edge"
+mipmap_input6 = "false"
+alias6 = "halo_pass_x"
+float_framebuffer6 = "true"
+srgb_framebuffer6 = "false"
+scale_type_x6 = "source"
+scale_x6 = "1.000000"
+scale_type_y6 = "source"
+scale_y6 = "1.000000"
+shader7 = "shaders/halo_y.slang"
+filter_linear7 = "true"
+wrap_mode7 = "clamp_to_edge"
+mipmap_input7 = "false"
+alias7 = "halo_pass"
+float_framebuffer7 = "true"
+srgb_framebuffer7 = "false"
+scale_type_x7 = "source"
+scale_x7 = "1.000000"
+scale_type_y7 = "source"
+scale_y7 = "1.000000"
+shader8 = "shaders/avglum_pass.slang"
+filter_linear8 = "true"
+wrap_mode8 = "mirrored_repeat"
+mipmap_input8 = "false"
+alias8 = "avglum_pass"
+float_framebuffer8 = "false"
+srgb_framebuffer8 = "false"
+scale_type_x8 = "source"
+scale_x8 = "0.500000"
+scale_type_y8 = "source"
+scale_y8 = "0.500000"
+shader9 = "shaders/reflection_blur_pre.slang"
+filter_linear9 = "true"
+wrap_mode9 = "clamp_to_border"
+mipmap_input9 = "false"
+alias9 = "reflected_blurred_pass_pre"
+float_framebuffer9 = "false"
+srgb_framebuffer9 = "false"
+scale_type_x9 = "source"
+scale_x9 = "1.000000"
+scale_type_y9 = "source"
+scale_y9 = "1.000000"
+shader10 = "shaders/reflection_blur.slang"
+filter_linear10 = "true"
+wrap_mode10 = "mirrored_repeat"
+mipmap_input10 = "true"
+alias10 = "reflected_blurred_pass"
+float_framebuffer10 = "false"
+srgb_framebuffer10 = "false"
+scale_type_x10 = "source"
+scale_x10 = "1.000000"
+scale_type_y10 = "source"
+scale_y10 = "1.000000"
+shader11 = "shaders/bloom_pass_1.slang"
+filter_linear11 = "true"
+wrap_mode11 = "mirrored_repeat"
+mipmap_input11 = "false"
+alias11 = "bloom_pass_1"
+float_framebuffer11 = "false"
+srgb_framebuffer11 = "false"
+scale_type_x11 = "source"
+scale_x11 = "1.000000"
+scale_type_y11 = "source"
+scale_y11 = "1.000000"
+shader12 = "shaders/bloom_pass_2.slang"
+filter_linear12 = "true"
+wrap_mode12 = "clamp_to_edge"
+mipmap_input12 = "false"
+alias12 = "bloom_pass_2"
+float_framebuffer12 = "false"
+srgb_framebuffer12 = "false"
+scale_type_x12 = "source"
+scale_x12 = "0.500000"
+scale_type_y12 = "source"
+scale_y12 = "0.500000"
+shader13 = "shaders/bloom_pass_3.slang"
+filter_linear13 = "true"
+wrap_mode13 = "clamp_to_edge"
+mipmap_input13 = "false"
+alias13 = "bloom_pass_3"
+float_framebuffer13 = "false"
+srgb_framebuffer13 = "false"
+scale_type_x13 = "source"
+scale_x13 = "1.000000"
+scale_type_y13 = "source"
+scale_y13 = "1.000000"
+shader14 = "shaders/bloom_pass_4.slang"
+filter_linear14 = "true"
+wrap_mode14 = "mirrored_repeat"
+mipmap_input14 = "false"
+alias14 = "bloom_pass_final"
+float_framebuffer14 = "true"
+srgb_framebuffer14 = "false"
+scale_type_x14 = "source"
+scale_x14 = "1.000000"
+scale_type_y14 = "source"
+scale_y14 = "1.000000"
+shader15 = "shaders/ambi_temporal_pass.slang"
+filter_linear15 = "true"
+wrap_mode15 = "clamp_to_border"
+mipmap_input15 = "false"
+alias15 = "ambi_temporal_pass"
+float_framebuffer15 = "true"
+srgb_framebuffer15 = "false"
+scale_type_x15 = "viewport"
+scale_x15 = "0.050000"
+scale_type_y15 = "viewport"
+scale_y15 = "0.050000"
+shader16 = "shaders/final_pass.slang"
+filter_linear16 = "true"
+wrap_mode16 = "mirrored_repeat"
+mipmap_input16 = "false"
+alias16 = "final_pass"
+float_framebuffer16 = "false"
+srgb_framebuffer16 = "false"
+scale_type_x16 = "viewport"
+scale_x16 = "1.000000"
+scale_type_y16 = "viewport"
+scale_y16 = "1.000000"
+DO_CCORRECTION = "1.000000"
+BRIGHTNESS = "0.060000"
+CONTRAST = "-0.270000"
+GAMMA_OUT = "0.500000"
+COLOR_MONO_COLORIZE = "1.000000"
+COLOR_MONO_HUE1 = "0.180000"
+COLOR_MONO_HUE2 = "0.380000"
+SATURATION = "0.850000"
+DO_SHIFT_RGB = "1.000000"
+OFFSET_STRENGTH = "0.250000"
+SHIFT_R = "42.000000"
+SHIFT_G = "42.000000"
+SHIFT_B = "42.000000"
+DO_IN_GLOW = "1.000000"
+IN_GLOW_GAMMA = "2.000000"
+IN_GLOW_W = "7.000000"
+IN_GLOW_H = "7.000000"
+DO_DOT_MATRIX = "1.000000"
+DOT_M_G_STR = "0.110000"
+DOT_M_G_TRESH = "0.120001"
+DOT_M_G_BRT = "0.849999"
+DOT_M_G_SHARP = "20.000000"
+DOT_M_RGB_STR = "0.000000"
+DOT_M_MBLUR_MODE = "1.000000"
+DOT_M_SHADOW_STR = "0.750000"
+DOT_M_SHADOW_OFF = "1.000000"
+AMBI_FALLOFF = "0.400000"
+AMBI_POWER = "1.000000"
+DO_DYNZOOM = "0.000000"
+DO_VIGNETTE = "1.000000"
+V_SIZE = "1.350001"
+V_POWER = "1.170000"
+DO_SPOT = "1.000000"
+S_POSITION = "195.000000"
+S_SIZE = "1.000000"
+ASPECT_X = "1.000000"
+ASPECT_Y = "1.000000"
+DO_GAME_GEOM_OVERRIDE = "1.000000"
+GAME_GEOM_INT_SCALE = "2.000000"
+textures = "monitor_body_curved;monitor_body_straight;bg_under;bg_over;backdrop"
+monitor_body_curved = "textures/monitor_body_curved.png"
+monitor_body_curved_linear = "true"
+monitor_body_curved_wrap_mode = "clamp_to_edge"
+monitor_body_curved_mipmap = "true"
+monitor_body_straight = "textures/monitor_body_straight.png"
+monitor_body_straight_linear = "true"
+monitor_body_straight_wrap_mode = "clamp_to_edge"
+monitor_body_straight_mipmap = "true"
+bg_under = "textures/background_under.png"
+bg_under_linear = "true"
+bg_under_wrap_mode = "mirrored_repeat"
+bg_under_mipmap = "true"
+bg_over = "textures/background_over.png"
+bg_over_linear = "true"
+bg_over_wrap_mode = "mirrored_repeat"
+bg_over_mipmap = "true"
+backdrop = "textures/boothill.jpg"
+backdrop_linear = "true"
+backdrop_wrap_mode = "mirrored_repeat"
+backdrop_mipmap = "true"
diff --git a/bezel/koko-aio/monitor-BASE.slangp b/bezel/koko-aio/monitor-BASE.slangp
index c568bc9..5936a89 100644
--- a/bezel/koko-aio/monitor-BASE.slangp
+++ b/bezel/koko-aio/monitor-BASE.slangp
@@ -1,20 +1,20 @@
shaders = "17"
-shader0 = "shaders/ntsc_pass.slang"
+shader0 = "shaders/colortools_and_ntsc_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
-alias0 = "ntsc_pass"
+alias0 = "colortools_and_ntsc_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "1.000000"
-shader1 = "shaders/first_pass.slang"
+shader1 = "shaders/flick_and_noise.slang"
filter_linear1 = "false"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "false"
-alias1 = "first_pass"
+alias1 = "flick_and_noise_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
@@ -205,19 +205,19 @@ RGB_MASK_STRENGTH = "1.000000"
VMASK_USE_GM = "1.000000"
VMASK_GAP = "1.000000"
DARKLINES_STRENGTH = "0.000000"
+DO_SCANLINES = "1.000000"
+SCANLINE_MIN = "0.250000"
+SCANLINE_DARK = "0.050000"
DO_HALO = "1.000000"
HALO_POWER = "0.430000"
HALO_W = "3.500000"
HALO_H = "3.500000"
HALO_GAMMA = "1.300000"
HALO_VS_SCAN = "0.800000"
-DO_SCANLINES = "1.000000"
-SCANLINE_MIN = "0.250000"
-SCANLINE_DARK = "0.050000"
BLOOM_MIX = "0.500000"
DO_CURVATURE = "1.000000"
-GEOM_WARP_X = "0.450000"
-GEOM_WARP_Y = "0.500000"
+GEOM_WARP_X = "0.420000"
+GEOM_WARP_Y = "0.470000"
GEOM_CORNER_SIZE = "0.010000"
GEOM_CORNER_SMOOTH = "400.000000"
BEZEL_INNER_ZOOM = "-0.215000"
diff --git a/bezel/koko-aio/monitor-Commodore_1084S-Night.slangp b/bezel/koko-aio/monitor-Commodore_1084S-Night.slangp
index 62f8b0a..0330b83 100644
--- a/bezel/koko-aio/monitor-Commodore_1084S-Night.slangp
+++ b/bezel/koko-aio/monitor-Commodore_1084S-Night.slangp
@@ -1,20 +1,20 @@
shaders = "17"
-shader0 = "shaders/ntsc_pass.slang"
+shader0 = "shaders/colortools_and_ntsc_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
-alias0 = "ntsc_pass"
+alias0 = "colortools_and_ntsc_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "1.000000"
-shader1 = "shaders/first_pass.slang"
+shader1 = "shaders/flick_and_noise.slang"
filter_linear1 = "false"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "false"
-alias1 = "first_pass"
+alias1 = "flick_and_noise_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
@@ -204,24 +204,24 @@ DO_VMASK_AND_DARKLINES = "1.000000"
RGB_MASK_STRENGTH = "1.000000"
VMASK_USE_GM = "1.000000"
DARKLINES_STRENGTH = "0.000000"
+DO_SCANLINES = "1.000000"
+SCANLINE_MIN = "0.300000"
+SCANLINE_SM_TYPE = "1.000000"
+SCANLINE_SM_VOFFSET = "60.000000"
DO_HALO = "1.000000"
HALO_POWER = "0.430000"
HALO_W = "3.500000"
HALO_H = "3.500000"
HALO_GAMMA = "1.300000"
HALO_VS_SCAN = "1.000000"
-DO_SCANLINES = "1.000000"
-SCANLINE_MIN = "0.300000"
-SCANLINE_SM_TYPE = "1.000000"
-SCANLINE_SM_VOFFSET = "60.000000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.500000"
DO_CURVATURE = "1.000000"
-GEOM_WARP_X = "0.450000"
-GEOM_WARP_Y = "0.500000"
-GEOM_CORNER_SMOOTH = "700.000000"
+GEOM_WARP_X = "0.420000"
+GEOM_WARP_Y = "0.470000"
+GEOM_CORNER_SMOOTH = "400.000000"
DO_BEZEL = "1.000000"
-BEZEL_INNER_ZOOM = "-0.600000"
+BEZEL_INNER_ZOOM = "-0.522000"
BEZEL_FRAME_ZOOM = "-0.247000"
BEZEL_R = "0.030000"
BEZEL_G = "0.015000"
diff --git a/bezel/koko-aio/monitor-Commodore_1084S-wider.slangp b/bezel/koko-aio/monitor-Commodore_1084S-wider.slangp
index 1c942c5..5a1ece5 100644
--- a/bezel/koko-aio/monitor-Commodore_1084S-wider.slangp
+++ b/bezel/koko-aio/monitor-Commodore_1084S-wider.slangp
@@ -1,20 +1,20 @@
shaders = "17"
-shader0 = "shaders/ntsc_pass.slang"
+shader0 = "shaders/colortools_and_ntsc_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
-alias0 = "ntsc_pass"
+alias0 = "colortools_and_ntsc_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "1.000000"
-shader1 = "shaders/first_pass.slang"
+shader1 = "shaders/flick_and_noise.slang"
filter_linear1 = "false"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "false"
-alias1 = "first_pass"
+alias1 = "flick_and_noise_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
@@ -204,24 +204,24 @@ DO_VMASK_AND_DARKLINES = "1.000000"
RGB_MASK_STRENGTH = "1.000000"
VMASK_USE_GM = "1.000000"
DARKLINES_STRENGTH = "0.000000"
+DO_SCANLINES = "1.000000"
+SCANLINE_MIN = "0.300000"
+SCANLINE_SM_TYPE = "1.000000"
+SCANLINE_SM_VOFFSET = "60.000000"
DO_HALO = "1.000000"
HALO_POWER = "0.430000"
HALO_W = "3.500000"
HALO_H = "3.500000"
HALO_GAMMA = "1.300000"
HALO_VS_SCAN = "1.000000"
-DO_SCANLINES = "1.000000"
-SCANLINE_MIN = "0.300000"
-SCANLINE_SM_TYPE = "1.000000"
-SCANLINE_SM_VOFFSET = "60.000000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.500000"
DO_CURVATURE = "1.000000"
-GEOM_WARP_X = "0.450000"
-GEOM_WARP_Y = "0.500000"
-GEOM_CORNER_SMOOTH = "700.000000"
+GEOM_WARP_X = "0.420000"
+GEOM_WARP_Y = "0.470000"
+GEOM_CORNER_SMOOTH = "400.000000"
DO_BEZEL = "1.000000"
-BEZEL_INNER_ZOOM = "-0.440000"
+BEZEL_INNER_ZOOM = "-0.391000"
BEZEL_FRAME_ZOOM = "-0.140000"
BEZEL_R = "0.030000"
BEZEL_G = "0.015000"
diff --git a/bezel/koko-aio/monitor-Commodore_1084S.slangp b/bezel/koko-aio/monitor-Commodore_1084S.slangp
index 0d2a74d..464dd18 100644
--- a/bezel/koko-aio/monitor-Commodore_1084S.slangp
+++ b/bezel/koko-aio/monitor-Commodore_1084S.slangp
@@ -1,20 +1,20 @@
shaders = "17"
-shader0 = "shaders/ntsc_pass.slang"
+shader0 = "shaders/colortools_and_ntsc_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
-alias0 = "ntsc_pass"
+alias0 = "colortools_and_ntsc_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "1.000000"
-shader1 = "shaders/first_pass.slang"
+shader1 = "shaders/flick_and_noise.slang"
filter_linear1 = "false"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "false"
-alias1 = "first_pass"
+alias1 = "flick_and_noise_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
@@ -204,24 +204,24 @@ DO_VMASK_AND_DARKLINES = "1.000000"
RGB_MASK_STRENGTH = "1.000000"
VMASK_USE_GM = "1.000000"
DARKLINES_STRENGTH = "0.000000"
+DO_SCANLINES = "1.000000"
+SCANLINE_MIN = "0.300000"
+SCANLINE_SM_TYPE = "1.000000"
+SCANLINE_SM_VOFFSET = "60.000000"
DO_HALO = "1.000000"
HALO_POWER = "0.430000"
HALO_W = "3.500000"
HALO_H = "3.500000"
HALO_GAMMA = "1.300000"
HALO_VS_SCAN = "1.000000"
-DO_SCANLINES = "1.000000"
-SCANLINE_MIN = "0.300000"
-SCANLINE_SM_TYPE = "1.000000"
-SCANLINE_SM_VOFFSET = "60.000000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.500000"
DO_CURVATURE = "1.000000"
-GEOM_WARP_X = "0.450000"
-GEOM_WARP_Y = "0.500000"
-GEOM_CORNER_SMOOTH = "700.000000"
+GEOM_WARP_X = "0.420000"
+GEOM_WARP_Y = "0.470000"
+GEOM_CORNER_SMOOTH = "400.000000"
DO_BEZEL = "1.000000"
-BEZEL_INNER_ZOOM = "-0.600000"
+BEZEL_INNER_ZOOM = "-0.522000"
BEZEL_FRAME_ZOOM = "-0.247000"
BEZEL_R = "0.030000"
BEZEL_G = "0.015000"
diff --git a/bezel/koko-aio/monitor-bloom-bezel.slangp b/bezel/koko-aio/monitor-bloom-bezel.slangp
index c1ab793..ed6a5fd 100644
--- a/bezel/koko-aio/monitor-bloom-bezel.slangp
+++ b/bezel/koko-aio/monitor-bloom-bezel.slangp
@@ -1,20 +1,20 @@
shaders = "17"
-shader0 = "shaders/ntsc_pass.slang"
+shader0 = "shaders/colortools_and_ntsc_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
-alias0 = "ntsc_pass"
+alias0 = "colortools_and_ntsc_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "1.000000"
-shader1 = "shaders/first_pass.slang"
+shader1 = "shaders/flick_and_noise.slang"
filter_linear1 = "false"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "false"
-alias1 = "first_pass"
+alias1 = "flick_and_noise_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
@@ -205,23 +205,23 @@ RGB_MASK_STRENGTH = "1.000000"
VMASK_USE_GM = "1.000000"
VMASK_GAP = "1.000000"
DARKLINES_STRENGTH = "0.000000"
+DO_SCANLINES = "1.000000"
+SCANLINE_MIN = "0.250000"
+SCANLINE_MAX = "0.700000"
DO_HALO = "1.000000"
HALO_POWER = "0.380000"
HALO_W = "3.500000"
HALO_H = "3.500000"
HALO_GAMMA = "1.300000"
HALO_VS_SCAN = "0.800000"
-DO_SCANLINES = "1.000000"
-SCANLINE_MIN = "0.250000"
-SCANLINE_MAX = "0.700000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.500000"
DO_CURVATURE = "1.000000"
-GEOM_WARP_X = "0.450000"
-GEOM_WARP_Y = "0.500000"
+GEOM_WARP_X = "0.420000"
+GEOM_WARP_Y = "0.470000"
GEOM_CORNER_SMOOTH = "400.000000"
DO_BEZEL = "1.000000"
-BEZEL_INNER_ZOOM = "-0.185000"
+BEZEL_INNER_ZOOM = "-0.175000"
BEZEL_FRAME_ZOOM = "0.040000"
BEZEL_R = "-0.190000"
BEZEL_G = "-0.190000"
diff --git a/bezel/koko-aio/monitor-bloom-bezelwider.slangp b/bezel/koko-aio/monitor-bloom-bezelwider.slangp
index b635aa8..5707478 100644
--- a/bezel/koko-aio/monitor-bloom-bezelwider.slangp
+++ b/bezel/koko-aio/monitor-bloom-bezelwider.slangp
@@ -1,20 +1,20 @@
shaders = "17"
-shader0 = "shaders/ntsc_pass.slang"
+shader0 = "shaders/colortools_and_ntsc_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
-alias0 = "ntsc_pass"
+alias0 = "colortools_and_ntsc_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "1.000000"
-shader1 = "shaders/first_pass.slang"
+shader1 = "shaders/flick_and_noise.slang"
filter_linear1 = "false"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "false"
-alias1 = "first_pass"
+alias1 = "flick_and_noise_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
@@ -205,23 +205,23 @@ RGB_MASK_STRENGTH = "1.000000"
VMASK_USE_GM = "1.000000"
VMASK_GAP = "1.000000"
DARKLINES_STRENGTH = "0.000000"
+DO_SCANLINES = "1.000000"
+SCANLINE_MIN = "0.200000"
+SCANLINE_MAX = "0.700000"
DO_HALO = "1.000000"
HALO_POWER = "0.380000"
HALO_W = "3.500000"
HALO_H = "3.500000"
HALO_GAMMA = "1.300000"
HALO_VS_SCAN = "0.800000"
-DO_SCANLINES = "1.000000"
-SCANLINE_MIN = "0.200000"
-SCANLINE_MAX = "0.700000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.500000"
DO_CURVATURE = "1.000000"
-GEOM_WARP_X = "0.450000"
-GEOM_WARP_Y = "0.500000"
+GEOM_WARP_X = "0.420000"
+GEOM_WARP_Y = "0.470000"
GEOM_CORNER_SMOOTH = "400.000000"
DO_BEZEL = "1.000000"
-BEZEL_INNER_ZOOM = "-0.011000"
+BEZEL_INNER_ZOOM = "-0.014000"
BEZEL_FRAME_ZOOM = "0.170000"
BEZEL_R = "-0.190000"
BEZEL_G = "-0.190000"
diff --git a/bezel/koko-aio/monitor-bloom.slangp b/bezel/koko-aio/monitor-bloom.slangp
index 75e432b..e54c5f2 100644
--- a/bezel/koko-aio/monitor-bloom.slangp
+++ b/bezel/koko-aio/monitor-bloom.slangp
@@ -1,20 +1,20 @@
shaders = "17"
-shader0 = "shaders/ntsc_pass.slang"
+shader0 = "shaders/colortools_and_ntsc_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
-alias0 = "ntsc_pass"
+alias0 = "colortools_and_ntsc_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "1.000000"
-shader1 = "shaders/first_pass.slang"
+shader1 = "shaders/flick_and_noise.slang"
filter_linear1 = "false"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "false"
-alias1 = "first_pass"
+alias1 = "flick_and_noise_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
@@ -205,20 +205,20 @@ RGB_MASK_STRENGTH = "1.000000"
VMASK_USE_GM = "1.000000"
VMASK_GAP = "1.000000"
DARKLINES_STRENGTH = "0.000000"
+DO_SCANLINES = "1.000000"
+SCANLINE_MIN = "0.250000"
+SCANLINE_DARK = "0.050000"
DO_HALO = "1.000000"
HALO_POWER = "0.430000"
HALO_W = "3.500000"
HALO_H = "3.500000"
HALO_GAMMA = "1.300000"
HALO_VS_SCAN = "0.800000"
-DO_SCANLINES = "1.000000"
-SCANLINE_MIN = "0.250000"
-SCANLINE_DARK = "0.050000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.500000"
DO_CURVATURE = "1.000000"
-GEOM_WARP_X = "0.450000"
-GEOM_WARP_Y = "0.500000"
+GEOM_WARP_X = "0.420000"
+GEOM_WARP_Y = "0.470000"
GEOM_CORNER_SIZE = "0.010000"
GEOM_CORNER_SMOOTH = "400.000000"
BEZEL_INNER_ZOOM = "-0.215000"
diff --git a/bezel/koko-aio/monitor-slotmask-bloom-ShinyBezel.slangp b/bezel/koko-aio/monitor-slotmask-bloom-ShinyBezel.slangp
index 55d7f32..e465d00 100644
--- a/bezel/koko-aio/monitor-slotmask-bloom-ShinyBezel.slangp
+++ b/bezel/koko-aio/monitor-slotmask-bloom-ShinyBezel.slangp
@@ -1,20 +1,20 @@
shaders = "17"
-shader0 = "shaders/ntsc_pass.slang"
+shader0 = "shaders/colortools_and_ntsc_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
-alias0 = "ntsc_pass"
+alias0 = "colortools_and_ntsc_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "1.000000"
-shader1 = "shaders/first_pass.slang"
+shader1 = "shaders/flick_and_noise.slang"
filter_linear1 = "false"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "false"
-alias1 = "first_pass"
+alias1 = "flick_and_noise_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
@@ -205,24 +205,24 @@ RGB_MASK_STRENGTH = "1.000000"
VMASK_USE_GM = "1.000000"
VMASK_GAP = "1.000000"
DARKLINES_STRENGTH = "0.000000"
+DO_SCANLINES = "1.000000"
+SCANLINE_MIN = "0.250000"
+SCANLINE_SM_TYPE = "1.000000"
+SCANLINE_SM_VOFFSET = "70.000000"
DO_HALO = "1.000000"
HALO_POWER = "0.430000"
HALO_W = "3.500000"
HALO_H = "3.500000"
HALO_GAMMA = "1.300000"
HALO_VS_SCAN = "0.800000"
-DO_SCANLINES = "1.000000"
-SCANLINE_MIN = "0.250000"
-SCANLINE_SM_TYPE = "1.000000"
-SCANLINE_SM_VOFFSET = "70.000000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.500000"
DO_CURVATURE = "1.000000"
-GEOM_WARP_X = "0.450000"
-GEOM_WARP_Y = "0.500000"
+GEOM_WARP_X = "0.420000"
+GEOM_WARP_Y = "0.470000"
GEOM_CORNER_SMOOTH = "400.000000"
DO_BEZEL = "1.000000"
-BEZEL_INNER_ZOOM = "-0.185000"
+BEZEL_INNER_ZOOM = "-0.173000"
BEZEL_FRAME_ZOOM = "0.040000"
BEZEL_R = "-0.115000"
BEZEL_G = "-0.115000"
diff --git a/bezel/koko-aio/monitor-slotmask-bloom-bezel-backimage.slangp b/bezel/koko-aio/monitor-slotmask-bloom-bezel-backimage.slangp
index 5ec274b..df87e40 100644
--- a/bezel/koko-aio/monitor-slotmask-bloom-bezel-backimage.slangp
+++ b/bezel/koko-aio/monitor-slotmask-bloom-bezel-backimage.slangp
@@ -1,20 +1,20 @@
shaders = "17"
-shader0 = "shaders/ntsc_pass.slang"
+shader0 = "shaders/colortools_and_ntsc_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
-alias0 = "ntsc_pass"
+alias0 = "colortools_and_ntsc_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "1.000000"
-shader1 = "shaders/first_pass.slang"
+shader1 = "shaders/flick_and_noise.slang"
filter_linear1 = "false"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "false"
-alias1 = "first_pass"
+alias1 = "flick_and_noise_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
@@ -205,24 +205,24 @@ RGB_MASK_STRENGTH = "1.000000"
VMASK_USE_GM = "1.000000"
VMASK_GAP = "1.000000"
DARKLINES_STRENGTH = "0.000000"
+DO_SCANLINES = "1.000000"
+SCANLINE_MIN = "0.250000"
+SCANLINE_SM_TYPE = "1.000000"
+SCANLINE_SM_VOFFSET = "70.000000"
DO_HALO = "1.000000"
HALO_POWER = "0.430000"
HALO_W = "3.500000"
HALO_H = "3.500000"
HALO_GAMMA = "1.300000"
HALO_VS_SCAN = "0.800000"
-DO_SCANLINES = "1.000000"
-SCANLINE_MIN = "0.250000"
-SCANLINE_SM_TYPE = "1.000000"
-SCANLINE_SM_VOFFSET = "70.000000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.500000"
DO_CURVATURE = "1.000000"
-GEOM_WARP_X = "0.450000"
-GEOM_WARP_Y = "0.500000"
+GEOM_WARP_X = "0.420000"
+GEOM_WARP_Y = "0.470000"
GEOM_CORNER_SMOOTH = "400.000000"
DO_BEZEL = "1.000000"
-BEZEL_INNER_ZOOM = "-0.185000"
+BEZEL_INNER_ZOOM = "-0.173000"
BEZEL_FRAME_ZOOM = "0.040000"
BEZEL_R = "-0.190000"
BEZEL_G = "-0.190000"
diff --git a/bezel/koko-aio/monitor-slotmask-bloom-bezel.slangp b/bezel/koko-aio/monitor-slotmask-bloom-bezel.slangp
index 84123aa..cbb1ed4 100644
--- a/bezel/koko-aio/monitor-slotmask-bloom-bezel.slangp
+++ b/bezel/koko-aio/monitor-slotmask-bloom-bezel.slangp
@@ -1,20 +1,20 @@
shaders = "17"
-shader0 = "shaders/ntsc_pass.slang"
+shader0 = "shaders/colortools_and_ntsc_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
-alias0 = "ntsc_pass"
+alias0 = "colortools_and_ntsc_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "1.000000"
-shader1 = "shaders/first_pass.slang"
+shader1 = "shaders/flick_and_noise.slang"
filter_linear1 = "false"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "false"
-alias1 = "first_pass"
+alias1 = "flick_and_noise_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
@@ -205,24 +205,24 @@ RGB_MASK_STRENGTH = "1.000000"
VMASK_USE_GM = "1.000000"
VMASK_GAP = "1.000000"
DARKLINES_STRENGTH = "0.000000"
+DO_SCANLINES = "1.000000"
+SCANLINE_MIN = "0.250000"
+SCANLINE_SM_TYPE = "1.000000"
+SCANLINE_SM_VOFFSET = "70.000000"
DO_HALO = "1.000000"
HALO_POWER = "0.430000"
HALO_W = "3.500000"
HALO_H = "3.500000"
HALO_GAMMA = "1.300000"
HALO_VS_SCAN = "0.800000"
-DO_SCANLINES = "1.000000"
-SCANLINE_MIN = "0.250000"
-SCANLINE_SM_TYPE = "1.000000"
-SCANLINE_SM_VOFFSET = "70.000000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.500000"
DO_CURVATURE = "1.000000"
-GEOM_WARP_X = "0.450000"
-GEOM_WARP_Y = "0.500000"
+GEOM_WARP_X = "0.420000"
+GEOM_WARP_Y = "0.470000"
GEOM_CORNER_SMOOTH = "400.000000"
DO_BEZEL = "1.000000"
-BEZEL_INNER_ZOOM = "-0.185000"
+BEZEL_INNER_ZOOM = "-0.173000"
BEZEL_FRAME_ZOOM = "0.040000"
BEZEL_R = "-0.190000"
BEZEL_G = "-0.190000"
diff --git a/bezel/koko-aio/monitor-slotmask-bloom-bezelwider-classic_take.slangp b/bezel/koko-aio/monitor-slotmask-bloom-bezelwider-classic_take.slangp
index 1cf7dcb..9d4d5f2 100644
--- a/bezel/koko-aio/monitor-slotmask-bloom-bezelwider-classic_take.slangp
+++ b/bezel/koko-aio/monitor-slotmask-bloom-bezelwider-classic_take.slangp
@@ -1,20 +1,20 @@
shaders = "17"
-shader0 = "shaders/ntsc_pass.slang"
+shader0 = "shaders/colortools_and_ntsc_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
-alias0 = "ntsc_pass"
+alias0 = "colortools_and_ntsc_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "1.000000"
-shader1 = "shaders/first_pass.slang"
+shader1 = "shaders/flick_and_noise.slang"
filter_linear1 = "false"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "false"
-alias1 = "first_pass"
+alias1 = "flick_and_noise_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
@@ -204,23 +204,23 @@ IN_GLOW_BIAS = "0.000000"
DO_VMASK_AND_DARKLINES = "1.000000"
RGB_MASK_STRENGTH = "1.000000"
VMASK_USE_GM = "1.000000"
+DO_SCANLINES = "1.000000"
+SCANLINE_MIN = "0.250000"
+SCANLINE_SM_VOFFSET = "70.000000"
DO_HALO = "1.000000"
HALO_POWER = "0.430000"
HALO_W = "3.500000"
HALO_H = "3.500000"
HALO_GAMMA = "1.300000"
HALO_VS_SCAN = "0.800000"
-DO_SCANLINES = "1.000000"
-SCANLINE_MIN = "0.250000"
-SCANLINE_SM_VOFFSET = "70.000000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.500000"
DO_CURVATURE = "1.000000"
-GEOM_WARP_X = "0.450000"
-GEOM_WARP_Y = "0.500000"
+GEOM_WARP_X = "0.420000"
+GEOM_WARP_Y = "0.470000"
GEOM_CORNER_SMOOTH = "400.000000"
DO_BEZEL = "1.000000"
-BEZEL_INNER_ZOOM = "-0.011000"
+BEZEL_INNER_ZOOM = "-0.013000"
BEZEL_FRAME_ZOOM = "0.170000"
BEZEL_R = "-0.190000"
BEZEL_G = "-0.190000"
diff --git a/bezel/koko-aio/monitor-slotmask-bloom-bezelwider.slangp b/bezel/koko-aio/monitor-slotmask-bloom-bezelwider.slangp
index e42b3a4..4cf76b0 100644
--- a/bezel/koko-aio/monitor-slotmask-bloom-bezelwider.slangp
+++ b/bezel/koko-aio/monitor-slotmask-bloom-bezelwider.slangp
@@ -1,20 +1,20 @@
shaders = "17"
-shader0 = "shaders/ntsc_pass.slang"
+shader0 = "shaders/colortools_and_ntsc_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
-alias0 = "ntsc_pass"
+alias0 = "colortools_and_ntsc_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "1.000000"
-shader1 = "shaders/first_pass.slang"
+shader1 = "shaders/flick_and_noise.slang"
filter_linear1 = "false"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "false"
-alias1 = "first_pass"
+alias1 = "flick_and_noise_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
@@ -205,24 +205,24 @@ RGB_MASK_STRENGTH = "1.000000"
VMASK_USE_GM = "1.000000"
VMASK_GAP = "1.000000"
DARKLINES_STRENGTH = "0.000000"
+DO_SCANLINES = "1.000000"
+SCANLINE_MIN = "0.250000"
+SCANLINE_SM_TYPE = "1.000000"
+SCANLINE_SM_VOFFSET = "70.000000"
DO_HALO = "1.000000"
HALO_POWER = "0.430000"
HALO_W = "3.500000"
HALO_H = "3.500000"
HALO_GAMMA = "1.300000"
HALO_VS_SCAN = "0.800000"
-DO_SCANLINES = "1.000000"
-SCANLINE_MIN = "0.250000"
-SCANLINE_SM_TYPE = "1.000000"
-SCANLINE_SM_VOFFSET = "70.000000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.500000"
DO_CURVATURE = "1.000000"
-GEOM_WARP_X = "0.450000"
-GEOM_WARP_Y = "0.500000"
+GEOM_WARP_X = "0.420000"
+GEOM_WARP_Y = "0.470000"
GEOM_CORNER_SMOOTH = "400.000000"
DO_BEZEL = "1.000000"
-BEZEL_INNER_ZOOM = "-0.011000"
+BEZEL_INNER_ZOOM = "-0.013000"
BEZEL_FRAME_ZOOM = "0.170000"
BEZEL_R = "-0.190000"
BEZEL_G = "-0.190000"
diff --git a/bezel/koko-aio/monitor-slotmask-bloom.slangp b/bezel/koko-aio/monitor-slotmask-bloom.slangp
index 1bda49c..4b9b104 100644
--- a/bezel/koko-aio/monitor-slotmask-bloom.slangp
+++ b/bezel/koko-aio/monitor-slotmask-bloom.slangp
@@ -1,20 +1,20 @@
shaders = "17"
-shader0 = "shaders/ntsc_pass.slang"
+shader0 = "shaders/colortools_and_ntsc_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
-alias0 = "ntsc_pass"
+alias0 = "colortools_and_ntsc_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "1.000000"
-shader1 = "shaders/first_pass.slang"
+shader1 = "shaders/flick_and_noise.slang"
filter_linear1 = "false"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "false"
-alias1 = "first_pass"
+alias1 = "flick_and_noise_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
@@ -205,21 +205,21 @@ RGB_MASK_STRENGTH = "1.000000"
VMASK_USE_GM = "1.000000"
VMASK_GAP = "1.000000"
DARKLINES_STRENGTH = "0.000000"
+DO_SCANLINES = "1.000000"
+SCANLINE_MIN = "0.250000"
+SCANLINE_SM_TYPE = "1.000000"
+SCANLINE_SM_VOFFSET = "70.000000"
DO_HALO = "1.000000"
HALO_POWER = "0.430000"
HALO_W = "3.500000"
HALO_H = "3.500000"
HALO_GAMMA = "1.300000"
HALO_VS_SCAN = "0.800000"
-DO_SCANLINES = "1.000000"
-SCANLINE_MIN = "0.250000"
-SCANLINE_SM_TYPE = "1.000000"
-SCANLINE_SM_VOFFSET = "70.000000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.500000"
DO_CURVATURE = "1.000000"
-GEOM_WARP_X = "0.450000"
-GEOM_WARP_Y = "0.500000"
+GEOM_WARP_X = "0.420000"
+GEOM_WARP_Y = "0.470000"
GEOM_CORNER_SIZE = "0.010000"
GEOM_CORNER_SMOOTH = "400.000000"
BEZEL_INNER_ZOOM = "-0.215000"
diff --git a/bezel/koko-aio/monitor-slotmask.slangp b/bezel/koko-aio/monitor-slotmask.slangp
index 112ea04..d9f172e 100644
--- a/bezel/koko-aio/monitor-slotmask.slangp
+++ b/bezel/koko-aio/monitor-slotmask.slangp
@@ -1,20 +1,20 @@
shaders = "17"
-shader0 = "shaders/ntsc_pass.slang"
+shader0 = "shaders/colortools_and_ntsc_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
-alias0 = "ntsc_pass"
+alias0 = "colortools_and_ntsc_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "1.000000"
-shader1 = "shaders/first_pass.slang"
+shader1 = "shaders/flick_and_noise.slang"
filter_linear1 = "false"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "false"
-alias1 = "first_pass"
+alias1 = "flick_and_noise_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
@@ -205,20 +205,20 @@ RGB_MASK_STRENGTH = "1.000000"
VMASK_USE_GM = "1.000000"
VMASK_GAP = "1.000000"
DARKLINES_STRENGTH = "0.000000"
+DO_SCANLINES = "1.000000"
+SCANLINE_MIN = "0.250000"
+SCANLINE_SM_TYPE = "1.000000"
+SCANLINE_SM_VOFFSET = "70.000000"
DO_HALO = "1.000000"
HALO_POWER = "0.430000"
HALO_W = "3.500000"
HALO_H = "3.500000"
HALO_GAMMA = "1.300000"
HALO_VS_SCAN = "0.800000"
-DO_SCANLINES = "1.000000"
-SCANLINE_MIN = "0.250000"
-SCANLINE_SM_TYPE = "1.000000"
-SCANLINE_SM_VOFFSET = "70.000000"
BLOOM_MIX = "0.500000"
DO_CURVATURE = "1.000000"
-GEOM_WARP_X = "0.450000"
-GEOM_WARP_Y = "0.500000"
+GEOM_WARP_X = "0.420000"
+GEOM_WARP_Y = "0.470000"
GEOM_CORNER_SIZE = "0.010000"
GEOM_CORNER_SMOOTH = "400.000000"
BEZEL_INNER_ZOOM = "-0.215000"
diff --git a/bezel/koko-aio/shaders/ambi_temporal_pass.slang b/bezel/koko-aio/shaders/ambi_temporal_pass.slang
index e7df0e3..d9e0499 100644
--- a/bezel/koko-aio/shaders/ambi_temporal_pass.slang
+++ b/bezel/koko-aio/shaders/ambi_temporal_pass.slang
@@ -31,7 +31,7 @@ void main() {
fstep = (border_max - border_min) / (leds_per_strip-1);
//Calc a lod for a texture sized led_strip x led_strip
- lod = log2(global.first_passSize.y / leds_per_strip);
+ lod = log2(global.flick_and_noise_passSize.y / leds_per_strip);
//Scale to the original aspect
@@ -40,10 +40,10 @@ void main() {
bool isrotated = is_rotated();
vIs_rotated = float(isrotated);
- if ( !do_integer_scale() )
+ if ( need_NO_integer_scale() )
pre_pass_coords = get_scaled_coords_aspect(TexCoord,global.FinalViewportSize, in_aspect, isrotated) + vec2(0.00001);
else
- pre_pass_coords = integer_scale(TexCoord, in_aspect, isrotated) ;
+ pre_pass_coords = integer_scale(TexCoord, in_aspect, isrotated, GAME_GEOM_INT_SCALE-1.0 ) ;
if (DO_GLOBAL_SHZO >0.5)
@@ -73,13 +73,13 @@ layout(location = 0) out vec4 FragColor;
layout(set = 0, binding = 1) uniform sampler2D PastSampler;
layout(set = 0, binding = 2) uniform sampler2D avglum_pass;
layout(set = 0, binding = 3) uniform sampler2D avglum_passFeedback;
-layout(set = 0, binding = 4) uniform sampler2D first_pass;
+layout(set = 0, binding = 4) uniform sampler2D flick_and_noise_pass;
vec3 ambi_push_pass(vec2 coords, float f_lod) {
- vec3 pixel_out = textureLod(first_pass, coords, f_lod).rgb;
+ vec3 pixel_out = textureLod(flick_and_noise_pass, coords, f_lod).rgb;
pixel_out = apply_fuzzy_main_pass(pixel_out);
pixel_out = pixel_push_luminance(pixel_out, AMBI_POWER-1);
return pixel_out;
diff --git a/bezel/koko-aio/shaders/avglum_pass.slang b/bezel/koko-aio/shaders/avglum_pass.slang
index 827489c..8db583d 100644
--- a/bezel/koko-aio/shaders/avglum_pass.slang
+++ b/bezel/koko-aio/shaders/avglum_pass.slang
@@ -31,7 +31,7 @@ void main() {
layout(location = 0) in vec2 vTexCoord;
layout(location = 1) in float lod;
layout(location = 0) out vec4 FragColor;
-layout(set = 0, binding = 2) uniform sampler2D first_pass;
+layout(set = 0, binding = 2) uniform sampler2D flick_and_noise_pass;
layout(set = 0, binding = 3) uniform sampler2D avglum_passFeedback;
/* The following will allow to sample at reduced interval
@@ -45,7 +45,7 @@ layout(set = 0, binding = 3) uniform sampler2D avglum_passFeedback;
#define RGB_TO_GRAYSCALE = vec3(0.299, 0.587, 0.114)
float get_avg_lum_from_mip() {
- vec3 mip = textureLod(first_pass, vec2(0.5,0.5),20.0).rgb;
+ vec3 mip = textureLod(flick_and_noise_pass, vec2(0.5,0.5),20.0).rgb;
mip = apply_fuzzy_main_pass(mip);
//return (mip.r+mip.g+mip.b)/3.0;
return rgb_to_gray(mip);
@@ -92,7 +92,7 @@ float get_avglum() {
}
void main() {
- /*Grab a mipmap from the first pass.
+ /*Grab a mipmap from the flick_and_noise_pass.
Calculate the average luminance from the smallest mipmap and put into the alpha channel
So that can be used:
1 - continuously at coordinate 0.5,0.5
@@ -109,11 +109,11 @@ void main() {
if (DO_BEZEL + DO_BLOOM > 0.0) {
//Create a small mipmap to be used to light the bezel corners
//and by the bloom pass to identify bright areas.
- pixel_out.rgb = textureLod(first_pass, vTexCoord, mip_lod).rgb;
+ pixel_out.rgb = textureLod(flick_and_noise_pass, vTexCoord, mip_lod).rgb;
}
FragColor = pixel_out;
- //FragColor = texture(first_pass, vTexCoord);
+ //FragColor = texture(flick_and_noise_pass, vTexCoord);
}
diff --git a/bezel/koko-aio/shaders/bloom_pass_1.slang b/bezel/koko-aio/shaders/bloom_pass_1.slang
index 53100dc..eba32db 100644
--- a/bezel/koko-aio/shaders/bloom_pass_1.slang
+++ b/bezel/koko-aio/shaders/bloom_pass_1.slang
@@ -18,7 +18,7 @@ void main() {
layout(location = 0) in vec2 vTexCoord;
layout(location = 0) out vec4 FragColor;
-layout(set = 0, binding = 1) uniform sampler2D ntsc_pass;
+layout(set = 0, binding = 1) uniform sampler2D colortools_and_ntsc_pass;
#include "includes/functions.include.slang"
#include "includes/blooms.include.slang"
@@ -28,7 +28,7 @@ void main() {
vec3 bloomed = bloom_gamma_power(
- ntsc_pass,
+ colortools_and_ntsc_pass,
vTexCoord,
params.OriginalSize,
vec2(BLOOM_SIZE),
diff --git a/bezel/koko-aio/shaders/bloom_pass_4.slang b/bezel/koko-aio/shaders/bloom_pass_4.slang
index 14ebe76..29c0f98 100644
--- a/bezel/koko-aio/shaders/bloom_pass_4.slang
+++ b/bezel/koko-aio/shaders/bloom_pass_4.slang
@@ -20,7 +20,7 @@ layout(location = 0) in vec2 vTexCoord;
layout(location = 0) out vec4 FragColor;
layout(set = 0, binding = 1) uniform sampler2D Source;
layout(set = 0, binding = 2) uniform sampler2D avglum_pass;
-layout(set = 0, binding = 3) uniform sampler2D first_pass;
+layout(set = 0, binding = 3) uniform sampler2D flick_and_noise_pass;
layout(set = 0, binding = 4) uniform sampler2D bloom_pass_finalFeedback;
@@ -40,7 +40,7 @@ layout(set = 0, binding = 4) uniform sampler2D bloom_pass_finalFeedback;
float get_avg_lum_from_mip(sampler2D tex, vec2 co, float lod) {
- vec3 mip = textureLod(first_pass, co, lod).rgb;
+ vec3 mip = textureLod(flick_and_noise_pass, co, lod).rgb;
mip = apply_fuzzy_main_pass(mip);
//return (mip.r+mip.g+mip.b)/3.0;
float luminance_from_feedback = rgb_to_gray(mip);
@@ -105,7 +105,7 @@ void main() {
// (Branching with (if BLOOM_EYE_ADPT_SRT == 0.0) does not gain anything.)
// Modulate exposure over time too.
//Smooth luminance with specified lod in this alpha channel
- float zone_luminance = get_avg_lum_from_mip(first_pass, vTexCoord, BLOOM_PUPIL_LUM_ZONE_W);
+ float zone_luminance = get_avg_lum_from_mip(flick_and_noise_pass, vTexCoord, BLOOM_PUPIL_LUM_ZONE_W);
float smoothed_avglum = zone_luminance * BLOOM_EYE_ADPT_SRT;
bloom_mix_adapted = max(0.0, BLOOM_MIX - smoothed_avglum);
diff --git a/bezel/koko-aio/shaders/ntsc_pass.slang b/bezel/koko-aio/shaders/colortools_and_ntsc_pass.slang
similarity index 78%
rename from bezel/koko-aio/shaders/ntsc_pass.slang
rename to bezel/koko-aio/shaders/colortools_and_ntsc_pass.slang
index d359625..03e51a1 100644
--- a/bezel/koko-aio/shaders/ntsc_pass.slang
+++ b/bezel/koko-aio/shaders/colortools_and_ntsc_pass.slang
@@ -17,30 +17,6 @@ layout(location = 4) out float vNTSC_weights[NTSC_FILTER_WIDTH_MAX];
#include "includes/functions.include.slang"
-vec3 kelvin2rgb(float k) {
- //Convert kelvin temperature to rgb factors
- k = clamp(k,1000,40000);
- k=k/100.0;
- float tmpCalc;
- vec3 pixel_out;
- if (k<=66) {
- pixel_out.r = 255;
- pixel_out.g = 99.47080258612 * log(k) - 161.11956816610;
- } else {
- pixel_out.r = 329.6987274461 * pow(k - 60 ,-0.13320475922);
- pixel_out.g = 288.12216952833 * pow(k-60, -0.07551484921);
- }
-
- if (k >= 66)
- pixel_out.b = 255;
- else if (k<=19)
- pixel_out.b = 0;
- else
- pixel_out.b = 138.51773122311 * log(k - 10) - 305.04479273072;
-
- return pixel_out/255.0;
-}
-
/* hann() sinc() functions by xot:
* copyright (c) 2017-2018, John Leffingwell
* license CC BY-SA Attribution-ShareAlike
@@ -98,7 +74,7 @@ layout(location = 4) in float vNTSC_weights[NTSC_FILTER_WIDTH_MAX];
layout(location = 0) out vec4 FragColor;
layout(set = 0, binding = 2) uniform sampler2D Source;
-//layout(set = 0, binding = 3) uniform sampler2D ntsc_passFeedback;
+layout(set = 0, binding = 3) uniform sampler2D colortools_and_ntsc_passFeedback;
// Colorspace conversion matrix for YIQ-to-RGB
@@ -151,31 +127,6 @@ vec4 ntscdec(vec2 uv) {
}
-
-
-#define W vec3(0.2125, 0.7154, 0.0721)
-vec3 color_tools(vec3 pixel_out) {
-//Apply color corrections to input signal.
-
- //Push luminance without clipping
- pixel_out = pixel_push_luminance(pixel_out,LUMINANCE);
-
- //Modify saturation
- if (!(SATURATION == 1.0)) {
- vec3 intensity = vec3(dot(pixel_out.rgb, W));
- pixel_out.rgb = mix(intensity, pixel_out.rgb, SATURATION);
- }
-
- //Modify contrast and brightness
- if (CONTRAST != 0.0 || BRIGHTNESS != 0.0)
- pixel_out.rgb = apply_contrast_brightness(pixel_out.rgb, CONTRAST, BRIGHTNESS);
-
- //Modify color temperature
- if (TEMPERATURE != 6500.0) pixel_out.rgb = pixel_out.rgb * vTemperature_rgb;
- return pixel_out;
-}
-
-
vec3 debug() {
vec3 pixel_debug;
float blink_time = 120;
@@ -190,7 +141,6 @@ void main() {
//FragColor = vec4(debug(), 1.0); return;
-
//This will go into alpha channel to make glow aware of it and blur more.
//It could be configurable.
float artifacts = 0.0;
@@ -202,7 +152,7 @@ void main() {
pixel_out = pixel_out_vec4.rgb;
artifacts = pixel_out_vec4.a;
- //artifacts = mix(artifacts, texture(ntsc_passFeedback, vTexCoord).a, 0.5); <-- this helps
+ //artifacts = mix(artifacts, texture(colortools_and_ntsc_passFeedback, vTexCoord).a, 0.5); <-- this helps
//FragColor = vec4(artifacts); return;
/*
@@ -217,10 +167,24 @@ void main() {
}
if (DO_CCORRECTION == 1.0)
- pixel_out = color_tools(pixel_out);
+ pixel_out = color_tools(pixel_out, vTemperature_rgb);
+ if (DO_DOT_MATRIX + DOT_M_MBLUR_STR > 1.0) {
+ vec3 feedback = texture(colortools_and_ntsc_passFeedback, vTexCoord).rgb;
+
+ vec3 m_blur_adapted = vec3(DOT_M_MBLUR_STR);
+ if (DOT_M_MBLUR_MODE > 0.0) {
+ vec3 adaption = mix_step (pixel_out - feedback,
+ feedback - pixel_out,
+ DOT_M_MBLUR_MODE -1);
+ //adaption = mix_step(adaption, -adaption, DOT_M_MBLUR_MODE -1);
+ m_blur_adapted *= clamp( adaption, 0.0, 1.0 );
+ m_blur_adapted = pow(m_blur_adapted, vec3(0.25));
+ }
+ pixel_out = mix(pixel_out, feedback, m_blur_adapted );
+ }
FragColor = vec4(pixel_out, artifacts);
diff --git a/bezel/koko-aio/shaders/config.globals.inc b/bezel/koko-aio/shaders/config.globals.inc
index dee14e3..90ec60c 100644
--- a/bezel/koko-aio/shaders/config.globals.inc
+++ b/bezel/koko-aio/shaders/config.globals.inc
@@ -55,7 +55,10 @@
#define CONTRAST global.CONTRAST
#define BRIGHTNESS global.BRIGHTNESS
#define TEMPERATURE global.TEMPERATURE
-
+ #define COLOR_MONO_COLORIZE global.COLOR_MONO_COLORIZE
+ #define COLOR_MONO_HUE1 global.COLOR_MONO_HUE1
+ #define COLOR_MONO_HUE2 global.COLOR_MONO_HUE2
+ #define COLOR_MONO_HUE_BIAS global.COLOR_MONO_HUE_BIAS
#define DO_FXAA global.DO_FXAA
@@ -252,3 +255,19 @@
#define TILT_Y global.TILT_Y
#define TILT_FOV global.TILT_FOV
#define TILT_BEZEL_K global.TILT_BEZEL_K
+
+#define TATE global.TATE
+
+#define DO_DOT_MATRIX global.DO_DOT_MATRIX
+ #define DOT_M_G_SHARP global.DOT_M_G_SHARP
+ #define DOT_M_RGB_SHARP global.DOT_M_RGB_SHARP
+ #define DOT_M_RGB_STR global.DOT_M_RGB_STR
+ #define DOT_M_G_TRESH global.DOT_M_G_TRESH
+ #define DOT_M_G_BRT global.DOT_M_G_BRT
+ #define DOT_M_G_GAIN global.DOT_M_G_GAIN
+ #define DOT_M_G_STR global.DOT_M_G_STR
+ #define DOT_M_MBLUR_STR global.DOT_M_MBLUR_STR
+ #define DOT_M_MBLUR_MODE global.DOT_M_MBLUR_MODE
+ #define DOT_M_MULTIPLY global.DOT_M_MULTIPLY
+ #define DOT_M_SHADOW_STR global.DOT_M_SHADOW_STR
+ #define DOT_M_SHADOW_OFF global.DOT_M_SHADOW_OFF
diff --git a/bezel/koko-aio/shaders/config.inc b/bezel/koko-aio/shaders/config.inc
index db2dbea..22f7777 100644
--- a/bezel/koko-aio/shaders/config.inc
+++ b/bezel/koko-aio/shaders/config.inc
@@ -1,9 +1,13 @@
// BEZEL STATIC CONFIG ##############################################################################################
+ //The following defines the monitor frame resolution in textures/monitor_body_[curved/straight].png
+ //and are used to calculate the sampling lod.
+ //Change if you change the texture resolution or
+ //you can comment it to let the shader calculates them at runtime (heavier).
+#define BEZEL_RES vec2(2923, 2178)
- // Uncomment this to improve bezel downscaling.
- // If you are using standard bezel, leave commented to gain performance.
-#define STATIC_BEZEL_USE_MIPMAP 1.0
+ //The following can slightly correct bezel aspect
+#define BEZEL_ASPECT_CORRECTION (1.0 - 0.004)
//This is used to skip calculations in the reflection blur code.
//set it to minimum value that allows you to see reflection entirely
@@ -183,9 +187,14 @@ layout(std140, set = 0, binding = 0) uniform UBO {
//vec4 monitor_bodySize;
//vec4 bgSize;
vec4 avglum_passSize;
- vec4 first_passSize;
- vec4 ntsc_passSize;
+ vec4 flick_and_noise_passSize;
+ vec4 colortools_and_ntsc_passSize;
+ float COLOR_MONO_COLORIZE;
+ float COLOR_MONO_HUE1;
+ float COLOR_MONO_HUE2;
+ float COLOR_MONO_HUE_BIAS;
+
float DO_SCANLINES;
float DO_IN_GLOW;
float DO_VMASK_AND_DARKLINES ;
@@ -337,16 +346,36 @@ layout(std140, set = 0, binding = 0) uniform UBO {
float BACKDROP_OFFY;
float BACKDROP_ZOOM;
+ float TATE;
+
+ float DO_DOT_MATRIX;
+ float DOT_M_G_SHARP;
+ float DOT_M_G_TRESH;
+ float DOT_M_G_STR;
+ float DOT_M_G_BRT;
+ float DOT_M_RGB_SHARP;
+ float DOT_M_RGB_STR;
+ float DOT_M_G_GAIN;
+ float DOT_M_MBLUR_STR;
+ float DOT_M_MBLUR_MODE;
+ float DOT_M_MULTIPLY;
+ float DOT_M_SHADOW_STR;
+ float DOT_M_SHADOW_OFF;
+
} global;
// Color correction
#pragma parameter DO_CCORRECTION "★ Color corrections enable? ==>" 0.0 0.0 1.0 1.0
#pragma parameter LUMINANCE " Luminance push (>1.0=clip)" 0.0 0.0 1.5 0.05
-#pragma parameter SATURATION " Saturation in (1.0=off)" 1.0 0.0 2.0 0.01
-#pragma parameter CONTRAST " Contrast in (0.0=off)" 0.0 -1.0 1.0 0.01
#pragma parameter BRIGHTNESS " Brightness in (0.0=off)" 0.0 -1.0 1.0 0.01
+#pragma parameter CONTRAST " Contrast in (0.0=off)" 0.0 -1.0 1.0 0.01
#pragma parameter TEMPERATURE " Temperature in (6500=off)" 6500.0 3000 10000.0 50.0
#pragma parameter GAMMA_OUT " Gamma out" 0.69 0.1 4.0 0.01
+#pragma parameter COLOR_MONO_COLORIZE " Monochrome screen colorization" 0.0 0.0 1.0 0.1
+#pragma parameter COLOR_MONO_HUE1 " . Hue bright" 0.25 0.0 1.0 0.01
+#pragma parameter COLOR_MONO_HUE2 " . Hue dark" 0.3 0.0 1.0 0.01
+#pragma parameter COLOR_MONO_HUE_BIAS " . Hue bright-dark bias" 0.0 -2.0 2.0 0.01
+#pragma parameter SATURATION " Saturation in (1.0=off)" 1.0 0.0 2.0 0.01
#pragma parameter BLANK1 " " 0.0 0.0 1.0 1.0
@@ -411,7 +440,6 @@ layout(std140, set = 0, binding = 0) uniform UBO {
#pragma parameter BLANK7 " " 0.0 0.0 1.0 1.0
-
// Mask
#pragma parameter DO_VMASK_AND_DARKLINES "★ Masks and/or Darklines enable? ==>" 0.0 0.0 1.0 1.0
#pragma parameter MASK_COMPENSATION " Compensate for brightness loss" 0.0 0.0 1.0 0.05
@@ -428,21 +456,11 @@ layout(std140, set = 0, binding = 0) uniform UBO {
#pragma parameter DRKLN_OVERWHITE " . Affect bright colors" 1.0 0.0 1.0 0.05
#pragma parameter BLANK9 " " 0.0 0.0 1.0 1.0
-
-
-// Halo
-#pragma parameter DO_HALO "★ Halo enable? ==>" 0.0 0.0 1.0 1.0
-#pragma parameter HALO_POWER " Strength" 0.9 0.0 5.0 0.025
-#pragma parameter HALO_W " Sharpness, horizontal" 1.75 0.35 7.0 0.05
-#pragma parameter HALO_H " Sharpness, Vertical" 1.75 0.35 7.0 0.05
-#pragma parameter HALO_GAMMA " Gamma, the higher, the less the halo on dark colors" 2.0 1.0 10.0 0.1
-#pragma parameter HALO_VS_SCAN " Light up scanlines gaps too" 0.0 0.0 1.0 0.1
-#pragma parameter BLANK10 " " 0.0 0.0 1.0 1.0
-
-
+#pragma parameter TATE "★ Tate mode (1:auto 2:forced)" 0.0 0.0 2.0 1.0
+#pragma parameter BLANK7a " " 0.0 0.0 1.0 1.0
// Scanlines
-#pragma parameter DO_SCANLINES "★ Scanlines enable? ==>" 0.0 0.0 1.0 1.0
+#pragma parameter DO_SCANLINES "★ Scanlines enable? (NOT with dot matrix!) ==>" 0.0 0.0 1.0 1.0
#pragma parameter SCANLINE_MIN " Minimum height" 1.0 0.01 1.0 0.01
#pragma parameter SCANLINE_MAX " Maximum height" 0.5 0.05 1.0 0.01
#pragma parameter SCANLINE_MINMAX_GAMMA " Min->Max inertia" 1.0 0.0 4.0 0.1
@@ -452,12 +470,38 @@ layout(std140, set = 0, binding = 0) uniform UBO {
#pragma parameter SCANLINE_FLICKERING_POWER " Interlace Flicker power" 0.25 0.0 8.0 0.01
#pragma parameter SCANLINE_DISABLE_ON_INTERLACE " Disable on interlaced screen" 0.0 0.0 1.0 1.0
#pragma parameter BLANK11 " " 0.0 0.0 1.0 1.0
-
#pragma parameter SCANLINE_SM_TYPE " Slotmask type (disable (0) with darklines!)" 0.0 0.0 3.0 1.0
#pragma parameter SCANLINE_SM_STRENGTH " . Slotmask strength" 1.0 0.0 1.0 0.05
#pragma parameter SCANLINE_SM_VOFFSET " . Offset (type 1 only)" 45.0 0.0 158.0 1.0
#pragma parameter BLANK12 " " 0.0 0.0 1.0 1.0
+// Dot matrix emulation
+#pragma parameter DO_DOT_MATRIX "★ Dot matrix emulation enable? (NOT with scanlines!) ==>" 0.0 0.0 1.0 1.0
+#pragma parameter DOT_M_G_STR " Grid strength" 0.0 0.0 1.0 0.01
+#pragma parameter DOT_M_G_TRESH " . Paint on bright (<0 on black)" 1.1 -1.1 1.1 0.01
+#pragma parameter DOT_M_G_BRT " . Grid brightness" 0.0 0.0 1.0 0.01
+#pragma parameter DOT_M_G_SHARP " . Grid sharpness" 2.0 0.0 20.0 0.25
+#pragma parameter DOT_M_RGB_STR " RGB strength" 1.0 0.0 1.0 0.01
+#pragma parameter DOT_M_RGB_SHARP " . RGB sharpness" 2.0 0.1 16.0 0.01
+#pragma parameter DOT_M_G_GAIN " . RGB Green gain correction" 0.85 0.1 1.0 0.01
+#pragma parameter DOT_M_MBLUR_STR " Refresh inertia" 0.45 0.0 0.9 0.05
+#pragma parameter DOT_M_MBLUR_MODE " . Inertia on: both,white,black" 0.0 0.0 2.0 1.0
+#pragma parameter DOT_M_SHADOW_STR " Shadow strength (disables deconvergence)" 0.0 0.0 1.0 0.01
+#pragma parameter DOT_M_SHADOW_OFF " Shadow offset" 0.0 -1.0 1.0 0.01
+
+#pragma parameter DOT_M_MULTIPLY " Multiply factor (debug)" 1.0 1.0 50.0 1.0
+#pragma parameter BLANK12c " " 0.0 0.0 1.0 1.0
+
+// Halo
+#pragma parameter DO_HALO "★ Halo enable? ==>" 0.0 0.0 1.0 1.0
+#pragma parameter HALO_POWER " Strength" 0.9 0.0 5.0 0.025
+#pragma parameter HALO_W " Sharpness, horizontal" 1.75 0.35 7.0 0.05
+#pragma parameter HALO_H " Sharpness, Vertical" 1.75 0.35 7.0 0.05
+#pragma parameter HALO_GAMMA " Gamma, the higher, the less the halo on dark colors" 2.0 1.0 10.0 0.1
+#pragma parameter HALO_VS_SCAN " Light up scanlines and dot grid gaps too" 0.0 0.0 1.0 0.1
+#pragma parameter BLANK10 " " 0.0 0.0 1.0 1.0
+
+
// Bloom
#pragma parameter DO_BLOOM "★ Bloom enable? ==>" 0.0 0.0 1.0 1.0
@@ -477,8 +521,8 @@ layout(std140, set = 0, binding = 0) uniform UBO {
//Curvature parameters:
#pragma parameter DO_CURVATURE "★ Curvature/Border enable? ==>" 0.0 0.0 1.0 1.0
-#pragma parameter GEOM_WARP_X " Warp X" 0.3 0.0 6.0 0.025
-#pragma parameter GEOM_WARP_Y " Warp Y" 0.0 0.0 6.0 0.025
+#pragma parameter GEOM_WARP_X " Warp X" 0.430 0.0 6.0 0.01
+#pragma parameter GEOM_WARP_Y " Warp Y" 0.49 0.0 6.0 0.01
#pragma parameter GEOM_CUT_EARS " Cut curvature ears" 1.4 1.0 10.0 0.01
#pragma parameter GEOM_CORNER_SIZE " Corner radius" 0.005 0.005 0.1 0.001
#pragma parameter GEOM_CORNER_SMOOTH " Corner sharpness" 350.0 15.0 1000.0 1.0
@@ -489,8 +533,8 @@ layout(std140, set = 0, binding = 0) uniform UBO {
//Bezel related
#pragma parameter DO_BEZEL "★ Bezel enable? ==>" 0.0 0.0 1.0 1.0
#pragma parameter BEZEL_USE_STRAIGHT " Straight" 0.0 0.0 1.0 1.0
-#pragma parameter BEZEL_INNER_ZOOM " Inner zoom (ignored if integer scaled)" -0.18 -1.5 0.5 0.005
-#pragma parameter BEZEL_FRAME_ZOOM " Frame zoom" 0.0 -1.5 0.5 0.005
+#pragma parameter BEZEL_INNER_ZOOM " Inner zoom (ignored if integer scaled)" -0.18 -1.5 0.5 0.001
+#pragma parameter BEZEL_FRAME_ZOOM " Frame zoom" 0.0 -1.5 0.5 0.001
#pragma parameter BEZEL_R " Color: Red" -0.3 -1.0 1.0 0.005
#pragma parameter BEZEL_G " Color: Green" -0.3 -1.0 1.0 0.005
#pragma parameter BEZEL_B " Color: Blue" -0.3 -1.0 1.0 0.005
@@ -517,7 +561,8 @@ layout(std140, set = 0, binding = 0) uniform UBO {
#pragma parameter BG_IMAGE_ZOOM " Zoom Image" 1.0 -1.0 3.0 0.0005
#pragma parameter BG_IMAGE_ROTATION " Rotate image mode (-1 for auto)" -1.0 -1.0 2.0 1.0
#pragma parameter BG_IMAGE_NIGHTIFY " Nightify image" 0.0 0.0 1.0 0.1
-#pragma parameter BG_IMAGE_WRAP_MODE " Wrap mode: default, clamp to border, edge, repeat" 0.0 0.0 3.0 1.0
+#pragma parameter LABEL_0101 " !NEXT FEATURE IS STATIC, SEE docs.md TO ENABLE" 0.0 0.0 1.0 1.0
+#pragma parameter BG_IMAGE_WRAP_MODE " Wrap mode: default, clamp to border, edge, repeat" 0.0 0.0 3.0 1.0
#pragma parameter BLANK16 " " 0.0 0.0 1.0 1.0
//Backdrop image
@@ -594,8 +639,8 @@ layout(std140, set = 0, binding = 0) uniform UBO {
//Content geomerty overrides
#pragma parameter DO_GAME_GEOM_OVERRIDE "★ Override content geometry enable? ==>" 0.0 0.0 1.0 1.0
-#pragma parameter GAME_GEOM_INT_SCALE " Integer scale (disables inner zoom)" 0.0 0.0 1.0 1.0
-#pragma parameter GAME_GEOM_INT_SCALE_MAX " Maximum integer scale" 10.0 1.0 100.0 1.0
+#pragma parameter GAME_GEOM_INT_SCALE " Integer scale (disables inner zoom) 2=No keep aspect" 0.0 0.0 2.0 1.0
+#pragma parameter GAME_GEOM_INT_SCALE_MAX " Maximum integer scale" 10.0 1.0 100.0 1.0
#pragma parameter LABEL_WARNING4 " ⚠ The following will override integer scale ⚠" 1.0 1.0 1.0 1.0
#pragma parameter GAME_GEOM_ASPECT " Aspect (0 = unchanged)" 0.0 0.0 3.0 0.005
#pragma parameter GAME_GEOM_VSHIFT " Vertical position" 0.0 -10.0 10.0 0.01
diff --git a/bezel/koko-aio/shaders/final_pass.slang b/bezel/koko-aio/shaders/final_pass.slang
index 75b55ad..161c712 100644
--- a/bezel/koko-aio/shaders/final_pass.slang
+++ b/bezel/koko-aio/shaders/final_pass.slang
@@ -5,6 +5,7 @@
* Does masks, spot, bezel, vignette, background image (anything else?)
*/
+
#include "config.inc"
#pragma stage vertex
@@ -15,7 +16,7 @@ layout(location = 1) in vec2 TexCoord;
layout(location = 0) out vec2 vTexCoord;
layout(location = 1) out vec2 vOutputCoord;
layout(location = 2) out vec2 spot_offset;
-layout(location = 3) out vec2 vFragCoord;
+layout(location = 3) out vec2 vFragCoord_Tated;
layout(location = 4) out float vIsRotated;
@@ -36,6 +37,9 @@ layout(location = 4) out float vIsRotated;
layout(location = 13) out float vDynamicSeed;
layout(location = 14) out float vBEZEL_INNER_ZOOM_adapted;
layout(location = 15) out float vVmask_gap;
+layout(location = 16) out float vFcol_Tated;
+layout(location = 17) out float vDo_Tate;
+layout(location = 18) out vec3 vDotMat_Grid_Color;
#include "includes/functions.include.slang"
@@ -47,10 +51,10 @@ void main() {
vIn_aspect = get_in_aspect();
//Calculate vTexcoord as fractional or integer scaled?
- if ( !do_integer_scale() )
- vTexCoord = get_scaled_coords_aspect(TexCoord,global.FinalViewportSize, vIn_aspect, bool(vIsRotated)) + vec2(0.0001);
+ if ( need_NO_integer_scale() )
+ vTexCoord = get_scaled_coords_aspect(TexCoord,global.FinalViewportSize, vIn_aspect, bool(vIsRotated)) + vec2(0.0000);
else
- vTexCoord = integer_scale(TexCoord, vIn_aspect, bool(vIsRotated)) + vec2(0.0001); //<- without the offset, SCANLINE_MIN doesn't work.
+ vTexCoord = integer_scale(TexCoord, vIn_aspect, bool(vIsRotated), GAME_GEOM_INT_SCALE-1.0 ) + vec2(0.0001); //<- without the offset, SCANLINE_MIN doesn't work.
//if (DO_GLOBAL_SHZO >0.5)
// vTexCoord = zoom(vTexCoord + vec2(-GLOBAL_OFFX, -GLOBAL_OFFY), GLOBAL_ZOOM );
@@ -60,17 +64,17 @@ void main() {
vOutputCoord = TexCoord;
- vFragCoord = vec2( floor(vOutputCoord.x * params.OutputSize.x),
+
+ vec2 vFragCoord = vec2( floor(vOutputCoord.x * params.OutputSize.x),
floor(vOutputCoord.y * params.OutputSize.y));
-
+ vDo_Tate = float(TATE+vIsRotated > 1.001);
+ vFragCoord_Tated = mix_step(vFragCoord.xy, vFragCoord.yx, vDo_Tate );
+
vBEZEL_INNER_ZOOM_adapted = get_BEZEL_INNER_ZOOM() * DO_BEZEL;
//Precalc some Curvature/Warp values:
- float warp_adaption = 1 - vBEZEL_INNER_ZOOM_adapted * 4.0;
- vec2 geom_warp_adapted = vec2(GEOM_WARP_X, GEOM_WARP_Y) * warp_adaption;
-
- vWarp_vexp = 1.0/ (1 + (vec2(geom_warp_adapted.x, geom_warp_adapted.y) * 0.2)) ;
+ vWarp_vexp = 1.0/ (1 + (vec2(GEOM_WARP_X, GEOM_WARP_Y) * 0.2)) ;
vWarp_arg2 = 1.0 - pow(vec2(0.29289321881345247559915563789515), vWarp_vexp );
//SPOT
@@ -96,7 +100,7 @@ void main() {
//contrast and brightness into account. This is needed so that scanline generation
//can map the proper input range and strictly obey scanline thickness constraints.
vMax_inLum = max( 1.0, DO_CCORRECTION * apply_contrast_brightness(1.0, CONTRAST, BRIGHTNESS)) *
- max( 1.0, DO_IN_GLOW * IN_GLOW_POWER);
+ max( 1.0, DO_IN_GLOW * IN_GLOW_POWER);
}
//Generate a seed that changes over time for temporal random noise
@@ -107,6 +111,16 @@ void main() {
// vec4 GAP_SIZE_PER_SCALE = vec4(1.0, 1.0, 2.0, 2.0); <--- moved in config.inc
vec4 vgap_size_per_scale = GAP_SIZE_PER_SCALE / VMASK_DARKLINE_SCALE;
vVmask_gap = vgap_size_per_scale[int(VMASK_DARKLINE_SCALE-1)];
+
+ vFcol_Tated = mix_step(vOutputCoord.x * params.OutputSize.x, vOutputCoord.y * params.OutputSize.y, vDo_Tate);
+
+ //Calc dotmat grid color
+ vDotMat_Grid_Color = vec3(DOT_M_G_BRT);
+ if (DO_DOT_MATRIX + DO_CCORRECTION > 1.1) {
+ vDotMat_Grid_Color = color_tools(vec3(DOT_M_G_BRT), kelvin2rgb(TEMPERATURE));
+ //Since we modify grid brightness via a specific use parameter, explicitely multiply it by that:
+ vDotMat_Grid_Color *= DOT_M_G_BRT ;
+ }
}
@@ -114,7 +128,7 @@ void main() {
layout(location = 0) in vec2 vTexCoord;
layout(location = 1) in vec2 vOutputCoord;
layout(location = 2) in vec2 spot_offset;
-layout(location = 3) in vec2 vFragCoord;
+layout(location = 3) in vec2 vFragCoord_Tated;
layout(location = 4) in float vIsRotated;
layout(location = 5) in vec2 vWarp_vexp;
layout(location = 6) in vec2 vWarp_arg2;
@@ -127,7 +141,9 @@ layout(location = 12) in float vIn_aspect;
layout(location = 13) in float vDynamicSeed;
layout(location = 14) in float vBEZEL_INNER_ZOOM_adapted;
layout(location = 15) in float vVmask_gap;
-
+layout(location = 16) in float vFcol_Tated;
+layout(location = 17) in float vDo_Tate;
+layout(location = 18) in vec3 vDotMat_Grid_Color;
layout(location = 0) out vec4 FragColor;
@@ -147,7 +163,7 @@ layout(set = 0, binding = 11) uniform sampler2D in_glow_pass;
layout(set = 0, binding = 12) uniform sampler2D halo_pass;
-layout(set = 0, binding = 15) uniform sampler2D first_pass;
+layout(set = 0, binding = 15) uniform sampler2D flick_and_noise_pass;
@@ -196,8 +212,8 @@ vec3 pixel_vmask(vec3 source, float white_reference, float over_white) {
vec4 vec_mod=(vec4(3,1,2,3) + vec4(VMASK_GAP * vVmask_gap,0.0,0.0,0.0))* VMASK_DARKLINE_SCALE;
vec_mod = ceil(vec_mod);
- float fcol = vOutputCoord.x * params.OutputSize.x;
- float mod_compare = mod(fcol, vec_mod.x);
+
+ float mod_compare = mod(vFcol_Tated, vec_mod.x);
if (mod_compare < vec_mod.y)
vmasked = m1;
@@ -240,13 +256,12 @@ vec3 pixel_vmask_gm(vec3 source, float white_reference, float over_white) {
vec3 m2 = vec3( 1.0 , ooo , 1.0 ); //col 2
vec3 gap = vec3( ggg );
- float fcol = vOutputCoord.s * params.OutputSize.x;
vec3 pixel_out;
vec3 vmasked;
vec3 vec_mod=(vec3(2,1,2) + vec3(VMASK_GAP * vVmask_gap,0.0,0.0))* VMASK_DARKLINE_SCALE ;
vec_mod = ceil(vec_mod);
- float mod_compare = mod(fcol, vec_mod.x);
+ float mod_compare = mod(vFcol_Tated, vec_mod.x);
/*
if (mod_compare < vec_mod.y)
@@ -281,7 +296,7 @@ vec3 pixel_darklines(vec3 source,float darkline_every, float darkline_trans,
float period_x = (3.0 - VMASK_USE_GM + VMASK_GAP * vVmask_gap) * VMASK_DARKLINE_SCALE;
float period_y = darkline_every * VMASK_DARKLINE_SCALE;
- vec2 FragCoord = vFragCoord;
+ vec2 FragCoord = vFragCoord_Tated;
if (over_white != 1.0) {
//less effect on bright colors.
@@ -302,7 +317,88 @@ vec3 pixel_darklines(vec3 source,float darkline_every, float darkline_trans,
return source;
}
-float fn_scanline_mask(vec2 coords, bool do_slotmask, float lum, float min_inLum, float max_inLum) {
+
+
+vec4 fn_pixel_dotmat(vec2 coords, vec3 pixel_in) {
+
+
+ //Base angle, depends on original size:
+ vec2 angle_base = coords * pi * params.OriginalSize.xy; //FIXME here we want .yy to make integer scaling
+
+ //Zoom to debug:
+ angle_base/=DOT_M_MULTIPLY;
+
+ //Set the rgb and grid sharpness:
+ vec3 s_rgb = vec3(DOT_M_RGB_SHARP);
+ float s_grid = DOT_M_G_SHARP;
+
+ //Generate bw grid:
+ vec2 grid = cos(angle_base);
+ grid = grid * grid;
+ grid = pow(grid, vec2(s_grid));
+ grid = 1 - grid;
+
+ //Generate rgb mask
+ vec3 mask_rgb=vec3(1.0);
+ if (DOT_M_RGB_STR > 0.0) {
+ //float wideness_k = DOT_M_RGB_WID;
+ float rgb_wideness = (pi/4.0); // * wideness_k;
+
+ //Generates 3 sines with 1/3 pi offset
+ vec3 angle_rgb = vec3( angle_base.x + rgb_wideness,
+ angle_base.x - pi,
+ angle_base.x - rgb_wideness );
+
+ mask_rgb = sin(angle_rgb);
+ mask_rgb *= mask_rgb;
+ mask_rgb = pow(mask_rgb, s_rgb);
+
+ //Adjust green gain
+ mask_rgb.g *= DOT_M_G_GAIN;
+
+ //Apply strength
+ mask_rgb=mix(vec3(1.0), mask_rgb, DOT_M_RGB_STR);
+ }
+
+
+ //Combine gridx and gridy into a single one
+ //float fgrid = min(grid.x, grid.y);
+ float fgrid = grid.x* grid.y;
+
+ //Modify strength for "paint on background" option
+
+ //Smoothly fadeout grid on background
+ //The fadeout size:
+ float fade_size = 0.3;
+
+ //We invert the smooth logic if threshold is negative. this allow to fadeout
+ //the grid on bright or dark backgrounds.
+ float lum_scaled = dot(pixel_in, vec3(0.33333));
+ lum_scaled = clamp(lum_scaled, 0.0, 1.0);
+ lum_scaled = mix_step(1-lum_scaled, lum_scaled, float(DOT_M_G_TRESH > 0.0));
+
+ float smooth_threshold = abs(DOT_M_G_TRESH);
+ vec2 smooth_range = vec2(smooth_threshold, smooth_threshold+fade_size);
+ float grid_smoothstep = 1- smoothstep(smooth_range.x, smooth_range.y, lum_scaled);
+
+
+
+ //Adapt grid strength
+ float grid_str = DOT_M_G_STR * grid_smoothstep;
+ //Apply strength modifier
+ float fgrid_adpt = mix(1.0, fgrid, grid_str);
+
+
+ //Output is the mix of the gap and the rgb masked pixel in.
+ //In the alpha channel we put the grid because it could be selectiveli brightened by halo
+ return vec4(
+ mix(vDotMat_Grid_Color, pixel_in * mask_rgb ,fgrid_adpt),
+ fgrid_adpt
+ );
+
+}
+
+float fn_scanline_mask(vec2 coords, bool do_slotmask, float lum, float min_inLum, float max_inLum, float tate) {
/* Produces a B/W scanline shape to be multiplicated by the source
* pixel later on to emulate scanline effect.
* scanlines can be drawn on odd and even fields alternating on odd and
@@ -318,13 +414,21 @@ float fn_scanline_mask(vec2 coords, bool do_slotmask, float lum, float min_inLum
float lum_scaled = map_range(lum, min_inLum, max_inLum, SCANLINE_MIN, SCANLINE_MAX);
- float angle_base = coords.y * pi * params.OriginalSize.y * period;
-
float lines = 1.0;
- //1 - Generate base scanline.
+ //0 - Generate base scanline.
+ //1 - The base coords is switched from coords.y to coords.x if tate mode is requested.
//2 - offset them on odd frames if needed (vScanlineAlternateOffset via vertex shader)
- //3 - Dont do it when the screen is interlaced and we have to skip drawing scanlines on interlaced screens.
+ //3 - Dont do it when the screen is interlaced and we have to skip drawing scanlines on interlaced screens
+
+ //coords += params.OriginalSize.zw*0.5; //<-- this seems needed when using integer scaling
+ //due to linear filtering in earlier pass FIXME don't forget me!
+ coords = mix_step(coords.xy, coords.yx, tate);
+ float originalsize = mix_step(params.OriginalSize.y, params.OriginalSize.x, tate);
+
+ float angle_base = coords.y * pi * originalsize * period;
+
+
if (!( is_interlaced && SCANLINE_DISABLE_ON_INTERLACE == 1.0 )) {
lines = pow( sin(angle_base + vScanlineAlternateOffset), 2.0);
}
@@ -341,7 +445,7 @@ float fn_scanline_mask(vec2 coords, bool do_slotmask, float lum, float min_inLum
if (do_slotmask) {
float Darkline_part_w = (3.0 - VMASK_USE_GM + VMASK_GAP) * VMASK_DARKLINE_SCALE;
float Darkline_part_w_x2 = Darkline_part_w*2;
- bool odd_column = mod(vFragCoord.x + Darkline_part_w , Darkline_part_w_x2) < Darkline_part_w;
+ bool odd_column = mod(vFragCoord_Tated.x + Darkline_part_w , Darkline_part_w_x2) < Darkline_part_w;
if (SCANLINE_SM_TYPE == 1.0) {
// Slotmask is out oh phase every "odd" triple and mixed with
@@ -416,12 +520,14 @@ float fn_scanline_mask(vec2 coords, bool do_slotmask, float lum, float min_inLum
//Apply min brightness
lines = lines * (1-SCANLINE_DARK ) + SCANLINE_DARK ;
+
+
return lines;
}
float get_clamped_white_reference(vec3 pixel_in){
float white_reference = max(max(pixel_in.r,pixel_in.g),pixel_in.b);
- white_reference = min(white_reference,1.0); //Clamp here for both vmask and darklines.
+// white_reference = min(white_reference,1.0); //Clamp here for both vmask and darklines.
return white_reference;
}
@@ -545,7 +651,10 @@ vec2 get_scaled_coords_for_bezel() {
//But still, i need to access it twice in the code.
//So this is a function that ensures me that i always calc it the same way.
- vec2 co = zoomout_coords(vTexCoord,-BEZEL_FRAME_ZOOM,1.0);
+ vec2 co = vTexCoord;
+
+ co = zoomout_coords(co, -BEZEL_FRAME_ZOOM, 1.0);
+ co.y = zoom1D(co.y, BEZEL_ASPECT_CORRECTION);
if (DO_TILT == 1.0)
return tilt(co, vIsRotated, vec2(TILT_X, TILT_Y) * TILT_BEZEL_K);
@@ -601,6 +710,60 @@ vec3 ambi_blend_image(vec4 image, vec3 ambi) {
return image.rgb;
}
+float gaussian_coefficient(float x, float sigma) {
+ //restituisce un coefficiente gaussiano per x compreso tra 0 ed 1
+ float coefficient = 1.0 / sqrt(2.0 * 3.14159265358979323846 * sigma);
+ float exponent = -((x * x) / (2.0 * sigma));
+ return coefficient * exp(exponent);
+}
+
+vec3 boxed_blur_x(sampler2D tex, vec2 co, float box_size, vec4 output_size) {
+ /* blur tex in boxes of width box_size.
+ eg: box_size=4:
+ in: [abcd][edgh][ijkl]...
+ out [AVG1][AVG2][AVG3]
+ were AVG is a gaussian blur applied to each 4 elements separately.
+ */
+
+ //The current pixel, x:
+ float x = co.x/output_size.z;
+ //The group x belongs to, g:
+ float g = ceil(x/box_size);
+ //The first element of the group, x0
+ float x0 = box_size * (g-1);
+
+ //Init output color:
+ vec3 c = vec3(0.0);
+
+ //We want a dumb arithmetic average?
+ #define BOXB_DUMB 0.0
+ //blurriness of output
+ #define BOXB_SIGMA 0.5
+
+ //Iterate for every pixel in group:
+ for (float xn = x0; xn < x0 + box_size; xn++) {
+ //Normalize interval to 0..1 to get gauss coefficients afterwards
+ float xn_normalizzato = normalize_range(xn, x0, x0 + (box_size-1));
+
+ //Get gauss coefficient
+ float coefficient = 1.0;
+ if (BOXB_DUMB == 0.0)
+ coefficient = gaussian_coefficient(xn_normalizzato, BOXB_SIGMA);
+ else
+ coefficient = 1.0;
+
+ //Translate integer element to offset in 0..1 range:
+ float off = params.OutputSize.z*xn;
+ c = c + texture(tex, vec2(off,co.y) ).rgb * coefficient ;
+ }
+ //reduce gain (why on earth is needed for gauss?):
+ if (BOXB_DUMB == 1.0)
+ c = c/box_size;
+ else
+ c = c/(box_size * 0.4);
+ return c;
+}
+
vec3 fn_pixel_content(vec2 coords) {
vec3 pixel_in;
@@ -614,6 +777,10 @@ vec3 fn_pixel_content(vec2 coords) {
} else {
pixel_in = texture(shift_and_bleed_pass,coords).rgb ;
}
+
+
+ //pixel_in = boxed_blur_x(shift_and_bleed_pass, coords, params.OutputSize.x / params.OriginalSize.y, params.OutputSize);
+
pixel_bleed = pixel_in;
vec3 pixel_out = pixel_in;
@@ -649,19 +816,29 @@ vec3 fn_pixel_content(vec2 coords) {
}
-
+
+ float scanline_or_dot_mat = 1.0; //init dot grid or scanline mask to 1.0
+
+ //Dot mask
+ if (DO_DOT_MATRIX == 1.0) {
+ vec4 pixel_grid_mask = fn_pixel_dotmat(coords, pixel_out);
+ //grid mask only is needed by halo to selectively light the grid.
+ scanline_or_dot_mat = pixel_grid_mask.a;
+ //rgb channel goes to pixel_out
+ pixel_out = pixel_grid_mask.rgb;
+ }
+
//Scanlines (non-flickering)
- float scanline_mask = 1.0;
if ( DO_SCANLINES == 1.0 ) {
//Obtain a scanlined screen by multiplying the scanline mask and the pixel color.
float lum = max(max(pixel_out.r, pixel_out.g), pixel_out.b);
//The maximum possible brightness of the input color modified by glow,contrast and brightness.
- float max_inLum = vMax_inLum;
- float min_inLum = 0.0;
- scanline_mask = fn_scanline_mask(coords, SCANLINE_SM_TYPE > 0.0, lum, min_inLum, max_inLum );
+ float scanline_mask = fn_scanline_mask(coords, SCANLINE_SM_TYPE > 0.0, lum, 0.0, vMax_inLum, vDo_Tate );
pixel_out = min(pixel_out, 1.0) * ( scanline_mask + ( pixel_bleed * SCANLINES_BLEEDING * ( 1 - scanline_mask ) ));
+ //Since scanlines and dot matrix are alternative and halo can white both, just use a single var for both:
+ scanline_or_dot_mat = scanline_mask;
}
@@ -671,9 +848,9 @@ vec3 fn_pixel_content(vec2 coords) {
if (DO_HALO == 1.0 ) {
pixel_haloed = texture(halo_pass,coords).rgb;
//Halo only on scanlines:
- pixel_out += pixel_haloed * scanline_mask ;
+ pixel_out += pixel_haloed * scanline_or_dot_mat ;
//Halo over scanlines gap too:
- pixel_out += pixel_haloed * (HALO_VS_SCAN) * (1 - scanline_mask) ;
+ pixel_out += pixel_haloed * (HALO_VS_SCAN) * (1 - scanline_or_dot_mat) ;
}
@@ -722,20 +899,19 @@ vec4 fn_pixel_bezel(vec2 coords_for_bezel, vec2 coords_for_mirror, float nightif
) return vec4(0.0);
vec4 bezel_in;
- //Sample main bezel texture, Do we want mipmaps?
- #ifdef STATIC_BEZEL_USE_MIPMAP
- vec2 bezel_lut_size = textureSize(monitor_body_curved,0); //no need to branch here if we assume straight and curved textures are the same size. //FIXME?
- float bezel_frame_lod = log2(bezel_lut_size.y * (BEZEL_FRAME_ZOOM+1.0) /global.FinalViewportSize.y);
- if (BEZEL_USE_STRAIGHT < 0.5)
- bezel_in = textureLod(monitor_body_curved,coords_for_bezel,bezel_frame_lod);
- else
- bezel_in = textureLod(monitor_body_straight,coords_for_bezel,bezel_frame_lod);
+
+ //Sample main bezel texture:
+ #ifndef BEZEL_RES
+ vec2 bezel_lut_size = textureSize(monitor_body_curved, 0); //no need to branch here if we assume straight and curved textures are the same size. //FIXME?
#else
- if (BEZEL_USE_STRAIGHT < 0.5)
- bezel_in = texture(monitor_body_curved,coords_for_bezel);
- else
- bezel_in = texture(monitor_body_straight,coords_for_bezel);
+ vec2 bezel_lut_size = BEZEL_RES;
#endif
+ float bezel_frame_lod = log2(bezel_lut_size.y * (BEZEL_FRAME_ZOOM+1.0) /global.FinalViewportSize.y);
+
+ if (BEZEL_USE_STRAIGHT < 0.5)
+ bezel_in = textureLod(monitor_body_curved,coords_for_bezel,bezel_frame_lod);
+ else
+ bezel_in = textureLod(monitor_body_straight,coords_for_bezel,bezel_frame_lod);
//Exit if the bezel is completely transparent (the tube)
@@ -808,13 +984,8 @@ void main() {
}
- //Calc initial content coords
+ //Initial content coords
vec2 co_content = vTexCoord;
- if (DO_CURVATURE == 1.0 && ((GEOM_WARP_X != 0.0) || (GEOM_WARP_Y != 0.0))) {
- co_content = Warp_fast(co_content, vWarp_vexp, vWarp_arg2, GEOM_CUT_EARS);
- //co_content = Warp(co_content, GEOM_WARP_X, GEOM_WARP_Y);
- }
-
//Tilt?
if (DO_TILT == 1.0)
@@ -823,14 +994,19 @@ void main() {
//Precalc Bezel coords, since it modifies content coords.
vec2 co_bezel = vec2(0.0);
- vec2 co_mirror;
if (DO_BEZEL == 1.0) {
co_content = zoomout_coords(co_content, -vBEZEL_INNER_ZOOM_adapted , 1.0);
- co_mirror = zoom(co_content, 1/BEZEL_REFL_ZOOMOUT_ROOM);
co_bezel = get_scaled_coords_for_bezel();
}
+ //Curvature
+ //Curvature has to come after inner zoom or bezel curved border will not match content
+ //curved border when inner zoom changes.
+ if (DO_CURVATURE == 1.0 && ((GEOM_WARP_X != 0.0) || (GEOM_WARP_Y != 0.0))) {
+ co_content = Warp_fast(co_content, vWarp_vexp, vWarp_arg2, GEOM_CUT_EARS);
+ }
+
//Apply other content coords modifiers
if (DO_GAME_GEOM_OVERRIDE == 1.0)
co_content = content_geom_override(co_content, GAME_GEOM_ASPECT, vIn_aspect, GAME_GEOM_VSHIFT, GAME_GEOM_HSHIFT, GAME_GEOM_ZOOM);
@@ -856,6 +1032,7 @@ void main() {
vec4 pixel_bezel;
//SKIP LOGIC is inside fn_pixel_bezel
if (DO_BEZEL == 1.0) {
+ vec2 co_mirror = zoom(co_content, 1/BEZEL_REFL_ZOOMOUT_ROOM);
pixel_bezel = fn_pixel_bezel(co_bezel, co_mirror, BG_IMAGE_NIGHTIFY);
//If we used a smooth_border, canvas_busy is it, but since the content is in the bezel,
//we can safely use it to smooth/darken the game border
@@ -925,9 +1102,9 @@ void main() {
//For debug purposes:
//quad split screen
- //if ( (vOutputCoord.x < 0.5 && vOutputCoord.y > 0.5) || (vOutputCoord.x > 0.5 && vOutputCoord.y < 0.5) ) pixel_out = texture(first_pass,vOutputCoord).rgb;
+ //if ( (vOutputCoord.x < 0.5 && vOutputCoord.y > 0.5) || (vOutputCoord.x > 0.5 && vOutputCoord.y < 0.5) ) pixel_out = texture(flick_and_noise_pass,vOutputCoord).rgb;
//split screen
- //if (vTexCoord.y < 0.5) pixel_out = texture(first_pass,vTexCoord).rgb;
+ //if (vTexCoord.y < 0.5) pixel_out = texture(flick_and_noise_pass,vTexCoord).rgb;
//pixel_out = texture(reflected_blurred_pass, vTexCoord).rgb;
diff --git a/bezel/koko-aio/shaders/first_pass.slang b/bezel/koko-aio/shaders/flick_and_noise.slang
similarity index 97%
rename from bezel/koko-aio/shaders/first_pass.slang
rename to bezel/koko-aio/shaders/flick_and_noise.slang
index 7584095..d8bc25e 100644
--- a/bezel/koko-aio/shaders/first_pass.slang
+++ b/bezel/koko-aio/shaders/flick_and_noise.slang
@@ -90,13 +90,15 @@ void debug() {
//pixel_debug=vec3(abs(sin(params.FrameCount/3.14/20)),0.0,0.0); //red fade
- pixel_debug=vec3(1.0);
+
//pixel_debug=vec3(0.0,1.0,0.0);
//pixel_debug=vec3(0.38,0.0,1.0)*vTexCoord.x;
- //pixel_debug=vec3(vTexCoord.x); //H bw gradient
+ pixel_debug=vec3(vTexCoord.x); //H bw gradient
+
+ //pixel_debug=vec3(1.0); //H bw gradient
//pixel_debug=vec3(floor(vTexCoord.x*16)/16); //H bw gradient 16gray
diff --git a/bezel/koko-aio/shaders/fxaa.slang b/bezel/koko-aio/shaders/fxaa.slang
index 077435b..f337cdc 100644
--- a/bezel/koko-aio/shaders/fxaa.slang
+++ b/bezel/koko-aio/shaders/fxaa.slang
@@ -263,14 +263,14 @@ void main()
#pragma stage fragment
layout(location = 0) in vec2 vTexCoord;
layout(location = 0) out vec4 FragColor;
-layout(set = 0, binding = 2) uniform sampler2D first_pass;
+layout(set = 0, binding = 2) uniform sampler2D flick_and_noise_pass;
void main() {
if ( DO_FXAA == 0.0 ) return;
//Here lies the blur modifier from ntsc pass to glow.
//I'm not expecting any performance hit, since the lookup should have been cached alreadyl
- float pixel_alpha = texture(first_pass, vTexCoord).a;
+ float pixel_alpha = texture(flick_and_noise_pass, vTexCoord).a;
- FragColor = vec4(FxaaPixelShader(vTexCoord, first_pass, vec2(global.first_passSize.z, global.first_passSize.w)),pixel_alpha);
+ FragColor = vec4(FxaaPixelShader(vTexCoord, flick_and_noise_pass, vec2(global.flick_and_noise_passSize.z, global.flick_and_noise_passSize.w)),pixel_alpha);
}
diff --git a/bezel/koko-aio/shaders/halo_y.slang b/bezel/koko-aio/shaders/halo_y.slang
index accf8bf..0b12908 100644
--- a/bezel/koko-aio/shaders/halo_y.slang
+++ b/bezel/koko-aio/shaders/halo_y.slang
@@ -34,7 +34,7 @@ void main() {
return;
}
- pixel_haloed = blur9_y(Source, vTexCoord, global.first_passSize.xy, vHALO_H) * HALO_POWER;
+ pixel_haloed = blur9_y(Source, vTexCoord, global.flick_and_noise_passSize.xy, vHALO_H) * HALO_POWER;
FragColor = vec4(pixel_haloed.rgb,1.0);
diff --git a/bezel/koko-aio/shaders/in_glow_x.slang b/bezel/koko-aio/shaders/in_glow_x.slang
index 2498130..0ed786c 100644
--- a/bezel/koko-aio/shaders/in_glow_x.slang
+++ b/bezel/koko-aio/shaders/in_glow_x.slang
@@ -57,7 +57,7 @@ void main() {
//Make it resolution independent.
IN_GLOW_W_ADAPTED = IN_GLOW_W_ADAPTED / NEW_SCALEMOD_X;
- FragColor = vec4( blur9_x(shift_and_bleed_pass, vTexCoord, global.first_passSize.xy, IN_GLOW_W_ADAPTED), 1.0);
+ FragColor = vec4( blur9_x(shift_and_bleed_pass, vTexCoord, global.flick_and_noise_passSize.xy, IN_GLOW_W_ADAPTED), 1.0);
//To debug ntsc artifacts mask:
if (IN_GLOW_SHOW_ARTF_MASK > 0.5)
diff --git a/bezel/koko-aio/shaders/includes/functions.include.slang b/bezel/koko-aio/shaders/includes/functions.include.slang
index 0b691a4..d82275f 100644
--- a/bezel/koko-aio/shaders/includes/functions.include.slang
+++ b/bezel/koko-aio/shaders/includes/functions.include.slang
@@ -8,6 +8,10 @@
return (a * (1 - mix)) +
(b * mix) ;
}
+ vec3 mix_step3(vec3 a, vec3 b, float mix){
+ return (a * (1 - mix)) +
+ (b * mix) ;
+ }
vec4 mix_step(vec4 a, vec4 b, float mix){
return (a * (1 - mix)) +
(b * mix) ;
@@ -178,6 +182,10 @@ float map_range(float value, float min_in, float max_in, float min_out, float ma
return min_out + (value - min_in) * (max_out - min_out) / (max_in - min_in);
}
+float normalize_range(float value, float min_in, float max_in) {
+ //Scales value in [min_in - max_in] to 0..1
+ return (value - min_in) / (max_in - min_in);
+}
vec3 apply_contrast_brightness(vec3 c, float contrast, float brightness) {
return scale_to_range_vec3(c, -contrast, 1+contrast) + brightness;
@@ -420,13 +428,16 @@ vec2 Warp_try(vec2 pos, float warpX, float warpY) {
return scale_coord;
}
- vec2 integer_scale(vec2 in_coords, float target_aspect, bool is_rotated) {
- vec2 izoom;
-
+ vec2 integer_scale(vec2 in_coords, float target_aspect, bool is_rotated, float uncorrected_aspect) {
+
float raw_in_aspect = params.OriginalSize.x/params.OriginalSize.y;
- float adapted_aspect = target_aspect /raw_in_aspect;
- in_coords.x = zoom1D(in_coords.x, adapted_aspect);
+ float adapted_aspect = target_aspect / raw_in_aspect;
+
+ //Keep aspect?
+ adapted_aspect = mix_step(adapted_aspect, 1.0, uncorrected_aspect);
+ in_coords.x = zoom1D(in_coords.x, adapted_aspect);
+ vec2 izoom;
if (!is_rotated) {
//This is 1X integer zoom:
izoom = params.OriginalSize.xy / global.FinalViewportSize.xy;
@@ -436,31 +447,30 @@ vec2 Warp_try(vec2 pos, float warpX, float warpY) {
izoom *= int_zoom;
} else {
izoom = params.OriginalSize.xy / global.FinalViewportSize.yx;
- float int_zoom = floor(global.FinalViewportSize.y / (params.OriginalSize.x*adapted_aspect) );
+ float int_zoom = floor(global.FinalViewportSize.y / (params.OriginalSize.x * adapted_aspect) );
int_zoom = clamp(int_zoom, 1.0, GAME_GEOM_INT_SCALE_MAX);
izoom *= int_zoom;
}
return zoomxy(in_coords, izoom);
}
+ bool need_NO_integer_scale() {
+ //returns if no integer scaling is requested.
+ return DO_GAME_GEOM_OVERRIDE * GAME_GEOM_INT_SCALE == 0.0;
+ }
+
+ bool need_integer_scale() {
+ //return if integer scaling is requested.
+ //return DO_GAME_GEOM_OVERRIDE == 1.0 && GAME_GEOM_INT_SCALE > 0.01;
+ return DO_GAME_GEOM_OVERRIDE * GAME_GEOM_INT_SCALE != 0.0;
+ }
+
+
float get_BEZEL_INNER_ZOOM() {
- /*if (GAME_GEOM_INT_SCALE == 1.0 && DO_GAME_GEOM_OVERRIDE == 1.0)
- return 0.0;
- else
- return BEZEL_INNER_ZOOM;
- */
- //unbranched versions:
- return BEZEL_INNER_ZOOM * (1 - DO_GAME_GEOM_OVERRIDE * GAME_GEOM_INT_SCALE);
-
- //117.2
- //return BEZEL_INNER_ZOOM * float( GAME_GEOM_INT_SCALE != 1.0 || DO_GAME_GEOM_OVERRIDE != 1.0 );
+ //Disables bezel inner zoom when using integer scaling
+ return BEZEL_INNER_ZOOM * float( !need_integer_scale() );
}
- bool do_integer_scale() {
- return DO_GAME_GEOM_OVERRIDE == 1.0 && GAME_GEOM_INT_SCALE == 1.0;
- }
-
-
vec2 content_geom_override(vec2 co, float aspect, float in_aspect, float vshift, float hshift, float out_zoom){
//Aspect
//float bUse_original_aspect = float(aspect < 0.01);
@@ -679,3 +689,75 @@ bool is_first_inside_rect(vec2 point, vec4 rect) {
return (point.x >= rect.x && point.x < rect.z &&
point.y >= rect.y && point.y < rect.w) ;
}
+
+// COLOR TOOLS
+ vec3 kelvin2rgb(float k) {
+ //Convert kelvin temperature to rgb factors
+ k = clamp(k,1000,40000);
+ k=k/100.0;
+ float tmpCalc;
+ vec3 pixel_out;
+ if (k<=66) {
+ pixel_out.r = 255;
+ pixel_out.g = 99.47080258612 * log(k) - 161.11956816610;
+ } else {
+ pixel_out.r = 329.6987274461 * pow(k - 60 ,-0.13320475922);
+ pixel_out.g = 288.12216952833 * pow(k-60, -0.07551484921);
+ }
+
+ if (k >= 66)
+ pixel_out.b = 255;
+ else if (k<=19)
+ pixel_out.b = 0;
+ else
+ pixel_out.b = 138.51773122311 * log(k - 10) - 305.04479273072;
+
+ return pixel_out/255.0;
+ }
+
+ #define W vec3(0.2125, 0.7154, 0.0721)
+ vec3 color_tools(vec3 pixel_out, vec3 Temperature_rgb) {
+ //Apply color corrections to input signal.
+
+ //Push luminance without clipping
+ pixel_out = pixel_push_luminance(pixel_out,LUMINANCE);
+
+ //Modify contrast and brightness
+ if (CONTRAST != 0.0 || BRIGHTNESS != 0.0)
+ pixel_out.rgb = apply_contrast_brightness(pixel_out.rgb, CONTRAST, BRIGHTNESS);
+
+ //Modify color temperature
+ if (TEMPERATURE != 6500.0) pixel_out.rgb = pixel_out.rgb * Temperature_rgb;
+
+ //Colorization for monochrome display on hsv colorspace.
+ //Select different hues for dark and bright pixels and mix them depending on the brightness
+ if (COLOR_MONO_COLORIZE > 0.01) {
+ vec3 pixel_grayscale = vec3(dot(pixel_out.rgb, W));
+ vec3 pixel_in_hsv = rgb2hsv(pixel_grayscale); //FIXME needed? yes, checked.
+ float lum = pixel_in_hsv.z * pixel_in_hsv.z; //<-- looks way better!
+ vec2 bias = mix_step( vec2(0.0, COLOR_MONO_HUE_BIAS), vec2(COLOR_MONO_HUE_BIAS, 0.0), float(COLOR_MONO_HUE_BIAS > 0.0));
+ bias = abs(bias);
+
+ lum=scale_to_range(lum, 0.0-bias.x, 1.0+bias.y);
+ pixel_in_hsv.y=1.0; //sat
+
+ //Mix hues in rgb colorspace:
+ vec3 pixel_rgb_hue1 = hsv2rgb( vec3(COLOR_MONO_HUE1, 1.0, pixel_in_hsv.z ) );
+ vec3 pixel_rgb_hue2 = hsv2rgb( vec3(COLOR_MONO_HUE2, 1.0, pixel_in_hsv.z ) );
+ vec3 pixel_rgb_hue12 = mix(pixel_rgb_hue2, pixel_rgb_hue1, vec3(lum));
+ //Mix original and colorized with a specified strength
+ pixel_out = mix(pixel_out, pixel_rgb_hue12, COLOR_MONO_COLORIZE);
+
+
+ //pixel_in_hsv.x = mix(COLOR_MONO_HUE2, COLOR_MONO_HUE1, lum); //hue
+ //pixel_out = mix(pixel_out, hsv2rgb(pixel_in_hsv), COLOR_MONO_COLORIZE);pk
+ }
+
+ //Modify saturation
+ if (!(SATURATION == 1.0)) {
+ vec3 intensity = vec3(dot(pixel_out.rgb, W));
+ pixel_out.rgb = mix(intensity, pixel_out.rgb, SATURATION);
+ }
+
+ return pixel_out;
+ }
diff --git a/bezel/koko-aio/shaders/reflection_blur.slang b/bezel/koko-aio/shaders/reflection_blur.slang
index 3da8b44..026ad32 100644
--- a/bezel/koko-aio/shaders/reflection_blur.slang
+++ b/bezel/koko-aio/shaders/reflection_blur.slang
@@ -20,7 +20,7 @@ layout(location = 0) in vec2 vTexCoord;
layout(location = 0) out vec4 FragColor;
layout(set = 0, binding = 1) uniform sampler2D Source;
-layout(set = 0, binding = 2) uniform sampler2D first_pass;
+layout(set = 0, binding = 2) uniform sampler2D flick_and_noise_pass;
#include "includes/functions.include.slang"
@@ -70,7 +70,7 @@ void main() {
vec3 pixel_out = mix(s1, s2, lodmix) * BEZEL_REFL_STRENGTH;
//Next simulate a diffused light
- vec3 pixel_diffused = textureLod( first_pass, coords, 6.0).rgb;
+ vec3 pixel_diffused = textureLod( flick_and_noise_pass, coords, 6.0).rgb;
pixel_out = mix( pixel_out, pixel_diffused, BEZEL_DIFFUSION_STR);
diff --git a/bezel/koko-aio/shaders/reflection_blur_pre.slang b/bezel/koko-aio/shaders/reflection_blur_pre.slang
index bdcf6ee..aa1d2fd 100644
--- a/bezel/koko-aio/shaders/reflection_blur_pre.slang
+++ b/bezel/koko-aio/shaders/reflection_blur_pre.slang
@@ -27,7 +27,7 @@ layout(location = 1) in vec2 vCoordsAdapted;
layout(location = 0) out vec4 FragColor;
-layout(set = 0, binding = 1) uniform sampler2D first_pass;
+layout(set = 0, binding = 1) uniform sampler2D flick_and_noise_pass;
layout(set = 0, binding = 2) uniform sampler2D avglum_pass;
#include "includes/functions.include.slang"
@@ -54,7 +54,7 @@ void main() {
}
- FragColor = texture(first_pass, coords);
+ FragColor = texture(flick_and_noise_pass, coords);
}
diff --git a/bezel/koko-aio/shaders/shift_and_bleed.slang b/bezel/koko-aio/shaders/shift_and_bleed.slang
index 5dcf0d0..e010836 100644
--- a/bezel/koko-aio/shaders/shift_and_bleed.slang
+++ b/bezel/koko-aio/shaders/shift_and_bleed.slang
@@ -7,9 +7,10 @@
layout(location = 0) in vec4 Position;
layout(location = 1) in vec2 TexCoord;
layout(location = 0) out vec2 vTexCoord;
-layout(location = 1) out vec2 r_offset;
-layout(location = 2) out vec2 g_offset;
-layout(location = 3) out vec2 b_offset;
+layout(location = 1) out vec2 vR_offset;
+layout(location = 2) out vec2 vG_offset;
+layout(location = 3) out vec2 vB_offset;
+layout(location = 4) out float vDo_shadow_mode;
#include "includes/functions.include.slang"
@@ -17,25 +18,35 @@ void main()
{
gl_Position = global.MVP * Position;
vTexCoord = TexCoord ;
- if (DO_SHIFT_RGB == 1.0) {
- r_offset=offsets_from_float(SHIFT_R+210.0,RGB_SHIFT_RANGE);
- g_offset=offsets_from_float(SHIFT_G+210.0,RGB_SHIFT_RANGE);
- b_offset=offsets_from_float(SHIFT_B+210.0,RGB_SHIFT_RANGE);
+
+ //...to tell fragment shader if dot matrix feature requests shadows.
+ vDo_shadow_mode = float(DOT_M_SHADOW_STR + DO_DOT_MATRIX > 1 + eps);
+
+ //Shadow mode disables deconvergence, they do not coexist in real life.
+ if (vDo_shadow_mode == 1.0) {
+ vR_offset = vec2(DOT_M_SHADOW_OFF, abs(DOT_M_SHADOW_OFF));
+ vG_offset = vR_offset;
+ vB_offset = vR_offset;
+ } else if (DO_SHIFT_RGB == 1.0) {
+ vR_offset=offsets_from_float(SHIFT_R+210.0,RGB_SHIFT_RANGE);
+ vG_offset=offsets_from_float(SHIFT_G+210.0,RGB_SHIFT_RANGE);
+ vB_offset=offsets_from_float(SHIFT_B+210.0,RGB_SHIFT_RANGE);
}
}
#pragma stage fragment
-
+#include "includes/functions.include.slang"
layout(location = 0) in vec2 vTexCoord;
-layout(location = 1) in vec2 r_offset;
-layout(location = 2) in vec2 g_offset;
-layout(location = 3) in vec2 b_offset;
+layout(location = 1) in vec2 vR_offset;
+layout(location = 2) in vec2 vG_offset;
+layout(location = 3) in vec2 vB_offset;
+layout(location = 4) in float vDo_shadow_mode;
layout(location = 0) out vec4 FragColor;
layout(set = 0, binding = 3) uniform sampler2D FXAA_pass;
-layout(set = 0, binding = 4) uniform sampler2D first_pass;
+layout(set = 0, binding = 4) uniform sampler2D flick_and_noise_pass;
#define bandwidth_mhz_Y_ntsc 4.2
@@ -69,28 +80,37 @@ const mat3 mat3_YUV2RGB = mat3(
-vec3 pixel_offset(vec3 pixel_cur,vec2 coord, sampler2D in_texture, vec4 sourcesize2) {
+vec3 deconvergence_shadow(vec3 pixel_cur,vec2 coord, sampler2D in_texture, vec4 sourcesize2) {
+ //Emulates deconvergence or shadowing for dot matrix screens like Gameboy.
+ //Since both effects should not coexist in real life, we use a singe function for both.
+ //The function stays more or less the same, but rgb offsets calculated in vertex shader
+ //will be the same for shadow mode. Hopefully shader texture cache will take care of
+ //multiple sampling for the same tex coords.
+
vec2 d = -vec2(sourcesize2.z, sourcesize2.w)*0.5;
vec3 pixel_offset;
- pixel_offset.r=texture(in_texture,coord + r_offset * d).r;
- pixel_offset.g=texture(in_texture,coord + g_offset * d).g;
- pixel_offset.b=texture(in_texture,coord + b_offset * d).b;
- return mix(pixel_cur,pixel_offset,OFFSET_STRENGTH);
- /* why did i make this? commit message : https://github.com/kokoko3k/koko-aio-slang/commit/843d71af40d32c2e2b088a71bf3ad18683812a98
- * does not help...
- vec3 color_difformity = vec3(pixel_offset.r-pixel_cur.r, +pixel_offset.g-pixel_cur.g, pixel_offset.b - pixel_cur.b);
- vec3 pixel_offset_to_add = pixel_offset * color_difformity;
- return pixel_cur + (pixel_offset_to_add *OFFSET_STRENGTH);
- //return pixel_cur + (pixel_offset *OFFSET_STRENGTH*color_difformity);
- */
+
+ pixel_offset.r=texture(in_texture,coord + vR_offset * d).r;
+ pixel_offset.g=texture(in_texture,coord + vG_offset * d).g;
+ pixel_offset.b=texture(in_texture,coord + vB_offset * d).b;
+
+ vec3 deconvergence_mode = mix(pixel_cur, pixel_offset, OFFSET_STRENGTH);
+ vec3 shadow_mode = pixel_cur - max( (pixel_cur - pixel_offset), vec3(0.0) ) * DOT_M_SHADOW_STR;
+
+ return mix_step(deconvergence_mode, shadow_mode, vDo_shadow_mode);
+
+
+ //Shadow mode:
+ //return pixel_cur -
+ // max( (pixel_cur - pixel_offset), vec3(0.0) ) * OFFSET_STRENGTH;
}
-vec3 pixel_offset_wrap (vec2 coord) {
+vec3 deconvergence_shadow_wrap (vec2 coord) {
if ( DO_FXAA == 1.0) {
- return pixel_offset(texture(FXAA_pass, vTexCoord).rgb, vTexCoord, FXAA_pass, global.FXAA_passSize);
+ return deconvergence_shadow(texture(FXAA_pass, vTexCoord).rgb, vTexCoord, FXAA_pass, global.FXAA_passSize);
} else {
- return pixel_offset(texture(first_pass, vTexCoord).rgb, vTexCoord, first_pass, global.first_passSize);
+ return deconvergence_shadow(texture(flick_and_noise_pass, vTexCoord).rgb, vTexCoord, flick_and_noise_pass, global.flick_and_noise_passSize);
}
}
@@ -103,7 +123,7 @@ vec3 pixel_bleed_side_NTSC(vec3 pixel_in, vec2 co, float size, float side, sampl
w=w/SAT_BLEED_FALLOFF;
//w = w * exp(i*i*(1-SAT_BLEED_FALLOFF)*0.1);
//w=clamp(w,0.0,1.0);
- vec3 smp_YIQ = texture(first_pass, co - side * vec2(sourcesize2.z*i,0.0)).rgb * mat3_RGB2YIQ;
+ vec3 smp_YIQ = texture(flick_and_noise_pass, co - side * vec2(sourcesize2.z*i,0.0)).rgb * mat3_RGB2YIQ;
blur_YIQ.x = mix(blur_YIQ.x, smp_YIQ.x, w/bandwidth_mhz_Y_ntsc); // Blur Y
blur_YIQ.y = mix(blur_YIQ.y, smp_YIQ.y, w/bandwidth_mhz_I ); // Blur I
blur_YIQ.z = mix(blur_YIQ.z, smp_YIQ.z, w/bandwidth_mhz_Q ); // BlurQ
@@ -122,7 +142,7 @@ vec3 pixel_bleed_side_PAL(vec3 pixel_in, vec2 co, float size, float side, sample
for ( i=1 ; i <= size ; i++ ){
w=w/SAT_BLEED_FALLOFF;
//w=clamp(w,0.0,1.0);
- vec3 smp_YUV = texture(first_pass, co - side * vec2(sourcesize2.z*i,0.0)).rgb * mat3_RGB2YUV;
+ vec3 smp_YUV = texture(flick_and_noise_pass, co - side * vec2(sourcesize2.z*i,0.0)).rgb * mat3_RGB2YUV;
blur_YUV.x = mix(blur_YUV.x, smp_YUV.x, w/bandwidth_mhz_Y_pal); // Blur Y
blur_YUV.y = mix(blur_YUV.y, smp_YUV.y, w/bandwidth_mhz_U ); // Blur U
blur_YUV.z = mix(blur_YUV.z, smp_YUV.z, w/bandwidth_mhz_V ); // Blur V
@@ -154,21 +174,21 @@ void main() {
vec3 pixel_out;
//Handle case where both are needed:
//First shift the right source, then pass it to bleed function.
- if (DO_SHIFT_RGB + DO_SAT_BLEED > 1.0) {
- pixel_out = pixel_offset_wrap(vTexCoord);
+ if (DO_SHIFT_RGB + DO_SAT_BLEED > 1.0 || DOT_M_SHADOW_STR > 0.0 ) {
+ pixel_out = deconvergence_shadow_wrap(vTexCoord);
if (DO_SAT_BLEED > 0.0) {
if ( DO_FXAA == 1.0) {
pixel_out = pixel_bleed(pixel_out, vTexCoord, FXAA_pass, global.FXAA_passSize);
pixel_alpha_ntsc_artifacts = texture(FXAA_pass, vTexCoord).a;
} else {
- pixel_out = pixel_bleed(pixel_out, vTexCoord, first_pass, global.first_passSize);
- pixel_alpha_ntsc_artifacts = texture(first_pass, vTexCoord).a;
+ pixel_out = pixel_bleed(pixel_out, vTexCoord, flick_and_noise_pass, global.flick_and_noise_passSize);
+ pixel_alpha_ntsc_artifacts = texture(flick_and_noise_pass, vTexCoord).a;
}
}
} else
//Handle case where only color shifting is requested
- if (DO_SHIFT_RGB > 0.0) {
- pixel_out = pixel_offset_wrap(vTexCoord);
+ if (DO_SHIFT_RGB > 0.0 || DOT_M_SHADOW_STR > 0.0) {
+ pixel_out = deconvergence_shadow_wrap(vTexCoord);
} else
if (DO_SAT_BLEED > 0.0) {
//Handle case where only chroma bleed is requested
@@ -178,9 +198,9 @@ void main() {
pixel_out = pixel_bleed(pixel_out, vTexCoord, FXAA_pass, global.FXAA_passSize);
} else {
- pixel_out = texture(first_pass, vTexCoord).rgb;
- pixel_alpha_ntsc_artifacts = texture(first_pass, vTexCoord).a;
- pixel_out = pixel_bleed(pixel_out, vTexCoord, first_pass, global.first_passSize);
+ pixel_out = texture(flick_and_noise_pass, vTexCoord).rgb;
+ pixel_alpha_ntsc_artifacts = texture(flick_and_noise_pass, vTexCoord).a;
+ pixel_out = pixel_bleed(pixel_out, vTexCoord, flick_and_noise_pass, global.flick_and_noise_passSize);
}
} else
//Passthrough
@@ -188,8 +208,8 @@ void main() {
pixel_out = texture(FXAA_pass, vTexCoord).rgb;
pixel_alpha_ntsc_artifacts = texture(FXAA_pass, vTexCoord).a;
} else {
- pixel_out = texture(first_pass, vTexCoord).rgb;
- pixel_alpha_ntsc_artifacts = texture(first_pass, vTexCoord).a;
+ pixel_out = texture(flick_and_noise_pass, vTexCoord).rgb;
+ pixel_alpha_ntsc_artifacts = texture(flick_and_noise_pass, vTexCoord).a;
}
//pre-gamma if needed by glow.
diff --git a/bezel/koko-aio/textures/monitor_body_straight.png b/bezel/koko-aio/textures/monitor_body_straight.png
index 9b6fec1..0a5215a 100644
Binary files a/bezel/koko-aio/textures/monitor_body_straight.png and b/bezel/koko-aio/textures/monitor_body_straight.png differ
diff --git a/bezel/koko-aio/tv-BASE.slangp b/bezel/koko-aio/tv-BASE.slangp
index 1b9fb63..d7c5349 100644
--- a/bezel/koko-aio/tv-BASE.slangp
+++ b/bezel/koko-aio/tv-BASE.slangp
@@ -1,20 +1,20 @@
shaders = "17"
-shader0 = "shaders/ntsc_pass.slang"
+shader0 = "shaders/colortools_and_ntsc_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
-alias0 = "ntsc_pass"
+alias0 = "colortools_and_ntsc_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "1.000000"
-shader1 = "shaders/first_pass.slang"
+shader1 = "shaders/flick_and_noise.slang"
filter_linear1 = "false"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "false"
-alias1 = "first_pass"
+alias1 = "flick_and_noise_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
@@ -188,9 +188,9 @@ scale_type_y16 = "viewport"
scale_y16 = "1.000000"
DO_CCORRECTION = "1.000000"
LUMINANCE = "0.100000"
-SATURATION = "1.050000"
TEMPERATURE = "7000.000000"
GAMMA_OUT = "0.500000"
+SATURATION = "1.050000"
DO_FXAA = "1.000000"
SAT_BLEED_PAL = "1.000000"
SAT_BLEED_STRENGTH = "0.500000"
@@ -212,19 +212,19 @@ RGB_MASK_STRENGTH = "1.000000"
VMASK_USE_GM = "1.000000"
VMASK_GAP = "1.000000"
DARKLINES_STRENGTH = "0.000000"
+SCANLINE_DARK = "0.700000"
+SCANLINES_BLEEDING = "1.000000"
+SCANLINE_FLICKERING = "0.000000"
+SCANLINE_FLICKERING_POWER = "0.170000"
DO_HALO = "1.000000"
HALO_POWER = "0.990000"
HALO_W = "3.000000"
HALO_H = "3.000000"
HALO_GAMMA = "1.400000"
-SCANLINE_DARK = "0.700000"
-SCANLINES_BLEEDING = "1.000000"
-SCANLINE_FLICKERING = "0.000000"
-SCANLINE_FLICKERING_POWER = "0.170000"
BLOOM_MIX = "0.500000"
DO_CURVATURE = "1.000000"
-GEOM_WARP_X = "0.475000"
-GEOM_WARP_Y = "0.500000"
+GEOM_WARP_X = "0.420000"
+GEOM_WARP_Y = "0.470000"
GEOM_CORNER_SIZE = "0.010000"
GEOM_CORNER_SMOOTH = "200.000000"
BEZEL_INNER_ZOOM = "-0.160000"
diff --git a/bezel/koko-aio/tv-NTSC-1-classic_take.slangp b/bezel/koko-aio/tv-NTSC-1-classic_take.slangp
index 7748c84..d686128 100644
--- a/bezel/koko-aio/tv-NTSC-1-classic_take.slangp
+++ b/bezel/koko-aio/tv-NTSC-1-classic_take.slangp
@@ -1,20 +1,20 @@
shaders = "17"
-shader0 = "shaders/ntsc_pass.slang"
+shader0 = "shaders/colortools_and_ntsc_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
-alias0 = "ntsc_pass"
+alias0 = "colortools_and_ntsc_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "1.000000"
-shader1 = "shaders/first_pass.slang"
+shader1 = "shaders/flick_and_noise.slang"
filter_linear1 = "false"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "false"
-alias1 = "first_pass"
+alias1 = "flick_and_noise_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
@@ -188,8 +188,8 @@ scale_type_y16 = "viewport"
scale_y16 = "1.000000"
DO_CCORRECTION = "1.000000"
LUMINANCE = "0.200000"
-CONTRAST = "0.050000"
BRIGHTNESS = "0.050000"
+CONTRAST = "0.050000"
TEMPERATURE = "7000.000000"
GAMMA_OUT = "0.560000"
DO_NTSC_ARTIFACTS = "1.000000"
@@ -208,25 +208,25 @@ DO_VMASK_AND_DARKLINES = "1.000000"
RGB_MASK_STRENGTH = "1.000000"
VMASK_USE_GM = "1.000000"
DARKLINES_STRENGTH = "1.000000"
+DO_SCANLINES = "1.000000"
+SCANLINE_MIN = "0.200000"
+SCANLINE_MAX = "1.000000"
+SCANLINE_SM_VOFFSET = "70.000000"
DO_HALO = "1.000000"
HALO_POWER = "0.500000"
HALO_W = "3.500000"
HALO_H = "3.500000"
HALO_GAMMA = "1.300000"
HALO_VS_SCAN = "0.900000"
-DO_SCANLINES = "1.000000"
-SCANLINE_MIN = "0.200000"
-SCANLINE_MAX = "1.000000"
-SCANLINE_SM_VOFFSET = "70.000000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.550000"
BLOOM_EYE_ADPT_SRT = "0.800000"
DO_CURVATURE = "1.000000"
-GEOM_WARP_X = "0.450000"
-GEOM_WARP_Y = "0.500000"
+GEOM_WARP_X = "0.420000"
+GEOM_WARP_Y = "0.470000"
GEOM_CORNER_SMOOTH = "400.000000"
DO_BEZEL = "1.000000"
-BEZEL_INNER_ZOOM = "-0.011000"
+BEZEL_INNER_ZOOM = "-0.013000"
BEZEL_FRAME_ZOOM = "0.170000"
BEZEL_R = "-0.190000"
BEZEL_G = "-0.190000"
diff --git a/bezel/koko-aio/tv-NTSC-1-selective-classic_take.slangp b/bezel/koko-aio/tv-NTSC-1-selective-classic_take.slangp
index ebce60b..2e2d7ca 100644
--- a/bezel/koko-aio/tv-NTSC-1-selective-classic_take.slangp
+++ b/bezel/koko-aio/tv-NTSC-1-selective-classic_take.slangp
@@ -1,20 +1,20 @@
shaders = "17"
-shader0 = "shaders/ntsc_pass.slang"
+shader0 = "shaders/colortools_and_ntsc_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
-alias0 = "ntsc_pass"
+alias0 = "colortools_and_ntsc_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "1.000000"
-shader1 = "shaders/first_pass.slang"
+shader1 = "shaders/flick_and_noise.slang"
filter_linear1 = "false"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "false"
-alias1 = "first_pass"
+alias1 = "flick_and_noise_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
@@ -188,8 +188,8 @@ scale_type_y16 = "viewport"
scale_y16 = "1.000000"
DO_CCORRECTION = "1.000000"
LUMINANCE = "0.200000"
-CONTRAST = "0.050000"
BRIGHTNESS = "0.050000"
+CONTRAST = "0.050000"
TEMPERATURE = "7000.000000"
GAMMA_OUT = "0.560000"
DO_NTSC_ARTIFACTS = "1.000000"
@@ -212,25 +212,25 @@ DO_VMASK_AND_DARKLINES = "1.000000"
RGB_MASK_STRENGTH = "1.000000"
VMASK_USE_GM = "1.000000"
DARKLINES_STRENGTH = "1.000000"
+DO_SCANLINES = "1.000000"
+SCANLINE_MIN = "0.200000"
+SCANLINE_MAX = "1.000000"
+SCANLINE_SM_VOFFSET = "70.000000"
DO_HALO = "1.000000"
HALO_POWER = "0.500000"
HALO_W = "3.500000"
HALO_H = "3.500000"
HALO_GAMMA = "1.300000"
HALO_VS_SCAN = "0.900000"
-DO_SCANLINES = "1.000000"
-SCANLINE_MIN = "0.200000"
-SCANLINE_MAX = "1.000000"
-SCANLINE_SM_VOFFSET = "70.000000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.550000"
BLOOM_EYE_ADPT_SRT = "0.800000"
DO_CURVATURE = "1.000000"
-GEOM_WARP_X = "0.450000"
-GEOM_WARP_Y = "0.500000"
+GEOM_WARP_X = "0.420000"
+GEOM_WARP_Y = "0.470000"
GEOM_CORNER_SMOOTH = "400.000000"
DO_BEZEL = "1.000000"
-BEZEL_INNER_ZOOM = "-0.011000"
+BEZEL_INNER_ZOOM = "-0.013000"
BEZEL_FRAME_ZOOM = "0.170000"
BEZEL_R = "-0.190000"
BEZEL_G = "-0.190000"
diff --git a/bezel/koko-aio/tv-NTSC-1-selective.slangp b/bezel/koko-aio/tv-NTSC-1-selective.slangp
index fcaa4f0..61a44b8 100644
--- a/bezel/koko-aio/tv-NTSC-1-selective.slangp
+++ b/bezel/koko-aio/tv-NTSC-1-selective.slangp
@@ -1,20 +1,20 @@
shaders = "17"
-shader0 = "shaders/ntsc_pass.slang"
+shader0 = "shaders/colortools_and_ntsc_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
-alias0 = "ntsc_pass"
+alias0 = "colortools_and_ntsc_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "1.000000"
-shader1 = "shaders/first_pass.slang"
+shader1 = "shaders/flick_and_noise.slang"
filter_linear1 = "false"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "false"
-alias1 = "first_pass"
+alias1 = "flick_and_noise_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
@@ -211,25 +211,25 @@ RGB_MASK_STRENGTH = "1.000000"
VMASK_USE_GM = "1.000000"
VMASK_GAP = "1.000000"
DARKLINES_STRENGTH = "0.000000"
+DO_SCANLINES = "1.000000"
+SCANLINE_MIN = "0.200000"
+SCANLINE_DARK = "0.100000"
+SCANLINE_SM_TYPE = "1.000000"
DO_HALO = "1.000000"
HALO_POWER = "0.500000"
HALO_W = "3.500000"
HALO_H = "3.500000"
HALO_GAMMA = "1.300000"
HALO_VS_SCAN = "0.800000"
-DO_SCANLINES = "1.000000"
-SCANLINE_MIN = "0.200000"
-SCANLINE_DARK = "0.100000"
-SCANLINE_SM_TYPE = "1.000000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.550000"
BLOOM_EYE_ADPT_SRT = "0.800000"
DO_CURVATURE = "1.000000"
-GEOM_WARP_X = "0.450000"
-GEOM_WARP_Y = "0.500000"
+GEOM_WARP_X = "0.420000"
+GEOM_WARP_Y = "0.470000"
GEOM_CORNER_SMOOTH = "400.000000"
DO_BEZEL = "1.000000"
-BEZEL_INNER_ZOOM = "-0.011000"
+BEZEL_INNER_ZOOM = "-0.013000"
BEZEL_FRAME_ZOOM = "0.170000"
BEZEL_R = "-0.190000"
BEZEL_G = "-0.190000"
diff --git a/bezel/koko-aio/tv-NTSC-1.slangp b/bezel/koko-aio/tv-NTSC-1.slangp
index 2115042..f0276c4 100644
--- a/bezel/koko-aio/tv-NTSC-1.slangp
+++ b/bezel/koko-aio/tv-NTSC-1.slangp
@@ -1,20 +1,20 @@
shaders = "17"
-shader0 = "shaders/ntsc_pass.slang"
+shader0 = "shaders/colortools_and_ntsc_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
-alias0 = "ntsc_pass"
+alias0 = "colortools_and_ntsc_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "1.000000"
-shader1 = "shaders/first_pass.slang"
+shader1 = "shaders/flick_and_noise.slang"
filter_linear1 = "false"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "false"
-alias1 = "first_pass"
+alias1 = "flick_and_noise_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
@@ -207,25 +207,25 @@ RGB_MASK_STRENGTH = "1.000000"
VMASK_USE_GM = "1.000000"
VMASK_GAP = "1.000000"
DARKLINES_STRENGTH = "0.000000"
+DO_SCANLINES = "1.000000"
+SCANLINE_MIN = "0.200000"
+SCANLINE_DARK = "0.100000"
+SCANLINE_SM_TYPE = "1.000000"
DO_HALO = "1.000000"
HALO_POWER = "0.500000"
HALO_W = "3.500000"
HALO_H = "3.500000"
HALO_GAMMA = "1.300000"
HALO_VS_SCAN = "0.800000"
-DO_SCANLINES = "1.000000"
-SCANLINE_MIN = "0.200000"
-SCANLINE_DARK = "0.100000"
-SCANLINE_SM_TYPE = "1.000000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.550000"
BLOOM_EYE_ADPT_SRT = "0.800000"
DO_CURVATURE = "1.000000"
-GEOM_WARP_X = "0.450000"
-GEOM_WARP_Y = "0.500000"
+GEOM_WARP_X = "0.420000"
+GEOM_WARP_Y = "0.470000"
GEOM_CORNER_SMOOTH = "400.000000"
DO_BEZEL = "1.000000"
-BEZEL_INNER_ZOOM = "-0.011000"
+BEZEL_INNER_ZOOM = "-0.013000"
BEZEL_FRAME_ZOOM = "0.170000"
BEZEL_R = "-0.190000"
BEZEL_G = "-0.190000"
diff --git a/bezel/koko-aio/tv-NTSC-2.slangp b/bezel/koko-aio/tv-NTSC-2.slangp
index 2d5fb0f..de0efca 100644
--- a/bezel/koko-aio/tv-NTSC-2.slangp
+++ b/bezel/koko-aio/tv-NTSC-2.slangp
@@ -1,20 +1,20 @@
shaders = "17"
-shader0 = "shaders/ntsc_pass.slang"
+shader0 = "shaders/colortools_and_ntsc_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
-alias0 = "ntsc_pass"
+alias0 = "colortools_and_ntsc_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "1.000000"
-shader1 = "shaders/first_pass.slang"
+shader1 = "shaders/flick_and_noise.slang"
filter_linear1 = "false"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "false"
-alias1 = "first_pass"
+alias1 = "flick_and_noise_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
@@ -208,25 +208,25 @@ RGB_MASK_STRENGTH = "1.000000"
VMASK_USE_GM = "1.000000"
VMASK_GAP = "1.000000"
DARKLINES_STRENGTH = "0.000000"
+DO_SCANLINES = "1.000000"
+SCANLINE_MIN = "0.200000"
+SCANLINE_DARK = "0.100000"
+SCANLINE_SM_TYPE = "1.000000"
DO_HALO = "1.000000"
HALO_POWER = "0.500000"
HALO_W = "3.500000"
HALO_H = "3.500000"
HALO_GAMMA = "1.300000"
HALO_VS_SCAN = "0.800000"
-DO_SCANLINES = "1.000000"
-SCANLINE_MIN = "0.200000"
-SCANLINE_DARK = "0.100000"
-SCANLINE_SM_TYPE = "1.000000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.550000"
BLOOM_EYE_ADPT_SRT = "0.800000"
DO_CURVATURE = "1.000000"
-GEOM_WARP_X = "0.450000"
-GEOM_WARP_Y = "0.500000"
+GEOM_WARP_X = "0.420000"
+GEOM_WARP_Y = "0.470000"
GEOM_CORNER_SMOOTH = "400.000000"
DO_BEZEL = "1.000000"
-BEZEL_INNER_ZOOM = "-0.011000"
+BEZEL_INNER_ZOOM = "-0.013000"
BEZEL_FRAME_ZOOM = "0.170000"
BEZEL_R = "-0.190000"
BEZEL_G = "-0.190000"
diff --git a/bezel/koko-aio/tv-PAL-my-old.slangp b/bezel/koko-aio/tv-PAL-my-old.slangp
index f74461d..90085e9 100644
--- a/bezel/koko-aio/tv-PAL-my-old.slangp
+++ b/bezel/koko-aio/tv-PAL-my-old.slangp
@@ -1,20 +1,20 @@
shaders = "17"
-shader0 = "shaders/ntsc_pass.slang"
+shader0 = "shaders/colortools_and_ntsc_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
-alias0 = "ntsc_pass"
+alias0 = "colortools_and_ntsc_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "1.000000"
-shader1 = "shaders/first_pass.slang"
+shader1 = "shaders/flick_and_noise.slang"
filter_linear1 = "false"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "false"
-alias1 = "first_pass"
+alias1 = "flick_and_noise_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
@@ -188,11 +188,11 @@ scale_type_y16 = "viewport"
scale_y16 = "1.000000"
DO_CCORRECTION = "1.000000"
LUMINANCE = "0.100000"
-SATURATION = "1.200000"
-CONTRAST = "0.050000"
BRIGHTNESS = "0.050000"
+CONTRAST = "0.050000"
TEMPERATURE = "7500.000000"
GAMMA_OUT = "0.560000"
+SATURATION = "1.200000"
DO_RF_NOISE = "1.000000"
RF_NOISE_STRENGTH = "0.025000"
DO_SAT_BLEED = "1.000000"
@@ -217,24 +217,23 @@ VMASK_USE_GM = "1.000000"
VMASK_GAP = "1.000000"
DARKLINES_STRENGTH = "0.700000"
DARKLINES_PERIOD = "4.000000"
+SCANLINE_DARK = "0.700000"
+SCANLINES_BLEEDING = "1.000000"
+SCANLINE_FLICKERING = "0.000000"
+SCANLINE_FLICKERING_POWER = "0.170000"
DO_HALO = "1.000000"
HALO_POWER = "0.500000"
HALO_W = "3.000000"
HALO_H = "3.000000"
HALO_GAMMA = "1.400000"
-SCANLINE_DARK = "0.700000"
-SCANLINES_BLEEDING = "1.000000"
-SCANLINE_FLICKERING = "0.000000"
-SCANLINE_FLICKERING_POWER = "0.170000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.500000"
DO_CURVATURE = "1.000000"
-GEOM_WARP_X = "0.475000"
-GEOM_WARP_Y = "0.500000"
-GEOM_CORNER_SIZE = "0.010000"
+GEOM_WARP_X = "0.420000"
+GEOM_WARP_Y = "0.470000"
GEOM_CORNER_SMOOTH = "400.000000"
DO_BEZEL = "1.000000"
-BEZEL_INNER_ZOOM = "-0.010000"
+BEZEL_INNER_ZOOM = "-0.014000"
BEZEL_FRAME_ZOOM = "0.170000"
BEZEL_R = "-0.190000"
BEZEL_G = "-0.190000"
diff --git a/bezel/koko-aio/tv-aperturegrille-bloom-bezel.slangp b/bezel/koko-aio/tv-aperturegrille-bloom-bezel.slangp
index 377ed42..2dfc023 100644
--- a/bezel/koko-aio/tv-aperturegrille-bloom-bezel.slangp
+++ b/bezel/koko-aio/tv-aperturegrille-bloom-bezel.slangp
@@ -1,20 +1,20 @@
shaders = "17"
-shader0 = "shaders/ntsc_pass.slang"
+shader0 = "shaders/colortools_and_ntsc_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
-alias0 = "ntsc_pass"
+alias0 = "colortools_and_ntsc_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "1.000000"
-shader1 = "shaders/first_pass.slang"
+shader1 = "shaders/flick_and_noise.slang"
filter_linear1 = "false"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "false"
-alias1 = "first_pass"
+alias1 = "flick_and_noise_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
@@ -188,9 +188,9 @@ scale_type_y16 = "viewport"
scale_y16 = "1.000000"
DO_CCORRECTION = "1.000000"
LUMINANCE = "0.100000"
-SATURATION = "1.050000"
TEMPERATURE = "7000.000000"
GAMMA_OUT = "0.500000"
+SATURATION = "1.050000"
DO_FXAA = "1.000000"
SAT_BLEED_PAL = "1.000000"
SAT_BLEED_STRENGTH = "0.500000"
@@ -214,23 +214,23 @@ VMASK_USE_GM = "1.000000"
VMASK_GAP = "1.000000"
DARKLINES_STRENGTH = "1.000000"
DARKLINES_VOFFSET = "0.000000"
+SCANLINE_DARK = "0.700000"
+SCANLINES_BLEEDING = "1.000000"
+SCANLINE_FLICKERING = "0.000000"
+SCANLINE_FLICKERING_POWER = "0.170000"
DO_HALO = "1.000000"
HALO_POWER = "0.990000"
HALO_W = "3.000000"
HALO_H = "3.000000"
HALO_GAMMA = "1.400000"
-SCANLINE_DARK = "0.700000"
-SCANLINES_BLEEDING = "1.000000"
-SCANLINE_FLICKERING = "0.000000"
-SCANLINE_FLICKERING_POWER = "0.170000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.500000"
DO_CURVATURE = "1.000000"
-GEOM_WARP_X = "0.450000"
-GEOM_WARP_Y = "0.500000"
+GEOM_WARP_X = "0.420000"
+GEOM_WARP_Y = "0.470000"
GEOM_CORNER_SMOOTH = "400.000000"
DO_BEZEL = "1.000000"
-BEZEL_INNER_ZOOM = "-0.185000"
+BEZEL_INNER_ZOOM = "-0.175000"
BEZEL_FRAME_ZOOM = "0.040000"
AMBI_FALLOFF = "0.600000"
AMBI_POWER = "1.700000"
diff --git a/bezel/koko-aio/tv-aperturegrille-bloom-bezelwider.slangp b/bezel/koko-aio/tv-aperturegrille-bloom-bezelwider.slangp
index 66c4480..48a0c65 100644
--- a/bezel/koko-aio/tv-aperturegrille-bloom-bezelwider.slangp
+++ b/bezel/koko-aio/tv-aperturegrille-bloom-bezelwider.slangp
@@ -1,20 +1,20 @@
shaders = "17"
-shader0 = "shaders/ntsc_pass.slang"
+shader0 = "shaders/colortools_and_ntsc_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
-alias0 = "ntsc_pass"
+alias0 = "colortools_and_ntsc_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "1.000000"
-shader1 = "shaders/first_pass.slang"
+shader1 = "shaders/flick_and_noise.slang"
filter_linear1 = "false"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "false"
-alias1 = "first_pass"
+alias1 = "flick_and_noise_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
@@ -188,9 +188,9 @@ scale_type_y16 = "viewport"
scale_y16 = "1.000000"
DO_CCORRECTION = "1.000000"
LUMINANCE = "0.100000"
-SATURATION = "1.050000"
TEMPERATURE = "7000.000000"
GAMMA_OUT = "0.500000"
+SATURATION = "1.050000"
DO_FXAA = "1.000000"
SAT_BLEED_PAL = "1.000000"
SAT_BLEED_STRENGTH = "0.500000"
@@ -214,20 +214,20 @@ VMASK_USE_GM = "1.000000"
VMASK_GAP = "1.000000"
DARKLINES_STRENGTH = "1.000000"
DARKLINES_VOFFSET = "0.000000"
+SCANLINE_DARK = "0.700000"
+SCANLINES_BLEEDING = "1.000000"
+SCANLINE_FLICKERING = "0.000000"
+SCANLINE_FLICKERING_POWER = "0.170000"
DO_HALO = "1.000000"
HALO_POWER = "0.990000"
HALO_W = "3.000000"
HALO_H = "3.000000"
HALO_GAMMA = "1.400000"
-SCANLINE_DARK = "0.700000"
-SCANLINES_BLEEDING = "1.000000"
-SCANLINE_FLICKERING = "0.000000"
-SCANLINE_FLICKERING_POWER = "0.170000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.500000"
DO_CURVATURE = "1.000000"
-GEOM_WARP_X = "0.450000"
-GEOM_WARP_Y = "0.500000"
+GEOM_WARP_X = "0.420000"
+GEOM_WARP_Y = "0.470000"
GEOM_CORNER_SMOOTH = "400.000000"
DO_BEZEL = "1.000000"
BEZEL_INNER_ZOOM = "-0.011000"
diff --git a/bezel/koko-aio/tv-aperturegrille-bloom.slangp b/bezel/koko-aio/tv-aperturegrille-bloom.slangp
index 01244e9..5882775 100644
--- a/bezel/koko-aio/tv-aperturegrille-bloom.slangp
+++ b/bezel/koko-aio/tv-aperturegrille-bloom.slangp
@@ -1,20 +1,20 @@
shaders = "17"
-shader0 = "shaders/ntsc_pass.slang"
+shader0 = "shaders/colortools_and_ntsc_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
-alias0 = "ntsc_pass"
+alias0 = "colortools_and_ntsc_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "1.000000"
-shader1 = "shaders/first_pass.slang"
+shader1 = "shaders/flick_and_noise.slang"
filter_linear1 = "false"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "false"
-alias1 = "first_pass"
+alias1 = "flick_and_noise_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
@@ -188,9 +188,9 @@ scale_type_y16 = "viewport"
scale_y16 = "1.000000"
DO_CCORRECTION = "1.000000"
LUMINANCE = "0.100000"
-SATURATION = "1.050000"
TEMPERATURE = "7000.000000"
GAMMA_OUT = "0.500000"
+SATURATION = "1.050000"
DO_FXAA = "1.000000"
SAT_BLEED_PAL = "1.000000"
SAT_BLEED_STRENGTH = "0.500000"
@@ -214,20 +214,20 @@ VMASK_USE_GM = "1.000000"
VMASK_GAP = "1.000000"
DARKLINES_STRENGTH = "1.000000"
DARKLINES_VOFFSET = "0.000000"
+SCANLINE_DARK = "0.700000"
+SCANLINES_BLEEDING = "1.000000"
+SCANLINE_FLICKERING = "0.000000"
+SCANLINE_FLICKERING_POWER = "0.170000"
DO_HALO = "1.000000"
HALO_POWER = "0.990000"
HALO_W = "3.000000"
HALO_H = "3.000000"
HALO_GAMMA = "1.400000"
-SCANLINE_DARK = "0.700000"
-SCANLINES_BLEEDING = "1.000000"
-SCANLINE_FLICKERING = "0.000000"
-SCANLINE_FLICKERING_POWER = "0.170000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.500000"
DO_CURVATURE = "1.000000"
-GEOM_WARP_X = "0.475000"
-GEOM_WARP_Y = "0.500000"
+GEOM_WARP_X = "0.420000"
+GEOM_WARP_Y = "0.470000"
GEOM_CORNER_SIZE = "0.010000"
GEOM_CORNER_SMOOTH = "200.000000"
BEZEL_INNER_ZOOM = "-0.160000"
diff --git a/bezel/koko-aio/tv-aperturegrille.slangp b/bezel/koko-aio/tv-aperturegrille.slangp
index a23cbf8..ce0bf0d 100644
--- a/bezel/koko-aio/tv-aperturegrille.slangp
+++ b/bezel/koko-aio/tv-aperturegrille.slangp
@@ -1,20 +1,20 @@
shaders = "17"
-shader0 = "shaders/ntsc_pass.slang"
+shader0 = "shaders/colortools_and_ntsc_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
-alias0 = "ntsc_pass"
+alias0 = "colortools_and_ntsc_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "1.000000"
-shader1 = "shaders/first_pass.slang"
+shader1 = "shaders/flick_and_noise.slang"
filter_linear1 = "false"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "false"
-alias1 = "first_pass"
+alias1 = "flick_and_noise_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
@@ -188,9 +188,9 @@ scale_type_y16 = "viewport"
scale_y16 = "1.000000"
DO_CCORRECTION = "1.000000"
LUMINANCE = "0.100000"
-SATURATION = "1.050000"
TEMPERATURE = "7000.000000"
GAMMA_OUT = "0.500000"
+SATURATION = "1.050000"
DO_FXAA = "1.000000"
SAT_BLEED_PAL = "1.000000"
SAT_BLEED_STRENGTH = "0.500000"
@@ -214,19 +214,19 @@ VMASK_USE_GM = "1.000000"
VMASK_GAP = "1.000000"
DARKLINES_STRENGTH = "1.000000"
DARKLINES_VOFFSET = "0.000000"
+SCANLINE_DARK = "0.700000"
+SCANLINES_BLEEDING = "1.000000"
+SCANLINE_FLICKERING = "0.000000"
+SCANLINE_FLICKERING_POWER = "0.170000"
DO_HALO = "1.000000"
HALO_POWER = "0.990000"
HALO_W = "3.000000"
HALO_H = "3.000000"
HALO_GAMMA = "1.400000"
-SCANLINE_DARK = "0.700000"
-SCANLINES_BLEEDING = "1.000000"
-SCANLINE_FLICKERING = "0.000000"
-SCANLINE_FLICKERING_POWER = "0.170000"
BLOOM_MIX = "0.500000"
DO_CURVATURE = "1.000000"
-GEOM_WARP_X = "0.475000"
-GEOM_WARP_Y = "0.500000"
+GEOM_WARP_X = "0.420000"
+GEOM_WARP_Y = "0.470000"
GEOM_CORNER_SIZE = "0.010000"
GEOM_CORNER_SMOOTH = "200.000000"
BEZEL_INNER_ZOOM = "-0.160000"
diff --git a/bezel/koko-aio/tv-flickering.slangp b/bezel/koko-aio/tv-flickering.slangp
index 415704e..6a7468e 100644
--- a/bezel/koko-aio/tv-flickering.slangp
+++ b/bezel/koko-aio/tv-flickering.slangp
@@ -1,20 +1,20 @@
shaders = "17"
-shader0 = "shaders/ntsc_pass.slang"
+shader0 = "shaders/colortools_and_ntsc_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
-alias0 = "ntsc_pass"
+alias0 = "colortools_and_ntsc_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "1.000000"
-shader1 = "shaders/first_pass.slang"
+shader1 = "shaders/flick_and_noise.slang"
filter_linear1 = "false"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "false"
-alias1 = "first_pass"
+alias1 = "flick_and_noise_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
@@ -214,25 +214,23 @@ VMASK_USE_GM = "1.000000"
VMASK_GAP = "1.000000"
DARKLINES_STRENGTH = "0.700000"
DARKLINES_PERIOD = "4.000000"
-DO_HALO = "1.000000"
-HALO_POWER = "0.500000"
-HALO_W = "3.000000"
-HALO_H = "3.000000"
-HALO_GAMMA = "1.400000"
DO_SCANLINES = "1.000000"
SCANLINE_MAX = "1.000000"
SCANLINE_DARK = "1.000000"
SCANLINE_FLICKERING = "1.000000"
SCANLINE_FLICKERING_POWER = "0.400000"
+DO_HALO = "1.000000"
+HALO_POWER = "0.500000"
+HALO_W = "3.000000"
+HALO_H = "3.000000"
+HALO_GAMMA = "1.400000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.500000"
DO_CURVATURE = "1.000000"
-GEOM_WARP_X = "0.475000"
-GEOM_WARP_Y = "0.500000"
GEOM_CORNER_SMOOTH = "400.000000"
DO_BEZEL = "1.000000"
-BEZEL_INNER_ZOOM = "-0.010000"
-BEZEL_FRAME_ZOOM = "0.170000"
+BEZEL_INNER_ZOOM = "-0.175000"
+BEZEL_FRAME_ZOOM = "0.040000"
BEZEL_R = "-0.190000"
BEZEL_G = "-0.190000"
BEZEL_B = "-0.190000"
diff --git a/bezel/koko-aio/tv-slotmask-bloom-bezel.slangp b/bezel/koko-aio/tv-slotmask-bloom-bezel.slangp
index 74e4756..114b400 100644
--- a/bezel/koko-aio/tv-slotmask-bloom-bezel.slangp
+++ b/bezel/koko-aio/tv-slotmask-bloom-bezel.slangp
@@ -1,20 +1,20 @@
shaders = "17"
-shader0 = "shaders/ntsc_pass.slang"
+shader0 = "shaders/colortools_and_ntsc_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
-alias0 = "ntsc_pass"
+alias0 = "colortools_and_ntsc_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "1.000000"
-shader1 = "shaders/first_pass.slang"
+shader1 = "shaders/flick_and_noise.slang"
filter_linear1 = "false"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "false"
-alias1 = "first_pass"
+alias1 = "flick_and_noise_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
@@ -188,9 +188,9 @@ scale_type_y16 = "viewport"
scale_y16 = "1.000000"
DO_CCORRECTION = "1.000000"
LUMINANCE = "0.100000"
-SATURATION = "1.050000"
TEMPERATURE = "7000.000000"
GAMMA_OUT = "0.500000"
+SATURATION = "1.050000"
DO_FXAA = "1.000000"
SAT_BLEED_PAL = "1.000000"
SAT_BLEED_STRENGTH = "0.500000"
@@ -213,23 +213,23 @@ VMASK_USE_GM = "1.000000"
VMASK_GAP = "1.000000"
DARKLINES_STRENGTH = "0.800000"
DARKLINES_PERIOD = "4.000000"
+SCANLINE_DARK = "0.700000"
+SCANLINES_BLEEDING = "1.000000"
+SCANLINE_FLICKERING = "0.000000"
+SCANLINE_FLICKERING_POWER = "0.170000"
DO_HALO = "1.000000"
HALO_POWER = "0.990000"
HALO_W = "3.000000"
HALO_H = "3.000000"
HALO_GAMMA = "1.400000"
-SCANLINE_DARK = "0.700000"
-SCANLINES_BLEEDING = "1.000000"
-SCANLINE_FLICKERING = "0.000000"
-SCANLINE_FLICKERING_POWER = "0.170000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.500000"
DO_CURVATURE = "1.000000"
-GEOM_WARP_X = "0.450000"
-GEOM_WARP_Y = "0.500000"
+GEOM_WARP_X = "0.420000"
+GEOM_WARP_Y = "0.470000"
GEOM_CORNER_SMOOTH = "400.000000"
DO_BEZEL = "1.000000"
-BEZEL_INNER_ZOOM = "-0.185000"
+BEZEL_INNER_ZOOM = "-0.175000"
BEZEL_FRAME_ZOOM = "0.040000"
AMBI_FALLOFF = "0.600000"
AMBI_POWER = "1.700000"
diff --git a/bezel/koko-aio/tv-slotmask-bloom-bezelwider.slangp b/bezel/koko-aio/tv-slotmask-bloom-bezelwider.slangp
index 730c549..e28e492 100644
--- a/bezel/koko-aio/tv-slotmask-bloom-bezelwider.slangp
+++ b/bezel/koko-aio/tv-slotmask-bloom-bezelwider.slangp
@@ -1,20 +1,20 @@
shaders = "17"
-shader0 = "shaders/ntsc_pass.slang"
+shader0 = "shaders/colortools_and_ntsc_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
-alias0 = "ntsc_pass"
+alias0 = "colortools_and_ntsc_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "1.000000"
-shader1 = "shaders/first_pass.slang"
+shader1 = "shaders/flick_and_noise.slang"
filter_linear1 = "false"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "false"
-alias1 = "first_pass"
+alias1 = "flick_and_noise_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
@@ -188,9 +188,9 @@ scale_type_y16 = "viewport"
scale_y16 = "1.000000"
DO_CCORRECTION = "1.000000"
LUMINANCE = "0.100000"
-SATURATION = "1.050000"
TEMPERATURE = "7000.000000"
GAMMA_OUT = "0.500000"
+SATURATION = "1.050000"
DO_FXAA = "1.000000"
SAT_BLEED_PAL = "1.000000"
SAT_BLEED_STRENGTH = "0.500000"
@@ -213,23 +213,23 @@ VMASK_USE_GM = "1.000000"
VMASK_GAP = "1.000000"
DARKLINES_STRENGTH = "0.800000"
DARKLINES_PERIOD = "4.000000"
+SCANLINE_DARK = "0.700000"
+SCANLINES_BLEEDING = "1.000000"
+SCANLINE_FLICKERING = "0.000000"
+SCANLINE_FLICKERING_POWER = "0.170000"
DO_HALO = "1.000000"
HALO_POWER = "0.990000"
HALO_W = "3.000000"
HALO_H = "3.000000"
HALO_GAMMA = "1.400000"
-SCANLINE_DARK = "0.700000"
-SCANLINES_BLEEDING = "1.000000"
-SCANLINE_FLICKERING = "0.000000"
-SCANLINE_FLICKERING_POWER = "0.170000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.500000"
DO_CURVATURE = "1.000000"
-GEOM_WARP_X = "0.450000"
-GEOM_WARP_Y = "0.500000"
+GEOM_WARP_X = "0.420000"
+GEOM_WARP_Y = "0.470000"
GEOM_CORNER_SMOOTH = "400.000000"
DO_BEZEL = "1.000000"
-BEZEL_INNER_ZOOM = "-0.011000"
+BEZEL_INNER_ZOOM = "-0.018000"
BEZEL_FRAME_ZOOM = "0.170000"
AMBI_FALLOFF = "0.400000"
AMBI_POWER = "5.000000"
diff --git a/bezel/koko-aio/tv-slotmask-bloom.slangp b/bezel/koko-aio/tv-slotmask-bloom.slangp
index 611d473..e5bb3f1 100644
--- a/bezel/koko-aio/tv-slotmask-bloom.slangp
+++ b/bezel/koko-aio/tv-slotmask-bloom.slangp
@@ -1,20 +1,20 @@
shaders = "17"
-shader0 = "shaders/ntsc_pass.slang"
+shader0 = "shaders/colortools_and_ntsc_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
-alias0 = "ntsc_pass"
+alias0 = "colortools_and_ntsc_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "1.000000"
-shader1 = "shaders/first_pass.slang"
+shader1 = "shaders/flick_and_noise.slang"
filter_linear1 = "false"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "false"
-alias1 = "first_pass"
+alias1 = "flick_and_noise_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
@@ -188,9 +188,9 @@ scale_type_y16 = "viewport"
scale_y16 = "1.000000"
DO_CCORRECTION = "1.000000"
LUMINANCE = "0.100000"
-SATURATION = "1.050000"
TEMPERATURE = "7000.000000"
GAMMA_OUT = "0.500000"
+SATURATION = "1.050000"
DO_FXAA = "1.000000"
SAT_BLEED_PAL = "1.000000"
SAT_BLEED_STRENGTH = "0.500000"
@@ -213,20 +213,20 @@ VMASK_USE_GM = "1.000000"
VMASK_GAP = "1.000000"
DARKLINES_STRENGTH = "0.800000"
DARKLINES_PERIOD = "4.000000"
+SCANLINE_DARK = "0.700000"
+SCANLINES_BLEEDING = "1.000000"
+SCANLINE_FLICKERING = "0.000000"
+SCANLINE_FLICKERING_POWER = "0.170000"
DO_HALO = "1.000000"
HALO_POWER = "0.990000"
HALO_W = "3.000000"
HALO_H = "3.000000"
HALO_GAMMA = "1.400000"
-SCANLINE_DARK = "0.700000"
-SCANLINES_BLEEDING = "1.000000"
-SCANLINE_FLICKERING = "0.000000"
-SCANLINE_FLICKERING_POWER = "0.170000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.500000"
DO_CURVATURE = "1.000000"
-GEOM_WARP_X = "0.475000"
-GEOM_WARP_Y = "0.500000"
+GEOM_WARP_X = "0.420000"
+GEOM_WARP_Y = "0.470000"
GEOM_CORNER_SIZE = "0.010000"
GEOM_CORNER_SMOOTH = "200.000000"
BEZEL_INNER_ZOOM = "-0.160000"
diff --git a/bezel/koko-aio/tv-slotmask.slangp b/bezel/koko-aio/tv-slotmask.slangp
index b003521..0fbc987 100644
--- a/bezel/koko-aio/tv-slotmask.slangp
+++ b/bezel/koko-aio/tv-slotmask.slangp
@@ -1,20 +1,20 @@
shaders = "17"
-shader0 = "shaders/ntsc_pass.slang"
+shader0 = "shaders/colortools_and_ntsc_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
-alias0 = "ntsc_pass"
+alias0 = "colortools_and_ntsc_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "1.000000"
-shader1 = "shaders/first_pass.slang"
+shader1 = "shaders/flick_and_noise.slang"
filter_linear1 = "false"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "false"
-alias1 = "first_pass"
+alias1 = "flick_and_noise_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
@@ -188,9 +188,9 @@ scale_type_y16 = "viewport"
scale_y16 = "1.000000"
DO_CCORRECTION = "1.000000"
LUMINANCE = "0.100000"
-SATURATION = "1.050000"
TEMPERATURE = "7000.000000"
GAMMA_OUT = "0.500000"
+SATURATION = "1.050000"
DO_FXAA = "1.000000"
SAT_BLEED_PAL = "1.000000"
SAT_BLEED_STRENGTH = "0.500000"
@@ -213,19 +213,19 @@ VMASK_USE_GM = "1.000000"
VMASK_GAP = "1.000000"
DARKLINES_STRENGTH = "0.800000"
DARKLINES_PERIOD = "4.000000"
+SCANLINE_DARK = "0.700000"
+SCANLINES_BLEEDING = "1.000000"
+SCANLINE_FLICKERING = "0.000000"
+SCANLINE_FLICKERING_POWER = "0.170000"
DO_HALO = "1.000000"
HALO_POWER = "0.990000"
HALO_W = "3.000000"
HALO_H = "3.000000"
HALO_GAMMA = "1.400000"
-SCANLINE_DARK = "0.700000"
-SCANLINES_BLEEDING = "1.000000"
-SCANLINE_FLICKERING = "0.000000"
-SCANLINE_FLICKERING_POWER = "0.170000"
BLOOM_MIX = "0.500000"
DO_CURVATURE = "1.000000"
-GEOM_WARP_X = "0.475000"
-GEOM_WARP_Y = "0.500000"
+GEOM_WARP_X = "0.420000"
+GEOM_WARP_Y = "0.470000"
GEOM_CORNER_SIZE = "0.010000"
GEOM_CORNER_SMOOTH = "200.000000"
BEZEL_INNER_ZOOM = "-0.160000"