From dd7232d5e7d4a3a289632d434e760ed3dbc7c4b4 Mon Sep 17 00:00:00 2001 From: Amatsugu Date: Wed, 18 Feb 2026 20:07:59 -0500 Subject: [PATCH] textures, they DO they work! but how to sample? --- assets/sky-array.png | Bin 0 -> 27288 bytes assets/trace.wgsl | 46 +++++++++++-------------------------------- src/app.rs | 24 ++++++++++++++-------- src/render/node.rs | 22 +++++++++++---------- 4 files changed, 39 insertions(+), 53 deletions(-) create mode 100644 assets/sky-array.png diff --git a/assets/sky-array.png b/assets/sky-array.png new file mode 100644 index 0000000000000000000000000000000000000000..ca0721eaae5c1b404316664c0831039d128ade3c GIT binary patch literal 27288 zcmcG#2T)T{yDq##AoL==7pVdQ(t8mVkSbk@fQX>9h|*gkO+mW!u1Jv%3P=q_ssc*y zp?4B`Xvv@NoO}NH{<-(gJ?FpYn@lEq_GIt1)?V*=*Hhm8-pD|Ul8luM002rI?R&-m z0Ky+a01^oPCu2Ny6MrK7g{G#Fj;1Cz)XVev3pXbK5K0VARMGBIXa8wu@{`(%eb=a5 zGjjWxhH3YsGNW*^FXk@e9jkxEUH&E%Hp-J#5)rF0mQjffH7Pcdy+sng%gRdr6!Q_& zUN~~ICu}98rTMHekeDQv%;b0FEA??v-kf(a({o>^j-plX(cELc@jm0iMmQyW1Je{0 zU*&rzcP)5-_=f4B066I8f#@h@j9-{v!02BE6kU|1j`6$U_q`NN+y}gqPHBtsOdO1U z&-?lcH{NS@KdlK{qk7J-$)9^OPWbDC^ScvH5l4*9-;EtB0uPxWhcg3`lP{=v;rB&( zh;B%}6#7g+e#c72Sg-Jf+Wr!k*VQer{#D_yL`RTWNdmhXhU;p7LR8P7Q3ozRa{Y9c zi&uSEY@~el^sL5R&Je&!LBD*z9*0OA=>)V^+>eLB-I2>p75#yTH7c5rzx@GW|kKMd3&UN{d8iccMF_QP?;o$=-`pCD%|ys_dWADJw;`hhpIjA^ZL|H`7Gxj zv-4C}>mGo^e}LF_ZBG0dQmFRh*8o6H_m3|K$joNOpCo>xqko@xjg*~HnyZdHh8O_2 z0iAmqrhYTK^ZwcFW(5rg#l_A#lGAjwwd#FT;R)3O;rcgh00xcw_l)QXTe#ouFxXU0 zTF?+4G}+RR#7q*Qg$Zg0SUYKbNC=bE@fV#Y{Nj_Ew?%PnNRN(=sz{NNW~`mBkLGQa zZdY!Zj-QV!6dRZoYilQr-8O3^;{&TFfw=pDglB;E_KdJCk?oW#!X_V*?l3n9Y(7~B z2?AOGaW~+{;s<6X*(EK65yRLeNd1U5$#*^MnSt#VNdykqfoC985M;CmBFwGE|}TDi3&U!W(!-pBmWF2 zq0?n@TO*uezXZQrL9wmya)3XFX6JPaz$pN4-crnH#}WkAqzyMnNjGN+U57jbK4k zTOxO0i=aW+JS@j1czy+gTtnDeF#0iCvXEa$boyhx@35bK(87L(O~TnoI3mEX_Y;Kp zPH^aGB@UZ|%6o3x?_@5r7IM^%a8`h3y}3AZnWaqhp{Blvc8Xk$D_9fe6f zyS+mmzCZ8n-utWF>8$%}F(Z8Xz;i4SO-_5k)LN7pUZ>soG5qT%{};6Tai~yOxCTGA zhlMXFJ)HCY=w&jRmv&pn?_GEY|AI9JBSPw`)8~B@T#y*vtevjW>BQ$2H%hj_q&m}_ zt#^qHInTBvwV_oiXrpAeG&%{ptw#AVM(b1LRHAezQe4FB`Sk>Y>C$X1Ek>rg-sPf4 zzSTKH;GT7*uvGAE^lM~ag^h=AYV7w?Y9I#w1@SDOt6Fj5ssARgV^%Q$-MP)6qS^R7Sl#{E|VLx zaZkau8@bVcaDVu>ieVC>z-g)`IJ#pHb+ z>2BnrAihBQy}j!TYUnMRKZ9Sdbof4U8;T_kVYIuvZ?EBY8v8z{``o0H65)-YL{wOh z5+{Hvi53XO2tp`=M6eya@c7oV%vAAc`cGDiTg?EkV=QXz?b-Sz ze5OW0S2stBVrpWPjPJWPR$G2B$wF(>to?_JW|`|_z{a4F#_eVK4C>+L(y$!mB`w4z z7{E9wOSGhow41ZpjY>_BrQUdu;PHw}J@6&4@^tn%dP-DY(%fXd!Pt?R!xxDnm;@{R z_-$QYEZj-*W8Ni%?6wv&SqWwHn^MAFMGCCY65c6 zy8&JfMY`79&WbH4NIj`}GiRw8z3xP^5w=))1${J&;wYY$6Hq-Q%R`x?Ld z6o3`)`q;SVTL#9@l)gQ+uZakEJ<0QC7+jwBro5R=CcIC0;p3*JIyq$3duqS;S(D3o zjA2)2lSNEytO`7Aa#8P4>ds7%@=?vq4HqT@xI3GLyUIgAXEZ~^7B>{%5AnU}3<*$z zsQ>8FG{-_>^a8W$AYwCS~+&dSZC6WN+;lr z?zu_HbxaYpP{~`1(Zl7uPV%b1;bq_$Ptw#XpLXrW+G=#FoeaX0b#!oo8XLXkpN^{_KSWSUk#(%2&K zIk~Fq-+`THfD79Tpc2&fkXd~!Q`*7pJoHZxO&T7|7@x;fVhtLbM}s=$Xe;8h78k-D z=0C$$NPWpzmtRT&V<(wxC*dFsSCWQjgAIS8x+IgQqgX?Sc!M zn84ONZe5ORkD48Pl?cs4h>xDSBbS>V z|AmO}pWxa5;pzT2LQZ^3-dZV@Z^iOKek6S$6F7X&&k&*wdvm2iUO2~F4k~#KK}^D= z;0!fTXYzGt@*;k9$DqAHnAXaQHnJSk)OofVb`#gu!z>*!IN1H77Lw25LWdSdO6G@B zM4TXo;Y_e#c=AdjmIz6TT*549J$1JaQ5Ll!R)%~aQl+KAsk)Ew;)ZW8K9x^Y$v(7|woA>cWU&FV|Cf-cl( zcpXHFlp`t+l1uc2I0Tr}-ds}Sl;}fpyO7vk}yFB)^DQLv=~?k{=ejA52AjS$TP=`2|-qc2g1t<)_cyIf4+zzk-Oxe(R`{} zt#xG!fhm>>k}h7>L_!--1>s6zYC4U1y(P>vNAML`Jctec7;y#{pECFdGn`aKz{8dN z@`zjRVP;@QFi*g@N8m0tCb);zgX){W1R1-a2Y%^$BFXY2pHV}l@(8qb`%{Qc3hP+7~921tIT@9Ho;VaK86 zl!^5G5nW~*{Zu9llrQEr#>F&yjnmm&Ribaai474#W8c#Fy@xU#goKOJ`4HET<{OAo z2Bn~ba}_%Mab=`-$62v(iS(jZAUfDELDdZi)noF_WnvN($=G!!!I!URQXvhaUPp7<}fG{$4vM5b6|h8R^hmR6x;XASkBW`lh}u;x?s{oG21 z<;;shU<)iF@L}*#Oc57wMaN81Sbwl+LlQ*o2UxOkvDh=CsqI~^T0aWQWq|U1AJlTB zW`M+qD&3vV@mF=*3w@(Q3+6{<^#Dd26d%12pYKP6+98`?2~OW)M4KUa@1ye8g{6V9 z12S(htlrbt1#b^q+jQRZ;+o;SWEX6#vzWksAD7fVV1%(G-t2@JUJUyY9@pxCz}8SZ zc;@?d1g7>(R*6|nc-cRvfW5T8|9)~c3nGV~^wLQ6VkKifRmFvs``SIS9F~g#>_9)6 zwio|G9ZS;Avg=>|1#&)39tHBG2%^DsQXQOR6>-v^gdnygcts0DyHfn_X9EVrwGkVLW~e>U<4QKgfJ5@4D9M6n^V`e6@@YvwVO zo%Ttnx@$Flu9(#lPJRdL8u;dc}AnGX~Bi8Q@?Yb1$wX6s!q%dY?(csiDW+9X3mX~sqI~n zbr%(Ci69;eqEjYz6F6>I%bGet^vH|TWg$^K9}cEI38=sNY5{70$8{)IgFX}ACN6Xbhg`BA9{SC(tba^zxV5i7bKn(jQggJ7ibcG?Q`k=9>X%1|h1hV} z9X&#(Tk7IGf>a3_`6mXVXbiw=H@JvX<(Dn$&$`?RLuk}isaJ-Ls{-W(hNm!rhW7E6 zbe1%(Br~T2lz-0y*k)z$Q=bm_@l7m?31%x;KiIUerYZhSFchzk?m%SJa0$|F#KsJs z6HBmQ{FLfFiT36+XpuVkvW%O#{7>>?xsJ<-+~YbBOW|dMxv!&=2h4vO-jc6HaSaY| zBcFCor+*KxQ>JqS*)eJIhWfbk>4R%(YtB{qWG9P1-r7y6@D`qDkDp6XU!0<_l*%GK&h8NEmeXuh(ID28i3+@wSbwbF(t~@+9bTPaEr>O zD@N%tdnqcYrZNylEwEhvG|2CaD_qXe%+Y))vff~};&B6LC0AtmTcem{_{D^DBSmC6 zQMnzaQL~+gqdCv{3RRf&)F}?Dx3r#I83wi8+vFD$y;6(I(cD&Mbx~YN9=W)06#+h; zu?3e1kLn}{V_H>O-<$32xsCX!DXx;_=v2|`?JN$&)qL5Voj#qFG?T7SG(Xy)6&tMN z|4`BYtu`ATE~R1!CQd0icr2!r(RqY8Kk6=Rlsca3B(VA(AyfMiRBdb4L!iRvG3bEU zwA6NmZG|sQ;pt27MiiamDs?m{QQ-K;$$S0dWRk8%l+f2}huD_a0jwB%(Ux1C?oC+s zEC)@}u-fP{7^%ZYER8a%-+hpm@^N3f zJRX!ha-|BMk=*)pVqsRqXm07^`mm*_ar(*qbJd$!fbBhoC1d2W$RU$iQyLHr*8{SNCEjj@hTQdX2bOs=% z0nl(yW~8EBdzfNAeF50Tg{_Ls$~58%aG;-d41e_WHR+i*^Swsq9V2`3OvN-Z+ya`m z<5AFi^q6Hng8n4kv2UGs+qGy7u1ND?eZHct+4}WQIilOju~{!S7Ijk;9?~!H z6;(_Q;H7M?|0^xFsZ{NT$I5jevJw+iRQ6@|Kz4uL6f4rrNZTd_C6VYHe+rZY_A#9j zg;$-hvTLg2HEH+)q8HBQNQu<_h=V--2LdS~mWVE@qTpH^vZqwHoi&6qAPdyx1pA-~kkXILCWdzQZ&?AP>CCfOFr2HGW@^~X zkqg$;wsx>#WdG0&(z5&V4lt%7Dog^ylM*D4MT|b6Gx6V~IR6v>_>#$|FI|4D5mnXZ(Vx`g$hK2w1p5e>qA2K}@D8eu3f$Jz^ph z?DF5M#T2Vhu!Dj~rwFrILPHx<&Q@VP^0&#|KA?UZF4C*TPynrANpCj>;dUS{@cuiZ zqX1+frjgSH$R*+=dIDgHT9`vaZw|Hdv|*DGcFSJ-#0x|=thkK<41Vr_6eBOK2epPzmHg_g9<|-fqp;5v^LpmS}?SVn@O~bVSmw&(SIGhYIW;4dT6w1t@~GG$yM#gP z7<%**q%hJO>5puOJCdlJ=f$IJ39`x9iRLur$Ik{WrTj=SL=s`pQ~L)LDFc`mMb*5A z@+L+r>zggaN!{yq#VN5`o6(l)b<(lNWuHo;RBcTwhN+iz7)(KRHC)`dKmoA^$u`x+ zpuSW;51GICwN3Xw{Hn2zOMttETK#{;SQP7)l|XJ=LEijNdjD*ZAB~2`g!B^Nbqo>? z;t#~;G-70ssaR+f;{4za$dYSAKYB3WBlL4MJKCzl3vWY#AO5@>D!N3l@Dt$+vxbL+ z$AoU&*hkB~hjyR_5n3c?*x);n-JT>&)S)tvu1W;gvKIxA1#BZC!Mt!{k_KEj)C>m> z&kDCA%YJ}4g=vvJsiTG(P{c+c91(1Y^BP&u(kF*3FrFh-|2Yr}wh%@5zpz*9Yz-W( zvC0z>8qr){A67eb#|>Zt@JWKO7C~C`8$0>-_k~91WGMT+(LHt67fo{L--tZeYf?GV z;YHa(#WsPpuix=xs#u)6V2d%YTRol0m4xAbRTxyWX81@59Nn(y>DOe!d*$vFcHuIPxTI} zoJv#gQkN2eH%G>lPZe@6XJFQRFcHLE+I1)j!#kD#`V>R~^aD@^?SGA{_dn&>{~!Kg z;ohzH)L`}Pw_fUCG*HdbN3Sdk#u2W6VW95ZKs> z8^nWHmcSQO`sth(X8TajQ;bMwdEldB)+Edyfr6RnvJYMY$?$KWkssv*xkV}*^1sW1 zKErI`tQHOp+r)k>mRy(M=(CJJH3If@`E-v-gE-UMBT&sU=I3Lvp0|b3n8oNge=~ z!Ua<3kCOM#+u^+R-asMVO{PwndSt9VEU&URRAUC|rA*`MKM{gDyr0Y=%VwW^)kY^_ zW(0QSdn2&G5?UEE``iKvAl2>l{>TmhcKK^Sk`uYXk z4~$g(x{CI3Pp&8jnS$#`!f1q-sU~Aaz`@GZbR(1Q-^?HkUwj-hCS!>gOiW>PcRkT; z2t$$_^}&ZNazwi~;%^p%%%pQv`T(hzCu%qR1R@bC;S0{NEO>i2;s()R{D0H}%;eP% zDY#mf5?1nN-?1`YSGNIwnB@c|bn_0Jk#N9C3rrHGsQkeg--bU_iP0c54ra$hKW01& zr9#ItBl8MQMx(^R&WvswoomYXH|b`G4TW2iXMd3Sf#jQ0SP_3-*=^eT=rC9_0fyb% zD=CO!7#(Z{7PH)9#!2au9tB@yV!#$4%nmIpj*s z=qA&BrJu{pz-2@2+zrH~8d(tsn=6RxOGO-_VwbRm&9Aci5z+y9!3^mIgI~E_D9sc0 zxks&;BX7;e6^Yef<3v*X_3va~GP;$4NtuY;M}fW@ios&ynQgZ?;XNR7lGcyKjX4Vk z0*KSb`oYg3y-7UTYtvkf751#**dHy_z-WUvVA@R;X&d8{fJJbGKUr>tMSOD>tu3r5 zjaW2noIyoZw0Hz$>COzO;-ypvBCRY!OO4IMpgWOWZ^~l-`aA+~HpbUdFua{Wdcfv*3Gr0$FI|=OYrZN&(rfeJiW~# z-o`yXQIk^jC($QDM;Dyo&DU3P&pc$SZ-;0JOp>RqNwvQw80u>=~AOK<+AyU9C_ zbdC`H2EsaAvD9IVhGL6XG17QXwBuTQpvDuFmfs}hNjmZ63XE}b+fdWQ^l(14ZWn}_mV=ZvF#%`6 zHcoi&MWxU&3zvbp^r)nL4BpJlB{qmRyYBpe6M+&yg`n+acq-H6RykVSeS9^kK6Pqw zq;l7GAQ!<=3Bd!HTd|b{)5P45!T%^&`cIDXf0nfW3%upOEPVc_`UMjmAz8IykOZ32 zzTl0O71;Ewy}tqygxqg*^OnI=p2}4sq!rQ^L62Opd?yITn!#ZBeT1?- zP)%3OJVm|9?h2)+_#U(AtCox|6JlRkcT1(tYl9xd-FEkWD}lIOrcph^;T`R(>{ zND6z7YG8_OimQZZ=sTJX*q+MrqUL5OyExyz5JK)wQEW1h2ioP^X|!u7s-o!ZMjPxi z7;5T`_Jn1DF@-OV5_sNbJ79+Q?{?gmmp}Vz2CZIFvCfjj+qfCvv7lhWODC&n33G0? zJk(5&M}ja3**{=!K#EYe41yVHkLMO#KokKg?kIl^SzsDOjR+-Rv-xg|GD@^;*pXxe z8QvJ$KxxY7qzQZ=Wu`AX(1oQrQsS)&iKQ0Y-Oh9vJbd)+_k&ktsk z>o!OD!v=GGVOKz6UjH>6iFtdxu z3pN;g&@rL>Ixl)e53}EZOn0>Ju7nP%A$RP;cr@+zZTyyB`7M*mqt#tO_;q#%oKL{% zPsqxOJk0AHJhGpb#7wH7Q>r@hJ0x5gvqM!W*a5npt_UiUaPt^R@%yWhR_7nlWxQk(orfn)}#BhYBoq$`X zlLh8g8@qJ;)JJOJ#vGn@$WIkpasDx>*|xK03pmXSW_%gg_3cFgE`QDoLiP4{*3won zPuA;sR$#kYSVR-fDM=Av+EJb3aJ)I5m`wE?mDMi43aXzQs&$ zni$z*>St%R%Ue=Ha%7@VqNiyL%5WQTMnA8yL#51+T$_z2WBk`1vVxHwx2{_Fr z4XPZzYL`2|GDc5bT>}srQpm$W`(u~QS>M_6x+cYR z1u4;;iZ%WOgARwNyZ61*j}HeWJULCxWJ2dLcdB5|EdYPV(L`Zv1h&CRHF-tvX8_$${rAhB8 zXD?;M(BLp%#PLm1@_wLIPtS&|Yr93KcnGOZ2R7x|U3Zl3MptR^UBzozFn3y56c=1q zEV3z}aVvE_@NrVu8RvL_%;)9|Ng|IX(uE*812r%wzH%{m=&h6i^)=zoor~Xc4oi0} z+o@Pt3+fpm6fj#Kc&-Y}^k`D<`CX7_&3uy4{a>a%Lj!IZhZ&@UC3>t>Oo8ux+b{zhQRD1DLFcW_6Rc{Z`5B2;> zmfjAqvf3ASNI1N`G;=k+#Vl9v@|3aXLu5=FW$Q~_6dS&5i;@zGgrmo+5Lf3=#J9%J zt0u(+MFx~gk;}4u>Sp{OIKZf2!y^FjJGejftu#MO06xjsk>lIxSqcAH)iE>910|*i z$6nk2Rd>p~YDC#gshw3Gww7BEjmPECk35lo`MV>sVd8G?huJV%i zgEeRo$El2C7qx|GMs_wYQZ8PIePAa&n**u+P`&5eGk;RI1j^;-LoAW?4r z6SE}!ENeRhiy%=e?b?l8z5~m%3CFxrK9NQ4{%6`DXfFPBlxD4$(~);j&lVp8!)?2) z&@s~_id`+QpKE-cZ7d6CXkNZBUtt_4_m5r4q)|i9YnecOfycFcqDLoR_?&a5FPwEW zB%ew2^QR@bO^qDmgwFiiuqeJu6cd*EcWUxY|HVt~kU+}*shZo17LPOz*Tj>hWqsO% z%T(ecAxSJ!1D?e!qdFc~rGDFnG`j~`GO&}KrD6*NXJChSJ3cnwE(DX!Of~Iqb@(t5vNzPY2)JmAn~L{sX)&pQabG-LqY#F23H_L2FBnS9n zP8Fk^{f3cIyJYF_@#fnIDp+edYt4Ih-810|s9oLY&rDgunQlwjoJ%FGiD-+peOqh! z7+VHy@X-*}Tdu)MHR-eD8NBHIQ$ok{hPvJM$uBC%&r?xVe@;u?;ZN5e|vV ziK@@Gn2Z}v;wm)V#u;-^bKeq0T91AE6?xe3l&IyHcFsp>S6TE8l_06;6GFK~b_khS z%RHb>+lW)e45K1q=R<*@<$LLJTppK#zw*e{+N8%AO=mE#paagxcU=Yb0=sA(g4ng8 zVT)DNS)aN%%nR%3K zr1aOhy@&*noC46_AuVX?3B2XI$n^q4P$o&Iy2Dsw{q zD?MHDVx(Xf?9pZQGaY3s53<$;CK~{E+3o-{baciIdu;ttIHCHY!<1&w^`h%;iCja6dVY{3moz13CQ-v8qhj%XY?yT>Kek%Nugu% z~k0X&F}^bDahz}a9_7TI^l zm2C8k_o?3uQe{H8=^h-!vQB$p2h0kNJdf7JpwfEHt-h9PBII_sfZay@6whW`FVdDB zTWc0zXR?cb~y#BF|NL~nDn z;XJ?cHWkcia7k$~Y;7=8kt=^Ih!@d!L*iN;Z0}0;YTTS%Lque@ZNPPqX~2A*yYh}R z>t0_7Or+A~F(R38zeVK(%5U*c^{9a-F94yW2qUe{IAm**bf?Ro`_o!sknSZDKCxh7 z!ZCDKf2sNHAc?R2g>~tJBB5YD7G)vjGL$crSj3STj+?_T_DFDusw|p zG~_bwVf4-?VfrE&SNr{zzgpPsH_TP@4dTa}lv&Y`QEAzpS67s`7wu-rFOJ2g-j+)8 zH|IySef{;P^@a=ZRivO^OFq8kmE)jl?92?5!LcTqPx%{|N>Zos@6q{&HK!@$IIN3$ z9S{5_tYhfL_?7OQa3hPIb_?MEFEbQFRv5C!*gD+-Z zhr5&&B@W7r1NbSw(Y5sD({SyZ7mcDVWAA<*taMd7?WGGK;zQ^a!7+nwsN5xjN_SZr z?L9e9&Y}Wl4x4~{}@_0}8 z5D~T%jd0E*o7`_WdHnJ+qU;{qwsum_L=~h(=1F|Wq%B|Rr{U>lwf^g~D5p8^z`?V9 z+33}ps4nN%d9K*LXWDI73`uQZ?Th0V*pf=BcugwO+0e2o$k?pOyohwc#VM5q0cS9M z&^f{8sG!g0c=*d>{0=P=$_TM+#Xe{xR(Iq*-Xzk5bYW`HTPDaU>WCVqbJpPDTM4mu=)*Y`4eI`Icb!j-WU7fe&~q|^tTKY)w*(n zO7pcM5oz{C*5_jYvNy zQ->D2zYy3vn^KzLCTnvb_mod>y4hdDuBEZ`$Fvo3D~Q|s>3P`j#6*G{fp*T+tUK%Z zTE4N|bKpPiGI?7r&=iu-e7iNrD2iL-$&!njy?ahMR0|oQoC|Pm+}aGI?);Upbbh;` z@yRpFeCu>&g)5sD`8kDp!@QywNuZIRlpJJSI6sU}!P?+bbyw%S13x&QZF7{kNS|CE zpO!k)n(KE4?~U*IS);|Co*zQ5J$1N%8S?YIw#6W?f6q4Mu^kc{zJOxr-7U;a*HY)luu34jxw8P_ zxkiSiW>WqvU|vs*_~c~Czv@Xyb0yvdlLh_z>vaDb)$M;J`~8bsGJW`^EdTXG+P-I< zM{ihbryDgycv8sP1$F##4H|-i#fTXgmJ&nVvHnZ{<~&=~5U5^G8>Ndkk+hxb_!`$3<=2_zmk1lTh5Zh7(Cun()vy zhAAf|%=xfp!fvx?y6SVik{f-hfcMyHWq21AdBnw5an{!}&oC|Jk7wOnc9H77WpZt`f}g%9nFlT#`1DcjYT``Z^9 z7tDkn{e~X=lyHQIKG_ZUhOf$fv1c{actgODN-G35Ubci;(cD;Q^45=NZ&ExyjAsGc zUBBGqQ{I!d{3g^Qpp(goug~t_C;gQ{H*=bIK~KTOS#-9~F>{7TJ-%}{2pl>InHA|D z#F7<2ao6Zh@`4xmA#DOSZOU)hD{Xh0zLVkylSW>APNhs!WJq0n2)ulW>?C)Xv|U;V zT>2n&SN(X0c=4RdCfHk^$gh(Wdf3lHuX?87ckWbDL8(vT%~i_R@z72%r9V6q@s zTT`Hk-fu22%u5Bs55GrtYN(xWoxeERXt0UHYhchai!Kwxh|UmnM?q^lZyGON+84AJ z%>QS7+17?XmoT9m^v_CoVP!wQTsvP+Kr@N2aP)<+@Gn37vNVst{gN79?cGFD( z=Xz?ECkR<`#`&|RmvgX-TJ0BgC`NO^d#agP!He%~-j~a+4LP{0<{oOiz%qvS5zxn@ zhDWiUL1AaDXTd4_@4;p~m|gu!*~#HWV~$qL74O`XK2 zj`I(QBdx$j7D?@kx(?q}(^fl==@X)l%1^ApMob@Xw~y1&daY&>Mc^xjL?#Hy0x%-N z!kv%QKuPk$hn_%*Yso{4ngR!K9ar9OkLLXci*3Of=LkIjLcxqER1y3$G6EouhSdyh zgE@fjt*-85Q-ns&sRqU8$1n2M-}!Rj;p*IA$R(=RDb4mlaInfr*7lF%zq%Q+?lacG z1e#G)POE*1*?!CKgD_oOK1d_E$i9%?qB@!@xLkI|Kj}kPtp8; z(~|dXoumZ5_adLdzP@32!@e_F;e5JMXU&*S*r(yGFY`V4<<@+&TvsIJ=i1t&T$Mnd z^x<~5X~}iGW>}7{vTlgG?C_uFwHskg0rwu!*Eh{-YK^YWNK%1YiMX9q(N28KPgNM$qT{76<+Hm>*Vo?d8;2rd&O_M>x4$CgY(l{*0msPdE~*u!MI6=TZZow?S>}*{s7+(S zpm=lkj%Q0QK8MK$qGIJ1wBtEd(q-LQH}XPNdpQH$>X5gb9esG^7T)kmIS&Q7&UC-0 z%V>&sCVn`bJ^c$m#&kJfPB1amDhx~|#8J;;S>r_{-hw7z*di+$PRE*u>N+{i{+tz1 z7fif4{*p~;k+5&Q_6mE}z9C|FPByHD3z|MXE7H$uJQ`9uUskYN{ru17!inXI#wyVUyZ8y}2YRA=79M~Poy6y>%J^-eOCwMk#U3e(a)vAqzsz+MeJ zuVPbtBh-F%BK~8wH_gb}dRA0E*YApSzv)`c>j(P}o48qz_Sn#c!{O(%uQo>tY)*E{ zFb6-?sJ?%2!Csx)oR5l3H-`j=~u$DT0v0| z0S^!9h$$g>;O0b$%XeY-+ixq#CUh+rPRz@`Ta~rmR{m~2`*-{2Cv($X2KO5`U3k=K zNgVngYTrGL-A&F=7!1UburSxw+@cA|+sM#Lew>~yb)#cm%*Cix&>%rs4EZ7rNXvgq6vA#>+;Gm|tIpg8c z(WA$Y{ZB!gDq*f#>r|o_6E|B9w?#%MTNh`2e0-MiD;|NL!*^X#)R#6EW@Zr|K2W&f zw~4;nM3gOJre^mYO?bUtzrM7|Q&eF9fj}^TjGX+Dsp;zL>-4ERjn{FrHOGOviSi0H z!;YxghG90?u-avda}t`*(XsdGpPZQL&7u46@@P=6ZFO`=2L=a;gRx=_Yaw-2xv{>BflSnDhY}A5A3id%4lBJyotdR(Zqx+zuteTlqx0*+nSRfCut76L>VZ5n{ls%)yVp92g5kyPx;u!siHaIF(0 z0uEk4Szni@OZifTd|TF%$k3y?n_v2)bXc^NkQ8r43Plqn|MiUt#GsdQKNEe8#P5eE z^ACk2ulBIeQn9{hlvW)lWCjgAJz=ujT?Y-G2XUP5S682znwu>r;$4o}y~y#G_kZ;JZq@XqDEpd#m}ciIVsT_d#45HygRyu1gi$%f1C1#{K$VPs`xRsF1= zw%o3r^L1rz7>m?%C}pl7KR>_a*_pRQ*6+r(RBQY1Ry;bipE^HFyk6JKlXJg!k5F1) zQ&*Qf+rW9zpR)^Axidn^5y|W)_uHe+ar~=Uu+N%+Ub+NE`R}cU`1kKM2ENg2Kc~VC zk4+so*7)pMNl(aht{fnipxL7`L`YD8JsQ~Za2u~zcl$M5T}8~xEkSkD zAExV^9go(3S6hn02;Vd}|CyWnaJCRgjo-9)&dw+Tz$1%{*wqt{x@r8b+wvOgZ)I)$ zXW`EfLm(rcHjMCUDMbxAQlN=JhEYT2z2(bv)bBr{p`k&}e?9)#NvMX=h}?ZW)xXj4 zjD;~K!t?k@R6&7-O>OR7yy^wX*4CElq(Y8C%i(~Cyw@rTz|GAK;OC2Di0aw?K=s|W{$J@P%cSH$qPMn&QOd~{z-5>evC%OR&PDNXNjD>SvXE2RBPrkuF}45ZOta@ zIsHNNJWAr01MQ~=_s{pA^waVshaVn#t?mu8NfI39f7wD&)qcRIYqu*XFMcqWt$XTH z&C2)ue4gn3Wd|st{-5H`JDlzJ?fakDTkO3`(bnEIQ(LP=OVLV;T2&)T?GbwxrC(I3 z(Nd*Vqb;#wmZC+6y+UgfYQ%`RFTeZv{c}J6JbygD=XN+8;z*9jmFqgs_xtrelOQZE z21P$C-(4LcXv`oarX!Myg{7q#LGc17cz?M=r|a*ZzUpJ037_MU%I^2!yBBi4y677k zo{^DZs*w_PxK6f#C4}2Z-?X&0DwvW%U{yclz~S6z4xKxZ5nlTeWCD?LxBJbt&P!Dx z1k28{3bRLgxvJjMxXrRa!?*K_bLHf#M9K?Qd$e@nz^+Vo#iC7hUu=2OdCe*!Y;CNu zTVlK~OSWTxbmVID!Hva#V>0OGfZoU>&7;ZMQQ{Yu0{r_>kF#F3fqiJg6*IH$N@U~U zB&qe3Rc9&#yV_ebk)0jQ>I~Hh>`k|{yXyI3CkW!LSjnWC(nuW zj~dAj_CnXlnQZ8Ub##OPfT3A+momhF^y0Yv$s@7@hb|}(QVIJ&%QroPMi>d-x_!%M^WOY#_24QK*9!{JWns1{P>a6#fhjVbm)=h`fOJ9}Fk#iucBP|*~s)%knp}ckL z_Tk!l4gOSZtby8~(|o#YZg?pfnFlO7PPCO5Jyz>-Z(`4Ly4GaMOO@%j03tZ}&{m+O zc>ARpwD2u|)i)X(@y^emgR!L3PKykfie+-8UK3r*(Y&t!2*AB3;V&Y<%)Z5i|Nuq`+=wIslUyv@fJl1!7&Wagp z8}Xi=5h3Cxb=8=sT^pBs__8V9zHUPPxOX{6CqTQBxbjcc#JXM!)bs{-f5ugn-IBdb zhNGmbq^GB6iNNSpZ3D_&2-C@~BJ+>+8M1LK5Hj!Y-Xbn*!s}991s^3P zWmx4v?A%6m4!uQz)aZ4(MdF={pWua!5xQPlaM(t)BfBWOKVg`J~lR{?Y(x< zcR^T8%&Diq;pdV?LP~=E)nAD-a#FIg-9s;py!k-X)E_amKFd=59<|_@UW-4J(7kw8u{|S7vMmE^xyi+!` z|HUjks;o>BLR`K~*Wz=eIx94LdedRN^^=?&wH;zCJl&bc+7w$n@Mz3-OwNy#C20gvm}JPg?BrZB8>XdW zi2CZX%5&YwaPGl2Htx-h*TKxNv2}mq-?6)nxOeo`z`{KJoozqYnV6&K&BQ5VmoW35 zr1ib>^7c1I2;t_ol!&BegKKDW$~F^OIc05A-sanmV!d_7$H(n!C(;#47Dd~x-?-6i zl+@(QQ4{qgF|+9EPQL3B%D;8scYNZ!gd;FJ+H8q8D>$4>oO3c1Vr9|vTe)nSTKM9j zBiIW)gSp=))-m6`d#7^wax2@;1TRprUm3tVxp}=?WDM+mQa3%{D={MknO+}w&!e|` zk+q2TJiEbiz+4?6fbKBln|S8^)>ZJ@P7x|}f*LhKp8;Z#hx9ukI1Bmz)rJ3YWhG6I zv6`-<>}WBQc0TW>wpd+;)<5oLI^@?FAY?mu_ZrW)w?6hB?S34&lf1X*f9fotU=lYC z3%Q)>a>K^9k)fE0E)ppKbgI1jPsvxWUZF%-PLxJbwc*FXO?%@H%F4>neSg|r3&P@d zcKlA;HZ>D}>l0C<%~o<|VFiT@`eZe-`aDC5g0Q`30RgQ}jz@_RydI;s>bwNp-QB?u z3>abu#?NOlKfv*XbUfM^APclYYpgy$jKMmoc;Dks8vn&80S$j)EiHkep&>a2l8M(G z&1}uq-#*!UT}d3%??)<;$&L7y=k#%+Py>IUrl1VP91U1LGT}2|6=DDS$qk)xgcANg zUii=6+fx6tdKwu4!8Gb;&z=F%^P}{tp0ROHI$=nOQI`g&XK3(|K!#YG(_FbkDkOt} z-r8YUL2uO4yGO2cHM(+jdi4>K5N<{Tv$CoVJ$MM_l0No)>oxShsRH~v8n3e%=9atQ zTQF_DGi_#N#T|#+4$LiWlVhl)Nrjel0eBiEF1rx->aYeVl$;>)K=Ri3?aki4_k~r3 z@HcPX>@Nhg&;r16H$AO6gmA{!S{$+m@WY&)vZSO0obgps3lpen+(N2?eOc0aett?D z&4fGkb}~}fh>O}JLU&G{5|4F%J(+jQmiYCI8>j&-LaR%yj{%AT!6gPw$$Y5$cn{oi z6pTEA-BW!SP_eaf7$Co0{w#3)>O+5!rgd8#hXIZzwO7 z|M$HDyeBL$Q%*m$t!11pM$0OOClR+UTx*!$vOp91BJrXoS|hupkPNYd$!u<@VUPkk z-j7K92A6=z{vtHPr&Yu7H^=#6rlmhg1z{Jb9wyJ<6`J`@zvHn>88g6Hphi}hY`I!} zGjzW#zO1s+5FG&-8a&qZ@Q@mx7~d)wIEl{6;uJf3*1@UY7(6LZBsCp@4_g~=rk?@RPgQFz&Y){1q^260qu@@qhE7gmWMpK*eF{<0(emNMz#fG< zzK&S2rdn;kbLLhYP@yE!_xum(U{^^MKgtxkeXizx5!T!&>%XOAkGdV9o^xp-gxDOV=v!no2SNh>Umc|(| zr3>OupFTwu!O2k=h8oI7_8g+aRE z-Hg8f7L#i9=IM7)1mA`!+>wQa!ZuQz{rMVP)z#H@s19~=6i*<&na~um|MJx<3jam{ zb9Cvwt7T>7kSW5_i5=VwD#VoV7#J8#+r!Bb9S%nLR~8UDQs*M~?CTQ+NNLR_NDS)T zqE}t(gzUtRj@7o7Tbm0`m~ls#lhmtBf6JI9Wrb-iROgDlBiHlgWP2+Py>A?tc2_2I{DIf`x}C zv8qbWIDK$zI&pH+&SR{JlA1|yX`B04%UgsZ703rbsi0P{xmW}Q)_wUpCcf%vXFKIJ$%qB0=p9wtpD`R#tcOUl<6VpA<^Y`zVYe6Cq)IK1N z3V$Dfv1?!UOZxOlWoUF%GKnr(|FZalPHFXo{tGCnQY?ozjUxkA9(JY|86j#(TW%?A11UZ!pT%j@Xmo8D;ryL zWZ+*{Gp79oon2CrL0i-60xnUafLqg&Rqot<){N^J^^-i%VY~kzl|45VP#y5%0Y2ZK zWfnOa0Wy&AxpTDJiv#%W1uosfsw%jZl~tJ0`I;!o5oyH3hkpyr20T>e0YaS(c7&Gl z+|Ucdh2`ahISVbh&eqJk2L}f>2cwst3P?w*m9UdIBkYvt&qIhq#$_5t#&zEaFc6;#h0YAO-a)innCF>bc}Ea{CdXqSsH%^()@ibo!j^b>fE2c7`vsl zwKdGU@?9Y{^#XFk25x{se^prD>(Eh!x&wl4kKa0Mk`FV48X^hPLCgRrb<~ggv^Zxw zb?SEqE>ay%qzyk3IG{X85MY});j_z-TfgvQbNIG5BX6WhrnrM6vGY`fprHokIY)mH;Zu)r-xkaChi>f;*bwpKy5E#hk`8W}e-0A~Yx$OlA$;UgA~j%PrZ z16wjZJDVCgG9Uv18-gY6zJHRJmjcwg=Hb#ywa|T3fyS7Jisp8|qOqxIOzHi=4eNoR z_@@{Q27r~BA=jRFjYGIK#KJez0(^H@7h`q2u(01yZG~`tjZ0b@zMcP=8bJf=kehwj z2*v@XT!j8&H29f9SD(*Bjd=*7+BbfWJel&s6AaGBAVNYk$}1|WT?bzD9q!sI+g96? z$cXrv6RxCU`{Tpi{fz+Z1it2EUg#v@!v`fxD=S=StZI=k7J|~{&cP}o>UaS`@(mDw z5xnxIh#b|$VQmi#mYbJX9H13gtj^s0JPRC-PEBQcnw511Y?;&07_g5|-ZQDM!%6Iw zFG7?puNoXaTJ9Oo?+Vy4kPj1X^8Q`x&l~WM7%iKGslKbL1lQqM3+~-b%@g8wj)F5C z_=k%cEZ20ZghB`#u~L0%*ZnC*?7|oYiKJ)<-4LhV+1>rJs0apN0{G@krexOIf$Qq& zR^yHt%ig`~A|7l5raU`5SvBUdw6emh28q|wCM|dBKPi^9X?9okYW{Omt)1V^!vl~n zDv+o-&{qW!z5-VRJ;ySZ8+Fa$r9QVzhJglVS8+G0brvy7<{38q+v_W1-2xS4LzHqo z-iHmNe>5QHp6au6aQMXLt)phVx_6d;$cOBC_yq)XI4L+x@vX{%OOi=Z!wWaGdRW2b< z;?j-;tUFa8Ib@@S8s~s3D=*gt6v(S_UFEb3)|}~ZQV{`&uSQCbEbZ5e3lR|!uS!Zz z{{o`0n6S>-4t&{?WYgZ^gPfpW{ow?BZEelK!NvUHrAuV|B20il`J8?6dI&)(3bnMh zE(mEfB@z;7X1v|eA`JY}I!Vkbp{P*F046h2?R)~3qML?# z?sJ!q!3*lESFZ-n9x?Ca+h~zoMka4zUxzdzz3TI1j2kHEr8es|r!gGX*%bqu5ra^k zU4%)N92f*yYG49KX0JZ%lagO}j;VNov+NgF?Q-|~o^7XUH!XrBx+gSwQlb@Lk^$#s z?foZE&@DIaTjjS)*}LYV8`G=t>M_B$;$e@F-F>py6o58#GsFstXpweNx>4yW8jMB{ zQXL1rX`$M`#6C=1o*I17PtH8vFabe09FB&8j{mPu3|x;2A@~=TIv_?bBKKfes{e%+ z-%GMf1i*zMZml^Y)I1&vhP%IBp*8)&S+5n0WCRvf;P@;xC+^2A~%Jvd|b<3{Fiw z25bqxo>$Ix?bq_LkznZNrI`45U+EXim#r!HT<`{;vlyJ5cI@2C-Km<*Jg-V`VDaH= zUsgi;HN~ZwQH1*T?^88Ql1x#D7jJ3W!-6CWh0zX3f8mU@D`2toox{C?Z9oApHB{kzPK{PmmET zEG(SX_mmW#pzu$I(J3IIqdO&Ssl;zjCgu&V`7>#HF`vJ10dR@Pl@<3;F!2P8Mo>^t zj=J-Cmw^|ICK*iyybSD=UE-nw87g@5M*->QVhETj*jJjrfgkyjnK|_HXAC&sWerKdTmV!= z=WNtV#jvZFrm3`qeW3nv=^*}Z*j>Bwq~oA4*USL0z}vg_@fAyCPp-Wk@f{lwau+Nv zEQD^nzV_!YDN3MUCxM!@8o7O#!(WG_8h<`c9V*KFsJ{B$OV7b>L3u}t8sD0OC&+9` zs#yiOK@4aPt&Y_UYWFY1AhxR)M1&$hr5f~mOrHxYOdd)_Y8*aB7fbGcL(a5KUi3Y> zHg_MrF;p!PvN_Z1i$V5GJx@L?4aVaI2TP(0s8Kwl%@0(8SWADJ_gm3IvQJ^-&ciyw z$hEf`kuqEgb*}B3C_(VHkZnk`SsknH>{l!{5nFk10aSkK{4rGq@{b=s2Cgi> zu5$UB`y+gshlhvQ4BsFdG{1cLa{7}eLyPkt0VcnE<;u}yOKmM106N-2ljma4?qy|~ zw`j8`V#AL1M1+M42i|YIAih!0pUU4KW7Fx#GOL?yB!qH-Eb%l*Aex42-S+t!dl~}$ z{%yZL{&AnUJrL%ycN8++Pzi=uzK0y^khYjp1T=;hgFxv4@!El=EU27$d3oBdjkF?z z;JF?izS&~lBKAFYOnfNTv_-0qTf<$dy`w|qidHm2kNdQzfi+=XKE;gxk1Wp;5hp~& zvj7$+7Ni3Bk*{CBj()h$#>EgsdnXS6=a?|VCDGT{H~$dV6@rs#l^YowO9X5JfA@%I z4Nu0p2)X6h);Q4$hV57Y2@N5Df99f-hq5ytRAQ(|Bogp|Cx;{0dPGlhCc0yg%}f*4 zIK>16;#RkisIoE#WR65WMmGBUzyS2jI|eVO(+><(19J7NOGlZ-O9(n5;JZo3M;L$- zxxc*#THqP=Pyy?g$R=?{P7a=1ipw<9#*-OLKrmPb=jB~FZopuk(Z@Eun%9G!X<+c-`rm<; z|1q1VE@Wy)(UJDcy$cM)rJcJ`It${*QwC>o_pZ)T*r}n$p%7f^OahuQAe`^10d?1f zor}x2NCEPD15_4}7N&N}+vkB6a=1v#+xTz z$_oR})2_V(9}FVf)qs5;eHwXrj>kOrZsd`FBG0WAtmI_-d8qeg*_(<>x}jtM!_E4s z!(bp|e%aK-4-^o%Kgsu!LJFFGIIsan&Wb7NJ8kr{>(cnFjmm?uK4Ab~ws6!!Nr0zY zI4wFQ?^XH_P5+YFTN@L-NgSc`d9|MaFNY&HWU8H4Ig856;kpS?QDoIix0Cf3HcU^i zI_Xt6TI-rtA2D|92qNg>myLRs!bNRo`FFh5L_u3XMepr6_M;XT~nDS_eym4`XzVw^M1&9F_W-523>@eRVe-i-eFjJ+%{N@y`$Q8Fa=RD})F#zyy42by5lP)&sEv)KE!a*n_w;U=bBMZ^c)) z!muwch?$TDQ$vR)0a=hF+Gz!Ihg0H?3}*#poLs0OeKTyUrQYco%pO|${)~Y&Yxuhe2_-$E6Lu(ca4x#4dr0)^jfobV24~G9fwza^9-9VA_~YgIeJAg08qaimF~F- zO1i|-@3VHBwBj)52)r8pQXVRN5Ms9s$a(`iJAT8*yp(klj3N~7U(VJx5{f}<#cu3j7#X1>qT#P!O#%!GfuW3!e5}nB$%{J(DQO$ zu*yi6y9jH$)V8#;Mh5L49fX+mC#I#vi*~{ww~ND3b90WTBNX!TEH{%mPKTW8=p!Q| zfl%S#;GprR5S1)*U7Z;ojw|jkFitQ-i}plTR?3tKa) { let ndc = loc * 2.0f - 1.0f; var ray = createCameraRay(ndc); - // var result = vec3(0.0); - - // for (var i: i32 = 0; i < 1; i++){ - // var hit = trace(ray); - // result += ray.energy * shade(&ray, hit); - // if !any(ray.energy != vec3(0.0)) - // { - // break; - // } - // } let hit_data = trace(ray); var final_color = hit_data.color; - // Simple fog/distance visualization - let distance_factor = clamp(hit_data.distance / 50.0, 0.0, 1.0); - final_color = mix(final_color * (f32(hit_data.steps)/ 100.0), vec3(0.1), distance_factor); // Fog: mix object color with dark gray + let step_factor = f32(hit_data.steps)/100.0; + final_color = final_color * step_factor; - let color = vec4(final_color, 1.0); + + var color = vec4(final_color, 1.0); + if hit_data.distance == 100.0 { + color = config.sky_color; + // color = textureSampleLevel(skybox_texture, skybox_sampler, vec3(0.0, 0.0, 1.0), 0, 0u); + } let location = vec2(i32(invocation_id.x), i32(invocation_id.y)); textureStore(output, location, color); @@ -139,25 +133,6 @@ struct Ray { energy: vec3, } - -struct RayHit { - distance: f32, - position: vec3, - normal: vec3, - albedo: vec3, - specular: vec3 -} - -fn createRayHit() -> RayHit { - var hit: RayHit; - hit.position = vec3(0.0, 0.0, 0.0); - hit.distance = -999999999.0f; - hit.normal = vec3(0.0, 0.0, 0.0); - hit.albedo = vec3(0.0, 0.0, 0.0); - hit.specular = vec3(0.0, 0.0, 0.0); - return hit; -} - fn createRay(origin: vec3, direction: vec3) -> Ray { var ray: Ray; @@ -197,6 +172,7 @@ struct Hit { hit_pos: vec3, normal: vec3, color: vec3, + direction: vec3, steps: i32, }; @@ -223,7 +199,7 @@ fn trace(ray: Ray) -> Hit { // Check for a hit if (distance_to_scene < min_hit_distance) { // A hit occurred! - return Hit(total_distance, current_pos, vec3(0.0), vec3(1.0, 0.0, 0.0), i); // Return red color for now + return Hit(total_distance, current_pos, vec3(0.0), vec3(1.0, 0.0, 0.0), ray.direction, i); // Return red color for now } // Check if we marched too far @@ -236,5 +212,5 @@ fn trace(ray: Ray) -> Hit { } // No hit found - return Hit(max_distance, vec3(0.0), vec3(0.0), vec3(0.0, 0.0, 0.0), 0); // Return black for background + return Hit(max_distance, vec3(0.0), vec3(0.0), vec3(0.0, 0.0, 0.0), ray.direction, max_steps); // Return black for background } diff --git a/src/app.rs b/src/app.rs index ca522cc..501131d 100644 --- a/src/app.rs +++ b/src/app.rs @@ -2,7 +2,9 @@ use bevy::{ asset::RenderAssetUsages, prelude::*, render::{ - render_resource::{Extent3d, TextureDimension, TextureFormat, TextureUsages, TextureViewDimension}, + render_resource::{ + Extent3d, TextureDimension, TextureFormat, TextureUsages, TextureViewDescriptor, TextureViewDimension, + }, view::RenderLayers, }, window::PrimaryWindow, @@ -93,19 +95,24 @@ fn setup( let mut skybox_render_image = Image::new_fill( Extent3d { - width: 1024, - height: 768, + width: 256, + height: 1536, ..Default::default() }, - TextureDimension::D3, + TextureDimension::D2, &[255; PIXEL_SIZE], PIXEL_FORMAT, RenderAssetUsages::RENDER_WORLD, ); + skybox_render_image.reinterpret_stacked_2d_as_array(6); skybox_render_image.texture_descriptor.usage = TextureUsages::TEXTURE_BINDING | TextureUsages::RENDER_ATTACHMENT; + skybox_render_image.texture_view_descriptor = Some(TextureViewDescriptor { + dimension: Some(TextureViewDimension::Cube), + ..default() + }); let skybox_render_image_handle = images.add(skybox_render_image); - let skybox_asset = asset_server.load("sky-test.png"); + let skybox_asset = asset_server.load("sky-array.png"); commands.spawn(( Name::new("Render Sprite"), Sprite { @@ -165,9 +172,10 @@ fn prepare_skybox( .expect("Skybox asset image does not exist") .clone(); skybox_image.reinterpret_stacked_2d_as_array(skybox_image.height() / skybox_image.width()); - let mut desc = skybox_image.texture_view_descriptor.unwrap(); - desc.dimension = Some(TextureViewDimension::Cube); - skybox_image.texture_view_descriptor = Some(desc); + skybox_image.texture_view_descriptor = Some(TextureViewDescriptor { + dimension: Some(TextureViewDimension::Cube), + ..default() + }); image_assets.insert(tracer_textures.skybox.id(), skybox_image.clone()); } diff --git a/src/render/node.rs b/src/render/node.rs index 218b26d..9bc9d73 100644 --- a/src/render/node.rs +++ b/src/render/node.rs @@ -36,22 +36,24 @@ impl render_graph::Node for TracerNode { // if the corresponding pipeline has loaded, transition to the next stage match self.state { TracerState::Loading => { - let shader_loaded = match pipeline_cache.get_compute_pipeline_state(pipeline.init_pipeline) { - CachedPipelineState::Ok(_) => true, + match pipeline_cache.get_compute_pipeline_state(pipeline.init_pipeline) { + CachedPipelineState::Ok(_) => { + self.state = TracerState::Init; + } // If the shader hasn't loaded yet, just wait. - CachedPipelineState::Err(PipelineCacheError::ShaderNotLoaded(_)) => false, + CachedPipelineState::Err(PipelineCacheError::ShaderNotLoaded(_)) => (), CachedPipelineState::Err(err) => { panic!("Initializing assets/{SHADER_ASSET_PATH}:\n{err}") } - _ => false, + _ => (), }; - let tex = world.resource::(); - let asset_server = world.resource::(); - let load_state = asset_server.get_load_state(tex.skybox.id()).unwrap(); - if load_state.is_loaded() && shader_loaded { - self.state = TracerState::Init; - } + // let tex = world.resource::(); + // let asset_server = world.resource::(); + // let load_state = asset_server.get_load_state(tex.skybox.id()).expect(); + // if load_state.is_loaded() && shader_loaded { + // self.state = TracerState::Init; + // } } TracerState::Init => { if let CachedPipelineState::Ok(_) = pipeline_cache.get_compute_pipeline_state(pipeline.update_pipeline)