From 849654517072b6d11cc26fa03c186a3bc357bd8a Mon Sep 17 00:00:00 2001 From: MooglyGuy Date: Sat, 10 Jun 2017 12:50:05 +0200 Subject: [PATCH] -bgfx: Fixed the following xBR shaders: xBR-lv2-fast, xBR-lv2-noblend, xBR-lv2, xBR-lv3-noblend, and xBR-lv3. [Ryan Holtz] --- bgfx/chains/xbr/xbr-lv2-3d.json | 2 +- bgfx/chains/xbr/xbr-lv2-fast.json | 15 -- bgfx/chains/xbr/xbr-lv2-noblend.json | 15 -- bgfx/chains/xbr/xbr-lv2.json | 15 -- .../shaders/dx11/chains/xbr/fs_xbr-lv2-3d.bin | Bin 9531 -> 9300 bytes .../dx11/chains/xbr/fs_xbr-lv2-fast.bin | Bin 4949 -> 4942 bytes .../dx11/chains/xbr/fs_xbr-lv2-noblend.bin | Bin 5120 -> 5395 bytes bgfx/shaders/dx11/chains/xbr/fs_xbr-lv2.bin | Bin 5885 -> 6518 bytes .../dx11/chains/xbr/fs_xbr-lv3-noblend.bin | Bin 6332 -> 7423 bytes bgfx/shaders/dx11/chains/xbr/fs_xbr-lv3.bin | Bin 8481 -> 7922 bytes .../shaders/dx11/chains/xbr/vs_xbr-lv2-3d.bin | Bin 711 -> 1343 bytes bgfx/shaders/dx9/chains/xbr/fs_xbr-lv2-3d.bin | Bin 5140 -> 4693 bytes .../dx9/chains/xbr/fs_xbr-lv2-fast.bin | Bin 2830 -> 2519 bytes .../dx9/chains/xbr/fs_xbr-lv2-noblend.bin | Bin 2525 -> 2596 bytes bgfx/shaders/dx9/chains/xbr/fs_xbr-lv2.bin | Bin 3342 -> 3235 bytes .../dx9/chains/xbr/fs_xbr-lv3-noblend.bin | Bin 3165 -> 3632 bytes bgfx/shaders/dx9/chains/xbr/fs_xbr-lv3.bin | Bin 4394 -> 4011 bytes bgfx/shaders/dx9/chains/xbr/vs_xbr-lv2-3d.bin | Bin 514 -> 726 bytes .../shaders/essl/chains/xbr/fs_xbr-lv2-3d.bin | Bin 9638 -> 10107 bytes .../essl/chains/xbr/fs_xbr-lv2-fast.bin | Bin 5304 -> 5484 bytes .../essl/chains/xbr/fs_xbr-lv2-noblend.bin | Bin 7137 -> 7171 bytes bgfx/shaders/essl/chains/xbr/fs_xbr-lv2.bin | Bin 6336 -> 7246 bytes .../essl/chains/xbr/fs_xbr-lv3-noblend.bin | Bin 8802 -> 9926 bytes bgfx/shaders/essl/chains/xbr/fs_xbr-lv3.bin | Bin 10312 -> 10691 bytes .../shaders/essl/chains/xbr/vs_xbr-lv2-3d.bin | Bin 745 -> 2136 bytes .../shaders/glsl/chains/xbr/fs_xbr-lv2-3d.bin | Bin 9322 -> 9773 bytes .../glsl/chains/xbr/fs_xbr-lv2-fast.bin | Bin 5100 -> 5274 bytes .../glsl/chains/xbr/fs_xbr-lv2-noblend.bin | Bin 6880 -> 6913 bytes bgfx/shaders/glsl/chains/xbr/fs_xbr-lv2.bin | Bin 6083 -> 6982 bytes .../glsl/chains/xbr/fs_xbr-lv3-noblend.bin | Bin 8509 -> 9622 bytes bgfx/shaders/glsl/chains/xbr/fs_xbr-lv3.bin | Bin 9927 -> 10315 bytes .../shaders/glsl/chains/xbr/vs_xbr-lv2-3d.bin | Bin 673 -> 1980 bytes .../metal/chains/xbr/fs_xbr-lv2-3d.bin | Bin 13025 -> 13854 bytes .../metal/chains/xbr/fs_xbr-lv2-fast.bin | Bin 7331 -> 7759 bytes .../metal/chains/xbr/fs_xbr-lv2-noblend.bin | Bin 8537 -> 8592 bytes bgfx/shaders/metal/chains/xbr/fs_xbr-lv2.bin | Bin 8581 -> 10337 bytes .../metal/chains/xbr/fs_xbr-lv3-noblend.bin | Bin 10602 -> 12246 bytes bgfx/shaders/metal/chains/xbr/fs_xbr-lv3.bin | Bin 13301 -> 14093 bytes .../metal/chains/xbr/vs_xbr-lv2-3d.bin | Bin 1097 -> 2515 bytes .../bgfx/shaders/chains/xbr/fs_xbr-lv2-3d.sc | 175 ++++++++---------- .../shaders/chains/xbr/fs_xbr-lv2-fast.sc | 89 ++++----- .../shaders/chains/xbr/fs_xbr-lv2-noblend.sc | 91 +++------ .../bgfx/shaders/chains/xbr/fs_xbr-lv2.sc | 122 +++++------- .../shaders/chains/xbr/fs_xbr-lv3-noblend.sc | 111 +++++------ .../bgfx/shaders/chains/xbr/fs_xbr-lv3.sc | 121 +++++------- .../bgfx/shaders/chains/xbr/vs_xbr-lv2-3d.sc | 10 +- 46 files changed, 294 insertions(+), 472 deletions(-) diff --git a/bgfx/chains/xbr/xbr-lv2-3d.json b/bgfx/chains/xbr/xbr-lv2-3d.json index 7403b3e5b1a..accc199ee3d 100644 --- a/bgfx/chains/xbr/xbr-lv2-3d.json +++ b/bgfx/chains/xbr/xbr-lv2-3d.json @@ -27,7 +27,7 @@ */ { - "name": "xBR-lv2-3d", + "name": "xBR-lv2 3D", "author": "Hyllian", "passes": [ { diff --git a/bgfx/chains/xbr/xbr-lv2-fast.json b/bgfx/chains/xbr/xbr-lv2-fast.json index b3b3a1e5141..dee37b63f50 100644 --- a/bgfx/chains/xbr/xbr-lv2-fast.json +++ b/bgfx/chains/xbr/xbr-lv2-fast.json @@ -29,13 +29,6 @@ { "name": "xBR-lv2 Fast", "author": "Hyllian", - "targets": [ - { - "name": "internal", - "mode": "guest", - "doublebuffer": true - } - ], "passes": [ { "effect": "xbr/xbr-lv2-fast", @@ -43,14 +36,6 @@ "input": [ { "sampler": "decal", "texture": "screen" } ], - "output": "internal" - }, - { - "effect": "misc/blit", - "name": "Upscale", - "input": [ - { "sampler": "s_tex", "target": "internal" } - ], "output": "output" } ] diff --git a/bgfx/chains/xbr/xbr-lv2-noblend.json b/bgfx/chains/xbr/xbr-lv2-noblend.json index 6d8a70d9351..6469df993c5 100644 --- a/bgfx/chains/xbr/xbr-lv2-noblend.json +++ b/bgfx/chains/xbr/xbr-lv2-noblend.json @@ -29,13 +29,6 @@ { "name": "xBR-lv2 No Blend", "author": "Hyllian", - "targets": [ - { - "name": "internal", - "mode": "guest", - "doublebuffer": true - } - ], "passes": [ { "effect": "xbr/xbr-lv2-noblend", @@ -43,14 +36,6 @@ "input": [ { "sampler": "decal", "texture": "screen" } ], - "output": "internal" - }, - { - "effect": "misc/blit", - "name": "Upscale", - "input": [ - { "sampler": "s_tex", "target": "internal" } - ], "output": "output" } ] diff --git a/bgfx/chains/xbr/xbr-lv2.json b/bgfx/chains/xbr/xbr-lv2.json index 0b821dd82a3..fbcda45917d 100644 --- a/bgfx/chains/xbr/xbr-lv2.json +++ b/bgfx/chains/xbr/xbr-lv2.json @@ -29,13 +29,6 @@ { "name": "xBR-lv2", "author": "Hyllian", - "targets": [ - { - "name": "internal", - "mode": "guest", - "doublebuffer": true - } - ], "passes": [ { "effect": "xbr/xbr-lv2", @@ -43,14 +36,6 @@ "input": [ { "sampler": "decal", "texture": "screen" } ], - "output": "internal" - }, - { - "effect": "misc/blit", - "name": "Upscale", - "input": [ - { "sampler": "s_tex", "target": "internal" } - ], "output": "output" } ] diff --git a/bgfx/shaders/dx11/chains/xbr/fs_xbr-lv2-3d.bin b/bgfx/shaders/dx11/chains/xbr/fs_xbr-lv2-3d.bin index d8e18eed1ecd3d99e41bad7a8400766470eb217f..60cd601bb675633e269797ea4ccee155ba6eef4f 100644 GIT binary patch literal 9300 zcmcJV&ud;;8OLvKe*c&@#!-h6A=I6?=v1kr;N&K0-X>6*F-dEyi_DBx6kN!Rf~d&b zAhQ%1q4*bc(~T(1wu8v5U5G0cH)d}Zg9``zex7^2_dW0NzKKOVaPK+q^ZWTe&pG$r zw1dOlnYUj4Qq&~kkWmnIQaRx zezmcG4fn6D#_xMCDE;rX>pOR<>W$TE`r7Jh;KTY%Yy5Z(4qlVH*W~LpIeJaZUX$+w z`9523{e4?ypg*q*>MLqW##9qi^|I3aU82oB-^Mfdv-M!&_fp1xe5uu)8@7C6+?360 z(g(NGrI!DqXlJ5P`wtRL%caiGOeJr)trU-Ql+L1K%wr#< zJjhdH9vN!jJl;-r6w~~g){Lbw+rw8x3jENUn^_$Sj~H5qE&b^14w4OKQ6(zy{eOEE-mgA2cn75mM!5>N7{Ujj$v9kMBZ>tl<0F!$-x!`2U(48M28 zBVJ=Rw=l{<?{F^}X&I>s@_#x=P3JlB3wj^|;7 zzH6WBzaae2#0#396R{UGBdc>|Dd!(=C?FX)L@W z-*HA~XC?WwCp6~YFn=-0EssC1k$W`T^7^o$wm$pf3@Q2_-{$i8P}OP+fdnUZIl@Z4+A{`9f- zJ!lf1p(h+Y=jRDApdWjscsBww@bojKuO8s|zTWWz&mR4)Oh3om@q-WkiD^>&_86cu-tR33a9vSD( zn%JW!d$1$+u&J0m=e1kGrm&B*ut%TTSubP@?4VJ*sB4ctwfk@Mqb@!AClmDLcHu1X zz%A-?sXc4)_o?)5A2EymP&DX%Kj-_)HA*rSbKU4x)W}#rCk}l!32S0ShV#O6jEnMA*3_y`Uv2|y{2Ob{@mxdRSVznWYu0^OCmFt- ztGdyxz}h{Z*My!&-Z=2L26}E%&w?W|;O9B71E(i@<~$s&hiqAgpk09DMf${lULW=8 zE0m~1@PtX;^Uz#}h%eOvdS4xqjF9TDgWlWX+n74=>~`I(2VJAc z$D^O&C(ej$pQ`4uXOY+F_PXiD06p*HJjS{aqv)-?f2e=p*K_8ukHY>r{X_jG>9dcl zA9xjKCN%WVdtP0nPyCbg^Zw8M%WdF@o@?ZNj6c^a>?ZtK=k+qyNhV^b8wnLydmra= z-p3N|`UV;}s>g<#n)5hPJ-a^Wi^DZ%t{dHoI7A3v;9wt7x8&D3e?)xu7P5W5l1#;1 zH@X$Ryl0%VouSM9rL-T=CEkac(f?oLq27+iXKRWl-ql%a4|g&pk2+Z& zURhs};@u?aMUKf&A&=cjJa8#_?g#9AF7;(@ zvu?yFd^^Ux27Pk&WjSW>%wx=X#7|91J;#WwV>FGqZgeYRv|Mh#Pfot#TMxg~jBkrp zu4=U8-)`R1^;GA>3TICA=~ONke>-|A|6Cg%*WWv^WqHOIfqMgFO-e4!^!QjGwV#c8ta--(z5ejCop)J(KWZ{7N2nCh@>pBhL2}XS{RpedROM{8X3V z^ZjVP-vh1xP&~`BhVC;f$&~wRV^q&-;Z4;g^!4r^-s*dmVKBwcU_8w=^XR5P*~5l7Ms z+)_TlcP`K#>+jo+!+uh~{)Y`=*?m{r20G-zAV%9jRwKtW;;;>Hvklf@%D{#(&22=C zdZwmW!_CO!ZF literal 9531 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 diff --git a/bgfx/shaders/dx11/chains/xbr/fs_xbr-lv2-fast.bin b/bgfx/shaders/dx11/chains/xbr/fs_xbr-lv2-fast.bin index c7ba1220aa56c07216a23b7afa948a035c97c582..81e60bd278b12115a35865ad298a694e3fa911e8 100644 GIT binary patch literal 4942 zcmbW5%WK?K6vuCVd1sPz9Pw3D20<64i#AHth0RTqnI;f2HIv4~&G-taxR9zKE_9kd zz>N?qE|ns7r{XqUDS``E?g}DOTzBEx@8|sPnfc|{nG(HlAHQ?H=XuY)bCYI!b?oQU zUw$zWrgtuEcG}BJ>y26nVI<7*z1w-Iv37BFs}`yvRUtKA>};)WHrlJL^_5zvi+n%i z_3eeua;wp7t}U-MHY9LHoXQ8C_xC>Ry!X~eduM7PiZcGj-s`Wvb7lk!zt&cEE-XKF z>hZrmzxv6oN1ohY`DN_vS7M11!l>rc>VK<0D&kuE;>HhJPpD6+UsI=n2TMDl{-{vG6p=au&T0jRwgHAso0q9_8(8koA&Nq#DTpfCQyK|}4UfWu0ZG`34dTTRm zHFlO;t<9Biqb1*o1v~g&SNG<+@KHLpmNqXow!)1Y?bVgdZ|)1qS_p5;_^w=Nep=U8 zZu4c#zf!gDormS#yZQR^JSSK0 zXxnMqN!NC_Zr{kClpD@(&gVGE%s?Z~e@^7IEb1c^}~e_X2Fr)=139O6{dTb z`r?C?T$kg~doMhGfN?*x4DMSN`ReIUcEY5`a6S3!`sYKaz$0&2)L^m!IrXqOk#Ye? z&GcA2@`3qB`JVRHa#G}FQGi~Y=nP$T(?M=;O9!$(JI~@zF%nl%f036(N#wciCVvm- z>$(0S4jtHYUeQPVht~*U+VgPxWNx$halU6>f68~|igE?s^Mai$hVa|>yXSWwdUo;J zt zTwx!1?lJrxsG$^(2zTuvc>`bOxh`UVKFK+ae7k>MtIlK2 zqK1-fuOIlFg(BX0o@bxIJpCWfg6558T8+wSLpJEz}=?HhPCtLvnrSJ(JS{YcjGmd=#z0a&l=^t*04@QwRxNptBg z?VTOzH60!Ydfi5%_4q{_%H!nwcHI(vt|e%CtBY0UD)_Sf}8bGa<) zqom(!sE7lPKf`$JPnqX;26~()AI!GT@XCG>R~9uK!!N%pU4Pl-&-3 zRuHj;4M|sO{k^x}2jsG-;m8@|J52qVuoLOsX*tkahWz1=^T{o3TeXQk;r;yea(ghD z?~lji{_uAVO+K1G*vO)Wl0Uow9LpI-GpMlg2v`-ZtGyK?~CnCJ*Rsd cP1OiZKAW9$`oG71!i+>X-9;UGnY|SL1p-~rg8%>k literal 4949 zcma)DW$QrpXc?BSGtR*POrApj98DtT3VakSm<|qy~Tya?ioos zl1#t9@!sZ@jdw47xOuFdj)_yuz1>bF#Jq^J5DOwMgy>2;T@I0mL5M_r8ln%{>8lWl z_%1{u?gVkEoqiE9w%$&^Yu|fu^NrWuIyRO>f80KKetzNS$G>0t`}VDu|N88=yFcFf zq$`mmDUEACs_Rc(Pl~y?a_YiS$43w?B1hje`%RCR-o9R9ZzEAH?MUE?C) zqr-yFbw~#A(P6>cqsx4rS?qgt!CzV1INM)YTwUy+Nelg@{&HIFo?qzqmrtgfePJgT z;()!Q%gesNC?BhH%cr`l>E_Lq(Ghd3K07lL_@VEMCXQ)xF%AAr`MTe!?B7({2gU2A)Vi+;V%N0` z*#G+2@EU=i_|zZV!|>A&@@F50pZK;9oksrPCjKb=)Zg}@)3E2ABL7kGkJRkZb^V`G zZp_HO%p=CVJynm@pQ*YGoubq&4NlZA`{2F6FFua9s@*;;V=qeG8a_0KJ8&2e`gQ*| z#<%N$m)-iekCtrggFL}%AIQMZUX;2uFwW+8#n`Ox+~9Y!4m|ofsvq=IaU-7Xd449> z0pAlf9X;+Er&J%PCAs3WDRT~Bf1wuJH8O_X*2sOtFEe2O?3THH-jO}K%UP4^Br`cB z!gDH&gE>7@Kdq2Yi%|UF!*m`Z@9 z>Xu5~w=d=i|61YmfCy~t(=#Y`;BriG)oJV;7mUUZU6i`jVnP!ad(Tt$6y|w0VZ(O`-}E}>FP}I0jnVfbdK$Bp`NUk? zn{_iTo%yEmv$K~e|K_I?o_m?HB8U3C-kz>(C9A)i)%WFkXD}CL5>|WI$6Vxo-OKyI z&T!x8x^J$X_gvSJbwEC>4%Dhy2eEeKMm^j+kq^xc-C_7WN5(I;9rFsl=W^Vp%yU6+ zpqoABT{`92nis>cOHOte)!Nx}c*KII@qhg;~SdYUi3B z)_L@*Wav)SXgy9^=jj?>I-!gFk4#VK>`V={M=aOea%#?6(>xOgeRQ+}C$=~CRkne7 zyPmE2oU3u7Yn<+zb&M0fXx*!GqvghKnPSC%W%RaqB~Scbr%Bhjx4-grRo&0#Wk)=FZtWxqI)f%t&)*?m1_^`OahJ?shj; zCT?Fk_x6NqZC_d6>AbnKxw78bSm~`T&p7AC+$qFsTk|_hy-v5gy0qH4wmIWk(j5J4 z=hNNKcW!_5#qQjUYfEzIgWdPvy*W3=x}Q!jZ(muu^TV0*-+%q$?DOY-{rhJ7mye~A z#<_8gFR8Cca7TT0Ytp2Y$4SQ^9C)Fnqq=uYV(`xoujR()Tdf!$=1(+dADa^go8!C9@z>_~XmdE* z9DjGU_mg(9--k-W3CTJN#S>K(ZU1a5#RDfU2$j6I;`0Y3tJzCWBr`sP=|Hpe_#=pI;?vK#QNizR;=GTEO=4p#A}p~ zAuw!y=D{g{=?GSn#1Hnt07-SlIY5h$Zo1tFP{f*50B7 zG|eLqO`{&Z7mgJA$gkA*>y!0&S*&Jr)^$=1GbfHsb%*aUF3Jg`4}*LSi*tnU#Jetz z_-tYkDT+DUC7qxt{s{M42p z&Am##4uXY`O<2_TC@j&9xqbf>(@lO+KlOQCOlIa{zB*2$to5wQ5lx zagv_ka<45((Z&Qvu9Hn1eL%Oj@N|EQ zZ^Sb0a8S$nM!j*z&T5Lf#ZR~}_d$=Wo|qF4){6fW+zcnye7cKXNIF&vk0FlOm`}*S zqWPdl#V4~fT=wxnkBZ%^84tVP?A#cJacsi4lwrU(w>O>fun`-J8?4CTA`>;k@PW61 zT$OQ~DE!|~ad;)=JKw(!V;CoG*w3}agPg*RI@a1)o2fqfwP1Cpn9(9etY2~Cd(T~C z7|L(d=NM*-%=SpKxCirm55q{l_IXef*osH2{ZX+nyTrvY`k+T8?p7yYTYV58VqzGH zZ`|JpDH<@2OGA!{3nLhY&s^VJi&@l36yt@x)d_Rsp;*M6nEtMG%!#?pjU)KPh|vc< zDjcmgayyG@la3fybynx#RCVlX9I86It5|28Er-O-2R#}%n;j!DBp-&K>)1QhS$UQu zGtSuBI!z-MBkSsP#u*!}i@8F!rSAxN*xGCBS>)ub{`yw$WUYCsR$1$V9)+Ke%CWpN zAL!d2eHtr9-KTwwV(nwy@s6(bZo#-$V+w{3dJM)i;t?n6tmNdd2KTZ0Bi&)g@F&*3 zxRiGB-qPNC^o3`S7BM$_?7BnjEl1{8i5vIVYH$m`(3xKmS9vP!BMX>m{)D=Y#CS9C47Lx0zhfmnOg_*HBYr0}?fVDLOooHbhkBg(WGCMuPQ*+yz7zZ( wp`CT*w_!S)%YMpiUQ4!P+KXDFj&HS#^%lE42UuOu{dOG03n3X z#zh(==)ylpK^ht=iljjN1SDFDP|>77h>G_)bKluvGvk;m-8py8IrlxE_wMXqt_Rp>F)_(f-`=9?<{O!j-cO{Y}rD@UAnwQ1+QgdzN z($%L#=f#`T{9BWOKDvw(nlmu+fX^%Z`3Zg@-n10pTZBIIgf_rOhXHR!(|q0;&_kN$ zqr-qdt7$$u4ETpN%}0j;pP0-?hXMbHCj5=9o!5sOYnyAst7&C;Ww@R;SGQM&!}W{l z?ohcQSHuBMU(*8&200MM=K1wYtDEWW-Hpo^*H5clrTAaV@i!FW;G4eQD!Xq&-tNWw z_OlBA<7$2FT1xNs()3cV7x`iRP;2aXO&+`^cCU%oYhv^opS>pDUDG4 zU=V*B#@+!jeto(Z{n>_rAH+^Rx?-Vr#6qpwFz~||=(+IL~dtvaW-r|bGg z?%88G3+j+*olm{j`yb4VYhoAmQQju@i%X?enbcCpe;E(D*3I)oKIt*+jh3# zcqMz^=Ql~*g{&wcqvhtb zo^i2LlzL3)z0&Z5+;G3UmyKZ`yD-i*Fz~mjZ<+ltMaOx=E7yayF^ZD6|HdW8IBzpm zZXV>k?Pp8->KZyu+oWH#H_lzIYkk&cM}0}_QTG{jBv-zR!BE}mJ_GxvcyVT=3$ATs zUM+9hFh>H351x+|tQL&k6n(4y3%1LK$^)Q-I1FF7#= zGI-FU)MEm}wL^}5+vMG{W-P{v;+|k_4Am%l z#qyhyu~uJ2y;wVL@NKgw_0kb{QxAROcWjd~dSg=NxY4z3pTo!HTwB6N(gySPrBnJF$obA6E&r5;tT?u}`6_R+he-`mii zs;FvRV-%$n(tX{BiK+c*nVh2U+}IYhDD`->E`diKsQcKbgf_VMHSg&TJ4QU@cpzWK zdU0>b_K3Os%+ac*){pr2(RU9xt}$-dmo;#!xR5!nz|Ci`C?%MP%Xp8T<;YWgMvdol z_^5uwx2$;T?-hJ@&v_sDwGQ5(V`^WU{brddef`n_fAbt0dy7(!iDBC>%jfH=8Q5Eg z@_kk0|9ql+8(T+tNO$JPI`NH@b)jYaUrum#DhQ3W`58iE(U%OCwL4! z=lFgmFSW0GeMG?%nWGLlhPY>uS(p6_jr}2;*uRwJiY4|3R_1X}?`h3AmBx4Td}A&B l!`68<>rR#I7)5Vi?^pYsEBgjzoYj4{mvy}FwK$Gv(!Y0G&L;o> diff --git a/bgfx/shaders/dx11/chains/xbr/fs_xbr-lv2.bin b/bgfx/shaders/dx11/chains/xbr/fs_xbr-lv2.bin index b288f8a7d84dd0780cacea4973b2ede6bcf1d6a9..eb0889524efd3824ba4b29e85795b8b47e0fbd10 100644 GIT binary patch literal 6518 zcmcJTONbrS7KV2!out#9$FY3{EqpzqZ*9T^7n zeVV2t!+=gsrX$0EzF!mi+Q#NnG(J0CP3yz+OXKnC>2!50Y`}^Enm^U;*%UyoK5{*%R!1(T{y>4&c_JbB^nM^1e5^T$t!gr$A7HDeSWniYBb zqW&Z0Moe8_=-*f9hpg;$^}oy5^y#0vMSbw;)4zNR`aj+|h~DkfCw}Ti{(bRNN8+c3 zefq?2ePppy=8qo!se7M3@moK9bo9}q*4z1~e%22kSzl_i?v>G@!Q`X}jN|(o`G4hJ zq6gt$3hq|VfQ9my!$y{gwW<-EoG9lo+oDF~8uFdKq*ur_>ZlmKmRQkaAMDU; z#|~D|@E>^e_@~x4)5m|v^ypLTK7F|jtnqJrwFc(M8|#QUW6izyXNh%|iTzg966#>B z{k^YS6V)%|T?gI|^laGb$pajbp;x_@b(j~Ap4$mW>ml3i`Jmkd$D8RB|4x0>r>{_= z4#5*95r6J|Xs$!Vm+Jt%uMSxzu~xM%ojM#V_Rp2w8Eg5p9eCVkMeHpb< zJ-l}70Uq1w)0fr@|DAmS4gH0$NSiFQ8)Du z&l)Xm>}~Q;k4;W${U>p=kGyZf@2%kGoHMp*yPUmeoU`T2+`VU@ahC7V+V|e1=j1oe zp3u)dFH&HaZMT^1&GHZC8XuA%`CihBY}p6S2O02Zt!iC5HFQ4gb^6Tmac*tZvOTZW zms2uQYkBs=ivDAnXRN4+b8vj-u~xM%o%qTgBfe7JJjd!48I8a&=Mxyldrz^^f96Az z-9CQoBfhtf7Z_iWtnn^wDCeNt2YP*cZhn7`u4-h(B26i_oi9KH7t2m&C~R^mFoltUDuFj+c0iL{!`y) zw&5CkEiti;d}g-$M!HeU?6<9x_Y3kGfh+#$GiW|b@_7~f(uVPZW*?arKDaM^2+OdM z<80#q6J)zsAXnA8bnvvCab&G(T{?2!f7n(o(f8heB1J5+)%Jh6KYeDxS9}pG_daj9 z*Npc>mWi{hs>SHUVY!S=+2d0+cD(c}=S;3+#BE-#i|Z3S+lL31tW~W`Cl2>eDQE1r z<57by&%KA8hcX7G&8ilo=;dBt!iC5 zFj-29%-eF&C=$njh|BcC_uFd}|_vo(&&NcYN$10uno8tGw4XvuhNQtX3 zNZ)E+)A@A(-RPBFrCgjT*Axr$#9i}E-ja5lhd$AP&vIWui4~@b0)SJY#?4)x7d7 zAlK4<$*XEC0~3yZ*A-RSk`w6=93C-cFUv7vp3Z{)#8BjQ2#%DzT7=heo;Z+?d3LAI)O>BPe~sAcDJT>s9x yvf1)lT5BWC8n@Ab#@CgDTd_oK78|s@v^%k0W_wdv*dsq`nGIZn_3 literal 5885 zcma)?CQX36xGr(wf>u>PNtWV6h5SM3M?F zi>s{N=%y}87p?`N>uz){F0yeWU8qa{zccs$a{HJ`df~l$=6s+3IrqIcozqZM?I%d|_#=nWn{h9@fRHvl|QD#ZG5=VR`YABrQp% zKHvCk^UlWYn_q6uG}DYYjk!;nsSPnN;xfd7h#Mig(@eKQBw{N>BEAdJ7tQp2h(tUH zk%(V{xY)*!` zNs`jA_E&W+iSd=L<<$$9j%%M3Z(P@Zx>)F=%Q~iO1V&!)`3Zlr#&3u>ECu)$q0e

p7Q{Eg}Oy?#RF-|Epc%2?WU>MG&Pzg zXVcWXsn}0iy?7s~4M)XW6ckT1(X8E*(}82>>)vnYc{b~S!{}BE)xgAc;paKEfRn-M z9NpWoaSZz2QBCAhkAeNE!aj86r*8i!W75xl{u%ATrJw!XXR!bMh3S~te)hztU)0|( zfBHxM^sb*h@okSTe#-i>BR>7^XAl0ij~F$3?C9~J_@@f{h>`7OHtrcwPFr(gu*i>i zS|Mll&P?>=&LhjK8N+@%Ou{~B>=yHkL4(nt8KFjWi0!?^h~83T#IMb zr}%?rgdQJcPyV6PCq6yyXRov?40ndBJ_gq4TMj|(d9U!(@5+96WUmMIWqGz^!%t;z z{Ec7CU!VM`-?(`%@uzRpKggc?Z5KVR;cxr>X8a&~`aj72)HB5Aj14*?~bjD1(Z&T7C@BQWu z9ejH)`*v8eZx1+kwnG;`b$jCPckT|dCw}yHz})q-S1N%!xiIT_HUfY2wL%VUxt~#` z9E_)CIS&r^DD7I}aTz4N@H`%({_&U9lO^vrslCX+Pc*+6{C8-8Y|^copZ&Av&ziC z-`0-*(XE#5@)`G@51$|K_OqI~Rqv}=wGZp!*D*3LVnCNM?1R|$k?Dl4>WdjNkG;{> ztyZt~ay{|P=%?oy!nbOP^H-mtoNvV6&&Lt@p#SjRyx3P=X6(?d%ZweedR_o_>Kz$@qE8YSDeHn8iLKlWw*_1+Wfjf_cM zMvm?=biK!X@42=(2f6or$CkBWOOO2>*l3GUJ5Q5&){tmLkMQX;P96N#8nd6bG&9Vp zcaecn9j)*Y-~QP)zT>4=`hceY_L24Do8LaNUEm%6 zW#l8z$i%~J3s&J{JpW(Nj;?)VyYLauAo+mjTHyUSxtE9Iz}JdeN+0omqgD%YYGHM< zfA;)*C^3yZ>;v4K2Q-+nur;QokBn9L2zmZq#0Pk=z=PEh4#ovtt-U<*es diff --git a/bgfx/shaders/dx11/chains/xbr/fs_xbr-lv3-noblend.bin b/bgfx/shaders/dx11/chains/xbr/fs_xbr-lv3-noblend.bin index 3b4f0db46a32145c202ce5166d87daed0c99cb52..d4bc94a4e7a515802737ef283e8e22bc6f7bcfe7 100644 GIT binary patch literal 7423 zcmbW6&2L>t8OBd0j*~iVa_hE$(jr;ibkjxZN@Ky=HB4PwJ0e?S(9WuM=B=DGJ|e2x=$q%$+;ooAkT zzh>t6da|{?@ZsyvfB!@?x^a1Pcl^EG?e)#^*8247mF1>sjx|r$;??D5B>6MQukNhw zu1&|2$;R5o_}cbzv!apHzu5ixtzYhb__JT#I=|eUm*m7xZvFU&@0~ve-|t?ya^v#a zZ{Gaq-+zANk6-@frN6)Xx6j63XhoYe&6U?|8I^jOY2h4zFV%fV2PFY2)z3fDK7Mc?+ug@r_p#A^bao$mZ)xoZEA4teRT!R=Y%EtiP`**_pBsfA zC%geU{fCELLYKsNH6?lE-)z{(sijBjqF5}!Q83Y_%-G(=?lUf2#20@KYz&|DaFH{Q;*z=%oAA?_HXe#g#E7|$4R?cM1GXZsSa%gWlbv!si+t@zWn4xKmQbLmH$ zvZ~5f31&Kb4eup%@LI??`|#_~{_#B8lvP!0X-~u%SnQAQjy{|whECjMK5yfUF8kYi z`e}_@XRuvAdaZ(KXj4{I>9kt>?RXk*9g(X+x;5nJ0<$I2Z1O++qu?{hwxgE2U0Q&u$) z?`JgPwK#jgoBvt$k-<;fjU?i$_s?fxp?e$0_Cp5hLH6WwmB<%~*MRkNph{tz#4D#7VByLSL{ z%~{5S)Ax9nk3O8>UMcY^T-GzjbdE+Wi;f{9=XrO&(zkvo>!pf?bt<^~ z&}+oI%T3>Rgzq_Iib2HN9OM&yVS=NZE38M%kXg?no8?SbPjeJo17o|HSI3L7lvP!^ zV4QP}Hf2>6&gU51wzWRTYy)k|swxi0n0 zqHoOK2i>u*PtX^=&FL|($GgWOuS+d?g4w ziZ5f&fMOr9|5ReUdoFYTJCCGK>`#y1));-~z4VyrQZO-|vIZ($%w=8RqTk2m*wd!0 zs^W6)J8wY{!*XwhO+_}d*?Yu#FfM<_KBaFx=-a>a@i`@BRRem&cad=RT~`le(k=9$ zU+aO)deHCFqhNwRWq~R^tgrQ;O<7fi^M2^Y3j4s<99W&QssWB}jLhLZ03UYF_rN|( zdiM9#?(4pLlKsOPJ0}j{gb7^!#_3i!=6?87mL1wdS=@Pst8Jd+ zAO1b*Fu(P$m9-vg?cGBs>^$mPNAoX!h;u?~Huvl=)}82Vna3gQk{|HJ-o@I#;10vr z{+;v2`kD=IdrmQCn}b(=nByPzuk?*`#(D1i^gHwH=Yt$^HpV{f`uTC!6m`tCzx~d9 z>t&hmE5CE@))?Py)*Y<#$Mf7Ss$;v5rL3wd_?+^ZeDr}bi8+gElUjbyir>%F@_Usr z$k->wC=N5MF~~k&nq%T`Nbw*yhWYGc^Tcmr!hkh~KKfA52mNUI&CVF+!9!upd^HAr zjIqvLyXa$=F@3h9PameMvu!tz*D~h6#UAUtSiU=HyZ)iyXFGaI%lKajw%$3}>YVby z-vu;$invmYlaJ!QfFGV^)%F>(l>2#B3r>2^=1+=@?_hqXpqy*w-@!|rzPL{s^PPe{ irnNXL$ny_Y+WGbiv82$V*9CnSeOxe}_f{MOx%mo={t>hQ literal 6332 zcmb7|y>A><6vdy%j^j9A8|On&5NMSeiNujYKnPFb?8cU&EZD|MpfFz%Af-SFNC-vI z#swv1YN|A8sfin?sVFE@rru=DoT1zVq%q_rA9?+h1Lpx_9Zd zPxhr_H?OR0^gi5JTUzO@E)A|PU0&`;G5z z|FCiIn;&nVn@e3uCT`88bL#hfdHajc?wp%o{@UrQH?J(d_u$#@U;Xyh;rp9!EdBjt z^^R21q%^7iODa8KIT|HH?e$4WpcH;TwX@&o7HU8+Mls@mI$@xwv_+k7)W7hE)9y}&?kBQe~ zV)PiFJtp4UTKh$}TJLM6;iP0eQSn06MSFgx6Fl}GRL}PFn8M%8HvJ=&&N1PiG2p2$ zpINI7gDR$h5w@9^CdMB*?lz3GuYf`PZ5UVfi1F9SPSoc(4C;8dScr>Q$W_6fE{saqQAzI{38QpDcE?xO00y~X&E_Nm9t zOUA0l3-~v9K59X-7G#~wCDfTkodB%6vB~OftQny-;8GHTndcC1GvM*KK@{Kxt zJ?j_?FJ$y!PUv;3R#TxXN-5HCp?=ve_{=f4*}YTq!)J+W*%0wve(fe^=9MLoR=A8DK4TkbNsyDD7N@iPdy+)Re^z}82k+~k74Xnq!z2?q#Ii5sc zl)5!|ah-roj){r2h{qU?fxakp8-sCF8rPV3*@1x$T>7Hat%2bj*Vh6Ad+X}4n2)B; zb&&avnqmxAuE*fQ`;_(U^Q*?)T-)n_sTQ@sTeNEgA%4`)9>&&l-cy^%R0mOyjOAC< z0b|#ShNJvso0wOWXm*|%#=;k4F>b@kHafxD^CWS^rSFW9-x`i;#=Ih{^UAa9i7{N$ zic+_Rzru*vS;PJ^Zu2+WB>JM%t%2nn)#GAq?4=vUvaa7KYJYv$)m>P+&gj#YGr7Ko z=EOP8_doG%ue()Bq-$$S{g%$aL(Dy{hxL6g*~upC%2NkB2`t+)-f6#$sW~OSV{^Xd zM^Q?Ue$jpSR4#1k8rhk1=6G%)%O+38!{4IRE$~W>z#BegE;{2ewyY@iut(mRXAT+f zQn#onI%2Kx&>1gc&ABN`DaPQz zVNvQf(uaTH3p(Qk*TQ?*J~&?x$FVm-A`b5>KQm9f#<^>md(Ow^e4p3m1zZ0n`8+Ko z|Mdd801=f3q1vtGY35fgHAVthC+ zO5Oe^4%^p%pDlCGJB(v=p50?(-L%HU?H-$^&hG`-m>Ugu%riI0FXZ#lHuOcQTO%&- zH#9}5TchC@?QPY>T~#~lPpc13i~PN?ZA z`Q*|#@l7ooY;D6Be`u@`9IEFV-!{wxhlY*unl|`j8~a?3i!pK8CjM&>Ufl+N+HC4R zJ9guEE!#ZH@!03-{9a05=ZA4y?D!)uXZSuP)<^rZ&zoI6RsSign<1aHk-n(*5V*{r z%k$wZd~D30&wBY8doOIVjJ>xBirSg9z29bQW7+Sw&AZulqGZM}&e^-&YQA~E51ReC QsP~i2Y~y+F$CfVBe{o<_cmMzZ diff --git a/bgfx/shaders/dx11/chains/xbr/fs_xbr-lv3.bin b/bgfx/shaders/dx11/chains/xbr/fs_xbr-lv3.bin index e2cebba1f6779b31133275b3d188515eb728b27e..1d89ff9dc03dbf67bf2d7bbecefb056ca80585ba 100644 GIT binary patch literal 7922 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 diff --git a/bgfx/shaders/dx11/chains/xbr/vs_xbr-lv2-3d.bin b/bgfx/shaders/dx11/chains/xbr/vs_xbr-lv2-3d.bin index 324107e89b14844b1f2e8e2f67db752ad3bf6e66..fcd71edc655c94d9c8a98e91bf81e60d2ad6c4c7 100644 GIT binary patch literal 1343 zcmZuvJx|+E6uq$>Cxi+z&w++02_axd!~#%$M4;cSiRD~a{cBC#jnLkP14BjWlhaU!y9q9lWd#!$>`T6&c^{==4f9|fj=ik=; zuIG?DMgbS^NANTFCBSyPxpRP+coE)#s}Z9uE{gO_m_CWKUI9Up!5w_Nz?B=XEMvP~u zIKOFp=i!QzLnH3P6(@&AyZ~3692#+IQk)zb@i{p0xR*>0#hlUPXuii=t*8bv_j(QP zF2)T`D~QY-IBR!QE~np&tB9#tW9r;T&ZuHI{5N0@zBR5QCQotBrZIJEoS%xRPjPC} zm|8Waz5@}5wQD$rk(e2J4^3~?!8xi}m;P5Au=rL_uwZfl6;+F3%IDlqur}2ete6~P zsxd%4&O>a~&XcPHfGuDpN5D9bKdcZ+??&*k!Z5uL&{4Xvd4ADwojU&xfAWd74%3q__Xc)>xDB@C7*R2}^T$=Gh$m#~lQ|(KS^sKUHt07WeeOTFQTF=g_zI z;ZC!8)P7<4UuLvZ@4bHIQByF>t55T|gNCiAJ3vZ$2E0ewKfry_osrMFSw8O?`Dstf Of5u~V^LUiyrThc68FSzO delta 302 zcmdnbb)1zWEZBp^-*txPL=I!^1}2vXC+CX8!Vk=^c=~s7M9<0&nR1?yfq|iciGhI` zNb3Oc93a-1m{wlj0%WiNF$WN505J%F6oV9k06!3yfLRa%Bo2}XiB~~{z$8cF>wj?C;|r#1Jz14I?jS08p_5(A1F0OibCVKvys^ zPTs{dIf##efpe0A09Zd;g96Y5h+ElOAZ%73-wf#VB&ZrD2cQ5Numd@lnH5L~FeESl E0BP_eqW}N^ diff --git a/bgfx/shaders/dx9/chains/xbr/fs_xbr-lv2-3d.bin b/bgfx/shaders/dx9/chains/xbr/fs_xbr-lv2-3d.bin index 28cf2738913d1a774ca4246eda6a8dd496245eff..22aa4d958616c43714e05482e69541136a0fda1b 100644 GIT binary patch literal 4693 zcmZvg&ud-P7RT55aqm6(dGn*7pwJ=?-b0Yq4zvT?+9WlFyogP!Ee?X1iUp-&D~O|W zXF@uNWTLavnY05DhYEG*z=8jO;NU)R;LG66bnx!`e%3zwoO7dTLiYNx*ZQvST6^D} zUf$Wv@4ocZTLW9Vap~&r#_PM+Hm`2%Y`(U&zLKPt*edF+H(uCXdu`+L)Z?wcD|UftA&M5^B2t#{sj|FoOuKHj}|>yzEP zw?DmgdL`+}`s1=?lga-kZ`j(kS1vtmX3xnJ-9W#P?Q^qdrTa?DRR1u4k6vFt=_fT{ zwYpzj2e?-Eo9h7B>i+9G5VpFB)|q}1MJ+Js>q-4i4XmvnRdz|UM~@yQjw9q{A3nzz zbe*{K-_Dw^B46fA5i7TO`)slCJ^uBNwCzIvT% zeZ3-oW;2Sn=Q+WaS>Lf~U!DpZIZ|6!-RtZZ-b8CtjaHF2w+tU)IFg@bVb8kOV`Ao- zC;5-@e~>Fi(81%8$H-;7qm62Rro; zv&CC9^^m6%Q+bX&H$7%gn1PlT>@m)arA-|2=nScjHjnO8m%F^gdaTX^FELNx$FjN~ zBjzzx+{godsVWRw|}Yli1y>Wk`tZ6DrT5hbTJR>w%($N6YX7Ib*nda zaD!9xu5&XkZzu<{aNM8OOmjEjQ|BGQN00*_5rgiy5?hNQDd!X~&Z4=!i!qmfu!nfw zlM(X^hT6ZuzBzo$KIiofyo`Ncl<6_LD0^=tgE_?fkM8GirZZuV zn6MK+wbtGfW-!H?Le0N7`+Js8)eMLE)c*F25kJiAQD=WUv#IR#IkO48I0wk;vpAS& zR>EgR&>f<0YNTFda$p}=i*e4TXGNcjx=&jSbEk2TO& z;nB=nMm(+ewSEA;1;wC)$-f}{i^uHA)c*7@_WsoVys?9a_&qyR z&O^tCtoV+PxvOQJg>XL6Q3D(-YWC;_bqqaD%i~ZuhaH?tvg8O8-e6o5#xB>yOgk7B{{~||Wp6RU z5&QMo-ie<~)u8v2dT|b3n;QDI-PFK-YKXm{?q%PzJ)(!mE0UM%x+5>}Q0x3WFn{!h zUc%do)*)`Vf5{^piW%-Ya>(vDVve3|3ul;_Rgcl)L|*OSBo8r!q1J~y_7i8xoh3S9Ilu@gG0C#og;#_I__Q5SOP z?*#dc<+omeGsu7XUf$ig72?>Mn7MMy+A~$R*Q^Kj?+P5NmMIrL>NhU!WlVi&J}NNW}Eq?X3o7H9hG$V=?OY~&`G{8 z{eFziOc0klB<>BkKNDY}*YVC&KNOQY_N4HJyC=wg$NIbymvgVr7{^R}bP*$;wd9&p z9Q?=~&t>cZ`RM_iv*suEAlisWzY5#y^lPlQ!=7VIgb`nSz}Ty0as@eX7H2HJvG4~k zGBe4!ig>}t{_uHhqSNd29C2p!H-p}^0e}5gZsfYY`+6%n|EUeM_quSBBjn9p_fT^* zc0E`UTa@2KwH-)*Q1i)N^L@ORR^-RuQzji4dH0~}x$dFIf_rr2Fy-aV8vVdx&etFA zOFbr?e1t#Df&S~JWUcrk-gu_|h_8L_?;t0N5#+ERd7^i(1x^ccnCAtf@as9vd)lhW HM3(;pT64wR literal 5140 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 B{jdN4 diff --git a/bgfx/shaders/dx9/chains/xbr/fs_xbr-lv2-fast.bin b/bgfx/shaders/dx9/chains/xbr/fs_xbr-lv2-fast.bin index 3f04275f5ba75c48ba7918e64217ab95fd97cac8..5eb4c7d62c1c08bbc13975813762293675b6485f 100644 GIT binary patch literal 2519 zcmZuyJ#Qmb6g~4{d+a!NVk6NYCFLR^lwAsxf=xEY!I4a&jRPc=wb}#`X;D_2MM6~L z4k=p%g#tt~bZAo{8l)|fj)sDY4he}Vm;C_YJW*aiEa2m^(vAKS3zHUEazN`Dem3{9e`!2Whm)@)X9{wK34{&uq zWPYBssr@hxr~ElT);#SWskX6x&XN9;{5Ip6nLALq$>H%9@MX@`Jwj4RkY;rjbs zAQX;h&wG`WktMR>Oqnws`*4EFX+#0niu0Pcu-W;>nd{v8L0?Q-L-*AI?7R%%Mg&U?TWBo|vQ{-sm zwFt{b^=e-}(p|*lSi0Vb*Fkv% z#+4m>9})YGaZDc>&-ROCo_STL@@QSfX(Amh1mrXNriuL9sKqV7Vzp7?`UBHD&wk0T zjc11QSsAAp2=n~gT+}n=a_3+7?94EKv8YY=A+`GW-Qt-6`;$JQubm6oh*K=`CyMRt zY&O)DS#8SaYJ0|hxqO8t-h;%=XMuX1pTl;(I4^gW^c|>7X;!XWqj<|T!#ZRq&D1ll zL%B5v)v2BfyFR)ZIE+BrKn*#S>2R$-?cU|#7c?4$*(UwW0-^~ipoMzV4JtthtPso$d$-G7HY#z+l2f8lHd XYO)?hPM`9+-w|+R5oZjiQU^wp}Rb&c)0^(1i<^E_C;nqxcsX&$-`w$%{-^!z-F_+VCn8+B6kRps8d6O;rh<{f0Mf0y$GAkW)5+oEn8IciOjm z8*jeU>)cvdU0v_2uWW8NJfD`bEL)w{#!ABj^_ui<@2!>f*Vah!2zlLxH^bk;?%ut- z2a86le$accchWoF|8Q@y;RUqbtRNT;{~dmd&UUN)9DvV!ei57Hk92$vd`j$XM)09N zfp_?I#1k2&mdDt~hN=58_K9H{gu~7#d~KL!;;@*)cZO*^4*P+^Pljny4*P||?}lk; z4*P?`6T>t=hy5dgb^FjL9Trl5#xM;LxJp@{R}9l2$5`7iO>&IgGE7r-@wTb&@&wd* zr8uCh&qv17e8;}6LtJ`fdg%;}h^WaaK1xrsb%NF@+GJi{5|eFYZ=Zk|sAHLjK6uv1{7oAX?Y0vqJbojci! zJk(R!kNlAwL_sRk_Z+2q+_vkklm9pMB<3Ca?1DOC#taxoax{Y^E*m#wo`hHu$(OMy zKQUitFEQVwJ(#e2PqDk)&R_LT`g{0m6hA;XVGo(#&&3Z=io%?Kf%ag+--`-4`;_^Q z^9S&wsnqVXzas6xW5sOo{97_|NGC3v2$v72@laTY!;#8?u z{uifaaV9x6a;mvF%CES>G=IhMbN%V=WYhhqwrSddrM~V^_0LeB#*)>g9>mFF&M;S| z^S&*Qbom5GEQWOLgxdl1Go3L9%sB{|L-rc=I^$<`Xhvn)Ybi(iG-Yv!TW#u}an3X| z)uwt?|4a_c>Ji2o2ij3_ra4!}i=>w@Z?#JopU;xbgLy{vvaWuXSN+$?RbI_jF;t&q z&0o4|bGozFp=T+HIfwHrd}gF8hPZr2DMS2N^N?PoT*nS`B-}6fKKB&B$nIlE+jaKs zYL<^=*7%KL)=^_G;@phoKZgo)Tv)6*6ethV-1Fu)haXK(=WdwhDZPTkW~}}-pYd)k znGSN?&L@%T=Q~4qEI;;ZcPx%D>Sx3UiY*>zqMDiSB39kXr&(|(t=BZa%|blI7v_5V z)pkKO36q`sV*QtSr*moSEN*JI-O+Q(8ISr>J+6;LxYbi-T=7(+_E&MlQGI+TSbfs@ z{;>MQQ7x|5q4`MH-Kk!k>@J<|xbovW#Oe-Mw`}=XlDV5^N6wzrliIB><<>JKESssG zFZG~(R8N|F#*r=`^(>C&;GxK8Xoq!JU55FFU8q;X-TjHDJ<`26-_UqaKZZ9LuRsid zarCYcCLXwt${~MY$^qt8Z5dCsfH_o~xNg2har)x8`4$y>qywJf3;+xqU;2gg)L(xy mc4SNK(q&iA2vYyP__h}%)u4a(T%UY5@=8mbFXG{lmj3_-BMaC7 diff --git a/bgfx/shaders/dx9/chains/xbr/fs_xbr-lv2-noblend.bin b/bgfx/shaders/dx9/chains/xbr/fs_xbr-lv2-noblend.bin index 9cbbdd173c73376f6ba828c2183b4df4aba0acb4..a66673f03f59dfb06407ab4cb3771ae2908c6fd8 100644 GIT binary patch literal 2596 zcmZuyJ#QRU6g@LLGoJN2S>zNHMv6;lkOM_<0XBAQIg;5Z{y>Q+R#9RLOGb|3AR($* zQLYOkHRCSv)ZS5_n!N4?!E8LtZ#2b#~;jn z7U7KtD_g_0`@@}$t+nlqdz*J=10cW+sW(4;Z@7AIZGHXj>fN=$&TJ46iJ$B}ess8C zR=qEW&-cC>9v^(Yw=f%oL|=8$Da(J$C9Ljzyz&-+U%8}<_>hcmfmeJSa)n$Bgp5nS zQ!Yhm>wciF!xa$ukx%`8<_gWS@x5FJE-o$tdIpFrp8Wo&C|Ef(jxa+zms_^2((v?n z`2KJKpBy}Xc65BS|9t-Kt#{@(Hn%tDw?BXMWbfJh>d_ZZ4-UDxweapOT-*oZ4*EI6 zyx>{_UUC7_N7VoJ)5DJ*zIl7;yWh_~WChF8$Ikwxv&S-@FQiXQpV2>4Ed5MB<@8>+ zO#RYLwk5WfbWYtq$O81MeVB#yzLSw(rH?Xls`hb49@Rd{n7i6fWz1)L<~c>$&sS_L zecJy+xyVzKqYNk*uP~gs=~uMykbEZb0DrY`@twqz2|T@mhxohp=h>OSStILg;)h5n zH}P3Fxwicyaj*Ha7qoBcrGhiWjvmUpVoN8?@TesvF0y%+~5OZXI4+e-*E9){!Xi3 z0sGm`pArvS{8NNk+T!0eyqQNz{@qJ>)Z(8q{#Cr`Ps;vzT>KS3K*^koBff9=?-M^8 zM<{chOVuzm3{_zZbH{1w*eNVZ_jz8vnJe~(_cpF)dTiP zITFmBBsk9#Aon)(r>+?DonpLujH$fB#gj5)B3F!xS0ps_O_T0xP%tk)V z`8v-P*K_G&Fu_H0<($U=zL!lUGmqn|*y5uZ_b{k)Ik~81^+$PR@AwXkiK(!Fd(M0(*Ev(w?d~md$|uy1y|3cP zPqj!V-|DWIPQ1L%&#B^JcA6`A26YY;$HkqJFW+MYc{p7F>2^)l`(1Xi>7aR$x6^e@ zSDGw;*+tX=P;cuTiRpGt*Uka#^1U>f7dYoV)T~`RRPo$hZR^UB>QG*NYun#CCx=$2 qzP;*8hz{#1IVF&kifv)Z$Wa_5L^UhQ z-D1&FP)#v@X6zoHPdy!7(PGza(H(9)#2K* zM;lDr2=e^jypR6F_qSdJ@H>}uAs>?Q4e%=;CtN-k10m(oZ_4HKpLE}Heb4nHSHR^_ z{}Z43U2@5)>H9y#i3ePv*~xDo7Z+D`zx=TO-u^3ZZ+!RL>|NPdd9(|$L_e29`bMdE zdNzD(xP}jppFBG~J3V^7`r3onSMTlY?yT;9_W0oN*=qmv^QXrr+}v4v;|?x92BHAH zjA34IZ2&L1(oN|@r+?}6*yQtt^pWXP*~v#g)5lI<>Nct0xXpG%*2ZA!_Fn3tSM2@N zul7Mo9)&(knY-9WDf1QkIAxAv-%4A>o_VH7dfAqZqeuIHD9^LD$zcl2nP+Y|bJK6$ zzu{b~9><>Q9kE{4jDY>(bG?!ad>mswR=~WosJtqG;U(9^$U)4|Hw6E%o zS?^UmT8N)ic+GF7801*-mprcV0kN6YQ}8!j{FOgw^vh#EoB0#seuIAkKTR6^+lJTk zNXWl^1rHni6UM)e*ZoP@zY-UJ#rKdi=lY2E4FC6t&&C1rOy^QHbf}9OHFTJx)8No0 z-ohVMk2}oKy@GoS{{A&QUhwxSTpSf&J?YpvaeSQYX0k-QjiYfJmo^jGGyizWI5>Oq z9gCA{)R~I0ZZ*0(oDHxpeRIwuch<^t`twM=dc+vY5o2W%;XLF0k%?y!ccQaFo$>B6 zrt1X)@uWPGy<(`Z$}gT}4B2#W#C2(TWTSa0k8I_qnYA&fa@V~P7-;qsMz8>A(F)y#L*&PvIjnDLNbnS)=t42Y(;0Kb@pVXppM_eG{T++e&e zbbm(K5>{+B&ZgAWF%3*H4Dn* z;`*$(veA33cSG_`ljoFYCiB}sd|BOtlm2)b1n4M+<+-5$z6AMl)p51faOLM#X71x7wdnW6? zmM$_Km}jn;nJzG$&CvX17gEQ1M#a5mcCqR9OsDTtnFHA4J+qh>IOlt%-a9)K@!Y%D z)a4`9A>Ik=YJR(%?3Z=gjC};U+c+!L4)!6@bK+yq`in%obMsMt{!PTsT|yqn@|+d@ E2lrqE0ssI2 diff --git a/bgfx/shaders/dx9/chains/xbr/fs_xbr-lv2.bin b/bgfx/shaders/dx9/chains/xbr/fs_xbr-lv2.bin index 8274e8aa4d8acdf3580032c343fc81a2e9ca8f8b..f2dbf48200af16dfcf637c1e159ac318cbb492f7 100644 GIT binary patch literal 3235 zcmZuzJ#SlO6h8OE_O;{Mj$MfXq-J0!3rgwGW}rzE91_2-Rs`z?XGQichiWuhcXPMx1<+Kf*;%>0 z(QSJIxlVbn_d$34-8GnafJ*xZ5AHvlSM|)Ny(b5s^^OleKbUWOA+)d8B}mi%(k)rp zy}kUJh%{kItc(xJ@})=w>?<67{8RlMas2&+#}^VQu%8tpnF9M&F|sMJKX4B4c!=;E zpZxn5k1ym^*qv{QoSd9^n$zs)_mci7rk&A~>xpPL7$cNA@)#$^m}reWI__QX&C7d- z4;~*KAAR&>?&|g%b88zr8*@7!-`_uYJhyW6$)m%EI9!{5^O~I85h<0Vnf&tO-mSe? zZY+NN+vshPc!_u!xX9TlQt(*>zDT^HxGWhaXZSoN9w{DYwh{vu;#I|e2fl~Vc^a|QrQaKpf*^51CW@kV4^K%df`8kZk{9KArXJ%iHQCoJd z#HdHl$TO6vnJnvgo4}t#9w(To?@0yz;{+T6o;?}kkt9-E4?HQ4WBP&%&M(y0^yD|K zFUxpBA70RxvfSn$UC{gTSMDFkbbQo|9vFA}2f{uS`Oyc+ll~EF%lV@>@Gtn|EkVCb z?`yqH*4qz&QAYnL4{-jL^6h{;Bu@C6&pE>^s@vGnxqLa)=&Xfl?C9b?f~`^brgN5foE-kC-#&+c^x&( zVdk9Po0vllb2zUrPwAsvPu|SWI*?QAU_P9u>R>#pB~9p4)M2~GTK$O{s^B=;YsSPa zme){y3CD0sUvOMTKKh4K@x9p9NIujD=qdWDHPj)`$Yx#xC=Rd`B|Qfn_}#b)l$3*xV2TsyMnbaCg#z{U7|AXG|oJiTbg4b&q=wZJkx|d3$xvA zp;z2r_JDD@2QAb~tdPelyB>M6@RYmGIJ9AIV&FF5J!iG({>7BtZn+%fg7>=5eWE|# zd%kl{o`u|$>w~6zL;jh5JeZxZM=b;14XlIy4H+SKnh>K;He2mGZ78GXYQsC1wQx?& zbG5LqyrU-LkgM}yEu0KH$iQi89yVFxQj6On8ml8EobM{%S=2?pjyzM@<~UZ2{iTd|Nq5Ed)8401{$Ard z7kkUQXw>JN><*R$*i-lph?$Kfj0Jq)Vsl>@m$PubR@*c5Ypi?V?rhvGT3Z#IJDSgW z=k$E<8J99_l{4cLD>z!N8T5#D%|tVaGexr;pHWtcC-zQ^9N zCc`{w087DR2z;o%q1tgj$ZyPD2}{7RbLz``ju`C(@fge5F^3>8c{sa3u@rg!R$F_Y zE41m;hBALkftSkew+`Q%><7i*lC8_%W~j#u1DxLcb(QQ&{~EWHptZ literal 3342 zcmZuzzi%8>5T3VtKljeQ(*=nFB)bd^a&SRhkn`Qy#+J-Q#5TkN=@P|8STeE|2gybh zdqP4;X9=TgK%&^Rb^#J}6iGorK|x6Y-4zre;xFL%zIpq0_iU^@XXcw<-^`oc^~%O- z?&#)A@72X?9W+c%420u`DXMVNFad=&OnDVxDyaZdg+gbqVWw1oPeBFvlvRLF6~eW< z?K{2ocV6ptZZEH_taa9wyPFN;!BVDWqtjYnZWw`HrM}&JcX{p2Rk#>HX1igg@qd12 z_rd-BId!Xi+~qC92#cLU_*OB_#9|SI?-k>CEcPRWpB3YzEcOe8 z-xcG~EcOS4XNqxt7W;<+czeQ8S}X_s1;sc-k?WB8b5k)6GR4}8agr%^TQN@6=G%n6 zgX2TTmC8P3{(P!_oNpT2I*%M z4`rKu{Px54t?d_IZ+`vf@D1b>T}K#ldM|dq#51cYhey5n-kiL(_u%2d(ZL6gX0P9Q zWp;IaV|{kx!}~kC4`(|EA06)PL%1>b>J7PgTO?nTS_ICE%;kQF*DcN-7h}9RgSE)R z88>%kWfK~y#j+QAiR_1dBIm+fBIm<=A{W9!A{WDAETh($lxk61*P{mi=g>zHcEUr~ zs3#FP_^3-coR(2kR$l{NBVePDvEYK7BaO9o@|(09d6u!~uGk9`_R*-a)y7P_Vhl=;2&JF=Q8}u$bZ$I-Ur^8iJkmy{xNH6 ze--6Rd5n7&{HxJ_P!ox`r|hW;ET8GAikj67rzzNr@>eo*yphAHOLj96?_IGMCgO96 zot*g$aYm@AoXN-PL)BS7koiF%-{>9D4&MPexOhBo19E1M%vY45_Q>auKHR(bxzwET zz4mFp8^=^+;j}L25x$)fV>mlv735Bz^`Y)6W9%;5-DMnO$PKmoE(f_+WeMjwX3Sn^ zG@jgc+X9K1y_VkMy^5>+0;C9!Qt7O#I!h z(H;ojpCj(c*)-3u+gZ7t zC1!j7HF6w@QO42vRIxkw&M3xt*>8{4S(`d~&_1)f#2Hg3p9z8AloT$6!%IWSIVGi;q z7w$d38`Np%-O+C6Pz1h(8Y6JCm?y-}*_Yz<^A+PxjT9%AQ%p3Dcmr4-81`6w_^u~L zKS4g$aDJ>Is7oHs&nPwy$&bFAhX8|5pFY$X2VRLTVwh)un)<%8`Z@JDo_|AZ(H7gO i)6SlmU*r4qXHQZhFaEhd3hlRFaD650gGA#oEdK%K^?8T@ diff --git a/bgfx/shaders/dx9/chains/xbr/fs_xbr-lv3-noblend.bin b/bgfx/shaders/dx9/chains/xbr/fs_xbr-lv3-noblend.bin index 6a3de661a082ed7047d72c321f75f2ca4e8a8204..259a40612a3764a4f161a7a24294ddbb984dff77 100644 GIT binary patch literal 3632 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 diff --git a/bgfx/shaders/dx9/chains/xbr/fs_xbr-lv3.bin b/bgfx/shaders/dx9/chains/xbr/fs_xbr-lv3.bin index a6c9393e207c93a77dcf6ff56cd47120166cd43a..6bbad16b288eb7bada28c233fb2a4dcd2515e87e 100644 GIT binary patch literal 4011 zcmZvfJ8WE45QgXOuI+urk4+SWK(Y&jpg~UD;DXrLad0H#C~*vlD6A-nMWmoaagZXa zbwyzpMy7EZHi!b*6{4X*c8#2pmTC*$6%8O|`M){$+`GHM(v{Er^ZIAboO|wGSXnG> zy!p}xgEo3??#kN2<+ZDeR~A+lFD;#KB#9+9)(@X;Bn9Co!I$1UyEcDm;lhQB^A{JE zuQrmRG<7uB*WO>a_|Bpr6Etw^_RSl2Cw*P}cklVhyYl+P;?l~}#L9;^Zry$`F@Nu)`*-eYac1(3Gj?#6srN{qhzu!3TwFIjd(z&yk)(@FC$(kGBtxkB`4!UtgE5ISXD6_OhFuO{^un zH3MD|{&?@jLu{WOAD>ekk6(5BCjN(D_+Vf2_{WFXPECC~Lmu$D@J{CokBjXyt-((S zpPJe|T3>(l=<(k5S$x2UJ^sr}KbUoBmUwo}RJ60ZP&H1>D2>)GjyTzy^HYERcOB{-<6Kji$waRW= z*1GK&zT%?wpY9v zgXC`igxWIx>W%z!{zWUOUqN3`JoQWU?rs)sTD+{N`BAUhTk6vj>et*TULL<9ewD8H znjhK!obj)SU$sx4^!O*w=?8oK3z;51#4jpd#g;dttoY9FnvOnt@>R8eRoicYQA63W zX>srP3}~LU&ihbPA8K7ZHP_Ug)lpNO^*(*lwGTDb*{>h$(I=T6-o&SlnoWBhIxpyZ z>Nw$?+s+xEypDErF6~93tA?s-=sd9+^LS%U+@%)tb2MB{t*{ zk8EbiA-(fJPmZGPis!EPddy?wJdwu~uX|>QAr6kmJSjKF=M*>8lAi^={ar_Y$xB@A z$EMDX%X+7==b7B_ywh2~kQ>fpzXg|4I=c;VXMX7cahZdL`VN-MZI@$@5}V#;{)vMP zxxvJ3i}zfpW!GaOmu9kLC!rqlEi*eVhx~1qV~=zew(*H^ z=&NSSvDn)%moR~2NXA>D8>O#+aa26`MQ}mAYGsydwwfgFM z-rKroC5L;*QklC2|5Rr7o*;7%Y1T3sf5ppW;xkLw)9W;!zdK_8<6VKwyC2@z!I?RZ z`%CY1*Jicn{R}=)?(PLMf*-k4?jASh2BS7)zAwm4P52&Mhz}!~F6+JQGuAaHRB0X~5 zzH)u+b;WjEUz48xmhD&PNxy=e_cZ!+?*nW40SA1TCouMf{zWqh!jUk~}(d>)5v7)*1sqndXdD>}BSx!ZA^xh*)hulzfX zgC&l2+z%X#Z&I_>P4beT-1?2D-21-fUMy=)bK8BrJDKrtKKQ0K+teG90(K hLxY^iKghu!xwA=J&sz>T;`caxurlAjrr$`i`VV{}OoIRb literal 4394 zcma)Wzlp1--icw_z6(#^%yrR&RA&W|UFB{l)R{NDNXh3kt~uU=cYwzzU@JSj<2NAtn@ z`-|7!SrTM|DjS=3?`+M)_12?1<4HyM$m8`#n@`ra?|rd3GoF-%ls|v`*?5v__3fyY zd%b^pAKAjKx93lr*{b}(s`^5D%nr$DNSPWy8D*`;q5r!W8fhCR&4)s`+A5! z7a-SNKBH}`$WS}F6V^#Pu~xn=wM+eVxn1tB({|clSK5{SdZ?|QbKh!PefnDYcC6OQ zeCw?x`@^iHgvz75hwW3jtX#;QD5FoLF9{n`otg;ArW~wGTCe5nRO`KbUDLX!93g($ zDw!zRnUGJ6hfejo-LP_}8ejF`@rG?n@(=3I(qOaJ9=2Iw)L~_6q#pI)IZAd$yr4UD zA93XCnpsw}wTxW3kK;udzj^8LsoL-2=rDsLJw@Wd+?TrKqu7VpDYvb8KJw!$zE$@h z?i=)pc%Zg{UUETSI-#%Rxr2XtLSM3%egCQ*)oW%|PpBRLs@2-HLVnGzYA^aH?03ID z&9M9j^;fMVzJngVHOtcPcB(e({c48gJBU|TJ@rDohV)hYwO?;t^)!y@lOz7g3H{I! z|59I1Jt6*~a;|i4YetZXKVp`R*j@(K6gDEPp_;+irasAK{ebU!ccOG9kXZv;IA8OyrVsFSzeW;l}N`;!6su^9JtufaR_P(i_ z$ByaKLQPH8d{RHy`=%v*J@pX3YAebaY95z7COLAA&4k-9ABSzY$7Vw7aed$(8+uo- zUEy71W=i|hrT?f`9-py7Oy%8mt|nzaQOHXkF#IPAdB{y(uzBUdrd*gco@;dQN1iF^ z#i!mS<}%N^`f!;X(~_t18KP(2NzB`{?fSlvi#P#Wacm%my^WkyZ1yR95C@y^UYUKW zTDrWGLhZX=KXOCwHD)2^K+nvx|M-X6E_A2tnRA-=-kmP!>*6okM{cC=(g*UW?RKly z%VLgvUwp5yL7tL5Hat)C!d{A#BfaE)9pYdU;yTV372DB&8Ej?U%}v2 zGvgR>=sV2htj`9r&N%kWXEgRDJR_EH?-d&`$xnrMi5>mOMV&DpJ&+5Gx~Y@1rI^32 znb5nVLw?>XtTn4%AJ44L70I(MbG9J!j>JBfyE@#wBrwz`$xc~TtvwbTgFJ~)fYV3nP!(AZg^E@5+;k+NUM7H7VAN6-4;)~_eObRm^}Xh6{ifyHpVyK#$)Wq?j_#a0j+tY; zJ9ZrBxlSG1Q{6j`gH;^sxgR(fckQyRiOWH5IODemb#T7(9Ait3W!uy5mP7Rw-XA=F zV4VLE3wFIu;Dhs)+*R)(vA_JjKs-1gH-7Xzz|8lLn($5JYwFo@U*^DsDQAbf2XaZW z^7Uo-(_VMw=Vy74_mJIQt?7FWU9Lw)zn1IWUv&iDtrlvaPx^uztJT`tyR6rf)xZCl BZu|fM diff --git a/bgfx/shaders/dx9/chains/xbr/vs_xbr-lv2-3d.bin b/bgfx/shaders/dx9/chains/xbr/vs_xbr-lv2-3d.bin index 2f3ac8db667f12c0407f836b5e40fe6564d25882..5bccc4d8c98c0aa2562a0d1c9b41756dcbcd3d04 100644 GIT binary patch delta 332 zcmX|*F>b;@6hz0nYhx=B93TY^4K)poMVd(IV^E~D+<=aTFHT_OhSDfqEgGMSGQX}eVo#TIh#}7jO7Y{WX0#Znn%UU6fiN2I853> zTZw~qk^~*gDCk7ephuEb`zSv+=1?c(0V(ym=HCL30(9h~=5>}i;6`p&8$6fl>F&Xs z1y4HwU!2=|Z(v!n)YB}ic2ljx&6lmyuGF145S@0e>SCkP;M+3}j M1KS#OW#0q11NQ7f4gdfE delta 104 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

C28d;&6o7HU zv)nwa=Tx{Sy)KQ;vKeZe+P+*J+x6g$Y?Vh?M$2KDF6_zJ8h65r&0!qRON}oecrTgo zQCFr09j>OrjM9Q%ic3>3saCe13_O&|u%+Z7P|sas-Z|UM3TJz$)|acHSQW*Aai9Zn zdl+8mOCW2DRFLHe`>F|7wLk9v;bS!8!*EGIdgQ>2|Hv`DTLOuG>en;yjT+lEDsbN@ z>yF*QNw}^HuM9iy*dbrDLpW@ha91^8&p1gDUA_zF3k(tPH9LUcg&Cm^bH+667Mq$GdQXEJrMoV>qR}>t`5G}_w%F(M(tM2+Uo*wmO!GCVql-mL XtD}|Vm%0tuDt=PDQ5HU|9J2ocT*1b zir`M69Q+C0DJp{tK`V8w=+dH;xTst82ME5IG|3R{Tg^M?-E;3bcfJ=NjMLdl*;gA+ zUiW##YZvCKGgqtg<++(k`SPV{FY$QDhJS)=zPy+q0XJn$leb>HkQh*{U~Gn>t1R|DfJzw(JM0MzeZWqf9`x=fJ(u9im`6969V1 zG6`&nX+TKJjvxcHjwbt}=0Z)uCoY~evTB!BRc2XPTUso1hQob7#h1`%gmq&~pRfgR zGN_;(8a~HJr*J>moUt#L={7sqBgNBD0!O%%tkJ=J>J4`AA^3`!S{IXeFG%>q3-&x- z*8Pom6b}U%JDf1YEMQN_VJeitm7uH-X6i)NbFjQrtIgjuZ_$oPiXwL`uj=oCOMc=1m~rxK(9=1sMwZL zcp+`^eXxo3$WPb3g?2oOkI?|m%DnYFsuLGk$FJB|*S*DxCH$7Zxv-|yj&BldBvP(_ LH-E-@mMD$}~ zOgJ2^m@ofT-Urq1MW9ywkMNT7iP zG=UK=COUb7u#>O`%sIw-6$*9=26_gXlkW=O=0b>1J}4nN`Mk(uWTjP5rJMJPMlp&Y z)asQ(B{U}oh|5g27vG003Dc!H*-Aogvbw|tbX%MyMJGo{@NPDcEN2veI?UJ%7)-!; RF`n$mBF?C}`Mi_~BLE25@0$Ps diff --git a/bgfx/shaders/essl/chains/xbr/fs_xbr-lv2.bin b/bgfx/shaders/essl/chains/xbr/fs_xbr-lv2.bin index c5dcd1032440153cccf4cd04fafcf2fcd25e7ae0..b5ab071e8665a1d6def63ef0752b61e340be4395 100644 GIT binary patch literal 7246 zcmcgxTW=dh6m}6H5qLo2u`lzuCdtM#v%aYU2~vkdil}HRE~=2VBu;9{j*IOiwyXR^ z{uAe%x$K#}wiN;)$KIK9{l0Vd%=F~q^wZVg>Fdv1U;O^#%kjnW59gy#p0rv|T3_Ms zKgPd}&VD+5WgdNvk4C?YU!A@jU7Wr+e{LRsgOAUDRpa9qqmz@fRR=^ybZ5aX-0K;vQu#7mMXp=h>xT8DVZGb1-fLLzKij*zon9}N^DO>EcpNHM9V(R@I7XG5a)_1gWB6t3t91T$ zHd(6Yg203z7t<>-Pp7vcYVW<<6Fi#r{4HQO2B?H^-^F(#l5yuK@}b5X_^;i@O`Zvf z+Yc~$S%tDdlO*cI-2(wy4ut#G7Drj~jK)BratZ-=uTX=+>t%Ymjv_`p@vUH?$D6J3 zZMJwIl6u#GAzo7gnt-|MyX6E@6H#ss7+Y1meV_;nT7XAhOSeIbjyDxrfNfq&uTe{t zFThE!rQfJ!SK-TmX&E$VNnBov$PbyCA*dn3IQA350F-5elB$PX=*zCczn#7^e;IW1 zbnT&&&|Q3_vh%w0C;DmF%3*~i$(A@)u%y@$4;q#<)YwKA4%nT(0JMka9#&16g}YGtaJBzdt)tk$v|sfrv0Kqdjk zyj)}wV4Pdx80VHa#^fyR>Q&?@D7!&(j=K4H2hBNxyoT`(nsX#wysi!g%{hX+R&-R! zd!eLeX!Y`5F(}WG;=N9}URR5ieLq+mAY+y$2kEqjlDv;-k;fN>=lqBW2e9) z#rvtM=%>o`)8flU@rJ5s&@ht*4H<{*6TY^y2Cd_5TkPAZgm$s5C>HFsQ%=!$-scqc zIeM|(F4m*J@6wqs2?=A5W0Z^^Hrrhr4ZP3h9qewi*CEO{U5d9#g|kc)Meu?YB1->S zMXn%aR~$MKsloETs9uIbBZH`BUy!n3vnKa5g-W*Du*)em)?KW{&G8oWlK|yEi93)7 zG!P16f7@&`E7E2SEmb9hH*G~tyEGXks>vr8fzMiD;}A@vn`LP+{xOI9HEAhqmdzOn zFf!FL9|&~^9Ga&a5z&WHd^v+#9-INlQ?dnFvMt{_OvmxuHIh4(yLZ9>ymjAg zf$`oz+G}SVmssOM*xZYPrdfECGLWWsl5?g9j=?Pf-60V_t!f{*Z(k+_xuMR;L6@`o zf+>)0q!cPYq_2nY9i#SpVG1Hhuo04k!AWrZNJO9{)1k0Dxc~682DxHW zba@znT*(D)9!E2S;Bb~T_V)nK#o34(gUrhOZ)g!v9w&oY6I$_h^RV-fSq+Fcp$E#! zATvUF+~9Yy?i@OFrBz2#w^2dww%?`qOX3}=iOf=|%rBU_8>mD;=ZfDME)0EcLFcpr zaftK90&@~U45mJOO_T*<7dx?{)$p?ffMTFw^Vcqenja)J9wg^eY>)V1oy8lF9U#XZ z4a_6E0j~^TgNtn#Zy+D`m+sInE)2J3Y&+bQuwQBz?*ifQ{F}MWPp}$Ku}unBwn*1L9sKO8@$7rGScm6MN_Y0U)ztogmKy&d!Tvh{ zd}DZq7WnB_CN$C QwpfBXw+NOV_x4)<0-zRSGynhq literal 6336 zcmb_gTW=dx5OxuL!0^Tk5-;a*mn54#XMI%#5`=_Csz9Pu0Y%7Kl1*aCj)U#Qm#Y7r znK_r8vsYK5s+?WVede1vbA0jk_2;Y6w^uJaU;O#g?~}J@KfXEt>_w;ZqVpBL|26sJ z{PLIA@AOw+<5zFqtI64K=NA{3XP4){8p@YXlXbS8tfu=c*1Ruovg>pPdf@;2Z#tdl zbh(>8+==_?-Tk9@&aRbsMw#oyVtEt4>Xzs|Mwcyg)k05N=)D$tzlA<%p$}hmpB|>S zi{(6zzb9P6YpFKUC$q( zJQJvb5cXMoF9I3Gr-6$i+QPpuL?&0{p5=!MIa!6WfPh{QNBv^~T8@Q%3dL!j7p>7# zsH{RLsZ*GM!rNtfy$%9~De;|Pp-0=D_HDM<5dNHNP<*GU2buts>!)P~sR<}I#|(%n z+HEMpk`{o7)6#Fzl0@4YEdV5^Wzedn&KH22(=u$;vaj)F#I%fBwDi2Z%+s~Y?wDyA zU&Vi;A`K^=_wkiv6rRiRm0}d`)A%Z36pFc26$z823XamlvIM6H$F|=Hcz_=RQYF;@ zAv%#_y&usuvj4V#Hxn0x@q(IH`)A#Kf%4hnPcRc3TZm?b-{JquxKJ7vi8 zsV&DG@}m;uD-L^_x+Y>pV^N>?bkv`)Pk0P-g-Nsv#gW+!h>NkJn8#~&jgs?<&vr$# zo#yz%VtxMaQ##Ar7nToOmN?pMcl!_x9KyT@?yzQ`P<*Z{T6Tf}P9Y(J^q*DWhDTqV zIP(cuJ`(k0XcjVvYK{ac^OzHIpD7%NA#hox+PaOk%pC1NKM7F&dr=H|Km)#DOl~kM zCTnP^E*X6KE1Le5$*53GKG_Id)*PezW|#v=O7H{Ys7#Xf7TkBDgMugqV(L(g9O1zu zZ_k!jUk$IOMDc@8;U216W|pm1@9xtFAG)}I*#1K7xMf4JWdniixcDKa@DRJ6!4*IR zrWyo#Ys)35U-3ELq>Pt!-tzMb~&#iLf z^P^Vb`s_tzGFXN+FBC)caYYCCtkjfEHRXq*!cBahZbd*JCUG|ZqS9AdN(*;9yPLW= zpeU|j(qTMrcIzebg`tkhb%1Lp$8S3bON|AGf4WeO^D{9M3WO->W#*Xb?_evf1hp%) zT@I{1z8nS)Gb4=AtaiLZkB}V`lEc2P0z}Bn9e6&`jaA{@^@JWz;F(1McRXzpXOV4H zM0TN7v@qN$po>pM07_UUuv|dWm`9);+lDLP=5Cp#>ukveg?BvEp#t?){HD_eF+^0} z*)q{3q(i_weiC$=PF;wdBa;BhvaCJO(@mMYMI6@J+MkANYpIH+jYuuv)i6YaK} zy+e)BfRLks3CgNaqlJplfpNu*%wWjESH z-#kpd6SxWH*n&5@Yve?hPv0?G=gW@q#Wumkw#l)P@0h+6SliI~%rSEb%8A-BcgxCC zLmT7t77j1V9E%^^&ufVS^nalCvSi#UVfZEZ!>#$<6`m+%A4N7>Wp(^?2H6kIU%7!L ye9KJw(FP2H1zr;Z3w+H1q(*sHjNN0>BTIL)$;C3gJ6p^aOOUg%fTfS!Zs$K*?p!kf diff --git a/bgfx/shaders/essl/chains/xbr/fs_xbr-lv3-noblend.bin b/bgfx/shaders/essl/chains/xbr/fs_xbr-lv3-noblend.bin index 8ef2d000e2b3358d7f3baa765608f9a92c8ec3b1..be749d0b162b0c994952a52c1ce3a4f0f38cd788 100644 GIT binary patch literal 9926 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 delta 1844 zcmaJ>O>Em_7$$AX8Yfxn{5ff2`*ZAMan+ePcG8xzu4rt63Xmo^00X8ljZu`WUArw! zVcG!>2x$`4!w#rtE|a#YRN{bCs!jsL4u}f}sNleD2QG+Ba6sa<^V_r~QtZ#~^SwXc z^Stl(?F+v@<2&`zv)-kNatH^N;#f6mTv zjDEPqsXVQ8a@=K=yeqZk`o{LqqrSKcm_~k#?Rx0=DkL2Y?u4F8o~x9r3oMswB+E4q zR&eVNCSJjCM8!vmV8k?vV=V7Hj=E2J=y)+QJJ2ZdbzZ?}Fc_jb$5{ETrA9cnex8r} z&AjgJBN(?M^@B^&qZ!%x=B`BRj~a7fXq2)rLj1^>U2WW088B{$DU_5@miQqxKdQkFD!e#gk*^8gU&n z?j{rA(iE-c-X>XEdf3=Ws^++3??H;jGMgr4^19C6b796>UgMY%qj)MMV4VqgH+48r zV#nGjh7>hcnAj(#jm?yXf0Kj8o@Dhs$vWvKF(V1cig9Ep2E2ZIM0gnkuOh8n5tce^Z z)FBU*Ea~_~^bhw$FA^YNP4!_~3gCen!nmBmaj6y9i>fT3LJ2>UMSA=3yry7~MVbc) z;d5;`TIeRurR>@ihtuhB%(9(B?H0?Z;nyTnt>Ql17L8gLg$T$Rz9Vr)WIx`d|6J-Y zJ|N~IiY&NouqQULlTx$IR_H;AyRP8WO+PXXcaVi2!t5&Wq{pow9UBjm}u657Txd1NKqYze+! z+qyy5R1WvkBiK@9dXp$>78f-~;Zl;&#C?H>bfaoXNk@@hiA~9n9>)8k%;nf`iduTRECDx&~3qNJp&h*cNSY zro26|cA;@!Te$8Ou$nnq+S4btWzaOW=aD{_+cVtCZR4-Z6V%*V*1Y6)Qwwm~=$Lcc zcUM7oL4AeH)wyNXzB)={Ee0&Ry|iuJalBADdup+K;lzApev$mz!Kb)u9QW9ND=q}= diff --git a/bgfx/shaders/essl/chains/xbr/fs_xbr-lv3.bin b/bgfx/shaders/essl/chains/xbr/fs_xbr-lv3.bin index e2d807898a8e1a52ef0eec33e049ac7df068fbad..a9a218e5798978877bba5e04d198acc8748ac936 100644 GIT binary patch delta 1662 zcma)6OH30{6z!A(1rh83ozm9wfQI%#9Xm6W7KjEv#S#P*>X&FUARuwD2uMo_5mqi- zfVn#jZcI$vfwM9(Zrr$JYjmv(jnSQPfxel}lqsLUEM8`A&N=U#JNLbhmp%-#U4t>p zOvE)*WGcIUb|7&haV^??Ar?1NCKF{krj(+W6Yg#2j46m5VzVYINn(2p~vEM^F!P%bV>(@^8w2i7sbPx#S5P- zbahS;HR*VchkmPFzFBCdj&g=_i&BP1MKAKIttz;)cn3Hl_gfjNoHGdUK>}r7J}KEz z=0PlHY|HBBynxVhVKst25JH4x)J}=ersm%M4ih~TWP<_3u|Y*k?sFGXM>Kc~&!%DQ_?NQn?|BT5 zJsz0#Y#KlrSZb&SsrIJwZnT<2CL|Y0i1%BI-_C+!+O03*6NLl^YT(d0cDU& zD{}SnTkmbkrnw1)$o+UHIZHyfH`aOs%8wNMB!?PCT`*SeO(~h0LSs@=oCVbAEYvA( z2bsD(SrG6!c=gJi7(=;}MfN+LyO2YzWOf$RM(cLMFy}i-h2fPi=nX{-7j`JZrifMI iEUyTEeNEo5>Tq02bWMxn=aN!#di&B>L>5a+P5%KXaOMR7 delta 1275 zcmZ`%T}TvB6z;A&u5PZnGdnxG>+X2nU3JHwac0*2BkUo_tSG`2GbF@9Q_!^5+;wF^ zA1Z=^;=D)@gguE7$wUN21U=N7Q4oZ_^w4904?Xl!-Pv{4naG#Jz27d#3|^{%#26I@RL{W>#lUTAqIzz6c7F8gh^)XVn+HYJCCY;w-M9_wi6|^l z9K5Q0;E4Z=ss$TDj-&~GTFpILtwObmWQ0`$qdG+~Vgk%KIQ6@Iz(y-#KAT&>on=u4 z(scX(;Jb7PDe#PzNc=_%q=XRjCMISkNb(lbLE>{J?$rk=m3A03>RA82*%++2+5&rA z&7grRF66UN%Le%UDq_WvAjgJam0>DlMW67AHTKl3mwPHvz30B3Qt-sh8?q)(N)*iV zn6onExPWE_8of4H=3Lqt#h}wuAbVQ(Xbau;Op|!RtHl@IlO$SwlSol7`~Fy9+)u+| zz*#*%cCkA$HI~W1SH=a)PS#yotYF7j=)j{FG7)mZSW8uw9u~Tse)t)np_cbU7tht; zcKsEi2|yK`n&m0PM0R)Ct%x~%7)zogz|F>O`yLK5W?&7oa0h=dmgn{IE6pqvntqrl zK@MIAS=ee};BoMaImN*J&_~yvfT(v8U@gqUR_GwCU?02;ubX(p#bWa>BTqLhz(&vw zn=Li)uDK4@g1oxfA|vQ;rJeCZWG}lT#^SgKgEP{YHi9t%Mszc=IN3sZPvo{Bn67z2 zqfX6aXYu&d%;;RXbplSex}8a5<77$AKNuB?EZs%IB$zY_Ce4CLu_QP#d1+!6lTQ#W z3#Q;rgl7_hfESA|uXj(uPNWN^ph=LzamnB(E{R#9EQ@9kt_f|V{GrfLrIi=#_5*(b DYEz5C diff --git a/bgfx/shaders/essl/chains/xbr/vs_xbr-lv2-3d.bin b/bgfx/shaders/essl/chains/xbr/vs_xbr-lv2-3d.bin index 185547625c49dc5c5072ca49d8e6f02d51c9a2ab..26b10137f159dfac5c692d1d4918c36f47f111fe 100644 GIT binary patch literal 2136 zcmai#UvHZ*6vgRQX%qVbllJ0Ax~(22;h(C$Oq#UEs+Fcmdq6Cusi!242%(T^-+kA{ zU=zT+1+IPl^Eu~+9}nLz57CETuPytSlr(#}%h{jH3(LB&-u(P}pWJ_YcqN|R9g`xf zk^?(1;JJ5o%-RJ@j7Qjg> z#_~sKQKorKcWb?W+4Ub3JygzaZkv;d=55`ZsV`>g%bB`AQx9h9;f;OV(I=K~r8wKP zSR&=(d0BWPJsquS4#UxmKB8?(cgVT2|Jq15pxEv~`2+++sQrykFX)#0?>R1ZKO=(O zt6sgTp{~5gRn5!mO>!sG0A)wfqmNx{(MR)D^l4p!h-hqHy9vze*gW1@UL02y`T`=s z_9n}~A^JD@ecG_JXnTOcU5^FykXQ9^rOxba0LQxxOMQd5sx~3A6C|Kp?_;hHNY{H; z!Mkfm9jr_0v>wZWkVX@vu|^t?kj6&Rc#1S`qB@gQ-^?6OFcW>2h$|TS0|qa7 zSO=q0>8XH4d^88ql=?!MhiY8yU_f5i+KiDVe#3tT()({EW9XzoKa;LcPR!)QKpxJJ R6CqLiDTc-BtN+iot^X47s@4Di delta 118 zcmca1@RF4yEZBp^-*txPL=I!7l}rfW4+3%$sbu{T#fZA w6l@hratq25i{g#+Dy+E_U_4{Ja%8DWkW^WGNoqxMetuDkAwtf0vNeY+0M9)o-v9sr diff --git a/bgfx/shaders/glsl/chains/xbr/fs_xbr-lv2-3d.bin b/bgfx/shaders/glsl/chains/xbr/fs_xbr-lv2-3d.bin index 5e23d658855132cd8a88af1ab3c20d0eb9eaf6ba..4eb973425febb6b46cc26240e688b542b355ee66 100644 GIT binary patch literal 9773 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 Lf~EJ{+gtwwaM{&% diff --git a/bgfx/shaders/glsl/chains/xbr/fs_xbr-lv2-fast.bin b/bgfx/shaders/glsl/chains/xbr/fs_xbr-lv2-fast.bin index a7b48e65fc81d725b7a40fe99e90a0e8ee37bd78..c42afe7d9ceeeed131d7779a875dacfd94dfbeae 100644 GIT binary patch delta 1285 zcma)6&u0nJYf<`%P_#b~##)oI4gtDd_M9{DPcNOi>=M_{O?VpKCzG}AiK zjkQ{B<#y!`oRyBkC$|Xe(j-1;a|-gXoFm zM`}iH#@f%cBkO&VVhl=Bu;bRLy}r9+mc3pIL2sI^NkhU@4EOy)NKcr!~vcE~iLH9CZbxPBUMoYBH5=4tri)BJQbHbzhIO`ZWwUZmwsHU-q)_Knv{?0u>A1}5$<9vcALepubqO$EK10c4(*H$j?Tr__x19? z!PbC9>s|)I7yYWyy#2Toc+5=L&kSn^tQ8Eu(nIl7$Q?eFr=s?C4Unz zF|brmVqrnBvsefrgy?_}V(W-tKmxH;2o?s!!krx_CZf0bz4!gS=g$jw7RmXwQn*o= zx)Kh_m(P?d#nsAssa#wuUA%B^1cgFq2QQ%~J7>Q}gB?dj_eNk(m=Q^aY;SHg?Rw?7 z^X?ErL&YWd6@JWX(ZOIg>%19#@4|!C1?S}v!L3Sx*?9`PI0Zi?jC9Tu?BywZ$0?^G zMo@X9W^Zm0T^9&@de*eaoNp{=nVoK{O?m4W`Tszx-RbfHY7on`48jOtH@eR>m6(cM z3@3)yQW`8d45Oj~za=^5lCp;3@$!+ULL63PA>p?uWpVUobz|N$2LuzCQzV(GvCcn@ zNw`0zo$kp|7unlxF5BbF_(}(dB!H9@+{J0lAj3B`+w8&2__Ks(=~}&NZ&&N<*XXJsY6NN8zKS!7CxcgTeAx4j#yvV&BlfB2PNJdv~?{q_t|J!NrKT z3<8hvY}!>i$m_E5!nn$})W2u`1Oxb@d2*8Yq;3MZjZ?T_da?%NPaZCq?EW2S#x99{ znAwI8vAyWvyF=l}#58=GcpE5oDeS8RrZmae7uKZ!;{X5v delta 841 zcmZoPdtl1x7VN=NY#|-ZJW;`tapuIRC!1p#OPRP!atq25i{i}{v=k=)XHnezkC~AX zCTIy2oUF~dhzF|B&=98b7wah|xTq;i=_D?p&CHxX7~wJ|Fc}SQRk)xr%#bQ>CB`TX zjk45a6AeQ>104kvLQ_Fk0cx+2fnH@*d4;BewgPdg%PT6YG$(rRk;dqV_lK~8FM zaY#mDo@-%gVvd5w- zm71C$cV7??n|y^&e6qBlq#slvaZUnz0HQ-n0jd+lVUzp##Mm`8!BUeK3W`sj#y?}S zzJT=PUTz7HD<@YA$nj#hPZDaBCJ>;SKKY!0zav-(8iF`PhB+t{C+qM_O`gCf zKY4-R&dE_ia5KE{`tcX|`21%zIesxdIXOE%8~SKViACP|q@R!UT* zB&n37m6Beiq+cl+JZs{djb_Pe&w{%#g;0QCt#EQGxl--t-Y-KUWYCf>roP6roJlx8Ks?{+EN zg~F&C_YMW@KNR+=BcA5KXkA8?vPOX~rz!ze*Q@Mu6GbdN#Mgoa8gF-He}G!2Bn2gq zTARDo6flSgghQ58D&F0f0)h;13VIC+l6YHI0Eyxh^cxifJb-+13I>e|_GJ%-Ou?{0 zK^nqf#1xD`0cC+rT_O*dFhnb<`bhIY_7wi@4wU|@xmjeJ)DkSAzFlOp`?~u(I;XRb z^9CZxM4S;2DJJ5Pf+%4kLXl^x^b%ZRSjP4UqOpnJrG)Uj<|!_f@wzsx3@28nGU3$j zF`1O_(Q(%7Np1G!do%#Gdjk0)dF4qgy$~|0jEqNG>hZ~|K&Bp_1rg`7AmV(I$m7$? z3oO-;*J;^n&q%+S&p{FAelwpkF62Pp0Y_cbgoaF?J9*Al&R1(=jH3x!}d5aVB zJXfe>rvt03Qf=LaSza9PKtF9D)YG^N5TF5nBet#WF1I2LU}!0T1Mk3!I&ct&fL3zH zI`050EgXSW^e}{oc8&Qus6nK(ST=*<(Weuq0tfy^Q8@GI5|~fd>x(}#n6_BdokJS6`GLYr@5DA((tmXgJXSwsa=m`a zut!-aC7n)>dNYp=qhKU46<2SBs#ddUBFahiXb2=rB}}9Vdypm^+6FbFFcHQqEV9*I zWL&{Zz*IN(ph~l@>-}3pazMpcYs0KC1^f8We3qcgnfU+9sC*l8)NDhqfMx`ph`92z z!1(AG@{G_ZqzNcECgUl_;i45~T_}EQxHRBdK~m5Pi9u(a*^JTVi zAn=oHf+yLl<;Fis63F>mHKBe7d6?iwdh?|nt~7zZa(-4#@T}UXoD!o-IX-ue)A?_9 z4KGH^XCl6JpLCNHvhE#at`*}MF`yZTgZE-OUr(#nQ*XCFG?ctAP8110g(dy?9&7<7 rxXhZ@Fq)LG4`rT>@Zs7%?U9k2`Q&7k-5f9H%N3}zLa_9{-ERE@{UZS% literal 6083 zcmb_g-EZSW5YHj*fxsINJn*uQHf>$++WFE6Bq%Lc=>!sY0!|f*OzZX{CC!nfZIaXd z@6618c-EgeiK=pJ&(8O6W@mlz`sL^A@wZpcdtdzZ)9=&QXFt9=|Lj?>_pJ97KEIv* zd4BoJ%QyPf*ZAtyA8LB`+xf-C<=N%=uZHsF!*r8xr|a21kM-K;H~Doo2RZQn_M2Ys zFmpHWgqk&P79NJ$zgX(MIONEtR#Mlbpg_p{sOYJvWw z!iBEpy$xXvsT9i63Kr6Wvd$Lo=lM$gEGWKU;c|8(7TN4x1Y!R}Uuc6ii}w)LDa23+ zdoR8hfsEqQz*!q@;V%qv5xHSjLVO*ULM|i*aWpsjKbqK zxl)Y6&6!*!j6$ArG)X9NA79dgr36a|lD1F?NdOCjIwjQ*F*lL}g}?Dg>0b>Li|!c3 zn1=~)+xL>tz#}0!zNIp;XvLICh?S{Klv;TVj0zqdzZRaFw86A})J?ze?j7lgN znu=)2&Jg<Dh#>oC9k|9Y5GPJ^0!oiWGZ{*PbfK6dLBhPn30ckr zPQnmYS)p3Hb+fuS+JSsxps1%&3?V=TK4VN~FfArvsHr9nyp=0z<+X9BkxJ%R<6Xeq zLic7=AVx|s0bQt#k2Vx6cdWw_EBatkP<9$Y!JY07l$Tl!s)iWxT}$DFsLNxXuh(zh zW%oW-aeA<|gotsYg3_acS9yF#Qn({s&tU);fyn^@+^TV5DQUn+a3%0yAVKU!VcNT} zh?9a@&Y;Ssgq6N!pt;=Vq8g-d(afY*lm{`z_f3U^t>=)5TNT1QGYq}QHE8#jQUNw3 zk?(K{XXHh;6#-pLxNOw*G#S{q8#8H!ES;$ADCt~)RJb%rhv%ZEt%0~M47EcJ?XGm( zdRr}+U`#Xo>GZUA$iy@vV4`?e7sr%!hf`@es5GI(3OEh$;V?*;eqfa5jSU=%g7g@d z9O88rz(c0)z|DtFj0(?=CvcWiAUo=XLync)ZkWqT?D5W*sX=>n2Q zI%4eDmRSimcdI*BhquG9i1+HIfq4mCysLXO%b2&+SlW-3Dmo^|7~ zU>rawD4s<%SW;YIRyyqxKbC0w=~}NHcH1gutz10vlvL7V(ZFC7bmbxqm|V@&={LkU zQbhHyHPNZs=LVF-LQV0xUE!yR#SHs4UW_Yv3feNa z!Ii9M-dwD*|Z99~$==WvB{_#qbiHu@%j(w(OipSZ=ojlT21{Nyp~v(fE* znQd$k68jCsIg#+uJi*bNH!+HM(RCCIvg{O^=p%#)Z~{lT0!Q#fhlYZv1L&JW!#T8u z!W=%PCOD?HnKSmy(bK)v2(``3F=v>9Sj}fbf1uK_WE>IE zdi)$}zG=c8h3KQm=j*&_J?$^{qSu#as)Ub>$sl?HT_Bu?pU?oWIYQL9K>WnrCMhYo Yn@=xR+1=T4zFYyHbpteg?Du>B0l@wKEC2ui diff --git a/bgfx/shaders/glsl/chains/xbr/fs_xbr-lv3-noblend.bin b/bgfx/shaders/glsl/chains/xbr/fs_xbr-lv3-noblend.bin index f8cbc73f326f5237a8e4b5a319a01d1cc4861dc2..0899e9faaa8e891e7ffdfd3b60f71233be5dff70 100644 GIT binary patch literal 9622 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 diff --git a/bgfx/shaders/glsl/chains/xbr/vs_xbr-lv2-3d.bin b/bgfx/shaders/glsl/chains/xbr/vs_xbr-lv2-3d.bin index d0293824b944a900ebc6cff0bfa5ff3239c1a8c4..c771634e8beec7bb36aa0c9fbc8237685ade3e90 100644 GIT binary patch literal 1980 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 literal 13025 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 diff --git a/bgfx/shaders/metal/chains/xbr/fs_xbr-lv2-fast.bin b/bgfx/shaders/metal/chains/xbr/fs_xbr-lv2-fast.bin index 12f2ae31da07da6d3d3a1935c6f8edd1501b0c76..4883fe8edf46a360afd852b263a828fab33c0d82 100644 GIT binary patch literal 7759 zcmbtZS#R4$5O#|8p>7`v^tr(HrJx#_5idzb4xn}I+Cb8vaeBcp2->C`0Xhtcie&}) zAw_>s|3iOGXJ!xX4p*w9`a$N-?#_O550^)$#~=UQ{_D?Ac0T?6`&aqt!FSIOKYFmU z^I+$59RHF3c6jpR@oP!?0!fEI=dX`n9iAS)eEx$Ze~IMhzsC8&%fq9ilY^7PpVWrW z7I{@J^Z9U9cI4WBzS`MY%!iX}F)7C7{HC}p#kj1B(c|5DHCtR(VmT_R7uD$WO>tGu zP9`^tO1#?@VlbK(RV>~j!^`P(cGY>Tsi{ScywuoBO&;&Q_aFOmQR#Ev6r({Zu1ERN zthhdyj;6D$C*6urC>OfX9(fLzLBh~ok zZ86Iu@l=qPSmPiHJC6d1I5gG?m+;qWHCe=r1&#v}B@H@Z))v67E%Z}MJW|TwtPST_ zC@=}*jAO9eWfe$t!_abd@vY`-89Q9w`5>o^F^)-}q0}a^H%e|RapG3<*eJZa^_`Hh z6L7rU330gep3r3{;CR~;{4(^|2{_*Ngq2r@K05)&+ntcCvBN$)0mrs$>*P(|4K8H- zHjd&hdTlStV*KCf#qz&x?PaQ6HFAQebJjVBgOnSm=-E2HI%knJmAO-~HPv^g5^Jhw zLZv>x5y(gg)T#R*nE_yhu!Wz}zg`nd{M(r#3bnCob|mw*?6m*a>_|`Bu}e%i)$B;O z+p^QbO3yKB=D90Eg3lhY-yV+Bq>evzZO=#@e_~U%Kd~v>pJp{XIX&RUEcozTO@0Fx$h zGHqg_MAf%to}jN&zEsaa5I}<_Om%}|^-u>!)WWGf-4{mqK0~iEd-MxGtyVqV31gaf ze__QV5yWAqE^#XVs&YUeWv0Iz!D}A8bplH2I_d4nCzlDSS}s#mU^ms1x&Sy5)p-5l z{0CS(nScp7lR(x06}N>n%pN@RCIKyJ3>#Z!vpNiA)sDwz zu{49S8Og-dkVc!;U`k-E1`I>xizz<;Pc@JRNCs4ZRK{jCgm=r^m8A>C0r!$xq=$2t zh~+kF{j@?*I$)K+la5s+G7L;?6Ps(DT0+aHolGbIo6GTi zg%xxdujEEgbDLsvvimI}_&`S%Ue#Kz1+DU|)uPE-jT<(?cchj5EA1iVlrD8HOEDMn z{7ghQtAY`pn4UO=1cxoO%gNU+q|NRcIhoTHBXSW#G-*tG1QG)2Mwuu6=kJH}U9 zfCX7whm3HWz*Q2` zTX3JCAMtI*=Vd0FYc(LjX-684t4gUGW0^_5iV+bQBXoGnS=W~M%;|7U8p}*(Tjum^ zU$L-TS$)%D(2($Yg#48^5-ZCQL9Go(%$znx;knB*lULO9{qdyx4j$z1MhB=5UVo6U z&uke_4n%OYZ3nFV!pY2L8W*jaMtkovTGQEQzECA16DzZVKI=-^$cJ^TW;|Aj;JA6# zBjvf#9RxOv7K*?q=#0hx3Ro>D*#iY6GN;?>EDoeOP6A%Bi z$scmoCjQV8w52FIFQt9Js4SNB>*Jl%)2_ud+IK-GpnIdmMDyzMC?>*qh+4!SQdQDY zCwJlAdj-gvGkrPZF7HXAb~IQ6!1ZXKMjlqFk5$H5tsGV>k7TA3)Zmfu;gTsKT*(wh zElVG6mTbvzg3o zBrVDf34WMSpHocLK*us$OgE`{AmRQeLLs`xi4u!B)1=zr0NhX?Ot&w308vUG{LC$Q z7dLrj!VLdjlyGmieg_p#{X=SpPn4=W8(2IKceC&o4n=jL8flxxNA`wEas^EUP3uQ! m>s?>y%1clAQ7yDTd;%A}i|+PkC4AeP$jb=${Puo#cjsTq_7Q0S literal 7331 zcmbVRNpIUm6n2VS>h{)a57SFQwlYHwhmr-S0TRP*3?vQEbVXngj7&KKv=~}qSwVhC z(I3>m)%V^koEeVfL_Wymo0;$J3(51>&maER`S+iP2Veg6?AP-3>C+cyUpzQCcyRDF z-v3?xd3N#h^WP-t8zjB>gO{hT&d$#-PA|@WQ7d1q%4NMS7o$y`%Drdb9vrL|qvGN^+gGcl=KHQ14+Xm(m*?~9`gAs)&9|QVeL5P>=95NT!Hn@N z0c-<$WY37!s%1#xKLlwe_0%($l3SVZWi^_zC}7WWvK*Hq_U6rESzXuVXnJ|sVT0Ke zZhb_h)Ax+dtl-Ss)o@tPqcpy}1P62&W8jhHYF_iJ$K<3Z?5ZAAW7w(|Xm5uts>#i` zo)gkya#QMEicY)Y!w&%Jh^%xX{xi!W%gN3AYF=jSCq|)Q-A7rHK8mEoiE%-)hQBy& zLvRlQ?;}!0L}^lV7{GOyzKYo+WegwMAakaK$vtGe2hRSYDT|7nlQ|1t=579-B1qPDGtMA{Y^RSNc|K6Y;UK=cFa&}@cU9D7%P|rEoG7DDVsWiNwYcm zmHT~nUFN3cs_Q6*Df4?UhS?q-H9$)0=`=Ej^fIHiD%Wtrv>J5{dTA{jjT(8w>f9qNa`uJI zcMEHV>_%AARzO(lDB218wFdGAn7G5FV~*h3Zw=^4<5+IF&FU-4t7*Vz-1QmiDk1qVdX&Mbir#GhoJ1`3E!LwTZ?3%s>_(9nb*M7`x4o+^ugnmMs(lo+Y!$2=_yR z%VVUY4r0{KH%QNq3wOB4u{hY>j|fpzywfVaZROO`NKWNa+f0P!10uRr z6`b(cj0SmM+Q3B$jRvAU8X%J9u7RAC5T=YNzY@V6e?*26tO}#4XnmkzLSx3rSYhsn z#8WEWOz-oTGr3HmK|uZnzWY2y7KRA8Q--}#fr|hQ+5~z9-XGxJ7@pSjrKuHelnGPK zwPlci(Q8c53S8An70}aCn7XU3?dMAG4Viwt^f=%YY(=r|{gn7_NQ4F*VGTMYLK9cQ z6;>;0N~BHrG?}c2?q{Vig;iaDzUnlEHu(th2DA>1Jfc1Fh%U~vC`zcJ2*08b!O_~z za{JlD4VuDCJIZ`S*a5U<1};MRO+>d+fSip-i%`!i`~)Y0lP`sQ6XDc_!jFC;OsX}D z=tp%2uTT_NC|nxvBF*8)!3S1P6f)1vi;-Mlma5X?92Ca^e4;tqI8@AC_}v&7NG)`b zTdx6f-mrIIg+0$?eJW0k&|rHraOAq=7AF67I3Qs%LM!4AnJSOfVi(?!Za}j3%CTH= zxA!DbBg4B%5M1BE+Z9x@4JATQg%7oHpf&-`%=oA|BH{BjQ%bm+DH$~~%sP%Zco)!2 zDd9pX%QaB94%DsD%vjD8Ky-fNNmI@=6cQ-06+_(>$cs47>5b5NtQQ{z;+qyyfd0)$ z40rUpMW5^?jpYrTnb=(U{0dee;gjTpZfVPh_>FvhN4~x*Uth^bHPD!SL~?I)<4>mPXnk5T$+!*$J5rxK!@CAXj} zZbFu}5nu`1t_o-^v}n=`o-^Dy>&o-;(@tW4V*?b!5QUo8@P%nAzmLF2ppS=#2mb>E Cj*@2p diff --git a/bgfx/shaders/metal/chains/xbr/fs_xbr-lv2-noblend.bin b/bgfx/shaders/metal/chains/xbr/fs_xbr-lv2-noblend.bin index cf8f4857cc7585f307a6b72e5ca5e44dc23dec3c..f3617dd96452123fa2abb1906810c5ce04fd0805 100644 GIT binary patch literal 8592 zcmbtaOK%%D5O&(0+)IHTdtokx)H(|-cV$UP;zLs#36L~sk`@IFLr`SN5uk^mM=Z<8 zfA7qYGkh%N#8M9OE_XOH-^Y27yE%LR@`pwHm-Fure){i^ciq#!yB}V@JAME1?dw0k zdvtK{=-_7@e*LfRzIc0jcJ}JUtJA+em?uB3y34`3yBKW-4Ks4`_~2l*7)`I#v^N)q31pzFCgnf9hQh=C7vLtEIX-RBAY$^_E(FMuq*^Y<}5z z%A=(>nkPqfaeff-5`$Sz1`n@rT+6N?i zq!zu&^>{ERO^eBOm!<4DN!1VUKxyEz#YFaJ!iZMO$@S;nyql}%iek#U2Xgw$TFt=B zyx3E}Ssag@I=Wub^H;QekEifo;< zP(~K;epd@=49&;_-tTH*lf-ZwS-|_r7huBPQ3;YKx%Y(1 zkUY`e6DlwAr0|~j<;V)OBY1dkLaD4ZGM($=Bh|=Sc~j%xMoXK&bqHlP;RUaQ)bSv7 z45Zyy(;2UewbwZ(8g|vjkt*7Vy4|#u68EBw=-yQuBc)W9=*Sz<8qvVR7O9h5q@4Pm z^*zsn$fJhl9{HgcJ@R8OdgKS6-yvCVT;y^bco?!gPeb$bBQN%ez*fAZ&dmcgmpBSv%Sd`{hdj9TxaLK*k!90wj)PMTCsKF(%i zSAbifX4o4q2HrMp-OZ(U+Upvd%Cp9idgA@UrPncmj=K6?93weT7$*kO>u@R18}hGK zBf}@=lvCF7tcgt;exA@T{M60V5KbovM@ySocjL5@@XTN>g2IiS*bvRR?nL2Fy_!1-2 z%K>Xy$NPL50AG!Ny^o8U=j0RKIOedNkOtcyLzlq9j_!aQDGP)f1X4ML$0W;2jdfRWmun?lWZ~#_{`Y+w!~w=C)C1 zKme!*>MV>(b}=FfL(U`WtJK17&#j$VA2Ww|4YMLH?V3t^7}v}ggx@pC1dUndPAj@d zD94KGAL2C*+?#A@g5wx001=T9u*f-USTeZ;H5!Vcpw`C{gdE`pQoSlD3C+nEN?cUI`wTS~gL=GauP@b+Cgg;wP^}wJ5=G zMFjzb0-KURu(C90b^AKQc!C9a#;;rA_g(}mWiHiAZo7r_5_|n%#*iSl>{$5-D+5Ba z2|!z!RwvIDx{`u`{iDJd4kiqQjM;koO|%8sS;P&11~~pLNJuJZL?#(b`{JcSE#0v+VI~%?Z1j<|gv;$GWoSfiM1QQHy zCx~DeIlY0bC=JnMf#u<(ufNeBPIwI<&r$#AuvxW9(x*U^Yx^Eoa3?60e zwVyS~6e~Sp_^y#ou@apZ?S#-*7P%_jv65ojLo8AurwUxLFvWuKVxLgnUV9)Cp_P~r z1XjHIC4!MjCa9v2id>gc%C37Uw!OquQp_uN4El)A4^+~4BIU>UnegM*oSue%b(uhjRKAzJKUho(GccQXw zUcj=b|J@0m(YrshuJBa|UI*|G?PBSHd=V|B9k4PSpnbYIZ5CTTEa85Er?l(9kGEmQ zZV L@X`9q;o-smIrHaI literal 8537 zcmbtZS#R7n5O#t-xsQD;P%tlrlsdwS(q6~`BteV@Xd0ktivotRP;70oz#hgP$=X5w zduN865lL|!XV(vFiO0-*ALk&c(|5oBup0b)cK_(7|6cqx`r}_cdinO%>FMj2uV4N7 z_x*cENB53?+>F-scC?z@)E(3E%Y&n%&1y3Lpyt)AUR_lewVKuIYWnziwO(#6)@nPg z)^FC+cOR?Edii>OwOOk#$4ZT-i)yXaClq+GSS&9)kGZvUTJvbDj2Qhk_?PM6h(my79QxpUe-^T~LzoHaa@Dnhwqi$gmJ9fOKlJrBsW z)>y*dRFk<%BJ7W5>*;8s&dyfr>O(!6%+JqH)Wu>Buc1V1=&y?AY+%m&&3IfdlTLbm z4$F0-l!EnJZ4jOx+R@LlkS}#e`YIZf^QMR2%rN>`DsAsap zMEV!Ph*s;_)u(DX%GFavj^n%oIT!0BF)%a7!PG;GBXju7w%2JYf=d>x1Ht%CCTGTA z5-&JTRAT%&ZL8JU_2-y|BG7>E`)Me$ZB#=UXu$V3j0QRMtX9mhjNYdXs3sAi1ZXrkDGJsfI$Ec-xHn;{z_g| zCY?;@x_6>FSwHV;{NL$o^WSx?2GY=hG&GR*V@+qgF4n5y8PTw>H1<@HM%3*mtrWi( zX+-zF(io{BoqZth1ZzYMyhy_X7AdFVW^K=N&-18iHC?Xj1zoQ11zoQ5xn+>$hDk2R z21b_Whd^`VBQFl|z<#*OAnpJc%tMC;aR>NdPwEGgTAUr=gk1q^oUn=L+*{l75JtN# z3d%zmg$1%Dlqo0=VKf&C8gU0O3Jc^F7Kc&F$E>7#7^7St8*vBtC@^|s@_Hlg03Xez z@-^ZPW7Jv~B+9T>=hz_Wr2F0JL_HtneNMjiIWZfpGRd>fiF)Mx!ea_57-Dvvs^9Fk z%#L;j<3w-t*6{s)v6#xfAjfJvuBNNnsixFO!;*w-dd5XM&$?Kd;pY+k!cXc}XM{6! z;NbI~a7ex;28=>@{w5rag)D?ajSZZka^L{LhB6DM6T;E5{eC{8=RM&N5&>fP`!*ab zRxLQ#C~&|gfn#-u(||e)=VLV;%bM$OTTTrZQ#ifAVkHR;PU$y+U88FJTdN1MZyaQw zx7Rl*3`h~j-KX8aJTonYGX<(iVXw!J=(LfeO1RJ0*Z{T~`>OY=M1oMOM-m~hoDdu%QYO*|kVrC7@A))vFkk(D(-| z69#n8I3yMg8|8PNNWmVYdM!sg$c=QYGj}LiM5j0!pV*k^OOvAH{hh>Di=1s0LedTO-R`&Rp2o_B1P zQqP_$w9-KEoVN&%In=-@z41A4852<^yEE?t3^&dokng=-Jv8~f1Q*I72@+Mz-kU>E9RGAciLzy%txTBIA(80AsX=Uu#n( zZ>#S#f%97t?ntP?Hz;Y?P>40M*_e!h6&oal&bF}C zqIFE+whDcLZny0{e=}X`vr?V_xWn8bK(6KroNE=rIr;hqQ;AYvRSi3It1UVh&*(hZ z%we+;3_sIp&=W?-o5pmhfr068!MoG+K!j8}G(5n+TSx;6=UaP$aR$}mAUeUJ3?>*J znt=$8nV|d7me2r-l(!ZXxH8(&ty?9=>yYg7luc;4oVlx)bB4vDP`L8D4l)Yu?)d}2`v5+jC$S5gwqk7L*TzlNn-YNwl>5)!1uA-cwVYKlxeIIf{ax2xMbUy=?J@0P6 zaIbQq&%4}rzh*)oUHh4J#=1(Me(0y!s>{dFQpyY4hYhrS=0aWeU^64)Vjq>#6!>wD z1-N{%jX)^{zzv$Rj}Foh1UH$o6JVooqBVgJVsz0&h`bey%xH7a&@Y!brBoG`Fob0I z6mPR|y_-fzLeM;$Y~>_glqb>;Z1d0o8E3viXYMzCn9gJ9o7=L6kKuFkof*DYe?2}v F`XA^)!z};+ diff --git a/bgfx/shaders/metal/chains/xbr/fs_xbr-lv2.bin b/bgfx/shaders/metal/chains/xbr/fs_xbr-lv2.bin index 930b10120a9334c5b7634cba1b6e5d7f046a8a51..c01d49c6c54e02cec50214363048f5b30c8267c6 100644 GIT binary patch literal 10337 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 Zz{PS!Q1c;tl{Hn5W#PlA54*cN{{y#HH#-0T literal 8581 zcmb^$+iu%7G#&b~Y;Swq3;VK3YobaNB|GQ^XoF-8(5}F`D}umK6FW8FOJF;VGpgvyF6Wp<)~V`U5ws;tj_wgqshhPLVVs9VlbLk3n@M!!qe$=c9uS6 zsB)lLD^#{Z^H!*8g%+*QvK88Sy8WeHoOhQCmgi$N8Ypo->K)Fi^Zn^)I=gY#pOfKW zIvdw&P{JC;VZb#^01k}f%sK`l`UBu*+@AzyFnk-+ysd^45w+N{1@V^e_D-T zshOa)J7QjqFGl?tVVaLGdc4ZOX;r-a8IXD`8<~jy)X~UdeDSH8^)m5Xkc&CvC`-~O zk>)tDCP7spK$GC+ajh(u9QniM+%(CrBRip3M7j1aZOEQMhv4>02xEO)wyGd+L_Fmp)_b`q%+g? zu;tDSq(hUwE$J*}`E)oi;j9sL2yi2gD-Q)7c(x5EnaL7^sgo5F|EC?P|7#~SJQLxF z1%Ukw&z$(JRg_WT;5AY!X+1m0ge_g8Bh9Xhj-9_oN9I@$owBi1qaz!xi;jg2>>DPo z3;}G9Ox|q}*EKWcc`X%VW?vny>b(e>NIRt zYN6M&S=MmS@^}M}Ds6>f)s@E^cvNA9)gI-(%D3#MMDLhO*9GyGDWuLZUc>G zRs}V>4KxY{@=A}RQ8$-o-OV)06_k1IZm7|fpU=CS_-JNpW6j-W8a3PnS#OW49g{(T zO&Z-Bk_Oi%X^W-VPJoCzNopc@onQEjYm|9%9gD}d@1%9kV%+GhHl6H;>2zevwZtks zs7CX?Q{)Lq%OWdEAs*Q#B1@C2<+V|Wj}9B*208@Zj&23`wDtAjiPaGn6-h;f)-Y!> zLm_>T)VO@su;Fd6hQQlc%OP(tYd$)x4h?h&4A7;?HK1^{cQa1xXB#*X7~u4bk+%tp zeQN^~0s~B`$5@*QY`CJZ(MbHNd>-XTrkJ-hu7^il*o6GQUMCYPi`h}l3 zuBX#P(!Bo*E1rl*CTZ>anP!#!1ew$>a5{oBBOGCYOX?NrDApoZZbQ$?mD?6|*`sfe ziwSrV)%>=Lb33y{Ibb%=ZfDk>H*02XXaKVm6>Nm{vIkiMRJfVLeT)YFqb>$7>=$yJP{MX#$)wiZe1AK*wlsLBZ`U&Zz)62=`)K%SdSh$4=H4DdBrQod>NJp0{Z0vyy=;(`gx}6R1MK*GcCn@l{XR++)7)uf(RA zTJ+Zzxe9^4=pe?6=K@*L#`fb4W3&-(2=tKz`g2-gQ-6&T3)@S%08fc-ZgNi#0irN| z3k2MP2vyc1V1Ypp3P?a-Kw!LfwZin26!n~D3L6_N8Unl=Qb;nBzs+_kybS^4YAGW6 z;S6JPlJGGqMOjHeDx#_YowY|%D$G(o2-;{`>!eymC!>33AyWne0?H7usWO)_q$Z*X z6;^+Qa&+&Iqio6n{`x=3LD{rHKfV=Sl|wU{Z2X(sZ$dO~(h4}x~c zt-siQlnsx7@emDv`2<~}NjwULYz+FBn zxODSTtvpmK>(aGkVWun)aDT~+5I#GGN0tR|HeAVY)FPP?!bfE^SEIV}P+eKctmbUy z_AQA?)qN%`5J0)e5M-|)E8+=&X_h)A@lZFRJOcipL8wP`hf@!0&D%A$#q#(o!=y`q zui_6v*}3g0sAIFjq%MCY++JXVYWRbp=8w|0b&b-d?co4ioQ3IN3E}~S9ldhfcPZMW z@!;dDc{1fL=ZomWoz%@cs4?Onk_O)8P5NP)W!M{)GPwd9q8gE;s|1*WfMADars4F( ppYQ_Z`&p^qmGmQX;=c9+7PG6QN2XaH-nu9Hr52u}zie-B{Rg|(A%_3} diff --git a/bgfx/shaders/metal/chains/xbr/fs_xbr-lv3-noblend.bin b/bgfx/shaders/metal/chains/xbr/fs_xbr-lv3-noblend.bin index 7df071c13791a0f0b803467563a9d73a60f9cfbe..cd0fde65e4ed20bb8161eb76da851aff66f04329 100644 GIT binary patch literal 12246 zcmbtaOK%%T5>^&DX)hb>aW9?Af{bM@=S{(n!+LGlKoTQyvRFV62wJ8b0hB245mPk$ z-?yr|tGc?UDVakZD6*$sUsZKg%}l>~_xjuA=pSd_9{ufq|NeFS@|W>%uYY~{?)BRr z|MQn`j*h-L`YvA1?fTzw{m1|2;}>sVzIyfM#haHu|7NfJbv<59H{<2ib~>~xvws~O zt(R9fAI;6=db+%wTujaNbTyehIbN<7>x-4y%qFX!RB(Z*FeaEA#o-n9JFG zvdYb$DDYxFUwjxo;nh;DX35n&xmqMw%j9a6T&(^|6Dwho7MI0 zpOeKnGtUg=oB9pTxmfjj7Un?ZrTM|(7$|=ZHh2BL2rgN09tpDM>dRNL<{=`=`C}rZ>D-Gh>EzShljX)mF2jZWkY!mK zn%*B-aYzO>ag;&a0V$Zp2@T>7$iZ6r2RpSmJ0J-w0UIS@T+1_D*fUf`I#g7a*!t>_ zP*pA8R)>TNBJX;$x9)&YW#U^e?toB1=~*m9V*?aGS{lQRl7>MAv>cv zFjQMRya zaL^hLr}l6vR9ld4`-xeb%C;trNA@b

4|HQAi%MwSk2J9!3m-5mW(nxOsB4#^V`9 zc-)>PK=6^o6BGki&vLaVC-0ZNo?9OcK5g!{<}pwAqki8!f5x}1@dJdx2L2K*EU?f> zN;uK9=#Ydex1dw09NfV|H@!ijV7<7Q&tzE@tqM3<`A*o<|t`Pdt74loA1c z{$3tX*o20%0}lkgirl6`zmFPzFs#QaG{$OjCgrC@C3Ml{VrVbZWI}?#Dj(1}t)Q2aeNZW^pSo{_H zKhDRrxw+vLscuP&i5dWHgFNE<$iq7_-_lyl`^2s^#SIEupKsui)R z8(fZkDK`|Z0?|U!7j4O|1B5<_$*}k8{M9aTTifRn6r5ciiD^efd7mr7;Mu<6{XpAD z+<=3GeyLI7!j5hL>GD*%K?&6rx1jVCa&jnK?sC}2xDYoUVu?y0YGTQx2+R+3!4Ga+ zwAJDE67J)~pJgFQBjv-^gf<~mrmb};7mGyQh&B?AC4tv)Aq;R-EMQz$_vh>nxo^@7 zp&T^N19Mdqg00#dc|ZZ2ywnN3rJ3W-vw0IjiAT+38( zrNvZ<3+8jktG$P-DyXOq{@u8elIOnf0pC6sbMQ&Nvz$EwH=NH5%1ywpQnw1U_#k{& zPCNJ@b*oVAxK#*>MBRC)tx~rNwD=ItvhzS&#oLb-xPz1>76)4$sJ8Hh%+8oRPH?S{ zC&{v*881Di1Ou^bM$3>YWNwUCGoYV^s5z*zR+e5)zg?$X(}{-M@|3Eu9mE)E4#O}! z!sAIhyjYxiHDy$HVM3*PqwM7=$M&*avvgirG$=Z7dR4eFjx545j@^YV3rXFO4fFm!g_md#Y1jr;tH%_QX@aX3u zglb{@ZFwK&3M7ZmR)MZkcfhpxz|M7(6%^^P=jn=Ktw(=L*DJW8SJ+9YdtO~aGH`)~ z*HQ4m%XMjJ!N5yrUEHZ3&n_L!7!<(#@Q#ETAF~rJ(WreT0_+VbplMsn`PvsWnw>g*PHQu*PU>d5({Uhj`&x<7c;11O(AL``}K1 zK}2SvEJvgnAOwoR;ugXR!3dMR7+`OiF1?pcSNOL(@wddtq>f@@A8fS`#MT;loUL$T z#e+)tA;}cD4w%>%o*2QgH|XdF+7|hv1x2Q9ByQ!zr+a+T5+$>>6&3sCQ|K3OH}bLF zp=T22qiiNtjFC$N|9A!jE6m=3EgvO0;Jif;HP6o?bpYrD02(WSa#TUm(h&%uVG6yW z=_m`y2sd&q6Gv3Cc7-frmpT8QFflHqyIMA?ZFwasWK5qyptc21!c=NobftZ)iHE zp-R?9rjJISi)!4tC?}%Qr#s-9KJ!)ULppGc&Q{p0fOCTINR>bQY$s=A8)-}IAY7m) z8r=Mw0;W_EmpXRX??c^F&pdEDqz1_*S(O`@lkvt}41l?in<1|uqceft;qwO}3aVp* zgW;1SEC+Tck|!@+8Y%fK0dAx~D`-MuzX)v(manfiev)lY_<9Y;C79GcjNZ;6Zn{bTz%klBi{{c(s_p$&0 literal 10602 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 diff --git a/bgfx/shaders/metal/chains/xbr/fs_xbr-lv3.bin b/bgfx/shaders/metal/chains/xbr/fs_xbr-lv3.bin index 3be8a6e265aa8b01a73e31c42b2b0bd963fd2da5..53a3c4a0d2eefd2b16e6cf92460f8e2ccfa59b2e 100644 GIT binary patch literal 14093 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 literal 13301 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 EKfRPGF#rGn diff --git a/bgfx/shaders/metal/chains/xbr/vs_xbr-lv2-3d.bin b/bgfx/shaders/metal/chains/xbr/vs_xbr-lv2-3d.bin index c4bc3b40c4d15dc3dfc7f35aa744c4ee4f049878..ac2d2c9b49982708d333046c660a687efd802b17 100644 GIT binary patch literal 2515 zcma)8!ET#C5G8G-s`L|j*;8e=$(F?!V@0_{s?;8$MzLB|vMfX#>{4N{U~#aceno${ zv&#YttZ|Mzo}GE`&6~wPXJ5}#=l%S(rf2Rh@SpCI_|N&7rk!bTe%;)=_g`kO_~~8d zQa^Xo;NTlYDF8NXya2aywX#eWJ`+j(4)6Boc;D5{p4G;%_w@- z5n6?@M=j*J%Q%b^1I_0irAhFRQGZ|z7mKShX9PLhI1OkJM~y5ZXPJ-%(3WwWJT{A& zJngR<&-aYB0Ifs!uI^Sgmhf0;CooqKO$b%Zt0+q>qeK}smC=zhYAK^*Wz<$iCs+Cr z6@Em)Do!@iTyhK5PLQezH%Jl55xoA+Pk?lD>Oy7Vgj+9&&_H1ecSA!rfElOMTl;Ph zEfyDO8Aou8T0RnpKOlZ5gF6q|YUL-~Iz#;#%+qKf5b*3+LQgl_otL--T_b~q%QHSa zL5O?Q92nTRKm;4ZMn=Aei~=&Q9g6ck%PJaS*-Y1HP=Lj?vgl*gkrx-&YTp=gkJ3yW zX@RZ0Zng-pbJaBB;o1rcb}t3{7zLYCkeD9(+kh(z!PS1xYFXlU)TdEwqQ9nE`tz!8T6G zW51Vnl@zvZzBi=vz!Mb_QV?m$+T=m{d63gQ*z&!A2jK&${3!k=NuQh|!d}e8r&$t- Lj}Cl=bzS=pNR=pg delta 149 zcmcaCe3FABEZBp^-*txPL=IynPL_?f8jKSki*I7$Vw$YY${A~{V5?wY&847Fl3P%g zSQKxpS6KxVO3TSlEHTnB&@<3c01}!gDk^{qpvsN(Do~`#k)O%PoB 0.0 ? px.x > 0.0 ? F.xyz : H.xyz : nc.y > 0.0 ? px.y > 0.0 ? B.xyz : F.xyz : nc.z > 0.0 ? px.z > 0.0 ? D.xyz : B.xyz : E.xyz; - vec3 res2 = nc.w > 0.0 ? px.w > 0.0 ? H.xyz : D.xyz : nc.z > 0.0 ? px.z > 0.0 ? D.xyz : B.xyz : nc.y > 0.0 ? px.y > 0.0 ? B.xyz : F.xyz : E.xyz; + vec3 res1 = nc.x > 0.0 ? px.x ? F.xyz : H.xyz : nc.y > 0.0 ? px.y ? B.xyz : F.xyz : nc.z > 0.0 ? px.z ? D.xyz : B.xyz : E.xyz; + vec3 res2 = nc.w > 0.0 ? px.w ? H.xyz : D.xyz : nc.z > 0.0 ? px.z ? D.xyz : B.xyz : nc.y > 0.0 ? px.y ? B.xyz : F.xyz : E.xyz; - vec2 df12 = abs(mul(mat3(res1, res2, vec3(0.0, 0.0, 0.0)), Y.xyz).xy - e.xy); + vec2 df12 = abs(instMul(Y.xyz, mat3(res1, res2, vec3(0.0, 0.0, 0.0))).xy - e.xy); vec3 res_mix = (df12.y >= df12.x) ? vec3(1.0, 1.0, 1.0) : vec3(0.0, 0.0, 0.0); vec3 res = mix(res1, res2, res_mix); diff --git a/src/osd/modules/render/bgfx/shaders/chains/xbr/fs_xbr-lv2.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr/fs_xbr-lv2.sc index 421cf1efb9d..0294c56b84f 100644 --- a/src/osd/modules/render/bgfx/shaders/chains/xbr/fs_xbr-lv2.sc +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr/fs_xbr-lv2.sc @@ -41,24 +41,11 @@ uniform vec4 u_tex_size0; SAMPLER2D(decal, 0); // Uncomment just one of the three params below to choose the corner detection -#define CORNER_A +//#define CORNER_A //#define CORNER_B -//#define CORNER_C +#define CORNER_C //#define CORNER_D -const vec4 Ao = vec4( 1.0, -1.0, -1.0, 1.0 ); -const vec4 Bo = vec4( 1.0, 1.0, -1.0,-1.0 ); -const vec4 Co = vec4( 1.5, 0.5, -0.5, 0.5 ); -const vec4 Ax = vec4( 1.0, -1.0, -1.0, 1.0 ); -const vec4 Bx = vec4( 0.5, 2.0, -0.5,-2.0 ); -const vec4 Cx = vec4( 1.0, 1.0, -0.5, 0.0 ); -const vec4 Ay = vec4( 1.0, -1.0, -1.0, 1.0 ); -const vec4 By = vec4( 2.0, 0.5, -2.0,-0.5 ); -const vec4 Cy = vec4( 2.0, 0.0, -1.0, 0.5 ); -const vec4 Ci = vec4(0.25, 0.25, 0.25, 0.25); - -const vec4 Y = vec4(0.2126, 0.7152, 0.0722, 0.0); - vec4 df(vec4 A, vec4 B) { return abs(A - B); @@ -66,43 +53,17 @@ vec4 df(vec4 A, vec4 B) float c_df(vec3 c1, vec3 c2) { - vec3 df = abs(c1 - c2); - return df.r + df.g + df.b; -} - -vec4 ge(vec4 A, vec4 B) -{ - return vec4(greaterThanEqual(A, B)); -} - -vec4 le(vec4 A, vec4 B) -{ - return vec4(lessThanEqual(A, B)); -} - -vec4 lt(vec4 A, vec4 B) -{ - return vec4(lessThan(A, B)); + return dot(abs(c1 - c2), vec3(1.0, 1.0, 1.0)); } vec4 eq(vec4 A, vec4 B) { - return vec4(equal(A, B)); + return vec4(lessThan(df(A, B), XBR_EQ_THRESHOLD.xxxx)); } -vec4 ne(vec4 A, vec4 B) +vec4 neq(vec4 A, vec4 B) { - return vec4(notEqual(A, B)); -} - -vec4 abslt(vec4 A, vec4 B) -{ - return lt(df(A, B), XBR_EQ_THRESHOLD.xxxx); -} - -vec4 absge(vec4 A, vec4 B) -{ - return ge(df(A, B), XBR_EQ_THRESHOLD.xxxx); + return vec4(greaterThanEqual(df(A, B), XBR_EQ_THRESHOLD.xxxx)); } vec4 weighted_distance(vec4 a, vec4 b, vec4 c, vec4 d, vec4 e, vec4 f, vec4 g, vec4 h) @@ -112,6 +73,8 @@ vec4 weighted_distance(vec4 a, vec4 b, vec4 c, vec4 d, vec4 e, vec4 f, vec4 g, v void main() { + vec4 Y = vec4(0.2126, 0.7152, 0.0722, 0.0); + vec4 delta = 1.0 / XBR_SCALE.xxxx; vec4 deltaL = vec4(0.5, 1.0, 0.5, 1.0) / XBR_SCALE.xxxx; vec4 deltaU = deltaL.yxwz; @@ -146,42 +109,54 @@ void main() vec4 F4 = texture2D(decal, v_texcoord7.xz); vec4 I4 = texture2D(decal, v_texcoord7.xw); - vec4 b = mul(mat4(B, D, H, F), XBR_Y_WEIGHT.xxxx * Y); - vec4 c = mul(mat4(C, A, G, I), XBR_Y_WEIGHT.xxxx * Y); - vec4 e = mul(mat4(E, E, E, E), XBR_Y_WEIGHT.xxxx * Y); + vec4 weightVec = XBR_Y_WEIGHT.xxxx * Y; + vec4 b = instMul(weightVec, mat4(B, D, H, F)); + vec4 c = instMul(weightVec, mat4(C, A, G, I)); + vec4 e = instMul(weightVec, mat4(E, E, E, E)); vec4 d = b.yzwx; vec4 f = b.wxyz; vec4 g = c.zwxy; vec4 h = b.zwxy; vec4 i = c.wxyz; - vec4 i4 = mul(mat4(I4, C1, A0, G5), XBR_Y_WEIGHT.xxxx * Y); - vec4 i5 = mul(mat4(I5, C4, A1, G0), XBR_Y_WEIGHT.xxxx * Y); - vec4 h5 = mul(mat4(H5, F4, B1, D0), XBR_Y_WEIGHT.xxxx * Y); + vec4 i4 = instMul(weightVec, mat4(I4, C1, A0, G5)); + vec4 i5 = instMul(weightVec, mat4(I5, C4, A1, G0)); + vec4 h5 = instMul(weightVec, mat4(H5, F4, B1, D0)); vec4 f4 = h5.yzwx; + vec4 Ao = vec4( 1.0, -1.0, -1.0, 1.0 ); + vec4 Bo = vec4( 1.0, 1.0, -1.0,-1.0 ); + vec4 Co = vec4( 1.5, 0.5, -0.5, 0.5 ); + vec4 Ax = vec4( 1.0, -1.0, -1.0, 1.0 ); + vec4 Bx = vec4( 0.5, 2.0, -0.5,-2.0 ); + vec4 Cx = vec4( 1.0, 1.0, -0.5, 0.0 ); + vec4 Ay = vec4( 1.0, -1.0, -1.0, 1.0 ); + vec4 By = vec4( 2.0, 0.5, -2.0,-0.5 ); + vec4 Cy = vec4( 2.0, 0.0, -1.0, 0.5 ); + vec4 Ci = vec4(0.25, 0.25, 0.25, 0.25); + // These inequations define the line below which interpolation occurs. vec4 fx = (Ao*fp.y+Bo*fp.x); vec4 fx_left = (Ax*fp.y+Bx*fp.x); vec4 fx_up = (Ay*fp.y+By*fp.x); - vec4 interp_restriction_lv0 = (ne(e,f) * ne(e,h)); + vec4 interp_restriction_lv0 = vec4(notEqual(e,f)) * vec4(notEqual(e,h)); vec4 interp_restriction_lv1 = interp_restriction_lv0; #ifdef CORNER_B - interp_restriction_lv1 = (interp_restriction_lv0 * ( ge(f,b) * ge(h,d) + lt(e,i) * ge(f,i4) * ge(h,i5) + lt(e,g) + lt(e,c) ) ); + interp_restriction_lv1 = (interp_restriction_lv0 * ( neq(f,b) * neq(h,d) + eq(e,i) * neq(f,i4) * neq(h,i5) + eq(e,g) + eq(e,c) ) ); #endif #ifdef CORNER_D vec4 c1 = i4.yzwx; vec4 g0 = i5.wxyz; - interp_restriction_lv1 = (interp_restriction_lv0 * ( ge(f,b) * ge(h,d) + lt(e,i) * ge(f,i4) * ge(h,i5) + lt(e,g) + lt(e,c) ) * (ne(f,f4) * ne(f,i) + ne(h,h5) * ne(h,i) + ne(h,g) + ne(f,c) + lt(b,c1) * lt(d,g0))); + interp_restriction_lv1 = (interp_restriction_lv0 * ( neq(f,b) * neq(h,d) + eq(e,i) * neq(f,i4) * neq(h,i5) + eq(e,g) + eq(e,c) ) * (vec4(notEqual(f,f4)) * vec4(notEqual(f,i)) + vec4(notEqual(h,h5)) * vec4(notEqual(h,i)) + vec4(notEqual(h,g)) + vec4(notEqual(f,c)) + eq(b,c1) * eq(d,g0))); #endif #ifdef CORNER_C - interp_restriction_lv1 = (interp_restriction_lv0 * ( ge(f,b) * ge(f,c) + ge(h,d) * ge(h,g) + lt(e,i) * (ge(f,f4) * ge(f,i4) + ge(h,h5) * ge(h,i5)) + lt(e,g) + lt(e,c)) ); + interp_restriction_lv1 = (interp_restriction_lv0 * ( neq(f,b) * neq(f,c) + neq(h,d) * neq(h,g) + eq(e,i) * (neq(f,f4) * neq(f,i4) + neq(h,h5) * neq(h,i5)) + eq(e,g) + eq(e,c)) ); #endif - vec4 interp_restriction_lv2_left = (ne(e,g) * ne(d,g)); - vec4 interp_restriction_lv2_up = (ne(e,c) * ne(b,c)); + vec4 interp_restriction_lv2_left = vec4(notEqual(e,g)) * vec4(notEqual(d,g)); + vec4 interp_restriction_lv2_up = vec4(notEqual(e,c)) * vec4(notEqual(b,c)); vec4 fx45i = saturate((fx + delta -Co - Ci) / (2.0 * delta )); vec4 fx45 = saturate((fx + delta -Co ) / (2.0 * delta )); @@ -191,26 +166,25 @@ void main() vec4 wd1 = weighted_distance( e, c, g, i, h5, f4, h, f); vec4 wd2 = weighted_distance( h, d, i5, f, i4, b, e, i); - vec4 one = vec4(1.0, 1.0, 1.0, 1.0); - vec4 zero = vec4(0.0, 0.0, 0.0, 0.0); - vec4 edri = le(wd1,wd2) * interp_restriction_lv0; - vec4 edr = lt(wd1,wd2) * interp_restriction_lv1; + vec4 edri = vec4(lessThanEqual(wd1,wd2)) * interp_restriction_lv0; + vec4 edr = vec4(lessThan(wd1,wd2)) * interp_restriction_lv1; + vec4 hcDiff = df(h,c); + vec4 fgDiff = df(f,g); #ifdef CORNER_A - edr = clamp(edr * ((one - edri.yzwx) + (one - edri.wxyz)), 0.0, 1.0); - vec4 edr_left = le(XBR_LV2_COEFFICIENT.xxxx * df(f,g), df(h,c)) * interp_restriction_lv2_left * edr * (one - edri.yzwx) * eq(e,c); - vec4 edr_up = ge(df(f,g), XBR_LV2_COEFFICIENT.xxxx * df(h,c)) * interp_restriction_lv2_up * edr * (one - edri.wxyz) * eq(e,g); -#endif -#ifndef CORNER_A - vec4 edr_left = le(XBR_LV2_COEFFICIENT.xxxx * df(f,g), df(h,c)) * interp_restriction_lv2_left * edr; - vec4 edr_up = ge(df(f,g), XBR_LV2_COEFFICIENT.xxxx * df(h,c)) * interp_restriction_lv2_up * edr; + edr = edr * clamp(((1.0 - edri.yzwx) + (1.0 - edri.wxyz)), 0.0, 1.0); + vec4 edr_left = vec4(lessThanEqual(XBR_LV2_COEFFICIENT.xxxx * df(f,g), df(h,c))) * interp_restriction_lv2_left * edr * (1.0 - edri.yzwx) * eq(e,c); + vec4 edr_up = vec4(greaterThanEqual(df(f,g), XBR_LV2_COEFFICIENT.xxxx * df(h,c))) * interp_restriction_lv2_up * edr * (1.0 - edri.wxyz) * eq(e,g); +#else + vec4 edr_left = vec4(lessThanEqual(XBR_LV2_COEFFICIENT.xxxx * fgDiff, hcDiff)) * interp_restriction_lv2_left * edr; + vec4 edr_up = vec4(greaterThanEqual(fgDiff, XBR_LV2_COEFFICIENT.xxxx * hcDiff)) * interp_restriction_lv2_up * edr; #endif - fx45 = edr * fx45; - fx30 = edr_left * fx30; - fx60 = edr_up * fx60; - fx45i = edri * fx45i; + fx45 = clamp(edr, 0.0, 1.0) * fx45; + fx30 = clamp(edr_left, 0.0, 1.0) * fx30; + fx60 = clamp(edr_up, 0.0, 1.0) * fx60; + fx45i = clamp(edri, 0.0, 1.0) * fx45i; - vec4 px = le(df(e,f), df(e,h)); + vec4 px = vec4(lessThanEqual(df(e,f), df(e,h))); vec4 maximos = max(max(fx30, fx60), max(fx45, fx45i)); @@ -222,7 +196,7 @@ void main() res2 = mix(res2, mix(F.xyz, B.xyz, px.y), maximos.y); res2 = mix(res2, mix(D.xyz, H.xyz, px.w), maximos.w); - vec3 E_mix = (c_df(E.xyz, res2) >= c_df(E.xyz, res1)) ? one.xyz : zero.xyz; + vec3 E_mix = (c_df(E.xyz, res2) >= c_df(E.xyz, res1)) ? vec3(1.0, 1.0, 1.0) : vec3(0.0, 0.0, 0.0); vec3 res = mix(res1, res2, E_mix); gl_FragColor = vec4(res, 1.0); diff --git a/src/osd/modules/render/bgfx/shaders/chains/xbr/fs_xbr-lv3-noblend.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr/fs_xbr-lv3-noblend.sc index 05cf1124896..8d65128f8fc 100644 --- a/src/osd/modules/render/bgfx/shaders/chains/xbr/fs_xbr-lv3-noblend.sc +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr/fs_xbr-lv3-noblend.sc @@ -39,13 +39,11 @@ uniform vec4 u_tex_size0; SAMPLER2D(decal, 0); -// Uncomment just one of the three params below to choose the corner detection -#define CORNER_A +// Uncomment just one of the four params below to choose the corner detection +//#define CORNER_A //#define CORNER_B //#define CORNER_C -//#define CORNER_D - -const vec4 Y = vec4(0.2126, 0.7152, 0.0722, 0.0); +#define CORNER_D vec4 df(vec4 A, vec4 B) { @@ -54,53 +52,27 @@ vec4 df(vec4 A, vec4 B) float c_df(vec3 c1, vec3 c2) { - vec3 df = abs(c1 - c2); - return df.r + df.g + df.b; -} - -vec4 ge(vec4 A, vec4 B) -{ - return vec4(greaterThanEqual(A, B)); -} - -vec4 le(vec4 A, vec4 B) -{ - return vec4(lessThanEqual(A, B)); -} - -vec4 lt(vec4 A, vec4 B) -{ - return vec4(lessThan(A, B)); + return dot(abs(c1 - c2), vec3(1.0, 1.0, 1.0)); } vec4 eq(vec4 A, vec4 B) { - return vec4(equal(A, B)); + return vec4(lessThan(df(A, B), XBR_EQ_THRESHOLD.xxxx)); } -vec4 ne(vec4 A, vec4 B) +vec4 eq2(vec4 A, vec4 B) { - return vec4(notEqual(A, B)); + return vec4(lessThan(df(A, B), XBR_EQ_THRESHOLD2.xxxx)); } -vec4 gt(vec4 A, vec4 B) +vec4 neq(vec4 A, vec4 B) { - return vec4(greaterThan(A, B)); + return vec4(greaterThanEqual(df(A, B), XBR_EQ_THRESHOLD.xxxx)); } -vec4 abslt2(vec4 A, vec4 B) +vec4 neq2(vec4 A, vec4 B) { - return lt(df(A, B), XBR_EQ_THRESHOLD2.xxxx); -} - -vec4 absge(vec4 A, vec4 B) -{ - return ge(df(A, B), XBR_EQ_THRESHOLD.xxxx); -} - -vec4 absge2(vec4 A, vec4 B) -{ - return ge(df(A, B), XBR_EQ_THRESHOLD2.xxxx); + return vec4(greaterThanEqual(df(A, B), XBR_EQ_THRESHOLD2.xxxx)); } vec4 weighted_distance(vec4 a, vec4 b, vec4 c, vec4 d, vec4 e, vec4 f, vec4 g, vec4 h) @@ -110,6 +82,8 @@ vec4 weighted_distance(vec4 a, vec4 b, vec4 c, vec4 d, vec4 e, vec4 f, vec4 g, v void main() { + vec4 Y = vec4(0.2126, 0.7152, 0.0722, 0.0); + vec2 fp = fract(v_texcoord0 * u_tex_size0.xy); vec4 A1 = texture2D(decal, v_texcoord1.xw); @@ -140,18 +114,18 @@ void main() vec4 F4 = texture2D(decal, v_texcoord7.xz); vec4 I4 = texture2D(decal, v_texcoord7.xw); - vec4 b = mul(mat4(B, D, H, F), Y); - vec4 c = mul(mat4(C, A, G, I), Y); - vec4 e = mul(mat4(E, E, E, E), Y); + vec4 b = instMul(Y, mat4(B, D, H, F)); + vec4 c = instMul(Y, mat4(C, A, G, I)); + vec4 e = instMul(Y, mat4(E, E, E, E)); vec4 d = b.yzwx; vec4 f = b.wxyz; vec4 g = c.zwxy; vec4 h = b.zwxy; vec4 i = c.wxyz; - vec4 i4 = mul(mat4(I4, C1, A0, G5), Y); - vec4 i5 = mul(mat4(I5, C4, A1, G0), Y); - vec4 h5 = mul(mat4(H5, F4, B1, D0), Y); + vec4 i4 = instMul(Y, mat4(I4, C1, A0, G5)); + vec4 i5 = instMul(Y, mat4(I5, C4, A1, G0)); + vec4 h5 = instMul(Y, mat4(H5, F4, B1, D0)); vec4 f4 = h5.yzwx; vec4 c4 = i5.yzwx; @@ -181,50 +155,55 @@ void main() vec4 Cw = vec4( 5.0, -1.0, -3.0, 3.0 ); // These inequations define the line below which interpolation occurs. - vec4 fx = gt(Ao * fp.y + Bo * fp.x, Co); - vec4 fx_left = gt(Ax * fp.y + Bx * fp.x, Cx); - vec4 fx_up = gt(Ay * fp.y + By * fp.x, Cy); - vec4 fx3_left= gt(Az * fp.y + Bz * fp.x, Cz); - vec4 fx3_up = gt(Aw * fp.y + Bw * fp.x, Cw); + vec4 fx = vec4(greaterThan(Ao * fp.y + Bo * fp.x, Co)); + vec4 fx_left = vec4(greaterThan(Ax * fp.y + Bx * fp.x, Cx)); + vec4 fx_up = vec4(greaterThan(Ay * fp.y + By * fp.x, Cy)); + vec4 fx3_left= vec4(greaterThan(Az * fp.y + Bz * fp.x, Cz)); + vec4 fx3_up = vec4(greaterThan(Aw * fp.y + Bw * fp.x, Cw)); - vec4 interp_restriction_lv0 = (ne(e,f) * ne(e,h)); + vec4 interp_restriction_lv0 = (vec4(notEqual(e,f)) * vec4(notEqual(e,h))); // It uses CORNER_C if none of the others are defined. #ifdef CORNER_A vec4 interp_restriction_lv1 = interp_restriction_lv0; #elif CORNER_B - vec4 interp_restriction_lv1 = (interp_restriction_lv0 * (ge(f,b) * ge(h,d) + lt(e,i) * ge(f,i4) * ge(h,i5) + lt(e,g) + lt(e,c))); + vec4 interp_restriction_lv1 = (interp_restriction_lv0 * (neq(f,b) * neq(h,d) + eq(e,i) * neq(f,i4) * neq(h,i5) + eq(e,g) + eq(e,c))); #elif CORNER_D - vec4 interp_restriction_lv1 = (interp_restriction_lv0 * (ge(f,b) * ge(h,d) + lt(e,i) * ge(f,i4) * ge(h,i5) + lt(e,g) + lt(e,c)) * (ne(f,f4) * ne(f,i) + ne(h,h5) * ne(h,i) + ne(h,g) + ne(f,c) + lt(b,c1) * lt(d,g0))); + vec4 interp_restriction_lv1 = (interp_restriction_lv0 * (neq(f,b) * neq(h,d) + eq(e,i) * neq(f,i4) * neq(h,i5) + eq(e,g) + eq(e,c)) * (vec4(notEqual(f,f4)) * vec4(notEqual(f,i)) + vec4(notEqual(h,h5)) * vec4(notEqual(h,i)) + vec4(notEqual(h,g)) + vec4(notEqual(f,c)) + eq(b,c1) * eq(d,g0))); #elif CORNER_C - vec4 interp_restriction_lv1 = (interp_restriction_lv0 * (ge(f,b) * ge(f,c) + ge(h,d) * ge(h,g) + lt(e,i) * (ge(f,f4) * ge(f,i4) + ge(h,h5) * ge(h,i5)) + lt(e,g) + lt(e,c))); + vec4 interp_restriction_lv1 = (interp_restriction_lv0 * (neq(f,b) * neq(f,c) + neq(h,d) * neq(h,g) + eq(e,i) * (neq(f,f4) * neq(f,i4) + neq(h,h5) * neq(h,i5)) + eq(e,g) + eq(e,c))); #endif interp_restriction_lv1 = clamp(interp_restriction_lv1, 0.0, 1.0); - vec4 interp_restriction_lv2_left = ne(e,g) * ne(d,g); - vec4 interp_restriction_lv2_up = ne(e,c) * ne(b,c); - vec4 interp_restriction_lv3_left = abslt2(g,g0) * absge2(d0,g0); - vec4 interp_restriction_lv3_up = abslt2(c,c1) * absge2(b1,c1); + vec4 interp_restriction_lv2_left = vec4(notEqual(e,g)) * vec4(notEqual(d,g)); + vec4 interp_restriction_lv2_up = vec4(notEqual(e,c)) * vec4(notEqual(b,c)); + vec4 interp_restriction_lv3_left = eq2(g,g0) * vec4(notEqual(d0,g0)); + vec4 interp_restriction_lv3_up = eq2(c,c1) * vec4(notEqual(b1,c1)); vec4 wd1 = weighted_distance(e, c, g, i, h5, f4, h, f); vec4 wd2 = weighted_distance(h, d, i5, f, i4, b, e, i); vec4 one = vec4(1.0, 1.0, 1.0, 1.0); vec4 zero = vec4(0.0, 0.0, 0.0, 0.0); - vec4 edri = le(wd1,wd2) * interp_restriction_lv1; - vec4 edr = clamp(lt(wd1,wd2) * interp_restriction_lv1 * ((one - edri.yzwx) + (one - edri.wxyz)), 0.0, 1.0); - vec4 edr_left = le(XBR_LV2_COEFFICIENT.xxxx * df(f,g), df(h,c)) * interp_restriction_lv2_left * edr * (one - edri.yzwx) * lt(e,c); - vec4 edr_up = ge(df(f,g), XBR_LV2_COEFFICIENT.xxxx * df(h,c)) * interp_restriction_lv2_up * edr * (one - edri.wxyz) * lt(e,g); + + vec4 edri = vec4(lessThanEqual(wd1,wd2)) * interp_restriction_lv1; + vec4 edr = vec4(lessThan(wd1,wd2)) * interp_restriction_lv1 * ((1.0 - edri.yzwx) + (1.0 - edri.wxyz)); + edr = clamp(edr, 0.0, 1.0); + + vec4 hcDiff = df(h,c); + vec4 fgDiff = df(f,g); + vec4 edr_left = vec4(lessThanEqual(XBR_LV2_COEFFICIENT.xxxx * fgDiff, hcDiff)) * interp_restriction_lv2_left * edr * (1.0 - edri.yzwx) * eq(e,c); + vec4 edr_up = vec4(greaterThanEqual(fgDiff, XBR_LV2_COEFFICIENT.xxxx * hcDiff)) * interp_restriction_lv2_up * edr * (1.0 - edri.wxyz) * eq(e,g); vec4 edr3_left = interp_restriction_lv3_left; vec4 edr3_up = interp_restriction_lv3_up; - vec4 nc = clamp((edr * fx + edr_left * (fx_left + edr3_left * fx3_left * lt(e,c4)) + edr_up * (fx_up + edr3_up * fx3_up * lt(e,g5))), 0.0, 1.0); + vec4 nc = edr * (fx + edr_left * (fx_left + edr3_left * fx3_left * eq(e,c4)) + edr_up * (fx_up + edr3_up * fx3_up * eq(e,g5))); - vec4 px = le(df(e,f), df(e,h)); + bvec4 px = lessThanEqual(df(e,f), df(e,h)); - vec3 res1 = nc.x > 0.0 ? px.x > 0.0 ? F.xyz : H.xyz : nc.y > 0.0 ? px.y > 0.0 ? B.xyz : F.xyz : nc.z > 0.0 ? px.z > 0.0 ? D.xyz : B.xyz : nc.w > 0.0 ? px.w > 0.0 ? H.xyz : D.xyz : E.xyz; - vec3 res2 = nc.w > 0.0 ? px.w > 0.0 ? H.xyz : D.xyz : nc.z > 0.0 ? px.z > 0.0 ? D.xyz : B.xyz : nc.y > 0.0 ? px.y > 0.0 ? B.xyz : F.xyz : nc.x > 0.0 ? px.x > 0.0 ? F.xyz : H.xyz : E.xyz; + vec3 res1 = nc.x > 0.0 ? px.x ? F.xyz : H.xyz : nc.y > 0.0 ? px.y ? B.xyz : F.xyz : nc.z > 0.0 ? px.z ? D.xyz : B.xyz : nc.w > 0.0 ? px.w ? H.xyz : D.xyz : E.xyz; + vec3 res2 = nc.w > 0.0 ? px.w ? H.xyz : D.xyz : nc.z > 0.0 ? px.z ? D.xyz : B.xyz : nc.y > 0.0 ? px.y ? B.xyz : F.xyz : nc.x > 0.0 ? px.x ? F.xyz : H.xyz : E.xyz; vec2 df12 = abs(mul(mat3(res1, res2, zero.xyz), Y.xyz).xy - e.xy); diff --git a/src/osd/modules/render/bgfx/shaders/chains/xbr/fs_xbr-lv3.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr/fs_xbr-lv3.sc index b2fd0d94714..162461d145b 100644 --- a/src/osd/modules/render/bgfx/shaders/chains/xbr/fs_xbr-lv3.sc +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr/fs_xbr-lv3.sc @@ -38,10 +38,13 @@ uniform vec4 XBR_LV2_COEFFICIENT; uniform vec4 u_tex_size0; -SAMPLER2D(decal, 0); +// Uncomment just one of the four params below to choose the corner detection +//#define CORNER_A +//#define CORNER_B +#define CORNER_C +//#define CORNER_D -const vec4 yuv = vec4(0.299, 0.587, 0.114, 0.0); -const vec4 delta = vec4(0.4, 0.4, 0.4, 0.4); +SAMPLER2D(decal, 0); vec4 df(vec4 A, vec4 B) { @@ -50,53 +53,27 @@ vec4 df(vec4 A, vec4 B) float c_df(vec3 c1, vec3 c2) { - vec3 df = abs(c1 - c2); - return df.r + df.g + df.b; -} - -vec4 ge(vec4 A, vec4 B) -{ - return vec4(greaterThanEqual(A, B)); -} - -vec4 le(vec4 A, vec4 B) -{ - return vec4(lessThanEqual(A, B)); -} - -vec4 lt(vec4 A, vec4 B) -{ - return vec4(lessThan(A, B)); + return dot(abs(c1 - c2), vec3(1.0, 1.0, 1.0)); } vec4 eq(vec4 A, vec4 B) { - return vec4(equal(A, B)); + return vec4(lessThan(df(A, B), XBR_EQ_THRESHOLD.xxxx)); } -vec4 ne(vec4 A, vec4 B) +vec4 eq2(vec4 A, vec4 B) { - return vec4(notEqual(A, B)); + return vec4(lessThan(df(A, B), XBR_EQ_THRESHOLD2.xxxx)); } -vec4 abslt(vec4 A, vec4 B) +vec4 neq(vec4 A, vec4 B) { - return lt(df(A, B), XBR_EQ_THRESHOLD.xxxx); + return vec4(greaterThanEqual(df(A, B), XBR_EQ_THRESHOLD.xxxx)); } -vec4 abslt2(vec4 A, vec4 B) +vec4 neq2(vec4 A, vec4 B) { - return lt(df(A, B), XBR_EQ_THRESHOLD2.xxxx); -} - -vec4 absge(vec4 A, vec4 B) -{ - return ge(df(A, B), XBR_EQ_THRESHOLD.xxxx); -} - -vec4 absge2(vec4 A, vec4 B) -{ - return ge(df(A, B), XBR_EQ_THRESHOLD2.xxxx); + return vec4(greaterThanEqual(df(A, B), XBR_EQ_THRESHOLD2.xxxx)); } vec4 weighted_distance(vec4 a, vec4 b, vec4 c, vec4 d, vec4 e, vec4 f, vec4 g, vec4 h) @@ -106,6 +83,9 @@ vec4 weighted_distance(vec4 a, vec4 b, vec4 c, vec4 d, vec4 e, vec4 f, vec4 g, v void main() { + vec4 yuv = vec4(0.299, 0.587, 0.114, 0.0); + vec4 delta = vec4(0.4, 0.4, 0.4, 0.4); + vec2 fp = fract(v_texcoord0 * u_tex_size0.xy); vec4 A1 = texture2D(decal, v_texcoord1.xw); @@ -136,18 +116,19 @@ void main() vec4 F4 = texture2D(decal, v_texcoord7.xz); vec4 I4 = texture2D(decal, v_texcoord7.xw); - vec4 b = mul(mat4(B, D, H, F), XBR_Y_WEIGHT.xxxx * yuv); - vec4 c = mul(mat4(C, A, G, I), XBR_Y_WEIGHT.xxxx * yuv); - vec4 e = mul(mat4(E, E, E, E), XBR_Y_WEIGHT.xxxx * yuv); + vec4 weightVec = XBR_Y_WEIGHT.xxxx * yuv; + vec4 b = instMul(weightVec, mat4(B, D, H, F)); + vec4 c = instMul(weightVec, mat4(C, A, G, I)); + vec4 e = instMul(weightVec, mat4(E, E, E, E)); vec4 d = b.yzwx; vec4 f = b.wxyz; vec4 g = c.zwxy; vec4 h = b.zwxy; vec4 i = c.wxyz; - vec4 i4 = mul(mat4(I4, C1, A0, G5), XBR_Y_WEIGHT.xxxx * yuv); - vec4 i5 = mul(mat4(I5, C4, A1, G0), XBR_Y_WEIGHT.xxxx * yuv); - vec4 h5 = mul(mat4(H5, F4, B1, D0), XBR_Y_WEIGHT.xxxx * yuv); + vec4 i4 = instMul(weightVec, mat4(I4, C1, A0, G5)); + vec4 i5 = instMul(weightVec, mat4(I5, C4, A1, G0)); + vec4 h5 = instMul(weightVec, mat4(H5, F4, B1, D0)); vec4 f4 = h5.yzwx; vec4 c1 = i4.yzwx; @@ -179,25 +160,25 @@ void main() vec4 fx3_left= (Az * fp.y + Bz * fp.x); vec4 fx3_up = (Aw * fp.y + Bw * fp.x); - vec4 interp_restriction_lv0 = (ne(e,f) * ne(e,h)); + vec4 interp_restriction_lv0 = (vec4(notEqual(e,f)) * vec4(notEqual(e,h))); // It uses CORNER_C if none of the others are defined. #ifdef CORNER_A vec4 interp_restriction_lv1 = interp_restriction_lv0; #elif CORNER_B - vec4 interp_restriction_lv1 = (interp_restriction_lv0 * ( ge(f,b) * ge(h,d) + lt(e,i) * ge(f,i4) * ge(h,i5) + lt(e,g) + lt(e,c) ) ); + vec4 interp_restriction_lv1 = (interp_restriction_lv0 * ( neq(f,b) * neq(h,d) + eq(e,i) * neq(f,i4) * neq(h,i5) + eq(e,g) + eq(e,c) ) ); #elif CORNER_D - vec4 interp_restriction_lv1 = (interp_restriction_lv0 * ( ge(f,b) * ge(h,d) + lt(e,i) * ge(f,i4) * ge(h,i5) + lt(e,g) + lt(e,c) ) * (f!=f4 * f!=i + h!=h5 * h!=i + h!=g + f!=c + lt(b,c1) * lt(d,g0))); + vec4 interp_restriction_lv1 = (interp_restriction_lv0 * ( neq(f,b) * neq(h,d) + eq(e,i) * neq(f,i4) * neq(h,i5) + eq(e,g) + eq(e,c) ) * (vec4(notEqual(f,f4)) * vec4(notEqual(f,i)) + vec4(notEqual(h,h5)) * vec4(notEqual(h,i)) + vec4(notEqual(h,g)) + vec4(notEqual(f,c)) + eq(b,c1) * eq(d,g0))); #else - vec4 interp_restriction_lv1 = (interp_restriction_lv0 * ( ge(f,b) * ge(f,c) + ge(h,d) * ge(h,g) + lt(e,i) * (ge(f,f4) * ge(f,i4) + ge(h,h5) * ge(h,i5)) + lt(e,g) + lt(e,c)) ); + vec4 interp_restriction_lv1 = (interp_restriction_lv0 * ( neq(f,b) * neq(f,c) + neq(h,d) * neq(h,g) + eq(e,i) * (neq(f,f4) * neq(f,i4) + neq(h,h5) * neq(h,i5)) + eq(e,g) + eq(e,c)) ); #endif interp_restriction_lv1 = clamp(interp_restriction_lv1, 0.0, 1.0); - - vec4 interp_restriction_lv2_left = ne(e,g) * ne(d,g); - vec4 interp_restriction_lv2_up = ne(e,c) * ne(b,c); - vec4 interp_restriction_lv3_left = abslt2(g,g0) * absge2(d0,g0); - vec4 interp_restriction_lv3_up = abslt2(c,c1) * absge2(b1,c1); + + vec4 interp_restriction_lv2_left = vec4(notEqual(e,g)) * vec4(notEqual(d,g)); + vec4 interp_restriction_lv2_up = vec4(notEqual(e,c)) * vec4(notEqual(b,c)); + vec4 interp_restriction_lv3_left = eq2(g,g0) * neq2(d0,g0); + vec4 interp_restriction_lv3_up = eq2(c,c1) * neq2(b1,c1); vec4 fx45 = smoothstep(Co - delta, Co + delta, fx); vec4 fx30 = smoothstep(Cx - delta, Cx + delta, fx_left); @@ -205,22 +186,22 @@ void main() vec4 fx15 = smoothstep(Cz - delta, Cz + delta, fx3_left); vec4 fx75 = smoothstep(Cw - delta, Cw + delta, fx3_up); - vec4 edr = lt(weighted_distance(e, c, g, i, h5, f4, h, f), weighted_distance( h, d, i5, f, i4, b, e, i)) * interp_restriction_lv1; - vec4 edr_left = le(XBR_LV2_COEFFICIENT.xxxx * df(f,g), df(h,c)) * interp_restriction_lv2_left; - vec4 edr_up = ge(df(f,g), XBR_LV2_COEFFICIENT.xxxx * df(h,c)) * interp_restriction_lv2_up; + vec4 edr = vec4(lessThan(weighted_distance(e, c, g, i, h5, f4, h, f), weighted_distance( h, d, i5, f, i4, b, e, i))) * interp_restriction_lv1; + vec4 edr_left = vec4(lessThanEqual(XBR_LV2_COEFFICIENT.xxxx * df(f,g), df(h,c))) * interp_restriction_lv2_left; + vec4 edr_up = vec4(greaterThanEqual(df(f,g), XBR_LV2_COEFFICIENT.xxxx * df(h,c))) * interp_restriction_lv2_up; vec4 edr3_left = interp_restriction_lv3_left; vec4 edr3_up = interp_restriction_lv3_up; - vec4 nc45 = edr * fx45; - vec4 nc30 = edr * edr_left * fx30; - vec4 nc60 = edr * edr_up * fx60; - vec4 nc15 = edr * edr_left * edr3_left * fx15; - vec4 nc75 = edr * edr_up * edr3_up * fx75; + vec4 nc45 = (edr * fx45); + vec4 nc30 = (edr * edr_left * fx30); + vec4 nc60 = (edr * edr_up * fx60); + vec4 nc15 = (edr * edr_left * edr3_left * fx15); + vec4 nc75 = (edr * edr_up * edr3_up * fx75); - vec4 px = le(df(e,f), df(e,h)); + bvec4 px = lessThanEqual(df(e,f), df(e,h)); - vec4 nc = nc75 + nc15 + nc30 + nc60 + nc45; + vec4 nc = clamp(nc75 + nc15 + nc30 + nc60 + nc45, 0.0, 1.0); vec4 final45 = nc45 * fx45; vec4 final30 = nc30 * fx30; @@ -232,17 +213,17 @@ void main() float blend1; vec3 pix1; - if (nc.x > 0.0) {pix1 = px.x > 0.0 ? F.xyz : H.xyz; blend1 = maximo.x;} - else if (nc.y > 0.0) {pix1 = px.y > 0.0 ? B.xyz : F.xyz; blend1 = maximo.y;} - else if (nc.z > 0.0) {pix1 = px.z > 0.0 ? D.xyz : B.xyz; blend1 = maximo.z;} - else if (nc.w > 0.0) {pix1 = px.w > 0.0 ? H.xyz : D.xyz; blend1 = maximo.w;} + if (nc.x > 0.0) {pix1 = px.x ? F.xyz : H.xyz; blend1 = maximo.x;} + else if (nc.y > 0.0) {pix1 = px.y ? B.xyz : F.xyz; blend1 = maximo.y;} + else if (nc.z > 0.0) {pix1 = px.z ? D.xyz : B.xyz; blend1 = maximo.z;} + else if (nc.w > 0.0) {pix1 = px.w ? H.xyz : D.xyz; blend1 = maximo.w;} float blend2; vec3 pix2; - if (nc.w > 0.0) {pix2 = px.w > 0.0 ? H.xyz : D.xyz; blend2 = maximo.w;} - else if (nc.z > 0.0) {pix2 = px.z > 0.0 ? D.xyz : B.xyz; blend2 = maximo.z;} - else if (nc.y > 0.0) {pix2 = px.y > 0.0 ? B.xyz : F.xyz; blend2 = maximo.y;} - else if (nc.x > 0.0) {pix2 = px.x > 0.0 ? F.xyz : H.xyz; blend2 = maximo.x;} + if (nc.w > 0.0) {pix2 = px.w ? H.xyz : D.xyz; blend2 = maximo.w;} + else if (nc.z > 0.0) {pix2 = px.z ? D.xyz : B.xyz; blend2 = maximo.z;} + else if (nc.y > 0.0) {pix2 = px.y ? B.xyz : F.xyz; blend2 = maximo.y;} + else if (nc.x > 0.0) {pix2 = px.x ? F.xyz : H.xyz; blend2 = maximo.x;} vec3 res1 = mix(E.xyz, pix1, blend1); vec3 res2 = mix(E.xyz, pix2, blend2); diff --git a/src/osd/modules/render/bgfx/shaders/chains/xbr/vs_xbr-lv2-3d.sc b/src/osd/modules/render/bgfx/shaders/chains/xbr/vs_xbr-lv2-3d.sc index 476e11da6ea..a3bb4330f45 100644 --- a/src/osd/modules/render/bgfx/shaders/chains/xbr/vs_xbr-lv2-3d.sc +++ b/src/osd/modules/render/bgfx/shaders/chains/xbr/vs_xbr-lv2-3d.sc @@ -1,5 +1,5 @@ $input a_position, a_texcoord0, a_color0 -$output v_texcoord0, v_texcoord1, v_color0 +$output v_texcoord0, v_texcoord1, v_texcoord2, v_texcoord3, v_texcoord4, v_texcoord5, v_texcoord6, v_texcoord7, v_color0 // license:BSD-3-Clause // copyright-holders:Dario Manesku @@ -18,6 +18,12 @@ void main() vec2 ps = XBR_RES.xx / u_tex_size0.xy; float dx = ps.x; float dy = ps.y; - v_texcoord1 = vec4(dx, 0, 0, dy); // F H + v_texcoord1 = v_texcoord0.xxxy + vec4( -dx, 0.0, dx, -2.0*dy); // A1 B1 C1 + v_texcoord2 = v_texcoord0.xxxy + vec4( -dx, 0.0, dx, -dy); // A B C + v_texcoord3 = v_texcoord0.xxxy + vec4( -dx, 0.0, dx, 0.0); // D E F + v_texcoord4 = v_texcoord0.xxxy + vec4( -dx, 0.0, dx, dy); // G H I + v_texcoord5 = v_texcoord0.xxxy + vec4( -dx, 0.0, dx, 2.0*dy); // G5 H5 I5 + v_texcoord6 = v_texcoord0.xyyy + vec4(-2.0*dx, -dy, 0.0, dy); // A0 D0 G0 + v_texcoord7 = v_texcoord0.xyyy + vec4( 2.0*dx, -dy, 0.0, dy); // C4 F4 I4 v_color0 = a_color0; }