From 5072c536b57d7029ba5748a34483391a70f8a8c1 Mon Sep 17 00:00:00 2001 From: Kelsi Date: Mon, 23 Feb 2026 08:43:50 -0800 Subject: [PATCH] Fix sun quad square artifact with hard radial discard cutoff Add hard discard at radius 0.35 so no fragment beyond that point reaches the additive blend stage. Tighten disc, glow, and edge fade to fit within the cutoff boundary. --- assets/shaders/celestial.frag.glsl | 15 +++++++++------ assets/shaders/celestial.frag.spv | Bin 5392 -> 5476 bytes 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/assets/shaders/celestial.frag.glsl b/assets/shaders/celestial.frag.glsl index 95c8527f..8c450c46 100644 --- a/assets/shaders/celestial.frag.glsl +++ b/assets/shaders/celestial.frag.glsl @@ -27,17 +27,20 @@ void main() { vec2 uv = TexCoord - 0.5; float dist = length(uv); - // Hard disc with smooth edge - float disc = smoothstep(0.42, 0.35, dist); + // Hard circular cutoff — nothing beyond radius 0.35 + if (dist > 0.35) discard; - // Soft glow that fades to zero well within quad bounds - float glow = exp(-dist * dist * 32.0) * 0.5; + // Hard disc with smooth edge + float disc = smoothstep(0.35, 0.28, dist); + + // Soft glow confined within cutoff radius + float glow = exp(-dist * dist * 40.0) * 0.5; // Combine disc and glow float alpha = max(disc, glow) * push.intensity; - // Fade to zero well before quad edges - float edgeFade = 1.0 - smoothstep(0.30, 0.38, dist); + // Smooth fade to zero at cutoff boundary + float edgeFade = 1.0 - smoothstep(0.25, 0.35, dist); alpha *= edgeFade; vec3 color = push.celestialColor.rgb; diff --git a/assets/shaders/celestial.frag.spv b/assets/shaders/celestial.frag.spv index 54e31886a60c99255d463e97a910ca2d3c3e037f..9fce6c5ef98f6a9b94223a7be83b04d405969c0f 100644 GIT binary patch literal 5476 zcmZ9Od34-W6~}*Fl9nz|1X>WODFrEQEu|@I+mN=FAcQs?Dx#q2G&5~RCo?fKiJ%}U zh>9SKBG3TJVlCi?g0+IUfLfJSz>P)JW8FZ{@n4st96z6#-%WqcaK7B{{oecDyYIgD zd+DT!^QR=qgk*X$Gx=N6_#K)|L`l$E>$a==!tN#2T7Jp$Qa5AZ$XwD(Ylw>ki z4CIPs0~dk)U>14mEC8FttV!}DgC-}_lCJLFt_>Tyy4Usg4G#8JYnPV_y`^Hg(3>v~ z75Zw$k%DO=uw_yKW2hPG^mgTxqzlzEZ3f7L06Jwjya^?P=(PKt2;& zO!+MAmXy!M=2E@@yE)~{uze{%6Pr)@M(ps2bGFp?ys>cE+Dc`}Fv{fQ5^TO$t%c8) z^qs06w}!2y%KO6~g5*kr{f!zXCzs*(3|IS&w=zQC-#{f_C}CUateWT0S11*#wPLQc zwo1K7c|4)?kZ zzmVTrI6Idg&$%A0ud#G}%x(B(j{s{gc3=l{L%D&}-x+b5Yy8pwi?<}Z@N2_En}Wg|<8ZpX2_AV{;3r;sQ%Csq zM=xnxs?D;&;Qx zwr?Nr&As^h_I8i^58@}uXnnl3JPgLRA2lA|-SEfH;BowYd-vAk*7r29{#ftXM*NBJ zpKJK5!hacm+Vk^Qx}V>}9qWGVum1j2JC!?aAKi;T^ZtqA8)2^Bk>7IMAHSDNn*2hO zUu^Py-?QVlWqi-VH#8f+E#tfXj*Rd6J2Sp<-_Y#%T}}R;Cg1nd{8j8v`*v^<=t;lt zcfc=BaZRed6W=^z9dyZ_sKp$Y!qsMQ(>&jIfeBy@Fy`bSbzT}-`HlL=K09~!wPb>m~$)KIcIQkuF(&y<7D8xTYx#%!mTm<8r+;2 zoSN$o1Ls`;%r(B6+OEWY2>6EhPQ>`DQa#om#di*M*Y}=|g2=xHp6%s_@uQbl!|kUz z-Vy7$7AyqjIp4Nai}^l+uNMAC;jS6=daAqKkJ6g%&&WIZX{irU2%|6Gt zFTwbA#(f)J05R@6aP!oyWfxX0^1lmLi~R4w)x0B- z^CUc*^Ax^Xqff2%Z{_>=jy1LjIM#3I2jF^O&H6t~HS?{_7`xqsOOh(>$w6%&adF=@diH+cmAcoyK6kwegST532^R(!2Fo&Mfebi zp1cHCbDZ@VQ;Ymx!_{`v=S|q(0JWEaZ`1Fv{(PH^{T8VCHp%1frJ8ekwtoPgXRPr@ zxNG=s8UGV7M?G@>3^(Tja$2!}0p|G&?G?D1`w#8aRGWzH;Z+>L{uMaheB;jT-uGjT z{g)X|2mU+FwWb4q2Z7Vbn~I$V+~W*v{F`kid`iZjmGQl!bDR7HP5!bb|IF042hMvi za9#h#>mLH#tMwRj57wX_V-AI9$Gi^TF>1yfW1Z?T<}kQg_=l&ycgA&(0OqJi&XI7( z#NVEy;A(zr@kYKLK08Ickw@dJn;-MP0qz>cqCT})>y2>td24z;^Wkd8g828(ad7u( zp7FTvZ-N^;9z^a5@aTzg*YvE^W6cxc&gGk658e#a7K5n6Z%#d1$4U56hw-RmDco4L z4&RHY!?<;LN7SQ^c6hdqQ}ET6gQ(+FxO%pZ)9|AX<59=yaAVmz&Pa2;BgU=6yQv;^ ztbk|hScR{)5=0#xaP@2*XW>U3#-ol-xUp;M_R!@R-AzoztAxc!!MnX8jL#>Hh%$ literal 5392 zcmZ9Odzh4E8OA>jyWj$fsi2v(NEQJRuz2L)0^(AxuwIgund`7Ku%ojx+s-U$YT^m4 z6wBxU9wJgZSZY~jmStO6;-Yp?vMY;@fA(*OtGxRCX1-_ooR90~xu5%a-uHdp_>N8{q9kbTb=%W>VejH%%uSqgSqsd7}($m}DvuRUL@B03M;o<&j?dnpYzf>$2`t!w+!a%LK zyoWt~6TMSSeNu^S5tZwjya`><;u{AfJIPrhF!L zYs%+fb19#X-IDTU*nyOvh0UjYGj?>leYVx-yt#1Ix=LllFv{fQ{n&i5S_}WOhHqE( zxMW+Y@}clckX&hauu;S0WCXu&v^r?Kofi6jLzR5N+;&!0&3zaslnT{aF;`kwDOC{L z`De^EFP3YCa>W`v!AWmb$6Cp1E>yXmfE$xn8Fe7*6YOuGiof^4kjM z=JL&)ooEA%q3dn#!Y{i8Sl417b~rbZ8%q8C*m`_fBmT(i;%&({@N1(ZTSiNT@&KLK z$Cx?R`(FLF$r4DppO*#XkaTTzw(Fd=^NO?(Xns*Zrj1_9wxk&xm)Tb#=YAHvGBxdtbSG-6Gb^ z+>=2kP>-Bb;J5#MK~MM#@RMZ6+2Jp&`$-agEW$TOJ+$SiuO8Y;xV|`!de6aj0zdoK zUtjnB?{CDP0G!`@Qf}QVQr~l7JZf`a_?or$htV0_udC2_B(357H#jI zJ_JY>cxT&bKDoeFn!l zNBkc6!SUW^9rxoW$&PxyH9Q3N?m3|uf2`p*_uz5-gX81%xOF`PtULODt`UDK{PBjr zD*QwE9f#(vbRNHh+tzuw&idXvwbMA$-X&}IQ~M{1Z-lwtBkyvYAMcCrd)D`T&-w!` zzHfFm?mHU3d$2R(+y7k|-|_cleB=8wzH#5s=+C%sXx1NV@eic_D&}Y2#lSn!m)`I9 z!MzjWrc}EGZl1B#tdeV@7JXa_SDVfWbALYoJV$GRG26Iq>b5Z_2h^ss%KBS?ZI%M> z;N`#^+q%Zaqir5;+w0T53UIZEZ%yO3P``a|1LmlQR!sFlY}9=P+!{^<#v}JixG~qn zdfa2R7|-7~YYg8%h|HPJ3OjxU*zbH`uJJY0<{iEY)PQ$8+WVWW9^-!)ZXfE7@0n7I z{Exu1Yk56>tmU=v>wr1#r}gXrzNzNf-!<4BAo{xjt``1{aL0^#Zi1_s7xkz)r`xa} z1WBNAT3Dn%9f6&J# zv3~z%d}E&gYTj?Tb$R|j1w6aE=tuw4skR#%<9`B-*XQBZX3RC(hgCb1xO@5qFb(Vj#(hWBVxC`wXXp6< zzS{jD>U|L2TJM+8)T7=n!_{2pX!jL(YrC(asYko7!POoDG0(5V?ax@eH4nqB&6x9e z1gjSFd=&0H)s64Rs>Qy16Ykt&+;73v{Edm6Z^LaDIp2Y+`McwKyPi(~+Zu~@--TZW zqTQ2l^VF@yw^uFlzXw-~{O`lnJR_0w6g->r1AMi{IQ1fk)|A%ViYWC^g{vNoWF~%R@j^Vpy{4g*_J#zjCH|GL!+OdBEhk;*ce}*3h z&Ofxjq}oJmAFtvt_OHP9<{P(f=l&|z*njEa4B+2Xj^!QoI|7_e-c)P{a9-1~@%PmX z_>_!4Gvj+k=d}3qTl{4${#mK-8rbiVz;XSJ*FOq4SL-q69IQb-+8hnfws`}-ZPbj} z#yZub%`tGb@Q+P>&y3?92h35Aoa5oPiQk?R;A-Brcq88kpOqrs$P@9^&5!=y1a}N$ zQJ-3j^=7#9+@0>vJhj#y z9jD_*9mb=MGvLOub)1>zT8DA#@NB9_9V_73I#%JUtpriWYPfo~jhWf7z;_(?$NucYoXCF{ z-1&$9Zg``P#u(?}w~o<^rXFLQ505eI&pynFIyb@XV