From 5e5085435160dc1a7a3edb17c5185a57f43317f4 Mon Sep 17 00:00:00 2001 From: luboslenco Date: Thu, 27 Nov 2025 21:13:36 +0100 Subject: [PATCH] Raytrace fixes --- .../raytrace/raytrace_brute_core.spirv | Bin 19576 -> 21660 bytes .../raytrace/raytrace_brute_forge_core.spirv | Bin 19860 -> 21944 bytes .../raytrace/raytrace_brute_forge_full.spirv | Bin 24476 -> 25512 bytes .../raytrace/raytrace_brute_full.spirv | Bin 24192 -> 25228 bytes base/shaders/raytrace/src/build_vkrt.sh | 16 +++++++-------- base/sources/backends/vulkan_gpu.c | 19 +++++++++++++++--- 6 files changed, 24 insertions(+), 11 deletions(-) diff --git a/base/shaders/raytrace/raytrace_brute_core.spirv b/base/shaders/raytrace/raytrace_brute_core.spirv index 6c3c014ac929dc415ebe248205c2490b46b06dc5..1a7a89c1220c54236af95562474eb4266ce58d4c 100644 GIT binary patch literal 21660 zcmaK!2b`A0^@TsWB8u2WMHI1%iVejAHtZrOc5&HVaTONaT@{^L+cBb;5stne5G+bMBpaXYQ2m{dP%u^&Hl(*0)EkR$HX@MlUMLpjyw` z>_MIN2~|B3y??E5ZQ}SzlXu=>!sNDwIg^i=)!a6x8@;2gp|PcPYHcCn?RnfT6L%TW z-qAE-!;RL1@}$lO=^Mz?URa{W6Kgg4oZ8&l+}6<1GNTo4RBx;g))(uCEr2bE^~V;% z24DkgOV?hekA=aF(`K|cw|5-c($U#|k-EQDTa=oq)E2|+Z*hz!wIwm1QTD$Sd}(YM zY#>j1g}`OO(_7lxscM5U`!H@fYp30GW1E`Vn%mpAo^{9}&29GAyFS;J)~1%m=5~1h+R(&zb==e$K4MaHTSxP3-1T-V zQAg>EBDc(((LUR?j^^5-9eq??>s^m?4O?fl5!1M`N)}_<5TO2&1`6En9hos zch{z|dd%c0orzK(hW`K8sZV`>OeeLoT?2Nlb8x?OY3p}t?w>A=Lt>xqi7st&bL)|C zb@$jedi#tiGp3>UtMBVVZ)DU{rm@hrale1#Yinpdyi;EVy*}>thUqieG|+myd$E!x zPitvyZm9NyYti1^+|(J@r#2iwp2s)LnKq*V)eNaw8fQ#n71jFIHS_CvpV8JbwS|M3 zSaYo2)Y3-l-t{v%v+7Xp+53hMsI3a$dREJ{jvZU~Y-?#~ojR>~$JUPKw)W;mPyE=9 zj<%L5vpU$ZKBHef9$1^w&^CvykGHXY{_J}odIJsg%RQ6dJgaZF_lavb{~cl5@@%^v ztI=1H+pYsVj#%#s@157!407)x`Rf(;Uh*tk^n35<_wJH=XUN~I;=O0&Z&chnNB&O5 zy)WF)7Te1`lRigoZ0VQlx9IoIEB$i)uBraT=JU(-ySDm0H)VUdexIX%@%j96{q8sY zOyj@W%k`T_{hpt)f4P32qu;Ys`sMmPOZu%#zg&OvZC(21`aM^+w=Vs1{jRHi&r|7_ z>vtXWuTJeVozD)8+I!jJy<*t`Pc+wd9GQ{#toy#XU%!d()Oz4oOTRwTHfoO1XQ}n7 zw2WsBxZ`o(88ejH@=gD}yR?jFDE^EmbNwd1PksJ9sy@=MacbtXQ|sLo=i2#fW9-+y z#$(Ps+LFv{O|+qy{j62-wZLNvzBbr78ov(pP|RYyd_;I`isqm0Qj zHmlRQTcyv@a5XJ4n}e5r?A=k}Tfn(_ww9aAEiuO>H#b{hUsIMq9RpsI99fUW(#O`| z8H@GWB01Rxt`(fhwQZ1aq3H~0qwcN`PGJN)gp-r6GE{mHnWlbg#uFzw@nEo?GxqV9#xyw>Ov`wn=~cNZBxQ*KS{IQ7r!b3a)>D%+*aE z4uEAJn}_HJR=S%0JpUjt`RQ8s$#AvUvdrFhSl7aR?AoM=wV{ml;7T<1!zFswKl{`h zDt!p`3hX=YNyj||ydt&SxGB``1GOQX%ay2&E6w)aYx-Osys#Qr$`N==O04-1)4GIqzZA-OalPy2UnAJ7GO`Fs)aq^g}B>yanDDb3Tsm zunPC0wx7eP?N{CL4X1W|-cOn_)2QEHqE`3Gr^7$0xcOKW?meWB*R$FO_|)VxsO{h9 z%V$HDod`;hycKyHrZv#DL9dP?q)$WYFgZlDHQ@6OjGl|%U`U*_{i9A<+Wu}E-&FZptMS}iY5IqOZ^1lg;kSZ4tKqkSJ*y}4MCWrmW*>WCb1Ur*u=CWH zxI4kdO~4X&7udP#d#!4FH`w+Q3+*1Tv88q|+;!d)OWXUv*H>Dedq3RvdtrI*17M${ zFL4io)hA(zdkAcw`p&Gz_b^!9{#*~&=MhZ(v?}IN@cc24p{b82yN6Lfj@eG#^J8D$ z`A=Z_+=JfvPga_`#eL%5G51el>YmNX#5Yktjk!j)Q#ZzV*ZvtyzvYxldlsy|HN(GY&9{2;^#b^LY#%K7dJ$~C^d(;}fz^#mzFr2aCtt6C=Z|?6O+EQ~4QxC0 zGGDL5^(9|#fYmfhnXfnD>gFZ+`WDzdZ##8klCQVG`Yp-V+hFxFU+=)xGv{xE%|p4D zz5`b;_tLv?^>QzL7p|V%e6O3B@1v{58?WfoAe)*lg3Xuu4EFrG)E{B$-lg)NVjE)W>HA}_`UzOZ z@H6n0m?dpL0jqzEd1rY(e~$IS+^6ziRN5xg`3zG_{4c@A=f3?FSS@$pufcr_{u^+= zg8vr00G4~{cVPS26U$loJy^Zm4}XBGm;2$5aP{nmKXnuHXEgQfhrfVrr(W)dzryup zKl}}>rdi7U@OQX+xgY)kcW$;*HzsTGDOkTHYxWsfz1$CJ8R!Nxu5P)ysVOXD9W{xgXd(Ou~|z1<=&Xy|f@)z1&Ov;p)lF zLfym+KvPd{76#i+z0A!baDBPgLp=(!k7nxOXzE#uRlz=sAM(?AU#|vHPt59I zV=UvV_mDN<>c*~zz8Q7_Pjj4WqWK(S(#Kk0b?;sGp5tE|t{%(0)~RBRw^%tZb7;E} z2*%hxZPo>=&&6*6*4vm*+pLFRj5!-nJ%4>LKeg>DfA-W!#0$|f*A3v#FQ(t`LmN{2 z9mCr1JkEV1u<@6IH>TdC@;Qc4;IpXpZ91QCGx)icZ}fb=&Ebx_yLMZkI}d$jJMS#M z_|?BN=-UeHSRNoBW8h=J`qu{gJ!)*_ht|JG>E9YtcaCD$Z8-jIz|Pb8IBq{<`&YXA zYzTN;^o6Jo95kSgHvw;jdB=#Yo!92n&S48``>?&w*bYtZ{xPrSQq7`fKFy(;ax`@-)pk3>(@x(mn40ax z`M$O*xDSC_VjE!2)3NP_t}o--9jxZK++*p>+C4S~eLQ$9wc|40=Qx%Ck@HrlRj!mD>I0wyVSZ5p;fxRm-jx(#6OQ>Dr!>IS6y?M^(#lCPg z&0=Nj3e@{S22f97MVhGhhpXAflKbuexIWEdWzPM~bAAURIEUl0?7@T3Tx<8A=RSLI zGP=Hp@s2@17_8fz*W_@xn#Gt^si(mQR(u`m>F`CVedm?8!qs*FzgTHA;OaY~xkj_8XTk?j z`+WWOZ~G&_`rLQ&Hn4v0(zI=dr>*|9?Evdb+gV`Smd`yBp0@ha_9(EvvD`h5Z#H-_ zYWI+1%06;TbKv@4uEuyYSZ!Z?`L1;gT>T|t)>H?p?FaVzl>HnBx843lyW`>NX?Frx z&35_Ro(s3X@Dstth*&hZqu{><@Iuv$6C)8OhE z>*-*%a*k)fZCB3mOt^a5ods4a=Xf^U{xZjNz{X{c=Yow<&m7MKtCw>;AD%h7#^oF@ zfa}j3F9fTVbG!(yp0QpGRx9Ut3EXz&9502dr`=^>wQ`P^!|g9~yaH@o=6EI881>BY zDzLh9^qji3SHnG*mU)$S4cvUV?zv;G1siM0JNb2RWA*ttWq;R$ZKp5&-2nF4Wq&uq z?T??X{%(R8t1tcC47N{wxub6Zdq?}8pm`2`Pq-CbU&ePE*!Jqi3?t@t@Z!`{>A~+M zcfi#=tJ8^5yAy8Pd_TDhtd{xQUHR1$a}U_QlIwfH#;GTV_kq8!v&4QO|n43|24C|10ovj=sO-&VLo3{@ll}fz`^fzOEn3SlSQP0@k0;}iTy4T-^tMk*fm)?Om4@>sfw<}FK-zmQXF;<`bWKG`%XTBZa za!tPr*Pk{09$2kh)9=I8Gv6P8)yg&fA>4Llp5BA2r`?ahYGs~&47b0m>HA>glD7}Q z#;7N6KLM+kYx*I)oMXABAK}xVHT@}AtsLveaP^G!XJEB*te?QuGq#_DT~qap?H6G6 za!r2;SLdf|{eA^;9+s@>uPaSCYx*0AvHI*MYx-Mo=6e*lT+`pd^=D0g4^}JJ^bc_L z%=eFAwQ^1W1h-w8r$58h)9x=|wK7kCh1*}&^lxC}lDEHujZshD{sC4m*Ys0(ImdEM zKf|X#Yx+4@tsLtYaP^G!OR!ow*012|8QVX>uBm#)_Ajt{xu*YytMk*fe*b|u4@=hc z>q=A3ntJIPtIvMsad-QDq6fO`?K$?dPOT@J`n72J&e#iXjJ~w(4YuF1Z6CP$jYZqO zaNFz4?}GY)38{ZC)t}Fe1;9(7=QDLdxSF4-`F!jTS5K}M0^dz%>dCgDI-Ah^DKJ}w4U(=0y2=lc1$c%|#gJo#r!^?By=aY;F5 zKm63&Bz7r;CDD?TrQvF2PL_eICnw8-&53&EKNzfTiMCv&l{r}+&Di8*1+a0+$q=wH z>Saz=gzHOAhJw{JOPQ0EDqUCRxiZ9gCMUz-YWBlV%{KWyz6$tpI@Byy#th(llY4kL zL~Sr;?9PR6)ylUmn)~no>Wf(`KMPlb>(`z{8-unwSl!>9`Fo!=z!rb+qi;=YEzI9l zh_lDn20I3S_hNtkPQ$jw8K1GPQ^jRG2NIt?MpQogFs|&wzVf@5b-_N*=i8?2e?7S4 zuz%y6bMm-8*uAG&lE>TyBhii76kpE$25|LV&@#>q;hC%c{O)Tbuzl=+%F@19%0)hziwy`}M3Vz#Pcd~RaKps8nmW5I_L;P3nLZvwVPQ}@|EYa6is z^sy~mE#FhN1DiX~e7-xnU$;lsmwv~A)pDkG0Gsdd9pU{7z7yQPt)5Kp-c>up?PCw{ z+)CR8?!5ISZdb5z6N2>?xpyu0fvcZZ&0*heV)jE*&z-nG*mmmW zop=CTU+%;M!D^bted9hcR|i$PuH1o>A+C|_)Q!o$IvA|q;=S*FXn?El4bGmJ0$0!9 z^%}wETRr(|0;}&syX3VQZoc#-Ux$FzjZ40!!qt zFU^9hCpSlS6LS=rdU7)xY&-QbH*?_nlAEK!YMQ0Y%`ug(E4euq;`z6ox-rSkabW$H zDW zbY0mSmqW~l?bMCQ-nas+-;(va60TnEjjQ15*&A1b&6#@cnQOr6K!}TR!w}90&OPQ}*D_vLebsNO}Wjl3alCRsr z`Yp-V9dPwBUw6XQGv~X&=Apc2?uM(Ed+8pydbyYGg{vnw_jMCSb;o zgzHOg9s;XrmNGXFSGum`<`IZz&35X>BsY(O^;?pg$KdK^ZXSoLXD>YgHec$wXPyMB z=bm{A>^-BNJLGAwXV^O==lU7Add~H;V72lLKL=MY^ZqeoONHCS1MD`?uig$@^Pi z&#-#V@Y`VZ@(jNNH(&a)pT7-OFVFCI;OfcOyWPZm7fn6+`X1PJ>SeyZ57(D`{Q#_{ zS;~CY4KgVDnI(;h(_O%f0j=T)o^& zAHmg=o1bc!q7KZcK9XE3ke` za`S7rdYPNwz}2&tehW5V>N&%|1FPo@{~qiaR!`r50DHFQq5B=wcZxs4)i*1~@F%$K zPcF1S!;RI__Ag-D>GS)m{rweePFBS9NB>);FM@9W8Pngvw$Y#1e}L^{;rU`etzz}N zZhrs#3~V3z99w?R_BnVora#}UzX02>zXQ;pf4lM}cphfH{Jq3iV2i(((DzU5Uzopd z5c^)_v;PfViaNi4_z&Fv$5lR`pSAuPJgo9(?!IKHYyKNC^Vb8-oa#%SdxE3;EaQ5q zQIE&;?@FEbx887my6)~i5HgCy82Ckm7yDWGQI#bW*z+kX?`8lv0 z+SexGg6m7ZRtBqSmNH+%D!t6tDroK% z+o>Cqd<_Tdw(d2S$Ot*VNPZreO8*JL6_>e!A|A(Gayw&~j&}<<8g~%um;yu?0jecgB|B z^3K=_UfvmF;N_h$*0xxAXKW2uFV}e+xO%zH+rrhe&f9epvpt%6)_EM*cIxFi?*P}A zb>0!Irdi5$-l@{db>11xx!F$Ln5^?IVEvY?#jbGma-DaBt7n~e2YY9z=gt@pRxj_2 zJ>cd`U(U}2uzGoCOoXc^Uwd{Fvlp6r@-+!;JM}VOd&Bi5U;BX7G)tMUeJj1p*M4a3 z72ByBlYH$D)^AC^4uGqd`8p7;o;e=`HV@^UF&VC2?xlm_>g8T)fU74rQ@V+1L{m?0 zn!vVGFLToj*O%NJ0#?&3Wp1WcdYPL;(L6V{Q#U5LX#wlEBsYh_)yv!*4p+}!ng%vs z>bWzfgVl3qw1T}e)N|fvfcfdVA7(<-%KJereH;Pqh50U%cbm3~>&tsgJJ>u7#=Mt| z$$UD%`n9|Z%>vt}zPv9U3APX4IrXRgQDEoddu-m(W>>M>qWQj7{>^F*KK)w$W_2`J zJ%6)025j-&P~WlGahUIh;=F4f4|YtxYucZGZ?dg%#%DYyRB;(k`8TV%mCrtmEBmmo z{LSh_u+Q`Pwki8R3GO)T-#F)-yv?h8i{LX?$=k_bedaZ>r-1Fpck(j!RCImDdLDc) zJ`HRi`dmA8|Aurr*fBUJ$8iDgUdEpR*Jr!z?=!)^FZ0vY?^$T-vHY9ev(X%zXKyk# zoJPjxZ(HYp{kxH7v9e$1>+{dWZ;buq?``K*ZS?gf#=jZ)c?PYogWnNcOTQOn%;)2r zf6N!4smC(r3(+!W$2*dKjm?-Z0{^cuUyR=v`^lIusoLoKUt@Oc`Sw}8FZ+#gNUx5CvdYUb^>N^{)NZm%?k+VywK zJJ8&N{#&6@SaNkIy1ub^k3hc*?7HON6q%R1(bTgJ_kexgpvsrF_f~Do{_jIm&)<{p z2dkyc17M%$-%~TD2hr4X$3F!2dFIOY`pv&%dl;;LH*mB^;OfpTchaL^^;3w8_88o` zoQjrz1N1oDSbdIX7``XK%Tdc$p?(s+JhlJtjH^*U1vf^0AKp@3tEa*0_UAhIzbVMs zd?a?^PRI#xn*vzo+JC!`u3>RY6EM> z_oAWK?P2H=k6i07ELquPtwjp&xV`J08YU;B)+LknSENN>xa1Q?7^?9~8l9?)g zBkFqplb3fiO`1Qyt*O0z@{;3@YihH<-t~Dlx6E&DY-)%1uWg+8u8!w-hL4`p)Yj3o z40pZVaOx<1QRJ4zt?kQP=V-1Q+9@a3wchnO*RQ3ujhIgE+Szp<{+aWoJgGh)a35A` z6aD6Buhy3Kj)s1b+eZ))`PPU`4rYo52HgB|EI`qkrswRsI~%h}3! z8|!Duz6YT<&_KW3^YziQ`gVIaIPaCuyKT#JItA|8_MUi#1(bVt$e*pa^YlDf^m|X} z_pXt9#^ujf@!kva=PK?UA%Cgjo^kh;#rAUdq|cEXTl(etE&9EqO21sc>!#ncRQl!m zdscq;dg+(z_c^v-b0xoAzvopy)A+CUa{cB}zk9yyU#{Qh=y(5@ez|`4zkch|FV~-Z zTbF*he$RsKtxLaLzw4@hGiv*Eyi*xf);8y1DxPSr-4tdn?^(qUr?z|)-+2%AsI>Gu z9Bv!q9D~mqPHi65TzAK_Ikn?)Um4?FZ274F-d$S8V@$^5+$e}<4M29shO`% zt#?c#d!HPb>?ehui7Z^ z@VeH!j<>CR!-yRX)^A^<$dG(H%$QilFb2&cw++{?Wl#GV3s7@jqnM+72h12PFCMqzpwJ z58j&DTTj5!$DZKUA-%>YClldnvBXV6qfAQNWJzI(+smlhiV2C^8>SY^*!DpifQ9c1 z&e+Y*6zs(p224ypQ!7nfi#`pUJe9fH51ny5V*lo5f6Ox*J{{~G6@CEt%z_^X{;=RP zz$*&we)b&N-tiuU(ZgQpZ^O^(8zI0yE53O`H{dxXj z;MWFCn;3pLy#FgByVmsxxLPc6N21+5<;{n}kAmOOGNhh2=XEr8*lzcYbMGGmR`X68 z#mSe?#mu$+*w*;;bu9SQp`*u#H^3j*=-fTS=fN4{!|AIL?!1o0jMbmm`QSHC8Twdw z6P&&t$$2>ru4cP+S!v%BJ64vUzOSh2#XY7CXBG=OrF!h^LwnZW7pos%=^IjS$eG!U z+BMn;?AQ3Ifb^_S;YU|M7iPYxQ{BBg;pYrHF zb0OUEZ-P0`5!Btyvj@7xHj6r8JyzZV?~6G`*R{36y{PpsrnbGh;}}WpIJ`48V@{%e zl^1J$@;2%>D(*Ztg?l&ZYo~qc#g+gs%B z8SfK|+`TavGe&*_^^k%u1oy%0U%zYQdm~FYDXW)o-}_j?*YBiV+%>ht->;K)aqlaO z{uXNIVjH<@?!Ghc;og_wu6KXTHP`QY55!z^xobQKbDiZKVDG!Mca42-8*Y2wcc;Dn zVTIp4;QJHfdoWUSe-@VW|1of_wqjiF#j{~*vBaHYSZ&1~qv^xFaV{3$dAfSkcFi4f zK2%Lh%mrY|xbO=huMK*xi(dpk`@Inp;=j1gZ<*kjM}aTF+)tNMkH^gU&aAxq*tNH~ zuiu4TMm>QDW46KGL%Y24S--`dYaXt^%!Tn+Vpn1DT@8-!nw5Ol!neb0cU|Fg-(Qc7 z!SvmL+2=is(=mS>)4wJ5Hgma=TEFFexc-|kb>|@-kKRiC3Cw*pgRy&NKUrz&7T0$% z5o4)8h3P+w=gM!cv>m7qLi4PC8cW;LXy@2JQ|XDhrHZld#M}y2cU<=KS`&b+EeqxgM_1gP8jHRm?ZQE5|&9 zraqJGwo*Tg*-qW_V_)9u-^BE}2ff!HsWf$q`^3Ft?jOa}J)3ihKZg1-%r&x|`lFcf zuKnYfe#^O)_5@h{AS`?0NwE6U)pMQ#n{V~x>uIq1EG+qY25i3cC11~i)s0KOo&&2V zU(bVAj`SeyZ2UpLWzYjJKoq3bvhknVZ+(`jVTU zfYmfhnVZ+)>Sb=;fZv7LPTiQ~=BHr&mgMGVVD&OLZ^G5Hmwpa5U+S&wdH3ZnFm>-z z`7g2UG4=HQt4cqII%D`X_-4$Kw!ZRP_9j>1J@Q-d{{)wiZ z{qPppcIxGRcpI)S`{5n1nr12Y!@F?xazDHWcW$;*HzsTGK3KmcYxXa&dbuC|4Oh>8 z_yBw_rk=ayKVbD)Sn~BD*nH{BIdj13#^rA5;Uuu+t7kVcz0lN?uijwWsh9cc1J{>) z`KKT?&0^*Jx1jD<>1DoFL96c-YIS3huT{bNEy-7ZxO$nd)!^!x^8m1UDDRfl(bUVm zG!U*{?xjI+_2g!aZej+bsV6r>z_wE_bF(H~Uve`PtfpD4lAExmiv<0bs)(++(P>fZs+vgWG2`^_Flo&0=M)ecyN*^;QUdsCUBb<3#GM(bTgR+kkx* z|9L;sd0&r$s3&GyurZdI)%%dqaCKw1Mc)OxlBYS&?a+LVG3jFrSlxTqz32G1hpWdj zud!9E@fIuRWe#n(1A;NOPn#XV>gVFO0PAhcr)_pZFvgq>sGh$wnE$nXDu4FWE{NBo zWv;uzonM#1{XDcAwVyGp{mkRscLy7P6L=5mah1<8j0ayqt&b07|K-~ges$%WxRP%Y z+;Ml;ZZf*_&{wwe&e{uoOx5S!V8?O~`52G34_Ne$!fahP|E*xGsRM(rGSr?wB<`;7h2QBTIavt7rd(5|I6&gW;(nSZ(a);Un;w;AIZ zG{(01{^3e|?ooa2mCVOyUW2)J^|@zC-*xyLk3Pqy&u3hP<}<7_jvK(<6&c6nRm_dl zuCcEdN7LRs=k?+kxSD3MGIj&%xsUqr>R7m%Z7jL(8sPdgif_+*u{+Rx&H^-jKF={_&5sB3zbi)n z-te5sX1FnyXeU&fa5 z`p&C`xO`r4uiB?~Q7igDYRBZ7EQYIDjMB>13;Z%y3>UxV8Byz+Lqny)pFS6T;L zeP1-!=yd8O@WIqRU%&m^ekoX=`%Zo`Sig5^+Af2qt^TxK4%U~pr+{r+KKE33+Uif+ z)4=*BarZdB)4@Zi-9wHk`^Yh!0oVUzHO4c+YP0d>v(^f@`V+)>j?V(C9SrvKl>K}R zZo5N@c4x!Y)9xIwn(gwseJY3v; zVD)m2*TOSL*SMVHb#VQeS^~0uv$6CPr~gl zbNm$8xXkfpurcbHJX}7@5hwGj@=2oz=mb@qbEZkUqzE0WS z=fJkpm;P=8`|Ps6+u`=d|E~T%4>49>`nv;cpZan~-wDq91m7!o4t<|+7rMTT?+akt zs~adE1K zV0BBhuU49}&-ZM94PtEg{b1wrdGrCWG3wrd-Wz97e;uwbpGO}At7#T1pX;6SjY{`5 zBe{79&D`XB)Q90}_G6rFa{j*w&e>QB&N?{$N8tK%HXa45m1pBIxO(>Z<6yP&Y&-$C zU3oU1gsZ3BQ((37Y&;FOznqO{z{cflJPS5PJ?r%xSiL;|&%?_(?o{Qp^4)_xKSI^j92CL`Xy4Sx8SLc7%Uiu!yd04W)zF%p| z`Aqo(h_U+YCu{mcaOS%lT(0RWaQ#`+AA!}%HT^MMJ@b7PtX8h+YjE3@dHM-lJ?&lx ztCe|r18#p=)1QKkOWuA4Hby;pdlRf)uIbO=S^~DSgp*{+i?5Kn!W=zE_r(w zY>ayH_8wThT+{dA;p&8StzR#=^RQ%1dsmur*0c|rvHI-iZ0>G9PxJ-5-kxJ$>(u(8so#p0&y1_U zjnS93tAg#fY}+5MetXe&HMs5d<-4E(U_$Ee&-LeZV|DOQ^t`4Hgsb_Qn%BocaP{PB z4e&j5rk)%O2CG}54XHGro7clN(Tok}r$9C1^7^J;uzPvsT1FLBkpW$=2 zpkAlab!DFGLY!w_AJ>Dc*$@BgZ4$da!dhs_$p&z>GAA3t)svHrz~)3f^WPY(ZizO$ z(#o7{f@W-TG6HN|axxNZjCz@qP2u{Ilg+?tnx)Li=9R81^V|aBJd=|x;cE87|C(*` zd3-DI!*r-wtc)4J=O*{?))2MzFk`0{zHKU>pO4*#a|++6m3)WReSPci3Ae3$lhN$M zz3l7f=t8&sgRHxs>$d~jM!&i9bNv{wdMuyow@1@wzxI)Nj0HOn$7+n@O%8SdyKgj0 za*%VpBf2s9p4+_a1XrI1&RN_UZd*Sq>(BRAyMXOme{X!gPtNyN*+08he%t5!?A_4R zXA$k^_uav2_GetizXx2OX36-?)e87HbmwdiocER0{WKn|&-U&ezw?;@c8re8_f&hr z)hzieJQ1#*m`PQP&rQr^H1*7HFYsal{H`v4&)*wO-Dmr(eZczD$G&j2NsQ$b^eJF- z=XuTNj;V!~&w}oyY3Ta$to^`hIV1anU4!uH@O}k90Pf#P&*6#QJqN<=V}J09N}B;U z7y1%66Kve{BJLo#`OxQUp8d@N+x`G>wApZDOYLB|c{;F&I|OcS)biXpaNEy7%lHn3 z`y73VI}EHovxqw!ZlC({_q-#(>h|Y)xIRb1)z7cya8x%jN296djyncyJN5F8n+w;M zJMLJpnr3k?xp&M}L#6A=oi-2R8re?WnC!Jiuzrj8xcgx~T>T($_Cyn0J%6V=4s5>F zldlC}^;xt_UXO>HFMY{ZGg#fYX%Y1df)idWMVDnJ!rKNE7axa|>S1b@6rPo4|jo?1P9pC`u7LC?K-KHPiJ{pUHn0Is$pIN$rK z<$cD5;JvW4zX)vm+;tbj%e(IqczO3-3is~IJ$xD5KEp2u+h^{rE5OE-chr?|gC?}6kI)f<7TiqQ_nr~X|Q^E&wK`MzVzkH-2zrG@0nZS z>dDtr1{q4_4DGWxnpHbY02Uoe=kz?bMA)zU~6+wOK|maFMS!VUhbuP;OfcESGtM07fn66xeshR^)feKh3iXh zz6Ms)EM;!)uXJ6>%>xk6n(fq$Np8Ll)^AB}9)zoxx%mcMJ$vaPu=!HYJ@YVFJ@?Ev z!QM0KxkDZSdxpJ3a;_hRtLI!l239N2@Z)gxGVf2o)yup;30F_vpXw&&X*BiZ{TZ`?nyTVcV%2lf1tG)^ADPUxcfdd4CD6p1gk>>={qWxyKbZL zzX!GteU8oftG^E(kLl0n?SFyo*U#Jf^IMdEgU`dvm%lIh0BrI1CHnq@eTey+2(j;r ze1>n5)~3pL20h^RKc({d{H%3Pd|SfxXYRew)V0i~H&{KE-x>5lv#rndInKpc$Kq%G zzThcn`HbHWuBKURi@R&=tDq07xcgvL_&U`24x_*AF!khgHL&gU<-5oMV4tNgd0rjt z^USmUYpT6A5NuBLn=_v~sEYNR>))0-Ia>p6&K!60GZ;-hmi!DsOMZ?Zerp;T>wL`5 zn&7$A=GytF4F#(=g7eI^;OdsF)7o%#E!r^fd}17b_U$@g$FL!$KXY8S(!HbX%eeHj z9$3G9XAJ9u9fN)4JZ}IuR-bbk>vO=zQS0-5Qrie@Tg|*t)%(!5F~l~;Xxki zCUEnqFL5Kl#yO^}#Ynh%Ec;|rH2ct>{kR#}?{hSZmE$uH?&;0(8)Msi54J_sMqh7Y z%J0Gaos#F&GwIpPIJYEr=L|cC?cv@>`aN4?;pLg$0d9oeZZmIEt&<=-H!i*8wlxn{c(?>I-o zcLV!vbmi5^eO+EL-6tK@TSGL!0 z{vF#?u>Qlq(Wb%Gom=jc{lMxM5f^QLxO2G}Er0u(4mVbx^Ywl>0POSoWBMKE2=Ia6 z^{E#y7JpkY1Fq&=^0%RxaCM()Uk8EhPd#UImKd`{n_X!>H{VAbjAm^3AzP#Rto?C diff --git a/base/shaders/raytrace/raytrace_brute_forge_core.spirv b/base/shaders/raytrace/raytrace_brute_forge_core.spirv index fbf2a5fa86cf22beb0e2e41f69f11b7ca209b14b..6f3bb78baa43dd3f6f8bad594b6d7857c4bd6432 100644 GIT binary patch literal 21944 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 literal 24476 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 diff --git a/base/shaders/raytrace/raytrace_brute_full.spirv b/base/shaders/raytrace/raytrace_brute_full.spirv index 1bd694653a1a60ca22f0a228b10c697226606c1f..825079be91460d092ccfa8d4a8fa76f5bf6385f4 100644 GIT binary patch literal 25228 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 TdE>AG?T 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 literal 24192 zcmaKz2b@*K8TKz-5kZQ*A=pI}#4gHW0jwbQ1`DjXio3YGsHll3_C$@{*h@5O5{<@0 zW31SXnwX~1Xf(ZddyL=zfA>7=eEaS18+m{8JkR^ioSAp#%sKbowNLNS18V(y)oQiD zwF!NxC_`(#YbOuwtWU4%@#q6<{cAI)A2e&Psr%1rYg|0*ghfqli+j*J+8XCJx6H4t zK)gLq*?Z>RW7|9Cjh(RdmQb$L$Exld!quJ_QR9lW8hy@hYH4a~>}YOnfg9zJ`eFUC z0oZcb^4LIZ1#A#Dq_%49Df(CuJa<8BdsBPIG0h#F?FZNWwc1M5OrG+ zt6-~Qt6^TRyw(t|_B4U3qaWYg-cD6p1G5j?uZi{HKlu_S(T~<^fjbs2Y#KX$-q_~j z8|OE{)g5bFQ_H-jwpksGZS$KLBKmT*wW%BD&TU#yO?_rZ+oHK0i`ts@JqUl_`aIj` zl9?)g9qM}jlNWb1HO!mW*3{lUdC}2FH?`Sc-}*e8Tjn*-ZEA-PtgV~)u8!w*hL1g{ zsjZ{wWZd<3BdMeGN0D0=wzi+_I!AL&(M~z3uJx_QxqdCJZNzkP*Uql{@t-+Akt@{) z1n$R5t*74{?b_PX-qG07QH^N-#>G>bTK;d5(0aeNu{14is*gq93u|sUan^|oJIANy zSQa+6H6G7unRnM_ZgrVib2<~HJ_`N+U8jEay>UFLJ=ry2$2tf1N0&CPQ**y`Y1|<8 z>3-JceWtg!&S_nMKA^s*3w*`>-R-_Q`0=$ z@P4(?)Z}e?n6=K0OsWQjFr>hqf0>eul8T3B`H zHNB5MA* zIgM?L*~)n5*6$_z9)jLT1O0OEug|X4zsIw|d3V3xZCl=_Q{djuo)gbhme2a{+ofeZ#$-Is&GK1%zxsSL zp7d*+n)&L~`gX;+HeTD9jCnfPxkp=>v2KJm60@JpD!wszQo%O?J0IgWr5=e{jF)d# zXP>nn19v>>Z*#C?ScPkkr5=gt6K{c0b_w6Ild~uL);MzOG3Iv+Ban~BjEUtMTcKHO zH-Xx|z2+ElAm1AET3Xs{1GaCu^Vk+E^RQjP?QeUGGAU!-p-z|Vl56Y;SJM)+6L{4J zUfC{uBAk{CkoyVU)Y9uJ>X=e5U2Fq;POri|EnGM1QK!L7skOiYe;gR8|7 zw>ui8A#r;^)MAO7VpMI(&WW1}Q;QjAzNTUB`S3l#<~;rE1s?e7=$*p%hQIXUph@X> zAGlg9`o3t%W0}kS&}+5RcTIoOVXecK?%g?An)c z2Uc7?aR*g#ow1$!_h2+~^_XMwUOEKxTnaxFyh6bb1D{^-!@-{x{0Q)pf*%R?tVw@I zf!(BX=Q|5q2@9VMc1I|fwd-wQU?2RGQCWX&~vxZ%Js|l_aOWe_D zcTaie;qdwJt6PTE^J2fpV25mf|4yz|Ggz%JHipwnek^7#?Z>vpr?2C{r;ZpqF?<31 z!FA5=Ix~)kGsZ{KR}0*E+0Iz~Y1;~Z=admogfE2C*JHVdPk^i0Zgp1D_j<=l%IkZJ zs$Se@+DK;6)+yCv-yG4q{%)_{Ug^H;ug!hC0kvzk4%p|9+_(r!{}zO_YQ+pDccf4+a3Q}eq{^$d_l_nIfc9shcm^BhIp(>!~jTWoW3C#=WH zJ3k+Ej?r~J1;69%Q^lW3ZF_acF`C+OjH}E(P6NL_qVriN{~Y|SiaXEs;S(@@pQnBU zpPKx1YWw$^@+B3wfB6{|cV5Gp?U~f;(dSZXu`y>+n+L}wKfB_#k)Km>b0qNbS*BRc0Brbgu7R4Z;`u4JRdCb4(g$pF>=>-SixPlewh91cTI+4 zmhe?OX%}Cu8~6RplKB3ew2Keu#yx*5#=GXu#Wr%+xG&bL;L8`>^&N=0#>Tt8gE7}w z?wSt4Tvxekx)PTDmVj|}@iV}y6x{ySz|!9m@XDC&dofaT{{<}f`xn8r+LE1e4qgaT zizV(N!)i-*97`YWjf=7PzND*HZM&Qqmq69D#9RudbUphngS;{1`7VAr{G}IP>^jq~ zfG_=U)Xr&tWu4!$vvY7SUWK{8uBL9lT!U@c3GQR}f@LZ80qo1vI}>5dX4r>l*Hk|1 zcR6#-%e9!fG5$L2dMv&h!13MK&36-gJZ8I_v9$9(xCPq^(|0ST?_S2~n7@MQ-xzz3 zx!gvr-|`V$|LvH%^AJx&_x$)O=04kxvCp8sqtetZuJ=MBCQ#pr=|6+(%I~VQt*K|A zdGCG=OWV_E=h(kq>52J96=UCtxf`tRxa{X1%sj{c%}Q(FI%k3J#k^n5NdtGy+0^$H z+BRVOa*e-L`C6*+++S(>M}fbMdEbS92RxwQ4}iT_&*F;C=RwRq4#AdG+IPXuQ(xj9 z0vmTImbmYMovXfQtF{k=ZGTvyJpwki)EraqnQobf7b;EN;y!WjnEUTz>bnC9K?z}@qoz#w0g?0_(RVH-84Jm$~^1Ts?c~uVC|~-pZbLU;YhK_biqF9oqs^Pv8Hj z^oyu7hJS+Z!Ypa~FR;4tIY0jm?t{5cH>Lg$rnW7XXP8>z-vt|=^Y%TkTF%7x!Tk&V z0eC>cKLjs_Tm zE9Y;%hE;l*ui$fCdE5p^xe60dk&zx5Un}_mjSq)8n8G7PYhpU%+ zX$`n~a9fzCpT+@ZKq!5W*xY`{yl-r$ZcK7B3asCf z+>C~+m$_LVuAaTL0oZ)0=WN*!te*2>Bd}+SdivfNtX`fio4`F=sJhy23Q;$HI_o|G z-)3OX9DSY-r+~+Rm!~#2GpIL*t7#Uiyho0O=s&OOZws(}s$W!TTY}ZMr`^&@8wXe4 z5zXuR>>m%mmwG==pK;V%!PPX2mAUr4@f_+22>qzH!|dZk>aEe#vliQcy%zuY+|+qq zZwpaR%ywX7EYq2@W7!_AZtRxu9k5Hdn!X*-ypA#HV@I&M=dOFt@$Upzk7ZsHt61YL zR?f>D+Kvx2HDhd_HoJh;FUD^H*4vm*+e|_*#+(hRuHOLWU;VpF{n=BK!MC7iuDimW zUrfKBhjyd(GlsRFd7S(1VB>EG??FAK@_B|#1#d;IZ(8AVe0##Lt$cfR^X(14q4Mq1 z&9^VyIoW6TcKe|_M}1{G$1>e^Ri87!j`Ln})qu7?SpOzqKV!`V>$mtBOaB3wy7L#` zQ?)%1Y}?I=eV^4n2yC&PzJoC}+lk$mKC=%2m(S!w;cEIv;Xe%ApE~?-_<({R0WY7) zN5bvnaANX|ISQ`63@zvAEVz1kj?RXw=NxV9A!ZJmdd|_gVB4ve=jc4RzMP{?U^UHR z99`+|^}M6aM{{nrQ#U5})G=WFmYj9XaP{&WJr=H>bM!c{&t&yHlNW&1%V+ZO zaPy@v`Dy{Hm(S!@xO(!nu!oov(A1N!Hn8o~%Y3!N^(9{&U^UHRm3%F#^fF&3qPbUW zr*2I0brM*=CHXoTu3qMAFg8Vg99%uQ`FsyCr=zJS zH%q{_Q!jIK23%iqb0%0#vsfiJODnz1%~@#PH?~tZCb>BqtlyH{oC8-cb8{|SJ$vaq zu=!HY`FTEAJMx<~j_rxdeFf?xhYqUa&d(H` z>mqi2_9bQ~YR}t=)b?R}uW>1w+&ueyxD2jlQSltr*uW=)_#cLRI6Q<@h#QU?h z=J{suWGwm0GvF39ukAb0nT*GC_g1*iEH%fI{;cy{{|eZ?9HV`EEq%712DVRq_FwvL zgWI=0ucI&Pc{|vCUC##@O9S;+;p)CqIo~_L7U!$)PE5`Ditno0-39hqKGSXYHL%5Y z`o4~-*-o7A5x)WU9nt5tZQZxtGk2rw%ed|Vt2r)nl)kL9X5R$6W{%5vuj5$mrM5U0 zWA4M$9E*5A-lko%Z-LFnZs5L{Df?xP36j#;x}T4d+ikJhiGpe@_Fie za5c?hW$aqi4?_k~&#CV7N8oC!cEi{V!0O{N9zaoKG+7! zz3>FOzMOl@z-rzLK1;5qeiE)8^V#EdoUc{ASf2_xDL%Wpy}cFJA934Ncqe4pk$ zW1pj`Uql~F?U=leUxKSyj9H)hW%v+k&x0RSzK_B7^Fz4%#@cv454-|iiQ4y5`H$dg z)4%I<8Tm5PK23TJM&kD!)3-B;%_n2eKK66ZO!u3B@jqxq8+AMteuJV^~^(Tq(+4DA7 z&1dPeRl9fKwwqnF`xRV0?S2hbvt8cXegn6^@ZW-s%XcBa0~@36edPBezXz*d0?r)& z0M8uFT{*`;!u4m4e*&wObNn-0J!Aa~SgoAnU*Wc!&2^KTzroeh?(bl=a*qFi+h6AR zPq1;Bp`0IXKd@k6-n$~k@n zS5Lc-!D{6k{|mRj%<&Vjahc=)z{aR&j-P_noul`$YwLmOeQQ}-X}!?QhwGj*sJDlY zM#*{7Oe>D3;?&@y<+*p0-Z#l4i>dP6vJlHeb_ZiLm z(D#{v==w6g6~MMvH)a$ugTTY7=hMRs>J{N?-mAwGqc#|B+kC$_1gw_%tW^2c6EhTS zU&-|_uyN|i;c&3JB^rMQRM*Ud*Y}KA8O_-6RlvsOv*W5@W7ItZy*JLIUJb4U*L23|JRz@tsiL zNKDP=fY|Gf!@nMQ1aG z<#WWw;7P>zOmjZI=lJ|`oQ^kV-X`Fj2cGNMd#>50`1I#I*bJ;zo(E&#>bb8s2dkCm z!C1KMX47ZRye;7BX}2X5~*IsvTid5}474KL^DJDuy| z9Jj%zKhL0T!D_SdWvtu5)ic)Z!D{7LcYv#BY&(Llq7U_qZ6~n0W6PeK2v^TOc5mzq zcOI6+?NVvRdC$1VCZQRt&weuB25{!(_O)8<(lpWSI>NR2dkB9x(D2L zvl&P7GzG4nc2mJ>WuB(N?JsM(C)l{;Z7;Af>dD*QVD)lM_kovlEZ1~jeEPGd`+?QU zu}+7pXRI^8YUNn>hu8J$IWQCMnyP1P2Y}VfH9ZinUasjuaOYvknjTzf<(eLXW~@H@ z$(kMt&U}4tmuq?$KK)tK!@+9hnjQgH&wP&rtCeed6x?>R8DrLT7F<2;W`otrJT=1Y zFKapnY+TlKF4!3LKWjQ4tX7Wo7`S@I+6-1J$9gPWJ!3l# z?3$`)Yzx5Z<(eK3S1;GJ1@1g7S<}`^E7x=(nz8!qXDRz>9BobjyWZZ%Ip5pB>boSX+&PfpGUn-lfS{{pbOCE6D% zt<1?6(Tq(_E(9BwoLmGpM!n3*#c+Me$(O)tnx)LiC6%r#^Sl(|Jd=~l;A-~6znX3G z9mVC~wJO6^@7tI`d{%T{UjgxYYhcFiQ~0i|e7m8!4;u^LRo#4Z>b}nJ!mqA;lhN$M zz3j8{%Y|b_>|P_4mc+XM=pFnEi8W<+pu)1OEz| zdfo$X1FPAeaT)*ZaDAF3<2P3qz`u&_oXvsrzJw7thdaRfZ13Ljd$2pfj?r=XPIVVt z&64NH*Wl`j`Fa)ObrbUqH1*8yZgAdT^EZI^ps9Opuk}rEpQ4X@;c5+xt4DaU0<&CZLnJIk?(-Z-*O*-51?KA55oN|_bjgH+4EhveH;Q_QfUvt z&4s?ieGhEhp+(%oaPy(hXP*5%0=E5O;AoG+jV-mu;O5ESkQ4Vf+}x<;x=+Aue*{{_ zw+!xe^d;^|u=AG^Jy##TMY^QEa_S(x}{T9!0_rnk1>gDft{X0yo#ote7y#?oqCzCpTqSfU$2AJ zG)tMUH!59M^7RXdd){{H#w1^Fg7sUHueadpWxjq1SI?Z^2AhX+FTDd-FZa@~;OgaG z`ZZiVx%o{GF~3DqPi}q(ww-#Jo8QCrB{zQnt7(=pH-D^jUCGU#Am0DBQ#U5L`7>C* zCAs+vT)oWAU*YQ6OMe5KFZH}j{~fIE`<#37AK)#h)zkMs!Ri;G=Un_3+;h?U+WYX| zaJ6m0`7T^7&x8MfJ!>_K6;jvlXzxPS#=Mr_gS@Ac;`bo>-p4-BXeD+WJ}*85`#p%? zKiEdUae2S_2z)n|aeoYU+&NSK3op;yPvGU5`#-p6Zk{2Z!tFEM&g?ViU@y2a<=NQV z3u5Kp-1LE~mwU1=T)o_r{ov}^ll^;$8GxpqJ-Hm%cIxGxTpq43dvYLHO|z7Ha)nA~ zDqVYW5Ssb0ow_mElPiMtTe5Ek!_~_@IRvhrJ-HItoT=x08wyr0&$nT4^QABM`f#v% zdA^N+t0!M8_YkuRntJlJD%f`FWxiH}>r1{?2din8GGA*{dYP{^(cE9QQ#U60S_`b- zl6%rB_y)+80p4^P?A!dCv_2gy)ug1v`5yK-NTLsQRvJszx9-osnL)yuq3fUB2z-x{u-yl>M(%(iIi$@_L- z+o_j%-yW_ndEWu7rdi6o?^x+&-giRt9=4sjG0FQxuzpMOzB63C%=<2I_2hjL*n3z# z_izJPy}XAf!_Akz?B`v<>g7GW8(cm4+P#OEJLsh9bh3fGr>O#`cGmNH*^ zR(hGQz0kaeZKrNb^0hZuza{zF2d-Y`YhSo}=DZ)+Je2qFbhvuCmuA4#%e}NeTs^s& z*+a|$Xmy<@o1dQ!gxgNN%*{b?eaX$iU^UHB=H`$}FLQG!n)k5n)Qw4Q4g>4ABsYh{ z)yv!*0awpnIudNY)N>CX1y;{JJPYhSte(DSt6`U-`yH0=GL3Nc9f~o`f!qGFLYoUW zR!iG?VB6`-cL7acbFwa`Kl;&?J{aBpGp6}q+vrd1F<|>xv0H3&6|3Jp?YqsfVEfSL z*qp!mao{^hxc+?3UjVjWKj-T&--moJ^6!Fdd%Qll?@+e!T`7Od)B^YY%iQ`7)(W@y z4yJD*b^_)*mN@fl1N(kx?$cL0n(uS^?5l&?Vqf|eVJBktCC>ZYN#MNC*+#!{@t<7z z^Bu}!xbvQZ=`%0RJ#DQs_fx?3@AYhFzuB*+f-j@3ePv#!p{Z+Glh1+GWBI$4&!gGa zedl$|v$2lbzx_BJd>{SieRv66O|#e*ch@}6K+o@auG^XL{NCp^mcq;5_s)VFqn>?o zwiwfw?{&`sdu@H$JLiJEzI#Xi<<9H{V|O{3>=jSigVklN??EH;2w6`T7Ey zdMx?+B3km*MEn&rGS=_6%-4nBW2w!(^HIA9tlk37H7|y%Te5Cnf~#xME&;a^g*jLV|E8)i0eT;tszN_FTQ0w!|Rl6E& zTg|*t)%(!*Wr%Hz$+fNlt6TD2;I(k`sV{NYfsJ!aS&Qr8>apyT8_?`Szw>mz-3azG zo4$N!coW#qZ~FQYpq8^dtb*_o(JE6m*>IV@bWyk2X2gd*7=)Y`_Y%Z zb1&FA@5DS3cOTqXeObqEfzM{_R9*MN{SbBUldkVH;p%zU`40HonBRlm#g1v9egLk% z9oT2XgJ6r#27TYf)Z9zrg%4{e24uAzFlZz zEdT1yk6hn6`{q%wYvo?DjbqE49s@fke>ZhbkAp4FN#7HgnsXB8JXr>Ijr<-z=g*UH z_ltSe?|X>CGQH~hpRbXajy3w*nR1HMzojU>ONC4hL_>)Lw%kt>B~Cz>JO?I^J%=- zF*bR&&f5JD?D$ka;hFhk_(qk_K1<(E z;OkXB?>Bv(8>4CWQ?UKo-Z;NM8(it#|MqlsbjwoA-2RMs&xq0RSHWvgd(Zm3d=0K< zQFDwxuQc~TwAU+*;nnx<8&#Y99qKROUduY?!JA;~|GouL_g->O{8A^yJ)!Sy zOwGQ;=Gbe=)${wwJ7AwJ-bU@Cd?(=hC)n!`#PmDPQQ&`p*QB1$SY}ZF8?ILV z&io&^y4SR?cft0j?)Ry-dk?Jc|05!QA8ebMV4rttAHW@he-~l={?x{0j2~8h$7o;f zDZfMh2y9zRw2v#z{_@?-f6P>dr5pZ$E|W(=7Ix{4l+Ge)9c$ zFAq7)Hr^MV{dE5S6TQ*(*JG-FjPd&<=idjP^Ed#UdGtk7w?yk#Y31DdqZymI4FDUL zxh)4aM!lTd@^F2crJUP9G}k_JTLG?So9=TPgr;A!*iSjP715pBf#{jXU^I10v>}yN z&TS<$V>7p*VB<2kVPIp_%ef7Q>(ead+(w|4b6Xj%W}EJFTLn$OmVU~)t%~m44#Jsv ztcIp;iMD#Bm2+DI&DhLsO|Ws9+ge~_)XTZ84cDhx%DJtBR?cl*xSDOc&ut`{el7hN zhg>ap~- z5n8V0b?w{OJPS4k=UHIha_(+|t}o~OreOP_s_DzS#b#iyp+E0LW5BPG3(aCXbLF{b zUN*;XjBPWgv0!yev@I&l_R+SiH2cf{cQOvm_QvZ!7+?A9^BI`;i}Cm!m(NGr`CK%I XqiM4hT))q7pV_`A_`Fxod&2(#IbVQ~ diff --git a/base/shaders/raytrace/src/build_vkrt.sh b/base/shaders/raytrace/src/build_vkrt.sh index 69fe6c06..f4148e6e 100755 --- a/base/shaders/raytrace/src/build_vkrt.sh +++ b/base/shaders/raytrace/src/build_vkrt.sh @@ -1,8 +1,8 @@ -./dxc -Zpr -Fo ../raytrace_brute_core.spirv -T lib_6_4 ./raytrace_brute.hlsl -spirv -fvk-use-scalar-layout -fspv-target-env="vulkan1.3" -fvk-u-shift 10 all -fvk-b-shift 11 all -./dxc -Zpr -Fo ../raytrace_brute_full.spirv -T lib_6_4 ./raytrace_brute.hlsl -spirv -fvk-use-scalar-layout -fspv-target-env="vulkan1.3" -fvk-u-shift 10 all -fvk-b-shift 11 all -D _FULL -./dxc -Zpr -Fo ../raytrace_brute_forge_core.spirv -T lib_6_4 ./raytrace_brute.hlsl -spirv -fvk-use-scalar-layout -fspv-target-env="vulkan1.3" -fvk-u-shift 10 all -fvk-b-shift 11 all -D _FORGE -./dxc -Zpr -Fo ../raytrace_brute_forge_full.spirv -T lib_6_4 ./raytrace_brute.hlsl -spirv -fvk-use-scalar-layout -fspv-target-env="vulkan1.3" -fvk-u-shift 10 all -fvk-b-shift 11 all -D _FORGE -D _FULL -./dxc -Zpr -Fo ../raytrace_bake_ao.spirv -T lib_6_4 ./raytrace_bake_ao.hlsl -spirv -fvk-use-scalar-layout -fspv-target-env="vulkan1.3" -fvk-u-shift 10 all -fvk-b-shift 11 all -./dxc -Zpr -Fo ../raytrace_bake_light.spirv -T lib_6_4 ./raytrace_bake_light.hlsl -spirv -fvk-use-scalar-layout -fspv-target-env="vulkan1.3" -fvk-u-shift 10 all -fvk-b-shift 11 all -./dxc -Zpr -Fo ../raytrace_bake_bent.spirv -T lib_6_4 ./raytrace_bake_bent.hlsl -spirv -fvk-use-scalar-layout -fspv-target-env="vulkan1.3" -fvk-u-shift 10 all -fvk-b-shift 11 all -./dxc -Zpr -Fo ../raytrace_bake_thick.spirv -T lib_6_4 ./raytrace_bake_thick.hlsl -spirv -fvk-use-scalar-layout -fspv-target-env="vulkan1.3" -fvk-u-shift 10 all -fvk-b-shift 11 all +./dxc -Zpr -Fo ../raytrace_brute_core.spirv -T lib_6_4 ./raytrace_brute.hlsl -spirv -fvk-use-scalar-layout -fspv-target-env="vulkan1.3" -fvk-u-shift 10 all -fvk-b-shift 11 all -fvk-s-shift 12 all +./dxc -Zpr -Fo ../raytrace_brute_full.spirv -T lib_6_4 ./raytrace_brute.hlsl -spirv -fvk-use-scalar-layout -fspv-target-env="vulkan1.3" -fvk-u-shift 10 all -fvk-b-shift 11 all -fvk-s-shift 12 all -D _FULL +./dxc -Zpr -Fo ../raytrace_brute_forge_core.spirv -T lib_6_4 ./raytrace_brute.hlsl -spirv -fvk-use-scalar-layout -fspv-target-env="vulkan1.3" -fvk-u-shift 10 all -fvk-b-shift 11 all -fvk-s-shift 12 all -D _FORGE +./dxc -Zpr -Fo ../raytrace_brute_forge_full.spirv -T lib_6_4 ./raytrace_brute.hlsl -spirv -fvk-use-scalar-layout -fspv-target-env="vulkan1.3" -fvk-u-shift 10 all -fvk-b-shift 11 all -fvk-s-shift 12 all -D _FORGE -D _FULL +./dxc -Zpr -Fo ../raytrace_bake_ao.spirv -T lib_6_4 ./raytrace_bake_ao.hlsl -spirv -fvk-use-scalar-layout -fspv-target-env="vulkan1.3" -fvk-u-shift 10 all -fvk-b-shift 11 all -fvk-s-shift 12 all +./dxc -Zpr -Fo ../raytrace_bake_light.spirv -T lib_6_4 ./raytrace_bake_light.hlsl -spirv -fvk-use-scalar-layout -fspv-target-env="vulkan1.3" -fvk-u-shift 10 all -fvk-b-shift 11 all -fvk-s-shift 12 all +./dxc -Zpr -Fo ../raytrace_bake_bent.spirv -T lib_6_4 ./raytrace_bake_bent.hlsl -spirv -fvk-use-scalar-layout -fspv-target-env="vulkan1.3" -fvk-u-shift 10 all -fvk-b-shift 11 all -fvk-s-shift 12 all +./dxc -Zpr -Fo ../raytrace_bake_thick.spirv -T lib_6_4 ./raytrace_bake_thick.hlsl -spirv -fvk-use-scalar-layout -fspv-target-env="vulkan1.3" -fvk-u-shift 10 all -fvk-b-shift 11 all -fvk-s-shift 12 all diff --git a/base/sources/backends/vulkan_gpu.c b/base/sources/backends/vulkan_gpu.c index 14f76ef3..327c4ad4 100644 --- a/base/sources/backends/vulkan_gpu.c +++ b/base/sources/backends/vulkan_gpu.c @@ -3035,7 +3035,19 @@ void gpu_raytrace_dispatch_rays() { .pImageInfo = &texrankimage_descriptor, }; - VkWriteDescriptorSet write_descriptor_sets[12] = {acceleration_structure_write, + VkDescriptorImageInfo sampler_info = { + .sampler = linear_sampler, + }; + VkWriteDescriptorSet sampler_linear_write = { + .sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET, + .dstSet = pipeline->impl.descriptor_set, + .dstBinding = 12, + .descriptorCount = 1, + .descriptorType = VK_DESCRIPTOR_TYPE_SAMPLER, + .pImageInfo = &sampler_info, + }; + + VkWriteDescriptorSet write_descriptor_sets[13] = {acceleration_structure_write, result_image_write, uniform_buffer_write, vb_write, @@ -3046,8 +3058,9 @@ void gpu_raytrace_dispatch_rays() { texenv_image_write, texsobol_image_write, texscramble_image_write, - texrank_image_write}; - vkUpdateDescriptorSets(device, 12, write_descriptor_sets, 0, VK_NULL_HANDLE); + texrank_image_write, + sampler_linear_write}; + vkUpdateDescriptorSets(device, 13, write_descriptor_sets, 0, VK_NULL_HANDLE); set_image_layout(output->impl.image, VK_IMAGE_ASPECT_COLOR_BIT, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, VK_IMAGE_LAYOUT_GENERAL);