From c23e2b6362a0ff949290dff7f622067a147552c4 Mon Sep 17 00:00:00 2001 From: attilaz Date: Fri, 18 Jan 2019 22:29:57 +0100 Subject: [PATCH] 39-assao: use buffer for atomic to support metal --- examples/39-assao/assao.cpp | 10 +++++----- examples/39-assao/cs_assao_generate_q.sh | 4 ++-- .../39-assao/cs_assao_load_counter_clear.sc | 4 ++-- .../cs_assao_postprocess_importance_map_b.sc | 4 ++-- .../shaders/dx11/cs_assao_generate_q3.bin | Bin 8028 -> 8028 bytes .../dx11/cs_assao_load_counter_clear.bin | Bin 206 -> 206 bytes .../cs_assao_postprocess_importance_map_b.bin | Bin 1059 -> 1047 bytes .../cs_assao_prepare_depths_and_normals.bin | Bin 8493 -> 8497 bytes ..._assao_prepare_depths_and_normals_half.bin | Bin 4913 -> 4917 bytes .../shaders/glsl/cs_assao_generate_q0.bin | Bin 15273 -> 15275 bytes .../shaders/glsl/cs_assao_generate_q1.bin | Bin 15273 -> 15275 bytes .../shaders/glsl/cs_assao_generate_q2.bin | Bin 15273 -> 15275 bytes .../shaders/glsl/cs_assao_generate_q3.bin | Bin 15273 -> 15275 bytes .../shaders/glsl/cs_assao_generate_q3base.bin | Bin 15271 -> 15273 bytes .../glsl/cs_assao_load_counter_clear.bin | Bin 1561 -> 1532 bytes .../cs_assao_postprocess_importance_map_b.bin | Bin 2708 -> 2698 bytes .../runtime/shaders/metal/cs_assao_apply.bin | Bin 3075 -> 3453 bytes .../cs_assao_generate_importance_map.bin | Bin 1655 -> 1996 bytes .../shaders/metal/cs_assao_generate_q0.bin | Bin 8741 -> 9574 bytes .../shaders/metal/cs_assao_generate_q1.bin | Bin 11275 -> 12144 bytes .../shaders/metal/cs_assao_generate_q2.bin | Bin 13020 -> 13901 bytes .../shaders/metal/cs_assao_generate_q3.bin | Bin 14087 -> 15318 bytes .../metal/cs_assao_generate_q3base.bin | Bin 8841 -> 9674 bytes .../metal/cs_assao_load_counter_clear.bin | Bin 267 -> 287 bytes .../metal/cs_assao_non_smart_apply.bin | Bin 1198 -> 1592 bytes .../shaders/metal/cs_assao_non_smart_blur.bin | Bin 2010 -> 2449 bytes .../metal/cs_assao_non_smart_half_apply.bin | Bin 985 -> 1339 bytes .../cs_assao_postprocess_importance_map_a.bin | Bin 1533 -> 1945 bytes .../cs_assao_postprocess_importance_map_b.bin | Bin 2110 -> 2425 bytes .../metal/cs_assao_prepare_depth_mip.bin | Bin 3294 -> 4134 bytes .../shaders/metal/cs_assao_prepare_depths.bin | Bin 1626 -> 2171 bytes .../cs_assao_prepare_depths_and_normals.bin | Bin 9047 -> 9888 bytes ..._assao_prepare_depths_and_normals_half.bin | Bin 5673 -> 6298 bytes .../metal/cs_assao_prepare_depths_half.bin | Bin 1158 -> 1571 bytes .../shaders/metal/cs_assao_smart_blur.bin | Bin 2242 -> 2624 bytes .../metal/cs_assao_smart_blur_wide.bin | Bin 3159 -> 3592 bytes 36 files changed, 11 insertions(+), 11 deletions(-) diff --git a/examples/39-assao/assao.cpp b/examples/39-assao/assao.cpp index 2a1e5d74f..fe9e9fe59 100644 --- a/examples/39-assao/assao.cpp +++ b/examples/39-assao/assao.cpp @@ -363,7 +363,7 @@ namespace m_recreateFrameBuffers = false; createFramebuffers(); - m_loadCounter = bgfx::createTexture2D(1, 1, false, 1, bgfx::TextureFormat::R32U, BGFX_TEXTURE_COMPUTE_WRITE); + m_loadCounter = bgfx::createDynamicIndexBuffer(1, BGFX_BUFFER_COMPUTE_READ_WRITE | BGFX_BUFFER_INDEX32); // Vertex decl PosTexCoord0Vertex::init(); @@ -630,7 +630,7 @@ namespace if (!adaptiveBasePass && (m_settings.m_qualityLevel == 3)) { - bgfx::setImage(3, m_loadCounter, 0, bgfx::Access::Read, bgfx::TextureFormat::R32U); + bgfx::setBuffer(3, m_loadCounter, bgfx::Access::Read); bgfx::setTexture(4, s_importanceMap, m_importanceMap, SAMPLER_LINEAR_CLAMP); bgfx::setImage(5, m_finalResults, 0, bgfx::Access::Read, bgfx::TextureFormat::RG8); } @@ -697,13 +697,13 @@ namespace bgfx::setTexture(1, s_importanceMap, m_importanceMap); bgfx::dispatch(view, m_postprocessImportanceMapAProgram, (m_quarterSize[0] + 7) / 8, (m_quarterSize[1] + 7) / 8); - bgfx::setImage(0, m_loadCounter, 0, bgfx::Access::ReadWrite, bgfx::TextureFormat::R32U); + bgfx::setBuffer(0, m_loadCounter, bgfx::Access::ReadWrite); bgfx::dispatch(view, m_loadCounterClearProgram, 1,1); m_uniforms.submit(); bgfx::setImage(0, m_importanceMap, 0, bgfx::Access::Write, bgfx::TextureFormat::R8); bgfx::setTexture(1, s_importanceMap, m_importanceMapPong); - bgfx::setImage(2, m_loadCounter, 0, bgfx::Access::ReadWrite, bgfx::TextureFormat::R32U); + bgfx::setBuffer(2, m_loadCounter, bgfx::Access::ReadWrite); bgfx::dispatch(view, m_postprocessImportanceMapBProgram, (m_quarterSize[0]+7) / 8, (m_quarterSize[1]+7) / 8); ++view; } @@ -1159,7 +1159,7 @@ namespace // Only needed for quality level 3 (adaptive quality) bgfx::TextureHandle m_importanceMap; bgfx::TextureHandle m_importanceMapPong; - bgfx::TextureHandle m_loadCounter; + bgfx::DynamicIndexBufferHandle m_loadCounter; struct Model { diff --git a/examples/39-assao/cs_assao_generate_q.sh b/examples/39-assao/cs_assao_generate_q.sh index 8509d7edc..fbd140af1 100644 --- a/examples/39-assao/cs_assao_generate_q.sh +++ b/examples/39-assao/cs_assao_generate_q.sh @@ -59,7 +59,7 @@ CONST(uint g_numTaps[5]) = { 3, 5, 12, 0, 0 }; SAMPLER2D(s_viewspaceDepthSource, 0); SAMPLER2D(s_viewspaceDepthSourceMirror, 1); IMAGE2D_RO(s_normalmapSource, rgba8, 2); -UIMAGE2D_RO(s_loadCounter, r32ui, 3); +BUFFER_RO(s_loadCounter, uint, 3); SAMPLER2D(s_importanceMap, 4); IMAGE2D_ARRAY_RO(s_baseSSAO, rg8, 5); IMAGE2D_ARRAY_WR(s_target, rg8, 6); @@ -410,7 +410,7 @@ void GenerateSSAOShadowsInternal( out float outShadowTerm, out vec4 outEdges, ou float edgeCount = dot( 1.0-edgesLRTB, vec4( 1.0, 1.0, 1.0, 1.0 ) ); //importance += edgeCount / (float)SSAO_ADAPTIVE_TAP_FLEXIBLE_COUNT; - float avgTotalImportance = float(imageLoad(s_loadCounter,ivec2(0,0)).x) * u_loadCounterAvgDiv; + float avgTotalImportance = float(s_loadCounter[0]) * u_loadCounterAvgDiv; float importanceLimiter = saturate( u_adaptiveSampleCountLimit / avgTotalImportance ); importance *= importanceLimiter; diff --git a/examples/39-assao/cs_assao_load_counter_clear.sc b/examples/39-assao/cs_assao_load_counter_clear.sc index 83e55cde8..c3323f223 100644 --- a/examples/39-assao/cs_assao_load_counter_clear.sc +++ b/examples/39-assao/cs_assao_load_counter_clear.sc @@ -6,10 +6,10 @@ #include "bgfx_compute.sh" #include "uniforms.sh" -UIMAGE2D_WR(s_loadCounterOutputUAV, r32ui, 0); +BUFFER_WR(s_loadCounter, uint, 0); NUM_THREADS(1, 1, 1) void main() { - imageStore(s_loadCounterOutputUAV, ivec2(0, 0), uvec4(0,0,0,0)); + s_loadCounter[0] = 0; } diff --git a/examples/39-assao/cs_assao_postprocess_importance_map_b.sc b/examples/39-assao/cs_assao_postprocess_importance_map_b.sc index 979dfe40c..caf7695a3 100644 --- a/examples/39-assao/cs_assao_postprocess_importance_map_b.sc +++ b/examples/39-assao/cs_assao_postprocess_importance_map_b.sc @@ -8,7 +8,7 @@ IMAGE2D_WR(s_target, r8, 0); SAMPLER2D(s_importanceMap, 1); -UIMAGE2D_RW(s_loadCounterOutputUAV, r32ui, 2); +BUFFER_RW(s_loadCounter, uint, 2); CONST(float cSmoothenImportance) = 1.0; @@ -49,7 +49,7 @@ void main() #else if( ((dtID.x % 3) + (dtID.y % 3)) == 0 ) #endif - imageAtomicAdd(s_loadCounterOutputUAV, ivec2(0, 0), sum ); + atomicAdd(s_loadCounter[0], sum ); imageStore(s_target, ivec2(dtID.xy), retVal.xxxx); } } diff --git a/examples/runtime/shaders/dx11/cs_assao_generate_q3.bin b/examples/runtime/shaders/dx11/cs_assao_generate_q3.bin index a26eb577b103b1a6c62a289f89b1441c7ba35c02..ee238de05aa2e393cb8f070672d27725ccbe0635 100644 GIT binary patch delta 41 xcmca(cgJo*hk!uXmBWYZcG}d&Xfk@RWq56zv6G3BV{;JmGC@YC%|Atwxd3LM4~_r; delta 41 zcmV+^0M`H9KHNT#h!ABqg$!2@l6HFS9}o=D_TaIYxdH(gvr+@55dp%p`4nRcaf=ZQ diff --git a/examples/runtime/shaders/dx11/cs_assao_load_counter_clear.bin b/examples/runtime/shaders/dx11/cs_assao_load_counter_clear.bin index 8541bfc92a8b175d73e70025246f60f6f8a9c76a..ce92e7a20f0ccee17745a0fbfeaa612df51764b2 100644 GIT binary patch delta 31 ncmX@dc#d&`n1I_#UhXi-A5}qx2VVVI$7VB8&6km5Vo4MLzq%E9Y6&E46F=~ dCQfi+46FIoN}Z0S;ztS;@Ga0|1D6 BE9d|K delta 120 zcmZ2ozOtO(IoN}Z0S=~ZIoN}Z0S;ztS;@Ga0|1D6 BE9d|K delta 120 zcmZ2ozOtO(IoN}Z0S=~ZIoN}Z0S;ztS;@Ga0|1D6 BE9d|K delta 120 zcmZ2ozOtO(IoN}Z0S=~ZIoN}Z0S;ztS;@Ga0|1D6 BE9d|K delta 120 zcmZ2ozOtO(IoN}Z0S=~ZS;@GS0|14H BE8qYC delta 120 zcmZ2kzPy~@IoN}Z0S=~Y8jIC@;z^NzKp8sZ>ZR zO-oBHQYenk$xlpi&M(a?NiA}Mh*c|;X6BWkN=3(7E7VSIW(|@=(GhJBt6-~OV9iy_ G#Q*>pB`cl) delta 166 zcmeyvJ(EYkIoN}Z0S?&MHVPQ9Iu{umm1gQFBxUBMWag#Y8fYq%7iE^D=I7;9DwO7B zrsWsqDwJmCCZ?wvxhNFJ=j11*IOmtkYfVmfT5YoQAY#=DrI~pps8Z3f)(W+oud#ZwNF|o!=Vm55rle?~XpT0BogB>N2mlTy BD&YVC delta 125 zcmeAYog&Kb9PGiy00)g5`TJNci;Rs*Gj$Y_GV@Y0^U`gNG!;toGSl*laurH5a}(23 zja(Fp<8$&8Q=Icl^GZ^S{7Xv;N=rf=!!|!*^=4rMt8tucz$GRIm(fwkEK5x`(lF3b LFwmUr$>j(D%Bv;L diff --git a/examples/runtime/shaders/metal/cs_assao_apply.bin b/examples/runtime/shaders/metal/cs_assao_apply.bin index 18d50ca6e18e10dd3744e48ca0c34d5d22fe2f7d..14bca91a18e659089e9deab760343b3874981e28 100644 GIT binary patch delta 526 zcmZpc_$xKRfXS72qEVo}Q+irOaAIyjPHK^ni(^qyVkK8KmjVzJLj)Ca$C$lG377Ypz;rF0SH|qSE9N1&~QW;hwpP>8VC8@kJI;bD&C%Qf$(4@)Jw! zfCeITPpr(C_?MH($ZRqPWBBAe#@Y4grYIE0mn0UYrj2R*@iCteEBm;4;9wcZrkW2)hsc=fax^%M5DmTa*T02#fiBEIjKbo@fOAglXDm)nT!o5w=;(G>nJ29C#Mz{ zTUnJCWtOB)zQ;IwvLo|r#*oPdELVVvHnXuFV+QgraOew%q*j!a7NzPz%+dfGRnMik Z*_~665u4=ZdM+cZ5|cr?esZ@k0ssOsH$4CV diff --git a/examples/runtime/shaders/metal/cs_assao_generate_importance_map.bin b/examples/runtime/shaders/metal/cs_assao_generate_importance_map.bin index 616f0d50102d6c349bbd945c1cd215055ce08f3f..a9b12854f43d434b08f69d03439e45c89460eb7d 100644 GIT binary patch delta 443 zcmey)bB2F{GSfo#iK>D1PU&eC!HKyAIjKcPE{;V-iIrT{Tna!?3=vewjfb+V!NMh} z6(yxbsYWUBi6F%`X*v0cC3ZknPzh_UT5B$@;*z4$sKg_FG(y)Pc2cf#W1@XE*S!Gq5{w%$Q~(&2~%$ jjOrjEh(q<#6H78ui!_jo1WH0fee*$PD<+8kKdjXNXKk9N delta 116 zcmX@Z|D9)oGLsM6MAg8_f{c!$$@zK3C5d?@3dM=J1v#lj3h^eE=99e{!})a-5|fit zi;JzS%8N2fQYSBBoIRP9IhZkIatyN!W60(j<^o31kkpEj(xOzo^u&^k)FKU#W*vpe SRjgr~vsoW80@VhxR|5d0Z6%Zd diff --git a/examples/runtime/shaders/metal/cs_assao_generate_q0.bin b/examples/runtime/shaders/metal/cs_assao_generate_q0.bin index 6db4f081ee33427c9934af6e9a0883b46d042c99..0fd663254bb1110a768b5cb3cba12b9afcd6d76e 100644 GIT binary patch delta 2610 zcma)7&u<$=6tc4GOdy}5&?mr1c6Y6tR-^Kg^kutk)-uvEr-+XWO zyX8OLxN>)OWjGZ429B=eu1(gH`4wZ^M3IDn$=U(P-WG8f(6c zi0{7rdez;ikma(s@v&PBaQgsg7b1KRAS`*Fy9Y1<2#dv%V`ozz?Y$qN){jq5#s)}H zXUF3ySe>6nuV%u`in*79CfG?zN(ZfqhR*bk+cEhTFF)`i%ll{@30~*mWqMqOR=Y?- z2l=f{&#QU=jV%eMz8S{O0AL=8{d{%oFi6#hQMq2;u6b2=tLpBo)*9YgB>?VWe*e7V zd*T?|eQ@w|WJ8$mE_oXjzm0p&1)+TxU3w53o7+B-%Q|%^dl>t00M}BSJM4#vxJ1q;AcRu(>x3au8#)Fh zZ?7plH&H|X-)Cnz&A|C_D#tFzXNPp#ly9*aX*yE0*wcKReV>gE>z3t|qD;%gUo(iV zK@>06PypFB)#eK=pPGpPbo)C`jOfcNvQ^0RsF4ULv56IT+gl6??VK7AU>2uwZfdtj-~XQXl%8O z7l!S&Jqmpa;WEHOU=OEWHc1gX(^T!;DHW0Wz8i!+o65pfM_4YUj$0@K+j=4#>^qsT~?qFQ|X zx(#Qw+y+2Ba{vR!nEjrcg8R75KU@U$PdyYd91#0@df_G>l$bt>3GlWkprJca0nRO# z6)?Q?4h-}LFj@&(d?8BzdI=lKmm-v~JNer$5g5k>;0NZFo#d13+kAWozA9>qeV$CR zU-G;6h>gNR54fPQXZ*pd4QGcNMDP9%icbvR$1~u5XTvD_O8!Ud8oXU^)2|?bHiapk l1tG-L7)@1vRgM5}%O97GSI(NO4}@NA`4JeSyphNQXZ`z zs^h8(6+Zwq=MR7c>n8|Pq!2%UHXRaNmRwKOd%sunXH|IO^oqL~s z`2G8n*FL^JKGOR|A5YH4<0J8r$jI~J4X1&3xN+~|PczbiF){=HjK7DpR8#%YcY8xB%X7lpp`;9xTIz%qi&b04r z6G&8q4-cn5jnVk~w7aK+l?m4S5r%lgiI`=#K{Egz2PGd0(h}%Tg!_4|^+mnm*fK3K zglJ#FgXDF`c(}bPg>T&5!C@rZri+U`@L_Hi;;F@$6!g#A1-AI0I1a7d?RR7>~>2T#MJbSJ7c{GFbsAj=dZ27bwB;Z|m9&nK@q zW#RG?TSkRaYRN89x>^q97+$^beM-Qz*&=f&S_p&Bc+)!MAK-FEeEtx?-*-o)|~g7_&d4J+B%Rf=@`kyH2F?;}dD z$->?@)g8Xez7tcD!%x{{ObOE)gZ*3%9|I`l+;ah4Dyg;JFTqhR1&8^uq6jeFunXGf zH>;8d8r9fj$<2M__yhs5z6J>ob9w8Uqg-ZOaV6MQIJ%IZcEcX-dlRuTfVElY&44Oi zC8XP-li#3L=AH)!g<>Q?^W{gS2@EZ*Vq++2==IRIAR(;zzHb|n+Pg%7rt9#+4js#z!9Dy8suY zIQiKLU+4rER7{I|Wt-se>-=Bk^?Ik(Zq!}-QL`1}*o;fee%c&tQ$>F={4&7Hg^K;i Py<8~3`o;6n_agrRv}V^5 diff --git a/examples/runtime/shaders/metal/cs_assao_generate_q1.bin b/examples/runtime/shaders/metal/cs_assao_generate_q1.bin index 76eebaae879b2e575b0a39bd13dc53ab1c944821..589df255e9f9a883539794192b884f1b22176738 100644 GIT binary patch delta 3877 zcmbtX-A^1<6o*|}DHIBY{a}G*+5*nJLmk)*YM@X zFFx%#f9>Mow%{jzzi0I1K)JA1a+c4Rwl=(?tGvGKcusqJTU&cuC;YazW#{g*_xBc7 zZdI;1>zivumtE-E?ULZ9?7vIvh2UwP#9p!DZMj9ZeC8Gad#}NMAe!&GJ>S(;_S~%{ zPeR12?_OGWR*LLG!CkrO*a2<}fa?b$d=wzO;kr&0V46S*4(_zF<$m?Um~KA$_3z#+ zvzc^O+6D8LN*iU*+3+MXUY81-*`m8I6K8q;gWNaVF0S@FuLKT@JAJ84K#T8u15dc! z54a7&U6ghPmuBE)tQXXV_{4qbomJN@x&IEG@(;CC(AxljYEt6fK+m2O=xV{fR4#0k z+;wMd-PycW+H#kQ0dgctyUho$`yp=tZwd@t^A;R;rRddgn~or~M@J%vTdNx$lM0%i z*Tv)hPvW>{jw^dQ_o+kr@C=2^sLLpbBs5zIt%wj+n0Ax2f^y4>LU8FV5Zh`5gi8g+ zm>!X$P>)&$>BX3t7d-|$5z>|D`my; zJ}bJixZ9VkZw5I!BLR@9+v2-{OC2WvpAeF`J}4ixRIrsSQmW#w!DNqVVg2}$3QD?7 z3#|1e;?Kb}yqo^J$?-jBTIes_Fu78xbA^GV7{F#=x0<*Z*DO=CPh>kVI^sb>idm}A zMv`xGrfG1J2;(xKS*B8%L0EXG!UI$6JMpq(BMZYHO4LRdy2(04c-RD zbb2|aYvO+TR5!PB(j2B4oPUxYGIgIm#w}?I{DC#%1Ev!iJgX@xT?K(IdWVv)8Ys_i zNz;;yH6i;vDpdetcy=1y25;UT8j3?!iB5o zq}iZ3(;+nqOBMBX=E97jz>J(6yp$M{Os4ZB#}G9Vs6W>Edj5q^669b#YY#U1}F#hg2n4$T6xC&4yBd zxCWk4heP0IU8b@V_Dt78o^ghrX-69TN>DKbei>Mj;Bi9h?)$JTRPfDNAuL`=#Eemqy8LN9M2qP z`8*JTQ}K9c9{Qt?=3zgG_a`9$1wn>>pQiifGp zkzfkIG+i7Y=}^I%m*)`BfJ3><@KaDzRbVh1(>M?)#b6WpcH@{A}_Vz7X)Rk zMZ*KAC)yCCu}FeYQ=!lW6Gwq8UW}#u{z4(#FG7ql6rnOs!S+Y0fzUY0b6A%cW_W4@ zAxG*U;3W&}w%t{)h_SE?Xel%F f-vN`M*>L<5d|ZoX(_`Z4bdvs`cs4y3d$0W;2h8XB delta 3223 zcma)8&2Jk;6i@7yqzOrry8ejck8P7W>)77x&g|~&Bmyc?1gd(V0;Hm zAdV3#6-NppniCgL{{x^BS0cdyZXm=N#EA=Pd*EE&d%L!`+m@0;cKqgj{@&NzyZG_B zsTW^+<(ZM-FSa+8A0HnX9~m9_wX%2Stm=)Pi3#)0kE0K!&vDDsp3~m{U~OW3d#lxM zY_+w^o7;`Ht<^baX7sMrxO#1KqluT?j$V==qdWIbY<7P1a8+xpuWz(ktE)TBEA0)H zKhl`&T-j;^ljT@KeSY-KIDY>*YHYc3Z9)tFkcS+whBVSnMD{o$j}Xy>u%fK2i*(Pl z)Lt@i$}^pa6xZsEIc9{4L=klb5MoR^>aQeE3l3Pco1Lw7-3LMU;~Om|$B+*!s(Xub z>Z{qQr14Ip{q9CnCkU$=aJqu4uNM<)Kjp?e`M(&a)J|G|Rytsov>UtXemXrNMW3MF z$|t8GR9DIY>25kRDNHN)EfxGO3lm*O9n$Cy!^S)iesDSPFt4sh0k?>#$-mfiWtFR7Y-as&FGaQHc-syp$p(DX&PsYN=sM2&t}wn zb4xLR=gYZ|k`7j5p#Rc#8*Ok~-OMJ`>Fi7_IBxfkJjR9kHd~BKrwr(3)V*vv=5lpt zp2cl}q=Y&!hus~2z%`!|9 zN12Ct{Gzsmhq`1(t7tlsbRS=17c?^zt{@hI8{M*YLUTH5H#Zx{iv1*4n)1vGMmKOl zsQp|Lv|S)kbWW73K0r*bUu|#JJ4UB|tPu
OlrZL4k(&7`CW%0a;Bq6=f7mz%Z& zyQFY{`1a`_O}tfiPaJ$%Vs-X=9eHV?(BX*-g%%fQ5>^ceg9CxSSLY5SqzsY-iu)~u zwmvK!NI8Sz1rdT4K7W51V|W`vZ7qb_!$t1r z(C+{$T8@hW{DZN82g_2wEG80I&V;dlfPt>7JuU4I5zOMS(YWbgqZx~M!1Bg*jmmIa zmytl)X)A=3P&|Wf#eh+XLyZ?=xl;X9d43Z8h8G4lxjIs5C-pUq#L3#S`m>sy0(x&iSBGl1Zh&WgTDUvJ4zmQWIJ{u6jE5Ig57=)2 zoiApFZix(U2tSuJ4=y)a?bX%wO?d6&W|lC`Nrw#&B@;HbI%<5M==VH5?J-Y~m%oiP TJ?LLpDXP*+DmbsiPLBQyUlkIA diff --git a/examples/runtime/shaders/metal/cs_assao_generate_q2.bin b/examples/runtime/shaders/metal/cs_assao_generate_q2.bin index d9361ec3f5be9d52fcc252cd75d6d827a0ad38fe..5e198bc74f6d9cc74bd9707ef9aed1b6d60b6aad 100644 GIT binary patch literal 13901 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 delta 3803 zcma)9OKclO7_RMvyqgp|ah%xk=Dl{}_3q5>&Tc~6l!xF@p;i=$s;VNBI;Fx%TE`)d z5h}fagg7*s3JD2SMM6DS>KPTO7cPLfA}-}naVRQ1a75w%|6Ru$J5YS^jA!P5egD%x zlzuJtz4F!@FC6hd;oZJeXXla5BcUVTu-(&VWi50%EcE-|hxU%X!wp9{u6+2>V)x3% z`evoDUQt#{8-q{u7Aa}b=zI+R{RgXAq80DjJVSwKkU$KIz$n|Xr^aX zJa=?M?hZ!JJG#|G1!fzrWi*}AVe?b2EHh^5El(K}hWvYw4+{j54iQTg~`U0z6F4Fh{?rRekva;9jegmbbL6<*S8q zVQupQNxDdEQB#qbSL9F0k<&<4doI~_{YB;w`4pV!M*uHxi~T4t(G(YT!9c{tc3tlm zK$!E36Fq_`nuxbC2H_MMdv#u*dWCm4(Sg7ZAi!1IsczRYh#v)+$KI0H#@<%A*>F78 z1WT*#kdts*tIf-SiQy9vq=sXnwtkT2$cY%Gx~9_?!VL;Jz%NT#07;fZGTo9l(@Dn) zP(PO#voApG+IB-U3H0Sda=_14(Qc615zW+|{KJWb&I818c}8iA3hWMQ&fE_{p=0hQ z09>v!xTB0ggwRK@fKL)>8>y&&G{rP$wxd<$naPp31>g|{`eyT5850j!${UkB?85sDjys%sF4A4Y&$5(LUW9+pf%}1ign){;mHvsCnYc-QBI(1)#aG-&B=Xp z!~rS7GY9xKKpT}GPql}k$kmJ9-KiKAz35aqBxHVih)QAo^xLVc(1-1o*Q?Xzu+3VI z2WGCND6|guF_?3EW;lu-_LIh|t0sfGIu*iiEUN?lZf};QDbCPzyVa8p^shTJL$OwV z;N-QDi7*tA+v*gIH1f&pYiX*D$f`9cpcU4TRjX>2AdDfCW7nJ8E^e6bAnl3H-##N?%~X7b}q~tSRhIpml>8WXc)cOTpCIv z972jW9nKk8t1VGluH zGI^Fo<CzVZg=MBY0vZOk87yyr7QOBqbxGE8;L$eqATUiDTB;lQ zfN{W(dgZ#-6TxxdSvKBYM@Ll7Uj$thH{6+<0wXj)PSXe2+|3jFCKpDUGn<|beFgHFk sALi=WO@9Uva|6_e0HT>)g*wCW3(6q@~ diff --git a/examples/runtime/shaders/metal/cs_assao_generate_q3.bin b/examples/runtime/shaders/metal/cs_assao_generate_q3.bin index d90580cb79f76c7544b7ea6d2061fcaedfe73f2c..27d067c0f727473d4c3ae529a71590e735e5ad29 100644 GIT binary patch literal 15318 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 diff --git a/examples/runtime/shaders/metal/cs_assao_generate_q3base.bin b/examples/runtime/shaders/metal/cs_assao_generate_q3base.bin index 5029fbf5c3a889cfcded2c2d2841325404989a66..62cc72c83c4bb016e43b64ad230935276d863721 100644 GIT binary patch delta 2694 zcmb7FOLN;)6prnfW=vkL<40^OR#OTxjTPx$NtP0zvzVYOp zskN<*=f;9xEKJ>#+wh5q>TIU94Avr&TWYoQ~Ia9kTPvE&zM4!S_J48v9~37HfHKd)pHc@q?Rh z)$OW7)+=uHGusSsM*t}2B777eTz6gj5MTlj7LTW<`(2+L-U@5Rqu>6Wj*v28&t~Q$ z#8iHsoXv%p5x0-K>9i{M_nd=P)82O0ou+qhtI>A1ogjHX#XdH~(FWqHJjK9{tUowM zFHl%wmas4*0zp00vfBwEd%kD<93S$7(uq^l+ld#ByQm{5hoJTwZr!fc?WUh-fHzPY zjDA4zL%+^_;6v2_Gw+7&RvoX4JEVfp9#I@pOyqabk|$Ohm&vVYd>6i}L9V$yM9C=eQEPlgOjE%6a_SSSX2VE zvL<(y5EdQ|;Q=@&@=LRaW3TWKRgy#h0-9) z%oS*NVw%W<%RfN6cPm8EEl87Rfx`fr**vIWK`T8P2b>|80QQ5Bog${i3Fm-N1R(<5 z#U2$BOvy&88aT2nL>Rp}dz#(vZs?p*E4jD(!IMRo#F}&8sR0cTU=c%|B$lpWsOXSA z6a;7*3);O90d?N(sKB1)(h|%nCAtdA-Ik}I%Uhm5bX%T%m&;7*s^8;X>oiWfr3bYE zloIp{)C!PuNrIq$KZ6R65F8lYII+qWTh3pP>LyGQFX(Dv_4za6kC4t;Vi7(-Qi&6a zZQaKxQ-twt#X|4rG8J5)^8a8Iybdv%kLkSh6x;!y3t?3SI>j(CfK4&1!*R+b5`W62 zs;WMh_|VU#=5t9E-x|53ih;`qE28yqnN6t#8;g^PI=F`505bDoQw1uoUBLGqGAFuZ zvM&p10mcH%dDH9Iu~+~;+!QVq_Ell-8VpQVL&I$#?b4}`mnJi)x{m(-69T%qu4Drb8cUJU}P3df-D?)0x5R5$pLpkBWjZ2G{B&VIc_ rm7dW&aQ8e1nKa;DfP(VdT7u0%@n3L}F>z7n_qMoLU#cd8k#hXuwy&dc0I9^_L{~w^YDEoAgC&&NMz9nHc%nU7`Ie%lGYFM zKov-=*wKu{8h!%m26iAe2v#gvb%R)UkD#1yu8k9?^};jvoAW*9%=u=1ef!I|F5P@* z>!pdo&w6yJFf%hTGm)6sDLvZW(Z`8xE8vfRNj#f>P4SSu&OUv(d9k^_*X=d-daT>n zz29ziSY0V8#ux9j_ZvNF*3{#_7IKNpYpl_1wz}Pojf2j;UP~ulY0UQT?GZ?LBG3<0 z?@iM9N2>an;KAlaHuw>U0`X{MGvUc7`16cn%t$$cb5MC`?9q5!l>XX4JhvvLAL-u~RW=|ldY%4W(}_uN%>F9+$8_pKjn$2fL zw>plYag71(2SR_9-f|*^NCxj7jq(vIW;a-j!6%umNy)kXhh3SXZR+AOCVr&!PwC{A z0!>o+K$~)uQw zQWFX_2cdt+IhQ^9Z13NdW>21enyXGKAvDXUF>)G95IjJj#E1(s`noSulYl z1wx&Oc#fi#f8$W^v0C2G)p_PBleD|+@xW}C*~Zd3P%w@uxE&w zvJiu(?H3c{^K-=5^Eh#H9!e;AiW*V#Kn=5e>TG63T;EvEmksoPR)C3Fp~-1h<{}=m zLc!sfOY*1|Q-TO1O6;`oh-bqIur<0CFvOe);enGI7QV+Bd0I*pAYEdE?qfj$A`VUS z;Tz&ErRE^&A%g3LavoRcfOP8Y?t>2LmwTSRS>^>CPTYMF1)=V*kikT)jJ&D5Q{Jdw z|6JxdY~#7!RLXZ(7AN7RudZw)@yHk+sI+xNr~d1%i1(vdp1A!+od*F$A+8NbNuGI} z%mI*o6_1Y&xYKSh<1QfuQuu#YRCU-Z<`pzei#EWCnYYkEzbg8}#b92=#;Rvt#l~t; Lf4{n5y_xtAK=t2d diff --git a/examples/runtime/shaders/metal/cs_assao_load_counter_clear.bin b/examples/runtime/shaders/metal/cs_assao_load_counter_clear.bin index 1574ef41657661569806defe405497b56764c0e9..5099c3c6a350f52e09f3f03cb942c03e17ec1b29 100644 GIT binary patch delta 198 zcmeBXn$M)~9PGiy00oQ;!o~49`H3mc`K5U!sYQAYDTyVCjEoEnj8OP;qNulaaY<2W za)||D*ivJF zBh{7+o-3{JY9!Ct%%rvf)0KTqu}ZwQ9HJ}=a&9!b)S4+pw>6biS>-KLJ@ew4D6J5<8$OsDw3Ftu+@{aY<2Wa)|=S@St$d+{E-$BbWFh3#id> zGi=g?FttytbeVX|f3gMRY_Q{y^(z#|mn0UYrWRDcbr)B0P z<^%^j`a?Yok;e=Hph;k*dLXq>t5CxTWEr|?I+F_+MVM->C!b?{?4<_}5WVuE%#u`% og8Xs~AVAWFqy!SeXp+!ipZtU=RGnD0KFnc6tKCY1S~->p06MkFng9R* delta 172 zcmdnNvyO9u0aF>vM5DmTa*S4z$@zK3C5d?@3dM=J1v#lj3h~Ak77Dfs)ssUQgZXt7 z5|fiti;JzS%8N2fQYSBGoIRO~`5t4)@C8b5FdJwG|Af1zqSVFOiuVV?r NDz43nU3>-W1ORu2I&=U4 diff --git a/examples/runtime/shaders/metal/cs_assao_non_smart_blur.bin b/examples/runtime/shaders/metal/cs_assao_non_smart_blur.bin index 1b3ad979c87bc7ca86bffe115b9984dc533e3a06..b96b8a125545a7597c1de8a6ac021180b3c6fd66 100644 GIT binary patch delta 646 zcmcb`KT&vs0aGOBM5DlZr}VUn;Kba5oYW#C7ssNa#7eGeE(IVch6pO;#zR@wVBwO~ zijvZzRHKymM37>ew4D6J5<8$OsDw3Ftu+@{aY<2Wa)|=S@St$d+{E-$sNwNN=@w86 zz#8Q68#S>qe&Uy~$rBh^CdV>P2RjziJcZ);lEk9))Di_-95zkM27}gLoZ7`R&hl(*~tN{t8mC2#UU;} dIh9>@vId6=kj})RMs~6gM-^kp<_R2(i~xNgMqU5_ diff --git a/examples/runtime/shaders/metal/cs_assao_non_smart_half_apply.bin b/examples/runtime/shaders/metal/cs_assao_non_smart_half_apply.bin index ea9f2e554e10bfc3e286a307294684fb8df5eb37..1259defd74659b67aaba1de06d6c97eeba775175 100644 GIT binary patch delta 476 zcmcb~zME@;0TVOpM5DlZr}VUn;Kba5oYW#C7ssNa#7eGeE(IVch6pO;#zR@wVBwO~ zijvZzRHKymM37>ew4D6J5<8$OsDw3Ftu+@{aY<2Wa)|=S@St$d+{E-$BbWFh3#id> zGi=g?FttytbeVX|f3gMRY_Q{y^(z#|mn0UYrWRDcbr)B0P z<^%^j`a?Yok;e=Hph;k*dLXq>t5CxTWEr|?I+F_+MVM->C!b?{?4bt_5WVuE%#u`% fg8Xs~4J1uS3LxQ&CJ7Dn$&Z*q)rnQ>#oP}7tq-WL delta 124 zcmdnZb(4L90n>v|?+9&3u zO?($H*_Ux9*hR?t6^i3a5{uGPOB8G|%&vw@hCm#r0CWhl7mDLEa|`l|N)q#uQ+*Q) zpgx7DLGe1!Ac#r>s8XnH@UQ_{h0QFT$@Pp9OtsdNA2LR;=mCRdvK5mIn6WvWDUDGZ xBm{Ar9wan1(98iUfClsA3(OTHsu!PJ#F9Xw9;wOyS)xeNlf&u>@!B?4cK|?p&mRB) delta 189 zcmbQq|Cf7$GSem2iK>B<*%)I)lk@Y6OA_-+6p9mb3vyD66yiS9lM~N7@m|8`#G8WE+d|PzN>L(dwn0qLO_rBhBuK!E;tahx{ZeIB$=T_SDnaig zf8+aaMV82lade(?O(iKclj82OCoe_HellO-wlB8kROhKkE`7f$1!T==%FBW#95w1Q z-!HYQ5{-V{tn1G-EhJa*m4EONJf&Tul(@IEMyz?QE5&1WzJ{9hCFq^#%zqe0{Nu}Y zN;f>dB5L7+ey2D2P3Cu0I;SSl6t$e+j+d)Jt^xbbrxKY)#B9Xv*jXoeR%!}jql*!l zkC*5I9RPHvahb?Gj-1N>i>r)Fw95rUwWRt+%Nr^(-1#`H?+{6~Bo(^7y{p!1u5c8r zRwKmtP5|Kpj9@!hKl)4>pC>GpL{qil`cF$f*gF%Ka*S{vyz`$un$MPc}t}P~W(-zGF8+!1w^aNqO4=gz6H(ky< zzm|uv8;%fmkK7BUw>U6BEKf)JEf<@u#=$V~Y&n6zrd@450)ntMB1jq50}!(Ygt6#s z=i$D!-CLnpBTS{lO}EFGK*a$%M{e0w4jKp-n5WsOL-TF6%vvHcS^Ny4hjBi%aiVY* z1n9jRi?EyC#VY)IZ-ESAEoTO1Gebwl5Cno9xlDnP$V{mj)<>NYHsl=jK#ysAoZ+Vi zR-r}+D1pklN>0gSIScC%6b!$6fP+sbVFbL4kmNfqab#BQR&-T05T^~qXb5rI?8#FE zZjQr$4bdV5WPodgEa3fj;agaI(*cEx@GFS_b9_Ap8~(mc-#E7L7JYc*IK2Nq;B_0@ z;`|nYFo9EZSg>4Un9q1*dw&Z35JU4nVm1?pn?Zx#{1Hv60J_Vr_jVniiwhK0cG64- z9lB{VD>IakZDG2}Ug~7cb+RRtF~aLYibQCPcRAcpLh|<3ai+%meeiC0>4f%njNpzk zdW_e!)E_^>|C6-9rmzuA9W>JzdK;LDXEXEi!HgpGeah2Z?Mbc}S4441YtDKFKXmAy bIqL3}(A=fypEl+kYFT^mAAH~Q{`UR>Gv4G) literal 2110 zcmbtV+m72d5LNn6Z1mb67$j&QWwnYe$+x`$Z349Wun3T}&BMYVxDss>p)Q~(uN-6l zp`Y9#by?dnnj)0}S>)W#oS7lte*FDMt9_nXClx8Eq-puXbIW>eo#5}8_0x%Ey(}bM zrW9g9vn3>)F0;H;JO+**k|prs>{FFhB}>lMRC0PR*bCc!$+K8g34_a&DJn>*62b4U zclJx3CU5l1U+r!;>Qv<^kFRaJDmg~YXv)fh#te-3!nR8#t60IW%SHX+(@jd3EOKang?p)Z9Pxj69%+AKs)RRkRqcf;Ad(T?-1R5Vkd zeFZ?qqY+%e79I7H))qzMLs3c7LNJMD<3TI4KQoyz0qdM6Pz$PVmAIumb9#R*vR6P- zB}fH#clXs|!K5>A=W}l-Jrmdi8po_G&(9wuSL_-}qNrRl^+!Vknz!j6x7P+dEpmxj z#_X0BU)v22;x@FF1UXCI=2fPcd|#=eQh)yP*Vop8vDP*rEJd5#O}5Tss(7B=yweC* zlF@_|dCB!2;Tc&)>|0NulK@_!=cd)rk!p$^f#UErrG2R zaHtTDscPU5%+-ZUXqSD?C_#6weoTg2^VWUeXab3bI@x_cr=6dHKXP4o-S(E>H~e(& ze|czt?D+~p4bwE@figNlX9p$`G7{?WdK#W&dee||yx06@PB63azyrr*&?7!0Q4spI zhl%0;2E#gMp+CU>?Gi9-Ji!uxI8!penH><%0ZETCDtaCHTPs+j~``E5T9dUfQE01{4hQydX( zu@wJyq~V#bopz6&NF4TAgx;Du>8Hogr;# diff --git a/examples/runtime/shaders/metal/cs_assao_prepare_depth_mip.bin b/examples/runtime/shaders/metal/cs_assao_prepare_depth_mip.bin index b83a15dc1ac30bb2345e1ddb2ae93e2f6bdb5d62..abb2f70a51e88cdc23f845bd778960dc1d5679e7 100644 GIT binary patch delta 933 zcmca7xlCb#0n#n;^wbgqm=P$_)d=|zNJJ4~lp(rN_239cm}N-3S@3|t;VdI!j536H z5gtl7%rZupHQAc^C5s*~DNeq~rZYK^MGnF#V2Ok<6xggMv$8@(FR)uoj)8GN>X*Yf z1uWK+8QGx96xg7eLFzZbL@%;=!OXUv9L^3`Ydv`*jB|lK4B?hw4!B#aC$EKZK<;7Z eguBOhb0p_XCWxlb+}03=J`a?U4Pz|lF$Vx!H7ig6 delta 302 zcmZ3ca8GiA0n;*`iAI5&nHf77`E?W$lao`6i><86i!w`6C-*QJVTkR+BK84`m=bf+ zWFNLCj3JYwxOFBcu*(5ij-2w7k8{gR-V5bfPnP0{#X;)jIU%Yd zp=N;8UIUAP)T(g7%mArvgz~H>--Cq3w;n-RDMTRknE&XB@{IavF0FQ0r3*KEqZD`AyQ8Ft|@>0BeT%9cOo###RZ@Dc%8! zI72y1CbN98AgR@`r_(x|2+dGHR(v^5@^nsqsxk6%KP9p9H4iiIV+Z=LPF?W{Mps?5#$t}A|-RiUjwLH}-BN7H@Elnb+v#!W!b-G1tr(MQ&oy|UWql|O`7G}&U zE)>r~V$U}8K`+a_3y+|)%> zEDg5-2>latGA4d(o7~1|H2F9Xb1)fA_GB_*w3}R~AT@a@Q$PyLTgCAysRbn&!TF^{ z$*EAkLwtx57z!xr6l}pBgDN+2sYaECit9`k{bxbSQujljB%O0S`%aqB*ye0$xH(! z^#G+I!bOuOa7j(B;fNzq2L~sqI;L>Ol4yrK7il^wNHpJ!n>0VjPCm*VMVcL(eR*mH jA@THAF?F(m+&4I9bB{bLH12^?o4+eSd7J+#Mlk{a{;tRU delta 525 zcmZ4Bd);kOlom~*cn{aA}|Xee${|@^#Y&NWHs(M+>*!fNoMfG;?~K*i&Ii| z@@n2_>^ckhWheXa;gGz*SB_QJ<^uldg22#Z-z=yY$_Qdi7F0~wd_jo?#);o-tHKKB JOkS<}6#%E2u7v;q diff --git a/examples/runtime/shaders/metal/cs_assao_prepare_depths_and_normals_half.bin b/examples/runtime/shaders/metal/cs_assao_prepare_depths_and_normals_half.bin index c07dbc78c1ef248f4e819f4ed30d1aabeadbf5f3..87a30249a19229c8f4821fbb7654a54cb68a2013 100644 GIT binary patch delta 863 zcmZ3fGs|#-GE=_9MAg80r}VUn;Kba5oYW#C7p`h91t2Jf@D+07p)6~#a7k)KNoi54 zQHo7kPJUvE9Z()BWX)A;&Baw*QdF8;q5v{6DBLqQF+J7DCB7& zEDg5-2>latGA4d(o7~1|H2FBA5u@GYL}97P%1i+%Fz*z{r=%8?WCZ7z7A2=b{S5IL zN+2kps8g^7dkCuB$fX)p8Y-?cxq(HrUI7>ipzuQr0igSVno1Ij(o;(epynY35KtOq zC{#WK639dtWr%K+QG5}KS%&z{0!0ikjD*F}&4I*OH7NX;f$o@`#}vh)2aM~J`DQuPy#yPesO^|^Quj)bKM*}6; zfzlA+qRE9El9Nl><4Dsni6fRI4do=MmfS4L8P5gr%mtCu$+v{Rf;pQnh(t010G|ab A%>V!Z delta 282 zcmbPbxKd|=GSffNiK>BZL%VdNh7LP@2B2)I{B9>6bkjbZ6WEn#?zhPOW%3FROCb4_qY5O>s|RtL2E=I{oaI)%mKymDX9e|8NvCbMaij9S3=x^;%o&Jbqcm%CqR`Oxm2S{L&bF_ zE3k;xD*)XM@-e2HftpGZi_%j|44~$rdI@AGR6Yda1tN?xL^nzb96SiK3=w8ce#IE6 vss|5YJ)leC%QI6-GBh-G5O#wUOip5Y#sX$|GJ8T8`Yh6u*D;%6h=v0I3Bat6 delta 124 zcmZ3?)5bYLnJJoOqH5q|4#wmBItq!&$*IM~R#xRjnI)-{&odffh%quHO|D`Nkq=3& zC@C#U)k{w;i7(GgDap{#)KMsoFG(x{iWr1U{>=Q0F=TQ*t0#~=!zw-5mDLQ19}WN# CYAMYC diff --git a/examples/runtime/shaders/metal/cs_assao_smart_blur.bin b/examples/runtime/shaders/metal/cs_assao_smart_blur.bin index 4fe2446fc3dbd421ada50114d5ece803cde3c2b6..8517651046147530f6f66e495d89c9bc64d6f978 100644 GIT binary patch delta 516 zcmX>kctB)=0TTz;M5DlZr}VUn;Kba5oYW#C7ssNa#7eGeE(IVch6pO;#zR@wVBwO~ zijvZzRHKymM37>ew4D6J5<8$OsDw3Ftu+@{aY<2Wa)|=S@St$d+{E-$sNwNN=@w86 zz#8Q68#S@gmm6$@i9)=&k>$j8T|Owm59BhARny zctru|U}O&$$0y~K7J23sl$JmP1|p9dQdS_}1C4^Kg<6OjmLSXEDxgw2lP5BYFx6U5 ze$V)YMGqKolbga!7E30aF*pM5DmTT8z%>#fiBEIjKbo@#ewboq8`FX`9iFqXoX*v0c zB_<##lgSl~vHUs;iOI>S#l==u~uMn-i#xYzX{fvJIH z08kPlSTy-0i_v5YW(^Y58%|!ztV@D=lgUynS|q49oZQKxLxTEQOhy))Q&~Bgfb`@7 c_NO2!oC8eRaXtg_)VS`kfWl)lD|Zkh0O*J4xh^rmfJvTbqEX;vEk6s7oYW$PctZnYBL!Q9>RM~AF--$(*yKD` zqsg;aG;m28PL^WT#U&YsOTuun3Y!itNt4N|+0vMdjW-Lkb20(x$#R@eK@=+&n0mwY R48*&_eUC9@^ERF!MgW?(S9t&c