From 98cc5dc4c7ec7a54c4e9e3426224307e01329800 Mon Sep 17 00:00:00 2001 From: Javier Segura Date: Sat, 25 Jul 2026 22:17:04 +0200 Subject: [PATCH 1/2] [Patch] Composite material emissive in the TBDR light pass The deferred TBDR light shader zeroed the G-buffer emissive before the final composite, so material emissive values never reached the screen. Emissive defaults to zero for all materials, so only entities that set it explicitly are affected. Kernels regenerated via buildkernels.sh. --- .../UntoldEngine/Shaders/LightShader.metal | 2 -- .../UntoldEngineKernels-ios.air | Bin 164384 -> 164448 bytes .../UntoldEngineKernels-ios.metallib | Bin 546191 -> 546207 bytes .../UntoldEngineKernels-iossim.metallib | Bin 548735 -> 548751 bytes .../UntoldEngineKernels-tvos.air | Bin 164384 -> 164448 bytes .../UntoldEngineKernels-tvos.metallib | Bin 546495 -> 546511 bytes .../UntoldEngineKernels-tvossim.air | Bin 164416 -> 164480 bytes .../UntoldEngineKernels-tvossim.metallib | Bin 549039 -> 549055 bytes .../UntoldEngineKernels-xros.air | Bin 164384 -> 164448 bytes .../UntoldEngineKernels-xros.metallib | Bin 546527 -> 546543 bytes .../UntoldEngineKernels-xrossim.air | Bin 164416 -> 164480 bytes .../UntoldEngineKernels-xrossim.metallib | Bin 549071 -> 549087 bytes .../UntoldEngineKernels.metallib | Bin 544463 -> 544479 bytes 13 files changed, 2 deletions(-) diff --git a/Sources/UntoldEngine/Shaders/LightShader.metal b/Sources/UntoldEngine/Shaders/LightShader.metal index a6be4aee0..15c3a5b40 100644 --- a/Sources/UntoldEngine/Shaders/LightShader.metal +++ b/Sources/UntoldEngine/Shaders/LightShader.metal @@ -751,8 +751,6 @@ fragment TBDRLightOutput fragmentLightShaderTBDR( color.diff += areaLightColor.diff; color.spec += areaLightColor.spec; - // set emissive to zero for now - need to revisit this - emissive = 0.0; float3 finalRGB = (float3)color.diff + color.spec + indirectLighting + emissive; TBDRLightOutput out; diff --git a/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-ios.air b/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-ios.air index cadabab69629546448fe99cba40bc31756d40d84..6404a45bb7a7ec3753efea0f34a3d20e7c13d515 100644 GIT binary patch delta 9112 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 delta 3055 zcmYjQ3se(l8l6`rV;DjR&nS-sL=)sO0mMh?lJGKuRH$fu)kXx14=6sWC~7iEglHoM z6D7N)YiucHD|Tb0LR)kbh#}iX8(a4rJnOE}(k<&jH@4Vf57qrA(e38UKbia8|GWR4 z`<*#`R&@NVD7?ICSpf_o&*aAwJJRZ5o9T9%8C8A|tQy69)9LgYRDJ0;oS9LBQa6HFDB+v_lCd7G zxbvGzer7$QhD`FDSkqKmgz08x9nvTWz{}AblRbqn)l;t{Rw__>K(RW0-#b&lR2*t03aG~^c2dLfgV=I6mM|t??st~?=!B`FQnxd~?^xdDESsbg)y1WQ z&V*_CY5*r-u|5EGLjg#OjR9yVSQB6+mH;#lk>-~?aQsA(U=S<4LC0I1@!nR+gi|tr z={PT^dW4@k<5XU{%nX-Wi{eM=r4~(Dr>0Eyq43-g`Bm9~v#bZ1H=rvU)TQ zc^=t2SK_?zS~I;g*mKKq(1NUG+Wstb43RgPwxSC@e#S%ohmG$a4m2arnr#7J-XYS% z>~d<-Zpl@L2C(IQ#p!lnb}ca5TP$!tH#^=c>AeEX)`WbW?os2Jclep%S2fRkbp@o? z*MZ_0&N+L894Js#ifiqs0R6^L+Gr$taUg7x(MM9^peU z7kR1KvFzC_3raf+N@dN$^TXtd*FdMWNH7}g)Jd#Pi4_|QdHDsUD!Ylv^$h2MkI!W0 z=k5lteVy(11tR2ysRAkdV2oy1DlEI=5J*8CU2A-vf-1f8*So;Yz}$>3 zlFs)~lc>S$A`1;p#TE}WA!mR#lK~aes$qi}KV|`JB2)0HivVlrY&q8DGW56%y)J{* zMGhbH=(l<(J;RY@iZR8OQDU1%vCX63=5cTHP~&bxpNsrb0Ti6>Ely&qhuH2>Z1+%p zx54Qm;iVp-+qK=pI|&3z44owgYl*?`GT2;(K7q?H;4%!lNYuipQ64uq;}Isr>pEyP z{z?aZmX*F<(%35u>9%uv?VOM8VblM+tg9v+v%2JojY#z5ncpepiDG%;T`U?D@6wr* zj=7VfkiG(Tof@yRUx(wpaJ&tPx3R!OdEjcr2j%RJ@P8n&X`8jVTZeNS&;>gS7wk!n z%FX>ewg&f8dY<{>n1DEarc zoJBF&pV}^5WLh*)OC_MCHlsJR?cA~l+uAY=A8l_i)5U9@#ioP`2mGjiJQlAi) zO9VB%!;}z>)c6yn3*Y5oAy1nQ-zGHSXfj7`^B-T~KBjDgNzLc6HN=oCloC5tPG5U9 zFKs$G<;lB|ij9#Egke2%R-d?>HSXAO3uB?1+8m_jGT43%;xgNf@?F}6vC`Guu^75{ zAe4Is$uU~5>!8?j6;Ja-YC*PivRHAoPP@JUsBVg!NVZ#fPoGG8kgYZr3r*4L-rl6v zD(B+@%|bt#gFGBb34gi>&!aYMGK$=2rCr2(8m>KjlyTec3w_OYI4tZ7YiO2YU{OmR zQ3p18wJYqid7!64+yEfKS}6l?LzZen(=f_niE2ra?^xi4DK&eFXsR9%c|#~mZLH4v z4f&aW);_rd60{N3a{uv{vL`i77MvBc>6A6L$BSBsYLTGFw>wFH7-JFB&0jQfzn9L8 z)S0C^;fp1tL5w+|gkO>sZ{2C}<=B;{Sj~=qsVBZBeda7>^-sNg!(!rifxej zAhLTF@&}7{4ch2s$=2W%8bB<;M zSY0res&J}KSp{IcI>#w638js7c*b<4#h!RBmR8?su|_hJT%(~m+?UKbO<+i}a&uM_ zk3_&XLJCP*R0d zE-GP(PNpxJiAi@(&G=#Ny0%&dRgIk-P3pR~mx+ckMO4wsi;*8S_Hu?& z*KyYpyT|IHoS^bua1ZxQqG@bl6t?mrIW4^Z*HcNe+g_0?Yrlk|`KPxFekiyX0XzhL z8-);b1BRdotSpV!?-Szoxg!6cXx^iEeI=<$ypa@}Ri;U?r?@{>Y0}@4h`+g{$$s4L cP~dH$9lR(Q>v*jSBU{(4!u!{)Vi!IAFQKET=Kufz diff --git a/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-iossim.metallib b/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-iossim.metallib index 4181b771aba642e6450fdeff15833db8b845e401..647c011c16e857489cef80c6b9108360e498b2a8 100644 GIT binary patch delta 3089 zcmZuydsGu=9-T*+31NU?f+2)QCW$B@LPA&&i;{$Zl%NLM`T%T49*S0NP}^F&Zjy;S zv_4`(3$^YVtq10wMvRT?9k``wzqwgLq$6Z079g_Eo$4FHU?O<=(-o zU%v5tU-kVhL!E=aow&7Bu>Pwn_*t+4`VWe zu$|AYgB^GO=u(`sk#TNQ=Lv0-S$x~qIn59*W#N#3XLF=+Z5!olA*zrqJ&3S~ zV%R;3O^|#G3qy~dmD>o}X%-&KHA8wEyVYYn+tbRm5O9=*K`CMLD;q$$O_kRHIR=?x zrfni`6=eF7KU5kTFiY9z<6&un)D9EW~*YEIg`Wp`6#m!ebN*^*p71z5?Ca z%Wn!2=~d_}6!EG`e4>|sGC<&&*`e<+7v7HmRl!L@66Xvbd|XZos4K zalIu7i<`q@2kT1}rIfR$qRtr5-;AR~(TLy^AWErUA2KUwBKeQa+8MI~#;kR2dA}SM z4erzpYV)G9!@jI+Yr~ON-Qdp5v(VCG9^FsoIgZkbK~HKxQx}5j>|qxAT$nfH$3tiN zLF0g@?rdwe!-aL$dcl-IV`*rn*Uc&2o|K99jKK>T1Dvx_M2^=!s15a+&{Wtxx=B}# zS2c1W*{9ZZsw?fHJt2LZ7&68DPe76%h}TC1cSHHS%;ZBQG^w8C zLrPCj388%Em*10HJPFKPGO7^elUZi8@G`*rW>1W=atEU{5lz%%C+WC?1!H|6L{i#Vr2MsF=)^&a9Tsep8y6 z>jwB^eNrWNiWD(7dFZARDLIeiZeOgtTBO7jgzUJ&-HR$hUZCQ@d} z;$+9;WGCZfJqlT`Le{5nJ7h{CNy(Y1u#ia~D@vXXHBf98DQJ-bN>aK+j7+HfL8Sbd zc?OlsbaTsPjGwRgCZWB{l#0Z689F$z|L2Cn;H8$XzB3U5FwkX=;qq%wIQrOy0+2M#>;cNfh6tTn3+0nsY;X_~QK!<$jVPAWekC$QxMRsrzx>bd4 zb?~-21k5H+9lDZ5L8NPBKAM>IPV_fD(KiR8{ln4U-q`!>jT=9GQ+I9nivLboBoL0%Jao^Q9O%)kw7vR;nc2={Spwr|u2z zU(Vf63KjCBI45d)UhB8qTS5;x{D!)X!fpT-&D0_+H3MI=&{goG;!X%ZcCh{$+%lBH?;eM_#8c4AzI8ejc_D)#BgSJ zS&iONRfg?J=P+H%z+wpFjXxB_b9&lp^>Te~`9L93$gOFxO1fdaN`@Qji1EV>K3JBI zB+?7Wh-7G7tXR<_WZViPzX#B|$%z2=9ckJ5Zo>_WgE<5(ERU#!#*K#?@K$L7BdVez zw9xp&w33`4^1L3ezKBELhrckq&AQ()yDbSC0xT=r)ZF=39Z{ow3GtY9w1X0Grtjpr zbFAoky+N@ia<`ecz`lzVylLirF`Hgdt~WW(pTzE3Q;)0F<%uQSFB?3L4h@b4MvLiB zgqyg=Y8YFS7%#n(56>TH-@qi*CW8$4)O$Cvd${eM#l9%1@2 zjBYg!TlV&Nia8${q7rBNlil+uwy#eQWT%TKrdWO;k%}@)Vca2D7PND zpo&;TuF>1A=3-vbWJ7@%m;3QyQ0UFYO67Xz$faKNs;bqPI&jH=MxRjwk5blj?-K2b z=AkY^4s+@_bpdbO`nqj;_!yVNzK3bK>xgS>696N zl+rPZ(c*8VLYIzCyPP(x>7eI!W~4U^(Mo!5f3_a^Yqaf!Gg$l0RS2`t{+p|~$H4yr Dy0L@t delta 3064 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 diff --git a/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-tvos.air b/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-tvos.air index ca8eb58a5f0f081ae0c9d9479b025c54ea0e699b..ff5a099b060d442520ec43fd4ac5fcd1a11e20d3 100644 GIT binary patch delta 9112 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 Zb}{RGHQ$Ygq+t6?#Th38CCsPN{{ys2gu4I$ delta 9099 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 diff --git a/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-tvos.metallib b/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-tvos.metallib index 9b6644279f66a7e99596abde3290be18f4814551..4deb1952c7bcf62de0bb114034d21d3ea96933c6 100644 GIT binary patch delta 3078 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 Bgqi>V delta 3021 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 EFC4IQwTwO$QR0ktB~mU4UDO~O+J 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 delta 9099 zcmZu$30xD`*3Tp`EDnpHl7%ILN(6*Jf}%l9#D$6?0{VekjV#KhP_*w^?dwbkn+g~~ zEsNE-M@5N5C9Wjm5+u;5*iuVhH_n}V?!D)p<$umSHxNaR znnFjX|7tvjQQ+SQ_|MtySaB=OENqVwJCC z$4J4Vb?N!*LNZq7=jNorXa35yxgj&t*JZEI%?nwyc0EvMtzDhDHa%he$7z|lZ;@19 zpI@LMKdQc|T}H>*57)VS$RG7NB8l8mu8N;k43+OHs4uCdi>FYOGOalXH|)@1Hv=U${ArEu zZd;@I>QL#77&ZdZ6khdpo4-~s?{te6Hd$SB09$%3;$G5NKM)?X}3Wp8!xoq|3pW#ZW0N_@umC7sh zax?H$T6wDcc&Ax21}uJb`}m=iTxp{Ke?7l_nV#JqoBo~iK|$lXl}bO-M@=e| zsKt*L{V)N%r?m>B?J3jt1Z^~&zK*%|Bti&Wuqrnc0w+Uh`B}~5inUBMhu-xe3tbEQ znQkAy1pATVfld}DZnKDoleQssehAyB-lOw?4!d^r?O&8*5&#Ry1wJ7-TWFovHM=b4=d#*T5t4I z`m>cr*f%QV(mfxPH}AdtK487MWZ&QtX~?Bo4r(!giU$6J_fpYX)AX9=->CoqYC=L6ghCDMO?ZU zfbuvOXl^pIHO(Dt#crDuzruTlfSo5u%@Y9BQo^D>%4*(KA__!Lf_n?^9KV$EmV3)< zt>_!{u4){h?|Jqqx(+m8$2Lsds>LdLyDNG%_Fn4Ez1@Y*^iChu*X^ zbP{EGx39Khk_k9S)%eimtj6V)a%TI4(^|~I+)oQ8V{c*AFy5F84_(e%#+QrIRl$nKFb1 zG6f{RhC|A&u2!tFKk=)cp`0@0krSa({>YsX4YS;t#4c{HZ;8IWI8Ej&IFm#&W@RqwGz=b-9Nd-Ux4 zaj?z$x3{VC=S7br&m8MP^*Yc@tysMCqOZ)tN!BynqQ%xE{-!YLx~%5K+ay!bKj_9( z**3{E^e=i}s$rXCI{J!Eq;c^US!~0o%D4Ub>6=06F@LWmySBg1t`?mk@%ZybKw$VW zWNC50Ksu$S_5+kh;f**i6+CPiXvKEG0pcLCo-4_7(G=kf@@P@;_k~H12-F7z^RkT2 zc(2Ks7vRemoL8X-uf(bj2(se>dMw?;4=mlh0A6%sf(TOe{({!nvy~G1KnLB}Q4lcy zn4YbT1tam_G*Z3jjyHJ(i6DI6TChK${g^(^M20IO9p8^K7}*Ds)YDEnp`44`ChB7kD>lpC7e6DkcAoN25Vr3Uio_=9zUgUVKE zW6?;)vovFsb^%Dy2T~-xR|=;S`u9np4wKrDC(TkhDk+&2CxC{7sz8zVVKj1U7{su7Nb60vrDuT)PD-ThBo><8PsGZd!5L#4bN_p zr}(>xtbyPBehWY%vy?NI5=l1;QUyn4IjB0$5O|DxFpu*9%5wmtI_TkTSsQk}|KiOD zf#vo3JWaam=aOaUI)))V?sLh9Al7e%m0D;)tp9;vd~o?Wi(|+_;0+w?ZX+u^16e-2 z5kK+4PUrRP9z50-G8So@Z(>j@pkj{me-4xK1v~EwWc}8(^o)$S{o#+p$fWqOz%WQ2 zEJfO<3?{{yZzEq7JeU)$1@~aK$~LI4lQ|K9`HP!`~ujK%tP;-3BLvNgsKFQ>g^DAx~OMwUSJFN8H>^JH>?hz44p=T zGAe-Qd5lrNN>eM!Mo%&>uAi>1yjjB*dL+V$w#8qxNP zPz305(9;a%s<=AI8nlU_Sw(gvOSWG=r0VoOSsQP&5So!;BZ?RG?jZ8EIAMY+4%Rc7G<4e6Z!;}m|;mD z^i5qw|X`_g`y{{3nH4@*qHa}fajoh}bK{jCf+hSy>RBP|eqT@VRg04@_i zsip+-y!b0jdTQDLknV)=IL!>*YVKa-Kj`m_uGM*akB7`@C2W41p1mVO46CHDIuF{CUNS8^)k6?$F{?3Br3oQ-GGR8Bk36P))OHH9aDdI?wZnxLyfBU5LP<&%M@UMDzzz-}6kHg?+1yK^DP z$%w4Fl)*+%@Zkn9FpoBoM<35rWN7w_@U3VtQLbjvq|T*Py|f}1U%POAPBTJt9elb@W}$`PfTShIx$)e znnt!Q3|Xc;o`2bN6gMlZi_rVWYJ+T`&?~e4a6QUJS>^p z&OM!Ju(YMNHE2M13-gf^w6hK)^R{R9#iudVBWlnIcMpr^oylY;tYPXC>rg&)=by&U&7lPt0i z``!RD=Q2;j>Xmm7OOnoHau@TkkC~@4T^I9a{wE6L+nz}QeiuQQVBjBf21eE}OBdCl zso^boB>R-`sD~sw;KBXA`sJA}|qY$dHd0uVWs( zo7|o$U%Wc}h<3>rcXy+_NIbwcA)Tq|1iFx7xNV_y!i_GV4RGqy{Rf zfil`sW5o)RwQVVg0u-39q|UL+ps>~p?H<8Tf)bBzXcGlT2Ku(1RA*Vw3xpgtg*KKeE>jda($UWYDj0s9$jj+=8 zyDKGvDF};$u#O#cS6Ws*rLz7-Wu2a3*GM{4M-7%)jDaiA91R-WRpzZhbBwm|odZUG zZKzV2w}!UdSQKQEOzpP~G$D~Nq$}|5lCJ14TA?n4kE#7dAtq$GS~5rkx}nfpfzCHc zR`ioI!C)&iQp>2Nt1R#~+RiPNOa+T-a9X5{Hs55!F%)JQNER&E$s~c_&tZe9CgcW7 ziHwqiuCFa=wE^P0(L%f|x08+ULN6$aS18axc=~7@_}1A5Drg+QrmhIUND|>26fjcZ zBdfnC3nmb@oc-77)7vR$8V3qa3B} zQX@5qC|Cwihc|55Uj*NQ%7SIkg`KLYu!?+>8^c=LU~-h2Nl=#pevP(EK|Z-n5>BqC z25V@0yGZKZK6E-kz3~wl&O?tUOt|sUMv5am8FIUgmPanPi?DT+1Ci|^*Z9gQEIBbO zA8`azLHB{gLkZs$N0=rTx?86CNgQsLmbag5Kh#rRUvWZzt!#ohXDz;?@Z{s0Cwm94QFZsgCq(H+$BIOofLtaHZv&PtL;Xw@)5cHp`LtRkl*r>{3o=r*kRuG{Iq z@v%RMV}H8ZYrYrU+uQME2EO3;jNDg?xm{WcMhnAkb2qdQ&QbyPlIwa+K0>+(TOL|{ z&FCTh2-Al~-_UqTKfz{%aa-9tmHf${p9!1X6n1vum>MiEjMAnFqBUW?VeEEFxU>t) z=b74#k+kQSk=OO5aHiDVDTS{aA2h!s-F(6+xcr3q7pIEgo_2iA+8v_VQif9oKiV=H zT<=tIVqR}{MR3{4oV6nk&Ze=P*77yC*mG!JPXFQ?Z?Q*CoOog4=lsU7N#_?9csu0} zTC6T+(>m7JzFX|0AezTnZjr8A?)0_)03JO7Wg<-I)YtlHXW~G1^yKllN$I} z{;+KOK-O5w9r#n4%KOXb$C0+Ck(-b@Djx5Z6o)cq?(?IKDCqMEjhO3eqrEa+Ct6S- zzN+DDcC{JyDuOo6;Ya#SHnB}qtid`d(isDDusyZ*B4wY;Z@QXzcF{t$G*VtG{$R>v zskgx{BaW-7PEC?(rlAb#M1qDn{_2xv=wv(3#zxiHi?}A*-}hYuGH4FW`Sv(*%VxCc z8Ftvq-69Cp0O?B7fR}wV!H7U7p5~PSgoY>QcL;a&p$R2-|s7Si~u!&W3J6 zoGm_+`sI5^d0Zm(9DS|*bsDycfsQtPhn*+<9*VS- zv7q zC?k|hT2`}m+1UQA_lqghG~!*N(FL)1yVyCs(q{z5E%u|Xa2+_1z&l8*HQU)b>_{$1 zm;0{tS?N+Kacm1I6ae$*!r;Qm(fJhii>ZZE)gP4F_@Qm{3)%E~yB?ddx9pCJ?T*Ab z9&kXowQQRfr&3$=j+0i9rov{sJzI}TV}*rO*PHYiV*i%mB7y76(6&4_E^0nPafnRb zK5G_-F4nuTX$)x|QF7nM4|R+!WGD6C$Srf3`z)%@@r+F3Jn4qgS+o}mvoYtn&?6sA zzY*tRtAOrvxeI;fgXu9cEYXYDe^>kaM3MbaEs0)Mi))M2r9xZ~XMsrHiNWpw)3;RRyxq!(`WH}ax1eqwH$ zF;Xj>wSUe`7N0h9lhNlY1KM3%T~`|(QH1ONW4}i+lJ77Z+qE0;mErQYLsx;Pai2%G z#A~)YRm>OJ7qeU=DAJ#cHRFC1?~-H|45!WVpWzxbfYT;Ln}Rl6*-*040+gi9^8W*5 z>{2^mt^gFpX6iEN))^eI5x?#on*lDMtW>7UulUk)L@TNIh;e;$VivH)>d_oqZZ-V$ zCYE2h?LO9Nk7Uc#JoiJGw~dqn!BSRf2^P2HeUyLi^Vay#k|;Q)rwoKf;2Iw(b-<2M zpvu@PDkjF=OW8$XDx#0s9ozvdHh9M`L<8!7+Bb5n9cBL?QO|5I*U#mq7|b*63nZWR z#q}}$L*0)^nC#*1A)&RdlmiYkh%3lTj;C?k+5h^9HDxr=x1&f6dZPigSEEZS zCfdK`M|>78)P#4%4`>&jL{d&_cO4i}5b0F0&dGJX)7cRx^A2VcifrW%@*;VxH1$JT z;fK-*vnG4~z-0djoI6Jw?-)5>Q$m5W#>K6{9bLLb7I80J*d5*#Mig}(*X|nK6kmWS z&f})lNxyC`9%ahdu)VgJuF9;|))h0q%+#IQQ|xsp%QXCWv5zLpe#VL7(LZEyQW}c= zDzl>>oGTuCCp+WH4i z6V8~UB~i5-qYICf%(}TTW5m6ZISv0QeKb(=!65=s@G&|OvqysHMzH9_{4WcT{vGq_ zMBKAtgl@ZmPQ>rrj6@XerW1+ZZbp*M?4c8jUv5S=>^w>*lCEq)s(0$>#1ch0q7MI# zjuXpDwj*7OmNJOtx}8XW(T5B|{L4;+{`?aLk<$1%5;3ZrL8LvcMv{u_7{sb?Ymf~S zkHMwLP!;JtYfp2Kuk5tc@#w0fWaR5>Ol*A-H-FFD-Dp|@TK09;- z=`Y#DBnZTC6rt0JHYQPk+&zgz(+LKPC_>IPA{lgJB#S6P&YVF?>Eap|u^Bmf4$;x$ zzGV^RNP!kH(TQA7VjJ?T6|rZ?>OG0=NcT;I!|1!@N$f!C@OC7LVf@*X*oD-8iELoR zIe8J)$kyA4f?#Nl4VUgSs@V$YOs^&<8mSMDJkX50xc;sA238;NGR z_IeSA5XtvQ22=Q_7jXoU{eYA*g=OBvQRHhAqF@RycoWBwyT2ehrl!@KIDtGgBPOQi z9_~#vAiwt@_AKFJZ{idpdxCISnpfV03aRWvqFLNwKExU1Wgn8k;(GfKO-T7uq?9Gh z^dZh6+P@G5i_+yoTtHNRBRUqh+lRP>s9zx_7R8A}G$VfyRC~`p9}b~KGzC0$Ez=AJaGpx?V?6|DRajYcM(-JHN(qw q_juxK=_5_c+wJo)whgPgrLzmOiE=PAV(bL^?=HA@ze)s$D zm+zmPoN-Amx+J{C&sJza00JTbpiKls02lZ3ia=FwWo%~J%gC(_>Xw1HR&RRHN4CDJCX5Wy^ zwcndV!-jp~z0(9{-<-7pblSho>VQo>;ayugX+J!-0d`*g1LtHnz_xF~n93mS7qe?& z|BruEDazRZQJ7twE3{8#@$FycG(j>c3oi&TyEBz*-ymB9ndY-w_hs85TOGU1V%RgdKVhg$`(*B)p`I_; zQz2_RpQ?qZyDWTscjs>}aA(>#C873*%t+7E!m224C?so3UTaGp$P9=XFf%xPEqM`7 zU4XLI+5fgI1x)S>Ohz1x1MB;C;7Az`miBpt$QWoe_`G(~miC4V-(7A~#~8b>uV|1gy>0xO!PU%7~0Ix#(33c>Qfi~N{}p+@VD8}1ulM$8QmV>XGr)voM_R0GG`e5 zDcDIWR|@rvyPE3s*GrMC6aC?U!u|3by)UhEE{~!at>1#=8Td#N3hcYGJAqN<;T{t zr9Y6tF9}{$p-q*@?677t`fDB56q0>n;Y2ALLNeYpi>}|R>vkUygvCu^v6JW*v-K0b|xSx2#VFiw1Y;2DQ0S*%tGWt2^qR1SdV^ABaHK{3gcy&|m9G`0VQlek2>rhuXv`IJ3 zPmj2aT^ijXO}Q#SHGA+aK{hGF0ArJJq^S-iV43G&4eo)Lh9FenE71*do{xDY9Ed3{ z!^pIij(L^Ew;gfm6XXR`%>M)=`HtK%EVvWO=Orc|I<8UmBp)i}1RWR3XMWjTnbjM| z^d+MbQ9kKq#%3%7yl3{tC@Xd{N)y>gKUSVFkta>0EvM|B>6$U{32V6DstaZ2`jel@ zOe=O;Utl9FoMs~&Dz0YPLZ9k4CIzs%L%rm23g-4MsQQpar<$bx>A}C$1--g}c|ni~ zkEsHO8&T*DSFy6t#Z)n0PV~EKJHREz$7R6XUGCaYnO~_<55A~r3_ccneIcz}|9xHZ zZFBOSBguDN$@fN+AAsTsiTK}@;$O_-|BQ+$MarzIl(aWfG8G8FT`hi?}M(%M)mDfeeEGbWVoF_fWlXlCcJ#uNU z+~brg$pj^5mfT7ud?+t|HdH{qMI^U~eRP$V*h`_VDQT3&fX6r1Yn@EHl%NWOYGvdO}Z85PtGltB27|He{zW za=E|tcT>bp2WMv+f4Lvs)P`R0qlf*iS$-_Z0g4>pB6Op1ML{H~ zv+e;Z%z8WetM2Hp`=dvOqQANM#O5kMh=ZK@oxINxLC#ckkh`zJeSNIfH|GBQD^{{>)^SGCIna|g@4RB*Ou@&pkIxQN zB7(KNxXwBdb%Ve6y(U36z{UXO5gY1dt7xr+D|iUTe8}@B89LNRl@L~{B-}?ls}xiB z1ou79-A4)KvZDki>e0OBZ@51Qz0}a_>J}Qm30O7Li}2(O#N{rkO37W~no%x^{l&T6 zvii;(SUg#>L@$&5AoNpH%yBAuEOZ==pEs||%Cj~acdKQF){!7FM-P{a7IRI*9LcyC z&g?3!);lXp@jdArrfMlz1mW1k12H_OyQM}i(<{pQ3y=bCb-hi}1?yE(!dOdA9Ip4n z(mW*IvVe+6geJuD<=sNYtuXRi0Ii*x4B)pY>#ld|Z(5zqA!uP)LDdTzY{QlPUOj0dU$UscL`!#--5T8@KO5RRgj$~#Z=KVs&cL#!+ zertn66Fa8qvd%(H>MXY85HaW+{9Jf9K>EAlxH zY}XXRr~QkNcZ;@IEmlPfF@43L4aOLE8GVYxGQSSn&*lBR{Ib1w`V@GHOz#@L(t}=8H5-%ruNctivufaB((0~u zQF|<=xhm8cq*A1GhJ^-V|3Z#jHWcf{wCuA$p-Xk?(n4)QEku;FMK1L@h@Ah=|DP2@qQy(-~) zrW0JGM&IQWH%CqnALMbFPL_jABRf)s-GOoK3hNrCNh8_y^epXS0qvM74m}w@NT5Wk*fSMR%O51+VQd`lNTWIy3M2BV9)whaqsIs6mLULg4 z6%j|iWh(OLw3@y7+=}mm{IR9yXB;sc!Yr9Jd!ONM94niteeV2>9>ZzOommr8!`(X8 zG}FuM+zy|Kd6~OyY~D=HbLa7g)V)vNS~Y9$^J=>BGfF@nULQZD`H>IwRb(JH(o$@v z%*3Olwh7!KzLg@puCt_GO&zLgv&=n^k^bTZi_$u`Pg9A!9o@OF6~tTbu0)uD_T62{ H^@9HeBo>3z delta 3030 zcmYjQ3se(V8qPd28ImD{@JbXU0nr3`OaSpwx+J`eAQdXMzDfgvMHGtGDvFv+5+S+~ zLz7C{rQ2wcvR!OrWrenA6Nn+TQDfUZi)Y;$Ep6Sdy1~*e+r#SKNp!pC%s+F#|GWQp z|M~uNKXr;faEc?#t5y|2444tdU>N2wn2Zm)BJ&~gOl3ssLh8-_vXVJh*PVJ0_Mh(p ze`xnz+V@#Idd$Z7viMY|`sR)DqBR?E25Ig{J&ma1F*6krXAXq3&FdCzMSSWIz7Mg@ zP4jT`y+tZSbu5${;IYj+(wZQ<`DU60X|ad0CJEpCc6uFRcmIkrGwKk{-$Ga<<(ogv z*n~KK_*Er8vk3-biX4G?CN0W*J+lE8B?sY!Shm@bf}5Mjm*AG=!PI?nAFQbfF4F*O zlr_WhT|r16y&$U&w(EkhH;aN*mf*62V4GKFzXXZQXR^nB?0vfxdhlGq}F&{X1;0RQ7Bh;l3!PWNh$so##@vg z%a)`ouzE5|QiD~@Q8tpgf+#?z()1~65YUSO?c;~&?WC@jrgK8{SAbpu=!(bH&7@9C z(@SXjJcY8dCCdPFf!H=?ZLi$ zqlA~<<sJ=0fJtOYw*|EXcWyn~$q-P5`_*^rJfn=(QjnPO=NMBGq=-#DUZDCfR%ji2d!ee8vh zoBm=oJyvUBHI1Fi?l4P7^qID?|1-!i?5Z9tUJm@JdI9(|Q7rU5@yB40PSF1Ja=%#a z6-|M;C`v8PRgY&`P});aDsK~=86(!b2r6ww!ii9&UTSkmZRjND*{4+M>{i;>6YTqb zKJ8h6y9@mGHCDhMw2&8}4!ZEb6ic&YM0UkN;DRQ$-t@!;RZ^cO_FX@p_q6gSvhZhq z-W0!86_FQGVLVpZ5mFHaA+2HqDr8)}M*T!alhjAX0U6)Z${BJja?ZaQf7cC0Ob{FQ zTF3X=R_yB^-)CRZHay)wt8~feH z0k_fSCdQ6>4UJyXKyyTya#Fc<0^jCUZu1(pc|F^_utBc5Y|MzMzK3H^iL_V)M-b$ewlJ7!%$r?QFy>#Le|==WH=^{Oj4|zR-{fi zrIyi#0)}w`?rcG7Dd(<2ANP8it_wX-NB;axu4JiXGpT8zmS&b(u%@^?=`&{#MXuW_c0RiH>r{C=X% zM^xRR_7Qu0qPeL5W=*@*+VwA+TGVS4ql>d@RYhVP3z!xtnusOnj}Ug2xDrKFZMsu9 zsK~B3!TLqf1HR5Kd|K8vA2rnUyFT$LfgdgUsI6E~R)h(>uf^uAQ4HXNT z<$eayHy3`>s#}lsg_RJ|X_#{~-z~1XqFrd*)89exn>)oRYB)<+hgaQRK+0X}PH4fA zYyfKu7LpY%^>LdJj92eG4kn?pGY^H$R$3j2rv;SeR=X{lp5%Hh#pXU^$!P^cl9yYu zT6qKv?hqNgLyV5~VJ&e#K(jIpGcfKT9Emz)Rwi+%O=2Er2waYa(ey3qFdKE`kNa*Y z!BM*Jp_qD`wr$?pN-%70;q=9~4J*l7UmY0s0a2!NTaRm157wwDS~cPd%^PB~X5MMh zhy1HN4zerc1cSj4gV@MTGIWitHsxR6xlUn>w`uj4jw8fN zaOJWRrug;r6?0J8&Y7?W3paM=;;X(5L`|+f7p-pTVQW)2c0P+YPby=I)}D)gzh!_u zn!1s@0pB&*5aR-wZ$o>yui~wfOJmTr=ZIO+z0Zy(&F_3(p{oC!5zBvjyYRu#CMh6O_^F`) diff --git a/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-xros.air b/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-xros.air index c10afd569d21518784f23550f6f48339c3f08805..17605fa1a13f5726a39274fb84440c8652d0c933 100644 GIT binary patch delta 9112 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 Zb}{RGHQ$Ygq+t6?#Th38CCsPN{{ys2gu4I$ delta 9099 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 diff --git a/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-xros.metallib b/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-xros.metallib index e709987f56d5f5f82aa06bca9d9bc13f060c90e6..490114adfefdf46685d134768ab06b2eeef028a3 100644 GIT binary patch delta 3107 zcmY*a3se(l8l6X&31NWA1VadqOo+%sggjUf7bOV+k)Q_JDgxULFU8hJpxRPhH)J9Y z-_g)Qt!Ita2X(OpO9i^r=A}{_dxC3st)(@1sNz~{=yF=xa%3loo_5dq|Czbp{qHw7 z_e)OhoEJVmFJ!NLzE}wY5D*Li`}jZ*@c1x07u5BYgr_8$v#NTpvD5nwZMl%Ktn!%Z zm#r(g|5P-dz0sezk$Ye8>Pppfu_sI@Iz!|#O2I>0gTZ(x)<4=(I zbN?})w_SgzgiPap`1IwS*=v~d%v)no^Ama}WvXBk$n>RTY|U(I%>?NU(Ho{WW1uxN zX!}Jd;wAF|Wjx3qARh(ojf9FD26`CCattgOn8uL_P_J`2&4elOfDPMQWKu+(Via|O z+Yo~9vh*{eI&8(3-BI$5W4SUT?L!4FPhbQHJC}!39;VG>jYFIMO5(&Dkms95@l1k85wZv<3 z!I@spSr37y6uv7qP7tri^=MiNl4KyZYtaQ&th5GJ8u%{N&ywY&j}z%9SUnyhZHhSO zW^MGheoqW<=e{CG>r0RY0Zjw?Qx&V;C;OOUgve@rGWK;!J?K<-+uz^@#PtEO)$dCl zA`|;hg+^jxy=jQ;a>h=#B@bUt9%S@~5a}+qKPlZ1ZIgDSEcYcqEw=a#?uS?VAe8OOR}VARhP@UD zq&YHKPmfg__PQV6w?rmQ5to|7eixANF0pfz`@omab~+zzWS#t3K4knEZKN-sC4~>g zMrR~Fm*f&e_H35P4XkAFk--@zE8aybn~6H@Q{|av;%qZvN-uoWd|mJP*l&2ysP<)M z`=guAOeL@y|Ll)2XVxF#NM5<0&2hvfqsWpN_TUJMYNxP zbDDXU&N~!??DSHM@c+NCVDM@~C)g9j)q9XFzgyhcNkiSbGuA#TwF_F<>sz^A_}Ma+ zkD^;m$S!MenY-yoUy-z7=}AJM^o;(6N!wuWucA{?@JUZdcwI zxi&Ug5Zol{?9IrI{D*XCs6T6uTry&_=a$B2tg=NE3B!N1?x5B`SO^QI^H*ua;(I(dIYS>OLnnO4(Wu3XyNqmO zoqn%EtZN(d;tMr!5q~AKd6XfX6u>E61?3uRNddM$i9vTQ0CORXHT75kFYIou(1v-(+^{GUiK3R0K{3#jKvLGtquug??*M4!%(MslhBWSe zyXKbBN*{uj6$TYUQ~KjIcuRa1Eh^Clsi3LH33=&W1U@j_WIAL`Y>kF4 z0mgN$3g(jQ){ybO$Oz0d-mc{`<|Z>7=_d3gjZU&Yc&~xA)Ut=<9x<>!Po&BUHO^om! z4{<@i!j}J5LK%{hcAWhq8P)CaDhG|V7G?N^vdcIhZJtbEEE{Xv!Vn?qc}6Wxh=^k< zK@Sys%AUM`0mE8P;aC>QO>->AcE2Y;V%5oYhnr#7X8KE)V6bk9KXj~6E8L^TALFZAy_qg zpI3XbkcQd?O%R+vyCL`}JzhC)6FmtgQlaUx3R;3^M~||Z^dyTwdXOCnyl&5=YMpTd zJ)|*Jwh^_Fz#JR)|AxYK-ERO7tL9q;@QZ*Rs|IH!i}kSgDgf#+%qys6UW-qozld+Q z?^_4eTkf8VTT+UoOnY80rvF+!e?!-F!~iE9xJ8&!N9^ZitivdU;HH|4PO9RZ>*EU* z9I50e4!jerY_@|>l43lEt{s(Ib$K}YEV>if-$SmCWu0Dy`xeSG_2$7)mV zmyKG*{um3j``Vj%7*vv75F~tK(N#V}(l`_RLt@3jEN1byUe3hoixDSu$5>QK#lh#8 zTP6zUsb07k(W~oW*;6XQDwx|Q>gPG>%KgBZuveK)6N~3DUbu)oAs>DEX7&7oYZcnM z&qywDd{fkn@;@A4;4ebtW};AY&Vc_K+uny!g4^-DBWfz)O2P=yPAxi|oFuzM$>s(c TRv<@1+rrl(1L12?_uT&g@?4Ef delta 3022 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 Dx>u$T diff --git a/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-xrossim.air b/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels-xrossim.air index 16d45fb80cdc8cc816b41cc851c858f2f827d6ce..4c92d0d75251369c73e7e2745b1424f9ff65f657 100644 GIT binary patch delta 9115 zcmZ{J3tSV&_J1aU1z~vQwTwO$QR0ktB~mU4UDO~O+J z(Wu3OH7Y6=)Cj2fs)<1j7;HeTXtj;ci!IW$r8e!w`a7FotF3=No1L9AGiT1@d(NCu zZIKIA?Be!~c9bgv{=DIrxydbv=}~n=@bgD#RdYz;I!E-i>IfOaJojz$4f0LIT#?*7 zTE1n(@|@hP50dlKBl1_}M5L}vem^aJLKHtTV!}Il>A86mmak6B%S=vN{o#bf+|}9X zsrh*k0%7E&jHnFJgp7=|lnJ7!$x#y~^P^HH2vda_{3uZ>KT$-IT?|4i(h@zW@ zd##TZwMHtNqPeK6vahIZwAY;XjQk_>(%apOVw&=jH9=UD5Nm3#mFA6F#b;fM+xm;R z%Dw$^u`b~QGQ}cJrNryki9!Xe2XR}YW+d82wvj3P88AY|uNQ?2^eBE}Q=>F5Xcb@o zLH4mk^S52!{(d50uruK44jHA8x?tl8Bfo9) zvx71|t2l1!h-grN-g(yA6whej?^-B&6v^6ZlgVlu`C#pkOogKFBb8)J+}2{T$u?9; zm@mWQ6_w0qod;fVo{w!S_5rUrn%BpoA0uh~X2zN9BVVmekq zZd9N4ij~|85(geBdqe31u5s`JX}~q3yY64W<0i-*^2K)7oQzb?6LZnQjo_LTpUzcA zb(v?ZWOdWT6~FCU{l5#V$)^ujKf`hZ$L0qAzub@y zb9vVla#t*Z(8@fOavT#9CRw6V?uJbw%(5z_+#M6*O#|6t!dPXfoNi!FAJqTk)EQ>v z>JrlLxYvp8aA*}`t<8M5N+b6%O%8sEJg3qqsa@=WMH7QEzMjm9Ka7>=aF;&H0hZgq z_CchwMZ9&4xT>EvWhG&_3{Ngru?!a8JY1g4hxx4VGaNQ13~svT(W3QursnE_UZG*BB>Wv8R$29cMkN>{~+gmFXUD&^-<-G?lgE-F@@F>XS4DiAQ1L z6g~~Z^$SI7BbC9?Gz$9+s``^|Y+zmSc6#TZx;6{3=H@|ZOo;08$&r3r+Hu2yr;Giu zLZUBOTPh8})Rr=Id4JlOxFL7TpU|Jl73Pv3563HmOkdwO7a1exOf{1A!N@ky`+>ebUgF=Mf;K`4OmK5_kfXL)CH$z|cVLj{#hqEfA2jLk_CBjV+@hZjF0`D( z%dOU!2)aj_tmklp)vAv$wC7@OlZ{%Fdrix*{ttelh52itB8uHEauv-D{oG}@@3)ZVr9jHjP ziLP<6iLL?BxwVU@0NV!x*$-d#S<+Y`4kqn|h1FLY_QFED?}x(L=KIkjD|Q&Uk?!j_v_FW?ssJms`jd@~j6BU)1V`kaKr z4=Z&zI?$PT@NL!Ex{>dI$XDIo8R;R_*r0yHP>wt*P=8oPSM7QH(gEG##`c?yU5gLi zxOwn=Dt9B~lc~B?KD009p?z@Z{e_dx9V&F(+hI_;XOwE$p^?nK^Qy?>BZVJFD&L?H z{oHEL5&f=_d)t=$qF=~~Z_HU{DW`knrhjIVlg3!KN`pmWWSU*^kZL$vD~hK=jj5{%1h}&5Cg!UxEamH#;}e2dewpL zX?zwxW|z2C7;W5XlsrmE-{e_mOO&d;XE|8jRe|1V_MA8R-%tz7dbvb6|Xf=#W4e7=0LO z5LT#=7|+(EnKsMgF+RI3jjz`v@YselJ}u5axW6Ed9cp%tHgQ-W&XD|Ny1os%zOWUh zwhsJ4-|3Df602x5Cf27(RMI)vMD{J%#sb@z!IE|25nw!8i5FK@_05OmS6MG>3c_q| zZj=f`g%V8?4e{NI_90L-VQvR)$L`&maZMwzSN_I;+U(W^gThsZArVy0@s<{Y*i#eYjw*0`Vl zKNf&QMIRX8OgQwHi1H$p0(&}H;@V1z?g*5lp`@n4cu5fMcETvz@MS~T7u|*q+-V86 zhHXgae}evnz0d9evG^d?Et^>Xgy4hj>Pxg^Jn6js7Y;g4&{dh^W5_Ts#?OOp^(DN! zpPUZ~i?)sG3`D36P%Uw)aA9n7(xNl0@{P8%B(+7{;ypmVOV<+>cJlLjqEU}`Tj_eD z<>f&9UNDprZAJ2*z^s583Q{5f6H+2cUmJ!B3w^kd_x)eBQp+X$g4-E8a5VSR)t~5= zVjr^y(#@afmSJjkQ3m%@T_zkj14Wxr7AA~6nIwg37eXN6$!58|gzg^icGxI0TyB7f ztLnfNS=fF+-c>+eJ=@5Al;HS?w3{U@1Up6-t93DZ+=YovNsCUipe%rtoVI5ScA6fk zk|x0(uL5{0ZAV)DQ!lC?Ao@YT5{XBM{uaX8OZaB%{3<&jRcFY*tWJaSo(+_B0{yN} zb=g=WyCuW?scr?P0jYaH>LY9;1EdCDmeJt?_lF#D{AAIOwiF5Y%1driZQ4%s(ASsE z?iEvw5-7ZX96C@{72604Ju(BE1AHI>c2@S00E$1;3&>VwlkG+PfCY0*m8Zdi#&{ni zWz3M&pcU9rc27o54O)q{f@rruv=esGpwzU9W~(V7z6K!2i0OQq6d`mz#kOSd^%P)u zAY&-AkV6U1R+`>1^?-H$OmHtkGA82H#=rGS<8wsTR~r95K+4*C2}1acQD#aw7`B2m z^#Sd%g{GY~Rt;t_K9d$;ci9`3d#cb!*aLR;a=yL_B(7cl%3Nr*3H-NO8uWf9P$HY& zEP)Vz#I9ei`3x=u(Yw;L(1ME3SCD@ty+9!>`Q2_R{1m%&xdo=`VF_cW?xloltBZ7M(qw+_^p`SZj6mpX2cxDNZhtL%B0#BM1j;qy zqaa~(gpl}NPm`Vslt0zTKgND$o0cc;l>Z0&m2F;LwNt(p0&}ovvkqDb1SVZN0ALy7 zREF49EE*$ZjS<6ryQ+`0-IBLuq)@iI@av)wq0)gKvSl%-;B8m&bD{~hyCB@qhf?tn znT&if#!x?98N8Jz5PCmlTbEmQqB1Oy1D6uO=V*>mJye$KhH7%7sn?zCsCx^F@>#p- zqI|cYvjfsa?F>kyDPN95L>-8O({OUM_gzY3KJn& zA9MhJ(-C=NJ(gmMgM4x6OOZ^d+_YQ14h!S7keTM)XahLwS9EvV{BO zah?3CEQzhHMcc9QQF_@vIo&EX^T@C$y?Wk+clJSa#GRPG9V8k5%e-_jd%gEtTeF}V za!TXWU&Ui;uvK)cTv(N*o+oUSenYou9If|uEMn$9dHkj<)4Wxjw)r)f;MzXjTSv1b zNvk+lp*s<}bB<@xnLEi?424cHA+Xk4o%V+2)gG=^VP2Ly|~7A ztV-G*sgkujAhT*sJDcYPxs*RV18LDAU(Kz;79bu<;Dd&~2y@m-3LUZydOe1y5m$>H!jw;Z(|Yeq52)~H6k+wssqko7EA1?-#f6w=mpgD@i$=p{Pt2p%-Wk;jA6%~|G7o!KBy|EJ zJOy_~4N7d^a@TxnRDpcdTB&WNpgRc5{_#XR z`T%Q6K@jiu|p`5w;1_td6hSMr~bIXfIl-E+TrsqO8}otSP3V1d2JQ9`l1at#W^|N9o@S z{{~*X3_fyBBOe)Z0bT8?gC*@B+}%z#qH7^zyJD4QeYUkYTcgMZSWpW1UZPP5XBnnMQGF6~@yz0)Cfj zilFK+<Xcy0Nx|v42JX=m*W+#9pEkvxeX{=S@0ZU0 z;o3Iit+rVk+Tx6D3C8nF8!xQvyO0xhG2hsExAF3m4PQzoTzzB0c8zGtDB%fB^D)7s zlXH8hYdHt6pL4tYRp)KWkc9mI|LYEMAqjC{&dfn(8xib30=! zOM@E)IhV}gtZqC}Sk}p%r2GcIER=o8h*mzu-w;ji;?7dmp6kB9dyY{@-~% zW2{}=12FTG6UV2XIMNi+EIQT{aa?n(X)crR#$X&E7>qIS|7Wf)xy`IEA2pz^i49cUhAZ*s`BJM(~Q+eZCk`HB4b{e<%OFYr}9NA{(m3un4KI1w?4^zCx+7mp( zGi>l4J{Vk`I$0@+#@I}ejD@@W7!X;IJ=#HcZn`mbd4kS6F3{tNwosAr=sy0jEMT`( z$4IT*<;EN&(wuKe-1)pVvPzz+oI;S13)5hk+QWJ=rqS%i%Mt}LW(_Y=UlFR$kp|3h z@4MLYUU2>O=%6}dGM>#i6ZrfLW`nui<2X(>Q0$#q{Fk` z+xS^i(2r6nGj*GqsPAFbI;RA(>oum)WyKDT&V#3-W2Tms|2r`;jveD{NNdxAWl0Ct zDfw2esKkf)8$-DWD|Vh5#hO~%zBZAsB`Te@Qp?7KPK|qZcYt?rV#cs-@^ubti>Ae5 zljiE*TXW zPvL3!IjMgMxq;wK2F`Z^&d!Y<|D%U4^wtb)>Mh?Gu>&bEc(%qw%PeKjeD%}3cSG0A znlAG!e-Wy- zzu{tzlUtLN@yD5+$stQ-zRBb5-4N)Y5v0hryy2{n-?qe?{Pk|~jg&4-`LhFSM0vn# zt4#R(K6#nva%dL{X4FbmEJoKafgj&pa5b2ST$oG4YnpXzj%#jJ=~Bw+Lt>6I)#VUK zyeBa;aB`myv$h%xzi-$q+T`wu|C*c2;1*7I$n0C+;1Gm$CKPcA!$l9rCb`$dU7Uv3 zyhMS+_Y6b)Pq_{}U-QOu=#P4nivvE%VGRRo#xD=Y=ToHoVYMs&YsM&~kxFn#5M$x@ zuKQ^26|?mk16`M0k~^kxeD83$cR4Gkv~hc{n2GC*K%gJN;2v`EFy`Efy<0iS`47?L zwNVmnRL{Jkb8`=<a30_q-LayH)17dFHzv^Va0lt)S{xXdY;a)d|Yff3b@GrJQhn zN~rGx4)-Cj?g=zsG4rl7B7wEp!|O2i?z&BrZ$?ROMfC{Eimx_+iI00JQ2j~rr{xPb ztt%P%Q)WSAO$l)(t2(*1gmWXyFn4E(-{I`uBMl`19of!z50(V}kj-PZmIT$Vh*g{{ z8FPC@X3E);v85}^n%Yao9bQ?#+gK8Ib5&3GwhX&=k(rHy6_3o)Doqp#d=lh?PN)?5?wgaUx zb%n9P4W%=$7G}2GEPeCDf69uUmd-v*A-HrARD8W08CrY@YR(M>vWgN2D)EmJMC>gf zsChff(d02Z2x|U=a^ z*i`m+HK?`3z@}F2uSGrkI@#2Fk86>2!S`$`$M6{T=^_sGal>BJGj<7wT6=guvX1?jLs97F0Yng7 zBZpF;Zx5kZg3IxtijlqvWfIghAF33cJ&MW*#-~11Ich$E420!tAF2Xv)}da4D)6N? zqM{Du%&t1_m4zsv6aFqk6V^njf_T z^ba!?+PZokIGj z$l$}j9YCEyhG(ePhvCkn&Z1H|)7jU;<54sAnP_}te>V}9CZ!ptC^X8o;$`-*U_)rnPqE|f6cX8a!;s)O?Y delta 9099 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 q_juxK z-#w zFPCHejC;2pjPBX8dFl6c=a#FVu3!QRYfIX@uptq#8l&T^{z#T}^@0tsUmwChfGq2# zWTy500tz-92<@H4S=O!Tn?SGic6tYF=?U#xQVHwPg>|s^%5OL`qYk!x6~d&Luzr+L z1^d4HtxA68CP>1vDzmuOnRK@G^UMZFAqv7F4$Ep!VOlpy)y{+c`jDQf*=m@IU`5`xKn{^_v8abRuVYZy|Dfkk~cxyS^l*LmDl!ZLrK1KV3-QO2KOlyreR z5Q68iU1Y>}I7)4e@rn)PI}VJsoTj@2bO&;Srf<@;QWK(kX?1}1hUoGHk8LbKFAvcJ zw0Z?ij|J#ygh=$*CTQA7)B1SDR`O#9_KKg#6R>w$&?OFbrV-ucV~Yjs-F7tpAdxwO z{srKOr-#!sErIloK+iy#}z>+VburW2`UJ+EV*{E6y4FouJ;qEW$4Qk@rr_f zs)v2rN8oA2??}uO#CC-q%_u`sjl@e7I_ZbHLS7e;#auUO`rVpt=OIo=+z=AmgT53I za!K%1#CaY1i+-HQ8{xbUM98%-1k7^kN%mv2HrgzQHfvc}+$Vu~gN>R&byh@1$d@Hp zT6e5TGuW7R5n6e|t@+-#z+PA~=uY;jssd1%F&uS9xd-HCNn zdcdSXePN)dH;qYM?xg7!@!(}~KjUHqk?FAwsspvARV6mJX2zN6QH)$p^eQzS%2Jy; zY1H`Cm_y&C(i~BhD12m-3)|)oCZ!voZPJcZ6@dgyi)=xI?eNL~gmOKFnnA{MQLlso zF~o`WbX%#YSA+PDEiQG67&1itE+E0z#O@K!-9SDs(fLqu^@=C?kit_`Tp*vt#rGs; zcO2apaTy|i(o6AHmKeNmbVtcc_s~iMQBOTqo-z=p4TL4L_`cz~-uGe9aKBj-$jtFa zFP)j1Z#Vxb7-8OQFv8)2iXfZkQT#%u09JG;S3FL^*wzJA95HDW)8xNg*ykF*TjMh> z@zdeaRp3w~^4y^+<{)&?Rg6~>y^g95aE1PH8E|ixvno*LXL8(yEo+#7Pek8XO362V zQ=NRrn0)tG@;yiL{qf`nAb(20|4$kJCnNvA<9t#koLerO|GF?u<^tFgy+S#2mgLb7 zN#LR2$r%qNE^oA?oF~Vmgy^Ky)q_d{UZR5uJ_^bxTD( zQcC?MU&lbU!^C_(Pz(K4?5Yo7c^`VLA)S93{3w4cw| z2Cl7hWgCO+q}mwK|NmgY;MJ|2jtgNNy${*^yTM7CG}f;q!0wdoKKN;qV z5p;_M*<%l1?QQwh5Vpt0*we~h?M1h=qC;NvsJA8E%Sy6=JR7(S-Jw8t*jYR59D0$Z z42(pcA4wW6rcAP$+6ymk->_Tsx7tp_12jDS&B!mhBfspA92<`OYINT-qodz{QFUYZ z+Sp`K_)bx0PgZW+-(>>>7jyc`Ot(6F^R^N`JH#ZxZIvqB1H>4NW~rDaiCAYqfa!6&$)9`oi!|%K`iR<^*U6 zFt2G=G8bRBM~wHz#bTE6R*J)TG@0efw4g6&b<%a=dyT9mwlwieADV;t-=1$ zY3!~g`J_@=9ACivcdgsrs=_hfc)sa?hVHB6>3mX5V-W{42Y95aOzBI1ae zf7X?OqarG6m$tcwrusY1COm5bT#pPZlxQ6z zS9{RwiY9$>|5Y6td0q)TOj_5~#%qgasjhKVI*|w|iZxL{^ozvU6S{w;TvP-0a!8&bAGuzL0m zx9)f`4XJrMA-HgMefVLzy$bF|x)V&KQrl(cH-*oR9FAeqoh$+AMs}odyM2@DHRknn zlg8A!X4F9fk7D59Zzx*VeF(T$J=e~M*8+O12Aq{H(!>6%0I0_>KfjK7O_)Kyh;OyN zwgzgjeSIc*aXFGU?R&M9{%iI96v1ktC*-O|%^8Uwf)Xd%goRX^l zgyaxMH^$GXzGDM@Rbu4ke4*ux5r34_I)$0|w}jjq8dJ)(l;QGL)51gI)a^qixp`q< ac^UF%WM@8)8QC(s7NIBFH@lYkPw;=Tnv#|P delta 3029 zcmYjQ4OCO-8P2^oxw$5n5W-)gAPER2$j=Qy{3#s?zY(N{imQLch+q+gMr)NyHMvQI zXd{Lum9(QXT1q(`cCj*{ExH6^$l9o}b7y$wYP589ow{IY$9kCVyNRwl=f3xT&-;Au z^S$?Z&v(l$y6P6iRM)O9hG;Nt9*t(6Ph-%ocE=P!sDrALjj(oRot0JFooz051-pFl&iL@}hn832S(lKib@e-_C8BRSQ4#1YJ;bj(J z&C*s_wKoi@qcidvV3#2b`|?OwV+$`;ILo?9_7X%`&&s+WwN;*Pf5 zIlPN%?cmbQF!7Htd~$Y=M2*E;UruIPAAt}Tlp-oNMww*jDCq1cfIz??5D@g?jsiy6 zMVQ~*a{*_h4TokJ?<7KNhTp(ZB@XouU+1G!kXGmSSb3Jk$DjhkX3w2y9h%)MdwH8>wsPcXw{SIR>GjC z=w%drfuu8K;uU~a$BMN;JxRHT7*8Ihukq0rPAS%eJXJw*;cRK8&$BS(Ueo8Pnjuqk zWtF3zg>#Da0N#VdrZ6;)g&`@ngrT{3LztD=!_YQ{+n)17$@fYHqx8z_WU}3p9O#tX z^GHVMM%MG0e&HvcByE7KvO$%O(&R~Um0e%etFMxOC_FQUU#%MPR1LsOMvPUX#>}DO zjg&OG#4msMQc?igXd_oeYHqp@+To2<*>8pJG5iKqR(dYT%bDhVsCoZzxEOv?>gTMGz2B9RBTZ~M#dZ?N zHwmxEncA0YsF}X1W@hYW{%0%e<=w0t=)T^=mWgx2#TP6*@igyZh%Hm?l`{7Rc#Ygx zaSd~ynzuic(jVY`VBv9>D{m8qq|vZbn{y%^SrRA*gq%o&U%O%{DCfL#jhE|wYy8EC zo53zalTyX z7fyq@C@O94)lX(wT-jS(DQ_2^9mm&h0hNwY!DOV;C~Epm zoaVKuqYEP{v?nUNBPzl$q*NS0g-C4FX`jmIQu~QSAQO02IZKSk%>Os-?}nl1Nqp05 z_KDXV6$b_;4mc~?M<&``6|egyUccUXFgS5&mT59$M{K?$eWs&+!bN{=(1*iCCNFrI zsh7ozlSO`F1~J>bc!}Ag+~FtgDJWpbrGRQqJ8rh2$LxSjp%MXIDPYaL9mo2-<^ivH z&}(*h@$qARQ?s8iQ5;^SoKo(X#CH0XJN>4ee&0?%ao1-a^5S18fr7`k!-F;Zv0Z-U zEk&L^CL4_q$kwF4o7c=(+zrj$h8W7xXDoG;qSqsb8oSDPl#+9eM&t z-XU{m+>2*K?4e?2lMZciU4xPXP_h$Fb~3=CI{b8^ql%v0U!j7m?S_Kp@q$)l*`AVR z`_keI3O+07$^STS*{3z|SHASD>MNH%THTs+|8k4Xv8*S$8A*gg$9kqu(-U$JA%$aU zZ#(l>B+5QW7J_bo+DV(9>YkkMmT@bGSjNgEb$)gCdN9zf8 z*K@Px($XKDj#F-pdmxM+$XNg8#k{-jx|?(cvaQRF>o0=sS7;n+yG8MeVL4yAzMoG= z_K!qyPQm#W$2B93U#;cpA4%=-j$Q^MsnO#y6$906are?(4({Ve(gC>H$zUMq2IH@` z=?vMKX*jsDMwax z6k<(aQ^2s+wTKI9RN__uF~&MMfOUD=d-~Q%21C?{i-O0(KTPPDvshdGh$z4&?2UY* z z*|tI7=(zKxU~BZ7B&#dO_>2WKG#LLCoFohPcpx>9zPGpUf^b38oBagYq z(+kCXE&m+dC-(}If?H=NOl18f;riLm!T?q|QxanR&Y~E*EbS|iry6i_^-{9It_ClzZ%nBql@^h z@*oZGUjV;jH*7%r=au7eS*Uxg$SbP7qF-#@KhTNuTDwH)S~yS8fYsi~Amkox7nE^S z24H>hVnXH7o^S}jc#ZB8U=nI48oMjy44>59?r_9WliZ*uS)Au=`E6iG@@iXN z8yAPc9U{Vah}OAbo+j}-XilnQgeF|LE5(4!NyRR$MZ{$fgUiu0mc3m&&p{sj&4HUr zaFpR&D8A95Z(q2s1`L~1GIQyqX%$f)XaK`LD9m;5?DeefMVob{t4BSNc|$Db?0Xtr zQDzei?1m`24c`O1JOAcj6MvB>LQaJor_pF45Suuurta}ImZBSb)+@|O4!!a76A1ni zT(hE_A$lvjVm@8EXLjDh#hbbcu+`s$VyD)ekJD;;S^CUPUC(2!Q_A?#b?4(g(hRc3 zGBW{C3rZzOM*@= zPL+R1a(_xTox=4gH&XffDt-E;bRTTeXImuVw2OM#qpacWHR#(>*7lFNo$M_r2<9+* I3w9m)FQgBp761SM diff --git a/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels.metallib b/Sources/UntoldEngine/UntoldEngineKernels/UntoldEngineKernels.metallib index ba04641afd0dbe73eeab12c61b57fa3e7be30cdb..090971b59fd579b2a3a21fdc9e02690e04b45a4f 100644 GIT binary patch delta 3069 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 delta 2993 zcmYjT3se(l7S22}8N(1lct&|7C=lKgK-3nOglBkZ5ZqO?G$JTIpomscs>vh)q8l(Y z5z;MgV@oOPVjC(ev_&_87_v2LwA~&&>sh0vTiT;;thA*qt2>kEcF&oA@_+Zc_xtaB z_x$JN&T0Pj)BM2lsqz9fW`KD^5$TgFH8Un3urO|21_h z#JlsWN={lMD1D-LCnxD|r8R(}Fugc4Tz@H)skg+U`bK;ws7UpO9^ywp#YXQonPj!X zCJ=A%Lh9JK^g2*+$O{M336QPvZlxGgU!1WMFzZJ$x&fD7l&JxwBP5lmpU->=q}jb$ zR9i<^ZUtqxyzu$i^sJqr>?bOu>d5Ns$O6a(k_#diJl2s#4>=FQyY*eUF+k{;w&kuH_& z##OmNB%Mgn?-HXVy^^F|93QEyR8j_X; z3FM@Dgro(ZikyJgJK(5U@p_M~)J;S!pU<6uOFkzejkZWvXTp73!Z@sEZb)?UKC(r~ zT|}t?C^6+n&Je{$Wof^%RCJbiZW6m*I&Lc+0+Ytor4#DJ(cEfEnn-erPG6320o4Yg z*jIDgdejJ3Q)M6UtdrO+sx1G!o0Iy8bGG^2c5gBGtk~@B%QcBPsVti^`LubO(y|sZ1o?)J|1SLG; zw7HqhJ)E==#yC5Sf;ztzFC4|8$5cNfJikMh=u}}?;~76Q4t*86U&N5VQbEo1RT(30 zALBpUn6K<(rUDO?Hopu(nz#6(jw5))x#aQ7kRA{+4!Ah=>>xn}*lKKu(R-m{&t#>zX-w z$%H!1H1&T5X~u0eqXjRJ{#3n0`ZH6&bv^e-qe+;d{25@~e8I_kM9xKAVz8Dyn`LfE ze{PAWjW;rdRlZDCn)10bzDjk1$(CS(XZ<$3D3fQjQof#HK6G;^&pfOH;~t;Mc2+qI)yyLQ~Jov>q&ky68*4)ToeVII=Z*E2+~>bo~Y$G0Rj z5A*y6EzDsH^FvF(;{P7gZ|AMc2E@_LVCejr-^j$#0&(;`IFtDZXLTF=Rv_rPqc9L+ickHX>0o(R2c{@ zXNt|9la-DxSvPTtTSMy&U8af3onBvSK$RwAl(z1e0)<^|SBt+>OMI@|Am)}=5 z&Cu!mdW`Sx@_sO`U@V}mwc~u3A8xDz17 zS2krBp*9Ob8YN#HCU;xF>jbkqRsEs_Nu0N&sMknZ zXquYbnY^R!LcG>oB}5T^V2rqUUYs~%O)yM0Ou0`lf z?!r4}BIn>E0GRS8A{5r-DJcwvM7)Nzxv;7^;s|!g#ajlu?`-QZ8hd^;$$0}>KD;u$ zR+i645sxlT+=#7$9|OpF>{<|3wRJ9URGc9_!}wX;PySka(0xcbi*}4HD$c^ z&`>AFY3k<3%E5GQ9a?oS4j0+v-9X%l3=-Dn#^X|(yw}7f$E&vXl9P~`>FrAvD~y)t zbK!*IZigwDn&f6B!DOv7WVVt+5|ta$TiF;$-XYw3hiILfmo$fc3oHs1bkDQ}vqY<) zMWMhV*YVkYW8~#%m`vFrUt%Io{Q1aj33-(2YapcFq-=}YSV0b(l{bI+Eln|A>#8G% zeUz7G-P3O?>qmAg^2;V{zIg*o#=<+zik!p-khB}1>{dM{?e6@S$q)aBC=4)*MHu%(O|z1a{EZia-)|mfP9|<)Rig)H8$xVks7RMc6A86@dCEU zd+@j3m=)c>6U*wa&_X$H?d5(qhDRYY@iFYP1pCKG%|1*S{Y6aphEiqhWUS++T$$39 hAb5OHnej{VSYjb^%3uG>2)px2B{FuUk`esNe*sU2n85%5 From c262eed773a7e92e65ae17f2885639b8108345bf Mon Sep 17 00:00:00 2001 From: Javier Segura Date: Mon, 3 Aug 2026 17:10:55 +0200 Subject: [PATCH 2/2] [Test] Add TBDR emissive composite regression test Renders a screen-filling cube twice, without and with red material emissive, and asserts the red channel of the deferred lit output brightens. Verified to fail against the previous kernels, which zeroed G-buffer emissive before compositing, and to pass with the fix. --- .../TBDREmissiveCompositeTest.swift | 118 ++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 Tests/UntoldEngineRenderTests/TBDREmissiveCompositeTest.swift diff --git a/Tests/UntoldEngineRenderTests/TBDREmissiveCompositeTest.swift b/Tests/UntoldEngineRenderTests/TBDREmissiveCompositeTest.swift new file mode 100644 index 000000000..9e746d6e4 --- /dev/null +++ b/Tests/UntoldEngineRenderTests/TBDREmissiveCompositeTest.swift @@ -0,0 +1,118 @@ +// +// TBDREmissiveCompositeTest.swift +// UntoldEngine +// +// Copyright (C) Untold Engine Studios +// +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at https://mozilla.org/MPL/2.0/. + +import Metal +import simd +@testable import UntoldEngine +import XCTest + +/// Regression test for the TBDR light pass zeroing G-buffer emissive before +/// compositing: material emissive must reach the deferred lit output. +final class TBDREmissiveCompositeTest: BaseRenderSetup { + override func setUp() async throws { + try await super.setUp() + } + + override func tearDown() async throws { + try await super.tearDown() + destroyAllEntities() + } + + override func initializeAssets() {} + + private func renderFrame() { + setVisibleEntities() + renderer.draw(in: renderer.metalView) + + let frameDone = expectation(description: "Frame rendered") + DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) { frameDone.fulfill() } + wait(for: [frameDone], timeout: TimeInterval(timeoutFactor)) + } + + private func halfToFloat(_ half: UInt16) -> Float { + let sign = UInt32(half >> 15) & 0x1 + let exponent = UInt32(half >> 10) & 0x1F + var mantissa = UInt32(half) & 0x3FF + + let bits: UInt32 + if exponent == 0 { + if mantissa == 0 { + bits = sign << 31 + } else { + var e: UInt32 = 127 - 15 + 1 + while mantissa & 0x400 == 0 { + mantissa <<= 1 + e -= 1 + } + bits = (sign << 31) | (e << 23) | ((mantissa & 0x3FF) << 13) + } + } else if exponent == 0x1F { + bits = (sign << 31) | (0xFF << 23) | (mantissa << 13) + } else { + bits = (sign << 31) | ((exponent + 127 - 15) << 23) | (mantissa << 13) + } + return Float(bitPattern: bits) + } + + /// Average color of a small region at the center of an rgba16Float texture. + private func centerAverageColor(of texture: MTLTexture, regionSize: Int = 16) throws -> simd_float3 { + XCTAssertEqual(texture.pixelFormat, .rgba16Float) + XCTAssertNotEqual(texture.storageMode, .private, "Texture must be CPU-readable") + + let originX = texture.width / 2 - regionSize / 2 + let originY = texture.height / 2 - regionSize / 2 + var data = [UInt16](repeating: 0, count: regionSize * regionSize * 4) + data.withUnsafeMutableBytes { buffer in + texture.getBytes( + buffer.baseAddress!, + bytesPerRow: regionSize * 8, + from: MTLRegionMake2D(originX, originY, regionSize, regionSize), + mipmapLevel: 0 + ) + } + + var sum = simd_float3.zero + for pixel in 0 ..< (regionSize * regionSize) { + let base = pixel * 4 + sum += simd_float3( + halfToFloat(data[base]), + halfToFloat(data[base + 1]), + halfToFloat(data[base + 2]) + ) + } + return sum / Float(regionSize * regionSize) + } + + /// Renders a screen-filling cube twice — without and with red material + /// emissive — and asserts the lit output's red channel brightens, so a + /// light shader that zeroes G-buffer emissive fails this test. + func testEmissiveMaterialReachesLitOutput() throws { + let camera = findGameCamera() + cameraLookAt(entityId: camera, eye: simd_float3(0, 0, 3), target: .zero, up: simd_float3(0, 1, 0)) + + let cube = createEntity() + setEntityMeshDirect(entityId: cube, meshes: BasicPrimitives.createCube(extent: 1.0), assetName: "EmissiveCube") + + renderFrame() + let litOutput = try XCTUnwrap(textureResources.deferredColorMap, "Deferred color map should exist") + let baseline = try centerAverageColor(of: litOutput) + + updateMaterialEmmisive(entityId: cube, emmissive: simd_float3(3, 0, 0)) + renderFrame() + let withEmissive = try centerAverageColor(of: litOutput) + + XCTAssertGreaterThan(withEmissive.x, baseline.x + 0.1, + "Red emissive must be composited into the TBDR light pass output") + XCTAssertEqual(withEmissive.y, baseline.y, accuracy: 0.05, + "Red-only emissive should not brighten the green channel") + XCTAssertEqual(withEmissive.z, baseline.z, accuracy: 0.05, + "Red-only emissive should not brighten the blue channel") + } +}