regl
Version:
regl is a fast functional WebGL framework.
99 lines • 86.7 kB
JavaScript
(function(Z,ja){"object"===typeof exports&&"undefined"!==typeof module?module.exports=ja():"function"===typeof define&&define.amd?define(ja):Z.createREGL=ja()})(this,function(){function Z(a,b){this.id=Db++;this.type=a;this.data=b}function ja(a){if(0===a.length)return[];var b=a.charAt(0),c=a.charAt(a.length-1);if(1<a.length&&b===c&&('"'===b||"'"===b))return['"'+a.substr(1,a.length-2).replace(/\\/g,"\\\\").replace(/"/g,'\\"')+'"'];if(b=/\[(false|true|null|\d+|'[^']*'|"[^"]*")\]/.exec(a))return ja(a.substr(0,
b.index)).concat(ja(b[1])).concat(ja(a.substr(b.index+b[0].length)));b=a.split(".");if(1===b.length)return['"'+a.replace(/\\/g,"\\\\").replace(/"/g,'\\"')+'"'];a=[];for(c=0;c<b.length;++c)a=a.concat(ja(b[c]));return a}function cb(a){return"["+ja(a).join("][")+"]"}function db(a,b){if("function"===typeof a)return new Z(0,a);if("number"===typeof a||"boolean"===typeof a)return new Z(5,a);if(Array.isArray(a))return new Z(6,a.map(function(a,e){return db(a,b+"["+e+"]")}));if(a instanceof Z)return a}function Eb(){var a=
{"":0},b=[""];return{id:function(c){var e=a[c];if(e)return e;e=a[c]=b.length;b.push(c);return e},str:function(a){return b[a]}}}function Fb(a,b,c){function e(){var b=window.innerWidth,e=window.innerHeight;a!==document.body&&(e=f.getBoundingClientRect(),b=e.right-e.left,e=e.bottom-e.top);f.width=c*b;f.height=c*e}var f=document.createElement("canvas");N(f.style,{border:0,margin:0,padding:0,top:0,left:0,width:"100%",height:"100%"});a.appendChild(f);a===document.body&&(f.style.position="absolute",N(a.style,
{margin:0,padding:0}));var d;a!==document.body&&"function"===typeof ResizeObserver?(d=new ResizeObserver(function(){setTimeout(e)}),d.observe(a)):window.addEventListener("resize",e,!1);e();return{canvas:f,onDestroy:function(){d?d.disconnect():window.removeEventListener("resize",e);a.removeChild(f)}}}function Gb(a,b){function c(c){try{return a.getContext(c,b)}catch(f){return null}}return c("webgl")||c("experimental-webgl")||c("webgl-experimental")}function eb(a){return"string"===typeof a?a.split():
a}function fb(a){return"string"===typeof a?document.querySelector(a):a}function Hb(a){var b=a||{},c,e,f,d;a={};var q=[],n=[],u="undefined"===typeof window?1:window.devicePixelRatio,h=!1,v=function(a){},m=function(){};"string"===typeof b?c=document.querySelector(b):"object"===typeof b&&("string"===typeof b.nodeName&&"function"===typeof b.appendChild&&"function"===typeof b.getBoundingClientRect?c=b:"function"===typeof b.drawArrays||"function"===typeof b.drawElements?(d=b,f=d.canvas):("gl"in b?d=b.gl:
"canvas"in b?f=fb(b.canvas):"container"in b&&(e=fb(b.container)),"attributes"in b&&(a=b.attributes),"extensions"in b&&(q=eb(b.extensions)),"optionalExtensions"in b&&(n=eb(b.optionalExtensions)),"onDone"in b&&(v=b.onDone),"profile"in b&&(h=!!b.profile),"pixelRatio"in b&&(u=+b.pixelRatio)));c&&("canvas"===c.nodeName.toLowerCase()?f=c:e=c);if(!d){if(!f){c=Fb(e||document.body,v,u);if(!c)return null;f=c.canvas;m=c.onDestroy}void 0===a.premultipliedAlpha&&(a.premultipliedAlpha=!0);d=Gb(f,a)}return d?{gl:d,
canvas:f,container:e,extensions:q,optionalExtensions:n,pixelRatio:u,profile:h,onDone:v,onDestroy:m}:(m(),v("webgl not supported, try upgrading your browser or graphics drivers http://get.webgl.org"),null)}function Ib(a,b){function c(b){b=b.toLowerCase();var c;try{c=e[b]=a.getExtension(b)}catch(f){}return!!c}for(var e={},f=0;f<b.extensions.length;++f){var d=b.extensions[f];if(!c(d))return b.onDestroy(),b.onDone('"'+d+'" extension is not supported by the current WebGL context, try upgrading your system or a different browser'),
null}b.optionalExtensions.forEach(c);return{extensions:e,restore:function(){Object.keys(e).forEach(function(a){if(e[a]&&!c(a))throw Error("(regl): error restoring extension "+a);})}}}function S(a,b){for(var c=Array(a),e=0;e<a;++e)c[e]=b(e);return c}function gb(a){var b,c;b=(65535<a)<<4;a>>>=b;c=(255<a)<<3;a>>>=c;b|=c;c=(15<a)<<2;a>>>=c;b|=c;c=(3<a)<<1;return b|c|a>>>c>>1}function hb(){function a(a){a:{for(var b=16;268435456>=b;b*=16)if(a<=b){a=b;break a}a=0}b=c[gb(a)>>2];return 0<b.length?b.pop():
new ArrayBuffer(a)}function b(a){c[gb(a.byteLength)>>2].push(a)}var c=S(8,function(){return[]});return{alloc:a,free:b,allocType:function(b,c){var d=null;switch(b){case 5120:d=new Int8Array(a(c),0,c);break;case 5121:d=new Uint8Array(a(c),0,c);break;case 5122:d=new Int16Array(a(2*c),0,c);break;case 5123:d=new Uint16Array(a(2*c),0,c);break;case 5124:d=new Int32Array(a(4*c),0,c);break;case 5125:d=new Uint32Array(a(4*c),0,c);break;case 5126:d=new Float32Array(a(4*c),0,c);break;default:return null}return d.length!==
c?d.subarray(0,c):d},freeType:function(a){b(a.buffer)}}}function ka(a){return!!a&&"object"===typeof a&&Array.isArray(a.shape)&&Array.isArray(a.stride)&&"number"===typeof a.offset&&a.shape.length===a.stride.length&&(Array.isArray(a.data)||Q(a.data))}function ib(a,b,c,e,f,d){for(var q=0;q<b;++q)for(var n=a[q],u=0;u<c;++u)for(var h=n[u],v=0;v<e;++v)f[d++]=h[v]}function jb(a,b,c,e,f){for(var d=1,q=c+1;q<b.length;++q)d*=b[q];var n=b[c];if(4===b.length-c){var u=b[c+1],h=b[c+2];b=b[c+3];for(q=0;q<n;++q)ib(a[q],
u,h,b,e,f),f+=d}else for(q=0;q<n;++q)jb(a[q],b,c+1,e,f),f+=d}function Ga(a){return Ha[Object.prototype.toString.call(a)]|0}function kb(a,b){for(var c=0;c<b.length;++c)a[c]=b[c]}function lb(a,b,c,e,f,d,q){for(var n=0,u=0;u<c;++u)for(var h=0;h<e;++h)a[n++]=b[f*u+d*h+q]}function Jb(a,b,c,e){function f(b){this.id=u++;this.buffer=a.createBuffer();this.type=b;this.usage=35044;this.byteLength=0;this.dimension=1;this.dtype=5121;this.persistentData=null;c.profile&&(this.stats={size:0})}function d(b,c,p){b.byteLength=
c.byteLength;a.bufferData(b.type,c,p)}function q(a,b,c,k,g,r){a.usage=c;if(Array.isArray(b)){if(a.dtype=k||5126,0<b.length)if(Array.isArray(b[0])){g=mb(b);for(var l=k=1;l<g.length;++l)k*=g[l];a.dimension=k;b=Ua(b,g,a.dtype);d(a,b,c);r?a.persistentData=b:I.freeType(b)}else"number"===typeof b[0]?(a.dimension=g,g=I.allocType(a.dtype,b.length),kb(g,b),d(a,g,c),r?a.persistentData=g:I.freeType(g)):Q(b[0])&&(a.dimension=b[0].length,a.dtype=k||Ga(b[0])||5126,b=Ua(b,[b.length,b[0].length],a.dtype),d(a,b,c),
r?a.persistentData=b:I.freeType(b))}else if(Q(b))a.dtype=k||Ga(b),a.dimension=g,d(a,b,c),r&&(a.persistentData=new Uint8Array(new Uint8Array(b.buffer)));else if(ka(b)){g=b.shape;var e=b.stride,l=b.offset,t=0,f=0,h=0,n=0;1===g.length?(t=g[0],f=1,h=e[0],n=0):2===g.length&&(t=g[0],f=g[1],h=e[0],n=e[1]);a.dtype=k||Ga(b.data)||5126;a.dimension=f;g=I.allocType(a.dtype,t*f);lb(g,b.data,t,f,h,n,l);d(a,g,c);r?a.persistentData=g:I.freeType(g)}else b instanceof ArrayBuffer&&(a.dtype=5121,a.dimension=g,d(a,b,
c),r&&(a.persistentData=new Uint8Array(new Uint8Array(b))))}function n(c){b.bufferCount--;e(c);a.deleteBuffer(c.buffer);c.buffer=null;delete h[c.id]}var u=0,h={};f.prototype.bind=function(){a.bindBuffer(this.type,this.buffer)};f.prototype.destroy=function(){n(this)};var v=[];c.profile&&(b.getTotalBufferSize=function(){var a=0;Object.keys(h).forEach(function(b){a+=h[b].stats.size});return a});return{create:function(m,e,d,k){function g(b){var e=35044,t=null,d=0,m=0,f=1;Array.isArray(b)||Q(b)||ka(b)||
b instanceof ArrayBuffer?t=b:"number"===typeof b?d=b|0:b&&("data"in b&&(t=b.data),"usage"in b&&(e=nb[b.usage]),"type"in b&&(m=Ja[b.type]),"dimension"in b&&(f=b.dimension|0),"length"in b&&(d=b.length|0));r.bind();t?q(r,t,e,m,f,k):(d&&a.bufferData(r.type,d,e),r.dtype=m||5121,r.usage=e,r.dimension=f,r.byteLength=d);c.profile&&(r.stats.size=r.byteLength*ma[r.dtype]);return g}b.bufferCount++;var r=new f(e);h[r.id]=r;d||g(m);g._reglType="buffer";g._buffer=r;g.subdata=function(b,c){var t=(c||0)|0,d;r.bind();
if(Q(b)||b instanceof ArrayBuffer)a.bufferSubData(r.type,t,b);else if(Array.isArray(b)){if(0<b.length)if("number"===typeof b[0]){var e=I.allocType(r.dtype,b.length);kb(e,b);a.bufferSubData(r.type,t,e);I.freeType(e)}else if(Array.isArray(b[0])||Q(b[0]))d=mb(b),e=Ua(b,d,r.dtype),a.bufferSubData(r.type,t,e),I.freeType(e)}else if(ka(b)){d=b.shape;var m=b.stride,f=e=0,k=0,y=0;1===d.length?(e=d[0],f=1,k=m[0],y=0):2===d.length&&(e=d[0],f=d[1],k=m[0],y=m[1]);d=Array.isArray(b.data)?r.dtype:Ga(b.data);d=I.allocType(d,
e*f);lb(d,b.data,e,f,k,y,b.offset);a.bufferSubData(r.type,t,d);I.freeType(d)}return g};c.profile&&(g.stats=r.stats);g.destroy=function(){n(r)};return g},createStream:function(a,b){var c=v.pop();c||(c=new f(a));c.bind();q(c,b,35040,0,1,!1);return c},destroyStream:function(a){v.push(a)},clear:function(){K(h).forEach(n);v.forEach(n)},getBuffer:function(a){return a&&a._buffer instanceof f?a._buffer:null},restore:function(){K(h).forEach(function(b){b.buffer=a.createBuffer();a.bindBuffer(b.type,b.buffer);
a.bufferData(b.type,b.persistentData||b.byteLength,b.usage)})},_initBuffer:q}}function Kb(a,b,c,e){function f(a){this.id=u++;n[this.id]=this;this.buffer=a;this.primType=4;this.type=this.vertCount=0}function d(d,e,f,k,g,r,l){d.buffer.bind();var h;e?((h=l)||Q(e)&&(!ka(e)||Q(e.data))||(h=b.oes_element_index_uint?5125:5123),c._initBuffer(d.buffer,e,f,h,3)):(a.bufferData(34963,r,f),d.buffer.dtype=h||5121,d.buffer.usage=f,d.buffer.dimension=3,d.buffer.byteLength=r);h=l;if(!l){switch(d.buffer.dtype){case 5121:case 5120:h=
5121;break;case 5123:case 5122:h=5123;break;case 5125:case 5124:h=5125}d.buffer.dtype=h}d.type=h;e=g;0>e&&(e=d.buffer.byteLength,5123===h?e>>=1:5125===h&&(e>>=2));d.vertCount=e;e=k;0>k&&(e=4,k=d.buffer.dimension,1===k&&(e=0),2===k&&(e=1),3===k&&(e=4));d.primType=e}function q(a){e.elementsCount--;delete n[a.id];a.buffer.destroy();a.buffer=null}var n={},u=0,h={uint8:5121,uint16:5123};b.oes_element_index_uint&&(h.uint32=5125);f.prototype.bind=function(){this.buffer.bind()};var v=[];return{create:function(a,
b){function p(a){if(a)if("number"===typeof a)k(a),g.primType=4,g.vertCount=a|0,g.type=5121;else{var b=null,c=35044,e=-1,f=-1,n=0,m=0;if(Array.isArray(a)||Q(a)||ka(a))b=a;else if("data"in a&&(b=a.data),"usage"in a&&(c=nb[a.usage]),"primitive"in a&&(e=Ka[a.primitive]),"count"in a&&(f=a.count|0),"type"in a&&(m=h[a.type]),"length"in a)n=a.length|0;else if(n=f,5123===m||5122===m)n*=2;else if(5125===m||5124===m)n*=4;d(g,b,c,e,f,n,m)}else k(),g.primType=4,g.vertCount=0,g.type=5121;return p}var k=c.create(null,
34963,!0),g=new f(k._buffer);e.elementsCount++;p(a);p._reglType="elements";p._elements=g;p.subdata=function(a,b){k.subdata(a,b);return p};p.destroy=function(){q(g)};return p},createStream:function(a){var b=v.pop();b||(b=new f(c.create(null,34963,!0,!1)._buffer));d(b,a,35040,-1,-1,0,0);return b},destroyStream:function(a){v.push(a)},getElements:function(a){return"function"===typeof a&&a._elements instanceof f?a._elements:null},clear:function(){K(n).forEach(q)}}}function ob(a){for(var b=I.allocType(5123,
a.length),c=0;c<a.length;++c)if(isNaN(a[c]))b[c]=65535;else if(Infinity===a[c])b[c]=31744;else if(-Infinity===a[c])b[c]=64512;else{pb[0]=a[c];var e=Lb[0],f=e>>>31<<15,d=(e<<1>>>24)-127,e=e>>13&1023;b[c]=-24>d?f:-14>d?f+(e+1024>>-14-d):15<d?f+31744:f+(d+15<<10)+e}return b}function pa(a){return Array.isArray(a)||Q(a)}function qa(a){return"[object "+a+"]"}function qb(a){return Array.isArray(a)&&(0===a.length||"number"===typeof a[0])}function rb(a){return Array.isArray(a)&&0!==a.length&&pa(a[0])?!0:!1}
function aa(a){return Object.prototype.toString.call(a)}function Va(a){if(!a)return!1;var b=aa(a);return 0<=Mb.indexOf(b)?!0:qb(a)||rb(a)||ka(a)}function sb(a,b){36193===a.type?(a.data=ob(b),I.freeType(b)):a.data=b}function La(a,b,c,e,f,d){a="undefined"!==typeof E[a]?E[a]:V[a]*ya[b];d&&(a*=6);if(f){for(e=0;1<=c;)e+=a*c*c,c/=2;return e}return a*c*e}function Nb(a,b,c,e,f,d,q){function n(){this.format=this.internalformat=6408;this.type=5121;this.flipY=this.premultiplyAlpha=this.compressed=!1;this.unpackAlignment=
1;this.colorSpace=37444;this.channels=this.height=this.width=0}function u(a,b){a.internalformat=b.internalformat;a.format=b.format;a.type=b.type;a.compressed=b.compressed;a.premultiplyAlpha=b.premultiplyAlpha;a.flipY=b.flipY;a.unpackAlignment=b.unpackAlignment;a.colorSpace=b.colorSpace;a.width=b.width;a.height=b.height;a.channels=b.channels}function h(a,b){if("object"===typeof b&&b){"premultiplyAlpha"in b&&(a.premultiplyAlpha=b.premultiplyAlpha);"flipY"in b&&(a.flipY=b.flipY);"alignment"in b&&(a.unpackAlignment=
b.alignment);"colorSpace"in b&&(a.colorSpace=Ob[b.colorSpace]);"type"in b&&(a.type=P[b.type]);var c=a.width,e=a.height,d=a.channels,f=!1;"shape"in b?(c=b.shape[0],e=b.shape[1],3===b.shape.length&&(d=b.shape[2],f=!0)):("radius"in b&&(c=e=b.radius),"width"in b&&(c=b.width),"height"in b&&(e=b.height),"channels"in b&&(d=b.channels,f=!0));a.width=c|0;a.height=e|0;a.channels=d|0;c=!1;"format"in b&&(c=b.format,e=a.internalformat=G[c],a.format=W[e],c in P&&!("type"in b)&&(a.type=P[c]),c in ha&&(a.compressed=
!0),c=!0);!f&&c?a.channels=V[a.format]:f&&!c&&a.channels!==Oa[a.format]&&(a.format=a.internalformat=Oa[a.channels])}}function v(b){a.pixelStorei(37440,b.flipY);a.pixelStorei(37441,b.premultiplyAlpha);a.pixelStorei(37443,b.colorSpace);a.pixelStorei(3317,b.unpackAlignment)}function m(){n.call(this);this.yOffset=this.xOffset=0;this.data=null;this.needsFree=!1;this.element=null;this.needsCopy=!1}function C(a,b){var c=null;Va(b)?c=b:b&&(h(a,b),"x"in b&&(a.xOffset=b.x|0),"y"in b&&(a.yOffset=b.y|0),Va(b.data)&&
(c=b.data));if(b.copy){var e=f.viewportWidth,d=f.viewportHeight;a.width=a.width||e-a.xOffset;a.height=a.height||d-a.yOffset;a.needsCopy=!0}else if(!c)a.width=a.width||1,a.height=a.height||1,a.channels=a.channels||4;else if(Q(c))a.channels=a.channels||4,a.data=c,"type"in b||5121!==a.type||(a.type=Ha[Object.prototype.toString.call(c)]|0);else if(qb(c)){a.channels=a.channels||4;e=c;d=e.length;switch(a.type){case 5121:case 5123:case 5125:case 5126:d=I.allocType(a.type,d);d.set(e);a.data=d;break;case 36193:a.data=
ob(e)}a.alignment=1;a.needsFree=!0}else if(ka(c)){e=c.data;Array.isArray(e)||5121!==a.type||(a.type=Ha[Object.prototype.toString.call(e)]|0);var d=c.shape,g=c.stride,y,t,l,k;3===d.length?(l=d[2],k=g[2]):k=l=1;y=d[0];t=d[1];d=g[0];g=g[1];a.alignment=1;a.width=y;a.height=t;a.channels=l;a.format=a.internalformat=Oa[l];a.needsFree=!0;y=k;c=c.offset;l=a.width;k=a.height;t=a.channels;for(var w=I.allocType(36193===a.type?5126:a.type,l*k*t),B=0,da=0;da<k;++da)for(var xa=0;xa<l;++xa)for(var Wa=0;Wa<t;++Wa)w[B++]=
e[d*xa+g*da+y*Wa+c];sb(a,w)}else if(aa(c)===Xa||aa(c)===Ya||aa(c)===ub)aa(c)===Xa||aa(c)===Ya?a.element=c:a.element=c.canvas,a.width=a.element.width,a.height=a.element.height,a.channels=4;else if(aa(c)===vb)a.element=c,a.width=c.width,a.height=c.height,a.channels=4;else if(aa(c)===wb)a.element=c,a.width=c.naturalWidth,a.height=c.naturalHeight,a.channels=4;else if(aa(c)===xb)a.element=c,a.width=c.videoWidth,a.height=c.videoHeight,a.channels=4;else if(rb(c)){e=a.width||c[0].length;d=a.height||c.length;
g=a.channels;g=pa(c[0][0])?g||c[0][0].length:g||1;y=Qa.shape(c);l=1;for(k=0;k<y.length;++k)l*=y[k];l=I.allocType(36193===a.type?5126:a.type,l);Qa.flatten(c,y,"",l);sb(a,l);a.alignment=1;a.width=e;a.height=d;a.channels=g;a.format=a.internalformat=Oa[g];a.needsFree=!0}}function p(b,c,d,g,l){var f=b.element,y=b.data,k=b.internalformat,t=b.format,h=b.type,w=b.width,B=b.height;v(b);f?a.texSubImage2D(c,l,d,g,t,h,f):b.compressed?a.compressedTexSubImage2D(c,l,d,g,k,w,B,y):b.needsCopy?(e(),a.copyTexSubImage2D(c,
l,d,g,b.xOffset,b.yOffset,w,B)):a.texSubImage2D(c,l,d,g,w,B,t,h,y)}function k(){return S.pop()||new m}function g(a){a.needsFree&&I.freeType(a.data);m.call(a);S.push(a)}function r(){n.call(this);this.genMipmaps=!1;this.mipmapHint=4352;this.mipmask=0;this.images=Array(16)}function l(a,b,c){var d=a.images[0]=k();a.mipmask=1;d.width=a.width=b;d.height=a.height=c;d.channels=a.channels=4}function D(a,b){var c=null;if(Va(b))c=a.images[0]=k(),u(c,a),C(c,b),a.mipmask=1;else if(h(a,b),Array.isArray(b.mipmap))for(var d=
b.mipmap,e=0;e<d.length;++e)c=a.images[e]=k(),u(c,a),c.width>>=e,c.height>>=e,C(c,d[e]),a.mipmask|=1<<e;else c=a.images[0]=k(),u(c,a),C(c,b),a.mipmask=1;u(a,a.images[0])}function t(b,c){for(var d=b.images,g=0;g<d.length&&d[g];++g){var l=d[g],f=c,y=g,k=l.element,t=l.data,h=l.internalformat,w=l.format,B=l.type,da=l.width,xa=l.height;v(l);k?a.texImage2D(f,y,w,w,B,k):l.compressed?a.compressedTexImage2D(f,y,h,da,xa,0,t):l.needsCopy?(e(),a.copyTexImage2D(f,y,w,l.xOffset,l.yOffset,da,xa,0)):a.texImage2D(f,
y,w,da,xa,0,w,B,t||null)}}function Ia(){var a=Y.pop()||new r;n.call(a);for(var b=a.mipmask=0;16>b;++b)a.images[b]=null;return a}function wa(a){for(var b=a.images,c=0;c<b.length;++c)b[c]&&g(b[c]),b[c]=null;Y.push(a)}function x(){this.magFilter=this.minFilter=9728;this.wrapT=this.wrapS=33071;this.anisotropic=1;this.genMipmaps=!1;this.mipmapHint=4352}function J(a,b){"min"in b&&(a.minFilter=za[b.min],0<=Pb.indexOf(a.minFilter)&&!("faces"in b)&&(a.genMipmaps=!0));"mag"in b&&(a.magFilter=T[b.mag]);var c=
a.wrapS,d=a.wrapT;if("wrap"in b){var e=b.wrap;"string"===typeof e?c=d=ia[e]:Array.isArray(e)&&(c=ia[e[0]],d=ia[e[1]])}else"wrapS"in b&&(c=ia[b.wrapS]),"wrapT"in b&&(d=ia[b.wrapT]);a.wrapS=c;a.wrapT=d;"anisotropic"in b&&(a.anisotropic=b.anisotropic);if("mipmap"in b){c=!1;switch(typeof b.mipmap){case "string":a.mipmapHint=z[b.mipmap];c=a.genMipmaps=!0;break;case "boolean":c=a.genMipmaps=b.mipmap;break;case "object":a.genMipmaps=!1,c=!0}!c||"min"in b||(a.minFilter=9984)}}function O(c,d){a.texParameteri(d,
10241,c.minFilter);a.texParameteri(d,10240,c.magFilter);a.texParameteri(d,10242,c.wrapS);a.texParameteri(d,10243,c.wrapT);b.ext_texture_filter_anisotropic&&a.texParameteri(d,34046,c.anisotropic);c.genMipmaps&&(a.hint(33170,c.mipmapHint),a.generateMipmap(d))}function y(b){n.call(this);this.mipmask=0;this.internalformat=6408;this.id=Qb++;this.refCount=1;this.target=b;this.texture=a.createTexture();this.unit=-1;this.bindCount=0;this.texInfo=new x;q.profile&&(this.stats={size:0})}function U(b){a.activeTexture(33984);
a.bindTexture(b.target,b.texture)}function ua(){var b=X[0];b?a.bindTexture(b.target,b.texture):a.bindTexture(3553,null)}function H(b){var c=b.texture,e=b.unit,l=b.target;0<=e&&(a.activeTexture(33984+e),a.bindTexture(l,null),X[e]=null);a.deleteTexture(c);b.texture=null;b.params=null;b.pixels=null;b.refCount=0;delete fa[b.id];d.textureCount--}var z={"don't care":4352,"dont care":4352,nice:4354,fast:4353},ia={repeat:10497,clamp:33071,mirror:33648},T={nearest:9728,linear:9729},za=N({mipmap:9987,"nearest mipmap nearest":9984,
"linear mipmap nearest":9985,"nearest mipmap linear":9986,"linear mipmap linear":9987},T),Ob={none:0,browser:37444},P={uint8:5121,rgba4:32819,rgb565:33635,"rgb5 a1":32820},G={alpha:6406,luminance:6409,"luminance alpha":6410,rgb:6407,rgba:6408,rgba4:32854,"rgb5 a1":32855,rgb565:36194},ha={};b.ext_srgb&&(G.srgb=35904,G.srgba=35906);b.oes_texture_float&&(P.float32=P["float"]=5126);b.oes_texture_half_float&&(P.float16=P["half float"]=36193);b.webgl_depth_texture&&(N(G,{depth:6402,"depth stencil":34041}),
N(P,{uint16:5123,uint32:5125,"depth stencil":34042}));b.webgl_compressed_texture_s3tc&&N(ha,{"rgb s3tc dxt1":33776,"rgba s3tc dxt1":33777,"rgba s3tc dxt3":33778,"rgba s3tc dxt5":33779});b.webgl_compressed_texture_atc&&N(ha,{"rgb atc":35986,"rgba atc explicit alpha":35987,"rgba atc interpolated alpha":34798});b.webgl_compressed_texture_pvrtc&&N(ha,{"rgb pvrtc 4bppv1":35840,"rgb pvrtc 2bppv1":35841,"rgba pvrtc 4bppv1":35842,"rgba pvrtc 2bppv1":35843});b.webgl_compressed_texture_etc1&&(ha["rgb etc1"]=
36196);var L=Array.prototype.slice.call(a.getParameter(34467));Object.keys(ha).forEach(function(a){var b=ha[a];0<=L.indexOf(b)&&(G[a]=b)});var E=Object.keys(G);c.textureFormats=E;var ea=[];Object.keys(G).forEach(function(a){ea[G[a]]=a});var M=[];Object.keys(P).forEach(function(a){M[P[a]]=a});var Ea=[];Object.keys(T).forEach(function(a){Ea[T[a]]=a});var na=[];Object.keys(za).forEach(function(a){na[za[a]]=a});var oa=[];Object.keys(ia).forEach(function(a){oa[ia[a]]=a});var W=E.reduce(function(a,c){var d=
G[c];6409===d||6406===d||6409===d||6410===d||6402===d||34041===d||b.ext_srgb&&(35904===d||35906===d)?a[d]=d:32855===d||0<=c.indexOf("rgba")?a[d]=6408:a[d]=6407;return a},{}),S=[],Y=[],Qb=0,fa={},ga=c.maxTextureUnits,X=Array(ga).map(function(){return null});N(y.prototype,{bind:function(){this.bindCount+=1;var b=this.unit;if(0>b){for(var c=0;c<ga;++c){var e=X[c];if(e){if(0<e.bindCount)continue;e.unit=-1}X[c]=this;b=c;break}q.profile&&d.maxTextureUnits<b+1&&(d.maxTextureUnits=b+1);this.unit=b;a.activeTexture(33984+
b);a.bindTexture(this.target,this.texture)}return b},unbind:function(){--this.bindCount},decRef:function(){0>=--this.refCount&&H(this)}});q.profile&&(d.getTotalTextureSize=function(){var a=0;Object.keys(fa).forEach(function(b){a+=fa[b].stats.size});return a});return{create2D:function(b,c){function e(a,b){var c=f.texInfo;x.call(c);var d=Ia();"number"===typeof a?"number"===typeof b?l(d,a|0,b|0):l(d,a|0,a|0):a?(J(c,a),D(d,a)):l(d,1,1);c.genMipmaps&&(d.mipmask=(d.width<<1)-1);f.mipmask=d.mipmask;u(f,
d);f.internalformat=d.internalformat;e.width=d.width;e.height=d.height;U(f);t(d,3553);O(c,3553);ua();wa(d);q.profile&&(f.stats.size=La(f.internalformat,f.type,d.width,d.height,c.genMipmaps,!1));e.format=ea[f.internalformat];e.type=M[f.type];e.mag=Ea[c.magFilter];e.min=na[c.minFilter];e.wrapS=oa[c.wrapS];e.wrapT=oa[c.wrapT];return e}var f=new y(3553);fa[f.id]=f;d.textureCount++;e(b,c);e.subimage=function(a,b,c,d){b|=0;c|=0;d|=0;var l=k();u(l,f);l.width=0;l.height=0;C(l,a);l.width=l.width||(f.width>>
d)-b;l.height=l.height||(f.height>>d)-c;U(f);p(l,3553,b,c,d);ua();g(l);return e};e.resize=function(b,c){var d=b|0,l=c|0||d;if(d===f.width&&l===f.height)return e;e.width=f.width=d;e.height=f.height=l;U(f);for(var g=0;f.mipmask>>g;++g){var y=d>>g,w=l>>g;if(!y||!w)break;a.texImage2D(3553,g,f.format,y,w,0,f.format,f.type,null)}ua();q.profile&&(f.stats.size=La(f.internalformat,f.type,d,l,!1,!1));return e};e._reglType="texture2d";e._texture=f;q.profile&&(e.stats=f.stats);e.destroy=function(){f.decRef()};
return e},createCube:function(b,c,e,f,n,r){function z(a,b,c,d,e,f){var g,A=m.texInfo;x.call(A);for(g=0;6>g;++g)H[g]=Ia();if("number"===typeof a||!a)for(a=a|0||1,g=0;6>g;++g)l(H[g],a,a);else if("object"===typeof a)if(b)D(H[0],a),D(H[1],b),D(H[2],c),D(H[3],d),D(H[4],e),D(H[5],f);else if(J(A,a),h(m,a),"faces"in a)for(a=a.faces,g=0;6>g;++g)u(H[g],m),D(H[g],a[g]);else for(g=0;6>g;++g)D(H[g],a);u(m,H[0]);m.mipmask=A.genMipmaps?(H[0].width<<1)-1:H[0].mipmask;m.internalformat=H[0].internalformat;z.width=
H[0].width;z.height=H[0].height;U(m);for(g=0;6>g;++g)t(H[g],34069+g);O(A,34067);ua();q.profile&&(m.stats.size=La(m.internalformat,m.type,z.width,z.height,A.genMipmaps,!0));z.format=ea[m.internalformat];z.type=M[m.type];z.mag=Ea[A.magFilter];z.min=na[A.minFilter];z.wrapS=oa[A.wrapS];z.wrapT=oa[A.wrapT];for(g=0;6>g;++g)wa(H[g]);return z}var m=new y(34067);fa[m.id]=m;d.cubeCount++;var H=Array(6);z(b,c,e,f,n,r);z.subimage=function(a,b,c,d,e){c|=0;d|=0;e|=0;var f=k();u(f,m);f.width=0;f.height=0;C(f,b);
f.width=f.width||(m.width>>e)-c;f.height=f.height||(m.height>>e)-d;U(m);p(f,34069+a,c,d,e);ua();g(f);return z};z.resize=function(b){b|=0;if(b!==m.width){z.width=m.width=b;z.height=m.height=b;U(m);for(var c=0;6>c;++c)for(var d=0;m.mipmask>>d;++d)a.texImage2D(34069+c,d,m.format,b>>d,b>>d,0,m.format,m.type,null);ua();q.profile&&(m.stats.size=La(m.internalformat,m.type,z.width,z.height,!1,!0));return z}};z._reglType="textureCube";z._texture=m;q.profile&&(z.stats=m.stats);z.destroy=function(){m.decRef()};
return z},clear:function(){for(var b=0;b<ga;++b)a.activeTexture(33984+b),a.bindTexture(3553,null),X[b]=null;K(fa).forEach(H);d.cubeCount=0;d.textureCount=0},getTexture:function(a){return null},restore:function(){for(var b=0;b<ga;++b){var c=X[b];c&&(c.bindCount=0,c.unit=-1,X[b]=null)}K(fa).forEach(function(b){b.texture=a.createTexture();a.bindTexture(b.target,b.texture);for(var c=0;32>c;++c)if(0!==(b.mipmask&1<<c))if(3553===b.target)a.texImage2D(3553,c,b.internalformat,b.width>>c,b.height>>c,0,b.internalformat,
b.type,null);else for(var d=0;6>d;++d)a.texImage2D(34069+d,c,b.internalformat,b.width>>c,b.height>>c,0,b.internalformat,b.type,null);O(b.texInfo,b.target)})},refresh:function(){for(var b=0;b<ga;++b){var c=X[b];c&&(c.bindCount=0,c.unit=-1,X[b]=null);a.activeTexture(33984+b);a.bindTexture(3553,null);a.bindTexture(34067,null)}}}}function Rb(a,b,c,e,f,d){function q(a,b,c){this.target=a;this.texture=b;this.renderbuffer=c;var d=a=0;b?(a=b.width,d=b.height):c&&(a=c.width,d=c.height);this.width=a;this.height=
d}function n(a){a&&(a.texture&&a.texture._texture.decRef(),a.renderbuffer&&a.renderbuffer._renderbuffer.decRef())}function u(a,b,c){a&&(a.texture?a.texture._texture.refCount+=1:a.renderbuffer._renderbuffer.refCount+=1)}function h(b,c){c&&(c.texture?a.framebufferTexture2D(36160,b,c.target,c.texture._texture.texture,0):a.framebufferRenderbuffer(36160,b,36161,c.renderbuffer._renderbuffer.renderbuffer))}function v(a){var b=3553,c=null,d=null,e=a;"object"===typeof a&&(e=a.data,"target"in a&&(b=a.target|
0));a=e._reglType;"texture2d"===a?c=e:"textureCube"===a?c=e:"renderbuffer"===a&&(d=e,b=36161);return new q(b,c,d)}function m(a,b,c,d,g){if(c)return a=e.create2D({width:a,height:b,format:d,type:g}),a._texture.refCount=0,new q(3553,a,null);a=f.create({width:a,height:b,format:d});a._renderbuffer.refCount=0;return new q(36161,null,a)}function C(a){return a&&(a.texture||a.renderbuffer)}function p(a,b,c){a&&(a.texture?a.texture.resize(b,c):a.renderbuffer&&a.renderbuffer.resize(b,c),a.width=b,a.height=c)}
function k(){this.id=J++;O[this.id]=this;this.framebuffer=a.createFramebuffer();this.height=this.width=0;this.colorAttachments=[];this.depthStencilAttachment=this.stencilAttachment=this.depthAttachment=null}function g(a){a.colorAttachments.forEach(n);n(a.depthAttachment);n(a.stencilAttachment);n(a.depthStencilAttachment)}function r(b){a.deleteFramebuffer(b.framebuffer);b.framebuffer=null;d.framebufferCount--;delete O[b.id]}function l(b){var d;a.bindFramebuffer(36160,b.framebuffer);var e=b.colorAttachments;
for(d=0;d<e.length;++d)h(36064+d,e[d]);for(d=e.length;d<c.maxColorAttachments;++d)a.framebufferTexture2D(36160,36064+d,3553,null,0);a.framebufferTexture2D(36160,33306,3553,null,0);a.framebufferTexture2D(36160,36096,3553,null,0);a.framebufferTexture2D(36160,36128,3553,null,0);h(36096,b.depthAttachment);h(36128,b.stencilAttachment);h(33306,b.depthStencilAttachment);a.checkFramebufferStatus(36160);a.isContextLost();a.bindFramebuffer(36160,t.next?t.next.framebuffer:null);t.cur=t.next;a.getError()}function D(a,
b){function c(a,b){var d,f=0,k=0,t=!0,h=!0;d=null;var n=!0,p="rgba",r="uint8",q=1,y=null,D=null,na=null,O=!1;if("number"===typeof a)f=a|0,k=b|0||f;else if(a){"shape"in a?(k=a.shape,f=k[0],k=k[1]):("radius"in a&&(f=k=a.radius),"width"in a&&(f=a.width),"height"in a&&(k=a.height));if("color"in a||"colors"in a)d=a.color||a.colors,Array.isArray(d);if(!d){"colorCount"in a&&(q=a.colorCount|0);"colorTexture"in a&&(n=!!a.colorTexture,p="rgba4");if("colorType"in a&&(r=a.colorType,!n))if("half float"===r||"float16"===
r)p="rgba16f";else if("float"===r||"float32"===r)p="rgba32f";"colorFormat"in a&&(p=a.colorFormat,0<=Ia.indexOf(p)?n=!0:0<=wa.indexOf(p)&&(n=!1))}if("depthTexture"in a||"depthStencilTexture"in a)O=!(!a.depthTexture&&!a.depthStencilTexture);"depth"in a&&("boolean"===typeof a.depth?t=a.depth:(y=a.depth,h=!1));"stencil"in a&&("boolean"===typeof a.stencil?h=a.stencil:(D=a.stencil,t=!1));"depthStencil"in a&&("boolean"===typeof a.depthStencil?t=h=a.depthStencil:(na=a.depthStencil,h=t=!1))}else f=k=1;var W=
null,J=null,U=null,x=null;if(Array.isArray(d))W=d.map(v);else if(d)W=[v(d)];else for(W=Array(q),d=0;d<q;++d)W[d]=m(f,k,n,p,r);f=f||W[0].width;k=k||W[0].height;y?J=v(y):t&&!h&&(J=m(f,k,O,"depth","uint32"));D?U=v(D):h&&!t&&(U=m(f,k,!1,"stencil","uint8"));na?x=v(na):!y&&!D&&h&&t&&(x=m(f,k,O,"depth stencil","depth stencil"));t=null;for(d=0;d<W.length;++d)u(W[d],f,k),W[d]&&W[d].texture&&(h=Za[W[d].texture._texture.format]*Ra[W[d].texture._texture.type],null===t&&(t=h));u(J,f,k);u(U,f,k);u(x,f,k);g(e);
e.width=f;e.height=k;e.colorAttachments=W;e.depthAttachment=J;e.stencilAttachment=U;e.depthStencilAttachment=x;c.color=W.map(C);c.depth=C(J);c.stencil=C(U);c.depthStencil=C(x);c.width=e.width;c.height=e.height;l(e);return c}var e=new k;d.framebufferCount++;c(a,b);return N(c,{resize:function(a,b){var d=Math.max(a|0,1),f=Math.max(b|0||d,1);if(d===e.width&&f===e.height)return c;for(var g=e.colorAttachments,k=0;k<g.length;++k)p(g[k],d,f);p(e.depthAttachment,d,f);p(e.stencilAttachment,d,f);p(e.depthStencilAttachment,
d,f);e.width=c.width=d;e.height=c.height=f;l(e);return c},_reglType:"framebuffer",_framebuffer:e,destroy:function(){r(e);g(e)},use:function(a){t.setFBO({framebuffer:c},a)}})}var t={cur:null,next:null,dirty:!1,setFBO:null},Ia=["rgba"],wa=["rgba4","rgb565","rgb5 a1"];b.ext_srgb&&wa.push("srgba");b.ext_color_buffer_half_float&&wa.push("rgba16f","rgb16f");b.webgl_color_buffer_float&&wa.push("rgba32f");var x=["uint8"];b.oes_texture_half_float&&x.push("half float","float16");b.oes_texture_float&&x.push("float",
"float32");var J=0,O={};return N(t,{getFramebuffer:function(a){return"function"===typeof a&&"framebuffer"===a._reglType&&(a=a._framebuffer,a instanceof k)?a:null},create:D,createCube:function(a){function b(a){var d,f={color:null},g=0,l=null;d="rgba";var k="uint8",t=1;if("number"===typeof a)g=a|0;else if(a){"shape"in a?g=a.shape[0]:("radius"in a&&(g=a.radius|0),"width"in a?g=a.width|0:"height"in a&&(g=a.height|0));if("color"in a||"colors"in a)l=a.color||a.colors,Array.isArray(l);l||("colorCount"in
a&&(t=a.colorCount|0),"colorType"in a&&(k=a.colorType),"colorFormat"in a&&(d=a.colorFormat));"depth"in a&&(f.depth=a.depth);"stencil"in a&&(f.stencil=a.stencil);"depthStencil"in a&&(f.depthStencil=a.depthStencil)}else g=1;if(l)if(Array.isArray(l))for(a=[],d=0;d<l.length;++d)a[d]=l[d];else a=[l];else for(a=Array(t),l={radius:g,format:d,type:k},d=0;d<t;++d)a[d]=e.createCube(l);f.color=Array(a.length);for(d=0;d<a.length;++d)t=a[d],g=g||t.width,f.color[d]={target:34069,data:a[d]};for(d=0;6>d;++d){for(t=
0;t<a.length;++t)f.color[t].target=34069+d;0<d&&(f.depth=c[0].depth,f.stencil=c[0].stencil,f.depthStencil=c[0].depthStencil);if(c[d])c[d](f);else c[d]=D(f)}return N(b,{width:g,height:g,color:a})}var c=Array(6);b(a);return N(b,{faces:c,resize:function(a){var d=a|0;if(d===b.width)return b;var e=b.color;for(a=0;a<e.length;++a)e[a].resize(d);for(a=0;6>a;++a)c[a].resize(d);b.width=b.height=d;return b},_reglType:"framebufferCube",destroy:function(){c.forEach(function(a){a.destroy()})}})},clear:function(){K(O).forEach(r)},
restore:function(){t.cur=null;t.next=null;t.dirty=!0;K(O).forEach(function(b){b.framebuffer=a.createFramebuffer();l(b)})}})}function $a(){this.w=this.z=this.y=this.x=this.state=0;this.buffer=null;this.size=0;this.normalized=!1;this.type=5126;this.divisor=this.stride=this.offset=0}function Sb(a,b,c,e,f,d,q){function n(a){if(a!==r.currentVAO){var c=b.oes_vertex_array_object;a?c.bindVertexArrayOES(a.vao):c.bindVertexArrayOES(null);r.currentVAO=a}}function u(c){if(c!==r.currentVAO){if(c)c.bindAttrs();
else{for(var d=b.angle_instanced_arrays,e=0;e<p.length;++e){var f=p[e];f.buffer?(a.enableVertexAttribArray(e),f.buffer.bind(),a.vertexAttribPointer(e,f.size,f.type,f.normalized,f.stride,f.offfset),d&&f.divisor&&d.vertexAttribDivisorANGLE(e,f.divisor)):(a.disableVertexAttribArray(e),a.vertexAttrib4f(e,f.x,f.y,f.z,f.w))}q.elements?a.bindBuffer(34963,q.elements.buffer.buffer):a.bindBuffer(34963,null)}r.currentVAO=c}}function h(){K(g).forEach(function(a){a.destroy()})}function v(){this.id=++k;this.attributes=
[];this.elements=null;this.ownsElements=!1;this.offset=this.count=0;this.instances=-1;this.primitive=4;var a=b.oes_vertex_array_object;this.vao=a?a.createVertexArrayOES():null;g[this.id]=this;this.buffers=[]}function m(){b.oes_vertex_array_object&&K(g).forEach(function(a){a.refresh()})}var C=c.maxAttributes,p=Array(C);for(c=0;c<C;++c)p[c]=new $a;var k=0,g={},r={Record:$a,scope:{},state:p,currentVAO:null,targetVAO:null,restore:b.oes_vertex_array_object?m:function(){},createVAO:function(a){function b(a){var e;
Array.isArray(a)?(e=a,c.elements&&c.ownsElements&&c.elements.destroy(),c.elements=null,c.ownsElements=!1,c.offset=0,c.count=0,c.instances=-1,c.primitive=4):(a.elements?(e=a.elements,c.ownsElements?("function"===typeof e&&"elements"===e._reglType?c.elements.destroy():c.elements(e),c.ownsElements=!1):d.getElements(a.elements)?(c.elements=a.elements,c.ownsElements=!1):(c.elements=d.create(a.elements),c.ownsElements=!0)):(c.elements=null,c.ownsElements=!1),e=a.attributes,c.offset=0,c.count=-1,c.instances=
-1,c.primitive=4,c.elements&&(c.count=c.elements._elements.vertCount,c.primitive=c.elements._elements.primType),"offset"in a&&(c.offset=a.offset|0),"count"in a&&(c.count=a.count|0),"instances"in a&&(c.instances=a.instances|0),"primitive"in a&&(c.primitive=Ka[a.primitive]));a={};var g=c.attributes;g.length=e.length;for(var l=0;l<e.length;++l){var k=e[l],h=g[l]=new $a,m=k.data||k;if(Array.isArray(m)||Q(m)||ka(m)){var n;c.buffers[l]&&(n=c.buffers[l],Q(m)&&n._buffer.byteLength>=m.byteLength?n.subdata(m):
(n.destroy(),c.buffers[l]=null));c.buffers[l]||(n=c.buffers[l]=f.create(k,34962,!1,!0));h.buffer=f.getBuffer(n);h.size=h.buffer.dimension|0;h.normalized=!1;h.type=h.buffer.dtype;h.offset=0;h.stride=0;h.divisor=0;h.state=1;a[l]=1}else f.getBuffer(k)?(h.buffer=f.getBuffer(k),h.size=h.buffer.dimension|0,h.normalized=!1,h.type=h.buffer.dtype,h.offset=0,h.stride=0,h.divisor=0,h.state=1):f.getBuffer(k.buffer)?(h.buffer=f.getBuffer(k.buffer),h.size=(+k.size||h.buffer.dimension)|0,h.normalized=!!k.normalized||
!1,h.type="type"in k?Ja[k.type]:h.buffer.dtype,h.offset=(k.offset||0)|0,h.stride=(k.stride||0)|0,h.divisor=(k.divisor||0)|0,h.state=1):"x"in k&&(h.x=+k.x||0,h.y=+k.y||0,h.z=+k.z||0,h.w=+k.w||0,h.state=2)}for(n=0;n<c.buffers.length;++n)!a[n]&&c.buffers[n]&&(c.buffers[n].destroy(),c.buffers[n]=null);c.refresh();return b}var c=new v;e.vaoCount+=1;b.destroy=function(){for(var a=0;a<c.buffers.length;++a)c.buffers[a]&&c.buffers[a].destroy();c.buffers.length=0;c.ownsElements&&(c.elements.destroy(),c.elements=
null,c.ownsElements=!1);c.destroy()};b._vao=c;b._reglType="vao";return b(a)},getVAO:function(a){return"function"===typeof a&&a._vao?a._vao:null},destroyBuffer:function(b){for(var c=0;c<p.length;++c){var d=p[c];d.buffer===b&&(a.disableVertexAttribArray(c),d.buffer=null)}},setVAO:b.oes_vertex_array_object?n:u,clear:b.oes_vertex_array_object?h:function(){}};v.prototype.bindAttrs=function(){for(var c=b.angle_instanced_arrays,e=this.attributes,f=0;f<e.length;++f){var g=e[f];g.buffer?(a.enableVertexAttribArray(f),
a.bindBuffer(34962,g.buffer.buffer),a.vertexAttribPointer(f,g.size,g.type,g.normalized,g.stride,g.offset),c&&g.divisor&&c.vertexAttribDivisorANGLE(f,g.divisor)):(a.disableVertexAttribArray(f),a.vertexAttrib4f(f,g.x,g.y,g.z,g.w))}for(c=e.length;c<C;++c)a.disableVertexAttribArray(c);(c=d.getElements(this.elements))?a.bindBuffer(34963,c.buffer.buffer):a.bindBuffer(34963,null)};v.prototype.refresh=function(){var a=b.oes_vertex_array_object;a&&(a.bindVertexArrayOES(this.vao),this.bindAttrs(),r.currentVAO=
null,a.bindVertexArrayOES(null))};v.prototype.destroy=function(){if(this.vao){var a=b.oes_vertex_array_object;this===r.currentVAO&&(r.currentVAO=null,a.bindVertexArrayOES(null));a.deleteVertexArrayOES(this.vao);this.vao=null}this.ownsElements&&(this.elements.destroy(),this.elements=null,this.ownsElements=!1);g[this.id]&&(delete g[this.id],--e.vaoCount)};return r}function Tb(a,b,c,e){function f(a,b,c,d){this.name=a;this.id=b;this.location=c;this.info=d}function d(a,b){for(var c=0;c<a.length;++c)if(a[c].id===
b.id){a[c].location=b.location;return}a.push(b)}function q(c,d,e){e=35632===c?h:v;var f=e[d];if(!f){var m=b.str(d),f=a.createShader(c);a.shaderSource(f,m);a.compileShader(f);e[d]=f}return f}function n(a,b){this.id=p++;this.fragId=a;this.vertId=b;this.program=null;this.uniforms=[];this.attributes=[];this.refCount=1;e.profile&&(this.stats={uniformsCount:0,attributesCount:0})}function u(c,g,h){var l;l=q(35632,c.fragId);var m=q(35633,c.vertId);g=c.program=a.createProgram();a.attachShader(g,l);a.attachShader(g,
m);if(h)for(l=0;l<h.length;++l)m=h[l],a.bindAttribLocation(g,m[0],m[1]);a.linkProgram(g);m=a.getProgramParameter(g,35718);e.profile&&(c.stats.uniformsCount=m);var n=c.uniforms;for(l=0;l<m;++l)if(h=a.getActiveUniform(g,l))if(1<h.size)for(var p=0;p<h.size;++p){var u=h.name.replace("[0]","["+p+"]");d(n,new f(u,b.id(u),a.getUniformLocation(g,u),h))}else d(n,new f(h.name,b.id(h.name),a.getUniformLocation(g,h.name),h));m=a.getProgramParameter(g,35721);e.profile&&(c.stats.attributesCount=m);c=c.attributes;
for(l=0;l<m;++l)(h=a.getActiveAttrib(g,l))&&d(c,new f(h.name,b.id(h.name),a.getAttribLocation(g,h.name),h))}var h={},v={},m={},C=[],p=0;e.profile&&(c.getMaxUniformsCount=function(){var a=0;C.forEach(function(b){b.stats.uniformsCount>a&&(a=b.stats.uniformsCount)});return a},c.getMaxAttributesCount=function(){var a=0;C.forEach(function(b){b.stats.attributesCount>a&&(a=b.stats.attributesCount)});return a});return{clear:function(){var b=a.deleteShader.bind(a);K(h).forEach(b);h={};K(v).forEach(b);v={};
C.forEach(function(b){a.deleteProgram(b.program)});C.length=0;m={};c.shaderCount=0},program:function(b,d,e,f){var p=m[d];p||(p=m[d]={});var q=p[b];if(q&&(q.refCount++,!f))return q;var x=new n(d,b);c.shaderCount++;u(x,e,f);q||(p[b]=x);C.push(x);return N(x,{destroy:function(){x.refCount--;if(0>=x.refCount){a.deleteProgram(x.program);var b=C.indexOf(x);C.splice(b,1);c.shaderCount--}0>=p[x.vertId].refCount&&(a.deleteShader(v[x.vertId]),delete v[x.vertId],delete m[x.fragId][x.vertId]);Object.keys(m[x.fragId]).length||
(a.deleteShader(h[x.fragId]),delete h[x.fragId],delete m[x.fragId])}})},restore:function(){h={};v={};for(var a=0;a<C.length;++a)u(C[a],null,C[a].attributes.map(function(a){return[a.location,a.name]}))},shader:q,frag:-1,vert:-1}}function Ub(a,b,c,e,f,d,q){function n(d){var f;f=null===b.next?5121:b.next.colorAttachments[0].texture._texture.type;var m=0,n=0,p=e.framebufferWidth,k=e.framebufferHeight,g=null;Q(d)?g=d:d&&(m=d.x|0,n=d.y|0,p=(d.width||e.framebufferWidth-m)|0,k=(d.height||e.framebufferHeight-
n)|0,g=d.data||null);c();d=p*k*4;g||(5121===f?g=new Uint8Array(d):5126===f&&(g=g||new Float32Array(d)));a.pixelStorei(3333,4);a.readPixels(m,n,p,k,6408,f,g);return g}function u(a){var c;b.setFBO({framebuffer:a.framebuffer},function(){c=n(a)});return c}return function(a){return a&&"framebuffer"in a?u(a):n(a)}}function Aa(a){return Array.prototype.slice.call(a)}function Ba(a){return Aa(a).join("")}function Vb(){function a(){var a=[],b=[];return N(function(){a.push.apply(a,Aa(arguments))},{def:function(){var d=
"v"+c++;b.push(d);0<arguments.length&&(a.push(d,"="),a.push.apply(a,Aa(arguments)),a.push(";"));return d},toString:function(){return Ba([0<b.length?"var "+b.join(",")+";":"",Ba(a)])}})}function b(){function b(a,e){d(a,e,"=",c.def(a,e),";")}var c=a(),d=a(),e=c.toString,f=d.toString;return N(function(){c.apply(c,Aa(arguments))},{def:c.def,entry:c,exit:d,save:b,set:function(a,d,e){b(a,d);c(a,d,"=",e,";")},toString:function(){return e()+f()}})}var c=0,e=[],f=[],d=a(),q={};return{global:d,link:function(a){for(var b=
0;b<f.length;++b)if(f[b]===a)return e[b];b="g"+c++;e.push(b);f.push(a);return b},block:a,proc:function(a,c){function d(){var a="a"+e.length;e.push(a);return a}var e=[];c=c||0;for(var f=0;f<c;++f)d();var f=b(),C=f.toString;return q[a]=N(f,{arg:d,toString:function(){return Ba(["function(",e.join(),"){",C(),"}"])}})},scope:b,cond:function(){var a=Ba(arguments),c=b(),d=b(),e=c.toString,f=d.toString;return N(c,{then:function(){c.apply(c,Aa(arguments));return this},"else":function(){d.apply(d,Aa(arguments));
return this},toString:function(){var b=f();b&&(b="else{"+b+"}");return Ba(["if(",a,"){",e(),"}",b])}})},compile:function(){var a=['"use strict";',d,"return {"];Object.keys(q).forEach(function(b){a.push('"',b,'":',q[b].toString(),",")});a.push("}");var b=Ba(a).replace(/;/g,";\n").replace(/}/g,"}\n").replace(/{/g,"{\n");return Function.apply(null,e.concat(b)).apply(null,f)}}}function Sa(a){return Array.isArray(a)||Q(a)||ka(a)}function yb(a){return a.sort(function(a,c){return"viewport"===a?-1:"viewport"===
c?1:a<c?-1:1})}function L(a,b,c,e){this.thisDep=a;this.contextDep=b;this.propDep=c;this.append=e}function va(a){return a&&!(a.thisDep||a.contextDep||a.propDep)}function x(a){return new L(!1,!1,!1,a)}function M(a,b){var c=a.type;if(0===c)return c=a.data.length,new L(!0,1<=c,2<=c,b);if(4===c)return c=a.data,new L(c.thisDep,c.contextDep,c.propDep,b);if(5===c)return new L(!1,!1,!1,b);if(6===c){for(var e=c=!1,f=!1,d=0;d<a.data.length;++d){var q=a.data[d];1===q.type?f=!0:2===q.type?e=!0:3===q.type?c=!0:
0===q.type?(c=!0,q=q.data,1<=q&&(e=!0),2<=q&&(f=!0)):4===q.type&&(c=c||q.data.thisDep,e=e||q.data.contextDep,f=f||q.data.propDep)}return new L(c,e,f,b)}return new L(3===c,2===c,1===c,b)}function Wb(a,b,c,e,f,d,q,n,u,h,v,m,C,p,k){function g(a){return a.replace(".","_")}function r(a,b,c){var d=g(a);Na.push(a);Da[d]=ra[d]=!!c;sa[d]=b}function l(a,b,c){var d=g(a);Na.push(a);Array.isArray(c)?(ra[d]=c.slice(),Da[d]=c.slice()):ra[d]=Da[d]=c;ta[d]=b}function D(){var a=Vb(),c=a.link,d=a.global;a.id=qa++;a.batchId=
"0";var e=c(tb),f=a.shared={props:"a0"};Object.keys(tb).forEach(function(a){f[a]=d.def(e,".",a)});var g=a.next={},A=a.current={};Object.keys(ta).forEach(function(a){Array.isArray(ra[a])&&(g[a]=d.def(f.next,".",a),A[a]=d.def(f.current,".",a))});var F=a.constants={};Object.keys(Pa).forEach(function(a){F[a]=d.def(JSON.stringify(Pa[a]))});a.invoke=function(b,d){switch(d.type){case 0:var e=["this",f.context,f.props,a.batchId];return b.def(c(d.data),".call(",e.slice(0,Math.max(d.data.length+1,4)),")");
case 1:return b.def(f.props,d.data);case 2:return b.def(f.context,d.data);case 3:return b.def("this",d.data);case 4:return d.data.append(a,b),d.data.ref;case 5:return d.data.toString();case 6:return d.data.map(function(c){return a.invoke(b,c)})}};a.attribCache={};var ca={};a.scopeAttrib=function(a){a=b.id(a);if(a in ca)return ca[a];var d=h.scope[a];d||(d=h.scope[a]=new fa);return ca[a]=c(d)};return a}function t(a){var b=a["static"];a=a.dynamic;var c;if("profile"in b){var d=!!b.profile;c=x(function(a,
b){return d});c.enable=d}else if("profile"in a){var e=a.profile;c=M(e,function(a,b){return a.invoke(b,e)})}return c}function I(a,b){var c=a["static"],d=a.dynamic;if("framebuffer"in c){var e=c.framebuffer;return e?(e=n.getFramebuffer(e),x(function(a,b){var c=a.link(e),d=a.shared;b.set(d.framebuffer,".next",c);d=d.context;b.set(d,".framebufferWidth",c+".width");b.set(d,".framebufferHeight",c+".height");return c})):x(function(a,b){var c=a.shared;b.set(c.framebuffer,".next","null");c=c.context;b.set(c,
".framebufferWidth",c+".drawingBufferWidth");b.set(c,".framebufferHeight",c+".drawingBufferHeight");return"null"})}if("framebuffer"in d){var f=d.framebuffer;return M(f,function(a,b){var c=a.invoke(b,f),d=a.shared,e=d.framebuffer,c=b.def(e,".getFramebuffer(",c,")");b.set(e,".next",c);d=d.context;b.set(d,".framebufferWidth",c+"?"+c+".width:"+d+".drawingBufferWidth");b.set(d,".framebufferHeight",c+"?"+c+".height:"+d+".drawingBufferHeight");return c})}return null}function E(a,b,c){function d(a){if(a in
e){var c=e[a];a=!0;var w=c.x|0,ba=c.y|0,g,A;"width"in c?g=c.width|0:a=!1;"height"in c?A=c.height|0:a=!1;return new L(!a&&b&&b.thisDep,!a&&b&&b.contextDep,!a&&b&&b.propDep,function(a,b){var d=a.shared.context,e=g;"width"in c||(e=b.def(d,".","framebufferWidth","-",w));var f=A;"height"in c||(f=b.def(d,".","framebufferHeight","-",ba));return[w,ba,e,f]})}if(a in f){var da=f[a];a=M(da,function(a,b){var c=a.invoke(b,da),d=a.shared.context,e=b.def(c,".x|0"),f=b.def(c,".y|0"),w=b.def('"width" in ',c,"?",c,
".width|0:","(",d,".","framebufferWidth","-",e,")"),c=b.def('"height" in ',c,"?",c,".height|0:","(",d,".","framebufferHeight","-",f,")");return[e,f,w,c]});b&&(a.thisDep=a.thisDep||b.thisDep,a.contextDep=a.contextDep||b.contextDep,a.propDep=a.propDep||b.propDep);return a}return b?new L(b.thisDep,b.contextDep,b.propDep,function(a,b){var c=a.shared.context;return[0,0,b.def(c,".","framebufferWidth"),b.def(c,".","framebufferHeight")]}):null}var e=a["static"],f=a.dynamic;if(a=d("viewport")){var g=a;a=new L(a.thisDep,
a.contextDep,a.propDep,function(a,b){var c=g.append(a,b),d=a.shared.context;b.set(d,".viewportWidth",c[2]);b.set(d,".viewportHeight",c[3]);return c})}return{viewport:a,scissor_box:d("scissor.box")}}function Q(a,b){var c=a["static"];if("string"===typeof c.frag&&"string"===typeof c.vert){if(0<Object.keys(b.dynamic).length)return null;var c=b["static"],d=Object.keys(c);if(0<d.length&&"number"===typeof c[d[0]]){for(var e=[],f=0;f<d.length;++f)e.push([c[d[f]]|0,d[f]]);return e}}return null}function J(a,
c,d){function e(a){if(a in f){var c=b.id(f[a]);a=x(function(){return c});a.id=c;return a}if(a in g){var d=g[a];return M(d,function(a,b){var c=a.invoke(b,d);return b.def(a.shared.strings,".id(",c,")")})}return null}var f=a["static"],g=a.dynamic,A=e("frag"),F=e("vert"),ca=null;va(A)&&va(F)?(ca=v.program(F.id,A.id,null,d),a=x(function(a,b){return a.link(ca)})):a=new L(A&&A.thisDep||F&&F.thisDep,A&&A.contextDep||F&&F.contextDep,A&&A.propDep||F&&F.propDep,function(a,b){var c=a.shared.shader,d;d=A?A.append(a,
b):b.def(c,".","frag");var e;e=F?F.append(a,b):b.def(c,".","vert");return b.def(c+".program("+e+","+d+")")});return{frag:A,vert:F,progVar:a,program:ca}}function O(a,b){function c(a,b){if(a in e){var d=e[a]|0;b?g.offset=d:g.instances=d;return x(function(a,c){b&&(a.OFFSET=d);return d})}if(a in f){var w=f[a];return M(w,function(a,c){var d=a.invoke(c,w);b&&(a.OFFSET=d);return d})}if(b){if(ca)return x(function(a,b){return a.OFFSET=0});if(A)return new L(F.thisDep,F.contextDep,F.propDep,function(a,b){return b.def(a.shared.vao+
".currentVAO?"+a.shared.vao+".currentVAO.offset:0")})}else if(A)return new L(F.thisDep,F.contextDep,F.propDep,function(a,b){return b.def(a.shared.vao+".currentVAO?"+a.shared.vao+".currentVAO.instances:-1")});return null}var e=a["static"],f=a.dynamic,g={},A=!1,F=function(){if("vao"in e){var a=e.vao;null!==a&&null===h.getVAO(a)&&(a=h.createVAO(a));A=!0;g.vao=a;return x(function(b){var c=h.getVAO(a);return c?b.link(c):"null"})}if("vao"in f){A=!0;var b=f.vao;return M(b,function(a,c){var d=a.invoke(c,
b);return c.def(a.shared.vao+".getVAO("+d+")")})}return null}(),ca=!1,la=function(){if("elements"in e){var a=e.elements;g.elements=a;if(Sa(a)){var b=g.elements=d.create(a,!0),a=d.getElements(b);ca=!0}else a&&(a=d.getElements(a),ca=!0);b=x(function(b,c){if(a){var d=b.link(a);return b.ELEMENTS=d}return b.ELEMENTS=null});b.value=a;return b}if("elements"in f){ca=!0;var c=f.elements;return M(c,function(a,b){var d=a.shared,e=d.isBufferArgs,d=d.elements,f=a.invoke(b,c),w=b.def("null"),e=b.def(e,"(",f,")"),
f=a.cond(e).then(w,"=",d,".createStream(",f,");")["else"](w,"=",d,".getElements(",f,");");b.entry(f);b.exit(a.cond(e).then(d,".destroyStream(",w,");"));return a.ELEMENTS=w})}return A?new L(F.thisDep,F.contextDep,F.propDep,function(a,b){return b.def(a.shared.vao+".currentVAO?"+a.shared.elements+".getElements("+a.shared.vao+".currentVAO.elements):null")}):null}(),ba=c("offset",!0),l=function(){if("primitive"in e){var a=e.primitive;g.primitive=a;return x(function(b,c){return Ka[a]})}if("primitive"in
f){var b=f.primitive;return M(b,function(a,c){var d=a.constants.primTypes,e=a.invoke(c,b);return c.def(d,"[",e,"]")})}return ca?va(la)?la.value?x(function(a,b){return b.def(a.ELEMENTS,".primType")}):x(function(){return 4}):new L(la.thisDep,la.contextDep,la.propDep,function(a,b){var c=a.ELEMENTS;return b.def(c,"?",c,".primType:",4)}):A?new L(F.thisDep,F.contextDep,F.propDep,function(a,b){return b.def(a.shared.vao+".currentVAO?"+a.shared.vao+".currentVAO.primitive:4")}):null}(),k=function(){if("count"in
e){var a=e.count|0;g.count=a;return x(function(){return a})}if("count"in f){var b=f.count;return M(b,function(a,c){return a.invoke(c,b)})}return ca?va(la)?la?ba?new L(ba.thisDep,ba.contextDep,ba.propDep,function(a,b){return b.def(a.ELEMENTS,".vertCount-",a.OFFSET)}):x(function(a,b){return b.def(a.ELEMENTS,".vertCount")}):x(function(){return-1}):new L(la.thisDep||ba.thisDep,la.contextDep||ba.contextDep,la.propDep||ba.propDep,function(a,b){var c=a.ELEMENTS;return a.OFFSET?b.def(c,"?",c,".vertCount-",
a.OFFSET,":-1"):b.def(c,"?",c,".vertCount:-1")}):A?new L(F.thisDep,F.contextDep,F.propDep,function(a,b){return b.def(a.shared.vao,".currentVAO?",a.shared.vao,".currentVAO.count:-1")}):null}(),m=c("instances",!1);return{elements:la,primitive:l,count:k,instances:m,offset:ba,vao:F,vaoActive:A,elementsActive:ca,"static":g}}function y(a,b){var c=a["static"],d=a.dynamic,e={};Na.forEach(function(a){function b(w,g){if(a in c){var B=w(c[a]);e[f]=x(function(){return B})}else if(a in d){var l=d[a];e[f]=M(l,
function(a,b){return g(a,b,a.invoke(b,l))})}}var f=g(a);switch(a){case "cull.enable":case "blend.enable":case "dither":case "stencil.enable":case "depth.enable":case "scissor.enable":case "polygonOffset.enable":case "sample.alpha":case "sample.enable":case "depth.mask":return b(function(a){return a},function(a,b,c){return c});case "depth.func":return b(function(a){return ab[a]},function(a,b,c){return b.def(a.constants.compareFuncs,"[",c,"]")});case "depth.range":return b(function(a){return a},function(a,
b,c){a=b.def("+",c,"[0]");b=b.def("+",c,"[1]");return[a,b]});case "blend.func":return b(function(a){return[Fa["srcRGB"in a?a.srcRGB:a.src],Fa["dstRGB"in a?a.dstRGB:a.dst],Fa["srcAlpha"in a?a.srcAlpha:a.src],Fa["dstAlpha"in a?a.dstAlpha:a.dst]]},function(a,b,c){function d(a,e){return b.def('"',a,e,'" in ',c,"?",c,".",a,e,":",c,".",a)}a=a.constants.blendFuncs;var e=d("src","RGB"),f=d("dst","RGB"),e=b.def(a,"[",e,"]"),w=b.def(a,"[",d("src","Alpha"),"]"),f=b.def(a,"[",f,"]");a=b.def(a,"[",d("dst","Alpha"),
"]");return[e,f,w,a]});case "blend.equation":return b(function(a){if("string"===typeof a)return[ga[a],ga[a]];if("obje