Update koko-aio to 3.5 (#348)

* For pull request of koko-aio 3.5

* removed monitor source
This commit is contained in:
Antonio Orefice 2023-01-15 15:30:22 +01:00 committed by GitHub
parent 3f62172bcb
commit 3eecf5c78e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
37 changed files with 1485 additions and 1663 deletions

View file

@ -186,54 +186,54 @@ scale_type_x16 = "viewport"
scale_x16 = "1.000000"
scale_type_y16 = "viewport"
scale_y16 = "1.000000"
DO_CCORRECTION = "1.000000"
SATURATION = "1.100000"
GAMMA_OUT = "0.500000"
LUMINANCE = "0.100000"
SATURATION = "1.050000"
TEMPERATURE = "7000.000000"
GAMMA_OUT = "0.400000"
DO_FXAA = "1.000000"
OFFSET_STRENGTH = "1.000000"
SHIFT_R = "-20.000000"
SHIFT_G = "1.000000"
SHIFT_B = "20.000000"
DO_SAT_BLEED = "1.000000"
SAT_BLEED_PAL = "1.000000"
SAT_BLEED_STRENGTH = "0.500000"
SAT_BLEED_SIZE_LEFT = "3.000000"
SAT_BLEED_SIZE_RIGHT = "3.000000"
DO_IN_GLOW = "1.000000"
IN_GLOW_POWER = "1.300000"
IN_GLOW_WH = "7.000000"
OFFSET_STRENGTH = "1.000000"
SHIFT_R = "-20.000000"
SHIFT_G = "1.000000"
SHIFT_B = "20.000000"
IN_GLOW_POWER = "1.600000"
IN_GLOW_W = "0.950000"
IN_GLOW_H = "0.950000"
IN_GLOW_GAMMA = "2.000000"
DO_VMASK_AND_DARKLINES = "1.000000"
IN_GLOW_BIAS = "0.000000"
RGB_MASK_STRENGTH = "1.000000"
DO_HALO = "1.000000"
HALO_POWER = "0.425000"
HALO_W = "3.500000"
HALO_H = "3.500000"
HALO_GAMMA = "1.100000"
VMASK_USE_GM = "1.000000"
VMASK_GAP = "1.000000"
DARKLINES_STRENGTH = "0.500000"
HALO_POWER = "0.520000"
HALO_W = "3.000000"
HALO_H = "3.000000"
SCANLINE_DARK = "0.700000"
SCANLINE_COMPENSATION = "0.200000"
SCANLINES_BLEEDING = "1.000000"
SCANLINE_FLICKERING = "0.000000"
SCANLINE_FLICKERING_POWER = "0.500000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.150000"
BLOOM_SIZE = "0.750000"
BLOOM_GAMMA_OUT = "1.000000"
BLOOM_SIZE = "1.500000"
BLOOM_POWER = "8.000000"
BLOOM_GAMMA_OUT = "2.000000"
DO_CURVATURE = "1.000000"
GEOM_WARP_X = "0.500000"
GEOM_WARP_Y = "0.500000"
GEOM_CORNER_SIZE = "0.005000"
GEOM_CORNER_SMOOTH = "700.000000"
DO_BEZEL = "1.000000"
BEZEL_INNER_ZOOM = "-0.005000"
BEZEL_FRAME_ZOOM = "0.139000"
BEZEL_INNER_ZOOM = "-0.010000"
BEZEL_FRAME_ZOOM = "0.170000"
BEZEL_IMAGE_BORDER = "1.020000"
AMBI_FALLOFF = "0.400000"
AMBI_POWER = "5.000000"
DO_VIGNETTE = "1.000000"
DO_DYNZOOM = "0.000000"
V_SIZE = "2.700000"
V_POWER = "1.050000"
DO_SPOT = "1.000000"
S_POSITION = "194.000000"
textures = "monitor_body;bg_under;bg_over"
monitor_body = "textures/monitor_body.png"

View file

@ -1,21 +1,8 @@
**koko-aio-slang parameters documentation**
**Shift RGB components:**
Shift R,G,B components separately to mimic chroma
dephasing and color aberrations.
By varying Red, Green and Blue offsets, the relative component will be
shifted column by column, row by row.
**Saturated color bleeding:**
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.
**Color corrections:**
Modify luminance, saturation, contrast, brightness and color temperature of the
"input" signal.
signal, at "input" stage.
Gamma correction is applied to the final processed picture.
**FXAA:**
@ -23,48 +10,38 @@
Use it if you don't want to blur the image and you still don't like
jagged or too much pixelated images.
**Scanlines:**
Emulate CRT scanlines.
**RGB 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.
Scanlines gap brightness:
controls how "little" they will look pronunced.
You can even use a negative value to make the scanline more evident,
but graphical glitches may occour.
Scanlines gap brightness:
Controls how much the gap between scanlines is dark
Compensate brightness loss:
Will make scanlines brighter, where possible, to compensate for the loss of brightness
gicen by the dark gap between them.
Scanlines bleeding:
will cause the scanline itself to light the scanline gap (dark) part.
You may use it to keep a good brightness overrall picture level.
Interlace flicker:
Emulates the flickerin issues present on crt interlaced screens
where the brighter lines flickers wien they are near dark ones.
You can choose to produce the flickering: never, always or only
when the input picture is considered interlaced.
The threshold for that is defined in config.inc
with the parameter: MIN\_LINES\_INTERLACED.
Disable on interlaced screen:
You can choose to completely disable scanline emulation when
the input picture is considered interlaced.
**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.
**Input power/glowing:**
**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.
**Glowing Input/power:**
Emulate the CRT glowing "feature", so that the brighter areas of
the image will light their surroundings.
Input signal glow strength:
The input signal gain
Sharpness:
Sharpness (horizontal, vertical):
How much the glow will "spread".
When pushed to its maximum value, no blurring will occour.
Gamma:
Controls how much the signal has to be bright to produce the glow.
Post gain:
This will cause the glowed image to be added to the input signal.
This allows to emulate glow and haloing in a single pass.
However the haloing should be applied after the mask emulation.
Likely to be removed in a future release.
Glow to blur bias:
Modulates between glow (0.. brighter colors expands over darker ones)
versus blur (..1 all the colors are blurred)
**RGB Masks and/or Darklines:**
Emulates CRT RGB phosphors (RGB Mask),
@ -75,26 +52,32 @@
you may want to scale this filter by a factor.
Vmask Strength:
How much will the RGB mask be visible.
RGB Mask: (LoDPI) Green,Magenta -> BGR:
. (LoDPI) Green,Magenta -> BGR:
By exploiting common monitors RGB subpixel order, this causes
the RGB mask, to be emulated by using just 2 pixels instead of 3.
Very useful for 1080p (or lower) displays and to keep more brightness.
RGB Mask: Horizontal Gap between triads:
In real displays rgb triads are separated by a black space.
If you have reddish tint, please double check that your monitor is
running at native resolution and the operating system is not scaling
the screen.
. Horizontal Gap between triads:
In real displays, rgb triads are separated by a black space.
You can emulate it by turning this feature on.
RGB Mask: affect bright colors:
. Affect bright colors:
Emulating RGB masks will lower the resulting image brightness and you
just cant push input signal brightness without "burning" the signal.
cant just push input signal brightness without clipping the signal.
By using this option, the RGB mask will be less evident on brighter
colors. However, since this will make the image to look somehow "dull",
it is advised to use the "Halo" feature instead (see later).
colors.
However, it is advised to use the "Halo" feature instead (see later)
ft your system can handle it.
Darklines: strength:
How much will the horizontal darklines be visible.
Darklines: offset by triads:
. Triad offset:
When drawing "straight" horizontal darklines, you can emulate CRT aperture grille.
But if you want slotmasks instead, you need to vertically
offset them every RGB triad.
Darklines: period (triad height):
However, slotmask emulation can be enabled via a superior implementation
if you enable scanlines (see below).
. Triad height:
Basically tells the shader how much a triad has to be high.
Darklines: affect bright colors:
See "RGB Mask: affect bright colors"
@ -107,6 +90,55 @@
So you can use this to restore the brightness and color saturation
loss when using features like scanlines, darklines or RGB masks.
Light up scanlines too:
Theoretically Halo have to be applied
"over" everything, because that is the way it works in nature.
But you can choose to cheat and instead apply scanlines over the halo
instead.
Do this if you like much more pronunced scanlines, even at the
price of some graphical artifacts visible on high contrasted areas.
Refer to "Glowing Input/power" for other parameters meaning.
**Scanlines:**
Emulate CRT scanlines.
Scanlines gap brightness:
controls how "little" they will look pronunced.
You can even use a negative value to make the scanline more evident,
but graphical glitches may occour.
Scanlines gap brightness:
Controls how much the gap between scanlines is dark.
Compensate brightness loss:
Will make scanlines brighter, where possible, to compensate for the
loss of brightness given by the dark gap between them.
Scanlines bleeding:
Will cause the scanline itself to light the scanline gap (dark) part.
You may use it to keep a good picture brightness level.
Interlace flicker:
Emulates the flickering issues present on crt interlaced screens
where the brighter lines flickers when they are near dark ones.
You can choose to produce the flickering: never, always or only
when the input picture is considered interlaced.
The threshold for that is defined in config.inc
with the parameter: MIN\_LINES\_INTERLACED.
Disable on interlaced screen:
You can choose to completely disable scanline emulation when
the input picture is considered interlaced.
Slotmask type (don't use with darklines!)
You may want to draw slotmasks alongside the scanlines to sync their heights
and avoid graphical glitches.
If you enable this feature, it is highly recommended to disable darklines.
Darklines will still used when dealing with interlaced or flickering screens.
Type 0 allows you to configure strength and stagger
Type 1 produces tinner slotmasks, but with fixed stagger
Type 3 os fixed and produces heavier and thinner slotmasks without scanlies at all.
Slotmask strength
The strenght of the slotmask (available on type 1 and 2 only)
. Offset
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
@ -161,6 +193,8 @@
Allows to shrink or expand the monitor frame to fit the game content.
Image Border:
Draws a black border around the game content.
Reflections zoom:
"Zoom" the reflections if they don't match the content.
**Backgound image:**
Draws an image on screen picked from the "textures" shader subdirectory,
@ -175,11 +209,16 @@
monitor frame itself by selecting this option.
If you do so, the alpha channel of the background image will be used to
let you view the underlying content.
Shift(Zoom) Image over X(Y) axis:
move or zoom the whole background image.
Rotate image mode
This could be needed when dealing with vertical games.
Use -1 to let the shader try to guess if the rotation is needed.
**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" <-**
**-> It is needed that you set retroarch aspect to "Full" <-**
( Settings, Video, Scaling, Aspect Ratio = Full )
Slowness:
@ -199,6 +238,7 @@
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)
Aspect Ratio Numerator:
Setting non positive value here will switch to a predefined
@ -209,6 +249,7 @@
-3 = 8/7 Snes
-4 = 10/7 Megadrive
-5 = Uncorrected
-6 = 0.75 MAME rotated 1.33 games in TATE mode
Aspect Ratio Denominator:
As long as Aspect Ratio Numerator is positive, this will
be used as the denominator of the fraction.

View file

@ -1,295 +0,0 @@
# TODO:
# Guess more aspect ratios: edit. nope: Guessing is impossible..
# Update pipeline graph
# Investigate the possible use of mipmapping in bloom function too.
# Try to move flickering scanlines into main, maybe by faking them with screenlines?
# Performances:
# haswell igp: i5-4590 CPU @ 3.30GHz
# Output on aspect: full, 1080p, 16:9, 60fps
# All measurements made with aspect=full, so as long as ambient light is not used, the whole screen is filled by the shader.
# This means that all the measurements, but ambient light itself are likely higher than real use.
# input: mame, dynamite dux: 26/09/2022 27/10/2022 02/11/2022
# GPU% Delta% vs Basal:
# no shader: 11 -23.6 11 10 10
# basal: 34.6 0.0 31.5 29.5 27.7
# FXAA: 37.5 2.9 34.15 32.2
# scanlines: 36.5 1.9 32.3 31.5
# ...flickering: 36.2 1.6 32.4 32
#input glow gamma 3: 40 5.4 36.75 35.2
# rgb mask: 35.7 1.1 32.60 33.4 **
# slotmask: 36.5 1.9 33.6 32.1
# halo gamma 3: 40.0 5.4 36.9 35.5
# bloom(q2): 38 3.4 35.8 35 30.5
# color corrections: 35 0.4 31.6 29.5
# curvature warp: 39.2 4.6 33.5 34.1
# vignette+spot: 35.2 0.6 33.2 34
# ambient light: 38 3.4 32.1 33.6
# Bezel: 37.5 33.7
#-----------------------------------------------
#Total basal + all the features: 72.2 65.3 65.2 61.2 (bloom q1)
# Koko-aio shader is meant to be an all-in one crt shader.
# It can be configured with many parameters, so that can be
# scaled to run on even on modest gpus while still developed to
# run with heavier presets on at least Haswell+ iGpus.
# It is not meant to simulate the internal behaviour of CRT displays,
# but to give users the parameters to make their monitors to look similar.
# Several presets are included.
# Actually it provides emulation for:
# scanlines, screenlines, RGB vertical masks, horizontal slot masks,
# glowing, haloing, blooming, gamma and SATURATION correction,pixel_outi
# black frame insertions, interlace emulation, antialiasing.
# External code by:
# * CRT - Guest - Dr.Venom (single pass bloom function)
# * Nvidia (FXAA)
# Bezel texture contains the following infomations:
# - 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.
textures = "monitor_body;bg_under;bg_over"
monitor_body = "textures/monitor_body.png"
monitor_body_linear = "true"
# Does this work?
monitor_body_wrap_mode = "clamp_to_edge"
monitor_body_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"
shaders = 17
# For P-uae defaults, doubling just y0 seems the best option.
# 90% of games are lowres in vertical size and p-uae defaults
# to 720 pixels width, which is enough for this preset to work as intended.
# Rest warned, that when a game sets an interlaced resolution, p-uae
# will output even 560 h-lines which, doubled, will result in
# 1120 h lines. too much even for a 1080p screen.
# Auto-Cropping/overscan emulation could be added in a future release.
# For other emulators/systems, probably it is best and safe to doulbe x0 too.
# In the first pass we draw an optional black border around the image for bezel purposes
# and scale the image to something better usable by FXAA
# Scaling y to 2x is needed by flickering scanlines pass.
shader0 = shaders/first_pass.slang
alias0 = "first_pass"
filter_linear0 = false
scale_type0 = source
scale_x0 = 2.0
scale_y0 = 2.0
wrap_mode0 = "mirrored_repeat"
float_framebuffer0 = false
# Nvidia fxaa pass:
# works good for "SD" resolutions
shader1 = shaders/fxaa.slang
alias1 = "FXAA_pass"
filter_linear1 = true
scale_type1 = source
scale1 = 1.0
# FXAA don't really need any mipmap, but avglum_pass several passes after it does.
# and for the weird way retroarch manages mipmaps, specify that FXAA_pass wants mipmaps
# makes first_pass mipmaps available to everyone.
# even if theoretically not needed, texture() occurrence in FXAA_pass needed to be switched
# to textureLod(..,0.0) or it acts weird, don't ask me why.
# yay.
mipmap_input1 = true
wrap_mode1 = "mirrored_repeat"
float_framebuffer1 = false
shader2 = shaders/shift_and_bleed.slang
alias2 = "shift_and_bleed_pass"
filter_linear2 = true
scale2 = 1.0
scale_type2 = source
float_framebuffer2 = false
mipmap_input2 = false
wrap_mode2 = "mirrored_repeat"
# Blur and glow the image as requested
# This pass aims to simulate the signal input power.
# Glowing will be used to weighting the scanlines.
# In this pass we also generate flickering scanlines by blindly blanking
# alternate lines at #frame interval
shader3 = shaders/in_glow.slang
alias3 = "in_glow_pass"
filter_linear3 = true
scale3 = 1.0
scale_type3 = source
float_framebuffer3 = true
wrap_mode3 = "mirrored_repeat"
# This essentially is the same as glowing by a code point of view.
# But this pass will be added later on instead of mixed
shader4 = shaders/halo.slang
alias4 = "halo_pass"
filter_linear4 = true
scale4 = 1.0
scale_type4 = source
float_framebuffer4 = true
mipmap_input4 = false
wrap_mode4 = "mirrored_repeat"
# Get the average luminance needed by ambilight here, because:
# * mipmap_input only works on "Source" texture
# * the following pass does not use the previous one
# * the previous pass represents scene changes.
# The rgb channels of the following pass contains luminance info
# Used by the bezel code to light up the bezel corners.
# The alpha channel contains the sum/3.0 of rgb channels
# used to detect scene changes.
shader5 = shaders/avglum_pass.slang
alias5 = "avglum_pass"
filter_linear5 = true
scale_type5 = source
scale5 = 0.5
wrap_mode5 = "mirrored_repeat"
mipmap_input5 = false
# The following 2 passes will blur the mirrored part of main pass
# to emulate bezel reflections.
shader6 = shaders/reflection_blur_h.slang
alias6 = "reflected_blurred_pass1"
filter_linear6 = true
scale_type6 = source
scale6 = 1.0
wrap_mode6 = "mirrored_repeat"
shader7 = shaders/reflection_blur_v.slang
alias7 = "reflected_blurred_pass2"
filter_linear7 = true
scale_type7 = source
scale7 = 1.0
wrap_mode7 = "mirrored_repeat"
# In the subsequent passes we do first a fast bloom by first
# sampling the original texture and scale it down to keep
# it fast, next we do subsequent blurd of the bloomed
# pass.
shader8 = shaders/bloom_pass_1.slang
alias8 = "bloom_pass_1"
filter_linear8 = true
scale_type8 = source
scale8 = 1.0
# I NEED TO SET **THIS** TO mirrored_repeat TO HAVE THE PREVIOUS PASS mirrored_repeated (!?)
wrap_mode8 = "mirrored_repeat"
float_framebuffer8 = true
shader9 = shaders/bloom_pass_2.slang
alias9 = "bloom_pass_2"
filter_linear9 = true
scale_type9 = source
scale9 = 0.5
wrap_mode9 = "clamp_to_edge"
shader10 = shaders/bloom_pass_3.slang
alias10 = "bloom_pass_3"
filter_linear10 = true
scale_type10 = source
scale10 = 1.0
wrap_mode10 = "clamp_to_edge"
shader11 = shaders/bloom_pass_4.slang
alias11 = "bloom_pass_final"
filter_linear11 = true
scale_type11 = source
scale11 = 1.0
wrap_mode11 = "mirrored_repeat"
# Back led lights:
# Since the next pass will need mipmaps of the original image, and is only possible to get mipmaps
from the very previous pass, the next one will just passthrough the original image
#
shader12 = shaders/ambi_push_pass.slang
alias12 = "ambi_push_pass"
# I NEED TO SET **THIS** TO true TO HAVE THE PREVIOUS PASS linearly filtered
filter_linear12 = true
scale_type12 = source
scale12 = 1.0
wrap_mode12 = "mirrored_repeat"
mipmap_input12 = false
float_framebuffer12 = true
# Gather mipmaps from prevous pass and use them to light virtual leds under the virtual monitor
shader13 = shaders/ambi_pre_pass.slang
alias13 = "ambi_pre_pass1"
filter_linear13 = true
scale_type13 = source
scale13 = 1.0
mipmap_input13 = true
wrap_mode13 = "clamp_to_border"
float_framebuffer13 = false
# Temporally smooth led lights.
shader14 = shaders/ambi_temporal_pass.slang
alias14 = "ambi_temporal_pass"
filter_linear14 = true
scale_type14 = source
float_framebuffer14 = true
# In this pass we gather information about the rotated state of the source
# This information can only be taken when a pass scales to viewport
# So use a low output resolution to keep things as light as possible.
# The feedback of this pass will be queried by previous ones.
# I tried to move this into final_pass, but the gpu consumption was higher.
shader15 = shaders/isrotated.slang
alias15 = "isrotated_pass"
filter_linear15 = true
scale15 = 0.1
scale_type15 = viewport
wrap_mode15 = "mirrored_repeat"
# In this pass we emulate scanlines, glowing,
# RGB vertical mask, slot mask,haloing and color corrections
# This pass pass will do the composition of the previous passes
# with the bloomed image, vignette and spot light, black frame insertions
# and Bezel emulation
shader16 = shaders/final_pass.slang
alias16 = "final_pass"
filter_linear16 = true
scale_type16 = viewport
scale16 = 1.0
wrap_mode16 = "mirrored_repeat"

View file

@ -188,27 +188,29 @@ scale_type_y16 = "viewport"
scale_y16 = "1.000000"
DO_CCORRECTION = "1.000000"
LUMINANCE = "0.200000"
GAMMA_OUT = "0.500000"
GAMMA_OUT = "0.550000"
DO_SHIFT_RGB = "1.000000"
SHIFT_R = "-20.000000"
SHIFT_G = "1.000000"
SHIFT_B = "20.000000"
DO_IN_GLOW = "1.000000"
IN_GLOW_POWER = "1.900000"
IN_GLOW_WH = "7.000000"
IN_GLOW_W = "1.000000"
IN_GLOW_H = "1.000000"
IN_GLOW_GAMMA = "2.000000"
IN_GLOW_BIAS = "0.000000"
DO_VMASK_AND_DARKLINES = "1.000000"
RGB_MASK_STRENGTH = "1.000000"
VMASK_USE_GM = "1.000000"
VMASK_GAP = "1.000000"
DARKLINES_STRENGTH = "0.000000"
DO_HALO = "1.000000"
HALO_POWER = "0.450000"
HALO_POWER = "0.430000"
HALO_W = "3.500000"
HALO_H = "3.500000"
HALO_GAMMA = "1.150000"
HALO_GAMMA = "1.300000"
HALO_VS_SCAN = "0.800000"
DO_SCANLINES = "1.000000"
SCANLINES_BLEEDING = "0.825000"
BLOOM_MIX = "0.150000"
BLOOM_SIZE = "1.500000"
BLOOM_POWER = "8.000000"

View file

@ -188,27 +188,31 @@ scale_type_y16 = "viewport"
scale_y16 = "1.000000"
DO_CCORRECTION = "1.000000"
LUMINANCE = "0.200000"
GAMMA_OUT = "0.500000"
GAMMA_OUT = "0.550000"
DO_SHIFT_RGB = "1.000000"
SHIFT_R = "-20.000000"
SHIFT_G = "1.000000"
SHIFT_B = "20.000000"
DO_IN_GLOW = "1.000000"
IN_GLOW_POWER = "1.900000"
IN_GLOW_WH = "7.000000"
IN_GLOW_W = "1.000000"
IN_GLOW_H = "1.000000"
IN_GLOW_GAMMA = "2.000000"
IN_GLOW_BIAS = "0.000000"
DO_VMASK_AND_DARKLINES = "1.000000"
RGB_MASK_STRENGTH = "1.000000"
VMASK_USE_GM = "1.000000"
DARKLINES_STRENGTH = "0.700000"
DARKLINES_STRENGTH = "0.000000"
DARKLINES_PERIOD = "2.000000"
DO_HALO = "1.000000"
HALO_POWER = "0.450000"
HALO_POWER = "0.430000"
HALO_W = "3.500000"
HALO_H = "3.500000"
HALO_GAMMA = "1.150000"
HALO_GAMMA = "1.300000"
HALO_VS_SCAN = "0.800000"
DO_SCANLINES = "1.000000"
SCANLINES_BLEEDING = "0.825000"
SCANLINE_SM_TYPE = "1.000000"
SCANLINE_SM_STRENGTH = "1.000000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.150000"
BLOOM_SIZE = "1.500000"
@ -216,7 +220,7 @@ BLOOM_POWER = "8.000000"
BLOOM_GAMMA_OUT = "1.200000"
DO_CURVATURE = "1.000000"
GEOM_WARP_X = "1.200000"
GEOM_WARP_Y = "1.000001"
GEOM_WARP_Y = "1.300000"
GEOM_CORNER_SIZE = "0.005000"
GEOM_CORNER_SMOOTH = "700.000000"
DO_BEZEL = "1.000000"
@ -224,8 +228,8 @@ BEZEL_R = "0.020000"
BEZEL_G = "0.000000"
BEZEL_B = "-0.020000"
BEZEL_CON = "1.280000"
BEZEL_INNER_ZOOM = "-0.450000"
BEZEL_FRAME_ZOOM = "-0.190000"
BEZEL_INNER_ZOOM = "-0.440000"
BEZEL_FRAME_ZOOM = "-0.140000"
BEZEL_IMAGE_BORDER = "1.030000"
DO_BG_IMAGE = "1.000000"
BG_IMAGE_OVER = "1.000000"

View file

@ -188,27 +188,31 @@ scale_type_y16 = "viewport"
scale_y16 = "1.000000"
DO_CCORRECTION = "1.000000"
LUMINANCE = "0.200000"
GAMMA_OUT = "0.500000"
GAMMA_OUT = "0.550000"
DO_SHIFT_RGB = "1.000000"
SHIFT_R = "-20.000000"
SHIFT_G = "1.000000"
SHIFT_B = "20.000000"
DO_IN_GLOW = "1.000000"
IN_GLOW_POWER = "1.900000"
IN_GLOW_WH = "7.000000"
IN_GLOW_W = "1.000000"
IN_GLOW_H = "1.000000"
IN_GLOW_GAMMA = "2.000000"
IN_GLOW_BIAS = "0.000000"
DO_VMASK_AND_DARKLINES = "1.000000"
RGB_MASK_STRENGTH = "1.000000"
VMASK_USE_GM = "1.000000"
DARKLINES_STRENGTH = "0.700000"
DARKLINES_STRENGTH = "0.000000"
DARKLINES_PERIOD = "2.000000"
DO_HALO = "1.000000"
HALO_POWER = "0.450000"
HALO_POWER = "0.430000"
HALO_W = "3.500000"
HALO_H = "3.500000"
HALO_GAMMA = "1.150000"
HALO_GAMMA = "1.300000"
HALO_VS_SCAN = "0.800000"
DO_SCANLINES = "1.000000"
SCANLINES_BLEEDING = "0.825000"
SCANLINE_SM_TYPE = "1.000000"
SCANLINE_SM_STRENGTH = "1.000000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.150000"
BLOOM_SIZE = "1.500000"
@ -223,13 +227,14 @@ DO_BEZEL = "1.000000"
BEZEL_R = "0.030000"
BEZEL_G = "0.000000"
BEZEL_B = "-0.030000"
BEZEL_INNER_ZOOM = "-0.590000"
BEZEL_FRAME_ZOOM = "-0.300000"
BEZEL_INNER_ZOOM = "-0.600000"
BEZEL_FRAME_ZOOM = "-0.250000"
BEZEL_IMAGE_BORDER = "1.040000"
DO_BG_IMAGE = "1.000000"
BG_IMAGE_OVER = "1.000000"
BG_IMAGE_OFFX = "0.001000"
BG_IMAGE_OFFY = "0.006000"
BG_IMAGE_OFFX = "0.001500"
BG_IMAGE_OFFY = "0.001500"
BG_IMAGE_ZOOM = "0.998000"
DO_AMBILIGHT = "0.000000"
AMBI_FALLOFF = "0.400000"
AMBI_POWER = "1.000000"

View file

@ -188,15 +188,17 @@ scale_type_y16 = "viewport"
scale_y16 = "1.000000"
DO_CCORRECTION = "1.000000"
LUMINANCE = "0.200000"
GAMMA_OUT = "0.500000"
GAMMA_OUT = "0.550000"
DO_SHIFT_RGB = "1.000000"
SHIFT_R = "-20.000000"
SHIFT_G = "1.000000"
SHIFT_B = "20.000000"
DO_IN_GLOW = "1.000000"
IN_GLOW_POWER = "1.900000"
IN_GLOW_WH = "7.000000"
IN_GLOW_W = "1.000000"
IN_GLOW_H = "1.000000"
IN_GLOW_GAMMA = "2.000000"
IN_GLOW_BIAS = "0.000000"
DO_VMASK_AND_DARKLINES = "1.000000"
RGB_MASK_STRENGTH = "1.000000"
VMASK_USE_GM = "1.000000"
@ -204,12 +206,13 @@ VMASK_GAP = "1.000000"
DARKLINES_STRENGTH = "0.000000"
DARKLINES_PERIOD = "2.000000"
DO_HALO = "1.000000"
HALO_POWER = "0.450000"
HALO_POWER = "0.430000"
HALO_W = "3.500000"
HALO_H = "3.500000"
HALO_GAMMA = "1.150000"
HALO_GAMMA = "1.300000"
HALO_VS_SCAN = "0.800000"
DO_SCANLINES = "1.000000"
SCANLINES_BLEEDING = "0.825000"
SCANLINE_SM_STRENGTH = "1.000000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.150000"
BLOOM_SIZE = "1.500000"
@ -221,6 +224,7 @@ GEOM_WARP_Y = "0.850000"
GEOM_CORNER_SIZE = "0.005000"
GEOM_CORNER_SMOOTH = "700.000000"
DO_BEZEL = "1.000000"
BEZEL_FRAME_ZOOM = "0.040000"
BEZEL_IMAGE_BORDER = "1.020000"
AMBI_FALLOFF = "0.600000"
AMBI_POWER = "2.000000"

View file

@ -188,27 +188,30 @@ scale_type_y16 = "viewport"
scale_y16 = "1.000000"
DO_CCORRECTION = "1.000000"
LUMINANCE = "0.200000"
GAMMA_OUT = "0.500000"
GAMMA_OUT = "0.550000"
DO_SHIFT_RGB = "1.000000"
SHIFT_R = "-20.000000"
SHIFT_G = "1.000000"
SHIFT_B = "20.000000"
DO_IN_GLOW = "1.000000"
IN_GLOW_POWER = "1.900000"
IN_GLOW_WH = "7.000000"
IN_GLOW_W = "1.000000"
IN_GLOW_H = "1.000000"
IN_GLOW_GAMMA = "2.000000"
IN_GLOW_BIAS = "0.000000"
DO_VMASK_AND_DARKLINES = "1.000000"
RGB_MASK_STRENGTH = "1.000000"
VMASK_USE_GM = "1.000000"
VMASK_GAP = "1.000000"
DARKLINES_STRENGTH = "0.000000"
DO_HALO = "1.000000"
HALO_POWER = "0.450000"
HALO_POWER = "0.430000"
HALO_W = "3.500000"
HALO_H = "3.500000"
HALO_GAMMA = "1.150000"
HALO_GAMMA = "1.300000"
HALO_VS_SCAN = "0.800000"
DO_SCANLINES = "1.000000"
SCANLINES_BLEEDING = "0.825000"
SCANLINE_SM_STRENGTH = "1.000000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.150000"
BLOOM_SIZE = "1.500000"
@ -220,8 +223,8 @@ GEOM_WARP_Y = "0.500000"
GEOM_CORNER_SIZE = "0.005000"
GEOM_CORNER_SMOOTH = "700.000000"
DO_BEZEL = "1.000000"
BEZEL_INNER_ZOOM = "-0.005000"
BEZEL_FRAME_ZOOM = "0.139000"
BEZEL_INNER_ZOOM = "-0.010000"
BEZEL_FRAME_ZOOM = "0.170000"
BEZEL_IMAGE_BORDER = "1.020000"
AMBI_FALLOFF = "0.400000"
AMBI_POWER = "5.000000"

View file

@ -188,27 +188,30 @@ scale_type_y16 = "viewport"
scale_y16 = "1.000000"
DO_CCORRECTION = "1.000000"
LUMINANCE = "0.200000"
GAMMA_OUT = "0.500000"
GAMMA_OUT = "0.550000"
DO_SHIFT_RGB = "1.000000"
SHIFT_R = "-20.000000"
SHIFT_G = "1.000000"
SHIFT_B = "20.000000"
DO_IN_GLOW = "1.000000"
IN_GLOW_POWER = "1.900000"
IN_GLOW_WH = "7.000000"
IN_GLOW_W = "1.000000"
IN_GLOW_H = "1.000000"
IN_GLOW_GAMMA = "2.000000"
IN_GLOW_BIAS = "0.000000"
DO_VMASK_AND_DARKLINES = "1.000000"
RGB_MASK_STRENGTH = "1.000000"
VMASK_USE_GM = "1.000000"
VMASK_GAP = "1.000000"
DARKLINES_STRENGTH = "0.000000"
DO_HALO = "1.000000"
HALO_POWER = "0.450000"
HALO_POWER = "0.430000"
HALO_W = "3.500000"
HALO_H = "3.500000"
HALO_GAMMA = "1.150000"
HALO_GAMMA = "1.300000"
HALO_VS_SCAN = "0.800000"
DO_SCANLINES = "1.000000"
SCANLINES_BLEEDING = "0.825000"
SCANLINE_SM_STRENGTH = "1.000000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.150000"
BLOOM_SIZE = "1.500000"

View file

@ -188,28 +188,32 @@ scale_type_y16 = "viewport"
scale_y16 = "1.000000"
DO_CCORRECTION = "1.000000"
LUMINANCE = "0.200000"
GAMMA_OUT = "0.500000"
GAMMA_OUT = "0.550000"
DO_SHIFT_RGB = "1.000000"
SHIFT_R = "-20.000000"
SHIFT_G = "1.000000"
SHIFT_B = "20.000000"
DO_IN_GLOW = "1.000000"
IN_GLOW_POWER = "1.900000"
IN_GLOW_WH = "7.000000"
IN_GLOW_W = "1.000000"
IN_GLOW_H = "1.000000"
IN_GLOW_GAMMA = "2.000000"
IN_GLOW_BIAS = "0.000000"
DO_VMASK_AND_DARKLINES = "1.000000"
RGB_MASK_STRENGTH = "1.000000"
VMASK_USE_GM = "1.000000"
VMASK_GAP = "1.000000"
DARKLINES_STRENGTH = "0.700000"
DARKLINES_STRENGTH = "0.000000"
DARKLINES_PERIOD = "2.000000"
DO_HALO = "1.000000"
HALO_POWER = "0.450000"
HALO_POWER = "0.430000"
HALO_W = "3.500000"
HALO_H = "3.500000"
HALO_GAMMA = "1.150000"
HALO_GAMMA = "1.300000"
HALO_VS_SCAN = "0.800000"
DO_SCANLINES = "1.000000"
SCANLINES_BLEEDING = "0.825000"
SCANLINE_SM_TYPE = "1.000000"
SCANLINE_SM_STRENGTH = "1.000000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.150000"
BLOOM_SIZE = "1.500000"
@ -221,6 +225,7 @@ GEOM_WARP_Y = "0.850000"
GEOM_CORNER_SIZE = "0.005000"
GEOM_CORNER_SMOOTH = "700.000000"
DO_BEZEL = "1.000000"
BEZEL_FRAME_ZOOM = "0.040000"
BEZEL_IMAGE_BORDER = "1.020000"
DO_BG_IMAGE = "1.000000"
AMBI_STEPS = "5.000000"

View file

@ -188,28 +188,32 @@ scale_type_y16 = "viewport"
scale_y16 = "1.000000"
DO_CCORRECTION = "1.000000"
LUMINANCE = "0.200000"
GAMMA_OUT = "0.500000"
GAMMA_OUT = "0.550000"
DO_SHIFT_RGB = "1.000000"
SHIFT_R = "-20.000000"
SHIFT_G = "1.000000"
SHIFT_B = "20.000000"
DO_IN_GLOW = "1.000000"
IN_GLOW_POWER = "1.900000"
IN_GLOW_WH = "7.000000"
IN_GLOW_W = "1.000000"
IN_GLOW_H = "1.000000"
IN_GLOW_GAMMA = "2.000000"
IN_GLOW_BIAS = "0.000000"
DO_VMASK_AND_DARKLINES = "1.000000"
RGB_MASK_STRENGTH = "1.000000"
VMASK_USE_GM = "1.000000"
VMASK_GAP = "1.000000"
DARKLINES_STRENGTH = "0.700000"
DARKLINES_STRENGTH = "0.000000"
DARKLINES_PERIOD = "2.000000"
DO_HALO = "1.000000"
HALO_POWER = "0.450000"
HALO_POWER = "0.430000"
HALO_W = "3.500000"
HALO_H = "3.500000"
HALO_GAMMA = "1.150000"
HALO_GAMMA = "1.300000"
HALO_VS_SCAN = "0.800000"
DO_SCANLINES = "1.000000"
SCANLINES_BLEEDING = "0.825000"
SCANLINE_SM_TYPE = "1.000000"
SCANLINE_SM_STRENGTH = "1.000000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.150000"
BLOOM_SIZE = "1.500000"
@ -221,6 +225,7 @@ GEOM_WARP_Y = "0.850000"
GEOM_CORNER_SIZE = "0.005000"
GEOM_CORNER_SMOOTH = "700.000000"
DO_BEZEL = "1.000000"
BEZEL_FRAME_ZOOM = "0.040000"
BEZEL_IMAGE_BORDER = "1.020000"
AMBI_FALLOFF = "0.600000"
AMBI_POWER = "2.000000"

View file

@ -188,27 +188,31 @@ scale_type_y16 = "viewport"
scale_y16 = "1.000000"
DO_CCORRECTION = "1.000000"
LUMINANCE = "0.200000"
GAMMA_OUT = "0.500000"
GAMMA_OUT = "0.550000"
DO_SHIFT_RGB = "1.000000"
SHIFT_R = "-20.000000"
SHIFT_G = "1.000000"
SHIFT_B = "20.000000"
DO_IN_GLOW = "1.000000"
IN_GLOW_POWER = "1.900000"
IN_GLOW_WH = "7.000000"
IN_GLOW_W = "1.000000"
IN_GLOW_H = "1.000000"
IN_GLOW_GAMMA = "2.000000"
IN_GLOW_BIAS = "0.000000"
DO_VMASK_AND_DARKLINES = "1.000000"
RGB_MASK_STRENGTH = "1.000000"
VMASK_USE_GM = "1.000000"
VMASK_GAP = "1.000000"
DARKLINES_STRENGTH = "0.700000"
DARKLINES_STRENGTH = "0.000000"
DO_HALO = "1.000000"
HALO_POWER = "0.450000"
HALO_POWER = "0.430000"
HALO_W = "3.500000"
HALO_H = "3.500000"
HALO_GAMMA = "1.150000"
HALO_GAMMA = "1.300000"
HALO_VS_SCAN = "0.800000"
DO_SCANLINES = "1.000000"
SCANLINES_BLEEDING = "0.825000"
SCANLINE_SM_TYPE = "1.000000"
SCANLINE_SM_STRENGTH = "1.000000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.150000"
BLOOM_SIZE = "1.500000"
@ -220,8 +224,8 @@ GEOM_WARP_Y = "0.500000"
GEOM_CORNER_SIZE = "0.005000"
GEOM_CORNER_SMOOTH = "700.000000"
DO_BEZEL = "1.000000"
BEZEL_INNER_ZOOM = "-0.005000"
BEZEL_FRAME_ZOOM = "0.139000"
BEZEL_INNER_ZOOM = "-0.010000"
BEZEL_FRAME_ZOOM = "0.170000"
BEZEL_IMAGE_BORDER = "1.020000"
AMBI_FALLOFF = "0.400000"
AMBI_POWER = "5.000000"

View file

@ -188,27 +188,31 @@ scale_type_y16 = "viewport"
scale_y16 = "1.000000"
DO_CCORRECTION = "1.000000"
LUMINANCE = "0.200000"
GAMMA_OUT = "0.500000"
GAMMA_OUT = "0.550000"
DO_SHIFT_RGB = "1.000000"
SHIFT_R = "-20.000000"
SHIFT_G = "1.000000"
SHIFT_B = "20.000000"
DO_IN_GLOW = "1.000000"
IN_GLOW_POWER = "1.900000"
IN_GLOW_WH = "7.000000"
IN_GLOW_W = "1.000000"
IN_GLOW_H = "1.000000"
IN_GLOW_GAMMA = "2.000000"
IN_GLOW_BIAS = "0.000000"
DO_VMASK_AND_DARKLINES = "1.000000"
RGB_MASK_STRENGTH = "1.000000"
VMASK_USE_GM = "1.000000"
VMASK_GAP = "1.000000"
DARKLINES_STRENGTH = "0.700000"
DARKLINES_STRENGTH = "0.000000"
DO_HALO = "1.000000"
HALO_POWER = "0.450000"
HALO_POWER = "0.430000"
HALO_W = "3.500000"
HALO_H = "3.500000"
HALO_GAMMA = "1.150000"
HALO_GAMMA = "1.300000"
HALO_VS_SCAN = "0.800000"
DO_SCANLINES = "1.000000"
SCANLINES_BLEEDING = "0.825000"
SCANLINE_SM_TYPE = "1.000000"
SCANLINE_SM_STRENGTH = "1.000000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.150000"
BLOOM_SIZE = "1.500000"

View file

@ -188,27 +188,31 @@ scale_type_y16 = "viewport"
scale_y16 = "1.000000"
DO_CCORRECTION = "1.000000"
LUMINANCE = "0.200000"
GAMMA_OUT = "0.500000"
GAMMA_OUT = "0.550000"
DO_SHIFT_RGB = "1.000000"
SHIFT_R = "-20.000000"
SHIFT_G = "1.000000"
SHIFT_B = "20.000000"
DO_IN_GLOW = "1.000000"
IN_GLOW_POWER = "1.900000"
IN_GLOW_WH = "7.000000"
IN_GLOW_W = "1.000000"
IN_GLOW_H = "1.000000"
IN_GLOW_GAMMA = "2.000000"
IN_GLOW_BIAS = "0.000000"
DO_VMASK_AND_DARKLINES = "1.000000"
RGB_MASK_STRENGTH = "1.000000"
VMASK_USE_GM = "1.000000"
VMASK_GAP = "1.000000"
DARKLINES_STRENGTH = "0.700000"
DARKLINES_STRENGTH = "0.000000"
DO_HALO = "1.000000"
HALO_POWER = "0.450000"
HALO_POWER = "0.430000"
HALO_W = "3.500000"
HALO_H = "3.500000"
HALO_GAMMA = "1.150000"
HALO_GAMMA = "1.300000"
HALO_VS_SCAN = "0.800000"
DO_SCANLINES = "1.000000"
SCANLINES_BLEEDING = "0.825000"
SCANLINE_SM_TYPE = "1.000000"
SCANLINE_SM_STRENGTH = "1.000000"
BLOOM_MIX = "0.150000"
BLOOM_SIZE = "1.500000"
BLOOM_POWER = "8.000000"

View file

@ -1,14 +1,8 @@
//Setting the glow/halo sharpness parameter to this
//will skip the blurring phase and lowers the gpu use
//Set this to the same value as used for the maximum
//of IN_GLOW_WH, HALO_W and HALO_H
#define GLOW_SHARP_MAX 7
//Consider content interlaced if lines are more than this
#define MIN_LINES_INTERLACED 300
#define MIN_LINES_INTERLACED 380
//Sort of dithering used in vignette, spot, backlight leds
#define NOISEPOWER ((params.OutputSize.z)*3)
//Sort of dithering used in vignette, spot, backlight leds
#define NOISEPOWER ((params.OutputSize.z)*3)
//Bezel reflection area size in relation to the game frame
//Use the lowest possible value for best performance
@ -29,8 +23,24 @@
// try between (1/avglum_divider) and (1/avglum_divider)/3
#define AMBI_FAST_STEP 0.125
//Setting the glow/halo sharpness parameter to this
//will skip the blurring phase and lowers the gpu use
//Set this to the same value as used for the maximum
//of IN_GLOW_W/H, HALO_W/H
#define GLOW_SHARP_MAX 7
//Setting glow to blur bias parameter to this
//will skip the glow/blur mix codem and just return
//the blurred image
//Set this to the same value as used for the maximum
//of IN_GLOW_BIAS
#define IN_GLOW_BIAS_MAX 2.0
#define eps 1e-5
#define pi 3.141592654
#define TAU 6.28318530717958647693
#define alpha_mark 0.1
layout(push_constant) uniform Push {
vec4 SourceSize;
@ -45,12 +55,13 @@ layout(push_constant) uniform Push {
float VMASK_GAP;
float VMASK_USE_GM;
float DRKLN_OVERWHITE ;
float DO_DARKLINES_VOFFSET ;
float DARKLINES_VOFFSET ;
float DARKLINES_PERIOD ;
float HALO_W ;
float HALO_H ;
float HALO_POWER ;
float HALO_GAMMA ;
float HALO_VS_SCAN ;
float DO_BLOOM ; //4
float BLOOM_QUALITY ; //1
@ -75,31 +86,42 @@ layout(std140, set = 0, binding = 0) uniform UBO {
float DO_HALO ;
float DO_CCORRECTION;
float DO_ALT_BLANK;
//float IN_GLOW_ADD ;
float IN_GLOW_BIAS ;
float SCANLINES_BLEEDING ;
float IN_GLOW_WH ;
float IN_GLOW_POWER ;
float IN_GLOW_GAMMA ;
float IN_GLOW_W;
float IN_GLOW_H;
float IN_GLOW_POWER;
float IN_GLOW_GAMMA;
float BLOOM_MIX;
float BLOOM_SIZE ; //1
float BLOOM_GAMMA; //1
float BLOOM_BYPASS; //1
float BLOOM_POWER; //1
float BLOOM_SIZE;
float BLOOM_GAMMA;
float BLOOM_BYPASS;
float BLOOM_POWER;
float BLOOM_OVER_WHITE;
float BLOOM_GAMMA_OUT;
float ALT_BLANK_STRENGTH ; //2 FIXME to 1
float ALT_BLANK_PERIOD ;
float DO_FXAA ; //1
float ALT_BLANK_STRENGTH;
float ALT_BLANK_PERIOD;
float DO_FXAA;
float DO_SAT_BLEED;
float SAT_BLEED_SIZE_LEFT;
float SAT_BLEED_SIZE_RIGHT;
float SAT_BLEED_FALLOFF;
float SAT_BLEED_STRENGTH;
float SAT_BLEED_PAL;
float DO_NTSC_ARTIFACTS;
float NTSC_FILTER_WIDTH;
float NTSC_FILTER_SCF;
float NTSC_FILTER_FC;
float NTSC_MIX;
float NTSC_PHASE_SHIFT;
//float NTSC_DOT_CRAWL;
float SCANLINE_FLICKERING ; //2
float SCANLINE_FLICKERING_POWER;
float SCANLINE_DISABLE_ON_INTERLACE;
float SCANLINE_COMPENSATION;
float SCANLINE_SM_STRENGTH;
float SCANLINE_SM_TYPE;
float SCANLINE_SM_VOFFSET;
float RGB_MASK_STRENGTH;
float DARKLINES_STRENGTH;
float GAMMA_OUT ; //1
@ -123,6 +145,7 @@ layout(std140, set = 0, binding = 0) uniform UBO {
float BEZEL_CON;
float BEZEL_INNER_ZOOM;
float BEZEL_IMAGE_BORDER;
float BEZEL_REFL_ZOOM;
float BEZEL_FRAME_ZOOM;
float DO_SPOT;
@ -151,6 +174,7 @@ layout(std140, set = 0, binding = 0) uniform UBO {
float BG_IMAGE_OFFY;
float BG_IMAGE_OFFX;
float BG_IMAGE_ZOOM;
float BG_IMAGE_ROTATION;
float DO_SHIFT_RGB;
float SHIFT_R;
@ -169,123 +193,87 @@ layout(std140, set = 0, binding = 0) uniform UBO {
#pragma parameter TEMPERATURE " Temperature in (6500=off)" 6500.0 3000 10000.0 50.0
#pragma parameter GAMMA_OUT " Gamma out" 0.69 0.1 9.0 0.025
// FXAA
// Apply an antialiasing filter via FXAA from Nvidia.
#pragma parameter DO_FXAA "★ FXAA enable? ==>" 0.0 0.0 1.0 1.0
//Offset RGB
// Allow to shift Red, Green, Blue components along x and y axis
#pragma parameter DO_SHIFT_RGB "★ Shift RGB components enable? (bad with FXAA) ==>" 0.0 0.0 1.0 1.0
#pragma parameter OFFSET_STRENGTH " Strength" 0.5 0.0 1.0 0.1
#pragma parameter SHIFT_R " Red offset" -40.0 -210.0 189.0 1
#pragma parameter SHIFT_G " Green offset" 40.0 -210.0 189.0 1
#pragma parameter SHIFT_B " Blue offset" 3.0 -210.0 189.0 1
// NTSC color artifacting
#pragma parameter DO_NTSC_ARTIFACTS "★ CVBS: NTSC color artifacts enable? ==>" 0.0 0.0 1.0 1.0
#pragma parameter NTSC_FILTER_WIDTH " Filter width" 17.0 5.0 21.0 4.0
#pragma parameter NTSC_FILTER_SCF " Subcarrier Frequency" 5.30 0.0 10.0 0.01
#pragma parameter NTSC_FILTER_FC " Frequency cutoff" 2.5 0.1 10.0 0.1
#pragma parameter NTSC_PHASE_SHIFT " Phase shift" 0.0 0.0 1.0 1.0
//#pragma parameter NTSC_DOT_CRAWL " Dot Crawl" 1.0 0.0 1.0 1.0
#pragma parameter NTSC_MIX " Strength" 0.5 0.0 3.0 0.05
// YIQ/YUV bandwidth limited chroma bleeding.
#pragma parameter DO_SAT_BLEED "★ Bandwidth limited chroma bleeding enable? ==>" 0.0 0.0 1.0 1.0
// YIQ/YUV bandwidth limited chroma bleeding and NTSC color artifacts.
#pragma parameter DO_SAT_BLEED "★ CVBS: Bandwidth limited chroma enable? ==>" 0.0 0.0 1.0 1.0
#pragma parameter SAT_BLEED_PAL " Use PAL colorspace, not NTSC" 0.0 0.0 1.0 1.0
#pragma parameter SAT_BLEED_STRENGTH " Strength" 1.0 0.0 5.0 0.01
#pragma parameter SAT_BLEED_SIZE_LEFT " Size Left" 5.0 1.0 40.0 1.0
#pragma parameter SAT_BLEED_SIZE_RIGHT " Size Right" 5.0 1.0 40.0 1.0
#pragma parameter SAT_BLEED_FALLOFF " Falloff" 1.7 1.0 2.0 0.01
//Offset RGB
#pragma parameter DO_SHIFT_RGB "★ RGB deconvergence enable? (bad with FXAA) ==>" 0.0 0.0 1.0 1.0
#pragma parameter OFFSET_STRENGTH " Strength" 0.5 0.0 1.0 0.1
#pragma parameter SHIFT_R " Red offset" -40.0 -210.0 189.0 1
#pragma parameter SHIFT_G " Green offset" 40.0 -210.0 189.0 1
#pragma parameter SHIFT_B " Blue offset" 3.0 -210.0 189.0 1
// Input glowing
// Emulates the glowing of the input signal by blurring it with "IN_GLOW_WH" sharpness.
// Apply a gamma filter "IN_GLOW_GAMMA" to "light" it, multiplying the result by "IN_GLOW_POWER" and
// finally interpolating(*) it with the source image.
// "IN_GLOW_ADD" allows to modulate from interpolation(*) to a sum, wihch may (or not) produce better effects.
// With "IN_GLOW_ADD=0" input glowing does not alter the RGB mask
// or slot mask applied to the image.
#pragma parameter DO_IN_GLOW "★ Glowing Input/power enable? ==>" 0.0 0.0 1.0 1.0
#pragma parameter IN_GLOW_POWER " Input signal glow strength" 0.45 0.0 5.0 0.05
#pragma parameter IN_GLOW_WH " Sharpness" 2.5 0.2 7.0 0.05
#pragma parameter IN_GLOW_W " Sharpness, horizontal" 2.5 0.2 7.0 0.05
#pragma parameter IN_GLOW_H " Sharpness, vertical" 2.5 0.2 7.0 0.05
#pragma parameter IN_GLOW_GAMMA " Gamma, the higher, the less the glow on dark colors" 1.0 1.0 10.0 0.1
//#pragma parameter IN_GLOW_ADD " Post gain (0.0 to disable)" 0.0 0.0 1.0 0.05
#pragma parameter IN_GLOW_BIAS " Glow to blur bias" 2.0 0.0 2.0 0.05
// RGB Mask
// Emulates CRT RGB phosphors.
// This is done by multiplying the source image pixels, in turn, by red green or blue.
// The strenght of the multiplication, and so of the final effect is affected by "RGB_MASK_STRENGTH" value.
// A Value of 0 completely disable the effect.
// "VMASK_DARKLINE_SCALE" Scales the gaps, the width the mask, and the height of the rgm bask and darklines (for HiDPI).
// "VMASK_GAP" Will draw an horizontal gap between triads, for HiDPI monitors.
// "VMASK_USE_GM" exploit the rgb subpixel layout of the real monitor to higher the apparent RGB vmask resolution
// "VMASK_OVERWHITE" modulates the strenght of the effect depending on the source pixel brightness,
// This is handy if you want to keep a good image contrast/brightness, but keep in mind that other
// parameters like haloing and bloom.
// Aperture grille/slot mask (shadow mask not implemented) are handled via *DARKLINES*
// Draw darklines on screen coordinates, by mixing black pixels with the source image
// on final viewport coordinates.
// "DARKLINES_STRENGTH" expresses the final strenght of the effect.
// if "DO_DARKLINES_VOFFSET" is 0, straight horizontal black lines will be painted that emulates an aperture grille.
// "DARKLINES_PERIOD" expresses every how many lines draw a black one (or the height ov the RGB triads)
// "DO_DARKLINES_VOFFSET" lets you to vertically offset by ""DARKLINES_PERIOD/2" the lines every 3 screen pixels,
// allowing, in conjunction with RGB mask, to emulate slot mask
// MASK_COMPENSATION will, where possible, compensate for the loss of brightness by smartly pushing the source luminance
// Mask
#pragma parameter DO_VMASK_AND_DARKLINES "★ RGB 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
#pragma parameter VMASK_DARKLINE_SCALE " (HiDPI) Vmask and Darklines multiplier" 1.0 1.0 4.0 1.0
#pragma parameter RGB_MASK_STRENGTH " Vmask Strength (0.0 to disable)" 0.75 0.0 1.0 0.05
#pragma parameter VMASK_USE_GM " RGB Mask: (LoDPI) Green,Magenta -> BGR" 0.0 0.0 1.0 1.0
#pragma parameter VMASK_GAP " RGB Mask: Horizontal Gap between triads" 0.0 0.0 1.0 1.0
#pragma parameter VMASK_OVERWHITE " RGB Mask: affect bright colors" 1.0 0.0 1.0 0.05
#pragma parameter RGB_MASK_STRENGTH " RGB Mask Strength (0.0 to disable)" 0.75 0.0 1.0 0.05
#pragma parameter VMASK_USE_GM " . (LoDPI) Green,Magenta -> BGR" 0.0 0.0 1.0 1.0
#pragma parameter VMASK_GAP " . Horizontal Gap between triads" 0.0 0.0 1.0 1.0
#pragma parameter VMASK_OVERWHITE " . Affect bright colors" 1.0 0.0 1.0 0.05
#pragma parameter DARKLINES_STRENGTH " Darklines strength (0.0 to disable)" 0.65 0.0 1.0 0.05
#pragma parameter DARKLINES_VOFFSET " . Offset" 1.0 0.0 1.0 1.0
#pragma parameter DARKLINES_PERIOD " . Height" 4.0 2.0 16.0 2.0
#pragma parameter DRKLN_OVERWHITE " . Affect bright colors" 1.0 0.0 1.0 0.05
#pragma parameter DARKLINES_STRENGTH " Darklines: strength (0.0 to disable)" 0.65 0.0 1.0 0.05
#pragma parameter DO_DARKLINES_VOFFSET " Darklines: offset by triads" 1.0 0.0 1.0 1.0
#pragma parameter DARKLINES_PERIOD " Darklines: period (triad height)" 4.0 2.0 16.0 2.0
#pragma parameter DRKLN_OVERWHITE " Darklines: affect bright colors" 1.0 0.0 1.0 0.05
// Halo
// The parameters are the same as input glowing, but this time the effect is applie
// after emulating the RGB phosphors the aperture grille or the slot masks and, instead of
// multiplying the resulting picture by the source one, it is added.
// this means that haloing will produce solid colors,
// lessening afromentioned effects on bright colors.
#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 " Horizontal sharpness" 1.75 0.2 7.0 0.05
#pragma parameter HALO_H " Vertical sharpness" 1.75 0.2 7.0 0.05
#pragma parameter HALO_W " Sharpness, horizontal" 1.75 0.2 7.0 0.05
#pragma parameter HALO_H " Sharpness, Vertical" 1.75 0.2 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 too" 0.0 0.0 1.0 0.1
// Scanlines
// Blank even source lines, the value from 0.0 to 1.0 expresses the darkness of the blanked lines
// 1.0 means no blank at all.
// SCANLINE_DARK controls the gap brightness
// SCANLINE_COMPENSATION will make scanlines brighter, where possible, to compensate for the loss of brightness
// SCANLINE_BLEEDING will make the whiter part of the scanline to bright the gap.
#pragma parameter DO_SCANLINES "★ Scanlines enable? ==>" 0.0 0.0 1.0 1.0
#pragma parameter SCANLINE_DARK " Scanlines gap brightness" 0.0 -0.5 1.0 0.05
#pragma parameter SCANLINE_COMPENSATION " Compensate for brightness loss" 0.0 0.0 1.0 0.1
#pragma parameter SCANLINES_BLEEDING " Scanlines bleeding" 0.0 0.0 3.0 0.05
// Alternate the drawing of the scanlines between frames. this will produce a flickering typical of
// interlaced screens; 0 disable the effect, 1 always enables it, 2 enables it only when
// the shader detects an interlaced signal, which actually means that the vertical resoution is "high enough"
#pragma parameter SCANLINE_FLICKERING " Interlace Flicker (0=off,1=on,2=if interlaced)" 2.0 0.0 2.0 1.0
#pragma parameter SCANLINE_FLICKERING_POWER " Interlace Flicker power" 0.75 0.0 4.0 0.1
#pragma parameter SCANLINE_DISABLE_ON_INTERLACE " Disable on interlaced screen" 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 (type 1 and 2 only)" 0.0 0.0 1.0 0.05
#pragma parameter SCANLINE_SM_VOFFSET " . Offset (type 1 only)" 45.0 0.0 158.0 1.0
// Bloom
// The image is downsampled, bloomed and mixed back with the original image.
// "BLOOM_MIX" is the final mix strength
// "BLOOM_SIZE" is the radius of the blurred image
// "BLOOM_QUALITY" express a tradeoff between quality and effect speed.
// "BLOOM_GAMMA" allows to apply more bloom on the bright colors of the source image
// "BLOOM_POWER" is the additional gain applied to the bloom
// "BLOOM_BYPASS" will show only the bloomed component
// the original image.
#pragma parameter DO_BLOOM "★ Bloom enable? ==>" 0.0 0.0 1.0 1.0
#pragma parameter BLOOM_MIX " Final mix, (0.0=off)" 0.2 0.0 1.0 0.01
#pragma parameter BLOOM_SIZE " Radius" 2.0 0.25 30.0 0.25
@ -296,6 +284,8 @@ layout(std140, set = 0, binding = 0) uniform UBO {
#pragma parameter BLOOM_OVER_WHITE " Strength on bright areas (0 = aura)" 0.5 0.0 1.0 0.05
#pragma parameter BLOOM_BYPASS " Bypass" 0.0 0.0 1.0 1.0
//Curvature parameters:
#pragma parameter DO_CURVATURE "★ Curvature enable? ==>" 0.0 0.0 1.0 1.0
#pragma parameter GEOM_WARP_X " Warp X" 0.3 0.0 6.0 0.05
@ -303,6 +293,8 @@ layout(std140, set = 0, binding = 0) uniform UBO {
#pragma parameter GEOM_CORNER_SIZE " Corner radius" 0.01 0.01 0.1 0.005
#pragma parameter GEOM_CORNER_SMOOTH " Corner sharpness" 350.0 50.0 1000.0 25.0
//Bezel related
#pragma parameter DO_BEZEL "★ Bezel enable? ==>" 0.0 0.0 1.0 1.0
#pragma parameter BEZEL_R " Bezel color: Red" -0.3 -0.5 0.5 0.01
@ -312,13 +304,18 @@ layout(std140, set = 0, binding = 0) uniform UBO {
#pragma parameter BEZEL_INNER_ZOOM " Image zoom" -0.18 -1.5 0.5 0.01
#pragma parameter BEZEL_FRAME_ZOOM " Frame zoom" 0.0 -1.5 0.5 0.01
#pragma parameter BEZEL_IMAGE_BORDER " Image border" 1.01 1.0 1.2 0.01
#pragma parameter BEZEL_REFL_ZOOM " Reflections zoom" 0.965 0.0 2.0 0.005
//Background Image
#pragma parameter DO_BG_IMAGE "★ Backgound image enable? ==>" 0.0 0.0 1.0 1.0
#pragma parameter LABEL_WARNING1 " ⚠ RetroArch aspect needs to be set to Full! ⚠" 1.0 1.0 1.0 1.0
#pragma parameter BG_IMAGE_OVER " Image over content (alpha channel driven)?" 0.0 0.0 1.0 1.0
#pragma parameter BG_IMAGE_OFFX " Shift Image over X axis" 0.0 -1.0 1.0 0.001
#pragma parameter BG_IMAGE_OFFY " Shift Image over Y axis" 0.0 -1.0 1.0 0.001
#pragma parameter BG_IMAGE_ZOOM " Zoom Image" 1.0 -1.0 3.0 0.001
#pragma parameter BG_IMAGE_OFFX " Shift Image over X axis" 0.0 -1.0 1.0 0.0005
#pragma parameter BG_IMAGE_OFFY " Shift Image over Y axis" 0.0 -1.0 1.0 0.0005
#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
//Back leds
@ -331,8 +328,10 @@ layout(std140, set = 0, binding = 0) uniform UBO {
#pragma parameter AMBI_POWER " Led power" 1.5 1.0 7.0 0.05
//Aspect Ratio
#pragma parameter label_ar "★ Aspect Ratio " 0.0 0.0 1.0 1.0
#pragma parameter ASPECT_X " Aspect Ratio Numerator (-x for a preset below)" 0.0 -5.0 256. 1.0
#pragma parameter ASPECT_X " Aspect Ratio Numerator (-x for a preset below)" 0.0 -6.0 256. 1.0
#pragma parameter ASPECT_Y " Aspect Ratio Denominator" 3.0 0.0 256. 1.0
#pragma parameter label_aspect_presets " Presets reference list:" 0.0 0.0 0.0 1.0
#pragma parameter label_aspect_preset0 " (0 = MAME 1.33)" 0.0 0.0 0.0 1.0
@ -341,6 +340,9 @@ layout(std140, set = 0, binding = 0) uniform UBO {
#pragma parameter label_aspect_preset3 " (-3 = Snes 8/7)" 0.0 0.0 0.0 1.0
#pragma parameter label_aspect_preset4 " (-4 = Megadrive 10/7)" 0.0 0.0 0.0 1.0
#pragma parameter label_aspect_preset5 " (-5 = Uncorrected)" 0.0 0.0 0.0 1.0
#pragma parameter label_aspect_preset6 " (-6 = MAME rotated/TATE 0.75)" 0.0 0.0 0.0 1.0
//Full screen glowing
//Modulate the image zooming depending on the image luminosity.
@ -349,8 +351,8 @@ layout(std140, set = 0, binding = 0) uniform UBO {
#pragma parameter DYNZOOM_FACTOR " Narrowness" 80.0 30.0 120.0 1.0
//Vignette and spot
//Emulates the vignette effect and/or a light reflection.
#pragma parameter DO_VIGNETTE "★ Vignette enable? ==>" 0.0 0.0 1.0 1.0
#pragma parameter V_BYPASS " bypass " 0.0 0.0 1.0 1.0
#pragma parameter V_SIZE " size" 1.7 0.0 3.0 0.05
@ -363,13 +365,15 @@ layout(std140, set = 0, binding = 0) uniform UBO {
#pragma parameter S_POWER " power" 0.1 0.05 2.0 0.05
// Alternative blanking.
// 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.
// ALT_BLANK_STRENGTH expresses the strength of the "blank".
#pragma parameter DO_ALT_BLANK "★ Alternate line blanking enable? ==>" 0.0 0.0 1.0 1.0
#pragma parameter ALT_BLANK_STRENGTH " Alternate black frame insertion strength" 0.5 0.0 1.0 0.1
#pragma parameter ALT_BLANK_PERIOD " Dark lines period" 4.0 0.0 20.0 1.0
#pragma parameter ALT_BLANK_PERIOD " Blank lines period" 4.0 0.0 20.0 1.0
#define DO_FXAA global.DO_FXAA
@ -380,7 +384,14 @@ layout(std140, set = 0, binding = 0) uniform UBO {
#define SAT_BLEED_FALLOFF global.SAT_BLEED_FALLOFF
#define SAT_BLEED_STRENGTH global.SAT_BLEED_STRENGTH
#define SAT_BLEED_PAL global.SAT_BLEED_PAL
//#define prefer_std_pow params.prefer_std_pow
#define DO_NTSC_ARTIFACTS global.DO_NTSC_ARTIFACTS
#define NTSC_FILTER_WIDTH global.NTSC_FILTER_WIDTH
#define NTSC_FILTER_SCF global.NTSC_FILTER_SCF
#define NTSC_FILTER_FC global.NTSC_FILTER_FC
#define NTSC_MIX global.NTSC_MIX
#define NTSC_PHASE_SHIFT global.NTSC_PHASE_SHIFT
//#define NTSC_DOT_CRAWL global.NTSC_DOT_CRAWL
#define DO_SCANLINES global.DO_SCANLINES
#define SCANLINE_DARK params.SCANLINE_DARK
@ -389,11 +400,15 @@ layout(std140, set = 0, binding = 0) uniform UBO {
#define SCANLINE_FLICKERING_POWER global.SCANLINE_FLICKERING_POWER
#define SCANLINE_DISABLE_ON_INTERLACE global.SCANLINE_DISABLE_ON_INTERLACE
#define SCANLINE_COMPENSATION global.SCANLINE_COMPENSATION
#define SCANLINE_SM_TYPE global.SCANLINE_SM_TYPE
#define SCANLINE_SM_STRENGTH global.SCANLINE_SM_STRENGTH
#define SCANLINE_SM_VOFFSET global.SCANLINE_SM_VOFFSET
#define DO_IN_GLOW global.DO_IN_GLOW
//#define IN_GLOW_ADD global.IN_GLOW_ADD
#define IN_GLOW_BIAS global.IN_GLOW_BIAS
#define SCANLINES_BLEEDING global.SCANLINES_BLEEDING
#define IN_GLOW_WH global.IN_GLOW_WH
#define IN_GLOW_W global.IN_GLOW_W
#define IN_GLOW_H global.IN_GLOW_H
#define IN_GLOW_POWER global.IN_GLOW_POWER
#define IN_GLOW_GAMMA global.IN_GLOW_GAMMA
@ -407,7 +422,7 @@ layout(std140, set = 0, binding = 0) uniform UBO {
#define DARKLINES_STRENGTH global.DARKLINES_STRENGTH
#define DRKLN_OVERWHITE params.DRKLN_OVERWHITE
#define DO_DARKLINES_VOFFSET params.DO_DARKLINES_VOFFSET
#define DARKLINES_VOFFSET params.DARKLINES_VOFFSET
#define DARKLINES_PERIOD params.DARKLINES_PERIOD
#define DO_HALO global.DO_HALO
@ -415,6 +430,7 @@ layout(std140, set = 0, binding = 0) uniform UBO {
#define HALO_H params.HALO_H
#define HALO_POWER params.HALO_POWER
#define HALO_GAMMA params.HALO_GAMMA
#define HALO_VS_SCAN params.HALO_VS_SCAN
#define DO_BLOOM params.DO_BLOOM
#define BLOOM_MIX global.BLOOM_MIX
@ -455,6 +471,7 @@ layout(std140, set = 0, binding = 0) uniform UBO {
#define BEZEL_INNER_ZOOM global.BEZEL_INNER_ZOOM
#define BEZEL_FRAME_ZOOM global.BEZEL_FRAME_ZOOM
#define BEZEL_IMAGE_BORDER global.BEZEL_IMAGE_BORDER
#define BEZEL_REFL_ZOOM global.BEZEL_REFL_ZOOM
#define DO_SPOT global.DO_SPOT
#define S_BYPASS global.S_BYPASS
@ -482,6 +499,7 @@ layout(std140, set = 0, binding = 0) uniform UBO {
#define BG_IMAGE_OFFY global.BG_IMAGE_OFFY
#define BG_IMAGE_OFFX global.BG_IMAGE_OFFX
#define BG_IMAGE_ZOOM global.BG_IMAGE_ZOOM
#define BG_IMAGE_ROTATION global.BG_IMAGE_ROTATION
#define DO_SHIFT_RGB global.DO_SHIFT_RGB
#define SHIFT_R global.SHIFT_R

View file

@ -16,12 +16,14 @@ 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 = 4) out float vIsRotated;
#include "includes/functions.include.slang"
void main() {
gl_Position = global.MVP * Position;
vTexCoord = get_scaled_coords(TexCoord,global.FinalViewportSize, is_rotated())+vec2(0.00001);
vIsRotated = float(is_rotated());
vTexCoord = get_scaled_coords(TexCoord,global.FinalViewportSize, bool(vIsRotated) ) + vec2(0.00001);
vOutputCoord = TexCoord;
spot_offset = offsets_from_float(S_POSITION+420.0,40);
@ -37,6 +39,7 @@ 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 = 4) in float vIsRotated;
layout(location = 0) out vec4 FragColor;
@ -57,8 +60,9 @@ layout(set = 0, binding = 10) uniform sampler2D shift_and_bleed_pass;
layout(set = 0, binding = 13) uniform sampler2D halo_pass;
layout(set = 0, binding = 14) uniform sampler2D avglum_passFeedback;
//Ex main_pass defines:
#define half_pi 1.5707963267949
#define HALF_PI 1.5707963267949
#define QUARTER_PI 0.785398163397448
#include "includes/functions.include.slang"
@ -72,16 +76,16 @@ vec3 pixel_vmask(vec3 source, vec3 white_reference, float over_white) {
vec3 m3 = vec3( ooo , ooo , 1.0 ); //col 3
vec3 gap = vec3( ooo );
int col = int( vOutputCoord.x * params.OutputSize.x );
vec3 pixel_out;
vec3 vmasked;
vec4 vec_mod=(vec4(3,1,2,3) + vec4(VMASK_GAP,0.0,0.0,0.0))* VMASK_DARKLINE_SCALE ;
if (mod(col, vec_mod.x) < vec_mod.y)
float fcol = vOutputCoord.x * params.OutputSize.x;
if (mod(fcol, vec_mod.x) < vec_mod.y)
vmasked = m1 * source;
else if (mod(col, vec_mod.x) < vec_mod.z)
else if (mod(fcol, vec_mod.x) < vec_mod.z)
vmasked = m2 * source;
else if (mod(col, vec_mod.x) < vec_mod.w)
else if (mod(fcol, vec_mod.x) < vec_mod.w)
vmasked = m3 * source;
else vmasked = gap * source;
@ -100,20 +104,19 @@ vec3 pixel_vmask(vec3 source, vec3 white_reference, float over_white) {
vec3 pixel_vmask_gm(vec3 source, vec3 white_reference, float over_white) {
// Simple RGB mask emulation with or without horizontal gap
float ooo = 1.0 - RGB_MASK_STRENGTH;
// RGB mask: R G B
vec3 m1 = vec3( ooo , 1.0 , ooo ); //col 1
vec3 m2 = vec3( 1.0 , ooo , 1.0 ); //col 2
vec3 gap = vec3( ooo );
int col = int( vOutputCoord.x * params.OutputSize.x );
float fcol = vOutputCoord.s * params.OutputSize.x;
vec3 pixel_out;
vec3 vmasked;
vec3 vec_mod=(vec3(2,1,2) + vec3(VMASK_GAP,0.0,0.0))* VMASK_DARKLINE_SCALE ;
if (mod(col, vec_mod.x) < vec_mod.y)
if (mod(fcol, vec_mod.x) < vec_mod.y)
vmasked = m1 * source;
else if (mod(col, vec_mod.x) < vec_mod.z)
else if (mod(fcol, vec_mod.x) < vec_mod.z)
vmasked = m2 * source;
else
vmasked = gap * source;
@ -129,9 +132,20 @@ vec3 pixel_vmask_gm(vec3 source, vec3 white_reference, float over_white) {
return pixel_out;
}
/*bool drawit( float period, float off, vec2 coords){
coords = vTexCoord;
float first_pass_size_y = global.first_passSize.y * period;
float current_line_int = floor(coords.y * first_pass_size_y) + off ;
float screenline_height = first_pass_size_y/params.OutputSize.y;//; params.OutputSize.y/first_pass_size_y;
return (coords.y * first_pass_size_y > current_line_int) &&
(coords.y * first_pass_size_y < current_line_int+screenline_height) ;
}*/
vec3 pixel_darklines(vec3 source,float darkline_every, float darkline_trans,
float do_offset, vec3 white_reference,float over_white) {
/* "darklines" are vertical gaps that can be used to emulate aperturegrille
float do_offset, vec3 white_reference,float over_white, vec2 coords) {
/* "darklines" are vertical gaps that can be used to emulate aperturegrille
* or slotmasks
*/
@ -148,11 +162,19 @@ vec3 pixel_darklines(vec3 source,float darkline_every, float darkline_trans,
}
//Slotmask (darklines are drawn with offset)
if (do_offset == 1.0) {
if (do_offset > 0.0) {
bool odd_line_meno_densa = mod(vFragCoord.y, darkline_every) > VMASK_DARKLINE_SCALE ;
bool odd_line_piu_densa = !(mod(vFragCoord.y, darkline_every/2) < VMASK_DARKLINE_SCALE && odd_line_meno_densa);
bool odd_column = mod(vFragCoord.x + Darkline_part_w , Darkline_part_w_x2) < Darkline_part_w;
bool draw_mask = odd_line_piu_densa && !odd_column || odd_column && odd_line_meno_densa;
/*
//quante scanline è alta la darkline
float darkline_height = 1/2.0;
draw_mask = drawit(darkline_height,0.0, coords) && odd_column || drawit(darkline_height,0.5, coords) && !odd_column;
return source * float(!draw_mask);
*/
return source * clamp(float(draw_mask),darkline_trans,1.0);
}
@ -162,7 +184,9 @@ vec3 pixel_darklines(vec3 source,float darkline_every, float darkline_trans,
return source * ( float(draw_color) + float(draw_dark) * darkline_trans );
}
float scanline_shape(vec2 coords, bool do_flicker) {
float scanline_shape(vec2 coords, bool do_flicker, bool is_interlaced, bool do_slotmask) {
/* 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
@ -171,20 +195,84 @@ float scanline_shape(vec2 coords, bool do_flicker) {
bool alternate = false;
float period = 1.0;
if (do_flicker) {
if (params.FrameCount % 2 == 0.0) alternate = true;
if (params.OriginalSize.y > MIN_LINES_INTERLACED ) period = 0.5;
}
float angle = coords.y * pi * params.OriginalSize.y * period;
float angle_base = coords.y * pi * params.OriginalSize.y * period;
float lines;
float lines = 1.0;
if (!( is_interlaced && SCANLINE_DISABLE_ON_INTERLACE == 1.0 )) {
if (alternate)
lines = -sin(angle+half_pi); //lines = abs(cos(angle));
lines = -sin(angle_base + HALF_PI); //lines = abs(cos(angle))
else
lines = sin(angle);
lines = sin(angle_base);
lines = (lines*lines);
}
//Draw the slotmask right here if the height is the same as the scanline.
if (do_slotmask) {
if (do_flicker) {
//Fallback to old darklines code to avoid glitches/artifacts.
lines = lines * pixel_darklines(vec3(1.0),DARKLINES_PERIOD,1-SCANLINE_SM_STRENGTH,1.0,vec3(0.0),1.0, coords).r;
} else {
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;
if (SCANLINE_SM_TYPE == 1.0) {
// Slotmask is out oh phase every "odd" triple and mixed with
// the straight scanline.
// slotmask strength and stagger are configurable.
// Acceptable values are with stagger around 79 (pi/4)
if (odd_column) {
float phase = pi + SCANLINE_SM_VOFFSET*0.01;
float angle_slotmask = angle_base + phase;
float slotmask = sin(angle_slotmask);
slotmask = (slotmask*slotmask);
lines = mix(lines, slotmask, SCANLINE_SM_STRENGTH);
}
}
else if (SCANLINE_SM_TYPE == 2.0) {
float phase;
//Slotmask is always out of phase by QUARTER_PI
//Every "odd triple" column, it is also out of phase of HALF_PI
//Slotmask is multiplied by original scanline and thinner.
//Only strength parameter is taken into account.
if (odd_column)
phase = period * pi + QUARTER_PI;
else
phase = period * HALF_PI + QUARTER_PI;
float angle_slotmask = angle_base + phase;
float slotmask = sin(angle_slotmask);
slotmask = slotmask*slotmask; slotmask = slotmask*slotmask; // eleva alla 4 per renderla sottile. valori maggiori producono moiree.
slotmask = mix(1.0, slotmask, SCANLINE_SM_STRENGTH); // riduci la forza della slotmask
lines = lines * slotmask;
}
else if (SCANLINE_SM_TYPE == 3.0) {
// Thinner slotmask screen, no scanlines.
// No parameter taken into account.
lines = lines * lines;
if (odd_column) {
float phase = pi + HALF_PI;
float angle_slotmask = angle_base + phase;
float slotmask = sin(angle_slotmask);
slotmask = (slotmask*slotmask); slotmask = (slotmask*slotmask);
lines = slotmask;
}
}
}
}
if (SCANLINE_DARK >= 0.0) {
lines = lines * (1.0 - SCANLINE_DARK) + SCANLINE_DARK;
@ -192,7 +280,6 @@ float scanline_shape(vec2 coords, bool do_flicker) {
float deepness = -SCANLINE_DARK;
lines = lines * ((1-SCANLINE_DARK) ) + SCANLINE_DARK ;
}
return lines;
}
@ -240,34 +327,36 @@ vec4 pixel_main_pass(vec2 coords, bool bBorder_needed) {
pixel_out = pixel_push_luminance(pixel_out, DARKLINES_STRENGTH * (1.0/DARKLINES_PERIOD) * MASK_COMPENSATION);
//Screen lines (slotmask aperture grille)
if (DARKLINES_STRENGTH > 0.0 ) {
if ( DARKLINES_STRENGTH > 0.0 ) {
float MYDARKLINES_TRANSPARENCY = 1.0 - DARKLINES_STRENGTH;
pixel_out = pixel_darklines(pixel_out,DARKLINES_PERIOD,MYDARKLINES_TRANSPARENCY,DO_DARKLINES_VOFFSET,pixel_in_clamped,DRKLN_OVERWHITE);
pixel_out = pixel_darklines(pixel_out,DARKLINES_PERIOD,MYDARKLINES_TRANSPARENCY,DARKLINES_VOFFSET,pixel_in_clamped,DRKLN_OVERWHITE, coords);
}
}
float lum = clamp(max(max(pixel_out.r,pixel_out.g),pixel_out.b), 0.0,1.0);
//Halo
vec3 pixel_haloed;
if (DO_HALO == 1.0 ) {
pixel_haloed = texture(halo_pass,coords).rgb;
pixel_out += pixel_haloed;
pixel_out += pixel_haloed * (1 - HALO_VS_SCAN);
//pixel_out += (pixel_haloed * (lum));
}
/* Non flickering scanlines, Don't do them if
* - User doesn't want scanlines
* - The screen is interlaced and the user doesn't want scanlines on it.
*/
if ( DO_SCANLINES == 1.0 &&
!( isinterlaced && SCANLINE_DISABLE_ON_INTERLACE == 1.0 )
) {
if ( DO_SCANLINES == 1.0 ) {
/* pixel_bleed is the color that will bleed over scanline gap.
* It is selected by the first available one depending on the shader
* features enabled by the user */
vec3 pixel_bleed;
if (DO_HALO == 1.0)
/*if (DO_HALO == 1.0)
pixel_bleed = pixel_haloed;
else if (DO_IN_GLOW == 1.0)
else */if (DO_IN_GLOW == 1.0)
pixel_bleed = pixel_glowed;
else
pixel_bleed = pixel_in;
@ -278,11 +367,32 @@ vec4 pixel_main_pass(vec2 coords, bool bBorder_needed) {
pixel_out = pow(pixel_out,vec3(mypow));
}
float scanline_shape = scanline_shape(coords, flickering_scanlines);
//The following should be theoretically more correct, but it produces moiree:
/* vec3 vscanline_shape = scanline_shape(coords, flickering_scanlines, isinterlaced, SCANLINE_SM_TYPE > 0.0 ) +
(pixel_bleed * SCANLINES_BLEEDING);
vscanline_shape = min(vscanline_shape,1.0);
pixel_out = vscanline_shape * pixel_out;
*/
//Obtain the scanlines screen by multiplying the scanline shape by the pixel color.
vec3 pixel_scanlined = pixel_out * scanline_shape;
//Next, emulate the bleeding of the color over the dark part of the scanlined screen.
pixel_out = pixel_scanlined + (pixel_out * pixel_bleed * SCANLINES_BLEEDING * (1-scanline_shape));
//and emulate the bleeding of the color over the dark part of the scanlined screen.
//float scanline_shape = scanline_shape(coords, flickering_scanlines, isinterlaced, SCANLINE_SM_TYPE > 0.0 );
float scanline_shape = scanline_shape(coords, flickering_scanlines, isinterlaced, SCANLINE_SM_TYPE > 0.0 );
//Modify scanline weight?
//float l = max(max(pixel_bleed.r, pixel_bleed.g), pixel_bleed.b);
//scanline_shape = min(pow(scanline_shape, 1/l), 1.0);
pixel_out = pixel_out * ( scanline_shape + ( pixel_bleed * SCANLINES_BLEEDING * ( 1 - scanline_shape ) ));
}
if (DO_HALO == 1.0 ) {
pixel_out += pixel_haloed * HALO_VS_SCAN;
//pixel_out = pixel_out + (pixel_haloed * (1-lum));
}
// Apply color correction (in this pass it is just the final output gamma)
@ -295,20 +405,41 @@ vec4 pixel_main_pass(vec2 coords, bool bBorder_needed) {
float global_noise;
vec4 pixel_background_image(bool over){
//return the aspect corrected background image:
vec2 bg_image_offset=vec2(BG_IMAGE_OFFX,BG_IMAGE_OFFY);
if (over) {
vec2 tex_size = textureSize(bg_over, 0); // * BG_ZOOM;
float bg_over_lod = log2(tex_size.y / global.FinalViewportSize.y);
vec2 back_coords = get_scaled_coords_aspect(vOutputCoord+bg_image_offset,global.FinalViewportSize, tex_size.x/tex_size.y, is_rotated());
if (BG_IMAGE_ROTATION > 0.0 || ( BG_IMAGE_ROTATION < 0.0 && bool(vIsRotated) ) ) tex_size.xy = tex_size.yx;
vec2 back_coords = get_scaled_coords_aspect(vOutputCoord+bg_image_offset,global.FinalViewportSize, tex_size.x/tex_size.y, bool(vIsRotated));
if (BG_IMAGE_ROTATION < 0.0 && bool(vIsRotated) ) {
//handle automatic rotation of bg image for rotated games
back_coords.xy = vec2(back_coords.y, back_coords.x);
back_coords.y = 1 - back_coords.y;
} else if (BG_IMAGE_ROTATION > 0.0) {
//rotate as user prefs
back_coords.xy = vec2(back_coords.y, back_coords.x);
if (BG_IMAGE_ROTATION == 1.0) back_coords.y = 1 - back_coords.y;
if (BG_IMAGE_ROTATION == 2.0) back_coords.x = 1 - back_coords.x;
}
back_coords=zoom(back_coords, BG_IMAGE_ZOOM);
return textureLod(bg_over,back_coords,bg_over_lod);
}
//under
vec2 tex_size = textureSize(bg_under, 0); // * BG_ZOOM;
if (BG_IMAGE_ROTATION > 0.0) tex_size.xy = tex_size.yx;
float bg_under_lod = log2(tex_size.y / global.FinalViewportSize.y);
vec2 back_coords = get_scaled_coords_aspect(vOutputCoord+bg_image_offset,global.FinalViewportSize, tex_size.x/tex_size.y, is_rotated());
vec2 back_coords = get_scaled_coords_aspect(vOutputCoord+bg_image_offset,global.FinalViewportSize, tex_size.x/tex_size.y, bool(vIsRotated));
if (BG_IMAGE_ROTATION > 0.0) {
back_coords.xy = vec2(back_coords.y, back_coords.x);
if (BG_IMAGE_ROTATION == 1.0) back_coords.y = 1 - back_coords.y;
if (BG_IMAGE_ROTATION == 2.0) back_coords.x = 1 - back_coords.x;
}
back_coords=zoom(back_coords, BG_IMAGE_ZOOM);
return textureLod(bg_under,back_coords,bg_under_lod);
}

View file

@ -1,15 +1,41 @@
#version 450
#include "config.inc"
#define NTSC_FILTER_WIDTH_MAX 25
#define NTSC_FILTER_MIDDLE NTSC_FILTER_WIDTH/2
#pragma stage vertex
layout(location = 0) in vec4 Position;
layout(location = 1) in vec2 TexCoord;
layout(location = 0) out vec2 vTexCoord;
layout(location = 4) out vec3 temperature_rgb;
layout(location = 1) out vec3 temperature_rgb;
layout(location = 2) out float vNTSC_FILTER_FC;
layout(location = 3) out float vNTSC_FILTER_SCF;
layout(location = 4) out float vNTSC_weights[NTSC_FILTER_WIDTH_MAX];
#include "includes/functions.include.slang"
/* hann() sinc() functions by xot:
* copyright (c) 2017-2018, John Leffingwell
* license CC BY-SA Attribution-ShareAlike
* ntscdec() function, same license and attribution,
* slightly modified by me.
* https://www.shadertoy.com/view/Mdffz7
*/
// Hann windowing function
float hann(float n, float N) {
return 0.5 * (1.0 - cos((TAU*n)/(N-1.0)));
}
// Sinc function
float sinc(float x) {
if (x == 0.0) return 1.0;
return sin(pi*x) / (pi*x);
}
vec3 kelvin2rgb(float k) {
//Convert kelvin temperature to rgb factors
k = clamp(k,1000,40000);
@ -40,17 +66,105 @@ void main() {
vTexCoord = TexCoord;
if (TEMPERATURE != 6500)
temperature_rgb = kelvin2rgb(TEMPERATURE);
if (DO_NTSC_ARTIFACTS > 0.0) {
vNTSC_FILTER_FC = NTSC_FILTER_FC * 0.1;
vNTSC_FILTER_SCF = NTSC_FILTER_SCF * 0.1;
float sum = 0.0;
int N = int(NTSC_FILTER_WIDTH);
// Compute sampling weights
for (int n = 0; n < N; n++) {
vNTSC_weights[n] = hann(float(n), float(N)) * sinc(vNTSC_FILTER_FC * float(n-NTSC_FILTER_MIDDLE));
sum += vNTSC_weights[n];
}
// Normalize sampling weights
for (int n = 0; n < N; n++) {
vNTSC_weights[n] /= sum;
}
}
}
#pragma stage fragment
layout(location = 0) in vec2 vTexCoord;
layout(location = 4) in vec3 temperature_rgb;
layout(location = 1) in vec3 temperature_rgb;
layout(location = 2) in float vNTSC_FILTER_FC;
layout(location = 3) in float vNTSC_FILTER_SCF;
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;
#include "includes/functions.include.slang"
// Colorspace conversion matrix for YIQ-to-RGB
const mat3 YIQ2RGB = mat3(1.000, 1.000, 1.000,
0.956,-0.272,-1.106,
0.621,-0.647, 1.703);
const mat3 RGB2YIQ = mat3(
0.2989, 0.5959, 0.2115,
0.5870, -0.2744, -0.5229,
0.1140, -0.3216, 0.3114);
// Hann windowing function
float hann(float n, float N) {
return 0.5 * (1.0 - cos((TAU*n)/(N-1.0)));
}
// Sinc function
float sinc(float x) {
if (x == 0.0) return 1.0;
return sin(pi*x) / (pi*x);
}
#define pi10 pi*10
vec3 ntscdec(vec2 uv ){
vec2 size = params.SourceSize.xy;
// Sample composite signal and decode to YIQ
vec3 YIQ_processed = vec3(0.0);
int N = int(NTSC_FILTER_WIDTH);
for (int n=0; n < N; n++) {
vec2 pos = uv + vec2(float(n-NTSC_FILTER_MIDDLE) / size.x, 0.0);
float phase = TAU * (vNTSC_FILTER_SCF * size.x * pos.x);
//phase += ( pos.x * 3.14 * 20) ; // rainbow width
if (NTSC_PHASE_SHIFT > 0.5) phase += ( pos.y * -pi10 ) ; // 45 degree
//if (NTSC_DOT_CRAWL > 0.5) phase += (params.FrameCount % 3140) /2.0 ;
//float phase = TAU * (vNTSC_FILTER_SCF * size.x * pos.x) + ( pos.y * -pi10 * NTSC_PHASE_SHIFT)
// ( pos.y * - 31.4);
//Just sample luminance via yiq:
vec3 smp = vec3((texture(Source, pos).rgb * RGB2YIQ).x);
YIQ_processed += vec3(1.0, cos(phase), sin(phase)) * smp * vNTSC_weights[n];
}
vec3 RGB_ori = texture(Source, uv).rgb;
vec3 YIQ_ori = RGB_ori * RGB2YIQ;
//ADD artifacted Y and Q.
vec3 YIQ_result = vec3(YIQ_ori.x, YIQ_ori.yz + YIQ_processed.yz * NTSC_MIX);
/* se li vogliamo aggiungere come complemento ad 1?
* tutto il
* tipo ho y1 = 0.5 -> aggiungo y2 al max fino a 0.5, quindi come una sorta di clamp.
* oppure partendo dall'opposto. e aggiungendo l'orinale all'ntsc.
*/
// YIQ_result.y = YIQ_ori.y + clamp(YIQ_processed.y, 0.0, (1-YIQ_ori.y)) * NTSC_MIX;
// YIQ_result.z = YIQ_ori.z + clamp(YIQ_processed.z, 0.0, (1-YIQ_ori.z)) * NTSC_MIX;
//return YIQ_processed * YIQ2RGB;
return YIQ_result * YIQ2RGB;
}
vec3 color_tools(vec3 pixel_out) {
//Apply color corrections to input signal.
@ -75,7 +189,12 @@ vec3 color_tools(vec3 pixel_out) {
vec3 pixel_no_flicker(vec2 coord){
vec3 pixel_out = texture(Source,coord).rgb;
vec3 pixel_out;
if (DO_NTSC_ARTIFACTS > 0.0)
pixel_out = ntscdec(coord);
else
pixel_out = texture(Source,coord).rgb;
if (DO_CCORRECTION == 1.0)
pixel_out = color_tools(pixel_out);
return pixel_out.rgb;
@ -131,12 +250,12 @@ void debug() {
//Just test patterns here
vec3 pixel_debug;
//Use one of the following to debug:
//pixel_debug=vec3(abs(sin(params.FrameCount/3.14/8.0))); //white fade
pixel_debug=vec3(abs(sin(params.FrameCount/3.14/8.0))); //white fade
//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(floor(vTexCoord.x*16)/16); //H bw gradient 16gray
//pixel_debug=vec3(floor(vTexCoord.x*64)/64); //H bw gradient 64gray
//pixel_debug=vec3(floor(vTexCoord.x*128)/128); //H bw gradient 128gray
@ -148,7 +267,7 @@ void debug() {
void main() {
//FragColor = vec4(ntscdec(vTexCoord),1.0); return;
//debug(); return;
/* since flickering code needs

View file

@ -29,8 +29,7 @@ layout(set = 0, binding = 2) uniform sampler2D FXAA_pass;
layout(set = 0, binding = 3) uniform sampler2D first_pass;
layout(set = 0, binding = 4) uniform sampler2D in_glow_pass;
layout(set = 0, binding = 5) uniform sampler2D shift_and_bleed_pass;
// What follows is an ugly optimization with a lot of code copied and pasted repeated multiple times,
// shamlessly hidden into an include:
#include "includes/pixel_glows.include.slang"
@ -40,13 +39,13 @@ vec4 main_wrap(void) {
vec2 halo_coords = vTexCoord;
if (DO_IN_GLOW == 1.0)
pixel_haloed = pixel_glow(in_glow_pass, HALO_W,HALO_H,HALO_POWER,HALO_GAMMA,halo_coords, global.FXAA_passSize, global.FXAA_passSize).rgb;
pixel_haloed = pixel_glow(in_glow_pass, HALO_W, HALO_H, HALO_POWER, HALO_GAMMA, halo_coords, global.FXAA_passSize, global.FXAA_passSize).rgb;
else if ( DO_SHIFT_RGB + DO_SAT_BLEED > 0.0)
pixel_haloed = pixel_glow(shift_and_bleed_pass, HALO_W,HALO_H,HALO_POWER,HALO_GAMMA,halo_coords, params.OutputSize, params.OutputSize).rgb;
pixel_haloed = pixel_glow(shift_and_bleed_pass, HALO_W, HALO_H, HALO_POWER, HALO_GAMMA, halo_coords, global.FXAA_passSize, global.FXAA_passSize).rgb;
else if (DO_FXAA > 0.0)
pixel_haloed = pixel_glow(FXAA_pass, HALO_W,HALO_H,HALO_POWER,HALO_GAMMA,halo_coords, global.FXAA_passSize, global.FXAA_passSize).rgb;
pixel_haloed = pixel_glow(FXAA_pass, HALO_W, HALO_H, HALO_POWER, HALO_GAMMA, halo_coords, global.FXAA_passSize, global.FXAA_passSize).rgb;
else
pixel_haloed = pixel_glow(first_pass, HALO_W,HALO_H,HALO_POWER,HALO_GAMMA,halo_coords, global.FXAA_passSize, global.FXAA_passSize).rgb;
pixel_haloed = pixel_glow(first_pass, HALO_W, HALO_H, HALO_POWER, HALO_GAMMA, halo_coords, global.FXAA_passSize, global.FXAA_passSize).rgb;
return vec4(pixel_haloed.rgb,1.0);
}

View file

@ -6,9 +6,7 @@ layout(location = 0) in vec4 Position;
layout(location = 1) in vec2 TexCoord;
layout(location = 0) out vec2 vTexCoord;
void main()
{
void main() {
gl_Position = global.MVP * Position;
vTexCoord = TexCoord ;
}
@ -22,24 +20,89 @@ layout(set = 0, binding = 3) uniform sampler2D FXAA_pass;
layout(set = 0, binding = 4) uniform sampler2D first_pass;
layout(set = 0, binding = 5) uniform sampler2D shift_and_bleed_pass;
// Blur sizes must not depend on input resolution
#define scalemod_x (params.OutputSize.x/360.0)
#define scalemod_y (params.OutputSize.y/270.0)
// What follows is an ugly optimization with a lot of code copied and pasted repeated multiple times,
// shamlessly hidden into an include:
#include "includes/pixel_glows.include.slang"
vec3 glow_blur_bias_smother_bloomer(sampler2D source_tex, vec2 co, vec3 pixel_glowed, float bias) {
//Modulates the mix of the blurred version over the sharp one
//by the luminosity difference of the blurred version and the original
vec3 pixel_original = texture(source_tex,vTexCoord).rgb;
vec3 pixel_sharp = pow(pixel_original,vec3(IN_GLOW_GAMMA)) * IN_GLOW_POWER;
vec3 pixel_glowed_c = clamp(pixel_glowed, 0.0, 1.0);
vec3 pixel_sharp_c = clamp(pixel_sharp, 0.0, 1.0);
vec3 vmix = vec3( pixel_glowed_c.r - pixel_original.r,
pixel_glowed_c.g - pixel_original.g,
pixel_glowed_c.b - pixel_original.b);
vmix += IN_GLOW_BIAS;
vmix = clamp(vmix, 0.0, 1.0);
vmix *= vmix;
return mix(pixel_sharp, pixel_glowed, vmix );
//return mix(pixel_sharp, pixel_glowed, clamp( (vmix+0.01 * vInGlowBias) , 0.0,1.0) );
//return pixel_sharp + pixel_glowed*clamp( (vmix+0.01 * vInGlowBias) , 0.0,1.0);
}
vec3 glow_blur_bias_sharper_AA(sampler2D source_tex, vec2 co, vec3 pixel_glowed, float bias) {
//from latitude. with pow.
vec3 pixel_source = texture(source_tex, co).rgb;
pixel_source = pow(pixel_source,vec3(IN_GLOW_GAMMA)) * IN_GLOW_POWER;
float glowlum = max(max(pixel_glowed.r, pixel_glowed.g), pixel_glowed.b);
float orilum = max(max(pixel_source.r, pixel_source.g), pixel_source.b);
glowlum = clamp(glowlum, 0.0, 1.0);
orilum = clamp(orilum, 0.0, 1.0);
float g_mix = (glowlum - orilum);
g_mix += IN_GLOW_BIAS;
g_mix = clamp(g_mix, 0.0, 1.0);
g_mix *= g_mix ;
return mix(pixel_source, pixel_glowed, g_mix);
}
vec3 glow_blur_bias(sampler2D source_tex, vec2 co, vec3 pixel_glowed, float bias){
if (IN_GLOW_W < 0.99)
return glow_blur_bias_sharper_AA( source_tex, co, pixel_glowed, bias);
else
return glow_blur_bias_smother_bloomer( source_tex, co, pixel_glowed, bias);
}
void main() {
if (DO_IN_GLOW == 0.0) return;
vec3 pixel_glowed;
if ( DO_SHIFT_RGB + DO_SAT_BLEED > 0.0)
pixel_glowed = pixel_glow(shift_and_bleed_pass, IN_GLOW_WH,IN_GLOW_WH,IN_GLOW_POWER,IN_GLOW_GAMMA,vTexCoord, params.OutputSize, params.OutputSize).rgb;
else if (DO_FXAA > 0.0)
pixel_glowed = pixel_glow(FXAA_pass, IN_GLOW_WH,IN_GLOW_WH,IN_GLOW_POWER,IN_GLOW_GAMMA,vTexCoord, params.OutputSize, params.OutputSize).rgb;
else
pixel_glowed = pixel_glow(first_pass, IN_GLOW_WH,IN_GLOW_WH,IN_GLOW_POWER,IN_GLOW_GAMMA,vTexCoord, params.OutputSize, params.OutputSize).rgb;
if ( DO_SHIFT_RGB + DO_SAT_BLEED > 0.0) {
pixel_glowed = pixel_glow(shift_and_bleed_pass, IN_GLOW_W, IN_GLOW_H, IN_GLOW_POWER, IN_GLOW_GAMMA, vTexCoord, params.OutputSize, params.OutputSize).rgb;
if (IN_GLOW_BIAS < IN_GLOW_BIAS_MAX && (IN_GLOW_W < GLOW_SHARP_MAX || IN_GLOW_H < GLOW_SHARP_MAX) )
pixel_glowed = glow_blur_bias(shift_and_bleed_pass, vTexCoord, pixel_glowed, IN_GLOW_BIAS);
}
else if (DO_FXAA > 0.0) {
pixel_glowed = pixel_glow(FXAA_pass, IN_GLOW_W, IN_GLOW_H, IN_GLOW_POWER, IN_GLOW_GAMMA, vTexCoord, params.OutputSize, params.OutputSize).rgb;
if (IN_GLOW_BIAS < IN_GLOW_BIAS_MAX && (IN_GLOW_W < GLOW_SHARP_MAX || IN_GLOW_H < GLOW_SHARP_MAX) )
pixel_glowed = glow_blur_bias(FXAA_pass, vTexCoord, pixel_glowed, IN_GLOW_BIAS);
}
else {
pixel_glowed = pixel_glow(first_pass, IN_GLOW_W, IN_GLOW_H, IN_GLOW_POWER, IN_GLOW_GAMMA, vTexCoord, params.OutputSize, params.OutputSize).rgb;
if (IN_GLOW_BIAS < IN_GLOW_BIAS_MAX && (IN_GLOW_W < GLOW_SHARP_MAX || IN_GLOW_H < GLOW_SHARP_MAX) )
pixel_glowed = glow_blur_bias(first_pass, vTexCoord, pixel_glowed, IN_GLOW_BIAS);
}
FragColor = vec4((pixel_glowed),1.0);
}

View file

@ -1,5 +1,4 @@
#define alpha_mark 0.1
#define pi 3.141592654
vec3 pixel_push_luminance(vec3 c, float strength) {
//if (strength == 0.0) return c; //lighter without the check.
@ -200,11 +199,10 @@ float random(float power, vec2 seed) {
if (ASPECT_X == -3) return 1.143; // 8/7 snes
if (ASPECT_X == -4) return 1.428; // 10/7 megadrive
if (ASPECT_X == -5) return params.OriginalSize.x/params.OriginalSize.y; //uncorrected
if (ASPECT_X == -6) return 0.75; // 3/4, pre-rotated (TATE) 1.33 games.
if (ASPECT_X == 0) {
return 1.3333333333333; //all mame games, not rotated
}
return ASPECT_X / ASPECT_Y ;
}

View file

@ -1,871 +1,19 @@
//Those functions will sample from source texture (the previous), but with a precision taken from passthrough_passSize.
//This is needed because the source texture has been scaled up to the dimension of the viewport to allow
//the scanlines to be linear filtered.
/*
#include "pows.include.slang"
vec4 pixel_glow_gamma_1(sampler2D in_texture, float my_glowpix, float my_glowpixy, float my_glow, vec2 coords, vec4 SourceSize1, vec4 SourceSize2) {
// Calculating texel coordinates
vec2 tex = coords.xy * 1.00001;
// vec4 SourceSize1 = params.SourceSize;
vec2 OGL2Pos = tex * SourceSize2.xy - vec2(0.5,0.5); // vec2 OGL2Pos = tex * SourceSize1.xy - vec2(0.5,0.5);
vec2 fp = fract(OGL2Pos);
vec2 dx = vec2(SourceSize1.z,0.0) ; // vec2 dx = vec2(params.passthrough_and_cc_passSize.z,0.0) ; //
vec2 dy = vec2(0.0,SourceSize1.w) ; // vec2 dy = vec2(0.0,params.passthrough_and_cc_passSize.w); //
vec2 pC4 = (floor(OGL2Pos) + vec2(0.5)) * SourceSize2.zw;
vec2 x2 = 2.0*dx; vec2 x3 = 3.0*dx;
vec2 y2 = 2.0*dy;
my_glowpix = my_glowpix / scalemod_x * 2 ; // <-- Make it not dependant on the input resolution.
my_glowpixy = my_glowpixy / scalemod_y *2 ;
float wl3 = 2.0 + fp.x; wl3*=wl3; wl3 = exp2(-my_glowpix*wl3);
float wl2 = 1.0 + fp.x; wl2*=wl2; wl2 = exp2(-my_glowpix*wl2);
float wl1 = fp.x; wl1*=wl1; wl1 = exp2(-my_glowpix*wl1);
float wr1 = 1.0 - fp.x; wr1*=wr1; wr1 = exp2(-my_glowpix*wr1);
float wr2 = 2.0 - fp.x; wr2*=wr2; wr2 = exp2(-my_glowpix*wr2);
float wr3 = 3.0 - fp.x; wr3*=wr3; wr3 = exp2(-my_glowpix*wr3);
float wt = 1.0/(wl3+wl2+wl1+wr1+wr2+wr3);
vec3 l3 = texture(in_texture, pC4 -x2 ).rgb;
vec3 l2 = texture(in_texture, pC4 -dx ).rgb;
vec3 l1 = texture(in_texture, pC4 ).rgb;
vec3 r1 = texture(in_texture, pC4 +dx ).rgb;
vec3 r2 = texture(in_texture, pC4 +x2 ).rgb;
vec3 r3 = texture(in_texture, pC4 +x3 ).rgb;
vec3 t1 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt;
l3 = texture(in_texture, pC4 -x2 -dy).rgb;
l2 = texture(in_texture, pC4 -dx -dy).rgb;
l1 = texture(in_texture, pC4 -dy).rgb;
r1 = texture(in_texture, pC4 +dx -dy).rgb;
r2 = texture(in_texture, pC4 +x2 -dy).rgb;
r3 = texture(in_texture, pC4 +x3 -dy).rgb;
vec3 t2 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt;
l3 = texture(in_texture, pC4 -x2 +dy).rgb;
l2 = texture(in_texture, pC4 -dx +dy).rgb;
l1 = texture(in_texture, pC4 +dy).rgb;
r1 = texture(in_texture, pC4 +dx +dy).rgb;
r2 = texture(in_texture, pC4 +x2 +dy).rgb;
r3 = texture(in_texture, pC4 +x3 +dy).rgb;
vec3 b1 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt;
l3 = texture(in_texture, pC4 -x2 +y2).rgb;
l2 = texture(in_texture, pC4 -dx +y2).rgb;
l1 = texture(in_texture, pC4 +y2).rgb;
r1 = texture(in_texture, pC4 +dx +y2).rgb;
r2 = texture(in_texture, pC4 +x2 +y2).rgb;
r3 = texture(in_texture, pC4 +x3 +y2).rgb;
vec3 b2 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt;
wl2 = 1.0 + fp.y; wl2*=wl2; wl2 = exp2(-my_glowpixy*wl2);
wl1 = fp.y; wl1*=wl1; wl1 = exp2(-my_glowpixy*wl1);
wr1 = 1.0 - fp.y; wr1*=wr1; wr1 = exp2(-my_glowpixy*wr1);
wr2 = 2.0 - fp.y; wr2*=wr2; wr2 = exp2(-my_glowpixy*wr2);
wt = 1.0/(wl2+wl1+wr1+wr2);
vec3 Bloom = (t2*wl2 + t1*wl1 + b1*wr1 + b2*wr2)*wt;
return vec4(Bloom*my_glow,1.0);
vec3 diff_weight(vec3 v1, vec3 ref, float bias) {
float v1_lum = max(max(v1.r, v1.g), v1.b);
float ref_lum = max(max(ref.r, ref.g), ref.b);
v1_lum=clamp(v1_lum,0.0,1.0);
ref_lum=clamp(ref_lum,0.0,1.0);
float g_mix = v1_lum - ref_lum;
g_mix += IN_GLOW_BIAS ;
g_mix = clamp(g_mix, 0.0, 1.0);
return mix(ref, v1, g_mix);
}
vec4 pixel_glow_gamma_2(sampler2D in_texture, float my_glowpix, float my_glowpixy, float my_glow, vec2 coords, vec4 SourceSize1, vec4 SourceSize2) {
// Calculating texel coordinates
vec2 tex = coords.xy * 1.00001;
// vec4 SourceSize1 = params.SourceSize;
vec2 OGL2Pos = tex * SourceSize2.xy - vec2(0.5,0.5); // vec2 OGL2Pos = tex * SourceSize1.xy - vec2(0.5,0.5);
vec2 fp = fract(OGL2Pos);
vec2 dx = vec2(SourceSize1.z,0.0) ; // vec2 dx = vec2(params.passthrough_and_cc_passSize.z,0.0) ; //
vec2 dy = vec2(0.0,SourceSize1.w) ; // vec2 dy = vec2(0.0,params.passthrough_and_cc_passSize.w); //
vec2 pC4 = (floor(OGL2Pos) + vec2(0.5)) * SourceSize2.zw;
vec2 x2 = 2.0*dx; vec2 x3 = 3.0*dx;
vec2 y2 = 2.0*dy;
my_glowpix = my_glowpix / scalemod_x * 2 ; // <-- Make it not dependant on the input resolution.
my_glowpixy = my_glowpixy / scalemod_y *2 ;
float wl3 = 2.0 + fp.x; wl3*=wl3; wl3 = exp2(-my_glowpix*wl3);
float wl2 = 1.0 + fp.x; wl2*=wl2; wl2 = exp2(-my_glowpix*wl2);
float wl1 = fp.x; wl1*=wl1; wl1 = exp2(-my_glowpix*wl1);
float wr1 = 1.0 - fp.x; wr1*=wr1; wr1 = exp2(-my_glowpix*wr1);
float wr2 = 2.0 - fp.x; wr2*=wr2; wr2 = exp2(-my_glowpix*wr2);
float wr3 = 3.0 - fp.x; wr3*=wr3; wr3 = exp2(-my_glowpix*wr3);
float wt = 1.0/(wl3+wl2+wl1+wr1+wr2+wr3);
vec3 l3 = texture(in_texture, pC4 -x2 ).rgb;
vec3 l2 = texture(in_texture, pC4 -dx ).rgb;
vec3 l1 = texture(in_texture, pC4 ).rgb;
vec3 r1 = texture(in_texture, pC4 +dx ).rgb;
vec3 r2 = texture(in_texture, pC4 +x2 ).rgb;
vec3 r3 = texture(in_texture, pC4 +x3 ).rgb;
l3*=l3; l2*=l2; l1*=l1;
r1*=r1; r2*=r2; r3*=r3;
vec3 t1 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt;
l3 = texture(in_texture, pC4 -x2 -dy).rgb;
l2 = texture(in_texture, pC4 -dx -dy).rgb;
l1 = texture(in_texture, pC4 -dy).rgb;
r1 = texture(in_texture, pC4 +dx -dy).rgb;
r2 = texture(in_texture, pC4 +x2 -dy).rgb;
r3 = texture(in_texture, pC4 +x3 -dy).rgb;
l3*=l3; l2*=l2; l1*=l1;
r1*=r1; r2*=r2; r3*=r3;
vec3 t2 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt;
l3 = texture(in_texture, pC4 -x2 +dy).rgb;
l2 = texture(in_texture, pC4 -dx +dy).rgb;
l1 = texture(in_texture, pC4 +dy).rgb;
r1 = texture(in_texture, pC4 +dx +dy).rgb;
r2 = texture(in_texture, pC4 +x2 +dy).rgb;
r3 = texture(in_texture, pC4 +x3 +dy).rgb;
l3*=l3; l2*=l2; l1*=l1;
r1*=r1; r2*=r2; r3*=r3;
vec3 b1 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt;
l3 = texture(in_texture, pC4 -x2 +y2).rgb;
l2 = texture(in_texture, pC4 -dx +y2).rgb;
l1 = texture(in_texture, pC4 +y2).rgb;
r1 = texture(in_texture, pC4 +dx +y2).rgb;
r2 = texture(in_texture, pC4 +x2 +y2).rgb;
r3 = texture(in_texture, pC4 +x3 +y2).rgb;
l3*=l3; l2*=l2; l1*=l1;
r1*=r1; r2*=r2; r3*=r3;
vec3 b2 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt;
wl2 = 1.0 + fp.y; wl2*=wl2; wl2 = exp2(-my_glowpixy*wl2);
wl1 = fp.y; wl1*=wl1; wl1 = exp2(-my_glowpixy*wl1);
wr1 = 1.0 - fp.y; wr1*=wr1; wr1 = exp2(-my_glowpixy*wr1);
wr2 = 2.0 - fp.y; wr2*=wr2; wr2 = exp2(-my_glowpixy*wr2);
wt = 1.0/(wl2+wl1+wr1+wr2);
vec3 Bloom = (t2*wl2 + t1*wl1 + b1*wr1 + b2*wr2)*wt;
return vec4(Bloom*my_glow,1.0);
}
vec4 pixel_glow_gamma_3(sampler2D in_texture, float my_glowpix, float my_glowpixy, float my_glow, vec2 coords, vec4 SourceSize1, vec4 SourceSize2) {
// Calculating texel coordinates
vec2 tex = coords.xy * 1.00001;
// vec4 SourceSize1 = params.SourceSize;
vec2 OGL2Pos = tex * SourceSize2.xy - vec2(0.5,0.5); // vec2 OGL2Pos = tex * SourceSize1.xy - vec2(0.5,0.5);
vec2 fp = fract(OGL2Pos);
vec2 dx = vec2(SourceSize1.z,0.0) ; // vec2 dx = vec2(params.passthrough_and_cc_passSize.z,0.0) ; //
vec2 dy = vec2(0.0,SourceSize1.w) ; // vec2 dy = vec2(0.0,params.passthrough_and_cc_passSize.w); //
vec2 pC4 = (floor(OGL2Pos) + vec2(0.5)) * SourceSize2.zw;
vec2 x2 = 2.0*dx; vec2 x3 = 3.0*dx;
vec2 y2 = 2.0*dy;
my_glowpix = my_glowpix / scalemod_x * 2 ; // <-- Make it not dependant on the input resolution.
my_glowpixy = my_glowpixy / scalemod_y *2 ;
float wl3 = 2.0 + fp.x; wl3*=wl3; wl3 = exp2(-my_glowpix*wl3);
float wl2 = 1.0 + fp.x; wl2*=wl2; wl2 = exp2(-my_glowpix*wl2);
float wl1 = fp.x; wl1*=wl1; wl1 = exp2(-my_glowpix*wl1);
float wr1 = 1.0 - fp.x; wr1*=wr1; wr1 = exp2(-my_glowpix*wr1);
float wr2 = 2.0 - fp.x; wr2*=wr2; wr2 = exp2(-my_glowpix*wr2);
float wr3 = 3.0 - fp.x; wr3*=wr3; wr3 = exp2(-my_glowpix*wr3);
float wt = 1.0/(wl3+wl2+wl1+wr1+wr2+wr3);
vec3 l3 = texture(in_texture, pC4 -x2 ).rgb;
vec3 l2 = texture(in_texture, pC4 -dx ).rgb;
vec3 l1 = texture(in_texture, pC4 ).rgb;
vec3 r1 = texture(in_texture, pC4 +dx ).rgb;
vec3 r2 = texture(in_texture, pC4 +x2 ).rgb;
vec3 r3 = texture(in_texture, pC4 +x3 ).rgb;
l3=pow_3(l3); l2=pow_3(l2); l1=pow_3(l1);
r1=pow_3(r1); r2=pow_3(r2); r3=pow_3(r3);
vec3 t1 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt;
l3 = texture(in_texture, pC4 -x2 -dy).rgb;
l2 = texture(in_texture, pC4 -dx -dy).rgb;
l1 = texture(in_texture, pC4 -dy).rgb;
r1 = texture(in_texture, pC4 +dx -dy).rgb;
r2 = texture(in_texture, pC4 +x2 -dy).rgb;
r3 = texture(in_texture, pC4 +x3 -dy).rgb;
l3=pow_3(l3); l2=pow_3(l2); l1=pow_3(l1);
r1=pow_3(r1); r2=pow_3(r2); r3=pow_3(r3);
vec3 t2 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt;
l3 = texture(in_texture, pC4 -x2 +dy).rgb;
l2 = texture(in_texture, pC4 -dx +dy).rgb;
l1 = texture(in_texture, pC4 +dy).rgb;
r1 = texture(in_texture, pC4 +dx +dy).rgb;
r2 = texture(in_texture, pC4 +x2 +dy).rgb;
r3 = texture(in_texture, pC4 +x3 +dy).rgb;
l3=pow_3(l3); l2=pow_3(l2); l1=pow_3(l1);
r1=pow_3(r1); r2=pow_3(r2); r3=pow_3(r3);
vec3 b1 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt;
l3 = texture(in_texture, pC4 -x2 +y2).rgb;
l2 = texture(in_texture, pC4 -dx +y2).rgb;
l1 = texture(in_texture, pC4 +y2).rgb;
r1 = texture(in_texture, pC4 +dx +y2).rgb;
r2 = texture(in_texture, pC4 +x2 +y2).rgb;
r3 = texture(in_texture, pC4 +x3 +y2).rgb;
l3=pow_3(l3); l2=pow_3(l2); l1=pow_3(l1);
r1=pow_3(r1); r2=pow_3(r2); r3=pow_3(r3);
vec3 b2 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt;
wl2 = 1.0 + fp.y; wl2*=wl2; wl2 = exp2(-my_glowpixy*wl2);
wl1 = fp.y; wl1*=wl1; wl1 = exp2(-my_glowpixy*wl1);
wr1 = 1.0 - fp.y; wr1*=wr1; wr1 = exp2(-my_glowpixy*wr1);
wr2 = 2.0 - fp.y; wr2*=wr2; wr2 = exp2(-my_glowpixy*wr2);
wt = 1.0/(wl2+wl1+wr1+wr2);
vec3 Bloom = (t2*wl2 + t1*wl1 + b1*wr1 + b2*wr2)*wt;
return vec4(Bloom*my_glow,1.0);
}
vec4 pixel_glow_gamma_4(sampler2D in_texture, float my_glowpix, float my_glowpixy, float my_glow, vec2 coords, vec4 SourceSize1, vec4 SourceSize2) {
// Calculating texel coordinates
vec2 tex = coords.xy * 1.00001;
// vec4 SourceSize1 = params.SourceSize;
vec2 OGL2Pos = tex * SourceSize2.xy - vec2(0.5,0.5); // vec2 OGL2Pos = tex * SourceSize1.xy - vec2(0.5,0.5);
vec2 fp = fract(OGL2Pos);
vec2 dx = vec2(SourceSize1.z,0.0) ; // vec2 dx = vec2(params.passthrough_and_cc_passSize.z,0.0) ; //
vec2 dy = vec2(0.0,SourceSize1.w) ; // vec2 dy = vec2(0.0,params.passthrough_and_cc_passSize.w); //
vec2 pC4 = (floor(OGL2Pos) + vec2(0.5)) * SourceSize2.zw;
vec2 x2 = 2.0*dx; vec2 x3 = 3.0*dx;
vec2 y2 = 2.0*dy;
my_glowpix = my_glowpix / scalemod_x * 2 ; // <-- Make it not dependant on the input resolution.
my_glowpixy = my_glowpixy / scalemod_y *2 ;
float wl3 = 2.0 + fp.x; wl3*=wl3; wl3 = exp2(-my_glowpix*wl3);
float wl2 = 1.0 + fp.x; wl2*=wl2; wl2 = exp2(-my_glowpix*wl2);
float wl1 = fp.x; wl1*=wl1; wl1 = exp2(-my_glowpix*wl1);
float wr1 = 1.0 - fp.x; wr1*=wr1; wr1 = exp2(-my_glowpix*wr1);
float wr2 = 2.0 - fp.x; wr2*=wr2; wr2 = exp2(-my_glowpix*wr2);
float wr3 = 3.0 - fp.x; wr3*=wr3; wr3 = exp2(-my_glowpix*wr3);
float wt = 1.0/(wl3+wl2+wl1+wr1+wr2+wr3);
vec3 l3 = texture(in_texture, pC4 -x2 ).rgb;
vec3 l2 = texture(in_texture, pC4 -dx ).rgb;
vec3 l1 = texture(in_texture, pC4 ).rgb;
vec3 r1 = texture(in_texture, pC4 +dx ).rgb;
vec3 r2 = texture(in_texture, pC4 +x2 ).rgb;
vec3 r3 = texture(in_texture, pC4 +x3 ).rgb;
l3=pow_4(l3); l2=pow_4(l2); l1=pow_4(l1);
r1=pow_4(r1); r2=pow_4(r2); r3=pow_4(r3);
vec3 t1 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt;
l3 = texture(in_texture, pC4 -x2 -dy).rgb;
l2 = texture(in_texture, pC4 -dx -dy).rgb;
l1 = texture(in_texture, pC4 -dy).rgb;
r1 = texture(in_texture, pC4 +dx -dy).rgb;
r2 = texture(in_texture, pC4 +x2 -dy).rgb;
r3 = texture(in_texture, pC4 +x3 -dy).rgb;
l3=pow_4(l3); l2=pow_4(l2); l1=pow_4(l1);
r1=pow_4(r1); r2=pow_4(r2); r3=pow_4(r3);
vec3 t2 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt;
l3 = texture(in_texture, pC4 -x2 +dy).rgb;
l2 = texture(in_texture, pC4 -dx +dy).rgb;
l1 = texture(in_texture, pC4 +dy).rgb;
r1 = texture(in_texture, pC4 +dx +dy).rgb;
r2 = texture(in_texture, pC4 +x2 +dy).rgb;
r3 = texture(in_texture, pC4 +x3 +dy).rgb;
l3=pow_4(l3); l2=pow_4(l2); l1=pow_4(l1);
r1=pow_4(r1); r2=pow_4(r2); r3=pow_4(r3);
vec3 b1 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt;
l3 = texture(in_texture, pC4 -x2 +y2).rgb;
l2 = texture(in_texture, pC4 -dx +y2).rgb;
l1 = texture(in_texture, pC4 +y2).rgb;
r1 = texture(in_texture, pC4 +dx +y2).rgb;
r2 = texture(in_texture, pC4 +x2 +y2).rgb;
r3 = texture(in_texture, pC4 +x3 +y2).rgb;
l3=pow_4(l3); l2=pow_4(l2); l1=pow_4(l1);
r1=pow_4(r1); r2=pow_4(r2); r3=pow_4(r3);
vec3 b2 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt;
wl2 = 1.0 + fp.y; wl2*=wl2; wl2 = exp2(-my_glowpixy*wl2);
wl1 = fp.y; wl1*=wl1; wl1 = exp2(-my_glowpixy*wl1);
wr1 = 1.0 - fp.y; wr1*=wr1; wr1 = exp2(-my_glowpixy*wr1);
wr2 = 2.0 - fp.y; wr2*=wr2; wr2 = exp2(-my_glowpixy*wr2);
wt = 1.0/(wl2+wl1+wr1+wr2);
vec3 Bloom = (t2*wl2 + t1*wl1 + b1*wr1 + b2*wr2)*wt;
return vec4(Bloom*my_glow,1.0);
}
vec4 pixel_glow_gamma_5(sampler2D in_texture, float my_glowpix, float my_glowpixy, float my_glow, vec2 coords, vec4 SourceSize1, vec4 SourceSize2) {
// Calculating texel coordinates
vec2 tex = coords.xy * 1.00001;
// vec4 SourceSize1 = params.SourceSize;
vec2 OGL2Pos = tex * SourceSize2.xy - vec2(0.5,0.5); // vec2 OGL2Pos = tex * SourceSize1.xy - vec2(0.5,0.5);
vec2 fp = fract(OGL2Pos);
vec2 dx = vec2(SourceSize1.z,0.0) ; // vec2 dx = vec2(params.passthrough_and_cc_passSize.z,0.0) ; //
vec2 dy = vec2(0.0,SourceSize1.w) ; // vec2 dy = vec2(0.0,params.passthrough_and_cc_passSize.w); //
vec2 pC4 = (floor(OGL2Pos) + vec2(0.5)) * SourceSize2.zw;
vec2 x2 = 2.0*dx; vec2 x3 = 3.0*dx;
vec2 y2 = 2.0*dy;
my_glowpix = my_glowpix / scalemod_x * 2 ; // <-- Make it not dependant on the input resolution.
my_glowpixy = my_glowpixy / scalemod_y *2 ;
float wl3 = 2.0 + fp.x; wl3*=wl3; wl3 = exp2(-my_glowpix*wl3);
float wl2 = 1.0 + fp.x; wl2*=wl2; wl2 = exp2(-my_glowpix*wl2);
float wl1 = fp.x; wl1*=wl1; wl1 = exp2(-my_glowpix*wl1);
float wr1 = 1.0 - fp.x; wr1*=wr1; wr1 = exp2(-my_glowpix*wr1);
float wr2 = 2.0 - fp.x; wr2*=wr2; wr2 = exp2(-my_glowpix*wr2);
float wr3 = 3.0 - fp.x; wr3*=wr3; wr3 = exp2(-my_glowpix*wr3);
float wt = 1.0/(wl3+wl2+wl1+wr1+wr2+wr3);
vec3 l3 = texture(in_texture, pC4 -x2 ).rgb;
vec3 l2 = texture(in_texture, pC4 -dx ).rgb;
vec3 l1 = texture(in_texture, pC4 ).rgb;
vec3 r1 = texture(in_texture, pC4 +dx ).rgb;
vec3 r2 = texture(in_texture, pC4 +x2 ).rgb;
vec3 r3 = texture(in_texture, pC4 +x3 ).rgb;
l3=pow_5(l3); l2=pow_5(l2); l1=pow_5(l1);
r1=pow_5(r1); r2=pow_5(r2); r3=pow_5(r3);
vec3 t1 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt;
l3 = texture(in_texture, pC4 -x2 -dy).rgb;
l2 = texture(in_texture, pC4 -dx -dy).rgb;
l1 = texture(in_texture, pC4 -dy).rgb;
r1 = texture(in_texture, pC4 +dx -dy).rgb;
r2 = texture(in_texture, pC4 +x2 -dy).rgb;
r3 = texture(in_texture, pC4 +x3 -dy).rgb;
l3=pow_5(l3); l2=pow_5(l2); l1=pow_5(l1);
r1=pow_5(r1); r2=pow_5(r2); r3=pow_5(r3);
vec3 t2 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt;
l3 = texture(in_texture, pC4 -x2 +dy).rgb;
l2 = texture(in_texture, pC4 -dx +dy).rgb;
l1 = texture(in_texture, pC4 +dy).rgb;
r1 = texture(in_texture, pC4 +dx +dy).rgb;
r2 = texture(in_texture, pC4 +x2 +dy).rgb;
r3 = texture(in_texture, pC4 +x3 +dy).rgb;
l3=pow_5(l3); l2=pow_5(l2); l1=pow_5(l1);
r1=pow_5(r1); r2=pow_5(r2); r3=pow_5(r3);
vec3 b1 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt;
l3 = texture(in_texture, pC4 -x2 +y2).rgb;
l2 = texture(in_texture, pC4 -dx +y2).rgb;
l1 = texture(in_texture, pC4 +y2).rgb;
r1 = texture(in_texture, pC4 +dx +y2).rgb;
r2 = texture(in_texture, pC4 +x2 +y2).rgb;
r3 = texture(in_texture, pC4 +x3 +y2).rgb;
l3=pow_5(l3); l2=pow_5(l2); l1=pow_5(l1);
r1=pow_5(r1); r2=pow_5(r2); r3=pow_5(r3);
vec3 b2 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt;
wl2 = 1.0 + fp.y; wl2*=wl2; wl2 = exp2(-my_glowpixy*wl2);
wl1 = fp.y; wl1*=wl1; wl1 = exp2(-my_glowpixy*wl1);
wr1 = 1.0 - fp.y; wr1*=wr1; wr1 = exp2(-my_glowpixy*wr1);
wr2 = 2.0 - fp.y; wr2*=wr2; wr2 = exp2(-my_glowpixy*wr2);
wt = 1.0/(wl2+wl1+wr1+wr2);
vec3 Bloom = (t2*wl2 + t1*wl1 + b1*wr1 + b2*wr2)*wt;
return vec4(Bloom*my_glow,1.0);
}
vec4 pixel_glow_gamma_6(sampler2D in_texture, float my_glowpix, float my_glowpixy, float my_glow, vec2 coords, vec4 SourceSize1, vec4 SourceSize2) {
// Calculating texel coordinates
vec2 tex = coords.xy * 1.00001;
// vec4 SourceSize1 = params.SourceSize;
vec2 OGL2Pos = tex * SourceSize2.xy - vec2(0.5,0.5); // vec2 OGL2Pos = tex * SourceSize1.xy - vec2(0.5,0.5);
vec2 fp = fract(OGL2Pos);
vec2 dx = vec2(SourceSize1.z,0.0) ; // vec2 dx = vec2(params.passthrough_and_cc_passSize.z,0.0) ; //
vec2 dy = vec2(0.0,SourceSize1.w) ; // vec2 dy = vec2(0.0,params.passthrough_and_cc_passSize.w); //
vec2 pC4 = (floor(OGL2Pos) + vec2(0.5)) * SourceSize2.zw;
vec2 x2 = 2.0*dx; vec2 x3 = 3.0*dx;
vec2 y2 = 2.0*dy;
my_glowpix = my_glowpix / scalemod_x * 2 ; // <-- Make it not dependant on the input resolution.
my_glowpixy = my_glowpixy / scalemod_y *2 ;
float wl3 = 2.0 + fp.x; wl3*=wl3; wl3 = exp2(-my_glowpix*wl3);
float wl2 = 1.0 + fp.x; wl2*=wl2; wl2 = exp2(-my_glowpix*wl2);
float wl1 = fp.x; wl1*=wl1; wl1 = exp2(-my_glowpix*wl1);
float wr1 = 1.0 - fp.x; wr1*=wr1; wr1 = exp2(-my_glowpix*wr1);
float wr2 = 2.0 - fp.x; wr2*=wr2; wr2 = exp2(-my_glowpix*wr2);
float wr3 = 3.0 - fp.x; wr3*=wr3; wr3 = exp2(-my_glowpix*wr3);
float wt = 1.0/(wl3+wl2+wl1+wr1+wr2+wr3);
vec3 l3 = texture(in_texture, pC4 -x2 ).rgb;
vec3 l2 = texture(in_texture, pC4 -dx ).rgb;
vec3 l1 = texture(in_texture, pC4 ).rgb;
vec3 r1 = texture(in_texture, pC4 +dx ).rgb;
vec3 r2 = texture(in_texture, pC4 +x2 ).rgb;
vec3 r3 = texture(in_texture, pC4 +x3 ).rgb;
l3=pow_6(l3); l2=pow_6(l2); l1=pow_6(l1);
r1=pow_6(r1); r2=pow_6(r2); r3=pow_6(r3);
vec3 t1 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt;
l3 = texture(in_texture, pC4 -x2 -dy).rgb;
l2 = texture(in_texture, pC4 -dx -dy).rgb;
l1 = texture(in_texture, pC4 -dy).rgb;
r1 = texture(in_texture, pC4 +dx -dy).rgb;
r2 = texture(in_texture, pC4 +x2 -dy).rgb;
r3 = texture(in_texture, pC4 +x3 -dy).rgb;
l3=pow_6(l3); l2=pow_6(l2); l1=pow_6(l1);
r1=pow_6(r1); r2=pow_6(r2); r3=pow_6(r3);
vec3 t2 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt;
l3 = texture(in_texture, pC4 -x2 +dy).rgb;
l2 = texture(in_texture, pC4 -dx +dy).rgb;
l1 = texture(in_texture, pC4 +dy).rgb;
r1 = texture(in_texture, pC4 +dx +dy).rgb;
r2 = texture(in_texture, pC4 +x2 +dy).rgb;
r3 = texture(in_texture, pC4 +x3 +dy).rgb;
l3=pow_6(l3); l2=pow_6(l2); l1=pow_6(l1);
r1=pow_6(r1); r2=pow_6(r2); r3=pow_6(r3);
vec3 b1 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt;
l3 = texture(in_texture, pC4 -x2 +y2).rgb;
l2 = texture(in_texture, pC4 -dx +y2).rgb;
l1 = texture(in_texture, pC4 +y2).rgb;
r1 = texture(in_texture, pC4 +dx +y2).rgb;
r2 = texture(in_texture, pC4 +x2 +y2).rgb;
r3 = texture(in_texture, pC4 +x3 +y2).rgb;
l3=pow_6(l3); l2=pow_6(l2); l1=pow_6(l1);
r1=pow_6(r1); r2=pow_6(r2); r3=pow_6(r3);
vec3 b2 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt;
wl2 = 1.0 + fp.y; wl2*=wl2; wl2 = exp2(-my_glowpixy*wl2);
wl1 = fp.y; wl1*=wl1; wl1 = exp2(-my_glowpixy*wl1);
wr1 = 1.0 - fp.y; wr1*=wr1; wr1 = exp2(-my_glowpixy*wr1);
wr2 = 2.0 - fp.y; wr2*=wr2; wr2 = exp2(-my_glowpixy*wr2);
wt = 1.0/(wl2+wl1+wr1+wr2);
vec3 Bloom = (t2*wl2 + t1*wl1 + b1*wr1 + b2*wr2)*wt;
return vec4(Bloom*my_glow,1.0);
}
vec4 pixel_glow_gamma_7(sampler2D in_texture, float my_glowpix, float my_glowpixy, float my_glow, vec2 coords, vec4 SourceSize1, vec4 SourceSize2) {
// Calculating texel coordinates
vec2 tex = coords.xy * 1.00001;
// vec4 SourceSize1 = params.SourceSize;
vec2 OGL2Pos = tex * SourceSize2.xy - vec2(0.5,0.5); // vec2 OGL2Pos = tex * SourceSize1.xy - vec2(0.5,0.5);
vec2 fp = fract(OGL2Pos);
vec2 dx = vec2(SourceSize1.z,0.0) ; // vec2 dx = vec2(params.passthrough_and_cc_passSize.z,0.0) ; //
vec2 dy = vec2(0.0,SourceSize1.w) ; // vec2 dy = vec2(0.0,params.passthrough_and_cc_passSize.w); //
vec2 pC4 = (floor(OGL2Pos) + vec2(0.5)) * SourceSize2.zw;
vec2 x2 = 2.0*dx; vec2 x3 = 3.0*dx;
vec2 y2 = 2.0*dy;
my_glowpix = my_glowpix / scalemod_x * 2 ; // <-- Make it not dependant on the input resolution.
my_glowpixy = my_glowpixy / scalemod_y *2 ;
float wl3 = 2.0 + fp.x; wl3*=wl3; wl3 = exp2(-my_glowpix*wl3);
float wl2 = 1.0 + fp.x; wl2*=wl2; wl2 = exp2(-my_glowpix*wl2);
float wl1 = fp.x; wl1*=wl1; wl1 = exp2(-my_glowpix*wl1);
float wr1 = 1.0 - fp.x; wr1*=wr1; wr1 = exp2(-my_glowpix*wr1);
float wr2 = 2.0 - fp.x; wr2*=wr2; wr2 = exp2(-my_glowpix*wr2);
float wr3 = 3.0 - fp.x; wr3*=wr3; wr3 = exp2(-my_glowpix*wr3);
float wt = 1.0/(wl3+wl2+wl1+wr1+wr2+wr3);
vec3 l3 = texture(in_texture, pC4 -x2 ).rgb;
vec3 l2 = texture(in_texture, pC4 -dx ).rgb;
vec3 l1 = texture(in_texture, pC4 ).rgb;
vec3 r1 = texture(in_texture, pC4 +dx ).rgb;
vec3 r2 = texture(in_texture, pC4 +x2 ).rgb;
vec3 r3 = texture(in_texture, pC4 +x3 ).rgb;
l3=pow_7(l3); l2=pow_7(l2); l1=pow_7(l1);
r1=pow_7(r1); r2=pow_7(r2); r3=pow_7(r3);
vec3 t1 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt;
l3 = texture(in_texture, pC4 -x2 -dy).rgb;
l2 = texture(in_texture, pC4 -dx -dy).rgb;
l1 = texture(in_texture, pC4 -dy).rgb;
r1 = texture(in_texture, pC4 +dx -dy).rgb;
r2 = texture(in_texture, pC4 +x2 -dy).rgb;
r3 = texture(in_texture, pC4 +x3 -dy).rgb;
l3=pow_7(l3); l2=pow_7(l2); l1=pow_7(l1);
r1=pow_7(r1); r2=pow_7(r2); r3=pow_7(r3);
vec3 t2 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt;
l3 = texture(in_texture, pC4 -x2 +dy).rgb;
l2 = texture(in_texture, pC4 -dx +dy).rgb;
l1 = texture(in_texture, pC4 +dy).rgb;
r1 = texture(in_texture, pC4 +dx +dy).rgb;
r2 = texture(in_texture, pC4 +x2 +dy).rgb;
r3 = texture(in_texture, pC4 +x3 +dy).rgb;
l3=pow_7(l3); l2=pow_7(l2); l1=pow_7(l1);
r1=pow_7(r1); r2=pow_7(r2); r3=pow_7(r3);
vec3 b1 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt;
l3 = texture(in_texture, pC4 -x2 +y2).rgb;
l2 = texture(in_texture, pC4 -dx +y2).rgb;
l1 = texture(in_texture, pC4 +y2).rgb;
r1 = texture(in_texture, pC4 +dx +y2).rgb;
r2 = texture(in_texture, pC4 +x2 +y2).rgb;
r3 = texture(in_texture, pC4 +x3 +y2).rgb;
l3=pow_7(l3); l2=pow_7(l2); l1=pow_7(l1);
r1=pow_7(r1); r2=pow_7(r2); r3=pow_7(r3);
vec3 b2 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt;
wl2 = 1.0 + fp.y; wl2*=wl2; wl2 = exp2(-my_glowpixy*wl2);
wl1 = fp.y; wl1*=wl1; wl1 = exp2(-my_glowpixy*wl1);
wr1 = 1.0 - fp.y; wr1*=wr1; wr1 = exp2(-my_glowpixy*wr1);
wr2 = 2.0 - fp.y; wr2*=wr2; wr2 = exp2(-my_glowpixy*wr2);
wt = 1.0/(wl2+wl1+wr1+wr2);
vec3 Bloom = (t2*wl2 + t1*wl1 + b1*wr1 + b2*wr2)*wt;
return vec4(Bloom*my_glow,1.0);
}
vec4 pixel_glow_gamma_8(sampler2D in_texture, float my_glowpix, float my_glowpixy, float my_glow, vec2 coords, vec4 SourceSize1, vec4 SourceSize2) {
// Calculating texel coordinates
vec2 tex = coords.xy * 1.00001;
// vec4 SourceSize1 = params.SourceSize;
vec2 OGL2Pos = tex * SourceSize2.xy - vec2(0.5,0.5); // vec2 OGL2Pos = tex * SourceSize1.xy - vec2(0.5,0.5);
vec2 fp = fract(OGL2Pos);
vec2 dx = vec2(SourceSize1.z,0.0) ; // vec2 dx = vec2(params.passthrough_and_cc_passSize.z,0.0) ; //
vec2 dy = vec2(0.0,SourceSize1.w) ; // vec2 dy = vec2(0.0,params.passthrough_and_cc_passSize.w); //
vec2 pC4 = (floor(OGL2Pos) + vec2(0.5)) * SourceSize2.zw;
vec2 x2 = 2.0*dx; vec2 x3 = 3.0*dx;
vec2 y2 = 2.0*dy;
my_glowpix = my_glowpix / scalemod_x * 2 ; // <-- Make it not dependant on the input resolution.
my_glowpixy = my_glowpixy / scalemod_y *2 ;
float wl3 = 2.0 + fp.x; wl3*=wl3; wl3 = exp2(-my_glowpix*wl3);
float wl2 = 1.0 + fp.x; wl2*=wl2; wl2 = exp2(-my_glowpix*wl2);
float wl1 = fp.x; wl1*=wl1; wl1 = exp2(-my_glowpix*wl1);
float wr1 = 1.0 - fp.x; wr1*=wr1; wr1 = exp2(-my_glowpix*wr1);
float wr2 = 2.0 - fp.x; wr2*=wr2; wr2 = exp2(-my_glowpix*wr2);
float wr3 = 3.0 - fp.x; wr3*=wr3; wr3 = exp2(-my_glowpix*wr3);
float wt = 1.0/(wl3+wl2+wl1+wr1+wr2+wr3);
vec3 l3 = texture(in_texture, pC4 -x2 ).rgb;
vec3 l2 = texture(in_texture, pC4 -dx ).rgb;
vec3 l1 = texture(in_texture, pC4 ).rgb;
vec3 r1 = texture(in_texture, pC4 +dx ).rgb;
vec3 r2 = texture(in_texture, pC4 +x2 ).rgb;
vec3 r3 = texture(in_texture, pC4 +x3 ).rgb;
l3=pow_8(l3); l2=pow_8(l2); l1=pow_8(l1);
r1=pow_8(r1); r2=pow_8(r2); r3=pow_8(r3);
vec3 t1 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt;
l3 = texture(in_texture, pC4 -x2 -dy).rgb;
l2 = texture(in_texture, pC4 -dx -dy).rgb;
l1 = texture(in_texture, pC4 -dy).rgb;
r1 = texture(in_texture, pC4 +dx -dy).rgb;
r2 = texture(in_texture, pC4 +x2 -dy).rgb;
r3 = texture(in_texture, pC4 +x3 -dy).rgb;
l3=pow_8(l3); l2=pow_8(l2); l1=pow_8(l1);
r1=pow_8(r1); r2=pow_8(r2); r3=pow_8(r3);
vec3 t2 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt;
l3 = texture(in_texture, pC4 -x2 +dy).rgb;
l2 = texture(in_texture, pC4 -dx +dy).rgb;
l1 = texture(in_texture, pC4 +dy).rgb;
r1 = texture(in_texture, pC4 +dx +dy).rgb;
r2 = texture(in_texture, pC4 +x2 +dy).rgb;
r3 = texture(in_texture, pC4 +x3 +dy).rgb;
l3=pow_8(l3); l2=pow_8(l2); l1=pow_8(l1);
r1=pow_8(r1); r2=pow_8(r2); r3=pow_8(r3);
vec3 b1 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt;
l3 = texture(in_texture, pC4 -x2 +y2).rgb;
l2 = texture(in_texture, pC4 -dx +y2).rgb;
l1 = texture(in_texture, pC4 +y2).rgb;
r1 = texture(in_texture, pC4 +dx +y2).rgb;
r2 = texture(in_texture, pC4 +x2 +y2).rgb;
r3 = texture(in_texture, pC4 +x3 +y2).rgb;
l3=pow_8(l3); l2=pow_8(l2); l1=pow_8(l1);
r1=pow_8(r1); r2=pow_8(r2); r3=pow_8(r3);
vec3 b2 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt;
wl2 = 1.0 + fp.y; wl2*=wl2; wl2 = exp2(-my_glowpixy*wl2);
wl1 = fp.y; wl1*=wl1; wl1 = exp2(-my_glowpixy*wl1);
wr1 = 1.0 - fp.y; wr1*=wr1; wr1 = exp2(-my_glowpixy*wr1);
wr2 = 2.0 - fp.y; wr2*=wr2; wr2 = exp2(-my_glowpixy*wr2);
wt = 1.0/(wl2+wl1+wr1+wr2);
vec3 Bloom = (t2*wl2 + t1*wl1 + b1*wr1 + b2*wr2)*wt;
return vec4(Bloom*my_glow,1.0);
}
vec4 pixel_glow_gamma_9(sampler2D in_texture, float my_glowpix, float my_glowpixy, float my_glow, vec2 coords, vec4 SourceSize1, vec4 SourceSize2) {
// Calculating texel coordinates
vec2 tex = coords.xy * 1.00001;
// vec4 SourceSize1 = params.SourceSize;
vec2 OGL2Pos = tex * SourceSize2.xy - vec2(0.5,0.5); // vec2 OGL2Pos = tex * SourceSize1.xy - vec2(0.5,0.5);
vec2 fp = fract(OGL2Pos);
vec2 dx = vec2(SourceSize1.z,0.0) ; // vec2 dx = vec2(params.passthrough_and_cc_passSize.z,0.0) ; //
vec2 dy = vec2(0.0,SourceSize1.w) ; // vec2 dy = vec2(0.0,params.passthrough_and_cc_passSize.w); //
vec2 pC4 = (floor(OGL2Pos) + vec2(0.5)) * SourceSize2.zw;
vec2 x2 = 2.0*dx; vec2 x3 = 3.0*dx;
vec2 y2 = 2.0*dy;
my_glowpix = my_glowpix / scalemod_x * 2 ; // <-- Make it not dependant on the input resolution.
my_glowpixy = my_glowpixy / scalemod_y *2 ;
float wl3 = 2.0 + fp.x; wl3*=wl3; wl3 = exp2(-my_glowpix*wl3);
float wl2 = 1.0 + fp.x; wl2*=wl2; wl2 = exp2(-my_glowpix*wl2);
float wl1 = fp.x; wl1*=wl1; wl1 = exp2(-my_glowpix*wl1);
float wr1 = 1.0 - fp.x; wr1*=wr1; wr1 = exp2(-my_glowpix*wr1);
float wr2 = 2.0 - fp.x; wr2*=wr2; wr2 = exp2(-my_glowpix*wr2);
float wr3 = 3.0 - fp.x; wr3*=wr3; wr3 = exp2(-my_glowpix*wr3);
float wt = 1.0/(wl3+wl2+wl1+wr1+wr2+wr3);
vec3 l3 = texture(in_texture, pC4 -x2 ).rgb;
vec3 l2 = texture(in_texture, pC4 -dx ).rgb;
vec3 l1 = texture(in_texture, pC4 ).rgb;
vec3 r1 = texture(in_texture, pC4 +dx ).rgb;
vec3 r2 = texture(in_texture, pC4 +x2 ).rgb;
vec3 r3 = texture(in_texture, pC4 +x3 ).rgb;
l3=pow_9(l3); l2=pow_9(l2); l1=pow_9(l1);
r1=pow_9(r1); r2=pow_9(r2); r3=pow_9(r3);
vec3 t1 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt;
l3 = texture(in_texture, pC4 -x2 -dy).rgb;
l2 = texture(in_texture, pC4 -dx -dy).rgb;
l1 = texture(in_texture, pC4 -dy).rgb;
r1 = texture(in_texture, pC4 +dx -dy).rgb;
r2 = texture(in_texture, pC4 +x2 -dy).rgb;
r3 = texture(in_texture, pC4 +x3 -dy).rgb;
l3=pow_9(l3); l2=pow_9(l2); l1=pow_9(l1);
r1=pow_9(r1); r2=pow_9(r2); r3=pow_9(r3);
vec3 t2 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt;
l3 = texture(in_texture, pC4 -x2 +dy).rgb;
l2 = texture(in_texture, pC4 -dx +dy).rgb;
l1 = texture(in_texture, pC4 +dy).rgb;
r1 = texture(in_texture, pC4 +dx +dy).rgb;
r2 = texture(in_texture, pC4 +x2 +dy).rgb;
r3 = texture(in_texture, pC4 +x3 +dy).rgb;
l3=pow_9(l3); l2=pow_9(l2); l1=pow_9(l1);
r1=pow_9(r1); r2=pow_9(r2); r3=pow_9(r3);
vec3 b1 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt;
l3 = texture(in_texture, pC4 -x2 +y2).rgb;
l2 = texture(in_texture, pC4 -dx +y2).rgb;
l1 = texture(in_texture, pC4 +y2).rgb;
r1 = texture(in_texture, pC4 +dx +y2).rgb;
r2 = texture(in_texture, pC4 +x2 +y2).rgb;
r3 = texture(in_texture, pC4 +x3 +y2).rgb;
l3=pow_9(l3); l2=pow_9(l2); l1=pow_9(l1);
r1=pow_9(r1); r2=pow_9(r2); r3=pow_9(r3);
vec3 b2 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt;
wl2 = 1.0 + fp.y; wl2*=wl2; wl2 = exp2(-my_glowpixy*wl2);
wl1 = fp.y; wl1*=wl1; wl1 = exp2(-my_glowpixy*wl1);
wr1 = 1.0 - fp.y; wr1*=wr1; wr1 = exp2(-my_glowpixy*wr1);
wr2 = 2.0 - fp.y; wr2*=wr2; wr2 = exp2(-my_glowpixy*wr2);
wt = 1.0/(wl2+wl1+wr1+wr2);
vec3 Bloom = (t2*wl2 + t1*wl1 + b1*wr1 + b2*wr2)*wt;
return vec4(Bloom*my_glow,1.0);
}
vec4 pixel_glow_gamma_10(sampler2D in_texture, float my_glowpix, float my_glowpixy, float my_glow, vec2 coords, vec4 SourceSize1, vec4 SourceSize2) {
// Calculating texel coordinates
vec2 tex = coords.xy * 1.00001;
// vec4 SourceSize1 = params.SourceSize;
vec2 OGL2Pos = tex * SourceSize2.xy - vec2(0.5,0.5); // vec2 OGL2Pos = tex * SourceSize1.xy - vec2(0.5,0.5);
vec2 fp = fract(OGL2Pos);
vec2 dx = vec2(SourceSize1.z,0.0) ; // vec2 dx = vec2(params.passthrough_and_cc_passSize.z,0.0) ; //
vec2 dy = vec2(0.0,SourceSize1.w) ; // vec2 dy = vec2(0.0,params.passthrough_and_cc_passSize.w); //
vec2 pC4 = (floor(OGL2Pos) + vec2(0.5)) * SourceSize2.zw;
vec2 x2 = 2.0*dx; vec2 x3 = 3.0*dx;
vec2 y2 = 2.0*dy;
my_glowpix = my_glowpix / scalemod_x * 2 ; // <-- Make it not dependant on the input resolution.
my_glowpixy = my_glowpixy / scalemod_y *2 ;
float wl3 = 2.0 + fp.x; wl3*=wl3; wl3 = exp2(-my_glowpix*wl3);
float wl2 = 1.0 + fp.x; wl2*=wl2; wl2 = exp2(-my_glowpix*wl2);
float wl1 = fp.x; wl1*=wl1; wl1 = exp2(-my_glowpix*wl1);
float wr1 = 1.0 - fp.x; wr1*=wr1; wr1 = exp2(-my_glowpix*wr1);
float wr2 = 2.0 - fp.x; wr2*=wr2; wr2 = exp2(-my_glowpix*wr2);
float wr3 = 3.0 - fp.x; wr3*=wr3; wr3 = exp2(-my_glowpix*wr3);
float wt = 1.0/(wl3+wl2+wl1+wr1+wr2+wr3);
vec3 l3 = texture(in_texture, pC4 -x2 ).rgb;
vec3 l2 = texture(in_texture, pC4 -dx ).rgb;
vec3 l1 = texture(in_texture, pC4 ).rgb;
vec3 r1 = texture(in_texture, pC4 +dx ).rgb;
vec3 r2 = texture(in_texture, pC4 +x2 ).rgb;
vec3 r3 = texture(in_texture, pC4 +x3 ).rgb;
l3=pow_10(l3); l2=pow_10(l2); l1=pow_10(l1);
r1=pow_10(r1); r2=pow_10(r2); r3=pow_10(r3);
vec3 t1 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt;
l3 = texture(in_texture, pC4 -x2 -dy).rgb;
l2 = texture(in_texture, pC4 -dx -dy).rgb;
l1 = texture(in_texture, pC4 -dy).rgb;
r1 = texture(in_texture, pC4 +dx -dy).rgb;
r2 = texture(in_texture, pC4 +x2 -dy).rgb;
r3 = texture(in_texture, pC4 +x3 -dy).rgb;
l3=pow_10(l3); l2=pow_10(l2); l1=pow_10(l1);
r1=pow_10(r1); r2=pow_10(r2); r3=pow_10(r3);
vec3 t2 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt;
l3 = texture(in_texture, pC4 -x2 +dy).rgb;
l2 = texture(in_texture, pC4 -dx +dy).rgb;
l1 = texture(in_texture, pC4 +dy).rgb;
r1 = texture(in_texture, pC4 +dx +dy).rgb;
r2 = texture(in_texture, pC4 +x2 +dy).rgb;
r3 = texture(in_texture, pC4 +x3 +dy).rgb;
l3=pow_10(l3); l2=pow_10(l2); l1=pow_10(l1);
r1=pow_10(r1); r2=pow_10(r2); r3=pow_10(r3);
vec3 b1 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt;
l3 = texture(in_texture, pC4 -x2 +y2).rgb;
l2 = texture(in_texture, pC4 -dx +y2).rgb;
l1 = texture(in_texture, pC4 +y2).rgb;
r1 = texture(in_texture, pC4 +dx +y2).rgb;
r2 = texture(in_texture, pC4 +x2 +y2).rgb;
r3 = texture(in_texture, pC4 +x3 +y2).rgb;
l3=pow_10(l3); l2=pow_10(l2); l1=pow_10(l1);
r1=pow_10(r1); r2=pow_10(r2); r3=pow_10(r3);
vec3 b2 = (l3*wl3 + l2*wl2 + l1*wl1 + r1*wr1 + r2*wr2 + r3*wr3)*wt;
wl2 = 1.0 + fp.y; wl2*=wl2; wl2 = exp2(-my_glowpixy*wl2);
wl1 = fp.y; wl1*=wl1; wl1 = exp2(-my_glowpixy*wl1);
wr1 = 1.0 - fp.y; wr1*=wr1; wr1 = exp2(-my_glowpixy*wr1);
wr2 = 2.0 - fp.y; wr2*=wr2; wr2 = exp2(-my_glowpixy*wr2);
wt = 1.0/(wl2+wl1+wr1+wr2);
vec3 Bloom = (t2*wl2 + t1*wl1 + b1*wr1 + b2*wr2)*wt;
return vec4(Bloom*my_glow,1.0);
}
vec3 blur_v(sampler2D in_texture, float my_glowpixy, vec2 coords, vec4 SourceSize1, vec4 SourceSize2) {
// Calculating texel coordinates
vec2 tex = coords.xy * 1.00001;
vec2 OGL2Pos = tex * SourceSize2.xy - vec2(0.5,0.5);
vec2 fp = fract(OGL2Pos);
vec2 dy = vec2(0.0,SourceSize1.w) ;
vec2 pC4 = (floor(OGL2Pos) + vec2(0.5)) * SourceSize2.zw;
vec2 y2 = 2.0*dy;
my_glowpixy = my_glowpixy / scalemod_y *2 ;
vec3 t1 = texture(in_texture, pC4 ).rgb;
vec3 t2 = texture(in_texture, pC4 -dy).rgb;
vec3 b1 = texture(in_texture, pC4 +dy).rgb;
vec3 b2 = texture(in_texture, pC4 +y2).rgb;
float wl2 = 1.0 + fp.y; wl2*=wl2; wl2 = exp2(-my_glowpixy*wl2);
float wl1 = fp.y; wl1*=wl1; wl1 = exp2(-my_glowpixy*wl1);
float wr1 = 1.0 - fp.y; wr1*=wr1; wr1 = exp2(-my_glowpixy*wr1);
float wr2 = 2.0 - fp.y; wr2*=wr2; wr2 = exp2(-my_glowpixy*wr2);
float wt = 1.0/(wl2+wl1+wr1+wr2);
vec3 smoothed = (t2*wl2 + t1*wl1 + b1*wr1 + b2*wr2)*wt;
return smoothed;
return vec3(1.0);
}
*/
vec4 pixel_glow_std_pow(sampler2D in_texture, float my_glowpix, float my_glowpixy, float my_glow, float glow_gamma, vec2 coords, vec4 SourceSize1, vec4 SourceSize2) {
@ -967,22 +115,6 @@ vec4 pixel_glow(sampler2D in_texture, float my_glowpix, float my_glowpixy, float
return pixel_glow_std_pow(in_texture,my_glowpix,my_glowpixy,my_glow,glow_gamma,coords,SourceSize1, SourceSize2);
//return pixel_glow_my_pow(in_texture,my_glowpix,my_glowpixy,my_glow,glow_gamma,coords,SourceSize1, SourceSize2);
/* if (glow_gamma == 1) { return pixel_glow_gamma_1(in_texture, my_glowpix,my_glowpixy,my_glow,coords,SourceSize1, SourceSize2); }
if (glow_gamma == 2) { return pixel_glow_gamma_2(in_texture, my_glowpix,my_glowpixy,my_glow,coords,SourceSize1, SourceSize2); }
if (glow_gamma == 3) { return pixel_glow_gamma_3(in_texture,my_glowpix,my_glowpixy,my_glow,coords,SourceSize1, SourceSize2); }
if (glow_gamma == 4) { return pixel_glow_gamma_4(in_texture,my_glowpix,my_glowpixy,my_glow,coords,SourceSize1, SourceSize2); }
if (glow_gamma == 5) { return pixel_glow_gamma_5(in_texture,my_glowpix,my_glowpixy,my_glow,coords,SourceSize1, SourceSize2); }
if (glow_gamma == 6) { return pixel_glow_gamma_6(in_texture,my_glowpix,my_glowpixy,my_glow,coords,SourceSize1, SourceSize2); }
if (glow_gamma == 7) { return pixel_glow_gamma_7(in_texture,my_glowpix,my_glowpixy,my_glow,coords,SourceSize1, SourceSize2); }
if (glow_gamma == 8) { return pixel_glow_gamma_8(in_texture,my_glowpix,my_glowpixy,my_glow,coords,SourceSize1, SourceSize2); }
if (glow_gamma == 9) { return pixel_glow_gamma_9(in_texture,my_glowpix,my_glowpixy,my_glow,coords,SourceSize1, SourceSize2); }
if (glow_gamma == 10) { return pixel_glow_gamma_10(in_texture,my_glowpix,my_glowpixy,my_glow,coords,SourceSize1, SourceSize2); }
return pixel_glow_std_pow(in_texture,my_glowpix,my_glowpixy,my_glow,glow_gamma,coords,SourceSize1, SourceSize2);
*/
}

View file

@ -7,11 +7,12 @@ layout(location = 1) in vec2 TexCoord;
layout(location = 0) out vec2 vTexCoord;
void main()
{
#include "includes/functions.include.slang"
void main() {
gl_Position = global.MVP * Position;
vTexCoord = TexCoord;
if (DO_BEZEL > 0.5)
vTexCoord = zoom(vTexCoord, BEZEL_REFL_ZOOM);
}
#pragma stage fragment

Binary file not shown.

Before

Width:  |  Height:  |  Size: 206 KiB

After

Width:  |  Height:  |  Size: 419 KiB

View file

@ -187,40 +187,45 @@ scale_x16 = "1.000000"
scale_type_y16 = "viewport"
scale_y16 = "1.000000"
DO_CCORRECTION = "1.000000"
LUMINANCE = "0.100000"
SATURATION = "1.050000"
TEMPERATURE = "7000.000000"
GAMMA_OUT = "0.550000"
GAMMA_OUT = "0.400000"
DO_FXAA = "1.000000"
DO_SHIFT_RGB = "1.000000"
OFFSET_STRENGTH = "1.000000"
SHIFT_R = "-20.000000"
SHIFT_G = "1.000000"
SHIFT_B = "20.000000"
DO_SAT_BLEED = "1.000000"
SAT_BLEED_PAL = "1.000000"
SAT_BLEED_STRENGTH = "0.500000"
SAT_BLEED_SIZE_LEFT = "3.000000"
SAT_BLEED_SIZE_RIGHT = "3.000000"
DO_SHIFT_RGB = "1.000000"
OFFSET_STRENGTH = "1.000000"
SHIFT_R = "-20.000000"
SHIFT_G = "1.000000"
SHIFT_B = "20.000000"
DO_IN_GLOW = "1.000000"
IN_GLOW_POWER = "1.600000"
IN_GLOW_WH = "3.500000"
IN_GLOW_W = "0.950000"
IN_GLOW_H = "0.950000"
IN_GLOW_GAMMA = "2.000000"
IN_GLOW_BIAS = "0.000000"
DO_VMASK_AND_DARKLINES = "1.000000"
RGB_MASK_STRENGTH = "1.000000"
DARKLINES_STRENGTH = "0.700000"
VMASK_USE_GM = "1.000000"
VMASK_GAP = "1.000000"
DARKLINES_STRENGTH = "0.000000"
DO_HALO = "1.000000"
HALO_POWER = "0.520000"
HALO_W = "3.000000"
HALO_H = "3.000000"
HALO_GAMMA = "1.100000"
DO_SCANLINES = "1.000000"
SCANLINE_DARK = "0.700000"
SCANLINE_COMPENSATION = "0.200000"
SCANLINES_BLEEDING = "1.000000"
SCANLINE_FLICKERING = "0.000000"
SCANLINE_FLICKERING_POWER = "0.500000"
BLOOM_MIX = "0.150000"
BLOOM_SIZE = "1.500000"
BLOOM_POWER = "8.000000"
BLOOM_GAMMA_OUT = "1.200000"
BLOOM_GAMMA_OUT = "2.000000"
DO_CURVATURE = "1.000000"
GEOM_WARP_X = "0.000000"
GEOM_CORNER_SMOOTH = "200.000000"

View file

@ -192,29 +192,31 @@ CONTRAST = "0.050000"
BRIGHTNESS = "0.050000"
TEMPERATURE = "7000.000000"
GAMMA_OUT = "0.560000"
DO_SHIFT_RGB = "1.000000"
OFFSET_STRENGTH = "1.000000"
SHIFT_R = "2.000000"
SHIFT_G = "20.000000"
SHIFT_B = "-2.000000"
DO_NTSC_ARTIFACTS = "1.000000"
DO_SAT_BLEED = "1.000000"
SHIFT_R = "-20.000000"
SHIFT_G = "1.000000"
SHIFT_B = "20.000000"
DO_IN_GLOW = "1.000000"
IN_GLOW_POWER = "1.750000"
IN_GLOW_WH = "1.000000"
IN_GLOW_W = "1.000000"
IN_GLOW_H = "1.000000"
IN_GLOW_GAMMA = "2.000000"
DO_VMASK_AND_DARKLINES = "1.000000"
RGB_MASK_STRENGTH = "1.000000"
VMASK_USE_GM = "1.000000"
VMASK_GAP = "1.000000"
DARKLINES_STRENGTH = "0.700000"
DARKLINES_STRENGTH = "0.000000"
DO_HALO = "1.000000"
HALO_POWER = "0.500000"
HALO_W = "3.500000"
HALO_H = "3.500000"
HALO_GAMMA = "1.150000"
HALO_GAMMA = "1.300000"
HALO_VS_SCAN = "0.800000"
DO_SCANLINES = "1.000000"
SCANLINE_DARK = "0.300000"
SCANLINES_BLEEDING = "0.825000"
SCANLINE_SM_TYPE = "1.000000"
SCANLINE_SM_STRENGTH = "1.000000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.150000"
BLOOM_SIZE = "1.500000"
@ -226,8 +228,8 @@ GEOM_WARP_Y = "0.500000"
GEOM_CORNER_SIZE = "0.005000"
GEOM_CORNER_SMOOTH = "700.000000"
DO_BEZEL = "1.000000"
BEZEL_INNER_ZOOM = "-0.005000"
BEZEL_FRAME_ZOOM = "0.139000"
BEZEL_INNER_ZOOM = "-0.010000"
BEZEL_FRAME_ZOOM = "0.170000"
BEZEL_IMAGE_BORDER = "1.020000"
AMBI_FALLOFF = "0.400000"
AMBI_POWER = "5.000000"

View file

@ -0,0 +1,254 @@
shaders = "17"
shader0 = "shaders/first_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
alias0 = "first_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "2.000000"
scale_type_y0 = "source"
scale_y0 = "2.000000"
shader1 = "shaders/fxaa.slang"
filter_linear1 = "true"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "true"
alias1 = "FXAA_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
scale_x1 = "1.000000"
scale_type_y1 = "source"
scale_y1 = "1.000000"
shader2 = "shaders/shift_and_bleed.slang"
filter_linear2 = "true"
wrap_mode2 = "mirrored_repeat"
mipmap_input2 = "false"
alias2 = "shift_and_bleed_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/in_glow.slang"
filter_linear3 = "true"
wrap_mode3 = "mirrored_repeat"
mipmap_input3 = "false"
alias3 = "in_glow_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/halo.slang"
filter_linear4 = "true"
wrap_mode4 = "mirrored_repeat"
mipmap_input4 = "false"
alias4 = "halo_pass"
float_framebuffer4 = "true"
srgb_framebuffer4 = "false"
scale_type_x4 = "source"
scale_x4 = "1.000000"
scale_type_y4 = "source"
scale_y4 = "1.000000"
shader5 = "shaders/avglum_pass.slang"
filter_linear5 = "true"
wrap_mode5 = "mirrored_repeat"
mipmap_input5 = "false"
alias5 = "avglum_pass"
float_framebuffer5 = "false"
srgb_framebuffer5 = "false"
scale_type_x5 = "source"
scale_x5 = "0.500000"
scale_type_y5 = "source"
scale_y5 = "0.500000"
shader6 = "shaders/reflection_blur_h.slang"
filter_linear6 = "true"
wrap_mode6 = "mirrored_repeat"
mipmap_input6 = "false"
alias6 = "reflected_blurred_pass1"
float_framebuffer6 = "false"
srgb_framebuffer6 = "false"
scale_type_x6 = "source"
scale_x6 = "1.000000"
scale_type_y6 = "source"
scale_y6 = "1.000000"
shader7 = "shaders/reflection_blur_v.slang"
filter_linear7 = "true"
wrap_mode7 = "mirrored_repeat"
mipmap_input7 = "false"
alias7 = "reflected_blurred_pass2"
float_framebuffer7 = "false"
srgb_framebuffer7 = "false"
scale_type_x7 = "source"
scale_x7 = "1.000000"
scale_type_y7 = "source"
scale_y7 = "1.000000"
shader8 = "shaders/bloom_pass_1.slang"
filter_linear8 = "true"
wrap_mode8 = "mirrored_repeat"
mipmap_input8 = "false"
alias8 = "bloom_pass_1"
float_framebuffer8 = "true"
srgb_framebuffer8 = "false"
scale_type_x8 = "source"
scale_x8 = "1.000000"
scale_type_y8 = "source"
scale_y8 = "1.000000"
shader9 = "shaders/bloom_pass_2.slang"
filter_linear9 = "true"
wrap_mode9 = "clamp_to_edge"
mipmap_input9 = "false"
alias9 = "bloom_pass_2"
float_framebuffer9 = "false"
srgb_framebuffer9 = "false"
scale_type_x9 = "source"
scale_x9 = "0.500000"
scale_type_y9 = "source"
scale_y9 = "0.500000"
shader10 = "shaders/bloom_pass_3.slang"
filter_linear10 = "true"
wrap_mode10 = "clamp_to_edge"
mipmap_input10 = "false"
alias10 = "bloom_pass_3"
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_4.slang"
filter_linear11 = "true"
wrap_mode11 = "mirrored_repeat"
mipmap_input11 = "false"
alias11 = "bloom_pass_final"
float_framebuffer11 = "false"
srgb_framebuffer11 = "false"
scale_type_x11 = "source"
scale_x11 = "1.000000"
scale_type_y11 = "source"
scale_y11 = "1.000000"
shader12 = "shaders/ambi_push_pass.slang"
filter_linear12 = "true"
wrap_mode12 = "mirrored_repeat"
mipmap_input12 = "false"
alias12 = "ambi_push_pass"
float_framebuffer12 = "true"
srgb_framebuffer12 = "false"
scale_type_x12 = "source"
scale_x12 = "1.000000"
scale_type_y12 = "source"
scale_y12 = "1.000000"
shader13 = "shaders/ambi_pre_pass.slang"
filter_linear13 = "true"
wrap_mode13 = "clamp_to_border"
mipmap_input13 = "true"
alias13 = "ambi_pre_pass1"
float_framebuffer13 = "false"
srgb_framebuffer13 = "false"
scale_type_x13 = "source"
scale_x13 = "1.000000"
scale_type_y13 = "source"
scale_y13 = "1.000000"
shader14 = "shaders/ambi_temporal_pass.slang"
filter_linear14 = "true"
wrap_mode14 = "clamp_to_border"
mipmap_input14 = "false"
alias14 = "ambi_temporal_pass"
float_framebuffer14 = "true"
srgb_framebuffer14 = "false"
scale_type_x14 = "source"
scale_x14 = "1.000000"
scale_type_y14 = "source"
scale_y14 = "1.000000"
shader15 = "shaders/isrotated.slang"
filter_linear15 = "true"
wrap_mode15 = "mirrored_repeat"
mipmap_input15 = "false"
alias15 = "isrotated_pass"
float_framebuffer15 = "false"
srgb_framebuffer15 = "false"
scale_type_x15 = "viewport"
scale_x15 = "0.100000"
scale_type_y15 = "viewport"
scale_y15 = "0.100000"
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"
LUMINANCE = "0.200000"
CONTRAST = "0.050000"
BRIGHTNESS = "0.050000"
TEMPERATURE = "7000.000000"
GAMMA_OUT = "0.560000"
DO_NTSC_ARTIFACTS = "1.000000"
NTSC_PHASE_SHIFT = "1.000000"
DO_SAT_BLEED = "1.000000"
SHIFT_R = "-20.000000"
SHIFT_G = "1.000000"
SHIFT_B = "20.000000"
DO_IN_GLOW = "1.000000"
IN_GLOW_POWER = "1.750000"
IN_GLOW_W = "1.000000"
IN_GLOW_H = "1.000000"
IN_GLOW_GAMMA = "2.000000"
DO_VMASK_AND_DARKLINES = "1.000000"
RGB_MASK_STRENGTH = "1.000000"
VMASK_USE_GM = "1.000000"
VMASK_GAP = "1.000000"
DARKLINES_STRENGTH = "0.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_DARK = "0.300000"
SCANLINE_SM_TYPE = "1.000000"
SCANLINE_SM_STRENGTH = "1.000000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.150000"
BLOOM_SIZE = "1.500000"
BLOOM_POWER = "8.000000"
BLOOM_GAMMA_OUT = "1.200000"
DO_CURVATURE = "1.000000"
GEOM_WARP_X = "0.500000"
GEOM_WARP_Y = "0.500000"
GEOM_CORNER_SIZE = "0.005000"
GEOM_CORNER_SMOOTH = "700.000000"
DO_BEZEL = "1.000000"
BEZEL_INNER_ZOOM = "-0.010000"
BEZEL_FRAME_ZOOM = "0.170000"
BEZEL_IMAGE_BORDER = "1.020000"
AMBI_FALLOFF = "0.400000"
AMBI_POWER = "5.000000"
DO_VIGNETTE = "1.000000"
V_SIZE = "2.700000"
V_POWER = "1.050000"
DO_SPOT = "1.000000"
S_POSITION = "194.000000"
textures = "monitor_body;bg_under;bg_over"
monitor_body = "textures/monitor_body.png"
monitor_body_linear = "true"
monitor_body_wrap_mode = "clamp_to_edge"
monitor_body_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"

View file

@ -0,0 +1,259 @@
shaders = "17"
shader0 = "shaders/first_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
alias0 = "first_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "2.000000"
scale_type_y0 = "source"
scale_y0 = "2.000000"
shader1 = "shaders/fxaa.slang"
filter_linear1 = "true"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "true"
alias1 = "FXAA_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
scale_x1 = "1.000000"
scale_type_y1 = "source"
scale_y1 = "1.000000"
shader2 = "shaders/shift_and_bleed.slang"
filter_linear2 = "true"
wrap_mode2 = "mirrored_repeat"
mipmap_input2 = "false"
alias2 = "shift_and_bleed_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/in_glow.slang"
filter_linear3 = "true"
wrap_mode3 = "mirrored_repeat"
mipmap_input3 = "false"
alias3 = "in_glow_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/halo.slang"
filter_linear4 = "true"
wrap_mode4 = "mirrored_repeat"
mipmap_input4 = "false"
alias4 = "halo_pass"
float_framebuffer4 = "true"
srgb_framebuffer4 = "false"
scale_type_x4 = "source"
scale_x4 = "1.000000"
scale_type_y4 = "source"
scale_y4 = "1.000000"
shader5 = "shaders/avglum_pass.slang"
filter_linear5 = "true"
wrap_mode5 = "mirrored_repeat"
mipmap_input5 = "false"
alias5 = "avglum_pass"
float_framebuffer5 = "false"
srgb_framebuffer5 = "false"
scale_type_x5 = "source"
scale_x5 = "0.500000"
scale_type_y5 = "source"
scale_y5 = "0.500000"
shader6 = "shaders/reflection_blur_h.slang"
filter_linear6 = "true"
wrap_mode6 = "mirrored_repeat"
mipmap_input6 = "false"
alias6 = "reflected_blurred_pass1"
float_framebuffer6 = "false"
srgb_framebuffer6 = "false"
scale_type_x6 = "source"
scale_x6 = "1.000000"
scale_type_y6 = "source"
scale_y6 = "1.000000"
shader7 = "shaders/reflection_blur_v.slang"
filter_linear7 = "true"
wrap_mode7 = "mirrored_repeat"
mipmap_input7 = "false"
alias7 = "reflected_blurred_pass2"
float_framebuffer7 = "false"
srgb_framebuffer7 = "false"
scale_type_x7 = "source"
scale_x7 = "1.000000"
scale_type_y7 = "source"
scale_y7 = "1.000000"
shader8 = "shaders/bloom_pass_1.slang"
filter_linear8 = "true"
wrap_mode8 = "mirrored_repeat"
mipmap_input8 = "false"
alias8 = "bloom_pass_1"
float_framebuffer8 = "true"
srgb_framebuffer8 = "false"
scale_type_x8 = "source"
scale_x8 = "1.000000"
scale_type_y8 = "source"
scale_y8 = "1.000000"
shader9 = "shaders/bloom_pass_2.slang"
filter_linear9 = "true"
wrap_mode9 = "clamp_to_edge"
mipmap_input9 = "false"
alias9 = "bloom_pass_2"
float_framebuffer9 = "false"
srgb_framebuffer9 = "false"
scale_type_x9 = "source"
scale_x9 = "0.500000"
scale_type_y9 = "source"
scale_y9 = "0.500000"
shader10 = "shaders/bloom_pass_3.slang"
filter_linear10 = "true"
wrap_mode10 = "clamp_to_edge"
mipmap_input10 = "false"
alias10 = "bloom_pass_3"
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_4.slang"
filter_linear11 = "true"
wrap_mode11 = "mirrored_repeat"
mipmap_input11 = "false"
alias11 = "bloom_pass_final"
float_framebuffer11 = "false"
srgb_framebuffer11 = "false"
scale_type_x11 = "source"
scale_x11 = "1.000000"
scale_type_y11 = "source"
scale_y11 = "1.000000"
shader12 = "shaders/ambi_push_pass.slang"
filter_linear12 = "true"
wrap_mode12 = "mirrored_repeat"
mipmap_input12 = "false"
alias12 = "ambi_push_pass"
float_framebuffer12 = "true"
srgb_framebuffer12 = "false"
scale_type_x12 = "source"
scale_x12 = "1.000000"
scale_type_y12 = "source"
scale_y12 = "1.000000"
shader13 = "shaders/ambi_pre_pass.slang"
filter_linear13 = "true"
wrap_mode13 = "clamp_to_border"
mipmap_input13 = "true"
alias13 = "ambi_pre_pass1"
float_framebuffer13 = "false"
srgb_framebuffer13 = "false"
scale_type_x13 = "source"
scale_x13 = "1.000000"
scale_type_y13 = "source"
scale_y13 = "1.000000"
shader14 = "shaders/ambi_temporal_pass.slang"
filter_linear14 = "true"
wrap_mode14 = "clamp_to_border"
mipmap_input14 = "false"
alias14 = "ambi_temporal_pass"
float_framebuffer14 = "true"
srgb_framebuffer14 = "false"
scale_type_x14 = "source"
scale_x14 = "1.000000"
scale_type_y14 = "source"
scale_y14 = "1.000000"
shader15 = "shaders/isrotated.slang"
filter_linear15 = "true"
wrap_mode15 = "mirrored_repeat"
mipmap_input15 = "false"
alias15 = "isrotated_pass"
float_framebuffer15 = "false"
srgb_framebuffer15 = "false"
scale_type_x15 = "viewport"
scale_x15 = "0.100000"
scale_type_y15 = "viewport"
scale_y15 = "0.100000"
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"
LUMINANCE = "0.100000"
SATURATION = "1.200000"
CONTRAST = "0.050000"
BRIGHTNESS = "0.050000"
TEMPERATURE = "7500.000000"
GAMMA_OUT = "0.560000"
DO_SAT_BLEED = "1.000000"
SAT_BLEED_PAL = "1.000000"
SAT_BLEED_STRENGTH = "1.750000"
SAT_BLEED_SIZE_LEFT = "3.000000"
SAT_BLEED_SIZE_RIGHT = "3.000000"
OFFSET_STRENGTH = "1.000000"
SHIFT_R = "2.000000"
SHIFT_G = "20.000000"
SHIFT_B = "-2.000000"
DO_IN_GLOW = "1.000000"
IN_GLOW_POWER = "1.650000"
IN_GLOW_W = "1.000000"
IN_GLOW_H = "1.000000"
IN_GLOW_GAMMA = "2.000000"
DO_VMASK_AND_DARKLINES = "1.000000"
RGB_MASK_STRENGTH = "1.000000"
VMASK_USE_GM = "1.000000"
VMASK_GAP = "1.000000"
DARKLINES_STRENGTH = "0.700000"
DO_HALO = "1.000000"
HALO_POWER = "0.500000"
HALO_W = "3.500000"
HALO_H = "3.500000"
HALO_GAMMA = "1.300000"
HALO_VS_SCAN = "1.000000"
DO_SCANLINES = "1.000000"
SCANLINE_DARK = "0.750000"
SCANLINES_BLEEDING = "1.000000"
SCANLINE_SM_TYPE = "1.000000"
SCANLINE_SM_STRENGTH = "1.000000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.150000"
BLOOM_SIZE = "1.500000"
BLOOM_POWER = "8.000000"
BLOOM_GAMMA_OUT = "1.200000"
DO_CURVATURE = "1.000000"
GEOM_WARP_X = "0.500000"
GEOM_WARP_Y = "0.500000"
GEOM_CORNER_SIZE = "0.005000"
GEOM_CORNER_SMOOTH = "700.000000"
DO_BEZEL = "1.000000"
BEZEL_INNER_ZOOM = "-0.010000"
BEZEL_FRAME_ZOOM = "0.170000"
BEZEL_IMAGE_BORDER = "1.020000"
AMBI_FALLOFF = "0.400000"
AMBI_POWER = "5.000000"
DO_VIGNETTE = "1.000000"
V_SIZE = "2.700000"
V_POWER = "1.050000"
DO_SPOT = "1.000000"
S_POSITION = "194.000000"
textures = "monitor_body;bg_under;bg_over"
monitor_body = "textures/monitor_body.png"
monitor_body_linear = "true"
monitor_body_wrap_mode = "clamp_to_edge"
monitor_body_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"

View file

@ -187,27 +187,33 @@ scale_x16 = "1.000000"
scale_type_y16 = "viewport"
scale_y16 = "1.000000"
DO_CCORRECTION = "1.000000"
LUMINANCE = "0.100000"
SATURATION = "1.050000"
TEMPERATURE = "7000.000000"
GAMMA_OUT = "0.350000"
DO_FXAA = "1.000000"
DO_SHIFT_RGB = "1.000000"
OFFSET_STRENGTH = "1.000000"
SHIFT_R = "-20.000000"
SHIFT_G = "1.000000"
SHIFT_B = "20.000000"
DO_SAT_BLEED = "1.000000"
SAT_BLEED_PAL = "1.000000"
SAT_BLEED_STRENGTH = "0.500000"
SAT_BLEED_SIZE_LEFT = "3.000000"
SAT_BLEED_SIZE_RIGHT = "3.000000"
DO_SHIFT_RGB = "1.000000"
OFFSET_STRENGTH = "1.000000"
SHIFT_R = "-20.000000"
SHIFT_G = "1.000000"
SHIFT_B = "20.000000"
DO_IN_GLOW = "1.000000"
IN_GLOW_POWER = "1.750000"
IN_GLOW_WH = "3.500000"
IN_GLOW_W = "0.950000"
IN_GLOW_H = "0.950000"
IN_GLOW_GAMMA = "2.000000"
IN_GLOW_BIAS = "0.000000"
DO_VMASK_AND_DARKLINES = "1.000000"
RGB_MASK_STRENGTH = "1.000000"
VMASK_USE_GM = "1.000000"
VMASK_GAP = "1.000000"
DARKLINES_STRENGTH = "1.000000"
DO_DARKLINES_VOFFSET = "0.000000"
DARKLINES_VOFFSET = "0.000000"
DARKLINES_PERIOD = "2.000000"
DO_HALO = "1.000000"
HALO_POWER = "0.350000"
@ -219,15 +225,17 @@ SCANLINES_BLEEDING = "1.000000"
SCANLINE_FLICKERING = "0.000000"
SCANLINE_FLICKERING_POWER = "0.500000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.150000"
BLOOM_SIZE = "1.500000"
BLOOM_POWER = "8.000000"
BLOOM_GAMMA_OUT = "1.200000"
BLOOM_GAMMA_OUT = "2.000000"
DO_CURVATURE = "1.000000"
GEOM_WARP_X = "0.800000"
GEOM_WARP_Y = "0.850000"
GEOM_CORNER_SIZE = "0.005000"
GEOM_CORNER_SMOOTH = "700.000000"
DO_BEZEL = "1.000000"
BEZEL_FRAME_ZOOM = "0.040000"
BEZEL_IMAGE_BORDER = "1.020000"
AMBI_FALLOFF = "0.600000"
AMBI_POWER = "2.000000"

View file

@ -187,27 +187,33 @@ scale_x16 = "1.000000"
scale_type_y16 = "viewport"
scale_y16 = "1.000000"
DO_CCORRECTION = "1.000000"
LUMINANCE = "0.100000"
SATURATION = "1.050000"
TEMPERATURE = "7000.000000"
GAMMA_OUT = "0.350000"
DO_FXAA = "1.000000"
DO_SHIFT_RGB = "1.000000"
OFFSET_STRENGTH = "1.000000"
SHIFT_R = "-20.000000"
SHIFT_G = "1.000000"
SHIFT_B = "20.000000"
DO_SAT_BLEED = "1.000000"
SAT_BLEED_PAL = "1.000000"
SAT_BLEED_STRENGTH = "0.500000"
SAT_BLEED_SIZE_LEFT = "3.000000"
SAT_BLEED_SIZE_RIGHT = "3.000000"
DO_SHIFT_RGB = "1.000000"
OFFSET_STRENGTH = "1.000000"
SHIFT_R = "-20.000000"
SHIFT_G = "1.000000"
SHIFT_B = "20.000000"
DO_IN_GLOW = "1.000000"
IN_GLOW_POWER = "1.750000"
IN_GLOW_WH = "3.500000"
IN_GLOW_W = "0.950000"
IN_GLOW_H = "0.950000"
IN_GLOW_GAMMA = "2.000000"
IN_GLOW_BIAS = "0.000000"
DO_VMASK_AND_DARKLINES = "1.000000"
RGB_MASK_STRENGTH = "1.000000"
VMASK_USE_GM = "1.000000"
VMASK_GAP = "1.000000"
DARKLINES_STRENGTH = "1.000000"
DO_DARKLINES_VOFFSET = "0.000000"
DARKLINES_VOFFSET = "0.000000"
DARKLINES_PERIOD = "2.000000"
DO_HALO = "1.000000"
HALO_POWER = "0.350000"
@ -219,17 +225,18 @@ SCANLINES_BLEEDING = "1.000000"
SCANLINE_FLICKERING = "0.000000"
SCANLINE_FLICKERING_POWER = "0.500000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.150000"
BLOOM_SIZE = "1.500000"
BLOOM_POWER = "8.000000"
BLOOM_GAMMA_OUT = "1.200000"
BLOOM_GAMMA_OUT = "2.000000"
DO_CURVATURE = "1.000000"
GEOM_WARP_X = "0.500000"
GEOM_WARP_Y = "0.500000"
GEOM_CORNER_SIZE = "0.005000"
GEOM_CORNER_SMOOTH = "700.000000"
DO_BEZEL = "1.000000"
BEZEL_INNER_ZOOM = "-0.005000"
BEZEL_FRAME_ZOOM = "0.139000"
BEZEL_INNER_ZOOM = "-0.010000"
BEZEL_FRAME_ZOOM = "0.170000"
BEZEL_IMAGE_BORDER = "1.020000"
AMBI_FALLOFF = "0.400000"
AMBI_POWER = "5.000000"

View file

@ -187,27 +187,33 @@ scale_x16 = "1.000000"
scale_type_y16 = "viewport"
scale_y16 = "1.000000"
DO_CCORRECTION = "1.000000"
LUMINANCE = "0.100000"
SATURATION = "1.050000"
TEMPERATURE = "7000.000000"
GAMMA_OUT = "0.350000"
DO_FXAA = "1.000000"
DO_SHIFT_RGB = "1.000000"
OFFSET_STRENGTH = "1.000000"
SHIFT_R = "-20.000000"
SHIFT_G = "1.000000"
SHIFT_B = "20.000000"
DO_SAT_BLEED = "1.000000"
SAT_BLEED_PAL = "1.000000"
SAT_BLEED_STRENGTH = "0.500000"
SAT_BLEED_SIZE_LEFT = "3.000000"
SAT_BLEED_SIZE_RIGHT = "3.000000"
DO_SHIFT_RGB = "1.000000"
OFFSET_STRENGTH = "1.000000"
SHIFT_R = "-20.000000"
SHIFT_G = "1.000000"
SHIFT_B = "20.000000"
DO_IN_GLOW = "1.000000"
IN_GLOW_POWER = "1.750000"
IN_GLOW_WH = "3.500000"
IN_GLOW_W = "0.950000"
IN_GLOW_H = "0.950000"
IN_GLOW_GAMMA = "2.000000"
IN_GLOW_BIAS = "0.000000"
DO_VMASK_AND_DARKLINES = "1.000000"
RGB_MASK_STRENGTH = "1.000000"
VMASK_USE_GM = "1.000000"
VMASK_GAP = "1.000000"
DARKLINES_STRENGTH = "1.000000"
DO_DARKLINES_VOFFSET = "0.000000"
DARKLINES_VOFFSET = "0.000000"
DARKLINES_PERIOD = "2.000000"
DO_HALO = "1.000000"
HALO_POWER = "0.350000"
@ -219,9 +225,10 @@ SCANLINES_BLEEDING = "1.000000"
SCANLINE_FLICKERING = "0.000000"
SCANLINE_FLICKERING_POWER = "0.500000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.150000"
BLOOM_SIZE = "1.500000"
BLOOM_POWER = "8.000000"
BLOOM_GAMMA_OUT = "1.200000"
BLOOM_GAMMA_OUT = "2.000000"
DO_CURVATURE = "1.000000"
GEOM_WARP_X = "0.000000"
GEOM_CORNER_SMOOTH = "200.000000"

View file

@ -187,27 +187,33 @@ scale_x16 = "1.000000"
scale_type_y16 = "viewport"
scale_y16 = "1.000000"
DO_CCORRECTION = "1.000000"
LUMINANCE = "0.100000"
SATURATION = "1.050000"
TEMPERATURE = "7000.000000"
GAMMA_OUT = "0.350000"
DO_FXAA = "1.000000"
DO_SHIFT_RGB = "1.000000"
OFFSET_STRENGTH = "1.000000"
SHIFT_R = "-20.000000"
SHIFT_G = "1.000000"
SHIFT_B = "20.000000"
DO_SAT_BLEED = "1.000000"
SAT_BLEED_PAL = "1.000000"
SAT_BLEED_STRENGTH = "0.500000"
SAT_BLEED_SIZE_LEFT = "3.000000"
SAT_BLEED_SIZE_RIGHT = "3.000000"
DO_SHIFT_RGB = "1.000000"
OFFSET_STRENGTH = "1.000000"
SHIFT_R = "-20.000000"
SHIFT_G = "1.000000"
SHIFT_B = "20.000000"
DO_IN_GLOW = "1.000000"
IN_GLOW_POWER = "1.900000"
IN_GLOW_WH = "3.500000"
IN_GLOW_W = "0.950000"
IN_GLOW_H = "0.950000"
IN_GLOW_GAMMA = "2.000000"
IN_GLOW_BIAS = "0.000000"
DO_VMASK_AND_DARKLINES = "1.000000"
RGB_MASK_STRENGTH = "1.000000"
VMASK_USE_GM = "1.000000"
VMASK_GAP = "1.000000"
DARKLINES_STRENGTH = "1.000000"
DO_DARKLINES_VOFFSET = "0.000000"
DARKLINES_VOFFSET = "0.000000"
DARKLINES_PERIOD = "2.000000"
DO_HALO = "1.000000"
HALO_POWER = "0.350000"
@ -218,9 +224,10 @@ SCANLINE_COMPENSATION = "0.200000"
SCANLINES_BLEEDING = "1.000000"
SCANLINE_FLICKERING = "0.000000"
SCANLINE_FLICKERING_POWER = "0.500000"
BLOOM_MIX = "0.150000"
BLOOM_SIZE = "1.500000"
BLOOM_POWER = "8.000000"
BLOOM_GAMMA_OUT = "1.200000"
BLOOM_GAMMA_OUT = "2.000000"
DO_CURVATURE = "1.000000"
GEOM_WARP_X = "0.000000"
GEOM_CORNER_SMOOTH = "200.000000"

View file

@ -187,47 +187,53 @@ scale_x16 = "1.000000"
scale_type_y16 = "viewport"
scale_y16 = "1.000000"
DO_CCORRECTION = "1.000000"
LUMINANCE = "0.100000"
SATURATION = "1.050000"
TEMPERATURE = "7000.000000"
GAMMA_OUT = "0.550000"
GAMMA_OUT = "0.400000"
DO_FXAA = "1.000000"
DO_SHIFT_RGB = "1.000000"
OFFSET_STRENGTH = "1.000000"
SHIFT_R = "-20.000000"
SHIFT_G = "1.000000"
SHIFT_B = "20.000000"
DO_SAT_BLEED = "1.000000"
SAT_BLEED_PAL = "1.000000"
SAT_BLEED_STRENGTH = "0.500000"
SAT_BLEED_SIZE_LEFT = "3.000000"
SAT_BLEED_SIZE_RIGHT = "3.000000"
DO_SHIFT_RGB = "1.000000"
OFFSET_STRENGTH = "1.000000"
SHIFT_R = "-20.000000"
SHIFT_G = "1.000000"
SHIFT_B = "20.000000"
DO_IN_GLOW = "1.000000"
IN_GLOW_POWER = "1.600000"
IN_GLOW_WH = "3.500000"
IN_GLOW_W = "0.950000"
IN_GLOW_H = "0.950000"
IN_GLOW_GAMMA = "2.000000"
IN_GLOW_BIAS = "0.000000"
DO_VMASK_AND_DARKLINES = "1.000000"
RGB_MASK_STRENGTH = "1.000000"
DARKLINES_STRENGTH = "0.900000"
VMASK_USE_GM = "1.000000"
VMASK_GAP = "1.000000"
DARKLINES_STRENGTH = "0.500000"
DO_HALO = "1.000000"
HALO_POWER = "0.520000"
HALO_W = "3.000000"
HALO_H = "3.000000"
HALO_GAMMA = "1.100000"
DO_SCANLINES = "1.000000"
SCANLINE_DARK = "0.700000"
SCANLINE_COMPENSATION = "0.200000"
SCANLINES_BLEEDING = "1.000000"
SCANLINE_FLICKERING = "0.000000"
SCANLINE_FLICKERING_POWER = "0.500000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.150000"
BLOOM_SIZE = "1.500000"
BLOOM_POWER = "8.000000"
BLOOM_GAMMA_OUT = "1.200000"
BLOOM_GAMMA_OUT = "2.000000"
DO_CURVATURE = "1.000000"
GEOM_WARP_X = "0.800000"
GEOM_WARP_Y = "0.850000"
GEOM_CORNER_SIZE = "0.005000"
GEOM_CORNER_SMOOTH = "700.000000"
DO_BEZEL = "1.000000"
BEZEL_FRAME_ZOOM = "0.040000"
BEZEL_IMAGE_BORDER = "1.020000"
AMBI_FALLOFF = "0.600000"
AMBI_POWER = "2.000000"

View file

@ -187,49 +187,54 @@ scale_x16 = "1.000000"
scale_type_y16 = "viewport"
scale_y16 = "1.000000"
DO_CCORRECTION = "1.000000"
LUMINANCE = "0.100000"
SATURATION = "1.050000"
TEMPERATURE = "7000.000000"
GAMMA_OUT = "0.550000"
GAMMA_OUT = "0.400000"
DO_FXAA = "1.000000"
DO_SHIFT_RGB = "1.000000"
OFFSET_STRENGTH = "1.000000"
SHIFT_R = "-20.000000"
SHIFT_G = "1.000000"
SHIFT_B = "20.000000"
DO_SAT_BLEED = "1.000000"
SAT_BLEED_PAL = "1.000000"
SAT_BLEED_STRENGTH = "0.500000"
SAT_BLEED_SIZE_LEFT = "3.000000"
SAT_BLEED_SIZE_RIGHT = "3.000000"
DO_SHIFT_RGB = "1.000000"
OFFSET_STRENGTH = "1.000000"
SHIFT_R = "-20.000000"
SHIFT_G = "1.000000"
SHIFT_B = "20.000000"
DO_IN_GLOW = "1.000000"
IN_GLOW_POWER = "1.600000"
IN_GLOW_WH = "3.500000"
IN_GLOW_W = "0.950000"
IN_GLOW_H = "0.950000"
IN_GLOW_GAMMA = "2.000000"
IN_GLOW_BIAS = "0.000000"
DO_VMASK_AND_DARKLINES = "1.000000"
RGB_MASK_STRENGTH = "1.000000"
DARKLINES_STRENGTH = "0.900000"
VMASK_USE_GM = "1.000000"
VMASK_GAP = "1.000000"
DARKLINES_STRENGTH = "0.500000"
DO_HALO = "1.000000"
HALO_POWER = "0.520000"
HALO_W = "3.000000"
HALO_H = "3.000000"
HALO_GAMMA = "1.100000"
DO_SCANLINES = "1.000000"
SCANLINE_DARK = "0.700000"
SCANLINE_COMPENSATION = "0.200000"
SCANLINES_BLEEDING = "1.000000"
SCANLINE_FLICKERING = "0.000000"
SCANLINE_FLICKERING_POWER = "0.500000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.150000"
BLOOM_SIZE = "1.500000"
BLOOM_POWER = "8.000000"
BLOOM_GAMMA_OUT = "1.200000"
BLOOM_GAMMA_OUT = "2.000000"
DO_CURVATURE = "1.000000"
GEOM_WARP_X = "0.500000"
GEOM_WARP_Y = "0.500000"
GEOM_CORNER_SIZE = "0.005000"
GEOM_CORNER_SMOOTH = "700.000000"
DO_BEZEL = "1.000000"
BEZEL_INNER_ZOOM = "-0.005000"
BEZEL_FRAME_ZOOM = "0.139000"
BEZEL_INNER_ZOOM = "-0.010000"
BEZEL_FRAME_ZOOM = "0.170000"
BEZEL_IMAGE_BORDER = "1.020000"
AMBI_FALLOFF = "0.400000"
AMBI_POWER = "5.000000"

View file

@ -187,41 +187,46 @@ scale_x16 = "1.000000"
scale_type_y16 = "viewport"
scale_y16 = "1.000000"
DO_CCORRECTION = "1.000000"
LUMINANCE = "0.100000"
SATURATION = "1.050000"
TEMPERATURE = "7000.000000"
GAMMA_OUT = "0.550000"
GAMMA_OUT = "0.400000"
DO_FXAA = "1.000000"
DO_SHIFT_RGB = "1.000000"
OFFSET_STRENGTH = "1.000000"
SHIFT_R = "-20.000000"
SHIFT_G = "1.000000"
SHIFT_B = "20.000000"
DO_SAT_BLEED = "1.000000"
SAT_BLEED_PAL = "1.000000"
SAT_BLEED_STRENGTH = "0.500000"
SAT_BLEED_SIZE_LEFT = "3.000000"
SAT_BLEED_SIZE_RIGHT = "3.000000"
DO_SHIFT_RGB = "1.000000"
OFFSET_STRENGTH = "1.000000"
SHIFT_R = "-20.000000"
SHIFT_G = "1.000000"
SHIFT_B = "20.000000"
DO_IN_GLOW = "1.000000"
IN_GLOW_POWER = "1.600000"
IN_GLOW_WH = "3.500000"
IN_GLOW_W = "0.950000"
IN_GLOW_H = "0.950000"
IN_GLOW_GAMMA = "2.000000"
IN_GLOW_BIAS = "0.000000"
DO_VMASK_AND_DARKLINES = "1.000000"
RGB_MASK_STRENGTH = "1.000000"
DARKLINES_STRENGTH = "0.900000"
VMASK_USE_GM = "1.000000"
VMASK_GAP = "1.000000"
DARKLINES_STRENGTH = "0.500000"
DO_HALO = "1.000000"
HALO_POWER = "0.520000"
HALO_W = "3.000000"
HALO_H = "3.000000"
HALO_GAMMA = "1.100000"
DO_SCANLINES = "1.000000"
SCANLINE_DARK = "0.700000"
SCANLINE_COMPENSATION = "0.200000"
SCANLINES_BLEEDING = "1.000000"
SCANLINE_FLICKERING = "0.000000"
SCANLINE_FLICKERING_POWER = "0.500000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.150000"
BLOOM_SIZE = "1.500000"
BLOOM_POWER = "8.000000"
BLOOM_GAMMA_OUT = "1.200000"
BLOOM_GAMMA_OUT = "2.000000"
DO_CURVATURE = "1.000000"
GEOM_WARP_X = "0.000000"
GEOM_CORNER_SMOOTH = "200.000000"

View file

@ -187,40 +187,45 @@ scale_x16 = "1.000000"
scale_type_y16 = "viewport"
scale_y16 = "1.000000"
DO_CCORRECTION = "1.000000"
LUMINANCE = "0.100000"
SATURATION = "1.050000"
TEMPERATURE = "7000.000000"
GAMMA_OUT = "0.550000"
GAMMA_OUT = "0.400000"
DO_FXAA = "1.000000"
DO_SHIFT_RGB = "1.000000"
OFFSET_STRENGTH = "1.000000"
SHIFT_R = "-20.000000"
SHIFT_G = "1.000000"
SHIFT_B = "20.000000"
DO_SAT_BLEED = "1.000000"
SAT_BLEED_PAL = "1.000000"
SAT_BLEED_STRENGTH = "0.500000"
SAT_BLEED_SIZE_LEFT = "3.000000"
SAT_BLEED_SIZE_RIGHT = "3.000000"
DO_SHIFT_RGB = "1.000000"
OFFSET_STRENGTH = "1.000000"
SHIFT_R = "-20.000000"
SHIFT_G = "1.000000"
SHIFT_B = "20.000000"
DO_IN_GLOW = "1.000000"
IN_GLOW_POWER = "1.600000"
IN_GLOW_WH = "3.500000"
IN_GLOW_W = "0.950000"
IN_GLOW_H = "0.950000"
IN_GLOW_GAMMA = "2.000000"
IN_GLOW_BIAS = "0.000000"
DO_VMASK_AND_DARKLINES = "1.000000"
RGB_MASK_STRENGTH = "1.000000"
DARKLINES_STRENGTH = "0.900000"
VMASK_USE_GM = "1.000000"
VMASK_GAP = "1.000000"
DARKLINES_STRENGTH = "0.500000"
DO_HALO = "1.000000"
HALO_POWER = "0.520000"
HALO_W = "3.000000"
HALO_H = "3.000000"
HALO_GAMMA = "1.100000"
DO_SCANLINES = "1.000000"
SCANLINE_DARK = "0.700000"
SCANLINE_COMPENSATION = "0.200000"
SCANLINES_BLEEDING = "1.000000"
SCANLINE_FLICKERING = "0.000000"
SCANLINE_FLICKERING_POWER = "0.500000"
BLOOM_MIX = "0.150000"
BLOOM_SIZE = "1.500000"
BLOOM_POWER = "8.000000"
BLOOM_GAMMA_OUT = "1.200000"
BLOOM_GAMMA_OUT = "2.000000"
DO_CURVATURE = "1.000000"
GEOM_WARP_X = "0.000000"
GEOM_CORNER_SMOOTH = "200.000000"

View file

@ -189,35 +189,36 @@ scale_y16 = "1.000000"
DO_CCORRECTION = "1.000000"
LUMINANCE = "0.300000"
TEMPERATURE = "7200.000000"
GAMMA_OUT = "0.450000"
GAMMA_OUT = "0.400000"
DO_FXAA = "1.000000"
DO_SAT_BLEED = "1.000000"
SAT_BLEED_FALLOFF = "1.800000"
SHIFT_R = "-20.000000"
SHIFT_G = "1.000000"
SHIFT_B = "20.000000"
DO_SAT_BLEED = "1.000000"
SAT_BLEED_FALLOFF = "1.800000"
DO_IN_GLOW = "1.000000"
IN_GLOW_POWER = "1.700000"
IN_GLOW_WH = "2.000000"
IN_GLOW_W = "2.000000"
IN_GLOW_H = "2.000000"
IN_GLOW_GAMMA = "2.000000"
IN_GLOW_BIAS = "0.000000"
DO_VMASK_AND_DARKLINES = "1.000000"
RGB_MASK_STRENGTH = "1.000000"
VMASK_USE_GM = "1.000000"
VMASK_GAP = "1.000000"
VMASK_OVERWHITE = "0.750000"
DARKLINES_STRENGTH = "0.400000"
DARKLINES_PERIOD = "6.000000"
DRKLN_OVERWHITE = "0.750000"
DO_HALO = "1.000000"
HALO_POWER = "0.450000"
HALO_POWER = "0.430000"
HALO_W = "3.500000"
HALO_H = "3.500000"
HALO_GAMMA = "1.200000"
HALO_VS_SCAN = "0.800000"
DO_SCANLINES = "1.000000"
SCANLINE_DARK = "0.100000"
SCANLINES_BLEEDING = "0.825000"
SCANLINE_FLICKERING = "1.000000"
SCANLINE_FLICKERING_POWER = "0.850000"
SCANLINE_SM_STRENGTH = "1.000000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.150000"
BLOOM_SIZE = "1.500000"
@ -229,6 +230,7 @@ GEOM_WARP_Y = "0.850000"
GEOM_CORNER_SIZE = "0.005000"
GEOM_CORNER_SMOOTH = "700.000000"
DO_BEZEL = "1.000000"
BEZEL_FRAME_ZOOM = "0.040000"
BEZEL_IMAGE_BORDER = "1.020000"
AMBI_FALLOFF = "0.600000"
AMBI_POWER = "2.000000"