gas.gl
Version:
HighPerformance Geojson Data Render with WebGL
1 lines • 1.79 MB
JavaScript
!function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e(require("react"),require("leaflet"));else if("function"==typeof define&&define.amd)define(["react","leaflet"],e);else{var n="object"==typeof exports?e(require("react"),require("leaflet")):e(t.React,t.L);for(var r in n)("object"==typeof exports?exports:t)[r]=n[r]}}(window,(function(t,e){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)n.d(r,i,function(e){return t[e]}.bind(null,i));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=304)}([function(t,e,n){"use strict";function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}n.d(e,"a",(function(){return r}))},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}n.d(e,"a",(function(){return r}))},function(t,e,n){"use strict";function r(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function i(t,e,n){return e&&r(t.prototype,e),n&&r(t,n),t}n.d(e,"a",(function(){return i}))},function(t,e,n){"use strict";function r(t,e){if(!t)throw new Error(e||"luma.gl: assertion failed.")}n.d(e,"a",(function(){return r}))},function(t,e,n){"use strict";n.d(e,"c",(function(){return r.a})),n.d(e,"e",(function(){return i.a})),n.d(e,"i",(function(){return s})),n.d(e,"f",(function(){return u})),n.d(e,"d",(function(){return c})),n.d(e,"g",(function(){return l.a})),n.d(e,"b",(function(){return h})),n.d(e,"a",(function(){return o.a})),n.d(e,"h",(function(){return d.a}));var r=n(67),i=n(114);var o=n(3),a={};function s(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"id";a[t]=a[t]||1;var e=a[t]++;return"".concat(t,"-").concat(e)}function u(t){return Object(o.a)("number"==typeof t,"Input must be a number"),t&&0==(t&t-1)}function c(t){var e=!0;for(var n in t){e=!1;break}return e}var l=n(36);function f(t,e){for(var n=e.maxElts,r=void 0===n?16:n,i=e.size,o=void 0===i?1:i,a="[",s=0;s<t.length&&s<r;++s)s>0&&(a+=",".concat(s%o==0?" ":"")),a+=h(t[s],e);var u=t.length>r?"...":"]";return"".concat(a).concat(u)}function h(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=1e-16,r=e.isInteger,i=void 0!==r&&r;if(Array.isArray(t)||ArrayBuffer.isView(t))return f(t,e);if(!Number.isFinite(t))return String(t);if(Math.abs(t)<n)return i?"0":"0.";if(i)return t.toFixed(0);if(Math.abs(t)>100&&Math.abs(t)<1e4)return t.toFixed(0);var o=t.toPrecision(2),a=o.indexOf(".0");return a===o.length-2?o.slice(0,-1):o}var d=n(115)},function(t,e,n){"use strict";n.r(e),n.d(e,"isWebGL",(function(){return r.c})),n.d(e,"isWebGL2",(function(){return r.d})),n.d(e,"cloneTextureFrom",(function(){return i.a})),n.d(e,"getKeyValue",(function(){return o.b})),n.d(e,"getKey",(function(){return o.a})),n.d(e,"createGLContext",(function(){return V})),n.d(e,"destroyGLContext",(function(){return G})),n.d(e,"resizeGLContext",(function(){return U})),n.d(e,"pollGLContext",(function(){return W})),n.d(e,"setContextDefaults",(function(){return z})),n.d(e,"trackContextState",(function(){return v.a})),n.d(e,"resetParameters",(function(){return X.d})),n.d(e,"getParameter",(function(){return X.b})),n.d(e,"getParameters",(function(){return X.c})),n.d(e,"setParameter",(function(){return X.e})),n.d(e,"setParameters",(function(){return X.f})),n.d(e,"withParameters",(function(){return X.g})),n.d(e,"getModifiedParameters",(function(){return X.a})),n.d(e,"getContextInfo",(function(){return T})),n.d(e,"getGLContextInfo",(function(){return A})),n.d(e,"getContextLimits",(function(){return I})),n.d(e,"glGetDebugInfo",(function(){return N})),n.d(e,"FEATURES",(function(){return Y})),n.d(e,"hasFeature",(function(){return Q})),n.d(e,"hasFeatures",(function(){return $})),n.d(e,"getFeatures",(function(){return tt})),n.d(e,"canCompileGLGSExtension",(function(){return K})),n.d(e,"Buffer",(function(){return et.a})),n.d(e,"Shader",(function(){return at})),n.d(e,"VertexShader",(function(){return st})),n.d(e,"FragmentShader",(function(){return ut})),n.d(e,"Program",(function(){return Yt})),n.d(e,"Framebuffer",(function(){return Et})),n.d(e,"Renderbuffer",(function(){return mt})),n.d(e,"Texture2D",(function(){return pt.a})),n.d(e,"TextureCube",(function(){return Zt.a})),n.d(e,"clear",(function(){return bt})),n.d(e,"clearBuffer",(function(){return _t})),n.d(e,"FenceSync",(function(){return Kt})),n.d(e,"Query",(function(){return Qt})),n.d(e,"Sampler",(function(){return Ot})),n.d(e,"Texture3D",(function(){return $t.a})),n.d(e,"Texture2DArray",(function(){return te})),n.d(e,"TransformFeedback",(function(){return ee})),n.d(e,"VertexArrayObject",(function(){return ce})),n.d(e,"VertexArray",(function(){return le})),n.d(e,"UniformBufferLayout",(function(){return fe})),n.d(e,"_Accessor",(function(){return Gt.a})),n.d(e,"_clearBuffer",(function(){return _t})),n.d(e,"Object3D",(function(){return pe})),n.d(e,"Group",(function(){return ve})),n.d(e,"Model",(function(){return jn})),n.d(e,"AnimationLoop",(function(){return Bn})),n.d(e,"pickModels",(function(){return zn})),n.d(e,"encodePickingColor",(function(){return Gn})),n.d(e,"decodePickingColor",(function(){return Un})),n.d(e,"getNullPickingColor",(function(){return Wn})),n.d(e,"Transform",(function(){return Yn})),n.d(e,"_Attribute",(function(){return ye})),n.d(e,"_ShaderCache",(function(){return Zn})),n.d(e,"_AnimationLoopProxy",(function(){return Kn})),n.d(e,"_MultiPassRenderer",(function(){return tr})),n.d(e,"_RenderState",(function(){return $n})),n.d(e,"_Pass",(function(){return Jn})),n.d(e,"_CompositePass",(function(){return Qn})),n.d(e,"_ClearPass",(function(){return er})),n.d(e,"_RenderPass",(function(){return nr})),n.d(e,"_CopyPass",(function(){return Ir})),n.d(e,"_TexturePass",(function(){return Tr})),n.d(e,"_PickingPass",(function(){return Nr})),n.d(e,"_ShaderModulePass",(function(){return Br})),n.d(e,"_Canvas",(function(){return qr})),n.d(e,"Geometry",(function(){return _e})),n.d(e,"ConeGeometry",(function(){return or})),n.d(e,"CubeGeometry",(function(){return ar})),n.d(e,"CylinderGeometry",(function(){return hr})),n.d(e,"IcoSphereGeometry",(function(){return gr})),n.d(e,"PlaneGeometry",(function(){return vr})),n.d(e,"SphereGeometry",(function(){return yr})),n.d(e,"TruncatedConeGeometry",(function(){return ir})),n.d(e,"Cone",(function(){return br})),n.d(e,"Cube",(function(){return _r})),n.d(e,"Cylinder",(function(){return xr})),n.d(e,"IcoSphere",(function(){return wr})),n.d(e,"Plane",(function(){return Er})),n.d(e,"Sphere",(function(){return Sr})),n.d(e,"TruncatedCone",(function(){return Or})),n.d(e,"ClipSpace",(function(){return Cr})),n.d(e,"setPathPrefix",(function(){return Jr})),n.d(e,"loadFile",(function(){return Qr})),n.d(e,"loadImage",(function(){return $r})),n.d(e,"loadTexture",(function(){return ei})),n.d(e,"loadFiles",(function(){return ni})),n.d(e,"loadImages",(function(){return ri})),n.d(e,"loadTextures",(function(){return ii})),n.d(e,"loadProgram",(function(){return oi})),n.d(e,"loadModel",(function(){return ai})),n.d(e,"parseModel",(function(){return si})),n.d(e,"setDefaultShaderModules",(function(){return Ce})),n.d(e,"registerShaderModules",(function(){return Me})),n.d(e,"assembleShaders",(function(){return Ye})),n.d(e,"normalizeShaderModule",(function(){return Fr})),n.d(e,"fp32",(function(){return Qe})),n.d(e,"fp64",(function(){return rn})),n.d(e,"project",(function(){return un})),n.d(e,"lighting",(function(){return cn})),n.d(e,"dirlight",(function(){return fn})),n.d(e,"picking",(function(){return dn})),n.d(e,"diffuse",(function(){return gn})),n.d(e,"pbr",(function(){return li})),n.d(e,"assert",(function(){return j.a})),n.d(e,"log",(function(){return fi.a})),n.d(e,"global",(function(){return m.b})),n.d(e,"window",(function(){return m.d})),n.d(e,"document",(function(){return m.a})),n.d(e,"self",(function(){return m.c})),n.d(e,"isBrowser",(function(){return hi.a})),n.d(e,"isOldIE",(function(){return di.a})),n.d(e,"stubRemovedMethods",(function(){return pi.a})),n.d(e,"makeDebugContext",(function(){return _})),n.d(e,"ClipSpaceQuad",(function(){return Cr})),n.d(e,"glGet",(function(){return o.c})),n.d(e,"glKey",(function(){return o.d})),n.d(e,"glKeyType",(function(){return o.e}));var r=n(65),i=n(113),o=n(29),a=n(6),s=n(28);function u(t){var e=t.width,n=t.height,r=t.opts,i=t.onError,o=r.webgl1;if(r.webgl2&&!o)return i("headless-gl does not support WebGL2");if(!s.d)return i("Failed to create WebGL context in Node.js, headless gl not available");var a=Object(s.d)(e,n,r);return a||i("Failed to create WebGL context in Node.js, headless gl returned null")}var c,l=n(4),f=l.c&&"undefined"!=typeof document,h=f&&"complete"===document.readyState;function d(){return c||(c=f?new Promise((function(t,e){if(f&&"complete"===document.readyState)return h=!0,void t(document);window.onload=function(){h=!0,t(document)}})):Promise.resolve({})),c}function p(t){var e,n=t.canvas,r=t.width,i=t.height,o=t.onError,a=void 0===o?function(){}:o;return"string"==typeof n?(h||a("createGLContext called on canvas '".concat(n,"' before page was loaded")),e=document.getElementById(n)):e=n||function(t){var e=t.width,n=void 0===e?800:e,r=t.height,i=void 0===r?600:r,o=t.id,a=void 0===o?"gl-canvas":o,s=t.insert,u=void 0===s||s,c=document.createElement("canvas");if(c.id=a,c.style.width=Number.isFinite(n)?"".concat(n,"px"):"100%",c.style.height=Number.isFinite(i)?"".concat(i,"px"):"100%",u){var l=document.body;l.insertBefore(c,l.firstChild)}return c}({id:"lumagl-canvas",width:r,height:i,onError:a}),e}function g(t){var e=t.canvas,n=t.opts,r=void 0===n?{}:n,i=t.onError,o=void 0===i?function(t){return null}:i;function a(t){o("WebGL context: ".concat(t.statusMessage||"Unknown error"))}e.addEventListener("webglcontextcreationerror",a,!1);var s=r.webgl1,u=void 0===s||s,c=r.webgl2,l=void 0===c||c,f=null;return l&&(f=(f=f||e.getContext("webgl2",r))||e.getContext("experimental-webgl2",r)),u&&(f=(f=f||e.getContext("webgl",r))||e.getContext("experimental-webgl",r)),e.removeEventListener("webglcontextcreationerror",a,!1),f||o("Failed to create ".concat(l&&!u?"WebGL2":"WebGL"," context"))}var v=n(68),y=n(1),m=n(21);function b(t){return t.luma=t.luma||{},t.luma}function _(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.debug,r=void 0===n||n;return null===t?null:r?w(t):x(t)}function x(t){if(null===t)return null;var e=b(t);return e.realContext?e.realContext:t}function w(t){if(null===t)return null;if(!m.b.WebGLDebug)return l.g.warn('WebGL debug mode not activated. import "luma.gl/debug" to enable.')(),t;var e=b(t);if(e.realContext)return t;if(e.debugContext)return e.debugContext;var n=m.b.WebGLDebug.makeDebugContext(t,S,O);return Object.assign(function t(){Object(y.a)(this,t)}.prototype,n),e.debugContext=n,n.debug=!0,n.gl=t,l.g.info("debug context actived."),n}function E(t,e){var n=m.b.WebGLDebug.glFunctionArgsToString(t,e);return n="".concat(n.slice(0,100)).concat(n.length>100?"...":""),"gl.".concat(t,"(").concat(n,")")}function S(t,e,n){var r=m.b.WebGLDebug.glEnumToString(t),i=m.b.WebGLDebug.glFunctionArgsToString(e,n),o="".concat(r," in gl.").concat(e,"(").concat(i,")");if(l.g.throw)throw new Error(o);l.g.error(o)()}function O(t,e){var n;if(l.g.priority>=4&&(n=E(t,e),l.g.log(4,n)()),l.g.break){n=n||E(t,e);l.g.break&&l.g.break.every((function(t){return-1!==n.indexOf(t)}))}var r=!0,i=!1,o=void 0;try{for(var a,s=e[Symbol.iterator]();!(r=(a=s.next()).done);r=!0){if(void 0===a.value){if(n=n||E(t,e),l.g.throw)throw new Error("Undefined argument: ".concat(n));l.g.error("Undefined argument: ".concat(n))}}}catch(t){i=!0,o=t}finally{try{r||null==s.return||s.return()}finally{if(i)throw o}}}var P,C=n(0),M=(P={},Object(C.a)(P,33902,{gl1:new Float32Array([1,1])}),Object(C.a)(P,33901,{gl1:new Float32Array([1,1])}),Object(C.a)(P,3379,{gl1:64,gl2:2048}),Object(C.a)(P,34076,{gl1:16}),Object(C.a)(P,34930,{gl1:8}),Object(C.a)(P,35661,{gl1:8}),Object(C.a)(P,35660,{gl1:0}),Object(C.a)(P,34024,{gl1:1}),Object(C.a)(P,36348,{gl1:8}),Object(C.a)(P,34921,{gl1:8}),Object(C.a)(P,36347,{gl1:128}),Object(C.a)(P,36349,{gl1:16}),Object(C.a)(P,3386,{gl1:new Int32Array([0,0])}),Object(C.a)(P,32883,{gl1:0,gl2:256}),Object(C.a)(P,35071,{gl1:0,gl2:256}),Object(C.a)(P,37447,{gl1:0,gl2:0}),Object(C.a)(P,36063,{gl1:0,gl2:4}),Object(C.a)(P,35379,{gl1:0,gl2:0}),Object(C.a)(P,35374,{gl1:0,gl2:0}),Object(C.a)(P,35377,{gl1:0,gl2:0}),Object(C.a)(P,34852,{gl1:0,gl2:4}),Object(C.a)(P,36203,{gl1:0,gl2:0}),Object(C.a)(P,33001,{gl1:0,gl2:0}),Object(C.a)(P,33e3,{gl1:0,gl2:0}),Object(C.a)(P,37157,{gl1:0,gl2:0}),Object(C.a)(P,35373,{gl1:0,gl2:0}),Object(C.a)(P,35657,{gl1:0,gl2:0}),Object(C.a)(P,36183,{gl1:0,gl2:0}),Object(C.a)(P,37137,{gl1:0,gl2:0}),Object(C.a)(P,34045,{gl1:0,gl2:0}),Object(C.a)(P,35978,{gl1:0,gl2:0}),Object(C.a)(P,35979,{gl1:0,gl2:0}),Object(C.a)(P,35968,{gl1:0,gl2:0}),Object(C.a)(P,35376,{gl1:0,gl2:0}),Object(C.a)(P,35375,{gl1:0,gl2:0}),Object(C.a)(P,35659,{gl1:0,gl2:0}),Object(C.a)(P,37154,{gl1:0,gl2:0}),Object(C.a)(P,35371,{gl1:0,gl2:0}),Object(C.a)(P,35658,{gl1:0,gl2:0}),Object(C.a)(P,35076,{gl1:0,gl2:-8,negative:!0}),Object(C.a)(P,35077,{gl1:0,gl2:7}),Object(C.a)(P,35380,{gl1:0,gl2:0}),P);function I(t){if(t.luma=t.luma||{},!t.luma.limits){t.luma.limits={},t.luma.webgl1MinLimits={},t.luma.webgl2MinLimits={};var e=Object(a.n)(t);for(var n in M){var r=M[n],i=r.gl1,o="gl2"in r?r.gl2:r.gl1,s=e?o:i,u="gl2"in r&&!e||"extension"in r&&!t.getExtension(r.extension)?s:t.getParameter(n);t.luma.limits[n]=u,t.luma.webgl1MinLimits[n]=i,t.luma.webgl2MinLimits[n]=o}}return t.luma.limits}function A(t){if(t.luma=t.luma||{},!t.luma.info){var e,n=t.getExtension("WEBGL_debug_renderer_info");t.luma.info=(e={},Object(C.a)(e,7936,t.getParameter(7936)),Object(C.a)(e,7937,t.getParameter(7937)),Object(C.a)(e,37445,t.getParameter(n&&n.UNMASKED_VENDOR_WEBGL||7936)),Object(C.a)(e,37446,t.getParameter(n&&n.UNMASKED_RENDERER_WEBGL||7937)),Object(C.a)(e,7938,t.getParameter(7938)),Object(C.a)(e,35724,t.getParameter(35724)),e)}return t.luma.info}function T(t){var e=I(t),n=A(t);return{vendor:n[37445]||n[7936],renderer:n[37446]||n[7937],version:n[7938],shadingLanguageVersion:n[35724],info:n,limits:e,webgl1MinLimits:t.luma.webgl1MinLimits,webgl2MinLimits:t.luma.webgl2MinLimits}}function N(t){return function(t){var e=t.getParameter(7936),n=t.getParameter(7937),r=t.getExtension("WEBGL_debug_renderer_info");return{vendor:r&&t.getParameter(r.UNMASKED_VENDOR_WEBGL||7936)||e,renderer:r&&t.getParameter(r.UNMASKED_RENDERER_WEBGL||7937)||n,vendorMasked:e,rendererMasked:n,version:t.getParameter(7938),shadingLanguageVersion:t.getParameter(35724)}}(t)}var L=n(2),R=function(t){return t},k=new(function(){function t(){Object(y.a)(this,t),this.pendingQueries=new Set,this.invalidQueryType=null,this.invalidErrorMessage="",this.checkInvalid=function(){return!1}}return Object(L.a)(t,[{key:"poll",value:function(t){this.cancelInvalidQueries(t);var e=!0,n=!1,r=void 0;try{for(var i,o=this.pendingQueries.values()[Symbol.iterator]();!(e=(i=o.next()).done);e=!0){var a=i.value;if(a.isResultAvailable()){var s=a.getResult();this.resolveQuery(a,s)}}}catch(t){n=!0,r=t}finally{try{e||null==o.return||o.return()}finally{if(n)throw r}}}},{key:"setInvalidator",value:function(t){var e=t.queryType,n=t.errorMessage,r=t.checkInvalid;this.invalidQueryType=e,this.invalidErrorMessage=n,this.checkInvalid=r}},{key:"beginQuery",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:R,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:R;this.cancelInvalidQueries(t.gl),this.cancelQuery(t);var r={};return t.promise=new Promise((function(t,e){r.resolve=t,r.reject=e})),Object.assign(t.promise,r),this.pendingQueries.add(t),t.promise.then(e).catch(n)}},{key:"resolveQuery",value:function(t,e){this.pendingQueries.delete(t),t.promise.resolve(e)}},{key:"rejectQuery",value:function(t,e){this.pendingQueries.delete(t),t.promise&&t.promise.reject(new Error(e))}},{key:"deleteQuery",value:function(t){return this.rejectQuery(t,"Query was deleted before result was available")}},{key:"cancelQuery",value:function(t){return this.rejectQuery(t,"Query was canceled before result was available")}},{key:"invalidateQuery",value:function(t){t instanceof this.invalidQueryType&&this.rejectQuery(t,this.invalidErrorMessage)}},{key:"cancelInvalidQueries",value:function(t){if(this.checkInvalid(t)){var e=!0,n=!1,r=void 0;try{for(var i,o=this.pendingQueries.values()[Symbol.iterator]();!(e=(i=o.next()).done);e=!0){var a=i.value;this.invalidateQuery(a)}}catch(t){n=!0,r=t}finally{try{e||null==o.return||o.return()}finally{if(n)throw r}}}}}]),t}()),j=n(3);function F(t){return Boolean(t&&(t instanceof a.c||34962===t.ARRAY_BUFFER))}function D(t){return Boolean(t&&(t instanceof a.a||32874===t.TEXTURE_BINDING_3D))}var B={webgl2:!0,webgl1:!0,throwOnFailure:!0,manageState:!0,canvas:null,debug:!1,width:800,height:600};function z(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};Object.assign(B,{width:1,height:1},t)}function V(){var t,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e=Object.assign({},B,e),r=n.canvas,i=n.width,o=n.height,a=n.throwOnError,s=n.manageState,c=n.debug;function f(t){if(a)throw new Error(t);return null}if(l.c){var h=p({canvas:r,width:i,height:o,onError:f});t=g({canvas:h,opts:e})}else t=u({width:i,height:o,opts:e,onError:f});return t?(s&&Object(v.a)(t,{copyState:!1,log:function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return l.g.log.apply(l.g,[1].concat(e))()}}),l.c&&c&&(t=_(t,{debug:c}),l.g.priority=Math.max(l.g.priority,1)),q(t),t):null}function G(t){var e=t.getExtension("STACKGL_destroy_context");e&&e.destroy()}function U(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(t.canvas){var n=e.useDevicePixels&&window.devicePixelRatio||1,r="width"in e?e.width:t.canvas.clientWidth,i="height"in e?e.height:t.canvas.clientHeight;return t.canvas.width=r*n,void(t.canvas.height=i*n)}var o=t.getExtension("STACKGL_resize_drawingbuffer");o&&"width"in e&&"height"in e&&o.resize(e.width,e.height)}function W(t){k.poll(t)}function q(t){var e=D(t)?"WebGL2":"WebGL1",n=N(t),r=n?"(".concat(n.vendor,",").concat(n.renderer,")"):"",i=t.debug?" debug":"";l.g.once(0,"".concat(e).concat(i," context ").concat(r))()}var X=n(24),H={VERTEX_ARRAY_OBJECT:["OES_vertex_array_object",!0],TIMER_QUERY:["EXT_disjoint_timer_query","EXT_disjoint_timer_query_webgl2"],INSTANCED_RENDERING:["ANGLE_instanced_arrays",!0],MULTIPLE_RENDER_TARGETS:["WEBGL_draw_buffers",!0],ELEMENT_INDEX_UINT32:["OES_element_index_uint",!0],BLEND_EQUATION_MINMAX:["EXT_blend_minmax",!0],COLOR_ENCODING_SRGB:["EXT_sRGB",!0],TEXTURE_DEPTH:["WEBGL_depth_texture",!0],TEXTURE_FLOAT:["OES_texture_float",!0],TEXTURE_HALF_FLOAT:["OES_texture_half_float",!0],TEXTURE_FILTER_LINEAR_FLOAT:["OES_texture_float_linear"],TEXTURE_FILTER_LINEAR_HALF_FLOAT:["OES_texture_half_float_linear"],TEXTURE_FILTER_ANISOTROPIC:["EXT_texture_filter_anisotropic"],COLOR_ATTACHMENT_RGBA32F:["WEBGL_color_buffer_float","EXT_color_buffer_float"],COLOR_ATTACHMENT_FLOAT:[!1,"EXT_color_buffer_float"],COLOR_ATTACHMENT_HALF_FLOAT:[!1,"EXT_color_buffer_half_float"],GLSL_FRAG_DATA:["WEBGL_draw_buffers",!0],GLSL_FRAG_DEPTH:["EXT_frag_depth",!0],GLSL_DERIVATIVES:["OES_standard_derivatives",!0],GLSL_TEXTURE_LOD:["EXT_shader_texture_lod",!0]},Y={};Object.keys(H).forEach((function(t){Y[t]=t}));var Z={};function K(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=H[e];if(Object(j.a)(r,e),!Object(l.e)(n))return!0;if(e in Z)return Z[e];var i=r[0],o="#extension GL_".concat(i," : enable\nvoid main(void) {}"),a=t.createShader(35633);t.shaderSource(a,o),t.compileShader(a);var s=t.getShaderParameter(a,35713);return t.deleteShader(a),Z[e]=s,s}function J(t,e){var n=H[e];Object(j.a)(n,e);var r=Object(a.n)(t)&&n[1]||n[0],i="string"==typeof r?Boolean(t.getExtension(r)):r;return Object(j.a)(!1===i||!0===i),i}function Q(t,e){return $(t,e)}function $(t,e){return(e=Array.isArray(e)?e:[e]).every((function(e){return J(t,e)}))}function tt(t){if(t.luma=t.luma||{},!t.luma.caps)for(var e in t.luma.caps={},t.luma.caps.webgl2=Object(a.n)(t),H)t.luma.caps[e]=J(t,e);return t.luma.caps}var et=n(19),nt=n(9),rt=n(8),it=n(10),ot=n(26),at=function(t){function e(t,n){var r;Object(y.a)(this,e),Object(a.e)(t),Object(j.a)("string"==typeof n.source,"Shader: GLSL source code must be a JavaScript string");var i=Object(a.k)(n.source,null)||n.id||Object(l.i)("unnamed ".concat(e.getTypeName(n.shaderType)));return(r=Object(nt.a)(this,Object(rt.a)(e).call(this,t,{id:i}))).shaderType=n.shaderType,r.source=n.source,r.initialize(n),r}return Object(it.a)(e,t),Object(L.a)(e,null,[{key:"getTypeName",value:function(t){switch(t){case 35633:return"vertex-shader";case 35632:return"fragment-shader";default:return Object(j.a)(!1),"unknown"}}}]),Object(L.a)(e,[{key:"initialize",value:function(t){var e=t.source,n=Object(a.k)(e,null);n&&(this.id=Object(l.i)(n)),this._compile(e)}},{key:"getParameter",value:function(t){return this.gl.getShaderParameter(this.handle,t)}},{key:"toString",value:function(){return"".concat(this.getTypeName(this.shaderType),":").concat(this.id)}},{key:"getName",value:function(){return Object(a.k)(this.source)||"unnamed-shader"}},{key:"getSource",value:function(){return this.gl.getShaderSource(this.handle)}},{key:"getTranslatedSource",value:function(){var t=this.gl.getExtension("WEBGL_debug_shaders");return t?t.getTranslatedShaderSource(this.handle):"No translated source available. WEBGL_debug_shaders not implemented"}},{key:"_compile",value:function(){if(this.gl.shaderSource(this.handle,this.source),this.gl.compileShader(this.handle),!this.getParameter(35713)){var t=this.gl.getShaderInfoLog(this.handle),e=Object(a.o)(t,this.source,this.shaderType,this.id),n=e.shaderName,r=e.errors,i=e.warnings;throw l.g.error("GLSL compilation errors in ".concat(n,"\n").concat(r))(),l.g.warn("GLSL compilation warnings in ".concat(n,"\n").concat(i))(),new Error("GLSL compilation errors in ".concat(n))}}},{key:"_deleteHandle",value:function(){this.gl.deleteShader(this.handle)}},{key:"_getOptsFromHandle",value:function(){return{type:this.getParameter(35663),source:this.getSource()}}}]),e}(ot.a),st=function(t){function e(t,n){return Object(y.a)(this,e),"string"==typeof n&&(l.g.deprecated("new FragmentShader(gl, source)","new FragmentShader(gl, {source})","6.1"),n={source:n}),Object(nt.a)(this,Object(rt.a)(e).call(this,t,Object.assign({},n,{shaderType:35633})))}return Object(it.a)(e,t),Object(L.a)(e,[{key:"_createHandle",value:function(){return this.gl.createShader(35633)}}]),e}(at),ut=function(t){function e(t,n){return Object(y.a)(this,e),"string"==typeof n&&(l.g.deprecated("new FragmentShader(gl, source)","new FragmentShader(gl, {source})","6.1"),n={source:n}),Object(nt.a)(this,Object(rt.a)(e).call(this,t,Object.assign({},n,{shaderType:35632})))}return Object(it.a)(e,t),Object(L.a)(e,[{key:"_createHandle",value:function(){return this.gl.createShader(35632)}}]),e}(at);function ct(t,e,n){return(ct="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(t,e,n){var r=function(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=Object(rt.a)(t)););return t}(t,e);if(r){var i=Object.getOwnPropertyDescriptor(r,e);return i.get?i.get.call(n):i.value}})(t,e,n||t)}var lt,ft=n(17),ht=n(47),dt=n(13),pt=n(53),gt="EXT_color_buffer_float",vt=(lt={},Object(C.a)(lt,33189,{}),Object(C.a)(lt,33190,{gl2:!0}),Object(C.a)(lt,36012,{gl2:!0}),Object(C.a)(lt,36168,{}),Object(C.a)(lt,34041,{}),Object(C.a)(lt,35056,{gl2:!0}),Object(C.a)(lt,36013,{gl2:!0}),Object(C.a)(lt,32854,{}),Object(C.a)(lt,36194,{}),Object(C.a)(lt,32855,{}),Object(C.a)(lt,33321,{gl2:!0}),Object(C.a)(lt,33330,{gl2:!0}),Object(C.a)(lt,33329,{gl2:!0}),Object(C.a)(lt,33332,{gl2:!0}),Object(C.a)(lt,33331,{gl2:!0}),Object(C.a)(lt,33334,{gl2:!0}),Object(C.a)(lt,33333,{gl2:!0}),Object(C.a)(lt,33323,{gl2:!0}),Object(C.a)(lt,33336,{gl2:!0}),Object(C.a)(lt,33335,{gl2:!0}),Object(C.a)(lt,33338,{gl2:!0}),Object(C.a)(lt,33337,{gl2:!0}),Object(C.a)(lt,33340,{gl2:!0}),Object(C.a)(lt,33339,{gl2:!0}),Object(C.a)(lt,32849,{gl2:!0}),Object(C.a)(lt,32856,{gl2:!0}),Object(C.a)(lt,32857,{gl2:!0}),Object(C.a)(lt,36220,{gl2:!0}),Object(C.a)(lt,36238,{gl2:!0}),Object(C.a)(lt,36975,{gl2:!0}),Object(C.a)(lt,36214,{gl2:!0}),Object(C.a)(lt,36232,{gl2:!0}),Object(C.a)(lt,36226,{gl2:!0}),Object(C.a)(lt,36208,{gl2:!0}),Object(C.a)(lt,33325,{gl2:gt}),Object(C.a)(lt,33327,{gl2:gt}),Object(C.a)(lt,34842,{gl2:gt}),Object(C.a)(lt,33326,{gl2:gt}),Object(C.a)(lt,33328,{gl2:gt}),Object(C.a)(lt,34836,{gl2:gt}),Object(C.a)(lt,35898,{gl2:gt}),lt);function yt(t,e,n){var r=n[e];if(!r)return!1;var i=Object(a.n)(t)&&r.gl2||r.gl1;return"string"==typeof i?t.getExtension(i):i}var mt=function(t){function e(t){var n,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object(y.a)(this,e),(n=Object(nt.a)(this,Object(rt.a)(e).call(this,t,r))).initialize(r),Object.seal(Object(ft.a)(Object(ft.a)(n))),n}return Object(it.a)(e,t),Object(L.a)(e,null,[{key:"isSupported",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.format;return!n||yt(t,n,vt)}},{key:"getSamplesForFormat",value:function(t,e){var n=e.format;return t.getInternalformatParameter(36161,n,32937)}}]),Object(L.a)(e,[{key:"initialize",value:function(t){var e=t.format,n=t.width,r=void 0===n?1:n,i=t.height,o=void 0===i?1:i,s=t.samples,u=void 0===s?0:s;return Object(j.a)(e,"Needs format"),this.gl.bindRenderbuffer(36161,this.handle),0!==u&&Object(a.n)(this.gl)?this.gl.renderbufferStorageMultisample(36161,u,e,r,o):this.gl.renderbufferStorage(36161,e,r,o),this.format=e,this.width=r,this.height=o,this.samples=u,this}},{key:"resize",value:function(t){var e=t.width,n=t.height;return e!==this.width||n!==this.height?this.initialize({width:e,height:n,format:this.format,samples:this.samples}):this}},{key:"_createHandle",value:function(){return this.gl.createRenderbuffer()}},{key:"_deleteHandle",value:function(){this.gl.deleteRenderbuffer(this.handle)}},{key:"_bindHandle",value:function(t){this.gl.bindRenderbuffer(36161,t)}},{key:"_syncHandle",value:function(t){this.format=this.getParameter(36164),this.width=this.getParameter(36162),this.height=this.getParameter(36163),this.samples=this.getParameter(36011)}},{key:"_getParameter",value:function(t){return this.gl.bindRenderbuffer(36161,this.handle),this.gl.getRenderbufferParameter(36161,t)}}]),e}(ot.a);function bt(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.framebuffer,r=void 0===n?null:n,i=e.color,o=void 0===i?null:i,a=e.depth,s=void 0===a?null:a,u=e.stencil,c=void 0===u?null:u,l={};r&&(l.framebuffer=r);var f=0;o&&(f|=16384,!0!==o&&(l.clearColor=o)),s&&(f|=256,!0!==s&&(l.clearDepth=s)),c&&(f|=1024,!0!==s&&(l.clearStencil=s)),Object(j.a)(0!==f,"clear: bad arguments"),Object(X.g)(t,l,(function(){t.clear(f)}))}function _t(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.framebuffer,r=void 0===n?null:n,i=e.buffer,o=void 0===i?6144:i,s=e.drawBuffer,u=void 0===s?0:s,c=e.value,l=void 0===c?[0,0,0,0]:c;Object(a.d)(t),Object(X.g)(t,{framebuffer:r},(function(){switch(o){case 6144:switch(l.constructor){case Int32Array:t.clearBufferiv(o,u,l);break;case Uint32Array:t.clearBufferuiv(o,u,l);break;case Float32Array:default:t.clearBufferfv(o,u,l)}break;case 6145:t.clearBufferfv(6145,0,[l]);break;case 6146:t.clearBufferiv(6146,0,[l]);break;case 34041:var e=Object(dt.a)(l,2),n=e[0],r=e[1];t.clearBufferfi(34041,0,n,r);break;default:Object(j.a)(!1,"clear: bad arguments")}}))}var xt=n(41);function wt(t){switch(t){case 6406:case 33326:case 6403:return 1;case 33328:case 33319:return 2;case 6407:case 34837:return 3;case 6408:case 34836:return 4;default:return Object(j.a)(!1),0}}var Et=function(t){function e(t){var n,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object(y.a)(this,e),(n=Object(nt.a)(this,Object(rt.a)(e).call(this,t,r))).width=null,n.height=null,n.attachments={},n.readBuffer=36064,n.drawBuffers=[36064],n.initialize(r),Object.seal(Object(ft.a)(Object(ft.a)(n))),n}return Object(it.a)(e,t),Object(L.a)(e,[{key:"MAX_COLOR_ATTACHMENTS",get:function(){return this.gl.getParameter(this.gl.MAX_COLOR_ATTACHMENTS)}},{key:"MAX_DRAW_BUFFERS",get:function(){return this.gl.getParameter(this.gl.MAX_DRAW_BUFFERS)}}],[{key:"isSupported",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.colorBufferFloat,r=e.colorBufferHalfFloat;return n&&t.getExtension(Object(a.n)(t)?"EXT_color_buffer_float":"WEBGL.color_buffer_float"),r&&t.getExtension(Object(a.n)(t)?"EXT_color_buffer_float":"EXT_color_buffer_half_float")}},{key:"getDefaultFramebuffer",value:function(t){return t.luma=t.luma||{},t.luma.defaultFramebuffer=t.luma.defaultFramebuffer||new e(t,{id:"default-framebuffer",handle:null,attachments:{}}),t.luma.defaultFramebuffer}}]),Object(L.a)(e,[{key:"initialize",value:function(t){var e=t.width,n=void 0===e?1:e,r=t.height,i=void 0===r?1:r,o=t.attachments,a=void 0===o?null:o,s=t.color,u=void 0===s||s,c=t.depth,l=void 0===c||c,f=t.stencil,h=void 0!==f&&f,d=t.check,p=void 0===d||d,g=t.readBuffer,v=t.drawBuffers;if(Object(j.a)(n>=0&&i>=0,"Width and height need to be integers"),this.width=n,this.height=i,a)for(var y in a){var m=a[y];(Array.isArray(m)?m[0]:m).resize({width:n,height:i})}else a=this._createDefaultAttachments(u,l,h,n,i);this.update({clearAttachments:!0,attachments:a,readBuffer:g,drawBuffers:v}),a&&p&&this.checkStatus()}},{key:"update",value:function(t){var e=t.attachments,n=void 0===e?{}:e,r=t.readBuffer,i=t.drawBuffers,o=t.clearAttachments,a=void 0!==o&&o,s=t.resizeAttachments,u=void 0===s||s;this.attach(n,{clearAttachments:a,resizeAttachments:u});var c=this.gl,l=c.bindFramebuffer(36160,this.handle);return r&&this._setReadBuffer(r),i&&this._setDrawBuffers(i),c.bindFramebuffer(36160,l||null),this}},{key:"resize",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.width,n=t.height;if(null===this.handle)return Object(j.a)(void 0===e&&void 0===n),this.width=this.gl.drawingBufferWidth,this.height=this.gl.drawingBufferHeight,this;for(var r in void 0===e&&(e=this.gl.drawingBufferWidth),void 0===n&&(n=this.gl.drawingBufferHeight),e!==this.width&&n!==this.height&&l.g.log(2,"Resizing framebuffer ".concat(this.id," to ").concat(e,"x").concat(n)),this.attachments)this.attachments[r].resize({width:e,height:n});return this.width=e,this.height=n,this}},{key:"attach",value:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=n.clearAttachments,i=void 0!==r&&r,o=n.resizeAttachments,a=void 0===o||o,s={};i&&Object.keys(this.attachments).forEach((function(t){s[t]=null})),Object.assign(s,t);var u=this.gl.bindFramebuffer(36160,this.handle);for(var c in s){Object(j.a)(void 0!==c,"Misspelled framebuffer binding point?");var l=Number(c),f=s[l],h=f;if(h)if(h instanceof mt)this._attachRenderbuffer({attachment:l,renderbuffer:h});else if(Array.isArray(f)){var d=Object(dt.a)(f,3),p=d[0],g=d[1],v=void 0===g?0:g,y=d[2],m=void 0===y?0:y;h=p,this._attachTexture({attachment:l,texture:p,layer:v,level:m})}else this._attachTexture({attachment:l,texture:h,layer:0,level:0});else this._unattach(l);a&&h&&h.resize({width:this.width,height:this.height})}this.gl.bindFramebuffer(36160,u||null),Object.assign(this.attachments,t),Object.keys(this.attachments).filter((function(t){return!e.attachments[t]})).forEach((function(t){delete e.attachments[t]}))}},{key:"checkStatus",value:function(){var t=this.gl,e=t.bindFramebuffer(36160,this.handle),n=t.checkFramebufferStatus(36160);if(t.bindFramebuffer(36160,e||null),36053!==n)throw new Error(function(t){return(Et.STATUS||{})[t]||"Framebuffer error ".concat(t)}(n));return this}},{key:"clear",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.color,n=t.depth,r=t.stencil,i=t.drawBuffers,o=void 0===i?[]:i,a=this.gl.bindFramebuffer(36160,this.handle);return(e||n||r)&&bt(this.gl,{color:e,depth:n,stencil:r}),o.forEach((function(t,e){_t({drawBuffer:e,value:t})})),this.gl.bindFramebuffer(36160,a||null),this}},{key:"readPixels",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.x,n=void 0===e?0:e,r=t.y,i=void 0===r?0:r,o=t.width,a=void 0===o?this.width:o,s=t.height,u=void 0===s?this.height:s,c=t.format,l=void 0===c?6408:c,f=t.type,h=t.pixelArray,d=void 0===h?null:h,p=t.attachment,g=void 0===p?36064:p;this.gl;if(36064===g&&null===this.handle&&(g=1028),Object(j.a)(this.attachments[g]),f=f||this.attachments[g].type,!d){f=f||5121;var v=Object(xt.c)(f,{clamped:!1}),y=wt(l);d=d||new v(a*u*y)}f=f||Object(xt.b)(d);var m=this.gl.bindFramebuffer(36160,this.handle);return this.gl.readPixels(n,i,a,u,l,f,d),this.gl.bindFramebuffer(36160,m||null),d}},{key:"readPixelsToBuffer",value:function(t){var e=t.x,n=void 0===e?0:e,r=t.y,i=void 0===r?0:r,o=t.width,s=void 0===o?this.width:o,u=t.height,c=void 0===u?this.height:u,l=t.format,f=void 0===l?6408:l,h=t.type,d=t.buffer,p=void 0===d?null:d,g=t.byteOffset,v=void 0===g?0:g,y=this.gl;if(Object(a.d)(y),h=h||(p?p.type:5121),!p){var m=wt(f),b=function(t){switch(t){case 5121:return 1;case 33635:case 32819:case 32820:return 2;case 5126:return 4;default:return Object(j.a)(!1),0}}(h),_=v+s*c*m*b;p=new et.a(y,{bytes:_,type:h,size:m})}return p.bind({target:35051}),Object(X.g)(y,{framebuffer:this},(function(){y.readPixels(n,i,s,c,f,h,v)})),p.unbind({target:35051}),p}},{key:"copyToDataUrl",value:function(){for(var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.attachment,n=void 0===e?36064:e,r=t.maxHeight,i=void 0===r?Number.MAX_SAFE_INTEGER:r,o=this.readPixels({attachment:n}),s=this.width,u=this.height;u>i;){var c=Object(a.q)({data:o,width:s,height:u});o=c.data,s=c.width,u=c.height}Object(a.h)({data:o,width:s,height:u});var l=document.createElement("canvas");l.width=s,l.height=u;var f=l.getContext("2d"),h=f.createImageData(s,u);return h.data.set(o),f.putImageData(h,0,0),l.toDataURL()}},{key:"copyToImage",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.image,n=void 0===e?null:e,r=t.attachment,i=void 0===r?36064:r,o=t.maxHeight,a=(void 0===o&&Number.MAX_SAFE_INTEGER,this.readDataUrl({attachment:i}));return(n=n||new Image).src=a,n}},{key:"copyToTexture",value:function(t){var e=t.texture,n=t.target,r=t.xoffset,i=void 0===r?0:r,o=t.yoffset,a=void 0===o?0:o,s=t.zoffset,u=void 0===s?0:s,c=t.mipmapLevel,l=void 0===c?0:c,f=(t.attachment,t.x),h=void 0===f?0:f,d=t.y,p=void 0===d?0:d,g=t.width,v=t.height,y=this.gl,m=y.bindFramebuffer(36160,this.handle);switch(Object(j.a)(n||e),e&&(g=Number.isFinite(g)?g:e.width,v=Number.isFinite(v)?v:e.height,e.bind(0)),e.target){case 3553:case 34067:y.copyTexSubImage2D(n||e.target,l,i,a,h,p,g,v);break;case 35866:case 32879:y.copyTexSubImage3D(n||e.target,l,i,a,u,h,p,g,v)}return e&&e.unbind(),y.bindFramebuffer(36160,m||null),e}},{key:"blit",value:function(t){var e=t.srcFramebuffer,n=t.attachment,r=void 0===n?36064:n,i=t.srcX0,o=void 0===i?0:i,s=t.srcY0,u=void 0===s?0:s,c=t.srcX1,l=t.srcY1,f=t.dstX0,h=void 0===f?0:f,d=t.dstY0,p=void 0===d?0:d,g=t.dstX1,v=t.dstY1,y=t.color,m=void 0===y||y,b=t.depth,_=void 0!==b&&b,x=t.stencil,w=void 0!==x&&x,E=t.mask,S=void 0===E?0:E,O=t.filter,P=void 0===O?9728:O,C=this.gl;Object(a.d)(C),e.handle||36064!==r||(r=1028),m&&(S|=16384),_&&(S|=256),w&&(S|=1024),Object(j.a)(S),c=void 0===c?e.width:c,l=void 0===l?e.height:l,g=void 0===g?this.width:g,v=void 0===v?this.height:v;var M=C.bindFramebuffer(36009,this.handle),I=C.bindFramebuffer(36008,e.handle);return C.readBuffer(r),C.blitFramebuffer(o,u,c,l,h,p,g,v,S,P),C.readBuffer(this.readBuffer),C.bindFramebuffer(36008,I||null),C.bindFramebuffer(36009,M||null),this}},{key:"invalidate",value:function(t){var e=t.attachments,n=void 0===e?[]:e,r=t.x,i=void 0===r?0:r,o=t.y,s=void 0===o?0:o,u=t.width,c=t.height,l=this.gl;Object(a.d)(l);var f=l.bindFramebuffer(36008,this.handle);return 0===i&&0===s&&void 0===u&&void 0===c?l.invalidateFramebuffer(36008,n):l.invalidateFramebuffer(36008,n,i,s,u,c),l.bindFramebuffer(36008,f),this}},{key:"getAttachmentParameter",value:function(t,e,n){var r=this._getAttachmentParameterFallback(e);return null===r&&(this.gl.bindFramebuffer(36160,this.handle),r=this.gl.getFramebufferAttachmentParameter(36160,t,e),this.gl.bindFramebuffer(36160,null)),n&&r>1e3&&(r=Object(o.d)(this.gl,r)),r}},{key:"getAttachmentParameters",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:36064,e=arguments.length>1?arguments[1]:void 0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.constructor.ATTACHMENT_PARAMETERS||[],r={},i=!0,a=!1,s=void 0;try{for(var u,c=n[Symbol.iterator]();!(i=(u=c.next()).done);i=!0){var l=u.value,f=e?Object(o.d)(this.gl,l):l;r[f]=this.getAttachmentParameter(t,l,e)}}catch(t){a=!0,s=t}finally{try{i||null==c.return||c.return()}finally{if(a)throw s}}return r}},{key:"getParameters",value:function(){for(var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],e=Object.keys(this.attachments),n={},r=0;r<e.length;r++){var i=e[r],a=Number(i),s=t?Object(o.d)(this.gl,a):a;n[s]=this.getAttachmentParameters(a,t)}return n}},{key:"show",value:function(){return"undefined"!=typeof window&&window.open(this.copyToDataUrl(),"luma-debug-texture"),this}},{key:"log",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(t>l.g.priority||"undefined"==typeof window)return this;e=e||"Framebuffer ".concat(this.id);var n=this.copyToDataUrl({maxHeight:100});return l.g.image({priority:t,message:e,image:n},e)(),this}},{key:"bind",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.target,n=void 0===e?36160:e;return this.gl.bindFramebuffer(n,this.handle),this}},{key:"unbind",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.target,n=void 0===e?36160:e;return this.gl.bindFramebuffer(n,null),this}},{key:"_createDefaultAttachments",value:function(t,e,n,r,i){var o,a=null;t&&((a=a||{})[36064]=new pt.a(this.gl,{id:"".concat(this.id,"-color0"),pixels:null,format:6408,type:5121,width:r,height:i,mipmaps:!1,parameters:(o={},Object(C.a)(o,10241,9728),Object(C.a)(o,10240,9728),Object(C.a)(o,10242,33071),Object(C.a)(o,10243,33071),o)}));return e&&n?(a=a||{})[33306]=new mt(this.gl,{id:"".concat(this.id,"-depth-stencil"),format:35056,width:r,height:111}):e?(a=a||{})[36096]=new mt(this.gl,{id:"".concat(this.id,"-depth"),format:33189,width:r,height:i}):n&&Object(j.a)(!1),a}},{key:"_unattach",value:function(t){var e=this.attachments[t];e&&(e instanceof mt?this.gl.framebufferRenderbuffer(36160,t,36161,null):this.gl.framebufferTexture2D(36160,t,3553,null,0),delete this.attachments[t])}},{key:"_attachRenderbuffer",value:function(t){var e=t.attachment,n=void 0===e?36064:e,r=t.renderbuffer;this.gl.framebufferRenderbuffer(36160,n,36161,r.handle),this.attachments[n]=r}},{key:"_attachTexture",value:function(t){var e=t.attachment,n=void 0===e?36064:e,r=t.texture,i=t.layer,o=t.level,a=this.gl;switch(a.bindTexture(r.target,r.handle),r.target){case 35866:case 32879:a.framebufferTextureLayer(36160,n,r.target,o,i);break;case 34067:var s=function(t){return t<34069?t+34069:t}(i);a.framebufferTexture2D(36160,n,s,r.handle,o);break;case 3553:a.framebufferTexture2D(36160,n,3553,r.handle,o);break;default:Object(j.a)(!1,"Illegal texture type")}a.bindTexture(r.target,null),this.attachments[n]=r}},{key:"_setReadBuffer",value:function(t,e){Object(a.n)(t)?t.readBuffer(e):Object(j.a)(36064===e||1029===e,"Multiple render targets not supported"),this.readBuffer=e}},{key:"_setDrawBuffers",value:function(t,e){if(Object(a.n)(t))t.drawBuffers(e);else{var n=t.getExtension("WEBGL.draw_buffers");n?n.drawBuffersWEBGL(e):Object(j.a)(1===e.length&&(36064===e[0]||1029===e[0]),"Multiple render targets not supported")}this.drawBuffers=e}},{key:"_getAttachmentParameterFallback",value:function(t){var e=tt(this.gl);switch(t){case 36052:return e.webgl2?null:0;case 33298:case 33299:case 33300:case 33301:case 33302:case 33303:return e.webgl2?null:8;case 33297:return e.webgl2?null:5125;case 33296:return e.webgl2||e.EXT_sRGB?null:9729;default:return null}}},{key:"_createHandle",value:function(){return this.gl.createFramebuffer()}},{key:"_deleteHandle",value:function(){this.gl.deleteFramebuffer(this.handle)}},{key:"_bindHandle",value:function(t){return this.gl.bindFramebuffer(36160,t)}},{key:"color",get:function(){return this.attachments[36064]||null}},{key:"texture",get:function(){return this.attachments[36064]||null}},{key:"depth",get:function(){return this.attachments[36096]||this.attachments[33306]||null}},{key:"stencil",get:function(){return this.attachments[36128]||this.attachments[33306]||null}}]),e}(ot.a);Et.ATTACHMENT_PARAMETERS=[36049,36048,33296,33298,33299,33300,33301,33302,33303];var St,Ot=function(t){function e(t,n){var r;return Object(y.a)(this,e),Object(a.d)(t),r=Object(nt.a)(this,Object(rt.a)(e).call(this,t,n)),Object.seal(Object(ft.a)(Object(ft.a)(r))),r}return Object(it.a)(e,t),Object(L.a)(e,null,[{key:"isSupported",value:function(t){return Object(a.n)(t)}}]),Object(L.a)(e,[{key:"bind",value:function(t){return this.gl.bindSampler(t,this.handle),this}},{key:"unbind",value:function(t){return this.gl.bindSampler(t,null),this}},{key:"_createHandle",value:function(){return this.gl.createSampler()}},{key:"_deleteHandle",value:function(){this.gl.deleteSampler(this.handle)}},{key:"_getParameter",value:function(t){return this.gl.getSamplerParameter(this.handle,t)}},{key:"_setParameter",value:function(t,e){switch(t){case 33082:case 33083:this.gl.samplerParameterf(this.handle,t,e);break;default:this.gl.samplerParameteri(this.handle,t,e)}return this}}]),e}(ot.a),Pt=(St={},Object(C.a)(St,5126,(function(t,e,n){return t.uniform1fv(e,Nt(n,1))})),Object(C.a)(St,35664,(function(t,e,n){return t.uniform2fv(e,Nt(n,2))})),Object(C.a)(St,35665,(function(t,e,n){return t.uniform3fv(e,Nt(n,3))})),Object(C.a)(St,35666,(function(t,e,n){return t.uniform4fv(e,Nt(n,4))})),Object(C.a)(St,5124,(function(t,e,n){return t.uniform1iv(e,Lt(n,1))})),Object(C.a)(St,35667,(function(t,e,n){return t.uniform2iv(e,Lt(n,2))})),Object(C.a)(St,35668,(function(t,e,n){return t.uniform3iv(e,Lt(n,3))})),Object(C.a)(St,35669,(function(t,e,n){return t.uniform4iv(e,Lt(n,4))})),Object(C.a)(St,35670,(function(t,e,n){return t.uniform1iv(e,Lt(n,1))})),Object(C.a)(St,35671,(function(t,e,n){return t.uniform2iv(e,Lt(n,2))})),Object(C.a)(St,35672,(function(t,e,n){return t.uniform3iv(e,Lt(n,3))})),Object(C.a)(St,35673,(function(t,e,n){return t.uniform4iv(e,Lt(n,4))})),Object(C.a)(St,35674,(function(t,e,n){return t.uniformMatrix2fv(e,!1,Nt(n,4))})),Object(C.a)(St,35675,(function(t,e,n){return t.uniformMatrix3fv(e,!1,Nt(n,9))})),Object(C.a)(St,35676,(function(t,e,n){return t.uniformMatrix4fv(e,!1,Nt(n,16))})),Object(C.a)(St,35678,(function(t,e,n){return t.uniform1i(e,n)})),Object(C.a)(St,35680,(function(t,e,n){return t.uniform1i(e,n)})),Object(C.a)(St,5125,(function(t,e,n){return t.uniform1uiv(e,Rt(n,1))})),Object(C.a)(St,36294,(function(t,e,n){return t.uniform2uiv(e,Rt(n,2))})),Object(C.a)(St,36295,(function(t,e,n){return t.uniform3uiv(e,Rt(n,3))})),Object(C.a)(St,36296,(function(t,e,n){return t.uniform4uiv(e,Rt(n,4))})),Object(C.a)(St,35685,(function(t,e,n){return t.uniformMatrix2x3fv(e,!1,Nt(n,6))})),Object(C.a)(St,35686,(function(t,e,n){return t.uniformMatrix2x4fv(e,!1,Nt(n,8))})),Object(C.a)(St,35687,(function(t,e,n){return t.uniformMatrix3x2fv(e,!1,Nt(n,6))})),Object(C.a)(St,35688,(function(t,e,n){return t.uniformMatrix3x4fv(e,!1,Nt(n,12))})),Object(C.a)(St,35689,(function(t,e,n){return t.uniformMatrix4x2fv(e,!1,Nt(n,8))})),Object(C.a)(St,35690,(function(t,e,n){return t.uniformMatrix4x3fv(e,!1,Nt(n,12))})),Object(C.a)(St,35679,(function(t,e,n){return t.uniform1i(e,n)})),Object(C.a)(St,35682,(function(t,e,n){return t.uniform1i(e,n)})),Object(C.a)(St,36289,(function(t,e,n){return t.uniform1i(e,n)})),Object(C.a)(St,36292,(function(t,e,n){return t.uniform1i(e,n)})),Object(C.a)(St,36293,(function(t,e,n){return t.uniform1i(e,n)})),Object(C.a)(St,36298,(function(t,e,n){return t.uniform1i(e,n)})),Object(C.a)(St,36299,(function(t,e,n){return t.uniform1i(e,n)})),Object(C.a)(St,36300,(function(t,e,n){return t.uniform1i(e,n)})),Object(C.a)(St,36303,(function(t,e,n){return t.uniform1i(e,n)})),Object(C.a)(St,36306,(function(t,e,n){return t.uniform1i(e,n)})),Object(C.a)(St,36307,(function(t,e,n){return t.uniform1i(e,n)})),Object(C.a)(St,36308,(function(t,e,n){return t.uniform1i(e,n)})),Object(C.a)(St,36311,(function(t,e,n){return t.uniform1i(e,n)})),St),Ct={},Mt={},It={},At=[0];function Tt(t,e,n,r){1===e&&"boolean"==typeof t&&(t=t?1:0),Number.isFinite(t)&&(At[0]=t,t=At);var i=t.length;if(i%e&&l.g.warn("Uniform size should be multiples of ".concat(e),t)(),t instanceof n)return t;var o=r[i];o||(o=new n(i),r[i]=o);for(var a=0;a<i;a++)o[a]=t[a];return o}function Nt(t,e){return Tt(t,e,Float32Array,Ct)}function Lt(t,e){return Tt(t,e,Int32Array,Mt)}function Rt(t,e){return Tt(t,e,Uint32Array,It)}function kt(t){if("]"!==t[t.length-1])return{name:t,length:1,isArray:!1};var e=t.match(/([^\[]*)(\[[0-9]+\])?/);if(!e||e.length<2)throw new Error("Failed to parse GLSL uniform name ".concat(t));return{name:e[1],length:e[2]||1,isArray:Boolean(e[2])}}function jt(t,e,n){var r=Pt[n.type];if(!r)throw new Error("Unknown GLSL uniform type ".concat(n.type));return r.bind(null,t,e)}function Ft(t,e,n){for(var r in t){var i=t[r];if((!n||Boolean(n[r]))&&!Dt(i))throw e=e?"".concat(e," "):"",console.error("".concat(e," Bad uniform ").concat(r),i),new Error("".concat(e," Bad uniform ").concat(r))}return!0}function Dt(t){return Array.isArray(t)||ArrayBuffer.isView(t)?function(t){if(0===t.length)return!1;for(var e=Math.min(t.length,16),n=0;n<e;++n)if(!Number.isFinite(t[n]))return!1;return!0}(t):!!isFinite(t)||(!0===t||!1===t||(t instanceof ht.a||t instanceof Ot||(t instanceof mt||t instanceof Et&&Boolean(t.texture))))}function Bt(t,e){if(Array.isArray(t)||ArrayBuffer.isView(t)){if(!e)return!1;var n=t.length;if(e.length!==n)return!1;for(var r=0;r<n;r++)if(t[r]!==e[r])return!1;return!0}return t===e}function zt(t){return Array.isArray(t)||ArrayBuffer.isView(t)?t.slice():t}var Vt,Gt=n(48),Ut=(Vt={},Object(C.a)(Vt,5126,[5126,1,"float"]),Object(C.a)(Vt,35664,[5126,2,"vec2"]),Object(C.a)(Vt,35665,[5126,3,"vec3"]),Object(C.a)(Vt,35666,[5126,4,"vec4"]),Object(C.a)(Vt,5124,[5124,1,"int"]),Object(C.a)(Vt,35667,[5124,2,"ivec2"]),Object(C.a)(Vt,35668,[5124,3,"ivec3"]),Object(C.a)(Vt,35669,[5124,4,"ivec4"]),Object(C.a)(Vt,5125,[5125,1,"uint"]),Object(C.a)(Vt,36294,[5125,2,"uvec2"]),Object(C.a)(Vt,36295,[5125,3,"uvec3"]),Object(C.a)(Vt,36296,[5125,4,"uvec4"]),Object(C.a)(Vt,35670,[5126,1,"bool"]),Object(C.a)(Vt,35671,[5126,2,"bvec2"]),Object(C.a)(Vt,35672,[5126,3,"bvec3"]),Object(C.a)(Vt,35673,[5126,4,"bvec4"]),Object(C.a)(Vt,35674,[5126,8,"mat2"]),Object(C.a)(Vt,35685,[5126,8,"mat2x3"]),Object(C.a)(Vt,35686,[5126,8,"mat2x4"]),Object(C.a)(Vt,35675,[5126,12,"mat3"]),Object(C.a)(Vt,35687,[5126,12,"mat3x2"]),Object(C.a)(Vt,35688,[5126,12,"mat3x4"]),Object(C.a)(Vt,35676,[5126,16,"mat4"]),Object(C.a)(Vt,35689,[5126,16,"mat4x2"]),Object(C.a)(Vt,35690,[5126,16,"mat4x3"]),Vt);function Wt(t){switch(t){case 0:return 0;case 1:case 3:case 2:return 1;case 4:case 5:case 6:return 4;default:return Object(j.a)(!1),0}}function qt(t){var e=Ut[t];if(!e)return null;var n=Object(dt.a)(e,2);return{type:n[0],components:n[1]}}function Xt(t,e){switch(t){case 5120:case 5121:case 5122:case 5123:t=5126}for(var n in Ut){var r=Object(dt.a)(Ut[n],3),i=r[0],o=r[1],a=r[2];if(i===t&&o===e)return{glType:n,name:a}}return null}var Ht=function(){function t(e){Object(y.a)(this,t),this.id=e.id,this.attributeInfos=[],this.attributeInfosByName={},this.varyingInfos=[],this.varyingInfosByName={},Object.seal(this),this._readAttributesFromProgram(e),this._readVaryingsFromProgram(e)}return Object(L.a)(t,[{key:"getAttributeInfo",value:function(t){var e=Number(t);return Number.isFinite(e)?this.attributeInfos[e]:this.attributeInfosByName[t]||null}},{key:"getAttributeLocation",value:function(t){var e=this.getAttributeInfo(t);return e?e.location:-1}},{key:"getAttributeAccessor",value:function(t){var e=this.getAttributeInfo(t);return e?e.accessor:null}},{key:"getVaryingInfo",value:function(t){var e=Number(t);return Number.isFinite(e)?this.varyingInfos[e]:this.varyingInfosByName[t]||null}},{key:"getVaryingIndex",value:function(t){var e=this.getVaryingInfo();return e?e.location:-1}},{key:"getVaryingAccessor",value:function(t){var e=this.getVaryingInfo();return e?e.accessor:null}},{key:"_readAttributesFromProgram",value:function(t){for(var e=t.gl,n=e.getProgramParameter(t.handle,35721),r=0;r<n;r++){var i=e.getActiveAttrib(t.handle,r),o=i.name,a=i.type,s=i.size,u=e.getAttribLocation(t.handle,o);u>=0&&this._addAttribute(u,o,a,s)}this.attributeInfos.sort((function(t,e){return t.location-e.location}))}},{key:"_readVaryingsFromProgram",value:function(t){var e=t.gl;if(Object(a.n)(e)){for(var n=e.getProgramParameter(t.handle,35971),r=0;r<n;r++){var i=e.getTransformFeedbackVarying(t.handle,