Update koko-aio to 3.9.1 (#373)

* Update koko-aio to 3.8

* Missing files from previous commit

* Still missing files

* Fix full presets, hopefully ready for merging
This commit is contained in:
Antonio Orefice 2023-03-08 18:13:42 +01:00 committed by GitHub
parent f3ec2864ba
commit 8b35477a93
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
78 changed files with 6159 additions and 4595 deletions

View File

@ -1,180 +1,180 @@
shaders = "17"
shader0 = "shaders/first_pass.slang"
shader0 = "shaders/ntsc_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
alias0 = "first_pass"
alias0 = "ntsc_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "2.000000"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "2.000000"
shader1 = "shaders/fxaa.slang"
filter_linear1 = "true"
scale_y0 = "1.000000"
shader1 = "shaders/first_pass.slang"
filter_linear1 = "false"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "true"
alias1 = "FXAA_pass"
mipmap_input1 = "false"
alias1 = "first_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
scale_x1 = "1.000000"
scale_x1 = "2.000000"
scale_type_y1 = "source"
scale_y1 = "1.000000"
shader2 = "shaders/shift_and_bleed.slang"
scale_y1 = "2.000000"
shader2 = "shaders/fxaa.slang"
filter_linear2 = "true"
wrap_mode2 = "mirrored_repeat"
mipmap_input2 = "false"
alias2 = "shift_and_bleed_pass"
mipmap_input2 = "true"
alias2 = "FXAA_pass"
float_framebuffer2 = "false"
srgb_framebuffer2 = "false"
scale_type_x2 = "source"
scale_x2 = "1.000000"
scale_type_y2 = "source"
scale_y2 = "1.000000"
shader3 = "shaders/in_glow.slang"
shader3 = "shaders/shift_and_bleed.slang"
filter_linear3 = "true"
wrap_mode3 = "mirrored_repeat"
mipmap_input3 = "false"
alias3 = "in_glow_pass"
alias3 = "shift_and_bleed_pass"
float_framebuffer3 = "true"
srgb_framebuffer3 = "false"
scale_type_x3 = "source"
scale_x3 = "1.000000"
scale_type_y3 = "source"
scale_y3 = "1.000000"
shader4 = "shaders/halo.slang"
shader4 = "shaders/in_glow_x.slang"
filter_linear4 = "true"
wrap_mode4 = "mirrored_repeat"
mipmap_input4 = "false"
alias4 = "halo_pass"
alias4 = "in_glow_pass_x"
float_framebuffer4 = "true"
srgb_framebuffer4 = "false"
scale_type_x4 = "source"
scale_x4 = "1.000000"
scale_type_y4 = "source"
scale_y4 = "1.000000"
shader5 = "shaders/avglum_pass.slang"
shader5 = "shaders/in_glow_y.slang"
filter_linear5 = "true"
wrap_mode5 = "mirrored_repeat"
mipmap_input5 = "false"
alias5 = "avglum_pass"
float_framebuffer5 = "false"
alias5 = "in_glow_pass"
float_framebuffer5 = "true"
srgb_framebuffer5 = "false"
scale_type_x5 = "source"
scale_x5 = "0.500000"
scale_x5 = "1.000000"
scale_type_y5 = "source"
scale_y5 = "0.500000"
shader6 = "shaders/reflection_blur_h.slang"
scale_y5 = "1.000000"
shader6 = "shaders/halo_x.slang"
filter_linear6 = "true"
wrap_mode6 = "mirrored_repeat"
wrap_mode6 = "clamp_to_edge"
mipmap_input6 = "false"
alias6 = "reflected_blurred_pass1"
float_framebuffer6 = "false"
alias6 = "halo_pass_x"
float_framebuffer6 = "true"
srgb_framebuffer6 = "false"
scale_type_x6 = "source"
scale_x6 = "1.000000"
scale_type_y6 = "source"
scale_y6 = "1.000000"
shader7 = "shaders/reflection_blur_v.slang"
shader7 = "shaders/halo_y.slang"
filter_linear7 = "true"
wrap_mode7 = "mirrored_repeat"
wrap_mode7 = "clamp_to_edge"
mipmap_input7 = "false"
alias7 = "reflected_blurred_pass2"
float_framebuffer7 = "false"
alias7 = "halo_pass"
float_framebuffer7 = "true"
srgb_framebuffer7 = "false"
scale_type_x7 = "source"
scale_x7 = "1.000000"
scale_type_y7 = "source"
scale_y7 = "1.000000"
shader8 = "shaders/bloom_pass_1.slang"
shader8 = "shaders/avglum_pass.slang"
filter_linear8 = "true"
wrap_mode8 = "mirrored_repeat"
mipmap_input8 = "false"
alias8 = "bloom_pass_1"
float_framebuffer8 = "true"
alias8 = "avglum_pass"
float_framebuffer8 = "false"
srgb_framebuffer8 = "false"
scale_type_x8 = "source"
scale_x8 = "1.000000"
scale_x8 = "0.500000"
scale_type_y8 = "source"
scale_y8 = "1.000000"
shader9 = "shaders/bloom_pass_2.slang"
scale_y8 = "0.500000"
shader9 = "shaders/reflection_blur_x.slang"
filter_linear9 = "true"
wrap_mode9 = "clamp_to_edge"
wrap_mode9 = "mirrored_repeat"
mipmap_input9 = "false"
alias9 = "bloom_pass_2"
alias9 = "reflected_blurred_pass1"
float_framebuffer9 = "false"
srgb_framebuffer9 = "false"
scale_type_x9 = "source"
scale_x9 = "0.500000"
scale_x9 = "1.000000"
scale_type_y9 = "source"
scale_y9 = "0.500000"
shader10 = "shaders/bloom_pass_3.slang"
scale_y9 = "1.000000"
shader10 = "shaders/reflection_blur_y.slang"
filter_linear10 = "true"
wrap_mode10 = "clamp_to_edge"
wrap_mode10 = "mirrored_repeat"
mipmap_input10 = "false"
alias10 = "bloom_pass_3"
alias10 = "reflected_blurred_pass2"
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"
shader11 = "shaders/bloom_pass_1.slang"
filter_linear11 = "true"
wrap_mode11 = "mirrored_repeat"
mipmap_input11 = "false"
alias11 = "bloom_pass_final"
alias11 = "bloom_pass_1"
float_framebuffer11 = "false"
srgb_framebuffer11 = "false"
scale_type_x11 = "source"
scale_x11 = "1.000000"
scale_type_y11 = "source"
scale_y11 = "1.000000"
shader12 = "shaders/ambi_push_pass.slang"
shader12 = "shaders/bloom_pass_2.slang"
filter_linear12 = "true"
wrap_mode12 = "mirrored_repeat"
wrap_mode12 = "clamp_to_edge"
mipmap_input12 = "false"
alias12 = "ambi_push_pass"
float_framebuffer12 = "true"
alias12 = "bloom_pass_2"
float_framebuffer12 = "false"
srgb_framebuffer12 = "false"
scale_type_x12 = "source"
scale_x12 = "1.000000"
scale_x12 = "0.500000"
scale_type_y12 = "source"
scale_y12 = "1.000000"
shader13 = "shaders/ambi_pre_pass.slang"
scale_y12 = "0.500000"
shader13 = "shaders/bloom_pass_3.slang"
filter_linear13 = "true"
wrap_mode13 = "clamp_to_border"
mipmap_input13 = "true"
alias13 = "ambi_pre_pass1"
wrap_mode13 = "clamp_to_edge"
mipmap_input13 = "false"
alias13 = "bloom_pass_3"
float_framebuffer13 = "false"
srgb_framebuffer13 = "false"
scale_type_x13 = "source"
scale_x13 = "1.000000"
scale_type_y13 = "source"
scale_y13 = "1.000000"
shader14 = "shaders/ambi_temporal_pass.slang"
shader14 = "shaders/bloom_pass_4.slang"
filter_linear14 = "true"
wrap_mode14 = "clamp_to_border"
wrap_mode14 = "mirrored_repeat"
mipmap_input14 = "false"
alias14 = "ambi_temporal_pass"
alias14 = "bloom_pass_final"
float_framebuffer14 = "true"
srgb_framebuffer14 = "false"
scale_type_x14 = "source"
scale_x14 = "1.000000"
scale_type_y14 = "source"
scale_y14 = "1.000000"
shader15 = "shaders/isrotated.slang"
shader15 = "shaders/ambi_temporal_pass.slang"
filter_linear15 = "true"
wrap_mode15 = "mirrored_repeat"
wrap_mode15 = "clamp_to_border"
mipmap_input15 = "false"
alias15 = "isrotated_pass"
float_framebuffer15 = "false"
alias15 = "ambi_temporal_pass"
float_framebuffer15 = "true"
srgb_framebuffer15 = "false"
scale_type_x15 = "viewport"
scale_x15 = "0.100000"
scale_x15 = "0.050000"
scale_type_y15 = "viewport"
scale_y15 = "0.100000"
scale_y15 = "0.050000"
shader16 = "shaders/final_pass.slang"
filter_linear16 = "true"
wrap_mode16 = "mirrored_repeat"
@ -186,10 +186,11 @@ 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.050000"
TEMPERATURE = "7000.000000"
GAMMA_OUT = "0.400000"
GAMMA_OUT = "0.500000"
DO_FXAA = "1.000000"
SAT_BLEED_PAL = "1.000000"
SAT_BLEED_STRENGTH = "0.500000"
@ -199,47 +200,53 @@ 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"
DO_IN_GLOW = "1.000000"
IN_GLOW_GAMMA = "2.000000"
IN_GLOW_SPREAD = "2.000000"
IN_GLOW_W = "7.000000"
IN_GLOW_H = "7.000000"
IN_GLOW_BIAS = "0.000000"
RGB_MASK_STRENGTH = "1.000000"
VMASK_USE_GM = "1.000000"
VMASK_GAP = "1.000000"
DARKLINES_STRENGTH = "0.500000"
HALO_POWER = "0.520000"
DARKLINES_STRENGTH = "0.800000"
DARKLINES_PERIOD = "4.000000"
HALO_POWER = "0.990000"
HALO_W = "3.000000"
HALO_H = "3.000000"
HALO_GAMMA = "1.400000"
SCANLINE_DARK = "0.700000"
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 = "2.000000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.500000"
DO_CURVATURE = "1.000000"
GEOM_WARP_X = "0.500000"
GEOM_WARP_X = "0.450000"
GEOM_WARP_Y = "0.500000"
GEOM_CORNER_SIZE = "0.005000"
GEOM_CORNER_SMOOTH = "700.000000"
GEOM_CORNER_SMOOTH = "400.000000"
DO_BEZEL = "1.000000"
BEZEL_INNER_ZOOM = "-0.010000"
BEZEL_FRAME_ZOOM = "0.170000"
BEZEL_IMAGE_BORDER = "1.020000"
BEZEL_RFL_OFFSET = "0.001000"
BEZEL_REFL_ZOOM = "0.990000"
AMBI_FALLOFF = "0.400000"
AMBI_POWER = "5.000000"
DO_DYNZOOM = "0.000000"
V_SIZE = "2.700000"
V_POWER = "1.050000"
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"
textures = "monitor_body_curved;monitor_body_straight;bg_under;bg_over;backdrop"
monitor_body_curved = "textures/monitor_body_curved.png"
monitor_body_curved_linear = "true"
monitor_body_curved_wrap_mode = "clamp_to_edge"
monitor_body_curved_mipmap = "true"
monitor_body_straight = "textures/monitor_body_straight.png"
monitor_body_straight_linear = "true"
monitor_body_straight_wrap_mode = "clamp_to_edge"
monitor_body_straight_mipmap = "true"
bg_under = "textures/background_under.png"
bg_under_linear = "true"
bg_under_wrap_mode = "mirrored_repeat"
@ -248,3 +255,7 @@ bg_over = "textures/background_over.png"
bg_over_linear = "true"
bg_over_wrap_mode = "mirrored_repeat"
bg_over_mipmap = "true"
backdrop = "textures/boothill.jpg"
backdrop_linear = "true"
backdrop_wrap_mode = "mirrored_repeat"
backdrop_mipmap = "true"

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

@ -0,0 +1,64 @@
# Koko-aio
Koko-aio shader is meant to be an all-in one crt shader.<br>
It can be configured with many parameters, so that can be
scaled to run on even on modest gpus while still developed to
run with heavier presets on at least Haswell+ iGpus.<br>
On that gpu, as in version 3.5, it reaches about 85fps with all features enabled<br>
When dealing with lowres content on 1920x1080 resolution.<br>
While it is not meant to simulate the internal behaviour of CRT displays,<br>
it aims to give users "visual" parameters to make their monitors look similar.<br>
Several presets are included.<br>
***Additional documentation:***
* [See here](docs.md)
***Additional artwork:***
* https://github.com/kokoko3k/koko-aio-slang-presets-and-overlays
***Actually, it provides emulation for:***
* Scanlines
* Screenlines
* RGB phosphors
* RGB deconvergence
* NTSC/PAL CVBS color bleeding
* NTSC color artifacting (early stage)
* Aperture grille and slot mask.
* Input signal glowing
* Output signal glowing
* Blooming
* Gamma, contrast, saturation, luminance, color temperature adjustments
* Black frame insertions through alternate blanking
* Interlace flickering, forcing and emulation
* Antialiasing
* Curvature
* Ambient lights
* Vignette and Spotlight
* Bezel (Thank you HyperspaceMadness for allowing me to rip his automagically generated bezel!)
https://github.com/HyperspaceMadness/
* Background images
* Full screen glowing
***External code by:***
* Nvidia (FXAA)
* EasyMode (curvature related code)
# Examples
***monitor-slotmask-bloom-bezelwider - Arcade - Final fight***
![alt text](https://github.com/kokoko3k/koko-aio-slang/blob/main/screenshots/screenshots.3.5/monitor-slotmask-bloom-bezelwider.mame.ffight.png?raw=true)
***monitor-Commodore_1084S-wider - Amiga - ProjectX SE***
![alt text](https://github.com/kokoko3k/koko-aio-slang/blob/main/screenshots/screenshots.3.5/monitor-Commodore_1084S-wider.puae.projectx.png?raw=true)
***tv-PAL-my-old - Master System - Trans Bot***
![alt text](https://github.com/kokoko3k/koko-aio-slang/blob/main/screenshots/screenshots.3.5/tv-PAL-my-old,mastersystem.transbot.png?raw=true)
***tv-NTSC-1 - Genesis - Sonic 2***
![alt text](https://github.com/kokoko3k/koko-aio-slang/blob/main/screenshots/screenshots.3.5/tv-NTSC-1.md.sonic2.png?raw=true)
***tv-NTSC-2 - Snes - Aladdin***
![alt text](https://github.com/kokoko3k/koko-aio-slang/blob/main/screenshots/screenshots.3.5/tv-NTSC-2.snes.aladdin.png?raw=true)
***tv-aperturegrille-bloom-bezel - Amiga - Leander***
![alt text](https://github.com/kokoko3k/koko-aio-slang/blob/main/screenshots/screenshots.3.5/tv-aperturegrille-bloom-bezel.puae.leander.png?raw=true)

View File

@ -0,0 +1,248 @@
shaders = "17"
shader0 = "shaders/ntsc_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
alias0 = "ntsc_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "1.000000"
shader1 = "shaders/first_pass.slang"
filter_linear1 = "false"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "false"
alias1 = "first_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
scale_x1 = "2.000000"
scale_type_y1 = "source"
scale_y1 = "2.000000"
shader2 = "shaders/fxaa.slang"
filter_linear2 = "true"
wrap_mode2 = "mirrored_repeat"
mipmap_input2 = "true"
alias2 = "FXAA_pass"
float_framebuffer2 = "false"
srgb_framebuffer2 = "false"
scale_type_x2 = "source"
scale_x2 = "1.000000"
scale_type_y2 = "source"
scale_y2 = "1.000000"
shader3 = "shaders/shift_and_bleed.slang"
filter_linear3 = "true"
wrap_mode3 = "mirrored_repeat"
mipmap_input3 = "false"
alias3 = "shift_and_bleed_pass"
float_framebuffer3 = "true"
srgb_framebuffer3 = "false"
scale_type_x3 = "source"
scale_x3 = "1.000000"
scale_type_y3 = "source"
scale_y3 = "1.000000"
shader4 = "shaders/in_glow_x.slang"
filter_linear4 = "true"
wrap_mode4 = "mirrored_repeat"
mipmap_input4 = "false"
alias4 = "in_glow_pass_x"
float_framebuffer4 = "true"
srgb_framebuffer4 = "false"
scale_type_x4 = "source"
scale_x4 = "1.000000"
scale_type_y4 = "source"
scale_y4 = "1.000000"
shader5 = "shaders/in_glow_y.slang"
filter_linear5 = "true"
wrap_mode5 = "mirrored_repeat"
mipmap_input5 = "false"
alias5 = "in_glow_pass"
float_framebuffer5 = "true"
srgb_framebuffer5 = "false"
scale_type_x5 = "source"
scale_x5 = "1.000000"
scale_type_y5 = "source"
scale_y5 = "1.000000"
shader6 = "shaders/halo_x.slang"
filter_linear6 = "true"
wrap_mode6 = "clamp_to_edge"
mipmap_input6 = "false"
alias6 = "halo_pass_x"
float_framebuffer6 = "true"
srgb_framebuffer6 = "false"
scale_type_x6 = "source"
scale_x6 = "1.000000"
scale_type_y6 = "source"
scale_y6 = "1.000000"
shader7 = "shaders/halo_y.slang"
filter_linear7 = "true"
wrap_mode7 = "clamp_to_edge"
mipmap_input7 = "false"
alias7 = "halo_pass"
float_framebuffer7 = "true"
srgb_framebuffer7 = "false"
scale_type_x7 = "source"
scale_x7 = "1.000000"
scale_type_y7 = "source"
scale_y7 = "1.000000"
shader8 = "shaders/avglum_pass.slang"
filter_linear8 = "true"
wrap_mode8 = "mirrored_repeat"
mipmap_input8 = "false"
alias8 = "avglum_pass"
float_framebuffer8 = "false"
srgb_framebuffer8 = "false"
scale_type_x8 = "source"
scale_x8 = "0.500000"
scale_type_y8 = "source"
scale_y8 = "0.500000"
shader9 = "shaders/reflection_blur_x.slang"
filter_linear9 = "true"
wrap_mode9 = "mirrored_repeat"
mipmap_input9 = "false"
alias9 = "reflected_blurred_pass1"
float_framebuffer9 = "false"
srgb_framebuffer9 = "false"
scale_type_x9 = "source"
scale_x9 = "1.000000"
scale_type_y9 = "source"
scale_y9 = "1.000000"
shader10 = "shaders/reflection_blur_y.slang"
filter_linear10 = "true"
wrap_mode10 = "mirrored_repeat"
mipmap_input10 = "false"
alias10 = "reflected_blurred_pass2"
float_framebuffer10 = "false"
srgb_framebuffer10 = "false"
scale_type_x10 = "source"
scale_x10 = "1.000000"
scale_type_y10 = "source"
scale_y10 = "1.000000"
shader11 = "shaders/bloom_pass_1.slang"
filter_linear11 = "true"
wrap_mode11 = "mirrored_repeat"
mipmap_input11 = "false"
alias11 = "bloom_pass_1"
float_framebuffer11 = "false"
srgb_framebuffer11 = "false"
scale_type_x11 = "source"
scale_x11 = "1.000000"
scale_type_y11 = "source"
scale_y11 = "1.000000"
shader12 = "shaders/bloom_pass_2.slang"
filter_linear12 = "true"
wrap_mode12 = "clamp_to_edge"
mipmap_input12 = "false"
alias12 = "bloom_pass_2"
float_framebuffer12 = "false"
srgb_framebuffer12 = "false"
scale_type_x12 = "source"
scale_x12 = "0.500000"
scale_type_y12 = "source"
scale_y12 = "0.500000"
shader13 = "shaders/bloom_pass_3.slang"
filter_linear13 = "true"
wrap_mode13 = "clamp_to_edge"
mipmap_input13 = "false"
alias13 = "bloom_pass_3"
float_framebuffer13 = "false"
srgb_framebuffer13 = "false"
scale_type_x13 = "source"
scale_x13 = "1.000000"
scale_type_y13 = "source"
scale_y13 = "1.000000"
shader14 = "shaders/bloom_pass_4.slang"
filter_linear14 = "true"
wrap_mode14 = "mirrored_repeat"
mipmap_input14 = "false"
alias14 = "bloom_pass_final"
float_framebuffer14 = "true"
srgb_framebuffer14 = "false"
scale_type_x14 = "source"
scale_x14 = "1.000000"
scale_type_y14 = "source"
scale_y14 = "1.000000"
shader15 = "shaders/ambi_temporal_pass.slang"
filter_linear15 = "true"
wrap_mode15 = "clamp_to_border"
mipmap_input15 = "false"
alias15 = "ambi_temporal_pass"
float_framebuffer15 = "true"
srgb_framebuffer15 = "false"
scale_type_x15 = "viewport"
scale_x15 = "0.050000"
scale_type_y15 = "viewport"
scale_y15 = "0.050000"
shader16 = "shaders/final_pass.slang"
filter_linear16 = "true"
wrap_mode16 = "mirrored_repeat"
mipmap_input16 = "false"
alias16 = "final_pass"
float_framebuffer16 = "false"
srgb_framebuffer16 = "false"
scale_type_x16 = "viewport"
scale_x16 = "1.000000"
scale_type_y16 = "viewport"
scale_y16 = "1.000000"
DO_CCORRECTION = "1.000000"
LUMINANCE = "0.200000"
GAMMA_OUT = "0.500000"
DO_IN_GLOW = "1.000000"
IN_GLOW_POWER = "0.850000"
IN_GLOW_GAMMA = "2.000000"
IN_GLOW_SPREAD = "1.200000"
IN_GLOW_W = "1.000000"
IN_GLOW_H = "7.000000"
IN_GLOW_BIAS = "0.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.400000"
HALO_W = "3.000001"
HALO_H = "3.000001"
HALO_GAMMA = "1.300000"
HALO_VS_SCAN = "0.800000"
DO_SCANLINES = "1.000000"
SCANLINE_MIN = "0.200000"
SCANLINE_MAX = "3.000000"
SCANLINE_DARK = "0.100000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.500000"
DO_CURVATURE = "1.000000"
GEOM_WARP_X = "0.475000"
GEOM_WARP_Y = "0.500000"
GEOM_CORNER_SMOOTH = "200.000000"
BEZEL_INNER_ZOOM = "-0.215000"
BEZEL_IMAGE_BORDER = "1.020000"
BEZEL_RFL_OFFSET = "0.002000"
BEZEL_REFL_ZOOM = "0.993000"
AMBI_FALLOFF = "0.400000"
AMBI_POWER = "1.000000"
V_SIZE = "2.700000"
V_POWER = "1.050000"
S_POSITION = "194.000000"
textures = "monitor_body_curved;monitor_body_straight;bg_under;bg_over;backdrop"
monitor_body_curved = "textures/monitor_body_curved.png"
monitor_body_curved_linear = "true"
monitor_body_curved_wrap_mode = "clamp_to_edge"
monitor_body_curved_mipmap = "true"
monitor_body_straight = "textures/monitor_body_straight.png"
monitor_body_straight_linear = "true"
monitor_body_straight_wrap_mode = "clamp_to_edge"
monitor_body_straight_mipmap = "true"
bg_under = "textures/background_under.png"
bg_under_linear = "true"
bg_under_wrap_mode = "mirrored_repeat"
bg_under_mipmap = "true"
bg_over = "textures/background_over.png"
bg_over_linear = "true"
bg_over_wrap_mode = "mirrored_repeat"
bg_over_mipmap = "true"
backdrop = "textures/boothill.jpg"
backdrop_linear = "true"
backdrop_wrap_mode = "mirrored_repeat"
backdrop_mipmap = "true"

View File

@ -28,20 +28,36 @@
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:**
**Glow/Blur:**
Emulate the CRT glowing "feature", so that the brighter areas of
the image will light their surroundings.
the image will light their surroundings,
with options to switch to classic blur.
Input signal glow strength:
Input signal strength:
The input signal gain
Sharpness (horizontal, vertical):
How much the glow will "spread".
When pushed to its maximum value, no blurring will occour.
Gamma:
Input gamma:
Controls how much the signal has to be bright to produce the glow.
Glow to blur bias:
Modulates between glow (0.. brighter colors expands over darker ones)
versus blur (..1 all the colors are blurred)
Glow spread amount:
The higher, the more the bright colors will smoothly expand.
It emulates the natural antialiasing you see on CRTs on bright areas.
Sharpness (horizontal, vertical):
The lower, the blurrier the image.
When set to zero, his value is handled using "Glow spread amount"
When pushed to its maximum value, no blurring will occour.
Glow / blur bias:
Higher negative values -> more glow : brighter colors expands over darker ones.
Higher positive values -> means blur: all the colors are blurred.
0.0 means no blur, no glow.
Blur NTSC artifacts more
When NTSC artifacts emulation is enabled, this option will let you blur
them more, this would help to selectively blur things like waterfalls
in Sonic 2.
Blur less NTSC artifacts (min treshold)
In relation to the previous setting, this allow to blur only the most
prominent artifacts.
Show NTSC artifacts mask (debug)
This will help you to set the previous 2 values as it will show only
the artifacts that will modify the blur.
**RGB Masks and/or Darklines:**
Emulates CRT RGB phosphors (RGB Mask),
@ -59,6 +75,8 @@
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.
This option is disabled if a vertical game is detected
(mame 2003 plus and fbneo cores)
. Horizontal Gap between triads:
In real displays, rgb triads are separated by a black space.
You can emulate it by turning this feature on.
@ -130,9 +148,11 @@
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.
Type 0 allows you to configure strength and stagger.
The stagger height will be modulated by the scanline height.
Type 1 produces tinner slotmasks, but with fixed stagger.
The stagger height will be modulated by the scanline height.
Type 3 is fixed and produces heavier and thinner slotmasks without visible scanlines.
Slotmask strength
The strenght of the slotmask (available on type 1 and 2 only)
. Offset
@ -150,20 +170,25 @@
Controls how much the bloom has to be wide.
Quality:
How much the shape of the bloomed picture will reflect the original one.
Input Gamma:
Input Gamma (threshold):
Use this as a threshold to control how much a pixel has to be bright
to produce a bloom effect.
Output Gamma (contour smoothness):
Lowering it will make the bloom contour more pronunced.
Handy to simulate well defined "Aura" effects.
Power multiplier:
Just apply a gain to the final bloom.
Output Gamma:
Play with it.
Strength on bright areas:
Modulate: Local exposure eye adaption strength
Simulate the process through which the pupil adapt itself to different
light conditions.
Modulate: Strength on bright areas (0 = aura)
Since the light produced by the bloom effect is added to the underlying
image, it can produce burn effects on the already bright areas.
image, it can produce clipping effects on the already bright areas.
This is actually an hack that will avoid to bloom them.
Don't use too low values.
Bypass:
Bypass/Solo:
See how the bloomed image looks alone.
Use 1.0 to see naked bloom without any modulation applied
Use 2.0 to see naked bloom with modulation applied
**Curvature:**
Emulates a curved CRT display.
@ -185,6 +210,8 @@
that will be filled by the game content
- The blue channel represents the part of the bezel that will be filled by the game reflection.
Straight
Use a straight bezel instead of a curved one.
Bezel color (red,green,blue) and contrast:
Allows to choose the color of the monitor frame.
Image zoom:
@ -193,8 +220,11 @@
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.
Sharp reflections
Modulates from totally blurred to totally sharp reflection appearance.
**Global shift/zoom image:**
Zoom and shift everything on screen, but background pictures.
**Backgound image:**
Draws an image on screen picked from the "textures" shader subdirectory,
@ -214,7 +244,13 @@
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.
Wrap mode:
What to do outside the image:
0 Mirrored repeat because so is configured in main .slangp.
1 Clamp to border and it means black.
2 Clamp to edge and means that it repeats the edge color.
3 Plain repeat without mirroring.
**Ambient light leds:**
Emulates the presence of led strips under the monitor that lights the
surroundings according to the edges of the game content.
@ -231,14 +267,17 @@
How wide is the area illuminated.
Led power:
Leds post gain.
Note: To avoid burn-in effects, keep Light Falloff + Led power < 1.4
Note: To avoid burn-in effects, keep Light Falloff + Led power not too high.
Colorize Bezel
Allow to add an amount of the ambient light over the bezel frame
**Aspect Ratio:**
When using effects that need Retroarch aspect ratio option
to be set to "full", you have to provide the source aspect
ratio to the shader.
Use -6 for MAME cores that pre-rotates the game (TATE mode)
With Mame 2003 plus and fbneo cores, koko-aio detects if the
game is rotated or not without any user intervention.
Aspect Ratio Numerator:
Setting non positive value here will switch to a predefined
@ -276,3 +315,18 @@
You can blank single line or a group of them at once.
See what performs better on your display.
**Backdrop support:**
Some (not so much) old arcades used a mirror trick to overlay the
game content over an high definition printed image.<br>
koko-aio supports them but you will explicitely need to enable<br>
that feature in config.inc file, by uncommenting a string this way:<br>
//#define STATIC_SUPPORT_BACKDROP 1.0 <br>
becomes: <br>
#define STATIC_SUPPORT_BACKDROP 1.0 <br>
You can only combine the static backdrop with images <br>
that are painted over the screen.<br>
If you need to zoom the game content only, use the global zoom controls.

View File

@ -1,180 +1,180 @@
shaders = "17"
shader0 = "shaders/first_pass.slang"
shader0 = "shaders/ntsc_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
alias0 = "first_pass"
alias0 = "ntsc_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "2.000000"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "2.000000"
shader1 = "shaders/fxaa.slang"
filter_linear1 = "true"
scale_y0 = "1.000000"
shader1 = "shaders/first_pass.slang"
filter_linear1 = "false"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "true"
alias1 = "FXAA_pass"
mipmap_input1 = "false"
alias1 = "first_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
scale_x1 = "1.000000"
scale_x1 = "2.000000"
scale_type_y1 = "source"
scale_y1 = "1.000000"
shader2 = "shaders/shift_and_bleed.slang"
scale_y1 = "2.000000"
shader2 = "shaders/fxaa.slang"
filter_linear2 = "true"
wrap_mode2 = "mirrored_repeat"
mipmap_input2 = "false"
alias2 = "shift_and_bleed_pass"
mipmap_input2 = "true"
alias2 = "FXAA_pass"
float_framebuffer2 = "false"
srgb_framebuffer2 = "false"
scale_type_x2 = "source"
scale_x2 = "1.000000"
scale_type_y2 = "source"
scale_y2 = "1.000000"
shader3 = "shaders/in_glow.slang"
shader3 = "shaders/shift_and_bleed.slang"
filter_linear3 = "true"
wrap_mode3 = "mirrored_repeat"
mipmap_input3 = "false"
alias3 = "in_glow_pass"
alias3 = "shift_and_bleed_pass"
float_framebuffer3 = "true"
srgb_framebuffer3 = "false"
scale_type_x3 = "source"
scale_x3 = "1.000000"
scale_type_y3 = "source"
scale_y3 = "1.000000"
shader4 = "shaders/halo.slang"
shader4 = "shaders/in_glow_x.slang"
filter_linear4 = "true"
wrap_mode4 = "mirrored_repeat"
mipmap_input4 = "false"
alias4 = "halo_pass"
alias4 = "in_glow_pass_x"
float_framebuffer4 = "true"
srgb_framebuffer4 = "false"
scale_type_x4 = "source"
scale_x4 = "1.000000"
scale_type_y4 = "source"
scale_y4 = "1.000000"
shader5 = "shaders/avglum_pass.slang"
shader5 = "shaders/in_glow_y.slang"
filter_linear5 = "true"
wrap_mode5 = "mirrored_repeat"
mipmap_input5 = "false"
alias5 = "avglum_pass"
float_framebuffer5 = "false"
alias5 = "in_glow_pass"
float_framebuffer5 = "true"
srgb_framebuffer5 = "false"
scale_type_x5 = "source"
scale_x5 = "0.500000"
scale_x5 = "1.000000"
scale_type_y5 = "source"
scale_y5 = "0.500000"
shader6 = "shaders/reflection_blur_h.slang"
scale_y5 = "1.000000"
shader6 = "shaders/halo_x.slang"
filter_linear6 = "true"
wrap_mode6 = "mirrored_repeat"
wrap_mode6 = "clamp_to_edge"
mipmap_input6 = "false"
alias6 = "reflected_blurred_pass1"
float_framebuffer6 = "false"
alias6 = "halo_pass_x"
float_framebuffer6 = "true"
srgb_framebuffer6 = "false"
scale_type_x6 = "source"
scale_x6 = "1.000000"
scale_type_y6 = "source"
scale_y6 = "1.000000"
shader7 = "shaders/reflection_blur_v.slang"
shader7 = "shaders/halo_y.slang"
filter_linear7 = "true"
wrap_mode7 = "mirrored_repeat"
wrap_mode7 = "clamp_to_edge"
mipmap_input7 = "false"
alias7 = "reflected_blurred_pass2"
float_framebuffer7 = "false"
alias7 = "halo_pass"
float_framebuffer7 = "true"
srgb_framebuffer7 = "false"
scale_type_x7 = "source"
scale_x7 = "1.000000"
scale_type_y7 = "source"
scale_y7 = "1.000000"
shader8 = "shaders/bloom_pass_1.slang"
shader8 = "shaders/avglum_pass.slang"
filter_linear8 = "true"
wrap_mode8 = "mirrored_repeat"
mipmap_input8 = "false"
alias8 = "bloom_pass_1"
float_framebuffer8 = "true"
alias8 = "avglum_pass"
float_framebuffer8 = "false"
srgb_framebuffer8 = "false"
scale_type_x8 = "source"
scale_x8 = "1.000000"
scale_x8 = "0.500000"
scale_type_y8 = "source"
scale_y8 = "1.000000"
shader9 = "shaders/bloom_pass_2.slang"
scale_y8 = "0.500000"
shader9 = "shaders/reflection_blur_x.slang"
filter_linear9 = "true"
wrap_mode9 = "clamp_to_edge"
wrap_mode9 = "mirrored_repeat"
mipmap_input9 = "false"
alias9 = "bloom_pass_2"
alias9 = "reflected_blurred_pass1"
float_framebuffer9 = "false"
srgb_framebuffer9 = "false"
scale_type_x9 = "source"
scale_x9 = "0.500000"
scale_x9 = "1.000000"
scale_type_y9 = "source"
scale_y9 = "0.500000"
shader10 = "shaders/bloom_pass_3.slang"
scale_y9 = "1.000000"
shader10 = "shaders/reflection_blur_y.slang"
filter_linear10 = "true"
wrap_mode10 = "clamp_to_edge"
wrap_mode10 = "mirrored_repeat"
mipmap_input10 = "false"
alias10 = "bloom_pass_3"
alias10 = "reflected_blurred_pass2"
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"
shader11 = "shaders/bloom_pass_1.slang"
filter_linear11 = "true"
wrap_mode11 = "mirrored_repeat"
mipmap_input11 = "false"
alias11 = "bloom_pass_final"
alias11 = "bloom_pass_1"
float_framebuffer11 = "false"
srgb_framebuffer11 = "false"
scale_type_x11 = "source"
scale_x11 = "1.000000"
scale_type_y11 = "source"
scale_y11 = "1.000000"
shader12 = "shaders/ambi_push_pass.slang"
shader12 = "shaders/bloom_pass_2.slang"
filter_linear12 = "true"
wrap_mode12 = "mirrored_repeat"
wrap_mode12 = "clamp_to_edge"
mipmap_input12 = "false"
alias12 = "ambi_push_pass"
float_framebuffer12 = "true"
alias12 = "bloom_pass_2"
float_framebuffer12 = "false"
srgb_framebuffer12 = "false"
scale_type_x12 = "source"
scale_x12 = "1.000000"
scale_x12 = "0.500000"
scale_type_y12 = "source"
scale_y12 = "1.000000"
shader13 = "shaders/ambi_pre_pass.slang"
scale_y12 = "0.500000"
shader13 = "shaders/bloom_pass_3.slang"
filter_linear13 = "true"
wrap_mode13 = "clamp_to_border"
mipmap_input13 = "true"
alias13 = "ambi_pre_pass1"
wrap_mode13 = "clamp_to_edge"
mipmap_input13 = "false"
alias13 = "bloom_pass_3"
float_framebuffer13 = "false"
srgb_framebuffer13 = "false"
scale_type_x13 = "source"
scale_x13 = "1.000000"
scale_type_y13 = "source"
scale_y13 = "1.000000"
shader14 = "shaders/ambi_temporal_pass.slang"
shader14 = "shaders/bloom_pass_4.slang"
filter_linear14 = "true"
wrap_mode14 = "clamp_to_border"
wrap_mode14 = "mirrored_repeat"
mipmap_input14 = "false"
alias14 = "ambi_temporal_pass"
alias14 = "bloom_pass_final"
float_framebuffer14 = "true"
srgb_framebuffer14 = "false"
scale_type_x14 = "source"
scale_x14 = "1.000000"
scale_type_y14 = "source"
scale_y14 = "1.000000"
shader15 = "shaders/isrotated.slang"
shader15 = "shaders/ambi_temporal_pass.slang"
filter_linear15 = "true"
wrap_mode15 = "mirrored_repeat"
wrap_mode15 = "clamp_to_border"
mipmap_input15 = "false"
alias15 = "isrotated_pass"
float_framebuffer15 = "false"
alias15 = "ambi_temporal_pass"
float_framebuffer15 = "true"
srgb_framebuffer15 = "false"
scale_type_x15 = "viewport"
scale_x15 = "0.100000"
scale_x15 = "0.050000"
scale_type_y15 = "viewport"
scale_y15 = "0.100000"
scale_y15 = "0.050000"
shader16 = "shaders/final_pass.slang"
filter_linear16 = "true"
wrap_mode16 = "mirrored_repeat"
@ -188,16 +188,12 @@ scale_type_y16 = "viewport"
scale_y16 = "1.000000"
DO_CCORRECTION = "1.000000"
LUMINANCE = "0.200000"
GAMMA_OUT = "0.550000"
DO_SHIFT_RGB = "1.000000"
SHIFT_R = "-20.000000"
SHIFT_G = "1.000000"
SHIFT_B = "20.000000"
GAMMA_OUT = "0.530000"
DO_IN_GLOW = "1.000000"
IN_GLOW_POWER = "1.900000"
IN_GLOW_W = "1.000000"
IN_GLOW_H = "1.000000"
IN_GLOW_POWER = "1.950000"
IN_GLOW_GAMMA = "2.000000"
IN_GLOW_W = "0.000000"
IN_GLOW_H = "2.000000"
IN_GLOW_BIAS = "0.000000"
DO_VMASK_AND_DARKLINES = "1.000000"
RGB_MASK_STRENGTH = "1.000000"
@ -211,25 +207,31 @@ HALO_H = "3.500000"
HALO_GAMMA = "1.300000"
HALO_VS_SCAN = "0.800000"
DO_SCANLINES = "1.000000"
BLOOM_MIX = "0.150000"
BLOOM_SIZE = "1.500000"
BLOOM_POWER = "8.000000"
BLOOM_GAMMA_OUT = "1.200000"
SCANLINE_MIN = "0.200000"
SCANLINE_DARK = "0.050000"
BLOOM_MIX = "0.500000"
DO_CURVATURE = "1.000000"
GEOM_WARP_X = "0.150000"
GEOM_WARP_Y = "0.150000"
GEOM_WARP_X = "0.475000"
GEOM_WARP_Y = "0.500000"
GEOM_CORNER_SMOOTH = "200.000000"
BEZEL_INNER_ZOOM = "-0.215000"
BEZEL_IMAGE_BORDER = "1.020000"
BEZEL_RFL_OFFSET = "0.002000"
BEZEL_REFL_ZOOM = "0.993000"
AMBI_FALLOFF = "0.400000"
AMBI_POWER = "1.000000"
V_SIZE = "2.700000"
V_POWER = "1.050000"
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"
textures = "monitor_body_curved;monitor_body_straight;bg_under;bg_over;backdrop"
monitor_body_curved = "textures/monitor_body_curved.png"
monitor_body_curved_linear = "true"
monitor_body_curved_wrap_mode = "clamp_to_edge"
monitor_body_curved_mipmap = "true"
monitor_body_straight = "textures/monitor_body_straight.png"
monitor_body_straight_linear = "true"
monitor_body_straight_wrap_mode = "clamp_to_edge"
monitor_body_straight_mipmap = "true"
bg_under = "textures/background_under.png"
bg_under_linear = "true"
bg_under_wrap_mode = "mirrored_repeat"
@ -238,3 +240,7 @@ bg_over = "textures/background_over.png"
bg_over_linear = "true"
bg_over_wrap_mode = "mirrored_repeat"
bg_over_mipmap = "true"
backdrop = "textures/boothill.jpg"
backdrop_linear = "true"
backdrop_wrap_mode = "mirrored_repeat"
backdrop_mipmap = "true"

View File

@ -1,180 +1,180 @@
shaders = "17"
shader0 = "shaders/first_pass.slang"
shader0 = "shaders/ntsc_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
alias0 = "first_pass"
alias0 = "ntsc_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "2.000000"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "2.000000"
shader1 = "shaders/fxaa.slang"
filter_linear1 = "true"
scale_y0 = "1.000000"
shader1 = "shaders/first_pass.slang"
filter_linear1 = "false"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "true"
alias1 = "FXAA_pass"
mipmap_input1 = "false"
alias1 = "first_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
scale_x1 = "1.000000"
scale_x1 = "2.000000"
scale_type_y1 = "source"
scale_y1 = "1.000000"
shader2 = "shaders/shift_and_bleed.slang"
scale_y1 = "2.000000"
shader2 = "shaders/fxaa.slang"
filter_linear2 = "true"
wrap_mode2 = "mirrored_repeat"
mipmap_input2 = "false"
alias2 = "shift_and_bleed_pass"
mipmap_input2 = "true"
alias2 = "FXAA_pass"
float_framebuffer2 = "false"
srgb_framebuffer2 = "false"
scale_type_x2 = "source"
scale_x2 = "1.000000"
scale_type_y2 = "source"
scale_y2 = "1.000000"
shader3 = "shaders/in_glow.slang"
shader3 = "shaders/shift_and_bleed.slang"
filter_linear3 = "true"
wrap_mode3 = "mirrored_repeat"
mipmap_input3 = "false"
alias3 = "in_glow_pass"
alias3 = "shift_and_bleed_pass"
float_framebuffer3 = "true"
srgb_framebuffer3 = "false"
scale_type_x3 = "source"
scale_x3 = "1.000000"
scale_type_y3 = "source"
scale_y3 = "1.000000"
shader4 = "shaders/halo.slang"
shader4 = "shaders/in_glow_x.slang"
filter_linear4 = "true"
wrap_mode4 = "mirrored_repeat"
mipmap_input4 = "false"
alias4 = "halo_pass"
alias4 = "in_glow_pass_x"
float_framebuffer4 = "true"
srgb_framebuffer4 = "false"
scale_type_x4 = "source"
scale_x4 = "1.000000"
scale_type_y4 = "source"
scale_y4 = "1.000000"
shader5 = "shaders/avglum_pass.slang"
shader5 = "shaders/in_glow_y.slang"
filter_linear5 = "true"
wrap_mode5 = "mirrored_repeat"
mipmap_input5 = "false"
alias5 = "avglum_pass"
float_framebuffer5 = "false"
alias5 = "in_glow_pass"
float_framebuffer5 = "true"
srgb_framebuffer5 = "false"
scale_type_x5 = "source"
scale_x5 = "0.500000"
scale_x5 = "1.000000"
scale_type_y5 = "source"
scale_y5 = "0.500000"
shader6 = "shaders/reflection_blur_h.slang"
scale_y5 = "1.000000"
shader6 = "shaders/halo_x.slang"
filter_linear6 = "true"
wrap_mode6 = "mirrored_repeat"
wrap_mode6 = "clamp_to_edge"
mipmap_input6 = "false"
alias6 = "reflected_blurred_pass1"
float_framebuffer6 = "false"
alias6 = "halo_pass_x"
float_framebuffer6 = "true"
srgb_framebuffer6 = "false"
scale_type_x6 = "source"
scale_x6 = "1.000000"
scale_type_y6 = "source"
scale_y6 = "1.000000"
shader7 = "shaders/reflection_blur_v.slang"
shader7 = "shaders/halo_y.slang"
filter_linear7 = "true"
wrap_mode7 = "mirrored_repeat"
wrap_mode7 = "clamp_to_edge"
mipmap_input7 = "false"
alias7 = "reflected_blurred_pass2"
float_framebuffer7 = "false"
alias7 = "halo_pass"
float_framebuffer7 = "true"
srgb_framebuffer7 = "false"
scale_type_x7 = "source"
scale_x7 = "1.000000"
scale_type_y7 = "source"
scale_y7 = "1.000000"
shader8 = "shaders/bloom_pass_1.slang"
shader8 = "shaders/avglum_pass.slang"
filter_linear8 = "true"
wrap_mode8 = "mirrored_repeat"
mipmap_input8 = "false"
alias8 = "bloom_pass_1"
float_framebuffer8 = "true"
alias8 = "avglum_pass"
float_framebuffer8 = "false"
srgb_framebuffer8 = "false"
scale_type_x8 = "source"
scale_x8 = "1.000000"
scale_x8 = "0.500000"
scale_type_y8 = "source"
scale_y8 = "1.000000"
shader9 = "shaders/bloom_pass_2.slang"
scale_y8 = "0.500000"
shader9 = "shaders/reflection_blur_x.slang"
filter_linear9 = "true"
wrap_mode9 = "clamp_to_edge"
wrap_mode9 = "mirrored_repeat"
mipmap_input9 = "false"
alias9 = "bloom_pass_2"
alias9 = "reflected_blurred_pass1"
float_framebuffer9 = "false"
srgb_framebuffer9 = "false"
scale_type_x9 = "source"
scale_x9 = "0.500000"
scale_x9 = "1.000000"
scale_type_y9 = "source"
scale_y9 = "0.500000"
shader10 = "shaders/bloom_pass_3.slang"
scale_y9 = "1.000000"
shader10 = "shaders/reflection_blur_y.slang"
filter_linear10 = "true"
wrap_mode10 = "clamp_to_edge"
wrap_mode10 = "mirrored_repeat"
mipmap_input10 = "false"
alias10 = "bloom_pass_3"
alias10 = "reflected_blurred_pass2"
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"
shader11 = "shaders/bloom_pass_1.slang"
filter_linear11 = "true"
wrap_mode11 = "mirrored_repeat"
mipmap_input11 = "false"
alias11 = "bloom_pass_final"
alias11 = "bloom_pass_1"
float_framebuffer11 = "false"
srgb_framebuffer11 = "false"
scale_type_x11 = "source"
scale_x11 = "1.000000"
scale_type_y11 = "source"
scale_y11 = "1.000000"
shader12 = "shaders/ambi_push_pass.slang"
shader12 = "shaders/bloom_pass_2.slang"
filter_linear12 = "true"
wrap_mode12 = "mirrored_repeat"
wrap_mode12 = "clamp_to_edge"
mipmap_input12 = "false"
alias12 = "ambi_push_pass"
float_framebuffer12 = "true"
alias12 = "bloom_pass_2"
float_framebuffer12 = "false"
srgb_framebuffer12 = "false"
scale_type_x12 = "source"
scale_x12 = "1.000000"
scale_x12 = "0.500000"
scale_type_y12 = "source"
scale_y12 = "1.000000"
shader13 = "shaders/ambi_pre_pass.slang"
scale_y12 = "0.500000"
shader13 = "shaders/bloom_pass_3.slang"
filter_linear13 = "true"
wrap_mode13 = "clamp_to_border"
mipmap_input13 = "true"
alias13 = "ambi_pre_pass1"
wrap_mode13 = "clamp_to_edge"
mipmap_input13 = "false"
alias13 = "bloom_pass_3"
float_framebuffer13 = "false"
srgb_framebuffer13 = "false"
scale_type_x13 = "source"
scale_x13 = "1.000000"
scale_type_y13 = "source"
scale_y13 = "1.000000"
shader14 = "shaders/ambi_temporal_pass.slang"
shader14 = "shaders/bloom_pass_4.slang"
filter_linear14 = "true"
wrap_mode14 = "clamp_to_border"
wrap_mode14 = "mirrored_repeat"
mipmap_input14 = "false"
alias14 = "ambi_temporal_pass"
alias14 = "bloom_pass_final"
float_framebuffer14 = "true"
srgb_framebuffer14 = "false"
scale_type_x14 = "source"
scale_x14 = "1.000000"
scale_type_y14 = "source"
scale_y14 = "1.000000"
shader15 = "shaders/isrotated.slang"
shader15 = "shaders/ambi_temporal_pass.slang"
filter_linear15 = "true"
wrap_mode15 = "mirrored_repeat"
wrap_mode15 = "clamp_to_border"
mipmap_input15 = "false"
alias15 = "isrotated_pass"
float_framebuffer15 = "false"
alias15 = "ambi_temporal_pass"
float_framebuffer15 = "true"
srgb_framebuffer15 = "false"
scale_type_x15 = "viewport"
scale_x15 = "0.100000"
scale_x15 = "0.050000"
scale_type_y15 = "viewport"
scale_y15 = "0.100000"
scale_y15 = "0.050000"
shader16 = "shaders/final_pass.slang"
filter_linear16 = "true"
wrap_mode16 = "mirrored_repeat"
@ -188,53 +188,47 @@ scale_type_y16 = "viewport"
scale_y16 = "1.000000"
DO_CCORRECTION = "1.000000"
LUMINANCE = "0.200000"
GAMMA_OUT = "0.550000"
DO_SHIFT_RGB = "1.000000"
SHIFT_R = "-20.000000"
SHIFT_G = "1.000000"
SHIFT_B = "20.000000"
GAMMA_OUT = "0.520000"
DO_IN_GLOW = "1.000000"
IN_GLOW_POWER = "1.900000"
IN_GLOW_W = "1.000000"
IN_GLOW_H = "1.000000"
IN_GLOW_POWER = "2.100000"
IN_GLOW_GAMMA = "2.000000"
IN_GLOW_W = "0.000000"
IN_GLOW_H = "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.000000"
DARKLINES_PERIOD = "2.000000"
DO_HALO = "1.000000"
HALO_POWER = "0.430000"
HALO_POWER = "0.280000"
HALO_W = "3.500000"
HALO_H = "3.500000"
HALO_GAMMA = "1.300000"
HALO_GAMMA = "1.500000"
HALO_VS_SCAN = "0.800000"
DO_SCANLINES = "1.000000"
SCANLINE_MIN = "0.450000"
SCANLINE_DARK = "0.050000"
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"
BLOOM_MIX = "0.500000"
DO_CURVATURE = "1.000000"
GEOM_WARP_X = "1.200000"
GEOM_WARP_Y = "1.300000"
GEOM_CORNER_SIZE = "0.005000"
GEOM_WARP_X = "0.450000"
GEOM_WARP_Y = "0.500000"
GEOM_CORNER_SMOOTH = "700.000000"
DO_BEZEL = "1.000000"
BEZEL_R = "0.020000"
BEZEL_R = "0.025000"
BEZEL_G = "0.000000"
BEZEL_B = "-0.020000"
BEZEL_CON = "1.280000"
BEZEL_INNER_ZOOM = "-0.440000"
BEZEL_B = "-0.025000"
BEZEL_INNER_ZOOM = "-0.390000"
BEZEL_FRAME_ZOOM = "-0.140000"
BEZEL_IMAGE_BORDER = "1.030000"
BEZEL_REFL_STRENGTH = "0.200000"
BEZEL_RFL_OFFSET = "-0.003000"
BEZEL_REFL_ZOOM = "0.993000"
DO_BG_IMAGE = "1.000000"
BG_IMAGE_OVER = "1.000000"
BG_IMAGE_OFFX = "0.002000"
BG_IMAGE_OFFY = "0.005000"
BG_IMAGE_OFFY = "0.045500"
BG_IMAGE_ZOOM = "1.091004"
DO_AMBILIGHT = "0.000000"
AMBI_FALLOFF = "0.400000"
@ -246,11 +240,19 @@ DO_SPOT = "1.000000"
S_POSITION = "194.000000"
S_SIZE = "0.640000"
S_POWER = "0.250000"
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"
DO_GLOBAL_SHZO = "1.000000"
GLOBAL_OFFX = "-0.001000"
GLOBAL_OFFY = "-0.037000"
GLOBAL_ZOOM = "1.000000"
textures = "monitor_body_curved;monitor_body_straight;bg_under;bg_over;backdrop"
monitor_body_curved = "textures/monitor_body_curved.png"
monitor_body_curved_linear = "true"
monitor_body_curved_wrap_mode = "clamp_to_edge"
monitor_body_curved_mipmap = "true"
monitor_body_straight = "textures/monitor_body_straight.png"
monitor_body_straight_linear = "true"
monitor_body_straight_wrap_mode = "clamp_to_edge"
monitor_body_straight_mipmap = "true"
bg_under = "textures/background_under.png"
bg_under_linear = "true"
bg_under_wrap_mode = "mirrored_repeat"
@ -259,3 +261,7 @@ bg_over = "textures/background_over.png"
bg_over_linear = "true"
bg_over_wrap_mode = "mirrored_repeat"
bg_over_mipmap = "true"
backdrop = "textures/boothill.jpg"
backdrop_linear = "true"
backdrop_wrap_mode = "mirrored_repeat"
backdrop_mipmap = "true"

View File

@ -1,180 +1,180 @@
shaders = "17"
shader0 = "shaders/first_pass.slang"
shader0 = "shaders/ntsc_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
alias0 = "first_pass"
alias0 = "ntsc_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "2.000000"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "2.000000"
shader1 = "shaders/fxaa.slang"
filter_linear1 = "true"
scale_y0 = "1.000000"
shader1 = "shaders/first_pass.slang"
filter_linear1 = "false"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "true"
alias1 = "FXAA_pass"
mipmap_input1 = "false"
alias1 = "first_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
scale_x1 = "1.000000"
scale_x1 = "2.000000"
scale_type_y1 = "source"
scale_y1 = "1.000000"
shader2 = "shaders/shift_and_bleed.slang"
scale_y1 = "2.000000"
shader2 = "shaders/fxaa.slang"
filter_linear2 = "true"
wrap_mode2 = "mirrored_repeat"
mipmap_input2 = "false"
alias2 = "shift_and_bleed_pass"
mipmap_input2 = "true"
alias2 = "FXAA_pass"
float_framebuffer2 = "false"
srgb_framebuffer2 = "false"
scale_type_x2 = "source"
scale_x2 = "1.000000"
scale_type_y2 = "source"
scale_y2 = "1.000000"
shader3 = "shaders/in_glow.slang"
shader3 = "shaders/shift_and_bleed.slang"
filter_linear3 = "true"
wrap_mode3 = "mirrored_repeat"
mipmap_input3 = "false"
alias3 = "in_glow_pass"
alias3 = "shift_and_bleed_pass"
float_framebuffer3 = "true"
srgb_framebuffer3 = "false"
scale_type_x3 = "source"
scale_x3 = "1.000000"
scale_type_y3 = "source"
scale_y3 = "1.000000"
shader4 = "shaders/halo.slang"
shader4 = "shaders/in_glow_x.slang"
filter_linear4 = "true"
wrap_mode4 = "mirrored_repeat"
mipmap_input4 = "false"
alias4 = "halo_pass"
alias4 = "in_glow_pass_x"
float_framebuffer4 = "true"
srgb_framebuffer4 = "false"
scale_type_x4 = "source"
scale_x4 = "1.000000"
scale_type_y4 = "source"
scale_y4 = "1.000000"
shader5 = "shaders/avglum_pass.slang"
shader5 = "shaders/in_glow_y.slang"
filter_linear5 = "true"
wrap_mode5 = "mirrored_repeat"
mipmap_input5 = "false"
alias5 = "avglum_pass"
float_framebuffer5 = "false"
alias5 = "in_glow_pass"
float_framebuffer5 = "true"
srgb_framebuffer5 = "false"
scale_type_x5 = "source"
scale_x5 = "0.500000"
scale_x5 = "1.000000"
scale_type_y5 = "source"
scale_y5 = "0.500000"
shader6 = "shaders/reflection_blur_h.slang"
scale_y5 = "1.000000"
shader6 = "shaders/halo_x.slang"
filter_linear6 = "true"
wrap_mode6 = "mirrored_repeat"
wrap_mode6 = "clamp_to_edge"
mipmap_input6 = "false"
alias6 = "reflected_blurred_pass1"
float_framebuffer6 = "false"
alias6 = "halo_pass_x"
float_framebuffer6 = "true"
srgb_framebuffer6 = "false"
scale_type_x6 = "source"
scale_x6 = "1.000000"
scale_type_y6 = "source"
scale_y6 = "1.000000"
shader7 = "shaders/reflection_blur_v.slang"
shader7 = "shaders/halo_y.slang"
filter_linear7 = "true"
wrap_mode7 = "mirrored_repeat"
wrap_mode7 = "clamp_to_edge"
mipmap_input7 = "false"
alias7 = "reflected_blurred_pass2"
float_framebuffer7 = "false"
alias7 = "halo_pass"
float_framebuffer7 = "true"
srgb_framebuffer7 = "false"
scale_type_x7 = "source"
scale_x7 = "1.000000"
scale_type_y7 = "source"
scale_y7 = "1.000000"
shader8 = "shaders/bloom_pass_1.slang"
shader8 = "shaders/avglum_pass.slang"
filter_linear8 = "true"
wrap_mode8 = "mirrored_repeat"
mipmap_input8 = "false"
alias8 = "bloom_pass_1"
float_framebuffer8 = "true"
alias8 = "avglum_pass"
float_framebuffer8 = "false"
srgb_framebuffer8 = "false"
scale_type_x8 = "source"
scale_x8 = "1.000000"
scale_x8 = "0.500000"
scale_type_y8 = "source"
scale_y8 = "1.000000"
shader9 = "shaders/bloom_pass_2.slang"
scale_y8 = "0.500000"
shader9 = "shaders/reflection_blur_x.slang"
filter_linear9 = "true"
wrap_mode9 = "clamp_to_edge"
wrap_mode9 = "mirrored_repeat"
mipmap_input9 = "false"
alias9 = "bloom_pass_2"
alias9 = "reflected_blurred_pass1"
float_framebuffer9 = "false"
srgb_framebuffer9 = "false"
scale_type_x9 = "source"
scale_x9 = "0.500000"
scale_x9 = "1.000000"
scale_type_y9 = "source"
scale_y9 = "0.500000"
shader10 = "shaders/bloom_pass_3.slang"
scale_y9 = "1.000000"
shader10 = "shaders/reflection_blur_y.slang"
filter_linear10 = "true"
wrap_mode10 = "clamp_to_edge"
wrap_mode10 = "mirrored_repeat"
mipmap_input10 = "false"
alias10 = "bloom_pass_3"
alias10 = "reflected_blurred_pass2"
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"
shader11 = "shaders/bloom_pass_1.slang"
filter_linear11 = "true"
wrap_mode11 = "mirrored_repeat"
mipmap_input11 = "false"
alias11 = "bloom_pass_final"
alias11 = "bloom_pass_1"
float_framebuffer11 = "false"
srgb_framebuffer11 = "false"
scale_type_x11 = "source"
scale_x11 = "1.000000"
scale_type_y11 = "source"
scale_y11 = "1.000000"
shader12 = "shaders/ambi_push_pass.slang"
shader12 = "shaders/bloom_pass_2.slang"
filter_linear12 = "true"
wrap_mode12 = "mirrored_repeat"
wrap_mode12 = "clamp_to_edge"
mipmap_input12 = "false"
alias12 = "ambi_push_pass"
float_framebuffer12 = "true"
alias12 = "bloom_pass_2"
float_framebuffer12 = "false"
srgb_framebuffer12 = "false"
scale_type_x12 = "source"
scale_x12 = "1.000000"
scale_x12 = "0.500000"
scale_type_y12 = "source"
scale_y12 = "1.000000"
shader13 = "shaders/ambi_pre_pass.slang"
scale_y12 = "0.500000"
shader13 = "shaders/bloom_pass_3.slang"
filter_linear13 = "true"
wrap_mode13 = "clamp_to_border"
mipmap_input13 = "true"
alias13 = "ambi_pre_pass1"
wrap_mode13 = "clamp_to_edge"
mipmap_input13 = "false"
alias13 = "bloom_pass_3"
float_framebuffer13 = "false"
srgb_framebuffer13 = "false"
scale_type_x13 = "source"
scale_x13 = "1.000000"
scale_type_y13 = "source"
scale_y13 = "1.000000"
shader14 = "shaders/ambi_temporal_pass.slang"
shader14 = "shaders/bloom_pass_4.slang"
filter_linear14 = "true"
wrap_mode14 = "clamp_to_border"
wrap_mode14 = "mirrored_repeat"
mipmap_input14 = "false"
alias14 = "ambi_temporal_pass"
alias14 = "bloom_pass_final"
float_framebuffer14 = "true"
srgb_framebuffer14 = "false"
scale_type_x14 = "source"
scale_x14 = "1.000000"
scale_type_y14 = "source"
scale_y14 = "1.000000"
shader15 = "shaders/isrotated.slang"
shader15 = "shaders/ambi_temporal_pass.slang"
filter_linear15 = "true"
wrap_mode15 = "mirrored_repeat"
wrap_mode15 = "clamp_to_border"
mipmap_input15 = "false"
alias15 = "isrotated_pass"
float_framebuffer15 = "false"
alias15 = "ambi_temporal_pass"
float_framebuffer15 = "true"
srgb_framebuffer15 = "false"
scale_type_x15 = "viewport"
scale_x15 = "0.100000"
scale_x15 = "0.050000"
scale_type_y15 = "viewport"
scale_y15 = "0.100000"
scale_y15 = "0.050000"
shader16 = "shaders/final_pass.slang"
filter_linear16 = "true"
wrap_mode16 = "mirrored_repeat"
@ -188,48 +188,43 @@ scale_type_y16 = "viewport"
scale_y16 = "1.000000"
DO_CCORRECTION = "1.000000"
LUMINANCE = "0.200000"
GAMMA_OUT = "0.550000"
DO_SHIFT_RGB = "1.000000"
SHIFT_R = "-20.000000"
SHIFT_G = "1.000000"
SHIFT_B = "20.000000"
GAMMA_OUT = "0.520000"
DO_IN_GLOW = "1.000000"
IN_GLOW_POWER = "1.900000"
IN_GLOW_W = "1.000000"
IN_GLOW_H = "1.000000"
IN_GLOW_POWER = "2.100000"
IN_GLOW_GAMMA = "2.000000"
IN_GLOW_W = "0.000000"
IN_GLOW_H = "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.000000"
DARKLINES_PERIOD = "2.000000"
DO_HALO = "1.000000"
HALO_POWER = "0.430000"
HALO_POWER = "0.280000"
HALO_W = "3.500000"
HALO_H = "3.500000"
HALO_GAMMA = "1.300000"
HALO_GAMMA = "1.500000"
HALO_VS_SCAN = "0.800000"
DO_SCANLINES = "1.000000"
SCANLINE_MIN = "0.600000"
SCANLINE_DARK = "0.050000"
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"
BLOOM_MIX = "0.500000"
DO_CURVATURE = "1.000000"
GEOM_WARP_X = "1.400000"
GEOM_WARP_Y = "1.600000"
GEOM_CORNER_SIZE = "0.005000"
GEOM_WARP_X = "0.450000"
GEOM_WARP_Y = "0.500000"
GEOM_CORNER_SMOOTH = "700.000000"
DO_BEZEL = "1.000000"
BEZEL_R = "0.030000"
BEZEL_R = "0.025000"
BEZEL_G = "0.000000"
BEZEL_B = "-0.030000"
BEZEL_INNER_ZOOM = "-0.600000"
BEZEL_B = "-0.025000"
BEZEL_INNER_ZOOM = "-0.520000"
BEZEL_FRAME_ZOOM = "-0.250000"
BEZEL_IMAGE_BORDER = "1.040000"
BEZEL_REFL_STRENGTH = "0.200000"
BEZEL_RFL_OFFSET = "-0.003000"
BEZEL_REFL_ZOOM = "0.993000"
DO_BG_IMAGE = "1.000000"
BG_IMAGE_OVER = "1.000000"
BG_IMAGE_OFFX = "0.001500"
@ -245,11 +240,15 @@ DO_SPOT = "1.000000"
S_POSITION = "194.000000"
S_SIZE = "0.640000"
S_POWER = "0.250000"
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"
textures = "monitor_body_curved;monitor_body_straight;bg_under;bg_over;backdrop"
monitor_body_curved = "textures/monitor_body_curved.png"
monitor_body_curved_linear = "true"
monitor_body_curved_wrap_mode = "clamp_to_edge"
monitor_body_curved_mipmap = "true"
monitor_body_straight = "textures/monitor_body_straight.png"
monitor_body_straight_linear = "true"
monitor_body_straight_wrap_mode = "clamp_to_edge"
monitor_body_straight_mipmap = "true"
bg_under = "textures/background_under.png"
bg_under_linear = "true"
bg_under_wrap_mode = "mirrored_repeat"
@ -258,3 +257,7 @@ bg_over = "textures/background_over.png"
bg_over_linear = "true"
bg_over_wrap_mode = "mirrored_repeat"
bg_over_mipmap = "true"
backdrop = "textures/boothill.jpg"
backdrop_linear = "true"
backdrop_wrap_mode = "mirrored_repeat"
backdrop_mipmap = "true"

View File

@ -1,180 +1,180 @@
shaders = "17"
shader0 = "shaders/first_pass.slang"
shader0 = "shaders/ntsc_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
alias0 = "first_pass"
alias0 = "ntsc_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "2.000000"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "2.000000"
shader1 = "shaders/fxaa.slang"
filter_linear1 = "true"
scale_y0 = "1.000000"
shader1 = "shaders/first_pass.slang"
filter_linear1 = "false"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "true"
alias1 = "FXAA_pass"
mipmap_input1 = "false"
alias1 = "first_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
scale_x1 = "1.000000"
scale_x1 = "2.000000"
scale_type_y1 = "source"
scale_y1 = "1.000000"
shader2 = "shaders/shift_and_bleed.slang"
scale_y1 = "2.000000"
shader2 = "shaders/fxaa.slang"
filter_linear2 = "true"
wrap_mode2 = "mirrored_repeat"
mipmap_input2 = "false"
alias2 = "shift_and_bleed_pass"
mipmap_input2 = "true"
alias2 = "FXAA_pass"
float_framebuffer2 = "false"
srgb_framebuffer2 = "false"
scale_type_x2 = "source"
scale_x2 = "1.000000"
scale_type_y2 = "source"
scale_y2 = "1.000000"
shader3 = "shaders/in_glow.slang"
shader3 = "shaders/shift_and_bleed.slang"
filter_linear3 = "true"
wrap_mode3 = "mirrored_repeat"
mipmap_input3 = "false"
alias3 = "in_glow_pass"
alias3 = "shift_and_bleed_pass"
float_framebuffer3 = "true"
srgb_framebuffer3 = "false"
scale_type_x3 = "source"
scale_x3 = "1.000000"
scale_type_y3 = "source"
scale_y3 = "1.000000"
shader4 = "shaders/halo.slang"
shader4 = "shaders/in_glow_x.slang"
filter_linear4 = "true"
wrap_mode4 = "mirrored_repeat"
mipmap_input4 = "false"
alias4 = "halo_pass"
alias4 = "in_glow_pass_x"
float_framebuffer4 = "true"
srgb_framebuffer4 = "false"
scale_type_x4 = "source"
scale_x4 = "1.000000"
scale_type_y4 = "source"
scale_y4 = "1.000000"
shader5 = "shaders/avglum_pass.slang"
shader5 = "shaders/in_glow_y.slang"
filter_linear5 = "true"
wrap_mode5 = "mirrored_repeat"
mipmap_input5 = "false"
alias5 = "avglum_pass"
float_framebuffer5 = "false"
alias5 = "in_glow_pass"
float_framebuffer5 = "true"
srgb_framebuffer5 = "false"
scale_type_x5 = "source"
scale_x5 = "0.500000"
scale_x5 = "1.000000"
scale_type_y5 = "source"
scale_y5 = "0.500000"
shader6 = "shaders/reflection_blur_h.slang"
scale_y5 = "1.000000"
shader6 = "shaders/halo_x.slang"
filter_linear6 = "true"
wrap_mode6 = "mirrored_repeat"
wrap_mode6 = "clamp_to_edge"
mipmap_input6 = "false"
alias6 = "reflected_blurred_pass1"
float_framebuffer6 = "false"
alias6 = "halo_pass_x"
float_framebuffer6 = "true"
srgb_framebuffer6 = "false"
scale_type_x6 = "source"
scale_x6 = "1.000000"
scale_type_y6 = "source"
scale_y6 = "1.000000"
shader7 = "shaders/reflection_blur_v.slang"
shader7 = "shaders/halo_y.slang"
filter_linear7 = "true"
wrap_mode7 = "mirrored_repeat"
wrap_mode7 = "clamp_to_edge"
mipmap_input7 = "false"
alias7 = "reflected_blurred_pass2"
float_framebuffer7 = "false"
alias7 = "halo_pass"
float_framebuffer7 = "true"
srgb_framebuffer7 = "false"
scale_type_x7 = "source"
scale_x7 = "1.000000"
scale_type_y7 = "source"
scale_y7 = "1.000000"
shader8 = "shaders/bloom_pass_1.slang"
shader8 = "shaders/avglum_pass.slang"
filter_linear8 = "true"
wrap_mode8 = "mirrored_repeat"
mipmap_input8 = "false"
alias8 = "bloom_pass_1"
float_framebuffer8 = "true"
alias8 = "avglum_pass"
float_framebuffer8 = "false"
srgb_framebuffer8 = "false"
scale_type_x8 = "source"
scale_x8 = "1.000000"
scale_x8 = "0.500000"
scale_type_y8 = "source"
scale_y8 = "1.000000"
shader9 = "shaders/bloom_pass_2.slang"
scale_y8 = "0.500000"
shader9 = "shaders/reflection_blur_x.slang"
filter_linear9 = "true"
wrap_mode9 = "clamp_to_edge"
wrap_mode9 = "mirrored_repeat"
mipmap_input9 = "false"
alias9 = "bloom_pass_2"
alias9 = "reflected_blurred_pass1"
float_framebuffer9 = "false"
srgb_framebuffer9 = "false"
scale_type_x9 = "source"
scale_x9 = "0.500000"
scale_x9 = "1.000000"
scale_type_y9 = "source"
scale_y9 = "0.500000"
shader10 = "shaders/bloom_pass_3.slang"
scale_y9 = "1.000000"
shader10 = "shaders/reflection_blur_y.slang"
filter_linear10 = "true"
wrap_mode10 = "clamp_to_edge"
wrap_mode10 = "mirrored_repeat"
mipmap_input10 = "false"
alias10 = "bloom_pass_3"
alias10 = "reflected_blurred_pass2"
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"
shader11 = "shaders/bloom_pass_1.slang"
filter_linear11 = "true"
wrap_mode11 = "mirrored_repeat"
mipmap_input11 = "false"
alias11 = "bloom_pass_final"
alias11 = "bloom_pass_1"
float_framebuffer11 = "false"
srgb_framebuffer11 = "false"
scale_type_x11 = "source"
scale_x11 = "1.000000"
scale_type_y11 = "source"
scale_y11 = "1.000000"
shader12 = "shaders/ambi_push_pass.slang"
shader12 = "shaders/bloom_pass_2.slang"
filter_linear12 = "true"
wrap_mode12 = "mirrored_repeat"
wrap_mode12 = "clamp_to_edge"
mipmap_input12 = "false"
alias12 = "ambi_push_pass"
float_framebuffer12 = "true"
alias12 = "bloom_pass_2"
float_framebuffer12 = "false"
srgb_framebuffer12 = "false"
scale_type_x12 = "source"
scale_x12 = "1.000000"
scale_x12 = "0.500000"
scale_type_y12 = "source"
scale_y12 = "1.000000"
shader13 = "shaders/ambi_pre_pass.slang"
scale_y12 = "0.500000"
shader13 = "shaders/bloom_pass_3.slang"
filter_linear13 = "true"
wrap_mode13 = "clamp_to_border"
mipmap_input13 = "true"
alias13 = "ambi_pre_pass1"
wrap_mode13 = "clamp_to_edge"
mipmap_input13 = "false"
alias13 = "bloom_pass_3"
float_framebuffer13 = "false"
srgb_framebuffer13 = "false"
scale_type_x13 = "source"
scale_x13 = "1.000000"
scale_type_y13 = "source"
scale_y13 = "1.000000"
shader14 = "shaders/ambi_temporal_pass.slang"
shader14 = "shaders/bloom_pass_4.slang"
filter_linear14 = "true"
wrap_mode14 = "clamp_to_border"
wrap_mode14 = "mirrored_repeat"
mipmap_input14 = "false"
alias14 = "ambi_temporal_pass"
alias14 = "bloom_pass_final"
float_framebuffer14 = "true"
srgb_framebuffer14 = "false"
scale_type_x14 = "source"
scale_x14 = "1.000000"
scale_type_y14 = "source"
scale_y14 = "1.000000"
shader15 = "shaders/isrotated.slang"
shader15 = "shaders/ambi_temporal_pass.slang"
filter_linear15 = "true"
wrap_mode15 = "mirrored_repeat"
wrap_mode15 = "clamp_to_border"
mipmap_input15 = "false"
alias15 = "isrotated_pass"
float_framebuffer15 = "false"
alias15 = "ambi_temporal_pass"
float_framebuffer15 = "true"
srgb_framebuffer15 = "false"
scale_type_x15 = "viewport"
scale_x15 = "0.100000"
scale_x15 = "0.050000"
scale_type_y15 = "viewport"
scale_y15 = "0.100000"
scale_y15 = "0.050000"
shader16 = "shaders/final_pass.slang"
filter_linear16 = "true"
wrap_mode16 = "mirrored_repeat"
@ -188,23 +188,18 @@ scale_type_y16 = "viewport"
scale_y16 = "1.000000"
DO_CCORRECTION = "1.000000"
LUMINANCE = "0.200000"
GAMMA_OUT = "0.550000"
DO_SHIFT_RGB = "1.000000"
SHIFT_R = "-20.000000"
SHIFT_G = "1.000000"
SHIFT_B = "20.000000"
GAMMA_OUT = "0.530000"
DO_IN_GLOW = "1.000000"
IN_GLOW_POWER = "1.900000"
IN_GLOW_W = "1.000000"
IN_GLOW_H = "1.000000"
IN_GLOW_POWER = "1.950000"
IN_GLOW_GAMMA = "2.000000"
IN_GLOW_W = "0.000000"
IN_GLOW_H = "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"
DARKLINES_PERIOD = "2.000000"
DO_HALO = "1.000000"
HALO_POWER = "0.430000"
HALO_W = "3.500000"
@ -212,32 +207,36 @@ HALO_H = "3.500000"
HALO_GAMMA = "1.300000"
HALO_VS_SCAN = "0.800000"
DO_SCANLINES = "1.000000"
SCANLINE_SM_STRENGTH = "1.000000"
SCANLINE_MIN = "0.300000"
SCANLINES_BLEEDING = "0.300000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.150000"
BLOOM_SIZE = "1.500000"
BLOOM_POWER = "8.000000"
BLOOM_GAMMA_OUT = "1.200000"
BLOOM_MIX = "0.500000"
DO_CURVATURE = "1.000000"
GEOM_WARP_X = "0.800000"
GEOM_WARP_Y = "0.850000"
GEOM_CORNER_SIZE = "0.005000"
GEOM_CORNER_SMOOTH = "700.000000"
GEOM_WARP_X = "0.475000"
GEOM_WARP_Y = "0.500000"
GEOM_CORNER_SMOOTH = "400.000000"
DO_BEZEL = "1.000000"
BEZEL_INNER_ZOOM = "-0.165000"
BEZEL_FRAME_ZOOM = "0.040000"
BEZEL_IMAGE_BORDER = "1.020000"
BEZEL_RFL_OFFSET = "0.002000"
BEZEL_REFL_ZOOM = "0.993000"
AMBI_FALLOFF = "0.600000"
AMBI_POWER = "2.000000"
AMBI_POWER = "1.700000"
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"
textures = "monitor_body_curved;monitor_body_straight;bg_under;bg_over;backdrop"
monitor_body_curved = "textures/monitor_body_curved.png"
monitor_body_curved_linear = "true"
monitor_body_curved_wrap_mode = "clamp_to_edge"
monitor_body_curved_mipmap = "true"
monitor_body_straight = "textures/monitor_body_straight.png"
monitor_body_straight_linear = "true"
monitor_body_straight_wrap_mode = "clamp_to_edge"
monitor_body_straight_mipmap = "true"
bg_under = "textures/background_under.png"
bg_under_linear = "true"
bg_under_wrap_mode = "mirrored_repeat"
@ -246,3 +245,7 @@ bg_over = "textures/background_over.png"
bg_over_linear = "true"
bg_over_wrap_mode = "mirrored_repeat"
bg_over_mipmap = "true"
backdrop = "textures/boothill.jpg"
backdrop_linear = "true"
backdrop_wrap_mode = "mirrored_repeat"
backdrop_mipmap = "true"

View File

@ -1,180 +1,180 @@
shaders = "17"
shader0 = "shaders/first_pass.slang"
shader0 = "shaders/ntsc_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
alias0 = "first_pass"
alias0 = "ntsc_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "2.000000"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "2.000000"
shader1 = "shaders/fxaa.slang"
filter_linear1 = "true"
scale_y0 = "1.000000"
shader1 = "shaders/first_pass.slang"
filter_linear1 = "false"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "true"
alias1 = "FXAA_pass"
mipmap_input1 = "false"
alias1 = "first_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
scale_x1 = "1.000000"
scale_x1 = "2.000000"
scale_type_y1 = "source"
scale_y1 = "1.000000"
shader2 = "shaders/shift_and_bleed.slang"
scale_y1 = "2.000000"
shader2 = "shaders/fxaa.slang"
filter_linear2 = "true"
wrap_mode2 = "mirrored_repeat"
mipmap_input2 = "false"
alias2 = "shift_and_bleed_pass"
mipmap_input2 = "true"
alias2 = "FXAA_pass"
float_framebuffer2 = "false"
srgb_framebuffer2 = "false"
scale_type_x2 = "source"
scale_x2 = "1.000000"
scale_type_y2 = "source"
scale_y2 = "1.000000"
shader3 = "shaders/in_glow.slang"
shader3 = "shaders/shift_and_bleed.slang"
filter_linear3 = "true"
wrap_mode3 = "mirrored_repeat"
mipmap_input3 = "false"
alias3 = "in_glow_pass"
alias3 = "shift_and_bleed_pass"
float_framebuffer3 = "true"
srgb_framebuffer3 = "false"
scale_type_x3 = "source"
scale_x3 = "1.000000"
scale_type_y3 = "source"
scale_y3 = "1.000000"
shader4 = "shaders/halo.slang"
shader4 = "shaders/in_glow_x.slang"
filter_linear4 = "true"
wrap_mode4 = "mirrored_repeat"
mipmap_input4 = "false"
alias4 = "halo_pass"
alias4 = "in_glow_pass_x"
float_framebuffer4 = "true"
srgb_framebuffer4 = "false"
scale_type_x4 = "source"
scale_x4 = "1.000000"
scale_type_y4 = "source"
scale_y4 = "1.000000"
shader5 = "shaders/avglum_pass.slang"
shader5 = "shaders/in_glow_y.slang"
filter_linear5 = "true"
wrap_mode5 = "mirrored_repeat"
mipmap_input5 = "false"
alias5 = "avglum_pass"
float_framebuffer5 = "false"
alias5 = "in_glow_pass"
float_framebuffer5 = "true"
srgb_framebuffer5 = "false"
scale_type_x5 = "source"
scale_x5 = "0.500000"
scale_x5 = "1.000000"
scale_type_y5 = "source"
scale_y5 = "0.500000"
shader6 = "shaders/reflection_blur_h.slang"
scale_y5 = "1.000000"
shader6 = "shaders/halo_x.slang"
filter_linear6 = "true"
wrap_mode6 = "mirrored_repeat"
wrap_mode6 = "clamp_to_edge"
mipmap_input6 = "false"
alias6 = "reflected_blurred_pass1"
float_framebuffer6 = "false"
alias6 = "halo_pass_x"
float_framebuffer6 = "true"
srgb_framebuffer6 = "false"
scale_type_x6 = "source"
scale_x6 = "1.000000"
scale_type_y6 = "source"
scale_y6 = "1.000000"
shader7 = "shaders/reflection_blur_v.slang"
shader7 = "shaders/halo_y.slang"
filter_linear7 = "true"
wrap_mode7 = "mirrored_repeat"
wrap_mode7 = "clamp_to_edge"
mipmap_input7 = "false"
alias7 = "reflected_blurred_pass2"
float_framebuffer7 = "false"
alias7 = "halo_pass"
float_framebuffer7 = "true"
srgb_framebuffer7 = "false"
scale_type_x7 = "source"
scale_x7 = "1.000000"
scale_type_y7 = "source"
scale_y7 = "1.000000"
shader8 = "shaders/bloom_pass_1.slang"
shader8 = "shaders/avglum_pass.slang"
filter_linear8 = "true"
wrap_mode8 = "mirrored_repeat"
mipmap_input8 = "false"
alias8 = "bloom_pass_1"
float_framebuffer8 = "true"
alias8 = "avglum_pass"
float_framebuffer8 = "false"
srgb_framebuffer8 = "false"
scale_type_x8 = "source"
scale_x8 = "1.000000"
scale_x8 = "0.500000"
scale_type_y8 = "source"
scale_y8 = "1.000000"
shader9 = "shaders/bloom_pass_2.slang"
scale_y8 = "0.500000"
shader9 = "shaders/reflection_blur_x.slang"
filter_linear9 = "true"
wrap_mode9 = "clamp_to_edge"
wrap_mode9 = "mirrored_repeat"
mipmap_input9 = "false"
alias9 = "bloom_pass_2"
alias9 = "reflected_blurred_pass1"
float_framebuffer9 = "false"
srgb_framebuffer9 = "false"
scale_type_x9 = "source"
scale_x9 = "0.500000"
scale_x9 = "1.000000"
scale_type_y9 = "source"
scale_y9 = "0.500000"
shader10 = "shaders/bloom_pass_3.slang"
scale_y9 = "1.000000"
shader10 = "shaders/reflection_blur_y.slang"
filter_linear10 = "true"
wrap_mode10 = "clamp_to_edge"
wrap_mode10 = "mirrored_repeat"
mipmap_input10 = "false"
alias10 = "bloom_pass_3"
alias10 = "reflected_blurred_pass2"
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"
shader11 = "shaders/bloom_pass_1.slang"
filter_linear11 = "true"
wrap_mode11 = "mirrored_repeat"
mipmap_input11 = "false"
alias11 = "bloom_pass_final"
alias11 = "bloom_pass_1"
float_framebuffer11 = "false"
srgb_framebuffer11 = "false"
scale_type_x11 = "source"
scale_x11 = "1.000000"
scale_type_y11 = "source"
scale_y11 = "1.000000"
shader12 = "shaders/ambi_push_pass.slang"
shader12 = "shaders/bloom_pass_2.slang"
filter_linear12 = "true"
wrap_mode12 = "mirrored_repeat"
wrap_mode12 = "clamp_to_edge"
mipmap_input12 = "false"
alias12 = "ambi_push_pass"
float_framebuffer12 = "true"
alias12 = "bloom_pass_2"
float_framebuffer12 = "false"
srgb_framebuffer12 = "false"
scale_type_x12 = "source"
scale_x12 = "1.000000"
scale_x12 = "0.500000"
scale_type_y12 = "source"
scale_y12 = "1.000000"
shader13 = "shaders/ambi_pre_pass.slang"
scale_y12 = "0.500000"
shader13 = "shaders/bloom_pass_3.slang"
filter_linear13 = "true"
wrap_mode13 = "clamp_to_border"
mipmap_input13 = "true"
alias13 = "ambi_pre_pass1"
wrap_mode13 = "clamp_to_edge"
mipmap_input13 = "false"
alias13 = "bloom_pass_3"
float_framebuffer13 = "false"
srgb_framebuffer13 = "false"
scale_type_x13 = "source"
scale_x13 = "1.000000"
scale_type_y13 = "source"
scale_y13 = "1.000000"
shader14 = "shaders/ambi_temporal_pass.slang"
shader14 = "shaders/bloom_pass_4.slang"
filter_linear14 = "true"
wrap_mode14 = "clamp_to_border"
wrap_mode14 = "mirrored_repeat"
mipmap_input14 = "false"
alias14 = "ambi_temporal_pass"
alias14 = "bloom_pass_final"
float_framebuffer14 = "true"
srgb_framebuffer14 = "false"
scale_type_x14 = "source"
scale_x14 = "1.000000"
scale_type_y14 = "source"
scale_y14 = "1.000000"
shader15 = "shaders/isrotated.slang"
shader15 = "shaders/ambi_temporal_pass.slang"
filter_linear15 = "true"
wrap_mode15 = "mirrored_repeat"
wrap_mode15 = "clamp_to_border"
mipmap_input15 = "false"
alias15 = "isrotated_pass"
float_framebuffer15 = "false"
alias15 = "ambi_temporal_pass"
float_framebuffer15 = "true"
srgb_framebuffer15 = "false"
scale_type_x15 = "viewport"
scale_x15 = "0.100000"
scale_x15 = "0.050000"
scale_type_y15 = "viewport"
scale_y15 = "0.100000"
scale_y15 = "0.050000"
shader16 = "shaders/final_pass.slang"
filter_linear16 = "true"
wrap_mode16 = "mirrored_repeat"
@ -188,16 +188,12 @@ scale_type_y16 = "viewport"
scale_y16 = "1.000000"
DO_CCORRECTION = "1.000000"
LUMINANCE = "0.200000"
GAMMA_OUT = "0.550000"
DO_SHIFT_RGB = "1.000000"
SHIFT_R = "-20.000000"
SHIFT_G = "1.000000"
SHIFT_B = "20.000000"
GAMMA_OUT = "0.530000"
DO_IN_GLOW = "1.000000"
IN_GLOW_POWER = "1.900000"
IN_GLOW_W = "1.000000"
IN_GLOW_H = "1.000000"
IN_GLOW_POWER = "1.950000"
IN_GLOW_GAMMA = "2.000000"
IN_GLOW_W = "0.000000"
IN_GLOW_H = "2.000000"
IN_GLOW_BIAS = "0.000000"
DO_VMASK_AND_DARKLINES = "1.000000"
RGB_MASK_STRENGTH = "1.000000"
@ -211,21 +207,20 @@ HALO_H = "3.500000"
HALO_GAMMA = "1.300000"
HALO_VS_SCAN = "0.800000"
DO_SCANLINES = "1.000000"
SCANLINE_SM_STRENGTH = "1.000000"
SCANLINE_MIN = "0.200000"
SCANLINES_BLEEDING = "0.300000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.150000"
BLOOM_SIZE = "1.500000"
BLOOM_POWER = "8.000000"
BLOOM_GAMMA_OUT = "1.200000"
BLOOM_MIX = "0.500000"
DO_CURVATURE = "1.000000"
GEOM_WARP_X = "0.500000"
GEOM_WARP_X = "0.475000"
GEOM_WARP_Y = "0.500000"
GEOM_CORNER_SIZE = "0.005000"
GEOM_CORNER_SMOOTH = "700.000000"
GEOM_CORNER_SMOOTH = "400.000000"
DO_BEZEL = "1.000000"
BEZEL_INNER_ZOOM = "-0.010000"
BEZEL_FRAME_ZOOM = "0.170000"
BEZEL_IMAGE_BORDER = "1.020000"
BEZEL_RFL_OFFSET = "0.002000"
BEZEL_REFL_ZOOM = "0.993000"
AMBI_FALLOFF = "0.400000"
AMBI_POWER = "5.000000"
DO_VIGNETTE = "1.000000"
@ -233,11 +228,15 @@ 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"
textures = "monitor_body_curved;monitor_body_straight;bg_under;bg_over;backdrop"
monitor_body_curved = "textures/monitor_body_curved.png"
monitor_body_curved_linear = "true"
monitor_body_curved_wrap_mode = "clamp_to_edge"
monitor_body_curved_mipmap = "true"
monitor_body_straight = "textures/monitor_body_straight.png"
monitor_body_straight_linear = "true"
monitor_body_straight_wrap_mode = "clamp_to_edge"
monitor_body_straight_mipmap = "true"
bg_under = "textures/background_under.png"
bg_under_linear = "true"
bg_under_wrap_mode = "mirrored_repeat"
@ -246,3 +245,7 @@ bg_over = "textures/background_over.png"
bg_over_linear = "true"
bg_over_wrap_mode = "mirrored_repeat"
bg_over_mipmap = "true"
backdrop = "textures/boothill.jpg"
backdrop_linear = "true"
backdrop_wrap_mode = "mirrored_repeat"
backdrop_mipmap = "true"

View File

@ -1,180 +1,180 @@
shaders = "17"
shader0 = "shaders/first_pass.slang"
shader0 = "shaders/ntsc_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
alias0 = "first_pass"
alias0 = "ntsc_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "2.000000"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "2.000000"
shader1 = "shaders/fxaa.slang"
filter_linear1 = "true"
scale_y0 = "1.000000"
shader1 = "shaders/first_pass.slang"
filter_linear1 = "false"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "true"
alias1 = "FXAA_pass"
mipmap_input1 = "false"
alias1 = "first_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
scale_x1 = "1.000000"
scale_x1 = "2.000000"
scale_type_y1 = "source"
scale_y1 = "1.000000"
shader2 = "shaders/shift_and_bleed.slang"
scale_y1 = "2.000000"
shader2 = "shaders/fxaa.slang"
filter_linear2 = "true"
wrap_mode2 = "mirrored_repeat"
mipmap_input2 = "false"
alias2 = "shift_and_bleed_pass"
mipmap_input2 = "true"
alias2 = "FXAA_pass"
float_framebuffer2 = "false"
srgb_framebuffer2 = "false"
scale_type_x2 = "source"
scale_x2 = "1.000000"
scale_type_y2 = "source"
scale_y2 = "1.000000"
shader3 = "shaders/in_glow.slang"
shader3 = "shaders/shift_and_bleed.slang"
filter_linear3 = "true"
wrap_mode3 = "mirrored_repeat"
mipmap_input3 = "false"
alias3 = "in_glow_pass"
alias3 = "shift_and_bleed_pass"
float_framebuffer3 = "true"
srgb_framebuffer3 = "false"
scale_type_x3 = "source"
scale_x3 = "1.000000"
scale_type_y3 = "source"
scale_y3 = "1.000000"
shader4 = "shaders/halo.slang"
shader4 = "shaders/in_glow_x.slang"
filter_linear4 = "true"
wrap_mode4 = "mirrored_repeat"
mipmap_input4 = "false"
alias4 = "halo_pass"
alias4 = "in_glow_pass_x"
float_framebuffer4 = "true"
srgb_framebuffer4 = "false"
scale_type_x4 = "source"
scale_x4 = "1.000000"
scale_type_y4 = "source"
scale_y4 = "1.000000"
shader5 = "shaders/avglum_pass.slang"
shader5 = "shaders/in_glow_y.slang"
filter_linear5 = "true"
wrap_mode5 = "mirrored_repeat"
mipmap_input5 = "false"
alias5 = "avglum_pass"
float_framebuffer5 = "false"
alias5 = "in_glow_pass"
float_framebuffer5 = "true"
srgb_framebuffer5 = "false"
scale_type_x5 = "source"
scale_x5 = "0.500000"
scale_x5 = "1.000000"
scale_type_y5 = "source"
scale_y5 = "0.500000"
shader6 = "shaders/reflection_blur_h.slang"
scale_y5 = "1.000000"
shader6 = "shaders/halo_x.slang"
filter_linear6 = "true"
wrap_mode6 = "mirrored_repeat"
wrap_mode6 = "clamp_to_edge"
mipmap_input6 = "false"
alias6 = "reflected_blurred_pass1"
float_framebuffer6 = "false"
alias6 = "halo_pass_x"
float_framebuffer6 = "true"
srgb_framebuffer6 = "false"
scale_type_x6 = "source"
scale_x6 = "1.000000"
scale_type_y6 = "source"
scale_y6 = "1.000000"
shader7 = "shaders/reflection_blur_v.slang"
shader7 = "shaders/halo_y.slang"
filter_linear7 = "true"
wrap_mode7 = "mirrored_repeat"
wrap_mode7 = "clamp_to_edge"
mipmap_input7 = "false"
alias7 = "reflected_blurred_pass2"
float_framebuffer7 = "false"
alias7 = "halo_pass"
float_framebuffer7 = "true"
srgb_framebuffer7 = "false"
scale_type_x7 = "source"
scale_x7 = "1.000000"
scale_type_y7 = "source"
scale_y7 = "1.000000"
shader8 = "shaders/bloom_pass_1.slang"
shader8 = "shaders/avglum_pass.slang"
filter_linear8 = "true"
wrap_mode8 = "mirrored_repeat"
mipmap_input8 = "false"
alias8 = "bloom_pass_1"
float_framebuffer8 = "true"
alias8 = "avglum_pass"
float_framebuffer8 = "false"
srgb_framebuffer8 = "false"
scale_type_x8 = "source"
scale_x8 = "1.000000"
scale_x8 = "0.500000"
scale_type_y8 = "source"
scale_y8 = "1.000000"
shader9 = "shaders/bloom_pass_2.slang"
scale_y8 = "0.500000"
shader9 = "shaders/reflection_blur_x.slang"
filter_linear9 = "true"
wrap_mode9 = "clamp_to_edge"
wrap_mode9 = "mirrored_repeat"
mipmap_input9 = "false"
alias9 = "bloom_pass_2"
alias9 = "reflected_blurred_pass1"
float_framebuffer9 = "false"
srgb_framebuffer9 = "false"
scale_type_x9 = "source"
scale_x9 = "0.500000"
scale_x9 = "1.000000"
scale_type_y9 = "source"
scale_y9 = "0.500000"
shader10 = "shaders/bloom_pass_3.slang"
scale_y9 = "1.000000"
shader10 = "shaders/reflection_blur_y.slang"
filter_linear10 = "true"
wrap_mode10 = "clamp_to_edge"
wrap_mode10 = "mirrored_repeat"
mipmap_input10 = "false"
alias10 = "bloom_pass_3"
alias10 = "reflected_blurred_pass2"
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"
shader11 = "shaders/bloom_pass_1.slang"
filter_linear11 = "true"
wrap_mode11 = "mirrored_repeat"
mipmap_input11 = "false"
alias11 = "bloom_pass_final"
alias11 = "bloom_pass_1"
float_framebuffer11 = "false"
srgb_framebuffer11 = "false"
scale_type_x11 = "source"
scale_x11 = "1.000000"
scale_type_y11 = "source"
scale_y11 = "1.000000"
shader12 = "shaders/ambi_push_pass.slang"
shader12 = "shaders/bloom_pass_2.slang"
filter_linear12 = "true"
wrap_mode12 = "mirrored_repeat"
wrap_mode12 = "clamp_to_edge"
mipmap_input12 = "false"
alias12 = "ambi_push_pass"
float_framebuffer12 = "true"
alias12 = "bloom_pass_2"
float_framebuffer12 = "false"
srgb_framebuffer12 = "false"
scale_type_x12 = "source"
scale_x12 = "1.000000"
scale_x12 = "0.500000"
scale_type_y12 = "source"
scale_y12 = "1.000000"
shader13 = "shaders/ambi_pre_pass.slang"
scale_y12 = "0.500000"
shader13 = "shaders/bloom_pass_3.slang"
filter_linear13 = "true"
wrap_mode13 = "clamp_to_border"
mipmap_input13 = "true"
alias13 = "ambi_pre_pass1"
wrap_mode13 = "clamp_to_edge"
mipmap_input13 = "false"
alias13 = "bloom_pass_3"
float_framebuffer13 = "false"
srgb_framebuffer13 = "false"
scale_type_x13 = "source"
scale_x13 = "1.000000"
scale_type_y13 = "source"
scale_y13 = "1.000000"
shader14 = "shaders/ambi_temporal_pass.slang"
shader14 = "shaders/bloom_pass_4.slang"
filter_linear14 = "true"
wrap_mode14 = "clamp_to_border"
wrap_mode14 = "mirrored_repeat"
mipmap_input14 = "false"
alias14 = "ambi_temporal_pass"
alias14 = "bloom_pass_final"
float_framebuffer14 = "true"
srgb_framebuffer14 = "false"
scale_type_x14 = "source"
scale_x14 = "1.000000"
scale_type_y14 = "source"
scale_y14 = "1.000000"
shader15 = "shaders/isrotated.slang"
shader15 = "shaders/ambi_temporal_pass.slang"
filter_linear15 = "true"
wrap_mode15 = "mirrored_repeat"
wrap_mode15 = "clamp_to_border"
mipmap_input15 = "false"
alias15 = "isrotated_pass"
float_framebuffer15 = "false"
alias15 = "ambi_temporal_pass"
float_framebuffer15 = "true"
srgb_framebuffer15 = "false"
scale_type_x15 = "viewport"
scale_x15 = "0.100000"
scale_x15 = "0.050000"
scale_type_y15 = "viewport"
scale_y15 = "0.100000"
scale_y15 = "0.050000"
shader16 = "shaders/final_pass.slang"
filter_linear16 = "true"
wrap_mode16 = "mirrored_repeat"
@ -188,16 +188,12 @@ scale_type_y16 = "viewport"
scale_y16 = "1.000000"
DO_CCORRECTION = "1.000000"
LUMINANCE = "0.200000"
GAMMA_OUT = "0.550000"
DO_SHIFT_RGB = "1.000000"
SHIFT_R = "-20.000000"
SHIFT_G = "1.000000"
SHIFT_B = "20.000000"
GAMMA_OUT = "0.530000"
DO_IN_GLOW = "1.000000"
IN_GLOW_POWER = "1.900000"
IN_GLOW_W = "1.000000"
IN_GLOW_H = "1.000000"
IN_GLOW_POWER = "1.950000"
IN_GLOW_GAMMA = "2.000000"
IN_GLOW_W = "0.000000"
IN_GLOW_H = "2.000000"
IN_GLOW_BIAS = "0.000000"
DO_VMASK_AND_DARKLINES = "1.000000"
RGB_MASK_STRENGTH = "1.000000"
@ -211,27 +207,32 @@ HALO_H = "3.500000"
HALO_GAMMA = "1.300000"
HALO_VS_SCAN = "0.800000"
DO_SCANLINES = "1.000000"
SCANLINE_SM_STRENGTH = "1.000000"
SCANLINE_MIN = "0.200000"
SCANLINE_DARK = "0.050000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.150000"
BLOOM_SIZE = "1.500000"
BLOOM_POWER = "8.000000"
BLOOM_GAMMA_OUT = "1.200000"
BLOOM_MIX = "0.500000"
DO_CURVATURE = "1.000000"
GEOM_WARP_X = "0.150000"
GEOM_WARP_Y = "0.150000"
GEOM_WARP_X = "0.475000"
GEOM_WARP_Y = "0.500000"
GEOM_CORNER_SMOOTH = "200.000000"
BEZEL_INNER_ZOOM = "-0.215000"
BEZEL_IMAGE_BORDER = "1.020000"
BEZEL_RFL_OFFSET = "0.002000"
BEZEL_REFL_ZOOM = "0.993000"
AMBI_FALLOFF = "0.400000"
AMBI_POWER = "1.000000"
V_SIZE = "2.700000"
V_POWER = "1.050000"
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"
textures = "monitor_body_curved;monitor_body_straight;bg_under;bg_over;backdrop"
monitor_body_curved = "textures/monitor_body_curved.png"
monitor_body_curved_linear = "true"
monitor_body_curved_wrap_mode = "clamp_to_edge"
monitor_body_curved_mipmap = "true"
monitor_body_straight = "textures/monitor_body_straight.png"
monitor_body_straight_linear = "true"
monitor_body_straight_wrap_mode = "clamp_to_edge"
monitor_body_straight_mipmap = "true"
bg_under = "textures/background_under.png"
bg_under_linear = "true"
bg_under_wrap_mode = "mirrored_repeat"
@ -240,3 +241,7 @@ bg_over = "textures/background_over.png"
bg_over_linear = "true"
bg_over_wrap_mode = "mirrored_repeat"
bg_over_mipmap = "true"
backdrop = "textures/boothill.jpg"
backdrop_linear = "true"
backdrop_wrap_mode = "mirrored_repeat"
backdrop_mipmap = "true"

View File

@ -1,180 +1,180 @@
shaders = "17"
shader0 = "shaders/first_pass.slang"
shader0 = "shaders/ntsc_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
alias0 = "first_pass"
alias0 = "ntsc_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "2.000000"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "2.000000"
shader1 = "shaders/fxaa.slang"
filter_linear1 = "true"
scale_y0 = "1.000000"
shader1 = "shaders/first_pass.slang"
filter_linear1 = "false"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "true"
alias1 = "FXAA_pass"
mipmap_input1 = "false"
alias1 = "first_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
scale_x1 = "1.000000"
scale_x1 = "2.000000"
scale_type_y1 = "source"
scale_y1 = "1.000000"
shader2 = "shaders/shift_and_bleed.slang"
scale_y1 = "2.000000"
shader2 = "shaders/fxaa.slang"
filter_linear2 = "true"
wrap_mode2 = "mirrored_repeat"
mipmap_input2 = "false"
alias2 = "shift_and_bleed_pass"
mipmap_input2 = "true"
alias2 = "FXAA_pass"
float_framebuffer2 = "false"
srgb_framebuffer2 = "false"
scale_type_x2 = "source"
scale_x2 = "1.000000"
scale_type_y2 = "source"
scale_y2 = "1.000000"
shader3 = "shaders/in_glow.slang"
shader3 = "shaders/shift_and_bleed.slang"
filter_linear3 = "true"
wrap_mode3 = "mirrored_repeat"
mipmap_input3 = "false"
alias3 = "in_glow_pass"
alias3 = "shift_and_bleed_pass"
float_framebuffer3 = "true"
srgb_framebuffer3 = "false"
scale_type_x3 = "source"
scale_x3 = "1.000000"
scale_type_y3 = "source"
scale_y3 = "1.000000"
shader4 = "shaders/halo.slang"
shader4 = "shaders/in_glow_x.slang"
filter_linear4 = "true"
wrap_mode4 = "mirrored_repeat"
mipmap_input4 = "false"
alias4 = "halo_pass"
alias4 = "in_glow_pass_x"
float_framebuffer4 = "true"
srgb_framebuffer4 = "false"
scale_type_x4 = "source"
scale_x4 = "1.000000"
scale_type_y4 = "source"
scale_y4 = "1.000000"
shader5 = "shaders/avglum_pass.slang"
shader5 = "shaders/in_glow_y.slang"
filter_linear5 = "true"
wrap_mode5 = "mirrored_repeat"
mipmap_input5 = "false"
alias5 = "avglum_pass"
float_framebuffer5 = "false"
alias5 = "in_glow_pass"
float_framebuffer5 = "true"
srgb_framebuffer5 = "false"
scale_type_x5 = "source"
scale_x5 = "0.500000"
scale_x5 = "1.000000"
scale_type_y5 = "source"
scale_y5 = "0.500000"
shader6 = "shaders/reflection_blur_h.slang"
scale_y5 = "1.000000"
shader6 = "shaders/halo_x.slang"
filter_linear6 = "true"
wrap_mode6 = "mirrored_repeat"
wrap_mode6 = "clamp_to_edge"
mipmap_input6 = "false"
alias6 = "reflected_blurred_pass1"
float_framebuffer6 = "false"
alias6 = "halo_pass_x"
float_framebuffer6 = "true"
srgb_framebuffer6 = "false"
scale_type_x6 = "source"
scale_x6 = "1.000000"
scale_type_y6 = "source"
scale_y6 = "1.000000"
shader7 = "shaders/reflection_blur_v.slang"
shader7 = "shaders/halo_y.slang"
filter_linear7 = "true"
wrap_mode7 = "mirrored_repeat"
wrap_mode7 = "clamp_to_edge"
mipmap_input7 = "false"
alias7 = "reflected_blurred_pass2"
float_framebuffer7 = "false"
alias7 = "halo_pass"
float_framebuffer7 = "true"
srgb_framebuffer7 = "false"
scale_type_x7 = "source"
scale_x7 = "1.000000"
scale_type_y7 = "source"
scale_y7 = "1.000000"
shader8 = "shaders/bloom_pass_1.slang"
shader8 = "shaders/avglum_pass.slang"
filter_linear8 = "true"
wrap_mode8 = "mirrored_repeat"
mipmap_input8 = "false"
alias8 = "bloom_pass_1"
float_framebuffer8 = "true"
alias8 = "avglum_pass"
float_framebuffer8 = "false"
srgb_framebuffer8 = "false"
scale_type_x8 = "source"
scale_x8 = "1.000000"
scale_x8 = "0.500000"
scale_type_y8 = "source"
scale_y8 = "1.000000"
shader9 = "shaders/bloom_pass_2.slang"
scale_y8 = "0.500000"
shader9 = "shaders/reflection_blur_x.slang"
filter_linear9 = "true"
wrap_mode9 = "clamp_to_edge"
wrap_mode9 = "mirrored_repeat"
mipmap_input9 = "false"
alias9 = "bloom_pass_2"
alias9 = "reflected_blurred_pass1"
float_framebuffer9 = "false"
srgb_framebuffer9 = "false"
scale_type_x9 = "source"
scale_x9 = "0.500000"
scale_x9 = "1.000000"
scale_type_y9 = "source"
scale_y9 = "0.500000"
shader10 = "shaders/bloom_pass_3.slang"
scale_y9 = "1.000000"
shader10 = "shaders/reflection_blur_y.slang"
filter_linear10 = "true"
wrap_mode10 = "clamp_to_edge"
wrap_mode10 = "mirrored_repeat"
mipmap_input10 = "false"
alias10 = "bloom_pass_3"
alias10 = "reflected_blurred_pass2"
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"
shader11 = "shaders/bloom_pass_1.slang"
filter_linear11 = "true"
wrap_mode11 = "mirrored_repeat"
mipmap_input11 = "false"
alias11 = "bloom_pass_final"
alias11 = "bloom_pass_1"
float_framebuffer11 = "false"
srgb_framebuffer11 = "false"
scale_type_x11 = "source"
scale_x11 = "1.000000"
scale_type_y11 = "source"
scale_y11 = "1.000000"
shader12 = "shaders/ambi_push_pass.slang"
shader12 = "shaders/bloom_pass_2.slang"
filter_linear12 = "true"
wrap_mode12 = "mirrored_repeat"
wrap_mode12 = "clamp_to_edge"
mipmap_input12 = "false"
alias12 = "ambi_push_pass"
float_framebuffer12 = "true"
alias12 = "bloom_pass_2"
float_framebuffer12 = "false"
srgb_framebuffer12 = "false"
scale_type_x12 = "source"
scale_x12 = "1.000000"
scale_x12 = "0.500000"
scale_type_y12 = "source"
scale_y12 = "1.000000"
shader13 = "shaders/ambi_pre_pass.slang"
scale_y12 = "0.500000"
shader13 = "shaders/bloom_pass_3.slang"
filter_linear13 = "true"
wrap_mode13 = "clamp_to_border"
mipmap_input13 = "true"
alias13 = "ambi_pre_pass1"
wrap_mode13 = "clamp_to_edge"
mipmap_input13 = "false"
alias13 = "bloom_pass_3"
float_framebuffer13 = "false"
srgb_framebuffer13 = "false"
scale_type_x13 = "source"
scale_x13 = "1.000000"
scale_type_y13 = "source"
scale_y13 = "1.000000"
shader14 = "shaders/ambi_temporal_pass.slang"
shader14 = "shaders/bloom_pass_4.slang"
filter_linear14 = "true"
wrap_mode14 = "clamp_to_border"
wrap_mode14 = "mirrored_repeat"
mipmap_input14 = "false"
alias14 = "ambi_temporal_pass"
alias14 = "bloom_pass_final"
float_framebuffer14 = "true"
srgb_framebuffer14 = "false"
scale_type_x14 = "source"
scale_x14 = "1.000000"
scale_type_y14 = "source"
scale_y14 = "1.000000"
shader15 = "shaders/isrotated.slang"
shader15 = "shaders/ambi_temporal_pass.slang"
filter_linear15 = "true"
wrap_mode15 = "mirrored_repeat"
wrap_mode15 = "clamp_to_border"
mipmap_input15 = "false"
alias15 = "isrotated_pass"
float_framebuffer15 = "false"
alias15 = "ambi_temporal_pass"
float_framebuffer15 = "true"
srgb_framebuffer15 = "false"
scale_type_x15 = "viewport"
scale_x15 = "0.100000"
scale_x15 = "0.050000"
scale_type_y15 = "viewport"
scale_y15 = "0.100000"
scale_y15 = "0.050000"
shader16 = "shaders/final_pass.slang"
filter_linear16 = "true"
wrap_mode16 = "mirrored_repeat"
@ -188,23 +188,18 @@ scale_type_y16 = "viewport"
scale_y16 = "1.000000"
DO_CCORRECTION = "1.000000"
LUMINANCE = "0.200000"
GAMMA_OUT = "0.550000"
DO_SHIFT_RGB = "1.000000"
SHIFT_R = "-20.000000"
SHIFT_G = "1.000000"
SHIFT_B = "20.000000"
GAMMA_OUT = "0.530000"
DO_IN_GLOW = "1.000000"
IN_GLOW_POWER = "1.900000"
IN_GLOW_W = "1.000000"
IN_GLOW_H = "1.000000"
IN_GLOW_POWER = "1.950000"
IN_GLOW_GAMMA = "2.000000"
IN_GLOW_W = "0.000000"
IN_GLOW_H = "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"
DARKLINES_PERIOD = "2.000000"
DO_HALO = "1.000000"
HALO_POWER = "0.430000"
HALO_W = "3.500000"
@ -212,35 +207,39 @@ HALO_H = "3.500000"
HALO_GAMMA = "1.300000"
HALO_VS_SCAN = "0.800000"
DO_SCANLINES = "1.000000"
SCANLINE_MIN = "0.300000"
SCANLINES_BLEEDING = "0.300000"
SCANLINE_SM_TYPE = "1.000000"
SCANLINE_SM_STRENGTH = "1.000000"
SCANLINE_SM_VOFFSET = "70.000000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.150000"
BLOOM_SIZE = "1.500000"
BLOOM_POWER = "8.000000"
BLOOM_GAMMA_OUT = "1.200000"
BLOOM_MIX = "0.500000"
DO_CURVATURE = "1.000000"
GEOM_WARP_X = "0.800000"
GEOM_WARP_Y = "0.850000"
GEOM_CORNER_SIZE = "0.005000"
GEOM_CORNER_SMOOTH = "700.000000"
GEOM_WARP_X = "0.475000"
GEOM_WARP_Y = "0.500000"
GEOM_CORNER_SMOOTH = "400.000000"
DO_BEZEL = "1.000000"
BEZEL_INNER_ZOOM = "-0.165000"
BEZEL_FRAME_ZOOM = "0.040000"
BEZEL_IMAGE_BORDER = "1.020000"
BEZEL_RFL_OFFSET = "0.002000"
BEZEL_REFL_ZOOM = "0.993000"
DO_BG_IMAGE = "1.000000"
AMBI_STEPS = "5.000000"
AMBI_FALLOFF = "0.600000"
AMBI_POWER = "2.000000"
AMBI_POWER = "2.100000"
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"
textures = "monitor_body_curved;monitor_body_straight;bg_under;bg_over;backdrop"
monitor_body_curved = "textures/monitor_body_curved.png"
monitor_body_curved_linear = "true"
monitor_body_curved_wrap_mode = "clamp_to_edge"
monitor_body_curved_mipmap = "true"
monitor_body_straight = "textures/monitor_body_straight.png"
monitor_body_straight_linear = "true"
monitor_body_straight_wrap_mode = "clamp_to_edge"
monitor_body_straight_mipmap = "true"
bg_under = "textures/background_under.png"
bg_under_linear = "true"
bg_under_wrap_mode = "mirrored_repeat"
@ -249,3 +248,7 @@ bg_over = "textures/background_over.png"
bg_over_linear = "true"
bg_over_wrap_mode = "mirrored_repeat"
bg_over_mipmap = "true"
backdrop = "textures/boothill.jpg"
backdrop_linear = "true"
backdrop_wrap_mode = "mirrored_repeat"
backdrop_mipmap = "true"

View File

@ -1,180 +1,180 @@
shaders = "17"
shader0 = "shaders/first_pass.slang"
shader0 = "shaders/ntsc_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
alias0 = "first_pass"
alias0 = "ntsc_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "2.000000"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "2.000000"
shader1 = "shaders/fxaa.slang"
filter_linear1 = "true"
scale_y0 = "1.000000"
shader1 = "shaders/first_pass.slang"
filter_linear1 = "false"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "true"
alias1 = "FXAA_pass"
mipmap_input1 = "false"
alias1 = "first_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
scale_x1 = "1.000000"
scale_x1 = "2.000000"
scale_type_y1 = "source"
scale_y1 = "1.000000"
shader2 = "shaders/shift_and_bleed.slang"
scale_y1 = "2.000000"
shader2 = "shaders/fxaa.slang"
filter_linear2 = "true"
wrap_mode2 = "mirrored_repeat"
mipmap_input2 = "false"
alias2 = "shift_and_bleed_pass"
mipmap_input2 = "true"
alias2 = "FXAA_pass"
float_framebuffer2 = "false"
srgb_framebuffer2 = "false"
scale_type_x2 = "source"
scale_x2 = "1.000000"
scale_type_y2 = "source"
scale_y2 = "1.000000"
shader3 = "shaders/in_glow.slang"
shader3 = "shaders/shift_and_bleed.slang"
filter_linear3 = "true"
wrap_mode3 = "mirrored_repeat"
mipmap_input3 = "false"
alias3 = "in_glow_pass"
alias3 = "shift_and_bleed_pass"
float_framebuffer3 = "true"
srgb_framebuffer3 = "false"
scale_type_x3 = "source"
scale_x3 = "1.000000"
scale_type_y3 = "source"
scale_y3 = "1.000000"
shader4 = "shaders/halo.slang"
shader4 = "shaders/in_glow_x.slang"
filter_linear4 = "true"
wrap_mode4 = "mirrored_repeat"
mipmap_input4 = "false"
alias4 = "halo_pass"
alias4 = "in_glow_pass_x"
float_framebuffer4 = "true"
srgb_framebuffer4 = "false"
scale_type_x4 = "source"
scale_x4 = "1.000000"
scale_type_y4 = "source"
scale_y4 = "1.000000"
shader5 = "shaders/avglum_pass.slang"
shader5 = "shaders/in_glow_y.slang"
filter_linear5 = "true"
wrap_mode5 = "mirrored_repeat"
mipmap_input5 = "false"
alias5 = "avglum_pass"
float_framebuffer5 = "false"
alias5 = "in_glow_pass"
float_framebuffer5 = "true"
srgb_framebuffer5 = "false"
scale_type_x5 = "source"
scale_x5 = "0.500000"
scale_x5 = "1.000000"
scale_type_y5 = "source"
scale_y5 = "0.500000"
shader6 = "shaders/reflection_blur_h.slang"
scale_y5 = "1.000000"
shader6 = "shaders/halo_x.slang"
filter_linear6 = "true"
wrap_mode6 = "mirrored_repeat"
wrap_mode6 = "clamp_to_edge"
mipmap_input6 = "false"
alias6 = "reflected_blurred_pass1"
float_framebuffer6 = "false"
alias6 = "halo_pass_x"
float_framebuffer6 = "true"
srgb_framebuffer6 = "false"
scale_type_x6 = "source"
scale_x6 = "1.000000"
scale_type_y6 = "source"
scale_y6 = "1.000000"
shader7 = "shaders/reflection_blur_v.slang"
shader7 = "shaders/halo_y.slang"
filter_linear7 = "true"
wrap_mode7 = "mirrored_repeat"
wrap_mode7 = "clamp_to_edge"
mipmap_input7 = "false"
alias7 = "reflected_blurred_pass2"
float_framebuffer7 = "false"
alias7 = "halo_pass"
float_framebuffer7 = "true"
srgb_framebuffer7 = "false"
scale_type_x7 = "source"
scale_x7 = "1.000000"
scale_type_y7 = "source"
scale_y7 = "1.000000"
shader8 = "shaders/bloom_pass_1.slang"
shader8 = "shaders/avglum_pass.slang"
filter_linear8 = "true"
wrap_mode8 = "mirrored_repeat"
mipmap_input8 = "false"
alias8 = "bloom_pass_1"
float_framebuffer8 = "true"
alias8 = "avglum_pass"
float_framebuffer8 = "false"
srgb_framebuffer8 = "false"
scale_type_x8 = "source"
scale_x8 = "1.000000"
scale_x8 = "0.500000"
scale_type_y8 = "source"
scale_y8 = "1.000000"
shader9 = "shaders/bloom_pass_2.slang"
scale_y8 = "0.500000"
shader9 = "shaders/reflection_blur_x.slang"
filter_linear9 = "true"
wrap_mode9 = "clamp_to_edge"
wrap_mode9 = "mirrored_repeat"
mipmap_input9 = "false"
alias9 = "bloom_pass_2"
alias9 = "reflected_blurred_pass1"
float_framebuffer9 = "false"
srgb_framebuffer9 = "false"
scale_type_x9 = "source"
scale_x9 = "0.500000"
scale_x9 = "1.000000"
scale_type_y9 = "source"
scale_y9 = "0.500000"
shader10 = "shaders/bloom_pass_3.slang"
scale_y9 = "1.000000"
shader10 = "shaders/reflection_blur_y.slang"
filter_linear10 = "true"
wrap_mode10 = "clamp_to_edge"
wrap_mode10 = "mirrored_repeat"
mipmap_input10 = "false"
alias10 = "bloom_pass_3"
alias10 = "reflected_blurred_pass2"
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"
shader11 = "shaders/bloom_pass_1.slang"
filter_linear11 = "true"
wrap_mode11 = "mirrored_repeat"
mipmap_input11 = "false"
alias11 = "bloom_pass_final"
alias11 = "bloom_pass_1"
float_framebuffer11 = "false"
srgb_framebuffer11 = "false"
scale_type_x11 = "source"
scale_x11 = "1.000000"
scale_type_y11 = "source"
scale_y11 = "1.000000"
shader12 = "shaders/ambi_push_pass.slang"
shader12 = "shaders/bloom_pass_2.slang"
filter_linear12 = "true"
wrap_mode12 = "mirrored_repeat"
wrap_mode12 = "clamp_to_edge"
mipmap_input12 = "false"
alias12 = "ambi_push_pass"
float_framebuffer12 = "true"
alias12 = "bloom_pass_2"
float_framebuffer12 = "false"
srgb_framebuffer12 = "false"
scale_type_x12 = "source"
scale_x12 = "1.000000"
scale_x12 = "0.500000"
scale_type_y12 = "source"
scale_y12 = "1.000000"
shader13 = "shaders/ambi_pre_pass.slang"
scale_y12 = "0.500000"
shader13 = "shaders/bloom_pass_3.slang"
filter_linear13 = "true"
wrap_mode13 = "clamp_to_border"
mipmap_input13 = "true"
alias13 = "ambi_pre_pass1"
wrap_mode13 = "clamp_to_edge"
mipmap_input13 = "false"
alias13 = "bloom_pass_3"
float_framebuffer13 = "false"
srgb_framebuffer13 = "false"
scale_type_x13 = "source"
scale_x13 = "1.000000"
scale_type_y13 = "source"
scale_y13 = "1.000000"
shader14 = "shaders/ambi_temporal_pass.slang"
shader14 = "shaders/bloom_pass_4.slang"
filter_linear14 = "true"
wrap_mode14 = "clamp_to_border"
wrap_mode14 = "mirrored_repeat"
mipmap_input14 = "false"
alias14 = "ambi_temporal_pass"
alias14 = "bloom_pass_final"
float_framebuffer14 = "true"
srgb_framebuffer14 = "false"
scale_type_x14 = "source"
scale_x14 = "1.000000"
scale_type_y14 = "source"
scale_y14 = "1.000000"
shader15 = "shaders/isrotated.slang"
shader15 = "shaders/ambi_temporal_pass.slang"
filter_linear15 = "true"
wrap_mode15 = "mirrored_repeat"
wrap_mode15 = "clamp_to_border"
mipmap_input15 = "false"
alias15 = "isrotated_pass"
float_framebuffer15 = "false"
alias15 = "ambi_temporal_pass"
float_framebuffer15 = "true"
srgb_framebuffer15 = "false"
scale_type_x15 = "viewport"
scale_x15 = "0.100000"
scale_x15 = "0.050000"
scale_type_y15 = "viewport"
scale_y15 = "0.100000"
scale_y15 = "0.050000"
shader16 = "shaders/final_pass.slang"
filter_linear16 = "true"
wrap_mode16 = "mirrored_repeat"
@ -188,23 +188,18 @@ scale_type_y16 = "viewport"
scale_y16 = "1.000000"
DO_CCORRECTION = "1.000000"
LUMINANCE = "0.200000"
GAMMA_OUT = "0.550000"
DO_SHIFT_RGB = "1.000000"
SHIFT_R = "-20.000000"
SHIFT_G = "1.000000"
SHIFT_B = "20.000000"
GAMMA_OUT = "0.530000"
DO_IN_GLOW = "1.000000"
IN_GLOW_POWER = "1.900000"
IN_GLOW_W = "1.000000"
IN_GLOW_H = "1.000000"
IN_GLOW_POWER = "1.950000"
IN_GLOW_GAMMA = "2.000000"
IN_GLOW_W = "0.000000"
IN_GLOW_H = "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"
DARKLINES_PERIOD = "2.000000"
DO_HALO = "1.000000"
HALO_POWER = "0.430000"
HALO_W = "3.500000"
@ -212,33 +207,38 @@ HALO_H = "3.500000"
HALO_GAMMA = "1.300000"
HALO_VS_SCAN = "0.800000"
DO_SCANLINES = "1.000000"
SCANLINE_MIN = "0.300000"
SCANLINES_BLEEDING = "0.300000"
SCANLINE_SM_TYPE = "1.000000"
SCANLINE_SM_STRENGTH = "1.000000"
SCANLINE_SM_VOFFSET = "70.000000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.150000"
BLOOM_SIZE = "1.500000"
BLOOM_POWER = "8.000000"
BLOOM_GAMMA_OUT = "1.200000"
BLOOM_MIX = "0.500000"
DO_CURVATURE = "1.000000"
GEOM_WARP_X = "0.800000"
GEOM_WARP_Y = "0.850000"
GEOM_CORNER_SIZE = "0.005000"
GEOM_CORNER_SMOOTH = "700.000000"
GEOM_WARP_X = "0.475000"
GEOM_WARP_Y = "0.500000"
GEOM_CORNER_SMOOTH = "400.000000"
DO_BEZEL = "1.000000"
BEZEL_INNER_ZOOM = "-0.165000"
BEZEL_FRAME_ZOOM = "0.040000"
BEZEL_IMAGE_BORDER = "1.020000"
BEZEL_RFL_OFFSET = "0.002000"
BEZEL_REFL_ZOOM = "0.993000"
AMBI_FALLOFF = "0.600000"
AMBI_POWER = "2.000000"
AMBI_POWER = "1.700000"
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"
textures = "monitor_body_curved;monitor_body_straight;bg_under;bg_over;backdrop"
monitor_body_curved = "textures/monitor_body_curved.png"
monitor_body_curved_linear = "true"
monitor_body_curved_wrap_mode = "clamp_to_edge"
monitor_body_curved_mipmap = "true"
monitor_body_straight = "textures/monitor_body_straight.png"
monitor_body_straight_linear = "true"
monitor_body_straight_wrap_mode = "clamp_to_edge"
monitor_body_straight_mipmap = "true"
bg_under = "textures/background_under.png"
bg_under_linear = "true"
bg_under_wrap_mode = "mirrored_repeat"
@ -247,3 +247,7 @@ bg_over = "textures/background_over.png"
bg_over_linear = "true"
bg_over_wrap_mode = "mirrored_repeat"
bg_over_mipmap = "true"
backdrop = "textures/boothill.jpg"
backdrop_linear = "true"
backdrop_wrap_mode = "mirrored_repeat"
backdrop_mipmap = "true"

View File

@ -0,0 +1,253 @@
shaders = "17"
shader0 = "shaders/ntsc_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
alias0 = "ntsc_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "1.000000"
shader1 = "shaders/first_pass.slang"
filter_linear1 = "false"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "false"
alias1 = "first_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
scale_x1 = "2.000000"
scale_type_y1 = "source"
scale_y1 = "2.000000"
shader2 = "shaders/fxaa.slang"
filter_linear2 = "true"
wrap_mode2 = "mirrored_repeat"
mipmap_input2 = "true"
alias2 = "FXAA_pass"
float_framebuffer2 = "false"
srgb_framebuffer2 = "false"
scale_type_x2 = "source"
scale_x2 = "1.000000"
scale_type_y2 = "source"
scale_y2 = "1.000000"
shader3 = "shaders/shift_and_bleed.slang"
filter_linear3 = "true"
wrap_mode3 = "mirrored_repeat"
mipmap_input3 = "false"
alias3 = "shift_and_bleed_pass"
float_framebuffer3 = "true"
srgb_framebuffer3 = "false"
scale_type_x3 = "source"
scale_x3 = "1.000000"
scale_type_y3 = "source"
scale_y3 = "1.000000"
shader4 = "shaders/in_glow_x.slang"
filter_linear4 = "true"
wrap_mode4 = "mirrored_repeat"
mipmap_input4 = "false"
alias4 = "in_glow_pass_x"
float_framebuffer4 = "true"
srgb_framebuffer4 = "false"
scale_type_x4 = "source"
scale_x4 = "1.000000"
scale_type_y4 = "source"
scale_y4 = "1.000000"
shader5 = "shaders/in_glow_y.slang"
filter_linear5 = "true"
wrap_mode5 = "mirrored_repeat"
mipmap_input5 = "false"
alias5 = "in_glow_pass"
float_framebuffer5 = "true"
srgb_framebuffer5 = "false"
scale_type_x5 = "source"
scale_x5 = "1.000000"
scale_type_y5 = "source"
scale_y5 = "1.000000"
shader6 = "shaders/halo_x.slang"
filter_linear6 = "true"
wrap_mode6 = "clamp_to_edge"
mipmap_input6 = "false"
alias6 = "halo_pass_x"
float_framebuffer6 = "true"
srgb_framebuffer6 = "false"
scale_type_x6 = "source"
scale_x6 = "1.000000"
scale_type_y6 = "source"
scale_y6 = "1.000000"
shader7 = "shaders/halo_y.slang"
filter_linear7 = "true"
wrap_mode7 = "clamp_to_edge"
mipmap_input7 = "false"
alias7 = "halo_pass"
float_framebuffer7 = "true"
srgb_framebuffer7 = "false"
scale_type_x7 = "source"
scale_x7 = "1.000000"
scale_type_y7 = "source"
scale_y7 = "1.000000"
shader8 = "shaders/avglum_pass.slang"
filter_linear8 = "true"
wrap_mode8 = "mirrored_repeat"
mipmap_input8 = "false"
alias8 = "avglum_pass"
float_framebuffer8 = "false"
srgb_framebuffer8 = "false"
scale_type_x8 = "source"
scale_x8 = "0.500000"
scale_type_y8 = "source"
scale_y8 = "0.500000"
shader9 = "shaders/reflection_blur_x.slang"
filter_linear9 = "true"
wrap_mode9 = "mirrored_repeat"
mipmap_input9 = "false"
alias9 = "reflected_blurred_pass1"
float_framebuffer9 = "false"
srgb_framebuffer9 = "false"
scale_type_x9 = "source"
scale_x9 = "1.000000"
scale_type_y9 = "source"
scale_y9 = "1.000000"
shader10 = "shaders/reflection_blur_y.slang"
filter_linear10 = "true"
wrap_mode10 = "mirrored_repeat"
mipmap_input10 = "false"
alias10 = "reflected_blurred_pass2"
float_framebuffer10 = "false"
srgb_framebuffer10 = "false"
scale_type_x10 = "source"
scale_x10 = "1.000000"
scale_type_y10 = "source"
scale_y10 = "1.000000"
shader11 = "shaders/bloom_pass_1.slang"
filter_linear11 = "true"
wrap_mode11 = "mirrored_repeat"
mipmap_input11 = "false"
alias11 = "bloom_pass_1"
float_framebuffer11 = "false"
srgb_framebuffer11 = "false"
scale_type_x11 = "source"
scale_x11 = "1.000000"
scale_type_y11 = "source"
scale_y11 = "1.000000"
shader12 = "shaders/bloom_pass_2.slang"
filter_linear12 = "true"
wrap_mode12 = "clamp_to_edge"
mipmap_input12 = "false"
alias12 = "bloom_pass_2"
float_framebuffer12 = "false"
srgb_framebuffer12 = "false"
scale_type_x12 = "source"
scale_x12 = "0.500000"
scale_type_y12 = "source"
scale_y12 = "0.500000"
shader13 = "shaders/bloom_pass_3.slang"
filter_linear13 = "true"
wrap_mode13 = "clamp_to_edge"
mipmap_input13 = "false"
alias13 = "bloom_pass_3"
float_framebuffer13 = "false"
srgb_framebuffer13 = "false"
scale_type_x13 = "source"
scale_x13 = "1.000000"
scale_type_y13 = "source"
scale_y13 = "1.000000"
shader14 = "shaders/bloom_pass_4.slang"
filter_linear14 = "true"
wrap_mode14 = "mirrored_repeat"
mipmap_input14 = "false"
alias14 = "bloom_pass_final"
float_framebuffer14 = "true"
srgb_framebuffer14 = "false"
scale_type_x14 = "source"
scale_x14 = "1.000000"
scale_type_y14 = "source"
scale_y14 = "1.000000"
shader15 = "shaders/ambi_temporal_pass.slang"
filter_linear15 = "true"
wrap_mode15 = "clamp_to_border"
mipmap_input15 = "false"
alias15 = "ambi_temporal_pass"
float_framebuffer15 = "true"
srgb_framebuffer15 = "false"
scale_type_x15 = "viewport"
scale_x15 = "0.050000"
scale_type_y15 = "viewport"
scale_y15 = "0.050000"
shader16 = "shaders/final_pass.slang"
filter_linear16 = "true"
wrap_mode16 = "mirrored_repeat"
mipmap_input16 = "false"
alias16 = "final_pass"
float_framebuffer16 = "false"
srgb_framebuffer16 = "false"
scale_type_x16 = "viewport"
scale_x16 = "1.000000"
scale_type_y16 = "viewport"
scale_y16 = "1.000000"
DO_CCORRECTION = "1.000000"
LUMINANCE = "0.200000"
GAMMA_OUT = "0.525000"
DO_IN_GLOW = "1.000000"
IN_GLOW_POWER = "1.950000"
IN_GLOW_GAMMA = "2.000000"
IN_GLOW_SPREAD = "1.200000"
IN_GLOW_W = "1.000000"
IN_GLOW_H = "7.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"
DO_HALO = "1.000000"
HALO_POWER = "0.355000"
HALO_W = "3.500000"
HALO_H = "3.500000"
HALO_GAMMA = "1.300000"
HALO_VS_SCAN = "0.600000"
DO_SCANLINES = "1.000000"
SCANLINE_MIN = "0.050000"
SCANLINE_MAX = "4.099998"
SCANLINE_DARK = "0.100000"
SCANLINE_SM_VOFFSET = "70.000000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.500000"
DO_CURVATURE = "1.000000"
GEOM_WARP_X = "0.475000"
GEOM_WARP_Y = "0.500000"
GEOM_CORNER_SMOOTH = "400.000000"
DO_BEZEL = "1.000000"
BEZEL_INNER_ZOOM = "-0.010000"
BEZEL_FRAME_ZOOM = "0.170000"
BEZEL_IMAGE_BORDER = "1.020000"
BEZEL_RFL_OFFSET = "0.002000"
BEZEL_REFL_ZOOM = "0.993000"
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_curved;monitor_body_straight;bg_under;bg_over;backdrop"
monitor_body_curved = "textures/monitor_body_curved.png"
monitor_body_curved_linear = "true"
monitor_body_curved_wrap_mode = "clamp_to_edge"
monitor_body_curved_mipmap = "true"
monitor_body_straight = "textures/monitor_body_straight.png"
monitor_body_straight_linear = "true"
monitor_body_straight_wrap_mode = "clamp_to_edge"
monitor_body_straight_mipmap = "true"
bg_under = "textures/background_under.png"
bg_under_linear = "true"
bg_under_wrap_mode = "mirrored_repeat"
bg_under_mipmap = "true"
bg_over = "textures/background_over.png"
bg_over_linear = "true"
bg_over_wrap_mode = "mirrored_repeat"
bg_over_mipmap = "true"
backdrop = "textures/boothill.jpg"
backdrop_linear = "true"
backdrop_wrap_mode = "mirrored_repeat"
backdrop_mipmap = "true"

View File

@ -1,180 +1,180 @@
shaders = "17"
shader0 = "shaders/first_pass.slang"
shader0 = "shaders/ntsc_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
alias0 = "first_pass"
alias0 = "ntsc_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "2.000000"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "2.000000"
shader1 = "shaders/fxaa.slang"
filter_linear1 = "true"
scale_y0 = "1.000000"
shader1 = "shaders/first_pass.slang"
filter_linear1 = "false"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "true"
alias1 = "FXAA_pass"
mipmap_input1 = "false"
alias1 = "first_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
scale_x1 = "1.000000"
scale_x1 = "2.000000"
scale_type_y1 = "source"
scale_y1 = "1.000000"
shader2 = "shaders/shift_and_bleed.slang"
scale_y1 = "2.000000"
shader2 = "shaders/fxaa.slang"
filter_linear2 = "true"
wrap_mode2 = "mirrored_repeat"
mipmap_input2 = "false"
alias2 = "shift_and_bleed_pass"
mipmap_input2 = "true"
alias2 = "FXAA_pass"
float_framebuffer2 = "false"
srgb_framebuffer2 = "false"
scale_type_x2 = "source"
scale_x2 = "1.000000"
scale_type_y2 = "source"
scale_y2 = "1.000000"
shader3 = "shaders/in_glow.slang"
shader3 = "shaders/shift_and_bleed.slang"
filter_linear3 = "true"
wrap_mode3 = "mirrored_repeat"
mipmap_input3 = "false"
alias3 = "in_glow_pass"
alias3 = "shift_and_bleed_pass"
float_framebuffer3 = "true"
srgb_framebuffer3 = "false"
scale_type_x3 = "source"
scale_x3 = "1.000000"
scale_type_y3 = "source"
scale_y3 = "1.000000"
shader4 = "shaders/halo.slang"
shader4 = "shaders/in_glow_x.slang"
filter_linear4 = "true"
wrap_mode4 = "mirrored_repeat"
mipmap_input4 = "false"
alias4 = "halo_pass"
alias4 = "in_glow_pass_x"
float_framebuffer4 = "true"
srgb_framebuffer4 = "false"
scale_type_x4 = "source"
scale_x4 = "1.000000"
scale_type_y4 = "source"
scale_y4 = "1.000000"
shader5 = "shaders/avglum_pass.slang"
shader5 = "shaders/in_glow_y.slang"
filter_linear5 = "true"
wrap_mode5 = "mirrored_repeat"
mipmap_input5 = "false"
alias5 = "avglum_pass"
float_framebuffer5 = "false"
alias5 = "in_glow_pass"
float_framebuffer5 = "true"
srgb_framebuffer5 = "false"
scale_type_x5 = "source"
scale_x5 = "0.500000"
scale_x5 = "1.000000"
scale_type_y5 = "source"
scale_y5 = "0.500000"
shader6 = "shaders/reflection_blur_h.slang"
scale_y5 = "1.000000"
shader6 = "shaders/halo_x.slang"
filter_linear6 = "true"
wrap_mode6 = "mirrored_repeat"
wrap_mode6 = "clamp_to_edge"
mipmap_input6 = "false"
alias6 = "reflected_blurred_pass1"
float_framebuffer6 = "false"
alias6 = "halo_pass_x"
float_framebuffer6 = "true"
srgb_framebuffer6 = "false"
scale_type_x6 = "source"
scale_x6 = "1.000000"
scale_type_y6 = "source"
scale_y6 = "1.000000"
shader7 = "shaders/reflection_blur_v.slang"
shader7 = "shaders/halo_y.slang"
filter_linear7 = "true"
wrap_mode7 = "mirrored_repeat"
wrap_mode7 = "clamp_to_edge"
mipmap_input7 = "false"
alias7 = "reflected_blurred_pass2"
float_framebuffer7 = "false"
alias7 = "halo_pass"
float_framebuffer7 = "true"
srgb_framebuffer7 = "false"
scale_type_x7 = "source"
scale_x7 = "1.000000"
scale_type_y7 = "source"
scale_y7 = "1.000000"
shader8 = "shaders/bloom_pass_1.slang"
shader8 = "shaders/avglum_pass.slang"
filter_linear8 = "true"
wrap_mode8 = "mirrored_repeat"
mipmap_input8 = "false"
alias8 = "bloom_pass_1"
float_framebuffer8 = "true"
alias8 = "avglum_pass"
float_framebuffer8 = "false"
srgb_framebuffer8 = "false"
scale_type_x8 = "source"
scale_x8 = "1.000000"
scale_x8 = "0.500000"
scale_type_y8 = "source"
scale_y8 = "1.000000"
shader9 = "shaders/bloom_pass_2.slang"
scale_y8 = "0.500000"
shader9 = "shaders/reflection_blur_x.slang"
filter_linear9 = "true"
wrap_mode9 = "clamp_to_edge"
wrap_mode9 = "mirrored_repeat"
mipmap_input9 = "false"
alias9 = "bloom_pass_2"
alias9 = "reflected_blurred_pass1"
float_framebuffer9 = "false"
srgb_framebuffer9 = "false"
scale_type_x9 = "source"
scale_x9 = "0.500000"
scale_x9 = "1.000000"
scale_type_y9 = "source"
scale_y9 = "0.500000"
shader10 = "shaders/bloom_pass_3.slang"
scale_y9 = "1.000000"
shader10 = "shaders/reflection_blur_y.slang"
filter_linear10 = "true"
wrap_mode10 = "clamp_to_edge"
wrap_mode10 = "mirrored_repeat"
mipmap_input10 = "false"
alias10 = "bloom_pass_3"
alias10 = "reflected_blurred_pass2"
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"
shader11 = "shaders/bloom_pass_1.slang"
filter_linear11 = "true"
wrap_mode11 = "mirrored_repeat"
mipmap_input11 = "false"
alias11 = "bloom_pass_final"
alias11 = "bloom_pass_1"
float_framebuffer11 = "false"
srgb_framebuffer11 = "false"
scale_type_x11 = "source"
scale_x11 = "1.000000"
scale_type_y11 = "source"
scale_y11 = "1.000000"
shader12 = "shaders/ambi_push_pass.slang"
shader12 = "shaders/bloom_pass_2.slang"
filter_linear12 = "true"
wrap_mode12 = "mirrored_repeat"
wrap_mode12 = "clamp_to_edge"
mipmap_input12 = "false"
alias12 = "ambi_push_pass"
float_framebuffer12 = "true"
alias12 = "bloom_pass_2"
float_framebuffer12 = "false"
srgb_framebuffer12 = "false"
scale_type_x12 = "source"
scale_x12 = "1.000000"
scale_x12 = "0.500000"
scale_type_y12 = "source"
scale_y12 = "1.000000"
shader13 = "shaders/ambi_pre_pass.slang"
scale_y12 = "0.500000"
shader13 = "shaders/bloom_pass_3.slang"
filter_linear13 = "true"
wrap_mode13 = "clamp_to_border"
mipmap_input13 = "true"
alias13 = "ambi_pre_pass1"
wrap_mode13 = "clamp_to_edge"
mipmap_input13 = "false"
alias13 = "bloom_pass_3"
float_framebuffer13 = "false"
srgb_framebuffer13 = "false"
scale_type_x13 = "source"
scale_x13 = "1.000000"
scale_type_y13 = "source"
scale_y13 = "1.000000"
shader14 = "shaders/ambi_temporal_pass.slang"
shader14 = "shaders/bloom_pass_4.slang"
filter_linear14 = "true"
wrap_mode14 = "clamp_to_border"
wrap_mode14 = "mirrored_repeat"
mipmap_input14 = "false"
alias14 = "ambi_temporal_pass"
alias14 = "bloom_pass_final"
float_framebuffer14 = "true"
srgb_framebuffer14 = "false"
scale_type_x14 = "source"
scale_x14 = "1.000000"
scale_type_y14 = "source"
scale_y14 = "1.000000"
shader15 = "shaders/isrotated.slang"
shader15 = "shaders/ambi_temporal_pass.slang"
filter_linear15 = "true"
wrap_mode15 = "mirrored_repeat"
wrap_mode15 = "clamp_to_border"
mipmap_input15 = "false"
alias15 = "isrotated_pass"
float_framebuffer15 = "false"
alias15 = "ambi_temporal_pass"
float_framebuffer15 = "true"
srgb_framebuffer15 = "false"
scale_type_x15 = "viewport"
scale_x15 = "0.100000"
scale_x15 = "0.050000"
scale_type_y15 = "viewport"
scale_y15 = "0.100000"
scale_y15 = "0.050000"
shader16 = "shaders/final_pass.slang"
filter_linear16 = "true"
wrap_mode16 = "mirrored_repeat"
@ -188,16 +188,12 @@ scale_type_y16 = "viewport"
scale_y16 = "1.000000"
DO_CCORRECTION = "1.000000"
LUMINANCE = "0.200000"
GAMMA_OUT = "0.550000"
DO_SHIFT_RGB = "1.000000"
SHIFT_R = "-20.000000"
SHIFT_G = "1.000000"
SHIFT_B = "20.000000"
GAMMA_OUT = "0.530000"
DO_IN_GLOW = "1.000000"
IN_GLOW_POWER = "1.900000"
IN_GLOW_W = "1.000000"
IN_GLOW_H = "1.000000"
IN_GLOW_POWER = "1.950000"
IN_GLOW_GAMMA = "2.000000"
IN_GLOW_W = "0.000000"
IN_GLOW_H = "2.000000"
IN_GLOW_BIAS = "0.000000"
DO_VMASK_AND_DARKLINES = "1.000000"
RGB_MASK_STRENGTH = "1.000000"
@ -211,22 +207,21 @@ HALO_H = "3.500000"
HALO_GAMMA = "1.300000"
HALO_VS_SCAN = "0.800000"
DO_SCANLINES = "1.000000"
SCANLINE_MIN = "0.200000"
SCANLINE_SM_TYPE = "1.000000"
SCANLINE_SM_STRENGTH = "1.000000"
SCANLINE_SM_VOFFSET = "70.000000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.150000"
BLOOM_SIZE = "1.500000"
BLOOM_POWER = "8.000000"
BLOOM_GAMMA_OUT = "1.200000"
BLOOM_MIX = "0.500000"
DO_CURVATURE = "1.000000"
GEOM_WARP_X = "0.500000"
GEOM_WARP_X = "0.475000"
GEOM_WARP_Y = "0.500000"
GEOM_CORNER_SIZE = "0.005000"
GEOM_CORNER_SMOOTH = "700.000000"
GEOM_CORNER_SMOOTH = "400.000000"
DO_BEZEL = "1.000000"
BEZEL_INNER_ZOOM = "-0.010000"
BEZEL_FRAME_ZOOM = "0.170000"
BEZEL_IMAGE_BORDER = "1.020000"
BEZEL_RFL_OFFSET = "0.002000"
BEZEL_REFL_ZOOM = "0.993000"
AMBI_FALLOFF = "0.400000"
AMBI_POWER = "5.000000"
DO_VIGNETTE = "1.000000"
@ -234,11 +229,15 @@ 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"
textures = "monitor_body_curved;monitor_body_straight;bg_under;bg_over;backdrop"
monitor_body_curved = "textures/monitor_body_curved.png"
monitor_body_curved_linear = "true"
monitor_body_curved_wrap_mode = "clamp_to_edge"
monitor_body_curved_mipmap = "true"
monitor_body_straight = "textures/monitor_body_straight.png"
monitor_body_straight_linear = "true"
monitor_body_straight_wrap_mode = "clamp_to_edge"
monitor_body_straight_mipmap = "true"
bg_under = "textures/background_under.png"
bg_under_linear = "true"
bg_under_wrap_mode = "mirrored_repeat"
@ -247,3 +246,7 @@ bg_over = "textures/background_over.png"
bg_over_linear = "true"
bg_over_wrap_mode = "mirrored_repeat"
bg_over_mipmap = "true"
backdrop = "textures/boothill.jpg"
backdrop_linear = "true"
backdrop_wrap_mode = "mirrored_repeat"
backdrop_mipmap = "true"

View File

@ -1,180 +1,180 @@
shaders = "17"
shader0 = "shaders/first_pass.slang"
shader0 = "shaders/ntsc_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
alias0 = "first_pass"
alias0 = "ntsc_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "2.000000"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "2.000000"
shader1 = "shaders/fxaa.slang"
filter_linear1 = "true"
scale_y0 = "1.000000"
shader1 = "shaders/first_pass.slang"
filter_linear1 = "false"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "true"
alias1 = "FXAA_pass"
mipmap_input1 = "false"
alias1 = "first_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
scale_x1 = "1.000000"
scale_x1 = "2.000000"
scale_type_y1 = "source"
scale_y1 = "1.000000"
shader2 = "shaders/shift_and_bleed.slang"
scale_y1 = "2.000000"
shader2 = "shaders/fxaa.slang"
filter_linear2 = "true"
wrap_mode2 = "mirrored_repeat"
mipmap_input2 = "false"
alias2 = "shift_and_bleed_pass"
mipmap_input2 = "true"
alias2 = "FXAA_pass"
float_framebuffer2 = "false"
srgb_framebuffer2 = "false"
scale_type_x2 = "source"
scale_x2 = "1.000000"
scale_type_y2 = "source"
scale_y2 = "1.000000"
shader3 = "shaders/in_glow.slang"
shader3 = "shaders/shift_and_bleed.slang"
filter_linear3 = "true"
wrap_mode3 = "mirrored_repeat"
mipmap_input3 = "false"
alias3 = "in_glow_pass"
alias3 = "shift_and_bleed_pass"
float_framebuffer3 = "true"
srgb_framebuffer3 = "false"
scale_type_x3 = "source"
scale_x3 = "1.000000"
scale_type_y3 = "source"
scale_y3 = "1.000000"
shader4 = "shaders/halo.slang"
shader4 = "shaders/in_glow_x.slang"
filter_linear4 = "true"
wrap_mode4 = "mirrored_repeat"
mipmap_input4 = "false"
alias4 = "halo_pass"
alias4 = "in_glow_pass_x"
float_framebuffer4 = "true"
srgb_framebuffer4 = "false"
scale_type_x4 = "source"
scale_x4 = "1.000000"
scale_type_y4 = "source"
scale_y4 = "1.000000"
shader5 = "shaders/avglum_pass.slang"
shader5 = "shaders/in_glow_y.slang"
filter_linear5 = "true"
wrap_mode5 = "mirrored_repeat"
mipmap_input5 = "false"
alias5 = "avglum_pass"
float_framebuffer5 = "false"
alias5 = "in_glow_pass"
float_framebuffer5 = "true"
srgb_framebuffer5 = "false"
scale_type_x5 = "source"
scale_x5 = "0.500000"
scale_x5 = "1.000000"
scale_type_y5 = "source"
scale_y5 = "0.500000"
shader6 = "shaders/reflection_blur_h.slang"
scale_y5 = "1.000000"
shader6 = "shaders/halo_x.slang"
filter_linear6 = "true"
wrap_mode6 = "mirrored_repeat"
wrap_mode6 = "clamp_to_edge"
mipmap_input6 = "false"
alias6 = "reflected_blurred_pass1"
float_framebuffer6 = "false"
alias6 = "halo_pass_x"
float_framebuffer6 = "true"
srgb_framebuffer6 = "false"
scale_type_x6 = "source"
scale_x6 = "1.000000"
scale_type_y6 = "source"
scale_y6 = "1.000000"
shader7 = "shaders/reflection_blur_v.slang"
shader7 = "shaders/halo_y.slang"
filter_linear7 = "true"
wrap_mode7 = "mirrored_repeat"
wrap_mode7 = "clamp_to_edge"
mipmap_input7 = "false"
alias7 = "reflected_blurred_pass2"
float_framebuffer7 = "false"
alias7 = "halo_pass"
float_framebuffer7 = "true"
srgb_framebuffer7 = "false"
scale_type_x7 = "source"
scale_x7 = "1.000000"
scale_type_y7 = "source"
scale_y7 = "1.000000"
shader8 = "shaders/bloom_pass_1.slang"
shader8 = "shaders/avglum_pass.slang"
filter_linear8 = "true"
wrap_mode8 = "mirrored_repeat"
mipmap_input8 = "false"
alias8 = "bloom_pass_1"
float_framebuffer8 = "true"
alias8 = "avglum_pass"
float_framebuffer8 = "false"
srgb_framebuffer8 = "false"
scale_type_x8 = "source"
scale_x8 = "1.000000"
scale_x8 = "0.500000"
scale_type_y8 = "source"
scale_y8 = "1.000000"
shader9 = "shaders/bloom_pass_2.slang"
scale_y8 = "0.500000"
shader9 = "shaders/reflection_blur_x.slang"
filter_linear9 = "true"
wrap_mode9 = "clamp_to_edge"
wrap_mode9 = "mirrored_repeat"
mipmap_input9 = "false"
alias9 = "bloom_pass_2"
alias9 = "reflected_blurred_pass1"
float_framebuffer9 = "false"
srgb_framebuffer9 = "false"
scale_type_x9 = "source"
scale_x9 = "0.500000"
scale_x9 = "1.000000"
scale_type_y9 = "source"
scale_y9 = "0.500000"
shader10 = "shaders/bloom_pass_3.slang"
scale_y9 = "1.000000"
shader10 = "shaders/reflection_blur_y.slang"
filter_linear10 = "true"
wrap_mode10 = "clamp_to_edge"
wrap_mode10 = "mirrored_repeat"
mipmap_input10 = "false"
alias10 = "bloom_pass_3"
alias10 = "reflected_blurred_pass2"
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"
shader11 = "shaders/bloom_pass_1.slang"
filter_linear11 = "true"
wrap_mode11 = "mirrored_repeat"
mipmap_input11 = "false"
alias11 = "bloom_pass_final"
alias11 = "bloom_pass_1"
float_framebuffer11 = "false"
srgb_framebuffer11 = "false"
scale_type_x11 = "source"
scale_x11 = "1.000000"
scale_type_y11 = "source"
scale_y11 = "1.000000"
shader12 = "shaders/ambi_push_pass.slang"
shader12 = "shaders/bloom_pass_2.slang"
filter_linear12 = "true"
wrap_mode12 = "mirrored_repeat"
wrap_mode12 = "clamp_to_edge"
mipmap_input12 = "false"
alias12 = "ambi_push_pass"
float_framebuffer12 = "true"
alias12 = "bloom_pass_2"
float_framebuffer12 = "false"
srgb_framebuffer12 = "false"
scale_type_x12 = "source"
scale_x12 = "1.000000"
scale_x12 = "0.500000"
scale_type_y12 = "source"
scale_y12 = "1.000000"
shader13 = "shaders/ambi_pre_pass.slang"
scale_y12 = "0.500000"
shader13 = "shaders/bloom_pass_3.slang"
filter_linear13 = "true"
wrap_mode13 = "clamp_to_border"
mipmap_input13 = "true"
alias13 = "ambi_pre_pass1"
wrap_mode13 = "clamp_to_edge"
mipmap_input13 = "false"
alias13 = "bloom_pass_3"
float_framebuffer13 = "false"
srgb_framebuffer13 = "false"
scale_type_x13 = "source"
scale_x13 = "1.000000"
scale_type_y13 = "source"
scale_y13 = "1.000000"
shader14 = "shaders/ambi_temporal_pass.slang"
shader14 = "shaders/bloom_pass_4.slang"
filter_linear14 = "true"
wrap_mode14 = "clamp_to_border"
wrap_mode14 = "mirrored_repeat"
mipmap_input14 = "false"
alias14 = "ambi_temporal_pass"
alias14 = "bloom_pass_final"
float_framebuffer14 = "true"
srgb_framebuffer14 = "false"
scale_type_x14 = "source"
scale_x14 = "1.000000"
scale_type_y14 = "source"
scale_y14 = "1.000000"
shader15 = "shaders/isrotated.slang"
shader15 = "shaders/ambi_temporal_pass.slang"
filter_linear15 = "true"
wrap_mode15 = "mirrored_repeat"
wrap_mode15 = "clamp_to_border"
mipmap_input15 = "false"
alias15 = "isrotated_pass"
float_framebuffer15 = "false"
alias15 = "ambi_temporal_pass"
float_framebuffer15 = "true"
srgb_framebuffer15 = "false"
scale_type_x15 = "viewport"
scale_x15 = "0.100000"
scale_x15 = "0.050000"
scale_type_y15 = "viewport"
scale_y15 = "0.100000"
scale_y15 = "0.050000"
shader16 = "shaders/final_pass.slang"
filter_linear16 = "true"
wrap_mode16 = "mirrored_repeat"
@ -188,16 +188,12 @@ scale_type_y16 = "viewport"
scale_y16 = "1.000000"
DO_CCORRECTION = "1.000000"
LUMINANCE = "0.200000"
GAMMA_OUT = "0.550000"
DO_SHIFT_RGB = "1.000000"
SHIFT_R = "-20.000000"
SHIFT_G = "1.000000"
SHIFT_B = "20.000000"
GAMMA_OUT = "0.530000"
DO_IN_GLOW = "1.000000"
IN_GLOW_POWER = "1.900000"
IN_GLOW_W = "1.000000"
IN_GLOW_H = "1.000000"
IN_GLOW_POWER = "1.950000"
IN_GLOW_GAMMA = "2.000000"
IN_GLOW_W = "0.000000"
IN_GLOW_H = "2.000000"
IN_GLOW_BIAS = "0.000000"
DO_VMASK_AND_DARKLINES = "1.000000"
RGB_MASK_STRENGTH = "1.000000"
@ -211,28 +207,33 @@ HALO_H = "3.500000"
HALO_GAMMA = "1.300000"
HALO_VS_SCAN = "0.800000"
DO_SCANLINES = "1.000000"
SCANLINE_MIN = "0.200000"
SCANLINE_SM_TYPE = "1.000000"
SCANLINE_SM_STRENGTH = "1.000000"
SCANLINE_SM_VOFFSET = "70.000000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.150000"
BLOOM_SIZE = "1.500000"
BLOOM_POWER = "8.000000"
BLOOM_GAMMA_OUT = "1.200000"
BLOOM_MIX = "0.500000"
DO_CURVATURE = "1.000000"
GEOM_WARP_X = "0.150000"
GEOM_WARP_Y = "0.150000"
GEOM_WARP_X = "0.475000"
GEOM_WARP_Y = "0.500000"
GEOM_CORNER_SMOOTH = "200.000000"
BEZEL_INNER_ZOOM = "-0.215000"
BEZEL_IMAGE_BORDER = "1.020000"
BEZEL_RFL_OFFSET = "0.002000"
BEZEL_REFL_ZOOM = "0.993000"
AMBI_FALLOFF = "0.400000"
AMBI_POWER = "1.000000"
V_SIZE = "2.700000"
V_POWER = "1.050000"
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"
textures = "monitor_body_curved;monitor_body_straight;bg_under;bg_over;backdrop"
monitor_body_curved = "textures/monitor_body_curved.png"
monitor_body_curved_linear = "true"
monitor_body_curved_wrap_mode = "clamp_to_edge"
monitor_body_curved_mipmap = "true"
monitor_body_straight = "textures/monitor_body_straight.png"
monitor_body_straight_linear = "true"
monitor_body_straight_wrap_mode = "clamp_to_edge"
monitor_body_straight_mipmap = "true"
bg_under = "textures/background_under.png"
bg_under_linear = "true"
bg_under_wrap_mode = "mirrored_repeat"
@ -241,3 +242,7 @@ bg_over = "textures/background_over.png"
bg_over_linear = "true"
bg_over_wrap_mode = "mirrored_repeat"
bg_over_mipmap = "true"
backdrop = "textures/boothill.jpg"
backdrop_linear = "true"
backdrop_wrap_mode = "mirrored_repeat"
backdrop_mipmap = "true"

View File

@ -1,180 +1,180 @@
shaders = "17"
shader0 = "shaders/first_pass.slang"
shader0 = "shaders/ntsc_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
alias0 = "first_pass"
alias0 = "ntsc_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "2.000000"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "2.000000"
shader1 = "shaders/fxaa.slang"
filter_linear1 = "true"
scale_y0 = "1.000000"
shader1 = "shaders/first_pass.slang"
filter_linear1 = "false"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "true"
alias1 = "FXAA_pass"
mipmap_input1 = "false"
alias1 = "first_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
scale_x1 = "1.000000"
scale_x1 = "2.000000"
scale_type_y1 = "source"
scale_y1 = "1.000000"
shader2 = "shaders/shift_and_bleed.slang"
scale_y1 = "2.000000"
shader2 = "shaders/fxaa.slang"
filter_linear2 = "true"
wrap_mode2 = "mirrored_repeat"
mipmap_input2 = "false"
alias2 = "shift_and_bleed_pass"
mipmap_input2 = "true"
alias2 = "FXAA_pass"
float_framebuffer2 = "false"
srgb_framebuffer2 = "false"
scale_type_x2 = "source"
scale_x2 = "1.000000"
scale_type_y2 = "source"
scale_y2 = "1.000000"
shader3 = "shaders/in_glow.slang"
shader3 = "shaders/shift_and_bleed.slang"
filter_linear3 = "true"
wrap_mode3 = "mirrored_repeat"
mipmap_input3 = "false"
alias3 = "in_glow_pass"
alias3 = "shift_and_bleed_pass"
float_framebuffer3 = "true"
srgb_framebuffer3 = "false"
scale_type_x3 = "source"
scale_x3 = "1.000000"
scale_type_y3 = "source"
scale_y3 = "1.000000"
shader4 = "shaders/halo.slang"
shader4 = "shaders/in_glow_x.slang"
filter_linear4 = "true"
wrap_mode4 = "mirrored_repeat"
mipmap_input4 = "false"
alias4 = "halo_pass"
alias4 = "in_glow_pass_x"
float_framebuffer4 = "true"
srgb_framebuffer4 = "false"
scale_type_x4 = "source"
scale_x4 = "1.000000"
scale_type_y4 = "source"
scale_y4 = "1.000000"
shader5 = "shaders/avglum_pass.slang"
shader5 = "shaders/in_glow_y.slang"
filter_linear5 = "true"
wrap_mode5 = "mirrored_repeat"
mipmap_input5 = "false"
alias5 = "avglum_pass"
float_framebuffer5 = "false"
alias5 = "in_glow_pass"
float_framebuffer5 = "true"
srgb_framebuffer5 = "false"
scale_type_x5 = "source"
scale_x5 = "0.500000"
scale_x5 = "1.000000"
scale_type_y5 = "source"
scale_y5 = "0.500000"
shader6 = "shaders/reflection_blur_h.slang"
scale_y5 = "1.000000"
shader6 = "shaders/halo_x.slang"
filter_linear6 = "true"
wrap_mode6 = "mirrored_repeat"
wrap_mode6 = "clamp_to_edge"
mipmap_input6 = "false"
alias6 = "reflected_blurred_pass1"
float_framebuffer6 = "false"
alias6 = "halo_pass_x"
float_framebuffer6 = "true"
srgb_framebuffer6 = "false"
scale_type_x6 = "source"
scale_x6 = "1.000000"
scale_type_y6 = "source"
scale_y6 = "1.000000"
shader7 = "shaders/reflection_blur_v.slang"
shader7 = "shaders/halo_y.slang"
filter_linear7 = "true"
wrap_mode7 = "mirrored_repeat"
wrap_mode7 = "clamp_to_edge"
mipmap_input7 = "false"
alias7 = "reflected_blurred_pass2"
float_framebuffer7 = "false"
alias7 = "halo_pass"
float_framebuffer7 = "true"
srgb_framebuffer7 = "false"
scale_type_x7 = "source"
scale_x7 = "1.000000"
scale_type_y7 = "source"
scale_y7 = "1.000000"
shader8 = "shaders/bloom_pass_1.slang"
shader8 = "shaders/avglum_pass.slang"
filter_linear8 = "true"
wrap_mode8 = "mirrored_repeat"
mipmap_input8 = "false"
alias8 = "bloom_pass_1"
float_framebuffer8 = "true"
alias8 = "avglum_pass"
float_framebuffer8 = "false"
srgb_framebuffer8 = "false"
scale_type_x8 = "source"
scale_x8 = "1.000000"
scale_x8 = "0.500000"
scale_type_y8 = "source"
scale_y8 = "1.000000"
shader9 = "shaders/bloom_pass_2.slang"
scale_y8 = "0.500000"
shader9 = "shaders/reflection_blur_x.slang"
filter_linear9 = "true"
wrap_mode9 = "clamp_to_edge"
wrap_mode9 = "mirrored_repeat"
mipmap_input9 = "false"
alias9 = "bloom_pass_2"
alias9 = "reflected_blurred_pass1"
float_framebuffer9 = "false"
srgb_framebuffer9 = "false"
scale_type_x9 = "source"
scale_x9 = "0.500000"
scale_x9 = "1.000000"
scale_type_y9 = "source"
scale_y9 = "0.500000"
shader10 = "shaders/bloom_pass_3.slang"
scale_y9 = "1.000000"
shader10 = "shaders/reflection_blur_y.slang"
filter_linear10 = "true"
wrap_mode10 = "clamp_to_edge"
wrap_mode10 = "mirrored_repeat"
mipmap_input10 = "false"
alias10 = "bloom_pass_3"
alias10 = "reflected_blurred_pass2"
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"
shader11 = "shaders/bloom_pass_1.slang"
filter_linear11 = "true"
wrap_mode11 = "mirrored_repeat"
mipmap_input11 = "false"
alias11 = "bloom_pass_final"
alias11 = "bloom_pass_1"
float_framebuffer11 = "false"
srgb_framebuffer11 = "false"
scale_type_x11 = "source"
scale_x11 = "1.000000"
scale_type_y11 = "source"
scale_y11 = "1.000000"
shader12 = "shaders/ambi_push_pass.slang"
shader12 = "shaders/bloom_pass_2.slang"
filter_linear12 = "true"
wrap_mode12 = "mirrored_repeat"
wrap_mode12 = "clamp_to_edge"
mipmap_input12 = "false"
alias12 = "ambi_push_pass"
float_framebuffer12 = "true"
alias12 = "bloom_pass_2"
float_framebuffer12 = "false"
srgb_framebuffer12 = "false"
scale_type_x12 = "source"
scale_x12 = "1.000000"
scale_x12 = "0.500000"
scale_type_y12 = "source"
scale_y12 = "1.000000"
shader13 = "shaders/ambi_pre_pass.slang"
scale_y12 = "0.500000"
shader13 = "shaders/bloom_pass_3.slang"
filter_linear13 = "true"
wrap_mode13 = "clamp_to_border"
mipmap_input13 = "true"
alias13 = "ambi_pre_pass1"
wrap_mode13 = "clamp_to_edge"
mipmap_input13 = "false"
alias13 = "bloom_pass_3"
float_framebuffer13 = "false"
srgb_framebuffer13 = "false"
scale_type_x13 = "source"
scale_x13 = "1.000000"
scale_type_y13 = "source"
scale_y13 = "1.000000"
shader14 = "shaders/ambi_temporal_pass.slang"
shader14 = "shaders/bloom_pass_4.slang"
filter_linear14 = "true"
wrap_mode14 = "clamp_to_border"
wrap_mode14 = "mirrored_repeat"
mipmap_input14 = "false"
alias14 = "ambi_temporal_pass"
alias14 = "bloom_pass_final"
float_framebuffer14 = "true"
srgb_framebuffer14 = "false"
scale_type_x14 = "source"
scale_x14 = "1.000000"
scale_type_y14 = "source"
scale_y14 = "1.000000"
shader15 = "shaders/isrotated.slang"
shader15 = "shaders/ambi_temporal_pass.slang"
filter_linear15 = "true"
wrap_mode15 = "mirrored_repeat"
wrap_mode15 = "clamp_to_border"
mipmap_input15 = "false"
alias15 = "isrotated_pass"
float_framebuffer15 = "false"
alias15 = "ambi_temporal_pass"
float_framebuffer15 = "true"
srgb_framebuffer15 = "false"
scale_type_x15 = "viewport"
scale_x15 = "0.100000"
scale_x15 = "0.050000"
scale_type_y15 = "viewport"
scale_y15 = "0.100000"
scale_y15 = "0.050000"
shader16 = "shaders/final_pass.slang"
filter_linear16 = "true"
wrap_mode16 = "mirrored_repeat"
@ -188,16 +188,12 @@ scale_type_y16 = "viewport"
scale_y16 = "1.000000"
DO_CCORRECTION = "1.000000"
LUMINANCE = "0.200000"
GAMMA_OUT = "0.550000"
DO_SHIFT_RGB = "1.000000"
SHIFT_R = "-20.000000"
SHIFT_G = "1.000000"
SHIFT_B = "20.000000"
GAMMA_OUT = "0.530000"
DO_IN_GLOW = "1.000000"
IN_GLOW_POWER = "1.900000"
IN_GLOW_W = "1.000000"
IN_GLOW_H = "1.000000"
IN_GLOW_POWER = "1.950000"
IN_GLOW_GAMMA = "2.000000"
IN_GLOW_W = "0.000000"
IN_GLOW_H = "2.000000"
IN_GLOW_BIAS = "0.000000"
DO_VMASK_AND_DARKLINES = "1.000000"
RGB_MASK_STRENGTH = "1.000000"
@ -211,27 +207,32 @@ HALO_H = "3.500000"
HALO_GAMMA = "1.300000"
HALO_VS_SCAN = "0.800000"
DO_SCANLINES = "1.000000"
SCANLINE_MIN = "0.200000"
SCANLINE_SM_TYPE = "1.000000"
SCANLINE_SM_STRENGTH = "1.000000"
BLOOM_MIX = "0.150000"
BLOOM_SIZE = "1.500000"
BLOOM_POWER = "8.000000"
BLOOM_GAMMA_OUT = "1.200000"
SCANLINE_SM_VOFFSET = "70.000000"
BLOOM_MIX = "0.500000"
DO_CURVATURE = "1.000000"
GEOM_WARP_X = "0.150000"
GEOM_WARP_Y = "0.150000"
GEOM_WARP_X = "0.475000"
GEOM_WARP_Y = "0.500000"
GEOM_CORNER_SMOOTH = "200.000000"
BEZEL_INNER_ZOOM = "-0.215000"
BEZEL_IMAGE_BORDER = "1.020000"
BEZEL_RFL_OFFSET = "0.002000"
BEZEL_REFL_ZOOM = "0.993000"
AMBI_FALLOFF = "0.400000"
AMBI_POWER = "1.000000"
V_SIZE = "2.700000"
V_POWER = "1.050000"
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"
textures = "monitor_body_curved;monitor_body_straight;bg_under;bg_over;backdrop"
monitor_body_curved = "textures/monitor_body_curved.png"
monitor_body_curved_linear = "true"
monitor_body_curved_wrap_mode = "clamp_to_edge"
monitor_body_curved_mipmap = "true"
monitor_body_straight = "textures/monitor_body_straight.png"
monitor_body_straight_linear = "true"
monitor_body_straight_wrap_mode = "clamp_to_edge"
monitor_body_straight_mipmap = "true"
bg_under = "textures/background_under.png"
bg_under_linear = "true"
bg_under_wrap_mode = "mirrored_repeat"
@ -240,3 +241,7 @@ bg_over = "textures/background_over.png"
bg_over_linear = "true"
bg_over_wrap_mode = "mirrored_repeat"
bg_over_mipmap = "true"
backdrop = "textures/boothill.jpg"
backdrop_linear = "true"
backdrop_wrap_mode = "mirrored_repeat"
backdrop_mipmap = "true"

View File

@ -1,129 +0,0 @@
#version 450
/* This pass simulates the presence of a led strip placed on the back of the virtual screen */
#include "config.inc"
#define internalness 0.07 //The distance between the screen border and the led strip
#define leds_per_strip 8 //How many leds per border
#define radius 0.001 //The base radius of the emitted light (tuned by user parameter later)
#pragma stage vertex
layout(location = 0) in vec4 Position;
layout(location = 1) in vec2 TexCoord;
layout(location = 0) out vec2 vTexCoord;
layout(location = 1) out float border_min;
layout(location = 2) out float border_max;
layout(location = 3) out float fstep;
layout(location = 4) out float lod;
void main() {
gl_Position = global.MVP * Position;
vTexCoord = TexCoord;
border_min=internalness ;
border_max=1.0-internalness ;
fstep = (border_max - border_min) / (leds_per_strip-1);
//Calc a lod for a texture sized led_strip x led_strip
lod = log2(params.SourceSize.y / leds_per_strip);
}
#pragma stage fragment
layout(location = 0) in vec2 vTexCoord;
layout(location = 1) in float border_min;
layout(location = 2) in float border_max;
layout(location = 3) in float fstep;
layout(location = 4) in float lod;
layout(location = 0) out vec4 FragColor;
layout(set = 0, binding = 2) uniform sampler2D Source;
layout(set = 0, binding = 3) uniform sampler2D isrotated_passFeedback;
layout(set = 0, binding = 4) uniform sampler2D ambi_pre_pass1Feedback;
#include "includes/functions.include.slang"
vec3 circle_smooth(vec2 coords, vec2 middle, float f_radius, float FALLOFF, float f_lod) {
float fdistance=distance(middle, vec2(coords.x, coords.y));
float circle = (1-smoothstep(f_radius-FALLOFF, f_radius+FALLOFF, fdistance));
vec3 circle_color = textureLod(Source, middle, f_lod).rgb * circle;
return circle_color;
}
#define tol_start 0.06 //skip tolerance
#define tol_end 0.94 //1-tol_start
/*
To spare gpu cycles, completely skip the pass
by the following factor and return instead the previous
(temporal) frame. The trick works because the pass is
temporal smoothed later on.
The only downside is that the leds will have less reaction time.
Esample:
a FRAME_DIVIDER = 3 over a 60hz content will give
a minimum reaction time of 60/3=20Hz=50msecs.
*/
#define FRAME_DIVIDER 3
void main() {
if (DO_AMBILIGHT != 1.0) return;
if ( mod(params.FrameCount, FRAME_DIVIDER) != 0.0) {
FragColor = texture(ambi_pre_pass1Feedback, vTexCoord);
return;
}
bool is_rotated = texture(isrotated_passFeedback, vec2(0.5, 0.5)).r > 0.5;
//Scale to the original aspect
vec2 coords = get_scaled_coords(vTexCoord, global.FinalViewportSize, is_rotated);
if (DO_BEZEL==1.0) coords = zoomout_coords(coords, -BEZEL_INNER_ZOOM , 1.0);
//Skip coords in the rect "under the monitor"
FragColor = vec4(0.0);
//First consider to skip the curved coords
if (DO_CURVATURE == 1.0) {
if ((GEOM_WARP_X > 0.0) || (GEOM_WARP_Y > 0.0)) {
vec2 coords_curved = Warp(coords, GEOM_WARP_X, GEOM_WARP_Y);
if ( ( (coords_curved.x > tol_start && coords_curved.x < 1.0 - tol_start ) && (coords_curved.y > tol_start && coords_curved.y < 1.0 - tol_start) ) &&
!( (coords.x < - tol_start || coords.x > 1.0 + tol_start) || (coords.y < - tol_start || coords.y > 1.0 + tol_start) ) )
return;
}
}
//...next, the straight ones (needed even when curvature is due, because it returns particular values in the corners)
//skip_pass = skip_pass && !( (coords.x < 0.0 -tol || coords.x > 1.0 +tol) || (coords.y < 0.0 -tol || coords.y > 1.0 +tol) );
if (coords.x > tol_start && coords.x < tol_end && coords.y > tol_start && coords.y < tol_end) return;
//Finally, emulate leds.
vec3 pixel_out = vec3(0.0);
float middle_x; float middle_y ;
middle_x=border_min;
for (middle_y=border_min ; middle_y <= border_max+eps ; middle_y=middle_y + fstep ) {
pixel_out +=circle_smooth(coords, vec2(middle_x,middle_y), radius, AMBI_FALLOFF, lod);
}
middle_x=border_max;
for (middle_y=border_min ; middle_y <= border_max+eps ; middle_y=middle_y + fstep ) {
pixel_out +=circle_smooth(coords, vec2(middle_x,middle_y), radius, AMBI_FALLOFF, lod);
}
middle_y=border_min;
for (middle_x=border_min+fstep ; middle_x <= border_max-fstep+eps ; middle_x=middle_x + fstep ) {
pixel_out +=circle_smooth(coords, vec2(middle_x,middle_y), radius, AMBI_FALLOFF, lod);
}
middle_y=border_max;
for (middle_x=border_min+fstep ; middle_x <= border_max-fstep+eps ; middle_x=middle_x + fstep ) {
pixel_out +=circle_smooth(coords, vec2(middle_x,middle_y), radius, AMBI_FALLOFF, lod);
}
FragColor = vec4(pixel_out,1.0);
return;
}

View File

@ -1,34 +0,0 @@
#version 450
/* This pass apply an pre-gain to the leds on the rear of the virtual screen
* it is intended to produce a mipmap to be used by the next pass */
#include "config.inc"
#pragma stage vertex
layout(location = 0) in vec4 Position;
layout(location = 1) in vec2 TexCoord;
layout(location = 0) out vec2 vTexCoord;
void main() {
gl_Position = global.MVP * Position;
vTexCoord = TexCoord;
}
#pragma stage fragment
layout(location = 0) in vec2 vTexCoord;
layout(location = 0) out vec4 FragColor;
layout(set = 0, binding = 2) uniform sampler2D first_pass;
layout(set = 0, binding = 3) uniform sampler2D avglum_pass;
#include "includes/functions.include.slang"
void main() {
if (DO_AMBILIGHT != 1.0) return;
vec3 pixel_out = texture(first_pass, vTexCoord).rgb;
pixel_out = apply_fuzzy_main_pass(pixel_out);
pixel_out = pixel_push_luminance(pixel_out, AMBI_POWER-1);
FragColor = vec4(pixel_out, 1.0);
}

View File

@ -1,84 +1,195 @@
#version 450
/* In this pass the led light is temporally smoothed to give smooth fades.
* the slowness is configurable by user parameter.
* It also detect when a full scene is changed to produces fast fades, instead
*/
/* This pass simulates the presence of a led strip placed on the back of the virtual screen */
#include "config.inc"
#define PreviousSampler ambi_temporal_passFeedback
#define CurrentSampler ambi_pre_pass1
#define PastSampler ambi_temporal_passFeedback
#define internalness 0.07 //The distance between the screen border and the led strip
#define leds_per_strip 8 //How many leds per border
#define radius 0.001 //The base radius of the emitted light (tuned by user parameter later)
#pragma stage vertex
layout(location = 0) in vec4 Position;
layout(location = 1) in vec2 TexCoord;
layout(location = 0) out vec2 vTexCoord;
layout(location = 1) out float border_min;
layout(location = 2) out float border_max;
layout(location = 3) out float fstep;
layout(location = 4) out float lod;
layout(location = 5) out vec2 vWarp_vexp;
layout(location = 6) out vec2 vWarp_arg2;
void main() {
gl_Position = global.MVP * Position;
vTexCoord = TexCoord;
gl_Position = global.MVP * Position;
vTexCoord = TexCoord;
border_min=internalness ;
border_max=1.0-internalness ;
fstep = (border_max - border_min) / (leds_per_strip-1);
//Calc a lod for a texture sized led_strip x led_strip
lod = log2(global.first_passSize.y / leds_per_strip);
//Precalc some Curvature/Warp values:
vWarp_vexp = 1.0/ (1 + (vec2(GEOM_WARP_X, GEOM_WARP_Y) * 0.2)) ;
vWarp_arg2 = 1.0 - pow(vec2(0.29289321881345247559915563789515), vWarp_vexp );
}
#pragma stage fragment
layout(location = 0) in vec2 vTexCoord;
layout(location = 1) in float border_min;
layout(location = 2) in float border_max;
layout(location = 3) in float fstep;
layout(location = 4) in float lod;
layout(location = 5) in vec2 vWarp_vexp;
layout(location = 6) in vec2 vWarp_arg2;
layout(location = 0) out vec4 FragColor;
layout(set = 0, binding = 2) uniform sampler2D CurrentSampler;
layout(set = 0, binding = 3) uniform sampler2D PreviousSampler;
layout(set = 0, binding = 4) uniform sampler2D avglum_pass;
layout(set = 0, binding = 5) uniform sampler2D avglum_passFeedback;
layout(set = 0, binding = 1) uniform sampler2D PastSampler;
layout(set = 0, binding = 2) uniform sampler2D avglum_pass;
layout(set = 0, binding = 3) uniform sampler2D avglum_passFeedback;
layout(set = 0, binding = 4) uniform sampler2D first_pass;
#include "includes/functions.include.slang"
vec3 ambi_push_pass(vec2 coords, float f_lod) {
vec3 pixel_out = textureLod(first_pass, coords, f_lod).rgb;
pixel_out = apply_fuzzy_main_pass(pixel_out);
pixel_out = pixel_push_luminance(pixel_out, AMBI_POWER-1);
return pixel_out;
}
vec3 circle_smooth(vec2 coords, vec2 middle, float f_radius, float FALLOFF, float f_lod) {
float fdistance=distance(middle, vec2(coords.x, coords.y));
float circle = (1-smoothstep(f_radius-FALLOFF, f_radius+FALLOFF, fdistance));
vec3 circle_color = ambi_push_pass(middle, f_lod) * circle;
return circle_color;
}
#define tol_start 0.06 //skip tolerance
#define tol_end 0.94 //1-tol_start
vec3 ambi_pre_pass() {
//Scale to the original aspect
vec2 coords = get_scaled_coords(vTexCoord, global.FinalViewportSize, is_rotated());
if (DO_GLOBAL_SHZO >0.5)
coords = zoom(coords + vec2(-GLOBAL_OFFX, -GLOBAL_OFFY), GLOBAL_ZOOM );
if (DO_BEZEL==1.0) coords = zoomout_coords(coords, -BEZEL_INNER_ZOOM , 1.0);
//Skip coords in the rect "under the monitor"
FragColor = vec4(0.0);
//First consider to skip the curved coords
if (DO_CURVATURE == 1.0) {
if ((GEOM_WARP_X > 0.0) || (GEOM_WARP_Y > 0.0)) {
vec2 coords_curved = Warp_fast(coords, vWarp_vexp, vWarp_arg2); // vec2 coords_curved = Warp(coords, GEOM_WARP_X, GEOM_WARP_Y);
if ( ( (coords_curved.x > tol_start && coords_curved.x < 1.0 - tol_start ) && (coords_curved.y > tol_start && coords_curved.y < 1.0 - tol_start) ) &&
!( (coords.x < - tol_start || coords.x > 1.0 + tol_start) || (coords.y < - tol_start || coords.y > 1.0 + tol_start) ) )
return vec3(0.0);
}
}
//...next, the straight ones (needed even when curvature is due, because it returns particular values in the corners)
//skip_pass = skip_pass && !( (coords.x < 0.0 -tol || coords.x > 1.0 +tol) || (coords.y < 0.0 -tol || coords.y > 1.0 +tol) );
if (coords.x > tol_start && coords.x < tol_end && coords.y > tol_start && coords.y < tol_end) return vec3(0.0);
//Finally, emulate leds.
vec3 pixel_out = vec3(0.0);
float middle_x; float middle_y ;
middle_x=border_min;
for (middle_y=border_min ; middle_y <= border_max+eps ; middle_y=middle_y + fstep ) {
pixel_out +=circle_smooth(coords, vec2(middle_x,middle_y), radius, AMBI_FALLOFF, lod);
}
middle_x=border_max;
for (middle_y=border_min ; middle_y <= border_max+eps ; middle_y=middle_y + fstep ) {
pixel_out +=circle_smooth(coords, vec2(middle_x,middle_y), radius, AMBI_FALLOFF, lod);
}
middle_y=border_min;
for (middle_x=border_min+fstep ; middle_x <= border_max-fstep+eps ; middle_x=middle_x + fstep ) {
pixel_out +=circle_smooth(coords, vec2(middle_x,middle_y), radius, AMBI_FALLOFF, lod);
}
middle_y=border_max;
for (middle_x=border_min+fstep ; middle_x <= border_max-fstep+eps ; middle_x=middle_x + fstep ) {
pixel_out +=circle_smooth(coords, vec2(middle_x,middle_y), radius, AMBI_FALLOFF, lod);
}
return pixel_out;
}
#define MAX_STEPS AMBI_STEPS
float ambi_step(float start, float end, float mystep) {
float diff = start-end;
if (abs(diff) < mystep) return end;
//Does not worth to try to unbranch:
if (start >= end)
return start - mystep;
else
return start + mystep;
}
vec3 ambi_step_rgb(vec3 s,vec3 d, vec3 mystep){
//step fade (f) rom s to d
return vec3 ( ambi_step(s.r,d.r,mystep.r),
ambi_step(s.g,d.g,mystep.g),
ambi_step(s.b,d.b,mystep.b)
//step fade from s to d
return vec3 ( ambi_step(s.r, d.r, mystep.r),
ambi_step(s.g, d.g, mystep.g),
ambi_step(s.b, d.b, mystep.b)
);
}
vec4 pixel_ambilight() {
vec3 mystep;
vec4 previous_pixel_vec4 = texture(PreviousSampler, vTexCoord);
vec3 current_pixel = texture(CurrentSampler, vTexCoord).rgb;
vec3 previous_pixel = previous_pixel_vec4.rgb;
vec4 past_pixel_vec4 = texture(PastSampler, vTexCoord);
vec3 present_pixel = ambi_pre_pass().rgb;
vec3 past_pixel = past_pixel_vec4.rgb;
float scene_change_remaining = previous_pixel_vec4.a;
float scene_change_remaining = past_pixel_vec4.a;
float prev_avg_lum = texture(avglum_passFeedback,vec2(0.25,0.25)).a;
float curr_avg_lum = texture(avglum_pass ,vec2(0.25,0.25)).a;
float diff_avg_lum = abs(prev_avg_lum - curr_avg_lum);
float past_avg_lum = texture(avglum_passFeedback,vec2(0.25,0.25)).a;
float present_avg_lum = texture(avglum_pass ,vec2(0.25,0.25)).a;
float diff_avg_lum = abs(past_avg_lum - present_avg_lum);
if (diff_avg_lum >= AMBI_SCENE_CHG_THRSHLD) {
scene_change_remaining = 1.0;
}
// Are we changing scene?
vec3 mystep;
if (scene_change_remaining > 0.0) {
mystep = vec3(max(1.0/MAX_STEPS, AMBI_FAST_STEP)); // <- Never slow down fades due to fast step when changing scene
scene_change_remaining -= AMBI_FAST_STEP;
} else {
mystep = abs((previous_pixel-current_pixel) / MAX_STEPS);
} else {
mystep = abs((past_pixel - present_pixel) / MAX_STEPS); //OK
}
return vec4(ambi_step_rgb(previous_pixel,current_pixel,mystep),scene_change_remaining);
return vec4(ambi_step_rgb(past_pixel, present_pixel, mystep), scene_change_remaining);
}
void main() {
if (DO_AMBILIGHT != 1.0) return;
//3.0 makes scene detection not working.
#define FRAME_DIVIDER 2.0
void main() {
if (DO_AMBILIGHT != 1.0)
return;
if ( mod(params.FrameCount,FRAME_DIVIDER) != 0.0) {
vec4 past_sampler = texture(PastSampler, vTexCoord);
past_sampler = max(past_sampler, 0.0); // <- Sanitize input to avoid glitches when enabling the option runtime.
FragColor = past_sampler;
return;
}
FragColor = pixel_ambilight();
}

View File

@ -5,8 +5,9 @@
#include "config.inc"
//The mipmap wideness needed by the reflection on the bezel.
#define min_w 16
//The mipmap wideness needed by the highlights on the bezel.
//the higher, the smoother.
#define mip_lod 5
#pragma stage vertex
layout(location = 0) in vec4 Position;
@ -16,8 +17,7 @@ layout(location = 1) out float lod;
void main() {
gl_Position = global.MVP * Position;
vTexCoord = TexCoord;
lod = log2(params.SourceSize.y / min_w);
vTexCoord = TexCoord;
}
#pragma stage fragment
@ -35,30 +35,58 @@ layout(set = 0, binding = 3) uniform sampler2D avglum_passFeedback;
#include "includes/functions.include.slang"
#define RGB_TO_GRAYSCALE = vec3(0.299, 0.587, 0.114)
float get_avg_lum_from_mip() {
vec3 mip = textureLod(first_pass, vec2(0.5,0.5),20.0).rgb;
mip = apply_fuzzy_main_pass(mip);
return (mip.r+mip.g+mip.b)/3.0;
//return (mip.r+mip.g+mip.b)/3.0;
return rgb_to_gray(mip);
}
//0.1 seems like a good tradeoff that works well with bloom exposire and fullscreen zoom
//...maybe bloom exposure works best at 0.05; you may consider another zone of smooth sampling.
#define SMOOTHNESS_SPEED 0.1
float get_avglum() {
bool coordinate_for_scene_detection =
/* avglum alpha has 3 zones::
* 0.25 -> reduced sampling, used for to aid scene detection
* 0.75 -> smoothed_sampling, used to adapt fullscreen zoom
* anything else: continuous sampling
*/
bool reduced_sampling_co =
vTexCoord.x > 0.24 && vTexCoord.x < 0.26 &&
vTexCoord.y > 0.24 && vTexCoord.y < 0.26 ;
bool reduced_sample_time_is_now = (mod(params.FrameCount,AMBI_AVGLUM_DIVIDER) == 0);
if (!coordinate_for_scene_detection) return get_avg_lum_from_mip();
if (reduced_sample_time_is_now) return get_avg_lum_from_mip();
if (coordinate_for_scene_detection && reduced_sample_time_is_now) return get_avg_lum_from_mip();
/* Implicit else: we are in a coordinate that is not used for scene detection
* So just return the feedback of this pass to spare gpu cycles. */
return texture(avglum_passFeedback,vTexCoord).a;
bool smoothed_sampling_co =
vTexCoord.x > 0.74 && vTexCoord.x < 0.76 &&
vTexCoord.y > 0.74 && vTexCoord.y < 0.76 ;
if (reduced_sampling_co) {
//in the reduced sampling zone, only update at right time; else return the previous frame.
bool reduced_sample_time_is_now = (mod(params.FrameCount,AMBI_AVGLUM_DIVIDER) == 0);
if (reduced_sample_time_is_now)
return get_avg_lum_from_mip();
float avglum_feedback = texture(avglum_passFeedback,vTexCoord).a;
avglum_feedback = max(avglum_feedback, 0.0); // <- Sanitize input to avoid glitches when enabling the option runtime.
return avglum_feedback;
}
if (smoothed_sampling_co) {
return mix(texture(avglum_passFeedback,vTexCoord).a, get_avg_lum_from_mip(), SMOOTHNESS_SPEED);
}
//Outside specific areas, update continuously; this is used by bezel highlights.
return get_avg_lum_from_mip();
}
void main() {
/*Grab a mipmap from the previous pass.
/*Grab a mipmap from the first pass.
Calculate the average luminance from the smallest mipmap and put into the alpha channel
So that can be used:
1 - continuously at coordinate 0.5,0.5
@ -73,9 +101,8 @@ void main() {
pixel_out.a = get_avglum();
if (DO_BEZEL + DO_BLOOM > 0.0) {
//Create a small mipmap to be used to light the bezel corners.
pixel_out.rgb = textureLod(first_pass, vTexCoord,lod).rgb;
pixel_out.rgb = textureLod(first_pass, vTexCoord, mip_lod).rgb;
}
FragColor = pixel_out;
}

View File

@ -18,26 +18,26 @@ void main() {
layout(location = 0) in vec2 vTexCoord;
layout(location = 0) out vec4 FragColor;
layout(set = 0, binding = 2) uniform sampler2D first_pass;
layout(set = 0, binding = 1) uniform sampler2D ntsc_pass;
#include "includes/blooms.include.slang"
#include "includes/functions.include.slang"
#include "includes/blooms.include.slang"
void main() {
if (DO_BLOOM == 0.0) return;
vec3 bloomed = bloom(
first_pass,
vec3 bloomed = bloom_gamma_power(
ntsc_pass,
vTexCoord,
params.OriginalSize,
vec2(BLOOM_SIZE),
BLOOM_QUALITY,
BLOOM_GAMMA,
BLOOM_GAMMA, 1.0,
0.0,
0.0
);
bloomed = apply_fuzzy_main_pass(bloomed) * BLOOM_POWER;
bloomed = apply_fuzzy_main_pass(bloomed);
FragColor = vec4(bloomed, 1.0);
}

View File

@ -20,8 +20,11 @@ layout(location = 0) in vec2 vTexCoord;
layout(location = 0) out vec4 FragColor;
layout(set = 0, binding = 2) uniform sampler2D Source;
#include "includes/functions.include.slang"
#include "includes/blooms.include.slang"
#define offset 0.1963495408493621 // TAU/8.0/4.0*1.0
void main() {
if (DO_BLOOM == 0.0) return;
@ -31,10 +34,10 @@ void main() {
params.SourceSize,
vec2(BLOOM_SIZE),
BLOOM_QUALITY,
1.0,
0.196349540625,
offset,
0.0
);
FragColor = vec4(bloomed.rgb, 1.0);
FragColor = vec4(bloomed.rgb, 1.0); //FragColor = texture(Source, vTexCoord);
}

View File

@ -20,8 +20,11 @@ layout(location = 0) in vec2 vTexCoord;
layout(location = 0) out vec4 FragColor;
layout(set = 0, binding = 2) uniform sampler2D Source;
#include "includes/functions.include.slang"
#include "includes/blooms.include.slang"
#define offset 0.3926990816987242 //TAU/8.0/4.0*2.0
void main() {
if (DO_BLOOM == 0.0) return;
@ -31,11 +34,10 @@ void main() {
params.SourceSize,
vec2(BLOOM_SIZE),
BLOOM_QUALITY,
1.0,
0.39269908125,
offset,
0.0
);
FragColor = vec4(bloomed.rgb, 1.0);
FragColor = vec4(bloomed.rgb, 1.0); //FragColor = texture(Source,vTexCoord);
}

View File

@ -18,24 +18,113 @@ void main() {
layout(location = 0) in vec2 vTexCoord;
layout(location = 0) out vec4 FragColor;
layout(set = 0, binding = 2) uniform sampler2D Source;
layout(set = 0, binding = 1) uniform sampler2D Source;
layout(set = 0, binding = 2) uniform sampler2D avglum_pass;
layout(set = 0, binding = 3) uniform sampler2D first_pass;
layout(set = 0, binding = 4) uniform sampler2D bloom_pass_finalFeedback;
#include "includes/functions.include.slang"
#include "includes/blooms.include.slang"
#define offset 0.5890486225480862 // TAU/8.0/4.0*3.0
//The curve shoulder to map scene luminance to bloom mix strength
#define BLOOM_PUPIL_EXPOSURE_CURVE_SHOULDER 0.33
//How big is the zone in which the luminance will be computed for puple temporal adaption (range 2..20)
#define BLOOM_PUPIL_LUM_ZONE_W 7
//The speed of the pupil adaption
#define BLOOM_PUPIL_ADAPTION_SPEED 0.2
float get_avg_lum_from_mip(sampler2D tex, vec2 co, float lod) {
vec3 mip = textureLod(first_pass, co, lod).rgb;
mip = apply_fuzzy_main_pass(mip);
//return (mip.r+mip.g+mip.b)/3.0;
float luminance_from_feedback = rgb_to_gray(mip);
float luminance_first_pass = texture(bloom_pass_finalFeedback,vTexCoord).a;
luminance_first_pass = max(luminance_first_pass, 0.0); // <- Sanitize input to avoid glitches when enabling the option runtime.
//temporal smooth.
//the defined emulated eye adaption speed needs to be divided
//by the eye adaption strength (BLOOM_EYE_ADPT_SRT)
//The following makes the adaption speed more constant:
float eye_adaption_speed = BLOOM_PUPIL_ADAPTION_SPEED * ( luminance_first_pass / luminance_from_feedback ) ;
//The following is needed so that the speed is the same even for higher strength
eye_adaption_speed = (eye_adaption_speed / BLOOM_EYE_ADPT_SRT);
//The following simulates pupil inertia
eye_adaption_speed = clamp(eye_adaption_speed, 1.0/BLOOM_EYE_INERTIA, 1.0);
float luminance = mix(luminance_first_pass, luminance_from_feedback, eye_adaption_speed);
return luminance + eps;
}
void main() {
if (DO_BLOOM == 0.0) return;
vec3 bloomed = bloom(
Source,
vTexCoord,
params.SourceSize,
vec2(BLOOM_SIZE),
BLOOM_QUALITY,
1.0,
0.589048621875,
offset,
0.0
);
bloomed = pow(bloomed,vec3(BLOOM_GAMMA_OUT));
bloomed = pixel_push_luminance(bloomed, BLOOM_POWER);
float fbloom_mix = BLOOM_MIX;
float bloom_mix_adapted = 1.0;
float over_white_correction = 1.0;
if (BLOOM_OVER_WHITE < 1.0) {
//Use mipmap available in avglum_pass to identify bright areas.
vec3 avglum = texture(avglum_pass,vTexCoord).rgb;
float b_brightness = max(avglum.b,max(avglum.r,avglum.g));
b_brightness *= 1-BLOOM_OVER_WHITE;
over_white_correction =1- b_brightness;
}
bloomed*=BLOOM_POWER;
// (Branching with (if BLOOM_EYE_ADPT_SRT == 0.0) does not gain anything.)
// Modulate exposure over time too.
//Smooth luminance with specified lod in this alpha channel
float zone_luminance = get_avg_lum_from_mip(first_pass, vTexCoord, BLOOM_PUPIL_LUM_ZONE_W);
float smoothed_avglum = zone_luminance * BLOOM_EYE_ADPT_SRT;
bloom_mix_adapted = max(0.0, BLOOM_MIX - smoothed_avglum);
if (BLOOM_BYPASS == 2.0) fbloom_mix = 1.0;
float pow_exp = BLOOM_PUPIL_EXPOSURE_CURVE_SHOULDER - smoothed_avglum * BLOOM_PUPIL_EXPOSURE_CURVE_SHOULDER;
pow_exp = max(0.0, pow_exp); //avoid negative exps.
bloom_mix_adapted = fbloom_mix * ( 1- pow(smoothed_avglum, pow_exp) );
if (BLOOM_BYPASS != 1.0)
bloomed = bloomed * bloom_mix_adapted * over_white_correction ;
FragColor = vec4(pow(bloomed,vec3(BLOOM_GAMMA_OUT)),1.0);
FragColor = vec4(bloomed, zone_luminance);
//FragColor = vec4(zone_luminance); //Use me to see luminosity zones
}

View File

@ -0,0 +1,226 @@
/* There yoy have a chance to boost your FPS.
*
* The more lines you edit, the more your FPS will be high.
*
* Edit lines that way, eg:
*
* #define SCANLINE_DARK params.SCANLINE_DARK
* turns to:
* #define SCANLINE_DARK 0.2
*
* or:
* #define DO_CCORRECTION global.DO_CCORRECTION
* turns to
* #define DO_CCORRECTION 0.0
*
*
* Since everything after "//" is ignored,
* you can even do something like:
* #define DO_CCORRECTION 0.0 //global.DO_CCORRECTION
*
*
* ...that's it, you just need to copy the values from the
* preset you like to the right setting here.
*
* The downside of using this method is that every setting
* you turn, will be static and you will not be able to
* modify it "on-the-fly" in retroarch.
*
* The only way to change that values will be to edit this file
* again, so maybe doing multiple copies of this file
* or even of the whole koko-shader would be a good idea.
*
*
* I suggest you to start from the easy ones, the ones that
* starts with DO_****, like DO_SCANLINES.
* it takes a value = 0 or 1, where 0 means no, 1 means yes.
* I repeat: if you always wants scanlines, just use:
*
* #define DO_SCANLINES 1.0
* instead of
* #define #DO_SCANLINES global.DO_SCANLINES
*
*
* Also, take a copy of this (modified) file, because it would be overwritten by
* updates.
*
*/
#define DO_CCORRECTION global.DO_CCORRECTION
#define GAMMA_OUT global.GAMMA_OUT
#define SATURATION global.SATURATION
#define LUMINANCE global.LUMINANCE
#define CONTRAST global.CONTRAST
#define BRIGHTNESS global.BRIGHTNESS
#define TEMPERATURE global.TEMPERATURE
#define DO_FXAA global.DO_FXAA
#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 DO_RF_NOISE global.DO_RF_NOISE
#define RF_NOISE_STRENGTH global.RF_NOISE_STRENGTH
#define DO_SAT_BLEED global.DO_SAT_BLEED
#define SAT_BLEED_SIZE_LEFT global.SAT_BLEED_SIZE_LEFT
#define SAT_BLEED_SIZE_RIGHT global.SAT_BLEED_SIZE_RIGHT
#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 DO_SHIFT_RGB global.DO_SHIFT_RGB
#define SHIFT_R global.SHIFT_R
#define SHIFT_G global.SHIFT_G
#define SHIFT_B global.SHIFT_B
#define OFFSET_STRENGTH global.OFFSET_STRENGTH
#define DO_IN_GLOW global.DO_IN_GLOW
#define IN_GLOW_BIAS global.IN_GLOW_BIAS
#define IN_GLOW_SPREAD global.IN_GLOW_SPREAD
#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
#define IN_GLOW_NTSC_ARTF_MULT global.IN_GLOW_NTSC_ARTF_MULT
#define IN_GLOW_NTSC_ARTF_TRSH global.IN_GLOW_NTSC_ARTF_TRSH
#define IN_GLOW_SHOW_ARTF_MASK global.IN_GLOW_SHOW_ARTF_MASK
#define DO_VMASK_AND_DARKLINES global.DO_VMASK_AND_DARKLINES
#define MASK_COMPENSATION global.MASK_COMPENSATION
#define RGB_MASK_STRENGTH global.RGB_MASK_STRENGTH
#define VMASK_OVERWHITE params.VMASK_OVERWHITE
#define VMASK_DARKLINE_SCALE params.VMASK_DARKLINE_SCALE
#define VMASK_GAP params.VMASK_GAP
#define VMASK_USE_GM params.VMASK_USE_GM
#define DARKLINES_STRENGTH global.DARKLINES_STRENGTH
#define DRKLN_OVERWHITE params.DRKLN_OVERWHITE
#define DARKLINES_VOFFSET params.DARKLINES_VOFFSET
#define DARKLINES_PERIOD params.DARKLINES_PERIOD
#define DO_HALO global.DO_HALO
#define HALO_W params.HALO_W
#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_SCANLINES global.DO_SCANLINES
#define SCANLINE_DARK params.SCANLINE_DARK
#define SCANLINE_MIN global.SCANLINE_MIN
#define SCANLINE_MAX global.SCANLINE_MAX
#define SCANLINES_BLEEDING global.SCANLINES_BLEEDING
#define SCANLINE_FLICKERING global.SCANLINE_FLICKERING
#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_BLOOM params.DO_BLOOM
#define BLOOM_MIX global.BLOOM_MIX
#define BLOOM_EYE_ADPT_SRT global.BLOOM_EYE_ADPT_SRT
#define BLOOM_EYE_INERTIA global.BLOOM_EYE_INERTIA
#define BLOOM_QUALITY params.BLOOM_QUALITY
#define BLOOM_SIZE global.BLOOM_SIZE
#define BLOOM_GAMMA global.BLOOM_GAMMA
#define BLOOM_POWER global.BLOOM_POWER
#define BLOOM_GAMMA_OUT global.BLOOM_GAMMA_OUT
#define BLOOM_OVER_WHITE global.BLOOM_OVER_WHITE
#define BLOOM_BYPASS global.BLOOM_BYPASS
#define DO_CURVATURE global.DO_CURVATURE
#define GEOM_WARP_X global.GEOM_WARP_X
#define GEOM_WARP_Y global.GEOM_WARP_Y
#define GEOM_CORNER_SIZE global.GEOM_CORNER_SIZE
#define GEOM_CORNER_SMOOTH global.GEOM_CORNER_SMOOTH
#define DO_BEZEL global.DO_BEZEL
#define BEZEL_R global.BEZEL_R
#define BEZEL_G global.BEZEL_G
#define BEZEL_B global.BEZEL_B
#define BEZEL_CON global.BEZEL_CON
#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_USE_STRAIGHT global.BEZEL_USE_STRAIGHT
#define BEZEL_RFL_BLR_SHD global.BEZEL_RFL_BLR_SHD
#define BEZEL_RFL_OFFSET global.BEZEL_RFL_OFFSET
#define BEZEL_REFL_ZOOM global.BEZEL_REFL_ZOOM
#define BEZEL_REFL_STRENGTH global.BEZEL_REFL_STRENGTH
#define DO_SPOT global.DO_SPOT
#define S_POSITION global.S_POSITION
#define S_SIZE global.S_SIZE
#define S_POWER global.S_POWER
#define DO_VIGNETTE global.DO_VIGNETTE
#define V_SIZE global.V_SIZE
#define V_POWER global.V_POWER
#define DO_BG_IMAGE global.DO_BG_IMAGE
#define BG_IMAGE_OVER global.BG_IMAGE_OVER
#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 BG_IMAGE_WRAP_MODE global.BG_IMAGE_WRAP_MODE
#define DO_AMBILIGHT global.DO_AMBILIGHT
#define AMBI_STEPS global.AMBI_STEPS
#define AMBI_FALLOFF global.AMBI_FALLOFF
#define AMBI_POWER global.AMBI_POWER
#define AMBI_OVER_BEZEL global.AMBI_OVER_BEZEL
#define ASPECT_X global.ASPECT_X
#define ASPECT_Y global.ASPECT_Y
#define DO_DYNZOOM global.DO_DYNZOOM
#define DYNZOOM_FACTOR global.DYNZOOM_FACTOR
#define DO_ALT_BLANK global.DO_ALT_BLANK
#define ALT_BLANK_STRENGTH global.ALT_BLANK_STRENGTH
#define ALT_BLANK_PERIOD global.ALT_BLANK_PERIOD
#define DO_GLOBAL_SHZO global.DO_GLOBAL_SHZO
#define GLOBAL_ZOOM global.GLOBAL_ZOOM
#define GLOBAL_OFFX global.GLOBAL_OFFX
#define GLOBAL_OFFY global.GLOBAL_OFFY

View File

@ -1,17 +1,32 @@
// Uncomment this to improve bezel downscaling.
// If you are using standard bezel, leave commented to gain performance.
//#define STATIC_BEZEL_USE_MIPMAP 1.0
//Consider content interlaced if lines are more than this
#define MIN_LINES_INTERLACED 380
//Sort of dithering used in vignette, spot, backlight leds
#define NOISEPOWER ((params.OutputSize.z)*3)
//Sort of dithering/debanding used in vignette, spot, backlight leds
#define NOISEPOWER 1/192.0
//((params.OutputSize.z)*3)
//Bezel reflection area size in relation to the game frame
//Use the lowest possible value for best performance
//It is also used to compute wrap/repeated coordinates.
#define BEZEL_REFLECTION_AREA_SIZE 0.175
//If you change the default bezel texture, you may have to edit this to
//align bezel reflections and game content. (it seems to depend on the curvature amount)
#define BEZEL_BORDER_SIZE 0.197
//The maximum radius of the reflection blur. //3.3..4.0 max
#define BEZEL_REFL_BLUR_MAX 4.0
// Define the size and the smoothness of the rectangle
// in the bezel corners that will hide and blur the reflections
#define BEZEL_REFL_CORNER_BLANK_SIZE 0.0685
#define BEZEL_REFL_CORNER_BLANK_SHADE 0.05 // keep it > 0.0
//Bezel reflection warping (curvature) may need a correction factor.
//Modify this if bezel reflections does not follow the border
#define BEZEL_REFL_WARP_CORRECTION_FACTOR 1.9
// 0.0-1.0: sensitivity to scene change (ambilike stuff), 0.0 changes more
#define AMBI_SCENE_CHG_THRSHLD 0.07
// The following will allow to sample at reduced interval
// The scene change detection logic will take advantage of it
// So that quick fades will still be treated as scene changes
@ -21,7 +36,8 @@
// when changing scene. (range 0..1)
// It is wise to correlate it with avglum_divider
// try between (1/avglum_divider) and (1/avglum_divider)/3
#define AMBI_FAST_STEP 0.125
//#define AMBI_FAST_STEP 0.125
#define AMBI_FAST_STEP 0.25
//Setting the glow/halo sharpness parameter to this
//will skip the blurring phase and lowers the gpu use
@ -29,16 +45,43 @@
//of IN_GLOW_W/H, HALO_W/H
#define GLOW_SHARP_MAX 7
//Minumum glow sharpness
//I set this to allow negative values for glow sharpness
//that will calc their values from light spread amount
#define MIN_IN_GLOW_SHARP 0.5
//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 IN_GLOW_BIAS_MAX 1.0
//Try to keep blur sizes consistent across input resolutions
#define SCALEMOD_X 360
#define SCALEMOD_Y 270
#define NEW_SCALEMOD_X (params.OriginalSize.x/360.0 / 2.2)
#define NEW_SCALEMOD_Y (params.OriginalSize.y/270.0 / 2.2)
// When Glow sharpness is controlled by light spread amount
// The following ratio is used, the lower, the blurrier:
#define IN_GLOW_SHARPNESS_SPREAD_RATIO_W 0.8334
#define IN_GLOW_SHARPNESS_SPREAD_RATIO_H 2.0
//Support for backdrops has to be enable by uncommenting:
//#define STATIC_SUPPORT_BACKDROP 1.0
#define BACKDROP_OFFX 0.0
#define BACKDROP_OFFY 0.0
#define BACKDROP_ZOOM 1.0
#define eps 1e-5
#define pi 3.141592654
#define TAU 6.28318530717958647693
#define pi 3.141592653589793
#define TAU 6.28318530717958647693
#define alpha_mark 0.1
@ -78,6 +121,7 @@ layout(std140, set = 0, binding = 0) uniform UBO {
//vec4 bgSize;
vec4 avglum_passSize;
vec4 first_passSize;
vec4 ntsc_passSize;
float DO_SCANLINES;
float DO_IN_GLOW;
@ -87,12 +131,18 @@ layout(std140, set = 0, binding = 0) uniform UBO {
float DO_CCORRECTION;
float DO_ALT_BLANK;
float IN_GLOW_BIAS ;
float IN_GLOW_SPREAD ;
float SCANLINES_BLEEDING ;
float IN_GLOW_W;
float IN_GLOW_H;
float IN_GLOW_POWER;
float IN_GLOW_GAMMA;
float IN_GLOW_NTSC_ARTF_MULT;
float IN_GLOW_NTSC_ARTF_TRSH;
float IN_GLOW_SHOW_ARTF_MASK;
float BLOOM_MIX;
float BLOOM_EYE_ADPT_SRT;
float BLOOM_EYE_INERTIA;
float BLOOM_SIZE;
float BLOOM_GAMMA;
float BLOOM_BYPASS;
@ -122,6 +172,8 @@ layout(std140, set = 0, binding = 0) uniform UBO {
float SCANLINE_SM_STRENGTH;
float SCANLINE_SM_TYPE;
float SCANLINE_SM_VOFFSET;
float SCANLINE_MIN;
float SCANLINE_MAX;
float RGB_MASK_STRENGTH;
float DARKLINES_STRENGTH;
float GAMMA_OUT ; //1
@ -145,19 +197,21 @@ 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 BEZEL_USE_STRAIGHT;
float BEZEL_RFL_BLR_SHD;
float BEZEL_RFL_OFFSET;
float BEZEL_REFL_ZOOM;
float BEZEL_REFL_STRENGTH;
float DO_SPOT;
float S_POSITION;
float S_SIZE;
float S_POWER;
float S_BYPASS;
float DO_VIGNETTE;
float V_SIZE;
float V_POWER;
float V_BYPASS;
float DO_DYNZOOM;
float DYNZOOM_FACTOR;
@ -165,6 +219,7 @@ layout(std140, set = 0, binding = 0) uniform UBO {
float DO_AMBILIGHT;
float AMBI_FALLOFF;
float AMBI_POWER;
float AMBI_OVER_BEZEL;
float ASPECT_X;
float ASPECT_Y;
float AMBI_STEPS;
@ -175,13 +230,22 @@ layout(std140, set = 0, binding = 0) uniform UBO {
float BG_IMAGE_OFFX;
float BG_IMAGE_ZOOM;
float BG_IMAGE_ROTATION;
float BG_IMAGE_WRAP_MODE;
float DO_SHIFT_RGB;
float SHIFT_R;
float SHIFT_G;
float SHIFT_B;
float OFFSET_STRENGTH;
float DO_GLOBAL_SHZO;
float GLOBAL_ZOOM;
float GLOBAL_OFFX;
float GLOBAL_OFFY;
float DO_RF_NOISE;
float RF_NOISE_STRENGTH;
} global;
// Color correction
@ -192,21 +256,34 @@ layout(std140, set = 0, binding = 0) uniform UBO {
#pragma parameter BRIGHTNESS " Brightness in (0.0=off)" 0.0 -1.0 1.0 0.01
#pragma parameter TEMPERATURE " Temperature in (6500=off)" 6500.0 3000 10000.0 50.0
#pragma parameter GAMMA_OUT " Gamma out" 0.69 0.1 9.0 0.025
#pragma parameter BLANK1 " " 0.0 0.0 1.0 1.0
// FXAA
// Apply an antialiasing filter via FXAA from Nvidia.
#pragma parameter DO_FXAA "★ FXAA enable? ==>" 0.0 0.0 1.0 1.0
#pragma parameter BLANK2 " " 0.0 0.0 1.0 1.0
// 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_FILTER_FC " Frequency cutoff" 2.5 0.0 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
#pragma parameter NTSC_MIX " Strength" 0.5 0.0 3.0 0.1
#pragma parameter BLANK3 " " 0.0 0.0 1.0 1.0
// RF Noise
#pragma parameter DO_RF_NOISE "★ RF Noise enable? ==>" 0.0 0.0 1.0 1.0
#pragma parameter RF_NOISE_STRENGTH " Strength" 0.05 0.0 1.0 0.005
#pragma parameter BLANK4 " " 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
@ -215,124 +292,196 @@ layout(std140, set = 0, binding = 0) uniform UBO {
#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
#pragma parameter BLANK5 " " 0.0 0.0 1.0 1.0
//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 OFFSET_STRENGTH " Strength" 0.6 0.0 1.0 0.05
#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
#pragma parameter SHIFT_G " Green offset" 2.0 -210.0 189.0 1
#pragma parameter SHIFT_B " Blue offset" 40.0 -210.0 189.0 1
#pragma parameter BLANK6 " " 0.0 0.0 1.0 1.0
// Input glowing
#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_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_BIAS " Glow to blur bias" 2.0 0.0 2.0 0.05
// Input Blur / light glowing
#pragma parameter DO_IN_GLOW "★ Glow/Blur enable? ==>" 0.0 0.0 1.0 1.0
#pragma parameter IN_GLOW_POWER " Input signal strength" 1.0 0.0 5.0 0.05
#pragma parameter IN_GLOW_GAMMA " Input gamma, the higher, the less glow on dark colors" 1.0 1.0 10.0 0.1
#pragma parameter IN_GLOW_SPREAD " Glow spread amount" 0.6 0.0 4.0 0.05
#pragma parameter IN_GLOW_W " Sharpness X (0 = controlled by glow spread)" 2.5 0.0 7.0 0.05
#pragma parameter IN_GLOW_H " Sharpness Y (0 = controlled by glow spread)" 2.5 0.0 7.0 0.05
#pragma parameter IN_GLOW_BIAS " Glow to blur bias" 1.0 0.0 1.0 0.05
#pragma parameter IN_GLOW_NTSC_ARTF_MULT " Blur NTSC artifacts more" 0.0 0.0 8.0 0.1
#pragma parameter IN_GLOW_NTSC_ARTF_TRSH " Blur less NTSC artifacts (min treshold)" 1.0 0.0 1.0 0.05
#pragma parameter IN_GLOW_SHOW_ARTF_MASK " Show NTSC artifacts mask (debug)" 0.0 0.0 1.0 1.0
#pragma parameter BLANK7 " " 0.0 0.0 1.0 1.0
// 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 " 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 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 " 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 DARKLINES_PERIOD " . Height" 2.0 2.0 16.0 2.0
#pragma parameter DRKLN_OVERWHITE " . Affect bright colors" 1.0 0.0 1.0 0.05
#pragma parameter BLANK9 " " 0.0 0.0 1.0 1.0
// Halo
#pragma parameter DO_HALO "★ Halo enable? ==>" 0.0 0.0 1.0 1.0
#pragma parameter HALO_POWER " Strength" 0.9 0.0 5.0 0.025
#pragma parameter HALO_W " Sharpness, horizontal" 1.75 0.2 7.0 0.05
#pragma parameter HALO_H " Sharpness, Vertical" 1.75 0.2 7.0 0.05
#pragma parameter HALO_W " Sharpness, horizontal" 1.75 0.35 7.0 0.05
#pragma parameter HALO_H " Sharpness, Vertical" 1.75 0.35 7.0 0.05
#pragma parameter HALO_GAMMA " Gamma, the higher, the less the halo on dark colors" 2.0 1.0 10.0 0.1
#pragma parameter HALO_VS_SCAN " Light up scanlines too" 0.0 0.0 1.0 0.1
#pragma parameter HALO_VS_SCAN " Light up scanlines gaps too" 0.0 0.0 1.0 0.1
#pragma parameter BLANK10 " " 0.0 0.0 1.0 1.0
// Scanlines
#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_MIN " Minimum height" 1.0 0.05 1.0 0.05
#pragma parameter SCANLINE_MAX " Maximum height" 1.0 0.05 25.0 0.1
#pragma parameter SCANLINE_DARK " 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
#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 BLANK11 " " 0.0 0.0 1.0 1.0
#pragma parameter SCANLINE_SM_TYPE " Slotmask type (disable (0) with darklines!)" 0.0 0.0 3.0 1.0
#pragma parameter SCANLINE_SM_STRENGTH " . Slotmask strength (type 1 and 2 only)" 0.0 0.0 1.0 0.05
#pragma parameter SCANLINE_SM_STRENGTH " . Slotmask strength (type 1 and 2 only)" 1.0 0.0 1.0 0.05
#pragma parameter SCANLINE_SM_VOFFSET " . Offset (type 1 only)" 45.0 0.0 158.0 1.0
#pragma parameter BLANK12 " " 0.0 0.0 1.0 1.0
//p1.20,r2.0
// Bloom
#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
#pragma parameter BLOOM_QUALITY " Quality: more is better but slower" 1.0 1.0 32.0 1.0
#pragma parameter BLOOM_GAMMA " Input Gamma" 10.0 1.0 10.0 0.1
#pragma parameter BLOOM_POWER " Power multiplier" 10.0 1.0 100.0 0.5
#pragma parameter BLOOM_GAMMA_OUT " Output Gamma" 10.0 0.1 10.0 0.1
#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
#pragma parameter DO_BLOOM "★ Bloom enable? ==>" 0.0 0.0 1.0 1.0
#pragma parameter BLOOM_MIX " Final mix, (0.0=off)" 0.45 0.0 1.0 0.01
#pragma parameter BLOOM_SIZE " Radius" 4.0 0.25 30.0 0.25
#pragma parameter BLOOM_QUALITY " Quality: more is better but slower" 1.0 1.0 8.0 1.0
#pragma parameter BLOOM_GAMMA " Gamma in (threshold)" 8.0 1.0 10.0 0.5
#pragma parameter BLOOM_GAMMA_OUT " Gamma out (contour smoothness)" 1.0 0.1 10.0 0.1
#pragma parameter BLOOM_POWER " Power multiplier" 1.20 1.0 20.0 0.05
#pragma parameter BLOOM_EYE_ADPT_SRT " Modulate: Local exposure eye adaption strength" 0.45 0.0 10.0 0.05
#pragma parameter BLOOM_EYE_INERTIA " Modulate: Time before eye adaption starts" 1500 10.0 10000 50.0
#pragma parameter BLOOM_OVER_WHITE " Modulate: Strength on bright areas (0 = aura)" 0.5 0.0 1.0 0.05
#pragma parameter BLOOM_BYPASS " Bypass/Solo (1=Unmodulated, 2=Modulated)" 0.0 0.0 2.0 1.0
#pragma parameter BLANK13 " " 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
#pragma parameter GEOM_WARP_Y " Warp Y" 0.0 0.0 6.0 0.05
#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
#pragma parameter GEOM_WARP_X " Warp X" 0.3 0.0 6.0 0.025
#pragma parameter GEOM_WARP_Y " Warp Y" 0.0 0.0 6.0 0.025
#pragma parameter GEOM_CORNER_SIZE " Corner radius" 0.005 0.005 0.1 0.001
#pragma parameter GEOM_CORNER_SMOOTH " Corner sharpness" 350.0 15.0 1000.0 1.0
#pragma parameter BLANK14 " " 0.0 0.0 1.0 1.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
#pragma parameter BEZEL_G " Bezel color: Green" -0.3 -0.5 0.5 0.01
#pragma parameter BEZEL_B " Bezel color: Blue" -0.3 -0.5 0.5 0.01
#pragma parameter BEZEL_CON " Bezel Contrast" 1.3 0.0 10.0 0.01
#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
#pragma parameter DO_BEZEL "★ Bezel enable? ==>" 0.0 0.0 1.0 1.0
#pragma parameter BEZEL_USE_STRAIGHT " Straight" 0.0 0.0 1.0 1.0
#pragma parameter BEZEL_R " Color: Red" -0.3 -0.5 0.5 0.01
#pragma parameter BEZEL_G " Color: Green" -0.3 -0.5 0.5 0.01
#pragma parameter BEZEL_B " Color: Blue" -0.3 -0.5 0.5 0.01
#pragma parameter BEZEL_CON " Contrast" 1.3 0.0 10.0 0.01
#pragma parameter BEZEL_INNER_ZOOM " Image zoom" -0.18 -1.5 0.5 0.005
#pragma parameter BEZEL_FRAME_ZOOM " Frame zoom" 0.0 -1.5 0.5 0.005
#pragma parameter BEZEL_IMAGE_BORDER " Image border" 1.01 1.0 1.2 0.01
#pragma parameter BEZEL_REFL_STRENGTH " Reflection strength" 0.5 0.0 1.0 0.01
#pragma parameter BEZEL_RFL_BLR_SHD " Sharp reflections" 0.0 -1.0 1.0 0.1
#pragma parameter BEZEL_RFL_OFFSET " Align reflections: offset" 0.003 -0.01 0.01 0.001
#pragma parameter BEZEL_REFL_ZOOM " Align reflections: zoom" 0.98 0.8 1.2 0.001
#pragma parameter BLANK15 " " 0.0 0.0 1.0 1.0
//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.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
#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.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
#pragma parameter BG_IMAGE_WRAP_MODE " Wrap mode: default, clamp to border, edge, repeat" 0.0 0.0 3.0 1.0
#pragma parameter BLANK16 " " 0.0 0.0 1.0 1.0
//Back leds
//Emulates leds under the monitor frame that slowly reacts to image contents
#pragma parameter DO_AMBILIGHT "★ Ambient light leds enable? ==> " 1.0 0.0 1.0 1.0
#pragma parameter LABEL_WARNING3 " ⚠ RetroArch aspect needs to be set to Full! ⚠" 1.0 1.0 1.0 1.0
#pragma parameter LABEL_WARNING4 " ⚠ Resize the window once if you see glitches! ⚠" 1.0 1.0 1.0 1.0
#pragma parameter AMBI_STEPS " Slowness" 60.0 5.0 1000.0 5.0
#pragma parameter AMBI_FALLOFF " Light Falloff" 0.7 0.1 3.0 0.01
#pragma parameter AMBI_POWER " Led power" 1.5 1.0 7.0 0.05
#pragma parameter DO_AMBILIGHT "★ Ambient light leds enable? ==> " 1.0 0.0 1.0 1.0
#pragma parameter LABEL_WARNING3 " ⚠ RetroArch aspect needs to be set to Full! ⚠" 1.0 1.0 1.0 1.0
#pragma parameter AMBI_STEPS " Slowness" 60.0 5.0 1000.0 5.0
#pragma parameter AMBI_FALLOFF " Light Falloff" 0.7 0.1 3.0 0.01
#pragma parameter AMBI_POWER " Led power" 1.5 1.0 7.0 0.05
#pragma parameter AMBI_OVER_BEZEL " Colorize Bezel" 0.1 0.0 1.0 0.01
#pragma parameter BLANK17 " " 0.0 0.0 1.0 1.0
//Full screen glowing
//Modulate the image zooming depending on the image luminosity.
//You can lower the effect power through the DYNZOOM_FACTOR parameter.
#pragma parameter DO_DYNZOOM "★ Luminosity dependant zoom enable? ==>" 1.0 0.0 1.0 1.0
#pragma parameter DYNZOOM_FACTOR " Narrowness" 80.0 15.0 120.0 0.5
#pragma parameter BLANK18 " " 0.0 0.0 1.0 1.0
//Vignette and spot
#pragma parameter DO_VIGNETTE "★ Vignette enable? ==>" 0.0 0.0 1.0 1.0
#pragma parameter V_SIZE " Size" 1.7 0.0 5.0 0.05
#pragma parameter V_POWER " Power" 1.1 0.05 2.0 0.01
#pragma parameter DO_SPOT "★ Spot enable? ==>" 0.0 0.0 1.0 1.0
#pragma parameter S_POSITION " Position" 0.0 -420.0 378.0 1
#pragma parameter S_SIZE " Size" 0.4 0.0 1.0 0.01
#pragma parameter S_POWER " Power" 0.1 0.05 2.0 0.01
#pragma parameter BLANK19 " " 0.0 0.0 1.0 1.0
// Alternative blanking
#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 " Blank lines period" 4.0 0.0 20.0 1.0
#pragma parameter BLANK20 " " 0.0 0.0 1.0 1.0
//Global Zoom/Offset
#pragma parameter DO_GLOBAL_SHZO "★ Global shift/zoom" 0.0 0.0 1.0 1.0
#pragma parameter GLOBAL_OFFX " X axis shift " 0.0 -1.0 1.0 0.0005
#pragma parameter GLOBAL_OFFY " Y axis shift " 0.0 -1.0 1.0 0.0005
#pragma parameter GLOBAL_ZOOM " Zoom" 2.0 0.0 3.0 0.0005
#pragma parameter BLANK21 " " 0.0 0.0 1.0 1.0
//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 -6.0 256. 1.0
#pragma parameter ASPECT_X " Aspect Ratio Numerator (<=0 for a preset)" 0.0 -6.0 256. 1.0
#pragma parameter ASPECT_Y " Aspect Ratio Denominator" 3.0 0.0 256. 1.0
#pragma parameter BLANK22 " " 0.0 0.0 1.0 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
#pragma parameter label_aspect_preset1 " (-1 = NTSC 1.5)" 0.0 0.0 0.0 1.0
@ -344,165 +493,4 @@ layout(std140, set = 0, binding = 0) uniform UBO {
//Full screen glowing
//Modulate the image zooming depending on the image luminosity.
//You can lower the effect power through the DYNZOOM_FACTOR parameter.
#pragma parameter DO_DYNZOOM "★ Luminosity dependant zoom enable? ==>" 1.0 0.0 1.0 1.0
#pragma parameter DYNZOOM_FACTOR " Narrowness" 80.0 30.0 120.0 1.0
//Vignette and spot
#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
#pragma parameter V_POWER " power" 1.1 0.05 2.0 0.05
#pragma parameter DO_SPOT "★ Spot enable? ==>" 0.0 0.0 1.0 1.0
#pragma parameter S_BYPASS " bypass" 0.0 0.0 1.0 1.0
#pragma parameter S_POSITION " Position" 0.0 -420.0 378.0 1
#pragma parameter S_SIZE " size" 0.4 0.0 1.0 0.01
#pragma parameter S_POWER " power" 0.1 0.05 2.0 0.05
// Alternative blanking.
#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 " Blank lines period" 4.0 0.0 20.0 1.0
#define DO_FXAA global.DO_FXAA
#define DO_SAT_BLEED global.DO_SAT_BLEED
#define SAT_BLEED_SIZE_LEFT global.SAT_BLEED_SIZE_LEFT
#define SAT_BLEED_SIZE_RIGHT global.SAT_BLEED_SIZE_RIGHT
#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 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
#define SCANLINE_OVERWHITE global.SCANLINE_OVERWHITE
#define SCANLINE_FLICKERING global.SCANLINE_FLICKERING
#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_BIAS global.IN_GLOW_BIAS
#define SCANLINES_BLEEDING global.SCANLINES_BLEEDING
#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
#define DO_VMASK_AND_DARKLINES global.DO_VMASK_AND_DARKLINES
#define MASK_COMPENSATION global.MASK_COMPENSATION
#define RGB_MASK_STRENGTH global.RGB_MASK_STRENGTH
#define VMASK_OVERWHITE params.VMASK_OVERWHITE
#define VMASK_DARKLINE_SCALE params.VMASK_DARKLINE_SCALE
#define VMASK_GAP params.VMASK_GAP
#define VMASK_USE_GM params.VMASK_USE_GM
#define DARKLINES_STRENGTH global.DARKLINES_STRENGTH
#define DRKLN_OVERWHITE params.DRKLN_OVERWHITE
#define DARKLINES_VOFFSET params.DARKLINES_VOFFSET
#define DARKLINES_PERIOD params.DARKLINES_PERIOD
#define DO_HALO global.DO_HALO
#define HALO_W params.HALO_W
#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
#define BLOOM_QUALITY params.BLOOM_QUALITY
#define BLOOM_SIZE global.BLOOM_SIZE
#define BLOOM_GAMMA global.BLOOM_GAMMA
#define BLOOM_POWER global.BLOOM_POWER
#define BLOOM_GAMMA_OUT global.BLOOM_GAMMA_OUT
#define BLOOM_OVER_WHITE global.BLOOM_OVER_WHITE
#define BLOOM_BYPASS global.BLOOM_BYPASS
#define DO_CCORRECTION global.DO_CCORRECTION
#define GAMMA_OUT global.GAMMA_OUT
#define SATURATION global.SATURATION
#define LUMINANCE global.LUMINANCE
#define CONTRAST global.CONTRAST
#define BRIGHTNESS global.BRIGHTNESS
#define TEMPERATURE global.TEMPERATURE
#define DO_ALT_BLANK global.DO_ALT_BLANK
#define ALT_BLANK_STRENGTH global.ALT_BLANK_STRENGTH
#define ALT_BLANK_PERIOD global.ALT_BLANK_PERIOD
#define DO_CURVATURE global.DO_CURVATURE
#define GEOM_WARP_X global.GEOM_WARP_X
#define GEOM_WARP_Y global.GEOM_WARP_Y
#define GEOM_CORNER_SIZE global.GEOM_CORNER_SIZE
#define GEOM_CORNER_SMOOTH global.GEOM_CORNER_SMOOTH
#define DO_BEZEL global.DO_BEZEL
#define BEZEL_R global.BEZEL_R
#define BEZEL_G global.BEZEL_G
#define BEZEL_B global.BEZEL_B
#define BEZEL_CON global.BEZEL_CON
#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
#define S_POSITION global.S_POSITION
#define S_SIZE global.S_SIZE
#define S_POWER global.S_POWER
#define DO_DYNZOOM global.DO_DYNZOOM
#define DYNZOOM_FACTOR global.DYNZOOM_FACTOR
#define DO_VIGNETTE global.DO_VIGNETTE
#define V_BYPASS global.V_BYPASS
#define V_SIZE global.V_SIZE
#define V_POWER global.V_POWER
#define DO_AMBILIGHT global.DO_AMBILIGHT
#define AMBI_STEPS global.AMBI_STEPS
#define AMBI_FALLOFF global.AMBI_FALLOFF
#define AMBI_POWER global.AMBI_POWER
#define ASPECT_X global.ASPECT_X
#define ASPECT_Y global.ASPECT_Y
#define DO_BG_IMAGE global.DO_BG_IMAGE
#define BG_IMAGE_OVER global.BG_IMAGE_OVER
#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
#define SHIFT_G global.SHIFT_G
#define SHIFT_B global.SHIFT_B
#define OFFSET_STRENGTH global.OFFSET_STRENGTH
#include "config.globals.inc"

View File

@ -18,19 +18,69 @@ layout(location = 2) out vec2 spot_offset;
layout(location = 3) out vec2 vFragCoord;
layout(location = 4) out float vIsRotated;
//Curvature:
layout(location = 5) out vec2 vWarp_vexp;
layout(location = 6) out vec2 vWarp_arg2;
//Scanlines:
layout(location = 7) out float vIsInterlaced;
layout(location = 8) out float vFlickeringScanlines;
layout(location = 9) out float vScanlinePeriod;
layout(location = 10) out float vScanlinesAlternate;
//Vignette, spot:
layout(location = 11) out float vIn_aspect;
#include "includes/functions.include.slang"
void main() {
gl_Position = global.MVP * Position;
vIsRotated = float(is_rotated());
vTexCoord = get_scaled_coords(TexCoord,global.FinalViewportSize, bool(vIsRotated) ) + vec2(0.00001);
vIn_aspect = get_in_aspect();
vTexCoord = get_scaled_coords_aspect(TexCoord,global.FinalViewportSize, vIn_aspect, bool(vIsRotated)) + vec2(0.00001);
if (DO_GLOBAL_SHZO >0.5)
vTexCoord = zoom(vTexCoord + vec2(-GLOBAL_OFFX, -GLOBAL_OFFY), GLOBAL_ZOOM );
vOutputCoord = TexCoord;
spot_offset = offsets_from_float(S_POSITION+420.0,40);
spot_offset = spot_offset / 10.0 + vec2(0.0,1.0);
vFragCoord = vec2( floor(vOutputCoord.x * params.OutputSize.x),
floor(vOutputCoord.y * params.OutputSize.y));
//Precalc some Curvature/Warp values:
vec2 geom_warp_adapted = vec2(GEOM_WARP_X, GEOM_WARP_Y);
/* if (DO_BEZEL > 0.0) {
geom_warp_adapted *= (-BEZEL_INNER_ZOOM) + 1;
}*/
vWarp_vexp = 1.0/ (1 + (vec2(geom_warp_adapted.x, geom_warp_adapted.y) * 0.2)) ;
vWarp_arg2 = 1.0 - pow(vec2(0.29289321881345247559915563789515), vWarp_vexp );
//Help scanline code too:
if (DO_SCANLINES > 0.5) {
bool bIs_Interlaced = is_interlaced();
vIsInterlaced = float(bIs_Interlaced);
vFlickeringScanlines = float((DO_SCANLINES == 1.0) && scanline_have_to_flicker(bIs_Interlaced)) ;
//Scanline period:
vScanlinePeriod = 1.0;
vScanlinesAlternate = 0.0;
if (bIs_Interlaced) {
if (params.FrameCount % 2 == 0.0) vScanlinesAlternate = 1.0;
if (params.OriginalSize.y > MIN_LINES_INTERLACED ) vScanlinePeriod = 0.5;
}
//vScanlinePhase = 0.0;
//vScanlinePhase = vScanlinePeriod * pi - pi/4.0; //<-- needed to match scanlines done in first_pass. //FIXME check what happens for highter res.
}
//SPOT
spot_offset = offsets_from_float(S_POSITION+420.0,40);
spot_offset = spot_offset / 10.0 + vec2(0.0,1.0);
}
@ -40,25 +90,33 @@ 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 = 5) in vec2 vWarp_vexp;
layout(location = 6) in vec2 vWarp_arg2;
layout(location = 7) in float vIsInterlaced;
layout(location = 8) in float vFlickeringScanlines;
layout(location = 9) in float vScanlinePeriod;
layout(location = 10) in float vScanlinesAlternate;
layout(location = 11) in float vIn_aspect;
layout(location = 0) out vec4 FragColor;
#ifdef STATIC_SUPPORT_BACKDROP
layout(set = 0, binding = 1) uniform sampler2D backdrop;
#else
layout(set = 0, binding = 1) uniform sampler2D first_pass;
#endif
layout(set = 0, binding = 2) uniform sampler2D bloom_pass_final;
layout(set = 0, binding = 3) uniform sampler2D reflected_blurred_pass2;
layout(set = 0, binding = 4) uniform sampler2D ambi_temporal_pass;
layout(set = 0, binding = 5) uniform sampler2D avglum_pass;
layout(set = 0, binding = 6) uniform sampler2D monitor_body;
layout(set = 0, binding = 7) uniform sampler2D bg_under;
layout(set = 0, binding = 8) uniform sampler2D bg_over;
layout(set = 0, binding = 9) uniform sampler2D first_pass;
layout(set = 0, binding = 6) uniform sampler2D monitor_body_straight;
layout(set = 0, binding = 7) uniform sampler2D monitor_body_curved;
layout(set = 0, binding = 8) uniform sampler2D bg_under;
layout(set = 0, binding = 9) uniform sampler2D bg_over;
layout(set = 0, binding = 10) uniform sampler2D shift_and_bleed_pass;
//Ex main_pass layouts:
layout(set = 0, binding = 11) uniform sampler2D FXAA_pass;
layout(set = 0, binding = 12) uniform sampler2D in_glow_pass;
layout(set = 0, binding = 13) uniform sampler2D halo_pass;
layout(set = 0, binding = 14) uniform sampler2D avglum_passFeedback;
layout(set = 0, binding = 11) uniform sampler2D in_glow_pass;
layout(set = 0, binding = 12) uniform sampler2D halo_pass;
#define HALF_PI 1.5707963267949
@ -66,7 +124,7 @@ layout(set = 0, binding = 10) uniform sampler2D shift_and_bleed_pass;
#include "includes/functions.include.slang"
vec3 pixel_vmask(vec3 source, vec3 white_reference, float over_white) {
vec3 pixel_vmask(vec3 source, float white_reference, float over_white) {
// Simple RGB mask emulation with or without horizontal gap
float ooo = 1.0 - RGB_MASK_STRENGTH;
@ -91,17 +149,62 @@ vec3 pixel_vmask(vec3 source, vec3 white_reference, float over_white) {
if (over_white == 1.0) pixel_out = vmasked;
else {
float whiteness=max(max(white_reference.r,white_reference.g),white_reference.b);
whiteness-= over_white;
whiteness= clamp(whiteness,0.0,1.0);
pixel_out= mix(vmasked,source,whiteness);
white_reference-= over_white;
white_reference= clamp(white_reference,0.0,1.0);
pixel_out= mix(vmasked,source,white_reference);
}
return pixel_out;
}
vec3 pixel_vmask_gm(vec3 source, vec3 white_reference, float over_white) {
vec3 pixel_vmask_and_gm(vec3 source, float 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_rgb = vec3( 1.0 , ooo , ooo ); //col 1
vec3 m2_rgb = vec3( ooo , 1.0 , ooo ); //col 2
vec3 m3_rgb = vec3( ooo , ooo , 1.0 ); //col 3
vec3 gap = vec3( ooo );
vec3 m1_gm = vec3( ooo , 1.0 , ooo ); //col 1
vec3 m2_gm = vec3( 1.0 , ooo , 1.0 ); //col 2
vec3 m1 = (m1_gm * VMASK_USE_GM) + (m1_rgb * (1-VMASK_USE_GM));
vec3 m2 = (m2_gm * VMASK_USE_GM) + (m2_rgb * (1-VMASK_USE_GM));
vec3 m3 = m3_rgb;
vec3 pixel_out;
vec3 vmasked;
vec4 vec_mod_rgb = vec4(3,1,2,3);
vec4 vec_mod_gm = vec4(2,1,2,0.0);
vec4 vec_mod = (vec_mod_gm * VMASK_USE_GM) + (vec_mod_rgb* (1-VMASK_USE_GM));
vec_mod=(vec_mod + vec4(VMASK_GAP,0.0,0.0,0.0))* VMASK_DARKLINE_SCALE ;
float fcol = vOutputCoord.s * params.OutputSize.x;
if (mod(fcol, vec_mod.x) < vec_mod.y)
vmasked = m1 * source;
else if (mod(fcol, vec_mod.x) < vec_mod.z)
vmasked = m2 * source;
else if ( mod(fcol, vec_mod.x) < vec_mod.w && VMASK_USE_GM < 1.0 )
vmasked = m3 * source;
else vmasked = gap * source;
if (over_white == 1.0) pixel_out = vmasked;
else {
white_reference-= over_white;
white_reference= clamp(white_reference,0.0,1.0);
pixel_out= mix(vmasked,source,white_reference);
}
return pixel_out;
}
vec3 pixel_vmask_gm(vec3 source, float 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
@ -123,31 +226,19 @@ vec3 pixel_vmask_gm(vec3 source, vec3 white_reference, float over_white) {
if (over_white == 1.0) pixel_out = vmasked;
else {
float whiteness=max(max(white_reference.r,white_reference.g),white_reference.b);
whiteness-= over_white;
whiteness= clamp(whiteness,0.0,1.0);
pixel_out= mix(vmasked,source,whiteness);
white_reference-= over_white;
white_reference= clamp(white_reference,0.0,1.0);
pixel_out= mix(vmasked,source,white_reference);
}
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, vec2 coords) {
/* "darklines" are vertical gaps that can be used to emulate aperturegrille
* or slotmasks
*/
/*vec3 pixel_darklines_old(vec3 source,float darkline_every, float darkline_trans,
float do_offset, float white_reference,float over_white, vec2 coords) {
// "darklines" are vertical gaps that can be used to emulate aperturegrille
// or slotmasks
//
float Darkline_part_w = (3.0 - VMASK_USE_GM + VMASK_GAP) * VMASK_DARKLINE_SCALE;
float Darkline_part_w_x2 = Darkline_part_w*2;
@ -156,8 +247,7 @@ vec3 pixel_darklines(vec3 source,float darkline_every, float darkline_trans,
if (over_white != 1.0) {
//less effect on bright colors.
float whiteness=max(max(white_reference.r,white_reference.g),white_reference.b);
darkline_trans+=(whiteness-over_white);
darkline_trans+=(white_reference-over_white);
darkline_trans=clamp(darkline_trans,0.0,1.0);
}
@ -167,14 +257,7 @@ vec3 pixel_darklines(vec3 source,float darkline_every, float darkline_trans,
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);
}
@ -182,32 +265,75 @@ vec3 pixel_darklines(vec3 source,float darkline_every, float darkline_trans,
bool draw_dark = mod(vFragCoord.y, darkline_every) < VMASK_DARKLINE_SCALE;
bool draw_color = !draw_dark;
return source * ( float(draw_color) + float(draw_dark) * darkline_trans );
}*/
vec3 pixel_darklines(vec3 source,float darkline_every, float darkline_trans,
float do_offset, float white_reference,float over_white, vec2 coords) {
float period_x = (3.0 - VMASK_USE_GM + VMASK_GAP) * VMASK_DARKLINE_SCALE;
float period_y = darkline_every * VMASK_DARKLINE_SCALE;
vec2 FragCoord = vFragCoord;
if (over_white != 1.0) {
//less effect on bright colors.
darkline_trans+=(white_reference-over_white);
darkline_trans=clamp(darkline_trans,0.0,1.0);
}
if (do_offset > 0.0) {
float column = int(floor(mod(FragCoord.x, period_x*2.0)));
if (column < period_x) FragCoord.y+=period_y/2.0;
}
float row = int(floor(mod(FragCoord.y, period_y)));
if (row < VMASK_DARKLINE_SCALE)
return source * darkline_trans;
else
return source;
}
float scanline_shape(vec2 coords, bool do_flicker, bool is_interlaced, bool do_slotmask) {
float scanline_shape(vec2 coords, bool do_slotmask, float lum) {
/* 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
* even frames to emulate that aspect of interlacing.
*/
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 period = vScanlinePeriod;
bool is_interlaced = bool(vIsInterlaced);
bool alternate = bool(vScanlinesAlternate);
bool do_flicker = bool(vFlickeringScanlines);
float angle_base = coords.y * pi * params.OriginalSize.y * period;
//...to scale scanline tickness:
//float lum_scaled = scale_to_range(lum, SCANLINE_MIN, SCANLINE_MAX);
float lum_scaled = lum * SCANLINE_MAX;
lum_scaled = clamp( lum_scaled, SCANLINE_MIN, SCANLINE_MAX );
float angle_base = coords.y * pi * params.OriginalSize.y * period;// + vScanlinePhase;
float lines = 1.0;
if (!( is_interlaced && SCANLINE_DISABLE_ON_INTERLACE == 1.0 )) {
if (alternate)
lines = -sin(angle_base + HALF_PI); //lines = abs(cos(angle))
/*if (alternate)
lines = -sin(angle_base + HALF_PI);
else
lines = sin(angle_base);
*/
//Unbranched the previous if/then/else:
lines = (2*vScanlinesAlternate -1) * sin(angle_base + (vScanlinesAlternate * HALF_PI)) ;
lines = (lines*lines);
}
@ -216,39 +342,39 @@ float scanline_shape(vec2 coords, bool do_flicker, bool is_interlaced, bool do_s
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;
lines = lines * pixel_darklines(vec3(1.0),DARKLINES_PERIOD,1-SCANLINE_SM_STRENGTH,1.0, 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;
// Acceptable values are with stagger around 79 (pi/4)
if (odd_column) {
float phase = pi + SCANLINE_SM_VOFFSET*0.01 * lum_scaled;
float angle_slotmask = angle_base + phase;
float slotmask = sin(angle_slotmask);
slotmask = (slotmask*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;
if (odd_column)
phase = period * pi + QUARTER_PI * lum_scaled;
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.
@ -259,8 +385,7 @@ float scanline_shape(vec2 coords, bool do_flicker, bool is_interlaced, bool do_s
else if (SCANLINE_SM_TYPE == 3.0) {
// Thinner slotmask screen, no scanlines.
// No parameter taken into account.
lines = lines * lines;
if (odd_column) {
if (odd_column) {
float phase = pi + HALF_PI;
float angle_slotmask = angle_base + phase;
float slotmask = sin(angle_slotmask);
@ -268,48 +393,85 @@ float scanline_shape(vec2 coords, bool do_flicker, bool is_interlaced, bool do_s
lines = slotmask;
}
}
}
}
if (SCANLINE_DARK >= 0.0) {
lines = lines * (1.0 - SCANLINE_DARK) + SCANLINE_DARK;
} else {
float deepness = -SCANLINE_DARK;
lines = lines * ((1-SCANLINE_DARK) ) + SCANLINE_DARK ;
}
//Thickness (min):
//lines = pow(lines, 1/(lum_scaled+eps) );
//lines = pow(lines, 1/(sqrt(lum_scaled) ) );
//lines = pow(lines, 1/(lum_scaled*lum_scaled+eps) );
//lines = pow( lines , 1/(lum_scaled ) ) ;
//0.0125 is an anti-moiree measure.
//lines = pow( max(lines, 0.05), 1/lum_scaled) ;
//lines = pow(lines, 1/(sqrt(lum_scaled) ) );
//lines = pow(clamp(lines + 0.05, 0.0,1.0) , 1/sqrt(lum_scaled));
//float extra_power_1 = 3.0;
float extra_power_1 = max(SCANLINE_MAX/3.0, 1.0);
lines = pow(clamp(lines, SCANLINE_DARK * 2.0, 1.0) , 1/(sqrt(lum_scaled*lum_scaled*extra_power_1) ) );
//lines = pow(clamp(lines + 0.05, 0.0,1.0) , 1/(sqrt(lum_scaled*lum_scaled*extra_power_1) ) ) * extra_power_1/2.0;
//lines = pow(clamp(lines + 0.05, 0.0,1.0) , 1/(lum_scaled*lum_scaled));
//Thickness (max):
/*lines = pow(abs(lines), 1/(10*lum_scaled*lum_scaled));
float clamp_start=0.5;
if (lum_scaled>clamp_start) lines = clamp(lines,(lum_scaled-clamp_start)/(1-clamp_start) ,1.0); //FIXME use step?*/
//min-max, ma difficile da gestire con la slotmask.
// float extra_power = 2.0;
// float m = mod(angle_base + (vScanlinesAlternate * HALF_PI), pi);
// lines = exp( -pow((m-(HALF_PI)),2) / ( lum*extra_power ) ) * extra_power;
lines = lines * (1-SCANLINE_DARK ) + SCANLINE_DARK ;
return lines;
}
float get_clamped_white_reference(vec3 pixel_in){
float white_reference = max(max(pixel_in.r,pixel_in.g),pixel_in.b);
white_reference = min(white_reference,1.0); //Clamp here for both vmask and darklines.
return white_reference;
}
vec4 pixel_main_pass(vec2 coords, bool bBorder_needed) {
//Exit if we don't need a border (ambient light/background picture)
//And we are outside the the border (unsure if this double check is good for performance) //FIXME
if (bBorder_needed)
if (vTexCoord.x < 0.0 || vTexCoord.x > 1.0 || vTexCoord.y < 0.0 || vTexCoord.y > 1.0) return vec4(0.0);
bool isinterlaced = is_interlaced();
bool flickering_scanlines = (DO_SCANLINES == 1.0) && scanline_have_to_flicker(isinterlaced) ;
if (bBorder_needed &&
(vTexCoord.x < 0.0 || vTexCoord.x > 1.0 || vTexCoord.y < 0.0 || vTexCoord.y > 1.0))
return vec4(0.0);
vec3 pixel_in;
vec3 pixel_glowed;
//Get the first available pixel_in:
//vec2 off=vec2(0.0,+ global.first_passSize.w*0.5); needed
//To be added to the following coords and to halo coords (FIXME: WHY?)
//if drawing scanlines on first pass too)
if (DO_IN_GLOW == 1.0) {
pixel_glowed = texture(in_glow_pass,coords).rgb;
pixel_in = pixel_glowed; }
else if ( DO_SHIFT_RGB + DO_SAT_BLEED > 0.0)
pixel_in = pixel_glowed;
} else {
pixel_in = texture(shift_and_bleed_pass,coords).rgb ;
else if (DO_FXAA > 0.0)
pixel_in = texture(FXAA_pass,coords).rgb ;
else
pixel_in = texture(first_pass,coords).rgb ;
}
vec3 pixel_out = pixel_in;
vec3 pixel_in_clamped = min(pixel_in,vec3(1.0)); //Clamp here for both vmask and darklines.
float white_reference;
if (VMASK_OVERWHITE+DRKLN_OVERWHITE < 2.0 ) {
white_reference = get_clamped_white_reference(pixel_in);
}
//Mask and darklines:
if (DO_VMASK_AND_DARKLINES == 1.0 ) {
vec3 pixel_in_compensated = pixel_in;
@ -319,9 +481,11 @@ vec4 pixel_main_pass(vec2 coords, bool bBorder_needed) {
if (RGB_MASK_STRENGTH > 0.0) {
//Use RGB pattern or exploit RGB layout with green and magenta?
if (VMASK_USE_GM < 1.0)
pixel_out = pixel_vmask(pixel_in_compensated, pixel_in_clamped, VMASK_OVERWHITE);
pixel_out = pixel_vmask(pixel_in_compensated, white_reference, VMASK_OVERWHITE);
else
pixel_out = pixel_vmask_gm(pixel_in_compensated, pixel_in_clamped, VMASK_OVERWHITE);
pixel_out = pixel_vmask_gm(pixel_in_compensated, white_reference, VMASK_OVERWHITE);
//Tried to unbranch to no avail (worse performances)
//pixel_out = pixel_vmask_and_gm(pixel_in_compensated, white_reference, VMASK_OVERWHITE);
}
pixel_out = pixel_push_luminance(pixel_out, DARKLINES_STRENGTH * (1.0/DARKLINES_PERIOD) * MASK_COMPENSATION);
@ -329,12 +493,11 @@ vec4 pixel_main_pass(vec2 coords, bool bBorder_needed) {
//Screen lines (slotmask aperture grille)
if ( DARKLINES_STRENGTH > 0.0 ) {
float MYDARKLINES_TRANSPARENCY = 1.0 - DARKLINES_STRENGTH;
pixel_out = pixel_darklines(pixel_out,DARKLINES_PERIOD,MYDARKLINES_TRANSPARENCY,DARKLINES_VOFFSET,pixel_in_clamped,DRKLN_OVERWHITE, coords);
pixel_out = pixel_darklines(pixel_out, DARKLINES_PERIOD, MYDARKLINES_TRANSPARENCY, DARKLINES_VOFFSET, white_reference, DRKLN_OVERWHITE, coords);
}
}
float lum = clamp(max(max(pixel_out.r,pixel_out.g),pixel_out.b), 0.0,1.0);
//Halo
@ -342,7 +505,6 @@ vec4 pixel_main_pass(vec2 coords, bool bBorder_needed) {
if (DO_HALO == 1.0 ) {
pixel_haloed = texture(halo_pass,coords).rgb;
pixel_out += pixel_haloed * (1 - HALO_VS_SCAN);
//pixel_out += (pixel_haloed * (lum));
}
/* Non flickering scanlines, Don't do them if
@ -367,26 +529,16 @@ vec4 pixel_main_pass(vec2 coords, bool bBorder_needed) {
pixel_out = pow(pixel_out,vec3(mypow));
}
//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.
//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);
//float scanline_shape = scanline_shape(coords, SCANLINE_SM_TYPE > 0.0 );
float lum = max(max(pixel_out.r, pixel_out.g), pixel_out.b);
float scanline_shape = scanline_shape(coords, SCANLINE_SM_TYPE > 0.0, lum );
pixel_out = pixel_out * ( scanline_shape + ( pixel_bleed * SCANLINES_BLEEDING * ( 1 - scanline_shape ) ));
//pixel_out *= scanline_shape;
}
@ -396,7 +548,7 @@ vec4 pixel_main_pass(vec2 coords, bool bBorder_needed) {
}
// Apply color correction (in this pass it is just the final output gamma)
if (DO_CCORRECTION == 1.0) pixel_out = pow(pixel_out,vec3(GAMMA_OUT));
if (DO_CCORRECTION == 1.0) pixel_out = pow(max(pixel_out, vec3(0.0)),vec3(GAMMA_OUT));
//Out
return vec4(pixel_out,1.0) ; //* border(border_coords);
@ -404,6 +556,47 @@ vec4 pixel_main_pass(vec2 coords, bool bBorder_needed) {
float global_noise;
#ifdef STATIC_SUPPORT_BACKDROP
vec3 pixel_backdrop_image() {
vec2 backdrop_offset=vec2(BACKDROP_OFFX,BACKDROP_OFFY);
vec2 backdrop_tex_size = textureSize(backdrop, 0);
float backdrop_lod = log2(backdrop_tex_size.y / global.FinalViewportSize.y);
vec2 backdrop_coords = get_scaled_coords_aspect(
vOutputCoord+backdrop_offset,
global.FinalViewportSize,
backdrop_tex_size.x/backdrop_tex_size.y,
bool(vIsRotated));
backdrop_coords=zoom(backdrop_coords, BACKDROP_ZOOM);
return textureLod(backdrop, backdrop_coords, backdrop_lod).rgb;
}
#endif
vec4 textureLod_wrap(sampler2D tex, vec2 co, float lod, float wrap_mode) {
/*
// Mirrored repeat, once, useless since is done by default
if (co.x > 1.0 || co.x < 0.0)
co.x = 1- mod(co.x, 1.0);
if (co.y > 1.0 || co.y < 0.0)
co.y = 1- mod(co.y, 1.0);
*/
if (wrap_mode == 1.0) {
//Clamp to border, black.
bool bOutside = (co.x < 0.0 || co.x > 1.0 || co.y < 0.0 || co.y > 1.0 ) ;
if (bOutside) return vec4(0.0,0.0,0.0,1.0);
} else if (wrap_mode == 2.0) {
//Clamp to edge:
co = clamp(co, 0.00, 1.0);
} else if (wrap_mode == 3.0) {
//Repeat no mirror:
co = mod(co, 1.0);
}
return textureLod(tex, co, lod);
}
vec4 pixel_background_image(bool over){
@ -415,43 +608,48 @@ vec4 pixel_background_image(bool over){
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));
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.xy = back_coords.yx;
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);
back_coords.xy = back_coords.yx;
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);
return textureLod_wrap(bg_over, back_coords, bg_over_lod, BG_IMAGE_WRAP_MODE);
}
//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, bool(vIsRotated));
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);
return textureLod_wrap(bg_under,back_coords,bg_under_lod, BG_IMAGE_WRAP_MODE);
//return textureLod(bg_under,back_coords,bg_under_lod);
}
vec3 pixel_border(bool image_over) {
/* Returns the surrounding of the tube/bezel:
* The led light alone
* The led lights alone
* the led light "under" a background image (alpha driven)
* black if we need to overlay a game backdrop
*/
#ifdef STATIC_SUPPORT_BACKDROP
return vec3(0.0);
#endif
vec3 pixel_out = vec3(1.0);
if (DO_AMBILIGHT == 1.0)
pixel_out = texture(ambi_temporal_pass, vOutputCoord + global_noise ).rgb;
pixel_out = texture(ambi_temporal_pass, vOutputCoord).rgb + vec3(global_noise);
if (DO_BG_IMAGE == 1.0 && !image_over) {
vec4 bg_image = pixel_background_image(false);
pixel_out = mix(pixel_out,bg_image.rgb,bg_image.a);
@ -480,28 +678,68 @@ vec3 bezel_color(float lum) {
//Colorize bezel frame
vec3 col = vec3(BEZEL_R,BEZEL_G,BEZEL_B) + lum;
float con_max = 0.5 * BEZEL_CON + 0.5;
col.r = scale_to_range(col.r, -con_max+1, con_max); //contrast
col.g = scale_to_range(col.g, -con_max+1, con_max); //contrast
col.b = scale_to_range(col.b, -con_max+1, con_max); //contrast
col = scale_to_range_vec3(col, -con_max+1, con_max);
return clamp(col,0.0,1.0);
}
#define STATIC_BEZEL_USE_MIPMAP 1.0
vec3 compose_bezel_over(vec3 full_viewport) {
vec2 bezel_lut_size = textureSize(monitor_body,0);
float bezel_frame_lod = log2(bezel_lut_size.y * (BEZEL_FRAME_ZOOM+1.0) /global.FinalViewportSize.y);
vec2 coords_for_bezel = vTexCoord;
if (BEZEL_FRAME_ZOOM != 0.0)
coords_for_bezel = zoomout_coords(vTexCoord,-BEZEL_FRAME_ZOOM,1.0);
coords_for_bezel = zoomout_coords(coords_for_bezel,-BEZEL_FRAME_ZOOM,1.0);
/* Bezel image is a fixed png file, and is curved.
* To have a straight bezel, we can "unwarp" it and then curve it again
* Too lame?
float BEZEL_IMG_BORDER_START_X = 120.0/2923.0; //= 0.03; 120
float BEZEL_IMG_BORDER_END_X = 220.0/2923.0 ;//= 0.2; 220
float BEZEL_IMG_BORDER_START_Y = 75.0/2178.0; //= 0.01; 75
float BEZEL_IMG_BORDER_END_Y = 160.0/2178.0;//= 0.4; 160
float BEZEL_IMG_CURVATURE_X = 0.6;
float BEZEL_IMG_CURVATURE_Y = 0.6;
float min_x = min(coords_for_bezel.x, 1-coords_for_bezel.x);
float min_y = min(coords_for_bezel.y, 1-coords_for_bezel.y);
float kx = smoothstep(BEZEL_IMG_BORDER_START_X, BEZEL_IMG_BORDER_END_X, min(coords_for_bezel.x, 1-coords_for_bezel.x));
float ky = smoothstep(BEZEL_IMG_BORDER_START_Y, BEZEL_IMG_BORDER_END_Y, min(coords_for_bezel.y, 1-coords_for_bezel.y));
coords_for_bezel = Warp(coords_for_bezel,-BEZEL_IMG_CURVATURE_X * kx , -BEZEL_IMG_CURVATURE_Y * ky );
coords_for_bezel = Warp(coords_for_bezel,GEOM_WARP_X * kx , GEOM_WARP_Y * ky );
*/
vec2 coords_for_mirror = coords_for_bezel;
//No need to draw anything outside this:
if (coords_for_bezel.x < 0 || coords_for_bezel.y < 0 || coords_for_bezel.x > 1.0 || coords_for_bezel.y > 1.0) return full_viewport;
vec2 coords_for_mirror = coords_for_bezel;
//Main lut:
vec4 bezel = textureLod(monitor_body,coords_for_bezel,bezel_frame_lod);
vec4 bezel;
#ifdef STATIC_BEZEL_USE_MIPMAP
vec2 bezel_lut_size = textureSize(monitor_body_curved,0); //no need to branch here if we assume straight and curved textures are the same size. //FIXME?
float bezel_frame_lod = log2(bezel_lut_size.y * (BEZEL_FRAME_ZOOM+1.0) /global.FinalViewportSize.y);
if (BEZEL_USE_STRAIGHT < 0.5)
bezel = textureLod(monitor_body_curved,coords_for_bezel,bezel_frame_lod);
else
bezel = textureLod(monitor_body_straight,coords_for_bezel,bezel_frame_lod);
#else
if (BEZEL_USE_STRAIGHT < 0.5)
bezel = texture(monitor_body_curved,coords_for_bezel);
else
bezel = texture(monitor_body_straight,coords_for_bezel);
#endif
//return mix(bezel.rgb, vec3(kx), 0.5);
//No need to draw anything on full alpha:
if (bezel.a == 0.0) return full_viewport;
@ -510,26 +748,37 @@ vec3 compose_bezel_over(vec3 full_viewport) {
//This is the reflection to be composed over the bezel);
vec3 pixel_mirrored = texture(reflected_blurred_pass2,
coords_for_mirror + random( min(global.FinalViewportSize.z,global.FinalViewportSize.w), vTexCoord ) ).rgb;
coords_for_mirror + random( min(global.FinalViewportSize.z,global.FinalViewportSize.w)*1.5, vTexCoord ) ).rgb;
//return pixel_mirrored;
//Take the reflection modifier from the texture blue component into account; it is/may be used to lower the reflection in the corners.
//float reflection = (reflection_shade * 1.4 - 0.4) * bezel.b ;
//reflection = clamp (reflection, 0.0, 1.0);
float reflection = bezel.b;
//return vec3(reflection);
pixel_mirrored = pixel_mirrored * reflection * BEZEL_REFL_STRENGTH;
//return pixel_mirrored;
vec3 bezel_out = bezel_colored + pixel_mirrored;
//Mix ambient light over bezel? (branching this is worse)
vec3 ambitemporalpass = texture(ambi_temporal_pass, vOutputCoord).rgb;
ambitemporalpass = max(ambitemporalpass, 0.0); //<-- this to avoid undefined results
vec3 pixel_ambilight = DO_AMBILIGHT * (ambitemporalpass + global_noise);
vec3 bezel_out = bezel_colored + (pixel_mirrored * reflection * 0.5) ;
//Mix a bit of ambient light over the bezel
vec4 pixel_avglum = texture(avglum_pass,vOutputCoord);
bezel_out = bezel_out + (pixel_avglum.rgb * 0.05);
//We use the green component to express Hardness/Specularity; there the reflection will be completely diffused.
//For the task, we use a mipmap whit adeguate precision.
float opacita = bezel.a;
bezel_out = bezel_out + pixel_ambilight * AMBI_OVER_BEZEL * (1 -reflection) * bezel.a;
//bezel_out = vec3(bezel.a);
//(1- (max(reflection, lut_hardness), bezel.a)) ;
//We use the green component to express Hardness/Specularity; there the reflection will be completely diffused.
//For the task, we use a mipmap whit adeguate precision.
float lut_hardness = bezel.g;
if (lut_hardness > 0.0) {
bezel_out = bezel_out + ( ( pixel_avglum.rgb + pixel_avglum.a*0.5) * lut_hardness/3.5);
vec4 pixel_avglum = texture(avglum_pass,vOutputCoord);
bezel_out = bezel_out + ( ( pixel_avglum.rgb + pixel_avglum.a*0.5) * lut_hardness * 0.57 * BEZEL_REFL_STRENGTH );
}
return mix(full_viewport, bezel_out, bezel.a);
}
@ -543,23 +792,11 @@ vec4 pixel_inner_frame(vec2 coords, bool bBorder_needed) {
//Mix bloom texture
if (DO_BLOOM == 1.0 ) {
bloomed=texture(bloom_pass_final, coords).rgb ;
if (BLOOM_BYPASS == 1.0)
if (BLOOM_BYPASS > 0.5)
pixel_out = bloomed;
else {
float over_white_correction = 1.0;
if (BLOOM_OVER_WHITE < 1.0) {
//Use mipmap to identify bright areas.
vec3 avglum = texture(avglum_pass,coords).rgb;
//avglum = apply_fuzzy_main_pass(avglum);
float b_brightness = max(avglum.b,max(avglum.r,avglum.g));
//b_brightness = max(pixel_out.b,max(pixel_out.r,pixel_out.g));
b_brightness *= 1-BLOOM_OVER_WHITE;
over_white_correction =1- b_brightness;
}
pixel_out = pixel_out + (bloomed * BLOOM_MIX * over_white_correction);
}
else
pixel_out += bloomed;
}
//Black frame insertion
@ -569,25 +806,25 @@ vec4 pixel_inner_frame(vec2 coords, bool bBorder_needed) {
//vignette and spot
if (DO_VIGNETTE + DO_SPOT >0.0) {
float in_aspect = get_in_aspect();
//float in_aspect = get_in_aspect();
if (DO_VIGNETTE == 1.0) {
float vignette;
float dist = length(vec2((coords.x-0.5)*in_aspect,coords.y-0.5));
vignette = smoothstep(V_SIZE,0.0,dist)*V_POWER+global_noise;
if (V_BYPASS < 1.0) pixel_out = vignette * clamp(pixel_out,0.0,1.0);
else
pixel_out = vec3(vignette);
float dist = length(vec2((coords.x-0.5)*vIn_aspect,coords.y-0.5));
float vignette = smoothstep(V_SIZE,0.0,dist)*V_POWER;
//float vignette = vV_POWER * (vV_SIZE + 16.0* coords.x*coords.y*(1.0-coords.x)*(1.0-coords.y));
//vignette = min(vignette,99999.0); //<--- big wtf here, why is this needed?
////...see: https://github.com/kokoko3k/koko-aio-slang/issues/3
pixel_out = pixel_out * vignette;
}
if (DO_SPOT == 1.0) {
float spot;
float dist = length(vec2((coords.x-0.5)*in_aspect,coords.y-0.5)+spot_offset);
spot = smoothstep(S_SIZE,0.0,dist)*S_POWER+global_noise;
if (S_BYPASS < 1.0) pixel_out = spot + pixel_out;
else
pixel_out = vec3(spot);
float dist = length(vec2((coords.x-0.5)*vIn_aspect,coords.y-0.5)+spot_offset);
float spot = smoothstep(S_SIZE,0.0,dist)*S_POWER;
//vec2 scoords = clamp(coords + spot_offset, 0.0,1.0);
//float spot = vS_POWER * (vS_SIZE + 16.0*scoords.x*scoords.y*(1.0-scoords.x)*(1.0-scoords.y));
pixel_out = pixel_out + spot;
}
//pixel_out += global_noise;
}
//smooth border (edge)
@ -645,26 +882,38 @@ vec4 main_wrap(vec2 coords){
void main() {
vec2 coords = vTexCoord;
//Luminosity dependant zoom
if (DO_DYNZOOM == 1.0) {
float zoomin = 1.0 + (texture(avglum_passFeedback, vec2(0.25,0.25) ).a/ DYNZOOM_FACTOR);
coords = zoom(coords, zoomin);
}
//Curvature
if (DO_CURVATURE == 1.0) {
if ((GEOM_WARP_X > 0.0) || (GEOM_WARP_Y > 0.0))
coords = Warp(coords,GEOM_WARP_X,GEOM_WARP_Y);
//float zoomin = 1.0 + (texture(bloom_pass_final, coords ).a/ DYNZOOM_FACTOR * 80.0); <<-- funny.
//float dynzoom = 1.0 + (texture(avglum_pass, vec2(0.75,0.75) ).a/ DYNZOOM_FACTOR);
float dynzoom = get_dyn_zoom(avglum_pass);
coords = zoom(coords, dynzoom);
}
//Scale coords according to bezel settings?
if (DO_BEZEL == 1.0) {
coords = zoomout_coords(coords, -BEZEL_INNER_ZOOM , 1.0);
coords = clamp(coords, 0.0,1.0);
}
//Curvature
if (DO_CURVATURE == 1.0) {
if ((GEOM_WARP_X > 0.0) || (GEOM_WARP_Y > 0.0))
coords = Warp_fast(coords, vWarp_vexp, vWarp_arg2);
}
//"Just" handle inner and outer frame here:
vec4 pixel_out = main_wrap(coords);
#ifdef STATIC_SUPPORT_BACKDROP
pixel_out += vec4(pixel_backdrop_image(), 1.0);
#endif
//Draw bezel
if (DO_BEZEL == 1.0) {
pixel_out = vec4(compose_bezel_over(pixel_out.rgb),1.0);
@ -682,6 +931,14 @@ void main() {
//split screen
//if (vTexCoord.y < 0.5) pixel_out = texture(first_pass,vTexCoord);
//pixel_out = texture(avglum_pass,vTexCoord);
//vec4 pixel_mirrored = texture(reflected_blurred_pass2,vTexCoord);
//pixel_out = pixel_mirrored;
FragColor = pixel_out;
//FragColor = vec4(blur_shade(vTexCoord) );
//FragColor = vec4(random(1.0, vTexCoord * params.FrameCount));
}

View File

@ -1,210 +1,33 @@
#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 = 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);
k=k/100.0;
float tmpCalc;
vec3 pixel_out;
if (k<=66) {
pixel_out.r = 255;
pixel_out.g = 99.47080258612 * log(k) - 161.11956816610;
} else {
pixel_out.r = 329.6987274461 * pow(k - 60 ,-0.13320475922);
pixel_out.g = 288.12216952833 * pow(k-60, -0.07551484921);
}
if (k >= 66)
pixel_out.b = 255;
else if (k<=19)
pixel_out.b = 0;
else
pixel_out.b = 138.51773122311 * log(k - 10) - 305.04479273072;
return pixel_out/255.0;
}
void main() {
gl_Position = global.MVP * Position;
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 = 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.
//Push luminance without clipping
pixel_out = pixel_push_luminance(pixel_out,LUMINANCE);
//Modify saturation
if (!(SATURATION == 1.0)) {
const vec3 W = vec3(0.2125, 0.7154, 0.0721);
vec3 intensity = vec3(dot(pixel_out.rgb, W));
pixel_out.rgb = mix(intensity, pixel_out.rgb, SATURATION);
}
//Modify contrast and brightness
if (CONTRAST != 0.0 || BRIGHTNESS != 0.0)
pixel_out.rgb = scale_to_range_vec3(pixel_out.rgb, -CONTRAST, 1+CONTRAST) + BRIGHTNESS;
//Modify color temperature
if (TEMPERATURE != 6500.0) pixel_out.rgb = pixel_out.rgb * temperature_rgb;
return pixel_out;
}
vec3 pixel_no_flicker(vec2 coord){
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;
}
vec3 pixel_flickering() {
/* Simulates the flickering effect of the interlaced screens.
* As I remember, it was visible when a line and the next had high
* luminosity differences.
* So we need sample the current line and the previous one
* So we need to sample the current line and the previous one
* (eventually applying color corrections to both).
*
* Repeating the following:
@ -222,7 +45,7 @@ vec3 pixel_flickering() {
* to see the effect (the lcd panel would just mix the pixels by itself (meh).
*/
vec3 pixel_cur = pixel_no_flicker(vTexCoord);
vec3 pixel_cur = texture(Source,vTexCoord).rgb;
float mymod = params.FrameCount % 3;
if (mymod == 0.0) return pixel_cur;
@ -230,9 +53,9 @@ vec3 pixel_flickering() {
vec3 flickline;
if (mymod == 1.0 )
flickline = pixel_no_flicker(vTexCoord + vec2(0.0,params.OriginalSize.w/line_tick));
flickline = texture(Source, vTexCoord + vec2(0.0,params.OriginalSize.w/line_tick)).rgb;
else if (mymod == 2.0)
flickline = pixel_no_flicker(vTexCoord - vec2(0.0,params.OriginalSize.w/line_tick));
flickline = texture(Source, vTexCoord - vec2(0.0,params.OriginalSize.w/line_tick)).rgb;
float lumdiff = (flickline.r+flickline.g+flickline.b)/3.0 -
(pixel_cur.r+pixel_cur.g+pixel_cur.b)/3.0;
@ -250,24 +73,43 @@ 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/5.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.9);
//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(floor(vTexCoord.x*16)/16); //H bw gradient 16gray
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
//pixel_debug=vec3(floor(vTexCoord.x*256)/256); //H bw gradient 256gray
//pixel_debug=vec3(1,0,0,0)*floor(vTexCoord.x*64)/64; //H red gradient 64
//if (mod(params.FrameCount,100) < 50) pixel_debug=vec3(0.0) ; else pixel_debug=vec3(1.0);
// float blink_time = 20;
// if (mod(params.FrameCount,blink_time*2) < blink_time) pixel_debug=vec3(0.2) ; else pixel_debug=vec3(1.0);
//FragColor = vec4(color_tools(pixel_debug).rgb,1.0);
//White circle, blinking
/* float blink_time = 20;
vec2 center = vTexCoord - vec2(0.5,0.5);
float radius = 0.1;
pixel_debug = vec3(1 - step(radius, length(center)));
pixel_debug *= float((mod(params.FrameCount,blink_time*2) < blink_time));
*/
FragColor = vec4(pixel_debug,1.0);
}
void main() {
//FragColor = vec4(ntscdec(vTexCoord),1.0); return;
/*vec4 pixel_debug=texture(Source,vTexCoord);
float mymod = int(mod(vTexCoord.y * params.OutputSize.y , 2.0 )) ;
pixel_debug.a *= float( (mymod != 0.0) ) ;
FragColor = pixel_debug;
return;
*/
//debug(); return;
/* since flickering code needs
@ -278,19 +120,29 @@ void main() {
and outside id when we dont.
*/
if (DO_SCANLINES == 0.0) {
FragColor= vec4(pixel_no_flicker(vTexCoord),1.0);
return;
}
//Implicit else: DO_SCANLINES == 1.0
if (scanline_have_to_flicker(is_interlaced())) {
FragColor = vec4(pixel_flickering(),1.0);
return;
}
vec3 pixel_out;
if (DO_SCANLINES == 0.0)
pixel_out = texture(Source, vTexCoord).rgb;
else if (scanline_have_to_flicker(is_interlaced()))
pixel_out = pixel_flickering();
else
//Implicit else: DO_SCANLINES == 1.0 but no flickering needed.
FragColor = vec4(pixel_no_flicker(vTexCoord),1.0);
pixel_out = texture(Source, vTexCoord).rgb;
if (DO_RF_NOISE > 0.0) {
vec3 noise = vec3(random(RF_NOISE_STRENGTH, vTexCoord * params.FrameCount));
pixel_out += noise;
}
//Here lies the blur modifier from ntsc pass to glow.
//I'm not expecting any performance hit, since the lookup should have been cached alreadyl
float pixel_alpha = texture(Source, vTexCoord).a;
FragColor = vec4(pixel_out, pixel_alpha);
}

View File

@ -252,6 +252,8 @@ layout(location = 0) in vec4 Position;
layout(location = 1) in vec2 TexCoord;
layout(location = 0) out vec2 vTexCoord;
void main()
{
gl_Position = global.MVP * Position;
@ -263,9 +265,12 @@ layout(location = 0) in vec2 vTexCoord;
layout(location = 0) out vec4 FragColor;
layout(set = 0, binding = 2) uniform sampler2D first_pass;
void main() {
void main() {
if ( DO_FXAA == 0.0 ) return;
FragColor = vec4(FxaaPixelShader(vTexCoord, first_pass, vec2(global.first_passSize.z, global.first_passSize.w)),0.0);
//Here lies the blur modifier from ntsc pass to glow.
//I'm not expecting any performance hit, since the lookup should have been cached alreadyl
float pixel_alpha = texture(first_pass, vTexCoord).a;
FragColor = vec4(FxaaPixelShader(vTexCoord, first_pass, vec2(global.first_passSize.z, global.first_passSize.w)),pixel_alpha);
}

View File

@ -1,59 +0,0 @@
#version 450
#include "config.inc"
#define pi 3.141592654
// Blur sizes must not depend on input resolution
#define scalemod_x (global.in_glow_passSize.x/360.0)
#define scalemod_y (global.in_glow_passSize.y/270.0)
#pragma stage vertex
layout(location = 0) in vec4 Position;
layout(location = 1) in vec2 TexCoord;
layout(location = 0) out vec2 vTexCoord;
layout(location = 1) out vec2 vOutputCoord;
void main() {
gl_Position = global.MVP * Position;
//vTexCoord = get_scaled_coords(TexCoord);
vTexCoord = TexCoord;
vOutputCoord = TexCoord;
}
#pragma stage fragment
layout(location = 0) in vec2 vTexCoord;
layout(location = 1) in vec2 vOutputCoord;
layout(location = 0) out vec4 FragColor;
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;
#include "includes/pixel_glows.include.slang"
vec4 main_wrap(void) {
//Halo
vec3 pixel_haloed;
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;
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, 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;
else
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);
}
void main() {
if (DO_HALO == 0.0 ) return;
FragColor = main_wrap();
}

View File

@ -0,0 +1,54 @@
#version 450
#include "config.inc"
#pragma stage vertex
layout(location = 0) in vec4 Position;
layout(location = 1) in vec2 TexCoord;
layout(location = 0) out vec2 vTexCoord;
layout(location = 1) out float vHALO_W;
layout(location = 2) out vec3 vHALO_GAMMA;
void main() {
gl_Position = global.MVP * Position;
vTexCoord = TexCoord;
vHALO_W = HALO_W / NEW_SCALEMOD_X; //Make it resolution independent.
vHALO_GAMMA = vec3(HALO_GAMMA);
}
#pragma stage fragment
layout(location = 0) in vec2 vTexCoord;
layout(location = 1) in float vHALO_W;
layout(location = 2) in vec3 vHALO_GAMMA;
layout(location = 0) out vec4 FragColor;
layout(set = 0, binding = 4) uniform sampler2D in_glow_pass;
layout(set = 0, binding = 5) uniform sampler2D shift_and_bleed_pass;
#include "includes/functions.include.slang"
void main() {
if (DO_HALO == 0.0 ) return;
//Pass the right texture unchanged for tighter blurs:
if (HALO_W >= GLOW_SHARP_MAX && HALO_H >= GLOW_SHARP_MAX) {
if (DO_IN_GLOW == 1.0)
FragColor = texture(in_glow_pass, vTexCoord);
else
FragColor = texture(shift_and_bleed_pass, vTexCoord);
return;
}
vec3 pixel_haloed;
if (DO_IN_GLOW == 1.0) {
//pixel_haloed = blur9_x(in_glow_pass, vTexCoord, global.FXAA_passSize.xy, vHALO_W);
pixel_haloed = blur9_x_gamma(in_glow_pass, vTexCoord, global.FXAA_passSize.xy, vHALO_W, vHALO_GAMMA);
}
else {
pixel_haloed = blur9_x_gamma(shift_and_bleed_pass, vTexCoord, global.FXAA_passSize.xy, vHALO_W, vHALO_GAMMA);
}
FragColor = vec4(pixel_haloed.rgb, 1.0);
}

View File

@ -0,0 +1,41 @@
#version 450
#include "config.inc"
#pragma stage vertex
layout(location = 0) in vec4 Position;
layout(location = 1) in vec2 TexCoord;
layout(location = 0) out vec2 vTexCoord;
layout(location = 1) out float vHALO_H;
void main() {
gl_Position = global.MVP * Position;
vTexCoord = TexCoord;
vHALO_H = HALO_H / NEW_SCALEMOD_Y; //Make it resolution independent.
}
#pragma stage fragment
layout(location = 0) in vec2 vTexCoord;
layout(location = 1) in float vHALO_H;
layout(location = 0) out vec4 FragColor;
layout(set = 0, binding = 2) uniform sampler2D Source;
#include "includes/functions.include.slang"
void main() {
if (DO_HALO == 0.0 ) return;
vec3 pixel_haloed;
//apply just gamma and power for tighter blurs and exit:
if (HALO_W >= GLOW_SHARP_MAX && HALO_H >= GLOW_SHARP_MAX) {
FragColor = vec4( glow_dumb(Source, HALO_POWER, HALO_GAMMA, vTexCoord), 1.0);
return;
}
pixel_haloed = blur9_y(Source, vTexCoord, global.first_passSize.xy, vHALO_H) * HALO_POWER;
FragColor = vec4(pixel_haloed.rgb,1.0);
}

View File

@ -1,109 +0,0 @@
#version 450
#include "config.inc"
#pragma stage vertex
layout(location = 0) in vec4 Position;
layout(location = 1) in vec2 TexCoord;
layout(location = 0) out vec2 vTexCoord;
void main() {
gl_Position = global.MVP * Position;
vTexCoord = TexCoord ;
}
#pragma stage fragment
layout(location = 0) in vec2 vTexCoord;
layout(location = 0) out vec4 FragColor;
layout(set = 0, binding = 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)
#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_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

@ -0,0 +1,67 @@
#version 450
#include "config.inc"
#pragma stage vertex
layout(location = 0) in vec4 Position;
layout(location = 1) in vec2 TexCoord;
layout(location = 0) out vec2 vTexCoord;
void main() {
gl_Position = global.MVP * Position;
vTexCoord = TexCoord ;
}
#pragma stage fragment
layout(location = 0) in vec2 vTexCoord;
layout(location = 0) out vec4 FragColor;
layout(set = 0, binding = 5) uniform sampler2D shift_and_bleed_pass;
#include "includes/functions.include.slang"
void main() {
if (DO_IN_GLOW == 0.0) return;
//Don't do anything if IN_GLOW_W and IN_GLOW_H are over the upper limit
if (IN_GLOW_W >= GLOW_SHARP_MAX && IN_GLOW_H >= GLOW_SHARP_MAX) {
return;
}
float IN_GLOW_W_ADAPTED;
//Auto calc glow sharpness via IN_GLOW_SPREAD
if (IN_GLOW_W <= 0.00001)
IN_GLOW_W_ADAPTED = IN_GLOW_SPREAD * IN_GLOW_SHARPNESS_SPREAD_RATIO_W;
//Here lies the blur modifier from ntsc pass to glow.
//I'm not expecting any performance hit,
//since the lookup should have been cached already or will serve so.
float ntsc_artifacts = texture(shift_and_bleed_pass, vTexCoord).a;
//apply an optional gain to artifacts
ntsc_artifacts = ntsc_artifacts * IN_GLOW_NTSC_ARTF_MULT;
//then apply the minimum treshold and scale them to input sharpness so that they can always blur to max.
ntsc_artifacts = smoothstep(IN_GLOW_NTSC_ARTF_TRSH, 1.0, ntsc_artifacts * IN_GLOW_NTSC_ARTF_MULT) * IN_GLOW_W;
//finally "subtract" them to the configured sharpness (-> more blur)
IN_GLOW_W_ADAPTED = IN_GLOW_W - ntsc_artifacts;
//don't allow lower values that look bad:
IN_GLOW_W_ADAPTED = max(IN_GLOW_W_ADAPTED, MIN_IN_GLOW_SHARP);
//Make it resolution independent.
IN_GLOW_W_ADAPTED = IN_GLOW_W_ADAPTED / NEW_SCALEMOD_X;
FragColor = vec4( blur9_x(shift_and_bleed_pass, vTexCoord, global.first_passSize.xy, IN_GLOW_W_ADAPTED), 1.0);
//To debug ntsc artifacts mask:
if (IN_GLOW_SHOW_ARTF_MASK > 0.5)
FragColor = vec4(ntsc_artifacts);
}

View File

@ -0,0 +1,119 @@
#version 450
#include "config.inc"
#pragma stage vertex
layout(location = 0) in vec4 Position;
layout(location = 1) in vec2 TexCoord;
layout(location = 0) out vec2 vTexCoord;
layout(location = 1) out float vIN_GLOW_H;
void main() {
gl_Position = global.MVP * Position;
vTexCoord = TexCoord ;
float IN_GLOW_H_ADAPTED = IN_GLOW_H;
//Auto calc glow sharpness via IN_GLOW_SPREAD
if (IN_GLOW_H <= 0.00001)
IN_GLOW_H_ADAPTED = IN_GLOW_SPREAD * IN_GLOW_SHARPNESS_SPREAD_RATIO_H;
//don't allow lower values that look bad:
IN_GLOW_H_ADAPTED = max(IN_GLOW_H_ADAPTED, MIN_IN_GLOW_SHARP);
vIN_GLOW_H = IN_GLOW_H_ADAPTED / NEW_SCALEMOD_Y; //Make it resolution independent.
}
#pragma stage fragment
layout(location = 0) in vec2 vTexCoord;
layout(location = 1) in float vIN_GLOW_H;
layout(location = 0) out vec4 FragColor;
layout(set = 0, binding = 5) uniform sampler2D shift_and_bleed_pass;
layout(set = 0, binding = 6) uniform sampler2D Source;
#include "includes/functions.include.slang"
vec3 glow_blur_bias(sampler2D source_tex, vec2 co, vec3 pixel_glowed, float bias){
vec3 pixel_source = texture(source_tex, co).rgb;
// Since I moved from one pass blur for glow to 2 passes (x,y), I've had to
// move the pow to IN_GLOW_GAMMA in the previous pass, so pow-ering it
// again here, is not needed.
// pixel_source = pow(pixel_source,vec3(IN_GLOW_GAMMA)) * IN_GLOW_POWER;
pixel_source = pixel_source * IN_GLOW_POWER;
vec3 glow_light = pixel_glowed - pixel_source;
glow_light = clamp(glow_light * IN_GLOW_SPREAD, 0.0, 1.0);
/* powering glow_light is fine when not dealing with scanline minimum thickness,
* but when the scanline shape gets smaller, it kinda produces a visive
* pow(x,2) by its own; in that case powering glow_light make things worse.
* It makes sense, because we are emulating the light spread twice.
* FIXME: How to deal with this?
*/
//glow_light = pow(glow_light, vec3(2.0));
vec3 proper_glow = glow_light * glow_light + pixel_source;
return mix(proper_glow, pixel_glowed, max(0.0, bias));
}
/*
vec3 antialias_blur_bias(sampler2D source_tex, vec2 co, vec3 pixel_glowed, float bias){
//Create a dilated and an eroded image, then mix between them via the blurred color.
vec3 pixel_source = texture(source_tex, co).rgb;
pixel_source = pixel_source * IN_GLOW_POWER;
vec3 glow_light = clamp((pixel_glowed - pixel_source) * IN_GLOW_SPREAD, 0.0, 1.0);
vec3 pixel_glowed_inv = 1 - clamp(pixel_glowed, 0.0, 1.0);
vec3 pixel_source_inv = 1 - clamp(pixel_source, 0.0, 1.0);
vec3 pixel_dark = clamp((pixel_glowed_inv - pixel_source_inv) * IN_GLOW_SPREAD, 0.0, 1.0) ;
vec3 pixel_dilated = pixel_source + glow_light ;
vec3 pixel_eroded = pixel_source - pixel_dark ;
//Dilate or erode depending on blurred brightness:
vec3 pixel_dilated_eroded = mix(pixel_eroded, pixel_dilated, pixel_glowed);
//Unsharp mask:
float sharpamt = 0.5;
pixel_dilated_eroded = pixel_dilated_eroded + ((1 - pixel_glowed)*sharpamt);
pixel_dilated_eroded = (pixel_dilated_eroded - sharpamt) * (1 + 2*sharpamt);
return mix(pixel_dilated_eroded, pixel_glowed, max(0.0, bias));
//return mix(pixel_out, pixel_glowed, max(0.0, bias));
}
*/
void main() {
if (DO_IN_GLOW == 0.0) return;
vec3 pixel_glowed;
//apply just gamma and power for tighter blurs and exit:
if (IN_GLOW_W >= GLOW_SHARP_MAX && IN_GLOW_H >= GLOW_SHARP_MAX) {
pixel_glowed = texture(shift_and_bleed_pass,vTexCoord).rgb * IN_GLOW_POWER; //(Source, IN_GLOW_POWER, IN_GLOW_GAMMA, vTexCoord) ;
} else {
pixel_glowed = blur9_y(Source, vTexCoord, params.SourceSize.xy, vIN_GLOW_H) * IN_GLOW_POWER;
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);
//pixel_glowed = antialias_blur_bias(shift_and_bleed_pass, vTexCoord, pixel_glowed, IN_GLOW_BIAS);
}
}
FragColor = vec4(pixel_glowed,1.0);
}

View File

@ -1,21 +1,52 @@
#include "pows.include.slang"
#define Pi2 6.283
#define bloom_directions 8
#define b_offset_x -0.05 //Why is this needed by bloom?
#define bdirections 8
vec3 bloom(sampler2D smp, vec2 uv, vec4 smpsize, vec2 dest_size, float quality, float gamma, float start_offset, float lod) {
vec2 r = dest_size/smpsize.xy ;
vec3 lookup;
vec3 color = vec3(0.0,0.0,0.0);
float steps=0.0;
vec2 radius_blur_adapt(vec2 bsize){
vec2 r;
r.x = bsize.x / SCALEMOD_X;
r.y = r.x * get_in_aspect();
return r;
}
for( float d=start_offset; d<Pi2; d+=Pi2/bdirections) {
vec3 bloom_gamma_power(sampler2D smp, vec2 uv, vec4 smpsize, vec2 bsize, float quality, float gamma, float power, float start_offset, float lod) {
vec2 r = radius_blur_adapt(bsize) ;
vec3 lookup;
vec3 color = vec3(0.0);
vec3 vec3gamma = vec3(gamma);
for( float d=start_offset; d<TAU; d+=TAU/bdirections) {
for(float i=1.0/quality; i<=1.0; i+=1.0/quality) {
lookup = textureLod(smp, uv + vec2( cos(d), sin(d)) * r * i, lod ).rgb ;
color +=pow(lookup.rgb,vec3(gamma));
color +=pow(lookup.rgb, vec3gamma);
}
}
color /= (quality*bdirections);
return color * power;
}
vec3 bloom_gamma(sampler2D smp, vec2 uv, vec4 smpsize, vec2 bsize, float quality, float gamma, float start_offset, float lod) {
vec2 r = radius_blur_adapt(bsize);
vec3 lookup;
vec3 color = vec3(0.0);
vec3 vec3gamma = vec3(gamma);
for( float d=start_offset; d<TAU; d+=TAU/bdirections) {
for(float i=1.0/quality; i<=1.0; i+=1.0/quality) {
lookup = textureLod(smp, uv + vec2( cos(d), sin(d)) * r * i, lod ).rgb ;
color +=pow(lookup.rgb, vec3gamma);
}
}
color /= (quality*bdirections);
return color;
}
vec3 bloom(sampler2D smp, vec2 uv, vec4 smpsize, vec2 bsize, float quality, float start_offset, float lod) {
vec2 r = radius_blur_adapt(bsize);
vec3 lookup;
vec3 color = vec3(0.0);
for( float d=start_offset; d<TAU; d+=TAU/bdirections) {
for(float i=1.0/quality; i<=1.0; i+=1.0/quality) {
lookup = textureLod(smp, uv + vec2( cos(d), sin(d)) * r * i, lod ).rgb ;
color += lookup.rgb;
}
}
color /= (quality*bdirections);

View File

@ -109,16 +109,24 @@ float random(float power, vec2 seed) {
float dt = dot(seed.xy, vec2(RND_A, RND_B));
float sn = mod(dt,3.14);
float noise_out = fract(sin(sn) * RND_C) - 0.5;
noise_out = clamp(noise_out, -power, power);
return noise_out ;
float noise_out = fract(sin(sn) * RND_C);
//noise_out = clamp(noise_out, -power, power);
noise_out = scale_to_range(noise_out, -power, power);
return noise_out;
}
//CURVATURE
#define corner_aspect vec2(1.0, 0.75)
float border(vec2 coord)
{
float border(vec2 coord) {
//if (GEOM_CORNER_SIZE < 0.02) {
/*float fout = float(coord.x > 0.0 &&
coord.y > 0.0 &&
coord.x < 1.0 &&
coord.y < 1.0
);
return fout;
//}*/
coord = (coord - vec2(0.5)) + vec2(0.5, 0.5);
coord = min(coord, vec2(1.0) - coord) * corner_aspect;
vec2 cdist = vec2(GEOM_CORNER_SIZE);
@ -126,20 +134,51 @@ float random(float power, vec2 seed) {
float dist = sqrt(dot(coord, coord));
return clamp((cdist.x - dist)*GEOM_CORNER_SMOOTH, 0.0, 1.0);
}
vec2 Warp(vec2 uv,float wx, float wy){
vec2 Warp_06(vec2 uv) {
//Pre-calc version for curvature = 0.6,0.6
uv = uv * 2.0 - 1.0;
vec2 CRT_Distortion = vec2(wx, wy);
float curvedCoordsDistance = length(uv);
uv /= curvedCoordsDistance;
uv *= (1.0-pow(vec2(1.0-(curvedCoordsDistance/1.4142135623730950488016887242097)),(1.0/(1.0+CRT_Distortion*0.2))));
uv /= (1.0-pow(vec2(0.29289321881345247559915563789515),(1.0/(vec2(1.0)+CRT_Distortion*0.2))));
uv *= 1.0-pow(vec2(1.0-(curvedCoordsDistance/1.4142)), vec2(0.8928) );
uv /= 0.6659;
uv = uv* 0.5 + 0.5;
return uv;
}
//warp full new
vec2 Warp(vec2 uv,float wx, float wy){
// Transform coordinates to range [-1, 1]
uv = uv * 2.0 - 1.0;
vec2 pow_exp = 1.0/(1.0+vec2(wx, wy) * 0.2 ) ;
float curvedCoordsDistance = length(uv);
vec2 pow_base = vec2(1.0-(curvedCoordsDistance/1.4142135623730950488016887242097));
pow_base = abs(pow_base); // <-- this way intel and nvidia (probably amd) acts the same.
uv /= curvedCoordsDistance;
uv *= (1.0-pow(pow_base, pow_exp ));
uv /= (1.0-pow(vec2(0.29289321881345247559915563789515), pow_exp ));
// Transform coordinates back to [0, 1]
return uv* 0.5 + 0.5;
}
vec2 Warp_fast(vec2 uv, vec2 v_exp, vec2 arg2) {
/*This version is exact and faster than the other implementation,
* Just because it needs precalculed arguments that can live in
* vertex shader
*/
// Transform coordinates to range [-1, 1]
uv = uv * 2.0 - 1.0;
float curvedCoordsDistance = length(uv);
vec2 pow_base = vec2(1.0-(curvedCoordsDistance/1.4142));
pow_base = abs(pow_base); // <-- this way intel and nvidia (probably amd) acts the same.
uv /= curvedCoordsDistance;
uv *= 1.0-pow(pow_base, v_exp );
uv /= arg2;
// Transform coordinates back to [0, 1]
return uv * 0.5 + 0.5;
}
//VIGNETTE - SPOT
/* float gauss(float x, float x0, float sx, float size, float power){
float arg = x-x0;
@ -161,7 +200,11 @@ float random(float power, vec2 seed) {
//AMBILIGHT RELATED
bool border_needed() {
//returns if we need to draw on the border
#ifdef STATIC_SUPPORT_BACKDROP
return true;
#else
return (DO_AMBILIGHT + DO_BG_IMAGE > 0.0);
#endif
}
@ -173,7 +216,7 @@ float random(float power, vec2 seed) {
}
#define is_useless(x) is_outer_frame(x)
bool is_outer_frame(vec4 pixel) {
return pixel.a == 0.0;
return pixel.a <= 0.004; // about 1/256
/*Check if a pixel is marked as border by comparing the value of its alpha channel
Tolerance is needed, because precision can be as low as 1/256; since I don't need
alpha channel, use an even large tolerance.
@ -194,16 +237,14 @@ float random(float power, vec2 seed) {
}
float get_in_aspect() {
if (ASPECT_X == -1) return 1.5; // ntsc
if (ASPECT_X == -2) return 1.25; // pal
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 ;
if (ASPECT_X == 0) return 1.3333333333333; //all mame games, not rotated
if (ASPECT_X == -1) return 1.5; // ntsc
if (ASPECT_X == -2) return 1.25; // pal
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.
return ASPECT_X / ASPECT_Y ;
}
vec2 get_scaled_coords_aspect(vec2 pTexCoord, vec4 destsize, float in_aspect , bool is_rotated){
@ -234,17 +275,9 @@ float random(float power, vec2 seed) {
float offset_y = 0.0 ;
float in_aspect = get_in_aspect();
if (is_rotated) {
//I'm doing ping pong between th the following 2:
//FIXME: verify if it depends on destsize being outputsize or finalviewportsize!!
//scale_y = destsize.y/(destsize.x / in_aspect );
scale_y = destsize.x/(destsize.y / in_aspect );
scale_y = destsize.x/(destsize.y / in_aspect );
offset_y = (0.5 * scale_y ) - 0.5 ;
} else {
//scale_x = params.OutputSize.x/(params.OutputSize.y * in_aspect);
//scale_x = global.FinalViewportSize.x/(global.FinalViewportSize.y * in_aspect);
scale_x = destsize.x/(destsize.y * in_aspect);
offset_x = (0.5 * scale_x ) - 0.5 ;
}
@ -253,5 +286,139 @@ float random(float power, vec2 seed) {
return scale_coord;
}
//Blur/Glow
vec3 glow_dumb(sampler2D in_texture, float glow_power, float gamma, vec2 coords) {
return pow( texture(in_texture, coords).rgb, vec3(gamma) ) * glow_power;
}
vec3 blur9_x(sampler2D image, vec2 uv, vec2 sourcesize, float sharpness_x) {
vec2 resolution = sourcesize * sharpness_x;
vec3 color = vec3(0.0);
vec2 off1 = vec2(1.3846153846, 0.0) ;
vec2 off2 = vec2(3.2307692308, 0.0) ;
color += texture(image, uv).rgb * 0.2270270270;
color += texture(image, uv + (off1 / resolution)).rgb * 0.3162162162;
color += texture(image, uv - (off1 / resolution)).rgb * 0.3162162162;
color += texture(image, uv + (off2 / resolution)).rgb * 0.0702702703;
color += texture(image, uv - (off2 / resolution)).rgb * 0.0702702703;
return color;
}
vec3 blur9_x_gamma(sampler2D image, vec2 uv, vec2 sourcesize, float sharpness_x, vec3 gamma) {
vec2 resolution = sourcesize * sharpness_x;
vec3 color = vec3(0.0);
vec2 off1 = vec2(1.3846153846, 0.0) ;
vec2 off2 = vec2(3.2307692308, 0.0) ;
vec3 lookup = texture(image, uv).rgb;
color += pow(lookup, gamma) * 0.2270270270;
lookup = texture(image, uv + (off1 / resolution)).rgb;
color += pow(lookup, gamma) * 0.3162162162;
lookup = texture(image, uv - (off1 / resolution)).rgb;
color += pow(lookup, gamma) * 0.3162162162;
lookup = texture(image, uv + (off2 / resolution)).rgb;
color += pow(lookup, gamma) * 0.0702702703;
lookup = texture(image, uv - (off2 / resolution)).rgb;
color += pow(lookup, gamma) * 0.0702702703;
return color;
}
vec3 blur9_y(sampler2D image, vec2 uv, vec2 sourcesize, float sharpness_y) {
vec2 resolution = sourcesize * sharpness_y;
vec3 color = vec3(0.0);
vec2 off1 = vec2(0.0, 1.3846153846) ;
vec2 off2 = vec2(0.0, 3.2307692308) ;
color += texture(image, uv).rgb * 0.2270270270;
color += texture(image, uv + (off1 / resolution)).rgb * 0.3162162162;
color += texture(image, uv - (off1 / resolution)).rgb * 0.3162162162;
color += texture(image, uv + (off2 / resolution)).rgb * 0.0702702703;
color += texture(image, uv - (off2 / resolution)).rgb * 0.0702702703;
return color;
}
/*float is_scanline(vec2 uv){
return float(int(mod(uv.y * params.OutputSize.y , 2.0 )) !=0.0) ;
}
vec3 blur9_y_e_scanline(sampler2D image, vec2 uv, vec2 sourcesize, float sharpness_y) {
float mymod = int(mod(uv.y * params.OutputSize.y , 2.0 )) ;
float scanline = float( (mymod != 0.0) ) ;
vec2 resolution = sourcesize * sharpness_y;
vec3 color = vec3(0.0);
vec2 off1 = vec2(0.0, 1.3846153846) ;
vec2 off2 = vec2(0.0, 3.2307692308) ;
scanline = is_scanline(uv);
color += texture(image, uv).rgb * scanline * 0.2270270270;
scanline = is_scanline(uv + (off1 / resolution));
color += texture(image, uv + (off1 / resolution)).rgb * scanline * 0.3162162162;
scanline = is_scanline(uv - (off1 / resolution) );
color += texture(image, uv - (off1 / resolution)).rgb * scanline * 0.3162162162;
scanline = is_scanline(uv + (off2 / resolution) );
color += texture(image, uv + (off2 / resolution)).rgb * scanline * 0.0702702703;
scanline = is_scanline(uv - (off2 / resolution) );
color += texture(image, uv - (off2 / resolution)).rgb * scanline * 0.0702702703;
return color;
}
vec3 blur9_y_alpha_aware(sampler2D image, vec2 uv, vec2 sourcesize, float sharpness_y) {
vec2 resolution = sourcesize * sharpness_y;
vec2 off1 = vec2(0.0, 1.3846153846) ;
vec2 off2 = vec2(0.0, 3.2307692308) ;
vec3 color = vec3(0.0);
vec4 lookup = texture(image, uv); color += lookup.a * lookup.rgb * 0.2270270270;
lookup = texture(image, uv + (off1 / resolution)); color += lookup.a * lookup.rgb * 0.3162162162;
lookup = texture(image, uv - (off1 / resolution)); color += lookup.a * lookup.rgb * 0.3162162162;
lookup = texture(image, uv + (off2 / resolution)); color += lookup.a * lookup.rgb * 0.0702702703;
lookup = texture(image, uv - (off2 / resolution)); color += lookup.a * lookup.rgb * 0.0702702703;
return color;
}
*/
vec3 blur5_x(sampler2D image, vec2 uv, vec2 sourcesize, float sharpness_x, float lod) {
vec2 resolution = sourcesize * sharpness_x;
vec3 color = vec3(0.0);
vec2 off1 = vec2(1.333333333333, 0.0) ;
color += textureLod(image, uv, lod).rgb * 0.29411764705882354;
color += textureLod(image, uv + (off1 / resolution), lod).rgb * 0.35294117647058826;
color += textureLod(image, uv - (off1 / resolution), lod).rgb * 0.35294117647058826;
return color;
}
vec3 blur5_y(sampler2D image, vec2 uv, vec2 sourcesize, float sharpness_y, float lod) {
vec2 resolution = sourcesize * sharpness_y;
vec3 color = vec3(0.0);
vec2 off1 = vec2(0.0, 1.333333333333) ;
color += textureLod(image, uv, lod).rgb * 0.29411764705882354;
color += textureLod(image, uv + (off1 / resolution), lod).rgb * 0.35294117647058826;
color += textureLod(image, uv - (off1 / resolution), lod).rgb * 0.35294117647058826;
return color;
}
float rgb_to_gray(vec3 rgb) {
return dot(rgb, vec3(0.299, 0.587, 0.114));
}
//smoothly shade x and y < 0.0, currently unused
/*float blur_shade(vec2 co, float size) {
float co_1D;
(co.x < 0.0 || co.x > 1.0) ? co_1D = co.x : co_1D = co.y ;
float side_hi_switch = float(co_1D > 1.0);
float side_lo_switch = float(co_1D < 0.0);
float smooth_min = 1.0 * side_hi_switch;
float smooth_max = smooth_min + (
( size * side_hi_switch) +
(-size * side_lo_switch )
);
return smoothstep(smooth_min, smooth_max, co_1D);
}
*/
float get_dyn_zoom(sampler2D tex) {
return 1.0 + (texture(tex, vec2(0.75,0.75) ).a/ DYNZOOM_FACTOR) ;
}

View File

@ -1,16 +1,141 @@
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);
/*
* This commented version is a blur that blurs only brighter colors.
* I'm not using it, because a cheaper method is available in in_glow.slang
* Very, very little visual differences but a small penalty in performance
* so i prefer that one.
*
* vec3 brighter(vec3 first, vec3 second){
vec3 pixel_out;
pixel_out.r = ((first.r - second.r));
pixel_out.g = ((first.g - second.g));
pixel_out.b = ((first.b - second.b));
return clamp(pixel_out, IN_GLOW_BIAS,1.0);
}
vec4 pixel_glow_std_pow_bloom_only(sampler2D in_texture, float my_glowpix, float my_glowpixy, float my_glow, float glow_gamma, 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 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;
vec3 glow_gamma_vec3 = vec3(glow_gamma);
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 center_pixel = texture(in_texture, coords ).rgb;
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 = mix(center_pixel, l3, brighter(l3, center_pixel));
l2 = mix(center_pixel, l2, brighter(l2, center_pixel));
l1 = mix(center_pixel, l1, brighter(l1, center_pixel));
r1 = mix(center_pixel, r1, brighter(r1, center_pixel));
r2 = mix(center_pixel, r2, brighter(r2, center_pixel));
r3 = mix(center_pixel, r3, brighter(r3, center_pixel));
l3=pow(l3,glow_gamma_vec3); l2=pow(l2,glow_gamma_vec3); l1=pow(l1,glow_gamma_vec3);
r1=pow(r1,glow_gamma_vec3); r2=pow(r2,glow_gamma_vec3); r3=pow(r3,glow_gamma_vec3);
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 = mix(center_pixel, l3, brighter(l3, center_pixel));
l2 = mix(center_pixel, l2, brighter(l2, center_pixel));
l1 = mix(center_pixel, l1, brighter(l1, center_pixel));
r1 = mix(center_pixel, r1, brighter(r1, center_pixel));
r2 = mix(center_pixel, r2, brighter(r2, center_pixel));
r3 = mix(center_pixel, r3, brighter(r3, center_pixel));
l3=pow(l3,glow_gamma_vec3); l2=pow(l2,glow_gamma_vec3); l1=pow(l1,glow_gamma_vec3);
r1=pow(r1,glow_gamma_vec3); r2=pow(r2,glow_gamma_vec3); r3=pow(r3,glow_gamma_vec3);
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 = mix(center_pixel, l3, brighter(l3, center_pixel));
l2 = mix(center_pixel, l2, brighter(l2, center_pixel));
l1 = mix(center_pixel, l1, brighter(l1, center_pixel));
r1 = mix(center_pixel, r1, brighter(r1, center_pixel));
r2 = mix(center_pixel, r2, brighter(r2, center_pixel));
r3 = mix(center_pixel, r3, brighter(r3, center_pixel));
l3=pow(l3,glow_gamma_vec3); l2=pow(l2,glow_gamma_vec3); l1=pow(l1,glow_gamma_vec3);
r1=pow(r1,glow_gamma_vec3); r2=pow(r2,glow_gamma_vec3); r3=pow(r3,glow_gamma_vec3);
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 = mix(center_pixel, l3, brighter(l3, center_pixel));
l2 = mix(center_pixel, l2, brighter(l2, center_pixel));
l1 = mix(center_pixel, l1, brighter(l1, center_pixel));
r1 = mix(center_pixel, r1, brighter(r1, center_pixel));
r2 = mix(center_pixel, r2, brighter(r2, center_pixel));
r3 = mix(center_pixel, r3, brighter(r3, center_pixel));
l3=pow(l3,glow_gamma_vec3); l2=pow(l2,glow_gamma_vec3); l1=pow(l1,glow_gamma_vec3);
r1=pow(r1,glow_gamma_vec3); r2=pow(r2,glow_gamma_vec3); r3=pow(r3,glow_gamma_vec3);
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);
}
*/
@ -49,6 +174,7 @@ vec4 pixel_glow_std_pow(sampler2D in_texture, float my_glowpix, float my_glowpix
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(l3,glow_gamma_vec3); l2=pow(l2,glow_gamma_vec3); l1=pow(l1,glow_gamma_vec3);
r1=pow(r1,glow_gamma_vec3); r2=pow(r2,glow_gamma_vec3); r3=pow(r3,glow_gamma_vec3);
@ -60,6 +186,7 @@ vec4 pixel_glow_std_pow(sampler2D in_texture, float my_glowpix, float my_glowpix
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(l3,glow_gamma_vec3); l2=pow(l2,glow_gamma_vec3); l1=pow(l1,glow_gamma_vec3);
r1=pow(r1,glow_gamma_vec3); r2=pow(r2,glow_gamma_vec3); r3=pow(r3,glow_gamma_vec3);
@ -71,6 +198,7 @@ vec4 pixel_glow_std_pow(sampler2D in_texture, float my_glowpix, float my_glowpix
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(l3,glow_gamma_vec3); l2=pow(l2,glow_gamma_vec3); l1=pow(l1,glow_gamma_vec3);
r1=pow(r1,glow_gamma_vec3); r2=pow(r2,glow_gamma_vec3); r3=pow(r3,glow_gamma_vec3);
@ -82,6 +210,7 @@ vec4 pixel_glow_std_pow(sampler2D in_texture, float my_glowpix, float my_glowpix
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(l3,glow_gamma_vec3); l2=pow(l2,glow_gamma_vec3); l1=pow(l1,glow_gamma_vec3);
r1=pow(r1,glow_gamma_vec3); r2=pow(r2,glow_gamma_vec3); r3=pow(r3,glow_gamma_vec3);
@ -99,16 +228,21 @@ vec4 pixel_glow_std_pow(sampler2D in_texture, float my_glowpix, float my_glowpix
return vec4(Bloom*my_glow,1.0);
}
vec4 dumb_glow(sampler2D in_texture, float my_glow, float glow_gamma, vec2 coords) {
/*vec4 dumb_glow(sampler2D in_texture, float my_glow, float glow_gamma, vec2 coords) {
vec3 pixel_in = texture(in_texture, coords ).rgb;
pixel_in = pow(pixel_in,vec3(glow_gamma))*my_glow;
return vec4(pixel_in,0.0);
}
*/
vec4 pixel_glow(sampler2D in_texture, float my_glowpix, float my_glowpixy, float my_glow, float glow_gamma, vec2 coords, vec4 SourceSize1, vec4 SourceSize2) {
if ( (my_glowpix >= GLOW_SHARP_MAX) && (my_glowpixy >= GLOW_SHARP_MAX) ) {
return dumb_glow(in_texture, my_glow,glow_gamma,coords);
}

View File

@ -1,59 +0,0 @@
vec3 pow_2(vec3 v) {
return v*v*v;
}
vec3 pow_3(vec3 v) {
return v*v*v;
}
vec3 pow_4(vec3 v) {
vec3 v2 = v*v;
return v2*v2;
}
vec3 pow_5(vec3 v) {
vec3 v2 = v*v;
return v2*v2*v;
}
vec3 pow_6(vec3 v) {
vec3 v2 = v*v;
return v2*v2*v2;
}
vec3 pow_7(vec3 v) {
vec3 v2 = v*v;
return v2*v2*v2*v;
}
vec3 pow_8(vec3 v) {
vec3 v2 = v*v;
vec3 v4 = v2*v2;
return v4*v4;
}
vec3 pow_9(vec3 v) {
vec3 v2 = v*v;
vec3 v4 = v2*v2;
return v4*v4*v;
}
vec3 pow_10(vec3 v) {
vec3 v2 = v*v;
vec3 v4 = v2*v2;
return v4*v4*v2;
}
vec3 my_pow(vec3 c,float p) {
if (p == 1) return c;
else if (p == 2) return c * c ;
else if (p == 3) return pow_3(c);
else if (p == 4) return pow_4(c);
else if (p == 5) return pow_5(c);
else if (p == 6) return pow_6(c);
else if (p == 7) return pow_7(c);
else if (p == 8) return pow_8(c);
else if (p == 9) return pow_9(c);
else if (p == 10) return pow_10(c);
return pow(c,vec3(p));
}

View File

@ -1,33 +0,0 @@
#version 450
#include "config.inc"
#pragma stage vertex
layout(location = 0) in vec4 Position;
layout(location = 1) in vec2 TexCoord;
layout(location = 0) out vec2 vTexCoord;
layout(location = 1) out float mark_color_rotated;
#include "includes/functions.include.slang"
void main()
{
gl_Position = global.MVP * Position;
vTexCoord = TexCoord;
if (is_rotated())
mark_color_rotated = 1.0;
else
mark_color_rotated = 0.0;
}
#pragma stage fragment
layout(location = 0) in vec2 vTexCoord;
layout(location = 1) in float mark_color_rotated;
layout(location = 0) out vec4 FragColor;
layout(set = 0, binding = 2) uniform sampler2D Source;
void main() {
FragColor.r = mark_color_rotated;
}

View File

@ -0,0 +1,237 @@
#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 = 1) out vec3 vTemperature_rgb;
layout(location = 0) out vec2 vTexCoord;
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"
vec3 kelvin2rgb(float k) {
//Convert kelvin temperature to rgb factors
k = clamp(k,1000,40000);
k=k/100.0;
float tmpCalc;
vec3 pixel_out;
if (k<=66) {
pixel_out.r = 255;
pixel_out.g = 99.47080258612 * log(k) - 161.11956816610;
} else {
pixel_out.r = 329.6987274461 * pow(k - 60 ,-0.13320475922);
pixel_out.g = 288.12216952833 * pow(k-60, -0.07551484921);
}
if (k >= 66)
pixel_out.b = 255;
else if (k<=19)
pixel_out.b = 0;
else
pixel_out.b = 138.51773122311 * log(k - 10) - 305.04479273072;
return pixel_out/255.0;
}
/* hann() sinc() functions by xot:
* copyright (c) 2017-2018, John Leffingwell
* license CC BY-SA Attribution-ShareAlike
* ntscdec() function, same license and attribution,
* slightly modified by me.
* https://www.shadertoy.com/view/Mdffz7
*/
float hann(float n, float N) {
return 0.5 * (1.0 - cos((TAU*n)/(N-1.0))) ;
}
float sinc(float x) {
//if (x == 0.0) return 1.0;
x = x + eps;
return sin(pi*x) / (pi*x);
}
void main() {
gl_Position = global.MVP * Position;
vTexCoord = TexCoord * 1.0001;
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;
}
}
if (TEMPERATURE != 6500)
vTemperature_rgb = kelvin2rgb(TEMPERATURE);
}
#pragma stage fragment
#include "includes/functions.include.slang"
layout(location = 0) in vec2 vTexCoord;
layout(location = 1) in vec3 vTemperature_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;
// 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);
#define eps10 1.0e-10
vec3 rgb2hsv(vec3 c){
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
float d = q.x - min(q.w, q.y);
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + eps10)), d / (q.x + eps10), q.x);
}
#define pi10 pi*10
#define PHASE_SHIFT_FOR_BLUR_K pi/3
vec4 ntscdec(vec2 uv) {
vec2 size = params.SourceSize.xy;
// Sample composite signal and decode to YIQ
vec3 YIQ_processed = vec3(0.0);
vec3 YIQ_processed_shifted = vec3(0.0);
//by doing another ntsc filtering with this histed phase, we're able to better identify
//artifacts that will drive the blur modulation.
float phase_shift_for_blur;
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);
float phase_shift_for_blur = phase + PHASE_SHIFT_FOR_BLUR_K;
phase += ( pos.y * -pi10 ) * (NTSC_PHASE_SHIFT);
//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];
YIQ_processed_shifted += vec3(1.0, cos(phase_shift_for_blur), sin(phase_shift_for_blur)) * smp * vNTSC_weights[n];
}
vec3 RGB_ori = texture(Source, uv).rgb;
vec3 YIQ_ori = RGB_ori * RGB2YIQ;
vec3 YIQ_result = vec3(YIQ_ori.x, YIQ_ori.yz + YIQ_processed.yz * NTSC_MIX);
float artifacts_mask = abs(YIQ_processed.y) + abs(YIQ_processed.z) +
abs(YIQ_processed_shifted.y) + abs(YIQ_processed_shifted.z);
return vec4(YIQ_result * YIQ2RGB, artifacts_mask);
}
#define W vec3(0.2125, 0.7154, 0.0721)
vec3 color_tools(vec3 pixel_out) {
//Apply color corrections to input signal.
//Push luminance without clipping
pixel_out = pixel_push_luminance(pixel_out,LUMINANCE);
//Modify saturation
if (!(SATURATION == 1.0)) {
vec3 intensity = vec3(dot(pixel_out.rgb, W));
pixel_out.rgb = mix(intensity, pixel_out.rgb, SATURATION);
}
//Modify contrast and brightness
if (CONTRAST != 0.0 || BRIGHTNESS != 0.0)
pixel_out.rgb = scale_to_range_vec3(pixel_out.rgb, -CONTRAST, 1+CONTRAST) + BRIGHTNESS;
//Modify color temperature
if (TEMPERATURE != 6500.0) pixel_out.rgb = pixel_out.rgb * vTemperature_rgb;
return pixel_out;
}
vec3 debug() {
vec3 pixel_debug;
float blink_time = 120;
vec2 center = vTexCoord - vec2(0.5,0.5);
float radius = 0.1;
pixel_debug = vec3(1 - step(radius, length(center)));
pixel_debug *= float((mod(params.FrameCount,blink_time*2) < blink_time));
return pixel_debug;
}
void main() {
//FragColor = vec4(debug(), 1.0); return;
//This will go into alpha channel to make glow aware of it and blur more.
//It could be configurable.
float artifacts = 0.0;
vec3 pixel_out;
if (DO_NTSC_ARTIFACTS > 0.5) {
vec3 pixel_source = texture(Source, vTexCoord).rgb;
vec4 pixel_out_vec4 = ntscdec(vTexCoord);
pixel_out = pixel_out_vec4.rgb;
artifacts = pixel_out_vec4.a;
/*
//artifacts = pow(artifacts, IN_GLOW_NTSC_ARTF_TRSH * 8.0);
artifacts = artifacts * IN_GLOW_NTSC_ARTF_MULT;
artifacts = smoothstep(IN_GLOW_NTSC_ARTF_TRSH, 1.0, artifacts);
//artifacts = min(artifacts, 1.0); //<- useless since clamp happens if not uising float framebuffer.
*/
} else {
pixel_out = texture(Source, vTexCoord).rgb;
}
if (DO_CCORRECTION == 1.0)
pixel_out = color_tools(pixel_out);
FragColor = vec4(pixel_out, artifacts);
// FragColor = vec4(artifacts);
}

View File

@ -1,138 +0,0 @@
#version 450
#include "config.inc"
#define eps 1e-8
#pragma stage vertex
layout(location = 0) in vec4 Position;
layout(location = 1) in vec2 TexCoord;
layout(location = 0) out vec2 vTexCoord;
layout(location = 1) out vec2 vTexCoord_zoom;
#include "functions.include.slang"
void main()
{
gl_Position = global.MVP * Position;
vTexCoord = TexCoord;
vTexCoord_zoom = TexCoord;
if (DO_BEZEL==1.0 && BEZEL_INNER_ZOOM !=0.0) vTexCoord_zoom = zoomout_coords(TexCoord, -BEZEL_INNER_ZOOM , 1.0);
}
#pragma stage fragment
layout(location = 0) in vec2 vTexCoord;
layout(location = 1) in vec2 vTexCoord_zoom;
layout(location = 0) out vec4 FragColor;
layout(set = 0, binding = 2) uniform sampler2D Original;
layout(set = 0, binding = 3) uniform sampler2D main_pass;
layout(set = 0, binding = 4) uniform sampler2D isrotated_pass;
bool border_updown(){
//Return if black bars are up and down or left and right.
//Why this one work?
return ((params.OriginalSize.x > params.OriginalSize.y) && (global.main_passSize.x < global.main_passSize.y )) ||
(params.OriginalSize.x < params.OriginalSize.y) && (global.main_passSize.x > global.main_passSize.y ) ;
}
vec3 main_wrap(){
float myborder = 0.025; //20% border to be displaced
vec2 newcoords = vTexCoord_zoom;
vec3 pixel_out;
float mydiv;
float myoffset;
if (!border_updown()) {
mydiv = vTexCoord.x / myborder;
myoffset = (1.0-myborder) * floor(mydiv);
if (vTexCoord.x < 0.5)
newcoords.x = newcoords.x - ( myborder * floor(mydiv) ) ;
else
newcoords.x = (1 - myborder) + ( newcoords.x - (myborder*floor(mydiv)) ) ;
return texture(Original, newcoords).rgb;
}
//Is rotated
mydiv = vTexCoord.y / myborder;
myoffset = (1.0-myborder) * floor(mydiv);
if (vTexCoord.y < 0.5)
newcoords.y = newcoords.y - ( myborder * floor(mydiv) ) ;
else
newcoords.y = (1 - myborder) + ( newcoords.y - (myborder*floor(mydiv)) ) ;
return texture(Original, newcoords).rgb;
}
#include "functions.include.slang"
float mborder(vec2 coord,float aspect,float corner_size, float corner_smooth) {
coord = (coord - vec2(0.5)) + vec2(0.5, 0.5);
coord = min(coord, vec2(1.0) - coord) * aspect;
vec2 cdist = vec2(corner_size);
coord = (cdist - min(coord, cdist));
float dist = sqrt(dot(coord, coord));
return clamp((cdist.x - dist)*corner_smooth, 0.0, 1.0);
}
vec2 bget_scaled_coords(vec2 pTexCoord, vec4 destsize){
if (!border_needed()) return pTexCoord;
//else
float scale_x = 1.0;
float scale_y = 1.0;
float offset_x = 0.0 ;
float offset_y = 0.0 ;
float in_aspect = get_in_aspect();
if (is_rotated()) {
//scale_y = params.OutputSize.y/(params.OutputSize.x / in_aspect );
//scale_y = global.FinalViewportSize.y/(global.FinalViewportSize.x / in_aspect );
scale_y = destsize.y/(destsize.x / in_aspect );
offset_y = (0.5 * scale_y ) - 0.5 ;
} else {
//scale_x = params.OutputSize.x/(params.OutputSize.y * in_aspect);
//scale_x = global.FinalViewportSize.x/(global.FinalViewportSize.y * in_aspect);
scale_x = destsize.x/(destsize.y * in_aspect);
offset_x = (0.5 * scale_x ) - 0.5 ;
}
vec2 scale_coord=vec2(pTexCoord.x*scale_x - offset_x , pTexCoord.y*scale_y - offset_y);
return scale_coord;
}
void main() {
if (DO_AMBILIGHT != 1.0) return;
//bool is_rotated = texture(isrotated_pass,vec2(0.5,0.5)).r > 0.5;
//Disegna un rettangolo sul gioco.
//samplo main_pass per riferimento.
vec4 pixel_Original = texture(Original,vTexCoord);
FragColor = pixel_Original;
/*
float dist = 1-length(vTexCoord-0.5);
FragColor = vec4(main_wrap(),1.0);
float corner_size = 0.25;
float corner_smooth = 4.0;
float zoom = 0.4;
vec2 co = get_scaled_coords(zoomout_coords(vTexCoord, -zoom , 1.0),global.FinalViewportSize);
float ss=pow(mborder(co,1.0,corner_size, corner_smooth),2.0);
//ss = ss * smoothstep(shade_end,shade_start, vTexCoord.x);
FragColor = vec4(ss);
vec2 ccords = get_scaled_coords(vTexCoord,global.FinalViewportSize);
ccords = zoomout_coords(ccords,-BEZEL_INNER_ZOOM,1.0);
//FragColor = texture(Original,ccords)*ss;
*/
}

View File

@ -1,61 +0,0 @@
#version 450
#include "config.inc"
#define eps 1e-8
#pragma stage vertex
layout(location = 0) in vec4 Position;
layout(location = 1) in vec2 TexCoord;
layout(location = 0) out vec2 vTexCoord;
layout(location = 1) out vec2 vOutputCoord;
#include "functions.include"
void main() {
gl_Position = global.MVP * Position;
vTexCoord = get_scaled_coords(TexCoord);
vOutputCoord = TexCoord;
}
#pragma stage fragment
layout(location = 0) in vec2 vTexCoord;
layout(location = 1) in vec2 vOutputCoord;
layout(location = 0) out vec4 FragColor;
layout(set = 0, binding = 2) uniform sampler2D final_pass;
layout(set = 0, binding = 4) uniform sampler2D ambi_temporal_pass;
#include "functions.include"
vec4 pixel_border() {
vec3 ambi = texture(ambi_temporal_pass, vOutputCoord).rgb;
float l = length(ambi);
float sat = 1.25;
float bright = 1.25;
ambi = normalize( pow(ambi.rgb + vec3(eps), vec3(sat)))*l * bright ;
ambi*=bright;
return vec4(ambi,0.0);
}
vec3 ambi_noised() {
return pixel_border().rgb + random();
}
void main() {
vec4 psample = texture(final_pass, vOutputCoord);
if (DO_AMBILIGHT == 1) {
vec3 ambinoised = ambi_noised();
if (is_outer_frame(psample)) {
FragColor = mark_outer_frame(ambi_noised());
} else {
FragColor = vec4(mix(ambinoised.rgb,psample.rgb,min(psample.a*1.5,1.0)),psample.a);
}
} else {
FragColor = psample ;
}
//FragColor = vec4(ambi_noised(), 1.0);
}

View File

@ -1,28 +0,0 @@
#version 450
#include "config.inc"
#pragma stage vertex
layout(location = 0) in vec4 Position;
layout(location = 1) in vec2 TexCoord;
layout(location = 0) out vec2 vTexCoord;
void main()
{
gl_Position = global.MVP * Position;
vTexCoord = TexCoord;
}
#pragma stage fragment
layout(location = 0) in vec2 vTexCoord;
layout(location = 0) out vec4 FragColor;
layout(set = 0, binding = 2) uniform sampler2D Source;
void main() {
if (DO_AMBILIGHT == 1.0)
FragColor = texture(Source, vTexCoord);
else
return;
}

View File

@ -1,36 +0,0 @@
#version 450
#include "config.inc"
#pragma stage vertex
layout(location = 0) in vec4 Position;
layout(location = 1) in vec2 TexCoord;
layout(location = 0) out vec2 vTexCoord;
void main()
{
gl_Position = global.MVP * Position;
vTexCoord = TexCoord;
}
#pragma stage fragment
layout(location = 0) in vec2 vTexCoord;
layout(location = 0) out vec4 FragColor;
layout(set = 0, binding = 2) uniform sampler2D main_pass;
void main() {
vec2 coords = vTexCoord;
if (DO_BLOOM == 1) {
if (DO_CURVATURE == 1.0) {
if ((GEOM_WARP_X > 0.0) || (GEOM_WARP_Y > 0.0))
coords = Warp(vTexCoord,GEOM_WARP_X,GEOM_WARP_Y);
}
FragColor = texture(main_pass,coords);
return;
} else {
//No bloom requested
return;
}
}

View File

@ -1,12 +0,0 @@
vec4 blur9(sampler2D image, vec2 uv, vec2 resolution, vec2 direction, float lod) {
vec4 color = vec4(0.0);
vec2 off1 = vec2(1.3846153846) * direction;
vec2 off2 = vec2(3.2307692308) * direction;
color += textureLod(image, uv, lod) * 0.2270270270;
color += textureLod(image, uv + (off1 / resolution), lod) * 0.3162162162;
color += textureLod(image, uv - (off1 / resolution), lod) * 0.3162162162;
color += textureLod(image, uv + (off2 / resolution), lod) * 0.0702702703;
color += textureLod(image, uv - (off2 / resolution), lod) * 0.0702702703;
return color;
}

View File

@ -1,226 +0,0 @@
#version 450
#include "config.inc"
/*
CRT Shader by EasyMode
License: GPL
Modified by kokoko3k, stripped to keep just curvature related code.
*/
#define FIX(c) max(abs(c), 1e-5)
#define PI 3.141592653589
#define TEX2D(c) texture(tex, c)
#define in_texture final_pass
#define in_textureSize final_passSize
//#define in_textureSize SourceSize
#pragma stage vertex
layout(location = 0) in vec4 Position;
layout(location = 1) in vec2 TexCoord;
layout(location = 0) out vec2 vTexCoord;
layout(location = 1) out vec2 vOutputCoord;
#include "functions.include"
void main() {
gl_Position = global.MVP * Position;
vTexCoord = get_scaled_coords(TexCoord);
vOutputCoord = TexCoord;
}
#pragma stage fragment
layout(location = 0) in vec2 vTexCoord;
layout(location = 1) in vec2 vOutputCoord;
layout(location = 0) out vec4 FragColor;
layout(set = 0, binding = 2) uniform sampler2D in_texture;
float curve_distance(float x, float sharp)
{
float x_step = step(0.5, x);
float curve = 0.5 - sqrt(0.25 - (x - x_step) * (x - x_step)) * sign(0.5 - x);
return mix(x, curve, sharp);
}
mat4x4 get_color_matrix(sampler2D tex, vec2 co, vec2 dx)
{
return mat4x4(TEX2D(co - dx), TEX2D(co), TEX2D(co + dx), TEX2D(co + 2.0 * dx));
}
vec4 filter_lanczos(vec4 coeffs, mat4x4 color_matrix)
{
vec4 col = color_matrix * coeffs;
vec4 sample_min = min(color_matrix[1], color_matrix[2]);
vec4 sample_max = max(color_matrix[1], color_matrix[2]);
col = clamp(col, sample_min, sample_max);
return col;
}
vec2 curve_coordinate(vec2 co, float curvature_x, float curvature_y)
{
vec2 curve = vec2(curvature_x, curvature_y);
vec2 co2 = co + co * curve - curve / 2.0;
vec2 co_weight = vec2(co.y, co.x) * 2.0 - 1.0;
co = mix(co, co2, co_weight * co_weight);
return co;
}
float get_corner_weight(vec2 co, vec2 corner, float smoothfunc)
{
float corner_weight;
co = min(co, vec2(1.0) - co) * vec2(1.0, 0.75);
co = (corner - min(co, corner));
corner_weight = clamp((corner.x - sqrt(dot(co, co))) * smoothfunc, 0.0, 1.0);
corner_weight = mix(1.0, corner_weight, ceil(corner.x));
return corner_weight;
}
#define GEOM_ANTIALIAS 1.0
vec3 curve_antialias(vec2 xy,vec2 tex_size){
vec2 midpoint = vec2(0.5, 0.5);
vec2 co = vOutputCoord * tex_size * params.in_textureSize.zw;
vec2 co2 = vTexCoord * tex_size * params.in_textureSize.zw;
vec3 col;
float corner_weight = get_corner_weight(curve_coordinate(co2, GEOM_BORDER_WX, GEOM_BORDER_WY ), vec2(GEOM_CORNER_SIZE), GEOM_CORNER_SMOOTH);
if ( (GEOM_WARP_X > 0) || (GEOM_WARP_Y > 0) ) {
xy *= params.in_textureSize.xy / tex_size;
vec2 dx = vec2(1.0 / tex_size.x, 0.0);
vec2 dy = vec2(0.0, 1.0 / tex_size.y);
vec2 pix_co = xy * tex_size - midpoint;
vec2 tex_co = (floor(pix_co) + midpoint) / tex_size;
vec2 dist = fract(pix_co);
float curve_x, curve_y;
vec3 col2, diff;
curve_x = curve_distance(dist.x, SHARPNESS_H * SHARPNESS_H);
curve_y = curve_distance(dist.y, SHARPNESS_V * SHARPNESS_V);
vec4 coeffs_x = PI * vec4(1.0 + curve_x, curve_x, 1.0 - curve_x, 2.0 - curve_x);
vec4 coeffs_y = PI * vec4(1.0 + curve_y, curve_y, 1.0 - curve_y, 2.0 - curve_y);
coeffs_x = FIX(coeffs_x);
coeffs_x = 2.0 * sin(coeffs_x) * sin(coeffs_x / 2.0) / (coeffs_x * coeffs_x);
coeffs_x /= dot(coeffs_x, vec4(1.0));
coeffs_y = FIX(coeffs_y);
coeffs_y = 2.0 * sin(coeffs_y) * sin(coeffs_y / 2.0) / (coeffs_y * coeffs_y);
coeffs_y /= dot(coeffs_y, vec4(1.0));
mat4x4 color_matrix;
color_matrix[0] = filter_lanczos(coeffs_x, get_color_matrix(in_texture, tex_co - dy, dx));
color_matrix[1] = filter_lanczos(coeffs_x, get_color_matrix(in_texture, tex_co, dx));
color_matrix[2] = filter_lanczos(coeffs_x, get_color_matrix(in_texture, tex_co + dy, dx));
color_matrix[3] = filter_lanczos(coeffs_x, get_color_matrix(in_texture, tex_co + 2.0 * dy, dx));
col = filter_lanczos(coeffs_y, color_matrix).rgb;
} else {
col = texture(in_texture, vOutputCoord).rgb;
}
col *= vec3(corner_weight);
return col;
}
vec2 Warp2(vec2 texCoord){
vec2 curvedCoords = texCoord * 2.0 - 1.0;
vec2 CRT_Distortion = vec2(GEOM_WARP_X, GEOM_WARP_Y) * 15.;
float curvedCoordsDistance = sqrt(curvedCoords.x*curvedCoords.x+curvedCoords.y*curvedCoords.y);
curvedCoords = curvedCoords / curvedCoordsDistance;
curvedCoords = curvedCoords * (1.0-pow(vec2(1.0-(curvedCoordsDistance/1.4142135623730950488016887242097)),(1.0/(1.0+CRT_Distortion*0.2))));
curvedCoords = curvedCoords / (1.0-pow(vec2(0.29289321881345247559915563789515),(1.0/(vec2(1.0)+CRT_Distortion*0.2))));
curvedCoords = curvedCoords * 0.5 + 0.5;
return curvedCoords;
}
vec3 do_curvature_antialias(){
vec2 tex_size = params.in_textureSize.xy ;
vec2 co = vOutputCoord * tex_size * params.in_textureSize.zw;
vec2 co2 = vTexCoord * tex_size * params.in_textureSize.zw;
vec2 curved_xy = curve_coordinate(co, GEOM_WARP_X,GEOM_WARP_Y );
vec3 col;
//float corner_weight = get_corner_weight(curve_coordinate(co2, GEOM_BORDER_WX, GEOM_BORDER_WY ), vec2(GEOM_CORNER_SIZE), GEOM_CORNER_SMOOTH);
float corner_weight = get_corner_weight(Warp2(co), vec2(GEOM_CORNER_SIZE), GEOM_CORNER_SMOOTH);
if ( (GEOM_WARP_X > 0) || (GEOM_WARP_Y > 0) ) {
if (GEOM_ANTIALIAS == 1.0)
col = curve_antialias(curved_xy,tex_size);
else
col = texture(in_texture,curved_xy).rgb;
} else {
col = texture(in_texture, vOutputCoord).rgb;
}
col *= vec3(corner_weight) ;
return col;
}
const vec2 corner_aspect = vec2(1.0, 0.75);
float corner2(vec2 coord)
{
coord = (coord - vec2(0.5)) + vec2(0.5, 0.5);
coord = min(coord, vec2(1.0) - coord) * corner_aspect;
vec2 cdist = vec2(GEOM_CORNER_SIZE);
coord = (cdist - min(coord, cdist));
float dist = sqrt(dot(coord, coord));
return clamp((cdist.x - dist)*GEOM_CORNER_SMOOTH, 0.0, 1.0);
}
vec3 do_curvature_alias(){
vec2 curved_xy = Warp2(vOutputCoord);
return texture(in_texture,curved_xy ).rgb * corner2(curved_xy);
}
vec4 main_wrap()
{
if (DO_CURVATURE == 1.0) {
return vec4(do_curvature_antialias(), 1.0);
} else {
return texture(in_texture, vOutputCoord);
}
}
#include "functions.include"
void main() {
vec4 psample = texture(in_texture, vOutputCoord);
if ( border_needed() ) {
if (is_outer_frame(psample))
FragColor = mark_outer_frame(vec3(0.0));
else
FragColor = main_wrap();
} else {
FragColor = main_wrap();
}
}

View File

@ -1,68 +0,0 @@
#version 450
#include "config.inc"
#define eps 1e-8
#define pi 3.141592654
// Blur sizes must not depend on input resolution
#define scalemod_x (params.SourceSize.x/360.0)
#define scalemod_y (params.SourceSize.y/270.0)
#pragma stage vertex
layout(location = 0) in vec4 Position;
layout(location = 1) in vec2 TexCoord;
layout(location = 0) out vec2 vTexCoord;
layout(location = 1) out vec2 vOutputCoord;
#include "functions.include"
void main() {
gl_Position = global.MVP * Position;
vTexCoord = TexCoord ; //get_scaled_coords(TexCoord);
vOutputCoord = TexCoord;
}
#pragma stage fragment
layout(location = 0) in vec2 vTexCoord;
layout(location = 1) in vec2 vOutputCoord;
layout(location = 0) out vec4 FragColor;
layout(set = 0, binding = 2) uniform sampler2D FXAA_pass;
layout(set = 0, binding = 3) uniform sampler2D doublesize_pass;
// What follows is an ugly optimization with a lot of code copied and pasted repeated multiple times,
// shamlessly hidden into an include:
#include "pixel_glows.slang"
#include "functions.include"
vec4 main_wrap(void) {
//Halo
vec2 in_glow_coords = vTexCoord;
if (DO_CURVATURE == 1.0) {
if ((GEOM_WARP_X > 0.0) || (GEOM_WARP_Y > 0.0))
in_glow_coords = Warp(vTexCoord,GEOM_WARP_X,GEOM_WARP_Y);
}
vec3 pixel_glowed;
if (DO_FXAA == 1.0)
pixel_glowed = pixel_glow(FXAA_pass, in_glow_wh,in_glow_wh,in_glow_power,in_glow_gamma,in_glow_coords, global.FXAA_passSize, global.FXAA_passSize).rgb;
else
pixel_glowed = pixel_glow(doublesize_pass, in_glow_wh,in_glow_wh,in_glow_power,in_glow_gamma,in_glow_coords, global.FXAA_passSize, global.FXAA_passSize).rgb;
return vec4(pixel_glowed.rgb,1.0);
//Out
return vec4(vec3(0.0),1.0);
}
void main() {
if (DO_IN_GLOW == 1.0 ) {
FragColor = main_wrap();
} else {
return;
}
}

View File

@ -1,323 +0,0 @@
#version 450
#include "config.inc"
#define half_pi 1.5707963267949
// RGB mask: R G B
#define m1 vec3 ( 1.0 , 0.0 , 0.0 ) //col 1
#define m2 vec3 ( 0.0 , 1.0 , 0.0 ) //col 2
#define m3 vec3 ( 0.0 , 0.0 , 1.0 ) //col 3
// RGB mask low dpi (green-magenta, exploiting native rgb subpixels)
#define m1gm vec3 ( 0.0 , 1.0 , 0.0 ) //col 1
#define m2gm vec3 ( 1.0 , 0.0 , 1.0 ) //col 2
// Blur sizes must not depend on input resolution
#define scalemod_x (global.in_glow_passSize.x/360.0)
#define scalemod_y (global.in_glow_passSize.y/270.0)
#pragma stage vertex
layout(location = 0) in vec4 Position;
layout(location = 1) in vec2 TexCoord;
layout(location = 0) out vec2 vTexCoord;
layout(location = 1) out vec2 vOutputCoord;
#include "includes/functions.include.slang"
void main() {
gl_Position = global.MVP * Position;
vTexCoord = get_scaled_coords(TexCoord,global.FinalViewportSize, is_rotated());
vOutputCoord = TexCoord;
}
#pragma stage fragment
layout(location = 0) in vec2 vTexCoord;
layout(location = 1) in vec2 vOutputCoord;
layout(location = 0) out vec4 FragColor;
layout(set = 0, binding = 3) uniform sampler2D FXAA_pass;
layout(set = 0, binding = 4) uniform sampler2D in_glow_pass;
layout(set = 0, binding = 5) uniform sampler2D halo_pass;
layout(set = 0, binding = 6) uniform sampler2D first_pass;
layout(set = 0, binding = 7) uniform sampler2D avglum_passFeedback;
#include "includes/functions.include.slang"
vec3 pixel_vmask(vec3 source, vec3 white_reference, float over_white) {
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 ;
float mask_lightness = 1.0 - RGB_MASK_STRENGTH;
if ( mod(col, vec_mod.x) < vec_mod.y) vmasked = min(m1 + mask_lightness,vec3(1.0)) * source;
else if (mod(col, vec_mod.x) < vec_mod.z) vmasked = min(m2 + mask_lightness,vec3(1.0)) * source;
else if (mod(col, vec_mod.x) < vec_mod.w) vmasked = min(m3 + mask_lightness,vec3(1.0)) * source;
else vmasked = min(vec3(0.0) + mask_lightness,vec3(1.0)) * source;
if (over_white == 1.0) pixel_out = vmasked;
else {
float whiteness=(white_reference.r+white_reference.g+white_reference.b)/3.0;
whiteness-= over_white;
whiteness= clamp(whiteness,0.0,1.0);
pixel_out= mix(vmasked,source,whiteness);
}
return pixel_out;
}
vec3 pixel_vmask_gm(vec3 source, vec3 white_reference, float over_white) {
int col = int( vOutputCoord.x * 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 ;
float mask_lightness = 1.0 - RGB_MASK_STRENGTH;
if (mod(col, vec_mod.x) < vec_mod.y) vmasked = min(m1gm + mask_lightness,vec3(1.0)) * source;
else if (mod(col, vec_mod.x) < vec_mod.z) vmasked = min(m2gm + mask_lightness,vec3(1.0)) * source;
else vmasked = min(vec3(0.0) + mask_lightness,vec3(1.0)) * source;
if (over_white == 1.0) pixel_out = vmasked;
else {
float whiteness=(white_reference.r+white_reference.g+white_reference.b)/3.0;
whiteness-= over_white;
whiteness= clamp(whiteness,0.0,1.0);
pixel_out= mix(vmasked,source,whiteness);
}
return pixel_out;
}
vec3 pixel_darklines(vec3 source,float darkline_every, float darkline_trans,
float do_offset, vec3 white_reference,float over_white) {
float Darkline_part_w = (3.0 - VMASK_USE_GM + VMASK_GAP) * VMASK_DARKLINE_SCALE;
float Darkline_part_w_x2 = Darkline_part_w*2;
//vec3 pixel_out=source;
float col_2 = vOutputCoord.x * params.OutputSize.x;
float line_2 = vOutputCoord.y * params.OutputSize.y;
darkline_every *= VMASK_DARKLINE_SCALE;
if (over_white != 1.0) {
//less effect on bright colors.
float whiteness=(white_reference.r+white_reference.g+white_reference.b)/3.0;
darkline_trans+=(whiteness-over_white);
darkline_trans=clamp(darkline_trans,0.0,1.0);
}
if (do_offset == 1.0) {
if (int(mod(line_2, darkline_every)) < VMASK_DARKLINE_SCALE) {
if (int(mod(col_2, Darkline_part_w_x2)) < Darkline_part_w) return source * darkline_trans;
} else if (int(mod(line_2+(darkline_every/2), darkline_every)) < VMASK_DARKLINE_SCALE ) {
// DRAW WITH OFFSET:
col_2+=Darkline_part_w;
if ((int(mod(col_2, Darkline_part_w_x2))) < Darkline_part_w)
return source * darkline_trans;
}
} else {
if ( darkline_every >= 0.0)
if (int(mod(line_2, darkline_every)) < VMASK_DARKLINE_SCALE) return source * darkline_trans;
}
return source;
}
/*
float scanline_shape_static_in_lum(vec2 coords, float in_luminance) {
// Modulate scanline weight via in_luminance
float period = (params.OriginalSize.y > MIN_LINES_INTERLACED ) ? 2 : 1 ;
float angle = coords.y * pi * period * params.OriginalSize.y ;
float lines = abs(sin(angle));
lines=clamp(lines, SCANLINE_DARK,1.0);
lines = (lines*lines);
float w = (SCANLINES_BLEEDING * 9.0 * in_luminance +1 ); // + SCANLINES_BLEEDING;
lines = pow(lines,1.0/ w );
return lines;
}
*/
/*
float scanline_shape_dumb(vec2 coords, bool do_flicker) {
float source_dy = global.first_passSize.w ;
if ( mod(coords.y, source_dy*2) < source_dy ) {
return 1.0;
}
return 0.0;
}
*/
float scanline_shape(vec2 coords, bool do_flicker) {
bool alternate = false;
float period = 1.0;
int slow = 1;
if (do_flicker) {
if (params.FrameCount/slow % 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 lines;
if (alternate)
lines = -sin(angle+half_pi); //lines = abs(cos(angle));
else
lines = sin(angle);
lines = (lines*lines);
if (SCANLINE_DARK >= 0.0) {
lines = lines * (1.0 - SCANLINE_DARK) + SCANLINE_DARK;
} else {
float deepness = -SCANLINE_DARK;
lines = lines * ((1-SCANLINE_DARK) ) + SCANLINE_DARK ;
}
return lines;
}
vec4 main_wrap(vec2 co) {
bool isinterlaced = is_interlaced();
bool flickering_scanlines = (DO_SCANLINES == 1.0) && scanline_have_to_flicker(isinterlaced) ;
vec3 pixel_in;
vec3 pixel_glowed;
//Get the first available pixel_in:
if (DO_IN_GLOW == 1.0) {
pixel_glowed = texture(in_glow_pass,co).rgb;
pixel_in = pixel_glowed;
}
else if (DO_FXAA == 1.0)
pixel_in = texture(FXAA_pass,co).rgb ;
else
pixel_in = texture(first_pass,co).rgb ;
vec3 pixel_out = pixel_in;
vec3 pixel_in_clamped = min(pixel_in,vec3(1.0)); //Clamp here for moth vmask and darklines.
//Mask and darklines:
if (DO_VMASK_AND_DARKLINES == 1.0 ) {
if (RGB_MASK_STRENGTH > 0.0) {
//Use RGB pattern or exploit RGB layout with green and magenta?
if (VMASK_USE_GM < 1.0) {
pixel_out = pixel_vmask(pixel_in, pixel_in_clamped, VMASK_OVERWHITE);
} else {
pixel_out = pixel_vmask_gm(pixel_in, pixel_in_clamped, VMASK_OVERWHITE);
}
}
//Screen lines
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);
}
}
//Halo
vec3 pixel_haloed;
if (DO_HALO == 1.0 ) {
pixel_haloed = texture(halo_pass,co).rgb;
pixel_out += pixel_haloed;
pixel_out = clamp(pixel_out,0.0,HALO_CLAMP);
}
// Non flickering scanlines
if ( DO_SCANLINES == 1.0 ) {
vec3 pixel_bleed ;
if (! ( isinterlaced && (SCANLINE_DISABLE_ON_INTERLACE == 1.0)) ) {
if (DO_IN_GLOW + DO_HALO > 0.0) {
if (DO_HALO == 1.0) pixel_bleed = pixel_haloed;
else if (DO_IN_GLOW == 1.0) pixel_bleed = pixel_glowed;
else pixel_bleed = pixel_in;
}
float scanline_shape = scanline_shape(co, flickering_scanlines ) ;
vec3 pixel_scanlined = scanline_shape * pixel_out;
pixel_out = pixel_scanlined + (pixel_out * pixel_bleed * SCANLINES_BLEEDING * (1-scanline_shape));
}
}
if (DO_CCORRECTION == 1.0) pixel_out = pow(pixel_out,vec3(GAMMA_OUT));
//Out
return vec4(pixel_out,1.0) ; //* border(border_coords);
}
/*
//Test masks to be used with pixel_vmask_test()
// Actually slower than pixel_vmask(), but handy for quick test
//first element of the array is the useful size.
const vec3 oo = vec3(0); //padding
const vec3 mask_RGB[10] = vec3[]( vec3(3), vec3(1,0,0), vec3(0,1,0), vec3(0,0,1), oo, oo, oo, oo, oo, oo);
const vec3 mask_GM[10] = vec3[]( vec3(2), vec3(0,1,0), vec3(1,0,1), oo, oo, oo, oo, oo, oo, oo);
vec3 pixel_vmask_test(vec3 color_in, vec3[10] vmask, int multiplier, float gap, vec3 white_reference, float over_white) {
int col = int( vOutputCoord.x * params.OutputSize.x );
vec3 vmasked;
float size = (vmask[0].x + gap) * multiplier;
for (int i = multiplier ; i <= size * multiplier ; i+=multiplier) {
if (mod(col, size) < i) {
vmasked = min (vmask[i/multiplier] + 1.0 - RGB_MASK_STRENGTH, vec3(1.0)) * color_in;
break;
}
}
if (over_white == 1.0) return vmasked;
else {
float whiteness=(white_reference.r+white_reference.g+white_reference.b)/3.0;
whiteness-= over_white;
whiteness= clamp(whiteness,0.0,1.0);
return mix(vmasked, color_in, whiteness);
}
}
*/
void main() {
vec2 coords = vTexCoord;
if (DO_DYNZOOM == 1.0) {
float zoomin = 1.0 + (texture(avglum_passFeedback, vec2(0.25,0.25) ).a/ DYNZOOM_FACTOR);
coords = zoom(vTexCoord, zoomin);
}
vec2 coords_curved = coords;
//Curvature: set coords_curved coordinate: (global var)
if (DO_CURVATURE == 1.0) {
if ((GEOM_WARP_X > 0.0) || (GEOM_WARP_Y > 0.0))
coords_curved = Warp(coords_curved,GEOM_WARP_X,GEOM_WARP_Y);
}
if (DO_BEZEL == 1.0) {
coords_curved = zoomout_coords(coords_curved, -BEZEL_INNER_ZOOM , 1.0);
coords = zoomout_coords(coords, -BEZEL_INNER_ZOOM , 1.0);
}
//FIXME: bezel may need a wider border when zoomed in.
//But for performance reasons we can wide the border in relation to the desidered reflection area.
//by now, just wide by BEZEL_REFLECTION_AREA_SIZE defined in config.inc
bool is_border = false;
if (border_needed()) {
float WIDEN = DO_BEZEL * BEZEL_REFLECTION_AREA_SIZE;
bool b_is_rotated = is_rotated();
bool is_outside_x = ((coords.x > 1.0+WIDEN ) || (coords.x < 0.0 - WIDEN) );
bool is_outside_y = ((coords.y > 1.0+WIDEN ) || (coords.y < 0.0 - WIDEN) );
is_border = (b_is_rotated && is_outside_y) || (!b_is_rotated && is_outside_x);
}
if (is_border)
FragColor = mark_outer_frame(vec3(0.0));
else
FragColor = main_wrap(coords_curved);
}

View File

@ -1,25 +0,0 @@
#version 450
#include "config.inc"
#pragma stage vertex
layout(location = 0) in vec4 Position;
layout(location = 1) in vec2 TexCoord;
layout(location = 0) out vec2 vTexCoord;
void main()
{
gl_Position = global.MVP * Position;
vTexCoord = TexCoord;
}
#pragma stage fragment
layout(location = 0) in vec2 vTexCoord;
layout(location = 0) out vec4 FragColor;
layout(set = 0, binding = 2) uniform sampler2D Source;
void main() {
FragColor = texture(Source, vTexCoord);
}

View File

@ -1,36 +0,0 @@
#version 450
#include "config.inc"
#pragma stage vertex
layout(location = 0) in vec4 Position;
layout(location = 1) in vec2 TexCoord;
layout(location = 0) out vec2 vTexCoord;
void main()
{
gl_Position = global.MVP * Position;
vTexCoord = TexCoord;
}
#pragma stage fragment
layout(location = 0) in vec2 vTexCoord;
layout(location = 0) out vec4 FragColor;
layout(set = 0, binding = 2) uniform sampler2D Original;
void main() {
FragColor = vec4(texture(Original, vTexCoord).xyz,1.0);
/* //Use to debug:
vec4 pixel;
//pixel=vec4(abs(sin(params.FrameCount/3.14/20))); //white fade
//pixel=vec4(abs(sin(params.FrameCount/3.14/20)),0.0,0.0,0.0); //red fade
//pixel=vec4(0.2);
if (mod(params.FrameCount,100) == 0.0) {
pixel = vec4(0.6);
} else {
pixel = vec4(0.0);
}
FragColor = pixel;
*/
}

View File

@ -1,103 +0,0 @@
#version 450
#include "config.inc"
#pragma stage vertex
layout(location = 0) in vec4 Position;
layout(location = 1) in vec2 TexCoord;
layout(location = 0) out vec2 vTexCoord;
void main()
{
gl_Position = global.MVP * Position;
vTexCoord = TexCoord;
}
#pragma stage fragment
layout(location = 0) in vec2 vTexCoord;
layout(location = 0) out vec4 FragColor;
layout(set = 0, binding = 2) uniform sampler2D in_glow_pass;
layout(set = 0, binding = 3) uniform sampler2D FXAA_pass;
layout(set = 0, binding = 4) uniform sampler2D doublesize_pass;
bool scanline_have_to_flicker(bool is_interlaced) {
return ((scanline_flickering == 1.0) || ((scanline_flickering==2.0) && is_interlaced ));
}
void main()
{
vec3 pixel_out = vec3(0.0);
//Use to debug:
//pixel_out=vec4(abs(sin(params.FrameCount/3.14/20))); //white fade
//pixel_out=vec4(abs(sin(params.FrameCount/3.14/20)),0.0,0.0,0.0); //red fade
//pixel_out=vec4(0.2);
if (DO_SCANLINES == 1.0) {
if (scanline_flickering != 0.0) {
bool is_interlaced = (params.OriginalSize.y > MIN_LINES_INTERLACED) ? true : false ;
if ( scanline_have_to_flicker(is_interlaced) ) {
//Choose the right source
if (DO_IN_GLOW == 1.0) {
pixel_out = texture(in_glow_pass, vTexCoord).rgb;
} else if (DO_FXAA == 1.0) {
pixel_out = texture(FXAA_pass, vTexCoord).rgb;
} else {
pixel_out = texture(doublesize_pass, vTexCoord).rgb;
}
int scanline_period;
int scanline_period_half;
/* Puae switches from lowres to sdres on interlaced screens
since we blindly double the h-resolution, because we need
to double y resolution on low resolution to simulate scanlines
and providing sd-res to fxaa, we can check if a screen is
interlaced by testing v-resolution of source image.
which could be at least 200*2(puae)*2(ourselves)=800px.
Rest assured that everything over 576,
(maximum pal overscanned) is interlaced.
*/
if (is_interlaced) {
scanline_period=4;
scanline_period_half=2;
} else {
scanline_period=2;
scanline_period_half=1;
}
//Skip scanlines on interlaced content?
if (! ( is_interlaced && (scanline_disable_on_interlace == 1.0)) ) {
float mymod = mod(vTexCoord.y * params.OutputSize.y , scanline_period);
//Do flickering based on user prefs.
//(blank odd lines on odd frames and even lines on even frames)
if ((scanline_flickering == 1.0) ||
((scanline_flickering==2.0) && is_interlaced )) {
if (int(mod(float(params.FrameCount),2 )) < 1.0 ) {
if (mymod >= scanline_period_half) { pixel_out *= SCANLINE_DARK; }
} else {
if (mymod < scanline_period_half) { pixel_out *= SCANLINE_DARK; }
}
}
}
}
}
}
FragColor = vec4(pixel_out,1.0);
}

View File

@ -1,49 +0,0 @@
#version 450
#include "config.inc"
#pragma stage vertex
layout(location = 0) in vec4 Position;
layout(location = 1) in vec2 TexCoord;
layout(location = 0) out vec2 vTexCoord;
#include "functions.include"
void main()
{
gl_Position = global.MVP * Position;
vTexCoord = TexCoord;
float aspect_prev = (params.SourceSize.y / params.SourceSize.x);
if (border_needed() ) {
vTexCoord.x = vTexCoord.x * aspect_prev - ((0.5 * aspect_prev) - 0.5);
float in_aspect = get_in_aspect();
vTexCoord.x = vTexCoord.x * in_aspect - ((0.5 * in_aspect) - 0.5);
} else {
vTexCoord.x = vTexCoord.x * aspect_prev - ((0.5 * aspect_prev) - 0.5);
float dasp = global.FinalViewportSize.x/global.FinalViewportSize.y;
vTexCoord.x = (vTexCoord.x* dasp - ((0.5 * dasp) - 0.5)) ;
}
}
#pragma stage fragment
layout(location = 0) in vec2 vTexCoord;
layout(location = 0) out vec4 FragColor;
layout(set = 0, binding = 2) uniform sampler2D Source;
#include "functions.include"
void main() {
if ((DO_VIGNETTE != 1.0) && (DO_SPOT != 1.0)) return;
vec3 pixel_out;
if (DO_VIGNETTE == 1.0)
pixel_out.r = gauss_xy(0.0, 0.0, v_size, v_power, 0.0, 1.0);
if (DO_SPOT == 1.0)
pixel_out.g = gauss_xy(s_center_x, s_center_y, s_size, s_power, 0.0, 10.0);
FragColor = vec4(pixel_out,1.0);
}

View File

@ -1,115 +0,0 @@
#version 450
#include "config.inc"
#pragma stage vertex
layout(location = 0) in vec4 Position;
layout(location = 1) in vec2 TexCoord;
layout(location = 0) out vec2 vTexCoord;
#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
layout(location = 0) in vec2 vTexCoord;
layout(location = 0) out vec4 FragColor;
layout(set = 0, binding = 1) uniform sampler2D first_pass;
layout(set = 0, binding = 2) uniform sampler2D isrotated_passFeedback;
#define SourceTexture first_pass
#define SourceTextureSize global.first_passSize
#include "includes/functions.include.slang"
#define c_tolerance 0.051
#define b_offset_x -0.05
#define Pi2 6.28318530717959
vec3 blur(float Quality, float Directions, float Size, vec2 co,float lod) {
vec4 iResolution = SourceTextureSize;
vec2 Radius = Size/iResolution.xy ;
vec3 color = vec3(0.0,0.0,0.0);
vec3 lookup = vec3(0.0,0.0,0.0);
float steps=0.0;
for( float d=0.0; d<Pi2; d+=Pi2/Directions) {
for(float i=1.0/Quality; i<=1.0; i+=1.0/Quality) {
lookup = textureLod( SourceTexture, co + vec2(cos(d) + b_offset_x , sin(d))*Radius*i ,lod).rgb ;
color +=lookup.rgb;
steps+=1.0;
}
}
color /= steps;
if ( steps > 4.0) return vec3(1.0);
return color;
}
void main() {
if (DO_BEZEL == 0.0) return;
vec2 coords_curved = vTexCoord;
if (DO_CURVATURE == 1.0) {
if ((GEOM_WARP_X > 0.0) || (GEOM_WARP_Y > 0.0))
coords_curved = Warp(coords_curved,GEOM_WARP_X,GEOM_WARP_Y);
}
//coords_curved = zoomout_coords(coords_curved, -BEZEL_INNER_ZOOM , 1.0);
coords_curved = zoomout_coords(coords_curved, BEZEL_REFLECTION_AREA_SIZE , 1.0);
bool is_rotated = texture(isrotated_passFeedback,vec2(0.5,0.5)).r > 0.5;
/* Calculate the internal area (the one which is not mirrored)
so that we can skip blurring it:
*/
/* vec2 ar_box;
if (!is_rotated) {
//Width of the aspect corrected box zoomed as requested by the bezel settings:
ar_box.x = global.FinalViewportSize.z*global.FinalViewportSize.y*get_in_aspect() * (1+BEZEL_INNER_ZOOM-c_tolerance) ;
//Height zoomed as requested by bezel settings:
ar_box.y = 1+BEZEL_INNER_ZOOM-c_tolerance;
} else {
ar_box.y = global.FinalViewportSize.z*global.FinalViewportSize.y/get_in_aspect() * (1+BEZEL_INNER_ZOOM-c_tolerance) ;
ar_box.x= 1+BEZEL_INNER_ZOOM-c_tolerance;
}
//start_point is the middle of the screen minut half the content width
vec2 start_point = vec2(0.5 - (ar_box.x*0.5), 0.5 - (ar_box.y*0.5));
vec2 end_point = vec2(0.5 + (ar_box.x*0.5), 0.5 + (ar_box.y*0.5));
//Now we can skip the internal area or the black one as already marked by main_pass:
//bool skip_condition =(vTexCoord.x > start_point.x && vTexCoord.x < end_point.x &&
// vTexCoord.y > start_point.y && vTexCoord.y < end_point.y) ||
// is_outer_frame(texture(main_pass,vTexCoord));
*/
//FIXME (CHECKME) is the rotation state still important?
bool skip_condition = (coords_curved.x < 1.0 - c_tolerance && coords_curved.x > c_tolerance &&
coords_curved.y < 1.0 - c_tolerance && coords_curved.y > c_tolerance ) ;
if (skip_condition) {
FragColor = mark_useless(vec3(0.0));
return;
}
vec2 res = vec2(global.first_passSize.x, global.first_passSize.y);
vec2 dir = vec2(1.0,0.0);
///Quality, Directions, Size, coords, lod
vec3 pixel_blur = blur(1,4,2,coords_curved, 2.0);
FragColor = vec4(apply_fuzzy_main_pass(pixel_blur),1.0);
}

View File

@ -0,0 +1,231 @@
#version 450
#include "config.inc"
#pragma stage vertex
layout(location = 0) in vec4 Position;
layout(location = 1) in vec2 TexCoord;
layout(location = 1) out vec2 vWarp_vexp;
layout(location = 2) out vec2 vWarp_arg2;
layout(location = 0) out vec2 vTexCoord;
#include "includes/functions.include.slang"
void main() {
gl_Position = global.MVP * Position;
vTexCoord = TexCoord;
//Precalc some Curvature/Warp values:
vWarp_vexp = 1.0/ (1 + (vec2(GEOM_WARP_X, GEOM_WARP_Y) * 0.2)) ;
vWarp_arg2 = 1.0 - pow(vec2(0.29289321881345247559915563789515), vWarp_vexp );
if (DO_BEZEL > 0.5)
vTexCoord = zoom(TexCoord, BEZEL_REFL_ZOOM);
}
#pragma stage fragment
layout(location = 0) in vec2 vTexCoord;
layout(location = 1) in vec2 vWarp_vexp;
layout(location = 2) in vec2 vWarp_arg2;
layout(location = 0) out vec4 FragColor;
layout(set = 0, binding = 1) uniform sampler2D first_pass;
layout(set = 0, binding = 2) uniform sampler2D avglum_pass;
#define SourceTexture first_pass
#define SourceTextureSize global.first_passSize
#include "includes/functions.include.slang"
#define c_tolerance 0.051
vec3 texture_clamp_to_border(sampler2D tex, vec2 coords, float lod) {
//This emulates clamp to border:
if (coords.x < 0.0 || coords.x > 1.0 || coords.y < 0.0 || coords.y > 1.0)
return vec3(0.0);
else
return textureLod( tex, coords, lod).rgb ;
}
vec3 blur_unroll_clamp_to_border(float Size, vec2 co, float lod, float coords_crop_point) {
//Blur the image along x axis and emulate a clamp_to_border when outside the [0..1] range
//FIXME: coords_crop_point are not taken into account? CHECKME if you ever use this.
Size = Size * NEW_SCALEMOD_X; //<- so that blur size doesn't depend on output resolution
vec3 color;
vec2 d = SourceTextureSize.zw * Size;
color = texture_clamp_to_border( SourceTexture, co + d * vec2(-1.0, 1.0 ) ,lod).rgb;
color += texture_clamp_to_border( SourceTexture, co + d * vec2( 1.0, 1.0 ) ,lod).rgb;
color += texture_clamp_to_border( SourceTexture, co + d * vec2(-1.0, -1.0 ) ,lod).rgb;
color += texture_clamp_to_border( SourceTexture, co + d * vec2( 1.0, -1.0 ) ,lod).rgb;
return color / 4.0;
}
vec3 blur_unroll(float Size, vec2 co, float lod) {
//Blurs the image along x axis
Size = Size * NEW_SCALEMOD_X; //<- so that blur size doesn't depend on output resolution
vec3 color;
vec2 d = SourceTextureSize.zw * Size;
color = textureLod( SourceTexture, co + d * vec2(-1.0, 1.0 ) ,lod).rgb;
color += textureLod( SourceTexture, co + d * vec2( 1.0, 1.0 ) ,lod).rgb;
color += textureLod( SourceTexture, co + d * vec2(-1.0, -1.0 ) ,lod).rgb;
color += textureLod( SourceTexture, co + d * vec2( 1.0, -1.0 ) ,lod).rgb;
return color / 4.0;
}
vec2 mirrored_repeat(vec2 co, float crop) {
//Do a coords mirrored repeat with the mirror axis
//shifted by a "crop" amount.
//Don't try to unbranch me, it is a matter of 1/1000.
float cmin = 0.0 + crop ;
float cmax = 1.0 - crop ;
if (co.x < cmin )
co.x = 2*cmin - co.x;
if (co.y < cmin)
co.y = 2*cmin - co.y;
if (co.x > cmax )
co.x = 2*cmax - co.x;
if (co.y > cmax )
co.y = 2*cmax - co.y;
return co;
}
float circle_smooth(vec2 coords, vec2 middle, float f_radius, float FALLOFF) {
//Draw a circle with smoothed borders:
float fdistance=distance(middle, vec2(coords.x, coords.y));
float circle = (1-smoothstep(f_radius-FALLOFF, f_radius+FALLOFF, fdistance));
return circle;
}
float square_smooth(vec2 co, vec2 corner, float size, float smoothshade) {
//Draws a square with smooth borders:
vec4 rect = vec4(corner.x, corner.y, corner.x+size, corner.y+size);
vec2 hv = smoothstep(rect.xy - smoothshade, rect.xy, co) * smoothstep(co - smoothshade, co, rect.zw);
return hv.x * hv.y;
}
float corners_shade(vec2 co, float size, float smoothsize){
//Draws 4 smooth squares or circles in the corners.
//They are intended to modulate the blur radius and the strength of the reflection.
/*
vec4 circles;
float circle_radius = size; //0.13?
float circle_falloff = smoothsize; //0.05?
float circle_power =2.0;
circles.x = circle_smooth(co, vec2(0.0,0.0), circle_radius, circle_falloff) * circle_power;
circles.y = circle_smooth(co, vec2(0.0,1.0), circle_radius, circle_falloff) * circle_power;
circles.z = circle_smooth(co, vec2(1.0,0.0), circle_radius, circle_falloff) * circle_power;
circles.w = circle_smooth(co, vec2(1.0,1.0), circle_radius, circle_falloff) * circle_power;
float circle = max(max(max(circles.x, circles.y), circles.z), circles.w);
circle = min(circle, 1.0);
circle = 1-circle;
return circle;
*/
vec4 squares;
float squaresize = size;
float squarefade = smoothsize;
//(vec2 co, vec2 corner, float size, float smoothshade) {
squares.x = square_smooth(co, vec2(0.0,0.0), squaresize, squarefade);
squares.y = square_smooth(co, vec2(1.0 - squaresize, 0.0), squaresize, squarefade);
squares.z = square_smooth(co, vec2(0.0, 1-squaresize), squaresize, squarefade);
squares.w = square_smooth(co, vec2(1-squaresize, 1-squaresize), squaresize, squarefade);
return max(max(max(squares.x, squares.y), squares.z), squares.w);
}
float borders_gradient(vec2 co, float foffset) {
// Create a b/w shade near the borders that will be used to
// Modulate from sharp reflections to blur reflections.
vec4 shades;
shades.x = abs( co.x - foffset );
shades.y = abs( 1 - co.x - foffset );
shades.z = abs( co.y - foffset );
shades.w = abs( 1 - co.y - foffset );
return min(min(min(shades.x, shades.y), shades.z), shades.w);
}
void main() {
if (DO_BEZEL == 0.0) return;
//Zoom out the image coordinates by the bezel border size to make room for reflections:
vec2 coords = zoomout_coords(vTexCoord, BEZEL_BORDER_SIZE, 1.0);
vec2 coords_zoomedout = coords;
//This skip condition will be used to spped-up processing by discarding unuseful pixels.
//the c_tolerance parameter is a safe measure /FIXME: for what?
bool skip_condition = (coords.x < 1.0 - c_tolerance && coords.x > c_tolerance &&
coords.y < 1.0 - c_tolerance && coords.y > c_tolerance ) ;
//Mark the pixel as not useful, so that the next pass will be aware of it and skip rendering too:
if (skip_condition) {
FragColor = mark_useless(vec3(0.0));
return;
}
//If coords needs to be curved, do it now:
if (DO_CURVATURE == 1.0 && ( GEOM_WARP_X > 0.0 || GEOM_WARP_Y > 0.0) ) {
coords = Warp_fast(coords, vWarp_vexp, vWarp_arg2); //coords_curved = Warp(coords_curved,GEOM_WARP_X,GEOM_WARP_Y);
}
//Since we will use a mirrored_repeat trick to simulate reflections, we need to know
//where the mirror axis is.
//The mirror axis position may depend on the dynamic zoom level
//(the feature that zooms the image in when it is bright)
float coords_crop_point = 0.0;
if (DO_DYNZOOM == 1.0) {
//Crop coordinates to move the mirror axes
float dyn_zoom = get_dyn_zoom(avglum_pass);
coords_crop_point = (dyn_zoom - 1.0) * 0.5;
//Zoom image coords to align it
coords = zoom(coords, dyn_zoom);
}
coords_crop_point += BEZEL_RFL_OFFSET; // <- Adding the user offset
//Mirror repeat the image by taking the crop point (mirror axis offset) into account:
coords = mirrored_repeat(coords, coords_crop_point);
//Create gradients in the corners to fadeout reflections and to blur more near them:
float fcorners_shade = corners_shade(vTexCoord, BEZEL_REFL_CORNER_BLANK_SIZE, BEZEL_REFL_CORNER_BLANK_SHADE);
//Create a gradient near borders to modulate between blurrend and sharp refection.
//This also goes into output alpha channel to make the next pass aware of it.
float shade_sharp_blur = borders_gradient(coords, coords_crop_point);
shade_sharp_blur = shade_sharp_blur * 1/(BEZEL_BORDER_SIZE * 0.3) ;
shade_sharp_blur = shade_sharp_blur - BEZEL_RFL_BLR_SHD; //Modulates between sharp and blur via user parameter
//Also modulate in the corners via fcorners_shade (fcorners_shade
shade_sharp_blur = max(fcorners_shade, shade_sharp_blur);
//Clamp to min 0.01 because anything lower will cause the next pass to think the pixel is useless.
shade_sharp_blur = max(shade_sharp_blur, 0.01);
//shade_sharp_blur = clamp(shade_sharp_blur, 0.01, 1.0);
//blur the reflection along x axis:
vec3 pixel_out = blur_unroll(BEZEL_REFL_BLUR_MAX * shade_sharp_blur, coords, 2.0);
// I tried, instead of simple blur_unroll() to take a black border into account ( blur_unroll_clamp_to_border() )
// to emulate the reflection of black border into the main content
// when it is smaller than the bezel, but due to the low resolution of this pass, the results are bad:
// vec3 pixel_out = blur_unroll_clamp_to_border(BEZEL_REFL_BLUR_MAX * shade_sharp_blur, coords, 2.0, coords_crop_point);
//multiply the blurred image by the corner shade so that reflections will not be visible in the corners.
pixel_out = pixel_out * (1 - fcorners_shade);
// Finally, output the blurred image and put the sharp to blurred gradient in the alpha channel
// to be used by the next blur-y pass too to modulate the blur radius.
FragColor = vec4(apply_fuzzy_main_pass(pixel_out), shade_sharp_blur);
}

View File

@ -6,8 +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;
}
@ -17,6 +16,7 @@ layout(location = 0) in vec2 vTexCoord;
layout(location = 0) out vec4 FragColor;
layout(set = 0, binding = 2) uniform sampler2D Source;
#include "includes/functions.include.slang"
#define SourceTexture Source
@ -25,6 +25,7 @@ layout(set = 0, binding = 2) uniform sampler2D Source;
#define b_offset_x -0.05
#define Pi2 6.28318530717959
vec3 blur(float Quality, float Directions, float Size, vec2 co) {
Size = Size * NEW_SCALEMOD_Y;
vec4 iResolution = SourceTextureSize;
vec2 Radius = Size/iResolution.xy ;
vec3 color = vec3(0.0,0.0,0.0);
@ -41,15 +42,39 @@ vec3 blur(float Quality, float Directions, float Size, vec2 co) {
return color;
}
vec3 blur_unroll(float Size, vec2 co) {
Size = Size * NEW_SCALEMOD_Y;
vec3 color = vec3(0.0,0.0,0.0);
vec2 d = SourceTextureSize.zw * Size;
color = texture( SourceTexture, co + d * vec2(-1.0, 1.0 )).rgb ;
color += texture( SourceTexture, co + d * vec2( 1.0, 1.0 )).rgb ;
color += texture( SourceTexture, co + d * vec2(-1.0, -1.0 )).rgb ;
color += texture( SourceTexture, co + d * vec2( 1.0, -1.0 )).rgb ;
color /= 4.0;
return color;
}
void main() {
if (DO_BEZEL == 0.0) return;
if (is_useless(texture(Source, vTexCoord))) return;
vec2 coords = vTexCoord;
vec4 pixel_source = texture(Source, coords);
if (is_useless(pixel_source)) {
//FragColor = vec4(0.0);
return;
}
float blur_modulation = pixel_source.a;
vec3 pixel_out = blur_unroll(BEZEL_REFL_BLUR_MAX * blur_modulation, coords);
vec2 res = vec2(params.SourceSize.x, params.SourceSize.y);
vec2 dir = vec2(0.0,1.0);
///Quality, Directions, Size, coords
FragColor = vec4(blur(1,4,2,vTexCoord),1.0);
//pixel_out = mix(vec3(blur_modulation), pixel_out, 0.5);
FragColor = vec4(pixel_out, 1.0);
//FragColor = vec4(blur_modulation);
}

View File

@ -43,14 +43,14 @@ vec3 hsv2rgb(vec3 c){
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
}
#define eps10 1.0e-10
vec3 rgb2hsv(vec3 c){
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
float d = q.x - min(q.w, q.y);
float e = 1.0e-10;
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + eps10)), d / (q.x + eps10), q.x);
}
#define bandwidth_mhz_Y_ntsc 4.2
@ -61,7 +61,7 @@ const mat3 mat3_RGB2YIQ = mat3(
0.2989, 0.5959, 0.2115,
0.5870, -0.2744, -0.5229,
0.1140, -0.3216, 0.3114);
const mat3 mat3_YIQ2RGB = mat3(
1.0, 1.0, 1.0,
0.956, -0.2720, -1.1060,
@ -99,33 +99,34 @@ vec3 pixel_offset(vec3 pixel_cur,vec2 coord, sampler2D in_texture, vec4 sourcesi
vec3 pixel_offset_wrap (vec2 coord) {
vec3 pixel_in;
if ( DO_FXAA == 1.0) {
pixel_in = texture(FXAA_pass, vTexCoord).rgb;
return pixel_offset(pixel_in, vTexCoord, FXAA_pass, global.FXAA_passSize);
return pixel_offset(texture(FXAA_pass, vTexCoord).rgb, vTexCoord, FXAA_pass, global.FXAA_passSize);
} else {
pixel_in = texture(first_pass, vTexCoord).rgb;
return pixel_offset(pixel_in, vTexCoord, first_pass, global.first_passSize);
return pixel_offset(texture(first_pass, vTexCoord).rgb, vTexCoord, first_pass, global.first_passSize);
}
}
vec3 pixel_bleed_side_NTSC(vec3 pixel_in, vec2 co, float size, float side, sampler2D in_texture, vec4 sourcesize2) {
float w = SAT_BLEED_STRENGTH;
vec3 blur_YIQ = pixel_in * mat3_RGB2YIQ; //Work in YIQ space
float i = 0.0;
for ( i=1 ; i <= size ; i++ ){
w=w/SAT_BLEED_FALLOFF;
w=w/SAT_BLEED_FALLOFF;
//w = w * exp(i*i*(1-SAT_BLEED_FALLOFF)*0.1);
//w=clamp(w,0.0,1.0);
vec3 smp_YIQ = texture(first_pass, co - side * vec2(sourcesize2.z*i,0.0)).rgb * mat3_RGB2YIQ;
blur_YIQ.x = mix(blur_YIQ.x, smp_YIQ.x, w/bandwidth_mhz_Y_ntsc); // Blur Y
blur_YIQ.y = mix(blur_YIQ.y, smp_YIQ.y, w/bandwidth_mhz_I ); // Blur I
blur_YIQ.z = mix(blur_YIQ.z, smp_YIQ.z, w/bandwidth_mhz_Q ); // BlurQ
//Tried to optimize as follows to no avail:
//vec3 vec3_mix = vec3(w/bandwidth_mhz_Y_ntsc, w/bandwidth_mhz_I, w/bandwidth_mhz_Q);
//blur_YIQ = mix(blur_YIQ.xyz, smp_YIQ.xyz, vec3_mix);
}
//blur_YIQ.z/=i;
return vec3(blur_YIQ.x, blur_YIQ.y, blur_YIQ.z) * mat3_YIQ2RGB; //return to RGB colorspace
return blur_YIQ.xyz * mat3_YIQ2RGB; //return to RGB colorspace
}
vec3 pixel_bleed_side_PAL(vec3 pixel_in, vec2 co, float size, float side, sampler2D in_texture, vec4 sourcesize2) {
float w = SAT_BLEED_STRENGTH;
vec3 blur_YUV = pixel_in * mat3_RGB2YUV; //Work in YIQ space
@ -138,7 +139,7 @@ vec3 pixel_bleed_side_PAL(vec3 pixel_in, vec2 co, float size, float side, sample
blur_YUV.y = mix(blur_YUV.y, smp_YUV.y, w/bandwidth_mhz_U ); // Blur U
blur_YUV.z = mix(blur_YUV.z, smp_YUV.z, w/bandwidth_mhz_V ); // Blur V
}
return vec3(blur_YUV.x, blur_YUV.y, blur_YUV.z) * mat3_YUV2RGB; //return to RGB colorspace
return blur_YUV.xyz * mat3_YUV2RGB; //return to RGB colorspace
}
#define SIDE_RIGHT 1
@ -147,6 +148,8 @@ vec3 pixel_bleed_side_PAL(vec3 pixel_in, vec2 co, float size, float side, sample
vec3 pixel_bleed(vec3 pixel_in, vec2 co, sampler2D in_texture, vec4 sourcesize2) {
vec3 side_left ; vec3 side_right;
//Tried to unbranch the following, no gain (even worse) probably due to not using constants anymore.
//Just dont try again.
if (SAT_BLEED_PAL == 1.0) {
side_right = pixel_bleed_side_PAL(pixel_in, co, SAT_BLEED_SIZE_RIGHT, SIDE_RIGHT, in_texture, sourcesize2);
side_left = pixel_bleed_side_PAL(pixel_in, co, SAT_BLEED_SIZE_LEFT, SIDE_LEFT, in_texture, sourcesize2);
@ -154,47 +157,57 @@ vec3 pixel_bleed(vec3 pixel_in, vec2 co, sampler2D in_texture, vec4 sourcesize2)
side_right = pixel_bleed_side_NTSC(pixel_in, co, SAT_BLEED_SIZE_RIGHT, SIDE_RIGHT, in_texture, sourcesize2);
side_left = pixel_bleed_side_NTSC(pixel_in, co, SAT_BLEED_SIZE_LEFT, SIDE_LEFT, in_texture, sourcesize2);
}
return mix(side_left,side_right,0.5);
//Clamping min to 0.0 is needed for nvidia to avoid bad graphical glitches, why?
return max( mix(side_left,side_right,0.5), 0.0) ;
}
void main() {
if (DO_SHIFT_RGB + DO_SAT_BLEED == 0.0) return;
float pixel_alpha_ntsc_artifacts; // <- this holds ntsc artifacts needed by glow to modulate blur there.
vec3 pixel_out;
//Handle case where both are needed:
//First shift the right source, then pass it to bleed function.
if (DO_SHIFT_RGB + DO_SAT_BLEED > 1.0) {
vec3 pixel_out = pixel_offset_wrap(vTexCoord);
pixel_out = pixel_offset_wrap(vTexCoord);
if (DO_SAT_BLEED > 0.0) {
if ( DO_FXAA == 1.0) {
pixel_out = pixel_bleed(pixel_out, vTexCoord, FXAA_pass, global.FXAA_passSize);
pixel_alpha_ntsc_artifacts = texture(FXAA_pass, vTexCoord).a;
} else {
pixel_out = pixel_bleed(pixel_out, vTexCoord, first_pass, global.first_passSize);
pixel_alpha_ntsc_artifacts = texture(first_pass, vTexCoord).a;
}
}
FragColor = vec4(pixel_out,0.0);
return;
}
//Handle case where only color shifting is requested
if (DO_SHIFT_RGB > 0.0) {
vec3 pixel_out = pixel_offset_wrap(vTexCoord);
FragColor = vec4(pixel_out,0.0);
return;
}
//Handle case where only chroma bleed is requested
if (DO_SAT_BLEED > 0.0) {
vec3 pixel_out;
} else
//Handle case where only color shifting is requested
if (DO_SHIFT_RGB > 0.0) {
pixel_out = pixel_offset_wrap(vTexCoord);
} else
if (DO_SAT_BLEED > 0.0) {
//Handle case where only chroma bleed is requested
if ( DO_FXAA == 1.0) {
pixel_out = texture(FXAA_pass, vTexCoord).rgb;
pixel_alpha_ntsc_artifacts = texture(FXAA_pass, vTexCoord).a;
pixel_out = pixel_bleed(pixel_out, vTexCoord, FXAA_pass, global.FXAA_passSize);
} else {
pixel_out = texture(first_pass, vTexCoord).rgb;
pixel_alpha_ntsc_artifacts = texture(first_pass, vTexCoord).a;
pixel_out = pixel_bleed(pixel_out, vTexCoord, first_pass, global.first_passSize);
}
} else
//Passthrough
if ( DO_FXAA == 1.0) {
pixel_out = texture(FXAA_pass, vTexCoord).rgb;
pixel_out = pixel_bleed(pixel_out, vTexCoord, FXAA_pass, global.FXAA_passSize);
pixel_alpha_ntsc_artifacts = texture(FXAA_pass, vTexCoord).a;
} else {
pixel_out = texture(first_pass, vTexCoord).rgb;
pixel_out = pixel_bleed(pixel_out, vTexCoord, first_pass, global.first_passSize);
pixel_alpha_ntsc_artifacts = texture(first_pass, vTexCoord).a;
}
FragColor = vec4(pixel_out,0.0);
return;
}
//pre-gamma if needed by glow.
if (DO_IN_GLOW > 0.5)
pixel_out = pow(pixel_out, vec3(IN_GLOW_GAMMA));
FragColor = vec4(pixel_out,pixel_alpha_ntsc_artifacts);
return;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 419 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 226 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 170 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 MiB

View File

@ -1,180 +1,180 @@
shaders = "17"
shader0 = "shaders/first_pass.slang"
shader0 = "shaders/ntsc_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
alias0 = "first_pass"
alias0 = "ntsc_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "2.000000"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "2.000000"
shader1 = "shaders/fxaa.slang"
filter_linear1 = "true"
scale_y0 = "1.000000"
shader1 = "shaders/first_pass.slang"
filter_linear1 = "false"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "true"
alias1 = "FXAA_pass"
mipmap_input1 = "false"
alias1 = "first_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
scale_x1 = "1.000000"
scale_x1 = "2.000000"
scale_type_y1 = "source"
scale_y1 = "1.000000"
shader2 = "shaders/shift_and_bleed.slang"
scale_y1 = "2.000000"
shader2 = "shaders/fxaa.slang"
filter_linear2 = "true"
wrap_mode2 = "mirrored_repeat"
mipmap_input2 = "false"
alias2 = "shift_and_bleed_pass"
mipmap_input2 = "true"
alias2 = "FXAA_pass"
float_framebuffer2 = "false"
srgb_framebuffer2 = "false"
scale_type_x2 = "source"
scale_x2 = "1.000000"
scale_type_y2 = "source"
scale_y2 = "1.000000"
shader3 = "shaders/in_glow.slang"
shader3 = "shaders/shift_and_bleed.slang"
filter_linear3 = "true"
wrap_mode3 = "mirrored_repeat"
mipmap_input3 = "false"
alias3 = "in_glow_pass"
alias3 = "shift_and_bleed_pass"
float_framebuffer3 = "true"
srgb_framebuffer3 = "false"
scale_type_x3 = "source"
scale_x3 = "1.000000"
scale_type_y3 = "source"
scale_y3 = "1.000000"
shader4 = "shaders/halo.slang"
shader4 = "shaders/in_glow_x.slang"
filter_linear4 = "true"
wrap_mode4 = "mirrored_repeat"
mipmap_input4 = "false"
alias4 = "halo_pass"
alias4 = "in_glow_pass_x"
float_framebuffer4 = "true"
srgb_framebuffer4 = "false"
scale_type_x4 = "source"
scale_x4 = "1.000000"
scale_type_y4 = "source"
scale_y4 = "1.000000"
shader5 = "shaders/avglum_pass.slang"
shader5 = "shaders/in_glow_y.slang"
filter_linear5 = "true"
wrap_mode5 = "mirrored_repeat"
mipmap_input5 = "false"
alias5 = "avglum_pass"
float_framebuffer5 = "false"
alias5 = "in_glow_pass"
float_framebuffer5 = "true"
srgb_framebuffer5 = "false"
scale_type_x5 = "source"
scale_x5 = "0.500000"
scale_x5 = "1.000000"
scale_type_y5 = "source"
scale_y5 = "0.500000"
shader6 = "shaders/reflection_blur_h.slang"
scale_y5 = "1.000000"
shader6 = "shaders/halo_x.slang"
filter_linear6 = "true"
wrap_mode6 = "mirrored_repeat"
wrap_mode6 = "clamp_to_edge"
mipmap_input6 = "false"
alias6 = "reflected_blurred_pass1"
float_framebuffer6 = "false"
alias6 = "halo_pass_x"
float_framebuffer6 = "true"
srgb_framebuffer6 = "false"
scale_type_x6 = "source"
scale_x6 = "1.000000"
scale_type_y6 = "source"
scale_y6 = "1.000000"
shader7 = "shaders/reflection_blur_v.slang"
shader7 = "shaders/halo_y.slang"
filter_linear7 = "true"
wrap_mode7 = "mirrored_repeat"
wrap_mode7 = "clamp_to_edge"
mipmap_input7 = "false"
alias7 = "reflected_blurred_pass2"
float_framebuffer7 = "false"
alias7 = "halo_pass"
float_framebuffer7 = "true"
srgb_framebuffer7 = "false"
scale_type_x7 = "source"
scale_x7 = "1.000000"
scale_type_y7 = "source"
scale_y7 = "1.000000"
shader8 = "shaders/bloom_pass_1.slang"
shader8 = "shaders/avglum_pass.slang"
filter_linear8 = "true"
wrap_mode8 = "mirrored_repeat"
mipmap_input8 = "false"
alias8 = "bloom_pass_1"
float_framebuffer8 = "true"
alias8 = "avglum_pass"
float_framebuffer8 = "false"
srgb_framebuffer8 = "false"
scale_type_x8 = "source"
scale_x8 = "1.000000"
scale_x8 = "0.500000"
scale_type_y8 = "source"
scale_y8 = "1.000000"
shader9 = "shaders/bloom_pass_2.slang"
scale_y8 = "0.500000"
shader9 = "shaders/reflection_blur_x.slang"
filter_linear9 = "true"
wrap_mode9 = "clamp_to_edge"
wrap_mode9 = "mirrored_repeat"
mipmap_input9 = "false"
alias9 = "bloom_pass_2"
alias9 = "reflected_blurred_pass1"
float_framebuffer9 = "false"
srgb_framebuffer9 = "false"
scale_type_x9 = "source"
scale_x9 = "0.500000"
scale_x9 = "1.000000"
scale_type_y9 = "source"
scale_y9 = "0.500000"
shader10 = "shaders/bloom_pass_3.slang"
scale_y9 = "1.000000"
shader10 = "shaders/reflection_blur_y.slang"
filter_linear10 = "true"
wrap_mode10 = "clamp_to_edge"
wrap_mode10 = "mirrored_repeat"
mipmap_input10 = "false"
alias10 = "bloom_pass_3"
alias10 = "reflected_blurred_pass2"
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"
shader11 = "shaders/bloom_pass_1.slang"
filter_linear11 = "true"
wrap_mode11 = "mirrored_repeat"
mipmap_input11 = "false"
alias11 = "bloom_pass_final"
alias11 = "bloom_pass_1"
float_framebuffer11 = "false"
srgb_framebuffer11 = "false"
scale_type_x11 = "source"
scale_x11 = "1.000000"
scale_type_y11 = "source"
scale_y11 = "1.000000"
shader12 = "shaders/ambi_push_pass.slang"
shader12 = "shaders/bloom_pass_2.slang"
filter_linear12 = "true"
wrap_mode12 = "mirrored_repeat"
wrap_mode12 = "clamp_to_edge"
mipmap_input12 = "false"
alias12 = "ambi_push_pass"
float_framebuffer12 = "true"
alias12 = "bloom_pass_2"
float_framebuffer12 = "false"
srgb_framebuffer12 = "false"
scale_type_x12 = "source"
scale_x12 = "1.000000"
scale_x12 = "0.500000"
scale_type_y12 = "source"
scale_y12 = "1.000000"
shader13 = "shaders/ambi_pre_pass.slang"
scale_y12 = "0.500000"
shader13 = "shaders/bloom_pass_3.slang"
filter_linear13 = "true"
wrap_mode13 = "clamp_to_border"
mipmap_input13 = "true"
alias13 = "ambi_pre_pass1"
wrap_mode13 = "clamp_to_edge"
mipmap_input13 = "false"
alias13 = "bloom_pass_3"
float_framebuffer13 = "false"
srgb_framebuffer13 = "false"
scale_type_x13 = "source"
scale_x13 = "1.000000"
scale_type_y13 = "source"
scale_y13 = "1.000000"
shader14 = "shaders/ambi_temporal_pass.slang"
shader14 = "shaders/bloom_pass_4.slang"
filter_linear14 = "true"
wrap_mode14 = "clamp_to_border"
wrap_mode14 = "mirrored_repeat"
mipmap_input14 = "false"
alias14 = "ambi_temporal_pass"
alias14 = "bloom_pass_final"
float_framebuffer14 = "true"
srgb_framebuffer14 = "false"
scale_type_x14 = "source"
scale_x14 = "1.000000"
scale_type_y14 = "source"
scale_y14 = "1.000000"
shader15 = "shaders/isrotated.slang"
shader15 = "shaders/ambi_temporal_pass.slang"
filter_linear15 = "true"
wrap_mode15 = "mirrored_repeat"
wrap_mode15 = "clamp_to_border"
mipmap_input15 = "false"
alias15 = "isrotated_pass"
float_framebuffer15 = "false"
alias15 = "ambi_temporal_pass"
float_framebuffer15 = "true"
srgb_framebuffer15 = "false"
scale_type_x15 = "viewport"
scale_x15 = "0.100000"
scale_x15 = "0.050000"
scale_type_y15 = "viewport"
scale_y15 = "0.100000"
scale_y15 = "0.050000"
shader16 = "shaders/final_pass.slang"
filter_linear16 = "true"
wrap_mode16 = "mirrored_repeat"
@ -190,23 +190,21 @@ DO_CCORRECTION = "1.000000"
LUMINANCE = "0.100000"
SATURATION = "1.050000"
TEMPERATURE = "7000.000000"
GAMMA_OUT = "0.400000"
GAMMA_OUT = "0.500000"
DO_FXAA = "1.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_W = "0.950000"
IN_GLOW_H = "0.950000"
IN_GLOW_GAMMA = "2.000000"
IN_GLOW_SPREAD = "2.000000"
IN_GLOW_W = "1.000000"
IN_GLOW_H = "1.000000"
IN_GLOW_BIAS = "0.000000"
DO_VMASK_AND_DARKLINES = "1.000000"
RGB_MASK_STRENGTH = "1.000000"
@ -214,32 +212,36 @@ VMASK_USE_GM = "1.000000"
VMASK_GAP = "1.000000"
DARKLINES_STRENGTH = "0.000000"
DO_HALO = "1.000000"
HALO_POWER = "0.520000"
HALO_POWER = "0.990000"
HALO_W = "3.000000"
HALO_H = "3.000000"
HALO_GAMMA = "1.400000"
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 = "2.000000"
BLOOM_MIX = "0.500000"
DO_CURVATURE = "1.000000"
GEOM_WARP_X = "0.000000"
GEOM_WARP_X = "0.475000"
GEOM_WARP_Y = "0.500000"
GEOM_CORNER_SMOOTH = "200.000000"
BEZEL_INNER_ZOOM = "-0.160000"
BEZEL_IMAGE_BORDER = "1.020000"
AMBI_FALLOFF = "0.400000"
AMBI_POWER = "1.000000"
V_SIZE = "2.700000"
V_POWER = "1.050000"
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"
textures = "monitor_body_curved;monitor_body_straight;bg_under;bg_over;backdrop"
monitor_body_curved = "textures/monitor_body_curved.png"
monitor_body_curved_linear = "true"
monitor_body_curved_wrap_mode = "clamp_to_edge"
monitor_body_curved_mipmap = "true"
monitor_body_straight = "textures/monitor_body_straight.png"
monitor_body_straight_linear = "true"
monitor_body_straight_wrap_mode = "clamp_to_edge"
monitor_body_straight_mipmap = "true"
bg_under = "textures/background_under.png"
bg_under_linear = "true"
bg_under_wrap_mode = "mirrored_repeat"
@ -248,3 +250,7 @@ bg_over = "textures/background_over.png"
bg_over_linear = "true"
bg_over_wrap_mode = "mirrored_repeat"
bg_over_mipmap = "true"
backdrop = "textures/boothill.jpg"
backdrop_linear = "true"
backdrop_wrap_mode = "mirrored_repeat"
backdrop_mipmap = "true"

View File

@ -0,0 +1,259 @@
shaders = "17"
shader0 = "shaders/ntsc_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
alias0 = "ntsc_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "1.000000"
shader1 = "shaders/first_pass.slang"
filter_linear1 = "false"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "false"
alias1 = "first_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
scale_x1 = "2.000000"
scale_type_y1 = "source"
scale_y1 = "2.000000"
shader2 = "shaders/fxaa.slang"
filter_linear2 = "true"
wrap_mode2 = "mirrored_repeat"
mipmap_input2 = "true"
alias2 = "FXAA_pass"
float_framebuffer2 = "false"
srgb_framebuffer2 = "false"
scale_type_x2 = "source"
scale_x2 = "1.000000"
scale_type_y2 = "source"
scale_y2 = "1.000000"
shader3 = "shaders/shift_and_bleed.slang"
filter_linear3 = "true"
wrap_mode3 = "mirrored_repeat"
mipmap_input3 = "false"
alias3 = "shift_and_bleed_pass"
float_framebuffer3 = "true"
srgb_framebuffer3 = "false"
scale_type_x3 = "source"
scale_x3 = "1.000000"
scale_type_y3 = "source"
scale_y3 = "1.000000"
shader4 = "shaders/in_glow_x.slang"
filter_linear4 = "true"
wrap_mode4 = "mirrored_repeat"
mipmap_input4 = "false"
alias4 = "in_glow_pass_x"
float_framebuffer4 = "true"
srgb_framebuffer4 = "false"
scale_type_x4 = "source"
scale_x4 = "1.000000"
scale_type_y4 = "source"
scale_y4 = "1.000000"
shader5 = "shaders/in_glow_y.slang"
filter_linear5 = "true"
wrap_mode5 = "mirrored_repeat"
mipmap_input5 = "false"
alias5 = "in_glow_pass"
float_framebuffer5 = "true"
srgb_framebuffer5 = "false"
scale_type_x5 = "source"
scale_x5 = "1.000000"
scale_type_y5 = "source"
scale_y5 = "1.000000"
shader6 = "shaders/halo_x.slang"
filter_linear6 = "true"
wrap_mode6 = "clamp_to_edge"
mipmap_input6 = "false"
alias6 = "halo_pass_x"
float_framebuffer6 = "true"
srgb_framebuffer6 = "false"
scale_type_x6 = "source"
scale_x6 = "1.000000"
scale_type_y6 = "source"
scale_y6 = "1.000000"
shader7 = "shaders/halo_y.slang"
filter_linear7 = "true"
wrap_mode7 = "clamp_to_edge"
mipmap_input7 = "false"
alias7 = "halo_pass"
float_framebuffer7 = "true"
srgb_framebuffer7 = "false"
scale_type_x7 = "source"
scale_x7 = "1.000000"
scale_type_y7 = "source"
scale_y7 = "1.000000"
shader8 = "shaders/avglum_pass.slang"
filter_linear8 = "true"
wrap_mode8 = "mirrored_repeat"
mipmap_input8 = "false"
alias8 = "avglum_pass"
float_framebuffer8 = "false"
srgb_framebuffer8 = "false"
scale_type_x8 = "source"
scale_x8 = "0.500000"
scale_type_y8 = "source"
scale_y8 = "0.500000"
shader9 = "shaders/reflection_blur_x.slang"
filter_linear9 = "true"
wrap_mode9 = "mirrored_repeat"
mipmap_input9 = "false"
alias9 = "reflected_blurred_pass1"
float_framebuffer9 = "false"
srgb_framebuffer9 = "false"
scale_type_x9 = "source"
scale_x9 = "1.000000"
scale_type_y9 = "source"
scale_y9 = "1.000000"
shader10 = "shaders/reflection_blur_y.slang"
filter_linear10 = "true"
wrap_mode10 = "mirrored_repeat"
mipmap_input10 = "false"
alias10 = "reflected_blurred_pass2"
float_framebuffer10 = "false"
srgb_framebuffer10 = "false"
scale_type_x10 = "source"
scale_x10 = "1.000000"
scale_type_y10 = "source"
scale_y10 = "1.000000"
shader11 = "shaders/bloom_pass_1.slang"
filter_linear11 = "true"
wrap_mode11 = "mirrored_repeat"
mipmap_input11 = "false"
alias11 = "bloom_pass_1"
float_framebuffer11 = "false"
srgb_framebuffer11 = "false"
scale_type_x11 = "source"
scale_x11 = "1.000000"
scale_type_y11 = "source"
scale_y11 = "1.000000"
shader12 = "shaders/bloom_pass_2.slang"
filter_linear12 = "true"
wrap_mode12 = "clamp_to_edge"
mipmap_input12 = "false"
alias12 = "bloom_pass_2"
float_framebuffer12 = "false"
srgb_framebuffer12 = "false"
scale_type_x12 = "source"
scale_x12 = "0.500000"
scale_type_y12 = "source"
scale_y12 = "0.500000"
shader13 = "shaders/bloom_pass_3.slang"
filter_linear13 = "true"
wrap_mode13 = "clamp_to_edge"
mipmap_input13 = "false"
alias13 = "bloom_pass_3"
float_framebuffer13 = "false"
srgb_framebuffer13 = "false"
scale_type_x13 = "source"
scale_x13 = "1.000000"
scale_type_y13 = "source"
scale_y13 = "1.000000"
shader14 = "shaders/bloom_pass_4.slang"
filter_linear14 = "true"
wrap_mode14 = "mirrored_repeat"
mipmap_input14 = "false"
alias14 = "bloom_pass_final"
float_framebuffer14 = "true"
srgb_framebuffer14 = "false"
scale_type_x14 = "source"
scale_x14 = "1.000000"
scale_type_y14 = "source"
scale_y14 = "1.000000"
shader15 = "shaders/ambi_temporal_pass.slang"
filter_linear15 = "true"
wrap_mode15 = "clamp_to_border"
mipmap_input15 = "false"
alias15 = "ambi_temporal_pass"
float_framebuffer15 = "true"
srgb_framebuffer15 = "false"
scale_type_x15 = "viewport"
scale_x15 = "0.050000"
scale_type_y15 = "viewport"
scale_y15 = "0.050000"
shader16 = "shaders/final_pass.slang"
filter_linear16 = "true"
wrap_mode16 = "mirrored_repeat"
mipmap_input16 = "false"
alias16 = "final_pass"
float_framebuffer16 = "false"
srgb_framebuffer16 = "false"
scale_type_x16 = "viewport"
scale_x16 = "1.000000"
scale_type_y16 = "viewport"
scale_y16 = "1.000000"
DO_CCORRECTION = "1.000000"
LUMINANCE = "0.200000"
CONTRAST = "0.050000"
BRIGHTNESS = "0.050000"
TEMPERATURE = "7000.000000"
GAMMA_OUT = "0.560000"
DO_NTSC_ARTIFACTS = "1.000000"
DO_SAT_BLEED = "1.000000"
DO_IN_GLOW = "1.000000"
IN_GLOW_POWER = "1.650000"
IN_GLOW_GAMMA = "2.000000"
IN_GLOW_W = "1.000000"
IN_GLOW_H = "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.600000"
DARKLINES_PERIOD = "4.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.300000"
DO_SCANLINES = "1.000000"
SCANLINE_MIN = "0.050000"
SCANLINE_MAX = "4.100000"
SCANLINE_DARK = "0.100000"
SCANLINE_SM_VOFFSET = "70.000000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.550000"
BLOOM_EYE_ADPT_SRT = "0.800000"
DO_CURVATURE = "1.000000"
GEOM_WARP_X = "0.475000"
GEOM_WARP_Y = "0.500000"
GEOM_CORNER_SMOOTH = "400.000000"
DO_BEZEL = "1.000000"
BEZEL_INNER_ZOOM = "-0.010000"
BEZEL_FRAME_ZOOM = "0.170000"
BEZEL_IMAGE_BORDER = "1.020000"
BEZEL_RFL_OFFSET = "0.002000"
BEZEL_REFL_ZOOM = "0.993000"
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_curved;monitor_body_straight;bg_under;bg_over;backdrop"
monitor_body_curved = "textures/monitor_body_curved.png"
monitor_body_curved_linear = "true"
monitor_body_curved_wrap_mode = "clamp_to_edge"
monitor_body_curved_mipmap = "true"
monitor_body_straight = "textures/monitor_body_straight.png"
monitor_body_straight_linear = "true"
monitor_body_straight_wrap_mode = "clamp_to_edge"
monitor_body_straight_mipmap = "true"
bg_under = "textures/background_under.png"
bg_under_linear = "true"
bg_under_wrap_mode = "mirrored_repeat"
bg_under_mipmap = "true"
bg_over = "textures/background_over.png"
bg_over_linear = "true"
bg_over_wrap_mode = "mirrored_repeat"
bg_over_mipmap = "true"
backdrop = "textures/boothill.jpg"
backdrop_linear = "true"
backdrop_wrap_mode = "mirrored_repeat"
backdrop_mipmap = "true"

View File

@ -0,0 +1,262 @@
shaders = "17"
shader0 = "shaders/ntsc_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
alias0 = "ntsc_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "1.000000"
shader1 = "shaders/first_pass.slang"
filter_linear1 = "false"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "false"
alias1 = "first_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
scale_x1 = "2.000000"
scale_type_y1 = "source"
scale_y1 = "2.000000"
shader2 = "shaders/fxaa.slang"
filter_linear2 = "true"
wrap_mode2 = "mirrored_repeat"
mipmap_input2 = "true"
alias2 = "FXAA_pass"
float_framebuffer2 = "false"
srgb_framebuffer2 = "false"
scale_type_x2 = "source"
scale_x2 = "1.000000"
scale_type_y2 = "source"
scale_y2 = "1.000000"
shader3 = "shaders/shift_and_bleed.slang"
filter_linear3 = "true"
wrap_mode3 = "mirrored_repeat"
mipmap_input3 = "false"
alias3 = "shift_and_bleed_pass"
float_framebuffer3 = "true"
srgb_framebuffer3 = "false"
scale_type_x3 = "source"
scale_x3 = "1.000000"
scale_type_y3 = "source"
scale_y3 = "1.000000"
shader4 = "shaders/in_glow_x.slang"
filter_linear4 = "true"
wrap_mode4 = "mirrored_repeat"
mipmap_input4 = "false"
alias4 = "in_glow_pass_x"
float_framebuffer4 = "true"
srgb_framebuffer4 = "false"
scale_type_x4 = "source"
scale_x4 = "1.000000"
scale_type_y4 = "source"
scale_y4 = "1.000000"
shader5 = "shaders/in_glow_y.slang"
filter_linear5 = "true"
wrap_mode5 = "mirrored_repeat"
mipmap_input5 = "false"
alias5 = "in_glow_pass"
float_framebuffer5 = "true"
srgb_framebuffer5 = "false"
scale_type_x5 = "source"
scale_x5 = "1.000000"
scale_type_y5 = "source"
scale_y5 = "1.000000"
shader6 = "shaders/halo_x.slang"
filter_linear6 = "true"
wrap_mode6 = "clamp_to_edge"
mipmap_input6 = "false"
alias6 = "halo_pass_x"
float_framebuffer6 = "true"
srgb_framebuffer6 = "false"
scale_type_x6 = "source"
scale_x6 = "1.000000"
scale_type_y6 = "source"
scale_y6 = "1.000000"
shader7 = "shaders/halo_y.slang"
filter_linear7 = "true"
wrap_mode7 = "clamp_to_edge"
mipmap_input7 = "false"
alias7 = "halo_pass"
float_framebuffer7 = "true"
srgb_framebuffer7 = "false"
scale_type_x7 = "source"
scale_x7 = "1.000000"
scale_type_y7 = "source"
scale_y7 = "1.000000"
shader8 = "shaders/avglum_pass.slang"
filter_linear8 = "true"
wrap_mode8 = "mirrored_repeat"
mipmap_input8 = "false"
alias8 = "avglum_pass"
float_framebuffer8 = "false"
srgb_framebuffer8 = "false"
scale_type_x8 = "source"
scale_x8 = "0.500000"
scale_type_y8 = "source"
scale_y8 = "0.500000"
shader9 = "shaders/reflection_blur_x.slang"
filter_linear9 = "true"
wrap_mode9 = "mirrored_repeat"
mipmap_input9 = "false"
alias9 = "reflected_blurred_pass1"
float_framebuffer9 = "false"
srgb_framebuffer9 = "false"
scale_type_x9 = "source"
scale_x9 = "1.000000"
scale_type_y9 = "source"
scale_y9 = "1.000000"
shader10 = "shaders/reflection_blur_y.slang"
filter_linear10 = "true"
wrap_mode10 = "mirrored_repeat"
mipmap_input10 = "false"
alias10 = "reflected_blurred_pass2"
float_framebuffer10 = "false"
srgb_framebuffer10 = "false"
scale_type_x10 = "source"
scale_x10 = "1.000000"
scale_type_y10 = "source"
scale_y10 = "1.000000"
shader11 = "shaders/bloom_pass_1.slang"
filter_linear11 = "true"
wrap_mode11 = "mirrored_repeat"
mipmap_input11 = "false"
alias11 = "bloom_pass_1"
float_framebuffer11 = "false"
srgb_framebuffer11 = "false"
scale_type_x11 = "source"
scale_x11 = "1.000000"
scale_type_y11 = "source"
scale_y11 = "1.000000"
shader12 = "shaders/bloom_pass_2.slang"
filter_linear12 = "true"
wrap_mode12 = "clamp_to_edge"
mipmap_input12 = "false"
alias12 = "bloom_pass_2"
float_framebuffer12 = "false"
srgb_framebuffer12 = "false"
scale_type_x12 = "source"
scale_x12 = "0.500000"
scale_type_y12 = "source"
scale_y12 = "0.500000"
shader13 = "shaders/bloom_pass_3.slang"
filter_linear13 = "true"
wrap_mode13 = "clamp_to_edge"
mipmap_input13 = "false"
alias13 = "bloom_pass_3"
float_framebuffer13 = "false"
srgb_framebuffer13 = "false"
scale_type_x13 = "source"
scale_x13 = "1.000000"
scale_type_y13 = "source"
scale_y13 = "1.000000"
shader14 = "shaders/bloom_pass_4.slang"
filter_linear14 = "true"
wrap_mode14 = "mirrored_repeat"
mipmap_input14 = "false"
alias14 = "bloom_pass_final"
float_framebuffer14 = "true"
srgb_framebuffer14 = "false"
scale_type_x14 = "source"
scale_x14 = "1.000000"
scale_type_y14 = "source"
scale_y14 = "1.000000"
shader15 = "shaders/ambi_temporal_pass.slang"
filter_linear15 = "true"
wrap_mode15 = "clamp_to_border"
mipmap_input15 = "false"
alias15 = "ambi_temporal_pass"
float_framebuffer15 = "true"
srgb_framebuffer15 = "false"
scale_type_x15 = "viewport"
scale_x15 = "0.050000"
scale_type_y15 = "viewport"
scale_y15 = "0.050000"
shader16 = "shaders/final_pass.slang"
filter_linear16 = "true"
wrap_mode16 = "mirrored_repeat"
mipmap_input16 = "false"
alias16 = "final_pass"
float_framebuffer16 = "false"
srgb_framebuffer16 = "false"
scale_type_x16 = "viewport"
scale_x16 = "1.000000"
scale_type_y16 = "viewport"
scale_y16 = "1.000000"
DO_CCORRECTION = "1.000000"
LUMINANCE = "0.200000"
CONTRAST = "0.050000"
BRIGHTNESS = "0.050000"
TEMPERATURE = "7000.000000"
GAMMA_OUT = "0.560000"
DO_NTSC_ARTIFACTS = "1.000000"
NTSC_FILTER_FC = "0.000000"
DO_SAT_BLEED = "1.000000"
DO_IN_GLOW = "1.000000"
IN_GLOW_POWER = "1.650000"
IN_GLOW_GAMMA = "2.000000"
IN_GLOW_W = "1.000000"
IN_GLOW_H = "2.000000"
IN_GLOW_NTSC_ARTF_MULT = "1.000000"
IN_GLOW_NTSC_ARTF_TRSH = "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.600000"
DARKLINES_PERIOD = "4.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.300000"
DO_SCANLINES = "1.000000"
SCANLINE_MIN = "0.050000"
SCANLINE_MAX = "4.100000"
SCANLINE_DARK = "0.100000"
SCANLINE_SM_VOFFSET = "70.000000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.550000"
BLOOM_EYE_ADPT_SRT = "0.800000"
DO_CURVATURE = "1.000000"
GEOM_WARP_X = "0.475000"
GEOM_WARP_Y = "0.500000"
GEOM_CORNER_SMOOTH = "400.000000"
DO_BEZEL = "1.000000"
BEZEL_INNER_ZOOM = "-0.010000"
BEZEL_FRAME_ZOOM = "0.170000"
BEZEL_IMAGE_BORDER = "1.020000"
BEZEL_RFL_OFFSET = "0.002000"
BEZEL_REFL_ZOOM = "0.993000"
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_curved;monitor_body_straight;bg_under;bg_over;backdrop"
monitor_body_curved = "textures/monitor_body_curved.png"
monitor_body_curved_linear = "true"
monitor_body_curved_wrap_mode = "clamp_to_edge"
monitor_body_curved_mipmap = "true"
monitor_body_straight = "textures/monitor_body_straight.png"
monitor_body_straight_linear = "true"
monitor_body_straight_wrap_mode = "clamp_to_edge"
monitor_body_straight_mipmap = "true"
bg_under = "textures/background_under.png"
bg_under_linear = "true"
bg_under_wrap_mode = "mirrored_repeat"
bg_under_mipmap = "true"
bg_over = "textures/background_over.png"
bg_over_linear = "true"
bg_over_wrap_mode = "mirrored_repeat"
bg_over_mipmap = "true"
backdrop = "textures/boothill.jpg"
backdrop_linear = "true"
backdrop_wrap_mode = "mirrored_repeat"
backdrop_mipmap = "true"

View File

@ -0,0 +1,258 @@
shaders = "17"
shader0 = "shaders/ntsc_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
alias0 = "ntsc_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "1.000000"
shader1 = "shaders/first_pass.slang"
filter_linear1 = "false"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "false"
alias1 = "first_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
scale_x1 = "2.000000"
scale_type_y1 = "source"
scale_y1 = "2.000000"
shader2 = "shaders/fxaa.slang"
filter_linear2 = "true"
wrap_mode2 = "mirrored_repeat"
mipmap_input2 = "true"
alias2 = "FXAA_pass"
float_framebuffer2 = "false"
srgb_framebuffer2 = "false"
scale_type_x2 = "source"
scale_x2 = "1.000000"
scale_type_y2 = "source"
scale_y2 = "1.000000"
shader3 = "shaders/shift_and_bleed.slang"
filter_linear3 = "true"
wrap_mode3 = "mirrored_repeat"
mipmap_input3 = "false"
alias3 = "shift_and_bleed_pass"
float_framebuffer3 = "true"
srgb_framebuffer3 = "false"
scale_type_x3 = "source"
scale_x3 = "1.000000"
scale_type_y3 = "source"
scale_y3 = "1.000000"
shader4 = "shaders/in_glow_x.slang"
filter_linear4 = "true"
wrap_mode4 = "mirrored_repeat"
mipmap_input4 = "false"
alias4 = "in_glow_pass_x"
float_framebuffer4 = "true"
srgb_framebuffer4 = "false"
scale_type_x4 = "source"
scale_x4 = "1.000000"
scale_type_y4 = "source"
scale_y4 = "1.000000"
shader5 = "shaders/in_glow_y.slang"
filter_linear5 = "true"
wrap_mode5 = "mirrored_repeat"
mipmap_input5 = "false"
alias5 = "in_glow_pass"
float_framebuffer5 = "true"
srgb_framebuffer5 = "false"
scale_type_x5 = "source"
scale_x5 = "1.000000"
scale_type_y5 = "source"
scale_y5 = "1.000000"
shader6 = "shaders/halo_x.slang"
filter_linear6 = "true"
wrap_mode6 = "clamp_to_edge"
mipmap_input6 = "false"
alias6 = "halo_pass_x"
float_framebuffer6 = "true"
srgb_framebuffer6 = "false"
scale_type_x6 = "source"
scale_x6 = "1.000000"
scale_type_y6 = "source"
scale_y6 = "1.000000"
shader7 = "shaders/halo_y.slang"
filter_linear7 = "true"
wrap_mode7 = "clamp_to_edge"
mipmap_input7 = "false"
alias7 = "halo_pass"
float_framebuffer7 = "true"
srgb_framebuffer7 = "false"
scale_type_x7 = "source"
scale_x7 = "1.000000"
scale_type_y7 = "source"
scale_y7 = "1.000000"
shader8 = "shaders/avglum_pass.slang"
filter_linear8 = "true"
wrap_mode8 = "mirrored_repeat"
mipmap_input8 = "false"
alias8 = "avglum_pass"
float_framebuffer8 = "false"
srgb_framebuffer8 = "false"
scale_type_x8 = "source"
scale_x8 = "0.500000"
scale_type_y8 = "source"
scale_y8 = "0.500000"
shader9 = "shaders/reflection_blur_x.slang"
filter_linear9 = "true"
wrap_mode9 = "mirrored_repeat"
mipmap_input9 = "false"
alias9 = "reflected_blurred_pass1"
float_framebuffer9 = "false"
srgb_framebuffer9 = "false"
scale_type_x9 = "source"
scale_x9 = "1.000000"
scale_type_y9 = "source"
scale_y9 = "1.000000"
shader10 = "shaders/reflection_blur_y.slang"
filter_linear10 = "true"
wrap_mode10 = "mirrored_repeat"
mipmap_input10 = "false"
alias10 = "reflected_blurred_pass2"
float_framebuffer10 = "false"
srgb_framebuffer10 = "false"
scale_type_x10 = "source"
scale_x10 = "1.000000"
scale_type_y10 = "source"
scale_y10 = "1.000000"
shader11 = "shaders/bloom_pass_1.slang"
filter_linear11 = "true"
wrap_mode11 = "mirrored_repeat"
mipmap_input11 = "false"
alias11 = "bloom_pass_1"
float_framebuffer11 = "false"
srgb_framebuffer11 = "false"
scale_type_x11 = "source"
scale_x11 = "1.000000"
scale_type_y11 = "source"
scale_y11 = "1.000000"
shader12 = "shaders/bloom_pass_2.slang"
filter_linear12 = "true"
wrap_mode12 = "clamp_to_edge"
mipmap_input12 = "false"
alias12 = "bloom_pass_2"
float_framebuffer12 = "false"
srgb_framebuffer12 = "false"
scale_type_x12 = "source"
scale_x12 = "0.500000"
scale_type_y12 = "source"
scale_y12 = "0.500000"
shader13 = "shaders/bloom_pass_3.slang"
filter_linear13 = "true"
wrap_mode13 = "clamp_to_edge"
mipmap_input13 = "false"
alias13 = "bloom_pass_3"
float_framebuffer13 = "false"
srgb_framebuffer13 = "false"
scale_type_x13 = "source"
scale_x13 = "1.000000"
scale_type_y13 = "source"
scale_y13 = "1.000000"
shader14 = "shaders/bloom_pass_4.slang"
filter_linear14 = "true"
wrap_mode14 = "mirrored_repeat"
mipmap_input14 = "false"
alias14 = "bloom_pass_final"
float_framebuffer14 = "true"
srgb_framebuffer14 = "false"
scale_type_x14 = "source"
scale_x14 = "1.000000"
scale_type_y14 = "source"
scale_y14 = "1.000000"
shader15 = "shaders/ambi_temporal_pass.slang"
filter_linear15 = "true"
wrap_mode15 = "clamp_to_border"
mipmap_input15 = "false"
alias15 = "ambi_temporal_pass"
float_framebuffer15 = "true"
srgb_framebuffer15 = "false"
scale_type_x15 = "viewport"
scale_x15 = "0.050000"
scale_type_y15 = "viewport"
scale_y15 = "0.050000"
shader16 = "shaders/final_pass.slang"
filter_linear16 = "true"
wrap_mode16 = "mirrored_repeat"
mipmap_input16 = "false"
alias16 = "final_pass"
float_framebuffer16 = "false"
srgb_framebuffer16 = "false"
scale_type_x16 = "viewport"
scale_x16 = "1.000000"
scale_type_y16 = "viewport"
scale_y16 = "1.000000"
DO_CCORRECTION = "1.000000"
LUMINANCE = "0.200000"
TEMPERATURE = "7000.000000"
GAMMA_OUT = "0.560000"
DO_NTSC_ARTIFACTS = "1.000000"
NTSC_FILTER_FC = "0.000000"
DO_SAT_BLEED = "1.000000"
DO_IN_GLOW = "1.000000"
IN_GLOW_POWER = "2.000000"
IN_GLOW_GAMMA = "2.000000"
IN_GLOW_W = "1.000000"
IN_GLOW_H = "1.000000"
IN_GLOW_NTSC_ARTF_MULT = "1.000000"
IN_GLOW_NTSC_ARTF_TRSH = "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.500000"
HALO_W = "3.500000"
HALO_H = "3.500000"
HALO_GAMMA = "1.300000"
HALO_VS_SCAN = "0.800000"
DO_SCANLINES = "1.000000"
SCANLINE_MIN = "0.200000"
SCANLINE_DARK = "0.100000"
SCANLINE_SM_TYPE = "1.000000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.550000"
BLOOM_EYE_ADPT_SRT = "0.800000"
DO_CURVATURE = "1.000000"
GEOM_WARP_X = "0.475000"
GEOM_WARP_Y = "0.500000"
GEOM_CORNER_SMOOTH = "400.000000"
DO_BEZEL = "1.000000"
BEZEL_INNER_ZOOM = "-0.010000"
BEZEL_FRAME_ZOOM = "0.170000"
BEZEL_IMAGE_BORDER = "1.020000"
BEZEL_RFL_OFFSET = "0.002000"
BEZEL_REFL_ZOOM = "0.993000"
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_curved;monitor_body_straight;bg_under;bg_over;backdrop"
monitor_body_curved = "textures/monitor_body_curved.png"
monitor_body_curved_linear = "true"
monitor_body_curved_wrap_mode = "clamp_to_edge"
monitor_body_curved_mipmap = "true"
monitor_body_straight = "textures/monitor_body_straight.png"
monitor_body_straight_linear = "true"
monitor_body_straight_wrap_mode = "clamp_to_edge"
monitor_body_straight_mipmap = "true"
bg_under = "textures/background_under.png"
bg_under_linear = "true"
bg_under_wrap_mode = "mirrored_repeat"
bg_under_mipmap = "true"
bg_over = "textures/background_over.png"
bg_over_linear = "true"
bg_over_wrap_mode = "mirrored_repeat"
bg_over_mipmap = "true"
backdrop = "textures/boothill.jpg"
backdrop_linear = "true"
backdrop_wrap_mode = "mirrored_repeat"
backdrop_mipmap = "true"

View File

@ -1,180 +1,180 @@
shaders = "17"
shader0 = "shaders/first_pass.slang"
shader0 = "shaders/ntsc_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
alias0 = "first_pass"
alias0 = "ntsc_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "2.000000"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "2.000000"
shader1 = "shaders/fxaa.slang"
filter_linear1 = "true"
scale_y0 = "1.000000"
shader1 = "shaders/first_pass.slang"
filter_linear1 = "false"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "true"
alias1 = "FXAA_pass"
mipmap_input1 = "false"
alias1 = "first_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
scale_x1 = "1.000000"
scale_x1 = "2.000000"
scale_type_y1 = "source"
scale_y1 = "1.000000"
shader2 = "shaders/shift_and_bleed.slang"
scale_y1 = "2.000000"
shader2 = "shaders/fxaa.slang"
filter_linear2 = "true"
wrap_mode2 = "mirrored_repeat"
mipmap_input2 = "false"
alias2 = "shift_and_bleed_pass"
mipmap_input2 = "true"
alias2 = "FXAA_pass"
float_framebuffer2 = "false"
srgb_framebuffer2 = "false"
scale_type_x2 = "source"
scale_x2 = "1.000000"
scale_type_y2 = "source"
scale_y2 = "1.000000"
shader3 = "shaders/in_glow.slang"
shader3 = "shaders/shift_and_bleed.slang"
filter_linear3 = "true"
wrap_mode3 = "mirrored_repeat"
mipmap_input3 = "false"
alias3 = "in_glow_pass"
alias3 = "shift_and_bleed_pass"
float_framebuffer3 = "true"
srgb_framebuffer3 = "false"
scale_type_x3 = "source"
scale_x3 = "1.000000"
scale_type_y3 = "source"
scale_y3 = "1.000000"
shader4 = "shaders/halo.slang"
shader4 = "shaders/in_glow_x.slang"
filter_linear4 = "true"
wrap_mode4 = "mirrored_repeat"
mipmap_input4 = "false"
alias4 = "halo_pass"
alias4 = "in_glow_pass_x"
float_framebuffer4 = "true"
srgb_framebuffer4 = "false"
scale_type_x4 = "source"
scale_x4 = "1.000000"
scale_type_y4 = "source"
scale_y4 = "1.000000"
shader5 = "shaders/avglum_pass.slang"
shader5 = "shaders/in_glow_y.slang"
filter_linear5 = "true"
wrap_mode5 = "mirrored_repeat"
mipmap_input5 = "false"
alias5 = "avglum_pass"
float_framebuffer5 = "false"
alias5 = "in_glow_pass"
float_framebuffer5 = "true"
srgb_framebuffer5 = "false"
scale_type_x5 = "source"
scale_x5 = "0.500000"
scale_x5 = "1.000000"
scale_type_y5 = "source"
scale_y5 = "0.500000"
shader6 = "shaders/reflection_blur_h.slang"
scale_y5 = "1.000000"
shader6 = "shaders/halo_x.slang"
filter_linear6 = "true"
wrap_mode6 = "mirrored_repeat"
wrap_mode6 = "clamp_to_edge"
mipmap_input6 = "false"
alias6 = "reflected_blurred_pass1"
float_framebuffer6 = "false"
alias6 = "halo_pass_x"
float_framebuffer6 = "true"
srgb_framebuffer6 = "false"
scale_type_x6 = "source"
scale_x6 = "1.000000"
scale_type_y6 = "source"
scale_y6 = "1.000000"
shader7 = "shaders/reflection_blur_v.slang"
shader7 = "shaders/halo_y.slang"
filter_linear7 = "true"
wrap_mode7 = "mirrored_repeat"
wrap_mode7 = "clamp_to_edge"
mipmap_input7 = "false"
alias7 = "reflected_blurred_pass2"
float_framebuffer7 = "false"
alias7 = "halo_pass"
float_framebuffer7 = "true"
srgb_framebuffer7 = "false"
scale_type_x7 = "source"
scale_x7 = "1.000000"
scale_type_y7 = "source"
scale_y7 = "1.000000"
shader8 = "shaders/bloom_pass_1.slang"
shader8 = "shaders/avglum_pass.slang"
filter_linear8 = "true"
wrap_mode8 = "mirrored_repeat"
mipmap_input8 = "false"
alias8 = "bloom_pass_1"
float_framebuffer8 = "true"
alias8 = "avglum_pass"
float_framebuffer8 = "false"
srgb_framebuffer8 = "false"
scale_type_x8 = "source"
scale_x8 = "1.000000"
scale_x8 = "0.500000"
scale_type_y8 = "source"
scale_y8 = "1.000000"
shader9 = "shaders/bloom_pass_2.slang"
scale_y8 = "0.500000"
shader9 = "shaders/reflection_blur_x.slang"
filter_linear9 = "true"
wrap_mode9 = "clamp_to_edge"
wrap_mode9 = "mirrored_repeat"
mipmap_input9 = "false"
alias9 = "bloom_pass_2"
alias9 = "reflected_blurred_pass1"
float_framebuffer9 = "false"
srgb_framebuffer9 = "false"
scale_type_x9 = "source"
scale_x9 = "0.500000"
scale_x9 = "1.000000"
scale_type_y9 = "source"
scale_y9 = "0.500000"
shader10 = "shaders/bloom_pass_3.slang"
scale_y9 = "1.000000"
shader10 = "shaders/reflection_blur_y.slang"
filter_linear10 = "true"
wrap_mode10 = "clamp_to_edge"
wrap_mode10 = "mirrored_repeat"
mipmap_input10 = "false"
alias10 = "bloom_pass_3"
alias10 = "reflected_blurred_pass2"
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"
shader11 = "shaders/bloom_pass_1.slang"
filter_linear11 = "true"
wrap_mode11 = "mirrored_repeat"
mipmap_input11 = "false"
alias11 = "bloom_pass_final"
alias11 = "bloom_pass_1"
float_framebuffer11 = "false"
srgb_framebuffer11 = "false"
scale_type_x11 = "source"
scale_x11 = "1.000000"
scale_type_y11 = "source"
scale_y11 = "1.000000"
shader12 = "shaders/ambi_push_pass.slang"
shader12 = "shaders/bloom_pass_2.slang"
filter_linear12 = "true"
wrap_mode12 = "mirrored_repeat"
wrap_mode12 = "clamp_to_edge"
mipmap_input12 = "false"
alias12 = "ambi_push_pass"
float_framebuffer12 = "true"
alias12 = "bloom_pass_2"
float_framebuffer12 = "false"
srgb_framebuffer12 = "false"
scale_type_x12 = "source"
scale_x12 = "1.000000"
scale_x12 = "0.500000"
scale_type_y12 = "source"
scale_y12 = "1.000000"
shader13 = "shaders/ambi_pre_pass.slang"
scale_y12 = "0.500000"
shader13 = "shaders/bloom_pass_3.slang"
filter_linear13 = "true"
wrap_mode13 = "clamp_to_border"
mipmap_input13 = "true"
alias13 = "ambi_pre_pass1"
wrap_mode13 = "clamp_to_edge"
mipmap_input13 = "false"
alias13 = "bloom_pass_3"
float_framebuffer13 = "false"
srgb_framebuffer13 = "false"
scale_type_x13 = "source"
scale_x13 = "1.000000"
scale_type_y13 = "source"
scale_y13 = "1.000000"
shader14 = "shaders/ambi_temporal_pass.slang"
shader14 = "shaders/bloom_pass_4.slang"
filter_linear14 = "true"
wrap_mode14 = "clamp_to_border"
wrap_mode14 = "mirrored_repeat"
mipmap_input14 = "false"
alias14 = "ambi_temporal_pass"
alias14 = "bloom_pass_final"
float_framebuffer14 = "true"
srgb_framebuffer14 = "false"
scale_type_x14 = "source"
scale_x14 = "1.000000"
scale_type_y14 = "source"
scale_y14 = "1.000000"
shader15 = "shaders/isrotated.slang"
shader15 = "shaders/ambi_temporal_pass.slang"
filter_linear15 = "true"
wrap_mode15 = "mirrored_repeat"
wrap_mode15 = "clamp_to_border"
mipmap_input15 = "false"
alias15 = "isrotated_pass"
float_framebuffer15 = "false"
alias15 = "ambi_temporal_pass"
float_framebuffer15 = "true"
srgb_framebuffer15 = "false"
scale_type_x15 = "viewport"
scale_x15 = "0.100000"
scale_x15 = "0.050000"
scale_type_y15 = "viewport"
scale_y15 = "0.100000"
scale_y15 = "0.050000"
shader16 = "shaders/final_pass.slang"
filter_linear16 = "true"
wrap_mode16 = "mirrored_repeat"
@ -188,20 +188,15 @@ 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"
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_POWER = "2.000000"
IN_GLOW_GAMMA = "2.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"
@ -214,23 +209,22 @@ HALO_H = "3.500000"
HALO_GAMMA = "1.300000"
HALO_VS_SCAN = "0.800000"
DO_SCANLINES = "1.000000"
SCANLINE_DARK = "0.300000"
SCANLINE_MIN = "0.200000"
SCANLINE_DARK = "0.100000"
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"
BLOOM_MIX = "0.550000"
BLOOM_EYE_ADPT_SRT = "0.800000"
DO_CURVATURE = "1.000000"
GEOM_WARP_X = "0.500000"
GEOM_WARP_X = "0.475000"
GEOM_WARP_Y = "0.500000"
GEOM_CORNER_SIZE = "0.005000"
GEOM_CORNER_SMOOTH = "700.000000"
GEOM_CORNER_SMOOTH = "400.000000"
DO_BEZEL = "1.000000"
BEZEL_INNER_ZOOM = "-0.010000"
BEZEL_FRAME_ZOOM = "0.170000"
BEZEL_IMAGE_BORDER = "1.020000"
BEZEL_RFL_OFFSET = "0.002000"
BEZEL_REFL_ZOOM = "0.993000"
AMBI_FALLOFF = "0.400000"
AMBI_POWER = "5.000000"
DO_VIGNETTE = "1.000000"
@ -238,11 +232,15 @@ 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"
textures = "monitor_body_curved;monitor_body_straight;bg_under;bg_over;backdrop"
monitor_body_curved = "textures/monitor_body_curved.png"
monitor_body_curved_linear = "true"
monitor_body_curved_wrap_mode = "clamp_to_edge"
monitor_body_curved_mipmap = "true"
monitor_body_straight = "textures/monitor_body_straight.png"
monitor_body_straight_linear = "true"
monitor_body_straight_wrap_mode = "clamp_to_edge"
monitor_body_straight_mipmap = "true"
bg_under = "textures/background_under.png"
bg_under_linear = "true"
bg_under_wrap_mode = "mirrored_repeat"
@ -251,3 +249,7 @@ bg_over = "textures/background_over.png"
bg_over_linear = "true"
bg_over_wrap_mode = "mirrored_repeat"
bg_over_mipmap = "true"
backdrop = "textures/boothill.jpg"
backdrop_linear = "true"
backdrop_wrap_mode = "mirrored_repeat"
backdrop_mipmap = "true"

View File

@ -1,180 +1,180 @@
shaders = "17"
shader0 = "shaders/first_pass.slang"
shader0 = "shaders/ntsc_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
alias0 = "first_pass"
alias0 = "ntsc_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "2.000000"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "2.000000"
shader1 = "shaders/fxaa.slang"
filter_linear1 = "true"
scale_y0 = "1.000000"
shader1 = "shaders/first_pass.slang"
filter_linear1 = "false"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "true"
alias1 = "FXAA_pass"
mipmap_input1 = "false"
alias1 = "first_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
scale_x1 = "1.000000"
scale_x1 = "2.000000"
scale_type_y1 = "source"
scale_y1 = "1.000000"
shader2 = "shaders/shift_and_bleed.slang"
scale_y1 = "2.000000"
shader2 = "shaders/fxaa.slang"
filter_linear2 = "true"
wrap_mode2 = "mirrored_repeat"
mipmap_input2 = "false"
alias2 = "shift_and_bleed_pass"
mipmap_input2 = "true"
alias2 = "FXAA_pass"
float_framebuffer2 = "false"
srgb_framebuffer2 = "false"
scale_type_x2 = "source"
scale_x2 = "1.000000"
scale_type_y2 = "source"
scale_y2 = "1.000000"
shader3 = "shaders/in_glow.slang"
shader3 = "shaders/shift_and_bleed.slang"
filter_linear3 = "true"
wrap_mode3 = "mirrored_repeat"
mipmap_input3 = "false"
alias3 = "in_glow_pass"
alias3 = "shift_and_bleed_pass"
float_framebuffer3 = "true"
srgb_framebuffer3 = "false"
scale_type_x3 = "source"
scale_x3 = "1.000000"
scale_type_y3 = "source"
scale_y3 = "1.000000"
shader4 = "shaders/halo.slang"
shader4 = "shaders/in_glow_x.slang"
filter_linear4 = "true"
wrap_mode4 = "mirrored_repeat"
mipmap_input4 = "false"
alias4 = "halo_pass"
alias4 = "in_glow_pass_x"
float_framebuffer4 = "true"
srgb_framebuffer4 = "false"
scale_type_x4 = "source"
scale_x4 = "1.000000"
scale_type_y4 = "source"
scale_y4 = "1.000000"
shader5 = "shaders/avglum_pass.slang"
shader5 = "shaders/in_glow_y.slang"
filter_linear5 = "true"
wrap_mode5 = "mirrored_repeat"
mipmap_input5 = "false"
alias5 = "avglum_pass"
float_framebuffer5 = "false"
alias5 = "in_glow_pass"
float_framebuffer5 = "true"
srgb_framebuffer5 = "false"
scale_type_x5 = "source"
scale_x5 = "0.500000"
scale_x5 = "1.000000"
scale_type_y5 = "source"
scale_y5 = "0.500000"
shader6 = "shaders/reflection_blur_h.slang"
scale_y5 = "1.000000"
shader6 = "shaders/halo_x.slang"
filter_linear6 = "true"
wrap_mode6 = "mirrored_repeat"
wrap_mode6 = "clamp_to_edge"
mipmap_input6 = "false"
alias6 = "reflected_blurred_pass1"
float_framebuffer6 = "false"
alias6 = "halo_pass_x"
float_framebuffer6 = "true"
srgb_framebuffer6 = "false"
scale_type_x6 = "source"
scale_x6 = "1.000000"
scale_type_y6 = "source"
scale_y6 = "1.000000"
shader7 = "shaders/reflection_blur_v.slang"
shader7 = "shaders/halo_y.slang"
filter_linear7 = "true"
wrap_mode7 = "mirrored_repeat"
wrap_mode7 = "clamp_to_edge"
mipmap_input7 = "false"
alias7 = "reflected_blurred_pass2"
float_framebuffer7 = "false"
alias7 = "halo_pass"
float_framebuffer7 = "true"
srgb_framebuffer7 = "false"
scale_type_x7 = "source"
scale_x7 = "1.000000"
scale_type_y7 = "source"
scale_y7 = "1.000000"
shader8 = "shaders/bloom_pass_1.slang"
shader8 = "shaders/avglum_pass.slang"
filter_linear8 = "true"
wrap_mode8 = "mirrored_repeat"
mipmap_input8 = "false"
alias8 = "bloom_pass_1"
float_framebuffer8 = "true"
alias8 = "avglum_pass"
float_framebuffer8 = "false"
srgb_framebuffer8 = "false"
scale_type_x8 = "source"
scale_x8 = "1.000000"
scale_x8 = "0.500000"
scale_type_y8 = "source"
scale_y8 = "1.000000"
shader9 = "shaders/bloom_pass_2.slang"
scale_y8 = "0.500000"
shader9 = "shaders/reflection_blur_x.slang"
filter_linear9 = "true"
wrap_mode9 = "clamp_to_edge"
wrap_mode9 = "mirrored_repeat"
mipmap_input9 = "false"
alias9 = "bloom_pass_2"
alias9 = "reflected_blurred_pass1"
float_framebuffer9 = "false"
srgb_framebuffer9 = "false"
scale_type_x9 = "source"
scale_x9 = "0.500000"
scale_x9 = "1.000000"
scale_type_y9 = "source"
scale_y9 = "0.500000"
shader10 = "shaders/bloom_pass_3.slang"
scale_y9 = "1.000000"
shader10 = "shaders/reflection_blur_y.slang"
filter_linear10 = "true"
wrap_mode10 = "clamp_to_edge"
wrap_mode10 = "mirrored_repeat"
mipmap_input10 = "false"
alias10 = "bloom_pass_3"
alias10 = "reflected_blurred_pass2"
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"
shader11 = "shaders/bloom_pass_1.slang"
filter_linear11 = "true"
wrap_mode11 = "mirrored_repeat"
mipmap_input11 = "false"
alias11 = "bloom_pass_final"
alias11 = "bloom_pass_1"
float_framebuffer11 = "false"
srgb_framebuffer11 = "false"
scale_type_x11 = "source"
scale_x11 = "1.000000"
scale_type_y11 = "source"
scale_y11 = "1.000000"
shader12 = "shaders/ambi_push_pass.slang"
shader12 = "shaders/bloom_pass_2.slang"
filter_linear12 = "true"
wrap_mode12 = "mirrored_repeat"
wrap_mode12 = "clamp_to_edge"
mipmap_input12 = "false"
alias12 = "ambi_push_pass"
float_framebuffer12 = "true"
alias12 = "bloom_pass_2"
float_framebuffer12 = "false"
srgb_framebuffer12 = "false"
scale_type_x12 = "source"
scale_x12 = "1.000000"
scale_x12 = "0.500000"
scale_type_y12 = "source"
scale_y12 = "1.000000"
shader13 = "shaders/ambi_pre_pass.slang"
scale_y12 = "0.500000"
shader13 = "shaders/bloom_pass_3.slang"
filter_linear13 = "true"
wrap_mode13 = "clamp_to_border"
mipmap_input13 = "true"
alias13 = "ambi_pre_pass1"
wrap_mode13 = "clamp_to_edge"
mipmap_input13 = "false"
alias13 = "bloom_pass_3"
float_framebuffer13 = "false"
srgb_framebuffer13 = "false"
scale_type_x13 = "source"
scale_x13 = "1.000000"
scale_type_y13 = "source"
scale_y13 = "1.000000"
shader14 = "shaders/ambi_temporal_pass.slang"
shader14 = "shaders/bloom_pass_4.slang"
filter_linear14 = "true"
wrap_mode14 = "clamp_to_border"
wrap_mode14 = "mirrored_repeat"
mipmap_input14 = "false"
alias14 = "ambi_temporal_pass"
alias14 = "bloom_pass_final"
float_framebuffer14 = "true"
srgb_framebuffer14 = "false"
scale_type_x14 = "source"
scale_x14 = "1.000000"
scale_type_y14 = "source"
scale_y14 = "1.000000"
shader15 = "shaders/isrotated.slang"
shader15 = "shaders/ambi_temporal_pass.slang"
filter_linear15 = "true"
wrap_mode15 = "mirrored_repeat"
wrap_mode15 = "clamp_to_border"
mipmap_input15 = "false"
alias15 = "isrotated_pass"
float_framebuffer15 = "false"
alias15 = "ambi_temporal_pass"
float_framebuffer15 = "true"
srgb_framebuffer15 = "false"
scale_type_x15 = "viewport"
scale_x15 = "0.100000"
scale_x15 = "0.050000"
scale_type_y15 = "viewport"
scale_y15 = "0.100000"
scale_y15 = "0.050000"
shader16 = "shaders/final_pass.slang"
filter_linear16 = "true"
wrap_mode16 = "mirrored_repeat"
@ -188,21 +188,16 @@ 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_POWER = "2.000000"
IN_GLOW_GAMMA = "2.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"
@ -215,23 +210,22 @@ HALO_H = "3.500000"
HALO_GAMMA = "1.300000"
HALO_VS_SCAN = "0.800000"
DO_SCANLINES = "1.000000"
SCANLINE_DARK = "0.300000"
SCANLINE_MIN = "0.200000"
SCANLINE_DARK = "0.100000"
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"
BLOOM_MIX = "0.550000"
BLOOM_EYE_ADPT_SRT = "0.800000"
DO_CURVATURE = "1.000000"
GEOM_WARP_X = "0.500000"
GEOM_WARP_X = "0.475000"
GEOM_WARP_Y = "0.500000"
GEOM_CORNER_SIZE = "0.005000"
GEOM_CORNER_SMOOTH = "700.000000"
GEOM_CORNER_SMOOTH = "400.000000"
DO_BEZEL = "1.000000"
BEZEL_INNER_ZOOM = "-0.010000"
BEZEL_FRAME_ZOOM = "0.170000"
BEZEL_IMAGE_BORDER = "1.020000"
BEZEL_RFL_OFFSET = "0.002000"
BEZEL_REFL_ZOOM = "0.993000"
AMBI_FALLOFF = "0.400000"
AMBI_POWER = "5.000000"
DO_VIGNETTE = "1.000000"
@ -239,11 +233,15 @@ 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"
textures = "monitor_body_curved;monitor_body_straight;bg_under;bg_over;backdrop"
monitor_body_curved = "textures/monitor_body_curved.png"
monitor_body_curved_linear = "true"
monitor_body_curved_wrap_mode = "clamp_to_edge"
monitor_body_curved_mipmap = "true"
monitor_body_straight = "textures/monitor_body_straight.png"
monitor_body_straight_linear = "true"
monitor_body_straight_wrap_mode = "clamp_to_edge"
monitor_body_straight_mipmap = "true"
bg_under = "textures/background_under.png"
bg_under_linear = "true"
bg_under_wrap_mode = "mirrored_repeat"
@ -252,3 +250,7 @@ bg_over = "textures/background_over.png"
bg_over_linear = "true"
bg_over_wrap_mode = "mirrored_repeat"
bg_over_mipmap = "true"
backdrop = "textures/boothill.jpg"
backdrop_linear = "true"
backdrop_wrap_mode = "mirrored_repeat"
backdrop_mipmap = "true"

View File

@ -1,180 +1,180 @@
shaders = "17"
shader0 = "shaders/first_pass.slang"
shader0 = "shaders/ntsc_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
alias0 = "first_pass"
alias0 = "ntsc_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "2.000000"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "2.000000"
shader1 = "shaders/fxaa.slang"
filter_linear1 = "true"
scale_y0 = "1.000000"
shader1 = "shaders/first_pass.slang"
filter_linear1 = "false"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "true"
alias1 = "FXAA_pass"
mipmap_input1 = "false"
alias1 = "first_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
scale_x1 = "1.000000"
scale_x1 = "2.000000"
scale_type_y1 = "source"
scale_y1 = "1.000000"
shader2 = "shaders/shift_and_bleed.slang"
scale_y1 = "2.000000"
shader2 = "shaders/fxaa.slang"
filter_linear2 = "true"
wrap_mode2 = "mirrored_repeat"
mipmap_input2 = "false"
alias2 = "shift_and_bleed_pass"
mipmap_input2 = "true"
alias2 = "FXAA_pass"
float_framebuffer2 = "false"
srgb_framebuffer2 = "false"
scale_type_x2 = "source"
scale_x2 = "1.000000"
scale_type_y2 = "source"
scale_y2 = "1.000000"
shader3 = "shaders/in_glow.slang"
shader3 = "shaders/shift_and_bleed.slang"
filter_linear3 = "true"
wrap_mode3 = "mirrored_repeat"
mipmap_input3 = "false"
alias3 = "in_glow_pass"
alias3 = "shift_and_bleed_pass"
float_framebuffer3 = "true"
srgb_framebuffer3 = "false"
scale_type_x3 = "source"
scale_x3 = "1.000000"
scale_type_y3 = "source"
scale_y3 = "1.000000"
shader4 = "shaders/halo.slang"
shader4 = "shaders/in_glow_x.slang"
filter_linear4 = "true"
wrap_mode4 = "mirrored_repeat"
mipmap_input4 = "false"
alias4 = "halo_pass"
alias4 = "in_glow_pass_x"
float_framebuffer4 = "true"
srgb_framebuffer4 = "false"
scale_type_x4 = "source"
scale_x4 = "1.000000"
scale_type_y4 = "source"
scale_y4 = "1.000000"
shader5 = "shaders/avglum_pass.slang"
shader5 = "shaders/in_glow_y.slang"
filter_linear5 = "true"
wrap_mode5 = "mirrored_repeat"
mipmap_input5 = "false"
alias5 = "avglum_pass"
float_framebuffer5 = "false"
alias5 = "in_glow_pass"
float_framebuffer5 = "true"
srgb_framebuffer5 = "false"
scale_type_x5 = "source"
scale_x5 = "0.500000"
scale_x5 = "1.000000"
scale_type_y5 = "source"
scale_y5 = "0.500000"
shader6 = "shaders/reflection_blur_h.slang"
scale_y5 = "1.000000"
shader6 = "shaders/halo_x.slang"
filter_linear6 = "true"
wrap_mode6 = "mirrored_repeat"
wrap_mode6 = "clamp_to_edge"
mipmap_input6 = "false"
alias6 = "reflected_blurred_pass1"
float_framebuffer6 = "false"
alias6 = "halo_pass_x"
float_framebuffer6 = "true"
srgb_framebuffer6 = "false"
scale_type_x6 = "source"
scale_x6 = "1.000000"
scale_type_y6 = "source"
scale_y6 = "1.000000"
shader7 = "shaders/reflection_blur_v.slang"
shader7 = "shaders/halo_y.slang"
filter_linear7 = "true"
wrap_mode7 = "mirrored_repeat"
wrap_mode7 = "clamp_to_edge"
mipmap_input7 = "false"
alias7 = "reflected_blurred_pass2"
float_framebuffer7 = "false"
alias7 = "halo_pass"
float_framebuffer7 = "true"
srgb_framebuffer7 = "false"
scale_type_x7 = "source"
scale_x7 = "1.000000"
scale_type_y7 = "source"
scale_y7 = "1.000000"
shader8 = "shaders/bloom_pass_1.slang"
shader8 = "shaders/avglum_pass.slang"
filter_linear8 = "true"
wrap_mode8 = "mirrored_repeat"
mipmap_input8 = "false"
alias8 = "bloom_pass_1"
float_framebuffer8 = "true"
alias8 = "avglum_pass"
float_framebuffer8 = "false"
srgb_framebuffer8 = "false"
scale_type_x8 = "source"
scale_x8 = "1.000000"
scale_x8 = "0.500000"
scale_type_y8 = "source"
scale_y8 = "1.000000"
shader9 = "shaders/bloom_pass_2.slang"
scale_y8 = "0.500000"
shader9 = "shaders/reflection_blur_x.slang"
filter_linear9 = "true"
wrap_mode9 = "clamp_to_edge"
wrap_mode9 = "mirrored_repeat"
mipmap_input9 = "false"
alias9 = "bloom_pass_2"
alias9 = "reflected_blurred_pass1"
float_framebuffer9 = "false"
srgb_framebuffer9 = "false"
scale_type_x9 = "source"
scale_x9 = "0.500000"
scale_x9 = "1.000000"
scale_type_y9 = "source"
scale_y9 = "0.500000"
shader10 = "shaders/bloom_pass_3.slang"
scale_y9 = "1.000000"
shader10 = "shaders/reflection_blur_y.slang"
filter_linear10 = "true"
wrap_mode10 = "clamp_to_edge"
wrap_mode10 = "mirrored_repeat"
mipmap_input10 = "false"
alias10 = "bloom_pass_3"
alias10 = "reflected_blurred_pass2"
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"
shader11 = "shaders/bloom_pass_1.slang"
filter_linear11 = "true"
wrap_mode11 = "mirrored_repeat"
mipmap_input11 = "false"
alias11 = "bloom_pass_final"
alias11 = "bloom_pass_1"
float_framebuffer11 = "false"
srgb_framebuffer11 = "false"
scale_type_x11 = "source"
scale_x11 = "1.000000"
scale_type_y11 = "source"
scale_y11 = "1.000000"
shader12 = "shaders/ambi_push_pass.slang"
shader12 = "shaders/bloom_pass_2.slang"
filter_linear12 = "true"
wrap_mode12 = "mirrored_repeat"
wrap_mode12 = "clamp_to_edge"
mipmap_input12 = "false"
alias12 = "ambi_push_pass"
float_framebuffer12 = "true"
alias12 = "bloom_pass_2"
float_framebuffer12 = "false"
srgb_framebuffer12 = "false"
scale_type_x12 = "source"
scale_x12 = "1.000000"
scale_x12 = "0.500000"
scale_type_y12 = "source"
scale_y12 = "1.000000"
shader13 = "shaders/ambi_pre_pass.slang"
scale_y12 = "0.500000"
shader13 = "shaders/bloom_pass_3.slang"
filter_linear13 = "true"
wrap_mode13 = "clamp_to_border"
mipmap_input13 = "true"
alias13 = "ambi_pre_pass1"
wrap_mode13 = "clamp_to_edge"
mipmap_input13 = "false"
alias13 = "bloom_pass_3"
float_framebuffer13 = "false"
srgb_framebuffer13 = "false"
scale_type_x13 = "source"
scale_x13 = "1.000000"
scale_type_y13 = "source"
scale_y13 = "1.000000"
shader14 = "shaders/ambi_temporal_pass.slang"
shader14 = "shaders/bloom_pass_4.slang"
filter_linear14 = "true"
wrap_mode14 = "clamp_to_border"
wrap_mode14 = "mirrored_repeat"
mipmap_input14 = "false"
alias14 = "ambi_temporal_pass"
alias14 = "bloom_pass_final"
float_framebuffer14 = "true"
srgb_framebuffer14 = "false"
scale_type_x14 = "source"
scale_x14 = "1.000000"
scale_type_y14 = "source"
scale_y14 = "1.000000"
shader15 = "shaders/isrotated.slang"
shader15 = "shaders/ambi_temporal_pass.slang"
filter_linear15 = "true"
wrap_mode15 = "mirrored_repeat"
wrap_mode15 = "clamp_to_border"
mipmap_input15 = "false"
alias15 = "isrotated_pass"
float_framebuffer15 = "false"
alias15 = "ambi_temporal_pass"
float_framebuffer15 = "true"
srgb_framebuffer15 = "false"
scale_type_x15 = "viewport"
scale_x15 = "0.100000"
scale_x15 = "0.050000"
scale_type_y15 = "viewport"
scale_y15 = "0.100000"
scale_y15 = "0.050000"
shader16 = "shaders/final_pass.slang"
filter_linear16 = "true"
wrap_mode16 = "mirrored_repeat"
@ -193,62 +193,65 @@ CONTRAST = "0.050000"
BRIGHTNESS = "0.050000"
TEMPERATURE = "7500.000000"
GAMMA_OUT = "0.560000"
DO_RF_NOISE = "1.000000"
RF_NOISE_STRENGTH = "0.025000"
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"
SHIFT_R = "-20.000000"
SHIFT_G = "1.000000"
SHIFT_B = "20.000000"
DO_IN_GLOW = "1.000000"
IN_GLOW_POWER = "1.650000"
IN_GLOW_GAMMA = "2.000000"
IN_GLOW_SPREAD = "2.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_PERIOD = "4.000000"
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"
HALO_W = "3.000000"
HALO_H = "3.000000"
HALO_GAMMA = "1.400000"
SCANLINE_DARK = "0.700000"
SCANLINE_COMPENSATION = "0.200000"
SCANLINES_BLEEDING = "1.000000"
SCANLINE_SM_TYPE = "1.000000"
SCANLINE_SM_STRENGTH = "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_MIX = "0.500000"
DO_CURVATURE = "1.000000"
GEOM_WARP_X = "0.500000"
GEOM_WARP_X = "0.475000"
GEOM_WARP_Y = "0.500000"
GEOM_CORNER_SIZE = "0.005000"
GEOM_CORNER_SMOOTH = "700.000000"
GEOM_CORNER_SMOOTH = "400.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"
AMBI_POWER = "1.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"
textures = "monitor_body_curved;monitor_body_straight;bg_under;bg_over;backdrop"
monitor_body_curved = "textures/monitor_body_curved.png"
monitor_body_curved_linear = "true"
monitor_body_curved_wrap_mode = "clamp_to_edge"
monitor_body_curved_mipmap = "true"
monitor_body_straight = "textures/monitor_body_straight.png"
monitor_body_straight_linear = "true"
monitor_body_straight_wrap_mode = "clamp_to_edge"
monitor_body_straight_mipmap = "true"
bg_under = "textures/background_under.png"
bg_under_linear = "true"
bg_under_wrap_mode = "mirrored_repeat"
@ -257,3 +260,7 @@ bg_over = "textures/background_over.png"
bg_over_linear = "true"
bg_over_wrap_mode = "mirrored_repeat"
bg_over_mipmap = "true"
backdrop = "textures/boothill.jpg"
backdrop_linear = "true"
backdrop_wrap_mode = "mirrored_repeat"
backdrop_mipmap = "true"

View File

@ -1,180 +1,180 @@
shaders = "17"
shader0 = "shaders/first_pass.slang"
shader0 = "shaders/ntsc_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
alias0 = "first_pass"
alias0 = "ntsc_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "2.000000"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "2.000000"
shader1 = "shaders/fxaa.slang"
filter_linear1 = "true"
scale_y0 = "1.000000"
shader1 = "shaders/first_pass.slang"
filter_linear1 = "false"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "true"
alias1 = "FXAA_pass"
mipmap_input1 = "false"
alias1 = "first_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
scale_x1 = "1.000000"
scale_x1 = "2.000000"
scale_type_y1 = "source"
scale_y1 = "1.000000"
shader2 = "shaders/shift_and_bleed.slang"
scale_y1 = "2.000000"
shader2 = "shaders/fxaa.slang"
filter_linear2 = "true"
wrap_mode2 = "mirrored_repeat"
mipmap_input2 = "false"
alias2 = "shift_and_bleed_pass"
mipmap_input2 = "true"
alias2 = "FXAA_pass"
float_framebuffer2 = "false"
srgb_framebuffer2 = "false"
scale_type_x2 = "source"
scale_x2 = "1.000000"
scale_type_y2 = "source"
scale_y2 = "1.000000"
shader3 = "shaders/in_glow.slang"
shader3 = "shaders/shift_and_bleed.slang"
filter_linear3 = "true"
wrap_mode3 = "mirrored_repeat"
mipmap_input3 = "false"
alias3 = "in_glow_pass"
alias3 = "shift_and_bleed_pass"
float_framebuffer3 = "true"
srgb_framebuffer3 = "false"
scale_type_x3 = "source"
scale_x3 = "1.000000"
scale_type_y3 = "source"
scale_y3 = "1.000000"
shader4 = "shaders/halo.slang"
shader4 = "shaders/in_glow_x.slang"
filter_linear4 = "true"
wrap_mode4 = "mirrored_repeat"
mipmap_input4 = "false"
alias4 = "halo_pass"
alias4 = "in_glow_pass_x"
float_framebuffer4 = "true"
srgb_framebuffer4 = "false"
scale_type_x4 = "source"
scale_x4 = "1.000000"
scale_type_y4 = "source"
scale_y4 = "1.000000"
shader5 = "shaders/avglum_pass.slang"
shader5 = "shaders/in_glow_y.slang"
filter_linear5 = "true"
wrap_mode5 = "mirrored_repeat"
mipmap_input5 = "false"
alias5 = "avglum_pass"
float_framebuffer5 = "false"
alias5 = "in_glow_pass"
float_framebuffer5 = "true"
srgb_framebuffer5 = "false"
scale_type_x5 = "source"
scale_x5 = "0.500000"
scale_x5 = "1.000000"
scale_type_y5 = "source"
scale_y5 = "0.500000"
shader6 = "shaders/reflection_blur_h.slang"
scale_y5 = "1.000000"
shader6 = "shaders/halo_x.slang"
filter_linear6 = "true"
wrap_mode6 = "mirrored_repeat"
wrap_mode6 = "clamp_to_edge"
mipmap_input6 = "false"
alias6 = "reflected_blurred_pass1"
float_framebuffer6 = "false"
alias6 = "halo_pass_x"
float_framebuffer6 = "true"
srgb_framebuffer6 = "false"
scale_type_x6 = "source"
scale_x6 = "1.000000"
scale_type_y6 = "source"
scale_y6 = "1.000000"
shader7 = "shaders/reflection_blur_v.slang"
shader7 = "shaders/halo_y.slang"
filter_linear7 = "true"
wrap_mode7 = "mirrored_repeat"
wrap_mode7 = "clamp_to_edge"
mipmap_input7 = "false"
alias7 = "reflected_blurred_pass2"
float_framebuffer7 = "false"
alias7 = "halo_pass"
float_framebuffer7 = "true"
srgb_framebuffer7 = "false"
scale_type_x7 = "source"
scale_x7 = "1.000000"
scale_type_y7 = "source"
scale_y7 = "1.000000"
shader8 = "shaders/bloom_pass_1.slang"
shader8 = "shaders/avglum_pass.slang"
filter_linear8 = "true"
wrap_mode8 = "mirrored_repeat"
mipmap_input8 = "false"
alias8 = "bloom_pass_1"
float_framebuffer8 = "true"
alias8 = "avglum_pass"
float_framebuffer8 = "false"
srgb_framebuffer8 = "false"
scale_type_x8 = "source"
scale_x8 = "1.000000"
scale_x8 = "0.500000"
scale_type_y8 = "source"
scale_y8 = "1.000000"
shader9 = "shaders/bloom_pass_2.slang"
scale_y8 = "0.500000"
shader9 = "shaders/reflection_blur_x.slang"
filter_linear9 = "true"
wrap_mode9 = "clamp_to_edge"
wrap_mode9 = "mirrored_repeat"
mipmap_input9 = "false"
alias9 = "bloom_pass_2"
alias9 = "reflected_blurred_pass1"
float_framebuffer9 = "false"
srgb_framebuffer9 = "false"
scale_type_x9 = "source"
scale_x9 = "0.500000"
scale_x9 = "1.000000"
scale_type_y9 = "source"
scale_y9 = "0.500000"
shader10 = "shaders/bloom_pass_3.slang"
scale_y9 = "1.000000"
shader10 = "shaders/reflection_blur_y.slang"
filter_linear10 = "true"
wrap_mode10 = "clamp_to_edge"
wrap_mode10 = "mirrored_repeat"
mipmap_input10 = "false"
alias10 = "bloom_pass_3"
alias10 = "reflected_blurred_pass2"
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"
shader11 = "shaders/bloom_pass_1.slang"
filter_linear11 = "true"
wrap_mode11 = "mirrored_repeat"
mipmap_input11 = "false"
alias11 = "bloom_pass_final"
alias11 = "bloom_pass_1"
float_framebuffer11 = "false"
srgb_framebuffer11 = "false"
scale_type_x11 = "source"
scale_x11 = "1.000000"
scale_type_y11 = "source"
scale_y11 = "1.000000"
shader12 = "shaders/ambi_push_pass.slang"
shader12 = "shaders/bloom_pass_2.slang"
filter_linear12 = "true"
wrap_mode12 = "mirrored_repeat"
wrap_mode12 = "clamp_to_edge"
mipmap_input12 = "false"
alias12 = "ambi_push_pass"
float_framebuffer12 = "true"
alias12 = "bloom_pass_2"
float_framebuffer12 = "false"
srgb_framebuffer12 = "false"
scale_type_x12 = "source"
scale_x12 = "1.000000"
scale_x12 = "0.500000"
scale_type_y12 = "source"
scale_y12 = "1.000000"
shader13 = "shaders/ambi_pre_pass.slang"
scale_y12 = "0.500000"
shader13 = "shaders/bloom_pass_3.slang"
filter_linear13 = "true"
wrap_mode13 = "clamp_to_border"
mipmap_input13 = "true"
alias13 = "ambi_pre_pass1"
wrap_mode13 = "clamp_to_edge"
mipmap_input13 = "false"
alias13 = "bloom_pass_3"
float_framebuffer13 = "false"
srgb_framebuffer13 = "false"
scale_type_x13 = "source"
scale_x13 = "1.000000"
scale_type_y13 = "source"
scale_y13 = "1.000000"
shader14 = "shaders/ambi_temporal_pass.slang"
shader14 = "shaders/bloom_pass_4.slang"
filter_linear14 = "true"
wrap_mode14 = "clamp_to_border"
wrap_mode14 = "mirrored_repeat"
mipmap_input14 = "false"
alias14 = "ambi_temporal_pass"
alias14 = "bloom_pass_final"
float_framebuffer14 = "true"
srgb_framebuffer14 = "false"
scale_type_x14 = "source"
scale_x14 = "1.000000"
scale_type_y14 = "source"
scale_y14 = "1.000000"
shader15 = "shaders/isrotated.slang"
shader15 = "shaders/ambi_temporal_pass.slang"
filter_linear15 = "true"
wrap_mode15 = "mirrored_repeat"
wrap_mode15 = "clamp_to_border"
mipmap_input15 = "false"
alias15 = "isrotated_pass"
float_framebuffer15 = "false"
alias15 = "ambi_temporal_pass"
float_framebuffer15 = "true"
srgb_framebuffer15 = "false"
scale_type_x15 = "viewport"
scale_x15 = "0.100000"
scale_x15 = "0.050000"
scale_type_y15 = "viewport"
scale_y15 = "0.100000"
scale_y15 = "0.050000"
shader16 = "shaders/final_pass.slang"
filter_linear16 = "true"
wrap_mode16 = "mirrored_repeat"
@ -190,9 +190,8 @@ DO_CCORRECTION = "1.000000"
LUMINANCE = "0.100000"
SATURATION = "1.050000"
TEMPERATURE = "7000.000000"
GAMMA_OUT = "0.350000"
GAMMA_OUT = "0.500000"
DO_FXAA = "1.000000"
DO_SAT_BLEED = "1.000000"
SAT_BLEED_PAL = "1.000000"
SAT_BLEED_STRENGTH = "0.500000"
SAT_BLEED_SIZE_LEFT = "3.000000"
@ -203,10 +202,11 @@ 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 = "0.950000"
IN_GLOW_H = "0.950000"
IN_GLOW_POWER = "1.100000"
IN_GLOW_GAMMA = "2.000000"
IN_GLOW_SPREAD = "2.000000"
IN_GLOW_W = "1.000000"
IN_GLOW_H = "1.000000"
IN_GLOW_BIAS = "0.000000"
DO_VMASK_AND_DARKLINES = "1.000000"
RGB_MASK_STRENGTH = "1.000000"
@ -214,41 +214,42 @@ VMASK_USE_GM = "1.000000"
VMASK_GAP = "1.000000"
DARKLINES_STRENGTH = "1.000000"
DARKLINES_VOFFSET = "0.000000"
DARKLINES_PERIOD = "2.000000"
DO_HALO = "1.000000"
HALO_POWER = "0.350000"
HALO_POWER = "0.990000"
HALO_W = "3.000000"
HALO_H = "3.000000"
HALO_GAMMA = "1.400000"
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 = "2.000000"
BLOOM_MIX = "0.500000"
DO_CURVATURE = "1.000000"
GEOM_WARP_X = "0.800000"
GEOM_WARP_Y = "0.850000"
GEOM_CORNER_SIZE = "0.005000"
GEOM_CORNER_SMOOTH = "700.000000"
GEOM_WARP_X = "0.450000"
GEOM_WARP_Y = "0.500000"
GEOM_CORNER_SMOOTH = "400.000000"
DO_BEZEL = "1.000000"
BEZEL_INNER_ZOOM = "-0.160000"
BEZEL_FRAME_ZOOM = "0.040000"
BEZEL_IMAGE_BORDER = "1.020000"
AMBI_FALLOFF = "0.600000"
AMBI_POWER = "2.000000"
AMBI_POWER = "1.700000"
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"
textures = "monitor_body_curved;monitor_body_straight;bg_under;bg_over;backdrop"
monitor_body_curved = "textures/monitor_body_curved.png"
monitor_body_curved_linear = "true"
monitor_body_curved_wrap_mode = "clamp_to_edge"
monitor_body_curved_mipmap = "true"
monitor_body_straight = "textures/monitor_body_straight.png"
monitor_body_straight_linear = "true"
monitor_body_straight_wrap_mode = "clamp_to_edge"
monitor_body_straight_mipmap = "true"
bg_under = "textures/background_under.png"
bg_under_linear = "true"
bg_under_wrap_mode = "mirrored_repeat"
@ -257,3 +258,7 @@ bg_over = "textures/background_over.png"
bg_over_linear = "true"
bg_over_wrap_mode = "mirrored_repeat"
bg_over_mipmap = "true"
backdrop = "textures/boothill.jpg"
backdrop_linear = "true"
backdrop_wrap_mode = "mirrored_repeat"
backdrop_mipmap = "true"

View File

@ -1,180 +1,180 @@
shaders = "17"
shader0 = "shaders/first_pass.slang"
shader0 = "shaders/ntsc_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
alias0 = "first_pass"
alias0 = "ntsc_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "2.000000"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "2.000000"
shader1 = "shaders/fxaa.slang"
filter_linear1 = "true"
scale_y0 = "1.000000"
shader1 = "shaders/first_pass.slang"
filter_linear1 = "false"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "true"
alias1 = "FXAA_pass"
mipmap_input1 = "false"
alias1 = "first_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
scale_x1 = "1.000000"
scale_x1 = "2.000000"
scale_type_y1 = "source"
scale_y1 = "1.000000"
shader2 = "shaders/shift_and_bleed.slang"
scale_y1 = "2.000000"
shader2 = "shaders/fxaa.slang"
filter_linear2 = "true"
wrap_mode2 = "mirrored_repeat"
mipmap_input2 = "false"
alias2 = "shift_and_bleed_pass"
mipmap_input2 = "true"
alias2 = "FXAA_pass"
float_framebuffer2 = "false"
srgb_framebuffer2 = "false"
scale_type_x2 = "source"
scale_x2 = "1.000000"
scale_type_y2 = "source"
scale_y2 = "1.000000"
shader3 = "shaders/in_glow.slang"
shader3 = "shaders/shift_and_bleed.slang"
filter_linear3 = "true"
wrap_mode3 = "mirrored_repeat"
mipmap_input3 = "false"
alias3 = "in_glow_pass"
alias3 = "shift_and_bleed_pass"
float_framebuffer3 = "true"
srgb_framebuffer3 = "false"
scale_type_x3 = "source"
scale_x3 = "1.000000"
scale_type_y3 = "source"
scale_y3 = "1.000000"
shader4 = "shaders/halo.slang"
shader4 = "shaders/in_glow_x.slang"
filter_linear4 = "true"
wrap_mode4 = "mirrored_repeat"
mipmap_input4 = "false"
alias4 = "halo_pass"
alias4 = "in_glow_pass_x"
float_framebuffer4 = "true"
srgb_framebuffer4 = "false"
scale_type_x4 = "source"
scale_x4 = "1.000000"
scale_type_y4 = "source"
scale_y4 = "1.000000"
shader5 = "shaders/avglum_pass.slang"
shader5 = "shaders/in_glow_y.slang"
filter_linear5 = "true"
wrap_mode5 = "mirrored_repeat"
mipmap_input5 = "false"
alias5 = "avglum_pass"
float_framebuffer5 = "false"
alias5 = "in_glow_pass"
float_framebuffer5 = "true"
srgb_framebuffer5 = "false"
scale_type_x5 = "source"
scale_x5 = "0.500000"
scale_x5 = "1.000000"
scale_type_y5 = "source"
scale_y5 = "0.500000"
shader6 = "shaders/reflection_blur_h.slang"
scale_y5 = "1.000000"
shader6 = "shaders/halo_x.slang"
filter_linear6 = "true"
wrap_mode6 = "mirrored_repeat"
wrap_mode6 = "clamp_to_edge"
mipmap_input6 = "false"
alias6 = "reflected_blurred_pass1"
float_framebuffer6 = "false"
alias6 = "halo_pass_x"
float_framebuffer6 = "true"
srgb_framebuffer6 = "false"
scale_type_x6 = "source"
scale_x6 = "1.000000"
scale_type_y6 = "source"
scale_y6 = "1.000000"
shader7 = "shaders/reflection_blur_v.slang"
shader7 = "shaders/halo_y.slang"
filter_linear7 = "true"
wrap_mode7 = "mirrored_repeat"
wrap_mode7 = "clamp_to_edge"
mipmap_input7 = "false"
alias7 = "reflected_blurred_pass2"
float_framebuffer7 = "false"
alias7 = "halo_pass"
float_framebuffer7 = "true"
srgb_framebuffer7 = "false"
scale_type_x7 = "source"
scale_x7 = "1.000000"
scale_type_y7 = "source"
scale_y7 = "1.000000"
shader8 = "shaders/bloom_pass_1.slang"
shader8 = "shaders/avglum_pass.slang"
filter_linear8 = "true"
wrap_mode8 = "mirrored_repeat"
mipmap_input8 = "false"
alias8 = "bloom_pass_1"
float_framebuffer8 = "true"
alias8 = "avglum_pass"
float_framebuffer8 = "false"
srgb_framebuffer8 = "false"
scale_type_x8 = "source"
scale_x8 = "1.000000"
scale_x8 = "0.500000"
scale_type_y8 = "source"
scale_y8 = "1.000000"
shader9 = "shaders/bloom_pass_2.slang"
scale_y8 = "0.500000"
shader9 = "shaders/reflection_blur_x.slang"
filter_linear9 = "true"
wrap_mode9 = "clamp_to_edge"
wrap_mode9 = "mirrored_repeat"
mipmap_input9 = "false"
alias9 = "bloom_pass_2"
alias9 = "reflected_blurred_pass1"
float_framebuffer9 = "false"
srgb_framebuffer9 = "false"
scale_type_x9 = "source"
scale_x9 = "0.500000"
scale_x9 = "1.000000"
scale_type_y9 = "source"
scale_y9 = "0.500000"
shader10 = "shaders/bloom_pass_3.slang"
scale_y9 = "1.000000"
shader10 = "shaders/reflection_blur_y.slang"
filter_linear10 = "true"
wrap_mode10 = "clamp_to_edge"
wrap_mode10 = "mirrored_repeat"
mipmap_input10 = "false"
alias10 = "bloom_pass_3"
alias10 = "reflected_blurred_pass2"
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"
shader11 = "shaders/bloom_pass_1.slang"
filter_linear11 = "true"
wrap_mode11 = "mirrored_repeat"
mipmap_input11 = "false"
alias11 = "bloom_pass_final"
alias11 = "bloom_pass_1"
float_framebuffer11 = "false"
srgb_framebuffer11 = "false"
scale_type_x11 = "source"
scale_x11 = "1.000000"
scale_type_y11 = "source"
scale_y11 = "1.000000"
shader12 = "shaders/ambi_push_pass.slang"
shader12 = "shaders/bloom_pass_2.slang"
filter_linear12 = "true"
wrap_mode12 = "mirrored_repeat"
wrap_mode12 = "clamp_to_edge"
mipmap_input12 = "false"
alias12 = "ambi_push_pass"
float_framebuffer12 = "true"
alias12 = "bloom_pass_2"
float_framebuffer12 = "false"
srgb_framebuffer12 = "false"
scale_type_x12 = "source"
scale_x12 = "1.000000"
scale_x12 = "0.500000"
scale_type_y12 = "source"
scale_y12 = "1.000000"
shader13 = "shaders/ambi_pre_pass.slang"
scale_y12 = "0.500000"
shader13 = "shaders/bloom_pass_3.slang"
filter_linear13 = "true"
wrap_mode13 = "clamp_to_border"
mipmap_input13 = "true"
alias13 = "ambi_pre_pass1"
wrap_mode13 = "clamp_to_edge"
mipmap_input13 = "false"
alias13 = "bloom_pass_3"
float_framebuffer13 = "false"
srgb_framebuffer13 = "false"
scale_type_x13 = "source"
scale_x13 = "1.000000"
scale_type_y13 = "source"
scale_y13 = "1.000000"
shader14 = "shaders/ambi_temporal_pass.slang"
shader14 = "shaders/bloom_pass_4.slang"
filter_linear14 = "true"
wrap_mode14 = "clamp_to_border"
wrap_mode14 = "mirrored_repeat"
mipmap_input14 = "false"
alias14 = "ambi_temporal_pass"
alias14 = "bloom_pass_final"
float_framebuffer14 = "true"
srgb_framebuffer14 = "false"
scale_type_x14 = "source"
scale_x14 = "1.000000"
scale_type_y14 = "source"
scale_y14 = "1.000000"
shader15 = "shaders/isrotated.slang"
shader15 = "shaders/ambi_temporal_pass.slang"
filter_linear15 = "true"
wrap_mode15 = "mirrored_repeat"
wrap_mode15 = "clamp_to_border"
mipmap_input15 = "false"
alias15 = "isrotated_pass"
float_framebuffer15 = "false"
alias15 = "ambi_temporal_pass"
float_framebuffer15 = "true"
srgb_framebuffer15 = "false"
scale_type_x15 = "viewport"
scale_x15 = "0.100000"
scale_x15 = "0.050000"
scale_type_y15 = "viewport"
scale_y15 = "0.100000"
scale_y15 = "0.050000"
shader16 = "shaders/final_pass.slang"
filter_linear16 = "true"
wrap_mode16 = "mirrored_repeat"
@ -190,9 +190,8 @@ DO_CCORRECTION = "1.000000"
LUMINANCE = "0.100000"
SATURATION = "1.050000"
TEMPERATURE = "7000.000000"
GAMMA_OUT = "0.350000"
GAMMA_OUT = "0.500000"
DO_FXAA = "1.000000"
DO_SAT_BLEED = "1.000000"
SAT_BLEED_PAL = "1.000000"
SAT_BLEED_STRENGTH = "0.500000"
SAT_BLEED_SIZE_LEFT = "3.000000"
@ -203,10 +202,11 @@ 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 = "0.950000"
IN_GLOW_H = "0.950000"
IN_GLOW_POWER = "1.100000"
IN_GLOW_GAMMA = "2.000000"
IN_GLOW_SPREAD = "2.000000"
IN_GLOW_W = "1.000000"
IN_GLOW_H = "1.000000"
IN_GLOW_BIAS = "0.000000"
DO_VMASK_AND_DARKLINES = "1.000000"
RGB_MASK_STRENGTH = "1.000000"
@ -214,26 +214,22 @@ VMASK_USE_GM = "1.000000"
VMASK_GAP = "1.000000"
DARKLINES_STRENGTH = "1.000000"
DARKLINES_VOFFSET = "0.000000"
DARKLINES_PERIOD = "2.000000"
DO_HALO = "1.000000"
HALO_POWER = "0.350000"
HALO_POWER = "0.990000"
HALO_W = "3.000000"
HALO_H = "3.000000"
HALO_GAMMA = "1.400000"
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 = "2.000000"
BLOOM_MIX = "0.500000"
DO_CURVATURE = "1.000000"
GEOM_WARP_X = "0.500000"
GEOM_WARP_X = "0.450000"
GEOM_WARP_Y = "0.500000"
GEOM_CORNER_SIZE = "0.005000"
GEOM_CORNER_SMOOTH = "700.000000"
GEOM_CORNER_SMOOTH = "400.000000"
DO_BEZEL = "1.000000"
BEZEL_INNER_ZOOM = "-0.010000"
BEZEL_FRAME_ZOOM = "0.170000"
@ -245,11 +241,15 @@ 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"
textures = "monitor_body_curved;monitor_body_straight;bg_under;bg_over;backdrop"
monitor_body_curved = "textures/monitor_body_curved.png"
monitor_body_curved_linear = "true"
monitor_body_curved_wrap_mode = "clamp_to_edge"
monitor_body_curved_mipmap = "true"
monitor_body_straight = "textures/monitor_body_straight.png"
monitor_body_straight_linear = "true"
monitor_body_straight_wrap_mode = "clamp_to_edge"
monitor_body_straight_mipmap = "true"
bg_under = "textures/background_under.png"
bg_under_linear = "true"
bg_under_wrap_mode = "mirrored_repeat"
@ -258,3 +258,7 @@ bg_over = "textures/background_over.png"
bg_over_linear = "true"
bg_over_wrap_mode = "mirrored_repeat"
bg_over_mipmap = "true"
backdrop = "textures/boothill.jpg"
backdrop_linear = "true"
backdrop_wrap_mode = "mirrored_repeat"
backdrop_mipmap = "true"

View File

@ -1,180 +1,180 @@
shaders = "17"
shader0 = "shaders/first_pass.slang"
shader0 = "shaders/ntsc_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
alias0 = "first_pass"
alias0 = "ntsc_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "2.000000"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "2.000000"
shader1 = "shaders/fxaa.slang"
filter_linear1 = "true"
scale_y0 = "1.000000"
shader1 = "shaders/first_pass.slang"
filter_linear1 = "false"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "true"
alias1 = "FXAA_pass"
mipmap_input1 = "false"
alias1 = "first_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
scale_x1 = "1.000000"
scale_x1 = "2.000000"
scale_type_y1 = "source"
scale_y1 = "1.000000"
shader2 = "shaders/shift_and_bleed.slang"
scale_y1 = "2.000000"
shader2 = "shaders/fxaa.slang"
filter_linear2 = "true"
wrap_mode2 = "mirrored_repeat"
mipmap_input2 = "false"
alias2 = "shift_and_bleed_pass"
mipmap_input2 = "true"
alias2 = "FXAA_pass"
float_framebuffer2 = "false"
srgb_framebuffer2 = "false"
scale_type_x2 = "source"
scale_x2 = "1.000000"
scale_type_y2 = "source"
scale_y2 = "1.000000"
shader3 = "shaders/in_glow.slang"
shader3 = "shaders/shift_and_bleed.slang"
filter_linear3 = "true"
wrap_mode3 = "mirrored_repeat"
mipmap_input3 = "false"
alias3 = "in_glow_pass"
alias3 = "shift_and_bleed_pass"
float_framebuffer3 = "true"
srgb_framebuffer3 = "false"
scale_type_x3 = "source"
scale_x3 = "1.000000"
scale_type_y3 = "source"
scale_y3 = "1.000000"
shader4 = "shaders/halo.slang"
shader4 = "shaders/in_glow_x.slang"
filter_linear4 = "true"
wrap_mode4 = "mirrored_repeat"
mipmap_input4 = "false"
alias4 = "halo_pass"
alias4 = "in_glow_pass_x"
float_framebuffer4 = "true"
srgb_framebuffer4 = "false"
scale_type_x4 = "source"
scale_x4 = "1.000000"
scale_type_y4 = "source"
scale_y4 = "1.000000"
shader5 = "shaders/avglum_pass.slang"
shader5 = "shaders/in_glow_y.slang"
filter_linear5 = "true"
wrap_mode5 = "mirrored_repeat"
mipmap_input5 = "false"
alias5 = "avglum_pass"
float_framebuffer5 = "false"
alias5 = "in_glow_pass"
float_framebuffer5 = "true"
srgb_framebuffer5 = "false"
scale_type_x5 = "source"
scale_x5 = "0.500000"
scale_x5 = "1.000000"
scale_type_y5 = "source"
scale_y5 = "0.500000"
shader6 = "shaders/reflection_blur_h.slang"
scale_y5 = "1.000000"
shader6 = "shaders/halo_x.slang"
filter_linear6 = "true"
wrap_mode6 = "mirrored_repeat"
wrap_mode6 = "clamp_to_edge"
mipmap_input6 = "false"
alias6 = "reflected_blurred_pass1"
float_framebuffer6 = "false"
alias6 = "halo_pass_x"
float_framebuffer6 = "true"
srgb_framebuffer6 = "false"
scale_type_x6 = "source"
scale_x6 = "1.000000"
scale_type_y6 = "source"
scale_y6 = "1.000000"
shader7 = "shaders/reflection_blur_v.slang"
shader7 = "shaders/halo_y.slang"
filter_linear7 = "true"
wrap_mode7 = "mirrored_repeat"
wrap_mode7 = "clamp_to_edge"
mipmap_input7 = "false"
alias7 = "reflected_blurred_pass2"
float_framebuffer7 = "false"
alias7 = "halo_pass"
float_framebuffer7 = "true"
srgb_framebuffer7 = "false"
scale_type_x7 = "source"
scale_x7 = "1.000000"
scale_type_y7 = "source"
scale_y7 = "1.000000"
shader8 = "shaders/bloom_pass_1.slang"
shader8 = "shaders/avglum_pass.slang"
filter_linear8 = "true"
wrap_mode8 = "mirrored_repeat"
mipmap_input8 = "false"
alias8 = "bloom_pass_1"
float_framebuffer8 = "true"
alias8 = "avglum_pass"
float_framebuffer8 = "false"
srgb_framebuffer8 = "false"
scale_type_x8 = "source"
scale_x8 = "1.000000"
scale_x8 = "0.500000"
scale_type_y8 = "source"
scale_y8 = "1.000000"
shader9 = "shaders/bloom_pass_2.slang"
scale_y8 = "0.500000"
shader9 = "shaders/reflection_blur_x.slang"
filter_linear9 = "true"
wrap_mode9 = "clamp_to_edge"
wrap_mode9 = "mirrored_repeat"
mipmap_input9 = "false"
alias9 = "bloom_pass_2"
alias9 = "reflected_blurred_pass1"
float_framebuffer9 = "false"
srgb_framebuffer9 = "false"
scale_type_x9 = "source"
scale_x9 = "0.500000"
scale_x9 = "1.000000"
scale_type_y9 = "source"
scale_y9 = "0.500000"
shader10 = "shaders/bloom_pass_3.slang"
scale_y9 = "1.000000"
shader10 = "shaders/reflection_blur_y.slang"
filter_linear10 = "true"
wrap_mode10 = "clamp_to_edge"
wrap_mode10 = "mirrored_repeat"
mipmap_input10 = "false"
alias10 = "bloom_pass_3"
alias10 = "reflected_blurred_pass2"
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"
shader11 = "shaders/bloom_pass_1.slang"
filter_linear11 = "true"
wrap_mode11 = "mirrored_repeat"
mipmap_input11 = "false"
alias11 = "bloom_pass_final"
alias11 = "bloom_pass_1"
float_framebuffer11 = "false"
srgb_framebuffer11 = "false"
scale_type_x11 = "source"
scale_x11 = "1.000000"
scale_type_y11 = "source"
scale_y11 = "1.000000"
shader12 = "shaders/ambi_push_pass.slang"
shader12 = "shaders/bloom_pass_2.slang"
filter_linear12 = "true"
wrap_mode12 = "mirrored_repeat"
wrap_mode12 = "clamp_to_edge"
mipmap_input12 = "false"
alias12 = "ambi_push_pass"
float_framebuffer12 = "true"
alias12 = "bloom_pass_2"
float_framebuffer12 = "false"
srgb_framebuffer12 = "false"
scale_type_x12 = "source"
scale_x12 = "1.000000"
scale_x12 = "0.500000"
scale_type_y12 = "source"
scale_y12 = "1.000000"
shader13 = "shaders/ambi_pre_pass.slang"
scale_y12 = "0.500000"
shader13 = "shaders/bloom_pass_3.slang"
filter_linear13 = "true"
wrap_mode13 = "clamp_to_border"
mipmap_input13 = "true"
alias13 = "ambi_pre_pass1"
wrap_mode13 = "clamp_to_edge"
mipmap_input13 = "false"
alias13 = "bloom_pass_3"
float_framebuffer13 = "false"
srgb_framebuffer13 = "false"
scale_type_x13 = "source"
scale_x13 = "1.000000"
scale_type_y13 = "source"
scale_y13 = "1.000000"
shader14 = "shaders/ambi_temporal_pass.slang"
shader14 = "shaders/bloom_pass_4.slang"
filter_linear14 = "true"
wrap_mode14 = "clamp_to_border"
wrap_mode14 = "mirrored_repeat"
mipmap_input14 = "false"
alias14 = "ambi_temporal_pass"
alias14 = "bloom_pass_final"
float_framebuffer14 = "true"
srgb_framebuffer14 = "false"
scale_type_x14 = "source"
scale_x14 = "1.000000"
scale_type_y14 = "source"
scale_y14 = "1.000000"
shader15 = "shaders/isrotated.slang"
shader15 = "shaders/ambi_temporal_pass.slang"
filter_linear15 = "true"
wrap_mode15 = "mirrored_repeat"
wrap_mode15 = "clamp_to_border"
mipmap_input15 = "false"
alias15 = "isrotated_pass"
float_framebuffer15 = "false"
alias15 = "ambi_temporal_pass"
float_framebuffer15 = "true"
srgb_framebuffer15 = "false"
scale_type_x15 = "viewport"
scale_x15 = "0.100000"
scale_x15 = "0.050000"
scale_type_y15 = "viewport"
scale_y15 = "0.100000"
scale_y15 = "0.050000"
shader16 = "shaders/final_pass.slang"
filter_linear16 = "true"
wrap_mode16 = "mirrored_repeat"
@ -190,23 +190,22 @@ DO_CCORRECTION = "1.000000"
LUMINANCE = "0.100000"
SATURATION = "1.050000"
TEMPERATURE = "7000.000000"
GAMMA_OUT = "0.350000"
GAMMA_OUT = "0.500000"
DO_FXAA = "1.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_W = "0.950000"
IN_GLOW_H = "0.950000"
IN_GLOW_POWER = "1.100000"
IN_GLOW_GAMMA = "2.000000"
IN_GLOW_SPREAD = "2.000000"
IN_GLOW_W = "1.000000"
IN_GLOW_H = "1.000000"
IN_GLOW_BIAS = "0.000000"
DO_VMASK_AND_DARKLINES = "1.000000"
RGB_MASK_STRENGTH = "1.000000"
@ -214,35 +213,38 @@ VMASK_USE_GM = "1.000000"
VMASK_GAP = "1.000000"
DARKLINES_STRENGTH = "1.000000"
DARKLINES_VOFFSET = "0.000000"
DARKLINES_PERIOD = "2.000000"
DO_HALO = "1.000000"
HALO_POWER = "0.350000"
HALO_POWER = "0.990000"
HALO_W = "3.000000"
HALO_H = "3.000000"
HALO_GAMMA = "1.400000"
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 = "2.000000"
BLOOM_MIX = "0.500000"
DO_CURVATURE = "1.000000"
GEOM_WARP_X = "0.000000"
GEOM_WARP_X = "0.475000"
GEOM_WARP_Y = "0.500000"
GEOM_CORNER_SMOOTH = "200.000000"
BEZEL_INNER_ZOOM = "-0.160000"
BEZEL_IMAGE_BORDER = "1.020000"
AMBI_FALLOFF = "0.400000"
AMBI_POWER = "1.000000"
V_SIZE = "2.700000"
V_POWER = "1.050000"
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"
textures = "monitor_body_curved;monitor_body_straight;bg_under;bg_over;backdrop"
monitor_body_curved = "textures/monitor_body_curved.png"
monitor_body_curved_linear = "true"
monitor_body_curved_wrap_mode = "clamp_to_edge"
monitor_body_curved_mipmap = "true"
monitor_body_straight = "textures/monitor_body_straight.png"
monitor_body_straight_linear = "true"
monitor_body_straight_wrap_mode = "clamp_to_edge"
monitor_body_straight_mipmap = "true"
bg_under = "textures/background_under.png"
bg_under_linear = "true"
bg_under_wrap_mode = "mirrored_repeat"
@ -251,3 +253,7 @@ bg_over = "textures/background_over.png"
bg_over_linear = "true"
bg_over_wrap_mode = "mirrored_repeat"
bg_over_mipmap = "true"
backdrop = "textures/boothill.jpg"
backdrop_linear = "true"
backdrop_wrap_mode = "mirrored_repeat"
backdrop_mipmap = "true"

View File

@ -1,180 +1,180 @@
shaders = "17"
shader0 = "shaders/first_pass.slang"
shader0 = "shaders/ntsc_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
alias0 = "first_pass"
alias0 = "ntsc_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "2.000000"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "2.000000"
shader1 = "shaders/fxaa.slang"
filter_linear1 = "true"
scale_y0 = "1.000000"
shader1 = "shaders/first_pass.slang"
filter_linear1 = "false"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "true"
alias1 = "FXAA_pass"
mipmap_input1 = "false"
alias1 = "first_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
scale_x1 = "1.000000"
scale_x1 = "2.000000"
scale_type_y1 = "source"
scale_y1 = "1.000000"
shader2 = "shaders/shift_and_bleed.slang"
scale_y1 = "2.000000"
shader2 = "shaders/fxaa.slang"
filter_linear2 = "true"
wrap_mode2 = "mirrored_repeat"
mipmap_input2 = "false"
alias2 = "shift_and_bleed_pass"
mipmap_input2 = "true"
alias2 = "FXAA_pass"
float_framebuffer2 = "false"
srgb_framebuffer2 = "false"
scale_type_x2 = "source"
scale_x2 = "1.000000"
scale_type_y2 = "source"
scale_y2 = "1.000000"
shader3 = "shaders/in_glow.slang"
shader3 = "shaders/shift_and_bleed.slang"
filter_linear3 = "true"
wrap_mode3 = "mirrored_repeat"
mipmap_input3 = "false"
alias3 = "in_glow_pass"
alias3 = "shift_and_bleed_pass"
float_framebuffer3 = "true"
srgb_framebuffer3 = "false"
scale_type_x3 = "source"
scale_x3 = "1.000000"
scale_type_y3 = "source"
scale_y3 = "1.000000"
shader4 = "shaders/halo.slang"
shader4 = "shaders/in_glow_x.slang"
filter_linear4 = "true"
wrap_mode4 = "mirrored_repeat"
mipmap_input4 = "false"
alias4 = "halo_pass"
alias4 = "in_glow_pass_x"
float_framebuffer4 = "true"
srgb_framebuffer4 = "false"
scale_type_x4 = "source"
scale_x4 = "1.000000"
scale_type_y4 = "source"
scale_y4 = "1.000000"
shader5 = "shaders/avglum_pass.slang"
shader5 = "shaders/in_glow_y.slang"
filter_linear5 = "true"
wrap_mode5 = "mirrored_repeat"
mipmap_input5 = "false"
alias5 = "avglum_pass"
float_framebuffer5 = "false"
alias5 = "in_glow_pass"
float_framebuffer5 = "true"
srgb_framebuffer5 = "false"
scale_type_x5 = "source"
scale_x5 = "0.500000"
scale_x5 = "1.000000"
scale_type_y5 = "source"
scale_y5 = "0.500000"
shader6 = "shaders/reflection_blur_h.slang"
scale_y5 = "1.000000"
shader6 = "shaders/halo_x.slang"
filter_linear6 = "true"
wrap_mode6 = "mirrored_repeat"
wrap_mode6 = "clamp_to_edge"
mipmap_input6 = "false"
alias6 = "reflected_blurred_pass1"
float_framebuffer6 = "false"
alias6 = "halo_pass_x"
float_framebuffer6 = "true"
srgb_framebuffer6 = "false"
scale_type_x6 = "source"
scale_x6 = "1.000000"
scale_type_y6 = "source"
scale_y6 = "1.000000"
shader7 = "shaders/reflection_blur_v.slang"
shader7 = "shaders/halo_y.slang"
filter_linear7 = "true"
wrap_mode7 = "mirrored_repeat"
wrap_mode7 = "clamp_to_edge"
mipmap_input7 = "false"
alias7 = "reflected_blurred_pass2"
float_framebuffer7 = "false"
alias7 = "halo_pass"
float_framebuffer7 = "true"
srgb_framebuffer7 = "false"
scale_type_x7 = "source"
scale_x7 = "1.000000"
scale_type_y7 = "source"
scale_y7 = "1.000000"
shader8 = "shaders/bloom_pass_1.slang"
shader8 = "shaders/avglum_pass.slang"
filter_linear8 = "true"
wrap_mode8 = "mirrored_repeat"
mipmap_input8 = "false"
alias8 = "bloom_pass_1"
float_framebuffer8 = "true"
alias8 = "avglum_pass"
float_framebuffer8 = "false"
srgb_framebuffer8 = "false"
scale_type_x8 = "source"
scale_x8 = "1.000000"
scale_x8 = "0.500000"
scale_type_y8 = "source"
scale_y8 = "1.000000"
shader9 = "shaders/bloom_pass_2.slang"
scale_y8 = "0.500000"
shader9 = "shaders/reflection_blur_x.slang"
filter_linear9 = "true"
wrap_mode9 = "clamp_to_edge"
wrap_mode9 = "mirrored_repeat"
mipmap_input9 = "false"
alias9 = "bloom_pass_2"
alias9 = "reflected_blurred_pass1"
float_framebuffer9 = "false"
srgb_framebuffer9 = "false"
scale_type_x9 = "source"
scale_x9 = "0.500000"
scale_x9 = "1.000000"
scale_type_y9 = "source"
scale_y9 = "0.500000"
shader10 = "shaders/bloom_pass_3.slang"
scale_y9 = "1.000000"
shader10 = "shaders/reflection_blur_y.slang"
filter_linear10 = "true"
wrap_mode10 = "clamp_to_edge"
wrap_mode10 = "mirrored_repeat"
mipmap_input10 = "false"
alias10 = "bloom_pass_3"
alias10 = "reflected_blurred_pass2"
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"
shader11 = "shaders/bloom_pass_1.slang"
filter_linear11 = "true"
wrap_mode11 = "mirrored_repeat"
mipmap_input11 = "false"
alias11 = "bloom_pass_final"
alias11 = "bloom_pass_1"
float_framebuffer11 = "false"
srgb_framebuffer11 = "false"
scale_type_x11 = "source"
scale_x11 = "1.000000"
scale_type_y11 = "source"
scale_y11 = "1.000000"
shader12 = "shaders/ambi_push_pass.slang"
shader12 = "shaders/bloom_pass_2.slang"
filter_linear12 = "true"
wrap_mode12 = "mirrored_repeat"
wrap_mode12 = "clamp_to_edge"
mipmap_input12 = "false"
alias12 = "ambi_push_pass"
float_framebuffer12 = "true"
alias12 = "bloom_pass_2"
float_framebuffer12 = "false"
srgb_framebuffer12 = "false"
scale_type_x12 = "source"
scale_x12 = "1.000000"
scale_x12 = "0.500000"
scale_type_y12 = "source"
scale_y12 = "1.000000"
shader13 = "shaders/ambi_pre_pass.slang"
scale_y12 = "0.500000"
shader13 = "shaders/bloom_pass_3.slang"
filter_linear13 = "true"
wrap_mode13 = "clamp_to_border"
mipmap_input13 = "true"
alias13 = "ambi_pre_pass1"
wrap_mode13 = "clamp_to_edge"
mipmap_input13 = "false"
alias13 = "bloom_pass_3"
float_framebuffer13 = "false"
srgb_framebuffer13 = "false"
scale_type_x13 = "source"
scale_x13 = "1.000000"
scale_type_y13 = "source"
scale_y13 = "1.000000"
shader14 = "shaders/ambi_temporal_pass.slang"
shader14 = "shaders/bloom_pass_4.slang"
filter_linear14 = "true"
wrap_mode14 = "clamp_to_border"
wrap_mode14 = "mirrored_repeat"
mipmap_input14 = "false"
alias14 = "ambi_temporal_pass"
alias14 = "bloom_pass_final"
float_framebuffer14 = "true"
srgb_framebuffer14 = "false"
scale_type_x14 = "source"
scale_x14 = "1.000000"
scale_type_y14 = "source"
scale_y14 = "1.000000"
shader15 = "shaders/isrotated.slang"
shader15 = "shaders/ambi_temporal_pass.slang"
filter_linear15 = "true"
wrap_mode15 = "mirrored_repeat"
wrap_mode15 = "clamp_to_border"
mipmap_input15 = "false"
alias15 = "isrotated_pass"
float_framebuffer15 = "false"
alias15 = "ambi_temporal_pass"
float_framebuffer15 = "true"
srgb_framebuffer15 = "false"
scale_type_x15 = "viewport"
scale_x15 = "0.100000"
scale_x15 = "0.050000"
scale_type_y15 = "viewport"
scale_y15 = "0.100000"
scale_y15 = "0.050000"
shader16 = "shaders/final_pass.slang"
filter_linear16 = "true"
wrap_mode16 = "mirrored_repeat"
@ -190,23 +190,22 @@ DO_CCORRECTION = "1.000000"
LUMINANCE = "0.100000"
SATURATION = "1.050000"
TEMPERATURE = "7000.000000"
GAMMA_OUT = "0.350000"
GAMMA_OUT = "0.500000"
DO_FXAA = "1.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_W = "0.950000"
IN_GLOW_H = "0.950000"
IN_GLOW_POWER = "1.100000"
IN_GLOW_GAMMA = "2.000000"
IN_GLOW_SPREAD = "2.000000"
IN_GLOW_W = "1.000000"
IN_GLOW_H = "1.000000"
IN_GLOW_BIAS = "0.000000"
DO_VMASK_AND_DARKLINES = "1.000000"
RGB_MASK_STRENGTH = "1.000000"
@ -214,34 +213,37 @@ VMASK_USE_GM = "1.000000"
VMASK_GAP = "1.000000"
DARKLINES_STRENGTH = "1.000000"
DARKLINES_VOFFSET = "0.000000"
DARKLINES_PERIOD = "2.000000"
DO_HALO = "1.000000"
HALO_POWER = "0.350000"
HALO_POWER = "0.990000"
HALO_W = "3.000000"
HALO_H = "3.000000"
HALO_GAMMA = "1.400000"
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 = "2.000000"
BLOOM_MIX = "0.500000"
DO_CURVATURE = "1.000000"
GEOM_WARP_X = "0.000000"
GEOM_WARP_X = "0.475000"
GEOM_WARP_Y = "0.500000"
GEOM_CORNER_SMOOTH = "200.000000"
BEZEL_INNER_ZOOM = "-0.160000"
BEZEL_IMAGE_BORDER = "1.020000"
AMBI_FALLOFF = "0.400000"
AMBI_POWER = "1.000000"
V_SIZE = "2.700000"
V_POWER = "1.050000"
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"
textures = "monitor_body_curved;monitor_body_straight;bg_under;bg_over;backdrop"
monitor_body_curved = "textures/monitor_body_curved.png"
monitor_body_curved_linear = "true"
monitor_body_curved_wrap_mode = "clamp_to_edge"
monitor_body_curved_mipmap = "true"
monitor_body_straight = "textures/monitor_body_straight.png"
monitor_body_straight_linear = "true"
monitor_body_straight_wrap_mode = "clamp_to_edge"
monitor_body_straight_mipmap = "true"
bg_under = "textures/background_under.png"
bg_under_linear = "true"
bg_under_wrap_mode = "mirrored_repeat"
@ -250,3 +252,7 @@ bg_over = "textures/background_over.png"
bg_over_linear = "true"
bg_over_wrap_mode = "mirrored_repeat"
bg_over_mipmap = "true"
backdrop = "textures/boothill.jpg"
backdrop_linear = "true"
backdrop_wrap_mode = "mirrored_repeat"
backdrop_mipmap = "true"

View File

@ -1,180 +1,180 @@
shaders = "17"
shader0 = "shaders/first_pass.slang"
shader0 = "shaders/ntsc_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
alias0 = "first_pass"
alias0 = "ntsc_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "2.000000"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "2.000000"
shader1 = "shaders/fxaa.slang"
filter_linear1 = "true"
scale_y0 = "1.000000"
shader1 = "shaders/first_pass.slang"
filter_linear1 = "false"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "true"
alias1 = "FXAA_pass"
mipmap_input1 = "false"
alias1 = "first_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
scale_x1 = "1.000000"
scale_x1 = "2.000000"
scale_type_y1 = "source"
scale_y1 = "1.000000"
shader2 = "shaders/shift_and_bleed.slang"
scale_y1 = "2.000000"
shader2 = "shaders/fxaa.slang"
filter_linear2 = "true"
wrap_mode2 = "mirrored_repeat"
mipmap_input2 = "false"
alias2 = "shift_and_bleed_pass"
mipmap_input2 = "true"
alias2 = "FXAA_pass"
float_framebuffer2 = "false"
srgb_framebuffer2 = "false"
scale_type_x2 = "source"
scale_x2 = "1.000000"
scale_type_y2 = "source"
scale_y2 = "1.000000"
shader3 = "shaders/in_glow.slang"
shader3 = "shaders/shift_and_bleed.slang"
filter_linear3 = "true"
wrap_mode3 = "mirrored_repeat"
mipmap_input3 = "false"
alias3 = "in_glow_pass"
alias3 = "shift_and_bleed_pass"
float_framebuffer3 = "true"
srgb_framebuffer3 = "false"
scale_type_x3 = "source"
scale_x3 = "1.000000"
scale_type_y3 = "source"
scale_y3 = "1.000000"
shader4 = "shaders/halo.slang"
shader4 = "shaders/in_glow_x.slang"
filter_linear4 = "true"
wrap_mode4 = "mirrored_repeat"
mipmap_input4 = "false"
alias4 = "halo_pass"
alias4 = "in_glow_pass_x"
float_framebuffer4 = "true"
srgb_framebuffer4 = "false"
scale_type_x4 = "source"
scale_x4 = "1.000000"
scale_type_y4 = "source"
scale_y4 = "1.000000"
shader5 = "shaders/avglum_pass.slang"
shader5 = "shaders/in_glow_y.slang"
filter_linear5 = "true"
wrap_mode5 = "mirrored_repeat"
mipmap_input5 = "false"
alias5 = "avglum_pass"
float_framebuffer5 = "false"
alias5 = "in_glow_pass"
float_framebuffer5 = "true"
srgb_framebuffer5 = "false"
scale_type_x5 = "source"
scale_x5 = "0.500000"
scale_x5 = "1.000000"
scale_type_y5 = "source"
scale_y5 = "0.500000"
shader6 = "shaders/reflection_blur_h.slang"
scale_y5 = "1.000000"
shader6 = "shaders/halo_x.slang"
filter_linear6 = "true"
wrap_mode6 = "mirrored_repeat"
wrap_mode6 = "clamp_to_edge"
mipmap_input6 = "false"
alias6 = "reflected_blurred_pass1"
float_framebuffer6 = "false"
alias6 = "halo_pass_x"
float_framebuffer6 = "true"
srgb_framebuffer6 = "false"
scale_type_x6 = "source"
scale_x6 = "1.000000"
scale_type_y6 = "source"
scale_y6 = "1.000000"
shader7 = "shaders/reflection_blur_v.slang"
shader7 = "shaders/halo_y.slang"
filter_linear7 = "true"
wrap_mode7 = "mirrored_repeat"
wrap_mode7 = "clamp_to_edge"
mipmap_input7 = "false"
alias7 = "reflected_blurred_pass2"
float_framebuffer7 = "false"
alias7 = "halo_pass"
float_framebuffer7 = "true"
srgb_framebuffer7 = "false"
scale_type_x7 = "source"
scale_x7 = "1.000000"
scale_type_y7 = "source"
scale_y7 = "1.000000"
shader8 = "shaders/bloom_pass_1.slang"
shader8 = "shaders/avglum_pass.slang"
filter_linear8 = "true"
wrap_mode8 = "mirrored_repeat"
mipmap_input8 = "false"
alias8 = "bloom_pass_1"
float_framebuffer8 = "true"
alias8 = "avglum_pass"
float_framebuffer8 = "false"
srgb_framebuffer8 = "false"
scale_type_x8 = "source"
scale_x8 = "1.000000"
scale_x8 = "0.500000"
scale_type_y8 = "source"
scale_y8 = "1.000000"
shader9 = "shaders/bloom_pass_2.slang"
scale_y8 = "0.500000"
shader9 = "shaders/reflection_blur_x.slang"
filter_linear9 = "true"
wrap_mode9 = "clamp_to_edge"
wrap_mode9 = "mirrored_repeat"
mipmap_input9 = "false"
alias9 = "bloom_pass_2"
alias9 = "reflected_blurred_pass1"
float_framebuffer9 = "false"
srgb_framebuffer9 = "false"
scale_type_x9 = "source"
scale_x9 = "0.500000"
scale_x9 = "1.000000"
scale_type_y9 = "source"
scale_y9 = "0.500000"
shader10 = "shaders/bloom_pass_3.slang"
scale_y9 = "1.000000"
shader10 = "shaders/reflection_blur_y.slang"
filter_linear10 = "true"
wrap_mode10 = "clamp_to_edge"
wrap_mode10 = "mirrored_repeat"
mipmap_input10 = "false"
alias10 = "bloom_pass_3"
alias10 = "reflected_blurred_pass2"
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"
shader11 = "shaders/bloom_pass_1.slang"
filter_linear11 = "true"
wrap_mode11 = "mirrored_repeat"
mipmap_input11 = "false"
alias11 = "bloom_pass_final"
alias11 = "bloom_pass_1"
float_framebuffer11 = "false"
srgb_framebuffer11 = "false"
scale_type_x11 = "source"
scale_x11 = "1.000000"
scale_type_y11 = "source"
scale_y11 = "1.000000"
shader12 = "shaders/ambi_push_pass.slang"
shader12 = "shaders/bloom_pass_2.slang"
filter_linear12 = "true"
wrap_mode12 = "mirrored_repeat"
wrap_mode12 = "clamp_to_edge"
mipmap_input12 = "false"
alias12 = "ambi_push_pass"
float_framebuffer12 = "true"
alias12 = "bloom_pass_2"
float_framebuffer12 = "false"
srgb_framebuffer12 = "false"
scale_type_x12 = "source"
scale_x12 = "1.000000"
scale_x12 = "0.500000"
scale_type_y12 = "source"
scale_y12 = "1.000000"
shader13 = "shaders/ambi_pre_pass.slang"
scale_y12 = "0.500000"
shader13 = "shaders/bloom_pass_3.slang"
filter_linear13 = "true"
wrap_mode13 = "clamp_to_border"
mipmap_input13 = "true"
alias13 = "ambi_pre_pass1"
wrap_mode13 = "clamp_to_edge"
mipmap_input13 = "false"
alias13 = "bloom_pass_3"
float_framebuffer13 = "false"
srgb_framebuffer13 = "false"
scale_type_x13 = "source"
scale_x13 = "1.000000"
scale_type_y13 = "source"
scale_y13 = "1.000000"
shader14 = "shaders/ambi_temporal_pass.slang"
shader14 = "shaders/bloom_pass_4.slang"
filter_linear14 = "true"
wrap_mode14 = "clamp_to_border"
wrap_mode14 = "mirrored_repeat"
mipmap_input14 = "false"
alias14 = "ambi_temporal_pass"
alias14 = "bloom_pass_final"
float_framebuffer14 = "true"
srgb_framebuffer14 = "false"
scale_type_x14 = "source"
scale_x14 = "1.000000"
scale_type_y14 = "source"
scale_y14 = "1.000000"
shader15 = "shaders/isrotated.slang"
shader15 = "shaders/ambi_temporal_pass.slang"
filter_linear15 = "true"
wrap_mode15 = "mirrored_repeat"
wrap_mode15 = "clamp_to_border"
mipmap_input15 = "false"
alias15 = "isrotated_pass"
float_framebuffer15 = "false"
alias15 = "ambi_temporal_pass"
float_framebuffer15 = "true"
srgb_framebuffer15 = "false"
scale_type_x15 = "viewport"
scale_x15 = "0.100000"
scale_x15 = "0.050000"
scale_type_y15 = "viewport"
scale_y15 = "0.100000"
scale_y15 = "0.050000"
shader16 = "shaders/final_pass.slang"
filter_linear16 = "true"
wrap_mode16 = "mirrored_repeat"
@ -193,14 +193,11 @@ 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_IN_GLOW = "1.000000"
IN_GLOW_POWER = "1.700000"
IN_GLOW_GAMMA = "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"
@ -208,6 +205,7 @@ VMASK_USE_GM = "1.000000"
VMASK_GAP = "1.000000"
VMASK_OVERWHITE = "0.750000"
DARKLINES_STRENGTH = "0.400000"
DARKLINES_PERIOD = "0.200000"
DRKLN_OVERWHITE = "0.750000"
DO_HALO = "1.000000"
HALO_POWER = "0.430000"
@ -215,36 +213,42 @@ HALO_W = "3.500000"
HALO_H = "3.500000"
HALO_VS_SCAN = "0.800000"
DO_SCANLINES = "1.000000"
SCANLINE_MIN = "0.300000"
SCANLINE_DARK = "0.100000"
SCANLINES_BLEEDING = "0.300000"
SCANLINE_FLICKERING = "1.000000"
SCANLINE_FLICKERING_POWER = "0.850000"
SCANLINE_SM_STRENGTH = "1.000000"
SCANLINE_FLICKERING_POWER = "1.100000"
SCANLINE_SM_VOFFSET = "70.000000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.150000"
BLOOM_SIZE = "1.500000"
BLOOM_POWER = "8.000000"
BLOOM_GAMMA_OUT = "1.200000"
BLOOM_MIX = "0.500000"
BLOOM_POWER = "1.600000"
DO_CURVATURE = "1.000000"
GEOM_WARP_X = "0.800000"
GEOM_WARP_Y = "0.850000"
GEOM_CORNER_SIZE = "0.005000"
GEOM_CORNER_SMOOTH = "700.000000"
GEOM_WARP_X = "0.475000"
GEOM_WARP_Y = "0.500000"
GEOM_CORNER_SMOOTH = "400.000000"
DO_BEZEL = "1.000000"
BEZEL_INNER_ZOOM = "-0.165000"
BEZEL_FRAME_ZOOM = "0.040000"
BEZEL_IMAGE_BORDER = "1.020000"
BEZEL_RFL_OFFSET = "0.002000"
BEZEL_REFL_ZOOM = "0.993000"
AMBI_FALLOFF = "0.600000"
AMBI_POWER = "2.000000"
AMBI_POWER = "1.700000"
DO_VIGNETTE = "1.000000"
V_SIZE = "1.900000"
V_POWER = "1.050000"
DO_SPOT = "1.000000"
S_POSITION = "194.000000"
S_POWER = "0.200000"
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"
textures = "monitor_body_curved;monitor_body_straight;bg_under;bg_over;backdrop"
monitor_body_curved = "textures/monitor_body_curved.png"
monitor_body_curved_linear = "true"
monitor_body_curved_wrap_mode = "clamp_to_edge"
monitor_body_curved_mipmap = "true"
monitor_body_straight = "textures/monitor_body_straight.png"
monitor_body_straight_linear = "true"
monitor_body_straight_wrap_mode = "clamp_to_edge"
monitor_body_straight_mipmap = "true"
bg_under = "textures/background_under.png"
bg_under_linear = "true"
bg_under_wrap_mode = "mirrored_repeat"
@ -253,3 +257,7 @@ bg_over = "textures/background_over.png"
bg_over_linear = "true"
bg_over_wrap_mode = "mirrored_repeat"
bg_over_mipmap = "true"
backdrop = "textures/boothill.jpg"
backdrop_linear = "true"
backdrop_wrap_mode = "mirrored_repeat"
backdrop_mipmap = "true"

View File

@ -1,180 +1,180 @@
shaders = "17"
shader0 = "shaders/first_pass.slang"
shader0 = "shaders/ntsc_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
alias0 = "first_pass"
alias0 = "ntsc_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "2.000000"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "2.000000"
shader1 = "shaders/fxaa.slang"
filter_linear1 = "true"
scale_y0 = "1.000000"
shader1 = "shaders/first_pass.slang"
filter_linear1 = "false"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "true"
alias1 = "FXAA_pass"
mipmap_input1 = "false"
alias1 = "first_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
scale_x1 = "1.000000"
scale_x1 = "2.000000"
scale_type_y1 = "source"
scale_y1 = "1.000000"
shader2 = "shaders/shift_and_bleed.slang"
scale_y1 = "2.000000"
shader2 = "shaders/fxaa.slang"
filter_linear2 = "true"
wrap_mode2 = "mirrored_repeat"
mipmap_input2 = "false"
alias2 = "shift_and_bleed_pass"
mipmap_input2 = "true"
alias2 = "FXAA_pass"
float_framebuffer2 = "false"
srgb_framebuffer2 = "false"
scale_type_x2 = "source"
scale_x2 = "1.000000"
scale_type_y2 = "source"
scale_y2 = "1.000000"
shader3 = "shaders/in_glow.slang"
shader3 = "shaders/shift_and_bleed.slang"
filter_linear3 = "true"
wrap_mode3 = "mirrored_repeat"
mipmap_input3 = "false"
alias3 = "in_glow_pass"
alias3 = "shift_and_bleed_pass"
float_framebuffer3 = "true"
srgb_framebuffer3 = "false"
scale_type_x3 = "source"
scale_x3 = "1.000000"
scale_type_y3 = "source"
scale_y3 = "1.000000"
shader4 = "shaders/halo.slang"
shader4 = "shaders/in_glow_x.slang"
filter_linear4 = "true"
wrap_mode4 = "mirrored_repeat"
mipmap_input4 = "false"
alias4 = "halo_pass"
alias4 = "in_glow_pass_x"
float_framebuffer4 = "true"
srgb_framebuffer4 = "false"
scale_type_x4 = "source"
scale_x4 = "1.000000"
scale_type_y4 = "source"
scale_y4 = "1.000000"
shader5 = "shaders/avglum_pass.slang"
shader5 = "shaders/in_glow_y.slang"
filter_linear5 = "true"
wrap_mode5 = "mirrored_repeat"
mipmap_input5 = "false"
alias5 = "avglum_pass"
float_framebuffer5 = "false"
alias5 = "in_glow_pass"
float_framebuffer5 = "true"
srgb_framebuffer5 = "false"
scale_type_x5 = "source"
scale_x5 = "0.500000"
scale_x5 = "1.000000"
scale_type_y5 = "source"
scale_y5 = "0.500000"
shader6 = "shaders/reflection_blur_h.slang"
scale_y5 = "1.000000"
shader6 = "shaders/halo_x.slang"
filter_linear6 = "true"
wrap_mode6 = "mirrored_repeat"
wrap_mode6 = "clamp_to_edge"
mipmap_input6 = "false"
alias6 = "reflected_blurred_pass1"
float_framebuffer6 = "false"
alias6 = "halo_pass_x"
float_framebuffer6 = "true"
srgb_framebuffer6 = "false"
scale_type_x6 = "source"
scale_x6 = "1.000000"
scale_type_y6 = "source"
scale_y6 = "1.000000"
shader7 = "shaders/reflection_blur_v.slang"
shader7 = "shaders/halo_y.slang"
filter_linear7 = "true"
wrap_mode7 = "mirrored_repeat"
wrap_mode7 = "clamp_to_edge"
mipmap_input7 = "false"
alias7 = "reflected_blurred_pass2"
float_framebuffer7 = "false"
alias7 = "halo_pass"
float_framebuffer7 = "true"
srgb_framebuffer7 = "false"
scale_type_x7 = "source"
scale_x7 = "1.000000"
scale_type_y7 = "source"
scale_y7 = "1.000000"
shader8 = "shaders/bloom_pass_1.slang"
shader8 = "shaders/avglum_pass.slang"
filter_linear8 = "true"
wrap_mode8 = "mirrored_repeat"
mipmap_input8 = "false"
alias8 = "bloom_pass_1"
float_framebuffer8 = "true"
alias8 = "avglum_pass"
float_framebuffer8 = "false"
srgb_framebuffer8 = "false"
scale_type_x8 = "source"
scale_x8 = "1.000000"
scale_x8 = "0.500000"
scale_type_y8 = "source"
scale_y8 = "1.000000"
shader9 = "shaders/bloom_pass_2.slang"
scale_y8 = "0.500000"
shader9 = "shaders/reflection_blur_x.slang"
filter_linear9 = "true"
wrap_mode9 = "clamp_to_edge"
wrap_mode9 = "mirrored_repeat"
mipmap_input9 = "false"
alias9 = "bloom_pass_2"
alias9 = "reflected_blurred_pass1"
float_framebuffer9 = "false"
srgb_framebuffer9 = "false"
scale_type_x9 = "source"
scale_x9 = "0.500000"
scale_x9 = "1.000000"
scale_type_y9 = "source"
scale_y9 = "0.500000"
shader10 = "shaders/bloom_pass_3.slang"
scale_y9 = "1.000000"
shader10 = "shaders/reflection_blur_y.slang"
filter_linear10 = "true"
wrap_mode10 = "clamp_to_edge"
wrap_mode10 = "mirrored_repeat"
mipmap_input10 = "false"
alias10 = "bloom_pass_3"
alias10 = "reflected_blurred_pass2"
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"
shader11 = "shaders/bloom_pass_1.slang"
filter_linear11 = "true"
wrap_mode11 = "mirrored_repeat"
mipmap_input11 = "false"
alias11 = "bloom_pass_final"
alias11 = "bloom_pass_1"
float_framebuffer11 = "false"
srgb_framebuffer11 = "false"
scale_type_x11 = "source"
scale_x11 = "1.000000"
scale_type_y11 = "source"
scale_y11 = "1.000000"
shader12 = "shaders/ambi_push_pass.slang"
shader12 = "shaders/bloom_pass_2.slang"
filter_linear12 = "true"
wrap_mode12 = "mirrored_repeat"
wrap_mode12 = "clamp_to_edge"
mipmap_input12 = "false"
alias12 = "ambi_push_pass"
float_framebuffer12 = "true"
alias12 = "bloom_pass_2"
float_framebuffer12 = "false"
srgb_framebuffer12 = "false"
scale_type_x12 = "source"
scale_x12 = "1.000000"
scale_x12 = "0.500000"
scale_type_y12 = "source"
scale_y12 = "1.000000"
shader13 = "shaders/ambi_pre_pass.slang"
scale_y12 = "0.500000"
shader13 = "shaders/bloom_pass_3.slang"
filter_linear13 = "true"
wrap_mode13 = "clamp_to_border"
mipmap_input13 = "true"
alias13 = "ambi_pre_pass1"
wrap_mode13 = "clamp_to_edge"
mipmap_input13 = "false"
alias13 = "bloom_pass_3"
float_framebuffer13 = "false"
srgb_framebuffer13 = "false"
scale_type_x13 = "source"
scale_x13 = "1.000000"
scale_type_y13 = "source"
scale_y13 = "1.000000"
shader14 = "shaders/ambi_temporal_pass.slang"
shader14 = "shaders/bloom_pass_4.slang"
filter_linear14 = "true"
wrap_mode14 = "clamp_to_border"
wrap_mode14 = "mirrored_repeat"
mipmap_input14 = "false"
alias14 = "ambi_temporal_pass"
alias14 = "bloom_pass_final"
float_framebuffer14 = "true"
srgb_framebuffer14 = "false"
scale_type_x14 = "source"
scale_x14 = "1.000000"
scale_type_y14 = "source"
scale_y14 = "1.000000"
shader15 = "shaders/isrotated.slang"
shader15 = "shaders/ambi_temporal_pass.slang"
filter_linear15 = "true"
wrap_mode15 = "mirrored_repeat"
wrap_mode15 = "clamp_to_border"
mipmap_input15 = "false"
alias15 = "isrotated_pass"
float_framebuffer15 = "false"
alias15 = "ambi_temporal_pass"
float_framebuffer15 = "true"
srgb_framebuffer15 = "false"
scale_type_x15 = "viewport"
scale_x15 = "0.100000"
scale_x15 = "0.050000"
scale_type_y15 = "viewport"
scale_y15 = "0.100000"
scale_y15 = "0.050000"
shader16 = "shaders/final_pass.slang"
filter_linear16 = "true"
wrap_mode16 = "mirrored_repeat"
@ -190,9 +190,8 @@ DO_CCORRECTION = "1.000000"
LUMINANCE = "0.100000"
SATURATION = "1.050000"
TEMPERATURE = "7000.000000"
GAMMA_OUT = "0.400000"
GAMMA_OUT = "0.500000"
DO_FXAA = "1.000000"
DO_SAT_BLEED = "1.000000"
SAT_BLEED_PAL = "1.000000"
SAT_BLEED_STRENGTH = "0.500000"
SAT_BLEED_SIZE_LEFT = "3.000000"
@ -203,50 +202,53 @@ SHIFT_R = "-20.000000"
SHIFT_G = "1.000000"
SHIFT_B = "20.000000"
DO_IN_GLOW = "1.000000"
IN_GLOW_POWER = "1.600000"
IN_GLOW_W = "0.950000"
IN_GLOW_H = "0.950000"
IN_GLOW_GAMMA = "2.000000"
IN_GLOW_SPREAD = "2.000000"
IN_GLOW_W = "1.000000"
IN_GLOW_H = "1.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.500000"
DARKLINES_STRENGTH = "0.800000"
DARKLINES_PERIOD = "4.000000"
DO_HALO = "1.000000"
HALO_POWER = "0.520000"
HALO_POWER = "0.990000"
HALO_W = "3.000000"
HALO_H = "3.000000"
HALO_GAMMA = "1.400000"
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 = "2.000000"
BLOOM_MIX = "0.500000"
DO_CURVATURE = "1.000000"
GEOM_WARP_X = "0.800000"
GEOM_WARP_Y = "0.850000"
GEOM_CORNER_SIZE = "0.005000"
GEOM_CORNER_SMOOTH = "700.000000"
GEOM_WARP_X = "0.450000"
GEOM_WARP_Y = "0.500000"
GEOM_CORNER_SMOOTH = "400.000000"
DO_BEZEL = "1.000000"
BEZEL_INNER_ZOOM = "-0.165000"
BEZEL_FRAME_ZOOM = "0.040000"
BEZEL_IMAGE_BORDER = "1.020000"
AMBI_FALLOFF = "0.600000"
AMBI_POWER = "2.000000"
AMBI_POWER = "1.700000"
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"
textures = "monitor_body_curved;monitor_body_straight;bg_under;bg_over;backdrop"
monitor_body_curved = "textures/monitor_body_curved.png"
monitor_body_curved_linear = "true"
monitor_body_curved_wrap_mode = "clamp_to_edge"
monitor_body_curved_mipmap = "true"
monitor_body_straight = "textures/monitor_body_straight.png"
monitor_body_straight_linear = "true"
monitor_body_straight_wrap_mode = "clamp_to_edge"
monitor_body_straight_mipmap = "true"
bg_under = "textures/background_under.png"
bg_under_linear = "true"
bg_under_wrap_mode = "mirrored_repeat"
@ -255,3 +257,7 @@ bg_over = "textures/background_over.png"
bg_over_linear = "true"
bg_over_wrap_mode = "mirrored_repeat"
bg_over_mipmap = "true"
backdrop = "textures/boothill.jpg"
backdrop_linear = "true"
backdrop_wrap_mode = "mirrored_repeat"
backdrop_mipmap = "true"

View File

@ -1,180 +1,180 @@
shaders = "17"
shader0 = "shaders/first_pass.slang"
shader0 = "shaders/ntsc_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
alias0 = "first_pass"
alias0 = "ntsc_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "2.000000"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "2.000000"
shader1 = "shaders/fxaa.slang"
filter_linear1 = "true"
scale_y0 = "1.000000"
shader1 = "shaders/first_pass.slang"
filter_linear1 = "false"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "true"
alias1 = "FXAA_pass"
mipmap_input1 = "false"
alias1 = "first_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
scale_x1 = "1.000000"
scale_x1 = "2.000000"
scale_type_y1 = "source"
scale_y1 = "1.000000"
shader2 = "shaders/shift_and_bleed.slang"
scale_y1 = "2.000000"
shader2 = "shaders/fxaa.slang"
filter_linear2 = "true"
wrap_mode2 = "mirrored_repeat"
mipmap_input2 = "false"
alias2 = "shift_and_bleed_pass"
mipmap_input2 = "true"
alias2 = "FXAA_pass"
float_framebuffer2 = "false"
srgb_framebuffer2 = "false"
scale_type_x2 = "source"
scale_x2 = "1.000000"
scale_type_y2 = "source"
scale_y2 = "1.000000"
shader3 = "shaders/in_glow.slang"
shader3 = "shaders/shift_and_bleed.slang"
filter_linear3 = "true"
wrap_mode3 = "mirrored_repeat"
mipmap_input3 = "false"
alias3 = "in_glow_pass"
alias3 = "shift_and_bleed_pass"
float_framebuffer3 = "true"
srgb_framebuffer3 = "false"
scale_type_x3 = "source"
scale_x3 = "1.000000"
scale_type_y3 = "source"
scale_y3 = "1.000000"
shader4 = "shaders/halo.slang"
shader4 = "shaders/in_glow_x.slang"
filter_linear4 = "true"
wrap_mode4 = "mirrored_repeat"
mipmap_input4 = "false"
alias4 = "halo_pass"
alias4 = "in_glow_pass_x"
float_framebuffer4 = "true"
srgb_framebuffer4 = "false"
scale_type_x4 = "source"
scale_x4 = "1.000000"
scale_type_y4 = "source"
scale_y4 = "1.000000"
shader5 = "shaders/avglum_pass.slang"
shader5 = "shaders/in_glow_y.slang"
filter_linear5 = "true"
wrap_mode5 = "mirrored_repeat"
mipmap_input5 = "false"
alias5 = "avglum_pass"
float_framebuffer5 = "false"
alias5 = "in_glow_pass"
float_framebuffer5 = "true"
srgb_framebuffer5 = "false"
scale_type_x5 = "source"
scale_x5 = "0.500000"
scale_x5 = "1.000000"
scale_type_y5 = "source"
scale_y5 = "0.500000"
shader6 = "shaders/reflection_blur_h.slang"
scale_y5 = "1.000000"
shader6 = "shaders/halo_x.slang"
filter_linear6 = "true"
wrap_mode6 = "mirrored_repeat"
wrap_mode6 = "clamp_to_edge"
mipmap_input6 = "false"
alias6 = "reflected_blurred_pass1"
float_framebuffer6 = "false"
alias6 = "halo_pass_x"
float_framebuffer6 = "true"
srgb_framebuffer6 = "false"
scale_type_x6 = "source"
scale_x6 = "1.000000"
scale_type_y6 = "source"
scale_y6 = "1.000000"
shader7 = "shaders/reflection_blur_v.slang"
shader7 = "shaders/halo_y.slang"
filter_linear7 = "true"
wrap_mode7 = "mirrored_repeat"
wrap_mode7 = "clamp_to_edge"
mipmap_input7 = "false"
alias7 = "reflected_blurred_pass2"
float_framebuffer7 = "false"
alias7 = "halo_pass"
float_framebuffer7 = "true"
srgb_framebuffer7 = "false"
scale_type_x7 = "source"
scale_x7 = "1.000000"
scale_type_y7 = "source"
scale_y7 = "1.000000"
shader8 = "shaders/bloom_pass_1.slang"
shader8 = "shaders/avglum_pass.slang"
filter_linear8 = "true"
wrap_mode8 = "mirrored_repeat"
mipmap_input8 = "false"
alias8 = "bloom_pass_1"
float_framebuffer8 = "true"
alias8 = "avglum_pass"
float_framebuffer8 = "false"
srgb_framebuffer8 = "false"
scale_type_x8 = "source"
scale_x8 = "1.000000"
scale_x8 = "0.500000"
scale_type_y8 = "source"
scale_y8 = "1.000000"
shader9 = "shaders/bloom_pass_2.slang"
scale_y8 = "0.500000"
shader9 = "shaders/reflection_blur_x.slang"
filter_linear9 = "true"
wrap_mode9 = "clamp_to_edge"
wrap_mode9 = "mirrored_repeat"
mipmap_input9 = "false"
alias9 = "bloom_pass_2"
alias9 = "reflected_blurred_pass1"
float_framebuffer9 = "false"
srgb_framebuffer9 = "false"
scale_type_x9 = "source"
scale_x9 = "0.500000"
scale_x9 = "1.000000"
scale_type_y9 = "source"
scale_y9 = "0.500000"
shader10 = "shaders/bloom_pass_3.slang"
scale_y9 = "1.000000"
shader10 = "shaders/reflection_blur_y.slang"
filter_linear10 = "true"
wrap_mode10 = "clamp_to_edge"
wrap_mode10 = "mirrored_repeat"
mipmap_input10 = "false"
alias10 = "bloom_pass_3"
alias10 = "reflected_blurred_pass2"
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"
shader11 = "shaders/bloom_pass_1.slang"
filter_linear11 = "true"
wrap_mode11 = "mirrored_repeat"
mipmap_input11 = "false"
alias11 = "bloom_pass_final"
alias11 = "bloom_pass_1"
float_framebuffer11 = "false"
srgb_framebuffer11 = "false"
scale_type_x11 = "source"
scale_x11 = "1.000000"
scale_type_y11 = "source"
scale_y11 = "1.000000"
shader12 = "shaders/ambi_push_pass.slang"
shader12 = "shaders/bloom_pass_2.slang"
filter_linear12 = "true"
wrap_mode12 = "mirrored_repeat"
wrap_mode12 = "clamp_to_edge"
mipmap_input12 = "false"
alias12 = "ambi_push_pass"
float_framebuffer12 = "true"
alias12 = "bloom_pass_2"
float_framebuffer12 = "false"
srgb_framebuffer12 = "false"
scale_type_x12 = "source"
scale_x12 = "1.000000"
scale_x12 = "0.500000"
scale_type_y12 = "source"
scale_y12 = "1.000000"
shader13 = "shaders/ambi_pre_pass.slang"
scale_y12 = "0.500000"
shader13 = "shaders/bloom_pass_3.slang"
filter_linear13 = "true"
wrap_mode13 = "clamp_to_border"
mipmap_input13 = "true"
alias13 = "ambi_pre_pass1"
wrap_mode13 = "clamp_to_edge"
mipmap_input13 = "false"
alias13 = "bloom_pass_3"
float_framebuffer13 = "false"
srgb_framebuffer13 = "false"
scale_type_x13 = "source"
scale_x13 = "1.000000"
scale_type_y13 = "source"
scale_y13 = "1.000000"
shader14 = "shaders/ambi_temporal_pass.slang"
shader14 = "shaders/bloom_pass_4.slang"
filter_linear14 = "true"
wrap_mode14 = "clamp_to_border"
wrap_mode14 = "mirrored_repeat"
mipmap_input14 = "false"
alias14 = "ambi_temporal_pass"
alias14 = "bloom_pass_final"
float_framebuffer14 = "true"
srgb_framebuffer14 = "false"
scale_type_x14 = "source"
scale_x14 = "1.000000"
scale_type_y14 = "source"
scale_y14 = "1.000000"
shader15 = "shaders/isrotated.slang"
shader15 = "shaders/ambi_temporal_pass.slang"
filter_linear15 = "true"
wrap_mode15 = "mirrored_repeat"
wrap_mode15 = "clamp_to_border"
mipmap_input15 = "false"
alias15 = "isrotated_pass"
float_framebuffer15 = "false"
alias15 = "ambi_temporal_pass"
float_framebuffer15 = "true"
srgb_framebuffer15 = "false"
scale_type_x15 = "viewport"
scale_x15 = "0.100000"
scale_x15 = "0.050000"
scale_type_y15 = "viewport"
scale_y15 = "0.100000"
scale_y15 = "0.050000"
shader16 = "shaders/final_pass.slang"
filter_linear16 = "true"
wrap_mode16 = "mirrored_repeat"
@ -190,9 +190,8 @@ DO_CCORRECTION = "1.000000"
LUMINANCE = "0.100000"
SATURATION = "1.050000"
TEMPERATURE = "7000.000000"
GAMMA_OUT = "0.400000"
GAMMA_OUT = "0.500000"
DO_FXAA = "1.000000"
DO_SAT_BLEED = "1.000000"
SAT_BLEED_PAL = "1.000000"
SAT_BLEED_STRENGTH = "0.500000"
SAT_BLEED_SIZE_LEFT = "3.000000"
@ -203,39 +202,39 @@ SHIFT_R = "-20.000000"
SHIFT_G = "1.000000"
SHIFT_B = "20.000000"
DO_IN_GLOW = "1.000000"
IN_GLOW_POWER = "1.600000"
IN_GLOW_W = "0.950000"
IN_GLOW_H = "0.950000"
IN_GLOW_GAMMA = "2.000000"
IN_GLOW_SPREAD = "2.000000"
IN_GLOW_W = "1.000000"
IN_GLOW_H = "1.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.500000"
DARKLINES_STRENGTH = "0.800000"
DARKLINES_PERIOD = "4.000000"
DO_HALO = "1.000000"
HALO_POWER = "0.520000"
HALO_POWER = "0.990000"
HALO_W = "3.000000"
HALO_H = "3.000000"
HALO_GAMMA = "1.400000"
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 = "2.000000"
BLOOM_MIX = "0.500000"
DO_CURVATURE = "1.000000"
GEOM_WARP_X = "0.500000"
GEOM_WARP_X = "0.450000"
GEOM_WARP_Y = "0.500000"
GEOM_CORNER_SIZE = "0.005000"
GEOM_CORNER_SMOOTH = "700.000000"
GEOM_CORNER_SMOOTH = "400.000000"
DO_BEZEL = "1.000000"
BEZEL_INNER_ZOOM = "-0.010000"
BEZEL_FRAME_ZOOM = "0.170000"
BEZEL_IMAGE_BORDER = "1.020000"
BEZEL_RFL_OFFSET = "0.001000"
BEZEL_REFL_ZOOM = "0.990000"
AMBI_FALLOFF = "0.400000"
AMBI_POWER = "5.000000"
DO_VIGNETTE = "1.000000"
@ -243,11 +242,15 @@ 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"
textures = "monitor_body_curved;monitor_body_straight;bg_under;bg_over;backdrop"
monitor_body_curved = "textures/monitor_body_curved.png"
monitor_body_curved_linear = "true"
monitor_body_curved_wrap_mode = "clamp_to_edge"
monitor_body_curved_mipmap = "true"
monitor_body_straight = "textures/monitor_body_straight.png"
monitor_body_straight_linear = "true"
monitor_body_straight_wrap_mode = "clamp_to_edge"
monitor_body_straight_mipmap = "true"
bg_under = "textures/background_under.png"
bg_under_linear = "true"
bg_under_wrap_mode = "mirrored_repeat"
@ -256,3 +259,7 @@ bg_over = "textures/background_over.png"
bg_over_linear = "true"
bg_over_wrap_mode = "mirrored_repeat"
bg_over_mipmap = "true"
backdrop = "textures/boothill.jpg"
backdrop_linear = "true"
backdrop_wrap_mode = "mirrored_repeat"
backdrop_mipmap = "true"

View File

@ -1,180 +1,180 @@
shaders = "17"
shader0 = "shaders/first_pass.slang"
shader0 = "shaders/ntsc_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
alias0 = "first_pass"
alias0 = "ntsc_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "2.000000"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "2.000000"
shader1 = "shaders/fxaa.slang"
filter_linear1 = "true"
scale_y0 = "1.000000"
shader1 = "shaders/first_pass.slang"
filter_linear1 = "false"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "true"
alias1 = "FXAA_pass"
mipmap_input1 = "false"
alias1 = "first_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
scale_x1 = "1.000000"
scale_x1 = "2.000000"
scale_type_y1 = "source"
scale_y1 = "1.000000"
shader2 = "shaders/shift_and_bleed.slang"
scale_y1 = "2.000000"
shader2 = "shaders/fxaa.slang"
filter_linear2 = "true"
wrap_mode2 = "mirrored_repeat"
mipmap_input2 = "false"
alias2 = "shift_and_bleed_pass"
mipmap_input2 = "true"
alias2 = "FXAA_pass"
float_framebuffer2 = "false"
srgb_framebuffer2 = "false"
scale_type_x2 = "source"
scale_x2 = "1.000000"
scale_type_y2 = "source"
scale_y2 = "1.000000"
shader3 = "shaders/in_glow.slang"
shader3 = "shaders/shift_and_bleed.slang"
filter_linear3 = "true"
wrap_mode3 = "mirrored_repeat"
mipmap_input3 = "false"
alias3 = "in_glow_pass"
alias3 = "shift_and_bleed_pass"
float_framebuffer3 = "true"
srgb_framebuffer3 = "false"
scale_type_x3 = "source"
scale_x3 = "1.000000"
scale_type_y3 = "source"
scale_y3 = "1.000000"
shader4 = "shaders/halo.slang"
shader4 = "shaders/in_glow_x.slang"
filter_linear4 = "true"
wrap_mode4 = "mirrored_repeat"
mipmap_input4 = "false"
alias4 = "halo_pass"
alias4 = "in_glow_pass_x"
float_framebuffer4 = "true"
srgb_framebuffer4 = "false"
scale_type_x4 = "source"
scale_x4 = "1.000000"
scale_type_y4 = "source"
scale_y4 = "1.000000"
shader5 = "shaders/avglum_pass.slang"
shader5 = "shaders/in_glow_y.slang"
filter_linear5 = "true"
wrap_mode5 = "mirrored_repeat"
mipmap_input5 = "false"
alias5 = "avglum_pass"
float_framebuffer5 = "false"
alias5 = "in_glow_pass"
float_framebuffer5 = "true"
srgb_framebuffer5 = "false"
scale_type_x5 = "source"
scale_x5 = "0.500000"
scale_x5 = "1.000000"
scale_type_y5 = "source"
scale_y5 = "0.500000"
shader6 = "shaders/reflection_blur_h.slang"
scale_y5 = "1.000000"
shader6 = "shaders/halo_x.slang"
filter_linear6 = "true"
wrap_mode6 = "mirrored_repeat"
wrap_mode6 = "clamp_to_edge"
mipmap_input6 = "false"
alias6 = "reflected_blurred_pass1"
float_framebuffer6 = "false"
alias6 = "halo_pass_x"
float_framebuffer6 = "true"
srgb_framebuffer6 = "false"
scale_type_x6 = "source"
scale_x6 = "1.000000"
scale_type_y6 = "source"
scale_y6 = "1.000000"
shader7 = "shaders/reflection_blur_v.slang"
shader7 = "shaders/halo_y.slang"
filter_linear7 = "true"
wrap_mode7 = "mirrored_repeat"
wrap_mode7 = "clamp_to_edge"
mipmap_input7 = "false"
alias7 = "reflected_blurred_pass2"
float_framebuffer7 = "false"
alias7 = "halo_pass"
float_framebuffer7 = "true"
srgb_framebuffer7 = "false"
scale_type_x7 = "source"
scale_x7 = "1.000000"
scale_type_y7 = "source"
scale_y7 = "1.000000"
shader8 = "shaders/bloom_pass_1.slang"
shader8 = "shaders/avglum_pass.slang"
filter_linear8 = "true"
wrap_mode8 = "mirrored_repeat"
mipmap_input8 = "false"
alias8 = "bloom_pass_1"
float_framebuffer8 = "true"
alias8 = "avglum_pass"
float_framebuffer8 = "false"
srgb_framebuffer8 = "false"
scale_type_x8 = "source"
scale_x8 = "1.000000"
scale_x8 = "0.500000"
scale_type_y8 = "source"
scale_y8 = "1.000000"
shader9 = "shaders/bloom_pass_2.slang"
scale_y8 = "0.500000"
shader9 = "shaders/reflection_blur_x.slang"
filter_linear9 = "true"
wrap_mode9 = "clamp_to_edge"
wrap_mode9 = "mirrored_repeat"
mipmap_input9 = "false"
alias9 = "bloom_pass_2"
alias9 = "reflected_blurred_pass1"
float_framebuffer9 = "false"
srgb_framebuffer9 = "false"
scale_type_x9 = "source"
scale_x9 = "0.500000"
scale_x9 = "1.000000"
scale_type_y9 = "source"
scale_y9 = "0.500000"
shader10 = "shaders/bloom_pass_3.slang"
scale_y9 = "1.000000"
shader10 = "shaders/reflection_blur_y.slang"
filter_linear10 = "true"
wrap_mode10 = "clamp_to_edge"
wrap_mode10 = "mirrored_repeat"
mipmap_input10 = "false"
alias10 = "bloom_pass_3"
alias10 = "reflected_blurred_pass2"
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"
shader11 = "shaders/bloom_pass_1.slang"
filter_linear11 = "true"
wrap_mode11 = "mirrored_repeat"
mipmap_input11 = "false"
alias11 = "bloom_pass_final"
alias11 = "bloom_pass_1"
float_framebuffer11 = "false"
srgb_framebuffer11 = "false"
scale_type_x11 = "source"
scale_x11 = "1.000000"
scale_type_y11 = "source"
scale_y11 = "1.000000"
shader12 = "shaders/ambi_push_pass.slang"
shader12 = "shaders/bloom_pass_2.slang"
filter_linear12 = "true"
wrap_mode12 = "mirrored_repeat"
wrap_mode12 = "clamp_to_edge"
mipmap_input12 = "false"
alias12 = "ambi_push_pass"
float_framebuffer12 = "true"
alias12 = "bloom_pass_2"
float_framebuffer12 = "false"
srgb_framebuffer12 = "false"
scale_type_x12 = "source"
scale_x12 = "1.000000"
scale_x12 = "0.500000"
scale_type_y12 = "source"
scale_y12 = "1.000000"
shader13 = "shaders/ambi_pre_pass.slang"
scale_y12 = "0.500000"
shader13 = "shaders/bloom_pass_3.slang"
filter_linear13 = "true"
wrap_mode13 = "clamp_to_border"
mipmap_input13 = "true"
alias13 = "ambi_pre_pass1"
wrap_mode13 = "clamp_to_edge"
mipmap_input13 = "false"
alias13 = "bloom_pass_3"
float_framebuffer13 = "false"
srgb_framebuffer13 = "false"
scale_type_x13 = "source"
scale_x13 = "1.000000"
scale_type_y13 = "source"
scale_y13 = "1.000000"
shader14 = "shaders/ambi_temporal_pass.slang"
shader14 = "shaders/bloom_pass_4.slang"
filter_linear14 = "true"
wrap_mode14 = "clamp_to_border"
wrap_mode14 = "mirrored_repeat"
mipmap_input14 = "false"
alias14 = "ambi_temporal_pass"
alias14 = "bloom_pass_final"
float_framebuffer14 = "true"
srgb_framebuffer14 = "false"
scale_type_x14 = "source"
scale_x14 = "1.000000"
scale_type_y14 = "source"
scale_y14 = "1.000000"
shader15 = "shaders/isrotated.slang"
shader15 = "shaders/ambi_temporal_pass.slang"
filter_linear15 = "true"
wrap_mode15 = "mirrored_repeat"
wrap_mode15 = "clamp_to_border"
mipmap_input15 = "false"
alias15 = "isrotated_pass"
float_framebuffer15 = "false"
alias15 = "ambi_temporal_pass"
float_framebuffer15 = "true"
srgb_framebuffer15 = "false"
scale_type_x15 = "viewport"
scale_x15 = "0.100000"
scale_x15 = "0.050000"
scale_type_y15 = "viewport"
scale_y15 = "0.100000"
scale_y15 = "0.050000"
shader16 = "shaders/final_pass.slang"
filter_linear16 = "true"
wrap_mode16 = "mirrored_repeat"
@ -190,57 +190,60 @@ DO_CCORRECTION = "1.000000"
LUMINANCE = "0.100000"
SATURATION = "1.050000"
TEMPERATURE = "7000.000000"
GAMMA_OUT = "0.400000"
GAMMA_OUT = "0.500000"
DO_FXAA = "1.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_W = "0.950000"
IN_GLOW_H = "0.950000"
IN_GLOW_GAMMA = "2.000000"
IN_GLOW_SPREAD = "2.000000"
IN_GLOW_W = "1.000000"
IN_GLOW_H = "1.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.500000"
DARKLINES_STRENGTH = "0.800000"
DARKLINES_PERIOD = "4.000000"
DO_HALO = "1.000000"
HALO_POWER = "0.520000"
HALO_POWER = "0.990000"
HALO_W = "3.000000"
HALO_H = "3.000000"
HALO_GAMMA = "1.400000"
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 = "2.000000"
BLOOM_MIX = "0.500000"
DO_CURVATURE = "1.000000"
GEOM_WARP_X = "0.000000"
GEOM_WARP_X = "0.475000"
GEOM_WARP_Y = "0.500000"
GEOM_CORNER_SMOOTH = "200.000000"
BEZEL_INNER_ZOOM = "-0.160000"
BEZEL_IMAGE_BORDER = "1.020000"
AMBI_FALLOFF = "0.400000"
AMBI_POWER = "1.000000"
V_SIZE = "2.700000"
V_POWER = "1.050000"
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"
textures = "monitor_body_curved;monitor_body_straight;bg_under;bg_over;backdrop"
monitor_body_curved = "textures/monitor_body_curved.png"
monitor_body_curved_linear = "true"
monitor_body_curved_wrap_mode = "clamp_to_edge"
monitor_body_curved_mipmap = "true"
monitor_body_straight = "textures/monitor_body_straight.png"
monitor_body_straight_linear = "true"
monitor_body_straight_wrap_mode = "clamp_to_edge"
monitor_body_straight_mipmap = "true"
bg_under = "textures/background_under.png"
bg_under_linear = "true"
bg_under_wrap_mode = "mirrored_repeat"
@ -249,3 +252,7 @@ bg_over = "textures/background_over.png"
bg_over_linear = "true"
bg_over_wrap_mode = "mirrored_repeat"
bg_over_mipmap = "true"
backdrop = "textures/boothill.jpg"
backdrop_linear = "true"
backdrop_wrap_mode = "mirrored_repeat"
backdrop_mipmap = "true"

View File

@ -1,180 +1,180 @@
shaders = "17"
shader0 = "shaders/first_pass.slang"
shader0 = "shaders/ntsc_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
alias0 = "first_pass"
alias0 = "ntsc_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "2.000000"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "2.000000"
shader1 = "shaders/fxaa.slang"
filter_linear1 = "true"
scale_y0 = "1.000000"
shader1 = "shaders/first_pass.slang"
filter_linear1 = "false"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "true"
alias1 = "FXAA_pass"
mipmap_input1 = "false"
alias1 = "first_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
scale_x1 = "1.000000"
scale_x1 = "2.000000"
scale_type_y1 = "source"
scale_y1 = "1.000000"
shader2 = "shaders/shift_and_bleed.slang"
scale_y1 = "2.000000"
shader2 = "shaders/fxaa.slang"
filter_linear2 = "true"
wrap_mode2 = "mirrored_repeat"
mipmap_input2 = "false"
alias2 = "shift_and_bleed_pass"
mipmap_input2 = "true"
alias2 = "FXAA_pass"
float_framebuffer2 = "false"
srgb_framebuffer2 = "false"
scale_type_x2 = "source"
scale_x2 = "1.000000"
scale_type_y2 = "source"
scale_y2 = "1.000000"
shader3 = "shaders/in_glow.slang"
shader3 = "shaders/shift_and_bleed.slang"
filter_linear3 = "true"
wrap_mode3 = "mirrored_repeat"
mipmap_input3 = "false"
alias3 = "in_glow_pass"
alias3 = "shift_and_bleed_pass"
float_framebuffer3 = "true"
srgb_framebuffer3 = "false"
scale_type_x3 = "source"
scale_x3 = "1.000000"
scale_type_y3 = "source"
scale_y3 = "1.000000"
shader4 = "shaders/halo.slang"
shader4 = "shaders/in_glow_x.slang"
filter_linear4 = "true"
wrap_mode4 = "mirrored_repeat"
mipmap_input4 = "false"
alias4 = "halo_pass"
alias4 = "in_glow_pass_x"
float_framebuffer4 = "true"
srgb_framebuffer4 = "false"
scale_type_x4 = "source"
scale_x4 = "1.000000"
scale_type_y4 = "source"
scale_y4 = "1.000000"
shader5 = "shaders/avglum_pass.slang"
shader5 = "shaders/in_glow_y.slang"
filter_linear5 = "true"
wrap_mode5 = "mirrored_repeat"
mipmap_input5 = "false"
alias5 = "avglum_pass"
float_framebuffer5 = "false"
alias5 = "in_glow_pass"
float_framebuffer5 = "true"
srgb_framebuffer5 = "false"
scale_type_x5 = "source"
scale_x5 = "0.500000"
scale_x5 = "1.000000"
scale_type_y5 = "source"
scale_y5 = "0.500000"
shader6 = "shaders/reflection_blur_h.slang"
scale_y5 = "1.000000"
shader6 = "shaders/halo_x.slang"
filter_linear6 = "true"
wrap_mode6 = "mirrored_repeat"
wrap_mode6 = "clamp_to_edge"
mipmap_input6 = "false"
alias6 = "reflected_blurred_pass1"
float_framebuffer6 = "false"
alias6 = "halo_pass_x"
float_framebuffer6 = "true"
srgb_framebuffer6 = "false"
scale_type_x6 = "source"
scale_x6 = "1.000000"
scale_type_y6 = "source"
scale_y6 = "1.000000"
shader7 = "shaders/reflection_blur_v.slang"
shader7 = "shaders/halo_y.slang"
filter_linear7 = "true"
wrap_mode7 = "mirrored_repeat"
wrap_mode7 = "clamp_to_edge"
mipmap_input7 = "false"
alias7 = "reflected_blurred_pass2"
float_framebuffer7 = "false"
alias7 = "halo_pass"
float_framebuffer7 = "true"
srgb_framebuffer7 = "false"
scale_type_x7 = "source"
scale_x7 = "1.000000"
scale_type_y7 = "source"
scale_y7 = "1.000000"
shader8 = "shaders/bloom_pass_1.slang"
shader8 = "shaders/avglum_pass.slang"
filter_linear8 = "true"
wrap_mode8 = "mirrored_repeat"
mipmap_input8 = "false"
alias8 = "bloom_pass_1"
float_framebuffer8 = "true"
alias8 = "avglum_pass"
float_framebuffer8 = "false"
srgb_framebuffer8 = "false"
scale_type_x8 = "source"
scale_x8 = "1.000000"
scale_x8 = "0.500000"
scale_type_y8 = "source"
scale_y8 = "1.000000"
shader9 = "shaders/bloom_pass_2.slang"
scale_y8 = "0.500000"
shader9 = "shaders/reflection_blur_x.slang"
filter_linear9 = "true"
wrap_mode9 = "clamp_to_edge"
wrap_mode9 = "mirrored_repeat"
mipmap_input9 = "false"
alias9 = "bloom_pass_2"
alias9 = "reflected_blurred_pass1"
float_framebuffer9 = "false"
srgb_framebuffer9 = "false"
scale_type_x9 = "source"
scale_x9 = "0.500000"
scale_x9 = "1.000000"
scale_type_y9 = "source"
scale_y9 = "0.500000"
shader10 = "shaders/bloom_pass_3.slang"
scale_y9 = "1.000000"
shader10 = "shaders/reflection_blur_y.slang"
filter_linear10 = "true"
wrap_mode10 = "clamp_to_edge"
wrap_mode10 = "mirrored_repeat"
mipmap_input10 = "false"
alias10 = "bloom_pass_3"
alias10 = "reflected_blurred_pass2"
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"
shader11 = "shaders/bloom_pass_1.slang"
filter_linear11 = "true"
wrap_mode11 = "mirrored_repeat"
mipmap_input11 = "false"
alias11 = "bloom_pass_final"
alias11 = "bloom_pass_1"
float_framebuffer11 = "false"
srgb_framebuffer11 = "false"
scale_type_x11 = "source"
scale_x11 = "1.000000"
scale_type_y11 = "source"
scale_y11 = "1.000000"
shader12 = "shaders/ambi_push_pass.slang"
shader12 = "shaders/bloom_pass_2.slang"
filter_linear12 = "true"
wrap_mode12 = "mirrored_repeat"
wrap_mode12 = "clamp_to_edge"
mipmap_input12 = "false"
alias12 = "ambi_push_pass"
float_framebuffer12 = "true"
alias12 = "bloom_pass_2"
float_framebuffer12 = "false"
srgb_framebuffer12 = "false"
scale_type_x12 = "source"
scale_x12 = "1.000000"
scale_x12 = "0.500000"
scale_type_y12 = "source"
scale_y12 = "1.000000"
shader13 = "shaders/ambi_pre_pass.slang"
scale_y12 = "0.500000"
shader13 = "shaders/bloom_pass_3.slang"
filter_linear13 = "true"
wrap_mode13 = "clamp_to_border"
mipmap_input13 = "true"
alias13 = "ambi_pre_pass1"
wrap_mode13 = "clamp_to_edge"
mipmap_input13 = "false"
alias13 = "bloom_pass_3"
float_framebuffer13 = "false"
srgb_framebuffer13 = "false"
scale_type_x13 = "source"
scale_x13 = "1.000000"
scale_type_y13 = "source"
scale_y13 = "1.000000"
shader14 = "shaders/ambi_temporal_pass.slang"
shader14 = "shaders/bloom_pass_4.slang"
filter_linear14 = "true"
wrap_mode14 = "clamp_to_border"
wrap_mode14 = "mirrored_repeat"
mipmap_input14 = "false"
alias14 = "ambi_temporal_pass"
alias14 = "bloom_pass_final"
float_framebuffer14 = "true"
srgb_framebuffer14 = "false"
scale_type_x14 = "source"
scale_x14 = "1.000000"
scale_type_y14 = "source"
scale_y14 = "1.000000"
shader15 = "shaders/isrotated.slang"
shader15 = "shaders/ambi_temporal_pass.slang"
filter_linear15 = "true"
wrap_mode15 = "mirrored_repeat"
wrap_mode15 = "clamp_to_border"
mipmap_input15 = "false"
alias15 = "isrotated_pass"
float_framebuffer15 = "false"
alias15 = "ambi_temporal_pass"
float_framebuffer15 = "true"
srgb_framebuffer15 = "false"
scale_type_x15 = "viewport"
scale_x15 = "0.100000"
scale_x15 = "0.050000"
scale_type_y15 = "viewport"
scale_y15 = "0.100000"
scale_y15 = "0.050000"
shader16 = "shaders/final_pass.slang"
filter_linear16 = "true"
wrap_mode16 = "mirrored_repeat"
@ -190,56 +190,59 @@ DO_CCORRECTION = "1.000000"
LUMINANCE = "0.100000"
SATURATION = "1.050000"
TEMPERATURE = "7000.000000"
GAMMA_OUT = "0.400000"
GAMMA_OUT = "0.500000"
DO_FXAA = "1.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_W = "0.950000"
IN_GLOW_H = "0.950000"
IN_GLOW_GAMMA = "2.000000"
IN_GLOW_SPREAD = "2.000000"
IN_GLOW_W = "1.000000"
IN_GLOW_H = "1.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.500000"
DARKLINES_STRENGTH = "0.800000"
DARKLINES_PERIOD = "4.000000"
DO_HALO = "1.000000"
HALO_POWER = "0.520000"
HALO_POWER = "0.990000"
HALO_W = "3.000000"
HALO_H = "3.000000"
HALO_GAMMA = "1.400000"
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 = "2.000000"
BLOOM_MIX = "0.500000"
DO_CURVATURE = "1.000000"
GEOM_WARP_X = "0.000000"
GEOM_WARP_X = "0.475000"
GEOM_WARP_Y = "0.500000"
GEOM_CORNER_SMOOTH = "200.000000"
BEZEL_INNER_ZOOM = "-0.160000"
BEZEL_IMAGE_BORDER = "1.020000"
AMBI_FALLOFF = "0.400000"
AMBI_POWER = "1.000000"
V_SIZE = "2.700000"
V_POWER = "1.050000"
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"
textures = "monitor_body_curved;monitor_body_straight;bg_under;bg_over;backdrop"
monitor_body_curved = "textures/monitor_body_curved.png"
monitor_body_curved_linear = "true"
monitor_body_curved_wrap_mode = "clamp_to_edge"
monitor_body_curved_mipmap = "true"
monitor_body_straight = "textures/monitor_body_straight.png"
monitor_body_straight_linear = "true"
monitor_body_straight_wrap_mode = "clamp_to_edge"
monitor_body_straight_mipmap = "true"
bg_under = "textures/background_under.png"
bg_under_linear = "true"
bg_under_wrap_mode = "mirrored_repeat"
@ -248,3 +251,7 @@ bg_over = "textures/background_over.png"
bg_over_linear = "true"
bg_over_wrap_mode = "mirrored_repeat"
bg_over_mipmap = "true"
backdrop = "textures/boothill.jpg"
backdrop_linear = "true"
backdrop_wrap_mode = "mirrored_repeat"
backdrop_mipmap = "true"