mirror of
https://github.com/italicsjenga/slang-shaders.git
synced 2024-11-22 15:51:30 +11:00
Merge pull request #312 from gregoricavichioli/master
Add Zfast Composite shader
This commit is contained in:
commit
ff2cc5eb1f
99
crt/shaders/zfast_crt/zfast_crt_composite.slang
Normal file
99
crt/shaders/zfast_crt/zfast_crt_composite.slang
Normal file
|
@ -0,0 +1,99 @@
|
|||
#version 450
|
||||
/*
|
||||
zfast_crt - A very simple CRT shader.
|
||||
|
||||
Copyright (C) 2017 Greg Hogan (SoltanGris42)
|
||||
edited by metallic 77.
|
||||
ported to slang by gregoricavichioli & hunterk.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the Free
|
||||
Software Foundation; either version 2 of the License, or (at your option)
|
||||
any later version.
|
||||
|
||||
*/
|
||||
|
||||
layout(push_constant) uniform Push
|
||||
{
|
||||
vec4 SourceSize;
|
||||
vec4 OriginalSize;
|
||||
vec4 OutputSize;
|
||||
uint FrameCount;
|
||||
float pi, blurx, blury, HIGHSCANAMOUNT1, HIGHSCANAMOUNT2, MASK_DARK, MASK_FADE, sat;
|
||||
} params;
|
||||
|
||||
#pragma parameter blurx "Convergence X-Axis" 0.45 -1.0 2.0 0.05
|
||||
#pragma parameter blury "Convergence Y-Axis" -0.25 -1.0 1.0 0.05
|
||||
#pragma parameter HIGHSCANAMOUNT1 "Scanline Amount (Low)" 0.3 0.0 1.0 0.05
|
||||
#pragma parameter HIGHSCANAMOUNT2 "Scanline Amount (High)" 0.2 0.0 1.0 0.05
|
||||
#pragma parameter MASK_DARK "Mask Effect Amount" 0.25 0.0 1.0 0.05
|
||||
#pragma parameter MASK_FADE "Mask/Scanline Fade" 0.8 0.0 1.0 0.05
|
||||
#pragma parameter sat "Saturation" 1.1 0.0 3.0 0.05
|
||||
|
||||
#define pi 3.14159
|
||||
#define blurx params.blurx
|
||||
#define blury params.blury
|
||||
#define HIGHSCANAMOUNT1 params.HIGHSCANAMOUNT1
|
||||
#define HIGHSCANAMOUNT2 params.HIGHSCANAMOUNT2
|
||||
#define BRIGHTBOOST params.BRIGHTBOOST
|
||||
#define MASK_DARK params.MASK_DARK
|
||||
#define MASK_FADE params.MASK_FADE
|
||||
#define sat params.sat
|
||||
|
||||
layout(std140, set = 0, binding = 0) uniform UBO
|
||||
{
|
||||
mat4 MVP;
|
||||
} global;
|
||||
|
||||
#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 maskFade;
|
||||
|
||||
void main()
|
||||
{
|
||||
gl_Position = global.MVP * Position;
|
||||
vTexCoord = TexCoord;
|
||||
maskFade = 0.3333*MASK_FADE;
|
||||
}
|
||||
|
||||
|
||||
#pragma stage fragment
|
||||
layout(location = 0) in vec2 vTexCoord;
|
||||
layout(location = 1) in float maskFade;
|
||||
layout(location = 0) out vec4 FragColor;
|
||||
layout(set = 0, binding = 2) uniform sampler2D Source;
|
||||
|
||||
void main()
|
||||
{
|
||||
vec2 pos = vTexCoord.xy;
|
||||
|
||||
vec3 sample1 = texture(Source,vec2(pos.x + blurx/1000.0, pos.y - blury/1000.0)).rgb;
|
||||
vec3 sample2 = texture(Source,pos).rgb;
|
||||
vec3 sample3 = texture(Source,vec2(pos.x - blurx/1000.0, pos.y + blury/1000.0)).rgb;
|
||||
|
||||
vec3 colour = vec3 (sample1.r*0.5+sample2.r*0.5, sample1.g*0.25 + sample2.g*0.5 + sample3.g*0.25, sample2.b*0.5 + sample3.b*0.5);
|
||||
float lum = colour.r*0.4 + colour.g*0.4 + colour.b*0.2;
|
||||
|
||||
vec3 lumweight=vec3(0.3,0.6,0.1);
|
||||
float gray = dot(colour,lumweight);
|
||||
vec3 graycolour = vec3(gray);
|
||||
|
||||
//Gamma-like
|
||||
colour*=mix(0.4,1.0,lum);
|
||||
|
||||
float SCANAMOUNT = mix(HIGHSCANAMOUNT1,HIGHSCANAMOUNT2,lum);
|
||||
float scanLine = SCANAMOUNT * sin(2.0*pi*pos.y*params.SourceSize.y);
|
||||
|
||||
float whichmask = fract(gl_FragCoord.x*-0.4999);
|
||||
float mask = 1.0 + float(whichmask < 0.5) * -MASK_DARK;
|
||||
|
||||
//Gamma-like
|
||||
colour*=mix(2.0,1.0,lum);
|
||||
|
||||
colour = vec3(mix(graycolour,colour.rgb,sat));
|
||||
|
||||
colour.rgb *= mix(mask*(1.0-scanLine), 1.0-scanLine, dot(colour.rgb,vec3(maskFade)));
|
||||
FragColor.rgb = colour.rgb;
|
||||
}
|
7
crt/zfast-crt-composite.slangp
Normal file
7
crt/zfast-crt-composite.slangp
Normal file
|
@ -0,0 +1,7 @@
|
|||
shaders = 1
|
||||
shader0 = shaders/zfast_crt/zfast_crt_composite.slang
|
||||
filter_linear0 = true
|
||||
wrap_mode0 = clamp_to_border
|
||||
mipmap_input0 = false
|
||||
float_framebuffer0 = false
|
||||
srgb_framebuffer0 = false
|
Loading…
Reference in a new issue