Fixed up the presets for Bang & Olufsen MX8000 and Sony PVM 20L4 Added ability to dial out the horizontal blur to widen black gaps Defaulted the main shaders to standard settings not for any TV

This commit is contained in:
MajorPainTheCactus 2022-02-07 22:24:11 +00:00
parent f08ffdac03
commit ff7baae3d1
7 changed files with 85 additions and 34 deletions

View file

@ -1,12 +1,12 @@
/*
A shader that specifically tries to emulate Bang & Olufsen with a slot mask screen but with full brightness.
A shader that specifically tries to emulate Bang & Olufsen Beovision with a slot mask screen but with full brightness.
The novel thing about this shader is that it transforms the image output by the 'console/arcade/computer' into HDR space first i.e brightens it first and then applies
an slot mask afterwards which is kind of what a CRT would actually do - its kind of a kin to the electron beam (but nothing like it lol).
My DisplayHDR 600 monitor does seem to get reasonably close to the brightness of my PVM - its not quite there but its close. I think DisplayHDR 1000 and above will be able to match.
Currently defaults towards a XXXX CRT MAKE MODEL XXXX.
Currently defaults towards a Bang & Olufsen Beovision MX8000.
To use:
Please Enable HDR in RetroArch 1.10+
@ -34,3 +34,21 @@ mipmap_input0 = "false"
alias0 = ""
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
RedConvergence = "0.000000"
GreenConvergence = "0.000000"
BlueConvergence = "0.000000"
RedScanlineMin = "0.650000"
RedScanlineMax = "0.900000"
RedScanlineAttack = "0.500000"
GreenScanlineMin = "0.650000"
GreenScanlineMax = "0.900000"
GreenScanlineAttack = "0.500000"
BlueScanlineMin = "0.650000"
BlueScanlineMax = "0.900000"
BlueScanlineAttack = "0.500000"
RedBeamSharpness = "1.600000"
RedBeamAttack = "1.7500000"
GreenBeamSharpness = "1.600000"
GreenBeamAttack = "1.750000"
BlueBeamSharpness = "1.600000"
BlueBeamAttack = "1.750000"

View file

@ -0,0 +1 @@
#reference "crt-bang-olufsen-4k-hdr.slangp"

View file

@ -1,17 +1,20 @@
#reference "crt-sony-pvm-4k-hdr.slangp"
CRTResolution = "0.000000"
Contrast = "-0.300000"
HorizontalSharpness = "1.500000"
HorizontalAttack = "0.450000"
RedScanlineMin = "0.55000"
RedScanlineMax = "0.75000"
RedScanlineAttack = "0.650000"
RedConvergence = "-1.200000"
GreenScanlineMin = "0.65000"
GreenScanlineMax = "0.90000"
GreenScanlineAttack = "0.130000"
CRTResolution = "1.000000"
RedConvergence = "0.500000"
GreenConvergence = "0.000000"
BlueScanlineMin = "0.72000"
BlueScanlineMax = "1.15000"
BlueScanlineAttack = "1.00000"
BlueConvergence = "-0.100000"
BlueConvergence = "0.000000"
RedScanlineMin = "0.250000"
RedScanlineMax = "0.400000"
RedScanlineAttack = "0.150000"
GreenScanlineMin = "0.250000"
GreenScanlineMax = "0.400000"
GreenScanlineAttack = "0.150000"
BlueScanlineMin = "0.250000"
BlueScanlineMax = "0.400000"
BlueScanlineAttack = "0.150000"
RedBeamSharpness = "2.000000"
RedBeamAttack = "1.0000000"
GreenBeamSharpness = "2.000000"
GreenBeamAttack = "1.000000"
BlueBeamSharpness = "2.000000"
BlueBeamAttack = "1.000000"

View file

@ -34,3 +34,22 @@ mipmap_input0 = "false"
alias0 = ""
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
RedConvergence = "-0.500000"
GreenConvergence = "0.000000"
BlueConvergence = "0.000000"
RedScanlineMin = "0.550000"
RedScanlineMax = "0.820000"
RedScanlineAttack = "0.650000"
GreenScanlineMin = "0.550000"
GreenScanlineMax = "0.900000"
GreenScanlineAttack = "0.130000"
BlueScanlineMin = "0.720000"
BlueScanlineMax = "1.000000"
BlueScanlineAttack = "0.650000"
RedBeamSharpness = "1.750000"
RedBeamAttack = "0.7200000"
GreenBeamSharpness = "1.600000"
GreenBeamAttack = "0.800000"
BlueBeamSharpness = "1.900000"
BlueBeamAttack = "0.450000"

View file

@ -3,22 +3,23 @@
#pragma parameter DeveloperSettings "DEVELOPER SETTINGS:" 0.0 0.0 0.0 0.0
#pragma parameter CRTResolution " CRT Resolution: 600TVL/800TVL/1000TVL" 0.0 0.0 2.0 1.0
#pragma parameter DeveloperSettings0 " VERTICAL SETTINGS:" 0.0 0.0 0.0 0.0
#pragma parameter RedScanlineMin " Red Scanline Min" 0.55 0.0 2.0 0.01
#pragma parameter RedScanlineMax " Red Scanline Max" 0.82 0.0 2.0 0.01
#pragma parameter RedScanlineAttack " Red Scanline Attack" 0.65 0.0 1.0 0.01
#pragma parameter GreenScanlineMin " Green Scanline Min" 0.55 0.0 2.0 0.01
#pragma parameter GreenScanlineMax " Green Scanline Max" 0.90 0.0 2.0 0.01
#pragma parameter GreenScanlineAttack " Green Scanline Attack" 0.13 0.0 1.0 0.01
#pragma parameter BlueScanlineMin " Blue Scanline Min" 0.72 0.0 2.0 0.01
#pragma parameter RedScanlineMin " Red Scanline Min" 0.50 0.0 2.0 0.01
#pragma parameter RedScanlineMax " Red Scanline Max" 1.00 0.0 2.0 0.01
#pragma parameter RedScanlineAttack " Red Scanline Attack" 0.20 0.0 1.0 0.01
#pragma parameter GreenScanlineMin " Green Scanline Min" 0.50 0.0 2.0 0.01
#pragma parameter GreenScanlineMax " Green Scanline Max" 1.00 0.0 2.0 0.01
#pragma parameter GreenScanlineAttack " Green Scanline Attack" 0.20 0.0 1.0 0.01
#pragma parameter BlueScanlineMin " Blue Scanline Min" 0.50 0.0 2.0 0.01
#pragma parameter BlueScanlineMax " Blue Scanline Max" 1.00 0.0 2.0 0.01
#pragma parameter BlueScanlineAttack " Blue Scanline Attack" 0.65 0.0 1.0 0.01
#pragma parameter BlueScanlineAttack " Blue Scanline Attack" 0.20 0.0 1.0 0.01
#pragma parameter DeveloperSettings1 " HORIZONTAL SETTINGS:" 0.0 0.0 0.0 0.0
#pragma parameter RedBeamSharpness " Red Beam Sharpness" 1.75 0.0 5.0 0.05
#pragma parameter RedBeamAttack " Red Beam Attack" 0.72 0.0 1.0 0.01
#pragma parameter GreenBeamSharpness " Green Beam Sharpness" 1.60 0.0 5.0 0.05
#pragma parameter GreenBeamAttack " Green Beam Attack" 0.80 0.0 1.0 0.01
#pragma parameter BlueBeamSharpness " Blue Beam Sharpness" 1.90 0.0 5.0 0.05
#pragma parameter BlueBeamAttack " Blue Beam Attack" 0.45 0.0 1.0 0.01
#pragma parameter RedBeamAttack " Red Beam Attack" 0.50 0.0 2.0 0.01
#pragma parameter GreenBeamSharpness " Green Beam Sharpness" 1.75 0.0 5.0 0.05
#pragma parameter GreenBeamAttack " Green Beam Attack" 0.50 0.0 2.0 0.01
#pragma parameter BlueBeamSharpness " Blue Beam Sharpness" 1.75 0.0 5.0 0.05
#pragma parameter BlueBeamAttack " Blue Beam Attack" 0.50 0.0 2.0 0.01
#if WHITE_BALANCE_CONTROL
//#pragma parameter WhiteTemperature "White Temperature" 6500.0 0.0 13000.0 50.0

View file

@ -19,17 +19,26 @@ const vec4 kAttackControlPoints = vec4(0.0f, 1.0f, 1.0f, 1.0f);
vec4 RedBeamControlPoints(const bool falloff)
{
return falloff ? kFallOffControlPoints + vec4(0.0f, 0.0f, params.RedBeamAttack, 0.0f) : kAttackControlPoints - vec4(0.0f, params.RedBeamAttack, 0.0f, 0.0f);
float inner_attack = clamp(params.RedBeamAttack, 0.0f, 1.0);
float outer_attack = clamp(params.RedBeamAttack - 1.0f, 0.0f, 1.0);
return falloff ? kFallOffControlPoints + vec4(0.0f, outer_attack, inner_attack, 0.0f) : kAttackControlPoints - vec4(0.0f, inner_attack, outer_attack, 0.0f);
}
vec4 GreenBeamControlPoints(const bool falloff)
{
return falloff ? kFallOffControlPoints + vec4(0.0f, 0.0f, params.GreenBeamAttack, 0.0f) : kAttackControlPoints - vec4(0.0f, params.GreenBeamAttack, 0.0f, 0.0f);
float inner_attack = clamp(params.GreenBeamAttack, 0.0f, 1.0);
float outer_attack = clamp(params.GreenBeamAttack - 1.0f, 0.0f, 1.0);
return falloff ? kFallOffControlPoints + vec4(0.0f, outer_attack, inner_attack, 0.0f) : kAttackControlPoints - vec4(0.0f, inner_attack, outer_attack, 0.0f);
}
vec4 BlueBeamControlPoints(const bool falloff)
{
return falloff ? kFallOffControlPoints + vec4(0.0f, 0.0f, params.BlueBeamAttack, 0.0f) : kAttackControlPoints - vec4(0.0f, params.BlueBeamAttack, 0.0f, 0.0f);
float inner_attack = clamp(params.BlueBeamAttack, 0.0f, 1.0);
float outer_attack = clamp(params.BlueBeamAttack - 1.0f, 0.0f, 1.0);
return falloff ? kFallOffControlPoints + vec4(0.0f, outer_attack, inner_attack, 0.0f) : kAttackControlPoints - vec4(0.0f, inner_attack, outer_attack, 0.0f);
}
float Bezier(const float t0, const vec4 control_points)

View file

@ -18,6 +18,6 @@
#pragma parameter LCDSubpixel " Display's Subpixel Layout: RGB/BGR" 0.0 0.0 1.0 1.0
#pragma parameter Contrast " Contrast" -0.3 -3.0 3.0 0.05
#pragma parameter ExpandGamut " Original/Vivid" 0.0 0.0 1.0 1.0
#pragma parameter RedConvergence " Red Convergence" -0.50 -10.0 10.0 0.05
#pragma parameter RedConvergence " Red Convergence" 0.00 -10.0 10.0 0.05
#pragma parameter GreenConvergence " Green Convergence" 0.00 -10.0 10.0 0.05
#pragma parameter BlueConvergence " Blue Convergence" 0.00 -10.0 10.0 0.05