From af687d2f30c1ccfe5df5b228903350642eabd7fd Mon Sep 17 00:00:00 2001 From: galister <22305755+galister@users.noreply.github.com> Date: Thu, 1 Feb 2024 00:25:30 +0100 Subject: [PATCH] shader cleanup --- src/shaders/frag-color.spv | Bin 696 -> 0 bytes src/shaders/frag-glyph.spv | Bin 1148 -> 0 bytes src/shaders/frag-sprite.spv | Bin 764 -> 0 bytes src/shaders/frag-srgb.spv | Bin 1316 -> 0 bytes src/shaders/mod.rs | 117 ------------------------------------ src/shaders/src/color.frag | 15 ----- src/shaders/src/common.vert | 12 ---- src/shaders/src/glyph.frag | 18 ------ src/shaders/src/screen.frag | 111 ---------------------------------- src/shaders/src/sprite.frag | 14 ----- src/shaders/src/srgb.frag | 19 ------ src/shaders/vert-common.spv | Bin 964 -> 0 bytes 12 files changed, 306 deletions(-) delete mode 100644 src/shaders/frag-color.spv delete mode 100644 src/shaders/frag-glyph.spv delete mode 100644 src/shaders/frag-sprite.spv delete mode 100644 src/shaders/frag-srgb.spv delete mode 100644 src/shaders/src/color.frag delete mode 100644 src/shaders/src/common.vert delete mode 100644 src/shaders/src/glyph.frag delete mode 100644 src/shaders/src/screen.frag delete mode 100644 src/shaders/src/sprite.frag delete mode 100644 src/shaders/src/srgb.frag delete mode 100644 src/shaders/vert-common.spv diff --git a/src/shaders/frag-color.spv b/src/shaders/frag-color.spv deleted file mode 100644 index 4cab844fe8804a839ecc6fe6d2398874294a4c79..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 696 zcmYk3OH0F05QV3Yw6(P_YjsyzyA+BGErKYhNL&QE@CO7*vk1nd^acKNH-hK8t9j5^IY$Ivks#?&6ny6R#$u`e@gS{!?ab!VS+8m{;6V?>=;mnHaqBjvsLt! zv)4e5z3z3nk2z$%>giQ<_p;Nv;6X+`+9Q|ka`gZ7da9ys*s3vX~6is*yEC1)P6zVfExP+pK%J81-#MxacvIGc(t7uh%?TGHckXt=k(btY=LzCa&XRF#0hX&hqi_{fBobHq3KE zG+kS=mLmS^Cdt@%Du3ak=XfM9t038UNFaF+i`<1kIKI27XgR=Th1Uae1Rjpw+gFm-*!#WR38Lqp!z9itnlAGgVRORJ8e@4Tg(HRo_U z_C!BsQRFMsMm=m#`74U(eDz<2l);^qxSG+n@P>Hm(HnhNky`NR!OR8@{WC@M-1(;d zpDX%u>}`oR3+U=?Yt6TjM?En24R@%2=Eokrj}$ov99pn1hoje^#0^Dyfsf@F`P>0o z>YeItSaVK{eh*^WiqvMVyi?-2F!SL(FdH!6-;?w0*UF+MZvqYccX7;tw^6;73w5C; z95vYAk;7GZ_YvNEg!fDQO(&!0ft(uTp=JM4z4_Lca$n92sE_`Y9R9vM^J}fC0nhoE LJ=|Yw*hl$4#*0Xk diff --git a/src/shaders/frag-sprite.spv b/src/shaders/frag-sprite.spv deleted file mode 100644 index 662225b06e1a13e795485007ef2278baf9e0c739..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 764 zcmY+B&r1Sv5XC2dq-myRY7&IjF^~==K~!{zy)1a>&~XXf!@{SIv%3Vn&#JY3 zVRq)ddEc4&&gOIHC9@r?TFrX4K26JsF>$-8cid-pxQwU6tLsY?2bNETXzEt7f;{&2 z8bl=aWKCH^I(Riuluv7obg5t!b6n3Ej~(~Po6P6lGX4mCFAO5zn+6Mi5(g_ET{)u* zqDh!cvx1@&*}g?9roCrL>`i9jY@xnzHTfX&V*fo(7OKlV<`b8!7NJ*M+Iaoah_!)PhG3=6!G%!f20VW}gpj z;kKeaP=`FYBV%6bbvH5hM*0i%;jJ7rUt)^#cVd~5y)qw|84hLif02rvuv;|n_o~2d W;2xEy*Rc$a8OVc~_ggQxk^KOq=r-5@ diff --git a/src/shaders/frag-srgb.spv b/src/shaders/frag-srgb.spv deleted file mode 100644 index 513121a98823c717e242c96236b7159279e26b7a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1316 zcmY+E%T5$Q6o$*W01hA^2#$D}5%C6&nkX?b<7HubGl4`GE<2>BkxtraGIS#>UFj?6 z8@OT36Zs5mNc_K=E+{)WQ|JHBU*}YvQ<-XIW!#ucX3|WX=VtWHnTi-AZp^Mh?^Ca{ zpZ7a2UOq!{#Z;{j&5Rj0HLcj!?PNgUvTRN^D;>NF$gA318`@Me4HNXjU~4PreF&qy zy>LH2O5-q1265O=hH;c92Qj({PnQg$wCMYSx)grhx~bdRS&@fPmS#iMg`3uz48lA< z%!{G&vXAqLD-NutW|p)@MV{^KjN-S1catx>v67&FD4b^BfF=;;j<;oef$l~PK4SQH zExN$%b6i#bMju+v;pdqzWAmCpMSk0M&RBm@{+PIyY)O0RE0`X%^gE%I$-uuZG3SJ9 z>ckDL=rw}>K8Kg3oKyrI`KC%09QnZRp46WaCLiZSKdY5o@aVzZ4{kxK1+DD6X7RtAY|8!~uXfiJA$FtW;GI$PrZ92L?Y$%aIM_bl+Y*NJ&1soaxAEhxtFs~u z=bO{6ivRtq`OazY3&Z*5w2#GqJlTBjv}?j}zHR7b(L3hH$DB^Z)V0z-`og>9ZeZ@p zyYw;d65LgsIq|lb5tun#l`(_Q%8HKng$DkOD)K(y&=bEdgFBI)c`TP4{YTGv;GCYf zi~f6=zbzlGCHq-&_vFLV+bLC{&I1|mg1p4(CHc7@F_-_5eDb?o>+<2~CwlG==k!nH jlf&VTd^BM0^Hjzi{^*r)4*t;K(6QI`1pZ7Xd?ot_)t^^i diff --git a/src/shaders/mod.rs b/src/shaders/mod.rs index 0435779..15e979a 100644 --- a/src/shaders/mod.rs +++ b/src/shaders/mod.rs @@ -106,120 +106,3 @@ pub mod frag_srgb { ", } } - -pub mod frag_screen { - vulkano_shaders::shader! { - ty: "fragment", - src: r"#version 310 es - precision highp float; - - layout (location = 0) in vec2 in_uv; - layout (location = 0) out vec4 out_color; - - layout (set = 0, binding = 0) uniform sampler2D in_texture; - - layout (set = 0, binding = 1) uniform ColorBlock { - uniform vec4 in_color; - }; - - - vec4 supersample(sampler2D tex, vec2 uv) { - float ddx = dFdx(uv.x); - float ddy = dFdy(uv.y); - float width = sqrt(ddx*ddx + ddy*ddy); - - ivec2 size = textureSize(tex, 0); - - ivec2 pixelWidth = ivec2(width * vec2(size)); - ivec2 xy = ivec2(uv * vec2(size)); - - ivec2 start = xy - pixelWidth/2; - ivec2 end = xy + pixelWidth/2; - - vec4 outColor = vec4(0.0); - int n = 0; - - for (int xSample = start.x; xSample <= end.x; xSample++) { - for (int ySample = start.y; ySample <= end.y; ySample++) { - n++; - outColor += texelFetch(tex, clamp(ivec2(xSample, ySample), ivec2(0), size), 0); - } - } - if (n > 0) { - return outColor / float(n); - } else { - return vec4(0.0); - } - } - - - float gaussian(float x, float t) { - float PI = 3.14159265358; - return exp(-x*x/(2.0 * t*t))/(sqrt(2.0*PI)*t); - } - - - float besselI0(float x) { - return 1.0 + pow(x, 2.0) * (0.25 + pow(x, 2.0) * (0.015625 + pow(x, 2.0) * (0.000434028 + pow(x, 2.0) * (6.78168e-6 + pow(x, 2.0) * (6.78168e-8 + pow(x, 2.0) * (4.7095e-10 + pow(x, 2.0) * (2.40281e-12 + pow(x, 2.0) * (9.38597e-15 + pow(x, 2.0) * (2.8969e-17 + 7.24226e-20 * pow(x, 2.0)))))))))); - } - - float kaiser(float x, float alpha) { - if (x > 1.0) { - return 0.0; - } - return besselI0(alpha * sqrt(1.0-x*x)); - } - - vec4 lowpassFilter(sampler2D tex, vec2 uv, float alpha) { - float PI = 3.14159265358; - - vec4 q = vec4(0.0); - - vec2 dx_uv = dFdx(uv); - vec2 dy_uv = dFdy(uv); - //float width = sqrt(max(dot(dx_uv, dx_uv), dot(dy_uv, dy_uv))); - vec2 width = abs(vec2(dx_uv.x, dy_uv.y)); - - - ivec2 size = textureSize(tex, 0); - - vec2 pixelWidth = floor(width * vec2(size)); - vec2 aspectRatio = normalize(pixelWidth); - - ivec2 xy = ivec2(uv * vec2(size)); - vec2 xyf = uv * vec2(size); - - pixelWidth = clamp(pixelWidth, vec2(1.0), vec2(2.0)); - - - ivec2 start = xy - ivec2(pixelWidth); - ivec2 end = xy + ivec2(pixelWidth); - - vec4 outColor = vec4(0.0); - - float qSum = 0.0; - - for (int v = start.y; v <= end.y; v++) { - for (int u = start.x; u <= end.x; u++) { - float kx = (xyf.x - float(u))/pixelWidth.x; - float ky = (xyf.y - float(v))/pixelWidth.y; - - //float lanczosValue = gaussian(kx, fcx); - float lanczosValue = kaiser(sqrt(kx*kx + ky*ky), alpha); - - q += texelFetch(tex, ivec2(u, v), 0) * lanczosValue; - qSum += lanczosValue; - } - } - - return q/qSum; - } - - void main() - { - out_color = lowpassFilter(in_texture, in_uv, 4.0); - out_color.a = 1.0; - } - ", - } -} diff --git a/src/shaders/src/color.frag b/src/shaders/src/color.frag deleted file mode 100644 index e776b5a..0000000 --- a/src/shaders/src/color.frag +++ /dev/null @@ -1,15 +0,0 @@ -#version 310 es -precision highp float; - -layout (location = 0) in vec2 in_uv; -layout (location = 0) out vec4 out_color; - -layout (set = 0, binding = 0) uniform ColorBlock { - uniform vec4 in_color; -}; - -void main() -{ - out_color = in_color; -} - diff --git a/src/shaders/src/common.vert b/src/shaders/src/common.vert deleted file mode 100644 index 1cd48e8..0000000 --- a/src/shaders/src/common.vert +++ /dev/null @@ -1,12 +0,0 @@ -#version 310 es -precision highp float; - -layout (location = 0) in vec2 in_pos; -layout (location = 1) in vec2 in_uv; -layout (location = 0) out vec2 out_uv; - -void main() { - out_uv = in_uv; - gl_Position = vec4(in_pos * 2. - 1., 0., 1.); -} - diff --git a/src/shaders/src/glyph.frag b/src/shaders/src/glyph.frag deleted file mode 100644 index 397bf68..0000000 --- a/src/shaders/src/glyph.frag +++ /dev/null @@ -1,18 +0,0 @@ -#version 310 es -precision highp float; - -layout (location = 0) in vec2 in_uv; -layout (location = 0) out vec4 out_color; - -layout (set = 0, binding = 0) uniform sampler2D in_texture; - -layout (set = 0, binding = 1) uniform ColorBlock { - uniform vec4 in_color; -}; - -void main() -{ - float r = texture(in_texture, in_uv).r; - out_color = vec4(r,r,r,r) * in_color; -} - diff --git a/src/shaders/src/screen.frag b/src/shaders/src/screen.frag deleted file mode 100644 index 50d657f..0000000 --- a/src/shaders/src/screen.frag +++ /dev/null @@ -1,111 +0,0 @@ -#version 310 es -precision highp float; - -layout (location = 0) in vec2 in_uv; -layout (location = 0) out vec4 out_color; - -layout (set = 0, binding = 0) uniform sampler2D in_texture; - -layout (set = 0, binding = 1) uniform ColorBlock { - uniform vec4 in_color; -}; - - -vec4 supersample(sampler2D tex, vec2 uv) { - float ddx = dFdx(uv.x); - float ddy = dFdy(uv.y); - float width = sqrt(ddx*ddx + ddy*ddy); - - ivec2 size = textureSize(tex, 0); - - ivec2 pixelWidth = ivec2(width * vec2(size)); - ivec2 xy = ivec2(uv * vec2(size)); - - ivec2 start = xy - pixelWidth/2; - ivec2 end = xy + pixelWidth/2; - - vec4 outColor = vec4(0.0); - int n = 0; - - for (int xSample = start.x; xSample <= end.x; xSample++) { - for (int ySample = start.y; ySample <= end.y; ySample++) { - n++; - outColor += texelFetch(tex, clamp(ivec2(xSample, ySample), ivec2(0), size), 0); - } - } - if (n > 0) { - return outColor / float(n); - } else { - return vec4(0.0); - } -} - - -float gaussian(float x, float t) { - float PI = 3.14159265358; - return exp(-x*x/(2.0 * t*t))/(sqrt(2.0*PI)*t); -} - - -float besselI0(float x) { - return 1.0 + pow(x, 2.0) * (0.25 + pow(x, 2.0) * (0.015625 + pow(x, 2.0) * (0.000434028 + pow(x, 2.0) * (6.78168e-6 + pow(x, 2.0) * (6.78168e-8 + pow(x, 2.0) * (4.7095e-10 + pow(x, 2.0) * (2.40281e-12 + pow(x, 2.0) * (9.38597e-15 + pow(x, 2.0) * (2.8969e-17 + 7.24226e-20 * pow(x, 2.0)))))))))); -} - -float kaiser(float x, float alpha) { - if (x > 1.0) { - return 0.0; - } - return besselI0(alpha * sqrt(1.0-x*x)); -} - -vec4 lowpassFilter(sampler2D tex, vec2 uv, float alpha) { - float PI = 3.14159265358; - - vec4 q = vec4(0.0); - - vec2 dx_uv = dFdx(uv); - vec2 dy_uv = dFdy(uv); - //float width = sqrt(max(dot(dx_uv, dx_uv), dot(dy_uv, dy_uv))); - vec2 width = abs(vec2(dx_uv.x, dy_uv.y)); - - - ivec2 size = textureSize(tex, 0); - - vec2 pixelWidth = floor(width * vec2(size)); - vec2 aspectRatio = normalize(pixelWidth); - - ivec2 xy = ivec2(uv * vec2(size)); - vec2 xyf = uv * vec2(size); - - pixelWidth = clamp(pixelWidth, vec2(1.0), vec2(2.0)); - - - ivec2 start = xy - ivec2(pixelWidth); - ivec2 end = xy + ivec2(pixelWidth); - - vec4 outColor = vec4(0.0); - - float qSum = 0.0; - - for (int v = start.y; v <= end.y; v++) { - for (int u = start.x; u <= end.x; u++) { - float kx = fcFactor * (xyf.x - float(u))/pixelWidth.x; - float ky = fcFactor * (xyf.y - float(v))/pixelWidth.y; - - //float lanczosValue = gaussian(kx, fcx); - float lanczosValue = kaiser(sqrt(kx*kx + ky*ky), alpha); - - q += texelFetch(tex, ivec2(u, v), 0) * lanczosValue; - qSum += lanczosValue; - } - } - - return q/qSum; -} - -void main() -{ - out_color = lowpassFilter(in_texture, in_uv, 4.0); - out_color.a = 1.0; -} - diff --git a/src/shaders/src/sprite.frag b/src/shaders/src/sprite.frag deleted file mode 100644 index d3245f0..0000000 --- a/src/shaders/src/sprite.frag +++ /dev/null @@ -1,14 +0,0 @@ -#version 310 es -precision highp float; - -layout (location = 0) in vec2 in_uv; -layout (location = 0) out vec4 out_color; - -layout (set = 0, binding = 0) uniform sampler2D in_texture; - -void main() -{ - out_color = texture(in_texture, in_uv); - out_color.a = 1.; -} - diff --git a/src/shaders/src/srgb.frag b/src/shaders/src/srgb.frag deleted file mode 100644 index 388593d..0000000 --- a/src/shaders/src/srgb.frag +++ /dev/null @@ -1,19 +0,0 @@ -#version 310 es -precision highp float; - -layout (location = 0) in vec2 in_uv; -layout (location = 0) out vec4 out_color; - -layout (set = 0, binding = 0) uniform sampler2D in_texture; - -void main() -{ - out_color = texture(in_texture, in_uv); - - bvec4 cutoff = lessThan(out_color, vec4(0.04045)); - vec4 higher = pow((out_color + vec4(0.055))/vec4(1.055), vec4(2.4)); - vec4 lower = out_color/vec4(12.92); - - out_color = mix(higher, lower, cutoff); -} - diff --git a/src/shaders/vert-common.spv b/src/shaders/vert-common.spv deleted file mode 100644 index 8107a011775cb2143f6b58f08acd11a65f39ad38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 964 zcmYk4OG_(35QWPm#<%hPeneaf;zC6b@4YT$Tm*~=ZU;#QX^4}MOhjD??)|-YBY3`^ zX-J2fu5;>4)#;v;ONSF?V>V-RR=0dDT1kwFtNJ}^JT#66S^N0(>;%QUmAw#6&8B=_ z(evfWr2v>2#e!m4QPvObxgHgpwx|(DcXv_aCT{h5@gRHeByq>3N!)h*q?NhX1l{C_ z&ZVu+ustdmmtu4#n7Q3y77t&|z<6+}hr(6)Hhb>G&7}XB^t0qmP;AbVQ|k^~=DMla z39rYu=UtjTxDPp_ciEpU&ny0nn$znJ%%Z}_9z`uMKEU+4)!X=B!LtHK9gaQH40I)* z=QBdjWwG!F{$_K{n)0f+x?){3^-(=WR~Met&R2uKEHL*4M}1m5b3+{*ywGn>nEu@P zo}PFM9PihJ=><=JFy9|;Rd`W*UBQf_0xv0Np=Tcdl~8BaszU1@dhoi3pML}1@|eCA zf4|Ja)4A@LbK{i-|6k0w_A9ZRaaO_k{;0}5fJ1FXIbOc?2HG_R9DbSwx1k(A#8<&> yDo0E0UL2mc74WRU?I?%itW8b8^R5CdHO@ufYxUrp?<=@V?hC(Q^grrwq4)&`UPl4|