update gdv-mini-ultra, port convergence (#515)

* Update crt-gdv-mini-ultra.slang

* Add files via upload

* Add files via upload

* Update ntsc-simple.slang
This commit is contained in:
metallic77 2023-11-30 18:47:52 +02:00 committed by GitHub
parent 3645faa915
commit 58ea67a83b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 94 additions and 18 deletions

View file

@ -46,10 +46,10 @@ layout(push_constant) uniform Push
float gamma_out_green;
float gamma_out_blue;
float vignette;
float mono;
float R;
float G;
float B;
float gdv_mono;
float gdv_R;
float gdv_G;
float gdv_B;
float thres;
} params;
@ -91,10 +91,10 @@ layout(push_constant) uniform Push
#pragma parameter warpX "CurvatureX (default 0.03)" 0.0 0.0 0.25 0.01
#define warpX params.warpX
#pragma parameter warpY "CurvatureY (default 0.04)" 0.0 0.0 0.25 0.01
#pragma parameter warpY "CurvatureY (default 0.04)" 0.05 0.0 0.25 0.01
#define warpY params.warpY
#pragma parameter vignette "Vignette On/Off" 0.0 0.0 1.0 1.0
#pragma parameter vignette "Vignette On/Off" 1.0 0.0 1.0 1.0
#define vignette params.vignette
#pragma parameter gamma_out_red " Gamma out Red" 2.2 1.0 4.0 0.1
@ -112,21 +112,21 @@ layout(push_constant) uniform Push
#pragma parameter sat " Saturation adjustment" 1.2 0.0 2.0 0.05
#define sat params.sat
#pragma parameter glow "Glow Strength" 0.2 0.0 1.0 0.01
#pragma parameter glow "Glow Strength" 0.35 0.0 1.0 0.01
#define glow params.glow
#pragma parameter mono "Mono Display On/Off" 0.0 0.0 1.0 1.0
#define mono params.mono
#pragma parameter gdv_mono "Mono Display On/Off" 0.0 0.0 1.0 1.0
#define gdv_mono params.gdv_mono
#pragma parameter R "Mono Red/Channel" 1.0 0.0 2.0 0.01
#define R params.R
#pragma parameter gdv_R "Mono Red/Channel" 1.0 0.0 2.0 0.01
#define gdv_R params.gdv_R
#pragma parameter G "Mono Green/Channel" 1.0 0.0 2.0 0.01
#define G params.G
#pragma parameter gdv_G "Mono Green/Channel" 1.0 0.0 2.0 0.01
#define gdv_G params.gdv_G
#pragma parameter B "Mono Blue/Channel" 1.0 0.0 2.0 0.01
#define B params.B
#pragma parameter gdv_B "Mono Blue/Channel" 1.0 0.0 2.0 0.01
#define gdv_B params.gdv_B
@ -492,10 +492,10 @@ void main()
color*= vign(lum);
if (mono == 1.0)
if (gdv_mono == 1.0)
{
vec3 col1 = toGrayscale (color);
vec3 c = vec3(R, G, B);
vec3 c = vec3(gdv_R, gdv_G, gdv_B);
color = colorize (col1, c);
}

5
misc/convergence.slangp Normal file
View file

@ -0,0 +1,5 @@
shaders = 1
shader0 = shaders/convergence.slang
scale_type0 = source
filter_linear0 = true

View file

@ -0,0 +1,71 @@
#version 450
/*
convergence pass DariusG 2023.
Run in Linear, BEFORE actual shader pass
*/
layout(push_constant) uniform Push
{
vec4 SourceSize;
vec4 OriginalSize;
vec4 OutputSize;
float C_STR,Rx,Ry,Gx,Gy,Bx,By;
} params;
#pragma parameter C_STR "Convergence Overall Strength" 0.5 0.0 0.5 0.05
#pragma parameter Rx "Convergence Red Horiz." 0.9 -5.0 5.0 0.05
#pragma parameter Ry "Convergence Red Vert." 0.05 -5.0 5.0 0.05
#pragma parameter Gx "Convergence Green Horiz." -0.95 -5.0 5.0 0.05
#pragma parameter Gy "Convergence Green Vert." -0.05 -5.0 5.0 0.05
#pragma parameter Bx "Convergence Blue Horiz." 0.9 -5.0 5.0 0.05
#pragma parameter By "Convergence Blue Vert." 0.05 -5.0 5.0 0.05
#define C_STR params.C_STR
#define Rx params.Rx
#define Ry params.Ry
#define Gx params.Gx
#define Gy params.Gy
#define Bx params.Bx
#define By params.By
layout(std140, set = 0, binding = 0) uniform UBO
{
mat4 MVP;
vec4 FinalViewportSize;
} global;
#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 = 1) uniform sampler2D Source;
void main()
{
vec2 dx = vec2(params.SourceSize.z,0.0);
vec2 dy = vec2(0.0,params.SourceSize.w);
vec2 pos = vTexCoord;
vec3 res0 = texture(Source,pos).rgb;
float resr = texture(Source,pos + dx*Rx + dy*Ry).r;
float resg = texture(Source,pos + dx*Gx + dy*Gy).g;
float resb = texture(Source,pos + dx*Bx + dy*By).b;
vec3 res = vec3( res0.r*(1.0-C_STR) + resr*C_STR,
res0.g*(1.0-C_STR) + resg*C_STR,
res0.b*(1.0-C_STR) + resb*C_STR
);
FragColor.rgb = res;
}

View file

@ -15,7 +15,7 @@ layout(push_constant) uniform Push
#pragma parameter CHR_BLUR "CHROMA RESOLUTION" 2.3 1.0 10.0 0.1
#pragma parameter L_BLUR "LUMA RESOLUTION" 10.5 10.0 20.0 0.5
#pragma parameter L_BLUR "LUMA RESOLUTION" 10.5 6.0 20.0 0.5
#pragma parameter CHROMA_SATURATION "CHROMA SATURATION" 5.0 0.0 15.0 0.1
#pragma parameter BRIGHTNESS "LUMA BRIGHTNESS" 0.55 0.0 2.0 0.01
#pragma parameter IHUE "I SHIFT (blue to orange)" 0.0 -1.0 1.0 0.01