Data: Add replacement scanlines shader

This commit is contained in:
Stenzek 2024-09-29 17:11:56 +10:00
parent 060146a37a
commit 9de5794afe
No known key found for this signature in database
1 changed files with 65 additions and 0 deletions

View File

@ -0,0 +1,65 @@
/*
[configuration]
[OptionRangeFloat]
GUIName = Active Line Brightness
OptionName = BRIGHTEN
MinValue = 0.1
MaxValue = 2.0
StepAmount = 0.1
DefaultValue = 1.1
[OptionRangeFloat]
GUIName = Inactive Line Darkness
OptionName = DARKEN
MinValue = 0.1
MaxValue = 1.0
StepAmount = 0.01
DefaultValue = 0.5
[OptionRangeFloat]
GUIName = Scanline Thickness
OptionName = THICKNESS
MinValue = 0.1
MaxValue = 1.0
StepAmount = 0.01
DefaultValue = 0.5
[OptionRangeFloat]
GUIName = Scanline Spacing
OptionName = SPACING
MinValue = 0.1
MaxValue = 1.0
StepAmount = 0.01
DefaultValue = 0.25
[/configuration]
*/
float3 RGBToYUV(float3 rgb)
{
return float3(dot(rgb.rgb, float3(0.299, 0.587, 0.114)),
dot(rgb.rgb, float3(-0.14713, -0.28886, 0.436)),
dot(rgb.rgb, float3(0.615, -0.51499, -0.10001)));
}
float3 YUVToRGB(float3 yuv)
{
return float3(dot(yuv, float3(1.0f, 0.0, 1.13983)),
dot(yuv, float3(1.0f, -0.39465, -0.58060)),
dot(yuv, float3(1.0f, 2.03211, 0.0)));
}
void main()
{
float2 pos = GetFragCoord();
float4 color = Sample();
float3 yuv = RGBToYUV(color.rgb);
float thickness = GetOption(THICKNESS);
float spacing = GetOption(SPACING);
yuv.r *= (frac(pos.y * spacing) > thickness) ? (1.0 - GetOption(DARKEN)) : GetOption(BRIGHTEN);
color.rgb = YUVToRGB(yuv);
SetOutput(color);
}