{"version":3,"file":"static/chunks/0f7a40cd.ad9e07deb4812451.js","mappings":"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","sources":["webpack://_N_E/./node_modules/regl/dist/regl.unchecked.js"],"sourcesContent":["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global.createREGL = factory());\n}(this, (function () { 'use strict';\n\nvar extend = function (base, opts) {\n var keys = Object.keys(opts)\n for (var i = 0; i < keys.length; ++i) {\n base[keys[i]] = opts[keys[i]]\n }\n return base\n}\n\nvar VARIABLE_COUNTER = 0\n\nvar DYN_FUNC = 0\nvar DYN_CONSTANT = 5\nvar DYN_ARRAY = 6\n\nfunction DynamicVariable (type, data) {\n this.id = (VARIABLE_COUNTER++)\n this.type = type\n this.data = data\n}\n\nfunction escapeStr (str) {\n return str.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"')\n}\n\nfunction splitParts (str) {\n if (str.length === 0) {\n return []\n }\n\n var firstChar = str.charAt(0)\n var lastChar = str.charAt(str.length - 1)\n\n if (str.length > 1 &&\n firstChar === lastChar &&\n (firstChar === '\"' || firstChar === \"'\")) {\n return ['\"' + escapeStr(str.substr(1, str.length - 2)) + '\"']\n }\n\n var parts = /\\[(false|true|null|\\d+|'[^']*'|\"[^\"]*\")\\]/.exec(str)\n if (parts) {\n return (\n splitParts(str.substr(0, parts.index))\n .concat(splitParts(parts[1]))\n .concat(splitParts(str.substr(parts.index + parts[0].length)))\n )\n }\n\n var subparts = str.split('.')\n if (subparts.length === 1) {\n return ['\"' + escapeStr(str) + '\"']\n }\n\n var result = []\n for (var i = 0; i < subparts.length; ++i) {\n result = result.concat(splitParts(subparts[i]))\n }\n return result\n}\n\nfunction toAccessorString (str) {\n return '[' + splitParts(str).join('][') + ']'\n}\n\nfunction defineDynamic (type, data) {\n return new DynamicVariable(type, toAccessorString(data + ''))\n}\n\nfunction isDynamic (x) {\n return (typeof x === 'function' && !x._reglType) || (x instanceof DynamicVariable)\n}\n\nfunction unbox (x, path) {\n if (typeof x === 'function') {\n return new DynamicVariable(DYN_FUNC, x)\n } else if (typeof x === 'number' || typeof x === 'boolean') {\n return new DynamicVariable(DYN_CONSTANT, x)\n } else if (Array.isArray(x)) {\n return new DynamicVariable(DYN_ARRAY, x.map(function (y, i) { return unbox(y, path + '[' + i + ']') }))\n } else if (x instanceof DynamicVariable) {\n return x\n }\n \n}\n\nvar dynamic = {\n DynamicVariable: DynamicVariable,\n define: defineDynamic,\n isDynamic: isDynamic,\n unbox: unbox,\n accessor: toAccessorString\n};\n\n/* globals requestAnimationFrame, cancelAnimationFrame */\nvar raf = {\n next: typeof requestAnimationFrame === 'function'\n ? function (cb) { return requestAnimationFrame(cb) }\n : function (cb) { return setTimeout(cb, 16) },\n cancel: typeof cancelAnimationFrame === 'function'\n ? function (raf) { return cancelAnimationFrame(raf) }\n : clearTimeout\n};\n\n/* globals performance */\nvar clock = (typeof performance !== 'undefined' && performance.now)\n ? function () { return performance.now() }\n : function () { return +(new Date()) };\n\nfunction createStringStore () {\n var stringIds = { '': 0 }\n var stringValues = ['']\n return {\n id: function (str) {\n var result = stringIds[str]\n if (result) {\n return result\n }\n result = stringIds[str] = stringValues.length\n stringValues.push(str)\n return result\n },\n\n str: function (id) {\n return stringValues[id]\n }\n }\n}\n\n// Context and canvas creation helper functions\n\nfunction createCanvas (element, onDone, pixelRatio) {\n var canvas = document.createElement('canvas')\n extend(canvas.style, {\n border: 0,\n margin: 0,\n padding: 0,\n top: 0,\n left: 0,\n width: '100%',\n height: '100%'\n })\n element.appendChild(canvas)\n\n if (element === document.body) {\n canvas.style.position = 'absolute'\n extend(element.style, {\n margin: 0,\n padding: 0\n })\n }\n\n function resize () {\n var w = window.innerWidth\n var h = window.innerHeight\n if (element !== document.body) {\n var bounds = canvas.getBoundingClientRect()\n w = bounds.right - bounds.left\n h = bounds.bottom - bounds.top\n }\n canvas.width = pixelRatio * w\n canvas.height = pixelRatio * h\n }\n\n var resizeObserver\n if (element !== document.body && typeof ResizeObserver === 'function') {\n // ignore 'ResizeObserver' is not defined\n // eslint-disable-next-line\n resizeObserver = new ResizeObserver(function () {\n // setTimeout to avoid flicker\n setTimeout(resize)\n })\n resizeObserver.observe(element)\n } else {\n window.addEventListener('resize', resize, false)\n }\n\n function onDestroy () {\n if (resizeObserver) {\n resizeObserver.disconnect()\n } else {\n window.removeEventListener('resize', resize)\n }\n element.removeChild(canvas)\n }\n\n resize()\n\n return {\n canvas: canvas,\n onDestroy: onDestroy\n }\n}\n\nfunction createContext (canvas, contextAttributes) {\n function get (name) {\n try {\n return canvas.getContext(name, contextAttributes)\n } catch (e) {\n return null\n }\n }\n return (\n get('webgl') ||\n get('experimental-webgl') ||\n get('webgl-experimental')\n )\n}\n\nfunction isHTMLElement (obj) {\n return (\n typeof obj.nodeName === 'string' &&\n typeof obj.appendChild === 'function' &&\n typeof obj.getBoundingClientRect === 'function'\n )\n}\n\nfunction isWebGLContext (obj) {\n return (\n typeof obj.drawArrays === 'function' ||\n typeof obj.drawElements === 'function'\n )\n}\n\nfunction parseExtensions (input) {\n if (typeof input === 'string') {\n return input.split()\n }\n \n return input\n}\n\nfunction getElement (desc) {\n if (typeof desc === 'string') {\n \n return document.querySelector(desc)\n }\n return desc\n}\n\nfunction parseArgs (args_) {\n var args = args_ || {}\n var element, container, canvas, gl\n var contextAttributes = {}\n var extensions = []\n var optionalExtensions = []\n var pixelRatio = (typeof window === 'undefined' ? 1 : window.devicePixelRatio)\n var profile = false\n var cachedCode = {}\n var onDone = function (err) {\n if (err) {\n \n }\n }\n var onDestroy = function () {}\n if (typeof args === 'string') {\n \n element = document.querySelector(args)\n \n } else if (typeof args === 'object') {\n if (isHTMLElement(args)) {\n element = args\n } else if (isWebGLContext(args)) {\n gl = args\n canvas = gl.canvas\n } else {\n \n if ('gl' in args) {\n gl = args.gl\n } else if ('canvas' in args) {\n canvas = getElement(args.canvas)\n } else if ('container' in args) {\n container = getElement(args.container)\n }\n if ('attributes' in args) {\n contextAttributes = args.attributes\n \n }\n if ('extensions' in args) {\n extensions = parseExtensions(args.extensions)\n }\n if ('optionalExtensions' in args) {\n optionalExtensions = parseExtensions(args.optionalExtensions)\n }\n if ('onDone' in args) {\n \n onDone = args.onDone\n }\n if ('profile' in args) {\n profile = !!args.profile\n }\n if ('pixelRatio' in args) {\n pixelRatio = +args.pixelRatio\n \n }\n if ('cachedCode' in args) {\n \n cachedCode = args.cachedCode\n }\n }\n } else {\n \n }\n\n if (element) {\n if (element.nodeName.toLowerCase() === 'canvas') {\n canvas = element\n } else {\n container = element\n }\n }\n\n if (!gl) {\n if (!canvas) {\n \n var result = createCanvas(container || document.body, onDone, pixelRatio)\n if (!result) {\n return null\n }\n canvas = result.canvas\n onDestroy = result.onDestroy\n }\n // workaround for chromium bug, premultiplied alpha value is platform dependent\n if (contextAttributes.premultipliedAlpha === undefined) contextAttributes.premultipliedAlpha = true\n gl = createContext(canvas, contextAttributes)\n }\n\n if (!gl) {\n onDestroy()\n onDone('webgl not supported, try upgrading your browser or graphics drivers http://get.webgl.org')\n return null\n }\n\n return {\n gl: gl,\n canvas: canvas,\n container: container,\n extensions: extensions,\n optionalExtensions: optionalExtensions,\n pixelRatio: pixelRatio,\n profile: profile,\n cachedCode: cachedCode,\n onDone: onDone,\n onDestroy: onDestroy\n }\n}\n\nfunction createExtensionCache (gl, config) {\n var extensions = {}\n\n function tryLoadExtension (name_) {\n \n var name = name_.toLowerCase()\n var ext\n try {\n ext = extensions[name] = gl.getExtension(name)\n } catch (e) {}\n return !!ext\n }\n\n for (var i = 0; i < config.extensions.length; ++i) {\n var name = config.extensions[i]\n if (!tryLoadExtension(name)) {\n config.onDestroy()\n config.onDone('\"' + name + '\" extension is not supported by the current WebGL context, try upgrading your system or a different browser')\n return null\n }\n }\n\n config.optionalExtensions.forEach(tryLoadExtension)\n\n return {\n extensions: extensions,\n restore: function () {\n Object.keys(extensions).forEach(function (name) {\n if (extensions[name] && !tryLoadExtension(name)) {\n throw new Error('(regl): error restoring extension ' + name)\n }\n })\n }\n }\n}\n\nfunction loop (n, f) {\n var result = Array(n)\n for (var i = 0; i < n; ++i) {\n result[i] = f(i)\n }\n return result\n}\n\nvar GL_BYTE = 5120\nvar GL_UNSIGNED_BYTE$1 = 5121\nvar GL_SHORT = 5122\nvar GL_UNSIGNED_SHORT = 5123\nvar GL_INT = 5124\nvar GL_UNSIGNED_INT = 5125\nvar GL_FLOAT$1 = 5126\n\nfunction nextPow16 (v) {\n for (var i = 16; i <= (1 << 28); i *= 16) {\n if (v <= i) {\n return i\n }\n }\n return 0\n}\n\nfunction log2 (v) {\n var r, shift\n r = (v > 0xFFFF) << 4\n v >>>= r\n shift = (v > 0xFF) << 3\n v >>>= shift; r |= shift\n shift = (v > 0xF) << 2\n v >>>= shift; r |= shift\n shift = (v > 0x3) << 1\n v >>>= shift; r |= shift\n return r | (v >> 1)\n}\n\nfunction createPool () {\n var bufferPool = loop(8, function () {\n return []\n })\n\n function alloc (n) {\n var sz = nextPow16(n)\n var bin = bufferPool[log2(sz) >> 2]\n if (bin.length > 0) {\n return bin.pop()\n }\n return new ArrayBuffer(sz)\n }\n\n function free (buf) {\n bufferPool[log2(buf.byteLength) >> 2].push(buf)\n }\n\n function allocType (type, n) {\n var result = null\n switch (type) {\n case GL_BYTE:\n result = new Int8Array(alloc(n), 0, n)\n break\n case GL_UNSIGNED_BYTE$1:\n result = new Uint8Array(alloc(n), 0, n)\n break\n case GL_SHORT:\n result = new Int16Array(alloc(2 * n), 0, n)\n break\n case GL_UNSIGNED_SHORT:\n result = new Uint16Array(alloc(2 * n), 0, n)\n break\n case GL_INT:\n result = new Int32Array(alloc(4 * n), 0, n)\n break\n case GL_UNSIGNED_INT:\n result = new Uint32Array(alloc(4 * n), 0, n)\n break\n case GL_FLOAT$1:\n result = new Float32Array(alloc(4 * n), 0, n)\n break\n default:\n return null\n }\n if (result.length !== n) {\n return result.subarray(0, n)\n }\n return result\n }\n\n function freeType (array) {\n free(array.buffer)\n }\n\n return {\n alloc: alloc,\n free: free,\n allocType: allocType,\n freeType: freeType\n }\n}\n\nvar pool = createPool()\n\n// zero pool for initial zero data\npool.zero = createPool()\n\nvar GL_SUBPIXEL_BITS = 0x0D50\nvar GL_RED_BITS = 0x0D52\nvar GL_GREEN_BITS = 0x0D53\nvar GL_BLUE_BITS = 0x0D54\nvar GL_ALPHA_BITS = 0x0D55\nvar GL_DEPTH_BITS = 0x0D56\nvar GL_STENCIL_BITS = 0x0D57\n\nvar GL_ALIASED_POINT_SIZE_RANGE = 0x846D\nvar GL_ALIASED_LINE_WIDTH_RANGE = 0x846E\n\nvar GL_MAX_TEXTURE_SIZE = 0x0D33\nvar GL_MAX_VIEWPORT_DIMS = 0x0D3A\nvar GL_MAX_VERTEX_ATTRIBS = 0x8869\nvar GL_MAX_VERTEX_UNIFORM_VECTORS = 0x8DFB\nvar GL_MAX_VARYING_VECTORS = 0x8DFC\nvar GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS = 0x8B4D\nvar GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS = 0x8B4C\nvar GL_MAX_TEXTURE_IMAGE_UNITS = 0x8872\nvar GL_MAX_FRAGMENT_UNIFORM_VECTORS = 0x8DFD\nvar GL_MAX_CUBE_MAP_TEXTURE_SIZE = 0x851C\nvar GL_MAX_RENDERBUFFER_SIZE = 0x84E8\n\nvar GL_VENDOR = 0x1F00\nvar GL_RENDERER = 0x1F01\nvar GL_VERSION = 0x1F02\nvar GL_SHADING_LANGUAGE_VERSION = 0x8B8C\n\nvar GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT = 0x84FF\n\nvar GL_MAX_COLOR_ATTACHMENTS_WEBGL = 0x8CDF\nvar GL_MAX_DRAW_BUFFERS_WEBGL = 0x8824\n\nvar GL_TEXTURE_2D = 0x0DE1\nvar GL_TEXTURE_CUBE_MAP = 0x8513\nvar GL_TEXTURE_CUBE_MAP_POSITIVE_X = 0x8515\nvar GL_TEXTURE0 = 0x84C0\nvar GL_RGBA = 0x1908\nvar GL_FLOAT = 0x1406\nvar GL_UNSIGNED_BYTE = 0x1401\nvar GL_FRAMEBUFFER = 0x8D40\nvar GL_FRAMEBUFFER_COMPLETE = 0x8CD5\nvar GL_COLOR_ATTACHMENT0 = 0x8CE0\nvar GL_COLOR_BUFFER_BIT$1 = 0x4000\n\nvar wrapLimits = function (gl, extensions) {\n var maxAnisotropic = 1\n if (extensions.ext_texture_filter_anisotropic) {\n maxAnisotropic = gl.getParameter(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT)\n }\n\n var maxDrawbuffers = 1\n var maxColorAttachments = 1\n if (extensions.webgl_draw_buffers) {\n maxDrawbuffers = gl.getParameter(GL_MAX_DRAW_BUFFERS_WEBGL)\n maxColorAttachments = gl.getParameter(GL_MAX_COLOR_ATTACHMENTS_WEBGL)\n }\n\n // detect if reading float textures is available (Safari doesn't support)\n var readFloat = !!extensions.oes_texture_float\n if (readFloat) {\n var readFloatTexture = gl.createTexture()\n gl.bindTexture(GL_TEXTURE_2D, readFloatTexture)\n gl.texImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_FLOAT, null)\n\n var fbo = gl.createFramebuffer()\n gl.bindFramebuffer(GL_FRAMEBUFFER, fbo)\n gl.framebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, readFloatTexture, 0)\n gl.bindTexture(GL_TEXTURE_2D, null)\n\n if (gl.checkFramebufferStatus(GL_FRAMEBUFFER) !== GL_FRAMEBUFFER_COMPLETE) readFloat = false\n\n else {\n gl.viewport(0, 0, 1, 1)\n gl.clearColor(1.0, 0.0, 0.0, 1.0)\n gl.clear(GL_COLOR_BUFFER_BIT$1)\n var pixels = pool.allocType(GL_FLOAT, 4)\n gl.readPixels(0, 0, 1, 1, GL_RGBA, GL_FLOAT, pixels)\n\n if (gl.getError()) readFloat = false\n else {\n gl.deleteFramebuffer(fbo)\n gl.deleteTexture(readFloatTexture)\n\n readFloat = pixels[0] === 1.0\n }\n\n pool.freeType(pixels)\n }\n }\n\n // detect non power of two cube textures support (IE doesn't support)\n var isIE = typeof navigator !== 'undefined' && (/MSIE/.test(navigator.userAgent) || /Trident\\//.test(navigator.appVersion) || /Edge/.test(navigator.userAgent))\n\n var npotTextureCube = true\n\n if (!isIE) {\n var cubeTexture = gl.createTexture()\n var data = pool.allocType(GL_UNSIGNED_BYTE, 36)\n gl.activeTexture(GL_TEXTURE0)\n gl.bindTexture(GL_TEXTURE_CUBE_MAP, cubeTexture)\n gl.texImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_RGBA, 3, 3, 0, GL_RGBA, GL_UNSIGNED_BYTE, data)\n pool.freeType(data)\n gl.bindTexture(GL_TEXTURE_CUBE_MAP, null)\n gl.deleteTexture(cubeTexture)\n npotTextureCube = !gl.getError()\n }\n\n return {\n // drawing buffer bit depth\n colorBits: [\n gl.getParameter(GL_RED_BITS),\n gl.getParameter(GL_GREEN_BITS),\n gl.getParameter(GL_BLUE_BITS),\n gl.getParameter(GL_ALPHA_BITS)\n ],\n depthBits: gl.getParameter(GL_DEPTH_BITS),\n stencilBits: gl.getParameter(GL_STENCIL_BITS),\n subpixelBits: gl.getParameter(GL_SUBPIXEL_BITS),\n\n // supported extensions\n extensions: Object.keys(extensions).filter(function (ext) {\n return !!extensions[ext]\n }),\n\n // max aniso samples\n maxAnisotropic: maxAnisotropic,\n\n // max draw buffers\n maxDrawbuffers: maxDrawbuffers,\n maxColorAttachments: maxColorAttachments,\n\n // point and line size ranges\n pointSizeDims: gl.getParameter(GL_ALIASED_POINT_SIZE_RANGE),\n lineWidthDims: gl.getParameter(GL_ALIASED_LINE_WIDTH_RANGE),\n maxViewportDims: gl.getParameter(GL_MAX_VIEWPORT_DIMS),\n maxCombinedTextureUnits: gl.getParameter(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS),\n maxCubeMapSize: gl.getParameter(GL_MAX_CUBE_MAP_TEXTURE_SIZE),\n maxRenderbufferSize: gl.getParameter(GL_MAX_RENDERBUFFER_SIZE),\n maxTextureUnits: gl.getParameter(GL_MAX_TEXTURE_IMAGE_UNITS),\n maxTextureSize: gl.getParameter(GL_MAX_TEXTURE_SIZE),\n maxAttributes: gl.getParameter(GL_MAX_VERTEX_ATTRIBS),\n maxVertexUniforms: gl.getParameter(GL_MAX_VERTEX_UNIFORM_VECTORS),\n maxVertexTextureUnits: gl.getParameter(GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS),\n maxVaryingVectors: gl.getParameter(GL_MAX_VARYING_VECTORS),\n maxFragmentUniforms: gl.getParameter(GL_MAX_FRAGMENT_UNIFORM_VECTORS),\n\n // vendor info\n glsl: gl.getParameter(GL_SHADING_LANGUAGE_VERSION),\n renderer: gl.getParameter(GL_RENDERER),\n vendor: gl.getParameter(GL_VENDOR),\n version: gl.getParameter(GL_VERSION),\n\n // quirks\n readFloat: readFloat,\n npotTextureCube: npotTextureCube\n }\n}\n\nvar isTypedArray = function (x) {\n return (\n x instanceof Uint8Array ||\n x instanceof Uint16Array ||\n x instanceof Uint32Array ||\n x instanceof Int8Array ||\n x instanceof Int16Array ||\n x instanceof Int32Array ||\n x instanceof Float32Array ||\n x instanceof Float64Array ||\n x instanceof Uint8ClampedArray\n )\n}\n\nfunction isNDArrayLike (obj) {\n return (\n !!obj &&\n typeof obj === 'object' &&\n Array.isArray(obj.shape) &&\n Array.isArray(obj.stride) &&\n typeof obj.offset === 'number' &&\n obj.shape.length === obj.stride.length &&\n (Array.isArray(obj.data) ||\n isTypedArray(obj.data)))\n}\n\nvar values = function (obj) {\n return Object.keys(obj).map(function (key) { return obj[key] })\n}\n\nvar flattenUtils = {\n shape: arrayShape$1,\n flatten: flattenArray\n};\n\nfunction flatten1D (array, nx, out) {\n for (var i = 0; i < nx; ++i) {\n out[i] = array[i]\n }\n}\n\nfunction flatten2D (array, nx, ny, out) {\n var ptr = 0\n for (var i = 0; i < nx; ++i) {\n var row = array[i]\n for (var j = 0; j < ny; ++j) {\n out[ptr++] = row[j]\n }\n }\n}\n\nfunction flatten3D (array, nx, ny, nz, out, ptr_) {\n var ptr = ptr_\n for (var i = 0; i < nx; ++i) {\n var row = array[i]\n for (var j = 0; j < ny; ++j) {\n var col = row[j]\n for (var k = 0; k < nz; ++k) {\n out[ptr++] = col[k]\n }\n }\n }\n}\n\nfunction flattenRec (array, shape, level, out, ptr) {\n var stride = 1\n for (var i = level + 1; i < shape.length; ++i) {\n stride *= shape[i]\n }\n var n = shape[level]\n if (shape.length - level === 4) {\n var nx = shape[level + 1]\n var ny = shape[level + 2]\n var nz = shape[level + 3]\n for (i = 0; i < n; ++i) {\n flatten3D(array[i], nx, ny, nz, out, ptr)\n ptr += stride\n }\n } else {\n for (i = 0; i < n; ++i) {\n flattenRec(array[i], shape, level + 1, out, ptr)\n ptr += stride\n }\n }\n}\n\nfunction flattenArray (array, shape, type, out_) {\n var sz = 1\n if (shape.length) {\n for (var i = 0; i < shape.length; ++i) {\n sz *= shape[i]\n }\n } else {\n sz = 0\n }\n var out = out_ || pool.allocType(type, sz)\n switch (shape.length) {\n case 0:\n break\n case 1:\n flatten1D(array, shape[0], out)\n break\n case 2:\n flatten2D(array, shape[0], shape[1], out)\n break\n case 3:\n flatten3D(array, shape[0], shape[1], shape[2], out, 0)\n break\n default:\n flattenRec(array, shape, 0, out, 0)\n }\n return out\n}\n\nfunction arrayShape$1 (array_) {\n var shape = []\n for (var array = array_; array.length; array = array[0]) {\n shape.push(array.length)\n }\n return shape\n}\n\nvar arrayTypes = {\n\t\"[object Int8Array]\": 5120,\n\t\"[object Int16Array]\": 5122,\n\t\"[object Int32Array]\": 5124,\n\t\"[object Uint8Array]\": 5121,\n\t\"[object Uint8ClampedArray]\": 5121,\n\t\"[object Uint16Array]\": 5123,\n\t\"[object Uint32Array]\": 5125,\n\t\"[object Float32Array]\": 5126,\n\t\"[object Float64Array]\": 5121,\n\t\"[object ArrayBuffer]\": 5121\n};\n\nvar int8 = 5120;\nvar int16 = 5122;\nvar int32 = 5124;\nvar uint8 = 5121;\nvar uint16 = 5123;\nvar uint32 = 5125;\nvar float = 5126;\nvar float32 = 5126;\nvar glTypes = {\n\tint8: int8,\n\tint16: int16,\n\tint32: int32,\n\tuint8: uint8,\n\tuint16: uint16,\n\tuint32: uint32,\n\tfloat: float,\n\tfloat32: float32\n};\n\nvar dynamic$1 = 35048;\nvar stream = 35040;\nvar usageTypes = {\n\tdynamic: dynamic$1,\n\tstream: stream,\n\t\"static\": 35044\n};\n\nvar arrayFlatten = flattenUtils.flatten\nvar arrayShape = flattenUtils.shape\n\nvar GL_STATIC_DRAW = 0x88E4\nvar GL_STREAM_DRAW = 0x88E0\n\nvar GL_UNSIGNED_BYTE$2 = 5121\nvar GL_FLOAT$2 = 5126\n\nvar DTYPES_SIZES = []\nDTYPES_SIZES[5120] = 1 // int8\nDTYPES_SIZES[5122] = 2 // int16\nDTYPES_SIZES[5124] = 4 // int32\nDTYPES_SIZES[5121] = 1 // uint8\nDTYPES_SIZES[5123] = 2 // uint16\nDTYPES_SIZES[5125] = 4 // uint32\nDTYPES_SIZES[5126] = 4 // float32\n\nfunction typedArrayCode (data) {\n return arrayTypes[Object.prototype.toString.call(data)] | 0\n}\n\nfunction copyArray (out, inp) {\n for (var i = 0; i < inp.length; ++i) {\n out[i] = inp[i]\n }\n}\n\nfunction transpose (\n result, data, shapeX, shapeY, strideX, strideY, offset) {\n var ptr = 0\n for (var i = 0; i < shapeX; ++i) {\n for (var j = 0; j < shapeY; ++j) {\n result[ptr++] = data[strideX * i + strideY * j + offset]\n }\n }\n}\n\nfunction wrapBufferState (gl, stats, config, destroyBuffer) {\n var bufferCount = 0\n var bufferSet = {}\n\n function REGLBuffer (type) {\n this.id = bufferCount++\n this.buffer = gl.createBuffer()\n this.type = type\n this.usage = GL_STATIC_DRAW\n this.byteLength = 0\n this.dimension = 1\n this.dtype = GL_UNSIGNED_BYTE$2\n\n this.persistentData = null\n\n if (config.profile) {\n this.stats = { size: 0 }\n }\n }\n\n REGLBuffer.prototype.bind = function () {\n gl.bindBuffer(this.type, this.buffer)\n }\n\n REGLBuffer.prototype.destroy = function () {\n destroy(this)\n }\n\n var streamPool = []\n\n function createStream (type, data) {\n var buffer = streamPool.pop()\n if (!buffer) {\n buffer = new REGLBuffer(type)\n }\n buffer.bind()\n initBufferFromData(buffer, data, GL_STREAM_DRAW, 0, 1, false)\n return buffer\n }\n\n function destroyStream (stream$$1) {\n streamPool.push(stream$$1)\n }\n\n function initBufferFromTypedArray (buffer, data, usage) {\n buffer.byteLength = data.byteLength\n gl.bufferData(buffer.type, data, usage)\n }\n\n function initBufferFromData (buffer, data, usage, dtype, dimension, persist) {\n var shape\n buffer.usage = usage\n if (Array.isArray(data)) {\n buffer.dtype = dtype || GL_FLOAT$2\n if (data.length > 0) {\n var flatData\n if (Array.isArray(data[0])) {\n shape = arrayShape(data)\n var dim = 1\n for (var i = 1; i < shape.length; ++i) {\n dim *= shape[i]\n }\n buffer.dimension = dim\n flatData = arrayFlatten(data, shape, buffer.dtype)\n initBufferFromTypedArray(buffer, flatData, usage)\n if (persist) {\n buffer.persistentData = flatData\n } else {\n pool.freeType(flatData)\n }\n } else if (typeof data[0] === 'number') {\n buffer.dimension = dimension\n var typedData = pool.allocType(buffer.dtype, data.length)\n copyArray(typedData, data)\n initBufferFromTypedArray(buffer, typedData, usage)\n if (persist) {\n buffer.persistentData = typedData\n } else {\n pool.freeType(typedData)\n }\n } else if (isTypedArray(data[0])) {\n buffer.dimension = data[0].length\n buffer.dtype = dtype || typedArrayCode(data[0]) || GL_FLOAT$2\n flatData = arrayFlatten(\n data,\n [data.length, data[0].length],\n buffer.dtype)\n initBufferFromTypedArray(buffer, flatData, usage)\n if (persist) {\n buffer.persistentData = flatData\n } else {\n pool.freeType(flatData)\n }\n } else {\n \n }\n }\n } else if (isTypedArray(data)) {\n buffer.dtype = dtype || typedArrayCode(data)\n buffer.dimension = dimension\n initBufferFromTypedArray(buffer, data, usage)\n if (persist) {\n buffer.persistentData = new Uint8Array(new Uint8Array(data.buffer))\n }\n } else if (isNDArrayLike(data)) {\n shape = data.shape\n var stride = data.stride\n var offset = data.offset\n\n var shapeX = 0\n var shapeY = 0\n var strideX = 0\n var strideY = 0\n if (shape.length === 1) {\n shapeX = shape[0]\n shapeY = 1\n strideX = stride[0]\n strideY = 0\n } else if (shape.length === 2) {\n shapeX = shape[0]\n shapeY = shape[1]\n strideX = stride[0]\n strideY = stride[1]\n } else {\n \n }\n\n buffer.dtype = dtype || typedArrayCode(data.data) || GL_FLOAT$2\n buffer.dimension = shapeY\n\n var transposeData = pool.allocType(buffer.dtype, shapeX * shapeY)\n transpose(transposeData,\n data.data,\n shapeX, shapeY,\n strideX, strideY,\n offset)\n initBufferFromTypedArray(buffer, transposeData, usage)\n if (persist) {\n buffer.persistentData = transposeData\n } else {\n pool.freeType(transposeData)\n }\n } else if (data instanceof ArrayBuffer) {\n buffer.dtype = GL_UNSIGNED_BYTE$2\n buffer.dimension = dimension\n initBufferFromTypedArray(buffer, data, usage)\n if (persist) {\n buffer.persistentData = new Uint8Array(new Uint8Array(data))\n }\n } else {\n \n }\n }\n\n function destroy (buffer) {\n stats.bufferCount--\n\n // remove attribute link\n destroyBuffer(buffer)\n\n var handle = buffer.buffer\n \n gl.deleteBuffer(handle)\n buffer.buffer = null\n delete bufferSet[buffer.id]\n }\n\n function createBuffer (options, type, deferInit, persistent) {\n stats.bufferCount++\n\n var buffer = new REGLBuffer(type)\n bufferSet[buffer.id] = buffer\n\n function reglBuffer (options) {\n var usage = GL_STATIC_DRAW\n var data = null\n var byteLength = 0\n var dtype = 0\n var dimension = 1\n if (Array.isArray(options) ||\n isTypedArray(options) ||\n isNDArrayLike(options) ||\n options instanceof ArrayBuffer) {\n data = options\n } else if (typeof options === 'number') {\n byteLength = options | 0\n } else if (options) {\n \n\n if ('data' in options) {\n \n data = options.data\n }\n\n if ('usage' in options) {\n \n usage = usageTypes[options.usage]\n }\n\n if ('type' in options) {\n \n dtype = glTypes[options.type]\n }\n\n if ('dimension' in options) {\n \n dimension = options.dimension | 0\n }\n\n if ('length' in options) {\n \n byteLength = options.length | 0\n }\n }\n\n buffer.bind()\n if (!data) {\n // #475\n if (byteLength) gl.bufferData(buffer.type, byteLength, usage)\n buffer.dtype = dtype || GL_UNSIGNED_BYTE$2\n buffer.usage = usage\n buffer.dimension = dimension\n buffer.byteLength = byteLength\n } else {\n initBufferFromData(buffer, data, usage, dtype, dimension, persistent)\n }\n\n if (config.profile) {\n buffer.stats.size = buffer.byteLength * DTYPES_SIZES[buffer.dtype]\n }\n\n return reglBuffer\n }\n\n function setSubData (data, offset) {\n \n\n gl.bufferSubData(buffer.type, offset, data)\n }\n\n function subdata (data, offset_) {\n var offset = (offset_ || 0) | 0\n var shape\n buffer.bind()\n if (isTypedArray(data) || data instanceof ArrayBuffer) {\n setSubData(data, offset)\n } else if (Array.isArray(data)) {\n if (data.length > 0) {\n if (typeof data[0] === 'number') {\n var converted = pool.allocType(buffer.dtype, data.length)\n copyArray(converted, data)\n setSubData(converted, offset)\n pool.freeType(converted)\n } else if (Array.isArray(data[0]) || isTypedArray(data[0])) {\n shape = arrayShape(data)\n var flatData = arrayFlatten(data, shape, buffer.dtype)\n setSubData(flatData, offset)\n pool.freeType(flatData)\n } else {\n \n }\n }\n } else if (isNDArrayLike(data)) {\n shape = data.shape\n var stride = data.stride\n\n var shapeX = 0\n var shapeY = 0\n var strideX = 0\n var strideY = 0\n if (shape.length === 1) {\n shapeX = shape[0]\n shapeY = 1\n strideX = stride[0]\n strideY = 0\n } else if (shape.length === 2) {\n shapeX = shape[0]\n shapeY = shape[1]\n strideX = stride[0]\n strideY = stride[1]\n } else {\n \n }\n var dtype = Array.isArray(data.data)\n ? buffer.dtype\n : typedArrayCode(data.data)\n\n var transposeData = pool.allocType(dtype, shapeX * shapeY)\n transpose(transposeData,\n data.data,\n shapeX, shapeY,\n strideX, strideY,\n data.offset)\n setSubData(transposeData, offset)\n pool.freeType(transposeData)\n } else {\n \n }\n return reglBuffer\n }\n\n if (!deferInit) {\n reglBuffer(options)\n }\n\n reglBuffer._reglType = 'buffer'\n reglBuffer._buffer = buffer\n reglBuffer.subdata = subdata\n if (config.profile) {\n reglBuffer.stats = buffer.stats\n }\n reglBuffer.destroy = function () { destroy(buffer) }\n\n return reglBuffer\n }\n\n function restoreBuffers () {\n values(bufferSet).forEach(function (buffer) {\n buffer.buffer = gl.createBuffer()\n gl.bindBuffer(buffer.type, buffer.buffer)\n gl.bufferData(\n buffer.type, buffer.persistentData || buffer.byteLength, buffer.usage)\n })\n }\n\n if (config.profile) {\n stats.getTotalBufferSize = function () {\n var total = 0\n // TODO: Right now, the streams are not part of the total count.\n Object.keys(bufferSet).forEach(function (key) {\n total += bufferSet[key].stats.size\n })\n return total\n }\n }\n\n return {\n create: createBuffer,\n\n createStream: createStream,\n destroyStream: destroyStream,\n\n clear: function () {\n values(bufferSet).forEach(destroy)\n streamPool.forEach(destroy)\n },\n\n getBuffer: function (wrapper) {\n if (wrapper && wrapper._buffer instanceof REGLBuffer) {\n return wrapper._buffer\n }\n return null\n },\n\n restore: restoreBuffers,\n\n _initBuffer: initBufferFromData\n }\n}\n\nvar points = 0;\nvar point = 0;\nvar lines = 1;\nvar line = 1;\nvar triangles = 4;\nvar triangle = 4;\nvar primTypes = {\n\tpoints: points,\n\tpoint: point,\n\tlines: lines,\n\tline: line,\n\ttriangles: triangles,\n\ttriangle: triangle,\n\t\"line loop\": 2,\n\t\"line strip\": 3,\n\t\"triangle strip\": 5,\n\t\"triangle fan\": 6\n};\n\nvar GL_POINTS = 0\nvar GL_LINES = 1\nvar GL_TRIANGLES = 4\n\nvar GL_BYTE$1 = 5120\nvar GL_UNSIGNED_BYTE$3 = 5121\nvar GL_SHORT$1 = 5122\nvar GL_UNSIGNED_SHORT$1 = 5123\nvar GL_INT$1 = 5124\nvar GL_UNSIGNED_INT$1 = 5125\n\nvar GL_ELEMENT_ARRAY_BUFFER = 34963\n\nvar GL_STREAM_DRAW$1 = 0x88E0\nvar GL_STATIC_DRAW$1 = 0x88E4\n\nfunction wrapElementsState (gl, extensions, bufferState, stats) {\n var elementSet = {}\n var elementCount = 0\n\n var elementTypes = {\n 'uint8': GL_UNSIGNED_BYTE$3,\n 'uint16': GL_UNSIGNED_SHORT$1\n }\n\n if (extensions.oes_element_index_uint) {\n elementTypes.uint32 = GL_UNSIGNED_INT$1\n }\n\n function REGLElementBuffer (buffer) {\n this.id = elementCount++\n elementSet[this.id] = this\n this.buffer = buffer\n this.primType = GL_TRIANGLES\n this.vertCount = 0\n this.type = 0\n }\n\n REGLElementBuffer.prototype.bind = function () {\n this.buffer.bind()\n }\n\n var bufferPool = []\n\n function createElementStream (data) {\n var result = bufferPool.pop()\n if (!result) {\n result = new REGLElementBuffer(bufferState.create(\n null,\n GL_ELEMENT_ARRAY_BUFFER,\n true,\n false)._buffer)\n }\n initElements(result, data, GL_STREAM_DRAW$1, -1, -1, 0, 0)\n return result\n }\n\n function destroyElementStream (elements) {\n bufferPool.push(elements)\n }\n\n function initElements (\n elements,\n data,\n usage,\n prim,\n count,\n byteLength,\n type) {\n elements.buffer.bind()\n var dtype\n if (data) {\n var predictedType = type\n if (!type && (\n !isTypedArray(data) ||\n (isNDArrayLike(data) && !isTypedArray(data.data)))) {\n predictedType = extensions.oes_element_index_uint\n ? GL_UNSIGNED_INT$1\n : GL_UNSIGNED_SHORT$1\n }\n bufferState._initBuffer(\n elements.buffer,\n data,\n usage,\n predictedType,\n 3)\n } else {\n gl.bufferData(GL_ELEMENT_ARRAY_BUFFER, byteLength, usage)\n elements.buffer.dtype = dtype || GL_UNSIGNED_BYTE$3\n elements.buffer.usage = usage\n elements.buffer.dimension = 3\n elements.buffer.byteLength = byteLength\n }\n\n dtype = type\n if (!type) {\n switch (elements.buffer.dtype) {\n case GL_UNSIGNED_BYTE$3:\n case GL_BYTE$1:\n dtype = GL_UNSIGNED_BYTE$3\n break\n\n case GL_UNSIGNED_SHORT$1:\n case GL_SHORT$1:\n dtype = GL_UNSIGNED_SHORT$1\n break\n\n case GL_UNSIGNED_INT$1:\n case GL_INT$1:\n dtype = GL_UNSIGNED_INT$1\n break\n\n default:\n \n }\n elements.buffer.dtype = dtype\n }\n elements.type = dtype\n\n // Check oes_element_index_uint extension\n \n\n // try to guess default primitive type and arguments\n var vertCount = count\n if (vertCount < 0) {\n vertCount = elements.buffer.byteLength\n if (dtype === GL_UNSIGNED_SHORT$1) {\n vertCount >>= 1\n } else if (dtype === GL_UNSIGNED_INT$1) {\n vertCount >>= 2\n }\n }\n elements.vertCount = vertCount\n\n // try to guess primitive type from cell dimension\n var primType = prim\n if (prim < 0) {\n primType = GL_TRIANGLES\n var dimension = elements.buffer.dimension\n if (dimension === 1) primType = GL_POINTS\n if (dimension === 2) primType = GL_LINES\n if (dimension === 3) primType = GL_TRIANGLES\n }\n elements.primType = primType\n }\n\n function destroyElements (elements) {\n stats.elementsCount--\n\n \n delete elementSet[elements.id]\n elements.buffer.destroy()\n elements.buffer = null\n }\n\n function createElements (options, persistent) {\n var buffer = bufferState.create(null, GL_ELEMENT_ARRAY_BUFFER, true)\n var elements = new REGLElementBuffer(buffer._buffer)\n stats.elementsCount++\n\n function reglElements (options) {\n if (!options) {\n buffer()\n elements.primType = GL_TRIANGLES\n elements.vertCount = 0\n elements.type = GL_UNSIGNED_BYTE$3\n } else if (typeof options === 'number') {\n buffer(options)\n elements.primType = GL_TRIANGLES\n elements.vertCount = options | 0\n elements.type = GL_UNSIGNED_BYTE$3\n } else {\n var data = null\n var usage = GL_STATIC_DRAW$1\n var primType = -1\n var vertCount = -1\n var byteLength = 0\n var dtype = 0\n if (Array.isArray(options) ||\n isTypedArray(options) ||\n isNDArrayLike(options)) {\n data = options\n } else {\n \n if ('data' in options) {\n data = options.data\n \n }\n if ('usage' in options) {\n \n usage = usageTypes[options.usage]\n }\n if ('primitive' in options) {\n \n primType = primTypes[options.primitive]\n }\n if ('count' in options) {\n \n vertCount = options.count | 0\n }\n if ('type' in options) {\n \n dtype = elementTypes[options.type]\n }\n if ('length' in options) {\n byteLength = options.length | 0\n } else {\n byteLength = vertCount\n if (dtype === GL_UNSIGNED_SHORT$1 || dtype === GL_SHORT$1) {\n byteLength *= 2\n } else if (dtype === GL_UNSIGNED_INT$1 || dtype === GL_INT$1) {\n byteLength *= 4\n }\n }\n }\n initElements(\n elements,\n data,\n usage,\n primType,\n vertCount,\n byteLength,\n dtype)\n }\n\n return reglElements\n }\n\n reglElements(options)\n\n reglElements._reglType = 'elements'\n reglElements._elements = elements\n reglElements.subdata = function (data, offset) {\n buffer.subdata(data, offset)\n return reglElements\n }\n reglElements.destroy = function () {\n destroyElements(elements)\n }\n\n return reglElements\n }\n\n return {\n create: createElements,\n createStream: createElementStream,\n destroyStream: destroyElementStream,\n getElements: function (elements) {\n if (typeof elements === 'function' &&\n elements._elements instanceof REGLElementBuffer) {\n return elements._elements\n }\n return null\n },\n clear: function () {\n values(elementSet).forEach(destroyElements)\n }\n }\n}\n\nvar FLOAT = new Float32Array(1)\nvar INT = new Uint32Array(FLOAT.buffer)\n\nvar GL_UNSIGNED_SHORT$3 = 5123\n\nfunction convertToHalfFloat (array) {\n var ushorts = pool.allocType(GL_UNSIGNED_SHORT$3, array.length)\n\n for (var i = 0; i < array.length; ++i) {\n if (isNaN(array[i])) {\n ushorts[i] = 0xffff\n } else if (array[i] === Infinity) {\n ushorts[i] = 0x7c00\n } else if (array[i] === -Infinity) {\n ushorts[i] = 0xfc00\n } else {\n FLOAT[0] = array[i]\n var x = INT[0]\n\n var sgn = (x >>> 31) << 15\n var exp = ((x << 1) >>> 24) - 127\n var frac = (x >> 13) & ((1 << 10) - 1)\n\n if (exp < -24) {\n // round non-representable denormals to 0\n ushorts[i] = sgn\n } else if (exp < -14) {\n // handle denormals\n var s = -14 - exp\n ushorts[i] = sgn + ((frac + (1 << 10)) >> s)\n } else if (exp > 15) {\n // round overflow to +/- Infinity\n ushorts[i] = sgn + 0x7c00\n } else {\n // otherwise convert directly\n ushorts[i] = sgn + ((exp + 15) << 10) + frac\n }\n }\n }\n\n return ushorts\n}\n\nfunction isArrayLike (s) {\n return Array.isArray(s) || isTypedArray(s)\n}\n\nvar GL_COMPRESSED_TEXTURE_FORMATS = 0x86A3\n\nvar GL_TEXTURE_2D$1 = 0x0DE1\nvar GL_TEXTURE_CUBE_MAP$1 = 0x8513\nvar GL_TEXTURE_CUBE_MAP_POSITIVE_X$1 = 0x8515\n\nvar GL_RGBA$1 = 0x1908\nvar GL_ALPHA = 0x1906\nvar GL_RGB = 0x1907\nvar GL_LUMINANCE = 0x1909\nvar GL_LUMINANCE_ALPHA = 0x190A\n\nvar GL_RGBA4 = 0x8056\nvar GL_RGB5_A1 = 0x8057\nvar GL_RGB565 = 0x8D62\n\nvar GL_UNSIGNED_SHORT_4_4_4_4 = 0x8033\nvar GL_UNSIGNED_SHORT_5_5_5_1 = 0x8034\nvar GL_UNSIGNED_SHORT_5_6_5 = 0x8363\nvar GL_UNSIGNED_INT_24_8_WEBGL = 0x84FA\n\nvar GL_DEPTH_COMPONENT = 0x1902\nvar GL_DEPTH_STENCIL = 0x84F9\n\nvar GL_SRGB_EXT = 0x8C40\nvar GL_SRGB_ALPHA_EXT = 0x8C42\n\nvar GL_HALF_FLOAT_OES = 0x8D61\n\nvar GL_COMPRESSED_RGB_S3TC_DXT1_EXT = 0x83F0\nvar GL_COMPRESSED_RGBA_S3TC_DXT1_EXT = 0x83F1\nvar GL_COMPRESSED_RGBA_S3TC_DXT3_EXT = 0x83F2\nvar GL_COMPRESSED_RGBA_S3TC_DXT5_EXT = 0x83F3\n\nvar GL_COMPRESSED_RGB_ATC_WEBGL = 0x8C92\nvar GL_COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL = 0x8C93\nvar GL_COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL = 0x87EE\n\nvar GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG = 0x8C00\nvar GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG = 0x8C01\nvar GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG = 0x8C02\nvar GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG = 0x8C03\n\nvar GL_COMPRESSED_RGB_ETC1_WEBGL = 0x8D64\n\nvar GL_UNSIGNED_BYTE$4 = 0x1401\nvar GL_UNSIGNED_SHORT$2 = 0x1403\nvar GL_UNSIGNED_INT$2 = 0x1405\nvar GL_FLOAT$3 = 0x1406\n\nvar GL_TEXTURE_WRAP_S = 0x2802\nvar GL_TEXTURE_WRAP_T = 0x2803\n\nvar GL_REPEAT = 0x2901\nvar GL_CLAMP_TO_EDGE = 0x812F\nvar GL_MIRRORED_REPEAT = 0x8370\n\nvar GL_TEXTURE_MAG_FILTER = 0x2800\nvar GL_TEXTURE_MIN_FILTER = 0x2801\n\nvar GL_NEAREST = 0x2600\nvar GL_LINEAR = 0x2601\nvar GL_NEAREST_MIPMAP_NEAREST = 0x2700\nvar GL_LINEAR_MIPMAP_NEAREST = 0x2701\nvar GL_NEAREST_MIPMAP_LINEAR = 0x2702\nvar GL_LINEAR_MIPMAP_LINEAR = 0x2703\n\nvar GL_GENERATE_MIPMAP_HINT = 0x8192\nvar GL_DONT_CARE = 0x1100\nvar GL_FASTEST = 0x1101\nvar GL_NICEST = 0x1102\n\nvar GL_TEXTURE_MAX_ANISOTROPY_EXT = 0x84FE\n\nvar GL_UNPACK_ALIGNMENT = 0x0CF5\nvar GL_UNPACK_FLIP_Y_WEBGL = 0x9240\nvar GL_UNPACK_PREMULTIPLY_ALPHA_WEBGL = 0x9241\nvar GL_UNPACK_COLORSPACE_CONVERSION_WEBGL = 0x9243\n\nvar GL_BROWSER_DEFAULT_WEBGL = 0x9244\n\nvar GL_TEXTURE0$1 = 0x84C0\n\nvar MIPMAP_FILTERS = [\n GL_NEAREST_MIPMAP_NEAREST,\n GL_NEAREST_MIPMAP_LINEAR,\n GL_LINEAR_MIPMAP_NEAREST,\n GL_LINEAR_MIPMAP_LINEAR\n]\n\nvar CHANNELS_FORMAT = [\n 0,\n GL_LUMINANCE,\n GL_LUMINANCE_ALPHA,\n GL_RGB,\n GL_RGBA$1\n]\n\nvar FORMAT_CHANNELS = {}\nFORMAT_CHANNELS[GL_LUMINANCE] =\nFORMAT_CHANNELS[GL_ALPHA] =\nFORMAT_CHANNELS[GL_DEPTH_COMPONENT] = 1\nFORMAT_CHANNELS[GL_DEPTH_STENCIL] =\nFORMAT_CHANNELS[GL_LUMINANCE_ALPHA] = 2\nFORMAT_CHANNELS[GL_RGB] =\nFORMAT_CHANNELS[GL_SRGB_EXT] = 3\nFORMAT_CHANNELS[GL_RGBA$1] =\nFORMAT_CHANNELS[GL_SRGB_ALPHA_EXT] = 4\n\nfunction objectName (str) {\n return '[object ' + str + ']'\n}\n\nvar CANVAS_CLASS = objectName('HTMLCanvasElement')\nvar OFFSCREENCANVAS_CLASS = objectName('OffscreenCanvas')\nvar CONTEXT2D_CLASS = objectName('CanvasRenderingContext2D')\nvar BITMAP_CLASS = objectName('ImageBitmap')\nvar IMAGE_CLASS = objectName('HTMLImageElement')\nvar VIDEO_CLASS = objectName('HTMLVideoElement')\n\nvar PIXEL_CLASSES = Object.keys(arrayTypes).concat([\n CANVAS_CLASS,\n OFFSCREENCANVAS_CLASS,\n CONTEXT2D_CLASS,\n BITMAP_CLASS,\n IMAGE_CLASS,\n VIDEO_CLASS\n])\n\n// for every texture type, store\n// the size in bytes.\nvar TYPE_SIZES = []\nTYPE_SIZES[GL_UNSIGNED_BYTE$4] = 1\nTYPE_SIZES[GL_FLOAT$3] = 4\nTYPE_SIZES[GL_HALF_FLOAT_OES] = 2\n\nTYPE_SIZES[GL_UNSIGNED_SHORT$2] = 2\nTYPE_SIZES[GL_UNSIGNED_INT$2] = 4\n\nvar FORMAT_SIZES_SPECIAL = []\nFORMAT_SIZES_SPECIAL[GL_RGBA4] = 2\nFORMAT_SIZES_SPECIAL[GL_RGB5_A1] = 2\nFORMAT_SIZES_SPECIAL[GL_RGB565] = 2\nFORMAT_SIZES_SPECIAL[GL_DEPTH_STENCIL] = 4\n\nFORMAT_SIZES_SPECIAL[GL_COMPRESSED_RGB_S3TC_DXT1_EXT] = 0.5\nFORMAT_SIZES_SPECIAL[GL_COMPRESSED_RGBA_S3TC_DXT1_EXT] = 0.5\nFORMAT_SIZES_SPECIAL[GL_COMPRESSED_RGBA_S3TC_DXT3_EXT] = 1\nFORMAT_SIZES_SPECIAL[GL_COMPRESSED_RGBA_S3TC_DXT5_EXT] = 1\n\nFORMAT_SIZES_SPECIAL[GL_COMPRESSED_RGB_ATC_WEBGL] = 0.5\nFORMAT_SIZES_SPECIAL[GL_COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL] = 1\nFORMAT_SIZES_SPECIAL[GL_COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL] = 1\n\nFORMAT_SIZES_SPECIAL[GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG] = 0.5\nFORMAT_SIZES_SPECIAL[GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG] = 0.25\nFORMAT_SIZES_SPECIAL[GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG] = 0.5\nFORMAT_SIZES_SPECIAL[GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG] = 0.25\n\nFORMAT_SIZES_SPECIAL[GL_COMPRESSED_RGB_ETC1_WEBGL] = 0.5\n\nfunction isNumericArray (arr) {\n return (\n Array.isArray(arr) &&\n (arr.length === 0 ||\n typeof arr[0] === 'number'))\n}\n\nfunction isRectArray (arr) {\n if (!Array.isArray(arr)) {\n return false\n }\n var width = arr.length\n if (width === 0 || !isArrayLike(arr[0])) {\n return false\n }\n return true\n}\n\nfunction classString (x) {\n return Object.prototype.toString.call(x)\n}\n\nfunction isCanvasElement (object) {\n return classString(object) === CANVAS_CLASS\n}\n\nfunction isOffscreenCanvas (object) {\n return classString(object) === OFFSCREENCANVAS_CLASS\n}\n\nfunction isContext2D (object) {\n return classString(object) === CONTEXT2D_CLASS\n}\n\nfunction isBitmap (object) {\n return classString(object) === BITMAP_CLASS\n}\n\nfunction isImageElement (object) {\n return classString(object) === IMAGE_CLASS\n}\n\nfunction isVideoElement (object) {\n return classString(object) === VIDEO_CLASS\n}\n\nfunction isPixelData (object) {\n if (!object) {\n return false\n }\n var className = classString(object)\n if (PIXEL_CLASSES.indexOf(className) >= 0) {\n return true\n }\n return (\n isNumericArray(object) ||\n isRectArray(object) ||\n isNDArrayLike(object))\n}\n\nfunction typedArrayCode$1 (data) {\n return arrayTypes[Object.prototype.toString.call(data)] | 0\n}\n\nfunction convertData (result, data) {\n var n = data.length\n switch (result.type) {\n case GL_UNSIGNED_BYTE$4:\n case GL_UNSIGNED_SHORT$2:\n case GL_UNSIGNED_INT$2:\n case GL_FLOAT$3:\n var converted = pool.allocType(result.type, n)\n converted.set(data)\n result.data = converted\n break\n\n case GL_HALF_FLOAT_OES:\n result.data = convertToHalfFloat(data)\n break\n\n default:\n \n }\n}\n\nfunction preConvert (image, n) {\n return pool.allocType(\n image.type === GL_HALF_FLOAT_OES\n ? GL_FLOAT$3\n : image.type, n)\n}\n\nfunction postConvert (image, data) {\n if (image.type === GL_HALF_FLOAT_OES) {\n image.data = convertToHalfFloat(data)\n pool.freeType(data)\n } else {\n image.data = data\n }\n}\n\nfunction transposeData (image, array, strideX, strideY, strideC, offset) {\n var w = image.width\n var h = image.height\n var c = image.channels\n var n = w * h * c\n var data = preConvert(image, n)\n\n var p = 0\n for (var i = 0; i < h; ++i) {\n for (var j = 0; j < w; ++j) {\n for (var k = 0; k < c; ++k) {\n data[p++] = array[strideX * j + strideY * i + strideC * k + offset]\n }\n }\n }\n\n postConvert(image, data)\n}\n\nfunction getTextureSize (format, type, width, height, isMipmap, isCube) {\n var s\n if (typeof FORMAT_SIZES_SPECIAL[format] !== 'undefined') {\n // we have a special array for dealing with weird color formats such as RGB5A1\n s = FORMAT_SIZES_SPECIAL[format]\n } else {\n s = FORMAT_CHANNELS[format] * TYPE_SIZES[type]\n }\n\n if (isCube) {\n s *= 6\n }\n\n if (isMipmap) {\n // compute the total size of all the mipmaps.\n var total = 0\n\n var w = width\n while (w >= 1) {\n // we can only use mipmaps on a square image,\n // so we can simply use the width and ignore the height:\n total += s * w * w\n w /= 2\n }\n return total\n } else {\n return s * width * height\n }\n}\n\nfunction createTextureSet (\n gl, extensions, limits, reglPoll, contextState, stats, config) {\n // -------------------------------------------------------\n // Initialize constants and parameter tables here\n // -------------------------------------------------------\n var mipmapHint = {\n \"don't care\": GL_DONT_CARE,\n 'dont care': GL_DONT_CARE,\n 'nice': GL_NICEST,\n 'fast': GL_FASTEST\n }\n\n var wrapModes = {\n 'repeat': GL_REPEAT,\n 'clamp': GL_CLAMP_TO_EDGE,\n 'mirror': GL_MIRRORED_REPEAT\n }\n\n var magFilters = {\n 'nearest': GL_NEAREST,\n 'linear': GL_LINEAR\n }\n\n var minFilters = extend({\n 'mipmap': GL_LINEAR_MIPMAP_LINEAR,\n 'nearest mipmap nearest': GL_NEAREST_MIPMAP_NEAREST,\n 'linear mipmap nearest': GL_LINEAR_MIPMAP_NEAREST,\n 'nearest mipmap linear': GL_NEAREST_MIPMAP_LINEAR,\n 'linear mipmap linear': GL_LINEAR_MIPMAP_LINEAR\n }, magFilters)\n\n var colorSpace = {\n 'none': 0,\n 'browser': GL_BROWSER_DEFAULT_WEBGL\n }\n\n var textureTypes = {\n 'uint8': GL_UNSIGNED_BYTE$4,\n 'rgba4': GL_UNSIGNED_SHORT_4_4_4_4,\n 'rgb565': GL_UNSIGNED_SHORT_5_6_5,\n 'rgb5 a1': GL_UNSIGNED_SHORT_5_5_5_1\n }\n\n var textureFormats = {\n 'alpha': GL_ALPHA,\n 'luminance': GL_LUMINANCE,\n 'luminance alpha': GL_LUMINANCE_ALPHA,\n 'rgb': GL_RGB,\n 'rgba': GL_RGBA$1,\n 'rgba4': GL_RGBA4,\n 'rgb5 a1': GL_RGB5_A1,\n 'rgb565': GL_RGB565\n }\n\n var compressedTextureFormats = {}\n\n if (extensions.ext_srgb) {\n textureFormats.srgb = GL_SRGB_EXT\n textureFormats.srgba = GL_SRGB_ALPHA_EXT\n }\n\n if (extensions.oes_texture_float) {\n textureTypes.float32 = textureTypes.float = GL_FLOAT$3\n }\n\n if (extensions.oes_texture_half_float) {\n textureTypes['float16'] = textureTypes['half float'] = GL_HALF_FLOAT_OES\n }\n\n if (extensions.webgl_depth_texture) {\n extend(textureFormats, {\n 'depth': GL_DEPTH_COMPONENT,\n 'depth stencil': GL_DEPTH_STENCIL\n })\n\n extend(textureTypes, {\n 'uint16': GL_UNSIGNED_SHORT$2,\n 'uint32': GL_UNSIGNED_INT$2,\n 'depth stencil': GL_UNSIGNED_INT_24_8_WEBGL\n })\n }\n\n if (extensions.webgl_compressed_texture_s3tc) {\n extend(compressedTextureFormats, {\n 'rgb s3tc dxt1': GL_COMPRESSED_RGB_S3TC_DXT1_EXT,\n 'rgba s3tc dxt1': GL_COMPRESSED_RGBA_S3TC_DXT1_EXT,\n 'rgba s3tc dxt3': GL_COMPRESSED_RGBA_S3TC_DXT3_EXT,\n 'rgba s3tc dxt5': GL_COMPRESSED_RGBA_S3TC_DXT5_EXT\n })\n }\n\n if (extensions.webgl_compressed_texture_atc) {\n extend(compressedTextureFormats, {\n 'rgb atc': GL_COMPRESSED_RGB_ATC_WEBGL,\n 'rgba atc explicit alpha': GL_COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL,\n 'rgba atc interpolated alpha': GL_COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL\n })\n }\n\n if (extensions.webgl_compressed_texture_pvrtc) {\n extend(compressedTextureFormats, {\n 'rgb pvrtc 4bppv1': GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG,\n 'rgb pvrtc 2bppv1': GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG,\n 'rgba pvrtc 4bppv1': GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG,\n 'rgba pvrtc 2bppv1': GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG\n })\n }\n\n if (extensions.webgl_compressed_texture_etc1) {\n compressedTextureFormats['rgb etc1'] = GL_COMPRESSED_RGB_ETC1_WEBGL\n }\n\n // Copy over all texture formats\n var supportedCompressedFormats = Array.prototype.slice.call(\n gl.getParameter(GL_COMPRESSED_TEXTURE_FORMATS))\n Object.keys(compressedTextureFormats).forEach(function (name) {\n var format = compressedTextureFormats[name]\n if (supportedCompressedFormats.indexOf(format) >= 0) {\n textureFormats[name] = format\n }\n })\n\n var supportedFormats = Object.keys(textureFormats)\n limits.textureFormats = supportedFormats\n\n // associate with every format string its\n // corresponding GL-value.\n var textureFormatsInvert = []\n Object.keys(textureFormats).forEach(function (key) {\n var val = textureFormats[key]\n textureFormatsInvert[val] = key\n })\n\n // associate with every type string its\n // corresponding GL-value.\n var textureTypesInvert = []\n Object.keys(textureTypes).forEach(function (key) {\n var val = textureTypes[key]\n textureTypesInvert[val] = key\n })\n\n var magFiltersInvert = []\n Object.keys(magFilters).forEach(function (key) {\n var val = magFilters[key]\n magFiltersInvert[val] = key\n })\n\n var minFiltersInvert = []\n Object.keys(minFilters).forEach(function (key) {\n var val = minFilters[key]\n minFiltersInvert[val] = key\n })\n\n var wrapModesInvert = []\n Object.keys(wrapModes).forEach(function (key) {\n var val = wrapModes[key]\n wrapModesInvert[val] = key\n })\n\n // colorFormats[] gives the format (channels) associated to an\n // internalformat\n var colorFormats = supportedFormats.reduce(function (color, key) {\n var glenum = textureFormats[key]\n if (glenum === GL_LUMINANCE ||\n glenum === GL_ALPHA ||\n glenum === GL_LUMINANCE ||\n glenum === GL_LUMINANCE_ALPHA ||\n glenum === GL_DEPTH_COMPONENT ||\n glenum === GL_DEPTH_STENCIL ||\n (extensions.ext_srgb &&\n (glenum === GL_SRGB_EXT ||\n glenum === GL_SRGB_ALPHA_EXT))) {\n color[glenum] = glenum\n } else if (glenum === GL_RGB5_A1 || key.indexOf('rgba') >= 0) {\n color[glenum] = GL_RGBA$1\n } else {\n color[glenum] = GL_RGB\n }\n return color\n }, {})\n\n function TexFlags () {\n // format info\n this.internalformat = GL_RGBA$1\n this.format = GL_RGBA$1\n this.type = GL_UNSIGNED_BYTE$4\n this.compressed = false\n\n // pixel storage\n this.premultiplyAlpha = false\n this.flipY = false\n this.unpackAlignment = 1\n this.colorSpace = GL_BROWSER_DEFAULT_WEBGL\n\n // shape info\n this.width = 0\n this.height = 0\n this.channels = 0\n }\n\n function copyFlags (result, other) {\n result.internalformat = other.internalformat\n result.format = other.format\n result.type = other.type\n result.compressed = other.compressed\n\n result.premultiplyAlpha = other.premultiplyAlpha\n result.flipY = other.flipY\n result.unpackAlignment = other.unpackAlignment\n result.colorSpace = other.colorSpace\n\n result.width = other.width\n result.height = other.height\n result.channels = other.channels\n }\n\n function parseFlags (flags, options) {\n if (typeof options !== 'object' || !options) {\n return\n }\n\n if ('premultiplyAlpha' in options) {\n \n flags.premultiplyAlpha = options.premultiplyAlpha\n }\n\n if ('flipY' in options) {\n \n flags.flipY = options.flipY\n }\n\n if ('alignment' in options) {\n \n flags.unpackAlignment = options.alignment\n }\n\n if ('colorSpace' in options) {\n \n flags.colorSpace = colorSpace[options.colorSpace]\n }\n\n if ('type' in options) {\n var type = options.type\n \n \n \n \n flags.type = textureTypes[type]\n }\n\n var w = flags.width\n var h = flags.height\n var c = flags.channels\n var hasChannels = false\n if ('shape' in options) {\n \n w = options.shape[0]\n h = options.shape[1]\n if (options.shape.length === 3) {\n c = options.shape[2]\n \n hasChannels = true\n }\n \n \n } else {\n if ('radius' in options) {\n w = h = options.radius\n \n }\n if ('width' in options) {\n w = options.width\n \n }\n if ('height' in options) {\n h = options.height\n \n }\n if ('channels' in options) {\n c = options.channels\n \n hasChannels = true\n }\n }\n flags.width = w | 0\n flags.height = h | 0\n flags.channels = c | 0\n\n var hasFormat = false\n if ('format' in options) {\n var formatStr = options.format\n \n \n var internalformat = flags.internalformat = textureFormats[formatStr]\n flags.format = colorFormats[internalformat]\n if (formatStr in textureTypes) {\n if (!('type' in options)) {\n flags.type = textureTypes[formatStr]\n }\n }\n if (formatStr in compressedTextureFormats) {\n flags.compressed = true\n }\n hasFormat = true\n }\n\n // Reconcile channels and format\n if (!hasChannels && hasFormat) {\n flags.channels = FORMAT_CHANNELS[flags.format]\n } else if (hasChannels && !hasFormat) {\n if (flags.channels !== CHANNELS_FORMAT[flags.format]) {\n flags.format = flags.internalformat = CHANNELS_FORMAT[flags.channels]\n }\n } else if (hasFormat && hasChannels) {\n \n }\n }\n\n function setFlags (flags) {\n gl.pixelStorei(GL_UNPACK_FLIP_Y_WEBGL, flags.flipY)\n gl.pixelStorei(GL_UNPACK_PREMULTIPLY_ALPHA_WEBGL, flags.premultiplyAlpha)\n gl.pixelStorei(GL_UNPACK_COLORSPACE_CONVERSION_WEBGL, flags.colorSpace)\n gl.pixelStorei(GL_UNPACK_ALIGNMENT, flags.unpackAlignment)\n }\n\n // -------------------------------------------------------\n // Tex image data\n // -------------------------------------------------------\n function TexImage () {\n TexFlags.call(this)\n\n this.xOffset = 0\n this.yOffset = 0\n\n // data\n this.data = null\n this.needsFree = false\n\n // html element\n this.element = null\n\n // copyTexImage info\n this.needsCopy = false\n }\n\n function parseImage (image, options) {\n var data = null\n if (isPixelData(options)) {\n data = options\n } else if (options) {\n \n parseFlags(image, options)\n if ('x' in options) {\n image.xOffset = options.x | 0\n }\n if ('y' in options) {\n image.yOffset = options.y | 0\n }\n if (isPixelData(options.data)) {\n data = options.data\n }\n }\n\n \n\n if (options.copy) {\n \n var viewW = contextState.viewportWidth\n var viewH = contextState.viewportHeight\n image.width = image.width || (viewW - image.xOffset)\n image.height = image.height || (viewH - image.yOffset)\n image.needsCopy = true\n \n } else if (!data) {\n image.width = image.width || 1\n image.height = image.height || 1\n image.channels = image.channels || 4\n } else if (isTypedArray(data)) {\n image.channels = image.channels || 4\n image.data = data\n if (!('type' in options) && image.type === GL_UNSIGNED_BYTE$4) {\n image.type = typedArrayCode$1(data)\n }\n } else if (isNumericArray(data)) {\n image.channels = image.channels || 4\n convertData(image, data)\n image.alignment = 1\n image.needsFree = true\n } else if (isNDArrayLike(data)) {\n var array = data.data\n if (!Array.isArray(array) && image.type === GL_UNSIGNED_BYTE$4) {\n image.type = typedArrayCode$1(array)\n }\n var shape = data.shape\n var stride = data.stride\n var shapeX, shapeY, shapeC, strideX, strideY, strideC\n if (shape.length === 3) {\n shapeC = shape[2]\n strideC = stride[2]\n } else {\n \n shapeC = 1\n strideC = 1\n }\n shapeX = shape[0]\n shapeY = shape[1]\n strideX = stride[0]\n strideY = stride[1]\n image.alignment = 1\n image.width = shapeX\n image.height = shapeY\n image.channels = shapeC\n image.format = image.internalformat = CHANNELS_FORMAT[shapeC]\n image.needsFree = true\n transposeData(image, array, strideX, strideY, strideC, data.offset)\n } else if (isCanvasElement(data) || isOffscreenCanvas(data) || isContext2D(data)) {\n if (isCanvasElement(data) || isOffscreenCanvas(data)) {\n image.element = data\n } else {\n image.element = data.canvas\n }\n image.width = image.element.width\n image.height = image.element.height\n image.channels = 4\n } else if (isBitmap(data)) {\n image.element = data\n image.width = data.width\n image.height = data.height\n image.channels = 4\n } else if (isImageElement(data)) {\n image.element = data\n image.width = data.naturalWidth\n image.height = data.naturalHeight\n image.channels = 4\n } else if (isVideoElement(data)) {\n image.element = data\n image.width = data.videoWidth\n image.height = data.videoHeight\n image.channels = 4\n } else if (isRectArray(data)) {\n var w = image.width || data[0].length\n var h = image.height || data.length\n var c = image.channels\n if (isArrayLike(data[0][0])) {\n c = c || data[0][0].length\n } else {\n c = c || 1\n }\n var arrayShape = flattenUtils.shape(data)\n var n = 1\n for (var dd = 0; dd < arrayShape.length; ++dd) {\n n *= arrayShape[dd]\n }\n var allocData = preConvert(image, n)\n flattenUtils.flatten(data, arrayShape, '', allocData)\n postConvert(image, allocData)\n image.alignment = 1\n image.width = w\n image.height = h\n image.channels = c\n image.format = image.internalformat = CHANNELS_FORMAT[c]\n image.needsFree = true\n }\n\n if (image.type === GL_FLOAT$3) {\n \n } else if (image.type === GL_HALF_FLOAT_OES) {\n \n }\n\n // do compressed texture validation here.\n }\n\n function setImage (info, target, miplevel) {\n var element = info.element\n var data = info.data\n var internalformat = info.internalformat\n var format = info.format\n var type = info.type\n var width = info.width\n var height = info.height\n\n setFlags(info)\n\n if (element) {\n gl.texImage2D(target, miplevel, format, format, type, element)\n } else if (info.compressed) {\n gl.compressedTexImage2D(target, miplevel, internalformat, width, height, 0, data)\n } else if (info.needsCopy) {\n reglPoll()\n gl.copyTexImage2D(\n target, miplevel, format, info.xOffset, info.yOffset, width, height, 0)\n } else {\n gl.texImage2D(target, miplevel, format, width, height, 0, format, type, data || null)\n }\n }\n\n function setSubImage (info, target, x, y, miplevel) {\n var element = info.element\n var data = info.data\n var internalformat = info.internalformat\n var format = info.format\n var type = info.type\n var width = info.width\n var height = info.height\n\n setFlags(info)\n\n if (element) {\n gl.texSubImage2D(\n target, miplevel, x, y, format, type, element)\n } else if (info.compressed) {\n gl.compressedTexSubImage2D(\n target, miplevel, x, y, internalformat, width, height, data)\n } else if (info.needsCopy) {\n reglPoll()\n gl.copyTexSubImage2D(\n target, miplevel, x, y, info.xOffset, info.yOffset, width, height)\n } else {\n gl.texSubImage2D(\n target, miplevel, x, y, width, height, format, type, data)\n }\n }\n\n // texImage pool\n var imagePool = []\n\n function allocImage () {\n return imagePool.pop() || new TexImage()\n }\n\n function freeImage (image) {\n if (image.needsFree) {\n pool.freeType(image.data)\n }\n TexImage.call(image)\n imagePool.push(image)\n }\n\n // -------------------------------------------------------\n // Mip map\n // -------------------------------------------------------\n function MipMap () {\n TexFlags.call(this)\n\n this.genMipmaps = false\n this.mipmapHint = GL_DONT_CARE\n this.mipmask = 0\n this.images = Array(16)\n }\n\n function parseMipMapFromShape (mipmap, width, height) {\n var img = mipmap.images[0] = allocImage()\n mipmap.mipmask = 1\n img.width = mipmap.width = width\n img.height = mipmap.height = height\n img.channels = mipmap.channels = 4\n }\n\n function parseMipMapFromObject (mipmap, options) {\n var imgData = null\n if (isPixelData(options)) {\n imgData = mipmap.images[0] = allocImage()\n copyFlags(imgData, mipmap)\n parseImage(imgData, options)\n mipmap.mipmask = 1\n } else {\n parseFlags(mipmap, options)\n if (Array.isArray(options.mipmap)) {\n var mipData = options.mipmap\n for (var i = 0; i < mipData.length; ++i) {\n imgData = mipmap.images[i] = allocImage()\n copyFlags(imgData, mipmap)\n imgData.width >>= i\n imgData.height >>= i\n parseImage(imgData, mipData[i])\n mipmap.mipmask |= (1 << i)\n }\n } else {\n imgData = mipmap.images[0] = allocImage()\n copyFlags(imgData, mipmap)\n parseImage(imgData, options)\n mipmap.mipmask = 1\n }\n }\n copyFlags(mipmap, mipmap.images[0])\n\n // For textures of the compressed format WEBGL_compressed_texture_s3tc\n // we must have that\n //\n // \"When level equals zero width and height must be a multiple of 4.\n // When level is greater than 0 width and height must be 0, 1, 2 or a multiple of 4. \"\n //\n // but we do not yet support having multiple mipmap levels for compressed textures,\n // so we only test for level zero.\n\n if (\n mipmap.compressed &&\n (\n mipmap.internalformat === GL_COMPRESSED_RGB_S3TC_DXT1_EXT ||\n mipmap.internalformat === GL_COMPRESSED_RGBA_S3TC_DXT1_EXT ||\n mipmap.internalformat === GL_COMPRESSED_RGBA_S3TC_DXT3_EXT ||\n mipmap.internalformat === GL_COMPRESSED_RGBA_S3TC_DXT5_EXT\n )\n ) {\n \n }\n }\n\n function setMipMap (mipmap, target) {\n var images = mipmap.images\n for (var i = 0; i < images.length; ++i) {\n if (!images[i]) {\n return\n }\n setImage(images[i], target, i)\n }\n }\n\n var mipPool = []\n\n function allocMipMap () {\n var result = mipPool.pop() || new MipMap()\n TexFlags.call(result)\n result.mipmask = 0\n for (var i = 0; i < 16; ++i) {\n result.images[i] = null\n }\n return result\n }\n\n function freeMipMap (mipmap) {\n var images = mipmap.images\n for (var i = 0; i < images.length; ++i) {\n if (images[i]) {\n freeImage(images[i])\n }\n images[i] = null\n }\n mipPool.push(mipmap)\n }\n\n // -------------------------------------------------------\n // Tex info\n // -------------------------------------------------------\n function TexInfo () {\n this.minFilter = GL_NEAREST\n this.magFilter = GL_NEAREST\n\n this.wrapS = GL_CLAMP_TO_EDGE\n this.wrapT = GL_CLAMP_TO_EDGE\n\n this.anisotropic = 1\n\n this.genMipmaps = false\n this.mipmapHint = GL_DONT_CARE\n }\n\n function parseTexInfo (info, options) {\n if ('min' in options) {\n var minFilter = options.min\n \n info.minFilter = minFilters[minFilter]\n if (MIPMAP_FILTERS.indexOf(info.minFilter) >= 0 && !('faces' in options)) {\n info.genMipmaps = true\n }\n }\n\n if ('mag' in options) {\n var magFilter = options.mag\n \n info.magFilter = magFilters[magFilter]\n }\n\n var wrapS = info.wrapS\n var wrapT = info.wrapT\n if ('wrap' in options) {\n var wrap = options.wrap\n if (typeof wrap === 'string') {\n \n wrapS = wrapT = wrapModes[wrap]\n } else if (Array.isArray(wrap)) {\n \n \n wrapS = wrapModes[wrap[0]]\n wrapT = wrapModes[wrap[1]]\n }\n } else {\n if ('wrapS' in options) {\n var optWrapS = options.wrapS\n \n wrapS = wrapModes[optWrapS]\n }\n if ('wrapT' in options) {\n var optWrapT = options.wrapT\n \n wrapT = wrapModes[optWrapT]\n }\n }\n info.wrapS = wrapS\n info.wrapT = wrapT\n\n if ('anisotropic' in options) {\n var anisotropic = options.anisotropic\n \n info.anisotropic = options.anisotropic\n }\n\n if ('mipmap' in options) {\n var hasMipMap = false\n switch (typeof options.mipmap) {\n case 'string':\n \n info.mipmapHint = mipmapHint[options.mipmap]\n info.genMipmaps = true\n hasMipMap = true\n break\n\n case 'boolean':\n hasMipMap = info.genMipmaps = options.mipmap\n break\n\n case 'object':\n \n info.genMipmaps = false\n hasMipMap = true\n break\n\n default:\n \n }\n if (hasMipMap && !('min' in options)) {\n info.minFilter = GL_NEAREST_MIPMAP_NEAREST\n }\n }\n }\n\n function setTexInfo (info, target) {\n gl.texParameteri(target, GL_TEXTURE_MIN_FILTER, info.minFilter)\n gl.texParameteri(target, GL_TEXTURE_MAG_FILTER, info.magFilter)\n gl.texParameteri(target, GL_TEXTURE_WRAP_S, info.wrapS)\n gl.texParameteri(target, GL_TEXTURE_WRAP_T, info.wrapT)\n if (extensions.ext_texture_filter_anisotropic) {\n gl.texParameteri(target, GL_TEXTURE_MAX_ANISOTROPY_EXT, info.anisotropic)\n }\n if (info.genMipmaps) {\n gl.hint(GL_GENERATE_MIPMAP_HINT, info.mipmapHint)\n gl.generateMipmap(target)\n }\n }\n\n // -------------------------------------------------------\n // Full texture object\n // -------------------------------------------------------\n var textureCount = 0\n var textureSet = {}\n var numTexUnits = limits.maxTextureUnits\n var textureUnits = Array(numTexUnits).map(function () {\n return null\n })\n\n function REGLTexture (target) {\n TexFlags.call(this)\n this.mipmask = 0\n this.internalformat = GL_RGBA$1\n\n this.id = textureCount++\n\n this.refCount = 1\n\n this.target = target\n this.texture = gl.createTexture()\n\n this.unit = -1\n this.bindCount = 0\n\n this.texInfo = new TexInfo()\n\n if (config.profile) {\n this.stats = { size: 0 }\n }\n }\n\n function tempBind (texture) {\n gl.activeTexture(GL_TEXTURE0$1)\n gl.bindTexture(texture.target, texture.texture)\n }\n\n function tempRestore () {\n var prev = textureUnits[0]\n if (prev) {\n gl.bindTexture(prev.target, prev.texture)\n } else {\n gl.bindTexture(GL_TEXTURE_2D$1, null)\n }\n }\n\n function destroy (texture) {\n var handle = texture.texture\n \n var unit = texture.unit\n var target = texture.target\n if (unit >= 0) {\n gl.activeTexture(GL_TEXTURE0$1 + unit)\n gl.bindTexture(target, null)\n textureUnits[unit] = null\n }\n gl.deleteTexture(handle)\n texture.texture = null\n texture.params = null\n texture.pixels = null\n texture.refCount = 0\n delete textureSet[texture.id]\n stats.textureCount--\n }\n\n extend(REGLTexture.prototype, {\n bind: function () {\n var texture = this\n texture.bindCount += 1\n var unit = texture.unit\n if (unit < 0) {\n for (var i = 0; i < numTexUnits; ++i) {\n var other = textureUnits[i]\n if (other) {\n if (other.bindCount > 0) {\n continue\n }\n other.unit = -1\n }\n textureUnits[i] = texture\n unit = i\n break\n }\n if (unit >= numTexUnits) {\n \n }\n if (config.profile && stats.maxTextureUnits < (unit + 1)) {\n stats.maxTextureUnits = unit + 1 // +1, since the units are zero-based\n }\n texture.unit = unit\n gl.activeTexture(GL_TEXTURE0$1 + unit)\n gl.bindTexture(texture.target, texture.texture)\n }\n return unit\n },\n\n unbind: function () {\n this.bindCount -= 1\n },\n\n decRef: function () {\n if (--this.refCount <= 0) {\n destroy(this)\n }\n }\n })\n\n function createTexture2D (a, b) {\n var texture = new REGLTexture(GL_TEXTURE_2D$1)\n textureSet[texture.id] = texture\n stats.textureCount++\n\n function reglTexture2D (a, b) {\n var texInfo = texture.texInfo\n TexInfo.call(texInfo)\n var mipData = allocMipMap()\n\n if (typeof a === 'number') {\n if (typeof b === 'number') {\n parseMipMapFromShape(mipData, a | 0, b | 0)\n } else {\n parseMipMapFromShape(mipData, a | 0, a | 0)\n }\n } else if (a) {\n \n parseTexInfo(texInfo, a)\n parseMipMapFromObject(mipData, a)\n } else {\n // empty textures get assigned a default shape of 1x1\n parseMipMapFromShape(mipData, 1, 1)\n }\n\n if (texInfo.genMipmaps) {\n mipData.mipmask = (mipData.width << 1) - 1\n }\n texture.mipmask = mipData.mipmask\n\n copyFlags(texture, mipData)\n\n \n texture.internalformat = mipData.internalformat\n\n reglTexture2D.width = mipData.width\n reglTexture2D.height = mipData.height\n\n tempBind(texture)\n setMipMap(mipData, GL_TEXTURE_2D$1)\n setTexInfo(texInfo, GL_TEXTURE_2D$1)\n tempRestore()\n\n freeMipMap(mipData)\n\n if (config.profile) {\n texture.stats.size = getTextureSize(\n texture.internalformat,\n texture.type,\n mipData.width,\n mipData.height,\n texInfo.genMipmaps,\n false)\n }\n reglTexture2D.format = textureFormatsInvert[texture.internalformat]\n reglTexture2D.type = textureTypesInvert[texture.type]\n\n reglTexture2D.mag = magFiltersInvert[texInfo.magFilter]\n reglTexture2D.min = minFiltersInvert[texInfo.minFilter]\n\n reglTexture2D.wrapS = wrapModesInvert[texInfo.wrapS]\n reglTexture2D.wrapT = wrapModesInvert[texInfo.wrapT]\n\n return reglTexture2D\n }\n\n function subimage (image, x_, y_, level_) {\n \n\n var x = x_ | 0\n var y = y_ | 0\n var level = level_ | 0\n\n var imageData = allocImage()\n copyFlags(imageData, texture)\n imageData.width = 0\n imageData.height = 0\n parseImage(imageData, image)\n imageData.width = imageData.width || ((texture.width >> level) - x)\n imageData.height = imageData.height || ((texture.height >> level) - y)\n\n \n \n \n \n\n tempBind(texture)\n setSubImage(imageData, GL_TEXTURE_2D$1, x, y, level)\n tempRestore()\n\n freeImage(imageData)\n\n return reglTexture2D\n }\n\n function resize (w_, h_) {\n var w = w_ | 0\n var h = (h_ | 0) || w\n if (w === texture.width && h === texture.height) {\n return reglTexture2D\n }\n\n reglTexture2D.width = texture.width = w\n reglTexture2D.height = texture.height = h\n\n tempBind(texture)\n\n for (var i = 0; texture.mipmask >> i; ++i) {\n var _w = w >> i\n var _h = h >> i\n if (!_w || !_h) break\n gl.texImage2D(\n GL_TEXTURE_2D$1,\n i,\n texture.format,\n _w,\n _h,\n 0,\n texture.format,\n texture.type,\n null)\n }\n tempRestore()\n\n // also, recompute the texture size.\n if (config.profile) {\n texture.stats.size = getTextureSize(\n texture.internalformat,\n texture.type,\n w,\n h,\n false,\n false)\n }\n\n return reglTexture2D\n }\n\n reglTexture2D(a, b)\n\n reglTexture2D.subimage = subimage\n reglTexture2D.resize = resize\n reglTexture2D._reglType = 'texture2d'\n reglTexture2D._texture = texture\n if (config.profile) {\n reglTexture2D.stats = texture.stats\n }\n reglTexture2D.destroy = function () {\n texture.decRef()\n }\n\n return reglTexture2D\n }\n\n function createTextureCube (a0, a1, a2, a3, a4, a5) {\n var texture = new REGLTexture(GL_TEXTURE_CUBE_MAP$1)\n textureSet[texture.id] = texture\n stats.cubeCount++\n\n var faces = new Array(6)\n\n function reglTextureCube (a0, a1, a2, a3, a4, a5) {\n var i\n var texInfo = texture.texInfo\n TexInfo.call(texInfo)\n for (i = 0; i < 6; ++i) {\n faces[i] = allocMipMap()\n }\n\n if (typeof a0 === 'number' || !a0) {\n var s = (a0 | 0) || 1\n for (i = 0; i < 6; ++i) {\n parseMipMapFromShape(faces[i], s, s)\n }\n } else if (typeof a0 === 'object') {\n if (a1) {\n parseMipMapFromObject(faces[0], a0)\n parseMipMapFromObject(faces[1], a1)\n parseMipMapFromObject(faces[2], a2)\n parseMipMapFromObject(faces[3], a3)\n parseMipMapFromObject(faces[4], a4)\n parseMipMapFromObject(faces[5], a5)\n } else {\n parseTexInfo(texInfo, a0)\n parseFlags(texture, a0)\n if ('faces' in a0) {\n var faceInput = a0.faces\n \n for (i = 0; i < 6; ++i) {\n \n copyFlags(faces[i], texture)\n parseMipMapFromObject(faces[i], faceInput[i])\n }\n } else {\n for (i = 0; i < 6; ++i) {\n parseMipMapFromObject(faces[i], a0)\n }\n }\n }\n } else {\n \n }\n\n copyFlags(texture, faces[0])\n \n\n if (texInfo.genMipmaps) {\n texture.mipmask = (faces[0].width << 1) - 1\n } else {\n texture.mipmask = faces[0].mipmask\n }\n\n \n texture.internalformat = faces[0].internalformat\n\n reglTextureCube.width = faces[0].width\n reglTextureCube.height = faces[0].height\n\n tempBind(texture)\n for (i = 0; i < 6; ++i) {\n setMipMap(faces[i], GL_TEXTURE_CUBE_MAP_POSITIVE_X$1 + i)\n }\n setTexInfo(texInfo, GL_TEXTURE_CUBE_MAP$1)\n tempRestore()\n\n if (config.profile) {\n texture.stats.size = getTextureSize(\n texture.internalformat,\n texture.type,\n reglTextureCube.width,\n reglTextureCube.height,\n texInfo.genMipmaps,\n true)\n }\n\n reglTextureCube.format = textureFormatsInvert[texture.internalformat]\n reglTextureCube.type = textureTypesInvert[texture.type]\n\n reglTextureCube.mag = magFiltersInvert[texInfo.magFilter]\n reglTextureCube.min = minFiltersInvert[texInfo.minFilter]\n\n reglTextureCube.wrapS = wrapModesInvert[texInfo.wrapS]\n reglTextureCube.wrapT = wrapModesInvert[texInfo.wrapT]\n\n for (i = 0; i < 6; ++i) {\n freeMipMap(faces[i])\n }\n\n return reglTextureCube\n }\n\n function subimage (face, image, x_, y_, level_) {\n \n \n\n var x = x_ | 0\n var y = y_ | 0\n var level = level_ | 0\n\n var imageData = allocImage()\n copyFlags(imageData, texture)\n imageData.width = 0\n imageData.height = 0\n parseImage(imageData, image)\n imageData.width = imageData.width || ((texture.width >> level) - x)\n imageData.height = imageData.height || ((texture.height >> level) - y)\n\n \n \n \n \n\n tempBind(texture)\n setSubImage(imageData, GL_TEXTURE_CUBE_MAP_POSITIVE_X$1 + face, x, y, level)\n tempRestore()\n\n freeImage(imageData)\n\n return reglTextureCube\n }\n\n function resize (radius_) {\n var radius = radius_ | 0\n if (radius === texture.width) {\n return\n }\n\n reglTextureCube.width = texture.width = radius\n reglTextureCube.height = texture.height = radius\n\n tempBind(texture)\n for (var i = 0; i < 6; ++i) {\n for (var j = 0; texture.mipmask >> j; ++j) {\n gl.texImage2D(\n GL_TEXTURE_CUBE_MAP_POSITIVE_X$1 + i,\n j,\n texture.format,\n radius >> j,\n radius >> j,\n 0,\n texture.format,\n texture.type,\n null)\n }\n }\n tempRestore()\n\n if (config.profile) {\n texture.stats.size = getTextureSize(\n texture.internalformat,\n texture.type,\n reglTextureCube.width,\n reglTextureCube.height,\n false,\n true)\n }\n\n return reglTextureCube\n }\n\n reglTextureCube(a0, a1, a2, a3, a4, a5)\n\n reglTextureCube.subimage = subimage\n reglTextureCube.resize = resize\n reglTextureCube._reglType = 'textureCube'\n reglTextureCube._texture = texture\n if (config.profile) {\n reglTextureCube.stats = texture.stats\n }\n reglTextureCube.destroy = function () {\n texture.decRef()\n }\n\n return reglTextureCube\n }\n\n // Called when regl is destroyed\n function destroyTextures () {\n for (var i = 0; i < numTexUnits; ++i) {\n gl.activeTexture(GL_TEXTURE0$1 + i)\n gl.bindTexture(GL_TEXTURE_2D$1, null)\n textureUnits[i] = null\n }\n values(textureSet).forEach(destroy)\n\n stats.cubeCount = 0\n stats.textureCount = 0\n }\n\n if (config.profile) {\n stats.getTotalTextureSize = function () {\n var total = 0\n Object.keys(textureSet).forEach(function (key) {\n total += textureSet[key].stats.size\n })\n return total\n }\n }\n\n function restoreTextures () {\n for (var i = 0; i < numTexUnits; ++i) {\n var tex = textureUnits[i]\n if (tex) {\n tex.bindCount = 0\n tex.unit = -1\n textureUnits[i] = null\n }\n }\n\n values(textureSet).forEach(function (texture) {\n texture.texture = gl.createTexture()\n gl.bindTexture(texture.target, texture.texture)\n for (var i = 0; i < 32; ++i) {\n if ((texture.mipmask & (1 << i)) === 0) {\n continue\n }\n if (texture.target === GL_TEXTURE_2D$1) {\n gl.texImage2D(GL_TEXTURE_2D$1,\n i,\n texture.internalformat,\n texture.width >> i,\n texture.height >> i,\n 0,\n texture.internalformat,\n texture.type,\n null)\n } else {\n for (var j = 0; j < 6; ++j) {\n gl.texImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X$1 + j,\n i,\n texture.internalformat,\n texture.width >> i,\n texture.height >> i,\n 0,\n texture.internalformat,\n texture.type,\n null)\n }\n }\n }\n setTexInfo(texture.texInfo, texture.target)\n })\n }\n\n function refreshTextures () {\n for (var i = 0; i < numTexUnits; ++i) {\n var tex = textureUnits[i]\n if (tex) {\n tex.bindCount = 0\n tex.unit = -1\n textureUnits[i] = null\n }\n gl.activeTexture(GL_TEXTURE0$1 + i)\n gl.bindTexture(GL_TEXTURE_2D$1, null)\n gl.bindTexture(GL_TEXTURE_CUBE_MAP$1, null)\n }\n }\n\n return {\n create2D: createTexture2D,\n createCube: createTextureCube,\n clear: destroyTextures,\n getTexture: function (wrapper) {\n return null\n },\n restore: restoreTextures,\n refresh: refreshTextures\n }\n}\n\nvar GL_RENDERBUFFER = 0x8D41\n\nvar GL_RGBA4$1 = 0x8056\nvar GL_RGB5_A1$1 = 0x8057\nvar GL_RGB565$1 = 0x8D62\nvar GL_DEPTH_COMPONENT16 = 0x81A5\nvar GL_STENCIL_INDEX8 = 0x8D48\nvar GL_DEPTH_STENCIL$1 = 0x84F9\n\nvar GL_SRGB8_ALPHA8_EXT = 0x8C43\n\nvar GL_RGBA32F_EXT = 0x8814\n\nvar GL_RGBA16F_EXT = 0x881A\nvar GL_RGB16F_EXT = 0x881B\n\nvar FORMAT_SIZES = []\n\nFORMAT_SIZES[GL_RGBA4$1] = 2\nFORMAT_SIZES[GL_RGB5_A1$1] = 2\nFORMAT_SIZES[GL_RGB565$1] = 2\n\nFORMAT_SIZES[GL_DEPTH_COMPONENT16] = 2\nFORMAT_SIZES[GL_STENCIL_INDEX8] = 1\nFORMAT_SIZES[GL_DEPTH_STENCIL$1] = 4\n\nFORMAT_SIZES[GL_SRGB8_ALPHA8_EXT] = 4\nFORMAT_SIZES[GL_RGBA32F_EXT] = 16\nFORMAT_SIZES[GL_RGBA16F_EXT] = 8\nFORMAT_SIZES[GL_RGB16F_EXT] = 6\n\nfunction getRenderbufferSize (format, width, height) {\n return FORMAT_SIZES[format] * width * height\n}\n\nvar wrapRenderbuffers = function (gl, extensions, limits, stats, config) {\n var formatTypes = {\n 'rgba4': GL_RGBA4$1,\n 'rgb565': GL_RGB565$1,\n 'rgb5 a1': GL_RGB5_A1$1,\n 'depth': GL_DEPTH_COMPONENT16,\n 'stencil': GL_STENCIL_INDEX8,\n 'depth stencil': GL_DEPTH_STENCIL$1\n }\n\n if (extensions.ext_srgb) {\n formatTypes['srgba'] = GL_SRGB8_ALPHA8_EXT\n }\n\n if (extensions.ext_color_buffer_half_float) {\n formatTypes['rgba16f'] = GL_RGBA16F_EXT\n formatTypes['rgb16f'] = GL_RGB16F_EXT\n }\n\n if (extensions.webgl_color_buffer_float) {\n formatTypes['rgba32f'] = GL_RGBA32F_EXT\n }\n\n var formatTypesInvert = []\n Object.keys(formatTypes).forEach(function (key) {\n var val = formatTypes[key]\n formatTypesInvert[val] = key\n })\n\n var renderbufferCount = 0\n var renderbufferSet = {}\n\n function REGLRenderbuffer (renderbuffer) {\n this.id = renderbufferCount++\n this.refCount = 1\n\n this.renderbuffer = renderbuffer\n\n this.format = GL_RGBA4$1\n this.width = 0\n this.height = 0\n\n if (config.profile) {\n this.stats = { size: 0 }\n }\n }\n\n REGLRenderbuffer.prototype.decRef = function () {\n if (--this.refCount <= 0) {\n destroy(this)\n }\n }\n\n function destroy (rb) {\n var handle = rb.renderbuffer\n \n gl.bindRenderbuffer(GL_RENDERBUFFER, null)\n gl.deleteRenderbuffer(handle)\n rb.renderbuffer = null\n rb.refCount = 0\n delete renderbufferSet[rb.id]\n stats.renderbufferCount--\n }\n\n function createRenderbuffer (a, b) {\n var renderbuffer = new REGLRenderbuffer(gl.createRenderbuffer())\n renderbufferSet[renderbuffer.id] = renderbuffer\n stats.renderbufferCount++\n\n function reglRenderbuffer (a, b) {\n var w = 0\n var h = 0\n var format = GL_RGBA4$1\n\n if (typeof a === 'object' && a) {\n var options = a\n if ('shape' in options) {\n var shape = options.shape\n \n w = shape[0] | 0\n h = shape[1] | 0\n } else {\n if ('radius' in options) {\n w = h = options.radius | 0\n }\n if ('width' in options) {\n w = options.width | 0\n }\n if ('height' in options) {\n h = options.height | 0\n }\n }\n if ('format' in options) {\n \n format = formatTypes[options.format]\n }\n } else if (typeof a === 'number') {\n w = a | 0\n if (typeof b === 'number') {\n h = b | 0\n } else {\n h = w\n }\n } else if (!a) {\n w = h = 1\n } else {\n \n }\n\n // check shape\n \n\n if (w === renderbuffer.width &&\n h === renderbuffer.height &&\n format === renderbuffer.format) {\n return\n }\n\n reglRenderbuffer.width = renderbuffer.width = w\n reglRenderbuffer.height = renderbuffer.height = h\n renderbuffer.format = format\n\n gl.bindRenderbuffer(GL_RENDERBUFFER, renderbuffer.renderbuffer)\n gl.renderbufferStorage(GL_RENDERBUFFER, format, w, h)\n\n \n\n if (config.profile) {\n renderbuffer.stats.size = getRenderbufferSize(renderbuffer.format, renderbuffer.width, renderbuffer.height)\n }\n reglRenderbuffer.format = formatTypesInvert[renderbuffer.format]\n\n return reglRenderbuffer\n }\n\n function resize (w_, h_) {\n var w = w_ | 0\n var h = (h_ | 0) || w\n\n if (w === renderbuffer.width && h === renderbuffer.height) {\n return reglRenderbuffer\n }\n\n // check shape\n \n\n reglRenderbuffer.width = renderbuffer.width = w\n reglRenderbuffer.height = renderbuffer.height = h\n\n gl.bindRenderbuffer(GL_RENDERBUFFER, renderbuffer.renderbuffer)\n gl.renderbufferStorage(GL_RENDERBUFFER, renderbuffer.format, w, h)\n\n \n\n // also, recompute size.\n if (config.profile) {\n renderbuffer.stats.size = getRenderbufferSize(\n renderbuffer.format, renderbuffer.width, renderbuffer.height)\n }\n\n return reglRenderbuffer\n }\n\n reglRenderbuffer(a, b)\n\n reglRenderbuffer.resize = resize\n reglRenderbuffer._reglType = 'renderbuffer'\n reglRenderbuffer._renderbuffer = renderbuffer\n if (config.profile) {\n reglRenderbuffer.stats = renderbuffer.stats\n }\n reglRenderbuffer.destroy = function () {\n renderbuffer.decRef()\n }\n\n return reglRenderbuffer\n }\n\n if (config.profile) {\n stats.getTotalRenderbufferSize = function () {\n var total = 0\n Object.keys(renderbufferSet).forEach(function (key) {\n total += renderbufferSet[key].stats.size\n })\n return total\n }\n }\n\n function restoreRenderbuffers () {\n values(renderbufferSet).forEach(function (rb) {\n rb.renderbuffer = gl.createRenderbuffer()\n gl.bindRenderbuffer(GL_RENDERBUFFER, rb.renderbuffer)\n gl.renderbufferStorage(GL_RENDERBUFFER, rb.format, rb.width, rb.height)\n })\n gl.bindRenderbuffer(GL_RENDERBUFFER, null)\n }\n\n return {\n create: createRenderbuffer,\n clear: function () {\n values(renderbufferSet).forEach(destroy)\n },\n restore: restoreRenderbuffers\n }\n}\n\n// We store these constants so that the minifier can inline them\nvar GL_FRAMEBUFFER$1 = 0x8D40\nvar GL_RENDERBUFFER$1 = 0x8D41\n\nvar GL_TEXTURE_2D$2 = 0x0DE1\nvar GL_TEXTURE_CUBE_MAP_POSITIVE_X$2 = 0x8515\n\nvar GL_COLOR_ATTACHMENT0$1 = 0x8CE0\nvar GL_DEPTH_ATTACHMENT = 0x8D00\nvar GL_STENCIL_ATTACHMENT = 0x8D20\nvar GL_DEPTH_STENCIL_ATTACHMENT = 0x821A\n\nvar GL_FRAMEBUFFER_COMPLETE$1 = 0x8CD5\nvar GL_HALF_FLOAT_OES$1 = 0x8D61\nvar GL_UNSIGNED_BYTE$5 = 0x1401\nvar GL_FLOAT$4 = 0x1406\n\nvar GL_RGB$1 = 0x1907\nvar GL_RGBA$2 = 0x1908\n\n// for every texture format, store\n// the number of channels\nvar textureFormatChannels = []\ntextureFormatChannels[GL_RGBA$2] = 4\ntextureFormatChannels[GL_RGB$1] = 3\n\n// for every texture type, store\n// the size in bytes.\nvar textureTypeSizes = []\ntextureTypeSizes[GL_UNSIGNED_BYTE$5] = 1\ntextureTypeSizes[GL_FLOAT$4] = 4\ntextureTypeSizes[GL_HALF_FLOAT_OES$1] = 2\n\nfunction wrapFBOState (\n gl,\n extensions,\n limits,\n textureState,\n renderbufferState,\n stats) {\n var framebufferState = {\n cur: null,\n next: null,\n dirty: false,\n setFBO: null\n }\n\n var colorTextureFormats = ['rgba']\n var colorRenderbufferFormats = ['rgba4', 'rgb565', 'rgb5 a1']\n\n if (extensions.ext_srgb) {\n colorRenderbufferFormats.push('srgba')\n }\n\n if (extensions.ext_color_buffer_half_float) {\n colorRenderbufferFormats.push('rgba16f', 'rgb16f')\n }\n\n if (extensions.webgl_color_buffer_float) {\n colorRenderbufferFormats.push('rgba32f')\n }\n\n var colorTypes = ['uint8']\n if (extensions.oes_texture_half_float) {\n colorTypes.push('half float', 'float16')\n }\n if (extensions.oes_texture_float) {\n colorTypes.push('float', 'float32')\n }\n\n function FramebufferAttachment (target, texture, renderbuffer) {\n this.target = target\n this.texture = texture\n this.renderbuffer = renderbuffer\n\n var w = 0\n var h = 0\n if (texture) {\n w = texture.width\n h = texture.height\n } else if (renderbuffer) {\n w = renderbuffer.width\n h = renderbuffer.height\n }\n this.width = w\n this.height = h\n }\n\n function decRef (attachment) {\n if (attachment) {\n if (attachment.texture) {\n attachment.texture._texture.decRef()\n }\n if (attachment.renderbuffer) {\n attachment.renderbuffer._renderbuffer.decRef()\n }\n }\n }\n\n function incRefAndCheckShape (attachment, width, height) {\n if (!attachment) {\n return\n }\n if (attachment.texture) {\n var texture = attachment.texture._texture\n var tw = Math.max(1, texture.width)\n var th = Math.max(1, texture.height)\n \n texture.refCount += 1\n } else {\n var renderbuffer = attachment.renderbuffer._renderbuffer\n \n renderbuffer.refCount += 1\n }\n }\n\n function attach (location, attachment) {\n if (attachment) {\n if (attachment.texture) {\n gl.framebufferTexture2D(\n GL_FRAMEBUFFER$1,\n location,\n attachment.target,\n attachment.texture._texture.texture,\n 0)\n } else {\n gl.framebufferRenderbuffer(\n GL_FRAMEBUFFER$1,\n location,\n GL_RENDERBUFFER$1,\n attachment.renderbuffer._renderbuffer.renderbuffer)\n }\n }\n }\n\n function parseAttachment (attachment) {\n var target = GL_TEXTURE_2D$2\n var texture = null\n var renderbuffer = null\n\n var data = attachment\n if (typeof attachment === 'object') {\n data = attachment.data\n if ('target' in attachment) {\n target = attachment.target | 0\n }\n }\n\n \n\n var type = data._reglType\n if (type === 'texture2d') {\n texture = data\n \n } else if (type === 'textureCube') {\n texture = data\n \n } else if (type === 'renderbuffer') {\n renderbuffer = data\n target = GL_RENDERBUFFER$1\n } else {\n \n }\n\n return new FramebufferAttachment(target, texture, renderbuffer)\n }\n\n function allocAttachment (\n width,\n height,\n isTexture,\n format,\n type) {\n if (isTexture) {\n var texture = textureState.create2D({\n width: width,\n height: height,\n format: format,\n type: type\n })\n texture._texture.refCount = 0\n return new FramebufferAttachment(GL_TEXTURE_2D$2, texture, null)\n } else {\n var rb = renderbufferState.create({\n width: width,\n height: height,\n format: format\n })\n rb._renderbuffer.refCount = 0\n return new FramebufferAttachment(GL_RENDERBUFFER$1, null, rb)\n }\n }\n\n function unwrapAttachment (attachment) {\n return attachment && (attachment.texture || attachment.renderbuffer)\n }\n\n function resizeAttachment (attachment, w, h) {\n if (attachment) {\n if (attachment.texture) {\n attachment.texture.resize(w, h)\n } else if (attachment.renderbuffer) {\n attachment.renderbuffer.resize(w, h)\n }\n attachment.width = w\n attachment.height = h\n }\n }\n\n var framebufferCount = 0\n var framebufferSet = {}\n\n function REGLFramebuffer () {\n this.id = framebufferCount++\n framebufferSet[this.id] = this\n\n this.framebuffer = gl.createFramebuffer()\n this.width = 0\n this.height = 0\n\n this.colorAttachments = []\n this.depthAttachment = null\n this.stencilAttachment = null\n this.depthStencilAttachment = null\n }\n\n function decFBORefs (framebuffer) {\n framebuffer.colorAttachments.forEach(decRef)\n decRef(framebuffer.depthAttachment)\n decRef(framebuffer.stencilAttachment)\n decRef(framebuffer.depthStencilAttachment)\n }\n\n function destroy (framebuffer) {\n var handle = framebuffer.framebuffer\n \n gl.deleteFramebuffer(handle)\n framebuffer.framebuffer = null\n stats.framebufferCount--\n delete framebufferSet[framebuffer.id]\n }\n\n function updateFramebuffer (framebuffer) {\n var i\n\n gl.bindFramebuffer(GL_FRAMEBUFFER$1, framebuffer.framebuffer)\n var colorAttachments = framebuffer.colorAttachments\n for (i = 0; i < colorAttachments.length; ++i) {\n attach(GL_COLOR_ATTACHMENT0$1 + i, colorAttachments[i])\n }\n for (i = colorAttachments.length; i < limits.maxColorAttachments; ++i) {\n gl.framebufferTexture2D(\n GL_FRAMEBUFFER$1,\n GL_COLOR_ATTACHMENT0$1 + i,\n GL_TEXTURE_2D$2,\n null,\n 0)\n }\n\n gl.framebufferTexture2D(\n GL_FRAMEBUFFER$1,\n GL_DEPTH_STENCIL_ATTACHMENT,\n GL_TEXTURE_2D$2,\n null,\n 0)\n gl.framebufferTexture2D(\n GL_FRAMEBUFFER$1,\n GL_DEPTH_ATTACHMENT,\n GL_TEXTURE_2D$2,\n null,\n 0)\n gl.framebufferTexture2D(\n GL_FRAMEBUFFER$1,\n GL_STENCIL_ATTACHMENT,\n GL_TEXTURE_2D$2,\n null,\n 0)\n\n attach(GL_DEPTH_ATTACHMENT, framebuffer.depthAttachment)\n attach(GL_STENCIL_ATTACHMENT, framebuffer.stencilAttachment)\n attach(GL_DEPTH_STENCIL_ATTACHMENT, framebuffer.depthStencilAttachment)\n\n // Check status code\n var status = gl.checkFramebufferStatus(GL_FRAMEBUFFER$1)\n if (!gl.isContextLost() && status !== GL_FRAMEBUFFER_COMPLETE$1) {\n \n }\n\n gl.bindFramebuffer(GL_FRAMEBUFFER$1, framebufferState.next ? framebufferState.next.framebuffer : null)\n framebufferState.cur = framebufferState.next\n\n // FIXME: Clear error code here. This is a work around for a bug in\n // headless-gl\n gl.getError()\n }\n\n function createFBO (a0, a1) {\n var framebuffer = new REGLFramebuffer()\n stats.framebufferCount++\n\n function reglFramebuffer (a, b) {\n var i\n\n \n\n var width = 0\n var height = 0\n\n var needsDepth = true\n var needsStencil = true\n\n var colorBuffer = null\n var colorTexture = true\n var colorFormat = 'rgba'\n var colorType = 'uint8'\n var colorCount = 1\n\n var depthBuffer = null\n var stencilBuffer = null\n var depthStencilBuffer = null\n var depthStencilTexture = false\n\n if (typeof a === 'number') {\n width = a | 0\n height = (b | 0) || width\n } else if (!a) {\n width = height = 1\n } else {\n \n var options = a\n\n if ('shape' in options) {\n var shape = options.shape\n \n width = shape[0]\n height = shape[1]\n } else {\n if ('radius' in options) {\n width = height = options.radius\n }\n if ('width' in options) {\n width = options.width\n }\n if ('height' in options) {\n height = options.height\n }\n }\n\n if ('color' in options ||\n 'colors' in options) {\n colorBuffer =\n options.color ||\n options.colors\n if (Array.isArray(colorBuffer)) {\n \n }\n }\n\n if (!colorBuffer) {\n if ('colorCount' in options) {\n colorCount = options.colorCount | 0\n \n }\n\n if ('colorTexture' in options) {\n colorTexture = !!options.colorTexture\n colorFormat = 'rgba4'\n }\n\n if ('colorType' in options) {\n colorType = options.colorType\n if (!colorTexture) {\n if (colorType === 'half float' || colorType === 'float16') {\n \n colorFormat = 'rgba16f'\n } else if (colorType === 'float' || colorType === 'float32') {\n \n colorFormat = 'rgba32f'\n }\n } else {\n \n \n }\n \n }\n\n if ('colorFormat' in options) {\n colorFormat = options.colorFormat\n if (colorTextureFormats.indexOf(colorFormat) >= 0) {\n colorTexture = true\n } else if (colorRenderbufferFormats.indexOf(colorFormat) >= 0) {\n colorTexture = false\n } else {\n \n }\n }\n }\n\n if ('depthTexture' in options || 'depthStencilTexture' in options) {\n depthStencilTexture = !!(options.depthTexture ||\n options.depthStencilTexture)\n \n }\n\n if ('depth' in options) {\n if (typeof options.depth === 'boolean') {\n needsDepth = options.depth\n } else {\n depthBuffer = options.depth\n needsStencil = false\n }\n }\n\n if ('stencil' in options) {\n if (typeof options.stencil === 'boolean') {\n needsStencil = options.stencil\n } else {\n stencilBuffer = options.stencil\n needsDepth = false\n }\n }\n\n if ('depthStencil' in options) {\n if (typeof options.depthStencil === 'boolean') {\n needsDepth = needsStencil = options.depthStencil\n } else {\n depthStencilBuffer = options.depthStencil\n needsDepth = false\n needsStencil = false\n }\n }\n }\n\n // parse attachments\n var colorAttachments = null\n var depthAttachment = null\n var stencilAttachment = null\n var depthStencilAttachment = null\n\n // Set up color attachments\n if (Array.isArray(colorBuffer)) {\n colorAttachments = colorBuffer.map(parseAttachment)\n } else if (colorBuffer) {\n colorAttachments = [parseAttachment(colorBuffer)]\n } else {\n colorAttachments = new Array(colorCount)\n for (i = 0; i < colorCount; ++i) {\n colorAttachments[i] = allocAttachment(\n width,\n height,\n colorTexture,\n colorFormat,\n colorType)\n }\n }\n\n \n \n\n width = width || colorAttachments[0].width\n height = height || colorAttachments[0].height\n\n if (depthBuffer) {\n depthAttachment = parseAttachment(depthBuffer)\n } else if (needsDepth && !needsStencil) {\n depthAttachment = allocAttachment(\n width,\n height,\n depthStencilTexture,\n 'depth',\n 'uint32')\n }\n\n if (stencilBuffer) {\n stencilAttachment = parseAttachment(stencilBuffer)\n } else if (needsStencil && !needsDepth) {\n stencilAttachment = allocAttachment(\n width,\n height,\n false,\n 'stencil',\n 'uint8')\n }\n\n if (depthStencilBuffer) {\n depthStencilAttachment = parseAttachment(depthStencilBuffer)\n } else if (!depthBuffer && !stencilBuffer && needsStencil && needsDepth) {\n depthStencilAttachment = allocAttachment(\n width,\n height,\n depthStencilTexture,\n 'depth stencil',\n 'depth stencil')\n }\n\n \n\n var commonColorAttachmentSize = null\n\n for (i = 0; i < colorAttachments.length; ++i) {\n incRefAndCheckShape(colorAttachments[i], width, height)\n \n\n if (colorAttachments[i] && colorAttachments[i].texture) {\n var colorAttachmentSize =\n textureFormatChannels[colorAttachments[i].texture._texture.format] *\n textureTypeSizes[colorAttachments[i].texture._texture.type]\n\n if (commonColorAttachmentSize === null) {\n commonColorAttachmentSize = colorAttachmentSize\n } else {\n // We need to make sure that all color attachments have the same number of bitplanes\n // (that is, the same numer of bits per pixel)\n // This is required by the GLES2.0 standard. See the beginning of Chapter 4 in that document.\n \n }\n }\n }\n incRefAndCheckShape(depthAttachment, width, height)\n \n incRefAndCheckShape(stencilAttachment, width, height)\n \n incRefAndCheckShape(depthStencilAttachment, width, height)\n \n\n // decrement references\n decFBORefs(framebuffer)\n\n framebuffer.width = width\n framebuffer.height = height\n\n framebuffer.colorAttachments = colorAttachments\n framebuffer.depthAttachment = depthAttachment\n framebuffer.stencilAttachment = stencilAttachment\n framebuffer.depthStencilAttachment = depthStencilAttachment\n\n reglFramebuffer.color = colorAttachments.map(unwrapAttachment)\n reglFramebuffer.depth = unwrapAttachment(depthAttachment)\n reglFramebuffer.stencil = unwrapAttachment(stencilAttachment)\n reglFramebuffer.depthStencil = unwrapAttachment(depthStencilAttachment)\n\n reglFramebuffer.width = framebuffer.width\n reglFramebuffer.height = framebuffer.height\n\n updateFramebuffer(framebuffer)\n\n return reglFramebuffer\n }\n\n function resize (w_, h_) {\n \n\n var w = Math.max(w_ | 0, 1)\n var h = Math.max((h_ | 0) || w, 1)\n if (w === framebuffer.width && h === framebuffer.height) {\n return reglFramebuffer\n }\n\n // resize all buffers\n var colorAttachments = framebuffer.colorAttachments\n for (var i = 0; i < colorAttachments.length; ++i) {\n resizeAttachment(colorAttachments[i], w, h)\n }\n resizeAttachment(framebuffer.depthAttachment, w, h)\n resizeAttachment(framebuffer.stencilAttachment, w, h)\n resizeAttachment(framebuffer.depthStencilAttachment, w, h)\n\n framebuffer.width = reglFramebuffer.width = w\n framebuffer.height = reglFramebuffer.height = h\n\n updateFramebuffer(framebuffer)\n\n return reglFramebuffer\n }\n\n reglFramebuffer(a0, a1)\n\n return extend(reglFramebuffer, {\n resize: resize,\n _reglType: 'framebuffer',\n _framebuffer: framebuffer,\n destroy: function () {\n destroy(framebuffer)\n decFBORefs(framebuffer)\n },\n use: function (block) {\n framebufferState.setFBO({\n framebuffer: reglFramebuffer\n }, block)\n }\n })\n }\n\n function createCubeFBO (options) {\n var faces = Array(6)\n\n function reglFramebufferCube (a) {\n var i\n\n \n\n var params = {\n color: null\n }\n\n var radius = 0\n\n var colorBuffer = null\n var colorFormat = 'rgba'\n var colorType = 'uint8'\n var colorCount = 1\n\n if (typeof a === 'number') {\n radius = a | 0\n } else if (!a) {\n radius = 1\n } else {\n \n var options = a\n\n if ('shape' in options) {\n var shape = options.shape\n \n \n radius = shape[0]\n } else {\n if ('radius' in options) {\n radius = options.radius | 0\n }\n if ('width' in options) {\n radius = options.width | 0\n if ('height' in options) {\n \n }\n } else if ('height' in options) {\n radius = options.height | 0\n }\n }\n\n if ('color' in options ||\n 'colors' in options) {\n colorBuffer =\n options.color ||\n options.colors\n if (Array.isArray(colorBuffer)) {\n \n }\n }\n\n if (!colorBuffer) {\n if ('colorCount' in options) {\n colorCount = options.colorCount | 0\n \n }\n\n if ('colorType' in options) {\n \n colorType = options.colorType\n }\n\n if ('colorFormat' in options) {\n colorFormat = options.colorFormat\n \n }\n }\n\n if ('depth' in options) {\n params.depth = options.depth\n }\n\n if ('stencil' in options) {\n params.stencil = options.stencil\n }\n\n if ('depthStencil' in options) {\n params.depthStencil = options.depthStencil\n }\n }\n\n var colorCubes\n if (colorBuffer) {\n if (Array.isArray(colorBuffer)) {\n colorCubes = []\n for (i = 0; i < colorBuffer.length; ++i) {\n colorCubes[i] = colorBuffer[i]\n }\n } else {\n colorCubes = [ colorBuffer ]\n }\n } else {\n colorCubes = Array(colorCount)\n var cubeMapParams = {\n radius: radius,\n format: colorFormat,\n type: colorType\n }\n for (i = 0; i < colorCount; ++i) {\n colorCubes[i] = textureState.createCube(cubeMapParams)\n }\n }\n\n // Check color cubes\n params.color = Array(colorCubes.length)\n for (i = 0; i < colorCubes.length; ++i) {\n var cube = colorCubes[i]\n \n radius = radius || cube.width\n \n params.color[i] = {\n target: GL_TEXTURE_CUBE_MAP_POSITIVE_X$2,\n data: colorCubes[i]\n }\n }\n\n for (i = 0; i < 6; ++i) {\n for (var j = 0; j < colorCubes.length; ++j) {\n params.color[j].target = GL_TEXTURE_CUBE_MAP_POSITIVE_X$2 + i\n }\n // reuse depth-stencil attachments across all cube maps\n if (i > 0) {\n params.depth = faces[0].depth\n params.stencil = faces[0].stencil\n params.depthStencil = faces[0].depthStencil\n }\n if (faces[i]) {\n (faces[i])(params)\n } else {\n faces[i] = createFBO(params)\n }\n }\n\n return extend(reglFramebufferCube, {\n width: radius,\n height: radius,\n color: colorCubes\n })\n }\n\n function resize (radius_) {\n var i\n var radius = radius_ | 0\n \n\n if (radius === reglFramebufferCube.width) {\n return reglFramebufferCube\n }\n\n var colors = reglFramebufferCube.color\n for (i = 0; i < colors.length; ++i) {\n colors[i].resize(radius)\n }\n\n for (i = 0; i < 6; ++i) {\n faces[i].resize(radius)\n }\n\n reglFramebufferCube.width = reglFramebufferCube.height = radius\n\n return reglFramebufferCube\n }\n\n reglFramebufferCube(options)\n\n return extend(reglFramebufferCube, {\n faces: faces,\n resize: resize,\n _reglType: 'framebufferCube',\n destroy: function () {\n faces.forEach(function (f) {\n f.destroy()\n })\n }\n })\n }\n\n function restoreFramebuffers () {\n framebufferState.cur = null\n framebufferState.next = null\n framebufferState.dirty = true\n values(framebufferSet).forEach(function (fb) {\n fb.framebuffer = gl.createFramebuffer()\n updateFramebuffer(fb)\n })\n }\n\n return extend(framebufferState, {\n getFramebuffer: function (object) {\n if (typeof object === 'function' && object._reglType === 'framebuffer') {\n var fbo = object._framebuffer\n if (fbo instanceof REGLFramebuffer) {\n return fbo\n }\n }\n return null\n },\n create: createFBO,\n createCube: createCubeFBO,\n clear: function () {\n values(framebufferSet).forEach(destroy)\n },\n restore: restoreFramebuffers\n })\n}\n\nvar GL_FLOAT$5 = 5126\nvar GL_ARRAY_BUFFER$1 = 34962\nvar GL_ELEMENT_ARRAY_BUFFER$1 = 34963\n\nfunction AttributeRecord () {\n this.state = 0\n\n this.x = 0.0\n this.y = 0.0\n this.z = 0.0\n this.w = 0.0\n\n this.buffer = null\n this.size = 0\n this.normalized = false\n this.type = GL_FLOAT$5\n this.offset = 0\n this.stride = 0\n this.divisor = 0\n}\n\nfunction wrapAttributeState (\n gl,\n extensions,\n limits,\n stats,\n bufferState,\n elementState,\n drawState) {\n var NUM_ATTRIBUTES = limits.maxAttributes\n var attributeBindings = new Array(NUM_ATTRIBUTES)\n for (var i = 0; i < NUM_ATTRIBUTES; ++i) {\n attributeBindings[i] = new AttributeRecord()\n }\n var vaoCount = 0\n var vaoSet = {}\n\n var state = {\n Record: AttributeRecord,\n scope: {},\n state: attributeBindings,\n currentVAO: null,\n targetVAO: null,\n restore: extVAO() ? restoreVAO : function () {},\n createVAO: createVAO,\n getVAO: getVAO,\n destroyBuffer: destroyBuffer,\n setVAO: extVAO() ? setVAOEXT : setVAOEmulated,\n clear: extVAO() ? destroyVAOEXT : function () {}\n }\n\n function destroyBuffer (buffer) {\n for (var i = 0; i < attributeBindings.length; ++i) {\n var record = attributeBindings[i]\n if (record.buffer === buffer) {\n gl.disableVertexAttribArray(i)\n record.buffer = null\n }\n }\n }\n\n function extVAO () {\n return extensions.oes_vertex_array_object\n }\n\n function extInstanced () {\n return extensions.angle_instanced_arrays\n }\n\n function getVAO (vao) {\n if (typeof vao === 'function' && vao._vao) {\n return vao._vao\n }\n return null\n }\n\n function setVAOEXT (vao) {\n if (vao === state.currentVAO) {\n return\n }\n var ext = extVAO()\n if (vao) {\n ext.bindVertexArrayOES(vao.vao)\n } else {\n ext.bindVertexArrayOES(null)\n }\n state.currentVAO = vao\n }\n\n function setVAOEmulated (vao) {\n if (vao === state.currentVAO) {\n return\n }\n if (vao) {\n vao.bindAttrs()\n } else {\n var exti = extInstanced()\n for (var i = 0; i < attributeBindings.length; ++i) {\n var binding = attributeBindings[i]\n if (binding.buffer) {\n gl.enableVertexAttribArray(i)\n binding.buffer.bind()\n gl.vertexAttribPointer(i, binding.size, binding.type, binding.normalized, binding.stride, binding.offfset)\n if (exti && binding.divisor) {\n exti.vertexAttribDivisorANGLE(i, binding.divisor)\n }\n } else {\n gl.disableVertexAttribArray(i)\n gl.vertexAttrib4f(i, binding.x, binding.y, binding.z, binding.w)\n }\n }\n if (drawState.elements) {\n gl.bindBuffer(GL_ELEMENT_ARRAY_BUFFER$1, drawState.elements.buffer.buffer)\n } else {\n gl.bindBuffer(GL_ELEMENT_ARRAY_BUFFER$1, null)\n }\n }\n state.currentVAO = vao\n }\n\n function destroyVAOEXT () {\n values(vaoSet).forEach(function (vao) {\n vao.destroy()\n })\n }\n\n function REGLVAO () {\n this.id = ++vaoCount\n this.attributes = []\n this.elements = null\n this.ownsElements = false\n this.count = 0\n this.offset = 0\n this.instances = -1\n this.primitive = 4\n var extension = extVAO()\n if (extension) {\n this.vao = extension.createVertexArrayOES()\n } else {\n this.vao = null\n }\n vaoSet[this.id] = this\n this.buffers = []\n }\n\n REGLVAO.prototype.bindAttrs = function () {\n var exti = extInstanced()\n var attributes = this.attributes\n for (var i = 0; i < attributes.length; ++i) {\n var attr = attributes[i]\n if (attr.buffer) {\n gl.enableVertexAttribArray(i)\n gl.bindBuffer(GL_ARRAY_BUFFER$1, attr.buffer.buffer)\n gl.vertexAttribPointer(i, attr.size, attr.type, attr.normalized, attr.stride, attr.offset)\n if (exti && attr.divisor) {\n exti.vertexAttribDivisorANGLE(i, attr.divisor)\n }\n } else {\n gl.disableVertexAttribArray(i)\n gl.vertexAttrib4f(i, attr.x, attr.y, attr.z, attr.w)\n }\n }\n for (var j = attributes.length; j < NUM_ATTRIBUTES; ++j) {\n gl.disableVertexAttribArray(j)\n }\n var elements = elementState.getElements(this.elements)\n if (elements) {\n gl.bindBuffer(GL_ELEMENT_ARRAY_BUFFER$1, elements.buffer.buffer)\n } else {\n gl.bindBuffer(GL_ELEMENT_ARRAY_BUFFER$1, null)\n }\n }\n\n REGLVAO.prototype.refresh = function () {\n var ext = extVAO()\n if (ext) {\n ext.bindVertexArrayOES(this.vao)\n this.bindAttrs()\n state.currentVAO = null\n ext.bindVertexArrayOES(null)\n }\n }\n\n REGLVAO.prototype.destroy = function () {\n if (this.vao) {\n var extension = extVAO()\n if (this === state.currentVAO) {\n state.currentVAO = null\n extension.bindVertexArrayOES(null)\n }\n extension.deleteVertexArrayOES(this.vao)\n this.vao = null\n }\n if (this.ownsElements) {\n this.elements.destroy()\n this.elements = null\n this.ownsElements = false\n }\n if (vaoSet[this.id]) {\n delete vaoSet[this.id]\n stats.vaoCount -= 1\n }\n }\n\n function restoreVAO () {\n var ext = extVAO()\n if (ext) {\n values(vaoSet).forEach(function (vao) {\n vao.refresh()\n })\n }\n }\n\n function createVAO (_attr) {\n var vao = new REGLVAO()\n stats.vaoCount += 1\n\n function updateVAO (options) {\n var attributes\n if (Array.isArray(options)) {\n attributes = options\n if (vao.elements && vao.ownsElements) {\n vao.elements.destroy()\n }\n vao.elements = null\n vao.ownsElements = false\n vao.offset = 0\n vao.count = 0\n vao.instances = -1\n vao.primitive = 4\n } else {\n \n \n if (options.elements) {\n var elements = options.elements\n if (vao.ownsElements) {\n if (typeof elements === 'function' && elements._reglType === 'elements') {\n vao.elements.destroy()\n vao.ownsElements = false\n } else {\n vao.elements(elements)\n vao.ownsElements = false\n }\n } else if (elementState.getElements(options.elements)) {\n vao.elements = options.elements\n vao.ownsElements = false\n } else {\n vao.elements = elementState.create(options.elements)\n vao.ownsElements = true\n }\n } else {\n vao.elements = null\n vao.ownsElements = false\n }\n attributes = options.attributes\n\n // set default vao\n vao.offset = 0\n vao.count = -1\n vao.instances = -1\n vao.primitive = 4\n\n // copy element properties\n if (vao.elements) {\n vao.count = vao.elements._elements.vertCount\n vao.primitive = vao.elements._elements.primType\n }\n\n if ('offset' in options) {\n vao.offset = options.offset | 0\n }\n if ('count' in options) {\n vao.count = options.count | 0\n }\n if ('instances' in options) {\n vao.instances = options.instances | 0\n }\n if ('primitive' in options) {\n \n vao.primitive = primTypes[options.primitive]\n }\n\n \n \n }\n\n \n \n\n var bufUpdated = {}\n var nattributes = vao.attributes\n nattributes.length = attributes.length\n for (var i = 0; i < attributes.length; ++i) {\n var spec = attributes[i]\n var rec = nattributes[i] = new AttributeRecord()\n var data = spec.data || spec\n if (Array.isArray(data) || isTypedArray(data) || isNDArrayLike(data)) {\n var buf\n if (vao.buffers[i]) {\n buf = vao.buffers[i]\n if (isTypedArray(data) && buf._buffer.byteLength >= data.byteLength) {\n buf.subdata(data)\n } else {\n buf.destroy()\n vao.buffers[i] = null\n }\n }\n if (!vao.buffers[i]) {\n buf = vao.buffers[i] = bufferState.create(spec, GL_ARRAY_BUFFER$1, false, true)\n }\n rec.buffer = bufferState.getBuffer(buf)\n rec.size = rec.buffer.dimension | 0\n rec.normalized = false\n rec.type = rec.buffer.dtype\n rec.offset = 0\n rec.stride = 0\n rec.divisor = 0\n rec.state = 1\n bufUpdated[i] = 1\n } else if (bufferState.getBuffer(spec)) {\n rec.buffer = bufferState.getBuffer(spec)\n rec.size = rec.buffer.dimension | 0\n rec.normalized = false\n rec.type = rec.buffer.dtype\n rec.offset = 0\n rec.stride = 0\n rec.divisor = 0\n rec.state = 1\n } else if (bufferState.getBuffer(spec.buffer)) {\n rec.buffer = bufferState.getBuffer(spec.buffer)\n rec.size = ((+spec.size) || rec.buffer.dimension) | 0\n rec.normalized = !!spec.normalized || false\n if ('type' in spec) {\n \n rec.type = glTypes[spec.type]\n } else {\n rec.type = rec.buffer.dtype\n }\n rec.offset = (spec.offset || 0) | 0\n rec.stride = (spec.stride || 0) | 0\n rec.divisor = (spec.divisor || 0) | 0\n rec.state = 1\n\n \n \n \n \n \n } else if ('x' in spec) {\n \n rec.x = +spec.x || 0\n rec.y = +spec.y || 0\n rec.z = +spec.z || 0\n rec.w = +spec.w || 0\n rec.state = 2\n } else {\n \n }\n }\n\n // retire unused buffers\n for (var j = 0; j < vao.buffers.length; ++j) {\n if (!bufUpdated[j] && vao.buffers[j]) {\n vao.buffers[j].destroy()\n vao.buffers[j] = null\n }\n }\n\n vao.refresh()\n return updateVAO\n }\n\n updateVAO.destroy = function () {\n for (var j = 0; j < vao.buffers.length; ++j) {\n if (vao.buffers[j]) {\n vao.buffers[j].destroy()\n }\n }\n vao.buffers.length = 0\n\n if (vao.ownsElements) {\n vao.elements.destroy()\n vao.elements = null\n vao.ownsElements = false\n }\n\n vao.destroy()\n }\n\n updateVAO._vao = vao\n updateVAO._reglType = 'vao'\n\n return updateVAO(_attr)\n }\n\n return state\n}\n\nvar GL_FRAGMENT_SHADER = 35632\nvar GL_VERTEX_SHADER = 35633\n\nvar GL_ACTIVE_UNIFORMS = 0x8B86\nvar GL_ACTIVE_ATTRIBUTES = 0x8B89\n\nfunction wrapShaderState (gl, stringStore, stats, config) {\n // ===================================================\n // glsl compilation and linking\n // ===================================================\n var fragShaders = {}\n var vertShaders = {}\n\n function ActiveInfo (name, id, location, info) {\n this.name = name\n this.id = id\n this.location = location\n this.info = info\n }\n\n function insertActiveInfo (list, info) {\n for (var i = 0; i < list.length; ++i) {\n if (list[i].id === info.id) {\n list[i].location = info.location\n return\n }\n }\n list.push(info)\n }\n\n function getShader (type, id, command) {\n var cache = type === GL_FRAGMENT_SHADER ? fragShaders : vertShaders\n var shader = cache[id]\n\n if (!shader) {\n var source = stringStore.str(id)\n shader = gl.createShader(type)\n gl.shaderSource(shader, source)\n gl.compileShader(shader)\n \n cache[id] = shader\n }\n\n return shader\n }\n\n // ===================================================\n // program linking\n // ===================================================\n var programCache = {}\n var programList = []\n\n var PROGRAM_COUNTER = 0\n\n function REGLProgram (fragId, vertId) {\n this.id = PROGRAM_COUNTER++\n this.fragId = fragId\n this.vertId = vertId\n this.program = null\n this.uniforms = []\n this.attributes = []\n this.refCount = 1\n\n if (config.profile) {\n this.stats = {\n uniformsCount: 0,\n attributesCount: 0\n }\n }\n }\n\n function linkProgram (desc, command, attributeLocations) {\n var i, info\n\n // -------------------------------\n // compile & link\n // -------------------------------\n var fragShader = getShader(GL_FRAGMENT_SHADER, desc.fragId)\n var vertShader = getShader(GL_VERTEX_SHADER, desc.vertId)\n\n var program = desc.program = gl.createProgram()\n gl.attachShader(program, fragShader)\n gl.attachShader(program, vertShader)\n if (attributeLocations) {\n for (i = 0; i < attributeLocations.length; ++i) {\n var binding = attributeLocations[i]\n gl.bindAttribLocation(program, binding[0], binding[1])\n }\n }\n\n gl.linkProgram(program)\n \n\n // -------------------------------\n // grab uniforms\n // -------------------------------\n var numUniforms = gl.getProgramParameter(program, GL_ACTIVE_UNIFORMS)\n if (config.profile) {\n desc.stats.uniformsCount = numUniforms\n }\n var uniforms = desc.uniforms\n for (i = 0; i < numUniforms; ++i) {\n info = gl.getActiveUniform(program, i)\n if (info) {\n if (info.size > 1) {\n for (var j = 0; j < info.size; ++j) {\n var name = info.name.replace('[0]', '[' + j + ']')\n insertActiveInfo(uniforms, new ActiveInfo(\n name,\n stringStore.id(name),\n gl.getUniformLocation(program, name),\n info))\n }\n } else {\n insertActiveInfo(uniforms, new ActiveInfo(\n info.name,\n stringStore.id(info.name),\n gl.getUniformLocation(program, info.name),\n info))\n }\n }\n }\n\n // -------------------------------\n // grab attributes\n // -------------------------------\n var numAttributes = gl.getProgramParameter(program, GL_ACTIVE_ATTRIBUTES)\n if (config.profile) {\n desc.stats.attributesCount = numAttributes\n }\n\n var attributes = desc.attributes\n for (i = 0; i < numAttributes; ++i) {\n info = gl.getActiveAttrib(program, i)\n if (info) {\n insertActiveInfo(attributes, new ActiveInfo(\n info.name,\n stringStore.id(info.name),\n gl.getAttribLocation(program, info.name),\n info))\n }\n }\n }\n\n if (config.profile) {\n stats.getMaxUniformsCount = function () {\n var m = 0\n programList.forEach(function (desc) {\n if (desc.stats.uniformsCount > m) {\n m = desc.stats.uniformsCount\n }\n })\n return m\n }\n\n stats.getMaxAttributesCount = function () {\n var m = 0\n programList.forEach(function (desc) {\n if (desc.stats.attributesCount > m) {\n m = desc.stats.attributesCount\n }\n })\n return m\n }\n }\n\n function restoreShaders () {\n fragShaders = {}\n vertShaders = {}\n for (var i = 0; i < programList.length; ++i) {\n linkProgram(programList[i], null, programList[i].attributes.map(function (info) {\n return [info.location, info.name]\n }))\n }\n }\n\n return {\n clear: function () {\n var deleteShader = gl.deleteShader.bind(gl)\n values(fragShaders).forEach(deleteShader)\n fragShaders = {}\n values(vertShaders).forEach(deleteShader)\n vertShaders = {}\n\n programList.forEach(function (desc) {\n gl.deleteProgram(desc.program)\n })\n programList.length = 0\n programCache = {}\n\n stats.shaderCount = 0\n },\n\n program: function (vertId, fragId, command, attribLocations) {\n \n \n\n var cache = programCache[fragId]\n if (!cache) {\n cache = programCache[fragId] = {}\n }\n var prevProgram = cache[vertId]\n if (prevProgram) {\n prevProgram.refCount++\n if (!attribLocations) {\n return prevProgram\n }\n }\n var program = new REGLProgram(fragId, vertId)\n stats.shaderCount++\n linkProgram(program, command, attribLocations)\n if (!prevProgram) {\n cache[vertId] = program\n }\n programList.push(program)\n return extend(program, {\n destroy: function () {\n program.refCount--\n if (program.refCount <= 0) {\n gl.deleteProgram(program.program)\n var idx = programList.indexOf(program)\n programList.splice(idx, 1)\n stats.shaderCount--\n }\n // no program is linked to this vert anymore\n if (cache[program.vertId].refCount <= 0) {\n gl.deleteShader(vertShaders[program.vertId])\n delete vertShaders[program.vertId]\n delete programCache[program.fragId][program.vertId]\n }\n // no program is linked to this frag anymore\n if (!Object.keys(programCache[program.fragId]).length) {\n gl.deleteShader(fragShaders[program.fragId])\n delete fragShaders[program.fragId]\n delete programCache[program.fragId]\n }\n }\n })\n },\n\n restore: restoreShaders,\n\n shader: getShader,\n\n frag: -1,\n vert: -1\n }\n}\n\nvar GL_RGBA$3 = 6408\nvar GL_UNSIGNED_BYTE$6 = 5121\nvar GL_PACK_ALIGNMENT = 0x0D05\nvar GL_FLOAT$6 = 0x1406 // 5126\n\nfunction wrapReadPixels (\n gl,\n framebufferState,\n reglPoll,\n context,\n glAttributes,\n extensions,\n limits) {\n function readPixelsImpl (input) {\n var type\n if (framebufferState.next === null) {\n \n type = GL_UNSIGNED_BYTE$6\n } else {\n \n type = framebufferState.next.colorAttachments[0].texture._texture.type\n\n \n }\n\n var x = 0\n var y = 0\n var width = context.framebufferWidth\n var height = context.framebufferHeight\n var data = null\n\n if (isTypedArray(input)) {\n data = input\n } else if (input) {\n \n x = input.x | 0\n y = input.y | 0\n \n \n width = (input.width || (context.framebufferWidth - x)) | 0\n height = (input.height || (context.framebufferHeight - y)) | 0\n data = input.data || null\n }\n\n // sanity check input.data\n if (data) {\n if (type === GL_UNSIGNED_BYTE$6) {\n \n } else if (type === GL_FLOAT$6) {\n \n }\n }\n\n \n \n\n // Update WebGL state\n reglPoll()\n\n // Compute size\n var size = width * height * 4\n\n // Allocate data\n if (!data) {\n if (type === GL_UNSIGNED_BYTE$6) {\n data = new Uint8Array(size)\n } else if (type === GL_FLOAT$6) {\n data = data || new Float32Array(size)\n }\n }\n\n // Type check\n \n \n\n // Run read pixels\n gl.pixelStorei(GL_PACK_ALIGNMENT, 4)\n gl.readPixels(x, y, width, height, GL_RGBA$3,\n type,\n data)\n\n return data\n }\n\n function readPixelsFBO (options) {\n var result\n framebufferState.setFBO({\n framebuffer: options.framebuffer\n }, function () {\n result = readPixelsImpl(options)\n })\n return result\n }\n\n function readPixels (options) {\n if (!options || !('framebuffer' in options)) {\n return readPixelsImpl(options)\n } else {\n return readPixelsFBO(options)\n }\n }\n\n return readPixels\n}\n\n/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2 Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n * Also http://anmar.eu.org/projects/jssha2/\n */\n\n/*\n * Configurable variables. You may need to tweak these to be compatible with\n * the server-side, but the defaults work in most cases.\n */\nvar hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */\nvar b64pad = \"\"; /* base-64 pad character. \"=\" for strict RFC compliance */\n\n/*\n * These are the functions you'll usually want to call\n * They take string arguments and return either hex or base-64 encoded strings\n */\nfunction hex_sha256(s) { return rstr2hex(rstr_sha256(str2rstr_utf8(s))); }\n/*\n * Calculate the sha256 of a raw string\n */\nfunction rstr_sha256(s)\n{\n return binb2rstr(binb_sha256(rstr2binb(s), s.length * 8));\n}\n\n/*\n * Calculate the HMAC-sha256 of a key and some data (raw strings)\n */\nfunction rstr_hmac_sha256(key, data)\n{\n var bkey = rstr2binb(key);\n if(bkey.length > 16) bkey = binb_sha256(bkey, key.length * 8);\n\n var ipad = Array(16), opad = Array(16);\n for(var i = 0; i < 16; i++)\n {\n ipad[i] = bkey[i] ^ 0x36363636;\n opad[i] = bkey[i] ^ 0x5C5C5C5C;\n }\n\n var hash = binb_sha256(ipad.concat(rstr2binb(data)), 512 + data.length * 8);\n return binb2rstr(binb_sha256(opad.concat(hash), 512 + 256));\n}\n\n/*\n * Convert a raw string to a hex string\n */\nfunction rstr2hex(input)\n{\n var hex_tab = hexcase ? \"0123456789ABCDEF\" : \"0123456789abcdef\";\n var output = \"\";\n var x;\n for(var i = 0; i < input.length; i++)\n {\n x = input.charCodeAt(i);\n output += hex_tab.charAt((x >>> 4) & 0x0F)\n + hex_tab.charAt( x & 0x0F);\n }\n return output;\n}\n\n/*\n * Convert a raw string to a base-64 string\n */\nfunction rstr2b64(input)\n{\n var tab = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n var output = \"\";\n var len = input.length;\n for(var i = 0; i < len; i += 3)\n {\n var triplet = (input.charCodeAt(i) << 16)\n | (i + 1 < len ? input.charCodeAt(i+1) << 8 : 0)\n | (i + 2 < len ? input.charCodeAt(i+2) : 0);\n for(var j = 0; j < 4; j++)\n {\n if(i * 8 + j * 6 > input.length * 8) output += b64pad;\n else output += tab.charAt((triplet >>> 6*(3-j)) & 0x3F);\n }\n }\n return output;\n}\n\n/*\n * Convert a raw string to an arbitrary string encoding\n */\nfunction rstr2any(input, encoding)\n{\n var divisor = encoding.length;\n var remainders = Array();\n var i, q, x, quotient;\n\n /* Convert to an array of 16-bit big-endian values, forming the dividend */\n var dividend = Array(Math.ceil(input.length / 2));\n for(i = 0; i < dividend.length; i++)\n {\n dividend[i] = (input.charCodeAt(i * 2) << 8) | input.charCodeAt(i * 2 + 1);\n }\n\n /*\n * Repeatedly perform a long division. The binary array forms the dividend,\n * the length of the encoding is the divisor. Once computed, the quotient\n * forms the dividend for the next step. We stop when the dividend is zero.\n * All remainders are stored for later use.\n */\n while(dividend.length > 0)\n {\n quotient = Array();\n x = 0;\n for(i = 0; i < dividend.length; i++)\n {\n x = (x << 16) + dividend[i];\n q = Math.floor(x / divisor);\n x -= q * divisor;\n if(quotient.length > 0 || q > 0)\n quotient[quotient.length] = q;\n }\n remainders[remainders.length] = x;\n dividend = quotient;\n }\n\n /* Convert the remainders to the output string */\n var output = \"\";\n for(i = remainders.length - 1; i >= 0; i--)\n output += encoding.charAt(remainders[i]);\n\n /* Append leading zero equivalents */\n var full_length = Math.ceil(input.length * 8 /\n (Math.log(encoding.length) / Math.log(2)))\n for(i = output.length; i < full_length; i++)\n output = encoding[0] + output;\n\n return output;\n}\n\n/*\n * Encode a string as utf-8.\n * For efficiency, this assumes the input is valid utf-16.\n */\nfunction str2rstr_utf8(input)\n{\n var output = \"\";\n var i = -1;\n var x, y;\n\n while(++i < input.length)\n {\n /* Decode utf-16 surrogate pairs */\n x = input.charCodeAt(i);\n y = i + 1 < input.length ? input.charCodeAt(i + 1) : 0;\n if(0xD800 <= x && x <= 0xDBFF && 0xDC00 <= y && y <= 0xDFFF)\n {\n x = 0x10000 + ((x & 0x03FF) << 10) + (y & 0x03FF);\n i++;\n }\n\n /* Encode output as utf-8 */\n if(x <= 0x7F)\n output += String.fromCharCode(x);\n else if(x <= 0x7FF)\n output += String.fromCharCode(0xC0 | ((x >>> 6 ) & 0x1F),\n 0x80 | ( x & 0x3F));\n else if(x <= 0xFFFF)\n output += String.fromCharCode(0xE0 | ((x >>> 12) & 0x0F),\n 0x80 | ((x >>> 6 ) & 0x3F),\n 0x80 | ( x & 0x3F));\n else if(x <= 0x1FFFFF)\n output += String.fromCharCode(0xF0 | ((x >>> 18) & 0x07),\n 0x80 | ((x >>> 12) & 0x3F),\n 0x80 | ((x >>> 6 ) & 0x3F),\n 0x80 | ( x & 0x3F));\n }\n return output;\n}\n\n/*\n * Convert a raw string to an array of big-endian words\n * Characters >255 have their high-byte silently ignored.\n */\nfunction rstr2binb(input)\n{\n var output = Array(input.length >> 2);\n for(var i = 0; i < output.length; i++)\n output[i] = 0;\n for(var i = 0; i < input.length * 8; i += 8)\n output[i>>5] |= (input.charCodeAt(i / 8) & 0xFF) << (24 - i % 32);\n return output;\n}\n\n/*\n * Convert an array of big-endian words to a string\n */\nfunction binb2rstr(input)\n{\n var output = \"\";\n for(var i = 0; i < input.length * 32; i += 8)\n output += String.fromCharCode((input[i>>5] >>> (24 - i % 32)) & 0xFF);\n return output;\n}\n\n/*\n * Main sha256 function, with its support functions\n */\nfunction sha256_S (X, n) {return ( X >>> n ) | (X << (32 - n));}\nfunction sha256_R (X, n) {return ( X >>> n );}\nfunction sha256_Ch(x, y, z) {return ((x & y) ^ ((~x) & z));}\nfunction sha256_Maj(x, y, z) {return ((x & y) ^ (x & z) ^ (y & z));}\nfunction sha256_Sigma0256(x) {return (sha256_S(x, 2) ^ sha256_S(x, 13) ^ sha256_S(x, 22));}\nfunction sha256_Sigma1256(x) {return (sha256_S(x, 6) ^ sha256_S(x, 11) ^ sha256_S(x, 25));}\nfunction sha256_Gamma0256(x) {return (sha256_S(x, 7) ^ sha256_S(x, 18) ^ sha256_R(x, 3));}\nfunction sha256_Gamma1256(x) {return (sha256_S(x, 17) ^ sha256_S(x, 19) ^ sha256_R(x, 10));}\nvar sha256_K = new Array\n(\n 1116352408, 1899447441, -1245643825, -373957723, 961987163, 1508970993,\n -1841331548, -1424204075, -670586216, 310598401, 607225278, 1426881987,\n 1925078388, -2132889090, -1680079193, -1046744716, -459576895, -272742522,\n 264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986,\n -1740746414, -1473132947, -1341970488, -1084653625, -958395405, -710438585,\n 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291,\n 1695183700, 1986661051, -2117940946, -1838011259, -1564481375, -1474664885,\n -1035236496, -949202525, -778901479, -694614492, -200395387, 275423344,\n 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218,\n 1537002063, 1747873779, 1955562222, 2024104815, -2067236844, -1933114872,\n -1866530822, -1538233109, -1090935817, -965641998\n);\n\nfunction binb_sha256(m, l)\n{\n var HASH = new Array(1779033703, -1150833019, 1013904242, -1521486534,\n 1359893119, -1694144372, 528734635, 1541459225);\n var W = new Array(64);\n var a, b, c, d, e, f, g, h;\n var i, j, T1, T2;\n\n /* append padding */\n m[l >> 5] |= 0x80 << (24 - l % 32);\n m[((l + 64 >> 9) << 4) + 15] = l;\n\n for(i = 0; i < m.length; i += 16)\n {\n a = HASH[0];\n b = HASH[1];\n c = HASH[2];\n d = HASH[3];\n e = HASH[4];\n f = HASH[5];\n g = HASH[6];\n h = HASH[7];\n\n for(j = 0; j < 64; j++)\n {\n if (j < 16) W[j] = m[j + i];\n else W[j] = safe_add(safe_add(safe_add(sha256_Gamma1256(W[j - 2]), W[j - 7]),\n sha256_Gamma0256(W[j - 15])), W[j - 16]);\n\n T1 = safe_add(safe_add(safe_add(safe_add(h, sha256_Sigma1256(e)), sha256_Ch(e, f, g)),\n sha256_K[j]), W[j]);\n T2 = safe_add(sha256_Sigma0256(a), sha256_Maj(a, b, c));\n h = g;\n g = f;\n f = e;\n e = safe_add(d, T1);\n d = c;\n c = b;\n b = a;\n a = safe_add(T1, T2);\n }\n\n HASH[0] = safe_add(a, HASH[0]);\n HASH[1] = safe_add(b, HASH[1]);\n HASH[2] = safe_add(c, HASH[2]);\n HASH[3] = safe_add(d, HASH[3]);\n HASH[4] = safe_add(e, HASH[4]);\n HASH[5] = safe_add(f, HASH[5]);\n HASH[6] = safe_add(g, HASH[6]);\n HASH[7] = safe_add(h, HASH[7]);\n }\n return HASH;\n}\n\nfunction safe_add (x, y)\n{\n var lsw = (x & 0xFFFF) + (y & 0xFFFF);\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return (msw << 16) | (lsw & 0xFFFF);\n}\n\nfunction slice (x) {\n return Array.prototype.slice.call(x)\n}\n\nfunction join (x) {\n return slice(x).join('')\n}\n\nfunction createEnvironment (options) {\n var cache = options && options.cache\n\n // Unique variable id counter\n var varCounter = 0\n\n // Linked values are passed from this scope into the generated code block\n // Calling link() passes a value into the generated scope and returns\n // the variable name which it is bound to\n var linkedNames = []\n var linkedValues = []\n var isStable = []\n function link (value, options) {\n var stable = options && options.stable\n if (!stable) {\n for (var i = 0; i < linkedValues.length; ++i) {\n if (linkedValues[i] === value && !isStable[i]) {\n return linkedNames[i]\n }\n }\n }\n\n var name = 'g' + (varCounter++)\n linkedNames.push(name)\n linkedValues.push(value)\n isStable.push(stable)\n return name\n }\n\n // create a code block\n function block () {\n var code = []\n function push () {\n code.push.apply(code, slice(arguments))\n }\n\n var vars = []\n function def () {\n var name = 'v' + (varCounter++)\n vars.push(name)\n\n if (arguments.length > 0) {\n code.push(name, '=')\n code.push.apply(code, slice(arguments))\n code.push(';')\n }\n\n return name\n }\n\n return extend(push, {\n def: def,\n toString: function () {\n return join([\n (vars.length > 0 ? 'var ' + vars.join(',') + ';' : ''),\n join(code)\n ])\n }\n })\n }\n\n function scope () {\n var entry = block()\n var exit = block()\n\n var entryToString = entry.toString\n var exitToString = exit.toString\n\n function save (object, prop) {\n exit(object, prop, '=', entry.def(object, prop), ';')\n }\n\n return extend(function () {\n entry.apply(entry, slice(arguments))\n }, {\n def: entry.def,\n entry: entry,\n exit: exit,\n save: save,\n set: function (object, prop, value) {\n save(object, prop)\n entry(object, prop, '=', value, ';')\n },\n toString: function () {\n return entryToString() + exitToString()\n }\n })\n }\n\n function conditional () {\n var pred = join(arguments)\n var thenBlock = scope()\n var elseBlock = scope()\n\n var thenToString = thenBlock.toString\n var elseToString = elseBlock.toString\n\n return extend(thenBlock, {\n then: function () {\n thenBlock.apply(thenBlock, slice(arguments))\n return this\n },\n else: function () {\n elseBlock.apply(elseBlock, slice(arguments))\n return this\n },\n toString: function () {\n var elseClause = elseToString()\n if (elseClause) {\n elseClause = 'else{' + elseClause + '}'\n }\n return join([\n 'if(', pred, '){',\n thenToString(),\n '}', elseClause\n ])\n }\n })\n }\n\n // procedure list\n var globalBlock = block()\n var procedures = {}\n function proc (name, count) {\n var args = []\n function arg () {\n var name = 'a' + args.length\n args.push(name)\n return name\n }\n\n count = count || 0\n for (var i = 0; i < count; ++i) {\n arg()\n }\n\n var body = scope()\n var bodyToString = body.toString\n\n var result = procedures[name] = extend(body, {\n arg: arg,\n toString: function () {\n return join([\n 'function(', args.join(), '){',\n bodyToString(),\n '}'\n ])\n }\n })\n\n return result\n }\n\n function compile () {\n var code = ['\"use strict\";',\n globalBlock,\n 'return {']\n Object.keys(procedures).forEach(function (name) {\n code.push('\"', name, '\":', procedures[name].toString(), ',')\n })\n code.push('}')\n var src = join(code)\n .replace(/;/g, ';\\n')\n .replace(/}/g, '}\\n')\n .replace(/{/g, '{\\n')\n\n var key\n if (cache) {\n key = hex_sha256(src);\n\n if (cache[key]) {\n return cache[key].apply(null, linkedValues)\n }\n }\n\n var proc = Function.apply(null, linkedNames.concat(src))\n\n if (cache) {\n cache[key] = proc\n }\n return proc.apply(null, linkedValues)\n }\n\n return {\n global: globalBlock,\n link: link,\n block: block,\n proc: proc,\n scope: scope,\n cond: conditional,\n compile: compile\n }\n}\n\n// \"cute\" names for vector components\nvar CUTE_COMPONENTS = 'xyzw'.split('')\n\nvar GL_UNSIGNED_BYTE$7 = 5121\n\nvar ATTRIB_STATE_POINTER = 1\nvar ATTRIB_STATE_CONSTANT = 2\n\nvar DYN_FUNC$1 = 0\nvar DYN_PROP$1 = 1\nvar DYN_CONTEXT$1 = 2\nvar DYN_STATE$1 = 3\nvar DYN_THUNK = 4\nvar DYN_CONSTANT$1 = 5\nvar DYN_ARRAY$1 = 6\n\nvar S_DITHER = 'dither'\nvar S_BLEND_ENABLE = 'blend.enable'\nvar S_BLEND_COLOR = 'blend.color'\nvar S_BLEND_EQUATION = 'blend.equation'\nvar S_BLEND_FUNC = 'blend.func'\nvar S_DEPTH_ENABLE = 'depth.enable'\nvar S_DEPTH_FUNC = 'depth.func'\nvar S_DEPTH_RANGE = 'depth.range'\nvar S_DEPTH_MASK = 'depth.mask'\nvar S_COLOR_MASK = 'colorMask'\nvar S_CULL_ENABLE = 'cull.enable'\nvar S_CULL_FACE = 'cull.face'\nvar S_FRONT_FACE = 'frontFace'\nvar S_LINE_WIDTH = 'lineWidth'\nvar S_POLYGON_OFFSET_ENABLE = 'polygonOffset.enable'\nvar S_POLYGON_OFFSET_OFFSET = 'polygonOffset.offset'\nvar S_SAMPLE_ALPHA = 'sample.alpha'\nvar S_SAMPLE_ENABLE = 'sample.enable'\nvar S_SAMPLE_COVERAGE = 'sample.coverage'\nvar S_STENCIL_ENABLE = 'stencil.enable'\nvar S_STENCIL_MASK = 'stencil.mask'\nvar S_STENCIL_FUNC = 'stencil.func'\nvar S_STENCIL_OPFRONT = 'stencil.opFront'\nvar S_STENCIL_OPBACK = 'stencil.opBack'\nvar S_SCISSOR_ENABLE = 'scissor.enable'\nvar S_SCISSOR_BOX = 'scissor.box'\nvar S_VIEWPORT = 'viewport'\n\nvar S_PROFILE = 'profile'\n\nvar S_FRAMEBUFFER = 'framebuffer'\nvar S_VERT = 'vert'\nvar S_FRAG = 'frag'\nvar S_ELEMENTS = 'elements'\nvar S_PRIMITIVE = 'primitive'\nvar S_COUNT = 'count'\nvar S_OFFSET = 'offset'\nvar S_INSTANCES = 'instances'\nvar S_VAO = 'vao'\n\nvar SUFFIX_WIDTH = 'Width'\nvar SUFFIX_HEIGHT = 'Height'\n\nvar S_FRAMEBUFFER_WIDTH = S_FRAMEBUFFER + SUFFIX_WIDTH\nvar S_FRAMEBUFFER_HEIGHT = S_FRAMEBUFFER + SUFFIX_HEIGHT\nvar S_VIEWPORT_WIDTH = S_VIEWPORT + SUFFIX_WIDTH\nvar S_VIEWPORT_HEIGHT = S_VIEWPORT + SUFFIX_HEIGHT\nvar S_DRAWINGBUFFER = 'drawingBuffer'\nvar S_DRAWINGBUFFER_WIDTH = S_DRAWINGBUFFER + SUFFIX_WIDTH\nvar S_DRAWINGBUFFER_HEIGHT = S_DRAWINGBUFFER + SUFFIX_HEIGHT\n\nvar NESTED_OPTIONS = [\n S_BLEND_FUNC,\n S_BLEND_EQUATION,\n S_STENCIL_FUNC,\n S_STENCIL_OPFRONT,\n S_STENCIL_OPBACK,\n S_SAMPLE_COVERAGE,\n S_VIEWPORT,\n S_SCISSOR_BOX,\n S_POLYGON_OFFSET_OFFSET\n]\n\nvar GL_ARRAY_BUFFER$2 = 34962\nvar GL_ELEMENT_ARRAY_BUFFER$2 = 34963\n\nvar GL_CULL_FACE = 0x0B44\nvar GL_BLEND = 0x0BE2\nvar GL_DITHER = 0x0BD0\nvar GL_STENCIL_TEST = 0x0B90\nvar GL_DEPTH_TEST = 0x0B71\nvar GL_SCISSOR_TEST = 0x0C11\nvar GL_POLYGON_OFFSET_FILL = 0x8037\nvar GL_SAMPLE_ALPHA_TO_COVERAGE = 0x809E\nvar GL_SAMPLE_COVERAGE = 0x80A0\n\nvar GL_FLOAT$7 = 5126\nvar GL_FLOAT_VEC2 = 35664\nvar GL_FLOAT_VEC3 = 35665\nvar GL_FLOAT_VEC4 = 35666\nvar GL_INT$2 = 5124\nvar GL_INT_VEC2 = 35667\nvar GL_INT_VEC3 = 35668\nvar GL_INT_VEC4 = 35669\nvar GL_BOOL = 35670\nvar GL_BOOL_VEC2 = 35671\nvar GL_BOOL_VEC3 = 35672\nvar GL_BOOL_VEC4 = 35673\nvar GL_FLOAT_MAT2 = 35674\nvar GL_FLOAT_MAT3 = 35675\nvar GL_FLOAT_MAT4 = 35676\nvar GL_SAMPLER_2D = 35678\nvar GL_SAMPLER_CUBE = 35680\n\nvar GL_TRIANGLES$1 = 4\n\nvar GL_FRONT = 1028\nvar GL_BACK = 1029\nvar GL_CW = 0x0900\nvar GL_CCW = 0x0901\nvar GL_MIN_EXT = 0x8007\nvar GL_MAX_EXT = 0x8008\nvar GL_ALWAYS = 519\nvar GL_KEEP = 7680\nvar GL_ZERO = 0\nvar GL_ONE = 1\nvar GL_FUNC_ADD = 0x8006\nvar GL_LESS = 513\n\nvar GL_FRAMEBUFFER$2 = 0x8D40\nvar GL_COLOR_ATTACHMENT0$2 = 0x8CE0\n\nvar blendFuncs = {\n '0': 0,\n '1': 1,\n 'zero': 0,\n 'one': 1,\n 'src color': 768,\n 'one minus src color': 769,\n 'src alpha': 770,\n 'one minus src alpha': 771,\n 'dst color': 774,\n 'one minus dst color': 775,\n 'dst alpha': 772,\n 'one minus dst alpha': 773,\n 'constant color': 32769,\n 'one minus constant color': 32770,\n 'constant alpha': 32771,\n 'one minus constant alpha': 32772,\n 'src alpha saturate': 776\n}\n\nvar compareFuncs = {\n 'never': 512,\n 'less': 513,\n '<': 513,\n 'equal': 514,\n '=': 514,\n '==': 514,\n '===': 514,\n 'lequal': 515,\n '<=': 515,\n 'greater': 516,\n '>': 516,\n 'notequal': 517,\n '!=': 517,\n '!==': 517,\n 'gequal': 518,\n '>=': 518,\n 'always': 519\n}\n\nvar stencilOps = {\n '0': 0,\n 'zero': 0,\n 'keep': 7680,\n 'replace': 7681,\n 'increment': 7682,\n 'decrement': 7683,\n 'increment wrap': 34055,\n 'decrement wrap': 34056,\n 'invert': 5386\n}\n\nvar orientationType = {\n 'cw': GL_CW,\n 'ccw': GL_CCW\n}\n\nfunction isBufferArgs (x) {\n return Array.isArray(x) ||\n isTypedArray(x) ||\n isNDArrayLike(x)\n}\n\n// Make sure viewport is processed first\nfunction sortState (state) {\n return state.sort(function (a, b) {\n if (a === S_VIEWPORT) {\n return -1\n } else if (b === S_VIEWPORT) {\n return 1\n }\n return (a < b) ? -1 : 1\n })\n}\n\nfunction Declaration (thisDep, contextDep, propDep, append) {\n this.thisDep = thisDep\n this.contextDep = contextDep\n this.propDep = propDep\n this.append = append\n}\n\nfunction isStatic (decl) {\n return decl && !(decl.thisDep || decl.contextDep || decl.propDep)\n}\n\nfunction createStaticDecl (append) {\n return new Declaration(false, false, false, append)\n}\n\nfunction createDynamicDecl (dyn, append) {\n var type = dyn.type\n if (type === DYN_FUNC$1) {\n var numArgs = dyn.data.length\n return new Declaration(\n true,\n numArgs >= 1,\n numArgs >= 2,\n append)\n } else if (type === DYN_THUNK) {\n var data = dyn.data\n return new Declaration(\n data.thisDep,\n data.contextDep,\n data.propDep,\n append)\n } else if (type === DYN_CONSTANT$1) {\n return new Declaration(\n false,\n false,\n false,\n append)\n } else if (type === DYN_ARRAY$1) {\n var thisDep = false\n var contextDep = false\n var propDep = false\n for (var i = 0; i < dyn.data.length; ++i) {\n var subDyn = dyn.data[i]\n if (subDyn.type === DYN_PROP$1) {\n propDep = true\n } else if (subDyn.type === DYN_CONTEXT$1) {\n contextDep = true\n } else if (subDyn.type === DYN_STATE$1) {\n thisDep = true\n } else if (subDyn.type === DYN_FUNC$1) {\n thisDep = true\n var subArgs = subDyn.data\n if (subArgs >= 1) {\n contextDep = true\n }\n if (subArgs >= 2) {\n propDep = true\n }\n } else if (subDyn.type === DYN_THUNK) {\n thisDep = thisDep || subDyn.data.thisDep\n contextDep = contextDep || subDyn.data.contextDep\n propDep = propDep || subDyn.data.propDep\n }\n }\n return new Declaration(\n thisDep,\n contextDep,\n propDep,\n append)\n } else {\n return new Declaration(\n type === DYN_STATE$1,\n type === DYN_CONTEXT$1,\n type === DYN_PROP$1,\n append)\n }\n}\n\nvar SCOPE_DECL = new Declaration(false, false, false, function () {})\n\nfunction reglCore (\n gl,\n stringStore,\n extensions,\n limits,\n bufferState,\n elementState,\n textureState,\n framebufferState,\n uniformState,\n attributeState,\n shaderState,\n drawState,\n contextState,\n timer,\n cachedCode,\n config) {\n var AttributeRecord = attributeState.Record\n\n var blendEquations = {\n 'add': 32774,\n 'subtract': 32778,\n 'reverse subtract': 32779\n }\n if (extensions.ext_blend_minmax) {\n blendEquations.min = GL_MIN_EXT\n blendEquations.max = GL_MAX_EXT\n }\n\n var extInstancing = extensions.angle_instanced_arrays\n var extDrawBuffers = extensions.webgl_draw_buffers\n var extVertexArrays = extensions.oes_vertex_array_object\n\n // ===================================================\n // ===================================================\n // WEBGL STATE\n // ===================================================\n // ===================================================\n var currentState = {\n dirty: true,\n profile: config.profile\n }\n var nextState = {}\n var GL_STATE_NAMES = []\n var GL_FLAGS = {}\n var GL_VARIABLES = {}\n\n function propName (name) {\n return name.replace('.', '_')\n }\n\n function stateFlag (sname, cap, init) {\n var name = propName(sname)\n GL_STATE_NAMES.push(sname)\n nextState[name] = currentState[name] = !!init\n GL_FLAGS[name] = cap\n }\n\n function stateVariable (sname, func, init) {\n var name = propName(sname)\n GL_STATE_NAMES.push(sname)\n if (Array.isArray(init)) {\n currentState[name] = init.slice()\n nextState[name] = init.slice()\n } else {\n currentState[name] = nextState[name] = init\n }\n GL_VARIABLES[name] = func\n }\n \n function hasVariableReference (exp) {\n if (!isNaN(exp)) {\n return false;\n }\n // strengthen this function if variable values can be non-(null/number) literals.\n return true;\n }\n\n // Dithering\n stateFlag(S_DITHER, GL_DITHER)\n\n // Blending\n stateFlag(S_BLEND_ENABLE, GL_BLEND)\n stateVariable(S_BLEND_COLOR, 'blendColor', [0, 0, 0, 0])\n stateVariable(S_BLEND_EQUATION, 'blendEquationSeparate',\n [GL_FUNC_ADD, GL_FUNC_ADD])\n stateVariable(S_BLEND_FUNC, 'blendFuncSeparate',\n [GL_ONE, GL_ZERO, GL_ONE, GL_ZERO])\n\n // Depth\n stateFlag(S_DEPTH_ENABLE, GL_DEPTH_TEST, true)\n stateVariable(S_DEPTH_FUNC, 'depthFunc', GL_LESS)\n stateVariable(S_DEPTH_RANGE, 'depthRange', [0, 1])\n stateVariable(S_DEPTH_MASK, 'depthMask', true)\n\n // Color mask\n stateVariable(S_COLOR_MASK, S_COLOR_MASK, [true, true, true, true])\n\n // Face culling\n stateFlag(S_CULL_ENABLE, GL_CULL_FACE)\n stateVariable(S_CULL_FACE, 'cullFace', GL_BACK)\n\n // Front face orientation\n stateVariable(S_FRONT_FACE, S_FRONT_FACE, GL_CCW)\n\n // Line width\n stateVariable(S_LINE_WIDTH, S_LINE_WIDTH, 1)\n\n // Polygon offset\n stateFlag(S_POLYGON_OFFSET_ENABLE, GL_POLYGON_OFFSET_FILL)\n stateVariable(S_POLYGON_OFFSET_OFFSET, 'polygonOffset', [0, 0])\n\n // Sample coverage\n stateFlag(S_SAMPLE_ALPHA, GL_SAMPLE_ALPHA_TO_COVERAGE)\n stateFlag(S_SAMPLE_ENABLE, GL_SAMPLE_COVERAGE)\n stateVariable(S_SAMPLE_COVERAGE, 'sampleCoverage', [1, false])\n\n // Stencil\n stateFlag(S_STENCIL_ENABLE, GL_STENCIL_TEST)\n stateVariable(S_STENCIL_MASK, 'stencilMask', -1)\n stateVariable(S_STENCIL_FUNC, 'stencilFunc', [GL_ALWAYS, 0, -1])\n stateVariable(S_STENCIL_OPFRONT, 'stencilOpSeparate',\n [GL_FRONT, GL_KEEP, GL_KEEP, GL_KEEP])\n stateVariable(S_STENCIL_OPBACK, 'stencilOpSeparate',\n [GL_BACK, GL_KEEP, GL_KEEP, GL_KEEP])\n\n // Scissor\n stateFlag(S_SCISSOR_ENABLE, GL_SCISSOR_TEST)\n stateVariable(S_SCISSOR_BOX, 'scissor',\n [0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight])\n\n // Viewport\n stateVariable(S_VIEWPORT, S_VIEWPORT,\n [0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight])\n\n // ===================================================\n // ===================================================\n // ENVIRONMENT\n // ===================================================\n // ===================================================\n var sharedState = {\n gl: gl,\n context: contextState,\n strings: stringStore,\n next: nextState,\n current: currentState,\n draw: drawState,\n elements: elementState,\n buffer: bufferState,\n shader: shaderState,\n attributes: attributeState.state,\n vao: attributeState,\n uniforms: uniformState,\n framebuffer: framebufferState,\n extensions: extensions,\n\n timer: timer,\n isBufferArgs: isBufferArgs\n }\n\n var sharedConstants = {\n primTypes: primTypes,\n compareFuncs: compareFuncs,\n blendFuncs: blendFuncs,\n blendEquations: blendEquations,\n stencilOps: stencilOps,\n glTypes: glTypes,\n orientationType: orientationType\n }\n\n \n\n if (extDrawBuffers) {\n sharedConstants.backBuffer = [GL_BACK]\n sharedConstants.drawBuffer = loop(limits.maxDrawbuffers, function (i) {\n if (i === 0) {\n return [0]\n }\n return loop(i, function (j) {\n return GL_COLOR_ATTACHMENT0$2 + j\n })\n })\n }\n\n var drawCallCounter = 0\n function createREGLEnvironment () {\n var env = createEnvironment({cache: cachedCode})\n var link = env.link\n var global = env.global\n env.id = drawCallCounter++\n\n env.batchId = '0'\n\n // link shared state\n var SHARED = link(sharedState)\n var shared = env.shared = {\n props: 'a0'\n }\n Object.keys(sharedState).forEach(function (prop) {\n shared[prop] = global.def(SHARED, '.', prop)\n })\n\n // Inject runtime assertion stuff for debug builds\n \n\n // Copy GL state variables over\n var nextVars = env.next = {}\n var currentVars = env.current = {}\n Object.keys(GL_VARIABLES).forEach(function (variable) {\n if (Array.isArray(currentState[variable])) {\n nextVars[variable] = global.def(shared.next, '.', variable)\n currentVars[variable] = global.def(shared.current, '.', variable)\n }\n })\n\n // Initialize shared constants\n var constants = env.constants = {}\n Object.keys(sharedConstants).forEach(function (name) {\n constants[name] = global.def(JSON.stringify(sharedConstants[name]))\n })\n\n // Helper function for calling a block\n env.invoke = function (block, x) {\n switch (x.type) {\n case DYN_FUNC$1:\n var argList = [\n 'this',\n shared.context,\n shared.props,\n env.batchId\n ]\n return block.def(\n link(x.data), '.call(',\n argList.slice(0, Math.max(x.data.length + 1, 4)),\n ')')\n case DYN_PROP$1:\n return block.def(shared.props, x.data)\n case DYN_CONTEXT$1:\n return block.def(shared.context, x.data)\n case DYN_STATE$1:\n return block.def('this', x.data)\n case DYN_THUNK:\n x.data.append(env, block)\n return x.data.ref\n case DYN_CONSTANT$1:\n return x.data.toString()\n case DYN_ARRAY$1:\n return x.data.map(function (y) {\n return env.invoke(block, y)\n })\n }\n }\n\n env.attribCache = {}\n\n var scopeAttribs = {}\n env.scopeAttrib = function (name) {\n var id = stringStore.id(name)\n if (id in scopeAttribs) {\n return scopeAttribs[id]\n }\n var binding = attributeState.scope[id]\n if (!binding) {\n binding = attributeState.scope[id] = new AttributeRecord()\n }\n var result = scopeAttribs[id] = link(binding)\n return result\n }\n\n return env\n }\n\n // ===================================================\n // ===================================================\n // PARSING\n // ===================================================\n // ===================================================\n function parseProfile (options) {\n var staticOptions = options.static\n var dynamicOptions = options.dynamic\n\n var profileEnable\n if (S_PROFILE in staticOptions) {\n var value = !!staticOptions[S_PROFILE]\n profileEnable = createStaticDecl(function (env, scope) {\n return value\n })\n profileEnable.enable = value\n } else if (S_PROFILE in dynamicOptions) {\n var dyn = dynamicOptions[S_PROFILE]\n profileEnable = createDynamicDecl(dyn, function (env, scope) {\n return env.invoke(scope, dyn)\n })\n }\n\n return profileEnable\n }\n\n function parseFramebuffer (options, env) {\n var staticOptions = options.static\n var dynamicOptions = options.dynamic\n\n if (S_FRAMEBUFFER in staticOptions) {\n var framebuffer = staticOptions[S_FRAMEBUFFER]\n if (framebuffer) {\n framebuffer = framebufferState.getFramebuffer(framebuffer)\n \n return createStaticDecl(function (env, block) {\n var FRAMEBUFFER = env.link(framebuffer)\n var shared = env.shared\n block.set(\n shared.framebuffer,\n '.next',\n FRAMEBUFFER)\n var CONTEXT = shared.context\n block.set(\n CONTEXT,\n '.' + S_FRAMEBUFFER_WIDTH,\n FRAMEBUFFER + '.width')\n block.set(\n CONTEXT,\n '.' + S_FRAMEBUFFER_HEIGHT,\n FRAMEBUFFER + '.height')\n return FRAMEBUFFER\n })\n } else {\n return createStaticDecl(function (env, scope) {\n var shared = env.shared\n scope.set(\n shared.framebuffer,\n '.next',\n 'null')\n var CONTEXT = shared.context\n scope.set(\n CONTEXT,\n '.' + S_FRAMEBUFFER_WIDTH,\n CONTEXT + '.' + S_DRAWINGBUFFER_WIDTH)\n scope.set(\n CONTEXT,\n '.' + S_FRAMEBUFFER_HEIGHT,\n CONTEXT + '.' + S_DRAWINGBUFFER_HEIGHT)\n return 'null'\n })\n }\n } else if (S_FRAMEBUFFER in dynamicOptions) {\n var dyn = dynamicOptions[S_FRAMEBUFFER]\n return createDynamicDecl(dyn, function (env, scope) {\n var FRAMEBUFFER_FUNC = env.invoke(scope, dyn)\n var shared = env.shared\n var FRAMEBUFFER_STATE = shared.framebuffer\n var FRAMEBUFFER = scope.def(\n FRAMEBUFFER_STATE, '.getFramebuffer(', FRAMEBUFFER_FUNC, ')')\n\n \n\n scope.set(\n FRAMEBUFFER_STATE,\n '.next',\n FRAMEBUFFER)\n var CONTEXT = shared.context\n scope.set(\n CONTEXT,\n '.' + S_FRAMEBUFFER_WIDTH,\n FRAMEBUFFER + '?' + FRAMEBUFFER + '.width:' +\n CONTEXT + '.' + S_DRAWINGBUFFER_WIDTH)\n scope.set(\n CONTEXT,\n '.' + S_FRAMEBUFFER_HEIGHT,\n FRAMEBUFFER +\n '?' + FRAMEBUFFER + '.height:' +\n CONTEXT + '.' + S_DRAWINGBUFFER_HEIGHT)\n return FRAMEBUFFER\n })\n } else {\n return null\n }\n }\n\n function parseViewportScissor (options, framebuffer, env) {\n var staticOptions = options.static\n var dynamicOptions = options.dynamic\n\n function parseBox (param) {\n if (param in staticOptions) {\n var box = staticOptions[param]\n \n\n var isStatic = true\n var x = box.x | 0\n var y = box.y | 0\n var w, h\n if ('width' in box) {\n w = box.width | 0\n \n } else {\n isStatic = false\n }\n if ('height' in box) {\n h = box.height | 0\n \n } else {\n isStatic = false\n }\n\n return new Declaration(\n !isStatic && framebuffer && framebuffer.thisDep,\n !isStatic && framebuffer && framebuffer.contextDep,\n !isStatic && framebuffer && framebuffer.propDep,\n function (env, scope) {\n var CONTEXT = env.shared.context\n var BOX_W = w\n if (!('width' in box)) {\n BOX_W = scope.def(CONTEXT, '.', S_FRAMEBUFFER_WIDTH, '-', x)\n }\n var BOX_H = h\n if (!('height' in box)) {\n BOX_H = scope.def(CONTEXT, '.', S_FRAMEBUFFER_HEIGHT, '-', y)\n }\n return [x, y, BOX_W, BOX_H]\n })\n } else if (param in dynamicOptions) {\n var dynBox = dynamicOptions[param]\n var result = createDynamicDecl(dynBox, function (env, scope) {\n var BOX = env.invoke(scope, dynBox)\n\n \n\n var CONTEXT = env.shared.context\n var BOX_X = scope.def(BOX, '.x|0')\n var BOX_Y = scope.def(BOX, '.y|0')\n var BOX_W = scope.def(\n '\"width\" in ', BOX, '?', BOX, '.width|0:',\n '(', CONTEXT, '.', S_FRAMEBUFFER_WIDTH, '-', BOX_X, ')')\n var BOX_H = scope.def(\n '\"height\" in ', BOX, '?', BOX, '.height|0:',\n '(', CONTEXT, '.', S_FRAMEBUFFER_HEIGHT, '-', BOX_Y, ')')\n\n \n\n return [BOX_X, BOX_Y, BOX_W, BOX_H]\n })\n if (framebuffer) {\n result.thisDep = result.thisDep || framebuffer.thisDep\n result.contextDep = result.contextDep || framebuffer.contextDep\n result.propDep = result.propDep || framebuffer.propDep\n }\n return result\n } else if (framebuffer) {\n return new Declaration(\n framebuffer.thisDep,\n framebuffer.contextDep,\n framebuffer.propDep,\n function (env, scope) {\n var CONTEXT = env.shared.context\n return [\n 0, 0,\n scope.def(CONTEXT, '.', S_FRAMEBUFFER_WIDTH),\n scope.def(CONTEXT, '.', S_FRAMEBUFFER_HEIGHT)]\n })\n } else {\n return null\n }\n }\n\n var viewport = parseBox(S_VIEWPORT)\n\n if (viewport) {\n var prevViewport = viewport\n viewport = new Declaration(\n viewport.thisDep,\n viewport.contextDep,\n viewport.propDep,\n function (env, scope) {\n var VIEWPORT = prevViewport.append(env, scope)\n var CONTEXT = env.shared.context\n scope.set(\n CONTEXT,\n '.' + S_VIEWPORT_WIDTH,\n VIEWPORT[2])\n scope.set(\n CONTEXT,\n '.' + S_VIEWPORT_HEIGHT,\n VIEWPORT[3])\n return VIEWPORT\n })\n }\n\n return {\n viewport: viewport,\n scissor_box: parseBox(S_SCISSOR_BOX)\n }\n }\n\n function parseAttribLocations (options, attributes) {\n var staticOptions = options.static\n var staticProgram =\n typeof staticOptions[S_FRAG] === 'string' &&\n typeof staticOptions[S_VERT] === 'string'\n if (staticProgram) {\n if (Object.keys(attributes.dynamic).length > 0) {\n return null\n }\n var staticAttributes = attributes.static\n var sAttributes = Object.keys(staticAttributes)\n if (sAttributes.length > 0 && typeof staticAttributes[sAttributes[0]] === 'number') {\n var bindings = []\n for (var i = 0; i < sAttributes.length; ++i) {\n \n bindings.push([staticAttributes[sAttributes[i]] | 0, sAttributes[i]])\n }\n return bindings\n }\n }\n return null\n }\n\n function parseProgram (options, env, attribLocations) {\n var staticOptions = options.static\n var dynamicOptions = options.dynamic\n\n function parseShader (name) {\n if (name in staticOptions) {\n var id = stringStore.id(staticOptions[name])\n \n var result = createStaticDecl(function () {\n return id\n })\n result.id = id\n return result\n } else if (name in dynamicOptions) {\n var dyn = dynamicOptions[name]\n return createDynamicDecl(dyn, function (env, scope) {\n var str = env.invoke(scope, dyn)\n var id = scope.def(env.shared.strings, '.id(', str, ')')\n \n return id\n })\n }\n return null\n }\n\n var frag = parseShader(S_FRAG)\n var vert = parseShader(S_VERT)\n\n var program = null\n var progVar\n if (isStatic(frag) && isStatic(vert)) {\n program = shaderState.program(vert.id, frag.id, null, attribLocations)\n progVar = createStaticDecl(function (env, scope) {\n return env.link(program)\n })\n } else {\n progVar = new Declaration(\n (frag && frag.thisDep) || (vert && vert.thisDep),\n (frag && frag.contextDep) || (vert && vert.contextDep),\n (frag && frag.propDep) || (vert && vert.propDep),\n function (env, scope) {\n var SHADER_STATE = env.shared.shader\n var fragId\n if (frag) {\n fragId = frag.append(env, scope)\n } else {\n fragId = scope.def(SHADER_STATE, '.', S_FRAG)\n }\n var vertId\n if (vert) {\n vertId = vert.append(env, scope)\n } else {\n vertId = scope.def(SHADER_STATE, '.', S_VERT)\n }\n var progDef = SHADER_STATE + '.program(' + vertId + ',' + fragId\n \n return scope.def(progDef + ')')\n })\n }\n\n return {\n frag: frag,\n vert: vert,\n progVar: progVar,\n program: program\n }\n }\n\n function parseDraw (options, env) {\n var staticOptions = options.static\n var dynamicOptions = options.dynamic\n\n // TODO: should use VAO to get default values for offset properties\n // should move vao parse into here and out of the old stuff\n\n var staticDraw = {}\n var vaoActive = false\n\n function parseVAO () {\n if (S_VAO in staticOptions) {\n var vao = staticOptions[S_VAO]\n if (vao !== null && attributeState.getVAO(vao) === null) {\n vao = attributeState.createVAO(vao)\n }\n\n vaoActive = true\n staticDraw.vao = vao\n\n return createStaticDecl(function (env) {\n var vaoRef = attributeState.getVAO(vao)\n if (vaoRef) {\n return env.link(vaoRef)\n } else {\n return 'null'\n }\n })\n } else if (S_VAO in dynamicOptions) {\n vaoActive = true\n var dyn = dynamicOptions[S_VAO]\n return createDynamicDecl(dyn, function (env, scope) {\n var vaoRef = env.invoke(scope, dyn)\n return scope.def(env.shared.vao + '.getVAO(' + vaoRef + ')')\n })\n }\n return null\n }\n\n var vao = parseVAO()\n\n var elementsActive = false\n\n function parseElements () {\n if (S_ELEMENTS in staticOptions) {\n var elements = staticOptions[S_ELEMENTS]\n staticDraw.elements = elements\n if (isBufferArgs(elements)) {\n var e = staticDraw.elements = elementState.create(elements, true)\n elements = elementState.getElements(e)\n elementsActive = true\n } else if (elements) {\n elements = elementState.getElements(elements)\n elementsActive = true\n \n }\n\n var result = createStaticDecl(function (env, scope) {\n if (elements) {\n var result = env.link(elements)\n env.ELEMENTS = result\n return result\n }\n env.ELEMENTS = null\n return null\n })\n result.value = elements\n return result\n } else if (S_ELEMENTS in dynamicOptions) {\n elementsActive = true\n\n var dyn = dynamicOptions[S_ELEMENTS]\n return createDynamicDecl(dyn, function (env, scope) {\n var shared = env.shared\n\n var IS_BUFFER_ARGS = shared.isBufferArgs\n var ELEMENT_STATE = shared.elements\n\n var elementDefn = env.invoke(scope, dyn)\n var elements = scope.def('null')\n var elementStream = scope.def(IS_BUFFER_ARGS, '(', elementDefn, ')')\n\n var ifte = env.cond(elementStream)\n .then(elements, '=', ELEMENT_STATE, '.createStream(', elementDefn, ');')\n .else(elements, '=', ELEMENT_STATE, '.getElements(', elementDefn, ');')\n\n \n\n scope.entry(ifte)\n scope.exit(\n env.cond(elementStream)\n .then(ELEMENT_STATE, '.destroyStream(', elements, ');'))\n\n env.ELEMENTS = elements\n\n return elements\n })\n } else if (vaoActive) {\n return new Declaration(\n vao.thisDep,\n vao.contextDep,\n vao.propDep,\n function (env, scope) {\n return scope.def(env.shared.vao + '.currentVAO?' + env.shared.elements + '.getElements(' + env.shared.vao + '.currentVAO.elements):null')\n })\n }\n return null\n }\n\n var elements = parseElements()\n\n function parsePrimitive () {\n if (S_PRIMITIVE in staticOptions) {\n var primitive = staticOptions[S_PRIMITIVE]\n staticDraw.primitive = primitive\n \n return createStaticDecl(function (env, scope) {\n return primTypes[primitive]\n })\n } else if (S_PRIMITIVE in dynamicOptions) {\n var dynPrimitive = dynamicOptions[S_PRIMITIVE]\n return createDynamicDecl(dynPrimitive, function (env, scope) {\n var PRIM_TYPES = env.constants.primTypes\n var prim = env.invoke(scope, dynPrimitive)\n \n return scope.def(PRIM_TYPES, '[', prim, ']')\n })\n } else if (elementsActive) {\n if (isStatic(elements)) {\n if (elements.value) {\n return createStaticDecl(function (env, scope) {\n return scope.def(env.ELEMENTS, '.primType')\n })\n } else {\n return createStaticDecl(function () {\n return GL_TRIANGLES$1\n })\n }\n } else {\n return new Declaration(\n elements.thisDep,\n elements.contextDep,\n elements.propDep,\n function (env, scope) {\n var elements = env.ELEMENTS\n return scope.def(elements, '?', elements, '.primType:', GL_TRIANGLES$1)\n })\n }\n } else if (vaoActive) {\n return new Declaration(\n vao.thisDep,\n vao.contextDep,\n vao.propDep,\n function (env, scope) {\n return scope.def(env.shared.vao + '.currentVAO?' + env.shared.vao + '.currentVAO.primitive:' + GL_TRIANGLES$1)\n })\n }\n return null\n }\n\n function parseParam (param, isOffset) {\n if (param in staticOptions) {\n var value = staticOptions[param] | 0\n if (isOffset) {\n staticDraw.offset = value\n } else {\n staticDraw.instances = value\n }\n \n return createStaticDecl(function (env, scope) {\n if (isOffset) {\n env.OFFSET = value\n }\n return value\n })\n } else if (param in dynamicOptions) {\n var dynValue = dynamicOptions[param]\n return createDynamicDecl(dynValue, function (env, scope) {\n var result = env.invoke(scope, dynValue)\n if (isOffset) {\n env.OFFSET = result\n \n }\n return result\n })\n } else if (isOffset) {\n if (elementsActive) {\n return createStaticDecl(function (env, scope) {\n env.OFFSET = 0\n return 0\n })\n } else if (vaoActive) {\n return new Declaration(\n vao.thisDep,\n vao.contextDep,\n vao.propDep,\n function (env, scope) {\n return scope.def(env.shared.vao + '.currentVAO?' + env.shared.vao + '.currentVAO.offset:0')\n })\n }\n } else if (vaoActive) {\n return new Declaration(\n vao.thisDep,\n vao.contextDep,\n vao.propDep,\n function (env, scope) {\n return scope.def(env.shared.vao + '.currentVAO?' + env.shared.vao + '.currentVAO.instances:-1')\n })\n }\n return null\n }\n\n var OFFSET = parseParam(S_OFFSET, true)\n\n function parseVertCount () {\n if (S_COUNT in staticOptions) {\n var count = staticOptions[S_COUNT] | 0\n staticDraw.count = count\n \n return createStaticDecl(function () {\n return count\n })\n } else if (S_COUNT in dynamicOptions) {\n var dynCount = dynamicOptions[S_COUNT]\n return createDynamicDecl(dynCount, function (env, scope) {\n var result = env.invoke(scope, dynCount)\n \n return result\n })\n } else if (elementsActive) {\n if (isStatic(elements)) {\n if (elements) {\n if (OFFSET) {\n return new Declaration(\n OFFSET.thisDep,\n OFFSET.contextDep,\n OFFSET.propDep,\n function (env, scope) {\n var result = scope.def(\n env.ELEMENTS, '.vertCount-', env.OFFSET)\n\n \n\n return result\n })\n } else {\n return createStaticDecl(function (env, scope) {\n return scope.def(env.ELEMENTS, '.vertCount')\n })\n }\n } else {\n var result = createStaticDecl(function () {\n return -1\n })\n \n return result\n }\n } else {\n var variable = new Declaration(\n elements.thisDep || OFFSET.thisDep,\n elements.contextDep || OFFSET.contextDep,\n elements.propDep || OFFSET.propDep,\n function (env, scope) {\n var elements = env.ELEMENTS\n if (env.OFFSET) {\n return scope.def(elements, '?', elements, '.vertCount-',\n env.OFFSET, ':-1')\n }\n return scope.def(elements, '?', elements, '.vertCount:-1')\n })\n \n return variable\n }\n } else if (vaoActive) {\n var countVariable = new Declaration(\n vao.thisDep,\n vao.contextDep,\n vao.propDep,\n function (env, scope) {\n return scope.def(env.shared.vao, '.currentVAO?', env.shared.vao, '.currentVAO.count:-1')\n })\n return countVariable\n }\n return null\n }\n\n var primitive = parsePrimitive()\n var count = parseVertCount()\n var instances = parseParam(S_INSTANCES, false)\n\n return {\n elements: elements,\n primitive: primitive,\n count: count,\n instances: instances,\n offset: OFFSET,\n vao: vao,\n\n vaoActive: vaoActive,\n elementsActive: elementsActive,\n\n // static draw props\n static: staticDraw\n }\n }\n\n function parseGLState (options, env) {\n var staticOptions = options.static\n var dynamicOptions = options.dynamic\n\n var STATE = {}\n\n GL_STATE_NAMES.forEach(function (prop) {\n var param = propName(prop)\n\n function parseParam (parseStatic, parseDynamic) {\n if (prop in staticOptions) {\n var value = parseStatic(staticOptions[prop])\n STATE[param] = createStaticDecl(function () {\n return value\n })\n } else if (prop in dynamicOptions) {\n var dyn = dynamicOptions[prop]\n STATE[param] = createDynamicDecl(dyn, function (env, scope) {\n return parseDynamic(env, scope, env.invoke(scope, dyn))\n })\n }\n }\n\n switch (prop) {\n case S_CULL_ENABLE:\n case S_BLEND_ENABLE:\n case S_DITHER:\n case S_STENCIL_ENABLE:\n case S_DEPTH_ENABLE:\n case S_SCISSOR_ENABLE:\n case S_POLYGON_OFFSET_ENABLE:\n case S_SAMPLE_ALPHA:\n case S_SAMPLE_ENABLE:\n case S_DEPTH_MASK:\n return parseParam(\n function (value) {\n \n return value\n },\n function (env, scope, value) {\n \n return value\n })\n\n case S_DEPTH_FUNC:\n return parseParam(\n function (value) {\n \n return compareFuncs[value]\n },\n function (env, scope, value) {\n var COMPARE_FUNCS = env.constants.compareFuncs\n \n return scope.def(COMPARE_FUNCS, '[', value, ']')\n })\n\n case S_DEPTH_RANGE:\n return parseParam(\n function (value) {\n \n return value\n },\n function (env, scope, value) {\n \n\n var Z_NEAR = scope.def('+', value, '[0]')\n var Z_FAR = scope.def('+', value, '[1]')\n return [Z_NEAR, Z_FAR]\n })\n\n case S_BLEND_FUNC:\n return parseParam(\n function (value) {\n \n var srcRGB = ('srcRGB' in value ? value.srcRGB : value.src)\n var srcAlpha = ('srcAlpha' in value ? value.srcAlpha : value.src)\n var dstRGB = ('dstRGB' in value ? value.dstRGB : value.dst)\n var dstAlpha = ('dstAlpha' in value ? value.dstAlpha : value.dst)\n \n \n \n \n\n \n\n return [\n blendFuncs[srcRGB],\n blendFuncs[dstRGB],\n blendFuncs[srcAlpha],\n blendFuncs[dstAlpha]\n ]\n },\n function (env, scope, value) {\n var BLEND_FUNCS = env.constants.blendFuncs\n\n \n\n function read (prefix, suffix) {\n var func = scope.def(\n '\"', prefix, suffix, '\" in ', value,\n '?', value, '.', prefix, suffix,\n ':', value, '.', prefix)\n\n \n\n return func\n }\n\n var srcRGB = read('src', 'RGB')\n var dstRGB = read('dst', 'RGB')\n\n \n\n var SRC_RGB = scope.def(BLEND_FUNCS, '[', srcRGB, ']')\n var SRC_ALPHA = scope.def(BLEND_FUNCS, '[', read('src', 'Alpha'), ']')\n var DST_RGB = scope.def(BLEND_FUNCS, '[', dstRGB, ']')\n var DST_ALPHA = scope.def(BLEND_FUNCS, '[', read('dst', 'Alpha'), ']')\n\n return [SRC_RGB, DST_RGB, SRC_ALPHA, DST_ALPHA]\n })\n\n case S_BLEND_EQUATION:\n return parseParam(\n function (value) {\n if (typeof value === 'string') {\n \n return [\n blendEquations[value],\n blendEquations[value]\n ]\n } else if (typeof value === 'object') {\n \n \n return [\n blendEquations[value.rgb],\n blendEquations[value.alpha]\n ]\n } else {\n \n }\n },\n function (env, scope, value) {\n var BLEND_EQUATIONS = env.constants.blendEquations\n\n var RGB = scope.def()\n var ALPHA = scope.def()\n\n var ifte = env.cond('typeof ', value, '===\"string\"')\n\n \n\n ifte.then(\n RGB, '=', ALPHA, '=', BLEND_EQUATIONS, '[', value, '];')\n ifte.else(\n RGB, '=', BLEND_EQUATIONS, '[', value, '.rgb];',\n ALPHA, '=', BLEND_EQUATIONS, '[', value, '.alpha];')\n\n scope(ifte)\n\n return [RGB, ALPHA]\n })\n\n case S_BLEND_COLOR:\n return parseParam(\n function (value) {\n \n return loop(4, function (i) {\n return +value[i]\n })\n },\n function (env, scope, value) {\n \n return loop(4, function (i) {\n return scope.def('+', value, '[', i, ']')\n })\n })\n\n case S_STENCIL_MASK:\n return parseParam(\n function (value) {\n \n return value | 0\n },\n function (env, scope, value) {\n \n return scope.def(value, '|0')\n })\n\n case S_STENCIL_FUNC:\n return parseParam(\n function (value) {\n \n var cmp = value.cmp || 'keep'\n var ref = value.ref || 0\n var mask = 'mask' in value ? value.mask : -1\n \n \n \n return [\n compareFuncs[cmp],\n ref,\n mask\n ]\n },\n function (env, scope, value) {\n var COMPARE_FUNCS = env.constants.compareFuncs\n \n var cmp = scope.def(\n '\"cmp\" in ', value,\n '?', COMPARE_FUNCS, '[', value, '.cmp]',\n ':', GL_KEEP)\n var ref = scope.def(value, '.ref|0')\n var mask = scope.def(\n '\"mask\" in ', value,\n '?', value, '.mask|0:-1')\n return [cmp, ref, mask]\n })\n\n case S_STENCIL_OPFRONT:\n case S_STENCIL_OPBACK:\n return parseParam(\n function (value) {\n \n var fail = value.fail || 'keep'\n var zfail = value.zfail || 'keep'\n var zpass = value.zpass || 'keep'\n \n \n \n return [\n prop === S_STENCIL_OPBACK ? GL_BACK : GL_FRONT,\n stencilOps[fail],\n stencilOps[zfail],\n stencilOps[zpass]\n ]\n },\n function (env, scope, value) {\n var STENCIL_OPS = env.constants.stencilOps\n\n \n\n function read (name) {\n \n\n return scope.def(\n '\"', name, '\" in ', value,\n '?', STENCIL_OPS, '[', value, '.', name, ']:',\n GL_KEEP)\n }\n\n return [\n prop === S_STENCIL_OPBACK ? GL_BACK : GL_FRONT,\n read('fail'),\n read('zfail'),\n read('zpass')\n ]\n })\n\n case S_POLYGON_OFFSET_OFFSET:\n return parseParam(\n function (value) {\n \n var factor = value.factor | 0\n var units = value.units | 0\n \n \n return [factor, units]\n },\n function (env, scope, value) {\n \n\n var FACTOR = scope.def(value, '.factor|0')\n var UNITS = scope.def(value, '.units|0')\n\n return [FACTOR, UNITS]\n })\n\n case S_CULL_FACE:\n return parseParam(\n function (value) {\n var face = 0\n if (value === 'front') {\n face = GL_FRONT\n } else if (value === 'back') {\n face = GL_BACK\n }\n \n return face\n },\n function (env, scope, value) {\n \n return scope.def(value, '===\"front\"?', GL_FRONT, ':', GL_BACK)\n })\n\n case S_LINE_WIDTH:\n return parseParam(\n function (value) {\n \n return value\n },\n function (env, scope, value) {\n \n\n return value\n })\n\n case S_FRONT_FACE:\n return parseParam(\n function (value) {\n \n return orientationType[value]\n },\n function (env, scope, value) {\n \n return scope.def(value + '===\"cw\"?' + GL_CW + ':' + GL_CCW)\n })\n\n case S_COLOR_MASK:\n return parseParam(\n function (value) {\n \n return value.map(function (v) { return !!v })\n },\n function (env, scope, value) {\n \n return loop(4, function (i) {\n return '!!' + value + '[' + i + ']'\n })\n })\n\n case S_SAMPLE_COVERAGE:\n return parseParam(\n function (value) {\n \n var sampleValue = 'value' in value ? value.value : 1\n var sampleInvert = !!value.invert\n \n return [sampleValue, sampleInvert]\n },\n function (env, scope, value) {\n \n var VALUE = scope.def(\n '\"value\" in ', value, '?+', value, '.value:1')\n var INVERT = scope.def('!!', value, '.invert')\n return [VALUE, INVERT]\n })\n }\n })\n\n return STATE\n }\n\n function parseUniforms (uniforms, env) {\n var staticUniforms = uniforms.static\n var dynamicUniforms = uniforms.dynamic\n\n var UNIFORMS = {}\n\n Object.keys(staticUniforms).forEach(function (name) {\n var value = staticUniforms[name]\n var result\n if (typeof value === 'number' ||\n typeof value === 'boolean') {\n result = createStaticDecl(function () {\n return value\n })\n } else if (typeof value === 'function') {\n var reglType = value._reglType\n if (reglType === 'texture2d' ||\n reglType === 'textureCube') {\n result = createStaticDecl(function (env) {\n return env.link(value)\n })\n } else if (reglType === 'framebuffer' ||\n reglType === 'framebufferCube') {\n \n result = createStaticDecl(function (env) {\n return env.link(value.color[0])\n })\n } else {\n \n }\n } else if (isArrayLike(value)) {\n result = createStaticDecl(function (env) {\n var ITEM = env.global.def('[',\n loop(value.length, function (i) {\n \n return value[i]\n }), ']')\n return ITEM\n })\n } else {\n \n }\n result.value = value\n UNIFORMS[name] = result\n })\n\n Object.keys(dynamicUniforms).forEach(function (key) {\n var dyn = dynamicUniforms[key]\n UNIFORMS[key] = createDynamicDecl(dyn, function (env, scope) {\n return env.invoke(scope, dyn)\n })\n })\n\n return UNIFORMS\n }\n\n function parseAttributes (attributes, env) {\n var staticAttributes = attributes.static\n var dynamicAttributes = attributes.dynamic\n\n var attributeDefs = {}\n\n Object.keys(staticAttributes).forEach(function (attribute) {\n var value = staticAttributes[attribute]\n var id = stringStore.id(attribute)\n\n var record = new AttributeRecord()\n if (isBufferArgs(value)) {\n record.state = ATTRIB_STATE_POINTER\n record.buffer = bufferState.getBuffer(\n bufferState.create(value, GL_ARRAY_BUFFER$2, false, true))\n record.type = 0\n } else {\n var buffer = bufferState.getBuffer(value)\n if (buffer) {\n record.state = ATTRIB_STATE_POINTER\n record.buffer = buffer\n record.type = 0\n } else {\n \n if ('constant' in value) {\n var constant = value.constant\n record.buffer = 'null'\n record.state = ATTRIB_STATE_CONSTANT\n if (typeof constant === 'number') {\n record.x = constant\n } else {\n \n CUTE_COMPONENTS.forEach(function (c, i) {\n if (i < constant.length) {\n record[c] = constant[i]\n }\n })\n }\n } else {\n if (isBufferArgs(value.buffer)) {\n buffer = bufferState.getBuffer(\n bufferState.create(value.buffer, GL_ARRAY_BUFFER$2, false, true))\n } else {\n buffer = bufferState.getBuffer(value.buffer)\n }\n \n\n var offset = value.offset | 0\n \n\n var stride = value.stride | 0\n \n\n var size = value.size | 0\n \n\n var normalized = !!value.normalized\n\n var type = 0\n if ('type' in value) {\n \n type = glTypes[value.type]\n }\n\n var divisor = value.divisor | 0\n \n\n record.buffer = buffer\n record.state = ATTRIB_STATE_POINTER\n record.size = size\n record.normalized = normalized\n record.type = type || buffer.dtype\n record.offset = offset\n record.stride = stride\n record.divisor = divisor\n }\n }\n }\n\n attributeDefs[attribute] = createStaticDecl(function (env, scope) {\n var cache = env.attribCache\n if (id in cache) {\n return cache[id]\n }\n var result = {\n isStream: false\n }\n Object.keys(record).forEach(function (key) {\n result[key] = record[key]\n })\n if (record.buffer) {\n result.buffer = env.link(record.buffer)\n result.type = result.type || (result.buffer + '.dtype')\n }\n cache[id] = result\n return result\n })\n })\n\n Object.keys(dynamicAttributes).forEach(function (attribute) {\n var dyn = dynamicAttributes[attribute]\n\n function appendAttributeCode (env, block) {\n var VALUE = env.invoke(block, dyn)\n\n var shared = env.shared\n var constants = env.constants\n\n var IS_BUFFER_ARGS = shared.isBufferArgs\n var BUFFER_STATE = shared.buffer\n\n // Perform validation on attribute\n \n\n // allocate names for result\n var result = {\n isStream: block.def(false)\n }\n var defaultRecord = new AttributeRecord()\n defaultRecord.state = ATTRIB_STATE_POINTER\n Object.keys(defaultRecord).forEach(function (key) {\n result[key] = block.def('' + defaultRecord[key])\n })\n\n var BUFFER = result.buffer\n var TYPE = result.type\n block(\n 'if(', IS_BUFFER_ARGS, '(', VALUE, ')){',\n result.isStream, '=true;',\n BUFFER, '=', BUFFER_STATE, '.createStream(', GL_ARRAY_BUFFER$2, ',', VALUE, ');',\n TYPE, '=', BUFFER, '.dtype;',\n '}else{',\n BUFFER, '=', BUFFER_STATE, '.getBuffer(', VALUE, ');',\n 'if(', BUFFER, '){',\n TYPE, '=', BUFFER, '.dtype;',\n '}else if(\"constant\" in ', VALUE, '){',\n result.state, '=', ATTRIB_STATE_CONSTANT, ';',\n 'if(typeof ' + VALUE + '.constant === \"number\"){',\n result[CUTE_COMPONENTS[0]], '=', VALUE, '.constant;',\n CUTE_COMPONENTS.slice(1).map(function (n) {\n return result[n]\n }).join('='), '=0;',\n '}else{',\n CUTE_COMPONENTS.map(function (name, i) {\n return (\n result[name] + '=' + VALUE + '.constant.length>' + i +\n '?' + VALUE + '.constant[' + i + ']:0;'\n )\n }).join(''),\n '}}else{',\n 'if(', IS_BUFFER_ARGS, '(', VALUE, '.buffer)){',\n BUFFER, '=', BUFFER_STATE, '.createStream(', GL_ARRAY_BUFFER$2, ',', VALUE, '.buffer);',\n '}else{',\n BUFFER, '=', BUFFER_STATE, '.getBuffer(', VALUE, '.buffer);',\n '}',\n TYPE, '=\"type\" in ', VALUE, '?',\n constants.glTypes, '[', VALUE, '.type]:', BUFFER, '.dtype;',\n result.normalized, '=!!', VALUE, '.normalized;')\n function emitReadRecord (name) {\n block(result[name], '=', VALUE, '.', name, '|0;')\n }\n emitReadRecord('size')\n emitReadRecord('offset')\n emitReadRecord('stride')\n emitReadRecord('divisor')\n\n block('}}')\n\n block.exit(\n 'if(', result.isStream, '){',\n BUFFER_STATE, '.destroyStream(', BUFFER, ');',\n '}')\n\n return result\n }\n\n attributeDefs[attribute] = createDynamicDecl(dyn, appendAttributeCode)\n })\n\n return attributeDefs\n }\n\n function parseContext (context) {\n var staticContext = context.static\n var dynamicContext = context.dynamic\n var result = {}\n\n Object.keys(staticContext).forEach(function (name) {\n var value = staticContext[name]\n result[name] = createStaticDecl(function (env, scope) {\n if (typeof value === 'number' || typeof value === 'boolean') {\n return '' + value\n } else {\n return env.link(value)\n }\n })\n })\n\n Object.keys(dynamicContext).forEach(function (name) {\n var dyn = dynamicContext[name]\n result[name] = createDynamicDecl(dyn, function (env, scope) {\n return env.invoke(scope, dyn)\n })\n })\n\n return result\n }\n\n function parseArguments (options, attributes, uniforms, context, env) {\n var staticOptions = options.static\n var dynamicOptions = options.dynamic\n\n \n\n var attribLocations = parseAttribLocations(options, attributes)\n\n var framebuffer = parseFramebuffer(options, env)\n var viewportAndScissor = parseViewportScissor(options, framebuffer, env)\n var draw = parseDraw(options, env)\n var state = parseGLState(options, env)\n var shader = parseProgram(options, env, attribLocations)\n\n function copyBox (name) {\n var defn = viewportAndScissor[name]\n if (defn) {\n state[name] = defn\n }\n }\n copyBox(S_VIEWPORT)\n copyBox(propName(S_SCISSOR_BOX))\n\n var dirty = Object.keys(state).length > 0\n\n var result = {\n framebuffer: framebuffer,\n draw: draw,\n shader: shader,\n state: state,\n dirty: dirty,\n scopeVAO: null,\n drawVAO: null,\n useVAO: false,\n attributes: {}\n }\n\n result.profile = parseProfile(options, env)\n result.uniforms = parseUniforms(uniforms, env)\n result.drawVAO = result.scopeVAO = draw.vao\n // special case: check if we can statically allocate a vertex array object for this program\n if (!result.drawVAO &&\n shader.program &&\n !attribLocations &&\n extensions.angle_instanced_arrays &&\n draw.static.elements) {\n var useVAO = true\n var staticBindings = shader.program.attributes.map(function (attr) {\n var binding = attributes.static[attr]\n useVAO = useVAO && !!binding\n return binding\n })\n if (useVAO && staticBindings.length > 0) {\n var vao = attributeState.getVAO(attributeState.createVAO({\n attributes: staticBindings,\n elements: draw.static.elements\n }))\n result.drawVAO = new Declaration(null, null, null, function (env, scope) {\n return env.link(vao)\n })\n result.useVAO = true\n }\n }\n if (attribLocations) {\n result.useVAO = true\n } else {\n result.attributes = parseAttributes(attributes, env)\n }\n result.context = parseContext(context, env)\n return result\n }\n\n // ===================================================\n // ===================================================\n // COMMON UPDATE FUNCTIONS\n // ===================================================\n // ===================================================\n function emitContext (env, scope, context) {\n var shared = env.shared\n var CONTEXT = shared.context\n\n var contextEnter = env.scope()\n\n Object.keys(context).forEach(function (name) {\n scope.save(CONTEXT, '.' + name)\n var defn = context[name]\n var value = defn.append(env, scope)\n if (Array.isArray(value)) {\n contextEnter(CONTEXT, '.', name, '=[', value.join(), '];')\n } else {\n contextEnter(CONTEXT, '.', name, '=', value, ';')\n }\n })\n\n scope(contextEnter)\n }\n\n // ===================================================\n // ===================================================\n // COMMON DRAWING FUNCTIONS\n // ===================================================\n // ===================================================\n function emitPollFramebuffer (env, scope, framebuffer, skipCheck) {\n var shared = env.shared\n\n var GL = shared.gl\n var FRAMEBUFFER_STATE = shared.framebuffer\n var EXT_DRAW_BUFFERS\n if (extDrawBuffers) {\n EXT_DRAW_BUFFERS = scope.def(shared.extensions, '.webgl_draw_buffers')\n }\n\n var constants = env.constants\n\n var DRAW_BUFFERS = constants.drawBuffer\n var BACK_BUFFER = constants.backBuffer\n\n var NEXT\n if (framebuffer) {\n NEXT = framebuffer.append(env, scope)\n } else {\n NEXT = scope.def(FRAMEBUFFER_STATE, '.next')\n }\n\n if (!skipCheck) {\n scope('if(', NEXT, '!==', FRAMEBUFFER_STATE, '.cur){')\n }\n scope(\n 'if(', NEXT, '){',\n GL, '.bindFramebuffer(', GL_FRAMEBUFFER$2, ',', NEXT, '.framebuffer);')\n if (extDrawBuffers) {\n scope(EXT_DRAW_BUFFERS, '.drawBuffersWEBGL(',\n DRAW_BUFFERS, '[', NEXT, '.colorAttachments.length]);')\n }\n scope('}else{',\n GL, '.bindFramebuffer(', GL_FRAMEBUFFER$2, ',null);')\n if (extDrawBuffers) {\n scope(EXT_DRAW_BUFFERS, '.drawBuffersWEBGL(', BACK_BUFFER, ');')\n }\n scope(\n '}',\n FRAMEBUFFER_STATE, '.cur=', NEXT, ';')\n if (!skipCheck) {\n scope('}')\n }\n }\n\n function emitPollState (env, scope, args) {\n var shared = env.shared\n\n var GL = shared.gl\n\n var CURRENT_VARS = env.current\n var NEXT_VARS = env.next\n var CURRENT_STATE = shared.current\n var NEXT_STATE = shared.next\n\n var block = env.cond(CURRENT_STATE, '.dirty')\n\n GL_STATE_NAMES.forEach(function (prop) {\n var param = propName(prop)\n if (param in args.state) {\n return\n }\n\n var NEXT, CURRENT\n if (param in NEXT_VARS) {\n NEXT = NEXT_VARS[param]\n CURRENT = CURRENT_VARS[param]\n var parts = loop(currentState[param].length, function (i) {\n return block.def(NEXT, '[', i, ']')\n })\n block(env.cond(parts.map(function (p, i) {\n return p + '!==' + CURRENT + '[' + i + ']'\n }).join('||'))\n .then(\n GL, '.', GL_VARIABLES[param], '(', parts, ');',\n parts.map(function (p, i) {\n return CURRENT + '[' + i + ']=' + p\n }).join(';'), ';'))\n } else {\n NEXT = block.def(NEXT_STATE, '.', param)\n var ifte = env.cond(NEXT, '!==', CURRENT_STATE, '.', param)\n block(ifte)\n if (param in GL_FLAGS) {\n ifte(\n env.cond(NEXT)\n .then(GL, '.enable(', GL_FLAGS[param], ');')\n .else(GL, '.disable(', GL_FLAGS[param], ');'),\n CURRENT_STATE, '.', param, '=', NEXT, ';')\n } else {\n ifte(\n GL, '.', GL_VARIABLES[param], '(', NEXT, ');',\n CURRENT_STATE, '.', param, '=', NEXT, ';')\n }\n }\n })\n if (Object.keys(args.state).length === 0) {\n block(CURRENT_STATE, '.dirty=false;')\n }\n scope(block)\n }\n\n function emitSetOptions (env, scope, options, filter) {\n var shared = env.shared\n var CURRENT_VARS = env.current\n var CURRENT_STATE = shared.current\n var GL = shared.gl\n var VALUE\n sortState(Object.keys(options)).forEach(function (param) {\n var defn = options[param]\n if (filter && !filter(defn)) {\n return\n }\n var variable = defn.append(env, scope)\n if (GL_FLAGS[param]) {\n var flag = GL_FLAGS[param]\n if (isStatic(defn)) {\n VALUE = env.link(variable, {stable: true})\n scope(env.cond(VALUE)\n .then(GL, '.enable(', flag, ');')\n .else(GL, '.disable(', flag, ');'))\n scope(CURRENT_STATE, '.', param, '=', VALUE, ';')\n } else {\n scope(env.cond(variable)\n .then(GL, '.enable(', flag, ');')\n .else(GL, '.disable(', flag, ');'))\n scope(CURRENT_STATE, '.', param, '=', variable, ';')\n }\n } else if (isArrayLike(variable)) {\n var CURRENT = CURRENT_VARS[param]\n scope(\n GL, '.', GL_VARIABLES[param], '(', variable, ');',\n variable.map(function (v, i) {\n return CURRENT + '[' + i + ']=' + v\n }).join(';'), ';')\n } else {\n if (isStatic(defn)) {\n VALUE = env.link(variable, {stable: true})\n scope(\n GL, '.', GL_VARIABLES[param], '(', VALUE, ');',\n CURRENT_STATE, '.', param, '=', VALUE, ';')\n } else {\n scope(\n GL, '.', GL_VARIABLES[param], '(', variable, ');',\n CURRENT_STATE, '.', param, '=', variable, ';')\n }\n }\n })\n }\n\n function injectExtensions (env, scope) {\n if (extInstancing) {\n env.instancing = scope.def(\n env.shared.extensions, '.angle_instanced_arrays')\n }\n }\n\n function emitProfile (env, scope, args, useScope, incrementCounter) {\n var shared = env.shared\n var STATS = env.stats\n var CURRENT_STATE = shared.current\n var TIMER = shared.timer\n var profileArg = args.profile\n\n function perfCounter () {\n if (typeof performance === 'undefined') {\n return 'Date.now()'\n } else {\n return 'performance.now()'\n }\n }\n\n var CPU_START, QUERY_COUNTER\n function emitProfileStart (block) {\n CPU_START = scope.def()\n block(CPU_START, '=', perfCounter(), ';')\n if (typeof incrementCounter === 'string') {\n block(STATS, '.count+=', incrementCounter, ';')\n } else {\n block(STATS, '.count++;')\n }\n if (timer) {\n if (useScope) {\n QUERY_COUNTER = scope.def()\n block(QUERY_COUNTER, '=', TIMER, '.getNumPendingQueries();')\n } else {\n block(TIMER, '.beginQuery(', STATS, ');')\n }\n }\n }\n\n function emitProfileEnd (block) {\n block(STATS, '.cpuTime+=', perfCounter(), '-', CPU_START, ';')\n if (timer) {\n if (useScope) {\n block(TIMER, '.pushScopeStats(',\n QUERY_COUNTER, ',',\n TIMER, '.getNumPendingQueries(),',\n STATS, ');')\n } else {\n block(TIMER, '.endQuery();')\n }\n }\n }\n\n function scopeProfile (value) {\n var prev = scope.def(CURRENT_STATE, '.profile')\n scope(CURRENT_STATE, '.profile=', value, ';')\n scope.exit(CURRENT_STATE, '.profile=', prev, ';')\n }\n\n var USE_PROFILE\n if (profileArg) {\n if (isStatic(profileArg)) {\n if (profileArg.enable) {\n emitProfileStart(scope)\n emitProfileEnd(scope.exit)\n scopeProfile('true')\n } else {\n scopeProfile('false')\n }\n return\n }\n USE_PROFILE = profileArg.append(env, scope)\n scopeProfile(USE_PROFILE)\n } else {\n USE_PROFILE = scope.def(CURRENT_STATE, '.profile')\n }\n\n var start = env.block()\n emitProfileStart(start)\n scope('if(', USE_PROFILE, '){', start, '}')\n var end = env.block()\n emitProfileEnd(end)\n scope.exit('if(', USE_PROFILE, '){', end, '}')\n }\n\n function emitAttributes (env, scope, args, attributes, filter) {\n var shared = env.shared\n\n function typeLength (x) {\n switch (x) {\n case GL_FLOAT_VEC2:\n case GL_INT_VEC2:\n case GL_BOOL_VEC2:\n return 2\n case GL_FLOAT_VEC3:\n case GL_INT_VEC3:\n case GL_BOOL_VEC3:\n return 3\n case GL_FLOAT_VEC4:\n case GL_INT_VEC4:\n case GL_BOOL_VEC4:\n return 4\n default:\n return 1\n }\n }\n\n function emitBindAttribute (ATTRIBUTE, size, record) {\n var GL = shared.gl\n\n var LOCATION = scope.def(ATTRIBUTE, '.location')\n var BINDING = scope.def(shared.attributes, '[', LOCATION, ']')\n\n var STATE = record.state\n var BUFFER = record.buffer\n var CONST_COMPONENTS = [\n record.x,\n record.y,\n record.z,\n record.w\n ]\n\n var COMMON_KEYS = [\n 'buffer',\n 'normalized',\n 'offset',\n 'stride'\n ]\n\n function emitBuffer () {\n scope(\n 'if(!', BINDING, '.buffer){',\n GL, '.enableVertexAttribArray(', LOCATION, ');}')\n\n var TYPE = record.type\n var SIZE\n if (!record.size) {\n SIZE = size\n } else {\n SIZE = scope.def(record.size, '||', size)\n }\n\n scope('if(',\n BINDING, '.type!==', TYPE, '||',\n BINDING, '.size!==', SIZE, '||',\n COMMON_KEYS.map(function (key) {\n return BINDING + '.' + key + '!==' + record[key]\n }).join('||'),\n '){',\n GL, '.bindBuffer(', GL_ARRAY_BUFFER$2, ',', BUFFER, '.buffer);',\n GL, '.vertexAttribPointer(', [\n LOCATION,\n SIZE,\n TYPE,\n record.normalized,\n record.stride,\n record.offset\n ], ');',\n BINDING, '.type=', TYPE, ';',\n BINDING, '.size=', SIZE, ';',\n COMMON_KEYS.map(function (key) {\n return BINDING + '.' + key + '=' + record[key] + ';'\n }).join(''),\n '}')\n\n if (extInstancing) {\n var DIVISOR = record.divisor\n scope(\n 'if(', BINDING, '.divisor!==', DIVISOR, '){',\n env.instancing, '.vertexAttribDivisorANGLE(', [LOCATION, DIVISOR], ');',\n BINDING, '.divisor=', DIVISOR, ';}')\n }\n }\n\n function emitConstant () {\n scope(\n 'if(', BINDING, '.buffer){',\n GL, '.disableVertexAttribArray(', LOCATION, ');',\n BINDING, '.buffer=null;',\n '}if(', CUTE_COMPONENTS.map(function (c, i) {\n return BINDING + '.' + c + '!==' + CONST_COMPONENTS[i]\n }).join('||'), '){',\n GL, '.vertexAttrib4f(', LOCATION, ',', CONST_COMPONENTS, ');',\n CUTE_COMPONENTS.map(function (c, i) {\n return BINDING + '.' + c + '=' + CONST_COMPONENTS[i] + ';'\n }).join(''),\n '}')\n }\n\n if (STATE === ATTRIB_STATE_POINTER) {\n emitBuffer()\n } else if (STATE === ATTRIB_STATE_CONSTANT) {\n emitConstant()\n } else {\n scope('if(', STATE, '===', ATTRIB_STATE_POINTER, '){')\n emitBuffer()\n scope('}else{')\n emitConstant()\n scope('}')\n }\n }\n\n attributes.forEach(function (attribute) {\n var name = attribute.name\n var arg = args.attributes[name]\n var record\n if (arg) {\n if (!filter(arg)) {\n return\n }\n record = arg.append(env, scope)\n } else {\n if (!filter(SCOPE_DECL)) {\n return\n }\n var scopeAttrib = env.scopeAttrib(name)\n \n record = {}\n Object.keys(new AttributeRecord()).forEach(function (key) {\n record[key] = scope.def(scopeAttrib, '.', key)\n })\n }\n emitBindAttribute(\n env.link(attribute), typeLength(attribute.info.type), record)\n })\n }\n\n function emitUniforms (env, scope, args, uniforms, filter, isBatchInnerLoop) {\n var shared = env.shared\n var GL = shared.gl\n\n var infix\n for (var i = 0; i < uniforms.length; ++i) {\n var uniform = uniforms[i]\n var name = uniform.name\n var type = uniform.info.type\n var arg = args.uniforms[name]\n var UNIFORM = env.link(uniform)\n var LOCATION = UNIFORM + '.location'\n\n var VALUE\n if (arg) {\n if (!filter(arg)) {\n continue\n }\n if (isStatic(arg)) {\n var value = arg.value\n \n if (type === GL_SAMPLER_2D || type === GL_SAMPLER_CUBE) {\n \n var TEX_VALUE = env.link(value._texture || value.color[0]._texture)\n scope(GL, '.uniform1i(', LOCATION, ',', TEX_VALUE + '.bind());')\n scope.exit(TEX_VALUE, '.unbind();')\n } else if (\n type === GL_FLOAT_MAT2 ||\n type === GL_FLOAT_MAT3 ||\n type === GL_FLOAT_MAT4) {\n \n var MAT_VALUE = env.global.def('new Float32Array([' +\n Array.prototype.slice.call(value) + '])')\n var dim = 2\n if (type === GL_FLOAT_MAT3) {\n dim = 3\n } else if (type === GL_FLOAT_MAT4) {\n dim = 4\n }\n scope(\n GL, '.uniformMatrix', dim, 'fv(',\n LOCATION, ',false,', MAT_VALUE, ');')\n } else {\n switch (type) {\n case GL_FLOAT$7:\n \n infix = '1f'\n break\n case GL_FLOAT_VEC2:\n \n infix = '2f'\n break\n case GL_FLOAT_VEC3:\n \n infix = '3f'\n break\n case GL_FLOAT_VEC4:\n \n infix = '4f'\n break\n case GL_BOOL:\n \n infix = '1i'\n break\n case GL_INT$2:\n \n infix = '1i'\n break\n case GL_BOOL_VEC2:\n \n infix = '2i'\n break\n case GL_INT_VEC2:\n \n infix = '2i'\n break\n case GL_BOOL_VEC3:\n \n infix = '3i'\n break\n case GL_INT_VEC3:\n \n infix = '3i'\n break\n case GL_BOOL_VEC4:\n \n infix = '4i'\n break\n case GL_INT_VEC4:\n \n infix = '4i'\n break\n }\n scope(GL, '.uniform', infix, '(', LOCATION, ',',\n isArrayLike(value) ? Array.prototype.slice.call(value) : value,\n ');')\n }\n continue\n } else {\n VALUE = arg.append(env, scope)\n }\n } else {\n if (!filter(SCOPE_DECL)) {\n continue\n }\n VALUE = scope.def(shared.uniforms, '[', stringStore.id(name), ']')\n }\n\n if (type === GL_SAMPLER_2D) {\n \n scope(\n 'if(', VALUE, '&&', VALUE, '._reglType===\"framebuffer\"){',\n VALUE, '=', VALUE, '.color[0];',\n '}')\n } else if (type === GL_SAMPLER_CUBE) {\n \n scope(\n 'if(', VALUE, '&&', VALUE, '._reglType===\"framebufferCube\"){',\n VALUE, '=', VALUE, '.color[0];',\n '}')\n }\n\n // perform type validation\n \n\n var unroll = 1\n switch (type) {\n case GL_SAMPLER_2D:\n case GL_SAMPLER_CUBE:\n var TEX = scope.def(VALUE, '._texture')\n scope(GL, '.uniform1i(', LOCATION, ',', TEX, '.bind());')\n scope.exit(TEX, '.unbind();')\n continue\n\n case GL_INT$2:\n case GL_BOOL:\n infix = '1i'\n break\n\n case GL_INT_VEC2:\n case GL_BOOL_VEC2:\n infix = '2i'\n unroll = 2\n break\n\n case GL_INT_VEC3:\n case GL_BOOL_VEC3:\n infix = '3i'\n unroll = 3\n break\n\n case GL_INT_VEC4:\n case GL_BOOL_VEC4:\n infix = '4i'\n unroll = 4\n break\n\n case GL_FLOAT$7:\n infix = '1f'\n break\n\n case GL_FLOAT_VEC2:\n infix = '2f'\n unroll = 2\n break\n\n case GL_FLOAT_VEC3:\n infix = '3f'\n unroll = 3\n break\n\n case GL_FLOAT_VEC4:\n infix = '4f'\n unroll = 4\n break\n\n case GL_FLOAT_MAT2:\n infix = 'Matrix2fv'\n break\n\n case GL_FLOAT_MAT3:\n infix = 'Matrix3fv'\n break\n\n case GL_FLOAT_MAT4:\n infix = 'Matrix4fv'\n break\n }\n\n if (infix.charAt(0) === 'M') {\n scope(GL, '.uniform', infix, '(', LOCATION, ',')\n var matSize = Math.pow(type - GL_FLOAT_MAT2 + 2, 2)\n var STORAGE = env.global.def('new Float32Array(', matSize, ')')\n if (Array.isArray(VALUE)) {\n scope(\n 'false,(',\n loop(matSize, function (i) {\n return STORAGE + '[' + i + ']=' + VALUE[i]\n }), ',', STORAGE, ')')\n } else {\n scope(\n 'false,(Array.isArray(', VALUE, ')||', VALUE, ' instanceof Float32Array)?', VALUE, ':(',\n loop(matSize, function (i) {\n return STORAGE + '[' + i + ']=' + VALUE + '[' + i + ']'\n }), ',', STORAGE, ')')\n }\n scope(');')\n } else if (unroll > 1) {\n var prev = []\n var cur = []\n for (var j = 0; j < unroll; ++j) {\n if (Array.isArray(VALUE)) {\n cur.push(VALUE[j])\n } else {\n cur.push(scope.def(VALUE + '[' + j + ']'))\n }\n if (isBatchInnerLoop) {\n prev.push(scope.def())\n }\n }\n if (isBatchInnerLoop) {\n scope('if(!', env.batchId, '||', prev.map(function (p, i) {\n return p + '!==' + cur[i]\n }).join('||'), '){', prev.map(function (p, i) {\n return p + '=' + cur[i] + ';'\n }).join(''))\n }\n scope(GL, '.uniform', infix, '(', LOCATION, ',', cur.join(','), ');')\n if (isBatchInnerLoop) {\n scope('}')\n }\n } else {\n \n if (isBatchInnerLoop) {\n var prevS = scope.def()\n scope('if(!', env.batchId, '||', prevS, '!==', VALUE, '){',\n prevS, '=', VALUE, ';')\n }\n scope(GL, '.uniform', infix, '(', LOCATION, ',', VALUE, ');')\n if (isBatchInnerLoop) {\n scope('}')\n }\n }\n }\n }\n\n function emitDraw (env, outer, inner, args) {\n var shared = env.shared\n var GL = shared.gl\n var DRAW_STATE = shared.draw\n\n var drawOptions = args.draw\n\n function emitElements () {\n var defn = drawOptions.elements\n var ELEMENTS\n var scope = outer\n if (defn) {\n if ((defn.contextDep && args.contextDynamic) || defn.propDep) {\n scope = inner\n }\n ELEMENTS = defn.append(env, scope)\n if (drawOptions.elementsActive) {\n scope(\n 'if(' + ELEMENTS + ')' +\n GL + '.bindBuffer(' + GL_ELEMENT_ARRAY_BUFFER$2 + ',' + ELEMENTS + '.buffer.buffer);')\n }\n } else {\n ELEMENTS = scope.def()\n scope(\n ELEMENTS, '=', DRAW_STATE, '.', S_ELEMENTS, ';',\n 'if(', ELEMENTS, '){',\n GL, '.bindBuffer(', GL_ELEMENT_ARRAY_BUFFER$2, ',', ELEMENTS, '.buffer.buffer);}',\n 'else if(', shared.vao, '.currentVAO){',\n ELEMENTS, '=', env.shared.elements + '.getElements(' + shared.vao, '.currentVAO.elements);',\n (!extVertexArrays ? 'if(' + ELEMENTS + ')' + GL + '.bindBuffer(' + GL_ELEMENT_ARRAY_BUFFER$2 + ',' + ELEMENTS + '.buffer.buffer);' : ''),\n '}')\n }\n return ELEMENTS\n }\n\n function emitCount () {\n var defn = drawOptions.count\n var COUNT\n var scope = outer\n if (defn) {\n if ((defn.contextDep && args.contextDynamic) || defn.propDep) {\n scope = inner\n }\n COUNT = defn.append(env, scope)\n \n } else {\n COUNT = scope.def(DRAW_STATE, '.', S_COUNT)\n \n }\n return COUNT\n }\n\n var ELEMENTS = emitElements()\n function emitValue (name) {\n var defn = drawOptions[name]\n if (defn) {\n if ((defn.contextDep && args.contextDynamic) || defn.propDep) {\n return defn.append(env, inner)\n } else {\n return defn.append(env, outer)\n }\n } else {\n return outer.def(DRAW_STATE, '.', name)\n }\n }\n\n var PRIMITIVE = emitValue(S_PRIMITIVE)\n var OFFSET = emitValue(S_OFFSET)\n\n var COUNT = emitCount()\n if (typeof COUNT === 'number') {\n if (COUNT === 0) {\n return\n }\n } else {\n inner('if(', COUNT, '){')\n inner.exit('}')\n }\n\n var INSTANCES, EXT_INSTANCING\n if (extInstancing) {\n INSTANCES = emitValue(S_INSTANCES)\n EXT_INSTANCING = env.instancing\n }\n\n var ELEMENT_TYPE = ELEMENTS + '.type'\n\n var elementsStatic = drawOptions.elements && isStatic(drawOptions.elements) && !drawOptions.vaoActive\n\n function emitInstancing () {\n function drawElements () {\n inner(EXT_INSTANCING, '.drawElementsInstancedANGLE(', [\n PRIMITIVE,\n COUNT,\n ELEMENT_TYPE,\n OFFSET + '<<((' + ELEMENT_TYPE + '-' + GL_UNSIGNED_BYTE$7 + ')>>1)',\n INSTANCES\n ], ');')\n }\n\n function drawArrays () {\n inner(EXT_INSTANCING, '.drawArraysInstancedANGLE(',\n [PRIMITIVE, OFFSET, COUNT, INSTANCES], ');')\n }\n\n if (ELEMENTS && ELEMENTS !== 'null') {\n if (!elementsStatic) {\n inner('if(', ELEMENTS, '){')\n drawElements()\n inner('}else{')\n drawArrays()\n inner('}')\n } else {\n drawElements()\n }\n } else {\n drawArrays()\n }\n }\n\n function emitRegular () {\n function drawElements () {\n inner(GL + '.drawElements(' + [\n PRIMITIVE,\n COUNT,\n ELEMENT_TYPE,\n OFFSET + '<<((' + ELEMENT_TYPE + '-' + GL_UNSIGNED_BYTE$7 + ')>>1)'\n ] + ');')\n }\n\n function drawArrays () {\n inner(GL + '.drawArrays(' + [PRIMITIVE, OFFSET, COUNT] + ');')\n }\n\n if (ELEMENTS && ELEMENTS !== 'null') {\n if (!elementsStatic) {\n inner('if(', ELEMENTS, '){')\n drawElements()\n inner('}else{')\n drawArrays()\n inner('}')\n } else {\n drawElements()\n }\n } else {\n drawArrays()\n }\n }\n\n if (extInstancing && (typeof INSTANCES !== 'number' || INSTANCES >= 0)) {\n if (typeof INSTANCES === 'string') {\n inner('if(', INSTANCES, '>0){')\n emitInstancing()\n inner('}else if(', INSTANCES, '<0){')\n emitRegular()\n inner('}')\n } else {\n emitInstancing()\n }\n } else {\n emitRegular()\n }\n }\n\n function createBody (emitBody, parentEnv, args, program, count) {\n var env = createREGLEnvironment()\n var scope = env.proc('body', count)\n \n if (extInstancing) {\n env.instancing = scope.def(\n env.shared.extensions, '.angle_instanced_arrays')\n }\n emitBody(env, scope, args, program)\n return env.compile().body\n }\n\n // ===================================================\n // ===================================================\n // DRAW PROC\n // ===================================================\n // ===================================================\n function emitDrawBody (env, draw, args, program) {\n injectExtensions(env, draw)\n if (args.useVAO) {\n if (args.drawVAO) {\n draw(env.shared.vao, '.setVAO(', args.drawVAO.append(env, draw), ');')\n } else {\n draw(env.shared.vao, '.setVAO(', env.shared.vao, '.targetVAO);')\n }\n } else {\n draw(env.shared.vao, '.setVAO(null);')\n emitAttributes(env, draw, args, program.attributes, function () {\n return true\n })\n }\n emitUniforms(env, draw, args, program.uniforms, function () {\n return true\n }, false)\n emitDraw(env, draw, draw, args)\n }\n\n function emitDrawProc (env, args) {\n var draw = env.proc('draw', 1)\n\n injectExtensions(env, draw)\n\n emitContext(env, draw, args.context)\n emitPollFramebuffer(env, draw, args.framebuffer)\n\n emitPollState(env, draw, args)\n emitSetOptions(env, draw, args.state)\n\n emitProfile(env, draw, args, false, true)\n\n var program = args.shader.progVar.append(env, draw)\n draw(env.shared.gl, '.useProgram(', program, '.program);')\n\n if (args.shader.program) {\n emitDrawBody(env, draw, args, args.shader.program)\n } else {\n draw(env.shared.vao, '.setVAO(null);')\n var drawCache = env.global.def('{}')\n var PROG_ID = draw.def(program, '.id')\n var CACHED_PROC = draw.def(drawCache, '[', PROG_ID, ']')\n draw(\n env.cond(CACHED_PROC)\n .then(CACHED_PROC, '.call(this,a0);')\n .else(\n CACHED_PROC, '=', drawCache, '[', PROG_ID, ']=',\n env.link(function (program) {\n return createBody(emitDrawBody, env, args, program, 1)\n }), '(', program, ');',\n CACHED_PROC, '.call(this,a0);'))\n }\n\n if (Object.keys(args.state).length > 0) {\n draw(env.shared.current, '.dirty=true;')\n }\n if (env.shared.vao) {\n draw(env.shared.vao, '.setVAO(null);')\n }\n }\n\n // ===================================================\n // ===================================================\n // BATCH PROC\n // ===================================================\n // ===================================================\n\n function emitBatchDynamicShaderBody (env, scope, args, program) {\n env.batchId = 'a1'\n\n injectExtensions(env, scope)\n\n function all () {\n return true\n }\n\n emitAttributes(env, scope, args, program.attributes, all)\n emitUniforms(env, scope, args, program.uniforms, all, false)\n emitDraw(env, scope, scope, args)\n }\n\n function emitBatchBody (env, scope, args, program) {\n injectExtensions(env, scope)\n\n var contextDynamic = args.contextDep\n\n var BATCH_ID = scope.def()\n var PROP_LIST = 'a0'\n var NUM_PROPS = 'a1'\n var PROPS = scope.def()\n env.shared.props = PROPS\n env.batchId = BATCH_ID\n\n var outer = env.scope()\n var inner = env.scope()\n\n scope(\n outer.entry,\n 'for(', BATCH_ID, '=0;', BATCH_ID, '<', NUM_PROPS, ';++', BATCH_ID, '){',\n PROPS, '=', PROP_LIST, '[', BATCH_ID, '];',\n inner,\n '}',\n outer.exit)\n\n function isInnerDefn (defn) {\n return ((defn.contextDep && contextDynamic) || defn.propDep)\n }\n\n function isOuterDefn (defn) {\n return !isInnerDefn(defn)\n }\n\n if (args.needsContext) {\n emitContext(env, inner, args.context)\n }\n if (args.needsFramebuffer) {\n emitPollFramebuffer(env, inner, args.framebuffer)\n }\n emitSetOptions(env, inner, args.state, isInnerDefn)\n\n if (args.profile && isInnerDefn(args.profile)) {\n emitProfile(env, inner, args, false, true)\n }\n\n if (!program) {\n var progCache = env.global.def('{}')\n var PROGRAM = args.shader.progVar.append(env, inner)\n var PROG_ID = inner.def(PROGRAM, '.id')\n var CACHED_PROC = inner.def(progCache, '[', PROG_ID, ']')\n inner(\n env.shared.gl, '.useProgram(', PROGRAM, '.program);',\n 'if(!', CACHED_PROC, '){',\n CACHED_PROC, '=', progCache, '[', PROG_ID, ']=',\n env.link(function (program) {\n return createBody(\n emitBatchDynamicShaderBody, env, args, program, 2)\n }), '(', PROGRAM, ');}',\n CACHED_PROC, '.call(this,a0[', BATCH_ID, '],', BATCH_ID, ');')\n } else {\n if (args.useVAO) {\n if (args.drawVAO) {\n if (isInnerDefn(args.drawVAO)) {\n // vao is a prop\n inner(env.shared.vao, '.setVAO(', args.drawVAO.append(env, inner), ');')\n } else {\n // vao is invariant\n outer(env.shared.vao, '.setVAO(', args.drawVAO.append(env, outer), ');')\n }\n } else {\n // scoped vao binding\n outer(env.shared.vao, '.setVAO(', env.shared.vao, '.targetVAO);')\n }\n } else {\n outer(env.shared.vao, '.setVAO(null);')\n emitAttributes(env, outer, args, program.attributes, isOuterDefn)\n emitAttributes(env, inner, args, program.attributes, isInnerDefn)\n }\n emitUniforms(env, outer, args, program.uniforms, isOuterDefn, false)\n emitUniforms(env, inner, args, program.uniforms, isInnerDefn, true)\n emitDraw(env, outer, inner, args)\n }\n }\n\n function emitBatchProc (env, args) {\n var batch = env.proc('batch', 2)\n env.batchId = '0'\n\n injectExtensions(env, batch)\n\n // Check if any context variables depend on props\n var contextDynamic = false\n var needsContext = true\n Object.keys(args.context).forEach(function (name) {\n contextDynamic = contextDynamic || args.context[name].propDep\n })\n if (!contextDynamic) {\n emitContext(env, batch, args.context)\n needsContext = false\n }\n\n // framebuffer state affects framebufferWidth/height context vars\n var framebuffer = args.framebuffer\n var needsFramebuffer = false\n if (framebuffer) {\n if (framebuffer.propDep) {\n contextDynamic = needsFramebuffer = true\n } else if (framebuffer.contextDep && contextDynamic) {\n needsFramebuffer = true\n }\n if (!needsFramebuffer) {\n emitPollFramebuffer(env, batch, framebuffer)\n }\n } else {\n emitPollFramebuffer(env, batch, null)\n }\n\n // viewport is weird because it can affect context vars\n if (args.state.viewport && args.state.viewport.propDep) {\n contextDynamic = true\n }\n\n function isInnerDefn (defn) {\n return (defn.contextDep && contextDynamic) || defn.propDep\n }\n\n // set webgl options\n emitPollState(env, batch, args)\n emitSetOptions(env, batch, args.state, function (defn) {\n return !isInnerDefn(defn)\n })\n\n if (!args.profile || !isInnerDefn(args.profile)) {\n emitProfile(env, batch, args, false, 'a1')\n }\n\n // Save these values to args so that the batch body routine can use them\n args.contextDep = contextDynamic\n args.needsContext = needsContext\n args.needsFramebuffer = needsFramebuffer\n\n // determine if shader is dynamic\n var progDefn = args.shader.progVar\n if ((progDefn.contextDep && contextDynamic) || progDefn.propDep) {\n emitBatchBody(\n env,\n batch,\n args,\n null)\n } else {\n var PROGRAM = progDefn.append(env, batch)\n batch(env.shared.gl, '.useProgram(', PROGRAM, '.program);')\n if (args.shader.program) {\n emitBatchBody(\n env,\n batch,\n args,\n args.shader.program)\n } else {\n batch(env.shared.vao, '.setVAO(null);')\n var batchCache = env.global.def('{}')\n var PROG_ID = batch.def(PROGRAM, '.id')\n var CACHED_PROC = batch.def(batchCache, '[', PROG_ID, ']')\n batch(\n env.cond(CACHED_PROC)\n .then(CACHED_PROC, '.call(this,a0,a1);')\n .else(\n CACHED_PROC, '=', batchCache, '[', PROG_ID, ']=',\n env.link(function (program) {\n return createBody(emitBatchBody, env, args, program, 2)\n }), '(', PROGRAM, ');',\n CACHED_PROC, '.call(this,a0,a1);'))\n }\n }\n\n if (Object.keys(args.state).length > 0) {\n batch(env.shared.current, '.dirty=true;')\n }\n\n if (env.shared.vao) {\n batch(env.shared.vao, '.setVAO(null);')\n }\n }\n\n // ===================================================\n // ===================================================\n // SCOPE COMMAND\n // ===================================================\n // ===================================================\n function emitScopeProc (env, args) {\n var scope = env.proc('scope', 3)\n env.batchId = 'a2'\n\n var shared = env.shared\n var CURRENT_STATE = shared.current\n\n emitContext(env, scope, args.context)\n\n if (args.framebuffer) {\n args.framebuffer.append(env, scope)\n }\n\n sortState(Object.keys(args.state)).forEach(function (name) {\n var defn = args.state[name]\n var value = defn.append(env, scope)\n if (isArrayLike(value)) {\n value.forEach(function (v, i) {\n if (hasVariableReference(v)) {\n scope.set(env.next[name], '[' + i + ']', v)\n } else {\n scope.set(env.next[name], '[' + i + ']', env.link(v, {stable: true}))\n }\n })\n } else {\n if (isStatic(defn)) {\n scope.set(shared.next, '.' + name, env.link(value, {stable: true}))\n } else {\n scope.set(shared.next, '.' + name, value)\n }\n }\n })\n\n emitProfile(env, scope, args, true, true)\n\n ;[S_ELEMENTS, S_OFFSET, S_COUNT, S_INSTANCES, S_PRIMITIVE].forEach(\n function (opt) {\n var variable = args.draw[opt]\n if (!variable) {\n return\n }\n var VARIABLE = variable.append(env, scope)\n if (hasVariableReference(VARIABLE)) {\n scope.set(shared.draw, '.' + opt, VARIABLE)\n } else {\n scope.set(shared.draw, '.' + opt, env.link(VARIABLE), {stable: true})\n }\n })\n\n Object.keys(args.uniforms).forEach(function (opt) {\n var value = args.uniforms[opt].append(env, scope)\n if (Array.isArray(value)) {\n value = '[' + value.map(function (v) {\n if (hasVariableReference(v)) {\n return v;\n } else {\n return env.link(v, {stable: true})\n }\n }) + ']'\n }\n scope.set(\n shared.uniforms,\n '[' + env.link(stringStore.id(opt), {stable: true}) + ']',\n value)\n })\n\n Object.keys(args.attributes).forEach(function (name) {\n var record = args.attributes[name].append(env, scope)\n var scopeAttrib = env.scopeAttrib(name)\n Object.keys(new AttributeRecord()).forEach(function (prop) {\n scope.set(scopeAttrib, '.' + prop, record[prop])\n })\n })\n\n if (args.scopeVAO) {\n var VARIABLE = args.scopeVAO.append(env, scope)\n if (hasVariableReference(VARIABLE)) {\n scope.set(shared.vao, '.targetVAO', VARIABLE)\n } else {\n scope.set(shared.vao, '.targetVAO', env.link(VARIABLE, {stable: true}))\n }\n }\n\n function saveShader (name) {\n var shader = args.shader[name]\n if (shader) {\n var VARIABLE = shader.append(env, scope)\n if (hasVariableReference(VARIABLE)) {\n scope.set(shared.shader, '.' + name, VARIABLE)\n } else {\n scope.set(shared.shader, '.' + name, env.link(VARIABLE, {stable: true}))\n }\n }\n }\n saveShader(S_VERT)\n saveShader(S_FRAG)\n\n if (Object.keys(args.state).length > 0) {\n scope(CURRENT_STATE, '.dirty=true;')\n scope.exit(CURRENT_STATE, '.dirty=true;')\n }\n\n scope('a1(', env.shared.context, ',a0,', env.batchId, ');')\n }\n\n function isDynamicObject (object) {\n if (typeof object !== 'object' || isArrayLike(object)) {\n return\n }\n var props = Object.keys(object)\n for (var i = 0; i < props.length; ++i) {\n if (dynamic.isDynamic(object[props[i]])) {\n return true\n }\n }\n return false\n }\n\n function splatObject (env, options, name) {\n var object = options.static[name]\n if (!object || !isDynamicObject(object)) {\n return\n }\n\n var globals = env.global\n var keys = Object.keys(object)\n var thisDep = false\n var contextDep = false\n var propDep = false\n var objectRef = env.global.def('{}')\n keys.forEach(function (key) {\n var value = object[key]\n if (dynamic.isDynamic(value)) {\n if (typeof value === 'function') {\n value = object[key] = dynamic.unbox(value)\n }\n var deps = createDynamicDecl(value, null)\n thisDep = thisDep || deps.thisDep\n propDep = propDep || deps.propDep\n contextDep = contextDep || deps.contextDep\n } else {\n globals(objectRef, '.', key, '=')\n switch (typeof value) {\n case 'number':\n globals(value)\n break\n case 'string':\n globals('\"', value, '\"')\n break\n case 'object':\n if (Array.isArray(value)) {\n globals('[', value.join(), ']')\n }\n break\n default:\n globals(env.link(value))\n break\n }\n globals(';')\n }\n })\n\n function appendBlock (env, block) {\n keys.forEach(function (key) {\n var value = object[key]\n if (!dynamic.isDynamic(value)) {\n return\n }\n var ref = env.invoke(block, value)\n block(objectRef, '.', key, '=', ref, ';')\n })\n }\n\n options.dynamic[name] = new dynamic.DynamicVariable(DYN_THUNK, {\n thisDep: thisDep,\n contextDep: contextDep,\n propDep: propDep,\n ref: objectRef,\n append: appendBlock\n })\n delete options.static[name]\n }\n\n // ===========================================================================\n // ===========================================================================\n // MAIN DRAW COMMAND\n // ===========================================================================\n // ===========================================================================\n function compileCommand (options, attributes, uniforms, context, stats) {\n var env = createREGLEnvironment()\n\n // link stats, so that we can easily access it in the program.\n env.stats = env.link(stats)\n\n // splat options and attributes to allow for dynamic nested properties\n Object.keys(attributes.static).forEach(function (key) {\n splatObject(env, attributes, key)\n })\n NESTED_OPTIONS.forEach(function (name) {\n splatObject(env, options, name)\n })\n\n var args = parseArguments(options, attributes, uniforms, context, env)\n\n if (args.shader.program) {\n args.shader.program.attributes.sort(function (a, b) {\n return a.name < b.name ? -1 : 1\n })\n args.shader.program.uniforms.sort(function (a, b) {\n return a.name < b.name ? -1 : 1\n })\n }\n\n emitDrawProc(env, args)\n emitScopeProc(env, args)\n emitBatchProc(env, args)\n\n return extend(env.compile(), {\n destroy: function () {\n args.shader.program.destroy()\n }\n })\n }\n\n // ===========================================================================\n // ===========================================================================\n // POLL / REFRESH\n // ===========================================================================\n // ===========================================================================\n return {\n next: nextState,\n current: currentState,\n procs: (function () {\n var env = createREGLEnvironment()\n var poll = env.proc('poll')\n var refresh = env.proc('refresh')\n var common = env.block()\n poll(common)\n refresh(common)\n\n var shared = env.shared\n var GL = shared.gl\n var NEXT_STATE = shared.next\n var CURRENT_STATE = shared.current\n\n common(CURRENT_STATE, '.dirty=false;')\n\n emitPollFramebuffer(env, poll)\n emitPollFramebuffer(env, refresh, null, true)\n\n // Refresh updates all attribute state changes\n var INSTANCING\n if (extInstancing) {\n INSTANCING = env.link(extInstancing)\n }\n\n // update vertex array bindings\n if (extensions.oes_vertex_array_object) {\n refresh(env.link(extensions.oes_vertex_array_object), '.bindVertexArrayOES(null);')\n }\n var BINDING = refresh.def(shared.attributes)\n var TEMP_BINDING = refresh.def(0)\n\n var ifte = env.cond(TEMP_BINDING, '.buffer')\n ifte.then(\n GL, '.enableVertexAttribArray(i);',\n GL, '.bindBuffer(',\n GL_ARRAY_BUFFER$2, ',',\n TEMP_BINDING, '.buffer.buffer);',\n GL, '.vertexAttribPointer(i,',\n TEMP_BINDING, '.size,',\n TEMP_BINDING, '.type,',\n TEMP_BINDING, '.normalized,',\n TEMP_BINDING, '.stride,',\n TEMP_BINDING, '.offset);'\n ).else(\n GL, '.disableVertexAttribArray(i);',\n GL, '.vertexAttrib4f(i,',\n TEMP_BINDING, '.x,',\n TEMP_BINDING, '.y,',\n TEMP_BINDING, '.z,',\n TEMP_BINDING, '.w);',\n TEMP_BINDING, '.buffer=null;')\n var MAX_ATTRIBUTES = env.link(limits.maxAttributes, {stable: true})\n refresh(\n 'for(var i=0;i<', MAX_ATTRIBUTES, ';++i){',\n TEMP_BINDING, '=', BINDING, '[i];',\n ifte,\n '}'\n )\n\n if (extInstancing) {\n refresh(\n 'for(var i=0;i<', MAX_ATTRIBUTES, ';++i){',\n INSTANCING, '.vertexAttribDivisorANGLE(i,',\n BINDING, '[i].divisor);',\n '}')\n }\n refresh(\n env.shared.vao, '.currentVAO=null;',\n env.shared.vao, '.setVAO(', env.shared.vao, '.targetVAO);')\n\n Object.keys(GL_FLAGS).forEach(function (flag) {\n var cap = GL_FLAGS[flag]\n var NEXT = common.def(NEXT_STATE, '.', flag)\n var block = env.block()\n block('if(', NEXT, '){',\n GL, '.enable(', cap, ')}else{',\n GL, '.disable(', cap, ')}',\n CURRENT_STATE, '.', flag, '=', NEXT, ';')\n refresh(block)\n poll(\n 'if(', NEXT, '!==', CURRENT_STATE, '.', flag, '){',\n block,\n '}')\n })\n\n Object.keys(GL_VARIABLES).forEach(function (name) {\n var func = GL_VARIABLES[name]\n var init = currentState[name]\n var NEXT, CURRENT\n var block = env.block()\n block(GL, '.', func, '(')\n if (isArrayLike(init)) {\n var n = init.length\n NEXT = env.global.def(NEXT_STATE, '.', name)\n CURRENT = env.global.def(CURRENT_STATE, '.', name)\n block(\n loop(n, function (i) {\n return NEXT + '[' + i + ']'\n }), ');',\n loop(n, function (i) {\n return CURRENT + '[' + i + ']=' + NEXT + '[' + i + '];'\n }).join(''))\n poll(\n 'if(', loop(n, function (i) {\n return NEXT + '[' + i + ']!==' + CURRENT + '[' + i + ']'\n }).join('||'), '){',\n block,\n '}')\n } else {\n NEXT = common.def(NEXT_STATE, '.', name)\n CURRENT = common.def(CURRENT_STATE, '.', name)\n block(\n NEXT, ');',\n CURRENT_STATE, '.', name, '=', NEXT, ';')\n poll(\n 'if(', NEXT, '!==', CURRENT, '){',\n block,\n '}')\n }\n refresh(block)\n })\n\n return env.compile()\n })(),\n compile: compileCommand\n }\n}\n\nfunction stats () {\n return {\n vaoCount: 0,\n bufferCount: 0,\n elementsCount: 0,\n framebufferCount: 0,\n shaderCount: 0,\n textureCount: 0,\n cubeCount: 0,\n renderbufferCount: 0,\n maxTextureUnits: 0\n }\n}\n\nvar GL_QUERY_RESULT_EXT = 0x8866\nvar GL_QUERY_RESULT_AVAILABLE_EXT = 0x8867\nvar GL_TIME_ELAPSED_EXT = 0x88BF\n\nvar createTimer = function (gl, extensions) {\n if (!extensions.ext_disjoint_timer_query) {\n return null\n }\n\n // QUERY POOL BEGIN\n var queryPool = []\n function allocQuery () {\n return queryPool.pop() || extensions.ext_disjoint_timer_query.createQueryEXT()\n }\n function freeQuery (query) {\n queryPool.push(query)\n }\n // QUERY POOL END\n\n var pendingQueries = []\n function beginQuery (stats) {\n var query = allocQuery()\n extensions.ext_disjoint_timer_query.beginQueryEXT(GL_TIME_ELAPSED_EXT, query)\n pendingQueries.push(query)\n pushScopeStats(pendingQueries.length - 1, pendingQueries.length, stats)\n }\n\n function endQuery () {\n extensions.ext_disjoint_timer_query.endQueryEXT(GL_TIME_ELAPSED_EXT)\n }\n\n //\n // Pending stats pool.\n //\n function PendingStats () {\n this.startQueryIndex = -1\n this.endQueryIndex = -1\n this.sum = 0\n this.stats = null\n }\n var pendingStatsPool = []\n function allocPendingStats () {\n return pendingStatsPool.pop() || new PendingStats()\n }\n function freePendingStats (pendingStats) {\n pendingStatsPool.push(pendingStats)\n }\n // Pending stats pool end\n\n var pendingStats = []\n function pushScopeStats (start, end, stats) {\n var ps = allocPendingStats()\n ps.startQueryIndex = start\n ps.endQueryIndex = end\n ps.sum = 0\n ps.stats = stats\n pendingStats.push(ps)\n }\n\n // we should call this at the beginning of the frame,\n // in order to update gpuTime\n var timeSum = []\n var queryPtr = []\n function update () {\n var ptr, i\n\n var n = pendingQueries.length\n if (n === 0) {\n return\n }\n\n // Reserve space\n queryPtr.length = Math.max(queryPtr.length, n + 1)\n timeSum.length = Math.max(timeSum.length, n + 1)\n timeSum[0] = 0\n queryPtr[0] = 0\n\n // Update all pending timer queries\n var queryTime = 0\n ptr = 0\n for (i = 0; i < pendingQueries.length; ++i) {\n var query = pendingQueries[i]\n if (extensions.ext_disjoint_timer_query.getQueryObjectEXT(query, GL_QUERY_RESULT_AVAILABLE_EXT)) {\n queryTime += extensions.ext_disjoint_timer_query.getQueryObjectEXT(query, GL_QUERY_RESULT_EXT)\n freeQuery(query)\n } else {\n pendingQueries[ptr++] = query\n }\n timeSum[i + 1] = queryTime\n queryPtr[i + 1] = ptr\n }\n pendingQueries.length = ptr\n\n // Update all pending stat queries\n ptr = 0\n for (i = 0; i < pendingStats.length; ++i) {\n var stats = pendingStats[i]\n var start = stats.startQueryIndex\n var end = stats.endQueryIndex\n stats.sum += timeSum[end] - timeSum[start]\n var startPtr = queryPtr[start]\n var endPtr = queryPtr[end]\n if (endPtr === startPtr) {\n stats.stats.gpuTime += stats.sum / 1e6\n freePendingStats(stats)\n } else {\n stats.startQueryIndex = startPtr\n stats.endQueryIndex = endPtr\n pendingStats[ptr++] = stats\n }\n }\n pendingStats.length = ptr\n }\n\n return {\n beginQuery: beginQuery,\n endQuery: endQuery,\n pushScopeStats: pushScopeStats,\n update: update,\n getNumPendingQueries: function () {\n return pendingQueries.length\n },\n clear: function () {\n queryPool.push.apply(queryPool, pendingQueries)\n for (var i = 0; i < queryPool.length; i++) {\n extensions.ext_disjoint_timer_query.deleteQueryEXT(queryPool[i])\n }\n pendingQueries.length = 0\n queryPool.length = 0\n },\n restore: function () {\n pendingQueries.length = 0\n queryPool.length = 0\n }\n }\n}\n\nvar GL_COLOR_BUFFER_BIT = 16384\nvar GL_DEPTH_BUFFER_BIT = 256\nvar GL_STENCIL_BUFFER_BIT = 1024\n\nvar GL_ARRAY_BUFFER = 34962\n\nvar CONTEXT_LOST_EVENT = 'webglcontextlost'\nvar CONTEXT_RESTORED_EVENT = 'webglcontextrestored'\n\nvar DYN_PROP = 1\nvar DYN_CONTEXT = 2\nvar DYN_STATE = 3\n\nfunction find (haystack, needle) {\n for (var i = 0; i < haystack.length; ++i) {\n if (haystack[i] === needle) {\n return i\n }\n }\n return -1\n}\n\nfunction wrapREGL (args) {\n var config = parseArgs(args)\n if (!config) {\n return null\n }\n\n var gl = config.gl\n var glAttributes = gl.getContextAttributes()\n var contextLost = gl.isContextLost()\n\n var extensionState = createExtensionCache(gl, config)\n if (!extensionState) {\n return null\n }\n\n var stringStore = createStringStore()\n var stats$$1 = stats()\n var cachedCode = config.cachedCode || {};\n var extensions = extensionState.extensions\n var timer = createTimer(gl, extensions)\n\n var START_TIME = clock()\n var WIDTH = gl.drawingBufferWidth\n var HEIGHT = gl.drawingBufferHeight\n\n var contextState = {\n tick: 0,\n time: 0,\n viewportWidth: WIDTH,\n viewportHeight: HEIGHT,\n framebufferWidth: WIDTH,\n framebufferHeight: HEIGHT,\n drawingBufferWidth: WIDTH,\n drawingBufferHeight: HEIGHT,\n pixelRatio: config.pixelRatio\n }\n var uniformState = {}\n var drawState = {\n elements: null,\n primitive: 4, // GL_TRIANGLES\n count: -1,\n offset: 0,\n instances: -1\n }\n\n var limits = wrapLimits(gl, extensions)\n var bufferState = wrapBufferState(\n gl,\n stats$$1,\n config,\n destroyBuffer)\n var elementState = wrapElementsState(gl, extensions, bufferState, stats$$1)\n var attributeState = wrapAttributeState(\n gl,\n extensions,\n limits,\n stats$$1,\n bufferState,\n elementState,\n drawState)\n function destroyBuffer (buffer) {\n return attributeState.destroyBuffer(buffer)\n }\n var shaderState = wrapShaderState(gl, stringStore, stats$$1, config)\n var textureState = createTextureSet(\n gl,\n extensions,\n limits,\n function () { core.procs.poll() },\n contextState,\n stats$$1,\n config)\n var renderbufferState = wrapRenderbuffers(gl, extensions, limits, stats$$1, config)\n var framebufferState = wrapFBOState(\n gl,\n extensions,\n limits,\n textureState,\n renderbufferState,\n stats$$1)\n var core = reglCore(\n gl,\n stringStore,\n extensions,\n limits,\n bufferState,\n elementState,\n textureState,\n framebufferState,\n uniformState,\n attributeState,\n shaderState,\n drawState,\n contextState,\n timer,\n cachedCode,\n config)\n var readPixels = wrapReadPixels(\n gl,\n framebufferState,\n core.procs.poll,\n contextState,\n glAttributes, extensions, limits)\n\n var nextState = core.next\n var canvas = gl.canvas\n\n var rafCallbacks = []\n var lossCallbacks = []\n var restoreCallbacks = []\n var destroyCallbacks = [config.onDestroy]\n\n var activeRAF = null\n function handleRAF () {\n if (rafCallbacks.length === 0) {\n if (timer) {\n timer.update()\n }\n activeRAF = null\n return\n }\n\n // schedule next animation frame\n activeRAF = raf.next(handleRAF)\n\n // poll for changes\n poll()\n\n // fire a callback for all pending rafs\n for (var i = rafCallbacks.length - 1; i >= 0; --i) {\n var cb = rafCallbacks[i]\n if (cb) {\n cb(contextState, null, 0)\n }\n }\n\n // flush all pending webgl calls\n gl.flush()\n\n // poll GPU timers *after* gl.flush so we don't delay command dispatch\n if (timer) {\n timer.update()\n }\n }\n\n function startRAF () {\n if (!activeRAF && rafCallbacks.length > 0) {\n activeRAF = raf.next(handleRAF)\n }\n }\n\n function stopRAF () {\n if (activeRAF) {\n raf.cancel(handleRAF)\n activeRAF = null\n }\n }\n\n function handleContextLoss (event) {\n event.preventDefault()\n\n // set context lost flag\n contextLost = true\n\n // pause request animation frame\n stopRAF()\n\n // lose context\n lossCallbacks.forEach(function (cb) {\n cb()\n })\n }\n\n function handleContextRestored (event) {\n // clear error code\n gl.getError()\n\n // clear context lost flag\n contextLost = false\n\n // refresh state\n extensionState.restore()\n shaderState.restore()\n bufferState.restore()\n textureState.restore()\n renderbufferState.restore()\n framebufferState.restore()\n attributeState.restore()\n if (timer) {\n timer.restore()\n }\n\n // refresh state\n core.procs.refresh()\n\n // restart RAF\n startRAF()\n\n // restore context\n restoreCallbacks.forEach(function (cb) {\n cb()\n })\n }\n\n if (canvas) {\n canvas.addEventListener(CONTEXT_LOST_EVENT, handleContextLoss, false)\n canvas.addEventListener(CONTEXT_RESTORED_EVENT, handleContextRestored, false)\n }\n\n function destroy () {\n rafCallbacks.length = 0\n stopRAF()\n\n if (canvas) {\n canvas.removeEventListener(CONTEXT_LOST_EVENT, handleContextLoss)\n canvas.removeEventListener(CONTEXT_RESTORED_EVENT, handleContextRestored)\n }\n\n shaderState.clear()\n framebufferState.clear()\n renderbufferState.clear()\n attributeState.clear()\n textureState.clear()\n elementState.clear()\n bufferState.clear()\n\n if (timer) {\n timer.clear()\n }\n\n destroyCallbacks.forEach(function (cb) {\n cb()\n })\n }\n\n function compileProcedure (options) {\n \n \n\n function flattenNestedOptions (options) {\n var result = extend({}, options)\n delete result.uniforms\n delete result.attributes\n delete result.context\n delete result.vao\n\n if ('stencil' in result && result.stencil.op) {\n result.stencil.opBack = result.stencil.opFront = result.stencil.op\n delete result.stencil.op\n }\n\n function merge (name) {\n if (name in result) {\n var child = result[name]\n delete result[name]\n Object.keys(child).forEach(function (prop) {\n result[name + '.' + prop] = child[prop]\n })\n }\n }\n merge('blend')\n merge('depth')\n merge('cull')\n merge('stencil')\n merge('polygonOffset')\n merge('scissor')\n merge('sample')\n\n if ('vao' in options) {\n result.vao = options.vao\n }\n\n return result\n }\n\n function separateDynamic (object, useArrays) {\n var staticItems = {}\n var dynamicItems = {}\n Object.keys(object).forEach(function (option) {\n var value = object[option]\n if (dynamic.isDynamic(value)) {\n dynamicItems[option] = dynamic.unbox(value, option)\n return\n } else if (useArrays && Array.isArray(value)) {\n for (var i = 0; i < value.length; ++i) {\n if (dynamic.isDynamic(value[i])) {\n dynamicItems[option] = dynamic.unbox(value, option)\n return\n }\n }\n }\n staticItems[option] = value\n })\n return {\n dynamic: dynamicItems,\n static: staticItems\n }\n }\n\n // Treat context variables separate from other dynamic variables\n var context = separateDynamic(options.context || {}, true)\n var uniforms = separateDynamic(options.uniforms || {}, true)\n var attributes = separateDynamic(options.attributes || {}, false)\n var opts = separateDynamic(flattenNestedOptions(options), false)\n\n var stats$$1 = {\n gpuTime: 0.0,\n cpuTime: 0.0,\n count: 0\n }\n\n var compiled = core.compile(opts, attributes, uniforms, context, stats$$1)\n\n var draw = compiled.draw\n var batch = compiled.batch\n var scope = compiled.scope\n\n // FIXME: we should modify code generation for batch commands so this\n // isn't necessary\n var EMPTY_ARRAY = []\n function reserve (count) {\n while (EMPTY_ARRAY.length < count) {\n EMPTY_ARRAY.push(null)\n }\n return EMPTY_ARRAY\n }\n\n function REGLCommand (args, body) {\n var i\n if (contextLost) {\n \n }\n if (typeof args === 'function') {\n return scope.call(this, null, args, 0)\n } else if (typeof body === 'function') {\n if (typeof args === 'number') {\n for (i = 0; i < args; ++i) {\n scope.call(this, null, body, i)\n }\n } else if (Array.isArray(args)) {\n for (i = 0; i < args.length; ++i) {\n scope.call(this, args[i], body, i)\n }\n } else {\n return scope.call(this, args, body, 0)\n }\n } else if (typeof args === 'number') {\n if (args > 0) {\n return batch.call(this, reserve(args | 0), args | 0)\n }\n } else if (Array.isArray(args)) {\n if (args.length) {\n return batch.call(this, args, args.length)\n }\n } else {\n return draw.call(this, args)\n }\n }\n\n return extend(REGLCommand, {\n stats: stats$$1,\n destroy: function () {\n compiled.destroy()\n }\n })\n }\n\n var setFBO = framebufferState.setFBO = compileProcedure({\n framebuffer: dynamic.define.call(null, DYN_PROP, 'framebuffer')\n })\n\n function clearImpl (_, options) {\n var clearFlags = 0\n core.procs.poll()\n\n var c = options.color\n if (c) {\n gl.clearColor(+c[0] || 0, +c[1] || 0, +c[2] || 0, +c[3] || 0)\n clearFlags |= GL_COLOR_BUFFER_BIT\n }\n if ('depth' in options) {\n gl.clearDepth(+options.depth)\n clearFlags |= GL_DEPTH_BUFFER_BIT\n }\n if ('stencil' in options) {\n gl.clearStencil(options.stencil | 0)\n clearFlags |= GL_STENCIL_BUFFER_BIT\n }\n\n \n gl.clear(clearFlags)\n }\n\n function clear (options) {\n \n if ('framebuffer' in options) {\n if (options.framebuffer &&\n options.framebuffer_reglType === 'framebufferCube') {\n for (var i = 0; i < 6; ++i) {\n setFBO(extend({\n framebuffer: options.framebuffer.faces[i]\n }, options), clearImpl)\n }\n } else {\n setFBO(options, clearImpl)\n }\n } else {\n clearImpl(null, options)\n }\n }\n\n function frame (cb) {\n \n rafCallbacks.push(cb)\n\n function cancel () {\n // FIXME: should we check something other than equals cb here?\n // what if a user calls frame twice with the same callback...\n //\n var i = find(rafCallbacks, cb)\n \n function pendingCancel () {\n var index = find(rafCallbacks, pendingCancel)\n rafCallbacks[index] = rafCallbacks[rafCallbacks.length - 1]\n rafCallbacks.length -= 1\n if (rafCallbacks.length <= 0) {\n stopRAF()\n }\n }\n rafCallbacks[i] = pendingCancel\n }\n\n startRAF()\n\n return {\n cancel: cancel\n }\n }\n\n // poll viewport\n function pollViewport () {\n var viewport = nextState.viewport\n var scissorBox = nextState.scissor_box\n viewport[0] = viewport[1] = scissorBox[0] = scissorBox[1] = 0\n contextState.viewportWidth =\n contextState.framebufferWidth =\n contextState.drawingBufferWidth =\n viewport[2] =\n scissorBox[2] = gl.drawingBufferWidth\n contextState.viewportHeight =\n contextState.framebufferHeight =\n contextState.drawingBufferHeight =\n viewport[3] =\n scissorBox[3] = gl.drawingBufferHeight\n }\n\n function poll () {\n contextState.tick += 1\n contextState.time = now()\n pollViewport()\n core.procs.poll()\n }\n\n function refresh () {\n textureState.refresh()\n pollViewport()\n core.procs.refresh()\n if (timer) {\n timer.update()\n }\n }\n\n function now () {\n return (clock() - START_TIME) / 1000.0\n }\n\n refresh()\n\n function addListener (event, callback) {\n \n\n var callbacks\n switch (event) {\n case 'frame':\n return frame(callback)\n case 'lost':\n callbacks = lossCallbacks\n break\n case 'restore':\n callbacks = restoreCallbacks\n break\n case 'destroy':\n callbacks = destroyCallbacks\n break\n default:\n \n }\n\n callbacks.push(callback)\n return {\n cancel: function () {\n for (var i = 0; i < callbacks.length; ++i) {\n if (callbacks[i] === callback) {\n callbacks[i] = callbacks[callbacks.length - 1]\n callbacks.pop()\n return\n }\n }\n }\n }\n }\n\n function getCachedCode() {\n return cachedCode\n }\n\n function preloadCachedCode(moreCache) {\n Object.entries(moreCache).forEach(function (kv) {\n cachedCode[kv[0]] = kv[1]\n })\n }\n\n var regl = extend(compileProcedure, {\n // Clear current FBO\n clear: clear,\n\n // Short cuts for dynamic variables\n prop: dynamic.define.bind(null, DYN_PROP),\n context: dynamic.define.bind(null, DYN_CONTEXT),\n this: dynamic.define.bind(null, DYN_STATE),\n\n // executes an empty draw command\n draw: compileProcedure({}),\n\n // Resources\n buffer: function (options) {\n return bufferState.create(options, GL_ARRAY_BUFFER, false, false)\n },\n elements: function (options) {\n return elementState.create(options, false)\n },\n texture: textureState.create2D,\n cube: textureState.createCube,\n renderbuffer: renderbufferState.create,\n framebuffer: framebufferState.create,\n framebufferCube: framebufferState.createCube,\n vao: attributeState.createVAO,\n\n // Expose context attributes\n attributes: glAttributes,\n\n // Frame rendering\n frame: frame,\n on: addListener,\n\n // System limits\n limits: limits,\n hasExtension: function (name) {\n return limits.extensions.indexOf(name.toLowerCase()) >= 0\n },\n\n // Read pixels\n read: readPixels,\n\n // Destroy regl and all associated resources\n destroy: destroy,\n\n // Direct GL state manipulation\n _gl: gl,\n _refresh: refresh,\n\n poll: function () {\n poll()\n if (timer) {\n timer.update()\n }\n },\n\n // Current time\n now: now,\n\n // regl Statistics Information\n stats: stats$$1,\n\n // cache generated code\n getCachedCode: getCachedCode,\n preloadCachedCode: preloadCachedCode\n })\n\n config.onDone(null, regl)\n\n return regl\n}\n\nreturn wrapREGL;\n\n})));\n"],"names":["factory","extend","base","opts","keys","Object","i","length","VARIABLE_COUNTER","DynamicVariable","type","data","id","escapeStr","str","replace","dynamic","define","splitParts","firstChar","charAt","lastChar","substr","parts","exec","index","concat","subparts","split","result","join","isDynamic","x","_reglType","unbox","path","Array","isArray","map","y","raf","next","requestAnimationFrame","cb","setTimeout","cancel","cancelAnimationFrame","clearTimeout","clock","performance","now","Date","parseExtensions","input","getElement","desc","document","querySelector","loop","n","f","log2","v","r","shift","createPool","bufferPool","alloc","sz","nextPow16","bin","pop","ArrayBuffer","free","buf","byteLength","push","allocType","Int8Array","Uint8Array","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","subarray","freeType","array","buffer","pool","zero","wrapLimits","gl","extensions","maxAnisotropic","ext_texture_filter_anisotropic","getParameter","maxDrawbuffers","maxColorAttachments","webgl_draw_buffers","readFloat","oes_texture_float","readFloatTexture","createTexture","bindTexture","texImage2D","fbo","createFramebuffer","bindFramebuffer","framebufferTexture2D","checkFramebufferStatus","viewport","clearColor","clear","pixels","readPixels","getError","deleteFramebuffer","deleteTexture","isIE","navigator","test","userAgent","appVersion","npotTextureCube","cubeTexture","activeTexture","colorBits","depthBits","stencilBits","subpixelBits","filter","ext","pointSizeDims","lineWidthDims","maxViewportDims","maxCombinedTextureUnits","maxCubeMapSize","maxRenderbufferSize","maxTextureUnits","maxTextureSize","maxAttributes","maxVertexUniforms","maxVertexTextureUnits","maxVaryingVectors","maxFragmentUniforms","glsl","renderer","vendor","version","isTypedArray","Float64Array","Uint8ClampedArray","isNDArrayLike","obj","shape","stride","offset","values","key","flattenUtils","array_","flatten","out_","out","flatten1D","nx","flatten2D","ny","ptr","row","j","flatten3D","flattenRec","level","nz","ptr_","col","k","arrayTypes","glTypes","int8","int16","int32","uint8","uint16","uint32","float","float32","usageTypes","stream","arrayFlatten","arrayShape","DTYPES_SIZES","typedArrayCode","prototype","toString","call","copyArray","inp","transpose","shapeX","shapeY","strideX","strideY","primTypes","points","point","lines","line","triangles","triangle","FLOAT","INT","convertToHalfFloat","ushorts","isNaN","Infinity","sgn","exp","frac","s","isArrayLike","MIPMAP_FILTERS","CHANNELS_FORMAT","FORMAT_CHANNELS","objectName","CANVAS_CLASS","OFFSCREENCANVAS_CLASS","CONTEXT2D_CLASS","BITMAP_CLASS","IMAGE_CLASS","VIDEO_CLASS","PIXEL_CLASSES","TYPE_SIZES","FORMAT_SIZES_SPECIAL","isNumericArray","arr","isRectArray","width","classString","isPixelData","object","className","indexOf","typedArrayCode$1","preConvert","image","postConvert","getTextureSize","format","height","isMipmap","isCube","total","w","FORMAT_SIZES","wrapRenderbuffers","limits","stats","config","formatTypes","ext_srgb","ext_color_buffer_half_float","webgl_color_buffer_float","formatTypesInvert","forEach","renderbufferCount","renderbufferSet","REGLRenderbuffer","renderbuffer","refCount","profile","size","destroy","rb","handle","bindRenderbuffer","deleteRenderbuffer","decRef","getTotalRenderbufferSize","create","a","b","createRenderbuffer","reglRenderbuffer","h","options","radius","renderbufferStorage","resize","w_","h_","_renderbuffer","restore","textureFormatChannels","textureTypeSizes","AttributeRecord","state","z","normalized","divisor","sha256_S","X","sha256_K","safe_add","lsw","slice","CUTE_COMPONENTS","S_DITHER","S_BLEND_ENABLE","S_BLEND_COLOR","S_BLEND_EQUATION","S_BLEND_FUNC","S_DEPTH_ENABLE","S_DEPTH_FUNC","S_DEPTH_RANGE","S_DEPTH_MASK","S_COLOR_MASK","S_CULL_ENABLE","S_CULL_FACE","S_FRONT_FACE","S_LINE_WIDTH","S_POLYGON_OFFSET_ENABLE","S_POLYGON_OFFSET_OFFSET","S_SAMPLE_ALPHA","S_SAMPLE_ENABLE","S_SAMPLE_COVERAGE","S_STENCIL_ENABLE","S_STENCIL_MASK","S_STENCIL_FUNC","S_STENCIL_OPFRONT","S_STENCIL_OPBACK","S_SCISSOR_ENABLE","S_SCISSOR_BOX","S_VIEWPORT","S_PROFILE","S_FRAMEBUFFER","S_VERT","S_FRAG","S_ELEMENTS","S_PRIMITIVE","S_COUNT","S_OFFSET","S_INSTANCES","SUFFIX_WIDTH","SUFFIX_HEIGHT","S_FRAMEBUFFER_WIDTH","S_FRAMEBUFFER_HEIGHT","S_VIEWPORT_WIDTH","S_VIEWPORT_HEIGHT","S_DRAWINGBUFFER","S_DRAWINGBUFFER_WIDTH","S_DRAWINGBUFFER_HEIGHT","NESTED_OPTIONS","blendFuncs","compareFuncs","stencilOps","orientationType","isBufferArgs","sortState","sort","Declaration","thisDep","contextDep","propDep","append","isStatic","decl","createStaticDecl","createDynamicDecl","dyn","numArgs","subDyn","subArgs","SCOPE_DECL","createTimer","ext_disjoint_timer_query","queryPool","pendingQueries","PendingStats","startQueryIndex","endQueryIndex","sum","pendingStatsPool","pendingStats","pushScopeStats","start","end","ps","timeSum","queryPtr","beginQuery","query","createQueryEXT","beginQueryEXT","endQuery","endQueryEXT","update","Math","max","queryTime","getQueryObjectEXT","startPtr","endPtr","gpuTime","getNumPendingQueries","apply","deleteQueryEXT","CONTEXT_LOST_EVENT","CONTEXT_RESTORED_EVENT","find","haystack","needle","args","stringIds","stringValues","parseArgs","args_","element","container","canvas","contextAttributes","optionalExtensions","pixelRatio","window","devicePixelRatio","cachedCode","onDone","err","onDestroy","nodeName","appendChild","getBoundingClientRect","drawArrays","drawElements","attributes","toLowerCase","createCanvas","resizeObserver","createElement","innerWidth","innerHeight","body","bounds","right","left","bottom","top","style","border","margin","padding","position","ResizeObserver","observe","addEventListener","disconnect","removeEventListener","removeChild","undefined","premultipliedAlpha","createContext","get","name","getContext","e","glAttributes","getContextAttributes","extensionState","isContextLost","createExtensionCache","tryLoadExtension","name_","getExtension","stringStore","stats$$1","vaoCount","bufferCount","elementsCount","framebufferCount","shaderCount","textureCount","cubeCount","timer","START_TIME","WIDTH","drawingBufferWidth","HEIGHT","drawingBufferHeight","contextState","tick","time","viewportWidth","viewportHeight","framebufferWidth","framebufferHeight","drawState","elements","primitive","count","instances","bufferState","wrapBufferState","destroyBuffer","bufferSet","REGLBuffer","createBuffer","usage","dimension","dtype","persistentData","bind","bindBuffer","streamPool","initBufferFromTypedArray","bufferData","initBufferFromData","persist","flatData","dim","typedData","transposeData","deleteBuffer","getTotalBufferSize","deferInit","persistent","reglBuffer","setSubData","bufferSubData","_buffer","subdata","offset_","converted","createStream","destroyStream","stream$$1","getBuffer","wrapper","_initBuffer","attributeState","elementState","wrapElementsState","elementSet","elementCount","elementTypes","REGLElementBuffer","primType","vertCount","oes_element_index_uint","initElements","prim","predictedType","destroyElements","reglElements","_elements","getElements","wrapAttributeState","NUM_ATTRIBUTES","attributeBindings","vaoSet","Record","scope","currentVAO","targetVAO","extVAO","vao","refresh","createVAO","_attr","REGLVAO","updateVAO","ownsElements","bufUpdated","nattributes","spec","rec","buffers","_vao","getVAO","record","disableVertexAttribArray","setVAO","bindVertexArrayOES","bindAttrs","exti","extInstanced","binding","enableVertexAttribArray","vertexAttribPointer","offfset","vertexAttribDivisorANGLE","vertexAttrib4f","oes_vertex_array_object","angle_instanced_arrays","extension","createVertexArrayOES","attr","deleteVertexArrayOES","shaderState","wrapShaderState","fragShaders","vertShaders","ActiveInfo","location","info","insertActiveInfo","list","getShader","command","cache","shader","source","createShader","shaderSource","compileShader","programCache","programList","PROGRAM_COUNTER","REGLProgram","fragId","vertId","program","uniforms","uniformsCount","attributesCount","linkProgram","attributeLocations","fragShader","vertShader","createProgram","attachShader","bindAttribLocation","numUniforms","getProgramParameter","getActiveUniform","getUniformLocation","numAttributes","getActiveAttrib","getAttribLocation","getMaxUniformsCount","m","getMaxAttributesCount","deleteShader","deleteProgram","attribLocations","prevProgram","idx","splice","frag","vert","textureState","createTextureSet","reglPoll","mipmapHint","wrapModes","magFilters","minFilters","colorSpace","textureTypes","textureFormats","compressedTextureFormats","srgb","srgba","oes_texture_half_float","webgl_depth_texture","webgl_compressed_texture_s3tc","webgl_compressed_texture_atc","webgl_compressed_texture_pvrtc","webgl_compressed_texture_etc1","supportedCompressedFormats","supportedFormats","textureFormatsInvert","textureTypesInvert","magFiltersInvert","minFiltersInvert","wrapModesInvert","colorFormats","reduce","color","glenum","TexFlags","internalformat","compressed","premultiplyAlpha","flipY","unpackAlignment","channels","copyFlags","other","parseFlags","flags","alignment","c","hasChannels","hasFormat","formatStr","setFlags","pixelStorei","TexImage","xOffset","yOffset","needsFree","needsCopy","parseImage","copy","viewW","viewH","convertData","set","shapeC","strideC","p","isCanvasElement","naturalWidth","naturalHeight","videoWidth","videoHeight","dd","allocData","setSubImage","target","miplevel","texSubImage2D","compressedTexSubImage2D","copyTexSubImage2D","imagePool","allocImage","freeImage","MipMap","genMipmaps","mipmask","images","parseMipMapFromShape","mipmap","img","parseMipMapFromObject","imgData","mipData","setMipMap","setImage","compressedTexImage2D","copyTexImage2D","mipPool","allocMipMap","freeMipMap","TexInfo","minFilter","magFilter","wrapS","wrapT","anisotropic","parseTexInfo","min","mag","wrap","hasMipMap","setTexInfo","texParameteri","hint","generateMipmap","textureSet","numTexUnits","textureUnits","REGLTexture","texture","unit","bindCount","texInfo","tempBind","tempRestore","prev","GL_TEXTURE0$1","params","unbind","getTotalTextureSize","create2D","reglTexture2D","subimage","x_","y_","level_","imageData","_w","_h","_texture","createCube","a0","a1","a2","a3","a4","a5","faces","reglTextureCube","faceInput","GL_TEXTURE_CUBE_MAP_POSITIVE_X$1","face","radius_","getTexture","tex","core","procs","poll","renderbufferState","framebufferState","wrapFBOState","cur","dirty","setFBO","colorTextureFormats","colorRenderbufferFormats","colorTypes","FramebufferAttachment","attachment","incRefAndCheckShape","attach","framebufferRenderbuffer","parseAttachment","allocAttachment","isTexture","unwrapAttachment","resizeAttachment","framebufferSet","REGLFramebuffer","framebuffer","colorAttachments","depthAttachment","stencilAttachment","depthStencilAttachment","decFBORefs","updateFramebuffer","GL_COLOR_ATTACHMENT0$1","createFBO","reglFramebuffer","needsDepth","needsStencil","colorBuffer","colorTexture","colorFormat","colorType","colorCount","depthBuffer","stencilBuffer","depthStencilBuffer","depthStencilTexture","colors","depthTexture","depth","stencil","depthStencil","commonColorAttachmentSize","colorAttachmentSize","_framebuffer","use","block","getFramebuffer","reglFramebufferCube","colorCubes","cubeMapParams","cube","GL_TEXTURE_CUBE_MAP_POSITIVE_X$2","fb","reglCore","uniformState","INSTANCING","env","common","shared","GL","NEXT_STATE","CURRENT_STATE","BINDING","TEMP_BINDING","ifte","MAX_ATTRIBUTES","blendEquations","ext_blend_minmax","extInstancing","extDrawBuffers","extVertexArrays","currentState","nextState","GL_STATE_NAMES","GL_FLAGS","GL_VARIABLES","propName","stateFlag","sname","cap","init","stateVariable","func","hasVariableReference","sharedState","context","strings","current","draw","sharedConstants","backBuffer","drawBuffer","GL_COLOR_ATTACHMENT0$2","drawCallCounter","createREGLEnvironment","createEnvironment","varCounter","linkedNames","linkedValues","isStable","code","vars","arguments","def","entry","exit","entryToString","exitToString","save","prop","value","globalBlock","procedures","global","link","stable","proc","arg","bodyToString","cond","pred","thenBlock","elseBlock","thenToString","elseToString","then","else","elseClause","compile","src","rstr2hex","hex_tab","output","charCodeAt","binb2rstr","String","fromCharCode","binb_sha256","l","d","g","T1","T2","HASH","W","rstr2binb","str2rstr_utf8","Function","batchId","SHARED","props","nextVars","currentVars","variable","constants","JSON","stringify","invoke","argList","ref","attribCache","scopeAttribs","scopeAttrib","emitContext","CONTEXT","contextEnter","defn","emitPollFramebuffer","skipCheck","EXT_DRAW_BUFFERS","NEXT","FRAMEBUFFER_STATE","DRAW_BUFFERS","BACK_BUFFER","emitPollState","CURRENT_VARS","NEXT_VARS","CURRENT","param","emitSetOptions","VALUE","flag","injectExtensions","instancing","emitProfile","useScope","incrementCounter","CPU_START","QUERY_COUNTER","USE_PROFILE","STATS","TIMER","profileArg","perfCounter","emitProfileStart","emitProfileEnd","scopeProfile","enable","emitAttributes","attribute","emitBindAttribute","ATTRIBUTE","LOCATION","STATE","BUFFER","CONST_COMPONENTS","COMMON_KEYS","emitBuffer","SIZE","TYPE","DIVISOR","emitConstant","typeLength","emitUniforms","isBatchInnerLoop","infix","uniform","UNIFORM","TEX_VALUE","MAT_VALUE","unroll","TEX","matSize","pow","STORAGE","prevS","emitDraw","outer","inner","ELEMENTS","COUNT","INSTANCES","EXT_INSTANCING","DRAW_STATE","drawOptions","contextDynamic","elementsActive","emitValue","PRIMITIVE","OFFSET","ELEMENT_TYPE","elementsStatic","vaoActive","emitInstancing","emitRegular","createBody","emitBody","parentEnv","emitDrawBody","useVAO","drawVAO","emitBatchDynamicShaderBody","all","emitBatchBody","BATCH_ID","PROPS","isInnerDefn","isOuterDefn","needsContext","needsFramebuffer","progCache","PROGRAM","progVar","PROG_ID","CACHED_PROC","splatObject","static","isDynamicObject","globals","objectRef","deps","parseArguments","staticOptions","dynamicOptions","staticUniforms","dynamicUniforms","UNIFORMS","staticAttributes","dynamicAttributes","attributeDefs","staticContext","dynamicContext","parseAttribLocations","sAttributes","bindings","parseFramebuffer","FRAMEBUFFER","FRAMEBUFFER_FUNC","viewportAndScissor","parseViewportScissor","parseBox","box","BOX_W","BOX_H","dynBox","BOX","BOX_X","BOX_Y","prevViewport","VIEWPORT","scissor_box","parseDraw","staticDraw","parseVAO","S_VAO","vaoRef","parseElements","IS_BUFFER_ARGS","ELEMENT_STATE","elementDefn","elementStream","parseParam","isOffset","dynValue","parsePrimitive","dynPrimitive","PRIM_TYPES","parseVertCount","dynCount","parseStatic","parseDynamic","COMPARE_FUNCS","srcRGB","srcAlpha","dstRGB","dst","dstAlpha","BLEND_FUNCS","read","prefix","suffix","SRC_RGB","SRC_ALPHA","rgb","alpha","BLEND_EQUATIONS","RGB","ALPHA","cmp","mask","fail","zfail","zpass","STENCIL_OPS","factor","units","invert","parseProgram","parseShader","SHADER_STATE","progDef","copyBox","scopeVAO","parseProfile","profileEnable","reglType","staticBindings","constant","isStream","BUFFER_STATE","defaultRecord","emitReadRecord","emitDrawProc","drawCache","emitScopeProc","opt","VARIABLE","saveShader","emitBatchProc","batch","progDefn","batchCache","wrapReadPixels","readPixelsImpl","rafCallbacks","lossCallbacks","restoreCallbacks","destroyCallbacks","activeRAF","handleRAF","flush","startRAF","stopRAF","handleContextLoss","event","preventDefault","handleContextRestored","compileProcedure","separateDynamic","useArrays","staticItems","dynamicItems","option","flattenNestedOptions","merge","child","op","opBack","opFront","cpuTime","compiled","EMPTY_ARRAY","reserve","clearImpl","_","clearFlags","clearDepth","clearStencil","frame","pendingCancel","pollViewport","scissorBox","regl","framebuffer_reglType","this","framebufferCube","on","callback","callbacks","hasExtension","_gl","_refresh","getCachedCode","preloadCachedCode","moreCache","entries","kv","module","exports"],"sourceRoot":""}