From 709c2f056906332ad055e9a2543e55b6405f2740 Mon Sep 17 00:00:00 2001 From: zomseffen <steffen@tom.bi> Date: Tue, 4 Feb 2025 10:47:55 +0100 Subject: [PATCH] reordering of diffuse calls for usage of cycle counting/limiting --- shaders/compiled/frag_rt_quad.spv | Bin 35760 -> 36496 bytes shaders/rt_quad.frag | 13 +++++++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/shaders/compiled/frag_rt_quad.spv b/shaders/compiled/frag_rt_quad.spv index 2c447ea3efa6d8e55313f6618b2a6979a15f5362..e1015268fbc4f88176fbdddd7c9e90d5e680638d 100644 GIT binary patch delta 3358 zcmZ9OTWnNS6oz*@ovG2(G->OQ6fFfSR-?qn#@J|I%A<`j>O*NtJJ2faG}BgsR!<SB zcth$DQ3UY{YE`JUDhdi-xTuJN3L;jmC?<wyFHip8nX@Km&T01S|6kXA)?VwRyEc_> z*jieVC|ywQT#38DRk%OLD{d*7oy=^kN~GM7-&URWE32<wm~x{@=LWKa9lia_di#5a zRyjRMmvCz&9|~}}8}s*8*Vc?l!qb=S&aBX$(%+bWt~%X_rc{zUdowGsNGSrcgz!Kv zdwX7n^;I=#4-KJ)2QwYZGugh5!Jf|UOfJZ}PKx2BS>ZDGnD9VnuCq_J@bMUbBE~ny z_>(cdDbKw^z^5h14s>?$)=5|HUJ&ofuE^#(1~Zxdj-j4hc6fPDKKYBWVB2H-)fj)h zh^O3J;`!Kh-MzU?7o`o}YO2Vv%uV~}YU;e*Mbf0(Q*a*~&etR54isd?5f2vmmbt?* z{zZ%*iSd(3*IZQiQ!#_nF+NkolWx|(_@aY-Yb8zTB`dWS>-xBM9=65$HNGH_7R%JO zMSdkQKRABZYX!0VwsciH5oyC{1~`_ZT9y@AJOiy7^@HQLPb;5cf4b^sGL(fH4OSr{ zo>*5()~dF*leEg3mYy#ikMa6E4fyO-;~YQbttN&W_2$Use&K7xNHtf#R?6ezm$>tS z@YqDxT<NfzC;JDq^O79n+K_V$Wau9XF+Nv{*K)%35;}LN1%qFOsQ`x{0DRVOuiH^l z?kDFh@~GY_$=K01XdjL6Ey~0P#PsZpv++yC8RsZxoQ*d~&o~=rXPiUs1%P=r0~{D< z<0N35jk7bt#xE4#9^u$C!lq|ugpH$Tg!4RI763-q3<x;wH`V7y*QB^Hx>0^0!jUts zrY8#HY8-#Y)i^uj8s!?-0+;`M$GDmS0T@@~>@!oh)u&56X7etomS{EWwz*GulZ?^b zEnKC2So=yX^w<q)M|Yj>9lH@>WD}a7%f#;yM%JQP_*?d#FwcLoM|ZE*iKO$~Kk7%w zh!pBTcb_m*KoXh>P7=EGLE$#78<d3ZeOQZ*KBg`;n@2+V8rk6Us5pMe?XVk!Z_;XZ zULxp71Qzsh;doGAGUObJj)jBiRuX{eRHg?^m-6Od8uTw6q{*G{7HWS=e35o0Vf=Fa z5CmtOFvf|o!H`37TbupKhAQtFNj7T@gtgitjBK5(sNGg!WVdSYh{7x&Bg%+m&k7T{ zG^`gFwM`s3m-M`L9xe&_b6THiaYw>l;W#fzNT8!(AUfb>apWXs$lxTVn|BCff1@y$ zP@(-5apc%DgmCO>*4KowzazBgA}5kwUV#HsIuSZhpEp8>D<TJaQ!?b(GsW;GeK!fV zQ@BMt2PHZ2u(2-MCA>^)tqz3!r0`C97zF|OtRS?OdRsW(QVBOD47WFZN4Q-JziI7o zOZ1*FEsgG7?Qo0vzVMPzw_Cf1z~0~kVcvjb1jQL60`ZMPPayhYuQ0t}Nk0_EW_|c} z9|<GF&V2R><HH;gV?X!5O-+Qt0(~q@B`nY<!pLOoR)@hq6(#{X4!1`;vVYZ7G#t%E zlM$0XIwWkB<f{lrSE2mwa}g`$VPUu(=1XBKC7(;U1^r6cN_j*WZk0SLOeIN1OnkB7 zuzaS`6Q@@B-Pa<~Qhp<jkyYTBFf!}{C;1!~j+XLUaVm-2{Js-Dqvl0tmHS?pc<4Bc zN9hnoOGgReG$*Azq21p42VpDaNntoT#_vaAtK=zRI6AuhCt<7PX<@i@UT{A@i&!aV zgyB}oUxX<o$q0%wHg@mmqle|tmh?AaUa(DlL&KdBM#htuwL15EDAc#LVE9KUQ$_WG bDG&Z#IV%|fut!h1ImE2+*{PDoolE}*zihb^ delta 2595 zcmZ9N+iz4=6vo#~XQoCo2ssUHQlh;8Mu{Ol_|O=MtugpwA~8l^uo-GGRfcJXHU_O6 z5K-`gtw*dEE=5sL<Wh^bdc!N|C{T@mfQc{0Cm)QL#KiA6J!_abLw5J~eQT|~*Is+= z!}z}R$;ouSDc#*{ma@w%Z*vp*yHb_u!9Bs{SsTfk4U{&N%Ke*0i&4Ji`XFNuOB*hf z3q>=_TF$ma{{^jgh7D@Qwk7!X2A;Dg;iXOeLmSr*Z5$feti`lilRYDSq>7tuJQ`|g zzjj;-zhdd$!3~;o`iGVhzHhKp>@SxHkeXG*bW2c;Xp%BqF5N$GnUBbb3>1ok<wC!< zCW1ZwXlW0h(|V)pN?IXfF9}~fU&dZZ@cjvXAi<{+{9uB=CSDpY3~*@no6g#Th7C_e z`NdZ*nr#TnS|$2z@tMwNrRH>ug&Mai*oz}soC3_X25Vi_r8am{vYMv=yj$ZYjcRnP zCF9bv*W#kyw%|5)Kuvm5_L`>voE=VU_zq|n<H-47ThPmjMB=?riLF+w@3LAa<%+sw z<LA6{o>qBf=Fhe$7e2)rwl!>1$Zp~5#JKk*`s>B}N&E`Cq`Evl^<#-__;tvCLNkXX zjT>T48fe&`k1;VT#M{a6MTur-`*8S9nA4I33&1PU)g6aZOQX4tmElt9o25|=?94o` zdcGyWd1!85Ab%d3b7mfz^JU^ZH0OJjIS(x6X={!qI)ji7cNbEk!<{b^r^B5yPbD}V z?soj?aOceG@ERxOQ*~VXMcrMCQnNEZceSQNO8Jn?Ycy7=c2oy`qpCySj|txs+o%-0 zM^{PQBf@=}M>RjFK`cJ3!-ovJud`M7j@U*;;j)GL0Gd52vNkqSUbqK7ChQ4NYIu)M zM{+xa1I;W*9CkM63bFYbj|-z6wX7|d{}aM!eW}pwF9qxp;rFjjjd7<2+TUtD@R)Qp zn>{T|!?OwZ3}+Ln5eZYpUTs37?$Mxme^f)d&kM1>T|UH2k~x7GJlmIry;OV~;lAiz z;pC$Gq@j}(odpN)*E|_xI*NyaKBc)&4<39At@OJx>9I@gD$TEouhh)OEXE=P6NE28 zbTob>MY|n}CYA@`>rxJB49B&4Ll|wRyr|t_VYIvTCRl~0MPrpQX-9-vIUU!Fi+WQW zojW?JnICtA{+7lU8r+d^Sgju$y)BW&z39h;X~*5#h@u}CM#B#uVonGX!^OZ)3Lj8X z=zh$1gh}vxoFE-IBaXhx!lvr8Lm+@>_pUGjw+piot^S@kIu+nq!tv)b@PRP?55)c? z`=K~G{_kssdqN)x<9`hah1!6OK9+!ifLYCOf3Tkj^I-WtusI9j<CXbT7#~jW)%#3% zy~d8XdZ&f)L*Eu_p9_bS6(bu{Zp43dH{2U{#9ev0zZ9;&qOZj3ujp%WH2gf~8{zsZ zIwQ^%q3Zx)^={9K{Hk(b^z6PBW<hM899n&HBnjW8nPi#00^bXh+!~#h-uOWnjh}1h qvNz9*dRH~^eC((s)dS7d|CKICV}WxT*f{}7RfI3h{IcT2y8i*?HclP@ diff --git a/shaders/rt_quad.frag b/shaders/rt_quad.frag index 82944b5..73093c7 100644 --- a/shaders/rt_quad.frag +++ b/shaders/rt_quad.frag @@ -395,7 +395,7 @@ void main() { vec3 clamped_pos = clamp_to_volume(fragVolumeStart, origPosition); uvec4 color_roughness = sample_color_from_scene_info(fragVolumeStart, fragRasterPos, facing); vec3 orig_color_sample = vec3(float(color_roughness.x) / 255.0, float(color_roughness.y) / 255.0, float(color_roughness.z) / 255.0); - vec3 color_sum = diffuse_tracing(fragVolumeStart, fragRasterPos, clamped_pos, facing); + vec3 color_sum; uint orig_neighbor = sample_neighbor_from_scene_info(fragVolumeStart, fragRasterPos, facing); if (orig_neighbor != 0) { @@ -403,13 +403,18 @@ void main() { Tracing t = trace_ray(fragVolumeStart, ubo.camera_pos, clamped_pos - ubo.camera_pos, 100.0, 0, 20); float opacity = float(color_roughness.w) / 255.0; if (t.has_hit) { - color_sum = opacity * color_sum + (1.0 - opacity) * diffuse_tracing(t.end_volume, t.end_raster, t.end_pos, t.end_facing) * orig_color_sample; + vec3 color_seen_through = diffuse_tracing(t.end_volume, t.end_raster, t.end_pos, t.end_facing) * orig_color_sample; + vec3 color_direct = diffuse_tracing(fragVolumeStart, fragRasterPos, clamped_pos, facing); + color_sum = opacity * color_direct + (1.0 - opacity) * color_seen_through; } else { // Todo: hit sky box - color_sum = opacity * color_sum + (1.0 - opacity) * vec3(0.0, 0.0, 0.0); + vec3 color_direct = diffuse_tracing(fragVolumeStart, fragRasterPos, clamped_pos, facing); + color_sum = opacity * color_direct + (1.0 - opacity) * vec3(0.0, 0.0, 0.0); } - + } + else { + color_sum = diffuse_tracing(fragVolumeStart, fragRasterPos, clamped_pos, facing); }