mirror of
https://github.com/italicsjenga/slang-shaders.git
synced 2024-11-23 00:01:31 +11:00
Merge pull request #224 from MajorPainTheCactus/hdr_3_1
V3.1 Sony PVM 4K HDR Shader
This commit is contained in:
commit
e77a603ad2
|
@ -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"
|
||||
|
|
1
hdr/crt-bang-olufsen-mx8000-4k-hdr.slangp
Normal file
1
hdr/crt-bang-olufsen-mx8000-4k-hdr.slangp
Normal file
|
@ -0,0 +1 @@
|
|||
#reference "crt-bang-olufsen-4k-hdr.slangp"
|
|
@ -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"
|
|
@ -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"
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
Loading…
Reference in a new issue