From 97f80a3507c523b18501be592104e93e3061236b Mon Sep 17 00:00:00 2001 From: Javier Segura Date: Sat, 10 Oct 2026 23:45:52 +0200 Subject: [PATCH] [Bugfix] Light back faces with the normal turned towards the viewer MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The model pass draws without culling, so an open mesh shows its back faces — a dart's flight, a leaf — and those arrived with the front side's normal, pointing away from the viewer, and shaded as if unlit. A face whose normal points away from the viewer is now lit with it turned around. The test is geometric rather than [[front_facing]]: the pass sets no winding and assets arrive wound either way. Kernels rebuilt. --- .../UntoldEngine/Shaders/modelShader.metal | 11 +++++++++++ .../UntoldEngineKernels-ios.metallib | Bin 783432 -> 783464 bytes .../UntoldEngineKernels-iossim.metallib | Bin 786840 -> 786872 bytes .../UntoldEngineKernels-tvos.metallib | Bin 783752 -> 783784 bytes .../UntoldEngineKernels-tvossim.metallib | Bin 787080 -> 787112 bytes .../UntoldEngineKernels-xros.metallib | Bin 784248 -> 784280 bytes .../UntoldEngineKernels-xrossim.metallib | Bin 787480 -> 787512 bytes .../UntoldEngineKernels.metallib | Bin 781928 -> 781976 bytes 8 files changed, 11 insertions(+) diff --git a/Sources/UntoldEngine/Shaders/modelShader.metal b/Sources/UntoldEngine/Shaders/modelShader.metal index d32a4d2e5..30045a9e6 100644 --- a/Sources/UntoldEngine/Shaders/modelShader.metal +++ b/Sources/UntoldEngine/Shaders/modelShader.metal @@ -292,6 +292,17 @@ fragment GBufferOut fragmentModelShader(VertexOutModel in [[stage_in]], simd_float3 N=normalize(in.tbNormal); simd_float3 T=normalize(in.tangent.xyz); + // The model pass does not cull, so an open mesh shows its back faces — a dart's flight, a + // leaf, a sheet seen from behind. Those arrive with the front side's normal, pointing away + // from the viewer, and shade as if unlit (one wing of a flight dark, the next one lit). + // A face whose normal points away from the viewer is lit with it turned around. The test + // is geometric rather than [[front_facing]]: the pass sets no winding, and assets arrive + // wound either way. + if (dot(N, uniforms.cameraPosition - verticesInWorldSpace.xyz) < 0.0) { + normalVectorInWorldSpace = -normalVectorInWorldSpace; + N = -N; + } + //B = (N x T) * T.w simd_float3 B=cross(N, T)*in.tangent.w; simd_float3x3 TBN=simd_float3x3(T,B,N); diff --git a/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-ios.metallib b/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-ios.metallib index c6a09d92204a0b5fbc5221a510449dfd3f2c8a7d..eb6745b00dbaccc3fdb7eb575f7246b212193e6d 100644 GIT binary patch delta 3829 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 delta 3798 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 M6280Rmk{p%0P>W&!vFvP diff --git a/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-iossim.metallib b/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-iossim.metallib index 2460ea36ab91fb14ad18a31ef88c7e7675dee1ed..655925280bedbfe6f64ddaf3cb44d0eb4f6df733 100644 GIT binary patch delta 3829 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 F{{fNGy0riR diff --git a/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-tvos.metallib b/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-tvos.metallib index f006582828f29adb1c548ad926d2f36eb4efad84..fd1d070c678e780e9cdbc6f2b34d867d4049ebd7 100644 GIT binary patch delta 3838 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 delta 3808 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 T+9@6o6bK)P;8N{WP&D-aPRhGZ diff --git a/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-tvossim.metallib b/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-tvossim.metallib index 00249458f66f464c2bd4701f2e8140dda76113dc..e8341fb3638d9c443217da5bf0f680a8560eb7ca 100644 GIT binary patch delta 3839 zcmYjUdsI_rwolGEBqwknCjlXlC?~vC)FjBuSDpqaVk0t&3hjY}kUA(R(xDDCPeQB| z(jG+-w6Rp{^m=Dd8MSlgb|nHKD%#lFQ>3Rs|^enNAoLONl+JYe7i_9L#LU zjyv{u1I#4!iF5+br4vcn3b0|xg0mU)31DI-bLp|me}bckD=VT1Nsa=P1Qdf?Q5bww z0igP8&_Rd~0^a*U(U8q1@+DfTop4CHs47ArJpl+fgiy*Mek7T_kk$ftdQh#GH38FE zL2*u24|rv7L^jbQuLLNSK^0Z(1?>9*;-_LZ@s*+$K>GrkdHKfn}lD3nEt- zxoB6GZ=}CA0vZvqZEF&sjUbkd?7lKMO8+ky5Zt@6&r7doQU7*jVuD^t)9e3&%sXPg zmb&^8QA58kA_JNbS2tjMICgG^_WA-e#4@fx=c?HLUU2SzB3)UVa*;(sD|T*(1N28_ zK##;$-{26(bSH`fKk8DTbB)NK(dQ$aYr}En0jJX+M*GPB7`4pv%&hw$`>_9UqfHzx z^?xfwjT;b={uQ*!3x*s0Ki^VCpJOG(=x%UiKITv)^^n1pDR)B2G&X#Dak#?YkJ{&LRFefO_tWF;MNZ}~1}Qd| zF=h7mZ-6GcjavHrJYEaJNj-!#eKdnswh7 ze5i7A7O(b?v^p51Neb#F+xtk98fH}d|15d2Qh(P%R^y*YI&hGVW;(rqg;QgFUDR^h zZzUOi%O0yU21?S`=GQ;o5vmE<=Uo|d!kdCj7svD@F4i#517i)!hsf0nNh@X4{#Umg z+!aa5F#>pR6E?Tdm3@xoM|UA2Ud`!*Mg-@3JUn?hnkDj}wzl76EE}0)ha`tok8G^- zp*Hbco01$5-G!gvG$UCqXm^#KTMkW%tGy|FnD(A?<%@kw)Tg;uPjk;~N%)KC1WHlE z)Z_R7ZK5ldYgs5`0dKIlAt5giw=fU?WMerAzAhPsME0halvOU9lq@^PX8QW?t_JzQ za;@N|1amb&T#xlpVg^?cm;wFZY5(W}xqZn{rrZc!f<|q|V5{gEgT=qh&(AZ5SW=!~ z&Ul4ND)VwbbNggKa6%pWO}Wqu;h2b5C{R%kSa&Z17j4q&MkHa4oP%4DGKtx^DvY+v z|CmDaE$}mlmWh%~t={%lOF{Gbn>rb#L(hj=Os=ICF^&8B*B-jALmV9$wZLv^wByn$ zf#5!>!v!}D9G8TlUTgj*dfycfrgkhr4oVCzD$OlnXtK<=&<7I%Ya;TYL_k*~M+Dzw z`J*NlpAxEonK5UUg~O}H9RhWgdAeytuYf_ROxTk zv}d_8jUu}XJ~WHX39Ajkdnl!44duCb=4N=1>~Y8F;SLTKoNd4B)@qfYcmOFA*gh9u zlY}WU4kqJ1?ypaakX{uXymtD)-QFX~alN@B1-#>tYYcEW_4T)G0l2v1(m9nw=9JLo znVB&IsK85=9)1RW1&)bUcb0T;R=)+CTnSf8P7W5SmP{Ix)?Z8(Wff18jw0A3O>lmE z^6K>u{BYMR&!I0oV`J=f;3BPLwJ9q&SnIZ|9E#MtzBNc6A_w-b%#%yWClJCeCSO8S z3ZwvZ+7F)#ydnC)Q#9#% zMm8giOw~aD&*%zl*%~Wq38%F*f@)ZPvk$GKxu-tjx8P|GjITtH6v%Z={LJ@0fJ{NN zLPPXSVyE3_neN&_yB%RohHNvWB$zU>z-oq6fF7*vrXbd2tBu@XWg-jamVo)+T75=b z-*s*{r>2{a4EwT`NJ1*)!Xt0jR^HgiZ26)lbj}GqjrWt!o(9 zw08agu~YA&Y#7#eJ4q-2$~;SN4k66-oW?jpLGUb{d2#qtjwjV{QfhTn6w(e$W@{N^IQE!I z7oj(tVr~3wN@S^K*s+Cd$X%@Cw!3zUx_xiWySTgNEnPPjsYFhYmB%98@SYEq+pC|} z;L3OXBNi>=JKS*%v1OrN!#j$tZWK5cuip!6U_=}LJtfL?2Lh&gse9i4(wgBtBD6UE zU@bB@BQIt<$0f);95Fh2c9?QG@(i7}+ZX9ZkrO?s&1Rt`xkbx(fIBR#`vx6ojZwy-urPAZb@flvQt!1@ z;%DpJ%62VdYGLFkU4HA{2P1W!vvu#JY2Vj%8=?XuX9ugI+~`*W@q6L10EK5b({#r| zo$58#KS=*LNWoV}Qoxv^wayn3WSXQP>D>XWCnLoe!f2d`=3UGL7 zaDtDc(6wZi121Yn&cKl%2Or5{bAkT84R9Y%^#wS1!73)n;WTqrvU!0**`cP=FVkf- zjVG=Ch5KVIV{U|DI zJd`#Stc->o_11Adf5Yd#Ewp&+DHk^eAd88%eG|W%-X=L@D(E2)(pvC*~x`OK3PX1Ny zcRlL7-X!Z&jtOicKYx>)%(psLs%q_3MZG`vsA0ddNy{BiqiVT8%JDsLsgnG3R9)t0 z*dl>y@-K>VZ0sd{i~h-gnNrfZTKc`FSQ;^U0;{|DWW3E;(wQsuX>Q($koNKFP0s7x z$tk8a`FEizV#R17^#1ea%{(&S9p)Nsle%L>) zaHIzlp1}{R-$pn5AUa}=N!t~EH}7B21hK-rr?Bec8NH_~=qr6bdLbSDtS-MHWqKjL z&=-n-!XbQbcVEgxNAWVaG+z}~baX}A4c;G3)7SOgrkc+6Qop8nMic^j zt|tWFR^kYSJrVRueiu6abk680tmWbvyf*~ednCCW&9s5b<7X| delta 3803 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 Y>o$0pKg*&HL>)GDLa*^>m*A}b2bBW5aR2}S delta 3782 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 z zLd@UUSH9Z2L^;5}F~C2+IsTI5G(uBC^j^Zooal<-w=I-WF1S{zjnDJjEzHA@Tr?-% z(^W{LGW(^Mv{eoZPL-W!G2Z-FhgND^t`^|lp(V=nkgJSGtoixl+z z=3R?`MH|(c5iF#McW4V-ftd`eLYOORuiCO>%buBMRIp%a2F zM#s{&0w({>uRV0!26-CFY60ESDC^Z#BGDs6Lx}F`c@B)NTx0qXdE|%#QaYBvhcLZ^ z&U9jIRi^14@_53pO@I$$B9;<9A^I}Y8!@r?oLIq_9kXY)@dUMmRirP7XL*%q+q~`< zymG#6qe#GU9q}Ywg^zNH*64{YI{sTVyE7db21&OAIy#5?#I^ds9^%Z*p*)AcbP&2m z^|)j7SO*Uc%(mBYFH0dRwZRo4%O4AFVIf87hmr^n|JSEQ%&LhBtewuk+qj8z7@2{zlo^ zYbA;$lZM2#SCS-|r8Cq)31r0M?H``Kar=EQ)b-kR^b^xNF_0MpI|eM{@2aXH^!|n!O#cew^6Cvbvpyk?tZ`{u{ZJ` z;7|6gLZx&9&INT%0P`yRa8U;jDTRy%+UhKtGsBUsphG>I!*juA|7mYbhfuKh>)fHw zy`_(+{U72;G4E)G^wW?e<}kJC=$ZQ&hKISPKecVVqj0AyA^aSbeqADUXNbvk@NOw2 zzdi|yHF&>`O6aB+y5N69bpEGk((!_7MhN9f%ldOv6}oJ-8EFe;wlo1sNP71S(!g|1 ze;{ljQmv>^2E)mq<5s~7&jAKJ4bF-6QL_o1-JZ6YuIPXQf7`2G6oJL@A`K9LuW zY}M2?tJzLs*jiGEz+a=S<0Dn}$*sFawqolmD(ia)n7M3B4*@u=sfKE92x)v#Zyjoq zKr%QYkm+Nrb=t;T%wYW6L4x6nqut8>uS4eNUBR4SI(D|l=uPuXeM#JC!# zf?gz7xdI+5`66DKR*##pibEm5I*tzZf^)1mOZn1R*jqFw_C(Djs30F$wGeR%)q(V; z6lk6U0Bqbg)0N}-m>9NWg-FKSVE9~GuQJ`(+}EjKj27saag41;W8vgk%7r4O+KE61 z9rmsE1YqNw7>%7t5a)FxVA#CH6dkIq>vTXb>V`c5M^D2m(ZhU8Nr%>%+%j&y@ z_LF~bBqH-vy4!vV0TMVASL5e69G!qcWh!c^dr#!%%#I3a^BkQim|?DK0Og5Afmj;T z;?OCcD@A`6H(RTUna8lXdiEHBKBcoH$Q^ruI_^F#yj(SG-Apy)A=+`@SwBtRwx{kr z!dbUL(}RY~;L}v)(QqfU`>yrqi!eR_8Pomr-3LB1r@K#x+pNDgm+0-`SF-Kn82lXp8?1fXjk!E&x<=jO33np! z>AsYMCUIL*i<*9-?dj0pEfvUN7U@;g^{CmdChwsk2JVGZP=NrKA`E* zNBBps8>oqJBA?sh_CRBP2rr08-C> z1;MTE!6GRL*K~a;ZVJQTVKw`;AHz?2JMc6DSwnf*|Em7ObOH`w@K6{w$#st`3}bF%rKxl%~2N98aQ_ht{ruWKoc{(L62`uKS~BGc(S7&cTmnP{l;r zzl__(YR8Tm<$aW3=oqDi2&3ne!!+DK-6nYd^N;#(#EG%MB%!A2MBvIt{Tu-F??I%* zlXA$~f3r_%KZ@;V#(9Ybd2M~C@CN_uK4o5iqIrsE1e&SOU$L|KX6s5teRoYs|Mz`L z$SZ4B^T$)^YCa>mcQ;fnqdpxqUkKAJ;fz}9*Oqq5HpSYkduB7y$~v>~Z&amt*yw4r z;mWh|c6(W8F78p?eGrD95i}a@w|kP3jjQt?f;Hrd(PHqxzKiTzsXIE4L$4+eMuD5Y z5TtQDw`WtKGY$Fs6J4aT49WR+-%OD;E#UAxaZLF(vhG{S33GJnj?jmB{|io#D@?nK zYp$Hvxw-;p7VL{XLHlPs((`s_Ha@N@{U|lyvCc)J6<-K0a4mN( zr$YS=ODmp@N435EMfAmeFWI-!b{yZvmbIfN2P=>*-|m~-pj{TQN|`uGR6ynVijb0% zE86b}{$QNBt?Mz?b*{y|s?u3WFxd-z!SpR<)}YxlQ9t%hF#JHy=sC3I%6Xzcn6&#| zAbfsdTII>0)rn2Epw;=}v%xzT?+1bHOe21|kfFzO46ZIs^8N& WN8b67MG-_1o1)O`@BA1RMgKpB2EVuf delta 3771 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

RNmct@L99Q4D z0}ZQUOvLf4cLW>hQ`$!TIz0Q@8=tC8DMcs9?PqTHH#*j}=BPZ?S9XT0-jA=dI4&L2 zCs<+m<-Sh7wL`?5XY( zWbK(#)O-33_%qk!zQ*X3&0$~V{)$YqPrp5k4Kf5$R+i9R-5-I}lRR+k=@hnlUo zh1#E6YY&Cp=5#5a50zJCyFVb`1%SFjO`rcfSU&I9l=6;HlyBWYDC!i^9s1_z7a?Gq rQgx5MIltZ%f^oaE`&{3w;4;E?)?f!3{w4r|0ucfUJJ;~H@M!2imNl=>