mirror of
https://github.com/libretro/slang-shaders.git
synced 2025-02-17 00:17:51 +00:00
Add 2xsal-level2-xbr shader and presets (#573)
* Add 2xsal-level2-xbr shader and presets Port of guest' shaders from Cg. * xbr-xsal presets moved to presets subdir
This commit is contained in:
parent
9f2c201028
commit
341aac7b7f
101
edge-smoothing/xsal/shaders/2xsal-level2-xbr.slang
Normal file
101
edge-smoothing/xsal/shaders/2xsal-level2-xbr.slang
Normal file
@ -0,0 +1,101 @@
|
||||
#version 450
|
||||
|
||||
/*
|
||||
Copyright (C) 2016 guest(r) - guest.r@gmail.com
|
||||
|
||||
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.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
layout(push_constant) uniform Push
|
||||
{
|
||||
vec4 OutputSize;
|
||||
vec4 OriginalSize;
|
||||
vec4 SourceSize;
|
||||
float AAOFFSET;
|
||||
} params;
|
||||
|
||||
layout(std140, set = 0, binding = 0) uniform UBO
|
||||
{
|
||||
mat4 MVP;
|
||||
} global;
|
||||
|
||||
#pragma parameter AAOFFSET "Filter width" 1.0 0.25 2.0 0.125
|
||||
|
||||
#define AAOFFSET params.AAOFFSET
|
||||
|
||||
#pragma stage vertex
|
||||
layout(location = 0) in vec4 Position;
|
||||
layout(location = 1) in vec2 TexCoord;
|
||||
layout(location = 0) out vec2 vTexCoord;
|
||||
|
||||
/* VERTEX_SHADER */
|
||||
void main()
|
||||
{
|
||||
gl_Position = global.MVP * Position;
|
||||
vTexCoord = TexCoord;
|
||||
}
|
||||
|
||||
#pragma stage fragment
|
||||
layout(location = 0) in vec2 vTexCoord;
|
||||
layout(location = 1) in vec2 FragCoord;
|
||||
layout(location = 0) out vec4 FragColor;
|
||||
layout(set = 0, binding = 2) uniform sampler2D Source;
|
||||
|
||||
void main()
|
||||
{
|
||||
vec2 texsize = params.SourceSize.xy;
|
||||
float dx = AAOFFSET/texsize.x;
|
||||
float dy = AAOFFSET/texsize.y;
|
||||
vec3 dt = vec3(1.0, 1.0, 1.0);
|
||||
|
||||
vec4 yx = vec4( dx, dy, -dx, -dy);
|
||||
vec4 xh = yx*vec4(3.0,1.0,3.0,1.0);
|
||||
vec4 yv = yx*vec4(1.0,3.0,1.0,3.0);
|
||||
|
||||
vec3 c11 = texture(Source, vTexCoord ).xyz;
|
||||
vec3 s00 = texture(Source, vTexCoord + yx.zw).xyz;
|
||||
vec3 s20 = texture(Source, vTexCoord + yx.xw).xyz;
|
||||
vec3 s22 = texture(Source, vTexCoord + yx.xy).xyz;
|
||||
vec3 s02 = texture(Source, vTexCoord + yx.zy).xyz;
|
||||
vec3 h00 = texture(Source, vTexCoord + xh.zw).xyz;
|
||||
vec3 h20 = texture(Source, vTexCoord + xh.xw).xyz;
|
||||
vec3 h22 = texture(Source, vTexCoord + xh.xy).xyz;
|
||||
vec3 h02 = texture(Source, vTexCoord + xh.zy).xyz;
|
||||
vec3 v00 = texture(Source, vTexCoord + yv.zw).xyz;
|
||||
vec3 v20 = texture(Source, vTexCoord + yv.xw).xyz;
|
||||
vec3 v22 = texture(Source, vTexCoord + yv.xy).xyz;
|
||||
vec3 v02 = texture(Source, vTexCoord + yv.zy).xyz;
|
||||
|
||||
float m1=1.0/(dot(abs(s00-s22),dt)+0.00001);
|
||||
float m2=1.0/(dot(abs(s02-s20),dt)+0.00001);
|
||||
float h1=1.0/(dot(abs(s00-h22),dt)+0.00001);
|
||||
float h2=1.0/(dot(abs(s02-h20),dt)+0.00001);
|
||||
float h3=1.0/(dot(abs(h00-s22),dt)+0.00001);
|
||||
float h4=1.0/(dot(abs(h02-s20),dt)+0.00001);
|
||||
float v1=1.0/(dot(abs(s00-v22),dt)+0.00001);
|
||||
float v2=1.0/(dot(abs(s02-v20),dt)+0.00001);
|
||||
float v3=1.0/(dot(abs(v00-s22),dt)+0.00001);
|
||||
float v4=1.0/(dot(abs(v02-s20),dt)+0.00001);
|
||||
|
||||
vec3 t1 = 0.5*(m1*(s00+s22)+m2*(s02+s20))/(m1+m2);
|
||||
vec3 t2 = 0.5*(h1*(s00+h22)+h2*(s02+h20)+h3*(h00+s22)+h4*(h02+s20))/(h1+h2+h3+h4);
|
||||
vec3 t3 = 0.5*(v1*(s00+v22)+v2*(s02+v20)+v3*(v00+s22)+v4*(v02+s20))/(v1+v2+v3+v4);
|
||||
|
||||
float k1 = 1.0/(dot(abs(t1-c11),dt)+0.00001);
|
||||
float k2 = 1.0/(dot(abs(t2-c11),dt)+0.00001);
|
||||
float k3 = 1.0/(dot(abs(t3-c11),dt)+0.00001);
|
||||
|
||||
FragColor = vec4((k1*t1 + k2*t2 + k3*t3)/(k1+k2+k3),1.0);
|
||||
}
|
43
presets/xbr-xsal/xbr-lv3-2xsal-lv2-aa-soft.slangp
Normal file
43
presets/xbr-xsal/xbr-lv3-2xsal-lv2-aa-soft.slangp
Normal file
@ -0,0 +1,43 @@
|
||||
shaders = 6
|
||||
|
||||
shader0 = ../../edge-smoothing/xbr/shaders/support/linearize.slang
|
||||
scale_type0 = "source"
|
||||
scale0 = "1.000000"
|
||||
filter_linear0 = "false"
|
||||
alias0 = XbrSource
|
||||
|
||||
shader1 = ../../edge-smoothing/xbr/shaders/xbr-lv3-multipass/xbr-lv3-pass0.slang
|
||||
scale_type1 = "source"
|
||||
scale1 = "1.000000"
|
||||
filter_linear1 = "false"
|
||||
|
||||
shader2 = ../../edge-smoothing/xbr/shaders/xbr-lv3-multipass/xbr-lv3-pass1.slang
|
||||
scale_type2 = "source"
|
||||
scale2 = "4.000000"
|
||||
filter_linear2 = "false"
|
||||
|
||||
shader3 = ../../edge-smoothing/xsal/shaders/2xsal-level2-xbr.slang
|
||||
filter_linear3 = true
|
||||
scale_type3 = source
|
||||
scale3 = 1.0
|
||||
|
||||
shader4 = ../../anti-aliasing/shaders/aa-shader-4.0.slang
|
||||
filter_linear4 = false
|
||||
scale_type4 = viewport
|
||||
scale4 = 1.0
|
||||
|
||||
shader5 = ../../edge-smoothing/xbr/shaders/support/delinearize.slang
|
||||
scale_type5 = "source"
|
||||
scale5 = "1.000000"
|
||||
filter_linear5 = "false"
|
||||
|
||||
INTERNAL_RES = 2.0
|
||||
AAOFFSET = 0.675
|
||||
XBR_BLENDING = 0.0
|
||||
WP4 = "0.8"
|
||||
InputGamma = "1.000000"
|
||||
SMALL_DETAILS = "0.000000"
|
||||
KA = "0.950000"
|
||||
XBR_EQ_THRESHOLD = "0.450000"
|
||||
OutputGamma = "1.000000"
|
||||
|
42
presets/xbr-xsal/xbr-lv3-2xsal-lv2-aa.slangp
Normal file
42
presets/xbr-xsal/xbr-lv3-2xsal-lv2-aa.slangp
Normal file
@ -0,0 +1,42 @@
|
||||
shaders = "6"
|
||||
|
||||
shader0 = ../../edge-smoothing/xbr/shaders/support/linearize.slang
|
||||
scale_type0 = "source"
|
||||
scale0 = "1.000000"
|
||||
filter_linear0 = "false"
|
||||
alias0 = XbrSource
|
||||
|
||||
shader1 = ../../edge-smoothing/xbr/shaders/xbr-lv3-multipass/xbr-lv3-pass0.slang
|
||||
scale_type1 = "source"
|
||||
scale1 = "1.000000"
|
||||
filter_linear1 = "false"
|
||||
|
||||
shader2 = ../../edge-smoothing/xbr/shaders/xbr-lv3-multipass/xbr-lv3-pass1.slang
|
||||
scale_type2 = "source"
|
||||
scale2 = "5.000000"
|
||||
filter_linear2 = "false"
|
||||
|
||||
shader3 = ../../edge-smoothing/xsal/shaders/2xsal-level2-xbr.slang
|
||||
filter_linear3 = true
|
||||
scale_type3 = source
|
||||
scale3 = 1.0
|
||||
|
||||
shader4 = ../../anti-aliasing/shaders/aa-shader-4.0.slang
|
||||
filter_linear4 = false
|
||||
scale_type4 = viewport
|
||||
scale4 = 1.0
|
||||
|
||||
shader5 = ../../edge-smoothing/xbr/shaders/support/delinearize.slang
|
||||
scale_type5 = "source"
|
||||
scale5 = "1.000000"
|
||||
filter_linear5 = "false"
|
||||
|
||||
INTERNAL_RES = 2.0
|
||||
XBR_BLENDING = 0.0
|
||||
WP4 = "0.8"
|
||||
InputGamma = "1.000000"
|
||||
SMALL_DETAILS = "0.000000"
|
||||
KA = "0.950000"
|
||||
XBR_EQ_THRESHOLD = "0.450000"
|
||||
OutputGamma = "1.000000"
|
||||
|
38
presets/xbr-xsal/xbr-lv3-aa-fast.slangp
Normal file
38
presets/xbr-xsal/xbr-lv3-aa-fast.slangp
Normal file
@ -0,0 +1,38 @@
|
||||
shaders = 4
|
||||
|
||||
shader0 = ../../edge-smoothing/xbr/shaders/support/linearize.slang
|
||||
scale_type0 = "source"
|
||||
scale0 = "1.000000"
|
||||
filter_linear0 = "false"
|
||||
alias0 = XbrSource
|
||||
|
||||
shader1 = ../../edge-smoothing/xbr/shaders/xbr-lv3-multipass/xbr-lv3-pass0.slang
|
||||
scale_type1 = "source"
|
||||
scale1 = "1.000000"
|
||||
filter_linear1 = "false"
|
||||
|
||||
shader2 = ../../edge-smoothing/xbr/shaders/xbr-lv3-multipass/xbr-lv3-pass1.slang
|
||||
scale_type2 = "source"
|
||||
scale2 = "5.000000"
|
||||
filter_linear2 = "false"
|
||||
|
||||
shader3 = ../../anti-aliasing/shaders/aa-shader-4.0.slang
|
||||
filter_linear3 = false
|
||||
scale_type3 = viewport
|
||||
scale3 = 1.0
|
||||
|
||||
shader4 = ../../edge-smoothing/xbr/shaders/support/delinearize.slang
|
||||
scale_type4 = "source"
|
||||
scale4 = "1.000000"
|
||||
filter_linear4 = "false"
|
||||
|
||||
parameters = "INTERNAL_RES"
|
||||
|
||||
INTERNAL_RES = 4.0
|
||||
XBR_BLENDING = 0.0
|
||||
WP4 = "0.8"
|
||||
InputGamma = "1.000000"
|
||||
SMALL_DETAILS = "0.000000"
|
||||
KA = "0.950000"
|
||||
XBR_EQ_THRESHOLD = "0.450000"
|
||||
OutputGamma = "1.000000"
|
38
presets/xbr-xsal/xbr-lv3-aa-soft-fast.slangp
Normal file
38
presets/xbr-xsal/xbr-lv3-aa-soft-fast.slangp
Normal file
@ -0,0 +1,38 @@
|
||||
shaders = 4
|
||||
|
||||
shader0 = ../../edge-smoothing/xbr/shaders/support/linearize.slang
|
||||
scale_type0 = "source"
|
||||
scale0 = "1.000000"
|
||||
filter_linear0 = "false"
|
||||
alias0 = XbrSource
|
||||
|
||||
shader1 = ../../edge-smoothing/xbr/shaders/xbr-lv3-multipass/xbr-lv3-pass0.slang
|
||||
scale_type1 = "source"
|
||||
scale1 = "1.000000"
|
||||
filter_linear1 = "false"
|
||||
|
||||
shader2 = ../../edge-smoothing/xbr/shaders/xbr-lv3-multipass/xbr-lv3-pass1.slang
|
||||
scale_type2 = "source"
|
||||
scale2 = "4.000000"
|
||||
filter_linear2 = "false"
|
||||
|
||||
shader3 = ../../anti-aliasing/shaders/aa-shader-4.0.slang
|
||||
filter_linear3 = false
|
||||
scale_type3 = viewport
|
||||
scale3 = 1.0
|
||||
|
||||
shader4 = ../../edge-smoothing/xbr/shaders/support/delinearize.slang
|
||||
scale_type4 = "source"
|
||||
scale4 = "1.000000"
|
||||
filter_linear4 = "false"
|
||||
|
||||
parameters = "INTERNAL_RES"
|
||||
|
||||
INTERNAL_RES = 4.0
|
||||
XBR_BLENDING = 0.0
|
||||
WP4 = "0.8"
|
||||
InputGamma = "1.000000"
|
||||
SMALL_DETAILS = "0.000000"
|
||||
KA = "0.950000"
|
||||
XBR_EQ_THRESHOLD = "0.450000"
|
||||
OutputGamma = "1.000000"
|
Loading…
x
Reference in New Issue
Block a user