1162 lines
442 KiB
JavaScript
1162 lines
442 KiB
JavaScript
![]() |
var qd=Object.defineProperty,Kd=Object.defineProperties;var Zd=Object.getOwnPropertyDescriptors;var ir=Object.getOwnPropertySymbols;var $h=Object.prototype.hasOwnProperty,jh=Object.prototype.propertyIsEnumerable;var Wh=(m,et,pt)=>et in m?qd(m,et,{enumerable:!0,configurable:!0,writable:!0,value:pt}):m[et]=pt,bt=(m,et)=>{for(var pt in et||(et={}))$h.call(et,pt)&&Wh(m,pt,et[pt]);if(ir)for(var pt of ir(et))jh.call(et,pt)&&Wh(m,pt,et[pt]);return m},Qi=(m,et)=>Kd(m,Zd(et));var zn=(m,et)=>{var pt={};for(var Rt in m)$h.call(m,Rt)&&et.indexOf(Rt)<0&&(pt[Rt]=m[Rt]);if(m!=null&&ir)for(var Rt of ir(m))et.indexOf(Rt)<0&&jh.call(m,Rt)&&(pt[Rt]=m[Rt]);return pt};/*!
|
||
|
* pixi.js - v7.2.4
|
||
|
* Compiled Thu, 06 Apr 2023 19:36:45 UTC
|
||
|
*
|
||
|
* pixi.js is licensed under the MIT License.
|
||
|
* http://www.opensource.org/licenses/mit-license
|
||
|
*/var PIXI=function(m){var zh;"use strict";var et=(e=>(e[e.WEBGL_LEGACY=0]="WEBGL_LEGACY",e[e.WEBGL=1]="WEBGL",e[e.WEBGL2=2]="WEBGL2",e))(et||{}),pt=(e=>(e[e.UNKNOWN=0]="UNKNOWN",e[e.WEBGL=1]="WEBGL",e[e.CANVAS=2]="CANVAS",e))(pt||{}),Rt=(e=>(e[e.COLOR=16384]="COLOR",e[e.DEPTH=256]="DEPTH",e[e.STENCIL=1024]="STENCIL",e))(Rt||{}),G=(e=>(e[e.NORMAL=0]="NORMAL",e[e.ADD=1]="ADD",e[e.MULTIPLY=2]="MULTIPLY",e[e.SCREEN=3]="SCREEN",e[e.OVERLAY=4]="OVERLAY",e[e.DARKEN=5]="DARKEN",e[e.LIGHTEN=6]="LIGHTEN",e[e.COLOR_DODGE=7]="COLOR_DODGE",e[e.COLOR_BURN=8]="COLOR_BURN",e[e.HARD_LIGHT=9]="HARD_LIGHT",e[e.SOFT_LIGHT=10]="SOFT_LIGHT",e[e.DIFFERENCE=11]="DIFFERENCE",e[e.EXCLUSION=12]="EXCLUSION",e[e.HUE=13]="HUE",e[e.SATURATION=14]="SATURATION",e[e.COLOR=15]="COLOR",e[e.LUMINOSITY=16]="LUMINOSITY",e[e.NORMAL_NPM=17]="NORMAL_NPM",e[e.ADD_NPM=18]="ADD_NPM",e[e.SCREEN_NPM=19]="SCREEN_NPM",e[e.NONE=20]="NONE",e[e.SRC_OVER=0]="SRC_OVER",e[e.SRC_IN=21]="SRC_IN",e[e.SRC_OUT=22]="SRC_OUT",e[e.SRC_ATOP=23]="SRC_ATOP",e[e.DST_OVER=24]="DST_OVER",e[e.DST_IN=25]="DST_IN",e[e.DST_OUT=26]="DST_OUT",e[e.DST_ATOP=27]="DST_ATOP",e[e.ERASE=26]="ERASE",e[e.SUBTRACT=28]="SUBTRACT",e[e.XOR=29]="XOR",e))(G||{}),zt=(e=>(e[e.POINTS=0]="POINTS",e[e.LINES=1]="LINES",e[e.LINE_LOOP=2]="LINE_LOOP",e[e.LINE_STRIP=3]="LINE_STRIP",e[e.TRIANGLES=4]="TRIANGLES",e[e.TRIANGLE_STRIP=5]="TRIANGLE_STRIP",e[e.TRIANGLE_FAN=6]="TRIANGLE_FAN",e))(zt||{}),C=(e=>(e[e.RGBA=6408]="RGBA",e[e.RGB=6407]="RGB",e[e.RG=33319]="RG",e[e.RED=6403]="RED",e[e.RGBA_INTEGER=36249]="RGBA_INTEGER",e[e.RGB_INTEGER=36248]="RGB_INTEGER",e[e.RG_INTEGER=33320]="RG_INTEGER",e[e.RED_INTEGER=36244]="RED_INTEGER",e[e.ALPHA=6406]="ALPHA",e[e.LUMINANCE=6409]="LUMINANCE",e[e.LUMINANCE_ALPHA=6410]="LUMINANCE_ALPHA",e[e.DEPTH_COMPONENT=6402]="DEPTH_COMPONENT",e[e.DEPTH_STENCIL=34041]="DEPTH_STENCIL",e))(C||{}),Re=(e=>(e[e.TEXTURE_2D=3553]="TEXTURE_2D",e[e.TEXTURE_CUBE_MAP=34067]="TEXTURE_CUBE_MAP",e[e.TEXTURE_2D_ARRAY=35866]="TEXTURE_2D_ARRAY",e[e.TEXTURE_CUBE_MAP_POSITIVE_X=34069]="TEXTURE_CUBE_MAP_POSITIVE_X",e[e.TEXTURE_CUBE_MAP_NEGATIVE_X=34070]="TEXTURE_CUBE_MAP_NEGATIVE_X",e[e.TEXTURE_CUBE_MAP_POSITIVE_Y=34071]="TEXTURE_CUBE_MAP_POSITIVE_Y",e[e.TEXTURE_CUBE_MAP_NEGATIVE_Y=34072]="TEXTURE_CUBE_MAP_NEGATIVE_Y",e[e.TEXTURE_CUBE_MAP_POSITIVE_Z=34073]="TEXTURE_CUBE_MAP_POSITIVE_Z",e[e.TEXTURE_CUBE_MAP_NEGATIVE_Z=34074]="TEXTURE_CUBE_MAP_NEGATIVE_Z",e))(Re||{}),k=(e=>(e[e.UNSIGNED_BYTE=5121]="UNSIGNED_BYTE",e[e.UNSIGNED_SHORT=5123]="UNSIGNED_SHORT",e[e.UNSIGNED_SHORT_5_6_5=33635]="UNSIGNED_SHORT_5_6_5",e[e.UNSIGNED_SHORT_4_4_4_4=32819]="UNSIGNED_SHORT_4_4_4_4",e[e.UNSIGNED_SHORT_5_5_5_1=32820]="UNSIGNED_SHORT_5_5_5_1",e[e.UNSIGNED_INT=5125]="UNSIGNED_INT",e[e.UNSIGNED_INT_10F_11F_11F_REV=35899]="UNSIGNED_INT_10F_11F_11F_REV",e[e.UNSIGNED_INT_2_10_10_10_REV=33640]="UNSIGNED_INT_2_10_10_10_REV",e[e.UNSIGNED_INT_24_8=34042]="UNSIGNED_INT_24_8",e[e.UNSIGNED_INT_5_9_9_9_REV=35902]="UNSIGNED_INT_5_9_9_9_REV",e[e.BYTE=5120]="BYTE",e[e.SHORT=5122]="SHORT",e[e.INT=5124]="INT",e[e.FLOAT=5126]="FLOAT",e[e.FLOAT_32_UNSIGNED_INT_24_8_REV=36269]="FLOAT_32_UNSIGNED_INT_24_8_REV",e[e.HALF_FLOAT=36193]="HALF_FLOAT",e))(k||{}),ts=(e=>(e[e.FLOAT=0]="FLOAT",e[e.INT=1]="INT",e[e.UINT=2]="UINT",e))(ts||{}),ee=(e=>(e[e.NEAREST=0]="NEAREST",e[e.LINEAR=1]="LINEAR",e))(ee||{}),ie=(e=>(e[e.CLAMP=33071]="CLAMP",e[e.REPEAT=10497]="REPEAT",e[e.MIRRORED_REPEAT=33648]="MIRRORED_REPEAT",e))(ie||{}),Wt=(e=>(e[e.OFF=0]="OFF",e[e.POW2=1]="POW2",e[e.ON=2]="ON",e[e.ON_MANUAL=3]="ON_MANUAL",e))(Wt||{}),Nt=(e=>(e[e.NPM=0]="NPM",e[e.UNPACK=1]="UNPACK",e[e.PMA=2]="PMA",e[e.NO_PREMULTIPLIED_ALPHA=0]="NO_PREMULTIPLIED_ALPHA",e[e.PREMULTIPLY_ON_UPLOAD=1]="PREMULTIPLY_ON_UPLOAD",e[e.PREMULTIPLIED_ALPHA=2]="PREMULTIPLIED_ALPHA",e))(Nt||{}),$t=(e=>(e[e.NO=0]="NO",e[e.YES=1]="YES",e[e.AUTO=2]="AUTO",e[e.BLEND=0]="BLEND",e[e.CLEAR=1]="CLEAR",e[e.BLIT=2]="BLIT",e))($t||{}),es=(e=>(e[e.AUTO=0]="AUTO",e[e.MANUAL=1]="MANUAL",e))(es||{}),Pt=(e=>(e.LOW="lowp",e.MEDIUM="mediump",e.HIGH="highp",e))(Pt||{}),ct=(e=>(e[e.NONE=0]="NONE",e[e.SCISSOR=1]="SCISSOR",e[e.STE
|
||
|
`," "],Tl=["{","}","|","\\","^","`"].concat(bl),dr=["'"].concat(Tl),fo=["%","/","?",";","#"].concat(dr),po=["/","?","#"],El=255,mo=/^[+a-z0-9A-Z_-]{0,63}$/,wl=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,Sl={javascript:!0,"javascript:":!0},fr={javascript:!0,"javascript:":!0},We={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0};function fi(e,t,i){if(e&&se.isObject(e)&&e instanceof Lt)return e;var s=new Lt;return s.parse(e,t,i),s}Lt.prototype.parse=function(e,t,i){if(!se.isString(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e);var s=e.indexOf("?"),r=s!==-1&&s<e.indexOf("#")?"?":"#",n=e.split(r),o=/\\/g;n[0]=n[0].replace(o,"/"),e=n.join(r);var a=e;if(a=a.trim(),!i&&e.split("#").length===1){var h=xl.exec(a);if(h)return this.path=a,this.href=a,this.pathname=h[1],h[2]?(this.search=h[2],t?this.query=ur.parse(this.search.substr(1)):this.query=this.search.substr(1)):t&&(this.search="",this.query={}),this}var l=yl.exec(a);if(l){l=l[0];var c=l.toLowerCase();this.protocol=c,a=a.substr(l.length)}if(i||l||a.match(/^\/\/[^@\/]+@[^@\/]+/)){var u=a.substr(0,2)==="//";u&&!(l&&fr[l])&&(a=a.substr(2),this.slashes=!0)}if(!fr[l]&&(u||l&&!We[l])){for(var d=-1,f=0;f<po.length;f++){var p=a.indexOf(po[f]);p!==-1&&(d===-1||p<d)&&(d=p)}var _,g;d===-1?g=a.lastIndexOf("@"):g=a.lastIndexOf("@",d),g!==-1&&(_=a.slice(0,g),a=a.slice(g+1),this.auth=decodeURIComponent(_)),d=-1;for(var f=0;f<fo.length;f++){var p=a.indexOf(fo[f]);p!==-1&&(d===-1||p<d)&&(d=p)}d===-1&&(d=a.length),this.host=a.slice(0,d),a=a.slice(d),this.parseHost(),this.hostname=this.hostname||"";var v=this.hostname[0]==="["&&this.hostname[this.hostname.length-1]==="]";if(!v)for(var b=this.hostname.split(/\./),f=0,y=b.length;f<y;f++){var x=b[f];if(!!x&&!x.match(mo)){for(var A="",D=0,R=x.length;D<R;D++)x.charCodeAt(D)>127?A+="x":A+=x[D];if(!A.match(mo)){var E=b.slice(0,f),O=b.slice(f+1),H=x.match(wl);H&&(E.push(H[1]),O.unshift(H[2])),O.length&&(a="/"+O.join(".")+a),this.hostname=E.join(".");break}}}this.hostname.length>El?this.hostname="":this.hostname=this.hostname.toLowerCase(),v||(this.hostname=dl.toASCII(this.hostname));var I=this.port?":"+this.port:"",N=this.hostname||"";this.host=N+I,this.href+=this.host,v&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),a[0]!=="/"&&(a="/"+a))}if(!Sl[c])for(var f=0,y=dr.length;f<y;f++){var w=dr[f];if(a.indexOf(w)!==-1){var T=encodeURIComponent(w);T===w&&(T=escape(w)),a=a.split(w).join(T)}}var W=a.indexOf("#");W!==-1&&(this.hash=a.substr(W),a=a.slice(0,W));var q=a.indexOf("?");if(q!==-1?(this.search=a.substr(q),this.query=a.substr(q+1),t&&(this.query=ur.parse(this.query)),a=a.slice(0,q)):t&&(this.search="",this.query={}),a&&(this.pathname=a),We[c]&&this.hostname&&!this.pathname&&(this.pathname="/"),this.pathname||this.search){var I=this.pathname||"",F=this.search||"";this.path=I+F}return this.href=this.format(),this};function Al(e){return se.isString(e)&&(e=fi(e)),e instanceof Lt?e.format():Lt.prototype.format.call(e)}Lt.prototype.format=function(){var e=this.auth||"";e&&(e=encodeURIComponent(e),e=e.replace(/%3A/i,":"),e+="@");var t=this.protocol||"",i=this.pathname||"",s=this.hash||"",r=!1,n="";this.host?r=e+this.host:this.hostname&&(r=e+(this.hostname.indexOf(":")===-1?this.hostname:"["+this.hostname+"]"),this.port&&(r+=":"+this.port)),this.query&&se.isObject(this.query)&&Object.keys(this.query).length&&(n=ur.stringify(this.query));var o=this.search||n&&"?"+n||"";return t&&t.substr(-1)!==":"&&(t+=":"),this.slashes||(!t||We[t])&&r!==!1?(r="//"+(r||""),i&&i.charAt(0)!=="/"&&(i="/"+i)):r||(r=""),s&&s.charAt(0)!=="#"&&(s="#"+s),o&&o.charAt(0)!=="?"&&(o="?"+o),i=i.replace(/[?#]/g,function(a){return encodeURIComponent(a)}),o=o.replace("#","%23"),t+r+i+o+s};function Rl(e,t){return fi(e,!1,!0).resolve(t)}Lt.prototype.resolve=function(e){return this.resolveObject(fi(e,!1,!0)).format()};function Cl(e,t){return e?fi(e,!1,!0).resolveObject(t):t}Lt.prototype.resolveObject=function(e){if(se.isString(e)){var t=new Lt;t.parse(e,!1,!0),e=t}for(var i=new Lt,s=Object.keys(this),r=0;r<s.length;r+
|
||
|
Deprecated since v${e}`):(s=s.split(`
|
||
|
`).splice(i).join(`
|
||
|
`),console.groupCollapsed?(console.groupCollapsed("%cPixiJS Deprecation Warning: %c%s","color:#614108;background:#fffbe6","font-weight:normal;color:#614108;background:#fffbe6",`${t}
|
||
|
Deprecated since v${e}`),console.warn(s),console.groupEnd()):(console.warn("PixiJS Deprecation Warning: ",`${t}
|
||
|
Deprecated since v${e}`),console.warn(s))),go[t]=!0}function Bl(){z("7.0.0","skipHello is deprecated, please use settings.RENDER_OPTIONS.hello")}function Dl(){z("7.0.0",`sayHello is deprecated, please use Renderer's "hello" option`)}let pr;function yo(){return typeof pr=="undefined"&&(pr=function(){var i;const t={stencil:!0,failIfMajorPerformanceCaveat:P.FAIL_IF_MAJOR_PERFORMANCE_CAVEAT};try{if(!P.ADAPTER.getWebGLRenderingContext())return!1;const s=P.ADAPTER.createCanvas();let r=s.getContext("webgl",t)||s.getContext("experimental-webgl",t);const n=!!((i=r==null?void 0:r.getContextAttributes())!=null&&i.stencil);if(r){const o=r.getExtension("WEBGL_lose_context");o&&o.loseContext()}return r=null,n}catch(s){return!1}}()),pr}var Fl={grad:.9,turn:360,rad:360/(2*Math.PI)},ue=function(e){return typeof e=="string"?e.length>0:typeof e=="number"},mt=function(e,t,i){return t===void 0&&(t=0),i===void 0&&(i=Math.pow(10,t)),Math.round(i*e)/i+0},Ot=function(e,t,i){return t===void 0&&(t=0),i===void 0&&(i=1),e>i?i:e>t?e:t},vo=function(e){return(e=isFinite(e)?e%360:0)>0?e:e+360},xo=function(e){return{r:Ot(e.r,0,255),g:Ot(e.g,0,255),b:Ot(e.b,0,255),a:Ot(e.a)}},mr=function(e){return{r:mt(e.r),g:mt(e.g),b:mt(e.b),a:mt(e.a,3)}},Nl=/^#([0-9a-f]{3,8})$/i,as=function(e){var t=e.toString(16);return t.length<2?"0"+t:t},bo=function(e){var t=e.r,i=e.g,s=e.b,r=e.a,n=Math.max(t,i,s),o=n-Math.min(t,i,s),a=o?n===t?(i-s)/o:n===i?2+(s-t)/o:4+(t-i)/o:0;return{h:60*(a<0?a+6:a),s:n?o/n*100:0,v:n/255*100,a:r}},To=function(e){var t=e.h,i=e.s,s=e.v,r=e.a;t=t/360*6,i/=100,s/=100;var n=Math.floor(t),o=s*(1-i),a=s*(1-(t-n)*i),h=s*(1-(1-t+n)*i),l=n%6;return{r:255*[s,a,o,o,h,s][l],g:255*[h,s,s,a,o,o][l],b:255*[o,o,h,s,s,a][l],a:r}},Eo=function(e){return{h:vo(e.h),s:Ot(e.s,0,100),l:Ot(e.l,0,100),a:Ot(e.a)}},wo=function(e){return{h:mt(e.h),s:mt(e.s),l:mt(e.l),a:mt(e.a,3)}},So=function(e){return To((i=(t=e).s,{h:t.h,s:(i*=((s=t.l)<50?s:100-s)/100)>0?2*i/(s+i)*100:0,v:s+i,a:t.a}));var t,i,s},mi=function(e){return{h:(t=bo(e)).h,s:(r=(200-(i=t.s))*(s=t.v)/100)>0&&r<200?i*s/100/(r<=100?r:200-r)*100:0,l:r/2,a:t.a};var t,i,s,r},Ll=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Ol=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Ul=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,kl=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,_r={string:[[function(e){var t=Nl.exec(e);return t?(e=t[1]).length<=4?{r:parseInt(e[0]+e[0],16),g:parseInt(e[1]+e[1],16),b:parseInt(e[2]+e[2],16),a:e.length===4?mt(parseInt(e[3]+e[3],16)/255,2):1}:e.length===6||e.length===8?{r:parseInt(e.substr(0,2),16),g:parseInt(e.substr(2,2),16),b:parseInt(e.substr(4,2),16),a:e.length===8?mt(parseInt(e.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(e){var t=Ul.exec(e)||kl.exec(e);return t?t[2]!==t[4]||t[4]!==t[6]?null:xo({r:Number(t[1])/(t[2]?100/255:1),g:Number(t[3])/(t[4]?100/255:1),b:Number(t[5])/(t[6]?100/255:1),a:t[7]===void 0?1:Number(t[7])/(t[8]?100:1)}):null},"rgb"],[function(e){var t=Ll.exec(e)||Ol.exec(e);if(!t)return null;var i,s,r=Eo({h:(i=t[1],s=t[2],s===void 0&&(s="deg"),Number(i)*(Fl[s]||1)),s:Number(t[3]),l:Number(t[4]),a:t[5]===void 0?1:Number(t[5])/(t[6]?100:1)});return So(r)},"hsl"]],object:[[function(e){var t=e.r,i=e.g,s=e.b,r=e.a,n=r===void 0?1:r;return ue(t)&&ue(i)&&ue(s)?xo({r:Number(t),g:Number(i),b:Number(s),a:Number(n)}):null},"rgb"],[function(e){var t=e.h,i=e.s,s=e.l,r=e.a,n=r===void 0?1:r;if(!ue(t)||!ue(i)||!ue(s))return null;var o=Eo({h:Number(t),s:Number(i),l:Number(s),a:Number(n)});return So(o)},"hsl"],[function(e){var t=e.h,i=e.s,s=e.v,r=e.a,n=r===void 0?1:r;if(!ue(t)||!ue(i)||!ue(s))return null;var o=function(a){return{h:vo(a.h),s:Ot(a.s,0,100),v:Ot(a.v,0,100),a:Ot(a.a)}}({h:Number(t),s:Number(i),v:Number(s),a:Number(n)});return To(o)},"hsv"]]},Ao=function(e,
|
||
|
`);function ic(e){let t="";for(let i=0;i<e;++i)i>0&&(t+=`
|
||
|
else `),i<e-1&&(t+=`if(test == ${i}.0){}`);return t}function Xo(e,t){if(e===0)throw new Error("Invalid value of `0` passed to `checkMaxIfStatementsInShader`");const i=t.createShader(t.FRAGMENT_SHADER);for(;;){const s=ec.replace(/%forloop%/gi,ic(e));if(t.shaderSource(i,s),t.compileShader(i),!t.getShaderParameter(i,t.COMPILE_STATUS))e=e/2|0;else break}return e}const Sr=0,Ar=1,Rr=2,Cr=3,Ir=4,Pr=5;class ne{constructor(){this.data=0,this.blendMode=G.NORMAL,this.polygonOffset=0,this.blend=!0,this.depthMask=!0}get blend(){return!!(this.data&1<<Sr)}set blend(t){!!(this.data&1<<Sr)!==t&&(this.data^=1<<Sr)}get offsets(){return!!(this.data&1<<Ar)}set offsets(t){!!(this.data&1<<Ar)!==t&&(this.data^=1<<Ar)}get culling(){return!!(this.data&1<<Rr)}set culling(t){!!(this.data&1<<Rr)!==t&&(this.data^=1<<Rr)}get depthTest(){return!!(this.data&1<<Cr)}set depthTest(t){!!(this.data&1<<Cr)!==t&&(this.data^=1<<Cr)}get depthMask(){return!!(this.data&1<<Pr)}set depthMask(t){!!(this.data&1<<Pr)!==t&&(this.data^=1<<Pr)}get clockwiseFrontFace(){return!!(this.data&1<<Ir)}set clockwiseFrontFace(t){!!(this.data&1<<Ir)!==t&&(this.data^=1<<Ir)}get blendMode(){return this._blendMode}set blendMode(t){this.blend=t!==G.NONE,this._blendMode=t}get polygonOffset(){return this._polygonOffset}set polygonOffset(t){this.offsets=!!t,this._polygonOffset=t}toString(){return`[@pixi/core:State blendMode=${this.blendMode} clockwiseFrontFace=${this.clockwiseFrontFace} culling=${this.culling} depthMask=${this.depthMask} polygonOffset=${this.polygonOffset}]`}static for2d(){const t=new ne;return t.depthTest=!1,t.blend=!0,t}}const fs=[];function Mr(e,t){if(!e)return null;let i="";if(typeof e=="string"){const s=/\.(\w{3,4})(?:$|\?|#)/i.exec(e);s&&(i=s[1].toLowerCase())}for(let s=fs.length-1;s>=0;--s){const r=fs[s];if(r.test&&r.test(e,i))return new r(e,t)}throw new Error("Unrecognized source type to auto-detect Resource")}class Bt{constructor(t){this.items=[],this._name=t,this._aliasCount=0}emit(t,i,s,r,n,o,a,h){if(arguments.length>8)throw new Error("max arguments reached");const{name:l,items:c}=this;this._aliasCount++;for(let u=0,d=c.length;u<d;u++)c[u][l](t,i,s,r,n,o,a,h);return c===this.items&&this._aliasCount--,this}ensureNonAliasedItems(){this._aliasCount>0&&this.items.length>1&&(this._aliasCount=0,this.items=this.items.slice(0))}add(t){return t[this._name]&&(this.ensureNonAliasedItems(),this.remove(t),this.items.push(t)),this}remove(t){const i=this.items.indexOf(t);return i!==-1&&(this.ensureNonAliasedItems(),this.items.splice(i,1)),this}contains(t){return this.items.includes(t)}removeAll(){return this.ensureNonAliasedItems(),this.items.length=0,this}destroy(){this.removeAll(),this.items=null,this._name=null}get empty(){return this.items.length===0}get name(){return this._name}}Object.defineProperties(Bt.prototype,{dispatch:{value:Bt.prototype.emit},run:{value:Bt.prototype.emit}});class je{constructor(t=0,i=0){this._width=t,this._height=i,this.destroyed=!1,this.internal=!1,this.onResize=new Bt("setRealSize"),this.onUpdate=new Bt("update"),this.onError=new Bt("onError")}bind(t){this.onResize.add(t),this.onUpdate.add(t),this.onError.add(t),(this._width||this._height)&&this.onResize.emit(this._width,this._height)}unbind(t){this.onResize.remove(t),this.onUpdate.remove(t),this.onError.remove(t)}resize(t,i){(t!==this._width||i!==this._height)&&(this._width=t,this._height=i,this.onResize.emit(t,i))}get valid(){return!!this._width&&!!this._height}update(){this.destroyed||this.onUpdate.emit()}load(){return Promise.resolve(this)}get width(){return this._width}get height(){return this._height}style(t,i,s){return!1}dispose(){}destroy(){this.destroyed||(this.destroyed=!0,this.dispose(),this.onError.removeAll(),this.onError=null,this.onResize.removeAll(),this.onResize=null,this.onUpdate.removeAll(),this.onUpdate=null)}static test(t,i){return!1}}class Ye extends je{constructor(t,i){const{width:s,height:r}=i||{};if(!s||!r)throw new Error("BufferResource width or height invalid");super(s,r),this.data=t}upload(t,i,s){const r=t.gl;r.pixelStorei(r.UNPACK_PREMULTIPLY_ALPHA_WEBGL,i.alphaMode
|
||
|
|
||
|
uniform sampler2D uSampler;
|
||
|
|
||
|
void main(void){
|
||
|
gl_FragColor *= texture2D(uSampler, vTextureCoord);
|
||
|
}`,uc=`attribute vec2 aVertexPosition;
|
||
|
attribute vec2 aTextureCoord;
|
||
|
|
||
|
uniform mat3 projectionMatrix;
|
||
|
|
||
|
varying vec2 vTextureCoord;
|
||
|
|
||
|
void main(void){
|
||
|
gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);
|
||
|
vTextureCoord = aTextureCoord;
|
||
|
}
|
||
|
`;function Yo(e,t,i){const s=e.createShader(t);return e.shaderSource(s,i),e.compileShader(s),s}function Fr(e){const t=new Array(e);for(let i=0;i<t.length;i++)t[i]=!1;return t}function qo(e,t){switch(e){case"float":return 0;case"vec2":return new Float32Array(2*t);case"vec3":return new Float32Array(3*t);case"vec4":return new Float32Array(4*t);case"int":case"uint":case"sampler2D":case"sampler2DArray":return 0;case"ivec2":return new Int32Array(2*t);case"ivec3":return new Int32Array(3*t);case"ivec4":return new Int32Array(4*t);case"uvec2":return new Uint32Array(2*t);case"uvec3":return new Uint32Array(3*t);case"uvec4":return new Uint32Array(4*t);case"bool":return!1;case"bvec2":return Fr(2*t);case"bvec3":return Fr(3*t);case"bvec4":return Fr(4*t);case"mat2":return new Float32Array([1,0,0,1]);case"mat3":return new Float32Array([1,0,0,0,1,0,0,0,1]);case"mat4":return new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])}return null}const Ne=[{test:e=>e.type==="float"&&e.size===1&&!e.isArray,code:e=>`
|
||
|
if(uv["${e}"] !== ud["${e}"].value)
|
||
|
{
|
||
|
ud["${e}"].value = uv["${e}"]
|
||
|
gl.uniform1f(ud["${e}"].location, uv["${e}"])
|
||
|
}
|
||
|
`},{test:(e,t)=>(e.type==="sampler2D"||e.type==="samplerCube"||e.type==="sampler2DArray")&&e.size===1&&!e.isArray&&(t==null||t.castToBaseTexture!==void 0),code:e=>`t = syncData.textureCount++;
|
||
|
|
||
|
renderer.texture.bind(uv["${e}"], t);
|
||
|
|
||
|
if(ud["${e}"].value !== t)
|
||
|
{
|
||
|
ud["${e}"].value = t;
|
||
|
gl.uniform1i(ud["${e}"].location, t);
|
||
|
; // eslint-disable-line max-len
|
||
|
}`},{test:(e,t)=>e.type==="mat3"&&e.size===1&&!e.isArray&&t.a!==void 0,code:e=>`
|
||
|
gl.uniformMatrix3fv(ud["${e}"].location, false, uv["${e}"].toArray(true));
|
||
|
`,codeUbo:e=>`
|
||
|
var ${e}_matrix = uv.${e}.toArray(true);
|
||
|
|
||
|
data[offset] = ${e}_matrix[0];
|
||
|
data[offset+1] = ${e}_matrix[1];
|
||
|
data[offset+2] = ${e}_matrix[2];
|
||
|
|
||
|
data[offset + 4] = ${e}_matrix[3];
|
||
|
data[offset + 5] = ${e}_matrix[4];
|
||
|
data[offset + 6] = ${e}_matrix[5];
|
||
|
|
||
|
data[offset + 8] = ${e}_matrix[6];
|
||
|
data[offset + 9] = ${e}_matrix[7];
|
||
|
data[offset + 10] = ${e}_matrix[8];
|
||
|
`},{test:(e,t)=>e.type==="vec2"&&e.size===1&&!e.isArray&&t.x!==void 0,code:e=>`
|
||
|
cv = ud["${e}"].value;
|
||
|
v = uv["${e}"];
|
||
|
|
||
|
if(cv[0] !== v.x || cv[1] !== v.y)
|
||
|
{
|
||
|
cv[0] = v.x;
|
||
|
cv[1] = v.y;
|
||
|
gl.uniform2f(ud["${e}"].location, v.x, v.y);
|
||
|
}`,codeUbo:e=>`
|
||
|
v = uv.${e};
|
||
|
|
||
|
data[offset] = v.x;
|
||
|
data[offset+1] = v.y;
|
||
|
`},{test:e=>e.type==="vec2"&&e.size===1&&!e.isArray,code:e=>`
|
||
|
cv = ud["${e}"].value;
|
||
|
v = uv["${e}"];
|
||
|
|
||
|
if(cv[0] !== v[0] || cv[1] !== v[1])
|
||
|
{
|
||
|
cv[0] = v[0];
|
||
|
cv[1] = v[1];
|
||
|
gl.uniform2f(ud["${e}"].location, v[0], v[1]);
|
||
|
}
|
||
|
`},{test:(e,t)=>e.type==="vec4"&&e.size===1&&!e.isArray&&t.width!==void 0,code:e=>`
|
||
|
cv = ud["${e}"].value;
|
||
|
v = uv["${e}"];
|
||
|
|
||
|
if(cv[0] !== v.x || cv[1] !== v.y || cv[2] !== v.width || cv[3] !== v.height)
|
||
|
{
|
||
|
cv[0] = v.x;
|
||
|
cv[1] = v.y;
|
||
|
cv[2] = v.width;
|
||
|
cv[3] = v.height;
|
||
|
gl.uniform4f(ud["${e}"].location, v.x, v.y, v.width, v.height)
|
||
|
}`,codeUbo:e=>`
|
||
|
v = uv.${e};
|
||
|
|
||
|
data[offset] = v.x;
|
||
|
data[offset+1] = v.y;
|
||
|
data[offset+2] = v.width;
|
||
|
data[offset+3] = v.height;
|
||
|
`},{test:(e,t)=>e.type==="vec4"&&e.size===1&&!e.isArray&&t.red!==void 0,code:e=>`
|
||
|
cv = ud["${e}"].value;
|
||
|
v = uv["${e}"];
|
||
|
|
||
|
if(cv[0] !== v.red || cv[1] !== v.green || cv[2] !== v.blue || cv[3] !== v.alpha)
|
||
|
{
|
||
|
cv[0] = v.red;
|
||
|
cv[1] = v.green;
|
||
|
cv[2] = v.blue;
|
||
|
cv[3] = v.alpha;
|
||
|
gl.uniform4f(ud["${e}"].location, v.red, v.green, v.blue, v.alpha)
|
||
|
}`,codeUbo:e=>`
|
||
|
v = uv.${e};
|
||
|
|
||
|
data[offset] = v.red;
|
||
|
data[offset+1] = v.green;
|
||
|
data[offset+2] = v.blue;
|
||
|
data[offset+3] = v.alpha;
|
||
|
`},{test:(e,t)=>e.type==="vec3"&&e.size===1&&!e.isArray&&t.red!==void 0,code:e=>`
|
||
|
cv = ud["${e}"].value;
|
||
|
v = uv["${e}"];
|
||
|
|
||
|
if(cv[0] !== v.red || cv[1] !== v.green || cv[2] !== v.blue || cv[3] !== v.a)
|
||
|
{
|
||
|
cv[0] = v.red;
|
||
|
cv[1] = v.green;
|
||
|
cv[2] = v.blue;
|
||
|
|
||
|
gl.uniform3f(ud["${e}"].location, v.red, v.green, v.blue)
|
||
|
}`,codeUbo:e=>`
|
||
|
v = uv.${e};
|
||
|
|
||
|
data[offset] = v.red;
|
||
|
data[offset+1] = v.green;
|
||
|
data[offset+2] = v.blue;
|
||
|
`},{test:e=>e.type==="vec4"&&e.size===1&&!e.isArray,code:e=>`
|
||
|
cv = ud["${e}"].value;
|
||
|
v = uv["${e}"];
|
||
|
|
||
|
if(cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3])
|
||
|
{
|
||
|
cv[0] = v[0];
|
||
|
cv[1] = v[1];
|
||
|
cv[2] = v[2];
|
||
|
cv[3] = v[3];
|
||
|
|
||
|
gl.uniform4f(ud["${e}"].location, v[0], v[1], v[2], v[3])
|
||
|
}`}],dc={float:`
|
||
|
if (cv !== v)
|
||
|
{
|
||
|
cu.value = v;
|
||
|
gl.uniform1f(location, v);
|
||
|
}`,vec2:`
|
||
|
if (cv[0] !== v[0] || cv[1] !== v[1])
|
||
|
{
|
||
|
cv[0] = v[0];
|
||
|
cv[1] = v[1];
|
||
|
|
||
|
gl.uniform2f(location, v[0], v[1])
|
||
|
}`,vec3:`
|
||
|
if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2])
|
||
|
{
|
||
|
cv[0] = v[0];
|
||
|
cv[1] = v[1];
|
||
|
cv[2] = v[2];
|
||
|
|
||
|
gl.uniform3f(location, v[0], v[1], v[2])
|
||
|
}`,vec4:`
|
||
|
if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3])
|
||
|
{
|
||
|
cv[0] = v[0];
|
||
|
cv[1] = v[1];
|
||
|
cv[2] = v[2];
|
||
|
cv[3] = v[3];
|
||
|
|
||
|
gl.uniform4f(location, v[0], v[1], v[2], v[3]);
|
||
|
}`,int:`
|
||
|
if (cv !== v)
|
||
|
{
|
||
|
cu.value = v;
|
||
|
|
||
|
gl.uniform1i(location, v);
|
||
|
}`,ivec2:`
|
||
|
if (cv[0] !== v[0] || cv[1] !== v[1])
|
||
|
{
|
||
|
cv[0] = v[0];
|
||
|
cv[1] = v[1];
|
||
|
|
||
|
gl.uniform2i(location, v[0], v[1]);
|
||
|
}`,ivec3:`
|
||
|
if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2])
|
||
|
{
|
||
|
cv[0] = v[0];
|
||
|
cv[1] = v[1];
|
||
|
cv[2] = v[2];
|
||
|
|
||
|
gl.uniform3i(location, v[0], v[1], v[2]);
|
||
|
}`,ivec4:`
|
||
|
if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3])
|
||
|
{
|
||
|
cv[0] = v[0];
|
||
|
cv[1] = v[1];
|
||
|
cv[2] = v[2];
|
||
|
cv[3] = v[3];
|
||
|
|
||
|
gl.uniform4i(location, v[0], v[1], v[2], v[3]);
|
||
|
}`,uint:`
|
||
|
if (cv !== v)
|
||
|
{
|
||
|
cu.value = v;
|
||
|
|
||
|
gl.uniform1ui(location, v);
|
||
|
}`,uvec2:`
|
||
|
if (cv[0] !== v[0] || cv[1] !== v[1])
|
||
|
{
|
||
|
cv[0] = v[0];
|
||
|
cv[1] = v[1];
|
||
|
|
||
|
gl.uniform2ui(location, v[0], v[1]);
|
||
|
}`,uvec3:`
|
||
|
if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2])
|
||
|
{
|
||
|
cv[0] = v[0];
|
||
|
cv[1] = v[1];
|
||
|
cv[2] = v[2];
|
||
|
|
||
|
gl.uniform3ui(location, v[0], v[1], v[2]);
|
||
|
}`,uvec4:`
|
||
|
if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3])
|
||
|
{
|
||
|
cv[0] = v[0];
|
||
|
cv[1] = v[1];
|
||
|
cv[2] = v[2];
|
||
|
cv[3] = v[3];
|
||
|
|
||
|
gl.uniform4ui(location, v[0], v[1], v[2], v[3]);
|
||
|
}`,bool:`
|
||
|
if (cv !== v)
|
||
|
{
|
||
|
cu.value = v;
|
||
|
gl.uniform1i(location, v);
|
||
|
}`,bvec2:`
|
||
|
if (cv[0] != v[0] || cv[1] != v[1])
|
||
|
{
|
||
|
cv[0] = v[0];
|
||
|
cv[1] = v[1];
|
||
|
|
||
|
gl.uniform2i(location, v[0], v[1]);
|
||
|
}`,bvec3:`
|
||
|
if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2])
|
||
|
{
|
||
|
cv[0] = v[0];
|
||
|
cv[1] = v[1];
|
||
|
cv[2] = v[2];
|
||
|
|
||
|
gl.uniform3i(location, v[0], v[1], v[2]);
|
||
|
}`,bvec4:`
|
||
|
if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3])
|
||
|
{
|
||
|
cv[0] = v[0];
|
||
|
cv[1] = v[1];
|
||
|
cv[2] = v[2];
|
||
|
cv[3] = v[3];
|
||
|
|
||
|
gl.uniform4i(location, v[0], v[1], v[2], v[3]);
|
||
|
}`,mat2:"gl.uniformMatrix2fv(location, false, v)",mat3:"gl.uniformMatrix3fv(location, false, v)",mat4:"gl.uniformMatrix4fv(location, false, v)",sampler2D:`
|
||
|
if (cv !== v)
|
||
|
{
|
||
|
cu.value = v;
|
||
|
|
||
|
gl.uniform1i(location, v);
|
||
|
}`,samplerCube:`
|
||
|
if (cv !== v)
|
||
|
{
|
||
|
cu.value = v;
|
||
|
|
||
|
gl.uniform1i(location, v);
|
||
|
}`,sampler2DArray:`
|
||
|
if (cv !== v)
|
||
|
{
|
||
|
cu.value = v;
|
||
|
|
||
|
gl.uniform1i(location, v);
|
||
|
}`},fc={float:"gl.uniform1fv(location, v)",vec2:"gl.uniform2fv(location, v)",vec3:"gl.uniform3fv(location, v)",vec4:"gl.uniform4fv(location, v)",mat4:"gl.uniformMatrix4fv(location, false, v)",mat3:"gl.uniformMatrix3fv(location, false, v)",mat2:"gl.uniformMatrix2fv(location, false, v)",int:"gl.uniform1iv(location, v)",ivec2:"gl.uniform2iv(location, v)",ivec3:"gl.uniform3iv(location, v)",ivec4:"gl.uniform4iv(location, v)",uint:"gl.uniform1uiv(location, v)",uvec2:"gl.uniform2uiv(location, v)",uvec3:"gl.uniform3uiv(location, v)",uvec4:"gl.uniform4uiv(location, v)",bool:"gl.uniform1iv(location, v)",bvec2:"gl.uniform2iv(location, v)",bvec3:"gl.uniform3iv(location, v)",bvec4:"gl.uniform4iv(location, v)",sampler2D:"gl.uniform1iv(location, v)",samplerCube:"gl.uniform1iv(location, v)",sampler2DArray:"gl.uniform1iv(location, v)"};function pc(e,t){var s;const i=[`
|
||
|
var v = null;
|
||
|
var cv = null;
|
||
|
var cu = null;
|
||
|
var t = 0;
|
||
|
var gl = renderer.gl;
|
||
|
`];for(const r in e.uniforms){const n=t[r];if(!n){(s=e.uniforms[r])!=null&&s.group&&(e.uniforms[r].ubo?i.push(`
|
||
|
renderer.shader.syncUniformBufferGroup(uv.${r}, '${r}');
|
||
|
`):i.push(`
|
||
|
renderer.shader.syncUniformGroup(uv.${r}, syncData);
|
||
|
`));continue}const o=e.uniforms[r];let a=!1;for(let h=0;h<Ne.length;h++)if(Ne[h].test(n,o)){i.push(Ne[h].code(r,o)),a=!0;break}if(!a){const l=(n.size===1&&!n.isArray?dc:fc)[n.type].replace("location",`ud["${r}"].location`);i.push(`
|
||
|
cu = ud["${r}"];
|
||
|
cv = cu.value;
|
||
|
v = uv["${r}"];
|
||
|
${l};`)}}return new Function("ud","uv","renderer","syncData",i.join(`
|
||
|
`))}const Ko={};let Ke=Ko;function Zo(){if(Ke===Ko||(Ke==null?void 0:Ke.isContextLost())){const e=P.ADAPTER.createCanvas();let t;P.PREFER_ENV>=et.WEBGL2&&(t=e.getContext("webgl2",{})),t||(t=e.getContext("webgl",{})||e.getContext("experimental-webgl",{}),t?t.getExtension("WEBGL_draw_buffers"):t=null),Ke=t}return Ke}let xs;function mc(){if(!xs){xs=Pt.MEDIUM;const e=Zo();e&&e.getShaderPrecisionFormat&&(xs=e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.HIGH_FLOAT).precision?Pt.HIGH:Pt.MEDIUM)}return xs}function Jo(e,t){const i=e.getShaderSource(t).split(`
|
||
|
`).map((l,c)=>`${c}: ${l}`),s=e.getShaderInfoLog(t),r=s.split(`
|
||
|
`),n={},o=r.map(l=>parseFloat(l.replace(/^ERROR\: 0\:([\d]+)\:.*$/,"$1"))).filter(l=>l&&!n[l]?(n[l]=!0,!0):!1),a=[""];o.forEach(l=>{i[l-1]=`%c${i[l-1]}%c`,a.push("background: #FF0000; color:#FFFFFF; font-size: 10px","font-size: 10px")});const h=i.join(`
|
||
|
`);a[0]=h,console.error(s),console.groupCollapsed("click to view full shader code"),console.warn(...a),console.groupEnd()}function _c(e,t,i,s){e.getProgramParameter(t,e.LINK_STATUS)||(e.getShaderParameter(i,e.COMPILE_STATUS)||Jo(e,i),e.getShaderParameter(s,e.COMPILE_STATUS)||Jo(e,s),console.error("PixiJS Error: Could not initialize shader."),e.getProgramInfoLog(t)!==""&&console.warn("PixiJS Warning: gl.getProgramInfoLog()",e.getProgramInfoLog(t)))}const gc={float:1,vec2:2,vec3:3,vec4:4,int:1,ivec2:2,ivec3:3,ivec4:4,uint:1,uvec2:2,uvec3:3,uvec4:4,bool:1,bvec2:2,bvec3:3,bvec4:4,mat2:4,mat3:9,mat4:16,sampler2D:1};function Qo(e){return gc[e]}let bs=null;const ta={FLOAT:"float",FLOAT_VEC2:"vec2",FLOAT_VEC3:"vec3",FLOAT_VEC4:"vec4",INT:"int",INT_VEC2:"ivec2",INT_VEC3:"ivec3",INT_VEC4:"ivec4",UNSIGNED_INT:"uint",UNSIGNED_INT_VEC2:"uvec2",UNSIGNED_INT_VEC3:"uvec3",UNSIGNED_INT_VEC4:"uvec4",BOOL:"bool",BOOL_VEC2:"bvec2",BOOL_VEC3:"bvec3",BOOL_VEC4:"bvec4",FLOAT_MAT2:"mat2",FLOAT_MAT3:"mat3",FLOAT_MAT4:"mat4",SAMPLER_2D:"sampler2D",INT_SAMPLER_2D:"sampler2D",UNSIGNED_INT_SAMPLER_2D:"sampler2D",SAMPLER_CUBE:"samplerCube",INT_SAMPLER_CUBE:"samplerCube",UNSIGNED_INT_SAMPLER_CUBE:"samplerCube",SAMPLER_2D_ARRAY:"sampler2DArray",INT_SAMPLER_2D_ARRAY:"sampler2DArray",UNSIGNED_INT_SAMPLER_2D_ARRAY:"sampler2DArray"};function ea(e,t){if(!bs){const i=Object.keys(ta);bs={};for(let s=0;s<i.length;++s){const r=i[s];bs[e[r]]=ta[r]}}return bs[t]}function ia(e,t,i){if(e.substring(0,9)!=="precision"){let s=t;return t===Pt.HIGH&&i!==Pt.HIGH&&(s=Pt.MEDIUM),`precision ${s} float;
|
||
|
${e}`}else if(i!==Pt.HIGH&&e.substring(0,15)==="precision highp")return e.replace("precision highp","precision mediump");return e}let xi;function sa(){if(typeof xi=="boolean")return xi;try{xi=new Function("param1","param2","param3","return param1[param2] === param3;")({a:"b"},"a","b")===!0}catch(e){xi=!1}return xi}let yc=0;const Ts={},Ze=class{constructor(e,t,i="pixi-shader",s={}){this.extra={},this.id=yc++,this.vertexSrc=e||Ze.defaultVertexSrc,this.fragmentSrc=t||Ze.defaultFragmentSrc,this.vertexSrc=this.vertexSrc.trim(),this.fragmentSrc=this.fragmentSrc.trim(),this.extra=s,this.vertexSrc.substring(0,8)!=="#version"&&(i=i.replace(/\s+/g,"-"),Ts[i]?(Ts[i]++,i+=`-${Ts[i]}`):Ts[i]=1,this.vertexSrc=`#define SHADER_NAME ${i}
|
||
|
${this.vertexSrc}`,this.fragmentSrc=`#define SHADER_NAME ${i}
|
||
|
${this.fragmentSrc}`,this.vertexSrc=ia(this.vertexSrc,Ze.defaultVertexPrecision,Pt.HIGH),this.fragmentSrc=ia(this.fragmentSrc,Ze.defaultFragmentPrecision,mc())),this.glPrograms={},this.syncUniforms=null}static get defaultVertexSrc(){return uc}static get defaultFragmentSrc(){return cc}static from(e,t,i){const s=e+t;let r=Er[s];return r||(Er[s]=r=new Ze(e,t,i)),r}};let Ut=Ze;Ut.defaultVertexPrecision=Pt.HIGH,Ut.defaultFragmentPrecision=Yt.apple.device?Pt.HIGH:Pt.MEDIUM;let vc=0;class kt{constructor(t,i,s){this.group=!0,this.syncUniforms={},this.dirtyId=0,this.id=vc++,this.static=!!i,this.ubo=!!s,t instanceof ot?(this.buffer=t,this.buffer.type=jt.UNIFORM_BUFFER,this.autoManage=!1,this.ubo=!0):(this.uniforms=t,this.ubo&&(this.buffer=new ot(new Float32Array(1)),this.buffer.type=jt.UNIFORM_BUFFER,this.autoManage=!0))}update(){this.dirtyId++,!this.autoManage&&this.buffer&&this.buffer.update()}add(t,i,s){if(!this.ubo)this.uniforms[t]=new kt(i,s);else throw new Error("[UniformGroup] uniform groups in ubo mode cannot be modified, or have uniform groups nested in them")}static from(t,i,s){return new kt(t,i,s)}static uboFrom(t,i){return new kt(t,i!=null?i:!0,!0)}}class Kt{constructor(t,i){this.uniformBindCount=0,this.program=t,i?i instanceof kt?this.uniformGroup=i:this.uniformGroup=new kt(i):this.uniformGroup=new kt({}),this.disposeRunner=new Bt("disposeShader")}checkUniformExists(t,i){if(i.uniforms[t])return!0;for(const s in i.uniforms){const r=i.uniforms[s];if(r.group&&this.checkUniformExists(t,r))return!0}return!1}destroy(){this.uniformGroup=null,this.disposeRunner.emit(this),this.disposeRunner.destroy()}get uniforms(){return this.uniformGroup.uniforms}static from(t,i,s){const r=Ut.from(t,i);return new Kt(r,s)}}class ra{constructor(t,i){if(this.vertexSrc=t,this.fragTemplate=i,this.programCache={},this.defaultGroupCache={},!i.includes("%count%"))throw new Error('Fragment template must contain "%count%".');if(!i.includes("%forloop%"))throw new Error('Fragment template must contain "%forloop%".')}generateShader(t){if(!this.programCache[t]){const s=new Int32Array(t);for(let n=0;n<t;n++)s[n]=n;this.defaultGroupCache[t]=kt.from({uSamplers:s},!0);let r=this.fragTemplate;r=r.replace(/%count%/gi,`${t}`),r=r.replace(/%forloop%/gi,this.generateSampleSrc(t)),this.programCache[t]=new Ut(this.vertexSrc,r)}const i={tint:new Float32Array([1,1,1,1]),translationMatrix:new tt,default:this.defaultGroupCache[t]};return new Kt(this.programCache[t],i)}generateSampleSrc(t){let i="";i+=`
|
||
|
`,i+=`
|
||
|
`;for(let s=0;s<t;s++)s>0&&(i+=`
|
||
|
else `),s<t-1&&(i+=`if(vTextureId < ${s}.5)`),i+=`
|
||
|
{`,i+=`
|
||
|
color = texture2D(uSamplers[${s}], vTextureCoord);`,i+=`
|
||
|
}`;return i+=`
|
||
|
`,i+=`
|
||
|
`,i}}class Es{constructor(){this.elements=[],this.ids=[],this.count=0}clear(){for(let t=0;t<this.count;t++)this.elements[t]=null;this.count=0}}function xc(){return!Yt.apple.device}function bc(e){let t=!0;const i=P.ADAPTER.getNavigator();if(Yt.tablet||Yt.phone){if(Yt.apple.device){const s=i.userAgent.match(/OS (\d+)_(\d+)?/);s&&parseInt(s[1],10)<11&&(t=!1)}if(Yt.android.device){const s=i.userAgent.match(/Android\s([0-9.]*)/);s&&parseInt(s[1],10)<7&&(t=!1)}}return t?e:4}class bi{constructor(t){this.renderer=t}flush(){}destroy(){this.renderer=null}start(){}stop(){this.flush()}render(t){}}var Tc=`varying vec2 vTextureCoord;
|
||
|
varying vec4 vColor;
|
||
|
varying float vTextureId;
|
||
|
uniform sampler2D uSamplers[%count%];
|
||
|
|
||
|
void main(void){
|
||
|
vec4 color;
|
||
|
%forloop%
|
||
|
gl_FragColor = color * vColor;
|
||
|
}
|
||
|
`,Ec=`precision highp float;
|
||
|
attribute vec2 aVertexPosition;
|
||
|
attribute vec2 aTextureCoord;
|
||
|
attribute vec4 aColor;
|
||
|
attribute float aTextureId;
|
||
|
|
||
|
uniform mat3 projectionMatrix;
|
||
|
uniform mat3 translationMatrix;
|
||
|
uniform vec4 tint;
|
||
|
|
||
|
varying vec2 vTextureCoord;
|
||
|
varying vec4 vColor;
|
||
|
varying float vTextureId;
|
||
|
|
||
|
void main(void){
|
||
|
gl_Position = vec4((projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);
|
||
|
|
||
|
vTextureCoord = aTextureCoord;
|
||
|
vTextureId = aTextureId;
|
||
|
vColor = aColor * tint;
|
||
|
}
|
||
|
`;const Zt=class extends bi{constructor(e){super(e),this.setShaderGenerator(),this.geometryClass=Br,this.vertexSize=6,this.state=ne.for2d(),this.size=Zt.defaultBatchSize*4,this._vertexCount=0,this._indexCount=0,this._bufferedElements=[],this._bufferedTextures=[],this._bufferSize=0,this._shader=null,this._packedGeometries=[],this._packedGeometryPoolSize=2,this._flushId=0,this._aBuffers={},this._iBuffers={},this.maxTextures=1,this.renderer.on("prerender",this.onPrerender,this),e.runners.contextChange.add(this),this._dcIndex=0,this._aIndex=0,this._iIndex=0,this._attributeBuffer=null,this._indexBuffer=null,this._tempBoundTextures=[]}static get defaultMaxTextures(){var e;return this._defaultMaxTextures=(e=this._defaultMaxTextures)!=null?e:bc(32),this._defaultMaxTextures}static set defaultMaxTextures(e){this._defaultMaxTextures=e}static get canUploadSameBuffer(){var e;return this._canUploadSameBuffer=(e=this._canUploadSameBuffer)!=null?e:xc(),this._canUploadSameBuffer}static set canUploadSameBuffer(e){this._canUploadSameBuffer=e}get MAX_TEXTURES(){return z("7.1.0","BatchRenderer#MAX_TEXTURES renamed to BatchRenderer#maxTextures"),this.maxTextures}static get defaultVertexSrc(){return Ec}static get defaultFragmentTemplate(){return Tc}setShaderGenerator({vertex:e=Zt.defaultVertexSrc,fragment:t=Zt.defaultFragmentTemplate}={}){this.shaderGenerator=new ra(e,t)}contextChange(){const e=this.renderer.gl;P.PREFER_ENV===et.WEBGL_LEGACY?this.maxTextures=1:(this.maxTextures=Math.min(e.getParameter(e.MAX_TEXTURE_IMAGE_UNITS),Zt.defaultMaxTextures),this.maxTextures=Xo(this.maxTextures,e)),this._shader=this.shaderGenerator.generateShader(this.maxTextures);for(let t=0;t<this._packedGeometryPoolSize;t++)this._packedGeometries[t]=new this.geometryClass;this.initFlushBuffers()}initFlushBuffers(){const{_drawCallPool:e,_textureArrayPool:t}=Zt,i=this.size/4,s=Math.floor(i/this.maxTextures)+1;for(;e.length<i;)e.push(new ps);for(;t.length<s;)t.push(new Es);for(let r=0;r<this.maxTextures;r++)this._tempBoundTextures[r]=null}onPrerender(){this._flushId=0}render(e){!e._texture.valid||(this._vertexCount+e.vertexData.length/2>this.size&&this.flush(),this._vertexCount+=e.vertexData.length/2,this._indexCount+=e.indices.length,this._bufferedTextures[this._bufferSize]=e._texture.baseTexture,this._bufferedElements[this._bufferSize++]=e)}buildTexturesAndDrawCalls(){const{_bufferedTextures:e,maxTextures:t}=this,i=Zt._textureArrayPool,s=this.renderer.batch,r=this._tempBoundTextures,n=this.renderer.textureGC.count;let o=++V._globalBatch,a=0,h=i[0],l=0;s.copyBoundTextures(r,t);for(let c=0;c<this._bufferSize;++c){const u=e[c];e[c]=null,u._batchEnabled!==o&&(h.count>=t&&(s.boundArray(h,r,o,t),this.buildDrawCalls(h,l,c),l=c,h=i[++a],++o),u._batchEnabled=o,u.touched=n,h.elements[h.count++]=u)}h.count>0&&(s.boundArray(h,r,o,t),this.buildDrawCalls(h,l,this._bufferSize),++a,++o);for(let c=0;c<r.length;c++)r[c]=null;V._globalBatch=o}buildDrawCalls(e,t,i){const{_bufferedElements:s,_attributeBuffer:r,_indexBuffer:n,vertexSize:o}=this,a=Zt._drawCallPool;let h=this._dcIndex,l=this._aIndex,c=this._iIndex,u=a[h];u.start=this._iIndex,u.texArray=e;for(let d=t;d<i;++d){const f=s[d],p=f._texture.baseTexture,_=vr[p.alphaMode?1:0][f.blendMode];s[d]=null,t<d&&u.blend!==_&&(u.size=c-u.start,t=d,u=a[++h],u.texArray=e,u.start=c),this.packInterleavedGeometry(f,r,n,l,c),l+=f.vertexData.length/2*o,c+=f.indices.length,u.blend=_}t<i&&(u.size=c-u.start,++h),this._dcIndex=h,this._aIndex=l,this._iIndex=c}bindAndClearTexArray(e){const t=this.renderer.texture;for(let i=0;i<e.count;i++)t.bind(e.elements[i],e.ids[i]),e.elements[i]=null;e.count=0}updateGeometry(){const{_packedGeometries:e,_attributeBuffer:t,_indexBuffer:i}=this;Zt.canUploadSameBuffer?(e[this._flushId]._buffer.update(t.rawBinaryData),e[this._flushId]._indexBuffer.update(i),this.renderer.geometry.updateBuffers()):(this._packedGeometryPoolSize<=this._flushId&&(this._packedGeometryPoolSize++,e[this._flushId]=new this.geometryClass),e[this._flushId]._buffer.update(t.rawBinaryData),e[this._flushId]._indexBuffer.update(i),this.renderer.geomet
|
||
|
|
||
|
uniform sampler2D uSampler;
|
||
|
|
||
|
void main(void){
|
||
|
gl_FragColor = texture2D(uSampler, vTextureCoord);
|
||
|
}
|
||
|
`,Sc=`attribute vec2 aVertexPosition;
|
||
|
|
||
|
uniform mat3 projectionMatrix;
|
||
|
|
||
|
varying vec2 vTextureCoord;
|
||
|
|
||
|
uniform vec4 inputSize;
|
||
|
uniform vec4 outputFrame;
|
||
|
|
||
|
vec4 filterVertexPosition( void )
|
||
|
{
|
||
|
vec2 position = aVertexPosition * max(outputFrame.zw, vec2(0.)) + outputFrame.xy;
|
||
|
|
||
|
return vec4((projectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0);
|
||
|
}
|
||
|
|
||
|
vec2 filterTextureCoord( void )
|
||
|
{
|
||
|
return aVertexPosition * (outputFrame.zw * inputSize.zw);
|
||
|
}
|
||
|
|
||
|
void main(void)
|
||
|
{
|
||
|
gl_Position = filterVertexPosition();
|
||
|
vTextureCoord = filterTextureCoord();
|
||
|
}
|
||
|
`;const Ti=class extends Kt{constructor(e,t,i){const s=Ut.from(e||Ti.defaultVertexSrc,t||Ti.defaultFragmentSrc);super(s,i),this.padding=0,this.resolution=Ti.defaultResolution,this.multisample=Ti.defaultMultisample,this.enabled=!0,this.autoFit=!0,this.state=new ne}apply(e,t,i,s,r){e.applyFilter(this,t,i,s)}get blendMode(){return this.state.blendMode}set blendMode(e){this.state.blendMode=e}get resolution(){return this._resolution}set resolution(e){this._resolution=e}static get defaultVertexSrc(){return Sc}static get defaultFragmentSrc(){return wc}};let gt=Ti;gt.defaultResolution=1,gt.defaultMultisample=ht.NONE;class Ei{constructor(){this.clearBeforeRender=!0,this._backgroundColor=new j(0),this.alpha=1}init(t){this.clearBeforeRender=t.clearBeforeRender;const{backgroundColor:i,background:s,backgroundAlpha:r}=t,n=s!=null?s:i;n!==void 0&&(this.color=n),this.alpha=r}get color(){return this._backgroundColor.value}set color(t){this._backgroundColor.setValue(t)}get alpha(){return this._backgroundColor.alpha}set alpha(t){this._backgroundColor.setAlpha(t)}get backgroundColor(){return this._backgroundColor}destroy(){}}Ei.defaultOptions={backgroundAlpha:1,backgroundColor:0,clearBeforeRender:!0},Ei.extension={type:[M.RendererSystem,M.CanvasRendererSystem],name:"background"},U.add(Ei);class Nr{constructor(t){this.renderer=t,this.emptyRenderer=new bi(t),this.currentRenderer=this.emptyRenderer}setObjectRenderer(t){this.currentRenderer!==t&&(this.currentRenderer.stop(),this.currentRenderer=t,this.currentRenderer.start())}flush(){this.setObjectRenderer(this.emptyRenderer)}reset(){this.setObjectRenderer(this.emptyRenderer)}copyBoundTextures(t,i){const{boundTextures:s}=this.renderer.texture;for(let r=i-1;r>=0;--r)t[r]=s[r]||null,t[r]&&(t[r]._batchLocation=r)}boundArray(t,i,s,r){const{elements:n,ids:o,count:a}=t;let h=0;for(let l=0;l<a;l++){const c=n[l],u=c._batchLocation;if(u>=0&&u<r&&i[u]===c){o[l]=u;continue}for(;h<r;){const d=i[h];if(d&&d._batchEnabled===s&&d._batchLocation===h){h++;continue}o[l]=h,c._batchLocation=h,i[h]=c;break}}}destroy(){this.renderer=null}}Nr.extension={type:M.RendererSystem,name:"batch"},U.add(Nr);let na=0;class wi{constructor(t){this.renderer=t,this.webGLVersion=1,this.extensions={},this.supports={uint32Indices:!1},this.handleContextLost=this.handleContextLost.bind(this),this.handleContextRestored=this.handleContextRestored.bind(this)}get isLost(){return!this.gl||this.gl.isContextLost()}contextChange(t){this.gl=t,this.renderer.gl=t,this.renderer.CONTEXT_UID=na++}init(t){if(t.context)this.initFromContext(t.context);else{const i=this.renderer.background.alpha<1,s=t.premultipliedAlpha;this.preserveDrawingBuffer=t.preserveDrawingBuffer,this.useContextAlpha=t.useContextAlpha,this.powerPreference=t.powerPreference,this.initFromOptions({alpha:i,premultipliedAlpha:s,antialias:t.antialias,stencil:!0,preserveDrawingBuffer:t.preserveDrawingBuffer,powerPreference:t.powerPreference})}}initFromContext(t){this.gl=t,this.validateContext(t),this.renderer.gl=t,this.renderer.CONTEXT_UID=na++,this.renderer.runners.contextChange.emit(t);const i=this.renderer.view;i.addEventListener!==void 0&&(i.addEventListener("webglcontextlost",this.handleContextLost,!1),i.addEventListener("webglcontextrestored",this.handleContextRestored,!1))}initFromOptions(t){const i=this.createContext(this.renderer.view,t);this.initFromContext(i)}createContext(t,i){let s;if(P.PREFER_ENV>=et.WEBGL2&&(s=t.getContext("webgl2",i)),s)this.webGLVersion=2;else if(this.webGLVersion=1,s=t.getContext("webgl",i)||t.getContext("experimental-webgl",i),!s)throw new Error("This browser does not support WebGL. Try using the canvas renderer");return this.gl=s,this.getExtensions(),this.gl}getExtensions(){const{gl:t}=this,i={loseContext:t.getExtension("WEBGL_lose_context"),anisotropicFiltering:t.getExtension("EXT_texture_filter_anisotropic"),floatTextureLinear:t.getExtension("OES_texture_float_linear"),s3tc:t.getExtension("WEBGL_compressed_texture_s3tc"),s3tc_sRGB:t.getExtension("WEBGL_compressed_texture_s3tc_srgb"),etc:t.getExtension("WEBGL_compressed_texture_etc"),etc1:t.getExten
|
||
|
varying vec2 vTextureCoord;
|
||
|
|
||
|
uniform sampler2D uSampler;
|
||
|
uniform sampler2D mask;
|
||
|
uniform float alpha;
|
||
|
uniform float npmAlpha;
|
||
|
uniform vec4 maskClamp;
|
||
|
|
||
|
void main(void)
|
||
|
{
|
||
|
float clip = step(3.5,
|
||
|
step(maskClamp.x, vMaskCoord.x) +
|
||
|
step(maskClamp.y, vMaskCoord.y) +
|
||
|
step(vMaskCoord.x, maskClamp.z) +
|
||
|
step(vMaskCoord.y, maskClamp.w));
|
||
|
|
||
|
vec4 original = texture2D(uSampler, vTextureCoord);
|
||
|
vec4 masky = texture2D(mask, vMaskCoord);
|
||
|
float alphaMul = 1.0 - npmAlpha * (1.0 - masky.a);
|
||
|
|
||
|
original *= (alphaMul * masky.r * alpha * clip);
|
||
|
|
||
|
gl_FragColor = original;
|
||
|
}
|
||
|
`,Ic=`attribute vec2 aVertexPosition;
|
||
|
attribute vec2 aTextureCoord;
|
||
|
|
||
|
uniform mat3 projectionMatrix;
|
||
|
uniform mat3 otherMatrix;
|
||
|
|
||
|
varying vec2 vMaskCoord;
|
||
|
varying vec2 vTextureCoord;
|
||
|
|
||
|
void main(void)
|
||
|
{
|
||
|
gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);
|
||
|
|
||
|
vTextureCoord = aTextureCoord;
|
||
|
vMaskCoord = ( otherMatrix * vec3( aTextureCoord, 1.0) ).xy;
|
||
|
}
|
||
|
`;class ua extends gt{constructor(t,i,s){let r=null;typeof t!="string"&&i===void 0&&s===void 0&&(r=t,t=void 0,i=void 0,s=void 0),super(t||Ic,i||Cc,s),this.maskSprite=r,this.maskMatrix=new tt}get maskSprite(){return this._maskSprite}set maskSprite(t){this._maskSprite=t,this._maskSprite&&(this._maskSprite.renderable=!1)}apply(t,i,s,r){const n=this._maskSprite,o=n._texture;!o.valid||(o.uvMatrix||(o.uvMatrix=new Rs(o,0)),o.uvMatrix.update(),this.uniforms.npmAlpha=o.baseTexture.alphaMode?0:1,this.uniforms.mask=o,this.uniforms.otherMatrix=t.calculateSpriteMatrix(this.maskMatrix,n).prepend(o.uvMatrix.mapCoord),this.uniforms.alpha=n.worldAlpha,this.uniforms.maskClamp=o.uvMatrix.uClampFrame,t.applyFilter(this,i,s,r))}}class da{constructor(t=null){this.type=ct.NONE,this.autoDetect=!0,this.maskObject=t||null,this.pooled=!1,this.isMaskData=!0,this.resolution=null,this.multisample=gt.defaultMultisample,this.enabled=!0,this.colorMask=15,this._filters=null,this._stencilCounter=0,this._scissorCounter=0,this._scissorRect=null,this._scissorRectLocal=null,this._colorMask=15,this._target=null}get filter(){return this._filters?this._filters[0]:null}set filter(t){t?this._filters?this._filters[0]=t:this._filters=[t]:this._filters=null}reset(){this.pooled&&(this.maskObject=null,this.type=ct.NONE,this.autoDetect=!0),this._target=null,this._scissorRectLocal=null}copyCountersOrReset(t){t?(this._stencilCounter=t._stencilCounter,this._scissorCounter=t._scissorCounter,this._scissorRect=t._scissorRect):(this._stencilCounter=0,this._scissorCounter=0,this._scissorRect=null)}}class $r{constructor(t){this.renderer=t,this.enableScissor=!0,this.alphaMaskPool=[],this.maskDataPool=[],this.maskStack=[],this.alphaMaskIndex=0}setMaskStack(t){this.maskStack=t,this.renderer.scissor.setMaskStack(t),this.renderer.stencil.setMaskStack(t)}push(t,i){let s=i;if(!s.isMaskData){const n=this.maskDataPool.pop()||new da;n.pooled=!0,n.maskObject=i,s=n}const r=this.maskStack.length!==0?this.maskStack[this.maskStack.length-1]:null;if(s.copyCountersOrReset(r),s._colorMask=r?r._colorMask:15,s.autoDetect&&this.detect(s),s._target=t,s.type!==ct.SPRITE&&this.maskStack.push(s),s.enabled)switch(s.type){case ct.SCISSOR:this.renderer.scissor.push(s);break;case ct.STENCIL:this.renderer.stencil.push(s);break;case ct.SPRITE:s.copyCountersOrReset(null),this.pushSpriteMask(s);break;case ct.COLOR:this.pushColorMask(s);break;default:break}s.type===ct.SPRITE&&this.maskStack.push(s)}pop(t){const i=this.maskStack.pop();if(!(!i||i._target!==t)){if(i.enabled)switch(i.type){case ct.SCISSOR:this.renderer.scissor.pop(i);break;case ct.STENCIL:this.renderer.stencil.pop(i.maskObject);break;case ct.SPRITE:this.popSpriteMask(i);break;case ct.COLOR:this.popColorMask(i);break;default:break}if(i.reset(),i.pooled&&this.maskDataPool.push(i),this.maskStack.length!==0){const s=this.maskStack[this.maskStack.length-1];s.type===ct.SPRITE&&s._filters&&(s._filters[0].maskSprite=s.maskObject)}}}detect(t){const i=t.maskObject;i?i.isSprite?t.type=ct.SPRITE:this.enableScissor&&this.renderer.scissor.testScissor(t)?t.type=ct.SCISSOR:t.type=ct.STENCIL:t.type=ct.COLOR}pushSpriteMask(t){var c,u;const{maskObject:i}=t,s=t._target;let r=t._filters;r||(r=this.alphaMaskPool[this.alphaMaskIndex],r||(r=this.alphaMaskPool[this.alphaMaskIndex]=[new ua]));const n=this.renderer,o=n.renderTexture;let a,h;if(o.current){const d=o.current;a=t.resolution||d.resolution,h=(c=t.multisample)!=null?c:d.multisample}else a=t.resolution||n.resolution,h=(u=t.multisample)!=null?u:n.multisample;r[0].resolution=a,r[0].multisample=h,r[0].maskSprite=i;const l=s.filterArea;s.filterArea=i.getBounds(!0),n.filter.push(s,r),s.filterArea=l,t._filters||this.alphaMaskIndex++}popSpriteMask(t){this.renderer.filter.pop(),t._filters?t._filters[0].maskSprite=null:(this.alphaMaskIndex--,this.alphaMaskPool[this.alphaMaskIndex][0].maskSprite=null)}pushColorMask(t){const i=t._colorMask,s=t._colorMask=i&t.colorMask;s!==i&&this.renderer.gl.colorMask((s&1)!==0,(s&2)!==0,(s&4)!==0,(s&8)!==0)}popColorMask(t){const i=t._colorMask,s=this.maskStack.length>0?this.maskStack[this.ma
|
||
|
data[offset] = v;
|
||
|
`,vec2:`
|
||
|
data[offset] = v[0];
|
||
|
data[offset+1] = v[1];
|
||
|
`,vec3:`
|
||
|
data[offset] = v[0];
|
||
|
data[offset+1] = v[1];
|
||
|
data[offset+2] = v[2];
|
||
|
|
||
|
`,vec4:`
|
||
|
data[offset] = v[0];
|
||
|
data[offset+1] = v[1];
|
||
|
data[offset+2] = v[2];
|
||
|
data[offset+3] = v[3];
|
||
|
`,mat2:`
|
||
|
data[offset] = v[0];
|
||
|
data[offset+1] = v[1];
|
||
|
|
||
|
data[offset+4] = v[2];
|
||
|
data[offset+5] = v[3];
|
||
|
`,mat3:`
|
||
|
data[offset] = v[0];
|
||
|
data[offset+1] = v[1];
|
||
|
data[offset+2] = v[2];
|
||
|
|
||
|
data[offset + 4] = v[3];
|
||
|
data[offset + 5] = v[4];
|
||
|
data[offset + 6] = v[5];
|
||
|
|
||
|
data[offset + 8] = v[6];
|
||
|
data[offset + 9] = v[7];
|
||
|
data[offset + 10] = v[8];
|
||
|
`,mat4:`
|
||
|
for(var i = 0; i < 16; i++)
|
||
|
{
|
||
|
data[offset + i] = v[i];
|
||
|
}
|
||
|
`},ya={float:4,vec2:8,vec3:12,vec4:16,int:4,ivec2:8,ivec3:12,ivec4:16,uint:4,uvec2:8,uvec3:12,uvec4:16,bool:4,bvec2:8,bvec3:12,bvec4:16,mat2:16*2,mat3:16*3,mat4:16*4};function va(e){const t=e.map(n=>({data:n,offset:0,dataLen:0,dirty:0}));let i=0,s=0,r=0;for(let n=0;n<t.length;n++){const o=t[n];if(i=ya[o.data.type],o.data.size>1&&(i=Math.max(i,16)*o.data.size),o.dataLen=i,s%i!==0&&s<16){const a=s%i%16;s+=a,r+=a}s+i>16?(r=Math.ceil(r/16)*16,o.offset=r,r+=i,s=i):(o.offset=r,s+=i,r+=i)}return r=Math.ceil(r/16)*16,{uboElements:t,size:r}}function xa(e,t){const i=[];for(const s in e)t[s]&&i.push(t[s]);return i.sort((s,r)=>s.index-r.index),i}function ba(e,t){if(!e.autoManage)return{size:0,syncFunc:Fc};const i=xa(e.uniforms,t),{uboElements:s,size:r}=va(i),n=[`
|
||
|
var v = null;
|
||
|
var v2 = null;
|
||
|
var cv = null;
|
||
|
var t = 0;
|
||
|
var gl = renderer.gl
|
||
|
var index = 0;
|
||
|
var data = buffer.data;
|
||
|
`];for(let o=0;o<s.length;o++){const a=s[o],h=e.uniforms[a.data.name],l=a.data.name;let c=!1;for(let u=0;u<Ne.length;u++){const d=Ne[u];if(d.codeUbo&&d.test(a.data,h)){n.push(`offset = ${a.offset/4};`,Ne[u].codeUbo(a.data.name,h)),c=!0;break}}if(!c)if(a.data.size>1){const u=Qo(a.data.type),d=Math.max(ya[a.data.type]/16,1),f=u/d,p=(4-f%4)%4;n.push(`
|
||
|
cv = ud.${l}.value;
|
||
|
v = uv.${l};
|
||
|
offset = ${a.offset/4};
|
||
|
|
||
|
t = 0;
|
||
|
|
||
|
for(var i=0; i < ${a.data.size*d}; i++)
|
||
|
{
|
||
|
for(var j = 0; j < ${f}; j++)
|
||
|
{
|
||
|
data[offset++] = v[t++];
|
||
|
}
|
||
|
offset += ${p};
|
||
|
}
|
||
|
|
||
|
`)}else{const u=Nc[a.data.type];n.push(`
|
||
|
cv = ud.${l}.value;
|
||
|
v = uv.${l};
|
||
|
offset = ${a.offset/4};
|
||
|
${u};
|
||
|
`)}}return n.push(`
|
||
|
renderer.buffer.update(buffer);
|
||
|
`),{size:r,syncFunc:new Function("ud","uv","renderer","syncData","buffer",n.join(`
|
||
|
`))}}let Lc=0;const Is={textureCount:0,uboCount:0};class Qr{constructor(t){this.destroyed=!1,this.renderer=t,this.systemCheck(),this.gl=null,this.shader=null,this.program=null,this.cache={},this._uboCache={},this.id=Lc++}systemCheck(){if(!sa())throw new Error("Current environment does not allow unsafe-eval, please use @pixi/unsafe-eval module to enable support.")}contextChange(t){this.gl=t,this.reset()}bind(t,i){t.disposeRunner.add(this),t.uniforms.globals=this.renderer.globalUniforms;const s=t.program,r=s.glPrograms[this.renderer.CONTEXT_UID]||this.generateProgram(t);return this.shader=t,this.program!==s&&(this.program=s,this.gl.useProgram(r.program)),i||(Is.textureCount=0,Is.uboCount=0,this.syncUniformGroup(t.uniformGroup,Is)),r}setUniforms(t){const i=this.shader.program,s=i.glPrograms[this.renderer.CONTEXT_UID];i.syncUniforms(s.uniformData,t,this.renderer)}syncUniformGroup(t,i){const s=this.getGlProgram();(!t.static||t.dirtyId!==s.uniformDirtyGroups[t.id])&&(s.uniformDirtyGroups[t.id]=t.dirtyId,this.syncUniforms(t,s,i))}syncUniforms(t,i,s){(t.syncUniforms[this.shader.program.id]||this.createSyncGroups(t))(i.uniformData,t.uniforms,this.renderer,s)}createSyncGroups(t){const i=this.getSignature(t,this.shader.program.uniformData,"u");return this.cache[i]||(this.cache[i]=pc(t,this.shader.program.uniformData)),t.syncUniforms[this.shader.program.id]=this.cache[i],t.syncUniforms[this.shader.program.id]}syncUniformBufferGroup(t,i){const s=this.getGlProgram();if(!t.static||t.dirtyId!==0||!s.uniformGroups[t.id]){t.dirtyId=0;const r=s.uniformGroups[t.id]||this.createSyncBufferGroup(t,s,i);t.buffer.update(),r(s.uniformData,t.uniforms,this.renderer,Is,t.buffer)}this.renderer.buffer.bindBufferBase(t.buffer,s.uniformBufferBindings[i])}createSyncBufferGroup(t,i,s){const{gl:r}=this.renderer;this.renderer.buffer.bind(t.buffer);const n=this.gl.getUniformBlockIndex(i.program,s);i.uniformBufferBindings[s]=this.shader.uniformBindCount,r.uniformBlockBinding(i.program,n,this.shader.uniformBindCount),this.shader.uniformBindCount++;const o=this.getSignature(t,this.shader.program.uniformData,"ubo");let a=this._uboCache[o];if(a||(a=this._uboCache[o]=ba(t,this.shader.program.uniformData)),t.autoManage){const h=new Float32Array(a.size/4);t.buffer.update(h)}return i.uniformGroups[t.id]=a.syncFunc,i.uniformGroups[t.id]}getSignature(t,i,s){const r=t.uniforms,n=[`${s}-`];for(const o in r)n.push(o),i[o]&&n.push(i[o].type);return n.join("-")}getGlProgram(){return this.shader?this.shader.program.glPrograms[this.renderer.CONTEXT_UID]:null}generateProgram(t){const i=this.gl,s=t.program,r=ga(i,s);return s.glPrograms[this.renderer.CONTEXT_UID]=r,r}reset(){this.program=null,this.shader=null}disposeShader(t){this.shader===t&&(this.shader=null)}destroy(){this.renderer=null,this.destroyed=!0}}Qr.extension={type:M.RendererSystem,name:"shader"},U.add(Qr);class Ai{constructor(t){this.renderer=t}run(t){const{renderer:i}=this;i.runners.init.emit(i.options),t.hello&&console.log(`PixiJS 7.2.4 - ${i.rendererLogId} - https://pixijs.com`),i.resize(i.screen.width,i.screen.height)}destroy(){}}Ai.defaultOptions={hello:!1},Ai.extension={type:[M.RendererSystem,M.CanvasRendererSystem],name:"startup"},U.add(Ai);function Oc(e,t=[]){return t[G.NORMAL]=[e.ONE,e.ONE_MINUS_SRC_ALPHA],t[G.ADD]=[e.ONE,e.ONE],t[G.MULTIPLY]=[e.DST_COLOR,e.ONE_MINUS_SRC_ALPHA,e.ONE,e.ONE_MINUS_SRC_ALPHA],t[G.SCREEN]=[e.ONE,e.ONE_MINUS_SRC_COLOR,e.ONE,e.ONE_MINUS_SRC_ALPHA],t[G.OVERLAY]=[e.ONE,e.ONE_MINUS_SRC_ALPHA],t[G.DARKEN]=[e.ONE,e.ONE_MINUS_SRC_ALPHA],t[G.LIGHTEN]=[e.ONE,e.ONE_MINUS_SRC_ALPHA],t[G.COLOR_DODGE]=[e.ONE,e.ONE_MINUS_SRC_ALPHA],t[G.COLOR_BURN]=[e.ONE,e.ONE_MINUS_SRC_ALPHA],t[G.HARD_LIGHT]=[e.ONE,e.ONE_MINUS_SRC_ALPHA],t[G.SOFT_LIGHT]=[e.ONE,e.ONE_MINUS_SRC_ALPHA],t[G.DIFFERENCE]=[e.ONE,e.ONE_MINUS_SRC_ALPHA],t[G.EXCLUSION]=[e.ONE,e.ONE_MINUS_SRC_ALPHA],t[G.HUE]=[e.ONE,e.ONE_MINUS_SRC_ALPHA],t[G.SATURATION]=[e.ONE,e.ONE_MINUS_SRC_ALPHA],t[G.COLOR]=[e.ONE,e.ONE_MINUS_SRC_ALPHA],t[G.LUMINOSITY]=[e.ONE,e.ONE_MINUS_SRC_ALPHA],t[G.NONE]=[0,0],t[G.NORMAL_NPM]=[e.SRC_ALPHA,e.ONE_MINUS_SRC_ALPHA,e
|
||
|
attribute vec2 aTextureCoord;
|
||
|
|
||
|
uniform mat3 projectionMatrix;
|
||
|
|
||
|
varying vec2 vTextureCoord;
|
||
|
|
||
|
void main(void)
|
||
|
{
|
||
|
gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);
|
||
|
vTextureCoord = aTextureCoord;
|
||
|
}`,$c=`attribute vec2 aVertexPosition;
|
||
|
|
||
|
uniform mat3 projectionMatrix;
|
||
|
|
||
|
varying vec2 vTextureCoord;
|
||
|
|
||
|
uniform vec4 inputSize;
|
||
|
uniform vec4 outputFrame;
|
||
|
|
||
|
vec4 filterVertexPosition( void )
|
||
|
{
|
||
|
vec2 position = aVertexPosition * max(outputFrame.zw, vec2(0.)) + outputFrame.xy;
|
||
|
|
||
|
return vec4((projectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0);
|
||
|
}
|
||
|
|
||
|
vec2 filterTextureCoord( void )
|
||
|
{
|
||
|
return aVertexPosition * (outputFrame.zw * inputSize.zw);
|
||
|
}
|
||
|
|
||
|
void main(void)
|
||
|
{
|
||
|
gl_Position = filterVertexPosition();
|
||
|
vTextureCoord = filterTextureCoord();
|
||
|
}
|
||
|
`;const Sa=Wc,an=$c;class hn{constructor(t){this.renderer=t}contextChange(t){let i;if(this.renderer.context.webGLVersion===1){const s=t.getParameter(t.FRAMEBUFFER_BINDING);t.bindFramebuffer(t.FRAMEBUFFER,null),i=t.getParameter(t.SAMPLES),t.bindFramebuffer(t.FRAMEBUFFER,s)}else{const s=t.getParameter(t.DRAW_FRAMEBUFFER_BINDING);t.bindFramebuffer(t.DRAW_FRAMEBUFFER,null),i=t.getParameter(t.SAMPLES),t.bindFramebuffer(t.DRAW_FRAMEBUFFER,s)}i>=ht.HIGH?this.multisample=ht.HIGH:i>=ht.MEDIUM?this.multisample=ht.MEDIUM:i>=ht.LOW?this.multisample=ht.LOW:this.multisample=ht.NONE}destroy(){}}hn.extension={type:M.RendererSystem,name:"_multisample"},U.add(hn);class jc{constructor(t){this.buffer=t||null,this.updateID=-1,this.byteLength=-1,this.refCount=0}}class ln{constructor(t){this.renderer=t,this.managedBuffers={},this.boundBufferBases={}}destroy(){this.renderer=null}contextChange(){this.disposeAll(!0),this.gl=this.renderer.gl,this.CONTEXT_UID=this.renderer.CONTEXT_UID}bind(t){const{gl:i,CONTEXT_UID:s}=this,r=t._glBuffers[s]||this.createGLBuffer(t);i.bindBuffer(t.type,r.buffer)}unbind(t){const{gl:i}=this;i.bindBuffer(t,null)}bindBufferBase(t,i){const{gl:s,CONTEXT_UID:r}=this;if(this.boundBufferBases[i]!==t){const n=t._glBuffers[r]||this.createGLBuffer(t);this.boundBufferBases[i]=t,s.bindBufferBase(s.UNIFORM_BUFFER,i,n.buffer)}}bindBufferRange(t,i,s){const{gl:r,CONTEXT_UID:n}=this;s=s||0;const o=t._glBuffers[n]||this.createGLBuffer(t);r.bindBufferRange(r.UNIFORM_BUFFER,i||0,o.buffer,s*256,256)}update(t){const{gl:i,CONTEXT_UID:s}=this,r=t._glBuffers[s]||this.createGLBuffer(t);if(t._updateID!==r.updateID)if(r.updateID=t._updateID,i.bindBuffer(t.type,r.buffer),r.byteLength>=t.data.byteLength)i.bufferSubData(t.type,0,t.data);else{const n=t.static?i.STATIC_DRAW:i.DYNAMIC_DRAW;r.byteLength=t.data.byteLength,i.bufferData(t.type,t.data,n)}}dispose(t,i){if(!this.managedBuffers[t.id])return;delete this.managedBuffers[t.id];const s=t._glBuffers[this.CONTEXT_UID],r=this.gl;t.disposeRunner.remove(this),s&&(i||r.deleteBuffer(s.buffer),delete t._glBuffers[this.CONTEXT_UID])}disposeAll(t){const i=Object.keys(this.managedBuffers);for(let s=0;s<i.length;s++)this.dispose(this.managedBuffers[i[s]],t)}createGLBuffer(t){const{CONTEXT_UID:i,gl:s}=this;return t._glBuffers[i]=new jc(s.createBuffer()),this.managedBuffers[t.id]=t,t.disposeRunner.add(this),t._glBuffers[i]}}ln.extension={type:M.RendererSystem,name:"buffer"},U.add(ln);class cn{constructor(t){this.renderer=t}render(t,i){const s=this.renderer;let r,n,o,a;if(i&&(r=i.renderTexture,n=i.clear,o=i.transform,a=i.skipUpdateTransform),this.renderingToScreen=!r,s.runners.prerender.emit(),s.emit("prerender"),s.projection.transform=o,!s.context.isLost){if(r||(this.lastObjectRendered=t),!a){const h=t.enableTempParent();t.updateTransform(),t.disableTempParent(h)}s.renderTexture.bind(r),s.batch.currentRenderer.start(),(n!=null?n:s.background.clearBeforeRender)&&s.renderTexture.clear(),t.render(s),s.batch.currentRenderer.flush(),r&&(i.blit&&s.framebuffer.blit(),r.baseTexture.update()),s.runners.postrender.emit(),s.projection.transform=null,s.emit("postrender")}}destroy(){this.renderer=null,this.lastObjectRendered=null}}cn.extension={type:M.RendererSystem,name:"objectRenderer"},U.add(cn);const un=class extends Ta{constructor(e){super(),this.type=pt.WEBGL,e=Object.assign({},P.RENDER_OPTIONS,e),this.gl=null,this.CONTEXT_UID=0,this.globalUniforms=new kt({projectionMatrix:new tt},!0);const t={runners:["init","destroy","contextChange","resolutionChange","reset","update","postrender","prerender","resize"],systems:un.__systems,priority:["_view","textureGenerator","background","_plugin","startup","context","state","texture","buffer","geometry","framebuffer","transformFeedback","mask","scissor","stencil","projection","textureGC","filter","renderTexture","batch","objectRenderer","_multisample"]};this.setup(t),"useContextAlpha"in e&&(z("7.0.0","options.useContextAlpha is deprecated, use options.premultipliedAlpha and options.backgroundAlpha instead"),e.premultipliedAlpha=e.useContextAlpha&&e.useContextAlpha!=="notMultiplied
|
||
|
|
||
|
uniform sampler2D uSampler;
|
||
|
uniform float uAlpha;
|
||
|
|
||
|
void main(void)
|
||
|
{
|
||
|
gl_FragColor = texture2D(uSampler, vTextureCoord) * uAlpha;
|
||
|
}
|
||
|
`;class Pa extends gt{constructor(t=1){super(Sa,tu,{uAlpha:1}),this.alpha=t}get alpha(){return this.uniforms.uAlpha}set alpha(t){this.uniforms.uAlpha=t}}const eu={5:[.153388,.221461,.250301],7:[.071303,.131514,.189879,.214607],9:[.028532,.067234,.124009,.179044,.20236],11:[.0093,.028002,.065984,.121703,.175713,.198596],13:[.002406,.009255,.027867,.065666,.121117,.174868,.197641],15:[489e-6,.002403,.009246,.02784,.065602,.120999,.174697,.197448]},iu=["varying vec2 vBlurTexCoords[%size%];","uniform sampler2D uSampler;","void main(void)","{"," gl_FragColor = vec4(0.0);"," %blur%","}"].join(`
|
||
|
`);function su(e){const t=eu[e],i=t.length;let s=iu,r="";const n="gl_FragColor += texture2D(uSampler, vBlurTexCoords[%index%]) * %value%;";let o;for(let a=0;a<e;a++){let h=n.replace("%index%",a.toString());o=a,a>=i&&(o=e-a-1),h=h.replace("%value%",t[o].toString()),r+=h,r+=`
|
||
|
`}return s=s.replace("%blur%",r),s=s.replace("%size%",e.toString()),s}const ru=`
|
||
|
attribute vec2 aVertexPosition;
|
||
|
|
||
|
uniform mat3 projectionMatrix;
|
||
|
|
||
|
uniform float strength;
|
||
|
|
||
|
varying vec2 vBlurTexCoords[%size%];
|
||
|
|
||
|
uniform vec4 inputSize;
|
||
|
uniform vec4 outputFrame;
|
||
|
|
||
|
vec4 filterVertexPosition( void )
|
||
|
{
|
||
|
vec2 position = aVertexPosition * max(outputFrame.zw, vec2(0.)) + outputFrame.xy;
|
||
|
|
||
|
return vec4((projectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0);
|
||
|
}
|
||
|
|
||
|
vec2 filterTextureCoord( void )
|
||
|
{
|
||
|
return aVertexPosition * (outputFrame.zw * inputSize.zw);
|
||
|
}
|
||
|
|
||
|
void main(void)
|
||
|
{
|
||
|
gl_Position = filterVertexPosition();
|
||
|
|
||
|
vec2 textureCoord = filterTextureCoord();
|
||
|
%blur%
|
||
|
}`;function nu(e,t){const i=Math.ceil(e/2);let s=ru,r="",n;t?n="vBlurTexCoords[%index%] = textureCoord + vec2(%sampleIndex% * strength, 0.0);":n="vBlurTexCoords[%index%] = textureCoord + vec2(0.0, %sampleIndex% * strength);";for(let o=0;o<e;o++){let a=n.replace("%index%",o.toString());a=a.replace("%sampleIndex%",`${o-(i-1)}.0`),r+=a,r+=`
|
||
|
`}return s=s.replace("%blur%",r),s=s.replace("%size%",e.toString()),s}class Fs extends gt{constructor(t,i=8,s=4,r=gt.defaultResolution,n=5){const o=nu(n,t),a=su(n);super(o,a),this.horizontal=t,this.resolution=r,this._quality=0,this.quality=s,this.blur=i}apply(t,i,s,r){if(s?this.horizontal?this.uniforms.strength=1/s.width*(s.width/i.width):this.uniforms.strength=1/s.height*(s.height/i.height):this.horizontal?this.uniforms.strength=1/t.renderer.width*(t.renderer.width/i.width):this.uniforms.strength=1/t.renderer.height*(t.renderer.height/i.height),this.uniforms.strength*=this.strength,this.uniforms.strength/=this.passes,this.passes===1)t.applyFilter(this,i,s,r);else{const n=t.getFilterTexture(),o=t.renderer;let a=i,h=n;this.state.blend=!1,t.applyFilter(this,a,h,$t.CLEAR);for(let l=1;l<this.passes-1;l++){t.bindAndClear(a,$t.BLIT),this.uniforms.uSampler=h;const c=h;h=a,a=c,o.shader.bind(this),o.geometry.draw(5)}this.state.blend=!0,t.applyFilter(this,h,s,r),t.returnFilterTexture(n)}}get blur(){return this.strength}set blur(t){this.padding=1+Math.abs(t)*2,this.strength=t}get quality(){return this._quality}set quality(t){this._quality=t,this.passes=t}}class Ma extends gt{constructor(t=8,i=4,s=gt.defaultResolution,r=5){super(),this._repeatEdgePixels=!1,this.blurXFilter=new Fs(!0,t,i,s,r),this.blurYFilter=new Fs(!1,t,i,s,r),this.resolution=s,this.quality=i,this.blur=t,this.repeatEdgePixels=!1}apply(t,i,s,r){const n=Math.abs(this.blurXFilter.strength),o=Math.abs(this.blurYFilter.strength);if(n&&o){const a=t.getFilterTexture();this.blurXFilter.apply(t,i,a,$t.CLEAR),this.blurYFilter.apply(t,a,s,r),t.returnFilterTexture(a)}else o?this.blurYFilter.apply(t,i,s,r):this.blurXFilter.apply(t,i,s,r)}updatePadding(){this._repeatEdgePixels?this.padding=0:this.padding=Math.max(Math.abs(this.blurXFilter.strength),Math.abs(this.blurYFilter.strength))*2}get blur(){return this.blurXFilter.blur}set blur(t){this.blurXFilter.blur=this.blurYFilter.blur=t,this.updatePadding()}get quality(){return this.blurXFilter.quality}set quality(t){this.blurXFilter.quality=this.blurYFilter.quality=t}get blurX(){return this.blurXFilter.blur}set blurX(t){this.blurXFilter.blur=t,this.updatePadding()}get blurY(){return this.blurYFilter.blur}set blurY(t){this.blurYFilter.blur=t,this.updatePadding()}get blendMode(){return this.blurYFilter.blendMode}set blendMode(t){this.blurYFilter.blendMode=t}get repeatEdgePixels(){return this._repeatEdgePixels}set repeatEdgePixels(t){this._repeatEdgePixels=t,this.updatePadding()}}var ou=`varying vec2 vTextureCoord;
|
||
|
uniform sampler2D uSampler;
|
||
|
uniform float m[20];
|
||
|
uniform float uAlpha;
|
||
|
|
||
|
void main(void)
|
||
|
{
|
||
|
vec4 c = texture2D(uSampler, vTextureCoord);
|
||
|
|
||
|
if (uAlpha == 0.0) {
|
||
|
gl_FragColor = c;
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
// Un-premultiply alpha before applying the color matrix. See issue #3539.
|
||
|
if (c.a > 0.0) {
|
||
|
c.rgb /= c.a;
|
||
|
}
|
||
|
|
||
|
vec4 result;
|
||
|
|
||
|
result.r = (m[0] * c.r);
|
||
|
result.r += (m[1] * c.g);
|
||
|
result.r += (m[2] * c.b);
|
||
|
result.r += (m[3] * c.a);
|
||
|
result.r += m[4];
|
||
|
|
||
|
result.g = (m[5] * c.r);
|
||
|
result.g += (m[6] * c.g);
|
||
|
result.g += (m[7] * c.b);
|
||
|
result.g += (m[8] * c.a);
|
||
|
result.g += m[9];
|
||
|
|
||
|
result.b = (m[10] * c.r);
|
||
|
result.b += (m[11] * c.g);
|
||
|
result.b += (m[12] * c.b);
|
||
|
result.b += (m[13] * c.a);
|
||
|
result.b += m[14];
|
||
|
|
||
|
result.a = (m[15] * c.r);
|
||
|
result.a += (m[16] * c.g);
|
||
|
result.a += (m[17] * c.b);
|
||
|
result.a += (m[18] * c.a);
|
||
|
result.a += m[19];
|
||
|
|
||
|
vec3 rgb = mix(c.rgb, result.rgb, uAlpha);
|
||
|
|
||
|
// Premultiply alpha again.
|
||
|
rgb *= result.a;
|
||
|
|
||
|
gl_FragColor = vec4(rgb, result.a);
|
||
|
}
|
||
|
`;class Ns extends gt{constructor(){const t={m:new Float32Array([1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0]),uAlpha:1};super(an,ou,t),this.alpha=1}_loadMatrix(t,i=!1){let s=t;i&&(this._multiply(s,this.uniforms.m,t),s=this._colorMatrix(s)),this.uniforms.m=s}_multiply(t,i,s){return t[0]=i[0]*s[0]+i[1]*s[5]+i[2]*s[10]+i[3]*s[15],t[1]=i[0]*s[1]+i[1]*s[6]+i[2]*s[11]+i[3]*s[16],t[2]=i[0]*s[2]+i[1]*s[7]+i[2]*s[12]+i[3]*s[17],t[3]=i[0]*s[3]+i[1]*s[8]+i[2]*s[13]+i[3]*s[18],t[4]=i[0]*s[4]+i[1]*s[9]+i[2]*s[14]+i[3]*s[19]+i[4],t[5]=i[5]*s[0]+i[6]*s[5]+i[7]*s[10]+i[8]*s[15],t[6]=i[5]*s[1]+i[6]*s[6]+i[7]*s[11]+i[8]*s[16],t[7]=i[5]*s[2]+i[6]*s[7]+i[7]*s[12]+i[8]*s[17],t[8]=i[5]*s[3]+i[6]*s[8]+i[7]*s[13]+i[8]*s[18],t[9]=i[5]*s[4]+i[6]*s[9]+i[7]*s[14]+i[8]*s[19]+i[9],t[10]=i[10]*s[0]+i[11]*s[5]+i[12]*s[10]+i[13]*s[15],t[11]=i[10]*s[1]+i[11]*s[6]+i[12]*s[11]+i[13]*s[16],t[12]=i[10]*s[2]+i[11]*s[7]+i[12]*s[12]+i[13]*s[17],t[13]=i[10]*s[3]+i[11]*s[8]+i[12]*s[13]+i[13]*s[18],t[14]=i[10]*s[4]+i[11]*s[9]+i[12]*s[14]+i[13]*s[19]+i[14],t[15]=i[15]*s[0]+i[16]*s[5]+i[17]*s[10]+i[18]*s[15],t[16]=i[15]*s[1]+i[16]*s[6]+i[17]*s[11]+i[18]*s[16],t[17]=i[15]*s[2]+i[16]*s[7]+i[17]*s[12]+i[18]*s[17],t[18]=i[15]*s[3]+i[16]*s[8]+i[17]*s[13]+i[18]*s[18],t[19]=i[15]*s[4]+i[16]*s[9]+i[17]*s[14]+i[18]*s[19]+i[19],t}_colorMatrix(t){const i=new Float32Array(t);return i[4]/=255,i[9]/=255,i[14]/=255,i[19]/=255,i}brightness(t,i){const s=[t,0,0,0,0,0,t,0,0,0,0,0,t,0,0,0,0,0,1,0];this._loadMatrix(s,i)}tint(t,i){const[s,r,n]=j.shared.setValue(t).toArray(),o=[s,0,0,0,0,0,r,0,0,0,0,0,n,0,0,0,0,0,1,0];this._loadMatrix(o,i)}greyscale(t,i){const s=[t,t,t,0,0,t,t,t,0,0,t,t,t,0,0,0,0,0,1,0];this._loadMatrix(s,i)}blackAndWhite(t){const i=[.3,.6,.1,0,0,.3,.6,.1,0,0,.3,.6,.1,0,0,0,0,0,1,0];this._loadMatrix(i,t)}hue(t,i){t=(t||0)/180*Math.PI;const s=Math.cos(t),r=Math.sin(t),n=Math.sqrt,o=1/3,a=n(o),h=s+(1-s)*o,l=o*(1-s)-a*r,c=o*(1-s)+a*r,u=o*(1-s)+a*r,d=s+o*(1-s),f=o*(1-s)-a*r,p=o*(1-s)-a*r,_=o*(1-s)+a*r,g=s+o*(1-s),v=[h,l,c,0,0,u,d,f,0,0,p,_,g,0,0,0,0,0,1,0];this._loadMatrix(v,i)}contrast(t,i){const s=(t||0)+1,r=-.5*(s-1),n=[s,0,0,0,r,0,s,0,0,r,0,0,s,0,r,0,0,0,1,0];this._loadMatrix(n,i)}saturate(t=0,i){const s=t*2/3+1,r=(s-1)*-.5,n=[s,r,r,0,0,r,s,r,0,0,r,r,s,0,0,0,0,0,1,0];this._loadMatrix(n,i)}desaturate(){this.saturate(-1)}negative(t){const i=[-1,0,0,1,0,0,-1,0,1,0,0,0,-1,1,0,0,0,0,1,0];this._loadMatrix(i,t)}sepia(t){const i=[.393,.7689999,.18899999,0,0,.349,.6859999,.16799999,0,0,.272,.5339999,.13099999,0,0,0,0,0,1,0];this._loadMatrix(i,t)}technicolor(t){const i=[1.9125277891456083,-.8545344976951645,-.09155508482755585,0,11.793603434377337,-.3087833385928097,1.7658908555458428,-.10601743074722245,0,-70.35205161461398,-.231103377548616,-.7501899197440212,1.847597816108189,0,30.950940869491138,0,0,0,1,0];this._loadMatrix(i,t)}polaroid(t){const i=[1.438,-.062,-.062,0,0,-.122,1.378,-.122,0,0,-.016,-.016,1.483,0,0,0,0,0,1,0];this._loadMatrix(i,t)}toBGR(t){const i=[0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0];this._loadMatrix(i,t)}kodachrome(t){const i=[1.1285582396593525,-.3967382283601348,-.03992559172921793,0,63.72958762196502,-.16404339962244616,1.0835251566291304,-.05498805115633132,0,24.732407896706203,-.16786010706155763,-.5603416277695248,1.6014850761964943,0,35.62982807460946,0,0,0,1,0];this._loadMatrix(i,t)}browni(t){const i=[.5997023498159715,.34553243048391263,-.2708298674538042,0,47.43192855600873,-.037703249837783157,.8609577587992641,.15059552388459913,0,-36.96841498319127,.24113635128153335,-.07441037908422492,.44972182064877153,0,-7.562075277591283,0,0,0,1,0];this._loadMatrix(i,t)}vintage(t){const i=[.6279345635605994,.3202183420819367,-.03965408211312453,0,9.651285835294123,.02578397704808868,.6441188644374771,.03259127616149294,0,7.462829176470591,.0466055556782719,-.0851232987247891,.5241648018700465,0,5.159190588235296,0,0,0,1,0];this._loadMatrix(i,t)}colorTone(t,i,s,r,n){t=t||.2,i=i||.15,s=s||16770432,r=r||3375104;const o=j.shared,[a,h,l]=o.setValue(s).toArray(),[c,u,d]=o.setValue(r).toArray(),f=[.3,.59,.11,0,0,a,h,l,t,0,c,u,d,i,0,a-c,h-u,l-d,0,0];this._loadMatrix
|
||
|
varying vec2 vTextureCoord;
|
||
|
|
||
|
uniform vec2 scale;
|
||
|
uniform mat2 rotation;
|
||
|
uniform sampler2D uSampler;
|
||
|
uniform sampler2D mapSampler;
|
||
|
|
||
|
uniform highp vec4 inputSize;
|
||
|
uniform vec4 inputClamp;
|
||
|
|
||
|
void main(void)
|
||
|
{
|
||
|
vec4 map = texture2D(mapSampler, vFilterCoord);
|
||
|
|
||
|
map -= 0.5;
|
||
|
map.xy = scale * inputSize.zw * (rotation * map.xy);
|
||
|
|
||
|
gl_FragColor = texture2D(uSampler, clamp(vec2(vTextureCoord.x + map.x, vTextureCoord.y + map.y), inputClamp.xy, inputClamp.zw));
|
||
|
}
|
||
|
`,hu=`attribute vec2 aVertexPosition;
|
||
|
|
||
|
uniform mat3 projectionMatrix;
|
||
|
uniform mat3 filterMatrix;
|
||
|
|
||
|
varying vec2 vTextureCoord;
|
||
|
varying vec2 vFilterCoord;
|
||
|
|
||
|
uniform vec4 inputSize;
|
||
|
uniform vec4 outputFrame;
|
||
|
|
||
|
vec4 filterVertexPosition( void )
|
||
|
{
|
||
|
vec2 position = aVertexPosition * max(outputFrame.zw, vec2(0.)) + outputFrame.xy;
|
||
|
|
||
|
return vec4((projectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0);
|
||
|
}
|
||
|
|
||
|
vec2 filterTextureCoord( void )
|
||
|
{
|
||
|
return aVertexPosition * (outputFrame.zw * inputSize.zw);
|
||
|
}
|
||
|
|
||
|
void main(void)
|
||
|
{
|
||
|
gl_Position = filterVertexPosition();
|
||
|
vTextureCoord = filterTextureCoord();
|
||
|
vFilterCoord = ( filterMatrix * vec3( vTextureCoord, 1.0) ).xy;
|
||
|
}
|
||
|
`;class Ba extends gt{constructor(t,i){const s=new tt;t.renderable=!1,super(hu,au,{mapSampler:t._texture,filterMatrix:s,scale:{x:1,y:1},rotation:new Float32Array([1,0,0,1])}),this.maskSprite=t,this.maskMatrix=s,i==null&&(i=20),this.scale=new Y(i,i)}apply(t,i,s,r){this.uniforms.filterMatrix=t.calculateSpriteMatrix(this.maskMatrix,this.maskSprite),this.uniforms.scale.x=this.scale.x,this.uniforms.scale.y=this.scale.y;const n=this.maskSprite.worldTransform,o=Math.sqrt(n.a*n.a+n.b*n.b),a=Math.sqrt(n.c*n.c+n.d*n.d);o!==0&&a!==0&&(this.uniforms.rotation[0]=n.a/o,this.uniforms.rotation[1]=n.b/o,this.uniforms.rotation[2]=n.c/a,this.uniforms.rotation[3]=n.d/a),t.applyFilter(this,i,s,r)}get map(){return this.uniforms.mapSampler}set map(t){this.uniforms.mapSampler=t}}var lu=`varying vec2 v_rgbNW;
|
||
|
varying vec2 v_rgbNE;
|
||
|
varying vec2 v_rgbSW;
|
||
|
varying vec2 v_rgbSE;
|
||
|
varying vec2 v_rgbM;
|
||
|
|
||
|
varying vec2 vFragCoord;
|
||
|
uniform sampler2D uSampler;
|
||
|
uniform highp vec4 inputSize;
|
||
|
|
||
|
|
||
|
/**
|
||
|
Basic FXAA implementation based on the code on geeks3d.com with the
|
||
|
modification that the texture2DLod stuff was removed since it's
|
||
|
unsupported by WebGL.
|
||
|
|
||
|
--
|
||
|
|
||
|
From:
|
||
|
https://github.com/mitsuhiko/webgl-meincraft
|
||
|
|
||
|
Copyright (c) 2011 by Armin Ronacher.
|
||
|
|
||
|
Some rights reserved.
|
||
|
|
||
|
Redistribution and use in source and binary forms, with or without
|
||
|
modification, are permitted provided that the following conditions are
|
||
|
met:
|
||
|
|
||
|
* Redistributions of source code must retain the above copyright
|
||
|
notice, this list of conditions and the following disclaimer.
|
||
|
|
||
|
* Redistributions in binary form must reproduce the above
|
||
|
copyright notice, this list of conditions and the following
|
||
|
disclaimer in the documentation and/or other materials provided
|
||
|
with the distribution.
|
||
|
|
||
|
* The names of the contributors may not be used to endorse or
|
||
|
promote products derived from this software without specific
|
||
|
prior written permission.
|
||
|
|
||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||
|
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||
|
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||
|
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||
|
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||
|
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||
|
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||
|
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||
|
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||
|
*/
|
||
|
|
||
|
#ifndef FXAA_REDUCE_MIN
|
||
|
#define FXAA_REDUCE_MIN (1.0/ 128.0)
|
||
|
#endif
|
||
|
#ifndef FXAA_REDUCE_MUL
|
||
|
#define FXAA_REDUCE_MUL (1.0 / 8.0)
|
||
|
#endif
|
||
|
#ifndef FXAA_SPAN_MAX
|
||
|
#define FXAA_SPAN_MAX 8.0
|
||
|
#endif
|
||
|
|
||
|
//optimized version for mobile, where dependent
|
||
|
//texture reads can be a bottleneck
|
||
|
vec4 fxaa(sampler2D tex, vec2 fragCoord, vec2 inverseVP,
|
||
|
vec2 v_rgbNW, vec2 v_rgbNE,
|
||
|
vec2 v_rgbSW, vec2 v_rgbSE,
|
||
|
vec2 v_rgbM) {
|
||
|
vec4 color;
|
||
|
vec3 rgbNW = texture2D(tex, v_rgbNW).xyz;
|
||
|
vec3 rgbNE = texture2D(tex, v_rgbNE).xyz;
|
||
|
vec3 rgbSW = texture2D(tex, v_rgbSW).xyz;
|
||
|
vec3 rgbSE = texture2D(tex, v_rgbSE).xyz;
|
||
|
vec4 texColor = texture2D(tex, v_rgbM);
|
||
|
vec3 rgbM = texColor.xyz;
|
||
|
vec3 luma = vec3(0.299, 0.587, 0.114);
|
||
|
float lumaNW = dot(rgbNW, luma);
|
||
|
float lumaNE = dot(rgbNE, luma);
|
||
|
float lumaSW = dot(rgbSW, luma);
|
||
|
float lumaSE = dot(rgbSE, luma);
|
||
|
float lumaM = dot(rgbM, luma);
|
||
|
float lumaMin = min(lumaM, min(min(lumaNW, lumaNE), min(lumaSW, lumaSE)));
|
||
|
float lumaMax = max(lumaM, max(max(lumaNW, lumaNE), max(lumaSW, lumaSE)));
|
||
|
|
||
|
mediump vec2 dir;
|
||
|
dir.x = -((lumaNW + lumaNE) - (lumaSW + lumaSE));
|
||
|
dir.y = ((lumaNW + lumaSW) - (lumaNE + lumaSE));
|
||
|
|
||
|
float dirReduce = max((lumaNW + lumaNE + lumaSW + lumaSE) *
|
||
|
(0.25 * FXAA_REDUCE_MUL), FXAA_REDUCE_MIN);
|
||
|
|
||
|
float rcpDirMin = 1.0 / (min(abs(dir.x), abs(dir.y)) + dirReduce);
|
||
|
dir = min(vec2(FXAA_SPAN_MAX, FXAA_SPAN_MAX),
|
||
|
max(vec2(-FXAA_SPAN_MAX, -FXAA_SPAN_MAX),
|
||
|
dir * rcpDirMin)) * inverseVP;
|
||
|
|
||
|
vec3 rgbA = 0.5 * (
|
||
|
texture2D(tex, fragCoord * inverseVP + dir * (1.0 / 3.0 - 0.5)).xyz +
|
||
|
texture2D(tex, fragCoord * inverseVP + dir * (2.0 / 3.0 - 0.5)).xyz);
|
||
|
vec3 rgbB = rgbA * 0.5 + 0.25 * (
|
||
|
texture2D(tex, fragCoord * inverseVP + dir * -0.5).xyz +
|
||
|
texture2D(tex, fragCoord * inverseVP + dir * 0.5).xyz);
|
||
|
|
||
|
float lumaB = dot(rgbB, luma);
|
||
|
if ((lumaB < lumaMin) || (lumaB > lumaMax))
|
||
|
color = vec4(rgbA, texColor.a);
|
||
|
else
|
||
|
color = vec4(rgbB, texColor.a);
|
||
|
return color;
|
||
|
}
|
||
|
|
||
|
void main() {
|
||
|
|
||
|
vec4 color;
|
||
|
|
||
|
color = fxaa(uSampler, vFragCoord, inputSize.zw, v_rgbNW, v_rgbNE, v_rgbSW, v_rgbSE, v_rgbM);
|
||
|
|
||
|
gl_FragColor = color;
|
||
|
}
|
||
|
`,cu=`
|
||
|
attribute vec2 aVertexPosition;
|
||
|
|
||
|
uniform mat3 projectionMatrix;
|
||
|
|
||
|
varying vec2 v_rgbNW;
|
||
|
varying vec2 v_rgbNE;
|
||
|
varying vec2 v_rgbSW;
|
||
|
varying vec2 v_rgbSE;
|
||
|
varying vec2 v_rgbM;
|
||
|
|
||
|
varying vec2 vFragCoord;
|
||
|
|
||
|
uniform vec4 inputSize;
|
||
|
uniform vec4 outputFrame;
|
||
|
|
||
|
vec4 filterVertexPosition( void )
|
||
|
{
|
||
|
vec2 position = aVertexPosition * max(outputFrame.zw, vec2(0.)) + outputFrame.xy;
|
||
|
|
||
|
return vec4((projectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0);
|
||
|
}
|
||
|
|
||
|
void texcoords(vec2 fragCoord, vec2 inverseVP,
|
||
|
out vec2 v_rgbNW, out vec2 v_rgbNE,
|
||
|
out vec2 v_rgbSW, out vec2 v_rgbSE,
|
||
|
out vec2 v_rgbM) {
|
||
|
v_rgbNW = (fragCoord + vec2(-1.0, -1.0)) * inverseVP;
|
||
|
v_rgbNE = (fragCoord + vec2(1.0, -1.0)) * inverseVP;
|
||
|
v_rgbSW = (fragCoord + vec2(-1.0, 1.0)) * inverseVP;
|
||
|
v_rgbSE = (fragCoord + vec2(1.0, 1.0)) * inverseVP;
|
||
|
v_rgbM = vec2(fragCoord * inverseVP);
|
||
|
}
|
||
|
|
||
|
void main(void) {
|
||
|
|
||
|
gl_Position = filterVertexPosition();
|
||
|
|
||
|
vFragCoord = aVertexPosition * outputFrame.zw;
|
||
|
|
||
|
texcoords(vFragCoord, inputSize.zw, v_rgbNW, v_rgbNE, v_rgbSW, v_rgbSE, v_rgbM);
|
||
|
}
|
||
|
`;class Da extends gt{constructor(){super(cu,lu)}}var uu=`precision highp float;
|
||
|
|
||
|
varying vec2 vTextureCoord;
|
||
|
varying vec4 vColor;
|
||
|
|
||
|
uniform float uNoise;
|
||
|
uniform float uSeed;
|
||
|
uniform sampler2D uSampler;
|
||
|
|
||
|
float rand(vec2 co)
|
||
|
{
|
||
|
return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453);
|
||
|
}
|
||
|
|
||
|
void main()
|
||
|
{
|
||
|
vec4 color = texture2D(uSampler, vTextureCoord);
|
||
|
float randomValue = rand(gl_FragCoord.xy * uSeed);
|
||
|
float diff = (randomValue - 0.5) * uNoise;
|
||
|
|
||
|
// Un-premultiply alpha before applying the color matrix. See issue #3539.
|
||
|
if (color.a > 0.0) {
|
||
|
color.rgb /= color.a;
|
||
|
}
|
||
|
|
||
|
color.r += diff;
|
||
|
color.g += diff;
|
||
|
color.b += diff;
|
||
|
|
||
|
// Premultiply alpha again.
|
||
|
color.rgb *= color.a;
|
||
|
|
||
|
gl_FragColor = color;
|
||
|
}
|
||
|
`;class Fa extends gt{constructor(t=.5,i=Math.random()){super(an,uu,{uNoise:0,uSeed:0}),this.noise=t,this.seed=i}get noise(){return this.uniforms.uNoise}set noise(t){this.uniforms.uNoise=t}get seed(){return this.uniforms.uSeed}set seed(t){this.uniforms.uSeed=t}}const _n={AlphaFilter:Pa,BlurFilter:Ma,BlurFilterPass:Fs,ColorMatrixFilter:Ns,DisplacementFilter:Ba,FXAAFilter:Da,NoiseFilter:Fa};Object.entries(_n).forEach(([e,t])=>{Object.defineProperty(_n,e,{get(){return t}})});class du{constructor(){this.interactionFrequency=10,this._deltaTime=0,this._didMove=!1,this.tickerAdded=!1,this._pauseUpdate=!0}init(t){this.removeTickerListener(),this.events=t,this.interactionFrequency=10,this._deltaTime=0,this._didMove=!1,this.tickerAdded=!1,this._pauseUpdate=!0}get pauseUpdate(){return this._pauseUpdate}set pauseUpdate(t){this._pauseUpdate=t}addTickerListener(){this.tickerAdded||!this.domElement||(lt.system.add(this.tickerUpdate,this,ge.INTERACTION),this.tickerAdded=!0)}removeTickerListener(){!this.tickerAdded||(lt.system.remove(this.tickerUpdate,this),this.tickerAdded=!1)}pointerMoved(){this._didMove=!0}update(){if(!this.domElement||this._pauseUpdate)return;if(this._didMove){this._didMove=!1;return}const t=this.events.rootPointerEvent;this.events.supportsTouchEvents&&t.pointerType==="touch"||globalThis.document.dispatchEvent(new PointerEvent("pointermove",{clientX:t.clientX,clientY:t.clientY}))}tickerUpdate(t){this._deltaTime+=t,!(this._deltaTime<this.interactionFrequency)&&(this._deltaTime=0,this.update())}}const Te=new du;class Qe{constructor(t){this.bubbles=!0,this.cancelBubble=!0,this.cancelable=!1,this.composed=!1,this.defaultPrevented=!1,this.eventPhase=Qe.prototype.NONE,this.propagationStopped=!1,this.propagationImmediatelyStopped=!1,this.layer=new Y,this.page=new Y,this.NONE=0,this.CAPTURING_PHASE=1,this.AT_TARGET=2,this.BUBBLING_PHASE=3,this.manager=t}get layerX(){return this.layer.x}get layerY(){return this.layer.y}get pageX(){return this.page.x}get pageY(){return this.page.y}get data(){return this}composedPath(){return this.manager&&(!this.path||this.path[this.path.length-1]!==this.target)&&(this.path=this.target?this.manager.propagationPath(this.target):[]),this.path}initEvent(t,i,s){throw new Error("initEvent() is a legacy DOM API. It is not implemented in the Federated Events API.")}initUIEvent(t,i,s,r,n){throw new Error("initUIEvent() is a legacy DOM API. It is not implemented in the Federated Events API.")}preventDefault(){this.nativeEvent instanceof Event&&this.nativeEvent.cancelable&&this.nativeEvent.preventDefault(),this.defaultPrevented=!0}stopImmediatePropagation(){this.propagationImmediatelyStopped=!0}stopPropagation(){this.propagationStopped=!0}}class Mi extends Qe{constructor(){super(...arguments),this.client=new Y,this.movement=new Y,this.offset=new Y,this.global=new Y,this.screen=new Y}get clientX(){return this.client.x}get clientY(){return this.client.y}get x(){return this.clientX}get y(){return this.clientY}get movementX(){return this.movement.x}get movementY(){return this.movement.y}get offsetX(){return this.offset.x}get offsetY(){return this.offset.y}get globalX(){return this.global.x}get globalY(){return this.global.y}get screenX(){return this.screen.x}get screenY(){return this.screen.y}getLocalPosition(t,i,s){return t.worldTransform.applyInverse(s||this.global,i)}getModifierState(t){return"getModifierState"in this.nativeEvent&&this.nativeEvent.getModifierState(t)}initMouseEvent(t,i,s,r,n,o,a,h,l,c,u,d,f,p,_){throw new Error("Method not implemented.")}}class Xt extends Mi{constructor(){super(...arguments),this.width=0,this.height=0,this.isPrimary=!1}getCoalescedEvents(){return this.type==="pointermove"||this.type==="mousemove"||this.type==="touchmove"?[this]:[]}getPredictedEvents(){throw new Error("getPredictedEvents is not supported!")}}class ke extends Mi{constructor(){super(...arguments),this.DOM_DELTA_PIXEL=0,this.DOM_DELTA_LINE=1,this.DOM_DELTA_PAGE=2}}ke.DOM_DELTA_PIXEL=0,ke.DOM_DELTA_LINE=1,ke.DOM_DELTA_PAGE=2;const fu=2048,pu=new Y,gn=new Y;class Na{constructor(t){this.dispatch=new Ve,this.mo
|
||
|
${u}`)}});return await Promise.all(h),n?r[o[0].src]:r}async unload(t){const s=oe(t,r=>({src:r})).map(async r=>{var a,h;const n=Tt.toAbsolute(r.src),o=this.promiseCache[n];if(o){const l=await o.promise;(h=(a=o.parser)==null?void 0:a.unload)==null||h.call(a,l,r,this),delete this.promiseCache[n]}});await Promise.all(s)}_validateParsers(){this._parsersValidated=!0,this._parserHash=this._parsers.filter(t=>t.name).reduce((t,i)=>(t[i.name]&&console.warn(`[Assets] loadParser name conflict "${i.name}"`),Qi(bt({},t),{[i.name]:i})),{})}}var Jt=(e=>(e[e.Low=0]="Low",e[e.Normal=1]="Normal",e[e.High=2]="High",e))(Jt||{});const Au=".json",Ru="application/json",za={extension:{type:M.LoadParser,priority:Jt.Low},name:"loadJson",test(e){return ei(e,Ru)||Ee(e,Au)},async load(e){return await(await P.ADAPTER.fetch(e)).json()}};U.add(za);const Cu=".txt",Iu="text/plain",Wa={name:"loadTxt",extension:{type:M.LoadParser,priority:Jt.Low},test(e){return ei(e,Iu)||Ee(e,Cu)},async load(e){return await(await P.ADAPTER.fetch(e)).text()}};U.add(Wa);const Pu=["normal","bold","100","200","300","400","500","600","700","800","900"],Mu=[".ttf",".otf",".woff",".woff2"],Bu=["font/ttf","font/otf","font/woff","font/woff2"],Du=/^(--|-?[A-Z_])[0-9A-Z_-]*$/i;function $a(e){const t=Tt.extname(e),r=Tt.basename(e,t).replace(/(-|_)/g," ").toLowerCase().split(" ").map(a=>a.charAt(0).toUpperCase()+a.slice(1));let n=r.length>0;for(const a of r)if(!a.match(Du)){n=!1;break}let o=r.join(" ");return n||(o=`"${o.replace(/[\\"]/g,"\\$&")}"`),o}const ja={extension:{type:M.LoadParser,priority:Jt.Low},name:"loadWebFont",test(e){return ei(e,Bu)||Ee(e,Mu)},async load(e,t){var s,r,n,o,a,h;const i=P.ADAPTER.getFontFaceSet();if(i){const l=[],c=(r=(s=t.data)==null?void 0:s.family)!=null?r:$a(e),u=(a=(o=(n=t.data)==null?void 0:n.weights)==null?void 0:o.filter(f=>Pu.includes(f)))!=null?a:["normal"],d=(h=t.data)!=null?h:{};for(let f=0;f<u.length;f++){const p=u[f],_=new FontFace(c,`url(${encodeURI(e)})`,Qi(bt({},d),{weight:p}));await _.load(),i.add(_),l.push(_)}return l.length===1?l[0]:l}return console.warn("[loadWebFont] FontFace API is not supported. Skipping loading font"),null},unload(e){(Array.isArray(e)?e:[e]).forEach(t=>P.ADAPTER.getFontFaceSet().delete(t))}};U.add(ja);let Ya=0,En;const Fu={id:"checkImageBitmap",code:`
|
||
|
async function checkImageBitmap()
|
||
|
{
|
||
|
try
|
||
|
{
|
||
|
if (typeof createImageBitmap !== 'function') return false;
|
||
|
|
||
|
const response = await fetch('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO+ip1sAAAAASUVORK5CYII=');
|
||
|
const imageBlob = await response.blob();
|
||
|
const imageBitmap = await createImageBitmap(imageBlob);
|
||
|
|
||
|
return imageBitmap.width === 1 && imageBitmap.height === 1;
|
||
|
}
|
||
|
catch (e)
|
||
|
{
|
||
|
return false;
|
||
|
}
|
||
|
}
|
||
|
checkImageBitmap().then((result) => { self.postMessage(result); });
|
||
|
`},Nu={id:"loadImageBitmap",code:`
|
||
|
async function loadImageBitmap(url)
|
||
|
{
|
||
|
const response = await fetch(url);
|
||
|
|
||
|
if (!response.ok)
|
||
|
{
|
||
|
throw new Error(\`[WorkerManager.loadImageBitmap] Failed to fetch \${url}: \`
|
||
|
+ \`\${response.status} \${response.statusText}\`);
|
||
|
}
|
||
|
|
||
|
const imageBlob = await response.blob();
|
||
|
const imageBitmap = await createImageBitmap(imageBlob);
|
||
|
|
||
|
return imageBitmap;
|
||
|
}
|
||
|
self.onmessage = async (event) =>
|
||
|
{
|
||
|
try
|
||
|
{
|
||
|
const imageBitmap = await loadImageBitmap(event.data.data[0]);
|
||
|
|
||
|
self.postMessage({
|
||
|
data: imageBitmap,
|
||
|
uuid: event.data.uuid,
|
||
|
id: event.data.id,
|
||
|
}, [imageBitmap]);
|
||
|
}
|
||
|
catch(e)
|
||
|
{
|
||
|
self.postMessage({
|
||
|
error: e,
|
||
|
uuid: event.data.uuid,
|
||
|
id: event.data.id,
|
||
|
});
|
||
|
}
|
||
|
};`};let wn;class Lu{constructor(){this._initialized=!1,this._createdWorkers=0,this.workerPool=[],this.queue=[],this.resolveHash={}}isImageBitmapSupported(){return this._isImageBitmapSupported!==void 0?this._isImageBitmapSupported:(this._isImageBitmapSupported=new Promise(t=>{const i=URL.createObjectURL(new Blob([Fu.code],{type:"application/javascript"})),s=new Worker(i);s.addEventListener("message",r=>{s.terminate(),URL.revokeObjectURL(i),t(r.data)})}),this._isImageBitmapSupported)}loadImageBitmap(t){return this._run("loadImageBitmap",[t])}async _initWorkers(){this._initialized||(this._initialized=!0)}getWorker(){En===void 0&&(En=navigator.hardwareConcurrency||4);let t=this.workerPool.pop();return!t&&this._createdWorkers<En&&(wn||(wn=URL.createObjectURL(new Blob([Nu.code],{type:"application/javascript"}))),this._createdWorkers++,t=new Worker(wn),t.addEventListener("message",i=>{this.complete(i.data),this.returnWorker(i.target),this.next()})),t}returnWorker(t){this.workerPool.push(t)}complete(t){t.error!==void 0?this.resolveHash[t.uuid].reject(t.error):this.resolveHash[t.uuid].resolve(t.data),this.resolveHash[t.uuid]=null}async _run(t,i){await this._initWorkers();const s=new Promise((r,n)=>{this.queue.push({id:t,arguments:i,resolve:r,reject:n})});return this.next(),s}next(){if(!this.queue.length)return;const t=this.getWorker();if(!t)return;const i=this.queue.pop(),s=i.id;this.resolveHash[Ya]={resolve:i.resolve,reject:i.reject},t.postMessage({data:i.arguments,uuid:Ya++,id:s})}}const qa=new Lu;function Di(e,t,i){const s=new B(e);return s.baseTexture.on("dispose",()=>{delete t.promiseCache[i]}),s}const Ou=[".jpeg",".jpg",".png",".webp",".avif"],Uu=["image/jpeg","image/png","image/webp","image/avif"];async function Ka(e){const t=await P.ADAPTER.fetch(e);if(!t.ok)throw new Error(`[loadImageBitmap] Failed to fetch ${e}: ${t.status} ${t.statusText}`);const i=await t.blob();return await createImageBitmap(i)}const Fi={name:"loadTextures",extension:{type:M.LoadParser,priority:Jt.High},config:{preferWorkers:!0,preferCreateImageBitmap:!0,crossOrigin:"anonymous"},test(e){return ei(e,Uu)||Ee(e,Ou)},async load(e,t,i){let s=null;globalThis.createImageBitmap&&this.config.preferCreateImageBitmap?this.config.preferWorkers&&await qa.isImageBitmapSupported()?s=await qa.loadImageBitmap(e):s=await Ka(e):s=await new Promise(n=>{s=new Image,s.crossOrigin=this.config.crossOrigin,s.src=e,s.complete?n(s):s.onload=()=>{n(s)}});const r=new V(s,bt({resolution:fe(e)},t.data));return r.resource.src=e,Di(r,i,e)},unload(e){e.destroy(!0)}};U.add(Fi);const ku=".svg",Gu="image/svg+xml",Za={extension:{type:M.LoadParser,priority:Jt.High},name:"loadSVG",test(e){return ei(e,Gu)||Ee(e,ku)},async testParse(e){return Je.test(e)},async parse(e,t,i){var o;const s=new Je(e,(o=t==null?void 0:t.data)==null?void 0:o.resourceOptions);await s.load();const r=new V(s,bt({resolution:fe(e)},t==null?void 0:t.data));return r.resource.src=e,Di(r,i,e)},async load(e,t){return(await P.ADAPTER.fetch(e)).text()},unload:Fi.unload};U.add(Za);class Hu{constructor(){this._defaultBundleIdentifierOptions={connector:"-",createBundleAssetId:(t,i)=>`${t}${this._bundleIdConnector}${i}`,extractAssetIdFromBundle:(t,i)=>i.replace(`${t}${this._bundleIdConnector}`,"")},this._bundleIdConnector=this._defaultBundleIdentifierOptions.connector,this._createBundleAssetId=this._defaultBundleIdentifierOptions.createBundleAssetId,this._extractAssetIdFromBundle=this._defaultBundleIdentifierOptions.extractAssetIdFromBundle,this._assetMap={},this._preferredOrder=[],this._parsers=[],this._resolverHash={},this._bundles={}}setBundleIdentifier(t){var i,s,r;if(this._bundleIdConnector=(i=t.connector)!=null?i:this._bundleIdConnector,this._createBundleAssetId=(s=t.createBundleAssetId)!=null?s:this._createBundleAssetId,this._extractAssetIdFromBundle=(r=t.extractAssetIdFromBundle)!=null?r:this._extractAssetIdFromBundle,this._extractAssetIdFromBundle("foo",this._createBundleAssetId("foo","bar"))!=="bar")throw new Error("[Resolver] GenerateBundleAssetId are not working correctly")}prefer(...t){t.forEach(i=>{this._prefe
|
||
|
uniform vec4 uColor;
|
||
|
|
||
|
uniform sampler2D uSampler;
|
||
|
|
||
|
void main(void)
|
||
|
{
|
||
|
gl_FragColor = texture2D(uSampler, vTextureCoord) * uColor;
|
||
|
}
|
||
|
`,gd=`attribute vec2 aVertexPosition;
|
||
|
attribute vec2 aTextureCoord;
|
||
|
|
||
|
uniform mat3 projectionMatrix;
|
||
|
uniform mat3 translationMatrix;
|
||
|
uniform mat3 uTextureMatrix;
|
||
|
|
||
|
varying vec2 vTextureCoord;
|
||
|
|
||
|
void main(void)
|
||
|
{
|
||
|
gl_Position = vec4((projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);
|
||
|
|
||
|
vTextureCoord = (uTextureMatrix * vec3(aTextureCoord, 1.0)).xy;
|
||
|
}
|
||
|
`;class ni extends Kt{constructor(t,i){const s={uSampler:t,alpha:1,uTextureMatrix:tt.IDENTITY,uColor:new Float32Array([1,1,1,1])};i=Object.assign({tint:16777215,alpha:1,pluginName:"batch"},i),i.uniforms&&Object.assign(s,i.uniforms),super(i.program||Ut.from(gd,_d),s),this._colorDirty=!1,this.uvMatrix=new Rs(t),this.batchable=i.program===void 0,this.pluginName=i.pluginName,this._tintColor=new j(i.tint),this._tintRGB=this._tintColor.toLittleEndianNumber(),this._colorDirty=!0,this.alpha=i.alpha}get texture(){return this.uniforms.uSampler}set texture(t){this.uniforms.uSampler!==t&&(!this.uniforms.uSampler.baseTexture.alphaMode!=!t.baseTexture.alphaMode&&(this._colorDirty=!0),this.uniforms.uSampler=t,this.uvMatrix.texture=t)}set alpha(t){t!==this._alpha&&(this._alpha=t,this._colorDirty=!0)}get alpha(){return this._alpha}set tint(t){t!==this.tint&&(this._tintColor.setValue(t),this._tintRGB=this._tintColor.toLittleEndianNumber(),this._colorDirty=!0)}get tint(){return this._tintColor.value}get tintValue(){return this._tintColor.toNumber()}update(){if(this._colorDirty){this._colorDirty=!1;const i=this.texture.baseTexture.alphaMode;j.shared.setValue(this._tintColor).premultiply(this._alpha,i).toArray(this.uniforms.uColor)}this.uvMatrix.update()&&(this.uniforms.uTextureMatrix=this.uvMatrix.mapCoord)}}class Ah extends Vi{constructor(t=100,i=100,s=10,r=10){super(),this.segWidth=s,this.segHeight=r,this.width=t,this.height=i,this.build()}build(){const t=this.segWidth*this.segHeight,i=[],s=[],r=[],n=this.segWidth-1,o=this.segHeight-1,a=this.width/n,h=this.height/o;for(let c=0;c<t;c++){const u=c%this.segWidth,d=c/this.segWidth|0;i.push(u*a,d*h),s.push(u/n,d/o)}const l=n*o;for(let c=0;c<l;c++){const u=c%n,d=c/n|0,f=d*this.segWidth+u,p=d*this.segWidth+u+1,_=(d+1)*this.segWidth+u,g=(d+1)*this.segWidth+u+1;r.push(f,p,_,p,g,_)}this.buffers[0].data=new Float32Array(i),this.buffers[1].data=new Float32Array(s),this.indexBuffer.data=new Uint16Array(r),this.buffers[0].update(),this.buffers[1].update(),this.indexBuffer.update()}}class Rh extends Vi{constructor(t=200,i,s=0){super(new Float32Array(i.length*4),new Float32Array(i.length*4),new Uint16Array((i.length-1)*6)),this.points=i,this._width=t,this.textureScale=s,this.build()}get width(){return this._width}build(){const t=this.points;if(!t)return;const i=this.getBuffer("aVertexPosition"),s=this.getBuffer("aTextureCoord"),r=this.getIndex();if(t.length<1)return;i.data.length/4!==t.length&&(i.data=new Float32Array(t.length*4),s.data=new Float32Array(t.length*4),r.data=new Uint16Array((t.length-1)*6));const n=s.data,o=r.data;n[0]=0,n[1]=0,n[2]=0,n[3]=1;let a=0,h=t[0];const l=this._width*this.textureScale,c=t.length;for(let d=0;d<c;d++){const f=d*4;if(this.textureScale>0){const p=h.x-t[d].x,_=h.y-t[d].y,g=Math.sqrt(p*p+_*_);h=t[d],a+=g/l}else a=d/(c-1);n[f]=a,n[f+1]=0,n[f+2]=a,n[f+3]=1}let u=0;for(let d=0;d<c-1;d++){const f=d*2;o[u++]=f,o[u++]=f+1,o[u++]=f+2,o[u++]=f+2,o[u++]=f+1,o[u++]=f+3}s.update(),r.update(),this.updateVertices()}updateVertices(){const t=this.points;if(t.length<1)return;let i=t[0],s,r=0,n=0;const o=this.buffers[0].data,a=t.length,h=this.textureScale>0?this.textureScale*this._width/2:this._width/2;for(let l=0;l<a;l++){const c=t[l],u=l*4;l<t.length-1?s=t[l+1]:s=c,n=-(s.x-i.x),r=s.y-i.y;let d=(1-l/(a-1))*10;d>1&&(d=1);const f=Math.sqrt(r*r+n*n);f<1e-6?(r=0,n=0):(r/=f,n/=f,r*=h,n*=h),o[u]=c.x+r,o[u+1]=c.y+n,o[u+2]=c.x-r,o[u+3]=c.y-n,i=c}this.buffers[0].update()}update(){this.textureScale>0?this.build():this.updateVertices()}}class Ch extends He{constructor(t,i,s){const r=new Ah(t.width,t.height,i,s),n=new ni(B.WHITE);super(r,n),this.texture=t,this.autoResize=!0}textureUpdated(){this._textureID=this.shader.texture._updateID;const t=this.geometry,{width:i,height:s}=this.shader.texture;this.autoResize&&(t.width!==i||t.height!==s)&&(t.width=this.shader.texture.width,t.height=this.shader.texture.height,t.build())}set texture(t){this.shader.texture!==t&&(this.shader.texture=t,this._textureID=-1,t.baseTexture.valid?this.textureUpdated():t.once("update",this.textureUpdated,this))}get texture(
|
||
|
varying vec4 vColor;
|
||
|
|
||
|
uniform sampler2D uSampler;
|
||
|
|
||
|
void main(void){
|
||
|
vec4 color = texture2D(uSampler, vTextureCoord) * vColor;
|
||
|
gl_FragColor = color;
|
||
|
}`,Ed=`attribute vec2 aVertexPosition;
|
||
|
attribute vec2 aTextureCoord;
|
||
|
attribute vec4 aColor;
|
||
|
|
||
|
attribute vec2 aPositionCoord;
|
||
|
attribute float aRotation;
|
||
|
|
||
|
uniform mat3 translationMatrix;
|
||
|
uniform vec4 uColor;
|
||
|
|
||
|
varying vec2 vTextureCoord;
|
||
|
varying vec4 vColor;
|
||
|
|
||
|
void main(void){
|
||
|
float x = (aVertexPosition.x) * cos(aRotation) - (aVertexPosition.y) * sin(aRotation);
|
||
|
float y = (aVertexPosition.x) * sin(aRotation) + (aVertexPosition.y) * cos(aRotation);
|
||
|
|
||
|
vec2 v = vec2(x, y);
|
||
|
v = v + aPositionCoord;
|
||
|
|
||
|
gl_Position = vec4((translationMatrix * vec3(v, 1.0)).xy, 0.0, 1.0);
|
||
|
|
||
|
vTextureCoord = aTextureCoord;
|
||
|
vColor = aColor * uColor;
|
||
|
}
|
||
|
`;class Ln extends bi{constructor(t){super(t),this.shader=null,this.properties=null,this.tempMatrix=new tt,this.properties=[{attributeName:"aVertexPosition",size:2,uploadFunction:this.uploadVertices,offset:0},{attributeName:"aPositionCoord",size:2,uploadFunction:this.uploadPosition,offset:0},{attributeName:"aRotation",size:1,uploadFunction:this.uploadRotation,offset:0},{attributeName:"aTextureCoord",size:2,uploadFunction:this.uploadUvs,offset:0},{attributeName:"aColor",size:1,type:k.UNSIGNED_BYTE,uploadFunction:this.uploadTint,offset:0}],this.shader=Kt.from(Ed,Td,{}),this.state=ne.for2d()}render(t){const i=t.children,s=t._maxSize,r=t._batchSize,n=this.renderer;let o=i.length;if(o===0)return;o>s&&!t.autoResize&&(o=s);let a=t._buffers;a||(a=t._buffers=this.generateBuffers(t));const h=i[0]._texture.baseTexture,l=h.alphaMode>0;this.state.blendMode=xr(t.blendMode,l),n.state.set(this.state);const c=n.gl,u=t.worldTransform.copyTo(this.tempMatrix);u.prepend(n.globalUniforms.uniforms.projectionMatrix),this.shader.uniforms.translationMatrix=u.toArray(!0),this.shader.uniforms.uColor=j.shared.setValue(t.tintRgb).premultiply(t.worldAlpha,l).toArray(this.shader.uniforms.uColor),this.shader.uniforms.uSampler=h,this.renderer.shader.bind(this.shader);let d=!1;for(let f=0,p=0;f<o;f+=r,p+=1){let _=o-f;_>r&&(_=r),p>=a.length&&a.push(this._generateOneMoreBuffer(t));const g=a[p];g.uploadDynamic(i,f,_);const v=t._bufferUpdateIDs[p]||0;d=d||g._updateID<v,d&&(g._updateID=t._updateID,g.uploadStatic(i,f,_)),n.geometry.bind(g.geometry),c.drawElements(c.TRIANGLES,_*6,c.UNSIGNED_SHORT,0)}}generateBuffers(t){const i=[],s=t._maxSize,r=t._batchSize,n=t._properties;for(let o=0;o<s;o+=r)i.push(new Ih(this.properties,n,r));return i}_generateOneMoreBuffer(t){const i=t._batchSize,s=t._properties;return new Ih(this.properties,s,i)}uploadVertices(t,i,s,r,n,o){let a=0,h=0,l=0,c=0;for(let u=0;u<s;++u){const d=t[i+u],f=d._texture,p=d.scale.x,_=d.scale.y,g=f.trim,v=f.orig;g?(h=g.x-d.anchor.x*v.width,a=h+g.width,c=g.y-d.anchor.y*v.height,l=c+g.height):(a=v.width*(1-d.anchor.x),h=v.width*-d.anchor.x,l=v.height*(1-d.anchor.y),c=v.height*-d.anchor.y),r[o]=h*p,r[o+1]=c*_,r[o+n]=a*p,r[o+n+1]=c*_,r[o+n*2]=a*p,r[o+n*2+1]=l*_,r[o+n*3]=h*p,r[o+n*3+1]=l*_,o+=n*4}}uploadPosition(t,i,s,r,n,o){for(let a=0;a<s;a++){const h=t[i+a].position;r[o]=h.x,r[o+1]=h.y,r[o+n]=h.x,r[o+n+1]=h.y,r[o+n*2]=h.x,r[o+n*2+1]=h.y,r[o+n*3]=h.x,r[o+n*3+1]=h.y,o+=n*4}}uploadRotation(t,i,s,r,n,o){for(let a=0;a<s;a++){const h=t[i+a].rotation;r[o]=h,r[o+n]=h,r[o+n*2]=h,r[o+n*3]=h,o+=n*4}}uploadUvs(t,i,s,r,n,o){for(let a=0;a<s;++a){const h=t[i+a]._texture._uvs;h?(r[o]=h.x0,r[o+1]=h.y0,r[o+n]=h.x1,r[o+n+1]=h.y1,r[o+n*2]=h.x2,r[o+n*2+1]=h.y2,r[o+n*3]=h.x3,r[o+n*3+1]=h.y3,o+=n*4):(r[o]=0,r[o+1]=0,r[o+n]=0,r[o+n+1]=0,r[o+n*2]=0,r[o+n*2+1]=0,r[o+n*3]=0,r[o+n*3+1]=0,o+=n*4)}}uploadTint(t,i,s,r,n,o){for(let a=0;a<s;++a){const h=t[i+a],l=j.shared.setValue(h._tintRGB).toPremultiplied(h.alpha,h.texture.baseTexture.alphaMode>0);r[o]=l,r[o+n]=l,r[o+n*2]=l,r[o+n*3]=l,o+=n*4}}destroy(){super.destroy(),this.shader&&(this.shader.destroy(),this.shader=null),this.tempMatrix=null}}Ln.extension={name:"particle",type:M.RendererPlugin},U.add(Ln);var zi=(e=>(e[e.LINEAR_VERTICAL=0]="LINEAR_VERTICAL",e[e.LINEAR_HORIZONTAL=1]="LINEAR_HORIZONTAL",e))(zi||{});const js={willReadFrequently:!0},L=class{static get experimentalLetterSpacingSupported(){let e=L._experimentalLetterSpacingSupported;if(e!==void 0){const t=P.ADAPTER.getCanvasRenderingContext2D().prototype;e=L._experimentalLetterSpacingSupported="letterSpacing"in t||"textLetterSpacing"in t}return e}constructor(e,t,i,s,r,n,o,a,h){this.text=e,this.style=t,this.width=i,this.height=s,this.lines=r,this.lineWidths=n,this.lineHeight=o,this.maxLineWidth=a,this.fontProperties=h}static measureText(e,t,i,s=L._canvas){i=i==null?t.wordWrap:i;const r=t.toFontString(),n=L.measureFont(r);n.fontSize===0&&(n.fontSize=t.fontSize,n.ascent=t.fontSize);const o=s.getContext("2d",js);o.font=r;const h=(i?L.wordWrap(e,t,s):e).split(/(?:\r\n|\r|\n)/),l=new Array(h.length);let c=0;for(let p=0;p<h.length;p
|
||
|
`:e,e}static getFromCache(e,t,i,s){let r=i[e];return typeof r!="number"&&(r=L._measureText(e,t,s)+t,i[e]=r),r}static collapseSpaces(e){return e==="normal"||e==="pre-line"}static collapseNewlines(e){return e==="normal"}static trimRight(e){if(typeof e!="string")return"";for(let t=e.length-1;t>=0;t--){const i=e[t];if(!L.isBreakingSpace(i))break;e=e.slice(0,-1)}return e}static isNewline(e){return typeof e!="string"?!1:L._newlines.includes(e.charCodeAt(0))}static isBreakingSpace(e,t){return typeof e!="string"?!1:L._breakingSpaces.includes(e.charCodeAt(0))}static tokenize(e){const t=[];let i="";if(typeof e!="string")return t;for(let s=0;s<e.length;s++){const r=e[s],n=e[s+1];if(L.isBreakingSpace(r,n)||L.isNewline(r)){i!==""&&(t.push(i),i=""),t.push(r);continue}i+=r}return i!==""&&t.push(i),t}static canBreakWords(e,t){return t}static canBreakChars(e,t,i,s,r){return!0}static wordWrapSplit(e){return L.graphemeSegmenter(e)}static measureFont(e){if(L._fonts[e])return L._fonts[e];const t={ascent:0,descent:0,fontSize:0},i=L._canvas,s=L._context;s.font=e;const r=L.METRICS_STRING+L.BASELINE_SYMBOL,n=Math.ceil(s.measureText(r).width);let o=Math.ceil(s.measureText(L.BASELINE_SYMBOL).width);const a=Math.ceil(L.HEIGHT_MULTIPLIER*o);if(o=o*L.BASELINE_MULTIPLIER|0,n===0||a===0)return L._fonts[e]=t,t;i.width=n,i.height=a,s.fillStyle="#f00",s.fillRect(0,0,n,a),s.font=e,s.textBaseline="alphabetic",s.fillStyle="#000",s.fillText(r,0,o);const h=s.getImageData(0,0,n,a).data,l=h.length,c=n*4;let u=0,d=0,f=!1;for(u=0;u<o;++u){for(let p=0;p<c;p+=4)if(h[d+p]!==255){f=!0;break}if(!f)d+=c;else break}for(t.ascent=o-u,d=l-c,f=!1,u=a;u>o;--u){for(let p=0;p<c;p+=4)if(h[d+p]!==255){f=!0;break}if(!f)d-=c;else break}return t.descent=u-o,t.fontSize=t.ascent+t.descent,L._fonts[e]=t,t}static clearMetrics(e=""){e?delete L._fonts[e]:L._fonts={}}static get _canvas(){if(!L.__canvas){let e;try{const t=new OffscreenCanvas(0,0),i=t.getContext("2d",js);if(i!=null&&i.measureText)return L.__canvas=t,t;e=P.ADAPTER.createCanvas()}catch(t){e=P.ADAPTER.createCanvas()}e.width=e.height=10,L.__canvas=e}return L.__canvas}static get _context(){return L.__context||(L.__context=L._canvas.getContext("2d",js)),L.__context}};let yt=L;yt.METRICS_STRING="|\xC9q\xC5",yt.BASELINE_SYMBOL="M",yt.BASELINE_MULTIPLIER=1.4,yt.HEIGHT_MULTIPLIER=2,yt.graphemeSegmenter=(()=>{if(typeof(Intl==null?void 0:Intl.Segmenter)=="function"){const e=new Intl.Segmenter;return t=>[...e.segment(t)].map(i=>i.segment)}return e=>[...e]})(),yt.experimentalLetterSpacing=!1,yt._fonts={},yt._newlines=[10,13],yt._breakingSpaces=[9,32,8192,8193,8194,8195,8196,8197,8198,8200,8201,8202,8287,12288];const wd=["serif","sans-serif","monospace","cursive","fantasy","system-ui"],Wi=class{constructor(e){this.styleID=0,this.reset(),Un(this,e,e)}clone(){const e={};return Un(e,this,Wi.defaultStyle),new Wi(e)}reset(){Un(this,Wi.defaultStyle,Wi.defaultStyle)}get align(){return this._align}set align(e){this._align!==e&&(this._align=e,this.styleID++)}get breakWords(){return this._breakWords}set breakWords(e){this._breakWords!==e&&(this._breakWords=e,this.styleID++)}get dropShadow(){return this._dropShadow}set dropShadow(e){this._dropShadow!==e&&(this._dropShadow=e,this.styleID++)}get dropShadowAlpha(){return this._dropShadowAlpha}set dropShadowAlpha(e){this._dropShadowAlpha!==e&&(this._dropShadowAlpha=e,this.styleID++)}get dropShadowAngle(){return this._dropShadowAngle}set dropShadowAngle(e){this._dropShadowAngle!==e&&(this._dropShadowAngle=e,this.styleID++)}get dropShadowBlur(){return this._dropShadowBlur}set dropShadowBlur(e){this._dropShadowBlur!==e&&(this._dropShadowBlur=e,this.styleID++)}get dropShadowColor(){return this._dropShadowColor}set dropShadowColor(e){const t=On(e);this._dropShadowColor!==t&&(this._dropShadowColor=t,this.styleID++)}get dropShadowDistance(){return this._dropShadowDistance}set dropShadowDistance(e){this._dropShadowDistance!==e&&(this._dropShadowDistance=e,this.styleID++)}get fill(){return this._fill}set fill(e){const t=On(e);this._fill!==t&&(this._fill=t,this.styleID++)}get fillGradientType(){return this._fillG
|
||
|
#define SHADER_NAME Tiling-Sprite-100
|
||
|
|
||
|
precision lowp float;
|
||
|
|
||
|
in vec2 vTextureCoord;
|
||
|
|
||
|
out vec4 fragmentColor;
|
||
|
|
||
|
uniform sampler2D uSampler;
|
||
|
uniform vec4 uColor;
|
||
|
uniform mat3 uMapCoord;
|
||
|
uniform vec4 uClampFrame;
|
||
|
uniform vec2 uClampOffset;
|
||
|
|
||
|
void main(void)
|
||
|
{
|
||
|
vec2 coord = vTextureCoord + ceil(uClampOffset - vTextureCoord);
|
||
|
coord = (uMapCoord * vec3(coord, 1.0)).xy;
|
||
|
vec2 unclamped = coord;
|
||
|
coord = clamp(coord, uClampFrame.xy, uClampFrame.zw);
|
||
|
|
||
|
vec4 texSample = texture(uSampler, coord, unclamped == coord ? 0.0f : -32.0f);// lod-bias very negative to force lod 0
|
||
|
|
||
|
fragmentColor = texSample * uColor;
|
||
|
}
|
||
|
`,Ud=`#version 300 es
|
||
|
#define SHADER_NAME Tiling-Sprite-300
|
||
|
|
||
|
precision lowp float;
|
||
|
|
||
|
in vec2 aVertexPosition;
|
||
|
in vec2 aTextureCoord;
|
||
|
|
||
|
uniform mat3 projectionMatrix;
|
||
|
uniform mat3 translationMatrix;
|
||
|
uniform mat3 uTransform;
|
||
|
|
||
|
out vec2 vTextureCoord;
|
||
|
|
||
|
void main(void)
|
||
|
{
|
||
|
gl_Position = vec4((projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);
|
||
|
|
||
|
vTextureCoord = (uTransform * vec3(aTextureCoord, 1.0)).xy;
|
||
|
}
|
||
|
`,kd=`#version 100
|
||
|
#ifdef GL_EXT_shader_texture_lod
|
||
|
#extension GL_EXT_shader_texture_lod : enable
|
||
|
#endif
|
||
|
#define SHADER_NAME Tiling-Sprite-100
|
||
|
|
||
|
precision lowp float;
|
||
|
|
||
|
varying vec2 vTextureCoord;
|
||
|
|
||
|
uniform sampler2D uSampler;
|
||
|
uniform vec4 uColor;
|
||
|
uniform mat3 uMapCoord;
|
||
|
uniform vec4 uClampFrame;
|
||
|
uniform vec2 uClampOffset;
|
||
|
|
||
|
void main(void)
|
||
|
{
|
||
|
vec2 coord = vTextureCoord + ceil(uClampOffset - vTextureCoord);
|
||
|
coord = (uMapCoord * vec3(coord, 1.0)).xy;
|
||
|
vec2 unclamped = coord;
|
||
|
coord = clamp(coord, uClampFrame.xy, uClampFrame.zw);
|
||
|
|
||
|
#ifdef GL_EXT_shader_texture_lod
|
||
|
vec4 texSample = unclamped == coord
|
||
|
? texture2D(uSampler, coord)
|
||
|
: texture2DLodEXT(uSampler, coord, 0);
|
||
|
#else
|
||
|
vec4 texSample = texture2D(uSampler, coord);
|
||
|
#endif
|
||
|
|
||
|
gl_FragColor = texSample * uColor;
|
||
|
}
|
||
|
`,Dh=`#version 100
|
||
|
#define SHADER_NAME Tiling-Sprite-100
|
||
|
|
||
|
precision lowp float;
|
||
|
|
||
|
attribute vec2 aVertexPosition;
|
||
|
attribute vec2 aTextureCoord;
|
||
|
|
||
|
uniform mat3 projectionMatrix;
|
||
|
uniform mat3 translationMatrix;
|
||
|
uniform mat3 uTransform;
|
||
|
|
||
|
varying vec2 vTextureCoord;
|
||
|
|
||
|
void main(void)
|
||
|
{
|
||
|
gl_Position = vec4((projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);
|
||
|
|
||
|
vTextureCoord = (uTransform * vec3(aTextureCoord, 1.0)).xy;
|
||
|
}
|
||
|
`,Gd=`#version 100
|
||
|
#define SHADER_NAME Tiling-Sprite-Simple-100
|
||
|
|
||
|
precision lowp float;
|
||
|
|
||
|
varying vec2 vTextureCoord;
|
||
|
|
||
|
uniform sampler2D uSampler;
|
||
|
uniform vec4 uColor;
|
||
|
|
||
|
void main(void)
|
||
|
{
|
||
|
vec4 texSample = texture2D(uSampler, vTextureCoord);
|
||
|
gl_FragColor = texSample * uColor;
|
||
|
}
|
||
|
`;const Ks=new tt;class Xn extends bi{constructor(t){super(t),t.runners.contextChange.add(this),this.quad=new Gr,this.state=ne.for2d()}contextChange(){const t=this.renderer,i={globals:t.globalUniforms};this.simpleShader=Kt.from(Dh,Gd,i),this.shader=t.context.webGLVersion>1?Kt.from(Ud,Od,i):Kt.from(Dh,kd,i)}render(t){const i=this.renderer,s=this.quad;let r=s.vertices;r[0]=r[6]=t._width*-t.anchor.x,r[1]=r[3]=t._height*-t.anchor.y,r[2]=r[4]=t._width*(1-t.anchor.x),r[5]=r[7]=t._height*(1-t.anchor.y);const n=t.uvRespectAnchor?t.anchor.x:0,o=t.uvRespectAnchor?t.anchor.y:0;r=s.uvs,r[0]=r[6]=-n,r[1]=r[3]=-o,r[2]=r[4]=1-n,r[5]=r[7]=1-o,s.invalidate();const a=t._texture,h=a.baseTexture,l=h.alphaMode>0,c=t.tileTransform.localTransform,u=t.uvMatrix;let d=h.isPowerOfTwo&&a.frame.width===h.width&&a.frame.height===h.height;d&&(h._glTextures[i.CONTEXT_UID]?d=h.wrapMode!==ie.CLAMP:h.wrapMode===ie.CLAMP&&(h.wrapMode=ie.REPEAT));const f=d?this.simpleShader:this.shader,p=a.width,_=a.height,g=t._width,v=t._height;Ks.set(c.a*p/g,c.b*p/v,c.c*_/g,c.d*_/v,c.tx/g,c.ty/v),Ks.invert(),d?Ks.prepend(u.mapCoord):(f.uniforms.uMapCoord=u.mapCoord.toArray(!0),f.uniforms.uClampFrame=u.uClampFrame,f.uniforms.uClampOffset=u.uClampOffset),f.uniforms.uTransform=Ks.toArray(!0),f.uniforms.uColor=j.shared.setValue(t.tint).premultiply(t.worldAlpha,l).toArray(f.uniforms.uColor),f.uniforms.translationMatrix=t.transform.worldTransform.toArray(!0),f.uniforms.uSampler=a,i.shader.bind(f),i.geometry.bind(s),this.state.blendMode=xr(t.blendMode,l),i.state.set(this.state),i.geometry.draw(this.renderer.gl.TRIANGLES,6,0)}}Xn.extension={name:"tilingSprite",type:M.RendererPlugin},U.add(Xn);const Yi=class{constructor(e,t,i=null){this.linkedSheets=[],this._texture=e instanceof B?e:null,this.baseTexture=e instanceof V?e:this._texture.baseTexture,this.textures={},this.animations={},this.data=t;const s=this.baseTexture.resource;this.resolution=this._updateResolution(i||(s?s.url:null)),this._frames=this.data.frames,this._frameKeys=Object.keys(this._frames),this._batchIndex=0,this._callback=null}_updateResolution(e=null){const{scale:t}=this.data.meta;let i=fe(e,null);return i===null&&(i=parseFloat(t!=null?t:"1")),i!==1&&this.baseTexture.setResolution(i),i}parse(){return new Promise(e=>{this._callback=e,this._batchIndex=0,this._frameKeys.length<=Yi.BATCH_SIZE?(this._processFrames(0),this._processAnimations(),this._parseComplete()):this._nextBatch()})}_processFrames(e){let t=e;const i=Yi.BATCH_SIZE;for(;t-e<i&&t<this._frameKeys.length;){const s=this._frameKeys[t],r=this._frames[s],n=r.frame;if(n){let o=null,a=null;const h=r.trimmed!==!1&&r.sourceSize?r.sourceSize:r.frame,l=new $(0,0,Math.floor(h.w)/this.resolution,Math.floor(h.h)/this.resolution);r.rotated?o=new $(Math.floor(n.x)/this.resolution,Math.floor(n.y)/this.resolution,Math.floor(n.h)/this.resolution,Math.floor(n.w)/this.resolution):o=new $(Math.floor(n.x)/this.resolution,Math.floor(n.y)/this.resolution,Math.floor(n.w)/this.resolution,Math.floor(n.h)/this.resolution),r.trimmed!==!1&&r.spriteSourceSize&&(a=new $(Math.floor(r.spriteSourceSize.x)/this.resolution,Math.floor(r.spriteSourceSize.y)/this.resolution,Math.floor(n.w)/this.resolution,Math.floor(n.h)/this.resolution)),this.textures[s]=new B(this.baseTexture,o,l,a,r.rotated?2:0,r.anchor,r.borders),B.addToCache(this.textures[s],s)}t++}}_processAnimations(){const e=this.data.animations||{};for(const t in e){this.animations[t]=[];for(let i=0;i<e[t].length;i++){const s=e[t][i];this.animations[t].push(this.textures[s])}}}_parseComplete(){const e=this._callback;this._callback=null,this._batchIndex=0,e.call(this,this.textures)}_nextBatch(){this._processFrames(this._batchIndex*Yi.BATCH_SIZE),this._batchIndex++,setTimeout(()=>{this._batchIndex*Yi.BATCH_SIZE<this._frameKeys.length?this._nextBatch():(this._processAnimations(),this._parseComplete())},0)}destroy(e=!1){var t;for(const i in this.textures)this.textures[i].destroy();this._frames=null,this._frameKeys=null,this.data=null,this.textures=null,e&&((t=this._texture)==null||t.destroy(),this.baseTexture.destroy()),this._texture=null
|
||
|
varying vec2 vTextureCoord;\r
|
||
|
uniform sampler2D uSampler;\r
|
||
|
\r
|
||
|
// Tint\r
|
||
|
uniform vec4 uColor;\r
|
||
|
\r
|
||
|
// on 2D applications fwidth is screenScale / glyphAtlasScale * distanceFieldRange\r
|
||
|
uniform float uFWidth;\r
|
||
|
\r
|
||
|
void main(void) {\r
|
||
|
\r
|
||
|
// To stack MSDF and SDF we need a non-pre-multiplied-alpha texture.\r
|
||
|
vec4 texColor = texture2D(uSampler, vTextureCoord);\r
|
||
|
\r
|
||
|
// MSDF\r
|
||
|
float median = texColor.r + texColor.g + texColor.b -\r
|
||
|
min(texColor.r, min(texColor.g, texColor.b)) -\r
|
||
|
max(texColor.r, max(texColor.g, texColor.b));\r
|
||
|
// SDF\r
|
||
|
median = min(median, texColor.a);\r
|
||
|
\r
|
||
|
float screenPxDistance = uFWidth * (median - 0.5);\r
|
||
|
float alpha = clamp(screenPxDistance + 0.5, 0.0, 1.0);\r
|
||
|
if (median < 0.01) {\r
|
||
|
alpha = 0.0;\r
|
||
|
} else if (median > 0.99) {\r
|
||
|
alpha = 1.0;\r
|
||
|
}\r
|
||
|
\r
|
||
|
// Gamma correction for coverage-like alpha\r
|
||
|
float luma = dot(uColor.rgb, vec3(0.299, 0.587, 0.114));\r
|
||
|
float gamma = mix(1.0, 1.0 / 2.2, luma);\r
|
||
|
float coverage = pow(uColor.a * alpha, gamma); \r
|
||
|
\r
|
||
|
// NPM Textures, NPM outputs\r
|
||
|
gl_FragColor = vec4(uColor.rgb, coverage);\r
|
||
|
}\r
|
||
|
`,$d=`// Mesh material default fragment\r
|
||
|
attribute vec2 aVertexPosition;\r
|
||
|
attribute vec2 aTextureCoord;\r
|
||
|
\r
|
||
|
uniform mat3 projectionMatrix;\r
|
||
|
uniform mat3 translationMatrix;\r
|
||
|
uniform mat3 uTextureMatrix;\r
|
||
|
\r
|
||
|
varying vec2 vTextureCoord;\r
|
||
|
\r
|
||
|
void main(void)\r
|
||
|
{\r
|
||
|
gl_Position = vec4((projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\r
|
||
|
\r
|
||
|
vTextureCoord = (uTextureMatrix * vec3(aTextureCoord, 1.0)).xy;\r
|
||
|
}\r
|
||
|
`;const Uh=[],kh=[],Gh=[],Hh=class extends Ct{constructor(e,t={}){super();const{align:i,tint:s,maxWidth:r,letterSpacing:n,fontName:o,fontSize:a}=Object.assign({},Hh.styleDefaults,t);if(!At.available[o])throw new Error(`Missing BitmapFont "${o}"`);this._activePagesMeshData=[],this._textWidth=0,this._textHeight=0,this._align=i,this._tintColor=new j(s),this._font=void 0,this._fontName=o,this._fontSize=a,this.text=e,this._maxWidth=r,this._maxLineHeight=0,this._letterSpacing=n,this._anchor=new me(()=>{this.dirty=!0},this,0,0),this._roundPixels=P.ROUND_PIXELS,this.dirty=!0,this._resolution=P.RESOLUTION,this._autoResolution=!0,this._textureCache={}}updateText(){var H;const e=At.available[this._fontName],t=this.fontSize,i=t/e.size,s=new Y,r=[],n=[],o=[],a=this._text.replace(/(?:\r\n|\r)/g,`
|
||
|
`)||" ",h=Oh(a),l=this._maxWidth*e.size/t,c=e.distanceFieldType==="none"?Uh:kh;let u=null,d=0,f=0,p=0,_=-1,g=0,v=0,b=0,y=0;for(let I=0;I<h.length;I++){const N=h[I],w=tr(N);if(/(?:\s)/.test(N)&&(_=I,g=d,y++),N==="\r"||N===`
|
||
|
`){n.push(d),o.push(-1),f=Math.max(f,d),++p,++v,s.x=0,s.y+=e.lineHeight,u=null,y=0;continue}const T=e.chars[w];if(!T)continue;u&&T.kerning[u]&&(s.x+=T.kerning[u]);const W=Gh.pop()||{texture:B.EMPTY,line:0,charCode:0,prevSpaces:0,position:new Y};W.texture=T.texture,W.line=p,W.charCode=w,W.position.x=Math.round(s.x+T.xOffset+this._letterSpacing/2),W.position.y=Math.round(s.y+T.yOffset),W.prevSpaces=y,r.push(W),d=W.position.x+Math.max(T.xAdvance-T.xOffset,T.texture.orig.width),s.x+=T.xAdvance+this._letterSpacing,b=Math.max(b,T.yOffset+T.texture.height),u=w,_!==-1&&l>0&&s.x>l&&(++v,Ie(r,1+_-v,1+I-_),I=_,_=-1,n.push(g),o.push(r.length>0?r[r.length-1].prevSpaces:0),f=Math.max(f,g),p++,s.x=0,s.y+=e.lineHeight,u=null,y=0)}const x=h[h.length-1];x!=="\r"&&x!==`
|
||
|
`&&(/(?:\s)/.test(x)&&(d=g),n.push(d),f=Math.max(f,d),o.push(-1));const A=[];for(let I=0;I<=p;I++){let N=0;this._align==="right"?N=f-n[I]:this._align==="center"?N=(f-n[I])/2:this._align==="justify"&&(N=o[I]<0?0:(f-n[I])/o[I]),A.push(N)}const D=r.length,R={},E=[],O=this._activePagesMeshData;c.push(...O);for(let I=0;I<D;I++){const N=r[I].texture,w=N.baseTexture.uid;if(!R[w]){let T=c.pop();if(!T){const q=new Vi;let F,Z;e.distanceFieldType==="none"?(F=new ni(B.EMPTY),Z=G.NORMAL):(F=new ni(B.EMPTY,{program:Ut.from($d,Wd),uniforms:{uFWidth:0}}),Z=G.NORMAL_NPM);const at=new He(q,F);at.blendMode=Z,T={index:0,indexCount:0,vertexCount:0,uvsCount:0,total:0,mesh:at,vertices:null,uvs:null,indices:null}}T.index=0,T.indexCount=0,T.vertexCount=0,T.uvsCount=0,T.total=0;const{_textureCache:W}=this;W[w]=W[w]||new B(N.baseTexture),T.mesh.texture=W[w],T.mesh.tint=this._tintColor.value,E.push(T),R[w]=T}R[w].total++}for(let I=0;I<O.length;I++)E.includes(O[I])||this.removeChild(O[I].mesh);for(let I=0;I<E.length;I++)E[I].mesh.parent!==this&&this.addChild(E[I].mesh);this._activePagesMeshData=E;for(const I in R){const N=R[I],w=N.total;if(!(((H=N.indices)==null?void 0:H.length)>6*w)||N.vertices.length<He.BATCHABLE_SIZE*2)N.vertices=new Float32Array(4*2*w),N.uvs=new Float32Array(4*2*w),N.indices=new Uint16Array(6*w);else{const T=N.total,W=N.vertices;for(let q=T*4*2;q<W.length;q++)W[q]=0}N.mesh.size=6*w}for(let I=0;I<D;I++){const N=r[I];let w=N.position.x+A[N.line]*(this._align==="justify"?N.prevSpaces:1);this._roundPixels&&(w=Math.round(w));const T=w*i,W=N.position.y*i,q=N.texture,F=R[q.baseTexture.uid],Z=q.frame,at=q._uvs,S=F.index++;F.indices[S*6+0]=0+S*4,F.indices[S*6+1]=1+S*4,F.indices[S*6+2]=2+S*4,F.indices[S*6+3]=0+S*4,F.indices[S*6+4]=2+S*4,F.indices[S*6+5]=3+S*4,F.vertices[S*8+0]=T,F.vertices[S*8+1]=W,F.vertices[S*8+2]=T+Z.width*i,F.vertices[S*8+3]=W,F.vertices[S*8+4]=T+Z.width*i,F.vertices[S*8+5]=W+Z.height*i,F.vertices[S*8+6]=T,F.vertices[S*8+7]=W+Z.height*i,F.uvs[S*8+0]=at.x0,F.uvs[S*8+1]=at.y0,F.uvs[S*8+2]=at.x1,F.uvs[S*8+3]=at.y1,F.uvs[S*8+4]=at.x2,F.uvs[S*8+5]=at.y2,F.uvs[S*8+6]=at.x3,F.uvs[S*8+7]=at.y3}this._textWidth=f*i,this._textHeight=(s.y+e.lineHeight)*i;for(const I in R){const N=R[I];if(this.anchor.x!==0||this.anchor.y!==0){let q=0;const F=this._textWidth*this.anchor.x,Z=this._textHeight*this.anchor.y;for(let at=0;at<N.total;at++)N.vertices[q++]-=F,N.vertices[q++]-=Z,N.vertices[q++]-=F,N.vertices[q++]-=Z,N.vertices[q++]-=F,N.vertices[q++]-=Z,N.vertices[q++]-=F,N.vertices[q++]-=Z}this._maxLineHeight=b*i;const w=N.mesh.geometry.getBuffer("aVertexPosition"),T=N.mesh.geometry.getBuffer("aTextureCoord"),W=N.mesh.geometry.getIndex();w.data=N.vertices,T.data=N.uvs,W.data=N.indices,w.update(),T.update(),W.update()}for(let I=0;I<r.length;I++)Gh.push(r[I]);this._font=e,this.dirty=!1}updateTransform(){this.validate(),this.containerUpdateTransform()}_render(e){this._autoResolution&&this._resolution!==e.resolution&&(this._resolution=e.resolution,this.dirty=!0);const{distanceFieldRange:t,distanceFieldType:i,size:s}=At.available[this._fontName];if(i!=="none"){const{a:r,b:n,c:o,d:a}=this.worldTransform,h=Math.sqrt(r*r+n*n),l=Math.sqrt(o*o+a*a),c=(Math.abs(h)+Math.abs(l))/2,u=this.fontSize/s,d=e._view.resolution;for(const f of this._activePagesMeshData)f.mesh.shader.uniforms.uFWidth=c*t*u*d}super._render(e)}getLocalBounds(){return this.validate(),super.getLocalBounds()}validate(){const e=At.available[this._fontName];if(!e)throw new Error(`Missing BitmapFont "${this._fontName}"`);this._font!==e&&(this.dirty=!0),this.dirty&&this.updateText()}get tint(){return this._tintColor.value}set tint(e){if(this.tint!==e){this._tintColor.setValue(e);for(let t=0;t<this._activePagesMeshData.length;t++)this._activePagesMeshData[t].mesh.tint=e}}get align(){return this._align}set align(e){this._align!==e&&(this._align=e,this.dirty=!0)}get fontName(){return this._fontName}set fontName(e){if(!At.available[e])throw new Error(`Missing BitmapFont "${e}"`);this._fontName!==e&&(this._fontName=e,this.dirty=!0)}get fontSize(){var e;return(e=this._fontSize)!=null?e:At.avai
|
||
|
@font-face {
|
||
|
font-family: "${t.family}";
|
||
|
src: url('${t.dataSrc}');
|
||
|
font-weight: ${t.weight};
|
||
|
font-style: ${t.style};
|
||
|
}`,this._stylesheet)}get stylesheet(){return this._stylesheet}set stylesheet(e){this._stylesheet!==e&&(this._stylesheet=e,this.styleID++)}normalizeColor(e){return Array.isArray(e)&&(e=Mo(e)),typeof e=="number"?Po(e):e}dropShadowToCSS(){let e=this.normalizeColor(this.dropShadowColor);const t=this.dropShadowAlpha,i=Math.round(Math.cos(this.dropShadowAngle)*this.dropShadowDistance),s=Math.round(Math.sin(this.dropShadowAngle)*this.dropShadowDistance);e.startsWith("#")&&t<1&&(e+=(t*255|0).toString(16).padStart(2,"0"));const r=`${i}px ${s}px`;return this.dropShadowBlur>0?`text-shadow: ${r} ${this.dropShadowBlur}px ${e}`:`text-shadow: ${r} ${e}`}reset(){Object.assign(this,oi.defaultOptions)}onBeforeDraw(){const{fontsDirty:e}=this;return this.fontsDirty=!1,this.isSafari&&this._fonts.length>0&&e?new Promise(t=>setTimeout(t,100)):Promise.resolve()}get isSafari(){const{userAgent:e}=P.ADAPTER.getNavigator();return/^((?!chrome|android).)*safari/i.test(e)}set fillGradientStops(e){console.warn("[HTMLTextStyle] fillGradientStops is not supported by HTMLText")}get fillGradientStops(){return super.fillGradientStops}set fillGradientType(e){console.warn("[HTMLTextStyle] fillGradientType is not supported by HTMLText")}get fillGradientType(){return super.fillGradientType}set miterLimit(e){console.warn("[HTMLTextStyle] miterLimit is not supported by HTMLText")}get miterLimit(){return super.miterLimit}set trim(e){console.warn("[HTMLTextStyle] trim is not supported by HTMLText")}get trim(){return super.trim}set textBaseline(e){console.warn("[HTMLTextStyle] textBaseline is not supported by HTMLText")}get textBaseline(){return super.textBaseline}set leading(e){console.warn("[HTMLTextStyle] leading is not supported by HTMLText")}get leading(){return super.leading}set lineJoin(e){console.warn("[HTMLTextStyle] lineJoin is not supported by HTMLText")}get lineJoin(){return super.lineJoin}};let ai=oi;ai.availableFonts={},ai.defaultOptions={align:"left",breakWords:!1,dropShadow:!1,dropShadowAlpha:1,dropShadowAngle:Math.PI/6,dropShadowBlur:0,dropShadowColor:"black",dropShadowDistance:5,fill:"black",fontFamily:"Arial",fontSize:26,fontStyle:"normal",fontVariant:"normal",fontWeight:"normal",letterSpacing:0,lineHeight:0,padding:0,stroke:"black",strokeThickness:0,whiteSpace:"normal",wordWrap:!1,wordWrapWidth:100};const hi=class extends ye{constructor(e="",t={}){var c;super(B.EMPTY),this._text=null,this._style=null,this._autoResolution=!0,this._loading=!1,this.localStyleID=-1,this.dirty=!1,this.ownsStyle=!1;const i=new Image,s=B.from(i,{scaleMode:P.SCALE_MODE,resourceOptions:{autoLoad:!1}});s.orig=new $,s.trim=new $,this.texture=s;const r="http://www.w3.org/2000/svg",n="http://www.w3.org/1999/xhtml",o=document.createElementNS(r,"svg"),a=document.createElementNS(r,"foreignObject"),h=document.createElementNS(n,"div"),l=document.createElementNS(n,"style");a.setAttribute("width","10000"),a.setAttribute("height","10000"),a.style.overflow="hidden",o.appendChild(a),this.maxWidth=hi.defaultMaxWidth,this.maxHeight=hi.defaultMaxHeight,this._domElement=h,this._styleElement=l,this._svgRoot=o,this._foreignObject=a,this._foreignObject.appendChild(l),this._foreignObject.appendChild(h),this._image=i,this._loadImage=new Image,this._autoResolution=hi.defaultAutoResolution,this._resolution=(c=hi.defaultResolution)!=null?c:P.RESOLUTION,this.text=e,this.style=t}measureText(e){var a,h;const{text:t,style:i,resolution:s}=Object.assign({text:this._text,style:this._style,resolution:this._resolution},e);Object.assign(this._domElement,{innerHTML:t,style:i.toCSS(s)}),this._styleElement.textContent=i.toGlobalCSS(),document.body.appendChild(this._svgRoot);const r=this._domElement.getBoundingClientRect();this._svgRoot.remove();const n=Math.min(this.maxWidth,Math.ceil(r.width)),o=Math.min(this.maxHeight,Math.ceil(r.height));return this._svgRoot.setAttribute("width",n.toString()),this._svgRoot.setAttribute("height",o.toString()),t!==this._text&&(this._domElement.innerHTML=this._text),i!==this._style&&(Object.assign(this._domElement,{style:(a=this._style)==null?void 0:a.toCSS(s)}),t
|
||
|
//# sourceMappingURL=pixi.min.js.map
|