From 75d5662f0b962f5d506ea1ab086f98fc6cf44bfa Mon Sep 17 00:00:00 2001 From: attilaz Date: Fri, 16 Aug 2019 15:02:38 +0200 Subject: [PATCH] Metal: added support for binding buffers to vertex/fragment shader stages I have removed the SamplerInfo workaround, because new shaderc preserves texture stages. Some shaders needed recompile with latest shaderc to get the new behavior. --- examples/common/entry/dialog.cpp | 2 +- .../runtime/shaders/metal/cs_indirect.bin | Bin 585 -> 585 bytes .../runtime/shaders/metal/cs_terrain_init.bin | Bin 1878 -> 1878 bytes .../runtime/shaders/metal/cs_terrain_lod.bin | Bin 11233 -> 10619 bytes .../shaders/metal/cs_terrain_update_draw.bin | Bin 737 -> 737 bytes .../metal/cs_terrain_update_indirect.bin | Bin 931 -> 931 bytes .../shaders/metal/fs_deferred_clear_uav.bin | Bin 0 -> 278 bytes .../shaders/metal/fs_deferred_combine.bin | Bin 904 -> 933 bytes .../shaders/metal/fs_deferred_debug.bin | Bin 516 -> 533 bytes .../shaders/metal/fs_deferred_geom.bin | Bin 1298 -> 1333 bytes .../shaders/metal/fs_deferred_light.bin | Bin 1472 -> 1501 bytes .../shaders/metal/fs_deferred_light_ta.bin | Bin 1538 -> 1568 bytes .../shaders/metal/fs_deferred_light_uav.bin | Bin 0 -> 1430 bytes .../runtime/shaders/metal/fs_rsm_combine.bin | Bin 6381 -> 6381 bytes .../runtime/shaders/metal/fs_rsm_lbuffer.bin | Bin 1581 -> 1581 bytes .../fs_shadowmaps_color_lighting_esm.bin | Bin 4224 -> 4224 bytes .../fs_shadowmaps_color_lighting_esm_csm.bin | Bin 8712 -> 8712 bytes ...s_shadowmaps_color_lighting_esm_linear.bin | Bin 4241 -> 4241 bytes ...adowmaps_color_lighting_esm_linear_csm.bin | Bin 8764 -> 8764 bytes ...dowmaps_color_lighting_esm_linear_omni.bin | Bin 6472 -> 6472 bytes .../fs_shadowmaps_color_lighting_esm_omni.bin | Bin 6456 -> 6456 bytes .../fs_shadowmaps_color_lighting_hard.bin | Bin 4153 -> 4153 bytes .../fs_shadowmaps_color_lighting_hard_csm.bin | Bin 8428 -> 8428 bytes ..._shadowmaps_color_lighting_hard_linear.bin | Bin 4166 -> 4166 bytes ...dowmaps_color_lighting_hard_linear_csm.bin | Bin 8480 -> 8480 bytes ...owmaps_color_lighting_hard_linear_omni.bin | Bin 6398 -> 6398 bytes ...fs_shadowmaps_color_lighting_hard_omni.bin | Bin 6385 -> 6385 bytes .../fs_shadowmaps_color_lighting_pcf.bin | Bin 12054 -> 12054 bytes .../fs_shadowmaps_color_lighting_pcf_csm.bin | Bin 46980 -> 46980 bytes ...s_shadowmaps_color_lighting_pcf_linear.bin | Bin 11965 -> 11965 bytes ...adowmaps_color_lighting_pcf_linear_csm.bin | Bin 46772 -> 46772 bytes ...dowmaps_color_lighting_pcf_linear_omni.bin | Bin 14214 -> 14214 bytes .../fs_shadowmaps_color_lighting_pcf_omni.bin | Bin 14149 -> 14149 bytes .../fs_shadowmaps_color_lighting_vsm.bin | Bin 4529 -> 4529 bytes .../fs_shadowmaps_color_lighting_vsm_csm.bin | Bin 10276 -> 10276 bytes ...s_shadowmaps_color_lighting_vsm_linear.bin | Bin 4542 -> 4542 bytes ...adowmaps_color_lighting_vsm_linear_csm.bin | Bin 10328 -> 10328 bytes ...dowmaps_color_lighting_vsm_linear_omni.bin | Bin 6783 -> 6783 bytes .../fs_shadowmaps_color_lighting_vsm_omni.bin | Bin 6764 -> 6764 bytes .../metal/fs_shadowmaps_color_texture.bin | Bin 968 -> 968 bytes .../shaders/metal/fs_shadowmaps_hblur.bin | Bin 2289 -> 2289 bytes .../shaders/metal/fs_shadowmaps_hblur_vsm.bin | Bin 2651 -> 2651 bytes .../shaders/metal/fs_shadowmaps_texture.bin | Bin 533 -> 533 bytes .../metal/fs_shadowmaps_unpackdepth.bin | Bin 769 -> 769 bytes .../metal/fs_shadowmaps_unpackdepth_vsm.bin | Bin 729 -> 729 bytes .../shaders/metal/fs_shadowmaps_vblur.bin | Bin 2289 -> 2289 bytes .../shaders/metal/fs_shadowmaps_vblur_vsm.bin | Bin 2651 -> 2651 bytes .../shaders/metal/fs_terrain_render.bin | Bin 802 -> 802 bytes .../metal/fs_terrain_render_normal.bin | Bin 719 -> 719 bytes .../runtime/shaders/metal/vs_rsm_gbuffer.bin | Bin 816 -> 816 bytes .../runtime/shaders/metal/vs_rsm_lbuffer.bin | Bin 1654 -> 1654 bytes .../vs_shadowmaps_color_lighting_csm.bin | Bin 2037 -> 2037 bytes ...s_shadowmaps_color_lighting_linear_csm.bin | Bin 2337 -> 2337 bytes .../shaders/metal/vs_terrain_render.bin | Bin 2453 -> 2381 bytes src/renderer_mtl.h | 18 ++--- src/renderer_mtl.mm | 72 +++++++++++++----- 56 files changed, 60 insertions(+), 32 deletions(-) create mode 100644 examples/runtime/shaders/metal/fs_deferred_clear_uav.bin create mode 100644 examples/runtime/shaders/metal/fs_deferred_light_uav.bin diff --git a/examples/common/entry/dialog.cpp b/examples/common/entry/dialog.cpp index e9e15fc21..a3250be8f 100644 --- a/examples/common/entry/dialog.cpp +++ b/examples/common/entry/dialog.cpp @@ -67,7 +67,7 @@ void openUrl(const bx::StringView& _url) #if BX_PLATFORM_WINDOWS void* result = ShellExecuteA(NULL, NULL, tmp, NULL, NULL, false); BX_UNUSED(result); -#else +#elif !defined(BX_PLATFORM_IOS) int32_t result = system(tmp); BX_UNUSED(result); #endif // BX_PLATFORM_* diff --git a/examples/runtime/shaders/metal/cs_indirect.bin b/examples/runtime/shaders/metal/cs_indirect.bin index 89d1021ca74504dccd76fb65f8704a0da3bf3b26..ae66297948283ec4e5bbbc142aef942ac0a4c075 100644 GIT binary patch delta 24 gcmX@fa*}1j|H)>IN^Az2v9US|6aO1dj$r%<0C5)y82|tP delta 24 gcmX@fa*}1j|H9n8GG2F=RTco(h6?%s delta 42 xcmcb{ca3j@64T_VOj?YFlMgV-PL^QinQYG#Hu(&bAdoFFc|Vi=W)o&5762e03{(IB diff --git a/examples/runtime/shaders/metal/cs_terrain_lod.bin b/examples/runtime/shaders/metal/cs_terrain_lod.bin index 50db4652a2c4ae2a6b782791bd22d58b0f48d4bd..426e210029f3cf99c87967a23de6ffea66497f24 100644 GIT binary patch delta 324 zcmaDD{yS)c3?oyx#%4K2MwZDbtg@3$*{m3iCmXP-PL^ktXEdF>lhuaNd~yw|%48`v zQAP_O%ZAZ%a{=2*rp@A95-gL?b87R(8yZ*|DrhMfm&V5GOg_hH&1wi`*-v)jYnc3m zPhqkezry4UAYR2UJ^433=j0Fk8RCYPmeD|!dKHyb3fc$tS`2lFCWsAlM81+c0VSJHC`obx0H|Kt7G#?ZY65v`i5r!{e6@Ek$ z8c7Yg@F><1fltv#9wT$GDH^B}93*cO@@}WQeMqbpwtZ?XT7WZDuT5C-8&hn15iP-G zCi|}fyCcPGCL74~u_-sdNvAULstd;_J*yNBRdHY- zm*GlYkqNc`@{|Mvd0FTea&WE~aHFKaRdnd72ArAvAGnH>=od<`qel64^?AD8?RHpM zio^T19H&aHI*+6lr1CBb^)+pzH(*J-6S+JXY9GldcBAlgY{DXsY`SlA?Vohew)FHb D;Bbo4 diff --git a/examples/runtime/shaders/metal/cs_terrain_update_draw.bin b/examples/runtime/shaders/metal/cs_terrain_update_draw.bin index a4f98908be09995e65934ae380352cbf7135863b..31f80e2cd8675681db4452d62fd8a9f4d18ed2f7 100644 GIT binary patch delta 43 zcmaFJ`jB-)FyrJYj7p3KleaUP@tA1F#_A}fq?TnSr%v1;GC7w~kckBqlg}_JvKeT`#_A|c4rWwhG@M+8yH0<*E1?Inr^Avx5QW{P!~KYG&_x2{rXgfVjF&*jlBr`bMzt=^fh+~<+_;qf_c~6XeZw1$ z?|sAV-uKU8R^-V&Pf7B^zIMGO%v%!Uswmd+M*)BL$gO?7Rdy}_`pCXPZ(52MQxi_B z4Zx{0O-o+zGqA6FK1`N00c}79L4d8IZ3H0`2rw51AB3NPG)*WiNHqAdS(FjY6{>0 delta 18 ZcmZ3=-oei47VN>6FK1`Nuu-j^82~JJ1dIRx diff --git a/examples/runtime/shaders/metal/fs_deferred_debug.bin b/examples/runtime/shaders/metal/fs_deferred_debug.bin index 244b6b77559c42b1fd9dd3e3ede362dcc6cfa3c8..86f3358c9dfcef652942fb653e5a57940243d30d 100644 GIT binary patch delta 35 pcmZo+naU#N7VN>6FK1`N00fK-T*dJvsTI!oIr&8b8##Y70sxLc2^|0c delta 18 ZcmbQr(!#>&7VN>6FK1`Nuul69rp^_}r45 z_)@)6AYGxLrI41BpIBm|5f4~YD%tWuEvPwZ8qS9C+ z-UKL8uBmCwr2qtA?Zyi6re;QyC0G`Nb?syE2h#$q5vCR(D`9p36@lykDb}lm(p4bZ p!V+jA#6Td&Wb#~ARcQ+oh(J+lNoi4@LVjt9HCHVc7X!lr1^~DMKT7}r diff --git a/examples/runtime/shaders/metal/fs_deferred_light_ta.bin b/examples/runtime/shaders/metal/fs_deferred_light_ta.bin index 30b113de58859cf4c4529e7bcbe57995a366391b..5352786b74a4558c979b6ff080fae64e207cd9b1 100644 GIT binary patch delta 302 zcmZqTS-`{V7VN>6FK1`N00e9kc|GJfisSS0i*gfl1VBOz?8WgZsRbn&5Zi6urraU+Y#9L%Q7rUsUi9hhafEc7aL z6m-GDY0REX#)gwOGOK9;W%Vj5s}%Gh`iwQ=K_cavnn;ELEitt;pUlXTCjqhzs9r~* zG&8S6qbR>LFGT|+HhC+H4#>#IECC?Olr_@CQo$BtrU}qYOLLIzU>c|yOjiMEGb0nA nT@b6{%?vFkA7WLLvV`!9QcFsU@)Yt*ORTwSxwse@7BBz+Gbv19 delta 302 zcmZ3$)5OE;7VN>6FK1`N00b-(c|91HPAtC7WN5ZIfbl#dn~_4iiIKtN5N16!aC+a`F>Pj5XpxBITNz)?5le01;G( zH?^>w?8}np233@qr&ktVl3J0RpI?+>prc@@XP^l*Mn|DEGp|IWD8Do>MFWr0$(LDl zKn`GJ4PZ4i(^Sx({GVB7auKVQiJ^im#7+|pkewhWgK41AV7dxOn;Dt`9SCtBkYhOc e0jrvnA%tI)T2fk+r;uM-V$D^{#l^s|fB^u2#Zz7Y diff --git a/examples/runtime/shaders/metal/fs_deferred_light_uav.bin b/examples/runtime/shaders/metal/fs_deferred_light_uav.bin new file mode 100644 index 0000000000000000000000000000000000000000..5a2573a1c551e3fff47e29240bdce9d738dbd477 GIT binary patch literal 1430 zcmaJ>TWi}e6n0?khM!95;}{19!|q%+cQh)3Mm-EKiFUTEdtD}a4!9hU;pD*;a zR5vu?g*t3}bsC%PoB8x-ma+WiuyKvs?-a>oo>FmO+B$C)N!U^^%IN)`<9y^B!ygE1o8&<`ynSu3IRc%^{;HQ%f2%uvO=-t8`w(8pwAcr&PGVUBGK5 zB-Pz@7fJ%>wN2dGr7>>zUTKT4L*^mI2T>W=ai*Iim?#1lf{jCM{2>GgV8S85#E_XLisv*wwm;W~g5ySNXKo5dWK z9K0&5C_h9oLid-JD>>1M>0=0lPje zQFqFnm0$I%{0gmoh}bp?jiX*+VHilh51$`NFXhUkQ{{OZO>D{b-Kl1yN>u6LFcxU9 zSFTgK_L^ZcfJAB!hn1g;tz2dNx?V_W*RhUuEP%3*KQLq$MZWI`VCNWleXKEQsD?_V z)C;BA@_*=8)|LPS%jSAfc7)UI8F;QWs)-Zrk?bJBZqNSuXU#!t(C=WC$=jGXyhm X7snT8B&Ot-`z96$u()hoZzll&8>SUx diff --git a/examples/runtime/shaders/metal/fs_rsm_lbuffer.bin b/examples/runtime/shaders/metal/fs_rsm_lbuffer.bin index 91dbcb9f1c931775bb050eb20aa36445385300fa..7a5932ad7c7ff8ea16834b19387401c0d9e582e5 100644 GIT binary patch delta 28 gcmZ3>vzBLql^_EUuouUtq!yH92!J>ny&tgx0B2DLF8}}l delta 28 jcmZ3>vzBLqm7oJd00Vn*d`fCTNrnKUBSYXu??#?B diff --git a/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_esm.bin b/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_esm.bin index 9cc59ef1c1b0ab29dc5a2d6f54cceb5c61c6b059..aeed87b3e771c05adc34c9fb2eda2c93e222ee06 100644 GIT binary patch delta 30 kcmZorY*5_b%*et31e@I%1y~qOCP%PpGn#B}Vg17e0A^eV5dZ)H delta 30 lcmZorY*5_b%*evx!Vt3Aol$^=(O_}}t2U#-<`&jJTmW)B2c-Z2 diff --git a/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_esm_csm.bin b/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_esm_csm.bin index 03d4c2f8f32bb8a4aaf80c758eec7f9203891613..13fcd58c9690b22f6faed13baa54a904706fcd14 100644 GIT binary patch delta 163 zcmeBh>2TTL%xKF10zAd>#Tkhy`Q^Te1%?6`LPnTE#$ch%4UBCpj3$$BvMNs2VB=vl z1+jRI6r!U`QY%VIi&8brz#_&-BIc7PvS|bLOk|Uoe3eZYs0YMiWEW;M1G992Ec4Bd H?8l`52qP?} delta 161 zcmeBh>2TTL%xKHv!Vtp1QygEMk(iQS?weR(D8TB<5Q-vXB*5mz5QZXTEWqy05WcyA zv5jT&4OXSe8f-j_hLdlyD)JgBL`RpTR+N+$rD_;~MU0U|j3-ZI(`GaPk`j}zvIztA WfLM&|!i+{>mM)NGyxEccxD){XBrewg diff --git a/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_esm_linear.bin b/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_esm_linear.bin index 92ad948fe1ce397348528aa996975352739a0af6..c3bb35aa027bcff97b2ffdaabaaf9153414fa62a 100644 GIT binary patch delta 30 kcmbQJI8kwfGb0NF5Nvj56kuUAnH<5Y&1kZ@g_V~Z0BBhTMF0Q* delta 30 lcmbQJI8kwfGb0O&3q#0ecSZpgMuW)_tlEqQn_F0UxdC)J2H5}r diff --git a/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_esm_linear_csm.bin b/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_esm_linear_csm.bin index 46426b8c794515db0d9ceae748ff82b63d32fd5e..8a86b4cbb88a1fdf7bd7634aa06214418fef3043 100644 GIT binary patch delta 167 zcmdnvvd3kEGovj72=Elg7iT1<MorpdJv*M}%WCCp$Nz8JMTb NF3f1Y*^&LX6aWHMEiX}L-^(f z#x|D8H&~S>Yq0S!8cx2+s>o}k5FK5TT2WG3l&WC_7BNN=F`hh;O`FjGNJ>n;$|eld c17i7za7^Z8=Vmkl^K{vT8I3nPvj3I>004O~ZU6uP diff --git a/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_esm_linear_omni.bin b/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_esm_linear_omni.bin index ab81de69fda3c1da2bf47982156dd6f403cb378e..1454b95c5766dbb2dafee4c6920586acf66a72bf 100644 GIT binary patch delta 30 kcmX?Mbi!!EQbraAAlST;QJt01Wb#EeZAO#Lf7!f+0Ff^U>Hq)$ delta 30 mcmX?Mbi!!EQbraQ7lx3{D;d>U84V_1WYcCe*!-8xTL=K14+(w% diff --git a/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_esm_omni.bin b/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_esm_omni.bin index fb383f0970e75bb63004cca6711671c655e2b788..b4120384e7c3efc2c6fbcf9cb015fb7025effa2a 100644 GIT binary patch delta 30 kcmdmCw8Ln_QbraAAlST;QJt01Wb#EeZAO#Lf7z^s0F7@5x&QzG delta 30 mcmdmCw8Ln_QbraQ7lx3{D;d>U84V_1WYcCe*!-8xS_lA{PYF%{ diff --git a/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_hard.bin b/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_hard.bin index f41b8a9922a311d7bd948b0330d3baf5cd7a6ab0..68e90ce4d6678fd8670b147096b197cbd64f8c6d 100644 GIT binary patch delta 30 kcmdm~uv1}!Gb0NF5Nvj56kuUAnH<5Y&1kZ@g>@?z0CIo_IsgCw delta 30 mcmdm~uv1}!Gb0O&3q#0ecSZpgMuW)_tlEqQn_F17asdE-UMorpdJv5kzJV449wC6vdlL- Ivagl|0D`nFO8@`> delta 161 zcmaFk_{MRAGovkw3quG4PjP&4Mq)~Sxo={Dp#ZBZLnw-nkpP<;Ll}yXu>iX}L-^(f z#x|D8H&~S>Yq0S!8cx2+s>o}k5FK5TT2WG3l&WC_7BNN=F`hh;O`FjGNJ>n;$|eld W17b0<3o{ylS-L=$@n%Q%)sg^rKreg% diff --git a/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_hard_linear.bin b/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_hard_linear.bin index ecc5b0f698540fa474a9499fcdce7f8e34f8e4b4..06ea27ed0bb120bb36633974cc4e034e757a6535 100644 GIT binary patch delta 30 kcmX@6a7MorpdJv5kzJV449wC6vdlL- Ivfq~k03Px# delta 161 zcmZ4Bw7_YDGovkw3quG4PjP&4Mq)~Sxo={Dp#ZBZLnw-nkpP<;Ll}yXu>iX}L-^(f z#x|D8H&~S>Yq0S!8cx2+s>o}k5FK5TT2WG3l&WC_7BNN=F`hh;O`FjGNJ>n;$|eld W17b0<3o{ylS-L=$@n%Q%`;q_|<}Vrm diff --git a/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_hard_linear_omni.bin b/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_hard_linear_omni.bin index 80705c6fcdfe4faeb4ba1cac62f9aa2ab76c16f5..9b48a80b6ee4dd44d1d544ef7002295ea3f38b22 100644 GIT binary patch delta 30 kcmexo_|I^|QbraAAlST;QJt01Wb#EeZAO#Lf7uv?0Gyu*3IG5A delta 30 mcmexo_|I^|QbraQ7lx3{D;d>U84V_1WYcCe*!-7`Q3wF2e+ixd diff --git a/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_hard_omni.bin b/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_hard_omni.bin index 4f62c7c30d7f86c927137c80c22b6bde46f4e61f..c4ec3f35db71c3504d9651e300d6f26aab1aaadc 100644 GIT binary patch delta 30 lcmexp_|b5~QbraAAlST;QJt01Wb#EeZAO#Lf7!kW0sxzm3E}_% delta 30 mcmexp_|b5~QbraQ7lx3{D;d>U84V_1WYcCe*!-96iy#1}atd|; diff --git a/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_pcf.bin b/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_pcf.bin index 37a7d12fc7bd8a0d40a5ef0d29ca1cfa7d93d1b8..4db71f79672645eaf46b5dca3aec3c19d1afdc11 100644 GIT binary patch delta 30 kcmbOhH!W_1Gb0NF5Nvj56kuUAnH<5Y&1kZ@g>{l90C)QbYybcN delta 30 mcmbOhH!W_1Gb0O&3q#0ecSZpgMuW)_tlEqQn_E~XX#xO)+Xw&v diff --git a/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_pcf_csm.bin b/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_pcf_csm.bin index 98d8b7384cc5ab384ab8f1ad87a7678d51604e9b..b7e686a13020635649370c73fdca704d14e5477b 100644 GIT binary patch delta 169 zcmZp9&(!jsX@fJPEdvPf6vr25B&Ot-`z96`3SbBsVG0?8g*G=Zwy`jpOuosgI9Y>@ zhtU+o;x$r;jxI^9C@C#U)i48#7$b?8PoBu84b(G{O=9vL3y#Tm*|>rFKs-ivVMa4B OOBcv8-|Wclya52Q=r6ed delta 167 zcmZp9&(!jsX@fJPEsG072m?=Xd~rr%N`AR-Vu7Imt1Ck&ija{2n;SzIijc7YyE{Yp z<_5+#mdQ6*l_qPj@h}=rzR9Y{YorhzU6NW+Qd*R%VFVU2MiMceJdsVC(EvzFOul2m dG5IbVH&7pl$H*?sXar{I0$IkJ9od~X006E?G3o#S diff --git a/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_pcf_linear.bin b/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_pcf_linear.bin index 2a0837aa5567fdc9d36059d58fd3922011ac3df4..13c726212e4db78fd110155ffd9009c20bacb0f7 100644 GIT binary patch delta 30 kcmdlRyEk@&Gb0NF5Nvj56kuUAnH<5Y&1kZ@h1F6M0DtEPUjP6A delta 30 lcmdlRyEk@&Gb0O&3q#0ecSZpgMuW)_tlEqQn_E~dH35sq2lD^` diff --git a/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_pcf_linear_csm.bin b/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_pcf_linear_csm.bin index 1b994f616e66384c65ba5b966ce5f686a8b07bb2..43ffff9f7c6d526dc8cb64a67f12a2aef9a606d5 100644 GIT binary patch delta 165 zcmdn;mTAjdrVY-FwhSP^QygEMk(iQS?weR(D1aekgehbU7TVmv*v7(WGWjN};$#gr z9!66Ti`PgYI=UpaqNKDaRl^J{VvHnWK6xUWHc-z*Hi^ks*@S_5KrBXfVMa4BOBcv8 K-|Wa%r2Dx delta 163 zcmdn;mTAjdrVY-Fwk$3TAq+gl@x>X5Df#8Ti3NrNtgZ~9C_+X8Y;Fu;C_=^p?CuQV zn;RJ0SSH_KRhq29#=~eh`6jC(uaQD@bV+JONoi54h7nlA7)iu<@U84V_1WYcCe*!-8x!vFxOnFsJW2R;A* diff --git a/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_vsm_csm.bin b/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_vsm_csm.bin index 64a46560e295f9154c9a4419d21c05d5a7788f97..cfcd411ccde13b7c17401361a2670e0ee85f7fa4 100644 GIT binary patch delta 163 zcmZ1yuq0rEGovj72=Elg7iT1<MorpdJv5kzJV449wC6vdlL- IvOiV;06OU{7ytkO delta 161 zcmZ1yuq0rEGovkw3quG4PjP&4Mq)~Sxo={Dp#ZBZLnw-nkpP<;Ll}yXu>iX}L-^(f z#x|D8H&~S>Yq0S!8cx2+s>o}k5FK5TT2WG3l&WC_7BNN=F`hh;O`FjGNJ>n;$|eld W17b0<3o{ylS-L=$@n%Q%#|i*2SuaTd diff --git a/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_vsm_linear.bin b/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_vsm_linear.bin index 8854be9df1c890a02bcc8b00e91a4d72ff4f4f9d..b5a970097cd5ccf52e37a4ac906947ba003226d9 100644 GIT binary patch delta 30 kcmdm|yia+9Gb0NF5Nvj56kuUAnH<5Y&1kZ@h1H4&0CQFb(EtDd delta 30 lcmdm|yia+9Gb0O&3q#0ecSZpgMuW)_tlEqQn_F0|cmRJk2W0>N diff --git a/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_vsm_linear_csm.bin b/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_vsm_linear_csm.bin index ebf71dfc632d274199b08c9b622a5b44696d510c..4e0099cf6ff9864783bcaf55b49cc644a625b131 100644 GIT binary patch delta 163 zcmcZ+a3f%YGovj72=Elg7iT1<MorpdJv5kzJV449wC6vdlL- IvWqJM0DB@VwEzGB delta 161 zcmcZ+a3f%YGovkw3quG4PjP&4Mq)~Sxo={Dp#ZBZLnw-nkpP<;Ll}yXu>iX}L-^(f z#x|D8H&~S>Yq0S!8cx2+s>o}k5FK5TT2WG3l&WC_7BNN=F`hh;O`FjGNJ>n;$|eld W17b0<3o{ylS-L=$@n%PMaYX=c!Y<|j diff --git a/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_vsm_linear_omni.bin b/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_vsm_linear_omni.bin index 3d37c4bbd460d19f82f5951561fce9308e154494..8f64cbd9f4b27f6b3bdcc2f102c87ff82587ed93 100644 GIT binary patch delta 30 kcmexw^50~`QbraAAlST;QJt01Wb#EeZAO#Lf7zOZ0iJ{jlmGw# delta 30 mcmexw^50~`QbraQ7lx3{D;d>U84V_1WYcCe*!-8RNf-dCWC|z% diff --git a/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_vsm_omni.bin b/examples/runtime/shaders/metal/fs_shadowmaps_color_lighting_vsm_omni.bin index 1c34b218f4273d152858f62778ded16a8295f3d0..9d6daf35531d3335b49fefee683361f31f081c2b 100644 GIT binary patch delta 30 kcmaE3^2TJtQbraAAlST;QJt01Wb#EeZAO#Lf7$Yd0h$mATL1t6 delta 30 mcmaE3^2TJtQbraQ7lx3{D;d>U84V_1WYcCe*!-6*Ul;(T@Cok# diff --git a/examples/runtime/shaders/metal/fs_shadowmaps_color_texture.bin b/examples/runtime/shaders/metal/fs_shadowmaps_color_texture.bin index ec803364d23f7b7ebd3304625635c42155596c7f..aadfde6d484e20eea8b1b55d51f61b0c2683c9df 100644 GIT binary patch delta 14 VcmX@Xeu901CNl#A!$zGs%m5&=1J?im delta 14 VcmX@Xeu901CbI)Wz($=p%m5?;1ZMyM diff --git a/examples/runtime/shaders/metal/fs_shadowmaps_hblur.bin b/examples/runtime/shaders/metal/fs_shadowmaps_hblur.bin index 7fb9efcde8d386659dc917d6aaba86b8b12259c4..197ebd2cd0310161eb7262f8dbae683e4eecc60f 100644 GIT binary patch delta 28 icmew;_)&0z3=0DgY*cv6$Y?T|g-M&yWU~R&K{fz$N(V#$ delta 28 kcmew;_)&0z3=4}3L&!#j$Bc{ylUbOw84WfYFdbwA0Dg`K*Z=?k diff --git a/examples/runtime/shaders/metal/fs_shadowmaps_hblur_vsm.bin b/examples/runtime/shaders/metal/fs_shadowmaps_hblur_vsm.bin index acce7887e308101e36f09f777788197e28c6b790..b632211e7b21cf903e8eae7273be98cb83956132 100644 GIT binary patch delta 28 icmcaDa$97A3=0DgY*cv6$Y?T|g-M&yWU~R2HU|K17zT;} delta 28 kcmcaDa$97A3=4}3L&!#j$Bc{ylUbOw84WfYFlloD0C`*o9smFU diff --git a/examples/runtime/shaders/metal/fs_shadowmaps_texture.bin b/examples/runtime/shaders/metal/fs_shadowmaps_texture.bin index 0f97c1fbe4d35a365c4c0408d8f675614b448778..86f3358c9dfcef652942fb653e5a57940243d30d 100644 GIT binary patch delta 14 VcmbQrGL>b5G&2JO!$!I9i~t)*1E>H1 delta 14 VcmbQrGL>b5G_wOkz(%?6i~t^(1ULWy diff --git a/examples/runtime/shaders/metal/fs_shadowmaps_unpackdepth.bin b/examples/runtime/shaders/metal/fs_shadowmaps_unpackdepth.bin index 54086dbecdd4ce622a413e012739223542eee7ce..fd1777f1353241830d992d3d30f3fd39704dfc6b 100644 GIT binary patch delta 28 icmZoXr8x5v0GMY?2&Zy03viUP3A0q%@jt1=j delta 28 kcmZof&j5B;2<89) diff --git a/examples/runtime/shaders/metal/fs_shadowmaps_vblur.bin b/examples/runtime/shaders/metal/fs_shadowmaps_vblur.bin index 7fb9efcde8d386659dc917d6aaba86b8b12259c4..197ebd2cd0310161eb7262f8dbae683e4eecc60f 100644 GIT binary patch delta 28 icmew;_)&0z3=0DgY*cv6$Y?T|g-M&yWU~R&K{fz$N(V#$ delta 28 kcmew;_)&0z3=4}3L&!#j$Bc{ylUbOw84WfYFdbwA0Dg`K*Z=?k diff --git a/examples/runtime/shaders/metal/fs_shadowmaps_vblur_vsm.bin b/examples/runtime/shaders/metal/fs_shadowmaps_vblur_vsm.bin index acce7887e308101e36f09f777788197e28c6b790..b632211e7b21cf903e8eae7273be98cb83956132 100644 GIT binary patch delta 28 icmcaDa$97A3=0DgY*cv6$Y?T|g-M&yWU~R2HU|K17zT;} delta 28 kcmcaDa$97A3=4}3L&!#j$Bc{ylUbOw84WfYFlloD0C`*o9smFU diff --git a/examples/runtime/shaders/metal/fs_terrain_render.bin b/examples/runtime/shaders/metal/fs_terrain_render.bin index b0319fa77b56a3cd45a185857fbe308e5df2057d..53e19c93da87f26e35a1a42acfa0d681431b4de6 100644 GIT binary patch delta 20 ccmZ3)wuo)RNk&G)$)^}~7!5anXVhi{07|9?kN^Mx delta 20 ccmZ3)wuo)RNk&G4$)^}~7!5XmXVhi{07{ewjsO4v diff --git a/examples/runtime/shaders/metal/fs_terrain_render_normal.bin b/examples/runtime/shaders/metal/fs_terrain_render_normal.bin index df6fd804bfdcf3d0a0fc91998389529e4d82d5cd..9cd9e1649134497fb3cc18a56e38a003c4afdaca 100644 GIT binary patch delta 19 ZcmX@ldY*N|Nk&G)$)^}~faG_^8vsgm2Xp`c delta 19 ZcmX@ldY*N|Nk&G4$)^}~faG_^8vsgW2XX)a diff --git a/examples/runtime/shaders/metal/vs_rsm_gbuffer.bin b/examples/runtime/shaders/metal/vs_rsm_gbuffer.bin index 061fc28cbd4f10d3b0383f992fdcf742cb0af8b1..d6b7ad9848c1845138c157d4df7dbd5aec18593a 100644 GIT binary patch delta 10 RcmdnMwt;Pf9y3z|0{{}@0?+^e delta 10 RcmdnMwt;Pf9y5~z2LKXk0+;{* diff --git a/examples/runtime/shaders/metal/vs_rsm_lbuffer.bin b/examples/runtime/shaders/metal/vs_rsm_lbuffer.bin index 3926f611107f5963d336285e9c94cc01b543e08c..fc84925d35686e161c35017cbb2b77c91f3cf550 100644 GIT binary patch delta 52 zcmeyy^NnXhhyVi!uolM`73YGP8&e#a7>y<`V^U)@o_v-`3&{S#q{3*tS(Z7H831F? B4HWrG*x)QY{qvR=cF<*8ct?nwqZ1yY|m`VXgs-=`2&ZELcEEonS$-)em0%S>1^u4 z)?5lekd~95SOStWGXcv*p^KXvfyKinJFv5CPGY&mC;&1?2do1`nj39)VdrE50No!U Ay8r+H diff --git a/src/renderer_mtl.h b/src/renderer_mtl.h index 1c1ca5724..a4eb63edc 100644 --- a/src/renderer_mtl.h +++ b/src/renderer_mtl.h @@ -847,13 +847,6 @@ namespace bgfx { namespace mtl uint16_t m_numThreads[3]; }; - struct SamplerInfo - { - uint32_t m_index; - UniformHandle m_uniform; - bool m_fragment; - }; - struct PipelineStateMtl; struct ProgramMtl @@ -887,7 +880,6 @@ namespace bgfx { namespace mtl , m_vshConstantBufferAlignmentMask(0) , m_fshConstantBufferSize(0) , m_fshConstantBufferAlignmentMask(0) - , m_samplerCount(0) , m_numPredefined(0) , m_rps(NULL) , m_cps(NULL) @@ -895,6 +887,8 @@ namespace bgfx { namespace mtl m_numThreads[0] = 1; m_numThreads[1] = 1; m_numThreads[2] = 1; + for(uint32_t i=0; i 0 && NULL != arg.bufferStructType) + { + const char* name = utf8String(arg.name); + + if (arg.index >= BGFX_CONFIG_MAX_TEXTURE_SAMPLERS) + { + BX_WARN(false, "Binding index is too large %d max is %d. User defined uniform '%s' won't be set.", int(arg.index - 1), BGFX_CONFIG_MAX_TEXTURE_SAMPLERS - 1, name); + } + else + { + ps->m_bindingTypes[arg.index-1] = fragmentBit ? PipelineStateMtl::BindToFragmentShader : PipelineStateMtl::BindToVertexShader; + BX_TRACE("buffer %s index:%d", name, uint32_t(arg.index-1) ); + } + } else if (arg.type == MTLArgumentTypeTexture) { const char* name = utf8String(arg.name); @@ -1861,16 +1875,13 @@ namespace bgfx { namespace mtl if (NULL != info) { - if (ps->m_samplerCount >= BGFX_CONFIG_MAX_TEXTURE_SAMPLERS) + if (arg.index >= BGFX_CONFIG_MAX_TEXTURE_SAMPLERS) { - BX_WARN(NULL != info, "Too many samplers in shader(only %d is supported). User defined uniform '%s' won't be set.", BGFX_CONFIG_MAX_TEXTURE_SAMPLERS, name); + BX_WARN(false, "Binding index is too large %d max is %d. User defined uniform '%s' won't be set.", int(arg.index), BGFX_CONFIG_MAX_TEXTURE_SAMPLERS - 1, name); } else { - ps->m_samplers[ps->m_samplerCount].m_index = uint32_t(arg.index); - ps->m_samplers[ps->m_samplerCount].m_uniform = info->m_handle; - ps->m_samplers[ps->m_samplerCount].m_fragment = fragmentBit ? 1 : 0; - ++ps->m_samplerCount; + ps->m_bindingTypes[arg.index] = fragmentBit ? PipelineStateMtl::BindToFragmentShader : PipelineStateMtl::BindToVertexShader; BX_TRACE("texture %s %d index:%d", name, info->m_handle, uint32_t(arg.index) ); } } @@ -3696,6 +3707,7 @@ namespace bgfx { namespace mtl uint8_t primIndex = uint8_t(primType>>BGFX_STATE_PT_SHIFT); PrimInfo prim = s_primInfo[primIndex]; const uint32_t maxComputeBindings = g_caps.limits.maxComputeBindings; + const uint32_t maxTextureSamplers = g_caps.limits.maxTextureSamplers; RenderCommandEncoder rce; PipelineStateMtl* currentPso = NULL; @@ -4379,28 +4391,46 @@ namespace bgfx { namespace mtl if (isValid(currentProgram) ) { - for (uint32_t sampler = 0, numSamplers = currentPso->m_samplerCount; sampler < numSamplers; ++sampler) + uint8_t* bindingTypes = currentPso->m_bindingTypes; + for (uint8_t stage = 0; stage < maxTextureSamplers; ++stage) { - const SamplerInfo& samplerInfo = currentPso->m_samplers[sampler]; - - UniformHandle handle = samplerInfo.m_uniform; - int stage = *( (int*)m_uniforms[handle.idx]); - const Binding& bind = renderBind.m_bind[stage]; Binding& current = currentBind.m_bind[stage]; - if (current.m_idx != bind.m_idx - || current.m_samplerFlags != bind.m_samplerFlags - || programChanged) + || current.m_type != bind.m_type + || current.m_samplerFlags != bind.m_samplerFlags + || programChanged) { if (kInvalidHandle != bind.m_idx) { - TextureMtl& texture = m_textures[bind.m_idx]; - texture.commit(samplerInfo.m_index - , !samplerInfo.m_fragment - , samplerInfo.m_fragment - , bind.m_samplerFlags - ); + switch (bind.m_type) + { + case Binding::Texture: + { + TextureMtl& texture = m_textures[bind.m_idx]; + texture.commit(stage + , 0 != (bindingTypes[stage] & PipelineStateMtl::BindToVertexShader) + , 0 != (bindingTypes[stage] & PipelineStateMtl::BindToFragmentShader) + , bind.m_samplerFlags + ); + } + break; + + case Binding::IndexBuffer: + case Binding::VertexBuffer: + { + const BufferMtl& buffer = Binding::IndexBuffer == bind.m_type + ? m_indexBuffers[bind.m_idx] + : m_vertexBuffers[bind.m_idx] + ; + + if (0 != (bindingTypes[stage] & PipelineStateMtl::BindToVertexShader)) + rce.setVertexBuffer(buffer.m_ptr, 0, stage + 1); + if (0 != (bindingTypes[stage] & PipelineStateMtl::BindToFragmentShader)) + rce.setFragmentBuffer(buffer.m_ptr, 0, stage + 1); + } + break; + } } }