From 74dcdd573b4dc572a591cbb5d79463f553f64480 Mon Sep 17 00:00:00 2001 From: luboslenco Date: Tue, 3 Dec 2024 22:21:00 +0100 Subject: [PATCH] Improve brute pathtracer --- .../raytrace/raytrace_brute_core.spirv | Bin 19744 -> 19384 bytes .../raytrace/raytrace_brute_forge.spirv | Bin 20028 -> 19668 bytes .../raytrace/raytrace_brute_full.spirv | Bin 24864 -> 24848 bytes base/shaders/raytrace/src/raytrace_brute.hlsl | 4 ++-- base/shaders/raytrace/src/std/math.hlsl | 4 ---- 5 files changed, 2 insertions(+), 6 deletions(-) diff --git a/base/shaders/raytrace/raytrace_brute_core.spirv b/base/shaders/raytrace/raytrace_brute_core.spirv index 38d9a56efe357aff85c1275ce2c146b6bc60789f..0daac58e765a9e6bd899bcb2977dda49eb0b7638 100644 GIT binary patch literal 19384 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 literal 19744 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 x>tJ~PWSG69EGpU}l{6B;8Y4iX9 diff --git a/base/shaders/raytrace/raytrace_brute_forge.spirv b/base/shaders/raytrace/raytrace_brute_forge.spirv index eac786dd4a23766c48e45bd11692d8c0191f8a69..55ce4e702f2a57269f1716d295a20218f825b8b0 100644 GIT binary patch literal 19668 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 WD{p7~t`&iiTp{_JWr^}L^512#A5<65{{1L`U0 z*Mak0SAKT7zR>dXtb6GObbWc&jbOE${hPom5EuRh_=*Kz2Ja0&lV^Lk+zhvmeZWgA z?H0JX(3iL`f{mMA#C-{FKJ@vSYJazaZ9fAX?aOduOYJLg^R#af_f@#LQOk30gWKNU zcV&FH!+nmv#C;8{KC_6s18$%C@_V+ggVoF5pWO*pKc||*U7f^y15G`5+TCE=sh4-! zJ#c-w)4mB-(=6^K_l~)`x6*axPWu+bHL{($G1+V12J5$YZ@VAvgR7UnKf52Up5LE6 z05;$1$=8Em_5JB1dHoLDeCbQR9s;Wy=l=EVJPcP)zP{T@%p+*($=9P`+o_lNdJL{F z`Fb3zrdi5-JyGeplCLKr?s?m(81F1lbe^owo@;2^L@C!SbtNA@}zS~yI@4bEj?uFTx-($Q^ZSi{yeQ#iIVtzj$_BnnYyao1qjJ%(`4Zo`L z``llG%lr9PaAR^`{~Bye?z7*3jVbT0-@=Vk%X#`8T)o^gzlW=rd*%;t_3W8Hb`tX^ zH1+J6KZ9+jUhbK{!1ZO%{1vRGS;{^0w@TNQJ@a?SGR$`B#$?a@1FYYYb^Rw?z1%bZ zf~#lG{2Oe})N}v516D8ZpLgNrOJC07dtmkQ{&^p+o_u}KNz8|6>dDtfVB4ve`T7rB zU-I=aSWUB(`TB3A>q@>pfq4JePTiQ~%P+0;TavFXevyTh`RWQ+&z!q~%|m(rbVpM! z_fikIdbyW+!qt$fB~{ov|lZdQS-XD{^!n=kd;KLfz(xqns#d;h5CZW##n412faTn|E1&$(U= ztX7`k!Ep65@2kVr%e=1vS5My8>?CF_H1*_tZLsas%e=1x*O$Dn3s%!CW!~4T^fK>5 z&^*JoQ#U4gUmvXBlDrRvtCx8n23JqsHvoHv)pLe71gn>4cq6#^(wF_bF<8Ak!<)d> zldnxXiP;QIJ^9)kY&-QbU&G~C^0ft6O|z8w8d2$GzP3d34BJlKnB;3KuzpMOwKZJ5 z%-2Y`dgiCq+>8h7w)a18z+2!F|ET&t#V46LSE%Kbd6(%rZDOgbEG8G`NVI(7DQBUryB z>pL5+Uhd~PaP{oxxnOgqp1ZLLtX|%YN5IXOzT6Y@!0P4QcqCjs`I_HJ%u#6S$=A_f z+o_lNS^(FVd>sQ;(=27ank&7`*FrS!M%$?ylYA`#>$fCd$HLXie6_&UGv`*Yc_{D3 zHn@7Zmlng-%e{0QTs^t@TqiNdqp2r1OTe~MFLQGOTwii?B3Mncl({*n(#zbOjON{F zJ9T4{n^VC0Ey>NPaP=}bOX2F-OQ(U&mwN8T)4}Sw8_xiHH>&6T=1j0>csul*>$BkM zIoD@{)ynsqbKvS_-p_@rmw7)AUe~!v{O;oXPGUZfrk=cC0JfcanfD9f`jYpHz-pSM z%=^WaUgrH0G|#Z@)Qw5rF9qwjB=48O)yuqJ4p&d!uK;_7)pLfg1gn>4_$s*h(wF^w zHCVko!`Hyovrn(>B<4Ca_2lb%ug8U#6|P?Hr7y$Plbf$}67y9w_2lL@ue)BE3dij3yZMf~r_nZ6R#%g)LxgTsheR(%|0BlZtztJE4 z!Akf2#{M&=?|^NiKd}#i?Zfw*GWOvrR=?}!d(3yi_My+Q<^ARn@FgT%f8K8%1>3Lh zH~P!>8{c#C?~)$FHw}9O%{IRKL=hnM?JZJ5^P@d`Fj-Oo&x*q zH8K5%Q2Y0x`kt?}7bJ%=J!R zFQEAymp=P?k=kNk`d-4mkJ*>l92p~5&+mnP0Cql;Fz0R#%2?YZpD%-ru|M0{PtL#( z!6(wzzB29~p{Z+G=O2UBWBJ?KpP<>+-1!{W&RExLHrh|Y*U^7|=kp3&O|#e*cgOnv z41KkV+vm^WgQ@d7tykgBMLm1%HL&gU<@a2_0Q)R`*?+HteV+SIfA-KDVDqOx`{m6l zb{etz{kz`e>@B!CbKJ?#+i2>sXH^#Q<|2?pGK`ec}k7oS&w6mnI{5#PP z@EK$K{EqcQu+P@loi_d)=kE%k_4Djqi|rOS>p+#gNd^PS%( z4}h!ZJ#SU8+Gt{KXC@8Q1L5laZIz!m_MIaz+KGnduz88eQ) zlFK#V=3XEFeI}Rr`++raOu%QX^Ye2q&$rGVSPSghxG!wu*fOWJ!Om$5+B>Ipz!vAE zZ(U5yIf*mo^}zMd8*-a<8iM8;=yNP-XPrH_eih^RjJHo?^Y^XR8TU|p1L(gu<{Zj? zhQa$+KKm?v8^BkpeC`o_p2uO#YeTU8+TJ*S-`2O%m;bjXYnTX1{_V*|#Ji8}XJhbM z)b6v{)SJN7ENb47n^u}2v>Kk`Me$rR==3I zXyf3H^%AuFE#r8&vHF~kpT9eSeSU9Dzd0KUo&ffJc^>QR-{UvH)wTiWZ|x?+)qSRY z?F_a*^~`w}u(~DMu9fC<^S$P7XvT(50vqR^_HTS9gN;!ye@2`F*O#9WcL%F!7N6mB z{a#~_N_Rc;o#CEn&dYY{#^g@h3#?zW*q1TcM|-1ZADI_(=RTT>t}lCL8rZf}bzkn6 zeGq(x{ycL!*mIy+^31%G%s@BBw#nzdV0BBh{VFZbN&Z9KCn*! literal 24864 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 lE6 abs(normal.y) ? - // normalize(float3(0.0, normal.z, -normal.y)) : - // normalize(float3(-normal.z, 0.0, normal.x)); - // binormal = cross(normal, tangent); float3 v1 = cross(normal, float3(0.0, 0.0, 1.0)); float3 v2 = cross(normal, float3(0.0, 1.0, 0.0)); tangent = length(v1) > length(v2) ? v1 : v2;