Merge pull request #410 from kokoko3k/master

Koko-aio: update to 4.1
This commit is contained in:
hizzlekizzle 2023-04-28 22:17:59 -05:00 committed by GitHub
commit a61e445a4d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
52 changed files with 1351 additions and 691 deletions

View file

@ -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"

64
bezel/koko-aio/README.md Normal file
View file

@ -0,0 +1,64 @@
# Koko-aio
Koko-aio shader is meant to be an all-in one crt shader.<br>
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.<br>
On that gpu, as in version 3.5, it reaches about 85fps with all features enabled<br>
When dealing with lowres content on 1920x1080 resolution.<br>
While it is not meant to simulate the internal behaviour of CRT displays,<br>
it aims to give users "visual" parameters to make their monitors look similar.<br>
Several presets are included.<br>
***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)

View file

@ -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"

View file

@ -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:**<br>
Modify luminance, saturation, contrast, brightness and color temperature
of the signal, at "input" stage.<br>
Gamma correction is applied to the final processed picture.<br>
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.
**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.
**FXAA:**<br>
Apply the well known antialiasing effect by Nvidia.<br>
Use it if you don't want to blur the image and you still don't like<br>
jagged or too much pixelated images.<br>
** RF Noise: **
Emulates radio frequency noise with a given strength
**CVBS: NTSC color artifacts: **<br>
Tries to emulate typical NTSC color artifacting without emulating<br>
full NTSC coding/decoding pipeline.<br>
While it improves the look of NTSC content, don't expect it to be<br>
an accurate emulation (yet?)<br>
As today, it is enough to emulate rainbowing effects on genesis.<br>
**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.
** RF Noise: **<br>
Emulates radio frequency noise with a given strength<br>
**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.
**CVBS: Bandwidth limited chroma:**<br>
Will cause an horizontal chroma bleed which cheaply mimics the effect of<br>
poor composite video signals.<br>
It can be used with RGB shifting and image blurring to give the picture<br>
an ntsc look without dealing with specific encoding/decoding stuffs. <br>
**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.
**Deconvergence:**<br>
Shift R,G,B components separately to mimic channel deconvergence.<br>
By varying Red, Green and Blue offsets, the relative component will be<br>
shifted column by column, row by row.<br>
**Glow/Blur:**<br>
Emulate the CRT glowing "feature", so that the brighter areas of<br>
the image will light their surroundings,<br>
with options to switch to classic blur.<br>
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:**<br>
Emulates CRT RGB phosphors (RGB Mask),<br>
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:**<br>
Rotates mask and scanlines by 90°<br>
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:**<br>
Emulate CRT scanlines.<br>
Scanlines gap brightness:
controls how "little" they will look pronunced.
@ -165,10 +158,56 @@
This is the slotmask offset/stagger, (available on type 1 only)
Keep it around 79 or all the way to max
**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.
**Dot matrix emulation:**<br>
Emulates low refresh "boxed" screens used in old handheld consoles.<br>
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.<br>
You may want to lower this value to cancel vertical artifacts.<br>
Green gain correction:
R and B cnahhels could be partially cancelled by the grid around.<br>
Lower this if the image looks green.<br>
Refresh inertia:
Emulates a low refresh screen, set the power of the effect.<br>
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
**Halo:**<br>
Emulates the effect of the brighter pixels reflected by the CRT glass<br>
that lights nearby zones (a sort of tight bloom).<br>
The light is meant to be spreaded in a way that it nulls the effect of the<br>
dark scanline parts, darklines and the RGB masks.<br>
So you can use this to restore the brightness and color saturation<br>
loss when using features like scanlines, darklines or RGB masks.<br>
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:**<br>
Acts like Halo, but affects a much wider area and is more configurable.<br>
By using this effect and playing with its parameters, you can achieve funny<br>
or even artistic results.<br>
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:**<br>
Emulates a curved CRT display.<br>
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:**<br>
Draws a monitor frame with simulated reflections from the game content.<br>
The monitor frame is an image loaded by the shader and is shipped<br>
in the "textures" shader subdirectory, named "monitor\_body.png"<br>
It has been made with the following rules that may come handy<br>
only if you want to edit it; otherwise go on.<br>
- The red channel represents the luminance information<br>
- The green channel represents the highlights<br>
- The alpha channel in the inner frame represents the part of the bezel<br>
that will be filled by the game content<br>
- The blue channel represents the part of the bezel that will be filled by the game reflection.<br>
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<br>
**-> 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:**<br>
Draws an image on screen picked from the "textures" shader subdirectory,<br>
named: background.png<br><br>
**-> It is needed that you set retroarch aspect to "Full" <-**<br>
( Settings, Video, Scaling, Aspect Ratio = Full )<br>
The image is painted "under" the game content and under the monitor frame by<br>
default, and his alpha channel will let you see ambient lighs (see next).<br>
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:**<br>
Some old arcades used a mirror trick to overlay the<br>
game content over an high definition printed image.<br>
The image used by default, picked from the "textures" shader subdirectory,
The image used by default, picked from the "textures" shader subdirectory,<br>
is named: boothill.jpg<br>
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:**<br>
Emulates the presence of led strips under the monitor that lights the<br>
surroundings according to the edges of the game content.<br>
**-> It is needed that you set retroarch aspect to "Full" <-**<br>
( Settings, Video, Scaling, Aspect Ratio = Full )<br>
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:**<br>
On older CRT monitors, the picture gets bigger when the image was brighter.<br>
**Vignette:**
Will cause uneven brightness of the image, more at the center,
less at the edges.
**Vignette:**<br>
Will cause uneven brightness of the image, more at the center,<br>
less at the edges.<br>
**Spot:**
Simulates external light reflected by the monitor glass.
**Spot:**<br>
Simulates external light reflected by the monitor glass.<br>
**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:**<br>
When using effects that need Retroarch aspect ratio option<br>
to be set to "full", you have to provide the source aspect<br>
ratio to the shader.<br>
Use -6 for MAME cores that pre-rotates the game (TATE mode)<br>
With Mame 2003 plus and fbneo cores, koko-aio detects if the<br>
game is rotated or not without any user intervention.<br>
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:**<br>
Zoom and shift everything on screen, but background pictures.<br>
**Override content geometry:**
Contrary to the global aspect ratio control, this changes only the game geometry.
Bezel stays the same.
**Override content geometry:**<br>
Contrary to the global aspect ratio control, this changes only the game geometry.<br>
Bezel stays the same.<br>
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:**<br>
Put the bezel and the game content into perspective.<br>
The implementation is basic, you can expect correct<br>
results when tilting alongside a single axis or when<br>
using both, but with small values.<br>
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:**<br>
CRT monitors \*real\* refresh was amazing, today is just "meh" in most cases.<br>
This emulates the low pixel persistance of CRT monitors <br>
and reduces the motion blur, typical of LCD displays, by blanking even/odd<br>
screen lines on even/odd frames, by sacrificing image brightness, ofc.<br>
This feature is static, to use it
you have to manually enable it by removing the leading: "//"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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;

View file

@ -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);
}

View file

@ -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),

View file

@ -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);

View file

@ -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);

View file

@ -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

View file

@ -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,8 +187,13 @@ 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;
@ -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

View file

@ -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;
@ -650,18 +817,28 @@ 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;

View file

@ -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

View file

@ -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);
}

View file

@ -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);

View file

@ -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)

View file

@ -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;
}

View file

@ -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);

View file

@ -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);
}

View file

@ -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.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 257 KiB

After

Width:  |  Height:  |  Size: 271 KiB

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"