{"version":3,"file":"index.mjs","sources":["../playcanvas-stable.min.js","../__modules__.js","../__settings__.js","../__loading__.js"],"sourcesContent":["/**\n * @license\n * PlayCanvas Engine v2.13.6 revision e43e870 (RELEASE)\n * Copyright 2011-2025 PlayCanvas Ltd. All rights reserved.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nconst TRACEID_RENDER_FRAME = 'RenderFrame';\nconst TRACEID_RENDER_FRAME_TIME = 'RenderFrameTime';\nconst TRACEID_RENDER_PASS = 'RenderPass';\nconst TRACEID_RENDER_PASS_DETAIL = 'RenderPassDetail';\nconst TRACEID_RENDER_ACTION = 'RenderAction';\nconst TRACEID_RENDER_TARGET_ALLOC = 'RenderTargetAlloc';\nconst TRACEID_TEXTURE_ALLOC = 'TextureAlloc';\nconst TRACEID_SHADER_ALLOC = 'ShaderAlloc';\nconst TRACEID_SHADER_COMPILE = 'ShaderCompile';\nconst TRACEID_VRAM_TEXTURE = 'VRAM.Texture';\nconst TRACEID_VRAM_VB = 'VRAM.Vb';\nconst TRACEID_VRAM_IB = 'VRAM.Ib';\nconst TRACEID_VRAM_SB = 'VRAM.Sb';\nconst TRACEID_BINDGROUP_ALLOC = 'BindGroupAlloc';\nconst TRACEID_BINDGROUPFORMAT_ALLOC = 'BindGroupFormatAlloc';\nconst TRACEID_RENDERPIPELINE_ALLOC = 'RenderPipelineAlloc';\nconst TRACEID_COMPUTEPIPELINE_ALLOC = 'ComputePipelineAlloc';\nconst TRACEID_PIPELINELAYOUT_ALLOC = 'PipelineLayoutAlloc';\nconst TRACEID_ELEMENT = 'Element';\nconst TRACEID_TEXTURES = 'Textures';\nconst TRACEID_RENDER_QUEUE = 'RenderQueue';\nconst TRACEID_OCTREE_RESOURCES = 'OctreeResources';\nconst TRACEID_GPU_TIMINGS = 'GpuTimings';\n\nconst version = '2.13.6';\nconst revision = 'e43e870';\nfunction extend(target, ex) {\n\t\tfor(const prop in ex){\n\t\t\t\tconst copy = ex[prop];\n\t\t\t\tif (Array.isArray(copy)) {\n\t\t\t\t\t\ttarget[prop] = extend([], copy);\n\t\t\t\t} else if (copy && typeof copy === 'object') {\n\t\t\t\t\t\ttarget[prop] = extend({}, copy);\n\t\t\t\t} else {\n\t\t\t\t\t\ttarget[prop] = copy;\n\t\t\t\t}\n\t\t}\n\t\treturn target;\n}\n\nconst guid = {\n\t\tcreate () {\n\t\t\t\treturn 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c)=>{\n\t\t\t\t\t\tconst r = Math.random() * 16 | 0;\n\t\t\t\t\t\tconst v = c === 'x' ? r : r & 0x3 | 0x8;\n\t\t\t\t\t\treturn v.toString(16);\n\t\t\t\t});\n\t\t}\n};\n\nconst path = {\n\t\tdelimiter: '/',\n\t\tjoin (...sections) {\n\t\t\t\tlet result = sections[0];\n\t\t\t\tfor(let i = 0; i < sections.length - 1; i++){\n\t\t\t\t\t\tconst one = sections[i];\n\t\t\t\t\t\tconst two = sections[i + 1];\n\t\t\t\t\t\tif (two[0] === path.delimiter) {\n\t\t\t\t\t\t\t\tresult = two;\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (one && two && one[one.length - 1] !== path.delimiter && two[0] !== path.delimiter) {\n\t\t\t\t\t\t\t\tresult += path.delimiter + two;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tresult += two;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t},\n\t\tnormalize (pathname) {\n\t\t\t\tconst lead = pathname.startsWith(path.delimiter);\n\t\t\t\tconst trail = pathname.endsWith(path.delimiter);\n\t\t\t\tconst parts = pathname.split('/');\n\t\t\t\tlet result = '';\n\t\t\t\tlet cleaned = [];\n\t\t\t\tfor(let i = 0; i < parts.length; i++){\n\t\t\t\t\t\tif (parts[i] === '') continue;\n\t\t\t\t\t\tif (parts[i] === '.') continue;\n\t\t\t\t\t\tif (parts[i] === '..' && cleaned.length > 0) {\n\t\t\t\t\t\t\t\tcleaned = cleaned.slice(0, cleaned.length - 2);\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (i > 0) cleaned.push(path.delimiter);\n\t\t\t\t\t\tcleaned.push(parts[i]);\n\t\t\t\t}\n\t\t\t\tresult = cleaned.join('');\n\t\t\t\tif (!lead && result[0] === path.delimiter) {\n\t\t\t\t\t\tresult = result.slice(1);\n\t\t\t\t}\n\t\t\t\tif (trail && result[result.length - 1] !== path.delimiter) {\n\t\t\t\t\t\tresult += path.delimiter;\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t},\n\t\tsplit (pathname) {\n\t\t\t\tconst lastDelimiterIndex = pathname.lastIndexOf(path.delimiter);\n\t\t\t\tif (lastDelimiterIndex !== -1) {\n\t\t\t\t\t\treturn [\n\t\t\t\t\t\t\t\tpathname.substring(0, lastDelimiterIndex),\n\t\t\t\t\t\t\t\tpathname.substring(lastDelimiterIndex + 1)\n\t\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t\treturn [\n\t\t\t\t\t\t'',\n\t\t\t\t\t\tpathname\n\t\t\t\t];\n\t\t},\n\t\tgetBasename (pathname) {\n\t\t\t\treturn path.split(pathname)[1];\n\t\t},\n\t\tgetDirectory (pathname) {\n\t\t\t\treturn path.split(pathname)[0];\n\t\t},\n\t\tgetExtension (pathname) {\n\t\t\t\tconst ext = pathname.split('?')[0].split('.').pop();\n\t\t\t\tif (ext !== pathname) {\n\t\t\t\t\t\treturn `.${ext}`;\n\t\t\t\t}\n\t\t\t\treturn '';\n\t\t},\n\t\tisRelativePath (pathname) {\n\t\t\t\treturn pathname.charAt(0) !== '/' && pathname.match(/:\\/\\//) === null;\n\t\t},\n\t\textractPath (pathname) {\n\t\t\t\tlet result = '';\n\t\t\t\tconst parts = pathname.split('/');\n\t\t\t\tlet i = 0;\n\t\t\t\tif (parts.length > 1) {\n\t\t\t\t\t\tif (path.isRelativePath(pathname)) {\n\t\t\t\t\t\t\t\tif (parts[0] === '.') {\n\t\t\t\t\t\t\t\t\t\tfor(i = 0; i < parts.length - 1; ++i){\n\t\t\t\t\t\t\t\t\t\t\t\tresult += i === 0 ? parts[i] : `/${parts[i]}`;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else if (parts[0] === '..') {\n\t\t\t\t\t\t\t\t\t\tfor(i = 0; i < parts.length - 1; ++i){\n\t\t\t\t\t\t\t\t\t\t\t\tresult += i === 0 ? parts[i] : `/${parts[i]}`;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tresult = '.';\n\t\t\t\t\t\t\t\t\t\tfor(i = 0; i < parts.length - 1; ++i){\n\t\t\t\t\t\t\t\t\t\t\t\tresult += `/${parts[i]}`;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tfor(i = 0; i < parts.length - 1; ++i){\n\t\t\t\t\t\t\t\t\t\tresult += i === 0 ? parts[i] : `/${parts[i]}`;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t}\n};\n\nconst detectPassiveEvents = ()=>{\n\t\tlet result = false;\n\t\ttry {\n\t\t\t\tconst opts = Object.defineProperty({}, 'passive', {\n\t\t\t\t\t\tget: function() {\n\t\t\t\t\t\t\t\tresult = true;\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\twindow.addEventListener('testpassive', null, opts);\n\t\t\t\twindow.removeEventListener('testpassive', null, opts);\n\t\t} catch (e) {}\n\t\treturn result;\n};\nconst ua = typeof navigator !== 'undefined' ? navigator.userAgent : '';\nconst environment = typeof window !== 'undefined' ? 'browser' : typeof global !== 'undefined' ? 'node' : 'worker';\nconst platformName = /android/i.test(ua) ? 'android' : /ip(?:[ao]d|hone)/i.test(ua) ? 'ios' : /windows/i.test(ua) ? 'windows' : /mac os/i.test(ua) ? 'osx' : /linux/i.test(ua) ? 'linux' : /cros/i.test(ua) ? 'cros' : null;\nconst browserName = environment !== 'browser' ? null : /Chrome\\/|Chromium\\/|Edg.*\\//.test(ua) ? 'chrome' : /Safari\\//.test(ua) ? 'safari' : /Firefox\\//.test(ua) ? 'firefox' : 'other';\nconst xbox = /xbox/i.test(ua);\nconst touch = environment === 'browser' && ('ontouchstart' in window || 'maxTouchPoints' in navigator && navigator.maxTouchPoints > 0);\nconst gamepads = environment === 'browser' && (!!navigator.getGamepads || !!navigator.webkitGetGamepads);\nconst workers = typeof Worker !== 'undefined';\nconst passiveEvents = detectPassiveEvents();\nconst platform = {\n\t\tname: platformName,\n\t\tenvironment: environment,\n\t\tglobal: (typeof globalThis !== 'undefined' && globalThis) ?? (environment === 'browser' && window) ?? (environment === 'node' && global) ?? (environment === 'worker' && self),\n\t\tbrowser: environment === 'browser',\n\t\tworker: environment === 'worker',\n\t\tdesktop: [\n\t\t\t\t'windows',\n\t\t\t\t'osx',\n\t\t\t\t'linux',\n\t\t\t\t'cros'\n\t\t].includes(platformName),\n\t\tmobile: [\n\t\t\t\t'android',\n\t\t\t\t'ios'\n\t\t].includes(platformName),\n\t\tios: platformName === 'ios',\n\t\tandroid: platformName === 'android',\n\t\txbox: xbox,\n\t\tgamepads: gamepads,\n\t\ttouch: touch,\n\t\tworkers: workers,\n\t\tpassiveEvents: passiveEvents,\n\t\tbrowserName: browserName\n};\n\nconst ASCII_LOWERCASE = 'abcdefghijklmnopqrstuvwxyz';\nconst ASCII_UPPERCASE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';\nconst ASCII_LETTERS = ASCII_LOWERCASE + ASCII_UPPERCASE;\nconst HIGH_SURROGATE_BEGIN = 0xD800;\nconst HIGH_SURROGATE_END = 0xDBFF;\nconst LOW_SURROGATE_BEGIN = 0xDC00;\nconst LOW_SURROGATE_END = 0xDFFF;\nconst ZERO_WIDTH_JOINER = 0x200D;\nconst REGIONAL_INDICATOR_BEGIN = 0x1F1E6;\nconst REGIONAL_INDICATOR_END = 0x1F1FF;\nconst FITZPATRICK_MODIFIER_BEGIN = 0x1F3FB;\nconst FITZPATRICK_MODIFIER_END = 0x1F3FF;\nconst DIACRITICAL_MARKS_BEGIN = 0x20D0;\nconst DIACRITICAL_MARKS_END = 0x20FF;\nconst VARIATION_MODIFIER_BEGIN = 0xFE00;\nconst VARIATION_MODIFIER_END = 0xFE0F;\nfunction getCodePointData(string, i = 0) {\n\t\tconst size = string.length;\n\t\tif (i < 0 || i >= size) {\n\t\t\t\treturn null;\n\t\t}\n\t\tconst first = string.charCodeAt(i);\n\t\tif (size > 1 && first >= HIGH_SURROGATE_BEGIN && first <= HIGH_SURROGATE_END) {\n\t\t\t\tconst second = string.charCodeAt(i + 1);\n\t\t\t\tif (second >= LOW_SURROGATE_BEGIN && second <= LOW_SURROGATE_END) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tcode: (first - HIGH_SURROGATE_BEGIN) * 0x400 + second - LOW_SURROGATE_BEGIN + 0x10000,\n\t\t\t\t\t\t\t\tlong: true\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\t\tcode: first,\n\t\t\t\tlong: false\n\t\t};\n}\nfunction isCodeBetween(string, begin, end) {\n\t\tif (!string) {\n\t\t\t\treturn false;\n\t\t}\n\t\tconst codeData = getCodePointData(string);\n\t\tif (codeData) {\n\t\t\t\tconst code = codeData.code;\n\t\t\t\treturn code >= begin && code <= end;\n\t\t}\n\t\treturn false;\n}\nfunction numCharsToTakeForNextSymbol(string, index) {\n\t\tif (index === string.length - 1) {\n\t\t\t\treturn 1;\n\t\t}\n\t\tif (isCodeBetween(string[index], HIGH_SURROGATE_BEGIN, HIGH_SURROGATE_END)) {\n\t\t\t\tconst first = string.substring(index, index + 2);\n\t\t\t\tconst second = string.substring(index + 2, index + 4);\n\t\t\t\tif (isCodeBetween(second, FITZPATRICK_MODIFIER_BEGIN, FITZPATRICK_MODIFIER_END) || isCodeBetween(first, REGIONAL_INDICATOR_BEGIN, REGIONAL_INDICATOR_END) && isCodeBetween(second, REGIONAL_INDICATOR_BEGIN, REGIONAL_INDICATOR_END)) {\n\t\t\t\t\t\treturn 4;\n\t\t\t\t}\n\t\t\t\tif (isCodeBetween(second, VARIATION_MODIFIER_BEGIN, VARIATION_MODIFIER_END)) {\n\t\t\t\t\t\treturn 3;\n\t\t\t\t}\n\t\t\t\treturn 2;\n\t\t}\n\t\tif (isCodeBetween(string[index + 1], VARIATION_MODIFIER_BEGIN, VARIATION_MODIFIER_END)) {\n\t\t\t\treturn 2;\n\t\t}\n\t\treturn 1;\n}\nconst string = {\n\t\tASCII_LOWERCASE: ASCII_LOWERCASE,\n\t\tASCII_UPPERCASE: ASCII_UPPERCASE,\n\t\tASCII_LETTERS: ASCII_LETTERS,\n\t\tformat (s, ...args) {\n\t\t\t\tfor(let i = 0; i < args.length; i++){\n\t\t\t\t\t\ts = s.replace(`{${i}}`, args[i]);\n\t\t\t\t}\n\t\t\t\treturn s;\n\t\t},\n\t\tgetCodePoint (string, i) {\n\t\t\t\tconst codePointData = getCodePointData(string, i);\n\t\t\t\treturn codePointData && codePointData.code;\n\t\t},\n\t\tgetCodePoints (string) {\n\t\t\t\tif (typeof string !== 'string') {\n\t\t\t\t\t\tthrow new TypeError('Not a string');\n\t\t\t\t}\n\t\t\t\tlet i = 0;\n\t\t\t\tconst arr = [];\n\t\t\t\tlet codePoint;\n\t\t\t\twhile(!!(codePoint = getCodePointData(string, i))){\n\t\t\t\t\t\tarr.push(codePoint.code);\n\t\t\t\t\t\ti += codePoint.long ? 2 : 1;\n\t\t\t\t}\n\t\t\t\treturn arr;\n\t\t},\n\t\tgetSymbols (string) {\n\t\t\t\tif (typeof string !== 'string') {\n\t\t\t\t\t\tthrow new TypeError('Not a string');\n\t\t\t\t}\n\t\t\t\tlet index = 0;\n\t\t\t\tconst length = string.length;\n\t\t\t\tconst output = [];\n\t\t\t\tlet take = 0;\n\t\t\t\tlet ch;\n\t\t\t\twhile(index < length){\n\t\t\t\t\t\ttake += numCharsToTakeForNextSymbol(string, index + take);\n\t\t\t\t\t\tch = string[index + take];\n\t\t\t\t\t\tif (isCodeBetween(ch, DIACRITICAL_MARKS_BEGIN, DIACRITICAL_MARKS_END)) {\n\t\t\t\t\t\t\t\tch = string[index + take++];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (isCodeBetween(ch, VARIATION_MODIFIER_BEGIN, VARIATION_MODIFIER_END)) {\n\t\t\t\t\t\t\t\tch = string[index + take++];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (ch && ch.charCodeAt(0) === ZERO_WIDTH_JOINER) {\n\t\t\t\t\t\t\t\tch = string[index + take++];\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst char = string.substring(index, index + take);\n\t\t\t\t\t\toutput.push(char);\n\t\t\t\t\t\tindex += take;\n\t\t\t\t\t\ttake = 0;\n\t\t\t\t}\n\t\t\t\treturn output;\n\t\t},\n\t\tfromCodePoint (...args) {\n\t\t\t\treturn args.map((codePoint)=>{\n\t\t\t\t\t\tif (codePoint > 0xFFFF) {\n\t\t\t\t\t\t\t\tcodePoint -= 0x10000;\n\t\t\t\t\t\t\t\treturn String.fromCharCode((codePoint >> 10) + 0xD800, codePoint % 0x400 + 0xDC00);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn String.fromCharCode(codePoint);\n\t\t\t\t}).join('');\n\t\t}\n};\n\nclass EventHandle {\n\t\tconstructor(handler, name, callback, scope, once = false){\n\t\t\t\tthis._removed = false;\n\t\t\t\tthis.handler = handler;\n\t\t\t\tthis.name = name;\n\t\t\t\tthis.callback = callback;\n\t\t\t\tthis.scope = scope;\n\t\t\t\tthis._once = once;\n\t\t}\n\t\toff() {\n\t\t\t\tif (this._removed) return;\n\t\t\t\tthis.handler.offByHandle(this);\n\t\t}\n\t\ton(name, callback, scope = this) {\n\t\t\t\treturn this.handler._addCallback(name, callback, scope, false);\n\t\t}\n\t\tonce(name, callback, scope = this) {\n\t\t\t\treturn this.handler._addCallback(name, callback, scope, true);\n\t\t}\n\t\tset removed(value) {\n\t\t\t\tif (!value) return;\n\t\t\t\tthis._removed = true;\n\t\t}\n\t\tget removed() {\n\t\t\t\treturn this._removed;\n\t\t}\n\t\ttoJSON(key) {\n\t\t\t\treturn undefined;\n\t\t}\n}\n\nclass EventHandler {\n\t\tinitEventHandler() {\n\t\t\t\tthis._callbacks = new Map();\n\t\t\t\tthis._callbackActive = new Map();\n\t\t}\n\t\t_addCallback(name, callback, scope, once) {\n\t\t\t\tif (!this._callbacks.has(name)) {\n\t\t\t\t\t\tthis._callbacks.set(name, []);\n\t\t\t\t}\n\t\t\t\tif (this._callbackActive.has(name)) {\n\t\t\t\t\t\tconst callbackActive = this._callbackActive.get(name);\n\t\t\t\t\t\tif (callbackActive && callbackActive === this._callbacks.get(name)) {\n\t\t\t\t\t\t\t\tthis._callbackActive.set(name, callbackActive.slice());\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst evt = new EventHandle(this, name, callback, scope, once);\n\t\t\t\tthis._callbacks.get(name).push(evt);\n\t\t\t\treturn evt;\n\t\t}\n\t\ton(name, callback, scope = this) {\n\t\t\t\treturn this._addCallback(name, callback, scope, false);\n\t\t}\n\t\tonce(name, callback, scope = this) {\n\t\t\t\treturn this._addCallback(name, callback, scope, true);\n\t\t}\n\t\toff(name, callback, scope) {\n\t\t\t\tif (name) {\n\t\t\t\t\t\tif (this._callbackActive.has(name) && this._callbackActive.get(name) === this._callbacks.get(name)) {\n\t\t\t\t\t\t\t\tthis._callbackActive.set(name, this._callbackActive.get(name).slice());\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tfor (const [key, callbacks] of this._callbackActive){\n\t\t\t\t\t\t\t\tif (!this._callbacks.has(key)) {\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (this._callbacks.get(key) !== callbacks) {\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis._callbackActive.set(key, callbacks.slice());\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!name) {\n\t\t\t\t\t\tfor (const callbacks of this._callbacks.values()){\n\t\t\t\t\t\t\t\tfor(let i = 0; i < callbacks.length; i++){\n\t\t\t\t\t\t\t\t\t\tcallbacks[i].removed = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._callbacks.clear();\n\t\t\t\t} else if (!callback) {\n\t\t\t\t\t\tconst callbacks = this._callbacks.get(name);\n\t\t\t\t\t\tif (callbacks) {\n\t\t\t\t\t\t\t\tfor(let i = 0; i < callbacks.length; i++){\n\t\t\t\t\t\t\t\t\t\tcallbacks[i].removed = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis._callbacks.delete(name);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tconst callbacks = this._callbacks.get(name);\n\t\t\t\t\t\tif (!callbacks) {\n\t\t\t\t\t\t\t\treturn this;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor(let i = 0; i < callbacks.length; i++){\n\t\t\t\t\t\t\t\tif (callbacks[i].callback !== callback) {\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (scope && callbacks[i].scope !== scope) {\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcallbacks[i].removed = true;\n\t\t\t\t\t\t\t\tcallbacks.splice(i, 1);\n\t\t\t\t\t\t\t\ti--;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (callbacks.length === 0) {\n\t\t\t\t\t\t\t\tthis._callbacks.delete(name);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t}\n\t\toffByHandle(handle) {\n\t\t\t\tconst name = handle.name;\n\t\t\t\thandle.removed = true;\n\t\t\t\tif (this._callbackActive.has(name) && this._callbackActive.get(name) === this._callbacks.get(name)) {\n\t\t\t\t\t\tthis._callbackActive.set(name, this._callbackActive.get(name).slice());\n\t\t\t\t}\n\t\t\t\tconst callbacks = this._callbacks.get(name);\n\t\t\t\tif (!callbacks) {\n\t\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tconst ind = callbacks.indexOf(handle);\n\t\t\t\tif (ind !== -1) {\n\t\t\t\t\t\tcallbacks.splice(ind, 1);\n\t\t\t\t\t\tif (callbacks.length === 0) {\n\t\t\t\t\t\t\t\tthis._callbacks.delete(name);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t}\n\t\tfire(name, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) {\n\t\t\t\tif (!name) {\n\t\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tconst callbacksInitial = this._callbacks.get(name);\n\t\t\t\tif (!callbacksInitial) {\n\t\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tlet callbacks;\n\t\t\t\tif (!this._callbackActive.has(name)) {\n\t\t\t\t\t\tthis._callbackActive.set(name, callbacksInitial);\n\t\t\t\t} else if (this._callbackActive.get(name) !== callbacksInitial) {\n\t\t\t\t\t\tcallbacks = callbacksInitial.slice();\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; (callbacks || this._callbackActive.get(name)) && i < (callbacks || this._callbackActive.get(name)).length; i++){\n\t\t\t\t\t\tconst evt = (callbacks || this._callbackActive.get(name))[i];\n\t\t\t\t\t\tif (!evt.callback) continue;\n\t\t\t\t\t\tevt.callback.call(evt.scope, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);\n\t\t\t\t\t\tif (evt._once) {\n\t\t\t\t\t\t\t\tconst existingCallback = this._callbacks.get(name);\n\t\t\t\t\t\t\t\tconst ind = existingCallback ? existingCallback.indexOf(evt) : -1;\n\t\t\t\t\t\t\t\tif (ind !== -1) {\n\t\t\t\t\t\t\t\t\t\tif (this._callbackActive.get(name) === existingCallback) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._callbackActive.set(name, this._callbackActive.get(name).slice());\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tconst callbacks = this._callbacks.get(name);\n\t\t\t\t\t\t\t\t\t\tif (!callbacks) continue;\n\t\t\t\t\t\t\t\t\t\tcallbacks[ind].removed = true;\n\t\t\t\t\t\t\t\t\t\tcallbacks.splice(ind, 1);\n\t\t\t\t\t\t\t\t\t\tif (callbacks.length === 0) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._callbacks.delete(name);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!callbacks) {\n\t\t\t\t\t\tthis._callbackActive.delete(name);\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t}\n\t\thasEvent(name) {\n\t\t\t\treturn !!this._callbacks.get(name)?.length;\n\t\t}\n\t\tconstructor(){\n\t\t\t\tthis._callbacks = new Map();\n\t\t\t\tthis._callbackActive = new Map();\n\t\t}\n}\n\nclass IndexedList {\n\t\tpush(key, item) {\n\t\t\t\tif (this._index[key]) {\n\t\t\t\t\t\tthrow Error(`Key already in index ${key}`);\n\t\t\t\t}\n\t\t\t\tconst location = this._list.push(item) - 1;\n\t\t\t\tthis._index[key] = location;\n\t\t}\n\t\thas(key) {\n\t\t\t\treturn this._index[key] !== undefined;\n\t\t}\n\t\tget(key) {\n\t\t\t\tconst location = this._index[key];\n\t\t\t\tif (location !== undefined) {\n\t\t\t\t\t\treturn this._list[location];\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tremove(key) {\n\t\t\t\tconst location = this._index[key];\n\t\t\t\tif (location !== undefined) {\n\t\t\t\t\t\tthis._list.splice(location, 1);\n\t\t\t\t\t\tdelete this._index[key];\n\t\t\t\t\t\tfor(key in this._index){\n\t\t\t\t\t\t\t\tconst idx = this._index[key];\n\t\t\t\t\t\t\t\tif (idx > location) {\n\t\t\t\t\t\t\t\t\t\tthis._index[key] = idx - 1;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t}\n\t\tlist() {\n\t\t\t\treturn this._list;\n\t\t}\n\t\tclear() {\n\t\t\t\tthis._list.length = 0;\n\t\t\t\tfor(const prop in this._index){\n\t\t\t\t\t\tdelete this._index[prop];\n\t\t\t\t}\n\t\t}\n\t\tconstructor(){\n\t\t\t\tthis._list = [];\n\t\t\t\tthis._index = {};\n\t\t}\n}\n\nconst cachedResult = (func)=>{\n\t\tconst uninitToken = {};\n\t\tlet result = uninitToken;\n\t\treturn ()=>{\n\t\t\t\tif (result === uninitToken) {\n\t\t\t\t\t\tresult = func();\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t};\n};\nclass Impl {\n\t\tstatic{\n\t\t\t\tthis.modules = {};\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.wasmSupported = cachedResult(()=>{\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tif (typeof WebAssembly === 'object' && typeof WebAssembly.instantiate === 'function') {\n\t\t\t\t\t\t\t\t\t\tconst module = new WebAssembly.Module(Uint8Array.of(0x0, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00));\n\t\t\t\t\t\t\t\t\t\tif (module instanceof WebAssembly.Module) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn new WebAssembly.Instance(module) instanceof WebAssembly.Instance;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t\treturn false;\n\t\t\t\t});\n\t\t}\n\t\tstatic loadScript(url, callback) {\n\t\t\t\tconst s = document.createElement(\"script\");\n\t\t\t\ts.setAttribute('src', url);\n\t\t\t\ts.onload = ()=>{\n\t\t\t\t\t\tcallback(null);\n\t\t\t\t};\n\t\t\t\ts.onerror = ()=>{\n\t\t\t\t\t\tcallback(`Failed to load script='${url}'`);\n\t\t\t\t};\n\t\t\t\tdocument.body.appendChild(s);\n\t\t}\n\t\tstatic loadWasm(moduleName, config, callback) {\n\t\t\t\tconst loadUrl = Impl.wasmSupported() && config.glueUrl && config.wasmUrl ? config.glueUrl : config.fallbackUrl;\n\t\t\t\tif (loadUrl) {\n\t\t\t\t\t\tImpl.loadScript(loadUrl, (err)=>{\n\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\t\tcallback(err, null);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tconst module = window[moduleName];\n\t\t\t\t\t\t\t\t\t\twindow[moduleName] = undefined;\n\t\t\t\t\t\t\t\t\t\tmodule({\n\t\t\t\t\t\t\t\t\t\t\t\tlocateFile: ()=>config.wasmUrl,\n\t\t\t\t\t\t\t\t\t\t\t\tonAbort: ()=>{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcallback('wasm module aborted.');\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}).then((instance)=>{\n\t\t\t\t\t\t\t\t\t\t\t\tcallback(null, instance);\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t\tcallback('No supported wasm modules found.', null);\n\t\t\t\t}\n\t\t}\n\t\tstatic getModule(name) {\n\t\t\t\tif (!Impl.modules.hasOwnProperty(name)) {\n\t\t\t\t\t\tImpl.modules[name] = {\n\t\t\t\t\t\t\t\tconfig: null,\n\t\t\t\t\t\t\t\tinitializing: false,\n\t\t\t\t\t\t\t\tinstance: null,\n\t\t\t\t\t\t\t\tcallbacks: []\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\treturn Impl.modules[name];\n\t\t}\n\t\tstatic initialize(moduleName, module) {\n\t\t\t\tif (module.initializing) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst config = module.config;\n\t\t\t\tif (config.glueUrl || config.wasmUrl || config.fallbackUrl) {\n\t\t\t\t\t\tmodule.initializing = true;\n\t\t\t\t\t\tImpl.loadWasm(moduleName, config, (err, instance)=>{\n\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\t\tif (config.errorHandler) {\n\t\t\t\t\t\t\t\t\t\t\t\tconfig.errorHandler(err);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tconsole.error(`failed to initialize module=${moduleName} error=${err}`);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tmodule.instance = instance;\n\t\t\t\t\t\t\t\t\t\tmodule.callbacks.forEach((callback)=>{\n\t\t\t\t\t\t\t\t\t\t\t\tcallback(instance);\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t}\n}\nclass WasmModule {\n\t\tstatic setConfig(moduleName, config) {\n\t\t\t\tconst module = Impl.getModule(moduleName);\n\t\t\t\tmodule.config = config;\n\t\t\t\tif (module.callbacks.length > 0) {\n\t\t\t\t\t\tImpl.initialize(moduleName, module);\n\t\t\t\t}\n\t\t}\n\t\tstatic getConfig(moduleName) {\n\t\t\t\treturn Impl.modules?.[moduleName]?.config;\n\t\t}\n\t\tstatic getInstance(moduleName, callback) {\n\t\t\t\tconst module = Impl.getModule(moduleName);\n\t\t\t\tif (module.instance) {\n\t\t\t\t\t\tcallback(module.instance);\n\t\t\t\t} else {\n\t\t\t\t\t\tmodule.callbacks.push(callback);\n\t\t\t\t\t\tif (module.config) {\n\t\t\t\t\t\t\t\tImpl.initialize(moduleName, module);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n}\n\nclass ReadStream {\n\t\tconstructor(arraybuffer){\n\t\t\t\tthis.offset = 0;\n\t\t\t\tthis.arraybuffer = arraybuffer;\n\t\t\t\tthis.dataView = new DataView(arraybuffer);\n\t\t}\n\t\tget remainingBytes() {\n\t\t\t\treturn this.dataView.byteLength - this.offset;\n\t\t}\n\t\treset(offset = 0) {\n\t\t\t\tthis.offset = offset;\n\t\t}\n\t\tskip(bytes) {\n\t\t\t\tthis.offset += bytes;\n\t\t}\n\t\talign(bytes) {\n\t\t\t\tthis.offset = this.offset + bytes - 1 & ~(bytes - 1);\n\t\t}\n\t\t_inc(amount) {\n\t\t\t\tthis.offset += amount;\n\t\t\t\treturn this.offset - amount;\n\t\t}\n\t\treadChar() {\n\t\t\t\treturn String.fromCharCode(this.dataView.getUint8(this.offset++));\n\t\t}\n\t\treadChars(numChars) {\n\t\t\t\tlet result = '';\n\t\t\t\tfor(let i = 0; i < numChars; ++i){\n\t\t\t\t\t\tresult += this.readChar();\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t}\n\t\treadU8() {\n\t\t\t\treturn this.dataView.getUint8(this.offset++);\n\t\t}\n\t\treadU16() {\n\t\t\t\treturn this.dataView.getUint16(this._inc(2), true);\n\t\t}\n\t\treadU32() {\n\t\t\t\treturn this.dataView.getUint32(this._inc(4), true);\n\t\t}\n\t\treadU64() {\n\t\t\t\treturn this.readU32() + 2 ** 32 * this.readU32();\n\t\t}\n\t\treadU32be() {\n\t\t\t\treturn this.dataView.getUint32(this._inc(4), false);\n\t\t}\n\t\treadArray(result) {\n\t\t\t\tfor(let i = 0; i < result.length; ++i){\n\t\t\t\t\t\tresult[i] = this.readU8();\n\t\t\t\t}\n\t\t}\n\t\treadLine() {\n\t\t\t\tconst view = this.dataView;\n\t\t\t\tlet result = '';\n\t\t\t\twhile(true){\n\t\t\t\t\t\tif (this.offset >= view.byteLength) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst c = String.fromCharCode(this.readU8());\n\t\t\t\t\t\tif (c === '\\n') {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tresult += c;\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t}\n}\n\nclass SortedLoopArray {\n\t\tconstructor(args){\n\t\t\t\tthis.items = [];\n\t\t\t\tthis.length = 0;\n\t\t\t\tthis.loopIndex = -1;\n\t\t\t\tthis._sortBy = args.sortBy;\n\t\t\t\tthis._sortHandler = this._doSort.bind(this);\n\t\t}\n\t\t_binarySearch(item) {\n\t\t\t\tlet left = 0;\n\t\t\t\tlet right = this.items.length - 1;\n\t\t\t\tconst search = item[this._sortBy];\n\t\t\t\tlet middle;\n\t\t\t\tlet current;\n\t\t\t\twhile(left <= right){\n\t\t\t\t\t\tmiddle = Math.floor((left + right) / 2);\n\t\t\t\t\t\tcurrent = this.items[middle][this._sortBy];\n\t\t\t\t\t\tif (current <= search) {\n\t\t\t\t\t\t\t\tleft = middle + 1;\n\t\t\t\t\t\t} else if (current > search) {\n\t\t\t\t\t\t\t\tright = middle - 1;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn left;\n\t\t}\n\t\t_doSort(a, b) {\n\t\t\t\tconst sortBy = this._sortBy;\n\t\t\t\treturn a[sortBy] - b[sortBy];\n\t\t}\n\t\tinsert(item) {\n\t\t\t\tconst index = this._binarySearch(item);\n\t\t\t\tthis.items.splice(index, 0, item);\n\t\t\t\tthis.length++;\n\t\t\t\tif (this.loopIndex >= index) {\n\t\t\t\t\t\tthis.loopIndex++;\n\t\t\t\t}\n\t\t}\n\t\tappend(item) {\n\t\t\t\tthis.items.push(item);\n\t\t\t\tthis.length++;\n\t\t}\n\t\tremove(item) {\n\t\t\t\tconst idx = this.items.indexOf(item);\n\t\t\t\tif (idx < 0) return;\n\t\t\t\tthis.items.splice(idx, 1);\n\t\t\t\tthis.length--;\n\t\t\t\tif (this.loopIndex >= idx) {\n\t\t\t\t\t\tthis.loopIndex--;\n\t\t\t\t}\n\t\t}\n\t\tsort() {\n\t\t\t\tconst current = this.loopIndex >= 0 ? this.items[this.loopIndex] : null;\n\t\t\t\tthis.items.sort(this._sortHandler);\n\t\t\t\tif (current !== null) {\n\t\t\t\t\t\tthis.loopIndex = this.items.indexOf(current);\n\t\t\t\t}\n\t\t}\n}\n\nclass Tags extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_ADD = 'add';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_REMOVE = 'remove';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_CHANGE = 'change';\n\t\t}\n\t\tconstructor(parent){\n\t\t\t\tsuper(), this._index = {}, this._list = [];\n\t\t\t\tthis._parent = parent;\n\t\t}\n\t\tadd(...args) {\n\t\t\t\tlet changed = false;\n\t\t\t\tconst tags = this._processArguments(args, true);\n\t\t\t\tif (!tags.length) {\n\t\t\t\t\t\treturn changed;\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < tags.length; i++){\n\t\t\t\t\t\tif (this._index[tags[i]]) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t\tthis._index[tags[i]] = true;\n\t\t\t\t\t\tthis._list.push(tags[i]);\n\t\t\t\t\t\tthis.fire('add', tags[i], this._parent);\n\t\t\t\t}\n\t\t\t\tif (changed) {\n\t\t\t\t\t\tthis.fire('change', this._parent);\n\t\t\t\t}\n\t\t\t\treturn changed;\n\t\t}\n\t\tremove(...args) {\n\t\t\t\tlet changed = false;\n\t\t\t\tif (!this._list.length) {\n\t\t\t\t\t\treturn changed;\n\t\t\t\t}\n\t\t\t\tconst tags = this._processArguments(args, true);\n\t\t\t\tif (!tags.length) {\n\t\t\t\t\t\treturn changed;\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < tags.length; i++){\n\t\t\t\t\t\tif (!this._index[tags[i]]) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t\tdelete this._index[tags[i]];\n\t\t\t\t\t\tthis._list.splice(this._list.indexOf(tags[i]), 1);\n\t\t\t\t\t\tthis.fire('remove', tags[i], this._parent);\n\t\t\t\t}\n\t\t\t\tif (changed) {\n\t\t\t\t\t\tthis.fire('change', this._parent);\n\t\t\t\t}\n\t\t\t\treturn changed;\n\t\t}\n\t\tclear() {\n\t\t\t\tif (!this._list.length) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst tags = this._list.slice(0);\n\t\t\t\tthis._list = [];\n\t\t\t\tthis._index = {};\n\t\t\t\tfor(let i = 0; i < tags.length; i++){\n\t\t\t\t\t\tthis.fire('remove', tags[i], this._parent);\n\t\t\t\t}\n\t\t\t\tthis.fire('change', this._parent);\n\t\t}\n\t\thas(...query) {\n\t\t\t\tif (!this._list.length) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn this._has(this._processArguments(query));\n\t\t}\n\t\t_has(tags) {\n\t\t\t\tif (!this._list.length || !tags.length) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < tags.length; i++){\n\t\t\t\t\t\tif (tags[i].length === 1) {\n\t\t\t\t\t\t\t\tif (this._index[tags[i][0]]) {\n\t\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tlet multiple = true;\n\t\t\t\t\t\t\t\tfor(let t = 0; t < tags[i].length; t++){\n\t\t\t\t\t\t\t\t\t\tif (this._index[tags[i][t]]) {\n\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tmultiple = false;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (multiple) {\n\t\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t}\n\t\tlist() {\n\t\t\t\treturn this._list.slice(0);\n\t\t}\n\t\t_processArguments(args, flat) {\n\t\t\t\tconst tags = [];\n\t\t\t\tlet tmp = [];\n\t\t\t\tif (!args || !args.length) {\n\t\t\t\t\t\treturn tags;\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < args.length; i++){\n\t\t\t\t\t\tif (args[i] instanceof Array) {\n\t\t\t\t\t\t\t\tif (!flat) {\n\t\t\t\t\t\t\t\t\t\ttmp = [];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tfor(let t = 0; t < args[i].length; t++){\n\t\t\t\t\t\t\t\t\t\tif (typeof args[i][t] !== 'string') {\n\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (flat) {\n\t\t\t\t\t\t\t\t\t\t\t\ttags.push(args[i][t]);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\ttmp.push(args[i][t]);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (!flat && tmp.length) {\n\t\t\t\t\t\t\t\t\t\ttags.push(tmp);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (typeof args[i] === 'string') {\n\t\t\t\t\t\t\t\tif (flat) {\n\t\t\t\t\t\t\t\t\t\ttags.push(args[i]);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\ttags.push([\n\t\t\t\t\t\t\t\t\t\t\t\targs[i]\n\t\t\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn tags;\n\t\t}\n\t\tget size() {\n\t\t\t\treturn this._list.length;\n\t\t}\n}\n\nconst now = typeof window !== 'undefined' && window.performance && window.performance.now ? performance.now.bind(performance) : Date.now;\n\nfunction createURI(options) {\n\t\tlet s = '';\n\t\tif ((options.authority || options.scheme) && (options.host || options.hostpath)) {\n\t\t\t\tthrow new Error('Can\\'t have \\'scheme\\' or \\'authority\\' and \\'host\\' or \\'hostpath\\' option');\n\t\t}\n\t\tif (options.host && options.hostpath) {\n\t\t\t\tthrow new Error('Can\\'t have \\'host\\' and \\'hostpath\\' option');\n\t\t}\n\t\tif (options.path && options.hostpath) {\n\t\t\t\tthrow new Error('Can\\'t have \\'path\\' and \\'hostpath\\' option');\n\t\t}\n\t\tif (options.scheme) {\n\t\t\t\ts += `${options.scheme}:`;\n\t\t}\n\t\tif (options.authority) {\n\t\t\t\ts += `//${options.authority}`;\n\t\t}\n\t\tif (options.host) {\n\t\t\t\ts += options.host;\n\t\t}\n\t\tif (options.path) {\n\t\t\t\ts += options.path;\n\t\t}\n\t\tif (options.hostpath) {\n\t\t\t\ts += options.hostpath;\n\t\t}\n\t\tif (options.query) {\n\t\t\t\ts += `?${options.query}`;\n\t\t}\n\t\tif (options.fragment) {\n\t\t\t\ts += `#${options.fragment}`;\n\t\t}\n\t\treturn s;\n}\nconst re = /^(([^:/?#]+):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?/;\nclass URI {\n\t\tconstructor(uri){\n\t\t\t\tconst result = uri.match(re);\n\t\t\t\tthis.scheme = result[2];\n\t\t\t\tthis.authority = result[4];\n\t\t\t\tthis.path = result[5];\n\t\t\t\tthis.query = result[7];\n\t\t\t\tthis.fragment = result[9];\n\t\t}\n\t\ttoString() {\n\t\t\t\tlet s = '';\n\t\t\t\tif (this.scheme) {\n\t\t\t\t\t\ts += `${this.scheme}:`;\n\t\t\t\t}\n\t\t\t\tif (this.authority) {\n\t\t\t\t\t\ts += `//${this.authority}`;\n\t\t\t\t}\n\t\t\t\ts += this.path;\n\t\t\t\tif (this.query) {\n\t\t\t\t\t\ts += `?${this.query}`;\n\t\t\t\t}\n\t\t\t\tif (this.fragment) {\n\t\t\t\t\t\ts += `#${this.fragment}`;\n\t\t\t\t}\n\t\t\t\treturn s;\n\t\t}\n\t\tgetQuery() {\n\t\t\t\tconst result = {};\n\t\t\t\tif (this.query) {\n\t\t\t\t\t\tconst queryParams = decodeURIComponent(this.query).split('&');\n\t\t\t\t\t\tfor (const queryParam of queryParams){\n\t\t\t\t\t\t\t\tconst pair = queryParam.split('=');\n\t\t\t\t\t\t\t\tresult[pair[0]] = pair[1];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t}\n\t\tsetQuery(params) {\n\t\t\t\tlet q = '';\n\t\t\t\tfor(const key in params){\n\t\t\t\t\t\tif (params.hasOwnProperty(key)) {\n\t\t\t\t\t\t\t\tif (q !== '') {\n\t\t\t\t\t\t\t\t\t\tq += '&';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tq += `${encodeURIComponent(key)}=${encodeURIComponent(params[key])}`;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.query = q;\n\t\t}\n}\n\nclass Tracing {\n\t\tstatic{\n\t\t\t\tthis._traceChannels = new Set();\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.stack = false;\n\t\t}\n\t\tstatic set(channel, enabled = true) {}\n\t\tstatic get(channel) {\n\t\t\t\treturn Tracing._traceChannels.has(channel);\n\t\t}\n}\n\nconst CURVE_LINEAR = 0;\nconst CURVE_SMOOTHSTEP = 1;\nconst CURVE_SPLINE = 4;\nconst CURVE_STEP = 5;\n\nconst math = {\n\t\tDEG_TO_RAD: Math.PI / 180,\n\t\tRAD_TO_DEG: 180 / Math.PI,\n\t\tclamp (value, min, max) {\n\t\t\t\tif (value >= max) return max;\n\t\t\t\tif (value <= min) return min;\n\t\t\t\treturn value;\n\t\t},\n\t\tintToBytes24 (i) {\n\t\t\t\tconst r = i >> 16 & 0xff;\n\t\t\t\tconst g = i >> 8 & 0xff;\n\t\t\t\tconst b = i & 0xff;\n\t\t\t\treturn [\n\t\t\t\t\t\tr,\n\t\t\t\t\t\tg,\n\t\t\t\t\t\tb\n\t\t\t\t];\n\t\t},\n\t\tintToBytes32 (i) {\n\t\t\t\tconst r = i >> 24 & 0xff;\n\t\t\t\tconst g = i >> 16 & 0xff;\n\t\t\t\tconst b = i >> 8 & 0xff;\n\t\t\t\tconst a = i & 0xff;\n\t\t\t\treturn [\n\t\t\t\t\t\tr,\n\t\t\t\t\t\tg,\n\t\t\t\t\t\tb,\n\t\t\t\t\t\ta\n\t\t\t\t];\n\t\t},\n\t\tbytesToInt24 (r, g, b) {\n\t\t\t\tif (r.length) {\n\t\t\t\t\t\tb = r[2];\n\t\t\t\t\t\tg = r[1];\n\t\t\t\t\t\tr = r[0];\n\t\t\t\t}\n\t\t\t\treturn r << 16 | g << 8 | b;\n\t\t},\n\t\tbytesToInt32 (r, g, b, a) {\n\t\t\t\tif (r.length) {\n\t\t\t\t\t\ta = r[3];\n\t\t\t\t\t\tb = r[2];\n\t\t\t\t\t\tg = r[1];\n\t\t\t\t\t\tr = r[0];\n\t\t\t\t}\n\t\t\t\treturn (r << 24 | g << 16 | b << 8 | a) >>> 0;\n\t\t},\n\t\tlerp (a, b, alpha) {\n\t\t\t\treturn a + (b - a) * math.clamp(alpha, 0, 1);\n\t\t},\n\t\tlerpAngle (a, b, alpha) {\n\t\t\t\tif (b - a > 180) {\n\t\t\t\t\t\tb -= 360;\n\t\t\t\t}\n\t\t\t\tif (b - a < -180) {\n\t\t\t\t\t\tb += 360;\n\t\t\t\t}\n\t\t\t\treturn math.lerp(a, b, math.clamp(alpha, 0, 1));\n\t\t},\n\t\tpowerOfTwo (x) {\n\t\t\t\treturn x !== 0 && !(x & x - 1);\n\t\t},\n\t\tnextPowerOfTwo (val) {\n\t\t\t\tval--;\n\t\t\t\tval |= val >> 1;\n\t\t\t\tval |= val >> 2;\n\t\t\t\tval |= val >> 4;\n\t\t\t\tval |= val >> 8;\n\t\t\t\tval |= val >> 16;\n\t\t\t\tval++;\n\t\t\t\treturn val;\n\t\t},\n\t\tnearestPowerOfTwo (val) {\n\t\t\t\treturn Math.pow(2, Math.round(Math.log2(val)));\n\t\t},\n\t\trandom (min, max) {\n\t\t\t\tconst diff = max - min;\n\t\t\t\treturn Math.random() * diff + min;\n\t\t},\n\t\tsmoothstep (min, max, x) {\n\t\t\t\tif (x <= min) return 0;\n\t\t\t\tif (x >= max) return 1;\n\t\t\t\tx = (x - min) / (max - min);\n\t\t\t\treturn x * x * (3 - 2 * x);\n\t\t},\n\t\tsmootherstep (min, max, x) {\n\t\t\t\tif (x <= min) return 0;\n\t\t\t\tif (x >= max) return 1;\n\t\t\t\tx = (x - min) / (max - min);\n\t\t\t\treturn x * x * x * (x * (x * 6 - 15) + 10);\n\t\t},\n\t\troundUp (numToRound, multiple) {\n\t\t\t\tif (multiple === 0) {\n\t\t\t\t\t\treturn numToRound;\n\t\t\t\t}\n\t\t\t\treturn Math.ceil(numToRound / multiple) * multiple;\n\t\t},\n\t\tbetween (num, a, b, inclusive) {\n\t\t\t\tconst min = Math.min(a, b);\n\t\t\t\tconst max = Math.max(a, b);\n\t\t\t\treturn inclusive ? num >= min && num <= max : num > min && num < max;\n\t\t}\n};\n\nclass Color {\n\t\tconstructor(r = 0, g = 0, b = 0, a = 1){\n\t\t\t\tconst length = r.length;\n\t\t\t\tif (length === 3 || length === 4) {\n\t\t\t\t\t\tthis.r = r[0];\n\t\t\t\t\t\tthis.g = r[1];\n\t\t\t\t\t\tthis.b = r[2];\n\t\t\t\t\t\tthis.a = r[3] ?? 1;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.r = r;\n\t\t\t\t\t\tthis.g = g;\n\t\t\t\t\t\tthis.b = b;\n\t\t\t\t\t\tthis.a = a;\n\t\t\t\t}\n\t\t}\n\t\tclone() {\n\t\t\t\tconst cstr = this.constructor;\n\t\t\t\treturn new cstr(this.r, this.g, this.b, this.a);\n\t\t}\n\t\tcopy(rhs) {\n\t\t\t\tthis.r = rhs.r;\n\t\t\t\tthis.g = rhs.g;\n\t\t\t\tthis.b = rhs.b;\n\t\t\t\tthis.a = rhs.a;\n\t\t\t\treturn this;\n\t\t}\n\t\tequals(rhs) {\n\t\t\t\treturn this.r === rhs.r && this.g === rhs.g && this.b === rhs.b && this.a === rhs.a;\n\t\t}\n\t\tset(r, g, b, a = 1) {\n\t\t\t\tthis.r = r;\n\t\t\t\tthis.g = g;\n\t\t\t\tthis.b = b;\n\t\t\t\tthis.a = a;\n\t\t\t\treturn this;\n\t\t}\n\t\tlerp(lhs, rhs, alpha) {\n\t\t\t\tthis.r = lhs.r + alpha * (rhs.r - lhs.r);\n\t\t\t\tthis.g = lhs.g + alpha * (rhs.g - lhs.g);\n\t\t\t\tthis.b = lhs.b + alpha * (rhs.b - lhs.b);\n\t\t\t\tthis.a = lhs.a + alpha * (rhs.a - lhs.a);\n\t\t\t\treturn this;\n\t\t}\n\t\tlinear(src = this) {\n\t\t\t\tthis.r = Math.pow(src.r, 2.2);\n\t\t\t\tthis.g = Math.pow(src.g, 2.2);\n\t\t\t\tthis.b = Math.pow(src.b, 2.2);\n\t\t\t\tthis.a = src.a;\n\t\t\t\treturn this;\n\t\t}\n\t\tgamma(src = this) {\n\t\t\t\tthis.r = Math.pow(src.r, 1 / 2.2);\n\t\t\t\tthis.g = Math.pow(src.g, 1 / 2.2);\n\t\t\t\tthis.b = Math.pow(src.b, 1 / 2.2);\n\t\t\t\tthis.a = src.a;\n\t\t\t\treturn this;\n\t\t}\n\t\tmulScalar(scalar) {\n\t\t\t\tthis.r *= scalar;\n\t\t\t\tthis.g *= scalar;\n\t\t\t\tthis.b *= scalar;\n\t\t\t\treturn this;\n\t\t}\n\t\tfromString(hex) {\n\t\t\t\tconst i = parseInt(hex.replace('#', '0x'), 16);\n\t\t\t\tlet bytes;\n\t\t\t\tif (hex.length > 7) {\n\t\t\t\t\t\tbytes = math.intToBytes32(i);\n\t\t\t\t} else {\n\t\t\t\t\t\tbytes = math.intToBytes24(i);\n\t\t\t\t\t\tbytes[3] = 255;\n\t\t\t\t}\n\t\t\t\tthis.set(bytes[0] / 255, bytes[1] / 255, bytes[2] / 255, bytes[3] / 255);\n\t\t\t\treturn this;\n\t\t}\n\t\tfromArray(arr, offset = 0) {\n\t\t\t\tthis.r = arr[offset] ?? this.r;\n\t\t\t\tthis.g = arr[offset + 1] ?? this.g;\n\t\t\t\tthis.b = arr[offset + 2] ?? this.b;\n\t\t\t\tthis.a = arr[offset + 3] ?? this.a;\n\t\t\t\treturn this;\n\t\t}\n\t\ttoString(alpha, asArray) {\n\t\t\t\tconst { r, g, b, a } = this;\n\t\t\t\tif (asArray || r > 1 || g > 1 || b > 1) {\n\t\t\t\t\t\treturn `${r.toFixed(3)}, ${g.toFixed(3)}, ${b.toFixed(3)}, ${a.toFixed(3)}`;\n\t\t\t\t}\n\t\t\t\tlet s = `#${((1 << 24) + (Math.round(r * 255) << 16) + (Math.round(g * 255) << 8) + Math.round(b * 255)).toString(16).slice(1)}`;\n\t\t\t\tif (alpha === true) {\n\t\t\t\t\t\tconst aa = Math.round(a * 255).toString(16);\n\t\t\t\t\t\tif (this.a < 16 / 255) {\n\t\t\t\t\t\t\t\ts += `0${aa}`;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ts += aa;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn s;\n\t\t}\n\t\ttoArray(arr = [], offset = 0, alpha = true) {\n\t\t\t\tarr[offset] = this.r;\n\t\t\t\tarr[offset + 1] = this.g;\n\t\t\t\tarr[offset + 2] = this.b;\n\t\t\t\tif (alpha) {\n\t\t\t\t\t\tarr[offset + 3] = this.a;\n\t\t\t\t}\n\t\t\t\treturn arr;\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.BLACK = Object.freeze(new Color(0, 0, 0, 1));\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.BLUE = Object.freeze(new Color(0, 0, 1, 1));\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.CYAN = Object.freeze(new Color(0, 1, 1, 1));\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.GRAY = Object.freeze(new Color(0.5, 0.5, 0.5, 1));\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.GREEN = Object.freeze(new Color(0, 1, 0, 1));\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.MAGENTA = Object.freeze(new Color(1, 0, 1, 1));\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.RED = Object.freeze(new Color(1, 0, 0, 1));\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.WHITE = Object.freeze(new Color(1, 1, 1, 1));\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.YELLOW = Object.freeze(new Color(1, 1, 0, 1));\n\t\t}\n}\n\nclass CurveEvaluator {\n\t\tconstructor(curve, time = 0){\n\t\t\t\tthis._left = -Infinity;\n\t\t\t\tthis._right = Infinity;\n\t\t\t\tthis._recip = 0;\n\t\t\t\tthis._p0 = 0;\n\t\t\t\tthis._p1 = 0;\n\t\t\t\tthis._m0 = 0;\n\t\t\t\tthis._m1 = 0;\n\t\t\t\tthis._curve = curve;\n\t\t\t\tthis._reset(time);\n\t\t}\n\t\tevaluate(time, forceReset = false) {\n\t\t\t\tif (forceReset || time < this._left || time >= this._right) {\n\t\t\t\t\t\tthis._reset(time);\n\t\t\t\t}\n\t\t\t\tlet result;\n\t\t\t\tconst type = this._curve.type;\n\t\t\t\tif (type === CURVE_STEP) {\n\t\t\t\t\t\tresult = this._p0;\n\t\t\t\t} else {\n\t\t\t\t\t\tconst t = this._recip === 0 ? 0 : (time - this._left) * this._recip;\n\t\t\t\t\t\tif (type === CURVE_LINEAR) {\n\t\t\t\t\t\t\t\tresult = math.lerp(this._p0, this._p1, t);\n\t\t\t\t\t\t} else if (type === CURVE_SMOOTHSTEP) {\n\t\t\t\t\t\t\t\tresult = math.lerp(this._p0, this._p1, t * t * (3 - 2 * t));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tresult = this._evaluateHermite(this._p0, this._p1, this._m0, this._m1, t);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t}\n\t\t_reset(time) {\n\t\t\t\tconst keys = this._curve.keys;\n\t\t\t\tconst len = keys.length;\n\t\t\t\tif (!len) {\n\t\t\t\t\t\tthis._left = -Infinity;\n\t\t\t\t\t\tthis._right = Infinity;\n\t\t\t\t\t\tthis._recip = 0;\n\t\t\t\t\t\tthis._p0 = this._p1 = this._m0 = this._m1 = 0;\n\t\t\t\t} else {\n\t\t\t\t\t\tif (time < keys[0][0]) {\n\t\t\t\t\t\t\t\tthis._left = -Infinity;\n\t\t\t\t\t\t\t\tthis._right = keys[0][0];\n\t\t\t\t\t\t\t\tthis._recip = 0;\n\t\t\t\t\t\t\t\tthis._p0 = this._p1 = keys[0][1];\n\t\t\t\t\t\t\t\tthis._m0 = this._m1 = 0;\n\t\t\t\t\t\t} else if (time >= keys[len - 1][0]) {\n\t\t\t\t\t\t\t\tthis._left = keys[len - 1][0];\n\t\t\t\t\t\t\t\tthis._right = Infinity;\n\t\t\t\t\t\t\t\tthis._recip = 0;\n\t\t\t\t\t\t\t\tthis._p0 = this._p1 = keys[len - 1][1];\n\t\t\t\t\t\t\t\tthis._m0 = this._m1 = 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tlet index = 0;\n\t\t\t\t\t\t\t\twhile(time >= keys[index + 1][0]){\n\t\t\t\t\t\t\t\t\t\tindex++;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis._left = keys[index][0];\n\t\t\t\t\t\t\t\tthis._right = keys[index + 1][0];\n\t\t\t\t\t\t\t\tconst diff = 1.0 / (this._right - this._left);\n\t\t\t\t\t\t\t\tthis._recip = isFinite(diff) ? diff : 0;\n\t\t\t\t\t\t\t\tthis._p0 = keys[index][1];\n\t\t\t\t\t\t\t\tthis._p1 = keys[index + 1][1];\n\t\t\t\t\t\t\t\tif (this._curve.type === CURVE_SPLINE) {\n\t\t\t\t\t\t\t\t\t\tthis._calcTangents(keys, index);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_calcTangents(keys, index) {\n\t\t\t\tlet a;\n\t\t\t\tconst b = keys[index];\n\t\t\t\tconst c = keys[index + 1];\n\t\t\t\tlet d;\n\t\t\t\tif (index === 0) {\n\t\t\t\t\t\ta = [\n\t\t\t\t\t\t\t\tkeys[0][0] + (keys[0][0] - keys[1][0]),\n\t\t\t\t\t\t\t\tkeys[0][1] + (keys[0][1] - keys[1][1])\n\t\t\t\t\t\t];\n\t\t\t\t} else {\n\t\t\t\t\t\ta = keys[index - 1];\n\t\t\t\t}\n\t\t\t\tif (index === keys.length - 2) {\n\t\t\t\t\t\td = [\n\t\t\t\t\t\t\t\tkeys[index + 1][0] + (keys[index + 1][0] - keys[index][0]),\n\t\t\t\t\t\t\t\tkeys[index + 1][1] + (keys[index + 1][1] - keys[index][1])\n\t\t\t\t\t\t];\n\t\t\t\t} else {\n\t\t\t\t\t\td = keys[index + 2];\n\t\t\t\t}\n\t\t\t\tif (this._curve.type === CURVE_SPLINE) {\n\t\t\t\t\t\tconst s1_ = 2 * (c[0] - b[0]) / (c[0] - a[0]);\n\t\t\t\t\t\tconst s2_ = 2 * (c[0] - b[0]) / (d[0] - b[0]);\n\t\t\t\t\t\tthis._m0 = this._curve.tension * (isFinite(s1_) ? s1_ : 0) * (c[1] - a[1]);\n\t\t\t\t\t\tthis._m1 = this._curve.tension * (isFinite(s2_) ? s2_ : 0) * (d[1] - b[1]);\n\t\t\t\t} else {\n\t\t\t\t\t\tconst s1 = (c[0] - b[0]) / (b[0] - a[0]);\n\t\t\t\t\t\tconst s2 = (c[0] - b[0]) / (d[0] - c[0]);\n\t\t\t\t\t\tconst a_ = b[1] + (a[1] - b[1]) * (isFinite(s1) ? s1 : 0);\n\t\t\t\t\t\tconst d_ = c[1] + (d[1] - c[1]) * (isFinite(s2) ? s2 : 0);\n\t\t\t\t\t\tconst tension = this._curve.tension;\n\t\t\t\t\t\tthis._m0 = tension * (c[1] - a_);\n\t\t\t\t\t\tthis._m1 = tension * (d_ - b[1]);\n\t\t\t\t}\n\t\t}\n\t\t_evaluateHermite(p0, p1, m0, m1, t) {\n\t\t\t\tconst t2 = t * t;\n\t\t\t\tconst twot = t + t;\n\t\t\t\tconst omt = 1 - t;\n\t\t\t\tconst omt2 = omt * omt;\n\t\t\t\treturn p0 * ((1 + twot) * omt2) + m0 * (t * omt2) + p1 * (t2 * (3 - twot)) + m1 * (t2 * (t - 1));\n\t\t}\n}\n\nclass Curve {\n\t\tconstructor(data){\n\t\t\t\tthis.keys = [];\n\t\t\t\tthis.type = CURVE_SMOOTHSTEP;\n\t\t\t\tthis.tension = 0.5;\n\t\t\t\tthis._eval = new CurveEvaluator(this);\n\t\t\t\tif (data) {\n\t\t\t\t\t\tfor(let i = 0; i < data.length - 1; i += 2){\n\t\t\t\t\t\t\t\tthis.keys.push([\n\t\t\t\t\t\t\t\t\t\tdata[i],\n\t\t\t\t\t\t\t\t\t\tdata[i + 1]\n\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.sort();\n\t\t}\n\t\tget length() {\n\t\t\t\treturn this.keys.length;\n\t\t}\n\t\tadd(time, value) {\n\t\t\t\tconst keys = this.keys;\n\t\t\t\tconst len = keys.length;\n\t\t\t\tlet i = 0;\n\t\t\t\tfor(; i < len; i++){\n\t\t\t\t\t\tif (keys[i][0] > time) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst key = [\n\t\t\t\t\t\ttime,\n\t\t\t\t\t\tvalue\n\t\t\t\t];\n\t\t\t\tthis.keys.splice(i, 0, key);\n\t\t\t\treturn key;\n\t\t}\n\t\tget(index) {\n\t\t\t\treturn this.keys[index];\n\t\t}\n\t\tsort() {\n\t\t\t\tthis.keys.sort((a, b)=>a[0] - b[0]);\n\t\t}\n\t\tvalue(time) {\n\t\t\t\treturn this._eval.evaluate(time, true);\n\t\t}\n\t\tclosest(time) {\n\t\t\t\tconst keys = this.keys;\n\t\t\t\tconst length = keys.length;\n\t\t\t\tlet min = 2;\n\t\t\t\tlet result = null;\n\t\t\t\tfor(let i = 0; i < length; i++){\n\t\t\t\t\t\tconst diff = Math.abs(time - keys[i][0]);\n\t\t\t\t\t\tif (min >= diff) {\n\t\t\t\t\t\t\t\tmin = diff;\n\t\t\t\t\t\t\t\tresult = keys[i];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t}\n\t\tclone() {\n\t\t\t\tconst result = new this.constructor();\n\t\t\t\tresult.keys = this.keys.map((key)=>[\n\t\t\t\t\t\t\t\t...key\n\t\t\t\t\t\t]);\n\t\t\t\tresult.type = this.type;\n\t\t\t\tresult.tension = this.tension;\n\t\t\t\treturn result;\n\t\t}\n\t\tquantize(precision) {\n\t\t\t\tprecision = Math.max(precision, 2);\n\t\t\t\tconst values = new Float32Array(precision);\n\t\t\t\tconst step = 1.0 / (precision - 1);\n\t\t\t\tvalues[0] = this._eval.evaluate(0, true);\n\t\t\t\tfor(let i = 1; i < precision; i++){\n\t\t\t\t\t\tvalues[i] = this._eval.evaluate(step * i);\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t}\n\t\tquantizeClamped(precision, min, max) {\n\t\t\t\tconst result = this.quantize(precision);\n\t\t\t\tfor(let i = 0; i < result.length; ++i){\n\t\t\t\t\t\tresult[i] = Math.min(max, Math.max(min, result[i]));\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t}\n}\n\nclass CurveSet {\n\t\tconstructor(...args){\n\t\t\t\tthis.curves = [];\n\t\t\t\tthis._type = CURVE_SMOOTHSTEP;\n\t\t\t\tif (args.length > 1) {\n\t\t\t\t\t\tfor(let i = 0; i < args.length; i++){\n\t\t\t\t\t\t\t\tthis.curves.push(new Curve(args[i]));\n\t\t\t\t\t\t}\n\t\t\t\t} else if (args.length === 0) {\n\t\t\t\t\t\tthis.curves.push(new Curve());\n\t\t\t\t} else {\n\t\t\t\t\t\tconst arg = args[0];\n\t\t\t\t\t\tif (typeof arg === 'number') {\n\t\t\t\t\t\t\t\tfor(let i = 0; i < arg; i++){\n\t\t\t\t\t\t\t\t\t\tthis.curves.push(new Curve());\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tfor(let i = 0; i < arg.length; i++){\n\t\t\t\t\t\t\t\t\t\tthis.curves.push(new Curve(arg[i]));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget length() {\n\t\t\t\treturn this.curves.length;\n\t\t}\n\t\tset type(value) {\n\t\t\t\tthis._type = value;\n\t\t\t\tfor(let i = 0; i < this.curves.length; i++){\n\t\t\t\t\t\tthis.curves[i].type = value;\n\t\t\t\t}\n\t\t}\n\t\tget type() {\n\t\t\t\treturn this._type;\n\t\t}\n\t\tget(index) {\n\t\t\t\treturn this.curves[index];\n\t\t}\n\t\tvalue(time, result = []) {\n\t\t\t\tconst length = this.curves.length;\n\t\t\t\tresult.length = length;\n\t\t\t\tfor(let i = 0; i < length; i++){\n\t\t\t\t\t\tresult[i] = this.curves[i].value(time);\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t}\n\t\tclone() {\n\t\t\t\tconst result = new this.constructor();\n\t\t\t\tresult.curves = [];\n\t\t\t\tfor(let i = 0; i < this.curves.length; i++){\n\t\t\t\t\t\tresult.curves.push(this.curves[i].clone());\n\t\t\t\t}\n\t\t\t\tresult._type = this._type;\n\t\t\t\treturn result;\n\t\t}\n\t\tquantize(precision) {\n\t\t\t\tprecision = Math.max(precision, 2);\n\t\t\t\tconst numCurves = this.curves.length;\n\t\t\t\tconst values = new Float32Array(precision * numCurves);\n\t\t\t\tconst step = 1.0 / (precision - 1);\n\t\t\t\tfor(let c = 0; c < numCurves; c++){\n\t\t\t\t\t\tconst ev = new CurveEvaluator(this.curves[c]);\n\t\t\t\t\t\tfor(let i = 0; i < precision; i++){\n\t\t\t\t\t\t\t\tvalues[i * numCurves + c] = ev.evaluate(step * i);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t}\n\t\tquantizeClamped(precision, min, max) {\n\t\t\t\tconst result = this.quantize(precision);\n\t\t\t\tfor(let i = 0; i < result.length; ++i){\n\t\t\t\t\t\tresult[i] = Math.min(max, Math.max(min, result[i]));\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t}\n}\n\nconst floatView = new Float32Array(1);\nconst int32View = new Int32Array(floatView.buffer);\nclass FloatPacking {\n\t\tstatic float2Half(value) {\n\t\t\t\tfloatView[0] = value;\n\t\t\t\tconst x = int32View[0];\n\t\t\t\tlet bits = x >> 16 & 0x8000;\n\t\t\t\tlet m = x >> 12 & 0x07ff;\n\t\t\t\tconst e = x >> 23 & 0xff;\n\t\t\t\tif (e < 103) {\n\t\t\t\t\t\treturn bits;\n\t\t\t\t}\n\t\t\t\tif (e > 142) {\n\t\t\t\t\t\tbits |= 0x7c00;\n\t\t\t\t\t\tbits |= (e === 255 ? 0 : 1) && x & 0x007fffff;\n\t\t\t\t\t\treturn bits;\n\t\t\t\t}\n\t\t\t\tif (e < 113) {\n\t\t\t\t\t\tm |= 0x0800;\n\t\t\t\t\t\tbits |= (m >> 114 - e) + (m >> 113 - e & 1);\n\t\t\t\t\t\treturn bits;\n\t\t\t\t}\n\t\t\t\tbits |= e - 112 << 10 | m >> 1;\n\t\t\t\tbits += m & 1;\n\t\t\t\treturn bits;\n\t\t}\n\t\tstatic float2RGBA8(value, data) {\n\t\t\t\tfloatView[0] = value;\n\t\t\t\tconst intBits = int32View[0];\n\t\t\t\tdata.r = (intBits >> 24 & 0xFF) / 255.0;\n\t\t\t\tdata.g = (intBits >> 16 & 0xFF) / 255.0;\n\t\t\t\tdata.b = (intBits >> 8 & 0xFF) / 255.0;\n\t\t\t\tdata.a = (intBits & 0xFF) / 255.0;\n\t\t}\n}\n\nclass Kernel {\n\t\tstatic concentric(numRings, numPoints) {\n\t\t\t\tconst kernel = [];\n\t\t\t\tkernel.push(0, 0);\n\t\t\t\tconst spacing = 2 * Math.PI / numRings / numPoints;\n\t\t\t\tfor(let ring = 1; ring <= numRings; ring++){\n\t\t\t\t\t\tconst radius = ring / numRings;\n\t\t\t\t\t\tconst circumference = 2 * Math.PI * radius;\n\t\t\t\t\t\tconst pointsPerRing = Math.max(1, Math.floor(circumference / spacing));\n\t\t\t\t\t\tconst angleStep = 2 * Math.PI / pointsPerRing;\n\t\t\t\t\t\tfor(let point = 0; point < pointsPerRing; point++){\n\t\t\t\t\t\t\t\tconst angle = point * angleStep;\n\t\t\t\t\t\t\t\tconst x = radius * Math.cos(angle);\n\t\t\t\t\t\t\t\tconst y = radius * Math.sin(angle);\n\t\t\t\t\t\t\t\tkernel.push(x, y);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn kernel;\n\t\t}\n}\n\nclass Vec3 {\n\t\tconstructor(x = 0, y = 0, z = 0){\n\t\t\t\tif (x.length === 3) {\n\t\t\t\t\t\tthis.x = x[0];\n\t\t\t\t\t\tthis.y = x[1];\n\t\t\t\t\t\tthis.z = x[2];\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.x = x;\n\t\t\t\t\t\tthis.y = y;\n\t\t\t\t\t\tthis.z = z;\n\t\t\t\t}\n\t\t}\n\t\tadd(rhs) {\n\t\t\t\tthis.x += rhs.x;\n\t\t\t\tthis.y += rhs.y;\n\t\t\t\tthis.z += rhs.z;\n\t\t\t\treturn this;\n\t\t}\n\t\tadd2(lhs, rhs) {\n\t\t\t\tthis.x = lhs.x + rhs.x;\n\t\t\t\tthis.y = lhs.y + rhs.y;\n\t\t\t\tthis.z = lhs.z + rhs.z;\n\t\t\t\treturn this;\n\t\t}\n\t\taddScalar(scalar) {\n\t\t\t\tthis.x += scalar;\n\t\t\t\tthis.y += scalar;\n\t\t\t\tthis.z += scalar;\n\t\t\t\treturn this;\n\t\t}\n\t\taddScaled(rhs, scalar) {\n\t\t\t\tthis.x += rhs.x * scalar;\n\t\t\t\tthis.y += rhs.y * scalar;\n\t\t\t\tthis.z += rhs.z * scalar;\n\t\t\t\treturn this;\n\t\t}\n\t\tclone() {\n\t\t\t\tconst cstr = this.constructor;\n\t\t\t\treturn new cstr(this.x, this.y, this.z);\n\t\t}\n\t\tcopy(rhs) {\n\t\t\t\tthis.x = rhs.x;\n\t\t\t\tthis.y = rhs.y;\n\t\t\t\tthis.z = rhs.z;\n\t\t\t\treturn this;\n\t\t}\n\t\tcross(lhs, rhs) {\n\t\t\t\tconst lx = lhs.x;\n\t\t\t\tconst ly = lhs.y;\n\t\t\t\tconst lz = lhs.z;\n\t\t\t\tconst rx = rhs.x;\n\t\t\t\tconst ry = rhs.y;\n\t\t\t\tconst rz = rhs.z;\n\t\t\t\tthis.x = ly * rz - ry * lz;\n\t\t\t\tthis.y = lz * rx - rz * lx;\n\t\t\t\tthis.z = lx * ry - rx * ly;\n\t\t\t\treturn this;\n\t\t}\n\t\tdistance(rhs) {\n\t\t\t\tconst x = this.x - rhs.x;\n\t\t\t\tconst y = this.y - rhs.y;\n\t\t\t\tconst z = this.z - rhs.z;\n\t\t\t\treturn Math.sqrt(x * x + y * y + z * z);\n\t\t}\n\t\tdiv(rhs) {\n\t\t\t\tthis.x /= rhs.x;\n\t\t\t\tthis.y /= rhs.y;\n\t\t\t\tthis.z /= rhs.z;\n\t\t\t\treturn this;\n\t\t}\n\t\tdiv2(lhs, rhs) {\n\t\t\t\tthis.x = lhs.x / rhs.x;\n\t\t\t\tthis.y = lhs.y / rhs.y;\n\t\t\t\tthis.z = lhs.z / rhs.z;\n\t\t\t\treturn this;\n\t\t}\n\t\tdivScalar(scalar) {\n\t\t\t\tthis.x /= scalar;\n\t\t\t\tthis.y /= scalar;\n\t\t\t\tthis.z /= scalar;\n\t\t\t\treturn this;\n\t\t}\n\t\tdot(rhs) {\n\t\t\t\treturn this.x * rhs.x + this.y * rhs.y + this.z * rhs.z;\n\t\t}\n\t\tequals(rhs) {\n\t\t\t\treturn this.x === rhs.x && this.y === rhs.y && this.z === rhs.z;\n\t\t}\n\t\tequalsApprox(rhs, epsilon = 1e-6) {\n\t\t\t\treturn Math.abs(this.x - rhs.x) < epsilon && Math.abs(this.y - rhs.y) < epsilon && Math.abs(this.z - rhs.z) < epsilon;\n\t\t}\n\t\tlength() {\n\t\t\t\treturn Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);\n\t\t}\n\t\tlengthSq() {\n\t\t\t\treturn this.x * this.x + this.y * this.y + this.z * this.z;\n\t\t}\n\t\tlerp(lhs, rhs, alpha) {\n\t\t\t\tthis.x = lhs.x + alpha * (rhs.x - lhs.x);\n\t\t\t\tthis.y = lhs.y + alpha * (rhs.y - lhs.y);\n\t\t\t\tthis.z = lhs.z + alpha * (rhs.z - lhs.z);\n\t\t\t\treturn this;\n\t\t}\n\t\tmul(rhs) {\n\t\t\t\tthis.x *= rhs.x;\n\t\t\t\tthis.y *= rhs.y;\n\t\t\t\tthis.z *= rhs.z;\n\t\t\t\treturn this;\n\t\t}\n\t\tmul2(lhs, rhs) {\n\t\t\t\tthis.x = lhs.x * rhs.x;\n\t\t\t\tthis.y = lhs.y * rhs.y;\n\t\t\t\tthis.z = lhs.z * rhs.z;\n\t\t\t\treturn this;\n\t\t}\n\t\tmulScalar(scalar) {\n\t\t\t\tthis.x *= scalar;\n\t\t\t\tthis.y *= scalar;\n\t\t\t\tthis.z *= scalar;\n\t\t\t\treturn this;\n\t\t}\n\t\tnormalize(src = this) {\n\t\t\t\tconst lengthSq = src.x * src.x + src.y * src.y + src.z * src.z;\n\t\t\t\tif (lengthSq > 0) {\n\t\t\t\t\t\tconst invLength = 1 / Math.sqrt(lengthSq);\n\t\t\t\t\t\tthis.x = src.x * invLength;\n\t\t\t\t\t\tthis.y = src.y * invLength;\n\t\t\t\t\t\tthis.z = src.z * invLength;\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t}\n\t\tfloor(src = this) {\n\t\t\t\tthis.x = Math.floor(src.x);\n\t\t\t\tthis.y = Math.floor(src.y);\n\t\t\t\tthis.z = Math.floor(src.z);\n\t\t\t\treturn this;\n\t\t}\n\t\tceil(src = this) {\n\t\t\t\tthis.x = Math.ceil(src.x);\n\t\t\t\tthis.y = Math.ceil(src.y);\n\t\t\t\tthis.z = Math.ceil(src.z);\n\t\t\t\treturn this;\n\t\t}\n\t\tround(src = this) {\n\t\t\t\tthis.x = Math.round(src.x);\n\t\t\t\tthis.y = Math.round(src.y);\n\t\t\t\tthis.z = Math.round(src.z);\n\t\t\t\treturn this;\n\t\t}\n\t\tmin(rhs) {\n\t\t\t\tif (rhs.x < this.x) this.x = rhs.x;\n\t\t\t\tif (rhs.y < this.y) this.y = rhs.y;\n\t\t\t\tif (rhs.z < this.z) this.z = rhs.z;\n\t\t\t\treturn this;\n\t\t}\n\t\tmax(rhs) {\n\t\t\t\tif (rhs.x > this.x) this.x = rhs.x;\n\t\t\t\tif (rhs.y > this.y) this.y = rhs.y;\n\t\t\t\tif (rhs.z > this.z) this.z = rhs.z;\n\t\t\t\treturn this;\n\t\t}\n\t\tproject(rhs) {\n\t\t\t\tconst a_dot_b = this.x * rhs.x + this.y * rhs.y + this.z * rhs.z;\n\t\t\t\tconst b_dot_b = rhs.x * rhs.x + rhs.y * rhs.y + rhs.z * rhs.z;\n\t\t\t\tconst s = a_dot_b / b_dot_b;\n\t\t\t\tthis.x = rhs.x * s;\n\t\t\t\tthis.y = rhs.y * s;\n\t\t\t\tthis.z = rhs.z * s;\n\t\t\t\treturn this;\n\t\t}\n\t\tset(x, y, z) {\n\t\t\t\tthis.x = x;\n\t\t\t\tthis.y = y;\n\t\t\t\tthis.z = z;\n\t\t\t\treturn this;\n\t\t}\n\t\tsub(rhs) {\n\t\t\t\tthis.x -= rhs.x;\n\t\t\t\tthis.y -= rhs.y;\n\t\t\t\tthis.z -= rhs.z;\n\t\t\t\treturn this;\n\t\t}\n\t\tsub2(lhs, rhs) {\n\t\t\t\tthis.x = lhs.x - rhs.x;\n\t\t\t\tthis.y = lhs.y - rhs.y;\n\t\t\t\tthis.z = lhs.z - rhs.z;\n\t\t\t\treturn this;\n\t\t}\n\t\tsubScalar(scalar) {\n\t\t\t\tthis.x -= scalar;\n\t\t\t\tthis.y -= scalar;\n\t\t\t\tthis.z -= scalar;\n\t\t\t\treturn this;\n\t\t}\n\t\tfromArray(arr, offset = 0) {\n\t\t\t\tthis.x = arr[offset] ?? this.x;\n\t\t\t\tthis.y = arr[offset + 1] ?? this.y;\n\t\t\t\tthis.z = arr[offset + 2] ?? this.z;\n\t\t\t\treturn this;\n\t\t}\n\t\ttoString() {\n\t\t\t\treturn `[${this.x}, ${this.y}, ${this.z}]`;\n\t\t}\n\t\ttoArray(arr = [], offset = 0) {\n\t\t\t\tarr[offset] = this.x;\n\t\t\t\tarr[offset + 1] = this.y;\n\t\t\t\tarr[offset + 2] = this.z;\n\t\t\t\treturn arr;\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.ZERO = Object.freeze(new Vec3(0, 0, 0));\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.HALF = Object.freeze(new Vec3(0.5, 0.5, 0.5));\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.ONE = Object.freeze(new Vec3(1, 1, 1));\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.UP = Object.freeze(new Vec3(0, 1, 0));\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.DOWN = Object.freeze(new Vec3(0, -1, 0));\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.RIGHT = Object.freeze(new Vec3(1, 0, 0));\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.LEFT = Object.freeze(new Vec3(-1, 0, 0));\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.FORWARD = Object.freeze(new Vec3(0, 0, -1));\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.BACK = Object.freeze(new Vec3(0, 0, 1));\n\t\t}\n}\n\nclass Mat3 {\n\t\tconstructor(){\n\t\t\t\tthis.data = new Float32Array(9);\n\t\t\t\tthis.data[0] = this.data[4] = this.data[8] = 1;\n\t\t}\n\t\tclone() {\n\t\t\t\tconst cstr = this.constructor;\n\t\t\t\treturn new cstr().copy(this);\n\t\t}\n\t\tcopy(rhs) {\n\t\t\t\tconst src = rhs.data;\n\t\t\t\tconst dst = this.data;\n\t\t\t\tdst[0] = src[0];\n\t\t\t\tdst[1] = src[1];\n\t\t\t\tdst[2] = src[2];\n\t\t\t\tdst[3] = src[3];\n\t\t\t\tdst[4] = src[4];\n\t\t\t\tdst[5] = src[5];\n\t\t\t\tdst[6] = src[6];\n\t\t\t\tdst[7] = src[7];\n\t\t\t\tdst[8] = src[8];\n\t\t\t\treturn this;\n\t\t}\n\t\tset(src) {\n\t\t\t\tconst dst = this.data;\n\t\t\t\tdst[0] = src[0];\n\t\t\t\tdst[1] = src[1];\n\t\t\t\tdst[2] = src[2];\n\t\t\t\tdst[3] = src[3];\n\t\t\t\tdst[4] = src[4];\n\t\t\t\tdst[5] = src[5];\n\t\t\t\tdst[6] = src[6];\n\t\t\t\tdst[7] = src[7];\n\t\t\t\tdst[8] = src[8];\n\t\t\t\treturn this;\n\t\t}\n\t\tgetX(x = new Vec3()) {\n\t\t\t\treturn x.set(this.data[0], this.data[1], this.data[2]);\n\t\t}\n\t\tgetY(y = new Vec3()) {\n\t\t\t\treturn y.set(this.data[3], this.data[4], this.data[5]);\n\t\t}\n\t\tgetZ(z = new Vec3()) {\n\t\t\t\treturn z.set(this.data[6], this.data[7], this.data[8]);\n\t\t}\n\t\tequals(rhs) {\n\t\t\t\tconst l = this.data;\n\t\t\t\tconst r = rhs.data;\n\t\t\t\treturn l[0] === r[0] && l[1] === r[1] && l[2] === r[2] && l[3] === r[3] && l[4] === r[4] && l[5] === r[5] && l[6] === r[6] && l[7] === r[7] && l[8] === r[8];\n\t\t}\n\t\tisIdentity() {\n\t\t\t\tconst m = this.data;\n\t\t\t\treturn m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 0 && m[4] === 1 && m[5] === 0 && m[6] === 0 && m[7] === 0 && m[8] === 1;\n\t\t}\n\t\tsetIdentity() {\n\t\t\t\tconst m = this.data;\n\t\t\t\tm[0] = 1;\n\t\t\t\tm[1] = 0;\n\t\t\t\tm[2] = 0;\n\t\t\t\tm[3] = 0;\n\t\t\t\tm[4] = 1;\n\t\t\t\tm[5] = 0;\n\t\t\t\tm[6] = 0;\n\t\t\t\tm[7] = 0;\n\t\t\t\tm[8] = 1;\n\t\t\t\treturn this;\n\t\t}\n\t\ttoString() {\n\t\t\t\treturn `[${this.data.join(', ')}]`;\n\t\t}\n\t\ttranspose(src = this) {\n\t\t\t\tconst s = src.data;\n\t\t\t\tconst t = this.data;\n\t\t\t\tif (s === t) {\n\t\t\t\t\t\tlet tmp;\n\t\t\t\t\t\ttmp = s[1];\n\t\t\t\t\t\tt[1] = s[3];\n\t\t\t\t\t\tt[3] = tmp;\n\t\t\t\t\t\ttmp = s[2];\n\t\t\t\t\t\tt[2] = s[6];\n\t\t\t\t\t\tt[6] = tmp;\n\t\t\t\t\t\ttmp = s[5];\n\t\t\t\t\t\tt[5] = s[7];\n\t\t\t\t\t\tt[7] = tmp;\n\t\t\t\t} else {\n\t\t\t\t\t\tt[0] = s[0];\n\t\t\t\t\t\tt[1] = s[3];\n\t\t\t\t\t\tt[2] = s[6];\n\t\t\t\t\t\tt[3] = s[1];\n\t\t\t\t\t\tt[4] = s[4];\n\t\t\t\t\t\tt[5] = s[7];\n\t\t\t\t\t\tt[6] = s[2];\n\t\t\t\t\t\tt[7] = s[5];\n\t\t\t\t\t\tt[8] = s[8];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t}\n\t\tsetFromMat4(m) {\n\t\t\t\tconst src = m.data;\n\t\t\t\tconst dst = this.data;\n\t\t\t\tdst[0] = src[0];\n\t\t\t\tdst[1] = src[1];\n\t\t\t\tdst[2] = src[2];\n\t\t\t\tdst[3] = src[4];\n\t\t\t\tdst[4] = src[5];\n\t\t\t\tdst[5] = src[6];\n\t\t\t\tdst[6] = src[8];\n\t\t\t\tdst[7] = src[9];\n\t\t\t\tdst[8] = src[10];\n\t\t\t\treturn this;\n\t\t}\n\t\tsetFromQuat(r) {\n\t\t\t\tconst qx = r.x;\n\t\t\t\tconst qy = r.y;\n\t\t\t\tconst qz = r.z;\n\t\t\t\tconst qw = r.w;\n\t\t\t\tconst x2 = qx + qx;\n\t\t\t\tconst y2 = qy + qy;\n\t\t\t\tconst z2 = qz + qz;\n\t\t\t\tconst xx = qx * x2;\n\t\t\t\tconst xy = qx * y2;\n\t\t\t\tconst xz = qx * z2;\n\t\t\t\tconst yy = qy * y2;\n\t\t\t\tconst yz = qy * z2;\n\t\t\t\tconst zz = qz * z2;\n\t\t\t\tconst wx = qw * x2;\n\t\t\t\tconst wy = qw * y2;\n\t\t\t\tconst wz = qw * z2;\n\t\t\t\tconst m = this.data;\n\t\t\t\tm[0] = 1 - (yy + zz);\n\t\t\t\tm[1] = xy + wz;\n\t\t\t\tm[2] = xz - wy;\n\t\t\t\tm[3] = xy - wz;\n\t\t\t\tm[4] = 1 - (xx + zz);\n\t\t\t\tm[5] = yz + wx;\n\t\t\t\tm[6] = xz + wy;\n\t\t\t\tm[7] = yz - wx;\n\t\t\t\tm[8] = 1 - (xx + yy);\n\t\t\t\treturn this;\n\t\t}\n\t\tinvertMat4(src) {\n\t\t\t\tconst s = src.data;\n\t\t\t\tconst a0 = s[0];\n\t\t\t\tconst a1 = s[1];\n\t\t\t\tconst a2 = s[2];\n\t\t\t\tconst a4 = s[4];\n\t\t\t\tconst a5 = s[5];\n\t\t\t\tconst a6 = s[6];\n\t\t\t\tconst a8 = s[8];\n\t\t\t\tconst a9 = s[9];\n\t\t\t\tconst a10 = s[10];\n\t\t\t\tconst b11 = a10 * a5 - a6 * a9;\n\t\t\t\tconst b21 = -a10 * a1 + a2 * a9;\n\t\t\t\tconst b31 = a6 * a1 - a2 * a5;\n\t\t\t\tconst b12 = -a10 * a4 + a6 * a8;\n\t\t\t\tconst b22 = a10 * a0 - a2 * a8;\n\t\t\t\tconst b32 = -a6 * a0 + a2 * a4;\n\t\t\t\tconst b13 = a9 * a4 - a5 * a8;\n\t\t\t\tconst b23 = -a9 * a0 + a1 * a8;\n\t\t\t\tconst b33 = a5 * a0 - a1 * a4;\n\t\t\t\tconst det = a0 * b11 + a1 * b12 + a2 * b13;\n\t\t\t\tif (det === 0) {\n\t\t\t\t\t\tthis.setIdentity();\n\t\t\t\t} else {\n\t\t\t\t\t\tconst invDet = 1 / det;\n\t\t\t\t\t\tconst t = this.data;\n\t\t\t\t\t\tt[0] = b11 * invDet;\n\t\t\t\t\t\tt[1] = b21 * invDet;\n\t\t\t\t\t\tt[2] = b31 * invDet;\n\t\t\t\t\t\tt[3] = b12 * invDet;\n\t\t\t\t\t\tt[4] = b22 * invDet;\n\t\t\t\t\t\tt[5] = b32 * invDet;\n\t\t\t\t\t\tt[6] = b13 * invDet;\n\t\t\t\t\t\tt[7] = b23 * invDet;\n\t\t\t\t\t\tt[8] = b33 * invDet;\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t}\n\t\ttransformVector(vec, res = new Vec3()) {\n\t\t\t\tconst m = this.data;\n\t\t\t\tconst { x, y, z } = vec;\n\t\t\t\tres.x = x * m[0] + y * m[3] + z * m[6];\n\t\t\t\tres.y = x * m[1] + y * m[4] + z * m[7];\n\t\t\t\tres.z = x * m[2] + y * m[5] + z * m[8];\n\t\t\t\treturn res;\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.IDENTITY = Object.freeze(new Mat3());\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.ZERO = Object.freeze(new Mat3().set([\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0\n\t\t\t\t]));\n\t\t}\n}\n\nclass Vec2 {\n\t\tconstructor(x = 0, y = 0){\n\t\t\t\tif (x.length === 2) {\n\t\t\t\t\t\tthis.x = x[0];\n\t\t\t\t\t\tthis.y = x[1];\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.x = x;\n\t\t\t\t\t\tthis.y = y;\n\t\t\t\t}\n\t\t}\n\t\tadd(rhs) {\n\t\t\t\tthis.x += rhs.x;\n\t\t\t\tthis.y += rhs.y;\n\t\t\t\treturn this;\n\t\t}\n\t\tadd2(lhs, rhs) {\n\t\t\t\tthis.x = lhs.x + rhs.x;\n\t\t\t\tthis.y = lhs.y + rhs.y;\n\t\t\t\treturn this;\n\t\t}\n\t\taddScalar(scalar) {\n\t\t\t\tthis.x += scalar;\n\t\t\t\tthis.y += scalar;\n\t\t\t\treturn this;\n\t\t}\n\t\taddScaled(rhs, scalar) {\n\t\t\t\tthis.x += rhs.x * scalar;\n\t\t\t\tthis.y += rhs.y * scalar;\n\t\t\t\treturn this;\n\t\t}\n\t\tclone() {\n\t\t\t\tconst cstr = this.constructor;\n\t\t\t\treturn new cstr(this.x, this.y);\n\t\t}\n\t\tcopy(rhs) {\n\t\t\t\tthis.x = rhs.x;\n\t\t\t\tthis.y = rhs.y;\n\t\t\t\treturn this;\n\t\t}\n\t\tcross(rhs) {\n\t\t\t\treturn this.x * rhs.y - this.y * rhs.x;\n\t\t}\n\t\tdistance(rhs) {\n\t\t\t\tconst x = this.x - rhs.x;\n\t\t\t\tconst y = this.y - rhs.y;\n\t\t\t\treturn Math.sqrt(x * x + y * y);\n\t\t}\n\t\tdiv(rhs) {\n\t\t\t\tthis.x /= rhs.x;\n\t\t\t\tthis.y /= rhs.y;\n\t\t\t\treturn this;\n\t\t}\n\t\tdiv2(lhs, rhs) {\n\t\t\t\tthis.x = lhs.x / rhs.x;\n\t\t\t\tthis.y = lhs.y / rhs.y;\n\t\t\t\treturn this;\n\t\t}\n\t\tdivScalar(scalar) {\n\t\t\t\tthis.x /= scalar;\n\t\t\t\tthis.y /= scalar;\n\t\t\t\treturn this;\n\t\t}\n\t\tdot(rhs) {\n\t\t\t\treturn this.x * rhs.x + this.y * rhs.y;\n\t\t}\n\t\tequals(rhs) {\n\t\t\t\treturn this.x === rhs.x && this.y === rhs.y;\n\t\t}\n\t\tequalsApprox(rhs, epsilon = 1e-6) {\n\t\t\t\treturn Math.abs(this.x - rhs.x) < epsilon && Math.abs(this.y - rhs.y) < epsilon;\n\t\t}\n\t\tlength() {\n\t\t\t\treturn Math.sqrt(this.x * this.x + this.y * this.y);\n\t\t}\n\t\tlengthSq() {\n\t\t\t\treturn this.x * this.x + this.y * this.y;\n\t\t}\n\t\tlerp(lhs, rhs, alpha) {\n\t\t\t\tthis.x = lhs.x + alpha * (rhs.x - lhs.x);\n\t\t\t\tthis.y = lhs.y + alpha * (rhs.y - lhs.y);\n\t\t\t\treturn this;\n\t\t}\n\t\tmul(rhs) {\n\t\t\t\tthis.x *= rhs.x;\n\t\t\t\tthis.y *= rhs.y;\n\t\t\t\treturn this;\n\t\t}\n\t\tmul2(lhs, rhs) {\n\t\t\t\tthis.x = lhs.x * rhs.x;\n\t\t\t\tthis.y = lhs.y * rhs.y;\n\t\t\t\treturn this;\n\t\t}\n\t\tmulScalar(scalar) {\n\t\t\t\tthis.x *= scalar;\n\t\t\t\tthis.y *= scalar;\n\t\t\t\treturn this;\n\t\t}\n\t\tnormalize(src = this) {\n\t\t\t\tconst lengthSq = src.x * src.x + src.y * src.y;\n\t\t\t\tif (lengthSq > 0) {\n\t\t\t\t\t\tconst invLength = 1 / Math.sqrt(lengthSq);\n\t\t\t\t\t\tthis.x = src.x * invLength;\n\t\t\t\t\t\tthis.y = src.y * invLength;\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t}\n\t\trotate(degrees) {\n\t\t\t\tconst angle = Math.atan2(this.x, this.y) + degrees * math.DEG_TO_RAD;\n\t\t\t\tconst len = Math.sqrt(this.x * this.x + this.y * this.y);\n\t\t\t\tthis.x = Math.sin(angle) * len;\n\t\t\t\tthis.y = Math.cos(angle) * len;\n\t\t\t\treturn this;\n\t\t}\n\t\tangle() {\n\t\t\t\treturn Math.atan2(this.x, this.y) * math.RAD_TO_DEG;\n\t\t}\n\t\tangleTo(rhs) {\n\t\t\t\treturn Math.atan2(this.x * rhs.y + this.y * rhs.x, this.x * rhs.x + this.y * rhs.y) * math.RAD_TO_DEG;\n\t\t}\n\t\tfloor(src = this) {\n\t\t\t\tthis.x = Math.floor(src.x);\n\t\t\t\tthis.y = Math.floor(src.y);\n\t\t\t\treturn this;\n\t\t}\n\t\tceil(src = this) {\n\t\t\t\tthis.x = Math.ceil(src.x);\n\t\t\t\tthis.y = Math.ceil(src.y);\n\t\t\t\treturn this;\n\t\t}\n\t\tround(src = this) {\n\t\t\t\tthis.x = Math.round(src.x);\n\t\t\t\tthis.y = Math.round(src.y);\n\t\t\t\treturn this;\n\t\t}\n\t\tmin(rhs) {\n\t\t\t\tif (rhs.x < this.x) this.x = rhs.x;\n\t\t\t\tif (rhs.y < this.y) this.y = rhs.y;\n\t\t\t\treturn this;\n\t\t}\n\t\tmax(rhs) {\n\t\t\t\tif (rhs.x > this.x) this.x = rhs.x;\n\t\t\t\tif (rhs.y > this.y) this.y = rhs.y;\n\t\t\t\treturn this;\n\t\t}\n\t\tset(x, y) {\n\t\t\t\tthis.x = x;\n\t\t\t\tthis.y = y;\n\t\t\t\treturn this;\n\t\t}\n\t\tsub(rhs) {\n\t\t\t\tthis.x -= rhs.x;\n\t\t\t\tthis.y -= rhs.y;\n\t\t\t\treturn this;\n\t\t}\n\t\tsub2(lhs, rhs) {\n\t\t\t\tthis.x = lhs.x - rhs.x;\n\t\t\t\tthis.y = lhs.y - rhs.y;\n\t\t\t\treturn this;\n\t\t}\n\t\tsubScalar(scalar) {\n\t\t\t\tthis.x -= scalar;\n\t\t\t\tthis.y -= scalar;\n\t\t\t\treturn this;\n\t\t}\n\t\tfromArray(arr, offset = 0) {\n\t\t\t\tthis.x = arr[offset] ?? this.x;\n\t\t\t\tthis.y = arr[offset + 1] ?? this.y;\n\t\t\t\treturn this;\n\t\t}\n\t\ttoString() {\n\t\t\t\treturn `[${this.x}, ${this.y}]`;\n\t\t}\n\t\ttoArray(arr = [], offset = 0) {\n\t\t\t\tarr[offset] = this.x;\n\t\t\t\tarr[offset + 1] = this.y;\n\t\t\t\treturn arr;\n\t\t}\n\t\tstatic angleRad(lhs, rhs) {\n\t\t\t\treturn Math.atan2(lhs.x * rhs.y - lhs.y * rhs.x, lhs.x * rhs.x + lhs.y * rhs.y);\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.ZERO = Object.freeze(new Vec2(0, 0));\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.HALF = Object.freeze(new Vec2(0.5, 0.5));\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.ONE = Object.freeze(new Vec2(1, 1));\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.UP = Object.freeze(new Vec2(0, 1));\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.DOWN = Object.freeze(new Vec2(0, -1));\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.RIGHT = Object.freeze(new Vec2(1, 0));\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.LEFT = Object.freeze(new Vec2(-1, 0));\n\t\t}\n}\n\nclass Vec4 {\n\t\tconstructor(x = 0, y = 0, z = 0, w = 0){\n\t\t\t\tif (x.length === 4) {\n\t\t\t\t\t\tthis.x = x[0];\n\t\t\t\t\t\tthis.y = x[1];\n\t\t\t\t\t\tthis.z = x[2];\n\t\t\t\t\t\tthis.w = x[3];\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.x = x;\n\t\t\t\t\t\tthis.y = y;\n\t\t\t\t\t\tthis.z = z;\n\t\t\t\t\t\tthis.w = w;\n\t\t\t\t}\n\t\t}\n\t\tadd(rhs) {\n\t\t\t\tthis.x += rhs.x;\n\t\t\t\tthis.y += rhs.y;\n\t\t\t\tthis.z += rhs.z;\n\t\t\t\tthis.w += rhs.w;\n\t\t\t\treturn this;\n\t\t}\n\t\tadd2(lhs, rhs) {\n\t\t\t\tthis.x = lhs.x + rhs.x;\n\t\t\t\tthis.y = lhs.y + rhs.y;\n\t\t\t\tthis.z = lhs.z + rhs.z;\n\t\t\t\tthis.w = lhs.w + rhs.w;\n\t\t\t\treturn this;\n\t\t}\n\t\taddScalar(scalar) {\n\t\t\t\tthis.x += scalar;\n\t\t\t\tthis.y += scalar;\n\t\t\t\tthis.z += scalar;\n\t\t\t\tthis.w += scalar;\n\t\t\t\treturn this;\n\t\t}\n\t\taddScaled(rhs, scalar) {\n\t\t\t\tthis.x += rhs.x * scalar;\n\t\t\t\tthis.y += rhs.y * scalar;\n\t\t\t\tthis.z += rhs.z * scalar;\n\t\t\t\tthis.w += rhs.w * scalar;\n\t\t\t\treturn this;\n\t\t}\n\t\tclone() {\n\t\t\t\tconst cstr = this.constructor;\n\t\t\t\treturn new cstr(this.x, this.y, this.z, this.w);\n\t\t}\n\t\tcopy(rhs) {\n\t\t\t\tthis.x = rhs.x;\n\t\t\t\tthis.y = rhs.y;\n\t\t\t\tthis.z = rhs.z;\n\t\t\t\tthis.w = rhs.w;\n\t\t\t\treturn this;\n\t\t}\n\t\tdiv(rhs) {\n\t\t\t\tthis.x /= rhs.x;\n\t\t\t\tthis.y /= rhs.y;\n\t\t\t\tthis.z /= rhs.z;\n\t\t\t\tthis.w /= rhs.w;\n\t\t\t\treturn this;\n\t\t}\n\t\tdiv2(lhs, rhs) {\n\t\t\t\tthis.x = lhs.x / rhs.x;\n\t\t\t\tthis.y = lhs.y / rhs.y;\n\t\t\t\tthis.z = lhs.z / rhs.z;\n\t\t\t\tthis.w = lhs.w / rhs.w;\n\t\t\t\treturn this;\n\t\t}\n\t\tdivScalar(scalar) {\n\t\t\t\tthis.x /= scalar;\n\t\t\t\tthis.y /= scalar;\n\t\t\t\tthis.z /= scalar;\n\t\t\t\tthis.w /= scalar;\n\t\t\t\treturn this;\n\t\t}\n\t\tdot(rhs) {\n\t\t\t\treturn this.x * rhs.x + this.y * rhs.y + this.z * rhs.z + this.w * rhs.w;\n\t\t}\n\t\tequals(rhs) {\n\t\t\t\treturn this.x === rhs.x && this.y === rhs.y && this.z === rhs.z && this.w === rhs.w;\n\t\t}\n\t\tequalsApprox(rhs, epsilon = 1e-6) {\n\t\t\t\treturn Math.abs(this.x - rhs.x) < epsilon && Math.abs(this.y - rhs.y) < epsilon && Math.abs(this.z - rhs.z) < epsilon && Math.abs(this.w - rhs.w) < epsilon;\n\t\t}\n\t\tlength() {\n\t\t\t\treturn Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w);\n\t\t}\n\t\tlengthSq() {\n\t\t\t\treturn this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n\t\t}\n\t\tlerp(lhs, rhs, alpha) {\n\t\t\t\tthis.x = lhs.x + alpha * (rhs.x - lhs.x);\n\t\t\t\tthis.y = lhs.y + alpha * (rhs.y - lhs.y);\n\t\t\t\tthis.z = lhs.z + alpha * (rhs.z - lhs.z);\n\t\t\t\tthis.w = lhs.w + alpha * (rhs.w - lhs.w);\n\t\t\t\treturn this;\n\t\t}\n\t\tmul(rhs) {\n\t\t\t\tthis.x *= rhs.x;\n\t\t\t\tthis.y *= rhs.y;\n\t\t\t\tthis.z *= rhs.z;\n\t\t\t\tthis.w *= rhs.w;\n\t\t\t\treturn this;\n\t\t}\n\t\tmul2(lhs, rhs) {\n\t\t\t\tthis.x = lhs.x * rhs.x;\n\t\t\t\tthis.y = lhs.y * rhs.y;\n\t\t\t\tthis.z = lhs.z * rhs.z;\n\t\t\t\tthis.w = lhs.w * rhs.w;\n\t\t\t\treturn this;\n\t\t}\n\t\tmulScalar(scalar) {\n\t\t\t\tthis.x *= scalar;\n\t\t\t\tthis.y *= scalar;\n\t\t\t\tthis.z *= scalar;\n\t\t\t\tthis.w *= scalar;\n\t\t\t\treturn this;\n\t\t}\n\t\tnormalize(src = this) {\n\t\t\t\tconst lengthSq = src.x * src.x + src.y * src.y + src.z * src.z + src.w * src.w;\n\t\t\t\tif (lengthSq > 0) {\n\t\t\t\t\t\tconst invLength = 1 / Math.sqrt(lengthSq);\n\t\t\t\t\t\tthis.x = src.x * invLength;\n\t\t\t\t\t\tthis.y = src.y * invLength;\n\t\t\t\t\t\tthis.z = src.z * invLength;\n\t\t\t\t\t\tthis.w = src.w * invLength;\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t}\n\t\tfloor(src = this) {\n\t\t\t\tthis.x = Math.floor(src.x);\n\t\t\t\tthis.y = Math.floor(src.y);\n\t\t\t\tthis.z = Math.floor(src.z);\n\t\t\t\tthis.w = Math.floor(src.w);\n\t\t\t\treturn this;\n\t\t}\n\t\tceil(src = this) {\n\t\t\t\tthis.x = Math.ceil(src.x);\n\t\t\t\tthis.y = Math.ceil(src.y);\n\t\t\t\tthis.z = Math.ceil(src.z);\n\t\t\t\tthis.w = Math.ceil(src.w);\n\t\t\t\treturn this;\n\t\t}\n\t\tround(src = this) {\n\t\t\t\tthis.x = Math.round(src.x);\n\t\t\t\tthis.y = Math.round(src.y);\n\t\t\t\tthis.z = Math.round(src.z);\n\t\t\t\tthis.w = Math.round(src.w);\n\t\t\t\treturn this;\n\t\t}\n\t\tmin(rhs) {\n\t\t\t\tif (rhs.x < this.x) this.x = rhs.x;\n\t\t\t\tif (rhs.y < this.y) this.y = rhs.y;\n\t\t\t\tif (rhs.z < this.z) this.z = rhs.z;\n\t\t\t\tif (rhs.w < this.w) this.w = rhs.w;\n\t\t\t\treturn this;\n\t\t}\n\t\tmax(rhs) {\n\t\t\t\tif (rhs.x > this.x) this.x = rhs.x;\n\t\t\t\tif (rhs.y > this.y) this.y = rhs.y;\n\t\t\t\tif (rhs.z > this.z) this.z = rhs.z;\n\t\t\t\tif (rhs.w > this.w) this.w = rhs.w;\n\t\t\t\treturn this;\n\t\t}\n\t\tset(x, y, z, w) {\n\t\t\t\tthis.x = x;\n\t\t\t\tthis.y = y;\n\t\t\t\tthis.z = z;\n\t\t\t\tthis.w = w;\n\t\t\t\treturn this;\n\t\t}\n\t\tsub(rhs) {\n\t\t\t\tthis.x -= rhs.x;\n\t\t\t\tthis.y -= rhs.y;\n\t\t\t\tthis.z -= rhs.z;\n\t\t\t\tthis.w -= rhs.w;\n\t\t\t\treturn this;\n\t\t}\n\t\tsub2(lhs, rhs) {\n\t\t\t\tthis.x = lhs.x - rhs.x;\n\t\t\t\tthis.y = lhs.y - rhs.y;\n\t\t\t\tthis.z = lhs.z - rhs.z;\n\t\t\t\tthis.w = lhs.w - rhs.w;\n\t\t\t\treturn this;\n\t\t}\n\t\tsubScalar(scalar) {\n\t\t\t\tthis.x -= scalar;\n\t\t\t\tthis.y -= scalar;\n\t\t\t\tthis.z -= scalar;\n\t\t\t\tthis.w -= scalar;\n\t\t\t\treturn this;\n\t\t}\n\t\tfromArray(arr, offset = 0) {\n\t\t\t\tthis.x = arr[offset] ?? this.x;\n\t\t\t\tthis.y = arr[offset + 1] ?? this.y;\n\t\t\t\tthis.z = arr[offset + 2] ?? this.z;\n\t\t\t\tthis.w = arr[offset + 3] ?? this.w;\n\t\t\t\treturn this;\n\t\t}\n\t\ttoString() {\n\t\t\t\treturn `[${this.x}, ${this.y}, ${this.z}, ${this.w}]`;\n\t\t}\n\t\ttoArray(arr = [], offset = 0) {\n\t\t\t\tarr[offset] = this.x;\n\t\t\t\tarr[offset + 1] = this.y;\n\t\t\t\tarr[offset + 2] = this.z;\n\t\t\t\tarr[offset + 3] = this.w;\n\t\t\t\treturn arr;\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.ZERO = Object.freeze(new Vec4(0, 0, 0, 0));\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.HALF = Object.freeze(new Vec4(0.5, 0.5, 0.5, 0.5));\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.ONE = Object.freeze(new Vec4(1, 1, 1, 1));\n\t\t}\n}\n\nconst _halfSize$1 = new Vec2();\nconst x$1 = new Vec3();\nconst y = new Vec3();\nconst z = new Vec3();\nconst scale = new Vec3();\nclass Mat4 {\n\t\tconstructor(){\n\t\t\t\tthis.data = new Float32Array(16);\n\t\t\t\tthis.data[0] = this.data[5] = this.data[10] = this.data[15] = 1;\n\t\t}\n\t\tstatic _getPerspectiveHalfSize(halfSize, fov, aspect, znear, fovIsHorizontal) {\n\t\t\t\tif (fovIsHorizontal) {\n\t\t\t\t\t\thalfSize.x = znear * Math.tan(fov * Math.PI / 360);\n\t\t\t\t\t\thalfSize.y = halfSize.x / aspect;\n\t\t\t\t} else {\n\t\t\t\t\t\thalfSize.y = znear * Math.tan(fov * Math.PI / 360);\n\t\t\t\t\t\thalfSize.x = halfSize.y * aspect;\n\t\t\t\t}\n\t\t}\n\t\tadd2(lhs, rhs) {\n\t\t\t\tconst a = lhs.data, b = rhs.data, r = this.data;\n\t\t\t\tr[0] = a[0] + b[0];\n\t\t\t\tr[1] = a[1] + b[1];\n\t\t\t\tr[2] = a[2] + b[2];\n\t\t\t\tr[3] = a[3] + b[3];\n\t\t\t\tr[4] = a[4] + b[4];\n\t\t\t\tr[5] = a[5] + b[5];\n\t\t\t\tr[6] = a[6] + b[6];\n\t\t\t\tr[7] = a[7] + b[7];\n\t\t\t\tr[8] = a[8] + b[8];\n\t\t\t\tr[9] = a[9] + b[9];\n\t\t\t\tr[10] = a[10] + b[10];\n\t\t\t\tr[11] = a[11] + b[11];\n\t\t\t\tr[12] = a[12] + b[12];\n\t\t\t\tr[13] = a[13] + b[13];\n\t\t\t\tr[14] = a[14] + b[14];\n\t\t\t\tr[15] = a[15] + b[15];\n\t\t\t\treturn this;\n\t\t}\n\t\tadd(rhs) {\n\t\t\t\treturn this.add2(this, rhs);\n\t\t}\n\t\tclone() {\n\t\t\t\tconst cstr = this.constructor;\n\t\t\t\treturn new cstr().copy(this);\n\t\t}\n\t\tcopy(rhs) {\n\t\t\t\tconst src = rhs.data, dst = this.data;\n\t\t\t\tdst[0] = src[0];\n\t\t\t\tdst[1] = src[1];\n\t\t\t\tdst[2] = src[2];\n\t\t\t\tdst[3] = src[3];\n\t\t\t\tdst[4] = src[4];\n\t\t\t\tdst[5] = src[5];\n\t\t\t\tdst[6] = src[6];\n\t\t\t\tdst[7] = src[7];\n\t\t\t\tdst[8] = src[8];\n\t\t\t\tdst[9] = src[9];\n\t\t\t\tdst[10] = src[10];\n\t\t\t\tdst[11] = src[11];\n\t\t\t\tdst[12] = src[12];\n\t\t\t\tdst[13] = src[13];\n\t\t\t\tdst[14] = src[14];\n\t\t\t\tdst[15] = src[15];\n\t\t\t\treturn this;\n\t\t}\n\t\tequals(rhs) {\n\t\t\t\tconst l = this.data, r = rhs.data;\n\t\t\t\treturn l[0] === r[0] && l[1] === r[1] && l[2] === r[2] && l[3] === r[3] && l[4] === r[4] && l[5] === r[5] && l[6] === r[6] && l[7] === r[7] && l[8] === r[8] && l[9] === r[9] && l[10] === r[10] && l[11] === r[11] && l[12] === r[12] && l[13] === r[13] && l[14] === r[14] && l[15] === r[15];\n\t\t}\n\t\tisIdentity() {\n\t\t\t\tconst m = this.data;\n\t\t\t\treturn m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 0 && m[4] === 0 && m[5] === 1 && m[6] === 0 && m[7] === 0 && m[8] === 0 && m[9] === 0 && m[10] === 1 && m[11] === 0 && m[12] === 0 && m[13] === 0 && m[14] === 0 && m[15] === 1;\n\t\t}\n\t\tmul2(lhs, rhs) {\n\t\t\t\tconst a = lhs.data;\n\t\t\t\tconst b = rhs.data;\n\t\t\t\tconst r = this.data;\n\t\t\t\tconst a00 = a[0];\n\t\t\t\tconst a01 = a[1];\n\t\t\t\tconst a02 = a[2];\n\t\t\t\tconst a03 = a[3];\n\t\t\t\tconst a10 = a[4];\n\t\t\t\tconst a11 = a[5];\n\t\t\t\tconst a12 = a[6];\n\t\t\t\tconst a13 = a[7];\n\t\t\t\tconst a20 = a[8];\n\t\t\t\tconst a21 = a[9];\n\t\t\t\tconst a22 = a[10];\n\t\t\t\tconst a23 = a[11];\n\t\t\t\tconst a30 = a[12];\n\t\t\t\tconst a31 = a[13];\n\t\t\t\tconst a32 = a[14];\n\t\t\t\tconst a33 = a[15];\n\t\t\t\tlet b0, b1, b2, b3;\n\t\t\t\tb0 = b[0];\n\t\t\t\tb1 = b[1];\n\t\t\t\tb2 = b[2];\n\t\t\t\tb3 = b[3];\n\t\t\t\tr[0] = a00 * b0 + a10 * b1 + a20 * b2 + a30 * b3;\n\t\t\t\tr[1] = a01 * b0 + a11 * b1 + a21 * b2 + a31 * b3;\n\t\t\t\tr[2] = a02 * b0 + a12 * b1 + a22 * b2 + a32 * b3;\n\t\t\t\tr[3] = a03 * b0 + a13 * b1 + a23 * b2 + a33 * b3;\n\t\t\t\tb0 = b[4];\n\t\t\t\tb1 = b[5];\n\t\t\t\tb2 = b[6];\n\t\t\t\tb3 = b[7];\n\t\t\t\tr[4] = a00 * b0 + a10 * b1 + a20 * b2 + a30 * b3;\n\t\t\t\tr[5] = a01 * b0 + a11 * b1 + a21 * b2 + a31 * b3;\n\t\t\t\tr[6] = a02 * b0 + a12 * b1 + a22 * b2 + a32 * b3;\n\t\t\t\tr[7] = a03 * b0 + a13 * b1 + a23 * b2 + a33 * b3;\n\t\t\t\tb0 = b[8];\n\t\t\t\tb1 = b[9];\n\t\t\t\tb2 = b[10];\n\t\t\t\tb3 = b[11];\n\t\t\t\tr[8] = a00 * b0 + a10 * b1 + a20 * b2 + a30 * b3;\n\t\t\t\tr[9] = a01 * b0 + a11 * b1 + a21 * b2 + a31 * b3;\n\t\t\t\tr[10] = a02 * b0 + a12 * b1 + a22 * b2 + a32 * b3;\n\t\t\t\tr[11] = a03 * b0 + a13 * b1 + a23 * b2 + a33 * b3;\n\t\t\t\tb0 = b[12];\n\t\t\t\tb1 = b[13];\n\t\t\t\tb2 = b[14];\n\t\t\t\tb3 = b[15];\n\t\t\t\tr[12] = a00 * b0 + a10 * b1 + a20 * b2 + a30 * b3;\n\t\t\t\tr[13] = a01 * b0 + a11 * b1 + a21 * b2 + a31 * b3;\n\t\t\t\tr[14] = a02 * b0 + a12 * b1 + a22 * b2 + a32 * b3;\n\t\t\t\tr[15] = a03 * b0 + a13 * b1 + a23 * b2 + a33 * b3;\n\t\t\t\treturn this;\n\t\t}\n\t\tmulAffine2(lhs, rhs) {\n\t\t\t\tconst a = lhs.data;\n\t\t\t\tconst b = rhs.data;\n\t\t\t\tconst r = this.data;\n\t\t\t\tconst a00 = a[0];\n\t\t\t\tconst a01 = a[1];\n\t\t\t\tconst a02 = a[2];\n\t\t\t\tconst a10 = a[4];\n\t\t\t\tconst a11 = a[5];\n\t\t\t\tconst a12 = a[6];\n\t\t\t\tconst a20 = a[8];\n\t\t\t\tconst a21 = a[9];\n\t\t\t\tconst a22 = a[10];\n\t\t\t\tconst a30 = a[12];\n\t\t\t\tconst a31 = a[13];\n\t\t\t\tconst a32 = a[14];\n\t\t\t\tlet b0, b1, b2;\n\t\t\t\tb0 = b[0];\n\t\t\t\tb1 = b[1];\n\t\t\t\tb2 = b[2];\n\t\t\t\tr[0] = a00 * b0 + a10 * b1 + a20 * b2;\n\t\t\t\tr[1] = a01 * b0 + a11 * b1 + a21 * b2;\n\t\t\t\tr[2] = a02 * b0 + a12 * b1 + a22 * b2;\n\t\t\t\tr[3] = 0;\n\t\t\t\tb0 = b[4];\n\t\t\t\tb1 = b[5];\n\t\t\t\tb2 = b[6];\n\t\t\t\tr[4] = a00 * b0 + a10 * b1 + a20 * b2;\n\t\t\t\tr[5] = a01 * b0 + a11 * b1 + a21 * b2;\n\t\t\t\tr[6] = a02 * b0 + a12 * b1 + a22 * b2;\n\t\t\t\tr[7] = 0;\n\t\t\t\tb0 = b[8];\n\t\t\t\tb1 = b[9];\n\t\t\t\tb2 = b[10];\n\t\t\t\tr[8] = a00 * b0 + a10 * b1 + a20 * b2;\n\t\t\t\tr[9] = a01 * b0 + a11 * b1 + a21 * b2;\n\t\t\t\tr[10] = a02 * b0 + a12 * b1 + a22 * b2;\n\t\t\t\tr[11] = 0;\n\t\t\t\tb0 = b[12];\n\t\t\t\tb1 = b[13];\n\t\t\t\tb2 = b[14];\n\t\t\t\tr[12] = a00 * b0 + a10 * b1 + a20 * b2 + a30;\n\t\t\t\tr[13] = a01 * b0 + a11 * b1 + a21 * b2 + a31;\n\t\t\t\tr[14] = a02 * b0 + a12 * b1 + a22 * b2 + a32;\n\t\t\t\tr[15] = 1;\n\t\t\t\treturn this;\n\t\t}\n\t\tmul(rhs) {\n\t\t\t\treturn this.mul2(this, rhs);\n\t\t}\n\t\ttransformPoint(vec, res = new Vec3()) {\n\t\t\t\tconst m = this.data;\n\t\t\t\tconst { x, y, z } = vec;\n\t\t\t\tres.x = x * m[0] + y * m[4] + z * m[8] + m[12];\n\t\t\t\tres.y = x * m[1] + y * m[5] + z * m[9] + m[13];\n\t\t\t\tres.z = x * m[2] + y * m[6] + z * m[10] + m[14];\n\t\t\t\treturn res;\n\t\t}\n\t\ttransformVector(vec, res = new Vec3()) {\n\t\t\t\tconst m = this.data;\n\t\t\t\tconst { x, y, z } = vec;\n\t\t\t\tres.x = x * m[0] + y * m[4] + z * m[8];\n\t\t\t\tres.y = x * m[1] + y * m[5] + z * m[9];\n\t\t\t\tres.z = x * m[2] + y * m[6] + z * m[10];\n\t\t\t\treturn res;\n\t\t}\n\t\ttransformVec4(vec, res = new Vec4()) {\n\t\t\t\tconst m = this.data;\n\t\t\t\tconst { x, y, z, w } = vec;\n\t\t\t\tres.x = x * m[0] + y * m[4] + z * m[8] + w * m[12];\n\t\t\t\tres.y = x * m[1] + y * m[5] + z * m[9] + w * m[13];\n\t\t\t\tres.z = x * m[2] + y * m[6] + z * m[10] + w * m[14];\n\t\t\t\tres.w = x * m[3] + y * m[7] + z * m[11] + w * m[15];\n\t\t\t\treturn res;\n\t\t}\n\t\tsetLookAt(position, target, up) {\n\t\t\t\tz.sub2(position, target).normalize();\n\t\t\t\ty.copy(up).normalize();\n\t\t\t\tx$1.cross(y, z).normalize();\n\t\t\t\ty.cross(z, x$1);\n\t\t\t\tconst r = this.data;\n\t\t\t\tr[0] = x$1.x;\n\t\t\t\tr[1] = x$1.y;\n\t\t\t\tr[2] = x$1.z;\n\t\t\t\tr[3] = 0;\n\t\t\t\tr[4] = y.x;\n\t\t\t\tr[5] = y.y;\n\t\t\t\tr[6] = y.z;\n\t\t\t\tr[7] = 0;\n\t\t\t\tr[8] = z.x;\n\t\t\t\tr[9] = z.y;\n\t\t\t\tr[10] = z.z;\n\t\t\t\tr[11] = 0;\n\t\t\t\tr[12] = position.x;\n\t\t\t\tr[13] = position.y;\n\t\t\t\tr[14] = position.z;\n\t\t\t\tr[15] = 1;\n\t\t\t\treturn this;\n\t\t}\n\t\tsetFrustum(left, right, bottom, top, znear, zfar) {\n\t\t\t\tconst temp1 = 2 * znear;\n\t\t\t\tconst temp2 = right - left;\n\t\t\t\tconst temp3 = top - bottom;\n\t\t\t\tconst temp4 = zfar - znear;\n\t\t\t\tconst r = this.data;\n\t\t\t\tr[0] = temp1 / temp2;\n\t\t\t\tr[1] = 0;\n\t\t\t\tr[2] = 0;\n\t\t\t\tr[3] = 0;\n\t\t\t\tr[4] = 0;\n\t\t\t\tr[5] = temp1 / temp3;\n\t\t\t\tr[6] = 0;\n\t\t\t\tr[7] = 0;\n\t\t\t\tr[8] = (right + left) / temp2;\n\t\t\t\tr[9] = (top + bottom) / temp3;\n\t\t\t\tr[10] = (-zfar - znear) / temp4;\n\t\t\t\tr[11] = -1;\n\t\t\t\tr[12] = 0;\n\t\t\t\tr[13] = 0;\n\t\t\t\tr[14] = -temp1 * zfar / temp4;\n\t\t\t\tr[15] = 0;\n\t\t\t\treturn this;\n\t\t}\n\t\tsetPerspective(fov, aspect, znear, zfar, fovIsHorizontal) {\n\t\t\t\tMat4._getPerspectiveHalfSize(_halfSize$1, fov, aspect, znear, fovIsHorizontal);\n\t\t\t\treturn this.setFrustum(-_halfSize$1.x, _halfSize$1.x, -_halfSize$1.y, _halfSize$1.y, znear, zfar);\n\t\t}\n\t\tsetOrtho(left, right, bottom, top, near, far) {\n\t\t\t\tconst r = this.data;\n\t\t\t\tr[0] = 2 / (right - left);\n\t\t\t\tr[1] = 0;\n\t\t\t\tr[2] = 0;\n\t\t\t\tr[3] = 0;\n\t\t\t\tr[4] = 0;\n\t\t\t\tr[5] = 2 / (top - bottom);\n\t\t\t\tr[6] = 0;\n\t\t\t\tr[7] = 0;\n\t\t\t\tr[8] = 0;\n\t\t\t\tr[9] = 0;\n\t\t\t\tr[10] = -2 / (far - near);\n\t\t\t\tr[11] = 0;\n\t\t\t\tr[12] = -(right + left) / (right - left);\n\t\t\t\tr[13] = -(top + bottom) / (top - bottom);\n\t\t\t\tr[14] = -(far + near) / (far - near);\n\t\t\t\tr[15] = 1;\n\t\t\t\treturn this;\n\t\t}\n\t\tsetFromAxisAngle(axis, angle) {\n\t\t\t\tangle *= math.DEG_TO_RAD;\n\t\t\t\tconst { x, y, z } = axis;\n\t\t\t\tconst c = Math.cos(angle);\n\t\t\t\tconst s = Math.sin(angle);\n\t\t\t\tconst t = 1 - c;\n\t\t\t\tconst tx = t * x;\n\t\t\t\tconst ty = t * y;\n\t\t\t\tconst m = this.data;\n\t\t\t\tm[0] = tx * x + c;\n\t\t\t\tm[1] = tx * y + s * z;\n\t\t\t\tm[2] = tx * z - s * y;\n\t\t\t\tm[3] = 0;\n\t\t\t\tm[4] = tx * y - s * z;\n\t\t\t\tm[5] = ty * y + c;\n\t\t\t\tm[6] = ty * z + s * x;\n\t\t\t\tm[7] = 0;\n\t\t\t\tm[8] = tx * z + s * y;\n\t\t\t\tm[9] = ty * z - x * s;\n\t\t\t\tm[10] = t * z * z + c;\n\t\t\t\tm[11] = 0;\n\t\t\t\tm[12] = 0;\n\t\t\t\tm[13] = 0;\n\t\t\t\tm[14] = 0;\n\t\t\t\tm[15] = 1;\n\t\t\t\treturn this;\n\t\t}\n\t\tsetTranslate(x, y, z) {\n\t\t\t\tconst m = this.data;\n\t\t\t\tm[0] = 1;\n\t\t\t\tm[1] = 0;\n\t\t\t\tm[2] = 0;\n\t\t\t\tm[3] = 0;\n\t\t\t\tm[4] = 0;\n\t\t\t\tm[5] = 1;\n\t\t\t\tm[6] = 0;\n\t\t\t\tm[7] = 0;\n\t\t\t\tm[8] = 0;\n\t\t\t\tm[9] = 0;\n\t\t\t\tm[10] = 1;\n\t\t\t\tm[11] = 0;\n\t\t\t\tm[12] = x;\n\t\t\t\tm[13] = y;\n\t\t\t\tm[14] = z;\n\t\t\t\tm[15] = 1;\n\t\t\t\treturn this;\n\t\t}\n\t\tsetScale(x, y, z) {\n\t\t\t\tconst m = this.data;\n\t\t\t\tm[0] = x;\n\t\t\t\tm[1] = 0;\n\t\t\t\tm[2] = 0;\n\t\t\t\tm[3] = 0;\n\t\t\t\tm[4] = 0;\n\t\t\t\tm[5] = y;\n\t\t\t\tm[6] = 0;\n\t\t\t\tm[7] = 0;\n\t\t\t\tm[8] = 0;\n\t\t\t\tm[9] = 0;\n\t\t\t\tm[10] = z;\n\t\t\t\tm[11] = 0;\n\t\t\t\tm[12] = 0;\n\t\t\t\tm[13] = 0;\n\t\t\t\tm[14] = 0;\n\t\t\t\tm[15] = 1;\n\t\t\t\treturn this;\n\t\t}\n\t\tsetViewport(x, y, width, height) {\n\t\t\t\tconst m = this.data;\n\t\t\t\tm[0] = width * 0.5;\n\t\t\t\tm[1] = 0;\n\t\t\t\tm[2] = 0;\n\t\t\t\tm[3] = 0;\n\t\t\t\tm[4] = 0;\n\t\t\t\tm[5] = height * 0.5;\n\t\t\t\tm[6] = 0;\n\t\t\t\tm[7] = 0;\n\t\t\t\tm[8] = 0;\n\t\t\t\tm[9] = 0;\n\t\t\t\tm[10] = 0.5;\n\t\t\t\tm[11] = 0;\n\t\t\t\tm[12] = x + width * 0.5;\n\t\t\t\tm[13] = y + height * 0.5;\n\t\t\t\tm[14] = 0.5;\n\t\t\t\tm[15] = 1;\n\t\t\t\treturn this;\n\t\t}\n\t\tsetReflection(normal, distance) {\n\t\t\t\tconst a = normal.x;\n\t\t\t\tconst b = normal.y;\n\t\t\t\tconst c = normal.z;\n\t\t\t\tconst data = this.data;\n\t\t\t\tdata[0] = 1.0 - 2 * a * a;\n\t\t\t\tdata[1] = -2 * a * b;\n\t\t\t\tdata[2] = -2 * a * c;\n\t\t\t\tdata[3] = 0;\n\t\t\t\tdata[4] = -2 * a * b;\n\t\t\t\tdata[5] = 1.0 - 2 * b * b;\n\t\t\t\tdata[6] = -2 * b * c;\n\t\t\t\tdata[7] = 0;\n\t\t\t\tdata[8] = -2 * a * c;\n\t\t\t\tdata[9] = -2 * b * c;\n\t\t\t\tdata[10] = 1.0 - 2 * c * c;\n\t\t\t\tdata[11] = 0;\n\t\t\t\tdata[12] = -2 * a * distance;\n\t\t\t\tdata[13] = -2 * b * distance;\n\t\t\t\tdata[14] = -2 * c * distance;\n\t\t\t\tdata[15] = 1;\n\t\t\t\treturn this;\n\t\t}\n\t\tinvert(src = this) {\n\t\t\t\tconst s = src.data;\n\t\t\t\tconst a00 = s[0];\n\t\t\t\tconst a01 = s[1];\n\t\t\t\tconst a02 = s[2];\n\t\t\t\tconst a03 = s[3];\n\t\t\t\tconst a10 = s[4];\n\t\t\t\tconst a11 = s[5];\n\t\t\t\tconst a12 = s[6];\n\t\t\t\tconst a13 = s[7];\n\t\t\t\tconst a20 = s[8];\n\t\t\t\tconst a21 = s[9];\n\t\t\t\tconst a22 = s[10];\n\t\t\t\tconst a23 = s[11];\n\t\t\t\tconst a30 = s[12];\n\t\t\t\tconst a31 = s[13];\n\t\t\t\tconst a32 = s[14];\n\t\t\t\tconst a33 = s[15];\n\t\t\t\tconst b00 = a00 * a11 - a01 * a10;\n\t\t\t\tconst b01 = a00 * a12 - a02 * a10;\n\t\t\t\tconst b02 = a00 * a13 - a03 * a10;\n\t\t\t\tconst b03 = a01 * a12 - a02 * a11;\n\t\t\t\tconst b04 = a01 * a13 - a03 * a11;\n\t\t\t\tconst b05 = a02 * a13 - a03 * a12;\n\t\t\t\tconst b06 = a20 * a31 - a21 * a30;\n\t\t\t\tconst b07 = a20 * a32 - a22 * a30;\n\t\t\t\tconst b08 = a20 * a33 - a23 * a30;\n\t\t\t\tconst b09 = a21 * a32 - a22 * a31;\n\t\t\t\tconst b10 = a21 * a33 - a23 * a31;\n\t\t\t\tconst b11 = a22 * a33 - a23 * a32;\n\t\t\t\tconst det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n\t\t\t\tif (det === 0) {\n\t\t\t\t\t\tthis.setIdentity();\n\t\t\t\t} else {\n\t\t\t\t\t\tconst invDet = 1 / det;\n\t\t\t\t\t\tconst t = this.data;\n\t\t\t\t\t\tt[0] = (a11 * b11 - a12 * b10 + a13 * b09) * invDet;\n\t\t\t\t\t\tt[1] = (-a01 * b11 + a02 * b10 - a03 * b09) * invDet;\n\t\t\t\t\t\tt[2] = (a31 * b05 - a32 * b04 + a33 * b03) * invDet;\n\t\t\t\t\t\tt[3] = (-a21 * b05 + a22 * b04 - a23 * b03) * invDet;\n\t\t\t\t\t\tt[4] = (-a10 * b11 + a12 * b08 - a13 * b07) * invDet;\n\t\t\t\t\t\tt[5] = (a00 * b11 - a02 * b08 + a03 * b07) * invDet;\n\t\t\t\t\t\tt[6] = (-a30 * b05 + a32 * b02 - a33 * b01) * invDet;\n\t\t\t\t\t\tt[7] = (a20 * b05 - a22 * b02 + a23 * b01) * invDet;\n\t\t\t\t\t\tt[8] = (a10 * b10 - a11 * b08 + a13 * b06) * invDet;\n\t\t\t\t\t\tt[9] = (-a00 * b10 + a01 * b08 - a03 * b06) * invDet;\n\t\t\t\t\t\tt[10] = (a30 * b04 - a31 * b02 + a33 * b00) * invDet;\n\t\t\t\t\t\tt[11] = (-a20 * b04 + a21 * b02 - a23 * b00) * invDet;\n\t\t\t\t\t\tt[12] = (-a10 * b09 + a11 * b07 - a12 * b06) * invDet;\n\t\t\t\t\t\tt[13] = (a00 * b09 - a01 * b07 + a02 * b06) * invDet;\n\t\t\t\t\t\tt[14] = (-a30 * b03 + a31 * b01 - a32 * b00) * invDet;\n\t\t\t\t\t\tt[15] = (a20 * b03 - a21 * b01 + a22 * b00) * invDet;\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t}\n\t\tset(src) {\n\t\t\t\tconst dst = this.data;\n\t\t\t\tdst[0] = src[0];\n\t\t\t\tdst[1] = src[1];\n\t\t\t\tdst[2] = src[2];\n\t\t\t\tdst[3] = src[3];\n\t\t\t\tdst[4] = src[4];\n\t\t\t\tdst[5] = src[5];\n\t\t\t\tdst[6] = src[6];\n\t\t\t\tdst[7] = src[7];\n\t\t\t\tdst[8] = src[8];\n\t\t\t\tdst[9] = src[9];\n\t\t\t\tdst[10] = src[10];\n\t\t\t\tdst[11] = src[11];\n\t\t\t\tdst[12] = src[12];\n\t\t\t\tdst[13] = src[13];\n\t\t\t\tdst[14] = src[14];\n\t\t\t\tdst[15] = src[15];\n\t\t\t\treturn this;\n\t\t}\n\t\tsetIdentity() {\n\t\t\t\tconst m = this.data;\n\t\t\t\tm[0] = 1;\n\t\t\t\tm[1] = 0;\n\t\t\t\tm[2] = 0;\n\t\t\t\tm[3] = 0;\n\t\t\t\tm[4] = 0;\n\t\t\t\tm[5] = 1;\n\t\t\t\tm[6] = 0;\n\t\t\t\tm[7] = 0;\n\t\t\t\tm[8] = 0;\n\t\t\t\tm[9] = 0;\n\t\t\t\tm[10] = 1;\n\t\t\t\tm[11] = 0;\n\t\t\t\tm[12] = 0;\n\t\t\t\tm[13] = 0;\n\t\t\t\tm[14] = 0;\n\t\t\t\tm[15] = 1;\n\t\t\t\treturn this;\n\t\t}\n\t\tsetTRS(t, r, s) {\n\t\t\t\tconst qx = r.x;\n\t\t\t\tconst qy = r.y;\n\t\t\t\tconst qz = r.z;\n\t\t\t\tconst qw = r.w;\n\t\t\t\tconst sx = s.x;\n\t\t\t\tconst sy = s.y;\n\t\t\t\tconst sz = s.z;\n\t\t\t\tconst x2 = qx + qx;\n\t\t\t\tconst y2 = qy + qy;\n\t\t\t\tconst z2 = qz + qz;\n\t\t\t\tconst xx = qx * x2;\n\t\t\t\tconst xy = qx * y2;\n\t\t\t\tconst xz = qx * z2;\n\t\t\t\tconst yy = qy * y2;\n\t\t\t\tconst yz = qy * z2;\n\t\t\t\tconst zz = qz * z2;\n\t\t\t\tconst wx = qw * x2;\n\t\t\t\tconst wy = qw * y2;\n\t\t\t\tconst wz = qw * z2;\n\t\t\t\tconst m = this.data;\n\t\t\t\tm[0] = (1 - (yy + zz)) * sx;\n\t\t\t\tm[1] = (xy + wz) * sx;\n\t\t\t\tm[2] = (xz - wy) * sx;\n\t\t\t\tm[3] = 0;\n\t\t\t\tm[4] = (xy - wz) * sy;\n\t\t\t\tm[5] = (1 - (xx + zz)) * sy;\n\t\t\t\tm[6] = (yz + wx) * sy;\n\t\t\t\tm[7] = 0;\n\t\t\t\tm[8] = (xz + wy) * sz;\n\t\t\t\tm[9] = (yz - wx) * sz;\n\t\t\t\tm[10] = (1 - (xx + yy)) * sz;\n\t\t\t\tm[11] = 0;\n\t\t\t\tm[12] = t.x;\n\t\t\t\tm[13] = t.y;\n\t\t\t\tm[14] = t.z;\n\t\t\t\tm[15] = 1;\n\t\t\t\treturn this;\n\t\t}\n\t\ttranspose(src = this) {\n\t\t\t\tconst s = src.data;\n\t\t\t\tconst t = this.data;\n\t\t\t\tif (s === t) {\n\t\t\t\t\t\tlet tmp;\n\t\t\t\t\t\ttmp = s[1];\n\t\t\t\t\t\tt[1] = s[4];\n\t\t\t\t\t\tt[4] = tmp;\n\t\t\t\t\t\ttmp = s[2];\n\t\t\t\t\t\tt[2] = s[8];\n\t\t\t\t\t\tt[8] = tmp;\n\t\t\t\t\t\ttmp = s[3];\n\t\t\t\t\t\tt[3] = s[12];\n\t\t\t\t\t\tt[12] = tmp;\n\t\t\t\t\t\ttmp = s[6];\n\t\t\t\t\t\tt[6] = s[9];\n\t\t\t\t\t\tt[9] = tmp;\n\t\t\t\t\t\ttmp = s[7];\n\t\t\t\t\t\tt[7] = s[13];\n\t\t\t\t\t\tt[13] = tmp;\n\t\t\t\t\t\ttmp = s[11];\n\t\t\t\t\t\tt[11] = s[14];\n\t\t\t\t\t\tt[14] = tmp;\n\t\t\t\t} else {\n\t\t\t\t\t\tt[0] = s[0];\n\t\t\t\t\t\tt[1] = s[4];\n\t\t\t\t\t\tt[2] = s[8];\n\t\t\t\t\t\tt[3] = s[12];\n\t\t\t\t\t\tt[4] = s[1];\n\t\t\t\t\t\tt[5] = s[5];\n\t\t\t\t\t\tt[6] = s[9];\n\t\t\t\t\t\tt[7] = s[13];\n\t\t\t\t\t\tt[8] = s[2];\n\t\t\t\t\t\tt[9] = s[6];\n\t\t\t\t\t\tt[10] = s[10];\n\t\t\t\t\t\tt[11] = s[14];\n\t\t\t\t\t\tt[12] = s[3];\n\t\t\t\t\t\tt[13] = s[7];\n\t\t\t\t\t\tt[14] = s[11];\n\t\t\t\t\t\tt[15] = s[15];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t}\n\t\tgetTranslation(t = new Vec3()) {\n\t\t\t\treturn t.set(this.data[12], this.data[13], this.data[14]);\n\t\t}\n\t\tgetX(x = new Vec3()) {\n\t\t\t\treturn x.set(this.data[0], this.data[1], this.data[2]);\n\t\t}\n\t\tgetY(y = new Vec3()) {\n\t\t\t\treturn y.set(this.data[4], this.data[5], this.data[6]);\n\t\t}\n\t\tgetZ(z = new Vec3()) {\n\t\t\t\treturn z.set(this.data[8], this.data[9], this.data[10]);\n\t\t}\n\t\tgetScale(scale = new Vec3()) {\n\t\t\t\tthis.getX(x$1);\n\t\t\t\tthis.getY(y);\n\t\t\t\tthis.getZ(z);\n\t\t\t\tscale.set(x$1.length(), y.length(), z.length());\n\t\t\t\treturn scale;\n\t\t}\n\t\tget scaleSign() {\n\t\t\t\tthis.getX(x$1);\n\t\t\t\tthis.getY(y);\n\t\t\t\tthis.getZ(z);\n\t\t\t\tx$1.cross(x$1, y);\n\t\t\t\treturn x$1.dot(z) < 0 ? -1 : 1;\n\t\t}\n\t\tsetFromEulerAngles(ex, ey, ez) {\n\t\t\t\tex *= math.DEG_TO_RAD;\n\t\t\t\tey *= math.DEG_TO_RAD;\n\t\t\t\tez *= math.DEG_TO_RAD;\n\t\t\t\tconst s1 = Math.sin(-ex);\n\t\t\t\tconst c1 = Math.cos(-ex);\n\t\t\t\tconst s2 = Math.sin(-ey);\n\t\t\t\tconst c2 = Math.cos(-ey);\n\t\t\t\tconst s3 = Math.sin(-ez);\n\t\t\t\tconst c3 = Math.cos(-ez);\n\t\t\t\tconst m = this.data;\n\t\t\t\tm[0] = c2 * c3;\n\t\t\t\tm[1] = -c2 * s3;\n\t\t\t\tm[2] = s2;\n\t\t\t\tm[3] = 0;\n\t\t\t\tm[4] = c1 * s3 + c3 * s1 * s2;\n\t\t\t\tm[5] = c1 * c3 - s1 * s2 * s3;\n\t\t\t\tm[6] = -c2 * s1;\n\t\t\t\tm[7] = 0;\n\t\t\t\tm[8] = s1 * s3 - c1 * c3 * s2;\n\t\t\t\tm[9] = c3 * s1 + c1 * s2 * s3;\n\t\t\t\tm[10] = c1 * c2;\n\t\t\t\tm[11] = 0;\n\t\t\t\tm[12] = 0;\n\t\t\t\tm[13] = 0;\n\t\t\t\tm[14] = 0;\n\t\t\t\tm[15] = 1;\n\t\t\t\treturn this;\n\t\t}\n\t\tgetEulerAngles(eulers = new Vec3()) {\n\t\t\t\tthis.getScale(scale);\n\t\t\t\tconst sx = scale.x;\n\t\t\t\tconst sy = scale.y;\n\t\t\t\tconst sz = scale.z;\n\t\t\t\tif (sx === 0 || sy === 0 || sz === 0) {\n\t\t\t\t\t\treturn eulers.set(0, 0, 0);\n\t\t\t\t}\n\t\t\t\tconst m = this.data;\n\t\t\t\tconst y = Math.asin(-m[2] / sx);\n\t\t\t\tconst halfPi = Math.PI * 0.5;\n\t\t\t\tlet x, z;\n\t\t\t\tif (y < halfPi) {\n\t\t\t\t\t\tif (y > -halfPi) {\n\t\t\t\t\t\t\t\tx = Math.atan2(m[6] / sy, m[10] / sz);\n\t\t\t\t\t\t\t\tz = Math.atan2(m[1] / sx, m[0] / sx);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tz = 0;\n\t\t\t\t\t\t\t\tx = -Math.atan2(m[4] / sy, m[5] / sy);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tz = 0;\n\t\t\t\t\t\tx = Math.atan2(m[4] / sy, m[5] / sy);\n\t\t\t\t}\n\t\t\t\treturn eulers.set(x, y, z).mulScalar(math.RAD_TO_DEG);\n\t\t}\n\t\ttoString() {\n\t\t\t\treturn `[${this.data.join(', ')}]`;\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.IDENTITY = Object.freeze(new Mat4());\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.ZERO = Object.freeze(new Mat4().set([\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0\n\t\t\t\t]));\n\t\t}\n}\n\nclass Quat {\n\t\tconstructor(x = 0, y = 0, z = 0, w = 1){\n\t\t\t\tif (x.length === 4) {\n\t\t\t\t\t\tthis.x = x[0];\n\t\t\t\t\t\tthis.y = x[1];\n\t\t\t\t\t\tthis.z = x[2];\n\t\t\t\t\t\tthis.w = x[3];\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.x = x;\n\t\t\t\t\t\tthis.y = y;\n\t\t\t\t\t\tthis.z = z;\n\t\t\t\t\t\tthis.w = w;\n\t\t\t\t}\n\t\t}\n\t\tclone() {\n\t\t\t\tconst cstr = this.constructor;\n\t\t\t\treturn new cstr(this.x, this.y, this.z, this.w);\n\t\t}\n\t\tconjugate(src = this) {\n\t\t\t\tthis.x = src.x * -1;\n\t\t\t\tthis.y = src.y * -1;\n\t\t\t\tthis.z = src.z * -1;\n\t\t\t\tthis.w = src.w;\n\t\t\t\treturn this;\n\t\t}\n\t\tcopy(rhs) {\n\t\t\t\tthis.x = rhs.x;\n\t\t\t\tthis.y = rhs.y;\n\t\t\t\tthis.z = rhs.z;\n\t\t\t\tthis.w = rhs.w;\n\t\t\t\treturn this;\n\t\t}\n\t\tdot(other) {\n\t\t\t\treturn this.x * other.x + this.y * other.y + this.z * other.z + this.w * other.w;\n\t\t}\n\t\tequals(rhs) {\n\t\t\t\treturn this.x === rhs.x && this.y === rhs.y && this.z === rhs.z && this.w === rhs.w;\n\t\t}\n\t\tequalsApprox(rhs, epsilon = 1e-6) {\n\t\t\t\treturn Math.abs(this.x - rhs.x) < epsilon && Math.abs(this.y - rhs.y) < epsilon && Math.abs(this.z - rhs.z) < epsilon && Math.abs(this.w - rhs.w) < epsilon;\n\t\t}\n\t\tgetAxisAngle(axis) {\n\t\t\t\tlet rad = Math.acos(this.w) * 2;\n\t\t\t\tconst s = Math.sin(rad / 2);\n\t\t\t\tif (s !== 0) {\n\t\t\t\t\t\taxis.x = this.x / s;\n\t\t\t\t\t\taxis.y = this.y / s;\n\t\t\t\t\t\taxis.z = this.z / s;\n\t\t\t\t\t\tif (axis.x < 0 || axis.y < 0 || axis.z < 0) {\n\t\t\t\t\t\t\t\taxis.x *= -1;\n\t\t\t\t\t\t\t\taxis.y *= -1;\n\t\t\t\t\t\t\t\taxis.z *= -1;\n\t\t\t\t\t\t\t\trad *= -1;\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\taxis.x = 1;\n\t\t\t\t\t\taxis.y = 0;\n\t\t\t\t\t\taxis.z = 0;\n\t\t\t\t}\n\t\t\t\treturn rad * math.RAD_TO_DEG;\n\t\t}\n\t\tgetEulerAngles(eulers = new Vec3()) {\n\t\t\t\tlet x, y, z;\n\t\t\t\tconst qx = this.x;\n\t\t\t\tconst qy = this.y;\n\t\t\t\tconst qz = this.z;\n\t\t\t\tconst qw = this.w;\n\t\t\t\tconst a2 = 2 * (qw * qy - qx * qz);\n\t\t\t\tif (a2 <= -0.99999) {\n\t\t\t\t\t\tx = 2 * Math.atan2(qx, qw);\n\t\t\t\t\t\ty = -Math.PI / 2;\n\t\t\t\t\t\tz = 0;\n\t\t\t\t} else if (a2 >= 0.99999) {\n\t\t\t\t\t\tx = 2 * Math.atan2(qx, qw);\n\t\t\t\t\t\ty = Math.PI / 2;\n\t\t\t\t\t\tz = 0;\n\t\t\t\t} else {\n\t\t\t\t\t\tx = Math.atan2(2 * (qw * qx + qy * qz), 1 - 2 * (qx * qx + qy * qy));\n\t\t\t\t\t\ty = Math.asin(a2);\n\t\t\t\t\t\tz = Math.atan2(2 * (qw * qz + qx * qy), 1 - 2 * (qy * qy + qz * qz));\n\t\t\t\t}\n\t\t\t\treturn eulers.set(x, y, z).mulScalar(math.RAD_TO_DEG);\n\t\t}\n\t\tinvert(src = this) {\n\t\t\t\treturn this.conjugate(src).normalize();\n\t\t}\n\t\tlength() {\n\t\t\t\treturn Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w);\n\t\t}\n\t\tlengthSq() {\n\t\t\t\treturn this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n\t\t}\n\t\tlerp(lhs, rhs, alpha) {\n\t\t\t\tconst omt = (1 - alpha) * (lhs.dot(rhs) < 0 ? -1 : 1);\n\t\t\t\tthis.x = lhs.x * omt + rhs.x * alpha;\n\t\t\t\tthis.y = lhs.y * omt + rhs.y * alpha;\n\t\t\t\tthis.z = lhs.z * omt + rhs.z * alpha;\n\t\t\t\tthis.w = lhs.w * omt + rhs.w * alpha;\n\t\t\t\treturn this.normalize();\n\t\t}\n\t\tmul(rhs) {\n\t\t\t\tconst q1x = this.x;\n\t\t\t\tconst q1y = this.y;\n\t\t\t\tconst q1z = this.z;\n\t\t\t\tconst q1w = this.w;\n\t\t\t\tconst q2x = rhs.x;\n\t\t\t\tconst q2y = rhs.y;\n\t\t\t\tconst q2z = rhs.z;\n\t\t\t\tconst q2w = rhs.w;\n\t\t\t\tthis.x = q1w * q2x + q1x * q2w + q1y * q2z - q1z * q2y;\n\t\t\t\tthis.y = q1w * q2y + q1y * q2w + q1z * q2x - q1x * q2z;\n\t\t\t\tthis.z = q1w * q2z + q1z * q2w + q1x * q2y - q1y * q2x;\n\t\t\t\tthis.w = q1w * q2w - q1x * q2x - q1y * q2y - q1z * q2z;\n\t\t\t\treturn this;\n\t\t}\n\t\tmulScalar(scalar, src = this) {\n\t\t\t\tthis.x = src.x * scalar;\n\t\t\t\tthis.y = src.y * scalar;\n\t\t\t\tthis.z = src.z * scalar;\n\t\t\t\tthis.w = src.w * scalar;\n\t\t\t\treturn this;\n\t\t}\n\t\tmul2(lhs, rhs) {\n\t\t\t\tconst q1x = lhs.x;\n\t\t\t\tconst q1y = lhs.y;\n\t\t\t\tconst q1z = lhs.z;\n\t\t\t\tconst q1w = lhs.w;\n\t\t\t\tconst q2x = rhs.x;\n\t\t\t\tconst q2y = rhs.y;\n\t\t\t\tconst q2z = rhs.z;\n\t\t\t\tconst q2w = rhs.w;\n\t\t\t\tthis.x = q1w * q2x + q1x * q2w + q1y * q2z - q1z * q2y;\n\t\t\t\tthis.y = q1w * q2y + q1y * q2w + q1z * q2x - q1x * q2z;\n\t\t\t\tthis.z = q1w * q2z + q1z * q2w + q1x * q2y - q1y * q2x;\n\t\t\t\tthis.w = q1w * q2w - q1x * q2x - q1y * q2y - q1z * q2z;\n\t\t\t\treturn this;\n\t\t}\n\t\tnormalize(src = this) {\n\t\t\t\tlet len = src.length();\n\t\t\t\tif (len === 0) {\n\t\t\t\t\t\tthis.x = this.y = this.z = 0;\n\t\t\t\t\t\tthis.w = 1;\n\t\t\t\t} else {\n\t\t\t\t\t\tlen = 1 / len;\n\t\t\t\t\t\tthis.x = src.x * len;\n\t\t\t\t\t\tthis.y = src.y * len;\n\t\t\t\t\t\tthis.z = src.z * len;\n\t\t\t\t\t\tthis.w = src.w * len;\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t}\n\t\tset(x, y, z, w) {\n\t\t\t\tthis.x = x;\n\t\t\t\tthis.y = y;\n\t\t\t\tthis.z = z;\n\t\t\t\tthis.w = w;\n\t\t\t\treturn this;\n\t\t}\n\t\tsetFromAxisAngle(axis, angle) {\n\t\t\t\tangle *= 0.5 * math.DEG_TO_RAD;\n\t\t\t\tconst sa = Math.sin(angle);\n\t\t\t\tconst ca = Math.cos(angle);\n\t\t\t\tthis.x = sa * axis.x;\n\t\t\t\tthis.y = sa * axis.y;\n\t\t\t\tthis.z = sa * axis.z;\n\t\t\t\tthis.w = ca;\n\t\t\t\treturn this;\n\t\t}\n\t\tsetFromEulerAngles(ex, ey, ez) {\n\t\t\t\tif (ex instanceof Vec3) {\n\t\t\t\t\t\tconst vec = ex;\n\t\t\t\t\t\tex = vec.x;\n\t\t\t\t\t\tey = vec.y;\n\t\t\t\t\t\tez = vec.z;\n\t\t\t\t}\n\t\t\t\tconst halfToRad = 0.5 * math.DEG_TO_RAD;\n\t\t\t\tex *= halfToRad;\n\t\t\t\tey *= halfToRad;\n\t\t\t\tez *= halfToRad;\n\t\t\t\tconst sx = Math.sin(ex);\n\t\t\t\tconst cx = Math.cos(ex);\n\t\t\t\tconst sy = Math.sin(ey);\n\t\t\t\tconst cy = Math.cos(ey);\n\t\t\t\tconst sz = Math.sin(ez);\n\t\t\t\tconst cz = Math.cos(ez);\n\t\t\t\tthis.x = sx * cy * cz - cx * sy * sz;\n\t\t\t\tthis.y = cx * sy * cz + sx * cy * sz;\n\t\t\t\tthis.z = cx * cy * sz - sx * sy * cz;\n\t\t\t\tthis.w = cx * cy * cz + sx * sy * sz;\n\t\t\t\treturn this;\n\t\t}\n\t\tsetFromMat4(m) {\n\t\t\t\tconst d = m.data;\n\t\t\t\tlet m00 = d[0];\n\t\t\t\tlet m01 = d[1];\n\t\t\t\tlet m02 = d[2];\n\t\t\t\tlet m10 = d[4];\n\t\t\t\tlet m11 = d[5];\n\t\t\t\tlet m12 = d[6];\n\t\t\t\tlet m20 = d[8];\n\t\t\t\tlet m21 = d[9];\n\t\t\t\tlet m22 = d[10];\n\t\t\t\tconst det = m00 * (m11 * m22 - m12 * m21) - m01 * (m10 * m22 - m12 * m20) + m02 * (m10 * m21 - m11 * m20);\n\t\t\t\tif (det < 0) {\n\t\t\t\t\t\tm00 = -m00;\n\t\t\t\t\t\tm01 = -m01;\n\t\t\t\t\t\tm02 = -m02;\n\t\t\t\t}\n\t\t\t\tlet l;\n\t\t\t\tl = m00 * m00 + m01 * m01 + m02 * m02;\n\t\t\t\tif (l === 0) return this.set(0, 0, 0, 1);\n\t\t\t\tl = 1 / Math.sqrt(l);\n\t\t\t\tm00 *= l;\n\t\t\t\tm01 *= l;\n\t\t\t\tm02 *= l;\n\t\t\t\tl = m10 * m10 + m11 * m11 + m12 * m12;\n\t\t\t\tif (l === 0) return this.set(0, 0, 0, 1);\n\t\t\t\tl = 1 / Math.sqrt(l);\n\t\t\t\tm10 *= l;\n\t\t\t\tm11 *= l;\n\t\t\t\tm12 *= l;\n\t\t\t\tl = m20 * m20 + m21 * m21 + m22 * m22;\n\t\t\t\tif (l === 0) return this.set(0, 0, 0, 1);\n\t\t\t\tl = 1 / Math.sqrt(l);\n\t\t\t\tm20 *= l;\n\t\t\t\tm21 *= l;\n\t\t\t\tm22 *= l;\n\t\t\t\tif (m22 < 0) {\n\t\t\t\t\t\tif (m00 > m11) {\n\t\t\t\t\t\t\t\tthis.set(1 + m00 - m11 - m22, m01 + m10, m20 + m02, m12 - m21);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.set(m01 + m10, 1 - m00 + m11 - m22, m12 + m21, m20 - m02);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tif (m00 < -m11) {\n\t\t\t\t\t\t\t\tthis.set(m20 + m02, m12 + m21, 1 - m00 - m11 + m22, m01 - m10);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.set(m12 - m21, m20 - m02, m01 - m10, 1 + m00 + m11 + m22);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this.mulScalar(1.0 / this.length());\n\t\t}\n\t\tsetFromDirections(from, to) {\n\t\t\t\tconst dotProduct = 1 + from.dot(to);\n\t\t\t\tif (dotProduct < Number.EPSILON) {\n\t\t\t\t\t\tif (Math.abs(from.x) > Math.abs(from.y)) {\n\t\t\t\t\t\t\t\tthis.x = -from.z;\n\t\t\t\t\t\t\t\tthis.y = 0;\n\t\t\t\t\t\t\t\tthis.z = from.x;\n\t\t\t\t\t\t\t\tthis.w = 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.x = 0;\n\t\t\t\t\t\t\t\tthis.y = -from.z;\n\t\t\t\t\t\t\t\tthis.z = from.y;\n\t\t\t\t\t\t\t\tthis.w = 0;\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.x = from.y * to.z - from.z * to.y;\n\t\t\t\t\t\tthis.y = from.z * to.x - from.x * to.z;\n\t\t\t\t\t\tthis.z = from.x * to.y - from.y * to.x;\n\t\t\t\t\t\tthis.w = dotProduct;\n\t\t\t\t}\n\t\t\t\treturn this.normalize();\n\t\t}\n\t\tslerp(lhs, rhs, alpha) {\n\t\t\t\tconst lx = lhs.x;\n\t\t\t\tconst ly = lhs.y;\n\t\t\t\tconst lz = lhs.z;\n\t\t\t\tconst lw = lhs.w;\n\t\t\t\tlet rx = rhs.x;\n\t\t\t\tlet ry = rhs.y;\n\t\t\t\tlet rz = rhs.z;\n\t\t\t\tlet rw = rhs.w;\n\t\t\t\tlet cosHalfTheta = lw * rw + lx * rx + ly * ry + lz * rz;\n\t\t\t\tif (cosHalfTheta < 0) {\n\t\t\t\t\t\trw = -rw;\n\t\t\t\t\t\trx = -rx;\n\t\t\t\t\t\try = -ry;\n\t\t\t\t\t\trz = -rz;\n\t\t\t\t\t\tcosHalfTheta = -cosHalfTheta;\n\t\t\t\t}\n\t\t\t\tif (Math.abs(cosHalfTheta) >= 1) {\n\t\t\t\t\t\tthis.w = lw;\n\t\t\t\t\t\tthis.x = lx;\n\t\t\t\t\t\tthis.y = ly;\n\t\t\t\t\t\tthis.z = lz;\n\t\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tconst halfTheta = Math.acos(cosHalfTheta);\n\t\t\t\tconst sinHalfTheta = Math.sqrt(1 - cosHalfTheta * cosHalfTheta);\n\t\t\t\tif (Math.abs(sinHalfTheta) < 0.001) {\n\t\t\t\t\t\tthis.w = lw * 0.5 + rw * 0.5;\n\t\t\t\t\t\tthis.x = lx * 0.5 + rx * 0.5;\n\t\t\t\t\t\tthis.y = ly * 0.5 + ry * 0.5;\n\t\t\t\t\t\tthis.z = lz * 0.5 + rz * 0.5;\n\t\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tconst ratioA = Math.sin((1 - alpha) * halfTheta) / sinHalfTheta;\n\t\t\t\tconst ratioB = Math.sin(alpha * halfTheta) / sinHalfTheta;\n\t\t\t\tthis.w = lw * ratioA + rw * ratioB;\n\t\t\t\tthis.x = lx * ratioA + rx * ratioB;\n\t\t\t\tthis.y = ly * ratioA + ry * ratioB;\n\t\t\t\tthis.z = lz * ratioA + rz * ratioB;\n\t\t\t\treturn this;\n\t\t}\n\t\ttransformVector(vec, res = new Vec3()) {\n\t\t\t\tconst x = vec.x, y = vec.y, z = vec.z;\n\t\t\t\tconst qx = this.x, qy = this.y, qz = this.z, qw = this.w;\n\t\t\t\tconst ix = qw * x + qy * z - qz * y;\n\t\t\t\tconst iy = qw * y + qz * x - qx * z;\n\t\t\t\tconst iz = qw * z + qx * y - qy * x;\n\t\t\t\tconst iw = -qx * x - qy * y - qz * z;\n\t\t\t\tres.x = ix * qw + iw * -qx + iy * -qz - iz * -qy;\n\t\t\t\tres.y = iy * qw + iw * -qy + iz * -qx - ix * -qz;\n\t\t\t\tres.z = iz * qw + iw * -qz + ix * -qy - iy * -qx;\n\t\t\t\treturn res;\n\t\t}\n\t\tfromArray(arr, offset = 0) {\n\t\t\t\tthis.x = arr[offset] ?? this.x;\n\t\t\t\tthis.y = arr[offset + 1] ?? this.y;\n\t\t\t\tthis.z = arr[offset + 2] ?? this.z;\n\t\t\t\tthis.w = arr[offset + 3] ?? this.w;\n\t\t\t\treturn this;\n\t\t}\n\t\ttoString() {\n\t\t\t\treturn `[${this.x}, ${this.y}, ${this.z}, ${this.w}]`;\n\t\t}\n\t\ttoArray(arr = [], offset = 0) {\n\t\t\t\tarr[offset] = this.x;\n\t\t\t\tarr[offset + 1] = this.y;\n\t\t\t\tarr[offset + 2] = this.z;\n\t\t\t\tarr[offset + 3] = this.w;\n\t\t\t\treturn arr;\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.IDENTITY = Object.freeze(new Quat(0, 0, 0, 1));\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.ZERO = Object.freeze(new Quat(0, 0, 0, 0));\n\t\t}\n}\n\nconst tmpVecA$1 = new Vec3();\nconst tmpVecB$1 = new Vec3();\nconst tmpVecC = new Vec3();\nconst tmpVecD = new Vec3();\nconst tmpVecE = new Vec3();\nclass BoundingBox {\n\t\tconstructor(center, halfExtents){\n\t\t\t\tthis.center = new Vec3();\n\t\t\t\tthis.halfExtents = new Vec3(0.5, 0.5, 0.5);\n\t\t\t\tthis._min = new Vec3();\n\t\t\t\tthis._max = new Vec3();\n\t\t\t\tif (center) {\n\t\t\t\t\t\tthis.center.copy(center);\n\t\t\t\t}\n\t\t\t\tif (halfExtents) {\n\t\t\t\t\t\tthis.halfExtents.copy(halfExtents);\n\t\t\t\t}\n\t\t}\n\t\tadd(other) {\n\t\t\t\tconst tc = this.center;\n\t\t\t\tconst tcx = tc.x;\n\t\t\t\tconst tcy = tc.y;\n\t\t\t\tconst tcz = tc.z;\n\t\t\t\tconst th = this.halfExtents;\n\t\t\t\tconst thx = th.x;\n\t\t\t\tconst thy = th.y;\n\t\t\t\tconst thz = th.z;\n\t\t\t\tlet tminx = tcx - thx;\n\t\t\t\tlet tmaxx = tcx + thx;\n\t\t\t\tlet tminy = tcy - thy;\n\t\t\t\tlet tmaxy = tcy + thy;\n\t\t\t\tlet tminz = tcz - thz;\n\t\t\t\tlet tmaxz = tcz + thz;\n\t\t\t\tconst oc = other.center;\n\t\t\t\tconst ocx = oc.x;\n\t\t\t\tconst ocy = oc.y;\n\t\t\t\tconst ocz = oc.z;\n\t\t\t\tconst oh = other.halfExtents;\n\t\t\t\tconst ohx = oh.x;\n\t\t\t\tconst ohy = oh.y;\n\t\t\t\tconst ohz = oh.z;\n\t\t\t\tconst ominx = ocx - ohx;\n\t\t\t\tconst omaxx = ocx + ohx;\n\t\t\t\tconst ominy = ocy - ohy;\n\t\t\t\tconst omaxy = ocy + ohy;\n\t\t\t\tconst ominz = ocz - ohz;\n\t\t\t\tconst omaxz = ocz + ohz;\n\t\t\t\tif (ominx < tminx) tminx = ominx;\n\t\t\t\tif (omaxx > tmaxx) tmaxx = omaxx;\n\t\t\t\tif (ominy < tminy) tminy = ominy;\n\t\t\t\tif (omaxy > tmaxy) tmaxy = omaxy;\n\t\t\t\tif (ominz < tminz) tminz = ominz;\n\t\t\t\tif (omaxz > tmaxz) tmaxz = omaxz;\n\t\t\t\ttc.x = (tminx + tmaxx) * 0.5;\n\t\t\t\ttc.y = (tminy + tmaxy) * 0.5;\n\t\t\t\ttc.z = (tminz + tmaxz) * 0.5;\n\t\t\t\tth.x = (tmaxx - tminx) * 0.5;\n\t\t\t\tth.y = (tmaxy - tminy) * 0.5;\n\t\t\t\tth.z = (tmaxz - tminz) * 0.5;\n\t\t}\n\t\tcopy(src) {\n\t\t\t\tthis.center.copy(src.center);\n\t\t\t\tthis.halfExtents.copy(src.halfExtents);\n\t\t}\n\t\tclone() {\n\t\t\t\treturn new BoundingBox(this.center, this.halfExtents);\n\t\t}\n\t\tintersects(other) {\n\t\t\t\tconst aMax = this.getMax();\n\t\t\t\tconst aMin = this.getMin();\n\t\t\t\tconst bMax = other.getMax();\n\t\t\t\tconst bMin = other.getMin();\n\t\t\t\treturn aMin.x <= bMax.x && aMax.x >= bMin.x && aMin.y <= bMax.y && aMax.y >= bMin.y && aMin.z <= bMax.z && aMax.z >= bMin.z;\n\t\t}\n\t\t_intersectsRay(ray, point) {\n\t\t\t\tconst tMin = tmpVecA$1.copy(this.getMin()).sub(ray.origin);\n\t\t\t\tconst tMax = tmpVecB$1.copy(this.getMax()).sub(ray.origin);\n\t\t\t\tconst dir = ray.direction;\n\t\t\t\tif (dir.x === 0) {\n\t\t\t\t\t\ttMin.x = tMin.x < 0 ? -Number.MAX_VALUE : Number.MAX_VALUE;\n\t\t\t\t\t\ttMax.x = tMax.x < 0 ? -Number.MAX_VALUE : Number.MAX_VALUE;\n\t\t\t\t} else {\n\t\t\t\t\t\ttMin.x /= dir.x;\n\t\t\t\t\t\ttMax.x /= dir.x;\n\t\t\t\t}\n\t\t\t\tif (dir.y === 0) {\n\t\t\t\t\t\ttMin.y = tMin.y < 0 ? -Number.MAX_VALUE : Number.MAX_VALUE;\n\t\t\t\t\t\ttMax.y = tMax.y < 0 ? -Number.MAX_VALUE : Number.MAX_VALUE;\n\t\t\t\t} else {\n\t\t\t\t\t\ttMin.y /= dir.y;\n\t\t\t\t\t\ttMax.y /= dir.y;\n\t\t\t\t}\n\t\t\t\tif (dir.z === 0) {\n\t\t\t\t\t\ttMin.z = tMin.z < 0 ? -Number.MAX_VALUE : Number.MAX_VALUE;\n\t\t\t\t\t\ttMax.z = tMax.z < 0 ? -Number.MAX_VALUE : Number.MAX_VALUE;\n\t\t\t\t} else {\n\t\t\t\t\t\ttMin.z /= dir.z;\n\t\t\t\t\t\ttMax.z /= dir.z;\n\t\t\t\t}\n\t\t\t\tconst realMin = tmpVecC.set(Math.min(tMin.x, tMax.x), Math.min(tMin.y, tMax.y), Math.min(tMin.z, tMax.z));\n\t\t\t\tconst realMax = tmpVecD.set(Math.max(tMin.x, tMax.x), Math.max(tMin.y, tMax.y), Math.max(tMin.z, tMax.z));\n\t\t\t\tconst minMax = Math.min(Math.min(realMax.x, realMax.y), realMax.z);\n\t\t\t\tconst maxMin = Math.max(Math.max(realMin.x, realMin.y), realMin.z);\n\t\t\t\tconst intersects = minMax >= maxMin && maxMin >= 0;\n\t\t\t\tif (intersects) {\n\t\t\t\t\t\tpoint.copy(ray.direction).mulScalar(maxMin).add(ray.origin);\n\t\t\t\t}\n\t\t\t\treturn intersects;\n\t\t}\n\t\t_fastIntersectsRay(ray) {\n\t\t\t\tconst diff = tmpVecA$1;\n\t\t\t\tconst cross = tmpVecB$1;\n\t\t\t\tconst prod = tmpVecC;\n\t\t\t\tconst absDiff = tmpVecD;\n\t\t\t\tconst absDir = tmpVecE;\n\t\t\t\tconst rayDir = ray.direction;\n\t\t\t\tdiff.sub2(ray.origin, this.center);\n\t\t\t\tabsDiff.set(Math.abs(diff.x), Math.abs(diff.y), Math.abs(diff.z));\n\t\t\t\tprod.mul2(diff, rayDir);\n\t\t\t\tif (absDiff.x > this.halfExtents.x && prod.x >= 0) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif (absDiff.y > this.halfExtents.y && prod.y >= 0) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif (absDiff.z > this.halfExtents.z && prod.z >= 0) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tabsDir.set(Math.abs(rayDir.x), Math.abs(rayDir.y), Math.abs(rayDir.z));\n\t\t\t\tcross.cross(rayDir, diff);\n\t\t\t\tcross.set(Math.abs(cross.x), Math.abs(cross.y), Math.abs(cross.z));\n\t\t\t\tif (cross.x > this.halfExtents.y * absDir.z + this.halfExtents.z * absDir.y) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif (cross.y > this.halfExtents.x * absDir.z + this.halfExtents.z * absDir.x) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif (cross.z > this.halfExtents.x * absDir.y + this.halfExtents.y * absDir.x) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t}\n\t\tintersectsRay(ray, point) {\n\t\t\t\tif (point) {\n\t\t\t\t\t\treturn this._intersectsRay(ray, point);\n\t\t\t\t}\n\t\t\t\treturn this._fastIntersectsRay(ray);\n\t\t}\n\t\tsetMinMax(min, max) {\n\t\t\t\tthis.center.add2(max, min).mulScalar(0.5);\n\t\t\t\tthis.halfExtents.sub2(max, min).mulScalar(0.5);\n\t\t}\n\t\tgetMin() {\n\t\t\t\treturn this._min.copy(this.center).sub(this.halfExtents);\n\t\t}\n\t\tgetMax() {\n\t\t\t\treturn this._max.copy(this.center).add(this.halfExtents);\n\t\t}\n\t\tcontainsPoint(point) {\n\t\t\t\tconst c = this.center;\n\t\t\t\tconst h = this.halfExtents;\n\t\t\t\tif (point.x < c.x - h.x || point.x > c.x + h.x || point.y < c.y - h.y || point.y > c.y + h.y || point.z < c.z - h.z || point.z > c.z + h.z) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t}\n\t\tclosestPoint(point, result = new Vec3()) {\n\t\t\t\tconst c = this.center;\n\t\t\t\tconst h = this.halfExtents;\n\t\t\t\treturn result.set(Math.max(c.x - h.x, Math.min(point.x, c.x + h.x)), Math.max(c.y - h.y, Math.min(point.y, c.y + h.y)), Math.max(c.z - h.z, Math.min(point.z, c.z + h.z)));\n\t\t}\n\t\tsetFromTransformedAabb(aabb, m, ignoreScale = false) {\n\t\t\t\tconst ac = aabb.center;\n\t\t\t\tconst ar = aabb.halfExtents;\n\t\t\t\tconst d = m.data;\n\t\t\t\tlet mx0 = d[0];\n\t\t\t\tlet mx1 = d[4];\n\t\t\t\tlet mx2 = d[8];\n\t\t\t\tlet my0 = d[1];\n\t\t\t\tlet my1 = d[5];\n\t\t\t\tlet my2 = d[9];\n\t\t\t\tlet mz0 = d[2];\n\t\t\t\tlet mz1 = d[6];\n\t\t\t\tlet mz2 = d[10];\n\t\t\t\tif (ignoreScale) {\n\t\t\t\t\t\tlet lengthSq = mx0 * mx0 + mx1 * mx1 + mx2 * mx2;\n\t\t\t\t\t\tif (lengthSq > 0) {\n\t\t\t\t\t\t\t\tconst invLength = 1 / Math.sqrt(lengthSq);\n\t\t\t\t\t\t\t\tmx0 *= invLength;\n\t\t\t\t\t\t\t\tmx1 *= invLength;\n\t\t\t\t\t\t\t\tmx2 *= invLength;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlengthSq = my0 * my0 + my1 * my1 + my2 * my2;\n\t\t\t\t\t\tif (lengthSq > 0) {\n\t\t\t\t\t\t\t\tconst invLength = 1 / Math.sqrt(lengthSq);\n\t\t\t\t\t\t\t\tmy0 *= invLength;\n\t\t\t\t\t\t\t\tmy1 *= invLength;\n\t\t\t\t\t\t\t\tmy2 *= invLength;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlengthSq = mz0 * mz0 + mz1 * mz1 + mz2 * mz2;\n\t\t\t\t\t\tif (lengthSq > 0) {\n\t\t\t\t\t\t\t\tconst invLength = 1 / Math.sqrt(lengthSq);\n\t\t\t\t\t\t\t\tmz0 *= invLength;\n\t\t\t\t\t\t\t\tmz1 *= invLength;\n\t\t\t\t\t\t\t\tmz2 *= invLength;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.center.set(d[12] + mx0 * ac.x + mx1 * ac.y + mx2 * ac.z, d[13] + my0 * ac.x + my1 * ac.y + my2 * ac.z, d[14] + mz0 * ac.x + mz1 * ac.y + mz2 * ac.z);\n\t\t\t\tthis.halfExtents.set(Math.abs(mx0) * ar.x + Math.abs(mx1) * ar.y + Math.abs(mx2) * ar.z, Math.abs(my0) * ar.x + Math.abs(my1) * ar.y + Math.abs(my2) * ar.z, Math.abs(mz0) * ar.x + Math.abs(mz1) * ar.y + Math.abs(mz2) * ar.z);\n\t\t}\n\t\tstatic computeMinMax(vertices, min, max, numVerts = vertices.length / 3) {\n\t\t\t\tif (numVerts > 0) {\n\t\t\t\t\t\tlet minx = vertices[0];\n\t\t\t\t\t\tlet miny = vertices[1];\n\t\t\t\t\t\tlet minz = vertices[2];\n\t\t\t\t\t\tlet maxx = minx;\n\t\t\t\t\t\tlet maxy = miny;\n\t\t\t\t\t\tlet maxz = minz;\n\t\t\t\t\t\tconst n = numVerts * 3;\n\t\t\t\t\t\tfor(let i = 3; i < n; i += 3){\n\t\t\t\t\t\t\t\tconst x = vertices[i];\n\t\t\t\t\t\t\t\tconst y = vertices[i + 1];\n\t\t\t\t\t\t\t\tconst z = vertices[i + 2];\n\t\t\t\t\t\t\t\tif (x < minx) minx = x;\n\t\t\t\t\t\t\t\tif (y < miny) miny = y;\n\t\t\t\t\t\t\t\tif (z < minz) minz = z;\n\t\t\t\t\t\t\t\tif (x > maxx) maxx = x;\n\t\t\t\t\t\t\t\tif (y > maxy) maxy = y;\n\t\t\t\t\t\t\t\tif (z > maxz) maxz = z;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmin.set(minx, miny, minz);\n\t\t\t\t\t\tmax.set(maxx, maxy, maxz);\n\t\t\t\t}\n\t\t}\n\t\tcompute(vertices, numVerts) {\n\t\t\t\tBoundingBox.computeMinMax(vertices, tmpVecA$1, tmpVecB$1, numVerts);\n\t\t\t\tthis.setMinMax(tmpVecA$1, tmpVecB$1);\n\t\t}\n\t\tintersectsBoundingSphere(sphere) {\n\t\t\t\tconst sq = this._distanceToBoundingSphereSq(sphere);\n\t\t\t\tif (sq <= sphere.radius * sphere.radius) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t}\n\t\t_distanceToBoundingSphereSq(sphere) {\n\t\t\t\tconst boxMin = this.getMin();\n\t\t\t\tconst boxMax = this.getMax();\n\t\t\t\tlet sq = 0;\n\t\t\t\tconst axis = [\n\t\t\t\t\t\t'x',\n\t\t\t\t\t\t'y',\n\t\t\t\t\t\t'z'\n\t\t\t\t];\n\t\t\t\tfor(let i = 0; i < 3; ++i){\n\t\t\t\t\t\tlet out = 0;\n\t\t\t\t\t\tconst pn = sphere.center[axis[i]];\n\t\t\t\t\t\tconst bMin = boxMin[axis[i]];\n\t\t\t\t\t\tconst bMax = boxMax[axis[i]];\n\t\t\t\t\t\tlet val = 0;\n\t\t\t\t\t\tif (pn < bMin) {\n\t\t\t\t\t\t\t\tval = bMin - pn;\n\t\t\t\t\t\t\t\tout += val * val;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (pn > bMax) {\n\t\t\t\t\t\t\t\tval = pn - bMax;\n\t\t\t\t\t\t\t\tout += val * val;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsq += out;\n\t\t\t\t}\n\t\t\t\treturn sq;\n\t\t}\n\t\t_expand(expandMin, expandMax) {\n\t\t\t\ttmpVecA$1.add2(this.getMin(), expandMin);\n\t\t\t\ttmpVecB$1.add2(this.getMax(), expandMax);\n\t\t\t\tthis.setMinMax(tmpVecA$1, tmpVecB$1);\n\t\t}\n}\n\nconst tmpVecA = new Vec3();\nconst tmpVecB = new Vec3();\nclass BoundingSphere {\n\t\tconstructor(center = new Vec3(), radius = 0.5){\n\t\t\t\tthis.center = center;\n\t\t\t\tthis.radius = radius;\n\t\t}\n\t\tcontainsPoint(point) {\n\t\t\t\tconst lenSq = tmpVecA.sub2(point, this.center).lengthSq();\n\t\t\t\tconst r = this.radius;\n\t\t\t\treturn lenSq < r * r;\n\t\t}\n\t\tintersectsRay(ray, point) {\n\t\t\t\tconst m = tmpVecA.copy(ray.origin).sub(this.center);\n\t\t\t\tconst b = m.dot(tmpVecB.copy(ray.direction).normalize());\n\t\t\t\tconst c = m.dot(m) - this.radius * this.radius;\n\t\t\t\tif (c > 0 && b > 0) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tconst discr = b * b - c;\n\t\t\t\tif (discr < 0) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tconst t = Math.abs(-b - Math.sqrt(discr));\n\t\t\t\tif (point) {\n\t\t\t\t\t\tpoint.copy(ray.direction).mulScalar(t).add(ray.origin);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t}\n\t\tintersectsBoundingSphere(sphere) {\n\t\t\t\ttmpVecA.sub2(sphere.center, this.center);\n\t\t\t\tconst totalRadius = sphere.radius + this.radius;\n\t\t\t\tif (tmpVecA.lengthSq() <= totalRadius * totalRadius) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t}\n}\n\nclass Plane {\n\t\tconstructor(normal = Vec3.UP, distance = 0){\n\t\t\t\tthis.normal = new Vec3();\n\t\t\t\tthis.normal.copy(normal);\n\t\t\t\tthis.distance = distance;\n\t\t}\n\t\tclone() {\n\t\t\t\tconst cstr = this.constructor;\n\t\t\t\treturn new cstr().copy(this);\n\t\t}\n\t\tcopy(src) {\n\t\t\t\tthis.normal.copy(src.normal);\n\t\t\t\tthis.distance = src.distance;\n\t\t\t\treturn this;\n\t\t}\n\t\tintersectsLine(start, end, point) {\n\t\t\t\tconst d = this.distance;\n\t\t\t\tconst d0 = this.normal.dot(start) + d;\n\t\t\t\tconst d1 = this.normal.dot(end) + d;\n\t\t\t\tconst t = d0 / (d0 - d1);\n\t\t\t\tconst intersects = t >= 0 && t <= 1;\n\t\t\t\tif (intersects && point) {\n\t\t\t\t\t\tpoint.lerp(start, end, t);\n\t\t\t\t}\n\t\t\t\treturn intersects;\n\t\t}\n\t\tintersectsRay(ray, point) {\n\t\t\t\tconst denominator = this.normal.dot(ray.direction);\n\t\t\t\tif (denominator === 0) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tconst t = -(this.normal.dot(ray.origin) + this.distance) / denominator;\n\t\t\t\tif (t >= 0 && point) {\n\t\t\t\t\t\tpoint.copy(ray.direction).mulScalar(t).add(ray.origin);\n\t\t\t\t}\n\t\t\t\treturn t >= 0;\n\t\t}\n\t\tnormalize() {\n\t\t\t\tconst invLength = 1 / this.normal.length();\n\t\t\t\tthis.normal.mulScalar(invLength);\n\t\t\t\tthis.distance *= invLength;\n\t\t\t\treturn this;\n\t\t}\n\t\tset(nx, ny, nz, d) {\n\t\t\t\tthis.normal.set(nx, ny, nz);\n\t\t\t\tthis.distance = d;\n\t\t\t\treturn this;\n\t\t}\n\t\tsetFromPointNormal(point, normal) {\n\t\t\t\tthis.normal.copy(normal);\n\t\t\t\tthis.distance = -this.normal.dot(point);\n\t\t\t\treturn this;\n\t\t}\n}\n\nclass Frustum {\n\t\tconstructor(){\n\t\t\t\tthis.planes = [];\n\t\t\t\tfor(let i = 0; i < 6; i++){\n\t\t\t\t\t\tthis.planes[i] = new Plane();\n\t\t\t\t}\n\t\t}\n\t\tclone() {\n\t\t\t\tconst cstr = this.constructor;\n\t\t\t\treturn new cstr().copy(this);\n\t\t}\n\t\tcopy(src) {\n\t\t\t\tfor(let i = 0; i < 6; i++){\n\t\t\t\t\t\tthis.planes[i].copy(src.planes[i]);\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t}\n\t\tsetFromMat4(matrix) {\n\t\t\t\tconst [m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33] = matrix.data;\n\t\t\t\tconst planes = this.planes;\n\t\t\t\tplanes[0].set(m03 - m00, m13 - m10, m23 - m20, m33 - m30).normalize();\n\t\t\t\tplanes[1].set(m03 + m00, m13 + m10, m23 + m20, m33 + m30).normalize();\n\t\t\t\tplanes[2].set(m03 + m01, m13 + m11, m23 + m21, m33 + m31).normalize();\n\t\t\t\tplanes[3].set(m03 - m01, m13 - m11, m23 - m21, m33 - m31).normalize();\n\t\t\t\tplanes[4].set(m03 - m02, m13 - m12, m23 - m22, m33 - m32).normalize();\n\t\t\t\tplanes[5].set(m03 + m02, m13 + m12, m23 + m22, m33 + m32).normalize();\n\t\t}\n\t\tcontainsPoint(point) {\n\t\t\t\tfor(let p = 0; p < 6; p++){\n\t\t\t\t\t\tconst { normal, distance } = this.planes[p];\n\t\t\t\t\t\tif (normal.dot(point) + distance <= 0) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t}\n\t\tcontainsSphere(sphere) {\n\t\t\t\tconst { center, radius } = sphere;\n\t\t\t\tlet c = 0;\n\t\t\t\tfor(let p = 0; p < 6; p++){\n\t\t\t\t\t\tconst { normal, distance } = this.planes[p];\n\t\t\t\t\t\tconst d = normal.dot(center) + distance;\n\t\t\t\t\t\tif (d <= -radius) {\n\t\t\t\t\t\t\t\treturn 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (d > radius) {\n\t\t\t\t\t\t\t\tc++;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn c === 6 ? 2 : 1;\n\t\t}\n}\n\nclass Ray {\n\t\tconstructor(origin, direction){\n\t\t\t\tthis.origin = new Vec3();\n\t\t\t\tthis.direction = Vec3.FORWARD.clone();\n\t\t\t\tif (origin) {\n\t\t\t\t\t\tthis.origin.copy(origin);\n\t\t\t\t}\n\t\t\t\tif (direction) {\n\t\t\t\t\t\tthis.direction.copy(direction);\n\t\t\t\t}\n\t\t}\n\t\tset(origin, direction) {\n\t\t\t\tthis.origin.copy(origin);\n\t\t\t\tthis.direction.copy(direction);\n\t\t\t\treturn this;\n\t\t}\n\t\tcopy(src) {\n\t\t\t\treturn this.set(src.origin, src.direction);\n\t\t}\n\t\tclone() {\n\t\t\t\treturn new this.constructor(this.origin, this.direction);\n\t\t}\n}\n\nconst tmpRay = new Ray();\nconst tmpVec3$2 = new Vec3();\nconst tmpSphere = new BoundingSphere();\nconst tmpMat4$1 = new Mat4();\nclass OrientedBox {\n\t\tconstructor(worldTransform = new Mat4(), halfExtents){\n\t\t\t\tthis.halfExtents = new Vec3(0.5, 0.5, 0.5);\n\t\t\t\tif (halfExtents) {\n\t\t\t\t\t\tthis.halfExtents.copy(halfExtents);\n\t\t\t\t}\n\t\t\t\tthis._modelTransform = worldTransform.clone().invert();\n\t\t\t\tthis._worldTransform = worldTransform.clone();\n\t\t\t\tthis._aabb = new BoundingBox(new Vec3(), this.halfExtents);\n\t\t}\n\t\tset worldTransform(value) {\n\t\t\t\tthis._worldTransform.copy(value);\n\t\t\t\tthis._modelTransform.copy(value).invert();\n\t\t}\n\t\tget worldTransform() {\n\t\t\t\treturn this._worldTransform;\n\t\t}\n\t\tintersectsRay(ray, point) {\n\t\t\t\tthis._modelTransform.transformPoint(ray.origin, tmpRay.origin);\n\t\t\t\tthis._modelTransform.transformVector(ray.direction, tmpRay.direction);\n\t\t\t\tif (point) {\n\t\t\t\t\t\tconst result = this._aabb._intersectsRay(tmpRay, point);\n\t\t\t\t\t\ttmpMat4$1.copy(this._modelTransform).invert().transformPoint(point, point);\n\t\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t\treturn this._aabb._fastIntersectsRay(tmpRay);\n\t\t}\n\t\tcontainsPoint(point) {\n\t\t\t\tthis._modelTransform.transformPoint(point, tmpVec3$2);\n\t\t\t\treturn this._aabb.containsPoint(tmpVec3$2);\n\t\t}\n\t\tintersectsBoundingSphere(sphere) {\n\t\t\t\tthis._modelTransform.transformPoint(sphere.center, tmpSphere.center);\n\t\t\t\ttmpSphere.radius = sphere.radius;\n\t\t\t\tif (this._aabb.intersectsBoundingSphere(tmpSphere)) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t}\n}\n\nconst e1 = new Vec3();\nconst e2 = new Vec3();\nconst h = new Vec3();\nconst s = new Vec3();\nconst q$3 = new Vec3();\nconst EPSILON$1 = 1e-6;\nclass Tri {\n\t\tconstructor(v0 = Vec3.ZERO, v1 = Vec3.ZERO, v2 = Vec3.ZERO){\n\t\t\t\tthis.v0 = new Vec3();\n\t\t\t\tthis.v1 = new Vec3();\n\t\t\t\tthis.v2 = new Vec3();\n\t\t\t\tthis.set(v0, v1, v2);\n\t\t}\n\t\tset(v0, v1, v2) {\n\t\t\t\tthis.v0.copy(v0);\n\t\t\t\tthis.v1.copy(v1);\n\t\t\t\tthis.v2.copy(v2);\n\t\t\t\treturn this;\n\t\t}\n\t\tintersectsRay(ray, point) {\n\t\t\t\te1.sub2(this.v1, this.v0);\n\t\t\t\te2.sub2(this.v2, this.v0);\n\t\t\t\th.cross(ray.direction, e2);\n\t\t\t\tconst a = e1.dot(h);\n\t\t\t\tif (a > -EPSILON$1 && a < EPSILON$1) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tconst f = 1 / a;\n\t\t\t\ts.sub2(ray.origin, this.v0);\n\t\t\t\tconst u = f * s.dot(h);\n\t\t\t\tif (u < 0 || u > 1) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tq$3.cross(s, e1);\n\t\t\t\tconst v = f * ray.direction.dot(q$3);\n\t\t\t\tif (v < 0 || u + v > 1) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tconst t = f * e2.dot(q$3);\n\t\t\t\tif (t > EPSILON$1) {\n\t\t\t\t\t\tif (point instanceof Vec3) {\n\t\t\t\t\t\t\t\tpoint.copy(ray.direction).mulScalar(t).add(ray.origin);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t}\n\t\ttoString() {\n\t\t\t\treturn `[${this.v0.toString()}, ${this.v1.toString()}, ${this.v2.toString()}]`;\n\t\t}\n}\n\nconst ADDRESS_REPEAT = 0;\nconst ADDRESS_CLAMP_TO_EDGE = 1;\nconst ADDRESS_MIRRORED_REPEAT = 2;\nconst BLENDMODE_ZERO = 0;\nconst BLENDMODE_ONE = 1;\nconst BLENDMODE_SRC_COLOR = 2;\nconst BLENDMODE_ONE_MINUS_SRC_COLOR = 3;\nconst BLENDMODE_DST_COLOR = 4;\nconst BLENDMODE_ONE_MINUS_DST_COLOR = 5;\nconst BLENDMODE_SRC_ALPHA = 6;\nconst BLENDMODE_SRC_ALPHA_SATURATE = 7;\nconst BLENDMODE_ONE_MINUS_SRC_ALPHA = 8;\nconst BLENDMODE_DST_ALPHA = 9;\nconst BLENDMODE_ONE_MINUS_DST_ALPHA = 10;\nconst BLENDMODE_CONSTANT = 11;\nconst BLENDMODE_ONE_MINUS_CONSTANT = 12;\nconst BLENDEQUATION_ADD = 0;\nconst BLENDEQUATION_SUBTRACT = 1;\nconst BLENDEQUATION_REVERSE_SUBTRACT = 2;\nconst BLENDEQUATION_MIN = 3;\nconst BLENDEQUATION_MAX = 4;\nconst BUFFERUSAGE_READ = 0x0001;\nconst BUFFERUSAGE_WRITE = 0x0002;\nconst BUFFERUSAGE_COPY_SRC = 0x0004;\nconst BUFFERUSAGE_COPY_DST = 0x0008;\nconst BUFFERUSAGE_INDEX = 0x0010;\nconst BUFFERUSAGE_VERTEX = 0x0020;\nconst BUFFERUSAGE_UNIFORM = 0x0040;\nconst BUFFERUSAGE_STORAGE = 0x0080;\nconst BUFFERUSAGE_INDIRECT = 0x0100;\nconst BUFFER_STATIC = 0;\nconst BUFFER_DYNAMIC = 1;\nconst BUFFER_STREAM = 2;\nconst BUFFER_GPUDYNAMIC = 3;\nconst CLEARFLAG_COLOR = 1;\nconst CLEARFLAG_DEPTH = 2;\nconst CLEARFLAG_STENCIL = 4;\nconst CUBEFACE_POSX = 0;\nconst CUBEFACE_NEGX = 1;\nconst CUBEFACE_POSY = 2;\nconst CUBEFACE_NEGY = 3;\nconst CUBEFACE_POSZ = 4;\nconst CUBEFACE_NEGZ = 5;\nconst CULLFACE_NONE = 0;\nconst CULLFACE_BACK = 1;\nconst CULLFACE_FRONT = 2;\nconst CULLFACE_FRONTANDBACK = 3;\nconst FILTER_NEAREST = 0;\nconst FILTER_LINEAR = 1;\nconst FILTER_NEAREST_MIPMAP_NEAREST = 2;\nconst FILTER_NEAREST_MIPMAP_LINEAR = 3;\nconst FILTER_LINEAR_MIPMAP_NEAREST = 4;\nconst FILTER_LINEAR_MIPMAP_LINEAR = 5;\nconst FUNC_NEVER = 0;\nconst FUNC_LESS = 1;\nconst FUNC_EQUAL = 2;\nconst FUNC_LESSEQUAL = 3;\nconst FUNC_GREATER = 4;\nconst FUNC_NOTEQUAL = 5;\nconst FUNC_GREATEREQUAL = 6;\nconst FUNC_ALWAYS = 7;\nconst INDEXFORMAT_UINT8 = 0;\nconst INDEXFORMAT_UINT16 = 1;\nconst INDEXFORMAT_UINT32 = 2;\nconst indexFormatByteSize = [\n\t\t1,\n\t\t2,\n\t\t4\n];\nconst PIXELFORMAT_A8 = 0;\nconst PIXELFORMAT_L8 = 1;\nconst PIXELFORMAT_LA8 = 2;\nconst PIXELFORMAT_RGB565 = 3;\nconst PIXELFORMAT_RGBA5551 = 4;\nconst PIXELFORMAT_RGBA4 = 5;\nconst PIXELFORMAT_RGB8 = 6;\nconst PIXELFORMAT_RGBA8 = 7;\nconst PIXELFORMAT_DXT1 = 8;\nconst PIXELFORMAT_DXT3 = 9;\nconst PIXELFORMAT_DXT5 = 10;\nconst PIXELFORMAT_RGB16F = 11;\nconst PIXELFORMAT_RGBA16F = 12;\nconst PIXELFORMAT_RGB32F = 13;\nconst PIXELFORMAT_RGBA32F = 14;\nconst PIXELFORMAT_R32F = 15;\nconst PIXELFORMAT_DEPTH = 16;\nconst PIXELFORMAT_DEPTHSTENCIL = 17;\nconst PIXELFORMAT_111110F = 18;\nconst PIXELFORMAT_SRGB8 = 19;\nconst PIXELFORMAT_SRGBA8 = 20;\nconst PIXELFORMAT_ETC1 = 21;\nconst PIXELFORMAT_ETC2_RGB = 22;\nconst PIXELFORMAT_ETC2_RGBA = 23;\nconst PIXELFORMAT_PVRTC_2BPP_RGB_1 = 24;\nconst PIXELFORMAT_PVRTC_2BPP_RGBA_1 = 25;\nconst PIXELFORMAT_PVRTC_4BPP_RGB_1 = 26;\nconst PIXELFORMAT_PVRTC_4BPP_RGBA_1 = 27;\nconst PIXELFORMAT_ASTC_4x4 = 28;\nconst PIXELFORMAT_ATC_RGB = 29;\nconst PIXELFORMAT_ATC_RGBA = 30;\nconst PIXELFORMAT_BGRA8 = 31;\nconst PIXELFORMAT_R8I = 32;\nconst PIXELFORMAT_R8U = 33;\nconst PIXELFORMAT_R16I = 34;\nconst PIXELFORMAT_R16U = 35;\nconst PIXELFORMAT_R32I = 36;\nconst PIXELFORMAT_R32U = 37;\nconst PIXELFORMAT_RG8I = 38;\nconst PIXELFORMAT_RG8U = 39;\nconst PIXELFORMAT_RG16I = 40;\nconst PIXELFORMAT_RG16U = 41;\nconst PIXELFORMAT_RG32I = 42;\nconst PIXELFORMAT_RG32U = 43;\nconst PIXELFORMAT_RGBA8I = 44;\nconst PIXELFORMAT_RGBA8U = 45;\nconst PIXELFORMAT_RGBA16I = 46;\nconst PIXELFORMAT_RGBA16U = 47;\nconst PIXELFORMAT_RGBA32I = 48;\nconst PIXELFORMAT_RGBA32U = 49;\nconst PIXELFORMAT_R16F = 50;\nconst PIXELFORMAT_RG16F = 51;\nconst PIXELFORMAT_R8 = 52;\nconst PIXELFORMAT_RG8 = 53;\nconst PIXELFORMAT_DXT1_SRGB = 54;\nconst PIXELFORMAT_DXT3_SRGBA = 55;\nconst PIXELFORMAT_DXT5_SRGBA = 56;\nconst PIXELFORMAT_ETC2_SRGB = 61;\nconst PIXELFORMAT_ETC2_SRGBA = 62;\nconst PIXELFORMAT_ASTC_4x4_SRGB = 63;\nconst PIXELFORMAT_SBGRA8 = 64;\nconst PIXELFORMAT_BC6F = 65;\nconst PIXELFORMAT_BC6UF = 66;\nconst PIXELFORMAT_BC7 = 67;\nconst PIXELFORMAT_BC7_SRGBA = 68;\nconst PIXELFORMAT_DEPTH16 = 69;\nconst pixelFormatInfo = new Map([\n\t\t[\n\t\t\t\tPIXELFORMAT_A8,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'A8',\n\t\t\t\t\t\tsize: 1,\n\t\t\t\t\t\tldr: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_R8,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'R8',\n\t\t\t\t\t\tsize: 1,\n\t\t\t\t\t\tldr: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_L8,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'L8',\n\t\t\t\t\t\tsize: 1,\n\t\t\t\t\t\tldr: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_LA8,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'LA8',\n\t\t\t\t\t\tsize: 2,\n\t\t\t\t\t\tldr: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_RG8,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'RG8',\n\t\t\t\t\t\tsize: 2,\n\t\t\t\t\t\tldr: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_RGB565,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'RGB565',\n\t\t\t\t\t\tsize: 2,\n\t\t\t\t\t\tldr: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_RGBA5551,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'RGBA5551',\n\t\t\t\t\t\tsize: 2,\n\t\t\t\t\t\tldr: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_RGBA4,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'RGBA4',\n\t\t\t\t\t\tsize: 2,\n\t\t\t\t\t\tldr: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_RGB8,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'RGB8',\n\t\t\t\t\t\tsize: 4,\n\t\t\t\t\t\tldr: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_RGBA8,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'RGBA8',\n\t\t\t\t\t\tsize: 4,\n\t\t\t\t\t\tldr: true,\n\t\t\t\t\t\tsrgbFormat: PIXELFORMAT_SRGBA8\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_R16F,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'R16F',\n\t\t\t\t\t\tsize: 2\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_RG16F,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'RG16F',\n\t\t\t\t\t\tsize: 4\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_RGB16F,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'RGB16F',\n\t\t\t\t\t\tsize: 8\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_RGBA16F,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'RGBA16F',\n\t\t\t\t\t\tsize: 8\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_RGB32F,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'RGB32F',\n\t\t\t\t\t\tsize: 16\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_RGBA32F,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'RGBA32F',\n\t\t\t\t\t\tsize: 16\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_R32F,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'R32F',\n\t\t\t\t\t\tsize: 4\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_DEPTH,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'DEPTH',\n\t\t\t\t\t\tsize: 4\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_DEPTH16,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'DEPTH16',\n\t\t\t\t\t\tsize: 2\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_DEPTHSTENCIL,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'DEPTHSTENCIL',\n\t\t\t\t\t\tsize: 4\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_111110F,\n\t\t\t\t{\n\t\t\t\t\t\tname: '111110F',\n\t\t\t\t\t\tsize: 4\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_SRGB8,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'SRGB8',\n\t\t\t\t\t\tsize: 4,\n\t\t\t\t\t\tldr: true,\n\t\t\t\t\t\tsrgb: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_SRGBA8,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'SRGBA8',\n\t\t\t\t\t\tsize: 4,\n\t\t\t\t\t\tldr: true,\n\t\t\t\t\t\tsrgb: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_BGRA8,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'BGRA8',\n\t\t\t\t\t\tsize: 4,\n\t\t\t\t\t\tldr: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_SBGRA8,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'SBGRA8',\n\t\t\t\t\t\tsize: 4,\n\t\t\t\t\t\tldr: true,\n\t\t\t\t\t\tsrgb: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_DXT1,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'DXT1',\n\t\t\t\t\t\tblockSize: 8,\n\t\t\t\t\t\tldr: true,\n\t\t\t\t\t\tsrgbFormat: PIXELFORMAT_DXT1_SRGB\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_DXT3,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'DXT3',\n\t\t\t\t\t\tblockSize: 16,\n\t\t\t\t\t\tldr: true,\n\t\t\t\t\t\tsrgbFormat: PIXELFORMAT_DXT3_SRGBA\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_DXT5,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'DXT5',\n\t\t\t\t\t\tblockSize: 16,\n\t\t\t\t\t\tldr: true,\n\t\t\t\t\t\tsrgbFormat: PIXELFORMAT_DXT5_SRGBA\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_ETC1,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'ETC1',\n\t\t\t\t\t\tblockSize: 8,\n\t\t\t\t\t\tldr: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_ETC2_RGB,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'ETC2_RGB',\n\t\t\t\t\t\tblockSize: 8,\n\t\t\t\t\t\tldr: true,\n\t\t\t\t\t\tsrgbFormat: PIXELFORMAT_ETC2_SRGB\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_ETC2_RGBA,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'ETC2_RGBA',\n\t\t\t\t\t\tblockSize: 16,\n\t\t\t\t\t\tldr: true,\n\t\t\t\t\t\tsrgbFormat: PIXELFORMAT_ETC2_SRGBA\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_PVRTC_2BPP_RGB_1,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'PVRTC_2BPP_RGB_1',\n\t\t\t\t\t\tldr: true,\n\t\t\t\t\t\tblockSize: 8\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_PVRTC_2BPP_RGBA_1,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'PVRTC_2BPP_RGBA_1',\n\t\t\t\t\t\tldr: true,\n\t\t\t\t\t\tblockSize: 8\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_PVRTC_4BPP_RGB_1,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'PVRTC_4BPP_RGB_1',\n\t\t\t\t\t\tldr: true,\n\t\t\t\t\t\tblockSize: 8\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_PVRTC_4BPP_RGBA_1,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'PVRTC_4BPP_RGBA_1',\n\t\t\t\t\t\tldr: true,\n\t\t\t\t\t\tblockSize: 8\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_ASTC_4x4,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'ASTC_4x4',\n\t\t\t\t\t\tblockSize: 16,\n\t\t\t\t\t\tldr: true,\n\t\t\t\t\t\tsrgbFormat: PIXELFORMAT_ASTC_4x4_SRGB\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_ATC_RGB,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'ATC_RGB',\n\t\t\t\t\t\tblockSize: 8,\n\t\t\t\t\t\tldr: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_ATC_RGBA,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'ATC_RGBA',\n\t\t\t\t\t\tblockSize: 16,\n\t\t\t\t\t\tldr: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_BC6F,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'BC6H_RGBF',\n\t\t\t\t\t\tblockSize: 16\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_BC6UF,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'BC6H_RGBUF',\n\t\t\t\t\t\tblockSize: 16\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_BC7,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'BC7_RGBA',\n\t\t\t\t\t\tblockSize: 16,\n\t\t\t\t\t\tldr: true,\n\t\t\t\t\t\tsrgbFormat: PIXELFORMAT_BC7_SRGBA\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_DXT1_SRGB,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'DXT1_SRGB',\n\t\t\t\t\t\tblockSize: 8,\n\t\t\t\t\t\tldr: true,\n\t\t\t\t\t\tsrgb: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_DXT3_SRGBA,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'DXT3_SRGBA',\n\t\t\t\t\t\tblockSize: 16,\n\t\t\t\t\t\tldr: true,\n\t\t\t\t\t\tsrgb: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_DXT5_SRGBA,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'DXT5_SRGBA',\n\t\t\t\t\t\tblockSize: 16,\n\t\t\t\t\t\tldr: true,\n\t\t\t\t\t\tsrgb: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_ETC2_SRGB,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'ETC2_SRGB',\n\t\t\t\t\t\tblockSize: 8,\n\t\t\t\t\t\tldr: true,\n\t\t\t\t\t\tsrgb: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_ETC2_SRGBA,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'ETC2_SRGBA',\n\t\t\t\t\t\tblockSize: 16,\n\t\t\t\t\t\tldr: true,\n\t\t\t\t\t\tsrgb: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_ASTC_4x4_SRGB,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'ASTC_4x4_SRGB',\n\t\t\t\t\t\tblockSize: 16,\n\t\t\t\t\t\tldr: true,\n\t\t\t\t\t\tsrgb: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_BC7_SRGBA,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'BC7_SRGBA',\n\t\t\t\t\t\tblockSize: 16,\n\t\t\t\t\t\tldr: true,\n\t\t\t\t\t\tsrgb: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_R8I,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'R8I',\n\t\t\t\t\t\tsize: 1,\n\t\t\t\t\t\tisInt: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_R8U,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'R8U',\n\t\t\t\t\t\tsize: 1,\n\t\t\t\t\t\tisInt: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_R16I,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'R16I',\n\t\t\t\t\t\tsize: 2,\n\t\t\t\t\t\tisInt: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_R16U,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'R16U',\n\t\t\t\t\t\tsize: 2,\n\t\t\t\t\t\tisInt: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_R32I,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'R32I',\n\t\t\t\t\t\tsize: 4,\n\t\t\t\t\t\tisInt: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_R32U,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'R32U',\n\t\t\t\t\t\tsize: 4,\n\t\t\t\t\t\tisInt: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_RG8I,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'RG8I',\n\t\t\t\t\t\tsize: 2,\n\t\t\t\t\t\tisInt: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_RG8U,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'RG8U',\n\t\t\t\t\t\tsize: 2,\n\t\t\t\t\t\tisInt: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_RG16I,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'RG16I',\n\t\t\t\t\t\tsize: 4,\n\t\t\t\t\t\tisInt: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_RG16U,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'RG16U',\n\t\t\t\t\t\tsize: 4,\n\t\t\t\t\t\tisInt: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_RG32I,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'RG32I',\n\t\t\t\t\t\tsize: 8,\n\t\t\t\t\t\tisInt: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_RG32U,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'RG32U',\n\t\t\t\t\t\tsize: 8,\n\t\t\t\t\t\tisInt: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_RGBA8I,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'RGBA8I',\n\t\t\t\t\t\tsize: 4,\n\t\t\t\t\t\tisInt: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_RGBA8U,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'RGBA8U',\n\t\t\t\t\t\tsize: 4,\n\t\t\t\t\t\tisInt: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_RGBA16I,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'RGBA16I',\n\t\t\t\t\t\tsize: 8,\n\t\t\t\t\t\tisInt: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_RGBA16U,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'RGBA16U',\n\t\t\t\t\t\tsize: 8,\n\t\t\t\t\t\tisInt: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_RGBA32I,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'RGBA32I',\n\t\t\t\t\t\tsize: 16,\n\t\t\t\t\t\tisInt: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_RGBA32U,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'RGBA32U',\n\t\t\t\t\t\tsize: 16,\n\t\t\t\t\t\tisInt: true\n\t\t\t\t}\n\t\t]\n]);\nconst isCompressedPixelFormat = (format)=>{\n\t\treturn pixelFormatInfo.get(format)?.blockSize !== undefined;\n};\nconst isSrgbPixelFormat = (format)=>{\n\t\treturn pixelFormatInfo.get(format)?.srgb === true;\n};\nconst isIntegerPixelFormat = (format)=>{\n\t\treturn pixelFormatInfo.get(format)?.isInt === true;\n};\nconst pixelFormatLinearToGamma = (format)=>{\n\t\treturn pixelFormatInfo.get(format)?.srgbFormat || format;\n};\nconst pixelFormatGammaToLinear = (format)=>{\n\t\tfor (const [key, value] of pixelFormatInfo){\n\t\t\t\tif (value.srgbFormat === format) {\n\t\t\t\t\t\treturn key;\n\t\t\t\t}\n\t\t}\n\t\treturn format;\n};\nconst requiresManualGamma = (format)=>{\n\t\tconst info = pixelFormatInfo.get(format);\n\t\treturn !!(info?.ldr && !info?.srgb);\n};\nconst getPixelFormatArrayType = (format)=>{\n\t\tswitch(format){\n\t\t\t\tcase PIXELFORMAT_R32F:\n\t\t\t\tcase PIXELFORMAT_RGB32F:\n\t\t\t\tcase PIXELFORMAT_RGBA32F:\n\t\t\t\t\t\treturn Float32Array;\n\t\t\t\tcase PIXELFORMAT_R32I:\n\t\t\t\tcase PIXELFORMAT_RG32I:\n\t\t\t\tcase PIXELFORMAT_RGBA32I:\n\t\t\t\t\t\treturn Int32Array;\n\t\t\t\tcase PIXELFORMAT_R32U:\n\t\t\t\tcase PIXELFORMAT_RG32U:\n\t\t\t\tcase PIXELFORMAT_RGBA32U:\n\t\t\t\t\t\treturn Uint32Array;\n\t\t\t\tcase PIXELFORMAT_R16I:\n\t\t\t\tcase PIXELFORMAT_RG16I:\n\t\t\t\tcase PIXELFORMAT_RGBA16I:\n\t\t\t\t\t\treturn Int16Array;\n\t\t\t\tcase PIXELFORMAT_RG8:\n\t\t\t\tcase PIXELFORMAT_R16U:\n\t\t\t\tcase PIXELFORMAT_RG16U:\n\t\t\t\tcase PIXELFORMAT_RGBA16U:\n\t\t\t\tcase PIXELFORMAT_RGB565:\n\t\t\t\tcase PIXELFORMAT_RGBA5551:\n\t\t\t\tcase PIXELFORMAT_RGBA4:\n\t\t\t\tcase PIXELFORMAT_R16F:\n\t\t\t\tcase PIXELFORMAT_RG16F:\n\t\t\t\tcase PIXELFORMAT_RGB16F:\n\t\t\t\tcase PIXELFORMAT_RGBA16F:\n\t\t\t\t\t\treturn Uint16Array;\n\t\t\t\tcase PIXELFORMAT_R8I:\n\t\t\t\tcase PIXELFORMAT_RG8I:\n\t\t\t\tcase PIXELFORMAT_RGBA8I:\n\t\t\t\t\t\treturn Int8Array;\n\t\t\t\tdefault:\n\t\t\t\t\t\treturn Uint8Array;\n\t\t}\n};\nconst PRIMITIVE_POINTS = 0;\nconst PRIMITIVE_LINES = 1;\nconst PRIMITIVE_LINELOOP = 2;\nconst PRIMITIVE_LINESTRIP = 3;\nconst PRIMITIVE_TRIANGLES = 4;\nconst PRIMITIVE_TRISTRIP = 5;\nconst PRIMITIVE_TRIFAN = 6;\nconst SEMANTIC_POSITION = 'POSITION';\nconst SEMANTIC_NORMAL = 'NORMAL';\nconst SEMANTIC_TANGENT = 'TANGENT';\nconst SEMANTIC_BLENDWEIGHT = 'BLENDWEIGHT';\nconst SEMANTIC_BLENDINDICES = 'BLENDINDICES';\nconst SEMANTIC_COLOR = 'COLOR';\nconst SEMANTIC_TEXCOORD = 'TEXCOORD';\nconst SEMANTIC_TEXCOORD0 = 'TEXCOORD0';\nconst SEMANTIC_TEXCOORD1 = 'TEXCOORD1';\nconst SEMANTIC_TEXCOORD2 = 'TEXCOORD2';\nconst SEMANTIC_TEXCOORD3 = 'TEXCOORD3';\nconst SEMANTIC_TEXCOORD4 = 'TEXCOORD4';\nconst SEMANTIC_TEXCOORD5 = 'TEXCOORD5';\nconst SEMANTIC_TEXCOORD6 = 'TEXCOORD6';\nconst SEMANTIC_TEXCOORD7 = 'TEXCOORD7';\nconst SEMANTIC_ATTR0 = 'ATTR0';\nconst SEMANTIC_ATTR1 = 'ATTR1';\nconst SEMANTIC_ATTR2 = 'ATTR2';\nconst SEMANTIC_ATTR3 = 'ATTR3';\nconst SEMANTIC_ATTR4 = 'ATTR4';\nconst SEMANTIC_ATTR5 = 'ATTR5';\nconst SEMANTIC_ATTR6 = 'ATTR6';\nconst SEMANTIC_ATTR7 = 'ATTR7';\nconst SEMANTIC_ATTR8 = 'ATTR8';\nconst SEMANTIC_ATTR9 = 'ATTR9';\nconst SEMANTIC_ATTR10 = 'ATTR10';\nconst SEMANTIC_ATTR11 = 'ATTR11';\nconst SEMANTIC_ATTR12 = 'ATTR12';\nconst SEMANTIC_ATTR13 = 'ATTR13';\nconst SEMANTIC_ATTR14 = 'ATTR14';\nconst SEMANTIC_ATTR15 = 'ATTR15';\nconst SHADERTAG_MATERIAL = 1;\nconst STENCILOP_KEEP = 0;\nconst STENCILOP_ZERO = 1;\nconst STENCILOP_REPLACE = 2;\nconst STENCILOP_INCREMENT = 3;\nconst STENCILOP_INCREMENTWRAP = 4;\nconst STENCILOP_DECREMENT = 5;\nconst STENCILOP_DECREMENTWRAP = 6;\nconst STENCILOP_INVERT = 7;\nconst TEXTURELOCK_NONE = 0;\nconst TEXTURELOCK_READ = 1;\nconst TEXTURELOCK_WRITE = 2;\nconst TEXTURETYPE_DEFAULT = 'default';\nconst TEXTURETYPE_RGBM = 'rgbm';\nconst TEXTURETYPE_RGBE = 'rgbe';\nconst TEXTURETYPE_RGBP = 'rgbp';\nconst TEXTURETYPE_SWIZZLEGGGR = 'swizzleGGGR';\nconst TEXHINT_NONE = 0;\nconst TEXHINT_SHADOWMAP = 1;\nconst TEXHINT_ASSET = 2;\nconst TEXHINT_LIGHTMAP = 3;\nconst TEXTUREDIMENSION_1D = '1d';\nconst TEXTUREDIMENSION_2D = '2d';\nconst TEXTUREDIMENSION_2D_ARRAY = '2d-array';\nconst TEXTUREDIMENSION_CUBE = 'cube';\nconst TEXTUREDIMENSION_CUBE_ARRAY = 'cube-array';\nconst TEXTUREDIMENSION_3D = '3d';\nconst SAMPLETYPE_FLOAT = 0;\nconst SAMPLETYPE_UNFILTERABLE_FLOAT = 1;\nconst SAMPLETYPE_DEPTH = 2;\nconst SAMPLETYPE_INT = 3;\nconst SAMPLETYPE_UINT = 4;\nconst TEXTUREPROJECTION_NONE = 'none';\nconst TEXTUREPROJECTION_CUBE = 'cube';\nconst TEXTUREPROJECTION_EQUIRECT = 'equirect';\nconst TEXTUREPROJECTION_OCTAHEDRAL = 'octahedral';\nconst SHADERLANGUAGE_GLSL = 'glsl';\nconst SHADERLANGUAGE_WGSL = 'wgsl';\nconst TYPE_INT8 = 0;\nconst TYPE_UINT8 = 1;\nconst TYPE_INT16 = 2;\nconst TYPE_UINT16 = 3;\nconst TYPE_INT32 = 4;\nconst TYPE_UINT32 = 5;\nconst TYPE_FLOAT32 = 6;\nconst TYPE_FLOAT16 = 7;\nconst UNIFORMTYPE_BOOL = 0;\nconst UNIFORMTYPE_INT = 1;\nconst UNIFORMTYPE_FLOAT = 2;\nconst UNIFORMTYPE_VEC2 = 3;\nconst UNIFORMTYPE_VEC3 = 4;\nconst UNIFORMTYPE_VEC4 = 5;\nconst UNIFORMTYPE_IVEC2 = 6;\nconst UNIFORMTYPE_IVEC3 = 7;\nconst UNIFORMTYPE_IVEC4 = 8;\nconst UNIFORMTYPE_BVEC2 = 9;\nconst UNIFORMTYPE_BVEC3 = 10;\nconst UNIFORMTYPE_BVEC4 = 11;\nconst UNIFORMTYPE_MAT2 = 12;\nconst UNIFORMTYPE_MAT3 = 13;\nconst UNIFORMTYPE_MAT4 = 14;\nconst UNIFORMTYPE_TEXTURE2D = 15;\nconst UNIFORMTYPE_TEXTURECUBE = 16;\nconst UNIFORMTYPE_FLOATARRAY = 17;\nconst UNIFORMTYPE_TEXTURE2D_SHADOW = 18;\nconst UNIFORMTYPE_TEXTURECUBE_SHADOW = 19;\nconst UNIFORMTYPE_TEXTURE3D = 20;\nconst UNIFORMTYPE_VEC2ARRAY = 21;\nconst UNIFORMTYPE_VEC3ARRAY = 22;\nconst UNIFORMTYPE_VEC4ARRAY = 23;\nconst UNIFORMTYPE_MAT4ARRAY = 24;\nconst UNIFORMTYPE_TEXTURE2D_ARRAY = 25;\nconst UNIFORMTYPE_UINT = 26;\nconst UNIFORMTYPE_UVEC2 = 27;\nconst UNIFORMTYPE_UVEC3 = 28;\nconst UNIFORMTYPE_UVEC4 = 29;\nconst UNIFORMTYPE_INTARRAY = 30;\nconst UNIFORMTYPE_UINTARRAY = 31;\nconst UNIFORMTYPE_BOOLARRAY = 32;\nconst UNIFORMTYPE_IVEC2ARRAY = 33;\nconst UNIFORMTYPE_UVEC2ARRAY = 34;\nconst UNIFORMTYPE_BVEC2ARRAY = 35;\nconst UNIFORMTYPE_IVEC3ARRAY = 36;\nconst UNIFORMTYPE_UVEC3ARRAY = 37;\nconst UNIFORMTYPE_BVEC3ARRAY = 38;\nconst UNIFORMTYPE_IVEC4ARRAY = 39;\nconst UNIFORMTYPE_UVEC4ARRAY = 40;\nconst UNIFORMTYPE_BVEC4ARRAY = 41;\nconst UNIFORMTYPE_ITEXTURE2D = 42;\nconst UNIFORMTYPE_UTEXTURE2D = 43;\nconst UNIFORMTYPE_ITEXTURECUBE = 44;\nconst UNIFORMTYPE_UTEXTURECUBE = 45;\nconst UNIFORMTYPE_ITEXTURE3D = 46;\nconst UNIFORMTYPE_UTEXTURE3D = 47;\nconst UNIFORMTYPE_ITEXTURE2D_ARRAY = 48;\nconst UNIFORMTYPE_UTEXTURE2D_ARRAY = 49;\nconst uniformTypeToName = [\n\t\t'bool',\n\t\t'int',\n\t\t'float',\n\t\t'vec2',\n\t\t'vec3',\n\t\t'vec4',\n\t\t'ivec2',\n\t\t'ivec3',\n\t\t'ivec4',\n\t\t'bvec2',\n\t\t'bvec3',\n\t\t'bvec4',\n\t\t'mat2',\n\t\t'mat3',\n\t\t'mat4',\n\t\t'sampler2D',\n\t\t'samplerCube',\n\t\t'',\n\t\t'sampler2DShadow',\n\t\t'samplerCubeShadow',\n\t\t'sampler3D',\n\t\t'',\n\t\t'',\n\t\t'',\n\t\t'',\n\t\t'sampler2DArray',\n\t\t'uint',\n\t\t'uvec2',\n\t\t'uvec3',\n\t\t'uvec4',\n\t\t'',\n\t\t'',\n\t\t'',\n\t\t'',\n\t\t'',\n\t\t'',\n\t\t'',\n\t\t'',\n\t\t'',\n\t\t'',\n\t\t'',\n\t\t'',\n\t\t'isampler2D',\n\t\t'usampler2D',\n\t\t'isamplerCube',\n\t\t'usamplerCube',\n\t\t'isampler3D',\n\t\t'usampler3D',\n\t\t'isampler2DArray',\n\t\t'usampler2DArray'\n];\nconst uniformTypeToNameWGSL = [\n\t\t[\n\t\t\t\t'bool'\n\t\t],\n\t\t[\n\t\t\t\t'i32'\n\t\t],\n\t\t[\n\t\t\t\t'f32'\n\t\t],\n\t\t[\n\t\t\t\t'vec2f',\n\t\t\t\t'vec2<f32>'\n\t\t],\n\t\t[\n\t\t\t\t'vec3f',\n\t\t\t\t'vec3<f32>'\n\t\t],\n\t\t[\n\t\t\t\t'vec4f',\n\t\t\t\t'vec4<f32>'\n\t\t],\n\t\t[\n\t\t\t\t'vec2i',\n\t\t\t\t'vec2<i32>'\n\t\t],\n\t\t[\n\t\t\t\t'vec3i',\n\t\t\t\t'vec3<i32>'\n\t\t],\n\t\t[\n\t\t\t\t'vec4i',\n\t\t\t\t'vec4<i32>'\n\t\t],\n\t\t[\n\t\t\t\t'vec2<bool>'\n\t\t],\n\t\t[\n\t\t\t\t'vec3<bool>'\n\t\t],\n\t\t[\n\t\t\t\t'vec4<bool>'\n\t\t],\n\t\t[\n\t\t\t\t'mat2x2f',\n\t\t\t\t'mat2x2<f32>'\n\t\t],\n\t\t[\n\t\t\t\t'mat3x3f',\n\t\t\t\t'mat3x3<f32>'\n\t\t],\n\t\t[\n\t\t\t\t'mat4x4f',\n\t\t\t\t'mat4x4<f32>'\n\t\t],\n\t\t[\n\t\t\t\t'texture_2d<f32>'\n\t\t],\n\t\t[\n\t\t\t\t'texture_cube<f32>'\n\t\t],\n\t\t[\n\t\t\t\t'array<f32>'\n\t\t],\n\t\t[\n\t\t\t\t'texture_depth_2d'\n\t\t],\n\t\t[\n\t\t\t\t'texture_depth_cube'\n\t\t],\n\t\t[\n\t\t\t\t'texture_3d<f32>'\n\t\t],\n\t\t[\n\t\t\t\t'array<vec2<f32>>'\n\t\t],\n\t\t[\n\t\t\t\t'array<vec3<f32>>'\n\t\t],\n\t\t[\n\t\t\t\t'array<vec4<f32>>'\n\t\t],\n\t\t[\n\t\t\t\t'array<mat4x4<f32>>'\n\t\t],\n\t\t[\n\t\t\t\t'texture_2d_array<f32>'\n\t\t],\n\t\t[\n\t\t\t\t'u32'\n\t\t],\n\t\t[\n\t\t\t\t'vec2u',\n\t\t\t\t'vec2<u32>'\n\t\t],\n\t\t[\n\t\t\t\t'vec3u',\n\t\t\t\t'vec3<u32>'\n\t\t],\n\t\t[\n\t\t\t\t'vec4u',\n\t\t\t\t'vec4<u32>'\n\t\t],\n\t\t[\n\t\t\t\t'array<i32>'\n\t\t],\n\t\t[\n\t\t\t\t'array<u32>'\n\t\t],\n\t\t[\n\t\t\t\t'array<bool>'\n\t\t],\n\t\t[\n\t\t\t\t'array<vec2i>',\n\t\t\t\t'array<vec2<i32>>'\n\t\t],\n\t\t[\n\t\t\t\t'array<vec2u>',\n\t\t\t\t'array<vec2<u32>>'\n\t\t],\n\t\t[\n\t\t\t\t'array<vec2b>',\n\t\t\t\t'array<vec2<bool>>'\n\t\t],\n\t\t[\n\t\t\t\t'array<vec3i>',\n\t\t\t\t'array<vec3<i32>>'\n\t\t],\n\t\t[\n\t\t\t\t'array<vec3u>',\n\t\t\t\t'array<vec3<u32>>'\n\t\t],\n\t\t[\n\t\t\t\t'array<vec3b>',\n\t\t\t\t'array<vec3<bool>>'\n\t\t],\n\t\t[\n\t\t\t\t'array<vec4i>',\n\t\t\t\t'array<vec4<i32>>'\n\t\t],\n\t\t[\n\t\t\t\t'array<vec4u>',\n\t\t\t\t'array<vec4<u32>>'\n\t\t],\n\t\t[\n\t\t\t\t'array<vec4b>',\n\t\t\t\t'array<vec4<bool>>'\n\t\t],\n\t\t[\n\t\t\t\t'texture_2d<i32>'\n\t\t],\n\t\t[\n\t\t\t\t'texture_2d<u32>'\n\t\t],\n\t\t[\n\t\t\t\t'texture_cube<i32>'\n\t\t],\n\t\t[\n\t\t\t\t'texture_cube<u32>'\n\t\t],\n\t\t[\n\t\t\t\t'texture_3d<i32>'\n\t\t],\n\t\t[\n\t\t\t\t'texture_3d<u32>'\n\t\t],\n\t\t[\n\t\t\t\t'texture_2d_array<i32>'\n\t\t],\n\t\t[\n\t\t\t\t'texture_2d_array<u32>'\n\t\t]\n];\nconst uniformTypeToNameMapWGSL = new Map();\nuniformTypeToNameWGSL.forEach((names, index)=>{\n\t\tnames.forEach((name)=>uniformTypeToNameMapWGSL.set(name, index));\n});\nconst uniformTypeToStorage = new Uint8Array([\n\t\tTYPE_INT32,\n\t\tTYPE_INT32,\n\t\tTYPE_FLOAT32,\n\t\tTYPE_FLOAT32,\n\t\tTYPE_FLOAT32,\n\t\tTYPE_FLOAT32,\n\t\tTYPE_INT32,\n\t\tTYPE_INT32,\n\t\tTYPE_INT32,\n\t\tTYPE_INT32,\n\t\tTYPE_INT32,\n\t\tTYPE_INT32,\n\t\tTYPE_FLOAT32,\n\t\tTYPE_FLOAT32,\n\t\tTYPE_FLOAT32,\n\t\tTYPE_INT32,\n\t\tTYPE_INT32,\n\t\tTYPE_FLOAT32,\n\t\tTYPE_INT32,\n\t\tTYPE_INT32,\n\t\tTYPE_INT32,\n\t\tTYPE_FLOAT32,\n\t\tTYPE_FLOAT32,\n\t\tTYPE_FLOAT32,\n\t\tTYPE_FLOAT32,\n\t\tTYPE_INT32,\n\t\tTYPE_UINT32,\n\t\tTYPE_UINT32,\n\t\tTYPE_UINT32,\n\t\tTYPE_UINT32,\n\t\tTYPE_INT32,\n\t\tTYPE_UINT32,\n\t\tTYPE_INT32,\n\t\tTYPE_INT32,\n\t\tTYPE_UINT32,\n\t\tTYPE_INT32,\n\t\tTYPE_INT32,\n\t\tTYPE_UINT32,\n\t\tTYPE_INT32,\n\t\tTYPE_INT32,\n\t\tTYPE_UINT32,\n\t\tTYPE_INT32,\n\t\tTYPE_INT32,\n\t\tTYPE_UINT32,\n\t\tTYPE_INT32,\n\t\tTYPE_UINT32,\n\t\tTYPE_INT32,\n\t\tTYPE_UINT32,\n\t\tTYPE_INT32,\n\t\tTYPE_UINT32\n]);\nconst DEVICETYPE_WEBGL2 = 'webgl2';\nconst DEVICETYPE_WEBGPU = 'webgpu';\nconst DEVICETYPE_NULL = 'null';\nconst SHADERSTAGE_VERTEX = 1;\nconst SHADERSTAGE_FRAGMENT = 2;\nconst SHADERSTAGE_COMPUTE = 4;\nconst DISPLAYFORMAT_LDR = 'ldr';\nconst DISPLAYFORMAT_LDR_SRGB = 'ldr_srgb';\nconst DISPLAYFORMAT_HDR = 'hdr';\nconst TEXPROPERTY_MIN_FILTER = 1;\nconst TEXPROPERTY_MAG_FILTER = 2;\nconst TEXPROPERTY_ADDRESS_U = 4;\nconst TEXPROPERTY_ADDRESS_V = 8;\nconst TEXPROPERTY_ADDRESS_W = 16;\nconst TEXPROPERTY_COMPARE_ON_READ = 32;\nconst TEXPROPERTY_COMPARE_FUNC = 64;\nconst TEXPROPERTY_ANISOTROPY = 128;\nconst TEXPROPERTY_ALL = 255;\nconst BINDGROUP_VIEW = 0;\nconst BINDGROUP_MESH = 1;\nconst BINDGROUP_MESH_UB = 2;\nconst bindGroupNames = [\n\t\t'view',\n\t\t'mesh',\n\t\t'mesh_ub'\n];\nconst UNIFORM_BUFFER_DEFAULT_SLOT_NAME = 'default';\nconst UNUSED_UNIFORM_NAME = '_unused_float_uniform';\nconst typedArrayTypes = [\n\t\tInt8Array,\n\t\tUint8Array,\n\t\tInt16Array,\n\t\tUint16Array,\n\t\tInt32Array,\n\t\tUint32Array,\n\t\tFloat32Array,\n\t\tUint16Array\n];\nconst typedArrayTypesByteSize = [\n\t\t1,\n\t\t1,\n\t\t2,\n\t\t2,\n\t\t4,\n\t\t4,\n\t\t4,\n\t\t2\n];\nconst vertexTypesNames = [\n\t\t'INT8',\n\t\t'UINT8',\n\t\t'INT16',\n\t\t'UINT16',\n\t\t'INT32',\n\t\t'UINT32',\n\t\t'FLOAT32',\n\t\t'FLOAT16'\n];\nconst typedArrayToType = {\n\t\t'Int8Array': TYPE_INT8,\n\t\t'Uint8Array': TYPE_UINT8,\n\t\t'Int16Array': TYPE_INT16,\n\t\t'Uint16Array': TYPE_UINT16,\n\t\t'Int32Array': TYPE_INT32,\n\t\t'Uint32Array': TYPE_UINT32,\n\t\t'Float32Array': TYPE_FLOAT32\n};\nconst typedArrayIndexFormats = [\n\t\tUint8Array,\n\t\tUint16Array,\n\t\tUint32Array\n];\nconst typedArrayIndexFormatsByteSize = [\n\t\t1,\n\t\t2,\n\t\t4\n];\nconst primitiveGlslToWgslTypeMap = new Map([\n\t\t[\n\t\t\t\t'float',\n\t\t\t\t'f32'\n\t\t],\n\t\t[\n\t\t\t\t'vec2',\n\t\t\t\t'vec2f'\n\t\t],\n\t\t[\n\t\t\t\t'vec3',\n\t\t\t\t'vec3f'\n\t\t],\n\t\t[\n\t\t\t\t'vec4',\n\t\t\t\t'vec4f'\n\t\t],\n\t\t[\n\t\t\t\t'int',\n\t\t\t\t'i32'\n\t\t],\n\t\t[\n\t\t\t\t'ivec2',\n\t\t\t\t'vec2i'\n\t\t],\n\t\t[\n\t\t\t\t'ivec3',\n\t\t\t\t'vec3i'\n\t\t],\n\t\t[\n\t\t\t\t'ivec4',\n\t\t\t\t'vec4i'\n\t\t],\n\t\t[\n\t\t\t\t'uint',\n\t\t\t\t'u32'\n\t\t],\n\t\t[\n\t\t\t\t'uvec2',\n\t\t\t\t'vec2u'\n\t\t],\n\t\t[\n\t\t\t\t'uvec3',\n\t\t\t\t'vec3u'\n\t\t],\n\t\t[\n\t\t\t\t'uvec4',\n\t\t\t\t'vec4u'\n\t\t]\n]);\nconst semanticToLocation = {};\nsemanticToLocation[SEMANTIC_POSITION] = 0;\nsemanticToLocation[SEMANTIC_NORMAL] = 1;\nsemanticToLocation[SEMANTIC_BLENDWEIGHT] = 2;\nsemanticToLocation[SEMANTIC_BLENDINDICES] = 3;\nsemanticToLocation[SEMANTIC_COLOR] = 4;\nsemanticToLocation[SEMANTIC_TEXCOORD0] = 5;\nsemanticToLocation[SEMANTIC_TEXCOORD1] = 6;\nsemanticToLocation[SEMANTIC_TEXCOORD2] = 7;\nsemanticToLocation[SEMANTIC_TEXCOORD3] = 8;\nsemanticToLocation[SEMANTIC_TEXCOORD4] = 9;\nsemanticToLocation[SEMANTIC_TEXCOORD5] = 10;\nsemanticToLocation[SEMANTIC_TEXCOORD6] = 11;\nsemanticToLocation[SEMANTIC_TEXCOORD7] = 12;\nsemanticToLocation[SEMANTIC_TANGENT] = 13;\nsemanticToLocation[SEMANTIC_ATTR0] = 0;\nsemanticToLocation[SEMANTIC_ATTR1] = 1;\nsemanticToLocation[SEMANTIC_ATTR2] = 2;\nsemanticToLocation[SEMANTIC_ATTR3] = 3;\nsemanticToLocation[SEMANTIC_ATTR4] = 4;\nsemanticToLocation[SEMANTIC_ATTR5] = 5;\nsemanticToLocation[SEMANTIC_ATTR6] = 6;\nsemanticToLocation[SEMANTIC_ATTR7] = 7;\nsemanticToLocation[SEMANTIC_ATTR8] = 8;\nsemanticToLocation[SEMANTIC_ATTR9] = 9;\nsemanticToLocation[SEMANTIC_ATTR10] = 10;\nsemanticToLocation[SEMANTIC_ATTR11] = 11;\nsemanticToLocation[SEMANTIC_ATTR12] = 12;\nsemanticToLocation[SEMANTIC_ATTR13] = 13;\nsemanticToLocation[SEMANTIC_ATTR14] = 14;\nsemanticToLocation[SEMANTIC_ATTR15] = 15;\n\nlet id$d = 0;\nclass BindBaseFormat {\n\t\tconstructor(name, visibility){\n\t\t\t\tthis.slot = -1;\n\t\t\t\tthis.scopeId = null;\n\t\t\t\tthis.name = name;\n\t\t\t\tthis.visibility = visibility;\n\t\t}\n}\nclass BindUniformBufferFormat extends BindBaseFormat {\n}\nclass BindStorageBufferFormat extends BindBaseFormat {\n\t\tconstructor(name, visibility, readOnly = false){\n\t\t\t\tsuper(name, visibility), this.format = '';\n\t\t\t\tthis.readOnly = readOnly;\n\t\t}\n}\nclass BindTextureFormat extends BindBaseFormat {\n\t\tconstructor(name, visibility, textureDimension = TEXTUREDIMENSION_2D, sampleType = SAMPLETYPE_FLOAT, hasSampler = true, samplerName = null){\n\t\t\t\tsuper(name, visibility);\n\t\t\t\tthis.textureDimension = textureDimension;\n\t\t\t\tthis.sampleType = sampleType;\n\t\t\t\tthis.hasSampler = hasSampler;\n\t\t\t\tthis.samplerName = samplerName ?? `${name}_sampler`;\n\t\t}\n}\nclass BindStorageTextureFormat extends BindBaseFormat {\n\t\tconstructor(name, format = PIXELFORMAT_RGBA8, textureDimension = TEXTUREDIMENSION_2D, write = true, read = false){\n\t\t\t\tsuper(name, SHADERSTAGE_COMPUTE);\n\t\t\t\tthis.format = format;\n\t\t\t\tthis.textureDimension = textureDimension;\n\t\t\t\tthis.write = write;\n\t\t\t\tthis.read = read;\n\t\t}\n}\nclass BindGroupFormat {\n\t\tconstructor(graphicsDevice, formats){\n\t\t\t\tthis.uniformBufferFormats = [];\n\t\t\t\tthis.textureFormats = [];\n\t\t\t\tthis.storageTextureFormats = [];\n\t\t\t\tthis.storageBufferFormats = [];\n\t\t\t\tthis.id = id$d++;\n\t\t\t\tlet slot = 0;\n\t\t\t\tformats.forEach((format)=>{\n\t\t\t\t\t\tformat.slot = slot++;\n\t\t\t\t\t\tif (format instanceof BindTextureFormat && format.hasSampler) {\n\t\t\t\t\t\t\t\tslot++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (format instanceof BindUniformBufferFormat) {\n\t\t\t\t\t\t\t\tthis.uniformBufferFormats.push(format);\n\t\t\t\t\t\t} else if (format instanceof BindTextureFormat) {\n\t\t\t\t\t\t\t\tthis.textureFormats.push(format);\n\t\t\t\t\t\t} else if (format instanceof BindStorageTextureFormat) {\n\t\t\t\t\t\t\t\tthis.storageTextureFormats.push(format);\n\t\t\t\t\t\t} else if (format instanceof BindStorageBufferFormat) {\n\t\t\t\t\t\t\t\tthis.storageBufferFormats.push(format);\n\t\t\t\t\t\t} else ;\n\t\t\t\t});\n\t\t\t\tthis.device = graphicsDevice;\n\t\t\t\tconst scope = graphicsDevice.scope;\n\t\t\t\tthis.bufferFormatsMap = new Map();\n\t\t\t\tthis.uniformBufferFormats.forEach((bf, i)=>this.bufferFormatsMap.set(bf.name, i));\n\t\t\t\tthis.textureFormatsMap = new Map();\n\t\t\t\tthis.textureFormats.forEach((tf, i)=>{\n\t\t\t\t\t\tthis.textureFormatsMap.set(tf.name, i);\n\t\t\t\t\t\ttf.scopeId = scope.resolve(tf.name);\n\t\t\t\t});\n\t\t\t\tthis.storageTextureFormatsMap = new Map();\n\t\t\t\tthis.storageTextureFormats.forEach((tf, i)=>{\n\t\t\t\t\t\tthis.storageTextureFormatsMap.set(tf.name, i);\n\t\t\t\t\t\ttf.scopeId = scope.resolve(tf.name);\n\t\t\t\t});\n\t\t\t\tthis.storageBufferFormatsMap = new Map();\n\t\t\t\tthis.storageBufferFormats.forEach((bf, i)=>{\n\t\t\t\t\t\tthis.storageBufferFormatsMap.set(bf.name, i);\n\t\t\t\t\t\tbf.scopeId = scope.resolve(bf.name);\n\t\t\t\t});\n\t\t\t\tthis.impl = graphicsDevice.createBindGroupFormatImpl(this);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.impl.destroy();\n\t\t}\n\t\tgetTexture(name) {\n\t\t\t\tconst index = this.textureFormatsMap.get(name);\n\t\t\t\tif (index !== undefined) {\n\t\t\t\t\t\treturn this.textureFormats[index];\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tgetStorageTexture(name) {\n\t\t\t\tconst index = this.storageTextureFormatsMap.get(name);\n\t\t\t\tif (index !== undefined) {\n\t\t\t\t\t\treturn this.storageTextureFormats[index];\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tloseContext() {}\n}\n\nclass DeviceCache {\n\t\tget(device, onCreate) {\n\t\t\t\tif (!this._cache.has(device)) {\n\t\t\t\t\t\tthis._cache.set(device, onCreate());\n\t\t\t\t\t\tdevice.on('destroy', ()=>{\n\t\t\t\t\t\t\t\tthis.remove(device);\n\t\t\t\t\t\t});\n\t\t\t\t\t\tdevice.on('devicelost', ()=>{\n\t\t\t\t\t\t\t\tthis._cache.get(device)?.loseContext?.(device);\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn this._cache.get(device);\n\t\t}\n\t\tremove(device) {\n\t\t\t\tthis._cache.get(device)?.destroy?.(device);\n\t\t\t\tthis._cache.delete(device);\n\t\t}\n\t\tconstructor(){\n\t\t\t\tthis._cache = new Map();\n\t\t}\n}\n\nclass TextureUtils {\n\t\tstatic calcLevelDimension(dimension, mipLevel) {\n\t\t\t\treturn Math.max(dimension >> mipLevel, 1);\n\t\t}\n\t\tstatic calcMipLevelsCount(width, height, depth = 1) {\n\t\t\t\treturn 1 + Math.floor(Math.log2(Math.max(width, height, depth)));\n\t\t}\n\t\tstatic calcLevelGpuSize(width, height, depth, format) {\n\t\t\t\tconst formatInfo = pixelFormatInfo.get(format);\n\t\t\t\tconst pixelSize = pixelFormatInfo.get(format)?.size ?? 0;\n\t\t\t\tif (pixelSize > 0) {\n\t\t\t\t\t\treturn width * height * depth * pixelSize;\n\t\t\t\t}\n\t\t\t\tconst blockSize = formatInfo.blockSize ?? 0;\n\t\t\t\tlet blockWidth = Math.floor((width + 3) / 4);\n\t\t\t\tconst blockHeight = Math.floor((height + 3) / 4);\n\t\t\t\tconst blockDepth = Math.floor((depth + 3) / 4);\n\t\t\t\tif (format === PIXELFORMAT_PVRTC_2BPP_RGB_1 || format === PIXELFORMAT_PVRTC_2BPP_RGBA_1) {\n\t\t\t\t\t\tblockWidth = Math.max(Math.floor(blockWidth / 2), 1);\n\t\t\t\t}\n\t\t\t\treturn blockWidth * blockHeight * blockDepth * blockSize;\n\t\t}\n\t\tstatic calcGpuSize(width, height, depth, format, mipmaps, cubemap) {\n\t\t\t\tlet result = 0;\n\t\t\t\twhile(1){\n\t\t\t\t\t\tresult += TextureUtils.calcLevelGpuSize(width, height, depth, format);\n\t\t\t\t\t\tif (!mipmaps || width === 1 && height === 1 && depth === 1) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\twidth = Math.max(width >> 1, 1);\n\t\t\t\t\t\theight = Math.max(height >> 1, 1);\n\t\t\t\t\t\tdepth = Math.max(depth >> 1, 1);\n\t\t\t\t}\n\t\t\t\treturn result * (cubemap ? 6 : 1);\n\t\t}\n}\n\nlet id$c = 0;\nclass Texture {\n\t\tconstructor(graphicsDevice, options = {}){\n\t\t\t\tthis._gpuSize = 0;\n\t\t\t\tthis.id = id$c++;\n\t\t\t\tthis._invalid = false;\n\t\t\t\tthis._lockedLevel = -1;\n\t\t\t\tthis._lockedMode = TEXTURELOCK_NONE;\n\t\t\t\tthis.renderVersionDirty = 0;\n\t\t\t\tthis._storage = false;\n\t\t\t\tthis._numLevels = 0;\n\t\t\t\tthis.device = graphicsDevice;\n\t\t\t\tthis.name = options.name ?? '';\n\t\t\t\tthis._width = Math.floor(options.width ?? 4);\n\t\t\t\tthis._height = Math.floor(options.height ?? 4);\n\t\t\t\tthis._format = options.format ?? PIXELFORMAT_RGBA8;\n\t\t\t\tthis._compressed = isCompressedPixelFormat(this._format);\n\t\t\t\tthis._integerFormat = isIntegerPixelFormat(this._format);\n\t\t\t\tif (this._integerFormat) {\n\t\t\t\t\t\toptions.minFilter = FILTER_NEAREST;\n\t\t\t\t\t\toptions.magFilter = FILTER_NEAREST;\n\t\t\t\t}\n\t\t\t\tthis._volume = options.volume ?? false;\n\t\t\t\tthis._depth = Math.floor(options.depth ?? 1);\n\t\t\t\tthis._arrayLength = Math.floor(options.arrayLength ?? 0);\n\t\t\t\tthis._storage = options.storage ?? false;\n\t\t\t\tthis._cubemap = options.cubemap ?? false;\n\t\t\t\tthis._flipY = options.flipY ?? false;\n\t\t\t\tthis._premultiplyAlpha = options.premultiplyAlpha ?? false;\n\t\t\t\tthis._mipmaps = options.mipmaps ?? true;\n\t\t\t\tthis._numLevelsRequested = options.numLevels;\n\t\t\t\tif (options.numLevels !== undefined) {\n\t\t\t\t\t\tthis._numLevels = options.numLevels;\n\t\t\t\t}\n\t\t\t\tthis._updateNumLevel();\n\t\t\t\tthis._minFilter = options.minFilter ?? FILTER_LINEAR_MIPMAP_LINEAR;\n\t\t\t\tthis._magFilter = options.magFilter ?? FILTER_LINEAR;\n\t\t\t\tthis._anisotropy = options.anisotropy ?? 1;\n\t\t\t\tthis._addressU = options.addressU ?? ADDRESS_REPEAT;\n\t\t\t\tthis._addressV = options.addressV ?? ADDRESS_REPEAT;\n\t\t\t\tthis._addressW = options.addressW ?? ADDRESS_REPEAT;\n\t\t\t\tthis._compareOnRead = options.compareOnRead ?? false;\n\t\t\t\tthis._compareFunc = options.compareFunc ?? FUNC_LESS;\n\t\t\t\tthis._type = options.type ?? TEXTURETYPE_DEFAULT;\n\t\t\t\tthis.projection = TEXTUREPROJECTION_NONE;\n\t\t\t\tif (this._cubemap) {\n\t\t\t\t\t\tthis.projection = TEXTUREPROJECTION_CUBE;\n\t\t\t\t} else if (options.projection && options.projection !== TEXTUREPROJECTION_CUBE) {\n\t\t\t\t\t\tthis.projection = options.projection;\n\t\t\t\t}\n\t\t\t\tthis._levels = options.levels;\n\t\t\t\tconst upload = !!options.levels;\n\t\t\t\tif (!this._levels) {\n\t\t\t\t\t\tthis._clearLevels();\n\t\t\t\t}\n\t\t\t\tthis.recreateImpl(upload);\n\t\t\t\tgraphicsDevice.textures.push(this);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tconst device = this.device;\n\t\t\t\tif (device) {\n\t\t\t\t\t\tconst idx = device.textures.indexOf(this);\n\t\t\t\t\t\tif (idx !== -1) {\n\t\t\t\t\t\t\t\tdevice.textures.splice(idx, 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdevice.scope.removeValue(this);\n\t\t\t\t\t\tthis.impl.destroy(device);\n\t\t\t\t\t\tthis.adjustVramSizeTracking(device._vram, -this._gpuSize);\n\t\t\t\t\t\tthis._levels = null;\n\t\t\t\t\t\tthis.device = null;\n\t\t\t\t}\n\t\t}\n\t\trecreateImpl(upload = true) {\n\t\t\t\tconst { device } = this;\n\t\t\t\tthis.impl?.destroy(device);\n\t\t\t\tthis.impl = null;\n\t\t\t\tthis.impl = device.createTextureImpl(this);\n\t\t\t\tthis.dirtyAll();\n\t\t\t\tif (upload) {\n\t\t\t\t\t\tthis.upload();\n\t\t\t\t}\n\t\t}\n\t\t_clearLevels() {\n\t\t\t\tthis._levels = this._cubemap ? [\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t]\n\t\t\t\t] : [\n\t\t\t\t\t\tnull\n\t\t\t\t];\n\t\t}\n\t\tresize(width, height, depth = 1) {\n\t\t\t\tif (this.width !== width || this.height !== height || this.depth !== depth) {\n\t\t\t\t\t\tconst device = this.device;\n\t\t\t\t\t\tthis.adjustVramSizeTracking(device._vram, -this._gpuSize);\n\t\t\t\t\t\tthis._gpuSize = 0;\n\t\t\t\t\t\tthis.impl.destroy(device);\n\t\t\t\t\t\tthis._clearLevels();\n\t\t\t\t\t\tthis._width = Math.floor(width);\n\t\t\t\t\t\tthis._height = Math.floor(height);\n\t\t\t\t\t\tthis._depth = Math.floor(depth);\n\t\t\t\t\t\tthis._updateNumLevel();\n\t\t\t\t\t\tthis.impl = device.createTextureImpl(this);\n\t\t\t\t\t\tthis.dirtyAll();\n\t\t\t\t}\n\t\t}\n\t\tloseContext() {\n\t\t\t\tthis.impl.loseContext();\n\t\t\t\tthis.dirtyAll();\n\t\t}\n\t\tadjustVramSizeTracking(vram, size) {\n\t\t\t\tvram.tex += size;\n\t\t}\n\t\tpropertyChanged(flag) {\n\t\t\t\tthis.impl.propertyChanged(flag);\n\t\t\t\tthis.renderVersionDirty = this.device.renderVersion;\n\t\t}\n\t\t_updateNumLevel() {\n\t\t\t\tconst maxLevels = this.mipmaps ? TextureUtils.calcMipLevelsCount(this.width, this.height) : 1;\n\t\t\t\tconst requestedLevels = this._numLevelsRequested;\n\t\t\t\tthis._numLevels = Math.min(requestedLevels ?? maxLevels, maxLevels);\n\t\t\t\tthis._mipmaps = this._numLevels > 1;\n\t\t}\n\t\tget lockedMode() {\n\t\t\t\treturn this._lockedMode;\n\t\t}\n\t\tset minFilter(v) {\n\t\t\t\tif (this._minFilter !== v) {\n\t\t\t\t\t\tif (isIntegerPixelFormat(this._format)) ; else {\n\t\t\t\t\t\t\t\tthis._minFilter = v;\n\t\t\t\t\t\t\t\tthis.propertyChanged(TEXPROPERTY_MIN_FILTER);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget minFilter() {\n\t\t\t\treturn this._minFilter;\n\t\t}\n\t\tset magFilter(v) {\n\t\t\t\tif (this._magFilter !== v) {\n\t\t\t\t\t\tif (isIntegerPixelFormat(this._format)) ; else {\n\t\t\t\t\t\t\t\tthis._magFilter = v;\n\t\t\t\t\t\t\t\tthis.propertyChanged(TEXPROPERTY_MAG_FILTER);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget magFilter() {\n\t\t\t\treturn this._magFilter;\n\t\t}\n\t\tset addressU(v) {\n\t\t\t\tif (this._addressU !== v) {\n\t\t\t\t\t\tthis._addressU = v;\n\t\t\t\t\t\tthis.propertyChanged(TEXPROPERTY_ADDRESS_U);\n\t\t\t\t}\n\t\t}\n\t\tget addressU() {\n\t\t\t\treturn this._addressU;\n\t\t}\n\t\tset addressV(v) {\n\t\t\t\tif (this._addressV !== v) {\n\t\t\t\t\t\tthis._addressV = v;\n\t\t\t\t\t\tthis.propertyChanged(TEXPROPERTY_ADDRESS_V);\n\t\t\t\t}\n\t\t}\n\t\tget addressV() {\n\t\t\t\treturn this._addressV;\n\t\t}\n\t\tset addressW(addressW) {\n\t\t\t\tif (!this._volume) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (addressW !== this._addressW) {\n\t\t\t\t\t\tthis._addressW = addressW;\n\t\t\t\t\t\tthis.propertyChanged(TEXPROPERTY_ADDRESS_W);\n\t\t\t\t}\n\t\t}\n\t\tget addressW() {\n\t\t\t\treturn this._addressW;\n\t\t}\n\t\tset compareOnRead(v) {\n\t\t\t\tif (this._compareOnRead !== v) {\n\t\t\t\t\t\tthis._compareOnRead = v;\n\t\t\t\t\t\tthis.propertyChanged(TEXPROPERTY_COMPARE_ON_READ);\n\t\t\t\t}\n\t\t}\n\t\tget compareOnRead() {\n\t\t\t\treturn this._compareOnRead;\n\t\t}\n\t\tset compareFunc(v) {\n\t\t\t\tif (this._compareFunc !== v) {\n\t\t\t\t\t\tthis._compareFunc = v;\n\t\t\t\t\t\tthis.propertyChanged(TEXPROPERTY_COMPARE_FUNC);\n\t\t\t\t}\n\t\t}\n\t\tget compareFunc() {\n\t\t\t\treturn this._compareFunc;\n\t\t}\n\t\tset anisotropy(v) {\n\t\t\t\tif (this._anisotropy !== v) {\n\t\t\t\t\t\tthis._anisotropy = v;\n\t\t\t\t\t\tthis.propertyChanged(TEXPROPERTY_ANISOTROPY);\n\t\t\t\t}\n\t\t}\n\t\tget anisotropy() {\n\t\t\t\treturn this._anisotropy;\n\t\t}\n\t\tset mipmaps(v) {\n\t\t\t\tif (this._mipmaps !== v) {\n\t\t\t\t\t\tif (this.device.isWebGPU) ; else if (isIntegerPixelFormat(this._format)) ; else {\n\t\t\t\t\t\t\t\tthis._mipmaps = v;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (v) this._needsMipmapsUpload = true;\n\t\t\t\t}\n\t\t}\n\t\tget mipmaps() {\n\t\t\t\treturn this._mipmaps;\n\t\t}\n\t\tget numLevels() {\n\t\t\t\treturn this._numLevels;\n\t\t}\n\t\tget storage() {\n\t\t\t\treturn this._storage;\n\t\t}\n\t\tget width() {\n\t\t\t\treturn this._width;\n\t\t}\n\t\tget height() {\n\t\t\t\treturn this._height;\n\t\t}\n\t\tget depth() {\n\t\t\t\treturn this._depth;\n\t\t}\n\t\tget format() {\n\t\t\t\treturn this._format;\n\t\t}\n\t\tget cubemap() {\n\t\t\t\treturn this._cubemap;\n\t\t}\n\t\tget gpuSize() {\n\t\t\t\tconst mips = this.pot && this._mipmaps && !(this._compressed && this._levels.length === 1);\n\t\t\t\treturn TextureUtils.calcGpuSize(this._width, this._height, this._depth, this._format, mips, this._cubemap);\n\t\t}\n\t\tget array() {\n\t\t\t\treturn this._arrayLength > 0;\n\t\t}\n\t\tget arrayLength() {\n\t\t\t\treturn this._arrayLength;\n\t\t}\n\t\tget volume() {\n\t\t\t\treturn this._volume;\n\t\t}\n\t\tset type(value) {\n\t\t\t\tif (this._type !== value) {\n\t\t\t\t\t\tthis._type = value;\n\t\t\t\t\t\tthis.device._shadersDirty = true;\n\t\t\t\t}\n\t\t}\n\t\tget type() {\n\t\t\t\treturn this._type;\n\t\t}\n\t\tset srgb(value) {\n\t\t\t\tconst currentSrgb = isSrgbPixelFormat(this.format);\n\t\t\t\tif (value !== currentSrgb) {\n\t\t\t\t\t\tif (value) {\n\t\t\t\t\t\t\t\tconst srgbFormat = pixelFormatLinearToGamma(this.format);\n\t\t\t\t\t\t\t\tif (this._format !== srgbFormat) {\n\t\t\t\t\t\t\t\t\t\tthis._format = srgbFormat;\n\t\t\t\t\t\t\t\t\t\tthis.recreateImpl();\n\t\t\t\t\t\t\t\t\t\tthis.device._shadersDirty = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst linearFormat = pixelFormatGammaToLinear(this.format);\n\t\t\t\t\t\t\t\tif (this._format !== linearFormat) {\n\t\t\t\t\t\t\t\t\t\tthis._format = linearFormat;\n\t\t\t\t\t\t\t\t\t\tthis.recreateImpl();\n\t\t\t\t\t\t\t\t\t\tthis.device._shadersDirty = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget srgb() {\n\t\t\t\treturn isSrgbPixelFormat(this.format);\n\t\t}\n\t\tset flipY(flipY) {\n\t\t\t\tif (this._flipY !== flipY) {\n\t\t\t\t\t\tthis._flipY = flipY;\n\t\t\t\t\t\tthis._needsUpload = true;\n\t\t\t\t}\n\t\t}\n\t\tget flipY() {\n\t\t\t\treturn this._flipY;\n\t\t}\n\t\tset premultiplyAlpha(premultiplyAlpha) {\n\t\t\t\tif (this._premultiplyAlpha !== premultiplyAlpha) {\n\t\t\t\t\t\tthis._premultiplyAlpha = premultiplyAlpha;\n\t\t\t\t\t\tthis._needsUpload = true;\n\t\t\t\t}\n\t\t}\n\t\tget premultiplyAlpha() {\n\t\t\t\treturn this._premultiplyAlpha;\n\t\t}\n\t\tget pot() {\n\t\t\t\treturn math.powerOfTwo(this._width) && math.powerOfTwo(this._height);\n\t\t}\n\t\tget encoding() {\n\t\t\t\tswitch(this.type){\n\t\t\t\t\t\tcase TEXTURETYPE_RGBM:\n\t\t\t\t\t\t\t\treturn 'rgbm';\n\t\t\t\t\t\tcase TEXTURETYPE_RGBE:\n\t\t\t\t\t\t\t\treturn 'rgbe';\n\t\t\t\t\t\tcase TEXTURETYPE_RGBP:\n\t\t\t\t\t\t\t\treturn 'rgbp';\n\t\t\t\t}\n\t\t\t\treturn requiresManualGamma(this.format) ? 'srgb' : 'linear';\n\t\t}\n\t\tdirtyAll() {\n\t\t\t\tthis._levelsUpdated = this._cubemap ? [\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\ttrue,\n\t\t\t\t\t\t\t\ttrue,\n\t\t\t\t\t\t\t\ttrue,\n\t\t\t\t\t\t\t\ttrue,\n\t\t\t\t\t\t\t\ttrue,\n\t\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t]\n\t\t\t\t] : [\n\t\t\t\t\t\ttrue\n\t\t\t\t];\n\t\t\t\tthis._needsUpload = true;\n\t\t\t\tthis._needsMipmapsUpload = this._mipmaps;\n\t\t\t\tthis._mipmapsUploaded = false;\n\t\t\t\tthis.propertyChanged(TEXPROPERTY_ALL);\n\t\t}\n\t\tlock(options = {}) {\n\t\t\t\toptions.level ??= 0;\n\t\t\t\toptions.face ??= 0;\n\t\t\t\toptions.mode ??= TEXTURELOCK_WRITE;\n\t\t\t\tthis._lockedMode = options.mode;\n\t\t\t\tthis._lockedLevel = options.level;\n\t\t\t\tconst levels = this.cubemap ? this._levels[options.face] : this._levels;\n\t\t\t\tif (levels[options.level] === null) {\n\t\t\t\t\t\tconst width = Math.max(1, this._width >> options.level);\n\t\t\t\t\t\tconst height = Math.max(1, this._height >> options.level);\n\t\t\t\t\t\tconst depth = Math.max(1, this._depth >> options.level);\n\t\t\t\t\t\tconst data = new ArrayBuffer(TextureUtils.calcLevelGpuSize(width, height, depth, this._format));\n\t\t\t\t\t\tlevels[options.level] = new (getPixelFormatArrayType(this._format))(data);\n\t\t\t\t}\n\t\t\t\treturn levels[options.level];\n\t\t}\n\t\tsetSource(source, mipLevel = 0) {\n\t\t\t\tlet invalid = false;\n\t\t\t\tlet width, height;\n\t\t\t\tif (this._cubemap) {\n\t\t\t\t\t\tif (source[0]) {\n\t\t\t\t\t\t\t\twidth = source[0].width || 0;\n\t\t\t\t\t\t\t\theight = source[0].height || 0;\n\t\t\t\t\t\t\t\tfor(let i = 0; i < 6; i++){\n\t\t\t\t\t\t\t\t\t\tconst face = source[i];\n\t\t\t\t\t\t\t\t\t\tif (!face || face.width !== width || face.height !== height || !this.device._isBrowserInterface(face)) {\n\t\t\t\t\t\t\t\t\t\t\t\tinvalid = true;\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tinvalid = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!invalid) {\n\t\t\t\t\t\t\t\tfor(let i = 0; i < 6; i++){\n\t\t\t\t\t\t\t\t\t\tif (this._levels[mipLevel][i] !== source[i]) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._levelsUpdated[mipLevel][i] = true;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tif (!this.device._isBrowserInterface(source)) {\n\t\t\t\t\t\t\t\tinvalid = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!invalid) {\n\t\t\t\t\t\t\t\tif (source !== this._levels[mipLevel]) {\n\t\t\t\t\t\t\t\t\t\tthis._levelsUpdated[mipLevel] = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (source instanceof HTMLVideoElement) {\n\t\t\t\t\t\t\t\t\t\twidth = source.videoWidth;\n\t\t\t\t\t\t\t\t\t\theight = source.videoHeight;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\twidth = source.width;\n\t\t\t\t\t\t\t\t\t\theight = source.height;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (invalid) {\n\t\t\t\t\t\tthis._width = 4;\n\t\t\t\t\t\tthis._height = 4;\n\t\t\t\t\t\tif (this._cubemap) {\n\t\t\t\t\t\t\t\tfor(let i = 0; i < 6; i++){\n\t\t\t\t\t\t\t\t\t\tthis._levels[mipLevel][i] = null;\n\t\t\t\t\t\t\t\t\t\tthis._levelsUpdated[mipLevel][i] = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._levels[mipLevel] = null;\n\t\t\t\t\t\t\t\tthis._levelsUpdated[mipLevel] = true;\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tif (mipLevel === 0) {\n\t\t\t\t\t\t\t\tthis._width = width;\n\t\t\t\t\t\t\t\tthis._height = height;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._levels[mipLevel] = source;\n\t\t\t\t}\n\t\t\t\tif (this._invalid !== invalid || !invalid) {\n\t\t\t\t\t\tthis._invalid = invalid;\n\t\t\t\t\t\tthis.upload();\n\t\t\t\t}\n\t\t}\n\t\tgetSource(mipLevel = 0) {\n\t\t\t\treturn this._levels[mipLevel];\n\t\t}\n\t\tunlock() {\n\t\t\t\tif (this._lockedMode === TEXTURELOCK_NONE) ;\n\t\t\t\tif (this._lockedMode === TEXTURELOCK_WRITE) {\n\t\t\t\t\t\tthis.upload();\n\t\t\t\t}\n\t\t\t\tthis._lockedLevel = -1;\n\t\t\t\tthis._lockedMode = TEXTURELOCK_NONE;\n\t\t}\n\t\tupload() {\n\t\t\t\tthis._needsUpload = true;\n\t\t\t\tthis._needsMipmapsUpload = this._mipmaps;\n\t\t\t\tthis.impl.uploadImmediate?.(this.device, this);\n\t\t}\n\t\tread(x, y, width, height, options = {}) {\n\t\t\t\treturn this.impl.read?.(x, y, width, height, options);\n\t\t}\n\t\twrite(x, y, width, height, data) {\n\t\t\t\treturn this.impl.write?.(x, y, width, height, data);\n\t\t}\n}\n\nconst textureData = {\n\t\twhite: [\n\t\t\t\t255,\n\t\t\t\t255,\n\t\t\t\t255,\n\t\t\t\t255\n\t\t],\n\t\tgray: [\n\t\t\t\t128,\n\t\t\t\t128,\n\t\t\t\t128,\n\t\t\t\t255\n\t\t],\n\t\tblack: [\n\t\t\t\t0,\n\t\t\t\t0,\n\t\t\t\t0,\n\t\t\t\t255\n\t\t],\n\t\tnormal: [\n\t\t\t\t128,\n\t\t\t\t128,\n\t\t\t\t255,\n\t\t\t\t255\n\t\t],\n\t\tpink: [\n\t\t\t\t255,\n\t\t\t\t128,\n\t\t\t\t255,\n\t\t\t\t255\n\t\t]\n};\nclass BuiltInTextures {\n\t\tdestroy() {\n\t\t\t\tthis.map.forEach((texture)=>{\n\t\t\t\t\t\ttexture.destroy();\n\t\t\t\t});\n\t\t}\n\t\tconstructor(){\n\t\t\t\tthis.map = new Map();\n\t\t}\n}\nconst deviceCache$3 = new DeviceCache();\nconst getBuiltInTexture = (device, name)=>{\n\t\tconst cache = deviceCache$3.get(device, ()=>{\n\t\t\t\treturn new BuiltInTextures();\n\t\t});\n\t\tif (!cache.map.has(name)) {\n\t\t\t\tconst texture = new Texture(device, {\n\t\t\t\t\t\tname: `built-in-texture-${name}`,\n\t\t\t\t\t\twidth: 1,\n\t\t\t\t\t\theight: 1,\n\t\t\t\t\t\tformat: PIXELFORMAT_RGBA8\n\t\t\t\t});\n\t\t\t\tconst pixels = texture.lock();\n\t\t\t\tconst data = textureData[name];\n\t\t\t\tpixels.set(data);\n\t\t\t\ttexture.unlock();\n\t\t\t\tcache.map.set(name, texture);\n\t\t}\n\t\treturn cache.map.get(name);\n};\n\nlet id$b = 0;\nclass DynamicBindGroup {\n\t\tconstructor(){\n\t\t\t\tthis.offsets = [];\n\t\t}\n}\nclass BindGroup {\n\t\tconstructor(graphicsDevice, format, defaultUniformBuffer){\n\t\t\t\tthis.renderVersionUpdated = -1;\n\t\t\t\tthis.uniformBufferOffsets = [];\n\t\t\t\tthis.id = id$b++;\n\t\t\t\tthis.device = graphicsDevice;\n\t\t\t\tthis.format = format;\n\t\t\t\tthis.dirty = true;\n\t\t\t\tthis.impl = graphicsDevice.createBindGroupImpl(this);\n\t\t\t\tthis.textures = [];\n\t\t\t\tthis.storageTextures = [];\n\t\t\t\tthis.storageBuffers = [];\n\t\t\t\tthis.uniformBuffers = [];\n\t\t\t\tthis.defaultUniformBuffer = defaultUniformBuffer;\n\t\t\t\tif (defaultUniformBuffer) {\n\t\t\t\t\t\tthis.setUniformBuffer(UNIFORM_BUFFER_DEFAULT_SLOT_NAME, defaultUniformBuffer);\n\t\t\t\t}\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.impl.destroy();\n\t\t\t\tthis.impl = null;\n\t\t\t\tthis.format = null;\n\t\t\t\tthis.defaultUniformBuffer = null;\n\t\t}\n\t\tsetUniformBuffer(name, uniformBuffer) {\n\t\t\t\tconst index = this.format.bufferFormatsMap.get(name);\n\t\t\t\tif (this.uniformBuffers[index] !== uniformBuffer) {\n\t\t\t\t\t\tthis.uniformBuffers[index] = uniformBuffer;\n\t\t\t\t\t\tthis.dirty = true;\n\t\t\t\t}\n\t\t}\n\t\tsetStorageBuffer(name, storageBuffer) {\n\t\t\t\tconst index = this.format.storageBufferFormatsMap.get(name);\n\t\t\t\tif (this.storageBuffers[index] !== storageBuffer) {\n\t\t\t\t\t\tthis.storageBuffers[index] = storageBuffer;\n\t\t\t\t\t\tthis.dirty = true;\n\t\t\t\t}\n\t\t}\n\t\tsetTexture(name, texture) {\n\t\t\t\tconst index = this.format.textureFormatsMap.get(name);\n\t\t\t\tif (this.textures[index] !== texture) {\n\t\t\t\t\t\tthis.textures[index] = texture;\n\t\t\t\t\t\tthis.dirty = true;\n\t\t\t\t} else if (this.renderVersionUpdated < texture.renderVersionDirty) {\n\t\t\t\t\t\tthis.dirty = true;\n\t\t\t\t}\n\t\t}\n\t\tsetStorageTexture(name, texture) {\n\t\t\t\tconst index = this.format.storageTextureFormatsMap.get(name);\n\t\t\t\tif (this.storageTextures[index] !== texture) {\n\t\t\t\t\t\tthis.storageTextures[index] = texture;\n\t\t\t\t\t\tthis.dirty = true;\n\t\t\t\t} else if (this.renderVersionUpdated < texture.renderVersionDirty) {\n\t\t\t\t\t\tthis.dirty = true;\n\t\t\t\t}\n\t\t}\n\t\tupdateUniformBuffers() {\n\t\t\t\tfor(let i = 0; i < this.uniformBuffers.length; i++){\n\t\t\t\t\t\tthis.uniformBuffers[i].update();\n\t\t\t\t}\n\t\t}\n\t\tupdate() {\n\t\t\t\tconst { textureFormats, storageTextureFormats, storageBufferFormats } = this.format;\n\t\t\t\tfor(let i = 0; i < textureFormats.length; i++){\n\t\t\t\t\t\tconst textureFormat = textureFormats[i];\n\t\t\t\t\t\tlet value = textureFormat.scopeId.value;\n\t\t\t\t\t\tif (!value) {\n\t\t\t\t\t\t\t\tif (textureFormat.name === 'uSceneDepthMap') {\n\t\t\t\t\t\t\t\t\t\tvalue = getBuiltInTexture(this.device, 'white');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (textureFormat.name === 'uSceneColorMap') {\n\t\t\t\t\t\t\t\t\t\tvalue = getBuiltInTexture(this.device, 'pink');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (!value) {\n\t\t\t\t\t\t\t\t\t\tvalue = getBuiltInTexture(this.device, 'pink');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.setTexture(textureFormat.name, value);\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < storageTextureFormats.length; i++){\n\t\t\t\t\t\tconst storageTextureFormat = storageTextureFormats[i];\n\t\t\t\t\t\tconst value = storageTextureFormat.scopeId.value;\n\t\t\t\t\t\tthis.setStorageTexture(storageTextureFormat.name, value);\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < storageBufferFormats.length; i++){\n\t\t\t\t\t\tconst storageBufferFormat = storageBufferFormats[i];\n\t\t\t\t\t\tconst value = storageBufferFormat.scopeId.value;\n\t\t\t\t\t\tthis.setStorageBuffer(storageBufferFormat.name, value);\n\t\t\t\t}\n\t\t\t\tthis.uniformBufferOffsets.length = this.uniformBuffers.length;\n\t\t\t\tfor(let i = 0; i < this.uniformBuffers.length; i++){\n\t\t\t\t\t\tconst uniformBuffer = this.uniformBuffers[i];\n\t\t\t\t\t\tthis.uniformBufferOffsets[i] = uniformBuffer.offset;\n\t\t\t\t\t\tif (this.renderVersionUpdated < uniformBuffer.renderVersionDirty) {\n\t\t\t\t\t\t\t\tthis.dirty = true;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this.dirty) {\n\t\t\t\t\t\tthis.dirty = false;\n\t\t\t\t\t\tthis.renderVersionUpdated = this.device.renderVersion;\n\t\t\t\t\t\tthis.impl.update(this);\n\t\t\t\t}\n\t\t}\n}\n\nconst BitPacking = {\n\t\tset (storage, value, shift, mask = 1) {\n\t\t\t\tconst data = storage & ~(mask << shift);\n\t\t\t\treturn data | value << shift;\n\t\t},\n\t\tget (storage, shift, mask = 1) {\n\t\t\t\treturn storage >> shift & mask;\n\t\t},\n\t\tall (storage, shift, mask = 1) {\n\t\t\t\tconst shifted = mask << shift;\n\t\t\t\treturn (storage & shifted) === shifted;\n\t\t},\n\t\tany (storage, shift, mask = 1) {\n\t\t\t\treturn (storage & mask << shift) !== 0;\n\t\t}\n};\n\nconst opMask = 0b111;\nconst factorMask = 0b1111;\nconst colorOpShift = 0;\nconst colorSrcFactorShift = 3;\nconst colorDstFactorShift = 7;\nconst alphaOpShift = 11;\nconst alphaSrcFactorShift = 14;\nconst alphaDstFactorShift = 18;\nconst redWriteShift = 22;\nconst greenWriteShift = 23;\nconst blueWriteShift = 24;\nconst alphaWriteShift = 25;\nconst blendShift = 26;\nconst allWriteMasks = 0b1111;\nconst allWriteShift = redWriteShift;\nclass BlendState {\n\t\tconstructor(blend = false, colorOp = BLENDEQUATION_ADD, colorSrcFactor = BLENDMODE_ONE, colorDstFactor = BLENDMODE_ZERO, alphaOp, alphaSrcFactor, alphaDstFactor, redWrite = true, greenWrite = true, blueWrite = true, alphaWrite = true){\n\t\t\t\tthis.target0 = 0;\n\t\t\t\tthis.setColorBlend(colorOp, colorSrcFactor, colorDstFactor);\n\t\t\t\tthis.setAlphaBlend(alphaOp ?? colorOp, alphaSrcFactor ?? colorSrcFactor, alphaDstFactor ?? colorDstFactor);\n\t\t\t\tthis.setColorWrite(redWrite, greenWrite, blueWrite, alphaWrite);\n\t\t\t\tthis.blend = blend;\n\t\t}\n\t\tset blend(value) {\n\t\t\t\tthis.target0 = BitPacking.set(this.target0, value ? 1 : 0, blendShift);\n\t\t}\n\t\tget blend() {\n\t\t\t\treturn BitPacking.all(this.target0, blendShift);\n\t\t}\n\t\tsetColorBlend(op, srcFactor, dstFactor) {\n\t\t\t\tthis.target0 = BitPacking.set(this.target0, op, colorOpShift, opMask);\n\t\t\t\tthis.target0 = BitPacking.set(this.target0, srcFactor, colorSrcFactorShift, factorMask);\n\t\t\t\tthis.target0 = BitPacking.set(this.target0, dstFactor, colorDstFactorShift, factorMask);\n\t\t}\n\t\tsetAlphaBlend(op, srcFactor, dstFactor) {\n\t\t\t\tthis.target0 = BitPacking.set(this.target0, op, alphaOpShift, opMask);\n\t\t\t\tthis.target0 = BitPacking.set(this.target0, srcFactor, alphaSrcFactorShift, factorMask);\n\t\t\t\tthis.target0 = BitPacking.set(this.target0, dstFactor, alphaDstFactorShift, factorMask);\n\t\t}\n\t\tsetColorWrite(redWrite, greenWrite, blueWrite, alphaWrite) {\n\t\t\t\tthis.redWrite = redWrite;\n\t\t\t\tthis.greenWrite = greenWrite;\n\t\t\t\tthis.blueWrite = blueWrite;\n\t\t\t\tthis.alphaWrite = alphaWrite;\n\t\t}\n\t\tget colorOp() {\n\t\t\t\treturn BitPacking.get(this.target0, colorOpShift, opMask);\n\t\t}\n\t\tget colorSrcFactor() {\n\t\t\t\treturn BitPacking.get(this.target0, colorSrcFactorShift, factorMask);\n\t\t}\n\t\tget colorDstFactor() {\n\t\t\t\treturn BitPacking.get(this.target0, colorDstFactorShift, factorMask);\n\t\t}\n\t\tget alphaOp() {\n\t\t\t\treturn BitPacking.get(this.target0, alphaOpShift, opMask);\n\t\t}\n\t\tget alphaSrcFactor() {\n\t\t\t\treturn BitPacking.get(this.target0, alphaSrcFactorShift, factorMask);\n\t\t}\n\t\tget alphaDstFactor() {\n\t\t\t\treturn BitPacking.get(this.target0, alphaDstFactorShift, factorMask);\n\t\t}\n\t\tset redWrite(value) {\n\t\t\t\tthis.target0 = BitPacking.set(this.target0, value ? 1 : 0, redWriteShift);\n\t\t}\n\t\tget redWrite() {\n\t\t\t\treturn BitPacking.all(this.target0, redWriteShift);\n\t\t}\n\t\tset greenWrite(value) {\n\t\t\t\tthis.target0 = BitPacking.set(this.target0, value ? 1 : 0, greenWriteShift);\n\t\t}\n\t\tget greenWrite() {\n\t\t\t\treturn BitPacking.all(this.target0, greenWriteShift);\n\t\t}\n\t\tset blueWrite(value) {\n\t\t\t\tthis.target0 = BitPacking.set(this.target0, value ? 1 : 0, blueWriteShift);\n\t\t}\n\t\tget blueWrite() {\n\t\t\t\treturn BitPacking.all(this.target0, blueWriteShift);\n\t\t}\n\t\tset alphaWrite(value) {\n\t\t\t\tthis.target0 = BitPacking.set(this.target0, value ? 1 : 0, alphaWriteShift);\n\t\t}\n\t\tget alphaWrite() {\n\t\t\t\treturn BitPacking.all(this.target0, alphaWriteShift);\n\t\t}\n\t\tget allWrite() {\n\t\t\t\treturn BitPacking.get(this.target0, allWriteShift, allWriteMasks);\n\t\t}\n\t\tcopy(rhs) {\n\t\t\t\tthis.target0 = rhs.target0;\n\t\t\t\treturn this;\n\t\t}\n\t\tclone() {\n\t\t\t\tconst clone = new this.constructor();\n\t\t\t\treturn clone.copy(this);\n\t\t}\n\t\tget key() {\n\t\t\t\treturn this.target0;\n\t\t}\n\t\tequals(rhs) {\n\t\t\t\treturn this.target0 === rhs.target0;\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.NOBLEND = Object.freeze(new BlendState());\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.NOWRITE = Object.freeze(new BlendState(undefined, undefined, undefined, undefined, undefined, undefined, undefined, false, false, false, false));\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.ALPHABLEND = Object.freeze(new BlendState(true, BLENDEQUATION_ADD, BLENDMODE_SRC_ALPHA, BLENDMODE_ONE_MINUS_SRC_ALPHA));\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.ADDBLEND = Object.freeze(new BlendState(true, BLENDEQUATION_ADD, BLENDMODE_ONE, BLENDMODE_ONE));\n\t\t}\n}\n\nclass StringIds {\n\t\tget(name) {\n\t\t\t\tlet value = this.map.get(name);\n\t\t\t\tif (value === undefined) {\n\t\t\t\t\t\tvalue = this.id++;\n\t\t\t\t\t\tthis.map.set(name, value);\n\t\t\t\t}\n\t\t\t\treturn value;\n\t\t}\n\t\tconstructor(){\n\t\t\t\tthis.map = new Map();\n\t\t\t\tthis.id = 0;\n\t\t}\n}\n\nconst stringIds$4 = new StringIds();\nconst funcMask = 0b111;\nconst funcShift = 0;\nconst writeShift = 3;\nclass DepthState {\n\t\tconstructor(func = FUNC_LESSEQUAL, write = true){\n\t\t\t\tthis.data = 0;\n\t\t\t\tthis._depthBias = 0;\n\t\t\t\tthis._depthBiasSlope = 0;\n\t\t\t\tthis.key = 0;\n\t\t\t\tthis.func = func;\n\t\t\t\tthis.write = write;\n\t\t}\n\t\tset test(value) {\n\t\t\t\tthis.func = value ? FUNC_LESSEQUAL : FUNC_ALWAYS;\n\t\t\t\tthis.updateKey();\n\t\t}\n\t\tget test() {\n\t\t\t\treturn this.func !== FUNC_ALWAYS;\n\t\t}\n\t\tset write(value) {\n\t\t\t\tthis.data = BitPacking.set(this.data, value ? 1 : 0, writeShift);\n\t\t\t\tthis.updateKey();\n\t\t}\n\t\tget write() {\n\t\t\t\treturn BitPacking.all(this.data, writeShift);\n\t\t}\n\t\tset func(value) {\n\t\t\t\tthis.data = BitPacking.set(this.data, value, funcShift, funcMask);\n\t\t\t\tthis.updateKey();\n\t\t}\n\t\tget func() {\n\t\t\t\treturn BitPacking.get(this.data, funcShift, funcMask);\n\t\t}\n\t\tset depthBias(value) {\n\t\t\t\tthis._depthBias = value;\n\t\t\t\tthis.updateKey();\n\t\t}\n\t\tget depthBias() {\n\t\t\t\treturn this._depthBias;\n\t\t}\n\t\tset depthBiasSlope(value) {\n\t\t\t\tthis._depthBiasSlope = value;\n\t\t\t\tthis.updateKey();\n\t\t}\n\t\tget depthBiasSlope() {\n\t\t\t\treturn this._depthBiasSlope;\n\t\t}\n\t\tcopy(rhs) {\n\t\t\t\tthis.data = rhs.data;\n\t\t\t\tthis._depthBias = rhs._depthBias;\n\t\t\t\tthis._depthBiasSlope = rhs._depthBiasSlope;\n\t\t\t\tthis.key = rhs.key;\n\t\t\t\treturn this;\n\t\t}\n\t\tclone() {\n\t\t\t\tconst clone = new this.constructor();\n\t\t\t\treturn clone.copy(this);\n\t\t}\n\t\tupdateKey() {\n\t\t\t\tconst { data, _depthBias, _depthBiasSlope } = this;\n\t\t\t\tconst key = `${data}-${_depthBias}-${_depthBiasSlope}`;\n\t\t\t\tthis.key = stringIds$4.get(key);\n\t\t}\n\t\tequals(rhs) {\n\t\t\t\treturn this.key === rhs.key;\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.DEFAULT = Object.freeze(new DepthState());\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.NODEPTH = Object.freeze(new DepthState(FUNC_ALWAYS, false));\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.WRITEDEPTH = Object.freeze(new DepthState(FUNC_ALWAYS, true));\n\t\t}\n}\n\nclass Version {\n\t\tequals(other) {\n\t\t\t\treturn this.globalId === other.globalId && this.revision === other.revision;\n\t\t}\n\t\tcopy(other) {\n\t\t\t\tthis.globalId = other.globalId;\n\t\t\t\tthis.revision = other.revision;\n\t\t}\n\t\treset() {\n\t\t\t\tthis.globalId = 0;\n\t\t\t\tthis.revision = 0;\n\t\t}\n\t\tconstructor(){\n\t\t\t\tthis.globalId = 0;\n\t\t\t\tthis.revision = 0;\n\t\t}\n}\n\nlet idCounter = 0;\nclass VersionedObject {\n\t\tconstructor(){\n\t\t\t\tidCounter++;\n\t\t\t\tthis.version = new Version();\n\t\t\t\tthis.version.globalId = idCounter;\n\t\t}\n\t\tincrement() {\n\t\t\t\tthis.version.revision++;\n\t\t}\n}\n\nclass ScopeId {\n\t\tconstructor(name){\n\t\t\t\tthis.name = name;\n\t\t\t\tthis.value = null;\n\t\t\t\tthis.versionObject = new VersionedObject();\n\t\t}\n\t\ttoJSON(key) {\n\t\t\t\treturn undefined;\n\t\t}\n\t\tsetValue(value) {\n\t\t\t\tthis.value = value;\n\t\t\t\tthis.versionObject.increment();\n\t\t}\n\t\tgetValue() {\n\t\t\t\treturn this.value;\n\t\t}\n}\n\nclass ScopeSpace {\n\t\tconstructor(name){\n\t\t\t\tthis.name = name;\n\t\t\t\tthis.variables = new Map();\n\t\t}\n\t\tresolve(name) {\n\t\t\t\tif (!this.variables.has(name)) {\n\t\t\t\t\t\tthis.variables.set(name, new ScopeId(name));\n\t\t\t\t}\n\t\t\t\treturn this.variables.get(name);\n\t\t}\n\t\tremoveValue(value) {\n\t\t\t\tfor(const uniformName in this.variables){\n\t\t\t\t\t\tconst uniform = this.variables[uniformName];\n\t\t\t\t\t\tif (uniform.value === value) {\n\t\t\t\t\t\t\t\tuniform.value = null;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n}\n\nlet id$a = 0;\nclass VertexBuffer {\n\t\tconstructor(graphicsDevice, format, numVertices, options){\n\t\t\t\tthis.usage = BUFFER_STATIC;\n\t\t\t\tthis.usage = options?.usage ?? BUFFER_STATIC;\n\t\t\t\tthis.device = graphicsDevice;\n\t\t\t\tthis.format = format;\n\t\t\t\tthis.numVertices = numVertices;\n\t\t\t\tthis.id = id$a++;\n\t\t\t\tthis.impl = graphicsDevice.createVertexBufferImpl(this, format, options);\n\t\t\t\tthis.numBytes = format.verticesByteSize ? format.verticesByteSize : format.size * numVertices;\n\t\t\t\tthis.adjustVramSizeTracking(graphicsDevice._vram, this.numBytes);\n\t\t\t\tconst initialData = options?.data;\n\t\t\t\tif (initialData) {\n\t\t\t\t\t\tthis.setData(initialData);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.storage = new ArrayBuffer(this.numBytes);\n\t\t\t\t}\n\t\t\t\tthis.device.buffers.push(this);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tconst device = this.device;\n\t\t\t\tconst idx = device.buffers.indexOf(this);\n\t\t\t\tif (idx !== -1) {\n\t\t\t\t\t\tdevice.buffers.splice(idx, 1);\n\t\t\t\t}\n\t\t\t\tif (this.impl.initialized) {\n\t\t\t\t\t\tthis.impl.destroy(device);\n\t\t\t\t\t\tthis.adjustVramSizeTracking(device._vram, -this.storage.byteLength);\n\t\t\t\t}\n\t\t}\n\t\tadjustVramSizeTracking(vram, size) {\n\t\t\t\tvram.vb += size;\n\t\t}\n\t\tloseContext() {\n\t\t\t\tthis.impl.loseContext();\n\t\t}\n\t\tgetFormat() {\n\t\t\t\treturn this.format;\n\t\t}\n\t\tgetUsage() {\n\t\t\t\treturn this.usage;\n\t\t}\n\t\tgetNumVertices() {\n\t\t\t\treturn this.numVertices;\n\t\t}\n\t\tlock() {\n\t\t\t\treturn this.storage;\n\t\t}\n\t\tunlock() {\n\t\t\t\tthis.impl.unlock(this);\n\t\t}\n\t\tsetData(data) {\n\t\t\t\tif (data.byteLength !== this.numBytes) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tthis.storage = data;\n\t\t\t\tthis.unlock();\n\t\t\t\treturn true;\n\t\t}\n}\n\nfunction hashCode(str) {\n\t\tif (str === null || str === undefined) {\n\t\t\t\treturn 0;\n\t\t}\n\t\tlet hash = 0;\n\t\tfor(let i = 0, len = str.length; i < len; i++){\n\t\t\t\thash = (hash << 5) - hash + str.charCodeAt(i);\n\t\t\t\thash |= 0;\n\t\t}\n\t\treturn hash;\n}\nfunction hash32Fnv1a(array) {\n\t\tconst prime = 16777619;\n\t\tlet hash = 2166136261;\n\t\tfor(let i = 0; i < array.length; i++){\n\t\t\t\thash ^= array[i];\n\t\t\t\thash *= prime;\n\t\t}\n\t\treturn hash >>> 0;\n}\n\nconst stringIds$3 = new StringIds();\nconst webgpuValidElementSizes = [\n\t\t2,\n\t\t4,\n\t\t8,\n\t\t12,\n\t\t16\n];\nconst deviceCache$2 = new DeviceCache();\nclass VertexFormat {\n\t\tconstructor(graphicsDevice, description, vertexCount){\n\t\t\t\tthis.device = graphicsDevice;\n\t\t\t\tthis._elements = [];\n\t\t\t\tthis.hasUv0 = false;\n\t\t\t\tthis.hasUv1 = false;\n\t\t\t\tthis.hasColor = false;\n\t\t\t\tthis.hasTangents = false;\n\t\t\t\tthis.verticesByteSize = 0;\n\t\t\t\tthis.vertexCount = vertexCount;\n\t\t\t\tthis.interleaved = vertexCount === undefined;\n\t\t\t\tthis.instancing = false;\n\t\t\t\tthis.size = description.reduce((total, desc)=>{\n\t\t\t\t\t\treturn total + Math.ceil(desc.components * typedArrayTypesByteSize[desc.type] / 4) * 4;\n\t\t\t\t}, 0);\n\t\t\t\tlet offset = 0, elementSize;\n\t\t\t\tfor(let i = 0, len = description.length; i < len; i++){\n\t\t\t\t\t\tconst elementDesc = description[i];\n\t\t\t\t\t\telementSize = elementDesc.components * typedArrayTypesByteSize[elementDesc.type];\n\t\t\t\t\t\tif (vertexCount) {\n\t\t\t\t\t\t\t\toffset = math.roundUp(offset, elementSize);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst asInt = elementDesc.asInt ?? false;\n\t\t\t\t\t\tconst normalize = asInt ? false : elementDesc.normalize ?? false;\n\t\t\t\t\t\tconst element = {\n\t\t\t\t\t\t\t\tname: elementDesc.semantic,\n\t\t\t\t\t\t\t\toffset: vertexCount ? offset : elementDesc.hasOwnProperty('offset') ? elementDesc.offset : offset,\n\t\t\t\t\t\t\t\tstride: vertexCount ? elementSize : elementDesc.hasOwnProperty('stride') ? elementDesc.stride : this.size,\n\t\t\t\t\t\t\t\tdataType: elementDesc.type,\n\t\t\t\t\t\t\t\tnumComponents: elementDesc.components,\n\t\t\t\t\t\t\t\tnormalize: normalize,\n\t\t\t\t\t\t\t\tsize: elementSize,\n\t\t\t\t\t\t\t\tasInt: asInt\n\t\t\t\t\t\t};\n\t\t\t\t\t\tthis._elements.push(element);\n\t\t\t\t\t\tif (vertexCount) {\n\t\t\t\t\t\t\t\toffset += elementSize * vertexCount;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\toffset += Math.ceil(elementSize / 4) * 4;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (elementDesc.semantic === SEMANTIC_TEXCOORD0) {\n\t\t\t\t\t\t\t\tthis.hasUv0 = true;\n\t\t\t\t\t\t} else if (elementDesc.semantic === SEMANTIC_TEXCOORD1) {\n\t\t\t\t\t\t\t\tthis.hasUv1 = true;\n\t\t\t\t\t\t} else if (elementDesc.semantic === SEMANTIC_COLOR) {\n\t\t\t\t\t\t\t\tthis.hasColor = true;\n\t\t\t\t\t\t} else if (elementDesc.semantic === SEMANTIC_TANGENT) {\n\t\t\t\t\t\t\t\tthis.hasTangents = true;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (vertexCount) {\n\t\t\t\t\t\tthis.verticesByteSize = offset;\n\t\t\t\t}\n\t\t\t\tthis._evaluateHash();\n\t\t}\n\t\tget elements() {\n\t\t\t\treturn this._elements;\n\t\t}\n\t\tstatic getDefaultInstancingFormat(graphicsDevice) {\n\t\t\t\treturn deviceCache$2.get(graphicsDevice, ()=>{\n\t\t\t\t\t\treturn new VertexFormat(graphicsDevice, [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tsemantic: SEMANTIC_ATTR11,\n\t\t\t\t\t\t\t\t\t\tcomponents: 4,\n\t\t\t\t\t\t\t\t\t\ttype: TYPE_FLOAT32\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tsemantic: SEMANTIC_ATTR12,\n\t\t\t\t\t\t\t\t\t\tcomponents: 4,\n\t\t\t\t\t\t\t\t\t\ttype: TYPE_FLOAT32\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tsemantic: SEMANTIC_ATTR14,\n\t\t\t\t\t\t\t\t\t\tcomponents: 4,\n\t\t\t\t\t\t\t\t\t\ttype: TYPE_FLOAT32\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tsemantic: SEMANTIC_ATTR15,\n\t\t\t\t\t\t\t\t\t\tcomponents: 4,\n\t\t\t\t\t\t\t\t\t\ttype: TYPE_FLOAT32\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]);\n\t\t\t\t});\n\t\t}\n\t\tstatic isElementValid(graphicsDevice, elementDesc) {\n\t\t\t\tconst elementSize = elementDesc.components * typedArrayTypesByteSize[elementDesc.type];\n\t\t\t\tif (graphicsDevice.isWebGPU && !webgpuValidElementSizes.includes(elementSize)) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t}\n\t\tupdate() {\n\t\t\t\tthis._evaluateHash();\n\t\t}\n\t\t_evaluateHash() {\n\t\t\t\tconst stringElementsBatch = [];\n\t\t\t\tconst stringElementsRender = [];\n\t\t\t\tconst len = this._elements.length;\n\t\t\t\tfor(let i = 0; i < len; i++){\n\t\t\t\t\t\tconst { name, dataType, numComponents, normalize, offset, stride, size, asInt } = this._elements[i];\n\t\t\t\t\t\tconst stringElementBatch = name + dataType + numComponents + normalize + asInt;\n\t\t\t\t\t\tstringElementsBatch.push(stringElementBatch);\n\t\t\t\t\t\tconst stringElementRender = stringElementBatch + offset + stride + size;\n\t\t\t\t\t\tstringElementsRender.push(stringElementRender);\n\t\t\t\t}\n\t\t\t\tstringElementsBatch.sort();\n\t\t\t\tconst batchingString = stringElementsBatch.join();\n\t\t\t\tthis.batchingHash = hashCode(batchingString);\n\t\t\t\tthis.shaderProcessingHashString = batchingString;\n\t\t\t\tthis.renderingHashString = stringElementsRender.join('_');\n\t\t\t\tthis.renderingHash = stringIds$3.get(this.renderingHashString);\n\t\t}\n}\n\nconst stringIds$2 = new StringIds();\nclass StencilParameters {\n\t\tset func(value) {\n\t\t\t\tthis._func = value;\n\t\t\t\tthis._dirty = true;\n\t\t}\n\t\tget func() {\n\t\t\t\treturn this._func;\n\t\t}\n\t\tset ref(value) {\n\t\t\t\tthis._ref = value;\n\t\t\t\tthis._dirty = true;\n\t\t}\n\t\tget ref() {\n\t\t\t\treturn this._ref;\n\t\t}\n\t\tset fail(value) {\n\t\t\t\tthis._fail = value;\n\t\t\t\tthis._dirty = true;\n\t\t}\n\t\tget fail() {\n\t\t\t\treturn this._fail;\n\t\t}\n\t\tset zfail(value) {\n\t\t\t\tthis._zfail = value;\n\t\t\t\tthis._dirty = true;\n\t\t}\n\t\tget zfail() {\n\t\t\t\treturn this._zfail;\n\t\t}\n\t\tset zpass(value) {\n\t\t\t\tthis._zpass = value;\n\t\t\t\tthis._dirty = true;\n\t\t}\n\t\tget zpass() {\n\t\t\t\treturn this._zpass;\n\t\t}\n\t\tset readMask(value) {\n\t\t\t\tthis._readMask = value;\n\t\t\t\tthis._dirty = true;\n\t\t}\n\t\tget readMask() {\n\t\t\t\treturn this._readMask;\n\t\t}\n\t\tset writeMask(value) {\n\t\t\t\tthis._writeMask = value;\n\t\t\t\tthis._dirty = true;\n\t\t}\n\t\tget writeMask() {\n\t\t\t\treturn this._writeMask;\n\t\t}\n\t\tconstructor(options = {}){\n\t\t\t\tthis._dirty = true;\n\t\t\t\tthis._func = options.func ?? FUNC_ALWAYS;\n\t\t\t\tthis._ref = options.ref ?? 0;\n\t\t\t\tthis._readMask = options.readMask ?? 0xFF;\n\t\t\t\tthis._writeMask = options.writeMask ?? 0xFF;\n\t\t\t\tthis._fail = options.fail ?? STENCILOP_KEEP;\n\t\t\t\tthis._zfail = options.zfail ?? STENCILOP_KEEP;\n\t\t\t\tthis._zpass = options.zpass ?? STENCILOP_KEEP;\n\t\t\t\tthis._evalKey();\n\t\t}\n\t\t_evalKey() {\n\t\t\t\tconst { _func, _ref, _fail, _zfail, _zpass, _readMask, _writeMask } = this;\n\t\t\t\tconst key = `${_func},${_ref},${_fail},${_zfail},${_zpass},${_readMask},${_writeMask}`;\n\t\t\t\tthis._key = stringIds$2.get(key);\n\t\t\t\tthis._dirty = false;\n\t\t}\n\t\tget key() {\n\t\t\t\tif (this._dirty) {\n\t\t\t\t\t\tthis._evalKey();\n\t\t\t\t}\n\t\t\t\treturn this._key;\n\t\t}\n\t\tcopy(rhs) {\n\t\t\t\tthis._func = rhs._func;\n\t\t\t\tthis._ref = rhs._ref;\n\t\t\t\tthis._readMask = rhs._readMask;\n\t\t\t\tthis._writeMask = rhs._writeMask;\n\t\t\t\tthis._fail = rhs._fail;\n\t\t\t\tthis._zfail = rhs._zfail;\n\t\t\t\tthis._zpass = rhs._zpass;\n\t\t\t\tthis._dirty = rhs._dirty;\n\t\t\t\tthis._key = rhs._key;\n\t\t\t\treturn this;\n\t\t}\n\t\tclone() {\n\t\t\t\tconst clone = new this.constructor();\n\t\t\t\treturn clone.copy(this);\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.DEFAULT = Object.freeze(new StencilParameters());\n\t\t}\n}\n\nclass GraphicsDevice extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_RESIZE = 'resizecanvas';\n\t\t}\n\t\tconstructor(canvas, options){\n\t\t\t\tsuper(), this.backBuffer = null, this.backBufferSize = new Vec2(), this.backBufferAntialias = false, this.isWebGPU = false, this.isWebGL2 = false, this.isNull = false, this.isHdr = false, this.maxIndirectDrawCount = 1024, this.maxColorAttachments = 1, this.maxSamples = 1, this.supportsMultiDraw = true, this.supportsCompute = false, this.supportsStorageTextureRead = false, this.renderTarget = null, this.shaders = [], this.textures = [], this.targets = new Set(), this.renderVersion = 0, this.insideRenderPass = false, this.supportsUniformBuffers = false, this.supportsClipDistances = false, this.textureRG11B10Renderable = false, this.textureFloatFilterable = false, this.blendState = new BlendState(), this.depthState = new DepthState(), this.stencilEnabled = false, this.stencilFront = new StencilParameters(), this.stencilBack = new StencilParameters(), this._destroyed = false, this.defaultClearOptions = {\n\t\t\t\t\t\tcolor: [\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t1\n\t\t\t\t\t\t],\n\t\t\t\t\t\tdepth: 1,\n\t\t\t\t\t\tstencil: 0,\n\t\t\t\t\t\tflags: CLEARFLAG_COLOR | CLEARFLAG_DEPTH\n\t\t\t\t}, this.clientRect = {\n\t\t\t\t\t\twidth: 0,\n\t\t\t\t\t\theight: 0\n\t\t\t\t}, this._shadersDirty = false, this.capsDefines = new Map(), this.mapsToClear = new Set();\n\t\t\t\tthis.canvas = canvas;\n\t\t\t\tif ('setAttribute' in canvas) {\n\t\t\t\t\t\tcanvas.setAttribute('data-engine', `PlayCanvas ${version}`);\n\t\t\t\t}\n\t\t\t\tthis.initOptions = {\n\t\t\t\t\t\t...options\n\t\t\t\t};\n\t\t\t\tthis.initOptions.alpha ??= true;\n\t\t\t\tthis.initOptions.depth ??= true;\n\t\t\t\tthis.initOptions.stencil ??= true;\n\t\t\t\tthis.initOptions.antialias ??= true;\n\t\t\t\tthis.initOptions.powerPreference ??= 'high-performance';\n\t\t\t\tthis.initOptions.displayFormat ??= DISPLAYFORMAT_LDR;\n\t\t\t\tthis._maxPixelRatio = platform.browser ? Math.min(1, window.devicePixelRatio) : 1;\n\t\t\t\tthis.buffers = [];\n\t\t\t\tthis._vram = {\n\t\t\t\t\t\ttex: 0,\n\t\t\t\t\t\tvb: 0,\n\t\t\t\t\t\tib: 0,\n\t\t\t\t\t\tub: 0,\n\t\t\t\t\t\tsb: 0\n\t\t\t\t};\n\t\t\t\tthis._shaderStats = {\n\t\t\t\t\t\tvsCompiled: 0,\n\t\t\t\t\t\tfsCompiled: 0,\n\t\t\t\t\t\tlinked: 0,\n\t\t\t\t\t\tmaterialShaders: 0,\n\t\t\t\t\t\tcompileTime: 0\n\t\t\t\t};\n\t\t\t\tthis.initializeContextCaches();\n\t\t\t\tthis._drawCallsPerFrame = 0;\n\t\t\t\tthis._shaderSwitchesPerFrame = 0;\n\t\t\t\tthis._primsPerFrame = [];\n\t\t\t\tfor(let i = PRIMITIVE_POINTS; i <= PRIMITIVE_TRIFAN; i++){\n\t\t\t\t\t\tthis._primsPerFrame[i] = 0;\n\t\t\t\t}\n\t\t\t\tthis._renderTargetCreationTime = 0;\n\t\t\t\tthis.scope = new ScopeSpace('Device');\n\t\t\t\tthis.textureBias = this.scope.resolve('textureBias');\n\t\t\t\tthis.textureBias.setValue(0.0);\n\t\t}\n\t\tpostInit() {\n\t\t\t\tconst vertexFormat = new VertexFormat(this, [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tsemantic: SEMANTIC_POSITION,\n\t\t\t\t\t\t\t\tcomponents: 2,\n\t\t\t\t\t\t\t\ttype: TYPE_FLOAT32\n\t\t\t\t\t\t}\n\t\t\t\t]);\n\t\t\t\tconst positions = new Float32Array([\n\t\t\t\t\t\t-1,\n\t\t\t\t\t\t-1,\n\t\t\t\t\t\t1,\n\t\t\t\t\t\t-1,\n\t\t\t\t\t\t-1,\n\t\t\t\t\t\t1,\n\t\t\t\t\t\t1,\n\t\t\t\t\t\t1\n\t\t\t\t]);\n\t\t\t\tthis.quadVertexBuffer = new VertexBuffer(this, vertexFormat, 4, {\n\t\t\t\t\t\tdata: positions\n\t\t\t\t});\n\t\t}\n\t\tinitCapsDefines() {\n\t\t\t\tconst { capsDefines } = this;\n\t\t\t\tcapsDefines.clear();\n\t\t\t\tif (this.textureFloatFilterable) capsDefines.set('CAPS_TEXTURE_FLOAT_FILTERABLE', '');\n\t\t\t\tif (this.textureFloatRenderable) capsDefines.set('CAPS_TEXTURE_FLOAT_RENDERABLE', '');\n\t\t\t\tif (this.supportsMultiDraw) capsDefines.set('CAPS_MULTI_DRAW', '');\n\t\t\t\tif (platform.desktop) capsDefines.set('PLATFORM_DESKTOP', '');\n\t\t\t\tif (platform.mobile) capsDefines.set('PLATFORM_MOBILE', '');\n\t\t\t\tif (platform.android) capsDefines.set('PLATFORM_ANDROID', '');\n\t\t\t\tif (platform.ios) capsDefines.set('PLATFORM_IOS', '');\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.fire('destroy');\n\t\t\t\tthis.quadVertexBuffer?.destroy();\n\t\t\t\tthis.quadVertexBuffer = null;\n\t\t\t\tthis.dynamicBuffers?.destroy();\n\t\t\t\tthis.dynamicBuffers = null;\n\t\t\t\tthis.gpuProfiler?.destroy();\n\t\t\t\tthis.gpuProfiler = null;\n\t\t\t\tthis._destroyed = true;\n\t\t}\n\t\tonDestroyShader(shader) {\n\t\t\t\tthis.fire('destroy:shader', shader);\n\t\t\t\tconst idx = this.shaders.indexOf(shader);\n\t\t\t\tif (idx !== -1) {\n\t\t\t\t\t\tthis.shaders.splice(idx, 1);\n\t\t\t\t}\n\t\t}\n\t\tpostDestroy() {\n\t\t\t\tthis.scope = null;\n\t\t\t\tthis.canvas = null;\n\t\t}\n\t\tloseContext() {\n\t\t\t\tthis.contextLost = true;\n\t\t\t\tthis.backBufferSize.set(-1, -1);\n\t\t\t\tfor (const texture of this.textures){\n\t\t\t\t\t\ttexture.loseContext();\n\t\t\t\t}\n\t\t\t\tfor (const buffer of this.buffers){\n\t\t\t\t\t\tbuffer.loseContext();\n\t\t\t\t}\n\t\t\t\tfor (const target of this.targets){\n\t\t\t\t\t\ttarget.loseContext();\n\t\t\t\t}\n\t\t\t\tthis.gpuProfiler?.loseContext();\n\t\t}\n\t\trestoreContext() {\n\t\t\t\tthis.contextLost = false;\n\t\t\t\tthis.initializeRenderState();\n\t\t\t\tthis.initializeContextCaches();\n\t\t\t\tfor (const buffer of this.buffers){\n\t\t\t\t\t\tbuffer.unlock();\n\t\t\t\t}\n\t\t\t\tthis.gpuProfiler?.restoreContext?.();\n\t\t}\n\t\ttoJSON(key) {\n\t\t\t\treturn undefined;\n\t\t}\n\t\tinitializeContextCaches() {\n\t\t\t\tthis.vertexBuffers = [];\n\t\t\t\tthis.shader = null;\n\t\t\t\tthis.shaderValid = undefined;\n\t\t\t\tthis.shaderAsyncCompile = false;\n\t\t\t\tthis.renderTarget = null;\n\t\t}\n\t\tinitializeRenderState() {\n\t\t\t\tthis.blendState = new BlendState();\n\t\t\t\tthis.depthState = new DepthState();\n\t\t\t\tthis.cullMode = CULLFACE_BACK;\n\t\t\t\tthis.vx = this.vy = this.vw = this.vh = 0;\n\t\t\t\tthis.sx = this.sy = this.sw = this.sh = 0;\n\t\t\t\tthis.blendColor = new Color(0, 0, 0, 0);\n\t\t}\n\t\tsetStencilState(stencilFront, stencilBack) {}\n\t\tsetBlendState(blendState) {}\n\t\tsetBlendColor(r, g, b, a) {}\n\t\tsetDepthState(depthState) {}\n\t\tsetCullMode(cullMode) {}\n\t\tsetRenderTarget(renderTarget) {\n\t\t\t\tthis.renderTarget = renderTarget;\n\t\t}\n\t\tsetVertexBuffer(vertexBuffer) {\n\t\t\t\tif (vertexBuffer) {\n\t\t\t\t\t\tthis.vertexBuffers.push(vertexBuffer);\n\t\t\t\t}\n\t\t}\n\t\tclearVertexBuffer() {\n\t\t\t\tthis.vertexBuffers.length = 0;\n\t\t}\n\t\tgetIndirectDrawSlot(count = 1) {\n\t\t\t\treturn 0;\n\t\t}\n\t\tget indirectDrawBuffer() {\n\t\t\t\treturn null;\n\t\t}\n\t\tgetRenderTarget() {\n\t\t\t\treturn this.renderTarget;\n\t\t}\n\t\tinitRenderTarget(target) {\n\t\t\t\tif (target.initialized) return;\n\t\t\t\ttarget.init();\n\t\t\t\tthis.targets.add(target);\n\t\t}\n\t\tdraw(primitive, indexBuffer, numInstances, drawCommands, first = true, last = true) {}\n\t\t_isBrowserInterface(texture) {\n\t\t\t\treturn this._isImageBrowserInterface(texture) || this._isImageCanvasInterface(texture) || this._isImageVideoInterface(texture);\n\t\t}\n\t\t_isImageBrowserInterface(texture) {\n\t\t\t\treturn typeof ImageBitmap !== 'undefined' && texture instanceof ImageBitmap || typeof HTMLImageElement !== 'undefined' && texture instanceof HTMLImageElement;\n\t\t}\n\t\t_isImageCanvasInterface(texture) {\n\t\t\t\treturn typeof HTMLCanvasElement !== 'undefined' && texture instanceof HTMLCanvasElement;\n\t\t}\n\t\t_isImageVideoInterface(texture) {\n\t\t\t\treturn typeof HTMLVideoElement !== 'undefined' && texture instanceof HTMLVideoElement;\n\t\t}\n\t\tresizeCanvas(width, height) {\n\t\t\t\tconst pixelRatio = Math.min(this._maxPixelRatio, platform.browser ? window.devicePixelRatio : 1);\n\t\t\t\tconst w = Math.floor(width * pixelRatio);\n\t\t\t\tconst h = Math.floor(height * pixelRatio);\n\t\t\t\tif (w !== this.canvas.width || h !== this.canvas.height) {\n\t\t\t\t\t\tthis.setResolution(w, h);\n\t\t\t\t}\n\t\t}\n\t\tsetResolution(width, height) {\n\t\t\t\tthis.canvas.width = width;\n\t\t\t\tthis.canvas.height = height;\n\t\t\t\tthis.fire(GraphicsDevice.EVENT_RESIZE, width, height);\n\t\t}\n\t\tupdate() {\n\t\t\t\tthis.updateClientRect();\n\t\t}\n\t\tupdateClientRect() {\n\t\t\t\tif (platform.worker) {\n\t\t\t\t\t\tthis.clientRect.width = this.canvas.width;\n\t\t\t\t\t\tthis.clientRect.height = this.canvas.height;\n\t\t\t\t} else {\n\t\t\t\t\t\tconst rect = this.canvas.getBoundingClientRect();\n\t\t\t\t\t\tthis.clientRect.width = rect.width;\n\t\t\t\t\t\tthis.clientRect.height = rect.height;\n\t\t\t\t}\n\t\t}\n\t\tget width() {\n\t\t\t\treturn this.canvas.width;\n\t\t}\n\t\tget height() {\n\t\t\t\treturn this.canvas.height;\n\t\t}\n\t\tset fullscreen(fullscreen) {}\n\t\tget fullscreen() {\n\t\t\t\treturn false;\n\t\t}\n\t\tset maxPixelRatio(ratio) {\n\t\t\t\tthis._maxPixelRatio = ratio;\n\t\t}\n\t\tget maxPixelRatio() {\n\t\t\t\treturn this._maxPixelRatio;\n\t\t}\n\t\tget deviceType() {\n\t\t\t\treturn this._deviceType;\n\t\t}\n\t\tstartRenderPass(renderPass) {}\n\t\tendRenderPass(renderPass) {}\n\t\tstartComputePass(name) {}\n\t\tendComputePass() {}\n\t\tframeStart() {\n\t\t\t\tthis.renderPassIndex = 0;\n\t\t\t\tthis.renderVersion++;\n\t\t}\n\t\tframeEnd() {\n\t\t\t\tthis.mapsToClear.forEach((map)=>map.clear());\n\t\t\t\tthis.mapsToClear.clear();\n\t\t}\n\t\tcomputeDispatch(computes, name = 'Unnamed') {}\n\t\tgetRenderableHdrFormat(formats = [\n\t\t\t\tPIXELFORMAT_111110F,\n\t\t\t\tPIXELFORMAT_RGBA16F,\n\t\t\t\tPIXELFORMAT_RGBA32F\n\t\t], filterable = true, samples = 1) {\n\t\t\t\tfor(let i = 0; i < formats.length; i++){\n\t\t\t\t\t\tconst format = formats[i];\n\t\t\t\t\t\tswitch(format){\n\t\t\t\t\t\t\t\tcase PIXELFORMAT_111110F:\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tif (this.textureRG11B10Renderable) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn format;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcase PIXELFORMAT_RGBA16F:\n\t\t\t\t\t\t\t\t\t\tif (this.textureHalfFloatRenderable) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn format;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase PIXELFORMAT_RGBA32F:\n\t\t\t\t\t\t\t\t\t\tif (this.isWebGPU && samples > 1) {\n\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (this.textureFloatRenderable && (!filterable || this.textureFloatFilterable)) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn format;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn undefined;\n\t\t}\n\t\tvalidateAttributes(shader, vb0Format, vb1Format) {}\n}\n\nlet id$9 = 0;\nclass RenderTarget {\n\t\tconstructor(options = {}){\n\t\t\t\tthis.id = id$9++;\n\t\t\t\tconst device = options.colorBuffer?.device ?? options.colorBuffers?.[0].device ?? options.depthBuffer?.device ?? options.graphicsDevice;\n\t\t\t\tthis._device = device;\n\t\t\t\tconst { maxSamples } = this._device;\n\t\t\t\tthis._samples = Math.min(options.samples ?? 1, maxSamples);\n\t\t\t\tif (device.isWebGPU) {\n\t\t\t\t\t\tthis._samples = this._samples > 1 ? maxSamples : 1;\n\t\t\t\t}\n\t\t\t\tthis._colorBuffer = options.colorBuffer;\n\t\t\t\tif (options.colorBuffer) {\n\t\t\t\t\t\tthis._colorBuffers = [\n\t\t\t\t\t\t\t\toptions.colorBuffer\n\t\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t\tthis._depthBuffer = options.depthBuffer;\n\t\t\t\tthis._face = options.face ?? 0;\n\t\t\t\tif (this._depthBuffer) {\n\t\t\t\t\t\tconst format = this._depthBuffer._format;\n\t\t\t\t\t\tif (format === PIXELFORMAT_DEPTH || format === PIXELFORMAT_DEPTH16) {\n\t\t\t\t\t\t\t\tthis._depth = true;\n\t\t\t\t\t\t\t\tthis._stencil = false;\n\t\t\t\t\t\t} else if (format === PIXELFORMAT_DEPTHSTENCIL) {\n\t\t\t\t\t\t\t\tthis._depth = true;\n\t\t\t\t\t\t\t\tthis._stencil = true;\n\t\t\t\t\t\t} else if (format === PIXELFORMAT_R32F && this._depthBuffer.device.isWebGPU && this._samples > 1) {\n\t\t\t\t\t\t\t\tthis._depth = true;\n\t\t\t\t\t\t\t\tthis._stencil = false;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._depth = false;\n\t\t\t\t\t\t\t\tthis._stencil = false;\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._depth = options.depth ?? true;\n\t\t\t\t\t\tthis._stencil = options.stencil ?? false;\n\t\t\t\t}\n\t\t\t\tif (options.colorBuffers) {\n\t\t\t\t\t\tif (!this._colorBuffers) {\n\t\t\t\t\t\t\t\tthis._colorBuffers = [\n\t\t\t\t\t\t\t\t\t\t...options.colorBuffers\n\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\tthis._colorBuffer = options.colorBuffers[0];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.autoResolve = options.autoResolve ?? true;\n\t\t\t\tthis.name = options.name;\n\t\t\t\tif (!this.name) {\n\t\t\t\t\t\tthis.name = this._colorBuffer?.name;\n\t\t\t\t}\n\t\t\t\tif (!this.name) {\n\t\t\t\t\t\tthis.name = this._depthBuffer?.name;\n\t\t\t\t}\n\t\t\t\tif (!this.name) {\n\t\t\t\t\t\tthis.name = 'Untitled';\n\t\t\t\t}\n\t\t\t\tthis.flipY = options.flipY ?? false;\n\t\t\t\tthis._mipLevel = options.mipLevel ?? 0;\n\t\t\t\tif (this._mipLevel > 0 && this._depth) {\n\t\t\t\t\t\tthis._mipLevel = 0;\n\t\t\t\t}\n\t\t\t\tthis._mipmaps = options.mipLevel === undefined;\n\t\t\t\tthis.evaluateDimensions();\n\t\t\t\tthis.validateMrt();\n\t\t\t\tthis.impl = device.createRenderTargetImpl(this);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tconst device = this._device;\n\t\t\t\tif (device) {\n\t\t\t\t\t\tdevice.targets.delete(this);\n\t\t\t\t\t\tif (device.renderTarget === this) {\n\t\t\t\t\t\t\t\tdevice.setRenderTarget(null);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.destroyFrameBuffers();\n\t\t\t\t}\n\t\t}\n\t\tdestroyFrameBuffers() {\n\t\t\t\tconst device = this._device;\n\t\t\t\tif (device) {\n\t\t\t\t\t\tthis.impl.destroy(device);\n\t\t\t\t}\n\t\t}\n\t\tdestroyTextureBuffers() {\n\t\t\t\tthis._depthBuffer?.destroy();\n\t\t\t\tthis._depthBuffer = null;\n\t\t\t\tthis._colorBuffers?.forEach((colorBuffer)=>{\n\t\t\t\t\t\tcolorBuffer.destroy();\n\t\t\t\t});\n\t\t\t\tthis._colorBuffers = null;\n\t\t\t\tthis._colorBuffer = null;\n\t\t}\n\t\tresize(width, height) {\n\t\t\t\tif (this.mipLevel > 0) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._depthBuffer?.resize(width, height);\n\t\t\t\tthis._colorBuffers?.forEach((colorBuffer)=>{\n\t\t\t\t\t\tcolorBuffer.resize(width, height);\n\t\t\t\t});\n\t\t\t\tif (this._width !== width || this._height !== height) {\n\t\t\t\t\t\tthis.destroyFrameBuffers();\n\t\t\t\t\t\tconst device = this._device;\n\t\t\t\t\t\tif (device.renderTarget === this) {\n\t\t\t\t\t\t\t\tdevice.setRenderTarget(null);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.evaluateDimensions();\n\t\t\t\t\t\tthis.validateMrt();\n\t\t\t\t\t\tthis.impl = device.createRenderTargetImpl(this);\n\t\t\t\t}\n\t\t}\n\t\tvalidateMrt() {}\n\t\tevaluateDimensions() {\n\t\t\t\tconst buffer = this._colorBuffer ?? this._depthBuffer;\n\t\t\t\tif (buffer) {\n\t\t\t\t\t\tthis._width = buffer.width;\n\t\t\t\t\t\tthis._height = buffer.height;\n\t\t\t\t\t\tif (this._mipLevel > 0) {\n\t\t\t\t\t\t\t\tthis._width = TextureUtils.calcLevelDimension(this._width, this._mipLevel);\n\t\t\t\t\t\t\t\tthis._height = TextureUtils.calcLevelDimension(this._height, this._mipLevel);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tinit() {\n\t\t\t\tthis.impl.init(this._device, this);\n\t\t}\n\t\tget initialized() {\n\t\t\t\treturn this.impl.initialized;\n\t\t}\n\t\tget device() {\n\t\t\t\treturn this._device;\n\t\t}\n\t\tloseContext() {\n\t\t\t\tthis.impl.loseContext();\n\t\t}\n\t\tresolve(color = true, depth = !!this._depthBuffer) {\n\t\t\t\tif (this._device && this._samples > 1) {\n\t\t\t\t\t\tthis.impl.resolve(this._device, this, color, depth);\n\t\t\t\t}\n\t\t}\n\t\tcopy(source, color, depth) {\n\t\t\t\tif (!this._device) {\n\t\t\t\t\t\tif (source._device) {\n\t\t\t\t\t\t\t\tthis._device = source._device;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst success = this._device.copyRenderTarget(source, this, color, depth);\n\t\t\t\treturn success;\n\t\t}\n\t\tget samples() {\n\t\t\t\treturn this._samples;\n\t\t}\n\t\tget depth() {\n\t\t\t\treturn this._depth;\n\t\t}\n\t\tget stencil() {\n\t\t\t\treturn this._stencil;\n\t\t}\n\t\tget colorBuffer() {\n\t\t\t\treturn this._colorBuffer;\n\t\t}\n\t\tgetColorBuffer(index) {\n\t\t\t\treturn this._colorBuffers?.[index];\n\t\t}\n\t\tget depthBuffer() {\n\t\t\t\treturn this._depthBuffer;\n\t\t}\n\t\tget face() {\n\t\t\t\treturn this._face;\n\t\t}\n\t\tget mipLevel() {\n\t\t\t\treturn this._mipLevel;\n\t\t}\n\t\tget mipmaps() {\n\t\t\t\treturn this._mipmaps;\n\t\t}\n\t\tget width() {\n\t\t\t\treturn this._width ?? this._device.width;\n\t\t}\n\t\tget height() {\n\t\t\t\treturn this._height ?? this._device.height;\n\t\t}\n\t\tisColorBufferSrgb(index = 0) {\n\t\t\t\tif (this.device.backBuffer === this) {\n\t\t\t\t\t\treturn isSrgbPixelFormat(this.device.backBufferFormat);\n\t\t\t\t}\n\t\t\t\tconst colorBuffer = this.getColorBuffer(index);\n\t\t\t\treturn colorBuffer ? isSrgbPixelFormat(colorBuffer.format) : false;\n\t\t}\n}\n\nclass WebgpuBindGroup {\n\t\tupdate(bindGroup) {\n\t\t\t\tthis.destroy();\n\t\t\t\tconst device = bindGroup.device;\n\t\t\t\tconst desc = this.createDescriptor(device, bindGroup);\n\t\t\t\tthis.bindGroup = device.wgpu.createBindGroup(desc);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.bindGroup = null;\n\t\t}\n\t\tcreateDescriptor(device, bindGroup) {\n\t\t\t\tconst entries = [];\n\t\t\t\tconst format = bindGroup.format;\n\t\t\t\tconst uniformBufferFormats = bindGroup.format.uniformBufferFormats;\n\t\t\t\tbindGroup.uniformBuffers.forEach((ub, i)=>{\n\t\t\t\t\t\tconst slot = uniformBufferFormats[i].slot;\n\t\t\t\t\t\tconst buffer = ub.persistent ? ub.impl.buffer : ub.allocation.gpuBuffer.buffer;\n\t\t\t\t\t\tentries.push({\n\t\t\t\t\t\t\t\tbinding: slot,\n\t\t\t\t\t\t\t\tresource: {\n\t\t\t\t\t\t\t\t\t\tbuffer: buffer,\n\t\t\t\t\t\t\t\t\t\toffset: 0,\n\t\t\t\t\t\t\t\t\t\tsize: ub.format.byteSize\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tconst textureFormats = bindGroup.format.textureFormats;\n\t\t\t\tbindGroup.textures.forEach((tex, textureIndex)=>{\n\t\t\t\t\t\tconst wgpuTexture = tex.impl;\n\t\t\t\t\t\tconst textureFormat = format.textureFormats[textureIndex];\n\t\t\t\t\t\tconst slot = textureFormats[textureIndex].slot;\n\t\t\t\t\t\tconst view = wgpuTexture.getView(device);\n\t\t\t\t\t\tentries.push({\n\t\t\t\t\t\t\t\tbinding: slot,\n\t\t\t\t\t\t\t\tresource: view\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (textureFormat.hasSampler) {\n\t\t\t\t\t\t\t\tconst sampler = wgpuTexture.getSampler(device, textureFormat.sampleType);\n\t\t\t\t\t\t\t\tentries.push({\n\t\t\t\t\t\t\t\t\t\tbinding: slot + 1,\n\t\t\t\t\t\t\t\t\t\tresource: sampler\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tconst storageTextureFormats = bindGroup.format.storageTextureFormats;\n\t\t\t\tbindGroup.storageTextures.forEach((tex, textureIndex)=>{\n\t\t\t\t\t\tconst wgpuTexture = tex.impl;\n\t\t\t\t\t\tconst slot = storageTextureFormats[textureIndex].slot;\n\t\t\t\t\t\tconst view = wgpuTexture.getView(device);\n\t\t\t\t\t\tentries.push({\n\t\t\t\t\t\t\t\tbinding: slot,\n\t\t\t\t\t\t\t\tresource: view\n\t\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tconst storageBufferFormats = bindGroup.format.storageBufferFormats;\n\t\t\t\tbindGroup.storageBuffers.forEach((buffer, bufferIndex)=>{\n\t\t\t\t\t\tconst wgpuBuffer = buffer.impl.buffer;\n\t\t\t\t\t\tconst slot = storageBufferFormats[bufferIndex].slot;\n\t\t\t\t\t\tentries.push({\n\t\t\t\t\t\t\t\tbinding: slot,\n\t\t\t\t\t\t\t\tresource: {\n\t\t\t\t\t\t\t\t\t\tbuffer: wgpuBuffer\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tconst desc = {\n\t\t\t\t\t\tlayout: bindGroup.format.impl.bindGroupLayout,\n\t\t\t\t\t\tentries: entries\n\t\t\t\t};\n\t\t\t\treturn desc;\n\t\t}\n}\n\nclass WebgpuUtils {\n\t\tstatic shaderStage(stage) {\n\t\t\t\tlet ret = 0;\n\t\t\t\tif (stage & SHADERSTAGE_VERTEX) ret |= GPUShaderStage.VERTEX;\n\t\t\t\tif (stage & SHADERSTAGE_FRAGMENT) ret |= GPUShaderStage.FRAGMENT;\n\t\t\t\tif (stage & SHADERSTAGE_COMPUTE) ret |= GPUShaderStage.COMPUTE;\n\t\t\t\treturn ret;\n\t\t}\n}\n\nconst gpuTextureFormats = [];\ngpuTextureFormats[PIXELFORMAT_A8] = '';\ngpuTextureFormats[PIXELFORMAT_L8] = '';\ngpuTextureFormats[PIXELFORMAT_LA8] = '';\ngpuTextureFormats[PIXELFORMAT_R8] = 'r8unorm';\ngpuTextureFormats[PIXELFORMAT_RG8] = 'rg8unorm';\ngpuTextureFormats[PIXELFORMAT_RGB565] = '';\ngpuTextureFormats[PIXELFORMAT_RGBA5551] = '';\ngpuTextureFormats[PIXELFORMAT_RGBA4] = '';\ngpuTextureFormats[PIXELFORMAT_RGB8] = 'rgba8unorm';\ngpuTextureFormats[PIXELFORMAT_RGBA8] = 'rgba8unorm';\ngpuTextureFormats[PIXELFORMAT_DXT1] = 'bc1-rgba-unorm';\ngpuTextureFormats[PIXELFORMAT_DXT3] = 'bc2-rgba-unorm';\ngpuTextureFormats[PIXELFORMAT_DXT5] = 'bc3-rgba-unorm';\ngpuTextureFormats[PIXELFORMAT_RGB16F] = '';\ngpuTextureFormats[PIXELFORMAT_RGBA16F] = 'rgba16float';\ngpuTextureFormats[PIXELFORMAT_R16F] = 'r16float';\ngpuTextureFormats[PIXELFORMAT_RG16F] = 'rg16float';\ngpuTextureFormats[PIXELFORMAT_RGB32F] = '';\ngpuTextureFormats[PIXELFORMAT_RGBA32F] = 'rgba32float';\ngpuTextureFormats[PIXELFORMAT_R32F] = 'r32float';\ngpuTextureFormats[PIXELFORMAT_DEPTH] = 'depth32float';\ngpuTextureFormats[PIXELFORMAT_DEPTH16] = 'depth16unorm';\ngpuTextureFormats[PIXELFORMAT_DEPTHSTENCIL] = 'depth24plus-stencil8';\ngpuTextureFormats[PIXELFORMAT_111110F] = 'rg11b10ufloat';\ngpuTextureFormats[PIXELFORMAT_SRGB8] = '';\ngpuTextureFormats[PIXELFORMAT_SRGBA8] = 'rgba8unorm-srgb';\ngpuTextureFormats[PIXELFORMAT_ETC1] = '';\ngpuTextureFormats[PIXELFORMAT_ETC2_RGB] = 'etc2-rgb8unorm';\ngpuTextureFormats[PIXELFORMAT_ETC2_RGBA] = 'etc2-rgba8unorm';\ngpuTextureFormats[PIXELFORMAT_PVRTC_2BPP_RGB_1] = '';\ngpuTextureFormats[PIXELFORMAT_PVRTC_2BPP_RGBA_1] = '';\ngpuTextureFormats[PIXELFORMAT_PVRTC_4BPP_RGB_1] = '';\ngpuTextureFormats[PIXELFORMAT_PVRTC_4BPP_RGBA_1] = '';\ngpuTextureFormats[PIXELFORMAT_ASTC_4x4] = 'astc-4x4-unorm';\ngpuTextureFormats[PIXELFORMAT_ATC_RGB] = '';\ngpuTextureFormats[PIXELFORMAT_ATC_RGBA] = '';\ngpuTextureFormats[PIXELFORMAT_BGRA8] = 'bgra8unorm';\ngpuTextureFormats[PIXELFORMAT_SBGRA8] = 'bgra8unorm-srgb';\ngpuTextureFormats[PIXELFORMAT_R8I] = 'r8sint';\ngpuTextureFormats[PIXELFORMAT_R8U] = 'r8uint';\ngpuTextureFormats[PIXELFORMAT_R16I] = 'r16sint';\ngpuTextureFormats[PIXELFORMAT_R16U] = 'r16uint';\ngpuTextureFormats[PIXELFORMAT_R32I] = 'r32sint';\ngpuTextureFormats[PIXELFORMAT_R32U] = 'r32uint';\ngpuTextureFormats[PIXELFORMAT_RG8I] = 'rg8sint';\ngpuTextureFormats[PIXELFORMAT_RG8U] = 'rg8uint';\ngpuTextureFormats[PIXELFORMAT_RG16I] = 'rg16sint';\ngpuTextureFormats[PIXELFORMAT_RG16U] = 'rg16uint';\ngpuTextureFormats[PIXELFORMAT_RG32I] = 'rg32sint';\ngpuTextureFormats[PIXELFORMAT_RG32U] = 'rg32uint';\ngpuTextureFormats[PIXELFORMAT_RGBA8I] = 'rgba8sint';\ngpuTextureFormats[PIXELFORMAT_RGBA8U] = 'rgba8uint';\ngpuTextureFormats[PIXELFORMAT_RGBA16I] = 'rgba16sint';\ngpuTextureFormats[PIXELFORMAT_RGBA16U] = 'rgba16uint';\ngpuTextureFormats[PIXELFORMAT_RGBA32I] = 'rgba32sint';\ngpuTextureFormats[PIXELFORMAT_RGBA32U] = 'rgba32uint';\ngpuTextureFormats[PIXELFORMAT_BC6F] = 'bc6h-rgb-float';\ngpuTextureFormats[PIXELFORMAT_BC6UF] = 'bc6h-rgb-ufloat';\ngpuTextureFormats[PIXELFORMAT_BC7] = 'bc7-rgba-unorm';\ngpuTextureFormats[PIXELFORMAT_DXT1_SRGB] = 'bc1-rgba-unorm-srgb';\ngpuTextureFormats[PIXELFORMAT_DXT3_SRGBA] = 'bc2-rgba-unorm-srgb';\ngpuTextureFormats[PIXELFORMAT_DXT5_SRGBA] = 'bc3-rgba-unorm-srgb';\ngpuTextureFormats[PIXELFORMAT_ETC2_SRGB] = 'etc2-rgb8unorm-srgb';\ngpuTextureFormats[PIXELFORMAT_ETC2_SRGBA] = 'etc2-rgba8unorm-srgb';\ngpuTextureFormats[PIXELFORMAT_BC7_SRGBA] = 'bc7-rgba-unorm-srgb';\ngpuTextureFormats[PIXELFORMAT_ASTC_4x4_SRGB] = 'astc-4x4-unorm-srgb';\n\nconst samplerTypes = [];\nsamplerTypes[SAMPLETYPE_FLOAT] = 'filtering';\nsamplerTypes[SAMPLETYPE_UNFILTERABLE_FLOAT] = 'non-filtering';\nsamplerTypes[SAMPLETYPE_DEPTH] = 'comparison';\nsamplerTypes[SAMPLETYPE_INT] = 'comparison';\nsamplerTypes[SAMPLETYPE_UINT] = 'comparison';\nconst sampleTypes = [];\nsampleTypes[SAMPLETYPE_FLOAT] = 'float';\nsampleTypes[SAMPLETYPE_UNFILTERABLE_FLOAT] = 'unfilterable-float';\nsampleTypes[SAMPLETYPE_DEPTH] = 'depth';\nsampleTypes[SAMPLETYPE_INT] = 'sint';\nsampleTypes[SAMPLETYPE_UINT] = 'uint';\nconst stringIds$1 = new StringIds();\nclass WebgpuBindGroupFormat {\n\t\tconstructor(bindGroupFormat){\n\t\t\t\tconst device = bindGroupFormat.device;\n\t\t\t\tconst { key, desc } = this.createDescriptor(bindGroupFormat);\n\t\t\t\tthis.key = stringIds$1.get(key);\n\t\t\t\tthis.bindGroupLayout = device.wgpu.createBindGroupLayout(desc);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.bindGroupLayout = null;\n\t\t}\n\t\tloseContext() {}\n\t\tcreateDescriptor(bindGroupFormat) {\n\t\t\t\tconst entries = [];\n\t\t\t\tlet key = '';\n\t\t\t\tbindGroupFormat.uniformBufferFormats.forEach((bufferFormat)=>{\n\t\t\t\t\t\tconst visibility = WebgpuUtils.shaderStage(bufferFormat.visibility);\n\t\t\t\t\t\tkey += `#${bufferFormat.slot}U:${visibility}`;\n\t\t\t\t\t\tentries.push({\n\t\t\t\t\t\t\t\tbinding: bufferFormat.slot,\n\t\t\t\t\t\t\t\tvisibility: visibility,\n\t\t\t\t\t\t\t\tbuffer: {\n\t\t\t\t\t\t\t\t\t\ttype: 'uniform',\n\t\t\t\t\t\t\t\t\t\thasDynamicOffset: true\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tbindGroupFormat.textureFormats.forEach((textureFormat)=>{\n\t\t\t\t\t\tconst visibility = WebgpuUtils.shaderStage(textureFormat.visibility);\n\t\t\t\t\t\tconst sampleType = textureFormat.sampleType;\n\t\t\t\t\t\tconst viewDimension = textureFormat.textureDimension;\n\t\t\t\t\t\tconst multisampled = false;\n\t\t\t\t\t\tconst gpuSampleType = sampleTypes[sampleType];\n\t\t\t\t\t\tkey += `#${textureFormat.slot}T:${visibility}-${gpuSampleType}-${viewDimension}-${multisampled}`;\n\t\t\t\t\t\tentries.push({\n\t\t\t\t\t\t\t\tbinding: textureFormat.slot,\n\t\t\t\t\t\t\t\tvisibility: visibility,\n\t\t\t\t\t\t\t\ttexture: {\n\t\t\t\t\t\t\t\t\t\tsampleType: gpuSampleType,\n\t\t\t\t\t\t\t\t\t\tviewDimension: viewDimension,\n\t\t\t\t\t\t\t\t\t\tmultisampled: multisampled\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (textureFormat.hasSampler) {\n\t\t\t\t\t\t\t\tconst gpuSamplerType = samplerTypes[sampleType];\n\t\t\t\t\t\t\t\tkey += `#${textureFormat.slot + 1}S:${visibility}-${gpuSamplerType}`;\n\t\t\t\t\t\t\t\tentries.push({\n\t\t\t\t\t\t\t\t\t\tbinding: textureFormat.slot + 1,\n\t\t\t\t\t\t\t\t\t\tvisibility: visibility,\n\t\t\t\t\t\t\t\t\t\tsampler: {\n\t\t\t\t\t\t\t\t\t\t\t\ttype: gpuSamplerType\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tbindGroupFormat.storageTextureFormats.forEach((textureFormat)=>{\n\t\t\t\t\t\tconst { format, textureDimension } = textureFormat;\n\t\t\t\t\t\tconst { read, write } = textureFormat;\n\t\t\t\t\t\tkey += `#${textureFormat.slot}ST:${format}-${textureDimension}-${read ? 'r1' : 'r0'}-${write ? 'w1' : 'w0'}`;\n\t\t\t\t\t\tentries.push({\n\t\t\t\t\t\t\t\tbinding: textureFormat.slot,\n\t\t\t\t\t\t\t\tvisibility: GPUShaderStage.COMPUTE,\n\t\t\t\t\t\t\t\tstorageTexture: {\n\t\t\t\t\t\t\t\t\t\taccess: read ? write ? 'read-write' : 'read-only' : 'write-only',\n\t\t\t\t\t\t\t\t\t\tformat: gpuTextureFormats[format],\n\t\t\t\t\t\t\t\t\t\tviewDimension: textureDimension\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tbindGroupFormat.storageBufferFormats.forEach((bufferFormat)=>{\n\t\t\t\t\t\tconst readOnly = bufferFormat.readOnly;\n\t\t\t\t\t\tconst visibility = WebgpuUtils.shaderStage(bufferFormat.visibility);\n\t\t\t\t\t\tkey += `#${bufferFormat.slot}SB:${visibility}-${readOnly ? 'ro' : 'rw'}`;\n\t\t\t\t\t\tentries.push({\n\t\t\t\t\t\t\t\tbinding: bufferFormat.slot,\n\t\t\t\t\t\t\t\tvisibility: visibility,\n\t\t\t\t\t\t\t\tbuffer: {\n\t\t\t\t\t\t\t\t\t\ttype: readOnly ? 'read-only-storage' : 'storage'\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tconst desc = {\n\t\t\t\t\t\tentries: entries\n\t\t\t\t};\n\t\t\t\treturn {\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\tdesc\n\t\t\t\t};\n\t\t}\n}\n\nclass WebgpuBuffer {\n\t\tconstructor(usageFlags = 0){\n\t\t\t\tthis.buffer = null;\n\t\t\t\tthis.usageFlags = 0;\n\t\t\t\tthis.usageFlags = usageFlags;\n\t\t}\n\t\tdestroy(device) {\n\t\t\t\tif (this.buffer) {\n\t\t\t\t\t\tthis.buffer.destroy();\n\t\t\t\t\t\tthis.buffer = null;\n\t\t\t\t}\n\t\t}\n\t\tget initialized() {\n\t\t\t\treturn !!this.buffer;\n\t\t}\n\t\tloseContext() {}\n\t\tallocate(device, size) {\n\t\t\t\tthis.buffer = device.wgpu.createBuffer({\n\t\t\t\t\t\tsize,\n\t\t\t\t\t\tusage: this.usageFlags\n\t\t\t\t});\n\t\t}\n\t\tunlock(device, storage) {\n\t\t\t\tconst wgpu = device.wgpu;\n\t\t\t\tif (!this.buffer) {\n\t\t\t\t\t\tconst size = storage.byteLength + 3 & -4;\n\t\t\t\t\t\tthis.usageFlags |= GPUBufferUsage.COPY_DST;\n\t\t\t\t\t\tthis.allocate(device, size);\n\t\t\t\t}\n\t\t\t\tconst srcOffset = storage.byteOffset ?? 0;\n\t\t\t\tconst srcData = new Uint8Array(storage.buffer ?? storage, srcOffset, storage.byteLength);\n\t\t\t\tconst data = new Uint8Array(this.buffer.size);\n\t\t\t\tdata.set(srcData);\n\t\t\t\twgpu.queue.writeBuffer(this.buffer, 0, data, 0, data.length);\n\t\t}\n\t\tread(device, offset, size, data, immediate) {\n\t\t\t\treturn device.readStorageBuffer(this, offset, size, data, immediate);\n\t\t}\n\t\twrite(device, bufferOffset, data, dataOffset, size) {\n\t\t\t\tdevice.writeStorageBuffer(this, bufferOffset, data, dataOffset, size);\n\t\t}\n\t\tclear(device, offset, size) {\n\t\t\t\tdevice.clearStorageBuffer(this, offset, size);\n\t\t}\n}\n\nclass WebgpuIndexBuffer extends WebgpuBuffer {\n\t\tconstructor(indexBuffer, options){\n\t\t\t\tsuper(BUFFERUSAGE_INDEX | (options?.storage ? BUFFERUSAGE_STORAGE : 0)), this.format = null;\n\t\t\t\tthis.format = indexBuffer.format === INDEXFORMAT_UINT16 ? 'uint16' : 'uint32';\n\t\t}\n\t\tunlock(indexBuffer) {\n\t\t\t\tconst device = indexBuffer.device;\n\t\t\t\tsuper.unlock(device, indexBuffer.storage);\n\t\t}\n}\n\nconst array$1 = {\n\t\tequals (arr1, arr2) {\n\t\t\t\tif (arr1.length !== arr2.length) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < arr1.length; i++){\n\t\t\t\t\t\tif (arr1[i] !== arr2[i]) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t}\n};\n\nconst gpuVertexFormats = [];\ngpuVertexFormats[TYPE_INT8] = 'sint8';\ngpuVertexFormats[TYPE_UINT8] = 'uint8';\ngpuVertexFormats[TYPE_INT16] = 'sint16';\ngpuVertexFormats[TYPE_UINT16] = 'uint16';\ngpuVertexFormats[TYPE_INT32] = 'sint32';\ngpuVertexFormats[TYPE_UINT32] = 'uint32';\ngpuVertexFormats[TYPE_FLOAT32] = 'float32';\ngpuVertexFormats[TYPE_FLOAT16] = 'float16';\nconst gpuVertexFormatsNormalized = [];\ngpuVertexFormatsNormalized[TYPE_INT8] = 'snorm8';\ngpuVertexFormatsNormalized[TYPE_UINT8] = 'unorm8';\ngpuVertexFormatsNormalized[TYPE_INT16] = 'snorm16';\ngpuVertexFormatsNormalized[TYPE_UINT16] = 'unorm16';\ngpuVertexFormatsNormalized[TYPE_INT32] = 'sint32';\ngpuVertexFormatsNormalized[TYPE_UINT32] = 'uint32';\ngpuVertexFormatsNormalized[TYPE_FLOAT32] = 'float32';\ngpuVertexFormatsNormalized[TYPE_FLOAT16] = 'float16';\nclass WebgpuVertexBufferLayout {\n\t\tget(vertexFormat0, vertexFormat1 = null) {\n\t\t\t\tconst key = this.getKey(vertexFormat0, vertexFormat1);\n\t\t\t\tlet layout = this.cache.get(key);\n\t\t\t\tif (!layout) {\n\t\t\t\t\t\tlayout = this.create(vertexFormat0, vertexFormat1);\n\t\t\t\t\t\tthis.cache.set(key, layout);\n\t\t\t\t}\n\t\t\t\treturn layout;\n\t\t}\n\t\tgetKey(vertexFormat0, vertexFormat1 = null) {\n\t\t\t\treturn `${vertexFormat0?.renderingHashString}-${vertexFormat1?.renderingHashString}`;\n\t\t}\n\t\tcreate(vertexFormat0, vertexFormat1) {\n\t\t\t\tconst layout = [];\n\t\t\t\tconst addFormat = (format)=>{\n\t\t\t\t\t\tconst interleaved = format.interleaved;\n\t\t\t\t\t\tconst stepMode = format.instancing ? 'instance' : 'vertex';\n\t\t\t\t\t\tlet attributes = [];\n\t\t\t\t\t\tconst elementCount = format.elements.length;\n\t\t\t\t\t\tfor(let i = 0; i < elementCount; i++){\n\t\t\t\t\t\t\t\tconst element = format.elements[i];\n\t\t\t\t\t\t\t\tconst location = semanticToLocation[element.name];\n\t\t\t\t\t\t\t\tconst formatTable = element.normalize ? gpuVertexFormatsNormalized : gpuVertexFormats;\n\t\t\t\t\t\t\t\tattributes.push({\n\t\t\t\t\t\t\t\t\t\tshaderLocation: location,\n\t\t\t\t\t\t\t\t\t\toffset: interleaved ? element.offset : 0,\n\t\t\t\t\t\t\t\t\t\tformat: `${formatTable[element.dataType]}${element.numComponents > 1 ? `x${element.numComponents}` : ''}`\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tif (!interleaved || i === elementCount - 1) {\n\t\t\t\t\t\t\t\t\t\tlayout.push({\n\t\t\t\t\t\t\t\t\t\t\t\tattributes: attributes,\n\t\t\t\t\t\t\t\t\t\t\t\tarrayStride: element.stride,\n\t\t\t\t\t\t\t\t\t\t\t\tstepMode: stepMode\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tattributes = [];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tif (vertexFormat0) {\n\t\t\t\t\t\taddFormat(vertexFormat0);\n\t\t\t\t}\n\t\t\t\tif (vertexFormat1) {\n\t\t\t\t\t\taddFormat(vertexFormat1);\n\t\t\t\t}\n\t\t\t\treturn layout;\n\t\t}\n\t\tconstructor(){\n\t\t\t\tthis.cache = new Map();\n\t\t}\n}\n\nclass WebgpuPipeline {\n\t\tconstructor(device){\n\t\t\t\tthis.device = device;\n\t\t}\n\t\tgetPipelineLayout(bindGroupFormats) {\n\t\t\t\tconst bindGroupLayouts = [];\n\t\t\t\tbindGroupFormats.forEach((format)=>{\n\t\t\t\t\t\tbindGroupLayouts.push(format.bindGroupLayout);\n\t\t\t\t});\n\t\t\t\tconst desc = {\n\t\t\t\t\t\tbindGroupLayouts: bindGroupLayouts\n\t\t\t\t};\n\t\t\t\tconst pipelineLayout = this.device.wgpu.createPipelineLayout(desc);\n\t\t\t\treturn pipelineLayout;\n\t\t}\n}\n\nconst _primitiveTopology = [\n\t\t'point-list',\n\t\t'line-list',\n\t\tundefined,\n\t\t'line-strip',\n\t\t'triangle-list',\n\t\t'triangle-strip',\n\t\tundefined\n];\nconst _blendOperation = [\n\t\t'add',\n\t\t'subtract',\n\t\t'reverse-subtract',\n\t\t'min',\n\t\t'max'\n];\nconst _blendFactor = [\n\t\t'zero',\n\t\t'one',\n\t\t'src',\n\t\t'one-minus-src',\n\t\t'dst',\n\t\t'one-minus-dst',\n\t\t'src-alpha',\n\t\t'src-alpha-saturated',\n\t\t'one-minus-src-alpha',\n\t\t'dst-alpha',\n\t\t'one-minus-dst-alpha',\n\t\t'constant',\n\t\t'one-minus-constant'\n];\nconst _compareFunction = [\n\t\t'never',\n\t\t'less',\n\t\t'equal',\n\t\t'less-equal',\n\t\t'greater',\n\t\t'not-equal',\n\t\t'greater-equal',\n\t\t'always'\n];\nconst _cullModes = [\n\t\t'none',\n\t\t'back',\n\t\t'front'\n];\nconst _stencilOps = [\n\t\t'keep',\n\t\t'zero',\n\t\t'replace',\n\t\t'increment-clamp',\n\t\t'increment-wrap',\n\t\t'decrement-clamp',\n\t\t'decrement-wrap',\n\t\t'invert'\n];\nconst _indexFormat = [\n\t\t'',\n\t\t'uint16',\n\t\t'uint32'\n];\nclass CacheEntry {\n}\nclass WebgpuRenderPipeline extends WebgpuPipeline {\n\t\tconstructor(device){\n\t\t\t\tsuper(device), this.lookupHashes = new Uint32Array(14);\n\t\t\t\tthis.vertexBufferLayout = new WebgpuVertexBufferLayout();\n\t\t\t\tthis.cache = new Map();\n\t\t}\n\t\tget(primitive, vertexFormat0, vertexFormat1, ibFormat, shader, renderTarget, bindGroupFormats, blendState, depthState, cullMode, stencilEnabled, stencilFront, stencilBack) {\n\t\t\t\tconst primitiveType = primitive.type;\n\t\t\t\tif (ibFormat && primitiveType !== PRIMITIVE_LINESTRIP && primitiveType !== PRIMITIVE_TRISTRIP) {\n\t\t\t\t\t\tibFormat = undefined;\n\t\t\t\t}\n\t\t\t\tconst lookupHashes = this.lookupHashes;\n\t\t\t\tlookupHashes[0] = primitiveType;\n\t\t\t\tlookupHashes[1] = shader.id;\n\t\t\t\tlookupHashes[2] = cullMode;\n\t\t\t\tlookupHashes[3] = depthState.key;\n\t\t\t\tlookupHashes[4] = blendState.key;\n\t\t\t\tlookupHashes[5] = vertexFormat0?.renderingHash ?? 0;\n\t\t\t\tlookupHashes[6] = vertexFormat1?.renderingHash ?? 0;\n\t\t\t\tlookupHashes[7] = renderTarget.impl.key;\n\t\t\t\tlookupHashes[8] = bindGroupFormats[0]?.key ?? 0;\n\t\t\t\tlookupHashes[9] = bindGroupFormats[1]?.key ?? 0;\n\t\t\t\tlookupHashes[10] = bindGroupFormats[2]?.key ?? 0;\n\t\t\t\tlookupHashes[11] = stencilEnabled ? stencilFront.key : 0;\n\t\t\t\tlookupHashes[12] = stencilEnabled ? stencilBack.key : 0;\n\t\t\t\tlookupHashes[13] = ibFormat ?? 0;\n\t\t\t\tconst hash = hash32Fnv1a(lookupHashes);\n\t\t\t\tlet cacheEntries = this.cache.get(hash);\n\t\t\t\tif (cacheEntries) {\n\t\t\t\t\t\tfor(let i = 0; i < cacheEntries.length; i++){\n\t\t\t\t\t\t\t\tconst entry = cacheEntries[i];\n\t\t\t\t\t\t\t\tif (array$1.equals(entry.hashes, lookupHashes)) {\n\t\t\t\t\t\t\t\t\t\treturn entry.pipeline;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst primitiveTopology = _primitiveTopology[primitiveType];\n\t\t\t\tconst pipelineLayout = this.getPipelineLayout(bindGroupFormats);\n\t\t\t\tconst vertexBufferLayout = this.vertexBufferLayout.get(vertexFormat0, vertexFormat1);\n\t\t\t\tconst cacheEntry = new CacheEntry();\n\t\t\t\tcacheEntry.hashes = new Uint32Array(lookupHashes);\n\t\t\t\tcacheEntry.pipeline = this.create(primitiveTopology, ibFormat, shader, renderTarget, pipelineLayout, blendState, depthState, vertexBufferLayout, cullMode, stencilEnabled, stencilFront, stencilBack);\n\t\t\t\tif (cacheEntries) {\n\t\t\t\t\t\tcacheEntries.push(cacheEntry);\n\t\t\t\t} else {\n\t\t\t\t\t\tcacheEntries = [\n\t\t\t\t\t\t\t\tcacheEntry\n\t\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t\tthis.cache.set(hash, cacheEntries);\n\t\t\t\treturn cacheEntry.pipeline;\n\t\t}\n\t\tgetBlend(blendState) {\n\t\t\t\tlet blend;\n\t\t\t\tif (blendState.blend) {\n\t\t\t\t\t\tblend = {\n\t\t\t\t\t\t\t\tcolor: {\n\t\t\t\t\t\t\t\t\t\toperation: _blendOperation[blendState.colorOp],\n\t\t\t\t\t\t\t\t\t\tsrcFactor: _blendFactor[blendState.colorSrcFactor],\n\t\t\t\t\t\t\t\t\t\tdstFactor: _blendFactor[blendState.colorDstFactor]\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\talpha: {\n\t\t\t\t\t\t\t\t\t\toperation: _blendOperation[blendState.alphaOp],\n\t\t\t\t\t\t\t\t\t\tsrcFactor: _blendFactor[blendState.alphaSrcFactor],\n\t\t\t\t\t\t\t\t\t\tdstFactor: _blendFactor[blendState.alphaDstFactor]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\treturn blend;\n\t\t}\n\t\tgetDepthStencil(depthState, renderTarget, stencilEnabled, stencilFront, stencilBack, primitiveTopology) {\n\t\t\t\tlet depthStencil;\n\t\t\t\tconst { depth, stencil } = renderTarget;\n\t\t\t\tif (depth || stencil) {\n\t\t\t\t\t\tdepthStencil = {\n\t\t\t\t\t\t\t\tformat: renderTarget.impl.depthAttachment.format\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (depth) {\n\t\t\t\t\t\t\t\tdepthStencil.depthWriteEnabled = depthState.write;\n\t\t\t\t\t\t\t\tdepthStencil.depthCompare = _compareFunction[depthState.func];\n\t\t\t\t\t\t\t\tconst biasAllowed = primitiveTopology === 'triangle-list' || primitiveTopology === 'triangle-strip';\n\t\t\t\t\t\t\t\tdepthStencil.depthBias = biasAllowed ? depthState.depthBias : 0;\n\t\t\t\t\t\t\t\tdepthStencil.depthBiasSlopeScale = biasAllowed ? depthState.depthBiasSlope : 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tdepthStencil.depthWriteEnabled = false;\n\t\t\t\t\t\t\t\tdepthStencil.depthCompare = 'always';\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (stencil && stencilEnabled) {\n\t\t\t\t\t\t\t\tdepthStencil.stencilReadMas = stencilFront.readMask;\n\t\t\t\t\t\t\t\tdepthStencil.stencilWriteMask = stencilFront.writeMask;\n\t\t\t\t\t\t\t\tdepthStencil.stencilFront = {\n\t\t\t\t\t\t\t\t\t\tcompare: _compareFunction[stencilFront.func],\n\t\t\t\t\t\t\t\t\t\tfailOp: _stencilOps[stencilFront.fail],\n\t\t\t\t\t\t\t\t\t\tpassOp: _stencilOps[stencilFront.zpass],\n\t\t\t\t\t\t\t\t\t\tdepthFailOp: _stencilOps[stencilFront.zfail]\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tdepthStencil.stencilBack = {\n\t\t\t\t\t\t\t\t\t\tcompare: _compareFunction[stencilBack.func],\n\t\t\t\t\t\t\t\t\t\tfailOp: _stencilOps[stencilBack.fail],\n\t\t\t\t\t\t\t\t\t\tpassOp: _stencilOps[stencilBack.zpass],\n\t\t\t\t\t\t\t\t\t\tdepthFailOp: _stencilOps[stencilBack.zfail]\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn depthStencil;\n\t\t}\n\t\tcreate(primitiveTopology, ibFormat, shader, renderTarget, pipelineLayout, blendState, depthState, vertexBufferLayout, cullMode, stencilEnabled, stencilFront, stencilBack) {\n\t\t\t\tconst wgpu = this.device.wgpu;\n\t\t\t\tconst webgpuShader = shader.impl;\n\t\t\t\tconst desc = {\n\t\t\t\t\t\tvertex: {\n\t\t\t\t\t\t\t\tmodule: webgpuShader.getVertexShaderModule(),\n\t\t\t\t\t\t\t\tentryPoint: webgpuShader.vertexEntryPoint,\n\t\t\t\t\t\t\t\tbuffers: vertexBufferLayout\n\t\t\t\t\t\t},\n\t\t\t\t\t\tprimitive: {\n\t\t\t\t\t\t\t\ttopology: primitiveTopology,\n\t\t\t\t\t\t\t\tfrontFace: 'ccw',\n\t\t\t\t\t\t\t\tcullMode: _cullModes[cullMode]\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdepthStencil: this.getDepthStencil(depthState, renderTarget, stencilEnabled, stencilFront, stencilBack, primitiveTopology),\n\t\t\t\t\t\tmultisample: {\n\t\t\t\t\t\t\t\tcount: renderTarget.samples\n\t\t\t\t\t\t},\n\t\t\t\t\t\tlayout: pipelineLayout\n\t\t\t\t};\n\t\t\t\tif (ibFormat) {\n\t\t\t\t\t\tdesc.primitive.stripIndexFormat = _indexFormat[ibFormat];\n\t\t\t\t}\n\t\t\t\tdesc.fragment = {\n\t\t\t\t\t\tmodule: webgpuShader.getFragmentShaderModule(),\n\t\t\t\t\t\tentryPoint: webgpuShader.fragmentEntryPoint,\n\t\t\t\t\t\ttargets: []\n\t\t\t\t};\n\t\t\t\tconst colorAttachments = renderTarget.impl.colorAttachments;\n\t\t\t\tif (colorAttachments.length > 0) {\n\t\t\t\t\t\tlet writeMask = 0;\n\t\t\t\t\t\tif (blendState.redWrite) writeMask |= GPUColorWrite.RED;\n\t\t\t\t\t\tif (blendState.greenWrite) writeMask |= GPUColorWrite.GREEN;\n\t\t\t\t\t\tif (blendState.blueWrite) writeMask |= GPUColorWrite.BLUE;\n\t\t\t\t\t\tif (blendState.alphaWrite) writeMask |= GPUColorWrite.ALPHA;\n\t\t\t\t\t\tconst blend = this.getBlend(blendState);\n\t\t\t\t\t\tcolorAttachments.forEach((attachment)=>{\n\t\t\t\t\t\t\t\tdesc.fragment.targets.push({\n\t\t\t\t\t\t\t\t\t\tformat: attachment.format,\n\t\t\t\t\t\t\t\t\t\twriteMask: writeMask,\n\t\t\t\t\t\t\t\t\t\tblend: blend\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tconst pipeline = wgpu.createRenderPipeline(desc);\n\t\t\t\treturn pipeline;\n\t\t}\n}\n\nclass WebgpuComputePipeline extends WebgpuPipeline {\n\t\tget(shader, bindGroupFormat) {\n\t\t\t\tconst pipelineLayout = this.getPipelineLayout([\n\t\t\t\t\t\tbindGroupFormat.impl\n\t\t\t\t]);\n\t\t\t\tconst pipeline = this.create(shader, pipelineLayout);\n\t\t\t\treturn pipeline;\n\t\t}\n\t\tcreate(shader, pipelineLayout) {\n\t\t\t\tconst wgpu = this.device.wgpu;\n\t\t\t\tconst webgpuShader = shader.impl;\n\t\t\t\tconst desc = {\n\t\t\t\t\t\tcompute: {\n\t\t\t\t\t\t\t\tmodule: webgpuShader.getComputeShaderModule(),\n\t\t\t\t\t\t\t\tentryPoint: webgpuShader.computeEntryPoint\n\t\t\t\t\t\t},\n\t\t\t\t\t\tlayout: pipelineLayout\n\t\t\t\t};\n\t\t\t\tconst pipeline = wgpu.createComputePipeline(desc);\n\t\t\t\treturn pipeline;\n\t\t}\n}\n\nclass RefCountedObject {\n\t\tincRefCount() {\n\t\t\t\tthis._refCount++;\n\t\t}\n\t\tdecRefCount() {\n\t\t\t\tthis._refCount--;\n\t\t}\n\t\tget refCount() {\n\t\t\t\treturn this._refCount;\n\t\t}\n\t\tconstructor(){\n\t\t\t\tthis._refCount = 0;\n\t\t}\n}\n\nclass Entry extends RefCountedObject {\n\t\tconstructor(obj){\n\t\t\t\tsuper();\n\t\t\t\tthis.object = obj;\n\t\t\t\tthis.incRefCount();\n\t\t}\n}\nclass RefCountedKeyCache {\n\t\tdestroy() {\n\t\t\t\tthis.cache.forEach((entry)=>{\n\t\t\t\t\t\tentry.object?.destroy();\n\t\t\t\t});\n\t\t\t\tthis.cache.clear();\n\t\t}\n\t\tclear() {\n\t\t\t\tthis.cache.clear();\n\t\t}\n\t\tget(key) {\n\t\t\t\tconst entry = this.cache.get(key);\n\t\t\t\tif (entry) {\n\t\t\t\t\t\tentry.incRefCount();\n\t\t\t\t\t\treturn entry.object;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset(key, object) {\n\t\t\t\tthis.cache.set(key, new Entry(object));\n\t\t}\n\t\trelease(key) {\n\t\t\t\tconst entry = this.cache.get(key);\n\t\t\t\tif (entry) {\n\t\t\t\t\t\tentry.decRefCount();\n\t\t\t\t\t\tif (entry.refCount === 0) {\n\t\t\t\t\t\t\t\tthis.cache.delete(key);\n\t\t\t\t\t\t\t\tentry.object?.destroy();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tconstructor(){\n\t\t\t\tthis.cache = new Map();\n\t\t}\n}\n\nclass MultisampledTextureCache extends RefCountedKeyCache {\n\t\tloseContext(device) {\n\t\t\t\tthis.clear();\n\t\t}\n}\nconst multisampledTextureCache = new DeviceCache();\nconst getMultisampledTextureCache = (device)=>{\n\t\treturn multisampledTextureCache.get(device, ()=>{\n\t\t\t\treturn new MultisampledTextureCache();\n\t\t});\n};\n\nconst stringIds = new StringIds();\nclass ColorAttachment {\n\t\tdestroy() {\n\t\t\t\tthis.multisampledBuffer?.destroy();\n\t\t\t\tthis.multisampledBuffer = null;\n\t\t}\n}\nclass DepthAttachment {\n\t\tconstructor(gpuFormat){\n\t\t\t\tthis.depthTexture = null;\n\t\t\t\tthis.depthTextureInternal = false;\n\t\t\t\tthis.multisampledDepthBuffer = null;\n\t\t\t\tthis.format = gpuFormat;\n\t\t\t\tthis.hasStencil = gpuFormat === 'depth24plus-stencil8';\n\t\t}\n\t\tdestroy(device) {\n\t\t\t\tif (this.depthTextureInternal) {\n\t\t\t\t\t\tthis.depthTexture?.destroy();\n\t\t\t\t\t\tthis.depthTexture = null;\n\t\t\t\t}\n\t\t\t\tif (this.multisampledDepthBuffer) {\n\t\t\t\t\t\tthis.multisampledDepthBuffer = null;\n\t\t\t\t\t\tgetMultisampledTextureCache(device).release(this.multisampledDepthBufferKey);\n\t\t\t\t}\n\t\t}\n}\nclass WebgpuRenderTarget {\n\t\tconstructor(renderTarget){\n\t\t\t\tthis.initialized = false;\n\t\t\t\tthis.colorAttachments = [];\n\t\t\t\tthis.depthAttachment = null;\n\t\t\t\tthis.assignedColorTexture = null;\n\t\t\t\tthis.renderPassDescriptor = {};\n\t\t\t\tthis.isBackbuffer = false;\n\t\t\t\tthis.renderTarget = renderTarget;\n\t\t}\n\t\tdestroy(device) {\n\t\t\t\tthis.initialized = false;\n\t\t\t\tthis.assignedColorTexture = null;\n\t\t\t\tthis.colorAttachments.forEach((colorAttachment)=>{\n\t\t\t\t\t\tcolorAttachment.destroy();\n\t\t\t\t});\n\t\t\t\tthis.colorAttachments.length = 0;\n\t\t\t\tthis.depthAttachment?.destroy(device);\n\t\t\t\tthis.depthAttachment = null;\n\t\t}\n\t\tupdateKey() {\n\t\t\t\tconst rt = this.renderTarget;\n\t\t\t\tlet key = `${rt.samples}:${this.depthAttachment ? this.depthAttachment.format : 'nodepth'}`;\n\t\t\t\tthis.colorAttachments.forEach((colorAttachment)=>{\n\t\t\t\t\t\tkey += `:${colorAttachment.format}`;\n\t\t\t\t});\n\t\t\t\tthis.key = stringIds.get(key);\n\t\t}\n\t\tassignColorTexture(device, gpuTexture) {\n\t\t\t\tthis.assignedColorTexture = gpuTexture;\n\t\t\t\tconst view = gpuTexture.createView({\n\t\t\t\t\t\tformat: device.backBufferViewFormat\n\t\t\t\t});\n\t\t\t\tconst colorAttachment = this.renderPassDescriptor.colorAttachments[0];\n\t\t\t\tconst samples = this.renderTarget.samples;\n\t\t\t\tif (samples > 1) {\n\t\t\t\t\t\tcolorAttachment.resolveTarget = view;\n\t\t\t\t} else {\n\t\t\t\t\t\tcolorAttachment.view = view;\n\t\t\t\t}\n\t\t\t\tthis.setColorAttachment(0, undefined, device.backBufferViewFormat);\n\t\t\t\tthis.updateKey();\n\t\t}\n\t\tsetColorAttachment(index, multisampledBuffer, format) {\n\t\t\t\tif (!this.colorAttachments[index]) {\n\t\t\t\t\t\tthis.colorAttachments[index] = new ColorAttachment();\n\t\t\t\t}\n\t\t\t\tif (multisampledBuffer) {\n\t\t\t\t\t\tthis.colorAttachments[index].multisampledBuffer = multisampledBuffer;\n\t\t\t\t}\n\t\t\t\tif (format) {\n\t\t\t\t\t\tthis.colorAttachments[index].format = format;\n\t\t\t\t}\n\t\t}\n\t\tinit(device, renderTarget) {\n\t\t\t\tconst wgpu = device.wgpu;\n\t\t\t\tthis.initDepthStencil(device, wgpu, renderTarget);\n\t\t\t\tif (renderTarget._colorBuffers) {\n\t\t\t\t\t\trenderTarget._colorBuffers.forEach((colorBuffer, index)=>{\n\t\t\t\t\t\t\t\tthis.setColorAttachment(index, undefined, colorBuffer.impl.format);\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tthis.renderPassDescriptor.colorAttachments = [];\n\t\t\t\tconst count = this.isBackbuffer ? 1 : renderTarget._colorBuffers?.length ?? 0;\n\t\t\t\tfor(let i = 0; i < count; ++i){\n\t\t\t\t\t\tconst colorAttachment = this.initColor(device, wgpu, renderTarget, i);\n\t\t\t\t\t\tconst isDefaultFramebuffer = i === 0 && this.colorAttachments[0]?.format;\n\t\t\t\t\t\tif (colorAttachment.view || isDefaultFramebuffer) {\n\t\t\t\t\t\t\t\tthis.renderPassDescriptor.colorAttachments.push(colorAttachment);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.updateKey();\n\t\t\t\tthis.initialized = true;\n\t\t}\n\t\tinitDepthStencil(device, wgpu, renderTarget) {\n\t\t\t\tconst { samples, width, height, depth, depthBuffer } = renderTarget;\n\t\t\t\tif (depth || depthBuffer) {\n\t\t\t\t\t\tlet renderingView;\n\t\t\t\t\t\tif (!depthBuffer) {\n\t\t\t\t\t\t\t\tthis.depthAttachment = new DepthAttachment('depth24plus-stencil8');\n\t\t\t\t\t\t\t\tconst depthTextureDesc = {\n\t\t\t\t\t\t\t\t\t\tsize: [\n\t\t\t\t\t\t\t\t\t\t\t\twidth,\n\t\t\t\t\t\t\t\t\t\t\t\theight,\n\t\t\t\t\t\t\t\t\t\t\t\t1\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\tdimension: '2d',\n\t\t\t\t\t\t\t\t\t\tsampleCount: samples,\n\t\t\t\t\t\t\t\t\t\tformat: this.depthAttachment.format,\n\t\t\t\t\t\t\t\t\t\tusage: GPUTextureUsage.RENDER_ATTACHMENT\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tif (samples > 1) {\n\t\t\t\t\t\t\t\t\t\tdepthTextureDesc.usage |= GPUTextureUsage.TEXTURE_BINDING;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tdepthTextureDesc.usage |= GPUTextureUsage.COPY_SRC;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst depthTexture = wgpu.createTexture(depthTextureDesc);\n\t\t\t\t\t\t\t\tthis.depthAttachment.depthTexture = depthTexture;\n\t\t\t\t\t\t\t\tthis.depthAttachment.depthTextureInternal = true;\n\t\t\t\t\t\t\t\trenderingView = depthTexture.createView();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.depthAttachment = new DepthAttachment(depthBuffer.impl.format);\n\t\t\t\t\t\t\t\tif (samples > 1) {\n\t\t\t\t\t\t\t\t\t\tconst depthFormat = 'depth24plus-stencil8';\n\t\t\t\t\t\t\t\t\t\tthis.depthAttachment.format = depthFormat;\n\t\t\t\t\t\t\t\t\t\tthis.depthAttachment.hasStencil = depthFormat === 'depth24plus-stencil8';\n\t\t\t\t\t\t\t\t\t\tconst key = `${depthBuffer.id}:${width}:${height}:${samples}:${depthFormat}`;\n\t\t\t\t\t\t\t\t\t\tconst msTextures = getMultisampledTextureCache(device);\n\t\t\t\t\t\t\t\t\t\tlet msDepthTexture = msTextures.get(key);\n\t\t\t\t\t\t\t\t\t\tif (!msDepthTexture) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst multisampledDepthDesc = {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsize: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\twidth,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\theight,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t1\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdimension: '2d',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsampleCount: samples,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tformat: depthFormat,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tusage: GPUTextureUsage.RENDER_ATTACHMENT | (depthFormat !== depthBuffer.impl.format ? GPUTextureUsage.TEXTURE_BINDING : 0)\n\t\t\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\t\t\tmsDepthTexture = wgpu.createTexture(multisampledDepthDesc);\n\t\t\t\t\t\t\t\t\t\t\t\tmsTextures.set(key, msDepthTexture);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tthis.depthAttachment.multisampledDepthBuffer = msDepthTexture;\n\t\t\t\t\t\t\t\t\t\tthis.depthAttachment.multisampledDepthBufferKey = key;\n\t\t\t\t\t\t\t\t\t\trenderingView = msDepthTexture.createView();\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tconst depthTexture = depthBuffer.impl.gpuTexture;\n\t\t\t\t\t\t\t\t\t\tthis.depthAttachment.depthTexture = depthTexture;\n\t\t\t\t\t\t\t\t\t\trenderingView = depthTexture.createView();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.renderPassDescriptor.depthStencilAttachment = {\n\t\t\t\t\t\t\t\tview: renderingView\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t}\n\t\tinitColor(device, wgpu, renderTarget, index) {\n\t\t\t\tconst colorAttachment = {};\n\t\t\t\tconst { samples, width, height, mipLevel } = renderTarget;\n\t\t\t\tconst colorBuffer = renderTarget.getColorBuffer(index);\n\t\t\t\tlet colorView = null;\n\t\t\t\tif (colorBuffer) {\n\t\t\t\t\t\tconst mipLevelCount = 1;\n\t\t\t\t\t\tif (colorBuffer.cubemap) {\n\t\t\t\t\t\t\t\tcolorView = colorBuffer.impl.createView({\n\t\t\t\t\t\t\t\t\t\tdimension: '2d',\n\t\t\t\t\t\t\t\t\t\tbaseArrayLayer: renderTarget.face,\n\t\t\t\t\t\t\t\t\t\tarrayLayerCount: 1,\n\t\t\t\t\t\t\t\t\t\tmipLevelCount,\n\t\t\t\t\t\t\t\t\t\tbaseMipLevel: mipLevel\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcolorView = colorBuffer.impl.createView({\n\t\t\t\t\t\t\t\t\t\tmipLevelCount,\n\t\t\t\t\t\t\t\t\t\tbaseMipLevel: mipLevel\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (samples > 1) {\n\t\t\t\t\t\tconst format = this.isBackbuffer ? device.backBufferViewFormat : colorBuffer.impl.format;\n\t\t\t\t\t\tconst multisampledTextureDesc = {\n\t\t\t\t\t\t\t\tsize: [\n\t\t\t\t\t\t\t\t\t\twidth,\n\t\t\t\t\t\t\t\t\t\theight,\n\t\t\t\t\t\t\t\t\t\t1\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tdimension: '2d',\n\t\t\t\t\t\t\t\tsampleCount: samples,\n\t\t\t\t\t\t\t\tformat: format,\n\t\t\t\t\t\t\t\tusage: GPUTextureUsage.RENDER_ATTACHMENT\n\t\t\t\t\t\t};\n\t\t\t\t\t\tconst multisampledColorBuffer = wgpu.createTexture(multisampledTextureDesc);\n\t\t\t\t\t\tthis.setColorAttachment(index, multisampledColorBuffer, multisampledTextureDesc.format);\n\t\t\t\t\t\tcolorAttachment.view = multisampledColorBuffer.createView();\n\t\t\t\t\t\tcolorAttachment.resolveTarget = colorView;\n\t\t\t\t} else {\n\t\t\t\t\t\tcolorAttachment.view = colorView;\n\t\t\t\t}\n\t\t\t\treturn colorAttachment;\n\t\t}\n\t\tsetupForRenderPass(renderPass, renderTarget) {\n\t\t\t\tconst count = this.renderPassDescriptor.colorAttachments?.length ?? 0;\n\t\t\t\tfor(let i = 0; i < count; ++i){\n\t\t\t\t\t\tconst colorAttachment = this.renderPassDescriptor.colorAttachments[i];\n\t\t\t\t\t\tconst colorOps = renderPass.colorArrayOps[i];\n\t\t\t\t\t\tconst srgb = renderTarget.isColorBufferSrgb(i);\n\t\t\t\t\t\tcolorAttachment.clearValue = srgb ? colorOps.clearValueLinear : colorOps.clearValue;\n\t\t\t\t\t\tcolorAttachment.loadOp = colorOps.clear ? 'clear' : 'load';\n\t\t\t\t\t\tcolorAttachment.storeOp = colorOps.store ? 'store' : 'discard';\n\t\t\t\t}\n\t\t\t\tconst depthAttachment = this.renderPassDescriptor.depthStencilAttachment;\n\t\t\t\tif (depthAttachment) {\n\t\t\t\t\t\tdepthAttachment.depthClearValue = renderPass.depthStencilOps.clearDepthValue;\n\t\t\t\t\t\tdepthAttachment.depthLoadOp = renderPass.depthStencilOps.clearDepth ? 'clear' : 'load';\n\t\t\t\t\t\tdepthAttachment.depthStoreOp = renderPass.depthStencilOps.storeDepth ? 'store' : 'discard';\n\t\t\t\t\t\tdepthAttachment.depthReadOnly = false;\n\t\t\t\t\t\tif (this.depthAttachment.hasStencil) {\n\t\t\t\t\t\t\t\tdepthAttachment.stencilClearValue = renderPass.depthStencilOps.clearStencilValue;\n\t\t\t\t\t\t\t\tdepthAttachment.stencilLoadOp = renderPass.depthStencilOps.clearStencil ? 'clear' : 'load';\n\t\t\t\t\t\t\t\tdepthAttachment.stencilStoreOp = renderPass.depthStencilOps.storeStencil ? 'store' : 'discard';\n\t\t\t\t\t\t\t\tdepthAttachment.stencilReadOnly = false;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tloseContext() {\n\t\t\t\tthis.initialized = false;\n\t\t}\n\t\tresolve(device, target, color, depth) {}\n}\n\nconst uniformTypeToNumComponents = [];\nuniformTypeToNumComponents[UNIFORMTYPE_FLOAT] = 1;\nuniformTypeToNumComponents[UNIFORMTYPE_VEC2] = 2;\nuniformTypeToNumComponents[UNIFORMTYPE_VEC3] = 3;\nuniformTypeToNumComponents[UNIFORMTYPE_VEC4] = 4;\nuniformTypeToNumComponents[UNIFORMTYPE_INT] = 1;\nuniformTypeToNumComponents[UNIFORMTYPE_IVEC2] = 2;\nuniformTypeToNumComponents[UNIFORMTYPE_IVEC3] = 3;\nuniformTypeToNumComponents[UNIFORMTYPE_IVEC4] = 4;\nuniformTypeToNumComponents[UNIFORMTYPE_BOOL] = 1;\nuniformTypeToNumComponents[UNIFORMTYPE_BVEC2] = 2;\nuniformTypeToNumComponents[UNIFORMTYPE_BVEC3] = 3;\nuniformTypeToNumComponents[UNIFORMTYPE_BVEC4] = 4;\nuniformTypeToNumComponents[UNIFORMTYPE_MAT2] = 8;\nuniformTypeToNumComponents[UNIFORMTYPE_MAT3] = 12;\nuniformTypeToNumComponents[UNIFORMTYPE_MAT4] = 16;\nuniformTypeToNumComponents[UNIFORMTYPE_UINT] = 1;\nuniformTypeToNumComponents[UNIFORMTYPE_UVEC2] = 2;\nuniformTypeToNumComponents[UNIFORMTYPE_UVEC3] = 3;\nuniformTypeToNumComponents[UNIFORMTYPE_UVEC4] = 4;\nclass UniformFormat {\n\t\tget isArrayType() {\n\t\t\t\treturn this.count > 0;\n\t\t}\n\t\tconstructor(name, type, count = 0){\n\t\t\t\tthis.shortName = name;\n\t\t\t\tthis.name = count ? `${name}[0]` : name;\n\t\t\t\tthis.type = type;\n\t\t\t\tthis.numComponents = uniformTypeToNumComponents[type];\n\t\t\t\tthis.updateType = type;\n\t\t\t\tif (count > 0) {\n\t\t\t\t\t\tswitch(type){\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_FLOAT:\n\t\t\t\t\t\t\t\t\t\tthis.updateType = UNIFORMTYPE_FLOATARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_INT:\n\t\t\t\t\t\t\t\t\t\tthis.updateType = UNIFORMTYPE_INTARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_UINT:\n\t\t\t\t\t\t\t\t\t\tthis.updateType = UNIFORMTYPE_UINTARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_BOOL:\n\t\t\t\t\t\t\t\t\t\tthis.updateType = UNIFORMTYPE_BOOLARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_VEC2:\n\t\t\t\t\t\t\t\t\t\tthis.updateType = UNIFORMTYPE_VEC2ARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_IVEC2:\n\t\t\t\t\t\t\t\t\t\tthis.updateType = UNIFORMTYPE_IVEC2ARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_UVEC2:\n\t\t\t\t\t\t\t\t\t\tthis.updateType = UNIFORMTYPE_UVEC2ARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_BVEC2:\n\t\t\t\t\t\t\t\t\t\tthis.updateType = UNIFORMTYPE_BVEC2ARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_VEC3:\n\t\t\t\t\t\t\t\t\t\tthis.updateType = UNIFORMTYPE_VEC3ARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_IVEC3:\n\t\t\t\t\t\t\t\t\t\tthis.updateType = UNIFORMTYPE_IVEC3ARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_UVEC3:\n\t\t\t\t\t\t\t\t\t\tthis.updateType = UNIFORMTYPE_UVEC3ARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_BVEC3:\n\t\t\t\t\t\t\t\t\t\tthis.updateType = UNIFORMTYPE_BVEC3ARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_VEC4:\n\t\t\t\t\t\t\t\t\t\tthis.updateType = UNIFORMTYPE_VEC4ARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_IVEC4:\n\t\t\t\t\t\t\t\t\t\tthis.updateType = UNIFORMTYPE_IVEC4ARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_UVEC4:\n\t\t\t\t\t\t\t\t\t\tthis.updateType = UNIFORMTYPE_UVEC4ARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_BVEC4:\n\t\t\t\t\t\t\t\t\t\tthis.updateType = UNIFORMTYPE_BVEC4ARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_MAT4:\n\t\t\t\t\t\t\t\t\t\tthis.updateType = UNIFORMTYPE_MAT4ARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.count = count;\n\t\t\t\tlet componentSize = this.numComponents;\n\t\t\t\tif (count) {\n\t\t\t\t\t\tcomponentSize = math.roundUp(componentSize, 4);\n\t\t\t\t}\n\t\t\t\tthis.byteSize = componentSize * 4;\n\t\t\t\tif (count) {\n\t\t\t\t\t\tthis.byteSize *= count;\n\t\t\t\t}\n\t\t}\n\t\tcalculateOffset(offset) {\n\t\t\t\tlet alignment = this.byteSize <= 8 ? this.byteSize : 16;\n\t\t\t\tif (this.count) {\n\t\t\t\t\t\talignment = 16;\n\t\t\t\t}\n\t\t\t\toffset = math.roundUp(offset, alignment);\n\t\t\t\tthis.offset = offset / 4;\n\t\t}\n}\nclass UniformBufferFormat {\n\t\tconstructor(graphicsDevice, uniforms){\n\t\t\t\tthis.byteSize = 0;\n\t\t\t\tthis.map = new Map();\n\t\t\t\tthis.scope = graphicsDevice.scope;\n\t\t\t\tthis.uniforms = uniforms;\n\t\t\t\tlet offset = 0;\n\t\t\t\tfor(let i = 0; i < uniforms.length; i++){\n\t\t\t\t\t\tconst uniform = uniforms[i];\n\t\t\t\t\t\tuniform.calculateOffset(offset);\n\t\t\t\t\t\toffset = uniform.offset * 4 + uniform.byteSize;\n\t\t\t\t\t\tuniform.scopeId = this.scope.resolve(uniform.name);\n\t\t\t\t\t\tthis.map.set(uniform.name, uniform);\n\t\t\t\t}\n\t\t\t\tthis.byteSize = math.roundUp(offset, 16);\n\t\t}\n\t\tget(name) {\n\t\t\t\treturn this.map.get(name);\n\t\t}\n}\n\nconst KEYWORD$2 = /[ \\t]*(\\battribute\\b|\\bvarying\\b|\\buniform\\b)/g;\nconst KEYWORD_LINE$1 = /(\\battribute\\b|\\bvarying\\b|\\bout\\b|\\buniform\\b)[ \\t]*([^;]+)(;+)/g;\nconst MARKER$1 = '@@@';\nconst ARRAY_IDENTIFIER = /([\\w-]+)\\[(.*?)\\]/;\nconst precisionQualifiers = new Set([\n\t\t'highp',\n\t\t'mediump',\n\t\t'lowp'\n]);\nconst shadowSamplers = new Set([\n\t\t'sampler2DShadow',\n\t\t'samplerCubeShadow',\n\t\t'sampler2DArrayShadow'\n]);\nconst textureDimensions = {\n\t\tsampler2D: TEXTUREDIMENSION_2D,\n\t\tsampler3D: TEXTUREDIMENSION_3D,\n\t\tsamplerCube: TEXTUREDIMENSION_CUBE,\n\t\tsamplerCubeShadow: TEXTUREDIMENSION_CUBE,\n\t\tsampler2DShadow: TEXTUREDIMENSION_2D,\n\t\tsampler2DArray: TEXTUREDIMENSION_2D_ARRAY,\n\t\tsampler2DArrayShadow: TEXTUREDIMENSION_2D_ARRAY,\n\t\tisampler2D: TEXTUREDIMENSION_2D,\n\t\tusampler2D: TEXTUREDIMENSION_2D,\n\t\tisampler3D: TEXTUREDIMENSION_3D,\n\t\tusampler3D: TEXTUREDIMENSION_3D,\n\t\tisamplerCube: TEXTUREDIMENSION_CUBE,\n\t\tusamplerCube: TEXTUREDIMENSION_CUBE,\n\t\tisampler2DArray: TEXTUREDIMENSION_2D_ARRAY,\n\t\tusampler2DArray: TEXTUREDIMENSION_2D_ARRAY\n};\nconst textureDimensionInfo = {\n\t\t[TEXTUREDIMENSION_2D]: 'texture2D',\n\t\t[TEXTUREDIMENSION_CUBE]: 'textureCube',\n\t\t[TEXTUREDIMENSION_3D]: 'texture3D',\n\t\t[TEXTUREDIMENSION_2D_ARRAY]: 'texture2DArray'\n};\nlet UniformLine$1 = class UniformLine {\n\t\tconstructor(line, shader){\n\t\t\t\tthis.line = line;\n\t\t\t\tconst words = line.trim().split(/\\s+/);\n\t\t\t\tif (precisionQualifiers.has(words[0])) {\n\t\t\t\t\t\tthis.precision = words.shift();\n\t\t\t\t}\n\t\t\t\tthis.type = words.shift();\n\t\t\t\tif (line.includes(',')) ;\n\t\t\t\tif (line.includes('[')) {\n\t\t\t\t\t\tconst rest = words.join(' ');\n\t\t\t\t\t\tconst match = ARRAY_IDENTIFIER.exec(rest);\n\t\t\t\t\t\tthis.name = match[1];\n\t\t\t\t\t\tthis.arraySize = Number(match[2]);\n\t\t\t\t\t\tif (isNaN(this.arraySize)) {\n\t\t\t\t\t\t\t\tshader.failed = true;\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.name = words.shift();\n\t\t\t\t\t\tthis.arraySize = 0;\n\t\t\t\t}\n\t\t\t\tthis.isSampler = this.type.indexOf('sampler') !== -1;\n\t\t\t\tthis.isSignedInt = this.type.indexOf('isampler') !== -1;\n\t\t\t\tthis.isUnsignedInt = this.type.indexOf('usampler') !== -1;\n\t\t}\n};\nclass ShaderProcessorGLSL {\n\t\tstatic run(device, shaderDefinition, shader) {\n\t\t\t\tconst varyingMap = new Map();\n\t\t\t\tconst vertexExtracted = ShaderProcessorGLSL.extract(shaderDefinition.vshader);\n\t\t\t\tconst fragmentExtracted = ShaderProcessorGLSL.extract(shaderDefinition.fshader);\n\t\t\t\tconst attributesMap = new Map();\n\t\t\t\tconst attributesBlock = ShaderProcessorGLSL.processAttributes(vertexExtracted.attributes, shaderDefinition.attributes, attributesMap, shaderDefinition.processingOptions);\n\t\t\t\tconst vertexVaryingsBlock = ShaderProcessorGLSL.processVaryings(vertexExtracted.varyings, varyingMap, true);\n\t\t\t\tconst fragmentVaryingsBlock = ShaderProcessorGLSL.processVaryings(fragmentExtracted.varyings, varyingMap, false);\n\t\t\t\tconst outBlock = ShaderProcessorGLSL.processOuts(fragmentExtracted.outs);\n\t\t\t\tconst concatUniforms = vertexExtracted.uniforms.concat(fragmentExtracted.uniforms);\n\t\t\t\tconst uniforms = Array.from(new Set(concatUniforms));\n\t\t\t\tconst parsedUniforms = uniforms.map((line)=>new UniformLine$1(line, shader));\n\t\t\t\tconst uniformsData = ShaderProcessorGLSL.processUniforms(device, parsedUniforms, shaderDefinition.processingOptions, shader);\n\t\t\t\tconst vBlock = `${attributesBlock}\\n${vertexVaryingsBlock}\\n${uniformsData.code}`;\n\t\t\t\tconst vshader = vertexExtracted.src.replace(MARKER$1, vBlock);\n\t\t\t\tconst fBlock = `${fragmentVaryingsBlock}\\n${outBlock}\\n${uniformsData.code}`;\n\t\t\t\tconst fshader = fragmentExtracted.src.replace(MARKER$1, fBlock);\n\t\t\t\treturn {\n\t\t\t\t\t\tvshader: vshader,\n\t\t\t\t\t\tfshader: fshader,\n\t\t\t\t\t\tattributes: attributesMap,\n\t\t\t\t\t\tmeshUniformBufferFormat: uniformsData.meshUniformBufferFormat,\n\t\t\t\t\t\tmeshBindGroupFormat: uniformsData.meshBindGroupFormat\n\t\t\t\t};\n\t\t}\n\t\tstatic extract(src) {\n\t\t\t\tconst attributes = [];\n\t\t\t\tconst varyings = [];\n\t\t\t\tconst outs = [];\n\t\t\t\tconst uniforms = [];\n\t\t\t\tlet replacement = `${MARKER$1}\\n`;\n\t\t\t\tlet match;\n\t\t\t\twhile((match = KEYWORD$2.exec(src)) !== null){\n\t\t\t\t\t\tconst keyword = match[1];\n\t\t\t\t\t\tswitch(keyword){\n\t\t\t\t\t\t\t\tcase 'attribute':\n\t\t\t\t\t\t\t\tcase 'varying':\n\t\t\t\t\t\t\t\tcase 'uniform':\n\t\t\t\t\t\t\t\tcase 'out':\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tKEYWORD_LINE$1.lastIndex = match.index;\n\t\t\t\t\t\t\t\t\t\t\t\tconst lineMatch = KEYWORD_LINE$1.exec(src);\n\t\t\t\t\t\t\t\t\t\t\t\tif (keyword === 'attribute') {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tattributes.push(lineMatch[2]);\n\t\t\t\t\t\t\t\t\t\t\t\t} else if (keyword === 'varying') {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tvaryings.push(lineMatch[2]);\n\t\t\t\t\t\t\t\t\t\t\t\t} else if (keyword === 'out') {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\touts.push(lineMatch[2]);\n\t\t\t\t\t\t\t\t\t\t\t\t} else if (keyword === 'uniform') {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tuniforms.push(lineMatch[2]);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tsrc = ShaderProcessorGLSL.cutOut(src, match.index, KEYWORD_LINE$1.lastIndex, replacement);\n\t\t\t\t\t\t\t\t\t\t\t\tKEYWORD$2.lastIndex = match.index + replacement.length;\n\t\t\t\t\t\t\t\t\t\t\t\treplacement = '';\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\t\tsrc,\n\t\t\t\t\t\tattributes,\n\t\t\t\t\t\tvaryings,\n\t\t\t\t\t\touts,\n\t\t\t\t\t\tuniforms\n\t\t\t\t};\n\t\t}\n\t\tstatic processUniforms(device, uniforms, processingOptions, shader) {\n\t\t\t\tconst uniformLinesSamplers = [];\n\t\t\t\tconst uniformLinesNonSamplers = [];\n\t\t\t\tuniforms.forEach((uniform)=>{\n\t\t\t\t\t\tif (uniform.isSampler) {\n\t\t\t\t\t\t\t\tuniformLinesSamplers.push(uniform);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tuniformLinesNonSamplers.push(uniform);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tconst meshUniforms = [];\n\t\t\t\tuniformLinesNonSamplers.forEach((uniform)=>{\n\t\t\t\t\t\tif (!processingOptions.hasUniform(uniform.name)) {\n\t\t\t\t\t\t\t\tconst uniformType = uniformTypeToName.indexOf(uniform.type);\n\t\t\t\t\t\t\t\tconst uniformFormat = new UniformFormat(uniform.name, uniformType, uniform.arraySize);\n\t\t\t\t\t\t\t\tmeshUniforms.push(uniformFormat);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif (meshUniforms.length === 0) {\n\t\t\t\t\t\tmeshUniforms.push(new UniformFormat(UNUSED_UNIFORM_NAME, UNIFORMTYPE_FLOAT));\n\t\t\t\t}\n\t\t\t\tconst meshUniformBufferFormat = meshUniforms.length ? new UniformBufferFormat(device, meshUniforms) : null;\n\t\t\t\tconst textureFormats = [];\n\t\t\t\tuniformLinesSamplers.forEach((uniform)=>{\n\t\t\t\t\t\tif (!processingOptions.hasTexture(uniform.name)) {\n\t\t\t\t\t\t\t\tlet sampleType = SAMPLETYPE_FLOAT;\n\t\t\t\t\t\t\t\tif (uniform.isSignedInt) {\n\t\t\t\t\t\t\t\t\t\tsampleType = SAMPLETYPE_INT;\n\t\t\t\t\t\t\t\t} else if (uniform.isUnsignedInt) {\n\t\t\t\t\t\t\t\t\t\tsampleType = SAMPLETYPE_UINT;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tif (uniform.precision === 'highp') {\n\t\t\t\t\t\t\t\t\t\t\t\tsampleType = SAMPLETYPE_UNFILTERABLE_FLOAT;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (shadowSamplers.has(uniform.type)) {\n\t\t\t\t\t\t\t\t\t\t\t\tsampleType = SAMPLETYPE_DEPTH;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst dimension = textureDimensions[uniform.type];\n\t\t\t\t\t\t\t\ttextureFormats.push(new BindTextureFormat(uniform.name, SHADERSTAGE_VERTEX | SHADERSTAGE_FRAGMENT, dimension, sampleType));\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tconst meshBindGroupFormat = new BindGroupFormat(device, textureFormats);\n\t\t\t\tlet code = '';\n\t\t\t\tprocessingOptions.uniformFormats.forEach((format, bindGroupIndex)=>{\n\t\t\t\t\t\tif (format) {\n\t\t\t\t\t\t\t\tcode += ShaderProcessorGLSL.getUniformShaderDeclaration(format, bindGroupIndex, 0);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif (meshUniformBufferFormat) {\n\t\t\t\t\t\tcode += ShaderProcessorGLSL.getUniformShaderDeclaration(meshUniformBufferFormat, BINDGROUP_MESH_UB, 0);\n\t\t\t\t}\n\t\t\t\tprocessingOptions.bindGroupFormats.forEach((format, bindGroupIndex)=>{\n\t\t\t\t\t\tif (format) {\n\t\t\t\t\t\t\t\tcode += ShaderProcessorGLSL.getTexturesShaderDeclaration(format, bindGroupIndex);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tcode += ShaderProcessorGLSL.getTexturesShaderDeclaration(meshBindGroupFormat, BINDGROUP_MESH);\n\t\t\t\treturn {\n\t\t\t\t\t\tcode,\n\t\t\t\t\t\tmeshUniformBufferFormat,\n\t\t\t\t\t\tmeshBindGroupFormat\n\t\t\t\t};\n\t\t}\n\t\tstatic processVaryings(varyingLines, varyingMap, isVertex) {\n\t\t\t\tlet block = '';\n\t\t\t\tconst op = isVertex ? 'out' : 'in';\n\t\t\t\tvaryingLines.forEach((line, index)=>{\n\t\t\t\t\t\tconst words = ShaderProcessorGLSL.splitToWords(line);\n\t\t\t\t\t\tconst type = words.slice(0, -1).join(' ');\n\t\t\t\t\t\tconst name = words[words.length - 1];\n\t\t\t\t\t\tif (isVertex) {\n\t\t\t\t\t\t\t\tvaryingMap.set(name, index);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tindex = varyingMap.get(name);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tblock += `layout(location = ${index}) ${op} ${type} ${name};\\n`;\n\t\t\t\t});\n\t\t\t\treturn block;\n\t\t}\n\t\tstatic processOuts(outsLines) {\n\t\t\t\tlet block = '';\n\t\t\t\toutsLines.forEach((line, index)=>{\n\t\t\t\t\t\tblock += `layout(location = ${index}) out ${line};\\n`;\n\t\t\t\t});\n\t\t\t\treturn block;\n\t\t}\n\t\tstatic getTypeCount(type) {\n\t\t\t\tconst lastChar = type.substring(type.length - 1);\n\t\t\t\tconst num = parseInt(lastChar, 10);\n\t\t\t\treturn isNaN(num) ? 1 : num;\n\t\t}\n\t\tstatic processAttributes(attributeLines, shaderDefinitionAttributes, attributesMap, processingOptions) {\n\t\t\t\tlet block = '';\n\t\t\t\tattributeLines.forEach((line)=>{\n\t\t\t\t\t\tconst words = ShaderProcessorGLSL.splitToWords(line);\n\t\t\t\t\t\tlet type = words[0];\n\t\t\t\t\t\tlet name = words[1];\n\t\t\t\t\t\tif (shaderDefinitionAttributes.hasOwnProperty(name)) {\n\t\t\t\t\t\t\t\tconst semantic = shaderDefinitionAttributes[name];\n\t\t\t\t\t\t\t\tconst location = semanticToLocation[semantic];\n\t\t\t\t\t\t\t\tattributesMap.set(location, name);\n\t\t\t\t\t\t\t\tlet copyCode;\n\t\t\t\t\t\t\t\tconst element = processingOptions.getVertexElement(semantic);\n\t\t\t\t\t\t\t\tif (element) {\n\t\t\t\t\t\t\t\t\t\tconst dataType = element.dataType;\n\t\t\t\t\t\t\t\t\t\tif (dataType !== TYPE_FLOAT32 && dataType !== TYPE_FLOAT16 && !element.normalize && !element.asInt) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst attribNumElements = ShaderProcessorGLSL.getTypeCount(type);\n\t\t\t\t\t\t\t\t\t\t\t\tconst newName = `_private_${name}`;\n\t\t\t\t\t\t\t\t\t\t\t\tcopyCode = `vec${attribNumElements} ${name} = vec${attribNumElements}(${newName});\\n`;\n\t\t\t\t\t\t\t\t\t\t\t\tname = newName;\n\t\t\t\t\t\t\t\t\t\t\t\tconst isSignedType = dataType === TYPE_INT8 || dataType === TYPE_INT16 || dataType === TYPE_INT32;\n\t\t\t\t\t\t\t\t\t\t\t\tif (attribNumElements === 1) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype = isSignedType ? 'int' : 'uint';\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype = isSignedType ? `ivec${attribNumElements}` : `uvec${attribNumElements}`;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tblock += `layout(location = ${location}) in ${type} ${name};\\n`;\n\t\t\t\t\t\t\t\tif (copyCode) {\n\t\t\t\t\t\t\t\t\t\tblock += copyCode;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn block;\n\t\t}\n\t\tstatic splitToWords(line) {\n\t\t\t\tline = line.replace(/\\s+/g, ' ').trim();\n\t\t\t\treturn line.split(' ');\n\t\t}\n\t\tstatic cutOut(src, start, end, replacement) {\n\t\t\t\treturn src.substring(0, start) + replacement + src.substring(end);\n\t\t}\n\t\tstatic getUniformShaderDeclaration(format, bindGroup, bindIndex) {\n\t\t\t\tconst name = bindGroupNames[bindGroup];\n\t\t\t\tlet code = `layout(set = ${bindGroup}, binding = ${bindIndex}, std140) uniform ub_${name} {\\n`;\n\t\t\t\tformat.uniforms.forEach((uniform)=>{\n\t\t\t\t\t\tconst typeString = uniformTypeToName[uniform.type];\n\t\t\t\t\t\tcode += `    ${typeString} ${uniform.shortName}${uniform.count ? `[${uniform.count}]` : ''};\\n`;\n\t\t\t\t});\n\t\t\t\treturn `${code}};\\n`;\n\t\t}\n\t\tstatic getTexturesShaderDeclaration(bindGroupFormat, bindGroup) {\n\t\t\t\tlet code = '';\n\t\t\t\tbindGroupFormat.textureFormats.forEach((format)=>{\n\t\t\t\t\t\tlet textureType = textureDimensionInfo[format.textureDimension];\n\t\t\t\t\t\tconst isArray = textureType === 'texture2DArray';\n\t\t\t\t\t\tconst sampleTypePrefix = format.sampleType === SAMPLETYPE_UINT ? 'u' : format.sampleType === SAMPLETYPE_INT ? 'i' : '';\n\t\t\t\t\t\ttextureType = `${sampleTypePrefix}${textureType}`;\n\t\t\t\t\t\tlet namePostfix = '';\n\t\t\t\t\t\tlet extraCode = '';\n\t\t\t\t\t\tif (isArray) {\n\t\t\t\t\t\t\t\tnamePostfix = '_texture';\n\t\t\t\t\t\t\t\textraCode = `#define ${format.name} ${sampleTypePrefix}sampler2DArray(${format.name}${namePostfix}, ${format.name}_sampler)\\n`;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcode += `layout(set = ${bindGroup}, binding = ${format.slot}) uniform ${textureType} ${format.name}${namePostfix};\\n`;\n\t\t\t\t\t\tif (format.hasSampler) {\n\t\t\t\t\t\t\t\tcode += `layout(set = ${bindGroup}, binding = ${format.slot + 1}) uniform sampler ${format.name}_sampler;\\n`;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcode += extraCode;\n\t\t\t\t});\n\t\t\t\treturn code;\n\t\t}\n}\n\nconst KEYWORD$1 = /^[ \\t]*(attribute|varying|uniform)[\\t ]+/gm;\nconst KEYWORD_LINE = /^[ \\t]*(attribute|varying|uniform)[ \\t]*([^;]+)(;+)/gm;\nconst KEYWORD_RESOURCE = /^[ \\t]*var\\s*(?:(<storage,[^>]*>)\\s*([\\w\\d_]+)\\s*:\\s*(.*?)\\s*;|(<(?!storage,)[^>]*>)?\\s*([\\w\\d_]+)\\s*:\\s*(texture_.*|storage_texture_.*|storage\\w.*|external_texture|sampler(?:_comparison)?)\\s*;)\\s*$/gm;\nconst VARYING = /(?:@interpolate\\([^)]*\\)\\s*)?([\\w]+)\\s*:\\s*([\\w<>]+)/;\nconst MARKER = '@@@';\nconst ENTRY_FUNCTION = /(@vertex|@fragment)\\s*fn\\s+\\w+\\s*\\(\\s*(\\w+)\\s*:[\\s\\S]*?\\{/;\nconst textureBaseInfo = {\n\t\t'texture_1d': {\n\t\t\t\tviewDimension: TEXTUREDIMENSION_1D,\n\t\t\t\tbaseSampleType: SAMPLETYPE_FLOAT\n\t\t},\n\t\t'texture_2d': {\n\t\t\t\tviewDimension: TEXTUREDIMENSION_2D,\n\t\t\t\tbaseSampleType: SAMPLETYPE_FLOAT\n\t\t},\n\t\t'texture_2d_array': {\n\t\t\t\tviewDimension: TEXTUREDIMENSION_2D_ARRAY,\n\t\t\t\tbaseSampleType: SAMPLETYPE_FLOAT\n\t\t},\n\t\t'texture_3d': {\n\t\t\t\tviewDimension: TEXTUREDIMENSION_3D,\n\t\t\t\tbaseSampleType: SAMPLETYPE_FLOAT\n\t\t},\n\t\t'texture_cube': {\n\t\t\t\tviewDimension: TEXTUREDIMENSION_CUBE,\n\t\t\t\tbaseSampleType: SAMPLETYPE_FLOAT\n\t\t},\n\t\t'texture_cube_array': {\n\t\t\t\tviewDimension: TEXTUREDIMENSION_CUBE_ARRAY,\n\t\t\t\tbaseSampleType: SAMPLETYPE_FLOAT\n\t\t},\n\t\t'texture_multisampled_2d': {\n\t\t\t\tviewDimension: TEXTUREDIMENSION_2D,\n\t\t\t\tbaseSampleType: SAMPLETYPE_FLOAT\n\t\t},\n\t\t'texture_depth_2d': {\n\t\t\t\tviewDimension: TEXTUREDIMENSION_2D,\n\t\t\t\tbaseSampleType: SAMPLETYPE_DEPTH\n\t\t},\n\t\t'texture_depth_2d_array': {\n\t\t\t\tviewDimension: TEXTUREDIMENSION_2D_ARRAY,\n\t\t\t\tbaseSampleType: SAMPLETYPE_DEPTH\n\t\t},\n\t\t'texture_depth_cube': {\n\t\t\t\tviewDimension: TEXTUREDIMENSION_CUBE,\n\t\t\t\tbaseSampleType: SAMPLETYPE_DEPTH\n\t\t},\n\t\t'texture_depth_cube_array': {\n\t\t\t\tviewDimension: TEXTUREDIMENSION_CUBE_ARRAY,\n\t\t\t\tbaseSampleType: SAMPLETYPE_DEPTH\n\t\t},\n\t\t'texture_external': {\n\t\t\t\tviewDimension: TEXTUREDIMENSION_2D,\n\t\t\t\tbaseSampleType: SAMPLETYPE_UNFILTERABLE_FLOAT\n\t\t}\n};\nconst getTextureInfo = (baseType, componentType)=>{\n\t\tconst baseInfo = textureBaseInfo[baseType];\n\t\tlet finalSampleType = baseInfo.baseSampleType;\n\t\tif (baseInfo.baseSampleType === SAMPLETYPE_FLOAT && baseType !== 'texture_multisampled_2d') {\n\t\t\t\tswitch(componentType){\n\t\t\t\t\t\tcase 'u32':\n\t\t\t\t\t\t\t\tfinalSampleType = SAMPLETYPE_UINT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'i32':\n\t\t\t\t\t\t\t\tfinalSampleType = SAMPLETYPE_INT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'f32':\n\t\t\t\t\t\t\t\tfinalSampleType = SAMPLETYPE_FLOAT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'uff':\n\t\t\t\t\t\t\t\tfinalSampleType = SAMPLETYPE_UNFILTERABLE_FLOAT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\t\tviewDimension: baseInfo.viewDimension,\n\t\t\t\tsampleType: finalSampleType\n\t\t};\n};\nconst getTextureDeclarationType = (viewDimension, sampleType)=>{\n\t\tif (sampleType === SAMPLETYPE_DEPTH) {\n\t\t\t\tswitch(viewDimension){\n\t\t\t\t\t\tcase TEXTUREDIMENSION_2D:\n\t\t\t\t\t\t\t\treturn 'texture_depth_2d';\n\t\t\t\t\t\tcase TEXTUREDIMENSION_2D_ARRAY:\n\t\t\t\t\t\t\t\treturn 'texture_depth_2d_array';\n\t\t\t\t\t\tcase TEXTUREDIMENSION_CUBE:\n\t\t\t\t\t\t\t\treturn 'texture_depth_cube';\n\t\t\t\t\t\tcase TEXTUREDIMENSION_CUBE_ARRAY:\n\t\t\t\t\t\t\t\treturn 'texture_depth_cube_array';\n\t\t\t\t}\n\t\t}\n\t\tlet baseTypeString;\n\t\tswitch(viewDimension){\n\t\t\t\tcase TEXTUREDIMENSION_1D:\n\t\t\t\t\t\tbaseTypeString = 'texture_1d';\n\t\t\t\t\t\tbreak;\n\t\t\t\tcase TEXTUREDIMENSION_2D:\n\t\t\t\t\t\tbaseTypeString = 'texture_2d';\n\t\t\t\t\t\tbreak;\n\t\t\t\tcase TEXTUREDIMENSION_2D_ARRAY:\n\t\t\t\t\t\tbaseTypeString = 'texture_2d_array';\n\t\t\t\t\t\tbreak;\n\t\t\t\tcase TEXTUREDIMENSION_3D:\n\t\t\t\t\t\tbaseTypeString = 'texture_3d';\n\t\t\t\t\t\tbreak;\n\t\t\t\tcase TEXTUREDIMENSION_CUBE:\n\t\t\t\t\t\tbaseTypeString = 'texture_cube';\n\t\t\t\t\t\tbreak;\n\t\t\t\tcase TEXTUREDIMENSION_CUBE_ARRAY:\n\t\t\t\t\t\tbaseTypeString = 'texture_cube_array';\n\t\t\t\t\t\tbreak;\n\t\t}\n\t\tlet coreFormatString;\n\t\tswitch(sampleType){\n\t\t\t\tcase SAMPLETYPE_FLOAT:\n\t\t\t\tcase SAMPLETYPE_UNFILTERABLE_FLOAT:\n\t\t\t\t\t\tcoreFormatString = 'f32';\n\t\t\t\t\t\tbreak;\n\t\t\t\tcase SAMPLETYPE_UINT:\n\t\t\t\t\t\tcoreFormatString = 'u32';\n\t\t\t\t\t\tbreak;\n\t\t\t\tcase SAMPLETYPE_INT:\n\t\t\t\t\t\tcoreFormatString = 'i32';\n\t\t\t\t\t\tbreak;\n\t\t}\n\t\treturn `${baseTypeString}<${coreFormatString}>`;\n};\nconst wrappedArrayTypes = {\n\t\t'f32': 'WrappedF32',\n\t\t'i32': 'WrappedI32',\n\t\t'u32': 'WrappedU32',\n\t\t'vec2f': 'WrappedVec2F',\n\t\t'vec2i': 'WrappedVec2I',\n\t\t'vec2u': 'WrappedVec2U'\n};\nconst splitToWords = (line)=>{\n\t\tline = line.replace(/\\s+/g, ' ').trim();\n\t\treturn line.split(/[\\s:]+/);\n};\nconst UNIFORM_ARRAY_REGEX = /array<([^,]+),\\s*([^>]+)>/;\nclass UniformLine {\n\t\tconstructor(line, shader){\n\t\t\t\tthis.ubName = null;\n\t\t\t\tthis.arraySize = 0;\n\t\t\t\tthis.line = line;\n\t\t\t\tconst parts = splitToWords(line);\n\t\t\t\tif (parts.length < 2) {\n\t\t\t\t\t\tshader.failed = true;\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.name = parts[0];\n\t\t\t\tthis.type = parts.slice(1).join(' ');\n\t\t\t\tif (this.type.includes('array<')) {\n\t\t\t\t\t\tconst match = UNIFORM_ARRAY_REGEX.exec(this.type);\n\t\t\t\t\t\tthis.type = match[1].trim();\n\t\t\t\t\t\tthis.arraySize = Number(match[2]);\n\t\t\t\t\t\tif (isNaN(this.arraySize)) {\n\t\t\t\t\t\t\t\tshader.failed = true;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n}\nconst TEXTURE_REGEX = /^\\s*var\\s+(\\w+)\\s*:\\s*(texture_\\w+)(?:<(\\w+)>)?;\\s*$/;\nconst STORAGE_TEXTURE_REGEX = /^\\s*var\\s+([\\w\\d_]+)\\s*:\\s*(texture_storage_2d|texture_storage_2d_array)<([\\w\\d_]+),\\s*(\\w+)>\\s*;\\s*$/;\nconst STORAGE_BUFFER_REGEX = /^\\s*var\\s*<storage,\\s*(read|write)?>\\s*([\\w\\d_]+)\\s*:\\s*(.*)\\s*;\\s*$/;\nconst EXTERNAL_TEXTURE_REGEX = /^\\s*var\\s+([\\w\\d_]+)\\s*:\\s*texture_external;\\s*$/;\nconst SAMPLER_REGEX = /^\\s*var\\s+([\\w\\d_]+)\\s*:\\s*(sampler|sampler_comparison)\\s*;\\s*$/;\nclass ResourceLine {\n\t\tconstructor(line, shader){\n\t\t\t\tthis.originalLine = line;\n\t\t\t\tthis.line = line;\n\t\t\t\tthis.isTexture = false;\n\t\t\t\tthis.isSampler = false;\n\t\t\t\tthis.isStorageTexture = false;\n\t\t\t\tthis.isStorageBuffer = false;\n\t\t\t\tthis.isExternalTexture = false;\n\t\t\t\tthis.type = '';\n\t\t\t\tthis.matchedElements = [];\n\t\t\t\tconst textureMatch = this.line.match(TEXTURE_REGEX);\n\t\t\t\tif (textureMatch) {\n\t\t\t\t\t\tthis.name = textureMatch[1];\n\t\t\t\t\t\tthis.type = textureMatch[2];\n\t\t\t\t\t\tthis.textureFormat = textureMatch[3];\n\t\t\t\t\t\tthis.isTexture = true;\n\t\t\t\t\t\tthis.matchedElements.push(...textureMatch);\n\t\t\t\t\t\tconst info = getTextureInfo(this.type, this.textureFormat);\n\t\t\t\t\t\tthis.textureDimension = info.viewDimension;\n\t\t\t\t\t\tthis.sampleType = info.sampleType;\n\t\t\t\t}\n\t\t\t\tconst storageTextureMatch = this.line.match(STORAGE_TEXTURE_REGEX);\n\t\t\t\tif (storageTextureMatch) {\n\t\t\t\t\t\tthis.isStorageTexture = true;\n\t\t\t\t\t\tthis.name = storageTextureMatch[1];\n\t\t\t\t\t\tthis.textureType = storageTextureMatch[2];\n\t\t\t\t\t\tthis.format = storageTextureMatch[3];\n\t\t\t\t\t\tthis.access = storageTextureMatch[4];\n\t\t\t\t\t\tthis.matchedElements.push(...storageTextureMatch);\n\t\t\t\t}\n\t\t\t\tconst storageBufferMatch = this.line.match(STORAGE_BUFFER_REGEX);\n\t\t\t\tif (storageBufferMatch) {\n\t\t\t\t\t\tthis.isStorageBuffer = true;\n\t\t\t\t\t\tthis.accessMode = storageBufferMatch[1] || 'none';\n\t\t\t\t\t\tthis.name = storageBufferMatch[2];\n\t\t\t\t\t\tthis.type = storageBufferMatch[3];\n\t\t\t\t\t\tthis.matchedElements.push(...storageBufferMatch);\n\t\t\t\t}\n\t\t\t\tconst externalTextureMatch = this.line.match(EXTERNAL_TEXTURE_REGEX);\n\t\t\t\tif (externalTextureMatch) {\n\t\t\t\t\t\tthis.name = externalTextureMatch[1];\n\t\t\t\t\t\tthis.isExternalTexture = true;\n\t\t\t\t\t\tthis.matchedElements.push(...storageBufferMatch);\n\t\t\t\t}\n\t\t\t\tconst samplerMatch = this.line.match(SAMPLER_REGEX);\n\t\t\t\tif (samplerMatch) {\n\t\t\t\t\t\tthis.name = samplerMatch[1];\n\t\t\t\t\t\tthis.samplerType = samplerMatch[2];\n\t\t\t\t\t\tthis.isSampler = true;\n\t\t\t\t\t\tthis.matchedElements.push(...samplerMatch);\n\t\t\t\t}\n\t\t\t\tif (this.matchedElements.length === 0) {\n\t\t\t\t\t\tshader.failed = true;\n\t\t\t\t}\n\t\t}\n\t\tequals(other) {\n\t\t\t\tif (this.name !== other.name) return false;\n\t\t\t\tif (this.type !== other.type) return false;\n\t\t\t\tif (this.isTexture !== other.isTexture) return false;\n\t\t\t\tif (this.isSampler !== other.isSampler) return false;\n\t\t\t\tif (this.isStorageTexture !== other.isStorageTexture) return false;\n\t\t\t\tif (this.isStorageBuffer !== other.isStorageBuffer) return false;\n\t\t\t\tif (this.isExternalTexture !== other.isExternalTexture) return false;\n\t\t\t\tif (this.textureFormat !== other.textureFormat) return false;\n\t\t\t\tif (this.textureDimension !== other.textureDimension) return false;\n\t\t\t\tif (this.sampleType !== other.sampleType) return false;\n\t\t\t\tif (this.textureType !== other.textureType) return false;\n\t\t\t\tif (this.format !== other.format) return false;\n\t\t\t\tif (this.access !== other.access) return false;\n\t\t\t\tif (this.accessMode !== other.accessMode) return false;\n\t\t\t\tif (this.samplerType !== other.samplerType) return false;\n\t\t\t\treturn true;\n\t\t}\n}\nclass WebgpuShaderProcessorWGSL {\n\t\tstatic run(device, shaderDefinition, shader) {\n\t\t\t\tconst varyingMap = new Map();\n\t\t\t\tconst vertexExtracted = WebgpuShaderProcessorWGSL.extract(shaderDefinition.vshader);\n\t\t\t\tconst fragmentExtracted = WebgpuShaderProcessorWGSL.extract(shaderDefinition.fshader);\n\t\t\t\tconst attributesMap = new Map();\n\t\t\t\tconst attributesBlock = WebgpuShaderProcessorWGSL.processAttributes(vertexExtracted.attributes, shaderDefinition.attributes, attributesMap, shaderDefinition.processingOptions, shader);\n\t\t\t\tconst vertexVaryingsBlock = WebgpuShaderProcessorWGSL.processVaryings(vertexExtracted.varyings, varyingMap, true);\n\t\t\t\tconst fragmentVaryingsBlock = WebgpuShaderProcessorWGSL.processVaryings(fragmentExtracted.varyings, varyingMap, false);\n\t\t\t\tconst concatUniforms = vertexExtracted.uniforms.concat(fragmentExtracted.uniforms);\n\t\t\t\tconst uniforms = Array.from(new Set(concatUniforms));\n\t\t\t\tconst parsedUniforms = uniforms.map((line)=>new UniformLine(line, shader));\n\t\t\t\tconst uniformsData = WebgpuShaderProcessorWGSL.processUniforms(device, parsedUniforms, shaderDefinition.processingOptions, shader);\n\t\t\t\tvertexExtracted.src = WebgpuShaderProcessorWGSL.renameUniformAccess(vertexExtracted.src, parsedUniforms);\n\t\t\t\tfragmentExtracted.src = WebgpuShaderProcessorWGSL.renameUniformAccess(fragmentExtracted.src, parsedUniforms);\n\t\t\t\tconst parsedResources = WebgpuShaderProcessorWGSL.mergeResources(vertexExtracted.resources, fragmentExtracted.resources, shader);\n\t\t\t\tconst resourcesData = WebgpuShaderProcessorWGSL.processResources(device, parsedResources, shaderDefinition.processingOptions, shader);\n\t\t\t\tconst fOutput = WebgpuShaderProcessorWGSL.generateFragmentOutputStruct(fragmentExtracted.src, device.maxColorAttachments);\n\t\t\t\tvertexExtracted.src = WebgpuShaderProcessorWGSL.copyInputs(vertexExtracted.src, shader);\n\t\t\t\tfragmentExtracted.src = WebgpuShaderProcessorWGSL.copyInputs(fragmentExtracted.src, shader);\n\t\t\t\tconst vBlock = `${attributesBlock}\\n${vertexVaryingsBlock}\\n${uniformsData.code}\\n${resourcesData.code}\\n`;\n\t\t\t\tconst vshader = vertexExtracted.src.replace(MARKER, vBlock);\n\t\t\t\tconst fBlock = `${fragmentVaryingsBlock}\\n${fOutput}\\n${uniformsData.code}\\n${resourcesData.code}\\n`;\n\t\t\t\tconst fshader = fragmentExtracted.src.replace(MARKER, fBlock);\n\t\t\t\treturn {\n\t\t\t\t\t\tvshader: vshader,\n\t\t\t\t\t\tfshader: fshader,\n\t\t\t\t\t\tattributes: attributesMap,\n\t\t\t\t\t\tmeshUniformBufferFormat: uniformsData.meshUniformBufferFormat,\n\t\t\t\t\t\tmeshBindGroupFormat: resourcesData.meshBindGroupFormat\n\t\t\t\t};\n\t\t}\n\t\tstatic extract(src) {\n\t\t\t\tconst attributes = [];\n\t\t\t\tconst varyings = [];\n\t\t\t\tconst uniforms = [];\n\t\t\t\tconst resources = [];\n\t\t\t\tlet replacement = `${MARKER}\\n`;\n\t\t\t\tlet match;\n\t\t\t\twhile((match = KEYWORD$1.exec(src)) !== null){\n\t\t\t\t\t\tconst keyword = match[1];\n\t\t\t\t\t\tKEYWORD_LINE.lastIndex = match.index;\n\t\t\t\t\t\tconst lineMatch = KEYWORD_LINE.exec(src);\n\t\t\t\t\t\tif (keyword === 'attribute') {\n\t\t\t\t\t\t\t\tattributes.push(lineMatch[2]);\n\t\t\t\t\t\t} else if (keyword === 'varying') {\n\t\t\t\t\t\t\t\tvaryings.push(lineMatch[2]);\n\t\t\t\t\t\t} else if (keyword === 'uniform') {\n\t\t\t\t\t\t\t\tuniforms.push(lineMatch[2]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsrc = WebgpuShaderProcessorWGSL.cutOut(src, match.index, KEYWORD_LINE.lastIndex, replacement);\n\t\t\t\t\t\tKEYWORD$1.lastIndex = match.index + replacement.length;\n\t\t\t\t\t\treplacement = '';\n\t\t\t\t}\n\t\t\t\twhile((match = KEYWORD_RESOURCE.exec(src)) !== null){\n\t\t\t\t\t\tresources.push(match[0]);\n\t\t\t\t\t\tsrc = WebgpuShaderProcessorWGSL.cutOut(src, match.index, KEYWORD_RESOURCE.lastIndex, replacement);\n\t\t\t\t\t\tKEYWORD_RESOURCE.lastIndex = match.index + replacement.length;\n\t\t\t\t\t\treplacement = '';\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\t\tsrc,\n\t\t\t\t\t\tattributes,\n\t\t\t\t\t\tvaryings,\n\t\t\t\t\t\tuniforms,\n\t\t\t\t\t\tresources\n\t\t\t\t};\n\t\t}\n\t\tstatic processUniforms(device, uniforms, processingOptions, shader) {\n\t\t\t\tconst meshUniforms = [];\n\t\t\t\tuniforms.forEach((uniform)=>{\n\t\t\t\t\t\tif (!processingOptions.hasUniform(uniform.name)) {\n\t\t\t\t\t\t\t\tuniform.ubName = 'ub_mesh_ub';\n\t\t\t\t\t\t\t\tconst uniformType = uniformTypeToNameMapWGSL.get(uniform.type);\n\t\t\t\t\t\t\t\tconst uniformFormat = new UniformFormat(uniform.name, uniformType, uniform.arraySize);\n\t\t\t\t\t\t\t\tmeshUniforms.push(uniformFormat);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tuniform.ubName = 'ub_view';\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif (meshUniforms.length === 0) {\n\t\t\t\t\t\tmeshUniforms.push(new UniformFormat(UNUSED_UNIFORM_NAME, UNIFORMTYPE_FLOAT));\n\t\t\t\t}\n\t\t\t\tconst meshUniformBufferFormat = new UniformBufferFormat(device, meshUniforms);\n\t\t\t\tlet code = '';\n\t\t\t\tprocessingOptions.uniformFormats.forEach((format, bindGroupIndex)=>{\n\t\t\t\t\t\tif (format) {\n\t\t\t\t\t\t\t\tcode += WebgpuShaderProcessorWGSL.getUniformShaderDeclaration(format, bindGroupIndex, 0);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif (meshUniformBufferFormat) {\n\t\t\t\t\t\tcode += WebgpuShaderProcessorWGSL.getUniformShaderDeclaration(meshUniformBufferFormat, BINDGROUP_MESH_UB, 0);\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\t\tcode,\n\t\t\t\t\t\tmeshUniformBufferFormat\n\t\t\t\t};\n\t\t}\n\t\tstatic renameUniformAccess(source, uniforms) {\n\t\t\t\tuniforms.forEach((uniform)=>{\n\t\t\t\t\t\tconst srcName = `uniform.${uniform.name}`;\n\t\t\t\t\t\tconst dstName = `${uniform.ubName}.${uniform.name}`;\n\t\t\t\t\t\tconst regex = new RegExp(`\\\\b${srcName}\\\\b`, 'g');\n\t\t\t\t\t\tsource = source.replace(regex, dstName);\n\t\t\t\t});\n\t\t\t\treturn source;\n\t\t}\n\t\tstatic mergeResources(vertex, fragment, shader) {\n\t\t\t\tconst resources = vertex.map((line)=>new ResourceLine(line, shader));\n\t\t\t\tconst fragmentResources = fragment.map((line)=>new ResourceLine(line, shader));\n\t\t\t\tfragmentResources.forEach((fragmentResource)=>{\n\t\t\t\t\t\tconst existing = resources.find((resource)=>resource.name === fragmentResource.name);\n\t\t\t\t\t\tif (existing) {\n\t\t\t\t\t\t\t\tif (!existing.equals(fragmentResource)) {\n\t\t\t\t\t\t\t\t\t\tshader.failed = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tresources.push(fragmentResource);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn resources;\n\t\t}\n\t\tstatic processResources(device, resources, processingOptions, shader) {\n\t\t\t\tconst textureFormats = [];\n\t\t\t\tfor(let i = 0; i < resources.length; i++){\n\t\t\t\t\t\tconst resource = resources[i];\n\t\t\t\t\t\tif (resource.isTexture) {\n\t\t\t\t\t\t\t\tconst sampler = resources[i + 1];\n\t\t\t\t\t\t\t\tconst hasSampler = sampler?.isSampler;\n\t\t\t\t\t\t\t\tconst sampleType = resource.sampleType;\n\t\t\t\t\t\t\t\tconst dimension = resource.textureDimension;\n\t\t\t\t\t\t\t\ttextureFormats.push(new BindTextureFormat(resource.name, SHADERSTAGE_VERTEX | SHADERSTAGE_FRAGMENT, dimension, sampleType, hasSampler, hasSampler ? sampler.name : null));\n\t\t\t\t\t\t\t\tif (hasSampler) i++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (resource.isStorageBuffer) {\n\t\t\t\t\t\t\t\tconst readOnly = resource.accessMode !== 'read_write';\n\t\t\t\t\t\t\t\tconst bufferFormat = new BindStorageBufferFormat(resource.name, SHADERSTAGE_VERTEX | SHADERSTAGE_FRAGMENT, readOnly);\n\t\t\t\t\t\t\t\tbufferFormat.format = resource.type;\n\t\t\t\t\t\t\t\ttextureFormats.push(bufferFormat);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst meshBindGroupFormat = new BindGroupFormat(device, textureFormats);\n\t\t\t\tlet code = '';\n\t\t\t\tprocessingOptions.bindGroupFormats.forEach((format, bindGroupIndex)=>{\n\t\t\t\t\t\tif (format) {\n\t\t\t\t\t\t\t\tcode += WebgpuShaderProcessorWGSL.getTextureShaderDeclaration(format, bindGroupIndex);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tcode += WebgpuShaderProcessorWGSL.getTextureShaderDeclaration(meshBindGroupFormat, BINDGROUP_MESH);\n\t\t\t\treturn {\n\t\t\t\t\t\tcode,\n\t\t\t\t\t\tmeshBindGroupFormat\n\t\t\t\t};\n\t\t}\n\t\tstatic getUniformShaderDeclaration(ubFormat, bindGroup, bindIndex) {\n\t\t\t\tconst name = bindGroupNames[bindGroup];\n\t\t\t\tconst structName = `struct_ub_${name}`;\n\t\t\t\tlet code = `struct ${structName} {\\n`;\n\t\t\t\tubFormat.uniforms.forEach((uniform)=>{\n\t\t\t\t\t\tlet typeString = uniformTypeToNameWGSL[uniform.type][0];\n\t\t\t\t\t\tif (uniform.count > 0) {\n\t\t\t\t\t\t\t\tif (wrappedArrayTypes.hasOwnProperty(typeString)) {\n\t\t\t\t\t\t\t\t\t\ttypeString = wrappedArrayTypes[typeString];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcode += `    ${uniform.shortName}: array<${typeString}, ${uniform.count}>,\\n`;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcode += `    ${uniform.shortName}: ${typeString},\\n`;\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tcode += '};\\n';\n\t\t\t\tcode += `@group(${bindGroup}) @binding(${bindIndex}) var<uniform> ub_${name} : ${structName};\\n\\n`;\n\t\t\t\treturn code;\n\t\t}\n\t\tstatic getTextureShaderDeclaration(format, bindGroup) {\n\t\t\t\tlet code = '';\n\t\t\t\tformat.textureFormats.forEach((format)=>{\n\t\t\t\t\t\tconst textureTypeName = getTextureDeclarationType(format.textureDimension, format.sampleType);\n\t\t\t\t\t\tcode += `@group(${bindGroup}) @binding(${format.slot}) var ${format.name}: ${textureTypeName};\\n`;\n\t\t\t\t\t\tif (format.hasSampler) {\n\t\t\t\t\t\t\t\tconst samplerName = format.sampleType === SAMPLETYPE_DEPTH ? 'sampler_comparison' : 'sampler';\n\t\t\t\t\t\t\t\tcode += `@group(${bindGroup}) @binding(${format.slot + 1}) var ${format.samplerName}: ${samplerName};\\n`;\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tformat.storageBufferFormats.forEach((format)=>{\n\t\t\t\t\t\tconst access = format.readOnly ? 'read' : 'read_write';\n\t\t\t\t\t\tcode += `@group(${bindGroup}) @binding(${format.slot}) var<storage, ${access}> ${format.name} : ${format.format};\\n`;\n\t\t\t\t});\n\t\t\t\treturn code;\n\t\t}\n\t\tstatic processVaryings(varyingLines, varyingMap, isVertex) {\n\t\t\t\tlet block = '';\n\t\t\t\tlet blockPrivates = '';\n\t\t\t\tlet blockCopy = '';\n\t\t\t\tvaryingLines.forEach((line, index)=>{\n\t\t\t\t\t\tconst match = line.match(VARYING);\n\t\t\t\t\t\tif (match) {\n\t\t\t\t\t\t\t\tconst name = match[1];\n\t\t\t\t\t\t\t\tconst type = match[2];\n\t\t\t\t\t\t\t\tif (isVertex) {\n\t\t\t\t\t\t\t\t\t\tvaryingMap.set(name, index);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tindex = varyingMap.get(name);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tblock += `    @location(${index}) ${line},\\n`;\n\t\t\t\t\t\t\t\tif (!isVertex) {\n\t\t\t\t\t\t\t\t\t\tblockPrivates += `    var<private> ${name}: ${type};\\n`;\n\t\t\t\t\t\t\t\t\t\tblockCopy += `    ${name} = input.${name};\\n`;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif (isVertex) {\n\t\t\t\t\t\tblock += '    @builtin(position) position : vec4f,\\n';\n\t\t\t\t} else {\n\t\t\t\t\t\tblock += '    @builtin(position) position : vec4f,\\n';\n\t\t\t\t\t\tblock += '    @builtin(front_facing) frontFacing : bool,\\n';\n\t\t\t\t\t\tblock += '    @builtin(sample_index) sampleIndex : u32\\n';\n\t\t\t\t}\n\t\t\t\tconst fragmentGlobals = isVertex ? '' : `\n\t\t\t\t\t\tvar<private> pcPosition: vec4f;\n\t\t\t\t\t\tvar<private> pcFrontFacing: bool;\n\t\t\t\t\t\tvar<private> pcSampleIndex: u32;\n\t\t\t\t\t\t${blockPrivates}\n\t\t\t\t\t\t\n\t\t\t\t\t\t// function to copy inputs (varyings) to private global variables\n\t\t\t\t\t\tfn _pcCopyInputs(input: FragmentInput) {\n\t\t\t\t\t\t\t\t${blockCopy}\n\t\t\t\t\t\t\t\tpcPosition = input.position;\n\t\t\t\t\t\t\t\tpcFrontFacing = input.frontFacing;\n\t\t\t\t\t\t\t\tpcSampleIndex = input.sampleIndex;\n\t\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t\tconst structName = isVertex ? 'VertexOutput' : 'FragmentInput';\n\t\t\t\treturn `\n\t\t\t\t\t\tstruct ${structName} {\n\t\t\t\t\t\t\t\t${block}\n\t\t\t\t\t\t};\n\t\t\t\t\t\t${fragmentGlobals}\n\t\t\t\t`;\n\t\t}\n\t\tstatic generateFragmentOutputStruct(src, numRenderTargets) {\n\t\t\t\tlet structCode = 'struct FragmentOutput {\\n';\n\t\t\t\tfor(let i = 0; i < numRenderTargets; i++){\n\t\t\t\t\t\tstructCode += `    @location(${i}) color${i > 0 ? i : ''} : pcOutType${i},\\n`;\n\t\t\t\t}\n\t\t\t\tconst needsFragDepth = src.search(/\\.fragDepth\\s*=/) !== -1;\n\t\t\t\tif (needsFragDepth) {\n\t\t\t\t\t\tstructCode += '    @builtin(frag_depth) fragDepth : f32\\n';\n\t\t\t\t}\n\t\t\t\treturn `${structCode}};\\n`;\n\t\t}\n\t\tstatic floatAttributeToInt(type, signed) {\n\t\t\t\tconst longToShortMap = {\n\t\t\t\t\t\t'f32': 'f32',\n\t\t\t\t\t\t'vec2<f32>': 'vec2f',\n\t\t\t\t\t\t'vec3<f32>': 'vec3f',\n\t\t\t\t\t\t'vec4<f32>': 'vec4f'\n\t\t\t\t};\n\t\t\t\tconst shortType = longToShortMap[type] || type;\n\t\t\t\tconst floatToIntShort = {\n\t\t\t\t\t\t'f32': signed ? 'i32' : 'u32',\n\t\t\t\t\t\t'vec2f': signed ? 'vec2i' : 'vec2u',\n\t\t\t\t\t\t'vec3f': signed ? 'vec3i' : 'vec3u',\n\t\t\t\t\t\t'vec4f': signed ? 'vec4i' : 'vec4u'\n\t\t\t\t};\n\t\t\t\treturn floatToIntShort[shortType] || null;\n\t\t}\n\t\tstatic processAttributes(attributeLines, shaderDefinitionAttributes = {}, attributesMap, processingOptions, shader) {\n\t\t\t\tlet blockAttributes = '';\n\t\t\t\tlet blockPrivates = '';\n\t\t\t\tlet blockCopy = '';\n\t\t\t\tattributeLines.forEach((line)=>{\n\t\t\t\t\t\tconst words = splitToWords(line);\n\t\t\t\t\t\tconst name = words[0];\n\t\t\t\t\t\tlet type = words[1];\n\t\t\t\t\t\tconst originalType = type;\n\t\t\t\t\t\tif (shaderDefinitionAttributes.hasOwnProperty(name)) {\n\t\t\t\t\t\t\t\tconst semantic = shaderDefinitionAttributes[name];\n\t\t\t\t\t\t\t\tconst location = semanticToLocation[semantic];\n\t\t\t\t\t\t\t\tattributesMap.set(location, name);\n\t\t\t\t\t\t\t\tconst element = processingOptions.getVertexElement(semantic);\n\t\t\t\t\t\t\t\tif (element) {\n\t\t\t\t\t\t\t\t\t\tconst dataType = element.dataType;\n\t\t\t\t\t\t\t\t\t\tif (dataType !== TYPE_FLOAT32 && dataType !== TYPE_FLOAT16 && !element.normalize && !element.asInt) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst isSignedType = dataType === TYPE_INT8 || dataType === TYPE_INT16 || dataType === TYPE_INT32;\n\t\t\t\t\t\t\t\t\t\t\t\ttype = WebgpuShaderProcessorWGSL.floatAttributeToInt(type, isSignedType);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tblockAttributes += `    @location(${location}) ${name}: ${type},\\n`;\n\t\t\t\t\t\t\t\tblockPrivates += `    var<private> ${line};\\n`;\n\t\t\t\t\t\t\t\tblockCopy += `    ${name} = ${originalType}(input.${name});\\n`;\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn `\n\t\t\t\t\t\tstruct VertexInput {\n\t\t\t\t\t\t\t\t${blockAttributes}\n\t\t\t\t\t\t\t\t@builtin(vertex_index) vertexIndex : u32,       // built-in vertex index\n\t\t\t\t\t\t\t\t@builtin(instance_index) instanceIndex : u32    // built-in instance index\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\t${blockPrivates}\n\t\t\t\t\t\tvar<private> pcVertexIndex: u32;\n\t\t\t\t\t\tvar<private> pcInstanceIndex: u32;\n\n\t\t\t\t\t\tfn _pcCopyInputs(input: VertexInput) {\n\t\t\t\t\t\t\t\t${blockCopy}\n\t\t\t\t\t\t\t\tpcVertexIndex = input.vertexIndex;\n\t\t\t\t\t\t\t\tpcInstanceIndex = input.instanceIndex;\n\t\t\t\t\t\t}\n\t\t\t\t`;\n\t\t}\n\t\tstatic copyInputs(src, shader) {\n\t\t\t\tconst match = src.match(ENTRY_FUNCTION);\n\t\t\t\tif (!match || !match[2]) {\n\t\t\t\t\t\treturn src;\n\t\t\t\t}\n\t\t\t\tconst inputName = match[2];\n\t\t\t\tconst braceIndex = match.index + match[0].length - 1;\n\t\t\t\tconst beginning = src.slice(0, braceIndex + 1);\n\t\t\t\tconst end = src.slice(braceIndex + 1);\n\t\t\t\tconst lineToInject = `\\n    _pcCopyInputs(${inputName});`;\n\t\t\t\treturn beginning + lineToInject + end;\n\t\t}\n\t\tstatic cutOut(src, start, end, replacement) {\n\t\t\t\treturn src.substring(0, start) + replacement + src.substring(end);\n\t\t}\n}\n\nclass WebgpuShader {\n\t\tconstructor(shader){\n\t\t\t\tthis._vertexCode = null;\n\t\t\t\tthis._fragmentCode = null;\n\t\t\t\tthis._computeCode = null;\n\t\t\t\tthis.vertexEntryPoint = 'main';\n\t\t\t\tthis.fragmentEntryPoint = 'main';\n\t\t\t\tthis.computeEntryPoint = 'main';\n\t\t\t\tthis.shader = shader;\n\t\t\t\tconst definition = shader.definition;\n\t\t\t\tif (definition.shaderLanguage === SHADERLANGUAGE_WGSL) {\n\t\t\t\t\t\tif (definition.cshader) {\n\t\t\t\t\t\t\t\tthis._computeCode = definition.cshader ?? null;\n\t\t\t\t\t\t\t\tthis.computeUniformBufferFormats = definition.computeUniformBufferFormats;\n\t\t\t\t\t\t\t\tthis.computeBindGroupFormat = definition.computeBindGroupFormat;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.vertexEntryPoint = 'vertexMain';\n\t\t\t\t\t\t\t\tthis.fragmentEntryPoint = 'fragmentMain';\n\t\t\t\t\t\t\t\tif (definition.processingOptions) {\n\t\t\t\t\t\t\t\t\t\tthis.processWGSL();\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis._vertexCode = definition.vshader ?? null;\n\t\t\t\t\t\t\t\t\t\tthis._fragmentCode = definition.fshader ?? null;\n\t\t\t\t\t\t\t\t\t\tshader.meshUniformBufferFormat = definition.meshUniformBufferFormat;\n\t\t\t\t\t\t\t\t\t\tshader.meshBindGroupFormat = definition.meshBindGroupFormat;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tshader.ready = true;\n\t\t\t\t} else {\n\t\t\t\t\t\tif (definition.processingOptions) {\n\t\t\t\t\t\t\t\tthis.processGLSL();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tdestroy(shader) {\n\t\t\t\tthis._vertexCode = null;\n\t\t\t\tthis._fragmentCode = null;\n\t\t}\n\t\tcreateShaderModule(code, shaderType) {\n\t\t\t\tconst device = this.shader.device;\n\t\t\t\tconst wgpu = device.wgpu;\n\t\t\t\tconst shaderModule = wgpu.createShaderModule({\n\t\t\t\t\t\tcode: code\n\t\t\t\t});\n\t\t\t\treturn shaderModule;\n\t\t}\n\t\tgetVertexShaderModule() {\n\t\t\t\treturn this.createShaderModule(this._vertexCode, 'Vertex');\n\t\t}\n\t\tgetFragmentShaderModule() {\n\t\t\t\treturn this.createShaderModule(this._fragmentCode, 'Fragment');\n\t\t}\n\t\tgetComputeShaderModule() {\n\t\t\t\treturn this.createShaderModule(this._computeCode, 'Compute');\n\t\t}\n\t\tprocessGLSL() {\n\t\t\t\tconst shader = this.shader;\n\t\t\t\tconst processed = ShaderProcessorGLSL.run(shader.device, shader.definition, shader);\n\t\t\t\tthis._vertexCode = this.transpile(processed.vshader, 'vertex', shader.definition.vshader);\n\t\t\t\tthis._fragmentCode = this.transpile(processed.fshader, 'fragment', shader.definition.fshader);\n\t\t\t\tif (!(this._vertexCode && this._fragmentCode)) {\n\t\t\t\t\t\tshader.failed = true;\n\t\t\t\t} else {\n\t\t\t\t\t\tshader.ready = true;\n\t\t\t\t}\n\t\t\t\tshader.meshUniformBufferFormat = processed.meshUniformBufferFormat;\n\t\t\t\tshader.meshBindGroupFormat = processed.meshBindGroupFormat;\n\t\t\t\tshader.attributes = processed.attributes;\n\t\t}\n\t\tprocessWGSL() {\n\t\t\t\tconst shader = this.shader;\n\t\t\t\tconst processed = WebgpuShaderProcessorWGSL.run(shader.device, shader.definition, shader);\n\t\t\t\tthis._vertexCode = processed.vshader;\n\t\t\t\tthis._fragmentCode = processed.fshader;\n\t\t\t\tshader.meshUniformBufferFormat = processed.meshUniformBufferFormat;\n\t\t\t\tshader.meshBindGroupFormat = processed.meshBindGroupFormat;\n\t\t\t\tshader.attributes = processed.attributes;\n\t\t}\n\t\ttranspile(src, shaderType, originalSrc) {\n\t\t\t\tconst device = this.shader.device;\n\t\t\t\tif (!device.glslang || !device.twgsl) {\n\t\t\t\t\t\tconsole.error(`Cannot transpile shader [${this.shader.label}] - shader transpilers (glslang/twgsl) are not available. Make sure to provide glslangUrl and twgslUrl when creating the device.`, {\n\t\t\t\t\t\t\t\tshader: this.shader\n\t\t\t\t\t\t});\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\t\tconst spirv = device.glslang.compileGLSL(src, shaderType);\n\t\t\t\t\t\tconst wgsl = device.twgsl.convertSpirV2WGSL(spirv);\n\t\t\t\t\t\treturn wgsl;\n\t\t\t\t} catch (err) {\n\t\t\t\t\t\tconsole.error(`Failed to transpile webgl ${shaderType} shader [${this.shader.label}] to WebGPU while rendering ${ void 0}, error:\\n [${err.stack}]`, {\n\t\t\t\t\t\t\t\tprocessed: src,\n\t\t\t\t\t\t\t\toriginal: originalSrc,\n\t\t\t\t\t\t\t\tshader: this.shader,\n\t\t\t\t\t\t\t\terror: err,\n\t\t\t\t\t\t\t\tstack: err.stack\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t}\n\t\tget vertexCode() {\n\t\t\t\treturn this._vertexCode;\n\t\t}\n\t\tget fragmentCode() {\n\t\t\t\treturn this._fragmentCode;\n\t\t}\n\t\tloseContext() {}\n\t\trestoreContext(device, shader) {}\n}\n\nconst gpuAddressModes = [];\ngpuAddressModes[ADDRESS_REPEAT] = 'repeat';\ngpuAddressModes[ADDRESS_CLAMP_TO_EDGE] = 'clamp-to-edge';\ngpuAddressModes[ADDRESS_MIRRORED_REPEAT] = 'mirror-repeat';\nconst gpuFilterModes = [];\ngpuFilterModes[FILTER_NEAREST] = {\n\t\tlevel: 'nearest',\n\t\tmip: 'nearest'\n};\ngpuFilterModes[FILTER_LINEAR] = {\n\t\tlevel: 'linear',\n\t\tmip: 'nearest'\n};\ngpuFilterModes[FILTER_NEAREST_MIPMAP_NEAREST] = {\n\t\tlevel: 'nearest',\n\t\tmip: 'nearest'\n};\ngpuFilterModes[FILTER_NEAREST_MIPMAP_LINEAR] = {\n\t\tlevel: 'nearest',\n\t\tmip: 'linear'\n};\ngpuFilterModes[FILTER_LINEAR_MIPMAP_NEAREST] = {\n\t\tlevel: 'linear',\n\t\tmip: 'nearest'\n};\ngpuFilterModes[FILTER_LINEAR_MIPMAP_LINEAR] = {\n\t\tlevel: 'linear',\n\t\tmip: 'linear'\n};\nconst dummyUse = (thingOne)=>{};\nclass WebgpuTexture {\n\t\tconstructor(texture){\n\t\t\t\tthis.samplers = [];\n\t\t\t\tthis.texture = texture;\n\t\t\t\tthis.format = gpuTextureFormats[texture.format];\n\t\t\t\tthis.create(texture.device);\n\t\t}\n\t\tcreate(device) {\n\t\t\t\tconst texture = this.texture;\n\t\t\t\tconst wgpu = device.wgpu;\n\t\t\t\tconst numLevels = texture.numLevels;\n\t\t\t\tthis.desc = {\n\t\t\t\t\t\tsize: {\n\t\t\t\t\t\t\t\twidth: texture.width,\n\t\t\t\t\t\t\t\theight: texture.height,\n\t\t\t\t\t\t\t\tdepthOrArrayLayers: texture.cubemap ? 6 : texture.array ? texture.arrayLength : 1\n\t\t\t\t\t\t},\n\t\t\t\t\t\tformat: this.format,\n\t\t\t\t\t\tmipLevelCount: numLevels,\n\t\t\t\t\t\tsampleCount: 1,\n\t\t\t\t\t\tdimension: texture.volume ? '3d' : '2d',\n\t\t\t\t\t\tusage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST | GPUTextureUsage.COPY_SRC | (isCompressedPixelFormat(texture.format) ? 0 : GPUTextureUsage.RENDER_ATTACHMENT) | (texture.storage ? GPUTextureUsage.STORAGE_BINDING : 0)\n\t\t\t\t};\n\t\t\t\tthis.gpuTexture = wgpu.createTexture(this.desc);\n\t\t\t\tlet viewDescr;\n\t\t\t\tif (this.texture.format === PIXELFORMAT_DEPTHSTENCIL) {\n\t\t\t\t\t\tviewDescr = {\n\t\t\t\t\t\t\t\tformat: 'depth24plus',\n\t\t\t\t\t\t\t\taspect: 'depth-only'\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tthis.view = this.createView(viewDescr);\n\t\t}\n\t\tdestroy(device) {}\n\t\tpropertyChanged(flag) {\n\t\t\t\tthis.samplers.length = 0;\n\t\t}\n\t\tgetView(device) {\n\t\t\t\tthis.uploadImmediate(device, this.texture);\n\t\t\t\treturn this.view;\n\t\t}\n\t\tcreateView(viewDescr) {\n\t\t\t\tconst options = viewDescr ?? {};\n\t\t\t\tconst textureDescr = this.desc;\n\t\t\t\tconst texture = this.texture;\n\t\t\t\tconst defaultViewDimension = ()=>{\n\t\t\t\t\t\tif (texture.cubemap) return 'cube';\n\t\t\t\t\t\tif (texture.volume) return '3d';\n\t\t\t\t\t\tif (texture.array) return '2d-array';\n\t\t\t\t\t\treturn '2d';\n\t\t\t\t};\n\t\t\t\tconst desc = {\n\t\t\t\t\t\tformat: options.format ?? textureDescr.format,\n\t\t\t\t\t\tdimension: options.dimension ?? defaultViewDimension(),\n\t\t\t\t\t\taspect: options.aspect ?? 'all',\n\t\t\t\t\t\tbaseMipLevel: options.baseMipLevel ?? 0,\n\t\t\t\t\t\tmipLevelCount: options.mipLevelCount ?? textureDescr.mipLevelCount,\n\t\t\t\t\t\tbaseArrayLayer: options.baseArrayLayer ?? 0,\n\t\t\t\t\t\tarrayLayerCount: options.arrayLayerCount ?? textureDescr.depthOrArrayLayers\n\t\t\t\t};\n\t\t\t\tconst view = this.gpuTexture.createView(desc);\n\t\t\t\treturn view;\n\t\t}\n\t\tgetSampler(device, sampleType) {\n\t\t\t\tlet sampler = this.samplers[sampleType];\n\t\t\t\tif (!sampler) {\n\t\t\t\t\t\tconst texture = this.texture;\n\t\t\t\t\t\tconst desc = {\n\t\t\t\t\t\t\t\taddressModeU: gpuAddressModes[texture.addressU],\n\t\t\t\t\t\t\t\taddressModeV: gpuAddressModes[texture.addressV],\n\t\t\t\t\t\t\t\taddressModeW: gpuAddressModes[texture.addressW]\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (!sampleType && texture.compareOnRead) {\n\t\t\t\t\t\t\t\tsampleType = SAMPLETYPE_DEPTH;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (sampleType === SAMPLETYPE_DEPTH || sampleType === SAMPLETYPE_INT || sampleType === SAMPLETYPE_UINT) {\n\t\t\t\t\t\t\t\tdesc.compare = 'less';\n\t\t\t\t\t\t\t\tdesc.magFilter = 'linear';\n\t\t\t\t\t\t\t\tdesc.minFilter = 'linear';\n\t\t\t\t\t\t} else if (sampleType === SAMPLETYPE_UNFILTERABLE_FLOAT) {\n\t\t\t\t\t\t\t\tdesc.magFilter = 'nearest';\n\t\t\t\t\t\t\t\tdesc.minFilter = 'nearest';\n\t\t\t\t\t\t\t\tdesc.mipmapFilter = 'nearest';\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst forceNearest = !device.textureFloatFilterable && (texture.format === PIXELFORMAT_RGBA32F || texture.format === PIXELFORMAT_RGBA16F);\n\t\t\t\t\t\t\t\tif (forceNearest || this.texture.format === PIXELFORMAT_DEPTHSTENCIL || isIntegerPixelFormat(this.texture.format)) {\n\t\t\t\t\t\t\t\t\t\tdesc.magFilter = 'nearest';\n\t\t\t\t\t\t\t\t\t\tdesc.minFilter = 'nearest';\n\t\t\t\t\t\t\t\t\t\tdesc.mipmapFilter = 'nearest';\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tdesc.magFilter = gpuFilterModes[texture.magFilter].level;\n\t\t\t\t\t\t\t\t\t\tdesc.minFilter = gpuFilterModes[texture.minFilter].level;\n\t\t\t\t\t\t\t\t\t\tdesc.mipmapFilter = gpuFilterModes[texture.minFilter].mip;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst allLinear = desc.minFilter === 'linear' && desc.magFilter === 'linear' && desc.mipmapFilter === 'linear';\n\t\t\t\t\t\tdesc.maxAnisotropy = allLinear ? math.clamp(Math.round(texture._anisotropy), 1, device.maxTextureAnisotropy) : 1;\n\t\t\t\t\t\tsampler = device.wgpu.createSampler(desc);\n\t\t\t\t\t\tthis.samplers[sampleType] = sampler;\n\t\t\t\t}\n\t\t\t\treturn sampler;\n\t\t}\n\t\tloseContext() {}\n\t\tuploadImmediate(device, texture) {\n\t\t\t\tif (texture._needsUpload || texture._needsMipmapsUpload) {\n\t\t\t\t\t\tthis.uploadData(device);\n\t\t\t\t\t\ttexture._needsUpload = false;\n\t\t\t\t\t\ttexture._needsMipmapsUpload = false;\n\t\t\t\t}\n\t\t}\n\t\tuploadData(device) {\n\t\t\t\tconst texture = this.texture;\n\t\t\t\tif (this.desc && (this.desc.size.width !== texture.width || this.desc.size.height !== texture.height)) {\n\t\t\t\t\t\tthis.gpuTexture.destroy();\n\t\t\t\t\t\tthis.create(device);\n\t\t\t\t\t\ttexture.renderVersionDirty = device.renderVersion;\n\t\t\t\t}\n\t\t\t\tif (texture._levels) {\n\t\t\t\t\t\tlet anyUploads = false;\n\t\t\t\t\t\tlet anyLevelMissing = false;\n\t\t\t\t\t\tconst requiredMipLevels = texture.numLevels;\n\t\t\t\t\t\tfor(let mipLevel = 0; mipLevel < requiredMipLevels; mipLevel++){\n\t\t\t\t\t\t\t\tconst mipObject = texture._levels[mipLevel];\n\t\t\t\t\t\t\t\tif (mipObject) {\n\t\t\t\t\t\t\t\t\t\tif (texture.cubemap) {\n\t\t\t\t\t\t\t\t\t\t\t\tfor(let face = 0; face < 6; face++){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst faceSource = mipObject[face];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (faceSource) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (this.isExternalImage(faceSource)) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.uploadExternalImage(device, faceSource, mipLevel, face);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tanyUploads = true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else if (ArrayBuffer.isView(faceSource)) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.uploadTypedArrayData(device, faceSource, mipLevel, face);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tanyUploads = true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else ;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tanyLevelMissing = true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t} else if (texture._volume) ; else if (texture.array) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (texture.arrayLength === mipObject.length) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor(let index = 0; index < texture._arrayLength; index++){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst arraySource = mipObject[index];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (this.isExternalImage(arraySource)) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.uploadExternalImage(device, arraySource, mipLevel, index);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tanyUploads = true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else if (ArrayBuffer.isView(arraySource)) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.uploadTypedArrayData(device, arraySource, mipLevel, index);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tanyUploads = true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else ;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tanyLevelMissing = true;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tif (this.isExternalImage(mipObject)) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.uploadExternalImage(device, mipObject, mipLevel, 0);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tanyUploads = true;\n\t\t\t\t\t\t\t\t\t\t\t\t} else if (ArrayBuffer.isView(mipObject)) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.uploadTypedArrayData(device, mipObject, mipLevel, 0);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tanyUploads = true;\n\t\t\t\t\t\t\t\t\t\t\t\t} else ;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tanyLevelMissing = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (anyUploads && anyLevelMissing && texture.mipmaps && !isCompressedPixelFormat(texture.format) && !isIntegerPixelFormat(texture.format)) {\n\t\t\t\t\t\t\t\tdevice.mipmapRenderer.generate(this);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (texture._gpuSize) {\n\t\t\t\t\t\t\t\ttexture.adjustVramSizeTracking(device._vram, -texture._gpuSize);\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttexture._gpuSize = texture.gpuSize;\n\t\t\t\t\t\ttexture.adjustVramSizeTracking(device._vram, texture._gpuSize);\n\t\t\t\t}\n\t\t}\n\t\tisExternalImage(image) {\n\t\t\t\treturn typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap || typeof HTMLVideoElement !== 'undefined' && image instanceof HTMLVideoElement || typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement || typeof OffscreenCanvas !== 'undefined' && image instanceof OffscreenCanvas;\n\t\t}\n\t\tuploadExternalImage(device, image, mipLevel, index) {\n\t\t\t\tconst src = {\n\t\t\t\t\t\tsource: image,\n\t\t\t\t\t\torigin: [\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t],\n\t\t\t\t\t\tflipY: false\n\t\t\t\t};\n\t\t\t\tconst dst = {\n\t\t\t\t\t\ttexture: this.gpuTexture,\n\t\t\t\t\t\tmipLevel: mipLevel,\n\t\t\t\t\t\torigin: [\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tindex\n\t\t\t\t\t\t],\n\t\t\t\t\t\taspect: 'all',\n\t\t\t\t\t\tpremultipliedAlpha: this.texture._premultiplyAlpha\n\t\t\t\t};\n\t\t\t\tconst copySize = {\n\t\t\t\t\t\twidth: this.desc.size.width,\n\t\t\t\t\t\theight: this.desc.size.height,\n\t\t\t\t\t\tdepthOrArrayLayers: 1\n\t\t\t\t};\n\t\t\t\tdevice.submit();\n\t\t\t\tdummyUse(image instanceof HTMLCanvasElement && image.getContext('2d'));\n\t\t\t\tdevice.wgpu.queue.copyExternalImageToTexture(src, dst, copySize);\n\t\t}\n\t\tuploadTypedArrayData(device, data, mipLevel, index) {\n\t\t\t\tconst texture = this.texture;\n\t\t\t\tconst wgpu = device.wgpu;\n\t\t\t\tconst dest = {\n\t\t\t\t\t\ttexture: this.gpuTexture,\n\t\t\t\t\t\torigin: [\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tindex\n\t\t\t\t\t\t],\n\t\t\t\t\t\tmipLevel: mipLevel\n\t\t\t\t};\n\t\t\t\tconst width = TextureUtils.calcLevelDimension(texture.width, mipLevel);\n\t\t\t\tconst height = TextureUtils.calcLevelDimension(texture.height, mipLevel);\n\t\t\t\tTextureUtils.calcLevelGpuSize(width, height, 1, texture.format);\n\t\t\t\tconst formatInfo = pixelFormatInfo.get(texture.format);\n\t\t\t\tlet dataLayout;\n\t\t\t\tlet size;\n\t\t\t\tif (formatInfo.size) {\n\t\t\t\t\t\tdataLayout = {\n\t\t\t\t\t\t\t\toffset: 0,\n\t\t\t\t\t\t\t\tbytesPerRow: formatInfo.size * width,\n\t\t\t\t\t\t\t\trowsPerImage: height\n\t\t\t\t\t\t};\n\t\t\t\t\t\tsize = {\n\t\t\t\t\t\t\t\twidth: width,\n\t\t\t\t\t\t\t\theight: height\n\t\t\t\t\t\t};\n\t\t\t\t} else if (formatInfo.blockSize) {\n\t\t\t\t\t\tconst blockDim = (size)=>{\n\t\t\t\t\t\t\t\treturn Math.floor((size + 3) / 4);\n\t\t\t\t\t\t};\n\t\t\t\t\t\tdataLayout = {\n\t\t\t\t\t\t\t\toffset: 0,\n\t\t\t\t\t\t\t\tbytesPerRow: formatInfo.blockSize * blockDim(width),\n\t\t\t\t\t\t\t\trowsPerImage: blockDim(height)\n\t\t\t\t\t\t};\n\t\t\t\t\t\tsize = {\n\t\t\t\t\t\t\t\twidth: Math.max(4, width),\n\t\t\t\t\t\t\t\theight: Math.max(4, height)\n\t\t\t\t\t\t};\n\t\t\t\t} else ;\n\t\t\t\tdevice.submit();\n\t\t\t\twgpu.queue.writeTexture(dest, data, dataLayout, size);\n\t\t}\n\t\tread(x, y, width, height, options) {\n\t\t\t\tconst mipLevel = options.mipLevel ?? 0;\n\t\t\t\tconst face = options.face ?? 0;\n\t\t\t\tconst data = options.data ?? null;\n\t\t\t\tconst immediate = options.immediate ?? false;\n\t\t\t\tconst texture = this.texture;\n\t\t\t\tconst formatInfo = pixelFormatInfo.get(texture.format);\n\t\t\t\tconst bytesPerRow = width * formatInfo.size;\n\t\t\t\tconst paddedBytesPerRow = math.roundUp(bytesPerRow, 256);\n\t\t\t\tconst size = paddedBytesPerRow * height;\n\t\t\t\tconst device = texture.device;\n\t\t\t\tconst stagingBuffer = device.createBufferImpl(BUFFERUSAGE_READ | BUFFERUSAGE_COPY_DST);\n\t\t\t\tstagingBuffer.allocate(device, size);\n\t\t\t\tconst src = {\n\t\t\t\t\t\ttexture: this.gpuTexture,\n\t\t\t\t\t\tmipLevel: mipLevel,\n\t\t\t\t\t\torigin: [\n\t\t\t\t\t\t\t\tx,\n\t\t\t\t\t\t\t\ty,\n\t\t\t\t\t\t\t\tface\n\t\t\t\t\t\t]\n\t\t\t\t};\n\t\t\t\tconst dst = {\n\t\t\t\t\t\tbuffer: stagingBuffer.buffer,\n\t\t\t\t\t\toffset: 0,\n\t\t\t\t\t\tbytesPerRow: paddedBytesPerRow\n\t\t\t\t};\n\t\t\t\tconst copySize = {\n\t\t\t\t\t\twidth,\n\t\t\t\t\t\theight,\n\t\t\t\t\t\tdepthOrArrayLayers: 1\n\t\t\t\t};\n\t\t\t\tconst commandEncoder = device.getCommandEncoder();\n\t\t\t\tcommandEncoder.copyTextureToBuffer(src, dst, copySize);\n\t\t\t\treturn device.readBuffer(stagingBuffer, size, null, immediate).then((temp)=>{\n\t\t\t\t\t\tconst target = data?.constructor === Uint8Array ? data : new Uint8Array(data?.buffer ?? height * bytesPerRow);\n\t\t\t\t\t\tfor(let i = 0; i < height; i++){\n\t\t\t\t\t\t\t\tconst srcOffset = i * paddedBytesPerRow;\n\t\t\t\t\t\t\t\tconst dstOffset = i * bytesPerRow;\n\t\t\t\t\t\t\t\tconst sub = temp.subarray(srcOffset, srcOffset + bytesPerRow);\n\t\t\t\t\t\t\t\ttarget.set(sub, dstOffset);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn data ?? target;\n\t\t\t\t});\n\t\t}\n}\n\nclass WebgpuUniformBuffer extends WebgpuBuffer {\n\t\tconstructor(uniformBuffer){\n\t\t\t\tsuper(BUFFERUSAGE_UNIFORM);\n\t\t}\n\t\tunlock(uniformBuffer) {\n\t\t\t\tconst device = uniformBuffer.device;\n\t\t\t\tsuper.unlock(device, uniformBuffer.storageInt32.buffer);\n\t\t}\n}\n\nclass WebgpuVertexBuffer extends WebgpuBuffer {\n\t\tconstructor(vertexBuffer, format, options){\n\t\t\t\tsuper(BUFFERUSAGE_VERTEX | (options?.storage ? BUFFERUSAGE_STORAGE : 0));\n\t\t}\n\t\tunlock(vertexBuffer) {\n\t\t\t\tconst device = vertexBuffer.device;\n\t\t\t\tsuper.unlock(device, vertexBuffer.storage);\n\t\t}\n}\n\nconst KEYWORD = /[ \\t]*#(ifn?def|if|endif|else|elif|define|undef|extension|include)/g;\nconst DEFINE = /define[ \\t]+([^\\n]+)\\r?(?:\\n|$)/g;\nconst EXTENSION = /extension[ \\t]+([\\w-]+)[ \\t]*:[ \\t]*(enable|require)/g;\nconst UNDEF = /undef[ \\t]+([^\\n]+)\\r?(?:\\n|$)/g;\nconst IF = /(ifdef|ifndef|if)[ \\t]*([^\\r\\n]+)\\r?\\n/g;\nconst ENDIF = /(endif|else|elif)(?:[ \\t]+([^\\r\\n]*))?\\r?\\n?/g;\nconst IDENTIFIER$1 = /\\{?[\\w-]+\\}?/;\nconst DEFINED = /(!|\\s)?defined\\(([\\w-]+)\\)/;\nconst DEFINED_PARENS = /!?defined\\s*\\([^)]*\\)/g;\nconst DEFINED_BEFORE_PAREN = /!?defined\\s*$/;\nconst COMPARISON = /([a-z_]\\w*)\\s*(==|!=|<|<=|>|>=)\\s*([\\w\"']+)/i;\nconst INVALID = /[+\\-]/g;\nconst INCLUDE = /include[ \\t]+\"([\\w-]+)(?:\\s*,\\s*([\\w-]+))?\"/g;\nconst LOOP_INDEX = /\\{i\\}/g;\nconst FRAGCOLOR = /(pcFragColor[1-8])\\b/g;\nclass Preprocessor {\n\t\tstatic run(source, includes = new Map(), options = {}) {\n\t\t\t\tPreprocessor.sourceName = options.sourceName;\n\t\t\t\tsource = this.stripComments(source);\n\t\t\t\tsource = source.split(/\\r?\\n/).map((line)=>line.trimEnd()).join('\\n');\n\t\t\t\tconst defines = new Map();\n\t\t\t\tconst injectDefines = new Map();\n\t\t\t\tsource = this._preprocess(source, defines, injectDefines, includes, options.stripDefines);\n\t\t\t\tif (source === null) return null;\n\t\t\t\tconst intDefines = new Map();\n\t\t\t\tdefines.forEach((value, key)=>{\n\t\t\t\t\t\tif (Number.isInteger(parseFloat(value)) && !value.includes('.')) {\n\t\t\t\t\t\t\t\tintDefines.set(key, value);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tsource = this.stripComments(source);\n\t\t\t\tsource = this.stripUnusedColorAttachments(source, options);\n\t\t\t\tsource = this.RemoveEmptyLines(source);\n\t\t\t\tsource = this.processArraySize(source, intDefines);\n\t\t\t\tsource = this.injectDefines(source, injectDefines);\n\t\t\t\treturn source;\n\t\t}\n\t\tstatic stripUnusedColorAttachments(source, options) {\n\t\t\t\tif (options.stripUnusedColorAttachments) {\n\t\t\t\t\t\tconst counts = new Map();\n\t\t\t\t\t\tconst matches = source.match(FRAGCOLOR);\n\t\t\t\t\t\tmatches?.forEach((match)=>{\n\t\t\t\t\t\t\t\tconst index = parseInt(match.charAt(match.length - 1), 10);\n\t\t\t\t\t\t\t\tcounts.set(index, (counts.get(index) ?? 0) + 1);\n\t\t\t\t\t\t});\n\t\t\t\t\t\tconst anySingleUse = Array.from(counts.values()).some((count)=>count === 1);\n\t\t\t\t\t\tif (anySingleUse) {\n\t\t\t\t\t\t\t\tconst lines = source.split('\\n');\n\t\t\t\t\t\t\t\tconst keepLines = [];\n\t\t\t\t\t\t\t\tfor(let i = 0; i < lines.length; i++){\n\t\t\t\t\t\t\t\t\t\tconst match = lines[i].match(FRAGCOLOR);\n\t\t\t\t\t\t\t\t\t\tif (match) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst index = parseInt(match[0].charAt(match[0].length - 1), 10);\n\t\t\t\t\t\t\t\t\t\t\t\tif (index > 0 && counts.get(index) === 1) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tkeepLines.push(lines[i]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tsource = keepLines.join('\\n');\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn source;\n\t\t}\n\t\tstatic stripComments(source) {\n\t\t\t\treturn source.replace(/\\/\\*[\\s\\S]*?\\*\\/|([^\\\\:]|^)\\/\\/.*$/gm, '$1');\n\t\t}\n\t\tstatic processArraySize(source, intDefines) {\n\t\t\t\tif (source !== null) {\n\t\t\t\t\t\tintDefines.forEach((value, key)=>{\n\t\t\t\t\t\t\t\tsource = source.replace(new RegExp(`\\\\[${key}\\\\]`, 'g'), `[${value}]`);\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn source;\n\t\t}\n\t\tstatic injectDefines(source, injectDefines) {\n\t\t\t\tif (source !== null && injectDefines.size > 0) {\n\t\t\t\t\t\tconst lines = source.split('\\n');\n\t\t\t\t\t\tinjectDefines.forEach((value, key)=>{\n\t\t\t\t\t\t\t\tconst regex = new RegExp(key, 'g');\n\t\t\t\t\t\t\t\tfor(let i = 0; i < lines.length; i++){\n\t\t\t\t\t\t\t\t\t\tif (!lines[i].includes('#')) {\n\t\t\t\t\t\t\t\t\t\t\t\tlines[i] = lines[i].replace(regex, value);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t\tsource = lines.join('\\n');\n\t\t\t\t}\n\t\t\t\treturn source;\n\t\t}\n\t\tstatic RemoveEmptyLines(source) {\n\t\t\t\tif (source !== null) {\n\t\t\t\t\t\tsource = source.split(/\\r?\\n/).map((line)=>line.trim() === '' ? '' : line).join('\\n');\n\t\t\t\t\t\tsource = source.replace(/(\\n\\n){3,}/g, '\\n\\n');\n\t\t\t\t}\n\t\t\t\treturn source;\n\t\t}\n\t\tstatic _preprocess(source, defines = new Map(), injectDefines, includes, stripDefines) {\n\t\t\t\tconst originalSource = source;\n\t\t\t\tconst stack = [];\n\t\t\t\tlet error = false;\n\t\t\t\tlet match;\n\t\t\t\twhile((match = KEYWORD.exec(source)) !== null && !error){\n\t\t\t\t\t\tconst keyword = match[1];\n\t\t\t\t\t\tswitch(keyword){\n\t\t\t\t\t\t\t\tcase 'define':\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tDEFINE.lastIndex = match.index;\n\t\t\t\t\t\t\t\t\t\t\t\tconst define = DEFINE.exec(source);\n\t\t\t\t\t\t\t\t\t\t\t\terror ||= define === null;\n\t\t\t\t\t\t\t\t\t\t\t\tconst expression = define[1];\n\t\t\t\t\t\t\t\t\t\t\t\tIDENTIFIER$1.lastIndex = define.index;\n\t\t\t\t\t\t\t\t\t\t\t\tconst identifierValue = IDENTIFIER$1.exec(expression);\n\t\t\t\t\t\t\t\t\t\t\t\tconst identifier = identifierValue[0];\n\t\t\t\t\t\t\t\t\t\t\t\tlet value = expression.substring(identifier.length).trim();\n\t\t\t\t\t\t\t\t\t\t\t\tif (value === '') value = 'true';\n\t\t\t\t\t\t\t\t\t\t\t\tconst keep = Preprocessor._keep(stack);\n\t\t\t\t\t\t\t\t\t\t\t\tlet stripThisDefine = stripDefines;\n\t\t\t\t\t\t\t\t\t\t\t\tif (keep) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst replacementDefine = identifier.startsWith('{') && identifier.endsWith('}');\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (replacementDefine) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstripThisDefine = true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (replacementDefine) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tinjectDefines.set(identifier, value);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdefines.set(identifier, value);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (stripThisDefine) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsource = source.substring(0, define.index - 1) + source.substring(DEFINE.lastIndex);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tKEYWORD.lastIndex = define.index - 1;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tif (!stripThisDefine) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tKEYWORD.lastIndex = define.index + define[0].length;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcase 'undef':\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tUNDEF.lastIndex = match.index;\n\t\t\t\t\t\t\t\t\t\t\t\tconst undef = UNDEF.exec(source);\n\t\t\t\t\t\t\t\t\t\t\t\tconst identifier = undef[1].trim();\n\t\t\t\t\t\t\t\t\t\t\t\tconst keep = Preprocessor._keep(stack);\n\t\t\t\t\t\t\t\t\t\t\t\tif (keep) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdefines.delete(identifier);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (stripDefines) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsource = source.substring(0, undef.index - 1) + source.substring(UNDEF.lastIndex);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tKEYWORD.lastIndex = undef.index - 1;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tif (!stripDefines) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tKEYWORD.lastIndex = undef.index + undef[0].length;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcase 'extension':\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tEXTENSION.lastIndex = match.index;\n\t\t\t\t\t\t\t\t\t\t\t\tconst extension = EXTENSION.exec(source);\n\t\t\t\t\t\t\t\t\t\t\t\terror ||= extension === null;\n\t\t\t\t\t\t\t\t\t\t\t\tif (extension) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst identifier = extension[1];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst keep = Preprocessor._keep(stack);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (keep) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdefines.set(identifier, 'true');\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tKEYWORD.lastIndex = extension.index + extension[0].length;\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcase 'ifdef':\n\t\t\t\t\t\t\t\tcase 'ifndef':\n\t\t\t\t\t\t\t\tcase 'if':\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tIF.lastIndex = match.index;\n\t\t\t\t\t\t\t\t\t\t\t\tconst iff = IF.exec(source);\n\t\t\t\t\t\t\t\t\t\t\t\tconst expression = iff[2];\n\t\t\t\t\t\t\t\t\t\t\t\tconst evaluated = Preprocessor.evaluate(expression, defines);\n\t\t\t\t\t\t\t\t\t\t\t\terror ||= evaluated.error;\n\t\t\t\t\t\t\t\t\t\t\t\tlet result = evaluated.result;\n\t\t\t\t\t\t\t\t\t\t\t\tif (keyword === 'ifndef') {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tresult = !result;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tstack.push({\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tanyKeep: result,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tkeep: result,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tstart: match.index,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tend: IF.lastIndex\n\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t\tKEYWORD.lastIndex = iff.index + iff[0].length;\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcase 'endif':\n\t\t\t\t\t\t\t\tcase 'else':\n\t\t\t\t\t\t\t\tcase 'elif':\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tENDIF.lastIndex = match.index;\n\t\t\t\t\t\t\t\t\t\t\t\tconst endif = ENDIF.exec(source);\n\t\t\t\t\t\t\t\t\t\t\t\tconst blockInfo = stack.pop();\n\t\t\t\t\t\t\t\t\t\t\t\tif (!blockInfo) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconsole.error(`Shader preprocessing encountered \"#${endif[1]}\" without a preceding #if #ifdef #ifndef while preprocessing ${Preprocessor.sourceName} on line:\\n ${source.substring(match.index, match.index + 100)}...`, {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsource: originalSource\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t\t\t\terror = true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tconst blockCode = blockInfo.keep ? source.substring(blockInfo.end, match.index) : '';\n\t\t\t\t\t\t\t\t\t\t\t\tsource = source.substring(0, blockInfo.start) + blockCode + source.substring(ENDIF.lastIndex);\n\t\t\t\t\t\t\t\t\t\t\t\tKEYWORD.lastIndex = blockInfo.start + blockCode.length;\n\t\t\t\t\t\t\t\t\t\t\t\tconst endifCommand = endif[1];\n\t\t\t\t\t\t\t\t\t\t\t\tif (endifCommand === 'else' || endifCommand === 'elif') {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlet result = false;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (!blockInfo.anyKeep) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (endifCommand === 'else') {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tresult = !blockInfo.keep;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst evaluated = Preprocessor.evaluate(endif[2], defines);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tresult = evaluated.result;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\terror ||= evaluated.error;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tstack.push({\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tanyKeep: blockInfo.anyKeep || result,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tkeep: result,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstart: KEYWORD.lastIndex,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tend: KEYWORD.lastIndex\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcase 'include':\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tINCLUDE.lastIndex = match.index;\n\t\t\t\t\t\t\t\t\t\t\t\tconst include = INCLUDE.exec(source);\n\t\t\t\t\t\t\t\t\t\t\t\terror ||= include === null;\n\t\t\t\t\t\t\t\t\t\t\t\tif (!include) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\terror = true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tconst identifier = include[1].trim();\n\t\t\t\t\t\t\t\t\t\t\t\tconst countIdentifier = include[2]?.trim();\n\t\t\t\t\t\t\t\t\t\t\t\tconst keep = Preprocessor._keep(stack);\n\t\t\t\t\t\t\t\t\t\t\t\tif (keep) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlet includeSource = includes?.get(identifier);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (includeSource !== undefined) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tincludeSource = this.stripComments(includeSource);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (countIdentifier) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst countString = defines.get(countIdentifier);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst count = parseFloat(countString);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (Number.isInteger(count)) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tlet result = '';\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor(let i = 0; i < count; i++){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tresult += includeSource.replace(LOOP_INDEX, String(i));\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tincludeSource = result;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconsole.error(`Include Count identifier \"${countIdentifier}\" not resolved while preprocessing ${Preprocessor.sourceName} on line:\\n ${source.substring(match.index, match.index + 100)}...`, {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\toriginalSource: originalSource,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsource: source\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\terror = true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsource = source.substring(0, include.index - 1) + includeSource + source.substring(INCLUDE.lastIndex);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tKEYWORD.lastIndex = include.index - 1;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconsole.error(`Include \"${identifier}\" not resolved while preprocessing ${Preprocessor.sourceName}`, {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\toriginalSource: originalSource,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsource: source\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\terror = true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (stack.length > 0) {\n\t\t\t\t\t\tconsole.error(`Shader preprocessing reached the end of the file without encountering the necessary #endif to close a preceding #if, #ifdef, or #ifndef block. ${Preprocessor.sourceName}`);\n\t\t\t\t\t\terror = true;\n\t\t\t\t}\n\t\t\t\tif (error) {\n\t\t\t\t\t\tconsole.error('Failed to preprocess shader: ', {\n\t\t\t\t\t\t\t\tsource: originalSource\n\t\t\t\t\t\t});\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\treturn source;\n\t\t}\n\t\tstatic _keep(stack) {\n\t\t\t\tfor(let i = 0; i < stack.length; i++){\n\t\t\t\t\t\tif (!stack[i].keep) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t}\n\t\tstatic evaluateAtomicExpression(expr, defines) {\n\t\t\t\tlet error = false;\n\t\t\t\texpr = expr.trim();\n\t\t\t\tlet invert = false;\n\t\t\t\tif (expr === 'true') {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tresult: true,\n\t\t\t\t\t\t\t\terror\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tif (expr === 'false') {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tresult: false,\n\t\t\t\t\t\t\t\terror\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst definedMatch = DEFINED.exec(expr);\n\t\t\t\tif (definedMatch) {\n\t\t\t\t\t\tinvert = definedMatch[1] === '!';\n\t\t\t\t\t\texpr = definedMatch[2].trim();\n\t\t\t\t\t\tconst exists = defines.has(expr);\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tresult: invert ? !exists : exists,\n\t\t\t\t\t\t\t\terror\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst comparisonMatch = COMPARISON.exec(expr);\n\t\t\t\tif (comparisonMatch) {\n\t\t\t\t\t\tconst left = defines.get(comparisonMatch[1].trim()) ?? comparisonMatch[1].trim();\n\t\t\t\t\t\tconst right = defines.get(comparisonMatch[3].trim()) ?? comparisonMatch[3].trim();\n\t\t\t\t\t\tconst operator = comparisonMatch[2].trim();\n\t\t\t\t\t\tlet result = false;\n\t\t\t\t\t\tswitch(operator){\n\t\t\t\t\t\t\t\tcase '==':\n\t\t\t\t\t\t\t\t\t\tresult = left === right;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase '!=':\n\t\t\t\t\t\t\t\t\t\tresult = left !== right;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase '<':\n\t\t\t\t\t\t\t\t\t\tresult = left < right;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase '<=':\n\t\t\t\t\t\t\t\t\t\tresult = left <= right;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase '>':\n\t\t\t\t\t\t\t\t\t\tresult = left > right;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase '>=':\n\t\t\t\t\t\t\t\t\t\tresult = left >= right;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\terror = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tresult,\n\t\t\t\t\t\t\t\terror\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst result = defines.has(expr);\n\t\t\t\treturn {\n\t\t\t\t\t\tresult,\n\t\t\t\t\t\terror\n\t\t\t\t};\n\t\t}\n\t\tstatic processParentheses(expression, defines) {\n\t\t\t\tlet error = false;\n\t\t\t\tlet processed = expression.trim();\n\t\t\t\twhile(processed.startsWith('(') && processed.endsWith(')')){\n\t\t\t\t\t\tlet depth = 0;\n\t\t\t\t\t\tlet wrapsEntire = true;\n\t\t\t\t\t\tfor(let i = 0; i < processed.length - 1; i++){\n\t\t\t\t\t\t\t\tif (processed[i] === '(') depth++;\n\t\t\t\t\t\t\t\telse if (processed[i] === ')') {\n\t\t\t\t\t\t\t\t\t\tdepth--;\n\t\t\t\t\t\t\t\t\t\tif (depth === 0) {\n\t\t\t\t\t\t\t\t\t\t\t\twrapsEntire = false;\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (wrapsEntire) {\n\t\t\t\t\t\t\t\tprocessed = processed.slice(1, -1).trim();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\twhile(true){\n\t\t\t\t\t\tlet foundParen = false;\n\t\t\t\t\t\tlet depth = 0;\n\t\t\t\t\t\tlet maxDepth = 0;\n\t\t\t\t\t\tlet deepestStart = -1;\n\t\t\t\t\t\tlet deepestEnd = -1;\n\t\t\t\t\t\tlet inDefinedParen = 0;\n\t\t\t\t\t\tfor(let i = 0; i < processed.length; i++){\n\t\t\t\t\t\t\t\tif (processed[i] === '(') {\n\t\t\t\t\t\t\t\t\t\tconst beforeParen = processed.substring(0, i);\n\t\t\t\t\t\t\t\t\t\tif (DEFINED_BEFORE_PAREN.test(beforeParen)) {\n\t\t\t\t\t\t\t\t\t\t\t\tinDefinedParen++;\n\t\t\t\t\t\t\t\t\t\t} else if (inDefinedParen === 0) {\n\t\t\t\t\t\t\t\t\t\t\t\tdepth++;\n\t\t\t\t\t\t\t\t\t\t\t\tif (depth > maxDepth) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmaxDepth = depth;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdeepestStart = i;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tfoundParen = true;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else if (processed[i] === ')') {\n\t\t\t\t\t\t\t\t\t\tif (inDefinedParen > 0) {\n\t\t\t\t\t\t\t\t\t\t\t\tinDefinedParen--;\n\t\t\t\t\t\t\t\t\t\t} else if (depth > 0) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (depth === maxDepth && deepestStart !== -1) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdeepestEnd = i;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tdepth--;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!foundParen || deepestStart === -1 || deepestEnd === -1) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst subExpr = processed.substring(deepestStart + 1, deepestEnd);\n\t\t\t\t\t\tconst { result, error: subError } = Preprocessor.evaluate(subExpr, defines);\n\t\t\t\t\t\terror = error || subError;\n\t\t\t\t\t\tprocessed = processed.substring(0, deepestStart) + (result ? 'true' : 'false') + processed.substring(deepestEnd + 1);\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\t\texpression: processed,\n\t\t\t\t\t\terror\n\t\t\t\t};\n\t\t}\n\t\tstatic evaluate(expression, defines) {\n\t\t\t\tconst correct = INVALID.exec(expression) === null;\n\t\t\t\tlet processedExpr = expression;\n\t\t\t\tlet parenError = false;\n\t\t\t\tconst withoutDefined = expression.replace(DEFINED_PARENS, '');\n\t\t\t\tif (withoutDefined.indexOf('(') !== -1) {\n\t\t\t\t\t\tconst processed = Preprocessor.processParentheses(expression, defines);\n\t\t\t\t\t\tprocessedExpr = processed.expression;\n\t\t\t\t\t\tparenError = processed.error;\n\t\t\t\t}\n\t\t\t\tif (parenError) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tresult: false,\n\t\t\t\t\t\t\t\terror: true\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst orSegments = processedExpr.split('||');\n\t\t\t\tfor (const orSegment of orSegments){\n\t\t\t\t\t\tconst andSegments = orSegment.split('&&');\n\t\t\t\t\t\tlet andResult = true;\n\t\t\t\t\t\tfor (const andSegment of andSegments){\n\t\t\t\t\t\t\t\tconst { result, error } = Preprocessor.evaluateAtomicExpression(andSegment.trim(), defines);\n\t\t\t\t\t\t\t\tif (!result || error) {\n\t\t\t\t\t\t\t\t\t\tandResult = false;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (andResult) {\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\tresult: true,\n\t\t\t\t\t\t\t\t\t\terror: !correct\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\t\tresult: false,\n\t\t\t\t\t\terror: !correct\n\t\t\t\t};\n\t\t}\n}\n\nvar gles3PS = `\n#ifndef outType_0\n#define outType_0 vec4\n#endif\nlayout(location = 0) out highp outType_0 pcFragColor0;\n#if COLOR_ATTACHMENT_1\nlayout(location = 1) out highp outType_1 pcFragColor1;\n#endif\n#if COLOR_ATTACHMENT_2\nlayout(location = 2) out highp outType_2 pcFragColor2;\n#endif\n#if COLOR_ATTACHMENT_3\nlayout(location = 3) out highp outType_3 pcFragColor3;\n#endif\n#if COLOR_ATTACHMENT_4\nlayout(location = 4) out highp outType_4 pcFragColor4;\n#endif\n#if COLOR_ATTACHMENT_5\nlayout(location = 5) out highp outType_5 pcFragColor5;\n#endif\n#if COLOR_ATTACHMENT_6\nlayout(location = 6) out highp outType_6 pcFragColor6;\n#endif\n#if COLOR_ATTACHMENT_7\nlayout(location = 7) out highp outType_7 pcFragColor7;\n#endif\n#define gl_FragColor pcFragColor0\n#define varying in\n#define texture2D texture\n#define texture2DBias texture\n#define textureCube texture\n#define texture2DProj textureProj\n#define texture2DLod textureLod\n#define texture2DProjLod textureProjLod\n#define textureCubeLod textureLod\n#define texture2DGrad textureGrad\n#define texture2DProjGrad textureProjGrad\n#define textureCubeGrad textureGrad\n#define utexture2D texture\n#define itexture2D texture\n#define texture2DLodEXT texture2DLodEXT_is_no_longer_supported_use_texture2DLod_instead\n#define texture2DProjLodEXT texture2DProjLodEXT_is_no_longer_supported_use_texture2DProjLod\n#define textureCubeLodEXT textureCubeLodEXT_is_no_longer_supported_use_textureCubeLod_instead\n#define texture2DGradEXT texture2DGradEXT_is_no_longer_supported_use_texture2DGrad_instead\n#define texture2DProjGradEXT texture2DProjGradEXT_is_no_longer_supported_use_texture2DProjGrad_instead\n#define textureCubeGradEXT textureCubeGradEXT_is_no_longer_supported_use_textureCubeGrad_instead\n#define textureShadow(res, uv) textureGrad(res, uv, vec2(1, 1), vec2(1, 1))\n#define SHADOWMAP_PASS(name) name\n#define SHADOWMAP_ACCEPT(name) sampler2DShadow name\n#define TEXTURE_PASS(name) name\n#define TEXTURE_ACCEPT(name) sampler2D name\n#define TEXTURE_ACCEPT_HIGHP(name) highp sampler2D name\n#define GL2\n`;\n\nvar gles3VS = `\n#extension GL_ANGLE_multi_draw : enable\n#define attribute in\n#define varying out\n#define texture2D texture\n#define utexture2D texture\n#define itexture2D texture\n#define GL2\n#define VERTEXSHADER\n#define TEXTURE_PASS(name) name\n#define TEXTURE_ACCEPT(name) sampler2D name\n#define TEXTURE_ACCEPT_HIGHP(name) highp sampler2D name\n`;\n\nvar webgpuPS$1 = `\n#extension GL_EXT_samplerless_texture_functions : require\n#ifndef outType_0\n#define outType_0 vec4\n#endif\n#ifndef outType_1\n#define outType_1 vec4\n#endif\n#ifndef outType_2\n#define outType_2 vec4\n#endif\n#ifndef outType_3\n#define outType_3 vec4\n#endif\n#ifndef outType_4\n#define outType_4 vec4\n#endif\n#ifndef outType_5\n#define outType_5 vec4\n#endif\n#ifndef outType_6\n#define outType_6 vec4\n#endif\n#ifndef outType_7\n#define outType_7 vec4\n#endif\nlayout(location = 0) out highp outType_0 pcFragColor0;\nlayout(location = 1) out highp outType_1 pcFragColor1;\nlayout(location = 2) out highp outType_2 pcFragColor2;\nlayout(location = 3) out highp outType_3 pcFragColor3;\nlayout(location = 4) out highp outType_4 pcFragColor4;\nlayout(location = 5) out highp outType_5 pcFragColor5;\nlayout(location = 6) out highp outType_6 pcFragColor6;\nlayout(location = 7) out highp outType_7 pcFragColor7;\n#define gl_FragColor pcFragColor0\n#define texture2D(res, uv) texture(sampler2D(res, res ## _sampler), uv)\n#define texture2DBias(res, uv, bias) texture(sampler2D(res, res ## _sampler), uv, bias)\n#define texture2DLod(res, uv, lod) textureLod(sampler2D(res, res ## _sampler), uv, lod)\n#define textureCube(res, uv) texture(samplerCube(res, res ## _sampler), uv)\n#define textureCubeLod(res, uv, lod) textureLod(samplerCube(res, res ## _sampler), uv, lod)\n#define textureShadow(res, uv) textureLod(sampler2DShadow(res, res ## _sampler), uv, 0.0)\n#define itexture2D(res, uv) texture(isampler2D(res, res ## _sampler), uv)\n#define utexture2D(res, uv) texture(usampler2D(res, res ## _sampler), uv)\n#define texture2DLodEXT texture2DLodEXT_is_no_longer_supported_use_texture2DLod_instead\n#define texture2DProjLodEXT texture2DProjLodEXT_is_no_longer_supported_use_texture2DProjLod\n#define textureCubeLodEXT textureCubeLodEXT_is_no_longer_supported_use_textureCubeLod_instead\n#define texture2DGradEXT texture2DGradEXT_is_no_longer_supported_use_texture2DGrad_instead\n#define texture2DProjGradEXT texture2DProjGradEXT_is_no_longer_supported_use_texture2DProjGrad_instead\n#define textureCubeGradEXT textureCubeGradEXT_is_no_longer_supported_use_textureCubeGrad_instead\n#define SHADOWMAP_PASS(name) name, name ## _sampler\n#define SHADOWMAP_ACCEPT(name) texture2D name, sampler name ## _sampler\n#define TEXTURE_PASS(name) name, name ## _sampler\n#define TEXTURE_ACCEPT(name) texture2D name, sampler name ## _sampler\n#define TEXTURE_ACCEPT_HIGHP TEXTURE_ACCEPT\n#define GL2\n#define WEBGPU\n`;\n\nvar webgpuVS$1 = `\n#extension GL_EXT_samplerless_texture_functions : require\n#define texture2D(res, uv) texture(sampler2D(res, res ## _sampler), uv)\n#define itexture2D(res, uv) texture(isampler2D(res, res ## _sampler), uv)\n#define utexture2D(res, uv) texture(usampler2D(res, res ## _sampler), uv)\n#define TEXTURE_PASS(name) name, name ## _sampler\n#define TEXTURE_ACCEPT(name) texture2D name, sampler name ## _sampler\n#define TEXTURE_ACCEPT_HIGHP TEXTURE_ACCEPT\n#define GL2\n#define WEBGPU\n#define VERTEXSHADER\n#define gl_VertexID gl_VertexIndex\n#define gl_InstanceID gl_InstanceIndex\n`;\n\nvar webgpuPS = `\n`;\n\nvar webgpuVS = `\n#define VERTEXSHADER\n`;\n\nvar sharedGLSL = `\nvec2 getGrabScreenPos(vec4 clipPos) {\n\tvec2 uv = (clipPos.xy / clipPos.w) * 0.5 + 0.5;\n\t#ifdef WEBGPU\n\t\tuv.y = 1.0 - uv.y;\n\t#endif\n\treturn uv;\n}\nvec2 getImageEffectUV(vec2 uv) {\n\t#ifdef WEBGPU\n\t\tuv.y = 1.0 - uv.y;\n\t#endif\n\treturn uv;\n}\n`;\n\nvar sharedWGSL = `\n#define WEBGPU\nfn getGrabScreenPos(clipPos: vec4<f32>) -> vec2<f32> {\n\tvar uv: vec2<f32> = (clipPos.xy / clipPos.w) * 0.5 + vec2<f32>(0.5);\n\tuv.y = 1.0 - uv.y;\n\treturn uv;\n}\nfn getImageEffectUV(uv: vec2<f32>) -> vec2<f32> {\n\tvar modifiedUV: vec2<f32> = uv;\n\tmodifiedUV.y = 1.0 - modifiedUV.y;\n\treturn modifiedUV;\n}\nstruct WrappedF32 { @size(16) element: f32 }\nstruct WrappedI32 { @size(16) element: i32 }\nstruct WrappedU32 { @size(16) element: u32 }\nstruct WrappedVec2F { @size(16) element: vec2f }\nstruct WrappedVec2I { @size(16) element: vec2i }\nstruct WrappedVec2U { @size(16) element: vec2u }\n`;\n\nconst _attrib2Semantic = {\n\t\tvertex_position: SEMANTIC_POSITION,\n\t\tvertex_normal: SEMANTIC_NORMAL,\n\t\tvertex_tangent: SEMANTIC_TANGENT,\n\t\tvertex_texCoord0: SEMANTIC_TEXCOORD0,\n\t\tvertex_texCoord1: SEMANTIC_TEXCOORD1,\n\t\tvertex_texCoord2: SEMANTIC_TEXCOORD2,\n\t\tvertex_texCoord3: SEMANTIC_TEXCOORD3,\n\t\tvertex_texCoord4: SEMANTIC_TEXCOORD4,\n\t\tvertex_texCoord5: SEMANTIC_TEXCOORD5,\n\t\tvertex_texCoord6: SEMANTIC_TEXCOORD6,\n\t\tvertex_texCoord7: SEMANTIC_TEXCOORD7,\n\t\tvertex_color: SEMANTIC_COLOR,\n\t\tvertex_boneIndices: SEMANTIC_BLENDINDICES,\n\t\tvertex_boneWeights: SEMANTIC_BLENDWEIGHT\n};\nclass ShaderDefinitionUtils {\n\t\tstatic createDefinition(device, options) {\n\t\t\t\tconst normalizedOutputTypes = (options)=>{\n\t\t\t\t\t\tlet fragmentOutputTypes = options.fragmentOutputTypes ?? 'vec4';\n\t\t\t\t\t\tif (!Array.isArray(fragmentOutputTypes)) {\n\t\t\t\t\t\t\t\tfragmentOutputTypes = [\n\t\t\t\t\t\t\t\t\t\tfragmentOutputTypes\n\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn fragmentOutputTypes;\n\t\t\t\t};\n\t\t\t\tconst getDefines = (gpu, gl2, isVertex, options)=>{\n\t\t\t\t\t\tconst deviceIntro = device.isWebGPU ? gpu : gl2;\n\t\t\t\t\t\tlet attachmentsDefine = '';\n\t\t\t\t\t\tif (!isVertex) {\n\t\t\t\t\t\t\t\tconst fragmentOutputTypes = normalizedOutputTypes(options);\n\t\t\t\t\t\t\t\tfor(let i = 0; i < device.maxColorAttachments; i++){\n\t\t\t\t\t\t\t\t\t\tattachmentsDefine += `#define COLOR_ATTACHMENT_${i}\\n`;\n\t\t\t\t\t\t\t\t\t\tconst outType = fragmentOutputTypes[i] ?? 'vec4';\n\t\t\t\t\t\t\t\t\t\tattachmentsDefine += `#define outType_${i} ${outType}\\n`;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn attachmentsDefine + deviceIntro;\n\t\t\t\t};\n\t\t\t\tconst getDefinesWgsl = (isVertex, options)=>{\n\t\t\t\t\t\tlet attachmentsDefine = '';\n\t\t\t\t\t\tif (!isVertex) {\n\t\t\t\t\t\t\t\tconst fragmentOutputTypes = normalizedOutputTypes(options);\n\t\t\t\t\t\t\t\tfor(let i = 0; i < device.maxColorAttachments; i++){\n\t\t\t\t\t\t\t\t\t\tconst glslOutType = fragmentOutputTypes[i] ?? 'vec4';\n\t\t\t\t\t\t\t\t\t\tconst wgslOutType = primitiveGlslToWgslTypeMap.get(glslOutType);\n\t\t\t\t\t\t\t\t\t\tattachmentsDefine += `alias pcOutType${i} = ${wgslOutType};\\n`;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn attachmentsDefine;\n\t\t\t\t};\n\t\t\t\tconst name = options.name ?? 'Untitled';\n\t\t\t\tlet vertCode;\n\t\t\t\tlet fragCode;\n\t\t\t\tconst vertexDefinesCode = ShaderDefinitionUtils.getDefinesCode(device, options.vertexDefines);\n\t\t\t\tconst fragmentDefinesCode = ShaderDefinitionUtils.getDefinesCode(device, options.fragmentDefines);\n\t\t\t\tconst wgsl = options.shaderLanguage === SHADERLANGUAGE_WGSL;\n\t\t\t\tif (wgsl) {\n\t\t\t\t\t\tvertCode = `\n\t\t\t\t\t\t\t\t${getDefinesWgsl(true, options)}\n\t\t\t\t\t\t\t\t${webgpuVS}\n\t\t\t\t\t\t\t\t${sharedWGSL}\n\t\t\t\t\t\t\t\t${vertexDefinesCode}\n\t\t\t\t\t\t\t\t${options.vertexCode}\n\t\t\t\t\t\t`;\n\t\t\t\t\t\tfragCode = `\n\t\t\t\t\t\t\t\t${getDefinesWgsl(false, options)}\n\t\t\t\t\t\t\t\t${webgpuPS}\n\t\t\t\t\t\t\t\t${sharedWGSL}\n\t\t\t\t\t\t\t\t${fragmentDefinesCode}\n\t\t\t\t\t\t\t\t${options.fragmentCode}\n\t\t\t\t\t\t`;\n\t\t\t\t} else {\n\t\t\t\t\t\tvertCode = `${ShaderDefinitionUtils.versionCode(device) + getDefines(webgpuVS$1, gles3VS, true, options) + vertexDefinesCode + ShaderDefinitionUtils.precisionCode(device)}\n\t\t\t\t\t\t\t\t${sharedGLSL}\n\t\t\t\t\t\t\t\t${ShaderDefinitionUtils.getShaderNameCode(name)}\n\t\t\t\t\t\t\t\t${options.vertexCode}`;\n\t\t\t\t\t\tfragCode = `${(options.fragmentPreamble || '') + ShaderDefinitionUtils.versionCode(device) + getDefines(webgpuPS$1, gles3PS, false, options) + fragmentDefinesCode + ShaderDefinitionUtils.precisionCode(device)}\n\t\t\t\t\t\t\t\t${sharedGLSL}\n\t\t\t\t\t\t\t\t${ShaderDefinitionUtils.getShaderNameCode(name)}\n\t\t\t\t\t\t\t\t${options.fragmentCode}`;\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\t\tname: name,\n\t\t\t\t\t\tshaderLanguage: options.shaderLanguage ?? SHADERLANGUAGE_GLSL,\n\t\t\t\t\t\tattributes: options.attributes,\n\t\t\t\t\t\tvshader: vertCode,\n\t\t\t\t\t\tvincludes: options.vertexIncludes,\n\t\t\t\t\t\tfincludes: options.fragmentIncludes,\n\t\t\t\t\t\tfshader: fragCode,\n\t\t\t\t\t\tfeedbackVaryings: options.feedbackVaryings,\n\t\t\t\t\t\tuseTransformFeedback: options.useTransformFeedback,\n\t\t\t\t\t\tmeshUniformBufferFormat: options.meshUniformBufferFormat,\n\t\t\t\t\t\tmeshBindGroupFormat: options.meshBindGroupFormat\n\t\t\t\t};\n\t\t}\n\t\tstatic getDefinesCode(device, defines) {\n\t\t\t\tlet code = '';\n\t\t\t\tdevice.capsDefines.forEach((value, key)=>{\n\t\t\t\t\t\tcode += `#define ${key} ${value}\\n`;\n\t\t\t\t});\n\t\t\t\tcode += '\\n';\n\t\t\t\tdefines?.forEach((value, key)=>{\n\t\t\t\t\t\tcode += `#define ${key} ${value}\\n`;\n\t\t\t\t});\n\t\t\t\tcode += '\\n';\n\t\t\t\treturn code;\n\t\t}\n\t\tstatic getShaderNameCode(name) {\n\t\t\t\treturn `#define SHADER_NAME ${name}\\n`;\n\t\t}\n\t\tstatic versionCode(device) {\n\t\t\t\treturn device.isWebGPU ? '#version 450\\n' : '#version 300 es\\n';\n\t\t}\n\t\tstatic precisionCode(device, forcePrecision) {\n\t\t\t\tif (forcePrecision && forcePrecision !== 'highp' && forcePrecision !== 'mediump' && forcePrecision !== 'lowp') {\n\t\t\t\t\t\tforcePrecision = null;\n\t\t\t\t}\n\t\t\t\tif (forcePrecision) {\n\t\t\t\t\t\tif (forcePrecision === 'highp' && device.maxPrecision !== 'highp') {\n\t\t\t\t\t\t\t\tforcePrecision = 'mediump';\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (forcePrecision === 'mediump' && device.maxPrecision === 'lowp') {\n\t\t\t\t\t\t\t\tforcePrecision = 'lowp';\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst precision = forcePrecision ? forcePrecision : device.precision;\n\t\t\t\tconst code = `\n\t\t\t\t\t\tprecision ${precision} float;\n\t\t\t\t\t\tprecision ${precision} int;\n\t\t\t\t\t\tprecision ${precision} usampler2D;\n\t\t\t\t\t\tprecision ${precision} isampler2D;\n\t\t\t\t\t\tprecision ${precision} sampler2DShadow;\n\t\t\t\t\t\tprecision ${precision} samplerCubeShadow;\n\t\t\t\t\t\tprecision ${precision} sampler2DArray;\n\t\t\t\t`;\n\t\t\t\treturn code;\n\t\t}\n\t\tstatic collectAttributes(vsCode) {\n\t\t\t\tconst attribs = {};\n\t\t\t\tlet attrs = 0;\n\t\t\t\tlet found = vsCode.indexOf('attribute');\n\t\t\t\twhile(found >= 0){\n\t\t\t\t\t\tif (found > 0 && vsCode[found - 1] === '/') break;\n\t\t\t\t\t\tlet ignore = false;\n\t\t\t\t\t\tif (found > 0) {\n\t\t\t\t\t\t\t\tlet startOfLine = vsCode.lastIndexOf('\\n', found);\n\t\t\t\t\t\t\t\tstartOfLine = startOfLine !== -1 ? startOfLine + 1 : 0;\n\t\t\t\t\t\t\t\tconst lineStartString = vsCode.substring(startOfLine, found);\n\t\t\t\t\t\t\t\tif (lineStartString.includes('#')) {\n\t\t\t\t\t\t\t\t\t\tignore = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!ignore) {\n\t\t\t\t\t\t\t\tconst endOfLine = vsCode.indexOf(';', found);\n\t\t\t\t\t\t\t\tconst startOfAttribName = vsCode.lastIndexOf(' ', endOfLine);\n\t\t\t\t\t\t\t\tconst attribName = vsCode.substring(startOfAttribName + 1, endOfLine);\n\t\t\t\t\t\t\t\tif (attribs[attribName]) ; else {\n\t\t\t\t\t\t\t\t\t\tconst semantic = _attrib2Semantic[attribName];\n\t\t\t\t\t\t\t\t\t\tif (semantic !== undefined) {\n\t\t\t\t\t\t\t\t\t\t\t\tattribs[attribName] = semantic;\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tattribs[attribName] = `ATTR${attrs}`;\n\t\t\t\t\t\t\t\t\t\t\t\tattrs++;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfound = vsCode.indexOf('attribute', found + 1);\n\t\t\t\t}\n\t\t\t\treturn attribs;\n\t\t}\n}\n\nlet id$8 = 0;\nclass Shader {\n\t\tconstructor(graphicsDevice, definition){\n\t\t\t\tthis.attributes = new Map();\n\t\t\t\tthis.id = id$8++;\n\t\t\t\tthis.device = graphicsDevice;\n\t\t\t\tthis.definition = definition;\n\t\t\t\tthis.name = definition.name || 'Untitled';\n\t\t\t\tthis.init();\n\t\t\t\tif (definition.cshader) {\n\t\t\t\t\t\tdefinition.cshader = Preprocessor.run(definition.cshader, definition.cincludes, {\n\t\t\t\t\t\t\t\tsourceName: `compute shader for ${this.label}`,\n\t\t\t\t\t\t\t\tstripDefines: true\n\t\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t\tconst wgsl = definition.shaderLanguage === SHADERLANGUAGE_WGSL;\n\t\t\t\t\t\tdefinition.vshader = Preprocessor.run(definition.vshader, definition.vincludes, {\n\t\t\t\t\t\t\t\tsourceName: `vertex shader for ${this.label}`,\n\t\t\t\t\t\t\t\tstripDefines: wgsl\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (definition.shaderLanguage === SHADERLANGUAGE_GLSL) {\n\t\t\t\t\t\t\t\tdefinition.attributes ??= ShaderDefinitionUtils.collectAttributes(definition.vshader);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst stripUnusedColorAttachments = graphicsDevice.isWebGL2 && (platform.name === 'osx' || platform.name === 'ios');\n\t\t\t\t\t\tdefinition.fshader = Preprocessor.run(definition.fshader, definition.fincludes, {\n\t\t\t\t\t\t\t\tstripUnusedColorAttachments,\n\t\t\t\t\t\t\t\tstripDefines: wgsl,\n\t\t\t\t\t\t\t\tsourceName: `fragment shader for ${this.label}`\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (!definition.vshader || !definition.fshader) {\n\t\t\t\t\t\t\t\tthis.failed = true;\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.impl = graphicsDevice.createShaderImpl(this);\n\t\t}\n\t\tinit() {\n\t\t\t\tthis.ready = false;\n\t\t\t\tthis.failed = false;\n\t\t}\n\t\tget label() {\n\t\t\t\treturn `Shader Id ${this.id} (${this.definition.shaderLanguage === SHADERLANGUAGE_WGSL ? 'WGSL' : 'GLSL'}) ${this.name}`;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.device.onDestroyShader(this);\n\t\t\t\tthis.impl.destroy(this);\n\t\t}\n\t\tloseContext() {\n\t\t\t\tthis.init();\n\t\t\t\tthis.impl.loseContext();\n\t\t}\n\t\trestoreContext() {\n\t\t\t\tthis.impl.restoreContext(this.device, this);\n\t\t}\n}\n\nclass UsedBuffer {\n}\nclass DynamicBufferAllocation {\n}\nclass DynamicBuffers {\n\t\tconstructor(device, bufferSize, bufferAlignment){\n\t\t\t\tthis.gpuBuffers = [];\n\t\t\t\tthis.stagingBuffers = [];\n\t\t\t\tthis.usedBuffers = [];\n\t\t\t\tthis.activeBuffer = null;\n\t\t\t\tthis.device = device;\n\t\t\t\tthis.bufferSize = bufferSize;\n\t\t\t\tthis.bufferAlignment = bufferAlignment;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.gpuBuffers.forEach((gpuBuffer)=>{\n\t\t\t\t\t\tgpuBuffer.destroy(this.device);\n\t\t\t\t});\n\t\t\t\tthis.gpuBuffers = null;\n\t\t\t\tthis.stagingBuffers.forEach((stagingBuffer)=>{\n\t\t\t\t\t\tstagingBuffer.destroy(this.device);\n\t\t\t\t});\n\t\t\t\tthis.stagingBuffers = null;\n\t\t\t\tthis.usedBuffers = null;\n\t\t\t\tthis.activeBuffer = null;\n\t\t}\n\t\talloc(allocation, size) {\n\t\t\t\tif (this.activeBuffer) {\n\t\t\t\t\t\tconst alignedStart = math.roundUp(this.activeBuffer.size, this.bufferAlignment);\n\t\t\t\t\t\tconst space = this.bufferSize - alignedStart;\n\t\t\t\t\t\tif (space < size) {\n\t\t\t\t\t\t\t\tthis.scheduleSubmit();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!this.activeBuffer) {\n\t\t\t\t\t\tlet gpuBuffer = this.gpuBuffers.pop();\n\t\t\t\t\t\tif (!gpuBuffer) {\n\t\t\t\t\t\t\t\tgpuBuffer = this.createBuffer(this.device, this.bufferSize, false);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlet stagingBuffer = this.stagingBuffers.pop();\n\t\t\t\t\t\tif (!stagingBuffer) {\n\t\t\t\t\t\t\t\tstagingBuffer = this.createBuffer(this.device, this.bufferSize, true);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.activeBuffer = new UsedBuffer();\n\t\t\t\t\t\tthis.activeBuffer.stagingBuffer = stagingBuffer;\n\t\t\t\t\t\tthis.activeBuffer.gpuBuffer = gpuBuffer;\n\t\t\t\t\t\tthis.activeBuffer.offset = 0;\n\t\t\t\t\t\tthis.activeBuffer.size = 0;\n\t\t\t\t}\n\t\t\t\tconst activeBuffer = this.activeBuffer;\n\t\t\t\tconst alignedStart = math.roundUp(activeBuffer.size, this.bufferAlignment);\n\t\t\t\tallocation.gpuBuffer = activeBuffer.gpuBuffer;\n\t\t\t\tallocation.offset = alignedStart;\n\t\t\t\tallocation.storage = activeBuffer.stagingBuffer.alloc(alignedStart, size);\n\t\t\t\tactiveBuffer.size = alignedStart + size;\n\t\t}\n\t\tscheduleSubmit() {\n\t\t\t\tif (this.activeBuffer) {\n\t\t\t\t\t\tthis.usedBuffers.push(this.activeBuffer);\n\t\t\t\t\t\tthis.activeBuffer = null;\n\t\t\t\t}\n\t\t}\n\t\tsubmit() {\n\t\t\t\tthis.scheduleSubmit();\n\t\t}\n}\n\nconst _updateFunctions = [];\n_updateFunctions[UNIFORMTYPE_FLOAT] = function(uniformBuffer, value, offset) {\n\t\tconst dst = uniformBuffer.storageFloat32;\n\t\tdst[offset] = value;\n};\n_updateFunctions[UNIFORMTYPE_VEC2] = (uniformBuffer, value, offset)=>{\n\t\tconst dst = uniformBuffer.storageFloat32;\n\t\tdst[offset] = value[0];\n\t\tdst[offset + 1] = value[1];\n};\n_updateFunctions[UNIFORMTYPE_VEC3] = (uniformBuffer, value, offset)=>{\n\t\tconst dst = uniformBuffer.storageFloat32;\n\t\tdst[offset] = value[0];\n\t\tdst[offset + 1] = value[1];\n\t\tdst[offset + 2] = value[2];\n};\n_updateFunctions[UNIFORMTYPE_VEC4] = (uniformBuffer, value, offset)=>{\n\t\tconst dst = uniformBuffer.storageFloat32;\n\t\tdst[offset] = value[0];\n\t\tdst[offset + 1] = value[1];\n\t\tdst[offset + 2] = value[2];\n\t\tdst[offset + 3] = value[3];\n};\n_updateFunctions[UNIFORMTYPE_INT] = function(uniformBuffer, value, offset) {\n\t\tconst dst = uniformBuffer.storageInt32;\n\t\tdst[offset] = value;\n};\n_updateFunctions[UNIFORMTYPE_IVEC2] = function(uniformBuffer, value, offset) {\n\t\tconst dst = uniformBuffer.storageInt32;\n\t\tdst[offset] = value[0];\n\t\tdst[offset + 1] = value[1];\n};\n_updateFunctions[UNIFORMTYPE_IVEC3] = function(uniformBuffer, value, offset) {\n\t\tconst dst = uniformBuffer.storageInt32;\n\t\tdst[offset] = value[0];\n\t\tdst[offset + 1] = value[1];\n\t\tdst[offset + 2] = value[2];\n};\n_updateFunctions[UNIFORMTYPE_IVEC4] = function(uniformBuffer, value, offset) {\n\t\tconst dst = uniformBuffer.storageInt32;\n\t\tdst[offset] = value[0];\n\t\tdst[offset + 1] = value[1];\n\t\tdst[offset + 2] = value[2];\n\t\tdst[offset + 3] = value[3];\n};\n_updateFunctions[UNIFORMTYPE_MAT2] = (uniformBuffer, value, offset)=>{\n\t\tconst dst = uniformBuffer.storageFloat32;\n\t\tdst[offset] = value[0];\n\t\tdst[offset + 1] = value[1];\n\t\tdst[offset + 4] = value[2];\n\t\tdst[offset + 5] = value[3];\n\t\tdst[offset + 8] = value[4];\n\t\tdst[offset + 9] = value[5];\n};\n_updateFunctions[UNIFORMTYPE_MAT3] = (uniformBuffer, value, offset)=>{\n\t\tconst dst = uniformBuffer.storageFloat32;\n\t\tdst[offset] = value[0];\n\t\tdst[offset + 1] = value[1];\n\t\tdst[offset + 2] = value[2];\n\t\tdst[offset + 4] = value[3];\n\t\tdst[offset + 5] = value[4];\n\t\tdst[offset + 6] = value[5];\n\t\tdst[offset + 8] = value[6];\n\t\tdst[offset + 9] = value[7];\n\t\tdst[offset + 10] = value[8];\n};\n_updateFunctions[UNIFORMTYPE_FLOATARRAY] = function(uniformBuffer, value, offset, count) {\n\t\tconst dst = uniformBuffer.storageFloat32;\n\t\tfor(let i = 0; i < count; i++){\n\t\t\t\tdst[offset + i * 4] = value[i];\n\t\t}\n};\n_updateFunctions[UNIFORMTYPE_VEC2ARRAY] = (uniformBuffer, value, offset, count)=>{\n\t\tconst dst = uniformBuffer.storageFloat32;\n\t\tfor(let i = 0; i < count; i++){\n\t\t\t\tdst[offset + i * 4] = value[i * 2];\n\t\t\t\tdst[offset + i * 4 + 1] = value[i * 2 + 1];\n\t\t}\n};\n_updateFunctions[UNIFORMTYPE_VEC3ARRAY] = (uniformBuffer, value, offset, count)=>{\n\t\tconst dst = uniformBuffer.storageFloat32;\n\t\tfor(let i = 0; i < count; i++){\n\t\t\t\tdst[offset + i * 4] = value[i * 3];\n\t\t\t\tdst[offset + i * 4 + 1] = value[i * 3 + 1];\n\t\t\t\tdst[offset + i * 4 + 2] = value[i * 3 + 2];\n\t\t}\n};\n_updateFunctions[UNIFORMTYPE_UINT] = (uniformBuffer, value, offset, count)=>{\n\t\tconst dst = uniformBuffer.storageUint32;\n\t\tdst[offset] = value;\n};\n_updateFunctions[UNIFORMTYPE_UVEC2] = (uniformBuffer, value, offset, count)=>{\n\t\tconst dst = uniformBuffer.storageUint32;\n\t\tdst[offset] = value[0];\n\t\tdst[offset + 1] = value[1];\n};\n_updateFunctions[UNIFORMTYPE_UVEC3] = (uniformBuffer, value, offset, count)=>{\n\t\tconst dst = uniformBuffer.storageUint32;\n\t\tdst[offset] = value[0];\n\t\tdst[offset + 1] = value[1];\n\t\tdst[offset + 2] = value[2];\n};\n_updateFunctions[UNIFORMTYPE_UVEC4] = (uniformBuffer, value, offset, count)=>{\n\t\tconst dst = uniformBuffer.storageUint32;\n\t\tdst[offset] = value[0];\n\t\tdst[offset + 1] = value[1];\n\t\tdst[offset + 2] = value[2];\n\t\tdst[offset + 3] = value[3];\n};\n_updateFunctions[UNIFORMTYPE_INTARRAY] = function(uniformBuffer, value, offset, count) {\n\t\tconst dst = uniformBuffer.storageInt32;\n\t\tfor(let i = 0; i < count; i++){\n\t\t\t\tdst[offset + i * 4] = value[i];\n\t\t}\n};\n_updateFunctions[UNIFORMTYPE_BOOLARRAY] = _updateFunctions[UNIFORMTYPE_INTARRAY];\n_updateFunctions[UNIFORMTYPE_UINTARRAY] = function(uniformBuffer, value, offset, count) {\n\t\tconst dst = uniformBuffer.storageUint32;\n\t\tfor(let i = 0; i < count; i++){\n\t\t\t\tdst[offset + i * 4] = value[i];\n\t\t}\n};\n_updateFunctions[UNIFORMTYPE_IVEC2ARRAY] = (uniformBuffer, value, offset, count)=>{\n\t\tconst dst = uniformBuffer.storageInt32;\n\t\tfor(let i = 0; i < count; i++){\n\t\t\t\tdst[offset + i * 4] = value[i * 2];\n\t\t\t\tdst[offset + i * 4 + 1] = value[i * 2 + 1];\n\t\t}\n};\n_updateFunctions[UNIFORMTYPE_BVEC2ARRAY] = _updateFunctions[UNIFORMTYPE_IVEC2ARRAY];\n_updateFunctions[UNIFORMTYPE_UVEC2ARRAY] = (uniformBuffer, value, offset, count)=>{\n\t\tconst dst = uniformBuffer.storageUint32;\n\t\tfor(let i = 0; i < count; i++){\n\t\t\t\tdst[offset + i * 4] = value[i * 2];\n\t\t\t\tdst[offset + i * 4 + 1] = value[i * 2 + 1];\n\t\t}\n};\n_updateFunctions[UNIFORMTYPE_IVEC3ARRAY] = (uniformBuffer, value, offset, count)=>{\n\t\tconst dst = uniformBuffer.storageInt32;\n\t\tfor(let i = 0; i < count; i++){\n\t\t\t\tdst[offset + i * 4] = value[i * 3];\n\t\t\t\tdst[offset + i * 4 + 1] = value[i * 3 + 1];\n\t\t\t\tdst[offset + i * 4 + 2] = value[i * 3 + 2];\n\t\t}\n};\n_updateFunctions[UNIFORMTYPE_BVEC3ARRAY] = _updateFunctions[UNIFORMTYPE_IVEC3ARRAY];\n_updateFunctions[UNIFORMTYPE_UVEC3ARRAY] = (uniformBuffer, value, offset, count)=>{\n\t\tconst dst = uniformBuffer.storageUint32;\n\t\tfor(let i = 0; i < count; i++){\n\t\t\t\tdst[offset + i * 4] = value[i * 3];\n\t\t\t\tdst[offset + i * 4 + 1] = value[i * 3 + 1];\n\t\t\t\tdst[offset + i * 4 + 2] = value[i * 3 + 2];\n\t\t}\n};\nclass UniformBuffer {\n\t\tconstructor(graphicsDevice, format, persistent = true){\n\t\t\t\tthis.renderVersionDirty = 0;\n\t\t\t\tthis.device = graphicsDevice;\n\t\t\t\tthis.format = format;\n\t\t\t\tthis.persistent = persistent;\n\t\t\t\tif (persistent) {\n\t\t\t\t\t\tthis.impl = graphicsDevice.createUniformBufferImpl(this);\n\t\t\t\t\t\tconst storage = new ArrayBuffer(format.byteSize);\n\t\t\t\t\t\tthis.assignStorage(new Int32Array(storage));\n\t\t\t\t\t\tgraphicsDevice._vram.ub += this.format.byteSize;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.allocation = new DynamicBufferAllocation();\n\t\t\t\t}\n\t\t}\n\t\tdestroy() {\n\t\t\t\tif (this.persistent) {\n\t\t\t\t\t\tconst device = this.device;\n\t\t\t\t\t\tthis.impl.destroy(device);\n\t\t\t\t\t\tdevice._vram.ub -= this.format.byteSize;\n\t\t\t\t}\n\t\t}\n\t\tget offset() {\n\t\t\t\treturn this.persistent ? 0 : this.allocation.offset;\n\t\t}\n\t\tassignStorage(storage) {\n\t\t\t\tthis.storageInt32 = storage;\n\t\t\t\tthis.storageUint32 = new Uint32Array(storage.buffer, storage.byteOffset, storage.byteLength / 4);\n\t\t\t\tthis.storageFloat32 = new Float32Array(storage.buffer, storage.byteOffset, storage.byteLength / 4);\n\t\t}\n\t\tloseContext() {\n\t\t\t\tthis.impl?.loseContext();\n\t\t}\n\t\tsetUniform(uniformFormat, value) {\n\t\t\t\tconst offset = uniformFormat.offset;\n\t\t\t\tif (value !== null && value !== undefined) {\n\t\t\t\t\t\tconst updateFunction = _updateFunctions[uniformFormat.updateType];\n\t\t\t\t\t\tif (updateFunction) {\n\t\t\t\t\t\t\t\tupdateFunction(this, value, offset, uniformFormat.count);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.storageFloat32.set(value, offset);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tset(name, value) {\n\t\t\t\tconst uniformFormat = this.format.map.get(name);\n\t\t\t\tif (uniformFormat) {\n\t\t\t\t\t\tthis.setUniform(uniformFormat, value);\n\t\t\t\t}\n\t\t}\n\t\tstartUpdate(dynamicBindGroup) {\n\t\t\t\tif (!this.persistent) {\n\t\t\t\t\t\tconst allocation = this.allocation;\n\t\t\t\t\t\tconst oldGpuBuffer = allocation.gpuBuffer;\n\t\t\t\t\t\tthis.device.dynamicBuffers.alloc(allocation, this.format.byteSize);\n\t\t\t\t\t\tthis.assignStorage(allocation.storage);\n\t\t\t\t\t\tif (dynamicBindGroup) {\n\t\t\t\t\t\t\t\tdynamicBindGroup.bindGroup = allocation.gpuBuffer.getBindGroup(this);\n\t\t\t\t\t\t\t\tdynamicBindGroup.offsets[0] = allocation.offset;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (oldGpuBuffer !== allocation.gpuBuffer) {\n\t\t\t\t\t\t\t\tthis.renderVersionDirty = this.device.renderVersion;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tendUpdate() {\n\t\t\t\tif (this.persistent) {\n\t\t\t\t\t\tthis.impl.unlock(this);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.storageFloat32 = null;\n\t\t\t\t\t\tthis.storageInt32 = null;\n\t\t\t\t}\n\t\t}\n\t\tupdate(dynamicBindGroup) {\n\t\t\t\tthis.startUpdate(dynamicBindGroup);\n\t\t\t\tconst uniforms = this.format.uniforms;\n\t\t\t\tfor(let i = 0; i < uniforms.length; i++){\n\t\t\t\t\t\tconst value = uniforms[i].scopeId.value;\n\t\t\t\t\t\tthis.setUniform(uniforms[i], value);\n\t\t\t\t}\n\t\t\t\tthis.endUpdate();\n\t\t}\n}\n\nconst primitive = {\n\t\ttype: PRIMITIVE_TRISTRIP,\n\t\tbase: 0,\n\t\tbaseVertex: 0,\n\t\tcount: 4,\n\t\tindexed: false\n};\nclass WebgpuClearRenderer {\n\t\tconstructor(device){\n\t\t\t\tconst code = `\n\n\t\t\t\t\t\tstruct ub_mesh {\n\t\t\t\t\t\t\t\tcolor : vec4f,\n\t\t\t\t\t\t\t\tdepth: f32\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t@group(2) @binding(0) var<uniform> ubMesh : ub_mesh;\n\n\t\t\t\t\t\tvar<private> pos : array<vec2f, 4> = array<vec2f, 4>(\n\t\t\t\t\t\t\t\tvec2(-1.0, 1.0), vec2(1.0, 1.0),\n\t\t\t\t\t\t\t\tvec2(-1.0, -1.0), vec2(1.0, -1.0)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tstruct VertexOutput {\n\t\t\t\t\t\t\t\t@builtin(position) position : vec4f\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t@vertex\n\t\t\t\t\t\tfn vertexMain(@builtin(vertex_index) vertexIndex : u32) -> VertexOutput {\n\t\t\t\t\t\t\t\tvar output : VertexOutput;\n\t\t\t\t\t\t\t\toutput.position = vec4(pos[vertexIndex], ubMesh.depth, 1.0);\n\t\t\t\t\t\t\t\treturn output;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t@fragment\n\t\t\t\t\t\tfn fragmentMain() -> @location(0) vec4f {\n\t\t\t\t\t\t\t\treturn ubMesh.color;\n\t\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t\tthis.shader = new Shader(device, {\n\t\t\t\t\t\tname: 'WebGPUClearRendererShader',\n\t\t\t\t\t\tshaderLanguage: SHADERLANGUAGE_WGSL,\n\t\t\t\t\t\tvshader: code,\n\t\t\t\t\t\tfshader: code\n\t\t\t\t});\n\t\t\t\tthis.uniformBuffer = new UniformBuffer(device, new UniformBufferFormat(device, [\n\t\t\t\t\t\tnew UniformFormat('color', UNIFORMTYPE_VEC4),\n\t\t\t\t\t\tnew UniformFormat('depth', UNIFORMTYPE_FLOAT)\n\t\t\t\t]), false);\n\t\t\t\tthis.dynamicBindGroup = new DynamicBindGroup();\n\t\t\t\tthis.colorData = new Float32Array(4);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.shader.destroy();\n\t\t\t\tthis.shader = null;\n\t\t\t\tthis.uniformBuffer.destroy();\n\t\t\t\tthis.uniformBuffer = null;\n\t\t}\n\t\tclear(device, renderTarget, options, defaultOptions) {\n\t\t\t\toptions = options || defaultOptions;\n\t\t\t\tconst flags = options.flags ?? defaultOptions.flags;\n\t\t\t\tif (flags !== 0) {\n\t\t\t\t\t\tconst { uniformBuffer, dynamicBindGroup } = this;\n\t\t\t\t\t\tuniformBuffer.startUpdate(dynamicBindGroup);\n\t\t\t\t\t\tdevice.setBindGroup(BINDGROUP_MESH_UB, dynamicBindGroup.bindGroup, dynamicBindGroup.offsets);\n\t\t\t\t\t\tdevice.setBindGroup(BINDGROUP_MESH, device.emptyBindGroup);\n\t\t\t\t\t\tif (flags & CLEARFLAG_COLOR && (renderTarget.colorBuffer || renderTarget.impl.assignedColorTexture)) {\n\t\t\t\t\t\t\t\tconst color = options.color ?? defaultOptions.color;\n\t\t\t\t\t\t\t\tthis.colorData.set(color);\n\t\t\t\t\t\t\t\tdevice.setBlendState(BlendState.NOBLEND);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tdevice.setBlendState(BlendState.NOWRITE);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tuniformBuffer.set('color', this.colorData);\n\t\t\t\t\t\tif (flags & CLEARFLAG_DEPTH && renderTarget.depth) {\n\t\t\t\t\t\t\t\tconst depth = options.depth ?? defaultOptions.depth;\n\t\t\t\t\t\t\t\tuniformBuffer.set('depth', depth);\n\t\t\t\t\t\t\t\tdevice.setDepthState(DepthState.WRITEDEPTH);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tuniformBuffer.set('depth', 1);\n\t\t\t\t\t\t\t\tdevice.setDepthState(DepthState.NODEPTH);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (flags & CLEARFLAG_STENCIL && renderTarget.stencil) ;\n\t\t\t\t\t\tuniformBuffer.endUpdate();\n\t\t\t\t\t\tdevice.setCullMode(CULLFACE_NONE);\n\t\t\t\t\t\tdevice.setShader(this.shader);\n\t\t\t\t\t\tdevice.draw(primitive);\n\t\t\t\t}\n\t\t}\n}\n\nclass WebgpuMipmapRenderer {\n\t\tconstructor(device){\n\t\t\t\tthis.device = device;\n\t\t\t\tconst code = `\n \n\t\t\t\t\t\tvar<private> pos : array<vec2f, 4> = array<vec2f, 4>(\n\t\t\t\t\t\t\t\tvec2(-1.0, 1.0), vec2(1.0, 1.0),\n\t\t\t\t\t\t\t\tvec2(-1.0, -1.0), vec2(1.0, -1.0)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tstruct VertexOutput {\n\t\t\t\t\t\t\t\t@builtin(position) position : vec4f,\n\t\t\t\t\t\t\t\t@location(0) texCoord : vec2f\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\t@vertex\n\t\t\t\t\t\tfn vertexMain(@builtin(vertex_index) vertexIndex : u32) -> VertexOutput {\n\t\t\t\t\t\t\tvar output : VertexOutput;\n\t\t\t\t\t\t\toutput.texCoord = pos[vertexIndex] * vec2f(0.5, -0.5) + vec2f(0.5);\n\t\t\t\t\t\t\toutput.position = vec4f(pos[vertexIndex], 0, 1);\n\t\t\t\t\t\t\treturn output;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t@group(0) @binding(0) var imgSampler : sampler;\n\t\t\t\t\t\t@group(0) @binding(1) var img : texture_2d<f32>;\n\n\t\t\t\t\t\t@fragment\n\t\t\t\t\t\tfn fragmentMain(@location(0) texCoord : vec2f) -> @location(0) vec4f {\n\t\t\t\t\t\t\treturn textureSample(img, imgSampler, texCoord);\n\t\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t\tthis.shader = new Shader(device, {\n\t\t\t\t\t\tname: 'WebGPUMipmapRendererShader',\n\t\t\t\t\t\tshaderLanguage: SHADERLANGUAGE_WGSL,\n\t\t\t\t\t\tvshader: code,\n\t\t\t\t\t\tfshader: code\n\t\t\t\t});\n\t\t\t\tthis.minSampler = device.wgpu.createSampler({\n\t\t\t\t\t\tminFilter: 'linear'\n\t\t\t\t});\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.shader.destroy();\n\t\t\t\tthis.shader = null;\n\t\t}\n\t\tgenerate(webgpuTexture) {\n\t\t\t\tconst textureDescr = webgpuTexture.desc;\n\t\t\t\tif (textureDescr.mipLevelCount <= 1) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (webgpuTexture.texture.volume) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst device = this.device;\n\t\t\t\tconst wgpu = device.wgpu;\n\t\t\t\tconst webgpuShader = this.shader.impl;\n\t\t\t\tconst pipeline = wgpu.createRenderPipeline({\n\t\t\t\t\t\tlayout: 'auto',\n\t\t\t\t\t\tvertex: {\n\t\t\t\t\t\t\t\tmodule: webgpuShader.getVertexShaderModule(),\n\t\t\t\t\t\t\t\tentryPoint: webgpuShader.vertexEntryPoint\n\t\t\t\t\t\t},\n\t\t\t\t\t\tfragment: {\n\t\t\t\t\t\t\t\tmodule: webgpuShader.getFragmentShaderModule(),\n\t\t\t\t\t\t\t\tentryPoint: webgpuShader.fragmentEntryPoint,\n\t\t\t\t\t\t\t\ttargets: [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tformat: textureDescr.format\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\tprimitive: {\n\t\t\t\t\t\t\t\ttopology: 'triangle-strip'\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tconst texture = webgpuTexture.texture;\n\t\t\t\tconst numFaces = texture.cubemap ? 6 : texture.array ? texture.arrayLength : 1;\n\t\t\t\tconst srcViews = [];\n\t\t\t\tfor(let face = 0; face < numFaces; face++){\n\t\t\t\t\t\tsrcViews.push(webgpuTexture.createView({\n\t\t\t\t\t\t\t\tdimension: '2d',\n\t\t\t\t\t\t\t\tbaseMipLevel: 0,\n\t\t\t\t\t\t\t\tmipLevelCount: 1,\n\t\t\t\t\t\t\t\tbaseArrayLayer: face\n\t\t\t\t\t\t}));\n\t\t\t\t}\n\t\t\t\tconst commandEncoder = device.getCommandEncoder();\n\t\t\t\tfor(let i = 1; i < textureDescr.mipLevelCount; i++){\n\t\t\t\t\t\tfor(let face = 0; face < numFaces; face++){\n\t\t\t\t\t\t\t\tconst dstView = webgpuTexture.createView({\n\t\t\t\t\t\t\t\t\t\tdimension: '2d',\n\t\t\t\t\t\t\t\t\t\tbaseMipLevel: i,\n\t\t\t\t\t\t\t\t\t\tmipLevelCount: 1,\n\t\t\t\t\t\t\t\t\t\tbaseArrayLayer: face\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tconst passEncoder = commandEncoder.beginRenderPass({\n\t\t\t\t\t\t\t\t\t\tcolorAttachments: [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tview: dstView,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tloadOp: 'clear',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tstoreOp: 'store'\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tconst bindGroup = wgpu.createBindGroup({\n\t\t\t\t\t\t\t\t\t\tlayout: pipeline.getBindGroupLayout(0),\n\t\t\t\t\t\t\t\t\t\tentries: [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbinding: 0,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tresource: this.minSampler\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbinding: 1,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tresource: srcViews[face]\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tpassEncoder.setPipeline(pipeline);\n\t\t\t\t\t\t\t\tpassEncoder.setBindGroup(0, bindGroup);\n\t\t\t\t\t\t\t\tpassEncoder.draw(4);\n\t\t\t\t\t\t\t\tpassEncoder.end();\n\t\t\t\t\t\t\t\tsrcViews[face] = dstView;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tdevice.pipeline = null;\n\t\t}\n}\n\nclass DynamicBuffer {\n\t\tconstructor(device){\n\t\t\t\tthis.bindGroupCache = new Map();\n\t\t\t\tthis.device = device;\n\t\t\t\tthis.bindGroupFormat = new BindGroupFormat(this.device, [\n\t\t\t\t\t\tnew BindUniformBufferFormat(UNIFORM_BUFFER_DEFAULT_SLOT_NAME, SHADERSTAGE_VERTEX | SHADERSTAGE_FRAGMENT)\n\t\t\t\t]);\n\t\t}\n\t\tgetBindGroup(ub) {\n\t\t\t\tconst ubSize = ub.format.byteSize;\n\t\t\t\tlet bindGroup = this.bindGroupCache.get(ubSize);\n\t\t\t\tif (!bindGroup) {\n\t\t\t\t\t\tbindGroup = new BindGroup(this.device, this.bindGroupFormat, ub);\n\t\t\t\t\t\tbindGroup.update();\n\t\t\t\t\t\tthis.bindGroupCache.set(ubSize, bindGroup);\n\t\t\t\t}\n\t\t\t\treturn bindGroup;\n\t\t}\n}\n\nclass WebgpuDynamicBuffer extends DynamicBuffer {\n\t\tconstructor(device, size, isStaging){\n\t\t\t\tsuper(device), this.buffer = null, this.mappedRange = null;\n\t\t\t\tthis.buffer = device.wgpu.createBuffer({\n\t\t\t\t\t\tsize: size,\n\t\t\t\t\t\tusage: isStaging ? GPUBufferUsage.MAP_WRITE | GPUBufferUsage.COPY_SRC : GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,\n\t\t\t\t\t\tmappedAtCreation: isStaging\n\t\t\t\t});\n\t\t\t\tif (isStaging) {\n\t\t\t\t\t\tthis.onAvailable();\n\t\t\t\t}\n\t\t\t\tdevice._vram.ub += size;\n\t\t}\n\t\tdestroy(device) {\n\t\t\t\tdevice._vram.ub -= this.buffer.size;\n\t\t\t\tthis.buffer.destroy();\n\t\t\t\tthis.buffer = null;\n\t\t}\n\t\tonAvailable() {\n\t\t\t\tthis.mappedRange = this.buffer.getMappedRange();\n\t\t}\n\t\talloc(offset, size) {\n\t\t\t\treturn new Int32Array(this.mappedRange, offset, size / 4);\n\t\t}\n}\n\nclass WebgpuDynamicBuffers extends DynamicBuffers {\n\t\tcreateBuffer(device, size, isStaging) {\n\t\t\t\treturn new WebgpuDynamicBuffer(device, size, isStaging);\n\t\t}\n\t\tsubmit() {\n\t\t\t\tsuper.submit();\n\t\t\t\tconst count = this.usedBuffers.length;\n\t\t\t\tif (count) {\n\t\t\t\t\t\tconst device = this.device;\n\t\t\t\t\t\tconst gpuBuffers = this.gpuBuffers;\n\t\t\t\t\t\tconst commandEncoder = device.wgpu.createCommandEncoder();\n\t\t\t\t\t\tfor(let i = count - 1; i >= 0; i--){\n\t\t\t\t\t\t\t\tconst usedBuffer = this.usedBuffers[i];\n\t\t\t\t\t\t\t\tconst { stagingBuffer, gpuBuffer, offset, size } = usedBuffer;\n\t\t\t\t\t\t\t\tconst src = stagingBuffer.buffer;\n\t\t\t\t\t\t\t\tsrc.unmap();\n\t\t\t\t\t\t\t\tcommandEncoder.copyBufferToBuffer(src, offset, gpuBuffer.buffer, offset, size);\n\t\t\t\t\t\t\t\tgpuBuffers.push(gpuBuffer);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst cb = commandEncoder.finish();\n\t\t\t\t\t\tdevice.addCommandBuffer(cb, true);\n\t\t\t\t\t\tfor(let i = 0; i < count; i++){\n\t\t\t\t\t\t\t\tconst stagingBuffer = this.usedBuffers[i].stagingBuffer;\n\t\t\t\t\t\t\t\tthis.pendingStagingBuffers.push(stagingBuffer);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.usedBuffers.length = 0;\n\t\t\t\t}\n\t\t}\n\t\tonCommandBuffersSubmitted() {\n\t\t\t\tconst count = this.pendingStagingBuffers.length;\n\t\t\t\tif (count) {\n\t\t\t\t\t\tfor(let i = 0; i < count; i++){\n\t\t\t\t\t\t\t\tconst stagingBuffer = this.pendingStagingBuffers[i];\n\t\t\t\t\t\t\t\tstagingBuffer.buffer.mapAsync(GPUMapMode.WRITE).then(()=>{\n\t\t\t\t\t\t\t\t\t\tif (this.stagingBuffers) {\n\t\t\t\t\t\t\t\t\t\t\t\tstagingBuffer.onAvailable();\n\t\t\t\t\t\t\t\t\t\t\t\tthis.stagingBuffers.push(stagingBuffer);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.pendingStagingBuffers.length = 0;\n\t\t\t\t}\n\t\t}\n\t\tconstructor(...args){\n\t\t\t\tsuper(...args), this.pendingStagingBuffers = [];\n\t\t}\n}\n\nclass GpuProfiler {\n\t\tloseContext() {\n\t\t\t\tthis.pastFrameAllocations.clear();\n\t\t}\n\t\tset enabled(value) {\n\t\t\t\tthis._enableRequest = value;\n\t\t}\n\t\tget enabled() {\n\t\t\t\treturn this._enableRequest;\n\t\t}\n\t\tprocessEnableRequest() {\n\t\t\t\tif (this._enableRequest !== this._enabled) {\n\t\t\t\t\t\tthis._enabled = this._enableRequest;\n\t\t\t\t\t\tif (!this._enabled) {\n\t\t\t\t\t\t\t\tthis._frameTime = 0;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\trequest(renderVersion) {\n\t\t\t\tthis.pastFrameAllocations.set(renderVersion, this.frameAllocations);\n\t\t\t\tthis.frameAllocations = [];\n\t\t}\n\t\treport(renderVersion, timings) {\n\t\t\t\tif (timings) {\n\t\t\t\t\t\tconst allocations = this.pastFrameAllocations.get(renderVersion);\n\t\t\t\t\t\tif (timings.length > 0) {\n\t\t\t\t\t\t\t\tthis._frameTime = timings.reduce((sum, t)=>sum + t, 0);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (Tracing.get(TRACEID_GPU_TIMINGS)) {\n\t\t\t\t\t\t\t\tlet total = 0;\n\t\t\t\t\t\t\t\tfor(let i = 0; i < allocations.length; ++i){\n\t\t\t\t\t\t\t\t\t\tallocations[i];\n\t\t\t\t\t\t\t\t\t\ttotal += timings[i];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.pastFrameAllocations.delete(renderVersion);\n\t\t}\n\t\tgetSlot(name) {\n\t\t\t\tif (this.frameAllocations.length >= this.maxCount) {\n\t\t\t\t\t\treturn -1;\n\t\t\t\t}\n\t\t\t\tconst slot = this.frameAllocations.length;\n\t\t\t\tthis.frameAllocations.push(name);\n\t\t\t\treturn slot;\n\t\t}\n\t\tget slotCount() {\n\t\t\t\treturn this.frameAllocations.length;\n\t\t}\n\t\tconstructor(){\n\t\t\t\tthis.frameAllocations = [];\n\t\t\t\tthis.pastFrameAllocations = new Map();\n\t\t\t\tthis._enabled = false;\n\t\t\t\tthis._enableRequest = false;\n\t\t\t\tthis._frameTime = 0;\n\t\t\t\tthis.maxCount = 9999;\n\t\t}\n}\n\nclass WebgpuQuerySet {\n\t\tconstructor(device, isTimestamp, capacity){\n\t\t\t\tthis.stagingBuffers = [];\n\t\t\t\tthis.activeStagingBuffer = null;\n\t\t\t\tthis.device = device;\n\t\t\t\tthis.capacity = capacity;\n\t\t\t\tthis.bytesPerSlot = isTimestamp ? 8 : 4;\n\t\t\t\tconst wgpu = device.wgpu;\n\t\t\t\tthis.querySet = wgpu.createQuerySet({\n\t\t\t\t\t\ttype: isTimestamp ? 'timestamp' : 'occlusion',\n\t\t\t\t\t\tcount: capacity\n\t\t\t\t});\n\t\t\t\tthis.queryBuffer = wgpu.createBuffer({\n\t\t\t\t\t\tsize: this.bytesPerSlot * capacity,\n\t\t\t\t\t\tusage: GPUBufferUsage.QUERY_RESOLVE | GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC | GPUBufferUsage.COPY_DST\n\t\t\t\t});\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.querySet?.destroy();\n\t\t\t\tthis.querySet = null;\n\t\t\t\tthis.queryBuffer?.destroy();\n\t\t\t\tthis.queryBuffer = null;\n\t\t\t\tthis.activeStagingBuffer = null;\n\t\t\t\tthis.stagingBuffers.forEach((stagingBuffer)=>{\n\t\t\t\t\t\tstagingBuffer.destroy();\n\t\t\t\t});\n\t\t\t\tthis.stagingBuffers = null;\n\t\t}\n\t\tgetStagingBuffer() {\n\t\t\t\tlet stagingBuffer = this.stagingBuffers.pop();\n\t\t\t\tif (!stagingBuffer) {\n\t\t\t\t\t\tstagingBuffer = this.device.wgpu.createBuffer({\n\t\t\t\t\t\t\t\tsize: this.queryBuffer.size,\n\t\t\t\t\t\t\t\tusage: GPUBufferUsage.COPY_DST | GPUBufferUsage.MAP_READ\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn stagingBuffer;\n\t\t}\n\t\tresolve(count) {\n\t\t\t\tconst device = this.device;\n\t\t\t\tconst commandEncoder = device.getCommandEncoder();\n\t\t\t\tcommandEncoder.resolveQuerySet(this.querySet, 0, count, this.queryBuffer, 0);\n\t\t\t\tconst activeStagingBuffer = this.getStagingBuffer();\n\t\t\t\tthis.activeStagingBuffer = activeStagingBuffer;\n\t\t\t\tcommandEncoder.copyBufferToBuffer(this.queryBuffer, 0, activeStagingBuffer, 0, this.bytesPerSlot * count);\n\t\t}\n\t\trequest(count, renderVersion) {\n\t\t\t\tconst stagingBuffer = this.activeStagingBuffer;\n\t\t\t\tthis.activeStagingBuffer = null;\n\t\t\t\treturn stagingBuffer.mapAsync(GPUMapMode.READ).then(()=>{\n\t\t\t\t\t\tconst srcTimings = new BigInt64Array(stagingBuffer.getMappedRange());\n\t\t\t\t\t\tconst timings = [];\n\t\t\t\t\t\tfor(let i = 0; i < count; i++){\n\t\t\t\t\t\t\t\ttimings.push(Number(srcTimings[i * 2 + 1] - srcTimings[i * 2]) * 0.000001);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstagingBuffer.unmap();\n\t\t\t\t\t\tthis.stagingBuffers?.push(stagingBuffer);\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\trenderVersion,\n\t\t\t\t\t\t\t\ttimings\n\t\t\t\t\t\t};\n\t\t\t\t});\n\t\t}\n}\n\nclass WebgpuGpuProfiler extends GpuProfiler {\n\t\tconstructor(device){\n\t\t\t\tsuper();\n\t\t\t\tthis.device = device;\n\t\t\t\tthis.maxCount = 1024;\n\t\t\t\tthis.timestampQueriesSet = device.supportsTimestampQuery ? new WebgpuQuerySet(device, true, 2 * this.maxCount) : null;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.timestampQueriesSet?.destroy();\n\t\t\t\tthis.timestampQueriesSet = null;\n\t\t}\n\t\tframeStart() {\n\t\t\t\tthis.processEnableRequest();\n\t\t}\n\t\tframeEnd() {\n\t\t\t\tif (this._enabled) {\n\t\t\t\t\t\tthis.timestampQueriesSet?.resolve(this.slotCount * 2);\n\t\t\t\t}\n\t\t}\n\t\trequest() {\n\t\t\t\tif (this._enabled) {\n\t\t\t\t\t\tconst renderVersion = this.device.renderVersion;\n\t\t\t\t\t\tthis.timestampQueriesSet?.request(this.slotCount, renderVersion).then((results)=>{\n\t\t\t\t\t\t\t\tthis.report(results.renderVersion, results.timings);\n\t\t\t\t\t\t});\n\t\t\t\t\t\tsuper.request(renderVersion);\n\t\t\t\t}\n\t\t}\n}\n\nclass WebgpuResolver {\n\t\tconstructor(device){\n\t\t\t\tthis.pipelineCache = new Map();\n\t\t\t\tthis.device = device;\n\t\t\t\tconst code = `\n \n\t\t\t\t\t\tvar<private> pos : array<vec2f, 4> = array<vec2f, 4>(\n\t\t\t\t\t\t\t\tvec2(-1.0, 1.0), vec2(1.0, 1.0), vec2(-1.0, -1.0), vec2(1.0, -1.0)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tstruct VertexOutput {\n\t\t\t\t\t\t\t\t@builtin(position) position : vec4f,\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\t@vertex\n\t\t\t\t\t\tfn vertexMain(@builtin(vertex_index) vertexIndex : u32) -> VertexOutput {\n\t\t\t\t\t\t\tvar output : VertexOutput;\n\t\t\t\t\t\t\toutput.position = vec4f(pos[vertexIndex], 0, 1);\n\t\t\t\t\t\t\treturn output;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t@group(0) @binding(0) var img : texture_depth_multisampled_2d;\n\n\t\t\t\t\t\t@fragment\n\t\t\t\t\t\tfn fragmentMain(@builtin(position) fragColor: vec4f) -> @location(0) vec4f {\n\t\t\t\t\t\t\t\t// load th depth value from sample index 0\n\t\t\t\t\t\t\t\tvar depth = textureLoad(img, vec2i(fragColor.xy), 0u);\n\t\t\t\t\t\t\t\treturn vec4f(depth, 0.0, 0.0, 0.0);\n\t\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t\tthis.shader = new Shader(device, {\n\t\t\t\t\t\tname: 'WebGPUResolverDepthShader',\n\t\t\t\t\t\tshaderLanguage: SHADERLANGUAGE_WGSL,\n\t\t\t\t\t\tvshader: code,\n\t\t\t\t\t\tfshader: code\n\t\t\t\t});\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.shader.destroy();\n\t\t\t\tthis.shader = null;\n\t\t\t\tthis.pipelineCache = null;\n\t\t}\n\t\tgetPipeline(format) {\n\t\t\t\tlet pipeline = this.pipelineCache.get(format);\n\t\t\t\tif (!pipeline) {\n\t\t\t\t\t\tpipeline = this.createPipeline(format);\n\t\t\t\t\t\tthis.pipelineCache.set(format, pipeline);\n\t\t\t\t}\n\t\t\t\treturn pipeline;\n\t\t}\n\t\tcreatePipeline(format) {\n\t\t\t\tconst webgpuShader = this.shader.impl;\n\t\t\t\tconst pipeline = this.device.wgpu.createRenderPipeline({\n\t\t\t\t\t\tlayout: 'auto',\n\t\t\t\t\t\tvertex: {\n\t\t\t\t\t\t\t\tmodule: webgpuShader.getVertexShaderModule(),\n\t\t\t\t\t\t\t\tentryPoint: webgpuShader.vertexEntryPoint\n\t\t\t\t\t\t},\n\t\t\t\t\t\tfragment: {\n\t\t\t\t\t\t\t\tmodule: webgpuShader.getFragmentShaderModule(),\n\t\t\t\t\t\t\t\tentryPoint: webgpuShader.fragmentEntryPoint,\n\t\t\t\t\t\t\t\ttargets: [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tformat: format\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\tprimitive: {\n\t\t\t\t\t\t\t\ttopology: 'triangle-strip'\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn pipeline;\n\t\t}\n\t\tresolveDepth(commandEncoder, sourceTexture, destinationTexture) {\n\t\t\t\tconst device = this.device;\n\t\t\t\tconst wgpu = device.wgpu;\n\t\t\t\tconst pipeline = this.getPipeline(destinationTexture.format);\n\t\t\t\tconst numFaces = sourceTexture.depthOrArrayLayers;\n\t\t\t\tfor(let face = 0; face < numFaces; face++){\n\t\t\t\t\t\tconst srcView = sourceTexture.createView({\n\t\t\t\t\t\t\t\tdimension: '2d',\n\t\t\t\t\t\t\t\taspect: 'depth-only',\n\t\t\t\t\t\t\t\tbaseMipLevel: 0,\n\t\t\t\t\t\t\t\tmipLevelCount: 1,\n\t\t\t\t\t\t\t\tbaseArrayLayer: face\n\t\t\t\t\t\t});\n\t\t\t\t\t\tconst dstView = destinationTexture.createView({\n\t\t\t\t\t\t\t\tdimension: '2d',\n\t\t\t\t\t\t\t\tbaseMipLevel: 0,\n\t\t\t\t\t\t\t\tmipLevelCount: 1,\n\t\t\t\t\t\t\t\tbaseArrayLayer: face\n\t\t\t\t\t\t});\n\t\t\t\t\t\tconst passEncoder = commandEncoder.beginRenderPass({\n\t\t\t\t\t\t\t\tcolorAttachments: [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tview: dstView,\n\t\t\t\t\t\t\t\t\t\t\t\tloadOp: 'clear',\n\t\t\t\t\t\t\t\t\t\t\t\tstoreOp: 'store'\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t});\n\t\t\t\t\t\tconst bindGroup = wgpu.createBindGroup({\n\t\t\t\t\t\t\t\tlayout: pipeline.getBindGroupLayout(0),\n\t\t\t\t\t\t\t\tentries: [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tbinding: 0,\n\t\t\t\t\t\t\t\t\t\t\t\tresource: srcView\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t});\n\t\t\t\t\t\tpassEncoder.setPipeline(pipeline);\n\t\t\t\t\t\tpassEncoder.setBindGroup(0, bindGroup);\n\t\t\t\t\t\tpassEncoder.draw(4);\n\t\t\t\t\t\tpassEncoder.end();\n\t\t\t\t}\n\t\t\t\tdevice.pipeline = null;\n\t\t}\n}\n\nclass WebgpuCompute {\n\t\tconstructor(compute){\n\t\t\t\tthis.uniformBuffers = [];\n\t\t\t\tthis.bindGroup = null;\n\t\t\t\tthis.compute = compute;\n\t\t\t\tconst { device, shader } = compute;\n\t\t\t\tconst { computeBindGroupFormat, computeUniformBufferFormats } = shader.impl;\n\t\t\t\tthis.bindGroup = new BindGroup(device, computeBindGroupFormat);\n\t\t\t\tif (computeUniformBufferFormats) {\n\t\t\t\t\t\tfor(const name in computeUniformBufferFormats){\n\t\t\t\t\t\t\t\tif (computeUniformBufferFormats.hasOwnProperty(name)) {\n\t\t\t\t\t\t\t\t\t\tconst ub = new UniformBuffer(device, computeUniformBufferFormats[name], true);\n\t\t\t\t\t\t\t\t\t\tthis.uniformBuffers.push(ub);\n\t\t\t\t\t\t\t\t\t\tthis.bindGroup.setUniformBuffer(name, ub);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.pipeline = device.computePipeline.get(shader, computeBindGroupFormat);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.uniformBuffers.forEach((ub)=>ub.destroy());\n\t\t\t\tthis.uniformBuffers.length = 0;\n\t\t\t\tthis.bindGroup.destroy();\n\t\t\t\tthis.bindGroup = null;\n\t\t}\n\t\tupdateBindGroup() {\n\t\t\t\tconst { bindGroup } = this;\n\t\t\t\tbindGroup.updateUniformBuffers();\n\t\t\t\tbindGroup.update();\n\t\t}\n\t\tdispatch(x, y, z) {\n\t\t\t\tconst device = this.compute.device;\n\t\t\t\tdevice.setBindGroup(0, this.bindGroup);\n\t\t\t\tconst passEncoder = device.passEncoder;\n\t\t\t\tpassEncoder.setPipeline(this.pipeline);\n\t\t\t\tpassEncoder.dispatchWorkgroups(x, y, z);\n\t\t}\n}\n\nlet id$7 = 0;\nclass StorageBuffer {\n\t\tconstructor(graphicsDevice, byteSize, bufferUsage = 0, addStorageUsage = true){\n\t\t\t\tthis.id = id$7++;\n\t\t\t\tthis.device = graphicsDevice;\n\t\t\t\tthis.byteSize = byteSize;\n\t\t\t\tthis.bufferUsage = bufferUsage;\n\t\t\t\tconst usage = addStorageUsage ? BUFFERUSAGE_STORAGE | bufferUsage : bufferUsage;\n\t\t\t\tthis.impl = graphicsDevice.createBufferImpl(usage);\n\t\t\t\tthis.impl.allocate(graphicsDevice, byteSize);\n\t\t\t\tthis.device.buffers.push(this);\n\t\t\t\tthis.adjustVramSizeTracking(graphicsDevice._vram, this.byteSize);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tconst device = this.device;\n\t\t\t\tconst idx = device.buffers.indexOf(this);\n\t\t\t\tif (idx !== -1) {\n\t\t\t\t\t\tdevice.buffers.splice(idx, 1);\n\t\t\t\t}\n\t\t\t\tthis.adjustVramSizeTracking(device._vram, -this.byteSize);\n\t\t\t\tthis.impl.destroy(device);\n\t\t}\n\t\tadjustVramSizeTracking(vram, size) {\n\t\t\t\tvram.sb += size;\n\t\t}\n\t\tread(offset = 0, size = this.byteSize, data = null, immediate = false) {\n\t\t\t\treturn this.impl.read(this.device, offset, size, data, immediate);\n\t\t}\n\t\twrite(bufferOffset = 0, data, dataOffset = 0, size) {\n\t\t\t\tthis.impl.write(this.device, bufferOffset, data, dataOffset, size);\n\t\t}\n\t\tclear(offset = 0, size = this.byteSize) {\n\t\t\t\tthis.impl.clear(this.device, offset, size);\n\t\t}\n\t\tcopy(srcBuffer, srcOffset = 0, dstOffset = 0, size = srcBuffer.byteSize - srcOffset) {\n\t\t\t\tconst commandEncoder = this.device.getCommandEncoder();\n\t\t\t\tcommandEncoder.copyBufferToBuffer(srcBuffer.impl.buffer, srcOffset, this.impl.buffer, dstOffset, size);\n\t\t}\n}\n\nclass WebgpuDrawCommands {\n\t\tconstructor(device){\n\t\t\t\tthis.gpuIndirect = null;\n\t\t\t\tthis.gpuIndirectSigned = null;\n\t\t\t\tthis.storage = null;\n\t\t\t\tthis.device = device;\n\t\t}\n\t\tallocate(maxCount) {\n\t\t\t\tthis.gpuIndirect = new Uint32Array(5 * maxCount);\n\t\t\t\tthis.gpuIndirectSigned = new Int32Array(this.gpuIndirect.buffer);\n\t\t\t\tthis.storage = new StorageBuffer(this.device, this.gpuIndirect.byteLength, BUFFERUSAGE_INDIRECT | BUFFERUSAGE_COPY_DST);\n\t\t}\n\t\tadd(i, indexOrVertexCount, instanceCount, firstIndexOrVertex, baseVertex = 0, firstInstance = 0) {\n\t\t\t\tconst o = i * 5;\n\t\t\t\tthis.gpuIndirect[o + 0] = indexOrVertexCount;\n\t\t\t\tthis.gpuIndirect[o + 1] = instanceCount;\n\t\t\t\tthis.gpuIndirect[o + 2] = firstIndexOrVertex;\n\t\t\t\tthis.gpuIndirectSigned[o + 3] = baseVertex;\n\t\t\t\tthis.gpuIndirect[o + 4] = firstInstance;\n\t\t}\n\t\tupdate(count) {\n\t\t\t\tif (this.storage && count > 0) {\n\t\t\t\t\t\tconst used = count * 5;\n\t\t\t\t\t\tthis.storage.write(0, this.gpuIndirect, 0, used);\n\t\t\t\t}\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.storage?.destroy();\n\t\t\t\tthis.storage = null;\n\t\t}\n}\n\nclass WebgpuUploadStream {\n\t\tconstructor(uploadStream){\n\t\t\t\tthis.availableStagingBuffers = [];\n\t\t\t\tthis.pendingStagingBuffers = [];\n\t\t\t\tthis._destroyed = false;\n\t\t\t\tthis.uploadStream = uploadStream;\n\t\t\t\tthis.useSingleBuffer = uploadStream.useSingleBuffer;\n\t\t}\n\t\t_onDeviceLost() {}\n\t\tdestroy() {\n\t\t\t\tthis._destroyed = true;\n\t\t\t\tthis.availableStagingBuffers.forEach((buffer)=>buffer.destroy());\n\t\t\t\tthis.pendingStagingBuffers.forEach((buffer)=>buffer.destroy());\n\t\t}\n\t\tupdate(minByteSize) {\n\t\t\t\tconst pending = this.pendingStagingBuffers;\n\t\t\t\tfor(let i = 0; i < pending.length; i++){\n\t\t\t\t\t\tconst buffer = pending[i];\n\t\t\t\t\t\tbuffer.mapAsync(GPUMapMode.WRITE).then(()=>{\n\t\t\t\t\t\t\t\tif (!this._destroyed) {\n\t\t\t\t\t\t\t\t\t\tthis.availableStagingBuffers.push(buffer);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tbuffer.destroy();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tpending.length = 0;\n\t\t\t\tconst available = this.availableStagingBuffers;\n\t\t\t\tfor(let i = available.length - 1; i >= 0; i--){\n\t\t\t\t\t\tif (available[i].size < minByteSize) {\n\t\t\t\t\t\t\t\tavailable[i].destroy();\n\t\t\t\t\t\t\t\tavailable.splice(i, 1);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tupload(data, target, offset, size) {\n\t\t\t\tif (this.useSingleBuffer) {\n\t\t\t\t\t\tthis.uploadDirect(data, target, offset, size);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.uploadStaging(data, target, offset, size);\n\t\t\t\t}\n\t\t}\n\t\tuploadDirect(data, target, offset, size) {\n\t\t\t\tconst byteOffset = offset * data.BYTES_PER_ELEMENT;\n\t\t\t\tsize * data.BYTES_PER_ELEMENT;\n\t\t\t\ttarget.write(byteOffset, data, 0, size);\n\t\t}\n\t\tuploadStaging(data, target, offset, size) {\n\t\t\t\tconst device = this.uploadStream.device;\n\t\t\t\tconst byteOffset = offset * data.BYTES_PER_ELEMENT;\n\t\t\t\tconst byteSize = size * data.BYTES_PER_ELEMENT;\n\t\t\t\tthis.update(byteSize);\n\t\t\t\tconst buffer = this.availableStagingBuffers.pop() ?? (()=>{\n\t\t\t\t\t\tconst newBuffer = this.uploadStream.device.wgpu.createBuffer({\n\t\t\t\t\t\t\t\tsize: byteSize,\n\t\t\t\t\t\t\t\tusage: GPUBufferUsage.MAP_WRITE | GPUBufferUsage.COPY_SRC,\n\t\t\t\t\t\t\t\tmappedAtCreation: true\n\t\t\t\t\t\t});\n\t\t\t\t\t\treturn newBuffer;\n\t\t\t\t})();\n\t\t\t\tconst mappedRange = buffer.getMappedRange();\n\t\t\t\tnew Uint8Array(mappedRange).set(new Uint8Array(data.buffer, data.byteOffset, byteSize));\n\t\t\t\tbuffer.unmap();\n\t\t\t\tdevice.getCommandEncoder().copyBufferToBuffer(buffer, 0, target.impl.buffer, byteOffset, byteSize);\n\t\t\t\tthis.pendingStagingBuffers.push(buffer);\n\t\t}\n}\n\nconst _uniqueLocations = new Map();\nconst _indirectEntryByteSize = 5 * 4;\nclass WebgpuGraphicsDevice extends GraphicsDevice {\n\t\tconstructor(canvas, options = {}){\n\t\t\t\tsuper(canvas, options), this.renderPipeline = new WebgpuRenderPipeline(this), this.computePipeline = new WebgpuComputePipeline(this), this._indirectDrawBuffer = null, this._indirectDrawBufferCount = 0, this._indirectDrawNextIndex = 0, this.pipeline = null, this.bindGroupFormats = [], this.commandEncoder = null, this.commandBuffers = [], this.glslang = null, this.twgsl = null;\n\t\t\t\toptions = this.initOptions;\n\t\t\t\toptions.alpha = options.alpha ?? true;\n\t\t\t\tthis.backBufferAntialias = options.antialias ?? false;\n\t\t\t\tthis.isWebGPU = true;\n\t\t\t\tthis._deviceType = DEVICETYPE_WEBGPU;\n\t\t\t\tthis.scope.resolve(UNUSED_UNIFORM_NAME).setValue(0);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.clearRenderer.destroy();\n\t\t\t\tthis.clearRenderer = null;\n\t\t\t\tthis.mipmapRenderer.destroy();\n\t\t\t\tthis.mipmapRenderer = null;\n\t\t\t\tthis.resolver.destroy();\n\t\t\t\tthis.resolver = null;\n\t\t\t\tsuper.destroy();\n\t\t}\n\t\tinitDeviceCaps() {\n\t\t\t\tconst limits = this.wgpu?.limits;\n\t\t\t\tthis.limits = limits;\n\t\t\t\tthis.precision = 'highp';\n\t\t\t\tthis.maxPrecision = 'highp';\n\t\t\t\tthis.maxSamples = 4;\n\t\t\t\tthis.maxTextures = 16;\n\t\t\t\tthis.maxTextureSize = limits.maxTextureDimension2D;\n\t\t\t\tthis.maxCubeMapSize = limits.maxTextureDimension2D;\n\t\t\t\tthis.maxVolumeSize = limits.maxTextureDimension3D;\n\t\t\t\tthis.maxColorAttachments = limits.maxColorAttachments;\n\t\t\t\tthis.maxPixelRatio = 1;\n\t\t\t\tthis.maxAnisotropy = 16;\n\t\t\t\tthis.fragmentUniformsCount = limits.maxUniformBufferBindingSize / 16;\n\t\t\t\tthis.vertexUniformsCount = limits.maxUniformBufferBindingSize / 16;\n\t\t\t\tthis.supportsUniformBuffers = true;\n\t\t\t\tthis.supportsAreaLights = true;\n\t\t\t\tthis.supportsGpuParticles = true;\n\t\t\t\tthis.supportsCompute = true;\n\t\t\t\tthis.textureFloatRenderable = true;\n\t\t\t\tthis.textureHalfFloatRenderable = true;\n\t\t\t\tthis.supportsImageBitmap = true;\n\t\t\t\tthis.samples = this.backBufferAntialias ? 4 : 1;\n\t\t\t\tconst wgslFeatures = window.navigator.gpu.wgslLanguageFeatures;\n\t\t\t\tthis.supportsStorageTextureRead = wgslFeatures?.has('readonly_and_readwrite_storage_textures');\n\t\t\t\tthis.initCapsDefines();\n\t\t}\n\t\tasync initWebGpu(glslangUrl, twgslUrl) {\n\t\t\t\tif (!window.navigator.gpu) {\n\t\t\t\t\t\tthrow new Error('Unable to retrieve GPU. Ensure you are using a browser that supports WebGPU rendering.');\n\t\t\t\t}\n\t\t\t\tif (glslangUrl && twgslUrl) {\n\t\t\t\t\t\tconst buildUrl = (srcPath)=>{\n\t\t\t\t\t\t\t\treturn new URL(srcPath, window.location.href).toString();\n\t\t\t\t\t\t};\n\t\t\t\t\t\tconst results = await Promise.all([\n\t\t\t\t\t\t\t\timport(/* @vite-ignore */ /* webpackIgnore: true */ `${buildUrl(twgslUrl)}`).then((module)=>twgsl(twgslUrl.replace('.js', '.wasm'))),\n\t\t\t\t\t\t\t\timport(/* @vite-ignore */ /* webpackIgnore: true */ `${buildUrl(glslangUrl)}`).then((module)=>module.default())\n\t\t\t\t\t\t]);\n\t\t\t\t\t\tthis.twgsl = results[0];\n\t\t\t\t\t\tthis.glslang = results[1];\n\t\t\t\t}\n\t\t\t\treturn this.createDevice();\n\t\t}\n\t\tasync createDevice() {\n\t\t\t\tconst adapterOptions = {\n\t\t\t\t\t\tpowerPreference: this.initOptions.powerPreference !== 'default' ? this.initOptions.powerPreference : undefined,\n\t\t\t\t\t\txrCompatible: this.initOptions.xrCompatible\n\t\t\t\t};\n\t\t\t\tthis.gpuAdapter = await window.navigator.gpu.requestAdapter(adapterOptions);\n\t\t\t\tconst requiredFeatures = [];\n\t\t\t\tconst requireFeature = (feature)=>{\n\t\t\t\t\t\tconst supported = this.gpuAdapter.features.has(feature);\n\t\t\t\t\t\tif (supported) {\n\t\t\t\t\t\t\t\trequiredFeatures.push(feature);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn supported;\n\t\t\t\t};\n\t\t\t\tthis.textureFloatFilterable = requireFeature('float32-filterable');\n\t\t\t\tthis.textureFloatBlendable = requireFeature('float32-blendable');\n\t\t\t\tthis.extCompressedTextureS3TC = requireFeature('texture-compression-bc');\n\t\t\t\tthis.extCompressedTextureS3TCSliced3D = requireFeature('texture-compression-bc-sliced-3d');\n\t\t\t\tthis.extCompressedTextureETC = requireFeature('texture-compression-etc2');\n\t\t\t\tthis.extCompressedTextureASTC = requireFeature('texture-compression-astc');\n\t\t\t\tthis.extCompressedTextureASTCSliced3D = requireFeature('texture-compression-astc-sliced-3d');\n\t\t\t\tthis.supportsTimestampQuery = requireFeature('timestamp-query');\n\t\t\t\tthis.supportsDepthClip = requireFeature('depth-clip-control');\n\t\t\t\tthis.supportsDepth32Stencil = requireFeature('depth32float-stencil8');\n\t\t\t\tthis.supportsIndirectFirstInstance = requireFeature('indirect-first-instance');\n\t\t\t\tthis.supportsShaderF16 = requireFeature('shader-f16');\n\t\t\t\tthis.supportsStorageRGBA8 = requireFeature('bgra8unorm-storage');\n\t\t\t\tthis.textureRG11B10Renderable = requireFeature('rg11b10ufloat-renderable');\n\t\t\t\tthis.supportsClipDistances = requireFeature('clip-distances');\n\t\t\t\tconst adapterLimits = this.gpuAdapter?.limits;\n\t\t\t\tconst requiredLimits = {};\n\t\t\t\tif (adapterLimits) {\n\t\t\t\t\t\tfor(const limitName in adapterLimits){\n\t\t\t\t\t\t\t\tif (limitName === 'minSubgroupSize' || limitName === 'maxSubgroupSize') {\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\trequiredLimits[limitName] = adapterLimits[limitName];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst deviceDescr = {\n\t\t\t\t\t\trequiredFeatures,\n\t\t\t\t\t\trequiredLimits,\n\t\t\t\t\t\tdefaultQueue: {\n\t\t\t\t\t\t\t\tlabel: 'Default Queue'\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tthis.wgpu = await this.gpuAdapter.requestDevice(deviceDescr);\n\t\t\t\tthis.wgpu.lost?.then(this.handleDeviceLost.bind(this));\n\t\t\t\tthis.initDeviceCaps();\n\t\t\t\tthis.gpuContext = this.canvas.getContext('webgpu');\n\t\t\t\tlet canvasToneMapping = 'standard';\n\t\t\t\tlet preferredCanvasFormat = window.navigator.gpu.getPreferredCanvasFormat();\n\t\t\t\tconst displayFormat = this.initOptions.displayFormat;\n\t\t\t\tthis.backBufferFormat = preferredCanvasFormat === 'rgba8unorm' ? displayFormat === DISPLAYFORMAT_LDR_SRGB ? PIXELFORMAT_SRGBA8 : PIXELFORMAT_RGBA8 : displayFormat === DISPLAYFORMAT_LDR_SRGB ? PIXELFORMAT_SBGRA8 : PIXELFORMAT_BGRA8;\n\t\t\t\tthis.backBufferViewFormat = displayFormat === DISPLAYFORMAT_LDR_SRGB ? `${preferredCanvasFormat}-srgb` : preferredCanvasFormat;\n\t\t\t\tif (displayFormat === DISPLAYFORMAT_HDR && this.textureFloatFilterable) {\n\t\t\t\t\t\tconst hdrMediaQuery = window.matchMedia('(dynamic-range: high)');\n\t\t\t\t\t\tif (hdrMediaQuery?.matches) {\n\t\t\t\t\t\t\t\tthis.backBufferFormat = PIXELFORMAT_RGBA16F;\n\t\t\t\t\t\t\t\tthis.backBufferViewFormat = 'rgba16float';\n\t\t\t\t\t\t\t\tpreferredCanvasFormat = 'rgba16float';\n\t\t\t\t\t\t\t\tthis.isHdr = true;\n\t\t\t\t\t\t\t\tcanvasToneMapping = 'extended';\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.canvasConfig = {\n\t\t\t\t\t\tdevice: this.wgpu,\n\t\t\t\t\t\tcolorSpace: 'srgb',\n\t\t\t\t\t\talphaMode: this.initOptions.alpha ? 'premultiplied' : 'opaque',\n\t\t\t\t\t\tformat: preferredCanvasFormat,\n\t\t\t\t\t\ttoneMapping: {\n\t\t\t\t\t\t\t\tmode: canvasToneMapping\n\t\t\t\t\t\t},\n\t\t\t\t\t\tusage: GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.COPY_SRC | GPUTextureUsage.COPY_DST,\n\t\t\t\t\t\tviewFormats: displayFormat === DISPLAYFORMAT_LDR_SRGB ? [\n\t\t\t\t\t\t\t\tthis.backBufferViewFormat\n\t\t\t\t\t\t] : []\n\t\t\t\t};\n\t\t\t\tthis.gpuContext?.configure(this.canvasConfig);\n\t\t\t\tthis.createBackbuffer();\n\t\t\t\tthis.clearRenderer = new WebgpuClearRenderer(this);\n\t\t\t\tthis.mipmapRenderer = new WebgpuMipmapRenderer(this);\n\t\t\t\tthis.resolver = new WebgpuResolver(this);\n\t\t\t\tthis.postInit();\n\t\t\t\treturn this;\n\t\t}\n\t\tasync handleDeviceLost(info) {\n\t\t\t\tif (info.reason !== 'destroyed') {\n\t\t\t\t\t\tsuper.loseContext();\n\t\t\t\t\t\tawait this.createDevice();\n\t\t\t\t\t\tsuper.restoreContext();\n\t\t\t\t}\n\t\t}\n\t\tpostInit() {\n\t\t\t\tsuper.postInit();\n\t\t\t\tthis.initializeRenderState();\n\t\t\t\tthis.setupPassEncoderDefaults();\n\t\t\t\tthis.gpuProfiler = new WebgpuGpuProfiler(this);\n\t\t\t\tthis.dynamicBuffers = new WebgpuDynamicBuffers(this, 100 * 1024, this.limits.minUniformBufferOffsetAlignment);\n\t\t\t\tthis.emptyBindGroup = new BindGroup(this, new BindGroupFormat(this, []));\n\t\t\t\tthis.emptyBindGroup.update();\n\t\t}\n\t\tcreateBackbuffer() {\n\t\t\t\tthis.supportsStencil = this.initOptions.stencil;\n\t\t\t\tthis.backBuffer = new RenderTarget({\n\t\t\t\t\t\tname: 'WebgpuFramebuffer',\n\t\t\t\t\t\tgraphicsDevice: this,\n\t\t\t\t\t\tdepth: this.initOptions.depth,\n\t\t\t\t\t\tstencil: this.supportsStencil,\n\t\t\t\t\t\tsamples: this.samples\n\t\t\t\t});\n\t\t\t\tthis.backBuffer.impl.isBackbuffer = true;\n\t\t}\n\t\tframeStart() {\n\t\t\t\tsuper.frameStart();\n\t\t\t\tthis.gpuProfiler.frameStart();\n\t\t\t\tthis.submit();\n\t\t\t\tconst outColorBuffer = this.gpuContext?.getCurrentTexture?.() ?? this.externalBackbuffer?.impl.gpuTexture;\n\t\t\t\tif (this.backBufferSize.x !== outColorBuffer.width || this.backBufferSize.y !== outColorBuffer.height) {\n\t\t\t\t\t\tthis.backBufferSize.set(outColorBuffer.width, outColorBuffer.height);\n\t\t\t\t\t\tthis.backBuffer.destroy();\n\t\t\t\t\t\tthis.backBuffer = null;\n\t\t\t\t\t\tthis.createBackbuffer();\n\t\t\t\t}\n\t\t\t\tconst rt = this.backBuffer;\n\t\t\t\tconst wrt = rt.impl;\n\t\t\t\twrt.setColorAttachment(0, undefined, this.backBufferViewFormat);\n\t\t\t\tthis.initRenderTarget(rt);\n\t\t\t\twrt.assignColorTexture(this, outColorBuffer);\n\t\t}\n\t\tframeEnd() {\n\t\t\t\tsuper.frameEnd();\n\t\t\t\tthis.gpuProfiler.frameEnd();\n\t\t\t\tthis.submit();\n\t\t\t\tif (!this.contextLost) {\n\t\t\t\t\t\tthis.gpuProfiler.request();\n\t\t\t\t}\n\t\t\t\tthis._indirectDrawNextIndex = 0;\n\t\t}\n\t\tcreateBufferImpl(usageFlags) {\n\t\t\t\treturn new WebgpuBuffer(usageFlags);\n\t\t}\n\t\tcreateUniformBufferImpl(uniformBuffer) {\n\t\t\t\treturn new WebgpuUniformBuffer(uniformBuffer);\n\t\t}\n\t\tcreateVertexBufferImpl(vertexBuffer, format, options) {\n\t\t\t\treturn new WebgpuVertexBuffer(vertexBuffer, format, options);\n\t\t}\n\t\tcreateIndexBufferImpl(indexBuffer, options) {\n\t\t\t\treturn new WebgpuIndexBuffer(indexBuffer, options);\n\t\t}\n\t\tcreateShaderImpl(shader) {\n\t\t\t\treturn new WebgpuShader(shader);\n\t\t}\n\t\tcreateDrawCommandImpl(drawCommands) {\n\t\t\t\treturn new WebgpuDrawCommands(this);\n\t\t}\n\t\tcreateTextureImpl(texture) {\n\t\t\t\treturn new WebgpuTexture(texture);\n\t\t}\n\t\tcreateRenderTargetImpl(renderTarget) {\n\t\t\t\treturn new WebgpuRenderTarget(renderTarget);\n\t\t}\n\t\tcreateUploadStreamImpl(uploadStream) {\n\t\t\t\treturn new WebgpuUploadStream(uploadStream);\n\t\t}\n\t\tcreateBindGroupFormatImpl(bindGroupFormat) {\n\t\t\t\treturn new WebgpuBindGroupFormat(bindGroupFormat);\n\t\t}\n\t\tcreateBindGroupImpl(bindGroup) {\n\t\t\t\treturn new WebgpuBindGroup();\n\t\t}\n\t\tcreateComputeImpl(compute) {\n\t\t\t\treturn new WebgpuCompute(compute);\n\t\t}\n\t\tget indirectDrawBuffer() {\n\t\t\t\tthis.allocateIndirectDrawBuffer();\n\t\t\t\treturn this._indirectDrawBuffer;\n\t\t}\n\t\tallocateIndirectDrawBuffer() {\n\t\t\t\tif (this._indirectDrawNextIndex === 0 && this._indirectDrawBufferCount < this.maxIndirectDrawCount) {\n\t\t\t\t\t\tthis._indirectDrawBuffer?.destroy();\n\t\t\t\t\t\tthis._indirectDrawBuffer = null;\n\t\t\t\t}\n\t\t\t\tif (this._indirectDrawBuffer === null) {\n\t\t\t\t\t\tthis._indirectDrawBuffer = new StorageBuffer(this, this.maxIndirectDrawCount * _indirectEntryByteSize, BUFFERUSAGE_INDIRECT | BUFFERUSAGE_COPY_DST);\n\t\t\t\t\t\tthis._indirectDrawBufferCount = this.maxIndirectDrawCount;\n\t\t\t\t}\n\t\t}\n\t\tgetIndirectDrawSlot(count = 1) {\n\t\t\t\tthis.allocateIndirectDrawBuffer();\n\t\t\t\tconst slot = this._indirectDrawNextIndex;\n\t\t\t\tconst nextIndex = this._indirectDrawNextIndex + count;\n\t\t\t\tthis._indirectDrawNextIndex = nextIndex;\n\t\t\t\treturn slot;\n\t\t}\n\t\tsetBindGroup(index, bindGroup, offsets) {\n\t\t\t\tif (this.passEncoder) {\n\t\t\t\t\t\tthis.passEncoder.setBindGroup(index, bindGroup.impl.bindGroup, offsets ?? bindGroup.uniformBufferOffsets);\n\t\t\t\t\t\tthis.bindGroupFormats[index] = bindGroup.format.impl;\n\t\t\t\t}\n\t\t}\n\t\tsubmitVertexBuffer(vertexBuffer, slot) {\n\t\t\t\tconst format = vertexBuffer.format;\n\t\t\t\tconst { interleaved, elements } = format;\n\t\t\t\tconst elementCount = elements.length;\n\t\t\t\tconst vbBuffer = vertexBuffer.impl.buffer;\n\t\t\t\tif (interleaved) {\n\t\t\t\t\t\tthis.passEncoder.setVertexBuffer(slot, vbBuffer);\n\t\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < elementCount; i++){\n\t\t\t\t\t\tthis.passEncoder.setVertexBuffer(slot + i, vbBuffer, elements[i].offset);\n\t\t\t\t}\n\t\t\t\treturn elementCount;\n\t\t}\n\t\tvalidateVBLocations(vb0, vb1) {\n\t\t\t\tconst validateVB = (vb)=>{\n\t\t\t\t\t\tconst { elements } = vb.format;\n\t\t\t\t\t\tfor(let i = 0; i < elements.length; i++){\n\t\t\t\t\t\t\t\tconst name = elements[i].name;\n\t\t\t\t\t\t\t\tconst location = semanticToLocation[name];\n\t\t\t\t\t\t\t\tif (_uniqueLocations.has(location)) ;\n\t\t\t\t\t\t\t\t_uniqueLocations.set(location, name);\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tvalidateVB(vb0);\n\t\t\t\tvalidateVB(vb1);\n\t\t\t\t_uniqueLocations.clear();\n\t\t}\n\t\tdraw(primitive, indexBuffer, numInstances = 1, drawCommands, first = true, last = true) {\n\t\t\t\tif (this.shader.ready && !this.shader.failed) {\n\t\t\t\t\t\tconst passEncoder = this.passEncoder;\n\t\t\t\t\t\tlet pipeline = this.pipeline;\n\t\t\t\t\t\tconst vb0 = this.vertexBuffers[0];\n\t\t\t\t\t\tconst vb1 = this.vertexBuffers[1];\n\t\t\t\t\t\tif (first) {\n\t\t\t\t\t\t\t\tif (vb0) {\n\t\t\t\t\t\t\t\t\t\tconst vbSlot = this.submitVertexBuffer(vb0, 0);\n\t\t\t\t\t\t\t\t\t\tif (vb1) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.submitVertexBuffer(vb1, vbSlot);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tpipeline = this.renderPipeline.get(primitive, vb0?.format, vb1?.format, indexBuffer?.format, this.shader, this.renderTarget, this.bindGroupFormats, this.blendState, this.depthState, this.cullMode, this.stencilEnabled, this.stencilFront, this.stencilBack);\n\t\t\t\t\t\t\t\tif (this.pipeline !== pipeline) {\n\t\t\t\t\t\t\t\t\t\tthis.pipeline = pipeline;\n\t\t\t\t\t\t\t\t\t\tpassEncoder.setPipeline(pipeline);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (indexBuffer) {\n\t\t\t\t\t\t\t\tpassEncoder.setIndexBuffer(indexBuffer.impl.buffer, indexBuffer.impl.format);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (drawCommands) {\n\t\t\t\t\t\t\t\tconst storage = drawCommands.impl?.storage ?? this.indirectDrawBuffer;\n\t\t\t\t\t\t\t\tconst indirectBuffer = storage.impl.buffer;\n\t\t\t\t\t\t\t\tconst drawsCount = drawCommands.count;\n\t\t\t\t\t\t\t\tfor(let d = 0; d < drawsCount; d++){\n\t\t\t\t\t\t\t\t\t\tconst indirectOffset = (drawCommands.slotIndex + d) * _indirectEntryByteSize;\n\t\t\t\t\t\t\t\t\t\tif (indexBuffer) {\n\t\t\t\t\t\t\t\t\t\t\t\tpassEncoder.drawIndexedIndirect(indirectBuffer, indirectOffset);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tpassEncoder.drawIndirect(indirectBuffer, indirectOffset);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (indexBuffer) {\n\t\t\t\t\t\t\t\t\t\tpassEncoder.drawIndexed(primitive.count, numInstances, primitive.base, primitive.baseVertex ?? 0, 0);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tpassEncoder.draw(primitive.count, numInstances, primitive.base, 0);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (last) {\n\t\t\t\t\t\tthis.clearVertexBuffer();\n\t\t\t\t\t\tthis.pipeline = null;\n\t\t\t\t}\n\t\t}\n\t\tsetShader(shader, asyncCompile = false) {\n\t\t\t\tif (shader !== this.shader) {\n\t\t\t\t\t\tthis.shader = shader;\n\t\t\t\t}\n\t\t}\n\t\tsetBlendState(blendState) {\n\t\t\t\tthis.blendState.copy(blendState);\n\t\t}\n\t\tsetDepthState(depthState) {\n\t\t\t\tthis.depthState.copy(depthState);\n\t\t}\n\t\tsetStencilState(stencilFront, stencilBack) {\n\t\t\t\tif (stencilFront || stencilBack) {\n\t\t\t\t\t\tthis.stencilEnabled = true;\n\t\t\t\t\t\tthis.stencilFront.copy(stencilFront ?? StencilParameters.DEFAULT);\n\t\t\t\t\t\tthis.stencilBack.copy(stencilBack ?? StencilParameters.DEFAULT);\n\t\t\t\t\t\tconst ref = this.stencilFront.ref;\n\t\t\t\t\t\tif (this.stencilRef !== ref) {\n\t\t\t\t\t\t\t\tthis.stencilRef = ref;\n\t\t\t\t\t\t\t\tthis.passEncoder.setStencilReference(ref);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.stencilEnabled = false;\n\t\t\t\t}\n\t\t}\n\t\tsetBlendColor(r, g, b, a) {\n\t\t\t\tconst c = this.blendColor;\n\t\t\t\tif (r !== c.r || g !== c.g || b !== c.b || a !== c.a) {\n\t\t\t\t\t\tc.set(r, g, b, a);\n\t\t\t\t\t\tthis.passEncoder.setBlendConstant(c);\n\t\t\t\t}\n\t\t}\n\t\tsetCullMode(cullMode) {\n\t\t\t\tthis.cullMode = cullMode;\n\t\t}\n\t\tsetAlphaToCoverage(state) {}\n\t\tinitializeContextCaches() {\n\t\t\t\tsuper.initializeContextCaches();\n\t\t}\n\t\tsetupPassEncoderDefaults() {\n\t\t\t\tthis.pipeline = null;\n\t\t\t\tthis.stencilRef = 0;\n\t\t\t\tthis.blendColor.set(0, 0, 0, 0);\n\t\t}\n\t\t_uploadDirtyTextures() {\n\t\t\t\tthis.textures.forEach((texture)=>{\n\t\t\t\t\t\tif (texture._needsUpload || texture._needsMipmaps) {\n\t\t\t\t\t\t\t\ttexture.upload();\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\tsetupTimeStampWrites(passDesc, name) {\n\t\t\t\tif (this.gpuProfiler._enabled) {\n\t\t\t\t\t\tif (this.gpuProfiler.timestampQueriesSet) {\n\t\t\t\t\t\t\t\tconst slot = this.gpuProfiler.getSlot(name);\n\t\t\t\t\t\t\t\tif (slot === -1) ; else {\n\t\t\t\t\t\t\t\t\t\tpassDesc = passDesc ?? {};\n\t\t\t\t\t\t\t\t\t\tpassDesc.timestampWrites = {\n\t\t\t\t\t\t\t\t\t\t\t\tquerySet: this.gpuProfiler.timestampQueriesSet.querySet,\n\t\t\t\t\t\t\t\t\t\t\t\tbeginningOfPassWriteIndex: slot * 2,\n\t\t\t\t\t\t\t\t\t\t\t\tendOfPassWriteIndex: slot * 2 + 1\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn passDesc;\n\t\t}\n\t\tstartRenderPass(renderPass) {\n\t\t\t\tthis._uploadDirtyTextures();\n\t\t\t\tconst rt = renderPass.renderTarget || this.backBuffer;\n\t\t\t\tthis.renderTarget = rt;\n\t\t\t\tconst wrt = rt.impl;\n\t\t\t\tif (rt !== this.backBuffer) {\n\t\t\t\t\t\tthis.initRenderTarget(rt);\n\t\t\t\t}\n\t\t\t\twrt.setupForRenderPass(renderPass, rt);\n\t\t\t\tconst renderPassDesc = wrt.renderPassDescriptor;\n\t\t\t\tthis.setupTimeStampWrites(renderPassDesc, renderPass.name);\n\t\t\t\tconst commandEncoder = this.getCommandEncoder();\n\t\t\t\tthis.passEncoder = commandEncoder.beginRenderPass(renderPassDesc);\n\t\t\t\tthis.passEncoder.label = `${renderPass.name}-PassEncoder RT:${rt.name}`;\n\t\t\t\tthis.setupPassEncoderDefaults();\n\t\t\t\tconst { width, height } = rt;\n\t\t\t\tthis.setViewport(0, 0, width, height);\n\t\t\t\tthis.setScissor(0, 0, width, height);\n\t\t\t\tthis.insideRenderPass = true;\n\t\t}\n\t\tendRenderPass(renderPass) {\n\t\t\t\tthis.passEncoder.end();\n\t\t\t\tthis.passEncoder = null;\n\t\t\t\tthis.insideRenderPass = false;\n\t\t\t\tthis.bindGroupFormats.length = 0;\n\t\t\t\tconst target = this.renderTarget;\n\t\t\t\tif (target) {\n\t\t\t\t\t\tif (target.depthBuffer && renderPass.depthStencilOps.resolveDepth) {\n\t\t\t\t\t\t\t\tif (renderPass.samples > 1 && target.autoResolve) {\n\t\t\t\t\t\t\t\t\t\tconst depthAttachment = target.impl.depthAttachment;\n\t\t\t\t\t\t\t\t\t\tconst destTexture = target.depthBuffer.impl.gpuTexture;\n\t\t\t\t\t\t\t\t\t\tif (depthAttachment && destTexture) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.resolver.resolveDepth(this.commandEncoder, depthAttachment.multisampledDepthBuffer, destTexture);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < renderPass.colorArrayOps.length; i++){\n\t\t\t\t\t\tconst colorOps = renderPass.colorArrayOps[i];\n\t\t\t\t\t\tif (colorOps.genMipmaps) {\n\t\t\t\t\t\t\t\tthis.mipmapRenderer.generate(renderPass.renderTarget._colorBuffers[i].impl);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tstartComputePass(name) {\n\t\t\t\tthis.pipeline = null;\n\t\t\t\tconst computePassDesc = this.setupTimeStampWrites(undefined, name);\n\t\t\t\tconst commandEncoder = this.getCommandEncoder();\n\t\t\t\tthis.passEncoder = commandEncoder.beginComputePass(computePassDesc);\n\t\t\t\tthis.insideRenderPass = true;\n\t\t}\n\t\tendComputePass() {\n\t\t\t\tthis.passEncoder.end();\n\t\t\t\tthis.passEncoder = null;\n\t\t\t\tthis.insideRenderPass = false;\n\t\t\t\tthis.bindGroupFormats.length = 0;\n\t\t}\n\t\tcomputeDispatch(computes, name = 'Unnamed') {\n\t\t\t\tthis.startComputePass(name);\n\t\t\t\tfor(let i = 0; i < computes.length; i++){\n\t\t\t\t\t\tconst compute = computes[i];\n\t\t\t\t\t\tcompute.applyParameters();\n\t\t\t\t\t\tcompute.impl.updateBindGroup();\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < computes.length; i++){\n\t\t\t\t\t\tconst compute = computes[i];\n\t\t\t\t\t\tcompute.impl.dispatch(compute.countX, compute.countY, compute.countZ);\n\t\t\t\t}\n\t\t\t\tthis.endComputePass();\n\t\t}\n\t\tgetCommandEncoder() {\n\t\t\t\tlet commandEncoder = this.commandEncoder;\n\t\t\t\tif (!commandEncoder) {\n\t\t\t\t\t\tcommandEncoder = this.wgpu.createCommandEncoder();\n\t\t\t\t\t\tthis.commandEncoder = commandEncoder;\n\t\t\t\t}\n\t\t\t\treturn commandEncoder;\n\t\t}\n\t\tendCommandEncoder() {\n\t\t\t\tconst { commandEncoder } = this;\n\t\t\t\tif (commandEncoder) {\n\t\t\t\t\t\tconst cb = commandEncoder.finish();\n\t\t\t\t\t\tthis.addCommandBuffer(cb);\n\t\t\t\t\t\tthis.commandEncoder = null;\n\t\t\t\t}\n\t\t}\n\t\taddCommandBuffer(commandBuffer, front = false) {\n\t\t\t\tif (front) {\n\t\t\t\t\t\tthis.commandBuffers.unshift(commandBuffer);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.commandBuffers.push(commandBuffer);\n\t\t\t\t}\n\t\t}\n\t\tsubmit() {\n\t\t\t\tthis.endCommandEncoder();\n\t\t\t\tif (this.commandBuffers.length > 0) {\n\t\t\t\t\t\tthis.dynamicBuffers.submit();\n\t\t\t\t\t\tthis.wgpu.queue.submit(this.commandBuffers);\n\t\t\t\t\t\tthis.commandBuffers.length = 0;\n\t\t\t\t\t\tthis.dynamicBuffers.onCommandBuffersSubmitted();\n\t\t\t\t}\n\t\t}\n\t\tclear(options) {\n\t\t\t\tif (options.flags) {\n\t\t\t\t\t\tthis.clearRenderer.clear(this, this.renderTarget, options, this.defaultClearOptions);\n\t\t\t\t}\n\t\t}\n\t\tsetViewport(x, y, w, h) {\n\t\t\t\tif (this.passEncoder) {\n\t\t\t\t\t\tif (!this.renderTarget.flipY) {\n\t\t\t\t\t\t\t\ty = this.renderTarget.height - y - h;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.vx = x;\n\t\t\t\t\t\tthis.vy = y;\n\t\t\t\t\t\tthis.vw = w;\n\t\t\t\t\t\tthis.vh = h;\n\t\t\t\t\t\tthis.passEncoder.setViewport(x, y, w, h, 0, 1);\n\t\t\t\t}\n\t\t}\n\t\tsetScissor(x, y, w, h) {\n\t\t\t\tif (this.passEncoder) {\n\t\t\t\t\t\tif (!this.renderTarget.flipY) {\n\t\t\t\t\t\t\t\ty = this.renderTarget.height - y - h;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.sx = x;\n\t\t\t\t\t\tthis.sy = y;\n\t\t\t\t\t\tthis.sw = w;\n\t\t\t\t\t\tthis.sh = h;\n\t\t\t\t\t\tthis.passEncoder.setScissorRect(x, y, w, h);\n\t\t\t\t}\n\t\t}\n\t\tclearStorageBuffer(storageBuffer, offset = 0, size = storageBuffer.byteSize) {\n\t\t\t\tconst commandEncoder = this.getCommandEncoder();\n\t\t\t\tcommandEncoder.clearBuffer(storageBuffer.buffer, offset, size);\n\t\t}\n\t\treadStorageBuffer(storageBuffer, offset = 0, size = storageBuffer.byteSize - offset, data = null, immediate = false) {\n\t\t\t\tconst stagingBuffer = this.createBufferImpl(BUFFERUSAGE_READ | BUFFERUSAGE_COPY_DST);\n\t\t\t\tstagingBuffer.allocate(this, size);\n\t\t\t\tconst destBuffer = stagingBuffer.buffer;\n\t\t\t\tconst commandEncoder = this.getCommandEncoder();\n\t\t\t\tcommandEncoder.copyBufferToBuffer(storageBuffer.buffer, offset, destBuffer, 0, size);\n\t\t\t\treturn this.readBuffer(stagingBuffer, size, data, immediate);\n\t\t}\n\t\treadBuffer(stagingBuffer, size, data = null, immediate = false) {\n\t\t\t\tconst destBuffer = stagingBuffer.buffer;\n\t\t\t\treturn new Promise((resolve, reject)=>{\n\t\t\t\t\t\tconst read = ()=>{\n\t\t\t\t\t\t\t\tdestBuffer?.mapAsync(GPUMapMode.READ).then(()=>{\n\t\t\t\t\t\t\t\t\t\tdata ??= new Uint8Array(size);\n\t\t\t\t\t\t\t\t\t\tconst copySrc = destBuffer.getMappedRange(0, size);\n\t\t\t\t\t\t\t\t\t\tconst srcType = data.constructor;\n\t\t\t\t\t\t\t\t\t\tdata.set(new srcType(copySrc));\n\t\t\t\t\t\t\t\t\t\tdestBuffer.unmap();\n\t\t\t\t\t\t\t\t\t\tstagingBuffer.destroy(this);\n\t\t\t\t\t\t\t\t\t\tresolve(data);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (immediate) {\n\t\t\t\t\t\t\t\tthis.submit();\n\t\t\t\t\t\t\t\tread();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tsetTimeout(()=>{\n\t\t\t\t\t\t\t\t\t\tread();\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\twriteStorageBuffer(storageBuffer, bufferOffset = 0, data, dataOffset = 0, size) {\n\t\t\t\tthis.wgpu.queue.writeBuffer(storageBuffer.buffer, bufferOffset, data, dataOffset, size);\n\t\t}\n\t\tcopyRenderTarget(source, dest, color, depth) {\n\t\t\t\tconst copySize = {\n\t\t\t\t\t\twidth: source ? source.width : dest.width,\n\t\t\t\t\t\theight: source ? source.height : dest.height,\n\t\t\t\t\t\tdepthOrArrayLayers: 1\n\t\t\t\t};\n\t\t\t\tconst commandEncoder = this.getCommandEncoder();\n\t\t\t\tif (color) {\n\t\t\t\t\t\tconst copySrc = {\n\t\t\t\t\t\t\t\ttexture: source ? source.colorBuffer.impl.gpuTexture : this.backBuffer.impl.assignedColorTexture,\n\t\t\t\t\t\t\t\tmipLevel: 0\n\t\t\t\t\t\t};\n\t\t\t\t\t\tconst copyDst = {\n\t\t\t\t\t\t\t\ttexture: dest ? dest.colorBuffer.impl.gpuTexture : this.backBuffer.impl.assignedColorTexture,\n\t\t\t\t\t\t\t\tmipLevel: 0\n\t\t\t\t\t\t};\n\t\t\t\t\t\tcommandEncoder.copyTextureToTexture(copySrc, copyDst, copySize);\n\t\t\t\t}\n\t\t\t\tif (depth) {\n\t\t\t\t\t\tconst sourceRT = source ? source : this.renderTarget;\n\t\t\t\t\t\tconst sourceTexture = sourceRT.impl.depthAttachment.depthTexture;\n\t\t\t\t\t\tif (source.samples > 1) {\n\t\t\t\t\t\t\t\tconst destTexture = dest.colorBuffer.impl.gpuTexture;\n\t\t\t\t\t\t\t\tthis.resolver.resolveDepth(commandEncoder, sourceTexture, destTexture);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst destTexture = dest ? dest.depthBuffer.impl.gpuTexture : this.renderTarget.impl.depthAttachment.depthTexture;\n\t\t\t\t\t\t\t\tconst copySrc = {\n\t\t\t\t\t\t\t\t\t\ttexture: sourceTexture,\n\t\t\t\t\t\t\t\t\t\tmipLevel: 0\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tconst copyDst = {\n\t\t\t\t\t\t\t\t\t\ttexture: destTexture,\n\t\t\t\t\t\t\t\t\t\tmipLevel: 0\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tcommandEncoder.copyTextureToTexture(copySrc, copyDst, copySize);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t}\n}\n\nclass WebglBuffer {\n\t\tdestroy(device) {\n\t\t\t\tif (this.bufferId) {\n\t\t\t\t\t\tdevice.gl.deleteBuffer(this.bufferId);\n\t\t\t\t\t\tthis.bufferId = null;\n\t\t\t\t}\n\t\t}\n\t\tget initialized() {\n\t\t\t\treturn !!this.bufferId;\n\t\t}\n\t\tloseContext() {\n\t\t\t\tthis.bufferId = null;\n\t\t}\n\t\tunlock(device, usage, target, storage) {\n\t\t\t\tconst gl = device.gl;\n\t\t\t\tif (!this.bufferId) {\n\t\t\t\t\t\tlet glUsage;\n\t\t\t\t\t\tswitch(usage){\n\t\t\t\t\t\t\t\tcase BUFFER_STATIC:\n\t\t\t\t\t\t\t\t\t\tglUsage = gl.STATIC_DRAW;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase BUFFER_DYNAMIC:\n\t\t\t\t\t\t\t\t\t\tglUsage = gl.DYNAMIC_DRAW;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase BUFFER_STREAM:\n\t\t\t\t\t\t\t\t\t\tglUsage = gl.STREAM_DRAW;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase BUFFER_GPUDYNAMIC:\n\t\t\t\t\t\t\t\t\t\tglUsage = gl.DYNAMIC_COPY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.bufferId = gl.createBuffer();\n\t\t\t\t\t\tgl.bindBuffer(target, this.bufferId);\n\t\t\t\t\t\tgl.bufferData(target, storage, glUsage);\n\t\t\t\t} else {\n\t\t\t\t\t\tgl.bindBuffer(target, this.bufferId);\n\t\t\t\t\t\tgl.bufferSubData(target, 0, storage);\n\t\t\t\t}\n\t\t}\n\t\tconstructor(){\n\t\t\t\tthis.bufferId = null;\n\t\t}\n}\n\nclass WebglVertexBuffer extends WebglBuffer {\n\t\tdestroy(device) {\n\t\t\t\tsuper.destroy(device);\n\t\t\t\tdevice.unbindVertexArray();\n\t\t}\n\t\tloseContext() {\n\t\t\t\tsuper.loseContext();\n\t\t\t\tthis.vao = null;\n\t\t}\n\t\tunlock(vertexBuffer) {\n\t\t\t\tconst device = vertexBuffer.device;\n\t\t\t\tsuper.unlock(device, vertexBuffer.usage, device.gl.ARRAY_BUFFER, vertexBuffer.storage);\n\t\t}\n\t\tconstructor(...args){\n\t\t\t\tsuper(...args), this.vao = null;\n\t\t}\n}\n\nclass WebglIndexBuffer extends WebglBuffer {\n\t\tconstructor(indexBuffer){\n\t\t\t\tsuper();\n\t\t\t\tconst gl = indexBuffer.device.gl;\n\t\t\t\tconst format = indexBuffer.format;\n\t\t\t\tif (format === INDEXFORMAT_UINT8) {\n\t\t\t\t\t\tthis.glFormat = gl.UNSIGNED_BYTE;\n\t\t\t\t} else if (format === INDEXFORMAT_UINT16) {\n\t\t\t\t\t\tthis.glFormat = gl.UNSIGNED_SHORT;\n\t\t\t\t} else if (format === INDEXFORMAT_UINT32) {\n\t\t\t\t\t\tthis.glFormat = gl.UNSIGNED_INT;\n\t\t\t\t}\n\t\t}\n\t\tunlock(indexBuffer) {\n\t\t\t\tconst device = indexBuffer.device;\n\t\t\t\tsuper.unlock(device, indexBuffer.usage, device.gl.ELEMENT_ARRAY_BUFFER, indexBuffer.storage);\n\t\t}\n}\n\nclass WebglShaderInput {\n\t\tconstructor(graphicsDevice, name, type, locationId){\n\t\t\t\tthis.locationId = locationId;\n\t\t\t\tthis.scopeId = graphicsDevice.scope.resolve(name);\n\t\t\t\tthis.version = new Version();\n\t\t\t\tif (name.substring(name.length - 3) === '[0]') {\n\t\t\t\t\t\tswitch(type){\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_FLOAT:\n\t\t\t\t\t\t\t\t\t\ttype = UNIFORMTYPE_FLOATARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_INT:\n\t\t\t\t\t\t\t\t\t\ttype = UNIFORMTYPE_INTARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_UINT:\n\t\t\t\t\t\t\t\t\t\ttype = UNIFORMTYPE_UINTARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_BOOL:\n\t\t\t\t\t\t\t\t\t\ttype = UNIFORMTYPE_BOOLARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_VEC2:\n\t\t\t\t\t\t\t\t\t\ttype = UNIFORMTYPE_VEC2ARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_IVEC2:\n\t\t\t\t\t\t\t\t\t\ttype = UNIFORMTYPE_IVEC2ARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_UVEC2:\n\t\t\t\t\t\t\t\t\t\ttype = UNIFORMTYPE_UVEC2ARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_BVEC2:\n\t\t\t\t\t\t\t\t\t\ttype = UNIFORMTYPE_BVEC2ARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_VEC3:\n\t\t\t\t\t\t\t\t\t\ttype = UNIFORMTYPE_VEC3ARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_IVEC3:\n\t\t\t\t\t\t\t\t\t\ttype = UNIFORMTYPE_IVEC3ARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_UVEC3:\n\t\t\t\t\t\t\t\t\t\ttype = UNIFORMTYPE_UVEC3ARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_BVEC3:\n\t\t\t\t\t\t\t\t\t\ttype = UNIFORMTYPE_BVEC3ARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_VEC4:\n\t\t\t\t\t\t\t\t\t\ttype = UNIFORMTYPE_VEC4ARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_IVEC4:\n\t\t\t\t\t\t\t\t\t\ttype = UNIFORMTYPE_IVEC4ARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_UVEC4:\n\t\t\t\t\t\t\t\t\t\ttype = UNIFORMTYPE_UVEC4ARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_BVEC4:\n\t\t\t\t\t\t\t\t\t\ttype = UNIFORMTYPE_BVEC4ARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.dataType = type;\n\t\t\t\tthis.value = [\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\tnull\n\t\t\t\t];\n\t\t\t\tthis.array = [];\n\t\t}\n}\n\nconst _vertexShaderBuiltins = new Set([\n\t\t'gl_VertexID',\n\t\t'gl_InstanceID',\n\t\t'gl_DrawID',\n\t\t'gl_BaseVertex',\n\t\t'gl_BaseInstance'\n]);\nclass CompiledShaderCache {\n\t\tdestroy(device) {\n\t\t\t\tthis.map.forEach((shader)=>{\n\t\t\t\t\t\tdevice.gl.deleteShader(shader);\n\t\t\t\t});\n\t\t}\n\t\tloseContext(device) {\n\t\t\t\tthis.map.clear();\n\t\t}\n\t\tconstructor(){\n\t\t\t\tthis.map = new Map();\n\t\t}\n}\nconst _vertexShaderCache = new DeviceCache();\nconst _fragmentShaderCache = new DeviceCache();\nclass WebglShader {\n\t\tconstructor(shader){\n\t\t\t\tthis.compileDuration = 0;\n\t\t\t\tthis.init();\n\t\t\t\tthis.compile(shader.device, shader);\n\t\t\t\tthis.link(shader.device, shader);\n\t\t\t\tshader.device.shaders.push(shader);\n\t\t}\n\t\tdestroy(shader) {\n\t\t\t\tif (this.glProgram) {\n\t\t\t\t\t\tshader.device.gl.deleteProgram(this.glProgram);\n\t\t\t\t\t\tthis.glProgram = null;\n\t\t\t\t}\n\t\t}\n\t\tinit() {\n\t\t\t\tthis.uniforms = [];\n\t\t\t\tthis.samplers = [];\n\t\t\t\tthis.attributes = [];\n\t\t\t\tthis.glProgram = null;\n\t\t\t\tthis.glVertexShader = null;\n\t\t\t\tthis.glFragmentShader = null;\n\t\t}\n\t\tloseContext() {\n\t\t\t\tthis.init();\n\t\t}\n\t\trestoreContext(device, shader) {\n\t\t\t\tthis.compile(device, shader);\n\t\t\t\tthis.link(device, shader);\n\t\t}\n\t\tcompile(device, shader) {\n\t\t\t\tconst definition = shader.definition;\n\t\t\t\tthis.glVertexShader = this._compileShaderSource(device, definition.vshader, true);\n\t\t\t\tthis.glFragmentShader = this._compileShaderSource(device, definition.fshader, false);\n\t\t}\n\t\tlink(device, shader) {\n\t\t\t\tif (this.glProgram) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst gl = device.gl;\n\t\t\t\tif (gl.isContextLost()) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst glProgram = gl.createProgram();\n\t\t\t\tthis.glProgram = glProgram;\n\t\t\t\tgl.attachShader(glProgram, this.glVertexShader);\n\t\t\t\tgl.attachShader(glProgram, this.glFragmentShader);\n\t\t\t\tconst definition = shader.definition;\n\t\t\t\tconst attrs = definition.attributes;\n\t\t\t\tif (definition.useTransformFeedback) {\n\t\t\t\t\t\tlet outNames = definition.feedbackVaryings;\n\t\t\t\t\t\tif (!outNames) {\n\t\t\t\t\t\t\t\toutNames = [];\n\t\t\t\t\t\t\t\tfor(const attr in attrs){\n\t\t\t\t\t\t\t\t\t\tif (attrs.hasOwnProperty(attr)) {\n\t\t\t\t\t\t\t\t\t\t\t\toutNames.push(`out_${attr}`);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tgl.transformFeedbackVaryings(glProgram, outNames, gl.INTERLEAVED_ATTRIBS);\n\t\t\t\t}\n\t\t\t\tfor(const attr in attrs){\n\t\t\t\t\t\tif (attrs.hasOwnProperty(attr)) {\n\t\t\t\t\t\t\t\tconst semantic = attrs[attr];\n\t\t\t\t\t\t\t\tconst loc = semanticToLocation[semantic];\n\t\t\t\t\t\t\t\tgl.bindAttribLocation(glProgram, loc, attr);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tgl.linkProgram(glProgram);\n\t\t}\n\t\t_compileShaderSource(device, src, isVertexShader) {\n\t\t\t\tconst gl = device.gl;\n\t\t\t\tif (gl.isContextLost()) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tconst shaderDeviceCache = isVertexShader ? _vertexShaderCache : _fragmentShaderCache;\n\t\t\t\tconst shaderCache = shaderDeviceCache.get(device, ()=>{\n\t\t\t\t\t\treturn new CompiledShaderCache();\n\t\t\t\t});\n\t\t\t\tlet glShader = shaderCache.map.get(src);\n\t\t\t\tif (!glShader) {\n\t\t\t\t\t\tglShader = gl.createShader(isVertexShader ? gl.VERTEX_SHADER : gl.FRAGMENT_SHADER);\n\t\t\t\t\t\tgl.shaderSource(glShader, src);\n\t\t\t\t\t\tgl.compileShader(glShader);\n\t\t\t\t\t\tshaderCache.map.set(src, glShader);\n\t\t\t\t}\n\t\t\t\treturn glShader;\n\t\t}\n\t\tfinalize(device, shader) {\n\t\t\t\tconst gl = device.gl;\n\t\t\t\tif (gl.isContextLost()) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tconst glProgram = this.glProgram;\n\t\t\t\tconst definition = shader.definition;\n\t\t\t\tconst linkStatus = gl.getProgramParameter(glProgram, gl.LINK_STATUS);\n\t\t\t\tif (!linkStatus) {\n\t\t\t\t\t\tif (!this._isCompiled(device, shader, this.glVertexShader, definition.vshader, 'vertex')) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!this._isCompiled(device, shader, this.glFragmentShader, definition.fshader, 'fragment')) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst message = `Failed to link shader program. Error: ${gl.getProgramInfoLog(glProgram)}`;\n\t\t\t\t\t\tconsole.error(message);\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tconst numAttributes = gl.getProgramParameter(glProgram, gl.ACTIVE_ATTRIBUTES);\n\t\t\t\tshader.attributes.clear();\n\t\t\t\tfor(let i = 0; i < numAttributes; i++){\n\t\t\t\t\t\tconst info = gl.getActiveAttrib(glProgram, i);\n\t\t\t\t\t\tconst location = gl.getAttribLocation(glProgram, info.name);\n\t\t\t\t\t\tif (_vertexShaderBuiltins.has(info.name)) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (definition.attributes[info.name] === undefined) {\n\t\t\t\t\t\t\t\tconsole.error(`Vertex shader attribute \"${info.name}\" is not mapped to a semantic in shader definition, shader [${shader.label}]`, shader);\n\t\t\t\t\t\t\t\tshader.failed = true;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tshader.attributes.set(location, info.name);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst samplerTypes = device._samplerTypes;\n\t\t\t\tconst numUniforms = gl.getProgramParameter(glProgram, gl.ACTIVE_UNIFORMS);\n\t\t\t\tfor(let i = 0; i < numUniforms; i++){\n\t\t\t\t\t\tconst info = gl.getActiveUniform(glProgram, i);\n\t\t\t\t\t\tconst location = gl.getUniformLocation(glProgram, info.name);\n\t\t\t\t\t\tif (_vertexShaderBuiltins.has(info.name)) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst shaderInput = new WebglShaderInput(device, info.name, device.pcUniformType[info.type], location);\n\t\t\t\t\t\tif (samplerTypes.has(info.type)) {\n\t\t\t\t\t\t\t\tthis.samplers.push(shaderInput);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.uniforms.push(shaderInput);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tshader.ready = true;\n\t\t\t\treturn true;\n\t\t}\n\t\t_isCompiled(device, shader, glShader, source, shaderType) {\n\t\t\t\tconst gl = device.gl;\n\t\t\t\tif (!gl.getShaderParameter(glShader, gl.COMPILE_STATUS)) {\n\t\t\t\t\t\tconst infoLog = gl.getShaderInfoLog(glShader);\n\t\t\t\t\t\tconst [code, error] = this._processError(source, infoLog);\n\t\t\t\t\t\tconst message = `Failed to compile ${shaderType} shader:\\n\\n${infoLog}\\n${code} while rendering ${ void 0}`;\n\t\t\t\t\t\tconsole.error(message);\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t}\n\t\tisLinked(device) {\n\t\t\t\tconst { extParallelShaderCompile } = device;\n\t\t\t\tif (extParallelShaderCompile) {\n\t\t\t\t\t\treturn device.gl.getProgramParameter(this.glProgram, extParallelShaderCompile.COMPLETION_STATUS_KHR);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t}\n\t\t_processError(src, infoLog) {\n\t\t\t\tconst error = {};\n\t\t\t\tlet code = '';\n\t\t\t\tif (src) {\n\t\t\t\t\t\tconst lines = src.split('\\n');\n\t\t\t\t\t\tlet from = 0;\n\t\t\t\t\t\tlet to = lines.length;\n\t\t\t\t\t\tif (infoLog && infoLog.startsWith('ERROR:')) {\n\t\t\t\t\t\t\t\tconst match = infoLog.match(/^ERROR:\\s(\\d+):(\\d+):\\s*(.+)/);\n\t\t\t\t\t\t\t\tif (match) {\n\t\t\t\t\t\t\t\t\t\terror.message = match[3];\n\t\t\t\t\t\t\t\t\t\terror.line = parseInt(match[2], 10);\n\t\t\t\t\t\t\t\t\t\tfrom = Math.max(0, error.line - 6);\n\t\t\t\t\t\t\t\t\t\tto = Math.min(lines.length, error.line + 5);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor(let i = from; i < to; i++){\n\t\t\t\t\t\t\t\tconst linePrefix = i + 1 === error.line ? '> ' : '  ';\n\t\t\t\t\t\t\t\tcode += `${linePrefix}${i + 1}:\\t${lines[i]}\\n`;\n\t\t\t\t\t\t}\n\t\t\t\t\t\terror.source = src;\n\t\t\t\t}\n\t\t\t\treturn [\n\t\t\t\t\t\tcode,\n\t\t\t\t\t\terror\n\t\t\t\t];\n\t\t}\n}\n\nclass WebglDrawCommands {\n\t\tconstructor(indexSizeBytes){\n\t\t\t\tthis.glCounts = null;\n\t\t\t\tthis.glOffsetsBytes = null;\n\t\t\t\tthis.glInstanceCounts = null;\n\t\t\t\tthis.indexSizeBytes = indexSizeBytes;\n\t\t}\n\t\tallocate(maxCount) {\n\t\t\t\tthis.glCounts = new Int32Array(maxCount);\n\t\t\t\tthis.glOffsetsBytes = new Int32Array(maxCount);\n\t\t\t\tthis.glInstanceCounts = new Int32Array(maxCount);\n\t\t}\n\t\tadd(i, indexOrVertexCount, instanceCount, firstIndexOrVertex) {\n\t\t\t\tthis.glCounts[i] = indexOrVertexCount;\n\t\t\t\tthis.glOffsetsBytes[i] = firstIndexOrVertex * this.indexSizeBytes;\n\t\t\t\tthis.glInstanceCounts[i] = instanceCount;\n\t\t}\n}\n\nfunction downsampleImage(image, size) {\n\t\tconst srcW = image.width;\n\t\tconst srcH = image.height;\n\t\tif (srcW > size || srcH > size) {\n\t\t\t\tconst scale = size / Math.max(srcW, srcH);\n\t\t\t\tconst dstW = Math.floor(srcW * scale);\n\t\t\t\tconst dstH = Math.floor(srcH * scale);\n\t\t\t\tconst canvas = document.createElement('canvas');\n\t\t\t\tcanvas.width = dstW;\n\t\t\t\tcanvas.height = dstH;\n\t\t\t\tconst context = canvas.getContext('2d');\n\t\t\t\tcontext.drawImage(image, 0, 0, srcW, srcH, 0, 0, dstW, dstH);\n\t\t\t\treturn canvas;\n\t\t}\n\t\treturn image;\n}\nclass WebglTexture {\n\t\tconstructor(texture){\n\t\t\t\tthis._glTexture = null;\n\t\t\t\tthis.dirtyParameterFlags = 0;\n\t\t\t\tthis.texture = texture;\n\t\t}\n\t\tdestroy(device) {\n\t\t\t\tif (this._glTexture) {\n\t\t\t\t\t\tfor(let i = 0; i < device.textureUnits.length; i++){\n\t\t\t\t\t\t\t\tconst textureUnit = device.textureUnits[i];\n\t\t\t\t\t\t\t\tfor(let j = 0; j < textureUnit.length; j++){\n\t\t\t\t\t\t\t\t\t\tif (textureUnit[j] === this._glTexture) {\n\t\t\t\t\t\t\t\t\t\t\t\ttextureUnit[j] = null;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdevice.gl.deleteTexture(this._glTexture);\n\t\t\t\t\t\tthis._glTexture = null;\n\t\t\t\t}\n\t\t}\n\t\tloseContext() {\n\t\t\t\tthis._glTexture = null;\n\t\t}\n\t\tpropertyChanged(flag) {\n\t\t\t\tthis.dirtyParameterFlags |= flag;\n\t\t}\n\t\tinitialize(device, texture) {\n\t\t\t\tconst gl = device.gl;\n\t\t\t\tthis._glTexture = gl.createTexture();\n\t\t\t\tthis._glTarget = texture._cubemap ? gl.TEXTURE_CUBE_MAP : texture._volume ? gl.TEXTURE_3D : texture.array ? gl.TEXTURE_2D_ARRAY : gl.TEXTURE_2D;\n\t\t\t\tswitch(texture._format){\n\t\t\t\t\t\tcase PIXELFORMAT_A8:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.ALPHA;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.ALPHA;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.UNSIGNED_BYTE;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_L8:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.LUMINANCE;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.LUMINANCE;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.UNSIGNED_BYTE;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_LA8:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.LUMINANCE_ALPHA;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.LUMINANCE_ALPHA;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.UNSIGNED_BYTE;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_R8:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RED;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.R8;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.UNSIGNED_BYTE;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_RG8:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RG;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.RG8;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.UNSIGNED_BYTE;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_RGB565:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGB;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.RGB565;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.UNSIGNED_SHORT_5_6_5;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_RGBA5551:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGBA;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.RGB5_A1;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.UNSIGNED_SHORT_5_5_5_1;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_RGBA4:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGBA;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.RGBA4;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.UNSIGNED_SHORT_4_4_4_4;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_RGB8:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGB;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.RGB8;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.UNSIGNED_BYTE;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_RGBA8:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGBA;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.RGBA8;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.UNSIGNED_BYTE;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_BGRA8:\n\t\t\t\t\t\tcase PIXELFORMAT_SBGRA8:\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_DXT1:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGB;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = device.extCompressedTextureS3TC.COMPRESSED_RGB_S3TC_DXT1_EXT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_DXT3:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGBA;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = device.extCompressedTextureS3TC.COMPRESSED_RGBA_S3TC_DXT3_EXT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_DXT5:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGBA;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = device.extCompressedTextureS3TC.COMPRESSED_RGBA_S3TC_DXT5_EXT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_ETC1:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGB;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = device.extCompressedTextureETC1.COMPRESSED_RGB_ETC1_WEBGL;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_PVRTC_2BPP_RGB_1:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGB;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = device.extCompressedTexturePVRTC.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_PVRTC_2BPP_RGBA_1:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGBA;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = device.extCompressedTexturePVRTC.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_PVRTC_4BPP_RGB_1:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGB;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = device.extCompressedTexturePVRTC.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_PVRTC_4BPP_RGBA_1:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGBA;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = device.extCompressedTexturePVRTC.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_ETC2_RGB:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGB;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = device.extCompressedTextureETC.COMPRESSED_RGB8_ETC2;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_ETC2_RGBA:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGBA;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = device.extCompressedTextureETC.COMPRESSED_RGBA8_ETC2_EAC;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_ASTC_4x4:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGBA;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = device.extCompressedTextureASTC.COMPRESSED_RGBA_ASTC_4x4_KHR;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_ATC_RGB:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGB;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = device.extCompressedTextureATC.COMPRESSED_RGB_ATC_WEBGL;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_ATC_RGBA:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGBA;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = device.extCompressedTextureATC.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_BC6F:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGB;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = device.extTextureCompressionBPTC.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_BC6UF:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGB;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = device.extTextureCompressionBPTC.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_BC7:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGBA;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = device.extTextureCompressionBPTC.COMPRESSED_RGBA_BPTC_UNORM_EXT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_DXT1_SRGB:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.SRGB;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = device.extCompressedTextureS3TC_SRGB.COMPRESSED_SRGB_S3TC_DXT1_EXT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_DXT3_SRGBA:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.SRGB_ALPHA;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = device.extCompressedTextureS3TC_SRGB.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_DXT5_SRGBA:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.SRGB_ALPHA;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = device.extCompressedTextureS3TC_SRGB.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_ETC2_SRGB:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.SRGB;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = device.extCompressedTextureETC.COMPRESSED_SRGB8_ETC2;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_ETC2_SRGBA:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.SRGB_ALPHA;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = device.extCompressedTextureETC.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_ASTC_4x4_SRGB:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.SRGB_ALPHA;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = device.extCompressedTextureASTC.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_BC7_SRGBA:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGBA;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = device.extTextureCompressionBPTC.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_R16F:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RED;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.R16F;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.HALF_FLOAT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_RG16F:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RG;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.RG16F;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.HALF_FLOAT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_RGB16F:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGB;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.RGB16F;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.HALF_FLOAT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_RGBA16F:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGBA;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.RGBA16F;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.HALF_FLOAT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_RGB32F:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGB;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.RGB32F;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.FLOAT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_RGBA32F:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGBA;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.RGBA32F;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.FLOAT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_R32F:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RED;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.R32F;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.FLOAT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_DEPTH:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.DEPTH_COMPONENT;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.DEPTH_COMPONENT32F;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.FLOAT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_DEPTH16:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.DEPTH_COMPONENT;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.DEPTH_COMPONENT16;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.UNSIGNED_SHORT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_DEPTHSTENCIL:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.DEPTH_STENCIL;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.DEPTH24_STENCIL8;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.UNSIGNED_INT_24_8;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_111110F:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGB;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.R11F_G11F_B10F;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.UNSIGNED_INT_10F_11F_11F_REV;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_SRGB8:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGB;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.SRGB8;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.UNSIGNED_BYTE;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_SRGBA8:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGBA;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.SRGB8_ALPHA8;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.UNSIGNED_BYTE;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_R8I:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RED_INTEGER;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.R8I;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.BYTE;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_R8U:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RED_INTEGER;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.R8UI;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.UNSIGNED_BYTE;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_R16I:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RED_INTEGER;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.R16I;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.SHORT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_R16U:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RED_INTEGER;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.R16UI;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.UNSIGNED_SHORT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_R32I:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RED_INTEGER;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.R32I;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.INT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_R32U:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RED_INTEGER;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.R32UI;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.UNSIGNED_INT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_RG8I:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RG_INTEGER;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.RG8I;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.BYTE;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_RG8U:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RG_INTEGER;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.RG8UI;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.UNSIGNED_BYTE;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_RG16I:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RG_INTEGER;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.RG16I;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.SHORT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_RG16U:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RG_INTEGER;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.RG16UI;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.UNSIGNED_SHORT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_RG32I:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RG_INTEGER;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.RG32I;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.INT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_RG32U:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RG_INTEGER;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.RG32UI;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.UNSIGNED_INT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_RGBA8I:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGBA_INTEGER;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.RGBA8I;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.BYTE;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_RGBA8U:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGBA_INTEGER;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.RGBA8UI;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.UNSIGNED_BYTE;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_RGBA16I:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGBA_INTEGER;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.RGBA16I;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.SHORT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_RGBA16U:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGBA_INTEGER;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.RGBA16UI;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.UNSIGNED_SHORT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_RGBA32I:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGBA_INTEGER;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.RGBA32I;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.INT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_RGBA32U:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGBA_INTEGER;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.RGBA32UI;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.UNSIGNED_INT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tthis._glCreated = false;\n\t\t}\n\t\tupload(device, texture) {\n\t\t\t\tconst gl = device.gl;\n\t\t\t\tif (!texture._needsUpload && (texture._needsMipmapsUpload && texture._mipmapsUploaded || !texture.pot)) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tlet mipLevel = 0;\n\t\t\t\tlet mipObject;\n\t\t\t\tlet resMult;\n\t\t\t\tconst requiredMipLevels = texture.numLevels;\n\t\t\t\tif (texture.array && !this._glCreated) {\n\t\t\t\t\t\tgl.texStorage3D(gl.TEXTURE_2D_ARRAY, requiredMipLevels, this._glInternalFormat, texture._width, texture._height, texture._arrayLength);\n\t\t\t\t}\n\t\t\t\twhile(texture._levels[mipLevel] || mipLevel === 0){\n\t\t\t\t\t\tif (!texture._needsUpload && mipLevel === 0) {\n\t\t\t\t\t\t\t\tmipLevel++;\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t} else if (mipLevel && (!texture._needsMipmapsUpload || !texture._mipmaps)) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmipObject = texture._levels[mipLevel];\n\t\t\t\t\t\tresMult = 1 / Math.pow(2, mipLevel);\n\t\t\t\t\t\tif (mipLevel === 1 && !texture._compressed && !texture._integerFormat && texture._levels.length < requiredMipLevels) {\n\t\t\t\t\t\t\t\tgl.generateMipmap(this._glTarget);\n\t\t\t\t\t\t\t\ttexture._mipmapsUploaded = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (texture._cubemap) {\n\t\t\t\t\t\t\t\tlet face;\n\t\t\t\t\t\t\t\tif (device._isBrowserInterface(mipObject[0])) {\n\t\t\t\t\t\t\t\t\t\tfor(face = 0; face < 6; face++){\n\t\t\t\t\t\t\t\t\t\t\t\tif (!texture._levelsUpdated[0][face]) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tlet src = mipObject[face];\n\t\t\t\t\t\t\t\t\t\t\t\tif (device._isImageBrowserInterface(src)) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (src.width > device.maxCubeMapSize || src.height > device.maxCubeMapSize) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsrc = downsampleImage(src, device.maxCubeMapSize);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (mipLevel === 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttexture._width = src.width;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttexture._height = src.height;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tdevice.setUnpackFlipY(false);\n\t\t\t\t\t\t\t\t\t\t\t\tdevice.setUnpackPremultiplyAlpha(texture._premultiplyAlpha);\n\t\t\t\t\t\t\t\t\t\t\t\tif (this._glCreated) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tgl.texSubImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + face, mipLevel, 0, 0, this._glFormat, this._glPixelType, src);\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tgl.texImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + face, mipLevel, this._glInternalFormat, this._glFormat, this._glPixelType, src);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tresMult = 1 / Math.pow(2, mipLevel);\n\t\t\t\t\t\t\t\t\t\tfor(face = 0; face < 6; face++){\n\t\t\t\t\t\t\t\t\t\t\t\tif (!texture._levelsUpdated[0][face]) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tconst texData = mipObject[face];\n\t\t\t\t\t\t\t\t\t\t\t\tif (texture._compressed) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (this._glCreated && texData) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tgl.compressedTexSubImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + face, mipLevel, 0, 0, Math.max(texture._width * resMult, 1), Math.max(texture._height * resMult, 1), this._glInternalFormat, texData);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tgl.compressedTexImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + face, mipLevel, this._glInternalFormat, Math.max(texture._width * resMult, 1), Math.max(texture._height * resMult, 1), 0, texData);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdevice.setUnpackFlipY(false);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdevice.setUnpackPremultiplyAlpha(texture._premultiplyAlpha);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (this._glCreated && texData) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tgl.texSubImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + face, mipLevel, 0, 0, Math.max(texture._width * resMult, 1), Math.max(texture._height * resMult, 1), this._glFormat, this._glPixelType, texData);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tgl.texImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + face, mipLevel, this._glInternalFormat, Math.max(texture._width * resMult, 1), Math.max(texture._height * resMult, 1), 0, this._glFormat, this._glPixelType, texData);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (texture._volume) {\n\t\t\t\t\t\t\t\tif (texture._compressed) {\n\t\t\t\t\t\t\t\t\t\tgl.compressedTexImage3D(gl.TEXTURE_3D, mipLevel, this._glInternalFormat, Math.max(texture._width * resMult, 1), Math.max(texture._height * resMult, 1), Math.max(texture._depth * resMult, 1), 0, mipObject);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tdevice.setUnpackFlipY(false);\n\t\t\t\t\t\t\t\t\t\tdevice.setUnpackPremultiplyAlpha(texture._premultiplyAlpha);\n\t\t\t\t\t\t\t\t\t\tgl.texImage3D(gl.TEXTURE_3D, mipLevel, this._glInternalFormat, Math.max(texture._width * resMult, 1), Math.max(texture._height * resMult, 1), Math.max(texture._depth * resMult, 1), 0, this._glFormat, this._glPixelType, mipObject);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (texture.array && typeof mipObject === 'object') {\n\t\t\t\t\t\t\t\tif (texture._arrayLength === mipObject.length) {\n\t\t\t\t\t\t\t\t\t\tif (texture._compressed) {\n\t\t\t\t\t\t\t\t\t\t\t\tfor(let index = 0; index < texture._arrayLength; index++){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tgl.compressedTexSubImage3D(gl.TEXTURE_2D_ARRAY, mipLevel, 0, 0, index, Math.max(Math.floor(texture._width * resMult), 1), Math.max(Math.floor(texture._height * resMult), 1), 1, this._glInternalFormat, mipObject[index]);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tfor(let index = 0; index < texture._arrayLength; index++){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tgl.texSubImage3D(gl.TEXTURE_2D_ARRAY, mipLevel, 0, 0, index, Math.max(Math.floor(texture._width * resMult), 1), Math.max(Math.floor(texture._height * resMult), 1), 1, this._glFormat, this._glPixelType, mipObject[index]);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (device._isBrowserInterface(mipObject)) {\n\t\t\t\t\t\t\t\t\t\tif (device._isImageBrowserInterface(mipObject)) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (mipObject.width > device.maxTextureSize || mipObject.height > device.maxTextureSize) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmipObject = downsampleImage(mipObject, device.maxTextureSize);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (mipLevel === 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttexture._width = mipObject.width;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttexture._height = mipObject.height;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tconst w = mipObject.width || mipObject.videoWidth;\n\t\t\t\t\t\t\t\t\t\tconst h = mipObject.height || mipObject.videoHeight;\n\t\t\t\t\t\t\t\t\t\tdevice.setUnpackFlipY(texture._flipY);\n\t\t\t\t\t\t\t\t\t\tdevice.setUnpackPremultiplyAlpha(texture._premultiplyAlpha);\n\t\t\t\t\t\t\t\t\t\tif (this._glCreated && texture._width === w && texture._height === h && !device._isImageVideoInterface(mipObject)) {\n\t\t\t\t\t\t\t\t\t\t\t\tgl.texSubImage2D(gl.TEXTURE_2D, mipLevel, 0, 0, this._glFormat, this._glPixelType, mipObject);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tgl.texImage2D(gl.TEXTURE_2D, mipLevel, this._glInternalFormat, this._glFormat, this._glPixelType, mipObject);\n\t\t\t\t\t\t\t\t\t\t\t\tif (mipLevel === 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttexture._width = w;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttexture._height = h;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tresMult = 1 / Math.pow(2, mipLevel);\n\t\t\t\t\t\t\t\t\t\tif (texture._compressed) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (this._glCreated && mipObject) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tgl.compressedTexSubImage2D(gl.TEXTURE_2D, mipLevel, 0, 0, Math.max(Math.floor(texture._width * resMult), 1), Math.max(Math.floor(texture._height * resMult), 1), this._glInternalFormat, mipObject);\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tgl.compressedTexImage2D(gl.TEXTURE_2D, mipLevel, this._glInternalFormat, Math.max(Math.floor(texture._width * resMult), 1), Math.max(Math.floor(texture._height * resMult), 1), 0, mipObject);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tdevice.setUnpackFlipY(false);\n\t\t\t\t\t\t\t\t\t\t\t\tdevice.setUnpackPremultiplyAlpha(texture._premultiplyAlpha);\n\t\t\t\t\t\t\t\t\t\t\t\tif (this._glCreated && mipObject) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tgl.texSubImage2D(gl.TEXTURE_2D, mipLevel, 0, 0, Math.max(texture._width * resMult, 1), Math.max(texture._height * resMult, 1), this._glFormat, this._glPixelType, mipObject);\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tgl.texImage2D(gl.TEXTURE_2D, mipLevel, this._glInternalFormat, Math.max(texture._width * resMult, 1), Math.max(texture._height * resMult, 1), 0, this._glFormat, this._glPixelType, mipObject);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (mipLevel === 0) {\n\t\t\t\t\t\t\t\t\t\ttexture._mipmapsUploaded = false;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\ttexture._mipmapsUploaded = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmipLevel++;\n\t\t\t\t}\n\t\t\t\tif (texture._needsUpload) {\n\t\t\t\t\t\tif (texture._cubemap) {\n\t\t\t\t\t\t\t\tfor(let i = 0; i < 6; i++){\n\t\t\t\t\t\t\t\t\t\ttexture._levelsUpdated[0][i] = false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ttexture._levelsUpdated[0] = false;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!texture._compressed && !texture._integerFormat && texture._mipmaps && texture._needsMipmapsUpload && texture._levels.length === 1) {\n\t\t\t\t\t\tgl.generateMipmap(this._glTarget);\n\t\t\t\t\t\ttexture._mipmapsUploaded = true;\n\t\t\t\t}\n\t\t\t\tif (texture._gpuSize) {\n\t\t\t\t\t\ttexture.adjustVramSizeTracking(device._vram, -texture._gpuSize);\n\t\t\t\t}\n\t\t\t\ttexture._gpuSize = texture.gpuSize;\n\t\t\t\ttexture.adjustVramSizeTracking(device._vram, texture._gpuSize);\n\t\t\t\tthis._glCreated = true;\n\t\t}\n\t\tuploadImmediate(device, texture) {\n\t\t\t\tif (texture._needsUpload || texture._needsMipmapsUpload) {\n\t\t\t\t\t\tdevice.setTexture(texture, 0);\n\t\t\t\t\t\ttexture._needsUpload = false;\n\t\t\t\t\t\ttexture._needsMipmapsUpload = false;\n\t\t\t\t}\n\t\t}\n\t\tread(x, y, width, height, options) {\n\t\t\t\tconst texture = this.texture;\n\t\t\t\tconst device = texture.device;\n\t\t\t\treturn device.readTextureAsync(texture, x, y, width, height, options);\n\t\t}\n\t\twrite(x, y, width, height, data) {\n\t\t\t\tconst { texture } = this;\n\t\t\t\tconst { device } = texture;\n\t\t\t\tdevice.setTexture(texture, 0);\n\t\t\t\treturn device.writeTextureAsync(texture, x, y, width, height, data);\n\t\t}\n}\n\nclass FramebufferPair {\n\t\tconstructor(msaaFB, resolveFB){\n\t\t\t\tthis.msaaFB = msaaFB;\n\t\t\t\tthis.resolveFB = resolveFB;\n\t\t}\n\t\tdestroy(gl) {\n\t\t\t\tif (this.msaaFB) {\n\t\t\t\t\t\tgl.deleteRenderbuffer(this.msaaFB);\n\t\t\t\t\t\tthis.msaaFB = null;\n\t\t\t\t}\n\t\t\t\tif (this.resolveFB) {\n\t\t\t\t\t\tgl.deleteRenderbuffer(this.resolveFB);\n\t\t\t\t\t\tthis.resolveFB = null;\n\t\t\t\t}\n\t\t}\n}\nclass WebglRenderTarget {\n\t\tdestroy(device) {\n\t\t\t\tconst gl = device.gl;\n\t\t\t\tthis._isInitialized = false;\n\t\t\t\tif (this._glFrameBuffer) {\n\t\t\t\t\t\tif (this._glFrameBuffer !== this.suppliedColorFramebuffer) {\n\t\t\t\t\t\t\t\tgl.deleteFramebuffer(this._glFrameBuffer);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._glFrameBuffer = null;\n\t\t\t\t}\n\t\t\t\tif (this._glDepthBuffer) {\n\t\t\t\t\t\tgl.deleteRenderbuffer(this._glDepthBuffer);\n\t\t\t\t\t\tthis._glDepthBuffer = null;\n\t\t\t\t}\n\t\t\t\tif (this._glResolveFrameBuffer) {\n\t\t\t\t\t\tif (this._glResolveFrameBuffer !== this.suppliedColorFramebuffer) {\n\t\t\t\t\t\t\t\tgl.deleteFramebuffer(this._glResolveFrameBuffer);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._glResolveFrameBuffer = null;\n\t\t\t\t}\n\t\t\t\tthis._glMsaaColorBuffers.forEach((buffer)=>{\n\t\t\t\t\t\tgl.deleteRenderbuffer(buffer);\n\t\t\t\t});\n\t\t\t\tthis._glMsaaColorBuffers.length = 0;\n\t\t\t\tthis.colorMrtFramebuffers?.forEach((framebuffer)=>{\n\t\t\t\t\t\tframebuffer.destroy(gl);\n\t\t\t\t});\n\t\t\t\tthis.colorMrtFramebuffers = null;\n\t\t\t\tif (this._glMsaaDepthBuffer) {\n\t\t\t\t\t\tthis._glMsaaDepthBuffer = null;\n\t\t\t\t\t\tif (this.msaaDepthBufferKey) {\n\t\t\t\t\t\t\t\tgetMultisampledTextureCache(device).release(this.msaaDepthBufferKey);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.suppliedColorFramebuffer = undefined;\n\t\t}\n\t\tget initialized() {\n\t\t\t\treturn this._isInitialized;\n\t\t}\n\t\tinit(device, target) {\n\t\t\t\tconst gl = device.gl;\n\t\t\t\tthis._isInitialized = true;\n\t\t\t\tconst buffers = [];\n\t\t\t\tif (this.suppliedColorFramebuffer !== undefined) {\n\t\t\t\t\t\tthis._glFrameBuffer = this.suppliedColorFramebuffer;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._glFrameBuffer = gl.createFramebuffer();\n\t\t\t\t\t\tdevice.setFramebuffer(this._glFrameBuffer);\n\t\t\t\t\t\tconst colorBufferCount = target._colorBuffers?.length ?? 0;\n\t\t\t\t\t\tconst attachmentBaseConstant = gl.COLOR_ATTACHMENT0;\n\t\t\t\t\t\tfor(let i = 0; i < colorBufferCount; ++i){\n\t\t\t\t\t\t\t\tconst colorBuffer = target.getColorBuffer(i);\n\t\t\t\t\t\t\t\tif (colorBuffer) {\n\t\t\t\t\t\t\t\t\t\tif (!colorBuffer.impl._glTexture) {\n\t\t\t\t\t\t\t\t\t\t\t\tcolorBuffer._width = Math.min(colorBuffer.width, device.maxRenderBufferSize);\n\t\t\t\t\t\t\t\t\t\t\t\tcolorBuffer._height = Math.min(colorBuffer.height, device.maxRenderBufferSize);\n\t\t\t\t\t\t\t\t\t\t\t\tdevice.setTexture(colorBuffer, 0);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tgl.framebufferTexture2D(gl.FRAMEBUFFER, attachmentBaseConstant + i, colorBuffer._cubemap ? gl.TEXTURE_CUBE_MAP_POSITIVE_X + target._face : gl.TEXTURE_2D, colorBuffer.impl._glTexture, target.mipLevel);\n\t\t\t\t\t\t\t\t\t\tbuffers.push(attachmentBaseConstant + i);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tgl.drawBuffers(buffers);\n\t\t\t\t\t\tconst depthBuffer = target._depthBuffer;\n\t\t\t\t\t\tif (depthBuffer || target._depth) {\n\t\t\t\t\t\t\t\tconst attachmentPoint = target._stencil ? gl.DEPTH_STENCIL_ATTACHMENT : gl.DEPTH_ATTACHMENT;\n\t\t\t\t\t\t\t\tif (depthBuffer) {\n\t\t\t\t\t\t\t\t\t\tif (!depthBuffer.impl._glTexture) {\n\t\t\t\t\t\t\t\t\t\t\t\tdepthBuffer._width = Math.min(depthBuffer.width, device.maxRenderBufferSize);\n\t\t\t\t\t\t\t\t\t\t\t\tdepthBuffer._height = Math.min(depthBuffer.height, device.maxRenderBufferSize);\n\t\t\t\t\t\t\t\t\t\t\t\tdevice.setTexture(depthBuffer, 0);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tgl.framebufferTexture2D(gl.FRAMEBUFFER, attachmentPoint, depthBuffer._cubemap ? gl.TEXTURE_CUBE_MAP_POSITIVE_X + target._face : gl.TEXTURE_2D, target._depthBuffer.impl._glTexture, target.mipLevel);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tconst willRenderMsaa = target._samples > 1;\n\t\t\t\t\t\t\t\t\t\tif (!willRenderMsaa) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (!this._glDepthBuffer) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis._glDepthBuffer = gl.createRenderbuffer();\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tconst internalFormat = target._stencil ? gl.DEPTH24_STENCIL8 : gl.DEPTH_COMPONENT32F;\n\t\t\t\t\t\t\t\t\t\t\t\tgl.bindRenderbuffer(gl.RENDERBUFFER, this._glDepthBuffer);\n\t\t\t\t\t\t\t\t\t\t\t\tgl.renderbufferStorage(gl.RENDERBUFFER, internalFormat, target.width, target.height);\n\t\t\t\t\t\t\t\t\t\t\t\tgl.framebufferRenderbuffer(gl.FRAMEBUFFER, attachmentPoint, gl.RENDERBUFFER, this._glDepthBuffer);\n\t\t\t\t\t\t\t\t\t\t\t\tgl.bindRenderbuffer(gl.RENDERBUFFER, null);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (target._samples > 1) {\n\t\t\t\t\t\tthis._glResolveFrameBuffer = this._glFrameBuffer;\n\t\t\t\t\t\tthis._glFrameBuffer = gl.createFramebuffer();\n\t\t\t\t\t\tdevice.setFramebuffer(this._glFrameBuffer);\n\t\t\t\t\t\tconst colorBufferCount = target._colorBuffers?.length ?? 0;\n\t\t\t\t\t\tif (this.suppliedColorFramebuffer !== undefined) {\n\t\t\t\t\t\t\t\tconst buffer = gl.createRenderbuffer();\n\t\t\t\t\t\t\t\tthis._glMsaaColorBuffers.push(buffer);\n\t\t\t\t\t\t\t\tconst internalFormat = device.backBufferFormat === PIXELFORMAT_RGBA8 ? gl.RGBA8 : gl.RGB8;\n\t\t\t\t\t\t\t\tgl.bindRenderbuffer(gl.RENDERBUFFER, buffer);\n\t\t\t\t\t\t\t\tgl.renderbufferStorageMultisample(gl.RENDERBUFFER, target._samples, internalFormat, target.width, target.height);\n\t\t\t\t\t\t\t\tgl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.RENDERBUFFER, buffer);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tfor(let i = 0; i < colorBufferCount; ++i){\n\t\t\t\t\t\t\t\t\t\tconst colorBuffer = target.getColorBuffer(i);\n\t\t\t\t\t\t\t\t\t\tif (colorBuffer) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst buffer = gl.createRenderbuffer();\n\t\t\t\t\t\t\t\t\t\t\t\tthis._glMsaaColorBuffers.push(buffer);\n\t\t\t\t\t\t\t\t\t\t\t\tgl.bindRenderbuffer(gl.RENDERBUFFER, buffer);\n\t\t\t\t\t\t\t\t\t\t\t\tgl.renderbufferStorageMultisample(gl.RENDERBUFFER, target._samples, colorBuffer.impl._glInternalFormat, target.width, target.height);\n\t\t\t\t\t\t\t\t\t\t\t\tgl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + i, gl.RENDERBUFFER, buffer);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (target._depth) {\n\t\t\t\t\t\t\t\tconst internalFormat = target._stencil ? gl.DEPTH24_STENCIL8 : gl.DEPTH_COMPONENT32F;\n\t\t\t\t\t\t\t\tconst attachmentPoint = target._stencil ? gl.DEPTH_STENCIL_ATTACHMENT : gl.DEPTH_ATTACHMENT;\n\t\t\t\t\t\t\t\tlet key;\n\t\t\t\t\t\t\t\tconst depthBuffer = target._depthBuffer;\n\t\t\t\t\t\t\t\tif (depthBuffer) {\n\t\t\t\t\t\t\t\t\t\tkey = `${depthBuffer.id}:${target.width}:${target.height}:${target._samples}:${internalFormat}:${attachmentPoint}`;\n\t\t\t\t\t\t\t\t\t\tthis._glMsaaDepthBuffer = getMultisampledTextureCache(device).get(key);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (!this._glMsaaDepthBuffer) {\n\t\t\t\t\t\t\t\t\t\tthis._glMsaaDepthBuffer = gl.createRenderbuffer();\n\t\t\t\t\t\t\t\t\t\tgl.bindRenderbuffer(gl.RENDERBUFFER, this._glMsaaDepthBuffer);\n\t\t\t\t\t\t\t\t\t\tgl.renderbufferStorageMultisample(gl.RENDERBUFFER, target._samples, internalFormat, target.width, target.height);\n\t\t\t\t\t\t\t\t\t\tthis._glMsaaDepthBuffer.destroy = function() {\n\t\t\t\t\t\t\t\t\t\t\t\tgl.deleteRenderbuffer(this);\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\tif (depthBuffer) {\n\t\t\t\t\t\t\t\t\t\t\t\tgetMultisampledTextureCache(device).set(key, this._glMsaaDepthBuffer);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.msaaDepthBufferKey = key;\n\t\t\t\t\t\t\t\tgl.framebufferRenderbuffer(gl.FRAMEBUFFER, attachmentPoint, gl.RENDERBUFFER, this._glMsaaDepthBuffer);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (colorBufferCount > 1) {\n\t\t\t\t\t\t\t\tthis._createMsaaMrtFramebuffers(device, target, colorBufferCount);\n\t\t\t\t\t\t\t\tdevice.setFramebuffer(this._glFrameBuffer);\n\t\t\t\t\t\t\t\tgl.drawBuffers(buffers);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_createMsaaMrtFramebuffers(device, target, colorBufferCount) {\n\t\t\t\tconst gl = device.gl;\n\t\t\t\tthis.colorMrtFramebuffers = [];\n\t\t\t\tfor(let i = 0; i < colorBufferCount; ++i){\n\t\t\t\t\t\tconst colorBuffer = target.getColorBuffer(i);\n\t\t\t\t\t\tconst srcFramebuffer = gl.createFramebuffer();\n\t\t\t\t\t\tdevice.setFramebuffer(srcFramebuffer);\n\t\t\t\t\t\tconst buffer = this._glMsaaColorBuffers[i];\n\t\t\t\t\t\tgl.bindRenderbuffer(gl.RENDERBUFFER, buffer);\n\t\t\t\t\t\tgl.renderbufferStorageMultisample(gl.RENDERBUFFER, target._samples, colorBuffer.impl._glInternalFormat, target.width, target.height);\n\t\t\t\t\t\tgl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.RENDERBUFFER, buffer);\n\t\t\t\t\t\tgl.drawBuffers([\n\t\t\t\t\t\t\t\tgl.COLOR_ATTACHMENT0\n\t\t\t\t\t\t]);\n\t\t\t\t\t\tconst dstFramebuffer = gl.createFramebuffer();\n\t\t\t\t\t\tdevice.setFramebuffer(dstFramebuffer);\n\t\t\t\t\t\tgl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, colorBuffer._cubemap ? gl.TEXTURE_CUBE_MAP_POSITIVE_X + target._face : gl.TEXTURE_2D, colorBuffer.impl._glTexture, 0);\n\t\t\t\t\t\tthis.colorMrtFramebuffers[i] = new FramebufferPair(srcFramebuffer, dstFramebuffer);\n\t\t\t\t}\n\t\t}\n\t\t_checkFbo(device, target, type = '') {\n\t\t\t\tconst gl = device.gl;\n\t\t\t\tconst status = gl.checkFramebufferStatus(gl.FRAMEBUFFER);\n\t\t\t\tswitch(status){\n\t\t\t\t\t\tcase gl.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase gl.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase gl.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase gl.FRAMEBUFFER_UNSUPPORTED:\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t}\n\t\tloseContext() {\n\t\t\t\tthis._glFrameBuffer = null;\n\t\t\t\tthis._glDepthBuffer = null;\n\t\t\t\tthis._glResolveFrameBuffer = null;\n\t\t\t\tthis._glMsaaColorBuffers.length = 0;\n\t\t\t\tthis._glMsaaDepthBuffer = null;\n\t\t\t\tthis.msaaDepthBufferKey = undefined;\n\t\t\t\tthis.colorMrtFramebuffers = null;\n\t\t\t\tthis.suppliedColorFramebuffer = undefined;\n\t\t\t\tthis._isInitialized = false;\n\t\t}\n\t\tinternalResolve(device, src, dst, target, mask) {\n\t\t\t\tdevice.setScissor(0, 0, target.width, target.height);\n\t\t\t\tconst gl = device.gl;\n\t\t\t\tgl.bindFramebuffer(gl.READ_FRAMEBUFFER, src);\n\t\t\t\tgl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, dst);\n\t\t\t\tgl.blitFramebuffer(0, 0, target.width, target.height, 0, 0, target.width, target.height, mask, gl.NEAREST);\n\t\t}\n\t\tresolve(device, target, color, depth) {\n\t\t\t\tconst gl = device.gl;\n\t\t\t\tif (this.colorMrtFramebuffers) {\n\t\t\t\t\t\tif (color) {\n\t\t\t\t\t\t\t\tfor(let i = 0; i < this.colorMrtFramebuffers.length; i++){\n\t\t\t\t\t\t\t\t\t\tconst fbPair = this.colorMrtFramebuffers[i];\n\t\t\t\t\t\t\t\t\t\tthis.internalResolve(device, fbPair.msaaFB, fbPair.resolveFB, target, gl.COLOR_BUFFER_BIT);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (depth) {\n\t\t\t\t\t\t\t\tthis.internalResolve(device, this._glFrameBuffer, this._glResolveFrameBuffer, target, gl.DEPTH_BUFFER_BIT);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.internalResolve(device, this._glFrameBuffer, this._glResolveFrameBuffer, target, (color ? gl.COLOR_BUFFER_BIT : 0) | (depth ? gl.DEPTH_BUFFER_BIT : 0));\n\t\t\t\t}\n\t\t\t\tgl.bindFramebuffer(gl.FRAMEBUFFER, this._glFrameBuffer);\n\t\t}\n\t\tconstructor(){\n\t\t\t\tthis._glFrameBuffer = null;\n\t\t\t\tthis._glDepthBuffer = null;\n\t\t\t\tthis._glResolveFrameBuffer = null;\n\t\t\t\tthis.colorMrtFramebuffers = null;\n\t\t\t\tthis._glMsaaColorBuffers = [];\n\t\t\t\tthis._glMsaaDepthBuffer = null;\n\t\t\t\tthis._isInitialized = false;\n\t\t}\n}\n\nclass WebglUploadStream {\n\t\tconstructor(uploadStream){\n\t\t\t\tthis.availablePBOs = [];\n\t\t\t\tthis.pendingPBOs = [];\n\t\t\t\tthis.uploadStream = uploadStream;\n\t\t\t\tthis.useSingleBuffer = uploadStream.useSingleBuffer;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tconst gl = this.uploadStream.device.gl;\n\t\t\t\tthis.availablePBOs.forEach((info)=>gl.deleteBuffer(info.pbo));\n\t\t\t\tthis.pendingPBOs.forEach((item)=>{\n\t\t\t\t\t\tif (item.sync) gl.deleteSync(item.sync);\n\t\t\t\t\t\tgl.deleteBuffer(item.pbo);\n\t\t\t\t});\n\t\t}\n\t\t_onDeviceLost() {\n\t\t\t\tthis.availablePBOs.length = 0;\n\t\t\t\tthis.pendingPBOs.length = 0;\n\t\t}\n\t\tupdate(minByteSize) {\n\t\t\t\tconst gl = this.uploadStream.device.gl;\n\t\t\t\tconst pending = this.pendingPBOs;\n\t\t\t\tfor(let i = pending.length - 1; i >= 0; i--){\n\t\t\t\t\t\tconst item = pending[i];\n\t\t\t\t\t\tconst result = gl.clientWaitSync(item.sync, 0, 0);\n\t\t\t\t\t\tif (result === gl.CONDITION_SATISFIED || result === gl.ALREADY_SIGNALED) {\n\t\t\t\t\t\t\t\tgl.deleteSync(item.sync);\n\t\t\t\t\t\t\t\tthis.availablePBOs.push({\n\t\t\t\t\t\t\t\t\t\tpbo: item.pbo,\n\t\t\t\t\t\t\t\t\t\tsize: item.size\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tpending.splice(i, 1);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst available = this.availablePBOs;\n\t\t\t\tfor(let i = available.length - 1; i >= 0; i--){\n\t\t\t\t\t\tif (available[i].size < minByteSize) {\n\t\t\t\t\t\t\t\tgl.deleteBuffer(available[i].pbo);\n\t\t\t\t\t\t\t\tavailable.splice(i, 1);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tupload(data, target, offset, size) {\n\t\t\t\tif (this.useSingleBuffer) {\n\t\t\t\t\t\tthis.uploadDirect(data, target, offset, size);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.uploadPBO(data, target, offset, size);\n\t\t\t\t}\n\t\t}\n\t\tuploadDirect(data, target, offset, size) {\n\t\t\t\ttarget._levels[0] = data;\n\t\t\t\ttarget.upload();\n\t\t}\n\t\tuploadPBO(data, target, offset, size) {\n\t\t\t\tconst device = this.uploadStream.device;\n\t\t\t\tconst gl = device.gl;\n\t\t\t\tconst width = target.width;\n\t\t\t\tconst byteSize = size * data.BYTES_PER_ELEMENT;\n\t\t\t\tthis.update(byteSize);\n\t\t\t\tconst startY = offset / width;\n\t\t\t\tconst height = size / width;\n\t\t\t\tconst pboInfo = this.availablePBOs.pop() ?? (()=>{\n\t\t\t\t\t\tconst pbo = gl.createBuffer();\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tpbo,\n\t\t\t\t\t\t\t\tsize: byteSize\n\t\t\t\t\t\t};\n\t\t\t\t})();\n\t\t\t\tgl.bindBuffer(gl.PIXEL_UNPACK_BUFFER, pboInfo.pbo);\n\t\t\t\tgl.bufferData(gl.PIXEL_UNPACK_BUFFER, byteSize, gl.STREAM_DRAW);\n\t\t\t\tgl.bufferSubData(gl.PIXEL_UNPACK_BUFFER, 0, new Uint8Array(data.buffer, data.byteOffset, byteSize));\n\t\t\t\tgl.bindBuffer(gl.PIXEL_UNPACK_BUFFER, null);\n\t\t\t\tdevice.setTexture(target, 0);\n\t\t\t\tdevice.activeTexture(0);\n\t\t\t\tdevice.bindTexture(target);\n\t\t\t\tgl.bindBuffer(gl.PIXEL_UNPACK_BUFFER, pboInfo.pbo);\n\t\t\t\tdevice.setUnpackFlipY(false);\n\t\t\t\tdevice.setUnpackPremultiplyAlpha(false);\n\t\t\t\tgl.pixelStorei(gl.UNPACK_ALIGNMENT, data.BYTES_PER_ELEMENT);\n\t\t\t\tgl.pixelStorei(gl.UNPACK_ROW_LENGTH, 0);\n\t\t\t\tgl.pixelStorei(gl.UNPACK_SKIP_ROWS, 0);\n\t\t\t\tgl.pixelStorei(gl.UNPACK_SKIP_PIXELS, 0);\n\t\t\t\tconst impl = target.impl;\n\t\t\t\tgl.texSubImage2D(gl.TEXTURE_2D, 0, 0, startY, width, height, impl._glFormat, impl._glPixelType, 0);\n\t\t\t\tgl.bindBuffer(gl.PIXEL_UNPACK_BUFFER, null);\n\t\t\t\tconst sync = gl.fenceSync(gl.SYNC_GPU_COMMANDS_COMPLETE, 0);\n\t\t\t\tthis.pendingPBOs.push({\n\t\t\t\t\t\tpbo: pboInfo.pbo,\n\t\t\t\t\t\tsize: byteSize,\n\t\t\t\t\t\tsync\n\t\t\t\t});\n\t\t\t\tgl.flush();\n\t\t}\n}\n\nclass FrameQueriesInfo {\n\t\tdestroy(gl) {\n\t\t\t\tthis.queries.forEach((query)=>gl.deleteQuery(query));\n\t\t\t\tthis.queries = null;\n\t\t}\n\t\tconstructor(){\n\t\t\t\tthis.queries = [];\n\t\t}\n}\nclass WebglGpuProfiler extends GpuProfiler {\n\t\tconstructor(device){\n\t\t\t\tsuper(), this.freeQueries = [], this.frameQueries = [], this.previousFrameQueries = [], this.timings = [];\n\t\t\t\tthis.device = device;\n\t\t\t\tthis.ext = device.extDisjointTimerQuery;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.freeQueries.forEach((query)=>this.device.gl.deleteQuery(query));\n\t\t\t\tthis.frameQueries.forEach((query)=>this.device.gl.deleteQuery(query));\n\t\t\t\tthis.previousFrameQueries.forEach((frameQueriesInfo)=>frameQueriesInfo.destroy(this.device.gl));\n\t\t\t\tthis.freeQueries = null;\n\t\t\t\tthis.frameQueries = null;\n\t\t\t\tthis.previousFrameQueries = null;\n\t\t}\n\t\tloseContext() {\n\t\t\t\tsuper.loseContext();\n\t\t\t\tthis.freeQueries = [];\n\t\t\t\tthis.frameQueries = [];\n\t\t\t\tthis.previousFrameQueries = [];\n\t\t}\n\t\trestoreContext() {\n\t\t\t\tthis.ext = this.device.extDisjointTimerQuery;\n\t\t}\n\t\tgetQuery() {\n\t\t\t\treturn this.freeQueries.pop() ?? this.device.gl.createQuery();\n\t\t}\n\t\tstart(name) {\n\t\t\t\tif (this.ext) {\n\t\t\t\t\t\tconst slot = this.getSlot(name);\n\t\t\t\t\t\tconst query = this.getQuery();\n\t\t\t\t\t\tthis.frameQueries[slot] = query;\n\t\t\t\t\t\tthis.device.gl.beginQuery(this.ext.TIME_ELAPSED_EXT, query);\n\t\t\t\t\t\treturn slot;\n\t\t\t\t}\n\t\t\t\treturn undefined;\n\t\t}\n\t\tend(slot) {\n\t\t\t\tif (slot !== undefined) {\n\t\t\t\t\t\tthis.device.gl.endQuery(this.ext.TIME_ELAPSED_EXT);\n\t\t\t\t}\n\t\t}\n\t\tframeStart() {\n\t\t\t\tthis.processEnableRequest();\n\t\t\t\tif (this._enabled) {\n\t\t\t\t\t\tthis.frameGPUMarkerSlot = this.start('GpuFrame');\n\t\t\t\t}\n\t\t}\n\t\tframeEnd() {\n\t\t\t\tif (this._enabled) {\n\t\t\t\t\t\tthis.end(this.frameGPUMarkerSlot);\n\t\t\t\t}\n\t\t}\n\t\trequest() {\n\t\t\t\tif (this._enabled) {\n\t\t\t\t\t\tconst ext = this.ext;\n\t\t\t\t\t\tconst gl = this.device.gl;\n\t\t\t\t\t\tconst renderVersion = this.device.renderVersion;\n\t\t\t\t\t\tconst frameQueries = this.frameQueries;\n\t\t\t\t\t\tif (frameQueries.length > 0) {\n\t\t\t\t\t\t\t\tthis.frameQueries = [];\n\t\t\t\t\t\t\t\tconst frameQueriesInfo = new FrameQueriesInfo();\n\t\t\t\t\t\t\t\tframeQueriesInfo.queries = frameQueries;\n\t\t\t\t\t\t\t\tframeQueriesInfo.renderVersion = renderVersion;\n\t\t\t\t\t\t\t\tthis.previousFrameQueries.push(frameQueriesInfo);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.previousFrameQueries.length > 0) {\n\t\t\t\t\t\t\t\tconst previousQueriesInfo = this.previousFrameQueries[0];\n\t\t\t\t\t\t\t\tconst previousQueries = previousQueriesInfo.queries;\n\t\t\t\t\t\t\t\tconst lastQuery = previousQueries[previousQueries.length - 1];\n\t\t\t\t\t\t\t\tconst available = gl.getQueryParameter(lastQuery, gl.QUERY_RESULT_AVAILABLE);\n\t\t\t\t\t\t\t\tconst disjoint = gl.getParameter(ext.GPU_DISJOINT_EXT);\n\t\t\t\t\t\t\t\tif (available && !disjoint) {\n\t\t\t\t\t\t\t\t\t\tthis.previousFrameQueries.shift();\n\t\t\t\t\t\t\t\t\t\tconst timings = this.timings;\n\t\t\t\t\t\t\t\t\t\ttimings.length = 0;\n\t\t\t\t\t\t\t\t\t\tfor(let i = 0; i < previousQueries.length; i++){\n\t\t\t\t\t\t\t\t\t\t\t\tconst query = previousQueries[i];\n\t\t\t\t\t\t\t\t\t\t\t\tconst duration = gl.getQueryParameter(query, gl.QUERY_RESULT);\n\t\t\t\t\t\t\t\t\t\t\t\ttimings[i] = duration * 0.000001;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.freeQueries.push(query);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tthis.report(previousQueriesInfo.renderVersion, timings);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (disjoint) {\n\t\t\t\t\t\t\t\t\t\tthis.previousFrameQueries.forEach((frameQueriesInfo)=>{\n\t\t\t\t\t\t\t\t\t\t\t\tthis.report(frameQueriesInfo.renderVersion, null);\n\t\t\t\t\t\t\t\t\t\t\t\tframeQueriesInfo.destroy(gl);\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tthis.previousFrameQueries.length = 0;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsuper.request(renderVersion);\n\t\t\t\t}\n\t\t}\n}\n\nconst invalidateAttachments = [];\nclass WebglGraphicsDevice extends GraphicsDevice {\n\t\tconstructor(canvas, options = {}){\n\t\t\t\tsuper(canvas, options), this._defaultFramebuffer = null, this._defaultFramebufferChanged = false;\n\t\t\t\toptions = this.initOptions;\n\t\t\t\tthis.updateClientRect();\n\t\t\t\tthis.initTextureUnits();\n\t\t\t\tthis.contextLost = false;\n\t\t\t\tthis._contextLostHandler = (event)=>{\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tthis.loseContext();\n\t\t\t\t\t\tthis.fire('devicelost');\n\t\t\t\t};\n\t\t\t\tthis._contextRestoredHandler = ()=>{\n\t\t\t\t\t\tthis.restoreContext();\n\t\t\t\t\t\tthis.fire('devicerestored');\n\t\t\t\t};\n\t\t\t\tconst ua = typeof navigator !== 'undefined' && navigator.userAgent;\n\t\t\t\tthis.forceDisableMultisampling = ua && ua.includes('AppleWebKit') && (ua.includes('15.4') || ua.includes('15_4'));\n\t\t\t\tif (this.forceDisableMultisampling) {\n\t\t\t\t\t\toptions.antialias = false;\n\t\t\t\t}\n\t\t\t\tif (platform.browserName === 'firefox') {\n\t\t\t\t\t\tconst ua = typeof navigator !== 'undefined' ? navigator.userAgent : '';\n\t\t\t\t\t\tconst match = ua.match(/Firefox\\/(\\d+(\\.\\d+)*)/);\n\t\t\t\t\t\tconst firefoxVersion = match ? match[1] : null;\n\t\t\t\t\t\tif (firefoxVersion) {\n\t\t\t\t\t\t\t\tconst version = parseFloat(firefoxVersion);\n\t\t\t\t\t\t\t\tconst disableAntialias = platform.name === 'windows' && (version >= 120 || version === 115) || platform.name === 'android' && version >= 132;\n\t\t\t\t\t\t\t\tif (disableAntialias) {\n\t\t\t\t\t\t\t\t\t\toptions.antialias = false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.backBufferAntialias = options.antialias ?? false;\n\t\t\t\toptions.antialias = false;\n\t\t\t\tconst gl = options.gl ?? canvas.getContext('webgl2', options);\n\t\t\t\tif (!gl) {\n\t\t\t\t\t\tthrow new Error('WebGL not supported');\n\t\t\t\t}\n\t\t\t\tthis.gl = gl;\n\t\t\t\tthis.isWebGL2 = true;\n\t\t\t\tthis._deviceType = DEVICETYPE_WEBGL2;\n\t\t\t\tthis.updateBackbufferFormat(null);\n\t\t\t\tconst isChrome = platform.browserName === 'chrome';\n\t\t\t\tconst isSafari = platform.browserName === 'safari';\n\t\t\t\tconst isMac = platform.browser && navigator.appVersion.indexOf('Mac') !== -1;\n\t\t\t\tthis._tempEnableSafariTextureUnitWorkaround = isSafari;\n\t\t\t\tthis._tempMacChromeBlitFramebufferWorkaround = isMac && isChrome && !options.alpha;\n\t\t\t\tcanvas.addEventListener('webglcontextlost', this._contextLostHandler, false);\n\t\t\t\tcanvas.addEventListener('webglcontextrestored', this._contextRestoredHandler, false);\n\t\t\t\tthis.initializeExtensions();\n\t\t\t\tthis.initializeCapabilities();\n\t\t\t\tthis.initializeRenderState();\n\t\t\t\tthis.initializeContextCaches();\n\t\t\t\tthis.createBackbuffer(null);\n\t\t\t\tthis.supportsImageBitmap = !isSafari && typeof ImageBitmap !== 'undefined';\n\t\t\t\tthis._samplerTypes = new Set([\n\t\t\t\t\t\tgl.SAMPLER_2D,\n\t\t\t\t\t\tgl.SAMPLER_CUBE,\n\t\t\t\t\t\tgl.UNSIGNED_INT_SAMPLER_2D,\n\t\t\t\t\t\tgl.INT_SAMPLER_2D,\n\t\t\t\t\t\tgl.SAMPLER_2D_SHADOW,\n\t\t\t\t\t\tgl.SAMPLER_CUBE_SHADOW,\n\t\t\t\t\t\tgl.SAMPLER_3D,\n\t\t\t\t\t\tgl.INT_SAMPLER_3D,\n\t\t\t\t\t\tgl.UNSIGNED_INT_SAMPLER_3D,\n\t\t\t\t\t\tgl.SAMPLER_2D_ARRAY,\n\t\t\t\t\t\tgl.INT_SAMPLER_2D_ARRAY,\n\t\t\t\t\t\tgl.UNSIGNED_INT_SAMPLER_2D_ARRAY\n\t\t\t\t]);\n\t\t\t\tthis.glAddress = [\n\t\t\t\t\t\tgl.REPEAT,\n\t\t\t\t\t\tgl.CLAMP_TO_EDGE,\n\t\t\t\t\t\tgl.MIRRORED_REPEAT\n\t\t\t\t];\n\t\t\t\tthis.glBlendEquation = [\n\t\t\t\t\t\tgl.FUNC_ADD,\n\t\t\t\t\t\tgl.FUNC_SUBTRACT,\n\t\t\t\t\t\tgl.FUNC_REVERSE_SUBTRACT,\n\t\t\t\t\t\tgl.MIN,\n\t\t\t\t\t\tgl.MAX\n\t\t\t\t];\n\t\t\t\tthis.glBlendFunctionColor = [\n\t\t\t\t\t\tgl.ZERO,\n\t\t\t\t\t\tgl.ONE,\n\t\t\t\t\t\tgl.SRC_COLOR,\n\t\t\t\t\t\tgl.ONE_MINUS_SRC_COLOR,\n\t\t\t\t\t\tgl.DST_COLOR,\n\t\t\t\t\t\tgl.ONE_MINUS_DST_COLOR,\n\t\t\t\t\t\tgl.SRC_ALPHA,\n\t\t\t\t\t\tgl.SRC_ALPHA_SATURATE,\n\t\t\t\t\t\tgl.ONE_MINUS_SRC_ALPHA,\n\t\t\t\t\t\tgl.DST_ALPHA,\n\t\t\t\t\t\tgl.ONE_MINUS_DST_ALPHA,\n\t\t\t\t\t\tgl.CONSTANT_COLOR,\n\t\t\t\t\t\tgl.ONE_MINUS_CONSTANT_COLOR\n\t\t\t\t];\n\t\t\t\tthis.glBlendFunctionAlpha = [\n\t\t\t\t\t\tgl.ZERO,\n\t\t\t\t\t\tgl.ONE,\n\t\t\t\t\t\tgl.SRC_COLOR,\n\t\t\t\t\t\tgl.ONE_MINUS_SRC_COLOR,\n\t\t\t\t\t\tgl.DST_COLOR,\n\t\t\t\t\t\tgl.ONE_MINUS_DST_COLOR,\n\t\t\t\t\t\tgl.SRC_ALPHA,\n\t\t\t\t\t\tgl.SRC_ALPHA_SATURATE,\n\t\t\t\t\t\tgl.ONE_MINUS_SRC_ALPHA,\n\t\t\t\t\t\tgl.DST_ALPHA,\n\t\t\t\t\t\tgl.ONE_MINUS_DST_ALPHA,\n\t\t\t\t\t\tgl.CONSTANT_ALPHA,\n\t\t\t\t\t\tgl.ONE_MINUS_CONSTANT_ALPHA\n\t\t\t\t];\n\t\t\t\tthis.glComparison = [\n\t\t\t\t\t\tgl.NEVER,\n\t\t\t\t\t\tgl.LESS,\n\t\t\t\t\t\tgl.EQUAL,\n\t\t\t\t\t\tgl.LEQUAL,\n\t\t\t\t\t\tgl.GREATER,\n\t\t\t\t\t\tgl.NOTEQUAL,\n\t\t\t\t\t\tgl.GEQUAL,\n\t\t\t\t\t\tgl.ALWAYS\n\t\t\t\t];\n\t\t\t\tthis.glStencilOp = [\n\t\t\t\t\t\tgl.KEEP,\n\t\t\t\t\t\tgl.ZERO,\n\t\t\t\t\t\tgl.REPLACE,\n\t\t\t\t\t\tgl.INCR,\n\t\t\t\t\t\tgl.INCR_WRAP,\n\t\t\t\t\t\tgl.DECR,\n\t\t\t\t\t\tgl.DECR_WRAP,\n\t\t\t\t\t\tgl.INVERT\n\t\t\t\t];\n\t\t\t\tthis.glClearFlag = [\n\t\t\t\t\t\t0,\n\t\t\t\t\t\tgl.COLOR_BUFFER_BIT,\n\t\t\t\t\t\tgl.DEPTH_BUFFER_BIT,\n\t\t\t\t\t\tgl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT,\n\t\t\t\t\t\tgl.STENCIL_BUFFER_BIT,\n\t\t\t\t\t\tgl.STENCIL_BUFFER_BIT | gl.COLOR_BUFFER_BIT,\n\t\t\t\t\t\tgl.STENCIL_BUFFER_BIT | gl.DEPTH_BUFFER_BIT,\n\t\t\t\t\t\tgl.STENCIL_BUFFER_BIT | gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT\n\t\t\t\t];\n\t\t\t\tthis.glCull = [\n\t\t\t\t\t\t0,\n\t\t\t\t\t\tgl.BACK,\n\t\t\t\t\t\tgl.FRONT,\n\t\t\t\t\t\tgl.FRONT_AND_BACK\n\t\t\t\t];\n\t\t\t\tthis.glFilter = [\n\t\t\t\t\t\tgl.NEAREST,\n\t\t\t\t\t\tgl.LINEAR,\n\t\t\t\t\t\tgl.NEAREST_MIPMAP_NEAREST,\n\t\t\t\t\t\tgl.NEAREST_MIPMAP_LINEAR,\n\t\t\t\t\t\tgl.LINEAR_MIPMAP_NEAREST,\n\t\t\t\t\t\tgl.LINEAR_MIPMAP_LINEAR\n\t\t\t\t];\n\t\t\t\tthis.glPrimitive = [\n\t\t\t\t\t\tgl.POINTS,\n\t\t\t\t\t\tgl.LINES,\n\t\t\t\t\t\tgl.LINE_LOOP,\n\t\t\t\t\t\tgl.LINE_STRIP,\n\t\t\t\t\t\tgl.TRIANGLES,\n\t\t\t\t\t\tgl.TRIANGLE_STRIP,\n\t\t\t\t\t\tgl.TRIANGLE_FAN\n\t\t\t\t];\n\t\t\t\tthis.glType = [\n\t\t\t\t\t\tgl.BYTE,\n\t\t\t\t\t\tgl.UNSIGNED_BYTE,\n\t\t\t\t\t\tgl.SHORT,\n\t\t\t\t\t\tgl.UNSIGNED_SHORT,\n\t\t\t\t\t\tgl.INT,\n\t\t\t\t\t\tgl.UNSIGNED_INT,\n\t\t\t\t\t\tgl.FLOAT,\n\t\t\t\t\t\tgl.HALF_FLOAT\n\t\t\t\t];\n\t\t\t\tthis.pcUniformType = {};\n\t\t\t\tthis.pcUniformType[gl.BOOL] = UNIFORMTYPE_BOOL;\n\t\t\t\tthis.pcUniformType[gl.INT] = UNIFORMTYPE_INT;\n\t\t\t\tthis.pcUniformType[gl.FLOAT] = UNIFORMTYPE_FLOAT;\n\t\t\t\tthis.pcUniformType[gl.FLOAT_VEC2] = UNIFORMTYPE_VEC2;\n\t\t\t\tthis.pcUniformType[gl.FLOAT_VEC3] = UNIFORMTYPE_VEC3;\n\t\t\t\tthis.pcUniformType[gl.FLOAT_VEC4] = UNIFORMTYPE_VEC4;\n\t\t\t\tthis.pcUniformType[gl.INT_VEC2] = UNIFORMTYPE_IVEC2;\n\t\t\t\tthis.pcUniformType[gl.INT_VEC3] = UNIFORMTYPE_IVEC3;\n\t\t\t\tthis.pcUniformType[gl.INT_VEC4] = UNIFORMTYPE_IVEC4;\n\t\t\t\tthis.pcUniformType[gl.BOOL_VEC2] = UNIFORMTYPE_BVEC2;\n\t\t\t\tthis.pcUniformType[gl.BOOL_VEC3] = UNIFORMTYPE_BVEC3;\n\t\t\t\tthis.pcUniformType[gl.BOOL_VEC4] = UNIFORMTYPE_BVEC4;\n\t\t\t\tthis.pcUniformType[gl.FLOAT_MAT2] = UNIFORMTYPE_MAT2;\n\t\t\t\tthis.pcUniformType[gl.FLOAT_MAT3] = UNIFORMTYPE_MAT3;\n\t\t\t\tthis.pcUniformType[gl.FLOAT_MAT4] = UNIFORMTYPE_MAT4;\n\t\t\t\tthis.pcUniformType[gl.SAMPLER_2D] = UNIFORMTYPE_TEXTURE2D;\n\t\t\t\tthis.pcUniformType[gl.SAMPLER_CUBE] = UNIFORMTYPE_TEXTURECUBE;\n\t\t\t\tthis.pcUniformType[gl.UNSIGNED_INT] = UNIFORMTYPE_UINT;\n\t\t\t\tthis.pcUniformType[gl.UNSIGNED_INT_VEC2] = UNIFORMTYPE_UVEC2;\n\t\t\t\tthis.pcUniformType[gl.UNSIGNED_INT_VEC3] = UNIFORMTYPE_UVEC3;\n\t\t\t\tthis.pcUniformType[gl.UNSIGNED_INT_VEC4] = UNIFORMTYPE_UVEC4;\n\t\t\t\tthis.pcUniformType[gl.SAMPLER_2D_SHADOW] = UNIFORMTYPE_TEXTURE2D_SHADOW;\n\t\t\t\tthis.pcUniformType[gl.SAMPLER_CUBE_SHADOW] = UNIFORMTYPE_TEXTURECUBE_SHADOW;\n\t\t\t\tthis.pcUniformType[gl.SAMPLER_2D_ARRAY] = UNIFORMTYPE_TEXTURE2D_ARRAY;\n\t\t\t\tthis.pcUniformType[gl.SAMPLER_3D] = UNIFORMTYPE_TEXTURE3D;\n\t\t\t\tthis.pcUniformType[gl.INT_SAMPLER_2D] = UNIFORMTYPE_ITEXTURE2D;\n\t\t\t\tthis.pcUniformType[gl.UNSIGNED_INT_SAMPLER_2D] = UNIFORMTYPE_UTEXTURE2D;\n\t\t\t\tthis.pcUniformType[gl.INT_SAMPLER_CUBE] = UNIFORMTYPE_ITEXTURECUBE;\n\t\t\t\tthis.pcUniformType[gl.UNSIGNED_INT_SAMPLER_2D] = UNIFORMTYPE_UTEXTURECUBE;\n\t\t\t\tthis.pcUniformType[gl.INT_SAMPLER_3D] = UNIFORMTYPE_ITEXTURE3D;\n\t\t\t\tthis.pcUniformType[gl.UNSIGNED_INT_SAMPLER_3D] = UNIFORMTYPE_UTEXTURE3D;\n\t\t\t\tthis.pcUniformType[gl.INT_SAMPLER_2D_ARRAY] = UNIFORMTYPE_ITEXTURE2D_ARRAY;\n\t\t\t\tthis.pcUniformType[gl.UNSIGNED_INT_SAMPLER_2D_ARRAY] = UNIFORMTYPE_UTEXTURE2D_ARRAY;\n\t\t\t\tthis.targetToSlot = {};\n\t\t\t\tthis.targetToSlot[gl.TEXTURE_2D] = 0;\n\t\t\t\tthis.targetToSlot[gl.TEXTURE_CUBE_MAP] = 1;\n\t\t\t\tthis.targetToSlot[gl.TEXTURE_3D] = 2;\n\t\t\t\tlet scopeX, scopeY, scopeZ, scopeW;\n\t\t\t\tlet uniformValue;\n\t\t\t\tthis.commitFunction = [];\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_BOOL] = function(uniform, value) {\n\t\t\t\t\t\tif (uniform.value !== value) {\n\t\t\t\t\t\t\t\tgl.uniform1i(uniform.locationId, value);\n\t\t\t\t\t\t\t\tuniform.value = value;\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_INT] = this.commitFunction[UNIFORMTYPE_BOOL];\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_FLOAT] = function(uniform, value) {\n\t\t\t\t\t\tif (uniform.value !== value) {\n\t\t\t\t\t\t\t\tgl.uniform1f(uniform.locationId, value);\n\t\t\t\t\t\t\t\tuniform.value = value;\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_VEC2] = function(uniform, value) {\n\t\t\t\t\t\tuniformValue = uniform.value;\n\t\t\t\t\t\tscopeX = value[0];\n\t\t\t\t\t\tscopeY = value[1];\n\t\t\t\t\t\tif (uniformValue[0] !== scopeX || uniformValue[1] !== scopeY) {\n\t\t\t\t\t\t\t\tgl.uniform2fv(uniform.locationId, value);\n\t\t\t\t\t\t\t\tuniformValue[0] = scopeX;\n\t\t\t\t\t\t\t\tuniformValue[1] = scopeY;\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_VEC3] = function(uniform, value) {\n\t\t\t\t\t\tuniformValue = uniform.value;\n\t\t\t\t\t\tscopeX = value[0];\n\t\t\t\t\t\tscopeY = value[1];\n\t\t\t\t\t\tscopeZ = value[2];\n\t\t\t\t\t\tif (uniformValue[0] !== scopeX || uniformValue[1] !== scopeY || uniformValue[2] !== scopeZ) {\n\t\t\t\t\t\t\t\tgl.uniform3fv(uniform.locationId, value);\n\t\t\t\t\t\t\t\tuniformValue[0] = scopeX;\n\t\t\t\t\t\t\t\tuniformValue[1] = scopeY;\n\t\t\t\t\t\t\t\tuniformValue[2] = scopeZ;\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_VEC4] = function(uniform, value) {\n\t\t\t\t\t\tuniformValue = uniform.value;\n\t\t\t\t\t\tscopeX = value[0];\n\t\t\t\t\t\tscopeY = value[1];\n\t\t\t\t\t\tscopeZ = value[2];\n\t\t\t\t\t\tscopeW = value[3];\n\t\t\t\t\t\tif (uniformValue[0] !== scopeX || uniformValue[1] !== scopeY || uniformValue[2] !== scopeZ || uniformValue[3] !== scopeW) {\n\t\t\t\t\t\t\t\tgl.uniform4fv(uniform.locationId, value);\n\t\t\t\t\t\t\t\tuniformValue[0] = scopeX;\n\t\t\t\t\t\t\t\tuniformValue[1] = scopeY;\n\t\t\t\t\t\t\t\tuniformValue[2] = scopeZ;\n\t\t\t\t\t\t\t\tuniformValue[3] = scopeW;\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_IVEC2] = function(uniform, value) {\n\t\t\t\t\t\tuniformValue = uniform.value;\n\t\t\t\t\t\tscopeX = value[0];\n\t\t\t\t\t\tscopeY = value[1];\n\t\t\t\t\t\tif (uniformValue[0] !== scopeX || uniformValue[1] !== scopeY) {\n\t\t\t\t\t\t\t\tgl.uniform2iv(uniform.locationId, value);\n\t\t\t\t\t\t\t\tuniformValue[0] = scopeX;\n\t\t\t\t\t\t\t\tuniformValue[1] = scopeY;\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_BVEC2] = this.commitFunction[UNIFORMTYPE_IVEC2];\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_IVEC3] = function(uniform, value) {\n\t\t\t\t\t\tuniformValue = uniform.value;\n\t\t\t\t\t\tscopeX = value[0];\n\t\t\t\t\t\tscopeY = value[1];\n\t\t\t\t\t\tscopeZ = value[2];\n\t\t\t\t\t\tif (uniformValue[0] !== scopeX || uniformValue[1] !== scopeY || uniformValue[2] !== scopeZ) {\n\t\t\t\t\t\t\t\tgl.uniform3iv(uniform.locationId, value);\n\t\t\t\t\t\t\t\tuniformValue[0] = scopeX;\n\t\t\t\t\t\t\t\tuniformValue[1] = scopeY;\n\t\t\t\t\t\t\t\tuniformValue[2] = scopeZ;\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_BVEC3] = this.commitFunction[UNIFORMTYPE_IVEC3];\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_IVEC4] = function(uniform, value) {\n\t\t\t\t\t\tuniformValue = uniform.value;\n\t\t\t\t\t\tscopeX = value[0];\n\t\t\t\t\t\tscopeY = value[1];\n\t\t\t\t\t\tscopeZ = value[2];\n\t\t\t\t\t\tscopeW = value[3];\n\t\t\t\t\t\tif (uniformValue[0] !== scopeX || uniformValue[1] !== scopeY || uniformValue[2] !== scopeZ || uniformValue[3] !== scopeW) {\n\t\t\t\t\t\t\t\tgl.uniform4iv(uniform.locationId, value);\n\t\t\t\t\t\t\t\tuniformValue[0] = scopeX;\n\t\t\t\t\t\t\t\tuniformValue[1] = scopeY;\n\t\t\t\t\t\t\t\tuniformValue[2] = scopeZ;\n\t\t\t\t\t\t\t\tuniformValue[3] = scopeW;\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_BVEC4] = this.commitFunction[UNIFORMTYPE_IVEC4];\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_MAT2] = function(uniform, value) {\n\t\t\t\t\t\tgl.uniformMatrix2fv(uniform.locationId, false, value);\n\t\t\t\t};\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_MAT3] = function(uniform, value) {\n\t\t\t\t\t\tgl.uniformMatrix3fv(uniform.locationId, false, value);\n\t\t\t\t};\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_MAT4] = function(uniform, value) {\n\t\t\t\t\t\tgl.uniformMatrix4fv(uniform.locationId, false, value);\n\t\t\t\t};\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_FLOATARRAY] = function(uniform, value) {\n\t\t\t\t\t\tgl.uniform1fv(uniform.locationId, value);\n\t\t\t\t};\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_VEC2ARRAY] = function(uniform, value) {\n\t\t\t\t\t\tgl.uniform2fv(uniform.locationId, value);\n\t\t\t\t};\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_VEC3ARRAY] = function(uniform, value) {\n\t\t\t\t\t\tgl.uniform3fv(uniform.locationId, value);\n\t\t\t\t};\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_VEC4ARRAY] = function(uniform, value) {\n\t\t\t\t\t\tgl.uniform4fv(uniform.locationId, value);\n\t\t\t\t};\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_UINT] = function(uniform, value) {\n\t\t\t\t\t\tif (uniform.value !== value) {\n\t\t\t\t\t\t\t\tgl.uniform1ui(uniform.locationId, value);\n\t\t\t\t\t\t\t\tuniform.value = value;\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_UVEC2] = function(uniform, value) {\n\t\t\t\t\t\tuniformValue = uniform.value;\n\t\t\t\t\t\tscopeX = value[0];\n\t\t\t\t\t\tscopeY = value[1];\n\t\t\t\t\t\tif (uniformValue[0] !== scopeX || uniformValue[1] !== scopeY) {\n\t\t\t\t\t\t\t\tgl.uniform2uiv(uniform.locationId, value);\n\t\t\t\t\t\t\t\tuniformValue[0] = scopeX;\n\t\t\t\t\t\t\t\tuniformValue[1] = scopeY;\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_UVEC3] = function(uniform, value) {\n\t\t\t\t\t\tuniformValue = uniform.value;\n\t\t\t\t\t\tscopeX = value[0];\n\t\t\t\t\t\tscopeY = value[1];\n\t\t\t\t\t\tscopeZ = value[2];\n\t\t\t\t\t\tif (uniformValue[0] !== scopeX || uniformValue[1] !== scopeY || uniformValue[2] !== scopeZ) {\n\t\t\t\t\t\t\t\tgl.uniform3uiv(uniform.locationId, value);\n\t\t\t\t\t\t\t\tuniformValue[0] = scopeX;\n\t\t\t\t\t\t\t\tuniformValue[1] = scopeY;\n\t\t\t\t\t\t\t\tuniformValue[2] = scopeZ;\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_UVEC4] = function(uniform, value) {\n\t\t\t\t\t\tuniformValue = uniform.value;\n\t\t\t\t\t\tscopeX = value[0];\n\t\t\t\t\t\tscopeY = value[1];\n\t\t\t\t\t\tscopeZ = value[2];\n\t\t\t\t\t\tscopeW = value[3];\n\t\t\t\t\t\tif (uniformValue[0] !== scopeX || uniformValue[1] !== scopeY || uniformValue[2] !== scopeZ || uniformValue[3] !== scopeW) {\n\t\t\t\t\t\t\t\tgl.uniform4uiv(uniform.locationId, value);\n\t\t\t\t\t\t\t\tuniformValue[0] = scopeX;\n\t\t\t\t\t\t\t\tuniformValue[1] = scopeY;\n\t\t\t\t\t\t\t\tuniformValue[2] = scopeZ;\n\t\t\t\t\t\t\t\tuniformValue[3] = scopeW;\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_INTARRAY] = function(uniform, value) {\n\t\t\t\t\t\tgl.uniform1iv(uniform.locationId, value);\n\t\t\t\t};\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_UINTARRAY] = function(uniform, value) {\n\t\t\t\t\t\tgl.uniform1uiv(uniform.locationId, value);\n\t\t\t\t};\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_BOOLARRAY] = this.commitFunction[UNIFORMTYPE_INTARRAY];\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_IVEC2ARRAY] = function(uniform, value) {\n\t\t\t\t\t\tgl.uniform2iv(uniform.locationId, value);\n\t\t\t\t};\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_UVEC2ARRAY] = function(uniform, value) {\n\t\t\t\t\t\tgl.uniform2uiv(uniform.locationId, value);\n\t\t\t\t};\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_BVEC2ARRAY] = this.commitFunction[UNIFORMTYPE_IVEC2ARRAY];\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_IVEC3ARRAY] = function(uniform, value) {\n\t\t\t\t\t\tgl.uniform3iv(uniform.locationId, value);\n\t\t\t\t};\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_UVEC3ARRAY] = function(uniform, value) {\n\t\t\t\t\t\tgl.uniform3uiv(uniform.locationId, value);\n\t\t\t\t};\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_BVEC3ARRAY] = this.commitFunction[UNIFORMTYPE_IVEC3ARRAY];\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_IVEC4ARRAY] = function(uniform, value) {\n\t\t\t\t\t\tgl.uniform4iv(uniform.locationId, value);\n\t\t\t\t};\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_UVEC4ARRAY] = function(uniform, value) {\n\t\t\t\t\t\tgl.uniform4uiv(uniform.locationId, value);\n\t\t\t\t};\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_BVEC4ARRAY] = this.commitFunction[UNIFORMTYPE_IVEC4ARRAY];\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_MAT4ARRAY] = function(uniform, value) {\n\t\t\t\t\t\tgl.uniformMatrix4fv(uniform.locationId, false, value);\n\t\t\t\t};\n\t\t\t\tthis.constantTexSource = this.scope.resolve('source');\n\t\t\t\tthis.postInit();\n\t\t}\n\t\tpostInit() {\n\t\t\t\tsuper.postInit();\n\t\t\t\tthis.gpuProfiler = new WebglGpuProfiler(this);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tsuper.destroy();\n\t\t\t\tconst gl = this.gl;\n\t\t\t\tif (this.feedback) {\n\t\t\t\t\t\tgl.deleteTransformFeedback(this.feedback);\n\t\t\t\t}\n\t\t\t\tthis.clearVertexArrayObjectCache();\n\t\t\t\tthis.canvas.removeEventListener('webglcontextlost', this._contextLostHandler, false);\n\t\t\t\tthis.canvas.removeEventListener('webglcontextrestored', this._contextRestoredHandler, false);\n\t\t\t\tthis._contextLostHandler = null;\n\t\t\t\tthis._contextRestoredHandler = null;\n\t\t\t\tthis.gl = null;\n\t\t\t\tsuper.postDestroy();\n\t\t}\n\t\tcreateBackbuffer(frameBuffer) {\n\t\t\t\tthis.supportsStencil = this.initOptions.stencil;\n\t\t\t\tthis.backBuffer = new RenderTarget({\n\t\t\t\t\t\tname: 'WebglFramebuffer',\n\t\t\t\t\t\tgraphicsDevice: this,\n\t\t\t\t\t\tdepth: this.initOptions.depth,\n\t\t\t\t\t\tstencil: this.supportsStencil,\n\t\t\t\t\t\tsamples: this.samples\n\t\t\t\t});\n\t\t\t\tthis.backBuffer.impl.suppliedColorFramebuffer = frameBuffer;\n\t\t}\n\t\tupdateBackbufferFormat(framebuffer) {\n\t\t\t\tconst gl = this.gl;\n\t\t\t\tgl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);\n\t\t\t\tconst alphaBits = this.gl.getParameter(this.gl.ALPHA_BITS);\n\t\t\t\tthis.backBufferFormat = alphaBits ? PIXELFORMAT_RGBA8 : PIXELFORMAT_RGB8;\n\t\t}\n\t\tupdateBackbuffer() {\n\t\t\t\tconst resolutionChanged = this.canvas.width !== this.backBufferSize.x || this.canvas.height !== this.backBufferSize.y;\n\t\t\t\tif (this._defaultFramebufferChanged || resolutionChanged) {\n\t\t\t\t\t\tif (this._defaultFramebufferChanged) {\n\t\t\t\t\t\t\t\tthis.updateBackbufferFormat(this._defaultFramebuffer);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._defaultFramebufferChanged = false;\n\t\t\t\t\t\tthis.backBufferSize.set(this.canvas.width, this.canvas.height);\n\t\t\t\t\t\tthis.backBuffer.destroy();\n\t\t\t\t\t\tthis.createBackbuffer(this._defaultFramebuffer);\n\t\t\t\t}\n\t\t}\n\t\tcreateVertexBufferImpl(vertexBuffer, format) {\n\t\t\t\treturn new WebglVertexBuffer();\n\t\t}\n\t\tcreateIndexBufferImpl(indexBuffer) {\n\t\t\t\treturn new WebglIndexBuffer(indexBuffer);\n\t\t}\n\t\tcreateShaderImpl(shader) {\n\t\t\t\treturn new WebglShader(shader);\n\t\t}\n\t\tcreateDrawCommandImpl(drawCommands) {\n\t\t\t\treturn new WebglDrawCommands(drawCommands.indexSizeBytes);\n\t\t}\n\t\tcreateTextureImpl(texture) {\n\t\t\t\treturn new WebglTexture(texture);\n\t\t}\n\t\tcreateRenderTargetImpl(renderTarget) {\n\t\t\t\treturn new WebglRenderTarget();\n\t\t}\n\t\tcreateUploadStreamImpl(uploadStream) {\n\t\t\t\treturn new WebglUploadStream(uploadStream);\n\t\t}\n\t\tgetPrecision() {\n\t\t\t\tconst gl = this.gl;\n\t\t\t\tlet precision = 'highp';\n\t\t\t\tif (gl.getShaderPrecisionFormat) {\n\t\t\t\t\t\tconst vertexShaderPrecisionHighpFloat = gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.HIGH_FLOAT);\n\t\t\t\t\t\tconst vertexShaderPrecisionMediumpFloat = gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.MEDIUM_FLOAT);\n\t\t\t\t\t\tconst fragmentShaderPrecisionHighpFloat = gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_FLOAT);\n\t\t\t\t\t\tconst fragmentShaderPrecisionMediumpFloat = gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.MEDIUM_FLOAT);\n\t\t\t\t\t\tif (vertexShaderPrecisionHighpFloat && vertexShaderPrecisionMediumpFloat && fragmentShaderPrecisionHighpFloat && fragmentShaderPrecisionMediumpFloat) {\n\t\t\t\t\t\t\t\tconst highpAvailable = vertexShaderPrecisionHighpFloat.precision > 0 && fragmentShaderPrecisionHighpFloat.precision > 0;\n\t\t\t\t\t\t\t\tconst mediumpAvailable = vertexShaderPrecisionMediumpFloat.precision > 0 && fragmentShaderPrecisionMediumpFloat.precision > 0;\n\t\t\t\t\t\t\t\tif (!highpAvailable) {\n\t\t\t\t\t\t\t\t\t\tif (mediumpAvailable) {\n\t\t\t\t\t\t\t\t\t\t\t\tprecision = 'mediump';\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tprecision = 'lowp';\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn precision;\n\t\t}\n\t\tgetExtension() {\n\t\t\t\tfor(let i = 0; i < arguments.length; i++){\n\t\t\t\t\t\tif (this.supportedExtensions.indexOf(arguments[i]) !== -1) {\n\t\t\t\t\t\t\t\treturn this.gl.getExtension(arguments[i]);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tget extDisjointTimerQuery() {\n\t\t\t\tif (!this._extDisjointTimerQuery) {\n\t\t\t\t\t\tthis._extDisjointTimerQuery = this.getExtension('EXT_disjoint_timer_query_webgl2', 'EXT_disjoint_timer_query');\n\t\t\t\t}\n\t\t\t\treturn this._extDisjointTimerQuery;\n\t\t}\n\t\tinitializeExtensions() {\n\t\t\t\tconst gl = this.gl;\n\t\t\t\tthis.supportedExtensions = gl.getSupportedExtensions() ?? [];\n\t\t\t\tthis._extDisjointTimerQuery = null;\n\t\t\t\tthis.textureRG11B10Renderable = true;\n\t\t\t\tthis.extColorBufferFloat = this.getExtension('EXT_color_buffer_float');\n\t\t\t\tthis.textureFloatRenderable = !!this.extColorBufferFloat;\n\t\t\t\tthis.extColorBufferHalfFloat = this.getExtension('EXT_color_buffer_half_float');\n\t\t\t\tthis.textureHalfFloatRenderable = !!this.extColorBufferHalfFloat || !!this.extColorBufferFloat;\n\t\t\t\tthis.extDebugRendererInfo = this.getExtension('WEBGL_debug_renderer_info');\n\t\t\t\tthis.extTextureFloatLinear = this.getExtension('OES_texture_float_linear');\n\t\t\t\tthis.textureFloatFilterable = !!this.extTextureFloatLinear;\n\t\t\t\tthis.extFloatBlend = this.getExtension('EXT_float_blend');\n\t\t\t\tthis.extTextureFilterAnisotropic = this.getExtension('EXT_texture_filter_anisotropic', 'WEBKIT_EXT_texture_filter_anisotropic');\n\t\t\t\tthis.extParallelShaderCompile = this.getExtension('KHR_parallel_shader_compile');\n\t\t\t\tthis.extMultiDraw = this.getExtension('WEBGL_multi_draw');\n\t\t\t\tthis.supportsMultiDraw = !!this.extMultiDraw;\n\t\t\t\tthis.extCompressedTextureETC1 = this.getExtension('WEBGL_compressed_texture_etc1');\n\t\t\t\tthis.extCompressedTextureETC = this.getExtension('WEBGL_compressed_texture_etc');\n\t\t\t\tthis.extCompressedTexturePVRTC = this.getExtension('WEBGL_compressed_texture_pvrtc', 'WEBKIT_WEBGL_compressed_texture_pvrtc');\n\t\t\t\tthis.extCompressedTextureS3TC = this.getExtension('WEBGL_compressed_texture_s3tc', 'WEBKIT_WEBGL_compressed_texture_s3tc');\n\t\t\t\tthis.extCompressedTextureS3TC_SRGB = this.getExtension('WEBGL_compressed_texture_s3tc_srgb');\n\t\t\t\tthis.extCompressedTextureATC = this.getExtension('WEBGL_compressed_texture_atc');\n\t\t\t\tthis.extCompressedTextureASTC = this.getExtension('WEBGL_compressed_texture_astc');\n\t\t\t\tthis.extTextureCompressionBPTC = this.getExtension('EXT_texture_compression_bptc');\n\t\t}\n\t\tinitializeCapabilities() {\n\t\t\t\tconst gl = this.gl;\n\t\t\t\tlet ext;\n\t\t\t\tconst userAgent = typeof navigator !== 'undefined' ? navigator.userAgent : '';\n\t\t\t\tthis.maxPrecision = this.precision = this.getPrecision();\n\t\t\t\tconst contextAttribs = gl.getContextAttributes();\n\t\t\t\tthis.supportsMsaa = contextAttribs?.antialias ?? false;\n\t\t\t\tthis.supportsStencil = contextAttribs?.stencil ?? false;\n\t\t\t\tthis.maxTextureSize = gl.getParameter(gl.MAX_TEXTURE_SIZE);\n\t\t\t\tthis.maxCubeMapSize = gl.getParameter(gl.MAX_CUBE_MAP_TEXTURE_SIZE);\n\t\t\t\tthis.maxRenderBufferSize = gl.getParameter(gl.MAX_RENDERBUFFER_SIZE);\n\t\t\t\tthis.maxTextures = gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS);\n\t\t\t\tthis.maxCombinedTextures = gl.getParameter(gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS);\n\t\t\t\tthis.maxVertexTextures = gl.getParameter(gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS);\n\t\t\t\tthis.vertexUniformsCount = gl.getParameter(gl.MAX_VERTEX_UNIFORM_VECTORS);\n\t\t\t\tthis.fragmentUniformsCount = gl.getParameter(gl.MAX_FRAGMENT_UNIFORM_VECTORS);\n\t\t\t\tthis.maxColorAttachments = gl.getParameter(gl.MAX_COLOR_ATTACHMENTS);\n\t\t\t\tthis.maxVolumeSize = gl.getParameter(gl.MAX_3D_TEXTURE_SIZE);\n\t\t\t\text = this.extDebugRendererInfo;\n\t\t\t\tthis.unmaskedRenderer = ext ? gl.getParameter(ext.UNMASKED_RENDERER_WEBGL) : '';\n\t\t\t\tthis.unmaskedVendor = ext ? gl.getParameter(ext.UNMASKED_VENDOR_WEBGL) : '';\n\t\t\t\tconst maliRendererRegex = /\\bMali-G52+/;\n\t\t\t\tconst samsungModelRegex = /SM-[a-zA-Z0-9]+/;\n\t\t\t\tthis.supportsGpuParticles = !(this.unmaskedVendor === 'ARM' && userAgent.match(samsungModelRegex)) && !this.unmaskedRenderer.match(maliRendererRegex);\n\t\t\t\text = this.extTextureFilterAnisotropic;\n\t\t\t\tthis.maxAnisotropy = ext ? gl.getParameter(ext.MAX_TEXTURE_MAX_ANISOTROPY_EXT) : 1;\n\t\t\t\tconst antialiasSupported = !this.forceDisableMultisampling;\n\t\t\t\tthis.maxSamples = antialiasSupported ? gl.getParameter(gl.MAX_SAMPLES) : 1;\n\t\t\t\tthis.maxSamples = Math.min(this.maxSamples, 4);\n\t\t\t\tthis.samples = antialiasSupported && this.backBufferAntialias ? this.maxSamples : 1;\n\t\t\t\tthis.supportsAreaLights = !platform.android;\n\t\t\t\tif (this.maxTextures <= 8) {\n\t\t\t\t\t\tthis.supportsAreaLights = false;\n\t\t\t\t}\n\t\t\t\tthis.initCapsDefines();\n\t\t}\n\t\tinitializeRenderState() {\n\t\t\t\tsuper.initializeRenderState();\n\t\t\t\tconst gl = this.gl;\n\t\t\t\tgl.disable(gl.BLEND);\n\t\t\t\tgl.blendFunc(gl.ONE, gl.ZERO);\n\t\t\t\tgl.blendEquation(gl.FUNC_ADD);\n\t\t\t\tgl.colorMask(true, true, true, true);\n\t\t\t\tgl.blendColor(0, 0, 0, 0);\n\t\t\t\tgl.enable(gl.CULL_FACE);\n\t\t\t\tthis.cullFace = gl.BACK;\n\t\t\t\tgl.cullFace(gl.BACK);\n\t\t\t\tgl.enable(gl.DEPTH_TEST);\n\t\t\t\tgl.depthFunc(gl.LEQUAL);\n\t\t\t\tgl.depthMask(true);\n\t\t\t\tthis.stencil = false;\n\t\t\t\tgl.disable(gl.STENCIL_TEST);\n\t\t\t\tthis.stencilFuncFront = this.stencilFuncBack = FUNC_ALWAYS;\n\t\t\t\tthis.stencilRefFront = this.stencilRefBack = 0;\n\t\t\t\tthis.stencilMaskFront = this.stencilMaskBack = 0xFF;\n\t\t\t\tgl.stencilFunc(gl.ALWAYS, 0, 0xFF);\n\t\t\t\tthis.stencilFailFront = this.stencilFailBack = STENCILOP_KEEP;\n\t\t\t\tthis.stencilZfailFront = this.stencilZfailBack = STENCILOP_KEEP;\n\t\t\t\tthis.stencilZpassFront = this.stencilZpassBack = STENCILOP_KEEP;\n\t\t\t\tthis.stencilWriteMaskFront = 0xFF;\n\t\t\t\tthis.stencilWriteMaskBack = 0xFF;\n\t\t\t\tgl.stencilOp(gl.KEEP, gl.KEEP, gl.KEEP);\n\t\t\t\tgl.stencilMask(0xFF);\n\t\t\t\tthis.alphaToCoverage = false;\n\t\t\t\tthis.raster = true;\n\t\t\t\tgl.disable(gl.SAMPLE_ALPHA_TO_COVERAGE);\n\t\t\t\tgl.disable(gl.RASTERIZER_DISCARD);\n\t\t\t\tthis.depthBiasEnabled = false;\n\t\t\t\tgl.disable(gl.POLYGON_OFFSET_FILL);\n\t\t\t\tthis.clearDepth = 1;\n\t\t\t\tgl.clearDepth(1);\n\t\t\t\tthis.clearColor = new Color(0, 0, 0, 0);\n\t\t\t\tgl.clearColor(0, 0, 0, 0);\n\t\t\t\tthis.clearStencil = 0;\n\t\t\t\tgl.clearStencil(0);\n\t\t\t\tgl.hint(gl.FRAGMENT_SHADER_DERIVATIVE_HINT, gl.NICEST);\n\t\t\t\tgl.enable(gl.SCISSOR_TEST);\n\t\t\t\tgl.pixelStorei(gl.UNPACK_COLORSPACE_CONVERSION_WEBGL, gl.NONE);\n\t\t\t\tthis.unpackFlipY = false;\n\t\t\t\tgl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false);\n\t\t\t\tthis.unpackPremultiplyAlpha = false;\n\t\t\t\tgl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, false);\n\t\t\t\tgl.pixelStorei(gl.UNPACK_ALIGNMENT, 1);\n\t\t}\n\t\tinitTextureUnits(count = 16) {\n\t\t\t\tthis.textureUnits = [];\n\t\t\t\tfor(let i = 0; i < count; i++){\n\t\t\t\t\t\tthis.textureUnits.push([\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t]);\n\t\t\t\t}\n\t\t}\n\t\tinitializeContextCaches() {\n\t\t\t\tsuper.initializeContextCaches();\n\t\t\t\tthis._vaoMap = new Map();\n\t\t\t\tthis.boundVao = null;\n\t\t\t\tthis.activeFramebuffer = null;\n\t\t\t\tthis.feedback = null;\n\t\t\t\tthis.transformFeedbackBuffer = null;\n\t\t\t\tthis.textureUnit = 0;\n\t\t\t\tthis.initTextureUnits(this.maxCombinedTextures);\n\t\t}\n\t\tloseContext() {\n\t\t\t\tsuper.loseContext();\n\t\t\t\tfor (const shader of this.shaders){\n\t\t\t\t\t\tshader.loseContext();\n\t\t\t\t}\n\t\t}\n\t\trestoreContext() {\n\t\t\t\tthis.initializeExtensions();\n\t\t\t\tthis.initializeCapabilities();\n\t\t\t\tsuper.restoreContext();\n\t\t\t\tfor (const shader of this.shaders){\n\t\t\t\t\t\tshader.restoreContext();\n\t\t\t\t}\n\t\t}\n\t\tsetViewport(x, y, w, h) {\n\t\t\t\tif (this.vx !== x || this.vy !== y || this.vw !== w || this.vh !== h) {\n\t\t\t\t\t\tthis.gl.viewport(x, y, w, h);\n\t\t\t\t\t\tthis.vx = x;\n\t\t\t\t\t\tthis.vy = y;\n\t\t\t\t\t\tthis.vw = w;\n\t\t\t\t\t\tthis.vh = h;\n\t\t\t\t}\n\t\t}\n\t\tsetScissor(x, y, w, h) {\n\t\t\t\tif (this.sx !== x || this.sy !== y || this.sw !== w || this.sh !== h) {\n\t\t\t\t\t\tthis.gl.scissor(x, y, w, h);\n\t\t\t\t\t\tthis.sx = x;\n\t\t\t\t\t\tthis.sy = y;\n\t\t\t\t\t\tthis.sw = w;\n\t\t\t\t\t\tthis.sh = h;\n\t\t\t\t}\n\t\t}\n\t\tsetFramebuffer(fb) {\n\t\t\t\tif (this.activeFramebuffer !== fb) {\n\t\t\t\t\t\tconst gl = this.gl;\n\t\t\t\t\t\tgl.bindFramebuffer(gl.FRAMEBUFFER, fb);\n\t\t\t\t\t\tthis.activeFramebuffer = fb;\n\t\t\t\t}\n\t\t}\n\t\tcopyRenderTarget(source, dest, color, depth) {\n\t\t\t\tconst gl = this.gl;\n\t\t\t\tif (source === this.backBuffer) {\n\t\t\t\t\t\tsource = null;\n\t\t\t\t}\n\t\t\t\tif (color) {\n\t\t\t\t\t\tif (!dest) {\n\t\t\t\t\t\t\t\tif (!source._colorBuffer) {\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (source) {\n\t\t\t\t\t\t\t\tif (!source._colorBuffer || !dest._colorBuffer) {\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (source._colorBuffer._format !== dest._colorBuffer._format) {\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (depth && source) {\n\t\t\t\t\t\tif (!source._depth) {\n\t\t\t\t\t\t\t\tif (!source._depthBuffer || !dest._depthBuffer) {\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (source._depthBuffer._format !== dest._depthBuffer._format) {\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst prevRt = this.renderTarget;\n\t\t\t\tthis.renderTarget = dest;\n\t\t\t\tthis.updateBegin();\n\t\t\t\tconst src = source ? source.impl._glFrameBuffer : this.backBuffer?.impl._glFrameBuffer;\n\t\t\t\tconst dst = dest ? dest.impl._glFrameBuffer : this.backBuffer?.impl._glFrameBuffer;\n\t\t\t\tgl.bindFramebuffer(gl.READ_FRAMEBUFFER, src);\n\t\t\t\tgl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, dst);\n\t\t\t\tconst w = source ? source.width : dest ? dest.width : this.width;\n\t\t\t\tconst h = source ? source.height : dest ? dest.height : this.height;\n\t\t\t\tgl.blitFramebuffer(0, 0, w, h, 0, 0, w, h, (color ? gl.COLOR_BUFFER_BIT : 0) | (depth ? gl.DEPTH_BUFFER_BIT : 0), gl.NEAREST);\n\t\t\t\tthis.renderTarget = prevRt;\n\t\t\t\tgl.bindFramebuffer(gl.FRAMEBUFFER, prevRt ? prevRt.impl._glFrameBuffer : null);\n\t\t\t\treturn true;\n\t\t}\n\t\tframeStart() {\n\t\t\t\tsuper.frameStart();\n\t\t\t\tthis.updateBackbuffer();\n\t\t\t\tthis.gpuProfiler.frameStart();\n\t\t}\n\t\tframeEnd() {\n\t\t\t\tsuper.frameEnd();\n\t\t\t\tthis.gpuProfiler.frameEnd();\n\t\t\t\tthis.gpuProfiler.request();\n\t\t}\n\t\tstartRenderPass(renderPass) {\n\t\t\t\tconst rt = renderPass.renderTarget ?? this.backBuffer;\n\t\t\t\tthis.renderTarget = rt;\n\t\t\t\tthis.updateBegin();\n\t\t\t\tconst { width, height } = rt;\n\t\t\t\tthis.setViewport(0, 0, width, height);\n\t\t\t\tthis.setScissor(0, 0, width, height);\n\t\t\t\tconst colorOps = renderPass.colorOps;\n\t\t\t\tconst depthStencilOps = renderPass.depthStencilOps;\n\t\t\t\tif (colorOps?.clear || depthStencilOps.clearDepth || depthStencilOps.clearStencil) {\n\t\t\t\t\t\tlet clearFlags = 0;\n\t\t\t\t\t\tconst clearOptions = {};\n\t\t\t\t\t\tif (colorOps?.clear) {\n\t\t\t\t\t\t\t\tclearFlags |= CLEARFLAG_COLOR;\n\t\t\t\t\t\t\t\tclearOptions.color = [\n\t\t\t\t\t\t\t\t\t\tcolorOps.clearValue.r,\n\t\t\t\t\t\t\t\t\t\tcolorOps.clearValue.g,\n\t\t\t\t\t\t\t\t\t\tcolorOps.clearValue.b,\n\t\t\t\t\t\t\t\t\t\tcolorOps.clearValue.a\n\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (depthStencilOps.clearDepth) {\n\t\t\t\t\t\t\t\tclearFlags |= CLEARFLAG_DEPTH;\n\t\t\t\t\t\t\t\tclearOptions.depth = depthStencilOps.clearDepthValue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (depthStencilOps.clearStencil) {\n\t\t\t\t\t\t\t\tclearFlags |= CLEARFLAG_STENCIL;\n\t\t\t\t\t\t\t\tclearOptions.stencil = depthStencilOps.clearStencilValue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclearOptions.flags = clearFlags;\n\t\t\t\t\t\tthis.clear(clearOptions);\n\t\t\t\t}\n\t\t\t\tthis.insideRenderPass = true;\n\t\t}\n\t\tendRenderPass(renderPass) {\n\t\t\t\tthis.unbindVertexArray();\n\t\t\t\tconst target = this.renderTarget;\n\t\t\t\tconst colorBufferCount = renderPass.colorArrayOps.length;\n\t\t\t\tif (target) {\n\t\t\t\t\t\tinvalidateAttachments.length = 0;\n\t\t\t\t\t\tconst gl = this.gl;\n\t\t\t\t\t\tfor(let i = 0; i < colorBufferCount; i++){\n\t\t\t\t\t\t\t\tconst colorOps = renderPass.colorArrayOps[i];\n\t\t\t\t\t\t\t\tif (!(colorOps.store || colorOps.resolve)) {\n\t\t\t\t\t\t\t\t\t\tinvalidateAttachments.push(gl.COLOR_ATTACHMENT0 + i);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (target !== this.backBuffer) {\n\t\t\t\t\t\t\t\tif (!renderPass.depthStencilOps.storeDepth) {\n\t\t\t\t\t\t\t\t\t\tinvalidateAttachments.push(gl.DEPTH_ATTACHMENT);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (!renderPass.depthStencilOps.storeStencil) {\n\t\t\t\t\t\t\t\t\t\tinvalidateAttachments.push(gl.STENCIL_ATTACHMENT);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (invalidateAttachments.length > 0) {\n\t\t\t\t\t\t\t\tif (renderPass.fullSizeClearRect) {\n\t\t\t\t\t\t\t\t\t\tgl.invalidateFramebuffer(gl.DRAW_FRAMEBUFFER, invalidateAttachments);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (colorBufferCount && renderPass.colorOps?.resolve) {\n\t\t\t\t\t\t\t\tif (renderPass.samples > 1 && target.autoResolve) {\n\t\t\t\t\t\t\t\t\t\ttarget.resolve(true, false);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (target.depthBuffer && renderPass.depthStencilOps.resolveDepth) {\n\t\t\t\t\t\t\t\tif (renderPass.samples > 1 && target.autoResolve) {\n\t\t\t\t\t\t\t\t\t\ttarget.resolve(false, true);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor(let i = 0; i < colorBufferCount; i++){\n\t\t\t\t\t\t\t\tconst colorOps = renderPass.colorArrayOps[i];\n\t\t\t\t\t\t\t\tif (colorOps.genMipmaps) {\n\t\t\t\t\t\t\t\t\t\tconst colorBuffer = target._colorBuffers[i];\n\t\t\t\t\t\t\t\t\t\tif (colorBuffer && colorBuffer.impl._glTexture && colorBuffer.mipmaps) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.activeTexture(this.maxCombinedTextures - 1);\n\t\t\t\t\t\t\t\t\t\t\t\tthis.bindTexture(colorBuffer);\n\t\t\t\t\t\t\t\t\t\t\t\tthis.gl.generateMipmap(colorBuffer.impl._glTarget);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.insideRenderPass = false;\n\t\t}\n\t\tset defaultFramebuffer(value) {\n\t\t\t\tif (this._defaultFramebuffer !== value) {\n\t\t\t\t\t\tthis._defaultFramebuffer = value;\n\t\t\t\t\t\tthis._defaultFramebufferChanged = true;\n\t\t\t\t}\n\t\t}\n\t\tget defaultFramebuffer() {\n\t\t\t\treturn this._defaultFramebuffer;\n\t\t}\n\t\tupdateBegin() {\n\t\t\t\tthis.boundVao = null;\n\t\t\t\tif (this._tempEnableSafariTextureUnitWorkaround) {\n\t\t\t\t\t\tfor(let unit = 0; unit < this.textureUnits.length; ++unit){\n\t\t\t\t\t\t\t\tfor(let slot = 0; slot < 3; ++slot){\n\t\t\t\t\t\t\t\t\t\tthis.textureUnits[unit][slot] = null;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst target = this.renderTarget ?? this.backBuffer;\n\t\t\t\tconst targetImpl = target.impl;\n\t\t\t\tif (!targetImpl.initialized) {\n\t\t\t\t\t\tthis.initRenderTarget(target);\n\t\t\t\t}\n\t\t\t\tthis.setFramebuffer(targetImpl._glFrameBuffer);\n\t\t}\n\t\tupdateEnd() {\n\t\t\t\tthis.unbindVertexArray();\n\t\t\t\tconst target = this.renderTarget;\n\t\t\t\tif (target && target !== this.backBuffer) {\n\t\t\t\t\t\tif (target._samples > 1 && target.autoResolve) {\n\t\t\t\t\t\t\t\ttarget.resolve();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst colorBuffer = target._colorBuffer;\n\t\t\t\t\t\tif (colorBuffer && colorBuffer.impl._glTexture && colorBuffer.mipmaps) {\n\t\t\t\t\t\t\t\tthis.activeTexture(this.maxCombinedTextures - 1);\n\t\t\t\t\t\t\t\tthis.bindTexture(colorBuffer);\n\t\t\t\t\t\t\t\tthis.gl.generateMipmap(colorBuffer.impl._glTarget);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tsetUnpackFlipY(flipY) {\n\t\t\t\tif (this.unpackFlipY !== flipY) {\n\t\t\t\t\t\tthis.unpackFlipY = flipY;\n\t\t\t\t\t\tconst gl = this.gl;\n\t\t\t\t\t\tgl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, flipY);\n\t\t\t\t}\n\t\t}\n\t\tsetUnpackPremultiplyAlpha(premultiplyAlpha) {\n\t\t\t\tif (this.unpackPremultiplyAlpha !== premultiplyAlpha) {\n\t\t\t\t\t\tthis.unpackPremultiplyAlpha = premultiplyAlpha;\n\t\t\t\t\t\tconst gl = this.gl;\n\t\t\t\t\t\tgl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, premultiplyAlpha);\n\t\t\t\t}\n\t\t}\n\t\tactiveTexture(textureUnit) {\n\t\t\t\tif (this.textureUnit !== textureUnit) {\n\t\t\t\t\t\tthis.gl.activeTexture(this.gl.TEXTURE0 + textureUnit);\n\t\t\t\t\t\tthis.textureUnit = textureUnit;\n\t\t\t\t}\n\t\t}\n\t\tbindTexture(texture) {\n\t\t\t\tconst impl = texture.impl;\n\t\t\t\tconst textureTarget = impl._glTarget;\n\t\t\t\tconst textureObject = impl._glTexture;\n\t\t\t\tconst textureUnit = this.textureUnit;\n\t\t\t\tconst slot = this.targetToSlot[textureTarget];\n\t\t\t\tif (this.textureUnits[textureUnit][slot] !== textureObject) {\n\t\t\t\t\t\tthis.gl.bindTexture(textureTarget, textureObject);\n\t\t\t\t\t\tthis.textureUnits[textureUnit][slot] = textureObject;\n\t\t\t\t}\n\t\t}\n\t\tbindTextureOnUnit(texture, textureUnit) {\n\t\t\t\tconst impl = texture.impl;\n\t\t\t\tconst textureTarget = impl._glTarget;\n\t\t\t\tconst textureObject = impl._glTexture;\n\t\t\t\tconst slot = this.targetToSlot[textureTarget];\n\t\t\t\tif (this.textureUnits[textureUnit][slot] !== textureObject) {\n\t\t\t\t\t\tthis.activeTexture(textureUnit);\n\t\t\t\t\t\tthis.gl.bindTexture(textureTarget, textureObject);\n\t\t\t\t\t\tthis.textureUnits[textureUnit][slot] = textureObject;\n\t\t\t\t}\n\t\t}\n\t\tsetTextureParameters(texture) {\n\t\t\t\tconst gl = this.gl;\n\t\t\t\tconst flags = texture.impl.dirtyParameterFlags;\n\t\t\t\tconst target = texture.impl._glTarget;\n\t\t\t\tif (flags & TEXPROPERTY_MIN_FILTER) {\n\t\t\t\t\t\tlet filter = texture._minFilter;\n\t\t\t\t\t\tif (!texture._mipmaps || texture._compressed && texture._levels.length === 1) {\n\t\t\t\t\t\t\t\tif (filter === FILTER_NEAREST_MIPMAP_NEAREST || filter === FILTER_NEAREST_MIPMAP_LINEAR) {\n\t\t\t\t\t\t\t\t\t\tfilter = FILTER_NEAREST;\n\t\t\t\t\t\t\t\t} else if (filter === FILTER_LINEAR_MIPMAP_NEAREST || filter === FILTER_LINEAR_MIPMAP_LINEAR) {\n\t\t\t\t\t\t\t\t\t\tfilter = FILTER_LINEAR;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tgl.texParameteri(target, gl.TEXTURE_MIN_FILTER, this.glFilter[filter]);\n\t\t\t\t}\n\t\t\t\tif (flags & TEXPROPERTY_MAG_FILTER) {\n\t\t\t\t\t\tgl.texParameteri(target, gl.TEXTURE_MAG_FILTER, this.glFilter[texture._magFilter]);\n\t\t\t\t}\n\t\t\t\tif (flags & TEXPROPERTY_ADDRESS_U) {\n\t\t\t\t\t\tgl.texParameteri(target, gl.TEXTURE_WRAP_S, this.glAddress[texture._addressU]);\n\t\t\t\t}\n\t\t\t\tif (flags & TEXPROPERTY_ADDRESS_V) {\n\t\t\t\t\t\tgl.texParameteri(target, gl.TEXTURE_WRAP_T, this.glAddress[texture._addressV]);\n\t\t\t\t}\n\t\t\t\tif (flags & TEXPROPERTY_ADDRESS_W) {\n\t\t\t\t\t\tgl.texParameteri(target, gl.TEXTURE_WRAP_R, this.glAddress[texture._addressW]);\n\t\t\t\t}\n\t\t\t\tif (flags & TEXPROPERTY_COMPARE_ON_READ) {\n\t\t\t\t\t\tgl.texParameteri(target, gl.TEXTURE_COMPARE_MODE, texture._compareOnRead ? gl.COMPARE_REF_TO_TEXTURE : gl.NONE);\n\t\t\t\t}\n\t\t\t\tif (flags & TEXPROPERTY_COMPARE_FUNC) {\n\t\t\t\t\t\tgl.texParameteri(target, gl.TEXTURE_COMPARE_FUNC, this.glComparison[texture._compareFunc]);\n\t\t\t\t}\n\t\t\t\tif (flags & TEXPROPERTY_ANISOTROPY) {\n\t\t\t\t\t\tconst ext = this.extTextureFilterAnisotropic;\n\t\t\t\t\t\tif (ext) {\n\t\t\t\t\t\t\t\tgl.texParameterf(target, ext.TEXTURE_MAX_ANISOTROPY_EXT, math.clamp(Math.round(texture._anisotropy), 1, this.maxAnisotropy));\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tsetTexture(texture, textureUnit) {\n\t\t\t\tconst impl = texture.impl;\n\t\t\t\tif (!impl._glTexture) {\n\t\t\t\t\t\timpl.initialize(this, texture);\n\t\t\t\t}\n\t\t\t\tif (impl.dirtyParameterFlags > 0 || texture._needsUpload || texture._needsMipmapsUpload) {\n\t\t\t\t\t\tthis.activeTexture(textureUnit);\n\t\t\t\t\t\tthis.bindTexture(texture);\n\t\t\t\t\t\tif (impl.dirtyParameterFlags) {\n\t\t\t\t\t\t\t\tthis.setTextureParameters(texture);\n\t\t\t\t\t\t\t\timpl.dirtyParameterFlags = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (texture._needsUpload || texture._needsMipmapsUpload) {\n\t\t\t\t\t\t\t\timpl.upload(this, texture);\n\t\t\t\t\t\t\t\ttexture._needsUpload = false;\n\t\t\t\t\t\t\t\ttexture._needsMipmapsUpload = false;\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.bindTextureOnUnit(texture, textureUnit);\n\t\t\t\t}\n\t\t}\n\t\tcreateVertexArray(vertexBuffers) {\n\t\t\t\tlet key, vao;\n\t\t\t\tconst useCache = vertexBuffers.length > 1;\n\t\t\t\tif (useCache) {\n\t\t\t\t\t\tkey = '';\n\t\t\t\t\t\tfor(let i = 0; i < vertexBuffers.length; i++){\n\t\t\t\t\t\t\t\tconst vertexBuffer = vertexBuffers[i];\n\t\t\t\t\t\t\t\tkey += vertexBuffer.id + vertexBuffer.format.renderingHash;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvao = this._vaoMap.get(key);\n\t\t\t\t}\n\t\t\t\tif (!vao) {\n\t\t\t\t\t\tconst gl = this.gl;\n\t\t\t\t\t\tvao = gl.createVertexArray();\n\t\t\t\t\t\tgl.bindVertexArray(vao);\n\t\t\t\t\t\tgl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null);\n\t\t\t\t\t\tfor(let i = 0; i < vertexBuffers.length; i++){\n\t\t\t\t\t\t\t\tconst vertexBuffer = vertexBuffers[i];\n\t\t\t\t\t\t\t\tgl.bindBuffer(gl.ARRAY_BUFFER, vertexBuffer.impl.bufferId);\n\t\t\t\t\t\t\t\tconst elements = vertexBuffer.format.elements;\n\t\t\t\t\t\t\t\tfor(let j = 0; j < elements.length; j++){\n\t\t\t\t\t\t\t\t\t\tconst e = elements[j];\n\t\t\t\t\t\t\t\t\t\tconst loc = semanticToLocation[e.name];\n\t\t\t\t\t\t\t\t\t\tif (e.asInt) {\n\t\t\t\t\t\t\t\t\t\t\t\tgl.vertexAttribIPointer(loc, e.numComponents, this.glType[e.dataType], e.stride, e.offset);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tgl.vertexAttribPointer(loc, e.numComponents, this.glType[e.dataType], e.normalize, e.stride, e.offset);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tgl.enableVertexAttribArray(loc);\n\t\t\t\t\t\t\t\t\t\tif (vertexBuffer.format.instancing) {\n\t\t\t\t\t\t\t\t\t\t\t\tgl.vertexAttribDivisor(loc, 1);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tgl.bindVertexArray(null);\n\t\t\t\t\t\tgl.bindBuffer(gl.ARRAY_BUFFER, null);\n\t\t\t\t\t\tif (useCache) {\n\t\t\t\t\t\t\t\tthis._vaoMap.set(key, vao);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn vao;\n\t\t}\n\t\tunbindVertexArray() {\n\t\t\t\tif (this.boundVao) {\n\t\t\t\t\t\tthis.boundVao = null;\n\t\t\t\t\t\tthis.gl.bindVertexArray(null);\n\t\t\t\t}\n\t\t}\n\t\tsetBuffers(indexBuffer) {\n\t\t\t\tconst gl = this.gl;\n\t\t\t\tlet vao;\n\t\t\t\tif (this.vertexBuffers.length === 1) {\n\t\t\t\t\t\tconst vertexBuffer = this.vertexBuffers[0];\n\t\t\t\t\t\tif (!vertexBuffer.impl.vao) {\n\t\t\t\t\t\t\t\tvertexBuffer.impl.vao = this.createVertexArray(this.vertexBuffers);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvao = vertexBuffer.impl.vao;\n\t\t\t\t} else {\n\t\t\t\t\t\tvao = this.createVertexArray(this.vertexBuffers);\n\t\t\t\t}\n\t\t\t\tif (this.boundVao !== vao) {\n\t\t\t\t\t\tthis.boundVao = vao;\n\t\t\t\t\t\tgl.bindVertexArray(vao);\n\t\t\t\t}\n\t\t\t\tconst bufferId = indexBuffer ? indexBuffer.impl.bufferId : null;\n\t\t\t\tgl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, bufferId);\n\t\t}\n\t\t_multiDrawLoopFallback(mode, primitive, indexBuffer, numInstances, drawCommands) {\n\t\t\t\tconst gl = this.gl;\n\t\t\t\tif (primitive.indexed) {\n\t\t\t\t\t\tconst format = indexBuffer.impl.glFormat;\n\t\t\t\t\t\tconst { glCounts, glOffsetsBytes, glInstanceCounts, count } = drawCommands.impl;\n\t\t\t\t\t\tif (numInstances > 0) {\n\t\t\t\t\t\t\t\tfor(let i = 0; i < count; i++){\n\t\t\t\t\t\t\t\t\t\tgl.drawElementsInstanced(mode, glCounts[i], format, glOffsetsBytes[i], glInstanceCounts[i]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tfor(let i = 0; i < count; i++){\n\t\t\t\t\t\t\t\t\t\tgl.drawElements(mode, glCounts[i], format, glOffsetsBytes[i]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tconst { glCounts, glOffsetsBytes, glInstanceCounts, count } = drawCommands.impl;\n\t\t\t\t\t\tif (numInstances > 0) {\n\t\t\t\t\t\t\t\tfor(let i = 0; i < count; i++){\n\t\t\t\t\t\t\t\t\t\tgl.drawArraysInstanced(mode, glOffsetsBytes[i], glCounts[i], glInstanceCounts[i]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tfor(let i = 0; i < count; i++){\n\t\t\t\t\t\t\t\t\t\tgl.drawArrays(mode, glOffsetsBytes[i], glCounts[i]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tdraw(primitive, indexBuffer, numInstances, drawCommands, first = true, last = true) {\n\t\t\t\tconst shader = this.shader;\n\t\t\t\tif (shader) {\n\t\t\t\t\t\tthis.activateShader();\n\t\t\t\t\t\tif (this.shaderValid) {\n\t\t\t\t\t\t\t\tconst gl = this.gl;\n\t\t\t\t\t\t\t\tif (first) {\n\t\t\t\t\t\t\t\t\t\tthis.setBuffers(indexBuffer);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tlet textureUnit = 0;\n\t\t\t\t\t\t\t\tconst samplers = shader.impl.samplers;\n\t\t\t\t\t\t\t\tfor(let i = 0, len = samplers.length; i < len; i++){\n\t\t\t\t\t\t\t\t\t\tconst sampler = samplers[i];\n\t\t\t\t\t\t\t\t\t\tlet samplerValue = sampler.scopeId.value;\n\t\t\t\t\t\t\t\t\t\tif (!samplerValue) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst samplerName = sampler.scopeId.name;\n\t\t\t\t\t\t\t\t\t\t\t\tif (samplerName === 'uSceneDepthMap') {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsamplerValue = getBuiltInTexture(this, 'white');\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tif (samplerName === 'uSceneColorMap') {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsamplerValue = getBuiltInTexture(this, 'pink');\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tif (!samplerValue) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsamplerValue = getBuiltInTexture(this, 'pink');\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (samplerValue instanceof Texture) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst texture = samplerValue;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.setTexture(texture, textureUnit);\n\t\t\t\t\t\t\t\t\t\t\t\tif (sampler.slot !== textureUnit) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tgl.uniform1i(sampler.locationId, textureUnit);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsampler.slot = textureUnit;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\ttextureUnit++;\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tsampler.array.length = 0;\n\t\t\t\t\t\t\t\t\t\t\t\tconst numTextures = samplerValue.length;\n\t\t\t\t\t\t\t\t\t\t\t\tfor(let j = 0; j < numTextures; j++){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst texture = samplerValue[j];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.setTexture(texture, textureUnit);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsampler.array[j] = textureUnit;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttextureUnit++;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tgl.uniform1iv(sampler.locationId, sampler.array);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst uniforms = shader.impl.uniforms;\n\t\t\t\t\t\t\t\tfor(let i = 0, len = uniforms.length; i < len; i++){\n\t\t\t\t\t\t\t\t\t\tconst uniform = uniforms[i];\n\t\t\t\t\t\t\t\t\t\tconst scopeId = uniform.scopeId;\n\t\t\t\t\t\t\t\t\t\tconst uniformVersion = uniform.version;\n\t\t\t\t\t\t\t\t\t\tconst programVersion = scopeId.versionObject.version;\n\t\t\t\t\t\t\t\t\t\tif (uniformVersion.globalId !== programVersion.globalId || uniformVersion.revision !== programVersion.revision) {\n\t\t\t\t\t\t\t\t\t\t\t\tuniformVersion.globalId = programVersion.globalId;\n\t\t\t\t\t\t\t\t\t\t\t\tuniformVersion.revision = programVersion.revision;\n\t\t\t\t\t\t\t\t\t\t\t\tconst value = scopeId.value;\n\t\t\t\t\t\t\t\t\t\t\t\tif (value !== null && value !== undefined) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.commitFunction[uniform.dataType](uniform, value);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (this.transformFeedbackBuffer) {\n\t\t\t\t\t\t\t\t\t\tgl.bindBufferBase(gl.TRANSFORM_FEEDBACK_BUFFER, 0, this.transformFeedbackBuffer.impl.bufferId);\n\t\t\t\t\t\t\t\t\t\tgl.beginTransformFeedback(gl.POINTS);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst mode = this.glPrimitive[primitive.type];\n\t\t\t\t\t\t\t\tconst count = primitive.count;\n\t\t\t\t\t\t\t\tif (drawCommands) {\n\t\t\t\t\t\t\t\t\t\tif (this.extMultiDraw) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst impl = drawCommands.impl;\n\t\t\t\t\t\t\t\t\t\t\t\tif (primitive.indexed) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst format = indexBuffer.impl.glFormat;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (numInstances > 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.extMultiDraw.multiDrawElementsInstancedWEBGL(mode, impl.glCounts, 0, format, impl.glOffsetsBytes, 0, impl.glInstanceCounts, 0, drawCommands.count);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.extMultiDraw.multiDrawElementsWEBGL(mode, impl.glCounts, 0, format, impl.glOffsetsBytes, 0, drawCommands.count);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (numInstances > 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.extMultiDraw.multiDrawArraysInstancedWEBGL(mode, impl.glOffsetsBytes, 0, impl.glCounts, 0, impl.glInstanceCounts, 0, drawCommands.count);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.extMultiDraw.multiDrawArraysWEBGL(mode, impl.glOffsetsBytes, 0, impl.glCounts, 0, drawCommands.count);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._multiDrawLoopFallback(mode, primitive, indexBuffer, numInstances, drawCommands);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tif (primitive.indexed) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst format = indexBuffer.impl.glFormat;\n\t\t\t\t\t\t\t\t\t\t\t\tconst offset = primitive.base * indexBuffer.bytesPerIndex;\n\t\t\t\t\t\t\t\t\t\t\t\tif (numInstances > 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tgl.drawElementsInstanced(mode, count, format, offset, numInstances);\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tgl.drawElements(mode, count, format, offset);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tconst first = primitive.base;\n\t\t\t\t\t\t\t\t\t\t\t\tif (numInstances > 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tgl.drawArraysInstanced(mode, first, count, numInstances);\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tgl.drawArrays(mode, first, count);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (this.transformFeedbackBuffer) {\n\t\t\t\t\t\t\t\t\t\tgl.endTransformFeedback();\n\t\t\t\t\t\t\t\t\t\tgl.bindBufferBase(gl.TRANSFORM_FEEDBACK_BUFFER, 0, null);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis._drawCallsPerFrame++;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (last) {\n\t\t\t\t\t\tthis.clearVertexBuffer();\n\t\t\t\t}\n\t\t}\n\t\tclear(options) {\n\t\t\t\tconst defaultOptions = this.defaultClearOptions;\n\t\t\t\toptions = options || defaultOptions;\n\t\t\t\tconst flags = options.flags ?? defaultOptions.flags;\n\t\t\t\tif (flags !== 0) {\n\t\t\t\t\t\tconst gl = this.gl;\n\t\t\t\t\t\tif (flags & CLEARFLAG_COLOR) {\n\t\t\t\t\t\t\t\tconst color = options.color ?? defaultOptions.color;\n\t\t\t\t\t\t\t\tconst r = color[0];\n\t\t\t\t\t\t\t\tconst g = color[1];\n\t\t\t\t\t\t\t\tconst b = color[2];\n\t\t\t\t\t\t\t\tconst a = color[3];\n\t\t\t\t\t\t\t\tconst c = this.clearColor;\n\t\t\t\t\t\t\t\tif (r !== c.r || g !== c.g || b !== c.b || a !== c.a) {\n\t\t\t\t\t\t\t\t\t\tthis.gl.clearColor(r, g, b, a);\n\t\t\t\t\t\t\t\t\t\tthis.clearColor.set(r, g, b, a);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.setBlendState(BlendState.NOBLEND);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (flags & CLEARFLAG_DEPTH) {\n\t\t\t\t\t\t\t\tconst depth = options.depth ?? defaultOptions.depth;\n\t\t\t\t\t\t\t\tif (depth !== this.clearDepth) {\n\t\t\t\t\t\t\t\t\t\tthis.gl.clearDepth(depth);\n\t\t\t\t\t\t\t\t\t\tthis.clearDepth = depth;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.setDepthState(DepthState.WRITEDEPTH);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (flags & CLEARFLAG_STENCIL) {\n\t\t\t\t\t\t\t\tconst stencil = options.stencil ?? defaultOptions.stencil;\n\t\t\t\t\t\t\t\tif (stencil !== this.clearStencil) {\n\t\t\t\t\t\t\t\t\t\tthis.gl.clearStencil(stencil);\n\t\t\t\t\t\t\t\t\t\tthis.clearStencil = stencil;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tgl.stencilMask(0xFF);\n\t\t\t\t\t\t\t\tthis.stencilWriteMaskFront = 0xFF;\n\t\t\t\t\t\t\t\tthis.stencilWriteMaskBack = 0xFF;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tgl.clear(this.glClearFlag[flags]);\n\t\t\t\t}\n\t\t}\n\t\tsubmit() {\n\t\t\t\tthis.gl.flush();\n\t\t}\n\t\treadPixels(x, y, w, h, pixels) {\n\t\t\t\tconst gl = this.gl;\n\t\t\t\tgl.readPixels(x, y, w, h, gl.RGBA, gl.UNSIGNED_BYTE, pixels);\n\t\t}\n\t\tclientWaitAsync(flags, interval_ms) {\n\t\t\t\tconst gl = this.gl;\n\t\t\t\tconst sync = gl.fenceSync(gl.SYNC_GPU_COMMANDS_COMPLETE, 0);\n\t\t\t\tthis.submit();\n\t\t\t\treturn new Promise((resolve, reject)=>{\n\t\t\t\t\t\tfunction test() {\n\t\t\t\t\t\t\t\tconst res = gl.clientWaitSync(sync, flags, 0);\n\t\t\t\t\t\t\t\tif (res === gl.TIMEOUT_EXPIRED) {\n\t\t\t\t\t\t\t\t\t\tsetTimeout(test, interval_ms);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tgl.deleteSync(sync);\n\t\t\t\t\t\t\t\t\t\tif (res === gl.WAIT_FAILED) {\n\t\t\t\t\t\t\t\t\t\t\t\treject(new Error('webgl clientWaitSync sync failed'));\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tresolve();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttest();\n\t\t\t\t});\n\t\t}\n\t\tasync readPixelsAsync(x, y, w, h, pixels) {\n\t\t\t\tconst gl = this.gl;\n\t\t\t\tconst impl = this.renderTarget.colorBuffer?.impl;\n\t\t\t\tconst format = impl?._glFormat ?? gl.RGBA;\n\t\t\t\tconst pixelType = impl?._glPixelType ?? gl.UNSIGNED_BYTE;\n\t\t\t\tconst buf = gl.createBuffer();\n\t\t\t\tgl.bindBuffer(gl.PIXEL_PACK_BUFFER, buf);\n\t\t\t\tgl.bufferData(gl.PIXEL_PACK_BUFFER, pixels.byteLength, gl.STREAM_READ);\n\t\t\t\tgl.readPixels(x, y, w, h, format, pixelType, 0);\n\t\t\t\tgl.bindBuffer(gl.PIXEL_PACK_BUFFER, null);\n\t\t\t\tawait this.clientWaitAsync(0, 16);\n\t\t\t\tgl.bindBuffer(gl.PIXEL_PACK_BUFFER, buf);\n\t\t\t\tgl.getBufferSubData(gl.PIXEL_PACK_BUFFER, 0, pixels);\n\t\t\t\tgl.bindBuffer(gl.PIXEL_PACK_BUFFER, null);\n\t\t\t\tgl.deleteBuffer(buf);\n\t\t\t\treturn pixels;\n\t\t}\n\t\treadTextureAsync(texture, x, y, width, height, options) {\n\t\t\t\tconst face = options.face ?? 0;\n\t\t\t\tconst renderTarget = options.renderTarget ?? new RenderTarget({\n\t\t\t\t\t\tcolorBuffer: texture,\n\t\t\t\t\t\tdepth: false,\n\t\t\t\t\t\tface: face\n\t\t\t\t});\n\t\t\t\tconst buffer = new ArrayBuffer(TextureUtils.calcLevelGpuSize(width, height, 1, texture._format));\n\t\t\t\tconst data = options.data ?? new (getPixelFormatArrayType(texture._format))(buffer);\n\t\t\t\tthis.setRenderTarget(renderTarget);\n\t\t\t\tthis.initRenderTarget(renderTarget);\n\t\t\t\treturn new Promise((resolve, reject)=>{\n\t\t\t\t\t\tthis.readPixelsAsync(x, y, width, height, data).then((data)=>{\n\t\t\t\t\t\t\t\tif (this._destroyed) return;\n\t\t\t\t\t\t\t\tif (!options.renderTarget) {\n\t\t\t\t\t\t\t\t\t\trenderTarget.destroy();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tresolve(data);\n\t\t\t\t\t\t}).catch(reject);\n\t\t\t\t});\n\t\t}\n\t\tasync writeTextureAsync(texture, x, y, width, height, data) {\n\t\t\t\tconst gl = this.gl;\n\t\t\t\tconst impl = texture.impl;\n\t\t\t\tconst format = impl?._glFormat ?? gl.RGBA;\n\t\t\t\tconst pixelType = impl?._glPixelType ?? gl.UNSIGNED_BYTE;\n\t\t\t\tconst buf = gl.createBuffer();\n\t\t\t\tgl.bindBuffer(gl.PIXEL_UNPACK_BUFFER, buf);\n\t\t\t\tgl.bufferData(gl.PIXEL_UNPACK_BUFFER, data, gl.STREAM_DRAW);\n\t\t\t\tgl.bindTexture(gl.TEXTURE_2D, impl._glTexture);\n\t\t\t\tgl.texSubImage2D(gl.TEXTURE_2D, 0, x, y, width, height, format, pixelType, 0);\n\t\t\t\tgl.bindBuffer(gl.PIXEL_UNPACK_BUFFER, null);\n\t\t\t\ttexture._needsUpload = false;\n\t\t\t\ttexture._mipmapsUploaded = false;\n\t\t\t\tawait this.clientWaitAsync(0, 16);\n\t\t}\n\t\tsetAlphaToCoverage(state) {\n\t\t\t\tif (this.alphaToCoverage !== state) {\n\t\t\t\t\t\tthis.alphaToCoverage = state;\n\t\t\t\t\t\tif (state) {\n\t\t\t\t\t\t\t\tthis.gl.enable(this.gl.SAMPLE_ALPHA_TO_COVERAGE);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.gl.disable(this.gl.SAMPLE_ALPHA_TO_COVERAGE);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tsetTransformFeedbackBuffer(tf) {\n\t\t\t\tif (this.transformFeedbackBuffer !== tf) {\n\t\t\t\t\t\tthis.transformFeedbackBuffer = tf;\n\t\t\t\t\t\tconst gl = this.gl;\n\t\t\t\t\t\tif (tf) {\n\t\t\t\t\t\t\t\tif (!this.feedback) {\n\t\t\t\t\t\t\t\t\t\tthis.feedback = gl.createTransformFeedback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tgl.bindTransformFeedback(gl.TRANSFORM_FEEDBACK, this.feedback);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tgl.bindTransformFeedback(gl.TRANSFORM_FEEDBACK, null);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tsetRaster(on) {\n\t\t\t\tif (this.raster !== on) {\n\t\t\t\t\t\tthis.raster = on;\n\t\t\t\t\t\tif (on) {\n\t\t\t\t\t\t\t\tthis.gl.disable(this.gl.RASTERIZER_DISCARD);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.gl.enable(this.gl.RASTERIZER_DISCARD);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tsetStencilTest(enable) {\n\t\t\t\tif (this.stencil !== enable) {\n\t\t\t\t\t\tconst gl = this.gl;\n\t\t\t\t\t\tif (enable) {\n\t\t\t\t\t\t\t\tgl.enable(gl.STENCIL_TEST);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tgl.disable(gl.STENCIL_TEST);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.stencil = enable;\n\t\t\t\t}\n\t\t}\n\t\tsetStencilFunc(func, ref, mask) {\n\t\t\t\tif (this.stencilFuncFront !== func || this.stencilRefFront !== ref || this.stencilMaskFront !== mask || this.stencilFuncBack !== func || this.stencilRefBack !== ref || this.stencilMaskBack !== mask) {\n\t\t\t\t\t\tthis.gl.stencilFunc(this.glComparison[func], ref, mask);\n\t\t\t\t\t\tthis.stencilFuncFront = this.stencilFuncBack = func;\n\t\t\t\t\t\tthis.stencilRefFront = this.stencilRefBack = ref;\n\t\t\t\t\t\tthis.stencilMaskFront = this.stencilMaskBack = mask;\n\t\t\t\t}\n\t\t}\n\t\tsetStencilFuncFront(func, ref, mask) {\n\t\t\t\tif (this.stencilFuncFront !== func || this.stencilRefFront !== ref || this.stencilMaskFront !== mask) {\n\t\t\t\t\t\tconst gl = this.gl;\n\t\t\t\t\t\tgl.stencilFuncSeparate(gl.FRONT, this.glComparison[func], ref, mask);\n\t\t\t\t\t\tthis.stencilFuncFront = func;\n\t\t\t\t\t\tthis.stencilRefFront = ref;\n\t\t\t\t\t\tthis.stencilMaskFront = mask;\n\t\t\t\t}\n\t\t}\n\t\tsetStencilFuncBack(func, ref, mask) {\n\t\t\t\tif (this.stencilFuncBack !== func || this.stencilRefBack !== ref || this.stencilMaskBack !== mask) {\n\t\t\t\t\t\tconst gl = this.gl;\n\t\t\t\t\t\tgl.stencilFuncSeparate(gl.BACK, this.glComparison[func], ref, mask);\n\t\t\t\t\t\tthis.stencilFuncBack = func;\n\t\t\t\t\t\tthis.stencilRefBack = ref;\n\t\t\t\t\t\tthis.stencilMaskBack = mask;\n\t\t\t\t}\n\t\t}\n\t\tsetStencilOperation(fail, zfail, zpass, writeMask) {\n\t\t\t\tif (this.stencilFailFront !== fail || this.stencilZfailFront !== zfail || this.stencilZpassFront !== zpass || this.stencilFailBack !== fail || this.stencilZfailBack !== zfail || this.stencilZpassBack !== zpass) {\n\t\t\t\t\t\tthis.gl.stencilOp(this.glStencilOp[fail], this.glStencilOp[zfail], this.glStencilOp[zpass]);\n\t\t\t\t\t\tthis.stencilFailFront = this.stencilFailBack = fail;\n\t\t\t\t\t\tthis.stencilZfailFront = this.stencilZfailBack = zfail;\n\t\t\t\t\t\tthis.stencilZpassFront = this.stencilZpassBack = zpass;\n\t\t\t\t}\n\t\t\t\tif (this.stencilWriteMaskFront !== writeMask || this.stencilWriteMaskBack !== writeMask) {\n\t\t\t\t\t\tthis.gl.stencilMask(writeMask);\n\t\t\t\t\t\tthis.stencilWriteMaskFront = writeMask;\n\t\t\t\t\t\tthis.stencilWriteMaskBack = writeMask;\n\t\t\t\t}\n\t\t}\n\t\tsetStencilOperationFront(fail, zfail, zpass, writeMask) {\n\t\t\t\tif (this.stencilFailFront !== fail || this.stencilZfailFront !== zfail || this.stencilZpassFront !== zpass) {\n\t\t\t\t\t\tthis.gl.stencilOpSeparate(this.gl.FRONT, this.glStencilOp[fail], this.glStencilOp[zfail], this.glStencilOp[zpass]);\n\t\t\t\t\t\tthis.stencilFailFront = fail;\n\t\t\t\t\t\tthis.stencilZfailFront = zfail;\n\t\t\t\t\t\tthis.stencilZpassFront = zpass;\n\t\t\t\t}\n\t\t\t\tif (this.stencilWriteMaskFront !== writeMask) {\n\t\t\t\t\t\tthis.gl.stencilMaskSeparate(this.gl.FRONT, writeMask);\n\t\t\t\t\t\tthis.stencilWriteMaskFront = writeMask;\n\t\t\t\t}\n\t\t}\n\t\tsetStencilOperationBack(fail, zfail, zpass, writeMask) {\n\t\t\t\tif (this.stencilFailBack !== fail || this.stencilZfailBack !== zfail || this.stencilZpassBack !== zpass) {\n\t\t\t\t\t\tthis.gl.stencilOpSeparate(this.gl.BACK, this.glStencilOp[fail], this.glStencilOp[zfail], this.glStencilOp[zpass]);\n\t\t\t\t\t\tthis.stencilFailBack = fail;\n\t\t\t\t\t\tthis.stencilZfailBack = zfail;\n\t\t\t\t\t\tthis.stencilZpassBack = zpass;\n\t\t\t\t}\n\t\t\t\tif (this.stencilWriteMaskBack !== writeMask) {\n\t\t\t\t\t\tthis.gl.stencilMaskSeparate(this.gl.BACK, writeMask);\n\t\t\t\t\t\tthis.stencilWriteMaskBack = writeMask;\n\t\t\t\t}\n\t\t}\n\t\tsetBlendState(blendState) {\n\t\t\t\tconst currentBlendState = this.blendState;\n\t\t\t\tif (!currentBlendState.equals(blendState)) {\n\t\t\t\t\t\tconst gl = this.gl;\n\t\t\t\t\t\tconst { blend, colorOp, alphaOp, colorSrcFactor, colorDstFactor, alphaSrcFactor, alphaDstFactor } = blendState;\n\t\t\t\t\t\tif (currentBlendState.blend !== blend) {\n\t\t\t\t\t\t\t\tif (blend) {\n\t\t\t\t\t\t\t\t\t\tgl.enable(gl.BLEND);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tgl.disable(gl.BLEND);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (currentBlendState.colorOp !== colorOp || currentBlendState.alphaOp !== alphaOp) {\n\t\t\t\t\t\t\t\tconst glBlendEquation = this.glBlendEquation;\n\t\t\t\t\t\t\t\tgl.blendEquationSeparate(glBlendEquation[colorOp], glBlendEquation[alphaOp]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (currentBlendState.colorSrcFactor !== colorSrcFactor || currentBlendState.colorDstFactor !== colorDstFactor || currentBlendState.alphaSrcFactor !== alphaSrcFactor || currentBlendState.alphaDstFactor !== alphaDstFactor) {\n\t\t\t\t\t\t\t\tgl.blendFuncSeparate(this.glBlendFunctionColor[colorSrcFactor], this.glBlendFunctionColor[colorDstFactor], this.glBlendFunctionAlpha[alphaSrcFactor], this.glBlendFunctionAlpha[alphaDstFactor]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (currentBlendState.allWrite !== blendState.allWrite) {\n\t\t\t\t\t\t\t\tthis.gl.colorMask(blendState.redWrite, blendState.greenWrite, blendState.blueWrite, blendState.alphaWrite);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcurrentBlendState.copy(blendState);\n\t\t\t\t}\n\t\t}\n\t\tsetBlendColor(r, g, b, a) {\n\t\t\t\tconst c = this.blendColor;\n\t\t\t\tif (r !== c.r || g !== c.g || b !== c.b || a !== c.a) {\n\t\t\t\t\t\tthis.gl.blendColor(r, g, b, a);\n\t\t\t\t\t\tc.set(r, g, b, a);\n\t\t\t\t}\n\t\t}\n\t\tsetStencilState(stencilFront, stencilBack) {\n\t\t\t\tif (stencilFront || stencilBack) {\n\t\t\t\t\t\tthis.setStencilTest(true);\n\t\t\t\t\t\tif (stencilFront === stencilBack) {\n\t\t\t\t\t\t\t\tthis.setStencilFunc(stencilFront.func, stencilFront.ref, stencilFront.readMask);\n\t\t\t\t\t\t\t\tthis.setStencilOperation(stencilFront.fail, stencilFront.zfail, stencilFront.zpass, stencilFront.writeMask);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tstencilFront ??= StencilParameters.DEFAULT;\n\t\t\t\t\t\t\t\tthis.setStencilFuncFront(stencilFront.func, stencilFront.ref, stencilFront.readMask);\n\t\t\t\t\t\t\t\tthis.setStencilOperationFront(stencilFront.fail, stencilFront.zfail, stencilFront.zpass, stencilFront.writeMask);\n\t\t\t\t\t\t\t\tstencilBack ??= StencilParameters.DEFAULT;\n\t\t\t\t\t\t\t\tthis.setStencilFuncBack(stencilBack.func, stencilBack.ref, stencilBack.readMask);\n\t\t\t\t\t\t\t\tthis.setStencilOperationBack(stencilBack.fail, stencilBack.zfail, stencilBack.zpass, stencilBack.writeMask);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.setStencilTest(false);\n\t\t\t\t}\n\t\t}\n\t\tsetDepthState(depthState) {\n\t\t\t\tconst currentDepthState = this.depthState;\n\t\t\t\tif (!currentDepthState.equals(depthState)) {\n\t\t\t\t\t\tconst gl = this.gl;\n\t\t\t\t\t\tconst write = depthState.write;\n\t\t\t\t\t\tif (currentDepthState.write !== write) {\n\t\t\t\t\t\t\t\tgl.depthMask(write);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlet { func, test } = depthState;\n\t\t\t\t\t\tif (!test && write) {\n\t\t\t\t\t\t\t\ttest = true;\n\t\t\t\t\t\t\t\tfunc = FUNC_ALWAYS;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (currentDepthState.func !== func) {\n\t\t\t\t\t\t\t\tgl.depthFunc(this.glComparison[func]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (currentDepthState.test !== test) {\n\t\t\t\t\t\t\t\tif (test) {\n\t\t\t\t\t\t\t\t\t\tgl.enable(gl.DEPTH_TEST);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tgl.disable(gl.DEPTH_TEST);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst { depthBias, depthBiasSlope } = depthState;\n\t\t\t\t\t\tif (depthBias || depthBiasSlope) {\n\t\t\t\t\t\t\t\tif (!this.depthBiasEnabled) {\n\t\t\t\t\t\t\t\t\t\tthis.depthBiasEnabled = true;\n\t\t\t\t\t\t\t\t\t\tthis.gl.enable(this.gl.POLYGON_OFFSET_FILL);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tgl.polygonOffset(depthBiasSlope, depthBias);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (this.depthBiasEnabled) {\n\t\t\t\t\t\t\t\t\t\tthis.depthBiasEnabled = false;\n\t\t\t\t\t\t\t\t\t\tthis.gl.disable(this.gl.POLYGON_OFFSET_FILL);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcurrentDepthState.copy(depthState);\n\t\t\t\t}\n\t\t}\n\t\tsetCullMode(cullMode) {\n\t\t\t\tif (this.cullMode !== cullMode) {\n\t\t\t\t\t\tif (cullMode === CULLFACE_NONE) {\n\t\t\t\t\t\t\t\tthis.gl.disable(this.gl.CULL_FACE);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (this.cullMode === CULLFACE_NONE) {\n\t\t\t\t\t\t\t\t\t\tthis.gl.enable(this.gl.CULL_FACE);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst mode = this.glCull[cullMode];\n\t\t\t\t\t\t\t\tif (this.cullFace !== mode) {\n\t\t\t\t\t\t\t\t\t\tthis.gl.cullFace(mode);\n\t\t\t\t\t\t\t\t\t\tthis.cullFace = mode;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.cullMode = cullMode;\n\t\t\t\t}\n\t\t}\n\t\tsetShader(shader, asyncCompile = false) {\n\t\t\t\tif (shader !== this.shader) {\n\t\t\t\t\t\tthis.shader = shader;\n\t\t\t\t\t\tthis.shaderAsyncCompile = asyncCompile;\n\t\t\t\t\t\tthis.shaderValid = undefined;\n\t\t\t\t}\n\t\t}\n\t\tactivateShader() {\n\t\t\t\tconst { shader } = this;\n\t\t\t\tconst { impl } = shader;\n\t\t\t\tif (this.shaderValid === undefined) {\n\t\t\t\t\t\tif (shader.failed) {\n\t\t\t\t\t\t\t\tthis.shaderValid = false;\n\t\t\t\t\t\t} else if (!shader.ready) {\n\t\t\t\t\t\t\t\tif (this.shaderAsyncCompile) {\n\t\t\t\t\t\t\t\t\t\tif (impl.isLinked(this)) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (!impl.finalize(this, shader)) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tshader.failed = true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.shaderValid = false;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.shaderValid = false;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tif (!impl.finalize(this, shader)) {\n\t\t\t\t\t\t\t\t\t\t\t\tshader.failed = true;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.shaderValid = false;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this.shaderValid === undefined) {\n\t\t\t\t\t\tthis.gl.useProgram(impl.glProgram);\n\t\t\t\t\t\tthis.shaderValid = true;\n\t\t\t\t}\n\t\t}\n\t\tclearVertexArrayObjectCache() {\n\t\t\t\tconst gl = this.gl;\n\t\t\t\tthis._vaoMap.forEach((item, key, mapObj)=>{\n\t\t\t\t\t\tgl.deleteVertexArray(item);\n\t\t\t\t});\n\t\t\t\tthis._vaoMap.clear();\n\t\t}\n\t\tset fullscreen(fullscreen) {\n\t\t\t\tif (fullscreen) {\n\t\t\t\t\t\tconst canvas = this.gl.canvas;\n\t\t\t\t\t\tcanvas.requestFullscreen();\n\t\t\t\t} else {\n\t\t\t\t\t\tdocument.exitFullscreen();\n\t\t\t\t}\n\t\t}\n\t\tget fullscreen() {\n\t\t\t\treturn !!document.fullscreenElement;\n\t\t}\n}\n\nclass NullIndexBuffer {\n\t\tunlock(indexBuffer) {}\n}\n\nclass NullRenderTarget {\n\t\tdestroy(device) {}\n\t\tinit(device, renderTarget) {}\n\t\tloseContext() {}\n\t\tresolve(device, target, color, depth) {}\n}\n\nclass NullShader {\n\t\tdestroy(shader) {}\n\t\tloseContext() {}\n\t\trestoreContext(device, shader) {}\n}\n\nclass NullTexture {\n\t\tdestroy(device) {}\n\t\tpropertyChanged(flag) {}\n\t\tloseContext() {}\n}\n\nclass NullVertexBuffer {\n\t\tdestroy(device) {}\n\t\tunlock(vertexBuffer) {}\n}\n\nclass NullDrawCommands {\n\t\tadd(i, indexOrVertexCount, instanceCount, firstIndexOrVertex) {}\n}\n\nclass NullGraphicsDevice extends GraphicsDevice {\n\t\tconstructor(canvas, options = {}){\n\t\t\t\tsuper(canvas, options);\n\t\t\t\toptions = this.initOptions;\n\t\t\t\tthis.isNull = true;\n\t\t\t\tthis._deviceType = DEVICETYPE_NULL;\n\t\t\t\tthis.samples = 1;\n\t\t\t\tthis.backBuffer = new RenderTarget({\n\t\t\t\t\t\tname: 'Framebuffer',\n\t\t\t\t\t\tgraphicsDevice: this,\n\t\t\t\t\t\tdepth: this.initOptions.depth,\n\t\t\t\t\t\tstencil: this.supportsStencil,\n\t\t\t\t\t\tsamples: this.samples\n\t\t\t\t});\n\t\t\t\tthis.initDeviceCaps();\n\t\t}\n\t\tdestroy() {\n\t\t\t\tsuper.destroy();\n\t\t}\n\t\tinitDeviceCaps() {\n\t\t\t\tthis.disableParticleSystem = true;\n\t\t\t\tthis.precision = 'highp';\n\t\t\t\tthis.maxPrecision = 'highp';\n\t\t\t\tthis.maxSamples = 4;\n\t\t\t\tthis.maxTextures = 16;\n\t\t\t\tthis.maxTextureSize = 4096;\n\t\t\t\tthis.maxCubeMapSize = 4096;\n\t\t\t\tthis.maxVolumeSize = 4096;\n\t\t\t\tthis.maxColorAttachments = 8;\n\t\t\t\tthis.maxPixelRatio = 1;\n\t\t\t\tthis.maxAnisotropy = 16;\n\t\t\t\tthis.supportsUniformBuffers = false;\n\t\t\t\tthis.supportsAreaLights = true;\n\t\t\t\tthis.supportsGpuParticles = false;\n\t\t\t\tthis.textureFloatRenderable = true;\n\t\t\t\tthis.textureHalfFloatRenderable = true;\n\t\t\t\tthis.supportsImageBitmap = false;\n\t\t}\n\t\tpostInit() {\n\t\t\t\tsuper.postInit();\n\t\t}\n\t\tframeStart() {\n\t\t\t\tsuper.frameStart();\n\t\t}\n\t\tframeEnd() {\n\t\t\t\tsuper.frameEnd();\n\t\t}\n\t\tupdateBegin() {}\n\t\tupdateEnd() {}\n\t\treadPixels(x, y, w, h, pixels) {}\n\t\tcreateVertexBufferImpl(vertexBuffer, format) {\n\t\t\t\treturn new NullVertexBuffer(vertexBuffer, format);\n\t\t}\n\t\tcreateIndexBufferImpl(indexBuffer) {\n\t\t\t\treturn new NullIndexBuffer(indexBuffer);\n\t\t}\n\t\tcreateShaderImpl(shader) {\n\t\t\t\treturn new NullShader(shader);\n\t\t}\n\t\tcreateTextureImpl(texture) {\n\t\t\t\treturn new NullTexture(texture);\n\t\t}\n\t\tcreateRenderTargetImpl(renderTarget) {\n\t\t\t\treturn new NullRenderTarget(renderTarget);\n\t\t}\n\t\tcreateDrawCommandImpl(drawCommands) {\n\t\t\t\treturn new NullDrawCommands();\n\t\t}\n\t\tcreateUploadStreamImpl(uploadStream) {\n\t\t\t\treturn null;\n\t\t}\n\t\tdraw(primitive, indexBuffer, numInstances, drawCommands, first = true, last = true) {}\n\t\tsetShader(shader, asyncCompile = false) {}\n\t\tsetBlendState(blendState) {}\n\t\tsetDepthState(depthState) {}\n\t\tsetStencilState(stencilFront, stencilBack) {}\n\t\tsetBlendColor(r, g, b, a) {}\n\t\tsetCullMode(cullMode) {}\n\t\tsetAlphaToCoverage(state) {}\n\t\tinitializeContextCaches() {\n\t\t\t\tsuper.initializeContextCaches();\n\t\t}\n\t\tclear(options) {}\n\t\tsetViewport(x, y, w, h) {}\n\t\tsetScissor(x, y, w, h) {}\n\t\tcopyRenderTarget(source, dest, color, depth) {\n\t\t\t\treturn true;\n\t\t}\n}\n\nfunction createGraphicsDevice(canvas, options = {}) {\n\t\tconst deviceTypes = options.deviceTypes ?? [];\n\t\tif (!deviceTypes.includes(DEVICETYPE_WEBGL2)) {\n\t\t\t\tdeviceTypes.push(DEVICETYPE_WEBGL2);\n\t\t}\n\t\tif (!deviceTypes.includes(DEVICETYPE_NULL)) {\n\t\t\t\tdeviceTypes.push(DEVICETYPE_NULL);\n\t\t}\n\t\tif (platform.browser && !!navigator.xr) {\n\t\t\t\toptions.xrCompatible ??= true;\n\t\t}\n\t\tconst deviceCreateFuncs = [];\n\t\tfor(let i = 0; i < deviceTypes.length; i++){\n\t\t\t\tconst deviceType = deviceTypes[i];\n\t\t\t\tif (deviceType === DEVICETYPE_WEBGPU && window?.navigator?.gpu) {\n\t\t\t\t\t\tdeviceCreateFuncs.push(()=>{\n\t\t\t\t\t\t\t\tconst device = new WebgpuGraphicsDevice(canvas, options);\n\t\t\t\t\t\t\t\treturn device.initWebGpu(options.glslangUrl, options.twgslUrl);\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif (deviceType === DEVICETYPE_WEBGL2) {\n\t\t\t\t\t\tdeviceCreateFuncs.push(()=>{\n\t\t\t\t\t\t\t\treturn new WebglGraphicsDevice(canvas, options);\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif (deviceType === DEVICETYPE_NULL) {\n\t\t\t\t\t\tdeviceCreateFuncs.push(()=>{\n\t\t\t\t\t\t\t\treturn new NullGraphicsDevice(canvas, options);\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t}\n\t\treturn new Promise((resolve, reject)=>{\n\t\t\t\tlet attempt = 0;\n\t\t\t\tconst next = ()=>{\n\t\t\t\t\t\tif (attempt >= deviceCreateFuncs.length) {\n\t\t\t\t\t\t\t\treject(new Error('Failed to create a graphics device'));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tPromise.resolve(deviceCreateFuncs[attempt++]()).then((device)=>{\n\t\t\t\t\t\t\t\t\t\tif (device) {\n\t\t\t\t\t\t\t\t\t\t\t\tresolve(device);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tnext();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}).catch((err)=>{\n\t\t\t\t\t\t\t\t\t\tconsole.log(err);\n\t\t\t\t\t\t\t\t\t\tnext();\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tnext();\n\t\t});\n}\n\nclass ComputeParameter {\n\t\tconstructor(){\n\t\t\t\tthis.scopeId = null;\n\t\t}\n}\nclass Compute {\n\t\tconstructor(graphicsDevice, shader, name = 'Unnamed'){\n\t\t\t\tthis.shader = null;\n\t\t\t\tthis.parameters = new Map();\n\t\t\t\tthis.countX = 1;\n\t\t\t\tthis.device = graphicsDevice;\n\t\t\t\tthis.shader = shader;\n\t\t\t\tthis.name = name;\n\t\t\t\tif (graphicsDevice.supportsCompute) {\n\t\t\t\t\t\tthis.impl = graphicsDevice.createComputeImpl(this);\n\t\t\t\t}\n\t\t}\n\t\tsetParameter(name, value) {\n\t\t\t\tlet param = this.parameters.get(name);\n\t\t\t\tif (!param) {\n\t\t\t\t\t\tparam = new ComputeParameter();\n\t\t\t\t\t\tparam.scopeId = this.device.scope.resolve(name);\n\t\t\t\t\t\tthis.parameters.set(name, param);\n\t\t\t\t}\n\t\t\t\tparam.value = value;\n\t\t}\n\t\tgetParameter(name) {\n\t\t\t\treturn this.parameters.get(name)?.value;\n\t\t}\n\t\tdeleteParameter(name) {\n\t\t\t\tthis.parameters.delete(name);\n\t\t}\n\t\tapplyParameters() {\n\t\t\t\tfor (const [, param] of this.parameters){\n\t\t\t\t\t\tparam.scopeId.setValue(param.value);\n\t\t\t\t}\n\t\t}\n\t\tsetupDispatch(x, y, z) {\n\t\t\t\tthis.countX = x;\n\t\t\t\tthis.countY = y;\n\t\t\t\tthis.countZ = z;\n\t\t}\n}\n\nclass DrawCommands {\n\t\tget maxCount() {\n\t\t\t\treturn this._maxCount;\n\t\t}\n\t\tget count() {\n\t\t\t\treturn this._count;\n\t\t}\n\t\tconstructor(device, indexSizeBytes = 0){\n\t\t\t\tthis._maxCount = 0;\n\t\t\t\tthis.impl = null;\n\t\t\t\tthis._count = 1;\n\t\t\t\tthis.slotIndex = 0;\n\t\t\t\tthis.device = device;\n\t\t\t\tthis.indexSizeBytes = indexSizeBytes;\n\t\t\t\tthis.impl = device.createDrawCommandImpl(this);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.impl?.destroy?.();\n\t\t\t\tthis.impl = null;\n\t\t}\n\t\tallocate(maxCount) {\n\t\t\t\tthis._maxCount = maxCount;\n\t\t\t\tthis.impl.allocate?.(maxCount);\n\t\t}\n\t\tadd(i, indexOrVertexCount, instanceCount, firstIndexOrVertex, baseVertex = 0, firstInstance = 0) {\n\t\t\t\tthis.impl.add(i, indexOrVertexCount, instanceCount, firstIndexOrVertex, baseVertex, firstInstance);\n\t\t}\n\t\tupdate(count) {\n\t\t\t\tthis._count = count;\n\t\t\t\tthis.impl.update?.(count);\n\t\t}\n}\n\nlet id$6 = 0;\nclass IndexBuffer {\n\t\tconstructor(graphicsDevice, format, numIndices, usage = BUFFER_STATIC, initialData, options){\n\t\t\t\tthis.device = graphicsDevice;\n\t\t\t\tthis.format = format;\n\t\t\t\tthis.numIndices = numIndices;\n\t\t\t\tthis.usage = usage;\n\t\t\t\tthis.id = id$6++;\n\t\t\t\tthis.impl = graphicsDevice.createIndexBufferImpl(this, options);\n\t\t\t\tconst bytesPerIndex = typedArrayIndexFormatsByteSize[format];\n\t\t\t\tthis.bytesPerIndex = bytesPerIndex;\n\t\t\t\tthis.numBytes = this.numIndices * bytesPerIndex;\n\t\t\t\tif (initialData) {\n\t\t\t\t\t\tthis.setData(initialData);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.storage = new ArrayBuffer(this.numBytes);\n\t\t\t\t}\n\t\t\t\tthis.adjustVramSizeTracking(graphicsDevice._vram, this.numBytes);\n\t\t\t\tthis.device.buffers.push(this);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tconst device = this.device;\n\t\t\t\tconst idx = device.buffers.indexOf(this);\n\t\t\t\tif (idx !== -1) {\n\t\t\t\t\t\tdevice.buffers.splice(idx, 1);\n\t\t\t\t}\n\t\t\t\tif (this.device.indexBuffer === this) {\n\t\t\t\t\t\tthis.device.indexBuffer = null;\n\t\t\t\t}\n\t\t\t\tif (this.impl.initialized) {\n\t\t\t\t\t\tthis.impl.destroy(device);\n\t\t\t\t\t\tthis.adjustVramSizeTracking(device._vram, -this.storage.byteLength);\n\t\t\t\t}\n\t\t}\n\t\tadjustVramSizeTracking(vram, size) {\n\t\t\t\tvram.ib += size;\n\t\t}\n\t\tloseContext() {\n\t\t\t\tthis.impl.loseContext();\n\t\t}\n\t\tgetFormat() {\n\t\t\t\treturn this.format;\n\t\t}\n\t\tgetNumIndices() {\n\t\t\t\treturn this.numIndices;\n\t\t}\n\t\tlock() {\n\t\t\t\treturn this.storage;\n\t\t}\n\t\tunlock() {\n\t\t\t\tthis.impl.unlock(this);\n\t\t}\n\t\tsetData(data) {\n\t\t\t\tif (data.byteLength !== this.numBytes) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tthis.storage = data;\n\t\t\t\tthis.unlock();\n\t\t\t\treturn true;\n\t\t}\n\t\t_lockTypedArray() {\n\t\t\t\tconst lock = this.lock();\n\t\t\t\tconst indices = this.format === INDEXFORMAT_UINT32 ? new Uint32Array(lock) : this.format === INDEXFORMAT_UINT16 ? new Uint16Array(lock) : new Uint8Array(lock);\n\t\t\t\treturn indices;\n\t\t}\n\t\twriteData(data, count) {\n\t\t\t\tconst indices = this._lockTypedArray();\n\t\t\t\tif (data.length > count) {\n\t\t\t\t\t\tif (ArrayBuffer.isView(data)) {\n\t\t\t\t\t\t\t\tdata = data.subarray(0, count);\n\t\t\t\t\t\t\t\tindices.set(data);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tfor(let i = 0; i < count; i++){\n\t\t\t\t\t\t\t\t\t\tindices[i] = data[i];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tindices.set(data);\n\t\t\t\t}\n\t\t\t\tthis.unlock();\n\t\t}\n\t\treadData(data) {\n\t\t\t\tconst indices = this._lockTypedArray();\n\t\t\t\tconst count = this.numIndices;\n\t\t\t\tif (ArrayBuffer.isView(data)) {\n\t\t\t\t\t\tdata.set(indices);\n\t\t\t\t} else {\n\t\t\t\t\t\tdata.length = 0;\n\t\t\t\t\t\tfor(let i = 0; i < count; i++){\n\t\t\t\t\t\t\t\tdata[i] = indices[i];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn count;\n\t\t}\n}\n\nclass ColorAttachmentOps {\n\t\tconstructor(){\n\t\t\t\tthis.clearValue = new Color(0, 0, 0, 1);\n\t\t\t\tthis.clearValueLinear = new Color(0, 0, 0, 1);\n\t\t\t\tthis.clear = false;\n\t\t\t\tthis.store = false;\n\t\t\t\tthis.resolve = true;\n\t\t\t\tthis.genMipmaps = false;\n\t\t}\n}\nclass DepthStencilAttachmentOps {\n\t\tconstructor(){\n\t\t\t\tthis.clearDepthValue = 1;\n\t\t\t\tthis.clearStencilValue = 0;\n\t\t\t\tthis.clearDepth = false;\n\t\t\t\tthis.clearStencil = false;\n\t\t\t\tthis.storeDepth = false;\n\t\t\t\tthis.resolveDepth = false;\n\t\t\t\tthis.storeStencil = false;\n\t\t}\n}\nclass RenderPass {\n\t\tget colorOps() {\n\t\t\t\treturn this.colorArrayOps[0];\n\t\t}\n\t\tconstructor(graphicsDevice){\n\t\t\t\tthis._enabled = true;\n\t\t\t\tthis._skipStart = false;\n\t\t\t\tthis._skipEnd = false;\n\t\t\t\tthis.executeEnabled = true;\n\t\t\t\tthis.samples = 0;\n\t\t\t\tthis.colorArrayOps = [];\n\t\t\t\tthis.requiresCubemaps = true;\n\t\t\t\tthis.fullSizeClearRect = true;\n\t\t\t\tthis.beforePasses = [];\n\t\t\t\tthis.afterPasses = [];\n\t\t\t\tthis.device = graphicsDevice;\n\t\t}\n\t\tset name(value) {\n\t\t\t\tthis._name = value;\n\t\t}\n\t\tget name() {\n\t\t\t\tif (!this._name) {\n\t\t\t\t\t\tthis._name = this.constructor.name;\n\t\t\t\t}\n\t\t\t\treturn this._name;\n\t\t}\n\t\tset scaleX(value) {\n\t\t\t\tthis._options.scaleX = value;\n\t\t}\n\t\tget scaleX() {\n\t\t\t\treturn this._options.scaleX;\n\t\t}\n\t\tset scaleY(value) {\n\t\t\t\tthis._options.scaleY = value;\n\t\t}\n\t\tget scaleY() {\n\t\t\t\treturn this._options.scaleY;\n\t\t}\n\t\tset options(value) {\n\t\t\t\tthis._options = value;\n\t\t\t\tif (value) {\n\t\t\t\t\t\tthis.scaleX = this.scaleX ?? 1;\n\t\t\t\t\t\tthis.scaleY = this.scaleY ?? 1;\n\t\t\t\t}\n\t\t}\n\t\tget options() {\n\t\t\t\treturn this._options;\n\t\t}\n\t\tinit(renderTarget = null, options) {\n\t\t\t\tthis.options = options;\n\t\t\t\tthis.renderTarget = renderTarget;\n\t\t\t\tthis.samples = Math.max(this.renderTarget ? this.renderTarget.samples : this.device.samples, 1);\n\t\t\t\tthis.allocateAttachments();\n\t\t\t\tthis.postInit();\n\t\t}\n\t\tallocateAttachments() {\n\t\t\t\tconst rt = this.renderTarget;\n\t\t\t\tthis.depthStencilOps = new DepthStencilAttachmentOps();\n\t\t\t\tif (rt?.depthBuffer) {\n\t\t\t\t\t\tthis.depthStencilOps.storeDepth = true;\n\t\t\t\t}\n\t\t\t\tconst numColorOps = rt ? rt._colorBuffers?.length ?? 0 : 1;\n\t\t\t\tthis.colorArrayOps.length = 0;\n\t\t\t\tfor(let i = 0; i < numColorOps; i++){\n\t\t\t\t\t\tconst colorOps = new ColorAttachmentOps();\n\t\t\t\t\t\tthis.colorArrayOps[i] = colorOps;\n\t\t\t\t\t\tif (this.samples === 1) {\n\t\t\t\t\t\t\t\tcolorOps.store = true;\n\t\t\t\t\t\t\t\tcolorOps.resolve = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst colorBuffer = this.renderTarget?._colorBuffers?.[i];\n\t\t\t\t\t\tif (this.renderTarget?.mipmaps && colorBuffer?.mipmaps) {\n\t\t\t\t\t\t\t\tconst intFormat = isIntegerPixelFormat(colorBuffer._format);\n\t\t\t\t\t\t\t\tcolorOps.genMipmaps = !intFormat;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tdestroy() {}\n\t\tpostInit() {}\n\t\tframeUpdate() {\n\t\t\t\tif (this._options && this.renderTarget) {\n\t\t\t\t\t\tconst resizeSource = this._options.resizeSource ?? this.device.backBuffer;\n\t\t\t\t\t\tconst width = Math.floor(resizeSource.width * this.scaleX);\n\t\t\t\t\t\tconst height = Math.floor(resizeSource.height * this.scaleY);\n\t\t\t\t\t\tthis.renderTarget.resize(width, height);\n\t\t\t\t}\n\t\t}\n\t\tbefore() {}\n\t\texecute() {}\n\t\tafter() {}\n\t\tonEnable() {}\n\t\tonDisable() {}\n\t\tset enabled(value) {\n\t\t\t\tif (this._enabled !== value) {\n\t\t\t\t\t\tthis._enabled = value;\n\t\t\t\t\t\tif (value) {\n\t\t\t\t\t\t\t\tthis.onEnable();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.onDisable();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget enabled() {\n\t\t\t\treturn this._enabled;\n\t\t}\n\t\tsetClearColor(color) {\n\t\t\t\tconst count = this.colorArrayOps.length;\n\t\t\t\tfor(let i = 0; i < count; i++){\n\t\t\t\t\t\tconst colorOps = this.colorArrayOps[i];\n\t\t\t\t\t\tif (color) {\n\t\t\t\t\t\t\t\tcolorOps.clearValue.copy(color);\n\t\t\t\t\t\t\t\tcolorOps.clearValueLinear.linear(color);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcolorOps.clear = !!color;\n\t\t\t\t}\n\t\t}\n\t\tsetClearDepth(depthValue) {\n\t\t\t\tif (depthValue !== undefined) {\n\t\t\t\t\t\tthis.depthStencilOps.clearDepthValue = depthValue;\n\t\t\t\t}\n\t\t\t\tthis.depthStencilOps.clearDepth = depthValue !== undefined;\n\t\t}\n\t\tsetClearStencil(stencilValue) {\n\t\t\t\tif (stencilValue !== undefined) {\n\t\t\t\t\t\tthis.depthStencilOps.clearStencilValue = stencilValue;\n\t\t\t\t}\n\t\t\t\tthis.depthStencilOps.clearStencil = stencilValue !== undefined;\n\t\t}\n\t\trender() {\n\t\t\t\tif (this.enabled) {\n\t\t\t\t\t\tconst device = this.device;\n\t\t\t\t\t\tconst realPass = this.renderTarget !== undefined;\n\t\t\t\t\t\tthis.before();\n\t\t\t\t\t\tif (this.executeEnabled) {\n\t\t\t\t\t\t\t\tif (realPass && !this._skipStart) {\n\t\t\t\t\t\t\t\t\t\tdevice.startRenderPass(this);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.execute();\n\t\t\t\t\t\t\t\tif (realPass && !this._skipEnd) {\n\t\t\t\t\t\t\t\t\t\tdevice.endRenderPass(this);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.after();\n\t\t\t\t\t\tdevice.renderPassIndex++;\n\t\t\t\t}\n\t\t}\n}\n\nclass TransformFeedback {\n\t\tconstructor(inputBuffer, outputBuffer, usage = BUFFER_GPUDYNAMIC){\n\t\t\t\tif (outputBuffer !== undefined && !(outputBuffer instanceof VertexBuffer)) {\n\t\t\t\t\t\tusage = outputBuffer;\n\t\t\t\t\t\toutputBuffer = undefined;\n\t\t\t\t}\n\t\t\t\tthis.device = inputBuffer.device;\n\t\t\t\tconst gl = this.device.gl;\n\t\t\t\tconst outVB = outputBuffer ?? inputBuffer;\n\t\t\t\tif (usage === BUFFER_GPUDYNAMIC && outVB.usage !== usage) {\n\t\t\t\t\t\tgl.bindBuffer(gl.ARRAY_BUFFER, outVB.impl.bufferId);\n\t\t\t\t\t\tgl.bufferData(gl.ARRAY_BUFFER, outVB.storage, gl.DYNAMIC_COPY);\n\t\t\t\t}\n\t\t\t\tthis._inputBuffer = inputBuffer;\n\t\t\t\tthis._destroyOutputBuffer = !outputBuffer;\n\t\t\t\tthis._outputBuffer = outputBuffer ?? new VertexBuffer(inputBuffer.device, inputBuffer.format, inputBuffer.numVertices, {\n\t\t\t\t\t\tusage: usage,\n\t\t\t\t\t\tdata: inputBuffer.storage\n\t\t\t\t});\n\t\t}\n\t\tstatic createShader(graphicsDevice, vertexCode, name, feedbackVaryings) {\n\t\t\t\treturn new Shader(graphicsDevice, ShaderDefinitionUtils.createDefinition(graphicsDevice, {\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tvertexCode,\n\t\t\t\t\t\tfeedbackVaryings,\n\t\t\t\t\t\tuseTransformFeedback: true,\n\t\t\t\t\t\tfragmentCode: 'void main(void) {gl_FragColor = vec4(0.0);}'\n\t\t\t\t}));\n\t\t}\n\t\tdestroy() {\n\t\t\t\tif (this._destroyOutputBuffer) {\n\t\t\t\t\t\tthis._outputBuffer.destroy();\n\t\t\t\t}\n\t\t}\n\t\tprocess(shader, swap = true) {\n\t\t\t\tconst device = this.device;\n\t\t\t\tconst oldRt = device.getRenderTarget();\n\t\t\t\tdevice.setRenderTarget(null);\n\t\t\t\tdevice.updateBegin();\n\t\t\t\tdevice.setVertexBuffer(this._inputBuffer);\n\t\t\t\tdevice.setRaster(false);\n\t\t\t\tdevice.setTransformFeedbackBuffer(this._outputBuffer);\n\t\t\t\tdevice.setShader(shader);\n\t\t\t\tdevice.draw({\n\t\t\t\t\t\ttype: PRIMITIVE_POINTS,\n\t\t\t\t\t\tbase: 0,\n\t\t\t\t\t\tbaseVertex: 0,\n\t\t\t\t\t\tcount: this._inputBuffer.numVertices,\n\t\t\t\t\t\tindexed: false\n\t\t\t\t});\n\t\t\t\tdevice.setTransformFeedbackBuffer(null);\n\t\t\t\tdevice.setRaster(true);\n\t\t\t\tdevice.updateEnd();\n\t\t\t\tdevice.setRenderTarget(oldRt);\n\t\t\t\tif (swap) {\n\t\t\t\t\t\tlet tmp = this._inputBuffer.impl.bufferId;\n\t\t\t\t\t\tthis._inputBuffer.impl.bufferId = this._outputBuffer.impl.bufferId;\n\t\t\t\t\t\tthis._outputBuffer.impl.bufferId = tmp;\n\t\t\t\t\t\ttmp = this._inputBuffer.impl.vao;\n\t\t\t\t\t\tthis._inputBuffer.impl.vao = this._outputBuffer.impl.vao;\n\t\t\t\t\t\tthis._outputBuffer.impl.vao = tmp;\n\t\t\t\t}\n\t\t}\n\t\tget inputBuffer() {\n\t\t\t\treturn this._inputBuffer;\n\t\t}\n\t\tget outputBuffer() {\n\t\t\t\treturn this._outputBuffer;\n\t\t}\n}\n\nfunction set1(a) {\n\t\tthis.array[this.index] = a;\n}\nfunction set2(a, b) {\n\t\tthis.array[this.index] = a;\n\t\tthis.array[this.index + 1] = b;\n}\nfunction set3(a, b, c) {\n\t\tthis.array[this.index] = a;\n\t\tthis.array[this.index + 1] = b;\n\t\tthis.array[this.index + 2] = c;\n}\nfunction set4(a, b, c, d) {\n\t\tthis.array[this.index] = a;\n\t\tthis.array[this.index + 1] = b;\n\t\tthis.array[this.index + 2] = c;\n\t\tthis.array[this.index + 3] = d;\n}\nfunction arraySet1(index, inputArray, inputIndex) {\n\t\tthis.array[index] = inputArray[inputIndex];\n}\nfunction arraySet2(index, inputArray, inputIndex) {\n\t\tthis.array[index] = inputArray[inputIndex];\n\t\tthis.array[index + 1] = inputArray[inputIndex + 1];\n}\nfunction arraySet3(index, inputArray, inputIndex) {\n\t\tthis.array[index] = inputArray[inputIndex];\n\t\tthis.array[index + 1] = inputArray[inputIndex + 1];\n\t\tthis.array[index + 2] = inputArray[inputIndex + 2];\n}\nfunction arraySet4(index, inputArray, inputIndex) {\n\t\tthis.array[index] = inputArray[inputIndex];\n\t\tthis.array[index + 1] = inputArray[inputIndex + 1];\n\t\tthis.array[index + 2] = inputArray[inputIndex + 2];\n\t\tthis.array[index + 3] = inputArray[inputIndex + 3];\n}\nfunction arrayGet1(offset, outputArray, outputIndex) {\n\t\toutputArray[outputIndex] = this.array[offset];\n}\nfunction arrayGet2(offset, outputArray, outputIndex) {\n\t\toutputArray[outputIndex] = this.array[offset];\n\t\toutputArray[outputIndex + 1] = this.array[offset + 1];\n}\nfunction arrayGet3(offset, outputArray, outputIndex) {\n\t\toutputArray[outputIndex] = this.array[offset];\n\t\toutputArray[outputIndex + 1] = this.array[offset + 1];\n\t\toutputArray[outputIndex + 2] = this.array[offset + 2];\n}\nfunction arrayGet4(offset, outputArray, outputIndex) {\n\t\toutputArray[outputIndex] = this.array[offset];\n\t\toutputArray[outputIndex + 1] = this.array[offset + 1];\n\t\toutputArray[outputIndex + 2] = this.array[offset + 2];\n\t\toutputArray[outputIndex + 3] = this.array[offset + 3];\n}\nclass VertexIteratorAccessor {\n\t\tconstructor(buffer, vertexElement, vertexFormat){\n\t\t\t\tthis.index = 0;\n\t\t\t\tthis.numComponents = vertexElement.numComponents;\n\t\t\t\tif (vertexFormat.interleaved) {\n\t\t\t\t\t\tthis.array = new typedArrayTypes[vertexElement.dataType](buffer, vertexElement.offset);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.array = new typedArrayTypes[vertexElement.dataType](buffer, vertexElement.offset, vertexFormat.vertexCount * vertexElement.numComponents);\n\t\t\t\t}\n\t\t\t\tthis.stride = vertexElement.stride / this.array.constructor.BYTES_PER_ELEMENT;\n\t\t\t\tswitch(vertexElement.numComponents){\n\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tthis.set = set1;\n\t\t\t\t\t\t\t\tthis.getToArray = arrayGet1;\n\t\t\t\t\t\t\t\tthis.setFromArray = arraySet1;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\tthis.set = set2;\n\t\t\t\t\t\t\t\tthis.getToArray = arrayGet2;\n\t\t\t\t\t\t\t\tthis.setFromArray = arraySet2;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\tthis.set = set3;\n\t\t\t\t\t\t\t\tthis.getToArray = arrayGet3;\n\t\t\t\t\t\t\t\tthis.setFromArray = arraySet3;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\t\t\tthis.set = set4;\n\t\t\t\t\t\t\t\tthis.getToArray = arrayGet4;\n\t\t\t\t\t\t\t\tthis.setFromArray = arraySet4;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t}\n\t\tget(offset) {\n\t\t\t\treturn this.array[this.index + offset];\n\t\t}\n\t\tset(a, b, c, d) {}\n\t\tgetToArray(offset, outputArray, outputIndex) {}\n\t\tsetFromArray(index, inputArray, inputIndex) {}\n}\nclass VertexIterator {\n\t\tconstructor(vertexBuffer){\n\t\t\t\tthis.vertexBuffer = vertexBuffer;\n\t\t\t\tthis.vertexFormatSize = vertexBuffer.getFormat().size;\n\t\t\t\tthis.buffer = this.vertexBuffer.lock();\n\t\t\t\tthis.accessors = [];\n\t\t\t\tthis.element = {};\n\t\t\t\tconst vertexFormat = this.vertexBuffer.getFormat();\n\t\t\t\tfor(let i = 0; i < vertexFormat.elements.length; i++){\n\t\t\t\t\t\tconst vertexElement = vertexFormat.elements[i];\n\t\t\t\t\t\tthis.accessors[i] = new VertexIteratorAccessor(this.buffer, vertexElement, vertexFormat);\n\t\t\t\t\t\tthis.element[vertexElement.name] = this.accessors[i];\n\t\t\t\t}\n\t\t}\n\t\tnext(count = 1) {\n\t\t\t\tlet i = 0;\n\t\t\t\tconst accessors = this.accessors;\n\t\t\t\tconst numAccessors = this.accessors.length;\n\t\t\t\twhile(i < numAccessors){\n\t\t\t\t\t\tconst accessor = accessors[i++];\n\t\t\t\t\t\taccessor.index += count * accessor.stride;\n\t\t\t\t}\n\t\t}\n\t\tend() {\n\t\t\t\tthis.vertexBuffer.unlock();\n\t\t}\n\t\twriteData(semantic, data, numVertices) {\n\t\t\t\tconst element = this.element[semantic];\n\t\t\t\tif (element) {\n\t\t\t\t\t\tif (numVertices > this.vertexBuffer.numVertices) {\n\t\t\t\t\t\t\t\tnumVertices = this.vertexBuffer.numVertices;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst numComponents = element.numComponents;\n\t\t\t\t\t\tif (this.vertexBuffer.getFormat().interleaved) {\n\t\t\t\t\t\t\t\tlet index = 0;\n\t\t\t\t\t\t\t\tfor(let i = 0; i < numVertices; i++){\n\t\t\t\t\t\t\t\t\t\telement.setFromArray(index, data, i * numComponents);\n\t\t\t\t\t\t\t\t\t\tindex += element.stride;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (data.length > numVertices * numComponents) {\n\t\t\t\t\t\t\t\t\t\tconst copyCount = numVertices * numComponents;\n\t\t\t\t\t\t\t\t\t\tif (ArrayBuffer.isView(data)) {\n\t\t\t\t\t\t\t\t\t\t\t\tdata = data.subarray(0, copyCount);\n\t\t\t\t\t\t\t\t\t\t\t\telement.array.set(data);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tfor(let i = 0; i < copyCount; i++){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\telement.array[i] = data[i];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\telement.array.set(data);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\treadData(semantic, data) {\n\t\t\t\tconst element = this.element[semantic];\n\t\t\t\tlet count = 0;\n\t\t\t\tif (element) {\n\t\t\t\t\t\tcount = this.vertexBuffer.numVertices;\n\t\t\t\t\t\tlet i;\n\t\t\t\t\t\tconst numComponents = element.numComponents;\n\t\t\t\t\t\tif (this.vertexBuffer.getFormat().interleaved) {\n\t\t\t\t\t\t\t\tif (Array.isArray(data)) {\n\t\t\t\t\t\t\t\t\t\tdata.length = 0;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telement.index = 0;\n\t\t\t\t\t\t\t\tlet offset = 0;\n\t\t\t\t\t\t\t\tfor(i = 0; i < count; i++){\n\t\t\t\t\t\t\t\t\t\telement.getToArray(offset, data, i * numComponents);\n\t\t\t\t\t\t\t\t\t\toffset += element.stride;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (ArrayBuffer.isView(data)) {\n\t\t\t\t\t\t\t\t\t\tdata.set(element.array);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tdata.length = 0;\n\t\t\t\t\t\t\t\t\t\tconst copyCount = count * numComponents;\n\t\t\t\t\t\t\t\t\t\tfor(i = 0; i < copyCount; i++){\n\t\t\t\t\t\t\t\t\t\t\t\tdata[i] = element.array[i];\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn count;\n\t\t}\n}\n\nconst ACTION_MOUSE = 'mouse';\nconst ACTION_KEYBOARD = 'keyboard';\nconst ACTION_GAMEPAD = 'gamepad';\nconst AXIS_MOUSE_X = 'mousex';\nconst AXIS_MOUSE_Y = 'mousey';\nconst AXIS_PAD_L_X = 'padlx';\nconst AXIS_PAD_L_Y = 'padly';\nconst AXIS_PAD_R_X = 'padrx';\nconst AXIS_PAD_R_Y = 'padry';\nconst AXIS_KEY = 'key';\nconst KEY_BACKSPACE = 8;\nconst KEY_TAB = 9;\nconst KEY_RETURN = 13;\nconst KEY_ENTER = 13;\nconst KEY_SHIFT = 16;\nconst KEY_CONTROL = 17;\nconst KEY_ALT = 18;\nconst KEY_PAUSE = 19;\nconst KEY_CAPS_LOCK = 20;\nconst KEY_ESCAPE = 27;\nconst KEY_SPACE = 32;\nconst KEY_PAGE_UP = 33;\nconst KEY_PAGE_DOWN = 34;\nconst KEY_END = 35;\nconst KEY_HOME = 36;\nconst KEY_LEFT = 37;\nconst KEY_UP = 38;\nconst KEY_RIGHT = 39;\nconst KEY_DOWN = 40;\nconst KEY_PRINT_SCREEN = 44;\nconst KEY_INSERT = 45;\nconst KEY_DELETE = 46;\nconst KEY_0 = 48;\nconst KEY_1 = 49;\nconst KEY_2 = 50;\nconst KEY_3 = 51;\nconst KEY_4 = 52;\nconst KEY_5 = 53;\nconst KEY_6 = 54;\nconst KEY_7 = 55;\nconst KEY_8 = 56;\nconst KEY_9 = 57;\nconst KEY_SEMICOLON = 59;\nconst KEY_EQUAL = 61;\nconst KEY_A = 65;\nconst KEY_B = 66;\nconst KEY_C = 67;\nconst KEY_D = 68;\nconst KEY_E = 69;\nconst KEY_F = 70;\nconst KEY_G = 71;\nconst KEY_H = 72;\nconst KEY_I = 73;\nconst KEY_J = 74;\nconst KEY_K = 75;\nconst KEY_L = 76;\nconst KEY_M = 77;\nconst KEY_N = 78;\nconst KEY_O = 79;\nconst KEY_P = 80;\nconst KEY_Q = 81;\nconst KEY_R = 82;\nconst KEY_S = 83;\nconst KEY_T = 84;\nconst KEY_U = 85;\nconst KEY_V = 86;\nconst KEY_W = 87;\nconst KEY_X = 88;\nconst KEY_Y = 89;\nconst KEY_Z = 90;\nconst KEY_WINDOWS = 91;\nconst KEY_CONTEXT_MENU = 93;\nconst KEY_NUMPAD_0 = 96;\nconst KEY_NUMPAD_1 = 97;\nconst KEY_NUMPAD_2 = 98;\nconst KEY_NUMPAD_3 = 99;\nconst KEY_NUMPAD_4 = 100;\nconst KEY_NUMPAD_5 = 101;\nconst KEY_NUMPAD_6 = 102;\nconst KEY_NUMPAD_7 = 103;\nconst KEY_NUMPAD_8 = 104;\nconst KEY_NUMPAD_9 = 105;\nconst KEY_MULTIPLY = 106;\nconst KEY_ADD = 107;\nconst KEY_SEPARATOR = 108;\nconst KEY_SUBTRACT = 109;\nconst KEY_DECIMAL = 110;\nconst KEY_DIVIDE = 111;\nconst KEY_F1 = 112;\nconst KEY_F2 = 113;\nconst KEY_F3 = 114;\nconst KEY_F4 = 115;\nconst KEY_F5 = 116;\nconst KEY_F6 = 117;\nconst KEY_F7 = 118;\nconst KEY_F8 = 119;\nconst KEY_F9 = 120;\nconst KEY_F10 = 121;\nconst KEY_F11 = 122;\nconst KEY_F12 = 123;\nconst KEY_COMMA = 188;\nconst KEY_PERIOD = 190;\nconst KEY_SLASH = 191;\nconst KEY_OPEN_BRACKET = 219;\nconst KEY_BACK_SLASH = 220;\nconst KEY_CLOSE_BRACKET = 221;\nconst KEY_META = 224;\nconst MOUSEBUTTON_NONE = -1;\nconst MOUSEBUTTON_LEFT = 0;\nconst MOUSEBUTTON_MIDDLE = 1;\nconst MOUSEBUTTON_RIGHT = 2;\nconst PAD_1 = 0;\nconst PAD_2 = 1;\nconst PAD_3 = 2;\nconst PAD_4 = 3;\nconst PAD_FACE_1 = 0;\nconst PAD_FACE_2 = 1;\nconst PAD_FACE_3 = 2;\nconst PAD_FACE_4 = 3;\nconst PAD_L_SHOULDER_1 = 4;\nconst PAD_R_SHOULDER_1 = 5;\nconst PAD_L_SHOULDER_2 = 6;\nconst PAD_R_SHOULDER_2 = 7;\nconst PAD_SELECT = 8;\nconst PAD_START = 9;\nconst PAD_L_STICK_BUTTON = 10;\nconst PAD_R_STICK_BUTTON = 11;\nconst PAD_UP = 12;\nconst PAD_DOWN = 13;\nconst PAD_LEFT = 14;\nconst PAD_RIGHT = 15;\nconst PAD_VENDOR = 16;\nconst PAD_L_STICK_X = 0;\nconst PAD_L_STICK_Y = 1;\nconst PAD_R_STICK_X = 2;\nconst PAD_R_STICK_Y = 3;\nconst XRPAD_TOUCHPAD_X = 0;\nconst XRPAD_TOUCHPAD_Y = 1;\nconst XRPAD_STICK_X = 2;\nconst XRPAD_STICK_Y = 3;\nconst XRPAD_TOUCHPAD_BUTTON = 2;\nconst XRPAD_TRIGGER = 0;\nconst XRPAD_SQUEEZE = 1;\nconst XRPAD_STICK_BUTTON = 3;\nconst XRPAD_A = 4;\nconst XRPAD_B = 5;\n\nclass KeyboardEvent {\n\t\tconstructor(keyboard, event){\n\t\t\t\tthis.key = null;\n\t\t\t\tthis.element = null;\n\t\t\t\tthis.event = null;\n\t\t\t\tif (event) {\n\t\t\t\t\t\tthis.key = event.keyCode;\n\t\t\t\t\t\tthis.element = event.target;\n\t\t\t\t\t\tthis.event = event;\n\t\t\t\t}\n\t\t}\n}\n\nconst _keyboardEvent = new KeyboardEvent();\nfunction makeKeyboardEvent(event) {\n\t\t_keyboardEvent.key = event.keyCode;\n\t\t_keyboardEvent.element = event.target;\n\t\t_keyboardEvent.event = event;\n\t\treturn _keyboardEvent;\n}\nfunction toKeyCode(s) {\n\t\tif (typeof s === 'string') {\n\t\t\t\treturn s.toUpperCase().charCodeAt(0);\n\t\t}\n\t\treturn s;\n}\nconst _keyCodeToKeyIdentifier = {\n\t\t'9': 'Tab',\n\t\t'13': 'Enter',\n\t\t'16': 'Shift',\n\t\t'17': 'Control',\n\t\t'18': 'Alt',\n\t\t'27': 'Escape',\n\t\t'37': 'Left',\n\t\t'38': 'Up',\n\t\t'39': 'Right',\n\t\t'40': 'Down',\n\t\t'46': 'Delete',\n\t\t'91': 'Win'\n};\nclass Keyboard extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_KEYDOWN = 'keydown';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_KEYUP = 'keyup';\n\t\t}\n\t\tconstructor(element, options = {}){\n\t\t\t\tsuper(), this._element = null, this._keymap = {}, this._lastmap = {};\n\t\t\t\tthis._keyDownHandler = this._handleKeyDown.bind(this);\n\t\t\t\tthis._keyUpHandler = this._handleKeyUp.bind(this);\n\t\t\t\tthis._keyPressHandler = this._handleKeyPress.bind(this);\n\t\t\t\tthis._visibilityChangeHandler = this._handleVisibilityChange.bind(this);\n\t\t\t\tthis._windowBlurHandler = this._handleWindowBlur.bind(this);\n\t\t\t\tif (element) {\n\t\t\t\t\t\tthis.attach(element);\n\t\t\t\t}\n\t\t\t\tthis.preventDefault = options.preventDefault || false;\n\t\t\t\tthis.stopPropagation = options.stopPropagation || false;\n\t\t}\n\t\tattach(element) {\n\t\t\t\tif (this._element) {\n\t\t\t\t\t\tthis.detach();\n\t\t\t\t}\n\t\t\t\tthis._element = element;\n\t\t\t\tthis._element.addEventListener('keydown', this._keyDownHandler, false);\n\t\t\t\tthis._element.addEventListener('keypress', this._keyPressHandler, false);\n\t\t\t\tthis._element.addEventListener('keyup', this._keyUpHandler, false);\n\t\t\t\tdocument.addEventListener('visibilitychange', this._visibilityChangeHandler, false);\n\t\t\t\twindow.addEventListener('blur', this._windowBlurHandler, false);\n\t\t}\n\t\tdetach() {\n\t\t\t\tif (!this._element) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._element.removeEventListener('keydown', this._keyDownHandler);\n\t\t\t\tthis._element.removeEventListener('keypress', this._keyPressHandler);\n\t\t\t\tthis._element.removeEventListener('keyup', this._keyUpHandler);\n\t\t\t\tthis._element = null;\n\t\t\t\tdocument.removeEventListener('visibilitychange', this._visibilityChangeHandler, false);\n\t\t\t\twindow.removeEventListener('blur', this._windowBlurHandler, false);\n\t\t}\n\t\ttoKeyIdentifier(keyCode) {\n\t\t\t\tkeyCode = toKeyCode(keyCode);\n\t\t\t\tconst id = _keyCodeToKeyIdentifier[keyCode.toString()];\n\t\t\t\tif (id) {\n\t\t\t\t\t\treturn id;\n\t\t\t\t}\n\t\t\t\tlet hex = keyCode.toString(16).toUpperCase();\n\t\t\t\tconst length = hex.length;\n\t\t\t\tfor(let count = 0; count < 4 - length; count++){\n\t\t\t\t\t\thex = `0${hex}`;\n\t\t\t\t}\n\t\t\t\treturn `U+${hex}`;\n\t\t}\n\t\t_handleKeyDown(event) {\n\t\t\t\tconst code = event.keyCode || event.charCode;\n\t\t\t\tif (code === undefined) return;\n\t\t\t\tconst id = this.toKeyIdentifier(code);\n\t\t\t\tthis._keymap[id] = true;\n\t\t\t\tthis.fire('keydown', makeKeyboardEvent(event));\n\t\t\t\tif (this.preventDefault) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t\tif (this.stopPropagation) {\n\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\t\t}\n\t\t_handleKeyUp(event) {\n\t\t\t\tconst code = event.keyCode || event.charCode;\n\t\t\t\tif (code === undefined) return;\n\t\t\t\tconst id = this.toKeyIdentifier(code);\n\t\t\t\tdelete this._keymap[id];\n\t\t\t\tthis.fire('keyup', makeKeyboardEvent(event));\n\t\t\t\tif (this.preventDefault) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t\tif (this.stopPropagation) {\n\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\t\t}\n\t\t_handleKeyPress(event) {\n\t\t\t\tthis.fire('keypress', makeKeyboardEvent(event));\n\t\t\t\tif (this.preventDefault) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t\tif (this.stopPropagation) {\n\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\t\t}\n\t\t_handleVisibilityChange() {\n\t\t\t\tif (document.visibilityState === 'hidden') {\n\t\t\t\t\t\tthis._handleWindowBlur();\n\t\t\t\t}\n\t\t}\n\t\t_handleWindowBlur() {\n\t\t\t\tthis._keymap = {};\n\t\t\t\tthis._lastmap = {};\n\t\t}\n\t\tupdate() {\n\t\t\t\tfor(const prop in this._lastmap){\n\t\t\t\t\t\tdelete this._lastmap[prop];\n\t\t\t\t}\n\t\t\t\tfor(const prop in this._keymap){\n\t\t\t\t\t\tif (this._keymap.hasOwnProperty(prop)) {\n\t\t\t\t\t\t\t\tthis._lastmap[prop] = this._keymap[prop];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tisPressed(key) {\n\t\t\t\tconst keyCode = toKeyCode(key);\n\t\t\t\tconst id = this.toKeyIdentifier(keyCode);\n\t\t\t\treturn !!this._keymap[id];\n\t\t}\n\t\twasPressed(key) {\n\t\t\t\tconst keyCode = toKeyCode(key);\n\t\t\t\tconst id = this.toKeyIdentifier(keyCode);\n\t\t\t\treturn !!this._keymap[id] && !!!this._lastmap[id];\n\t\t}\n\t\twasReleased(key) {\n\t\t\t\tconst keyCode = toKeyCode(key);\n\t\t\t\tconst id = this.toKeyIdentifier(keyCode);\n\t\t\t\treturn !!!this._keymap[id] && !!this._lastmap[id];\n\t\t}\n}\n\nfunction isMousePointerLocked() {\n\t\treturn !!(document.pointerLockElement || document.mozPointerLockElement || document.webkitPointerLockElement);\n}\nclass MouseEvent {\n\t\tconstructor(mouse, event){\n\t\t\t\tthis.x = 0;\n\t\t\t\tthis.y = 0;\n\t\t\t\tthis.dx = 0;\n\t\t\t\tthis.dy = 0;\n\t\t\t\tthis.button = MOUSEBUTTON_NONE;\n\t\t\t\tthis.wheelDelta = 0;\n\t\t\t\tthis.ctrlKey = false;\n\t\t\t\tthis.altKey = false;\n\t\t\t\tthis.shiftKey = false;\n\t\t\t\tthis.metaKey = false;\n\t\t\t\tlet coords = {\n\t\t\t\t\t\tx: 0,\n\t\t\t\t\t\ty: 0\n\t\t\t\t};\n\t\t\t\tif (event) {\n\t\t\t\t\t\tif (event instanceof MouseEvent) {\n\t\t\t\t\t\t\t\tthrow Error('Expected MouseEvent');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcoords = mouse._getTargetCoords(event);\n\t\t\t\t} else {\n\t\t\t\t\t\tevent = {};\n\t\t\t\t}\n\t\t\t\tif (coords) {\n\t\t\t\t\t\tthis.x = coords.x;\n\t\t\t\t\t\tthis.y = coords.y;\n\t\t\t\t} else if (isMousePointerLocked()) {\n\t\t\t\t\t\tthis.x = 0;\n\t\t\t\t\t\tthis.y = 0;\n\t\t\t\t} else {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (event.type === 'wheel') {\n\t\t\t\t\t\tif (event.deltaY > 0) {\n\t\t\t\t\t\t\t\tthis.wheelDelta = 1;\n\t\t\t\t\t\t} else if (event.deltaY < 0) {\n\t\t\t\t\t\t\t\tthis.wheelDelta = -1;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (isMousePointerLocked()) {\n\t\t\t\t\t\tthis.dx = event.movementX || event.webkitMovementX || event.mozMovementX || 0;\n\t\t\t\t\t\tthis.dy = event.movementY || event.webkitMovementY || event.mozMovementY || 0;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.dx = this.x - mouse._lastX;\n\t\t\t\t\t\tthis.dy = this.y - mouse._lastY;\n\t\t\t\t}\n\t\t\t\tif (event.type === 'mousedown' || event.type === 'mouseup') {\n\t\t\t\t\t\tthis.button = event.button;\n\t\t\t\t}\n\t\t\t\tthis.buttons = mouse._buttons.slice(0);\n\t\t\t\tthis.element = event.target;\n\t\t\t\tthis.ctrlKey = event.ctrlKey ?? false;\n\t\t\t\tthis.altKey = event.altKey ?? false;\n\t\t\t\tthis.shiftKey = event.shiftKey ?? false;\n\t\t\t\tthis.metaKey = event.metaKey ?? false;\n\t\t\t\tthis.event = event;\n\t\t}\n}\n\nclass Mouse extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_MOUSEMOVE = 'mousemove';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_MOUSEDOWN = 'mousedown';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_MOUSEUP = 'mouseup';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_MOUSEWHEEL = 'mousewheel';\n\t\t}\n\t\tconstructor(element){\n\t\t\t\tsuper(), this._lastX = 0, this._lastY = 0, this._buttons = [\n\t\t\t\t\t\tfalse,\n\t\t\t\t\t\tfalse,\n\t\t\t\t\t\tfalse\n\t\t\t\t], this._lastbuttons = [\n\t\t\t\t\t\tfalse,\n\t\t\t\t\t\tfalse,\n\t\t\t\t\t\tfalse\n\t\t\t\t], this._target = null, this._attached = false;\n\t\t\t\tthis._upHandler = this._handleUp.bind(this);\n\t\t\t\tthis._downHandler = this._handleDown.bind(this);\n\t\t\t\tthis._moveHandler = this._handleMove.bind(this);\n\t\t\t\tthis._wheelHandler = this._handleWheel.bind(this);\n\t\t\t\tthis._contextMenuHandler = (event)=>{\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t};\n\t\t\t\tthis.attach(element);\n\t\t}\n\t\tstatic isPointerLocked() {\n\t\t\t\treturn isMousePointerLocked();\n\t\t}\n\t\tattach(element) {\n\t\t\t\tthis._target = element;\n\t\t\t\tif (this._attached) return;\n\t\t\t\tthis._attached = true;\n\t\t\t\tconst passiveOptions = {\n\t\t\t\t\t\tpassive: false\n\t\t\t\t};\n\t\t\t\tconst options = platform.passiveEvents ? passiveOptions : false;\n\t\t\t\twindow.addEventListener('mouseup', this._upHandler, options);\n\t\t\t\twindow.addEventListener('mousedown', this._downHandler, options);\n\t\t\t\twindow.addEventListener('mousemove', this._moveHandler, options);\n\t\t\t\twindow.addEventListener('wheel', this._wheelHandler, options);\n\t\t}\n\t\tdetach() {\n\t\t\t\tif (!this._attached) return;\n\t\t\t\tthis._attached = false;\n\t\t\t\tthis._target = null;\n\t\t\t\tconst passiveOptions = {\n\t\t\t\t\t\tpassive: false\n\t\t\t\t};\n\t\t\t\tconst options = platform.passiveEvents ? passiveOptions : false;\n\t\t\t\twindow.removeEventListener('mouseup', this._upHandler, options);\n\t\t\t\twindow.removeEventListener('mousedown', this._downHandler, options);\n\t\t\t\twindow.removeEventListener('mousemove', this._moveHandler, options);\n\t\t\t\twindow.removeEventListener('wheel', this._wheelHandler, options);\n\t\t}\n\t\tdisableContextMenu() {\n\t\t\t\tif (!this._target) return;\n\t\t\t\tthis._target.addEventListener('contextmenu', this._contextMenuHandler);\n\t\t}\n\t\tenableContextMenu() {\n\t\t\t\tif (!this._target) return;\n\t\t\t\tthis._target.removeEventListener('contextmenu', this._contextMenuHandler);\n\t\t}\n\t\tenablePointerLock(success, error) {\n\t\t\t\tif (!document.body.requestPointerLock) {\n\t\t\t\t\t\tif (error) {\n\t\t\t\t\t\t\t\terror();\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst s = ()=>{\n\t\t\t\t\t\tsuccess();\n\t\t\t\t\t\tdocument.removeEventListener('pointerlockchange', s);\n\t\t\t\t};\n\t\t\t\tconst e = ()=>{\n\t\t\t\t\t\terror();\n\t\t\t\t\t\tdocument.removeEventListener('pointerlockerror', e);\n\t\t\t\t};\n\t\t\t\tif (success) {\n\t\t\t\t\t\tdocument.addEventListener('pointerlockchange', s, false);\n\t\t\t\t}\n\t\t\t\tif (error) {\n\t\t\t\t\t\tdocument.addEventListener('pointerlockerror', e, false);\n\t\t\t\t}\n\t\t\t\tdocument.body.requestPointerLock();\n\t\t}\n\t\tdisablePointerLock(success) {\n\t\t\t\tif (!document.exitPointerLock) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst s = ()=>{\n\t\t\t\t\t\tsuccess();\n\t\t\t\t\t\tdocument.removeEventListener('pointerlockchange', s);\n\t\t\t\t};\n\t\t\t\tif (success) {\n\t\t\t\t\t\tdocument.addEventListener('pointerlockchange', s, false);\n\t\t\t\t}\n\t\t\t\tdocument.exitPointerLock();\n\t\t}\n\t\tupdate() {\n\t\t\t\tthis._lastbuttons[0] = this._buttons[0];\n\t\t\t\tthis._lastbuttons[1] = this._buttons[1];\n\t\t\t\tthis._lastbuttons[2] = this._buttons[2];\n\t\t}\n\t\tisPressed(button) {\n\t\t\t\treturn this._buttons[button];\n\t\t}\n\t\twasPressed(button) {\n\t\t\t\treturn this._buttons[button] && !this._lastbuttons[button];\n\t\t}\n\t\twasReleased(button) {\n\t\t\t\treturn !this._buttons[button] && this._lastbuttons[button];\n\t\t}\n\t\t_handleUp(event) {\n\t\t\t\tthis._buttons[event.button] = false;\n\t\t\t\tconst e = new MouseEvent(this, event);\n\t\t\t\tif (!e.event) return;\n\t\t\t\tthis.fire('mouseup', e);\n\t\t}\n\t\t_handleDown(event) {\n\t\t\t\tthis._buttons[event.button] = true;\n\t\t\t\tconst e = new MouseEvent(this, event);\n\t\t\t\tif (!e.event) return;\n\t\t\t\tthis.fire('mousedown', e);\n\t\t}\n\t\t_handleMove(event) {\n\t\t\t\tconst e = new MouseEvent(this, event);\n\t\t\t\tif (!e.event) return;\n\t\t\t\tthis.fire('mousemove', e);\n\t\t\t\tthis._lastX = e.x;\n\t\t\t\tthis._lastY = e.y;\n\t\t}\n\t\t_handleWheel(event) {\n\t\t\t\tconst e = new MouseEvent(this, event);\n\t\t\t\tif (!e.event) return;\n\t\t\t\tthis.fire('mousewheel', e);\n\t\t}\n\t\t_getTargetCoords(event) {\n\t\t\t\tconst rect = this._target.getBoundingClientRect();\n\t\t\t\tconst left = Math.floor(rect.left);\n\t\t\t\tconst top = Math.floor(rect.top);\n\t\t\t\tif (event.clientX < left || event.clientX >= left + this._target.clientWidth || event.clientY < top || event.clientY >= top + this._target.clientHeight) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\t\tx: event.clientX - left,\n\t\t\t\t\t\ty: event.clientY - top\n\t\t\t\t};\n\t\t}\n}\n\nclass Controller {\n\t\tconstructor(element, options = {}){\n\t\t\t\tthis._element = null;\n\t\t\t\tthis._actions = {};\n\t\t\t\tthis._axes = {};\n\t\t\t\tthis._axesValues = {};\n\t\t\t\tthis._keyboard = options.keyboard || null;\n\t\t\t\tthis._mouse = options.mouse || null;\n\t\t\t\tthis._gamepads = options.gamepads || null;\n\t\t\t\tif (element) {\n\t\t\t\t\t\tthis.attach(element);\n\t\t\t\t}\n\t\t}\n\t\tattach(element) {\n\t\t\t\tthis._element = element;\n\t\t\t\tif (this._keyboard) {\n\t\t\t\t\t\tthis._keyboard.attach(element);\n\t\t\t\t}\n\t\t\t\tif (this._mouse) {\n\t\t\t\t\t\tthis._mouse.attach(element);\n\t\t\t\t}\n\t\t}\n\t\tdetach() {\n\t\t\t\tif (this._keyboard) {\n\t\t\t\t\t\tthis._keyboard.detach();\n\t\t\t\t}\n\t\t\t\tif (this._mouse) {\n\t\t\t\t\t\tthis._mouse.detach();\n\t\t\t\t}\n\t\t\t\tthis._element = null;\n\t\t}\n\t\tdisableContextMenu() {\n\t\t\t\tif (!this._mouse) {\n\t\t\t\t\t\tthis._enableMouse();\n\t\t\t\t}\n\t\t\t\tthis._mouse.disableContextMenu();\n\t\t}\n\t\tenableContextMenu() {\n\t\t\t\tif (!this._mouse) {\n\t\t\t\t\t\tthis._enableMouse();\n\t\t\t\t}\n\t\t\t\tthis._mouse.enableContextMenu();\n\t\t}\n\t\tupdate(dt) {\n\t\t\t\tif (this._keyboard) {\n\t\t\t\t\t\tthis._keyboard.update();\n\t\t\t\t}\n\t\t\t\tif (this._mouse) {\n\t\t\t\t\t\tthis._mouse.update();\n\t\t\t\t}\n\t\t\t\tif (this._gamepads) {\n\t\t\t\t\t\tthis._gamepads.update();\n\t\t\t\t}\n\t\t\t\tthis._axesValues = {};\n\t\t\t\tfor(const key in this._axes){\n\t\t\t\t\t\tthis._axesValues[key] = [];\n\t\t\t\t}\n\t\t}\n\t\tappendAction(action_name, action) {\n\t\t\t\tthis._actions[action_name] = this._actions[action_name] || [];\n\t\t\t\tthis._actions[action_name].push(action);\n\t\t}\n\t\tregisterKeys(action, keys) {\n\t\t\t\tif (!this._keyboard) {\n\t\t\t\t\t\tthis._enableKeyboard();\n\t\t\t\t}\n\t\t\t\tif (this._actions[action]) {\n\t\t\t\t\t\tthrow new Error(`Action: ${action} already registered`);\n\t\t\t\t}\n\t\t\t\tif (keys === undefined) {\n\t\t\t\t\t\tthrow new Error('Invalid button');\n\t\t\t\t}\n\t\t\t\tif (!keys.length) {\n\t\t\t\t\t\tkeys = [\n\t\t\t\t\t\t\t\tkeys\n\t\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t\tthis.appendAction(action, {\n\t\t\t\t\t\ttype: ACTION_KEYBOARD,\n\t\t\t\t\t\tkeys\n\t\t\t\t});\n\t\t}\n\t\tregisterMouse(action, button) {\n\t\t\t\tif (!this._mouse) {\n\t\t\t\t\t\tthis._enableMouse();\n\t\t\t\t}\n\t\t\t\tif (button === undefined) {\n\t\t\t\t\t\tthrow new Error('Invalid button');\n\t\t\t\t}\n\t\t\t\tthis.appendAction(action, {\n\t\t\t\t\t\ttype: ACTION_MOUSE,\n\t\t\t\t\t\tbutton\n\t\t\t\t});\n\t\t}\n\t\tregisterPadButton(action, pad, button) {\n\t\t\t\tif (button === undefined) {\n\t\t\t\t\t\tthrow new Error('Invalid button');\n\t\t\t\t}\n\t\t\t\tthis.appendAction(action, {\n\t\t\t\t\t\ttype: ACTION_GAMEPAD,\n\t\t\t\t\t\tbutton,\n\t\t\t\t\t\tpad\n\t\t\t\t});\n\t\t}\n\t\tregisterAxis(options) {\n\t\t\t\tconst name = options.name;\n\t\t\t\tif (!this._axes[name]) {\n\t\t\t\t\t\tthis._axes[name] = [];\n\t\t\t\t}\n\t\t\t\tconst i = this._axes[name].push(name);\n\t\t\t\toptions = options || {};\n\t\t\t\toptions.pad = options.pad || PAD_1;\n\t\t\t\tconst bind = function(controller, source, value, key) {\n\t\t\t\t\t\tswitch(source){\n\t\t\t\t\t\t\t\tcase 'mousex':\n\t\t\t\t\t\t\t\t\t\tcontroller._mouse.on('mousemove', (e)=>{\n\t\t\t\t\t\t\t\t\t\t\t\tcontroller._axesValues[name][i] = e.dx / 10;\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase 'mousey':\n\t\t\t\t\t\t\t\t\t\tcontroller._mouse.on('mousemove', (e)=>{\n\t\t\t\t\t\t\t\t\t\t\t\tcontroller._axesValues[name][i] = e.dy / 10;\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase 'key':\n\t\t\t\t\t\t\t\t\t\tcontroller._axes[name].push(()=>{\n\t\t\t\t\t\t\t\t\t\t\t\treturn controller._keyboard.isPressed(key) ? value : 0;\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase 'padrx':\n\t\t\t\t\t\t\t\t\t\tcontroller._axes[name].push(()=>{\n\t\t\t\t\t\t\t\t\t\t\t\treturn controller._gamepads.getAxis(options.pad, PAD_R_STICK_X);\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase 'padry':\n\t\t\t\t\t\t\t\t\t\tcontroller._axes[name].push(()=>{\n\t\t\t\t\t\t\t\t\t\t\t\treturn controller._gamepads.getAxis(options.pad, PAD_R_STICK_Y);\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase 'padlx':\n\t\t\t\t\t\t\t\t\t\tcontroller._axes[name].push(()=>{\n\t\t\t\t\t\t\t\t\t\t\t\treturn controller._gamepads.getAxis(options.pad, PAD_L_STICK_X);\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase 'padly':\n\t\t\t\t\t\t\t\t\t\tcontroller._axes[name].push(()=>{\n\t\t\t\t\t\t\t\t\t\t\t\treturn controller._gamepads.getAxis(options.pad, PAD_L_STICK_Y);\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tthrow new Error('Unknown axis');\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tbind(this, options.positive, 1, options.positiveKey);\n\t\t\t\tif (options.negativeKey || options.negative !== options.positive) {\n\t\t\t\t\t\tbind(this, options.negative, -1, options.negativeKey);\n\t\t\t\t}\n\t\t}\n\t\tisPressed(actionName) {\n\t\t\t\tif (!this._actions[actionName]) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tconst length = this._actions[actionName].length;\n\t\t\t\tfor(let index = 0; index < length; ++index){\n\t\t\t\t\t\tconst action = this._actions[actionName][index];\n\t\t\t\t\t\tswitch(action.type){\n\t\t\t\t\t\t\t\tcase ACTION_KEYBOARD:\n\t\t\t\t\t\t\t\t\t\tif (this._keyboard) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst len = action.keys.length;\n\t\t\t\t\t\t\t\t\t\t\t\tfor(let i = 0; i < len; i++){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (this._keyboard.isPressed(action.keys[i])) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase ACTION_MOUSE:\n\t\t\t\t\t\t\t\t\t\tif (this._mouse && this._mouse.isPressed(action.button)) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase ACTION_GAMEPAD:\n\t\t\t\t\t\t\t\t\t\tif (this._gamepads && this._gamepads.isPressed(action.pad, action.button)) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t}\n\t\twasPressed(actionName) {\n\t\t\t\tif (!this._actions[actionName]) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tconst length = this._actions[actionName].length;\n\t\t\t\tfor(let index = 0; index < length; ++index){\n\t\t\t\t\t\tconst action = this._actions[actionName][index];\n\t\t\t\t\t\tswitch(action.type){\n\t\t\t\t\t\t\t\tcase ACTION_KEYBOARD:\n\t\t\t\t\t\t\t\t\t\tif (this._keyboard) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst len = action.keys.length;\n\t\t\t\t\t\t\t\t\t\t\t\tfor(let i = 0; i < len; i++){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (this._keyboard.wasPressed(action.keys[i])) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase ACTION_MOUSE:\n\t\t\t\t\t\t\t\t\t\tif (this._mouse && this._mouse.wasPressed(action.button)) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase ACTION_GAMEPAD:\n\t\t\t\t\t\t\t\t\t\tif (this._gamepads && this._gamepads.wasPressed(action.pad, action.button)) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t}\n\t\tgetAxis(name) {\n\t\t\t\tlet value = 0;\n\t\t\t\tif (this._axes[name]) {\n\t\t\t\t\t\tconst len = this._axes[name].length;\n\t\t\t\t\t\tfor(let i = 0; i < len; i++){\n\t\t\t\t\t\t\t\tif (typeof this._axes[name][i] === 'function') {\n\t\t\t\t\t\t\t\t\t\tconst v = this._axes[name][i]();\n\t\t\t\t\t\t\t\t\t\tif (Math.abs(v) > Math.abs(value)) {\n\t\t\t\t\t\t\t\t\t\t\t\tvalue = v;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else if (this._axesValues[name]) {\n\t\t\t\t\t\t\t\t\t\tif (Math.abs(this._axesValues[name][i]) > Math.abs(value)) {\n\t\t\t\t\t\t\t\t\t\t\t\tvalue = this._axesValues[name][i];\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn value;\n\t\t}\n\t\t_enableMouse() {\n\t\t\t\tthis._mouse = new Mouse();\n\t\t\t\tif (!this._element) {\n\t\t\t\t\t\tthrow new Error('Controller must be attached to an Element');\n\t\t\t\t}\n\t\t\t\tthis._mouse.attach(this._element);\n\t\t}\n\t\t_enableKeyboard() {\n\t\t\t\tthis._keyboard = new Keyboard();\n\t\t\t\tif (!this._element) {\n\t\t\t\t\t\tthrow new Error('Controller must be attached to an Element');\n\t\t\t\t}\n\t\t\t\tthis._keyboard.attach(this._element);\n\t\t}\n}\n\nconst dummyArray = Object.freeze([]);\nlet getGamepads = function() {\n\t\treturn dummyArray;\n};\nif (typeof navigator !== 'undefined') {\n\t\tgetGamepads = (navigator.getGamepads || navigator.webkitGetGamepads || getGamepads).bind(navigator);\n}\nconst MAPS_INDEXES = {\n\t\tbuttons: {\n\t\t\t\tPAD_FACE_1,\n\t\t\t\tPAD_FACE_2,\n\t\t\t\tPAD_FACE_3,\n\t\t\t\tPAD_FACE_4,\n\t\t\t\tPAD_L_SHOULDER_1,\n\t\t\t\tPAD_R_SHOULDER_1,\n\t\t\t\tPAD_L_SHOULDER_2,\n\t\t\t\tPAD_R_SHOULDER_2,\n\t\t\t\tPAD_SELECT,\n\t\t\t\tPAD_START,\n\t\t\t\tPAD_L_STICK_BUTTON,\n\t\t\t\tPAD_R_STICK_BUTTON,\n\t\t\t\tPAD_UP,\n\t\t\t\tPAD_DOWN,\n\t\t\t\tPAD_LEFT,\n\t\t\t\tPAD_RIGHT,\n\t\t\t\tPAD_VENDOR,\n\t\t\t\tXRPAD_TRIGGER,\n\t\t\t\tXRPAD_SQUEEZE,\n\t\t\t\tXRPAD_TOUCHPAD_BUTTON,\n\t\t\t\tXRPAD_STICK_BUTTON,\n\t\t\t\tXRPAD_A,\n\t\t\t\tXRPAD_B\n\t\t},\n\t\taxes: {\n\t\t\t\tPAD_L_STICK_X,\n\t\t\t\tPAD_L_STICK_Y,\n\t\t\t\tPAD_R_STICK_X,\n\t\t\t\tPAD_R_STICK_Y,\n\t\t\t\tXRPAD_TOUCHPAD_X,\n\t\t\t\tXRPAD_TOUCHPAD_Y,\n\t\t\t\tXRPAD_STICK_X,\n\t\t\t\tXRPAD_STICK_Y\n\t\t}\n};\nconst MAPS = {\n\t\tDEFAULT: {\n\t\t\t\tbuttons: [\n\t\t\t\t\t\t'PAD_FACE_1',\n\t\t\t\t\t\t'PAD_FACE_2',\n\t\t\t\t\t\t'PAD_FACE_3',\n\t\t\t\t\t\t'PAD_FACE_4',\n\t\t\t\t\t\t'PAD_L_SHOULDER_1',\n\t\t\t\t\t\t'PAD_R_SHOULDER_1',\n\t\t\t\t\t\t'PAD_L_SHOULDER_2',\n\t\t\t\t\t\t'PAD_R_SHOULDER_2',\n\t\t\t\t\t\t'PAD_SELECT',\n\t\t\t\t\t\t'PAD_START',\n\t\t\t\t\t\t'PAD_L_STICK_BUTTON',\n\t\t\t\t\t\t'PAD_R_STICK_BUTTON',\n\t\t\t\t\t\t'PAD_UP',\n\t\t\t\t\t\t'PAD_DOWN',\n\t\t\t\t\t\t'PAD_LEFT',\n\t\t\t\t\t\t'PAD_RIGHT',\n\t\t\t\t\t\t'PAD_VENDOR'\n\t\t\t\t],\n\t\t\t\taxes: [\n\t\t\t\t\t\t'PAD_L_STICK_X',\n\t\t\t\t\t\t'PAD_L_STICK_Y',\n\t\t\t\t\t\t'PAD_R_STICK_X',\n\t\t\t\t\t\t'PAD_R_STICK_Y'\n\t\t\t\t]\n\t\t},\n\t\tDEFAULT_DUAL: {\n\t\t\t\tbuttons: [\n\t\t\t\t\t\t'PAD_FACE_1',\n\t\t\t\t\t\t'PAD_FACE_2',\n\t\t\t\t\t\t'PAD_FACE_3',\n\t\t\t\t\t\t'PAD_FACE_4',\n\t\t\t\t\t\t'PAD_L_SHOULDER_1',\n\t\t\t\t\t\t'PAD_R_SHOULDER_1',\n\t\t\t\t\t\t'PAD_L_SHOULDER_2',\n\t\t\t\t\t\t'PAD_R_SHOULDER_2',\n\t\t\t\t\t\t'PAD_SELECT',\n\t\t\t\t\t\t'PAD_START',\n\t\t\t\t\t\t'PAD_L_STICK_BUTTON',\n\t\t\t\t\t\t'PAD_R_STICK_BUTTON',\n\t\t\t\t\t\t'PAD_VENDOR'\n\t\t\t\t],\n\t\t\t\taxes: [\n\t\t\t\t\t\t'PAD_L_STICK_X',\n\t\t\t\t\t\t'PAD_L_STICK_Y',\n\t\t\t\t\t\t'PAD_R_STICK_X',\n\t\t\t\t\t\t'PAD_R_STICK_Y'\n\t\t\t\t],\n\t\t\t\tsynthesizedButtons: {\n\t\t\t\t\t\tPAD_UP: {\n\t\t\t\t\t\t\t\taxis: 0,\n\t\t\t\t\t\t\t\tmin: 0,\n\t\t\t\t\t\t\t\tmax: 1\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPAD_DOWN: {\n\t\t\t\t\t\t\t\taxis: 0,\n\t\t\t\t\t\t\t\tmin: -1,\n\t\t\t\t\t\t\t\tmax: 0\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPAD_LEFT: {\n\t\t\t\t\t\t\t\taxis: 0,\n\t\t\t\t\t\t\t\tmin: -1,\n\t\t\t\t\t\t\t\tmax: 0\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPAD_RIGHT: {\n\t\t\t\t\t\t\t\taxis: 0,\n\t\t\t\t\t\t\t\tmin: 0,\n\t\t\t\t\t\t\t\tmax: 1\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t},\n\t\tPS3: {\n\t\t\t\tbuttons: [\n\t\t\t\t\t\t'PAD_FACE_1',\n\t\t\t\t\t\t'PAD_FACE_2',\n\t\t\t\t\t\t'PAD_FACE_4',\n\t\t\t\t\t\t'PAD_FACE_3',\n\t\t\t\t\t\t'PAD_L_SHOULDER_1',\n\t\t\t\t\t\t'PAD_R_SHOULDER_1',\n\t\t\t\t\t\t'PAD_L_SHOULDER_2',\n\t\t\t\t\t\t'PAD_R_SHOULDER_2',\n\t\t\t\t\t\t'PAD_SELECT',\n\t\t\t\t\t\t'PAD_START',\n\t\t\t\t\t\t'PAD_L_STICK_BUTTON',\n\t\t\t\t\t\t'PAD_R_STICK_BUTTON',\n\t\t\t\t\t\t'PAD_UP',\n\t\t\t\t\t\t'PAD_DOWN',\n\t\t\t\t\t\t'PAD_LEFT',\n\t\t\t\t\t\t'PAD_RIGHT',\n\t\t\t\t\t\t'PAD_VENDOR'\n\t\t\t\t],\n\t\t\t\taxes: [\n\t\t\t\t\t\t'PAD_L_STICK_X',\n\t\t\t\t\t\t'PAD_L_STICK_Y',\n\t\t\t\t\t\t'PAD_R_STICK_X',\n\t\t\t\t\t\t'PAD_R_STICK_Y'\n\t\t\t\t],\n\t\t\t\tmapping: 'standard'\n\t\t},\n\t\tDEFAULT_XR: {\n\t\t\t\tbuttons: [\n\t\t\t\t\t\t'XRPAD_TRIGGER',\n\t\t\t\t\t\t'XRPAD_SQUEEZE',\n\t\t\t\t\t\t'XRPAD_TOUCHPAD_BUTTON',\n\t\t\t\t\t\t'XRPAD_STICK_BUTTON',\n\t\t\t\t\t\t'XRPAD_A',\n\t\t\t\t\t\t'XRPAD_B'\n\t\t\t\t],\n\t\t\t\taxes: [\n\t\t\t\t\t\t'XRPAD_TOUCHPAD_X',\n\t\t\t\t\t\t'XRPAD_TOUCHPAD_Y',\n\t\t\t\t\t\t'XRPAD_STICK_X',\n\t\t\t\t\t\t'XRPAD_STICK_Y'\n\t\t\t\t],\n\t\t\t\tmapping: 'xr-standard'\n\t\t}\n};\nconst PRODUCT_CODES = {\n\t\t'Product: 0268': 'PS3'\n};\nconst custom_maps = {};\nfunction getMap(pad) {\n\t\tconst custom = custom_maps[pad.id];\n\t\tif (custom) {\n\t\t\t\treturn custom;\n\t\t}\n\t\tfor(const code in PRODUCT_CODES){\n\t\t\t\tif (pad.id.indexOf(code) !== -1) {\n\t\t\t\t\t\tconst product = PRODUCT_CODES[code];\n\t\t\t\t\t\tif (!pad.mapping) {\n\t\t\t\t\t\t\t\tconst raw = MAPS[`RAW_${product}`];\n\t\t\t\t\t\t\t\tif (raw) {\n\t\t\t\t\t\t\t\t\t\treturn raw;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn MAPS[product];\n\t\t\t\t}\n\t\t}\n\t\tif (pad.mapping === 'xr-standard') {\n\t\t\t\treturn MAPS.DEFAULT_XR;\n\t\t}\n\t\tconst defaultmap = MAPS.DEFAULT;\n\t\tconst map = pad.buttons.length < defaultmap.buttons.length ? MAPS.DEFAULT_DUAL : defaultmap;\n\t\tmap.mapping = pad.mapping;\n\t\treturn map;\n}\nlet deadZone = 0.25;\nfunction sleep(ms) {\n\t\treturn new Promise((resolve)=>{\n\t\t\t\tsetTimeout(resolve, ms);\n\t\t});\n}\nclass GamePadButton {\n\t\tconstructor(current, previous){\n\t\t\t\tthis.value = 0;\n\t\t\t\tthis.pressed = false;\n\t\t\t\tthis.touched = false;\n\t\t\t\tthis.wasPressed = false;\n\t\t\t\tthis.wasReleased = false;\n\t\t\t\tthis.wasTouched = false;\n\t\t\t\tif (typeof current === 'number') {\n\t\t\t\t\t\tthis.value = current;\n\t\t\t\t\t\tthis.pressed = current === 1;\n\t\t\t\t\t\tthis.touched = current > 0;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.value = current.value;\n\t\t\t\t\t\tthis.pressed = current.pressed;\n\t\t\t\t\t\tthis.touched = current.touched ?? current.value > 0;\n\t\t\t\t}\n\t\t\t\tif (previous) {\n\t\t\t\t\t\tif (typeof previous === 'number') {\n\t\t\t\t\t\t\t\tthis.wasPressed = previous !== 1 && this.pressed;\n\t\t\t\t\t\t\t\tthis.wasReleased = previous === 1 && !this.pressed;\n\t\t\t\t\t\t\t\tthis.wasTouched = previous === 0 && this.touched;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.wasPressed = !previous.pressed && this.pressed;\n\t\t\t\t\t\t\t\tthis.wasReleased = previous.pressed && !this.pressed;\n\t\t\t\t\t\t\t\tthis.wasTouched = !(previous.touched ?? previous.value > 0) && this.touched;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tupdate(button) {\n\t\t\t\tconst { value, pressed } = button;\n\t\t\t\tconst touched = button.touched ?? value > 0;\n\t\t\t\tthis.wasPressed = !this.pressed && pressed;\n\t\t\t\tthis.wasReleased = this.pressed && !pressed;\n\t\t\t\tthis.wasTouched = !this.touched && touched;\n\t\t\t\tthis.value = value;\n\t\t\t\tthis.pressed = pressed;\n\t\t\t\tthis.touched = touched;\n\t\t}\n}\nconst dummyButton = Object.freeze(new GamePadButton(0));\nclass GamePad {\n\t\tconstructor(gamepad, map){\n\t\t\t\tthis._compiledMapping = {\n\t\t\t\t\t\tbuttons: [],\n\t\t\t\t\t\taxes: []\n\t\t\t\t};\n\t\t\t\tthis.id = gamepad.id;\n\t\t\t\tthis.index = gamepad.index;\n\t\t\t\tthis._buttons = gamepad.buttons.map((b)=>new GamePadButton(b));\n\t\t\t\tthis._axes = [\n\t\t\t\t\t\t...gamepad.axes\n\t\t\t\t];\n\t\t\t\tthis._previousAxes = [\n\t\t\t\t\t\t...gamepad.axes\n\t\t\t\t];\n\t\t\t\tthis.mapping = map.mapping;\n\t\t\t\tthis.map = map;\n\t\t\t\tthis.hand = gamepad.hand || 'none';\n\t\t\t\tthis.pad = gamepad;\n\t\t\t\tthis._compileMapping();\n\t\t}\n\t\tget connected() {\n\t\t\t\treturn this.pad.connected;\n\t\t}\n\t\t_compileMapping() {\n\t\t\t\tconst { axes, buttons } = this._compiledMapping;\n\t\t\t\tconst axesIndexes = MAPS_INDEXES.axes;\n\t\t\t\tconst buttonsIndexes = MAPS_INDEXES.buttons;\n\t\t\t\taxes.length = 0;\n\t\t\t\tbuttons.length = 0;\n\t\t\t\tconst axesMap = this.map.axes;\n\t\t\t\tif (axesMap) {\n\t\t\t\t\t\tthis.map.axes.forEach((axis, i)=>{\n\t\t\t\t\t\t\t\taxes[axesIndexes[axis]] = ()=>this.pad.axes[i] || 0;\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tfor(let i = 0, l = axes.length; i < l; i++){\n\t\t\t\t\t\tif (!axes[i]) {\n\t\t\t\t\t\t\t\taxes[i] = ()=>0;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst buttonsMap = this.map.buttons;\n\t\t\t\tif (buttonsMap) {\n\t\t\t\t\t\tbuttonsMap.forEach((button, i)=>{\n\t\t\t\t\t\t\t\tbuttons[buttonsIndexes[button]] = ()=>this._buttons[i] || dummyButton;\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tconst synthesizedButtonsMap = this.map.synthesizedButtons;\n\t\t\t\tif (synthesizedButtonsMap) {\n\t\t\t\t\t\tObject.entries(synthesizedButtonsMap).forEach((button)=>{\n\t\t\t\t\t\t\t\tconst { axis, max, min } = button[1];\n\t\t\t\t\t\t\t\tbuttons[buttonsIndexes[button[0]]] = ()=>new GamePadButton(Math.abs(math.clamp(this._axes[axis] ?? 0, min, max)), Math.abs(math.clamp(this._previousAxes[axis] ?? 0, min, max)));\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tfor(let i = 0, l = buttons.length; i < l; i++){\n\t\t\t\t\t\tif (!buttons[i]) {\n\t\t\t\t\t\t\t\tbuttons[i] = ()=>dummyButton;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tupdate(gamepad) {\n\t\t\t\tthis.pad = gamepad;\n\t\t\t\tconst previousAxes = this._previousAxes;\n\t\t\t\tconst axes = this._axes;\n\t\t\t\tpreviousAxes.length = 0;\n\t\t\t\tpreviousAxes.push(...axes);\n\t\t\t\taxes.length = 0;\n\t\t\t\taxes.push(...gamepad.axes);\n\t\t\t\tconst buttons = this._buttons;\n\t\t\t\tfor(let i = 0, l = buttons.length; i < l; i++){\n\t\t\t\t\t\tbuttons[i].update(gamepad.buttons[i]);\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t}\n\t\tupdateMap(map) {\n\t\t\t\tmap.mapping = 'custom';\n\t\t\t\tcustom_maps[this.id] = map;\n\t\t\t\tthis.map = map;\n\t\t\t\tthis.mapping = 'custom';\n\t\t\t\tthis._compileMapping();\n\t\t}\n\t\tresetMap() {\n\t\t\t\tif (custom_maps[this.id]) {\n\t\t\t\t\t\tdelete custom_maps[this.id];\n\t\t\t\t\t\tconst map = getMap(this.pad);\n\t\t\t\t\t\tthis.map = map;\n\t\t\t\t\t\tthis.mapping = map.mapping;\n\t\t\t\t\t\tthis._compileMapping();\n\t\t\t\t}\n\t\t}\n\t\tget axes() {\n\t\t\t\treturn this._compiledMapping.axes.map((a)=>a());\n\t\t}\n\t\tget buttons() {\n\t\t\t\treturn this._compiledMapping.buttons.map((b)=>b());\n\t\t}\n\t\tasync pulse(intensity, duration, options) {\n\t\t\t\tconst actuators = this.pad.vibrationActuator ? [\n\t\t\t\t\t\tthis.pad.vibrationActuator\n\t\t\t\t] : this.pad.hapticActuators || dummyArray;\n\t\t\t\tif (actuators.length) {\n\t\t\t\t\t\tconst startDelay = options?.startDelay ?? 0;\n\t\t\t\t\t\tconst strongMagnitude = options?.strongMagnitude ?? intensity;\n\t\t\t\t\t\tconst weakMagnitude = options?.weakMagnitude ?? intensity;\n\t\t\t\t\t\tconst results = await Promise.all(actuators.map(async (actuator)=>{\n\t\t\t\t\t\t\t\tif (!actuator) {\n\t\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (actuator.playEffect) {\n\t\t\t\t\t\t\t\t\t\treturn actuator.playEffect(actuator.type, {\n\t\t\t\t\t\t\t\t\t\t\t\tduration,\n\t\t\t\t\t\t\t\t\t\t\t\tstartDelay,\n\t\t\t\t\t\t\t\t\t\t\t\tstrongMagnitude,\n\t\t\t\t\t\t\t\t\t\t\t\tweakMagnitude\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t} else if (actuator.pulse) {\n\t\t\t\t\t\t\t\t\t\tawait sleep(startDelay);\n\t\t\t\t\t\t\t\t\t\treturn actuator.pulse(intensity, duration);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}));\n\t\t\t\t\t\treturn results.some((r)=>r === true || r === 'complete');\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t}\n\t\tgetButton(index) {\n\t\t\t\tconst button = this._compiledMapping.buttons[index];\n\t\t\t\treturn button ? button() : dummyButton;\n\t\t}\n\t\tisPressed(button) {\n\t\t\t\treturn this.getButton(button).pressed;\n\t\t}\n\t\twasPressed(button) {\n\t\t\t\treturn this.getButton(button).wasPressed;\n\t\t}\n\t\twasReleased(button) {\n\t\t\t\treturn this.getButton(button).wasReleased;\n\t\t}\n\t\tisTouched(button) {\n\t\t\t\treturn this.getButton(button).touched;\n\t\t}\n\t\twasTouched(button) {\n\t\t\t\treturn this.getButton(button).wasTouched;\n\t\t}\n\t\tgetValue(button) {\n\t\t\t\treturn this.getButton(button).value;\n\t\t}\n\t\tgetAxis(axis) {\n\t\t\t\tconst a = this.axes[axis];\n\t\t\t\treturn a && Math.abs(a) > deadZone ? a : 0;\n\t\t}\n}\nclass GamePads extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_GAMEPADCONNECTED = 'gamepadconnected';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_GAMEPADDISCONNECTED = 'gamepaddisconnected';\n\t\t}\n\t\tconstructor(){\n\t\t\t\tsuper();\n\t\t\t\tthis.gamepadsSupported = platform.gamepads;\n\t\t\t\tthis.current = [];\n\t\t\t\tthis._previous = [];\n\t\t\t\tthis._ongamepadconnectedHandler = this._ongamepadconnected.bind(this);\n\t\t\t\tthis._ongamepaddisconnectedHandler = this._ongamepaddisconnected.bind(this);\n\t\t\t\twindow.addEventListener('gamepadconnected', this._ongamepadconnectedHandler, false);\n\t\t\t\twindow.addEventListener('gamepaddisconnected', this._ongamepaddisconnectedHandler, false);\n\t\t\t\tthis.poll();\n\t\t}\n\t\tset deadZone(value) {\n\t\t\t\tdeadZone = value;\n\t\t}\n\t\tget deadZone() {\n\t\t\t\treturn deadZone;\n\t\t}\n\t\tget previous() {\n\t\t\t\tconst current = this.current;\n\t\t\t\tfor(let i = 0, l = current.length; i < l; i++){\n\t\t\t\t\t\tconst buttons = current[i]._buttons;\n\t\t\t\t\t\tif (!this._previous[i]) {\n\t\t\t\t\t\t\t\tthis._previous[i] = [];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor(let j = 0, m = buttons.length; j < m; j++){\n\t\t\t\t\t\t\t\tconst button = buttons[i];\n\t\t\t\t\t\t\t\tthis.previous[i][j] = button ? !button.wasPressed && button.pressed || button.wasReleased : false;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._previous.length = this.current.length;\n\t\t\t\treturn this._previous;\n\t\t}\n\t\t_ongamepadconnected(event) {\n\t\t\t\tconst pad = new GamePad(event.gamepad, this.getMap(event.gamepad));\n\t\t\t\tconst current = this.current;\n\t\t\t\tlet padIndex = current.findIndex((gp)=>gp.index === pad.index);\n\t\t\t\twhile(padIndex !== -1){\n\t\t\t\t\t\tcurrent.splice(padIndex, 1);\n\t\t\t\t\t\tpadIndex = current.findIndex((gp)=>gp.index === pad.index);\n\t\t\t\t}\n\t\t\t\tcurrent.push(pad);\n\t\t\t\tthis.fire('gamepadconnected', pad);\n\t\t}\n\t\t_ongamepaddisconnected(event) {\n\t\t\t\tconst current = this.current;\n\t\t\t\tconst padIndex = current.findIndex((gp)=>gp.index === event.gamepad.index);\n\t\t\t\tif (padIndex !== -1) {\n\t\t\t\t\t\tthis.fire('gamepaddisconnected', current[padIndex]);\n\t\t\t\t\t\tcurrent.splice(padIndex, 1);\n\t\t\t\t}\n\t\t}\n\t\tupdate() {\n\t\t\t\tthis.poll();\n\t\t}\n\t\tpoll(pads = []) {\n\t\t\t\tif (pads.length > 0) {\n\t\t\t\t\t\tpads.length = 0;\n\t\t\t\t}\n\t\t\t\tconst padDevices = getGamepads();\n\t\t\t\tfor(let i = 0, len = padDevices.length; i < len; i++){\n\t\t\t\t\t\tif (padDevices[i]) {\n\t\t\t\t\t\t\t\tconst pad = this.findByIndex(padDevices[i].index);\n\t\t\t\t\t\t\t\tif (pad) {\n\t\t\t\t\t\t\t\t\t\tpads.push(pad.update(padDevices[i]));\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tconst nPad = new GamePad(padDevices[i], this.getMap(padDevices[i]));\n\t\t\t\t\t\t\t\t\t\tthis.current.push(nPad);\n\t\t\t\t\t\t\t\t\t\tpads.push(nPad);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn pads;\n\t\t}\n\t\tdestroy() {\n\t\t\t\twindow.removeEventListener('gamepadconnected', this._ongamepadconnectedHandler, false);\n\t\t\t\twindow.removeEventListener('gamepaddisconnected', this._ongamepaddisconnectedHandler, false);\n\t\t}\n\t\tgetMap(pad) {\n\t\t\t\treturn getMap(pad);\n\t\t}\n\t\tisPressed(orderIndex, button) {\n\t\t\t\treturn this.current[orderIndex]?.isPressed(button) || false;\n\t\t}\n\t\twasPressed(orderIndex, button) {\n\t\t\t\treturn this.current[orderIndex]?.wasPressed(button) || false;\n\t\t}\n\t\twasReleased(orderIndex, button) {\n\t\t\t\treturn this.current[orderIndex]?.wasReleased(button) || false;\n\t\t}\n\t\tgetAxis(orderIndex, axis) {\n\t\t\t\treturn this.current[orderIndex]?.getAxis(axis) || 0;\n\t\t}\n\t\tpulse(orderIndex, intensity, duration, options) {\n\t\t\t\tconst pad = this.current[orderIndex];\n\t\t\t\treturn pad ? pad.pulse(intensity, duration, options) : Promise.resolve(false);\n\t\t}\n\t\tpulseAll(intensity, duration, options) {\n\t\t\t\treturn Promise.all(this.current.map((pad)=>pad.pulse(intensity, duration, options)));\n\t\t}\n\t\tfindById(id) {\n\t\t\t\treturn this.current.find((gp)=>gp && gp.id === id) || null;\n\t\t}\n\t\tfindByIndex(index) {\n\t\t\t\treturn this.current.find((gp)=>gp && gp.index === index) || null;\n\t\t}\n}\n\nfunction getTouchTargetCoords(touch) {\n\t\tlet totalOffsetX = 0;\n\t\tlet totalOffsetY = 0;\n\t\tlet target = touch.target;\n\t\twhile(!(target instanceof HTMLElement) && target){\n\t\t\t\ttarget = target.parentNode;\n\t\t}\n\t\twhile(target){\n\t\t\t\ttotalOffsetX += target.offsetLeft - target.scrollLeft;\n\t\t\t\ttotalOffsetY += target.offsetTop - target.scrollTop;\n\t\t\t\ttarget = target.offsetParent;\n\t\t}\n\t\treturn {\n\t\t\t\tx: touch.pageX - totalOffsetX,\n\t\t\t\ty: touch.pageY - totalOffsetY\n\t\t};\n}\nclass Touch {\n\t\tconstructor(touch){\n\t\t\t\tconst coords = getTouchTargetCoords(touch);\n\t\t\t\tthis.id = touch.identifier;\n\t\t\t\tthis.x = coords.x;\n\t\t\t\tthis.y = coords.y;\n\t\t\t\tthis.target = touch.target;\n\t\t\t\tthis.touch = touch;\n\t\t}\n}\nclass TouchEvent {\n\t\tconstructor(device, event){\n\t\t\t\tthis.touches = [];\n\t\t\t\tthis.changedTouches = [];\n\t\t\t\tthis.element = event.target;\n\t\t\t\tthis.event = event;\n\t\t\t\tthis.touches = Array.from(event.touches).map((touch)=>new Touch(touch));\n\t\t\t\tthis.changedTouches = Array.from(event.changedTouches).map((touch)=>new Touch(touch));\n\t\t}\n\t\tgetTouchById(id, list) {\n\t\t\t\treturn list.find((touch)=>touch.id === id) || null;\n\t\t}\n}\n\nclass TouchDevice extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_TOUCHSTART = 'touchstart';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_TOUCHEND = 'touchend';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_TOUCHMOVE = 'touchmove';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_TOUCHCANCEL = 'touchcancel';\n\t\t}\n\t\tconstructor(element){\n\t\t\t\tsuper();\n\t\t\t\tthis._element = null;\n\t\t\t\tthis._startHandler = this._handleTouchStart.bind(this);\n\t\t\t\tthis._endHandler = this._handleTouchEnd.bind(this);\n\t\t\t\tthis._moveHandler = this._handleTouchMove.bind(this);\n\t\t\t\tthis._cancelHandler = this._handleTouchCancel.bind(this);\n\t\t\t\tthis.attach(element);\n\t\t}\n\t\tattach(element) {\n\t\t\t\tif (this._element) {\n\t\t\t\t\t\tthis.detach();\n\t\t\t\t}\n\t\t\t\tthis._element = element;\n\t\t\t\tthis._element.addEventListener('touchstart', this._startHandler, false);\n\t\t\t\tthis._element.addEventListener('touchend', this._endHandler, false);\n\t\t\t\tthis._element.addEventListener('touchmove', this._moveHandler, false);\n\t\t\t\tthis._element.addEventListener('touchcancel', this._cancelHandler, false);\n\t\t}\n\t\tdetach() {\n\t\t\t\tif (this._element) {\n\t\t\t\t\t\tthis._element.removeEventListener('touchstart', this._startHandler, false);\n\t\t\t\t\t\tthis._element.removeEventListener('touchend', this._endHandler, false);\n\t\t\t\t\t\tthis._element.removeEventListener('touchmove', this._moveHandler, false);\n\t\t\t\t\t\tthis._element.removeEventListener('touchcancel', this._cancelHandler, false);\n\t\t\t\t}\n\t\t\t\tthis._element = null;\n\t\t}\n\t\t_handleTouchStart(e) {\n\t\t\t\tthis.fire('touchstart', new TouchEvent(this, e));\n\t\t}\n\t\t_handleTouchEnd(e) {\n\t\t\t\tthis.fire('touchend', new TouchEvent(this, e));\n\t\t}\n\t\t_handleTouchMove(e) {\n\t\t\t\te.preventDefault();\n\t\t\t\tthis.fire('touchmove', new TouchEvent(this, e));\n\t\t}\n\t\t_handleTouchCancel(e) {\n\t\t\t\tthis.fire('touchcancel', new TouchEvent(this, e));\n\t\t}\n}\n\nclass Http {\n\t\tstatic{\n\t\t\t\tthis.ContentType = {\n\t\t\t\t\t\tAAC: 'audio/aac',\n\t\t\t\t\t\tBASIS: 'image/basis',\n\t\t\t\t\t\tBIN: 'application/octet-stream',\n\t\t\t\t\t\tDDS: 'image/dds',\n\t\t\t\t\t\tFORM_URLENCODED: 'application/x-www-form-urlencoded',\n\t\t\t\t\t\tGIF: 'image/gif',\n\t\t\t\t\t\tGLB: 'model/gltf-binary',\n\t\t\t\t\t\tJPEG: 'image/jpeg',\n\t\t\t\t\t\tJSON: 'application/json',\n\t\t\t\t\t\tMP3: 'audio/mpeg',\n\t\t\t\t\t\tMP4: 'audio/mp4',\n\t\t\t\t\t\tOGG: 'audio/ogg',\n\t\t\t\t\t\tOPUS: 'audio/ogg; codecs=\"opus\"',\n\t\t\t\t\t\tPNG: 'image/png',\n\t\t\t\t\t\tTEXT: 'text/plain',\n\t\t\t\t\t\tWAV: 'audio/x-wav',\n\t\t\t\t\t\tXML: 'application/xml'\n\t\t\t\t};\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.ResponseType = {\n\t\t\t\t\t\tTEXT: 'text',\n\t\t\t\t\t\tARRAY_BUFFER: 'arraybuffer',\n\t\t\t\t\t\tBLOB: 'blob',\n\t\t\t\t\t\tDOCUMENT: 'document',\n\t\t\t\t\t\tJSON: 'json'\n\t\t\t\t};\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.binaryExtensions = [\n\t\t\t\t\t\t'.model',\n\t\t\t\t\t\t'.wav',\n\t\t\t\t\t\t'.ogg',\n\t\t\t\t\t\t'.mp3',\n\t\t\t\t\t\t'.mp4',\n\t\t\t\t\t\t'.m4a',\n\t\t\t\t\t\t'.aac',\n\t\t\t\t\t\t'.dds',\n\t\t\t\t\t\t'.basis',\n\t\t\t\t\t\t'.glb',\n\t\t\t\t\t\t'.opus'\n\t\t\t\t];\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.retryDelay = 100;\n\t\t}\n\t\tget(url, options, callback) {\n\t\t\t\tif (typeof options === 'function') {\n\t\t\t\t\t\tcallback = options;\n\t\t\t\t\t\toptions = {};\n\t\t\t\t}\n\t\t\t\tconst result = this.request('GET', url, options, callback);\n\t\t\t\tconst { progress } = options;\n\t\t\t\tif (progress) {\n\t\t\t\t\t\tconst handler = (event)=>{\n\t\t\t\t\t\t\t\tif (event.lengthComputable) {\n\t\t\t\t\t\t\t\t\t\tprogress.fire('progress', event.loaded, event.total);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t\tconst endHandler = (event)=>{\n\t\t\t\t\t\t\t\thandler(event);\n\t\t\t\t\t\t\t\tresult.removeEventListener('loadstart', handler);\n\t\t\t\t\t\t\t\tresult.removeEventListener('progress', handler);\n\t\t\t\t\t\t\t\tresult.removeEventListener('loadend', endHandler);\n\t\t\t\t\t\t};\n\t\t\t\t\t\tresult.addEventListener('loadstart', handler);\n\t\t\t\t\t\tresult.addEventListener('progress', handler);\n\t\t\t\t\t\tresult.addEventListener('loadend', endHandler);\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t}\n\t\tpost(url, data, options, callback) {\n\t\t\t\tif (typeof options === 'function') {\n\t\t\t\t\t\tcallback = options;\n\t\t\t\t\t\toptions = {};\n\t\t\t\t}\n\t\t\t\toptions.postdata = data;\n\t\t\t\treturn this.request('POST', url, options, callback);\n\t\t}\n\t\tput(url, data, options, callback) {\n\t\t\t\tif (typeof options === 'function') {\n\t\t\t\t\t\tcallback = options;\n\t\t\t\t\t\toptions = {};\n\t\t\t\t}\n\t\t\t\toptions.postdata = data;\n\t\t\t\treturn this.request('PUT', url, options, callback);\n\t\t}\n\t\tdel(url, options, callback) {\n\t\t\t\tif (typeof options === 'function') {\n\t\t\t\t\t\tcallback = options;\n\t\t\t\t\t\toptions = {};\n\t\t\t\t}\n\t\t\t\treturn this.request('DELETE', url, options, callback);\n\t\t}\n\t\trequest(method, url, options, callback) {\n\t\t\t\tlet uri, query, postdata;\n\t\t\t\tlet errored = false;\n\t\t\t\tif (typeof options === 'function') {\n\t\t\t\t\t\tcallback = options;\n\t\t\t\t\t\toptions = {};\n\t\t\t\t}\n\t\t\t\tif (options.retry) {\n\t\t\t\t\t\toptions = Object.assign({\n\t\t\t\t\t\t\t\tretries: 0,\n\t\t\t\t\t\t\t\tmaxRetries: 5\n\t\t\t\t\t\t}, options);\n\t\t\t\t}\n\t\t\t\toptions.callback = callback;\n\t\t\t\tif (options.async == null) {\n\t\t\t\t\t\toptions.async = true;\n\t\t\t\t}\n\t\t\t\tif (options.headers == null) {\n\t\t\t\t\t\toptions.headers = {};\n\t\t\t\t}\n\t\t\t\tif (options.postdata != null) {\n\t\t\t\t\t\tif (options.postdata instanceof Document) {\n\t\t\t\t\t\t\t\tpostdata = options.postdata;\n\t\t\t\t\t\t} else if (options.postdata instanceof FormData) {\n\t\t\t\t\t\t\t\tpostdata = options.postdata;\n\t\t\t\t\t\t} else if (options.postdata instanceof Object) {\n\t\t\t\t\t\t\t\tlet contentType = options.headers['Content-Type'];\n\t\t\t\t\t\t\t\tif (contentType === undefined) {\n\t\t\t\t\t\t\t\t\t\toptions.headers['Content-Type'] = Http.ContentType.FORM_URLENCODED;\n\t\t\t\t\t\t\t\t\t\tcontentType = options.headers['Content-Type'];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tswitch(contentType){\n\t\t\t\t\t\t\t\t\t\tcase Http.ContentType.FORM_URLENCODED:\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tpostdata = '';\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlet bFirstItem = true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor(const key in options.postdata){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (options.postdata.hasOwnProperty(key)) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (bFirstItem) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbFirstItem = false;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tpostdata += '&';\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst encodedKey = encodeURIComponent(key);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst encodedValue = encodeURIComponent(options.postdata[key]);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tpostdata += `${encodedKey}=${encodedValue}`;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tcase Http.ContentType.JSON:\n\t\t\t\t\t\t\t\t\t\t\t\tif (contentType == null) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\toptions.headers['Content-Type'] = Http.ContentType.JSON;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tpostdata = JSON.stringify(options.postdata);\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tpostdata = options.postdata;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (options.cache === false) {\n\t\t\t\t\t\tconst timestamp = now();\n\t\t\t\t\t\turi = new URI(url);\n\t\t\t\t\t\tif (!uri.query) {\n\t\t\t\t\t\t\t\turi.query = `ts=${timestamp}`;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\turi.query = `${uri.query}&ts=${timestamp}`;\n\t\t\t\t\t\t}\n\t\t\t\t\t\turl = uri.toString();\n\t\t\t\t}\n\t\t\t\tif (options.query) {\n\t\t\t\t\t\turi = new URI(url);\n\t\t\t\t\t\tquery = extend(uri.getQuery(), options.query);\n\t\t\t\t\t\turi.setQuery(query);\n\t\t\t\t\t\turl = uri.toString();\n\t\t\t\t}\n\t\t\t\tconst xhr = new XMLHttpRequest();\n\t\t\t\txhr.open(method, url, options.async);\n\t\t\t\txhr.withCredentials = options.withCredentials !== undefined ? options.withCredentials : false;\n\t\t\t\txhr.responseType = options.responseType || this._guessResponseType(url);\n\t\t\t\tfor(const header in options.headers){\n\t\t\t\t\t\tif (options.headers.hasOwnProperty(header)) {\n\t\t\t\t\t\t\t\txhr.setRequestHeader(header, options.headers[header]);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\txhr.onreadystatechange = ()=>{\n\t\t\t\t\t\tthis._onReadyStateChange(method, url, options, xhr);\n\t\t\t\t};\n\t\t\t\txhr.onerror = ()=>{\n\t\t\t\t\t\tthis._onError(method, url, options, xhr);\n\t\t\t\t\t\terrored = true;\n\t\t\t\t};\n\t\t\t\ttry {\n\t\t\t\t\t\txhr.send(postdata);\n\t\t\t\t} catch (e) {\n\t\t\t\t\t\tif (!errored) {\n\t\t\t\t\t\t\t\toptions.error(xhr.status, xhr, e);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn xhr;\n\t\t}\n\t\t_guessResponseType(url) {\n\t\t\t\tconst uri = new URI(url);\n\t\t\t\tconst ext = path.getExtension(uri.path).toLowerCase();\n\t\t\t\tif (Http.binaryExtensions.indexOf(ext) >= 0) {\n\t\t\t\t\t\treturn Http.ResponseType.ARRAY_BUFFER;\n\t\t\t\t} else if (ext === '.json') {\n\t\t\t\t\t\treturn Http.ResponseType.JSON;\n\t\t\t\t} else if (ext === '.xml') {\n\t\t\t\t\t\treturn Http.ResponseType.DOCUMENT;\n\t\t\t\t}\n\t\t\t\treturn Http.ResponseType.TEXT;\n\t\t}\n\t\t_isBinaryContentType(contentType) {\n\t\t\t\tconst binTypes = [\n\t\t\t\t\t\tHttp.ContentType.BASIS,\n\t\t\t\t\t\tHttp.ContentType.BIN,\n\t\t\t\t\t\tHttp.ContentType.DDS,\n\t\t\t\t\t\tHttp.ContentType.GLB,\n\t\t\t\t\t\tHttp.ContentType.MP3,\n\t\t\t\t\t\tHttp.ContentType.MP4,\n\t\t\t\t\t\tHttp.ContentType.OGG,\n\t\t\t\t\t\tHttp.ContentType.OPUS,\n\t\t\t\t\t\tHttp.ContentType.WAV\n\t\t\t\t];\n\t\t\t\tif (binTypes.indexOf(contentType) >= 0) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t}\n\t\t_isBinaryResponseType(responseType) {\n\t\t\t\treturn responseType === Http.ResponseType.ARRAY_BUFFER || responseType === Http.ResponseType.BLOB || responseType === Http.ResponseType.JSON;\n\t\t}\n\t\t_onReadyStateChange(method, url, options, xhr) {\n\t\t\t\tif (xhr.readyState === 4) {\n\t\t\t\t\t\tswitch(xhr.status){\n\t\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tif (xhr.responseURL && xhr.responseURL.startsWith('file:///')) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis._onSuccess(method, url, options, xhr);\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis._onError(method, url, options, xhr);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcase 200:\n\t\t\t\t\t\t\t\tcase 201:\n\t\t\t\t\t\t\t\tcase 206:\n\t\t\t\t\t\t\t\tcase 304:\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tthis._onSuccess(method, url, options, xhr);\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tthis._onError(method, url, options, xhr);\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_onSuccess(method, url, options, xhr) {\n\t\t\t\tlet response;\n\t\t\t\tlet contentType;\n\t\t\t\tconst header = xhr.getResponseHeader('Content-Type');\n\t\t\t\tif (header) {\n\t\t\t\t\t\tconst parts = header.split(';');\n\t\t\t\t\t\tcontentType = parts[0].trim();\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\t\tif (this._isBinaryContentType(contentType) || this._isBinaryResponseType(xhr.responseType)) {\n\t\t\t\t\t\t\t\tresponse = xhr.response;\n\t\t\t\t\t\t} else if (contentType === Http.ContentType.JSON || url.split('?')[0].endsWith('.json')) {\n\t\t\t\t\t\t\t\tresponse = JSON.parse(xhr.responseText);\n\t\t\t\t\t\t} else if (xhr.responseType === Http.ResponseType.DOCUMENT || contentType === Http.ContentType.XML) {\n\t\t\t\t\t\t\t\tresponse = xhr.responseXML;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tresponse = xhr.responseText;\n\t\t\t\t\t\t}\n\t\t\t\t\t\toptions.callback(null, response);\n\t\t\t\t} catch (err) {\n\t\t\t\t\t\toptions.callback(err);\n\t\t\t\t}\n\t\t}\n\t\t_onError(method, url, options, xhr) {\n\t\t\t\tif (options.retrying) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (options.retry && options.retries < options.maxRetries) {\n\t\t\t\t\t\toptions.retries++;\n\t\t\t\t\t\toptions.retrying = true;\n\t\t\t\t\t\tconst retryDelay = math.clamp(Math.pow(2, options.retries) * Http.retryDelay, 0, options.maxRetryDelay || 5000);\n\t\t\t\t\t\tconsole.log(`${method}: ${url} - Error ${xhr.status}. Retrying in ${retryDelay} ms`);\n\t\t\t\t\t\tsetTimeout(()=>{\n\t\t\t\t\t\t\t\toptions.retrying = false;\n\t\t\t\t\t\t\t\tthis.request(method, url, options, options.callback);\n\t\t\t\t\t\t}, retryDelay);\n\t\t\t\t} else {\n\t\t\t\t\t\toptions.callback(xhr.status === 0 ? 'Network error' : xhr.status, null);\n\t\t\t\t}\n\t\t}\n}\nconst http = new Http();\n\nconst DISTANCE_LINEAR = 'linear';\nconst DISTANCE_INVERSE = 'inverse';\nconst DISTANCE_EXPONENTIAL = 'exponential';\n\nclass Listener {\n\t\tconstructor(manager){\n\t\t\t\tthis.position = new Vec3();\n\t\t\t\tthis.orientation = new Mat4();\n\t\t\t\tthis._manager = manager;\n\t\t}\n\t\tgetPosition() {\n\t\t\t\treturn this.position;\n\t\t}\n\t\tsetPosition(position) {\n\t\t\t\tthis.position.copy(position);\n\t\t\t\tconst listener = this.listener;\n\t\t\t\tif (listener) {\n\t\t\t\t\t\tif ('positionX' in listener) {\n\t\t\t\t\t\t\t\tlistener.positionX.value = position.x;\n\t\t\t\t\t\t\t\tlistener.positionY.value = position.y;\n\t\t\t\t\t\t\t\tlistener.positionZ.value = position.z;\n\t\t\t\t\t\t} else if (listener.setPosition) {\n\t\t\t\t\t\t\t\tlistener.setPosition(position.x, position.y, position.z);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tsetOrientation(orientation) {\n\t\t\t\tthis.orientation.copy(orientation);\n\t\t\t\tconst listener = this.listener;\n\t\t\t\tif (listener) {\n\t\t\t\t\t\tconst m = orientation.data;\n\t\t\t\t\t\tif ('forwardX' in listener) {\n\t\t\t\t\t\t\t\tlistener.forwardX.value = -m[8];\n\t\t\t\t\t\t\t\tlistener.forwardY.value = -m[9];\n\t\t\t\t\t\t\t\tlistener.forwardZ.value = -m[10];\n\t\t\t\t\t\t\t\tlistener.upX.value = m[4];\n\t\t\t\t\t\t\t\tlistener.upY.value = m[5];\n\t\t\t\t\t\t\t\tlistener.upZ.value = m[6];\n\t\t\t\t\t\t} else if (listener.setOrientation) {\n\t\t\t\t\t\t\t\tlistener.setOrientation(-m[8], -m[9], -m[10], m[4], m[5], m[6]);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tgetOrientation() {\n\t\t\t\treturn this.orientation;\n\t\t}\n\t\tget listener() {\n\t\t\t\tconst context = this._manager.context;\n\t\t\t\treturn context ? context.listener : null;\n\t\t}\n}\n\nconst CONTEXT_STATE_RUNNING = 'running';\nconst USER_INPUT_EVENTS = [\n\t\t'click',\n\t\t'touchstart',\n\t\t'mousedown'\n];\nclass SoundManager extends EventHandler {\n\t\tconstructor(){\n\t\t\t\tsuper();\n\t\t\t\tthis._context = null;\n\t\t\t\tthis.AudioContext = typeof AudioContext !== 'undefined' && AudioContext || typeof webkitAudioContext !== 'undefined' && webkitAudioContext;\n\t\t\t\tif (!this.AudioContext) ;\n\t\t\t\tthis._unlockHandlerFunc = this._unlockHandler.bind(this);\n\t\t\t\tthis._userSuspended = false;\n\t\t\t\tthis.listener = new Listener(this);\n\t\t\t\tthis._volume = 1;\n\t\t}\n\t\tset volume(volume) {\n\t\t\t\tvolume = math.clamp(volume, 0, 1);\n\t\t\t\tthis._volume = volume;\n\t\t\t\tthis.fire('volumechange', volume);\n\t\t}\n\t\tget volume() {\n\t\t\t\treturn this._volume;\n\t\t}\n\t\tget suspended() {\n\t\t\t\treturn this._userSuspended;\n\t\t}\n\t\tget context() {\n\t\t\t\tif (!this._context && this.AudioContext) {\n\t\t\t\t\t\tthis._context = new this.AudioContext();\n\t\t\t\t\t\tif (this._context.state !== CONTEXT_STATE_RUNNING) {\n\t\t\t\t\t\t\t\tthis._registerUnlockListeners();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this._context;\n\t\t}\n\t\tsuspend() {\n\t\t\t\tif (!this._userSuspended) {\n\t\t\t\t\t\tthis._userSuspended = true;\n\t\t\t\t\t\tif (this._context && this._context.state === CONTEXT_STATE_RUNNING) {\n\t\t\t\t\t\t\t\tthis._suspend();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tresume() {\n\t\t\t\tif (this._userSuspended) {\n\t\t\t\t\t\tthis._userSuspended = false;\n\t\t\t\t\t\tif (this._context && this._context.state !== CONTEXT_STATE_RUNNING) {\n\t\t\t\t\t\t\t\tthis._resume();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.fire('destroy');\n\t\t\t\tif (this._context) {\n\t\t\t\t\t\tthis._removeUnlockListeners();\n\t\t\t\t\t\tthis._context?.close();\n\t\t\t\t\t\tthis._context = null;\n\t\t\t\t}\n\t\t}\n\t\t_resume() {\n\t\t\t\tthis._context.resume().then(()=>{\n\t\t\t\t\t\tconst source = this._context.createBufferSource();\n\t\t\t\t\t\tsource.buffer = this._context.createBuffer(1, 1, this._context.sampleRate);\n\t\t\t\t\t\tsource.connect(this._context.destination);\n\t\t\t\t\t\tsource.start(0);\n\t\t\t\t\t\tsource.onended = (event)=>{\n\t\t\t\t\t\t\t\tsource.disconnect(0);\n\t\t\t\t\t\t\t\tthis.fire('resume');\n\t\t\t\t\t\t};\n\t\t\t\t}, (e)=>{}).catch((e)=>{});\n\t\t}\n\t\t_suspend() {\n\t\t\t\tthis._context.suspend().then(()=>{\n\t\t\t\t\t\tthis.fire('suspend');\n\t\t\t\t}, (e)=>{}).catch((e)=>{});\n\t\t}\n\t\t_unlockHandler() {\n\t\t\t\tthis._removeUnlockListeners();\n\t\t\t\tif (!this._userSuspended && this._context.state !== CONTEXT_STATE_RUNNING) {\n\t\t\t\t\t\tthis._resume();\n\t\t\t\t}\n\t\t}\n\t\t_registerUnlockListeners() {\n\t\t\t\tUSER_INPUT_EVENTS.forEach((eventName)=>{\n\t\t\t\t\t\twindow.addEventListener(eventName, this._unlockHandlerFunc, false);\n\t\t\t\t});\n\t\t}\n\t\t_removeUnlockListeners() {\n\t\t\t\tUSER_INPUT_EVENTS.forEach((eventName)=>{\n\t\t\t\t\t\twindow.removeEventListener(eventName, this._unlockHandlerFunc, false);\n\t\t\t\t});\n\t\t}\n}\n\nclass Sound {\n\t\tconstructor(resource){\n\t\t\t\tif (resource instanceof Audio) {\n\t\t\t\t\t\tthis.audio = resource;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.buffer = resource;\n\t\t\t\t}\n\t\t}\n\t\tget duration() {\n\t\t\t\tlet duration = 0;\n\t\t\t\tif (this.buffer) {\n\t\t\t\t\t\tduration = this.buffer.duration;\n\t\t\t\t} else if (this.audio) {\n\t\t\t\t\t\tduration = this.audio.duration;\n\t\t\t\t}\n\t\t\t\treturn duration || 0;\n\t\t}\n}\n\nfunction hasAudioContext() {\n\t\treturn !!(typeof AudioContext !== 'undefined' || typeof webkitAudioContext !== 'undefined');\n}\n\nconst STATE_PLAYING = 0;\nconst STATE_PAUSED = 1;\nconst STATE_STOPPED = 2;\nfunction capTime(time, duration) {\n\t\treturn time % duration || 0;\n}\nclass SoundInstance extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_PLAY = 'play';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_PAUSE = 'pause';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_RESUME = 'resume';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_STOP = 'stop';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_END = 'end';\n\t\t}\n\t\tconstructor(manager, sound, options){\n\t\t\t\tsuper(), this.source = null;\n\t\t\t\tthis._manager = manager;\n\t\t\t\tthis._volume = options.volume !== undefined ? math.clamp(Number(options.volume) || 0, 0, 1) : 1;\n\t\t\t\tthis._pitch = options.pitch !== undefined ? Math.max(0.01, Number(options.pitch) || 0) : 1;\n\t\t\t\tthis._loop = !!(options.loop !== undefined ? options.loop : false);\n\t\t\t\tthis._sound = sound;\n\t\t\t\tthis._state = STATE_STOPPED;\n\t\t\t\tthis._suspended = false;\n\t\t\t\tthis._suspendEndEvent = 0;\n\t\t\t\tthis._suspendInstanceEvents = false;\n\t\t\t\tthis._playWhenLoaded = true;\n\t\t\t\tthis._startTime = Math.max(0, Number(options.startTime) || 0);\n\t\t\t\tthis._duration = Math.max(0, Number(options.duration) || 0);\n\t\t\t\tthis._startOffset = null;\n\t\t\t\tthis._onPlayCallback = options.onPlay;\n\t\t\t\tthis._onPauseCallback = options.onPause;\n\t\t\t\tthis._onResumeCallback = options.onResume;\n\t\t\t\tthis._onStopCallback = options.onStop;\n\t\t\t\tthis._onEndCallback = options.onEnd;\n\t\t\t\tif (hasAudioContext()) {\n\t\t\t\t\t\tthis._startedAt = 0;\n\t\t\t\t\t\tthis._currentTime = 0;\n\t\t\t\t\t\tthis._currentOffset = 0;\n\t\t\t\t\t\tthis._inputNode = null;\n\t\t\t\t\t\tthis._connectorNode = null;\n\t\t\t\t\t\tthis._firstNode = null;\n\t\t\t\t\t\tthis._lastNode = null;\n\t\t\t\t\t\tthis._waitingContextSuspension = false;\n\t\t\t\t\t\tthis._initializeNodes();\n\t\t\t\t\t\tthis._endedHandler = this._onEnded.bind(this);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._isReady = false;\n\t\t\t\t\t\tthis._loadedMetadataHandler = this._onLoadedMetadata.bind(this);\n\t\t\t\t\t\tthis._timeUpdateHandler = this._onTimeUpdate.bind(this);\n\t\t\t\t\t\tthis._endedHandler = this._onEnded.bind(this);\n\t\t\t\t\t\tthis._createSource();\n\t\t\t\t}\n\t\t}\n\t\tset currentTime(value) {\n\t\t\t\tif (value < 0) return;\n\t\t\t\tif (this._state === STATE_PLAYING) {\n\t\t\t\t\t\tconst suspend = this._suspendInstanceEvents;\n\t\t\t\t\t\tthis._suspendInstanceEvents = true;\n\t\t\t\t\t\tthis.stop();\n\t\t\t\t\t\tthis._startOffset = value;\n\t\t\t\t\t\tthis.play();\n\t\t\t\t\t\tthis._suspendInstanceEvents = suspend;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._startOffset = value;\n\t\t\t\t\t\tthis._currentTime = value;\n\t\t\t\t}\n\t\t}\n\t\tget currentTime() {\n\t\t\t\tif (this._startOffset !== null) {\n\t\t\t\t\t\treturn this._startOffset;\n\t\t\t\t}\n\t\t\t\tif (this._state === STATE_PAUSED) {\n\t\t\t\t\t\treturn this._currentTime;\n\t\t\t\t}\n\t\t\t\tif (this._state === STATE_STOPPED || !this.source) {\n\t\t\t\t\t\treturn 0;\n\t\t\t\t}\n\t\t\t\tthis._updateCurrentTime();\n\t\t\t\treturn this._currentTime;\n\t\t}\n\t\tset duration(value) {\n\t\t\t\tthis._duration = Math.max(0, Number(value) || 0);\n\t\t\t\tconst isPlaying = this._state === STATE_PLAYING;\n\t\t\t\tthis.stop();\n\t\t\t\tif (isPlaying) {\n\t\t\t\t\t\tthis.play();\n\t\t\t\t}\n\t\t}\n\t\tget duration() {\n\t\t\t\tif (!this._sound) {\n\t\t\t\t\t\treturn 0;\n\t\t\t\t}\n\t\t\t\tif (this._duration) {\n\t\t\t\t\t\treturn capTime(this._duration, this._sound.duration);\n\t\t\t\t}\n\t\t\t\treturn this._sound.duration;\n\t\t}\n\t\tget isPaused() {\n\t\t\t\treturn this._state === STATE_PAUSED;\n\t\t}\n\t\tget isPlaying() {\n\t\t\t\treturn this._state === STATE_PLAYING;\n\t\t}\n\t\tget isStopped() {\n\t\t\t\treturn this._state === STATE_STOPPED;\n\t\t}\n\t\tget isSuspended() {\n\t\t\t\treturn this._suspended;\n\t\t}\n\t\tset loop(value) {\n\t\t\t\tthis._loop = !!value;\n\t\t\t\tif (this.source) {\n\t\t\t\t\t\tthis.source.loop = this._loop;\n\t\t\t\t}\n\t\t}\n\t\tget loop() {\n\t\t\t\treturn this._loop;\n\t\t}\n\t\tset pitch(pitch) {\n\t\t\t\tthis._currentOffset = this.currentTime;\n\t\t\t\tthis._startedAt = this._manager.context.currentTime;\n\t\t\t\tthis._pitch = Math.max(Number(pitch) || 0, 0.01);\n\t\t\t\tif (this.source) {\n\t\t\t\t\t\tthis.source.playbackRate.value = this._pitch;\n\t\t\t\t}\n\t\t}\n\t\tget pitch() {\n\t\t\t\treturn this._pitch;\n\t\t}\n\t\tset sound(value) {\n\t\t\t\tthis._sound = value;\n\t\t\t\tif (this._state !== STATE_STOPPED) {\n\t\t\t\t\t\tthis.stop();\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._createSource();\n\t\t\t\t}\n\t\t}\n\t\tget sound() {\n\t\t\t\treturn this._sound;\n\t\t}\n\t\tset startTime(value) {\n\t\t\t\tthis._startTime = Math.max(0, Number(value) || 0);\n\t\t\t\tconst isPlaying = this._state === STATE_PLAYING;\n\t\t\t\tthis.stop();\n\t\t\t\tif (isPlaying) {\n\t\t\t\t\t\tthis.play();\n\t\t\t\t}\n\t\t}\n\t\tget startTime() {\n\t\t\t\treturn this._startTime;\n\t\t}\n\t\tset volume(volume) {\n\t\t\t\tvolume = math.clamp(volume, 0, 1);\n\t\t\t\tthis._volume = volume;\n\t\t\t\tif (this.gain) {\n\t\t\t\t\t\tthis.gain.gain.value = volume * this._manager.volume;\n\t\t\t\t}\n\t\t}\n\t\tget volume() {\n\t\t\t\treturn this._volume;\n\t\t}\n\t\t_onPlay() {\n\t\t\t\tthis.fire('play');\n\t\t\t\tif (this._onPlayCallback) {\n\t\t\t\t\t\tthis._onPlayCallback(this);\n\t\t\t\t}\n\t\t}\n\t\t_onPause() {\n\t\t\t\tthis.fire('pause');\n\t\t\t\tif (this._onPauseCallback) {\n\t\t\t\t\t\tthis._onPauseCallback(this);\n\t\t\t\t}\n\t\t}\n\t\t_onResume() {\n\t\t\t\tthis.fire('resume');\n\t\t\t\tif (this._onResumeCallback) {\n\t\t\t\t\t\tthis._onResumeCallback(this);\n\t\t\t\t}\n\t\t}\n\t\t_onStop() {\n\t\t\t\tthis.fire('stop');\n\t\t\t\tif (this._onStopCallback) {\n\t\t\t\t\t\tthis._onStopCallback(this);\n\t\t\t\t}\n\t\t}\n\t\t_onEnded() {\n\t\t\t\tif (this._suspendEndEvent > 0) {\n\t\t\t\t\t\tthis._suspendEndEvent--;\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.fire('end');\n\t\t\t\tif (this._onEndCallback) {\n\t\t\t\t\t\tthis._onEndCallback(this);\n\t\t\t\t}\n\t\t\t\tthis.stop();\n\t\t}\n\t\t_onManagerVolumeChange() {\n\t\t\t\tthis.volume = this._volume;\n\t\t}\n\t\t_onManagerSuspend() {\n\t\t\t\tif (this._state === STATE_PLAYING && !this._suspended) {\n\t\t\t\t\t\tthis._suspended = true;\n\t\t\t\t\t\tthis.pause();\n\t\t\t\t}\n\t\t}\n\t\t_onManagerResume() {\n\t\t\t\tif (this._suspended) {\n\t\t\t\t\t\tthis._suspended = false;\n\t\t\t\t\t\tthis.resume();\n\t\t\t\t}\n\t\t}\n\t\t_initializeNodes() {\n\t\t\t\tthis.gain = this._manager.context.createGain();\n\t\t\t\tthis._inputNode = this.gain;\n\t\t\t\tthis._connectorNode = this.gain;\n\t\t\t\tthis._connectorNode.connect(this._manager.context.destination);\n\t\t}\n\t\tplay() {\n\t\t\t\tif (this._state !== STATE_STOPPED) {\n\t\t\t\t\t\tthis.stop();\n\t\t\t\t}\n\t\t\t\tthis._state = STATE_PLAYING;\n\t\t\t\tthis._playWhenLoaded = false;\n\t\t\t\tif (this._waitingContextSuspension) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif (this._manager.suspended) {\n\t\t\t\t\t\tthis._manager.once('resume', this._playAudioImmediate, this);\n\t\t\t\t\t\tthis._waitingContextSuspension = true;\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tthis._playAudioImmediate();\n\t\t\t\treturn true;\n\t\t}\n\t\t_playAudioImmediate() {\n\t\t\t\tthis._waitingContextSuspension = false;\n\t\t\t\tif (this._state !== STATE_PLAYING) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (!this.source) {\n\t\t\t\t\t\tthis._createSource();\n\t\t\t\t}\n\t\t\t\tlet offset = capTime(this._startOffset, this.duration);\n\t\t\t\toffset = capTime(this._startTime + offset, this._sound.duration);\n\t\t\t\tthis._startOffset = null;\n\t\t\t\tif (this._duration) {\n\t\t\t\t\t\tthis.source.start(0, offset, this._duration);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.source.start(0, offset);\n\t\t\t\t}\n\t\t\t\tthis._startedAt = this._manager.context.currentTime;\n\t\t\t\tthis._currentTime = 0;\n\t\t\t\tthis._currentOffset = offset;\n\t\t\t\tthis.volume = this._volume;\n\t\t\t\tthis.loop = this._loop;\n\t\t\t\tthis.pitch = this._pitch;\n\t\t\t\tthis._manager.on('volumechange', this._onManagerVolumeChange, this);\n\t\t\t\tthis._manager.on('suspend', this._onManagerSuspend, this);\n\t\t\t\tthis._manager.on('resume', this._onManagerResume, this);\n\t\t\t\tthis._manager.on('destroy', this._onManagerDestroy, this);\n\t\t\t\tif (!this._suspendInstanceEvents) {\n\t\t\t\t\t\tthis._onPlay();\n\t\t\t\t}\n\t\t}\n\t\tpause() {\n\t\t\t\tthis._playWhenLoaded = false;\n\t\t\t\tif (this._state !== STATE_PLAYING) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tthis._state = STATE_PAUSED;\n\t\t\t\tif (this._waitingContextSuspension) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tthis._updateCurrentTime();\n\t\t\t\tthis._suspendEndEvent++;\n\t\t\t\tthis.source.stop(0);\n\t\t\t\tthis.source = null;\n\t\t\t\tthis._startOffset = null;\n\t\t\t\tif (!this._suspendInstanceEvents) {\n\t\t\t\t\t\tthis._onPause();\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t}\n\t\tresume() {\n\t\t\t\tif (this._state !== STATE_PAUSED) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tlet offset = this.currentTime;\n\t\t\t\tthis._state = STATE_PLAYING;\n\t\t\t\tif (this._waitingContextSuspension) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tif (!this.source) {\n\t\t\t\t\t\tthis._createSource();\n\t\t\t\t}\n\t\t\t\tif (this._startOffset !== null) {\n\t\t\t\t\t\toffset = capTime(this._startOffset, this.duration);\n\t\t\t\t\t\toffset = capTime(this._startTime + offset, this._sound.duration);\n\t\t\t\t\t\tthis._startOffset = null;\n\t\t\t\t}\n\t\t\t\tif (this._duration) {\n\t\t\t\t\t\tthis.source.start(0, offset, this._duration);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.source.start(0, offset);\n\t\t\t\t}\n\t\t\t\tthis._startedAt = this._manager.context.currentTime;\n\t\t\t\tthis._currentOffset = offset;\n\t\t\t\tthis.volume = this._volume;\n\t\t\t\tthis.loop = this._loop;\n\t\t\t\tthis.pitch = this._pitch;\n\t\t\t\tthis._playWhenLoaded = false;\n\t\t\t\tif (!this._suspendInstanceEvents) {\n\t\t\t\t\t\tthis._onResume();\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t}\n\t\tstop() {\n\t\t\t\tthis._playWhenLoaded = false;\n\t\t\t\tif (this._state === STATE_STOPPED) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tconst wasPlaying = this._state === STATE_PLAYING;\n\t\t\t\tthis._state = STATE_STOPPED;\n\t\t\t\tif (this._waitingContextSuspension) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tthis._manager.off('volumechange', this._onManagerVolumeChange, this);\n\t\t\t\tthis._manager.off('suspend', this._onManagerSuspend, this);\n\t\t\t\tthis._manager.off('resume', this._onManagerResume, this);\n\t\t\t\tthis._manager.off('destroy', this._onManagerDestroy, this);\n\t\t\t\tthis._startedAt = 0;\n\t\t\t\tthis._currentTime = 0;\n\t\t\t\tthis._currentOffset = 0;\n\t\t\t\tthis._startOffset = null;\n\t\t\t\tthis._suspendEndEvent++;\n\t\t\t\tif (wasPlaying && this.source) {\n\t\t\t\t\t\tthis.source.stop(0);\n\t\t\t\t}\n\t\t\t\tthis.source = null;\n\t\t\t\tif (!this._suspendInstanceEvents) {\n\t\t\t\t\t\tthis._onStop();\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t}\n\t\tsetExternalNodes(firstNode, lastNode) {\n\t\t\t\tif (!firstNode) {\n\t\t\t\t\t\tconsole.error('The firstNode must be a valid Audio Node');\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (!lastNode) {\n\t\t\t\t\t\tlastNode = firstNode;\n\t\t\t\t}\n\t\t\t\tconst speakers = this._manager.context.destination;\n\t\t\t\tif (this._firstNode !== firstNode) {\n\t\t\t\t\t\tif (this._firstNode) {\n\t\t\t\t\t\t\t\tthis._connectorNode.disconnect(this._firstNode);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._connectorNode.disconnect(speakers);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._firstNode = firstNode;\n\t\t\t\t\t\tthis._connectorNode.connect(firstNode);\n\t\t\t\t}\n\t\t\t\tif (this._lastNode !== lastNode) {\n\t\t\t\t\t\tif (this._lastNode) {\n\t\t\t\t\t\t\t\tthis._lastNode.disconnect(speakers);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._lastNode = lastNode;\n\t\t\t\t\t\tthis._lastNode.connect(speakers);\n\t\t\t\t}\n\t\t}\n\t\tclearExternalNodes() {\n\t\t\t\tconst speakers = this._manager.context.destination;\n\t\t\t\tif (this._firstNode) {\n\t\t\t\t\t\tthis._connectorNode.disconnect(this._firstNode);\n\t\t\t\t\t\tthis._firstNode = null;\n\t\t\t\t}\n\t\t\t\tif (this._lastNode) {\n\t\t\t\t\t\tthis._lastNode.disconnect(speakers);\n\t\t\t\t\t\tthis._lastNode = null;\n\t\t\t\t}\n\t\t\t\tthis._connectorNode.connect(speakers);\n\t\t}\n\t\tgetExternalNodes() {\n\t\t\t\treturn [\n\t\t\t\t\t\tthis._firstNode,\n\t\t\t\t\t\tthis._lastNode\n\t\t\t\t];\n\t\t}\n\t\t_createSource() {\n\t\t\t\tif (!this._sound) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tconst context = this._manager.context;\n\t\t\t\tif (this._sound.buffer) {\n\t\t\t\t\t\tthis.source = context.createBufferSource();\n\t\t\t\t\t\tthis.source.buffer = this._sound.buffer;\n\t\t\t\t\t\tthis.source.connect(this._inputNode);\n\t\t\t\t\t\tthis.source.onended = this._endedHandler;\n\t\t\t\t\t\tthis.source.loopStart = capTime(this._startTime, this.source.buffer.duration);\n\t\t\t\t\t\tif (this._duration) {\n\t\t\t\t\t\t\t\tthis.source.loopEnd = Math.max(this.source.loopStart, capTime(this._startTime + this._duration, this.source.buffer.duration));\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this.source;\n\t\t}\n\t\t_updateCurrentTime() {\n\t\t\t\tthis._currentTime = capTime((this._manager.context.currentTime - this._startedAt) * this._pitch + this._currentOffset, this.duration);\n\t\t}\n\t\t_onManagerDestroy() {\n\t\t\t\tif (this.source && this._state === STATE_PLAYING) {\n\t\t\t\t\t\tthis.source.stop(0);\n\t\t\t\t\t\tthis.source = null;\n\t\t\t\t}\n\t\t}\n}\nif (!hasAudioContext()) {\n\t\tObject.assign(SoundInstance.prototype, {\n\t\t\t\tplay: function() {\n\t\t\t\t\t\tif (this._state !== STATE_STOPPED) {\n\t\t\t\t\t\t\t\tthis.stop();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!this.source) {\n\t\t\t\t\t\t\t\tif (!this._createSource()) {\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.volume = this._volume;\n\t\t\t\t\t\tthis.pitch = this._pitch;\n\t\t\t\t\t\tthis.loop = this._loop;\n\t\t\t\t\t\tthis.source.play();\n\t\t\t\t\t\tthis._state = STATE_PLAYING;\n\t\t\t\t\t\tthis._playWhenLoaded = false;\n\t\t\t\t\t\tthis._manager.on('volumechange', this._onManagerVolumeChange, this);\n\t\t\t\t\t\tthis._manager.on('suspend', this._onManagerSuspend, this);\n\t\t\t\t\t\tthis._manager.on('resume', this._onManagerResume, this);\n\t\t\t\t\t\tthis._manager.on('destroy', this._onManagerDestroy, this);\n\t\t\t\t\t\tif (this._manager.suspended) {\n\t\t\t\t\t\t\t\tthis._onManagerSuspend();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!this._suspendInstanceEvents) {\n\t\t\t\t\t\t\t\tthis._onPlay();\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn true;\n\t\t\t\t},\n\t\t\t\tpause: function() {\n\t\t\t\t\t\tif (!this.source || this._state !== STATE_PLAYING) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._suspendEndEvent++;\n\t\t\t\t\t\tthis.source.pause();\n\t\t\t\t\t\tthis._playWhenLoaded = false;\n\t\t\t\t\t\tthis._state = STATE_PAUSED;\n\t\t\t\t\t\tthis._startOffset = null;\n\t\t\t\t\t\tif (!this._suspendInstanceEvents) {\n\t\t\t\t\t\t\t\tthis._onPause();\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn true;\n\t\t\t\t},\n\t\t\t\tresume: function() {\n\t\t\t\t\t\tif (!this.source || this._state !== STATE_PAUSED) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._state = STATE_PLAYING;\n\t\t\t\t\t\tthis._playWhenLoaded = false;\n\t\t\t\t\t\tif (this.source.paused) {\n\t\t\t\t\t\t\t\tthis.source.play();\n\t\t\t\t\t\t\t\tif (!this._suspendInstanceEvents) {\n\t\t\t\t\t\t\t\t\t\tthis._onResume();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn true;\n\t\t\t\t},\n\t\t\t\tstop: function() {\n\t\t\t\t\t\tif (!this.source || this._state === STATE_STOPPED) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._manager.off('volumechange', this._onManagerVolumeChange, this);\n\t\t\t\t\t\tthis._manager.off('suspend', this._onManagerSuspend, this);\n\t\t\t\t\t\tthis._manager.off('resume', this._onManagerResume, this);\n\t\t\t\t\t\tthis._manager.off('destroy', this._onManagerDestroy, this);\n\t\t\t\t\t\tthis._suspendEndEvent++;\n\t\t\t\t\t\tthis.source.pause();\n\t\t\t\t\t\tthis._playWhenLoaded = false;\n\t\t\t\t\t\tthis._state = STATE_STOPPED;\n\t\t\t\t\t\tthis._startOffset = null;\n\t\t\t\t\t\tif (!this._suspendInstanceEvents) {\n\t\t\t\t\t\t\t\tthis._onStop();\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn true;\n\t\t\t\t},\n\t\t\t\tsetExternalNodes: function() {},\n\t\t\t\tclearExternalNodes: function() {},\n\t\t\t\tgetExternalNodes: function() {\n\t\t\t\t\t\treturn [\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t];\n\t\t\t\t},\n\t\t\t\t_onLoadedMetadata: function() {\n\t\t\t\t\t\tthis.source.removeEventListener('loadedmetadata', this._loadedMetadataHandler);\n\t\t\t\t\t\tthis._isReady = true;\n\t\t\t\t\t\tlet offset = capTime(this._startOffset, this.duration);\n\t\t\t\t\t\toffset = capTime(this._startTime + offset, this._sound.duration);\n\t\t\t\t\t\tthis._startOffset = null;\n\t\t\t\t\t\tthis.source.currentTime = offset;\n\t\t\t\t},\n\t\t\t\t_createSource: function() {\n\t\t\t\t\t\tif (this._sound && this._sound.audio) {\n\t\t\t\t\t\t\t\tthis._isReady = false;\n\t\t\t\t\t\t\t\tthis.source = this._sound.audio.cloneNode(true);\n\t\t\t\t\t\t\t\tthis.source.addEventListener('loadedmetadata', this._loadedMetadataHandler);\n\t\t\t\t\t\t\t\tthis.source.addEventListener('timeupdate', this._timeUpdateHandler);\n\t\t\t\t\t\t\t\tthis.source.onended = this._endedHandler;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn this.source;\n\t\t\t\t},\n\t\t\t\t_onTimeUpdate: function() {\n\t\t\t\t\t\tif (!this._duration) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.source.currentTime > capTime(this._startTime + this._duration, this.source.duration)) {\n\t\t\t\t\t\t\t\tif (this.loop) {\n\t\t\t\t\t\t\t\t\t\tthis.source.currentTime = capTime(this._startTime, this.source.duration);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis.source.removeEventListener('timeupdate', this._timeUpdateHandler);\n\t\t\t\t\t\t\t\t\t\tthis.source.pause();\n\t\t\t\t\t\t\t\t\t\tthis._onEnded();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t_onManagerDestroy: function() {\n\t\t\t\t\t\tif (this.source) {\n\t\t\t\t\t\t\t\tthis.source.pause();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t});\n\t\tObject.defineProperty(SoundInstance.prototype, 'volume', {\n\t\t\t\tget: function() {\n\t\t\t\t\t\treturn this._volume;\n\t\t\t\t},\n\t\t\t\tset: function(volume) {\n\t\t\t\t\t\tvolume = math.clamp(volume, 0, 1);\n\t\t\t\t\t\tthis._volume = volume;\n\t\t\t\t\t\tif (this.source) {\n\t\t\t\t\t\t\t\tthis.source.volume = volume * this._manager.volume;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t});\n\t\tObject.defineProperty(SoundInstance.prototype, 'pitch', {\n\t\t\t\tget: function() {\n\t\t\t\t\t\treturn this._pitch;\n\t\t\t\t},\n\t\t\t\tset: function(pitch) {\n\t\t\t\t\t\tthis._pitch = Math.max(Number(pitch) || 0, 0.01);\n\t\t\t\t\t\tif (this.source) {\n\t\t\t\t\t\t\t\tthis.source.playbackRate = this._pitch;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t});\n\t\tObject.defineProperty(SoundInstance.prototype, 'sound', {\n\t\t\t\tget: function() {\n\t\t\t\t\t\treturn this._sound;\n\t\t\t\t},\n\t\t\t\tset: function(value) {\n\t\t\t\t\t\tthis.stop();\n\t\t\t\t\t\tthis._sound = value;\n\t\t\t\t}\n\t\t});\n\t\tObject.defineProperty(SoundInstance.prototype, 'currentTime', {\n\t\t\t\tget: function() {\n\t\t\t\t\t\tif (this._startOffset !== null) {\n\t\t\t\t\t\t\t\treturn this._startOffset;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this._state === STATE_STOPPED || !this.source) {\n\t\t\t\t\t\t\t\treturn 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn this.source.currentTime - this._startTime;\n\t\t\t\t},\n\t\t\t\tset: function(value) {\n\t\t\t\t\t\tif (value < 0) return;\n\t\t\t\t\t\tthis._startOffset = value;\n\t\t\t\t\t\tif (this.source && this._isReady) {\n\t\t\t\t\t\t\t\tthis.source.currentTime = capTime(this._startTime + capTime(value, this.duration), this._sound.duration);\n\t\t\t\t\t\t\t\tthis._startOffset = null;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t});\n}\n\nconst MAX_DISTANCE = 10000;\nclass SoundInstance3d extends SoundInstance {\n\t\tconstructor(manager, sound, options = {}){\n\t\t\t\tsuper(manager, sound, options), this._position = new Vec3(), this._velocity = new Vec3();\n\t\t\t\tif (options.position) {\n\t\t\t\t\t\tthis.position = options.position;\n\t\t\t\t}\n\t\t\t\tthis.maxDistance = options.maxDistance !== undefined ? Number(options.maxDistance) : MAX_DISTANCE;\n\t\t\t\tthis.refDistance = options.refDistance !== undefined ? Number(options.refDistance) : 1;\n\t\t\t\tthis.rollOffFactor = options.rollOffFactor !== undefined ? Number(options.rollOffFactor) : 1;\n\t\t\t\tthis.distanceModel = options.distanceModel !== undefined ? options.distanceModel : DISTANCE_LINEAR;\n\t\t}\n\t\t_initializeNodes() {\n\t\t\t\tthis.gain = this._manager.context.createGain();\n\t\t\t\tthis.panner = this._manager.context.createPanner();\n\t\t\t\tthis.panner.connect(this.gain);\n\t\t\t\tthis._inputNode = this.panner;\n\t\t\t\tthis._connectorNode = this.gain;\n\t\t\t\tthis._connectorNode.connect(this._manager.context.destination);\n\t\t}\n\t\tset position(value) {\n\t\t\t\tthis._position.copy(value);\n\t\t\t\tconst panner = this.panner;\n\t\t\t\tif ('positionX' in panner) {\n\t\t\t\t\t\tpanner.positionX.value = value.x;\n\t\t\t\t\t\tpanner.positionY.value = value.y;\n\t\t\t\t\t\tpanner.positionZ.value = value.z;\n\t\t\t\t} else if (panner.setPosition) {\n\t\t\t\t\t\tpanner.setPosition(value.x, value.y, value.z);\n\t\t\t\t}\n\t\t}\n\t\tget position() {\n\t\t\t\treturn this._position;\n\t\t}\n\t\tset velocity(velocity) {\n\t\t\t\tthis._velocity.copy(velocity);\n\t\t}\n\t\tget velocity() {\n\t\t\t\treturn this._velocity;\n\t\t}\n\t\tset maxDistance(value) {\n\t\t\t\tthis.panner.maxDistance = value;\n\t\t}\n\t\tget maxDistance() {\n\t\t\t\treturn this.panner.maxDistance;\n\t\t}\n\t\tset refDistance(value) {\n\t\t\t\tthis.panner.refDistance = value;\n\t\t}\n\t\tget refDistance() {\n\t\t\t\treturn this.panner.refDistance;\n\t\t}\n\t\tset rollOffFactor(value) {\n\t\t\t\tthis.panner.rolloffFactor = value;\n\t\t}\n\t\tget rollOffFactor() {\n\t\t\t\treturn this.panner.rolloffFactor;\n\t\t}\n\t\tset distanceModel(value) {\n\t\t\t\tthis.panner.distanceModel = value;\n\t\t}\n\t\tget distanceModel() {\n\t\t\t\treturn this.panner.distanceModel;\n\t\t}\n}\nif (!hasAudioContext()) {\n\t\tlet offset = new Vec3();\n\t\tconst fallOff = function(posOne, posTwo, refDistance, maxDistance, rollOffFactor, distanceModel) {\n\t\t\t\toffset = offset.sub2(posOne, posTwo);\n\t\t\t\tconst distance = offset.length();\n\t\t\t\tif (distance < refDistance) {\n\t\t\t\t\t\treturn 1;\n\t\t\t\t} else if (distance > maxDistance) {\n\t\t\t\t\t\treturn 0;\n\t\t\t\t}\n\t\t\t\tlet result = 0;\n\t\t\t\tif (distanceModel === DISTANCE_LINEAR) {\n\t\t\t\t\t\tresult = 1 - rollOffFactor * (distance - refDistance) / (maxDistance - refDistance);\n\t\t\t\t} else if (distanceModel === DISTANCE_INVERSE) {\n\t\t\t\t\t\tresult = refDistance / (refDistance + rollOffFactor * (distance - refDistance));\n\t\t\t\t} else if (distanceModel === DISTANCE_EXPONENTIAL) {\n\t\t\t\t\t\tresult = Math.pow(distance / refDistance, -rollOffFactor);\n\t\t\t\t}\n\t\t\t\treturn math.clamp(result, 0, 1);\n\t\t};\n\t\tObject.defineProperty(SoundInstance3d.prototype, 'position', {\n\t\t\t\tget: function() {\n\t\t\t\t\t\treturn this._position;\n\t\t\t\t},\n\t\t\t\tset: function(position) {\n\t\t\t\t\t\tthis._position.copy(position);\n\t\t\t\t\t\tif (this.source) {\n\t\t\t\t\t\t\t\tconst listener = this._manager.listener;\n\t\t\t\t\t\t\t\tconst lpos = listener.getPosition();\n\t\t\t\t\t\t\t\tconst factor = fallOff(lpos, this._position, this.refDistance, this.maxDistance, this.rollOffFactor, this.distanceModel);\n\t\t\t\t\t\t\t\tconst v = this.volume;\n\t\t\t\t\t\t\t\tthis.source.volume = v * factor * this._manager.volume;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t});\n\t\tObject.defineProperty(SoundInstance3d.prototype, 'maxDistance', {\n\t\t\t\tget: function() {\n\t\t\t\t\t\treturn this._maxDistance;\n\t\t\t\t},\n\t\t\t\tset: function(value) {\n\t\t\t\t\t\tthis._maxDistance = value;\n\t\t\t\t}\n\t\t});\n\t\tObject.defineProperty(SoundInstance3d.prototype, 'refDistance', {\n\t\t\t\tget: function() {\n\t\t\t\t\t\treturn this._refDistance;\n\t\t\t\t},\n\t\t\t\tset: function(value) {\n\t\t\t\t\t\tthis._refDistance = value;\n\t\t\t\t}\n\t\t});\n\t\tObject.defineProperty(SoundInstance3d.prototype, 'rollOffFactor', {\n\t\t\t\tget: function() {\n\t\t\t\t\t\treturn this._rollOffFactor;\n\t\t\t\t},\n\t\t\t\tset: function(value) {\n\t\t\t\t\t\tthis._rollOffFactor = value;\n\t\t\t\t}\n\t\t});\n\t\tObject.defineProperty(SoundInstance3d.prototype, 'distanceModel', {\n\t\t\t\tget: function() {\n\t\t\t\t\t\treturn this._distanceModel;\n\t\t\t\t},\n\t\t\t\tset: function(value) {\n\t\t\t\t\t\tthis._distanceModel = value;\n\t\t\t\t}\n\t\t});\n}\n\nconst BLEND_SUBTRACTIVE = 0;\nconst BLEND_ADDITIVE = 1;\nconst BLEND_NORMAL = 2;\nconst BLEND_NONE = 3;\nconst BLEND_PREMULTIPLIED = 4;\nconst BLEND_MULTIPLICATIVE = 5;\nconst BLEND_ADDITIVEALPHA = 6;\nconst BLEND_MULTIPLICATIVE2X = 7;\nconst BLEND_SCREEN = 8;\nconst BLEND_MIN = 9;\nconst BLEND_MAX = 10;\nconst blendNames = {\n\t\t[BLEND_SUBTRACTIVE]: 'SUBTRACTIVE',\n\t\t[BLEND_ADDITIVE]: 'ADDITIVE',\n\t\t[BLEND_NORMAL]: 'NORMAL',\n\t\t[BLEND_NONE]: 'NONE',\n\t\t[BLEND_PREMULTIPLIED]: 'PREMULTIPLIED',\n\t\t[BLEND_MULTIPLICATIVE]: 'MULTIPLICATIVE',\n\t\t[BLEND_ADDITIVEALPHA]: 'ADDITIVEALPHA',\n\t\t[BLEND_MULTIPLICATIVE2X]: 'MULTIPLICATIVE2X',\n\t\t[BLEND_SCREEN]: 'SCREEN',\n\t\t[BLEND_MIN]: 'MIN',\n\t\t[BLEND_MAX]: 'MAX'\n};\nconst FOG_NONE = 'none';\nconst FOG_LINEAR = 'linear';\nconst FOG_EXP = 'exp';\nconst FOG_EXP2 = 'exp2';\nconst FRESNEL_NONE = 0;\nconst FRESNEL_SCHLICK = 2;\nconst fresnelNames = {\n\t\t[FRESNEL_NONE]: 'NONE',\n\t\t[FRESNEL_SCHLICK]: 'SCHLICK'\n};\nconst LAYER_HUD = 0;\nconst LAYER_GIZMO = 1;\nconst LAYER_WORLD = 15;\nconst LAYERID_WORLD = 0;\nconst LAYERID_DEPTH = 1;\nconst LAYERID_SKYBOX = 2;\nconst LAYERID_IMMEDIATE = 3;\nconst LAYERID_UI = 4;\nconst LIGHTTYPE_DIRECTIONAL = 0;\nconst LIGHTTYPE_OMNI = 1;\nconst LIGHTTYPE_POINT = LIGHTTYPE_OMNI;\nconst LIGHTTYPE_SPOT = 2;\nconst LIGHTTYPE_COUNT = 3;\nconst lightTypeNames = {\n\t\t[LIGHTTYPE_DIRECTIONAL]: 'DIRECTIONAL',\n\t\t[LIGHTTYPE_OMNI]: 'OMNI',\n\t\t[LIGHTTYPE_SPOT]: 'SPOT'\n};\nconst LIGHT_COLOR_DIVIDER = 100;\nconst LIGHTSHAPE_PUNCTUAL = 0;\nconst LIGHTSHAPE_RECT = 1;\nconst LIGHTSHAPE_DISK = 2;\nconst LIGHTSHAPE_SPHERE = 3;\nconst lightShapeNames = {\n\t\t[LIGHTSHAPE_PUNCTUAL]: 'PUNCTUAL',\n\t\t[LIGHTSHAPE_RECT]: 'RECT',\n\t\t[LIGHTSHAPE_DISK]: 'DISK',\n\t\t[LIGHTSHAPE_SPHERE]: 'SPHERE'\n};\nconst LIGHTFALLOFF_LINEAR = 0;\nconst LIGHTFALLOFF_INVERSESQUARED = 1;\nconst lightFalloffNames = {\n\t\t[LIGHTFALLOFF_LINEAR]: 'LINEAR',\n\t\t[LIGHTFALLOFF_INVERSESQUARED]: 'INVERSESQUARED'\n};\nconst SHADOW_PCF3_32F = 0;\nconst SHADOW_PCF3 = 0;\nconst SHADOW_VSM_16F = 2;\nconst SHADOW_VSM16 = 2;\nconst SHADOW_VSM_32F = 3;\nconst SHADOW_VSM32 = 3;\nconst SHADOW_PCF5_32F = 4;\nconst SHADOW_PCF5 = 4;\nconst SHADOW_PCF1_32F = 5;\nconst SHADOW_PCF1 = 5;\nconst SHADOW_PCSS_32F = 6;\nconst SHADOW_PCF1_16F = 7;\nconst SHADOW_PCF3_16F = 8;\nconst SHADOW_PCF5_16F = 9;\nconst shadowTypeInfo = new Map([\n\t\t[\n\t\t\t\tSHADOW_PCF1_32F,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'PCF1_32F',\n\t\t\t\t\t\tkind: 'PCF1',\n\t\t\t\t\t\tformat: PIXELFORMAT_DEPTH,\n\t\t\t\t\t\tpcf: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tSHADOW_PCF3_32F,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'PCF3_32F',\n\t\t\t\t\t\tkind: 'PCF3',\n\t\t\t\t\t\tformat: PIXELFORMAT_DEPTH,\n\t\t\t\t\t\tpcf: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tSHADOW_PCF5_32F,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'PCF5_32F',\n\t\t\t\t\t\tkind: 'PCF5',\n\t\t\t\t\t\tformat: PIXELFORMAT_DEPTH,\n\t\t\t\t\t\tpcf: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tSHADOW_PCF1_16F,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'PCF1_16F',\n\t\t\t\t\t\tkind: 'PCF1',\n\t\t\t\t\t\tformat: PIXELFORMAT_DEPTH16,\n\t\t\t\t\t\tpcf: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tSHADOW_PCF3_16F,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'PCF3_16F',\n\t\t\t\t\t\tkind: 'PCF3',\n\t\t\t\t\t\tformat: PIXELFORMAT_DEPTH16,\n\t\t\t\t\t\tpcf: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tSHADOW_PCF5_16F,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'PCF5_16F',\n\t\t\t\t\t\tkind: 'PCF5',\n\t\t\t\t\t\tformat: PIXELFORMAT_DEPTH16,\n\t\t\t\t\t\tpcf: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tSHADOW_VSM_16F,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'VSM_16F',\n\t\t\t\t\t\tkind: 'VSM',\n\t\t\t\t\t\tformat: PIXELFORMAT_RGBA16F,\n\t\t\t\t\t\tvsm: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tSHADOW_VSM_32F,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'VSM_32F',\n\t\t\t\t\t\tkind: 'VSM',\n\t\t\t\t\t\tformat: PIXELFORMAT_RGBA32F,\n\t\t\t\t\t\tvsm: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tSHADOW_PCSS_32F,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'PCSS_32F',\n\t\t\t\t\t\tkind: 'PCSS',\n\t\t\t\t\t\tformat: PIXELFORMAT_R32F,\n\t\t\t\t\t\tpcss: true\n\t\t\t\t}\n\t\t]\n]);\nconst SHADOW_CASCADE_0 = 1;\nconst SHADOW_CASCADE_1 = 2;\nconst SHADOW_CASCADE_2 = 4;\nconst SHADOW_CASCADE_3 = 8;\nconst SHADOW_CASCADE_ALL = 255;\nconst BLUR_BOX = 0;\nconst BLUR_GAUSSIAN = 1;\nconst PARTICLESORT_NONE = 0;\nconst PARTICLESORT_DISTANCE = 1;\nconst PARTICLESORT_NEWER_FIRST = 2;\nconst PARTICLESORT_OLDER_FIRST = 3;\nconst PARTICLEMODE_GPU = 0;\nconst PARTICLEMODE_CPU = 1;\nconst EMITTERSHAPE_BOX = 0;\nconst EMITTERSHAPE_SPHERE = 1;\nconst PARTICLEORIENTATION_SCREEN = 0;\nconst PARTICLEORIENTATION_WORLD = 1;\nconst PARTICLEORIENTATION_EMITTER = 2;\nconst PROJECTION_PERSPECTIVE = 0;\nconst PROJECTION_ORTHOGRAPHIC = 1;\nconst RENDERSTYLE_SOLID = 0;\nconst RENDERSTYLE_WIREFRAME = 1;\nconst RENDERSTYLE_POINTS = 2;\nconst CUBEPROJ_NONE = 0;\nconst CUBEPROJ_BOX = 1;\nconst cubemaProjectionNames = {\n\t\t[CUBEPROJ_NONE]: 'NONE',\n\t\t[CUBEPROJ_BOX]: 'BOX'\n};\nconst DETAILMODE_MUL = 'mul';\nconst DETAILMODE_ADD = 'add';\nconst DETAILMODE_SCREEN = 'screen';\nconst DETAILMODE_OVERLAY = 'overlay';\nconst DETAILMODE_MIN = 'min';\nconst DETAILMODE_MAX = 'max';\nconst GAMMA_NONE = 0;\nconst GAMMA_SRGB = 1;\nconst gammaNames = {\n\t\t[GAMMA_NONE]: 'NONE',\n\t\t[GAMMA_SRGB]: 'SRGB'\n};\nconst TONEMAP_LINEAR = 0;\nconst TONEMAP_FILMIC = 1;\nconst TONEMAP_HEJL = 2;\nconst TONEMAP_ACES = 3;\nconst TONEMAP_ACES2 = 4;\nconst TONEMAP_NEUTRAL = 5;\nconst TONEMAP_NONE = 6;\nconst tonemapNames = [\n\t\t'LINEAR',\n\t\t'FILMIC',\n\t\t'HEJL',\n\t\t'ACES',\n\t\t'ACES2',\n\t\t'NEUTRAL',\n\t\t'NONE'\n];\nconst SPECOCC_NONE = 0;\nconst SPECOCC_AO = 1;\nconst SPECOCC_GLOSSDEPENDENT = 2;\nconst specularOcclusionNames = {\n\t\t[SPECOCC_NONE]: 'NONE',\n\t\t[SPECOCC_AO]: 'AO',\n\t\t[SPECOCC_GLOSSDEPENDENT]: 'GLOSSDEPENDENT'\n};\nconst REFLECTIONSRC_NONE = 'none';\nconst REFLECTIONSRC_ENVATLAS = 'envAtlas';\nconst REFLECTIONSRC_ENVATLASHQ = 'envAtlasHQ';\nconst REFLECTIONSRC_CUBEMAP = 'cubeMap';\nconst REFLECTIONSRC_SPHEREMAP = 'sphereMap';\nconst reflectionSrcNames = {\n\t\t[REFLECTIONSRC_NONE]: 'NONE',\n\t\t[REFLECTIONSRC_ENVATLAS]: 'ENVATLAS',\n\t\t[REFLECTIONSRC_ENVATLASHQ]: 'ENVATLASHQ',\n\t\t[REFLECTIONSRC_CUBEMAP]: 'CUBEMAP',\n\t\t[REFLECTIONSRC_SPHEREMAP]: 'SPHEREMAP'\n};\nconst AMBIENTSRC_AMBIENTSH = 'ambientSH';\nconst AMBIENTSRC_ENVALATLAS = 'envAtlas';\nconst AMBIENTSRC_CONSTANT = 'constant';\nconst ambientSrcNames = {\n\t\t[AMBIENTSRC_AMBIENTSH]: 'AMBIENTSH',\n\t\t[AMBIENTSRC_ENVALATLAS]: 'ENVALATLAS',\n\t\t[AMBIENTSRC_CONSTANT]: 'CONSTANT'\n};\nconst SHADERDEF_NOSHADOW = 1;\nconst SHADERDEF_SKIN = 2;\nconst SHADERDEF_UV0 = 4;\nconst SHADERDEF_UV1 = 8;\nconst SHADERDEF_VCOLOR = 16;\nconst SHADERDEF_INSTANCING = 32;\nconst SHADERDEF_LM = 64;\nconst SHADERDEF_DIRLM = 128;\nconst SHADERDEF_SCREENSPACE = 256;\nconst SHADERDEF_TANGENTS = 512;\nconst SHADERDEF_MORPH_POSITION = 1024;\nconst SHADERDEF_MORPH_NORMAL = 2048;\nconst SHADERDEF_LMAMBIENT = 4096;\nconst SHADERDEF_MORPH_TEXTURE_BASED_INT = 8192;\nconst SHADERDEF_BATCH = 16384;\nconst SHADOWUPDATE_NONE = 0;\nconst SHADOWUPDATE_THISFRAME = 1;\nconst SHADOWUPDATE_REALTIME = 2;\nconst MASK_AFFECT_DYNAMIC = 1;\nconst MASK_AFFECT_LIGHTMAPPED = 2;\nconst MASK_BAKE = 4;\nconst SHADER_FORWARD = 0;\nconst SHADER_PREPASS = 1;\nconst SHADER_SHADOW = 2;\nconst SHADER_PICK = 3;\nconst SHADERPASS_FORWARD = 'forward';\nconst SHADERPASS_ALBEDO = 'debug_albedo';\nconst SHADERPASS_WORLDNORMAL = 'debug_world_normal';\nconst SHADERPASS_OPACITY = 'debug_opacity';\nconst SHADERPASS_SPECULARITY = 'debug_specularity';\nconst SHADERPASS_GLOSS = 'debug_gloss';\nconst SHADERPASS_METALNESS = 'debug_metalness';\nconst SHADERPASS_AO = 'debug_ao';\nconst SHADERPASS_EMISSION = 'debug_emission';\nconst SHADERPASS_LIGHTING = 'debug_lighting';\nconst SHADERPASS_UV0 = 'debug_uv0';\nconst SPRITE_RENDERMODE_SIMPLE = 0;\nconst SPRITE_RENDERMODE_SLICED = 1;\nconst SPRITE_RENDERMODE_TILED = 2;\nconst spriteRenderModeNames = {\n\t\t[SPRITE_RENDERMODE_SIMPLE]: 'SIMPLE',\n\t\t[SPRITE_RENDERMODE_SLICED]: 'SLICED',\n\t\t[SPRITE_RENDERMODE_TILED]: 'TILED'\n};\nconst BAKE_COLOR = 0;\nconst BAKE_COLORDIR = 1;\nconst VIEW_CENTER = 0;\nconst VIEW_LEFT = 1;\nconst VIEW_RIGHT = 2;\nconst SORTMODE_NONE = 0;\nconst SORTMODE_MANUAL = 1;\nconst SORTMODE_MATERIALMESH = 2;\nconst SORTMODE_BACK2FRONT = 3;\nconst SORTMODE_FRONT2BACK = 4;\nconst SORTMODE_CUSTOM = 5;\nconst ASPECT_AUTO = 0;\nconst ASPECT_MANUAL = 1;\nconst ORIENTATION_HORIZONTAL = 0;\nconst ORIENTATION_VERTICAL = 1;\nconst SKYTYPE_INFINITE = 'infinite';\nconst SKYTYPE_BOX = 'box';\nconst SKYTYPE_DOME = 'dome';\nconst DITHER_NONE = 'none';\nconst DITHER_BAYER8 = 'bayer8';\nconst DITHER_BLUENOISE = 'bluenoise';\nconst DITHER_IGNNOISE = 'ignnoise';\nconst ditherNames = {\n\t\t[DITHER_NONE]: 'NONE',\n\t\t[DITHER_BAYER8]: 'BAYER8',\n\t\t[DITHER_BLUENOISE]: 'BLUENOISE',\n\t\t[DITHER_IGNNOISE]: 'IGNNOISE'\n};\nconst EVENT_PRERENDER = 'prerender';\nconst EVENT_POSTRENDER = 'postrender';\nconst EVENT_PRERENDER_LAYER = 'prerender:layer';\nconst EVENT_POSTRENDER_LAYER = 'postrender:layer';\nconst EVENT_PRECULL = 'precull';\nconst EVENT_POSTCULL = 'postcull';\nconst EVENT_CULL_END = 'cull:end';\n\nclass ShaderProcessorOptions {\n\t\tconstructor(viewUniformFormat, viewBindGroupFormat, vertexFormat){\n\t\t\t\tthis.uniformFormats = [];\n\t\t\t\tthis.bindGroupFormats = [];\n\t\t\t\tthis.uniformFormats[BINDGROUP_VIEW] = viewUniformFormat;\n\t\t\t\tthis.bindGroupFormats[BINDGROUP_VIEW] = viewBindGroupFormat;\n\t\t\t\tthis.vertexFormat = vertexFormat;\n\t\t}\n\t\thasUniform(name) {\n\t\t\t\tfor(let i = 0; i < this.uniformFormats.length; i++){\n\t\t\t\t\t\tconst uniformFormat = this.uniformFormats[i];\n\t\t\t\t\t\tif (uniformFormat?.get(name)) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t}\n\t\thasTexture(name) {\n\t\t\t\tfor(let i = 0; i < this.bindGroupFormats.length; i++){\n\t\t\t\t\t\tconst groupFormat = this.bindGroupFormats[i];\n\t\t\t\t\t\tif (groupFormat?.getTexture(name)) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t}\n\t\tgetVertexElement(semantic) {\n\t\t\t\treturn this.vertexFormat?.elements.find((element)=>element.name === semantic);\n\t\t}\n\t\tgenerateKey(device) {\n\t\t\t\tlet key = JSON.stringify(this.uniformFormats) + JSON.stringify(this.bindGroupFormats);\n\t\t\t\tif (device.isWebGPU) {\n\t\t\t\t\t\tkey += this.vertexFormat?.shaderProcessingHashString;\n\t\t\t\t}\n\t\t\t\treturn key;\n\t\t}\n}\n\nconst programLibraryDeviceCache = new DeviceCache();\nfunction getProgramLibrary(device) {\n\t\tconst library = programLibraryDeviceCache.get(device);\n\t\treturn library;\n}\nfunction setProgramLibrary(device, library) {\n\t\tprogramLibraryDeviceCache.get(device, ()=>{\n\t\t\t\treturn library;\n\t\t});\n}\n\nclass ShaderGenerator {\n\t\tstatic definesHash(defines) {\n\t\t\t\tconst sortedArray = Array.from(defines).sort((a, b)=>a[0] > b[0] ? 1 : -1);\n\t\t\t\treturn hashCode(JSON.stringify(sortedArray));\n\t\t}\n}\n\nconst shaderPassDeviceCache = new DeviceCache();\nclass ShaderPassInfo {\n\t\tconstructor(name, index, options = {}){\n\t\t\t\tthis.defines = new Map();\n\t\t\t\tthis.name = name;\n\t\t\t\tthis.index = index;\n\t\t\t\tObject.assign(this, options);\n\t\t\t\tthis.buildShaderDefines();\n\t\t}\n\t\tbuildShaderDefines() {\n\t\t\t\tlet keyword;\n\t\t\t\tif (this.isShadow) {\n\t\t\t\t\t\tkeyword = 'SHADOW';\n\t\t\t\t} else if (this.isForward) {\n\t\t\t\t\t\tkeyword = 'FORWARD';\n\t\t\t\t} else if (this.index === SHADER_PICK) {\n\t\t\t\t\t\tkeyword = 'PICK';\n\t\t\t\t}\n\t\t\t\tthis.defines.set(`${keyword}_PASS`, '');\n\t\t\t\tthis.defines.set(`${this.name.toUpperCase()}_PASS`, '');\n\t\t}\n}\nclass ShaderPass {\n\t\tconstructor(){\n\t\t\t\tthis.passesNamed = new Map();\n\t\t\t\tthis.passesIndexed = [];\n\t\t\t\tthis.nextIndex = 0;\n\t\t\t\tconst add = (name, index, options)=>{\n\t\t\t\t\t\tthis.allocate(name, options);\n\t\t\t\t};\n\t\t\t\tadd('forward', SHADER_FORWARD, {\n\t\t\t\t\t\tisForward: true\n\t\t\t\t});\n\t\t\t\tadd('prepass');\n\t\t\t\tadd('shadow');\n\t\t\t\tadd('pick');\n\t\t}\n\t\tstatic get(device) {\n\t\t\t\treturn shaderPassDeviceCache.get(device, ()=>{\n\t\t\t\t\t\treturn new ShaderPass();\n\t\t\t\t});\n\t\t}\n\t\tallocate(name, options) {\n\t\t\t\tlet info = this.passesNamed.get(name);\n\t\t\t\tif (info === undefined) {\n\t\t\t\t\t\tinfo = new ShaderPassInfo(name, this.nextIndex, options);\n\t\t\t\t\t\tthis.passesNamed.set(info.name, info);\n\t\t\t\t\t\tthis.passesIndexed[info.index] = info;\n\t\t\t\t\t\tthis.nextIndex++;\n\t\t\t\t}\n\t\t\t\treturn info;\n\t\t}\n\t\tgetByIndex(index) {\n\t\t\t\tconst info = this.passesIndexed[index];\n\t\t\t\treturn info;\n\t\t}\n\t\tgetByName(name) {\n\t\t\t\treturn this.passesNamed.get(name);\n\t\t}\n}\n\nclass ShaderChunkMap extends Map {\n\t\tset(name, code) {\n\t\t\t\tif (!this.has(name) || this.get(name) !== code) {\n\t\t\t\t\t\tthis.markDirty();\n\t\t\t\t}\n\t\t\t\treturn super.set(name, code);\n\t\t}\n\t\tadd(object, override = true) {\n\t\t\t\tfor (const [key, value] of Object.entries(object)){\n\t\t\t\t\t\tif (override || !this.has(key)) {\n\t\t\t\t\t\t\t\tthis.set(key, value);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t}\n\t\tdelete(name) {\n\t\t\t\tconst existed = this.has(name);\n\t\t\t\tconst result = super.delete(name);\n\t\t\t\tif (existed && result) {\n\t\t\t\t\t\tthis.markDirty();\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t}\n\t\tclear() {\n\t\t\t\tif (this.size > 0) {\n\t\t\t\t\t\tthis.markDirty();\n\t\t\t\t}\n\t\t\t\tsuper.clear();\n\t\t}\n\t\tmarkDirty() {\n\t\t\t\tthis._dirty = true;\n\t\t\t\tthis._keyDirty = true;\n\t\t}\n\t\tisDirty() {\n\t\t\t\treturn this._dirty;\n\t\t}\n\t\tresetDirty() {\n\t\t\t\tthis._dirty = false;\n\t\t}\n\t\tget key() {\n\t\t\t\tif (this._keyDirty) {\n\t\t\t\t\t\tthis._keyDirty = false;\n\t\t\t\t\t\tthis._key = Array.from(this.entries()).sort(([a], [b])=>a < b ? -1 : a > b ? 1 : 0).map(([k, v])=>`${k}=${hashCode(v)}`).join(',');\n\t\t\t\t}\n\t\t\t\treturn this._key;\n\t\t}\n\t\tcopy(source) {\n\t\t\t\tthis.clear();\n\t\t\t\tfor (const [key, value] of source){\n\t\t\t\t\t\tthis.set(key, value);\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t}\n\t\tconstructor(...args){\n\t\t\t\tsuper(...args), this._keyDirty = false, this._key = '';\n\t\t}\n}\n\nconst _chunksCache = new DeviceCache();\nclass ShaderChunks {\n\t\tstatic get(device, shaderLanguage = SHADERLANGUAGE_GLSL) {\n\t\t\t\tconst cache = _chunksCache.get(device, ()=>{\n\t\t\t\t\t\treturn new ShaderChunks();\n\t\t\t\t});\n\t\t\t\treturn shaderLanguage === SHADERLANGUAGE_GLSL ? cache.glsl : cache.wgsl;\n\t\t}\n\t\tget useWGSL() {\n\t\t\t\treturn this.glsl.size === 0 || this.wgsl.size > 0;\n\t\t}\n\t\tget key() {\n\t\t\t\treturn `GLSL:${this.glsl.key}|WGSL:${this.wgsl.key}|API:${this.version}`;\n\t\t}\n\t\tisDirty() {\n\t\t\t\treturn this.glsl.isDirty() || this.wgsl.isDirty();\n\t\t}\n\t\tresetDirty() {\n\t\t\t\tthis.glsl.resetDirty();\n\t\t\t\tthis.wgsl.resetDirty();\n\t\t}\n\t\tcopy(source) {\n\t\t\t\tthis.version = source.version;\n\t\t\t\tthis.glsl.copy(source.glsl);\n\t\t\t\tthis.wgsl.copy(source.wgsl);\n\t\t\t\treturn this;\n\t\t}\n\t\tconstructor(){\n\t\t\t\tthis.glsl = new ShaderChunkMap();\n\t\t\t\tthis.wgsl = new ShaderChunkMap();\n\t\t\t\tthis.version = '';\n\t\t}\n}\n\nclass MapUtils {\n\t\tstatic merge(...maps) {\n\t\t\t\tconst result = new Map(maps[0] ?? []);\n\t\t\t\tfor(let i = 1; i < maps.length; i++){\n\t\t\t\t\t\tconst map = maps[i];\n\t\t\t\t\t\tif (map) {\n\t\t\t\t\t\t\t\tfor (const [key, value] of map){\n\t\t\t\t\t\t\t\t\t\tresult.set(key, value);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t}\n}\n\nclass ShaderGeneratorPassThrough extends ShaderGenerator {\n\t\tconstructor(key, shaderDefinition){\n\t\t\t\tsuper();\n\t\t\t\tthis.key = key;\n\t\t\t\tthis.shaderDefinition = shaderDefinition;\n\t\t}\n\t\tgenerateKey(options) {\n\t\t\t\treturn this.key;\n\t\t}\n\t\tcreateShaderDefinition(device, options) {\n\t\t\t\treturn this.shaderDefinition;\n\t\t}\n}\nclass ShaderUtils {\n\t\tstatic createShader(device, options) {\n\t\t\t\tconst programLibrary = getProgramLibrary(device);\n\t\t\t\tlet shader = programLibrary.getCachedShader(options.uniqueName);\n\t\t\t\tif (!shader) {\n\t\t\t\t\t\tconst wgsl = device.isWebGPU && (!!options.vertexWGSL || !!options.vertexChunk) && (!!options.fragmentWGSL || !!options.fragmentChunk);\n\t\t\t\t\t\tconst chunksMap = ShaderChunks.get(device, wgsl ? SHADERLANGUAGE_WGSL : SHADERLANGUAGE_GLSL);\n\t\t\t\t\t\tconst vertexCode = options.vertexChunk ? chunksMap.get(options.vertexChunk) : wgsl ? options.vertexWGSL : options.vertexGLSL;\n\t\t\t\t\t\tconst fragmentCode = options.fragmentChunk ? chunksMap.get(options.fragmentChunk) : wgsl ? options.fragmentWGSL : options.fragmentGLSL;\n\t\t\t\t\t\tconst fragmentIncludes = MapUtils.merge(chunksMap, options.fragmentIncludes);\n\t\t\t\t\t\tconst vertexIncludes = MapUtils.merge(chunksMap, options.vertexIncludes);\n\t\t\t\t\t\tshader = new Shader(device, ShaderDefinitionUtils.createDefinition(device, {\n\t\t\t\t\t\t\t\tname: options.uniqueName,\n\t\t\t\t\t\t\t\tshaderLanguage: wgsl ? SHADERLANGUAGE_WGSL : SHADERLANGUAGE_GLSL,\n\t\t\t\t\t\t\t\tattributes: options.attributes,\n\t\t\t\t\t\t\t\tvertexCode: vertexCode,\n\t\t\t\t\t\t\t\tfragmentCode: fragmentCode,\n\t\t\t\t\t\t\t\tuseTransformFeedback: options.useTransformFeedback,\n\t\t\t\t\t\t\t\tvertexIncludes: vertexIncludes,\n\t\t\t\t\t\t\t\tvertexDefines: options.vertexDefines,\n\t\t\t\t\t\t\t\tfragmentIncludes: fragmentIncludes,\n\t\t\t\t\t\t\t\tfragmentDefines: options.fragmentDefines,\n\t\t\t\t\t\t\t\tfragmentOutputTypes: options.fragmentOutputTypes\n\t\t\t\t\t\t}));\n\t\t\t\t\t\tprogramLibrary.setCachedShader(options.uniqueName, shader);\n\t\t\t\t}\n\t\t\t\treturn shader;\n\t\t}\n\t\tstatic getCoreDefines(material, params) {\n\t\t\t\tconst defines = new Map(material.defines);\n\t\t\t\tparams.cameraShaderParams.defines.forEach((value, key)=>defines.set(key, value));\n\t\t\t\tconst shaderPassInfo = ShaderPass.get(params.device).getByIndex(params.pass);\n\t\t\t\tshaderPassInfo.defines.forEach((value, key)=>defines.set(key, value));\n\t\t\t\treturn defines;\n\t\t}\n\t\tstatic processShader(shader, processingOptions) {\n\t\t\t\tconst shaderDefinition = shader.definition;\n\t\t\t\tconst name = shaderDefinition.name ?? 'shader';\n\t\t\t\tconst key = `${name}-id-${shader.id}`;\n\t\t\t\tconst materialGenerator = new ShaderGeneratorPassThrough(key, shaderDefinition);\n\t\t\t\tconst libraryModuleName = 'shader';\n\t\t\t\tconst library = getProgramLibrary(shader.device);\n\t\t\t\tlibrary.register(libraryModuleName, materialGenerator);\n\t\t\t\tconst variant = library.getProgram(libraryModuleName, {}, processingOptions);\n\t\t\t\tlibrary.unregister(libraryModuleName);\n\t\t\t\treturn variant;\n\t\t}\n\t\tstatic addScreenDepthChunkDefines(device, cameraShaderParams, defines) {\n\t\t\t\tif (cameraShaderParams.sceneDepthMapLinear) {\n\t\t\t\t\t\tdefines.set('SCENE_DEPTHMAP_LINEAR', '');\n\t\t\t\t}\n\t\t\t\tif (device.textureFloatRenderable) {\n\t\t\t\t\t\tdefines.set('SCENE_DEPTHMAP_FLOAT', '');\n\t\t\t\t}\n\t\t}\n}\nfunction createShader(device, vsName, fsName, useTransformFeedback = false, shaderDefinitionOptions = {}) {}\nfunction createShaderFromCode(device, vsCode, fsCode, uniqueName, attributes, useTransformFeedback = false, shaderDefinitionOptions = {}) {\n\t\tif (typeof useTransformFeedback === 'boolean') {\n\t\t\t\tshaderDefinitionOptions.useTransformFeedback = useTransformFeedback;\n\t\t} else if (typeof useTransformFeedback === 'object') {\n\t\t\t\tshaderDefinitionOptions = {\n\t\t\t\t\t\t...shaderDefinitionOptions,\n\t\t\t\t\t\t...useTransformFeedback\n\t\t\t\t};\n\t\t}\n\t\tconst programLibrary = getProgramLibrary(device);\n\t\tlet shader = programLibrary.getCachedShader(uniqueName);\n\t\tif (!shader) {\n\t\t\t\tshader = new Shader(device, ShaderDefinitionUtils.createDefinition(device, {\n\t\t\t\t\t\t...shaderDefinitionOptions,\n\t\t\t\t\t\tname: uniqueName,\n\t\t\t\t\t\tvertexCode: vsCode,\n\t\t\t\t\t\tfragmentCode: fsCode,\n\t\t\t\t\t\tattributes: attributes\n\t\t\t\t}));\n\t\t\t\tprogramLibrary.setCachedShader(uniqueName, shader);\n\t\t}\n\t\treturn shader;\n}\n\nconst _quadPrimitive = {\n\t\ttype: PRIMITIVE_TRISTRIP,\n\t\tbase: 0,\n\t\tbaseVertex: 0,\n\t\tcount: 4,\n\t\tindexed: false\n};\nconst _tempViewport = new Vec4();\nconst _tempScissor = new Vec4();\nconst _dynamicBindGroup$1 = new DynamicBindGroup();\nclass QuadRender {\n\t\tconstructor(shader){\n\t\t\t\tconst device = shader.device;\n\t\t\t\tthis.shader = shader;\n\t\t\t\tif (device.supportsUniformBuffers) {\n\t\t\t\t\t\tconst processingOptions = new ShaderProcessorOptions();\n\t\t\t\t\t\tthis.shader = ShaderUtils.processShader(shader, processingOptions);\n\t\t\t\t\t\tconst ubFormat = this.shader.meshUniformBufferFormat;\n\t\t\t\t\t\tif (ubFormat) {\n\t\t\t\t\t\t\t\tthis.uniformBuffer = new UniformBuffer(device, ubFormat, false);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst bindGroupFormat = this.shader.meshBindGroupFormat;\n\t\t\t\t\t\tthis.bindGroup = new BindGroup(device, bindGroupFormat);\n\t\t\t\t}\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.uniformBuffer?.destroy();\n\t\t\t\tthis.uniformBuffer = null;\n\t\t\t\tthis.bindGroup?.destroy();\n\t\t\t\tthis.bindGroup = null;\n\t\t}\n\t\trender(viewport, scissor) {\n\t\t\t\tconst device = this.shader.device;\n\t\t\t\tif (viewport) {\n\t\t\t\t\t\t_tempViewport.set(device.vx, device.vy, device.vw, device.vh);\n\t\t\t\t\t\t_tempScissor.set(device.sx, device.sy, device.sw, device.sh);\n\t\t\t\t\t\tscissor = scissor ?? viewport;\n\t\t\t\t\t\tdevice.setViewport(viewport.x, viewport.y, viewport.z, viewport.w);\n\t\t\t\t\t\tdevice.setScissor(scissor.x, scissor.y, scissor.z, scissor.w);\n\t\t\t\t}\n\t\t\t\tdevice.setVertexBuffer(device.quadVertexBuffer);\n\t\t\t\tconst shader = this.shader;\n\t\t\t\tdevice.setShader(shader);\n\t\t\t\tif (device.supportsUniformBuffers) {\n\t\t\t\t\t\tdevice.setBindGroup(BINDGROUP_VIEW, device.emptyBindGroup);\n\t\t\t\t\t\tconst bindGroup = this.bindGroup;\n\t\t\t\t\t\tbindGroup.update();\n\t\t\t\t\t\tdevice.setBindGroup(BINDGROUP_MESH, bindGroup);\n\t\t\t\t\t\tconst uniformBuffer = this.uniformBuffer;\n\t\t\t\t\t\tif (uniformBuffer) {\n\t\t\t\t\t\t\t\tuniformBuffer.update(_dynamicBindGroup$1);\n\t\t\t\t\t\t\t\tdevice.setBindGroup(BINDGROUP_MESH_UB, _dynamicBindGroup$1.bindGroup, _dynamicBindGroup$1.offsets);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tdevice.setBindGroup(BINDGROUP_MESH_UB, device.emptyBindGroup);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tdevice.draw(_quadPrimitive);\n\t\t\t\tif (viewport) {\n\t\t\t\t\t\tdevice.setViewport(_tempViewport.x, _tempViewport.y, _tempViewport.z, _tempViewport.w);\n\t\t\t\t\t\tdevice.setScissor(_tempScissor.x, _tempScissor.y, _tempScissor.z, _tempScissor.w);\n\t\t\t\t}\n\t\t}\n}\n\nclass RenderPassQuad extends RenderPass {\n\t\tconstructor(device, quad, rect, scissorRect){\n\t\t\t\tsuper(device);\n\t\t\t\tthis.quad = quad;\n\t\t\t\tthis.rect = rect;\n\t\t\t\tthis.scissorRect = scissorRect;\n\t\t}\n\t\texecute() {\n\t\t\t\tconst { device } = this;\n\t\t\t\tdevice.setCullMode(CULLFACE_NONE);\n\t\t\t\tdevice.setDepthState(DepthState.NODEPTH);\n\t\t\t\tdevice.setStencilState(null, null);\n\t\t\t\tthis.quad.render(this.rect, this.scissorRect);\n\t\t}\n}\n\nconst _tempRect = new Vec4();\nfunction drawQuadWithShader(device, target, shader, rect, scissorRect) {\n\t\tconst quad = new QuadRender(shader);\n\t\tif (!rect) {\n\t\t\t\trect = _tempRect;\n\t\t\t\trect.x = 0;\n\t\t\t\trect.y = 0;\n\t\t\t\trect.z = target ? target.width : device.width;\n\t\t\t\trect.w = target ? target.height : device.height;\n\t\t}\n\t\tconst renderPass = new RenderPassQuad(device, quad, rect, scissorRect);\n\t\trenderPass.init(target);\n\t\trenderPass.colorOps.clear = false;\n\t\trenderPass.depthStencilOps.clearDepth = false;\n\t\tif (device.isWebGPU && target === null && device.samples > 1) {\n\t\t\t\trenderPass.colorOps.store = true;\n\t\t}\n\t\trenderPass.render();\n\t\tquad.destroy();\n}\n\nclass Batch {\n\t\tconstructor(meshInstances, dynamic, batchGroupId){\n\t\t\t\tthis._aabb = new BoundingBox();\n\t\t\t\tthis.meshInstance = null;\n\t\t\t\tthis.origMeshInstances = meshInstances;\n\t\t\t\tthis.dynamic = dynamic;\n\t\t\t\tthis.batchGroupId = batchGroupId;\n\t\t}\n\t\tdestroy(scene, layers) {\n\t\t\t\tif (this.meshInstance) {\n\t\t\t\t\t\tthis.removeFromLayers(scene, layers);\n\t\t\t\t\t\tthis.meshInstance.destroy();\n\t\t\t\t\t\tthis.meshInstance = null;\n\t\t\t\t}\n\t\t}\n\t\taddToLayers(scene, layers) {\n\t\t\t\tfor(let i = 0; i < layers.length; i++){\n\t\t\t\t\t\tconst layer = scene.layers.getLayerById(layers[i]);\n\t\t\t\t\t\tif (layer) {\n\t\t\t\t\t\t\t\tlayer.addMeshInstances([\n\t\t\t\t\t\t\t\t\t\tthis.meshInstance\n\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tremoveFromLayers(scene, layers) {\n\t\t\t\tfor(let i = 0; i < layers.length; i++){\n\t\t\t\t\t\tconst layer = scene.layers.getLayerById(layers[i]);\n\t\t\t\t\t\tif (layer) {\n\t\t\t\t\t\t\t\tlayer.removeMeshInstances([\n\t\t\t\t\t\t\t\t\t\tthis.meshInstance\n\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tupdateBoundingBox() {\n\t\t\t\tthis._aabb.copy(this.origMeshInstances[0].aabb);\n\t\t\t\tfor(let i = 1; i < this.origMeshInstances.length; i++){\n\t\t\t\t\t\tthis._aabb.add(this.origMeshInstances[i].aabb);\n\t\t\t\t}\n\t\t\t\tthis.meshInstance.aabb = this._aabb;\n\t\t\t\tthis.meshInstance._aabbVer = 0;\n\t\t}\n\t\tget model() {\n\t\t\t\treturn undefined;\n\t\t}\n}\n\nclass BatchGroup {\n\t\tconstructor(id, name, dynamic, maxAabbSize, layers = [\n\t\t\t\tLAYERID_WORLD\n\t\t]){\n\t\t\t\tthis._ui = false;\n\t\t\t\tthis._sprite = false;\n\t\t\t\tthis._obj = {\n\t\t\t\t\t\tmodel: [],\n\t\t\t\t\t\telement: [],\n\t\t\t\t\t\tsprite: [],\n\t\t\t\t\t\trender: []\n\t\t\t\t};\n\t\t\t\tthis.id = id;\n\t\t\t\tthis.name = name;\n\t\t\t\tthis.dynamic = dynamic;\n\t\t\t\tthis.maxAabbSize = maxAabbSize;\n\t\t\t\tthis.layers = layers;\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.MODEL = 'model';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.ELEMENT = 'element';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.SPRITE = 'sprite';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.RENDER = 'render';\n\t\t}\n}\n\nconst _invMatrix = new Mat4();\nclass SkinInstance {\n\t\tconstructor(skin){\n\t\t\t\tthis._dirty = true;\n\t\t\t\tthis._rootBone = null;\n\t\t\t\tthis._skinUpdateIndex = -1;\n\t\t\t\tthis._updateBeforeCull = true;\n\t\t\t\tif (skin) {\n\t\t\t\t\t\tthis.initSkin(skin);\n\t\t\t\t}\n\t\t}\n\t\tset rootBone(rootBone) {\n\t\t\t\tthis._rootBone = rootBone;\n\t\t}\n\t\tget rootBone() {\n\t\t\t\treturn this._rootBone;\n\t\t}\n\t\tinit(device, numBones) {\n\t\t\t\tconst numPixels = numBones * 3;\n\t\t\t\tlet width = Math.ceil(Math.sqrt(numPixels));\n\t\t\t\twidth = math.roundUp(width, 3);\n\t\t\t\tconst height = Math.ceil(numPixels / width);\n\t\t\t\tthis.boneTexture = new Texture(device, {\n\t\t\t\t\t\twidth: width,\n\t\t\t\t\t\theight: height,\n\t\t\t\t\t\tformat: PIXELFORMAT_RGBA32F,\n\t\t\t\t\t\tmipmaps: false,\n\t\t\t\t\t\tminFilter: FILTER_NEAREST,\n\t\t\t\t\t\tmagFilter: FILTER_NEAREST,\n\t\t\t\t\t\tname: 'skin'\n\t\t\t\t});\n\t\t\t\tthis.matrixPalette = this.boneTexture.lock({\n\t\t\t\t\t\tmode: TEXTURELOCK_READ\n\t\t\t\t});\n\t\t\t\tthis.boneTexture.unlock();\n\t\t}\n\t\tdestroy() {\n\t\t\t\tif (this.boneTexture) {\n\t\t\t\t\t\tthis.boneTexture.destroy();\n\t\t\t\t\t\tthis.boneTexture = null;\n\t\t\t\t}\n\t\t}\n\t\tresolve(rootBone, entity) {\n\t\t\t\tthis.rootBone = rootBone;\n\t\t\t\tconst skin = this.skin;\n\t\t\t\tconst bones = [];\n\t\t\t\tfor(let j = 0; j < skin.boneNames.length; j++){\n\t\t\t\t\t\tconst boneName = skin.boneNames[j];\n\t\t\t\t\t\tlet bone = rootBone.findByName(boneName);\n\t\t\t\t\t\tif (!bone) {\n\t\t\t\t\t\t\t\tbone = entity;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbones.push(bone);\n\t\t\t\t}\n\t\t\t\tthis.bones = bones;\n\t\t}\n\t\tinitSkin(skin) {\n\t\t\t\tthis.skin = skin;\n\t\t\t\tthis.bones = [];\n\t\t\t\tconst numBones = skin.inverseBindPose.length;\n\t\t\t\tthis.init(skin.device, numBones);\n\t\t\t\tthis.matrices = [];\n\t\t\t\tfor(let i = 0; i < numBones; i++){\n\t\t\t\t\t\tthis.matrices[i] = new Mat4();\n\t\t\t\t}\n\t\t}\n\t\tuploadBones(device) {\n\t\t\t\tthis.boneTexture.upload();\n\t\t}\n\t\t_updateMatrices(rootNode, skinUpdateIndex) {\n\t\t\t\tif (this._skinUpdateIndex !== skinUpdateIndex) {\n\t\t\t\t\t\tthis._skinUpdateIndex = skinUpdateIndex;\n\t\t\t\t\t\t_invMatrix.copy(rootNode.getWorldTransform()).invert();\n\t\t\t\t\t\tfor(let i = this.bones.length - 1; i >= 0; i--){\n\t\t\t\t\t\t\t\tthis.matrices[i].mulAffine2(_invMatrix, this.bones[i].getWorldTransform());\n\t\t\t\t\t\t\t\tthis.matrices[i].mulAffine2(this.matrices[i], this.skin.inverseBindPose[i]);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tupdateMatrices(rootNode, skinUpdateIndex) {\n\t\t\t\tif (this._updateBeforeCull) {\n\t\t\t\t\t\tthis._updateMatrices(rootNode, skinUpdateIndex);\n\t\t\t\t}\n\t\t}\n\t\tupdateMatrixPalette(rootNode, skinUpdateIndex) {\n\t\t\t\tthis._updateMatrices(rootNode, skinUpdateIndex);\n\t\t\t\tconst mp = this.matrixPalette;\n\t\t\t\tconst count = this.bones.length;\n\t\t\t\tfor(let i = 0; i < count; i++){\n\t\t\t\t\t\tconst pe = this.matrices[i].data;\n\t\t\t\t\t\tconst base = i * 12;\n\t\t\t\t\t\tmp[base] = pe[0];\n\t\t\t\t\t\tmp[base + 1] = pe[4];\n\t\t\t\t\t\tmp[base + 2] = pe[8];\n\t\t\t\t\t\tmp[base + 3] = pe[12];\n\t\t\t\t\t\tmp[base + 4] = pe[1];\n\t\t\t\t\t\tmp[base + 5] = pe[5];\n\t\t\t\t\t\tmp[base + 6] = pe[9];\n\t\t\t\t\t\tmp[base + 7] = pe[13];\n\t\t\t\t\t\tmp[base + 8] = pe[2];\n\t\t\t\t\t\tmp[base + 9] = pe[6];\n\t\t\t\t\t\tmp[base + 10] = pe[10];\n\t\t\t\t\t\tmp[base + 11] = pe[14];\n\t\t\t\t}\n\t\t\t\tthis.uploadBones(this.skin.device);\n\t\t}\n}\n\nclass SkinBatchInstance extends SkinInstance {\n\t\tconstructor(device, nodes, rootNode){\n\t\t\t\tsuper();\n\t\t\t\tconst numBones = nodes.length;\n\t\t\t\tthis.init(device, numBones);\n\t\t\t\tthis.device = device;\n\t\t\t\tthis.rootNode = rootNode;\n\t\t\t\tthis.bones = nodes;\n\t\t}\n\t\tupdateMatrices(rootNode, skinUpdateIndex) {}\n\t\tupdateMatrixPalette(rootNode, skinUpdateIndex) {\n\t\t\t\tconst mp = this.matrixPalette;\n\t\t\t\tconst count = this.bones.length;\n\t\t\t\tfor(let i = 0; i < count; i++){\n\t\t\t\t\t\tconst pe = this.bones[i].getWorldTransform().data;\n\t\t\t\t\t\tconst base = i * 12;\n\t\t\t\t\t\tmp[base] = pe[0];\n\t\t\t\t\t\tmp[base + 1] = pe[4];\n\t\t\t\t\t\tmp[base + 2] = pe[8];\n\t\t\t\t\t\tmp[base + 3] = pe[12];\n\t\t\t\t\t\tmp[base + 4] = pe[1];\n\t\t\t\t\t\tmp[base + 5] = pe[5];\n\t\t\t\t\t\tmp[base + 6] = pe[9];\n\t\t\t\t\t\tmp[base + 7] = pe[13];\n\t\t\t\t\t\tmp[base + 8] = pe[2];\n\t\t\t\t\t\tmp[base + 9] = pe[6];\n\t\t\t\t\t\tmp[base + 10] = pe[10];\n\t\t\t\t\t\tmp[base + 11] = pe[14];\n\t\t\t\t}\n\t\t\t\tthis.uploadBones(this.device);\n\t\t}\n}\n\nlet id$5 = 0;\nclass GeometryData {\n\t\tconstructor(){\n\t\t\t\tthis.initDefaults();\n\t\t}\n\t\tinitDefaults() {\n\t\t\t\tthis.recreate = false;\n\t\t\t\tthis.verticesUsage = BUFFER_STATIC;\n\t\t\t\tthis.indicesUsage = BUFFER_STATIC;\n\t\t\t\tthis.maxVertices = 0;\n\t\t\t\tthis.maxIndices = 0;\n\t\t\t\tthis.vertexCount = 0;\n\t\t\t\tthis.indexCount = 0;\n\t\t\t\tthis.vertexStreamsUpdated = false;\n\t\t\t\tthis.indexStreamUpdated = false;\n\t\t\t\tthis.vertexStreamDictionary = {};\n\t\t\t\tthis.indices = null;\n\t\t}\n\t\t_changeVertexCount(count, semantic) {\n\t\t\t\tif (!this.vertexCount) {\n\t\t\t\t\t\tthis.vertexCount = count;\n\t\t\t\t}\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.DEFAULT_COMPONENTS_POSITION = 3;\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.DEFAULT_COMPONENTS_NORMAL = 3;\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.DEFAULT_COMPONENTS_UV = 2;\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.DEFAULT_COMPONENTS_COLORS = 4;\n\t\t}\n}\nclass GeometryVertexStream {\n\t\tconstructor(data, componentCount, dataType, dataTypeNormalize, asInt){\n\t\t\t\tthis.data = data;\n\t\t\t\tthis.componentCount = componentCount;\n\t\t\t\tthis.dataType = dataType;\n\t\t\t\tthis.dataTypeNormalize = dataTypeNormalize;\n\t\t\t\tthis.asInt = asInt;\n\t\t}\n}\nclass Mesh extends RefCountedObject {\n\t\tconstructor(graphicsDevice, options){\n\t\t\t\tsuper(), this.indexBuffer = [\n\t\t\t\t\t\tnull\n\t\t\t\t], this.vertexBuffer = null, this.primitive = [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: 0,\n\t\t\t\t\t\t\t\tbase: 0,\n\t\t\t\t\t\t\t\tbaseVertex: 0,\n\t\t\t\t\t\t\t\tcount: 0\n\t\t\t\t\t\t}\n\t\t\t\t], this.skin = null, this.boneAabb = null, this._aabbVer = 0, this._aabb = new BoundingBox(), this._geometryData = null, this._morph = null, this._storageIndex = false, this._storageVertex = false;\n\t\t\t\tthis.id = id$5++;\n\t\t\t\tthis.device = graphicsDevice;\n\t\t\t\tthis._storageIndex = options?.storageIndex || false;\n\t\t\t\tthis._storageVertex = options?.storageVertex || false;\n\t\t}\n\t\tstatic fromGeometry(graphicsDevice, geometry, options = {}) {\n\t\t\t\tconst mesh = new Mesh(graphicsDevice, options);\n\t\t\t\tconst { positions, normals, tangents, colors, uvs, uvs1, blendIndices, blendWeights, indices } = geometry;\n\t\t\t\tif (positions) {\n\t\t\t\t\t\tmesh.setPositions(positions);\n\t\t\t\t}\n\t\t\t\tif (normals) {\n\t\t\t\t\t\tmesh.setNormals(normals);\n\t\t\t\t}\n\t\t\t\tif (tangents) {\n\t\t\t\t\t\tmesh.setVertexStream(SEMANTIC_TANGENT, tangents, 4);\n\t\t\t\t}\n\t\t\t\tif (colors) {\n\t\t\t\t\t\tmesh.setColors32(colors);\n\t\t\t\t}\n\t\t\t\tif (uvs) {\n\t\t\t\t\t\tmesh.setUvs(0, uvs);\n\t\t\t\t}\n\t\t\t\tif (uvs1) {\n\t\t\t\t\t\tmesh.setUvs(1, uvs1);\n\t\t\t\t}\n\t\t\t\tif (blendIndices) {\n\t\t\t\t\t\tmesh.setVertexStream(SEMANTIC_BLENDINDICES, blendIndices, 4, blendIndices.length / 4, TYPE_UINT8);\n\t\t\t\t}\n\t\t\t\tif (blendWeights) {\n\t\t\t\t\t\tmesh.setVertexStream(SEMANTIC_BLENDWEIGHT, blendWeights, 4);\n\t\t\t\t}\n\t\t\t\tif (indices) {\n\t\t\t\t\t\tmesh.setIndices(indices);\n\t\t\t\t}\n\t\t\t\tmesh.update();\n\t\t\t\treturn mesh;\n\t\t}\n\t\tset morph(morph) {\n\t\t\t\tif (morph !== this._morph) {\n\t\t\t\t\t\tif (this._morph) {\n\t\t\t\t\t\t\t\tthis._morph.decRefCount();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._morph = morph;\n\t\t\t\t\t\tif (morph) {\n\t\t\t\t\t\t\t\tmorph.incRefCount();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget morph() {\n\t\t\t\treturn this._morph;\n\t\t}\n\t\tset aabb(aabb) {\n\t\t\t\tthis._aabb = aabb;\n\t\t\t\tthis._aabbVer++;\n\t\t}\n\t\tget aabb() {\n\t\t\t\treturn this._aabb;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tconst morph = this.morph;\n\t\t\t\tif (morph) {\n\t\t\t\t\t\tthis.morph = null;\n\t\t\t\t\t\tif (morph.refCount < 1) {\n\t\t\t\t\t\t\t\tmorph.destroy();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this.vertexBuffer) {\n\t\t\t\t\t\tthis.vertexBuffer.destroy();\n\t\t\t\t\t\tthis.vertexBuffer = null;\n\t\t\t\t}\n\t\t\t\tfor(let j = 0; j < this.indexBuffer.length; j++){\n\t\t\t\t\t\tthis._destroyIndexBuffer(j);\n\t\t\t\t}\n\t\t\t\tthis.indexBuffer.length = 0;\n\t\t\t\tthis._geometryData = null;\n\t\t}\n\t\t_destroyIndexBuffer(index) {\n\t\t\t\tif (this.indexBuffer[index]) {\n\t\t\t\t\t\tthis.indexBuffer[index].destroy();\n\t\t\t\t\t\tthis.indexBuffer[index] = null;\n\t\t\t\t}\n\t\t}\n\t\t_initBoneAabbs(morphTargets) {\n\t\t\t\tthis.boneAabb = [];\n\t\t\t\tthis.boneUsed = [];\n\t\t\t\tlet x, y, z;\n\t\t\t\tlet bMax, bMin;\n\t\t\t\tconst boneMin = [];\n\t\t\t\tconst boneMax = [];\n\t\t\t\tconst boneUsed = this.boneUsed;\n\t\t\t\tconst numBones = this.skin.boneNames.length;\n\t\t\t\tlet maxMorphX, maxMorphY, maxMorphZ;\n\t\t\t\tfor(let i = 0; i < numBones; i++){\n\t\t\t\t\t\tboneMin[i] = new Vec3(Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE);\n\t\t\t\t\t\tboneMax[i] = new Vec3(-Number.MAX_VALUE, -Number.MAX_VALUE, -Number.MAX_VALUE);\n\t\t\t\t}\n\t\t\t\tconst iterator = new VertexIterator(this.vertexBuffer);\n\t\t\t\tconst posElement = iterator.element[SEMANTIC_POSITION];\n\t\t\t\tconst weightsElement = iterator.element[SEMANTIC_BLENDWEIGHT];\n\t\t\t\tconst indicesElement = iterator.element[SEMANTIC_BLENDINDICES];\n\t\t\t\tconst numVerts = this.vertexBuffer.numVertices;\n\t\t\t\tfor(let j = 0; j < numVerts; j++){\n\t\t\t\t\t\tfor(let k = 0; k < 4; k++){\n\t\t\t\t\t\t\t\tconst boneWeight = weightsElement.array[weightsElement.index + k];\n\t\t\t\t\t\t\t\tif (boneWeight > 0) {\n\t\t\t\t\t\t\t\t\t\tconst boneIndex = indicesElement.array[indicesElement.index + k];\n\t\t\t\t\t\t\t\t\t\tboneUsed[boneIndex] = true;\n\t\t\t\t\t\t\t\t\t\tx = posElement.array[posElement.index];\n\t\t\t\t\t\t\t\t\t\ty = posElement.array[posElement.index + 1];\n\t\t\t\t\t\t\t\t\t\tz = posElement.array[posElement.index + 2];\n\t\t\t\t\t\t\t\t\t\tbMax = boneMax[boneIndex];\n\t\t\t\t\t\t\t\t\t\tbMin = boneMin[boneIndex];\n\t\t\t\t\t\t\t\t\t\tif (bMin.x > x) bMin.x = x;\n\t\t\t\t\t\t\t\t\t\tif (bMin.y > y) bMin.y = y;\n\t\t\t\t\t\t\t\t\t\tif (bMin.z > z) bMin.z = z;\n\t\t\t\t\t\t\t\t\t\tif (bMax.x < x) bMax.x = x;\n\t\t\t\t\t\t\t\t\t\tif (bMax.y < y) bMax.y = y;\n\t\t\t\t\t\t\t\t\t\tif (bMax.z < z) bMax.z = z;\n\t\t\t\t\t\t\t\t\t\tif (morphTargets) {\n\t\t\t\t\t\t\t\t\t\t\t\tlet minMorphX = maxMorphX = x;\n\t\t\t\t\t\t\t\t\t\t\t\tlet minMorphY = maxMorphY = y;\n\t\t\t\t\t\t\t\t\t\t\t\tlet minMorphZ = maxMorphZ = z;\n\t\t\t\t\t\t\t\t\t\t\t\tfor(let l = 0; l < morphTargets.length; l++){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst target = morphTargets[l];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst dx = target.deltaPositions[j * 3];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst dy = target.deltaPositions[j * 3 + 1];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst dz = target.deltaPositions[j * 3 + 2];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (dx < 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tminMorphX += dx;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tmaxMorphX += dx;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (dy < 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tminMorphY += dy;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tmaxMorphY += dy;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (dz < 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tminMorphZ += dz;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tmaxMorphZ += dz;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tif (bMin.x > minMorphX) bMin.x = minMorphX;\n\t\t\t\t\t\t\t\t\t\t\t\tif (bMin.y > minMorphY) bMin.y = minMorphY;\n\t\t\t\t\t\t\t\t\t\t\t\tif (bMin.z > minMorphZ) bMin.z = minMorphZ;\n\t\t\t\t\t\t\t\t\t\t\t\tif (bMax.x < maxMorphX) bMax.x = maxMorphX;\n\t\t\t\t\t\t\t\t\t\t\t\tif (bMax.y < maxMorphY) bMax.y = maxMorphY;\n\t\t\t\t\t\t\t\t\t\t\t\tif (bMax.z < maxMorphZ) bMax.z = maxMorphZ;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\titerator.next();\n\t\t\t\t}\n\t\t\t\tconst positionElement = this.vertexBuffer.getFormat().elements.find((e)=>e.name === SEMANTIC_POSITION);\n\t\t\t\tif (positionElement && positionElement.normalize) {\n\t\t\t\t\t\tconst func = (()=>{\n\t\t\t\t\t\t\t\tswitch(positionElement.dataType){\n\t\t\t\t\t\t\t\t\t\tcase TYPE_INT8:\n\t\t\t\t\t\t\t\t\t\t\t\treturn (x)=>Math.max(x / 127.0, -1);\n\t\t\t\t\t\t\t\t\t\tcase TYPE_UINT8:\n\t\t\t\t\t\t\t\t\t\t\t\treturn (x)=>x / 255.0;\n\t\t\t\t\t\t\t\t\t\tcase TYPE_INT16:\n\t\t\t\t\t\t\t\t\t\t\t\treturn (x)=>Math.max(x / 32767.0, -1);\n\t\t\t\t\t\t\t\t\t\tcase TYPE_UINT16:\n\t\t\t\t\t\t\t\t\t\t\t\treturn (x)=>x / 65535.0;\n\t\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\t\t\treturn (x)=>x;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})();\n\t\t\t\t\t\tfor(let i = 0; i < numBones; i++){\n\t\t\t\t\t\t\t\tif (boneUsed[i]) {\n\t\t\t\t\t\t\t\t\t\tconst min = boneMin[i];\n\t\t\t\t\t\t\t\t\t\tconst max = boneMax[i];\n\t\t\t\t\t\t\t\t\t\tmin.set(func(min.x), func(min.y), func(min.z));\n\t\t\t\t\t\t\t\t\t\tmax.set(func(max.x), func(max.y), func(max.z));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < numBones; i++){\n\t\t\t\t\t\tconst aabb = new BoundingBox();\n\t\t\t\t\t\taabb.setMinMax(boneMin[i], boneMax[i]);\n\t\t\t\t\t\tthis.boneAabb.push(aabb);\n\t\t\t\t}\n\t\t}\n\t\t_initGeometryData() {\n\t\t\t\tif (!this._geometryData) {\n\t\t\t\t\t\tthis._geometryData = new GeometryData();\n\t\t\t\t\t\tif (this.vertexBuffer) {\n\t\t\t\t\t\t\t\tthis._geometryData.vertexCount = this.vertexBuffer.numVertices;\n\t\t\t\t\t\t\t\tthis._geometryData.maxVertices = this.vertexBuffer.numVertices;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.indexBuffer.length > 0 && this.indexBuffer[0]) {\n\t\t\t\t\t\t\t\tthis._geometryData.indexCount = this.indexBuffer[0].numIndices;\n\t\t\t\t\t\t\t\tthis._geometryData.maxIndices = this.indexBuffer[0].numIndices;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tclear(verticesDynamic, indicesDynamic, maxVertices = 0, maxIndices = 0) {\n\t\t\t\tthis._initGeometryData();\n\t\t\t\tthis._geometryData.initDefaults();\n\t\t\t\tthis._geometryData.recreate = true;\n\t\t\t\tthis._geometryData.maxVertices = maxVertices;\n\t\t\t\tthis._geometryData.maxIndices = maxIndices;\n\t\t\t\tthis._geometryData.verticesUsage = verticesDynamic ? BUFFER_STATIC : BUFFER_DYNAMIC;\n\t\t\t\tthis._geometryData.indicesUsage = indicesDynamic ? BUFFER_STATIC : BUFFER_DYNAMIC;\n\t\t}\n\t\tsetVertexStream(semantic, data, componentCount, numVertices, dataType = TYPE_FLOAT32, dataTypeNormalize = false, asInt = false) {\n\t\t\t\tthis._initGeometryData();\n\t\t\t\tconst vertexCount = numVertices || data.length / componentCount;\n\t\t\t\tthis._geometryData._changeVertexCount(vertexCount, semantic);\n\t\t\t\tthis._geometryData.vertexStreamsUpdated = true;\n\t\t\t\tthis._geometryData.vertexStreamDictionary[semantic] = new GeometryVertexStream(data, componentCount, dataType, dataTypeNormalize, asInt);\n\t\t}\n\t\tgetVertexStream(semantic, data) {\n\t\t\t\tlet count = 0;\n\t\t\t\tlet done = false;\n\t\t\t\tif (this._geometryData) {\n\t\t\t\t\t\tconst stream = this._geometryData.vertexStreamDictionary[semantic];\n\t\t\t\t\t\tif (stream) {\n\t\t\t\t\t\t\t\tdone = true;\n\t\t\t\t\t\t\t\tcount = this._geometryData.vertexCount;\n\t\t\t\t\t\t\t\tif (ArrayBuffer.isView(data)) {\n\t\t\t\t\t\t\t\t\t\tdata.set(stream.data);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tdata.length = 0;\n\t\t\t\t\t\t\t\t\t\tdata.push(stream.data);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!done) {\n\t\t\t\t\t\tif (this.vertexBuffer) {\n\t\t\t\t\t\t\t\tconst iterator = new VertexIterator(this.vertexBuffer);\n\t\t\t\t\t\t\t\tcount = iterator.readData(semantic, data);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn count;\n\t\t}\n\t\tsetPositions(positions, componentCount = GeometryData.DEFAULT_COMPONENTS_POSITION, numVertices) {\n\t\t\t\tthis.setVertexStream(SEMANTIC_POSITION, positions, componentCount, numVertices, TYPE_FLOAT32, false);\n\t\t}\n\t\tsetNormals(normals, componentCount = GeometryData.DEFAULT_COMPONENTS_NORMAL, numVertices) {\n\t\t\t\tthis.setVertexStream(SEMANTIC_NORMAL, normals, componentCount, numVertices, TYPE_FLOAT32, false);\n\t\t}\n\t\tsetUvs(channel, uvs, componentCount = GeometryData.DEFAULT_COMPONENTS_UV, numVertices) {\n\t\t\t\tthis.setVertexStream(SEMANTIC_TEXCOORD + channel, uvs, componentCount, numVertices, TYPE_FLOAT32, false);\n\t\t}\n\t\tsetColors(colors, componentCount = GeometryData.DEFAULT_COMPONENTS_COLORS, numVertices) {\n\t\t\t\tthis.setVertexStream(SEMANTIC_COLOR, colors, componentCount, numVertices, TYPE_FLOAT32, false);\n\t\t}\n\t\tsetColors32(colors, numVertices) {\n\t\t\t\tthis.setVertexStream(SEMANTIC_COLOR, colors, GeometryData.DEFAULT_COMPONENTS_COLORS, numVertices, TYPE_UINT8, true);\n\t\t}\n\t\tsetIndices(indices, numIndices) {\n\t\t\t\tthis._initGeometryData();\n\t\t\t\tthis._geometryData.indexStreamUpdated = true;\n\t\t\t\tthis._geometryData.indices = indices;\n\t\t\t\tthis._geometryData.indexCount = numIndices || indices.length;\n\t\t}\n\t\tgetPositions(positions) {\n\t\t\t\treturn this.getVertexStream(SEMANTIC_POSITION, positions);\n\t\t}\n\t\tgetNormals(normals) {\n\t\t\t\treturn this.getVertexStream(SEMANTIC_NORMAL, normals);\n\t\t}\n\t\tgetUvs(channel, uvs) {\n\t\t\t\treturn this.getVertexStream(SEMANTIC_TEXCOORD + channel, uvs);\n\t\t}\n\t\tgetColors(colors) {\n\t\t\t\treturn this.getVertexStream(SEMANTIC_COLOR, colors);\n\t\t}\n\t\tgetIndices(indices) {\n\t\t\t\tlet count = 0;\n\t\t\t\tif (this._geometryData && this._geometryData.indices) {\n\t\t\t\t\t\tconst streamIndices = this._geometryData.indices;\n\t\t\t\t\t\tcount = this._geometryData.indexCount;\n\t\t\t\t\t\tif (ArrayBuffer.isView(indices)) {\n\t\t\t\t\t\t\t\tindices.set(streamIndices);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tindices.length = 0;\n\t\t\t\t\t\t\t\tfor(let i = 0, il = streamIndices.length; i < il; i++){\n\t\t\t\t\t\t\t\t\t\tindices.push(streamIndices[i]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tif (this.indexBuffer.length > 0 && this.indexBuffer[0]) {\n\t\t\t\t\t\t\t\tconst indexBuffer = this.indexBuffer[0];\n\t\t\t\t\t\t\t\tcount = indexBuffer.readData(indices);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn count;\n\t\t}\n\t\tupdate(primitiveType = PRIMITIVE_TRIANGLES, updateBoundingBox = true) {\n\t\t\t\tif (this._geometryData) {\n\t\t\t\t\t\tif (updateBoundingBox) {\n\t\t\t\t\t\t\t\tconst stream = this._geometryData.vertexStreamDictionary[SEMANTIC_POSITION];\n\t\t\t\t\t\t\t\tif (stream) {\n\t\t\t\t\t\t\t\t\t\tif (stream.componentCount === 3) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._aabb.compute(stream.data, this._geometryData.vertexCount);\n\t\t\t\t\t\t\t\t\t\t\t\tthis._aabbVer++;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlet destroyVB = this._geometryData.recreate;\n\t\t\t\t\t\tif (this._geometryData.vertexCount > this._geometryData.maxVertices) {\n\t\t\t\t\t\t\t\tdestroyVB = true;\n\t\t\t\t\t\t\t\tthis._geometryData.maxVertices = this._geometryData.vertexCount;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (destroyVB) {\n\t\t\t\t\t\t\t\tif (this.vertexBuffer) {\n\t\t\t\t\t\t\t\t\t\tthis.vertexBuffer.destroy();\n\t\t\t\t\t\t\t\t\t\tthis.vertexBuffer = null;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlet destroyIB = this._geometryData.recreate;\n\t\t\t\t\t\tif (this._geometryData.indexCount > this._geometryData.maxIndices) {\n\t\t\t\t\t\t\t\tdestroyIB = true;\n\t\t\t\t\t\t\t\tthis._geometryData.maxIndices = this._geometryData.indexCount;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (destroyIB) {\n\t\t\t\t\t\t\t\tif (this.indexBuffer.length > 0 && this.indexBuffer[0]) {\n\t\t\t\t\t\t\t\t\t\tthis.indexBuffer[0].destroy();\n\t\t\t\t\t\t\t\t\t\tthis.indexBuffer[0] = null;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this._geometryData.vertexStreamsUpdated) {\n\t\t\t\t\t\t\t\tthis._updateVertexBuffer();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this._geometryData.indexStreamUpdated) {\n\t\t\t\t\t\t\t\tthis._updateIndexBuffer();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.primitive[0].type = primitiveType;\n\t\t\t\t\t\tif (this.indexBuffer.length > 0 && this.indexBuffer[0]) {\n\t\t\t\t\t\t\t\tif (this._geometryData.indexStreamUpdated) {\n\t\t\t\t\t\t\t\t\t\tthis.primitive[0].count = this._geometryData.indexCount;\n\t\t\t\t\t\t\t\t\t\tthis.primitive[0].indexed = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (this._geometryData.vertexStreamsUpdated) {\n\t\t\t\t\t\t\t\t\t\tthis.primitive[0].count = this._geometryData.vertexCount;\n\t\t\t\t\t\t\t\t\t\tthis.primitive[0].indexed = false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._geometryData.vertexCount = 0;\n\t\t\t\t\t\tthis._geometryData.indexCount = 0;\n\t\t\t\t\t\tthis._geometryData.vertexStreamsUpdated = false;\n\t\t\t\t\t\tthis._geometryData.indexStreamUpdated = false;\n\t\t\t\t\t\tthis._geometryData.recreate = false;\n\t\t\t\t\t\tthis.updateRenderStates();\n\t\t\t\t}\n\t\t}\n\t\t_buildVertexFormat(vertexCount) {\n\t\t\t\tconst vertexDesc = [];\n\t\t\t\tfor(const semantic in this._geometryData.vertexStreamDictionary){\n\t\t\t\t\t\tconst stream = this._geometryData.vertexStreamDictionary[semantic];\n\t\t\t\t\t\tvertexDesc.push({\n\t\t\t\t\t\t\t\tsemantic: semantic,\n\t\t\t\t\t\t\t\tcomponents: stream.componentCount,\n\t\t\t\t\t\t\t\ttype: stream.dataType,\n\t\t\t\t\t\t\t\tnormalize: stream.dataTypeNormalize,\n\t\t\t\t\t\t\t\tasInt: stream.asInt\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn new VertexFormat(this.device, vertexDesc, vertexCount);\n\t\t}\n\t\t_updateVertexBuffer() {\n\t\t\t\tif (!this.vertexBuffer) {\n\t\t\t\t\t\tconst allocateVertexCount = this._geometryData.maxVertices;\n\t\t\t\t\t\tconst format = this._buildVertexFormat(allocateVertexCount);\n\t\t\t\t\t\tthis.vertexBuffer = new VertexBuffer(this.device, format, allocateVertexCount, {\n\t\t\t\t\t\t\t\tusage: this._geometryData.verticesUsage,\n\t\t\t\t\t\t\t\tstorage: this._storageVertex\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tconst iterator = new VertexIterator(this.vertexBuffer);\n\t\t\t\tconst numVertices = this._geometryData.vertexCount;\n\t\t\t\tfor(const semantic in this._geometryData.vertexStreamDictionary){\n\t\t\t\t\t\tconst stream = this._geometryData.vertexStreamDictionary[semantic];\n\t\t\t\t\t\titerator.writeData(semantic, stream.data, numVertices);\n\t\t\t\t\t\tdelete this._geometryData.vertexStreamDictionary[semantic];\n\t\t\t\t}\n\t\t\t\titerator.end();\n\t\t}\n\t\t_updateIndexBuffer() {\n\t\t\t\tif (this.indexBuffer.length <= 0 || !this.indexBuffer[0]) {\n\t\t\t\t\t\tconst maxVertices = this._geometryData.maxVertices;\n\t\t\t\t\t\tconst createFormat = maxVertices > 0xffff || maxVertices === 0 ? INDEXFORMAT_UINT32 : INDEXFORMAT_UINT16;\n\t\t\t\t\t\tconst options = this._storageIndex ? {\n\t\t\t\t\t\t\t\tstorage: true\n\t\t\t\t\t\t} : undefined;\n\t\t\t\t\t\tthis.indexBuffer[0] = new IndexBuffer(this.device, createFormat, this._geometryData.maxIndices, this._geometryData.indicesUsage, undefined, options);\n\t\t\t\t}\n\t\t\t\tconst srcIndices = this._geometryData.indices;\n\t\t\t\tif (srcIndices) {\n\t\t\t\t\t\tconst indexBuffer = this.indexBuffer[0];\n\t\t\t\t\t\tindexBuffer.writeData(srcIndices, this._geometryData.indexCount);\n\t\t\t\t\t\tthis._geometryData.indices = null;\n\t\t\t\t}\n\t\t}\n\t\tprepareRenderState(renderStyle) {\n\t\t\t\tif (renderStyle === RENDERSTYLE_WIREFRAME) {\n\t\t\t\t\t\tthis.generateWireframe();\n\t\t\t\t} else if (renderStyle === RENDERSTYLE_POINTS) {\n\t\t\t\t\t\tthis.primitive[RENDERSTYLE_POINTS] = {\n\t\t\t\t\t\t\t\ttype: PRIMITIVE_POINTS,\n\t\t\t\t\t\t\t\tbase: 0,\n\t\t\t\t\t\t\t\tbaseVertex: 0,\n\t\t\t\t\t\t\t\tcount: this.vertexBuffer ? this.vertexBuffer.numVertices : 0,\n\t\t\t\t\t\t\t\tindexed: false\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t}\n\t\tupdateRenderStates() {\n\t\t\t\tif (this.primitive[RENDERSTYLE_POINTS]) {\n\t\t\t\t\t\tthis.prepareRenderState(RENDERSTYLE_POINTS);\n\t\t\t\t}\n\t\t\t\tif (this.primitive[RENDERSTYLE_WIREFRAME]) {\n\t\t\t\t\t\tthis.prepareRenderState(RENDERSTYLE_WIREFRAME);\n\t\t\t\t}\n\t\t}\n\t\tgenerateWireframe() {\n\t\t\t\tthis._destroyIndexBuffer(RENDERSTYLE_WIREFRAME);\n\t\t\t\tconst numVertices = this.vertexBuffer.numVertices;\n\t\t\t\tlet lines;\n\t\t\t\tlet format;\n\t\t\t\tif (this.indexBuffer.length > 0 && this.indexBuffer[0]) {\n\t\t\t\t\t\tconst offsets = [\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\t\t1\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t1,\n\t\t\t\t\t\t\t\t\t\t2\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t2,\n\t\t\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t];\n\t\t\t\t\t\tconst base = this.primitive[RENDERSTYLE_SOLID].base;\n\t\t\t\t\t\tconst count = this.primitive[RENDERSTYLE_SOLID].count;\n\t\t\t\t\t\tconst baseVertex = this.primitive[RENDERSTYLE_SOLID].baseVertex || 0;\n\t\t\t\t\t\tconst indexBuffer = this.indexBuffer[RENDERSTYLE_SOLID];\n\t\t\t\t\t\tconst indicesArrayType = typedArrayIndexFormats[indexBuffer.format];\n\t\t\t\t\t\tconst srcIndices = new indicesArrayType(indexBuffer.storage);\n\t\t\t\t\t\tconst tmpIndices = new indicesArrayType(count * 2);\n\t\t\t\t\t\tconst seen = new Set();\n\t\t\t\t\t\tlet len = 0;\n\t\t\t\t\t\tfor(let j = base; j < base + count; j += 3){\n\t\t\t\t\t\t\t\tfor(let k = 0; k < 3; k++){\n\t\t\t\t\t\t\t\t\t\tconst i1 = srcIndices[j + offsets[k][0]] + baseVertex;\n\t\t\t\t\t\t\t\t\t\tconst i2 = srcIndices[j + offsets[k][1]] + baseVertex;\n\t\t\t\t\t\t\t\t\t\tconst hash = i1 > i2 ? i2 * numVertices + i1 : i1 * numVertices + i2;\n\t\t\t\t\t\t\t\t\t\tif (!seen.has(hash)) {\n\t\t\t\t\t\t\t\t\t\t\t\tseen.add(hash);\n\t\t\t\t\t\t\t\t\t\t\t\ttmpIndices[len++] = i1;\n\t\t\t\t\t\t\t\t\t\t\t\ttmpIndices[len++] = i2;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tseen.clear();\n\t\t\t\t\t\tformat = indexBuffer.format;\n\t\t\t\t\t\tlines = tmpIndices.slice(0, len);\n\t\t\t\t} else {\n\t\t\t\t\t\tconst safeNumVertices = numVertices - numVertices % 3;\n\t\t\t\t\t\tconst count = safeNumVertices / 3 * 6;\n\t\t\t\t\t\tformat = count > 65535 ? INDEXFORMAT_UINT32 : INDEXFORMAT_UINT16;\n\t\t\t\t\t\tlines = count > 65535 ? new Uint32Array(count) : new Uint16Array(count);\n\t\t\t\t\t\tlet idx = 0;\n\t\t\t\t\t\tfor(let i = 0; i < safeNumVertices; i += 3){\n\t\t\t\t\t\t\t\tlines[idx++] = i;\n\t\t\t\t\t\t\t\tlines[idx++] = i + 1;\n\t\t\t\t\t\t\t\tlines[idx++] = i + 1;\n\t\t\t\t\t\t\t\tlines[idx++] = i + 2;\n\t\t\t\t\t\t\t\tlines[idx++] = i + 2;\n\t\t\t\t\t\t\t\tlines[idx++] = i;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst wireBuffer = new IndexBuffer(this.vertexBuffer.device, format, lines.length, BUFFER_STATIC, lines.buffer);\n\t\t\t\tthis.primitive[RENDERSTYLE_WIREFRAME] = {\n\t\t\t\t\t\ttype: PRIMITIVE_LINES,\n\t\t\t\t\t\tbase: 0,\n\t\t\t\t\t\tbaseVertex: 0,\n\t\t\t\t\t\tcount: lines.length,\n\t\t\t\t\t\tindexed: true\n\t\t\t\t};\n\t\t\t\tthis.indexBuffer[RENDERSTYLE_WIREFRAME] = wireBuffer;\n\t\t}\n}\n\nconst defaultMaterialDeviceCache = new DeviceCache();\nfunction getDefaultMaterial(device) {\n\t\tconst material = defaultMaterialDeviceCache.get(device);\n\t\treturn material;\n}\nfunction setDefaultMaterial(device, material) {\n\t\tdefaultMaterialDeviceCache.get(device, ()=>{\n\t\t\t\treturn material;\n\t\t});\n}\n\nclass RefCountedCache {\n\t\tdestroy() {\n\t\t\t\tthis.cache.forEach((refCount, object)=>{\n\t\t\t\t\t\tobject.destroy();\n\t\t\t\t});\n\t\t\t\tthis.cache.clear();\n\t\t}\n\t\tincRef(object) {\n\t\t\t\tconst refCount = (this.cache.get(object) || 0) + 1;\n\t\t\t\tthis.cache.set(object, refCount);\n\t\t}\n\t\tdecRef(object) {\n\t\t\t\tif (object) {\n\t\t\t\t\t\tlet refCount = this.cache.get(object);\n\t\t\t\t\t\tif (refCount) {\n\t\t\t\t\t\t\t\trefCount--;\n\t\t\t\t\t\t\t\tif (refCount === 0) {\n\t\t\t\t\t\t\t\t\t\tthis.cache.delete(object);\n\t\t\t\t\t\t\t\t\t\tobject.destroy();\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis.cache.set(object, refCount);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tconstructor(){\n\t\t\t\tthis.cache = new Map();\n\t\t}\n}\n\nclass LightmapCache {\n\t\tstatic{\n\t\t\t\tthis.cache = new RefCountedCache();\n\t\t}\n\t\tstatic incRef(texture) {\n\t\t\t\tthis.cache.incRef(texture);\n\t\t}\n\t\tstatic decRef(texture) {\n\t\t\t\tthis.cache.decRef(texture);\n\t\t}\n\t\tstatic destroy() {\n\t\t\t\tthis.cache.destroy();\n\t\t}\n}\n\nlet id$4 = 0;\nconst _tmpAabb = new BoundingBox();\nconst _tempBoneAabb = new BoundingBox();\nconst _tempSphere = new BoundingSphere();\nconst _meshSet = new Set();\nconst lookupHashes = new Uint32Array(4);\nclass InstancingData {\n\t\tconstructor(numObjects){\n\t\t\t\tthis.vertexBuffer = null;\n\t\t\t\tthis._destroyVertexBuffer = false;\n\t\t\t\tthis.count = numObjects;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tif (this._destroyVertexBuffer) {\n\t\t\t\t\t\tthis.vertexBuffer?.destroy();\n\t\t\t\t}\n\t\t\t\tthis.vertexBuffer = null;\n\t\t}\n}\nclass ShaderInstance {\n\t\tgetBindGroup(device) {\n\t\t\t\tif (!this.bindGroup) {\n\t\t\t\t\t\tconst shader = this.shader;\n\t\t\t\t\t\tconst bindGroupFormat = shader.meshBindGroupFormat;\n\t\t\t\t\t\tthis.bindGroup = new BindGroup(device, bindGroupFormat);\n\t\t\t\t}\n\t\t\t\treturn this.bindGroup;\n\t\t}\n\t\tgetUniformBuffer(device) {\n\t\t\t\tif (!this.uniformBuffer) {\n\t\t\t\t\t\tconst shader = this.shader;\n\t\t\t\t\t\tconst ubFormat = shader.meshUniformBufferFormat;\n\t\t\t\t\t\tthis.uniformBuffer = new UniformBuffer(device, ubFormat, false);\n\t\t\t\t}\n\t\t\t\treturn this.uniformBuffer;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.bindGroup?.destroy();\n\t\t\t\tthis.bindGroup = null;\n\t\t\t\tthis.uniformBuffer?.destroy();\n\t\t\t\tthis.uniformBuffer = null;\n\t\t}\n\t\tconstructor(){\n\t\t\t\tthis.bindGroup = null;\n\t\t\t\tthis.uniformBuffer = null;\n\t\t}\n}\nclass MeshInstance {\n\t\tconstructor(mesh, material, node = null){\n\t\t\t\tthis.castShadow = false;\n\t\t\t\tthis.shadowCascadeMask = SHADOW_CASCADE_ALL;\n\t\t\t\tthis.cull = true;\n\t\t\t\tthis.drawOrder = 0;\n\t\t\t\tthis._drawBucket = 127;\n\t\t\t\tthis.visible = true;\n\t\t\t\tthis.visibleThisFrame = false;\n\t\t\t\tthis.flipFacesFactor = 1;\n\t\t\t\tthis.gsplatInstance = null;\n\t\t\t\tthis.id = id$4++;\n\t\t\t\tthis.isVisibleFunc = null;\n\t\t\t\tthis.instancingData = null;\n\t\t\t\tthis.indirectData = null;\n\t\t\t\tthis.drawCommands = null;\n\t\t\t\tthis.meshMetaData = null;\n\t\t\t\tthis.parameters = {};\n\t\t\t\tthis.pick = true;\n\t\t\t\tthis.stencilFront = null;\n\t\t\t\tthis.stencilBack = null;\n\t\t\t\tthis.transparent = false;\n\t\t\t\tthis._aabb = new BoundingBox();\n\t\t\t\tthis._aabbVer = -1;\n\t\t\t\tthis._aabbMeshVer = -1;\n\t\t\t\tthis._customAabb = null;\n\t\t\t\tthis._updateAabb = true;\n\t\t\t\tthis._updateAabbFunc = null;\n\t\t\t\tthis._sortKeyShadow = 0;\n\t\t\t\tthis._sortKeyForward = 0;\n\t\t\t\tthis._sortKeyDynamic = 0;\n\t\t\t\tthis._layer = LAYER_WORLD;\n\t\t\t\tthis._material = null;\n\t\t\t\tthis._skinInstance = null;\n\t\t\t\tthis._morphInstance = null;\n\t\t\t\tthis._receiveShadow = true;\n\t\t\t\tthis._renderStyle = RENDERSTYLE_SOLID;\n\t\t\t\tthis._screenSpace = false;\n\t\t\t\tthis._shaderCache = new Map();\n\t\t\t\tthis._shaderDefs = MASK_AFFECT_DYNAMIC << 16;\n\t\t\t\tthis._calculateSortDistance = null;\n\t\t\t\tthis.node = node;\n\t\t\t\tthis._mesh = mesh;\n\t\t\t\tmesh.incRefCount();\n\t\t\t\tthis.material = material;\n\t\t\t\tif (mesh.vertexBuffer) {\n\t\t\t\t\t\tconst format = mesh.vertexBuffer.format;\n\t\t\t\t\t\tthis._shaderDefs |= format.hasUv0 ? SHADERDEF_UV0 : 0;\n\t\t\t\t\t\tthis._shaderDefs |= format.hasUv1 ? SHADERDEF_UV1 : 0;\n\t\t\t\t\t\tthis._shaderDefs |= format.hasColor ? SHADERDEF_VCOLOR : 0;\n\t\t\t\t\t\tthis._shaderDefs |= format.hasTangents ? SHADERDEF_TANGENTS : 0;\n\t\t\t\t}\n\t\t\t\tthis.updateKey();\n\t\t}\n\t\tset drawBucket(bucket) {\n\t\t\t\tthis._drawBucket = Math.floor(bucket) & 0xff;\n\t\t\t\tthis.updateKey();\n\t\t}\n\t\tget drawBucket() {\n\t\t\t\treturn this._drawBucket;\n\t\t}\n\t\tset renderStyle(renderStyle) {\n\t\t\t\tthis._renderStyle = renderStyle;\n\t\t\t\tthis.mesh.prepareRenderState(renderStyle);\n\t\t}\n\t\tget renderStyle() {\n\t\t\t\treturn this._renderStyle;\n\t\t}\n\t\tset mesh(mesh) {\n\t\t\t\tif (mesh === this._mesh) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this._mesh) {\n\t\t\t\t\t\tthis._mesh.decRefCount();\n\t\t\t\t}\n\t\t\t\tthis._mesh = mesh;\n\t\t\t\tif (mesh) {\n\t\t\t\t\t\tmesh.incRefCount();\n\t\t\t\t}\n\t\t}\n\t\tget mesh() {\n\t\t\t\treturn this._mesh;\n\t\t}\n\t\tset aabb(aabb) {\n\t\t\t\tthis._aabb = aabb;\n\t\t}\n\t\tget aabb() {\n\t\t\t\tif (!this._updateAabb) {\n\t\t\t\t\t\treturn this._aabb;\n\t\t\t\t}\n\t\t\t\tif (this._updateAabbFunc) {\n\t\t\t\t\t\treturn this._updateAabbFunc(this._aabb);\n\t\t\t\t}\n\t\t\t\tlet localAabb = this._customAabb;\n\t\t\t\tlet toWorldSpace = !!localAabb;\n\t\t\t\tif (!localAabb) {\n\t\t\t\t\t\tlocalAabb = _tmpAabb;\n\t\t\t\t\t\tif (this.skinInstance) {\n\t\t\t\t\t\t\t\tif (!this.mesh.boneAabb) {\n\t\t\t\t\t\t\t\t\t\tconst morphTargets = this._morphInstance ? this._morphInstance.morph._targets : null;\n\t\t\t\t\t\t\t\t\t\tthis.mesh._initBoneAabbs(morphTargets);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst boneUsed = this.mesh.boneUsed;\n\t\t\t\t\t\t\t\tlet first = true;\n\t\t\t\t\t\t\t\tfor(let i = 0; i < this.mesh.boneAabb.length; i++){\n\t\t\t\t\t\t\t\t\t\tif (boneUsed[i]) {\n\t\t\t\t\t\t\t\t\t\t\t\t_tempBoneAabb.setFromTransformedAabb(this.mesh.boneAabb[i], this.skinInstance.matrices[i]);\n\t\t\t\t\t\t\t\t\t\t\t\tif (first) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfirst = false;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlocalAabb.center.copy(_tempBoneAabb.center);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlocalAabb.halfExtents.copy(_tempBoneAabb.halfExtents);\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlocalAabb.add(_tempBoneAabb);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\ttoWorldSpace = true;\n\t\t\t\t\t\t} else if (this.node._aabbVer !== this._aabbVer || this.mesh._aabbVer !== this._aabbMeshVer) {\n\t\t\t\t\t\t\t\tif (this.mesh) {\n\t\t\t\t\t\t\t\t\t\tlocalAabb.center.copy(this.mesh.aabb.center);\n\t\t\t\t\t\t\t\t\t\tlocalAabb.halfExtents.copy(this.mesh.aabb.halfExtents);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tlocalAabb.center.set(0, 0, 0);\n\t\t\t\t\t\t\t\t\t\tlocalAabb.halfExtents.set(0, 0, 0);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (this.mesh && this.mesh.morph) {\n\t\t\t\t\t\t\t\t\t\tconst morphAabb = this.mesh.morph.aabb;\n\t\t\t\t\t\t\t\t\t\tlocalAabb._expand(morphAabb.getMin(), morphAabb.getMax());\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\ttoWorldSpace = true;\n\t\t\t\t\t\t\t\tthis._aabbVer = this.node._aabbVer;\n\t\t\t\t\t\t\t\tthis._aabbMeshVer = this.mesh._aabbVer;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (toWorldSpace) {\n\t\t\t\t\t\tthis._aabb.setFromTransformedAabb(localAabb, this.node.getWorldTransform());\n\t\t\t\t}\n\t\t\t\treturn this._aabb;\n\t\t}\n\t\tclearShaders() {\n\t\t\t\tthis._shaderCache.forEach((shaderInstance)=>{\n\t\t\t\t\t\tshaderInstance.destroy();\n\t\t\t\t});\n\t\t\t\tthis._shaderCache.clear();\n\t\t}\n\t\tgetShaderInstance(shaderPass, lightHash, scene, cameraShaderParams, viewUniformFormat, viewBindGroupFormat, sortedLights) {\n\t\t\t\tconst shaderDefs = this._shaderDefs;\n\t\t\t\tlookupHashes[0] = shaderPass;\n\t\t\t\tlookupHashes[1] = lightHash;\n\t\t\t\tlookupHashes[2] = shaderDefs;\n\t\t\t\tlookupHashes[3] = cameraShaderParams.hash;\n\t\t\t\tconst hash = hash32Fnv1a(lookupHashes);\n\t\t\t\tlet shaderInstance = this._shaderCache.get(hash);\n\t\t\t\tif (!shaderInstance) {\n\t\t\t\t\t\tconst mat = this._material;\n\t\t\t\t\t\tshaderInstance = new ShaderInstance();\n\t\t\t\t\t\tshaderInstance.shader = mat.variants.get(hash);\n\t\t\t\t\t\tshaderInstance.hashes = new Uint32Array(lookupHashes);\n\t\t\t\t\t\tif (!shaderInstance.shader) {\n\t\t\t\t\t\t\t\tconst shader = mat.getShaderVariant({\n\t\t\t\t\t\t\t\t\t\tdevice: this.mesh.device,\n\t\t\t\t\t\t\t\t\t\tscene: scene,\n\t\t\t\t\t\t\t\t\t\tobjDefs: shaderDefs,\n\t\t\t\t\t\t\t\t\t\tcameraShaderParams: cameraShaderParams,\n\t\t\t\t\t\t\t\t\t\tpass: shaderPass,\n\t\t\t\t\t\t\t\t\t\tsortedLights: sortedLights,\n\t\t\t\t\t\t\t\t\t\tviewUniformFormat: viewUniformFormat,\n\t\t\t\t\t\t\t\t\t\tviewBindGroupFormat: viewBindGroupFormat,\n\t\t\t\t\t\t\t\t\t\tvertexFormat: this.mesh.vertexBuffer?.format\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tmat.variants.set(hash, shader);\n\t\t\t\t\t\t\t\tshaderInstance.shader = shader;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._shaderCache.set(hash, shaderInstance);\n\t\t\t\t}\n\t\t\t\treturn shaderInstance;\n\t\t}\n\t\tset material(material) {\n\t\t\t\tthis.clearShaders();\n\t\t\t\tconst prevMat = this._material;\n\t\t\t\tif (prevMat) {\n\t\t\t\t\t\tprevMat.removeMeshInstanceRef(this);\n\t\t\t\t}\n\t\t\t\tthis._material = material;\n\t\t\t\tif (material) {\n\t\t\t\t\t\tmaterial.addMeshInstanceRef(this);\n\t\t\t\t\t\tthis.transparent = material.transparent;\n\t\t\t\t\t\tthis.updateKey();\n\t\t\t\t}\n\t\t}\n\t\tget material() {\n\t\t\t\treturn this._material;\n\t\t}\n\t\t_updateShaderDefs(shaderDefs) {\n\t\t\t\tif (shaderDefs !== this._shaderDefs) {\n\t\t\t\t\t\tthis._shaderDefs = shaderDefs;\n\t\t\t\t\t\tthis.clearShaders();\n\t\t\t\t}\n\t\t}\n\t\tset calculateSortDistance(calculateSortDistance) {\n\t\t\t\tthis._calculateSortDistance = calculateSortDistance;\n\t\t}\n\t\tget calculateSortDistance() {\n\t\t\t\treturn this._calculateSortDistance;\n\t\t}\n\t\tset receiveShadow(val) {\n\t\t\t\tif (this._receiveShadow !== val) {\n\t\t\t\t\t\tthis._receiveShadow = val;\n\t\t\t\t\t\tthis._updateShaderDefs(val ? this._shaderDefs & ~SHADERDEF_NOSHADOW : this._shaderDefs | SHADERDEF_NOSHADOW);\n\t\t\t\t}\n\t\t}\n\t\tget receiveShadow() {\n\t\t\t\treturn this._receiveShadow;\n\t\t}\n\t\tset batching(val) {\n\t\t\t\tthis._updateShaderDefs(val ? this._shaderDefs | SHADERDEF_BATCH : this._shaderDefs & ~SHADERDEF_BATCH);\n\t\t}\n\t\tget batching() {\n\t\t\t\treturn (this._shaderDefs & SHADERDEF_BATCH) !== 0;\n\t\t}\n\t\tset skinInstance(val) {\n\t\t\t\tthis._skinInstance = val;\n\t\t\t\tthis._updateShaderDefs(val ? this._shaderDefs | SHADERDEF_SKIN : this._shaderDefs & ~SHADERDEF_SKIN);\n\t\t\t\tthis._setupSkinUpdate();\n\t\t}\n\t\tget skinInstance() {\n\t\t\t\treturn this._skinInstance;\n\t\t}\n\t\tset morphInstance(val) {\n\t\t\t\tthis._morphInstance?.destroy();\n\t\t\t\tthis._morphInstance = val;\n\t\t\t\tlet shaderDefs = this._shaderDefs;\n\t\t\t\tshaderDefs = val && val.morph.morphPositions ? shaderDefs | SHADERDEF_MORPH_POSITION : shaderDefs & ~SHADERDEF_MORPH_POSITION;\n\t\t\t\tshaderDefs = val && val.morph.morphNormals ? shaderDefs | SHADERDEF_MORPH_NORMAL : shaderDefs & ~SHADERDEF_MORPH_NORMAL;\n\t\t\t\tshaderDefs = val && val.morph.intRenderFormat ? shaderDefs | SHADERDEF_MORPH_TEXTURE_BASED_INT : shaderDefs & ~SHADERDEF_MORPH_TEXTURE_BASED_INT;\n\t\t\t\tthis._updateShaderDefs(shaderDefs);\n\t\t}\n\t\tget morphInstance() {\n\t\t\t\treturn this._morphInstance;\n\t\t}\n\t\tset screenSpace(val) {\n\t\t\t\tif (this._screenSpace !== val) {\n\t\t\t\t\t\tthis._screenSpace = val;\n\t\t\t\t\t\tthis._updateShaderDefs(val ? this._shaderDefs | SHADERDEF_SCREENSPACE : this._shaderDefs & ~SHADERDEF_SCREENSPACE);\n\t\t\t\t}\n\t\t}\n\t\tget screenSpace() {\n\t\t\t\treturn this._screenSpace;\n\t\t}\n\t\tset key(val) {\n\t\t\t\tthis._sortKeyForward = val;\n\t\t}\n\t\tget key() {\n\t\t\t\treturn this._sortKeyForward;\n\t\t}\n\t\tset mask(val) {\n\t\t\t\tconst toggles = this._shaderDefs & 0x0000FFFF;\n\t\t\t\tthis._updateShaderDefs(toggles | val << 16);\n\t\t}\n\t\tget mask() {\n\t\t\t\treturn this._shaderDefs >> 16;\n\t\t}\n\t\tset instancingCount(value) {\n\t\t\t\tif (this.instancingData) {\n\t\t\t\t\t\tthis.instancingData.count = value;\n\t\t\t\t}\n\t\t}\n\t\tget instancingCount() {\n\t\t\t\treturn this.instancingData ? this.instancingData.count : 0;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tconst mesh = this.mesh;\n\t\t\t\tif (mesh) {\n\t\t\t\t\t\tthis.mesh = null;\n\t\t\t\t\t\tif (mesh.refCount < 1) {\n\t\t\t\t\t\t\t\tmesh.destroy();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.setRealtimeLightmap(MeshInstance.lightmapParamNames[0], null);\n\t\t\t\tthis.setRealtimeLightmap(MeshInstance.lightmapParamNames[1], null);\n\t\t\t\tthis._skinInstance?.destroy();\n\t\t\t\tthis._skinInstance = null;\n\t\t\t\tthis.morphInstance?.destroy();\n\t\t\t\tthis.morphInstance = null;\n\t\t\t\tthis.clearShaders();\n\t\t\t\tthis.material = null;\n\t\t\t\tthis.instancingData?.destroy();\n\t\t\t\tthis.destroyDrawCommands();\n\t\t}\n\t\tdestroyDrawCommands() {\n\t\t\t\tif (this.drawCommands) {\n\t\t\t\t\t\tfor (const cmd of this.drawCommands.values()){\n\t\t\t\t\t\t\t\tcmd?.destroy();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.drawCommands = null;\n\t\t\t\t}\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.lightmapParamNames = [\n\t\t\t\t\t\t'texture_lightMap',\n\t\t\t\t\t\t'texture_dirLightMap'\n\t\t\t\t];\n\t\t}\n\t\tstatic _prepareRenderStyleForArray(meshInstances, renderStyle) {\n\t\t\t\tif (meshInstances) {\n\t\t\t\t\t\tfor(let i = 0; i < meshInstances.length; i++){\n\t\t\t\t\t\t\t\tmeshInstances[i]._renderStyle = renderStyle;\n\t\t\t\t\t\t\t\tconst mesh = meshInstances[i].mesh;\n\t\t\t\t\t\t\t\tif (!_meshSet.has(mesh)) {\n\t\t\t\t\t\t\t\t\t\t_meshSet.add(mesh);\n\t\t\t\t\t\t\t\t\t\tmesh.prepareRenderState(renderStyle);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t_meshSet.clear();\n\t\t\t\t}\n\t\t}\n\t\t_isVisible(camera) {\n\t\t\t\tif (this.visible) {\n\t\t\t\t\t\tif (this.isVisibleFunc) {\n\t\t\t\t\t\t\t\treturn this.isVisibleFunc(camera);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t_tempSphere.center = this.aabb.center;\n\t\t\t\t\t\t_tempSphere.radius = this._aabb.halfExtents.length();\n\t\t\t\t\t\treturn camera.frustum.containsSphere(_tempSphere) > 0;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t}\n\t\tupdateKey() {\n\t\t\t\tconst { material } = this;\n\t\t\t\tthis._sortKeyForward = this._drawBucket << 23 | (material.alphaToCoverage || material.alphaTest ? 0x400000 : 0) | material.id & 0x3fffff;\n\t\t}\n\t\tsetInstancing(vertexBuffer, cull = false) {\n\t\t\t\tif (vertexBuffer) {\n\t\t\t\t\t\tthis.instancingData = new InstancingData(vertexBuffer.numVertices);\n\t\t\t\t\t\tthis.instancingData.vertexBuffer = vertexBuffer;\n\t\t\t\t\t\tvertexBuffer.format.instancing = true;\n\t\t\t\t\t\tthis.cull = cull;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.instancingData = null;\n\t\t\t\t\t\tthis.cull = true;\n\t\t\t\t}\n\t\t\t\tthis._updateShaderDefs(vertexBuffer ? this._shaderDefs | SHADERDEF_INSTANCING : this._shaderDefs & ~SHADERDEF_INSTANCING);\n\t\t}\n\t\tsetIndirect(camera, slot, count = 1) {\n\t\t\t\tconst key = camera?.camera ?? null;\n\t\t\t\tif (slot === -1) {\n\t\t\t\t\t\tthis._deleteDrawCommandsKey(key);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.drawCommands ??= new Map();\n\t\t\t\t\t\tconst cmd = this.drawCommands.get(key) ?? new DrawCommands(this.mesh.device);\n\t\t\t\t\t\tcmd.slotIndex = slot;\n\t\t\t\t\t\tcmd.update(count);\n\t\t\t\t\t\tthis.drawCommands.set(key, cmd);\n\t\t\t\t\t\tconst device = this.mesh.device;\n\t\t\t\t\t\tdevice.mapsToClear.add(this.drawCommands);\n\t\t\t\t}\n\t\t}\n\t\tsetMultiDraw(camera, maxCount = 1) {\n\t\t\t\tconst key = camera?.camera ?? null;\n\t\t\t\tlet cmd;\n\t\t\t\tif (maxCount === 0) {\n\t\t\t\t\t\tthis._deleteDrawCommandsKey(key);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.drawCommands ??= new Map();\n\t\t\t\t\t\tcmd = this.drawCommands.get(key);\n\t\t\t\t\t\tif (!cmd) {\n\t\t\t\t\t\t\t\tconst indexBuffer = this.mesh.indexBuffer?.[0];\n\t\t\t\t\t\t\t\tconst indexFormat = indexBuffer?.format;\n\t\t\t\t\t\t\t\tconst indexSizeBytes = indexFormat !== undefined ? indexFormatByteSize[indexFormat] : 0;\n\t\t\t\t\t\t\t\tcmd = new DrawCommands(this.mesh.device, indexSizeBytes);\n\t\t\t\t\t\t\t\tthis.drawCommands.set(key, cmd);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcmd.allocate(maxCount);\n\t\t\t\t}\n\t\t\t\treturn cmd;\n\t\t}\n\t\t_deleteDrawCommandsKey(key) {\n\t\t\t\tconst cmds = this.drawCommands;\n\t\t\t\tif (cmds) {\n\t\t\t\t\t\tconst cmd = cmds.get(key);\n\t\t\t\t\t\tcmd?.destroy();\n\t\t\t\t\t\tcmds.delete(key);\n\t\t\t\t\t\tif (cmds.size === 0) {\n\t\t\t\t\t\t\t\tthis.destroyDrawCommands();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tgetDrawCommands(camera) {\n\t\t\t\tconst cmds = this.drawCommands;\n\t\t\t\tif (!cmds) return undefined;\n\t\t\t\treturn cmds.get(camera) ?? cmds.get(null);\n\t\t}\n\t\tgetIndirectMetaData() {\n\t\t\t\tconst prim = this.mesh?.primitive[this.renderStyle];\n\t\t\t\tconst data = this.meshMetaData ?? (this.meshMetaData = new Int32Array(4));\n\t\t\t\tdata[0] = prim.count;\n\t\t\t\tdata[1] = prim.base;\n\t\t\t\tdata[2] = prim.baseVertex;\n\t\t\t\treturn data;\n\t\t}\n\t\tensureMaterial(device) {\n\t\t\t\tif (!this.material) {\n\t\t\t\t\t\tthis.material = getDefaultMaterial(device);\n\t\t\t\t}\n\t\t}\n\t\tclearParameters() {\n\t\t\t\tthis.parameters = {};\n\t\t}\n\t\tgetParameters() {\n\t\t\t\treturn this.parameters;\n\t\t}\n\t\tgetParameter(name) {\n\t\t\t\treturn this.parameters[name];\n\t\t}\n\t\tsetParameter(name, data, passFlags = 0xFFFFFFFF) {\n\t\t\t\tconst param = this.parameters[name];\n\t\t\t\tif (param) {\n\t\t\t\t\t\tparam.data = data;\n\t\t\t\t\t\tparam.passFlags = passFlags;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.parameters[name] = {\n\t\t\t\t\t\t\t\tscopeId: null,\n\t\t\t\t\t\t\t\tdata: data,\n\t\t\t\t\t\t\t\tpassFlags: passFlags\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t}\n\t\tsetRealtimeLightmap(name, texture) {\n\t\t\t\tconst old = this.getParameter(name);\n\t\t\t\tif (old === texture) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (old) {\n\t\t\t\t\t\tLightmapCache.decRef(old.data);\n\t\t\t\t}\n\t\t\t\tif (texture) {\n\t\t\t\t\t\tLightmapCache.incRef(texture);\n\t\t\t\t\t\tthis.setParameter(name, texture);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.deleteParameter(name);\n\t\t\t\t}\n\t\t}\n\t\tdeleteParameter(name) {\n\t\t\t\tif (this.parameters[name]) {\n\t\t\t\t\t\tdelete this.parameters[name];\n\t\t\t\t}\n\t\t}\n\t\tsetParameters(device, passFlag) {\n\t\t\t\tconst parameters = this.parameters;\n\t\t\t\tfor(const paramName in parameters){\n\t\t\t\t\t\tconst parameter = parameters[paramName];\n\t\t\t\t\t\tif (parameter.passFlags & passFlag) {\n\t\t\t\t\t\t\t\tif (!parameter.scopeId) {\n\t\t\t\t\t\t\t\t\t\tparameter.scopeId = device.scope.resolve(paramName);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tparameter.scopeId.setValue(parameter.data);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tsetLightmapped(value) {\n\t\t\t\tif (value) {\n\t\t\t\t\t\tthis.mask = (this.mask | MASK_AFFECT_LIGHTMAPPED) & -6;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.setRealtimeLightmap(MeshInstance.lightmapParamNames[0], null);\n\t\t\t\t\t\tthis.setRealtimeLightmap(MeshInstance.lightmapParamNames[1], null);\n\t\t\t\t\t\tthis._shaderDefs &= -4289;\n\t\t\t\t\t\tthis.mask = (this.mask | MASK_AFFECT_DYNAMIC) & -7;\n\t\t\t\t}\n\t\t}\n\t\tsetCustomAabb(aabb) {\n\t\t\t\tif (aabb) {\n\t\t\t\t\t\tif (this._customAabb) {\n\t\t\t\t\t\t\t\tthis._customAabb.copy(aabb);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._customAabb = aabb.clone();\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._customAabb = null;\n\t\t\t\t\t\tthis._aabbVer = -1;\n\t\t\t\t}\n\t\t\t\tthis._setupSkinUpdate();\n\t\t}\n\t\t_setupSkinUpdate() {\n\t\t\t\tif (this._skinInstance) {\n\t\t\t\t\t\tthis._skinInstance._updateBeforeCull = !this._customAabb;\n\t\t\t\t}\n\t\t}\n}\n\nconst _triFanIndices = [\n\t\t0,\n\t\t1,\n\t\t3,\n\t\t2,\n\t\t3,\n\t\t1\n];\nconst _triStripIndices = [\n\t\t0,\n\t\t1,\n\t\t3,\n\t\t0,\n\t\t3,\n\t\t2\n];\nconst mat3 = new Mat3();\nfunction paramsIdentical(a, b) {\n\t\tif (a && !b) return false;\n\t\tif (!a && b) return false;\n\t\ta = a.data;\n\t\tb = b.data;\n\t\tif (a === b) return true;\n\t\tif (a instanceof Float32Array && b instanceof Float32Array) {\n\t\t\t\tif (a.length !== b.length) return false;\n\t\t\t\tfor(let i = 0; i < a.length; i++){\n\t\t\t\t\t\tif (a[i] !== b[i]) return false;\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n}\nfunction equalParamSets(params1, params2) {\n\t\tfor(const param in params1){\n\t\t\t\tif (params1.hasOwnProperty(param) && !paramsIdentical(params1[param], params2[param])) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t}\n\t\tfor(const param in params2){\n\t\t\t\tif (params2.hasOwnProperty(param) && !paramsIdentical(params2[param], params1[param])) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t}\n\t\treturn true;\n}\nfunction getScaleSign(mi) {\n\t\treturn mi.node.worldTransform.scaleSign;\n}\nclass BatchManager {\n\t\tconstructor(device, root, scene){\n\t\t\t\tthis.device = device;\n\t\t\t\tthis.rootNode = root;\n\t\t\t\tthis.scene = scene;\n\t\t\t\tthis._init = false;\n\t\t\t\tthis._batchGroups = {};\n\t\t\t\tthis._batchGroupCounter = 0;\n\t\t\t\tthis._batchList = [];\n\t\t\t\tthis._dirtyGroups = [];\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.device = null;\n\t\t\t\tthis.rootNode = null;\n\t\t\t\tthis.scene = null;\n\t\t\t\tthis._batchGroups = {};\n\t\t\t\tthis._batchList = [];\n\t\t\t\tthis._dirtyGroups = [];\n\t\t}\n\t\taddGroup(name, dynamic, maxAabbSize, id, layers) {\n\t\t\t\tif (id === undefined) {\n\t\t\t\t\t\tid = this._batchGroupCounter;\n\t\t\t\t\t\tthis._batchGroupCounter++;\n\t\t\t\t}\n\t\t\t\tif (this._batchGroups[id]) {\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t\tconst group = new BatchGroup(id, name, dynamic, maxAabbSize, layers);\n\t\t\t\tthis._batchGroups[id] = group;\n\t\t\t\treturn group;\n\t\t}\n\t\tremoveGroup(id) {\n\t\t\t\tif (!this._batchGroups[id]) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst newBatchList = [];\n\t\t\t\tfor(let i = 0; i < this._batchList.length; i++){\n\t\t\t\t\t\tif (this._batchList[i].batchGroupId === id) {\n\t\t\t\t\t\t\t\tthis.destroyBatch(this._batchList[i]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tnewBatchList.push(this._batchList[i]);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._batchList = newBatchList;\n\t\t\t\tthis._removeModelsFromBatchGroup(this.rootNode, id);\n\t\t\t\tdelete this._batchGroups[id];\n\t\t}\n\t\tmarkGroupDirty(id) {\n\t\t\t\tif (this._dirtyGroups.indexOf(id) < 0) {\n\t\t\t\t\t\tthis._dirtyGroups.push(id);\n\t\t\t\t}\n\t\t}\n\t\tgetGroupByName(name) {\n\t\t\t\tconst groups = this._batchGroups;\n\t\t\t\tfor(const group in groups){\n\t\t\t\t\t\tif (!groups.hasOwnProperty(group)) continue;\n\t\t\t\t\t\tif (groups[group].name === name) {\n\t\t\t\t\t\t\t\treturn groups[group];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tgetBatches(batchGroupId) {\n\t\t\t\tconst results = [];\n\t\t\t\tconst len = this._batchList.length;\n\t\t\t\tfor(let i = 0; i < len; i++){\n\t\t\t\t\t\tconst batch = this._batchList[i];\n\t\t\t\t\t\tif (batch.batchGroupId === batchGroupId) {\n\t\t\t\t\t\t\t\tresults.push(batch);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn results;\n\t\t}\n\t\t_removeModelsFromBatchGroup(node, id) {\n\t\t\t\tif (!node.enabled) return;\n\t\t\t\tif (node.model && node.model.batchGroupId === id) {\n\t\t\t\t\t\tnode.model.batchGroupId = -1;\n\t\t\t\t}\n\t\t\t\tif (node.render && node.render.batchGroupId === id) {\n\t\t\t\t\t\tnode.render.batchGroupId = -1;\n\t\t\t\t}\n\t\t\t\tif (node.element && node.element.batchGroupId === id) {\n\t\t\t\t\t\tnode.element.batchGroupId = -1;\n\t\t\t\t}\n\t\t\t\tif (node.sprite && node.sprite.batchGroupId === id) {\n\t\t\t\t\t\tnode.sprite.batchGroupId = -1;\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < node._children.length; i++){\n\t\t\t\t\t\tthis._removeModelsFromBatchGroup(node._children[i], id);\n\t\t\t\t}\n\t\t}\n\t\tinsert(type, groupId, node) {\n\t\t\t\tconst group = this._batchGroups[groupId];\n\t\t\t\tif (group) {\n\t\t\t\t\t\tif (group._obj[type].indexOf(node) < 0) {\n\t\t\t\t\t\t\t\tgroup._obj[type].push(node);\n\t\t\t\t\t\t\t\tthis.markGroupDirty(groupId);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tremove(type, groupId, node) {\n\t\t\t\tconst group = this._batchGroups[groupId];\n\t\t\t\tif (group) {\n\t\t\t\t\t\tconst idx = group._obj[type].indexOf(node);\n\t\t\t\t\t\tif (idx >= 0) {\n\t\t\t\t\t\t\t\tgroup._obj[type].splice(idx, 1);\n\t\t\t\t\t\t\t\tthis.markGroupDirty(groupId);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_extractRender(node, arr, group, groupMeshInstances) {\n\t\t\t\tif (node.render) {\n\t\t\t\t\t\tarr = groupMeshInstances[node.render.batchGroupId] = arr.concat(node.render.meshInstances);\n\t\t\t\t\t\tnode.render.removeFromLayers();\n\t\t\t\t}\n\t\t\t\treturn arr;\n\t\t}\n\t\t_extractModel(node, arr, group, groupMeshInstances) {\n\t\t\t\tif (node.model && node.model.model) {\n\t\t\t\t\t\tarr = groupMeshInstances[node.model.batchGroupId] = arr.concat(node.model.meshInstances);\n\t\t\t\t\t\tnode.model.removeModelFromLayers();\n\t\t\t\t}\n\t\t\t\treturn arr;\n\t\t}\n\t\t_extractElement(node, arr, group) {\n\t\t\t\tif (!node.element) return;\n\t\t\t\tlet valid = false;\n\t\t\t\tif (node.element._text && node.element._text._model.meshInstances.length > 0) {\n\t\t\t\t\t\tarr.push(node.element._text._model.meshInstances[0]);\n\t\t\t\t\t\tnode.element.removeModelFromLayers(node.element._text._model);\n\t\t\t\t\t\tvalid = true;\n\t\t\t\t} else if (node.element._image) {\n\t\t\t\t\t\tarr.push(node.element._image._renderable.meshInstance);\n\t\t\t\t\t\tnode.element.removeModelFromLayers(node.element._image._renderable.model);\n\t\t\t\t\t\tif (node.element._image._renderable.unmaskMeshInstance) {\n\t\t\t\t\t\t\t\tarr.push(node.element._image._renderable.unmaskMeshInstance);\n\t\t\t\t\t\t\t\tif (!node.element._image._renderable.unmaskMeshInstance.stencilFront || !node.element._image._renderable.unmaskMeshInstance.stencilBack) {\n\t\t\t\t\t\t\t\t\t\tnode.element._dirtifyMask();\n\t\t\t\t\t\t\t\t\t\tnode.element._onPrerender();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvalid = true;\n\t\t\t\t}\n\t\t\t\tif (valid) {\n\t\t\t\t\t\tgroup._ui = true;\n\t\t\t\t}\n\t\t}\n\t\t_collectAndRemoveMeshInstances(groupMeshInstances, groupIds) {\n\t\t\t\tfor(let g = 0; g < groupIds.length; g++){\n\t\t\t\t\t\tconst id = groupIds[g];\n\t\t\t\t\t\tconst group = this._batchGroups[id];\n\t\t\t\t\t\tif (!group) continue;\n\t\t\t\t\t\tlet arr = groupMeshInstances[id];\n\t\t\t\t\t\tif (!arr) arr = groupMeshInstances[id] = [];\n\t\t\t\t\t\tfor(let m = 0; m < group._obj.model.length; m++){\n\t\t\t\t\t\t\t\tarr = this._extractModel(group._obj.model[m], arr, group, groupMeshInstances);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor(let r = 0; r < group._obj.render.length; r++){\n\t\t\t\t\t\t\t\tarr = this._extractRender(group._obj.render[r], arr, group, groupMeshInstances);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor(let e = 0; e < group._obj.element.length; e++){\n\t\t\t\t\t\t\t\tthis._extractElement(group._obj.element[e], arr, group);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor(let s = 0; s < group._obj.sprite.length; s++){\n\t\t\t\t\t\t\t\tconst node = group._obj.sprite[s];\n\t\t\t\t\t\t\t\tif (node.sprite && node.sprite._meshInstance && (group.dynamic || node.sprite.sprite._renderMode === SPRITE_RENDERMODE_SIMPLE)) {\n\t\t\t\t\t\t\t\t\t\tarr.push(node.sprite._meshInstance);\n\t\t\t\t\t\t\t\t\t\tnode.sprite.removeModelFromLayers();\n\t\t\t\t\t\t\t\t\t\tgroup._sprite = true;\n\t\t\t\t\t\t\t\t\t\tnode.sprite._batchGroup = group;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tgenerate(groupIds) {\n\t\t\t\tconst groupMeshInstances = {};\n\t\t\t\tif (!groupIds) {\n\t\t\t\t\t\tgroupIds = Object.keys(this._batchGroups);\n\t\t\t\t}\n\t\t\t\tconst newBatchList = [];\n\t\t\t\tfor(let i = 0; i < this._batchList.length; i++){\n\t\t\t\t\t\tif (groupIds.indexOf(this._batchList[i].batchGroupId) < 0) {\n\t\t\t\t\t\t\t\tnewBatchList.push(this._batchList[i]);\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.destroyBatch(this._batchList[i]);\n\t\t\t\t}\n\t\t\t\tthis._batchList = newBatchList;\n\t\t\t\tthis._collectAndRemoveMeshInstances(groupMeshInstances, groupIds);\n\t\t\t\tif (groupIds === this._dirtyGroups) {\n\t\t\t\t\t\tthis._dirtyGroups.length = 0;\n\t\t\t\t} else {\n\t\t\t\t\t\tconst newDirtyGroups = [];\n\t\t\t\t\t\tfor(let i = 0; i < this._dirtyGroups.length; i++){\n\t\t\t\t\t\t\t\tif (groupIds.indexOf(this._dirtyGroups[i]) < 0) newDirtyGroups.push(this._dirtyGroups[i]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._dirtyGroups = newDirtyGroups;\n\t\t\t\t}\n\t\t\t\tlet group, lists, groupData, batch;\n\t\t\t\tfor(const groupId in groupMeshInstances){\n\t\t\t\t\t\tif (!groupMeshInstances.hasOwnProperty(groupId)) continue;\n\t\t\t\t\t\tgroup = groupMeshInstances[groupId];\n\t\t\t\t\t\tgroupData = this._batchGroups[groupId];\n\t\t\t\t\t\tif (!groupData) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlists = this.prepare(group, groupData.dynamic, groupData.maxAabbSize, groupData._ui || groupData._sprite);\n\t\t\t\t\t\tfor(let i = 0; i < lists.length; i++){\n\t\t\t\t\t\t\t\tbatch = this.create(lists[i], groupData.dynamic, parseInt(groupId, 10));\n\t\t\t\t\t\t\t\tif (batch) {\n\t\t\t\t\t\t\t\t\t\tbatch.addToLayers(this.scene, groupData.layers);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tprepare(meshInstances, dynamic, maxAabbSize = Number.POSITIVE_INFINITY, translucent) {\n\t\t\t\tif (meshInstances.length === 0) return [];\n\t\t\t\tconst halfMaxAabbSize = maxAabbSize * 0.5;\n\t\t\t\tconst maxInstanceCount = 1024;\n\t\t\t\tconst maxNumVertices = 0xffffffff;\n\t\t\t\tconst aabb = new BoundingBox();\n\t\t\t\tconst testAabb = new BoundingBox();\n\t\t\t\tlet skipTranslucentAabb = null;\n\t\t\t\tlet sf;\n\t\t\t\tconst lists = [];\n\t\t\t\tlet j = 0;\n\t\t\t\tif (translucent) {\n\t\t\t\t\t\tmeshInstances.sort((a, b)=>{\n\t\t\t\t\t\t\t\treturn a.drawOrder - b.drawOrder;\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tlet meshInstancesLeftA = meshInstances;\n\t\t\t\tlet meshInstancesLeftB;\n\t\t\t\tconst skipMesh = translucent ? function(mi) {\n\t\t\t\t\t\tif (skipTranslucentAabb) {\n\t\t\t\t\t\t\t\tskipTranslucentAabb.add(mi.aabb);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tskipTranslucentAabb = mi.aabb.clone();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmeshInstancesLeftB.push(mi);\n\t\t\t\t} : function(mi) {\n\t\t\t\t\t\tmeshInstancesLeftB.push(mi);\n\t\t\t\t};\n\t\t\t\twhile(meshInstancesLeftA.length > 0){\n\t\t\t\t\t\tlists[j] = [\n\t\t\t\t\t\t\t\tmeshInstancesLeftA[0]\n\t\t\t\t\t\t];\n\t\t\t\t\t\tmeshInstancesLeftB = [];\n\t\t\t\t\t\tconst material = meshInstancesLeftA[0].material;\n\t\t\t\t\t\tconst layer = meshInstancesLeftA[0].layer;\n\t\t\t\t\t\tconst defs = meshInstancesLeftA[0]._shaderDefs;\n\t\t\t\t\t\tconst params = meshInstancesLeftA[0].parameters;\n\t\t\t\t\t\tconst stencil = meshInstancesLeftA[0].stencilFront;\n\t\t\t\t\t\tlet vertCount = meshInstancesLeftA[0].mesh.vertexBuffer.getNumVertices();\n\t\t\t\t\t\tconst drawOrder = meshInstancesLeftA[0].drawOrder;\n\t\t\t\t\t\taabb.copy(meshInstancesLeftA[0].aabb);\n\t\t\t\t\t\tconst scaleSign = getScaleSign(meshInstancesLeftA[0]);\n\t\t\t\t\t\tconst vertexFormatBatchingHash = meshInstancesLeftA[0].mesh.vertexBuffer.format.batchingHash;\n\t\t\t\t\t\tconst indexed = meshInstancesLeftA[0].mesh.primitive[0].indexed;\n\t\t\t\t\t\tskipTranslucentAabb = null;\n\t\t\t\t\t\tfor(let i = 1; i < meshInstancesLeftA.length; i++){\n\t\t\t\t\t\t\t\tconst mi = meshInstancesLeftA[i];\n\t\t\t\t\t\t\t\tif (dynamic && lists[j].length >= maxInstanceCount) {\n\t\t\t\t\t\t\t\t\t\tmeshInstancesLeftB = meshInstancesLeftB.concat(meshInstancesLeftA.slice(i));\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (material !== mi.material || layer !== mi.layer || vertexFormatBatchingHash !== mi.mesh.vertexBuffer.format.batchingHash || indexed !== mi.mesh.primitive[0].indexed || defs !== mi._shaderDefs || vertCount + mi.mesh.vertexBuffer.getNumVertices() > maxNumVertices) {\n\t\t\t\t\t\t\t\t\t\tskipMesh(mi);\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\ttestAabb.copy(aabb);\n\t\t\t\t\t\t\t\ttestAabb.add(mi.aabb);\n\t\t\t\t\t\t\t\tif (testAabb.halfExtents.x > halfMaxAabbSize || testAabb.halfExtents.y > halfMaxAabbSize || testAabb.halfExtents.z > halfMaxAabbSize) {\n\t\t\t\t\t\t\t\t\t\tskipMesh(mi);\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (stencil) {\n\t\t\t\t\t\t\t\t\t\tif (!(sf = mi.stencilFront) || stencil.func !== sf.func || stencil.zpass !== sf.zpass) {\n\t\t\t\t\t\t\t\t\t\t\t\tskipMesh(mi);\n\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (scaleSign !== getScaleSign(mi)) {\n\t\t\t\t\t\t\t\t\t\tskipMesh(mi);\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (!equalParamSets(params, mi.parameters)) {\n\t\t\t\t\t\t\t\t\t\tskipMesh(mi);\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (translucent && skipTranslucentAabb && skipTranslucentAabb.intersects(mi.aabb) && mi.drawOrder !== drawOrder) {\n\t\t\t\t\t\t\t\t\t\tskipMesh(mi);\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\taabb.add(mi.aabb);\n\t\t\t\t\t\t\t\tvertCount += mi.mesh.vertexBuffer.getNumVertices();\n\t\t\t\t\t\t\t\tlists[j].push(mi);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tj++;\n\t\t\t\t\t\tmeshInstancesLeftA = meshInstancesLeftB;\n\t\t\t\t}\n\t\t\t\treturn lists;\n\t\t}\n\t\tcollectBatchedMeshData(meshInstances, dynamic) {\n\t\t\t\tlet streams = null;\n\t\t\t\tlet batchNumVerts = 0;\n\t\t\t\tlet batchNumIndices = 0;\n\t\t\t\tlet material = null;\n\t\t\t\tfor(let i = 0; i < meshInstances.length; i++){\n\t\t\t\t\t\tif (meshInstances[i].visible) {\n\t\t\t\t\t\t\t\tconst mesh = meshInstances[i].mesh;\n\t\t\t\t\t\t\t\tconst numVerts = mesh.vertexBuffer.numVertices;\n\t\t\t\t\t\t\t\tbatchNumVerts += numVerts;\n\t\t\t\t\t\t\t\tif (mesh.primitive[0].indexed) {\n\t\t\t\t\t\t\t\t\t\tbatchNumIndices += mesh.primitive[0].count;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tconst primitiveType = mesh.primitive[0].type;\n\t\t\t\t\t\t\t\t\t\tif (primitiveType === PRIMITIVE_TRIFAN || primitiveType === PRIMITIVE_TRISTRIP) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (mesh.primitive[0].count === 4) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbatchNumIndices += 6;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (!streams) {\n\t\t\t\t\t\t\t\t\t\tmaterial = meshInstances[i].material;\n\t\t\t\t\t\t\t\t\t\tstreams = {};\n\t\t\t\t\t\t\t\t\t\tconst elems = mesh.vertexBuffer.format.elements;\n\t\t\t\t\t\t\t\t\t\tfor(let j = 0; j < elems.length; j++){\n\t\t\t\t\t\t\t\t\t\t\t\tconst semantic = elems[j].name;\n\t\t\t\t\t\t\t\t\t\t\t\tstreams[semantic] = {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnumComponents: elems[j].numComponents,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdataType: elems[j].dataType,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnormalize: elems[j].normalize,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcount: 0\n\t\t\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (dynamic) {\n\t\t\t\t\t\t\t\t\t\t\t\tstreams[SEMANTIC_BLENDINDICES] = {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnumComponents: 1,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdataType: TYPE_FLOAT32,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnormalize: false,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcount: 0\n\t\t\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\t\tstreams: streams,\n\t\t\t\t\t\tbatchNumVerts: batchNumVerts,\n\t\t\t\t\t\tbatchNumIndices: batchNumIndices,\n\t\t\t\t\t\tmaterial: material\n\t\t\t\t};\n\t\t}\n\t\tcreate(meshInstances, dynamic, batchGroupId) {\n\t\t\t\tif (!this._init) {\n\t\t\t\t\t\tthis.vertexFormats = {};\n\t\t\t\t\t\tthis._init = true;\n\t\t\t\t}\n\t\t\t\tlet stream = null;\n\t\t\t\tlet semantic;\n\t\t\t\tlet mesh, numVerts;\n\t\t\t\tlet batch = null;\n\t\t\t\tconst batchData = this.collectBatchedMeshData(meshInstances, dynamic);\n\t\t\t\tif (batchData.streams) {\n\t\t\t\t\t\tconst streams = batchData.streams;\n\t\t\t\t\t\tlet material = batchData.material;\n\t\t\t\t\t\tconst batchNumVerts = batchData.batchNumVerts;\n\t\t\t\t\t\tconst batchNumIndices = batchData.batchNumIndices;\n\t\t\t\t\t\tbatch = new Batch(meshInstances, dynamic, batchGroupId);\n\t\t\t\t\t\tthis._batchList.push(batch);\n\t\t\t\t\t\tlet indexBase, indexBaseVertex, numIndices, indexData;\n\t\t\t\t\t\tlet verticesOffset = 0;\n\t\t\t\t\t\tlet indexOffset = 0;\n\t\t\t\t\t\tlet transform;\n\t\t\t\t\t\tconst indexArrayType = batchNumVerts <= 0xffff ? Uint16Array : Uint32Array;\n\t\t\t\t\t\tconst indices = new indexArrayType(batchNumIndices);\n\t\t\t\t\t\tfor(semantic in streams){\n\t\t\t\t\t\t\t\tstream = streams[semantic];\n\t\t\t\t\t\t\t\tstream.typeArrayType = typedArrayTypes[stream.dataType];\n\t\t\t\t\t\t\t\tstream.elementByteSize = typedArrayTypesByteSize[stream.dataType];\n\t\t\t\t\t\t\t\tstream.buffer = new stream.typeArrayType(batchNumVerts * stream.numComponents);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor(let i = 0; i < meshInstances.length; i++){\n\t\t\t\t\t\t\t\tif (!meshInstances[i].visible) {\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tmesh = meshInstances[i].mesh;\n\t\t\t\t\t\t\t\tnumVerts = mesh.vertexBuffer.numVertices;\n\t\t\t\t\t\t\t\tif (!dynamic) {\n\t\t\t\t\t\t\t\t\t\ttransform = meshInstances[i].node.getWorldTransform();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tfor(semantic in streams){\n\t\t\t\t\t\t\t\t\t\tif (semantic !== SEMANTIC_BLENDINDICES) {\n\t\t\t\t\t\t\t\t\t\t\t\tstream = streams[semantic];\n\t\t\t\t\t\t\t\t\t\t\t\tconst subarray = new stream.typeArrayType(stream.buffer.buffer, stream.elementByteSize * stream.count);\n\t\t\t\t\t\t\t\t\t\t\t\tconst totalComponents = mesh.getVertexStream(semantic, subarray) * stream.numComponents;\n\t\t\t\t\t\t\t\t\t\t\t\tstream.count += totalComponents;\n\t\t\t\t\t\t\t\t\t\t\t\tif (!dynamic && stream.numComponents >= 3) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (semantic === SEMANTIC_POSITION) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst m = transform.data;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst m0 = m[0];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst m1 = m[1];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst m2 = m[2];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst m4 = m[4];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst m5 = m[5];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst m6 = m[6];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst m8 = m[8];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst m9 = m[9];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst m10 = m[10];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst m12 = m[12];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst m13 = m[13];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst m14 = m[14];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tlet x, y, z;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor(let j = 0; j < totalComponents; j += stream.numComponents){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tx = subarray[j];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ty = subarray[j + 1];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tz = subarray[j + 2];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsubarray[j] = x * m0 + y * m4 + z * m8 + m12;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsubarray[j + 1] = x * m1 + y * m5 + z * m9 + m13;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsubarray[j + 2] = x * m2 + y * m6 + z * m10 + m14;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else if (semantic === SEMANTIC_NORMAL || semantic === SEMANTIC_TANGENT) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tmat3.invertMat4(transform).transpose();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst [m0, m1, m2, m3, m4, m5, m6, m7, m8] = mat3.data;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tlet x, y, z;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor(let j = 0; j < totalComponents; j += stream.numComponents){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tx = subarray[j];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ty = subarray[j + 1];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tz = subarray[j + 2];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsubarray[j] = x * m0 + y * m3 + z * m6;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsubarray[j + 1] = x * m1 + y * m4 + z * m7;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsubarray[j + 2] = x * m2 + y * m5 + z * m8;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (dynamic) {\n\t\t\t\t\t\t\t\t\t\tstream = streams[SEMANTIC_BLENDINDICES];\n\t\t\t\t\t\t\t\t\t\tfor(let j = 0; j < numVerts; j++){\n\t\t\t\t\t\t\t\t\t\t\t\tstream.buffer[stream.count++] = i;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (mesh.primitive[0].indexed) {\n\t\t\t\t\t\t\t\t\t\tindexBase = mesh.primitive[0].base;\n\t\t\t\t\t\t\t\t\t\tindexBaseVertex = mesh.primitive[0].baseVertex || 0;\n\t\t\t\t\t\t\t\t\t\tnumIndices = mesh.primitive[0].count;\n\t\t\t\t\t\t\t\t\t\tconst srcFormat = mesh.indexBuffer[0].getFormat();\n\t\t\t\t\t\t\t\t\t\tindexData = new typedArrayIndexFormats[srcFormat](mesh.indexBuffer[0].storage);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tindexBaseVertex = 0;\n\t\t\t\t\t\t\t\t\t\tconst primitiveType = mesh.primitive[0].type;\n\t\t\t\t\t\t\t\t\t\tif (primitiveType === PRIMITIVE_TRIFAN || primitiveType === PRIMITIVE_TRISTRIP) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (mesh.primitive[0].count === 4) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tindexBase = 0;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnumIndices = 6;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tindexData = primitiveType === PRIMITIVE_TRIFAN ? _triFanIndices : _triStripIndices;\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnumIndices = 0;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tfor(let j = 0; j < numIndices; j++){\n\t\t\t\t\t\t\t\t\t\tindices[j + indexOffset] = indexData[indexBase + j] + indexBaseVertex + verticesOffset;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tindexOffset += numIndices;\n\t\t\t\t\t\t\t\tverticesOffset += numVerts;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmesh = new Mesh(this.device);\n\t\t\t\t\t\tfor(semantic in streams){\n\t\t\t\t\t\t\t\tstream = streams[semantic];\n\t\t\t\t\t\t\t\tmesh.setVertexStream(semantic, stream.buffer, stream.numComponents, undefined, stream.dataType, stream.normalize);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (indices.length > 0) {\n\t\t\t\t\t\t\t\tmesh.setIndices(indices);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmesh.update(PRIMITIVE_TRIANGLES, false);\n\t\t\t\t\t\tif (dynamic) {\n\t\t\t\t\t\t\t\tmaterial = material.clone();\n\t\t\t\t\t\t\t\tmaterial.update();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst meshInstance = new MeshInstance(mesh, material, this.rootNode);\n\t\t\t\t\t\tmeshInstance.castShadow = batch.origMeshInstances[0].castShadow;\n\t\t\t\t\t\tmeshInstance.parameters = batch.origMeshInstances[0].parameters;\n\t\t\t\t\t\tmeshInstance.layer = batch.origMeshInstances[0].layer;\n\t\t\t\t\t\tmeshInstance._shaderDefs = batch.origMeshInstances[0]._shaderDefs;\n\t\t\t\t\t\tmeshInstance.batching = true;\n\t\t\t\t\t\tmeshInstance.cull = batch.origMeshInstances[0].cull;\n\t\t\t\t\t\tconst batchGroup = this._batchGroups[batchGroupId];\n\t\t\t\t\t\tif (batchGroup && batchGroup._ui) {\n\t\t\t\t\t\t\t\tmeshInstance.cull = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (dynamic) {\n\t\t\t\t\t\t\t\tconst nodes = [];\n\t\t\t\t\t\t\t\tfor(let i = 0; i < batch.origMeshInstances.length; i++){\n\t\t\t\t\t\t\t\t\t\tnodes.push(batch.origMeshInstances[i].node);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tmeshInstance.skinInstance = new SkinBatchInstance(this.device, nodes, this.rootNode);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmeshInstance._updateAabb = false;\n\t\t\t\t\t\tmeshInstance.drawOrder = batch.origMeshInstances[0].drawOrder;\n\t\t\t\t\t\tmeshInstance.stencilFront = batch.origMeshInstances[0].stencilFront;\n\t\t\t\t\t\tmeshInstance.stencilBack = batch.origMeshInstances[0].stencilBack;\n\t\t\t\t\t\tmeshInstance.flipFacesFactor = getScaleSign(batch.origMeshInstances[0]);\n\t\t\t\t\t\tmeshInstance.castShadow = batch.origMeshInstances[0].castShadow;\n\t\t\t\t\t\tbatch.meshInstance = meshInstance;\n\t\t\t\t\t\tbatch.updateBoundingBox();\n\t\t\t\t}\n\t\t\t\treturn batch;\n\t\t}\n\t\tupdateAll() {\n\t\t\t\tif (this._dirtyGroups.length > 0) {\n\t\t\t\t\t\tthis.generate(this._dirtyGroups);\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < this._batchList.length; i++){\n\t\t\t\t\t\tif (!this._batchList[i].dynamic) continue;\n\t\t\t\t\t\tthis._batchList[i].updateBoundingBox();\n\t\t\t\t}\n\t\t}\n\t\tclone(batch, clonedMeshInstances) {\n\t\t\t\tconst batch2 = new Batch(clonedMeshInstances, batch.dynamic, batch.batchGroupId);\n\t\t\t\tthis._batchList.push(batch2);\n\t\t\t\tconst nodes = [];\n\t\t\t\tfor(let i = 0; i < clonedMeshInstances.length; i++){\n\t\t\t\t\t\tnodes.push(clonedMeshInstances[i].node);\n\t\t\t\t}\n\t\t\t\tbatch2.meshInstance = new MeshInstance(batch.meshInstance.mesh, batch.meshInstance.material, batch.meshInstance.node);\n\t\t\t\tbatch2.meshInstance._updateAabb = false;\n\t\t\t\tbatch2.meshInstance.parameters = clonedMeshInstances[0].parameters;\n\t\t\t\tbatch2.meshInstance.cull = clonedMeshInstances[0].cull;\n\t\t\t\tbatch2.meshInstance.layer = clonedMeshInstances[0].layer;\n\t\t\t\tif (batch.dynamic) {\n\t\t\t\t\t\tbatch2.meshInstance.skinInstance = new SkinBatchInstance(this.device, nodes, this.rootNode);\n\t\t\t\t}\n\t\t\t\tbatch2.meshInstance.castShadow = batch.meshInstance.castShadow;\n\t\t\t\treturn batch2;\n\t\t}\n\t\tdestroyBatch(batch) {\n\t\t\t\tbatch.destroy(this.scene, this._batchGroups[batch.batchGroupId].layers);\n\t\t}\n}\n\nconst _colorUniformName = 'uSceneColorMap';\nclass RenderPassColorGrab extends RenderPass {\n\t\tdestroy() {\n\t\t\t\tsuper.destroy();\n\t\t\t\tthis.releaseRenderTarget(this.colorRenderTarget);\n\t\t}\n\t\tshouldReallocate(targetRT, sourceTexture, sourceFormat) {\n\t\t\t\tconst targetFormat = targetRT?.colorBuffer.format;\n\t\t\t\tif (targetFormat !== sourceFormat) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tconst width = sourceTexture?.width || this.device.width;\n\t\t\t\tconst height = sourceTexture?.height || this.device.height;\n\t\t\t\treturn !targetRT || width !== targetRT.width || height !== targetRT.height;\n\t\t}\n\t\tallocateRenderTarget(renderTarget, sourceRenderTarget, device, format) {\n\t\t\t\tconst texture = new Texture(device, {\n\t\t\t\t\t\tname: _colorUniformName,\n\t\t\t\t\t\tformat,\n\t\t\t\t\t\twidth: sourceRenderTarget ? sourceRenderTarget.colorBuffer.width : device.width,\n\t\t\t\t\t\theight: sourceRenderTarget ? sourceRenderTarget.colorBuffer.height : device.height,\n\t\t\t\t\t\tmipmaps: true,\n\t\t\t\t\t\tminFilter: FILTER_LINEAR_MIPMAP_LINEAR,\n\t\t\t\t\t\tmagFilter: FILTER_LINEAR,\n\t\t\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE\n\t\t\t\t});\n\t\t\t\tif (renderTarget) {\n\t\t\t\t\t\trenderTarget.destroyFrameBuffers();\n\t\t\t\t\t\trenderTarget._colorBuffer = texture;\n\t\t\t\t\t\trenderTarget._colorBuffers = [\n\t\t\t\t\t\t\t\ttexture\n\t\t\t\t\t\t];\n\t\t\t\t\t\trenderTarget.evaluateDimensions();\n\t\t\t\t} else {\n\t\t\t\t\t\trenderTarget = new RenderTarget({\n\t\t\t\t\t\t\t\tname: 'ColorGrabRT',\n\t\t\t\t\t\t\t\tcolorBuffer: texture,\n\t\t\t\t\t\t\t\tdepth: false,\n\t\t\t\t\t\t\t\tstencil: false,\n\t\t\t\t\t\t\t\tautoResolve: false\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn renderTarget;\n\t\t}\n\t\treleaseRenderTarget(rt) {\n\t\t\t\tif (rt) {\n\t\t\t\t\t\trt.destroyTextureBuffers();\n\t\t\t\t\t\trt.destroy();\n\t\t\t\t}\n\t\t}\n\t\tframeUpdate() {\n\t\t\t\tconst device = this.device;\n\t\t\t\tconst sourceRt = this.source;\n\t\t\t\tconst sourceFormat = sourceRt?.colorBuffer.format ?? this.device.backBufferFormat;\n\t\t\t\tif (this.shouldReallocate(this.colorRenderTarget, sourceRt?.colorBuffer, sourceFormat)) {\n\t\t\t\t\t\tthis.releaseRenderTarget(this.colorRenderTarget);\n\t\t\t\t\t\tthis.colorRenderTarget = this.allocateRenderTarget(this.colorRenderTarget, sourceRt, device, sourceFormat);\n\t\t\t\t}\n\t\t\t\tconst colorBuffer = this.colorRenderTarget.colorBuffer;\n\t\t\t\tdevice.scope.resolve(_colorUniformName).setValue(colorBuffer);\n\t\t}\n\t\texecute() {\n\t\t\t\tconst device = this.device;\n\t\t\t\tconst sourceRt = this.source;\n\t\t\t\tconst colorBuffer = this.colorRenderTarget.colorBuffer;\n\t\t\t\tif (device.isWebGPU) {\n\t\t\t\t\t\tdevice.copyRenderTarget(sourceRt, this.colorRenderTarget, true, false);\n\t\t\t\t\t\tdevice.mipmapRenderer.generate(this.colorRenderTarget.colorBuffer.impl);\n\t\t\t\t} else {\n\t\t\t\t\t\tdevice.copyRenderTarget(sourceRt, this.colorRenderTarget, true, false);\n\t\t\t\t\t\tdevice.activeTexture(device.maxCombinedTextures - 1);\n\t\t\t\t\t\tdevice.bindTexture(colorBuffer);\n\t\t\t\t\t\tdevice.gl.generateMipmap(colorBuffer.impl._glTarget);\n\t\t\t\t}\n\t\t}\n\t\tconstructor(...args){\n\t\t\t\tsuper(...args), this.colorRenderTarget = null, this.source = null;\n\t\t}\n}\n\nconst _depthUniformName = 'uSceneDepthMap';\nclass RenderPassDepthGrab extends RenderPass {\n\t\tconstructor(device, camera){\n\t\t\t\tsuper(device), this.depthRenderTarget = null, this.camera = null;\n\t\t\t\tthis.camera = camera;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tsuper.destroy();\n\t\t\t\tthis.releaseRenderTarget(this.depthRenderTarget);\n\t\t}\n\t\tshouldReallocate(targetRT, sourceTexture) {\n\t\t\t\tconst width = sourceTexture?.width || this.device.width;\n\t\t\t\tconst height = sourceTexture?.height || this.device.height;\n\t\t\t\treturn !targetRT || width !== targetRT.width || height !== targetRT.height;\n\t\t}\n\t\tallocateRenderTarget(renderTarget, sourceRenderTarget, device, format, isDepth) {\n\t\t\t\tconst texture = new Texture(device, {\n\t\t\t\t\t\tname: _depthUniformName,\n\t\t\t\t\t\tformat,\n\t\t\t\t\t\twidth: sourceRenderTarget ? sourceRenderTarget.colorBuffer.width : device.width,\n\t\t\t\t\t\theight: sourceRenderTarget ? sourceRenderTarget.colorBuffer.height : device.height,\n\t\t\t\t\t\tmipmaps: false,\n\t\t\t\t\t\tminFilter: FILTER_NEAREST,\n\t\t\t\t\t\tmagFilter: FILTER_NEAREST,\n\t\t\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE\n\t\t\t\t});\n\t\t\t\tif (renderTarget) {\n\t\t\t\t\t\trenderTarget.destroyFrameBuffers();\n\t\t\t\t\t\tif (isDepth) {\n\t\t\t\t\t\t\t\trenderTarget._depthBuffer = texture;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\trenderTarget._colorBuffer = texture;\n\t\t\t\t\t\t\t\trenderTarget._colorBuffers = [\n\t\t\t\t\t\t\t\t\t\ttexture\n\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t}\n\t\t\t\t\t\trenderTarget.evaluateDimensions();\n\t\t\t\t} else {\n\t\t\t\t\t\trenderTarget = new RenderTarget({\n\t\t\t\t\t\t\t\tname: 'DepthGrabRT',\n\t\t\t\t\t\t\t\tcolorBuffer: isDepth ? null : texture,\n\t\t\t\t\t\t\t\tdepthBuffer: isDepth ? texture : null,\n\t\t\t\t\t\t\t\tdepth: !isDepth,\n\t\t\t\t\t\t\t\tstencil: device.supportsStencil,\n\t\t\t\t\t\t\t\tautoResolve: false\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn renderTarget;\n\t\t}\n\t\treleaseRenderTarget(rt) {\n\t\t\t\tif (rt) {\n\t\t\t\t\t\trt.destroyTextureBuffers();\n\t\t\t\t\t\trt.destroy();\n\t\t\t\t}\n\t\t}\n\t\tbefore() {\n\t\t\t\tconst camera = this.camera;\n\t\t\t\tconst device = this.device;\n\t\t\t\tconst destinationRt = camera?.renderTarget ?? device.backBuffer;\n\t\t\t\tlet useDepthBuffer = true;\n\t\t\t\tlet format = destinationRt.stencil ? PIXELFORMAT_DEPTHSTENCIL : PIXELFORMAT_DEPTH;\n\t\t\t\tif (device.isWebGPU) {\n\t\t\t\t\t\tconst numSamples = destinationRt.samples;\n\t\t\t\t\t\tif (numSamples > 1) {\n\t\t\t\t\t\t\t\tformat = PIXELFORMAT_R32F;\n\t\t\t\t\t\t\t\tuseDepthBuffer = false;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst sourceTexture = camera.renderTarget?.depthBuffer ?? camera.renderTarget?.colorBuffer;\n\t\t\t\tif (this.shouldReallocate(this.depthRenderTarget, sourceTexture)) {\n\t\t\t\t\t\tthis.releaseRenderTarget(this.depthRenderTarget);\n\t\t\t\t\t\tthis.depthRenderTarget = this.allocateRenderTarget(this.depthRenderTarget, camera.renderTarget, device, format, useDepthBuffer);\n\t\t\t\t}\n\t\t\t\tconst colorBuffer = useDepthBuffer ? this.depthRenderTarget.depthBuffer : this.depthRenderTarget.colorBuffer;\n\t\t\t\tdevice.scope.resolve(_depthUniformName).setValue(colorBuffer);\n\t\t}\n\t\texecute() {\n\t\t\t\tconst device = this.device;\n\t\t\t\tif (device.isWebGL2 && device.renderTarget.samples > 1) {\n\t\t\t\t\t\tconst src = device.renderTarget.impl._glFrameBuffer;\n\t\t\t\t\t\tconst dest = this.depthRenderTarget;\n\t\t\t\t\t\tdevice.renderTarget = dest;\n\t\t\t\t\t\tdevice.updateBegin();\n\t\t\t\t\t\tthis.depthRenderTarget.impl.internalResolve(device, src, dest.impl._glFrameBuffer, this.depthRenderTarget, device.gl.DEPTH_BUFFER_BIT);\n\t\t\t\t} else {\n\t\t\t\t\t\tdevice.copyRenderTarget(device.renderTarget, this.depthRenderTarget, false, true);\n\t\t\t\t}\n\t\t}\n}\n\nclass CameraShaderParams {\n\t\tget hash() {\n\t\t\t\tif (this._hash === undefined) {\n\t\t\t\t\t\tconst key = `${this.gammaCorrection}_${this.toneMapping}_${this.srgbRenderTarget}_${this.fog}_${this.ssaoEnabled}_${this.sceneDepthMapLinear}`;\n\t\t\t\t\t\tthis._hash = hashCode(key);\n\t\t\t\t}\n\t\t\t\treturn this._hash;\n\t\t}\n\t\tget defines() {\n\t\t\t\tconst defines = this._defines;\n\t\t\t\tif (this._definesDirty) {\n\t\t\t\t\t\tthis._definesDirty = false;\n\t\t\t\t\t\tdefines.clear();\n\t\t\t\t\t\tif (this._sceneDepthMapLinear) defines.set('SCENE_DEPTHMAP_LINEAR', true);\n\t\t\t\t\t\tdefines.set('FOG', this._fog.toUpperCase());\n\t\t\t\t\t\tdefines.set('TONEMAP', tonemapNames[this._toneMapping]);\n\t\t\t\t\t\tdefines.set('GAMMA', gammaNames[this.shaderOutputGamma]);\n\t\t\t\t}\n\t\t\t\treturn defines;\n\t\t}\n\t\tmarkDirty() {\n\t\t\t\tthis._hash = undefined;\n\t\t\t\tthis._definesDirty = true;\n\t\t}\n\t\tset fog(type) {\n\t\t\t\tif (this._fog !== type) {\n\t\t\t\t\t\tthis._fog = type;\n\t\t\t\t\t\tthis.markDirty();\n\t\t\t\t}\n\t\t}\n\t\tget fog() {\n\t\t\t\treturn this._fog;\n\t\t}\n\t\tset ssaoEnabled(value) {\n\t\t\t\tif (this._ssaoEnabled !== value) {\n\t\t\t\t\t\tthis._ssaoEnabled = value;\n\t\t\t\t\t\tthis.markDirty();\n\t\t\t\t}\n\t\t}\n\t\tget ssaoEnabled() {\n\t\t\t\treturn this._ssaoEnabled;\n\t\t}\n\t\tset gammaCorrection(value) {\n\t\t\t\tthis._gammaCorrectionAssigned = true;\n\t\t\t\tif (this._gammaCorrection !== value) {\n\t\t\t\t\t\tthis._gammaCorrection = value;\n\t\t\t\t\t\tthis.markDirty();\n\t\t\t\t}\n\t\t}\n\t\tget gammaCorrection() {\n\t\t\t\treturn this._gammaCorrection;\n\t\t}\n\t\tset toneMapping(value) {\n\t\t\t\tif (this._toneMapping !== value) {\n\t\t\t\t\t\tthis._toneMapping = value;\n\t\t\t\t\t\tthis.markDirty();\n\t\t\t\t}\n\t\t}\n\t\tget toneMapping() {\n\t\t\t\treturn this._toneMapping;\n\t\t}\n\t\tset srgbRenderTarget(value) {\n\t\t\t\tif (this._srgbRenderTarget !== value) {\n\t\t\t\t\t\tthis._srgbRenderTarget = value;\n\t\t\t\t\t\tthis.markDirty();\n\t\t\t\t}\n\t\t}\n\t\tget srgbRenderTarget() {\n\t\t\t\treturn this._srgbRenderTarget;\n\t\t}\n\t\tset sceneDepthMapLinear(value) {\n\t\t\t\tif (this._sceneDepthMapLinear !== value) {\n\t\t\t\t\t\tthis._sceneDepthMapLinear = value;\n\t\t\t\t\t\tthis.markDirty();\n\t\t\t\t}\n\t\t}\n\t\tget sceneDepthMapLinear() {\n\t\t\t\treturn this._sceneDepthMapLinear;\n\t\t}\n\t\tget shaderOutputGamma() {\n\t\t\t\tconst gammaOutput = this._gammaCorrection === GAMMA_SRGB && !this._srgbRenderTarget;\n\t\t\t\treturn gammaOutput ? GAMMA_SRGB : GAMMA_NONE;\n\t\t}\n\t\tconstructor(){\n\t\t\t\tthis._gammaCorrection = GAMMA_SRGB;\n\t\t\t\tthis._toneMapping = TONEMAP_LINEAR;\n\t\t\t\tthis._srgbRenderTarget = false;\n\t\t\t\tthis._ssaoEnabled = false;\n\t\t\t\tthis._fog = FOG_NONE;\n\t\t\t\tthis._sceneDepthMapLinear = false;\n\t\t\t\tthis._defines = new Map();\n\t\t\t\tthis._definesDirty = true;\n\t\t}\n}\n\nconst _deviceCoord = new Vec3();\nconst _halfSize = new Vec3();\nconst _point$1 = new Vec3();\nconst _invViewProjMat = new Mat4();\nconst _frustumPoints = [\n\t\tnew Vec3(),\n\t\tnew Vec3(),\n\t\tnew Vec3(),\n\t\tnew Vec3(),\n\t\tnew Vec3(),\n\t\tnew Vec3(),\n\t\tnew Vec3(),\n\t\tnew Vec3()\n];\nclass Camera {\n\t\tconstructor(){\n\t\t\t\tthis.shaderPassInfo = null;\n\t\t\t\tthis.renderPassColorGrab = null;\n\t\t\t\tthis.renderPassDepthGrab = null;\n\t\t\t\tthis.fogParams = null;\n\t\t\t\tthis.shaderParams = new CameraShaderParams();\n\t\t\t\tthis.renderPasses = [];\n\t\t\t\tthis.jitter = 0;\n\t\t\t\tthis._aspectRatio = 16 / 9;\n\t\t\t\tthis._aspectRatioMode = ASPECT_AUTO;\n\t\t\t\tthis._calculateProjection = null;\n\t\t\t\tthis._calculateTransform = null;\n\t\t\t\tthis._clearColor = new Color(0.75, 0.75, 0.75, 1);\n\t\t\t\tthis._clearColorBuffer = true;\n\t\t\t\tthis._clearDepth = 1;\n\t\t\t\tthis._clearDepthBuffer = true;\n\t\t\t\tthis._clearStencil = 0;\n\t\t\t\tthis._clearStencilBuffer = true;\n\t\t\t\tthis._cullFaces = true;\n\t\t\t\tthis._farClip = 1000;\n\t\t\t\tthis._flipFaces = false;\n\t\t\t\tthis._fov = 45;\n\t\t\t\tthis._frustumCulling = true;\n\t\t\t\tthis._horizontalFov = false;\n\t\t\t\tthis._layers = [\n\t\t\t\t\t\tLAYERID_WORLD,\n\t\t\t\t\t\tLAYERID_DEPTH,\n\t\t\t\t\t\tLAYERID_SKYBOX,\n\t\t\t\t\t\tLAYERID_UI,\n\t\t\t\t\t\tLAYERID_IMMEDIATE\n\t\t\t\t];\n\t\t\t\tthis._layersSet = new Set(this._layers);\n\t\t\t\tthis._nearClip = 0.1;\n\t\t\t\tthis._node = null;\n\t\t\t\tthis._orthoHeight = 10;\n\t\t\t\tthis._projection = PROJECTION_PERSPECTIVE;\n\t\t\t\tthis._rect = new Vec4(0, 0, 1, 1);\n\t\t\t\tthis._renderTarget = null;\n\t\t\t\tthis._scissorRect = new Vec4(0, 0, 1, 1);\n\t\t\t\tthis._scissorRectClear = false;\n\t\t\t\tthis._aperture = 16.0;\n\t\t\t\tthis._shutter = 1.0 / 1000.0;\n\t\t\t\tthis._sensitivity = 1000;\n\t\t\t\tthis._projMat = new Mat4();\n\t\t\t\tthis._projMatDirty = true;\n\t\t\t\tthis._projMatSkybox = new Mat4();\n\t\t\t\tthis._viewMat = new Mat4();\n\t\t\t\tthis._viewMatDirty = true;\n\t\t\t\tthis._viewProjMat = new Mat4();\n\t\t\t\tthis._viewProjMatDirty = true;\n\t\t\t\tthis._shaderMatricesVersion = 0;\n\t\t\t\tthis._viewProjInverse = new Mat4();\n\t\t\t\tthis._viewProjCurrent = null;\n\t\t\t\tthis._viewProjPrevious = new Mat4();\n\t\t\t\tthis._jitters = [\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0\n\t\t\t\t];\n\t\t\t\tthis.frustum = new Frustum();\n\t\t\t\tthis._xr = null;\n\t\t\t\tthis._xrProperties = {\n\t\t\t\t\t\thorizontalFov: this._horizontalFov,\n\t\t\t\t\t\tfov: this._fov,\n\t\t\t\t\t\taspectRatio: this._aspectRatio,\n\t\t\t\t\t\tfarClip: this._farClip,\n\t\t\t\t\t\tnearClip: this._nearClip\n\t\t\t\t};\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.renderPassColorGrab?.destroy();\n\t\t\t\tthis.renderPassColorGrab = null;\n\t\t\t\tthis.renderPassDepthGrab?.destroy();\n\t\t\t\tthis.renderPassDepthGrab = null;\n\t\t\t\tthis.renderPasses.length = 0;\n\t\t}\n\t\t_storeShaderMatrices(viewProjMat, jitterX, jitterY, renderVersion) {\n\t\t\t\tif (this._shaderMatricesVersion !== renderVersion) {\n\t\t\t\t\t\tthis._shaderMatricesVersion = renderVersion;\n\t\t\t\t\t\tthis._viewProjPrevious.copy(this._viewProjCurrent ?? viewProjMat);\n\t\t\t\t\t\tthis._viewProjCurrent ??= new Mat4();\n\t\t\t\t\t\tthis._viewProjCurrent.copy(viewProjMat);\n\t\t\t\t\t\tthis._viewProjInverse.invert(viewProjMat);\n\t\t\t\t\t\tthis._jitters[2] = this._jitters[0];\n\t\t\t\t\t\tthis._jitters[3] = this._jitters[1];\n\t\t\t\t\t\tthis._jitters[0] = jitterX;\n\t\t\t\t\t\tthis._jitters[1] = jitterY;\n\t\t\t\t}\n\t\t}\n\t\tget fullSizeClearRect() {\n\t\t\t\tconst rect = this._scissorRectClear ? this.scissorRect : this._rect;\n\t\t\t\treturn rect.x === 0 && rect.y === 0 && rect.z === 1 && rect.w === 1;\n\t\t}\n\t\tset aspectRatio(newValue) {\n\t\t\t\tif (this._aspectRatio !== newValue) {\n\t\t\t\t\t\tthis._aspectRatio = newValue;\n\t\t\t\t\t\tthis._projMatDirty = true;\n\t\t\t\t}\n\t\t}\n\t\tget aspectRatio() {\n\t\t\t\treturn this.xr?.active ? this._xrProperties.aspectRatio : this._aspectRatio;\n\t\t}\n\t\tset aspectRatioMode(newValue) {\n\t\t\t\tif (this._aspectRatioMode !== newValue) {\n\t\t\t\t\t\tthis._aspectRatioMode = newValue;\n\t\t\t\t\t\tthis._projMatDirty = true;\n\t\t\t\t}\n\t\t}\n\t\tget aspectRatioMode() {\n\t\t\t\treturn this._aspectRatioMode;\n\t\t}\n\t\tset calculateProjection(newValue) {\n\t\t\t\tthis._calculateProjection = newValue;\n\t\t\t\tthis._projMatDirty = true;\n\t\t}\n\t\tget calculateProjection() {\n\t\t\t\treturn this._calculateProjection;\n\t\t}\n\t\tset calculateTransform(newValue) {\n\t\t\t\tthis._calculateTransform = newValue;\n\t\t}\n\t\tget calculateTransform() {\n\t\t\t\treturn this._calculateTransform;\n\t\t}\n\t\tset clearColor(newValue) {\n\t\t\t\tthis._clearColor.copy(newValue);\n\t\t}\n\t\tget clearColor() {\n\t\t\t\treturn this._clearColor;\n\t\t}\n\t\tset clearColorBuffer(newValue) {\n\t\t\t\tthis._clearColorBuffer = newValue;\n\t\t}\n\t\tget clearColorBuffer() {\n\t\t\t\treturn this._clearColorBuffer;\n\t\t}\n\t\tset clearDepth(newValue) {\n\t\t\t\tthis._clearDepth = newValue;\n\t\t}\n\t\tget clearDepth() {\n\t\t\t\treturn this._clearDepth;\n\t\t}\n\t\tset clearDepthBuffer(newValue) {\n\t\t\t\tthis._clearDepthBuffer = newValue;\n\t\t}\n\t\tget clearDepthBuffer() {\n\t\t\t\treturn this._clearDepthBuffer;\n\t\t}\n\t\tset clearStencil(newValue) {\n\t\t\t\tthis._clearStencil = newValue;\n\t\t}\n\t\tget clearStencil() {\n\t\t\t\treturn this._clearStencil;\n\t\t}\n\t\tset clearStencilBuffer(newValue) {\n\t\t\t\tthis._clearStencilBuffer = newValue;\n\t\t}\n\t\tget clearStencilBuffer() {\n\t\t\t\treturn this._clearStencilBuffer;\n\t\t}\n\t\tset cullFaces(newValue) {\n\t\t\t\tthis._cullFaces = newValue;\n\t\t}\n\t\tget cullFaces() {\n\t\t\t\treturn this._cullFaces;\n\t\t}\n\t\tset farClip(newValue) {\n\t\t\t\tif (this._farClip !== newValue) {\n\t\t\t\t\t\tthis._farClip = newValue;\n\t\t\t\t\t\tthis._projMatDirty = true;\n\t\t\t\t}\n\t\t}\n\t\tget farClip() {\n\t\t\t\treturn this.xr?.active ? this._xrProperties.farClip : this._farClip;\n\t\t}\n\t\tset flipFaces(newValue) {\n\t\t\t\tthis._flipFaces = newValue;\n\t\t}\n\t\tget flipFaces() {\n\t\t\t\treturn this._flipFaces;\n\t\t}\n\t\tset fov(newValue) {\n\t\t\t\tif (this._fov !== newValue) {\n\t\t\t\t\t\tthis._fov = newValue;\n\t\t\t\t\t\tthis._projMatDirty = true;\n\t\t\t\t}\n\t\t}\n\t\tget fov() {\n\t\t\t\treturn this.xr?.active ? this._xrProperties.fov : this._fov;\n\t\t}\n\t\tset frustumCulling(newValue) {\n\t\t\t\tthis._frustumCulling = newValue;\n\t\t}\n\t\tget frustumCulling() {\n\t\t\t\treturn this._frustumCulling;\n\t\t}\n\t\tset horizontalFov(newValue) {\n\t\t\t\tif (this._horizontalFov !== newValue) {\n\t\t\t\t\t\tthis._horizontalFov = newValue;\n\t\t\t\t\t\tthis._projMatDirty = true;\n\t\t\t\t}\n\t\t}\n\t\tget horizontalFov() {\n\t\t\t\treturn this.xr?.active ? this._xrProperties.horizontalFov : this._horizontalFov;\n\t\t}\n\t\tset layers(newValue) {\n\t\t\t\tthis._layers = newValue.slice(0);\n\t\t\t\tthis._layersSet = new Set(this._layers);\n\t\t}\n\t\tget layers() {\n\t\t\t\treturn this._layers;\n\t\t}\n\t\tget layersSet() {\n\t\t\t\treturn this._layersSet;\n\t\t}\n\t\tset nearClip(newValue) {\n\t\t\t\tif (this._nearClip !== newValue) {\n\t\t\t\t\t\tthis._nearClip = newValue;\n\t\t\t\t\t\tthis._projMatDirty = true;\n\t\t\t\t}\n\t\t}\n\t\tget nearClip() {\n\t\t\t\treturn this.xr?.active ? this._xrProperties.nearClip : this._nearClip;\n\t\t}\n\t\tset node(newValue) {\n\t\t\t\tthis._node = newValue;\n\t\t}\n\t\tget node() {\n\t\t\t\treturn this._node;\n\t\t}\n\t\tset orthoHeight(newValue) {\n\t\t\t\tif (this._orthoHeight !== newValue) {\n\t\t\t\t\t\tthis._orthoHeight = newValue;\n\t\t\t\t\t\tthis._projMatDirty = true;\n\t\t\t\t}\n\t\t}\n\t\tget orthoHeight() {\n\t\t\t\treturn this._orthoHeight;\n\t\t}\n\t\tset projection(newValue) {\n\t\t\t\tif (this._projection !== newValue) {\n\t\t\t\t\t\tthis._projection = newValue;\n\t\t\t\t\t\tthis._projMatDirty = true;\n\t\t\t\t}\n\t\t}\n\t\tget projection() {\n\t\t\t\treturn this._projection;\n\t\t}\n\t\tget projectionMatrix() {\n\t\t\t\tthis._evaluateProjectionMatrix();\n\t\t\t\treturn this._projMat;\n\t\t}\n\t\tset rect(newValue) {\n\t\t\t\tthis._rect.copy(newValue);\n\t\t}\n\t\tget rect() {\n\t\t\t\treturn this._rect;\n\t\t}\n\t\tset renderTarget(newValue) {\n\t\t\t\tthis._renderTarget = newValue;\n\t\t}\n\t\tget renderTarget() {\n\t\t\t\treturn this._renderTarget;\n\t\t}\n\t\tset scissorRect(newValue) {\n\t\t\t\tthis._scissorRect.copy(newValue);\n\t\t}\n\t\tget scissorRect() {\n\t\t\t\treturn this._scissorRect;\n\t\t}\n\t\tget viewMatrix() {\n\t\t\t\tif (this._viewMatDirty) {\n\t\t\t\t\t\tconst wtm = this._node.getWorldTransform();\n\t\t\t\t\t\tthis._viewMat.copy(wtm).invert();\n\t\t\t\t\t\tthis._viewMatDirty = false;\n\t\t\t\t}\n\t\t\t\treturn this._viewMat;\n\t\t}\n\t\tset aperture(newValue) {\n\t\t\t\tthis._aperture = newValue;\n\t\t}\n\t\tget aperture() {\n\t\t\t\treturn this._aperture;\n\t\t}\n\t\tset sensitivity(newValue) {\n\t\t\t\tthis._sensitivity = newValue;\n\t\t}\n\t\tget sensitivity() {\n\t\t\t\treturn this._sensitivity;\n\t\t}\n\t\tset shutter(newValue) {\n\t\t\t\tthis._shutter = newValue;\n\t\t}\n\t\tget shutter() {\n\t\t\t\treturn this._shutter;\n\t\t}\n\t\tset xr(newValue) {\n\t\t\t\tif (this._xr !== newValue) {\n\t\t\t\t\t\tthis._xr = newValue;\n\t\t\t\t\t\tthis._projMatDirty = true;\n\t\t\t\t}\n\t\t}\n\t\tget xr() {\n\t\t\t\treturn this._xr;\n\t\t}\n\t\tclone() {\n\t\t\t\treturn new Camera().copy(this);\n\t\t}\n\t\tcopy(other) {\n\t\t\t\tthis._aspectRatio = other._aspectRatio;\n\t\t\t\tthis._farClip = other._farClip;\n\t\t\t\tthis._fov = other._fov;\n\t\t\t\tthis._horizontalFov = other._horizontalFov;\n\t\t\t\tthis._nearClip = other._nearClip;\n\t\t\t\tthis._xrProperties.aspectRatio = other._xrProperties.aspectRatio;\n\t\t\t\tthis._xrProperties.farClip = other._xrProperties.farClip;\n\t\t\t\tthis._xrProperties.fov = other._xrProperties.fov;\n\t\t\t\tthis._xrProperties.horizontalFov = other._xrProperties.horizontalFov;\n\t\t\t\tthis._xrProperties.nearClip = other._xrProperties.nearClip;\n\t\t\t\tthis.aspectRatioMode = other.aspectRatioMode;\n\t\t\t\tthis.calculateProjection = other.calculateProjection;\n\t\t\t\tthis.calculateTransform = other.calculateTransform;\n\t\t\t\tthis.clearColor = other.clearColor;\n\t\t\t\tthis.clearColorBuffer = other.clearColorBuffer;\n\t\t\t\tthis.clearDepth = other.clearDepth;\n\t\t\t\tthis.clearDepthBuffer = other.clearDepthBuffer;\n\t\t\t\tthis.clearStencil = other.clearStencil;\n\t\t\t\tthis.clearStencilBuffer = other.clearStencilBuffer;\n\t\t\t\tthis.cullFaces = other.cullFaces;\n\t\t\t\tthis.flipFaces = other.flipFaces;\n\t\t\t\tthis.frustumCulling = other.frustumCulling;\n\t\t\t\tthis.layers = other.layers;\n\t\t\t\tthis.orthoHeight = other.orthoHeight;\n\t\t\t\tthis.projection = other.projection;\n\t\t\t\tthis.rect = other.rect;\n\t\t\t\tthis.renderTarget = other.renderTarget;\n\t\t\t\tthis.scissorRect = other.scissorRect;\n\t\t\t\tthis.aperture = other.aperture;\n\t\t\t\tthis.shutter = other.shutter;\n\t\t\t\tthis.sensitivity = other.sensitivity;\n\t\t\t\tthis.shaderPassInfo = other.shaderPassInfo;\n\t\t\t\tthis.jitter = other.jitter;\n\t\t\t\tthis._projMatDirty = true;\n\t\t\t\treturn this;\n\t\t}\n\t\t_enableRenderPassColorGrab(device, enable) {\n\t\t\t\tif (enable) {\n\t\t\t\t\t\tif (!this.renderPassColorGrab) {\n\t\t\t\t\t\t\t\tthis.renderPassColorGrab = new RenderPassColorGrab(device);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.renderPassColorGrab?.destroy();\n\t\t\t\t\t\tthis.renderPassColorGrab = null;\n\t\t\t\t}\n\t\t}\n\t\t_enableRenderPassDepthGrab(device, renderer, enable) {\n\t\t\t\tif (enable) {\n\t\t\t\t\t\tif (!this.renderPassDepthGrab) {\n\t\t\t\t\t\t\t\tthis.renderPassDepthGrab = new RenderPassDepthGrab(device, this);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.renderPassDepthGrab?.destroy();\n\t\t\t\t\t\tthis.renderPassDepthGrab = null;\n\t\t\t\t}\n\t\t}\n\t\t_updateViewProjMat() {\n\t\t\t\tif (this._projMatDirty || this._viewMatDirty || this._viewProjMatDirty) {\n\t\t\t\t\t\tthis._viewProjMat.mul2(this.projectionMatrix, this.viewMatrix);\n\t\t\t\t\t\tthis._viewProjMatDirty = false;\n\t\t\t\t}\n\t\t}\n\t\tworldToScreen(worldCoord, cw, ch, screenCoord = new Vec3()) {\n\t\t\t\tthis._updateViewProjMat();\n\t\t\t\tthis._viewProjMat.transformPoint(worldCoord, screenCoord);\n\t\t\t\tconst vpm = this._viewProjMat.data;\n\t\t\t\tconst w = worldCoord.x * vpm[3] + worldCoord.y * vpm[7] + worldCoord.z * vpm[11] + 1 * vpm[15];\n\t\t\t\tscreenCoord.x = (screenCoord.x / w + 1) * 0.5;\n\t\t\t\tscreenCoord.y = (1 - screenCoord.y / w) * 0.5;\n\t\t\t\tconst { x: rx, y: ry, z: rw, w: rh } = this._rect;\n\t\t\t\tscreenCoord.x = screenCoord.x * rw * cw + rx * cw;\n\t\t\t\tscreenCoord.y = screenCoord.y * rh * ch + (1 - ry - rh) * ch;\n\t\t\t\treturn screenCoord;\n\t\t}\n\t\tscreenToWorld(x, y, z, cw, ch, worldCoord = new Vec3()) {\n\t\t\t\tconst { x: rx, y: ry, z: rw, w: rh } = this._rect;\n\t\t\t\tconst range = this.farClip - this.nearClip;\n\t\t\t\t_deviceCoord.set((x - rx * cw) / (rw * cw), 1 - (y - (1 - ry - rh) * ch) / (rh * ch), z / range);\n\t\t\t\t_deviceCoord.mulScalar(2);\n\t\t\t\t_deviceCoord.sub(Vec3.ONE);\n\t\t\t\tif (this._projection === PROJECTION_PERSPECTIVE) {\n\t\t\t\t\t\tMat4._getPerspectiveHalfSize(_halfSize, this.fov, this.aspectRatio, this.nearClip, this.horizontalFov);\n\t\t\t\t\t\t_halfSize.x *= _deviceCoord.x;\n\t\t\t\t\t\t_halfSize.y *= _deviceCoord.y;\n\t\t\t\t\t\tconst invView = this._node.getWorldTransform();\n\t\t\t\t\t\t_halfSize.z = -this.nearClip;\n\t\t\t\t\t\tinvView.transformPoint(_halfSize, _point$1);\n\t\t\t\t\t\tconst cameraPos = this._node.getPosition();\n\t\t\t\t\t\tworldCoord.sub2(_point$1, cameraPos);\n\t\t\t\t\t\tworldCoord.normalize();\n\t\t\t\t\t\tworldCoord.mulScalar(z);\n\t\t\t\t\t\tworldCoord.add(cameraPos);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._updateViewProjMat();\n\t\t\t\t\t\t_invViewProjMat.copy(this._viewProjMat).invert();\n\t\t\t\t\t\t_invViewProjMat.transformPoint(_deviceCoord, worldCoord);\n\t\t\t\t}\n\t\t\t\treturn worldCoord;\n\t\t}\n\t\t_evaluateProjectionMatrix() {\n\t\t\t\tif (this._projMatDirty) {\n\t\t\t\t\t\tif (this._projection === PROJECTION_PERSPECTIVE) {\n\t\t\t\t\t\t\t\tthis._projMat.setPerspective(this.fov, this.aspectRatio, this.nearClip, this.farClip, this.horizontalFov);\n\t\t\t\t\t\t\t\tthis._projMatSkybox.copy(this._projMat);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst y = this._orthoHeight;\n\t\t\t\t\t\t\t\tconst x = y * this.aspectRatio;\n\t\t\t\t\t\t\t\tthis._projMat.setOrtho(-x, x, -y, y, this.nearClip, this.farClip);\n\t\t\t\t\t\t\t\tthis._projMatSkybox.setPerspective(this.fov, this.aspectRatio, this.nearClip, this.farClip);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._projMatDirty = false;\n\t\t\t\t}\n\t\t}\n\t\tgetProjectionMatrixSkybox() {\n\t\t\t\tthis._evaluateProjectionMatrix();\n\t\t\t\treturn this._projMatSkybox;\n\t\t}\n\t\tgetExposure() {\n\t\t\t\tconst ev100 = Math.log2(this._aperture * this._aperture / this._shutter * 100.0 / this._sensitivity);\n\t\t\t\treturn 1.0 / (Math.pow(2.0, ev100) * 1.2);\n\t\t}\n\t\tgetScreenSize(sphere) {\n\t\t\t\tif (this._projection === PROJECTION_PERSPECTIVE) {\n\t\t\t\t\t\tconst distance = this._node.getPosition().distance(sphere.center);\n\t\t\t\t\t\tif (distance < sphere.radius) {\n\t\t\t\t\t\t\t\treturn 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst viewAngle = Math.asin(sphere.radius / distance);\n\t\t\t\t\t\tconst sphereViewHeight = Math.tan(viewAngle);\n\t\t\t\t\t\tconst screenViewHeight = Math.tan(this.fov / 2 * math.DEG_TO_RAD);\n\t\t\t\t\t\treturn Math.min(sphereViewHeight / screenViewHeight, 1);\n\t\t\t\t}\n\t\t\t\treturn math.clamp(sphere.radius / this._orthoHeight, 0, 1);\n\t\t}\n\t\tgetFrustumCorners(near = this.nearClip, far = this.farClip) {\n\t\t\t\tconst fov = this.fov * math.DEG_TO_RAD;\n\t\t\t\tlet x, y;\n\t\t\t\tif (this.projection === PROJECTION_PERSPECTIVE) {\n\t\t\t\t\t\tif (this.horizontalFov) {\n\t\t\t\t\t\t\t\tx = near * Math.tan(fov / 2.0);\n\t\t\t\t\t\t\t\ty = x / this.aspectRatio;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ty = near * Math.tan(fov / 2.0);\n\t\t\t\t\t\t\t\tx = y * this.aspectRatio;\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\ty = this._orthoHeight;\n\t\t\t\t\t\tx = y * this.aspectRatio;\n\t\t\t\t}\n\t\t\t\tconst points = _frustumPoints;\n\t\t\t\tpoints[0].x = x;\n\t\t\t\tpoints[0].y = -y;\n\t\t\t\tpoints[0].z = -near;\n\t\t\t\tpoints[1].x = x;\n\t\t\t\tpoints[1].y = y;\n\t\t\t\tpoints[1].z = -near;\n\t\t\t\tpoints[2].x = -x;\n\t\t\t\tpoints[2].y = y;\n\t\t\t\tpoints[2].z = -near;\n\t\t\t\tpoints[3].x = -x;\n\t\t\t\tpoints[3].y = -y;\n\t\t\t\tpoints[3].z = -near;\n\t\t\t\tif (this._projection === PROJECTION_PERSPECTIVE) {\n\t\t\t\t\t\tif (this.horizontalFov) {\n\t\t\t\t\t\t\t\tx = far * Math.tan(fov / 2.0);\n\t\t\t\t\t\t\t\ty = x / this.aspectRatio;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ty = far * Math.tan(fov / 2.0);\n\t\t\t\t\t\t\t\tx = y * this.aspectRatio;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tpoints[4].x = x;\n\t\t\t\tpoints[4].y = -y;\n\t\t\t\tpoints[4].z = -far;\n\t\t\t\tpoints[5].x = x;\n\t\t\t\tpoints[5].y = y;\n\t\t\t\tpoints[5].z = -far;\n\t\t\t\tpoints[6].x = -x;\n\t\t\t\tpoints[6].y = y;\n\t\t\t\tpoints[6].z = -far;\n\t\t\t\tpoints[7].x = -x;\n\t\t\t\tpoints[7].y = -y;\n\t\t\t\tpoints[7].z = -far;\n\t\t\t\treturn points;\n\t\t}\n\t\tsetXrProperties(properties) {\n\t\t\t\tObject.assign(this._xrProperties, properties);\n\t\t\t\tthis._projMatDirty = true;\n\t\t}\n}\n\nconst scaleCompensatePosTransform = new Mat4();\nconst scaleCompensatePos = new Vec3();\nconst scaleCompensateRot = new Quat();\nconst scaleCompensateRot2 = new Quat();\nconst scaleCompensateScale = new Vec3();\nconst scaleCompensateScaleForParent = new Vec3();\nconst tmpMat4 = new Mat4();\nconst tmpQuat = new Quat();\nconst position$3 = new Vec3();\nconst invParentWtm$1 = new Mat4();\nconst rotation$5 = new Quat();\nconst invParentRot = new Quat();\nconst matrix = new Mat4();\nconst target = new Vec3();\nconst up$1 = new Vec3();\nfunction createTest(attr, value) {\n\t\tif (attr instanceof Function) {\n\t\t\t\treturn attr;\n\t\t}\n\t\treturn (node)=>{\n\t\t\t\tlet x = node[attr];\n\t\t\t\tif (x instanceof Function) {\n\t\t\t\t\t\tx = x();\n\t\t\t\t}\n\t\t\t\treturn x === value;\n\t\t};\n}\nfunction findNode(node, test) {\n\t\tif (test(node)) {\n\t\t\t\treturn node;\n\t\t}\n\t\tconst children = node._children;\n\t\tconst len = children.length;\n\t\tfor(let i = 0; i < len; ++i){\n\t\t\t\tconst result = findNode(children[i], test);\n\t\t\t\tif (result) {\n\t\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t}\n\t\treturn null;\n}\nclass GraphNode extends EventHandler {\n\t\tconstructor(name = 'Untitled'){\n\t\t\t\tsuper(), this.tags = new Tags(this), this.localPosition = new Vec3(), this.localRotation = new Quat(), this.localScale = new Vec3(1, 1, 1), this.localEulerAngles = new Vec3(), this.position = new Vec3(), this.rotation = new Quat(), this.eulerAngles = new Vec3(), this._scale = null, this.localTransform = new Mat4(), this._dirtyLocal = false, this._aabbVer = 0, this._frozen = false, this.worldTransform = new Mat4(), this._dirtyWorld = false, this._worldScaleSign = 0, this._normalMatrix = new Mat3(), this._dirtyNormal = true, this._right = null, this._up = null, this._forward = null, this._parent = null, this._children = [], this._graphDepth = 0, this._enabled = true, this._enabledInHierarchy = false, this.scaleCompensation = false;\n\t\t\t\tthis.name = name;\n\t\t}\n\t\tget right() {\n\t\t\t\tif (!this._right) {\n\t\t\t\t\t\tthis._right = new Vec3();\n\t\t\t\t}\n\t\t\t\treturn this.getWorldTransform().getX(this._right).normalize();\n\t\t}\n\t\tget up() {\n\t\t\t\tif (!this._up) {\n\t\t\t\t\t\tthis._up = new Vec3();\n\t\t\t\t}\n\t\t\t\treturn this.getWorldTransform().getY(this._up).normalize();\n\t\t}\n\t\tget forward() {\n\t\t\t\tif (!this._forward) {\n\t\t\t\t\t\tthis._forward = new Vec3();\n\t\t\t\t}\n\t\t\t\treturn this.getWorldTransform().getZ(this._forward).normalize().mulScalar(-1);\n\t\t}\n\t\tget normalMatrix() {\n\t\t\t\tconst normalMat = this._normalMatrix;\n\t\t\t\tif (this._dirtyNormal) {\n\t\t\t\t\t\tnormalMat.invertMat4(this.getWorldTransform()).transpose();\n\t\t\t\t\t\tthis._dirtyNormal = false;\n\t\t\t\t}\n\t\t\t\treturn normalMat;\n\t\t}\n\t\tset enabled(enabled) {\n\t\t\t\tif (this._enabled !== enabled) {\n\t\t\t\t\t\tthis._enabled = enabled;\n\t\t\t\t\t\tif (enabled && this._parent?.enabled || !enabled) {\n\t\t\t\t\t\t\t\tthis._notifyHierarchyStateChanged(this, enabled);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget enabled() {\n\t\t\t\treturn this._enabled && this._enabledInHierarchy;\n\t\t}\n\t\tget parent() {\n\t\t\t\treturn this._parent;\n\t\t}\n\t\tget path() {\n\t\t\t\tlet node = this._parent;\n\t\t\t\tif (!node) {\n\t\t\t\t\t\treturn '';\n\t\t\t\t}\n\t\t\t\tlet result = this.name;\n\t\t\t\twhile(node && node._parent){\n\t\t\t\t\t\tresult = `${node.name}/${result}`;\n\t\t\t\t\t\tnode = node._parent;\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t}\n\t\tget root() {\n\t\t\t\tlet result = this;\n\t\t\t\twhile(result._parent){\n\t\t\t\t\t\tresult = result._parent;\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t}\n\t\tget children() {\n\t\t\t\treturn this._children;\n\t\t}\n\t\tget graphDepth() {\n\t\t\t\treturn this._graphDepth;\n\t\t}\n\t\t_notifyHierarchyStateChanged(node, enabled) {\n\t\t\t\tnode._onHierarchyStateChanged(enabled);\n\t\t\t\tconst c = node._children;\n\t\t\t\tfor(let i = 0, len = c.length; i < len; i++){\n\t\t\t\t\t\tif (c[i]._enabled) {\n\t\t\t\t\t\t\t\tthis._notifyHierarchyStateChanged(c[i], enabled);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_onHierarchyStateChanged(enabled) {\n\t\t\t\tthis._enabledInHierarchy = enabled;\n\t\t\t\tif (enabled && !this._frozen) {\n\t\t\t\t\t\tthis._unfreezeParentToRoot();\n\t\t\t\t}\n\t\t}\n\t\t_cloneInternal(clone) {\n\t\t\t\tclone.name = this.name;\n\t\t\t\tconst tags = this.tags._list;\n\t\t\t\tclone.tags.clear();\n\t\t\t\tfor(let i = 0; i < tags.length; i++){\n\t\t\t\t\t\tclone.tags.add(tags[i]);\n\t\t\t\t}\n\t\t\t\tclone.localPosition.copy(this.localPosition);\n\t\t\t\tclone.localRotation.copy(this.localRotation);\n\t\t\t\tclone.localScale.copy(this.localScale);\n\t\t\t\tclone.localEulerAngles.copy(this.localEulerAngles);\n\t\t\t\tclone.position.copy(this.position);\n\t\t\t\tclone.rotation.copy(this.rotation);\n\t\t\t\tclone.eulerAngles.copy(this.eulerAngles);\n\t\t\t\tclone.localTransform.copy(this.localTransform);\n\t\t\t\tclone._dirtyLocal = this._dirtyLocal;\n\t\t\t\tclone.worldTransform.copy(this.worldTransform);\n\t\t\t\tclone._dirtyWorld = this._dirtyWorld;\n\t\t\t\tclone._dirtyNormal = this._dirtyNormal;\n\t\t\t\tclone._aabbVer = this._aabbVer + 1;\n\t\t\t\tclone._enabled = this._enabled;\n\t\t\t\tclone.scaleCompensation = this.scaleCompensation;\n\t\t\t\tclone._enabledInHierarchy = false;\n\t\t}\n\t\tclone() {\n\t\t\t\tconst clone = new this.constructor();\n\t\t\t\tthis._cloneInternal(clone);\n\t\t\t\treturn clone;\n\t\t}\n\t\tcopy(source) {\n\t\t\t\tsource._cloneInternal(this);\n\t\t\t\treturn this;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.remove();\n\t\t\t\tconst children = this._children;\n\t\t\t\twhile(children.length){\n\t\t\t\t\t\tconst child = children.pop();\n\t\t\t\t\t\tchild._parent = null;\n\t\t\t\t\t\tchild.destroy();\n\t\t\t\t}\n\t\t\t\tthis.fire('destroy', this);\n\t\t\t\tthis.off();\n\t\t}\n\t\tfind(attr, value) {\n\t\t\t\tconst results = [];\n\t\t\t\tconst test = createTest(attr, value);\n\t\t\t\tthis.forEach((node)=>{\n\t\t\t\t\t\tif (test(node)) {\n\t\t\t\t\t\t\t\tresults.push(node);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn results;\n\t\t}\n\t\tfindOne(attr, value) {\n\t\t\t\tconst test = createTest(attr, value);\n\t\t\t\treturn findNode(this, test);\n\t\t}\n\t\tfindByTag(...query) {\n\t\t\t\tconst results = [];\n\t\t\t\tconst queryNode = (node, checkNode)=>{\n\t\t\t\t\t\tif (checkNode && node.tags.has(...query)) {\n\t\t\t\t\t\t\t\tresults.push(node);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor(let i = 0; i < node._children.length; i++){\n\t\t\t\t\t\t\t\tqueryNode(node._children[i], true);\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tqueryNode(this, false);\n\t\t\t\treturn results;\n\t\t}\n\t\tfindByName(name) {\n\t\t\t\treturn this.findOne('name', name);\n\t\t}\n\t\tfindByPath(path) {\n\t\t\t\tconst parts = Array.isArray(path) ? path : path.split('/');\n\t\t\t\tlet result = this;\n\t\t\t\tfor(let i = 0, imax = parts.length; i < imax; ++i){\n\t\t\t\t\t\tresult = result.children.find((c)=>c.name === parts[i]);\n\t\t\t\t\t\tif (!result) {\n\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t}\n\t\tforEach(callback, thisArg) {\n\t\t\t\tcallback.call(thisArg, this);\n\t\t\t\tconst children = this._children;\n\t\t\t\tconst len = children.length;\n\t\t\t\tfor(let i = 0; i < len; ++i){\n\t\t\t\t\t\tchildren[i].forEach(callback, thisArg);\n\t\t\t\t}\n\t\t}\n\t\tisDescendantOf(node) {\n\t\t\t\tlet parent = this._parent;\n\t\t\t\twhile(parent){\n\t\t\t\t\t\tif (parent === node) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tparent = parent._parent;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t}\n\t\tisAncestorOf(node) {\n\t\t\t\treturn node.isDescendantOf(this);\n\t\t}\n\t\tgetEulerAngles() {\n\t\t\t\tthis.getWorldTransform().getEulerAngles(this.eulerAngles);\n\t\t\t\treturn this.eulerAngles;\n\t\t}\n\t\tgetLocalEulerAngles() {\n\t\t\t\tthis.localRotation.getEulerAngles(this.localEulerAngles);\n\t\t\t\treturn this.localEulerAngles;\n\t\t}\n\t\tgetLocalPosition() {\n\t\t\t\treturn this.localPosition;\n\t\t}\n\t\tgetLocalRotation() {\n\t\t\t\treturn this.localRotation;\n\t\t}\n\t\tgetLocalScale() {\n\t\t\t\treturn this.localScale;\n\t\t}\n\t\tgetLocalTransform() {\n\t\t\t\tif (this._dirtyLocal) {\n\t\t\t\t\t\tthis.localTransform.setTRS(this.localPosition, this.localRotation, this.localScale);\n\t\t\t\t\t\tthis._dirtyLocal = false;\n\t\t\t\t}\n\t\t\t\treturn this.localTransform;\n\t\t}\n\t\tgetPosition() {\n\t\t\t\tthis.getWorldTransform().getTranslation(this.position);\n\t\t\t\treturn this.position;\n\t\t}\n\t\tgetRotation() {\n\t\t\t\tthis.rotation.setFromMat4(this.getWorldTransform());\n\t\t\t\treturn this.rotation;\n\t\t}\n\t\tgetScale() {\n\t\t\t\tif (!this._scale) {\n\t\t\t\t\t\tthis._scale = new Vec3();\n\t\t\t\t}\n\t\t\t\treturn this.getWorldTransform().getScale(this._scale);\n\t\t}\n\t\tgetWorldTransform() {\n\t\t\t\tif (!this._dirtyLocal && !this._dirtyWorld) {\n\t\t\t\t\t\treturn this.worldTransform;\n\t\t\t\t}\n\t\t\t\tif (this._parent) {\n\t\t\t\t\t\tthis._parent.getWorldTransform();\n\t\t\t\t}\n\t\t\t\tthis._sync();\n\t\t\t\treturn this.worldTransform;\n\t\t}\n\t\tget worldScaleSign() {\n\t\t\t\tif (this._worldScaleSign === 0) {\n\t\t\t\t\t\tthis._worldScaleSign = this.getWorldTransform().scaleSign;\n\t\t\t\t}\n\t\t\t\treturn this._worldScaleSign;\n\t\t}\n\t\tremove() {\n\t\t\t\tthis._parent?.removeChild(this);\n\t\t}\n\t\treparent(parent, index) {\n\t\t\t\tthis.remove();\n\t\t\t\tif (parent) {\n\t\t\t\t\t\tif (index >= 0) {\n\t\t\t\t\t\t\t\tparent.insertChild(this, index);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tparent.addChild(this);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tsetLocalEulerAngles(x, y, z) {\n\t\t\t\tthis.localRotation.setFromEulerAngles(x, y, z);\n\t\t\t\tif (!this._dirtyLocal) {\n\t\t\t\t\t\tthis._dirtifyLocal();\n\t\t\t\t}\n\t\t}\n\t\tsetLocalPosition(x, y, z) {\n\t\t\t\tif (x instanceof Vec3) {\n\t\t\t\t\t\tthis.localPosition.copy(x);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.localPosition.set(x, y, z);\n\t\t\t\t}\n\t\t\t\tif (!this._dirtyLocal) {\n\t\t\t\t\t\tthis._dirtifyLocal();\n\t\t\t\t}\n\t\t}\n\t\tsetLocalRotation(x, y, z, w) {\n\t\t\t\tif (x instanceof Quat) {\n\t\t\t\t\t\tthis.localRotation.copy(x);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.localRotation.set(x, y, z, w);\n\t\t\t\t}\n\t\t\t\tif (!this._dirtyLocal) {\n\t\t\t\t\t\tthis._dirtifyLocal();\n\t\t\t\t}\n\t\t}\n\t\tsetLocalScale(x, y, z) {\n\t\t\t\tif (x instanceof Vec3) {\n\t\t\t\t\t\tthis.localScale.copy(x);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.localScale.set(x, y, z);\n\t\t\t\t}\n\t\t\t\tif (!this._dirtyLocal) {\n\t\t\t\t\t\tthis._dirtifyLocal();\n\t\t\t\t}\n\t\t}\n\t\t_dirtifyLocal() {\n\t\t\t\tif (!this._dirtyLocal) {\n\t\t\t\t\t\tthis._dirtyLocal = true;\n\t\t\t\t\t\tif (!this._dirtyWorld) {\n\t\t\t\t\t\t\t\tthis._dirtifyWorld();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_unfreezeParentToRoot() {\n\t\t\t\tlet p = this._parent;\n\t\t\t\twhile(p){\n\t\t\t\t\t\tp._frozen = false;\n\t\t\t\t\t\tp = p._parent;\n\t\t\t\t}\n\t\t}\n\t\t_dirtifyWorld() {\n\t\t\t\tif (!this._dirtyWorld) {\n\t\t\t\t\t\tthis._unfreezeParentToRoot();\n\t\t\t\t}\n\t\t\t\tthis._dirtifyWorldInternal();\n\t\t}\n\t\t_dirtifyWorldInternal() {\n\t\t\t\tif (!this._dirtyWorld) {\n\t\t\t\t\t\tthis._frozen = false;\n\t\t\t\t\t\tthis._dirtyWorld = true;\n\t\t\t\t\t\tfor(let i = 0; i < this._children.length; i++){\n\t\t\t\t\t\t\t\tif (!this._children[i]._dirtyWorld) {\n\t\t\t\t\t\t\t\t\t\tthis._children[i]._dirtifyWorldInternal();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._dirtyNormal = true;\n\t\t\t\tthis._worldScaleSign = 0;\n\t\t\t\tthis._aabbVer++;\n\t\t}\n\t\tsetPosition(x, y, z) {\n\t\t\t\tif (x instanceof Vec3) {\n\t\t\t\t\t\tposition$3.copy(x);\n\t\t\t\t} else {\n\t\t\t\t\t\tposition$3.set(x, y, z);\n\t\t\t\t}\n\t\t\t\tif (this._parent === null) {\n\t\t\t\t\t\tthis.localPosition.copy(position$3);\n\t\t\t\t} else {\n\t\t\t\t\t\tinvParentWtm$1.copy(this._parent.getWorldTransform()).invert();\n\t\t\t\t\t\tinvParentWtm$1.transformPoint(position$3, this.localPosition);\n\t\t\t\t}\n\t\t\t\tif (!this._dirtyLocal) {\n\t\t\t\t\t\tthis._dirtifyLocal();\n\t\t\t\t}\n\t\t}\n\t\tsetRotation(x, y, z, w) {\n\t\t\t\tif (x instanceof Quat) {\n\t\t\t\t\t\trotation$5.copy(x);\n\t\t\t\t} else {\n\t\t\t\t\t\trotation$5.set(x, y, z, w);\n\t\t\t\t}\n\t\t\t\tif (this._parent === null) {\n\t\t\t\t\t\tthis.localRotation.copy(rotation$5);\n\t\t\t\t} else {\n\t\t\t\t\t\tconst parentRot = this._parent.getRotation();\n\t\t\t\t\t\tinvParentRot.copy(parentRot).invert();\n\t\t\t\t\t\tthis.localRotation.copy(invParentRot).mul(rotation$5);\n\t\t\t\t}\n\t\t\t\tif (!this._dirtyLocal) {\n\t\t\t\t\t\tthis._dirtifyLocal();\n\t\t\t\t}\n\t\t}\n\t\tsetPositionAndRotation(position, rotation) {\n\t\t\t\tif (this._parent === null) {\n\t\t\t\t\t\tthis.localPosition.copy(position);\n\t\t\t\t\t\tthis.localRotation.copy(rotation);\n\t\t\t\t} else {\n\t\t\t\t\t\tconst parentWtm = this._parent.getWorldTransform();\n\t\t\t\t\t\tinvParentWtm$1.copy(parentWtm).invert();\n\t\t\t\t\t\tinvParentWtm$1.transformPoint(position, this.localPosition);\n\t\t\t\t\t\tthis.localRotation.setFromMat4(invParentWtm$1).mul(rotation);\n\t\t\t\t}\n\t\t\t\tif (!this._dirtyLocal) {\n\t\t\t\t\t\tthis._dirtifyLocal();\n\t\t\t\t}\n\t\t}\n\t\tsetEulerAngles(x, y, z) {\n\t\t\t\tthis.localRotation.setFromEulerAngles(x, y, z);\n\t\t\t\tif (this._parent !== null) {\n\t\t\t\t\t\tconst parentRot = this._parent.getRotation();\n\t\t\t\t\t\tinvParentRot.copy(parentRot).invert();\n\t\t\t\t\t\tthis.localRotation.mul2(invParentRot, this.localRotation);\n\t\t\t\t}\n\t\t\t\tif (!this._dirtyLocal) {\n\t\t\t\t\t\tthis._dirtifyLocal();\n\t\t\t\t}\n\t\t}\n\t\taddChild(node) {\n\t\t\t\tthis._prepareInsertChild(node);\n\t\t\t\tthis._children.push(node);\n\t\t\t\tthis._onInsertChild(node);\n\t\t}\n\t\taddChildAndSaveTransform(node) {\n\t\t\t\tconst wPos = node.getPosition();\n\t\t\t\tconst wRot = node.getRotation();\n\t\t\t\tthis._prepareInsertChild(node);\n\t\t\t\tnode.setPosition(tmpMat4.copy(this.worldTransform).invert().transformPoint(wPos));\n\t\t\t\tnode.setRotation(tmpQuat.copy(this.getRotation()).invert().mul(wRot));\n\t\t\t\tthis._children.push(node);\n\t\t\t\tthis._onInsertChild(node);\n\t\t}\n\t\tinsertChild(node, index) {\n\t\t\t\tthis._prepareInsertChild(node);\n\t\t\t\tthis._children.splice(index, 0, node);\n\t\t\t\tthis._onInsertChild(node);\n\t\t}\n\t\t_prepareInsertChild(node) {\n\t\t\t\tnode.remove();\n\t\t}\n\t\t_fireOnHierarchy(name, nameHierarchy, parent) {\n\t\t\t\tthis.fire(name, parent);\n\t\t\t\tfor(let i = 0; i < this._children.length; i++){\n\t\t\t\t\t\tthis._children[i]._fireOnHierarchy(nameHierarchy, nameHierarchy, parent);\n\t\t\t\t}\n\t\t}\n\t\t_onInsertChild(node) {\n\t\t\t\tnode._parent = this;\n\t\t\t\tconst enabledInHierarchy = node._enabled && this.enabled;\n\t\t\t\tif (node._enabledInHierarchy !== enabledInHierarchy) {\n\t\t\t\t\t\tnode._enabledInHierarchy = enabledInHierarchy;\n\t\t\t\t\t\tnode._notifyHierarchyStateChanged(node, enabledInHierarchy);\n\t\t\t\t}\n\t\t\t\tnode._updateGraphDepth();\n\t\t\t\tnode._dirtifyWorld();\n\t\t\t\tif (this._frozen) {\n\t\t\t\t\t\tnode._unfreezeParentToRoot();\n\t\t\t\t}\n\t\t\t\tnode._fireOnHierarchy('insert', 'inserthierarchy', this);\n\t\t\t\tif (this.fire) this.fire('childinsert', node);\n\t\t}\n\t\t_updateGraphDepth() {\n\t\t\t\tthis._graphDepth = this._parent ? this._parent._graphDepth + 1 : 0;\n\t\t\t\tfor(let i = 0, len = this._children.length; i < len; i++){\n\t\t\t\t\t\tthis._children[i]._updateGraphDepth();\n\t\t\t\t}\n\t\t}\n\t\tremoveChild(child) {\n\t\t\t\tconst index = this._children.indexOf(child);\n\t\t\t\tif (index === -1) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._children.splice(index, 1);\n\t\t\t\tchild._parent = null;\n\t\t\t\tchild._fireOnHierarchy('remove', 'removehierarchy', this);\n\t\t\t\tthis.fire('childremove', child);\n\t\t}\n\t\t_sync() {\n\t\t\t\tif (this._dirtyLocal) {\n\t\t\t\t\t\tthis.localTransform.setTRS(this.localPosition, this.localRotation, this.localScale);\n\t\t\t\t\t\tthis._dirtyLocal = false;\n\t\t\t\t}\n\t\t\t\tif (this._dirtyWorld) {\n\t\t\t\t\t\tif (this._parent === null) {\n\t\t\t\t\t\t\t\tthis.worldTransform.copy(this.localTransform);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (this.scaleCompensation) {\n\t\t\t\t\t\t\t\t\t\tlet parentWorldScale;\n\t\t\t\t\t\t\t\t\t\tconst parent = this._parent;\n\t\t\t\t\t\t\t\t\t\tlet scale = this.localScale;\n\t\t\t\t\t\t\t\t\t\tlet parentToUseScaleFrom = parent;\n\t\t\t\t\t\t\t\t\t\tif (parentToUseScaleFrom) {\n\t\t\t\t\t\t\t\t\t\t\t\twhile(parentToUseScaleFrom && parentToUseScaleFrom.scaleCompensation){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tparentToUseScaleFrom = parentToUseScaleFrom._parent;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tif (parentToUseScaleFrom) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tparentToUseScaleFrom = parentToUseScaleFrom._parent;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (parentToUseScaleFrom) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tparentWorldScale = parentToUseScaleFrom.worldTransform.getScale();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tscaleCompensateScale.mul2(parentWorldScale, this.localScale);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tscale = scaleCompensateScale;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tscaleCompensateRot2.setFromMat4(parent.worldTransform);\n\t\t\t\t\t\t\t\t\t\tscaleCompensateRot.mul2(scaleCompensateRot2, this.localRotation);\n\t\t\t\t\t\t\t\t\t\tlet tmatrix = parent.worldTransform;\n\t\t\t\t\t\t\t\t\t\tif (parent.scaleCompensation) {\n\t\t\t\t\t\t\t\t\t\t\t\tscaleCompensateScaleForParent.mul2(parentWorldScale, parent.getLocalScale());\n\t\t\t\t\t\t\t\t\t\t\t\tscaleCompensatePosTransform.setTRS(parent.worldTransform.getTranslation(scaleCompensatePos), scaleCompensateRot2, scaleCompensateScaleForParent);\n\t\t\t\t\t\t\t\t\t\t\t\ttmatrix = scaleCompensatePosTransform;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\ttmatrix.transformPoint(this.localPosition, scaleCompensatePos);\n\t\t\t\t\t\t\t\t\t\tthis.worldTransform.setTRS(scaleCompensatePos, scaleCompensateRot, scale);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis.worldTransform.mulAffine2(this._parent.worldTransform, this.localTransform);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._dirtyWorld = false;\n\t\t\t\t}\n\t\t}\n\t\tsyncHierarchy() {\n\t\t\t\tif (!this._enabled) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this._frozen) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._frozen = true;\n\t\t\t\tif (this._dirtyLocal || this._dirtyWorld) {\n\t\t\t\t\t\tthis._sync();\n\t\t\t\t}\n\t\t\t\tconst children = this._children;\n\t\t\t\tfor(let i = 0, len = children.length; i < len; i++){\n\t\t\t\t\t\tchildren[i].syncHierarchy();\n\t\t\t\t}\n\t\t}\n\t\tlookAt(x, y, z, ux = 0, uy = 1, uz = 0) {\n\t\t\t\tif (x instanceof Vec3) {\n\t\t\t\t\t\ttarget.copy(x);\n\t\t\t\t\t\tif (y instanceof Vec3) {\n\t\t\t\t\t\t\t\tup$1.copy(y);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tup$1.copy(Vec3.UP);\n\t\t\t\t\t\t}\n\t\t\t\t} else if (z === undefined) {\n\t\t\t\t\t\treturn;\n\t\t\t\t} else {\n\t\t\t\t\t\ttarget.set(x, y, z);\n\t\t\t\t\t\tup$1.set(ux, uy, uz);\n\t\t\t\t}\n\t\t\t\tmatrix.setLookAt(this.getPosition(), target, up$1);\n\t\t\t\trotation$5.setFromMat4(matrix);\n\t\t\t\tthis.setRotation(rotation$5);\n\t\t}\n\t\ttranslate(x, y, z) {\n\t\t\t\tif (x instanceof Vec3) {\n\t\t\t\t\t\tposition$3.copy(x);\n\t\t\t\t} else {\n\t\t\t\t\t\tposition$3.set(x, y, z);\n\t\t\t\t}\n\t\t\t\tposition$3.add(this.getPosition());\n\t\t\t\tthis.setPosition(position$3);\n\t\t}\n\t\ttranslateLocal(x, y, z) {\n\t\t\t\tif (x instanceof Vec3) {\n\t\t\t\t\t\tposition$3.copy(x);\n\t\t\t\t} else {\n\t\t\t\t\t\tposition$3.set(x, y, z);\n\t\t\t\t}\n\t\t\t\tthis.localRotation.transformVector(position$3, position$3);\n\t\t\t\tthis.localPosition.add(position$3);\n\t\t\t\tif (!this._dirtyLocal) {\n\t\t\t\t\t\tthis._dirtifyLocal();\n\t\t\t\t}\n\t\t}\n\t\trotate(x, y, z) {\n\t\t\t\trotation$5.setFromEulerAngles(x, y, z);\n\t\t\t\tif (this._parent === null) {\n\t\t\t\t\t\tthis.localRotation.mul2(rotation$5, this.localRotation);\n\t\t\t\t} else {\n\t\t\t\t\t\tconst rot = this.getRotation();\n\t\t\t\t\t\tconst parentRot = this._parent.getRotation();\n\t\t\t\t\t\tinvParentRot.copy(parentRot).invert();\n\t\t\t\t\t\trotation$5.mul2(invParentRot, rotation$5);\n\t\t\t\t\t\tthis.localRotation.mul2(rotation$5, rot);\n\t\t\t\t}\n\t\t\t\tif (!this._dirtyLocal) {\n\t\t\t\t\t\tthis._dirtifyLocal();\n\t\t\t\t}\n\t\t}\n\t\trotateLocal(x, y, z) {\n\t\t\t\trotation$5.setFromEulerAngles(x, y, z);\n\t\t\t\tthis.localRotation.mul(rotation$5);\n\t\t\t\tif (!this._dirtyLocal) {\n\t\t\t\t\t\tthis._dirtifyLocal();\n\t\t\t\t}\n\t\t}\n}\n\nconst _viewMat$1 = new Mat4();\nconst _viewProjMat = new Mat4();\nconst _viewportMatrix = new Mat4();\nclass LightCamera {\n\t\tstatic{\n\t\t\t\tthis.pointLightRotations = [\n\t\t\t\t\t\tnew Quat().setFromEulerAngles(0, 90, 180),\n\t\t\t\t\t\tnew Quat().setFromEulerAngles(0, -90, 180),\n\t\t\t\t\t\tnew Quat().setFromEulerAngles(90, 0, 0),\n\t\t\t\t\t\tnew Quat().setFromEulerAngles(-90, 0, 0),\n\t\t\t\t\t\tnew Quat().setFromEulerAngles(0, 180, 180),\n\t\t\t\t\t\tnew Quat().setFromEulerAngles(0, 0, 180)\n\t\t\t\t];\n\t\t}\n\t\tstatic create(name, lightType, face) {\n\t\t\t\tconst camera = new Camera();\n\t\t\t\tcamera.node = new GraphNode(name);\n\t\t\t\tcamera.aspectRatio = 1;\n\t\t\t\tcamera.aspectRatioMode = ASPECT_MANUAL;\n\t\t\t\tcamera._scissorRectClear = true;\n\t\t\t\tswitch(lightType){\n\t\t\t\t\t\tcase LIGHTTYPE_OMNI:\n\t\t\t\t\t\t\t\tcamera.node.setRotation(LightCamera.pointLightRotations[face]);\n\t\t\t\t\t\t\t\tcamera.fov = 90;\n\t\t\t\t\t\t\t\tcamera.projection = PROJECTION_PERSPECTIVE;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase LIGHTTYPE_SPOT:\n\t\t\t\t\t\t\t\tcamera.projection = PROJECTION_PERSPECTIVE;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase LIGHTTYPE_DIRECTIONAL:\n\t\t\t\t\t\t\t\tcamera.projection = PROJECTION_ORTHOGRAPHIC;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\treturn camera;\n\t\t}\n\t\tstatic{\n\t\t\t\tthis._spotCookieCamera = null;\n\t\t}\n\t\tstatic evalSpotCookieMatrix(light) {\n\t\t\t\tlet cookieCamera = LightCamera._spotCookieCamera;\n\t\t\t\tif (!cookieCamera) {\n\t\t\t\t\t\tcookieCamera = LightCamera.create('SpotCookieCamera', LIGHTTYPE_SPOT);\n\t\t\t\t\t\tLightCamera._spotCookieCamera = cookieCamera;\n\t\t\t\t}\n\t\t\t\tcookieCamera.fov = light._outerConeAngle * 2;\n\t\t\t\tconst cookieNode = cookieCamera._node;\n\t\t\t\tcookieNode.setPosition(light._node.getPosition());\n\t\t\t\tcookieNode.setRotation(light._node.getRotation());\n\t\t\t\tcookieNode.rotateLocal(-90, 0, 0);\n\t\t\t\t_viewMat$1.setTRS(cookieNode.getPosition(), cookieNode.getRotation(), Vec3.ONE).invert();\n\t\t\t\t_viewProjMat.mul2(cookieCamera.projectionMatrix, _viewMat$1);\n\t\t\t\tconst cookieMatrix = light.cookieMatrix;\n\t\t\t\tconst rectViewport = light.atlasViewport;\n\t\t\t\t_viewportMatrix.setViewport(rectViewport.x, rectViewport.y, rectViewport.z, rectViewport.w);\n\t\t\t\tcookieMatrix.mul2(_viewportMatrix, _viewProjMat);\n\t\t\t\treturn cookieMatrix;\n\t\t}\n}\n\nconst tempVec3$1 = new Vec3();\nconst tempAreaLightSizes = new Float32Array(6);\nconst areaHalfAxisWidth = new Vec3(-0.5, 0, 0);\nconst areaHalfAxisHeight = new Vec3(0, 0, 0.5);\nconst TextureIndexFloat = {\n\t\tPOSITION_RANGE: 0,\n\t\tDIRECTION_FLAGS: 1,\n\t\tCOLOR_ANGLES_BIAS: 2,\n\t\tPROJ_MAT_0: 3,\n\t\tATLAS_VIEWPORT: 3,\n\t\tPROJ_MAT_1: 4,\n\t\tPROJ_MAT_2: 5,\n\t\tPROJ_MAT_3: 6,\n\t\tAREA_DATA_WIDTH: 7,\n\t\tAREA_DATA_HEIGHT: 8,\n\t\tCOUNT: 9\n};\nconst enums = {\n\t\t'LIGHTSHAPE_PUNCTUAL': `${LIGHTSHAPE_PUNCTUAL}u`,\n\t\t'LIGHTSHAPE_RECT': `${LIGHTSHAPE_RECT}u`,\n\t\t'LIGHTSHAPE_DISK': `${LIGHTSHAPE_DISK}u`,\n\t\t'LIGHTSHAPE_SPHERE': `${LIGHTSHAPE_SPHERE}u`,\n\t\t'LIGHT_COLOR_DIVIDER': `${LIGHT_COLOR_DIVIDER}.0`\n};\nconst buildShaderDefines = (object, prefix)=>{\n\t\treturn Object.keys(object).map((key)=>`#define {${prefix}${key}} ${object[key]}`).join('\\n');\n};\nconst lightBufferDefines = `\\n\n\t\t${buildShaderDefines(TextureIndexFloat, 'CLUSTER_TEXTURE_')}\n\t\t${buildShaderDefines(enums, '')}\n`;\nclass LightsBuffer {\n\t\tconstructor(device){\n\t\t\t\tthis.areaLightsEnabled = false;\n\t\t\t\tthis.device = device;\n\t\t\t\tShaderChunks.get(device, SHADERLANGUAGE_GLSL).set('lightBufferDefinesPS', lightBufferDefines);\n\t\t\t\tShaderChunks.get(device, SHADERLANGUAGE_WGSL).set('lightBufferDefinesPS', lightBufferDefines);\n\t\t\t\tthis.cookiesEnabled = false;\n\t\t\t\tthis.shadowsEnabled = false;\n\t\t\t\tthis.areaLightsEnabled = false;\n\t\t\t\tthis.maxLights = 255;\n\t\t\t\tconst pixelsPerLightFloat = TextureIndexFloat.COUNT;\n\t\t\t\tthis.lightsFloat = new Float32Array(4 * pixelsPerLightFloat * this.maxLights);\n\t\t\t\tthis.lightsUint = new Uint32Array(this.lightsFloat.buffer);\n\t\t\t\tthis.lightsTexture = this.createTexture(this.device, pixelsPerLightFloat, this.maxLights, PIXELFORMAT_RGBA32F, 'LightsTexture');\n\t\t\t\tthis._lightsTextureId = this.device.scope.resolve('lightsTexture');\n\t\t\t\tthis.invMaxColorValue = 0;\n\t\t\t\tthis.invMaxAttenuation = 0;\n\t\t\t\tthis.boundsMin = new Vec3();\n\t\t\t\tthis.boundsDelta = new Vec3();\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.lightsTexture?.destroy();\n\t\t\t\tthis.lightsTexture = null;\n\t\t}\n\t\tcreateTexture(device, width, height, format, name) {\n\t\t\t\tconst tex = new Texture(device, {\n\t\t\t\t\t\tname: name,\n\t\t\t\t\t\twidth: width,\n\t\t\t\t\t\theight: height,\n\t\t\t\t\t\tmipmaps: false,\n\t\t\t\t\t\tformat: format,\n\t\t\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\ttype: TEXTURETYPE_DEFAULT,\n\t\t\t\t\t\tmagFilter: FILTER_NEAREST,\n\t\t\t\t\t\tminFilter: FILTER_NEAREST,\n\t\t\t\t\t\tanisotropy: 1\n\t\t\t\t});\n\t\t\t\treturn tex;\n\t\t}\n\t\tsetBounds(min, delta) {\n\t\t\t\tthis.boundsMin.copy(min);\n\t\t\t\tthis.boundsDelta.copy(delta);\n\t\t}\n\t\tuploadTextures() {\n\t\t\t\tthis.lightsTexture.lock().set(this.lightsFloat);\n\t\t\t\tthis.lightsTexture.unlock();\n\t\t}\n\t\tupdateUniforms() {\n\t\t\t\tthis._lightsTextureId.setValue(this.lightsTexture);\n\t\t}\n\t\tgetSpotDirection(direction, spot) {\n\t\t\t\tconst mat = spot._node.getWorldTransform();\n\t\t\t\tmat.getY(direction).mulScalar(-1);\n\t\t\t\tdirection.normalize();\n\t\t}\n\t\tgetLightAreaSizes(light) {\n\t\t\t\tconst mat = light._node.getWorldTransform();\n\t\t\t\tmat.transformVector(areaHalfAxisWidth, tempVec3$1);\n\t\t\t\ttempAreaLightSizes[0] = tempVec3$1.x;\n\t\t\t\ttempAreaLightSizes[1] = tempVec3$1.y;\n\t\t\t\ttempAreaLightSizes[2] = tempVec3$1.z;\n\t\t\t\tmat.transformVector(areaHalfAxisHeight, tempVec3$1);\n\t\t\t\ttempAreaLightSizes[3] = tempVec3$1.x;\n\t\t\t\ttempAreaLightSizes[4] = tempVec3$1.y;\n\t\t\t\ttempAreaLightSizes[5] = tempVec3$1.z;\n\t\t\t\treturn tempAreaLightSizes;\n\t\t}\n\t\taddLightData(light, lightIndex) {\n\t\t\t\tconst isSpot = light._type === LIGHTTYPE_SPOT;\n\t\t\t\tconst hasAtlasViewport = light.atlasViewportAllocated;\n\t\t\t\tconst isCookie = this.cookiesEnabled && !!light._cookie && hasAtlasViewport;\n\t\t\t\tconst isArea = this.areaLightsEnabled && light.shape !== LIGHTSHAPE_PUNCTUAL;\n\t\t\t\tconst castShadows = this.shadowsEnabled && light.castShadows && hasAtlasViewport;\n\t\t\t\tconst pos = light._node.getPosition();\n\t\t\t\tlet lightProjectionMatrix = null;\n\t\t\t\tlet atlasViewport = null;\n\t\t\t\tif (isSpot) {\n\t\t\t\t\t\tif (castShadows) {\n\t\t\t\t\t\t\t\tconst lightRenderData = light.getRenderData(null, 0);\n\t\t\t\t\t\t\t\tlightProjectionMatrix = lightRenderData.shadowMatrix;\n\t\t\t\t\t\t} else if (isCookie) {\n\t\t\t\t\t\t\t\tlightProjectionMatrix = LightCamera.evalSpotCookieMatrix(light);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tif (castShadows || isCookie) {\n\t\t\t\t\t\t\t\tatlasViewport = light.atlasViewport;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst dataFloat = this.lightsFloat;\n\t\t\t\tconst dataUint = this.lightsUint;\n\t\t\t\tconst dataFloatStart = lightIndex * this.lightsTexture.width * 4;\n\t\t\t\tdataFloat[dataFloatStart + 4 * TextureIndexFloat.POSITION_RANGE + 0] = pos.x;\n\t\t\t\tdataFloat[dataFloatStart + 4 * TextureIndexFloat.POSITION_RANGE + 1] = pos.y;\n\t\t\t\tdataFloat[dataFloatStart + 4 * TextureIndexFloat.POSITION_RANGE + 2] = pos.z;\n\t\t\t\tdataFloat[dataFloatStart + 4 * TextureIndexFloat.POSITION_RANGE + 3] = light.attenuationEnd;\n\t\t\t\tconst clusteredData = light.clusteredData;\n\t\t\t\tdataUint[dataFloatStart + 4 * TextureIndexFloat.COLOR_ANGLES_BIAS + 0] = clusteredData[0];\n\t\t\t\tdataUint[dataFloatStart + 4 * TextureIndexFloat.COLOR_ANGLES_BIAS + 1] = clusteredData[1];\n\t\t\t\tdataUint[dataFloatStart + 4 * TextureIndexFloat.COLOR_ANGLES_BIAS + 2] = clusteredData[2];\n\t\t\t\tif (light.castShadows) {\n\t\t\t\t\t\tconst lightRenderData = light.getRenderData(null, 0);\n\t\t\t\t\t\tconst biases = light._getUniformBiasValues(lightRenderData);\n\t\t\t\t\t\tconst biasHalf = FloatPacking.float2Half(biases.bias);\n\t\t\t\t\t\tconst normalBiasHalf = FloatPacking.float2Half(biases.normalBias);\n\t\t\t\t\t\tdataUint[dataFloatStart + 4 * TextureIndexFloat.COLOR_ANGLES_BIAS + 3] = biasHalf | normalBiasHalf << 16;\n\t\t\t\t}\n\t\t\t\tif (isSpot) {\n\t\t\t\t\t\tthis.getSpotDirection(tempVec3$1, light);\n\t\t\t\t\t\tdataFloat[dataFloatStart + 4 * TextureIndexFloat.DIRECTION_FLAGS + 0] = tempVec3$1.x;\n\t\t\t\t\t\tdataFloat[dataFloatStart + 4 * TextureIndexFloat.DIRECTION_FLAGS + 1] = tempVec3$1.y;\n\t\t\t\t\t\tdataFloat[dataFloatStart + 4 * TextureIndexFloat.DIRECTION_FLAGS + 2] = tempVec3$1.z;\n\t\t\t\t}\n\t\t\t\tdataUint[dataFloatStart + 4 * TextureIndexFloat.DIRECTION_FLAGS + 3] = light.getClusteredFlags(castShadows, isCookie);\n\t\t\t\tif (lightProjectionMatrix) {\n\t\t\t\t\t\tconst matData = lightProjectionMatrix.data;\n\t\t\t\t\t\tfor(let m = 0; m < 16; m++){\n\t\t\t\t\t\t\t\tdataFloat[dataFloatStart + 4 * TextureIndexFloat.PROJ_MAT_0 + m] = matData[m];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (atlasViewport) {\n\t\t\t\t\t\tdataFloat[dataFloatStart + 4 * TextureIndexFloat.ATLAS_VIEWPORT + 0] = atlasViewport.x;\n\t\t\t\t\t\tdataFloat[dataFloatStart + 4 * TextureIndexFloat.ATLAS_VIEWPORT + 1] = atlasViewport.y;\n\t\t\t\t\t\tdataFloat[dataFloatStart + 4 * TextureIndexFloat.ATLAS_VIEWPORT + 2] = atlasViewport.z / 3;\n\t\t\t\t}\n\t\t\t\tif (isArea) {\n\t\t\t\t\t\tconst areaSizes = this.getLightAreaSizes(light);\n\t\t\t\t\t\tdataFloat[dataFloatStart + 4 * TextureIndexFloat.AREA_DATA_WIDTH + 0] = areaSizes[0];\n\t\t\t\t\t\tdataFloat[dataFloatStart + 4 * TextureIndexFloat.AREA_DATA_WIDTH + 1] = areaSizes[1];\n\t\t\t\t\t\tdataFloat[dataFloatStart + 4 * TextureIndexFloat.AREA_DATA_WIDTH + 2] = areaSizes[2];\n\t\t\t\t\t\tdataFloat[dataFloatStart + 4 * TextureIndexFloat.AREA_DATA_HEIGHT + 0] = areaSizes[3];\n\t\t\t\t\t\tdataFloat[dataFloatStart + 4 * TextureIndexFloat.AREA_DATA_HEIGHT + 1] = areaSizes[4];\n\t\t\t\t\t\tdataFloat[dataFloatStart + 4 * TextureIndexFloat.AREA_DATA_HEIGHT + 2] = areaSizes[5];\n\t\t\t\t}\n\t\t}\n}\n\nconst tempVec3 = new Vec3();\nconst tempMin3 = new Vec3();\nconst tempMax3 = new Vec3();\nconst tempBox = new BoundingBox();\nclass ClusterLight {\n\t\tconstructor(){\n\t\t\t\tthis.light = null;\n\t\t\t\tthis.min = new Vec3();\n\t\t\t\tthis.max = new Vec3();\n\t\t}\n}\nclass WorldClusters {\n\t\tconstructor(device){\n\t\t\t\tthis.device = device;\n\t\t\t\tthis.name = 'Untitled';\n\t\t\t\tthis.reportCount = 0;\n\t\t\t\tthis.boundsMin = new Vec3();\n\t\t\t\tthis.boundsMax = new Vec3();\n\t\t\t\tthis.boundsDelta = new Vec3();\n\t\t\t\tthis._cells = new Vec3(1, 1, 1);\n\t\t\t\tthis._cellsLimit = new Vec3();\n\t\t\t\tthis.cells = this._cells;\n\t\t\t\tthis.maxCellLightCount = 4;\n\t\t\t\tthis._usedLights = [];\n\t\t\t\tthis._usedLights.push(new ClusterLight());\n\t\t\t\tthis.lightsBuffer = new LightsBuffer(device);\n\t\t\t\tthis.registerUniforms(device);\n\t\t}\n\t\tset maxCellLightCount(count) {\n\t\t\t\tif (count !== this._maxCellLightCount) {\n\t\t\t\t\t\tthis._maxCellLightCount = count;\n\t\t\t\t\t\tthis._cellsDirty = true;\n\t\t\t\t}\n\t\t}\n\t\tget maxCellLightCount() {\n\t\t\t\treturn this._maxCellLightCount;\n\t\t}\n\t\tset cells(value) {\n\t\t\t\ttempVec3.copy(value).floor();\n\t\t\t\tif (!this._cells.equals(tempVec3)) {\n\t\t\t\t\t\tthis._cells.copy(tempVec3);\n\t\t\t\t\t\tthis._cellsLimit.copy(tempVec3).sub(Vec3.ONE);\n\t\t\t\t\t\tthis._cellsDirty = true;\n\t\t\t\t}\n\t\t}\n\t\tget cells() {\n\t\t\t\treturn this._cells;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.lightsBuffer.destroy();\n\t\t\t\tthis.releaseClusterTexture();\n\t\t}\n\t\treleaseClusterTexture() {\n\t\t\t\tif (this.clusterTexture) {\n\t\t\t\t\t\tthis.clusterTexture.destroy();\n\t\t\t\t\t\tthis.clusterTexture = null;\n\t\t\t\t}\n\t\t}\n\t\tregisterUniforms(device) {\n\t\t\t\tthis._clusterSkipId = device.scope.resolve('clusterSkip');\n\t\t\t\tthis._clusterMaxCellsId = device.scope.resolve('clusterMaxCells');\n\t\t\t\tthis._clusterWorldTextureId = device.scope.resolve('clusterWorldTexture');\n\t\t\t\tthis._clusterTextureSizeId = device.scope.resolve('clusterTextureSize');\n\t\t\t\tthis._clusterTextureSizeData = new Float32Array(3);\n\t\t\t\tthis._clusterBoundsMinId = device.scope.resolve('clusterBoundsMin');\n\t\t\t\tthis._clusterBoundsMinData = new Float32Array(3);\n\t\t\t\tthis._clusterBoundsDeltaId = device.scope.resolve('clusterBoundsDelta');\n\t\t\t\tthis._clusterBoundsDeltaData = new Float32Array(3);\n\t\t\t\tthis._clusterCellsCountByBoundsSizeId = device.scope.resolve('clusterCellsCountByBoundsSize');\n\t\t\t\tthis._clusterCellsCountByBoundsSizeData = new Float32Array(3);\n\t\t\t\tthis._clusterCellsDotId = device.scope.resolve('clusterCellsDot');\n\t\t\t\tthis._clusterCellsDotData = new Float32Array(3);\n\t\t\t\tthis._clusterCellsMaxId = device.scope.resolve('clusterCellsMax');\n\t\t\t\tthis._clusterCellsMaxData = new Float32Array(3);\n\t\t}\n\t\tupdateParams(lightingParams) {\n\t\t\t\tif (lightingParams) {\n\t\t\t\t\t\tthis.cells = lightingParams.cells;\n\t\t\t\t\t\tthis.maxCellLightCount = lightingParams.maxLightsPerCell;\n\t\t\t\t\t\tthis.lightsBuffer.cookiesEnabled = lightingParams.cookiesEnabled;\n\t\t\t\t\t\tthis.lightsBuffer.shadowsEnabled = lightingParams.shadowsEnabled;\n\t\t\t\t\t\tthis.lightsBuffer.areaLightsEnabled = lightingParams.areaLightsEnabled;\n\t\t\t\t}\n\t\t}\n\t\tupdateCells() {\n\t\t\t\tif (this._cellsDirty) {\n\t\t\t\t\t\tthis._cellsDirty = false;\n\t\t\t\t\t\tconst cx = this._cells.x;\n\t\t\t\t\t\tconst cy = this._cells.y;\n\t\t\t\t\t\tconst cz = this._cells.z;\n\t\t\t\t\t\tconst numCells = cx * cy * cz;\n\t\t\t\t\t\tconst totalPixels = this.maxCellLightCount * numCells;\n\t\t\t\t\t\tlet width = Math.ceil(Math.sqrt(totalPixels));\n\t\t\t\t\t\twidth = math.roundUp(width, this.maxCellLightCount);\n\t\t\t\t\t\tconst height = Math.ceil(totalPixels / width);\n\t\t\t\t\t\tthis._clusterCellsMaxData[0] = cx;\n\t\t\t\t\t\tthis._clusterCellsMaxData[1] = cy;\n\t\t\t\t\t\tthis._clusterCellsMaxData[2] = cz;\n\t\t\t\t\t\tthis._clusterCellsDotData[0] = this.maxCellLightCount;\n\t\t\t\t\t\tthis._clusterCellsDotData[1] = cx * cz * this.maxCellLightCount;\n\t\t\t\t\t\tthis._clusterCellsDotData[2] = cx * this.maxCellLightCount;\n\t\t\t\t\t\tthis.clusters = new Uint8ClampedArray(totalPixels);\n\t\t\t\t\t\tthis.counts = new Int32Array(numCells);\n\t\t\t\t\t\tthis._clusterTextureSizeData[0] = width;\n\t\t\t\t\t\tthis._clusterTextureSizeData[1] = 1.0 / width;\n\t\t\t\t\t\tthis._clusterTextureSizeData[2] = 1.0 / height;\n\t\t\t\t\t\tthis.releaseClusterTexture();\n\t\t\t\t\t\tthis.clusterTexture = this.lightsBuffer.createTexture(this.device, width, height, PIXELFORMAT_R8, 'ClusterTexture');\n\t\t\t\t}\n\t\t}\n\t\tuploadTextures() {\n\t\t\t\tthis.clusterTexture.lock().set(this.clusters);\n\t\t\t\tthis.clusterTexture.unlock();\n\t\t\t\tthis.lightsBuffer.uploadTextures();\n\t\t}\n\t\tupdateUniforms() {\n\t\t\t\tthis._clusterSkipId.setValue(this._usedLights.length > 1 ? 0 : 1);\n\t\t\t\tthis.lightsBuffer.updateUniforms();\n\t\t\t\tthis._clusterWorldTextureId.setValue(this.clusterTexture);\n\t\t\t\tthis._clusterMaxCellsId.setValue(this.maxCellLightCount);\n\t\t\t\tconst boundsDelta = this.boundsDelta;\n\t\t\t\tthis._clusterCellsCountByBoundsSizeData[0] = this._cells.x / boundsDelta.x;\n\t\t\t\tthis._clusterCellsCountByBoundsSizeData[1] = this._cells.y / boundsDelta.y;\n\t\t\t\tthis._clusterCellsCountByBoundsSizeData[2] = this._cells.z / boundsDelta.z;\n\t\t\t\tthis._clusterCellsCountByBoundsSizeId.setValue(this._clusterCellsCountByBoundsSizeData);\n\t\t\t\tthis._clusterBoundsMinData[0] = this.boundsMin.x;\n\t\t\t\tthis._clusterBoundsMinData[1] = this.boundsMin.y;\n\t\t\t\tthis._clusterBoundsMinData[2] = this.boundsMin.z;\n\t\t\t\tthis._clusterBoundsDeltaData[0] = boundsDelta.x;\n\t\t\t\tthis._clusterBoundsDeltaData[1] = boundsDelta.y;\n\t\t\t\tthis._clusterBoundsDeltaData[2] = boundsDelta.z;\n\t\t\t\tthis._clusterTextureSizeId.setValue(this._clusterTextureSizeData);\n\t\t\t\tthis._clusterBoundsMinId.setValue(this._clusterBoundsMinData);\n\t\t\t\tthis._clusterBoundsDeltaId.setValue(this._clusterBoundsDeltaData);\n\t\t\t\tthis._clusterCellsDotId.setValue(this._clusterCellsDotData);\n\t\t\t\tthis._clusterCellsMaxId.setValue(this._clusterCellsMaxData);\n\t\t}\n\t\tevalLightCellMinMax(clusteredLight, min, max) {\n\t\t\t\tmin.copy(clusteredLight.min);\n\t\t\t\tmin.sub(this.boundsMin);\n\t\t\t\tmin.div(this.boundsDelta);\n\t\t\t\tmin.mul2(min, this.cells);\n\t\t\t\tmin.floor();\n\t\t\t\tmax.copy(clusteredLight.max);\n\t\t\t\tmax.sub(this.boundsMin);\n\t\t\t\tmax.div(this.boundsDelta);\n\t\t\t\tmax.mul2(max, this.cells);\n\t\t\t\tmax.ceil();\n\t\t\t\tmin.max(Vec3.ZERO);\n\t\t\t\tmax.min(this._cellsLimit);\n\t\t}\n\t\tcollectLights(lights) {\n\t\t\t\tconst maxLights = this.lightsBuffer.maxLights;\n\t\t\t\tconst usedLights = this._usedLights;\n\t\t\t\tlet lightIndex = 1;\n\t\t\t\tlights.forEach((light)=>{\n\t\t\t\t\t\tconst runtimeLight = !!(light.mask & (MASK_AFFECT_DYNAMIC | MASK_AFFECT_LIGHTMAPPED));\n\t\t\t\t\t\tconst zeroAngleSpotlight = light.type === LIGHTTYPE_SPOT && light._outerConeAngle === 0;\n\t\t\t\t\t\tif (light.enabled && light.type !== LIGHTTYPE_DIRECTIONAL && light.visibleThisFrame && light.intensity > 0 && runtimeLight && !zeroAngleSpotlight) {\n\t\t\t\t\t\t\t\tif (lightIndex < maxLights) {\n\t\t\t\t\t\t\t\t\t\tlet clusteredLight;\n\t\t\t\t\t\t\t\t\t\tif (lightIndex < usedLights.length) {\n\t\t\t\t\t\t\t\t\t\t\t\tclusteredLight = usedLights[lightIndex];\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tclusteredLight = new ClusterLight();\n\t\t\t\t\t\t\t\t\t\t\t\tusedLights.push(clusteredLight);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tclusteredLight.light = light;\n\t\t\t\t\t\t\t\t\t\tlight.getBoundingBox(tempBox);\n\t\t\t\t\t\t\t\t\t\tclusteredLight.min.copy(tempBox.getMin());\n\t\t\t\t\t\t\t\t\t\tclusteredLight.max.copy(tempBox.getMax());\n\t\t\t\t\t\t\t\t\t\tlightIndex++;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tusedLights.length = lightIndex;\n\t\t}\n\t\tevaluateBounds() {\n\t\t\t\tconst usedLights = this._usedLights;\n\t\t\t\tconst min = this.boundsMin;\n\t\t\t\tconst max = this.boundsMax;\n\t\t\t\tif (usedLights.length > 1) {\n\t\t\t\t\t\tmin.copy(usedLights[1].min);\n\t\t\t\t\t\tmax.copy(usedLights[1].max);\n\t\t\t\t\t\tfor(let i = 2; i < usedLights.length; i++){\n\t\t\t\t\t\t\t\tmin.min(usedLights[i].min);\n\t\t\t\t\t\t\t\tmax.max(usedLights[i].max);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tmin.set(0, 0, 0);\n\t\t\t\t\t\tmax.set(1, 1, 1);\n\t\t\t\t}\n\t\t\t\tthis.boundsDelta.sub2(max, min);\n\t\t\t\tthis.lightsBuffer.setBounds(min, this.boundsDelta);\n\t\t}\n\t\tupdateClusters(lightingParams) {\n\t\t\t\tthis.counts.fill(0);\n\t\t\t\tthis.clusters.fill(0);\n\t\t\t\tthis.lightsBuffer.areaLightsEnabled = lightingParams ? lightingParams.areaLightsEnabled : false;\n\t\t\t\tconst divX = this._cells.x;\n\t\t\t\tconst divZ = this._cells.z;\n\t\t\t\tconst counts = this.counts;\n\t\t\t\tconst limit = this._maxCellLightCount;\n\t\t\t\tconst clusters = this.clusters;\n\t\t\t\tconst pixelsPerCellCount = this.maxCellLightCount;\n\t\t\t\tconst usedLights = this._usedLights;\n\t\t\t\tfor(let i = 1; i < usedLights.length; i++){\n\t\t\t\t\t\tconst clusteredLight = usedLights[i];\n\t\t\t\t\t\tconst light = clusteredLight.light;\n\t\t\t\t\t\tthis.lightsBuffer.addLightData(light, i);\n\t\t\t\t\t\tthis.evalLightCellMinMax(clusteredLight, tempMin3, tempMax3);\n\t\t\t\t\t\tconst xStart = tempMin3.x;\n\t\t\t\t\t\tconst xEnd = tempMax3.x;\n\t\t\t\t\t\tconst yStart = tempMin3.y;\n\t\t\t\t\t\tconst yEnd = tempMax3.y;\n\t\t\t\t\t\tconst zStart = tempMin3.z;\n\t\t\t\t\t\tconst zEnd = tempMax3.z;\n\t\t\t\t\t\tfor(let x = xStart; x <= xEnd; x++){\n\t\t\t\t\t\t\t\tfor(let z = zStart; z <= zEnd; z++){\n\t\t\t\t\t\t\t\t\t\tfor(let y = yStart; y <= yEnd; y++){\n\t\t\t\t\t\t\t\t\t\t\t\tconst clusterIndex = x + divX * (z + y * divZ);\n\t\t\t\t\t\t\t\t\t\t\t\tconst count = counts[clusterIndex];\n\t\t\t\t\t\t\t\t\t\t\t\tif (count < limit) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclusters[pixelsPerCellCount * clusterIndex + count] = i;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcounts[clusterIndex] = count + 1;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tupdate(lights, lightingParams = null) {\n\t\t\t\tthis.updateParams(lightingParams);\n\t\t\t\tthis.updateCells();\n\t\t\t\tthis.collectLights(lights);\n\t\t\t\tthis.evaluateBounds();\n\t\t\t\tthis.updateClusters(lightingParams);\n\t\t\t\tthis.uploadTextures();\n\t\t}\n\t\tactivate() {\n\t\t\t\tthis.updateUniforms();\n\t\t}\n}\n\nconst base64String = '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';\nlet data = null;\nconst initData = ()=>{\n\t\tif (!data) {\n\t\t\t\tconst binaryString = atob(base64String);\n\t\t\t\tdata = Uint8Array.from(binaryString, (char)=>char.charCodeAt(0));\n\t\t}\n};\nconst blueNoiseData = ()=>{\n\t\tinitData();\n\t\treturn data;\n};\nclass BlueNoise {\n\t\tconstructor(seed = 0){\n\t\t\t\tthis.seed = 0;\n\t\t\t\tthis.seed = seed * 4;\n\t\t\t\tinitData();\n\t\t}\n\t\t_next() {\n\t\t\t\tthis.seed = (this.seed + 4) % data.length;\n\t\t}\n\t\tvalue() {\n\t\t\t\tthis._next();\n\t\t\t\treturn data[this.seed] / 255;\n\t\t}\n\t\tvec4(dest = new Vec4()) {\n\t\t\t\tthis._next();\n\t\t\t\treturn dest.set(data[this.seed], data[this.seed + 1], data[this.seed + 2], data[this.seed + 3]).mulScalar(1 / 255);\n\t\t}\n}\n\nconst lightCubeDir = [\n\t\tnew Vec3(-1, 0, 0),\n\t\tnew Vec3(1, 0, 0),\n\t\tnew Vec3(0, -1, 0),\n\t\tnew Vec3(0, 1, 0),\n\t\tnew Vec3(0, 0, -1),\n\t\tnew Vec3(0, 0, 1)\n];\nclass LightCube {\n\t\tupdate(ambientLight, lights) {\n\t\t\t\tconst colors = this.colors;\n\t\t\t\tconst { r, g, b } = ambientLight;\n\t\t\t\tfor(let j = 0; j < 6; j++){\n\t\t\t\t\t\tcolors[j * 3] = r;\n\t\t\t\t\t\tcolors[j * 3 + 1] = g;\n\t\t\t\t\t\tcolors[j * 3 + 2] = b;\n\t\t\t\t}\n\t\t\t\tfor(let j = 0; j < lights.length; j++){\n\t\t\t\t\t\tconst light = lights[j];\n\t\t\t\t\t\tif (light._type === LIGHTTYPE_DIRECTIONAL) {\n\t\t\t\t\t\t\t\tfor(let c = 0; c < 6; c++){\n\t\t\t\t\t\t\t\t\t\tconst weight = Math.max(lightCubeDir[c].dot(light._direction), 0) * light._intensity;\n\t\t\t\t\t\t\t\t\t\tconst lightColor = light._color;\n\t\t\t\t\t\t\t\t\t\tcolors[c * 3] += lightColor.r * weight;\n\t\t\t\t\t\t\t\t\t\tcolors[c * 3 + 1] += lightColor.g * weight;\n\t\t\t\t\t\t\t\t\t\tcolors[c * 3 + 2] += lightColor.b * weight;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tconstructor(){\n\t\t\t\tthis.colors = new Float32Array(6 * 3);\n\t\t}\n}\n\nconst createTexture = (device, namePrefix, size, data)=>{\n\t\tconst texture = new Texture(device, {\n\t\t\t\tname: `${namePrefix}${size}`,\n\t\t\t\twidth: size,\n\t\t\t\theight: size,\n\t\t\t\tformat: PIXELFORMAT_RGBA8,\n\t\t\t\taddressU: ADDRESS_REPEAT,\n\t\t\t\taddressV: ADDRESS_REPEAT,\n\t\t\t\ttype: TEXTURETYPE_DEFAULT,\n\t\t\t\tmagFilter: FILTER_NEAREST,\n\t\t\t\tminFilter: FILTER_NEAREST,\n\t\t\t\tanisotropy: 1,\n\t\t\t\tmipmaps: false\n\t\t});\n\t\ttexture.lock().set(data);\n\t\ttexture.unlock();\n\t\treturn texture;\n};\nconst deviceCacheBlueNoise = new DeviceCache();\nconst getBlueNoiseTexture = (device)=>{\n\t\treturn deviceCacheBlueNoise.get(device, ()=>{\n\t\t\t\tconst data = blueNoiseData();\n\t\t\t\tconst size = Math.sqrt(data.length / 4);\n\t\t\t\treturn createTexture(device, 'BlueNoise', size, data);\n\t\t});\n};\n\nclass ShadowMap {\n\t\tconstructor(texture, targets){\n\t\t\t\tthis.texture = texture;\n\t\t\t\tthis.cached = false;\n\t\t\t\tthis.renderTargets = targets;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tif (this.texture) {\n\t\t\t\t\t\tthis.texture.destroy();\n\t\t\t\t\t\tthis.texture = null;\n\t\t\t\t}\n\t\t\t\tconst targets = this.renderTargets;\n\t\t\t\tfor(let i = 0; i < targets.length; i++){\n\t\t\t\t\t\ttargets[i].destroy();\n\t\t\t\t}\n\t\t\t\tthis.renderTargets.length = 0;\n\t\t}\n\t\tstatic create(device, light) {\n\t\t\t\tlet shadowMap = null;\n\t\t\t\tif (light._type === LIGHTTYPE_OMNI) {\n\t\t\t\t\t\tshadowMap = this.createCubemap(device, light._shadowResolution, light._shadowType);\n\t\t\t\t} else {\n\t\t\t\t\t\tshadowMap = this.create2dMap(device, light._shadowResolution, light._shadowType);\n\t\t\t\t}\n\t\t\t\treturn shadowMap;\n\t\t}\n\t\tstatic createAtlas(device, resolution, shadowType) {\n\t\t\t\tconst shadowMap = this.create2dMap(device, resolution, shadowType);\n\t\t\t\tconst targets = shadowMap.renderTargets;\n\t\t\t\tconst rt = targets[0];\n\t\t\t\tfor(let i = 0; i < 5; i++){\n\t\t\t\t\t\ttargets.push(rt);\n\t\t\t\t}\n\t\t\t\treturn shadowMap;\n\t\t}\n\t\tstatic create2dMap(device, size, shadowType) {\n\t\t\t\tconst shadowInfo = shadowTypeInfo.get(shadowType);\n\t\t\t\tlet format = shadowInfo.format;\n\t\t\t\tif (format === PIXELFORMAT_R32F && !device.textureFloatRenderable && device.textureHalfFloatRenderable) {\n\t\t\t\t\t\tformat = PIXELFORMAT_R16F;\n\t\t\t\t}\n\t\t\t\tconst formatName = pixelFormatInfo.get(format)?.name;\n\t\t\t\tlet filter = FILTER_LINEAR;\n\t\t\t\tif (shadowType === SHADOW_VSM_32F) {\n\t\t\t\t\t\tfilter = device.extTextureFloatLinear ? FILTER_LINEAR : FILTER_NEAREST;\n\t\t\t\t}\n\t\t\t\tif (shadowType === SHADOW_PCSS_32F) {\n\t\t\t\t\t\tfilter = FILTER_NEAREST;\n\t\t\t\t}\n\t\t\t\tconst texture = new Texture(device, {\n\t\t\t\t\t\tformat: format,\n\t\t\t\t\t\twidth: size,\n\t\t\t\t\t\theight: size,\n\t\t\t\t\t\tmipmaps: false,\n\t\t\t\t\t\tminFilter: filter,\n\t\t\t\t\t\tmagFilter: filter,\n\t\t\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\tname: `ShadowMap2D_${formatName}`\n\t\t\t\t});\n\t\t\t\tlet target = null;\n\t\t\t\tif (shadowInfo?.pcf) {\n\t\t\t\t\t\ttexture.compareOnRead = true;\n\t\t\t\t\t\ttexture.compareFunc = FUNC_LESS;\n\t\t\t\t\t\ttarget = new RenderTarget({\n\t\t\t\t\t\t\t\tdepthBuffer: texture\n\t\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t\ttarget = new RenderTarget({\n\t\t\t\t\t\t\t\tcolorBuffer: texture,\n\t\t\t\t\t\t\t\tdepth: true\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif (device.isWebGPU) {\n\t\t\t\t\t\ttarget.flipY = true;\n\t\t\t\t}\n\t\t\t\treturn new ShadowMap(texture, [\n\t\t\t\t\t\ttarget\n\t\t\t\t]);\n\t\t}\n\t\tstatic createCubemap(device, size, shadowType) {\n\t\t\t\tconst shadowInfo = shadowTypeInfo.get(shadowType);\n\t\t\t\tconst formatName = pixelFormatInfo.get(shadowInfo.format)?.name;\n\t\t\t\tconst isPcss = shadowType === SHADOW_PCSS_32F;\n\t\t\t\tconst filter = isPcss ? FILTER_NEAREST : FILTER_LINEAR;\n\t\t\t\tconst cubemap = new Texture(device, {\n\t\t\t\t\t\tformat: shadowInfo?.format,\n\t\t\t\t\t\twidth: size,\n\t\t\t\t\t\theight: size,\n\t\t\t\t\t\tcubemap: true,\n\t\t\t\t\t\tmipmaps: false,\n\t\t\t\t\t\tminFilter: filter,\n\t\t\t\t\t\tmagFilter: filter,\n\t\t\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\tname: `ShadowMapCube_${formatName}`\n\t\t\t\t});\n\t\t\t\tif (!isPcss) {\n\t\t\t\t\t\tcubemap.compareOnRead = true;\n\t\t\t\t\t\tcubemap.compareFunc = FUNC_LESS;\n\t\t\t\t}\n\t\t\t\tconst targets = [];\n\t\t\t\tfor(let i = 0; i < 6; i++){\n\t\t\t\t\t\tif (isPcss) {\n\t\t\t\t\t\t\t\ttargets.push(new RenderTarget({\n\t\t\t\t\t\t\t\t\t\tcolorBuffer: cubemap,\n\t\t\t\t\t\t\t\t\t\tface: i,\n\t\t\t\t\t\t\t\t\t\tdepth: true\n\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ttargets.push(new RenderTarget({\n\t\t\t\t\t\t\t\t\t\tdepthBuffer: cubemap,\n\t\t\t\t\t\t\t\t\t\tface: i\n\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn new ShadowMap(cubemap, targets);\n\t\t}\n}\n\nconst _tempArray = [];\nconst _tempArray2 = [];\nconst _viewport$3 = new Vec4();\nconst _scissor = new Vec4();\nclass Slot {\n\t\tconstructor(rect){\n\t\t\t\tthis.size = Math.floor(rect.w * 1024);\n\t\t\t\tthis.used = false;\n\t\t\t\tthis.lightId = -1;\n\t\t\t\tthis.rect = rect;\n\t\t}\n}\nclass LightTextureAtlas {\n\t\tconstructor(device){\n\t\t\t\tthis.device = device;\n\t\t\t\tthis.version = 1;\n\t\t\t\tthis.shadowAtlasResolution = 2048;\n\t\t\t\tthis.shadowAtlas = null;\n\t\t\t\tthis.shadowEdgePixels = 3;\n\t\t\t\tthis.cookieAtlasResolution = 4;\n\t\t\t\tthis.cookieAtlas = new Texture(this.device, {\n\t\t\t\t\t\tname: 'CookieAtlas',\n\t\t\t\t\t\twidth: this.cookieAtlasResolution,\n\t\t\t\t\t\theight: this.cookieAtlasResolution,\n\t\t\t\t\t\tformat: PIXELFORMAT_SRGBA8,\n\t\t\t\t\t\tcubemap: false,\n\t\t\t\t\t\tmipmaps: false,\n\t\t\t\t\t\tminFilter: FILTER_NEAREST,\n\t\t\t\t\t\tmagFilter: FILTER_NEAREST,\n\t\t\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE\n\t\t\t\t});\n\t\t\t\tthis.cookieRenderTarget = new RenderTarget({\n\t\t\t\t\t\tcolorBuffer: this.cookieAtlas,\n\t\t\t\t\t\tdepth: false,\n\t\t\t\t\t\tflipY: true\n\t\t\t\t});\n\t\t\t\tthis.slots = [];\n\t\t\t\tthis.atlasSplit = [];\n\t\t\t\tthis.cubeSlotsOffsets = [\n\t\t\t\t\t\tnew Vec2(0, 0),\n\t\t\t\t\t\tnew Vec2(0, 1),\n\t\t\t\t\t\tnew Vec2(1, 0),\n\t\t\t\t\t\tnew Vec2(1, 1),\n\t\t\t\t\t\tnew Vec2(2, 0),\n\t\t\t\t\t\tnew Vec2(2, 1)\n\t\t\t\t];\n\t\t\t\tthis.scissorVec = new Vec4();\n\t\t\t\tthis.allocateShadowAtlas(1);\n\t\t\t\tthis.allocateCookieAtlas(1);\n\t\t\t\tthis.allocateUniforms();\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.destroyShadowAtlas();\n\t\t\t\tthis.destroyCookieAtlas();\n\t\t}\n\t\tdestroyShadowAtlas() {\n\t\t\t\tthis.shadowAtlas?.destroy();\n\t\t\t\tthis.shadowAtlas = null;\n\t\t}\n\t\tdestroyCookieAtlas() {\n\t\t\t\tthis.cookieAtlas?.destroy();\n\t\t\t\tthis.cookieAtlas = null;\n\t\t\t\tthis.cookieRenderTarget?.destroy();\n\t\t\t\tthis.cookieRenderTarget = null;\n\t\t}\n\t\tallocateShadowAtlas(resolution, shadowType = SHADOW_PCF3_32F) {\n\t\t\t\tconst existingFormat = this.shadowAtlas?.texture.format;\n\t\t\t\tconst requiredFormat = shadowTypeInfo.get(shadowType).format;\n\t\t\t\tif (!this.shadowAtlas || this.shadowAtlas.texture.width !== resolution || existingFormat !== requiredFormat) {\n\t\t\t\t\t\tthis.version++;\n\t\t\t\t\t\tthis.destroyShadowAtlas();\n\t\t\t\t\t\tthis.shadowAtlas = ShadowMap.createAtlas(this.device, resolution, shadowType);\n\t\t\t\t\t\tthis.shadowAtlas.cached = true;\n\t\t\t\t\t\tconst scissorOffset = 4 / this.shadowAtlasResolution;\n\t\t\t\t\t\tthis.scissorVec.set(scissorOffset, scissorOffset, -2 * scissorOffset, -2 * scissorOffset);\n\t\t\t\t}\n\t\t}\n\t\tallocateCookieAtlas(resolution) {\n\t\t\t\tif (this.cookieAtlas.width !== resolution) {\n\t\t\t\t\t\tthis.cookieRenderTarget.resize(resolution, resolution);\n\t\t\t\t\t\tthis.version++;\n\t\t\t\t}\n\t\t}\n\t\tallocateUniforms() {\n\t\t\t\tthis._shadowAtlasTextureId = this.device.scope.resolve('shadowAtlasTexture');\n\t\t\t\tthis._shadowAtlasParamsId = this.device.scope.resolve('shadowAtlasParams');\n\t\t\t\tthis._shadowAtlasParams = new Float32Array(2);\n\t\t\t\tthis._cookieAtlasTextureId = this.device.scope.resolve('cookieAtlasTexture');\n\t\t}\n\t\tupdateUniforms() {\n\t\t\t\tconst rt = this.shadowAtlas.renderTargets[0];\n\t\t\t\tconst shadowBuffer = rt.depthBuffer;\n\t\t\t\tthis._shadowAtlasTextureId.setValue(shadowBuffer);\n\t\t\t\tthis._shadowAtlasParams[0] = this.shadowAtlasResolution;\n\t\t\t\tthis._shadowAtlasParams[1] = this.shadowEdgePixels;\n\t\t\t\tthis._shadowAtlasParamsId.setValue(this._shadowAtlasParams);\n\t\t\t\tthis._cookieAtlasTextureId.setValue(this.cookieAtlas);\n\t\t}\n\t\tsubdivide(numLights, lightingParams) {\n\t\t\t\tlet atlasSplit = lightingParams.atlasSplit;\n\t\t\t\tif (!atlasSplit) {\n\t\t\t\t\t\tconst gridSize = Math.ceil(Math.sqrt(numLights));\n\t\t\t\t\t\tatlasSplit = _tempArray2;\n\t\t\t\t\t\tatlasSplit[0] = gridSize;\n\t\t\t\t\t\tatlasSplit.length = 1;\n\t\t\t\t}\n\t\t\t\tconst arraysEqual = (a, b)=>a.length === b.length && a.every((v, i)=>v === b[i]);\n\t\t\t\tif (!arraysEqual(atlasSplit, this.atlasSplit)) {\n\t\t\t\t\t\tthis.version++;\n\t\t\t\t\t\tthis.slots.length = 0;\n\t\t\t\t\t\tthis.atlasSplit.length = 0;\n\t\t\t\t\t\tthis.atlasSplit.push(...atlasSplit);\n\t\t\t\t\t\tconst splitCount = this.atlasSplit[0];\n\t\t\t\t\t\tif (splitCount > 1) {\n\t\t\t\t\t\t\t\tconst invSize = 1 / splitCount;\n\t\t\t\t\t\t\t\tfor(let i = 0; i < splitCount; i++){\n\t\t\t\t\t\t\t\t\t\tfor(let j = 0; j < splitCount; j++){\n\t\t\t\t\t\t\t\t\t\t\t\tconst rect = new Vec4(i * invSize, j * invSize, invSize, invSize);\n\t\t\t\t\t\t\t\t\t\t\t\tconst nextLevelSplit = this.atlasSplit[1 + i * splitCount + j];\n\t\t\t\t\t\t\t\t\t\t\t\tif (nextLevelSplit > 1) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor(let x = 0; x < nextLevelSplit; x++){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor(let y = 0; y < nextLevelSplit; y++){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst invSizeNext = invSize / nextLevelSplit;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst rectNext = new Vec4(rect.x + x * invSizeNext, rect.y + y * invSizeNext, invSizeNext, invSizeNext);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.slots.push(new Slot(rectNext));\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.slots.push(new Slot(rect));\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.slots.push(new Slot(new Vec4(0, 0, 1, 1)));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.slots.sort((a, b)=>{\n\t\t\t\t\t\t\t\treturn b.size - a.size;\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t}\n\t\tcollectLights(localLights, lightingParams) {\n\t\t\t\tconst cookiesEnabled = lightingParams.cookiesEnabled;\n\t\t\t\tconst shadowsEnabled = lightingParams.shadowsEnabled;\n\t\t\t\tlet needsShadowAtlas = false;\n\t\t\t\tlet needsCookieAtlas = false;\n\t\t\t\tconst lights = _tempArray;\n\t\t\t\tlights.length = 0;\n\t\t\t\tconst processLights = (list)=>{\n\t\t\t\t\t\tfor(let i = 0; i < list.length; i++){\n\t\t\t\t\t\t\t\tconst light = list[i];\n\t\t\t\t\t\t\t\tif (light.visibleThisFrame) {\n\t\t\t\t\t\t\t\t\t\tconst lightShadow = shadowsEnabled && light.castShadows;\n\t\t\t\t\t\t\t\t\t\tconst lightCookie = cookiesEnabled && !!light.cookie;\n\t\t\t\t\t\t\t\t\t\tneedsShadowAtlas ||= lightShadow;\n\t\t\t\t\t\t\t\t\t\tneedsCookieAtlas ||= lightCookie;\n\t\t\t\t\t\t\t\t\t\tif (lightShadow || lightCookie) {\n\t\t\t\t\t\t\t\t\t\t\t\tlights.push(light);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tif (cookiesEnabled || shadowsEnabled) {\n\t\t\t\t\t\tprocessLights(localLights);\n\t\t\t\t}\n\t\t\t\tlights.sort((a, b)=>{\n\t\t\t\t\t\treturn b.maxScreenSize - a.maxScreenSize;\n\t\t\t\t});\n\t\t\t\tif (needsShadowAtlas) {\n\t\t\t\t\t\tthis.allocateShadowAtlas(this.shadowAtlasResolution, lightingParams.shadowType);\n\t\t\t\t}\n\t\t\t\tif (needsCookieAtlas) {\n\t\t\t\t\t\tthis.allocateCookieAtlas(this.cookieAtlasResolution);\n\t\t\t\t}\n\t\t\t\tif (needsShadowAtlas || needsCookieAtlas) {\n\t\t\t\t\t\tthis.subdivide(lights.length, lightingParams);\n\t\t\t\t}\n\t\t\t\treturn lights;\n\t\t}\n\t\tsetupSlot(light, rect) {\n\t\t\t\tlight.atlasViewport.copy(rect);\n\t\t\t\tconst faceCount = light.numShadowFaces;\n\t\t\t\tfor(let face = 0; face < faceCount; face++){\n\t\t\t\t\t\tif (light.castShadows || light._cookie) {\n\t\t\t\t\t\t\t\t_viewport$3.copy(rect);\n\t\t\t\t\t\t\t\t_scissor.copy(rect);\n\t\t\t\t\t\t\t\tif (light._type === LIGHTTYPE_SPOT) {\n\t\t\t\t\t\t\t\t\t\t_viewport$3.add(this.scissorVec);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (light._type === LIGHTTYPE_OMNI) {\n\t\t\t\t\t\t\t\t\t\tconst smallSize = _viewport$3.z / 3;\n\t\t\t\t\t\t\t\t\t\tconst offset = this.cubeSlotsOffsets[face];\n\t\t\t\t\t\t\t\t\t\t_viewport$3.x += smallSize * offset.x;\n\t\t\t\t\t\t\t\t\t\t_viewport$3.y += smallSize * offset.y;\n\t\t\t\t\t\t\t\t\t\t_viewport$3.z = smallSize;\n\t\t\t\t\t\t\t\t\t\t_viewport$3.w = smallSize;\n\t\t\t\t\t\t\t\t\t\t_scissor.copy(_viewport$3);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (light.castShadows) {\n\t\t\t\t\t\t\t\t\t\tconst lightRenderData = light.getRenderData(null, face);\n\t\t\t\t\t\t\t\t\t\tlightRenderData.shadowViewport.copy(_viewport$3);\n\t\t\t\t\t\t\t\t\t\tlightRenderData.shadowScissor.copy(_scissor);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tassignSlot(light, slotIndex, slotReassigned) {\n\t\t\t\tlight.atlasViewportAllocated = true;\n\t\t\t\tconst slot = this.slots[slotIndex];\n\t\t\t\tslot.lightId = light.id;\n\t\t\t\tslot.used = true;\n\t\t\t\tif (slotReassigned) {\n\t\t\t\t\t\tlight.atlasSlotUpdated = true;\n\t\t\t\t\t\tlight.atlasVersion = this.version;\n\t\t\t\t\t\tlight.atlasSlotIndex = slotIndex;\n\t\t\t\t}\n\t\t}\n\t\tupdate(localLights, lightingParams) {\n\t\t\t\tthis.shadowAtlasResolution = lightingParams.shadowAtlasResolution;\n\t\t\t\tthis.cookieAtlasResolution = lightingParams.cookieAtlasResolution;\n\t\t\t\tconst lights = this.collectLights(localLights, lightingParams);\n\t\t\t\tif (lights.length > 0) {\n\t\t\t\t\t\tconst slots = this.slots;\n\t\t\t\t\t\tfor(let i = 0; i < slots.length; i++){\n\t\t\t\t\t\t\t\tslots[i].used = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst assignCount = Math.min(lights.length, slots.length);\n\t\t\t\t\t\tfor(let i = 0; i < assignCount; i++){\n\t\t\t\t\t\t\t\tconst light = lights[i];\n\t\t\t\t\t\t\t\tif (light.castShadows) {\n\t\t\t\t\t\t\t\t\t\tlight._shadowMap = this.shadowAtlas;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst previousSlot = slots[light.atlasSlotIndex];\n\t\t\t\t\t\t\t\tif (light.atlasVersion === this.version && light.id === previousSlot?.lightId) {\n\t\t\t\t\t\t\t\t\t\tconst previousSlot = slots[light.atlasSlotIndex];\n\t\t\t\t\t\t\t\t\t\tif (previousSlot.size === slots[i].size && !previousSlot.used) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.assignSlot(light, light.atlasSlotIndex, false);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlet usedCount = 0;\n\t\t\t\t\t\tfor(let i = 0; i < assignCount; i++){\n\t\t\t\t\t\t\t\twhile(usedCount < slots.length && slots[usedCount].used){\n\t\t\t\t\t\t\t\t\t\tusedCount++;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst light = lights[i];\n\t\t\t\t\t\t\t\tif (!light.atlasViewportAllocated) {\n\t\t\t\t\t\t\t\t\t\tthis.assignSlot(light, usedCount, true);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst slot = slots[light.atlasSlotIndex];\n\t\t\t\t\t\t\t\tthis.setupSlot(light, slot.rect);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.updateUniforms();\n\t\t}\n}\n\nconst blendModes = [];\nblendModes[BLEND_SUBTRACTIVE] = {\n\t\tsrc: BLENDMODE_ONE,\n\t\tdst: BLENDMODE_ONE,\n\t\top: BLENDEQUATION_REVERSE_SUBTRACT\n};\nblendModes[BLEND_NONE] = {\n\t\tsrc: BLENDMODE_ONE,\n\t\tdst: BLENDMODE_ZERO,\n\t\top: BLENDEQUATION_ADD\n};\nblendModes[BLEND_NORMAL] = {\n\t\tsrc: BLENDMODE_SRC_ALPHA,\n\t\tdst: BLENDMODE_ONE_MINUS_SRC_ALPHA,\n\t\top: BLENDEQUATION_ADD,\n\t\talphaSrc: BLENDMODE_ONE\n};\nblendModes[BLEND_PREMULTIPLIED] = {\n\t\tsrc: BLENDMODE_ONE,\n\t\tdst: BLENDMODE_ONE_MINUS_SRC_ALPHA,\n\t\top: BLENDEQUATION_ADD\n};\nblendModes[BLEND_ADDITIVE] = {\n\t\tsrc: BLENDMODE_ONE,\n\t\tdst: BLENDMODE_ONE,\n\t\top: BLENDEQUATION_ADD\n};\nblendModes[BLEND_ADDITIVEALPHA] = {\n\t\tsrc: BLENDMODE_SRC_ALPHA,\n\t\tdst: BLENDMODE_ONE,\n\t\top: BLENDEQUATION_ADD\n};\nblendModes[BLEND_MULTIPLICATIVE2X] = {\n\t\tsrc: BLENDMODE_DST_COLOR,\n\t\tdst: BLENDMODE_SRC_COLOR,\n\t\top: BLENDEQUATION_ADD\n};\nblendModes[BLEND_SCREEN] = {\n\t\tsrc: BLENDMODE_ONE_MINUS_DST_COLOR,\n\t\tdst: BLENDMODE_ONE,\n\t\top: BLENDEQUATION_ADD\n};\nblendModes[BLEND_MULTIPLICATIVE] = {\n\t\tsrc: BLENDMODE_DST_COLOR,\n\t\tdst: BLENDMODE_ZERO,\n\t\top: BLENDEQUATION_ADD\n};\nblendModes[BLEND_MIN] = {\n\t\tsrc: BLENDMODE_ONE,\n\t\tdst: BLENDMODE_ONE,\n\t\top: BLENDEQUATION_MIN\n};\nblendModes[BLEND_MAX] = {\n\t\tsrc: BLENDMODE_ONE,\n\t\tdst: BLENDMODE_ONE,\n\t\top: BLENDEQUATION_MAX\n};\nlet id$3 = 0;\nclass Material {\n\t\tconstructor(){\n\t\t\t\tthis.meshInstances = [];\n\t\t\t\tthis.name = 'Untitled';\n\t\t\t\tthis.userId = '';\n\t\t\t\tthis.id = id$3++;\n\t\t\t\tthis.variants = new Map();\n\t\t\t\tthis.defines = new Map();\n\t\t\t\tthis._definesDirty = false;\n\t\t\t\tthis.parameters = {};\n\t\t\t\tthis.alphaTest = 0;\n\t\t\t\tthis.alphaToCoverage = false;\n\t\t\t\tthis._blendState = new BlendState();\n\t\t\t\tthis._depthState = new DepthState();\n\t\t\t\tthis.cull = CULLFACE_BACK;\n\t\t\t\tthis.stencilFront = null;\n\t\t\t\tthis.stencilBack = null;\n\t\t\t\tthis._shaderChunks = null;\n\t\t\t\tthis._oldChunks = {};\n\t\t\t\tthis._dirtyShader = true;\n\t\t\t\tthis._shaderVersion = 0;\n\t\t\t\tthis._scene = null;\n\t\t\t\tthis.dirty = true;\n\t\t}\n\t\tget hasShaderChunks() {\n\t\t\t\treturn this._shaderChunks != null;\n\t\t}\n\t\tget shaderChunks() {\n\t\t\t\tif (!this._shaderChunks) {\n\t\t\t\t\t\tthis._shaderChunks = new ShaderChunks();\n\t\t\t\t}\n\t\t\t\treturn this._shaderChunks;\n\t\t}\n\t\tgetShaderChunks(shaderLanguage = SHADERLANGUAGE_GLSL) {\n\t\t\t\tconst chunks = this.shaderChunks;\n\t\t\t\treturn shaderLanguage === SHADERLANGUAGE_GLSL ? chunks.glsl : chunks.wgsl;\n\t\t}\n\t\tset shaderChunksVersion(value) {\n\t\t\t\tthis.shaderChunks.version = value;\n\t\t}\n\t\tget shaderChunksVersion() {\n\t\t\t\treturn this.shaderChunks.version;\n\t\t}\n\t\tset chunks(value) {\n\t\t\t\tthis._oldChunks = value;\n\t\t}\n\t\tget chunks() {\n\t\t\t\tObject.assign(this._oldChunks, Object.fromEntries(this.shaderChunks.glsl));\n\t\t\t\treturn this._oldChunks;\n\t\t}\n\t\tset depthBias(value) {\n\t\t\t\tthis._depthState.depthBias = value;\n\t\t}\n\t\tget depthBias() {\n\t\t\t\treturn this._depthState.depthBias;\n\t\t}\n\t\tset slopeDepthBias(value) {\n\t\t\t\tthis._depthState.depthBiasSlope = value;\n\t\t}\n\t\tget slopeDepthBias() {\n\t\t\t\treturn this._depthState.depthBiasSlope;\n\t\t}\n\t\tset redWrite(value) {\n\t\t\t\tthis._blendState.redWrite = value;\n\t\t}\n\t\tget redWrite() {\n\t\t\t\treturn this._blendState.redWrite;\n\t\t}\n\t\tset greenWrite(value) {\n\t\t\t\tthis._blendState.greenWrite = value;\n\t\t}\n\t\tget greenWrite() {\n\t\t\t\treturn this._blendState.greenWrite;\n\t\t}\n\t\tset blueWrite(value) {\n\t\t\t\tthis._blendState.blueWrite = value;\n\t\t}\n\t\tget blueWrite() {\n\t\t\t\treturn this._blendState.blueWrite;\n\t\t}\n\t\tset alphaWrite(value) {\n\t\t\t\tthis._blendState.alphaWrite = value;\n\t\t}\n\t\tget alphaWrite() {\n\t\t\t\treturn this._blendState.alphaWrite;\n\t\t}\n\t\tget transparent() {\n\t\t\t\treturn this._blendState.blend;\n\t\t}\n\t\t_updateTransparency() {\n\t\t\t\tconst transparent = this.transparent;\n\t\t\t\tconst meshInstances = this.meshInstances;\n\t\t\t\tfor(let i = 0; i < meshInstances.length; i++){\n\t\t\t\t\t\tmeshInstances[i].transparent = transparent;\n\t\t\t\t}\n\t\t}\n\t\tset blendState(value) {\n\t\t\t\tthis._blendState.copy(value);\n\t\t\t\tthis._updateTransparency();\n\t\t}\n\t\tget blendState() {\n\t\t\t\treturn this._blendState;\n\t\t}\n\t\tset blendType(type) {\n\t\t\t\tconst blendMode = blendModes[type];\n\t\t\t\tthis._blendState.setColorBlend(blendMode.op, blendMode.src, blendMode.dst);\n\t\t\t\tthis._blendState.setAlphaBlend(blendMode.alphaOp ?? blendMode.op, blendMode.alphaSrc ?? blendMode.src, blendMode.alphaDst ?? blendMode.dst);\n\t\t\t\tconst blend = type !== BLEND_NONE;\n\t\t\t\tif (this._blendState.blend !== blend) {\n\t\t\t\t\t\tthis._blendState.blend = blend;\n\t\t\t\t\t\tthis._updateTransparency();\n\t\t\t\t}\n\t\t\t\tthis._updateMeshInstanceKeys();\n\t\t}\n\t\tget blendType() {\n\t\t\t\tif (!this.transparent) {\n\t\t\t\t\t\treturn BLEND_NONE;\n\t\t\t\t}\n\t\t\t\tconst { colorOp, colorSrcFactor, colorDstFactor, alphaOp, alphaSrcFactor, alphaDstFactor } = this._blendState;\n\t\t\t\tfor(let i = 0; i < blendModes.length; i++){\n\t\t\t\t\t\tconst blendMode = blendModes[i];\n\t\t\t\t\t\tif (blendMode.src === colorSrcFactor && blendMode.dst === colorDstFactor && blendMode.op === colorOp && blendMode.src === alphaSrcFactor && blendMode.dst === alphaDstFactor && blendMode.op === alphaOp) {\n\t\t\t\t\t\t\t\treturn i;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn BLEND_NORMAL;\n\t\t}\n\t\tset depthState(value) {\n\t\t\t\tthis._depthState.copy(value);\n\t\t}\n\t\tget depthState() {\n\t\t\t\treturn this._depthState;\n\t\t}\n\t\tset depthTest(value) {\n\t\t\t\tthis._depthState.test = value;\n\t\t}\n\t\tget depthTest() {\n\t\t\t\treturn this._depthState.test;\n\t\t}\n\t\tset depthFunc(value) {\n\t\t\t\tthis._depthState.func = value;\n\t\t}\n\t\tget depthFunc() {\n\t\t\t\treturn this._depthState.func;\n\t\t}\n\t\tset depthWrite(value) {\n\t\t\t\tthis._depthState.write = value;\n\t\t}\n\t\tget depthWrite() {\n\t\t\t\treturn this._depthState.write;\n\t\t}\n\t\tcopy(source) {\n\t\t\t\tthis.name = source.name;\n\t\t\t\tthis.alphaTest = source.alphaTest;\n\t\t\t\tthis.alphaToCoverage = source.alphaToCoverage;\n\t\t\t\tthis._blendState.copy(source._blendState);\n\t\t\t\tthis._depthState.copy(source._depthState);\n\t\t\t\tthis.cull = source.cull;\n\t\t\t\tthis.stencilFront = source.stencilFront?.clone();\n\t\t\t\tif (source.stencilBack) {\n\t\t\t\t\t\tthis.stencilBack = source.stencilFront === source.stencilBack ? this.stencilFront : source.stencilBack.clone();\n\t\t\t\t}\n\t\t\t\tthis.clearParameters();\n\t\t\t\tfor(const name in source.parameters){\n\t\t\t\t\t\tif (source.parameters.hasOwnProperty(name)) {\n\t\t\t\t\t\t\t\tthis._setParameterSimple(name, source.parameters[name].data);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.defines.clear();\n\t\t\t\tsource.defines.forEach((value, key)=>this.defines.set(key, value));\n\t\t\t\tthis._shaderChunks = source.hasShaderChunks ? new ShaderChunks() : null;\n\t\t\t\tthis._shaderChunks?.copy(source._shaderChunks);\n\t\t\t\treturn this;\n\t\t}\n\t\tclone() {\n\t\t\t\tconst clone = new this.constructor();\n\t\t\t\treturn clone.copy(this);\n\t\t}\n\t\t_updateMeshInstanceKeys() {\n\t\t\t\tconst meshInstances = this.meshInstances;\n\t\t\t\tfor(let i = 0; i < meshInstances.length; i++){\n\t\t\t\t\t\tmeshInstances[i].updateKey();\n\t\t\t\t}\n\t\t}\n\t\tupdateUniforms(device, scene) {\n\t\t\t\tif (this._dirtyShader) {\n\t\t\t\t\t\tthis.clearVariants();\n\t\t\t\t}\n\t\t}\n\t\tgetShaderVariant(params) {}\n\t\tupdate() {\n\t\t\t\tif (Object.keys(this._oldChunks).length > 0) {\n\t\t\t\t\t\tfor (const [key, value] of Object.entries(this._oldChunks)){\n\t\t\t\t\t\t\t\tthis.shaderChunks.glsl.set(key, value);\n\t\t\t\t\t\t\t\tdelete this._oldChunks[key];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this._definesDirty || this._shaderChunks?.isDirty()) {\n\t\t\t\t\t\tthis._definesDirty = false;\n\t\t\t\t\t\tthis._shaderChunks?.resetDirty();\n\t\t\t\t\t\tthis.clearVariants();\n\t\t\t\t}\n\t\t\t\tthis.dirty = true;\n\t\t}\n\t\tclearParameters() {\n\t\t\t\tthis.parameters = {};\n\t\t}\n\t\tgetParameters() {\n\t\t\t\treturn this.parameters;\n\t\t}\n\t\tclearVariants() {\n\t\t\t\tthis.variants.clear();\n\t\t\t\tconst meshInstances = this.meshInstances;\n\t\t\t\tconst count = meshInstances.length;\n\t\t\t\tfor(let i = 0; i < count; i++){\n\t\t\t\t\t\tmeshInstances[i].clearShaders();\n\t\t\t\t}\n\t\t}\n\t\tgetParameter(name) {\n\t\t\t\treturn this.parameters[name];\n\t\t}\n\t\t_setParameterSimple(name, data) {\n\t\t\t\tconst param = this.parameters[name];\n\t\t\t\tif (param) {\n\t\t\t\t\t\tparam.data = data;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.parameters[name] = {\n\t\t\t\t\t\t\t\tscopeId: null,\n\t\t\t\t\t\t\t\tdata: data\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t}\n\t\tsetParameter(name, data) {\n\t\t\t\tif (data === undefined && typeof name === 'object') {\n\t\t\t\t\t\tconst uniformObject = name;\n\t\t\t\t\t\tif (uniformObject.length) {\n\t\t\t\t\t\t\t\tfor(let i = 0; i < uniformObject.length; i++){\n\t\t\t\t\t\t\t\t\t\tthis.setParameter(uniformObject[i]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tname = uniformObject.name;\n\t\t\t\t\t\tdata = uniformObject.value;\n\t\t\t\t}\n\t\t\t\tthis._setParameterSimple(name, data);\n\t\t}\n\t\tdeleteParameter(name) {\n\t\t\t\tif (this.parameters[name]) {\n\t\t\t\t\t\tdelete this.parameters[name];\n\t\t\t\t}\n\t\t}\n\t\tsetParameters(device, names) {\n\t\t\t\tconst parameters = this.parameters;\n\t\t\t\tif (names === undefined) names = parameters;\n\t\t\t\tfor(const paramName in names){\n\t\t\t\t\t\tconst parameter = parameters[paramName];\n\t\t\t\t\t\tif (parameter) {\n\t\t\t\t\t\t\t\tif (!parameter.scopeId) {\n\t\t\t\t\t\t\t\t\t\tparameter.scopeId = device.scope.resolve(paramName);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tparameter.scopeId.setValue(parameter.data);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tsetDefine(name, value) {\n\t\t\t\tlet modified = false;\n\t\t\t\tconst { defines } = this;\n\t\t\t\tif (value !== undefined && value !== false) {\n\t\t\t\t\t\tmodified = !defines.has(name) || defines.get(name) !== value;\n\t\t\t\t\t\tdefines.set(name, value);\n\t\t\t\t} else {\n\t\t\t\t\t\tmodified = defines.has(name);\n\t\t\t\t\t\tdefines.delete(name);\n\t\t\t\t}\n\t\t\t\tthis._definesDirty ||= modified;\n\t\t}\n\t\tgetDefine(name) {\n\t\t\t\treturn this.defines.has(name);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.variants.clear();\n\t\t\t\tfor(let i = 0; i < this.meshInstances.length; i++){\n\t\t\t\t\t\tconst meshInstance = this.meshInstances[i];\n\t\t\t\t\t\tmeshInstance.clearShaders();\n\t\t\t\t\t\tmeshInstance._material = null;\n\t\t\t\t\t\tif (meshInstance.mesh) {\n\t\t\t\t\t\t\t\tconst defaultMaterial = getDefaultMaterial(meshInstance.mesh.device);\n\t\t\t\t\t\t\t\tif (this !== defaultMaterial) {\n\t\t\t\t\t\t\t\t\t\tmeshInstance.material = defaultMaterial;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.meshInstances.length = 0;\n\t\t}\n\t\taddMeshInstanceRef(meshInstance) {\n\t\t\t\tthis.meshInstances.push(meshInstance);\n\t\t}\n\t\tremoveMeshInstanceRef(meshInstance) {\n\t\t\t\tconst meshInstances = this.meshInstances;\n\t\t\t\tconst i = meshInstances.indexOf(meshInstance);\n\t\t\t\tif (i !== -1) {\n\t\t\t\t\t\tmeshInstances.splice(i, 1);\n\t\t\t\t}\n\t\t}\n}\n\nclass ShadowMapCache {\n\t\tconstructor(){\n\t\t\t\tthis.cache = new Map();\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.clear();\n\t\t\t\tthis.cache = null;\n\t\t}\n\t\tclear() {\n\t\t\t\tthis.cache.forEach((shadowMaps)=>{\n\t\t\t\t\t\tshadowMaps.forEach((shadowMap)=>{\n\t\t\t\t\t\t\t\tshadowMap.destroy();\n\t\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tthis.cache.clear();\n\t\t}\n\t\tgetKey(light) {\n\t\t\t\tconst isCubeMap = light._type === LIGHTTYPE_OMNI;\n\t\t\t\tconst shadowType = light._shadowType;\n\t\t\t\tconst resolution = light._shadowResolution;\n\t\t\t\treturn `${isCubeMap}-${shadowType}-${resolution}`;\n\t\t}\n\t\tget(device, light) {\n\t\t\t\tconst key = this.getKey(light);\n\t\t\t\tconst shadowMaps = this.cache.get(key);\n\t\t\t\tif (shadowMaps && shadowMaps.length) {\n\t\t\t\t\t\treturn shadowMaps.pop();\n\t\t\t\t}\n\t\t\t\tconst shadowMap = ShadowMap.create(device, light);\n\t\t\t\tshadowMap.cached = true;\n\t\t\t\treturn shadowMap;\n\t\t}\n\t\tadd(light, shadowMap) {\n\t\t\t\tconst key = this.getKey(light);\n\t\t\t\tconst shadowMaps = this.cache.get(key);\n\t\t\t\tif (shadowMaps) {\n\t\t\t\t\t\tshadowMaps.push(shadowMap);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.cache.set(key, [\n\t\t\t\t\t\t\t\tshadowMap\n\t\t\t\t\t\t]);\n\t\t\t\t}\n\t\t}\n}\n\nclass RenderPassShadowLocalNonClustered extends RenderPass {\n\t\tconstructor(device, shadowRenderer, light, face, applyVsm){\n\t\t\t\tsuper(device);\n\t\t\t\tthis.requiresCubemaps = false;\n\t\t\t\tthis.shadowRenderer = shadowRenderer;\n\t\t\t\tthis.light = light;\n\t\t\t\tthis.face = face;\n\t\t\t\tthis.applyVsm = applyVsm;\n\t\t\t\tthis.shadowCamera = shadowRenderer.prepareFace(light, null, face);\n\t\t\t\tshadowRenderer.setupRenderPass(this, this.shadowCamera, true);\n\t\t}\n\t\texecute() {\n\t\t\t\tthis.shadowRenderer.renderFace(this.light, null, this.face, false);\n\t\t}\n\t\tafter() {\n\t\t\t\tif (this.applyVsm) {\n\t\t\t\t\t\tthis.shadowRenderer.renderVsm(this.light, this.shadowCamera);\n\t\t\t\t}\n\t\t}\n}\n\nclass ShadowRendererLocal {\n\t\tconstructor(renderer, shadowRenderer){\n\t\t\t\tthis.shadowLights = [];\n\t\t\t\tthis.renderer = renderer;\n\t\t\t\tthis.shadowRenderer = shadowRenderer;\n\t\t\t\tthis.device = renderer.device;\n\t\t}\n\t\tcull(light, comp, casters = null) {\n\t\t\t\tconst isClustered = this.renderer.scene.clusteredLightingEnabled;\n\t\t\t\tlight.visibleThisFrame = true;\n\t\t\t\tif (!isClustered) {\n\t\t\t\t\t\tif (!light._shadowMap) {\n\t\t\t\t\t\t\t\tlight._shadowMap = ShadowMap.create(this.device, light);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst type = light._type;\n\t\t\t\tconst faceCount = type === LIGHTTYPE_SPOT ? 1 : 6;\n\t\t\t\tfor(let face = 0; face < faceCount; face++){\n\t\t\t\t\t\tconst lightRenderData = light.getRenderData(null, face);\n\t\t\t\t\t\tconst shadowCam = lightRenderData.shadowCamera;\n\t\t\t\t\t\tshadowCam.nearClip = light.attenuationEnd / 1000;\n\t\t\t\t\t\tshadowCam.farClip = light.attenuationEnd;\n\t\t\t\t\t\tconst shadowCamNode = shadowCam._node;\n\t\t\t\t\t\tconst lightNode = light._node;\n\t\t\t\t\t\tshadowCamNode.setPosition(lightNode.getPosition());\n\t\t\t\t\t\tif (type === LIGHTTYPE_SPOT) {\n\t\t\t\t\t\t\t\tshadowCam.fov = light._outerConeAngle * 2;\n\t\t\t\t\t\t\t\tshadowCamNode.setRotation(lightNode.getRotation());\n\t\t\t\t\t\t\t\tshadowCamNode.rotateLocal(-90, 0, 0);\n\t\t\t\t\t\t} else if (type === LIGHTTYPE_OMNI) {\n\t\t\t\t\t\t\t\tif (isClustered) {\n\t\t\t\t\t\t\t\t\t\tconst tileSize = this.shadowRenderer.lightTextureAtlas.shadowAtlasResolution * light.atlasViewport.z / 3;\n\t\t\t\t\t\t\t\t\t\tconst texelSize = 2 / tileSize;\n\t\t\t\t\t\t\t\t\t\tconst filterSize = texelSize * this.shadowRenderer.lightTextureAtlas.shadowEdgePixels;\n\t\t\t\t\t\t\t\t\t\tshadowCam.fov = Math.atan(1 + filterSize) * math.RAD_TO_DEG * 2;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tshadowCam.fov = 90;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.renderer.updateCameraFrustum(shadowCam);\n\t\t\t\t\t\tthis.shadowRenderer.cullShadowCasters(comp, light, lightRenderData.visibleCasters, shadowCam, casters);\n\t\t\t\t}\n\t\t}\n\t\tprepareLights(shadowLights, lights) {\n\t\t\t\tlet shadowCamera;\n\t\t\t\tfor(let i = 0; i < lights.length; i++){\n\t\t\t\t\t\tconst light = lights[i];\n\t\t\t\t\t\tif (this.shadowRenderer.needsShadowRendering(light) && light.atlasViewportAllocated) {\n\t\t\t\t\t\t\t\tshadowLights.push(light);\n\t\t\t\t\t\t\t\tfor(let face = 0; face < light.numShadowFaces; face++){\n\t\t\t\t\t\t\t\t\t\tshadowCamera = this.shadowRenderer.prepareFace(light, null, face);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn shadowCamera;\n\t\t}\n\t\tbuildNonClusteredRenderPasses(frameGraph, localLights) {\n\t\t\t\tfor(let i = 0; i < localLights.length; i++){\n\t\t\t\t\t\tconst light = localLights[i];\n\t\t\t\t\t\tif (this.shadowRenderer.needsShadowRendering(light)) {\n\t\t\t\t\t\t\t\tconst applyVsm = light._type === LIGHTTYPE_SPOT;\n\t\t\t\t\t\t\t\tconst faceCount = light.numShadowFaces;\n\t\t\t\t\t\t\t\tfor(let face = 0; face < faceCount; face++){\n\t\t\t\t\t\t\t\t\t\tconst renderPass = new RenderPassShadowLocalNonClustered(this.device, this.shadowRenderer, light, face, applyVsm);\n\t\t\t\t\t\t\t\t\t\tframeGraph.addRenderPass(renderPass);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n}\n\nclass RenderPassShadowDirectional extends RenderPass {\n\t\tconstructor(device, shadowRenderer, light, camera, allCascadesRendering){\n\t\t\t\tsuper(device);\n\t\t\t\tthis.shadowRenderer = shadowRenderer;\n\t\t\t\tthis.light = light;\n\t\t\t\tthis.camera = camera;\n\t\t\t\tthis.allCascadesRendering = allCascadesRendering;\n\t\t}\n\t\texecute() {\n\t\t\t\tconst { light, camera, shadowRenderer, allCascadesRendering } = this;\n\t\t\t\tconst faceCount = light.numShadowFaces;\n\t\t\t\tconst shadowUpdateOverrides = light.shadowUpdateOverrides;\n\t\t\t\tfor(let face = 0; face < faceCount; face++){\n\t\t\t\t\t\tif (shadowUpdateOverrides?.[face] !== SHADOWUPDATE_NONE) {\n\t\t\t\t\t\t\t\tshadowRenderer.renderFace(light, camera, face, !allCascadesRendering);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (shadowUpdateOverrides?.[face] === SHADOWUPDATE_THISFRAME) {\n\t\t\t\t\t\t\t\tshadowUpdateOverrides[face] = SHADOWUPDATE_NONE;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tafter() {\n\t\t\t\tthis.shadowRenderer.renderVsm(this.light, this.camera);\n\t\t}\n}\n\nconst visibleSceneAabb = new BoundingBox();\nconst center = new Vec3();\nconst shadowCamView$1 = new Mat4();\nconst aabbPoints = [\n\t\tnew Vec3(),\n\t\tnew Vec3(),\n\t\tnew Vec3(),\n\t\tnew Vec3(),\n\t\tnew Vec3(),\n\t\tnew Vec3(),\n\t\tnew Vec3(),\n\t\tnew Vec3()\n];\nconst _depthRange = {\n\t\tmin: 0,\n\t\tmax: 0\n};\nfunction getDepthRange(cameraViewMatrix, aabbMin, aabbMax) {\n\t\taabbPoints[0].x = aabbPoints[1].x = aabbPoints[2].x = aabbPoints[3].x = aabbMin.x;\n\t\taabbPoints[1].y = aabbPoints[3].y = aabbPoints[7].y = aabbPoints[5].y = aabbMin.y;\n\t\taabbPoints[2].z = aabbPoints[3].z = aabbPoints[6].z = aabbPoints[7].z = aabbMin.z;\n\t\taabbPoints[4].x = aabbPoints[5].x = aabbPoints[6].x = aabbPoints[7].x = aabbMax.x;\n\t\taabbPoints[0].y = aabbPoints[2].y = aabbPoints[4].y = aabbPoints[6].y = aabbMax.y;\n\t\taabbPoints[0].z = aabbPoints[1].z = aabbPoints[4].z = aabbPoints[5].z = aabbMax.z;\n\t\tlet minz = 9999999999;\n\t\tlet maxz = -9999999999;\n\t\tfor(let i = 0; i < 8; ++i){\n\t\t\t\tcameraViewMatrix.transformPoint(aabbPoints[i], aabbPoints[i]);\n\t\t\t\tconst z = aabbPoints[i].z;\n\t\t\t\tif (z < minz) minz = z;\n\t\t\t\tif (z > maxz) maxz = z;\n\t\t}\n\t\t_depthRange.min = minz;\n\t\t_depthRange.max = maxz;\n\t\treturn _depthRange;\n}\nclass ShadowRendererDirectional {\n\t\tconstructor(renderer, shadowRenderer){\n\t\t\t\tthis.renderer = renderer;\n\t\t\t\tthis.shadowRenderer = shadowRenderer;\n\t\t\t\tthis.device = renderer.device;\n\t\t}\n\t\tcull(light, comp, camera, casters = null) {\n\t\t\t\tlight.visibleThisFrame = true;\n\t\t\t\tif (!light._shadowMap) {\n\t\t\t\t\t\tlight._shadowMap = ShadowMap.create(this.device, light);\n\t\t\t\t}\n\t\t\t\tconst nearDist = camera._nearClip;\n\t\t\t\tthis.generateSplitDistances(light, nearDist, Math.min(camera._farClip, light.shadowDistance));\n\t\t\t\tconst shadowUpdateOverrides = light.shadowUpdateOverrides;\n\t\t\t\tfor(let cascade = 0; cascade < light.numCascades; cascade++){\n\t\t\t\t\t\tif (shadowUpdateOverrides?.[cascade] === SHADOWUPDATE_NONE) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst lightRenderData = light.getRenderData(camera, cascade);\n\t\t\t\t\t\tconst shadowCam = lightRenderData.shadowCamera;\n\t\t\t\t\t\tshadowCam.renderTarget = light._shadowMap.renderTargets[0];\n\t\t\t\t\t\tlightRenderData.shadowViewport.copy(light.cascades[cascade]);\n\t\t\t\t\t\tlightRenderData.shadowScissor.copy(light.cascades[cascade]);\n\t\t\t\t\t\tconst shadowCamNode = shadowCam._node;\n\t\t\t\t\t\tconst lightNode = light._node;\n\t\t\t\t\t\tshadowCamNode.setPosition(lightNode.getPosition());\n\t\t\t\t\t\tshadowCamNode.setRotation(lightNode.getRotation());\n\t\t\t\t\t\tshadowCamNode.rotateLocal(-90, 0, 0);\n\t\t\t\t\t\tconst frustumNearDist = cascade === 0 ? nearDist : light._shadowCascadeDistances[cascade - 1];\n\t\t\t\t\t\tconst frustumFarDist = light._shadowCascadeDistances[cascade];\n\t\t\t\t\t\tconst frustumPoints = camera.getFrustumCorners(frustumNearDist, frustumFarDist);\n\t\t\t\t\t\tcenter.set(0, 0, 0);\n\t\t\t\t\t\tconst cameraWorldMat = camera.node.getWorldTransform();\n\t\t\t\t\t\tfor(let i = 0; i < 8; i++){\n\t\t\t\t\t\t\t\tcameraWorldMat.transformPoint(frustumPoints[i], frustumPoints[i]);\n\t\t\t\t\t\t\t\tcenter.add(frustumPoints[i]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcenter.mulScalar(1 / 8);\n\t\t\t\t\t\tlet radius = 0;\n\t\t\t\t\t\tfor(let i = 0; i < 8; i++){\n\t\t\t\t\t\t\t\tconst dist = frustumPoints[i].sub(center).length();\n\t\t\t\t\t\t\t\tif (dist > radius) {\n\t\t\t\t\t\t\t\t\t\tradius = dist;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst right = shadowCamNode.right;\n\t\t\t\t\t\tconst up = shadowCamNode.up;\n\t\t\t\t\t\tconst lightDir = shadowCamNode.forward;\n\t\t\t\t\t\tconst sizeRatio = 0.25 * light._shadowResolution / radius;\n\t\t\t\t\t\tconst x = Math.ceil(center.dot(up) * sizeRatio) / sizeRatio;\n\t\t\t\t\t\tconst y = Math.ceil(center.dot(right) * sizeRatio) / sizeRatio;\n\t\t\t\t\t\tconst scaledUp = up.mulScalar(x);\n\t\t\t\t\t\tconst scaledRight = right.mulScalar(y);\n\t\t\t\t\t\tconst dot = center.dot(lightDir);\n\t\t\t\t\t\tconst scaledDir = lightDir.mulScalar(dot);\n\t\t\t\t\t\tcenter.add2(scaledUp, scaledRight).add(scaledDir);\n\t\t\t\t\t\tshadowCamNode.setPosition(center);\n\t\t\t\t\t\tshadowCamNode.translateLocal(0, 0, 1000000);\n\t\t\t\t\t\tshadowCam.nearClip = 0.01;\n\t\t\t\t\t\tshadowCam.farClip = 2000000;\n\t\t\t\t\t\tshadowCam.orthoHeight = radius;\n\t\t\t\t\t\tthis.renderer.updateCameraFrustum(shadowCam);\n\t\t\t\t\t\tthis.shadowRenderer.cullShadowCasters(comp, light, lightRenderData.visibleCasters, shadowCam, casters);\n\t\t\t\t\t\tconst cascadeFlag = 1 << cascade;\n\t\t\t\t\t\tconst visibleCasters = lightRenderData.visibleCasters;\n\t\t\t\t\t\tconst origNumVisibleCasters = visibleCasters.length;\n\t\t\t\t\t\tlet numVisibleCasters = 0;\n\t\t\t\t\t\tfor(let i = 0; i < origNumVisibleCasters; i++){\n\t\t\t\t\t\t\t\tconst meshInstance = visibleCasters[i];\n\t\t\t\t\t\t\t\tif (meshInstance.shadowCascadeMask & cascadeFlag) {\n\t\t\t\t\t\t\t\t\t\tvisibleCasters[numVisibleCasters++] = meshInstance;\n\t\t\t\t\t\t\t\t\t\tif (numVisibleCasters === 1) {\n\t\t\t\t\t\t\t\t\t\t\t\tvisibleSceneAabb.copy(meshInstance.aabb);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tvisibleSceneAabb.add(meshInstance.aabb);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (origNumVisibleCasters !== numVisibleCasters) {\n\t\t\t\t\t\t\t\tvisibleCasters.length = numVisibleCasters;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tshadowCamView$1.copy(shadowCamNode.getWorldTransform()).invert();\n\t\t\t\t\t\tconst depthRange = getDepthRange(shadowCamView$1, visibleSceneAabb.getMin(), visibleSceneAabb.getMax());\n\t\t\t\t\t\tshadowCamNode.translateLocal(0, 0, depthRange.max + 0.1);\n\t\t\t\t\t\tshadowCam.farClip = depthRange.max - depthRange.min + 0.2;\n\t\t\t\t\t\tlightRenderData.projectionCompensation = radius;\n\t\t\t\t}\n\t\t}\n\t\tgenerateSplitDistances(light, nearDist, farDist) {\n\t\t\t\tlight._shadowCascadeDistances.fill(farDist);\n\t\t\t\tfor(let i = 1; i < light.numCascades; i++){\n\t\t\t\t\t\tconst fraction = i / light.numCascades;\n\t\t\t\t\t\tconst linearDist = nearDist + (farDist - nearDist) * fraction;\n\t\t\t\t\t\tconst logDist = nearDist * (farDist / nearDist) ** fraction;\n\t\t\t\t\t\tconst dist = math.lerp(linearDist, logDist, light.cascadeDistribution);\n\t\t\t\t\t\tlight._shadowCascadeDistances[i - 1] = dist;\n\t\t\t\t}\n\t\t}\n\t\tgetLightRenderPass(light, camera) {\n\t\t\t\tlet renderPass = null;\n\t\t\t\tif (this.shadowRenderer.needsShadowRendering(light)) {\n\t\t\t\t\t\tconst faceCount = light.numShadowFaces;\n\t\t\t\t\t\tconst shadowUpdateOverrides = light.shadowUpdateOverrides;\n\t\t\t\t\t\tlet allCascadesRendering = true;\n\t\t\t\t\t\tlet shadowCamera;\n\t\t\t\t\t\tfor(let face = 0; face < faceCount; face++){\n\t\t\t\t\t\t\t\tif (shadowUpdateOverrides?.[face] === SHADOWUPDATE_NONE) {\n\t\t\t\t\t\t\t\t\t\tallCascadesRendering = false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tshadowCamera = this.shadowRenderer.prepareFace(light, camera, face);\n\t\t\t\t\t\t}\n\t\t\t\t\t\trenderPass = new RenderPassShadowDirectional(this.device, this.shadowRenderer, light, camera, allCascadesRendering);\n\t\t\t\t\t\tthis.shadowRenderer.setupRenderPass(renderPass, shadowCamera, allCascadesRendering);\n\t\t\t\t}\n\t\t\t\treturn renderPass;\n\t\t}\n}\n\nconst tempSet$1 = new Set();\nconst shadowCamView = new Mat4();\nconst shadowCamViewProj = new Mat4();\nconst pixelOffset = new Float32Array(2);\nconst blurScissorRect = new Vec4(1, 1, 0, 0);\nconst viewportMatrix = new Mat4();\nfunction gauss(x, sigma) {\n\t\treturn Math.exp(-(x * x) / (2.0 * sigma * sigma));\n}\nfunction gaussWeights(kernelSize) {\n\t\tconst sigma = (kernelSize - 1) / (2 * 3);\n\t\tconst halfWidth = (kernelSize - 1) * 0.5;\n\t\tconst values = new Array(kernelSize);\n\t\tlet sum = 0.0;\n\t\tfor(let i = 0; i < kernelSize; ++i){\n\t\t\t\tvalues[i] = gauss(i - halfWidth, sigma);\n\t\t\t\tsum += values[i];\n\t\t}\n\t\tfor(let i = 0; i < kernelSize; ++i){\n\t\t\t\tvalues[i] /= sum;\n\t\t}\n\t\treturn values;\n}\nclass ShadowRenderer {\n\t\tconstructor(renderer, lightTextureAtlas){\n\t\t\t\tthis.shadowPassCache = [];\n\t\t\t\tthis.device = renderer.device;\n\t\t\t\tthis.renderer = renderer;\n\t\t\t\tthis.lightTextureAtlas = lightTextureAtlas;\n\t\t\t\tconst scope = this.device.scope;\n\t\t\t\tthis.sourceId = scope.resolve('source');\n\t\t\t\tthis.pixelOffsetId = scope.resolve('pixelOffset');\n\t\t\t\tthis.weightId = scope.resolve('weight[0]');\n\t\t\t\tthis.blurVsmShader = [\n\t\t\t\t\t\t{},\n\t\t\t\t\t\t{}\n\t\t\t\t];\n\t\t\t\tthis.blurVsmWeights = {};\n\t\t\t\tthis.shadowMapLightRadiusId = scope.resolve('light_radius');\n\t\t\t\tthis.viewUniformFormat = null;\n\t\t\t\tthis.viewBindGroupFormat = null;\n\t\t\t\tthis.blendStateWrite = new BlendState();\n\t\t\t\tthis.blendStateNoWrite = new BlendState();\n\t\t\t\tthis.blendStateNoWrite.setColorWrite(false, false, false, false);\n\t\t}\n\t\tstatic createShadowCamera(shadowType, type, face) {\n\t\t\t\tconst shadowCam = LightCamera.create('ShadowCamera', type, face);\n\t\t\t\tconst shadowInfo = shadowTypeInfo.get(shadowType);\n\t\t\t\tconst isVsm = shadowInfo?.vsm ?? false;\n\t\t\t\tconst isPcf = shadowInfo?.pcf ?? false;\n\t\t\t\tif (isVsm) {\n\t\t\t\t\t\tshadowCam.clearColor = new Color(0, 0, 0, 0);\n\t\t\t\t} else {\n\t\t\t\t\t\tshadowCam.clearColor = new Color(1, 1, 1, 1);\n\t\t\t\t}\n\t\t\t\tshadowCam.clearDepthBuffer = true;\n\t\t\t\tshadowCam.clearStencilBuffer = false;\n\t\t\t\tshadowCam.clearColorBuffer = !isPcf;\n\t\t\t\treturn shadowCam;\n\t\t}\n\t\t_cullShadowCastersInternal(meshInstances, visible, camera) {\n\t\t\t\tconst numInstances = meshInstances.length;\n\t\t\t\tfor(let i = 0; i < numInstances; i++){\n\t\t\t\t\t\tconst meshInstance = meshInstances[i];\n\t\t\t\t\t\tif (meshInstance.castShadow) {\n\t\t\t\t\t\t\t\tif (!meshInstance.cull || meshInstance._isVisible(camera)) {\n\t\t\t\t\t\t\t\t\t\tmeshInstance.visibleThisFrame = true;\n\t\t\t\t\t\t\t\t\t\tvisible.push(meshInstance);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tcullShadowCasters(comp, light, visible, camera, casters) {\n\t\t\t\tthis.renderer.scene?.fire(EVENT_PRECULL, camera);\n\t\t\t\tvisible.length = 0;\n\t\t\t\tif (casters) {\n\t\t\t\t\t\tthis._cullShadowCastersInternal(casters, visible, camera);\n\t\t\t\t} else {\n\t\t\t\t\t\tconst layers = comp.layerList;\n\t\t\t\t\t\tconst len = layers.length;\n\t\t\t\t\t\tfor(let i = 0; i < len; i++){\n\t\t\t\t\t\t\t\tconst layer = layers[i];\n\t\t\t\t\t\t\t\tif (layer._lightsSet.has(light)) {\n\t\t\t\t\t\t\t\t\t\tif (!tempSet$1.has(layer)) {\n\t\t\t\t\t\t\t\t\t\t\t\ttempSet$1.add(layer);\n\t\t\t\t\t\t\t\t\t\t\t\tthis._cullShadowCastersInternal(layer.shadowCasters, visible, camera);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttempSet$1.clear();\n\t\t\t\t}\n\t\t\t\tvisible.sort(this.sortCompareShader);\n\t\t\t\tthis.renderer.scene?.fire(EVENT_POSTCULL, camera);\n\t\t}\n\t\tsortCompareShader(drawCallA, drawCallB) {\n\t\t\t\tconst keyA = drawCallA._sortKeyShadow;\n\t\t\t\tconst keyB = drawCallB._sortKeyShadow;\n\t\t\t\tif (keyA === keyB) {\n\t\t\t\t\t\treturn drawCallB.mesh.id - drawCallA.mesh.id;\n\t\t\t\t}\n\t\t\t\treturn keyB - keyA;\n\t\t}\n\t\tsetupRenderState(device, light) {\n\t\t\t\tconst isClustered = this.renderer.scene.clusteredLightingEnabled;\n\t\t\t\tconst useShadowSampler = isClustered ? light._isPcf : light._isPcf && light._type !== LIGHTTYPE_OMNI;\n\t\t\t\tdevice.setBlendState(useShadowSampler ? this.blendStateNoWrite : this.blendStateWrite);\n\t\t\t\tdevice.setDepthState(light.shadowDepthState);\n\t\t\t\tdevice.setStencilState(null, null);\n\t\t}\n\t\tdispatchUniforms(light, shadowCam, lightRenderData, face) {\n\t\t\t\tconst shadowCamNode = shadowCam._node;\n\t\t\t\tif (light._type !== LIGHTTYPE_DIRECTIONAL) {\n\t\t\t\t\t\tthis.renderer.dispatchViewPos(shadowCamNode.getPosition());\n\t\t\t\t\t\tthis.shadowMapLightRadiusId.setValue(light.attenuationEnd);\n\t\t\t\t}\n\t\t\t\tshadowCamView.setTRS(shadowCamNode.getPosition(), shadowCamNode.getRotation(), Vec3.ONE).invert();\n\t\t\t\tshadowCamViewProj.mul2(shadowCam.projectionMatrix, shadowCamView);\n\t\t\t\tconst rectViewport = lightRenderData.shadowViewport;\n\t\t\t\tshadowCam.rect = rectViewport;\n\t\t\t\tshadowCam.scissorRect = lightRenderData.shadowScissor;\n\t\t\t\tviewportMatrix.setViewport(rectViewport.x, rectViewport.y, rectViewport.z, rectViewport.w);\n\t\t\t\tlightRenderData.shadowMatrix.mul2(viewportMatrix, shadowCamViewProj);\n\t\t\t\tif (light._type === LIGHTTYPE_DIRECTIONAL) {\n\t\t\t\t\t\tlight._shadowMatrixPalette.set(lightRenderData.shadowMatrix.data, face * 16);\n\t\t\t\t}\n\t\t}\n\t\tgetShadowPass(light) {\n\t\t\t\tconst lightType = light._type;\n\t\t\t\tconst shadowType = light._shadowType;\n\t\t\t\tlet shadowPassInfo = this.shadowPassCache[lightType]?.[shadowType];\n\t\t\t\tif (!shadowPassInfo) {\n\t\t\t\t\t\tconst shadowPassName = `ShadowPass_${lightType}_${shadowType}`;\n\t\t\t\t\t\tshadowPassInfo = ShaderPass.get(this.device).allocate(shadowPassName, {\n\t\t\t\t\t\t\t\tisShadow: true,\n\t\t\t\t\t\t\t\tlightType: lightType,\n\t\t\t\t\t\t\t\tshadowType: shadowType\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (!this.shadowPassCache[lightType]) {\n\t\t\t\t\t\t\t\tthis.shadowPassCache[lightType] = [];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.shadowPassCache[lightType][shadowType] = shadowPassInfo;\n\t\t\t\t}\n\t\t\t\treturn shadowPassInfo.index;\n\t\t}\n\t\tsubmitCasters(visibleCasters, light, camera) {\n\t\t\t\tconst device = this.device;\n\t\t\t\tconst renderer = this.renderer;\n\t\t\t\tconst scene = renderer.scene;\n\t\t\t\tconst passFlags = 1 << SHADER_SHADOW;\n\t\t\t\tconst shadowPass = this.getShadowPass(light);\n\t\t\t\tconst cameraShaderParams = camera.shaderParams;\n\t\t\t\tconst flipFactor = camera.renderTarget.flipY ? -1 : 1;\n\t\t\t\tconst count = visibleCasters.length;\n\t\t\t\tfor(let i = 0; i < count; i++){\n\t\t\t\t\t\tconst meshInstance = visibleCasters[i];\n\t\t\t\t\t\tconst mesh = meshInstance.mesh;\n\t\t\t\t\t\tconst instancingData = meshInstance.instancingData;\n\t\t\t\t\t\tif (instancingData && instancingData.count <= 0) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmeshInstance.ensureMaterial(device);\n\t\t\t\t\t\tconst material = meshInstance.material;\n\t\t\t\t\t\trenderer.setBaseConstants(device, material);\n\t\t\t\t\t\trenderer.setSkinning(device, meshInstance);\n\t\t\t\t\t\tif (material.dirty) {\n\t\t\t\t\t\t\t\tmaterial.updateUniforms(device, scene);\n\t\t\t\t\t\t\t\tmaterial.dirty = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\trenderer.setupCullMode(true, flipFactor, meshInstance);\n\t\t\t\t\t\tmaterial.setParameters(device);\n\t\t\t\t\t\tmeshInstance.setParameters(device, passFlags);\n\t\t\t\t\t\tconst shaderInstance = meshInstance.getShaderInstance(shadowPass, 0, scene, cameraShaderParams, this.viewUniformFormat, this.viewBindGroupFormat);\n\t\t\t\t\t\tconst shadowShader = shaderInstance.shader;\n\t\t\t\t\t\tif (shadowShader.failed) continue;\n\t\t\t\t\t\tmeshInstance._sortKeyShadow = shadowShader.id;\n\t\t\t\t\t\tdevice.setShader(shadowShader);\n\t\t\t\t\t\trenderer.setVertexBuffers(device, mesh);\n\t\t\t\t\t\trenderer.setMorphing(device, meshInstance.morphInstance);\n\t\t\t\t\t\tif (instancingData) {\n\t\t\t\t\t\t\t\tdevice.setVertexBuffer(instancingData.vertexBuffer);\n\t\t\t\t\t\t}\n\t\t\t\t\t\trenderer.setMeshInstanceMatrices(meshInstance);\n\t\t\t\t\t\trenderer.setupMeshUniformBuffers(shaderInstance);\n\t\t\t\t\t\tconst style = meshInstance.renderStyle;\n\t\t\t\t\t\tconst indirectData = meshInstance.getDrawCommands(camera);\n\t\t\t\t\t\tdevice.draw(mesh.primitive[style], mesh.indexBuffer[style], instancingData?.count, indirectData);\n\t\t\t\t\t\trenderer._shadowDrawCalls++;\n\t\t\t\t\t\tif (instancingData) {\n\t\t\t\t\t\t\t\trenderer._instancedDrawCalls++;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tneedsShadowRendering(light) {\n\t\t\t\tconst needs = light.enabled && light.castShadows && light.shadowUpdateMode !== SHADOWUPDATE_NONE && light.visibleThisFrame;\n\t\t\t\tif (light.shadowUpdateMode === SHADOWUPDATE_THISFRAME) {\n\t\t\t\t\t\tlight.shadowUpdateMode = SHADOWUPDATE_NONE;\n\t\t\t\t}\n\t\t\t\tif (needs) {\n\t\t\t\t\t\tthis.renderer._shadowMapUpdates += light.numShadowFaces;\n\t\t\t\t}\n\t\t\t\treturn needs;\n\t\t}\n\t\tgetLightRenderData(light, camera, face) {\n\t\t\t\treturn light.getRenderData(light._type === LIGHTTYPE_DIRECTIONAL ? camera : null, face);\n\t\t}\n\t\tsetupRenderPass(renderPass, shadowCamera, clearRenderTarget) {\n\t\t\t\tconst rt = shadowCamera.renderTarget;\n\t\t\t\trenderPass.init(rt);\n\t\t\t\trenderPass.depthStencilOps.clearDepthValue = 1;\n\t\t\t\trenderPass.depthStencilOps.clearDepth = clearRenderTarget;\n\t\t\t\tif (rt.depthBuffer) {\n\t\t\t\t\t\trenderPass.depthStencilOps.storeDepth = true;\n\t\t\t\t} else {\n\t\t\t\t\t\trenderPass.colorOps.clearValue.copy(shadowCamera.clearColor);\n\t\t\t\t\t\trenderPass.colorOps.clear = clearRenderTarget;\n\t\t\t\t\t\trenderPass.depthStencilOps.storeDepth = false;\n\t\t\t\t}\n\t\t\t\trenderPass.requiresCubemaps = false;\n\t\t}\n\t\tprepareFace(light, camera, face) {\n\t\t\t\tconst type = light._type;\n\t\t\t\tconst lightRenderData = this.getLightRenderData(light, camera, face);\n\t\t\t\tconst shadowCam = lightRenderData.shadowCamera;\n\t\t\t\tconst renderTargetIndex = type === LIGHTTYPE_DIRECTIONAL ? 0 : face;\n\t\t\t\tshadowCam.renderTarget = light._shadowMap.renderTargets[renderTargetIndex];\n\t\t\t\treturn shadowCam;\n\t\t}\n\t\trenderFace(light, camera, face, clear, insideRenderPass = true) {\n\t\t\t\tconst device = this.device;\n\t\t\t\tconst lightRenderData = this.getLightRenderData(light, camera, face);\n\t\t\t\tconst shadowCam = lightRenderData.shadowCamera;\n\t\t\t\tthis.dispatchUniforms(light, shadowCam, lightRenderData, face);\n\t\t\t\tconst rt = shadowCam.renderTarget;\n\t\t\t\tconst renderer = this.renderer;\n\t\t\t\trenderer.setCameraUniforms(shadowCam, rt);\n\t\t\t\tif (device.supportsUniformBuffers) {\n\t\t\t\t\t\trenderer.setupViewUniformBuffers(lightRenderData.viewBindGroups, this.viewUniformFormat, this.viewBindGroupFormat, null);\n\t\t\t\t}\n\t\t\t\tif (insideRenderPass) {\n\t\t\t\t\t\trenderer.setupViewport(shadowCam, rt);\n\t\t\t\t\t\tif (clear) {\n\t\t\t\t\t\t\t\trenderer.clear(shadowCam);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\trenderer.clearView(shadowCam, rt, true, false);\n\t\t\t\t}\n\t\t\t\tthis.setupRenderState(device, light);\n\t\t\t\tthis.submitCasters(lightRenderData.visibleCasters, light, shadowCam);\n\t\t}\n\t\trender(light, camera, insideRenderPass = true) {\n\t\t\t\tif (this.needsShadowRendering(light)) {\n\t\t\t\t\t\tconst faceCount = light.numShadowFaces;\n\t\t\t\t\t\tfor(let face = 0; face < faceCount; face++){\n\t\t\t\t\t\t\t\tthis.prepareFace(light, camera, face);\n\t\t\t\t\t\t\t\tthis.renderFace(light, camera, face, true, insideRenderPass);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.renderVsm(light, camera);\n\t\t\t\t}\n\t\t}\n\t\trenderVsm(light, camera) {\n\t\t\t\tif (light._isVsm && light._vsmBlurSize > 1) {\n\t\t\t\t\t\tconst isClustered = this.renderer.scene.clusteredLightingEnabled;\n\t\t\t\t\t\tif (!isClustered || light._type === LIGHTTYPE_DIRECTIONAL) {\n\t\t\t\t\t\t\t\tthis.applyVsmBlur(light, camera);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tgetVsmBlurShader(blurMode, filterSize) {\n\t\t\t\tconst cache = this.blurVsmShader;\n\t\t\t\tlet blurShader = cache[blurMode][filterSize];\n\t\t\t\tif (!blurShader) {\n\t\t\t\t\t\tthis.blurVsmWeights[filterSize] = gaussWeights(filterSize);\n\t\t\t\t\t\tconst defines = new Map();\n\t\t\t\t\t\tdefines.set('{SAMPLES}', filterSize);\n\t\t\t\t\t\tif (blurMode === 1) defines.set('GAUSS', '');\n\t\t\t\t\t\tblurShader = ShaderUtils.createShader(this.device, {\n\t\t\t\t\t\t\t\tuniqueName: `blurVsm${blurMode}${filterSize}`,\n\t\t\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\t\t\tvertex_position: SEMANTIC_POSITION\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tvertexChunk: 'fullscreenQuadVS',\n\t\t\t\t\t\t\t\tfragmentChunk: 'blurVSMPS',\n\t\t\t\t\t\t\t\tfragmentDefines: defines\n\t\t\t\t\t\t});\n\t\t\t\t\t\tcache[blurMode][filterSize] = blurShader;\n\t\t\t\t}\n\t\t\t\treturn blurShader;\n\t\t}\n\t\tapplyVsmBlur(light, camera) {\n\t\t\t\tconst device = this.device;\n\t\t\t\tdevice.setBlendState(BlendState.NOBLEND);\n\t\t\t\tconst lightRenderData = light.getRenderData(light._type === LIGHTTYPE_DIRECTIONAL ? camera : null, 0);\n\t\t\t\tconst shadowCam = lightRenderData.shadowCamera;\n\t\t\t\tconst origShadowMap = shadowCam.renderTarget;\n\t\t\t\tconst tempShadowMap = this.renderer.shadowMapCache.get(device, light);\n\t\t\t\tconst tempRt = tempShadowMap.renderTargets[0];\n\t\t\t\tconst blurMode = light.vsmBlurMode;\n\t\t\t\tconst filterSize = light._vsmBlurSize;\n\t\t\t\tconst blurShader = this.getVsmBlurShader(blurMode, filterSize);\n\t\t\t\tblurScissorRect.z = light._shadowResolution - 2;\n\t\t\t\tblurScissorRect.w = blurScissorRect.z;\n\t\t\t\tthis.sourceId.setValue(origShadowMap.colorBuffer);\n\t\t\t\tpixelOffset[0] = 1 / light._shadowResolution;\n\t\t\t\tpixelOffset[1] = 0;\n\t\t\t\tthis.pixelOffsetId.setValue(pixelOffset);\n\t\t\t\tif (blurMode === BLUR_GAUSSIAN) this.weightId.setValue(this.blurVsmWeights[filterSize]);\n\t\t\t\tdrawQuadWithShader(device, tempRt, blurShader, null, blurScissorRect);\n\t\t\t\tthis.sourceId.setValue(tempRt.colorBuffer);\n\t\t\t\tpixelOffset[1] = pixelOffset[0];\n\t\t\t\tpixelOffset[0] = 0;\n\t\t\t\tthis.pixelOffsetId.setValue(pixelOffset);\n\t\t\t\tdrawQuadWithShader(device, origShadowMap, blurShader, null, blurScissorRect);\n\t\t\t\tthis.renderer.shadowMapCache.add(light, tempShadowMap);\n\t\t}\n\t\tinitViewBindGroupFormat() {\n\t\t\t\tif (this.device.supportsUniformBuffers && !this.viewUniformFormat) {\n\t\t\t\t\t\tthis.viewUniformFormat = new UniformBufferFormat(this.device, [\n\t\t\t\t\t\t\t\tnew UniformFormat('matrix_viewProjection', UNIFORMTYPE_MAT4)\n\t\t\t\t\t\t]);\n\t\t\t\t\t\tthis.viewBindGroupFormat = new BindGroupFormat(this.device, [\n\t\t\t\t\t\t\t\tnew BindUniformBufferFormat(UNIFORM_BUFFER_DEFAULT_SLOT_NAME, SHADERSTAGE_VERTEX | SHADERSTAGE_FRAGMENT)\n\t\t\t\t\t\t]);\n\t\t\t\t}\n\t\t}\n\t\tframeUpdate() {\n\t\t\t\tthis.initViewBindGroupFormat();\n\t\t}\n}\n\nconst tempClusterArray = [];\nclass WorldClustersAllocator {\n\t\tconstructor(graphicsDevice){\n\t\t\t\tthis._empty = null;\n\t\t\t\tthis._allocated = [];\n\t\t\t\tthis._clusters = new Map();\n\t\t\t\tthis.device = graphicsDevice;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tif (this._empty) {\n\t\t\t\t\t\tthis._empty.destroy();\n\t\t\t\t\t\tthis._empty = null;\n\t\t\t\t}\n\t\t\t\tthis._allocated.forEach((cluster)=>{\n\t\t\t\t\t\tcluster.destroy();\n\t\t\t\t});\n\t\t\t\tthis._allocated.length = 0;\n\t\t}\n\t\tget count() {\n\t\t\t\treturn this._allocated.length;\n\t\t}\n\t\tget empty() {\n\t\t\t\tif (!this._empty) {\n\t\t\t\t\t\tconst empty = new WorldClusters(this.device);\n\t\t\t\t\t\tempty.name = 'ClusterEmpty';\n\t\t\t\t\t\tempty.update([]);\n\t\t\t\t\t\tthis._empty = empty;\n\t\t\t\t}\n\t\t\t\treturn this._empty;\n\t\t}\n\t\tassign(renderPasses) {\n\t\t\t\ttempClusterArray.push(...this._allocated);\n\t\t\t\tthis._allocated.length = 0;\n\t\t\t\tthis._clusters.clear();\n\t\t\t\tconst passCount = renderPasses.length;\n\t\t\t\tfor(let p = 0; p < passCount; p++){\n\t\t\t\t\t\tconst renderPass = renderPasses[p];\n\t\t\t\t\t\tconst renderActions = renderPass.renderActions;\n\t\t\t\t\t\tif (renderActions) {\n\t\t\t\t\t\t\t\tconst count = renderActions.length;\n\t\t\t\t\t\t\t\tfor(let i = 0; i < count; i++){\n\t\t\t\t\t\t\t\t\t\tconst ra = renderActions[i];\n\t\t\t\t\t\t\t\t\t\tra.lightClusters = null;\n\t\t\t\t\t\t\t\t\t\tconst layer = ra.layer;\n\t\t\t\t\t\t\t\t\t\tif (layer.hasClusteredLights && layer.meshInstances.length) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst hash = layer.getLightIdHash();\n\t\t\t\t\t\t\t\t\t\t\t\tconst existingRenderAction = this._clusters.get(hash);\n\t\t\t\t\t\t\t\t\t\t\t\tlet clusters = existingRenderAction?.lightClusters;\n\t\t\t\t\t\t\t\t\t\t\t\tif (!clusters) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclusters = tempClusterArray.pop() ?? new WorldClusters(this.device);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis._allocated.push(clusters);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis._clusters.set(hash, ra);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tra.lightClusters = clusters;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (!ra.lightClusters) {\n\t\t\t\t\t\t\t\t\t\t\t\tra.lightClusters = this.empty;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ttempClusterArray.forEach((item)=>item.destroy());\n\t\t\t\ttempClusterArray.length = 0;\n\t\t}\n\t\tupdate(renderPasses, lighting) {\n\t\t\t\tthis.assign(renderPasses);\n\t\t\t\tthis._clusters.forEach((renderAction)=>{\n\t\t\t\t\t\tconst layer = renderAction.layer;\n\t\t\t\t\t\tconst cluster = renderAction.lightClusters;\n\t\t\t\t\t\tcluster.update(layer.clusteredLightsSet, lighting);\n\t\t\t\t});\n\t\t}\n}\n\nconst _viewport$2 = new Vec4();\nconst _invViewProjMatrices = [];\nclass RenderPassCookieRenderer extends RenderPass {\n\t\tconstructor(device, cubeSlotsOffsets){\n\t\t\t\tsuper(device), this._quadRenderer2D = null, this._quadRendererCube = null, this._filteredLights = [], this._forceCopy = false, this._evtDeviceRestored = null;\n\t\t\t\tthis._cubeSlotsOffsets = cubeSlotsOffsets;\n\t\t\t\tthis.requiresCubemaps = false;\n\t\t\t\tthis.blitTextureId = device.scope.resolve('blitTexture');\n\t\t\t\tthis.invViewProjId = device.scope.resolve('invViewProj');\n\t\t\t\tthis._evtDeviceRestored = device.on('devicerestored', this.onDeviceRestored, this);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis._quadRenderer2D?.destroy();\n\t\t\t\tthis._quadRenderer2D = null;\n\t\t\t\tthis._quadRendererCube?.destroy();\n\t\t\t\tthis._quadRendererCube = null;\n\t\t\t\tthis._evtDeviceRestored?.off();\n\t\t\t\tthis._evtDeviceRestored = null;\n\t\t}\n\t\tstatic create(renderTarget, cubeSlotsOffsets) {\n\t\t\t\tconst renderPass = new RenderPassCookieRenderer(renderTarget.device, cubeSlotsOffsets);\n\t\t\t\trenderPass.init(renderTarget);\n\t\t\t\trenderPass.colorOps.clear = false;\n\t\t\t\trenderPass.depthStencilOps.clearDepth = false;\n\t\t\t\treturn renderPass;\n\t\t}\n\t\tonDeviceRestored() {\n\t\t\t\tthis._forceCopy = true;\n\t\t}\n\t\tupdate(lights) {\n\t\t\t\tconst filteredLights = this._filteredLights;\n\t\t\t\tthis.filter(lights, filteredLights);\n\t\t\t\tthis.executeEnabled = filteredLights.length > 0;\n\t\t}\n\t\tfilter(lights, filteredLights) {\n\t\t\t\tfor(let i = 0; i < lights.length; i++){\n\t\t\t\t\t\tconst light = lights[i];\n\t\t\t\t\t\tif (light._type === LIGHTTYPE_DIRECTIONAL) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!light.atlasViewportAllocated) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!light.atlasSlotUpdated && !this._forceCopy) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (light.enabled && light.cookie && light.visibleThisFrame) {\n\t\t\t\t\t\t\t\tfilteredLights.push(light);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._forceCopy = false;\n\t\t}\n\t\tinitInvViewProjMatrices() {\n\t\t\t\tif (!_invViewProjMatrices.length) {\n\t\t\t\t\t\tfor(let face = 0; face < 6; face++){\n\t\t\t\t\t\t\t\tconst camera = LightCamera.create(null, LIGHTTYPE_OMNI, face);\n\t\t\t\t\t\t\t\tconst projMat = camera.projectionMatrix;\n\t\t\t\t\t\t\t\tconst viewMat = camera.node.getLocalTransform().clone().invert();\n\t\t\t\t\t\t\t\t_invViewProjMatrices[face] = new Mat4().mul2(projMat, viewMat).invert();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget quadRenderer2D() {\n\t\t\t\tif (!this._quadRenderer2D) {\n\t\t\t\t\t\tconst shader = ShaderUtils.createShader(this.device, {\n\t\t\t\t\t\t\t\tuniqueName: 'cookieRenderer2d',\n\t\t\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\t\t\tvertex_position: SEMANTIC_POSITION\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tvertexChunk: 'cookieBlitVS',\n\t\t\t\t\t\t\t\tfragmentChunk: 'cookieBlit2DPS'\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis._quadRenderer2D = new QuadRender(shader);\n\t\t\t\t}\n\t\t\t\treturn this._quadRenderer2D;\n\t\t}\n\t\tget quadRendererCube() {\n\t\t\t\tif (!this._quadRendererCube) {\n\t\t\t\t\t\tconst shader = ShaderUtils.createShader(this.device, {\n\t\t\t\t\t\t\t\tuniqueName: 'cookieRendererCube',\n\t\t\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\t\t\tvertex_position: SEMANTIC_POSITION\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tvertexChunk: 'cookieBlitVS',\n\t\t\t\t\t\t\t\tfragmentChunk: 'cookieBlitCubePS'\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis._quadRendererCube = new QuadRender(shader);\n\t\t\t\t}\n\t\t\t\treturn this._quadRendererCube;\n\t\t}\n\t\texecute() {\n\t\t\t\tconst device = this.device;\n\t\t\t\tdevice.setBlendState(BlendState.NOBLEND);\n\t\t\t\tdevice.setCullMode(CULLFACE_NONE);\n\t\t\t\tdevice.setDepthState(DepthState.NODEPTH);\n\t\t\t\tdevice.setStencilState();\n\t\t\t\tconst renderTargetWidth = this.renderTarget.colorBuffer.width;\n\t\t\t\tconst cubeSlotsOffsets = this._cubeSlotsOffsets;\n\t\t\t\tconst filteredLights = this._filteredLights;\n\t\t\t\tfor(let i = 0; i < filteredLights.length; i++){\n\t\t\t\t\t\tconst light = filteredLights[i];\n\t\t\t\t\t\tconst faceCount = light.numShadowFaces;\n\t\t\t\t\t\tconst quad = faceCount > 1 ? this.quadRendererCube : this.quadRenderer2D;\n\t\t\t\t\t\tif (faceCount > 1) {\n\t\t\t\t\t\t\t\tthis.initInvViewProjMatrices();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.blitTextureId.setValue(light.cookie);\n\t\t\t\t\t\tfor(let face = 0; face < faceCount; face++){\n\t\t\t\t\t\t\t\t_viewport$2.copy(light.atlasViewport);\n\t\t\t\t\t\t\t\tif (faceCount > 1) {\n\t\t\t\t\t\t\t\t\t\tconst smallSize = _viewport$2.z / 3;\n\t\t\t\t\t\t\t\t\t\tconst offset = cubeSlotsOffsets[face];\n\t\t\t\t\t\t\t\t\t\t_viewport$2.x += smallSize * offset.x;\n\t\t\t\t\t\t\t\t\t\t_viewport$2.y += smallSize * offset.y;\n\t\t\t\t\t\t\t\t\t\t_viewport$2.z = smallSize;\n\t\t\t\t\t\t\t\t\t\t_viewport$2.w = smallSize;\n\t\t\t\t\t\t\t\t\t\tthis.invViewProjId.setValue(_invViewProjMatrices[face].data);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t_viewport$2.mulScalar(renderTargetWidth);\n\t\t\t\t\t\t\t\tquad.render(_viewport$2);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfilteredLights.length = 0;\n\t\t}\n}\n\nclass RenderPassShadowLocalClustered extends RenderPass {\n\t\tconstructor(device, shadowRenderer, shadowRendererLocal){\n\t\t\t\tsuper(device);\n\t\t\t\tthis.requiresCubemaps = false;\n\t\t\t\tthis.shadowRenderer = shadowRenderer;\n\t\t\t\tthis.shadowRendererLocal = shadowRendererLocal;\n\t\t}\n\t\tupdate(localLights) {\n\t\t\t\tconst shadowLights = this.shadowRendererLocal.shadowLights;\n\t\t\t\tconst shadowCamera = this.shadowRendererLocal.prepareLights(shadowLights, localLights);\n\t\t\t\tconst count = shadowLights.length;\n\t\t\t\tthis.enabled = count > 0;\n\t\t\t\tif (count) {\n\t\t\t\t\t\tthis.shadowRenderer.setupRenderPass(this, shadowCamera, false);\n\t\t\t\t}\n\t\t}\n\t\texecute() {\n\t\t\t\tconst shadowLights = this.shadowRendererLocal.shadowLights;\n\t\t\t\tconst count = shadowLights.length;\n\t\t\t\tfor(let i = 0; i < count; i++){\n\t\t\t\t\t\tconst light = shadowLights[i];\n\t\t\t\t\t\tfor(let face = 0; face < light.numShadowFaces; face++){\n\t\t\t\t\t\t\t\tthis.shadowRenderer.renderFace(light, null, face, true);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tshadowLights.length = 0;\n\t\t}\n}\n\nclass RenderPassUpdateClustered extends RenderPass {\n\t\tconstructor(device, renderer, shadowRenderer, shadowRendererLocal, lightTextureAtlas){\n\t\t\t\tsuper(device);\n\t\t\t\tthis.renderer = renderer;\n\t\t\t\tthis.frameGraph = null;\n\t\t\t\tthis.cookiesRenderPass = RenderPassCookieRenderer.create(lightTextureAtlas.cookieRenderTarget, lightTextureAtlas.cubeSlotsOffsets);\n\t\t\t\tthis.beforePasses.push(this.cookiesRenderPass);\n\t\t\t\tthis.shadowRenderPass = new RenderPassShadowLocalClustered(device, shadowRenderer, shadowRendererLocal);\n\t\t\t\tthis.beforePasses.push(this.shadowRenderPass);\n\t\t}\n\t\tupdate(frameGraph, shadowsEnabled, cookiesEnabled, lights, localLights) {\n\t\t\t\tthis.frameGraph = frameGraph;\n\t\t\t\tthis.cookiesRenderPass.enabled = cookiesEnabled;\n\t\t\t\tif (cookiesEnabled) {\n\t\t\t\t\t\tthis.cookiesRenderPass.update(lights);\n\t\t\t\t}\n\t\t\t\tthis.shadowRenderPass.enabled = shadowsEnabled;\n\t\t\t\tif (shadowsEnabled) {\n\t\t\t\t\t\tthis.shadowRenderPass.update(localLights);\n\t\t\t\t}\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.cookiesRenderPass.destroy();\n\t\t\t\tthis.cookiesRenderPass = null;\n\t\t}\n\t\texecute() {\n\t\t\t\tconst { renderer } = this;\n\t\t\t\tconst { scene } = renderer;\n\t\t\t\trenderer.worldClustersAllocator.update(this.frameGraph.renderPasses, scene.lighting);\n\t\t}\n}\n\nlet _skinUpdateIndex = 0;\nconst viewProjMat = new Mat4();\nconst viewInvMat = new Mat4();\nconst viewMat = new Mat4();\nconst viewMat3 = new Mat3();\nconst tempSphere$1 = new BoundingSphere();\nconst _flipYMat = new Mat4().setScale(1, -1, 1);\nconst _tempLightSet = new Set();\nconst _tempLayerSet = new Set();\nconst _dynamicBindGroup = new DynamicBindGroup();\nconst _fixProjRangeMat = new Mat4().set([\n\t\t1,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t1,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0.5,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0.5,\n\t\t1\n]);\nconst _haltonSequence = [\n\t\tnew Vec2(0.5, 0.333333),\n\t\tnew Vec2(0.25, 0.666667),\n\t\tnew Vec2(0.75, 0.111111),\n\t\tnew Vec2(0.125, 0.444444),\n\t\tnew Vec2(0.625, 0.777778),\n\t\tnew Vec2(0.375, 0.222222),\n\t\tnew Vec2(0.875, 0.555556),\n\t\tnew Vec2(0.0625, 0.888889),\n\t\tnew Vec2(0.5625, 0.037037),\n\t\tnew Vec2(0.3125, 0.370370),\n\t\tnew Vec2(0.8125, 0.703704),\n\t\tnew Vec2(0.1875, 0.148148),\n\t\tnew Vec2(0.6875, 0.481481),\n\t\tnew Vec2(0.4375, 0.814815),\n\t\tnew Vec2(0.9375, 0.259259),\n\t\tnew Vec2(0.03125, 0.592593)\n];\nconst _tempProjMat0 = new Mat4();\nconst _tempProjMat1 = new Mat4();\nconst _tempProjMat2 = new Mat4();\nconst _tempProjMat3 = new Mat4();\nconst _tempProjMat4 = new Mat4();\nconst _tempProjMat5 = new Mat4();\nconst _tempSet = new Set();\nconst _tempMeshInstances = [];\nconst _tempMeshInstancesSkinned = [];\nclass Renderer {\n\t\tconstructor(graphicsDevice, scene){\n\t\t\t\tthis.clustersDebugRendered = false;\n\t\t\t\tthis.processingMeshInstances = new Set();\n\t\t\t\tthis.lights = [];\n\t\t\t\tthis.localLights = [];\n\t\t\t\tthis.cameraDirShadowLights = new Map();\n\t\t\t\tthis.dirLightShadows = new Map();\n\t\t\t\tthis.blueNoise = new BlueNoise(123);\n\t\t\t\tthis.gsplatDirector = null;\n\t\t\t\tthis.device = graphicsDevice;\n\t\t\t\tthis.scene = scene;\n\t\t\t\tthis.worldClustersAllocator = new WorldClustersAllocator(graphicsDevice);\n\t\t\t\tthis.lightTextureAtlas = new LightTextureAtlas(graphicsDevice);\n\t\t\t\tthis.shadowMapCache = new ShadowMapCache();\n\t\t\t\tthis.shadowRenderer = new ShadowRenderer(this, this.lightTextureAtlas);\n\t\t\t\tthis._shadowRendererLocal = new ShadowRendererLocal(this, this.shadowRenderer);\n\t\t\t\tthis._shadowRendererDirectional = new ShadowRendererDirectional(this, this.shadowRenderer);\n\t\t\t\tif (this.scene.clusteredLightingEnabled) {\n\t\t\t\t\t\tthis._renderPassUpdateClustered = new RenderPassUpdateClustered(this.device, this, this.shadowRenderer, this._shadowRendererLocal, this.lightTextureAtlas);\n\t\t\t\t}\n\t\t\t\tthis.viewUniformFormat = null;\n\t\t\t\tthis.viewBindGroupFormat = null;\n\t\t\t\tthis._skinTime = 0;\n\t\t\t\tthis._morphTime = 0;\n\t\t\t\tthis._cullTime = 0;\n\t\t\t\tthis._shadowMapTime = 0;\n\t\t\t\tthis._lightClustersTime = 0;\n\t\t\t\tthis._layerCompositionUpdateTime = 0;\n\t\t\t\tthis._shadowDrawCalls = 0;\n\t\t\t\tthis._skinDrawCalls = 0;\n\t\t\t\tthis._instancedDrawCalls = 0;\n\t\t\t\tthis._shadowMapUpdates = 0;\n\t\t\t\tthis._numDrawCallsCulled = 0;\n\t\t\t\tthis._camerasRendered = 0;\n\t\t\t\tthis._lightClusters = 0;\n\t\t\t\tthis._gsplatCount = 0;\n\t\t\t\tconst scope = graphicsDevice.scope;\n\t\t\t\tthis.boneTextureId = scope.resolve('texture_poseMap');\n\t\t\t\tthis.modelMatrixId = scope.resolve('matrix_model');\n\t\t\t\tthis.normalMatrixId = scope.resolve('matrix_normal');\n\t\t\t\tthis.viewInvId = scope.resolve('matrix_viewInverse');\n\t\t\t\tthis.viewPos = new Float32Array(3);\n\t\t\t\tthis.viewPosId = scope.resolve('view_position');\n\t\t\t\tthis.projId = scope.resolve('matrix_projection');\n\t\t\t\tthis.projSkyboxId = scope.resolve('matrix_projectionSkybox');\n\t\t\t\tthis.viewId = scope.resolve('matrix_view');\n\t\t\t\tthis.viewId3 = scope.resolve('matrix_view3');\n\t\t\t\tthis.viewProjId = scope.resolve('matrix_viewProjection');\n\t\t\t\tthis.flipYId = scope.resolve('projectionFlipY');\n\t\t\t\tthis.tbnBasis = scope.resolve('tbnBasis');\n\t\t\t\tthis.nearClipId = scope.resolve('camera_near');\n\t\t\t\tthis.farClipId = scope.resolve('camera_far');\n\t\t\t\tthis.cameraParams = new Float32Array(4);\n\t\t\t\tthis.cameraParamsId = scope.resolve('camera_params');\n\t\t\t\tthis.viewIndexId = scope.resolve('view_index');\n\t\t\t\tthis.viewIndexId.setValue(0);\n\t\t\t\tthis.blueNoiseJitterVersion = 0;\n\t\t\t\tthis.blueNoiseJitterVec = new Vec4();\n\t\t\t\tthis.blueNoiseJitterData = new Float32Array(4);\n\t\t\t\tthis.blueNoiseJitterId = scope.resolve('blueNoiseJitter');\n\t\t\t\tthis.blueNoiseTextureId = scope.resolve('blueNoiseTex32');\n\t\t\t\tthis.alphaTestId = scope.resolve('alpha_ref');\n\t\t\t\tthis.opacityMapId = scope.resolve('texture_opacityMap');\n\t\t\t\tthis.exposureId = scope.resolve('exposure');\n\t\t\t\tthis.twoSidedLightingNegScaleFactorId = scope.resolve('twoSidedLightingNegScaleFactor');\n\t\t\t\tthis.twoSidedLightingNegScaleFactorId.setValue(0);\n\t\t\t\tthis.morphPositionTex = scope.resolve('morphPositionTex');\n\t\t\t\tthis.morphNormalTex = scope.resolve('morphNormalTex');\n\t\t\t\tthis.morphTexParams = scope.resolve('morph_tex_params');\n\t\t\t\tthis.lightCube = new LightCube();\n\t\t\t\tthis.constantLightCube = scope.resolve('lightCube[0]');\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.shadowRenderer = null;\n\t\t\t\tthis._shadowRendererLocal = null;\n\t\t\t\tthis._shadowRendererDirectional = null;\n\t\t\t\tthis.shadowMapCache.destroy();\n\t\t\t\tthis.shadowMapCache = null;\n\t\t\t\tthis._renderPassUpdateClustered?.destroy();\n\t\t\t\tthis._renderPassUpdateClustered = null;\n\t\t\t\tthis.lightTextureAtlas.destroy();\n\t\t\t\tthis.lightTextureAtlas = null;\n\t\t\t\tthis.gsplatDirector?.destroy();\n\t\t\t\tthis.gsplatDirector = null;\n\t\t}\n\t\tsetupViewport(camera, renderTarget) {\n\t\t\t\tconst device = this.device;\n\t\t\t\tconst pixelWidth = renderTarget ? renderTarget.width : device.width;\n\t\t\t\tconst pixelHeight = renderTarget ? renderTarget.height : device.height;\n\t\t\t\tconst rect = camera.rect;\n\t\t\t\tlet x = Math.floor(rect.x * pixelWidth);\n\t\t\t\tlet y = Math.floor(rect.y * pixelHeight);\n\t\t\t\tlet w = Math.floor(rect.z * pixelWidth);\n\t\t\t\tlet h = Math.floor(rect.w * pixelHeight);\n\t\t\t\tdevice.setViewport(x, y, w, h);\n\t\t\t\tif (camera._scissorRectClear) {\n\t\t\t\t\t\tconst scissorRect = camera.scissorRect;\n\t\t\t\t\t\tx = Math.floor(scissorRect.x * pixelWidth);\n\t\t\t\t\t\ty = Math.floor(scissorRect.y * pixelHeight);\n\t\t\t\t\t\tw = Math.floor(scissorRect.z * pixelWidth);\n\t\t\t\t\t\th = Math.floor(scissorRect.w * pixelHeight);\n\t\t\t\t}\n\t\t\t\tdevice.setScissor(x, y, w, h);\n\t\t}\n\t\tsetCameraUniforms(camera, target) {\n\t\t\t\tconst flipY = target?.flipY;\n\t\t\t\tlet viewList = null;\n\t\t\t\tif (camera.xr && camera.xr.session) {\n\t\t\t\t\t\tconst transform = camera._node?.parent?.getWorldTransform() || null;\n\t\t\t\t\t\tconst views = camera.xr.views;\n\t\t\t\t\t\tviewList = views.list;\n\t\t\t\t\t\tfor(let v = 0; v < viewList.length; v++){\n\t\t\t\t\t\t\t\tconst view = viewList[v];\n\t\t\t\t\t\t\t\tview.updateTransforms(transform);\n\t\t\t\t\t\t\t\tcamera.frustum.setFromMat4(view.projViewOffMat);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tlet projMat = camera.projectionMatrix;\n\t\t\t\t\t\tif (camera.calculateProjection) {\n\t\t\t\t\t\t\t\tcamera.calculateProjection(projMat, VIEW_CENTER);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlet projMatSkybox = camera.getProjectionMatrixSkybox();\n\t\t\t\t\t\tif (flipY) {\n\t\t\t\t\t\t\t\tprojMat = _tempProjMat0.mul2(_flipYMat, projMat);\n\t\t\t\t\t\t\t\tprojMatSkybox = _tempProjMat1.mul2(_flipYMat, projMatSkybox);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.device.isWebGPU) {\n\t\t\t\t\t\t\t\tprojMat = _tempProjMat2.mul2(_fixProjRangeMat, projMat);\n\t\t\t\t\t\t\t\tprojMatSkybox = _tempProjMat3.mul2(_fixProjRangeMat, projMatSkybox);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst { jitter } = camera;\n\t\t\t\t\t\tlet jitterX = 0;\n\t\t\t\t\t\tlet jitterY = 0;\n\t\t\t\t\t\tif (jitter > 0) {\n\t\t\t\t\t\t\t\tconst targetWidth = target ? target.width : this.device.width;\n\t\t\t\t\t\t\t\tconst targetHeight = target ? target.height : this.device.height;\n\t\t\t\t\t\t\t\tconst offset = _haltonSequence[this.device.renderVersion % _haltonSequence.length];\n\t\t\t\t\t\t\t\tjitterX = jitter * (offset.x * 2 - 1) / targetWidth;\n\t\t\t\t\t\t\t\tjitterY = jitter * (offset.y * 2 - 1) / targetHeight;\n\t\t\t\t\t\t\t\tprojMat = _tempProjMat4.copy(projMat);\n\t\t\t\t\t\t\t\tprojMat.data[8] = jitterX;\n\t\t\t\t\t\t\t\tprojMat.data[9] = jitterY;\n\t\t\t\t\t\t\t\tprojMatSkybox = _tempProjMat5.copy(projMatSkybox);\n\t\t\t\t\t\t\t\tprojMatSkybox.data[8] = jitterX;\n\t\t\t\t\t\t\t\tprojMatSkybox.data[9] = jitterY;\n\t\t\t\t\t\t\t\tif (this.blueNoiseJitterVersion !== this.device.renderVersion) {\n\t\t\t\t\t\t\t\t\t\tthis.blueNoiseJitterVersion = this.device.renderVersion;\n\t\t\t\t\t\t\t\t\t\tthis.blueNoise.vec4(this.blueNoiseJitterVec);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst jitterVec = jitter > 0 ? this.blueNoiseJitterVec : Vec4.ZERO;\n\t\t\t\t\t\tthis.blueNoiseJitterData[0] = jitterVec.x;\n\t\t\t\t\t\tthis.blueNoiseJitterData[1] = jitterVec.y;\n\t\t\t\t\t\tthis.blueNoiseJitterData[2] = jitterVec.z;\n\t\t\t\t\t\tthis.blueNoiseJitterData[3] = jitterVec.w;\n\t\t\t\t\t\tthis.blueNoiseJitterId.setValue(this.blueNoiseJitterData);\n\t\t\t\t\t\tthis.projId.setValue(projMat.data);\n\t\t\t\t\t\tthis.projSkyboxId.setValue(projMatSkybox.data);\n\t\t\t\t\t\tif (camera.calculateTransform) {\n\t\t\t\t\t\t\t\tcamera.calculateTransform(viewInvMat, VIEW_CENTER);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst pos = camera._node.getPosition();\n\t\t\t\t\t\t\t\tconst rot = camera._node.getRotation();\n\t\t\t\t\t\t\t\tviewInvMat.setTRS(pos, rot, Vec3.ONE);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.viewInvId.setValue(viewInvMat.data);\n\t\t\t\t\t\tviewMat.copy(viewInvMat).invert();\n\t\t\t\t\t\tthis.viewId.setValue(viewMat.data);\n\t\t\t\t\t\tviewMat3.setFromMat4(viewMat);\n\t\t\t\t\t\tthis.viewId3.setValue(viewMat3.data);\n\t\t\t\t\t\tviewProjMat.mul2(projMat, viewMat);\n\t\t\t\t\t\tthis.viewProjId.setValue(viewProjMat.data);\n\t\t\t\t\t\tcamera._storeShaderMatrices(viewProjMat, jitterX, jitterY, this.device.renderVersion);\n\t\t\t\t\t\tthis.flipYId.setValue(flipY ? -1 : 1);\n\t\t\t\t\t\tthis.dispatchViewPos(camera._node.getPosition());\n\t\t\t\t\t\tcamera.frustum.setFromMat4(viewProjMat);\n\t\t\t\t}\n\t\t\t\tthis.tbnBasis.setValue(flipY ? -1 : 1);\n\t\t\t\tconst n = camera._nearClip;\n\t\t\t\tconst f = camera._farClip;\n\t\t\t\tthis.nearClipId.setValue(n);\n\t\t\t\tthis.farClipId.setValue(f);\n\t\t\t\tthis.cameraParams[0] = 1 / f;\n\t\t\t\tthis.cameraParams[1] = f;\n\t\t\t\tthis.cameraParams[2] = n;\n\t\t\t\tthis.cameraParams[3] = camera.projection === PROJECTION_ORTHOGRAPHIC ? 1 : 0;\n\t\t\t\tthis.cameraParamsId.setValue(this.cameraParams);\n\t\t\t\tthis.exposureId.setValue(this.scene.physicalUnits ? camera.getExposure() : this.scene.exposure);\n\t\t\t\treturn viewList;\n\t\t}\n\t\tclear(camera, clearColor, clearDepth, clearStencil) {\n\t\t\t\tconst flags = (clearColor ?? camera._clearColorBuffer ? CLEARFLAG_COLOR : 0) | (clearDepth ?? camera._clearDepthBuffer ? CLEARFLAG_DEPTH : 0) | (clearStencil ?? camera._clearStencilBuffer ? CLEARFLAG_STENCIL : 0);\n\t\t\t\tif (flags) {\n\t\t\t\t\t\tconst device = this.device;\n\t\t\t\t\t\tdevice.clear({\n\t\t\t\t\t\t\t\tcolor: [\n\t\t\t\t\t\t\t\t\t\tcamera._clearColor.r,\n\t\t\t\t\t\t\t\t\t\tcamera._clearColor.g,\n\t\t\t\t\t\t\t\t\t\tcamera._clearColor.b,\n\t\t\t\t\t\t\t\t\t\tcamera._clearColor.a\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tdepth: camera._clearDepth,\n\t\t\t\t\t\t\t\tstencil: camera._clearStencil,\n\t\t\t\t\t\t\t\tflags: flags\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t}\n\t\tsetCamera(camera, target, clear, renderAction = null) {\n\t\t\t\tthis.setCameraUniforms(camera, target);\n\t\t\t\tthis.clearView(camera, target, clear, false);\n\t\t}\n\t\tclearView(camera, target, clear, forceWrite) {\n\t\t\t\tconst device = this.device;\n\t\t\t\tdevice.setRenderTarget(target);\n\t\t\t\tdevice.updateBegin();\n\t\t\t\tif (forceWrite) {\n\t\t\t\t\t\tdevice.setColorWrite(true, true, true, true);\n\t\t\t\t\t\tdevice.setDepthWrite(true);\n\t\t\t\t}\n\t\t\t\tthis.setupViewport(camera, target);\n\t\t\t\tif (clear) {\n\t\t\t\t\t\tconst options = camera._clearOptions;\n\t\t\t\t\t\tdevice.clear(options ? options : {\n\t\t\t\t\t\t\t\tcolor: [\n\t\t\t\t\t\t\t\t\t\tcamera._clearColor.r,\n\t\t\t\t\t\t\t\t\t\tcamera._clearColor.g,\n\t\t\t\t\t\t\t\t\t\tcamera._clearColor.b,\n\t\t\t\t\t\t\t\t\t\tcamera._clearColor.a\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tdepth: camera._clearDepth,\n\t\t\t\t\t\t\t\tflags: (camera._clearColorBuffer ? CLEARFLAG_COLOR : 0) | (camera._clearDepthBuffer ? CLEARFLAG_DEPTH : 0) | (camera._clearStencilBuffer ? CLEARFLAG_STENCIL : 0),\n\t\t\t\t\t\t\t\tstencil: camera._clearStencil\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t}\n\t\tsetupCullMode(cullFaces, flipFactor, drawCall) {\n\t\t\t\tconst material = drawCall.material;\n\t\t\t\tlet mode = CULLFACE_NONE;\n\t\t\t\tif (cullFaces) {\n\t\t\t\t\t\tlet flipFaces = 1;\n\t\t\t\t\t\tif (material.cull === CULLFACE_FRONT || material.cull === CULLFACE_BACK) {\n\t\t\t\t\t\t\t\tflipFaces = flipFactor * drawCall.flipFacesFactor * drawCall.node.worldScaleSign;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (flipFaces < 0) {\n\t\t\t\t\t\t\t\tmode = material.cull === CULLFACE_FRONT ? CULLFACE_BACK : CULLFACE_FRONT;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tmode = material.cull;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.device.setCullMode(mode);\n\t\t\t\tif (mode === CULLFACE_NONE && material.cull === CULLFACE_NONE) {\n\t\t\t\t\t\tthis.twoSidedLightingNegScaleFactorId.setValue(drawCall.node.worldScaleSign);\n\t\t\t\t}\n\t\t}\n\t\tupdateCameraFrustum(camera) {\n\t\t\t\tif (camera.xr && camera.xr.views.list.length) {\n\t\t\t\t\t\tconst view = camera.xr.views.list[0];\n\t\t\t\t\t\tviewProjMat.mul2(view.projMat, view.viewOffMat);\n\t\t\t\t\t\tcamera.frustum.setFromMat4(viewProjMat);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst projMat = camera.projectionMatrix;\n\t\t\t\tif (camera.calculateProjection) {\n\t\t\t\t\t\tcamera.calculateProjection(projMat, VIEW_CENTER);\n\t\t\t\t}\n\t\t\t\tif (camera.calculateTransform) {\n\t\t\t\t\t\tcamera.calculateTransform(viewInvMat, VIEW_CENTER);\n\t\t\t\t} else {\n\t\t\t\t\t\tconst pos = camera._node.getPosition();\n\t\t\t\t\t\tconst rot = camera._node.getRotation();\n\t\t\t\t\t\tviewInvMat.setTRS(pos, rot, Vec3.ONE);\n\t\t\t\t\t\tthis.viewInvId.setValue(viewInvMat.data);\n\t\t\t\t}\n\t\t\t\tviewMat.copy(viewInvMat).invert();\n\t\t\t\tviewProjMat.mul2(projMat, viewMat);\n\t\t\t\tcamera.frustum.setFromMat4(viewProjMat);\n\t\t}\n\t\tsetBaseConstants(device, material) {\n\t\t\t\tdevice.setCullMode(material.cull);\n\t\t\t\tif (material.opacityMap) {\n\t\t\t\t\t\tthis.opacityMapId.setValue(material.opacityMap);\n\t\t\t\t}\n\t\t\t\tif (material.opacityMap || material.alphaTest > 0) {\n\t\t\t\t\t\tthis.alphaTestId.setValue(material.alphaTest);\n\t\t\t\t}\n\t\t}\n\t\tupdateCpuSkinMatrices(drawCalls) {\n\t\t\t\t_skinUpdateIndex++;\n\t\t\t\tconst drawCallsCount = drawCalls.length;\n\t\t\t\tif (drawCallsCount === 0) return;\n\t\t\t\tfor(let i = 0; i < drawCallsCount; i++){\n\t\t\t\t\t\tconst si = drawCalls[i].skinInstance;\n\t\t\t\t\t\tif (si) {\n\t\t\t\t\t\t\t\tsi.updateMatrices(drawCalls[i].node, _skinUpdateIndex);\n\t\t\t\t\t\t\t\tsi._dirty = true;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tupdateGpuSkinMatrices(drawCalls) {\n\t\t\t\tfor (const drawCall of drawCalls){\n\t\t\t\t\t\tconst skin = drawCall.skinInstance;\n\t\t\t\t\t\tif (skin && skin._dirty) {\n\t\t\t\t\t\t\t\tskin.updateMatrixPalette(drawCall.node, _skinUpdateIndex);\n\t\t\t\t\t\t\t\tskin._dirty = false;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tupdateMorphing(drawCalls) {\n\t\t\t\tfor (const drawCall of drawCalls){\n\t\t\t\t\t\tconst morphInst = drawCall.morphInstance;\n\t\t\t\t\t\tif (morphInst && morphInst._dirty) {\n\t\t\t\t\t\t\t\tmorphInst.update();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tupdateGSplats(drawCalls) {\n\t\t\t\tfor (const drawCall of drawCalls){\n\t\t\t\t\t\tdrawCall.gsplatInstance?.update();\n\t\t\t\t}\n\t\t}\n\t\tgpuUpdate(drawCalls) {\n\t\t\t\tthis.updateGpuSkinMatrices(drawCalls);\n\t\t\t\tthis.updateMorphing(drawCalls);\n\t\t\t\tthis.updateGSplats(drawCalls);\n\t\t}\n\t\tsetVertexBuffers(device, mesh) {\n\t\t\t\tdevice.setVertexBuffer(mesh.vertexBuffer);\n\t\t}\n\t\tsetMorphing(device, morphInstance) {\n\t\t\t\tif (morphInstance) {\n\t\t\t\t\t\tmorphInstance.prepareRendering(device);\n\t\t\t\t\t\tdevice.setVertexBuffer(morphInstance.morph.vertexBufferIds);\n\t\t\t\t\t\tthis.morphPositionTex.setValue(morphInstance.texturePositions);\n\t\t\t\t\t\tthis.morphNormalTex.setValue(morphInstance.textureNormals);\n\t\t\t\t\t\tthis.morphTexParams.setValue(morphInstance._textureParams);\n\t\t\t\t}\n\t\t}\n\t\tsetSkinning(device, meshInstance) {\n\t\t\t\tconst skinInstance = meshInstance.skinInstance;\n\t\t\t\tif (skinInstance) {\n\t\t\t\t\t\tthis._skinDrawCalls++;\n\t\t\t\t\t\tconst boneTexture = skinInstance.boneTexture;\n\t\t\t\t\t\tthis.boneTextureId.setValue(boneTexture);\n\t\t\t\t}\n\t\t}\n\t\tdispatchViewPos(position) {\n\t\t\t\tconst vp = this.viewPos;\n\t\t\t\tvp[0] = position.x;\n\t\t\t\tvp[1] = position.y;\n\t\t\t\tvp[2] = position.z;\n\t\t\t\tthis.viewPosId.setValue(vp);\n\t\t}\n\t\tinitViewBindGroupFormat(isClustered) {\n\t\t\t\tif (this.device.supportsUniformBuffers && !this.viewUniformFormat) {\n\t\t\t\t\t\tconst uniforms = [\n\t\t\t\t\t\t\t\tnew UniformFormat('matrix_view', UNIFORMTYPE_MAT4),\n\t\t\t\t\t\t\t\tnew UniformFormat('matrix_viewInverse', UNIFORMTYPE_MAT4),\n\t\t\t\t\t\t\t\tnew UniformFormat('matrix_projection', UNIFORMTYPE_MAT4),\n\t\t\t\t\t\t\t\tnew UniformFormat('matrix_projectionSkybox', UNIFORMTYPE_MAT4),\n\t\t\t\t\t\t\t\tnew UniformFormat('matrix_viewProjection', UNIFORMTYPE_MAT4),\n\t\t\t\t\t\t\t\tnew UniformFormat('matrix_view3', UNIFORMTYPE_MAT3),\n\t\t\t\t\t\t\t\tnew UniformFormat('cubeMapRotationMatrix', UNIFORMTYPE_MAT3),\n\t\t\t\t\t\t\t\tnew UniformFormat('view_position', UNIFORMTYPE_VEC3),\n\t\t\t\t\t\t\t\tnew UniformFormat('skyboxIntensity', UNIFORMTYPE_FLOAT),\n\t\t\t\t\t\t\t\tnew UniformFormat('exposure', UNIFORMTYPE_FLOAT),\n\t\t\t\t\t\t\t\tnew UniformFormat('textureBias', UNIFORMTYPE_FLOAT),\n\t\t\t\t\t\t\t\tnew UniformFormat('view_index', UNIFORMTYPE_FLOAT)\n\t\t\t\t\t\t];\n\t\t\t\t\t\tif (isClustered) {\n\t\t\t\t\t\t\t\tuniforms.push(...[\n\t\t\t\t\t\t\t\t\t\tnew UniformFormat('clusterCellsCountByBoundsSize', UNIFORMTYPE_VEC3),\n\t\t\t\t\t\t\t\t\t\tnew UniformFormat('clusterTextureSize', UNIFORMTYPE_VEC3),\n\t\t\t\t\t\t\t\t\t\tnew UniformFormat('clusterBoundsMin', UNIFORMTYPE_VEC3),\n\t\t\t\t\t\t\t\t\t\tnew UniformFormat('clusterBoundsDelta', UNIFORMTYPE_VEC3),\n\t\t\t\t\t\t\t\t\t\tnew UniformFormat('clusterCellsDot', UNIFORMTYPE_VEC3),\n\t\t\t\t\t\t\t\t\t\tnew UniformFormat('clusterCellsMax', UNIFORMTYPE_VEC3),\n\t\t\t\t\t\t\t\t\t\tnew UniformFormat('shadowAtlasParams', UNIFORMTYPE_VEC2),\n\t\t\t\t\t\t\t\t\t\tnew UniformFormat('clusterMaxCells', UNIFORMTYPE_INT),\n\t\t\t\t\t\t\t\t\t\tnew UniformFormat('clusterSkip', UNIFORMTYPE_FLOAT)\n\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.viewUniformFormat = new UniformBufferFormat(this.device, uniforms);\n\t\t\t\t\t\tconst formats = [\n\t\t\t\t\t\t\t\tnew BindUniformBufferFormat(UNIFORM_BUFFER_DEFAULT_SLOT_NAME, SHADERSTAGE_VERTEX | SHADERSTAGE_FRAGMENT)\n\t\t\t\t\t\t];\n\t\t\t\t\t\tthis.viewBindGroupFormat = new BindGroupFormat(this.device, formats);\n\t\t\t\t}\n\t\t}\n\t\tsetupViewUniforms(view, index) {\n\t\t\t\tthis.projId.setValue(view.projMat.data);\n\t\t\t\tthis.projSkyboxId.setValue(view.projMat.data);\n\t\t\t\tthis.viewId.setValue(view.viewOffMat.data);\n\t\t\t\tthis.viewInvId.setValue(view.viewInvOffMat.data);\n\t\t\t\tthis.viewId3.setValue(view.viewMat3.data);\n\t\t\t\tthis.viewProjId.setValue(view.projViewOffMat.data);\n\t\t\t\tthis.viewPosId.setValue(view.positionData);\n\t\t\t\tthis.viewIndexId.setValue(index);\n\t\t}\n\t\tsetupViewUniformBuffers(viewBindGroups, viewUniformFormat, viewBindGroupFormat, viewList) {\n\t\t\t\tconst { device } = this;\n\t\t\t\tconst viewCount = viewList?.length ?? 1;\n\t\t\t\twhile(viewBindGroups.length < viewCount){\n\t\t\t\t\t\tconst ub = new UniformBuffer(device, viewUniformFormat, false);\n\t\t\t\t\t\tconst bg = new BindGroup(device, viewBindGroupFormat, ub);\n\t\t\t\t\t\tviewBindGroups.push(bg);\n\t\t\t\t}\n\t\t\t\tif (viewList) {\n\t\t\t\t\t\tfor(let i = 0; i < viewCount; i++){\n\t\t\t\t\t\t\t\tconst view = viewList[i];\n\t\t\t\t\t\t\t\tthis.setupViewUniforms(view, i);\n\t\t\t\t\t\t\t\tconst viewBindGroup = viewBindGroups[i];\n\t\t\t\t\t\t\t\tviewBindGroup.defaultUniformBuffer.update();\n\t\t\t\t\t\t\t\tviewBindGroup.update();\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tconst viewBindGroup = viewBindGroups[0];\n\t\t\t\t\t\tviewBindGroup.defaultUniformBuffer.update();\n\t\t\t\t\t\tviewBindGroup.update();\n\t\t\t\t}\n\t\t\t\tif (!viewList) {\n\t\t\t\t\t\tdevice.setBindGroup(BINDGROUP_VIEW, viewBindGroups[0]);\n\t\t\t\t}\n\t\t}\n\t\tsetupMeshUniformBuffers(shaderInstance) {\n\t\t\t\tconst device = this.device;\n\t\t\t\tif (device.supportsUniformBuffers) {\n\t\t\t\t\t\tconst meshBindGroup = shaderInstance.getBindGroup(device);\n\t\t\t\t\t\tmeshBindGroup.update();\n\t\t\t\t\t\tdevice.setBindGroup(BINDGROUP_MESH, meshBindGroup);\n\t\t\t\t\t\tconst meshUniformBuffer = shaderInstance.getUniformBuffer(device);\n\t\t\t\t\t\tmeshUniformBuffer.update(_dynamicBindGroup);\n\t\t\t\t\t\tdevice.setBindGroup(BINDGROUP_MESH_UB, _dynamicBindGroup.bindGroup, _dynamicBindGroup.offsets);\n\t\t\t\t}\n\t\t}\n\t\tsetMeshInstanceMatrices(meshInstance, setNormalMatrix = false) {\n\t\t\t\tconst modelMatrix = meshInstance.node.worldTransform;\n\t\t\t\tthis.modelMatrixId.setValue(modelMatrix.data);\n\t\t\t\tif (setNormalMatrix) {\n\t\t\t\t\t\tthis.normalMatrixId.setValue(meshInstance.node.normalMatrix.data);\n\t\t\t\t}\n\t\t}\n\t\tcull(camera, drawCalls, culledInstances) {\n\t\t\t\tconst opaque = culledInstances.opaque;\n\t\t\t\topaque.length = 0;\n\t\t\t\tconst transparent = culledInstances.transparent;\n\t\t\t\ttransparent.length = 0;\n\t\t\t\tconst doCull = camera.frustumCulling;\n\t\t\t\tconst count = drawCalls.length;\n\t\t\t\tfor(let i = 0; i < count; i++){\n\t\t\t\t\t\tconst drawCall = drawCalls[i];\n\t\t\t\t\t\tif (drawCall.visible) {\n\t\t\t\t\t\t\t\tconst visible = !doCull || !drawCall.cull || drawCall._isVisible(camera);\n\t\t\t\t\t\t\t\tif (visible) {\n\t\t\t\t\t\t\t\t\t\tdrawCall.visibleThisFrame = true;\n\t\t\t\t\t\t\t\t\t\tconst bucket = drawCall.transparent ? transparent : opaque;\n\t\t\t\t\t\t\t\t\t\tbucket.push(drawCall);\n\t\t\t\t\t\t\t\t\t\tif (drawCall.skinInstance || drawCall.morphInstance || drawCall.gsplatInstance) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.processingMeshInstances.add(drawCall);\n\t\t\t\t\t\t\t\t\t\t\t\tif (drawCall.gsplatInstance) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdrawCall.gsplatInstance.cameras.push(camera);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tcollectLights(comp) {\n\t\t\t\tthis.lights.length = 0;\n\t\t\t\tthis.localLights.length = 0;\n\t\t\t\tconst stats = this.scene._stats;\n\t\t\t\tconst count = comp.layerList.length;\n\t\t\t\tfor(let i = 0; i < count; i++){\n\t\t\t\t\t\tconst layer = comp.layerList[i];\n\t\t\t\t\t\tif (!_tempLayerSet.has(layer)) {\n\t\t\t\t\t\t\t\t_tempLayerSet.add(layer);\n\t\t\t\t\t\t\t\tconst lights = layer._lights;\n\t\t\t\t\t\t\t\tfor(let j = 0; j < lights.length; j++){\n\t\t\t\t\t\t\t\t\t\tconst light = lights[j];\n\t\t\t\t\t\t\t\t\t\tif (!_tempLightSet.has(light)) {\n\t\t\t\t\t\t\t\t\t\t\t\t_tempLightSet.add(light);\n\t\t\t\t\t\t\t\t\t\t\t\tthis.lights.push(light);\n\t\t\t\t\t\t\t\t\t\t\t\tif (light._type !== LIGHTTYPE_DIRECTIONAL) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.localLights.push(light);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstats.lights = this.lights.length;\n\t\t\t\t_tempLightSet.clear();\n\t\t\t\t_tempLayerSet.clear();\n\t\t}\n\t\tcullLights(camera, lights) {\n\t\t\t\tconst clusteredLightingEnabled = this.scene.clusteredLightingEnabled;\n\t\t\t\tconst physicalUnits = this.scene.physicalUnits;\n\t\t\t\tfor(let i = 0; i < lights.length; i++){\n\t\t\t\t\t\tconst light = lights[i];\n\t\t\t\t\t\tif (light.enabled) {\n\t\t\t\t\t\t\t\tif (light._type !== LIGHTTYPE_DIRECTIONAL) {\n\t\t\t\t\t\t\t\t\t\tlight.getBoundingSphere(tempSphere$1);\n\t\t\t\t\t\t\t\t\t\tif (camera.frustum.containsSphere(tempSphere$1)) {\n\t\t\t\t\t\t\t\t\t\t\t\tlight.visibleThisFrame = true;\n\t\t\t\t\t\t\t\t\t\t\t\tlight.usePhysicalUnits = physicalUnits;\n\t\t\t\t\t\t\t\t\t\t\t\tconst screenSize = camera.getScreenSize(tempSphere$1);\n\t\t\t\t\t\t\t\t\t\t\t\tlight.maxScreenSize = Math.max(light.maxScreenSize, screenSize);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tif (!clusteredLightingEnabled) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (light.castShadows && !light.shadowMap) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tlight.visibleThisFrame = true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tlight.usePhysicalUnits = this.scene.physicalUnits;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tcullShadowmaps(comp) {\n\t\t\t\tconst isClustered = this.scene.clusteredLightingEnabled;\n\t\t\t\tfor(let i = 0; i < this.localLights.length; i++){\n\t\t\t\t\t\tconst light = this.localLights[i];\n\t\t\t\t\t\tif (light._type !== LIGHTTYPE_DIRECTIONAL) {\n\t\t\t\t\t\t\t\tif (isClustered) {\n\t\t\t\t\t\t\t\t\t\tif (light.atlasSlotUpdated && light.shadowUpdateMode === SHADOWUPDATE_NONE) {\n\t\t\t\t\t\t\t\t\t\t\t\tlight.shadowUpdateMode = SHADOWUPDATE_THISFRAME;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tif (light.shadowUpdateMode === SHADOWUPDATE_NONE && light.castShadows) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (!light.getRenderData(null, 0).shadowCamera.renderTarget) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlight.shadowUpdateMode = SHADOWUPDATE_THISFRAME;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (light.visibleThisFrame && light.castShadows && light.shadowUpdateMode !== SHADOWUPDATE_NONE) {\n\t\t\t\t\t\t\t\t\t\tthis._shadowRendererLocal.cull(light, comp);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.cameraDirShadowLights.clear();\n\t\t\t\tconst cameras = comp.cameras;\n\t\t\t\tfor(let i = 0; i < cameras.length; i++){\n\t\t\t\t\t\tconst cameraComponent = cameras[i];\n\t\t\t\t\t\tif (cameraComponent.enabled) {\n\t\t\t\t\t\t\t\tconst camera = cameraComponent.camera;\n\t\t\t\t\t\t\t\tlet lightList;\n\t\t\t\t\t\t\t\tconst cameraLayers = camera.layers;\n\t\t\t\t\t\t\t\tfor(let l = 0; l < cameraLayers.length; l++){\n\t\t\t\t\t\t\t\t\t\tconst cameraLayer = comp.getLayerById(cameraLayers[l]);\n\t\t\t\t\t\t\t\t\t\tif (cameraLayer) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst layerDirLights = cameraLayer.splitLights[LIGHTTYPE_DIRECTIONAL];\n\t\t\t\t\t\t\t\t\t\t\t\tfor(let j = 0; j < layerDirLights.length; j++){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst light = layerDirLights[j];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (light.castShadows && !_tempSet.has(light)) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_tempSet.add(light);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tlightList = lightList ?? [];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tlightList.push(light);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis._shadowRendererDirectional.cull(light, comp, camera);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (lightList) {\n\t\t\t\t\t\t\t\t\t\tthis.cameraDirShadowLights.set(camera, lightList);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t_tempSet.clear();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tcullComposition(comp) {\n\t\t\t\tconst { scene } = this;\n\t\t\t\tthis.processingMeshInstances.clear();\n\t\t\t\tconst numCameras = comp.cameras.length;\n\t\t\t\tthis._camerasRendered += numCameras;\n\t\t\t\tfor(let i = 0; i < numCameras; i++){\n\t\t\t\t\t\tconst camera = comp.cameras[i];\n\t\t\t\t\t\tscene?.fire(EVENT_PRECULL, camera);\n\t\t\t\t\t\tconst renderTarget = camera.renderTarget;\n\t\t\t\t\t\tcamera.frameUpdate(renderTarget);\n\t\t\t\t\t\tthis.updateCameraFrustum(camera.camera);\n\t\t\t\t\t\tconst layerIds = camera.layers;\n\t\t\t\t\t\tfor(let j = 0; j < layerIds.length; j++){\n\t\t\t\t\t\t\t\tconst layer = comp.getLayerById(layerIds[j]);\n\t\t\t\t\t\t\t\tif (layer && layer.enabled) {\n\t\t\t\t\t\t\t\t\t\tthis.cullLights(camera.camera, layer._lights);\n\t\t\t\t\t\t\t\t\t\tconst culledInstances = layer.getCulledInstances(camera.camera);\n\t\t\t\t\t\t\t\t\t\tthis.cull(camera.camera, layer.meshInstances, culledInstances);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tscene?.fire(EVENT_POSTCULL, camera);\n\t\t\t\t}\n\t\t\t\tif (scene.clusteredLightingEnabled) {\n\t\t\t\t\t\tthis.updateLightTextureAtlas();\n\t\t\t\t}\n\t\t\t\tthis.cullShadowmaps(comp);\n\t\t\t\tscene?.fire(EVENT_CULL_END);\n\t\t}\n\t\tupdateShaders(drawCalls, onlyLitShaders) {\n\t\t\t\tconst count = drawCalls.length;\n\t\t\t\tfor(let i = 0; i < count; i++){\n\t\t\t\t\t\tconst mat = drawCalls[i].material;\n\t\t\t\t\t\tif (mat) {\n\t\t\t\t\t\t\t\tif (!_tempSet.has(mat)) {\n\t\t\t\t\t\t\t\t\t\t_tempSet.add(mat);\n\t\t\t\t\t\t\t\t\t\tif (mat.getShaderVariant !== Material.prototype.getShaderVariant) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (onlyLitShaders) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (!mat.useLighting || mat.emitter && !mat.emitter.lighting) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tmat.clearVariants();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t_tempSet.clear();\n\t\t}\n\t\tupdateFrameUniforms() {\n\t\t\t\tthis.blueNoiseTextureId.setValue(getBlueNoiseTexture(this.device));\n\t\t}\n\t\tbeginFrame(comp) {\n\t\t\t\tconst scene = this.scene;\n\t\t\t\tconst updateShaders = scene.updateShaders || this.device._shadersDirty;\n\t\t\t\tconst layers = comp.layerList;\n\t\t\t\tconst layerCount = layers.length;\n\t\t\t\tfor(let i = 0; i < layerCount; i++){\n\t\t\t\t\t\tconst layer = layers[i];\n\t\t\t\t\t\tconst meshInstances = layer.meshInstances;\n\t\t\t\t\t\tconst count = meshInstances.length;\n\t\t\t\t\t\tfor(let j = 0; j < count; j++){\n\t\t\t\t\t\t\t\tconst meshInst = meshInstances[j];\n\t\t\t\t\t\t\t\tmeshInst.visibleThisFrame = false;\n\t\t\t\t\t\t\t\tif (updateShaders) {\n\t\t\t\t\t\t\t\t\t\t_tempMeshInstances.push(meshInst);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (meshInst.skinInstance) {\n\t\t\t\t\t\t\t\t\t\t_tempMeshInstancesSkinned.push(meshInst);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (updateShaders) {\n\t\t\t\t\t\tconst onlyLitShaders = !scene.updateShaders || !this.device._shadersDirty;\n\t\t\t\t\t\tthis.updateShaders(_tempMeshInstances, onlyLitShaders);\n\t\t\t\t\t\tscene.updateShaders = false;\n\t\t\t\t\t\tthis.device._shadersDirty = false;\n\t\t\t\t\t\tscene._shaderVersion++;\n\t\t\t\t}\n\t\t\t\tthis.updateFrameUniforms();\n\t\t\t\tthis.updateCpuSkinMatrices(_tempMeshInstancesSkinned);\n\t\t\t\t_tempMeshInstances.length = 0;\n\t\t\t\t_tempMeshInstancesSkinned.length = 0;\n\t\t\t\tconst lights = this.lights;\n\t\t\t\tconst lightCount = lights.length;\n\t\t\t\tfor(let i = 0; i < lightCount; i++){\n\t\t\t\t\t\tlights[i].beginFrame();\n\t\t\t\t}\n\t\t}\n\t\tupdateLightTextureAtlas() {\n\t\t\t\tthis.lightTextureAtlas.update(this.localLights, this.scene.lighting);\n\t\t}\n\t\tupdateLayerComposition(comp) {\n\t\t\t\tconst len = comp.layerList.length;\n\t\t\t\tconst scene = this.scene;\n\t\t\t\tconst shaderVersion = scene._shaderVersion;\n\t\t\t\tfor(let i = 0; i < len; i++){\n\t\t\t\t\t\tconst layer = comp.layerList[i];\n\t\t\t\t\t\tlayer._shaderVersion = shaderVersion;\n\t\t\t\t}\n\t\t\t\tcomp._update();\n\t\t}\n\t\tframeUpdate() {\n\t\t\t\tthis.clustersDebugRendered = false;\n\t\t\t\tthis.initViewBindGroupFormat(this.scene.clusteredLightingEnabled);\n\t\t\t\tthis.dirLightShadows.clear();\n\t\t}\n}\n\nclass RenderAction {\n\t\tconstructor(){\n\t\t\t\tthis.camera = null;\n\t\t\t\tthis.layer = null;\n\t\t\t\tthis.transparent = false;\n\t\t\t\tthis.renderTarget = null;\n\t\t\t\tthis.lightClusters = null;\n\t\t\t\tthis.clearColor = false;\n\t\t\t\tthis.clearDepth = false;\n\t\t\t\tthis.clearStencil = false;\n\t\t\t\tthis.triggerPostprocess = false;\n\t\t\t\tthis.firstCameraUse = false;\n\t\t\t\tthis.lastCameraUse = false;\n\t\t\t\tthis.viewBindGroups = [];\n\t\t\t\tthis.useCameraPasses = false;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.viewBindGroups.forEach((bg)=>{\n\t\t\t\t\t\tbg.defaultUniformBuffer.destroy();\n\t\t\t\t\t\tbg.destroy();\n\t\t\t\t});\n\t\t\t\tthis.viewBindGroups.length = 0;\n\t\t}\n\t\tsetupClears(camera, layer) {\n\t\t\t\tthis.clearColor = camera?.clearColorBuffer || layer.clearColorBuffer;\n\t\t\t\tthis.clearDepth = camera?.clearDepthBuffer || layer.clearDepthBuffer;\n\t\t\t\tthis.clearStencil = camera?.clearStencilBuffer || layer.clearStencilBuffer;\n\t\t}\n}\n\nclass RenderPassForward extends RenderPass {\n\t\tconstructor(device, layerComposition, scene, renderer){\n\t\t\t\tsuper(device), this.renderActions = [], this.noDepthClear = false;\n\t\t\t\tthis.layerComposition = layerComposition;\n\t\t\t\tthis.scene = scene;\n\t\t\t\tthis.renderer = renderer;\n\t\t}\n\t\tget rendersAnything() {\n\t\t\t\treturn this.renderActions.length > 0;\n\t\t}\n\t\taddRenderAction(renderAction) {\n\t\t\t\tthis.renderActions.push(renderAction);\n\t\t}\n\t\taddLayer(cameraComponent, layer, transparent, autoClears = true) {\n\t\t\t\tconst ra = new RenderAction();\n\t\t\t\tra.renderTarget = this.renderTarget;\n\t\t\t\tra.camera = cameraComponent;\n\t\t\t\tra.layer = layer;\n\t\t\t\tra.transparent = transparent;\n\t\t\t\tif (autoClears) {\n\t\t\t\t\t\tconst firstRa = this.renderActions.length === 0;\n\t\t\t\t\t\tra.setupClears(firstRa ? cameraComponent : undefined, layer);\n\t\t\t\t}\n\t\t\t\tthis.addRenderAction(ra);\n\t\t}\n\t\taddLayers(composition, cameraComponent, startIndex, firstLayerClears, lastLayerId, lastLayerIsTransparent = true) {\n\t\t\t\tconst { layerList, subLayerList } = composition;\n\t\t\t\tlet clearRenderTarget = firstLayerClears;\n\t\t\t\tlet index = startIndex;\n\t\t\t\twhile(index < layerList.length){\n\t\t\t\t\t\tconst layer = layerList[index];\n\t\t\t\t\t\tconst isTransparent = subLayerList[index];\n\t\t\t\t\t\tconst renderedByCamera = cameraComponent.camera.layersSet.has(layer.id);\n\t\t\t\t\t\tif (renderedByCamera) {\n\t\t\t\t\t\t\t\tthis.addLayer(cameraComponent, layer, isTransparent, clearRenderTarget);\n\t\t\t\t\t\t\t\tclearRenderTarget = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tindex++;\n\t\t\t\t\t\tif (layer.id === lastLayerId && isTransparent === lastLayerIsTransparent) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn index;\n\t\t}\n\t\tupdateDirectionalShadows() {\n\t\t\t\tconst { renderer, renderActions } = this;\n\t\t\t\tfor(let i = 0; i < renderActions.length; i++){\n\t\t\t\t\t\tconst renderAction = renderActions[i];\n\t\t\t\t\t\tconst cameraComp = renderAction.camera;\n\t\t\t\t\t\tconst camera = cameraComp.camera;\n\t\t\t\t\t\tconst shadowDirLights = this.renderer.cameraDirShadowLights.get(camera);\n\t\t\t\t\t\tif (shadowDirLights) {\n\t\t\t\t\t\t\t\tfor(let l = 0; l < shadowDirLights.length; l++){\n\t\t\t\t\t\t\t\t\t\tconst light = shadowDirLights[l];\n\t\t\t\t\t\t\t\t\t\tif (renderer.dirLightShadows.get(light) !== camera) {\n\t\t\t\t\t\t\t\t\t\t\t\trenderer.dirLightShadows.set(light, camera);\n\t\t\t\t\t\t\t\t\t\t\t\tconst shadowPass = renderer._shadowRendererDirectional.getLightRenderPass(light, camera);\n\t\t\t\t\t\t\t\t\t\t\t\tif (shadowPass) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.beforePasses.push(shadowPass);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tupdateClears() {\n\t\t\t\tconst renderAction = this.renderActions[0];\n\t\t\t\tif (renderAction) {\n\t\t\t\t\t\tconst cameraComponent = renderAction.camera;\n\t\t\t\t\t\tconst camera = cameraComponent.camera;\n\t\t\t\t\t\tconst fullSizeClearRect = camera.fullSizeClearRect;\n\t\t\t\t\t\tthis.setClearColor(fullSizeClearRect && renderAction.clearColor ? camera.clearColor : undefined);\n\t\t\t\t\t\tthis.setClearDepth(fullSizeClearRect && renderAction.clearDepth && !this.noDepthClear ? camera.clearDepth : undefined);\n\t\t\t\t\t\tthis.setClearStencil(fullSizeClearRect && renderAction.clearStencil ? camera.clearStencil : undefined);\n\t\t\t\t}\n\t\t}\n\t\tframeUpdate() {\n\t\t\t\tsuper.frameUpdate();\n\t\t\t\tthis.updateDirectionalShadows();\n\t\t\t\tthis.updateClears();\n\t\t}\n\t\tbefore() {\n\t\t\t\tconst { renderActions } = this;\n\t\t\t\tfor(let i = 0; i < renderActions.length; i++){\n\t\t\t\t\t\tconst ra = renderActions[i];\n\t\t\t\t\t\tif (ra.firstCameraUse) {\n\t\t\t\t\t\t\t\tthis.scene.fire(EVENT_PRERENDER, ra.camera);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\texecute() {\n\t\t\t\tconst { layerComposition, renderActions } = this;\n\t\t\t\tfor(let i = 0; i < renderActions.length; i++){\n\t\t\t\t\t\tconst ra = renderActions[i];\n\t\t\t\t\t\tconst layer = ra.layer;\n\t\t\t\t\t\tif (layerComposition.isEnabled(layer, ra.transparent)) {\n\t\t\t\t\t\t\t\tthis.renderRenderAction(ra, i === 0);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tafter() {\n\t\t\t\tfor(let i = 0; i < this.renderActions.length; i++){\n\t\t\t\t\t\tconst ra = this.renderActions[i];\n\t\t\t\t\t\tif (ra.lastCameraUse) {\n\t\t\t\t\t\t\t\tthis.scene.fire(EVENT_POSTRENDER, ra.camera);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.beforePasses.length = 0;\n\t\t}\n\t\trenderRenderAction(renderAction, firstRenderAction) {\n\t\t\t\tconst { renderer, scene } = this;\n\t\t\t\tconst device = renderer.device;\n\t\t\t\tconst { layer, transparent, camera } = renderAction;\n\t\t\t\tif (camera) {\n\t\t\t\t\t\tconst originalGammaCorrection = camera.gammaCorrection;\n\t\t\t\t\t\tconst originalToneMapping = camera.toneMapping;\n\t\t\t\t\t\tif (this.gammaCorrection !== undefined) camera.gammaCorrection = this.gammaCorrection;\n\t\t\t\t\t\tif (this.toneMapping !== undefined) camera.toneMapping = this.toneMapping;\n\t\t\t\t\t\tscene.fire(EVENT_PRERENDER_LAYER, camera, layer, transparent);\n\t\t\t\t\t\tconst options = {\n\t\t\t\t\t\t\t\tlightClusters: renderAction.lightClusters\n\t\t\t\t\t\t};\n\t\t\t\t\t\tconst shaderPass = camera.camera.shaderPassInfo?.index ?? SHADER_FORWARD;\n\t\t\t\t\t\tif (!firstRenderAction || !camera.camera.fullSizeClearRect) {\n\t\t\t\t\t\t\t\toptions.clearColor = renderAction.clearColor;\n\t\t\t\t\t\t\t\toptions.clearDepth = renderAction.clearDepth;\n\t\t\t\t\t\t\t\toptions.clearStencil = renderAction.clearStencil;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst renderTarget = renderAction.renderTarget ?? device.backBuffer;\n\t\t\t\t\t\trenderer.renderForwardLayer(camera.camera, renderTarget, layer, transparent, shaderPass, renderAction.viewBindGroups, options);\n\t\t\t\t\t\tdevice.setBlendState(BlendState.NOBLEND);\n\t\t\t\t\t\tdevice.setStencilState(null, null);\n\t\t\t\t\t\tdevice.setAlphaToCoverage(false);\n\t\t\t\t\t\tscene.fire(EVENT_POSTRENDER_LAYER, camera, layer, transparent);\n\t\t\t\t\t\tif (this.gammaCorrection !== undefined) camera.gammaCorrection = originalGammaCorrection;\n\t\t\t\t\t\tif (this.toneMapping !== undefined) camera.toneMapping = originalToneMapping;\n\t\t\t\t}\n\t\t}\n}\n\nclass RenderPassPostprocessing extends RenderPass {\n\t\tconstructor(device, renderer, renderAction){\n\t\t\t\tsuper(device);\n\t\t\t\tthis.renderer = renderer;\n\t\t\t\tthis.renderAction = renderAction;\n\t\t\t\tthis.requiresCubemaps = false;\n\t\t}\n\t\texecute() {\n\t\t\t\tconst renderAction = this.renderAction;\n\t\t\t\tconst camera = renderAction.camera;\n\t\t\t\tcamera.onPostprocessing();\n\t\t}\n}\n\nconst _noLights = [\n\t\t[],\n\t\t[],\n\t\t[]\n];\nconst tmpColor$1 = new Color();\nconst _drawCallList = {\n\t\tdrawCalls: [],\n\t\tshaderInstances: [],\n\t\tisNewMaterial: [],\n\t\tlightMaskChanged: [],\n\t\tclear: function() {\n\t\t\t\tthis.drawCalls.length = 0;\n\t\t\t\tthis.shaderInstances.length = 0;\n\t\t\t\tthis.isNewMaterial.length = 0;\n\t\t\t\tthis.lightMaskChanged.length = 0;\n\t\t}\n};\nfunction vogelDiskPrecalculationSamples(numSamples) {\n\t\tconst samples = [];\n\t\tfor(let i = 0; i < numSamples; ++i){\n\t\t\t\tconst r = Math.sqrt(i + 0.5) / Math.sqrt(numSamples);\n\t\t\t\tsamples.push(r);\n\t\t}\n\t\treturn samples;\n}\nfunction vogelSpherePrecalculationSamples(numSamples) {\n\t\tconst samples = [];\n\t\tfor(let i = 0; i < numSamples; i++){\n\t\t\t\tconst weight = i / numSamples;\n\t\t\t\tconst radius = Math.sqrt(weight * weight);\n\t\t\t\tsamples.push(radius);\n\t\t}\n\t\treturn samples;\n}\nclass ForwardRenderer extends Renderer {\n\t\tconstructor(graphicsDevice, scene){\n\t\t\t\tsuper(graphicsDevice, scene);\n\t\t\t\tconst device = this.device;\n\t\t\t\tthis._forwardDrawCalls = 0;\n\t\t\t\tthis._materialSwitches = 0;\n\t\t\t\tthis._depthMapTime = 0;\n\t\t\t\tthis._forwardTime = 0;\n\t\t\t\tthis._sortTime = 0;\n\t\t\t\tconst scope = device.scope;\n\t\t\t\tthis.fogColorId = scope.resolve('fog_color');\n\t\t\t\tthis.fogStartId = scope.resolve('fog_start');\n\t\t\t\tthis.fogEndId = scope.resolve('fog_end');\n\t\t\t\tthis.fogDensityId = scope.resolve('fog_density');\n\t\t\t\tthis.ambientId = scope.resolve('light_globalAmbient');\n\t\t\t\tthis.skyboxIntensityId = scope.resolve('skyboxIntensity');\n\t\t\t\tthis.cubeMapRotationMatrixId = scope.resolve('cubeMapRotationMatrix');\n\t\t\t\tthis.pcssDiskSamplesId = scope.resolve('pcssDiskSamples[0]');\n\t\t\t\tthis.pcssSphereSamplesId = scope.resolve('pcssSphereSamples[0]');\n\t\t\t\tthis.lightColorId = [];\n\t\t\t\tthis.lightDir = [];\n\t\t\t\tthis.lightDirId = [];\n\t\t\t\tthis.lightShadowMapId = [];\n\t\t\t\tthis.lightShadowMatrixId = [];\n\t\t\t\tthis.lightShadowParamsId = [];\n\t\t\t\tthis.lightShadowIntensity = [];\n\t\t\t\tthis.lightRadiusId = [];\n\t\t\t\tthis.lightPos = [];\n\t\t\t\tthis.lightPosId = [];\n\t\t\t\tthis.lightWidth = [];\n\t\t\t\tthis.lightWidthId = [];\n\t\t\t\tthis.lightHeight = [];\n\t\t\t\tthis.lightHeightId = [];\n\t\t\t\tthis.lightInAngleId = [];\n\t\t\t\tthis.lightOutAngleId = [];\n\t\t\t\tthis.lightCookieId = [];\n\t\t\t\tthis.lightCookieIntId = [];\n\t\t\t\tthis.lightCookieMatrixId = [];\n\t\t\t\tthis.lightCookieOffsetId = [];\n\t\t\t\tthis.lightShadowSearchAreaId = [];\n\t\t\t\tthis.lightCameraParamsId = [];\n\t\t\t\tthis.lightSoftShadowParamsId = [];\n\t\t\t\tthis.shadowMatrixPaletteId = [];\n\t\t\t\tthis.shadowCascadeDistancesId = [];\n\t\t\t\tthis.shadowCascadeCountId = [];\n\t\t\t\tthis.shadowCascadeBlendId = [];\n\t\t\t\tthis.screenSizeId = scope.resolve('uScreenSize');\n\t\t\t\tthis._screenSize = new Float32Array(4);\n\t\t\t\tthis.fogColor = new Float32Array(3);\n\t\t\t\tthis.ambientColor = new Float32Array(3);\n\t\t\t\tthis.pcssDiskSamples = vogelDiskPrecalculationSamples(16);\n\t\t\t\tthis.pcssSphereSamples = vogelSpherePrecalculationSamples(16);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tsuper.destroy();\n\t\t}\n\t\tdispatchGlobalLights(scene) {\n\t\t\t\tconst ambientUniform = this.ambientColor;\n\t\t\t\ttmpColor$1.linear(scene.ambientLight);\n\t\t\t\tambientUniform[0] = tmpColor$1.r;\n\t\t\t\tambientUniform[1] = tmpColor$1.g;\n\t\t\t\tambientUniform[2] = tmpColor$1.b;\n\t\t\t\tif (scene.physicalUnits) {\n\t\t\t\t\t\tfor(let i = 0; i < 3; i++){\n\t\t\t\t\t\t\t\tambientUniform[i] *= scene.ambientLuminance;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.ambientId.setValue(ambientUniform);\n\t\t\t\tthis.skyboxIntensityId.setValue(scene.physicalUnits ? scene.skyboxLuminance : scene.skyboxIntensity);\n\t\t\t\tthis.cubeMapRotationMatrixId.setValue(scene._skyboxRotationMat3.data);\n\t\t}\n\t\t_resolveLight(scope, i) {\n\t\t\t\tconst light = `light${i}`;\n\t\t\t\tthis.lightColorId[i] = scope.resolve(`${light}_color`);\n\t\t\t\tthis.lightDir[i] = new Float32Array(3);\n\t\t\t\tthis.lightDirId[i] = scope.resolve(`${light}_direction`);\n\t\t\t\tthis.lightShadowMapId[i] = scope.resolve(`${light}_shadowMap`);\n\t\t\t\tthis.lightShadowMatrixId[i] = scope.resolve(`${light}_shadowMatrix`);\n\t\t\t\tthis.lightShadowParamsId[i] = scope.resolve(`${light}_shadowParams`);\n\t\t\t\tthis.lightShadowIntensity[i] = scope.resolve(`${light}_shadowIntensity`);\n\t\t\t\tthis.lightShadowSearchAreaId[i] = scope.resolve(`${light}_shadowSearchArea`);\n\t\t\t\tthis.lightRadiusId[i] = scope.resolve(`${light}_radius`);\n\t\t\t\tthis.lightPos[i] = new Float32Array(3);\n\t\t\t\tthis.lightPosId[i] = scope.resolve(`${light}_position`);\n\t\t\t\tthis.lightWidth[i] = new Float32Array(3);\n\t\t\t\tthis.lightWidthId[i] = scope.resolve(`${light}_halfWidth`);\n\t\t\t\tthis.lightHeight[i] = new Float32Array(3);\n\t\t\t\tthis.lightHeightId[i] = scope.resolve(`${light}_halfHeight`);\n\t\t\t\tthis.lightInAngleId[i] = scope.resolve(`${light}_innerConeAngle`);\n\t\t\t\tthis.lightOutAngleId[i] = scope.resolve(`${light}_outerConeAngle`);\n\t\t\t\tthis.lightCookieId[i] = scope.resolve(`${light}_cookie`);\n\t\t\t\tthis.lightCookieIntId[i] = scope.resolve(`${light}_cookieIntensity`);\n\t\t\t\tthis.lightCookieMatrixId[i] = scope.resolve(`${light}_cookieMatrix`);\n\t\t\t\tthis.lightCookieOffsetId[i] = scope.resolve(`${light}_cookieOffset`);\n\t\t\t\tthis.lightCameraParamsId[i] = scope.resolve(`${light}_cameraParams`);\n\t\t\t\tthis.lightSoftShadowParamsId[i] = scope.resolve(`${light}_softShadowParams`);\n\t\t\t\tthis.shadowMatrixPaletteId[i] = scope.resolve(`${light}_shadowMatrixPalette[0]`);\n\t\t\t\tthis.shadowCascadeDistancesId[i] = scope.resolve(`${light}_shadowCascadeDistances`);\n\t\t\t\tthis.shadowCascadeCountId[i] = scope.resolve(`${light}_shadowCascadeCount`);\n\t\t\t\tthis.shadowCascadeBlendId[i] = scope.resolve(`${light}_shadowCascadeBlend`);\n\t\t}\n\t\tsetLTCDirectionalLight(wtm, cnt, dir, campos, far) {\n\t\t\t\tthis.lightPos[cnt][0] = campos.x - dir.x * far;\n\t\t\t\tthis.lightPos[cnt][1] = campos.y - dir.y * far;\n\t\t\t\tthis.lightPos[cnt][2] = campos.z - dir.z * far;\n\t\t\t\tthis.lightPosId[cnt].setValue(this.lightPos[cnt]);\n\t\t\t\tconst hWidth = wtm.transformVector(new Vec3(-0.5, 0, 0));\n\t\t\t\tthis.lightWidth[cnt][0] = hWidth.x * far;\n\t\t\t\tthis.lightWidth[cnt][1] = hWidth.y * far;\n\t\t\t\tthis.lightWidth[cnt][2] = hWidth.z * far;\n\t\t\t\tthis.lightWidthId[cnt].setValue(this.lightWidth[cnt]);\n\t\t\t\tconst hHeight = wtm.transformVector(new Vec3(0, 0, 0.5));\n\t\t\t\tthis.lightHeight[cnt][0] = hHeight.x * far;\n\t\t\t\tthis.lightHeight[cnt][1] = hHeight.y * far;\n\t\t\t\tthis.lightHeight[cnt][2] = hHeight.z * far;\n\t\t\t\tthis.lightHeightId[cnt].setValue(this.lightHeight[cnt]);\n\t\t}\n\t\tdispatchDirectLights(dirs, mask, camera) {\n\t\t\t\tlet cnt = 0;\n\t\t\t\tconst scope = this.device.scope;\n\t\t\t\tfor(let i = 0; i < dirs.length; i++){\n\t\t\t\t\t\tif (!(dirs[i].mask & mask)) continue;\n\t\t\t\t\t\tconst directional = dirs[i];\n\t\t\t\t\t\tconst wtm = directional._node.getWorldTransform();\n\t\t\t\t\t\tif (!this.lightColorId[cnt]) {\n\t\t\t\t\t\t\t\tthis._resolveLight(scope, cnt);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.lightColorId[cnt].setValue(directional._colorLinear);\n\t\t\t\t\t\twtm.getY(directional._direction).mulScalar(-1);\n\t\t\t\t\t\tdirectional._direction.normalize();\n\t\t\t\t\t\tthis.lightDir[cnt][0] = directional._direction.x;\n\t\t\t\t\t\tthis.lightDir[cnt][1] = directional._direction.y;\n\t\t\t\t\t\tthis.lightDir[cnt][2] = directional._direction.z;\n\t\t\t\t\t\tthis.lightDirId[cnt].setValue(this.lightDir[cnt]);\n\t\t\t\t\t\tif (directional.shape !== LIGHTSHAPE_PUNCTUAL) {\n\t\t\t\t\t\t\t\tthis.setLTCDirectionalLight(wtm, cnt, directional._direction, camera._node.getPosition(), camera.farClip);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (directional.castShadows) {\n\t\t\t\t\t\t\t\tconst lightRenderData = directional.getRenderData(camera, 0);\n\t\t\t\t\t\t\t\tconst biases = directional._getUniformBiasValues(lightRenderData);\n\t\t\t\t\t\t\t\tthis.lightShadowMapId[cnt].setValue(lightRenderData.shadowBuffer);\n\t\t\t\t\t\t\t\tthis.lightShadowMatrixId[cnt].setValue(lightRenderData.shadowMatrix.data);\n\t\t\t\t\t\t\t\tthis.shadowMatrixPaletteId[cnt].setValue(directional._shadowMatrixPalette);\n\t\t\t\t\t\t\t\tthis.shadowCascadeDistancesId[cnt].setValue(directional._shadowCascadeDistances);\n\t\t\t\t\t\t\t\tthis.shadowCascadeCountId[cnt].setValue(directional.numCascades);\n\t\t\t\t\t\t\t\tthis.shadowCascadeBlendId[cnt].setValue(1 - directional.cascadeBlend);\n\t\t\t\t\t\t\t\tthis.lightShadowIntensity[cnt].setValue(directional.shadowIntensity);\n\t\t\t\t\t\t\t\tthis.lightSoftShadowParamsId[cnt].setValue(directional._softShadowParams);\n\t\t\t\t\t\t\t\tconst shadowRT = lightRenderData.shadowCamera.renderTarget;\n\t\t\t\t\t\t\t\tif (shadowRT) {\n\t\t\t\t\t\t\t\t\t\tthis.lightShadowSearchAreaId[cnt].setValue(directional.penumbraSize / lightRenderData.shadowCamera.renderTarget.width * lightRenderData.projectionCompensation);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst cameraParams = directional._shadowCameraParams;\n\t\t\t\t\t\t\t\tcameraParams.length = 4;\n\t\t\t\t\t\t\t\tcameraParams[0] = 0;\n\t\t\t\t\t\t\t\tcameraParams[1] = lightRenderData.shadowCamera._farClip;\n\t\t\t\t\t\t\t\tcameraParams[2] = lightRenderData.shadowCamera._nearClip;\n\t\t\t\t\t\t\t\tcameraParams[3] = 1;\n\t\t\t\t\t\t\t\tthis.lightCameraParamsId[cnt].setValue(cameraParams);\n\t\t\t\t\t\t\t\tconst params = directional._shadowRenderParams;\n\t\t\t\t\t\t\t\tparams.length = 4;\n\t\t\t\t\t\t\t\tparams[0] = directional._shadowResolution;\n\t\t\t\t\t\t\t\tparams[1] = biases.normalBias;\n\t\t\t\t\t\t\t\tparams[2] = biases.bias;\n\t\t\t\t\t\t\t\tparams[3] = 0;\n\t\t\t\t\t\t\t\tthis.lightShadowParamsId[cnt].setValue(params);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcnt++;\n\t\t\t\t}\n\t\t\t\treturn cnt;\n\t\t}\n\t\tsetLTCPositionalLight(wtm, cnt) {\n\t\t\t\tconst hWidth = wtm.transformVector(new Vec3(-0.5, 0, 0));\n\t\t\t\tthis.lightWidth[cnt][0] = hWidth.x;\n\t\t\t\tthis.lightWidth[cnt][1] = hWidth.y;\n\t\t\t\tthis.lightWidth[cnt][2] = hWidth.z;\n\t\t\t\tthis.lightWidthId[cnt].setValue(this.lightWidth[cnt]);\n\t\t\t\tconst hHeight = wtm.transformVector(new Vec3(0, 0, 0.5));\n\t\t\t\tthis.lightHeight[cnt][0] = hHeight.x;\n\t\t\t\tthis.lightHeight[cnt][1] = hHeight.y;\n\t\t\t\tthis.lightHeight[cnt][2] = hHeight.z;\n\t\t\t\tthis.lightHeightId[cnt].setValue(this.lightHeight[cnt]);\n\t\t}\n\t\tdispatchOmniLight(scope, omni, cnt) {\n\t\t\t\tconst wtm = omni._node.getWorldTransform();\n\t\t\t\tif (!this.lightColorId[cnt]) {\n\t\t\t\t\t\tthis._resolveLight(scope, cnt);\n\t\t\t\t}\n\t\t\t\tthis.lightRadiusId[cnt].setValue(omni.attenuationEnd);\n\t\t\t\tthis.lightColorId[cnt].setValue(omni._colorLinear);\n\t\t\t\twtm.getTranslation(omni._position);\n\t\t\t\tthis.lightPos[cnt][0] = omni._position.x;\n\t\t\t\tthis.lightPos[cnt][1] = omni._position.y;\n\t\t\t\tthis.lightPos[cnt][2] = omni._position.z;\n\t\t\t\tthis.lightPosId[cnt].setValue(this.lightPos[cnt]);\n\t\t\t\tif (omni.shape !== LIGHTSHAPE_PUNCTUAL) {\n\t\t\t\t\t\tthis.setLTCPositionalLight(wtm, cnt);\n\t\t\t\t}\n\t\t\t\tif (omni.castShadows) {\n\t\t\t\t\t\tconst lightRenderData = omni.getRenderData(null, 0);\n\t\t\t\t\t\tthis.lightShadowMapId[cnt].setValue(lightRenderData.shadowBuffer);\n\t\t\t\t\t\tconst biases = omni._getUniformBiasValues(lightRenderData);\n\t\t\t\t\t\tconst params = omni._shadowRenderParams;\n\t\t\t\t\t\tparams.length = 4;\n\t\t\t\t\t\tparams[0] = omni._shadowResolution;\n\t\t\t\t\t\tparams[1] = biases.normalBias;\n\t\t\t\t\t\tparams[2] = biases.bias;\n\t\t\t\t\t\tparams[3] = 1.0 / omni.attenuationEnd;\n\t\t\t\t\t\tthis.lightShadowParamsId[cnt].setValue(params);\n\t\t\t\t\t\tthis.lightShadowIntensity[cnt].setValue(omni.shadowIntensity);\n\t\t\t\t\t\tconst pixelsPerMeter = omni.penumbraSize / lightRenderData.shadowCamera.renderTarget.width;\n\t\t\t\t\t\tthis.lightShadowSearchAreaId[cnt].setValue(pixelsPerMeter);\n\t\t\t\t\t\tconst cameraParams = omni._shadowCameraParams;\n\t\t\t\t\t\tcameraParams.length = 4;\n\t\t\t\t\t\tcameraParams[0] = 0;\n\t\t\t\t\t\tcameraParams[1] = lightRenderData.shadowCamera._farClip;\n\t\t\t\t\t\tcameraParams[2] = lightRenderData.shadowCamera._nearClip;\n\t\t\t\t\t\tcameraParams[3] = 0;\n\t\t\t\t\t\tthis.lightCameraParamsId[cnt].setValue(cameraParams);\n\t\t\t\t}\n\t\t\t\tif (omni._cookie) {\n\t\t\t\t\t\tthis.lightCookieId[cnt].setValue(omni._cookie);\n\t\t\t\t\t\tthis.lightShadowMatrixId[cnt].setValue(wtm.data);\n\t\t\t\t\t\tthis.lightCookieIntId[cnt].setValue(omni.cookieIntensity);\n\t\t\t\t}\n\t\t}\n\t\tdispatchSpotLight(scope, spot, cnt) {\n\t\t\t\tconst wtm = spot._node.getWorldTransform();\n\t\t\t\tif (!this.lightColorId[cnt]) {\n\t\t\t\t\t\tthis._resolveLight(scope, cnt);\n\t\t\t\t}\n\t\t\t\tthis.lightInAngleId[cnt].setValue(spot._innerConeAngleCos);\n\t\t\t\tthis.lightOutAngleId[cnt].setValue(spot._outerConeAngleCos);\n\t\t\t\tthis.lightRadiusId[cnt].setValue(spot.attenuationEnd);\n\t\t\t\tthis.lightColorId[cnt].setValue(spot._colorLinear);\n\t\t\t\twtm.getTranslation(spot._position);\n\t\t\t\tthis.lightPos[cnt][0] = spot._position.x;\n\t\t\t\tthis.lightPos[cnt][1] = spot._position.y;\n\t\t\t\tthis.lightPos[cnt][2] = spot._position.z;\n\t\t\t\tthis.lightPosId[cnt].setValue(this.lightPos[cnt]);\n\t\t\t\tif (spot.shape !== LIGHTSHAPE_PUNCTUAL) {\n\t\t\t\t\t\tthis.setLTCPositionalLight(wtm, cnt);\n\t\t\t\t}\n\t\t\t\twtm.getY(spot._direction).mulScalar(-1);\n\t\t\t\tspot._direction.normalize();\n\t\t\t\tthis.lightDir[cnt][0] = spot._direction.x;\n\t\t\t\tthis.lightDir[cnt][1] = spot._direction.y;\n\t\t\t\tthis.lightDir[cnt][2] = spot._direction.z;\n\t\t\t\tthis.lightDirId[cnt].setValue(this.lightDir[cnt]);\n\t\t\t\tif (spot.castShadows) {\n\t\t\t\t\t\tconst lightRenderData = spot.getRenderData(null, 0);\n\t\t\t\t\t\tthis.lightShadowMapId[cnt].setValue(lightRenderData.shadowBuffer);\n\t\t\t\t\t\tthis.lightShadowMatrixId[cnt].setValue(lightRenderData.shadowMatrix.data);\n\t\t\t\t\t\tconst biases = spot._getUniformBiasValues(lightRenderData);\n\t\t\t\t\t\tconst params = spot._shadowRenderParams;\n\t\t\t\t\t\tparams.length = 4;\n\t\t\t\t\t\tparams[0] = spot._shadowResolution;\n\t\t\t\t\t\tparams[1] = biases.normalBias;\n\t\t\t\t\t\tparams[2] = biases.bias;\n\t\t\t\t\t\tparams[3] = 1.0 / spot.attenuationEnd;\n\t\t\t\t\t\tthis.lightShadowParamsId[cnt].setValue(params);\n\t\t\t\t\t\tthis.lightShadowIntensity[cnt].setValue(spot.shadowIntensity);\n\t\t\t\t\t\tconst pixelsPerMeter = spot.penumbraSize / lightRenderData.shadowCamera.renderTarget.width;\n\t\t\t\t\t\tconst fov = lightRenderData.shadowCamera._fov * math.DEG_TO_RAD;\n\t\t\t\t\t\tconst fovRatio = 1.0 / Math.tan(fov / 2.0);\n\t\t\t\t\t\tthis.lightShadowSearchAreaId[cnt].setValue(pixelsPerMeter * fovRatio);\n\t\t\t\t\t\tconst cameraParams = spot._shadowCameraParams;\n\t\t\t\t\t\tcameraParams.length = 4;\n\t\t\t\t\t\tcameraParams[0] = 0;\n\t\t\t\t\t\tcameraParams[1] = lightRenderData.shadowCamera._farClip;\n\t\t\t\t\t\tcameraParams[2] = lightRenderData.shadowCamera._nearClip;\n\t\t\t\t\t\tcameraParams[3] = 0;\n\t\t\t\t\t\tthis.lightCameraParamsId[cnt].setValue(cameraParams);\n\t\t\t\t}\n\t\t\t\tif (spot._cookie) {\n\t\t\t\t\t\tif (!spot.castShadows) {\n\t\t\t\t\t\t\t\tconst cookieMatrix = LightCamera.evalSpotCookieMatrix(spot);\n\t\t\t\t\t\t\t\tthis.lightShadowMatrixId[cnt].setValue(cookieMatrix.data);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.lightCookieId[cnt].setValue(spot._cookie);\n\t\t\t\t\t\tthis.lightCookieIntId[cnt].setValue(spot.cookieIntensity);\n\t\t\t\t\t\tif (spot._cookieTransform) {\n\t\t\t\t\t\t\t\tspot._cookieTransformUniform[0] = spot._cookieTransform.x;\n\t\t\t\t\t\t\t\tspot._cookieTransformUniform[1] = spot._cookieTransform.y;\n\t\t\t\t\t\t\t\tspot._cookieTransformUniform[2] = spot._cookieTransform.z;\n\t\t\t\t\t\t\t\tspot._cookieTransformUniform[3] = spot._cookieTransform.w;\n\t\t\t\t\t\t\t\tthis.lightCookieMatrixId[cnt].setValue(spot._cookieTransformUniform);\n\t\t\t\t\t\t\t\tspot._cookieOffsetUniform[0] = spot._cookieOffset.x;\n\t\t\t\t\t\t\t\tspot._cookieOffsetUniform[1] = spot._cookieOffset.y;\n\t\t\t\t\t\t\t\tthis.lightCookieOffsetId[cnt].setValue(spot._cookieOffsetUniform);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tdispatchLocalLights(sortedLights, mask, usedDirLights) {\n\t\t\t\tlet cnt = usedDirLights;\n\t\t\t\tconst scope = this.device.scope;\n\t\t\t\tconst omnis = sortedLights[LIGHTTYPE_OMNI];\n\t\t\t\tconst numOmnis = omnis.length;\n\t\t\t\tfor(let i = 0; i < numOmnis; i++){\n\t\t\t\t\t\tconst omni = omnis[i];\n\t\t\t\t\t\tif (!(omni.mask & mask)) continue;\n\t\t\t\t\t\tthis.dispatchOmniLight(scope, omni, cnt);\n\t\t\t\t\t\tcnt++;\n\t\t\t\t}\n\t\t\t\tconst spts = sortedLights[LIGHTTYPE_SPOT];\n\t\t\t\tconst numSpts = spts.length;\n\t\t\t\tfor(let i = 0; i < numSpts; i++){\n\t\t\t\t\t\tconst spot = spts[i];\n\t\t\t\t\t\tif (!(spot.mask & mask)) continue;\n\t\t\t\t\t\tthis.dispatchSpotLight(scope, spot, cnt);\n\t\t\t\t\t\tcnt++;\n\t\t\t\t}\n\t\t}\n\t\trenderForwardPrepareMaterials(camera, renderTarget, drawCalls, sortedLights, layer, pass) {\n\t\t\t\tconst fogParams = camera.fogParams ?? this.scene.fog;\n\t\t\t\tconst shaderParams = camera.shaderParams;\n\t\t\t\tshaderParams.fog = fogParams.type;\n\t\t\t\tshaderParams.srgbRenderTarget = renderTarget?.isColorBufferSrgb(0) ?? false;\n\t\t\t\tconst addCall = (drawCall, shaderInstance, isNewMaterial, lightMaskChanged)=>{\n\t\t\t\t\t\t_drawCallList.drawCalls.push(drawCall);\n\t\t\t\t\t\t_drawCallList.shaderInstances.push(shaderInstance);\n\t\t\t\t\t\t_drawCallList.isNewMaterial.push(isNewMaterial);\n\t\t\t\t\t\t_drawCallList.lightMaskChanged.push(lightMaskChanged);\n\t\t\t\t};\n\t\t\t\t_drawCallList.clear();\n\t\t\t\tconst device = this.device;\n\t\t\t\tconst scene = this.scene;\n\t\t\t\tconst clusteredLightingEnabled = scene.clusteredLightingEnabled;\n\t\t\t\tconst lightHash = layer?.getLightHash(clusteredLightingEnabled) ?? 0;\n\t\t\t\tlet prevMaterial = null, prevObjDefs, prevLightMask;\n\t\t\t\tconst drawCallsCount = drawCalls.length;\n\t\t\t\tfor(let i = 0; i < drawCallsCount; i++){\n\t\t\t\t\t\tconst drawCall = drawCalls[i];\n\t\t\t\t\t\tconst instancingData = drawCall.instancingData;\n\t\t\t\t\t\tif (instancingData && instancingData.count <= 0) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdrawCall.ensureMaterial(device);\n\t\t\t\t\t\tconst material = drawCall.material;\n\t\t\t\t\t\tconst objDefs = drawCall._shaderDefs;\n\t\t\t\t\t\tconst lightMask = drawCall.mask;\n\t\t\t\t\t\tif (material && material === prevMaterial && objDefs !== prevObjDefs) {\n\t\t\t\t\t\t\t\tprevMaterial = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (material !== prevMaterial) {\n\t\t\t\t\t\t\t\tthis._materialSwitches++;\n\t\t\t\t\t\t\t\tmaterial._scene = scene;\n\t\t\t\t\t\t\t\tif (material.dirty) {\n\t\t\t\t\t\t\t\t\t\tmaterial.updateUniforms(device, scene);\n\t\t\t\t\t\t\t\t\t\tmaterial.dirty = false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst shaderInstance = drawCall.getShaderInstance(pass, lightHash, scene, shaderParams, this.viewUniformFormat, this.viewBindGroupFormat, sortedLights);\n\t\t\t\t\t\taddCall(drawCall, shaderInstance, material !== prevMaterial, !prevMaterial || lightMask !== prevLightMask);\n\t\t\t\t\t\tprevMaterial = material;\n\t\t\t\t\t\tprevObjDefs = objDefs;\n\t\t\t\t\t\tprevLightMask = lightMask;\n\t\t\t\t}\n\t\t\t\treturn _drawCallList;\n\t\t}\n\t\trenderForwardInternal(camera, preparedCalls, sortedLights, pass, drawCallback, flipFaces, viewBindGroups) {\n\t\t\t\tconst device = this.device;\n\t\t\t\tconst scene = this.scene;\n\t\t\t\tconst passFlag = 1 << pass;\n\t\t\t\tconst flipFactor = flipFaces ? -1 : 1;\n\t\t\t\tconst clusteredLightingEnabled = scene.clusteredLightingEnabled;\n\t\t\t\tconst viewList = camera.xr?.session && camera.xr.views.list.length ? camera.xr.views.list : null;\n\t\t\t\tconst preparedCallsCount = preparedCalls.drawCalls.length;\n\t\t\t\tfor(let i = 0; i < preparedCallsCount; i++){\n\t\t\t\t\t\tconst drawCall = preparedCalls.drawCalls[i];\n\t\t\t\t\t\tconst newMaterial = preparedCalls.isNewMaterial[i];\n\t\t\t\t\t\tconst lightMaskChanged = preparedCalls.lightMaskChanged[i];\n\t\t\t\t\t\tconst shaderInstance = preparedCalls.shaderInstances[i];\n\t\t\t\t\t\tconst material = drawCall.material;\n\t\t\t\t\t\tconst lightMask = drawCall.mask;\n\t\t\t\t\t\tif (shaderInstance.shader.failed) continue;\n\t\t\t\t\t\tif (newMaterial) {\n\t\t\t\t\t\t\t\tconst asyncCompile = false;\n\t\t\t\t\t\t\t\tdevice.setShader(shaderInstance.shader, asyncCompile);\n\t\t\t\t\t\t\t\tmaterial.setParameters(device);\n\t\t\t\t\t\t\t\tif (lightMaskChanged) {\n\t\t\t\t\t\t\t\t\t\tconst usedDirLights = this.dispatchDirectLights(sortedLights[LIGHTTYPE_DIRECTIONAL], lightMask, camera);\n\t\t\t\t\t\t\t\t\t\tif (!clusteredLightingEnabled) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.dispatchLocalLights(sortedLights, lightMask, usedDirLights);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.alphaTestId.setValue(material.alphaTest);\n\t\t\t\t\t\t\t\tdevice.setBlendState(material.blendState);\n\t\t\t\t\t\t\t\tdevice.setDepthState(material.depthState);\n\t\t\t\t\t\t\t\tdevice.setAlphaToCoverage(material.alphaToCoverage);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.setupCullMode(camera._cullFaces, flipFactor, drawCall);\n\t\t\t\t\t\tconst stencilFront = drawCall.stencilFront ?? material.stencilFront;\n\t\t\t\t\t\tconst stencilBack = drawCall.stencilBack ?? material.stencilBack;\n\t\t\t\t\t\tdevice.setStencilState(stencilFront, stencilBack);\n\t\t\t\t\t\tdrawCall.setParameters(device, passFlag);\n\t\t\t\t\t\tdevice.scope.resolve('meshInstanceId').setValue(drawCall.id);\n\t\t\t\t\t\tconst mesh = drawCall.mesh;\n\t\t\t\t\t\tthis.setVertexBuffers(device, mesh);\n\t\t\t\t\t\tthis.setMorphing(device, drawCall.morphInstance);\n\t\t\t\t\t\tthis.setSkinning(device, drawCall);\n\t\t\t\t\t\tconst instancingData = drawCall.instancingData;\n\t\t\t\t\t\tif (instancingData) {\n\t\t\t\t\t\t\t\tdevice.setVertexBuffer(instancingData.vertexBuffer);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.setMeshInstanceMatrices(drawCall, true);\n\t\t\t\t\t\tthis.setupMeshUniformBuffers(shaderInstance);\n\t\t\t\t\t\tconst style = drawCall.renderStyle;\n\t\t\t\t\t\tconst indexBuffer = mesh.indexBuffer[style];\n\t\t\t\t\t\tdrawCallback?.(drawCall, i);\n\t\t\t\t\t\tconst indirectData = drawCall.getDrawCommands(camera);\n\t\t\t\t\t\tif (viewList) {\n\t\t\t\t\t\t\t\tfor(let v = 0; v < viewList.length; v++){\n\t\t\t\t\t\t\t\t\t\tconst view = viewList[v];\n\t\t\t\t\t\t\t\t\t\tdevice.setViewport(view.viewport.x, view.viewport.y, view.viewport.z, view.viewport.w);\n\t\t\t\t\t\t\t\t\t\tif (device.supportsUniformBuffers) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst viewBindGroup = viewBindGroups[v];\n\t\t\t\t\t\t\t\t\t\t\t\tdevice.setBindGroup(BINDGROUP_VIEW, viewBindGroup);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.setupViewUniforms(view, v);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tconst first = v === 0;\n\t\t\t\t\t\t\t\t\t\tconst last = v === viewList.length - 1;\n\t\t\t\t\t\t\t\t\t\tdevice.draw(mesh.primitive[style], indexBuffer, instancingData?.count, indirectData, first, last);\n\t\t\t\t\t\t\t\t\t\tthis._forwardDrawCalls++;\n\t\t\t\t\t\t\t\t\t\tif (drawCall.instancingData) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._instancedDrawCalls++;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tdevice.draw(mesh.primitive[style], indexBuffer, instancingData?.count, indirectData);\n\t\t\t\t\t\t\t\tthis._forwardDrawCalls++;\n\t\t\t\t\t\t\t\tif (drawCall.instancingData) {\n\t\t\t\t\t\t\t\t\t\tthis._instancedDrawCalls++;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (i < preparedCallsCount - 1 && !preparedCalls.isNewMaterial[i + 1]) {\n\t\t\t\t\t\t\t\tmaterial.setParameters(device, drawCall.parameters);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\trenderForward(camera, renderTarget, allDrawCalls, sortedLights, pass, drawCallback, layer, flipFaces, viewBindGroups) {\n\t\t\t\tconst preparedCalls = this.renderForwardPrepareMaterials(camera, renderTarget, allDrawCalls, sortedLights, layer, pass);\n\t\t\t\tthis.renderForwardInternal(camera, preparedCalls, sortedLights, pass, drawCallback, flipFaces, viewBindGroups);\n\t\t\t\t_drawCallList.clear();\n\t\t}\n\t\trenderForwardLayer(camera, renderTarget, layer, transparent, shaderPass, viewBindGroups, options = {}) {\n\t\t\t\tconst { scene, device } = this;\n\t\t\t\tconst clusteredLightingEnabled = scene.clusteredLightingEnabled;\n\t\t\t\tthis.setupViewport(camera, renderTarget);\n\t\t\t\tlet visible, splitLights;\n\t\t\t\tif (layer) {\n\t\t\t\t\t\tlayer.sortVisible(camera, transparent);\n\t\t\t\t\t\tconst culledInstances = layer.getCulledInstances(camera);\n\t\t\t\t\t\tvisible = transparent ? culledInstances.transparent : culledInstances.opaque;\n\t\t\t\t\t\tscene.immediate.onPreRenderLayer(layer, visible, transparent);\n\t\t\t\t\t\tif (layer.requiresLightCube) {\n\t\t\t\t\t\t\t\tthis.lightCube.update(scene.ambientLight, layer._lights);\n\t\t\t\t\t\t\t\tthis.constantLightCube.setValue(this.lightCube.colors);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsplitLights = layer.splitLights;\n\t\t\t\t} else {\n\t\t\t\t\t\tvisible = options.meshInstances;\n\t\t\t\t\t\tsplitLights = options.splitLights ?? _noLights;\n\t\t\t\t}\n\t\t\t\tif (clusteredLightingEnabled) {\n\t\t\t\t\t\tconst lightClusters = options.lightClusters ?? this.worldClustersAllocator.empty;\n\t\t\t\t\t\tlightClusters.activate();\n\t\t\t\t\t\tif (layer) {\n\t\t\t\t\t\t\t\tif (!this.clustersDebugRendered && scene.lighting.debugLayer === layer.id) {\n\t\t\t\t\t\t\t\t\t\tthis.clustersDebugRendered = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tscene._activeCamera = camera;\n\t\t\t\tconst fogParams = camera.fogParams ?? this.scene.fog;\n\t\t\t\tthis.setFogConstants(fogParams);\n\t\t\t\tconst viewList = this.setCameraUniforms(camera, renderTarget);\n\t\t\t\tif (device.supportsUniformBuffers) {\n\t\t\t\t\t\tthis.setupViewUniformBuffers(viewBindGroups, this.viewUniformFormat, this.viewBindGroupFormat, viewList);\n\t\t\t\t}\n\t\t\t\tconst clearColor = options.clearColor ?? false;\n\t\t\t\tconst clearDepth = options.clearDepth ?? false;\n\t\t\t\tconst clearStencil = options.clearStencil ?? false;\n\t\t\t\tif (clearColor || clearDepth || clearStencil) {\n\t\t\t\t\t\tthis.clear(camera, clearColor, clearDepth, clearStencil);\n\t\t\t\t}\n\t\t\t\tconst flipFaces = !!(camera._flipFaces ^ renderTarget?.flipY);\n\t\t\t\tconst forwardDrawCalls = this._forwardDrawCalls;\n\t\t\t\tthis.renderForward(camera, renderTarget, visible, splitLights, shaderPass, null, layer, flipFaces, viewBindGroups);\n\t\t\t\tif (layer) {\n\t\t\t\t\t\tlayer._forwardDrawCalls += this._forwardDrawCalls - forwardDrawCalls;\n\t\t\t\t}\n\t\t}\n\t\tsetFogConstants(fogParams) {\n\t\t\t\tif (fogParams.type !== FOG_NONE) {\n\t\t\t\t\t\ttmpColor$1.linear(fogParams.color);\n\t\t\t\t\t\tconst fogUniform = this.fogColor;\n\t\t\t\t\t\tfogUniform[0] = tmpColor$1.r;\n\t\t\t\t\t\tfogUniform[1] = tmpColor$1.g;\n\t\t\t\t\t\tfogUniform[2] = tmpColor$1.b;\n\t\t\t\t\t\tthis.fogColorId.setValue(fogUniform);\n\t\t\t\t\t\tif (fogParams.type === FOG_LINEAR) {\n\t\t\t\t\t\t\t\tthis.fogStartId.setValue(fogParams.start);\n\t\t\t\t\t\t\t\tthis.fogEndId.setValue(fogParams.end);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.fogDensityId.setValue(fogParams.density);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tsetSceneConstants() {\n\t\t\t\tconst scene = this.scene;\n\t\t\t\tthis.dispatchGlobalLights(scene);\n\t\t\t\tconst device = this.device;\n\t\t\t\tthis._screenSize[0] = device.width;\n\t\t\t\tthis._screenSize[1] = device.height;\n\t\t\t\tthis._screenSize[2] = 1 / device.width;\n\t\t\t\tthis._screenSize[3] = 1 / device.height;\n\t\t\t\tthis.screenSizeId.setValue(this._screenSize);\n\t\t\t\tthis.pcssDiskSamplesId.setValue(this.pcssDiskSamples);\n\t\t\t\tthis.pcssSphereSamplesId.setValue(this.pcssSphereSamples);\n\t\t}\n\t\tbuildFrameGraph(frameGraph, layerComposition) {\n\t\t\t\tconst scene = this.scene;\n\t\t\t\tframeGraph.reset();\n\t\t\t\tif (scene.clusteredLightingEnabled) {\n\t\t\t\t\t\tconst { shadowsEnabled, cookiesEnabled } = scene.lighting;\n\t\t\t\t\t\tthis._renderPassUpdateClustered.update(frameGraph, shadowsEnabled, cookiesEnabled, this.lights, this.localLights);\n\t\t\t\t\t\tframeGraph.addRenderPass(this._renderPassUpdateClustered);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._shadowRendererLocal.buildNonClusteredRenderPasses(frameGraph, this.localLights);\n\t\t\t\t}\n\t\t\t\tlet startIndex = 0;\n\t\t\t\tlet newStart = true;\n\t\t\t\tlet renderTarget = null;\n\t\t\t\tconst renderActions = layerComposition._renderActions;\n\t\t\t\tfor(let i = startIndex; i < renderActions.length; i++){\n\t\t\t\t\t\tconst renderAction = renderActions[i];\n\t\t\t\t\t\tconst { layer, camera } = renderAction;\n\t\t\t\t\t\tif (renderAction.useCameraPasses) {\n\t\t\t\t\t\t\t\tcamera.camera.renderPasses.forEach((renderPass)=>{\n\t\t\t\t\t\t\t\t\t\tframeGraph.addRenderPass(renderPass);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst isDepthLayer = layer.id === LAYERID_DEPTH;\n\t\t\t\t\t\t\t\tconst isGrabPass = isDepthLayer && (camera.renderSceneColorMap || camera.renderSceneDepthMap);\n\t\t\t\t\t\t\t\tif (newStart) {\n\t\t\t\t\t\t\t\t\t\tnewStart = false;\n\t\t\t\t\t\t\t\t\t\tstartIndex = i;\n\t\t\t\t\t\t\t\t\t\trenderTarget = renderAction.renderTarget;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst nextRenderAction = renderActions[i + 1];\n\t\t\t\t\t\t\t\tconst isNextLayerDepth = nextRenderAction ? !nextRenderAction.useCameraPasses && nextRenderAction.layer.id === LAYERID_DEPTH : false;\n\t\t\t\t\t\t\t\tconst isNextLayerGrabPass = isNextLayerDepth && (camera.renderSceneColorMap || camera.renderSceneDepthMap);\n\t\t\t\t\t\t\t\tconst nextNeedDirShadows = nextRenderAction ? nextRenderAction.firstCameraUse && this.cameraDirShadowLights.has(nextRenderAction.camera.camera) : false;\n\t\t\t\t\t\t\t\tif (!nextRenderAction || nextRenderAction.renderTarget !== renderTarget || nextNeedDirShadows || isNextLayerGrabPass || isGrabPass) {\n\t\t\t\t\t\t\t\t\t\tconst isDepthOnly = isDepthLayer && startIndex === i;\n\t\t\t\t\t\t\t\t\t\tif (!isDepthOnly) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.addMainRenderPass(frameGraph, layerComposition, renderTarget, startIndex, i);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (isDepthLayer) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (camera.renderSceneColorMap) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst colorGrabPass = camera.camera.renderPassColorGrab;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolorGrabPass.source = camera.renderTarget;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tframeGraph.addRenderPass(colorGrabPass);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tif (camera.renderSceneDepthMap) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tframeGraph.addRenderPass(camera.camera.renderPassDepthGrab);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (renderAction.triggerPostprocess && camera?.onPostprocessing) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst renderPass = new RenderPassPostprocessing(this.device, this, renderAction);\n\t\t\t\t\t\t\t\t\t\t\t\tframeGraph.addRenderPass(renderPass);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tnewStart = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\taddMainRenderPass(frameGraph, layerComposition, renderTarget, startIndex, endIndex) {\n\t\t\t\tconst renderPass = new RenderPassForward(this.device, layerComposition, this.scene, this);\n\t\t\t\trenderPass.init(renderTarget);\n\t\t\t\tconst renderActions = layerComposition._renderActions;\n\t\t\t\tfor(let i = startIndex; i <= endIndex; i++){\n\t\t\t\t\t\trenderPass.addRenderAction(renderActions[i]);\n\t\t\t\t}\n\t\t\t\tframeGraph.addRenderPass(renderPass);\n\t\t}\n\t\tupdate(comp) {\n\t\t\t\tthis.frameUpdate();\n\t\t\t\tthis.shadowRenderer.frameUpdate();\n\t\t\t\tthis.scene._updateSkyMesh();\n\t\t\t\tthis.updateLayerComposition(comp);\n\t\t\t\tthis.collectLights(comp);\n\t\t\t\tthis.beginFrame(comp);\n\t\t\t\tthis.setSceneConstants();\n\t\t\t\tthis.gsplatDirector?.update(comp);\n\t\t\t\tthis.cullComposition(comp);\n\t\t\t\tthis.gpuUpdate(this.processingMeshInstances);\n\t\t}\n}\n\nlet layerCounter = 0;\nconst lightKeys = [];\nconst _tempMaterials = new Set();\nfunction sortManual(drawCallA, drawCallB) {\n\t\treturn drawCallA.drawOrder - drawCallB.drawOrder;\n}\nfunction sortMaterialMesh(drawCallA, drawCallB) {\n\t\tconst keyA = drawCallA._sortKeyForward;\n\t\tconst keyB = drawCallB._sortKeyForward;\n\t\tif (keyA === keyB) {\n\t\t\t\treturn drawCallB.mesh.id - drawCallA.mesh.id;\n\t\t}\n\t\treturn keyB - keyA;\n}\nfunction sortBackToFront(drawCallA, drawCallB) {\n\t\treturn drawCallB._sortKeyDynamic - drawCallA._sortKeyDynamic;\n}\nfunction sortFrontToBack(drawCallA, drawCallB) {\n\t\treturn drawCallA._sortKeyDynamic - drawCallB._sortKeyDynamic;\n}\nconst sortCallbacks = [\n\t\tnull,\n\t\tsortManual,\n\t\tsortMaterialMesh,\n\t\tsortBackToFront,\n\t\tsortFrontToBack\n];\nclass CulledInstances {\n\t\tconstructor(){\n\t\t\t\tthis.opaque = [];\n\t\t\t\tthis.transparent = [];\n\t\t}\n}\nclass Layer {\n\t\tconstructor(options = {}){\n\t\t\t\tthis.meshInstances = [];\n\t\t\t\tthis.meshInstancesSet = new Set();\n\t\t\t\tthis.shadowCasters = [];\n\t\t\t\tthis.shadowCastersSet = new Set();\n\t\t\t\tthis._visibleInstances = new WeakMap();\n\t\t\t\tthis._lights = [];\n\t\t\t\tthis._lightsSet = new Set();\n\t\t\t\tthis._clusteredLightsSet = new Set();\n\t\t\t\tthis._splitLights = [\n\t\t\t\t\t\t[],\n\t\t\t\t\t\t[],\n\t\t\t\t\t\t[]\n\t\t\t\t];\n\t\t\t\tthis._splitLightsDirty = true;\n\t\t\t\tthis.requiresLightCube = false;\n\t\t\t\tthis.cameras = [];\n\t\t\t\tthis.camerasSet = new Set();\n\t\t\t\tthis.gsplatPlacements = [];\n\t\t\t\tthis.gsplatPlacementsDirty = true;\n\t\t\t\tthis._dirtyComposition = false;\n\t\t\t\tif (options.id !== undefined) {\n\t\t\t\t\t\tthis.id = options.id;\n\t\t\t\t\t\tlayerCounter = Math.max(this.id + 1, layerCounter);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.id = layerCounter++;\n\t\t\t\t}\n\t\t\t\tthis.name = options.name;\n\t\t\t\tthis._enabled = options.enabled ?? true;\n\t\t\t\tthis._refCounter = this._enabled ? 1 : 0;\n\t\t\t\tthis.opaqueSortMode = options.opaqueSortMode ?? SORTMODE_MATERIALMESH;\n\t\t\t\tthis.transparentSortMode = options.transparentSortMode ?? SORTMODE_BACK2FRONT;\n\t\t\t\tif (options.renderTarget) {\n\t\t\t\t\t\tthis.renderTarget = options.renderTarget;\n\t\t\t\t}\n\t\t\t\tthis._clearColorBuffer = !!options.clearColorBuffer;\n\t\t\t\tthis._clearDepthBuffer = !!options.clearDepthBuffer;\n\t\t\t\tthis._clearStencilBuffer = !!options.clearStencilBuffer;\n\t\t\t\tthis.onEnable = options.onEnable;\n\t\t\t\tthis.onDisable = options.onDisable;\n\t\t\t\tif (this._enabled && this.onEnable) {\n\t\t\t\t\t\tthis.onEnable();\n\t\t\t\t}\n\t\t\t\tthis.customSortCallback = null;\n\t\t\t\tthis.customCalculateSortValues = null;\n\t\t\t\tthis._lightHash = 0;\n\t\t\t\tthis._lightHashDirty = false;\n\t\t\t\tthis._lightIdHash = 0;\n\t\t\t\tthis._lightIdHashDirty = false;\n\t\t\t\tthis._shaderVersion = -1;\n\t\t}\n\t\tset enabled(val) {\n\t\t\t\tif (val !== this._enabled) {\n\t\t\t\t\t\tthis._dirtyComposition = true;\n\t\t\t\t\t\tthis.gsplatPlacementsDirty = true;\n\t\t\t\t\t\tthis._enabled = val;\n\t\t\t\t\t\tif (val) {\n\t\t\t\t\t\t\t\tthis.incrementCounter();\n\t\t\t\t\t\t\t\tif (this.onEnable) this.onEnable();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.decrementCounter();\n\t\t\t\t\t\t\t\tif (this.onDisable) this.onDisable();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget enabled() {\n\t\t\t\treturn this._enabled;\n\t\t}\n\t\tset clearColorBuffer(val) {\n\t\t\t\tthis._clearColorBuffer = val;\n\t\t\t\tthis._dirtyComposition = true;\n\t\t}\n\t\tget clearColorBuffer() {\n\t\t\t\treturn this._clearColorBuffer;\n\t\t}\n\t\tset clearDepthBuffer(val) {\n\t\t\t\tthis._clearDepthBuffer = val;\n\t\t\t\tthis._dirtyComposition = true;\n\t\t}\n\t\tget clearDepthBuffer() {\n\t\t\t\treturn this._clearDepthBuffer;\n\t\t}\n\t\tset clearStencilBuffer(val) {\n\t\t\t\tthis._clearStencilBuffer = val;\n\t\t\t\tthis._dirtyComposition = true;\n\t\t}\n\t\tget clearStencilBuffer() {\n\t\t\t\treturn this._clearStencilBuffer;\n\t\t}\n\t\tget hasClusteredLights() {\n\t\t\t\treturn this._clusteredLightsSet.size > 0;\n\t\t}\n\t\tget clusteredLightsSet() {\n\t\t\t\treturn this._clusteredLightsSet;\n\t\t}\n\t\tincrementCounter() {\n\t\t\t\tif (this._refCounter === 0) {\n\t\t\t\t\t\tthis._enabled = true;\n\t\t\t\t\t\tif (this.onEnable) this.onEnable();\n\t\t\t\t}\n\t\t\t\tthis._refCounter++;\n\t\t}\n\t\tdecrementCounter() {\n\t\t\t\tif (this._refCounter === 1) {\n\t\t\t\t\t\tthis._enabled = false;\n\t\t\t\t\t\tif (this.onDisable) this.onDisable();\n\t\t\t\t} else if (this._refCounter === 0) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._refCounter--;\n\t\t}\n\t\taddGSplatPlacement(placement) {\n\t\t\t\tif (!this.gsplatPlacements.includes(placement)) {\n\t\t\t\t\t\tthis.gsplatPlacements.push(placement);\n\t\t\t\t\t\tthis.gsplatPlacementsDirty = true;\n\t\t\t\t}\n\t\t}\n\t\tremoveGSplatPlacement(placement) {\n\t\t\t\tconst index = this.gsplatPlacements.indexOf(placement);\n\t\t\t\tif (index >= 0) {\n\t\t\t\t\t\tthis.gsplatPlacements.splice(index, 1);\n\t\t\t\t\t\tthis.gsplatPlacementsDirty = true;\n\t\t\t\t}\n\t\t}\n\t\taddMeshInstances(meshInstances, skipShadowCasters) {\n\t\t\t\tconst destMeshInstances = this.meshInstances;\n\t\t\t\tconst destMeshInstancesSet = this.meshInstancesSet;\n\t\t\t\tfor(let i = 0; i < meshInstances.length; i++){\n\t\t\t\t\t\tconst mi = meshInstances[i];\n\t\t\t\t\t\tif (!destMeshInstancesSet.has(mi)) {\n\t\t\t\t\t\t\t\tdestMeshInstances.push(mi);\n\t\t\t\t\t\t\t\tdestMeshInstancesSet.add(mi);\n\t\t\t\t\t\t\t\t_tempMaterials.add(mi.material);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!skipShadowCasters) {\n\t\t\t\t\t\tthis.addShadowCasters(meshInstances);\n\t\t\t\t}\n\t\t\t\tif (_tempMaterials.size > 0) {\n\t\t\t\t\t\tconst sceneShaderVer = this._shaderVersion;\n\t\t\t\t\t\t_tempMaterials.forEach((mat)=>{\n\t\t\t\t\t\t\t\tif (sceneShaderVer >= 0 && mat._shaderVersion !== sceneShaderVer) {\n\t\t\t\t\t\t\t\t\t\tif (mat.getShaderVariant !== Material.prototype.getShaderVariant) {\n\t\t\t\t\t\t\t\t\t\t\t\tmat.clearVariants();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tmat._shaderVersion = sceneShaderVer;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t\t_tempMaterials.clear();\n\t\t\t\t}\n\t\t}\n\t\tremoveMeshInstances(meshInstances, skipShadowCasters) {\n\t\t\t\tconst destMeshInstances = this.meshInstances;\n\t\t\t\tconst destMeshInstancesSet = this.meshInstancesSet;\n\t\t\t\tfor(let i = 0; i < meshInstances.length; i++){\n\t\t\t\t\t\tconst mi = meshInstances[i];\n\t\t\t\t\t\tif (destMeshInstancesSet.has(mi)) {\n\t\t\t\t\t\t\t\tdestMeshInstancesSet.delete(mi);\n\t\t\t\t\t\t\t\tconst j = destMeshInstances.indexOf(mi);\n\t\t\t\t\t\t\t\tif (j >= 0) {\n\t\t\t\t\t\t\t\t\t\tdestMeshInstances.splice(j, 1);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!skipShadowCasters) {\n\t\t\t\t\t\tthis.removeShadowCasters(meshInstances);\n\t\t\t\t}\n\t\t}\n\t\taddShadowCasters(meshInstances) {\n\t\t\t\tconst shadowCasters = this.shadowCasters;\n\t\t\t\tconst shadowCastersSet = this.shadowCastersSet;\n\t\t\t\tfor(let i = 0; i < meshInstances.length; i++){\n\t\t\t\t\t\tconst mi = meshInstances[i];\n\t\t\t\t\t\tif (mi.castShadow && !shadowCastersSet.has(mi)) {\n\t\t\t\t\t\t\t\tshadowCastersSet.add(mi);\n\t\t\t\t\t\t\t\tshadowCasters.push(mi);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tremoveShadowCasters(meshInstances) {\n\t\t\t\tconst shadowCasters = this.shadowCasters;\n\t\t\t\tconst shadowCastersSet = this.shadowCastersSet;\n\t\t\t\tfor(let i = 0; i < meshInstances.length; i++){\n\t\t\t\t\t\tconst mi = meshInstances[i];\n\t\t\t\t\t\tif (shadowCastersSet.has(mi)) {\n\t\t\t\t\t\t\t\tshadowCastersSet.delete(mi);\n\t\t\t\t\t\t\t\tconst j = shadowCasters.indexOf(mi);\n\t\t\t\t\t\t\t\tif (j >= 0) {\n\t\t\t\t\t\t\t\t\t\tshadowCasters.splice(j, 1);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tclearMeshInstances(skipShadowCasters = false) {\n\t\t\t\tthis.meshInstances.length = 0;\n\t\t\t\tthis.meshInstancesSet.clear();\n\t\t\t\tif (!skipShadowCasters) {\n\t\t\t\t\t\tthis.shadowCasters.length = 0;\n\t\t\t\t\t\tthis.shadowCastersSet.clear();\n\t\t\t\t}\n\t\t}\n\t\tmarkLightsDirty() {\n\t\t\t\tthis._lightHashDirty = true;\n\t\t\t\tthis._lightIdHashDirty = true;\n\t\t\t\tthis._splitLightsDirty = true;\n\t\t}\n\t\thasLight(light) {\n\t\t\t\treturn this._lightsSet.has(light);\n\t\t}\n\t\taddLight(light) {\n\t\t\t\tconst l = light.light;\n\t\t\t\tif (!this._lightsSet.has(l)) {\n\t\t\t\t\t\tthis._lightsSet.add(l);\n\t\t\t\t\t\tthis._lights.push(l);\n\t\t\t\t\t\tthis.markLightsDirty();\n\t\t\t\t}\n\t\t\t\tif (l.type !== LIGHTTYPE_DIRECTIONAL) {\n\t\t\t\t\t\tthis._clusteredLightsSet.add(l);\n\t\t\t\t}\n\t\t}\n\t\tremoveLight(light) {\n\t\t\t\tconst l = light.light;\n\t\t\t\tif (this._lightsSet.has(l)) {\n\t\t\t\t\t\tthis._lightsSet.delete(l);\n\t\t\t\t\t\tthis._lights.splice(this._lights.indexOf(l), 1);\n\t\t\t\t\t\tthis.markLightsDirty();\n\t\t\t\t}\n\t\t\t\tif (l.type !== LIGHTTYPE_DIRECTIONAL) {\n\t\t\t\t\t\tthis._clusteredLightsSet.delete(l);\n\t\t\t\t}\n\t\t}\n\t\tclearLights() {\n\t\t\t\tthis._lightsSet.forEach((light)=>light.removeLayer(this));\n\t\t\t\tthis._lightsSet.clear();\n\t\t\t\tthis._clusteredLightsSet.clear();\n\t\t\t\tthis._lights.length = 0;\n\t\t\t\tthis.markLightsDirty();\n\t\t}\n\t\tget splitLights() {\n\t\t\t\tif (this._splitLightsDirty) {\n\t\t\t\t\t\tthis._splitLightsDirty = false;\n\t\t\t\t\t\tconst splitLights = this._splitLights;\n\t\t\t\t\t\tfor(let i = 0; i < splitLights.length; i++){\n\t\t\t\t\t\t\t\tsplitLights[i].length = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst lights = this._lights;\n\t\t\t\t\t\tfor(let i = 0; i < lights.length; i++){\n\t\t\t\t\t\t\t\tconst light = lights[i];\n\t\t\t\t\t\t\t\tif (light.enabled) {\n\t\t\t\t\t\t\t\t\t\tsplitLights[light._type].push(light);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor(let i = 0; i < splitLights.length; i++){\n\t\t\t\t\t\t\t\tsplitLights[i].sort((a, b)=>a.key - b.key);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this._splitLights;\n\t\t}\n\t\tevaluateLightHash(localLights, directionalLights, useIds) {\n\t\t\t\tlet hash = 0;\n\t\t\t\tconst lights = this._lights;\n\t\t\t\tfor(let i = 0; i < lights.length; i++){\n\t\t\t\t\t\tconst isLocalLight = lights[i].type !== LIGHTTYPE_DIRECTIONAL;\n\t\t\t\t\t\tif (localLights && isLocalLight || directionalLights && !isLocalLight) {\n\t\t\t\t\t\t\t\tlightKeys.push(useIds ? lights[i].id : lights[i].key);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (lightKeys.length > 0) {\n\t\t\t\t\t\tlightKeys.sort();\n\t\t\t\t\t\thash = hash32Fnv1a(lightKeys);\n\t\t\t\t\t\tlightKeys.length = 0;\n\t\t\t\t}\n\t\t\t\treturn hash;\n\t\t}\n\t\tgetLightHash(isClustered) {\n\t\t\t\tif (this._lightHashDirty) {\n\t\t\t\t\t\tthis._lightHashDirty = false;\n\t\t\t\t\t\tthis._lightHash = this.evaluateLightHash(!isClustered, true, false);\n\t\t\t\t}\n\t\t\t\treturn this._lightHash;\n\t\t}\n\t\tgetLightIdHash() {\n\t\t\t\tif (this._lightIdHashDirty) {\n\t\t\t\t\t\tthis._lightIdHashDirty = false;\n\t\t\t\t\t\tthis._lightIdHash = this.evaluateLightHash(true, false, true);\n\t\t\t\t}\n\t\t\t\treturn this._lightIdHash;\n\t\t}\n\t\taddCamera(camera) {\n\t\t\t\tif (!this.camerasSet.has(camera.camera)) {\n\t\t\t\t\t\tthis.camerasSet.add(camera.camera);\n\t\t\t\t\t\tthis.cameras.push(camera);\n\t\t\t\t\t\tthis._dirtyComposition = true;\n\t\t\t\t}\n\t\t}\n\t\tremoveCamera(camera) {\n\t\t\t\tif (this.camerasSet.has(camera.camera)) {\n\t\t\t\t\t\tthis.camerasSet.delete(camera.camera);\n\t\t\t\t\t\tconst index = this.cameras.indexOf(camera);\n\t\t\t\t\t\tthis.cameras.splice(index, 1);\n\t\t\t\t\t\tthis._dirtyComposition = true;\n\t\t\t\t}\n\t\t}\n\t\tclearCameras() {\n\t\t\t\tthis.cameras.length = 0;\n\t\t\t\tthis.camerasSet.clear();\n\t\t\t\tthis._dirtyComposition = true;\n\t\t}\n\t\t_calculateSortDistances(drawCalls, camPos, camFwd) {\n\t\t\t\tconst count = drawCalls.length;\n\t\t\t\tconst { x: px, y: py, z: pz } = camPos;\n\t\t\t\tconst { x: fx, y: fy, z: fz } = camFwd;\n\t\t\t\tfor(let i = 0; i < count; i++){\n\t\t\t\t\t\tconst drawCall = drawCalls[i];\n\t\t\t\t\t\tlet zDist;\n\t\t\t\t\t\tif (drawCall.calculateSortDistance) {\n\t\t\t\t\t\t\t\tzDist = drawCall.calculateSortDistance(drawCall, camPos, camFwd);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst meshPos = drawCall.aabb.center;\n\t\t\t\t\t\t\t\tzDist = (meshPos.x - px) * fx + (meshPos.y - py) * fy + (meshPos.z - pz) * fz;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst bucket = drawCall._drawBucket * 1e9;\n\t\t\t\t\t\tdrawCall._sortKeyDynamic = bucket + zDist;\n\t\t\t\t}\n\t\t}\n\t\tgetCulledInstances(camera) {\n\t\t\t\tlet instances = this._visibleInstances.get(camera);\n\t\t\t\tif (!instances) {\n\t\t\t\t\t\tinstances = new CulledInstances();\n\t\t\t\t\t\tthis._visibleInstances.set(camera, instances);\n\t\t\t\t}\n\t\t\t\treturn instances;\n\t\t}\n\t\tsortVisible(camera, transparent) {\n\t\t\t\tconst sortMode = transparent ? this.transparentSortMode : this.opaqueSortMode;\n\t\t\t\tif (sortMode === SORTMODE_NONE) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst culledInstances = this.getCulledInstances(camera);\n\t\t\t\tconst instances = transparent ? culledInstances.transparent : culledInstances.opaque;\n\t\t\t\tconst cameraNode = camera.node;\n\t\t\t\tif (sortMode === SORTMODE_CUSTOM) {\n\t\t\t\t\t\tconst sortPos = cameraNode.getPosition();\n\t\t\t\t\t\tconst sortDir = cameraNode.forward;\n\t\t\t\t\t\tif (this.customCalculateSortValues) {\n\t\t\t\t\t\t\t\tthis.customCalculateSortValues(instances, instances.length, sortPos, sortDir);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.customSortCallback) {\n\t\t\t\t\t\t\t\tinstances.sort(this.customSortCallback);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tif (sortMode === SORTMODE_BACK2FRONT || sortMode === SORTMODE_FRONT2BACK) {\n\t\t\t\t\t\t\t\tconst sortPos = cameraNode.getPosition();\n\t\t\t\t\t\t\t\tconst sortDir = cameraNode.forward;\n\t\t\t\t\t\t\t\tthis._calculateSortDistances(instances, sortPos, sortDir);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tinstances.sort(sortCallbacks[sortMode]);\n\t\t\t\t}\n\t\t}\n}\n\nconst cmpPriority = (a, b)=>a.priority - b.priority;\nconst sortPriority = (arr)=>arr.sort(cmpPriority);\n\nclass LayerComposition extends EventHandler {\n\t\tconstructor(name = 'Untitled'){\n\t\t\t\tsuper(), this.layerList = [], this.layerIdMap = new Map(), this.layerNameMap = new Map(), this.layerOpaqueIndexMap = new Map(), this.layerTransparentIndexMap = new Map(), this.subLayerList = [], this.subLayerEnabled = [], this.cameras = [], this.camerasSet = new Set(), this._renderActions = [], this._dirty = false;\n\t\t\t\tthis.name = name;\n\t\t\t\tthis._opaqueOrder = {};\n\t\t\t\tthis._transparentOrder = {};\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.destroyRenderActions();\n\t\t}\n\t\tdestroyRenderActions() {\n\t\t\t\tthis._renderActions.forEach((ra)=>ra.destroy());\n\t\t\t\tthis._renderActions.length = 0;\n\t\t}\n\t\tmarkDirty() {\n\t\t\t\tthis._dirty = true;\n\t\t}\n\t\t_update() {\n\t\t\t\tconst len = this.layerList.length;\n\t\t\t\tif (!this._dirty) {\n\t\t\t\t\t\tfor(let i = 0; i < len; i++){\n\t\t\t\t\t\t\t\tif (this.layerList[i]._dirtyComposition) {\n\t\t\t\t\t\t\t\t\t\tthis._dirty = true;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this._dirty) {\n\t\t\t\t\t\tthis._dirty = false;\n\t\t\t\t\t\tthis.cameras.length = 0;\n\t\t\t\t\t\tthis.camerasSet.clear();\n\t\t\t\t\t\tfor(let i = 0; i < len; i++){\n\t\t\t\t\t\t\t\tconst layer = this.layerList[i];\n\t\t\t\t\t\t\t\tlayer._dirtyComposition = false;\n\t\t\t\t\t\t\t\tfor(let j = 0; j < layer.cameras.length; j++){\n\t\t\t\t\t\t\t\t\t\tconst cameraComponent = layer.cameras[j];\n\t\t\t\t\t\t\t\t\t\tif (!this.camerasSet.has(cameraComponent.camera)) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.camerasSet.add(cameraComponent.camera);\n\t\t\t\t\t\t\t\t\t\t\t\tthis.cameras.push(cameraComponent);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.cameras.length > 1) {\n\t\t\t\t\t\t\t\tsortPriority(this.cameras);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlet renderActionCount = 0;\n\t\t\t\t\t\tthis.destroyRenderActions();\n\t\t\t\t\t\tfor(let i = 0; i < this.cameras.length; i++){\n\t\t\t\t\t\t\t\tconst camera = this.cameras[i];\n\t\t\t\t\t\t\t\tif (camera.camera.renderPasses.length > 0) {\n\t\t\t\t\t\t\t\t\t\tthis.addDummyRenderAction(renderActionCount, camera);\n\t\t\t\t\t\t\t\t\t\trenderActionCount++;\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tlet cameraFirstRenderAction = true;\n\t\t\t\t\t\t\t\tconst cameraFirstRenderActionIndex = renderActionCount;\n\t\t\t\t\t\t\t\tlet lastRenderAction = null;\n\t\t\t\t\t\t\t\tlet postProcessMarked = false;\n\t\t\t\t\t\t\t\tfor(let j = 0; j < len; j++){\n\t\t\t\t\t\t\t\t\t\tconst layer = this.layerList[j];\n\t\t\t\t\t\t\t\t\t\tconst isLayerEnabled = layer.enabled && this.subLayerEnabled[j];\n\t\t\t\t\t\t\t\t\t\tif (isLayerEnabled) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (layer.cameras.length > 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (camera.layers.indexOf(layer.id) >= 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (!postProcessMarked && layer.id === camera.disablePostEffectsLayer) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tpostProcessMarked = true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (lastRenderAction) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tlastRenderAction.triggerPostprocess = true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst isTransparent = this.subLayerList[j];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tlastRenderAction = this.addRenderAction(renderActionCount, layer, isTransparent, camera, cameraFirstRenderAction, postProcessMarked);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\trenderActionCount++;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcameraFirstRenderAction = false;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (cameraFirstRenderActionIndex < renderActionCount) {\n\t\t\t\t\t\t\t\t\t\tlastRenderAction.lastCameraUse = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (!postProcessMarked && lastRenderAction) {\n\t\t\t\t\t\t\t\t\t\tlastRenderAction.triggerPostprocess = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (camera.renderTarget && camera.postEffectsEnabled) {\n\t\t\t\t\t\t\t\t\t\tthis.propagateRenderTarget(cameraFirstRenderActionIndex - 1, camera);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._logRenderActions();\n\t\t\t\t}\n\t\t}\n\t\tgetNextRenderAction(renderActionIndex) {\n\t\t\t\tconst renderAction = new RenderAction();\n\t\t\t\tthis._renderActions.push(renderAction);\n\t\t\t\treturn renderAction;\n\t\t}\n\t\taddDummyRenderAction(renderActionIndex, camera) {\n\t\t\t\tconst renderAction = this.getNextRenderAction(renderActionIndex);\n\t\t\t\trenderAction.camera = camera;\n\t\t\t\trenderAction.useCameraPasses = true;\n\t\t}\n\t\taddRenderAction(renderActionIndex, layer, isTransparent, camera, cameraFirstRenderAction, postProcessMarked) {\n\t\t\t\tlet rt = layer.id !== LAYERID_DEPTH ? camera.renderTarget : null;\n\t\t\t\tlet used = false;\n\t\t\t\tconst renderActions = this._renderActions;\n\t\t\t\tfor(let i = renderActionIndex - 1; i >= 0; i--){\n\t\t\t\t\t\tif (renderActions[i].camera === camera && renderActions[i].renderTarget === rt) {\n\t\t\t\t\t\t\t\tused = true;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (postProcessMarked && camera.postEffectsEnabled) {\n\t\t\t\t\t\trt = null;\n\t\t\t\t}\n\t\t\t\tconst renderAction = this.getNextRenderAction(renderActionIndex);\n\t\t\t\trenderAction.triggerPostprocess = false;\n\t\t\t\trenderAction.layer = layer;\n\t\t\t\trenderAction.transparent = isTransparent;\n\t\t\t\trenderAction.camera = camera;\n\t\t\t\trenderAction.renderTarget = rt;\n\t\t\t\trenderAction.firstCameraUse = cameraFirstRenderAction;\n\t\t\t\trenderAction.lastCameraUse = false;\n\t\t\t\tconst needsCameraClear = cameraFirstRenderAction || !used;\n\t\t\t\tconst needsLayerClear = layer.clearColorBuffer || layer.clearDepthBuffer || layer.clearStencilBuffer;\n\t\t\t\tif (needsCameraClear || needsLayerClear) {\n\t\t\t\t\t\trenderAction.setupClears(needsCameraClear ? camera : undefined, layer);\n\t\t\t\t}\n\t\t\t\treturn renderAction;\n\t\t}\n\t\tpropagateRenderTarget(startIndex, fromCamera) {\n\t\t\t\tfor(let a = startIndex; a >= 0; a--){\n\t\t\t\t\t\tconst ra = this._renderActions[a];\n\t\t\t\t\t\tconst layer = ra.layer;\n\t\t\t\t\t\tif (ra.renderTarget && layer.id !== LAYERID_DEPTH) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (layer.id === LAYERID_DEPTH) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (ra.useCameraPasses) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst thisCamera = ra?.camera.camera;\n\t\t\t\t\t\tif (thisCamera) {\n\t\t\t\t\t\t\t\tif (!fromCamera.camera.rect.equals(thisCamera.rect) || !fromCamera.camera.scissorRect.equals(thisCamera.scissorRect)) {\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tra.renderTarget = fromCamera.renderTarget;\n\t\t\t\t}\n\t\t}\n\t\t_logRenderActions() {}\n\t\t_isLayerAdded(layer) {\n\t\t\t\tconst found = this.layerIdMap.get(layer.id) === layer;\n\t\t\t\treturn found;\n\t\t}\n\t\t_isSublayerAdded(layer, transparent) {\n\t\t\t\tconst map = transparent ? this.layerTransparentIndexMap : this.layerOpaqueIndexMap;\n\t\t\t\tif (map.get(layer) !== undefined) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t}\n\t\tpush(layer) {\n\t\t\t\tif (this._isLayerAdded(layer)) return;\n\t\t\t\tthis.layerList.push(layer);\n\t\t\t\tthis.layerList.push(layer);\n\t\t\t\tthis._opaqueOrder[layer.id] = this.subLayerList.push(false) - 1;\n\t\t\t\tthis._transparentOrder[layer.id] = this.subLayerList.push(true) - 1;\n\t\t\t\tthis.subLayerEnabled.push(true);\n\t\t\t\tthis.subLayerEnabled.push(true);\n\t\t\t\tthis._updateLayerMaps();\n\t\t\t\tthis._dirty = true;\n\t\t\t\tthis.fire('add', layer);\n\t\t}\n\t\tinsert(layer, index) {\n\t\t\t\tif (this._isLayerAdded(layer)) return;\n\t\t\t\tthis.layerList.splice(index, 0, layer, layer);\n\t\t\t\tthis.subLayerList.splice(index, 0, false, true);\n\t\t\t\tconst count = this.layerList.length;\n\t\t\t\tthis._updateOpaqueOrder(index, count - 1);\n\t\t\t\tthis._updateTransparentOrder(index, count - 1);\n\t\t\t\tthis.subLayerEnabled.splice(index, 0, true, true);\n\t\t\t\tthis._updateLayerMaps();\n\t\t\t\tthis._dirty = true;\n\t\t\t\tthis.fire('add', layer);\n\t\t}\n\t\tremove(layer) {\n\t\t\t\tlet id = this.layerList.indexOf(layer);\n\t\t\t\tdelete this._opaqueOrder[id];\n\t\t\t\tdelete this._transparentOrder[id];\n\t\t\t\twhile(id >= 0){\n\t\t\t\t\t\tthis.layerList.splice(id, 1);\n\t\t\t\t\t\tthis.subLayerList.splice(id, 1);\n\t\t\t\t\t\tthis.subLayerEnabled.splice(id, 1);\n\t\t\t\t\t\tid = this.layerList.indexOf(layer);\n\t\t\t\t\t\tthis._dirty = true;\n\t\t\t\t\t\tthis.fire('remove', layer);\n\t\t\t\t}\n\t\t\t\tconst count = this.layerList.length;\n\t\t\t\tthis._updateOpaqueOrder(0, count - 1);\n\t\t\t\tthis._updateTransparentOrder(0, count - 1);\n\t\t\t\tthis._updateLayerMaps();\n\t\t}\n\t\tpushOpaque(layer) {\n\t\t\t\tif (this._isSublayerAdded(layer, false)) return;\n\t\t\t\tthis.layerList.push(layer);\n\t\t\t\tthis._opaqueOrder[layer.id] = this.subLayerList.push(false) - 1;\n\t\t\t\tthis.subLayerEnabled.push(true);\n\t\t\t\tthis._updateLayerMaps();\n\t\t\t\tthis._dirty = true;\n\t\t\t\tthis.fire('add', layer);\n\t\t}\n\t\tinsertOpaque(layer, index) {\n\t\t\t\tif (this._isSublayerAdded(layer, false)) return;\n\t\t\t\tthis.layerList.splice(index, 0, layer);\n\t\t\t\tthis.subLayerList.splice(index, 0, false);\n\t\t\t\tconst count = this.subLayerList.length;\n\t\t\t\tthis._updateOpaqueOrder(index, count - 1);\n\t\t\t\tthis.subLayerEnabled.splice(index, 0, true);\n\t\t\t\tthis._updateLayerMaps();\n\t\t\t\tthis._dirty = true;\n\t\t\t\tthis.fire('add', layer);\n\t\t}\n\t\tremoveOpaque(layer) {\n\t\t\t\tfor(let i = 0, len = this.layerList.length; i < len; i++){\n\t\t\t\t\t\tif (this.layerList[i] === layer && !this.subLayerList[i]) {\n\t\t\t\t\t\t\t\tthis.layerList.splice(i, 1);\n\t\t\t\t\t\t\t\tthis.subLayerList.splice(i, 1);\n\t\t\t\t\t\t\t\tlen--;\n\t\t\t\t\t\t\t\tthis._updateOpaqueOrder(i, len - 1);\n\t\t\t\t\t\t\t\tthis.subLayerEnabled.splice(i, 1);\n\t\t\t\t\t\t\t\tthis._dirty = true;\n\t\t\t\t\t\t\t\tif (this.layerList.indexOf(layer) < 0) {\n\t\t\t\t\t\t\t\t\t\tthis.fire('remove', layer);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._updateLayerMaps();\n\t\t}\n\t\tpushTransparent(layer) {\n\t\t\t\tif (this._isSublayerAdded(layer, true)) return;\n\t\t\t\tthis.layerList.push(layer);\n\t\t\t\tthis._transparentOrder[layer.id] = this.subLayerList.push(true) - 1;\n\t\t\t\tthis.subLayerEnabled.push(true);\n\t\t\t\tthis._updateLayerMaps();\n\t\t\t\tthis._dirty = true;\n\t\t\t\tthis.fire('add', layer);\n\t\t}\n\t\tinsertTransparent(layer, index) {\n\t\t\t\tif (this._isSublayerAdded(layer, true)) return;\n\t\t\t\tthis.layerList.splice(index, 0, layer);\n\t\t\t\tthis.subLayerList.splice(index, 0, true);\n\t\t\t\tconst count = this.subLayerList.length;\n\t\t\t\tthis._updateTransparentOrder(index, count - 1);\n\t\t\t\tthis.subLayerEnabled.splice(index, 0, true);\n\t\t\t\tthis._updateLayerMaps();\n\t\t\t\tthis._dirty = true;\n\t\t\t\tthis.fire('add', layer);\n\t\t}\n\t\tremoveTransparent(layer) {\n\t\t\t\tfor(let i = 0, len = this.layerList.length; i < len; i++){\n\t\t\t\t\t\tif (this.layerList[i] === layer && this.subLayerList[i]) {\n\t\t\t\t\t\t\t\tthis.layerList.splice(i, 1);\n\t\t\t\t\t\t\t\tthis.subLayerList.splice(i, 1);\n\t\t\t\t\t\t\t\tlen--;\n\t\t\t\t\t\t\t\tthis._updateTransparentOrder(i, len - 1);\n\t\t\t\t\t\t\t\tthis.subLayerEnabled.splice(i, 1);\n\t\t\t\t\t\t\t\tthis._dirty = true;\n\t\t\t\t\t\t\t\tif (this.layerList.indexOf(layer) < 0) {\n\t\t\t\t\t\t\t\t\t\tthis.fire('remove', layer);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._updateLayerMaps();\n\t\t}\n\t\tgetOpaqueIndex(layer) {\n\t\t\t\treturn this.layerOpaqueIndexMap.get(layer) ?? -1;\n\t\t}\n\t\tgetTransparentIndex(layer) {\n\t\t\t\treturn this.layerTransparentIndexMap.get(layer) ?? -1;\n\t\t}\n\t\tisEnabled(layer, transparent) {\n\t\t\t\tif (layer.enabled) {\n\t\t\t\t\t\tconst index = transparent ? this.getTransparentIndex(layer) : this.getOpaqueIndex(layer);\n\t\t\t\t\t\tif (index >= 0) {\n\t\t\t\t\t\t\t\treturn this.subLayerEnabled[index];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t}\n\t\t_updateLayerMaps() {\n\t\t\t\tthis.layerIdMap.clear();\n\t\t\t\tthis.layerNameMap.clear();\n\t\t\t\tthis.layerOpaqueIndexMap.clear();\n\t\t\t\tthis.layerTransparentIndexMap.clear();\n\t\t\t\tfor(let i = 0; i < this.layerList.length; i++){\n\t\t\t\t\t\tconst layer = this.layerList[i];\n\t\t\t\t\t\tthis.layerIdMap.set(layer.id, layer);\n\t\t\t\t\t\tthis.layerNameMap.set(layer.name, layer);\n\t\t\t\t\t\tconst subLayerIndexMap = this.subLayerList[i] ? this.layerTransparentIndexMap : this.layerOpaqueIndexMap;\n\t\t\t\t\t\tsubLayerIndexMap.set(layer, i);\n\t\t\t\t}\n\t\t}\n\t\tgetLayerById(id) {\n\t\t\t\treturn this.layerIdMap.get(id) ?? null;\n\t\t}\n\t\tgetLayerByName(name) {\n\t\t\t\treturn this.layerNameMap.get(name) ?? null;\n\t\t}\n\t\t_updateOpaqueOrder(startIndex, endIndex) {\n\t\t\t\tfor(let i = startIndex; i <= endIndex; i++){\n\t\t\t\t\t\tif (this.subLayerList[i] === false) {\n\t\t\t\t\t\t\t\tthis._opaqueOrder[this.layerList[i].id] = i;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_updateTransparentOrder(startIndex, endIndex) {\n\t\t\t\tfor(let i = startIndex; i <= endIndex; i++){\n\t\t\t\t\t\tif (this.subLayerList[i] === true) {\n\t\t\t\t\t\t\t\tthis._transparentOrder[this.layerList[i].id] = i;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_sortLayersDescending(layersA, layersB, order) {\n\t\t\t\tlet topLayerA = -1;\n\t\t\t\tlet topLayerB = -1;\n\t\t\t\tfor(let i = 0, len = layersA.length; i < len; i++){\n\t\t\t\t\t\tconst id = layersA[i];\n\t\t\t\t\t\tif (order.hasOwnProperty(id)) {\n\t\t\t\t\t\t\t\ttopLayerA = Math.max(topLayerA, order[id]);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor(let i = 0, len = layersB.length; i < len; i++){\n\t\t\t\t\t\tconst id = layersB[i];\n\t\t\t\t\t\tif (order.hasOwnProperty(id)) {\n\t\t\t\t\t\t\t\ttopLayerB = Math.max(topLayerB, order[id]);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (topLayerA === -1 && topLayerB !== -1) {\n\t\t\t\t\t\treturn 1;\n\t\t\t\t} else if (topLayerB === -1 && topLayerA !== -1) {\n\t\t\t\t\t\treturn -1;\n\t\t\t\t}\n\t\t\t\treturn topLayerB - topLayerA;\n\t\t}\n\t\tsortTransparentLayers(layersA, layersB) {\n\t\t\t\treturn this._sortLayersDescending(layersA, layersB, this._transparentOrder);\n\t\t}\n\t\tsortOpaqueLayers(layersA, layersB) {\n\t\t\t\treturn this._sortLayersDescending(layersA, layersB, this._opaqueOrder);\n\t\t}\n}\n\nconst tmpVec = new Vec3();\nconst tmpBiases = {\n\t\tbias: 0,\n\t\tnormalBias: 0\n};\nconst tmpColor = new Color();\nconst chanId = {\n\t\tr: 0,\n\t\tg: 1,\n\t\tb: 2,\n\t\ta: 3\n};\nconst lightTypes = {\n\t\t'directional': LIGHTTYPE_DIRECTIONAL,\n\t\t'omni': LIGHTTYPE_OMNI,\n\t\t'point': LIGHTTYPE_OMNI,\n\t\t'spot': LIGHTTYPE_SPOT\n};\nconst directionalCascades = [\n\t\t[\n\t\t\t\tnew Vec4(0, 0, 1, 1)\n\t\t],\n\t\t[\n\t\t\t\tnew Vec4(0, 0, 0.5, 0.5),\n\t\t\t\tnew Vec4(0, 0.5, 0.5, 0.5)\n\t\t],\n\t\t[\n\t\t\t\tnew Vec4(0, 0, 0.5, 0.5),\n\t\t\t\tnew Vec4(0, 0.5, 0.5, 0.5),\n\t\t\t\tnew Vec4(0.5, 0, 0.5, 0.5)\n\t\t],\n\t\t[\n\t\t\t\tnew Vec4(0, 0, 0.5, 0.5),\n\t\t\t\tnew Vec4(0, 0.5, 0.5, 0.5),\n\t\t\t\tnew Vec4(0.5, 0, 0.5, 0.5),\n\t\t\t\tnew Vec4(0.5, 0.5, 0.5, 0.5)\n\t\t]\n];\nconst channelMap = {\n\t\t'rrr': 0b0001,\n\t\t'ggg': 0b0010,\n\t\t'bbb': 0b0100,\n\t\t'aaa': 0b1000,\n\t\t'rgb': 0b0111\n};\nlet id$2 = 0;\nclass LightRenderData {\n\t\tconstructor(camera, face, light){\n\t\t\t\tthis.light = light;\n\t\t\t\tthis.camera = camera;\n\t\t\t\tthis.shadowCamera = ShadowRenderer.createShadowCamera(light._shadowType, light._type, face);\n\t\t\t\tthis.shadowMatrix = new Mat4();\n\t\t\t\tthis.shadowViewport = new Vec4(0, 0, 1, 1);\n\t\t\t\tthis.shadowScissor = new Vec4(0, 0, 1, 1);\n\t\t\t\tthis.projectionCompensation = 0;\n\t\t\t\tthis.face = face;\n\t\t\t\tthis.visibleCasters = [];\n\t\t\t\tthis.viewBindGroups = [];\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.viewBindGroups.forEach((bg)=>{\n\t\t\t\t\t\tbg.defaultUniformBuffer.destroy();\n\t\t\t\t\t\tbg.destroy();\n\t\t\t\t});\n\t\t\t\tthis.viewBindGroups.length = 0;\n\t\t}\n\t\tget shadowBuffer() {\n\t\t\t\tconst rt = this.shadowCamera.renderTarget;\n\t\t\t\tif (rt) {\n\t\t\t\t\t\treturn this.light._isPcf ? rt.depthBuffer : rt.colorBuffer;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n}\nclass Light {\n\t\tconstructor(graphicsDevice, clusteredLighting){\n\t\t\t\tthis.layers = new Set();\n\t\t\t\tthis.shadowDepthState = DepthState.DEFAULT.clone();\n\t\t\t\tthis.clusteredFlags = 0;\n\t\t\t\tthis.clusteredData = new Uint32Array(3);\n\t\t\t\tthis.clusteredData16 = new Uint16Array(this.clusteredData.buffer);\n\t\t\t\tthis._evtDeviceRestored = null;\n\t\t\t\tthis.device = graphicsDevice;\n\t\t\t\tthis.clusteredLighting = clusteredLighting;\n\t\t\t\tthis.id = id$2++;\n\t\t\t\tthis._evtDeviceRestored = graphicsDevice.on('devicerestored', this.onDeviceRestored, this);\n\t\t\t\tthis._type = LIGHTTYPE_DIRECTIONAL;\n\t\t\t\tthis._color = new Color(0.8, 0.8, 0.8);\n\t\t\t\tthis._intensity = 1;\n\t\t\t\tthis._affectSpecularity = true;\n\t\t\t\tthis._luminance = 0;\n\t\t\t\tthis._castShadows = false;\n\t\t\t\tthis._enabled = false;\n\t\t\t\tthis._mask = MASK_AFFECT_DYNAMIC;\n\t\t\t\tthis.isStatic = false;\n\t\t\t\tthis.key = 0;\n\t\t\t\tthis.bakeDir = true;\n\t\t\t\tthis.bakeNumSamples = 1;\n\t\t\t\tthis.bakeArea = 0;\n\t\t\t\tthis.attenuationStart = 10;\n\t\t\t\tthis.attenuationEnd = 10;\n\t\t\t\tthis._falloffMode = LIGHTFALLOFF_LINEAR;\n\t\t\t\tthis._shadowType = SHADOW_PCF3_32F;\n\t\t\t\tthis._vsmBlurSize = 11;\n\t\t\t\tthis.vsmBlurMode = BLUR_GAUSSIAN;\n\t\t\t\tthis.vsmBias = 0.01 * 0.25;\n\t\t\t\tthis._cookie = null;\n\t\t\t\tthis.cookieIntensity = 1;\n\t\t\t\tthis._cookieFalloff = true;\n\t\t\t\tthis._cookieChannel = 'rgb';\n\t\t\t\tthis._cookieTransform = null;\n\t\t\t\tthis._cookieTransformUniform = new Float32Array(4);\n\t\t\t\tthis._cookieOffset = null;\n\t\t\t\tthis._cookieOffsetUniform = new Float32Array(2);\n\t\t\t\tthis._cookieTransformSet = false;\n\t\t\t\tthis._cookieOffsetSet = false;\n\t\t\t\tthis._innerConeAngle = 40;\n\t\t\t\tthis._outerConeAngle = 45;\n\t\t\t\tthis.cascades = null;\n\t\t\t\tthis._shadowMatrixPalette = null;\n\t\t\t\tthis._shadowCascadeDistances = null;\n\t\t\t\tthis.numCascades = 1;\n\t\t\t\tthis._cascadeBlend = 0;\n\t\t\t\tthis.cascadeDistribution = 0.5;\n\t\t\t\tthis._shape = LIGHTSHAPE_PUNCTUAL;\n\t\t\t\tthis._colorLinear = new Float32Array(3);\n\t\t\t\tthis._updateLinearColor();\n\t\t\t\tthis._position = new Vec3(0, 0, 0);\n\t\t\t\tthis._direction = new Vec3(0, 0, 0);\n\t\t\t\tthis._innerConeAngleCos = Math.cos(this._innerConeAngle * math.DEG_TO_RAD);\n\t\t\t\tthis._updateOuterAngle(this._outerConeAngle);\n\t\t\t\tthis._usePhysicalUnits = undefined;\n\t\t\t\tthis._shadowMap = null;\n\t\t\t\tthis._shadowRenderParams = [];\n\t\t\t\tthis._shadowCameraParams = [];\n\t\t\t\tthis.shadowDistance = 40;\n\t\t\t\tthis._shadowResolution = 1024;\n\t\t\t\tthis._shadowBias = -5e-4;\n\t\t\t\tthis._shadowIntensity = 1.0;\n\t\t\t\tthis._normalOffsetBias = 0.0;\n\t\t\t\tthis.shadowUpdateMode = SHADOWUPDATE_REALTIME;\n\t\t\t\tthis.shadowUpdateOverrides = null;\n\t\t\t\tthis._isVsm = false;\n\t\t\t\tthis._isPcf = true;\n\t\t\t\tthis._softShadowParams = new Float32Array(4);\n\t\t\t\tthis.shadowSamples = 16;\n\t\t\t\tthis.shadowBlockerSamples = 16;\n\t\t\t\tthis.penumbraSize = 1.0;\n\t\t\t\tthis.penumbraFalloff = 1.0;\n\t\t\t\tthis._cookieMatrix = null;\n\t\t\t\tthis._atlasViewport = null;\n\t\t\t\tthis.atlasViewportAllocated = false;\n\t\t\t\tthis.atlasVersion = 0;\n\t\t\t\tthis.atlasSlotIndex = 0;\n\t\t\t\tthis.atlasSlotUpdated = false;\n\t\t\t\tthis._node = null;\n\t\t\t\tthis._renderData = [];\n\t\t\t\tthis.visibleThisFrame = false;\n\t\t\t\tthis.maxScreenSize = 0;\n\t\t\t\tthis._updateShadowBias();\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis._evtDeviceRestored?.off();\n\t\t\t\tthis._evtDeviceRestored = null;\n\t\t\t\tthis._destroyShadowMap();\n\t\t\t\tthis.releaseRenderData();\n\t\t\t\tthis._renderData = null;\n\t\t}\n\t\tonDeviceRestored() {\n\t\t\t\tif (this.shadowUpdateMode === SHADOWUPDATE_NONE) {\n\t\t\t\t\t\tthis.shadowUpdateMode = SHADOWUPDATE_THISFRAME;\n\t\t\t\t}\n\t\t}\n\t\treleaseRenderData() {\n\t\t\t\tif (this._renderData) {\n\t\t\t\t\t\tfor(let i = 0; i < this._renderData.length; i++){\n\t\t\t\t\t\t\t\tthis._renderData[i].destroy();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._renderData.length = 0;\n\t\t\t\t}\n\t\t}\n\t\taddLayer(layer) {\n\t\t\t\tthis.layers.add(layer);\n\t\t}\n\t\tremoveLayer(layer) {\n\t\t\t\tthis.layers.delete(layer);\n\t\t}\n\t\tset shadowSamples(value) {\n\t\t\t\tthis._softShadowParams[0] = value;\n\t\t}\n\t\tget shadowSamples() {\n\t\t\t\treturn this._softShadowParams[0];\n\t\t}\n\t\tset shadowBlockerSamples(value) {\n\t\t\t\tthis._softShadowParams[1] = value;\n\t\t}\n\t\tget shadowBlockerSamples() {\n\t\t\t\treturn this._softShadowParams[1];\n\t\t}\n\t\tset shadowBias(value) {\n\t\t\t\tif (this._shadowBias !== value) {\n\t\t\t\t\t\tthis._shadowBias = value;\n\t\t\t\t\t\tthis._updateShadowBias();\n\t\t\t\t}\n\t\t}\n\t\tget shadowBias() {\n\t\t\t\treturn this._shadowBias;\n\t\t}\n\t\tset numCascades(value) {\n\t\t\t\tif (!this.cascades || this.numCascades !== value) {\n\t\t\t\t\t\tthis.cascades = directionalCascades[value - 1];\n\t\t\t\t\t\tthis._shadowMatrixPalette = new Float32Array(4 * 16);\n\t\t\t\t\t\tthis._shadowCascadeDistances = new Float32Array(4);\n\t\t\t\t\t\tthis._destroyShadowMap();\n\t\t\t\t\t\tthis.updateKey();\n\t\t\t\t}\n\t\t}\n\t\tget numCascades() {\n\t\t\t\treturn this.cascades.length;\n\t\t}\n\t\tset cascadeBlend(value) {\n\t\t\t\tif (this._cascadeBlend !== value) {\n\t\t\t\t\t\tthis._cascadeBlend = value;\n\t\t\t\t\t\tthis.updateKey();\n\t\t\t\t}\n\t\t}\n\t\tget cascadeBlend() {\n\t\t\t\treturn this._cascadeBlend;\n\t\t}\n\t\tset shadowMap(shadowMap) {\n\t\t\t\tif (this._shadowMap !== shadowMap) {\n\t\t\t\t\t\tthis._destroyShadowMap();\n\t\t\t\t\t\tthis._shadowMap = shadowMap;\n\t\t\t\t}\n\t\t}\n\t\tget shadowMap() {\n\t\t\t\treturn this._shadowMap;\n\t\t}\n\t\tset mask(value) {\n\t\t\t\tif (this._mask !== value) {\n\t\t\t\t\t\tthis._mask = value;\n\t\t\t\t\t\tthis.updateKey();\n\t\t\t\t\t\tthis.updateClusteredFlags();\n\t\t\t\t}\n\t\t}\n\t\tget mask() {\n\t\t\t\treturn this._mask;\n\t\t}\n\t\tget numShadowFaces() {\n\t\t\t\tconst type = this._type;\n\t\t\t\tif (type === LIGHTTYPE_DIRECTIONAL) {\n\t\t\t\t\t\treturn this.numCascades;\n\t\t\t\t} else if (type === LIGHTTYPE_OMNI) {\n\t\t\t\t\t\treturn 6;\n\t\t\t\t}\n\t\t\t\treturn 1;\n\t\t}\n\t\tset type(value) {\n\t\t\t\tif (this._type === value) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._type = value;\n\t\t\t\tthis._destroyShadowMap();\n\t\t\t\tthis._updateShadowBias();\n\t\t\t\tthis.updateKey();\n\t\t\t\tthis.updateClusteredFlags();\n\t\t\t\tconst stype = this._shadowType;\n\t\t\t\tthis._shadowType = null;\n\t\t\t\tthis.shadowUpdateOverrides = null;\n\t\t\t\tthis.shadowType = stype;\n\t\t}\n\t\tget type() {\n\t\t\t\treturn this._type;\n\t\t}\n\t\tset shape(value) {\n\t\t\t\tif (this._shape === value) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._shape = value;\n\t\t\t\tthis._destroyShadowMap();\n\t\t\t\tthis.updateKey();\n\t\t\t\tthis.updateClusteredFlags();\n\t\t\t\tconst stype = this._shadowType;\n\t\t\t\tthis._shadowType = null;\n\t\t\t\tthis.shadowType = stype;\n\t\t}\n\t\tget shape() {\n\t\t\t\treturn this._shape;\n\t\t}\n\t\tset usePhysicalUnits(value) {\n\t\t\t\tif (this._usePhysicalUnits !== value) {\n\t\t\t\t\t\tthis._usePhysicalUnits = value;\n\t\t\t\t\t\tthis._updateLinearColor();\n\t\t\t\t}\n\t\t}\n\t\tget usePhysicalUnits() {\n\t\t\t\treturn this._usePhysicalUnits;\n\t\t}\n\t\tset shadowType(value) {\n\t\t\t\tif (this._shadowType === value) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tlet shadowInfo = shadowTypeInfo.get(value);\n\t\t\t\tif (!shadowInfo) {\n\t\t\t\t\t\tvalue = SHADOW_PCF3_32F;\n\t\t\t\t}\n\t\t\t\tconst device = this.device;\n\t\t\t\tif (value === SHADOW_PCSS_32F && (!device.textureFloatRenderable || !device.textureFloatFilterable)) {\n\t\t\t\t\t\tvalue = SHADOW_PCF3_32F;\n\t\t\t\t}\n\t\t\t\tif (this._type === LIGHTTYPE_OMNI && value !== SHADOW_PCF1_32F && value !== SHADOW_PCF3_32F && value !== SHADOW_PCF1_16F && value !== SHADOW_PCF3_16F && value !== SHADOW_PCSS_32F) {\n\t\t\t\t\t\tvalue = SHADOW_PCF3_32F;\n\t\t\t\t}\n\t\t\t\tif (value === SHADOW_VSM_32F && (!device.textureFloatRenderable || !device.textureFloatFilterable)) {\n\t\t\t\t\t\tvalue = SHADOW_VSM_16F;\n\t\t\t\t}\n\t\t\t\tif (value === SHADOW_VSM_16F && !device.textureHalfFloatRenderable) {\n\t\t\t\t\t\tvalue = SHADOW_PCF3_32F;\n\t\t\t\t}\n\t\t\t\tshadowInfo = shadowTypeInfo.get(value);\n\t\t\t\tthis._isVsm = shadowInfo?.vsm ?? false;\n\t\t\t\tthis._isPcf = shadowInfo?.pcf ?? false;\n\t\t\t\tthis._shadowType = value;\n\t\t\t\tthis._destroyShadowMap();\n\t\t\t\tthis.updateKey();\n\t\t}\n\t\tget shadowType() {\n\t\t\t\treturn this._shadowType;\n\t\t}\n\t\tset enabled(value) {\n\t\t\t\tif (this._enabled !== value) {\n\t\t\t\t\t\tthis._enabled = value;\n\t\t\t\t\t\tthis.layersDirty();\n\t\t\t\t}\n\t\t}\n\t\tget enabled() {\n\t\t\t\treturn this._enabled;\n\t\t}\n\t\tset castShadows(value) {\n\t\t\t\tif (this._castShadows !== value) {\n\t\t\t\t\t\tthis._castShadows = value;\n\t\t\t\t\t\tthis._destroyShadowMap();\n\t\t\t\t\t\tthis.layersDirty();\n\t\t\t\t\t\tthis.updateKey();\n\t\t\t\t}\n\t\t}\n\t\tget castShadows() {\n\t\t\t\treturn this._castShadows && this._mask !== MASK_BAKE && this._mask !== 0;\n\t\t}\n\t\tset shadowIntensity(value) {\n\t\t\t\tif (this._shadowIntensity !== value) {\n\t\t\t\t\t\tthis._shadowIntensity = value;\n\t\t\t\t\t\tthis.updateKey();\n\t\t\t\t}\n\t\t}\n\t\tget shadowIntensity() {\n\t\t\t\treturn this._shadowIntensity;\n\t\t}\n\t\tget bakeShadows() {\n\t\t\t\treturn this._castShadows && this._mask === MASK_BAKE;\n\t\t}\n\t\tset shadowResolution(value) {\n\t\t\t\tif (this._shadowResolution !== value) {\n\t\t\t\t\t\tif (this._type === LIGHTTYPE_OMNI) {\n\t\t\t\t\t\t\t\tvalue = Math.min(value, this.device.maxCubeMapSize);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tvalue = Math.min(value, this.device.maxTextureSize);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._shadowResolution = value;\n\t\t\t\t\t\tthis._destroyShadowMap();\n\t\t\t\t}\n\t\t}\n\t\tget shadowResolution() {\n\t\t\t\treturn this._shadowResolution;\n\t\t}\n\t\tset vsmBlurSize(value) {\n\t\t\t\tif (this._vsmBlurSize === value) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (value % 2 === 0) value++;\n\t\t\t\tthis._vsmBlurSize = value;\n\t\t}\n\t\tget vsmBlurSize() {\n\t\t\t\treturn this._vsmBlurSize;\n\t\t}\n\t\tset normalOffsetBias(value) {\n\t\t\t\tif (this._normalOffsetBias !== value) {\n\t\t\t\t\t\tconst dirty = !this._normalOffsetBias && value || this._normalOffsetBias && !value;\n\t\t\t\t\t\tthis._normalOffsetBias = value;\n\t\t\t\t\t\tif (dirty) {\n\t\t\t\t\t\t\t\tthis.updateKey();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget normalOffsetBias() {\n\t\t\t\treturn this._normalOffsetBias;\n\t\t}\n\t\tset falloffMode(value) {\n\t\t\t\tif (this._falloffMode === value) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._falloffMode = value;\n\t\t\t\tthis.updateKey();\n\t\t\t\tthis.updateClusteredFlags();\n\t\t}\n\t\tget falloffMode() {\n\t\t\t\treturn this._falloffMode;\n\t\t}\n\t\tset innerConeAngle(value) {\n\t\t\t\tif (this._innerConeAngle === value) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._innerConeAngle = value;\n\t\t\t\tthis._innerConeAngleCos = Math.cos(value * math.DEG_TO_RAD);\n\t\t\t\tthis.updateClusterData(false, true);\n\t\t\t\tif (this._usePhysicalUnits) {\n\t\t\t\t\t\tthis._updateLinearColor();\n\t\t\t\t}\n\t\t}\n\t\tget innerConeAngle() {\n\t\t\t\treturn this._innerConeAngle;\n\t\t}\n\t\tset outerConeAngle(value) {\n\t\t\t\tif (this._outerConeAngle === value) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._outerConeAngle = value;\n\t\t\t\tthis._updateOuterAngle(value);\n\t\t\t\tif (this._usePhysicalUnits) {\n\t\t\t\t\t\tthis._updateLinearColor();\n\t\t\t\t}\n\t\t}\n\t\tget outerConeAngle() {\n\t\t\t\treturn this._outerConeAngle;\n\t\t}\n\t\tset penumbraSize(value) {\n\t\t\t\tthis._penumbraSize = value;\n\t\t\t\tthis._softShadowParams[2] = value;\n\t\t}\n\t\tget penumbraSize() {\n\t\t\t\treturn this._penumbraSize;\n\t\t}\n\t\tset penumbraFalloff(value) {\n\t\t\t\tthis._softShadowParams[3] = value;\n\t\t}\n\t\tget penumbraFalloff() {\n\t\t\t\treturn this._softShadowParams[3];\n\t\t}\n\t\t_updateOuterAngle(angle) {\n\t\t\t\tconst radAngle = angle * math.DEG_TO_RAD;\n\t\t\t\tthis._outerConeAngleCos = Math.cos(radAngle);\n\t\t\t\tthis._outerConeAngleSin = Math.sin(radAngle);\n\t\t\t\tthis.updateClusterData(false, true);\n\t\t}\n\t\tset intensity(value) {\n\t\t\t\tif (this._intensity !== value) {\n\t\t\t\t\t\tthis._intensity = value;\n\t\t\t\t\t\tthis._updateLinearColor();\n\t\t\t\t}\n\t\t}\n\t\tget intensity() {\n\t\t\t\treturn this._intensity;\n\t\t}\n\t\tset affectSpecularity(value) {\n\t\t\t\tif (this._type === LIGHTTYPE_DIRECTIONAL) {\n\t\t\t\t\t\tthis._affectSpecularity = value;\n\t\t\t\t\t\tthis.updateKey();\n\t\t\t\t}\n\t\t}\n\t\tget affectSpecularity() {\n\t\t\t\treturn this._affectSpecularity;\n\t\t}\n\t\tset luminance(value) {\n\t\t\t\tif (this._luminance !== value) {\n\t\t\t\t\t\tthis._luminance = value;\n\t\t\t\t\t\tthis._updateLinearColor();\n\t\t\t\t}\n\t\t}\n\t\tget luminance() {\n\t\t\t\treturn this._luminance;\n\t\t}\n\t\tget cookieMatrix() {\n\t\t\t\tif (!this._cookieMatrix) {\n\t\t\t\t\t\tthis._cookieMatrix = new Mat4();\n\t\t\t\t}\n\t\t\t\treturn this._cookieMatrix;\n\t\t}\n\t\tget atlasViewport() {\n\t\t\t\tif (!this._atlasViewport) {\n\t\t\t\t\t\tthis._atlasViewport = new Vec4(0, 0, 1, 1);\n\t\t\t\t}\n\t\t\t\treturn this._atlasViewport;\n\t\t}\n\t\tset cookie(value) {\n\t\t\t\tif (this._cookie === value) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._cookie = value;\n\t\t\t\tthis.updateKey();\n\t\t}\n\t\tget cookie() {\n\t\t\t\treturn this._cookie;\n\t\t}\n\t\tset cookieFalloff(value) {\n\t\t\t\tif (this._cookieFalloff === value) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._cookieFalloff = value;\n\t\t\t\tthis.updateKey();\n\t\t}\n\t\tget cookieFalloff() {\n\t\t\t\treturn this._cookieFalloff;\n\t\t}\n\t\tset cookieChannel(value) {\n\t\t\t\tif (this._cookieChannel === value) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (value.length < 3) {\n\t\t\t\t\t\tconst chr = value.charAt(value.length - 1);\n\t\t\t\t\t\tconst addLen = 3 - value.length;\n\t\t\t\t\t\tfor(let i = 0; i < addLen; i++){\n\t\t\t\t\t\t\t\tvalue += chr;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._cookieChannel = value;\n\t\t\t\tthis.updateKey();\n\t\t\t\tthis.updateClusteredFlags();\n\t\t}\n\t\tget cookieChannel() {\n\t\t\t\treturn this._cookieChannel;\n\t\t}\n\t\tset cookieTransform(value) {\n\t\t\t\tif (this._cookieTransform === value) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._cookieTransform = value;\n\t\t\t\tthis._cookieTransformSet = !!value;\n\t\t\t\tif (value && !this._cookieOffset) {\n\t\t\t\t\t\tthis.cookieOffset = new Vec2();\n\t\t\t\t\t\tthis._cookieOffsetSet = false;\n\t\t\t\t}\n\t\t\t\tthis.updateKey();\n\t\t}\n\t\tget cookieTransform() {\n\t\t\t\treturn this._cookieTransform;\n\t\t}\n\t\tset cookieOffset(value) {\n\t\t\t\tif (this._cookieOffset === value) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst xformNew = !!(this._cookieTransformSet || value);\n\t\t\t\tif (xformNew && !value && this._cookieOffset) {\n\t\t\t\t\t\tthis._cookieOffset.set(0, 0);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._cookieOffset = value;\n\t\t\t\t}\n\t\t\t\tthis._cookieOffsetSet = !!value;\n\t\t\t\tif (value && !this._cookieTransform) {\n\t\t\t\t\t\tthis.cookieTransform = new Vec4(1, 1, 0, 0);\n\t\t\t\t\t\tthis._cookieTransformSet = false;\n\t\t\t\t}\n\t\t\t\tthis.updateKey();\n\t\t}\n\t\tget cookieOffset() {\n\t\t\t\treturn this._cookieOffset;\n\t\t}\n\t\tbeginFrame() {\n\t\t\t\tthis.visibleThisFrame = this._type === LIGHTTYPE_DIRECTIONAL && this._enabled;\n\t\t\t\tthis.maxScreenSize = 0;\n\t\t\t\tthis.atlasViewportAllocated = false;\n\t\t\t\tthis.atlasSlotUpdated = false;\n\t\t}\n\t\t_destroyShadowMap() {\n\t\t\t\tthis.releaseRenderData();\n\t\t\t\tif (this._shadowMap) {\n\t\t\t\t\t\tif (!this._shadowMap.cached) {\n\t\t\t\t\t\t\t\tthis._shadowMap.destroy();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._shadowMap = null;\n\t\t\t\t}\n\t\t\t\tif (this.shadowUpdateMode === SHADOWUPDATE_NONE) {\n\t\t\t\t\t\tthis.shadowUpdateMode = SHADOWUPDATE_THISFRAME;\n\t\t\t\t}\n\t\t\t\tif (this.shadowUpdateOverrides) {\n\t\t\t\t\t\tfor(let i = 0; i < this.shadowUpdateOverrides.length; i++){\n\t\t\t\t\t\t\t\tif (this.shadowUpdateOverrides[i] === SHADOWUPDATE_NONE) {\n\t\t\t\t\t\t\t\t\t\tthis.shadowUpdateOverrides[i] = SHADOWUPDATE_THISFRAME;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tgetRenderData(camera, face) {\n\t\t\t\tfor(let i = 0; i < this._renderData.length; i++){\n\t\t\t\t\t\tconst current = this._renderData[i];\n\t\t\t\t\t\tif (current.camera === camera && current.face === face) {\n\t\t\t\t\t\t\t\treturn current;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst rd = new LightRenderData(camera, face, this);\n\t\t\t\tthis._renderData.push(rd);\n\t\t\t\treturn rd;\n\t\t}\n\t\tclone() {\n\t\t\t\tconst clone = new Light(this.device, this.clusteredLighting);\n\t\t\t\tclone.type = this._type;\n\t\t\t\tclone.setColor(this._color);\n\t\t\t\tclone.intensity = this._intensity;\n\t\t\t\tclone.affectSpecularity = this._affectSpecularity;\n\t\t\t\tclone.luminance = this._luminance;\n\t\t\t\tclone.castShadows = this.castShadows;\n\t\t\t\tclone._enabled = this._enabled;\n\t\t\t\tclone.attenuationStart = this.attenuationStart;\n\t\t\t\tclone.attenuationEnd = this.attenuationEnd;\n\t\t\t\tclone.falloffMode = this._falloffMode;\n\t\t\t\tclone.shadowType = this._shadowType;\n\t\t\t\tclone.vsmBlurSize = this._vsmBlurSize;\n\t\t\t\tclone.vsmBlurMode = this.vsmBlurMode;\n\t\t\t\tclone.vsmBias = this.vsmBias;\n\t\t\t\tclone.shadowUpdateMode = this.shadowUpdateMode;\n\t\t\t\tclone.mask = this.mask;\n\t\t\t\tif (this.shadowUpdateOverrides) {\n\t\t\t\t\t\tclone.shadowUpdateOverrides = this.shadowUpdateOverrides.slice();\n\t\t\t\t}\n\t\t\t\tclone.innerConeAngle = this._innerConeAngle;\n\t\t\t\tclone.outerConeAngle = this._outerConeAngle;\n\t\t\t\tclone.numCascades = this.numCascades;\n\t\t\t\tclone.cascadeDistribution = this.cascadeDistribution;\n\t\t\t\tclone.cascadeBlend = this._cascadeBlend;\n\t\t\t\tclone.shape = this._shape;\n\t\t\t\tclone.shadowDepthState.copy(this.shadowDepthState);\n\t\t\t\tclone.shadowBias = this.shadowBias;\n\t\t\t\tclone.normalOffsetBias = this._normalOffsetBias;\n\t\t\t\tclone.shadowResolution = this._shadowResolution;\n\t\t\t\tclone.shadowDistance = this.shadowDistance;\n\t\t\t\tclone.shadowIntensity = this.shadowIntensity;\n\t\t\t\tclone.shadowSamples = this.shadowSamples;\n\t\t\t\tclone.shadowBlockerSamples = this.shadowBlockerSamples;\n\t\t\t\tclone.penumbraSize = this.penumbraSize;\n\t\t\t\tclone.penumbraFalloff = this.penumbraFalloff;\n\t\t\t\treturn clone;\n\t\t}\n\t\tstatic getLightUnitConversion(type, outerAngle = Math.PI / 4, innerAngle = 0) {\n\t\t\t\tswitch(type){\n\t\t\t\t\t\tcase LIGHTTYPE_SPOT:\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tconst falloffEnd = Math.cos(outerAngle);\n\t\t\t\t\t\t\t\t\t\tconst falloffStart = Math.cos(innerAngle);\n\t\t\t\t\t\t\t\t\t\treturn 2 * Math.PI * (1 - falloffStart + (falloffStart - falloffEnd) / 2.0);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\tcase LIGHTTYPE_OMNI:\n\t\t\t\t\t\t\t\treturn 4 * Math.PI;\n\t\t\t\t\t\tcase LIGHTTYPE_DIRECTIONAL:\n\t\t\t\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t}\n\t\t_getUniformBiasValues(lightRenderData) {\n\t\t\t\tconst farClip = lightRenderData.shadowCamera._farClip;\n\t\t\t\tswitch(this._type){\n\t\t\t\t\t\tcase LIGHTTYPE_OMNI:\n\t\t\t\t\t\t\t\ttmpBiases.bias = this.shadowBias;\n\t\t\t\t\t\t\t\ttmpBiases.normalBias = this._normalOffsetBias;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase LIGHTTYPE_SPOT:\n\t\t\t\t\t\t\t\tif (this._isVsm) {\n\t\t\t\t\t\t\t\t\t\ttmpBiases.bias = -1e-5 * 20;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\ttmpBiases.bias = this.shadowBias * 20;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\ttmpBiases.normalBias = this._isVsm ? this.vsmBias / (this.attenuationEnd / 7.0) : this._normalOffsetBias;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase LIGHTTYPE_DIRECTIONAL:\n\t\t\t\t\t\t\t\tif (this._isVsm) {\n\t\t\t\t\t\t\t\t\t\ttmpBiases.bias = -1e-5 * 20;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\ttmpBiases.bias = this.shadowBias / farClip * 100;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\ttmpBiases.normalBias = this._isVsm ? this.vsmBias / (farClip / 7.0) : this._normalOffsetBias;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\treturn tmpBiases;\n\t\t}\n\t\tgetColor() {\n\t\t\t\treturn this._color;\n\t\t}\n\t\tgetBoundingSphere(sphere) {\n\t\t\t\tif (this._type === LIGHTTYPE_SPOT) {\n\t\t\t\t\t\tconst size = this.attenuationEnd;\n\t\t\t\t\t\tconst angle = this._outerConeAngle;\n\t\t\t\t\t\tconst cosAngle = this._outerConeAngleCos;\n\t\t\t\t\t\tconst node = this._node;\n\t\t\t\t\t\ttmpVec.copy(node.up);\n\t\t\t\t\t\tif (angle > 45) {\n\t\t\t\t\t\t\t\tsphere.radius = size * this._outerConeAngleSin;\n\t\t\t\t\t\t\t\ttmpVec.mulScalar(-size * cosAngle);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tsphere.radius = size / (2 * cosAngle);\n\t\t\t\t\t\t\t\ttmpVec.mulScalar(-sphere.radius);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsphere.center.add2(node.getPosition(), tmpVec);\n\t\t\t\t} else if (this._type === LIGHTTYPE_OMNI) {\n\t\t\t\t\t\tsphere.center = this._node.getPosition();\n\t\t\t\t\t\tsphere.radius = this.attenuationEnd;\n\t\t\t\t}\n\t\t}\n\t\tgetBoundingBox(box) {\n\t\t\t\tif (this._type === LIGHTTYPE_SPOT) {\n\t\t\t\t\t\tconst range = this.attenuationEnd;\n\t\t\t\t\t\tconst angle = this._outerConeAngle;\n\t\t\t\t\t\tconst node = this._node;\n\t\t\t\t\t\tconst scl = Math.abs(Math.sin(angle * math.DEG_TO_RAD) * range);\n\t\t\t\t\t\tbox.center.set(0, -range * 0.5, 0);\n\t\t\t\t\t\tbox.halfExtents.set(scl, range * 0.5, scl);\n\t\t\t\t\t\tbox.setFromTransformedAabb(box, node.getWorldTransform(), true);\n\t\t\t\t} else if (this._type === LIGHTTYPE_OMNI) {\n\t\t\t\t\t\tbox.center.copy(this._node.getPosition());\n\t\t\t\t\t\tbox.halfExtents.set(this.attenuationEnd, this.attenuationEnd, this.attenuationEnd);\n\t\t\t\t}\n\t\t}\n\t\t_updateShadowBias() {\n\t\t\t\tif (this._type === LIGHTTYPE_OMNI && !this.clusteredLighting) {\n\t\t\t\t\t\tthis.shadowDepthState.depthBias = 0;\n\t\t\t\t\t\tthis.shadowDepthState.depthBiasSlope = 0;\n\t\t\t\t} else {\n\t\t\t\t\t\tconst bias = this.shadowBias * -1e3;\n\t\t\t\t\t\tthis.shadowDepthState.depthBias = bias;\n\t\t\t\t\t\tthis.shadowDepthState.depthBiasSlope = bias;\n\t\t\t\t}\n\t\t}\n\t\t_updateLinearColor() {\n\t\t\t\tlet intensity = this._intensity;\n\t\t\t\tif (this._usePhysicalUnits) {\n\t\t\t\t\t\tintensity = this._luminance / Light.getLightUnitConversion(this._type, this._outerConeAngle * math.DEG_TO_RAD, this._innerConeAngle * math.DEG_TO_RAD);\n\t\t\t\t}\n\t\t\t\tconst color = this._color;\n\t\t\t\tconst colorLinear = this._colorLinear;\n\t\t\t\tif (intensity >= 1) {\n\t\t\t\t\t\ttmpColor.linear(color).mulScalar(intensity);\n\t\t\t\t} else {\n\t\t\t\t\t\ttmpColor.copy(color).mulScalar(intensity).linear();\n\t\t\t\t}\n\t\t\t\tcolorLinear[0] = tmpColor.r;\n\t\t\t\tcolorLinear[1] = tmpColor.g;\n\t\t\t\tcolorLinear[2] = tmpColor.b;\n\t\t\t\tthis.updateClusterData(true);\n\t\t}\n\t\tsetColor() {\n\t\t\t\tif (arguments.length === 1) {\n\t\t\t\t\t\tthis._color.set(arguments[0].r, arguments[0].g, arguments[0].b);\n\t\t\t\t} else if (arguments.length === 3) {\n\t\t\t\t\t\tthis._color.set(arguments[0], arguments[1], arguments[2]);\n\t\t\t\t}\n\t\t\t\tthis._updateLinearColor();\n\t\t}\n\t\tlayersDirty() {\n\t\t\t\tthis.layers.forEach((layer)=>{\n\t\t\t\t\t\tif (layer.hasLight(this)) {\n\t\t\t\t\t\t\t\tlayer.markLightsDirty();\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\tupdateKey() {\n\t\t\t\tlet key = this._type << 29 | this._shadowType << 25 | this._falloffMode << 23 | (this._normalOffsetBias !== 0.0 ? 1 : 0) << 22 | (this._cookie ? 1 : 0) << 21 | (this._cookieFalloff ? 1 : 0) << 20 | chanId[this._cookieChannel.charAt(0)] << 18 | (this._cookieTransform ? 1 : 0) << 12 | this._shape << 10 | (this.numCascades > 0 ? 1 : 0) << 9 | (this._cascadeBlend > 0 ? 1 : 0) << 8 | (this.affectSpecularity ? 1 : 0) << 7 | this.mask << 6 | (this._castShadows ? 1 : 0) << 3;\n\t\t\t\tif (this._cookieChannel.length === 3) {\n\t\t\t\t\t\tkey |= chanId[this._cookieChannel.charAt(1)] << 16;\n\t\t\t\t\t\tkey |= chanId[this._cookieChannel.charAt(2)] << 14;\n\t\t\t\t}\n\t\t\t\tif (key !== this.key) {\n\t\t\t\t\t\tthis.layersDirty();\n\t\t\t\t}\n\t\t\t\tthis.key = key;\n\t\t}\n\t\tupdateClusteredFlags() {\n\t\t\t\tconst isDynamic = !!(this.mask & MASK_AFFECT_DYNAMIC);\n\t\t\t\tconst isLightmapped = !!(this.mask & MASK_AFFECT_LIGHTMAPPED);\n\t\t\t\tthis.clusteredFlags = (this.type === LIGHTTYPE_SPOT ? 1 : 0) << 30 | (this._shape & 0x3) << 28 | (this._falloffMode & 0x1) << 27 | (channelMap[this._cookieChannel] ?? 0) << 23 | (isDynamic ? 1 : 0) << 22 | (isLightmapped ? 1 : 0) << 21;\n\t\t}\n\t\tgetClusteredFlags(castShadows, useCookie) {\n\t\t\t\treturn this.clusteredFlags | ((castShadows ? Math.floor(this.shadowIntensity * 255) : 0) & 0xFF) << 0 | ((useCookie ? Math.floor(this.cookieIntensity * 255) : 0) & 0xFF) << 8;\n\t\t}\n\t\tupdateClusterData(updateColor, updateAngles) {\n\t\t\t\tconst { clusteredData16 } = this;\n\t\t\t\tconst float2Half = FloatPacking.float2Half;\n\t\t\t\tif (updateColor) {\n\t\t\t\t\t\tclusteredData16[0] = float2Half(math.clamp(this._colorLinear[0] / LIGHT_COLOR_DIVIDER, 0, 65504));\n\t\t\t\t\t\tclusteredData16[1] = float2Half(math.clamp(this._colorLinear[1] / LIGHT_COLOR_DIVIDER, 0, 65504));\n\t\t\t\t\t\tclusteredData16[2] = float2Half(math.clamp(this._colorLinear[2] / LIGHT_COLOR_DIVIDER, 0, 65504));\n\t\t\t\t}\n\t\t\t\tif (updateAngles) {\n\t\t\t\t\t\tconst cosThreshold = 0.5;\n\t\t\t\t\t\tlet flags = 0;\n\t\t\t\t\t\tconst angleShrinkFactor = 0.99;\n\t\t\t\t\t\tlet innerCos = Math.cos(this._innerConeAngle * angleShrinkFactor * math.DEG_TO_RAD);\n\t\t\t\t\t\tif (innerCos > cosThreshold) {\n\t\t\t\t\t\t\t\tinnerCos = 1.0 - innerCos;\n\t\t\t\t\t\t\t\tflags |= 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlet outerCos = Math.cos(this._outerConeAngle * angleShrinkFactor * math.DEG_TO_RAD);\n\t\t\t\t\t\tif (outerCos > cosThreshold) {\n\t\t\t\t\t\t\t\touterCos = 1.0 - outerCos;\n\t\t\t\t\t\t\t\tflags |= 2;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclusteredData16[3] = flags;\n\t\t\t\t\t\tclusteredData16[4] = float2Half(innerCos);\n\t\t\t\t\t\tclusteredData16[5] = float2Half(outerCos);\n\t\t\t\t}\n\t\t}\n}\n\nclass LightingParams {\n\t\tconstructor(supportsAreaLights, maxTextureSize, dirtyLightsFnc){\n\t\t\t\tthis._areaLightsEnabled = false;\n\t\t\t\tthis._cells = new Vec3(10, 3, 10);\n\t\t\t\tthis._maxLightsPerCell = 255;\n\t\t\t\tthis._shadowsEnabled = true;\n\t\t\t\tthis._shadowType = SHADOW_PCF3_32F;\n\t\t\t\tthis._shadowAtlasResolution = 2048;\n\t\t\t\tthis._cookiesEnabled = false;\n\t\t\t\tthis._cookieAtlasResolution = 2048;\n\t\t\t\tthis.atlasSplit = null;\n\t\t\t\tthis._supportsAreaLights = supportsAreaLights;\n\t\t\t\tthis._maxTextureSize = maxTextureSize;\n\t\t\t\tthis._dirtyLightsFnc = dirtyLightsFnc;\n\t\t}\n\t\tapplySettings(render) {\n\t\t\t\tthis.shadowsEnabled = render.lightingShadowsEnabled ?? this.shadowsEnabled;\n\t\t\t\tthis.cookiesEnabled = render.lightingCookiesEnabled ?? this.cookiesEnabled;\n\t\t\t\tthis.areaLightsEnabled = render.lightingAreaLightsEnabled ?? this.areaLightsEnabled;\n\t\t\t\tthis.shadowAtlasResolution = render.lightingShadowAtlasResolution ?? this.shadowAtlasResolution;\n\t\t\t\tthis.cookieAtlasResolution = render.lightingCookieAtlasResolution ?? this.cookieAtlasResolution;\n\t\t\t\tthis.maxLightsPerCell = render.lightingMaxLightsPerCell ?? this.maxLightsPerCell;\n\t\t\t\tthis.shadowType = render.lightingShadowType ?? this.shadowType;\n\t\t\t\tif (render.lightingCells) {\n\t\t\t\t\t\tthis.cells = new Vec3(render.lightingCells);\n\t\t\t\t}\n\t\t}\n\t\tset cells(value) {\n\t\t\t\tthis._cells.copy(value);\n\t\t}\n\t\tget cells() {\n\t\t\t\treturn this._cells;\n\t\t}\n\t\tset maxLightsPerCell(value) {\n\t\t\t\tthis._maxLightsPerCell = math.clamp(value, 1, 255);\n\t\t}\n\t\tget maxLightsPerCell() {\n\t\t\t\treturn this._maxLightsPerCell;\n\t\t}\n\t\tset cookieAtlasResolution(value) {\n\t\t\t\tthis._cookieAtlasResolution = math.clamp(value, 32, this._maxTextureSize);\n\t\t}\n\t\tget cookieAtlasResolution() {\n\t\t\t\treturn this._cookieAtlasResolution;\n\t\t}\n\t\tset shadowAtlasResolution(value) {\n\t\t\t\tthis._shadowAtlasResolution = math.clamp(value, 32, this._maxTextureSize);\n\t\t}\n\t\tget shadowAtlasResolution() {\n\t\t\t\treturn this._shadowAtlasResolution;\n\t\t}\n\t\tset shadowType(value) {\n\t\t\t\tif (this._shadowType !== value) {\n\t\t\t\t\t\tthis._shadowType = value;\n\t\t\t\t\t\tthis._dirtyLightsFnc();\n\t\t\t\t}\n\t\t}\n\t\tget shadowType() {\n\t\t\t\treturn this._shadowType;\n\t\t}\n\t\tset cookiesEnabled(value) {\n\t\t\t\tif (this._cookiesEnabled !== value) {\n\t\t\t\t\t\tthis._cookiesEnabled = value;\n\t\t\t\t\t\tthis._dirtyLightsFnc();\n\t\t\t\t}\n\t\t}\n\t\tget cookiesEnabled() {\n\t\t\t\treturn this._cookiesEnabled;\n\t\t}\n\t\tset areaLightsEnabled(value) {\n\t\t\t\tif (this._supportsAreaLights) {\n\t\t\t\t\t\tif (this._areaLightsEnabled !== value) {\n\t\t\t\t\t\t\t\tthis._areaLightsEnabled = value;\n\t\t\t\t\t\t\t\tthis._dirtyLightsFnc();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget areaLightsEnabled() {\n\t\t\t\treturn this._areaLightsEnabled;\n\t\t}\n\t\tset shadowsEnabled(value) {\n\t\t\t\tif (this._shadowsEnabled !== value) {\n\t\t\t\t\t\tthis._shadowsEnabled = value;\n\t\t\t\t\t\tthis._dirtyLightsFnc();\n\t\t\t\t}\n\t\t}\n\t\tget shadowsEnabled() {\n\t\t\t\treturn this._shadowsEnabled;\n\t\t}\n}\n\nclass MorphInstance {\n\t\tconstructor(morph){\n\t\t\t\tthis.morph = morph;\n\t\t\t\tmorph.incRefCount();\n\t\t\t\tthis.device = morph.device;\n\t\t\t\tconst maxNumTargets = morph._targets.length;\n\t\t\t\tthis.shader = this._createShader(maxNumTargets);\n\t\t\t\tthis._weights = [];\n\t\t\t\tthis._weightMap = new Map();\n\t\t\t\tfor(let v = 0; v < morph._targets.length; v++){\n\t\t\t\t\t\tconst target = morph._targets[v];\n\t\t\t\t\t\tif (target.name) {\n\t\t\t\t\t\t\t\tthis._weightMap.set(target.name, v);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.setWeight(v, target.defaultWeight);\n\t\t\t\t}\n\t\t\t\tthis._shaderMorphWeights = new Float32Array(maxNumTargets);\n\t\t\t\tthis._shaderMorphIndex = new Uint32Array(maxNumTargets);\n\t\t\t\tconst createRT = (name, textureVar)=>{\n\t\t\t\t\t\tthis[textureVar] = morph._createTexture(name, morph._renderTextureFormat);\n\t\t\t\t\t\treturn new RenderTarget({\n\t\t\t\t\t\t\t\tcolorBuffer: this[textureVar],\n\t\t\t\t\t\t\t\tdepth: false\n\t\t\t\t\t\t});\n\t\t\t\t};\n\t\t\t\tif (morph.morphPositions) {\n\t\t\t\t\t\tthis.rtPositions = createRT('MorphRTPos', 'texturePositions');\n\t\t\t\t}\n\t\t\t\tif (morph.morphNormals) {\n\t\t\t\t\t\tthis.rtNormals = createRT('MorphRTNrm', 'textureNormals');\n\t\t\t\t}\n\t\t\t\tthis._textureParams = new Float32Array([\n\t\t\t\t\t\tmorph.morphTextureWidth,\n\t\t\t\t\t\tmorph.morphTextureHeight\n\t\t\t\t]);\n\t\t\t\tconst halfSize = morph.aabb.halfExtents;\n\t\t\t\tthis._aabbSize = new Float32Array([\n\t\t\t\t\t\thalfSize.x * 4,\n\t\t\t\t\t\thalfSize.y * 4,\n\t\t\t\t\t\thalfSize.z * 4\n\t\t\t\t]);\n\t\t\t\tconst min = morph.aabb.getMin();\n\t\t\t\tthis._aabbMin = new Float32Array([\n\t\t\t\t\t\tmin.x * 2,\n\t\t\t\t\t\tmin.y * 2,\n\t\t\t\t\t\tmin.z * 2\n\t\t\t\t]);\n\t\t\t\tthis._aabbNrmSize = new Float32Array([\n\t\t\t\t\t\t2,\n\t\t\t\t\t\t2,\n\t\t\t\t\t\t2\n\t\t\t\t]);\n\t\t\t\tthis._aabbNrmMin = new Float32Array([\n\t\t\t\t\t\t-1,\n\t\t\t\t\t\t-1,\n\t\t\t\t\t\t-1\n\t\t\t\t]);\n\t\t\t\tthis.aabbSizeId = this.device.scope.resolve('aabbSize');\n\t\t\t\tthis.aabbMinId = this.device.scope.resolve('aabbMin');\n\t\t\t\tthis.morphTextureId = this.device.scope.resolve('morphTexture');\n\t\t\t\tthis.morphFactor = this.device.scope.resolve('morphFactor[0]');\n\t\t\t\tthis.morphIndex = this.device.scope.resolve('morphIndex[0]');\n\t\t\t\tthis.countId = this.device.scope.resolve('count');\n\t\t\t\tthis.zeroTextures = false;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.shader = null;\n\t\t\t\tconst morph = this.morph;\n\t\t\t\tif (morph) {\n\t\t\t\t\t\tthis.morph = null;\n\t\t\t\t\t\tmorph.decRefCount();\n\t\t\t\t\t\tif (morph.refCount < 1) {\n\t\t\t\t\t\t\t\tmorph.destroy();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.rtPositions?.destroy();\n\t\t\t\tthis.rtPositions = null;\n\t\t\t\tthis.texturePositions?.destroy();\n\t\t\t\tthis.texturePositions = null;\n\t\t\t\tthis.rtNormals?.destroy();\n\t\t\t\tthis.rtNormals = null;\n\t\t\t\tthis.textureNormals?.destroy();\n\t\t\t\tthis.textureNormals = null;\n\t\t}\n\t\tclone() {\n\t\t\t\treturn new MorphInstance(this.morph);\n\t\t}\n\t\t_getWeightIndex(key) {\n\t\t\t\tif (typeof key === 'string') {\n\t\t\t\t\t\tconst index = this._weightMap.get(key);\n\t\t\t\t\t\treturn index;\n\t\t\t\t}\n\t\t\t\treturn key;\n\t\t}\n\t\tgetWeight(key) {\n\t\t\t\tconst index = this._getWeightIndex(key);\n\t\t\t\treturn this._weights[index];\n\t\t}\n\t\tsetWeight(key, weight) {\n\t\t\t\tconst index = this._getWeightIndex(key);\n\t\t\t\tthis._weights[index] = weight;\n\t\t\t\tthis._dirty = true;\n\t\t}\n\t\t_createShader(maxCount) {\n\t\t\t\tconst defines = new Map();\n\t\t\t\tdefines.set('{MORPH_TEXTURE_MAX_COUNT}', maxCount);\n\t\t\t\tif (this.morph.intRenderFormat) defines.set('MORPH_INT', '');\n\t\t\t\tconst outputType = this.morph.intRenderFormat ? 'uvec4' : 'vec4';\n\t\t\t\treturn ShaderUtils.createShader(this.device, {\n\t\t\t\t\t\tuniqueName: `TextureMorphShader_${maxCount}-${this.morph.intRenderFormat ? 'int' : 'float'}`,\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\tvertex_position: SEMANTIC_POSITION\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvertexChunk: 'morphVS',\n\t\t\t\t\t\tfragmentChunk: 'morphPS',\n\t\t\t\t\t\tfragmentDefines: defines,\n\t\t\t\t\t\tfragmentOutputTypes: [\n\t\t\t\t\t\t\t\toutputType\n\t\t\t\t\t\t]\n\t\t\t\t});\n\t\t}\n\t\t_updateTextureRenderTarget(renderTarget, activeCount, isPos) {\n\t\t\t\tconst { morph, device } = this;\n\t\t\t\tthis.setAabbUniforms(isPos);\n\t\t\t\tthis.morphTextureId.setValue(isPos ? morph.targetsTexturePositions : morph.targetsTextureNormals);\n\t\t\t\tdevice.setBlendState(BlendState.NOBLEND);\n\t\t\t\tthis.countId.setValue(activeCount);\n\t\t\t\tthis.morphFactor.setValue(this._shaderMorphWeights);\n\t\t\t\tthis.morphIndex.setValue(this._shaderMorphIndex);\n\t\t\t\tdrawQuadWithShader(device, renderTarget, this.shader);\n\t\t}\n\t\t_updateTextureMorph(activeCount) {\n\t\t\t\tthis.device;\n\t\t\t\tif (activeCount > 0 || !this.zeroTextures) {\n\t\t\t\t\t\tif (this.rtPositions) {\n\t\t\t\t\t\t\t\tthis._updateTextureRenderTarget(this.rtPositions, activeCount, true);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.rtNormals) {\n\t\t\t\t\t\t\t\tthis._updateTextureRenderTarget(this.rtNormals, activeCount, false);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.zeroTextures = activeCount === 0;\n\t\t\t\t}\n\t\t}\n\t\tsetAabbUniforms(isPos = true) {\n\t\t\t\tthis.aabbSizeId.setValue(isPos ? this._aabbSize : this._aabbNrmSize);\n\t\t\t\tthis.aabbMinId.setValue(isPos ? this._aabbMin : this._aabbNrmMin);\n\t\t}\n\t\tprepareRendering(device) {\n\t\t\t\tthis.setAabbUniforms();\n\t\t}\n\t\tupdate() {\n\t\t\t\tthis._dirty = false;\n\t\t\t\tconst targets = this.morph._targets;\n\t\t\t\tconst epsilon = 0.00001;\n\t\t\t\tconst weights = this._shaderMorphWeights;\n\t\t\t\tconst indices = this._shaderMorphIndex;\n\t\t\t\tlet activeCount = 0;\n\t\t\t\tfor(let i = 0; i < targets.length; i++){\n\t\t\t\t\t\tif (Math.abs(this.getWeight(i)) > epsilon) {\n\t\t\t\t\t\t\t\tweights[activeCount] = this.getWeight(i);\n\t\t\t\t\t\t\t\tindices[activeCount] = i;\n\t\t\t\t\t\t\t\tactiveCount++;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._updateTextureMorph(activeCount);\n\t\t}\n}\n\nclass Model {\n\t\tconstructor(){\n\t\t\t\tthis.graph = null;\n\t\t\t\tthis.meshInstances = [];\n\t\t\t\tthis.skinInstances = [];\n\t\t\t\tthis.morphInstances = [];\n\t\t\t\tthis.cameras = [];\n\t\t\t\tthis.lights = [];\n\t\t\t\tthis._shadersVersion = 0;\n\t\t\t\tthis._immutable = false;\n\t\t}\n\t\tgetGraph() {\n\t\t\t\treturn this.graph;\n\t\t}\n\t\tsetGraph(graph) {\n\t\t\t\tthis.graph = graph;\n\t\t}\n\t\tgetCameras() {\n\t\t\t\treturn this.cameras;\n\t\t}\n\t\tsetCameras(cameras) {\n\t\t\t\tthis.cameras = cameras;\n\t\t}\n\t\tgetLights() {\n\t\t\t\treturn this.lights;\n\t\t}\n\t\tsetLights(lights) {\n\t\t\t\tthis.lights = lights;\n\t\t}\n\t\tgetMaterials() {\n\t\t\t\tconst materials = [];\n\t\t\t\tfor(let i = 0; i < this.meshInstances.length; i++){\n\t\t\t\t\t\tconst meshInstance = this.meshInstances[i];\n\t\t\t\t\t\tif (materials.indexOf(meshInstance.material) === -1) {\n\t\t\t\t\t\t\t\tmaterials.push(meshInstance.material);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn materials;\n\t\t}\n\t\tclone() {\n\t\t\t\tconst srcNodes = [];\n\t\t\t\tconst cloneNodes = [];\n\t\t\t\tconst _duplicate = function(node) {\n\t\t\t\t\t\tconst newNode = node.clone();\n\t\t\t\t\t\tsrcNodes.push(node);\n\t\t\t\t\t\tcloneNodes.push(newNode);\n\t\t\t\t\t\tfor(let idx = 0; idx < node._children.length; idx++){\n\t\t\t\t\t\t\t\tnewNode.addChild(_duplicate(node._children[idx]));\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn newNode;\n\t\t\t\t};\n\t\t\t\tconst cloneGraph = _duplicate(this.graph);\n\t\t\t\tconst cloneMeshInstances = [];\n\t\t\t\tconst cloneSkinInstances = [];\n\t\t\t\tconst cloneMorphInstances = [];\n\t\t\t\tfor(let i = 0; i < this.skinInstances.length; i++){\n\t\t\t\t\t\tconst skin = this.skinInstances[i].skin;\n\t\t\t\t\t\tconst cloneSkinInstance = new SkinInstance(skin);\n\t\t\t\t\t\tconst bones = [];\n\t\t\t\t\t\tfor(let j = 0; j < skin.boneNames.length; j++){\n\t\t\t\t\t\t\t\tconst boneName = skin.boneNames[j];\n\t\t\t\t\t\t\t\tconst bone = cloneGraph.findByName(boneName);\n\t\t\t\t\t\t\t\tbones.push(bone);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcloneSkinInstance.bones = bones;\n\t\t\t\t\t\tcloneSkinInstances.push(cloneSkinInstance);\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < this.morphInstances.length; i++){\n\t\t\t\t\t\tconst morph = this.morphInstances[i].morph;\n\t\t\t\t\t\tconst cloneMorphInstance = new MorphInstance(morph);\n\t\t\t\t\t\tcloneMorphInstances.push(cloneMorphInstance);\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < this.meshInstances.length; i++){\n\t\t\t\t\t\tconst meshInstance = this.meshInstances[i];\n\t\t\t\t\t\tconst nodeIndex = srcNodes.indexOf(meshInstance.node);\n\t\t\t\t\t\tconst cloneMeshInstance = new MeshInstance(meshInstance.mesh, meshInstance.material, cloneNodes[nodeIndex]);\n\t\t\t\t\t\tif (meshInstance.skinInstance) {\n\t\t\t\t\t\t\t\tconst skinInstanceIndex = this.skinInstances.indexOf(meshInstance.skinInstance);\n\t\t\t\t\t\t\t\tcloneMeshInstance.skinInstance = cloneSkinInstances[skinInstanceIndex];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (meshInstance.morphInstance) {\n\t\t\t\t\t\t\t\tconst morphInstanceIndex = this.morphInstances.indexOf(meshInstance.morphInstance);\n\t\t\t\t\t\t\t\tcloneMeshInstance.morphInstance = cloneMorphInstances[morphInstanceIndex];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcloneMeshInstances.push(cloneMeshInstance);\n\t\t\t\t}\n\t\t\t\tconst clone = new Model();\n\t\t\t\tclone.graph = cloneGraph;\n\t\t\t\tclone.meshInstances = cloneMeshInstances;\n\t\t\t\tclone.skinInstances = cloneSkinInstances;\n\t\t\t\tclone.morphInstances = cloneMorphInstances;\n\t\t\t\tclone.getGraph().syncHierarchy();\n\t\t\t\treturn clone;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tconst meshInstances = this.meshInstances;\n\t\t\t\tfor(let i = 0; i < meshInstances.length; i++){\n\t\t\t\t\t\tmeshInstances[i].destroy();\n\t\t\t\t}\n\t\t\t\tthis.meshInstances.length = 0;\n\t\t}\n\t\tgenerateWireframe() {\n\t\t\t\tMeshInstance._prepareRenderStyleForArray(this.meshInstances, RENDERSTYLE_WIREFRAME);\n\t\t}\n}\n\nclass Morph extends RefCountedObject {\n\t\tconstructor(targets, graphicsDevice, { preferHighPrecision = false } = {}){\n\t\t\t\tsuper();\n\t\t\t\tthis.device = graphicsDevice;\n\t\t\t\tconst device = graphicsDevice;\n\t\t\t\tthis.preferHighPrecision = preferHighPrecision;\n\t\t\t\tthis._targets = targets.slice();\n\t\t\t\tconst renderableHalf = device.textureHalfFloatRenderable ? PIXELFORMAT_RGBA16F : undefined;\n\t\t\t\tconst renderableFloat = device.textureFloatRenderable ? PIXELFORMAT_RGBA32F : undefined;\n\t\t\t\tthis._renderTextureFormat = this.preferHighPrecision ? renderableFloat ?? renderableHalf : renderableHalf ?? renderableFloat;\n\t\t\t\tthis._renderTextureFormat = this._renderTextureFormat ?? PIXELFORMAT_RGBA16U;\n\t\t\t\tthis.intRenderFormat = isIntegerPixelFormat(this._renderTextureFormat);\n\t\t\t\tthis._textureFormat = this.preferHighPrecision ? PIXELFORMAT_RGBA32F : PIXELFORMAT_RGBA16F;\n\t\t\t\tthis._init();\n\t\t\t\tthis._updateMorphFlags();\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.vertexBufferIds?.destroy();\n\t\t\t\tthis.vertexBufferIds = null;\n\t\t\t\tthis.targetsTexturePositions?.destroy();\n\t\t\t\tthis.targetsTexturePositions = null;\n\t\t\t\tthis.targetsTextureNormals?.destroy();\n\t\t\t\tthis.targetsTextureNormals = null;\n\t\t}\n\t\tget aabb() {\n\t\t\t\tif (!this._aabb) {\n\t\t\t\t\t\tconst min = new Vec3();\n\t\t\t\t\t\tconst max = new Vec3();\n\t\t\t\t\t\tfor(let i = 0; i < this._targets.length; i++){\n\t\t\t\t\t\t\t\tconst targetAabb = this._targets[i].aabb;\n\t\t\t\t\t\t\t\tmin.min(targetAabb.getMin());\n\t\t\t\t\t\t\t\tmax.max(targetAabb.getMax());\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._aabb = new BoundingBox();\n\t\t\t\t\t\tthis._aabb.setMinMax(min, max);\n\t\t\t\t}\n\t\t\t\treturn this._aabb;\n\t\t}\n\t\tget morphPositions() {\n\t\t\t\treturn this._morphPositions;\n\t\t}\n\t\tget morphNormals() {\n\t\t\t\treturn this._morphNormals;\n\t\t}\n\t\t_init() {\n\t\t\t\tthis._initTextureBased();\n\t\t\t\tfor(let i = 0; i < this._targets.length; i++){\n\t\t\t\t\t\tthis._targets[i]._postInit();\n\t\t\t\t}\n\t\t}\n\t\t_findSparseSet(deltaArrays, ids, usedDataIndices) {\n\t\t\t\tlet freeIndex = 1;\n\t\t\t\tconst dataCount = deltaArrays[0].length;\n\t\t\t\tfor(let v = 0; v < dataCount; v += 3){\n\t\t\t\t\t\tlet vertexUsed = false;\n\t\t\t\t\t\tfor(let i = 0; i < deltaArrays.length; i++){\n\t\t\t\t\t\t\t\tconst data = deltaArrays[i];\n\t\t\t\t\t\t\t\tif (data[v] !== 0 || data[v + 1] !== 0 || data[v + 2] !== 0) {\n\t\t\t\t\t\t\t\t\t\tvertexUsed = true;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (vertexUsed) {\n\t\t\t\t\t\t\t\tids.push(freeIndex);\n\t\t\t\t\t\t\t\tusedDataIndices.push(v / 3);\n\t\t\t\t\t\t\t\tfreeIndex++;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tids.push(0);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn freeIndex;\n\t\t}\n\t\t_initTextureBased() {\n\t\t\t\tconst deltaArrays = [], deltaInfos = [];\n\t\t\t\tconst targets = this._targets;\n\t\t\t\tfor(let i = 0; i < targets.length; i++){\n\t\t\t\t\t\tconst target = targets[i];\n\t\t\t\t\t\tif (target.options.deltaPositions) {\n\t\t\t\t\t\t\t\tdeltaArrays.push(target.options.deltaPositions);\n\t\t\t\t\t\t\t\tdeltaInfos.push(true);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (target.options.deltaNormals) {\n\t\t\t\t\t\t\t\tdeltaArrays.push(target.options.deltaNormals);\n\t\t\t\t\t\t\t\tdeltaInfos.push(false);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst ids = [], usedDataIndices = [];\n\t\t\t\tconst freeIndex = this._findSparseSet(deltaArrays, ids, usedDataIndices);\n\t\t\t\tconst maxTextureSize = this.device.maxTextureSize;\n\t\t\t\tlet morphTextureWidth = Math.ceil(Math.sqrt(freeIndex));\n\t\t\t\tmorphTextureWidth = Math.min(morphTextureWidth, maxTextureSize);\n\t\t\t\tconst morphTextureHeight = Math.ceil(freeIndex / morphTextureWidth);\n\t\t\t\tif (morphTextureHeight > maxTextureSize) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.morphTextureWidth = morphTextureWidth;\n\t\t\t\tthis.morphTextureHeight = morphTextureHeight;\n\t\t\t\tlet halfFloat = false;\n\t\t\t\tconst float2Half = FloatPacking.float2Half;\n\t\t\t\tif (this._textureFormat === PIXELFORMAT_RGBA16F) {\n\t\t\t\t\t\thalfFloat = true;\n\t\t\t\t}\n\t\t\t\tconst texturesDataPositions = [];\n\t\t\t\tconst texturesDataNormals = [];\n\t\t\t\tconst textureDataSize = morphTextureWidth * morphTextureHeight * 4;\n\t\t\t\tfor(let i = 0; i < deltaArrays.length; i++){\n\t\t\t\t\t\tconst data = deltaArrays[i];\n\t\t\t\t\t\tconst textureData = this._textureFormat === PIXELFORMAT_RGBA16F ? new Uint16Array(textureDataSize) : new Float32Array(textureDataSize);\n\t\t\t\t\t\t(deltaInfos[i] ? texturesDataPositions : texturesDataNormals).push(textureData);\n\t\t\t\t\t\tif (halfFloat) {\n\t\t\t\t\t\t\t\tfor(let v = 0; v < usedDataIndices.length; v++){\n\t\t\t\t\t\t\t\t\t\tconst index = usedDataIndices[v] * 3;\n\t\t\t\t\t\t\t\t\t\tconst dstIndex = v * 4 + 4;\n\t\t\t\t\t\t\t\t\t\ttextureData[dstIndex] = float2Half(data[index]);\n\t\t\t\t\t\t\t\t\t\ttextureData[dstIndex + 1] = float2Half(data[index + 1]);\n\t\t\t\t\t\t\t\t\t\ttextureData[dstIndex + 2] = float2Half(data[index + 2]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tfor(let v = 0; v < usedDataIndices.length; v++){\n\t\t\t\t\t\t\t\t\t\tconst index = usedDataIndices[v] * 3;\n\t\t\t\t\t\t\t\t\t\tconst dstIndex = v * 4 + 4;\n\t\t\t\t\t\t\t\t\t\ttextureData[dstIndex] = data[index];\n\t\t\t\t\t\t\t\t\t\ttextureData[dstIndex + 1] = data[index + 1];\n\t\t\t\t\t\t\t\t\t\ttextureData[dstIndex + 2] = data[index + 2];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (texturesDataPositions.length > 0) {\n\t\t\t\t\t\tthis.targetsTexturePositions = this._createTexture('MorphPositionsTexture', this._textureFormat, targets.length, [\n\t\t\t\t\t\t\t\ttexturesDataPositions\n\t\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t\tif (texturesDataNormals.length > 0) {\n\t\t\t\t\t\tthis.targetsTextureNormals = this._createTexture('MorphNormalsTexture', this._textureFormat, targets.length, [\n\t\t\t\t\t\t\t\ttexturesDataNormals\n\t\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t\tconst formatDesc = [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tsemantic: SEMANTIC_ATTR15,\n\t\t\t\t\t\t\t\tcomponents: 1,\n\t\t\t\t\t\t\t\ttype: TYPE_UINT32,\n\t\t\t\t\t\t\t\tasInt: true\n\t\t\t\t\t\t}\n\t\t\t\t];\n\t\t\t\tthis.vertexBufferIds = new VertexBuffer(this.device, new VertexFormat(this.device, formatDesc, ids.length), ids.length, {\n\t\t\t\t\t\tdata: new Uint32Array(ids)\n\t\t\t\t});\n\t\t\t\treturn true;\n\t\t}\n\t\tget targets() {\n\t\t\t\treturn this._targets;\n\t\t}\n\t\t_updateMorphFlags() {\n\t\t\t\tthis._morphPositions = false;\n\t\t\t\tthis._morphNormals = false;\n\t\t\t\tfor(let i = 0; i < this._targets.length; i++){\n\t\t\t\t\t\tconst target = this._targets[i];\n\t\t\t\t\t\tif (target.morphPositions) {\n\t\t\t\t\t\t\t\tthis._morphPositions = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (target.morphNormals) {\n\t\t\t\t\t\t\t\tthis._morphNormals = true;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_createTexture(name, format, arrayLength, levels) {\n\t\t\t\treturn new Texture(this.device, {\n\t\t\t\t\t\tlevels: levels,\n\t\t\t\t\t\tarrayLength: arrayLength,\n\t\t\t\t\t\twidth: this.morphTextureWidth,\n\t\t\t\t\t\theight: this.morphTextureHeight,\n\t\t\t\t\t\tformat: format,\n\t\t\t\t\t\tcubemap: false,\n\t\t\t\t\t\tmipmaps: false,\n\t\t\t\t\t\tminFilter: FILTER_NEAREST,\n\t\t\t\t\t\tmagFilter: FILTER_NEAREST,\n\t\t\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\tname: name\n\t\t\t\t});\n\t\t}\n}\n\nclass MorphTarget {\n\t\tconstructor(options){\n\t\t\t\tthis.used = false;\n\t\t\t\tthis.options = options;\n\t\t\t\tthis._name = options.name;\n\t\t\t\tthis._defaultWeight = options.defaultWeight || 0;\n\t\t\t\tthis._aabb = options.aabb;\n\t\t\t\tthis.deltaPositions = options.deltaPositions;\n\t\t\t\tthis.morphPositions = !!options.deltaPositions;\n\t\t\t\tthis.morphNormals = !!options.deltaNormals;\n\t\t}\n\t\tget name() {\n\t\t\t\treturn this._name;\n\t\t}\n\t\tget defaultWeight() {\n\t\t\t\treturn this._defaultWeight;\n\t\t}\n\t\tget aabb() {\n\t\t\t\tif (!this._aabb) {\n\t\t\t\t\t\tthis._aabb = new BoundingBox();\n\t\t\t\t\t\tif (this.deltaPositions) {\n\t\t\t\t\t\t\t\tthis._aabb.compute(this.deltaPositions);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this._aabb;\n\t\t}\n\t\tclone() {\n\t\t\t\treturn new MorphTarget(this.options);\n\t\t}\n\t\t_postInit() {\n\t\t\t\tif (!this.options.preserveData) {\n\t\t\t\t\t\tthis.options = null;\n\t\t\t\t}\n\t\t\t\tthis.used = true;\n\t\t}\n}\n\nlet nonUniformScale;\nlet uniformScale = 1;\nconst particleTexChannels$1 = 4;\nconst rotMat = new Mat4();\nconst rotMatInv = new Mat4();\nconst randomPosTformed = new Vec3();\nconst randomPos = new Vec3();\nconst rndFactor3Vec = new Vec3();\nconst particlePosPrev = new Vec3();\nconst velocityVec = new Vec3();\nconst localVelocityVec = new Vec3();\nconst velocityVec2 = new Vec3();\nconst localVelocityVec2 = new Vec3();\nconst radialVelocityVec = new Vec3();\nconst particlePos = new Vec3();\nconst particleFinalPos = new Vec3();\nconst moveDirVec = new Vec3();\nconst tmpVec3$1 = new Vec3();\nfunction frac(f) {\n\t\treturn f - Math.floor(f);\n}\nfunction saturate$1(x) {\n\t\treturn Math.max(Math.min(x, 1), 0);\n}\nfunction glMod(x, y) {\n\t\treturn x - y * Math.floor(x / y);\n}\nfunction encodeFloatRGBA(v) {\n\t\tlet encX = frac(v);\n\t\tlet encY = frac(255.0 * v);\n\t\tlet encZ = frac(65025.0 * v);\n\t\tlet encW = frac(160581375.0 * v);\n\t\tencX -= encY / 255.0;\n\t\tencY -= encZ / 255.0;\n\t\tencZ -= encW / 255.0;\n\t\tencW -= encW / 255.0;\n\t\treturn [\n\t\t\t\tencX,\n\t\t\t\tencY,\n\t\t\t\tencZ,\n\t\t\t\tencW\n\t\t];\n}\nfunction encodeFloatRG(v) {\n\t\tlet encX = frac(v);\n\t\tlet encY = frac(255.0 * v);\n\t\tencX -= encY / 255.0;\n\t\tencY -= encY / 255.0;\n\t\treturn [\n\t\t\t\tencX,\n\t\t\t\tencY\n\t\t];\n}\nclass ParticleCPUUpdater {\n\t\tconstructor(emitter){\n\t\t\t\tthis._emitter = emitter;\n\t\t}\n\t\tcalcSpawnPosition(particleTex, spawnMatrix, extentsInnerRatioUniform, emitterPos, i) {\n\t\t\t\tconst emitter = this._emitter;\n\t\t\t\tconst rX = Math.random();\n\t\t\t\tconst rY = Math.random();\n\t\t\t\tconst rZ = Math.random();\n\t\t\t\tconst rW = Math.random();\n\t\t\t\tif (emitter.useCpu) {\n\t\t\t\t\t\tparticleTex[i * particleTexChannels$1 + 0 + emitter.numParticlesPot * 2 * particleTexChannels$1] = rX;\n\t\t\t\t\t\tparticleTex[i * particleTexChannels$1 + 1 + emitter.numParticlesPot * 2 * particleTexChannels$1] = rY;\n\t\t\t\t\t\tparticleTex[i * particleTexChannels$1 + 2 + emitter.numParticlesPot * 2 * particleTexChannels$1] = rZ;\n\t\t\t\t}\n\t\t\t\trandomPos.x = rX - 0.5;\n\t\t\t\trandomPos.y = rY - 0.5;\n\t\t\t\trandomPos.z = rZ - 0.5;\n\t\t\t\tif (emitter.emitterShape === EMITTERSHAPE_BOX) {\n\t\t\t\t\t\tconst max = Math.max(Math.abs(randomPos.x), Math.max(Math.abs(randomPos.y), Math.abs(randomPos.z)));\n\t\t\t\t\t\tconst edgeX = max + (0.5 - max) * extentsInnerRatioUniform[0];\n\t\t\t\t\t\tconst edgeY = max + (0.5 - max) * extentsInnerRatioUniform[1];\n\t\t\t\t\t\tconst edgeZ = max + (0.5 - max) * extentsInnerRatioUniform[2];\n\t\t\t\t\t\trandomPos.x = edgeX * (max === Math.abs(randomPos.x) ? Math.sign(randomPos.x) : 2 * randomPos.x);\n\t\t\t\t\t\trandomPos.y = edgeY * (max === Math.abs(randomPos.y) ? Math.sign(randomPos.y) : 2 * randomPos.y);\n\t\t\t\t\t\trandomPos.z = edgeZ * (max === Math.abs(randomPos.z) ? Math.sign(randomPos.z) : 2 * randomPos.z);\n\t\t\t\t\t\tif (!emitter.localSpace) {\n\t\t\t\t\t\t\t\trandomPosTformed.copy(emitterPos).add(spawnMatrix.transformPoint(randomPos));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\trandomPosTformed.copy(spawnMatrix.transformPoint(randomPos));\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\trandomPos.normalize();\n\t\t\t\t\t\tconst spawnBoundsSphereInnerRatio = emitter.emitterRadius === 0 ? 0 : emitter.emitterRadiusInner / emitter.emitterRadius;\n\t\t\t\t\t\tconst r = rW * (1.0 - spawnBoundsSphereInnerRatio) + spawnBoundsSphereInnerRatio;\n\t\t\t\t\t\tif (!emitter.localSpace) {\n\t\t\t\t\t\t\t\trandomPosTformed.copy(emitterPos).add(randomPos.mulScalar(r * emitter.emitterRadius));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\trandomPosTformed.copy(randomPos.mulScalar(r * emitter.emitterRadius));\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst particleRate = math.lerp(emitter.rate, emitter.rate2, rX);\n\t\t\t\tlet startSpawnTime = -particleRate * i;\n\t\t\t\tif (emitter.pack8) {\n\t\t\t\t\t\tconst packX = (randomPosTformed.x - emitter.worldBounds.center.x) / emitter.worldBoundsSize.x + 0.5;\n\t\t\t\t\t\tconst packY = (randomPosTformed.y - emitter.worldBounds.center.y) / emitter.worldBoundsSize.y + 0.5;\n\t\t\t\t\t\tconst packZ = (randomPosTformed.z - emitter.worldBounds.center.z) / emitter.worldBoundsSize.z + 0.5;\n\t\t\t\t\t\tlet packA = math.lerp(emitter.startAngle * math.DEG_TO_RAD, emitter.startAngle2 * math.DEG_TO_RAD, rX);\n\t\t\t\t\t\tpackA = packA % (Math.PI * 2) / (Math.PI * 2);\n\t\t\t\t\t\tconst rg0 = encodeFloatRG(packX);\n\t\t\t\t\t\tparticleTex[i * particleTexChannels$1] = rg0[0];\n\t\t\t\t\t\tparticleTex[i * particleTexChannels$1 + 1] = rg0[1];\n\t\t\t\t\t\tconst ba0 = encodeFloatRG(packY);\n\t\t\t\t\t\tparticleTex[i * particleTexChannels$1 + 2] = ba0[0];\n\t\t\t\t\t\tparticleTex[i * particleTexChannels$1 + 3] = ba0[1];\n\t\t\t\t\t\tconst rg1 = encodeFloatRG(packZ);\n\t\t\t\t\t\tparticleTex[i * particleTexChannels$1 + 0 + emitter.numParticlesPot * particleTexChannels$1] = rg1[0];\n\t\t\t\t\t\tparticleTex[i * particleTexChannels$1 + 1 + emitter.numParticlesPot * particleTexChannels$1] = rg1[1];\n\t\t\t\t\t\tconst ba1 = encodeFloatRG(packA);\n\t\t\t\t\t\tparticleTex[i * particleTexChannels$1 + 2 + emitter.numParticlesPot * particleTexChannels$1] = ba1[0];\n\t\t\t\t\t\tparticleTex[i * particleTexChannels$1 + 3 + emitter.numParticlesPot * particleTexChannels$1] = ba1[1];\n\t\t\t\t\t\tconst a2 = 1.0;\n\t\t\t\t\t\tparticleTex[i * particleTexChannels$1 + 3 + emitter.numParticlesPot * particleTexChannels$1 * 2] = a2;\n\t\t\t\t\t\tconst maxNegLife = Math.max(emitter.lifetime, (emitter.numParticles - 1.0) * Math.max(emitter.rate, emitter.rate2));\n\t\t\t\t\t\tconst maxPosLife = emitter.lifetime + 1.0;\n\t\t\t\t\t\tstartSpawnTime = (startSpawnTime + maxNegLife) / (maxNegLife + maxPosLife);\n\t\t\t\t\t\tconst rgba3 = encodeFloatRGBA(startSpawnTime);\n\t\t\t\t\t\tparticleTex[i * particleTexChannels$1 + 0 + emitter.numParticlesPot * particleTexChannels$1 * 3] = rgba3[0];\n\t\t\t\t\t\tparticleTex[i * particleTexChannels$1 + 1 + emitter.numParticlesPot * particleTexChannels$1 * 3] = rgba3[1];\n\t\t\t\t\t\tparticleTex[i * particleTexChannels$1 + 2 + emitter.numParticlesPot * particleTexChannels$1 * 3] = rgba3[2];\n\t\t\t\t\t\tparticleTex[i * particleTexChannels$1 + 3 + emitter.numParticlesPot * particleTexChannels$1 * 3] = rgba3[3];\n\t\t\t\t} else {\n\t\t\t\t\t\tparticleTex[i * particleTexChannels$1] = randomPosTformed.x;\n\t\t\t\t\t\tparticleTex[i * particleTexChannels$1 + 1] = randomPosTformed.y;\n\t\t\t\t\t\tparticleTex[i * particleTexChannels$1 + 2] = randomPosTformed.z;\n\t\t\t\t\t\tparticleTex[i * particleTexChannels$1 + 3] = math.lerp(emitter.startAngle * math.DEG_TO_RAD, emitter.startAngle2 * math.DEG_TO_RAD, rX);\n\t\t\t\t\t\tparticleTex[i * particleTexChannels$1 + 3 + emitter.numParticlesPot * particleTexChannels$1] = startSpawnTime;\n\t\t\t\t}\n\t\t}\n\t\tupdate(data, vbToSort, particleTex, spawnMatrix, extentsInnerRatioUniform, emitterPos, delta, isOnStop) {\n\t\t\t\tlet a, b, c;\n\t\t\t\tconst emitter = this._emitter;\n\t\t\t\tif (emitter.meshInstance.node) {\n\t\t\t\t\t\tconst fullMat = emitter.meshInstance.node.worldTransform;\n\t\t\t\t\t\tfor(let j = 0; j < 12; j++){\n\t\t\t\t\t\t\t\trotMat.data[j] = fullMat.data[j];\n\t\t\t\t\t\t}\n\t\t\t\t\t\trotMatInv.copy(rotMat);\n\t\t\t\t\t\trotMatInv.invert();\n\t\t\t\t\t\tnonUniformScale = emitter.meshInstance.node.localScale;\n\t\t\t\t\t\tuniformScale = Math.max(Math.max(nonUniformScale.x, nonUniformScale.y), nonUniformScale.z);\n\t\t\t\t}\n\t\t\t\temitterPos = emitter.meshInstance.node === null || emitter.localSpace ? Vec3.ZERO : emitter.meshInstance.node.getPosition();\n\t\t\t\tconst posCam = emitter.camera ? emitter.camera._node.getPosition() : Vec3.ZERO;\n\t\t\t\tconst vertSize = !emitter.useMesh ? 15 : 17;\n\t\t\t\tlet cf, cc;\n\t\t\t\tlet rotSpeed, rotSpeed2, scale2, alpha, alpha2, radialSpeed, radialSpeed2;\n\t\t\t\tconst precision1 = emitter.precision - 1;\n\t\t\t\tfor(let i = 0; i < emitter.numParticles; i++){\n\t\t\t\t\t\tconst id = Math.floor(emitter.vbCPU[i * emitter.numParticleVerts * (emitter.useMesh ? 6 : 4) + 3]);\n\t\t\t\t\t\tconst rndFactor = particleTex[id * particleTexChannels$1 + 0 + emitter.numParticlesPot * 2 * particleTexChannels$1];\n\t\t\t\t\t\trndFactor3Vec.x = rndFactor;\n\t\t\t\t\t\trndFactor3Vec.y = particleTex[id * particleTexChannels$1 + 1 + emitter.numParticlesPot * 2 * particleTexChannels$1];\n\t\t\t\t\t\trndFactor3Vec.z = particleTex[id * particleTexChannels$1 + 2 + emitter.numParticlesPot * 2 * particleTexChannels$1];\n\t\t\t\t\t\tconst particleRate = emitter.rate + (emitter.rate2 - emitter.rate) * rndFactor;\n\t\t\t\t\t\tconst particleLifetime = emitter.lifetime;\n\t\t\t\t\t\tlet life = particleTex[id * particleTexChannels$1 + 3 + emitter.numParticlesPot * particleTexChannels$1] + delta;\n\t\t\t\t\t\tconst nlife = saturate$1(life / particleLifetime);\n\t\t\t\t\t\tlet scale = 0;\n\t\t\t\t\t\tlet alphaDiv = 0;\n\t\t\t\t\t\tconst angle = 0;\n\t\t\t\t\t\tconst respawn = life - delta <= 0.0 || life >= particleLifetime;\n\t\t\t\t\t\tif (respawn) {\n\t\t\t\t\t\t\t\tthis.calcSpawnPosition(particleTex, spawnMatrix, extentsInnerRatioUniform, emitterPos, id);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlet particleEnabled = life > 0.0 && life < particleLifetime;\n\t\t\t\t\t\tif (particleEnabled) {\n\t\t\t\t\t\t\t\tc = nlife * precision1;\n\t\t\t\t\t\t\t\tcf = Math.floor(c);\n\t\t\t\t\t\t\t\tcc = Math.ceil(c);\n\t\t\t\t\t\t\t\tc %= 1;\n\t\t\t\t\t\t\t\ta = emitter.qRotSpeed[cf];\n\t\t\t\t\t\t\t\tb = emitter.qRotSpeed[cc];\n\t\t\t\t\t\t\t\trotSpeed = a + (b - a) * c;\n\t\t\t\t\t\t\t\ta = emitter.qRotSpeed2[cf];\n\t\t\t\t\t\t\t\tb = emitter.qRotSpeed2[cc];\n\t\t\t\t\t\t\t\trotSpeed2 = a + (b - a) * c;\n\t\t\t\t\t\t\t\ta = emitter.qScale[cf];\n\t\t\t\t\t\t\t\tb = emitter.qScale[cc];\n\t\t\t\t\t\t\t\tscale = a + (b - a) * c;\n\t\t\t\t\t\t\t\ta = emitter.qScale2[cf];\n\t\t\t\t\t\t\t\tb = emitter.qScale2[cc];\n\t\t\t\t\t\t\t\tscale2 = a + (b - a) * c;\n\t\t\t\t\t\t\t\ta = emitter.qAlpha[cf];\n\t\t\t\t\t\t\t\tb = emitter.qAlpha[cc];\n\t\t\t\t\t\t\t\talpha = a + (b - a) * c;\n\t\t\t\t\t\t\t\ta = emitter.qAlpha2[cf];\n\t\t\t\t\t\t\t\tb = emitter.qAlpha2[cc];\n\t\t\t\t\t\t\t\talpha2 = a + (b - a) * c;\n\t\t\t\t\t\t\t\ta = emitter.qRadialSpeed[cf];\n\t\t\t\t\t\t\t\tb = emitter.qRadialSpeed[cc];\n\t\t\t\t\t\t\t\tradialSpeed = a + (b - a) * c;\n\t\t\t\t\t\t\t\ta = emitter.qRadialSpeed2[cf];\n\t\t\t\t\t\t\t\tb = emitter.qRadialSpeed2[cc];\n\t\t\t\t\t\t\t\tradialSpeed2 = a + (b - a) * c;\n\t\t\t\t\t\t\t\tradialSpeed += (radialSpeed2 - radialSpeed) * (rndFactor * 100.0 % 1.0);\n\t\t\t\t\t\t\t\tparticlePosPrev.x = particleTex[id * particleTexChannels$1];\n\t\t\t\t\t\t\t\tparticlePosPrev.y = particleTex[id * particleTexChannels$1 + 1];\n\t\t\t\t\t\t\t\tparticlePosPrev.z = particleTex[id * particleTexChannels$1 + 2];\n\t\t\t\t\t\t\t\tif (!emitter.localSpace) {\n\t\t\t\t\t\t\t\t\t\tradialVelocityVec.copy(particlePosPrev).sub(emitterPos);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tradialVelocityVec.copy(particlePosPrev);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tradialVelocityVec.normalize().mulScalar(radialSpeed);\n\t\t\t\t\t\t\t\tcf *= 3;\n\t\t\t\t\t\t\t\tcc *= 3;\n\t\t\t\t\t\t\t\ta = emitter.qLocalVelocity[cf];\n\t\t\t\t\t\t\t\tb = emitter.qLocalVelocity[cc];\n\t\t\t\t\t\t\t\tlocalVelocityVec.x = a + (b - a) * c;\n\t\t\t\t\t\t\t\ta = emitter.qLocalVelocity[cf + 1];\n\t\t\t\t\t\t\t\tb = emitter.qLocalVelocity[cc + 1];\n\t\t\t\t\t\t\t\tlocalVelocityVec.y = a + (b - a) * c;\n\t\t\t\t\t\t\t\ta = emitter.qLocalVelocity[cf + 2];\n\t\t\t\t\t\t\t\tb = emitter.qLocalVelocity[cc + 2];\n\t\t\t\t\t\t\t\tlocalVelocityVec.z = a + (b - a) * c;\n\t\t\t\t\t\t\t\ta = emitter.qLocalVelocity2[cf];\n\t\t\t\t\t\t\t\tb = emitter.qLocalVelocity2[cc];\n\t\t\t\t\t\t\t\tlocalVelocityVec2.x = a + (b - a) * c;\n\t\t\t\t\t\t\t\ta = emitter.qLocalVelocity2[cf + 1];\n\t\t\t\t\t\t\t\tb = emitter.qLocalVelocity2[cc + 1];\n\t\t\t\t\t\t\t\tlocalVelocityVec2.y = a + (b - a) * c;\n\t\t\t\t\t\t\t\ta = emitter.qLocalVelocity2[cf + 2];\n\t\t\t\t\t\t\t\tb = emitter.qLocalVelocity2[cc + 2];\n\t\t\t\t\t\t\t\tlocalVelocityVec2.z = a + (b - a) * c;\n\t\t\t\t\t\t\t\ta = emitter.qVelocity[cf];\n\t\t\t\t\t\t\t\tb = emitter.qVelocity[cc];\n\t\t\t\t\t\t\t\tvelocityVec.x = a + (b - a) * c;\n\t\t\t\t\t\t\t\ta = emitter.qVelocity[cf + 1];\n\t\t\t\t\t\t\t\tb = emitter.qVelocity[cc + 1];\n\t\t\t\t\t\t\t\tvelocityVec.y = a + (b - a) * c;\n\t\t\t\t\t\t\t\ta = emitter.qVelocity[cf + 2];\n\t\t\t\t\t\t\t\tb = emitter.qVelocity[cc + 2];\n\t\t\t\t\t\t\t\tvelocityVec.z = a + (b - a) * c;\n\t\t\t\t\t\t\t\ta = emitter.qVelocity2[cf];\n\t\t\t\t\t\t\t\tb = emitter.qVelocity2[cc];\n\t\t\t\t\t\t\t\tvelocityVec2.x = a + (b - a) * c;\n\t\t\t\t\t\t\t\ta = emitter.qVelocity2[cf + 1];\n\t\t\t\t\t\t\t\tb = emitter.qVelocity2[cc + 1];\n\t\t\t\t\t\t\t\tvelocityVec2.y = a + (b - a) * c;\n\t\t\t\t\t\t\t\ta = emitter.qVelocity2[cf + 2];\n\t\t\t\t\t\t\t\tb = emitter.qVelocity2[cc + 2];\n\t\t\t\t\t\t\t\tvelocityVec2.z = a + (b - a) * c;\n\t\t\t\t\t\t\t\tlocalVelocityVec.x += (localVelocityVec2.x - localVelocityVec.x) * rndFactor3Vec.x;\n\t\t\t\t\t\t\t\tlocalVelocityVec.y += (localVelocityVec2.y - localVelocityVec.y) * rndFactor3Vec.y;\n\t\t\t\t\t\t\t\tlocalVelocityVec.z += (localVelocityVec2.z - localVelocityVec.z) * rndFactor3Vec.z;\n\t\t\t\t\t\t\t\tif (emitter.initialVelocity > 0) {\n\t\t\t\t\t\t\t\t\t\tif (emitter.emitterShape === EMITTERSHAPE_SPHERE) {\n\t\t\t\t\t\t\t\t\t\t\t\trandomPos.copy(rndFactor3Vec).mulScalar(2).sub(Vec3.ONE).normalize();\n\t\t\t\t\t\t\t\t\t\t\t\tlocalVelocityVec.add(randomPos.mulScalar(emitter.initialVelocity));\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tlocalVelocityVec.add(Vec3.FORWARD.mulScalar(emitter.initialVelocity));\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tvelocityVec.x += (velocityVec2.x - velocityVec.x) * rndFactor3Vec.x;\n\t\t\t\t\t\t\t\tvelocityVec.y += (velocityVec2.y - velocityVec.y) * rndFactor3Vec.y;\n\t\t\t\t\t\t\t\tvelocityVec.z += (velocityVec2.z - velocityVec.z) * rndFactor3Vec.z;\n\t\t\t\t\t\t\t\trotSpeed += (rotSpeed2 - rotSpeed) * rndFactor3Vec.y;\n\t\t\t\t\t\t\t\tscale = (scale + (scale2 - scale) * (rndFactor * 10000.0 % 1.0)) * uniformScale;\n\t\t\t\t\t\t\t\talphaDiv = (alpha2 - alpha) * (rndFactor * 1000.0 % 1.0);\n\t\t\t\t\t\t\t\tif (emitter.meshInstance.node) {\n\t\t\t\t\t\t\t\t\t\tif (!emitter.localSpace) {\n\t\t\t\t\t\t\t\t\t\t\t\trotMat.transformPoint(localVelocityVec, localVelocityVec);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tlocalVelocityVec.x /= nonUniformScale.x;\n\t\t\t\t\t\t\t\t\t\t\t\tlocalVelocityVec.y /= nonUniformScale.y;\n\t\t\t\t\t\t\t\t\t\t\t\tlocalVelocityVec.z /= nonUniformScale.z;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (!emitter.localSpace) {\n\t\t\t\t\t\t\t\t\t\tlocalVelocityVec.add(velocityVec.mul(nonUniformScale));\n\t\t\t\t\t\t\t\t\t\tlocalVelocityVec.add(radialVelocityVec.mul(nonUniformScale));\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\trotMatInv.transformPoint(velocityVec, velocityVec);\n\t\t\t\t\t\t\t\t\t\tlocalVelocityVec.add(velocityVec).add(radialVelocityVec);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tmoveDirVec.copy(localVelocityVec);\n\t\t\t\t\t\t\t\tparticlePos.copy(particlePosPrev).add(localVelocityVec.mulScalar(delta));\n\t\t\t\t\t\t\t\tparticleFinalPos.copy(particlePos);\n\t\t\t\t\t\t\t\tparticleTex[id * particleTexChannels$1] = particleFinalPos.x;\n\t\t\t\t\t\t\t\tparticleTex[id * particleTexChannels$1 + 1] = particleFinalPos.y;\n\t\t\t\t\t\t\t\tparticleTex[id * particleTexChannels$1 + 2] = particleFinalPos.z;\n\t\t\t\t\t\t\t\tparticleTex[id * particleTexChannels$1 + 3] += rotSpeed * delta;\n\t\t\t\t\t\t\t\tif (emitter.wrap && emitter.wrapBounds) {\n\t\t\t\t\t\t\t\t\t\tif (!emitter.localSpace) {\n\t\t\t\t\t\t\t\t\t\t\t\tparticleFinalPos.sub(emitterPos);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tparticleFinalPos.x = glMod(particleFinalPos.x, emitter.wrapBounds.x) - emitter.wrapBounds.x * 0.5;\n\t\t\t\t\t\t\t\t\t\tparticleFinalPos.y = glMod(particleFinalPos.y, emitter.wrapBounds.y) - emitter.wrapBounds.y * 0.5;\n\t\t\t\t\t\t\t\t\t\tparticleFinalPos.z = glMod(particleFinalPos.z, emitter.wrapBounds.z) - emitter.wrapBounds.z * 0.5;\n\t\t\t\t\t\t\t\t\t\tif (!emitter.localSpace) {\n\t\t\t\t\t\t\t\t\t\t\t\tparticleFinalPos.add(emitterPos);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (emitter.sort > 0) {\n\t\t\t\t\t\t\t\t\t\tif (emitter.sort === 1) {\n\t\t\t\t\t\t\t\t\t\t\t\ttmpVec3$1.copy(particleFinalPos).sub(posCam);\n\t\t\t\t\t\t\t\t\t\t\t\temitter.particleDistance[id] = -(tmpVec3$1.x * tmpVec3$1.x + tmpVec3$1.y * tmpVec3$1.y + tmpVec3$1.z * tmpVec3$1.z);\n\t\t\t\t\t\t\t\t\t\t} else if (emitter.sort === 2) {\n\t\t\t\t\t\t\t\t\t\t\t\temitter.particleDistance[id] = life;\n\t\t\t\t\t\t\t\t\t\t} else if (emitter.sort === 3) {\n\t\t\t\t\t\t\t\t\t\t\t\temitter.particleDistance[id] = -life;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (isOnStop) {\n\t\t\t\t\t\t\t\tif (life < 0) {\n\t\t\t\t\t\t\t\t\t\tparticleTex[id * particleTexChannels$1 + 3 + emitter.numParticlesPot * 2 * particleTexChannels$1] = -1;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (life >= particleLifetime) {\n\t\t\t\t\t\t\t\t\t\tlife -= Math.max(particleLifetime, (emitter.numParticles - 1) * particleRate);\n\t\t\t\t\t\t\t\t\t\tparticleTex[id * particleTexChannels$1 + 3 + emitter.numParticlesPot * 2 * particleTexChannels$1] = emitter.loop ? 1 : -1;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (life < 0 && emitter.loop) {\n\t\t\t\t\t\t\t\t\t\tparticleTex[id * particleTexChannels$1 + 3 + emitter.numParticlesPot * 2 * particleTexChannels$1] = 1;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (particleTex[id * particleTexChannels$1 + 3 + emitter.numParticlesPot * 2 * particleTexChannels$1] < 0) {\n\t\t\t\t\t\t\t\tparticleEnabled = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tparticleTex[id * particleTexChannels$1 + 3 + emitter.numParticlesPot * particleTexChannels$1] = life;\n\t\t\t\t\t\tfor(let v = 0; v < emitter.numParticleVerts; v++){\n\t\t\t\t\t\t\t\tconst vbOffset = (i * emitter.numParticleVerts + v) * (emitter.useMesh ? 6 : 4);\n\t\t\t\t\t\t\t\tlet quadX = emitter.vbCPU[vbOffset];\n\t\t\t\t\t\t\t\tlet quadY = emitter.vbCPU[vbOffset + 1];\n\t\t\t\t\t\t\t\tlet quadZ = emitter.vbCPU[vbOffset + 2];\n\t\t\t\t\t\t\t\tif (!particleEnabled) {\n\t\t\t\t\t\t\t\t\t\tquadX = quadY = quadZ = 0;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst w = i * emitter.numParticleVerts * vertSize + v * vertSize;\n\t\t\t\t\t\t\t\tdata[w] = particleFinalPos.x;\n\t\t\t\t\t\t\t\tdata[w + 1] = particleFinalPos.y;\n\t\t\t\t\t\t\t\tdata[w + 2] = particleFinalPos.z;\n\t\t\t\t\t\t\t\tdata[w + 3] = nlife;\n\t\t\t\t\t\t\t\tdata[w + 4] = emitter.alignToMotion ? angle : particleTex[id * particleTexChannels$1 + 3];\n\t\t\t\t\t\t\t\tdata[w + 5] = scale;\n\t\t\t\t\t\t\t\tdata[w + 6] = alphaDiv;\n\t\t\t\t\t\t\t\tdata[w + 7] = moveDirVec.x;\n\t\t\t\t\t\t\t\tdata[w + 8] = quadX;\n\t\t\t\t\t\t\t\tdata[w + 9] = quadY;\n\t\t\t\t\t\t\t\tdata[w + 10] = quadZ;\n\t\t\t\t\t\t\t\tdata[w + 11] = moveDirVec.y;\n\t\t\t\t\t\t\t\tdata[w + 12] = id;\n\t\t\t\t\t\t\t\tdata[w + 13] = moveDirVec.z;\n\t\t\t\t\t\t\t\tdata[w + 14] = emitter.vbCPU[vbOffset + 3];\n\t\t\t\t\t\t\t\tif (emitter.useMesh) {\n\t\t\t\t\t\t\t\t\t\tdata[w + 15] = emitter.vbCPU[vbOffset + 4];\n\t\t\t\t\t\t\t\t\t\tdata[w + 16] = emitter.vbCPU[vbOffset + 5];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (emitter.sort > PARTICLESORT_NONE && emitter.camera) {\n\t\t\t\t\t\tconst vbStride = emitter.useMesh ? 6 : 4;\n\t\t\t\t\t\tconst particleDistance = emitter.particleDistance;\n\t\t\t\t\t\tfor(let i = 0; i < emitter.numParticles; i++){\n\t\t\t\t\t\t\t\tvbToSort[i][0] = i;\n\t\t\t\t\t\t\t\tvbToSort[i][1] = particleDistance[Math.floor(emitter.vbCPU[i * emitter.numParticleVerts * vbStride + 3])];\n\t\t\t\t\t\t}\n\t\t\t\t\t\temitter.vbOld.set(emitter.vbCPU);\n\t\t\t\t\t\tvbToSort.sort((p1, p2)=>{\n\t\t\t\t\t\t\t\treturn p1[1] - p2[1];\n\t\t\t\t\t\t});\n\t\t\t\t\t\tfor(let i = 0; i < emitter.numParticles; i++){\n\t\t\t\t\t\t\t\tconst src = vbToSort[i][0] * emitter.numParticleVerts * vbStride;\n\t\t\t\t\t\t\t\tconst dest = i * emitter.numParticleVerts * vbStride;\n\t\t\t\t\t\t\t\tfor(let j = 0; j < emitter.numParticleVerts * vbStride; j++){\n\t\t\t\t\t\t\t\t\t\temitter.vbCPU[dest + j] = emitter.vbOld[src + j];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n}\n\nconst spawnMatrix3 = new Mat3();\nconst emitterMatrix3 = new Mat3();\nconst emitterMatrix3Inv = new Mat3();\nclass ParticleGPUUpdater {\n\t\tconstructor(emitter, gd){\n\t\t\t\tthis._emitter = emitter;\n\t\t\t\tthis.frameRandomUniform = new Float32Array(3);\n\t\t\t\tthis.emitterPosUniform = new Float32Array(3);\n\t\t\t\tthis.emitterScaleUniform = new Float32Array([\n\t\t\t\t\t\t1,\n\t\t\t\t\t\t1,\n\t\t\t\t\t\t1\n\t\t\t\t]);\n\t\t\t\tthis.worldBoundsMulUniform = new Float32Array(3);\n\t\t\t\tthis.worldBoundsAddUniform = new Float32Array(3);\n\t\t\t\tthis.inBoundsSizeUniform = new Float32Array(3);\n\t\t\t\tthis.inBoundsCenterUniform = new Float32Array(3);\n\t\t\t\tthis.constantParticleTexIN = gd.scope.resolve('particleTexIN');\n\t\t\t\tthis.constantParticleTexOUT = gd.scope.resolve('particleTexOUT');\n\t\t\t\tthis.constantEmitterPos = gd.scope.resolve('emitterPos');\n\t\t\t\tthis.constantEmitterScale = gd.scope.resolve('emitterScale');\n\t\t\t\tthis.constantSpawnBounds = gd.scope.resolve('spawnBounds');\n\t\t\t\tthis.constantSpawnPosInnerRatio = gd.scope.resolve('spawnPosInnerRatio');\n\t\t\t\tthis.constantSpawnBoundsSphere = gd.scope.resolve('spawnBoundsSphere');\n\t\t\t\tthis.constantSpawnBoundsSphereInnerRatio = gd.scope.resolve('spawnBoundsSphereInnerRatio');\n\t\t\t\tthis.constantInitialVelocity = gd.scope.resolve('initialVelocity');\n\t\t\t\tthis.constantFrameRandom = gd.scope.resolve('frameRandom');\n\t\t\t\tthis.constantDelta = gd.scope.resolve('delta');\n\t\t\t\tthis.constantRate = gd.scope.resolve('rate');\n\t\t\t\tthis.constantRateDiv = gd.scope.resolve('rateDiv');\n\t\t\t\tthis.constantLifetime = gd.scope.resolve('lifetime');\n\t\t\t\tthis.constantGraphSampleSize = gd.scope.resolve('graphSampleSize');\n\t\t\t\tthis.constantGraphNumSamples = gd.scope.resolve('graphNumSamples');\n\t\t\t\tthis.constantInternalTex0 = gd.scope.resolve('internalTex0');\n\t\t\t\tthis.constantInternalTex1 = gd.scope.resolve('internalTex1');\n\t\t\t\tthis.constantInternalTex2 = gd.scope.resolve('internalTex2');\n\t\t\t\tthis.constantInternalTex3 = gd.scope.resolve('internalTex3');\n\t\t\t\tthis.constantEmitterMatrix = gd.scope.resolve('emitterMatrix');\n\t\t\t\tthis.constantEmitterMatrixInv = gd.scope.resolve('emitterMatrixInv');\n\t\t\t\tthis.constantNumParticles = gd.scope.resolve('numParticles');\n\t\t\t\tthis.constantNumParticlesPot = gd.scope.resolve('numParticlesPot');\n\t\t\t\tthis.constantLocalVelocityDivMult = gd.scope.resolve('localVelocityDivMult');\n\t\t\t\tthis.constantVelocityDivMult = gd.scope.resolve('velocityDivMult');\n\t\t\t\tthis.constantRotSpeedDivMult = gd.scope.resolve('rotSpeedDivMult');\n\t\t\t\tthis.constantSeed = gd.scope.resolve('seed');\n\t\t\t\tthis.constantStartAngle = gd.scope.resolve('startAngle');\n\t\t\t\tthis.constantStartAngle2 = gd.scope.resolve('startAngle2');\n\t\t\t\tthis.constantOutBoundsMul = gd.scope.resolve('outBoundsMul');\n\t\t\t\tthis.constantOutBoundsAdd = gd.scope.resolve('outBoundsAdd');\n\t\t\t\tthis.constantInBoundsSize = gd.scope.resolve('inBoundsSize');\n\t\t\t\tthis.constantInBoundsCenter = gd.scope.resolve('inBoundsCenter');\n\t\t\t\tthis.constantMaxVel = gd.scope.resolve('maxVel');\n\t\t\t\tthis.constantFaceTangent = gd.scope.resolve('faceTangent');\n\t\t\t\tthis.constantFaceBinorm = gd.scope.resolve('faceBinorm');\n\t\t\t\tthis.constantRadialSpeedDivMult = gd.scope.resolve('radialSpeedDivMult');\n\t\t}\n\t\t_setInputBounds() {\n\t\t\t\tthis.inBoundsSizeUniform[0] = this._emitter.prevWorldBoundsSize.x;\n\t\t\t\tthis.inBoundsSizeUniform[1] = this._emitter.prevWorldBoundsSize.y;\n\t\t\t\tthis.inBoundsSizeUniform[2] = this._emitter.prevWorldBoundsSize.z;\n\t\t\t\tthis.constantInBoundsSize.setValue(this.inBoundsSizeUniform);\n\t\t\t\tthis.inBoundsCenterUniform[0] = this._emitter.prevWorldBoundsCenter.x;\n\t\t\t\tthis.inBoundsCenterUniform[1] = this._emitter.prevWorldBoundsCenter.y;\n\t\t\t\tthis.inBoundsCenterUniform[2] = this._emitter.prevWorldBoundsCenter.z;\n\t\t\t\tthis.constantInBoundsCenter.setValue(this.inBoundsCenterUniform);\n\t\t}\n\t\trandomize() {\n\t\t\t\tthis.frameRandomUniform[0] = Math.random();\n\t\t\t\tthis.frameRandomUniform[1] = Math.random();\n\t\t\t\tthis.frameRandomUniform[2] = Math.random();\n\t\t}\n\t\tupdate(device, spawnMatrix, extentsInnerRatioUniform, delta, isOnStop) {\n\t\t\t\tconst emitter = this._emitter;\n\t\t\t\tdevice.setBlendState(BlendState.NOBLEND);\n\t\t\t\tdevice.setDepthState(DepthState.NODEPTH);\n\t\t\t\tdevice.setCullMode(CULLFACE_NONE);\n\t\t\t\tthis.randomize();\n\t\t\t\tthis.constantRadialSpeedDivMult.setValue(emitter.material.getParameter('radialSpeedDivMult').data);\n\t\t\t\tthis.constantGraphSampleSize.setValue(1.0 / emitter.precision);\n\t\t\t\tthis.constantGraphNumSamples.setValue(emitter.precision);\n\t\t\t\tthis.constantNumParticles.setValue(emitter.numParticles);\n\t\t\t\tthis.constantNumParticlesPot.setValue(emitter.numParticlesPot);\n\t\t\t\tthis.constantInternalTex0.setValue(emitter.internalTex0);\n\t\t\t\tthis.constantInternalTex1.setValue(emitter.internalTex1);\n\t\t\t\tthis.constantInternalTex2.setValue(emitter.internalTex2);\n\t\t\t\tthis.constantInternalTex3.setValue(emitter.internalTex3);\n\t\t\t\tconst node = emitter.meshInstance.node;\n\t\t\t\tconst emitterScale = node === null ? Vec3.ONE : node.localScale;\n\t\t\t\tif (emitter.pack8) {\n\t\t\t\t\t\tthis.worldBoundsMulUniform[0] = emitter.worldBoundsMul.x;\n\t\t\t\t\t\tthis.worldBoundsMulUniform[1] = emitter.worldBoundsMul.y;\n\t\t\t\t\t\tthis.worldBoundsMulUniform[2] = emitter.worldBoundsMul.z;\n\t\t\t\t\t\tthis.constantOutBoundsMul.setValue(this.worldBoundsMulUniform);\n\t\t\t\t\t\tthis.worldBoundsAddUniform[0] = emitter.worldBoundsAdd.x;\n\t\t\t\t\t\tthis.worldBoundsAddUniform[1] = emitter.worldBoundsAdd.y;\n\t\t\t\t\t\tthis.worldBoundsAddUniform[2] = emitter.worldBoundsAdd.z;\n\t\t\t\t\t\tthis.constantOutBoundsAdd.setValue(this.worldBoundsAddUniform);\n\t\t\t\t\t\tthis._setInputBounds();\n\t\t\t\t\t\tlet maxVel = emitter.maxVel * Math.max(Math.max(emitterScale.x, emitterScale.y), emitterScale.z);\n\t\t\t\t\t\tmaxVel = Math.max(maxVel, 1);\n\t\t\t\t\t\tthis.constantMaxVel.setValue(maxVel);\n\t\t\t\t}\n\t\t\t\tconst emitterPos = node === null || emitter.localSpace ? Vec3.ZERO : node.getPosition();\n\t\t\t\tconst emitterMatrix = node === null ? Mat4.IDENTITY : node.getWorldTransform();\n\t\t\t\tif (emitter.emitterShape === EMITTERSHAPE_BOX) {\n\t\t\t\t\t\tspawnMatrix3.setFromMat4(spawnMatrix);\n\t\t\t\t\t\tthis.constantSpawnBounds.setValue(spawnMatrix3.data);\n\t\t\t\t\t\tthis.constantSpawnPosInnerRatio.setValue(extentsInnerRatioUniform);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.constantSpawnBoundsSphere.setValue(emitter.emitterRadius);\n\t\t\t\t\t\tthis.constantSpawnBoundsSphereInnerRatio.setValue(emitter.emitterRadius === 0 ? 0 : emitter.emitterRadiusInner / emitter.emitterRadius);\n\t\t\t\t}\n\t\t\t\tthis.constantInitialVelocity.setValue(emitter.initialVelocity);\n\t\t\t\temitterMatrix3.setFromMat4(emitterMatrix);\n\t\t\t\temitterMatrix3Inv.invertMat4(emitterMatrix);\n\t\t\t\tthis.emitterPosUniform[0] = emitterPos.x;\n\t\t\t\tthis.emitterPosUniform[1] = emitterPos.y;\n\t\t\t\tthis.emitterPosUniform[2] = emitterPos.z;\n\t\t\t\tthis.constantEmitterPos.setValue(this.emitterPosUniform);\n\t\t\t\tthis.constantFrameRandom.setValue(this.frameRandomUniform);\n\t\t\t\tthis.constantDelta.setValue(delta);\n\t\t\t\tthis.constantRate.setValue(emitter.rate);\n\t\t\t\tthis.constantRateDiv.setValue(emitter.rate2 - emitter.rate);\n\t\t\t\tthis.constantStartAngle.setValue(emitter.startAngle * math.DEG_TO_RAD);\n\t\t\t\tthis.constantStartAngle2.setValue(emitter.startAngle2 * math.DEG_TO_RAD);\n\t\t\t\tthis.constantSeed.setValue(emitter.seed);\n\t\t\t\tthis.constantLifetime.setValue(emitter.lifetime);\n\t\t\t\tthis.emitterScaleUniform[0] = emitterScale.x;\n\t\t\t\tthis.emitterScaleUniform[1] = emitterScale.y;\n\t\t\t\tthis.emitterScaleUniform[2] = emitterScale.z;\n\t\t\t\tthis.constantEmitterScale.setValue(this.emitterScaleUniform);\n\t\t\t\tthis.constantEmitterMatrix.setValue(emitterMatrix3.data);\n\t\t\t\tthis.constantEmitterMatrixInv.setValue(emitterMatrix3Inv.data);\n\t\t\t\tthis.constantLocalVelocityDivMult.setValue(emitter.localVelocityUMax);\n\t\t\t\tthis.constantVelocityDivMult.setValue(emitter.velocityUMax);\n\t\t\t\tthis.constantRotSpeedDivMult.setValue(emitter.rotSpeedUMax[0]);\n\t\t\t\tlet texIN = emitter.swapTex ? emitter.particleTexOUT : emitter.particleTexIN;\n\t\t\t\ttexIN = emitter.beenReset ? emitter.particleTexStart : texIN;\n\t\t\t\tconst texOUT = emitter.swapTex ? emitter.particleTexIN : emitter.particleTexOUT;\n\t\t\t\tthis.constantParticleTexIN.setValue(texIN);\n\t\t\t\tdrawQuadWithShader(device, emitter.swapTex ? emitter.rtParticleTexIN : emitter.rtParticleTexOUT, !isOnStop ? emitter.loop ? emitter.shaderParticleUpdateRespawn : emitter.shaderParticleUpdateNoRespawn : emitter.shaderParticleUpdateOnStop);\n\t\t\t\temitter.material.setParameter('particleTexOUT', texIN);\n\t\t\t\temitter.material.setParameter('particleTexIN', texOUT);\n\t\t\t\temitter.beenReset = false;\n\t\t\t\temitter.swapTex = !emitter.swapTex;\n\t\t\t\temitter.prevWorldBoundsSize.copy(emitter.worldBoundsSize);\n\t\t\t\temitter.prevWorldBoundsCenter.copy(emitter.worldBounds.center);\n\t\t\t\tif (emitter.pack8) {\n\t\t\t\t\t\tthis._setInputBounds();\n\t\t\t\t}\n\t\t}\n}\n\nconst normalTypeNames = [\n\t\t'NONE',\n\t\t'VERTEX',\n\t\t'MAP'\n];\nclass ShaderGeneratorParticle extends ShaderGenerator {\n\t\tgenerateKey(options) {\n\t\t\t\tconst definesHash = ShaderGenerator.definesHash(options.defines);\n\t\t\t\tlet key = `particle_${definesHash}_`;\n\t\t\t\tfor(const prop in options){\n\t\t\t\t\t\tif (options.hasOwnProperty(prop)) {\n\t\t\t\t\t\t\t\tkey += options[prop];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn key;\n\t\t}\n\t\tcreateVertexDefines(options, attributes) {\n\t\t\t\tconst vDefines = new Map(options.defines);\n\t\t\t\tif (options.mesh) vDefines.set('USE_MESH', '');\n\t\t\t\tif (options.meshUv) vDefines.set('USE_MESH_UV', '');\n\t\t\t\tif (options.localSpace) vDefines.set('LOCAL_SPACE', '');\n\t\t\t\tif (options.screenSpace) vDefines.set('SCREEN_SPACE', '');\n\t\t\t\tif (options.animTex) vDefines.set('ANIMTEX', '');\n\t\t\t\tif (options.soft > 0) vDefines.set('SOFT', '');\n\t\t\t\tif (options.stretch > 0.0) vDefines.set('STRETCH', '');\n\t\t\t\tif (options.customFace) vDefines.set('CUSTOM_FACE', '');\n\t\t\t\tif (options.pack8) vDefines.set('PACK8', '');\n\t\t\t\tif (options.localSpace) vDefines.set('LOCAL_SPACE', '');\n\t\t\t\tif (options.animTexLoop) vDefines.set('ANIMTEX_LOOP', '');\n\t\t\t\tif (options.wrap) vDefines.set('WRAP', '');\n\t\t\t\tif (options.alignToMotion) vDefines.set('ALIGN_TO_MOTION', '');\n\t\t\t\tvDefines.set('NORMAL', normalTypeNames[options.normal]);\n\t\t\t\tattributes.particle_vertexData = SEMANTIC_POSITION;\n\t\t\t\tif (options.mesh && options.meshUv) {\n\t\t\t\t\t\tattributes.particle_uv = SEMANTIC_TEXCOORD0;\n\t\t\t\t}\n\t\t\t\tif (options.useCpu) {\n\t\t\t\t\t\tattributes.particle_vertexData2 = SEMANTIC_ATTR1;\n\t\t\t\t\t\tattributes.particle_vertexData3 = SEMANTIC_ATTR2;\n\t\t\t\t\t\tattributes.particle_vertexData4 = SEMANTIC_ATTR3;\n\t\t\t\t\t\tattributes.particle_vertexData5 = SEMANTIC_ATTR4;\n\t\t\t\t}\n\t\t\t\treturn vDefines;\n\t\t}\n\t\tcreateFragmentDefines(options) {\n\t\t\t\tconst fDefines = new Map(options.defines);\n\t\t\t\tif (options.soft > 0) fDefines.set('SOFT', '');\n\t\t\t\tif (options.halflambert) fDefines.set('HALF_LAMBERT', '');\n\t\t\t\tfDefines.set('NORMAL', normalTypeNames[options.normal]);\n\t\t\t\tfDefines.set('BLEND', blendNames[options.blend]);\n\t\t\t\treturn fDefines;\n\t\t}\n\t\tcreateShaderDefinition(device, options) {\n\t\t\t\tconst shaderLanguage = device.isWebGPU ? SHADERLANGUAGE_WGSL : SHADERLANGUAGE_GLSL;\n\t\t\t\tconst engineChunks = ShaderChunks.get(device, shaderLanguage);\n\t\t\t\tconst attributes = {};\n\t\t\t\tconst vDefines = this.createVertexDefines(options, attributes);\n\t\t\t\tconst fDefines = this.createFragmentDefines(options);\n\t\t\t\tconst executionDefine = `PARTICLE_${options.useCpu ? 'CPU' : 'GPU'}\\n`;\n\t\t\t\tvDefines.set(executionDefine, '');\n\t\t\t\tfDefines.set(executionDefine, '');\n\t\t\t\tconst includes = new Map(engineChunks);\n\t\t\t\treturn ShaderDefinitionUtils.createDefinition(device, {\n\t\t\t\t\t\tname: 'ParticleShader',\n\t\t\t\t\t\tshaderLanguage: shaderLanguage,\n\t\t\t\t\t\tattributes: attributes,\n\t\t\t\t\t\tvertexCode: engineChunks.get('particle_shaderVS'),\n\t\t\t\t\t\tfragmentCode: engineChunks.get('particle_shaderPS'),\n\t\t\t\t\t\tfragmentDefines: fDefines,\n\t\t\t\t\t\tfragmentIncludes: includes,\n\t\t\t\t\t\tvertexIncludes: includes,\n\t\t\t\t\t\tvertexDefines: vDefines\n\t\t\t\t});\n\t\t}\n}\nconst particle = new ShaderGeneratorParticle();\n\nclass ParticleMaterial extends Material {\n\t\tconstructor(emitter){\n\t\t\t\tsuper(), this.emitter = null;\n\t\t\t\tthis.emitter = emitter;\n\t\t}\n\t\tgetShaderVariant(params) {\n\t\t\t\tconst { device, scene, cameraShaderParams, objDefs } = params;\n\t\t\t\tconst { emitter } = this;\n\t\t\t\tconst options = {\n\t\t\t\t\t\tdefines: ShaderUtils.getCoreDefines(this, params),\n\t\t\t\t\t\tpass: SHADER_FORWARD,\n\t\t\t\t\t\tuseCpu: this.emitter.useCpu,\n\t\t\t\t\t\tnormal: emitter.lighting ? emitter.normalMap !== null ? 2 : 1 : 0,\n\t\t\t\t\t\thalflambert: this.emitter.halfLambert,\n\t\t\t\t\t\tstretch: this.emitter.stretch,\n\t\t\t\t\t\talignToMotion: this.emitter.alignToMotion,\n\t\t\t\t\t\tsoft: this.emitter.depthSoftening,\n\t\t\t\t\t\tmesh: this.emitter.useMesh,\n\t\t\t\t\t\tmeshUv: objDefs & SHADERDEF_UV0,\n\t\t\t\t\t\tgamma: cameraShaderParams?.shaderOutputGamma ?? GAMMA_NONE,\n\t\t\t\t\t\ttoneMap: cameraShaderParams?.toneMapping ?? TONEMAP_LINEAR,\n\t\t\t\t\t\tfog: scene && !this.emitter.noFog ? scene.fog.type : 'none',\n\t\t\t\t\t\twrap: this.emitter.wrap && this.emitter.wrapBounds,\n\t\t\t\t\t\tlocalSpace: this.emitter.localSpace,\n\t\t\t\t\t\tscreenSpace: emitter.inTools ? false : this.emitter.screenSpace,\n\t\t\t\t\t\tblend: this.emitter.blendType,\n\t\t\t\t\t\tanimTex: this.emitter._isAnimated(),\n\t\t\t\t\t\tanimTexLoop: this.emitter.animLoop,\n\t\t\t\t\t\tpack8: this.emitter.pack8,\n\t\t\t\t\t\tcustomFace: this.emitter.orientation !== PARTICLEORIENTATION_SCREEN\n\t\t\t\t};\n\t\t\t\tconst processingOptions = new ShaderProcessorOptions(params.viewUniformFormat, params.viewBindGroupFormat, params.vertexFormat);\n\t\t\t\tconst library = getProgramLibrary(device);\n\t\t\t\tlibrary.register('particle', particle);\n\t\t\t\treturn library.getProgram('particle', options, processingOptions, this.userId);\n\t\t}\n}\n\nconst particleVerts = [\n\t\t[\n\t\t\t\t-1,\n\t\t\t\t-1\n\t\t],\n\t\t[\n\t\t\t\t1,\n\t\t\t\t-1\n\t\t],\n\t\t[\n\t\t\t\t1,\n\t\t\t\t1\n\t\t],\n\t\t[\n\t\t\t\t-1,\n\t\t\t\t1\n\t\t]\n];\nfunction _createTexture(device, width, height, pixelData, format = PIXELFORMAT_RGBA32F, mult8Bit, filter) {\n\t\tlet mipFilter = FILTER_NEAREST;\n\t\tif (filter && (format === PIXELFORMAT_RGBA8 || format === PIXELFORMAT_SRGBA8)) {\n\t\t\t\tmipFilter = FILTER_LINEAR;\n\t\t}\n\t\tconst texture = new Texture(device, {\n\t\t\t\twidth: width,\n\t\t\t\theight: height,\n\t\t\t\tformat: format,\n\t\t\t\tcubemap: false,\n\t\t\t\tmipmaps: false,\n\t\t\t\tminFilter: mipFilter,\n\t\t\t\tmagFilter: mipFilter,\n\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\tname: 'ParticleSystemTexture'\n\t\t});\n\t\tconst pixels = texture.lock();\n\t\tif (format === PIXELFORMAT_RGBA8 || format === PIXELFORMAT_SRGBA8) {\n\t\t\t\tconst temp = new Uint8Array(pixelData.length);\n\t\t\t\tfor(let i = 0; i < pixelData.length; i++){\n\t\t\t\t\t\ttemp[i] = pixelData[i] * mult8Bit * 255;\n\t\t\t\t}\n\t\t\t\tpixelData = temp;\n\t\t}\n\t\tpixels.set(pixelData);\n\t\ttexture.unlock();\n\t\treturn texture;\n}\nfunction saturate(x) {\n\t\treturn Math.max(Math.min(x, 1), 0);\n}\nconst default0Curve = new Curve([\n\t\t0,\n\t\t0,\n\t\t1,\n\t\t0\n]);\nconst default1Curve = new Curve([\n\t\t0,\n\t\t1,\n\t\t1,\n\t\t1\n]);\nconst default0Curve3 = new CurveSet([\n\t\t0,\n\t\t0,\n\t\t1,\n\t\t0\n], [\n\t\t0,\n\t\t0,\n\t\t1,\n\t\t0\n], [\n\t\t0,\n\t\t0,\n\t\t1,\n\t\t0\n]);\nconst default1Curve3 = new CurveSet([\n\t\t0,\n\t\t1,\n\t\t1,\n\t\t1\n], [\n\t\t0,\n\t\t1,\n\t\t1,\n\t\t1\n], [\n\t\t0,\n\t\t1,\n\t\t1,\n\t\t1\n]);\nlet particleTexHeight = 2;\nconst particleTexChannels = 4;\nconst extentsInnerRatioUniform = new Float32Array(3);\nconst spawnMatrix = new Mat4();\nconst tmpVec3 = new Vec3();\nconst bMin = new Vec3();\nconst bMax = new Vec3();\nlet setPropertyTarget;\nlet setPropertyOptions;\nfunction setProperty(pName, defaultVal) {\n\t\tif (setPropertyOptions[pName] !== undefined && setPropertyOptions[pName] !== null) {\n\t\t\t\tsetPropertyTarget[pName] = setPropertyOptions[pName];\n\t\t} else {\n\t\t\t\tsetPropertyTarget[pName] = defaultVal;\n\t\t}\n}\nfunction pack3NFloats(a, b, c) {\n\t\tconst packed = a * 255 << 16 | b * 255 << 8 | c * 255;\n\t\treturn packed / (1 << 24);\n}\nfunction packTextureXYZ_NXYZ(qXYZ, qXYZ2) {\n\t\tconst num = qXYZ.length / 3;\n\t\tconst colors = new Array(num * 4);\n\t\tfor(let i = 0; i < num; i++){\n\t\t\t\tcolors[i * 4] = qXYZ[i * 3];\n\t\t\t\tcolors[i * 4 + 1] = qXYZ[i * 3 + 1];\n\t\t\t\tcolors[i * 4 + 2] = qXYZ[i * 3 + 2];\n\t\t\t\tcolors[i * 4 + 3] = pack3NFloats(qXYZ2[i * 3], qXYZ2[i * 3 + 1], qXYZ2[i * 3 + 2]);\n\t\t}\n\t\treturn colors;\n}\nfunction packTextureRGBA(qRGB, qA) {\n\t\tconst colors = new Array(qA.length * 4);\n\t\tfor(let i = 0; i < qA.length; i++){\n\t\t\t\tcolors[i * 4] = qRGB[i * 3];\n\t\t\t\tcolors[i * 4 + 1] = qRGB[i * 3 + 1];\n\t\t\t\tcolors[i * 4 + 2] = qRGB[i * 3 + 2];\n\t\t\t\tcolors[i * 4 + 3] = qA[i];\n\t\t}\n\t\treturn colors;\n}\nfunction packTexture5Floats(qA, qB, qC, qD, qE) {\n\t\tconst colors = new Array(qA.length * 4);\n\t\tfor(let i = 0; i < qA.length; i++){\n\t\t\t\tcolors[i * 4] = qA[i];\n\t\t\t\tcolors[i * 4 + 1] = qB[i];\n\t\t\t\tcolors[i * 4 + 2] = 0;\n\t\t\t\tcolors[i * 4 + 3] = pack3NFloats(qC[i], qD[i], qE[i]);\n\t\t}\n\t\treturn colors;\n}\nfunction packTexture2Floats(qA, qB) {\n\t\tconst colors = new Array(qA.length * 4);\n\t\tfor(let i = 0; i < qA.length; i++){\n\t\t\t\tcolors[i * 4] = qA[i];\n\t\t\t\tcolors[i * 4 + 1] = qB[i];\n\t\t\t\tcolors[i * 4 + 2] = 0;\n\t\t\t\tcolors[i * 4 + 3] = 0;\n\t\t}\n\t\treturn colors;\n}\nfunction calcEndTime(emitter) {\n\t\tconst interval = Math.max(emitter.rate, emitter.rate2) * emitter.numParticles + emitter.lifetime;\n\t\treturn Date.now() + interval * 1000;\n}\nfunction subGraph(A, B) {\n\t\tconst r = new Float32Array(A.length);\n\t\tfor(let i = 0; i < A.length; i++){\n\t\t\t\tr[i] = A[i] - B[i];\n\t\t}\n\t\treturn r;\n}\nfunction maxUnsignedGraphValue(A, outUMax) {\n\t\tconst chans = outUMax.length;\n\t\tconst values = A.length / chans;\n\t\tfor(let i = 0; i < values; i++){\n\t\t\t\tfor(let j = 0; j < chans; j++){\n\t\t\t\t\t\tconst a = Math.abs(A[i * chans + j]);\n\t\t\t\t\t\toutUMax[j] = Math.max(outUMax[j], a);\n\t\t\t\t}\n\t\t}\n}\nfunction normalizeGraph(A, uMax) {\n\t\tconst chans = uMax.length;\n\t\tconst values = A.length / chans;\n\t\tfor(let i = 0; i < values; i++){\n\t\t\t\tfor(let j = 0; j < chans; j++){\n\t\t\t\t\t\tA[i * chans + j] /= uMax[j] === 0 ? 1 : uMax[j];\n\t\t\t\t\t\tA[i * chans + j] *= 0.5;\n\t\t\t\t\t\tA[i * chans + j] += 0.5;\n\t\t\t\t}\n\t\t}\n}\nfunction divGraphFrom2Curves(curve1, curve2, outUMax) {\n\t\tconst sub = subGraph(curve2, curve1);\n\t\tmaxUnsignedGraphValue(sub, outUMax);\n\t\tnormalizeGraph(sub, outUMax);\n\t\treturn sub;\n}\nconst particleEmitterDeviceCache = new DeviceCache();\nclass ParticleEmitter {\n\t\tconstructor(graphicsDevice, options){\n\t\t\t\tthis.material = null;\n\t\t\t\tthis.internalTex0 = null;\n\t\t\t\tthis.internalTex1 = null;\n\t\t\t\tthis.internalTex2 = null;\n\t\t\t\tthis.colorParam = null;\n\t\t\t\tthis.graphicsDevice = graphicsDevice;\n\t\t\t\tconst gd = graphicsDevice;\n\t\t\t\tconst precision = 32;\n\t\t\t\tthis.precision = precision;\n\t\t\t\tthis._addTimeTime = 0;\n\t\t\t\tsetPropertyTarget = this;\n\t\t\t\tsetPropertyOptions = options;\n\t\t\t\tsetProperty('numParticles', 1);\n\t\t\t\tif (this.numParticles > graphicsDevice.maxTextureSize) {\n\t\t\t\t\t\tthis.numParticles = graphicsDevice.maxTextureSize;\n\t\t\t\t}\n\t\t\t\tsetProperty('rate', 1);\n\t\t\t\tsetProperty('rate2', this.rate);\n\t\t\t\tsetProperty('lifetime', 50);\n\t\t\t\tsetProperty('emitterExtents', new Vec3(0, 0, 0));\n\t\t\t\tsetProperty('emitterExtentsInner', new Vec3(0, 0, 0));\n\t\t\t\tsetProperty('emitterRadius', 0);\n\t\t\t\tsetProperty('emitterRadiusInner', 0);\n\t\t\t\tsetProperty('emitterShape', EMITTERSHAPE_BOX);\n\t\t\t\tsetProperty('initialVelocity', 1);\n\t\t\t\tsetProperty('wrap', false);\n\t\t\t\tsetProperty('localSpace', false);\n\t\t\t\tsetProperty('screenSpace', false);\n\t\t\t\tsetProperty('wrapBounds', null);\n\t\t\t\tsetProperty('colorMap', this.defaultParamTexture);\n\t\t\t\tsetProperty('normalMap', null);\n\t\t\t\tsetProperty('loop', true);\n\t\t\t\tsetProperty('preWarm', false);\n\t\t\t\tsetProperty('sort', PARTICLESORT_NONE);\n\t\t\t\tsetProperty('mode', PARTICLEMODE_GPU);\n\t\t\t\tsetProperty('scene', null);\n\t\t\t\tsetProperty('lighting', false);\n\t\t\t\tsetProperty('halfLambert', false);\n\t\t\t\tsetProperty('intensity', 1.0);\n\t\t\t\tsetProperty('stretch', 0.0);\n\t\t\t\tsetProperty('alignToMotion', false);\n\t\t\t\tsetProperty('depthSoftening', 0);\n\t\t\t\tsetProperty('mesh', null);\n\t\t\t\tsetProperty('particleNormal', new Vec3(0, 1, 0));\n\t\t\t\tsetProperty('orientation', PARTICLEORIENTATION_SCREEN);\n\t\t\t\tsetProperty('depthWrite', false);\n\t\t\t\tsetProperty('noFog', false);\n\t\t\t\tsetProperty('blendType', BLEND_NORMAL);\n\t\t\t\tsetProperty('node', null);\n\t\t\t\tsetProperty('startAngle', 0);\n\t\t\t\tsetProperty('startAngle2', this.startAngle);\n\t\t\t\tsetProperty('animTilesX', 1);\n\t\t\t\tsetProperty('animTilesY', 1);\n\t\t\t\tsetProperty('animStartFrame', 0);\n\t\t\t\tsetProperty('animNumFrames', 1);\n\t\t\t\tsetProperty('animNumAnimations', 1);\n\t\t\t\tsetProperty('animIndex', 0);\n\t\t\t\tsetProperty('randomizeAnimIndex', false);\n\t\t\t\tsetProperty('animSpeed', 1);\n\t\t\t\tsetProperty('animLoop', true);\n\t\t\t\tthis._gpuUpdater = new ParticleGPUUpdater(this, gd);\n\t\t\t\tthis._cpuUpdater = new ParticleCPUUpdater(this);\n\t\t\t\tthis.emitterPosUniform = new Float32Array(3);\n\t\t\t\tthis.wrapBoundsUniform = new Float32Array(3);\n\t\t\t\tthis.emitterScaleUniform = new Float32Array([\n\t\t\t\t\t\t1,\n\t\t\t\t\t\t1,\n\t\t\t\t\t\t1\n\t\t\t\t]);\n\t\t\t\tsetProperty('colorGraph', default1Curve3);\n\t\t\t\tsetProperty('colorGraph2', this.colorGraph);\n\t\t\t\tsetProperty('scaleGraph', default1Curve);\n\t\t\t\tsetProperty('scaleGraph2', this.scaleGraph);\n\t\t\t\tsetProperty('alphaGraph', default1Curve);\n\t\t\t\tsetProperty('alphaGraph2', this.alphaGraph);\n\t\t\t\tsetProperty('localVelocityGraph', default0Curve3);\n\t\t\t\tsetProperty('localVelocityGraph2', this.localVelocityGraph);\n\t\t\t\tsetProperty('velocityGraph', default0Curve3);\n\t\t\t\tsetProperty('velocityGraph2', this.velocityGraph);\n\t\t\t\tsetProperty('rotationSpeedGraph', default0Curve);\n\t\t\t\tsetProperty('rotationSpeedGraph2', this.rotationSpeedGraph);\n\t\t\t\tsetProperty('radialSpeedGraph', default0Curve);\n\t\t\t\tsetProperty('radialSpeedGraph2', this.radialSpeedGraph);\n\t\t\t\tthis.animTilesParams = new Float32Array(2);\n\t\t\t\tthis.animParams = new Float32Array(4);\n\t\t\t\tthis.animIndexParams = new Float32Array(2);\n\t\t\t\tthis.vbToSort = null;\n\t\t\t\tthis.vbOld = null;\n\t\t\t\tthis.particleDistance = null;\n\t\t\t\tthis.camera = null;\n\t\t\t\tthis.swapTex = false;\n\t\t\t\tthis.useMesh = true;\n\t\t\t\tthis.useCpu = !graphicsDevice.supportsGpuParticles;\n\t\t\t\tthis.pack8 = true;\n\t\t\t\tthis.localBounds = new BoundingBox();\n\t\t\t\tthis.worldBoundsNoTrail = new BoundingBox();\n\t\t\t\tthis.worldBoundsTrail = [\n\t\t\t\t\t\tnew BoundingBox(),\n\t\t\t\t\t\tnew BoundingBox()\n\t\t\t\t];\n\t\t\t\tthis.worldBounds = new BoundingBox();\n\t\t\t\tthis.worldBoundsSize = new Vec3();\n\t\t\t\tthis.prevWorldBoundsSize = new Vec3();\n\t\t\t\tthis.prevWorldBoundsCenter = new Vec3();\n\t\t\t\tthis.prevEmitterExtents = this.emitterExtents;\n\t\t\t\tthis.prevEmitterRadius = this.emitterRadius;\n\t\t\t\tthis.worldBoundsMul = new Vec3();\n\t\t\t\tthis.worldBoundsAdd = new Vec3();\n\t\t\t\tthis.timeToSwitchBounds = 0;\n\t\t\t\tthis.shaderParticleUpdateRespawn = null;\n\t\t\t\tthis.shaderParticleUpdateNoRespawn = null;\n\t\t\t\tthis.shaderParticleUpdateOnStop = null;\n\t\t\t\tthis.numParticleVerts = 0;\n\t\t\t\tthis.numParticleIndices = 0;\n\t\t\t\tthis.material = null;\n\t\t\t\tthis.meshInstance = null;\n\t\t\t\tthis.drawOrder = 0;\n\t\t\t\tthis.seed = Math.random();\n\t\t\t\tthis.fixedTimeStep = 1.0 / 60;\n\t\t\t\tthis.maxSubSteps = 10;\n\t\t\t\tthis.simTime = 0;\n\t\t\t\tthis.simTimeTotal = 0;\n\t\t\t\tthis.beenReset = false;\n\t\t\t\tthis._layer = null;\n\t\t\t\tthis.rebuild();\n\t\t}\n\t\tget defaultParamTexture() {\n\t\t\t\treturn particleEmitterDeviceCache.get(this.graphicsDevice, ()=>{\n\t\t\t\t\t\tconst resolution = 16;\n\t\t\t\t\t\tconst centerPoint = resolution * 0.5 + 0.5;\n\t\t\t\t\t\tconst dtex = new Float32Array(resolution * resolution * 4);\n\t\t\t\t\t\tfor(let y = 0; y < resolution; y++){\n\t\t\t\t\t\t\t\tfor(let x = 0; x < resolution; x++){\n\t\t\t\t\t\t\t\t\t\tconst xgrad = x + 1 - centerPoint;\n\t\t\t\t\t\t\t\t\t\tconst ygrad = y + 1 - centerPoint;\n\t\t\t\t\t\t\t\t\t\tconst c = saturate(1 - saturate(Math.sqrt(xgrad * xgrad + ygrad * ygrad) / resolution) - 0.5);\n\t\t\t\t\t\t\t\t\t\tconst p = y * resolution + x;\n\t\t\t\t\t\t\t\t\t\tdtex[p * 4] = 1;\n\t\t\t\t\t\t\t\t\t\tdtex[p * 4 + 1] = 1;\n\t\t\t\t\t\t\t\t\t\tdtex[p * 4 + 2] = 1;\n\t\t\t\t\t\t\t\t\t\tdtex[p * 4 + 3] = c;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst texture = _createTexture(this.graphicsDevice, resolution, resolution, dtex, PIXELFORMAT_SRGBA8, 1.0, true);\n\t\t\t\t\t\ttexture.minFilter = FILTER_LINEAR;\n\t\t\t\t\t\ttexture.magFilter = FILTER_LINEAR;\n\t\t\t\t\t\treturn texture;\n\t\t\t\t});\n\t\t}\n\t\tonChangeCamera() {\n\t\t\t\tthis.resetMaterial();\n\t\t}\n\t\tcalculateBoundsMad() {\n\t\t\t\tthis.worldBoundsMul.x = 1.0 / this.worldBoundsSize.x;\n\t\t\t\tthis.worldBoundsMul.y = 1.0 / this.worldBoundsSize.y;\n\t\t\t\tthis.worldBoundsMul.z = 1.0 / this.worldBoundsSize.z;\n\t\t\t\tthis.worldBoundsAdd.copy(this.worldBounds.center).mul(this.worldBoundsMul).mulScalar(-1);\n\t\t\t\tthis.worldBoundsAdd.x += 0.5;\n\t\t\t\tthis.worldBoundsAdd.y += 0.5;\n\t\t\t\tthis.worldBoundsAdd.z += 0.5;\n\t\t}\n\t\tcalculateWorldBounds() {\n\t\t\t\tif (!this.node) return;\n\t\t\t\tthis.prevWorldBoundsSize.copy(this.worldBoundsSize);\n\t\t\t\tthis.prevWorldBoundsCenter.copy(this.worldBounds.center);\n\t\t\t\tif (!this.useCpu) {\n\t\t\t\t\t\tlet recalculateLocalBounds = false;\n\t\t\t\t\t\tif (this.emitterShape === EMITTERSHAPE_BOX) {\n\t\t\t\t\t\t\t\trecalculateLocalBounds = !this.emitterExtents.equals(this.prevEmitterExtents);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\trecalculateLocalBounds = !(this.emitterRadius === this.prevEmitterRadius);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (recalculateLocalBounds) {\n\t\t\t\t\t\t\t\tthis.calculateLocalBounds();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst nodeWT = this.node.getWorldTransform();\n\t\t\t\tif (this.localSpace) {\n\t\t\t\t\t\tthis.worldBoundsNoTrail.copy(this.localBounds);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.worldBoundsNoTrail.setFromTransformedAabb(this.localBounds, nodeWT);\n\t\t\t\t}\n\t\t\t\tthis.worldBoundsTrail[0].add(this.worldBoundsNoTrail);\n\t\t\t\tthis.worldBoundsTrail[1].add(this.worldBoundsNoTrail);\n\t\t\t\tconst now = this.simTimeTotal;\n\t\t\t\tif (now >= this.timeToSwitchBounds) {\n\t\t\t\t\t\tthis.worldBoundsTrail[0].copy(this.worldBoundsTrail[1]);\n\t\t\t\t\t\tthis.worldBoundsTrail[1].copy(this.worldBoundsNoTrail);\n\t\t\t\t\t\tthis.timeToSwitchBounds = now + this.lifetime;\n\t\t\t\t}\n\t\t\t\tthis.worldBounds.copy(this.worldBoundsTrail[0]);\n\t\t\t\tthis.worldBoundsSize.copy(this.worldBounds.halfExtents).mulScalar(2);\n\t\t\t\tif (this.localSpace) {\n\t\t\t\t\t\tthis.meshInstance.aabb.setFromTransformedAabb(this.worldBounds, nodeWT);\n\t\t\t\t\t\tthis.meshInstance.mesh.aabb.setFromTransformedAabb(this.worldBounds, nodeWT);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.meshInstance.aabb.copy(this.worldBounds);\n\t\t\t\t\t\tthis.meshInstance.mesh.aabb.copy(this.worldBounds);\n\t\t\t\t}\n\t\t\t\tthis.meshInstance._aabbVer = 1 - this.meshInstance._aabbVer;\n\t\t\t\tif (this.pack8) this.calculateBoundsMad();\n\t\t}\n\t\tresetWorldBounds() {\n\t\t\t\tif (!this.node) return;\n\t\t\t\tthis.worldBoundsNoTrail.setFromTransformedAabb(this.localBounds, this.localSpace ? Mat4.IDENTITY : this.node.getWorldTransform());\n\t\t\t\tthis.worldBoundsTrail[0].copy(this.worldBoundsNoTrail);\n\t\t\t\tthis.worldBoundsTrail[1].copy(this.worldBoundsNoTrail);\n\t\t\t\tthis.worldBounds.copy(this.worldBoundsTrail[0]);\n\t\t\t\tthis.worldBoundsSize.copy(this.worldBounds.halfExtents).mulScalar(2);\n\t\t\t\tthis.prevWorldBoundsSize.copy(this.worldBoundsSize);\n\t\t\t\tthis.prevWorldBoundsCenter.copy(this.worldBounds.center);\n\t\t\t\tthis.simTimeTotal = 0;\n\t\t\t\tthis.timeToSwitchBounds = 0;\n\t\t}\n\t\tcalculateLocalBounds() {\n\t\t\t\tlet minx = Number.MAX_VALUE;\n\t\t\t\tlet miny = Number.MAX_VALUE;\n\t\t\t\tlet minz = Number.MAX_VALUE;\n\t\t\t\tlet maxx = -Number.MAX_VALUE;\n\t\t\t\tlet maxy = -Number.MAX_VALUE;\n\t\t\t\tlet maxz = -Number.MAX_VALUE;\n\t\t\t\tlet maxR = 0;\n\t\t\t\tlet maxScale = 0;\n\t\t\t\tconst stepWeight = this.lifetime / this.precision;\n\t\t\t\tconst wVels = [\n\t\t\t\t\t\tthis.qVelocity,\n\t\t\t\t\t\tthis.qVelocity2\n\t\t\t\t];\n\t\t\t\tconst lVels = [\n\t\t\t\t\t\tthis.qLocalVelocity,\n\t\t\t\t\t\tthis.qLocalVelocity2\n\t\t\t\t];\n\t\t\t\tconst accumX = [\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0\n\t\t\t\t];\n\t\t\t\tconst accumY = [\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0\n\t\t\t\t];\n\t\t\t\tconst accumZ = [\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0\n\t\t\t\t];\n\t\t\t\tconst accumR = [\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0\n\t\t\t\t];\n\t\t\t\tconst accumW = [\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0\n\t\t\t\t];\n\t\t\t\tlet x, y, z;\n\t\t\t\tfor(let i = 0; i < this.precision + 1; i++){\n\t\t\t\t\t\tconst index = Math.min(i, this.precision - 1);\n\t\t\t\t\t\tfor(let j = 0; j < 2; j++){\n\t\t\t\t\t\t\t\tx = lVels[j][index * 3 + 0] * stepWeight + accumX[j];\n\t\t\t\t\t\t\t\ty = lVels[j][index * 3 + 1] * stepWeight + accumY[j];\n\t\t\t\t\t\t\t\tz = lVels[j][index * 3 + 2] * stepWeight + accumZ[j];\n\t\t\t\t\t\t\t\tminx = Math.min(x, minx);\n\t\t\t\t\t\t\t\tminy = Math.min(y, miny);\n\t\t\t\t\t\t\t\tminz = Math.min(z, minz);\n\t\t\t\t\t\t\t\tmaxx = Math.max(x, maxx);\n\t\t\t\t\t\t\t\tmaxy = Math.max(y, maxy);\n\t\t\t\t\t\t\t\tmaxz = Math.max(z, maxz);\n\t\t\t\t\t\t\t\taccumX[j] = x;\n\t\t\t\t\t\t\t\taccumY[j] = y;\n\t\t\t\t\t\t\t\taccumZ[j] = z;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor(let j = 0; j < 2; j++){\n\t\t\t\t\t\t\t\taccumW[j] += stepWeight * Math.sqrt(wVels[j][index * 3 + 0] * wVels[j][index * 3 + 0] + wVels[j][index * 3 + 1] * wVels[j][index * 3 + 1] + wVels[j][index * 3 + 2] * wVels[j][index * 3 + 2]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\taccumR[0] += this.qRadialSpeed[index] * stepWeight;\n\t\t\t\t\t\taccumR[1] += this.qRadialSpeed2[index] * stepWeight;\n\t\t\t\t\t\tmaxR = Math.max(maxR, Math.max(Math.abs(accumR[0]), Math.abs(accumR[1])));\n\t\t\t\t\t\tmaxScale = Math.max(maxScale, this.qScale[index]);\n\t\t\t\t}\n\t\t\t\tif (this.emitterShape === EMITTERSHAPE_BOX) {\n\t\t\t\t\t\tx = this.emitterExtents.x * 0.5;\n\t\t\t\t\t\ty = this.emitterExtents.y * 0.5;\n\t\t\t\t\t\tz = this.emitterExtents.z * 0.5;\n\t\t\t\t} else {\n\t\t\t\t\t\tx = this.emitterRadius;\n\t\t\t\t\t\ty = this.emitterRadius;\n\t\t\t\t\t\tz = this.emitterRadius;\n\t\t\t\t}\n\t\t\t\tconst w = Math.max(accumW[0], accumW[1]);\n\t\t\t\tbMin.x = minx - maxScale - x - maxR - w;\n\t\t\t\tbMin.y = miny - maxScale - y - maxR - w;\n\t\t\t\tbMin.z = minz - maxScale - z - maxR - w;\n\t\t\t\tbMax.x = maxx + maxScale + x + maxR + w;\n\t\t\t\tbMax.y = maxy + maxScale + y + maxR + w;\n\t\t\t\tbMax.z = maxz + maxScale + z + maxR + w;\n\t\t\t\tthis.localBounds.setMinMax(bMin, bMax);\n\t\t}\n\t\trebuild() {\n\t\t\t\tconst gd = this.graphicsDevice;\n\t\t\t\tif (this.colorMap === null) this.colorMap = this.defaultParamTexture;\n\t\t\t\tthis.spawnBounds = this.emitterShape === EMITTERSHAPE_BOX ? this.emitterExtents : this.emitterRadius;\n\t\t\t\tthis.useCpu = this.useCpu || this.sort > PARTICLESORT_NONE || gd.maxVertexTextures <= 1 || gd.fragmentUniformsCount < 64 || gd.forceCpuParticles;\n\t\t\t\tconst wasVisible = this._destroyResources();\n\t\t\t\tthis.pack8 = (this.pack8 || !gd.textureFloatRenderable) && !this.useCpu;\n\t\t\t\tparticleTexHeight = this.useCpu || this.pack8 ? 4 : 2;\n\t\t\t\tthis.useMesh = !!this.mesh;\n\t\t\t\tthis.numParticlesPot = math.nextPowerOfTwo(this.numParticles);\n\t\t\t\tthis.rebuildGraphs();\n\t\t\t\tthis.calculateLocalBounds();\n\t\t\t\tthis.resetWorldBounds();\n\t\t\t\tif (this.node) {\n\t\t\t\t\t\tthis.worldBounds.setFromTransformedAabb(this.localBounds, this.localSpace ? Mat4.IDENTITY : this.node.getWorldTransform());\n\t\t\t\t\t\tthis.worldBoundsTrail[0].copy(this.worldBounds);\n\t\t\t\t\t\tthis.worldBoundsTrail[1].copy(this.worldBounds);\n\t\t\t\t\t\tthis.worldBoundsSize.copy(this.worldBounds.halfExtents).mulScalar(2);\n\t\t\t\t\t\tthis.prevWorldBoundsSize.copy(this.worldBoundsSize);\n\t\t\t\t\t\tthis.prevWorldBoundsCenter.copy(this.worldBounds.center);\n\t\t\t\t\t\tif (this.pack8) this.calculateBoundsMad();\n\t\t\t\t}\n\t\t\t\tthis.vbToSort = new Array(this.numParticles);\n\t\t\t\tfor(let iSort = 0; iSort < this.numParticles; iSort++)this.vbToSort[iSort] = [\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0\n\t\t\t\t];\n\t\t\t\tthis.particleDistance = new Float32Array(this.numParticles);\n\t\t\t\tthis._gpuUpdater.randomize();\n\t\t\t\tthis.particleTex = new Float32Array(this.numParticlesPot * particleTexHeight * particleTexChannels);\n\t\t\t\tconst emitterPos = this.node === null || this.localSpace ? Vec3.ZERO : this.node.getPosition();\n\t\t\t\tif (this.emitterShape === EMITTERSHAPE_BOX) {\n\t\t\t\t\t\tif (this.node === null || this.localSpace) {\n\t\t\t\t\t\t\t\tspawnMatrix.setTRS(Vec3.ZERO, Quat.IDENTITY, this.spawnBounds);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tspawnMatrix.setTRS(Vec3.ZERO, this.node.getRotation(), tmpVec3.copy(this.spawnBounds).mul(this.node.localScale));\n\t\t\t\t\t\t}\n\t\t\t\t\t\textentsInnerRatioUniform[0] = this.emitterExtents.x !== 0 ? this.emitterExtentsInner.x / this.emitterExtents.x : 0;\n\t\t\t\t\t\textentsInnerRatioUniform[1] = this.emitterExtents.y !== 0 ? this.emitterExtentsInner.y / this.emitterExtents.y : 0;\n\t\t\t\t\t\textentsInnerRatioUniform[2] = this.emitterExtents.z !== 0 ? this.emitterExtentsInner.z / this.emitterExtents.z : 0;\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < this.numParticles; i++){\n\t\t\t\t\t\tthis._cpuUpdater.calcSpawnPosition(this.particleTex, spawnMatrix, extentsInnerRatioUniform, emitterPos, i);\n\t\t\t\t\t\tif (this.useCpu) this.particleTex[i * particleTexChannels + 3 + this.numParticlesPot * 2 * particleTexChannels] = 1;\n\t\t\t\t}\n\t\t\t\tthis.particleTexStart = new Float32Array(this.numParticlesPot * particleTexHeight * particleTexChannels);\n\t\t\t\tfor(let i = 0; i < this.particleTexStart.length; i++){\n\t\t\t\t\t\tthis.particleTexStart[i] = this.particleTex[i];\n\t\t\t\t}\n\t\t\t\tif (!this.useCpu) {\n\t\t\t\t\t\tif (this.pack8) {\n\t\t\t\t\t\t\t\tthis.particleTexIN = _createTexture(gd, this.numParticlesPot, particleTexHeight, this.particleTex, PIXELFORMAT_RGBA8, 1, false);\n\t\t\t\t\t\t\t\tthis.particleTexOUT = _createTexture(gd, this.numParticlesPot, particleTexHeight, this.particleTex, PIXELFORMAT_RGBA8, 1, false);\n\t\t\t\t\t\t\t\tthis.particleTexStart = _createTexture(gd, this.numParticlesPot, particleTexHeight, this.particleTexStart, PIXELFORMAT_RGBA8, 1, false);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.particleTexIN = _createTexture(gd, this.numParticlesPot, particleTexHeight, this.particleTex);\n\t\t\t\t\t\t\t\tthis.particleTexOUT = _createTexture(gd, this.numParticlesPot, particleTexHeight, this.particleTex);\n\t\t\t\t\t\t\t\tthis.particleTexStart = _createTexture(gd, this.numParticlesPot, particleTexHeight, this.particleTexStart);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.rtParticleTexIN = new RenderTarget({\n\t\t\t\t\t\t\t\tcolorBuffer: this.particleTexIN,\n\t\t\t\t\t\t\t\tdepth: false\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis.rtParticleTexOUT = new RenderTarget({\n\t\t\t\t\t\t\t\tcolorBuffer: this.particleTexOUT,\n\t\t\t\t\t\t\t\tdepth: false\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis.swapTex = false;\n\t\t\t\t}\n\t\t\t\tconst defines = new Map();\n\t\t\t\tif (this.localSpace) defines.set('LOCAL_SPACE', '');\n\t\t\t\tif (this.pack8) defines.set('PACK8', '');\n\t\t\t\tif (this.emitterShape === EMITTERSHAPE_BOX) defines.set('EMITTERSHAPE_BOX', '');\n\t\t\t\tconst shaderUniqueId = `Shape:${this.emitterShape}-Pack:${this.pack8}-Local:${this.localSpace}`;\n\t\t\t\tconst engineChunks = ShaderChunks.get(gd, gd.isWebGPU ? SHADERLANGUAGE_WGSL : SHADERLANGUAGE_GLSL);\n\t\t\t\tconst includes = new Map(engineChunks);\n\t\t\t\tconst shaderOptions = {\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\tvertex_position: SEMANTIC_POSITION\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvertexChunk: 'fullscreenQuadVS',\n\t\t\t\t\t\tfragmentChunk: 'particle_simulationPS',\n\t\t\t\t\t\tfragmentDefines: defines,\n\t\t\t\t\t\tfragmentIncludes: includes\n\t\t\t\t};\n\t\t\t\tshaderOptions.uniqueName = `ParticleUpdateRespawn-${shaderUniqueId}`;\n\t\t\t\tdefines.set('RESPAWN', '');\n\t\t\t\tthis.shaderParticleUpdateRespawn = ShaderUtils.createShader(gd, shaderOptions);\n\t\t\t\tdefines.delete('RESPAWN');\n\t\t\t\tshaderOptions.uniqueName = `ParticleUpdateNoRespawn-${shaderUniqueId}`;\n\t\t\t\tdefines.set('NO_RESPAWN', '');\n\t\t\t\tthis.shaderParticleUpdateNoRespawn = ShaderUtils.createShader(gd, shaderOptions);\n\t\t\t\tdefines.delete('NO_RESPAWN');\n\t\t\t\tshaderOptions.uniqueName = `ParticleUpdateStop-${shaderUniqueId}`;\n\t\t\t\tdefines.set('ON_STOP', '');\n\t\t\t\tthis.shaderParticleUpdateOnStop = ShaderUtils.createShader(gd, shaderOptions);\n\t\t\t\tthis.numParticleVerts = this.useMesh ? this.mesh.vertexBuffer.numVertices : 4;\n\t\t\t\tthis.numParticleIndices = this.useMesh ? this.mesh.indexBuffer[0].numIndices : 6;\n\t\t\t\tthis._allocate(this.numParticles);\n\t\t\t\tconst mesh = new Mesh(gd);\n\t\t\t\tmesh.vertexBuffer = this.vertexBuffer;\n\t\t\t\tmesh.indexBuffer[0] = this.indexBuffer;\n\t\t\t\tmesh.primitive[0].type = PRIMITIVE_TRIANGLES;\n\t\t\t\tmesh.primitive[0].base = 0;\n\t\t\t\tmesh.primitive[0].count = this.numParticles * this.numParticleIndices;\n\t\t\t\tmesh.primitive[0].indexed = true;\n\t\t\t\tthis.material = this._createMaterial();\n\t\t\t\tthis.resetMaterial();\n\t\t\t\tthis.meshInstance = new MeshInstance(mesh, this.material, this.node);\n\t\t\t\tthis.meshInstance.pick = false;\n\t\t\t\tthis.meshInstance.updateKey();\n\t\t\t\tthis.meshInstance.cull = true;\n\t\t\t\tif (this.localSpace) {\n\t\t\t\t\t\tthis.meshInstance.aabb.setFromTransformedAabb(this.worldBounds, this.node.getWorldTransform());\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.meshInstance.aabb.copy(this.worldBounds);\n\t\t\t\t}\n\t\t\t\tthis.meshInstance._updateAabb = false;\n\t\t\t\tthis.meshInstance.visible = wasVisible;\n\t\t\t\tthis._setMaterialTextures();\n\t\t\t\tthis.resetTime();\n\t\t\t\tthis.addTime(0, false);\n\t\t\t\tif (this.preWarm) this.prewarm(this.lifetime);\n\t\t}\n\t\t_isAnimated() {\n\t\t\t\treturn this.animNumFrames >= 1 && (this.animTilesX > 1 || this.animTilesY > 1) && (this.colorMap && this.colorMap !== this.defaultParamTexture || this.normalMap);\n\t\t}\n\t\trebuildGraphs() {\n\t\t\t\tconst precision = this.precision;\n\t\t\t\tconst gd = this.graphicsDevice;\n\t\t\t\tthis.qLocalVelocity = this.localVelocityGraph.quantize(precision);\n\t\t\t\tthis.qVelocity = this.velocityGraph.quantize(precision);\n\t\t\t\tthis.qColor = this.colorGraph.quantizeClamped(precision, 0, 1);\n\t\t\t\tthis.qRotSpeed = this.rotationSpeedGraph.quantize(precision);\n\t\t\t\tthis.qScale = this.scaleGraph.quantize(precision);\n\t\t\t\tthis.qAlpha = this.alphaGraph.quantize(precision);\n\t\t\t\tthis.qRadialSpeed = this.radialSpeedGraph.quantize(precision);\n\t\t\t\tthis.qLocalVelocity2 = this.localVelocityGraph2.quantize(precision);\n\t\t\t\tthis.qVelocity2 = this.velocityGraph2.quantize(precision);\n\t\t\t\tthis.qColor2 = this.colorGraph2.quantizeClamped(precision, 0, 1);\n\t\t\t\tthis.qRotSpeed2 = this.rotationSpeedGraph2.quantize(precision);\n\t\t\t\tthis.qScale2 = this.scaleGraph2.quantize(precision);\n\t\t\t\tthis.qAlpha2 = this.alphaGraph2.quantize(precision);\n\t\t\t\tthis.qRadialSpeed2 = this.radialSpeedGraph2.quantize(precision);\n\t\t\t\tfor(let i = 0; i < precision; i++){\n\t\t\t\t\t\tthis.qRotSpeed[i] *= math.DEG_TO_RAD;\n\t\t\t\t\t\tthis.qRotSpeed2[i] *= math.DEG_TO_RAD;\n\t\t\t\t}\n\t\t\t\tthis.localVelocityUMax = new Float32Array(3);\n\t\t\t\tthis.velocityUMax = new Float32Array(3);\n\t\t\t\tthis.colorUMax = new Float32Array(3);\n\t\t\t\tthis.rotSpeedUMax = [\n\t\t\t\t\t\t0\n\t\t\t\t];\n\t\t\t\tthis.scaleUMax = [\n\t\t\t\t\t\t0\n\t\t\t\t];\n\t\t\t\tthis.alphaUMax = [\n\t\t\t\t\t\t0\n\t\t\t\t];\n\t\t\t\tthis.radialSpeedUMax = [\n\t\t\t\t\t\t0\n\t\t\t\t];\n\t\t\t\tthis.qLocalVelocityDiv = divGraphFrom2Curves(this.qLocalVelocity, this.qLocalVelocity2, this.localVelocityUMax);\n\t\t\t\tthis.qVelocityDiv = divGraphFrom2Curves(this.qVelocity, this.qVelocity2, this.velocityUMax);\n\t\t\t\tthis.qColorDiv = divGraphFrom2Curves(this.qColor, this.qColor2, this.colorUMax);\n\t\t\t\tthis.qRotSpeedDiv = divGraphFrom2Curves(this.qRotSpeed, this.qRotSpeed2, this.rotSpeedUMax);\n\t\t\t\tthis.qScaleDiv = divGraphFrom2Curves(this.qScale, this.qScale2, this.scaleUMax);\n\t\t\t\tthis.qAlphaDiv = divGraphFrom2Curves(this.qAlpha, this.qAlpha2, this.alphaUMax);\n\t\t\t\tthis.qRadialSpeedDiv = divGraphFrom2Curves(this.qRadialSpeed, this.qRadialSpeed2, this.radialSpeedUMax);\n\t\t\t\tif (this.pack8) {\n\t\t\t\t\t\tconst umax = [\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t];\n\t\t\t\t\t\tmaxUnsignedGraphValue(this.qVelocity, umax);\n\t\t\t\t\t\tconst umax2 = [\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t];\n\t\t\t\t\t\tmaxUnsignedGraphValue(this.qVelocity2, umax2);\n\t\t\t\t\t\tconst lumax = [\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t];\n\t\t\t\t\t\tmaxUnsignedGraphValue(this.qLocalVelocity, lumax);\n\t\t\t\t\t\tconst lumax2 = [\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t];\n\t\t\t\t\t\tmaxUnsignedGraphValue(this.qLocalVelocity2, lumax2);\n\t\t\t\t\t\tconst rumax = [\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t];\n\t\t\t\t\t\tmaxUnsignedGraphValue(this.qRadialSpeed, rumax);\n\t\t\t\t\t\tconst rumax2 = [\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t];\n\t\t\t\t\t\tmaxUnsignedGraphValue(this.qRadialSpeed2, rumax2);\n\t\t\t\t\t\tlet maxVel = Math.max(umax[0], umax2[0]);\n\t\t\t\t\t\tmaxVel = Math.max(maxVel, umax[1]);\n\t\t\t\t\t\tmaxVel = Math.max(maxVel, umax2[1]);\n\t\t\t\t\t\tmaxVel = Math.max(maxVel, umax[2]);\n\t\t\t\t\t\tmaxVel = Math.max(maxVel, umax2[2]);\n\t\t\t\t\t\tlet lmaxVel = Math.max(lumax[0], lumax2[0]);\n\t\t\t\t\t\tlmaxVel = Math.max(lmaxVel, lumax[1]);\n\t\t\t\t\t\tlmaxVel = Math.max(lmaxVel, lumax2[1]);\n\t\t\t\t\t\tlmaxVel = Math.max(lmaxVel, lumax[2]);\n\t\t\t\t\t\tlmaxVel = Math.max(lmaxVel, lumax2[2]);\n\t\t\t\t\t\tconst maxRad = Math.max(rumax[0], rumax2[0]);\n\t\t\t\t\t\tthis.maxVel = maxVel + lmaxVel + maxRad;\n\t\t\t\t}\n\t\t\t\tif (!this.useCpu) {\n\t\t\t\t\t\tthis.internalTex0 = _createTexture(gd, precision, 1, packTextureXYZ_NXYZ(this.qLocalVelocity, this.qLocalVelocityDiv));\n\t\t\t\t\t\tthis.internalTex1 = _createTexture(gd, precision, 1, packTextureXYZ_NXYZ(this.qVelocity, this.qVelocityDiv));\n\t\t\t\t\t\tthis.internalTex2 = _createTexture(gd, precision, 1, packTexture5Floats(this.qRotSpeed, this.qScale, this.qScaleDiv, this.qRotSpeedDiv, this.qAlphaDiv));\n\t\t\t\t\t\tthis.internalTex3 = _createTexture(gd, precision, 1, packTexture2Floats(this.qRadialSpeed, this.qRadialSpeedDiv));\n\t\t\t\t}\n\t\t\t\tthis.colorParam = _createTexture(gd, precision, 1, packTextureRGBA(this.qColor, this.qAlpha), PIXELFORMAT_SRGBA8, 1.0, true);\n\t\t}\n\t\t_setMaterialTextures() {\n\t\t\t\tif (this.colorMap) {\n\t\t\t\t\t\tthis.material.setParameter('colorMap', this.colorMap);\n\t\t\t\t\t\tif (this.lighting && this.normalMap) {\n\t\t\t\t\t\t\t\tthis.material.setParameter('normalMap', this.normalMap);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_createMaterial() {\n\t\t\t\tconst material = new ParticleMaterial(this);\n\t\t\t\tmaterial.name = `EmitterMaterial:${this.node.name}`;\n\t\t\t\tmaterial.cull = CULLFACE_NONE;\n\t\t\t\tmaterial.alphaWrite = false;\n\t\t\t\tmaterial.blendType = this.blendType;\n\t\t\t\tmaterial.depthWrite = this.depthWrite;\n\t\t\t\treturn material;\n\t\t}\n\t\tresetMaterial() {\n\t\t\t\tconst material = this.material;\n\t\t\t\tmaterial.setParameter('stretch', this.stretch);\n\t\t\t\tif (this._isAnimated()) {\n\t\t\t\t\t\tmaterial.setParameter('animTexTilesParams', this.animTilesParams);\n\t\t\t\t\t\tmaterial.setParameter('animTexParams', this.animParams);\n\t\t\t\t\t\tmaterial.setParameter('animTexIndexParams', this.animIndexParams);\n\t\t\t\t}\n\t\t\t\tmaterial.setParameter('colorMult', this.intensity);\n\t\t\t\tif (!this.useCpu) {\n\t\t\t\t\t\tmaterial.setParameter('internalTex0', this.internalTex0);\n\t\t\t\t\t\tmaterial.setParameter('internalTex1', this.internalTex1);\n\t\t\t\t\t\tmaterial.setParameter('internalTex2', this.internalTex2);\n\t\t\t\t\t\tmaterial.setParameter('internalTex3', this.internalTex3);\n\t\t\t\t}\n\t\t\t\tmaterial.setParameter('colorParam', this.colorParam);\n\t\t\t\tmaterial.setParameter('numParticles', this.numParticles);\n\t\t\t\tmaterial.setParameter('numParticlesPot', this.numParticlesPot);\n\t\t\t\tmaterial.setParameter('lifetime', this.lifetime);\n\t\t\t\tmaterial.setParameter('rate', this.rate);\n\t\t\t\tmaterial.setParameter('rateDiv', this.rate2 - this.rate);\n\t\t\t\tmaterial.setParameter('seed', this.seed);\n\t\t\t\tmaterial.setParameter('scaleDivMult', this.scaleUMax[0]);\n\t\t\t\tmaterial.setParameter('alphaDivMult', this.alphaUMax[0]);\n\t\t\t\tmaterial.setParameter('radialSpeedDivMult', this.radialSpeedUMax[0]);\n\t\t\t\tmaterial.setParameter('graphNumSamples', this.precision);\n\t\t\t\tmaterial.setParameter('graphSampleSize', 1.0 / this.precision);\n\t\t\t\tmaterial.setParameter('emitterScale', new Float32Array([\n\t\t\t\t\t\t1,\n\t\t\t\t\t\t1,\n\t\t\t\t\t\t1\n\t\t\t\t]));\n\t\t\t\tif (this.pack8) {\n\t\t\t\t\t\tthis._gpuUpdater._setInputBounds();\n\t\t\t\t\t\tmaterial.setParameter('inBoundsSize', this._gpuUpdater.inBoundsSizeUniform);\n\t\t\t\t\t\tmaterial.setParameter('inBoundsCenter', this._gpuUpdater.inBoundsCenterUniform);\n\t\t\t\t\t\tmaterial.setParameter('maxVel', this.maxVel);\n\t\t\t\t}\n\t\t\t\tif (this.wrap && this.wrapBounds) {\n\t\t\t\t\t\tthis.wrapBoundsUniform[0] = this.wrapBounds.x;\n\t\t\t\t\t\tthis.wrapBoundsUniform[1] = this.wrapBounds.y;\n\t\t\t\t\t\tthis.wrapBoundsUniform[2] = this.wrapBounds.z;\n\t\t\t\t\t\tmaterial.setParameter('wrapBounds', this.wrapBoundsUniform);\n\t\t\t\t}\n\t\t\t\tthis._setMaterialTextures();\n\t\t\t\tif (this.depthSoftening > 0) {\n\t\t\t\t\t\tmaterial.setParameter('softening', 1.0 / (this.depthSoftening * this.depthSoftening * 100));\n\t\t\t\t}\n\t\t\t\tif (this.stretch > 0.0) material.cull = CULLFACE_NONE;\n\t\t\t\tthis._compParticleFaceParams();\n\t\t}\n\t\t_compParticleFaceParams() {\n\t\t\t\tlet tangent, binormal;\n\t\t\t\tif (this.orientation === PARTICLEORIENTATION_SCREEN) {\n\t\t\t\t\t\ttangent = new Float32Array([\n\t\t\t\t\t\t\t\t1,\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t]);\n\t\t\t\t\t\tbinormal = new Float32Array([\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t1\n\t\t\t\t\t\t]);\n\t\t\t\t} else {\n\t\t\t\t\t\tlet n;\n\t\t\t\t\t\tif (this.orientation === PARTICLEORIENTATION_WORLD) {\n\t\t\t\t\t\t\t\tn = this.particleNormal.normalize();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst emitterMat = this.node === null ? Mat4.IDENTITY : this.node.getWorldTransform();\n\t\t\t\t\t\t\t\tn = emitterMat.transformVector(this.particleNormal).normalize();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst t = new Vec3(1, 0, 0);\n\t\t\t\t\t\tif (Math.abs(t.dot(n)) === 1) {\n\t\t\t\t\t\t\t\tt.set(0, 0, 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst b = new Vec3().cross(n, t).normalize();\n\t\t\t\t\t\tt.cross(b, n).normalize();\n\t\t\t\t\t\ttangent = new Float32Array([\n\t\t\t\t\t\t\t\tt.x,\n\t\t\t\t\t\t\t\tt.y,\n\t\t\t\t\t\t\t\tt.z\n\t\t\t\t\t\t]);\n\t\t\t\t\t\tbinormal = new Float32Array([\n\t\t\t\t\t\t\t\tb.x,\n\t\t\t\t\t\t\t\tb.y,\n\t\t\t\t\t\t\t\tb.z\n\t\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t\tthis.material.setParameter('faceTangent', tangent);\n\t\t\t\tthis.material.setParameter('faceBinorm', binormal);\n\t\t}\n\t\tgetVertexInfo() {\n\t\t\t\tconst elements = [];\n\t\t\t\tif (!this.useCpu) {\n\t\t\t\t\t\telements.push({\n\t\t\t\t\t\t\t\tsemantic: SEMANTIC_ATTR0,\n\t\t\t\t\t\t\t\tcomponents: 4,\n\t\t\t\t\t\t\t\ttype: TYPE_FLOAT32\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (this.useMesh) {\n\t\t\t\t\t\t\t\telements.push({\n\t\t\t\t\t\t\t\t\t\tsemantic: SEMANTIC_ATTR1,\n\t\t\t\t\t\t\t\t\t\tcomponents: 2,\n\t\t\t\t\t\t\t\t\t\ttype: TYPE_FLOAT32\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\telements.push({\n\t\t\t\t\t\t\t\tsemantic: SEMANTIC_ATTR0,\n\t\t\t\t\t\t\t\tcomponents: 4,\n\t\t\t\t\t\t\t\ttype: TYPE_FLOAT32\n\t\t\t\t\t\t}, {\n\t\t\t\t\t\t\t\tsemantic: SEMANTIC_ATTR1,\n\t\t\t\t\t\t\t\tcomponents: 4,\n\t\t\t\t\t\t\t\ttype: TYPE_FLOAT32\n\t\t\t\t\t\t}, {\n\t\t\t\t\t\t\t\tsemantic: SEMANTIC_ATTR2,\n\t\t\t\t\t\t\t\tcomponents: 4,\n\t\t\t\t\t\t\t\ttype: TYPE_FLOAT32\n\t\t\t\t\t\t}, {\n\t\t\t\t\t\t\t\tsemantic: SEMANTIC_ATTR3,\n\t\t\t\t\t\t\t\tcomponents: 1,\n\t\t\t\t\t\t\t\ttype: TYPE_FLOAT32\n\t\t\t\t\t\t}, {\n\t\t\t\t\t\t\t\tsemantic: SEMANTIC_ATTR4,\n\t\t\t\t\t\t\t\tcomponents: this.useMesh ? 4 : 2,\n\t\t\t\t\t\t\t\ttype: TYPE_FLOAT32\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn elements;\n\t\t}\n\t\t_allocate(numParticles) {\n\t\t\t\tconst psysVertCount = numParticles * this.numParticleVerts;\n\t\t\t\tconst psysIndexCount = numParticles * this.numParticleIndices;\n\t\t\t\tif (this.vertexBuffer === undefined || this.vertexBuffer.getNumVertices() !== psysVertCount) {\n\t\t\t\t\t\tconst elements = this.getVertexInfo();\n\t\t\t\t\t\tconst vertexFormat = new VertexFormat(this.graphicsDevice, elements);\n\t\t\t\t\t\tthis.vertexBuffer = new VertexBuffer(this.graphicsDevice, vertexFormat, psysVertCount, {\n\t\t\t\t\t\t\t\tusage: BUFFER_DYNAMIC\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis.indexBuffer = new IndexBuffer(this.graphicsDevice, INDEXFORMAT_UINT32, psysIndexCount);\n\t\t\t\t\t\tconst data = new Float32Array(this.vertexBuffer.lock());\n\t\t\t\t\t\tlet meshData, stride, texCoordOffset;\n\t\t\t\t\t\tif (this.useMesh) {\n\t\t\t\t\t\t\t\tmeshData = new Float32Array(this.mesh.vertexBuffer.lock());\n\t\t\t\t\t\t\t\tstride = meshData.length / this.mesh.vertexBuffer.numVertices;\n\t\t\t\t\t\t\t\tfor(let elem = 0; elem < this.mesh.vertexBuffer.format.elements.length; elem++){\n\t\t\t\t\t\t\t\t\t\tif (this.mesh.vertexBuffer.format.elements[elem].name === SEMANTIC_TEXCOORD0) {\n\t\t\t\t\t\t\t\t\t\t\t\ttexCoordOffset = this.mesh.vertexBuffer.format.elements[elem].offset / 4;\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor(let i = 0; i < psysVertCount; i++){\n\t\t\t\t\t\t\t\tconst id = Math.floor(i / this.numParticleVerts);\n\t\t\t\t\t\t\t\tif (!this.useMesh) {\n\t\t\t\t\t\t\t\t\t\tconst vertID = i % 4;\n\t\t\t\t\t\t\t\t\t\tdata[i * 4] = particleVerts[vertID][0];\n\t\t\t\t\t\t\t\t\t\tdata[i * 4 + 1] = particleVerts[vertID][1];\n\t\t\t\t\t\t\t\t\t\tdata[i * 4 + 2] = 0;\n\t\t\t\t\t\t\t\t\t\tdata[i * 4 + 3] = id;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tconst vert = i % this.numParticleVerts;\n\t\t\t\t\t\t\t\t\t\tdata[i * 6] = meshData[vert * stride];\n\t\t\t\t\t\t\t\t\t\tdata[i * 6 + 1] = meshData[vert * stride + 1];\n\t\t\t\t\t\t\t\t\t\tdata[i * 6 + 2] = meshData[vert * stride + 2];\n\t\t\t\t\t\t\t\t\t\tdata[i * 6 + 3] = id;\n\t\t\t\t\t\t\t\t\t\tdata[i * 6 + 4] = meshData[vert * stride + texCoordOffset + 0];\n\t\t\t\t\t\t\t\t\t\tdata[i * 6 + 5] = 1.0 - meshData[vert * stride + texCoordOffset + 1];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.useCpu) {\n\t\t\t\t\t\t\t\tthis.vbCPU = new Float32Array(data);\n\t\t\t\t\t\t\t\tthis.vbOld = new Float32Array(this.vbCPU.length);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.vertexBuffer.unlock();\n\t\t\t\t\t\tif (this.useMesh) {\n\t\t\t\t\t\t\t\tthis.mesh.vertexBuffer.unlock();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlet dst = 0;\n\t\t\t\t\t\tconst indices = new Uint32Array(this.indexBuffer.lock());\n\t\t\t\t\t\tif (this.useMesh) {\n\t\t\t\t\t\t\t\tconst ib = this.mesh.indexBuffer[0];\n\t\t\t\t\t\t\t\tmeshData = new typedArrayIndexFormats[ib.format](ib.lock());\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor(let i = 0; i < numParticles; i++){\n\t\t\t\t\t\t\t\tif (!this.useMesh) {\n\t\t\t\t\t\t\t\t\t\tconst baseIndex = i * 4;\n\t\t\t\t\t\t\t\t\t\tindices[dst++] = baseIndex;\n\t\t\t\t\t\t\t\t\t\tindices[dst++] = baseIndex + 1;\n\t\t\t\t\t\t\t\t\t\tindices[dst++] = baseIndex + 2;\n\t\t\t\t\t\t\t\t\t\tindices[dst++] = baseIndex;\n\t\t\t\t\t\t\t\t\t\tindices[dst++] = baseIndex + 2;\n\t\t\t\t\t\t\t\t\t\tindices[dst++] = baseIndex + 3;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tfor(let j = 0; j < this.numParticleIndices; j++){\n\t\t\t\t\t\t\t\t\t\t\t\tindices[i * this.numParticleIndices + j] = meshData[j] + i * this.numParticleVerts;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.indexBuffer.unlock();\n\t\t\t\t\t\tif (this.useMesh) this.mesh.indexBuffer[0].unlock();\n\t\t\t\t}\n\t\t}\n\t\treset() {\n\t\t\t\tthis.beenReset = true;\n\t\t\t\tthis.seed = Math.random();\n\t\t\t\tthis.material.setParameter('seed', this.seed);\n\t\t\t\tif (this.useCpu) {\n\t\t\t\t\t\tfor(let i = 0; i < this.particleTexStart.length; i++){\n\t\t\t\t\t\t\t\tthis.particleTex[i] = this.particleTexStart[i];\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._setMaterialTextures();\n\t\t\t\t}\n\t\t\t\tthis.resetWorldBounds();\n\t\t\t\tthis.resetTime();\n\t\t\t\tconst origLoop = this.loop;\n\t\t\t\tthis.loop = true;\n\t\t\t\tthis.addTime(0, false);\n\t\t\t\tthis.loop = origLoop;\n\t\t\t\tif (this.preWarm) {\n\t\t\t\t\t\tthis.prewarm(this.lifetime);\n\t\t\t\t}\n\t\t}\n\t\tprewarm(time) {\n\t\t\t\tconst lifetimeFraction = time / this.lifetime;\n\t\t\t\tconst iterations = Math.min(Math.floor(lifetimeFraction * this.precision), this.precision);\n\t\t\t\tconst stepDelta = time / iterations;\n\t\t\t\tfor(let i = 0; i < iterations; i++){\n\t\t\t\t\t\tthis.addTime(stepDelta, false);\n\t\t\t\t}\n\t\t}\n\t\tresetTime() {\n\t\t\t\tthis.endTime = calcEndTime(this);\n\t\t}\n\t\tfinishFrame() {\n\t\t\t\tif (this.useCpu) this.vertexBuffer.unlock();\n\t\t}\n\t\taddTime(delta, isOnStop) {\n\t\t\t\tconst device = this.graphicsDevice;\n\t\t\t\tthis.simTimeTotal += delta;\n\t\t\t\tthis.calculateWorldBounds();\n\t\t\t\tif (this._isAnimated()) {\n\t\t\t\t\t\tconst tilesParams = this.animTilesParams;\n\t\t\t\t\t\ttilesParams[0] = 1.0 / this.animTilesX;\n\t\t\t\t\t\ttilesParams[1] = 1.0 / this.animTilesY;\n\t\t\t\t\t\tconst params = this.animParams;\n\t\t\t\t\t\tparams[0] = this.animStartFrame;\n\t\t\t\t\t\tparams[1] = this.animNumFrames * this.animSpeed;\n\t\t\t\t\t\tparams[2] = this.animNumFrames - 1;\n\t\t\t\t\t\tparams[3] = this.animNumAnimations - 1;\n\t\t\t\t\t\tconst animIndexParams = this.animIndexParams;\n\t\t\t\t\t\tanimIndexParams[0] = this.animIndex;\n\t\t\t\t\t\tanimIndexParams[1] = this.randomizeAnimIndex;\n\t\t\t\t}\n\t\t\t\tif (this.scene) {\n\t\t\t\t\t\tif (this.camera !== this.scene._activeCamera) {\n\t\t\t\t\t\t\t\tthis.camera = this.scene._activeCamera;\n\t\t\t\t\t\t\t\tthis.onChangeCamera();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this.emitterShape === EMITTERSHAPE_BOX) {\n\t\t\t\t\t\textentsInnerRatioUniform[0] = this.emitterExtents.x !== 0 ? this.emitterExtentsInner.x / this.emitterExtents.x : 0;\n\t\t\t\t\t\textentsInnerRatioUniform[1] = this.emitterExtents.y !== 0 ? this.emitterExtentsInner.y / this.emitterExtents.y : 0;\n\t\t\t\t\t\textentsInnerRatioUniform[2] = this.emitterExtents.z !== 0 ? this.emitterExtentsInner.z / this.emitterExtents.z : 0;\n\t\t\t\t\t\tif (this.meshInstance.node === null) {\n\t\t\t\t\t\t\t\tspawnMatrix.setTRS(Vec3.ZERO, Quat.IDENTITY, this.emitterExtents);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tspawnMatrix.setTRS(Vec3.ZERO, this.meshInstance.node.getRotation(), tmpVec3.copy(this.emitterExtents).mul(this.meshInstance.node.localScale));\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tlet emitterPos;\n\t\t\t\tconst emitterScale = this.meshInstance.node === null ? Vec3.ONE : this.meshInstance.node.localScale;\n\t\t\t\tthis.emitterScaleUniform[0] = emitterScale.x;\n\t\t\t\tthis.emitterScaleUniform[1] = emitterScale.y;\n\t\t\t\tthis.emitterScaleUniform[2] = emitterScale.z;\n\t\t\t\tthis.material.setParameter('emitterScale', this.emitterScaleUniform);\n\t\t\t\tif (this.localSpace && this.meshInstance.node) {\n\t\t\t\t\t\temitterPos = this.meshInstance.node.getPosition();\n\t\t\t\t\t\tthis.emitterPosUniform[0] = emitterPos.x;\n\t\t\t\t\t\tthis.emitterPosUniform[1] = emitterPos.y;\n\t\t\t\t\t\tthis.emitterPosUniform[2] = emitterPos.z;\n\t\t\t\t\t\tthis.material.setParameter('emitterPos', this.emitterPosUniform);\n\t\t\t\t}\n\t\t\t\tthis._compParticleFaceParams();\n\t\t\t\tif (!this.useCpu) {\n\t\t\t\t\t\tthis._gpuUpdater.update(device, spawnMatrix, extentsInnerRatioUniform, delta, isOnStop);\n\t\t\t\t} else {\n\t\t\t\t\t\tconst data = new Float32Array(this.vertexBuffer.lock());\n\t\t\t\t\t\tthis._cpuUpdater.update(data, this.vbToSort, this.particleTex, spawnMatrix, extentsInnerRatioUniform, emitterPos, delta, isOnStop);\n\t\t\t\t}\n\t\t\t\tif (!this.loop) {\n\t\t\t\t\t\tif (Date.now() > this.endTime) {\n\t\t\t\t\t\t\t\tif (this.onFinished) this.onFinished();\n\t\t\t\t\t\t\t\tthis.meshInstance.visible = false;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this.meshInstance) {\n\t\t\t\t\t\tthis.meshInstance.drawOrder = this.drawOrder;\n\t\t\t\t}\n\t\t}\n\t\t_destroyResources() {\n\t\t\t\tthis.particleTexIN?.destroy();\n\t\t\t\tthis.particleTexIN = null;\n\t\t\t\tthis.particleTexOUT?.destroy();\n\t\t\t\tthis.particleTexOUT = null;\n\t\t\t\tif (this.particleTexStart && this.particleTexStart.destroy) {\n\t\t\t\t\t\tthis.particleTexStart.destroy();\n\t\t\t\t\t\tthis.particleTexStart = null;\n\t\t\t\t}\n\t\t\t\tthis.rtParticleTexIN?.destroy();\n\t\t\t\tthis.rtParticleTexIN = null;\n\t\t\t\tthis.rtParticleTexOUT?.destroy();\n\t\t\t\tthis.rtParticleTexOUT = null;\n\t\t\t\tthis.internalTex0?.destroy();\n\t\t\t\tthis.internalTex0 = null;\n\t\t\t\tthis.internalTex1?.destroy();\n\t\t\t\tthis.internalTex1 = null;\n\t\t\t\tthis.internalTex2?.destroy();\n\t\t\t\tthis.internalTex2 = null;\n\t\t\t\tthis.internalTex3?.destroy();\n\t\t\t\tthis.internalTex3 = null;\n\t\t\t\tthis.colorParam?.destroy();\n\t\t\t\tthis.colorParam = null;\n\t\t\t\tthis.vertexBuffer = undefined;\n\t\t\t\tthis.indexBuffer = undefined;\n\t\t\t\tconst wasVisible = this.meshInstance?.visible ?? true;\n\t\t\t\tthis.meshInstance?.destroy();\n\t\t\t\tthis.meshInstance = null;\n\t\t\t\tthis.material?.destroy();\n\t\t\t\tthis.material = null;\n\t\t\t\treturn wasVisible;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.camera = null;\n\t\t\t\tthis._destroyResources();\n\t\t}\n}\n\nclass GSplatParams {\n\t\tset colorizeLod(value) {\n\t\t\t\tif (this._colorizeLod !== value) {\n\t\t\t\t\t\tthis._colorizeLod = value;\n\t\t\t\t\t\tthis.dirty = true;\n\t\t\t\t}\n\t\t}\n\t\tget colorizeLod() {\n\t\t\t\treturn this._colorizeLod;\n\t\t}\n\t\tset lodBehindPenalty(value) {\n\t\t\t\tif (this._lodBehindPenalty !== value) {\n\t\t\t\t\t\tthis._lodBehindPenalty = value;\n\t\t\t\t\t\tthis.dirty = true;\n\t\t\t\t}\n\t\t}\n\t\tget lodBehindPenalty() {\n\t\t\t\treturn this._lodBehindPenalty;\n\t\t}\n\t\tset lodRangeMin(value) {\n\t\t\t\tif (this._lodRangeMin !== value) {\n\t\t\t\t\t\tthis._lodRangeMin = value;\n\t\t\t\t\t\tthis.dirty = true;\n\t\t\t\t}\n\t\t}\n\t\tget lodRangeMin() {\n\t\t\t\treturn this._lodRangeMin;\n\t\t}\n\t\tset lodRangeMax(value) {\n\t\t\t\tif (this._lodRangeMax !== value) {\n\t\t\t\t\t\tthis._lodRangeMax = value;\n\t\t\t\t\t\tthis.dirty = true;\n\t\t\t\t}\n\t\t}\n\t\tget lodRangeMax() {\n\t\t\t\treturn this._lodRangeMax;\n\t\t}\n\t\tset lodUnderfillLimit(value) {\n\t\t\t\tif (this._lodUnderfillLimit !== value) {\n\t\t\t\t\t\tthis._lodUnderfillLimit = value;\n\t\t\t\t\t\tthis.dirty = true;\n\t\t\t\t}\n\t\t}\n\t\tget lodUnderfillLimit() {\n\t\t\t\treturn this._lodUnderfillLimit;\n\t\t}\n\t\tset colorRamp(value) {\n\t\t\t\tif (this._colorRamp !== value) {\n\t\t\t\t\t\tthis._colorRamp = value;\n\t\t\t\t\t\tthis.dirty = true;\n\t\t\t\t}\n\t\t}\n\t\tget colorRamp() {\n\t\t\t\treturn this._colorRamp;\n\t\t}\n\t\tconstructor(){\n\t\t\t\tthis.debugAabbs = false;\n\t\t\t\tthis.radialSorting = false;\n\t\t\t\tthis.debugNodeAabbs = false;\n\t\t\t\tthis.dirty = false;\n\t\t\t\tthis._colorizeLod = false;\n\t\t\t\tthis.lodUpdateDistance = 1;\n\t\t\t\tthis.lodUpdateAngle = 0;\n\t\t\t\tthis._lodBehindPenalty = 1;\n\t\t\t\tthis._lodRangeMin = 0;\n\t\t\t\tthis._lodRangeMax = 10;\n\t\t\t\tthis._lodUnderfillLimit = 0;\n\t\t\t\tthis._colorRamp = null;\n\t\t\t\tthis.colorRampIntensity = 1;\n\t\t\t\tthis.colorizeColorUpdate = false;\n\t\t\t\tthis.colorUpdateDistance = 0.2;\n\t\t\t\tthis.colorUpdateAngle = 2;\n\t\t\t\tthis.colorUpdateDistanceLodScale = 2;\n\t\t\t\tthis.colorUpdateAngleLodScale = 2;\n\t\t}\n}\n\nclass ShaderGeneratorShader extends ShaderGenerator {\n\t\tgenerateKey(options) {\n\t\t\t\tconst desc = options.shaderDesc;\n\t\t\t\tconst vsHashGLSL = desc.vertexGLSL ? hashCode(desc.vertexGLSL) : 0;\n\t\t\t\tconst fsHashGLSL = desc.fragmentGLSL ? hashCode(desc.fragmentGLSL) : 0;\n\t\t\t\tconst vsHashWGSL = desc.vertexWGSL ? hashCode(desc.vertexWGSL) : 0;\n\t\t\t\tconst fsHashWGSL = desc.fragmentWGSL ? hashCode(desc.fragmentWGSL) : 0;\n\t\t\t\tconst definesHash = ShaderGenerator.definesHash(options.defines);\n\t\t\t\tconst chunksKey = options.shaderChunks?.key ?? '';\n\t\t\t\tlet key = `${desc.uniqueName}_${definesHash}_${vsHashGLSL}_${fsHashGLSL}_${vsHashWGSL}_${fsHashWGSL}_${chunksKey}`;\n\t\t\t\tif (options.skin) key += '_skin';\n\t\t\t\tif (options.useInstancing) key += '_inst';\n\t\t\t\tif (options.useMorphPosition) key += '_morphp';\n\t\t\t\tif (options.useMorphNormal) key += '_morphn';\n\t\t\t\tif (options.useMorphTextureBasedInt) key += '_morphi';\n\t\t\t\treturn key;\n\t\t}\n\t\tcreateAttributesDefinition(definitionOptions, options) {\n\t\t\t\tconst srcAttributes = options.shaderDesc.attributes;\n\t\t\t\tconst attributes = srcAttributes ? {\n\t\t\t\t\t\t...srcAttributes\n\t\t\t\t} : undefined;\n\t\t\t\tif (options.skin) {\n\t\t\t\t\t\tattributes.vertex_boneWeights = SEMANTIC_BLENDWEIGHT;\n\t\t\t\t\t\tattributes.vertex_boneIndices = SEMANTIC_BLENDINDICES;\n\t\t\t\t}\n\t\t\t\tif (options.useMorphPosition || options.useMorphNormal) {\n\t\t\t\t\t\tattributes.morph_vertex_id = SEMANTIC_ATTR15;\n\t\t\t\t}\n\t\t\t\tdefinitionOptions.attributes = attributes;\n\t\t}\n\t\tcreateVertexDefinition(definitionOptions, options, sharedIncludes, wgsl) {\n\t\t\t\tconst desc = options.shaderDesc;\n\t\t\t\tconst includes = new Map(sharedIncludes);\n\t\t\t\tincludes.set('transformInstancingVS', '');\n\t\t\t\tconst defines = new Map(options.defines);\n\t\t\t\tif (options.skin) defines.set('SKIN', true);\n\t\t\t\tif (options.useInstancing) defines.set('INSTANCING', true);\n\t\t\t\tif (options.useMorphPosition || options.useMorphNormal) {\n\t\t\t\t\t\tdefines.set('MORPHING', true);\n\t\t\t\t\t\tif (options.useMorphTextureBasedInt) defines.set('MORPHING_INT', true);\n\t\t\t\t\t\tif (options.useMorphPosition) defines.set('MORPHING_POSITION', true);\n\t\t\t\t\t\tif (options.useMorphNormal) defines.set('MORPHING_NORMAL', true);\n\t\t\t\t}\n\t\t\t\tdefinitionOptions.vertexCode = wgsl ? desc.vertexWGSL : desc.vertexGLSL;\n\t\t\t\tdefinitionOptions.vertexIncludes = includes;\n\t\t\t\tdefinitionOptions.vertexDefines = defines;\n\t\t}\n\t\tcreateFragmentDefinition(definitionOptions, options, sharedIncludes, wgsl) {\n\t\t\t\tconst desc = options.shaderDesc;\n\t\t\t\tconst includes = new Map(sharedIncludes);\n\t\t\t\tconst defines = new Map(options.defines);\n\t\t\t\tdefinitionOptions.fragmentCode = wgsl ? desc.fragmentWGSL : desc.fragmentGLSL;\n\t\t\t\tdefinitionOptions.fragmentIncludes = includes;\n\t\t\t\tdefinitionOptions.fragmentDefines = defines;\n\t\t}\n\t\tcreateShaderDefinition(device, options) {\n\t\t\t\tconst desc = options.shaderDesc;\n\t\t\t\tconst wgsl = device.isWebGPU && !!desc.vertexWGSL && !!desc.fragmentWGSL && (options.shaderChunks?.useWGSL ?? true);\n\t\t\t\tconst definitionOptions = {\n\t\t\t\t\t\tname: `ShaderMaterial-${desc.uniqueName}`,\n\t\t\t\t\t\tshaderLanguage: wgsl ? SHADERLANGUAGE_WGSL : SHADERLANGUAGE_GLSL,\n\t\t\t\t\t\tfragmentOutputTypes: desc.fragmentOutputTypes,\n\t\t\t\t\t\tmeshUniformBufferFormat: desc.meshUniformBufferFormat,\n\t\t\t\t\t\tmeshBindGroupFormat: desc.meshBindGroupFormat\n\t\t\t\t};\n\t\t\t\tconst shaderLanguage = wgsl ? SHADERLANGUAGE_WGSL : SHADERLANGUAGE_GLSL;\n\t\t\t\tconst sharedIncludes = MapUtils.merge(ShaderChunks.get(device, shaderLanguage), options.shaderChunks[shaderLanguage]);\n\t\t\t\tthis.createAttributesDefinition(definitionOptions, options);\n\t\t\t\tthis.createVertexDefinition(definitionOptions, options, sharedIncludes, wgsl);\n\t\t\t\tthis.createFragmentDefinition(definitionOptions, options, sharedIncludes, wgsl);\n\t\t\t\treturn ShaderDefinitionUtils.createDefinition(device, definitionOptions);\n\t\t}\n}\nconst shaderGeneratorShader = new ShaderGeneratorShader();\n\nclass ShaderMaterial extends Material {\n\t\tconstructor(shaderDesc){\n\t\t\t\tsuper();\n\t\t\t\tthis.shaderDesc = shaderDesc;\n\t\t}\n\t\tset shaderDesc(value) {\n\t\t\t\tthis._shaderDesc = undefined;\n\t\t\t\tif (value) {\n\t\t\t\t\t\tthis._shaderDesc = {\n\t\t\t\t\t\t\t\tuniqueName: value.uniqueName,\n\t\t\t\t\t\t\t\tattributes: value.attributes,\n\t\t\t\t\t\t\t\tfragmentOutputTypes: value.fragmentOutputTypes,\n\t\t\t\t\t\t\t\tvertexGLSL: value.vertexGLSL,\n\t\t\t\t\t\t\t\tfragmentGLSL: value.fragmentGLSL,\n\t\t\t\t\t\t\t\tvertexWGSL: value.vertexWGSL,\n\t\t\t\t\t\t\t\tfragmentWGSL: value.fragmentWGSL\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (value.vertexCode || value.fragmentCode || value.shaderLanguage) {\n\t\t\t\t\t\t\t\tconst language = value.shaderLanguage ?? SHADERLANGUAGE_GLSL;\n\t\t\t\t\t\t\t\tif (language === SHADERLANGUAGE_GLSL) {\n\t\t\t\t\t\t\t\t\t\tthis._shaderDesc.vertexGLSL = value.vertexCode;\n\t\t\t\t\t\t\t\t\t\tthis._shaderDesc.fragmentGLSL = value.fragmentCode;\n\t\t\t\t\t\t\t\t} else if (language === SHADERLANGUAGE_WGSL) {\n\t\t\t\t\t\t\t\t\t\tthis._shaderDesc.vertexWGSL = value.vertexCode;\n\t\t\t\t\t\t\t\t\t\tthis._shaderDesc.fragmentWGSL = value.fragmentCode;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.clearVariants();\n\t\t}\n\t\tget shaderDesc() {\n\t\t\t\treturn this._shaderDesc;\n\t\t}\n\t\tcopy(source) {\n\t\t\t\tsuper.copy(source);\n\t\t\t\tthis.shaderDesc = source.shaderDesc;\n\t\t\t\treturn this;\n\t\t}\n\t\tgetShaderVariant(params) {\n\t\t\t\tconst { objDefs } = params;\n\t\t\t\tconst options = {\n\t\t\t\t\t\tdefines: ShaderUtils.getCoreDefines(this, params),\n\t\t\t\t\t\tskin: (objDefs & SHADERDEF_SKIN) !== 0,\n\t\t\t\t\t\tuseInstancing: (objDefs & SHADERDEF_INSTANCING) !== 0,\n\t\t\t\t\t\tuseMorphPosition: (objDefs & SHADERDEF_MORPH_POSITION) !== 0,\n\t\t\t\t\t\tuseMorphNormal: (objDefs & SHADERDEF_MORPH_NORMAL) !== 0,\n\t\t\t\t\t\tuseMorphTextureBasedInt: (objDefs & SHADERDEF_MORPH_TEXTURE_BASED_INT) !== 0,\n\t\t\t\t\t\tpass: params.pass,\n\t\t\t\t\t\tgamma: params.cameraShaderParams.shaderOutputGamma,\n\t\t\t\t\t\ttoneMapping: params.cameraShaderParams.toneMapping,\n\t\t\t\t\t\tfog: params.cameraShaderParams.fog,\n\t\t\t\t\t\tshaderDesc: this.shaderDesc,\n\t\t\t\t\t\tshaderChunks: this.shaderChunks\n\t\t\t\t};\n\t\t\t\tconst processingOptions = new ShaderProcessorOptions(params.viewUniformFormat, params.viewBindGroupFormat, params.vertexFormat);\n\t\t\t\tconst library = getProgramLibrary(params.device);\n\t\t\t\tlibrary.register('shader-material', shaderGeneratorShader);\n\t\t\t\treturn library.getProgram('shader-material', options, processingOptions, this.userId);\n\t\t}\n}\n\nconst decodeTable = {\n\t\t'linear': 'decodeLinear',\n\t\t'srgb': 'decodeGamma',\n\t\t'rgbm': 'decodeRGBM',\n\t\t'rgbe': 'decodeRGBE',\n\t\t'rgbp': 'decodeRGBP',\n\t\t'xy': 'unpackNormalXY',\n\t\t'xyz': 'unpackNormalXYZ'\n};\nconst encodeTable = {\n\t\t'linear': 'encodeLinear',\n\t\t'srgb': 'encodeGamma',\n\t\t'rgbm': 'encodeRGBM',\n\t\t'rgbe': 'encodeRGBE',\n\t\t'rgbp': 'encodeRGBP'\n};\nclass ChunkUtils {\n\t\tstatic decodeFunc(encoding) {\n\t\t\t\treturn decodeTable[encoding] ?? 'decodeGamma';\n\t\t}\n\t\tstatic encodeFunc(encoding) {\n\t\t\t\treturn encodeTable[encoding] ?? 'encodeGamma';\n\t\t}\n}\n\nconst calculateNormals = (positions, indices)=>{\n\t\tconst triangleCount = indices.length / 3;\n\t\tconst vertexCount = positions.length / 3;\n\t\tconst p1 = new Vec3();\n\t\tconst p2 = new Vec3();\n\t\tconst p3 = new Vec3();\n\t\tconst p1p2 = new Vec3();\n\t\tconst p1p3 = new Vec3();\n\t\tconst faceNormal = new Vec3();\n\t\tconst normals = [];\n\t\tfor(let i = 0; i < positions.length; i++){\n\t\t\t\tnormals[i] = 0;\n\t\t}\n\t\tfor(let i = 0; i < triangleCount; i++){\n\t\t\t\tconst i1 = indices[i * 3];\n\t\t\t\tconst i2 = indices[i * 3 + 1];\n\t\t\t\tconst i3 = indices[i * 3 + 2];\n\t\t\t\tp1.set(positions[i1 * 3], positions[i1 * 3 + 1], positions[i1 * 3 + 2]);\n\t\t\t\tp2.set(positions[i2 * 3], positions[i2 * 3 + 1], positions[i2 * 3 + 2]);\n\t\t\t\tp3.set(positions[i3 * 3], positions[i3 * 3 + 1], positions[i3 * 3 + 2]);\n\t\t\t\tp1p2.sub2(p2, p1);\n\t\t\t\tp1p3.sub2(p3, p1);\n\t\t\t\tfaceNormal.cross(p1p2, p1p3).normalize();\n\t\t\t\tnormals[i1 * 3] += faceNormal.x;\n\t\t\t\tnormals[i1 * 3 + 1] += faceNormal.y;\n\t\t\t\tnormals[i1 * 3 + 2] += faceNormal.z;\n\t\t\t\tnormals[i2 * 3] += faceNormal.x;\n\t\t\t\tnormals[i2 * 3 + 1] += faceNormal.y;\n\t\t\t\tnormals[i2 * 3 + 2] += faceNormal.z;\n\t\t\t\tnormals[i3 * 3] += faceNormal.x;\n\t\t\t\tnormals[i3 * 3 + 1] += faceNormal.y;\n\t\t\t\tnormals[i3 * 3 + 2] += faceNormal.z;\n\t\t}\n\t\tfor(let i = 0; i < vertexCount; i++){\n\t\t\t\tconst nx = normals[i * 3];\n\t\t\t\tconst ny = normals[i * 3 + 1];\n\t\t\t\tconst nz = normals[i * 3 + 2];\n\t\t\t\tconst invLen = 1 / Math.sqrt(nx * nx + ny * ny + nz * nz);\n\t\t\t\tnormals[i * 3] *= invLen;\n\t\t\t\tnormals[i * 3 + 1] *= invLen;\n\t\t\t\tnormals[i * 3 + 2] *= invLen;\n\t\t}\n\t\treturn normals;\n};\nconst calculateTangents = (positions, normals, uvs, indices)=>{\n\t\tconst triangleCount = indices.length / 3;\n\t\tconst vertexCount = positions.length / 3;\n\t\tconst v1 = new Vec3();\n\t\tconst v2 = new Vec3();\n\t\tconst v3 = new Vec3();\n\t\tconst w1 = new Vec2();\n\t\tconst w2 = new Vec2();\n\t\tconst w3 = new Vec2();\n\t\tconst sdir = new Vec3();\n\t\tconst tdir = new Vec3();\n\t\tconst tan1 = new Float32Array(vertexCount * 3);\n\t\tconst tan2 = new Float32Array(vertexCount * 3);\n\t\tconst tangents = [];\n\t\tfor(let i = 0; i < triangleCount; i++){\n\t\t\t\tconst i1 = indices[i * 3];\n\t\t\t\tconst i2 = indices[i * 3 + 1];\n\t\t\t\tconst i3 = indices[i * 3 + 2];\n\t\t\t\tv1.set(positions[i1 * 3], positions[i1 * 3 + 1], positions[i1 * 3 + 2]);\n\t\t\t\tv2.set(positions[i2 * 3], positions[i2 * 3 + 1], positions[i2 * 3 + 2]);\n\t\t\t\tv3.set(positions[i3 * 3], positions[i3 * 3 + 1], positions[i3 * 3 + 2]);\n\t\t\t\tw1.set(uvs[i1 * 2], uvs[i1 * 2 + 1]);\n\t\t\t\tw2.set(uvs[i2 * 2], uvs[i2 * 2 + 1]);\n\t\t\t\tw3.set(uvs[i3 * 2], uvs[i3 * 2 + 1]);\n\t\t\t\tconst x1 = v2.x - v1.x;\n\t\t\t\tconst x2 = v3.x - v1.x;\n\t\t\t\tconst y1 = v2.y - v1.y;\n\t\t\t\tconst y2 = v3.y - v1.y;\n\t\t\t\tconst z1 = v2.z - v1.z;\n\t\t\t\tconst z2 = v3.z - v1.z;\n\t\t\t\tconst s1 = w2.x - w1.x;\n\t\t\t\tconst s2 = w3.x - w1.x;\n\t\t\t\tconst t1 = w2.y - w1.y;\n\t\t\t\tconst t2 = w3.y - w1.y;\n\t\t\t\tconst area = s1 * t2 - s2 * t1;\n\t\t\t\tif (area === 0) {\n\t\t\t\t\t\tsdir.set(0, 1, 0);\n\t\t\t\t\t\ttdir.set(1, 0, 0);\n\t\t\t\t} else {\n\t\t\t\t\t\tconst r = 1 / area;\n\t\t\t\t\t\tsdir.set((t2 * x1 - t1 * x2) * r, (t2 * y1 - t1 * y2) * r, (t2 * z1 - t1 * z2) * r);\n\t\t\t\t\t\ttdir.set((s1 * x2 - s2 * x1) * r, (s1 * y2 - s2 * y1) * r, (s1 * z2 - s2 * z1) * r);\n\t\t\t\t}\n\t\t\t\ttan1[i1 * 3 + 0] += sdir.x;\n\t\t\t\ttan1[i1 * 3 + 1] += sdir.y;\n\t\t\t\ttan1[i1 * 3 + 2] += sdir.z;\n\t\t\t\ttan1[i2 * 3 + 0] += sdir.x;\n\t\t\t\ttan1[i2 * 3 + 1] += sdir.y;\n\t\t\t\ttan1[i2 * 3 + 2] += sdir.z;\n\t\t\t\ttan1[i3 * 3 + 0] += sdir.x;\n\t\t\t\ttan1[i3 * 3 + 1] += sdir.y;\n\t\t\t\ttan1[i3 * 3 + 2] += sdir.z;\n\t\t\t\ttan2[i1 * 3 + 0] += tdir.x;\n\t\t\t\ttan2[i1 * 3 + 1] += tdir.y;\n\t\t\t\ttan2[i1 * 3 + 2] += tdir.z;\n\t\t\t\ttan2[i2 * 3 + 0] += tdir.x;\n\t\t\t\ttan2[i2 * 3 + 1] += tdir.y;\n\t\t\t\ttan2[i2 * 3 + 2] += tdir.z;\n\t\t\t\ttan2[i3 * 3 + 0] += tdir.x;\n\t\t\t\ttan2[i3 * 3 + 1] += tdir.y;\n\t\t\t\ttan2[i3 * 3 + 2] += tdir.z;\n\t\t}\n\t\tconst t1 = new Vec3();\n\t\tconst t2 = new Vec3();\n\t\tconst n = new Vec3();\n\t\tconst temp = new Vec3();\n\t\tfor(let i = 0; i < vertexCount; i++){\n\t\t\t\tn.set(normals[i * 3], normals[i * 3 + 1], normals[i * 3 + 2]);\n\t\t\t\tt1.set(tan1[i * 3], tan1[i * 3 + 1], tan1[i * 3 + 2]);\n\t\t\t\tt2.set(tan2[i * 3], tan2[i * 3 + 1], tan2[i * 3 + 2]);\n\t\t\t\tconst ndott = n.dot(t1);\n\t\t\t\ttemp.copy(n).mulScalar(ndott);\n\t\t\t\ttemp.sub2(t1, temp).normalize();\n\t\t\t\ttangents[i * 4] = temp.x;\n\t\t\t\ttangents[i * 4 + 1] = temp.y;\n\t\t\t\ttangents[i * 4 + 2] = temp.z;\n\t\t\t\ttemp.cross(n, t1);\n\t\t\t\ttangents[i * 4 + 3] = temp.dot(t2) < 0.0 ? -1 : 1.0;\n\t\t}\n\t\treturn tangents;\n};\n\nclass Geometry {\n\t\tcalculateNormals() {\n\t\t\t\tthis.normals = calculateNormals(this.positions, this.indices);\n\t\t}\n\t\tcalculateTangents() {\n\t\t\t\tthis.tangents = calculateTangents(this.positions, this.normals, this.uvs, this.indices);\n\t\t}\n}\n\nconst primitiveUv1Padding$1 = 4.0 / 64;\nconst primitiveUv1PaddingScale$1 = 1.0 - primitiveUv1Padding$1 * 2;\nclass BoxGeometry extends Geometry {\n\t\tconstructor(opts = {}){\n\t\t\t\tsuper();\n\t\t\t\tconst he = opts.halfExtents ?? new Vec3(0.5, 0.5, 0.5);\n\t\t\t\tconst ws = opts.widthSegments ?? 1;\n\t\t\t\tconst ls = opts.lengthSegments ?? 1;\n\t\t\t\tconst hs = opts.heightSegments ?? 1;\n\t\t\t\tconst yOffset = opts.yOffset ?? 0;\n\t\t\t\tconst minY = -he.y + yOffset;\n\t\t\t\tconst maxY = he.y + yOffset;\n\t\t\t\tconst corners = [\n\t\t\t\t\t\tnew Vec3(-he.x, minY, he.z),\n\t\t\t\t\t\tnew Vec3(he.x, minY, he.z),\n\t\t\t\t\t\tnew Vec3(he.x, maxY, he.z),\n\t\t\t\t\t\tnew Vec3(-he.x, maxY, he.z),\n\t\t\t\t\t\tnew Vec3(he.x, minY, -he.z),\n\t\t\t\t\t\tnew Vec3(-he.x, minY, -he.z),\n\t\t\t\t\t\tnew Vec3(-he.x, maxY, -he.z),\n\t\t\t\t\t\tnew Vec3(he.x, maxY, -he.z)\n\t\t\t\t];\n\t\t\t\tconst faceAxes = [\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t1,\n\t\t\t\t\t\t\t\t3\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t4,\n\t\t\t\t\t\t\t\t5,\n\t\t\t\t\t\t\t\t7\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t3,\n\t\t\t\t\t\t\t\t2,\n\t\t\t\t\t\t\t\t6\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t1,\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t4\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t1,\n\t\t\t\t\t\t\t\t4,\n\t\t\t\t\t\t\t\t2\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t5,\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t6\n\t\t\t\t\t\t]\n\t\t\t\t];\n\t\t\t\tconst faceNormals = [\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t1\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t-1\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t1,\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t-1,\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t1,\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t-1,\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t]\n\t\t\t\t];\n\t\t\t\tconst sides = {\n\t\t\t\t\t\tFRONT: 0,\n\t\t\t\t\t\tBACK: 1,\n\t\t\t\t\t\tTOP: 2,\n\t\t\t\t\t\tBOTTOM: 3,\n\t\t\t\t\t\tRIGHT: 4,\n\t\t\t\t\t\tLEFT: 5\n\t\t\t\t};\n\t\t\t\tconst positions = [];\n\t\t\t\tconst normals = [];\n\t\t\t\tconst uvs = [];\n\t\t\t\tconst indices = [];\n\t\t\t\tlet vcounter = 0;\n\t\t\t\tconst generateFace = (side, uSegments, vSegments)=>{\n\t\t\t\t\t\tconst temp1 = new Vec3();\n\t\t\t\t\t\tconst temp2 = new Vec3();\n\t\t\t\t\t\tconst temp3 = new Vec3();\n\t\t\t\t\t\tconst r = new Vec3();\n\t\t\t\t\t\tfor(let i = 0; i <= uSegments; i++){\n\t\t\t\t\t\t\t\tfor(let j = 0; j <= vSegments; j++){\n\t\t\t\t\t\t\t\t\t\ttemp1.lerp(corners[faceAxes[side][0]], corners[faceAxes[side][1]], i / uSegments);\n\t\t\t\t\t\t\t\t\t\ttemp2.lerp(corners[faceAxes[side][0]], corners[faceAxes[side][2]], j / vSegments);\n\t\t\t\t\t\t\t\t\t\ttemp3.sub2(temp2, corners[faceAxes[side][0]]);\n\t\t\t\t\t\t\t\t\t\tr.add2(temp1, temp3);\n\t\t\t\t\t\t\t\t\t\tlet u = i / uSegments;\n\t\t\t\t\t\t\t\t\t\tlet v = j / vSegments;\n\t\t\t\t\t\t\t\t\t\tpositions.push(r.x, r.y, r.z);\n\t\t\t\t\t\t\t\t\t\tnormals.push(faceNormals[side][0], faceNormals[side][1], faceNormals[side][2]);\n\t\t\t\t\t\t\t\t\t\tuvs.push(u, 1 - v);\n\t\t\t\t\t\t\t\t\t\tu = u * primitiveUv1PaddingScale$1 + primitiveUv1Padding$1;\n\t\t\t\t\t\t\t\t\t\tv = v * primitiveUv1PaddingScale$1 + primitiveUv1Padding$1;\n\t\t\t\t\t\t\t\t\t\tu /= 3;\n\t\t\t\t\t\t\t\t\t\tv /= 3;\n\t\t\t\t\t\t\t\t\t\tu += side % 3 / 3;\n\t\t\t\t\t\t\t\t\t\tv += Math.floor(side / 3) / 3;\n\t\t\t\t\t\t\t\t\t\tif (i < uSegments && j < vSegments) {\n\t\t\t\t\t\t\t\t\t\t\t\tindices.push(vcounter + vSegments + 1, vcounter + 1, vcounter);\n\t\t\t\t\t\t\t\t\t\t\t\tindices.push(vcounter + vSegments + 1, vcounter + vSegments + 2, vcounter + 1);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tvcounter++;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tgenerateFace(sides.FRONT, ws, hs);\n\t\t\t\tgenerateFace(sides.BACK, ws, hs);\n\t\t\t\tgenerateFace(sides.TOP, ws, ls);\n\t\t\t\tgenerateFace(sides.BOTTOM, ws, ls);\n\t\t\t\tgenerateFace(sides.RIGHT, ls, hs);\n\t\t\t\tgenerateFace(sides.LEFT, ls, hs);\n\t\t\t\tthis.positions = positions;\n\t\t\t\tthis.normals = normals;\n\t\t\t\tthis.uvs = uvs;\n\t\t\t\tthis.uvs1 = uvs;\n\t\t\t\tthis.indices = indices;\n\t\t\t\tif (opts.calculateTangents) {\n\t\t\t\t\t\tthis.tangents = calculateTangents(positions, normals, uvs, indices);\n\t\t\t\t}\n\t\t}\n}\n\nclass SphereGeometry extends Geometry {\n\t\tconstructor(opts = {}){\n\t\t\t\tsuper();\n\t\t\t\tconst radius = opts.radius ?? 0.5;\n\t\t\t\tconst latitudeBands = opts.latitudeBands ?? 16;\n\t\t\t\tconst longitudeBands = opts.longitudeBands ?? 16;\n\t\t\t\tconst positions = [];\n\t\t\t\tconst normals = [];\n\t\t\t\tconst uvs = [];\n\t\t\t\tconst indices = [];\n\t\t\t\tfor(let lat = 0; lat <= latitudeBands; lat++){\n\t\t\t\t\t\tconst theta = lat * Math.PI / latitudeBands;\n\t\t\t\t\t\tconst sinTheta = Math.sin(theta);\n\t\t\t\t\t\tconst cosTheta = Math.cos(theta);\n\t\t\t\t\t\tfor(let lon = 0; lon <= longitudeBands; lon++){\n\t\t\t\t\t\t\t\tconst phi = lon * 2 * Math.PI / longitudeBands - Math.PI / 2;\n\t\t\t\t\t\t\t\tconst sinPhi = Math.sin(phi);\n\t\t\t\t\t\t\t\tconst cosPhi = Math.cos(phi);\n\t\t\t\t\t\t\t\tconst x = cosPhi * sinTheta;\n\t\t\t\t\t\t\t\tconst y = cosTheta;\n\t\t\t\t\t\t\t\tconst z = sinPhi * sinTheta;\n\t\t\t\t\t\t\t\tconst u = 1 - lon / longitudeBands;\n\t\t\t\t\t\t\t\tconst v = 1 - lat / latitudeBands;\n\t\t\t\t\t\t\t\tpositions.push(x * radius, y * radius, z * radius);\n\t\t\t\t\t\t\t\tnormals.push(x, y, z);\n\t\t\t\t\t\t\t\tuvs.push(u, 1 - v);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor(let lat = 0; lat < latitudeBands; ++lat){\n\t\t\t\t\t\tfor(let lon = 0; lon < longitudeBands; ++lon){\n\t\t\t\t\t\t\t\tconst first = lat * (longitudeBands + 1) + lon;\n\t\t\t\t\t\t\t\tconst second = first + longitudeBands + 1;\n\t\t\t\t\t\t\t\tindices.push(first + 1, second, first);\n\t\t\t\t\t\t\t\tindices.push(first + 1, second + 1, second);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.positions = positions;\n\t\t\t\tthis.normals = normals;\n\t\t\t\tthis.uvs = uvs;\n\t\t\t\tthis.uvs1 = uvs;\n\t\t\t\tthis.indices = indices;\n\t\t\t\tif (opts.calculateTangents) {\n\t\t\t\t\t\tthis.tangents = calculateTangents(positions, normals, uvs, indices);\n\t\t\t\t}\n\t\t}\n}\n\nclass DomeGeometry extends SphereGeometry {\n\t\tconstructor(opts = {}){\n\t\t\t\tconst radius = 0.5;\n\t\t\t\tconst latitudeBands = opts.latitudeBands ?? 16;\n\t\t\t\tconst longitudeBands = opts.longitudeBands ?? 16;\n\t\t\t\tsuper({\n\t\t\t\t\t\tradius,\n\t\t\t\t\t\tlatitudeBands,\n\t\t\t\t\t\tlongitudeBands\n\t\t\t\t});\n\t\t\t\tconst bottomLimit = 0.1;\n\t\t\t\tconst curvatureRadius = 0.95;\n\t\t\t\tconst curvatureRadiusSq = curvatureRadius * curvatureRadius;\n\t\t\t\tconst positions = this.positions;\n\t\t\t\tfor(let i = 0; i < positions.length; i += 3){\n\t\t\t\t\t\tconst x = positions[i] / radius;\n\t\t\t\t\t\tlet y = positions[i + 1] / radius;\n\t\t\t\t\t\tconst z = positions[i + 2] / radius;\n\t\t\t\t\t\tif (y < 0) {\n\t\t\t\t\t\t\t\ty *= 0.3;\n\t\t\t\t\t\t\t\tif (x * x + z * z < curvatureRadiusSq) {\n\t\t\t\t\t\t\t\t\t\ty = -bottomLimit;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\ty += bottomLimit;\n\t\t\t\t\t\ty *= radius;\n\t\t\t\t\t\tpositions[i + 1] = y;\n\t\t\t\t}\n\t\t}\n}\n\nclass SkyGeometry {\n\t\tstatic create(device, type) {\n\t\t\t\tswitch(type){\n\t\t\t\t\t\tcase SKYTYPE_BOX:\n\t\t\t\t\t\t\t\treturn SkyGeometry.box(device);\n\t\t\t\t\t\tcase SKYTYPE_DOME:\n\t\t\t\t\t\t\t\treturn SkyGeometry.dome(device);\n\t\t\t\t}\n\t\t\t\treturn SkyGeometry.infinite(device);\n\t\t}\n\t\tstatic infinite(device) {\n\t\t\t\treturn Mesh.fromGeometry(device, new BoxGeometry(device));\n\t\t}\n\t\tstatic box(device) {\n\t\t\t\treturn Mesh.fromGeometry(device, new BoxGeometry({\n\t\t\t\t\t\tyOffset: 0.5\n\t\t\t\t}));\n\t\t}\n\t\tstatic dome(device) {\n\t\t\t\tconst geom = new DomeGeometry({\n\t\t\t\t\t\tlatitudeBands: 50,\n\t\t\t\t\t\tlongitudeBands: 50\n\t\t\t\t});\n\t\t\t\tgeom.normals = undefined;\n\t\t\t\tgeom.uvs = undefined;\n\t\t\t\treturn Mesh.fromGeometry(device, geom);\n\t\t}\n}\n\nclass SkyMesh {\n\t\tconstructor(device, scene, node, texture, type){\n\t\t\t\tthis.meshInstance = null;\n\t\t\t\tthis._depthWrite = false;\n\t\t\t\tconst material = new ShaderMaterial({\n\t\t\t\t\t\tuniqueName: 'SkyMaterial',\n\t\t\t\t\t\tvertexGLSL: ShaderChunks.get(device, SHADERLANGUAGE_GLSL).get('skyboxVS'),\n\t\t\t\t\t\tfragmentGLSL: ShaderChunks.get(device, SHADERLANGUAGE_GLSL).get('skyboxPS'),\n\t\t\t\t\t\tvertexWGSL: ShaderChunks.get(device, SHADERLANGUAGE_WGSL).get('skyboxVS'),\n\t\t\t\t\t\tfragmentWGSL: ShaderChunks.get(device, SHADERLANGUAGE_WGSL).get('skyboxPS'),\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\taPosition: SEMANTIC_POSITION\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tmaterial.setDefine('{SKYBOX_DECODE_FNC}', ChunkUtils.decodeFunc(texture.encoding));\n\t\t\t\tif (type !== SKYTYPE_INFINITE) material.setDefine('SKYMESH', '');\n\t\t\t\tif (texture.cubemap) material.setDefine('SKY_CUBEMAP', '');\n\t\t\t\tmaterial.setParameter('skyboxHighlightMultiplier', scene.skyboxHighlightMultiplier);\n\t\t\t\tif (texture.cubemap) {\n\t\t\t\t\t\tmaterial.setParameter('texture_cubeMap', texture);\n\t\t\t\t} else {\n\t\t\t\t\t\tmaterial.setParameter('texture_envAtlas', texture);\n\t\t\t\t\t\tmaterial.setParameter('mipLevel', scene.skyboxMip);\n\t\t\t\t}\n\t\t\t\tmaterial.cull = CULLFACE_FRONT;\n\t\t\t\tmaterial.depthWrite = this._depthWrite;\n\t\t\t\tconst skyLayer = scene.layers.getLayerById(LAYERID_SKYBOX);\n\t\t\t\tif (skyLayer) {\n\t\t\t\t\t\tconst mesh = SkyGeometry.create(device, type);\n\t\t\t\t\t\tconst meshInstance = new MeshInstance(mesh, material, node);\n\t\t\t\t\t\tthis.meshInstance = meshInstance;\n\t\t\t\t\t\tmeshInstance.cull = false;\n\t\t\t\t\t\tmeshInstance.pick = false;\n\t\t\t\t\t\tskyLayer.addMeshInstances([\n\t\t\t\t\t\t\t\tmeshInstance\n\t\t\t\t\t\t]);\n\t\t\t\t\t\tthis.skyLayer = skyLayer;\n\t\t\t\t}\n\t\t}\n\t\tdestroy() {\n\t\t\t\tif (this.meshInstance) {\n\t\t\t\t\t\tif (this.skyLayer) {\n\t\t\t\t\t\t\t\tthis.skyLayer.removeMeshInstances([\n\t\t\t\t\t\t\t\t\t\tthis.meshInstance\n\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.meshInstance.destroy();\n\t\t\t\t\t\tthis.meshInstance = null;\n\t\t\t\t}\n\t\t}\n\t\tset depthWrite(value) {\n\t\t\t\tthis._depthWrite = value;\n\t\t\t\tif (this.meshInstance) {\n\t\t\t\t\t\tthis.meshInstance.material.depthWrite = value;\n\t\t\t\t}\n\t\t}\n\t\tget depthWrite() {\n\t\t\t\treturn this._depthWrite;\n\t\t}\n}\n\nclass Sky {\n\t\tconstructor(scene){\n\t\t\t\tthis._type = SKYTYPE_INFINITE;\n\t\t\t\tthis._center = new Vec3(0, 1, 0);\n\t\t\t\tthis.skyMesh = null;\n\t\t\t\tthis._depthWrite = false;\n\t\t\t\tthis.node = new GraphNode('SkyMeshNode');\n\t\t\t\tthis.device = scene.device;\n\t\t\t\tthis.scene = scene;\n\t\t\t\tthis.center = new Vec3(0, 1, 0);\n\t\t\t\tthis.centerArray = new Float32Array(3);\n\t\t\t\tthis.projectedSkydomeCenterId = this.device.scope.resolve('projectedSkydomeCenter');\n\t\t}\n\t\tapplySettings(render) {\n\t\t\t\tthis.type = render.skyType ?? SKYTYPE_INFINITE;\n\t\t\t\tthis.node.setLocalPosition(new Vec3(render.skyMeshPosition ?? [\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0\n\t\t\t\t]));\n\t\t\t\tthis.node.setLocalEulerAngles(new Vec3(render.skyMeshRotation ?? [\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0\n\t\t\t\t]));\n\t\t\t\tthis.node.setLocalScale(new Vec3(render.skyMeshScale ?? [\n\t\t\t\t\t\t1,\n\t\t\t\t\t\t1,\n\t\t\t\t\t\t1\n\t\t\t\t]));\n\t\t\t\tif (render.skyCenter) {\n\t\t\t\t\t\tthis._center = new Vec3(render.skyCenter);\n\t\t\t\t}\n\t\t}\n\t\tset type(value) {\n\t\t\t\tif (this._type !== value) {\n\t\t\t\t\t\tthis._type = value;\n\t\t\t\t\t\tthis.scene.updateShaders = true;\n\t\t\t\t\t\tthis.updateSkyMesh();\n\t\t\t\t}\n\t\t}\n\t\tget type() {\n\t\t\t\treturn this._type;\n\t\t}\n\t\tset center(value) {\n\t\t\t\tthis._center.copy(value);\n\t\t}\n\t\tget center() {\n\t\t\t\treturn this._center;\n\t\t}\n\t\tset depthWrite(value) {\n\t\t\t\tif (this._depthWrite !== value) {\n\t\t\t\t\t\tthis._depthWrite = value;\n\t\t\t\t\t\tif (this.skyMesh) {\n\t\t\t\t\t\t\t\tthis.skyMesh.depthWrite = value;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget depthWrite() {\n\t\t\t\treturn this._depthWrite;\n\t\t}\n\t\tupdateSkyMesh() {\n\t\t\t\tconst texture = this.scene._getSkyboxTex();\n\t\t\t\tif (texture) {\n\t\t\t\t\t\tthis.resetSkyMesh();\n\t\t\t\t\t\tthis.skyMesh = new SkyMesh(this.device, this.scene, this.node, texture, this.type);\n\t\t\t\t\t\tthis.skyMesh.depthWrite = this._depthWrite;\n\t\t\t\t\t\tthis.scene.fire('set:skybox', texture);\n\t\t\t\t}\n\t\t}\n\t\tresetSkyMesh() {\n\t\t\t\tthis.skyMesh?.destroy();\n\t\t\t\tthis.skyMesh = null;\n\t\t}\n\t\tupdate() {\n\t\t\t\tif (this.type !== SKYTYPE_INFINITE) {\n\t\t\t\t\t\tconst { center, centerArray } = this;\n\t\t\t\t\t\tconst temp = new Vec3();\n\t\t\t\t\t\tthis.node.getWorldTransform().transformPoint(center, temp);\n\t\t\t\t\t\tcenterArray[0] = temp.x;\n\t\t\t\t\t\tcenterArray[1] = temp.y;\n\t\t\t\t\t\tcenterArray[2] = temp.z;\n\t\t\t\t\t\tthis.projectedSkydomeCenterId.setValue(centerArray);\n\t\t\t\t}\n\t\t}\n}\n\nconst identityGraphNode = new GraphNode();\nidentityGraphNode.worldTransform = Mat4.IDENTITY;\nidentityGraphNode._dirtyWorld = identityGraphNode._dirtyNormal = false;\nclass ImmediateBatch {\n\t\tconstructor(device, material, layer){\n\t\t\t\tthis.material = material;\n\t\t\t\tthis.layer = layer;\n\t\t\t\tthis.positions = [];\n\t\t\t\tthis.colors = [];\n\t\t\t\tthis.mesh = new Mesh(device);\n\t\t\t\tthis.meshInstance = null;\n\t\t}\n\t\taddLines(positions, color) {\n\t\t\t\tconst destPos = this.positions;\n\t\t\t\tconst count = positions.length;\n\t\t\t\tfor(let i = 0; i < count; i++){\n\t\t\t\t\t\tconst pos = positions[i];\n\t\t\t\t\t\tdestPos.push(pos.x, pos.y, pos.z);\n\t\t\t\t}\n\t\t\t\tconst destCol = this.colors;\n\t\t\t\tif (color.length) {\n\t\t\t\t\t\tfor(let i = 0; i < count; i++){\n\t\t\t\t\t\t\t\tconst col = color[i];\n\t\t\t\t\t\t\t\tdestCol.push(col.r, col.g, col.b, col.a);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tfor(let i = 0; i < count; i++){\n\t\t\t\t\t\t\t\tdestCol.push(color.r, color.g, color.b, color.a);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\taddLinesArrays(positions, color) {\n\t\t\t\tconst destPos = this.positions;\n\t\t\t\tfor(let i = 0; i < positions.length; i += 3){\n\t\t\t\t\t\tdestPos.push(positions[i], positions[i + 1], positions[i + 2]);\n\t\t\t\t}\n\t\t\t\tconst destCol = this.colors;\n\t\t\t\tif (color.length) {\n\t\t\t\t\t\tfor(let i = 0; i < color.length; i += 4){\n\t\t\t\t\t\t\t\tdestCol.push(color[i], color[i + 1], color[i + 2], color[i + 3]);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tconst count = positions.length / 3;\n\t\t\t\t\t\tfor(let i = 0; i < count; i++){\n\t\t\t\t\t\t\t\tdestCol.push(color.r, color.g, color.b, color.a);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tonPreRender(visibleList, transparent) {\n\t\t\t\tif (this.positions.length > 0 && this.material.transparent === transparent) {\n\t\t\t\t\t\tthis.mesh.setPositions(this.positions);\n\t\t\t\t\t\tthis.mesh.setColors(this.colors);\n\t\t\t\t\t\tthis.mesh.update(PRIMITIVE_LINES, false);\n\t\t\t\t\t\tif (!this.meshInstance) {\n\t\t\t\t\t\t\t\tthis.meshInstance = new MeshInstance(this.mesh, this.material, identityGraphNode);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvisibleList.push(this.meshInstance);\n\t\t\t\t}\n\t\t}\n\t\tclear() {\n\t\t\t\tthis.positions.length = 0;\n\t\t\t\tthis.colors.length = 0;\n\t\t}\n}\n\nclass ImmediateBatches {\n\t\tconstructor(device){\n\t\t\t\tthis.device = device;\n\t\t\t\tthis.map = new Map();\n\t\t}\n\t\tgetBatch(material, layer) {\n\t\t\t\tlet batch = this.map.get(material);\n\t\t\t\tif (!batch) {\n\t\t\t\t\t\tbatch = new ImmediateBatch(this.device, material, layer);\n\t\t\t\t\t\tthis.map.set(material, batch);\n\t\t\t\t}\n\t\t\t\treturn batch;\n\t\t}\n\t\tonPreRender(visibleList, transparent) {\n\t\t\t\tthis.map.forEach((batch)=>{\n\t\t\t\t\t\tbatch.onPreRender(visibleList, transparent);\n\t\t\t\t});\n\t\t}\n\t\tclear() {\n\t\t\t\tthis.map.forEach((batch)=>batch.clear());\n\t\t}\n}\n\nconst tempPoints = [];\nconst vec = new Vec3();\nclass Immediate {\n\t\tconstructor(device){\n\t\t\t\tthis.shaderDescs = new Map();\n\t\t\t\tthis.device = device;\n\t\t\t\tthis.quadMesh = null;\n\t\t\t\tthis.textureShader = null;\n\t\t\t\tthis.depthTextureShader = null;\n\t\t\t\tthis.cubeLocalPos = null;\n\t\t\t\tthis.cubeWorldPos = null;\n\t\t\t\tthis.batchesMap = new Map();\n\t\t\t\tthis.allBatches = new Set();\n\t\t\t\tthis.updatedLayers = new Set();\n\t\t\t\tthis._materialDepth = null;\n\t\t\t\tthis._materialNoDepth = null;\n\t\t\t\tthis.layerMeshInstances = new Map();\n\t\t}\n\t\tcreateMaterial(depthTest) {\n\t\t\t\tconst material = new ShaderMaterial({\n\t\t\t\t\t\tuniqueName: 'ImmediateLine',\n\t\t\t\t\t\tvertexGLSL: ShaderChunks.get(this.device, SHADERLANGUAGE_GLSL).get('immediateLineVS'),\n\t\t\t\t\t\tfragmentGLSL: ShaderChunks.get(this.device, SHADERLANGUAGE_GLSL).get('immediateLinePS'),\n\t\t\t\t\t\tvertexWGSL: ShaderChunks.get(this.device, SHADERLANGUAGE_WGSL).get('immediateLineVS'),\n\t\t\t\t\t\tfragmentWGSL: ShaderChunks.get(this.device, SHADERLANGUAGE_WGSL).get('immediateLinePS'),\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\tvertex_position: SEMANTIC_POSITION,\n\t\t\t\t\t\t\t\tvertex_color: SEMANTIC_COLOR\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tmaterial.blendType = BLEND_NORMAL;\n\t\t\t\tmaterial.depthTest = depthTest;\n\t\t\t\tmaterial.update();\n\t\t\t\treturn material;\n\t\t}\n\t\tget materialDepth() {\n\t\t\t\tif (!this._materialDepth) {\n\t\t\t\t\t\tthis._materialDepth = this.createMaterial(true);\n\t\t\t\t}\n\t\t\t\treturn this._materialDepth;\n\t\t}\n\t\tget materialNoDepth() {\n\t\t\t\tif (!this._materialNoDepth) {\n\t\t\t\t\t\tthis._materialNoDepth = this.createMaterial(false);\n\t\t\t\t}\n\t\t\t\treturn this._materialNoDepth;\n\t\t}\n\t\tgetBatch(layer, depthTest) {\n\t\t\t\tlet batches = this.batchesMap.get(layer);\n\t\t\t\tif (!batches) {\n\t\t\t\t\t\tbatches = new ImmediateBatches(this.device);\n\t\t\t\t\t\tthis.batchesMap.set(layer, batches);\n\t\t\t\t}\n\t\t\t\tthis.allBatches.add(batches);\n\t\t\t\tconst material = depthTest ? this.materialDepth : this.materialNoDepth;\n\t\t\t\treturn batches.getBatch(material, layer);\n\t\t}\n\t\tgetShaderDesc(id, fragmentGLSL, fragmentWGSL) {\n\t\t\t\tif (!this.shaderDescs.has(id)) {\n\t\t\t\t\t\tthis.shaderDescs.set(id, {\n\t\t\t\t\t\t\t\tuniqueName: `DebugShader:${id}`,\n\t\t\t\t\t\t\t\tvertexGLSL: `\n\t\t\t\t\tattribute vec2 vertex_position;\n\t\t\t\t\tuniform mat4 matrix_model;\n\t\t\t\t\tvarying vec2 uv0;\n\t\t\t\t\tvoid main(void) {\n\t\t\t\t\t\tgl_Position = matrix_model * vec4(vertex_position, 0, 1);\n\t\t\t\t\t\tuv0 = vertex_position.xy + 0.5;\n\t\t\t\t\t}\n\t\t\t\t`,\n\t\t\t\t\t\t\t\tvertexWGSL: `\n\t\t\t\t\tattribute vertex_position: vec2f;\n\t\t\t\t\tuniform matrix_model: mat4x4f;\n\t\t\t\t\tvarying uv0: vec2f;\n\t\t\t\t\t@vertex fn vertexMain(input: VertexInput) -> VertexOutput {\n\t\t\t\t\t\tvar output: VertexOutput;\n\t\t\t\t\t\toutput.position = uniform.matrix_model * vec4f(input.vertex_position, 0.0, 1.0);\n\t\t\t\t\t\toutput.uv0 = input.vertex_position.xy + vec2f(0.5);\n\t\t\t\t\t\treturn output;\n\t\t\t\t\t}\n\t\t\t\t`,\n\t\t\t\t\t\t\t\tfragmentGLSL: fragmentGLSL,\n\t\t\t\t\t\t\t\tfragmentWGSL: fragmentWGSL,\n\t\t\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\t\t\tvertex_position: SEMANTIC_POSITION\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn this.shaderDescs.get(id);\n\t\t}\n\t\tgetTextureShaderDesc(encoding) {\n\t\t\t\tconst decodeFunc = ChunkUtils.decodeFunc(encoding);\n\t\t\t\treturn this.getShaderDesc(`textureShader-${encoding}`, `\n\t\t\t#include \"gammaPS\"\n\t\t\tvarying vec2 uv0;\n\t\t\tuniform sampler2D colorMap;\n\t\t\tvoid main (void) {\n\t\t\t\tvec3 linearColor = ${decodeFunc}(texture2D(colorMap, uv0));\n\t\t\t\tgl_FragColor = vec4(gammaCorrectOutput(linearColor), 1);\n\t\t\t}\n\t\t`, `\n\t\t\t#include \"gammaPS\"\n\t\t\tvarying uv0: vec2f;\n\t\t\tvar colorMap: texture_2d<f32>;\n\t\t\tvar colorMapSampler: sampler;\n\t\t\t@fragment fn fragmentMain(input : FragmentInput) -> FragmentOutput {\n\t\t\t\tvar output: FragmentOutput;\n\t\t\t\tlet sampledTex = textureSample(colorMap, colorMapSampler, input.uv0);\n\t\t\t\tlet linearColor: vec3f = ${decodeFunc}(sampledTex);\n\t\t\t\toutput.color = vec4f(gammaCorrectOutput(linearColor), 1.0);\n\t\t\t\treturn output;\n\t\t\t}\n\t\t`);\n\t\t}\n\t\tgetUnfilterableTextureShaderDesc() {\n\t\t\t\treturn this.getShaderDesc('textureShaderUnfilterable', `\n\t\t\tvarying vec2 uv0;\n\t\t\tuniform highp sampler2D colorMap;\n\t\t\tvoid main (void) {\n\t\t\t\tivec2 uv = ivec2(uv0 * textureSize(colorMap, 0));\n\t\t\t\tgl_FragColor = vec4(texelFetch(colorMap, uv, 0).xyz, 1);\n\t\t\t}\n\t\t`, `\n\t\t\tvarying uv0: vec2f;\n\t\t\tvar colorMap: texture_2d<uff>;\n\t\t\t@fragment fn fragmentMain(input : FragmentInput) -> FragmentOutput {\n\t\t\t\tvar output: FragmentOutput;\n\t\t\t\tlet uv : vec2<i32> = vec2<i32>(input.uv0 * vec2f(textureDimensions(colorMap, 0)));\n\t\t\t\tlet fetchedColor : vec4f = textureLoad(colorMap, uv, 0);\n\t\t\t\toutput.color = vec4f(fetchedColor.xyz, 1.0);\n\t\t\t\treturn output;\n\t\t\t}\n\t\t`);\n\t\t}\n\t\tgetDepthTextureShaderDesc() {\n\t\t\t\treturn this.getShaderDesc('depthTextureShader', `\n\t\t\t#include \"screenDepthPS\"\n\t\t\t#include \"gammaPS\"\n\t\t\tvarying vec2 uv0;\n\t\t\tvoid main() {\n\t\t\t\tfloat depth = getLinearScreenDepth(getImageEffectUV(uv0)) * camera_params.x;\n\t\t\t\tgl_FragColor = vec4(gammaCorrectOutput(vec3(depth)), 1.0);\n\t\t\t}\n\t\t`, `\n\t\t\t#include \"screenDepthPS\"\n\t\t\t#include \"gammaPS\"\n\t\t\tvarying uv0: vec2f;\n\t\t\t@fragment fn fragmentMain(input: FragmentInput) -> FragmentOutput {\n\t\t\t\tvar output: FragmentOutput;\n\t\t\t\tlet depth: f32 = getLinearScreenDepth(getImageEffectUV(input.uv0)) * uniform.camera_params.x;\n\t\t\t\toutput.color = vec4f(gammaCorrectOutput(vec3f(depth)), 1.0);\n\t\t\t\treturn output;\n\t\t\t}\n\t\t`);\n\t\t}\n\t\tgetQuadMesh() {\n\t\t\t\tif (!this.quadMesh) {\n\t\t\t\t\t\tthis.quadMesh = new Mesh(this.device);\n\t\t\t\t\t\tthis.quadMesh.setPositions([\n\t\t\t\t\t\t\t\t-0.5,\n\t\t\t\t\t\t\t\t-0.5,\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0.5,\n\t\t\t\t\t\t\t\t-0.5,\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t-0.5,\n\t\t\t\t\t\t\t\t0.5,\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0.5,\n\t\t\t\t\t\t\t\t0.5,\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t]);\n\t\t\t\t\t\tthis.quadMesh.update(PRIMITIVE_TRISTRIP);\n\t\t\t\t}\n\t\t\t\treturn this.quadMesh;\n\t\t}\n\t\tdrawMesh(material, matrix, mesh, meshInstance, layer) {\n\t\t\t\tif (!meshInstance) {\n\t\t\t\t\t\tconst graphNode = this.getGraphNode(matrix);\n\t\t\t\t\t\tmeshInstance = new MeshInstance(mesh, material, graphNode);\n\t\t\t\t}\n\t\t\t\tlet layerMeshInstances = this.layerMeshInstances.get(layer);\n\t\t\t\tif (!layerMeshInstances) {\n\t\t\t\t\t\tlayerMeshInstances = [];\n\t\t\t\t\t\tthis.layerMeshInstances.set(layer, layerMeshInstances);\n\t\t\t\t}\n\t\t\t\tlayerMeshInstances.push(meshInstance);\n\t\t}\n\t\tdrawWireAlignedBox(min, max, color, depthTest, layer, mat) {\n\t\t\t\tif (mat) {\n\t\t\t\t\t\tconst mulPoint = (x, y, z)=>{\n\t\t\t\t\t\t\t\tvec.set(x, y, z);\n\t\t\t\t\t\t\t\tmat.transformPoint(vec, vec);\n\t\t\t\t\t\t\t\ttempPoints.push(vec.x, vec.y, vec.z);\n\t\t\t\t\t\t};\n\t\t\t\t\t\tmulPoint(min.x, min.y, min.z);\n\t\t\t\t\t\tmulPoint(min.x, max.y, min.z);\n\t\t\t\t\t\tmulPoint(min.x, max.y, min.z);\n\t\t\t\t\t\tmulPoint(max.x, max.y, min.z);\n\t\t\t\t\t\tmulPoint(max.x, max.y, min.z);\n\t\t\t\t\t\tmulPoint(max.x, min.y, min.z);\n\t\t\t\t\t\tmulPoint(max.x, min.y, min.z);\n\t\t\t\t\t\tmulPoint(min.x, min.y, min.z);\n\t\t\t\t\t\tmulPoint(min.x, min.y, max.z);\n\t\t\t\t\t\tmulPoint(min.x, max.y, max.z);\n\t\t\t\t\t\tmulPoint(min.x, max.y, max.z);\n\t\t\t\t\t\tmulPoint(max.x, max.y, max.z);\n\t\t\t\t\t\tmulPoint(max.x, max.y, max.z);\n\t\t\t\t\t\tmulPoint(max.x, min.y, max.z);\n\t\t\t\t\t\tmulPoint(max.x, min.y, max.z);\n\t\t\t\t\t\tmulPoint(min.x, min.y, max.z);\n\t\t\t\t\t\tmulPoint(min.x, min.y, min.z);\n\t\t\t\t\t\tmulPoint(min.x, min.y, max.z);\n\t\t\t\t\t\tmulPoint(min.x, max.y, min.z);\n\t\t\t\t\t\tmulPoint(min.x, max.y, max.z);\n\t\t\t\t\t\tmulPoint(max.x, max.y, min.z);\n\t\t\t\t\t\tmulPoint(max.x, max.y, max.z);\n\t\t\t\t\t\tmulPoint(max.x, min.y, min.z);\n\t\t\t\t\t\tmulPoint(max.x, min.y, max.z);\n\t\t\t\t} else {\n\t\t\t\t\t\ttempPoints.push(min.x, min.y, min.z, min.x, max.y, min.z, min.x, max.y, min.z, max.x, max.y, min.z, max.x, max.y, min.z, max.x, min.y, min.z, max.x, min.y, min.z, min.x, min.y, min.z, min.x, min.y, max.z, min.x, max.y, max.z, min.x, max.y, max.z, max.x, max.y, max.z, max.x, max.y, max.z, max.x, min.y, max.z, max.x, min.y, max.z, min.x, min.y, max.z, min.x, min.y, min.z, min.x, min.y, max.z, min.x, max.y, min.z, min.x, max.y, max.z, max.x, max.y, min.z, max.x, max.y, max.z, max.x, min.y, min.z, max.x, min.y, max.z);\n\t\t\t\t}\n\t\t\t\tconst batch = this.getBatch(layer, depthTest);\n\t\t\t\tbatch.addLinesArrays(tempPoints, color);\n\t\t\t\ttempPoints.length = 0;\n\t\t}\n\t\tdrawWireSphere(center, radius, color, numSegments, depthTest, layer) {\n\t\t\t\tconst step = 2 * Math.PI / numSegments;\n\t\t\t\tlet angle = 0;\n\t\t\t\tfor(let i = 0; i < numSegments; i++){\n\t\t\t\t\t\tconst sin0 = Math.sin(angle);\n\t\t\t\t\t\tconst cos0 = Math.cos(angle);\n\t\t\t\t\t\tangle += step;\n\t\t\t\t\t\tconst sin1 = Math.sin(angle);\n\t\t\t\t\t\tconst cos1 = Math.cos(angle);\n\t\t\t\t\t\ttempPoints.push(center.x + radius * sin0, center.y, center.z + radius * cos0);\n\t\t\t\t\t\ttempPoints.push(center.x + radius * sin1, center.y, center.z + radius * cos1);\n\t\t\t\t\t\ttempPoints.push(center.x + radius * sin0, center.y + radius * cos0, center.z);\n\t\t\t\t\t\ttempPoints.push(center.x + radius * sin1, center.y + radius * cos1, center.z);\n\t\t\t\t\t\ttempPoints.push(center.x, center.y + radius * sin0, center.z + radius * cos0);\n\t\t\t\t\t\ttempPoints.push(center.x, center.y + radius * sin1, center.z + radius * cos1);\n\t\t\t\t}\n\t\t\t\tconst batch = this.getBatch(layer, depthTest);\n\t\t\t\tbatch.addLinesArrays(tempPoints, color);\n\t\t\t\ttempPoints.length = 0;\n\t\t}\n\t\tgetGraphNode(matrix) {\n\t\t\t\tconst graphNode = new GraphNode('ImmediateDebug');\n\t\t\t\tgraphNode.worldTransform = matrix;\n\t\t\t\tgraphNode._dirtyWorld = graphNode._dirtyNormal = false;\n\t\t\t\treturn graphNode;\n\t\t}\n\t\tonPreRenderLayer(layer, visibleList, transparent) {\n\t\t\t\tthis.batchesMap.forEach((batches, batchLayer)=>{\n\t\t\t\t\t\tif (batchLayer === layer) {\n\t\t\t\t\t\t\t\tbatches.onPreRender(visibleList, transparent);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif (!this.updatedLayers.has(layer)) {\n\t\t\t\t\t\tthis.updatedLayers.add(layer);\n\t\t\t\t\t\tconst meshInstances = this.layerMeshInstances.get(layer);\n\t\t\t\t\t\tif (meshInstances) {\n\t\t\t\t\t\t\t\tfor(let i = 0; i < meshInstances.length; i++){\n\t\t\t\t\t\t\t\t\t\tvisibleList.push(meshInstances[i]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tmeshInstances.length = 0;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tonPostRender() {\n\t\t\t\tthis.allBatches.forEach((batch)=>batch.clear());\n\t\t\t\tthis.allBatches.clear();\n\t\t\t\tthis.updatedLayers.clear();\n\t\t}\n}\n\nconst _goldenAngle = 2.399963229728653;\nconst random = {\n\t\tcirclePoint (point) {\n\t\t\t\tconst r = Math.sqrt(Math.random());\n\t\t\t\tconst theta = Math.random() * 2 * Math.PI;\n\t\t\t\tpoint.x = r * Math.cos(theta);\n\t\t\t\tpoint.y = r * Math.sin(theta);\n\t\t},\n\t\tcirclePointDeterministic (point, index, numPoints) {\n\t\t\t\tconst theta = index * _goldenAngle;\n\t\t\t\tconst r = Math.sqrt(index / numPoints);\n\t\t\t\tpoint.x = r * Math.cos(theta);\n\t\t\t\tpoint.y = r * Math.sin(theta);\n\t\t},\n\t\tspherePointDeterministic (point, index, numPoints, start = 0, end = 1) {\n\t\t\t\tstart = 1 - 2 * start;\n\t\t\t\tend = 1 - 2 * end;\n\t\t\t\tconst y = math.lerp(start, end, index / numPoints);\n\t\t\t\tconst radius = Math.sqrt(1 - y * y);\n\t\t\t\tconst theta = _goldenAngle * index;\n\t\t\t\tpoint.x = Math.cos(theta) * radius;\n\t\t\t\tpoint.y = y;\n\t\t\t\tpoint.z = Math.sin(theta) * radius;\n\t\t},\n\t\tradicalInverse (i) {\n\t\t\t\tlet bits = (i << 16 | i >>> 16) >>> 0;\n\t\t\t\tbits = ((bits & 0x55555555) << 1 | (bits & 0xAAAAAAAA) >>> 1) >>> 0;\n\t\t\t\tbits = ((bits & 0x33333333) << 2 | (bits & 0xCCCCCCCC) >>> 2) >>> 0;\n\t\t\t\tbits = ((bits & 0x0F0F0F0F) << 4 | (bits & 0xF0F0F0F0) >>> 4) >>> 0;\n\t\t\t\tbits = ((bits & 0x00FF00FF) << 8 | (bits & 0xFF00FF00) >>> 8) >>> 0;\n\t\t\t\treturn bits * 2.3283064365386963e-10;\n\t\t}\n};\n\nconst getProjectionName = (projection)=>{\n\t\tswitch(projection){\n\t\t\t\tcase TEXTUREPROJECTION_CUBE:\n\t\t\t\t\t\treturn 'Cubemap';\n\t\t\t\tcase TEXTUREPROJECTION_OCTAHEDRAL:\n\t\t\t\t\t\treturn 'Octahedral';\n\t\t\t\tdefault:\n\t\t\t\t\t\treturn 'Equirect';\n\t\t}\n};\nconst packFloat32ToRGBA8 = (value, array, offset)=>{\n\t\tif (value <= 0) {\n\t\t\t\tarray[offset + 0] = 0;\n\t\t\t\tarray[offset + 1] = 0;\n\t\t\t\tarray[offset + 2] = 0;\n\t\t\t\tarray[offset + 3] = 0;\n\t\t} else if (value >= 1.0) {\n\t\t\t\tarray[offset + 0] = 255;\n\t\t\t\tarray[offset + 1] = 0;\n\t\t\t\tarray[offset + 2] = 0;\n\t\t\t\tarray[offset + 3] = 0;\n\t\t} else {\n\t\t\t\tlet encX = 1 * value % 1;\n\t\t\t\tlet encY = 255 * value % 1;\n\t\t\t\tlet encZ = 65025 * value % 1;\n\t\t\t\tconst encW = 16581375.0 * value % 1;\n\t\t\t\tencX -= encY / 255;\n\t\t\t\tencY -= encZ / 255;\n\t\t\t\tencZ -= encW / 255;\n\t\t\t\tarray[offset + 0] = Math.min(255, Math.floor(encX * 256));\n\t\t\t\tarray[offset + 1] = Math.min(255, Math.floor(encY * 256));\n\t\t\t\tarray[offset + 2] = Math.min(255, Math.floor(encZ * 256));\n\t\t\t\tarray[offset + 3] = Math.min(255, Math.floor(encW * 256));\n\t\t}\n};\nconst packSamples = (samples)=>{\n\t\tconst numSamples = samples.length;\n\t\tconst w = Math.min(numSamples, 512);\n\t\tconst h = Math.ceil(numSamples / w);\n\t\tconst data = new Uint8Array(w * h * 4);\n\t\tlet off = 0;\n\t\tfor(let i = 0; i < numSamples; i += 4){\n\t\t\t\tpackFloat32ToRGBA8(samples[i + 0] * 0.5 + 0.5, data, off + 0);\n\t\t\t\tpackFloat32ToRGBA8(samples[i + 1] * 0.5 + 0.5, data, off + 4);\n\t\t\t\tpackFloat32ToRGBA8(samples[i + 2] * 0.5 + 0.5, data, off + 8);\n\t\t\t\tpackFloat32ToRGBA8(samples[i + 3] / 8, data, off + 12);\n\t\t\t\toff += 16;\n\t\t}\n\t\treturn {\n\t\t\t\twidth: w,\n\t\t\t\theight: h,\n\t\t\t\tdata: data\n\t\t};\n};\nconst hemisphereSamplePhong = (dstVec, x, y, specularPower)=>{\n\t\tconst phi = y * 2 * Math.PI;\n\t\tconst cosTheta = Math.pow(1 - x, 1 / (specularPower + 1));\n\t\tconst sinTheta = Math.sqrt(1 - cosTheta * cosTheta);\n\t\tdstVec.set(Math.cos(phi) * sinTheta, Math.sin(phi) * sinTheta, cosTheta).normalize();\n};\nconst hemisphereSampleLambert = (dstVec, x, y)=>{\n\t\tconst phi = y * 2 * Math.PI;\n\t\tconst cosTheta = Math.sqrt(1 - x);\n\t\tconst sinTheta = Math.sqrt(x);\n\t\tdstVec.set(Math.cos(phi) * sinTheta, Math.sin(phi) * sinTheta, cosTheta).normalize();\n};\nconst hemisphereSampleGGX = (dstVec, x, y, a)=>{\n\t\tconst phi = y * 2 * Math.PI;\n\t\tconst cosTheta = Math.sqrt((1 - x) / (1 + (a * a - 1) * x));\n\t\tconst sinTheta = Math.sqrt(1 - cosTheta * cosTheta);\n\t\tdstVec.set(Math.cos(phi) * sinTheta, Math.sin(phi) * sinTheta, cosTheta).normalize();\n};\nconst D_GGX = (NoH, linearRoughness)=>{\n\t\tconst a = NoH * linearRoughness;\n\t\tconst k = linearRoughness / (1.0 - NoH * NoH + a * a);\n\t\treturn k * k * (1 / Math.PI);\n};\nconst generatePhongSamples = (numSamples, specularPower)=>{\n\t\tconst H = new Vec3();\n\t\tconst result = [];\n\t\tfor(let i = 0; i < numSamples; ++i){\n\t\t\t\themisphereSamplePhong(H, i / numSamples, random.radicalInverse(i), specularPower);\n\t\t\t\tresult.push(H.x, H.y, H.z, 0);\n\t\t}\n\t\treturn result;\n};\nconst generateLambertSamples = (numSamples, sourceTotalPixels)=>{\n\t\tconst pixelsPerSample = sourceTotalPixels / numSamples;\n\t\tconst H = new Vec3();\n\t\tconst result = [];\n\t\tfor(let i = 0; i < numSamples; ++i){\n\t\t\t\themisphereSampleLambert(H, i / numSamples, random.radicalInverse(i));\n\t\t\t\tconst pdf = H.z / Math.PI;\n\t\t\t\tconst mipLevel = 0.5 * Math.log2(pixelsPerSample / pdf);\n\t\t\t\tresult.push(H.x, H.y, H.z, mipLevel);\n\t\t}\n\t\treturn result;\n};\nconst requiredSamplesGGX = {\n\t\t'16': {\n\t\t\t\t'2': 26,\n\t\t\t\t'8': 20,\n\t\t\t\t'32': 17,\n\t\t\t\t'128': 16,\n\t\t\t\t'512': 16\n\t\t},\n\t\t'32': {\n\t\t\t\t'2': 53,\n\t\t\t\t'8': 40,\n\t\t\t\t'32': 34,\n\t\t\t\t'128': 32,\n\t\t\t\t'512': 32\n\t\t},\n\t\t'128': {\n\t\t\t\t'2': 214,\n\t\t\t\t'8': 163,\n\t\t\t\t'32': 139,\n\t\t\t\t'128': 130,\n\t\t\t\t'512': 128\n\t\t},\n\t\t'1024': {\n\t\t\t\t'2': 1722,\n\t\t\t\t'8': 1310,\n\t\t\t\t'32': 1114,\n\t\t\t\t'128': 1041,\n\t\t\t\t'512': 1025\n\t\t}\n};\nconst getRequiredSamplesGGX = (numSamples, specularPower)=>{\n\t\tconst table = requiredSamplesGGX[numSamples];\n\t\treturn table && table[specularPower] || numSamples;\n};\nconst generateGGXSamples = (numSamples, specularPower, sourceTotalPixels)=>{\n\t\tconst pixelsPerSample = sourceTotalPixels / numSamples;\n\t\tconst roughness = 1 - Math.log2(specularPower) / 11.0;\n\t\tconst a = roughness * roughness;\n\t\tconst H = new Vec3();\n\t\tconst L = new Vec3();\n\t\tconst N = new Vec3(0, 0, 1);\n\t\tconst result = [];\n\t\tconst requiredSamples = getRequiredSamplesGGX(numSamples, specularPower);\n\t\tfor(let i = 0; i < requiredSamples; ++i){\n\t\t\t\themisphereSampleGGX(H, i / requiredSamples, random.radicalInverse(i), a);\n\t\t\t\tconst NoH = H.z;\n\t\t\t\tL.set(H.x, H.y, H.z).mulScalar(2 * NoH).sub(N);\n\t\t\t\tif (L.z > 0) {\n\t\t\t\t\t\tconst pdf = D_GGX(Math.min(1, NoH), a) / 4 + 0.001;\n\t\t\t\t\t\tconst mipLevel = 0.5 * Math.log2(pixelsPerSample / pdf);\n\t\t\t\t\t\tresult.push(L.x, L.y, L.z, mipLevel);\n\t\t\t\t}\n\t\t}\n\t\twhile(result.length < numSamples * 4){\n\t\t\t\tresult.push(0, 0, 0, 0);\n\t\t}\n\t\treturn result;\n};\nconst createSamplesTex = (device, name, samples)=>{\n\t\tconst packedSamples = packSamples(samples);\n\t\treturn new Texture(device, {\n\t\t\t\tname: name,\n\t\t\t\twidth: packedSamples.width,\n\t\t\t\theight: packedSamples.height,\n\t\t\t\tmipmaps: false,\n\t\t\t\tminFilter: FILTER_NEAREST,\n\t\t\t\tmagFilter: FILTER_NEAREST,\n\t\t\t\tlevels: [\n\t\t\t\t\t\tpackedSamples.data\n\t\t\t\t]\n\t\t});\n};\nclass SimpleCache {\n\t\tconstructor(destroyContent = true){\n\t\t\t\tthis.map = new Map();\n\t\t\t\tthis.destroyContent = destroyContent;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tif (this.destroyContent) {\n\t\t\t\t\t\tthis.map.forEach((value, key)=>{\n\t\t\t\t\t\t\t\tvalue.destroy();\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t}\n\t\tget(key, missFunc) {\n\t\t\t\tif (!this.map.has(key)) {\n\t\t\t\t\t\tconst result = missFunc();\n\t\t\t\t\t\tthis.map.set(key, result);\n\t\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t\treturn this.map.get(key);\n\t\t}\n}\nconst samplesCache = new SimpleCache(false);\nconst deviceCache$1 = new DeviceCache();\nconst getCachedTexture = (device, key, getSamplesFnc)=>{\n\t\tconst cache = deviceCache$1.get(device, ()=>{\n\t\t\t\treturn new SimpleCache();\n\t\t});\n\t\treturn cache.get(key, ()=>{\n\t\t\t\treturn createSamplesTex(device, key, samplesCache.get(key, getSamplesFnc));\n\t\t});\n};\nconst generateLambertSamplesTex = (device, numSamples, sourceTotalPixels)=>{\n\t\tconst key = `lambert-samples-${numSamples}-${sourceTotalPixels}`;\n\t\treturn getCachedTexture(device, key, ()=>{\n\t\t\t\treturn generateLambertSamples(numSamples, sourceTotalPixels);\n\t\t});\n};\nconst generatePhongSamplesTex = (device, numSamples, specularPower)=>{\n\t\tconst key = `phong-samples-${numSamples}-${specularPower}`;\n\t\treturn getCachedTexture(device, key, ()=>{\n\t\t\t\treturn generatePhongSamples(numSamples, specularPower);\n\t\t});\n};\nconst generateGGXSamplesTex = (device, numSamples, specularPower, sourceTotalPixels)=>{\n\t\tconst key = `ggx-samples-${numSamples}-${specularPower}-${sourceTotalPixels}`;\n\t\treturn getCachedTexture(device, key, ()=>{\n\t\t\t\treturn generateGGXSamples(numSamples, specularPower, sourceTotalPixels);\n\t\t});\n};\nfunction reprojectTexture(source, target, options = {}) {\n\t\tconst seamPixels = options.seamPixels ?? 0;\n\t\tconst innerWidth = (options.rect?.z ?? target.width) - seamPixels * 2;\n\t\tconst innerHeight = (options.rect?.w ?? target.height) - seamPixels * 2;\n\t\tif (innerWidth < 1 || innerHeight < 1) {\n\t\t\t\treturn false;\n\t\t}\n\t\tconst funcNames = {\n\t\t\t\t'none': 'reproject',\n\t\t\t\t'lambert': 'prefilterSamplesUnweighted',\n\t\t\t\t'phong': 'prefilterSamplesUnweighted',\n\t\t\t\t'ggx': 'prefilterSamples'\n\t\t};\n\t\tconst specularPower = options.hasOwnProperty('specularPower') ? options.specularPower : 1;\n\t\tconst face = options.hasOwnProperty('face') ? options.face : null;\n\t\tconst distribution = options.hasOwnProperty('distribution') ? options.distribution : specularPower === 1 ? 'none' : 'phong';\n\t\tconst processFunc = funcNames[distribution] || 'reproject';\n\t\tconst prefilterSamples = processFunc.startsWith('prefilterSamples');\n\t\tconst decodeFunc = ChunkUtils.decodeFunc(source.encoding);\n\t\tconst encodeFunc = ChunkUtils.encodeFunc(target.encoding);\n\t\tconst sourceFunc = `sample${getProjectionName(source.projection)}`;\n\t\tconst targetFunc = `getDirection${getProjectionName(target.projection)}`;\n\t\tconst numSamples = options.hasOwnProperty('numSamples') ? options.numSamples : 1024;\n\t\tconst shaderKey = `ReprojectShader:${processFunc}_${decodeFunc}_${encodeFunc}_${sourceFunc}_${targetFunc}_${numSamples}`;\n\t\tconst device = source.device;\n\t\tlet shader = getProgramLibrary(device).getCachedShader(shaderKey);\n\t\tif (!shader) {\n\t\t\t\tconst defines = new Map();\n\t\t\t\tif (prefilterSamples) defines.set('USE_SAMPLES_TEX', '');\n\t\t\t\tif (source.cubemap) defines.set('CUBEMAP_SOURCE', '');\n\t\t\t\tdefines.set('{PROCESS_FUNC}', processFunc);\n\t\t\t\tdefines.set('{DECODE_FUNC}', decodeFunc);\n\t\t\t\tdefines.set('{ENCODE_FUNC}', encodeFunc);\n\t\t\t\tdefines.set('{SOURCE_FUNC}', sourceFunc);\n\t\t\t\tdefines.set('{TARGET_FUNC}', targetFunc);\n\t\t\t\tdefines.set('{NUM_SAMPLES}', numSamples);\n\t\t\t\tdefines.set('{NUM_SAMPLES_SQRT}', Math.round(Math.sqrt(numSamples)).toFixed(1));\n\t\t\t\tconst wgsl = device.isWebGPU;\n\t\t\t\tconst chunks = ShaderChunks.get(device, wgsl ? SHADERLANGUAGE_WGSL : SHADERLANGUAGE_GLSL);\n\t\t\t\tconst includes = new Map();\n\t\t\t\tincludes.set('decodePS', chunks.get('decodePS'));\n\t\t\t\tincludes.set('encodePS', chunks.get('encodePS'));\n\t\t\t\tshader = ShaderUtils.createShader(device, {\n\t\t\t\t\t\tuniqueName: shaderKey,\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\tvertex_position: SEMANTIC_POSITION\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvertexChunk: 'reprojectVS',\n\t\t\t\t\t\tfragmentChunk: 'reprojectPS',\n\t\t\t\t\t\tfragmentIncludes: includes,\n\t\t\t\t\t\tfragmentDefines: defines\n\t\t\t\t});\n\t\t}\n\t\tdevice.setBlendState(BlendState.NOBLEND);\n\t\tconst constantSource = device.scope.resolve(source.cubemap ? 'sourceCube' : 'sourceTex');\n\t\tconstantSource.setValue(source);\n\t\tconst constantParams = device.scope.resolve('params');\n\t\tconst uvModParam = device.scope.resolve('uvMod');\n\t\tif (seamPixels > 0) {\n\t\t\t\tuvModParam.setValue([\n\t\t\t\t\t\t(innerWidth + seamPixels * 2) / innerWidth,\n\t\t\t\t\t\t(innerHeight + seamPixels * 2) / innerHeight,\n\t\t\t\t\t\t-seamPixels / innerWidth,\n\t\t\t\t\t\t-seamPixels / innerHeight\n\t\t\t\t]);\n\t\t} else {\n\t\t\t\tuvModParam.setValue([\n\t\t\t\t\t\t1,\n\t\t\t\t\t\t1,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0\n\t\t\t\t]);\n\t\t}\n\t\tconst params = [\n\t\t\t\t0,\n\t\t\t\ttarget.width * target.height * (target.cubemap ? 6 : 1),\n\t\t\t\tsource.width * source.height * (source.cubemap ? 6 : 1)\n\t\t];\n\t\tif (prefilterSamples) {\n\t\t\t\tconst sourceTotalPixels = source.width * source.height * (source.cubemap ? 6 : 1);\n\t\t\t\tconst samplesTex = distribution === 'ggx' ? generateGGXSamplesTex(device, numSamples, specularPower, sourceTotalPixels) : distribution === 'lambert' ? generateLambertSamplesTex(device, numSamples, sourceTotalPixels) : generatePhongSamplesTex(device, numSamples, specularPower);\n\t\t\t\tdevice.scope.resolve('samplesTex').setValue(samplesTex);\n\t\t\t\tdevice.scope.resolve('samplesTexInverseSize').setValue([\n\t\t\t\t\t\t1.0 / samplesTex.width,\n\t\t\t\t\t\t1.0 / samplesTex.height\n\t\t\t\t]);\n\t\t}\n\t\tfor(let f = 0; f < (target.cubemap ? 6 : 1); f++){\n\t\t\t\tif (face === null || f === face) {\n\t\t\t\t\t\tconst renderTarget = new RenderTarget({\n\t\t\t\t\t\t\t\tcolorBuffer: target,\n\t\t\t\t\t\t\t\tface: f,\n\t\t\t\t\t\t\t\tdepth: false,\n\t\t\t\t\t\t\t\tflipY: device.isWebGPU\n\t\t\t\t\t\t});\n\t\t\t\t\t\tparams[0] = f;\n\t\t\t\t\t\tconstantParams.setValue(params);\n\t\t\t\t\t\tdrawQuadWithShader(device, renderTarget, shader, options?.rect);\n\t\t\t\t\t\trenderTarget.destroy();\n\t\t\t\t}\n\t\t}\n\t\treturn true;\n}\n\nconst calcLevels = (width, height = 0)=>{\n\t\treturn 1 + Math.floor(Math.log2(Math.max(width, height)));\n};\nconst supportsFloat16 = (device)=>{\n\t\treturn device.textureHalfFloatRenderable;\n};\nconst supportsFloat32 = (device)=>{\n\t\treturn device.textureFloatRenderable;\n};\nconst lightingSourcePixelFormat = (device)=>{\n\t\treturn supportsFloat16(device) ? PIXELFORMAT_RGBA16F : supportsFloat32(device) ? PIXELFORMAT_RGBA32F : PIXELFORMAT_RGBA8;\n};\nconst lightingPixelFormat = (device)=>{\n\t\treturn PIXELFORMAT_RGBA8;\n};\nconst createCubemap = (device, size, format, mipmaps)=>{\n\t\treturn new Texture(device, {\n\t\t\t\tname: `lighting-${size}`,\n\t\t\t\tcubemap: true,\n\t\t\t\twidth: size,\n\t\t\t\theight: size,\n\t\t\t\tformat: format,\n\t\t\t\ttype: TEXTURETYPE_RGBP ,\n\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\tmipmaps: false\n\t\t});\n};\nclass EnvLighting {\n\t\tstatic generateSkyboxCubemap(source, size) {\n\t\t\t\tconst device = source.device;\n\t\t\t\tconst result = createCubemap(device, size || (source.cubemap ? source.width : source.width / 4), PIXELFORMAT_RGBA8);\n\t\t\t\treprojectTexture(source, result, {\n\t\t\t\t\t\tnumSamples: 1024\n\t\t\t\t});\n\t\t\t\treturn result;\n\t\t}\n\t\tstatic generateLightingSource(source, options) {\n\t\t\t\tconst device = source.device;\n\t\t\t\tconst format = lightingSourcePixelFormat(device);\n\t\t\t\tconst result = options?.target || new Texture(device, {\n\t\t\t\t\t\tname: 'lighting-source',\n\t\t\t\t\t\tcubemap: true,\n\t\t\t\t\t\twidth: options?.size || 128,\n\t\t\t\t\t\theight: options?.size || 128,\n\t\t\t\t\t\tformat: format,\n\t\t\t\t\t\ttype: format === PIXELFORMAT_RGBA8 ? TEXTURETYPE_RGBP : TEXTURETYPE_DEFAULT,\n\t\t\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\tmipmaps: true\n\t\t\t\t});\n\t\t\t\treprojectTexture(source, result, {\n\t\t\t\t\t\tnumSamples: source.mipmaps ? 1 : 1024\n\t\t\t\t});\n\t\t\t\treturn result;\n\t\t}\n\t\tstatic generateAtlas(source, options) {\n\t\t\t\tconst device = source.device;\n\t\t\t\tconst format = lightingPixelFormat();\n\t\t\t\tconst result = options?.target || new Texture(device, {\n\t\t\t\t\t\tname: 'envAtlas',\n\t\t\t\t\t\twidth: options?.size || 512,\n\t\t\t\t\t\theight: options?.size || 512,\n\t\t\t\t\t\tformat: format,\n\t\t\t\t\t\ttype: TEXTURETYPE_RGBP ,\n\t\t\t\t\t\tprojection: TEXTUREPROJECTION_EQUIRECT,\n\t\t\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\tmipmaps: false\n\t\t\t\t});\n\t\t\t\tconst s = result.width / 512;\n\t\t\t\tconst rect = new Vec4(0, 0, 512 * s, 256 * s);\n\t\t\t\tconst levels = calcLevels(256) - calcLevels(4);\n\t\t\t\tfor(let i = 0; i < levels; ++i){\n\t\t\t\t\t\treprojectTexture(source, result, {\n\t\t\t\t\t\t\t\tnumSamples: 1,\n\t\t\t\t\t\t\t\trect: rect,\n\t\t\t\t\t\t\t\tseamPixels: s\n\t\t\t\t\t\t});\n\t\t\t\t\t\trect.x += rect.w;\n\t\t\t\t\t\trect.y += rect.w;\n\t\t\t\t\t\trect.z = Math.max(1, Math.floor(rect.z * 0.5));\n\t\t\t\t\t\trect.w = Math.max(1, Math.floor(rect.w * 0.5));\n\t\t\t\t}\n\t\t\t\trect.set(0, 256 * s, 256 * s, 128 * s);\n\t\t\t\tfor(let i = 1; i < 7; ++i){\n\t\t\t\t\t\treprojectTexture(source, result, {\n\t\t\t\t\t\t\t\tnumSamples: options?.numReflectionSamples || 1024,\n\t\t\t\t\t\t\t\tdistribution: options?.distribution || 'ggx',\n\t\t\t\t\t\t\t\tspecularPower: Math.max(1, 2048 >> i * 2),\n\t\t\t\t\t\t\t\trect: rect,\n\t\t\t\t\t\t\t\tseamPixels: s\n\t\t\t\t\t\t});\n\t\t\t\t\t\trect.y += rect.w;\n\t\t\t\t\t\trect.z = Math.max(1, Math.floor(rect.z * 0.5));\n\t\t\t\t\t\trect.w = Math.max(1, Math.floor(rect.w * 0.5));\n\t\t\t\t}\n\t\t\t\trect.set(128 * s, (256 + 128) * s, 64 * s, 32 * s);\n\t\t\t\treprojectTexture(source, result, {\n\t\t\t\t\t\tnumSamples: options?.numAmbientSamples || 2048,\n\t\t\t\t\t\tdistribution: 'lambert',\n\t\t\t\t\t\trect: rect,\n\t\t\t\t\t\tseamPixels: s\n\t\t\t\t});\n\t\t\t\treturn result;\n\t\t}\n\t\tstatic generatePrefilteredAtlas(sources, options) {\n\t\t\t\tconst device = sources[0].device;\n\t\t\t\tconst format = sources[0].format;\n\t\t\t\tconst type = sources[0].type;\n\t\t\t\tconst result = options?.target || new Texture(device, {\n\t\t\t\t\t\tname: 'envPrefilteredAtlas',\n\t\t\t\t\t\twidth: options?.size || 512,\n\t\t\t\t\t\theight: options?.size || 512,\n\t\t\t\t\t\tformat: format,\n\t\t\t\t\t\ttype: type,\n\t\t\t\t\t\tprojection: TEXTUREPROJECTION_EQUIRECT,\n\t\t\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\tmipmaps: false\n\t\t\t\t});\n\t\t\t\tconst s = result.width / 512;\n\t\t\t\tconst rect = new Vec4(0, 0, 512 * s, 256 * s);\n\t\t\t\tconst levels = calcLevels(512);\n\t\t\t\tfor(let i = 0; i < levels; ++i){\n\t\t\t\t\t\treprojectTexture(sources[0], result, {\n\t\t\t\t\t\t\t\tnumSamples: 1,\n\t\t\t\t\t\t\t\trect: rect,\n\t\t\t\t\t\t\t\tseamPixels: s\n\t\t\t\t\t\t});\n\t\t\t\t\t\trect.x += rect.w;\n\t\t\t\t\t\trect.y += rect.w;\n\t\t\t\t\t\trect.z = Math.max(1, Math.floor(rect.z * 0.5));\n\t\t\t\t\t\trect.w = Math.max(1, Math.floor(rect.w * 0.5));\n\t\t\t\t}\n\t\t\t\trect.set(0, 256 * s, 256 * s, 128 * s);\n\t\t\t\tfor(let i = 1; i < sources.length; ++i){\n\t\t\t\t\t\treprojectTexture(sources[i], result, {\n\t\t\t\t\t\t\t\tnumSamples: 1,\n\t\t\t\t\t\t\t\trect: rect,\n\t\t\t\t\t\t\t\tseamPixels: s\n\t\t\t\t\t\t});\n\t\t\t\t\t\trect.y += rect.w;\n\t\t\t\t\t\trect.z = Math.max(1, Math.floor(rect.z * 0.5));\n\t\t\t\t\t\trect.w = Math.max(1, Math.floor(rect.w * 0.5));\n\t\t\t\t}\n\t\t\t\trect.set(128 * s, (256 + 128) * s, 64 * s, 32 * s);\n\t\t\t\tif (options?.legacyAmbient) {\n\t\t\t\t\t\treprojectTexture(sources[5], result, {\n\t\t\t\t\t\t\t\tnumSamples: 1,\n\t\t\t\t\t\t\t\trect: rect,\n\t\t\t\t\t\t\t\tseamPixels: s\n\t\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t\treprojectTexture(sources[0], result, {\n\t\t\t\t\t\t\t\tnumSamples: options?.numSamples || 2048,\n\t\t\t\t\t\t\t\tdistribution: 'lambert',\n\t\t\t\t\t\t\t\trect: rect,\n\t\t\t\t\t\t\t\tseamPixels: s\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t}\n}\n\nclass FogParams {\n\t\tconstructor(){\n\t\t\t\tthis.type = FOG_NONE;\n\t\t\t\tthis.color = new Color(0, 0, 0);\n\t\t\t\tthis.density = 0;\n\t\t\t\tthis.start = 1;\n\t\t\t\tthis.end = 1000;\n\t\t}\n}\n\nclass Scene extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_SETLAYERS = 'set:layers';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_SETSKYBOX = 'set:skybox';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_PRERENDER = 'prerender';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_POSTRENDER = 'postrender';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_PRERENDER_LAYER = 'prerender:layer';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_POSTRENDER_LAYER = 'postrender:layer';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_PRECULL = 'precull';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_POSTCULL = 'postcull';\n\t\t}\n\t\tconstructor(graphicsDevice){\n\t\t\t\tsuper(), this.ambientBake = false, this.ambientBakeOcclusionBrightness = 0, this.ambientBakeOcclusionContrast = 0, this.ambientLight = new Color(0, 0, 0), this.ambientLuminance = 0, this.exposure = 1, this.lightmapSizeMultiplier = 1, this.lightmapMaxResolution = 2048, this.lightmapMode = BAKE_COLORDIR, this.lightmapFilterEnabled = false, this.lightmapHDR = false, this.root = null, this.physicalUnits = false, this._envAtlas = null, this._skyboxCubeMap = null, this._fogParams = new FogParams(), this.forcePassThroughSpecular = false;\n\t\t\t\tthis.device = graphicsDevice;\n\t\t\t\tthis._gravity = new Vec3(0, -9.8, 0);\n\t\t\t\tthis._layers = null;\n\t\t\t\tthis._prefilteredCubemaps = [];\n\t\t\t\tthis._internalEnvAtlas = null;\n\t\t\t\tthis._skyboxIntensity = 1;\n\t\t\t\tthis._skyboxLuminance = 0;\n\t\t\t\tthis._skyboxMip = 0;\n\t\t\t\tthis._skyboxHighlightMultiplier = 1;\n\t\t\t\tthis._skyboxRotationShaderInclude = false;\n\t\t\t\tthis._skyboxRotation = new Quat();\n\t\t\t\tthis._skyboxRotationMat3 = new Mat3();\n\t\t\t\tthis._skyboxRotationMat4 = new Mat4();\n\t\t\t\tthis._ambientBakeNumSamples = 1;\n\t\t\t\tthis._ambientBakeSpherePart = 0.4;\n\t\t\t\tthis._lightmapFilterRange = 10;\n\t\t\t\tthis._lightmapFilterSmoothness = 0.2;\n\t\t\t\tthis._clusteredLightingEnabled = true;\n\t\t\t\tthis._lightingParams = new LightingParams(this.device.supportsAreaLights, this.device.maxTextureSize, ()=>{\n\t\t\t\t\t\tthis.updateShaders = true;\n\t\t\t\t});\n\t\t\t\tthis._gsplatParams = new GSplatParams();\n\t\t\t\tthis._sky = new Sky(this);\n\t\t\t\tthis._stats = {\n\t\t\t\t\t\tmeshInstances: 0,\n\t\t\t\t\t\tlights: 0,\n\t\t\t\t\t\tdynamicLights: 0,\n\t\t\t\t\t\tbakedLights: 0,\n\t\t\t\t\t\tupdateShadersTime: 0\n\t\t\t\t};\n\t\t\t\tthis.updateShaders = true;\n\t\t\t\tthis._shaderVersion = 0;\n\t\t\t\tthis.immediate = new Immediate(this.device);\n\t\t}\n\t\tget defaultDrawLayer() {\n\t\t\t\treturn this.layers.getLayerById(LAYERID_IMMEDIATE);\n\t\t}\n\t\tset ambientBakeNumSamples(value) {\n\t\t\t\tthis._ambientBakeNumSamples = math.clamp(Math.floor(value), 1, 255);\n\t\t}\n\t\tget ambientBakeNumSamples() {\n\t\t\t\treturn this._ambientBakeNumSamples;\n\t\t}\n\t\tset ambientBakeSpherePart(value) {\n\t\t\t\tthis._ambientBakeSpherePart = math.clamp(value, 0.001, 1);\n\t\t}\n\t\tget ambientBakeSpherePart() {\n\t\t\t\treturn this._ambientBakeSpherePart;\n\t\t}\n\t\tset clusteredLightingEnabled(value) {\n\t\t\t\tif (this.device.isWebGPU && !value) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (!this._clusteredLightingEnabled && value) {\n\t\t\t\t\t\tconsole.error('Turning on disabled clustered lighting is not currently supported');\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._clusteredLightingEnabled = value;\n\t\t}\n\t\tget clusteredLightingEnabled() {\n\t\t\t\treturn this._clusteredLightingEnabled;\n\t\t}\n\t\tset envAtlas(value) {\n\t\t\t\tif (value !== this._envAtlas) {\n\t\t\t\t\t\tthis._envAtlas = value;\n\t\t\t\t\t\tif (value) {\n\t\t\t\t\t\t\t\tvalue.addressU = ADDRESS_CLAMP_TO_EDGE;\n\t\t\t\t\t\t\t\tvalue.addressV = ADDRESS_CLAMP_TO_EDGE;\n\t\t\t\t\t\t\t\tvalue.minFilter = FILTER_LINEAR;\n\t\t\t\t\t\t\t\tvalue.magFilter = FILTER_LINEAR;\n\t\t\t\t\t\t\t\tvalue.mipmaps = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._prefilteredCubemaps = [];\n\t\t\t\t\t\tif (this._internalEnvAtlas) {\n\t\t\t\t\t\t\t\tthis._internalEnvAtlas.destroy();\n\t\t\t\t\t\t\t\tthis._internalEnvAtlas = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._resetSkyMesh();\n\t\t\t\t}\n\t\t}\n\t\tget envAtlas() {\n\t\t\t\treturn this._envAtlas;\n\t\t}\n\t\tset layers(layers) {\n\t\t\t\tconst prev = this._layers;\n\t\t\t\tthis._layers = layers;\n\t\t\t\tthis.fire('set:layers', prev, layers);\n\t\t}\n\t\tget layers() {\n\t\t\t\treturn this._layers;\n\t\t}\n\t\tget sky() {\n\t\t\t\treturn this._sky;\n\t\t}\n\t\tget lighting() {\n\t\t\t\treturn this._lightingParams;\n\t\t}\n\t\tget gsplat() {\n\t\t\t\treturn this._gsplatParams;\n\t\t}\n\t\tget fog() {\n\t\t\t\treturn this._fogParams;\n\t\t}\n\t\tset lightmapFilterRange(value) {\n\t\t\t\tthis._lightmapFilterRange = Math.max(value, 0.001);\n\t\t}\n\t\tget lightmapFilterRange() {\n\t\t\t\treturn this._lightmapFilterRange;\n\t\t}\n\t\tset lightmapFilterSmoothness(value) {\n\t\t\t\tthis._lightmapFilterSmoothness = Math.max(value, 0.001);\n\t\t}\n\t\tget lightmapFilterSmoothness() {\n\t\t\t\treturn this._lightmapFilterSmoothness;\n\t\t}\n\t\tset prefilteredCubemaps(value) {\n\t\t\t\tvalue = value || [];\n\t\t\t\tconst cubemaps = this._prefilteredCubemaps;\n\t\t\t\tconst changed = cubemaps.length !== value.length || cubemaps.some((c, i)=>c !== value[i]);\n\t\t\t\tif (changed) {\n\t\t\t\t\t\tconst complete = value.length === 6 && value.every((c)=>!!c);\n\t\t\t\t\t\tif (complete) {\n\t\t\t\t\t\t\t\tthis._internalEnvAtlas = EnvLighting.generatePrefilteredAtlas(value, {\n\t\t\t\t\t\t\t\t\t\ttarget: this._internalEnvAtlas\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tthis._envAtlas = this._internalEnvAtlas;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (this._internalEnvAtlas) {\n\t\t\t\t\t\t\t\t\t\tthis._internalEnvAtlas.destroy();\n\t\t\t\t\t\t\t\t\t\tthis._internalEnvAtlas = null;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis._envAtlas = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._prefilteredCubemaps = value.slice();\n\t\t\t\t\t\tthis._resetSkyMesh();\n\t\t\t\t}\n\t\t}\n\t\tget prefilteredCubemaps() {\n\t\t\t\treturn this._prefilteredCubemaps;\n\t\t}\n\t\tset skybox(value) {\n\t\t\t\tif (value !== this._skyboxCubeMap) {\n\t\t\t\t\t\tthis._skyboxCubeMap = value;\n\t\t\t\t\t\tthis._resetSkyMesh();\n\t\t\t\t}\n\t\t}\n\t\tget skybox() {\n\t\t\t\treturn this._skyboxCubeMap;\n\t\t}\n\t\tset skyboxIntensity(value) {\n\t\t\t\tif (value !== this._skyboxIntensity) {\n\t\t\t\t\t\tthis._skyboxIntensity = value;\n\t\t\t\t\t\tthis._resetSkyMesh();\n\t\t\t\t}\n\t\t}\n\t\tget skyboxIntensity() {\n\t\t\t\treturn this._skyboxIntensity;\n\t\t}\n\t\tset skyboxLuminance(value) {\n\t\t\t\tif (value !== this._skyboxLuminance) {\n\t\t\t\t\t\tthis._skyboxLuminance = value;\n\t\t\t\t\t\tthis._resetSkyMesh();\n\t\t\t\t}\n\t\t}\n\t\tget skyboxLuminance() {\n\t\t\t\treturn this._skyboxLuminance;\n\t\t}\n\t\tset skyboxMip(value) {\n\t\t\t\tif (value !== this._skyboxMip) {\n\t\t\t\t\t\tthis._skyboxMip = value;\n\t\t\t\t\t\tthis._resetSkyMesh();\n\t\t\t\t}\n\t\t}\n\t\tget skyboxMip() {\n\t\t\t\treturn this._skyboxMip;\n\t\t}\n\t\tset skyboxHighlightMultiplier(value) {\n\t\t\t\tif (value !== this._skyboxHighlightMultiplier) {\n\t\t\t\t\t\tthis._skyboxHighlightMultiplier = value;\n\t\t\t\t\t\tthis._resetSkyMesh();\n\t\t\t\t}\n\t\t}\n\t\tget skyboxHighlightMultiplier() {\n\t\t\t\treturn this._skyboxHighlightMultiplier;\n\t\t}\n\t\tset skyboxRotation(value) {\n\t\t\t\tif (!this._skyboxRotation.equals(value)) {\n\t\t\t\t\t\tconst isIdentity = value.equals(Quat.IDENTITY);\n\t\t\t\t\t\tthis._skyboxRotation.copy(value);\n\t\t\t\t\t\tif (isIdentity) {\n\t\t\t\t\t\t\t\tthis._skyboxRotationMat3.setIdentity();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._skyboxRotationMat4.setTRS(Vec3.ZERO, value, Vec3.ONE);\n\t\t\t\t\t\t\t\tthis._skyboxRotationMat3.invertMat4(this._skyboxRotationMat4);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!this._skyboxRotationShaderInclude && !isIdentity) {\n\t\t\t\t\t\t\t\tthis._skyboxRotationShaderInclude = true;\n\t\t\t\t\t\t\t\tthis._resetSkyMesh();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget skyboxRotation() {\n\t\t\t\treturn this._skyboxRotation;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis._resetSkyMesh();\n\t\t\t\tthis.root = null;\n\t\t\t\tthis.off();\n\t\t}\n\t\tdrawLine(start, end, color = Color.WHITE, depthTest = true, layer = this.defaultDrawLayer) {\n\t\t\t\tconst batch = this.immediate.getBatch(layer, depthTest);\n\t\t\t\tbatch.addLines([\n\t\t\t\t\t\tstart,\n\t\t\t\t\t\tend\n\t\t\t\t], [\n\t\t\t\t\t\tcolor,\n\t\t\t\t\t\tcolor\n\t\t\t\t]);\n\t\t}\n\t\tdrawLines(positions, colors, depthTest = true, layer = this.defaultDrawLayer) {\n\t\t\t\tconst batch = this.immediate.getBatch(layer, depthTest);\n\t\t\t\tbatch.addLines(positions, colors);\n\t\t}\n\t\tdrawLineArrays(positions, colors, depthTest = true, layer = this.defaultDrawLayer) {\n\t\t\t\tconst batch = this.immediate.getBatch(layer, depthTest);\n\t\t\t\tbatch.addLinesArrays(positions, colors);\n\t\t}\n\t\tapplySettings(settings) {\n\t\t\t\tconst physics = settings.physics;\n\t\t\t\tconst render = settings.render;\n\t\t\t\tthis._gravity.set(physics.gravity[0], physics.gravity[1], physics.gravity[2]);\n\t\t\t\tthis.ambientLight.set(render.global_ambient[0], render.global_ambient[1], render.global_ambient[2]);\n\t\t\t\tthis.ambientLuminance = render.ambientLuminance;\n\t\t\t\tthis.fog.type = render.fog;\n\t\t\t\tthis.fog.color.set(render.fog_color[0], render.fog_color[1], render.fog_color[2]);\n\t\t\t\tthis.fog.start = render.fog_start;\n\t\t\t\tthis.fog.end = render.fog_end;\n\t\t\t\tthis.fog.density = render.fog_density;\n\t\t\t\tthis.lightmapSizeMultiplier = render.lightmapSizeMultiplier;\n\t\t\t\tthis.lightmapMaxResolution = render.lightmapMaxResolution;\n\t\t\t\tthis.lightmapMode = render.lightmapMode;\n\t\t\t\tthis.exposure = render.exposure;\n\t\t\t\tthis._skyboxIntensity = render.skyboxIntensity ?? 1;\n\t\t\t\tthis._skyboxLuminance = render.skyboxLuminance ?? 20000;\n\t\t\t\tthis._skyboxMip = render.skyboxMip ?? 0;\n\t\t\t\tif (render.skyboxRotation) {\n\t\t\t\t\t\tthis.skyboxRotation = new Quat().setFromEulerAngles(render.skyboxRotation[0], render.skyboxRotation[1], render.skyboxRotation[2]);\n\t\t\t\t}\n\t\t\t\tthis.sky.applySettings(render);\n\t\t\t\tthis.clusteredLightingEnabled = render.clusteredLightingEnabled ?? false;\n\t\t\t\tthis.lighting.applySettings(render);\n\t\t\t\t[\n\t\t\t\t\t\t'lightmapFilterEnabled',\n\t\t\t\t\t\t'lightmapFilterRange',\n\t\t\t\t\t\t'lightmapFilterSmoothness',\n\t\t\t\t\t\t'ambientBake',\n\t\t\t\t\t\t'ambientBakeNumSamples',\n\t\t\t\t\t\t'ambientBakeSpherePart',\n\t\t\t\t\t\t'ambientBakeOcclusionBrightness',\n\t\t\t\t\t\t'ambientBakeOcclusionContrast'\n\t\t\t\t].forEach((setting)=>{\n\t\t\t\t\t\tif (render.hasOwnProperty(setting)) {\n\t\t\t\t\t\t\t\tthis[setting] = render[setting];\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tthis._resetSkyMesh();\n\t\t}\n\t\t_getSkyboxTex() {\n\t\t\t\tconst cubemaps = this._prefilteredCubemaps;\n\t\t\t\tif (this._skyboxMip) {\n\t\t\t\t\t\tconst skyboxMapping = [\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t1,\n\t\t\t\t\t\t\t\t3,\n\t\t\t\t\t\t\t\t4,\n\t\t\t\t\t\t\t\t5,\n\t\t\t\t\t\t\t\t6\n\t\t\t\t\t\t];\n\t\t\t\t\t\treturn cubemaps[skyboxMapping[this._skyboxMip]] || this._envAtlas || cubemaps[0] || this._skyboxCubeMap;\n\t\t\t\t}\n\t\t\t\treturn this._skyboxCubeMap || cubemaps[0] || this._envAtlas;\n\t\t}\n\t\t_updateSkyMesh() {\n\t\t\t\tif (!this.sky.skyMesh) {\n\t\t\t\t\t\tthis.sky.updateSkyMesh();\n\t\t\t\t}\n\t\t\t\tthis.sky.update();\n\t\t}\n\t\t_resetSkyMesh() {\n\t\t\t\tthis.sky.resetSkyMesh();\n\t\t\t\tthis.updateShaders = true;\n\t\t}\n\t\tsetSkybox(cubemaps) {\n\t\t\t\tif (!cubemaps) {\n\t\t\t\t\t\tthis.skybox = null;\n\t\t\t\t\t\tthis.envAtlas = null;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.skybox = cubemaps[0] || null;\n\t\t\t\t\t\tif (cubemaps[1] && !cubemaps[1].cubemap) {\n\t\t\t\t\t\t\t\tthis.envAtlas = cubemaps[1];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.prefilteredCubemaps = cubemaps.slice(1);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget lightmapPixelFormat() {\n\t\t\t\treturn this.lightmapHDR && this.device.getRenderableHdrFormat() || PIXELFORMAT_RGBA8;\n\t\t}\n}\n\nclass Skin {\n\t\tconstructor(graphicsDevice, ibp, boneNames){\n\t\t\t\tthis.device = graphicsDevice;\n\t\t\t\tthis.inverseBindPose = ibp;\n\t\t\t\tthis.boneNames = boneNames;\n\t\t}\n}\n\nconst spriteNormals = [\n\t\t0,\n\t\t0,\n\t\t1,\n\t\t0,\n\t\t0,\n\t\t1,\n\t\t0,\n\t\t0,\n\t\t1,\n\t\t0,\n\t\t0,\n\t\t1\n];\nconst spriteIndices = [\n\t\t0,\n\t\t1,\n\t\t3,\n\t\t2,\n\t\t3,\n\t\t1\n];\nclass Sprite extends EventHandler {\n\t\tconstructor(device, options){\n\t\t\t\tsuper();\n\t\t\t\tthis._device = device;\n\t\t\t\tthis._pixelsPerUnit = options && options.pixelsPerUnit !== undefined ? options.pixelsPerUnit : 1;\n\t\t\t\tthis._renderMode = options && options.renderMode !== undefined ? options.renderMode : SPRITE_RENDERMODE_SIMPLE;\n\t\t\t\tthis._atlas = options && options.atlas !== undefined ? options.atlas : null;\n\t\t\t\tthis._frameKeys = options && options.frameKeys !== undefined ? options.frameKeys : null;\n\t\t\t\tthis._meshes = [];\n\t\t\t\tthis._updatingProperties = false;\n\t\t\t\tthis._meshesDirty = false;\n\t\t\t\tif (this._atlas && this._frameKeys) {\n\t\t\t\t\t\tthis._createMeshes();\n\t\t\t\t}\n\t\t}\n\t\tset frameKeys(value) {\n\t\t\t\tthis._frameKeys = value;\n\t\t\t\tif (this._atlas && this._frameKeys) {\n\t\t\t\t\t\tif (this._updatingProperties) {\n\t\t\t\t\t\t\t\tthis._meshesDirty = true;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._createMeshes();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.fire('set:frameKeys', value);\n\t\t}\n\t\tget frameKeys() {\n\t\t\t\treturn this._frameKeys;\n\t\t}\n\t\tset atlas(value) {\n\t\t\t\tif (value === this._atlas) return;\n\t\t\t\tif (this._atlas) {\n\t\t\t\t\t\tthis._atlas.off('set:frames', this._onSetFrames, this);\n\t\t\t\t\t\tthis._atlas.off('set:frame', this._onFrameChanged, this);\n\t\t\t\t\t\tthis._atlas.off('remove:frame', this._onFrameRemoved, this);\n\t\t\t\t}\n\t\t\t\tthis._atlas = value;\n\t\t\t\tif (this._atlas && this._frameKeys) {\n\t\t\t\t\t\tthis._atlas.on('set:frames', this._onSetFrames, this);\n\t\t\t\t\t\tthis._atlas.on('set:frame', this._onFrameChanged, this);\n\t\t\t\t\t\tthis._atlas.on('remove:frame', this._onFrameRemoved, this);\n\t\t\t\t\t\tif (this._updatingProperties) {\n\t\t\t\t\t\t\t\tthis._meshesDirty = true;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._createMeshes();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.fire('set:atlas', value);\n\t\t}\n\t\tget atlas() {\n\t\t\t\treturn this._atlas;\n\t\t}\n\t\tset pixelsPerUnit(value) {\n\t\t\t\tif (this._pixelsPerUnit === value) return;\n\t\t\t\tthis._pixelsPerUnit = value;\n\t\t\t\tthis.fire('set:pixelsPerUnit', value);\n\t\t\t\tif (this._atlas && this._frameKeys && this.renderMode === SPRITE_RENDERMODE_SIMPLE) {\n\t\t\t\t\t\tif (this._updatingProperties) {\n\t\t\t\t\t\t\t\tthis._meshesDirty = true;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._createMeshes();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget pixelsPerUnit() {\n\t\t\t\treturn this._pixelsPerUnit;\n\t\t}\n\t\tset renderMode(value) {\n\t\t\t\tif (this._renderMode === value) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst prev = this._renderMode;\n\t\t\t\tthis._renderMode = value;\n\t\t\t\tthis.fire('set:renderMode', value);\n\t\t\t\tif (prev === SPRITE_RENDERMODE_SIMPLE || value === SPRITE_RENDERMODE_SIMPLE) {\n\t\t\t\t\t\tif (this._atlas && this._frameKeys) {\n\t\t\t\t\t\t\t\tif (this._updatingProperties) {\n\t\t\t\t\t\t\t\t\t\tthis._meshesDirty = true;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis._createMeshes();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget renderMode() {\n\t\t\t\treturn this._renderMode;\n\t\t}\n\t\tget meshes() {\n\t\t\t\treturn this._meshes;\n\t\t}\n\t\t_createMeshes() {\n\t\t\t\tconst len = this._meshes.length;\n\t\t\t\tfor(let i = 0; i < len; i++){\n\t\t\t\t\t\tconst mesh = this._meshes[i];\n\t\t\t\t\t\tif (mesh) {\n\t\t\t\t\t\t\t\tmesh.destroy();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst count = this._frameKeys.length;\n\t\t\t\tthis._meshes = new Array(count);\n\t\t\t\tconst createMeshFunc = this.renderMode === SPRITE_RENDERMODE_SLICED || this._renderMode === SPRITE_RENDERMODE_TILED ? this._create9SliceMesh : this._createSimpleMesh;\n\t\t\t\tfor(let i = 0; i < count; i++){\n\t\t\t\t\t\tconst frame = this._atlas.frames[this._frameKeys[i]];\n\t\t\t\t\t\tthis._meshes[i] = frame ? createMeshFunc.call(this, frame) : null;\n\t\t\t\t}\n\t\t\t\tthis.fire('set:meshes');\n\t\t}\n\t\t_createSimpleMesh(frame) {\n\t\t\t\tconst rect = frame.rect;\n\t\t\t\tconst texWidth = this._atlas.texture.width;\n\t\t\t\tconst texHeight = this._atlas.texture.height;\n\t\t\t\tconst w = rect.z / this._pixelsPerUnit;\n\t\t\t\tconst h = rect.w / this._pixelsPerUnit;\n\t\t\t\tconst hp = frame.pivot.x;\n\t\t\t\tconst vp = frame.pivot.y;\n\t\t\t\tconst positions = [\n\t\t\t\t\t\t-hp * w,\n\t\t\t\t\t\t-vp * h,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t(1 - hp) * w,\n\t\t\t\t\t\t-vp * h,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t(1 - hp) * w,\n\t\t\t\t\t\t(1 - vp) * h,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t-hp * w,\n\t\t\t\t\t\t(1 - vp) * h,\n\t\t\t\t\t\t0\n\t\t\t\t];\n\t\t\t\tconst lu = rect.x / texWidth;\n\t\t\t\tconst bv = 1.0 - rect.y / texHeight;\n\t\t\t\tconst ru = (rect.x + rect.z) / texWidth;\n\t\t\t\tconst tv = 1.0 - (rect.y + rect.w) / texHeight;\n\t\t\t\tconst uvs = [\n\t\t\t\t\t\tlu,\n\t\t\t\t\t\tbv,\n\t\t\t\t\t\tru,\n\t\t\t\t\t\tbv,\n\t\t\t\t\t\tru,\n\t\t\t\t\t\ttv,\n\t\t\t\t\t\tlu,\n\t\t\t\t\t\ttv\n\t\t\t\t];\n\t\t\t\tconst geom = new Geometry();\n\t\t\t\tgeom.positions = positions;\n\t\t\t\tgeom.normals = spriteNormals;\n\t\t\t\tgeom.uvs = uvs;\n\t\t\t\tgeom.indices = spriteIndices;\n\t\t\t\treturn Mesh.fromGeometry(this._device, geom);\n\t\t}\n\t\t_create9SliceMesh() {\n\t\t\t\tconst he = Vec2.ONE;\n\t\t\t\tconst ws = 3;\n\t\t\t\tconst ls = 3;\n\t\t\t\tconst positions = [];\n\t\t\t\tconst normals = [];\n\t\t\t\tconst uvs = [];\n\t\t\t\tconst indices = [];\n\t\t\t\tlet vcounter = 0;\n\t\t\t\tfor(let i = 0; i <= ws; i++){\n\t\t\t\t\t\tconst u = i === 0 || i === ws ? 0 : 1;\n\t\t\t\t\t\tfor(let j = 0; j <= ls; j++){\n\t\t\t\t\t\t\t\tconst x = -he.x + 2.0 * he.x * (i <= 1 ? 0 : 3) / ws;\n\t\t\t\t\t\t\t\tconst y = 0.0;\n\t\t\t\t\t\t\t\tconst z = -(-he.y + 2.0 * he.y * (j <= 1 ? 0 : 3) / ls);\n\t\t\t\t\t\t\t\tconst v = j === 0 || j === ls ? 0 : 1;\n\t\t\t\t\t\t\t\tpositions.push(-x, y, z);\n\t\t\t\t\t\t\t\tnormals.push(0.0, 1.0, 0.0);\n\t\t\t\t\t\t\t\tuvs.push(u, v);\n\t\t\t\t\t\t\t\tif (i < ws && j < ls) {\n\t\t\t\t\t\t\t\t\t\tindices.push(vcounter + ls + 1, vcounter + 1, vcounter);\n\t\t\t\t\t\t\t\t\t\tindices.push(vcounter + ls + 1, vcounter + ls + 2, vcounter + 1);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tvcounter++;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst geom = new Geometry();\n\t\t\t\tgeom.positions = positions;\n\t\t\t\tgeom.normals = normals;\n\t\t\t\tgeom.uvs = uvs;\n\t\t\t\tgeom.indices = indices;\n\t\t\t\treturn Mesh.fromGeometry(this._device, geom);\n\t\t}\n\t\t_onSetFrames(frames) {\n\t\t\t\tif (this._updatingProperties) {\n\t\t\t\t\t\tthis._meshesDirty = true;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._createMeshes();\n\t\t\t\t}\n\t\t}\n\t\t_onFrameChanged(frameKey, frame) {\n\t\t\t\tconst idx = this._frameKeys.indexOf(frameKey);\n\t\t\t\tif (idx < 0) return;\n\t\t\t\tif (frame) {\n\t\t\t\t\t\tif (this.renderMode === SPRITE_RENDERMODE_SIMPLE) {\n\t\t\t\t\t\t\t\tthis._meshes[idx] = this._createSimpleMesh(frame);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._meshes[idx] = null;\n\t\t\t\t}\n\t\t\t\tthis.fire('set:meshes');\n\t\t}\n\t\t_onFrameRemoved(frameKey) {\n\t\t\t\tconst idx = this._frameKeys.indexOf(frameKey);\n\t\t\t\tif (idx < 0) return;\n\t\t\t\tthis._meshes[idx] = null;\n\t\t\t\tthis.fire('set:meshes');\n\t\t}\n\t\tstartUpdate() {\n\t\t\t\tthis._updatingProperties = true;\n\t\t\t\tthis._meshesDirty = false;\n\t\t}\n\t\tendUpdate() {\n\t\t\t\tthis._updatingProperties = false;\n\t\t\t\tif (this._meshesDirty && this._atlas && this._frameKeys) {\n\t\t\t\t\t\tthis._createMeshes();\n\t\t\t\t}\n\t\t\t\tthis._meshesDirty = false;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tfor (const mesh of this._meshes){\n\t\t\t\t\t\tif (mesh) {\n\t\t\t\t\t\t\t\tmesh.destroy();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._meshes.length = 0;\n\t\t}\n}\n\nclass TextureAtlas extends EventHandler {\n\t\tconstructor(){\n\t\t\t\tsuper();\n\t\t\t\tthis._texture = null;\n\t\t\t\tthis._frames = null;\n\t\t}\n\t\tset texture(value) {\n\t\t\t\tthis._texture = value;\n\t\t\t\tthis.fire('set:texture', value);\n\t\t}\n\t\tget texture() {\n\t\t\t\treturn this._texture;\n\t\t}\n\t\tset frames(value) {\n\t\t\t\tthis._frames = value;\n\t\t\t\tthis.fire('set:frames', value);\n\t\t}\n\t\tget frames() {\n\t\t\t\treturn this._frames;\n\t\t}\n\t\tsetFrame(key, data) {\n\t\t\t\tlet frame = this._frames[key];\n\t\t\t\tif (!frame) {\n\t\t\t\t\t\tframe = {\n\t\t\t\t\t\t\t\trect: data.rect.clone(),\n\t\t\t\t\t\t\t\tpivot: data.pivot.clone(),\n\t\t\t\t\t\t\t\tborder: data.border.clone()\n\t\t\t\t\t\t};\n\t\t\t\t\t\tthis._frames[key] = frame;\n\t\t\t\t} else {\n\t\t\t\t\t\tframe.rect.copy(data.rect);\n\t\t\t\t\t\tframe.pivot.copy(data.pivot);\n\t\t\t\t\t\tframe.border.copy(data.border);\n\t\t\t\t}\n\t\t\t\tthis.fire('set:frame', key.toString(), frame);\n\t\t}\n\t\tremoveFrame(key) {\n\t\t\t\tconst frame = this._frames[key];\n\t\t\t\tif (frame) {\n\t\t\t\t\t\tdelete this._frames[key];\n\t\t\t\t\t\tthis.fire('remove:frame', key.toString(), frame);\n\t\t\t\t}\n\t\t}\n\t\tdestroy() {\n\t\t\t\tif (this._texture) {\n\t\t\t\t\t\tthis._texture.destroy();\n\t\t\t\t}\n\t\t}\n}\n\nclass AnimationKey {\n\t\tconstructor(time, position, rotation, scale){\n\t\t\t\tthis.time = time;\n\t\t\t\tthis.position = position;\n\t\t\t\tthis.rotation = rotation;\n\t\t\t\tthis.scale = scale;\n\t\t}\n}\nclass AnimationNode {\n\t\tconstructor(){\n\t\t\t\tthis._name = '';\n\t\t\t\tthis._keys = [];\n\t\t}\n}\nclass Animation {\n\t\tconstructor(){\n\t\t\t\tthis.name = '';\n\t\t\t\tthis.duration = 0;\n\t\t\t\tthis._nodes = [];\n\t\t\t\tthis._nodeDict = {};\n\t\t}\n\t\tgetNode(name) {\n\t\t\t\treturn this._nodeDict[name];\n\t\t}\n\t\taddNode(node) {\n\t\t\t\tthis._nodes.push(node);\n\t\t\t\tthis._nodeDict[node._name] = node;\n\t\t}\n\t\tget nodes() {\n\t\t\t\treturn this._nodes;\n\t\t}\n}\n\nclass InterpolatedKey {\n\t\tconstructor(){\n\t\t\t\tthis._written = false;\n\t\t\t\tthis._name = '';\n\t\t\t\tthis._keyFrames = [];\n\t\t\t\tthis._quat = new Quat();\n\t\t\t\tthis._pos = new Vec3();\n\t\t\t\tthis._scale = new Vec3();\n\t\t\t\tthis._targetNode = null;\n\t\t}\n\t\tgetTarget() {\n\t\t\t\treturn this._targetNode;\n\t\t}\n\t\tsetTarget(node) {\n\t\t\t\tthis._targetNode = node;\n\t\t}\n}\nclass Skeleton {\n\t\tconstructor(graph){\n\t\t\t\tthis.looping = true;\n\t\t\t\tthis._animation = null;\n\t\t\t\tthis._time = 0;\n\t\t\t\tthis._interpolatedKeys = [];\n\t\t\t\tthis._interpolatedKeyDict = {};\n\t\t\t\tthis._currKeyIndices = {};\n\t\t\t\tthis.graph = null;\n\t\t\t\tconst addInterpolatedKeys = (node)=>{\n\t\t\t\t\t\tconst interpKey = new InterpolatedKey();\n\t\t\t\t\t\tinterpKey._name = node.name;\n\t\t\t\t\t\tthis._interpolatedKeys.push(interpKey);\n\t\t\t\t\t\tthis._interpolatedKeyDict[node.name] = interpKey;\n\t\t\t\t\t\tthis._currKeyIndices[node.name] = 0;\n\t\t\t\t\t\tfor(let i = 0; i < node._children.length; i++){\n\t\t\t\t\t\t\t\taddInterpolatedKeys(node._children[i]);\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\taddInterpolatedKeys(graph);\n\t\t}\n\t\tset animation(value) {\n\t\t\t\tthis._animation = value;\n\t\t\t\tthis.currentTime = 0;\n\t\t}\n\t\tget animation() {\n\t\t\t\treturn this._animation;\n\t\t}\n\t\tset currentTime(value) {\n\t\t\t\tthis._time = value;\n\t\t\t\tconst numNodes = this._interpolatedKeys.length;\n\t\t\t\tfor(let i = 0; i < numNodes; i++){\n\t\t\t\t\t\tconst node = this._interpolatedKeys[i];\n\t\t\t\t\t\tconst nodeName = node._name;\n\t\t\t\t\t\tthis._currKeyIndices[nodeName] = 0;\n\t\t\t\t}\n\t\t\t\tthis.addTime(0);\n\t\t\t\tthis.updateGraph();\n\t\t}\n\t\tget currentTime() {\n\t\t\t\treturn this._time;\n\t\t}\n\t\tget numNodes() {\n\t\t\t\treturn this._interpolatedKeys.length;\n\t\t}\n\t\taddTime(delta) {\n\t\t\t\tif (this._animation !== null) {\n\t\t\t\t\t\tconst nodes = this._animation._nodes;\n\t\t\t\t\t\tconst duration = this._animation.duration;\n\t\t\t\t\t\tif (this._time === duration && !this.looping) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._time += delta;\n\t\t\t\t\t\tif (this._time > duration) {\n\t\t\t\t\t\t\t\tthis._time = this.looping ? 0.0 : duration;\n\t\t\t\t\t\t\t\tfor(let i = 0; i < nodes.length; i++){\n\t\t\t\t\t\t\t\t\t\tconst node = nodes[i];\n\t\t\t\t\t\t\t\t\t\tconst nodeName = node._name;\n\t\t\t\t\t\t\t\t\t\tthis._currKeyIndices[nodeName] = 0;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (this._time < 0) {\n\t\t\t\t\t\t\t\tthis._time = this.looping ? duration : 0.0;\n\t\t\t\t\t\t\t\tfor(let i = 0; i < nodes.length; i++){\n\t\t\t\t\t\t\t\t\t\tconst node = nodes[i];\n\t\t\t\t\t\t\t\t\t\tconst nodeName = node._name;\n\t\t\t\t\t\t\t\t\t\tthis._currKeyIndices[nodeName] = node._keys.length - 2;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst offset = delta >= 0 ? 1 : -1;\n\t\t\t\t\t\tfor(let i = 0; i < nodes.length; i++){\n\t\t\t\t\t\t\t\tconst node = nodes[i];\n\t\t\t\t\t\t\t\tconst nodeName = node._name;\n\t\t\t\t\t\t\t\tconst keys = node._keys;\n\t\t\t\t\t\t\t\tconst interpKey = this._interpolatedKeyDict[nodeName];\n\t\t\t\t\t\t\t\tif (interpKey === undefined) {\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tlet foundKey = false;\n\t\t\t\t\t\t\t\tif (keys.length !== 1) {\n\t\t\t\t\t\t\t\t\t\tfor(let currKeyIndex = this._currKeyIndices[nodeName]; currKeyIndex < keys.length - 1 && currKeyIndex >= 0; currKeyIndex += offset){\n\t\t\t\t\t\t\t\t\t\t\t\tconst k1 = keys[currKeyIndex];\n\t\t\t\t\t\t\t\t\t\t\t\tconst k2 = keys[currKeyIndex + 1];\n\t\t\t\t\t\t\t\t\t\t\t\tif (k1.time <= this._time && k2.time >= this._time) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst alpha = (this._time - k1.time) / (k2.time - k1.time);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tinterpKey._pos.lerp(k1.position, k2.position, alpha);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tinterpKey._quat.slerp(k1.rotation, k2.rotation, alpha);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tinterpKey._scale.lerp(k1.scale, k2.scale, alpha);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tinterpKey._written = true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis._currKeyIndices[nodeName] = currKeyIndex;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfoundKey = true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (keys.length === 1 || !foundKey && this._time === 0.0 && this.looping) {\n\t\t\t\t\t\t\t\t\t\tinterpKey._pos.copy(keys[0].position);\n\t\t\t\t\t\t\t\t\t\tinterpKey._quat.copy(keys[0].rotation);\n\t\t\t\t\t\t\t\t\t\tinterpKey._scale.copy(keys[0].scale);\n\t\t\t\t\t\t\t\t\t\tinterpKey._written = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tblend(skel1, skel2, alpha) {\n\t\t\t\tconst numNodes = this._interpolatedKeys.length;\n\t\t\t\tfor(let i = 0; i < numNodes; i++){\n\t\t\t\t\t\tconst key1 = skel1._interpolatedKeys[i];\n\t\t\t\t\t\tconst key2 = skel2._interpolatedKeys[i];\n\t\t\t\t\t\tconst dstKey = this._interpolatedKeys[i];\n\t\t\t\t\t\tif (key1._written && key2._written) {\n\t\t\t\t\t\t\t\tdstKey._quat.slerp(key1._quat, skel2._interpolatedKeys[i]._quat, alpha);\n\t\t\t\t\t\t\t\tdstKey._pos.lerp(key1._pos, skel2._interpolatedKeys[i]._pos, alpha);\n\t\t\t\t\t\t\t\tdstKey._scale.lerp(key1._scale, key2._scale, alpha);\n\t\t\t\t\t\t\t\tdstKey._written = true;\n\t\t\t\t\t\t} else if (key1._written) {\n\t\t\t\t\t\t\t\tdstKey._quat.copy(key1._quat);\n\t\t\t\t\t\t\t\tdstKey._pos.copy(key1._pos);\n\t\t\t\t\t\t\t\tdstKey._scale.copy(key1._scale);\n\t\t\t\t\t\t\t\tdstKey._written = true;\n\t\t\t\t\t\t} else if (key2._written) {\n\t\t\t\t\t\t\t\tdstKey._quat.copy(key2._quat);\n\t\t\t\t\t\t\t\tdstKey._pos.copy(key2._pos);\n\t\t\t\t\t\t\t\tdstKey._scale.copy(key2._scale);\n\t\t\t\t\t\t\t\tdstKey._written = true;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tsetGraph(graph) {\n\t\t\t\tthis.graph = graph;\n\t\t\t\tif (graph) {\n\t\t\t\t\t\tfor(let i = 0; i < this._interpolatedKeys.length; i++){\n\t\t\t\t\t\t\t\tconst interpKey = this._interpolatedKeys[i];\n\t\t\t\t\t\t\t\tconst graphNode = graph.findByName(interpKey._name);\n\t\t\t\t\t\t\t\tthis._interpolatedKeys[i].setTarget(graphNode);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tfor(let i = 0; i < this._interpolatedKeys.length; i++){\n\t\t\t\t\t\t\t\tthis._interpolatedKeys[i].setTarget(null);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tupdateGraph() {\n\t\t\t\tif (this.graph) {\n\t\t\t\t\t\tfor(let i = 0; i < this._interpolatedKeys.length; i++){\n\t\t\t\t\t\t\t\tconst interpKey = this._interpolatedKeys[i];\n\t\t\t\t\t\t\t\tif (interpKey._written) {\n\t\t\t\t\t\t\t\t\t\tconst transform = interpKey.getTarget();\n\t\t\t\t\t\t\t\t\t\ttransform.localPosition.copy(interpKey._pos);\n\t\t\t\t\t\t\t\t\t\ttransform.localRotation.copy(interpKey._quat);\n\t\t\t\t\t\t\t\t\t\ttransform.localScale.copy(interpKey._scale);\n\t\t\t\t\t\t\t\t\t\tif (!transform._dirtyLocal) {\n\t\t\t\t\t\t\t\t\t\t\t\ttransform._dirtifyLocal();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tinterpKey._written = false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n}\n\nconst _viewport$1 = new Vec4();\nclass PostEffect {\n\t\tconstructor(graphicsDevice){\n\t\t\t\tthis.device = graphicsDevice;\n\t\t\t\tthis.needsDepthBuffer = false;\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.quadVertexShader = `\n\t\t\t\tattribute vec2 aPosition;\n\t\t\t\tvarying vec2 vUv0;\n\t\t\t\tvoid main(void)\n\t\t\t\t{\n\t\t\t\t\t\tgl_Position = vec4(aPosition, 0.0, 1.0);\n\t\t\t\t\t\tvUv0 = getImageEffectUV((aPosition.xy + 1.0) * 0.5);\n\t\t\t\t}\n\t\t`;\n\t\t}\n\t\trender(inputTarget, outputTarget, rect) {}\n\t\tdrawQuad(target, shader, rect) {\n\t\t\t\tlet viewport;\n\t\t\t\tif (rect) {\n\t\t\t\t\t\tconst w = target ? target.width : this.device.width;\n\t\t\t\t\t\tconst h = target ? target.height : this.device.height;\n\t\t\t\t\t\tviewport = _viewport$1.set(rect.x * w, rect.y * h, rect.z * w, rect.w * h);\n\t\t\t\t}\n\t\t\t\tthis.device.setBlendState(BlendState.NOBLEND);\n\t\t\t\tdrawQuadWithShader(this.device, target, shader, viewport);\n\t\t}\n}\n\nclass RenderPassShaderQuad extends RenderPass {\n\t\tset shader(shader) {\n\t\t\t\tthis.quadRender?.destroy();\n\t\t\t\tthis.quadRender = null;\n\t\t\t\tthis._shader = shader;\n\t\t\t\tif (shader) {\n\t\t\t\t\t\tthis.quadRender = new QuadRender(shader);\n\t\t\t\t}\n\t\t}\n\t\tget shader() {\n\t\t\t\treturn this._shader;\n\t\t}\n\t\texecute() {\n\t\t\t\tconst device = this.device;\n\t\t\t\tdevice.setBlendState(this.blendState);\n\t\t\t\tdevice.setCullMode(this.cullMode);\n\t\t\t\tdevice.setDepthState(this.depthState);\n\t\t\t\tdevice.setStencilState(this.stencilFront, this.stencilBack);\n\t\t\t\tthis.quadRender.render();\n\t\t}\n\t\tconstructor(...args){\n\t\t\t\tsuper(...args), this._shader = null, this.quadRender = null, this.cullMode = CULLFACE_NONE, this.blendState = BlendState.NOBLEND, this.depthState = DepthState.NODEPTH, this.stencilFront = null, this.stencilBack = null;\n\t\t}\n}\n\nclass LitShaderOptions {\n\t\tconstructor(){\n\t\t\t\tthis.hasTangents = false;\n\t\t\t\tthis.shaderChunks = null;\n\t\t\t\tthis.pass = 0;\n\t\t\t\tthis.alphaTest = false;\n\t\t\t\tthis.blendType = BLEND_NONE;\n\t\t\t\tthis.separateAmbient = false;\n\t\t\t\tthis.screenSpace = false;\n\t\t\t\tthis.skin = false;\n\t\t\t\tthis.batch = false;\n\t\t\t\tthis.useInstancing = false;\n\t\t\t\tthis.useMorphPosition = false;\n\t\t\t\tthis.useMorphNormal = false;\n\t\t\t\tthis.useMorphTextureBasedInt = false;\n\t\t\t\tthis.nineSlicedMode = 0;\n\t\t\t\tthis.clusteredLightingEnabled = true;\n\t\t\t\tthis.clusteredLightingCookiesEnabled = false;\n\t\t\t\tthis.clusteredLightingShadowsEnabled = false;\n\t\t\t\tthis.clusteredLightingShadowType = 0;\n\t\t\t\tthis.clusteredLightingAreaLightsEnabled = false;\n\t\t\t\tthis.vertexColors = false;\n\t\t\t\tthis.lightMapEnabled = false;\n\t\t\t\tthis.dirLightMapEnabled = false;\n\t\t\t\tthis.useHeights = false;\n\t\t\t\tthis.useNormals = false;\n\t\t\t\tthis.useClearCoatNormals = false;\n\t\t\t\tthis.useAo = false;\n\t\t\t\tthis.diffuseMapEnabled = false;\n\t\t\t\tthis.pixelSnap = false;\n\t\t\t\tthis.ambientSH = false;\n\t\t\t\tthis.ssao = false;\n\t\t\t\tthis.twoSidedLighting = false;\n\t\t\t\tthis.occludeDirect = false;\n\t\t\t\tthis.occludeSpecular = 0;\n\t\t\t\tthis.occludeSpecularFloat = false;\n\t\t\t\tthis.useMsdf = false;\n\t\t\t\tthis.msdfTextAttribute = false;\n\t\t\t\tthis.alphaToCoverage = false;\n\t\t\t\tthis.opacityFadesSpecular = false;\n\t\t\t\tthis.opacityDither = DITHER_NONE;\n\t\t\t\tthis.opacityShadowDither = DITHER_NONE;\n\t\t\t\tthis.cubeMapProjection = 0;\n\t\t\t\tthis.useSpecular = false;\n\t\t\t\tthis.useSpecularityFactor = false;\n\t\t\t\tthis.enableGGXSpecular = false;\n\t\t\t\tthis.fresnelModel = 0;\n\t\t\t\tthis.useRefraction = false;\n\t\t\t\tthis.useClearCoat = false;\n\t\t\t\tthis.useSheen = false;\n\t\t\t\tthis.useIridescence = false;\n\t\t\t\tthis.useMetalness = false;\n\t\t\t\tthis.useDynamicRefraction = false;\n\t\t\t\tthis.dispersion = false;\n\t\t\t\tthis.fog = FOG_NONE;\n\t\t\t\tthis.gamma = GAMMA_NONE;\n\t\t\t\tthis.toneMap = -1;\n\t\t\t\tthis.reflectionSource = REFLECTIONSRC_NONE;\n\t\t\t\tthis.reflectionEncoding = null;\n\t\t\t\tthis.reflectionCubemapEncoding = null;\n\t\t\t\tthis.ambientSource = 'constant';\n\t\t\t\tthis.ambientEncoding = null;\n\t\t\t\tthis.skyboxIntensity = 1.0;\n\t\t\t\tthis.useCubeMapRotation = false;\n\t\t\t\tthis.lightMapWithoutAmbient = false;\n\t\t\t\tthis.lights = [];\n\t\t\t\tthis.noShadow = false;\n\t\t\t\tthis.lightMaskDynamic = 0x0;\n\t\t\t\tthis.userAttributes = {};\n\t\t\t\tthis.linearDepth = false;\n\t\t\t\tthis.shadowCatcher = false;\n\t\t}\n}\n\nclass LitMaterialOptions {\n\t\tconstructor(){\n\t\t\t\tthis.litOptions = new LitShaderOptions();\n\t\t}\n}\n\nclass LitMaterialOptionsBuilder {\n\t\tstatic update(litOptions, material, scene, renderParams, objDefs, pass, sortedLights) {\n\t\t\t\tLitMaterialOptionsBuilder.updateSharedOptions(litOptions, material, scene, objDefs, pass);\n\t\t\t\tLitMaterialOptionsBuilder.updateMaterialOptions(litOptions, material);\n\t\t\t\tLitMaterialOptionsBuilder.updateEnvOptions(litOptions, material, scene, renderParams);\n\t\t\t\tLitMaterialOptionsBuilder.updateLightingOptions(litOptions, material, scene, objDefs, sortedLights);\n\t\t}\n\t\tstatic updateSharedOptions(litOptions, material, scene, objDefs, pass) {\n\t\t\t\tlitOptions.shaderChunks = material.shaderChunks;\n\t\t\t\tlitOptions.pass = pass;\n\t\t\t\tlitOptions.alphaTest = material.alphaTest > 0;\n\t\t\t\tlitOptions.blendType = material.blendType;\n\t\t\t\tlitOptions.screenSpace = objDefs && (objDefs & SHADERDEF_SCREENSPACE) !== 0;\n\t\t\t\tlitOptions.skin = objDefs && (objDefs & SHADERDEF_SKIN) !== 0;\n\t\t\t\tlitOptions.useInstancing = objDefs && (objDefs & SHADERDEF_INSTANCING) !== 0;\n\t\t\t\tlitOptions.useMorphPosition = objDefs && (objDefs & SHADERDEF_MORPH_POSITION) !== 0;\n\t\t\t\tlitOptions.useMorphNormal = objDefs && (objDefs & SHADERDEF_MORPH_NORMAL) !== 0;\n\t\t\t\tlitOptions.useMorphTextureBasedInt = objDefs && (objDefs & SHADERDEF_MORPH_TEXTURE_BASED_INT) !== 0;\n\t\t\t\tlitOptions.hasTangents = objDefs && (objDefs & SHADERDEF_TANGENTS) !== 0;\n\t\t\t\tlitOptions.nineSlicedMode = material.nineSlicedMode || SPRITE_RENDERMODE_SIMPLE;\n\t\t\t\tif (material.useLighting && scene.clusteredLightingEnabled) {\n\t\t\t\t\t\tlitOptions.clusteredLightingEnabled = true;\n\t\t\t\t\t\tlitOptions.clusteredLightingCookiesEnabled = scene.lighting.cookiesEnabled;\n\t\t\t\t\t\tlitOptions.clusteredLightingShadowsEnabled = scene.lighting.shadowsEnabled;\n\t\t\t\t\t\tlitOptions.clusteredLightingShadowType = scene.lighting.shadowType;\n\t\t\t\t\t\tlitOptions.clusteredLightingAreaLightsEnabled = scene.lighting.areaLightsEnabled;\n\t\t\t\t} else {\n\t\t\t\t\t\tlitOptions.clusteredLightingEnabled = false;\n\t\t\t\t\t\tlitOptions.clusteredLightingCookiesEnabled = false;\n\t\t\t\t\t\tlitOptions.clusteredLightingShadowsEnabled = false;\n\t\t\t\t\t\tlitOptions.clusteredLightingAreaLightsEnabled = false;\n\t\t\t\t}\n\t\t}\n\t\tstatic updateMaterialOptions(litOptions, material) {\n\t\t\t\tlitOptions.separateAmbient = false;\n\t\t\t\tlitOptions.pixelSnap = material.pixelSnap;\n\t\t\t\tlitOptions.ambientSH = material.ambientSH;\n\t\t\t\tlitOptions.twoSidedLighting = material.twoSidedLighting;\n\t\t\t\tlitOptions.occludeDirect = material.occludeDirect;\n\t\t\t\tlitOptions.occludeSpecular = material.occludeSpecular;\n\t\t\t\tlitOptions.occludeSpecularFloat = material.occludeSpecularIntensity !== 1.0;\n\t\t\t\tlitOptions.useMsdf = false;\n\t\t\t\tlitOptions.msdfTextAttribute = false;\n\t\t\t\tlitOptions.alphaToCoverage = material.alphaToCoverage;\n\t\t\t\tlitOptions.opacityFadesSpecular = material.opacityFadesSpecular;\n\t\t\t\tlitOptions.opacityDither = material.opacityDither;\n\t\t\t\tlitOptions.cubeMapProjection = CUBEPROJ_NONE;\n\t\t\t\tlitOptions.useSpecular = material.hasSpecular;\n\t\t\t\tlitOptions.useSpecularityFactor = material.hasSpecularityFactor;\n\t\t\t\tlitOptions.enableGGXSpecular = material.ggxSpecular;\n\t\t\t\tlitOptions.fresnelModel = material.fresnelModel;\n\t\t\t\tlitOptions.useRefraction = material.hasRefraction;\n\t\t\t\tlitOptions.useClearCoat = material.hasClearCoat;\n\t\t\t\tlitOptions.useSheen = material.hasSheen;\n\t\t\t\tlitOptions.useIridescence = material.hasIrridescence;\n\t\t\t\tlitOptions.useMetalness = material.hasMetalness;\n\t\t\t\tlitOptions.useDynamicRefraction = material.dynamicRefraction;\n\t\t\t\tlitOptions.dispersion = material.dispersion > 0;\n\t\t\t\tlitOptions.vertexColors = false;\n\t\t\t\tlitOptions.lightMapEnabled = material.hasLighting;\n\t\t\t\tlitOptions.dirLightMapEnabled = material.dirLightMap;\n\t\t\t\tlitOptions.useHeights = material.hasHeights;\n\t\t\t\tlitOptions.useNormals = material.hasNormals;\n\t\t\t\tlitOptions.useClearCoatNormals = material.hasClearCoatNormals;\n\t\t\t\tlitOptions.useAo = material.hasAo;\n\t\t\t\tlitOptions.diffuseMapEnabled = material.hasDiffuseMap;\n\t\t}\n\t\tstatic updateEnvOptions(litOptions, material, scene, renderParams) {\n\t\t\t\tlitOptions.fog = material.useFog ? renderParams.fog : FOG_NONE;\n\t\t\t\tlitOptions.gamma = renderParams.shaderOutputGamma;\n\t\t\t\tlitOptions.toneMap = material.useTonemap ? renderParams.toneMapping : TONEMAP_NONE;\n\t\t\t\tif (material.useSkybox && scene.envAtlas && scene.skybox) {\n\t\t\t\t\t\tlitOptions.reflectionSource = REFLECTIONSRC_ENVATLASHQ;\n\t\t\t\t\t\tlitOptions.reflectionEncoding = scene.envAtlas.encoding;\n\t\t\t\t\t\tlitOptions.reflectionCubemapEncoding = scene.skybox.encoding;\n\t\t\t\t} else if (material.useSkybox && scene.envAtlas) {\n\t\t\t\t\t\tlitOptions.reflectionSource = REFLECTIONSRC_ENVATLAS;\n\t\t\t\t\t\tlitOptions.reflectionEncoding = scene.envAtlas.encoding;\n\t\t\t\t} else if (material.useSkybox && scene.skybox) {\n\t\t\t\t\t\tlitOptions.reflectionSource = REFLECTIONSRC_CUBEMAP;\n\t\t\t\t\t\tlitOptions.reflectionEncoding = scene.skybox.encoding;\n\t\t\t\t} else {\n\t\t\t\t\t\tlitOptions.reflectionSource = REFLECTIONSRC_NONE;\n\t\t\t\t\t\tlitOptions.reflectionEncoding = null;\n\t\t\t\t}\n\t\t\t\tif (material.ambientSH) {\n\t\t\t\t\t\tlitOptions.ambientSource = AMBIENTSRC_AMBIENTSH;\n\t\t\t\t\t\tlitOptions.ambientEncoding = null;\n\t\t\t\t} else if (litOptions.reflectionSource !== REFLECTIONSRC_NONE && scene.envAtlas) {\n\t\t\t\t\t\tlitOptions.ambientSource = AMBIENTSRC_ENVALATLAS;\n\t\t\t\t\t\tlitOptions.ambientEncoding = scene.envAtlas.encoding;\n\t\t\t\t} else {\n\t\t\t\t\t\tlitOptions.ambientSource = AMBIENTSRC_CONSTANT;\n\t\t\t\t\t\tlitOptions.ambientEncoding = null;\n\t\t\t\t}\n\t\t\t\tconst hasSkybox = litOptions.reflectionSource !== REFLECTIONSRC_NONE;\n\t\t\t\tlitOptions.skyboxIntensity = hasSkybox;\n\t\t\t\tlitOptions.useCubeMapRotation = hasSkybox && scene._skyboxRotationShaderInclude;\n\t\t}\n\t\tstatic updateLightingOptions(litOptions, material, scene, objDefs, sortedLights) {\n\t\t\t\tlitOptions.lightMapWithoutAmbient = false;\n\t\t\t\tif (material.useLighting) {\n\t\t\t\t\t\tconst lightsFiltered = [];\n\t\t\t\t\t\tconst mask = objDefs ? objDefs >> 16 : MASK_AFFECT_DYNAMIC;\n\t\t\t\t\t\tlitOptions.lightMaskDynamic = !!(mask & MASK_AFFECT_DYNAMIC);\n\t\t\t\t\t\tlitOptions.lightMapWithoutAmbient = false;\n\t\t\t\t\t\tif (sortedLights) {\n\t\t\t\t\t\t\t\tLitMaterialOptionsBuilder.collectLights(LIGHTTYPE_DIRECTIONAL, sortedLights[LIGHTTYPE_DIRECTIONAL], lightsFiltered, mask);\n\t\t\t\t\t\t\t\tif (!scene.clusteredLightingEnabled) {\n\t\t\t\t\t\t\t\t\t\tLitMaterialOptionsBuilder.collectLights(LIGHTTYPE_OMNI, sortedLights[LIGHTTYPE_OMNI], lightsFiltered, mask);\n\t\t\t\t\t\t\t\t\t\tLitMaterialOptionsBuilder.collectLights(LIGHTTYPE_SPOT, sortedLights[LIGHTTYPE_SPOT], lightsFiltered, mask);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlitOptions.lights = lightsFiltered;\n\t\t\t\t} else {\n\t\t\t\t\t\tlitOptions.lights = [];\n\t\t\t\t}\n\t\t\t\tif (litOptions.lights.length === 0 && !scene.clusteredLightingEnabled || (objDefs & SHADERDEF_NOSHADOW) !== 0) {\n\t\t\t\t\t\tlitOptions.noShadow = true;\n\t\t\t\t}\n\t\t}\n\t\tstatic collectLights(lType, lights, lightsFiltered, mask) {\n\t\t\t\tfor(let i = 0; i < lights.length; i++){\n\t\t\t\t\t\tconst light = lights[i];\n\t\t\t\t\t\tif (light.enabled) {\n\t\t\t\t\t\t\t\tif (light.mask & mask) {\n\t\t\t\t\t\t\t\t\t\tlightsFiltered.push(light);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n}\n\nconst builtinAttributes = {\n\t\tvertex_normal: SEMANTIC_NORMAL,\n\t\tvertex_tangent: SEMANTIC_TANGENT,\n\t\tvertex_texCoord0: SEMANTIC_TEXCOORD0,\n\t\tvertex_texCoord1: SEMANTIC_TEXCOORD1,\n\t\tvertex_color: SEMANTIC_COLOR,\n\t\tvertex_boneWeights: SEMANTIC_BLENDWEIGHT,\n\t\tvertex_boneIndices: SEMANTIC_BLENDINDICES\n};\nclass LitShader {\n\t\tconstructor(device, options, allowWGSL = true){\n\t\t\t\tthis.varyingsCode = '';\n\t\t\t\tthis.vDefines = new Map();\n\t\t\t\tthis.fDefines = new Map();\n\t\t\t\tthis.includes = new Map();\n\t\t\t\tthis.chunks = null;\n\t\t\t\tthis.device = device;\n\t\t\t\tthis.options = options;\n\t\t\t\tconst userChunks = options.shaderChunks;\n\t\t\t\tthis.shaderLanguage = device.isWebGPU && allowWGSL && userChunks?.useWGSL ? SHADERLANGUAGE_WGSL : SHADERLANGUAGE_GLSL;\n\t\t\t\tthis.attributes = {\n\t\t\t\t\t\tvertex_position: SEMANTIC_POSITION\n\t\t\t\t};\n\t\t\t\tif (options.userAttributes) {\n\t\t\t\t\t\tfor (const [semantic, name] of Object.entries(options.userAttributes)){\n\t\t\t\t\t\t\t\tthis.attributes[name] = semantic;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst engineChunks = ShaderChunks.get(device, this.shaderLanguage);\n\t\t\t\tthis.chunks = new Map(engineChunks);\n\t\t\t\tif (userChunks) {\n\t\t\t\t\t\tconst userChunkMap = this.shaderLanguage === SHADERLANGUAGE_GLSL ? userChunks.glsl : userChunks.wgsl;\n\t\t\t\t\t\tuserChunkMap.forEach((chunk, chunkName)=>{\n\t\t\t\t\t\t\t\tfor(const a in builtinAttributes){\n\t\t\t\t\t\t\t\t\t\tif (builtinAttributes.hasOwnProperty(a) && chunk.indexOf(a) >= 0) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.attributes[a] = builtinAttributes[a];\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.chunks.set(chunkName, chunk);\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tthis.shaderPassInfo = ShaderPass.get(this.device).getByIndex(options.pass);\n\t\t\t\tthis.shadowPass = this.shaderPassInfo.isShadow;\n\t\t\t\tthis.lighting = options.lights.length > 0 || options.dirLightMapEnabled || options.clusteredLightingEnabled;\n\t\t\t\tthis.reflections = options.reflectionSource !== REFLECTIONSRC_NONE;\n\t\t\t\tthis.needsNormal = this.lighting || this.reflections || options.useSpecular || options.ambientSH || options.useHeights || options.enableGGXSpecular || options.clusteredLightingEnabled && !this.shadowPass || options.useClearCoatNormals;\n\t\t\t\tthis.needsNormal = this.needsNormal && !this.shadowPass;\n\t\t\t\tthis.needsSceneColor = options.useDynamicRefraction;\n\t\t\t\tthis.needsScreenSize = options.useDynamicRefraction;\n\t\t\t\tthis.needsTransforms = options.useDynamicRefraction;\n\t\t\t\tthis.vshader = null;\n\t\t\t\tthis.fshader = null;\n\t\t}\n\t\tfDefineSet(condition, name, value = '') {\n\t\t\t\tif (condition) {\n\t\t\t\t\t\tthis.fDefines.set(name, value);\n\t\t\t\t}\n\t\t}\n\t\tgenerateVertexShader(useUv, useUnmodifiedUv, mapTransforms) {\n\t\t\t\tconst { options, vDefines, attributes } = this;\n\t\t\t\tconst varyings = new Map();\n\t\t\t\tvaryings.set('vPositionW', 'vec3');\n\t\t\t\tif (options.nineSlicedMode === SPRITE_RENDERMODE_SLICED || options.nineSlicedMode === SPRITE_RENDERMODE_TILED) {\n\t\t\t\t\t\tvDefines.set('NINESLICED', true);\n\t\t\t\t}\n\t\t\t\tif (this.options.linearDepth) {\n\t\t\t\t\t\tvDefines.set('LINEAR_DEPTH', true);\n\t\t\t\t\t\tvaryings.set('vLinearDepth', 'float');\n\t\t\t\t}\n\t\t\t\tif (this.needsNormal) vDefines.set('NORMALS', true);\n\t\t\t\tif (this.options.useInstancing) {\n\t\t\t\t\t\tconst languageChunks = ShaderChunks.get(this.device, this.shaderLanguage);\n\t\t\t\t\t\tif (this.chunks.get('transformInstancingVS') === languageChunks.get('transformInstancingVS')) {\n\t\t\t\t\t\t\t\tattributes.instance_line1 = SEMANTIC_ATTR11;\n\t\t\t\t\t\t\t\tattributes.instance_line2 = SEMANTIC_ATTR12;\n\t\t\t\t\t\t\t\tattributes.instance_line3 = SEMANTIC_ATTR14;\n\t\t\t\t\t\t\t\tattributes.instance_line4 = SEMANTIC_ATTR15;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this.needsNormal) {\n\t\t\t\t\t\tattributes.vertex_normal = SEMANTIC_NORMAL;\n\t\t\t\t\t\tvaryings.set('vNormalW', 'vec3');\n\t\t\t\t\t\tif (options.hasTangents && (options.useHeights || options.useNormals || options.useClearCoatNormals || options.enableGGXSpecular)) {\n\t\t\t\t\t\t\t\tvDefines.set('TANGENTS', true);\n\t\t\t\t\t\t\t\tattributes.vertex_tangent = SEMANTIC_TANGENT;\n\t\t\t\t\t\t\t\tvaryings.set('vTangentW', 'vec3');\n\t\t\t\t\t\t\t\tvaryings.set('vBinormalW', 'vec3');\n\t\t\t\t\t\t} else if (options.enableGGXSpecular) {\n\t\t\t\t\t\t\t\tvDefines.set('GGX_SPECULAR', true);\n\t\t\t\t\t\t\t\tvaryings.set('vObjectSpaceUpW', 'vec3');\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst maxUvSets = 2;\n\t\t\t\tfor(let i = 0; i < maxUvSets; i++){\n\t\t\t\t\t\tif (useUv[i]) {\n\t\t\t\t\t\t\t\tvDefines.set(`UV${i}`, true);\n\t\t\t\t\t\t\t\tattributes[`vertex_texCoord${i}`] = `TEXCOORD${i}`;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (useUnmodifiedUv[i]) {\n\t\t\t\t\t\t\t\tvDefines.set(`UV${i}_UNMODIFIED`, true);\n\t\t\t\t\t\t\t\tvaryings.set(`vUv${i}`, 'vec2');\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tlet numTransforms = 0;\n\t\t\t\tconst transformDone = new Set();\n\t\t\t\tmapTransforms.forEach((mapTransform)=>{\n\t\t\t\t\t\tconst { id, uv, name } = mapTransform;\n\t\t\t\t\t\tconst checkId = id + uv * 100;\n\t\t\t\t\t\tif (!transformDone.has(checkId)) {\n\t\t\t\t\t\t\t\ttransformDone.add(checkId);\n\t\t\t\t\t\t\t\tvaryings.set(`vUV${uv}_${id}`, 'vec2');\n\t\t\t\t\t\t\t\tconst varName = `texture_${name}MapTransform`;\n\t\t\t\t\t\t\t\tvDefines.set(`{TRANSFORM_NAME_${numTransforms}}`, varName);\n\t\t\t\t\t\t\t\tvDefines.set(`{TRANSFORM_UV_${numTransforms}}`, uv);\n\t\t\t\t\t\t\t\tvDefines.set(`{TRANSFORM_ID_${numTransforms}}`, id);\n\t\t\t\t\t\t\t\tnumTransforms++;\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tvDefines.set('UV_TRANSFORMS_COUNT', numTransforms);\n\t\t\t\tif (options.vertexColors) {\n\t\t\t\t\t\tattributes.vertex_color = SEMANTIC_COLOR;\n\t\t\t\t\t\tvDefines.set('VERTEX_COLOR', true);\n\t\t\t\t\t\tvaryings.set('vVertexColor', 'vec4');\n\t\t\t\t}\n\t\t\t\tif (options.useMsdf && options.msdfTextAttribute) {\n\t\t\t\t\t\tattributes.vertex_outlineParameters = SEMANTIC_ATTR8;\n\t\t\t\t\t\tattributes.vertex_shadowParameters = SEMANTIC_ATTR9;\n\t\t\t\t\t\tvDefines.set('MSDF', true);\n\t\t\t\t}\n\t\t\t\tif (options.useMorphPosition || options.useMorphNormal) {\n\t\t\t\t\t\tvDefines.set('MORPHING', true);\n\t\t\t\t\t\tif (options.useMorphTextureBasedInt) vDefines.set('MORPHING_INT', true);\n\t\t\t\t\t\tif (options.useMorphPosition) vDefines.set('MORPHING_POSITION', true);\n\t\t\t\t\t\tif (options.useMorphNormal) vDefines.set('MORPHING_NORMAL', true);\n\t\t\t\t\t\tattributes.morph_vertex_id = SEMANTIC_ATTR15;\n\t\t\t\t}\n\t\t\t\tif (options.skin) {\n\t\t\t\t\t\tattributes.vertex_boneIndices = SEMANTIC_BLENDINDICES;\n\t\t\t\t\t\tif (options.batch) {\n\t\t\t\t\t\t\t\tvDefines.set('BATCH', true);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tattributes.vertex_boneWeights = SEMANTIC_BLENDWEIGHT;\n\t\t\t\t\t\t\t\tvDefines.set('SKIN', true);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (options.useInstancing) vDefines.set('INSTANCING', true);\n\t\t\t\tif (options.screenSpace) vDefines.set('SCREENSPACE', true);\n\t\t\t\tif (options.pixelSnap) vDefines.set('PIXELSNAP', true);\n\t\t\t\tvaryings.forEach((type, name)=>{\n\t\t\t\t\t\tthis.varyingsCode += `#define VARYING_${name.toUpperCase()}\\n`;\n\t\t\t\t\t\tthis.varyingsCode += this.shaderLanguage === SHADERLANGUAGE_WGSL ? `varying ${name}: ${primitiveGlslToWgslTypeMap.get(type)};\\n` : `varying ${type} ${name};\\n`;\n\t\t\t\t});\n\t\t\t\tthis.includes.set('varyingsVS', this.varyingsCode);\n\t\t\t\tthis.includes.set('varyingsPS', this.varyingsCode);\n\t\t\t\tthis.vshader = `\n\t\t\t\t\t\t#include \"litMainVS\"\n\t\t\t\t`;\n\t\t}\n\t\t_setupLightingDefines(hasAreaLights, clusteredLightingEnabled) {\n\t\t\t\tconst fDefines = this.fDefines;\n\t\t\t\tconst options = this.options;\n\t\t\t\tthis.fDefines.set('LIGHT_COUNT', options.lights.length);\n\t\t\t\tif (hasAreaLights) fDefines.set('AREA_LIGHTS', true);\n\t\t\t\tif (clusteredLightingEnabled && this.lighting) {\n\t\t\t\t\t\tfDefines.set('LIT_CLUSTERED_LIGHTS', true);\n\t\t\t\t\t\tif (options.clusteredLightingCookiesEnabled) fDefines.set('CLUSTER_COOKIES', true);\n\t\t\t\t\t\tif (options.clusteredLightingAreaLightsEnabled) fDefines.set('CLUSTER_AREALIGHTS', true);\n\t\t\t\t\t\tif (options.lightMaskDynamic) fDefines.set('CLUSTER_MESH_DYNAMIC_LIGHTS', true);\n\t\t\t\t\t\tif (options.clusteredLightingShadowsEnabled && !options.noShadow) {\n\t\t\t\t\t\t\t\tconst clusteredShadowInfo = shadowTypeInfo.get(options.clusteredLightingShadowType);\n\t\t\t\t\t\t\t\tfDefines.set('CLUSTER_SHADOWS', true);\n\t\t\t\t\t\t\t\tfDefines.set(`SHADOW_KIND_${clusteredShadowInfo.kind}`, true);\n\t\t\t\t\t\t\t\tfDefines.set(`CLUSTER_SHADOW_TYPE_${clusteredShadowInfo.kind}`, true);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < options.lights.length; i++){\n\t\t\t\t\t\tconst light = options.lights[i];\n\t\t\t\t\t\tconst lightType = light._type;\n\t\t\t\t\t\tif (clusteredLightingEnabled && lightType !== LIGHTTYPE_DIRECTIONAL) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst lightShape = hasAreaLights && light._shape ? light._shape : LIGHTSHAPE_PUNCTUAL;\n\t\t\t\t\t\tconst shadowType = light._shadowType;\n\t\t\t\t\t\tconst castShadow = light.castShadows && !options.noShadow;\n\t\t\t\t\t\tconst shadowInfo = shadowTypeInfo.get(shadowType);\n\t\t\t\t\t\tfDefines.set(`LIGHT${i}`, true);\n\t\t\t\t\t\tfDefines.set(`LIGHT${i}TYPE`, `${lightTypeNames[lightType]}`);\n\t\t\t\t\t\tfDefines.set(`LIGHT${i}SHADOWTYPE`, `${shadowInfo.name}`);\n\t\t\t\t\t\tfDefines.set(`LIGHT${i}SHAPE`, `${lightShapeNames[lightShape]}`);\n\t\t\t\t\t\tfDefines.set(`LIGHT${i}FALLOFF`, `${lightFalloffNames[light._falloffMode]}`);\n\t\t\t\t\t\tif (light.affectSpecularity) fDefines.set(`LIGHT${i}AFFECT_SPECULARITY`, true);\n\t\t\t\t\t\tif (light._cookie) {\n\t\t\t\t\t\t\t\tif (lightType === LIGHTTYPE_SPOT && !light._cookie._cubemap || lightType === LIGHTTYPE_OMNI && light._cookie._cubemap) {\n\t\t\t\t\t\t\t\t\t\tfDefines.set(`LIGHT${i}COOKIE`, true);\n\t\t\t\t\t\t\t\t\t\tfDefines.set(`{LIGHT${i}COOKIE_CHANNEL}`, light._cookieChannel);\n\t\t\t\t\t\t\t\t\t\tif (lightType === LIGHTTYPE_SPOT) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (light._cookieTransform) fDefines.set(`LIGHT${i}COOKIE_TRANSFORM`, true);\n\t\t\t\t\t\t\t\t\t\t\t\tif (light._cookieFalloff) fDefines.set(`LIGHT${i}COOKIE_FALLOFF`, true);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (castShadow) {\n\t\t\t\t\t\t\t\tfDefines.set(`LIGHT${i}CASTSHADOW`, true);\n\t\t\t\t\t\t\t\tif (shadowInfo.pcf) fDefines.set(`LIGHT${i}SHADOW_PCF`, true);\n\t\t\t\t\t\t\t\tif (light._normalOffsetBias && !light._isVsm) fDefines.set(`LIGHT${i}_SHADOW_SAMPLE_NORMAL_OFFSET`, true);\n\t\t\t\t\t\t\t\tif (lightType === LIGHTTYPE_DIRECTIONAL) {\n\t\t\t\t\t\t\t\t\t\tfDefines.set(`LIGHT${i}_SHADOW_SAMPLE_ORTHO`, true);\n\t\t\t\t\t\t\t\t\t\tif (light.cascadeBlend > 0) fDefines.set(`LIGHT${i}_SHADOW_CASCADE_BLEND`, true);\n\t\t\t\t\t\t\t\t\t\tif (light.numCascades > 1) fDefines.set(`LIGHT${i}_SHADOW_CASCADES`, true);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (shadowInfo.pcf || shadowInfo.pcss || this.device.isWebGPU) fDefines.set(`LIGHT${i}_SHADOW_SAMPLE_SOURCE_ZBUFFER`, true);\n\t\t\t\t\t\t\t\tif (lightType === LIGHTTYPE_OMNI) fDefines.set(`LIGHT${i}_SHADOW_SAMPLE_POINT`, true);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (castShadow) {\n\t\t\t\t\t\t\t\tfDefines.set(`SHADOW_KIND_${shadowInfo.kind}`, true);\n\t\t\t\t\t\t\t\tif (lightType === LIGHTTYPE_DIRECTIONAL) fDefines.set('SHADOW_DIRECTIONAL', true);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tprepareForwardPass(lightingUv) {\n\t\t\t\tconst { options } = this;\n\t\t\t\tconst clusteredAreaLights = options.clusteredLightingEnabled && options.clusteredLightingAreaLightsEnabled;\n\t\t\t\tconst hasAreaLights = clusteredAreaLights || options.lights.some((light)=>{\n\t\t\t\t\t\treturn light._shape && light._shape !== LIGHTSHAPE_PUNCTUAL;\n\t\t\t\t});\n\t\t\t\tconst addAmbient = !options.lightMapEnabled || options.lightMapWithoutAmbient;\n\t\t\t\tconst hasTBN = this.needsNormal && (options.useNormals || options.useClearCoatNormals || options.enableGGXSpecular && !options.useHeights);\n\t\t\t\tif (options.useSpecular) {\n\t\t\t\t\t\tthis.fDefineSet(true, 'LIT_SPECULAR');\n\t\t\t\t\t\tthis.fDefineSet(this.reflections, 'LIT_REFLECTIONS');\n\t\t\t\t\t\tthis.fDefineSet(options.useClearCoat, 'LIT_CLEARCOAT');\n\t\t\t\t\t\tthis.fDefineSet(options.fresnelModel > 0, 'LIT_SPECULAR_FRESNEL');\n\t\t\t\t\t\tthis.fDefineSet(options.useSheen, 'LIT_SHEEN');\n\t\t\t\t\t\tthis.fDefineSet(options.useIridescence, 'LIT_IRIDESCENCE');\n\t\t\t\t}\n\t\t\t\tthis.fDefineSet(this.lighting && options.useSpecular || this.reflections, 'LIT_SPECULAR_OR_REFLECTION');\n\t\t\t\tthis.fDefineSet(this.needsSceneColor, 'LIT_SCENE_COLOR');\n\t\t\t\tthis.fDefineSet(this.needsScreenSize, 'LIT_SCREEN_SIZE');\n\t\t\t\tthis.fDefineSet(this.needsTransforms, 'LIT_TRANSFORMS');\n\t\t\t\tthis.fDefineSet(this.needsNormal, 'LIT_NEEDS_NORMAL');\n\t\t\t\tthis.fDefineSet(this.lighting, 'LIT_LIGHTING');\n\t\t\t\tthis.fDefineSet(options.useMetalness, 'LIT_METALNESS');\n\t\t\t\tthis.fDefineSet(options.enableGGXSpecular, 'LIT_GGX_SPECULAR');\n\t\t\t\tthis.fDefineSet(options.useSpecularityFactor, 'LIT_SPECULARITY_FACTOR');\n\t\t\t\tthis.fDefineSet(options.useCubeMapRotation, 'CUBEMAP_ROTATION');\n\t\t\t\tthis.fDefineSet(options.occludeSpecularFloat, 'LIT_OCCLUDE_SPECULAR_FLOAT');\n\t\t\t\tthis.fDefineSet(options.separateAmbient, 'LIT_SEPARATE_AMBIENT');\n\t\t\t\tthis.fDefineSet(options.twoSidedLighting, 'LIT_TWO_SIDED_LIGHTING');\n\t\t\t\tthis.fDefineSet(options.lightMapEnabled, 'LIT_LIGHTMAP');\n\t\t\t\tthis.fDefineSet(options.dirLightMapEnabled, 'LIT_DIR_LIGHTMAP');\n\t\t\t\tthis.fDefineSet(options.skyboxIntensity > 0, 'LIT_SKYBOX_INTENSITY');\n\t\t\t\tthis.fDefineSet(options.clusteredLightingShadowsEnabled, 'LIT_CLUSTERED_SHADOWS');\n\t\t\t\tthis.fDefineSet(options.clusteredLightingAreaLightsEnabled, 'LIT_CLUSTERED_AREA_LIGHTS');\n\t\t\t\tthis.fDefineSet(hasTBN, 'LIT_TBN');\n\t\t\t\tthis.fDefineSet(addAmbient, 'LIT_ADD_AMBIENT');\n\t\t\t\tthis.fDefineSet(options.hasTangents, 'LIT_TANGENTS');\n\t\t\t\tthis.fDefineSet(options.useNormals, 'LIT_USE_NORMALS');\n\t\t\t\tthis.fDefineSet(options.useClearCoatNormals, 'LIT_USE_CLEARCOAT_NORMALS');\n\t\t\t\tthis.fDefineSet(options.useRefraction, 'LIT_REFRACTION');\n\t\t\t\tthis.fDefineSet(options.useDynamicRefraction, 'LIT_DYNAMIC_REFRACTION');\n\t\t\t\tthis.fDefineSet(options.dispersion, 'LIT_DISPERSION');\n\t\t\t\tthis.fDefineSet(options.useHeights, 'LIT_HEIGHTS');\n\t\t\t\tthis.fDefineSet(options.opacityFadesSpecular, 'LIT_OPACITY_FADES_SPECULAR');\n\t\t\t\tthis.fDefineSet(options.alphaToCoverage, 'LIT_ALPHA_TO_COVERAGE');\n\t\t\t\tthis.fDefineSet(options.alphaTest, 'LIT_ALPHA_TEST');\n\t\t\t\tthis.fDefineSet(options.useMsdf, 'LIT_MSDF');\n\t\t\t\tthis.fDefineSet(options.ssao, 'LIT_SSAO');\n\t\t\t\tthis.fDefineSet(options.useAo, 'LIT_AO');\n\t\t\t\tthis.fDefineSet(options.occludeDirect, 'LIT_OCCLUDE_DIRECT');\n\t\t\t\tthis.fDefineSet(options.msdfTextAttribute, 'LIT_MSDF_TEXT_ATTRIBUTE');\n\t\t\t\tthis.fDefineSet(options.diffuseMapEnabled, 'LIT_DIFFUSE_MAP');\n\t\t\t\tthis.fDefineSet(options.shadowCatcher, 'LIT_SHADOW_CATCHER');\n\t\t\t\tthis.fDefineSet(true, 'LIT_FRESNEL_MODEL', fresnelNames[options.fresnelModel]);\n\t\t\t\tthis.fDefineSet(true, 'LIT_NONE_SLICE_MODE', spriteRenderModeNames[options.nineSlicedMode]);\n\t\t\t\tthis.fDefineSet(true, 'LIT_BLEND_TYPE', blendNames[options.blendType]);\n\t\t\t\tthis.fDefineSet(true, 'LIT_CUBEMAP_PROJECTION', cubemaProjectionNames[options.cubeMapProjection]);\n\t\t\t\tthis.fDefineSet(true, 'LIT_OCCLUDE_SPECULAR', specularOcclusionNames[options.occludeSpecular]);\n\t\t\t\tthis.fDefineSet(true, 'LIT_REFLECTION_SOURCE', reflectionSrcNames[options.reflectionSource]);\n\t\t\t\tthis.fDefineSet(true, 'LIT_AMBIENT_SOURCE', ambientSrcNames[options.ambientSource]);\n\t\t\t\tthis.fDefineSet(true, '{lightingUv}', lightingUv ?? '');\n\t\t\t\tthis.fDefineSet(true, '{reflectionDecode}', ChunkUtils.decodeFunc(options.reflectionEncoding));\n\t\t\t\tthis.fDefineSet(true, '{reflectionCubemapDecode}', ChunkUtils.decodeFunc(options.reflectionCubemapEncoding));\n\t\t\t\tthis.fDefineSet(true, '{ambientDecode}', ChunkUtils.decodeFunc(options.ambientEncoding));\n\t\t\t\tthis._setupLightingDefines(hasAreaLights, options.clusteredLightingEnabled);\n\t\t}\n\t\tprepareShadowPass() {\n\t\t\t\tconst { options } = this;\n\t\t\t\tconst lightType = this.shaderPassInfo.lightType;\n\t\t\t\tconst shadowType = this.shaderPassInfo.shadowType;\n\t\t\t\tconst shadowInfo = shadowTypeInfo.get(shadowType);\n\t\t\t\tconst usePerspectiveDepth = lightType === LIGHTTYPE_DIRECTIONAL || !shadowInfo.vsm && lightType === LIGHTTYPE_SPOT;\n\t\t\t\tthis.fDefineSet(usePerspectiveDepth, 'PERSPECTIVE_DEPTH');\n\t\t\t\tthis.fDefineSet(true, 'LIGHT_TYPE', `${lightTypeNames[lightType]}`);\n\t\t\t\tthis.fDefineSet(true, 'SHADOW_TYPE', `${shadowInfo.name}`);\n\t\t\t\tthis.fDefineSet(options.alphaTest, 'LIT_ALPHA_TEST');\n\t\t}\n\t\tgenerateFragmentShader(frontendDecl, frontendCode, lightingUv) {\n\t\t\t\tconst options = this.options;\n\t\t\t\tthis.includes.set('frontendDeclPS', frontendDecl ?? '');\n\t\t\t\tthis.includes.set('frontendCodePS', frontendCode ?? '');\n\t\t\t\tif (options.pass === SHADER_PICK || options.pass === SHADER_PREPASS) ; else if (this.shadowPass) {\n\t\t\t\t\t\tthis.prepareShadowPass();\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.prepareForwardPass(lightingUv);\n\t\t\t\t}\n\t\t\t\tthis.fshader = `\n\t\t\t\t\t\t#include \"litMainPS\"\n\t\t\t\t`;\n\t\t}\n}\n\nconst LitOptionsUtils = {\n\t\tgenerateKey (options) {\n\t\t\t\treturn `lit${Object.keys(options).sort().map((key)=>{\n\t\t\t\t\t\tif (key === 'shaderChunks') {\n\t\t\t\t\t\t\t\treturn options.shaderChunks?.key ?? '';\n\t\t\t\t\t\t} else if (key === 'lights') {\n\t\t\t\t\t\t\t\treturn LitOptionsUtils.generateLightsKey(options);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn key + options[key];\n\t\t\t\t}).join('\\n')}`;\n\t\t},\n\t\tgenerateLightsKey (options) {\n\t\t\t\treturn `lights:${options.lights.map((light)=>{\n\t\t\t\t\t\treturn !options.clusteredLightingEnabled || light._type === LIGHTTYPE_DIRECTIONAL ? `${light.key},` : '';\n\t\t\t\t}).join('')}`;\n\t\t}\n};\n\nconst dummyUvs = [\n\t\t0,\n\t\t1,\n\t\t2,\n\t\t3,\n\t\t4,\n\t\t5,\n\t\t6,\n\t\t7\n];\nclass ShaderGeneratorLit extends ShaderGenerator {\n\t\tgenerateKey(options) {\n\t\t\t\tconst definesHash = ShaderGenerator.definesHash(options.defines);\n\t\t\t\tconst glslHash = hashCode(options.shaderChunkGLSL ?? '');\n\t\t\t\tconst wgslHash = hashCode(options.shaderChunkWGSL ?? '');\n\t\t\t\tconst loHash = LitOptionsUtils.generateKey(options.litOptions);\n\t\t\t\tconst uvOptions = `${dummyUvs.map((dummy, index)=>{\n\t\t\t\t\t\treturn options.usedUvs[index] ? '1' : '0';\n\t\t\t\t}).join('')}`;\n\t\t\t\treturn `lit_${definesHash}_${uvOptions}_${glslHash}_${wgslHash}_${loHash}`;\n\t\t}\n\t\tcreateShaderDefinition(device, options) {\n\t\t\t\tconst allowWGSL = !!options.shaderChunkWGSL;\n\t\t\t\tconst litShader = new LitShader(device, options.litOptions, allowWGSL);\n\t\t\t\tconst definitionOptions = {\n\t\t\t\t\t\tname: 'LitShader',\n\t\t\t\t\t\tshaderLanguage: litShader.shaderLanguage,\n\t\t\t\t\t\ttag: litShader.shaderPassInfo.isForward ? SHADERTAG_MATERIAL : undefined\n\t\t\t\t};\n\t\t\t\tconst usedUvSets = options.usedUvs || [\n\t\t\t\t\t\ttrue\n\t\t\t\t];\n\t\t\t\tconst mapTransforms = [];\n\t\t\t\tlitShader.generateVertexShader(usedUvSets, usedUvSets, mapTransforms);\n\t\t\t\tlitShader.generateFragmentShader('', litShader.shaderLanguage === SHADERLANGUAGE_WGSL ? options.shaderChunkWGSL : options.shaderChunkGLSL, 'vUv0');\n\t\t\t\tconst includes = MapUtils.merge(litShader.chunks, litShader.includes);\n\t\t\t\tconst vDefines = litShader.vDefines;\n\t\t\t\toptions.defines.forEach((value, key)=>vDefines.set(key, value));\n\t\t\t\tconst fDefines = litShader.fDefines;\n\t\t\t\toptions.defines.forEach((value, key)=>fDefines.set(key, value));\n\t\t\t\tdefinitionOptions.attributes = litShader.attributes;\n\t\t\t\tdefinitionOptions.vertexCode = litShader.vshader;\n\t\t\t\tdefinitionOptions.vertexIncludes = includes;\n\t\t\t\tdefinitionOptions.vertexDefines = vDefines;\n\t\t\t\tdefinitionOptions.fragmentCode = litShader.fshader;\n\t\t\t\tdefinitionOptions.fragmentIncludes = includes;\n\t\t\t\tdefinitionOptions.fragmentDefines = fDefines;\n\t\t\t\treturn ShaderDefinitionUtils.createDefinition(device, definitionOptions);\n\t\t}\n}\nconst lit = new ShaderGeneratorLit();\n\nconst options = new LitMaterialOptions();\nclass LitMaterial extends Material {\n\t\tgetShaderVariant(params) {\n\t\t\t\toptions.usedUvs = this.usedUvs.slice();\n\t\t\t\toptions.shaderChunkGLSL = this.shaderChunkGLSL;\n\t\t\t\toptions.shaderChunkWGSL = this.shaderChunkWGSL;\n\t\t\t\toptions.defines = ShaderUtils.getCoreDefines(this, params);\n\t\t\t\tLitMaterialOptionsBuilder.update(options.litOptions, this, params.scene, params.cameraShaderParams, params.objDefs, params.pass, params.sortedLights);\n\t\t\t\tconst processingOptions = new ShaderProcessorOptions(params.viewUniformFormat, params.viewBindGroupFormat, params.vertexFormat);\n\t\t\t\tconst library = getProgramLibrary(params.device);\n\t\t\t\tlibrary.register('lit', lit);\n\t\t\t\tconst shader = library.getProgram('lit', options, processingOptions, this.userId);\n\t\t\t\treturn shader;\n\t\t}\n\t\tconstructor(...args){\n\t\t\t\tsuper(...args), this.usedUvs = [\n\t\t\t\t\t\ttrue\n\t\t\t\t], this.shaderChunkGLSL = null, this.shaderChunkWGSL = null, this.useLighting = true, this.useFog = true, this.useTonemap = true, this.useSkybox = true, this.ambientSH = null, this.pixelSnap = false, this.nineSlicedMode = null, this.twoSidedLighting = false, this.occludeDirect = false, this.occludeSpecular = SPECOCC_AO, this.occludeSpecularIntensity = 1, this.opacityFadesSpecular = true, this.opacityDither = DITHER_NONE, this.opacityShadowDither = DITHER_NONE, this.shadowCatcher = false, this.ggxSpecular = false, this.fresnelModel = FRESNEL_SCHLICK, this.dynamicRefraction = false, this.hasAo = false, this.hasSpecular = false, this.hasSpecularityFactor = false, this.hasLighting = false, this.hasHeights = false, this.hasNormals = false, this.hasSheen = false, this.hasRefraction = false, this.hasIrridescence = false, this.hasMetalness = false, this.hasClearCoat = false, this.hasClearCoatNormals = false;\n\t\t}\n}\n\nclass StandardMaterialOptions {\n\t\tget pass() {\n\t\t\t\treturn this.litOptions.pass;\n\t\t}\n\t\tconstructor(){\n\t\t\t\tthis.defines = new Map();\n\t\t\t\tthis.forceUv1 = false;\n\t\t\t\tthis.specularTint = false;\n\t\t\t\tthis.metalnessTint = false;\n\t\t\t\tthis.glossTint = false;\n\t\t\t\tthis.emissiveEncoding = 'linear';\n\t\t\t\tthis.lightMapEncoding = 'linear';\n\t\t\t\tthis.packedNormal = false;\n\t\t\t\tthis.normalDetailPackedNormal = false;\n\t\t\t\tthis.clearCoatPackedNormal = false;\n\t\t\t\tthis.glossInvert = false;\n\t\t\t\tthis.sheenGlossInvert = false;\n\t\t\t\tthis.clearCoatGlossInvert = false;\n\t\t\t\tthis.useAO = false;\n\t\t\t\tthis.litOptions = new LitShaderOptions();\n\t\t}\n}\n\nconst _matTex2D = [];\nconst buildPropertiesList = (options)=>{\n\t\treturn Object.keys(options).filter((key)=>key !== 'litOptions').sort();\n};\nclass ShaderGeneratorStandard extends ShaderGenerator {\n\t\tgenerateKey(options) {\n\t\t\t\tlet props;\n\t\t\t\tif (options === this.optionsContextMin) {\n\t\t\t\t\t\tif (!this.propsMin) this.propsMin = buildPropertiesList(options);\n\t\t\t\t\t\tprops = this.propsMin;\n\t\t\t\t} else if (options === this.optionsContext) {\n\t\t\t\t\t\tif (!this.props) this.props = buildPropertiesList(options);\n\t\t\t\t\t\tprops = this.props;\n\t\t\t\t} else {\n\t\t\t\t\t\tprops = buildPropertiesList(options);\n\t\t\t\t}\n\t\t\t\tconst definesHash = ShaderGenerator.definesHash(options.defines);\n\t\t\t\tconst key = `standard:\\n${definesHash}\\n${props.map((prop)=>prop + options[prop]).join('\\n')}${LitOptionsUtils.generateKey(options.litOptions)}`;\n\t\t\t\treturn key;\n\t\t}\n\t\t_getUvSourceExpression(transformPropName, uVPropName, options) {\n\t\t\t\tconst transformId = options[transformPropName];\n\t\t\t\tconst uvChannel = options[uVPropName];\n\t\t\t\tconst isMainPass = options.litOptions.pass === SHADER_FORWARD;\n\t\t\t\tlet expression;\n\t\t\t\tif (isMainPass && options.litOptions.nineSlicedMode === SPRITE_RENDERMODE_SLICED) {\n\t\t\t\t\t\texpression = 'nineSlicedUv';\n\t\t\t\t} else if (isMainPass && options.litOptions.nineSlicedMode === SPRITE_RENDERMODE_TILED) {\n\t\t\t\t\t\texpression = 'nineSlicedUv';\n\t\t\t\t} else {\n\t\t\t\t\t\tif (transformId === 0) {\n\t\t\t\t\t\t\t\texpression = `vUv${uvChannel}`;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\texpression = `vUV${uvChannel}_${transformId}`;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (options.heightMap && transformPropName !== 'heightMapTransform') {\n\t\t\t\t\t\t\t\texpression += ' + dUvOffset';\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn expression;\n\t\t}\n\t\t_validateMapChunk(propName, chunkName, chunks) {}\n\t\t_addMapDefines(fDefines, propName, chunkName, options, chunks, mapping, encoding = null) {\n\t\t\t\tconst mapPropName = `${propName}Map`;\n\t\t\t\tconst propNameCaps = propName.toUpperCase();\n\t\t\t\tconst uVPropName = `${mapPropName}Uv`;\n\t\t\t\tconst identifierPropName = `${mapPropName}Identifier`;\n\t\t\t\tconst transformPropName = `${mapPropName}Transform`;\n\t\t\t\tconst channelPropName = `${mapPropName}Channel`;\n\t\t\t\tconst vertexColorChannelPropName = `${propName}VertexColorChannel`;\n\t\t\t\tconst tintPropName = `${propName}Tint`;\n\t\t\t\tconst vertexColorPropName = `${propName}VertexColor`;\n\t\t\t\tconst detailModePropName = `${propName}Mode`;\n\t\t\t\tconst invertName = `${propName}Invert`;\n\t\t\t\tconst tintOption = options[tintPropName];\n\t\t\t\tconst vertexColorOption = options[vertexColorPropName];\n\t\t\t\tconst textureOption = options[mapPropName];\n\t\t\t\tconst textureIdentifier = options[identifierPropName];\n\t\t\t\tconst detailModeOption = options[detailModePropName];\n\t\t\t\tconst chunkCode = chunks.get(chunkName);\n\t\t\t\tif (textureOption) {\n\t\t\t\t\t\tfDefines.set(`STD_${propNameCaps}_TEXTURE`, '');\n\t\t\t\t\t\tconst uv = this._getUvSourceExpression(transformPropName, uVPropName, options);\n\t\t\t\t\t\tfDefines.set(`{STD_${propNameCaps}_TEXTURE_UV}`, uv);\n\t\t\t\t\t\tfDefines.set(`{STD_${propNameCaps}_TEXTURE_CHANNEL}`, options[channelPropName]);\n\t\t\t\t\t\tconst textureId = `{STD_${propNameCaps}_TEXTURE_NAME}`;\n\t\t\t\t\t\tif (chunkCode.includes(textureId)) {\n\t\t\t\t\t\t\t\tlet samplerName = `texture_${mapPropName}`;\n\t\t\t\t\t\t\t\tconst alias = mapping[textureIdentifier];\n\t\t\t\t\t\t\t\tif (alias) {\n\t\t\t\t\t\t\t\t\t\tsamplerName = alias;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tmapping[textureIdentifier] = samplerName;\n\t\t\t\t\t\t\t\t\t\tfDefines.set(`STD_${propNameCaps}_TEXTURE_ALLOCATE`, '');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tfDefines.set(textureId, samplerName);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (encoding) {\n\t\t\t\t\t\t\t\tconst textureDecode = options[channelPropName] === 'aaa' ? 'passThrough' : ChunkUtils.decodeFunc(encoding);\n\t\t\t\t\t\t\t\tfDefines.set(`{STD_${propNameCaps}_TEXTURE_DECODE}`, textureDecode);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (vertexColorOption) {\n\t\t\t\t\t\tfDefines.set(`STD_${propNameCaps}_VERTEX`, '');\n\t\t\t\t\t\tfDefines.set(`{STD_${propNameCaps}_VERTEX_CHANNEL}`, options[vertexColorChannelPropName]);\n\t\t\t\t}\n\t\t\t\tif (detailModeOption) {\n\t\t\t\t\t\tfDefines.set(`{STD_${propNameCaps}_DETAILMODE}`, detailModeOption);\n\t\t\t\t}\n\t\t\t\tif (tintOption) {\n\t\t\t\t\t\tfDefines.set(`STD_${propNameCaps}_CONSTANT`, '');\n\t\t\t\t}\n\t\t\t\tif (!!options[invertName]) {\n\t\t\t\t\t\tfDefines.set(`STD_${propNameCaps}_INVERT`, '');\n\t\t\t\t}\n\t\t}\n\t\t_correctChannel(p, chan, _matTex2D) {\n\t\t\t\tif (_matTex2D[p] > 0) {\n\t\t\t\t\t\tif (_matTex2D[p] < chan.length) {\n\t\t\t\t\t\t\t\treturn chan.substring(0, _matTex2D[p]);\n\t\t\t\t\t\t} else if (_matTex2D[p] > chan.length) {\n\t\t\t\t\t\t\t\tlet str = chan;\n\t\t\t\t\t\t\t\tconst chr = str.charAt(str.length - 1);\n\t\t\t\t\t\t\t\tconst addLen = _matTex2D[p] - str.length;\n\t\t\t\t\t\t\t\tfor(let i = 0; i < addLen; i++)str += chr;\n\t\t\t\t\t\t\t\treturn str;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn chan;\n\t\t\t\t}\n\t\t}\n\t\tcreateVertexShader(litShader, options) {\n\t\t\t\tconst useUv = [];\n\t\t\t\tconst useUnmodifiedUv = [];\n\t\t\t\tconst mapTransforms = [];\n\t\t\t\tconst maxUvSets = 2;\n\t\t\t\tfor(const p in _matTex2D){\n\t\t\t\t\t\tconst mapName = `${p}Map`;\n\t\t\t\t\t\tif (options[`${p}VertexColor`]) {\n\t\t\t\t\t\t\t\tconst colorChannelName = `${p}VertexColorChannel`;\n\t\t\t\t\t\t\t\toptions[colorChannelName] = this._correctChannel(p, options[colorChannelName], _matTex2D);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (options[mapName]) {\n\t\t\t\t\t\t\t\tconst channelName = `${mapName}Channel`;\n\t\t\t\t\t\t\t\tconst transformName = `${mapName}Transform`;\n\t\t\t\t\t\t\t\tconst uvName = `${mapName}Uv`;\n\t\t\t\t\t\t\t\toptions[uvName] = Math.min(options[uvName], maxUvSets - 1);\n\t\t\t\t\t\t\t\toptions[channelName] = this._correctChannel(p, options[channelName], _matTex2D);\n\t\t\t\t\t\t\t\tconst uvSet = options[uvName];\n\t\t\t\t\t\t\t\tuseUv[uvSet] = true;\n\t\t\t\t\t\t\t\tuseUnmodifiedUv[uvSet] = useUnmodifiedUv[uvSet] || options[mapName] && !options[transformName];\n\t\t\t\t\t\t\t\tif (options[transformName]) {\n\t\t\t\t\t\t\t\t\t\tmapTransforms.push({\n\t\t\t\t\t\t\t\t\t\t\t\tname: p,\n\t\t\t\t\t\t\t\t\t\t\t\tid: options[transformName],\n\t\t\t\t\t\t\t\t\t\t\t\tuv: options[uvName]\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (options.forceUv1) {\n\t\t\t\t\t\tuseUv[1] = true;\n\t\t\t\t\t\tuseUnmodifiedUv[1] = useUnmodifiedUv[1] !== undefined ? useUnmodifiedUv[1] : true;\n\t\t\t\t}\n\t\t\t\tlitShader.generateVertexShader(useUv, useUnmodifiedUv, mapTransforms);\n\t\t}\n\t\tprepareFragmentDefines(options, fDefines, shaderPassInfo) {\n\t\t\t\tconst fDefineSet = (condition, name, value = '')=>{\n\t\t\t\t\t\tif (condition) {\n\t\t\t\t\t\t\t\tfDefines.set(name, value);\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tfDefineSet(options.lightMap, 'STD_LIGHTMAP', '');\n\t\t\t\tfDefineSet(options.lightVertexColor, 'STD_LIGHT_VERTEX_COLOR', '');\n\t\t\t\tfDefineSet(options.dirLightMap && options.litOptions.useSpecular, 'STD_LIGHTMAP_DIR', '');\n\t\t\t\tfDefineSet(options.heightMap, 'STD_HEIGHT_MAP', '');\n\t\t\t\tfDefineSet(options.useSpecularColor, 'STD_SPECULAR_COLOR', '');\n\t\t\t\tfDefineSet(options.aoMap || options.aoVertexColor || options.useAO, 'STD_AO', '');\n\t\t\t\tfDefineSet(true, 'STD_OPACITY_DITHER', ditherNames[shaderPassInfo.isForward ? options.litOptions.opacityDither : options.litOptions.opacityShadowDither]);\n\t\t}\n\t\tcreateShaderDefinition(device, options) {\n\t\t\t\tconst shaderPassInfo = ShaderPass.get(device).getByIndex(options.litOptions.pass);\n\t\t\t\tconst isForwardPass = shaderPassInfo.isForward;\n\t\t\t\tconst litShader = new LitShader(device, options.litOptions);\n\t\t\t\tthis.createVertexShader(litShader, options);\n\t\t\t\tconst textureMapping = {};\n\t\t\t\toptions.litOptions.fresnelModel = options.litOptions.fresnelModel === 0 ? FRESNEL_SCHLICK : options.litOptions.fresnelModel;\n\t\t\t\tconst fDefines = litShader.fDefines;\n\t\t\t\tthis.prepareFragmentDefines(options, fDefines, shaderPassInfo);\n\t\t\t\tlet lightingUv = '';\n\t\t\t\tif (isForwardPass) {\n\t\t\t\t\t\tif (options.heightMap) {\n\t\t\t\t\t\t\t\tthis._addMapDefines(fDefines, 'height', 'parallaxPS', options, litShader.chunks, textureMapping);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (options.litOptions.blendType !== BLEND_NONE || options.litOptions.alphaTest || options.litOptions.alphaToCoverage || options.litOptions.opacityDither !== DITHER_NONE) {\n\t\t\t\t\t\t\t\tthis._addMapDefines(fDefines, 'opacity', 'opacityPS', options, litShader.chunks, textureMapping);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (litShader.needsNormal) {\n\t\t\t\t\t\t\t\tif (options.normalMap || options.clearCoatNormalMap) {\n\t\t\t\t\t\t\t\t\t\tif (!options.litOptions.hasTangents) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst baseName = options.normalMap ? 'normalMap' : 'clearCoatNormalMap';\n\t\t\t\t\t\t\t\t\t\t\t\tlightingUv = this._getUvSourceExpression(`${baseName}Transform`, `${baseName}Uv`, options);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis._addMapDefines(fDefines, 'normalDetail', 'normalMapPS', options, litShader.chunks, textureMapping, options.normalDetailPackedNormal ? 'xy' : 'xyz');\n\t\t\t\t\t\t\t\tthis._addMapDefines(fDefines, 'normal', 'normalMapPS', options, litShader.chunks, textureMapping, options.packedNormal ? 'xy' : 'xyz');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (options.diffuseDetail) {\n\t\t\t\t\t\t\t\tthis._addMapDefines(fDefines, 'diffuseDetail', 'diffusePS', options, litShader.chunks, textureMapping, options.diffuseDetailEncoding);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._addMapDefines(fDefines, 'diffuse', 'diffusePS', options, litShader.chunks, textureMapping, options.diffuseEncoding);\n\t\t\t\t\t\tif (options.litOptions.useRefraction) {\n\t\t\t\t\t\t\t\tthis._addMapDefines(fDefines, 'refraction', 'transmissionPS', options, litShader.chunks, textureMapping);\n\t\t\t\t\t\t\t\tthis._addMapDefines(fDefines, 'thickness', 'thicknessPS', options, litShader.chunks, textureMapping);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (options.litOptions.useIridescence) {\n\t\t\t\t\t\t\t\tthis._addMapDefines(fDefines, 'iridescence', 'iridescencePS', options, litShader.chunks, textureMapping);\n\t\t\t\t\t\t\t\tthis._addMapDefines(fDefines, 'iridescenceThickness', 'iridescenceThicknessPS', options, litShader.chunks, textureMapping);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (litShader.lighting && options.litOptions.useSpecular || litShader.reflections) {\n\t\t\t\t\t\t\t\tif (options.litOptions.useSheen) {\n\t\t\t\t\t\t\t\t\t\tthis._addMapDefines(fDefines, 'sheen', 'sheenPS', options, litShader.chunks, textureMapping, options.sheenEncoding);\n\t\t\t\t\t\t\t\t\t\tthis._addMapDefines(fDefines, 'sheenGloss', 'sheenGlossPS', options, litShader.chunks, textureMapping);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (options.litOptions.useMetalness) {\n\t\t\t\t\t\t\t\t\t\tthis._addMapDefines(fDefines, 'metalness', 'metalnessPS', options, litShader.chunks, textureMapping);\n\t\t\t\t\t\t\t\t\t\tthis._addMapDefines(fDefines, 'ior', 'iorPS', options, litShader.chunks, textureMapping);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (options.litOptions.useSpecularityFactor) {\n\t\t\t\t\t\t\t\t\t\tthis._addMapDefines(fDefines, 'specularityFactor', 'specularityFactorPS', options, litShader.chunks, textureMapping);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (options.useSpecularColor) {\n\t\t\t\t\t\t\t\t\t\tthis._addMapDefines(fDefines, 'specular', 'specularPS', options, litShader.chunks, textureMapping, options.specularEncoding);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis._addMapDefines(fDefines, 'gloss', 'glossPS', options, litShader.chunks, textureMapping);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (options.aoDetail) {\n\t\t\t\t\t\t\t\tthis._addMapDefines(fDefines, 'aoDetail', 'aoPS', options, litShader.chunks, textureMapping);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (options.aoMap || options.aoVertexColor || options.useAO) {\n\t\t\t\t\t\t\t\tthis._addMapDefines(fDefines, 'ao', 'aoPS', options, litShader.chunks, textureMapping);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._addMapDefines(fDefines, 'emissive', 'emissivePS', options, litShader.chunks, textureMapping, options.emissiveEncoding);\n\t\t\t\t\t\tif (options.litOptions.useClearCoat) {\n\t\t\t\t\t\t\t\tthis._addMapDefines(fDefines, 'clearCoat', 'clearCoatPS', options, litShader.chunks, textureMapping);\n\t\t\t\t\t\t\t\tthis._addMapDefines(fDefines, 'clearCoatGloss', 'clearCoatGlossPS', options, litShader.chunks, textureMapping);\n\t\t\t\t\t\t\t\tthis._addMapDefines(fDefines, 'clearCoatNormal', 'clearCoatNormalPS', options, litShader.chunks, textureMapping, options.clearCoatPackedNormal ? 'xy' : 'xyz');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (options.litOptions.enableGGXSpecular) {\n\t\t\t\t\t\t\t\tthis._addMapDefines(fDefines, 'anisotropy', 'anisotropyPS', options, litShader.chunks, textureMapping);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (options.lightMap || options.lightVertexColor) {\n\t\t\t\t\t\t\t\tthis._addMapDefines(fDefines, 'light', 'lightmapPS', options, litShader.chunks, textureMapping, options.lightMapEncoding);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tconst opacityShadowDither = options.litOptions.opacityShadowDither;\n\t\t\t\t\t\tif (options.litOptions.alphaTest || opacityShadowDither) {\n\t\t\t\t\t\t\t\tthis._addMapDefines(fDefines, 'opacity', 'opacityPS', options, litShader.chunks, textureMapping);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tlitShader.generateFragmentShader(litShader.chunks.get('stdDeclarationPS'), litShader.chunks.get('stdFrontEndPS'), lightingUv);\n\t\t\t\tconst includes = MapUtils.merge(litShader.chunks, litShader.includes);\n\t\t\t\tconst vDefines = litShader.vDefines;\n\t\t\t\toptions.defines.forEach((value, key)=>vDefines.set(key, value));\n\t\t\t\toptions.defines.forEach((value, key)=>fDefines.set(key, value));\n\t\t\t\tconst definition = ShaderDefinitionUtils.createDefinition(device, {\n\t\t\t\t\t\tname: 'StandardShader',\n\t\t\t\t\t\tattributes: litShader.attributes,\n\t\t\t\t\t\tshaderLanguage: litShader.shaderLanguage,\n\t\t\t\t\t\tvertexCode: litShader.vshader,\n\t\t\t\t\t\tfragmentCode: litShader.fshader,\n\t\t\t\t\t\tvertexIncludes: includes,\n\t\t\t\t\t\tfragmentIncludes: includes,\n\t\t\t\t\t\tfragmentDefines: fDefines,\n\t\t\t\t\t\tvertexDefines: vDefines\n\t\t\t\t});\n\t\t\t\tif (litShader.shaderPassInfo.isForward) {\n\t\t\t\t\t\tdefinition.tag = SHADERTAG_MATERIAL;\n\t\t\t\t}\n\t\t\t\treturn definition;\n\t\t}\n\t\tconstructor(...args){\n\t\t\t\tsuper(...args), this.optionsContext = new StandardMaterialOptions(), this.optionsContextMin = new StandardMaterialOptions();\n\t\t}\n}\nconst standard = new ShaderGeneratorStandard();\n\nconst arraysEqual = (a, b)=>{\n\t\tif (a.length !== b.length) {\n\t\t\t\treturn false;\n\t\t}\n\t\tfor(let i = 0; i < a.length; ++i){\n\t\t\t\tif (a[i] !== b[i]) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t}\n\t\treturn true;\n};\nconst notWhite = (color)=>{\n\t\treturn color.r !== 1 || color.g !== 1 || color.b !== 1;\n};\nconst notBlack = (color)=>{\n\t\treturn color.r !== 0 || color.g !== 0 || color.b !== 0;\n};\nclass StandardMaterialOptionsBuilder {\n\t\tconstructor(){\n\t\t\t\tthis._mapXForms = null;\n\t\t}\n\t\tupdateMinRef(options, scene, stdMat, objDefs, pass, sortedLights) {\n\t\t\t\tthis._updateSharedOptions(options, scene, stdMat, objDefs, pass);\n\t\t\t\tthis._updateMinOptions(options, stdMat, pass);\n\t\t\t\tthis._updateUVOptions(options, stdMat, objDefs, true);\n\t\t}\n\t\tupdateRef(options, scene, cameraShaderParams, stdMat, objDefs, pass, sortedLights) {\n\t\t\t\tthis._updateSharedOptions(options, scene, stdMat, objDefs, pass);\n\t\t\t\tthis._updateEnvOptions(options, stdMat, scene, cameraShaderParams);\n\t\t\t\tthis._updateMaterialOptions(options, stdMat, scene);\n\t\t\t\toptions.litOptions.hasTangents = objDefs && (objDefs & SHADERDEF_TANGENTS) !== 0;\n\t\t\t\tthis._updateLightOptions(options, scene, stdMat, objDefs, sortedLights);\n\t\t\t\tthis._updateUVOptions(options, stdMat, objDefs, false, cameraShaderParams);\n\t\t}\n\t\t_updateSharedOptions(options, scene, stdMat, objDefs, pass) {\n\t\t\t\toptions.forceUv1 = stdMat.forceUv1;\n\t\t\t\tif (stdMat.userAttributes) {\n\t\t\t\t\t\toptions.litOptions.userAttributes = Object.fromEntries(stdMat.userAttributes.entries());\n\t\t\t\t}\n\t\t\t\toptions.litOptions.shaderChunks = stdMat.shaderChunks;\n\t\t\t\toptions.litOptions.pass = pass;\n\t\t\t\toptions.litOptions.alphaTest = stdMat.alphaTest > 0;\n\t\t\t\toptions.litOptions.blendType = stdMat.blendType;\n\t\t\t\toptions.litOptions.screenSpace = objDefs && (objDefs & SHADERDEF_SCREENSPACE) !== 0;\n\t\t\t\toptions.litOptions.skin = objDefs && (objDefs & SHADERDEF_SKIN) !== 0;\n\t\t\t\toptions.litOptions.batch = objDefs && (objDefs & SHADERDEF_BATCH) !== 0;\n\t\t\t\toptions.litOptions.useInstancing = objDefs && (objDefs & SHADERDEF_INSTANCING) !== 0;\n\t\t\t\toptions.litOptions.useMorphPosition = objDefs && (objDefs & SHADERDEF_MORPH_POSITION) !== 0;\n\t\t\t\toptions.litOptions.useMorphNormal = objDefs && (objDefs & SHADERDEF_MORPH_NORMAL) !== 0;\n\t\t\t\toptions.litOptions.useMorphTextureBasedInt = objDefs && (objDefs & SHADERDEF_MORPH_TEXTURE_BASED_INT) !== 0;\n\t\t\t\toptions.litOptions.nineSlicedMode = stdMat.nineSlicedMode || 0;\n\t\t\t\tif (scene.clusteredLightingEnabled && stdMat.useLighting) {\n\t\t\t\t\t\toptions.litOptions.clusteredLightingEnabled = true;\n\t\t\t\t\t\toptions.litOptions.clusteredLightingCookiesEnabled = scene.lighting.cookiesEnabled;\n\t\t\t\t\t\toptions.litOptions.clusteredLightingShadowsEnabled = scene.lighting.shadowsEnabled;\n\t\t\t\t\t\toptions.litOptions.clusteredLightingShadowType = scene.lighting.shadowType;\n\t\t\t\t\t\toptions.litOptions.clusteredLightingAreaLightsEnabled = scene.lighting.areaLightsEnabled;\n\t\t\t\t} else {\n\t\t\t\t\t\toptions.litOptions.clusteredLightingEnabled = false;\n\t\t\t\t\t\toptions.litOptions.clusteredLightingCookiesEnabled = false;\n\t\t\t\t\t\toptions.litOptions.clusteredLightingShadowsEnabled = false;\n\t\t\t\t\t\toptions.litOptions.clusteredLightingAreaLightsEnabled = false;\n\t\t\t\t}\n\t\t}\n\t\t_updateUVOptions(options, stdMat, objDefs, minimalOptions, cameraShaderParams) {\n\t\t\t\tlet hasUv0 = false;\n\t\t\t\tlet hasUv1 = false;\n\t\t\t\tlet hasVcolor = false;\n\t\t\t\tif (objDefs) {\n\t\t\t\t\t\thasUv0 = (objDefs & SHADERDEF_UV0) !== 0;\n\t\t\t\t\t\thasUv1 = (objDefs & SHADERDEF_UV1) !== 0;\n\t\t\t\t\t\thasVcolor = (objDefs & SHADERDEF_VCOLOR) !== 0;\n\t\t\t\t}\n\t\t\t\toptions.litOptions.vertexColors = false;\n\t\t\t\tthis._mapXForms = [];\n\t\t\t\tconst uniqueTextureMap = {};\n\t\t\t\tfor(const p in _matTex2D){\n\t\t\t\t\t\tthis._updateTexOptions(options, stdMat, p, hasUv0, hasUv1, hasVcolor, minimalOptions, uniqueTextureMap);\n\t\t\t\t}\n\t\t\t\tthis._mapXForms = null;\n\t\t\t\toptions.litOptions.ssao = cameraShaderParams?.ssaoEnabled;\n\t\t\t\toptions.useAO = options.litOptions.ssao;\n\t\t\t\toptions.litOptions.lightMapEnabled = options.lightMap;\n\t\t\t\toptions.litOptions.dirLightMapEnabled = options.dirLightMap;\n\t\t\t\toptions.litOptions.useHeights = options.heightMap;\n\t\t\t\toptions.litOptions.useNormals = options.normalMap;\n\t\t\t\toptions.litOptions.useClearCoatNormals = options.clearCoatNormalMap;\n\t\t\t\toptions.litOptions.useAo = options.aoMap || options.aoVertexColor || options.litOptions.ssao;\n\t\t\t\toptions.litOptions.diffuseMapEnabled = options.diffuseMap;\n\t\t}\n\t\t_updateTexOptions(options, stdMat, p, hasUv0, hasUv1, hasVcolor, minimalOptions, uniqueTextureMap) {\n\t\t\t\tconst isOpacity = p === 'opacity';\n\t\t\t\tif (!minimalOptions || isOpacity) {\n\t\t\t\t\t\tconst mname = `${p}Map`;\n\t\t\t\t\t\tconst vname = `${p}VertexColor`;\n\t\t\t\t\t\tconst vcname = `${p}VertexColorChannel`;\n\t\t\t\t\t\tconst cname = `${mname}Channel`;\n\t\t\t\t\t\tconst tname = `${mname}Transform`;\n\t\t\t\t\t\tconst uname = `${mname}Uv`;\n\t\t\t\t\t\tconst iname = `${mname}Identifier`;\n\t\t\t\t\t\tif (p !== 'light') {\n\t\t\t\t\t\t\t\toptions[mname] = false;\n\t\t\t\t\t\t\t\toptions[iname] = undefined;\n\t\t\t\t\t\t\t\toptions[cname] = '';\n\t\t\t\t\t\t\t\toptions[tname] = 0;\n\t\t\t\t\t\t\t\toptions[uname] = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\toptions[vname] = false;\n\t\t\t\t\t\toptions[vcname] = '';\n\t\t\t\t\t\tif (isOpacity && stdMat.blendType === BLEND_NONE && stdMat.alphaTest === 0.0 && !stdMat.alphaToCoverage && stdMat.opacityDither === DITHER_NONE) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (p !== 'height' && stdMat[vname]) {\n\t\t\t\t\t\t\t\tif (hasVcolor) {\n\t\t\t\t\t\t\t\t\t\toptions[vname] = stdMat[vname];\n\t\t\t\t\t\t\t\t\t\toptions[vcname] = stdMat[vcname];\n\t\t\t\t\t\t\t\t\t\toptions.litOptions.vertexColors = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (stdMat[mname]) {\n\t\t\t\t\t\t\t\tlet allow = true;\n\t\t\t\t\t\t\t\tif (stdMat[uname] === 0 && !hasUv0) allow = false;\n\t\t\t\t\t\t\t\tif (stdMat[uname] === 1 && !hasUv1) allow = false;\n\t\t\t\t\t\t\t\tif (allow) {\n\t\t\t\t\t\t\t\t\t\tconst mapId = stdMat[mname].id;\n\t\t\t\t\t\t\t\t\t\tlet identifier = uniqueTextureMap[mapId];\n\t\t\t\t\t\t\t\t\t\tif (identifier === undefined) {\n\t\t\t\t\t\t\t\t\t\t\t\tuniqueTextureMap[mapId] = p;\n\t\t\t\t\t\t\t\t\t\t\t\tidentifier = p;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\toptions[mname] = !!stdMat[mname];\n\t\t\t\t\t\t\t\t\t\toptions[iname] = identifier;\n\t\t\t\t\t\t\t\t\t\toptions[tname] = this._getMapTransformID(stdMat.getUniform(tname), stdMat[uname]);\n\t\t\t\t\t\t\t\t\t\toptions[cname] = stdMat[cname];\n\t\t\t\t\t\t\t\t\t\toptions[uname] = stdMat[uname];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_updateMinOptions(options, stdMat, pass) {\n\t\t\t\tconst isPrepass = pass === SHADER_PREPASS;\n\t\t\t\toptions.litOptions.opacityShadowDither = isPrepass ? stdMat.opacityDither : stdMat.opacityShadowDither;\n\t\t\t\toptions.litOptions.linearDepth = isPrepass;\n\t\t\t\toptions.litOptions.lights = [];\n\t\t}\n\t\t_updateMaterialOptions(options, stdMat, scene) {\n\t\t\t\tconst useSpecular = !!(stdMat.useMetalness || stdMat.specularMap || stdMat.sphereMap || stdMat.cubeMap || notBlack(stdMat.specular) || stdMat.specularityFactor > 0 && stdMat.useMetalness || stdMat.enableGGXSpecular || stdMat.clearCoat > 0);\n\t\t\t\tconst useSpecularColor = !stdMat.useMetalness || stdMat.useMetalnessSpecularColor;\n\t\t\t\tconst specularTint = useSpecular && (stdMat.specularTint || !stdMat.specularMap && !stdMat.specularVertexColor) && notWhite(stdMat.specular);\n\t\t\t\tconst specularityFactorTint = useSpecular && stdMat.useMetalnessSpecularColor && (stdMat.specularityFactorTint || stdMat.specularityFactor < 1 && !stdMat.specularityFactorMap);\n\t\t\t\tconst isPackedNormalMap = (texture)=>texture ? texture.format === PIXELFORMAT_DXT5 || texture.type === TEXTURETYPE_SWIZZLEGGGR : false;\n\t\t\t\tconst equalish = (a, b)=>Math.abs(a - b) < 1e-4;\n\t\t\t\toptions.specularTint = specularTint;\n\t\t\t\toptions.specularityFactorTint = specularityFactorTint;\n\t\t\t\toptions.metalnessTint = stdMat.useMetalness && stdMat.metalness < 1;\n\t\t\t\toptions.glossTint = true;\n\t\t\t\toptions.diffuseEncoding = stdMat.diffuseMap?.encoding;\n\t\t\t\toptions.diffuseDetailEncoding = stdMat.diffuseDetailMap?.encoding;\n\t\t\t\toptions.emissiveEncoding = stdMat.emissiveMap?.encoding;\n\t\t\t\toptions.lightMapEncoding = stdMat.lightMap?.encoding;\n\t\t\t\toptions.packedNormal = isPackedNormalMap(stdMat.normalMap);\n\t\t\t\toptions.refractionTint = equalish(stdMat.refraction, 1.0);\n\t\t\t\toptions.refractionIndexTint = equalish(stdMat.refractionIndex, 1.0 / 1.5);\n\t\t\t\toptions.thicknessTint = stdMat.useDynamicRefraction && stdMat.thickness !== 1.0;\n\t\t\t\toptions.specularEncoding = stdMat.specularMap?.encoding;\n\t\t\t\toptions.sheenEncoding = stdMat.sheenMap?.encoding;\n\t\t\t\toptions.aoMapUv = stdMat.aoUvSet;\n\t\t\t\toptions.aoDetail = !!stdMat.aoDetailMap;\n\t\t\t\toptions.diffuseDetail = !!stdMat.diffuseDetailMap;\n\t\t\t\toptions.normalDetail = !!stdMat.normalMap;\n\t\t\t\toptions.normalDetailPackedNormal = isPackedNormalMap(stdMat.normalDetailMap);\n\t\t\t\toptions.diffuseDetailMode = stdMat.diffuseDetailMode;\n\t\t\t\toptions.aoDetailMode = stdMat.aoDetailMode;\n\t\t\t\toptions.clearCoatGloss = !!stdMat.clearCoatGloss;\n\t\t\t\toptions.clearCoatPackedNormal = isPackedNormalMap(stdMat.clearCoatNormalMap);\n\t\t\t\toptions.iorTint = equalish(stdMat.refractionIndex, 1.0 / 1.5);\n\t\t\t\tif (scene.forcePassThroughSpecular) {\n\t\t\t\t\t\toptions.specularEncoding = 'linear';\n\t\t\t\t\t\toptions.sheenEncoding = 'linear';\n\t\t\t\t}\n\t\t\t\toptions.iridescenceTint = stdMat.iridescence !== 1.0;\n\t\t\t\toptions.glossInvert = stdMat.glossInvert;\n\t\t\t\toptions.sheenGlossInvert = stdMat.sheenGlossInvert;\n\t\t\t\toptions.clearCoatGlossInvert = stdMat.clearCoatGlossInvert;\n\t\t\t\toptions.useSpecularColor = useSpecularColor;\n\t\t\t\toptions.litOptions.separateAmbient = false;\n\t\t\t\toptions.litOptions.pixelSnap = stdMat.pixelSnap;\n\t\t\t\toptions.litOptions.ambientSH = !!stdMat.ambientSH;\n\t\t\t\toptions.litOptions.twoSidedLighting = stdMat.twoSidedLighting;\n\t\t\t\toptions.litOptions.occludeSpecular = stdMat.occludeSpecular;\n\t\t\t\toptions.litOptions.occludeSpecularFloat = stdMat.occludeSpecularIntensity !== 1.0;\n\t\t\t\toptions.litOptions.useMsdf = !!stdMat.msdfMap;\n\t\t\t\toptions.litOptions.msdfTextAttribute = !!stdMat.msdfTextAttribute;\n\t\t\t\toptions.litOptions.alphaToCoverage = stdMat.alphaToCoverage;\n\t\t\t\toptions.litOptions.opacityFadesSpecular = stdMat.opacityFadesSpecular;\n\t\t\t\toptions.litOptions.opacityDither = stdMat.opacityDither;\n\t\t\t\toptions.litOptions.cubeMapProjection = stdMat.cubeMapProjection;\n\t\t\t\toptions.litOptions.occludeDirect = stdMat.occludeDirect;\n\t\t\t\toptions.litOptions.useSpecular = useSpecular;\n\t\t\t\toptions.litOptions.useSpecularityFactor = (specularityFactorTint || !!stdMat.specularityFactorMap) && stdMat.useMetalnessSpecularColor;\n\t\t\t\toptions.litOptions.enableGGXSpecular = stdMat.enableGGXSpecular;\n\t\t\t\toptions.litOptions.fresnelModel = stdMat.fresnelModel;\n\t\t\t\toptions.litOptions.useRefraction = (stdMat.refraction || !!stdMat.refractionMap) && (stdMat.useDynamicRefraction || options.litOptions.reflectionSource !== REFLECTIONSRC_NONE);\n\t\t\t\toptions.litOptions.useClearCoat = !!stdMat.clearCoat;\n\t\t\t\toptions.litOptions.useSheen = stdMat.useSheen;\n\t\t\t\toptions.litOptions.useIridescence = stdMat.useIridescence && stdMat.iridescence !== 0.0;\n\t\t\t\toptions.litOptions.useMetalness = stdMat.useMetalness;\n\t\t\t\toptions.litOptions.useDynamicRefraction = stdMat.useDynamicRefraction;\n\t\t\t\toptions.litOptions.dispersion = stdMat.dispersion > 0;\n\t\t\t\toptions.litOptions.shadowCatcher = stdMat.shadowCatcher;\n\t\t}\n\t\t_updateEnvOptions(options, stdMat, scene, cameraShaderParams) {\n\t\t\t\toptions.litOptions.fog = stdMat.useFog ? cameraShaderParams.fog : FOG_NONE;\n\t\t\t\toptions.litOptions.gamma = cameraShaderParams.shaderOutputGamma;\n\t\t\t\toptions.litOptions.toneMap = stdMat.useTonemap ? cameraShaderParams.toneMapping : TONEMAP_NONE;\n\t\t\t\tlet usingSceneEnv = false;\n\t\t\t\tif (stdMat.envAtlas && stdMat.cubeMap) {\n\t\t\t\t\t\toptions.litOptions.reflectionSource = REFLECTIONSRC_ENVATLASHQ;\n\t\t\t\t\t\toptions.litOptions.reflectionEncoding = stdMat.envAtlas.encoding;\n\t\t\t\t\t\toptions.litOptions.reflectionCubemapEncoding = stdMat.cubeMap.encoding;\n\t\t\t\t} else if (stdMat.envAtlas) {\n\t\t\t\t\t\toptions.litOptions.reflectionSource = REFLECTIONSRC_ENVATLAS;\n\t\t\t\t\t\toptions.litOptions.reflectionEncoding = stdMat.envAtlas.encoding;\n\t\t\t\t} else if (stdMat.cubeMap) {\n\t\t\t\t\t\toptions.litOptions.reflectionSource = REFLECTIONSRC_CUBEMAP;\n\t\t\t\t\t\toptions.litOptions.reflectionEncoding = stdMat.cubeMap.encoding;\n\t\t\t\t} else if (stdMat.sphereMap) {\n\t\t\t\t\t\toptions.litOptions.reflectionSource = REFLECTIONSRC_SPHEREMAP;\n\t\t\t\t\t\toptions.litOptions.reflectionEncoding = stdMat.sphereMap.encoding;\n\t\t\t\t} else if (stdMat.useSkybox && scene.envAtlas && scene.skybox) {\n\t\t\t\t\t\toptions.litOptions.reflectionSource = REFLECTIONSRC_ENVATLASHQ;\n\t\t\t\t\t\toptions.litOptions.reflectionEncoding = scene.envAtlas.encoding;\n\t\t\t\t\t\toptions.litOptions.reflectionCubemapEncoding = scene.skybox.encoding;\n\t\t\t\t\t\tusingSceneEnv = true;\n\t\t\t\t} else if (stdMat.useSkybox && scene.envAtlas) {\n\t\t\t\t\t\toptions.litOptions.reflectionSource = REFLECTIONSRC_ENVATLAS;\n\t\t\t\t\t\toptions.litOptions.reflectionEncoding = scene.envAtlas.encoding;\n\t\t\t\t\t\tusingSceneEnv = true;\n\t\t\t\t} else if (stdMat.useSkybox && scene.skybox) {\n\t\t\t\t\t\toptions.litOptions.reflectionSource = REFLECTIONSRC_CUBEMAP;\n\t\t\t\t\t\toptions.litOptions.reflectionEncoding = scene.skybox.encoding;\n\t\t\t\t\t\tusingSceneEnv = true;\n\t\t\t\t} else {\n\t\t\t\t\t\toptions.litOptions.reflectionSource = REFLECTIONSRC_NONE;\n\t\t\t\t\t\toptions.litOptions.reflectionEncoding = null;\n\t\t\t\t}\n\t\t\t\tif (stdMat.ambientSH) {\n\t\t\t\t\t\toptions.litOptions.ambientSource = AMBIENTSRC_AMBIENTSH;\n\t\t\t\t\t\toptions.litOptions.ambientEncoding = null;\n\t\t\t\t} else {\n\t\t\t\t\t\tconst envAtlas = stdMat.envAtlas || (stdMat.useSkybox && scene.envAtlas ? scene.envAtlas : null);\n\t\t\t\t\t\tif (envAtlas && !stdMat.sphereMap) {\n\t\t\t\t\t\t\t\toptions.litOptions.ambientSource = AMBIENTSRC_ENVALATLAS;\n\t\t\t\t\t\t\t\toptions.litOptions.ambientEncoding = envAtlas.encoding;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\toptions.litOptions.ambientSource = AMBIENTSRC_CONSTANT;\n\t\t\t\t\t\t\t\toptions.litOptions.ambientEncoding = null;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\toptions.litOptions.skyboxIntensity = usingSceneEnv;\n\t\t\t\toptions.litOptions.useCubeMapRotation = usingSceneEnv && scene._skyboxRotationShaderInclude;\n\t\t}\n\t\t_updateLightOptions(options, scene, stdMat, objDefs, sortedLights) {\n\t\t\t\toptions.lightMap = false;\n\t\t\t\toptions.lightMapChannel = '';\n\t\t\t\toptions.lightMapUv = 0;\n\t\t\t\toptions.lightMapTransform = 0;\n\t\t\t\toptions.litOptions.lightMapWithoutAmbient = false;\n\t\t\t\toptions.dirLightMap = false;\n\t\t\t\tif (objDefs) {\n\t\t\t\t\t\toptions.litOptions.noShadow = (objDefs & SHADERDEF_NOSHADOW) !== 0;\n\t\t\t\t\t\tif ((objDefs & SHADERDEF_LM) !== 0) {\n\t\t\t\t\t\t\t\toptions.lightMapEncoding = scene.lightmapPixelFormat === PIXELFORMAT_RGBA8 ? 'rgbm' : 'linear';\n\t\t\t\t\t\t\t\toptions.lightMap = true;\n\t\t\t\t\t\t\t\toptions.lightMapChannel = 'rgb';\n\t\t\t\t\t\t\t\toptions.lightMapUv = 1;\n\t\t\t\t\t\t\t\toptions.lightMapTransform = 0;\n\t\t\t\t\t\t\t\toptions.litOptions.lightMapWithoutAmbient = !stdMat.lightMap;\n\t\t\t\t\t\t\t\tif ((objDefs & SHADERDEF_DIRLM) !== 0) {\n\t\t\t\t\t\t\t\t\t\toptions.dirLightMap = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif ((objDefs & SHADERDEF_LMAMBIENT) !== 0) {\n\t\t\t\t\t\t\t\t\t\toptions.litOptions.lightMapWithoutAmbient = false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (stdMat.useLighting) {\n\t\t\t\t\t\tconst lightsFiltered = [];\n\t\t\t\t\t\tconst mask = objDefs ? objDefs >> 16 : MASK_AFFECT_DYNAMIC;\n\t\t\t\t\t\toptions.litOptions.lightMaskDynamic = !!(mask & MASK_AFFECT_DYNAMIC);\n\t\t\t\t\t\tif (sortedLights) {\n\t\t\t\t\t\t\t\tLitMaterialOptionsBuilder.collectLights(LIGHTTYPE_DIRECTIONAL, sortedLights[LIGHTTYPE_DIRECTIONAL], lightsFiltered, mask);\n\t\t\t\t\t\t\t\tif (!scene.clusteredLightingEnabled) {\n\t\t\t\t\t\t\t\t\t\tLitMaterialOptionsBuilder.collectLights(LIGHTTYPE_OMNI, sortedLights[LIGHTTYPE_OMNI], lightsFiltered, mask);\n\t\t\t\t\t\t\t\t\t\tLitMaterialOptionsBuilder.collectLights(LIGHTTYPE_SPOT, sortedLights[LIGHTTYPE_SPOT], lightsFiltered, mask);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\toptions.litOptions.lights = lightsFiltered;\n\t\t\t\t} else {\n\t\t\t\t\t\toptions.litOptions.lights = [];\n\t\t\t\t}\n\t\t\t\tif (options.litOptions.lights.length === 0 && !scene.clusteredLightingEnabled) {\n\t\t\t\t\t\toptions.litOptions.noShadow = true;\n\t\t\t\t}\n\t\t}\n\t\t_getMapTransformID(xform, uv) {\n\t\t\t\tif (!xform) return 0;\n\t\t\t\tlet xforms = this._mapXForms[uv];\n\t\t\t\tif (!xforms) {\n\t\t\t\t\t\txforms = [];\n\t\t\t\t\t\tthis._mapXForms[uv] = xforms;\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < xforms.length; i++){\n\t\t\t\t\t\tif (arraysEqual(xforms[i][0].value, xform[0].value) && arraysEqual(xforms[i][1].value, xform[1].value)) {\n\t\t\t\t\t\t\t\treturn i + 1;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn xforms.push(xform);\n\t\t}\n}\n\nfunction _textureParameter(name, channel = true, vertexColor = true) {\n\t\tconst result = {};\n\t\tresult[`${name}Map`] = 'texture';\n\t\tresult[`${name}MapTiling`] = 'vec2';\n\t\tresult[`${name}MapOffset`] = 'vec2';\n\t\tresult[`${name}MapRotation`] = 'number';\n\t\tresult[`${name}MapUv`] = 'number';\n\t\tif (channel) {\n\t\t\t\tresult[`${name}MapChannel`] = 'string';\n\t\t\t\tif (vertexColor) {\n\t\t\t\t\t\tresult[`${name}VertexColor`] = 'boolean';\n\t\t\t\t\t\tresult[`${name}VertexColorChannel`] = 'string';\n\t\t\t\t}\n\t\t}\n\t\treturn result;\n}\nconst standardMaterialParameterTypes = {\n\t\tname: 'string',\n\t\tchunks: 'chunks',\n\t\tmappingFormat: 'string',\n\t\t_engine: 'boolean',\n\t\tambient: 'rgb',\n\t\t..._textureParameter('ao'),\n\t\t..._textureParameter('aoDetail', true, false),\n\t\taoDetailMode: 'string',\n\t\taoIntensity: 'number',\n\t\tdiffuse: 'rgb',\n\t\t..._textureParameter('diffuse'),\n\t\t..._textureParameter('diffuseDetail', true, false),\n\t\tdiffuseDetailMode: 'string',\n\t\tspecular: 'rgb',\n\t\tspecularTint: 'boolean',\n\t\t..._textureParameter('specular'),\n\t\toccludeSpecular: 'enum:occludeSpecular',\n\t\tspecularityFactor: 'number',\n\t\tspecularityFactorTint: 'boolean',\n\t\t..._textureParameter('specularityFactor'),\n\t\tuseMetalness: 'boolean',\n\t\tmetalness: 'number',\n\t\tenableGGXSpecular: 'boolean',\n\t\tmetalnessTint: 'boolean',\n\t\t..._textureParameter('metalness'),\n\t\tuseMetalnessSpecularColor: 'boolean',\n\t\tanisotropyIntensity: 'number',\n\t\tanisotropyRotation: 'number',\n\t\t..._textureParameter('anisotropy'),\n\t\tshininess: 'number',\n\t\tgloss: 'number',\n\t\tglossInvert: 'boolean',\n\t\t..._textureParameter('gloss'),\n\t\tclearCoat: 'number',\n\t\t..._textureParameter('clearCoat'),\n\t\tclearCoatGloss: 'number',\n\t\tclearCoatGlossInvert: 'boolean',\n\t\t..._textureParameter('clearCoatGloss'),\n\t\tclearCoatBumpiness: 'number',\n\t\t..._textureParameter('clearCoatNormal', false),\n\t\tuseSheen: 'boolean',\n\t\tsheen: 'rgb',\n\t\t..._textureParameter('sheen'),\n\t\tsheenGloss: 'number',\n\t\tsheenGlossInvert: 'boolean',\n\t\t..._textureParameter('sheenGloss'),\n\t\tfresnelModel: 'number',\n\t\temissive: 'rgb',\n\t\t..._textureParameter('emissive'),\n\t\temissiveIntensity: 'number',\n\t\t..._textureParameter('normal', false),\n\t\tbumpiness: 'number',\n\t\t..._textureParameter('normalDetail', false),\n\t\tnormalDetailMapBumpiness: 'number',\n\t\t..._textureParameter('height', true, false),\n\t\theightMapFactor: 'number',\n\t\talphaToCoverage: 'boolean',\n\t\talphaTest: 'number',\n\t\talphaFade: 'number',\n\t\topacity: 'number',\n\t\t..._textureParameter('opacity'),\n\t\topacityFadesSpecular: 'boolean',\n\t\topacityDither: 'string',\n\t\topacityShadowDither: 'string',\n\t\treflectivity: 'number',\n\t\trefraction: 'number',\n\t\trefractionTint: 'boolean',\n\t\t..._textureParameter('refraction'),\n\t\trefractionIndex: 'number',\n\t\tdispersion: 'number',\n\t\tthickness: 'number',\n\t\tthicknessTint: 'boolean',\n\t\t..._textureParameter('thickness'),\n\t\tattenuation: 'rgb',\n\t\tattenuationDistance: 'number',\n\t\tuseDynamicRefraction: 'boolean',\n\t\tsphereMap: 'texture',\n\t\tcubeMap: 'cubemap',\n\t\tcubeMapProjection: 'number',\n\t\tcubeMapProjectionBox: 'boundingbox',\n\t\tuseIridescence: 'boolean',\n\t\tiridescence: 'number',\n\t\tiridescenceTint: 'boolean',\n\t\t..._textureParameter('iridescence'),\n\t\tiridescenceThicknessTint: 'boolean',\n\t\tiridescenceThicknessMin: 'number',\n\t\tiridescenceThicknessMax: 'number',\n\t\tiridescenceRefractionIndex: 'number',\n\t\t..._textureParameter('iridescenceThickness'),\n\t\t..._textureParameter('light'),\n\t\tdepthTest: 'boolean',\n\t\tdepthFunc: 'enum:depthFunc',\n\t\tdepthWrite: 'boolean',\n\t\tdepthBias: 'number',\n\t\tslopeDepthBias: 'number',\n\t\tcull: 'enum:cull',\n\t\tblendType: 'enum:blendType',\n\t\tuseFog: 'boolean',\n\t\tuseLighting: 'boolean',\n\t\tuseSkybox: 'boolean',\n\t\tuseTonemap: 'boolean',\n\t\tenvAtlas: 'texture',\n\t\ttwoSidedLighting: 'boolean',\n\t\tshadowCatcher: 'boolean'\n};\nconst standardMaterialTextureParameters = [];\nfor(const key in standardMaterialParameterTypes){\n\t\tconst type = standardMaterialParameterTypes[key];\n\t\tif (type === 'texture') {\n\t\t\t\tstandardMaterialTextureParameters.push(key);\n\t\t}\n}\nconst standardMaterialCubemapParameters = [];\nfor(const key in standardMaterialParameterTypes){\n\t\tconst type = standardMaterialParameterTypes[key];\n\t\tif (type === 'cubemap') {\n\t\t\t\tstandardMaterialCubemapParameters.push(key);\n\t\t}\n}\nconst standardMaterialRemovedParameters = {\n\t\taoMapVertexColor: 'boolean',\n\t\tdiffuseMapTint: 'boolean',\n\t\tdiffuseMapVertexColor: 'boolean',\n\t\temissiveMapTint: 'boolean',\n\t\temissiveMapVertexColor: 'boolean',\n\t\tglossMapVertexColor: 'boolean',\n\t\tmetalnessMapVertexColor: 'boolean',\n\t\topacityMapVertexColor: 'boolean',\n\t\tspecularAntialias: 'boolean',\n\t\tspecularMapTint: 'boolean',\n\t\tspecularMapVertexColor: 'boolean',\n\t\tambientTint: 'boolean',\n\t\temissiveTint: 'boolean',\n\t\tdiffuseTint: 'boolean',\n\t\tsheenTint: 'boolean',\n\t\tconserveEnergy: 'boolean',\n\t\tuseGamma: 'boolean',\n\t\tuseGammaTonemap: 'boolean',\n\t\tsheenGlossTint: 'boolean',\n\t\tanisotropy: 'boolean'\n};\n\nconst _props = {};\nconst _uniforms = {};\nlet _params = new Set();\nconst _tempColor$3 = new Color();\nclass StandardMaterial extends Material {\n\t\tstatic{\n\t\t\t\tthis.TEXTURE_PARAMETERS = standardMaterialTextureParameters;\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.CUBEMAP_PARAMETERS = standardMaterialCubemapParameters;\n\t\t}\n\t\tconstructor(){\n\t\t\t\tsuper(), this.userAttributes = new Map();\n\t\t\t\tthis._assetReferences = {};\n\t\t\t\tthis._activeParams = new Set();\n\t\t\t\tthis._activeLightingParams = new Set();\n\t\t\t\tthis.shaderOptBuilder = new StandardMaterialOptionsBuilder();\n\t\t\t\tthis.reset();\n\t\t}\n\t\treset() {\n\t\t\t\tObject.keys(_props).forEach((name)=>{\n\t\t\t\t\t\tthis[`_${name}`] = _props[name].value();\n\t\t\t\t});\n\t\t\t\tthis._uniformCache = {};\n\t\t}\n\t\tcopy(source) {\n\t\t\t\tsuper.copy(source);\n\t\t\t\tObject.keys(_props).forEach((k)=>{\n\t\t\t\t\t\tthis[k] = source[k];\n\t\t\t\t});\n\t\t\t\tthis.userAttributes = new Map(source.userAttributes);\n\t\t\t\treturn this;\n\t\t}\n\t\tsetAttribute(name, semantic) {\n\t\t\t\tthis.userAttributes.set(semantic, name);\n\t\t}\n\t\t_setParameter(name, value) {\n\t\t\t\t_params.add(name);\n\t\t\t\tthis.setParameter(name, value);\n\t\t}\n\t\t_setParameters(parameters) {\n\t\t\t\tparameters.forEach((v)=>{\n\t\t\t\t\t\tthis._setParameter(v.name, v.value);\n\t\t\t\t});\n\t\t}\n\t\t_processParameters(paramsName) {\n\t\t\t\tconst prevParams = this[paramsName];\n\t\t\t\tprevParams.forEach((param)=>{\n\t\t\t\t\t\tif (!_params.has(param)) {\n\t\t\t\t\t\t\t\tdelete this.parameters[param];\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tthis[paramsName] = _params;\n\t\t\t\t_params = prevParams;\n\t\t\t\t_params.clear();\n\t\t}\n\t\t_updateMap(p) {\n\t\t\t\tconst mname = `${p}Map`;\n\t\t\t\tconst map = this[mname];\n\t\t\t\tif (map) {\n\t\t\t\t\t\tthis._setParameter(`texture_${mname}`, map);\n\t\t\t\t\t\tconst tname = `${mname}Transform`;\n\t\t\t\t\t\tconst uniform = this.getUniform(tname);\n\t\t\t\t\t\tif (uniform) {\n\t\t\t\t\t\t\t\tthis._setParameters(uniform);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_allocUniform(name, allocFunc) {\n\t\t\t\tlet uniform = this._uniformCache[name];\n\t\t\t\tif (!uniform) {\n\t\t\t\t\t\tuniform = allocFunc();\n\t\t\t\t\t\tthis._uniformCache[name] = uniform;\n\t\t\t\t}\n\t\t\t\treturn uniform;\n\t\t}\n\t\tgetUniform(name, device, scene) {\n\t\t\t\treturn _uniforms[name](this, device, scene);\n\t\t}\n\t\tupdateUniforms(device, scene) {\n\t\t\t\tconst getUniform = (name)=>{\n\t\t\t\t\t\treturn this.getUniform(name, device, scene);\n\t\t\t\t};\n\t\t\t\tthis._setParameter('material_ambient', getUniform('ambient'));\n\t\t\t\tthis._setParameter('material_diffuse', getUniform('diffuse'));\n\t\t\t\tthis._setParameter('material_aoIntensity', this.aoIntensity);\n\t\t\t\tif (this.useMetalness) {\n\t\t\t\t\t\tif (!this.metalnessMap || this.metalness < 1) {\n\t\t\t\t\t\t\t\tthis._setParameter('material_metalness', this.metalness);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!this.specularMap || this.specularTint) {\n\t\t\t\t\t\t\t\tthis._setParameter('material_specular', getUniform('specular'));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!this.specularityFactorMap || this.specularityFactorTint) {\n\t\t\t\t\t\t\t\tthis._setParameter('material_specularityFactor', this.specularityFactor);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._setParameter('material_sheen', getUniform('sheen'));\n\t\t\t\t\t\tthis._setParameter('material_sheenGloss', this.sheenGloss);\n\t\t\t\t\t\tthis._setParameter('material_refractionIndex', this.refractionIndex);\n\t\t\t\t} else {\n\t\t\t\t\t\tif (!this.specularMap || this.specularTint) {\n\t\t\t\t\t\t\t\tthis._setParameter('material_specular', getUniform('specular'));\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this.enableGGXSpecular) {\n\t\t\t\t\t\tthis._setParameter('material_anisotropyIntensity', this.anisotropyIntensity);\n\t\t\t\t\t\tthis._setParameter('material_anisotropyRotation', [\n\t\t\t\t\t\t\t\tMath.cos(this.anisotropyRotation * math.DEG_TO_RAD),\n\t\t\t\t\t\t\t\tMath.sin(this.anisotropyRotation * math.DEG_TO_RAD)\n\t\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t\tif (this.clearCoat > 0) {\n\t\t\t\t\t\tthis._setParameter('material_clearCoat', this.clearCoat);\n\t\t\t\t\t\tthis._setParameter('material_clearCoatGloss', this.clearCoatGloss);\n\t\t\t\t\t\tthis._setParameter('material_clearCoatBumpiness', this.clearCoatBumpiness);\n\t\t\t\t}\n\t\t\t\tthis._setParameter('material_gloss', this.gloss);\n\t\t\t\tthis._setParameter('material_emissive', getUniform('emissive'));\n\t\t\t\tthis._setParameter('material_emissiveIntensity', this.emissiveIntensity);\n\t\t\t\tif (this.refraction > 0) {\n\t\t\t\t\t\tthis._setParameter('material_refraction', this.refraction);\n\t\t\t\t}\n\t\t\t\tif (this.dispersion > 0) {\n\t\t\t\t\t\tthis._setParameter('material_dispersion', this.dispersion);\n\t\t\t\t}\n\t\t\t\tif (this.useDynamicRefraction) {\n\t\t\t\t\t\tthis._setParameter('material_thickness', this.thickness);\n\t\t\t\t\t\tthis._setParameter('material_attenuation', getUniform('attenuation'));\n\t\t\t\t\t\tthis._setParameter('material_invAttenuationDistance', this.attenuationDistance === 0 ? 0 : 1.0 / this.attenuationDistance);\n\t\t\t\t}\n\t\t\t\tif (this.useIridescence) {\n\t\t\t\t\t\tthis._setParameter('material_iridescence', this.iridescence);\n\t\t\t\t\t\tthis._setParameter('material_iridescenceRefractionIndex', this.iridescenceRefractionIndex);\n\t\t\t\t\t\tthis._setParameter('material_iridescenceThicknessMin', this.iridescenceThicknessMin);\n\t\t\t\t\t\tthis._setParameter('material_iridescenceThicknessMax', this.iridescenceThicknessMax);\n\t\t\t\t}\n\t\t\t\tthis._setParameter('material_opacity', this.opacity);\n\t\t\t\tif (this.opacityFadesSpecular === false) {\n\t\t\t\t\t\tthis._setParameter('material_alphaFade', this.alphaFade);\n\t\t\t\t}\n\t\t\t\tif (this.occludeSpecular) {\n\t\t\t\t\t\tthis._setParameter('material_occludeSpecularIntensity', this.occludeSpecularIntensity);\n\t\t\t\t}\n\t\t\t\tif (this.cubeMapProjection === CUBEPROJ_BOX) {\n\t\t\t\t\t\tthis._setParameter(getUniform('cubeMapProjectionBox'));\n\t\t\t\t}\n\t\t\t\tfor(const p in _matTex2D){\n\t\t\t\t\t\tthis._updateMap(p);\n\t\t\t\t}\n\t\t\t\tif (this.ambientSH) {\n\t\t\t\t\t\tthis._setParameter('ambientSH[0]', this.ambientSH);\n\t\t\t\t}\n\t\t\t\tif (this.normalMap) {\n\t\t\t\t\t\tthis._setParameter('material_bumpiness', this.bumpiness);\n\t\t\t\t}\n\t\t\t\tif (this.normalMap && this.normalDetailMap) {\n\t\t\t\t\t\tthis._setParameter('material_normalDetailMapBumpiness', this.normalDetailMapBumpiness);\n\t\t\t\t}\n\t\t\t\tif (this.heightMap) {\n\t\t\t\t\t\tthis._setParameter('material_heightMapFactor', getUniform('heightMapFactor'));\n\t\t\t\t}\n\t\t\t\tif (this.envAtlas && this.cubeMap) {\n\t\t\t\t\t\tthis._setParameter('texture_envAtlas', this.envAtlas);\n\t\t\t\t\t\tthis._setParameter('texture_cubeMap', this.cubeMap);\n\t\t\t\t} else if (this.envAtlas) {\n\t\t\t\t\t\tthis._setParameter('texture_envAtlas', this.envAtlas);\n\t\t\t\t} else if (this.cubeMap) {\n\t\t\t\t\t\tthis._setParameter('texture_cubeMap', this.cubeMap);\n\t\t\t\t} else if (this.sphereMap) {\n\t\t\t\t\t\tthis._setParameter('texture_sphereMap', this.sphereMap);\n\t\t\t\t}\n\t\t\t\tthis._setParameter('material_reflectivity', this.reflectivity);\n\t\t\t\tthis._processParameters('_activeParams');\n\t\t\t\tsuper.updateUniforms(device, scene);\n\t\t}\n\t\tupdateEnvUniforms(device, scene) {\n\t\t\t\tconst hasLocalEnvOverride = this.envAtlas || this.cubeMap || this.sphereMap;\n\t\t\t\tif (!hasLocalEnvOverride && this.useSkybox) {\n\t\t\t\t\t\tif (scene.envAtlas && scene.skybox) {\n\t\t\t\t\t\t\t\tthis._setParameter('texture_envAtlas', scene.envAtlas);\n\t\t\t\t\t\t\t\tthis._setParameter('texture_cubeMap', scene.skybox);\n\t\t\t\t\t\t} else if (scene.envAtlas) {\n\t\t\t\t\t\t\t\tthis._setParameter('texture_envAtlas', scene.envAtlas);\n\t\t\t\t\t\t} else if (scene.skybox) {\n\t\t\t\t\t\t\t\tthis._setParameter('texture_cubeMap', scene.skybox);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._processParameters('_activeLightingParams');\n\t\t}\n\t\tgetShaderVariant(params) {\n\t\t\t\tconst { device, scene, pass, objDefs, sortedLights, cameraShaderParams } = params;\n\t\t\t\tthis.updateEnvUniforms(device, scene);\n\t\t\t\tconst shaderPassInfo = ShaderPass.get(device).getByIndex(pass);\n\t\t\t\tconst minimalOptions = pass === SHADER_PICK || pass === SHADER_PREPASS || shaderPassInfo.isShadow;\n\t\t\t\tlet options = minimalOptions ? standard.optionsContextMin : standard.optionsContext;\n\t\t\t\toptions.defines = ShaderUtils.getCoreDefines(this, params);\n\t\t\t\tif (minimalOptions) {\n\t\t\t\t\t\tthis.shaderOptBuilder.updateMinRef(options, scene, this, objDefs, pass, sortedLights);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.shaderOptBuilder.updateRef(options, scene, cameraShaderParams, this, objDefs, pass, sortedLights);\n\t\t\t\t}\n\t\t\t\tif (!this.useFog) options.defines.set('FOG', 'NONE');\n\t\t\t\toptions.defines.set('TONEMAP', tonemapNames[options.litOptions.toneMap]);\n\t\t\t\tif (this.onUpdateShader) {\n\t\t\t\t\t\toptions = this.onUpdateShader(options);\n\t\t\t\t}\n\t\t\t\tconst processingOptions = new ShaderProcessorOptions(params.viewUniformFormat, params.viewBindGroupFormat, params.vertexFormat);\n\t\t\t\tconst library = getProgramLibrary(device);\n\t\t\t\tlibrary.register('standard', standard);\n\t\t\t\tconst shader = library.getProgram('standard', options, processingOptions, this.userId);\n\t\t\t\tthis._dirtyShader = false;\n\t\t\t\treturn shader;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tfor(const asset in this._assetReferences){\n\t\t\t\t\t\tthis._assetReferences[asset]._unbind();\n\t\t\t\t}\n\t\t\t\tthis._assetReferences = null;\n\t\t\t\tsuper.destroy();\n\t\t}\n}\nconst defineUniform = (name, getUniformFunc)=>{\n\t\t_uniforms[name] = getUniformFunc;\n};\nconst definePropInternal = (name, constructorFunc, setterFunc, getterFunc)=>{\n\t\tObject.defineProperty(StandardMaterial.prototype, name, {\n\t\t\t\tget: getterFunc || function() {\n\t\t\t\t\t\treturn this[`_${name}`];\n\t\t\t\t},\n\t\t\t\tset: setterFunc\n\t\t});\n\t\t_props[name] = {\n\t\t\t\tvalue: constructorFunc\n\t\t};\n};\nconst defineValueProp = (prop)=>{\n\t\tconst internalName = `_${prop.name}`;\n\t\tconst dirtyShaderFunc = prop.dirtyShaderFunc || (()=>true);\n\t\tconst setterFunc = function(value) {\n\t\t\t\tconst oldValue = this[internalName];\n\t\t\t\tif (oldValue !== value) {\n\t\t\t\t\t\tthis._dirtyShader = this._dirtyShader || dirtyShaderFunc(oldValue, value);\n\t\t\t\t\t\tthis[internalName] = value;\n\t\t\t\t}\n\t\t};\n\t\tdefinePropInternal(prop.name, ()=>prop.defaultValue, setterFunc, prop.getterFunc);\n};\nconst defineAggProp = (prop)=>{\n\t\tconst internalName = `_${prop.name}`;\n\t\tconst dirtyShaderFunc = prop.dirtyShaderFunc || (()=>true);\n\t\tconst setterFunc = function(value) {\n\t\t\t\tconst oldValue = this[internalName];\n\t\t\t\tif (!oldValue.equals(value)) {\n\t\t\t\t\t\tthis._dirtyShader = this._dirtyShader || dirtyShaderFunc(oldValue, value);\n\t\t\t\t\t\tthis[internalName] = oldValue.copy(value);\n\t\t\t\t}\n\t\t};\n\t\tdefinePropInternal(prop.name, ()=>prop.defaultValue.clone(), setterFunc, prop.getterFunc);\n};\nconst defineProp = (prop)=>{\n\t\treturn prop.defaultValue && prop.defaultValue.clone ? defineAggProp(prop) : defineValueProp(prop);\n};\nfunction _defineTex2D(name, channel = 'rgb', vertexColor = true, uv = 0) {\n\t\t_matTex2D[name] = channel.length || -1;\n\t\tdefineProp({\n\t\t\t\tname: `${name}Map`,\n\t\t\t\tdefaultValue: null,\n\t\t\t\tdirtyShaderFunc: (oldValue, newValue)=>{\n\t\t\t\t\t\treturn !!oldValue !== !!newValue || oldValue && (oldValue.type !== newValue.type || oldValue.format !== newValue.format);\n\t\t\t\t}\n\t\t});\n\t\tdefineProp({\n\t\t\t\tname: `${name}MapTiling`,\n\t\t\t\tdefaultValue: new Vec2(1, 1)\n\t\t});\n\t\tdefineProp({\n\t\t\t\tname: `${name}MapOffset`,\n\t\t\t\tdefaultValue: new Vec2(0, 0)\n\t\t});\n\t\tdefineProp({\n\t\t\t\tname: `${name}MapRotation`,\n\t\t\t\tdefaultValue: 0\n\t\t});\n\t\tdefineProp({\n\t\t\t\tname: `${name}MapUv`,\n\t\t\t\tdefaultValue: uv\n\t\t});\n\t\tif (channel) {\n\t\t\t\tdefineProp({\n\t\t\t\t\t\tname: `${name}MapChannel`,\n\t\t\t\t\t\tdefaultValue: channel\n\t\t\t\t});\n\t\t\t\tif (vertexColor) {\n\t\t\t\t\t\tdefineProp({\n\t\t\t\t\t\t\t\tname: `${name}VertexColor`,\n\t\t\t\t\t\t\t\tdefaultValue: false\n\t\t\t\t\t\t});\n\t\t\t\t\t\tdefineProp({\n\t\t\t\t\t\t\t\tname: `${name}VertexColorChannel`,\n\t\t\t\t\t\t\t\tdefaultValue: channel\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t}\n\t\tconst mapTiling = `${name}MapTiling`;\n\t\tconst mapOffset = `${name}MapOffset`;\n\t\tconst mapRotation = `${name}MapRotation`;\n\t\tconst mapTransform = `${name}MapTransform`;\n\t\tdefineUniform(mapTransform, (material, device, scene)=>{\n\t\t\t\tconst tiling = material[mapTiling];\n\t\t\t\tconst offset = material[mapOffset];\n\t\t\t\tconst rotation = material[mapRotation];\n\t\t\t\tif (tiling.x === 1 && tiling.y === 1 && offset.x === 0 && offset.y === 0 && rotation === 0) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tconst uniform = material._allocUniform(mapTransform, ()=>{\n\t\t\t\t\t\treturn [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tname: `texture_${mapTransform}0`,\n\t\t\t\t\t\t\t\t\t\tvalue: new Float32Array(3)\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tname: `texture_${mapTransform}1`,\n\t\t\t\t\t\t\t\t\t\tvalue: new Float32Array(3)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t];\n\t\t\t\t});\n\t\t\t\tconst cr = Math.cos(rotation * math.DEG_TO_RAD);\n\t\t\t\tconst sr = Math.sin(rotation * math.DEG_TO_RAD);\n\t\t\t\tconst uniform0 = uniform[0].value;\n\t\t\t\tuniform0[0] = cr * tiling.x;\n\t\t\t\tuniform0[1] = -sr * tiling.y;\n\t\t\t\tuniform0[2] = offset.x;\n\t\t\t\tconst uniform1 = uniform[1].value;\n\t\t\t\tuniform1[0] = sr * tiling.x;\n\t\t\t\tuniform1[1] = cr * tiling.y;\n\t\t\t\tuniform1[2] = 1.0 - tiling.y - offset.y;\n\t\t\t\treturn uniform;\n\t\t});\n}\nfunction _defineColor(name, defaultValue) {\n\t\tdefineProp({\n\t\t\t\tname: name,\n\t\t\t\tdefaultValue: defaultValue,\n\t\t\t\tgetterFunc: function() {\n\t\t\t\t\t\tthis._dirtyShader = true;\n\t\t\t\t\t\treturn this[`_${name}`];\n\t\t\t\t}\n\t\t});\n\t\tdefineUniform(name, (material, device, scene)=>{\n\t\t\t\tconst uniform = material._allocUniform(name, ()=>new Float32Array(3));\n\t\t\t\tconst color = material[name];\n\t\t\t\t_tempColor$3.linear(color);\n\t\t\t\tuniform[0] = _tempColor$3.r;\n\t\t\t\tuniform[1] = _tempColor$3.g;\n\t\t\t\tuniform[2] = _tempColor$3.b;\n\t\t\t\treturn uniform;\n\t\t});\n}\nfunction _defineFloat(name, defaultValue, getUniformFunc) {\n\t\tdefineProp({\n\t\t\t\tname: name,\n\t\t\t\tdefaultValue: defaultValue,\n\t\t\t\tdirtyShaderFunc: (oldValue, newValue)=>{\n\t\t\t\t\t\treturn (oldValue === 0 || oldValue === 1) !== (newValue === 0 || newValue === 1);\n\t\t\t\t}\n\t\t});\n\t\tdefineUniform(name, getUniformFunc);\n}\nfunction _defineObject(name, getUniformFunc) {\n\t\tdefineProp({\n\t\t\t\tname: name,\n\t\t\t\tdefaultValue: null,\n\t\t\t\tdirtyShaderFunc: (oldValue, newValue)=>{\n\t\t\t\t\t\treturn !!oldValue === !!newValue;\n\t\t\t\t}\n\t\t});\n\t\tdefineUniform(name, getUniformFunc);\n}\nfunction _defineFlag(name, defaultValue) {\n\t\tdefineProp({\n\t\t\t\tname: name,\n\t\t\t\tdefaultValue: defaultValue\n\t\t});\n}\nfunction _defineMaterialProps() {\n\t\t_defineColor('ambient', new Color(1, 1, 1));\n\t\t_defineColor('diffuse', new Color(1, 1, 1));\n\t\t_defineColor('specular', new Color(0, 0, 0));\n\t\t_defineColor('emissive', new Color(0, 0, 0));\n\t\t_defineColor('sheen', new Color(1, 1, 1));\n\t\t_defineColor('attenuation', new Color(1, 1, 1));\n\t\t_defineFloat('emissiveIntensity', 1);\n\t\t_defineFloat('specularityFactor', 1);\n\t\t_defineFloat('sheenGloss', 0.0);\n\t\t_defineFloat('gloss', 0.25);\n\t\t_defineFloat('aoIntensity', 1);\n\t\t_defineFloat('heightMapFactor', 1, (material, device, scene)=>{\n\t\t\t\treturn material.heightMapFactor * 0.025;\n\t\t});\n\t\t_defineFloat('opacity', 1);\n\t\t_defineFloat('alphaFade', 1);\n\t\t_defineFloat('alphaTest', 0);\n\t\t_defineFloat('bumpiness', 1);\n\t\t_defineFloat('normalDetailMapBumpiness', 1);\n\t\t_defineFloat('reflectivity', 1);\n\t\t_defineFloat('occludeSpecularIntensity', 1);\n\t\t_defineFloat('refraction', 0);\n\t\t_defineFloat('refractionIndex', 1.0 / 1.5);\n\t\t_defineFloat('dispersion', 0);\n\t\t_defineFloat('thickness', 0);\n\t\t_defineFloat('attenuationDistance', 0);\n\t\t_defineFloat('metalness', 1);\n\t\t_defineFloat('anisotropyIntensity', 0);\n\t\t_defineFloat('anisotropyRotation', 0);\n\t\t_defineFloat('clearCoat', 0);\n\t\t_defineFloat('clearCoatGloss', 1);\n\t\t_defineFloat('clearCoatBumpiness', 1);\n\t\t_defineFloat('aoUvSet', 0, null);\n\t\t_defineFloat('iridescence', 0);\n\t\t_defineFloat('iridescenceRefractionIndex', 1.0 / 1.5);\n\t\t_defineFloat('iridescenceThicknessMin', 0);\n\t\t_defineFloat('iridescenceThicknessMax', 0);\n\t\t_defineObject('ambientSH');\n\t\t_defineObject('cubeMapProjectionBox', (material, device, scene)=>{\n\t\t\t\tconst uniform = material._allocUniform('cubeMapProjectionBox', ()=>{\n\t\t\t\t\t\treturn [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tname: 'envBoxMin',\n\t\t\t\t\t\t\t\t\t\tvalue: new Float32Array(3)\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tname: 'envBoxMax',\n\t\t\t\t\t\t\t\t\t\tvalue: new Float32Array(3)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t];\n\t\t\t\t});\n\t\t\t\tconst bboxMin = material.cubeMapProjectionBox.getMin();\n\t\t\t\tconst minUniform = uniform[0].value;\n\t\t\t\tminUniform[0] = bboxMin.x;\n\t\t\t\tminUniform[1] = bboxMin.y;\n\t\t\t\tminUniform[2] = bboxMin.z;\n\t\t\t\tconst bboxMax = material.cubeMapProjectionBox.getMax();\n\t\t\t\tconst maxUniform = uniform[1].value;\n\t\t\t\tmaxUniform[0] = bboxMax.x;\n\t\t\t\tmaxUniform[1] = bboxMax.y;\n\t\t\t\tmaxUniform[2] = bboxMax.z;\n\t\t\t\treturn uniform;\n\t\t});\n\t\t_defineFlag('specularTint', false);\n\t\t_defineFlag('specularityFactorTint', false);\n\t\t_defineFlag('useMetalness', false);\n\t\t_defineFlag('useMetalnessSpecularColor', false);\n\t\t_defineFlag('useSheen', false);\n\t\t_defineFlag('enableGGXSpecular', false);\n\t\t_defineFlag('occludeDirect', false);\n\t\t_defineFlag('opacityFadesSpecular', true);\n\t\t_defineFlag('occludeSpecular', SPECOCC_AO);\n\t\t_defineFlag('fresnelModel', FRESNEL_SCHLICK);\n\t\t_defineFlag('useDynamicRefraction', false);\n\t\t_defineFlag('cubeMapProjection', CUBEPROJ_NONE);\n\t\t_defineFlag('useFog', true);\n\t\t_defineFlag('useLighting', true);\n\t\t_defineFlag('useTonemap', true);\n\t\t_defineFlag('useSkybox', true);\n\t\t_defineFlag('forceUv1', false);\n\t\t_defineFlag('pixelSnap', false);\n\t\t_defineFlag('twoSidedLighting', false);\n\t\t_defineFlag('nineSlicedMode', undefined);\n\t\t_defineFlag('msdfTextAttribute', false);\n\t\t_defineFlag('useIridescence', false);\n\t\t_defineFlag('glossInvert', false);\n\t\t_defineFlag('sheenGlossInvert', false);\n\t\t_defineFlag('clearCoatGlossInvert', false);\n\t\t_defineFlag('opacityDither', DITHER_NONE);\n\t\t_defineFlag('opacityShadowDither', DITHER_NONE);\n\t\t_defineFlag('shadowCatcher', false);\n\t\t_defineTex2D('diffuse');\n\t\t_defineTex2D('specular');\n\t\t_defineTex2D('emissive');\n\t\t_defineTex2D('thickness', 'g');\n\t\t_defineTex2D('specularityFactor', 'g');\n\t\t_defineTex2D('normal', '');\n\t\t_defineTex2D('metalness', 'g');\n\t\t_defineTex2D('gloss', 'g');\n\t\t_defineTex2D('opacity', 'a');\n\t\t_defineTex2D('refraction', 'g');\n\t\t_defineTex2D('height', 'g', false);\n\t\t_defineTex2D('ao', 'g');\n\t\t_defineTex2D('light', 'rgb', true, 1);\n\t\t_defineTex2D('msdf', '');\n\t\t_defineTex2D('diffuseDetail', 'rgb', false);\n\t\t_defineTex2D('normalDetail', '');\n\t\t_defineTex2D('aoDetail', 'g', false);\n\t\t_defineTex2D('clearCoat', 'g');\n\t\t_defineTex2D('clearCoatGloss', 'g');\n\t\t_defineTex2D('clearCoatNormal', '');\n\t\t_defineTex2D('sheen', 'rgb');\n\t\t_defineTex2D('sheenGloss', 'g');\n\t\t_defineTex2D('iridescence', 'g');\n\t\t_defineTex2D('iridescenceThickness', 'g');\n\t\t_defineTex2D('anisotropy', '');\n\t\t_defineFlag('diffuseDetailMode', DETAILMODE_MUL);\n\t\t_defineFlag('aoDetailMode', DETAILMODE_MUL);\n\t\t_defineObject('cubeMap');\n\t\t_defineObject('sphereMap');\n\t\t_defineObject('envAtlas');\n\t\tconst getterFunc = function() {\n\t\t\t\treturn this._prefilteredCubemaps;\n\t\t};\n\t\tconst setterFunc = function(value) {\n\t\t\t\tconst cubemaps = this._prefilteredCubemaps;\n\t\t\t\tvalue = value || [];\n\t\t\t\tlet changed = false;\n\t\t\t\tlet complete = true;\n\t\t\t\tfor(let i = 0; i < 6; ++i){\n\t\t\t\t\t\tconst v = value[i] || null;\n\t\t\t\t\t\tif (cubemaps[i] !== v) {\n\t\t\t\t\t\t\t\tcubemaps[i] = v;\n\t\t\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcomplete = complete && !!cubemaps[i];\n\t\t\t\t}\n\t\t\t\tif (changed) {\n\t\t\t\t\t\tif (complete) {\n\t\t\t\t\t\t\t\tthis.envAtlas = EnvLighting.generatePrefilteredAtlas(cubemaps, {\n\t\t\t\t\t\t\t\t\t\ttarget: this.envAtlas\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (this.envAtlas) {\n\t\t\t\t\t\t\t\t\t\tthis.envAtlas.destroy();\n\t\t\t\t\t\t\t\t\t\tthis.envAtlas = null;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._dirtyShader = true;\n\t\t\t\t}\n\t\t};\n\t\tconst empty = [\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tnull\n\t\t];\n\t\tdefinePropInternal('prefilteredCubemaps', ()=>empty.slice(), setterFunc, getterFunc);\n}\n_defineMaterialProps();\n\nconst primitiveUv1Padding = 4.0 / 64;\nconst primitiveUv1PaddingScale = 1.0 - primitiveUv1Padding * 2;\nclass ConeBaseGeometry extends Geometry {\n\t\tconstructor(baseRadius, peakRadius, height, heightSegments, capSegments, roundedCaps){\n\t\t\t\tsuper();\n\t\t\t\tconst pos = new Vec3();\n\t\t\t\tconst bottomToTop = new Vec3();\n\t\t\t\tconst norm = new Vec3();\n\t\t\t\tconst top = new Vec3();\n\t\t\t\tconst bottom = new Vec3();\n\t\t\t\tconst tangent = new Vec3();\n\t\t\t\tconst positions = [];\n\t\t\t\tconst normals = [];\n\t\t\t\tconst uvs = [];\n\t\t\t\tconst uvs1 = [];\n\t\t\t\tconst indices = [];\n\t\t\t\tlet offset;\n\t\t\t\tif (height > 0) {\n\t\t\t\t\t\tfor(let i = 0; i <= heightSegments; i++){\n\t\t\t\t\t\t\t\tfor(let j = 0; j <= capSegments; j++){\n\t\t\t\t\t\t\t\t\t\tconst theta = j / capSegments * 2 * Math.PI - Math.PI;\n\t\t\t\t\t\t\t\t\t\tconst sinTheta = Math.sin(theta);\n\t\t\t\t\t\t\t\t\t\tconst cosTheta = Math.cos(theta);\n\t\t\t\t\t\t\t\t\t\tbottom.set(sinTheta * baseRadius, -height / 2, cosTheta * baseRadius);\n\t\t\t\t\t\t\t\t\t\ttop.set(sinTheta * peakRadius, height / 2, cosTheta * peakRadius);\n\t\t\t\t\t\t\t\t\t\tpos.lerp(bottom, top, i / heightSegments);\n\t\t\t\t\t\t\t\t\t\tbottomToTop.sub2(top, bottom).normalize();\n\t\t\t\t\t\t\t\t\t\ttangent.set(cosTheta, 0, -sinTheta);\n\t\t\t\t\t\t\t\t\t\tnorm.cross(tangent, bottomToTop).normalize();\n\t\t\t\t\t\t\t\t\t\tpositions.push(pos.x, pos.y, pos.z);\n\t\t\t\t\t\t\t\t\t\tnormals.push(norm.x, norm.y, norm.z);\n\t\t\t\t\t\t\t\t\t\tlet u = j / capSegments;\n\t\t\t\t\t\t\t\t\t\tlet v = i / heightSegments;\n\t\t\t\t\t\t\t\t\t\tuvs.push(u, 1 - v);\n\t\t\t\t\t\t\t\t\t\tconst _v = v;\n\t\t\t\t\t\t\t\t\t\tv = u;\n\t\t\t\t\t\t\t\t\t\tu = _v;\n\t\t\t\t\t\t\t\t\t\tu = u * primitiveUv1PaddingScale + primitiveUv1Padding;\n\t\t\t\t\t\t\t\t\t\tv = v * primitiveUv1PaddingScale + primitiveUv1Padding;\n\t\t\t\t\t\t\t\t\t\tu /= 3;\n\t\t\t\t\t\t\t\t\t\tuvs1.push(u, 1 - v);\n\t\t\t\t\t\t\t\t\t\tif (i < heightSegments && j < capSegments) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst first = i * (capSegments + 1) + j;\n\t\t\t\t\t\t\t\t\t\t\t\tconst second = i * (capSegments + 1) + (j + 1);\n\t\t\t\t\t\t\t\t\t\t\t\tconst third = (i + 1) * (capSegments + 1) + j;\n\t\t\t\t\t\t\t\t\t\t\t\tconst fourth = (i + 1) * (capSegments + 1) + (j + 1);\n\t\t\t\t\t\t\t\t\t\t\t\tindices.push(first, second, third);\n\t\t\t\t\t\t\t\t\t\t\t\tindices.push(second, fourth, third);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (roundedCaps) {\n\t\t\t\t\t\tconst latitudeBands = Math.floor(capSegments / 2);\n\t\t\t\t\t\tconst longitudeBands = capSegments;\n\t\t\t\t\t\tconst capOffset = height / 2;\n\t\t\t\t\t\tfor(let lat = 0; lat <= latitudeBands; lat++){\n\t\t\t\t\t\t\t\tconst theta = lat * Math.PI * 0.5 / latitudeBands;\n\t\t\t\t\t\t\t\tconst sinTheta = Math.sin(theta);\n\t\t\t\t\t\t\t\tconst cosTheta = Math.cos(theta);\n\t\t\t\t\t\t\t\tfor(let lon = 0; lon <= longitudeBands; lon++){\n\t\t\t\t\t\t\t\t\t\tconst phi = lon * 2 * Math.PI / longitudeBands - Math.PI / 2;\n\t\t\t\t\t\t\t\t\t\tconst sinPhi = Math.sin(phi);\n\t\t\t\t\t\t\t\t\t\tconst cosPhi = Math.cos(phi);\n\t\t\t\t\t\t\t\t\t\tconst x = cosPhi * sinTheta;\n\t\t\t\t\t\t\t\t\t\tconst y = cosTheta;\n\t\t\t\t\t\t\t\t\t\tconst z = sinPhi * sinTheta;\n\t\t\t\t\t\t\t\t\t\tlet u = 1 - lon / longitudeBands;\n\t\t\t\t\t\t\t\t\t\tlet v = 1 - lat / latitudeBands;\n\t\t\t\t\t\t\t\t\t\tpositions.push(x * peakRadius, y * peakRadius + capOffset, z * peakRadius);\n\t\t\t\t\t\t\t\t\t\tnormals.push(x, y, z);\n\t\t\t\t\t\t\t\t\t\tuvs.push(u, 1 - v);\n\t\t\t\t\t\t\t\t\t\tu = u * primitiveUv1PaddingScale + primitiveUv1Padding;\n\t\t\t\t\t\t\t\t\t\tv = v * primitiveUv1PaddingScale + primitiveUv1Padding;\n\t\t\t\t\t\t\t\t\t\tu /= 3;\n\t\t\t\t\t\t\t\t\t\tv /= 3;\n\t\t\t\t\t\t\t\t\t\tu += 1.0 / 3;\n\t\t\t\t\t\t\t\t\t\tuvs1.push(u, 1 - v);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\toffset = (heightSegments + 1) * (capSegments + 1);\n\t\t\t\t\t\tfor(let lat = 0; lat < latitudeBands; ++lat){\n\t\t\t\t\t\t\t\tfor(let lon = 0; lon < longitudeBands; ++lon){\n\t\t\t\t\t\t\t\t\t\tconst first = lat * (longitudeBands + 1) + lon;\n\t\t\t\t\t\t\t\t\t\tconst second = first + longitudeBands + 1;\n\t\t\t\t\t\t\t\t\t\tindices.push(offset + first + 1, offset + second, offset + first);\n\t\t\t\t\t\t\t\t\t\tindices.push(offset + first + 1, offset + second + 1, offset + second);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor(let lat = 0; lat <= latitudeBands; lat++){\n\t\t\t\t\t\t\t\tconst theta = Math.PI * 0.5 + lat * Math.PI * 0.5 / latitudeBands;\n\t\t\t\t\t\t\t\tconst sinTheta = Math.sin(theta);\n\t\t\t\t\t\t\t\tconst cosTheta = Math.cos(theta);\n\t\t\t\t\t\t\t\tfor(let lon = 0; lon <= longitudeBands; lon++){\n\t\t\t\t\t\t\t\t\t\tconst phi = lon * 2 * Math.PI / longitudeBands - Math.PI / 2;\n\t\t\t\t\t\t\t\t\t\tconst sinPhi = Math.sin(phi);\n\t\t\t\t\t\t\t\t\t\tconst cosPhi = Math.cos(phi);\n\t\t\t\t\t\t\t\t\t\tconst x = cosPhi * sinTheta;\n\t\t\t\t\t\t\t\t\t\tconst y = cosTheta;\n\t\t\t\t\t\t\t\t\t\tconst z = sinPhi * sinTheta;\n\t\t\t\t\t\t\t\t\t\tlet u = 1 - lon / longitudeBands;\n\t\t\t\t\t\t\t\t\t\tlet v = 1 - lat / latitudeBands;\n\t\t\t\t\t\t\t\t\t\tpositions.push(x * peakRadius, y * peakRadius - capOffset, z * peakRadius);\n\t\t\t\t\t\t\t\t\t\tnormals.push(x, y, z);\n\t\t\t\t\t\t\t\t\t\tuvs.push(u, 1 - v);\n\t\t\t\t\t\t\t\t\t\tu = u * primitiveUv1PaddingScale + primitiveUv1Padding;\n\t\t\t\t\t\t\t\t\t\tv = v * primitiveUv1PaddingScale + primitiveUv1Padding;\n\t\t\t\t\t\t\t\t\t\tu /= 3;\n\t\t\t\t\t\t\t\t\t\tv /= 3;\n\t\t\t\t\t\t\t\t\t\tu += 2.0 / 3;\n\t\t\t\t\t\t\t\t\t\tuvs1.push(u, 1 - v);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\toffset = (heightSegments + 1) * (capSegments + 1) + (longitudeBands + 1) * (latitudeBands + 1);\n\t\t\t\t\t\tfor(let lat = 0; lat < latitudeBands; ++lat){\n\t\t\t\t\t\t\t\tfor(let lon = 0; lon < longitudeBands; ++lon){\n\t\t\t\t\t\t\t\t\t\tconst first = lat * (longitudeBands + 1) + lon;\n\t\t\t\t\t\t\t\t\t\tconst second = first + longitudeBands + 1;\n\t\t\t\t\t\t\t\t\t\tindices.push(offset + first + 1, offset + second, offset + first);\n\t\t\t\t\t\t\t\t\t\tindices.push(offset + first + 1, offset + second + 1, offset + second);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\toffset = (heightSegments + 1) * (capSegments + 1);\n\t\t\t\t\t\tif (baseRadius > 0) {\n\t\t\t\t\t\t\t\tfor(let i = 0; i < capSegments; i++){\n\t\t\t\t\t\t\t\t\t\tconst theta = i / capSegments * 2 * Math.PI;\n\t\t\t\t\t\t\t\t\t\tconst x = Math.sin(theta);\n\t\t\t\t\t\t\t\t\t\tconst y = -height / 2;\n\t\t\t\t\t\t\t\t\t\tconst z = Math.cos(theta);\n\t\t\t\t\t\t\t\t\t\tlet u = 1 - (x + 1) / 2;\n\t\t\t\t\t\t\t\t\t\tlet v = (z + 1) / 2;\n\t\t\t\t\t\t\t\t\t\tpositions.push(x * baseRadius, y, z * baseRadius);\n\t\t\t\t\t\t\t\t\t\tnormals.push(0, -1, 0);\n\t\t\t\t\t\t\t\t\t\tuvs.push(u, 1 - v);\n\t\t\t\t\t\t\t\t\t\tu = u * primitiveUv1PaddingScale + primitiveUv1Padding;\n\t\t\t\t\t\t\t\t\t\tv = v * primitiveUv1PaddingScale + primitiveUv1Padding;\n\t\t\t\t\t\t\t\t\t\tu /= 3;\n\t\t\t\t\t\t\t\t\t\tv /= 3;\n\t\t\t\t\t\t\t\t\t\tu += 1 / 3;\n\t\t\t\t\t\t\t\t\t\tuvs1.push(u, 1 - v);\n\t\t\t\t\t\t\t\t\t\tif (i > 1) {\n\t\t\t\t\t\t\t\t\t\t\t\tindices.push(offset, offset + i, offset + i - 1);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\toffset += capSegments;\n\t\t\t\t\t\tif (peakRadius > 0) {\n\t\t\t\t\t\t\t\tfor(let i = 0; i < capSegments; i++){\n\t\t\t\t\t\t\t\t\t\tconst theta = i / capSegments * 2 * Math.PI;\n\t\t\t\t\t\t\t\t\t\tconst x = Math.sin(theta);\n\t\t\t\t\t\t\t\t\t\tconst y = height / 2;\n\t\t\t\t\t\t\t\t\t\tconst z = Math.cos(theta);\n\t\t\t\t\t\t\t\t\t\tlet u = 1 - (x + 1) / 2;\n\t\t\t\t\t\t\t\t\t\tlet v = (z + 1) / 2;\n\t\t\t\t\t\t\t\t\t\tpositions.push(x * peakRadius, y, z * peakRadius);\n\t\t\t\t\t\t\t\t\t\tnormals.push(0, 1, 0);\n\t\t\t\t\t\t\t\t\t\tuvs.push(u, 1 - v);\n\t\t\t\t\t\t\t\t\t\tu = u * primitiveUv1PaddingScale + primitiveUv1Padding;\n\t\t\t\t\t\t\t\t\t\tv = v * primitiveUv1PaddingScale + primitiveUv1Padding;\n\t\t\t\t\t\t\t\t\t\tu /= 3;\n\t\t\t\t\t\t\t\t\t\tv /= 3;\n\t\t\t\t\t\t\t\t\t\tu += 2 / 3;\n\t\t\t\t\t\t\t\t\t\tuvs1.push(u, 1 - v);\n\t\t\t\t\t\t\t\t\t\tif (i > 1) {\n\t\t\t\t\t\t\t\t\t\t\t\tindices.push(offset, offset + i - 1, offset + i);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.positions = positions;\n\t\t\t\tthis.normals = normals;\n\t\t\t\tthis.uvs = uvs;\n\t\t\t\tthis.uvs1 = uvs1;\n\t\t\t\tthis.indices = indices;\n\t\t}\n}\n\nclass CapsuleGeometry extends ConeBaseGeometry {\n\t\tconstructor(opts = {}){\n\t\t\t\tconst radius = opts.radius ?? 0.3;\n\t\t\t\tconst height = opts.height ?? 1;\n\t\t\t\tconst heightSegments = opts.heightSegments ?? 1;\n\t\t\t\tconst sides = opts.sides ?? 20;\n\t\t\t\tsuper(radius, radius, height - 2 * radius, heightSegments, sides, true);\n\t\t\t\tif (opts.calculateTangents) {\n\t\t\t\t\t\tthis.tangents = calculateTangents(this.positions, this.normals, this.uvs, this.indices);\n\t\t\t\t}\n\t\t}\n}\n\nclass ConeGeometry extends ConeBaseGeometry {\n\t\tconstructor(opts = {}){\n\t\t\t\tconst baseRadius = opts.baseRadius ?? 0.5;\n\t\t\t\tconst peakRadius = opts.peakRadius ?? 0;\n\t\t\t\tconst height = opts.height ?? 1;\n\t\t\t\tconst heightSegments = opts.heightSegments ?? 5;\n\t\t\t\tconst capSegments = opts.capSegments ?? 18;\n\t\t\t\tsuper(baseRadius, peakRadius, height, heightSegments, capSegments, false);\n\t\t\t\tif (opts.calculateTangents) {\n\t\t\t\t\t\tthis.tangents = calculateTangents(this.positions, this.normals, this.uvs, this.indices);\n\t\t\t\t}\n\t\t}\n}\n\nclass CylinderGeometry extends ConeBaseGeometry {\n\t\tconstructor(opts = {}){\n\t\t\t\tconst radius = opts.radius ?? 0.5;\n\t\t\t\tconst height = opts.height ?? 1;\n\t\t\t\tconst heightSegments = opts.heightSegments ?? 5;\n\t\t\t\tconst capSegments = opts.capSegments ?? 20;\n\t\t\t\tsuper(radius, radius, height, heightSegments, capSegments, false);\n\t\t\t\tif (opts.calculateTangents) {\n\t\t\t\t\t\tthis.tangents = calculateTangents(this.positions, this.normals, this.uvs, this.indices);\n\t\t\t\t}\n\t\t}\n}\n\nclass PlaneGeometry extends Geometry {\n\t\tconstructor(opts = {}){\n\t\t\t\tsuper();\n\t\t\t\tconst he = opts.halfExtents ?? new Vec2(0.5, 0.5);\n\t\t\t\tconst ws = opts.widthSegments ?? 5;\n\t\t\t\tconst ls = opts.lengthSegments ?? 5;\n\t\t\t\tconst positions = [];\n\t\t\t\tconst normals = [];\n\t\t\t\tconst uvs = [];\n\t\t\t\tconst indices = [];\n\t\t\t\tlet vcounter = 0;\n\t\t\t\tfor(let i = 0; i <= ws; i++){\n\t\t\t\t\t\tfor(let j = 0; j <= ls; j++){\n\t\t\t\t\t\t\t\tconst x = -he.x + 2 * he.x * i / ws;\n\t\t\t\t\t\t\t\tconst y = 0.0;\n\t\t\t\t\t\t\t\tconst z = -(-he.y + 2 * he.y * j / ls);\n\t\t\t\t\t\t\t\tconst u = i / ws;\n\t\t\t\t\t\t\t\tconst v = j / ls;\n\t\t\t\t\t\t\t\tpositions.push(x, y, z);\n\t\t\t\t\t\t\t\tnormals.push(0, 1, 0);\n\t\t\t\t\t\t\t\tuvs.push(u, 1 - v);\n\t\t\t\t\t\t\t\tif (i < ws && j < ls) {\n\t\t\t\t\t\t\t\t\t\tindices.push(vcounter + ls + 1, vcounter + 1, vcounter);\n\t\t\t\t\t\t\t\t\t\tindices.push(vcounter + ls + 1, vcounter + ls + 2, vcounter + 1);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tvcounter++;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.positions = positions;\n\t\t\t\tthis.normals = normals;\n\t\t\t\tthis.uvs = uvs;\n\t\t\t\tthis.uvs1 = uvs;\n\t\t\t\tthis.indices = indices;\n\t\t\t\tif (opts.calculateTangents) {\n\t\t\t\t\t\tthis.tangents = calculateTangents(positions, normals, uvs, indices);\n\t\t\t\t}\n\t\t}\n}\n\nclass TorusGeometry extends Geometry {\n\t\tconstructor(opts = {}){\n\t\t\t\tsuper();\n\t\t\t\tconst rc = opts.tubeRadius ?? 0.2;\n\t\t\t\tconst rt = opts.ringRadius ?? 0.3;\n\t\t\t\tconst sectorAngle = (opts.sectorAngle ?? 360) * math.DEG_TO_RAD;\n\t\t\t\tconst segments = opts.segments ?? 30;\n\t\t\t\tconst sides = opts.sides ?? 20;\n\t\t\t\tconst positions = [];\n\t\t\t\tconst normals = [];\n\t\t\t\tconst uvs = [];\n\t\t\t\tconst indices = [];\n\t\t\t\tfor(let i = 0; i <= sides; i++){\n\t\t\t\t\t\tfor(let j = 0; j <= segments; j++){\n\t\t\t\t\t\t\t\tconst x = Math.cos(sectorAngle * j / segments) * (rt + rc * Math.cos(2 * Math.PI * i / sides));\n\t\t\t\t\t\t\t\tconst y = Math.sin(2 * Math.PI * i / sides) * rc;\n\t\t\t\t\t\t\t\tconst z = Math.sin(sectorAngle * j / segments) * (rt + rc * Math.cos(2 * Math.PI * i / sides));\n\t\t\t\t\t\t\t\tconst nx = Math.cos(sectorAngle * j / segments) * Math.cos(2 * Math.PI * i / sides);\n\t\t\t\t\t\t\t\tconst ny = Math.sin(2 * Math.PI * i / sides);\n\t\t\t\t\t\t\t\tconst nz = Math.sin(sectorAngle * j / segments) * Math.cos(2 * Math.PI * i / sides);\n\t\t\t\t\t\t\t\tconst u = i / sides;\n\t\t\t\t\t\t\t\tconst v = 1 - j / segments;\n\t\t\t\t\t\t\t\tpositions.push(x, y, z);\n\t\t\t\t\t\t\t\tnormals.push(nx, ny, nz);\n\t\t\t\t\t\t\t\tuvs.push(u, 1.0 - v);\n\t\t\t\t\t\t\t\tif (i < sides && j < segments) {\n\t\t\t\t\t\t\t\t\t\tconst first = i * (segments + 1) + j;\n\t\t\t\t\t\t\t\t\t\tconst second = (i + 1) * (segments + 1) + j;\n\t\t\t\t\t\t\t\t\t\tconst third = i * (segments + 1) + (j + 1);\n\t\t\t\t\t\t\t\t\t\tconst fourth = (i + 1) * (segments + 1) + (j + 1);\n\t\t\t\t\t\t\t\t\t\tindices.push(first, second, third);\n\t\t\t\t\t\t\t\t\t\tindices.push(second, fourth, third);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.positions = positions;\n\t\t\t\tthis.normals = normals;\n\t\t\t\tthis.uvs = uvs;\n\t\t\t\tthis.uvs1 = uvs;\n\t\t\t\tthis.indices = indices;\n\t\t\t\tif (opts.calculateTangents) {\n\t\t\t\t\t\tthis.tangents = calculateTangents(positions, normals, uvs, indices);\n\t\t\t\t}\n\t\t}\n}\n\nclass ProgramLibrary {\n\t\tconstructor(device, standardMaterial){\n\t\t\t\tthis.processedCache = new Map();\n\t\t\t\tthis.definitionsCache = new Map();\n\t\t\t\tthis._generators = new Map();\n\t\t\t\tthis._device = device;\n\t\t\t\tthis._isClearingCache = false;\n\t\t\t\tthis._precached = false;\n\t\t\t\tthis._programsCollection = [];\n\t\t\t\tthis._defaultStdMatOption = new StandardMaterialOptions();\n\t\t\t\tthis._defaultStdMatOptionMin = new StandardMaterialOptions();\n\t\t\t\tconst defaultCameraShaderParams = new CameraShaderParams();\n\t\t\t\tstandardMaterial.shaderOptBuilder.updateRef(this._defaultStdMatOption, {}, defaultCameraShaderParams, standardMaterial, null, [], SHADER_FORWARD, null);\n\t\t\t\tstandardMaterial.shaderOptBuilder.updateMinRef(this._defaultStdMatOptionMin, {}, standardMaterial, null, SHADER_SHADOW, null);\n\t\t\t\tdevice.on('destroy:shader', (shader)=>{\n\t\t\t\t\t\tthis.removeFromCache(shader);\n\t\t\t\t});\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.clearCache();\n\t\t}\n\t\tregister(name, generator) {\n\t\t\t\tif (!this._generators.has(name)) {\n\t\t\t\t\t\tthis._generators.set(name, generator);\n\t\t\t\t}\n\t\t}\n\t\tunregister(name) {\n\t\t\t\tif (this._generators.has(name)) {\n\t\t\t\t\t\tthis._generators.delete(name);\n\t\t\t\t}\n\t\t}\n\t\tisRegistered(name) {\n\t\t\t\treturn this._generators.has(name);\n\t\t}\n\t\tgenerateShaderDefinition(generator, name, key, options) {\n\t\t\t\tlet def = this.definitionsCache.get(key);\n\t\t\t\tif (!def) {\n\t\t\t\t\t\tlet lights;\n\t\t\t\t\t\tif (options.litOptions?.lights) {\n\t\t\t\t\t\t\t\tlights = options.litOptions.lights;\n\t\t\t\t\t\t\t\toptions.litOptions.lights = lights.map((l)=>{\n\t\t\t\t\t\t\t\t\t\tconst lcopy = l.clone ? l.clone() : l;\n\t\t\t\t\t\t\t\t\t\tlcopy.key = l.key;\n\t\t\t\t\t\t\t\t\t\treturn lcopy;\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.storeNewProgram(name, options);\n\t\t\t\t\t\tif (options.litOptions?.lights) {\n\t\t\t\t\t\t\t\toptions.litOptions.lights = lights;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this._precached) ;\n\t\t\t\t\t\tconst device = this._device;\n\t\t\t\t\t\tdef = generator.createShaderDefinition(device, options);\n\t\t\t\t\t\tdef.name = def.name ?? (options.pass ? `${name}-pass:${options.pass}` : name);\n\t\t\t\t\t\tthis.definitionsCache.set(key, def);\n\t\t\t\t}\n\t\t\t\treturn def;\n\t\t}\n\t\tgetCachedShader(key) {\n\t\t\t\treturn this.processedCache.get(key);\n\t\t}\n\t\tsetCachedShader(key, shader) {\n\t\t\t\tthis.processedCache.set(key, shader);\n\t\t}\n\t\tgetProgram(name, options, processingOptions, userMaterialId) {\n\t\t\t\tconst generator = this._generators.get(name);\n\t\t\t\tif (!generator) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tconst generationKeyString = generator.generateKey(options);\n\t\t\t\tconst generationKey = hashCode(generationKeyString);\n\t\t\t\tconst processingKeyString = processingOptions.generateKey(this._device);\n\t\t\t\tconst processingKey = hashCode(processingKeyString);\n\t\t\t\tconst totalKey = `${generationKey}#${processingKey}`;\n\t\t\t\tlet processedShader = this.getCachedShader(totalKey);\n\t\t\t\tif (!processedShader) {\n\t\t\t\t\t\tconst generatedShaderDef = this.generateShaderDefinition(generator, name, generationKey, options);\n\t\t\t\t\t\tlet passName = '';\n\t\t\t\t\t\tlet shaderPassInfo;\n\t\t\t\t\t\tif (options.pass !== undefined) {\n\t\t\t\t\t\t\t\tshaderPassInfo = ShaderPass.get(this._device).getByIndex(options.pass);\n\t\t\t\t\t\t\t\tpassName = `-${shaderPassInfo.name}`;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._device.fire('shader:generate', {\n\t\t\t\t\t\t\t\tuserMaterialId,\n\t\t\t\t\t\t\t\tshaderPassInfo,\n\t\t\t\t\t\t\t\tdefinition: generatedShaderDef\n\t\t\t\t\t\t});\n\t\t\t\t\t\tconst shaderDefinition = {\n\t\t\t\t\t\t\t\tname: `${generatedShaderDef.name}${passName}-proc`,\n\t\t\t\t\t\t\t\tattributes: generatedShaderDef.attributes,\n\t\t\t\t\t\t\t\tvshader: generatedShaderDef.vshader,\n\t\t\t\t\t\t\t\tvincludes: generatedShaderDef.vincludes,\n\t\t\t\t\t\t\t\tfincludes: generatedShaderDef.fincludes,\n\t\t\t\t\t\t\t\tfshader: generatedShaderDef.fshader,\n\t\t\t\t\t\t\t\tprocessingOptions: processingOptions,\n\t\t\t\t\t\t\t\tshaderLanguage: generatedShaderDef.shaderLanguage,\n\t\t\t\t\t\t\t\tmeshUniformBufferFormat: generatedShaderDef.meshUniformBufferFormat,\n\t\t\t\t\t\t\t\tmeshBindGroupFormat: generatedShaderDef.meshBindGroupFormat\n\t\t\t\t\t\t};\n\t\t\t\t\t\tprocessedShader = new Shader(this._device, shaderDefinition);\n\t\t\t\t\t\tthis.setCachedShader(totalKey, processedShader);\n\t\t\t\t}\n\t\t\t\treturn processedShader;\n\t\t}\n\t\tstoreNewProgram(name, options) {\n\t\t\t\tlet opt = {};\n\t\t\t\tif (name === 'standard') {\n\t\t\t\t\t\tconst defaultMat = this._getDefaultStdMatOptions(options.pass);\n\t\t\t\t\t\tfor(const p in options){\n\t\t\t\t\t\t\t\tif (options.hasOwnProperty(p) && defaultMat[p] !== options[p] || p === 'pass') {\n\t\t\t\t\t\t\t\t\t\topt[p] = options[p];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor(const p in options.litOptions){\n\t\t\t\t\t\t\t\topt[p] = options.litOptions[p];\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\topt = options;\n\t\t\t\t}\n\t\t\t\tthis._programsCollection.push(JSON.stringify({\n\t\t\t\t\t\tname: name,\n\t\t\t\t\t\toptions: opt\n\t\t\t\t}));\n\t\t}\n\t\tdumpPrograms() {\n\t\t\t\tlet text = 'let device = pc.app ? pc.app.graphicsDevice : pc.Application.getApplication().graphicsDevice;\\n';\n\t\t\t\ttext += 'let shaders = [';\n\t\t\t\tif (this._programsCollection[0]) {\n\t\t\t\t\t\ttext += `\\n\\t${this._programsCollection[0]}`;\n\t\t\t\t}\n\t\t\t\tfor(let i = 1; i < this._programsCollection.length; ++i){\n\t\t\t\t\t\ttext += `,\\n\\t${this._programsCollection[i]}`;\n\t\t\t\t}\n\t\t\t\ttext += '\\n];\\n';\n\t\t\t\ttext += 'pc.getProgramLibrary(device).precompile(shaders);\\n';\n\t\t\t\ttext += `if (pc.version != \\\"${version}\\\" || pc.revision != \\\"${revision}\\\")\\n`;\n\t\t\t\ttext += '\\tconsole.warn(\\\"precompile-shaders.js: engine version mismatch, rebuild shaders lib with current engine\\\");';\n\t\t\t\tconst element = document.createElement('a');\n\t\t\t\telement.setAttribute('href', `data:text/plain;charset=utf-8,${encodeURIComponent(text)}`);\n\t\t\t\telement.setAttribute('download', 'precompile-shaders.js');\n\t\t\t\telement.style.display = 'none';\n\t\t\t\tdocument.body.appendChild(element);\n\t\t\t\telement.click();\n\t\t\t\tdocument.body.removeChild(element);\n\t\t}\n\t\tclearCache() {\n\t\t\t\tthis._isClearingCache = true;\n\t\t\t\tthis.processedCache.forEach((shader)=>{\n\t\t\t\t\t\tshader.destroy();\n\t\t\t\t});\n\t\t\t\tthis.processedCache.clear();\n\t\t\t\tthis._isClearingCache = false;\n\t\t}\n\t\tremoveFromCache(shader) {\n\t\t\t\tif (this._isClearingCache) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.processedCache.forEach((cachedShader, key)=>{\n\t\t\t\t\t\tif (shader === cachedShader) {\n\t\t\t\t\t\t\t\tthis.processedCache.delete(key);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\t_getDefaultStdMatOptions(pass) {\n\t\t\t\tconst shaderPassInfo = ShaderPass.get(this._device).getByIndex(pass);\n\t\t\t\treturn pass === SHADER_PICK || pass === SHADER_PREPASS || shaderPassInfo.isShadow ? this._defaultStdMatOptionMin : this._defaultStdMatOption;\n\t\t}\n\t\tprecompile(cache) {\n\t\t\t\tif (cache) {\n\t\t\t\t\t\tconst shaders = new Array(cache.length);\n\t\t\t\t\t\tfor(let i = 0; i < cache.length; i++){\n\t\t\t\t\t\t\t\tif (cache[i].name === 'standard') {\n\t\t\t\t\t\t\t\t\t\tconst opt = cache[i].options;\n\t\t\t\t\t\t\t\t\t\tconst defaultMat = this._getDefaultStdMatOptions(opt.pass);\n\t\t\t\t\t\t\t\t\t\tfor(const p in defaultMat){\n\t\t\t\t\t\t\t\t\t\t\t\tif (defaultMat.hasOwnProperty(p) && opt[p] === undefined) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\topt[p] = defaultMat[p];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tshaders[i] = this.getProgram(cache[i].name, cache[i].options);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._precached = true;\n\t\t}\n}\n\nconst mat4$1 = new Mat4();\nconst quat$2 = new Quat();\nconst aabb = new BoundingBox();\nconst aabb2 = new BoundingBox();\nconst debugColor = new Color(1, 1, 0, 0.4);\nconst SH_C0$2 = 0.28209479177387814;\nclass SplatIterator {\n\t\tconstructor(gsplatData, p, r, s, c){\n\t\t\t\tconst x = gsplatData.getProp('x');\n\t\t\t\tconst y = gsplatData.getProp('y');\n\t\t\t\tconst z = gsplatData.getProp('z');\n\t\t\t\tconst rx = gsplatData.getProp('rot_1');\n\t\t\t\tconst ry = gsplatData.getProp('rot_2');\n\t\t\t\tconst rz = gsplatData.getProp('rot_3');\n\t\t\t\tconst rw = gsplatData.getProp('rot_0');\n\t\t\t\tconst sx = gsplatData.getProp('scale_0');\n\t\t\t\tconst sy = gsplatData.getProp('scale_1');\n\t\t\t\tconst sz = gsplatData.getProp('scale_2');\n\t\t\t\tconst cr = gsplatData.getProp('f_dc_0');\n\t\t\t\tconst cg = gsplatData.getProp('f_dc_1');\n\t\t\t\tconst cb = gsplatData.getProp('f_dc_2');\n\t\t\t\tconst ca = gsplatData.getProp('opacity');\n\t\t\t\tconst sigmoid = (v)=>{\n\t\t\t\t\t\tif (v > 0) {\n\t\t\t\t\t\t\t\treturn 1 / (1 + Math.exp(-v));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst t = Math.exp(v);\n\t\t\t\t\t\treturn t / (1 + t);\n\t\t\t\t};\n\t\t\t\tthis.read = (i)=>{\n\t\t\t\t\t\tif (p) {\n\t\t\t\t\t\t\t\tp.x = x[i];\n\t\t\t\t\t\t\t\tp.y = y[i];\n\t\t\t\t\t\t\t\tp.z = z[i];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (r) {\n\t\t\t\t\t\t\t\tr.set(rx[i], ry[i], rz[i], rw[i]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (s) {\n\t\t\t\t\t\t\t\ts.set(Math.exp(sx[i]), Math.exp(sy[i]), Math.exp(sz[i]));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (c) {\n\t\t\t\t\t\t\t\tc.set(0.5 + cr[i] * SH_C0$2, 0.5 + cg[i] * SH_C0$2, 0.5 + cb[i] * SH_C0$2, sigmoid(ca[i]));\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t}\n}\nconst calcSplatMat = (result, p, r)=>{\n\t\tquat$2.set(r.x, r.y, r.z, r.w).normalize();\n\t\tresult.setTRS(p, quat$2, Vec3.ONE);\n};\nclass GSplatData {\n\t\tconstructor(elements, comments = []){\n\t\t\t\tthis.elements = elements;\n\t\t\t\tthis.numSplats = this.getElement('vertex').count;\n\t\t\t\tthis.comments = comments;\n\t\t}\n\t\tstatic calcSplatAabb(result, p, r, s) {\n\t\t\t\tcalcSplatMat(mat4$1, p, r);\n\t\t\t\taabb.center.set(0, 0, 0);\n\t\t\t\taabb.halfExtents.set(s.x * 2, s.y * 2, s.z * 2);\n\t\t\t\tresult.setFromTransformedAabb(aabb, mat4$1);\n\t\t}\n\t\tgetProp(name, elementName = 'vertex') {\n\t\t\t\treturn this.getElement(elementName)?.properties.find((p)=>p.name === name)?.storage;\n\t\t}\n\t\tgetElement(name) {\n\t\t\t\treturn this.elements.find((e)=>e.name === name);\n\t\t}\n\t\taddProp(name, storage) {\n\t\t\t\tthis.getElement('vertex').properties.push({\n\t\t\t\t\t\ttype: 'float',\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tstorage,\n\t\t\t\t\t\tbyteSize: 4\n\t\t\t\t});\n\t\t}\n\t\tcreateIter(p, r, s, c) {\n\t\t\t\treturn new SplatIterator(this, p, r, s, c);\n\t\t}\n\t\tcalcAabb(result, pred) {\n\t\t\t\tlet mx, my, mz, Mx, My, Mz;\n\t\t\t\tlet first = true;\n\t\t\t\tconst x = this.getProp('x');\n\t\t\t\tconst y = this.getProp('y');\n\t\t\t\tconst z = this.getProp('z');\n\t\t\t\tconst sx = this.getProp('scale_0');\n\t\t\t\tconst sy = this.getProp('scale_1');\n\t\t\t\tconst sz = this.getProp('scale_2');\n\t\t\t\tfor(let i = 0; i < this.numSplats; ++i){\n\t\t\t\t\t\tif (pred && !pred(i)) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst px = x[i];\n\t\t\t\t\t\tconst py = y[i];\n\t\t\t\t\t\tconst pz = z[i];\n\t\t\t\t\t\tconst scale = Math.max(sx[i], sy[i], sz[i]);\n\t\t\t\t\t\tif (!isFinite(px) || !isFinite(py) || !isFinite(pz) || !isFinite(scale)) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst scaleVal = 2.0 * Math.exp(scale);\n\t\t\t\t\t\tif (first) {\n\t\t\t\t\t\t\t\tfirst = false;\n\t\t\t\t\t\t\t\tmx = px - scaleVal;\n\t\t\t\t\t\t\t\tmy = py - scaleVal;\n\t\t\t\t\t\t\t\tmz = pz - scaleVal;\n\t\t\t\t\t\t\t\tMx = px + scaleVal;\n\t\t\t\t\t\t\t\tMy = py + scaleVal;\n\t\t\t\t\t\t\t\tMz = pz + scaleVal;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tmx = Math.min(mx, px - scaleVal);\n\t\t\t\t\t\t\t\tmy = Math.min(my, py - scaleVal);\n\t\t\t\t\t\t\t\tmz = Math.min(mz, pz - scaleVal);\n\t\t\t\t\t\t\t\tMx = Math.max(Mx, px + scaleVal);\n\t\t\t\t\t\t\t\tMy = Math.max(My, py + scaleVal);\n\t\t\t\t\t\t\t\tMz = Math.max(Mz, pz + scaleVal);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!first) {\n\t\t\t\t\t\tresult.center.set((mx + Mx) * 0.5, (my + My) * 0.5, (mz + Mz) * 0.5);\n\t\t\t\t\t\tresult.halfExtents.set((Mx - mx) * 0.5, (My - my) * 0.5, (Mz - mz) * 0.5);\n\t\t\t\t}\n\t\t\t\treturn !first;\n\t\t}\n\t\tcalcAabbExact(result, pred) {\n\t\t\t\tconst p = new Vec3();\n\t\t\t\tconst r = new Quat();\n\t\t\t\tconst s = new Vec3();\n\t\t\t\tconst iter = this.createIter(p, r, s);\n\t\t\t\tlet first = true;\n\t\t\t\tfor(let i = 0; i < this.numSplats; ++i){\n\t\t\t\t\t\tif (pred && !pred(i)) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\titer.read(i);\n\t\t\t\t\t\tif (first) {\n\t\t\t\t\t\t\t\tfirst = false;\n\t\t\t\t\t\t\t\tGSplatData.calcSplatAabb(result, p, r, s);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tGSplatData.calcSplatAabb(aabb2, p, r, s);\n\t\t\t\t\t\t\t\tresult.add(aabb2);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn !first;\n\t\t}\n\t\tgetCenters() {\n\t\t\t\tconst x = this.getProp('x');\n\t\t\t\tconst y = this.getProp('y');\n\t\t\t\tconst z = this.getProp('z');\n\t\t\t\tconst result = new Float32Array(this.numSplats * 3);\n\t\t\t\tfor(let i = 0; i < this.numSplats; ++i){\n\t\t\t\t\t\tresult[i * 3 + 0] = x[i];\n\t\t\t\t\t\tresult[i * 3 + 1] = y[i];\n\t\t\t\t\t\tresult[i * 3 + 2] = z[i];\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t}\n\t\tcalcFocalPoint(result, pred) {\n\t\t\t\tconst x = this.getProp('x');\n\t\t\t\tconst y = this.getProp('y');\n\t\t\t\tconst z = this.getProp('z');\n\t\t\t\tconst sx = this.getProp('scale_0');\n\t\t\t\tconst sy = this.getProp('scale_1');\n\t\t\t\tconst sz = this.getProp('scale_2');\n\t\t\t\tresult.x = 0;\n\t\t\t\tresult.y = 0;\n\t\t\t\tresult.z = 0;\n\t\t\t\tlet sum = 0;\n\t\t\t\tfor(let i = 0; i < this.numSplats; ++i){\n\t\t\t\t\t\tif (pred && !pred(i)) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst px = x[i];\n\t\t\t\t\t\tconst py = y[i];\n\t\t\t\t\t\tconst pz = z[i];\n\t\t\t\t\t\tif (!isFinite(px) || !isFinite(py) || !isFinite(pz)) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst weight = 1.0 / (1.0 + Math.exp(Math.max(sx[i], sy[i], sz[i])));\n\t\t\t\t\t\tresult.x += px * weight;\n\t\t\t\t\t\tresult.y += py * weight;\n\t\t\t\t\t\tresult.z += pz * weight;\n\t\t\t\t\t\tsum += weight;\n\t\t\t\t}\n\t\t\t\tresult.mulScalar(1 / sum);\n\t\t}\n\t\trenderWireframeBounds(scene, worldMat) {\n\t\t\t\tconst p = new Vec3();\n\t\t\t\tconst r = new Quat();\n\t\t\t\tconst s = new Vec3();\n\t\t\t\tconst min = new Vec3();\n\t\t\t\tconst max = new Vec3();\n\t\t\t\tconst iter = this.createIter(p, r, s);\n\t\t\t\tfor(let i = 0; i < this.numSplats; ++i){\n\t\t\t\t\t\titer.read(i);\n\t\t\t\t\t\tcalcSplatMat(mat4$1, p, r);\n\t\t\t\t\t\tmat4$1.mul2(worldMat, mat4$1);\n\t\t\t\t\t\tmin.set(s.x * -2, s.y * -2, s.z * -2);\n\t\t\t\t\t\tmax.set(s.x * 2.0, s.y * 2.0, s.z * 2.0);\n\t\t\t\t\t\tscene.immediate.drawWireAlignedBox(min, max, debugColor, true, scene.defaultDrawLayer, mat4$1);\n\t\t\t\t}\n\t\t}\n\t\tget isCompressed() {\n\t\t\t\treturn false;\n\t\t}\n\t\tget shBands() {\n\t\t\t\tconst numProps = ()=>{\n\t\t\t\t\t\tfor(let i = 0; i < 45; ++i){\n\t\t\t\t\t\t\t\tif (!this.getProp(`f_rest_${i}`)) {\n\t\t\t\t\t\t\t\t\t\treturn i;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn 45;\n\t\t\t\t};\n\t\t\t\tconst sizes = {\n\t\t\t\t\t\t9: 1,\n\t\t\t\t\t\t24: 2,\n\t\t\t\t\t\t45: 3\n\t\t\t\t};\n\t\t\t\treturn sizes[numProps()] ?? 0;\n\t\t}\n\t\tcalcMortonOrder() {\n\t\t\t\tconst calcMinMax = (arr)=>{\n\t\t\t\t\t\tlet min = arr[0];\n\t\t\t\t\t\tlet max = arr[0];\n\t\t\t\t\t\tfor(let i = 1; i < arr.length; i++){\n\t\t\t\t\t\t\t\tif (arr[i] < min) min = arr[i];\n\t\t\t\t\t\t\t\tif (arr[i] > max) max = arr[i];\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tmin,\n\t\t\t\t\t\t\t\tmax\n\t\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t\tconst encodeMorton3 = (x, y, z)=>{\n\t\t\t\t\t\tconst Part1By2 = (x)=>{\n\t\t\t\t\t\t\t\tx &= 0x000003ff;\n\t\t\t\t\t\t\t\tx = (x ^ x << 16) & 0xff0000ff;\n\t\t\t\t\t\t\t\tx = (x ^ x << 8) & 0x0300f00f;\n\t\t\t\t\t\t\t\tx = (x ^ x << 4) & 0x030c30c3;\n\t\t\t\t\t\t\t\tx = (x ^ x << 2) & 0x09249249;\n\t\t\t\t\t\t\t\treturn x;\n\t\t\t\t\t\t};\n\t\t\t\t\t\treturn (Part1By2(z) << 2) + (Part1By2(y) << 1) + Part1By2(x);\n\t\t\t\t};\n\t\t\t\tconst x = this.getProp('x');\n\t\t\t\tconst y = this.getProp('y');\n\t\t\t\tconst z = this.getProp('z');\n\t\t\t\tconst { min: minX, max: maxX } = calcMinMax(x);\n\t\t\t\tconst { min: minY, max: maxY } = calcMinMax(y);\n\t\t\t\tconst { min: minZ, max: maxZ } = calcMinMax(z);\n\t\t\t\tconst sizeX = minX === maxX ? 0 : 1024 / (maxX - minX);\n\t\t\t\tconst sizeY = minY === maxY ? 0 : 1024 / (maxY - minY);\n\t\t\t\tconst sizeZ = minZ === maxZ ? 0 : 1024 / (maxZ - minZ);\n\t\t\t\tconst codes = new Map();\n\t\t\t\tfor(let i = 0; i < this.numSplats; i++){\n\t\t\t\t\t\tconst ix = Math.min(1023, Math.floor((x[i] - minX) * sizeX));\n\t\t\t\t\t\tconst iy = Math.min(1023, Math.floor((y[i] - minY) * sizeY));\n\t\t\t\t\t\tconst iz = Math.min(1023, Math.floor((z[i] - minZ) * sizeZ));\n\t\t\t\t\t\tconst code = encodeMorton3(ix, iy, iz);\n\t\t\t\t\t\tconst val = codes.get(code);\n\t\t\t\t\t\tif (val) {\n\t\t\t\t\t\t\t\tval.push(i);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcodes.set(code, [\n\t\t\t\t\t\t\t\t\t\ti\n\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst keys = Array.from(codes.keys()).sort((a, b)=>a - b);\n\t\t\t\tconst indices = new Uint32Array(this.numSplats);\n\t\t\t\tlet idx = 0;\n\t\t\t\tfor(let i = 0; i < keys.length; ++i){\n\t\t\t\t\t\tconst val = codes.get(keys[i]);\n\t\t\t\t\t\tfor(let j = 0; j < val.length; ++j){\n\t\t\t\t\t\t\t\tindices[idx++] = val[j];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn indices;\n\t\t}\n\t\treorder(order) {\n\t\t\t\tconst cache = new Map();\n\t\t\t\tconst getStorage = (size)=>{\n\t\t\t\t\t\tif (cache.has(size)) {\n\t\t\t\t\t\t\t\tconst buffer = cache.get(size);\n\t\t\t\t\t\t\t\tcache.delete(size);\n\t\t\t\t\t\t\t\treturn buffer;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn new ArrayBuffer(size);\n\t\t\t\t};\n\t\t\t\tconst returnStorage = (buffer)=>{\n\t\t\t\t\t\tcache.set(buffer.byteLength, buffer);\n\t\t\t\t};\n\t\t\t\tconst reorder = (data)=>{\n\t\t\t\t\t\tconst result = new data.constructor(getStorage(data.byteLength));\n\t\t\t\t\t\tfor(let i = 0; i < order.length; i++){\n\t\t\t\t\t\t\t\tresult[i] = data[order[i]];\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturnStorage(data.buffer);\n\t\t\t\t\t\treturn result;\n\t\t\t\t};\n\t\t\t\tthis.elements.forEach((element)=>{\n\t\t\t\t\t\telement.properties.forEach((property)=>{\n\t\t\t\t\t\t\t\tif (property.storage) {\n\t\t\t\t\t\t\t\t\t\tproperty.storage = reorder(property.storage);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t});\n\t\t}\n\t\treorderData() {\n\t\t\t\tthis.reorder(this.calcMortonOrder());\n\t\t}\n}\n\nclass UploadStream {\n\t\tconstructor(device, useSingleBuffer = false){\n\t\t\t\tthis._deviceLostEvent = null;\n\t\t\t\tthis.device = device;\n\t\t\t\tthis.useSingleBuffer = useSingleBuffer;\n\t\t\t\tthis.impl = device.createUploadStreamImpl(this);\n\t\t\t\tthis._deviceLostEvent = this.device.on('devicelost', this._onDeviceLost, this);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis._deviceLostEvent?.off();\n\t\t\t\tthis._deviceLostEvent = null;\n\t\t\t\tthis.impl?.destroy();\n\t\t\t\tthis.impl = null;\n\t\t}\n\t\tupload(data, target, offset = 0, size = data.length) {\n\t\t\t\tthis.impl?.upload(data, target, offset, size);\n\t\t}\n\t\t_onDeviceLost() {\n\t\t\t\tthis.impl?._onDeviceLost?.();\n\t\t}\n}\n\nvar glslGsplatCopyToWorkBufferPS = `\n#define GSPLAT_CENTER_NOPROJ\n#include \"gsplatStructsVS\"\n#include \"gsplatCenterVS\"\n#include \"gsplatEvalSHVS\"\n#include \"gsplatQuatToMat3VS\"\n#include \"gsplatSourceFormatVS\"\n#include \"packHalfPS\"\nuniform int uStartLine;\nuniform int uViewportWidth;\n#ifdef GSPLAT_LOD\n\tuniform usampler2D uIntervalsTexture;\n#endif\nuniform vec3 uColorMultiply;\nuniform int uActiveSplats;\nvoid main(void) {\n\tivec2 localFragCoords = ivec2(int(gl_FragCoord.x), int(gl_FragCoord.y) - uStartLine);\n\tint targetIndex = localFragCoords.y * uViewportWidth + localFragCoords.x;\n\tif (targetIndex >= uActiveSplats) {\n\t\t#ifdef GSPLAT_COLOR_UINT\n\t\t\tpcFragColor0 = uvec4(0u);\n\t\t#else\n\t\t\tpcFragColor0 = vec4(0.0);\n\t\t#endif\n\t\t#ifndef GSPLAT_COLOR_ONLY\n\t\t\tpcFragColor1 = uvec4(0u);\n\t\t\tpcFragColor2 = uvec2(0u);\n\t\t#endif\n\t} else {\n\t\t#ifdef GSPLAT_LOD\n\t\t\tint intervalsSize = int(textureSize(uIntervalsTexture, 0).x);\n\t\t\tivec2 intervalUV = ivec2(targetIndex % intervalsSize, targetIndex / intervalsSize);\n\t\t\tuint originalIndex = texelFetch(uIntervalsTexture, intervalUV, 0).r;\n\t\t#else\n\t\t\tuint originalIndex = uint(targetIndex);\n\t\t#endif\n\t\t\n\t\t#if defined(GSPLAT_SOGS_DATA) || defined(GSPLAT_COMPRESSED_DATA)\n\t\t\tuint srcSize = uint(textureSize(packedTexture, 0).x);\n\t\t#else\n\t\t\tuint srcSize = uint(textureSize(splatColor, 0).x);\n\t\t#endif\n\t\t\n\t\tSplatSource source;\n\t\tsource.id = uint(originalIndex);\n\t\tsource.uv = ivec2(source.id % srcSize, source.id / srcSize);\n\t\tvec3 modelCenter = readCenter(source);\n\t\tvec3 worldCenter = (matrix_model * vec4(modelCenter, 1.0)).xyz;\n\t\tSplatCenter center;\n\t\tinitCenter(modelCenter, center);\n\t\tvec3 covA, covB;\n\t\treadCovariance(source, covA, covB);\n\t\tmat3 C = mat3(\n\t\t\tcovA.x, covA.y, covA.z,\n\t\t\tcovA.y, covB.x, covB.y,\n\t\t\tcovA.z, covB.y, covB.z\n\t\t);\n\t\tmat3 linear = mat3(matrix_model);\n\t\tmat3 Ct = linear * C * transpose(linear);\n\t\tcovA = Ct[0];\n\t\tcovB = vec3(Ct[1][1], Ct[1][2], Ct[2][2]);\n\t\tvec4 color = readColor(source);\n\t\t#if SH_BANDS > 0\n\t\t\tvec3 dir = normalize(center.view * mat3(center.modelView));\n\t\t\tvec3 sh[SH_COEFFS];\n\t\t\tfloat scale;\n\t\t\treadSHData(source, sh, scale);\n\t\t\tcolor.xyz += evalSH(sh, dir) * scale;\n\t\t#endif\n\t\tcolor.xyz *= uColorMultiply;\n\t\t#ifdef GSPLAT_COLOR_UINT\n\t\t\tuint packed_rg = packHalf2x16(color.rg);\n\t\t\tuint packed_ba = packHalf2x16(color.ba);\n\t\t\tpcFragColor0 = uvec4(\n\t\t\t\tpacked_rg & 0xFFFFu,\n\t\t\t\tpacked_rg >> 16u,\n\t\t\t\tpacked_ba & 0xFFFFu,\n\t\t\t\tpacked_ba >> 16u\n\t\t\t);\n\t\t#else\n\t\t\tpcFragColor0 = color;\n\t\t#endif\n\t\t#ifndef GSPLAT_COLOR_ONLY\n\t\t\tpcFragColor1 = uvec4(floatBitsToUint(worldCenter.x), floatBitsToUint(worldCenter.y), floatBitsToUint(worldCenter.z), packHalf2x16Safe(vec2(covA.z, covB.z)));\n\t\t\tpcFragColor2 = uvec2(packHalf2x16Safe(covA.xy), packHalf2x16Safe(covB.xy));\n\t\t#endif\n\t}\n}\n`;\n\nvar wgslGsplatCopyToWorkBufferPS = `\n#define GSPLAT_CENTER_NOPROJ\n#include \"gsplatStructsVS\"\n#include \"gsplatCenterVS\"\n#include \"gsplatEvalSHVS\"\n#include \"gsplatQuatToMat3VS\"\n#include \"gsplatSourceFormatVS\"\n#include \"packHalfPS\"\nuniform uStartLine: i32;\nuniform uViewportWidth: i32;\n#ifdef GSPLAT_LOD\n\tvar uIntervalsTexture: texture_2d<u32>;\n#endif\nuniform uColorMultiply: vec3f;\nuniform uActiveSplats: i32;\n@fragment\nfn fragmentMain(input: FragmentInput) -> FragmentOutput {\n\tvar output: FragmentOutput;\n\t\n\tlet localFragCoords = vec2i(i32(input.position.x), i32(input.position.y) - uniform.uStartLine);\n\tlet targetIndex = localFragCoords.y * uniform.uViewportWidth + localFragCoords.x;\n\t\n\tif (targetIndex >= uniform.uActiveSplats) {\n\t\toutput.color = vec4f(0.0);\n\t\t#ifndef GSPLAT_COLOR_ONLY\n\t\t\toutput.color1 = vec4u(0u);\n\t\t\toutput.color2 = vec2u(0u);\n\t\t#endif\n\t} else {\n\t\t#ifdef GSPLAT_LOD\n\t\t\tlet intervalsSize = i32(textureDimensions(uIntervalsTexture, 0).x);\n\t\t\tlet intervalUV = vec2i(targetIndex % intervalsSize, targetIndex / intervalsSize);\n\t\t\tlet originalIndex = textureLoad(uIntervalsTexture, intervalUV, 0).r;\n\t\t#else\n\t\t\tlet originalIndex = targetIndex;\n\t\t#endif\n\t\t\n\t\tvar srcSize: u32;\n\t\t#if defined(GSPLAT_SOGS_DATA) || defined(GSPLAT_COMPRESSED_DATA)\n\t\t\tsrcSize = u32(textureDimensions(packedTexture, 0).x);\n\t\t#else\n\t\t\tsrcSize = u32(textureDimensions(splatColor, 0).x);\n\t\t#endif\n\t\t\n\t\tvar source: SplatSource;\n\t\tsource.id = u32(originalIndex);\n\t\tsource.uv = vec2i(i32(source.id % srcSize), i32(source.id / srcSize));\n\t\tvar modelCenter = readCenter(&source);\n\t\tlet worldCenter = (uniform.matrix_model * vec4f(modelCenter, 1.0)).xyz;\n\t\tvar center: SplatCenter;\n\t\tinitCenter(modelCenter, &center);\n\t\tvar covA: vec3f;\n\t\tvar covB: vec3f;\n\t\treadCovariance(&source, &covA, &covB);\n\t\tlet C = mat3x3f(\n\t\t\tvec3f(covA.x, covA.y, covA.z),\n\t\t\tvec3f(covA.y, covB.x, covB.y),\n\t\t\tvec3f(covA.z, covB.y, covB.z)\n\t\t);\n\t\tlet linear = mat3x3f(uniform.matrix_model[0].xyz, uniform.matrix_model[1].xyz, uniform.matrix_model[2].xyz);\n\t\tlet Ct = linear * C * transpose(linear);\n\t\tcovA = Ct[0];\n\t\tcovB = vec3f(Ct[1][1], Ct[1][2], Ct[2][2]);\n\t\tvar color = readColor(&source);\n\t\t#if SH_BANDS > 0\n\t\t\tlet dir = normalize(center.view * mat3x3f(center.modelView[0].xyz, center.modelView[1].xyz, center.modelView[2].xyz));\n\t\t\tvar sh: array<vec3f, SH_COEFFS>;\n\t\t\tvar scale: f32;\n\t\t\treadSHData(&source, &sh, &scale);\n\t\t\tcolor = vec4f(color.xyz + evalSH(&sh, dir) * scale, color.w);\n\t\t#endif\n\t\tcolor = vec4f(color.xyz * uniform.uColorMultiply, color.w);\n\t\toutput.color = color;\n\t\t#ifndef GSPLAT_COLOR_ONLY\n\t\t\toutput.color1 = vec4u(bitcast<u32>(worldCenter.x), bitcast<u32>(worldCenter.y), bitcast<u32>(worldCenter.z), pack2x16floatSafe(vec2f(covA.z, covB.z)));\n\t\t\toutput.color2 = vec2u(pack2x16floatSafe(covA.xy), pack2x16floatSafe(covB.xy));\n\t\t#endif\n\t}\n\t\n\treturn output;\n}\n`;\n\nconst _viewMat = new Mat4();\nconst _whiteColor = [\n\t\t1,\n\t\t1,\n\t\t1\n];\nclass GSplatWorkBufferRenderPass extends RenderPass {\n\t\tconstructor(device, workBuffer, colorOnly = false){\n\t\t\t\tsuper(device), this.splats = [], this.colorsByLod = undefined, this.cameraNode = null;\n\t\t\t\tthis.workBuffer = workBuffer;\n\t\t\t\tthis.colorOnly = colorOnly;\n\t\t}\n\t\tinit(renderTarget) {\n\t\t\t\tsuper.init(renderTarget);\n\t\t\t\tthis.colorOps.clear = false;\n\t\t\t\tthis.depthStencilOps.clearDepth = false;\n\t\t}\n\t\tupdate(splats, cameraNode, colorsByLod) {\n\t\t\t\tthis.splats.length = 0;\n\t\t\t\tthis.colorsByLod = colorsByLod;\n\t\t\t\tfor(let i = 0; i < splats.length; i++){\n\t\t\t\t\t\tconst splatInfo = splats[i];\n\t\t\t\t\t\tif (splatInfo.activeSplats > 0) {\n\t\t\t\t\t\t\t\tthis.splats.push(splatInfo);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.cameraNode = cameraNode;\n\t\t\t\treturn this.splats.length > 0;\n\t\t}\n\t\texecute() {\n\t\t\t\tconst { device, splats, cameraNode } = this;\n\t\t\t\tdevice.setBlendState(BlendState.NOBLEND);\n\t\t\t\tdevice.setCullMode(CULLFACE_NONE);\n\t\t\t\tdevice.setDepthState(DepthState.NODEPTH);\n\t\t\t\tdevice.setStencilState();\n\t\t\t\tconst viewInvMat = cameraNode.getWorldTransform();\n\t\t\t\tconst viewMat = _viewMat.copy(viewInvMat).invert();\n\t\t\t\tdevice.scope.resolve('matrix_view').setValue(viewMat.data);\n\t\t\t\tfor(let i = 0; i < splats.length; i++){\n\t\t\t\t\t\tthis.renderSplat(splats[i]);\n\t\t\t\t}\n\t\t}\n\t\trenderSplat(splatInfo) {\n\t\t\t\tconst { device, resource } = splatInfo;\n\t\t\t\tconst scope = device.scope;\n\t\t\t\tconst { intervals, activeSplats, lineStart, viewport, intervalTexture } = splatInfo;\n\t\t\t\tconst workBufferRenderInfo = resource.getWorkBufferRenderInfo(intervals.length > 0, this.workBuffer.colorTextureFormat, this.colorOnly);\n\t\t\t\tworkBufferRenderInfo.material.setParameters(device);\n\t\t\t\tif (intervalTexture) {\n\t\t\t\t\t\tscope.resolve('uIntervalsTexture').setValue(intervalTexture.texture);\n\t\t\t\t}\n\t\t\t\tscope.resolve('uActiveSplats').setValue(activeSplats);\n\t\t\t\tscope.resolve('uStartLine').setValue(lineStart);\n\t\t\t\tscope.resolve('uViewportWidth').setValue(viewport.z);\n\t\t\t\tconst color = this.colorsByLod?.[splatInfo.lodIndex] ?? this.colorsByLod?.[0] ?? _whiteColor;\n\t\t\t\tscope.resolve('uColorMultiply').setValue(color);\n\t\t\t\tscope.resolve('matrix_model').setValue(splatInfo.node.getWorldTransform().data);\n\t\t\t\tworkBufferRenderInfo.quadRender.render(viewport);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.splats.length = 0;\n\t\t\t\tsuper.destroy();\n\t\t}\n}\n\nlet id$1 = 0;\nclass WorkBufferRenderInfo {\n\t\tconstructor(device, key, material, colorTextureFormat, colorOnly){\n\t\t\t\tthis.device = device;\n\t\t\t\tthis.material = material;\n\t\t\t\tconst clonedDefines = new Map(material.defines);\n\t\t\t\tconst isColorUint = colorTextureFormat === PIXELFORMAT_RGBA16U;\n\t\t\t\tconst colorOutputType = isColorUint ? 'uvec4' : 'vec4';\n\t\t\t\tif (isColorUint) {\n\t\t\t\t\t\tclonedDefines.set('GSPLAT_COLOR_UINT', '');\n\t\t\t\t}\n\t\t\t\tif (colorOnly) {\n\t\t\t\t\t\tclonedDefines.set('GSPLAT_COLOR_ONLY', '');\n\t\t\t\t}\n\t\t\t\tconst shader = ShaderUtils.createShader(this.device, {\n\t\t\t\t\t\tuniqueName: `SplatCopyToWorkBuffer:${key}`,\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\tvertex_position: SEMANTIC_POSITION\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvertexDefines: clonedDefines,\n\t\t\t\t\t\tfragmentDefines: clonedDefines,\n\t\t\t\t\t\tvertexChunk: 'fullscreenQuadVS',\n\t\t\t\t\t\tfragmentGLSL: glslGsplatCopyToWorkBufferPS,\n\t\t\t\t\t\tfragmentWGSL: wgslGsplatCopyToWorkBufferPS,\n\t\t\t\t\t\tfragmentOutputTypes: colorOnly ? [\n\t\t\t\t\t\t\t\tcolorOutputType\n\t\t\t\t\t\t] : [\n\t\t\t\t\t\t\t\tcolorOutputType,\n\t\t\t\t\t\t\t\t'uvec4',\n\t\t\t\t\t\t\t\t'uvec2'\n\t\t\t\t\t\t]\n\t\t\t\t});\n\t\t\t\tthis.quadRender = new QuadRender(shader);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.material?.destroy();\n\t\t\t\tthis.quadRender?.destroy();\n\t\t}\n}\nclass GSplatWorkBuffer {\n\t\tconstructor(device){\n\t\t\t\tthis.id = id$1++;\n\t\t\t\tthis._textureSize = 1;\n\t\t\t\tthis.device = device;\n\t\t\t\tthis.colorTextureFormat = device.getRenderableHdrFormat([\n\t\t\t\t\t\tPIXELFORMAT_RGBA16F\n\t\t\t\t]) || PIXELFORMAT_RGBA16U;\n\t\t\t\tthis.colorTexture = this.createTexture('splatColor', this.colorTextureFormat, 1, 1);\n\t\t\t\tthis.splatTexture0 = this.createTexture('splatTexture0', PIXELFORMAT_RGBA32U, 1, 1);\n\t\t\t\tthis.splatTexture1 = this.createTexture('splatTexture1', PIXELFORMAT_RG32U, 1, 1);\n\t\t\t\tthis.renderTarget = new RenderTarget({\n\t\t\t\t\t\tname: `GsplatWorkBuffer-MRT-${this.id}`,\n\t\t\t\t\t\tcolorBuffers: [\n\t\t\t\t\t\t\t\tthis.colorTexture,\n\t\t\t\t\t\t\t\tthis.splatTexture0,\n\t\t\t\t\t\t\t\tthis.splatTexture1\n\t\t\t\t\t\t],\n\t\t\t\t\t\tdepth: false,\n\t\t\t\t\t\tflipY: true\n\t\t\t\t});\n\t\t\t\tthis.colorRenderTarget = new RenderTarget({\n\t\t\t\t\t\tname: `GsplatWorkBuffer-Color-${this.id}`,\n\t\t\t\t\t\tcolorBuffer: this.colorTexture,\n\t\t\t\t\t\tdepth: false,\n\t\t\t\t\t\tflipY: true\n\t\t\t\t});\n\t\t\t\tthis.uploadStream = new UploadStream(device);\n\t\t\t\tif (device.isWebGPU) {\n\t\t\t\t\t\tthis.orderBuffer = new StorageBuffer(device, 4, BUFFERUSAGE_COPY_DST);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.orderTexture = this.createTexture('SplatGlobalOrder', PIXELFORMAT_R32U, 1, 1);\n\t\t\t\t}\n\t\t\t\tthis.renderPass = new GSplatWorkBufferRenderPass(device, this);\n\t\t\t\tthis.renderPass.init(this.renderTarget);\n\t\t\t\tthis.colorRenderPass = new GSplatWorkBufferRenderPass(device, this, true);\n\t\t\t\tthis.colorRenderPass.init(this.colorRenderTarget);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.renderPass?.destroy();\n\t\t\t\tthis.colorRenderPass?.destroy();\n\t\t\t\tthis.colorTexture?.destroy();\n\t\t\t\tthis.splatTexture0?.destroy();\n\t\t\t\tthis.splatTexture1?.destroy();\n\t\t\t\tthis.orderTexture?.destroy();\n\t\t\t\tthis.orderBuffer?.destroy();\n\t\t\t\tthis.renderTarget?.destroy();\n\t\t\t\tthis.colorRenderTarget?.destroy();\n\t\t\t\tthis.uploadStream.destroy();\n\t\t}\n\t\tget textureSize() {\n\t\t\t\treturn this._textureSize;\n\t\t}\n\t\tsetOrderData(data) {\n\t\t\t\tif (this.device.isWebGPU) {\n\t\t\t\t\t\tthis.uploadStream.upload(data, this.orderBuffer, 0, data.length);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.uploadStream.upload(data, this.orderTexture, 0, data.length);\n\t\t\t\t}\n\t\t}\n\t\tcreateTexture(name, format, w, h) {\n\t\t\t\treturn new Texture(this.device, {\n\t\t\t\t\t\tname: name,\n\t\t\t\t\t\twidth: w,\n\t\t\t\t\t\theight: h,\n\t\t\t\t\t\tformat: format,\n\t\t\t\t\t\tcubemap: false,\n\t\t\t\t\t\tmipmaps: false,\n\t\t\t\t\t\tminFilter: FILTER_NEAREST,\n\t\t\t\t\t\tmagFilter: FILTER_NEAREST,\n\t\t\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE\n\t\t\t\t});\n\t\t}\n\t\tresize(textureSize) {\n\t\t\t\tthis.renderTarget.resize(textureSize, textureSize);\n\t\t\t\tthis.colorRenderTarget.resize(textureSize, textureSize);\n\t\t\t\tthis._textureSize = textureSize;\n\t\t\t\tif (this.device.isWebGPU) {\n\t\t\t\t\t\tconst newByteSize = textureSize * textureSize * 4;\n\t\t\t\t\t\tif (this.orderBuffer.byteSize < newByteSize) {\n\t\t\t\t\t\t\t\tthis.orderBuffer.destroy();\n\t\t\t\t\t\t\t\tthis.orderBuffer = new StorageBuffer(this.device, newByteSize, BUFFERUSAGE_COPY_DST);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.orderTexture.resize(textureSize, textureSize);\n\t\t\t\t}\n\t\t}\n\t\trender(splats, cameraNode, colorsByLod) {\n\t\t\t\tif (this.renderPass.update(splats, cameraNode, colorsByLod)) {\n\t\t\t\t\t\tthis.renderPass.render();\n\t\t\t\t}\n\t\t}\n\t\trenderColor(splats, cameraNode, colorsByLod) {\n\t\t\t\tif (this.colorRenderPass.update(splats, cameraNode, colorsByLod)) {\n\t\t\t\t\t\tthis.colorRenderPass.render();\n\t\t\t\t}\n\t\t}\n}\n\nlet id = 0;\nconst tempMap = new Map();\nclass GSplatResourceBase {\n\t\tconstructor(device, gsplatData){\n\t\t\t\tthis.id = id++;\n\t\t\t\tthis.workBufferRenderInfos = new Map();\n\t\t\t\tthis.device = device;\n\t\t\t\tthis.gsplatData = gsplatData;\n\t\t\t\tthis.centers = gsplatData.getCenters();\n\t\t\t\tthis.aabb = new BoundingBox();\n\t\t\t\tgsplatData.calcAabb(this.aabb);\n\t\t\t\tthis.mesh = GSplatResourceBase.createMesh(device);\n\t\t\t\tthis.instanceIndices = GSplatResourceBase.createInstanceIndices(device, gsplatData.numSplats);\n\t\t\t\tthis.mesh.incRefCount();\n\t\t\t\tthis.mesh.aabb.copy(this.aabb);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.mesh?.destroy();\n\t\t\t\tthis.instanceIndices?.destroy();\n\t\t\t\tthis.workBufferRenderInfos.forEach((info)=>info.destroy());\n\t\t\t\tthis.workBufferRenderInfos.clear();\n\t\t}\n\t\tgetWorkBufferRenderInfo(useIntervals, colorTextureFormat, colorOnly = false) {\n\t\t\t\tthis.configureMaterialDefines(tempMap);\n\t\t\t\tif (useIntervals) tempMap.set('GSPLAT_LOD', '');\n\t\t\t\tif (colorOnly) tempMap.set('GSPLAT_COLOR_ONLY', '');\n\t\t\t\tconst key = Array.from(tempMap.entries()).map(([k, v])=>`${k}=${v}`).join(';');\n\t\t\t\tlet info = this.workBufferRenderInfos.get(key);\n\t\t\t\tif (!info) {\n\t\t\t\t\t\tconst material = new ShaderMaterial();\n\t\t\t\t\t\tthis.configureMaterial(material);\n\t\t\t\t\t\ttempMap.forEach((v, k)=>material.setDefine(k, v));\n\t\t\t\t\t\tinfo = new WorkBufferRenderInfo(this.device, key, material, colorTextureFormat, colorOnly);\n\t\t\t\t\t\tthis.workBufferRenderInfos.set(key, info);\n\t\t\t\t}\n\t\t\t\ttempMap.clear();\n\t\t\t\treturn info;\n\t\t}\n\t\tstatic createMesh(device) {\n\t\t\t\tconst splatInstanceSize = GSplatResourceBase.instanceSize;\n\t\t\t\tconst meshPositions = new Float32Array(12 * splatInstanceSize);\n\t\t\t\tconst meshIndices = new Uint32Array(6 * splatInstanceSize);\n\t\t\t\tfor(let i = 0; i < splatInstanceSize; ++i){\n\t\t\t\t\t\tmeshPositions.set([\n\t\t\t\t\t\t\t\t-1,\n\t\t\t\t\t\t\t\t-1,\n\t\t\t\t\t\t\t\ti,\n\t\t\t\t\t\t\t\t1,\n\t\t\t\t\t\t\t\t-1,\n\t\t\t\t\t\t\t\ti,\n\t\t\t\t\t\t\t\t1,\n\t\t\t\t\t\t\t\t1,\n\t\t\t\t\t\t\t\ti,\n\t\t\t\t\t\t\t\t-1,\n\t\t\t\t\t\t\t\t1,\n\t\t\t\t\t\t\t\ti\n\t\t\t\t\t\t], i * 12);\n\t\t\t\t\t\tconst b = i * 4;\n\t\t\t\t\t\tmeshIndices.set([\n\t\t\t\t\t\t\t\t0 + b,\n\t\t\t\t\t\t\t\t1 + b,\n\t\t\t\t\t\t\t\t2 + b,\n\t\t\t\t\t\t\t\t0 + b,\n\t\t\t\t\t\t\t\t2 + b,\n\t\t\t\t\t\t\t\t3 + b\n\t\t\t\t\t\t], i * 6);\n\t\t\t\t}\n\t\t\t\tconst mesh = new Mesh(device);\n\t\t\t\tmesh.setPositions(meshPositions, 3);\n\t\t\t\tmesh.setIndices(meshIndices);\n\t\t\t\tmesh.update();\n\t\t\t\treturn mesh;\n\t\t}\n\t\tstatic createInstanceIndices(device, splatCount) {\n\t\t\t\tconst splatInstanceSize = GSplatResourceBase.instanceSize;\n\t\t\t\tconst numSplats = Math.ceil(splatCount / splatInstanceSize) * splatInstanceSize;\n\t\t\t\tconst numSplatInstances = numSplats / splatInstanceSize;\n\t\t\t\tconst indexData = new Uint32Array(numSplatInstances);\n\t\t\t\tfor(let i = 0; i < numSplatInstances; ++i){\n\t\t\t\t\t\tindexData[i] = i * splatInstanceSize;\n\t\t\t\t}\n\t\t\t\tconst vertexFormat = new VertexFormat(device, [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tsemantic: SEMANTIC_ATTR13,\n\t\t\t\t\t\t\t\tcomponents: 1,\n\t\t\t\t\t\t\t\ttype: TYPE_UINT32,\n\t\t\t\t\t\t\t\tasInt: true\n\t\t\t\t\t\t}\n\t\t\t\t]);\n\t\t\t\tconst instanceIndices = new VertexBuffer(device, vertexFormat, numSplatInstances, {\n\t\t\t\t\t\tusage: BUFFER_STATIC,\n\t\t\t\t\t\tdata: indexData.buffer\n\t\t\t\t});\n\t\t\t\treturn instanceIndices;\n\t\t}\n\t\tstatic get instanceSize() {\n\t\t\t\treturn 128;\n\t\t}\n\t\tget numSplats() {\n\t\t\t\treturn this.gsplatData.numSplats;\n\t\t}\n\t\tconfigureMaterial(material) {}\n\t\tconfigureMaterialDefines(defines) {}\n\t\tevalTextureSize(count) {\n\t\t\t\treturn Vec2.ZERO;\n\t\t}\n\t\tcreateTexture(name, format, size, data) {\n\t\t\t\treturn new Texture(this.device, {\n\t\t\t\t\t\tname: name,\n\t\t\t\t\t\twidth: size.x,\n\t\t\t\t\t\theight: size.y,\n\t\t\t\t\t\tformat: format,\n\t\t\t\t\t\tcubemap: false,\n\t\t\t\t\t\tmipmaps: false,\n\t\t\t\t\t\tminFilter: FILTER_NEAREST,\n\t\t\t\t\t\tmagFilter: FILTER_NEAREST,\n\t\t\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\t...data ? {\n\t\t\t\t\t\t\t\tlevels: [\n\t\t\t\t\t\t\t\t\t\tdata\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t} : {}\n\t\t\t\t});\n\t\t}\n\t\tinstantiate() {}\n}\n\nconst getSHData = (gsplatData, numCoeffs)=>{\n\t\tconst result = [];\n\t\tfor(let i = 0; i < numCoeffs; ++i){\n\t\t\t\tresult.push(gsplatData.getProp(`f_rest_${i}`));\n\t\t}\n\t\treturn result;\n};\nclass GSplatResource extends GSplatResourceBase {\n\t\tconstructor(device, gsplatData){\n\t\t\t\tsuper(device, gsplatData);\n\t\t\t\tconst numSplats = gsplatData.numSplats;\n\t\t\t\tconst size = this.evalTextureSize(numSplats);\n\t\t\t\tthis.colorTexture = this.createTexture('splatColor', PIXELFORMAT_RGBA16F, size);\n\t\t\t\tthis.transformATexture = this.createTexture('transformA', PIXELFORMAT_RGBA32U, size);\n\t\t\t\tthis.transformBTexture = this.createTexture('transformB', PIXELFORMAT_RGBA16F, size);\n\t\t\t\tthis.updateColorData(gsplatData);\n\t\t\t\tthis.updateTransformData(gsplatData);\n\t\t\t\tthis.shBands = gsplatData.shBands;\n\t\t\t\tif (this.shBands > 0) {\n\t\t\t\t\t\tthis.sh1to3Texture = this.createTexture('splatSH_1to3', PIXELFORMAT_RGBA32U, size);\n\t\t\t\t\t\tif (this.shBands > 1) {\n\t\t\t\t\t\t\t\tthis.sh4to7Texture = this.createTexture('splatSH_4to7', PIXELFORMAT_RGBA32U, size);\n\t\t\t\t\t\t\t\tif (this.shBands > 2) {\n\t\t\t\t\t\t\t\t\t\tthis.sh8to11Texture = this.createTexture('splatSH_8to11', PIXELFORMAT_RGBA32U, size);\n\t\t\t\t\t\t\t\t\t\tthis.sh12to15Texture = this.createTexture('splatSH_12to15', PIXELFORMAT_RGBA32U, size);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis.sh8to11Texture = this.createTexture('splatSH_8to11', PIXELFORMAT_R32U, size);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.updateSHData(gsplatData);\n\t\t\t\t}\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.colorTexture?.destroy();\n\t\t\t\tthis.transformATexture?.destroy();\n\t\t\t\tthis.transformBTexture?.destroy();\n\t\t\t\tthis.sh1to3Texture?.destroy();\n\t\t\t\tthis.sh4to7Texture?.destroy();\n\t\t\t\tthis.sh8to11Texture?.destroy();\n\t\t\t\tthis.sh12to15Texture?.destroy();\n\t\t\t\tsuper.destroy();\n\t\t}\n\t\tconfigureMaterialDefines(defines) {\n\t\t\t\tdefines.set('SH_BANDS', this.shBands);\n\t\t}\n\t\tconfigureMaterial(material) {\n\t\t\t\tthis.configureMaterialDefines(material.defines);\n\t\t\t\tmaterial.setParameter('splatColor', this.colorTexture);\n\t\t\t\tmaterial.setParameter('transformA', this.transformATexture);\n\t\t\t\tmaterial.setParameter('transformB', this.transformBTexture);\n\t\t\t\tif (this.sh1to3Texture) material.setParameter('splatSH_1to3', this.sh1to3Texture);\n\t\t\t\tif (this.sh4to7Texture) material.setParameter('splatSH_4to7', this.sh4to7Texture);\n\t\t\t\tif (this.sh8to11Texture) material.setParameter('splatSH_8to11', this.sh8to11Texture);\n\t\t\t\tif (this.sh12to15Texture) material.setParameter('splatSH_12to15', this.sh12to15Texture);\n\t\t}\n\t\tevalTextureSize(count) {\n\t\t\t\tconst width = Math.ceil(Math.sqrt(count));\n\t\t\t\tconst height = Math.ceil(count / width);\n\t\t\t\treturn new Vec2(width, height);\n\t\t}\n\t\tupdateColorData(gsplatData) {\n\t\t\t\tconst texture = this.colorTexture;\n\t\t\t\tif (!texture) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst float2Half = FloatPacking.float2Half;\n\t\t\t\tconst data = texture.lock();\n\t\t\t\tconst cr = gsplatData.getProp('f_dc_0');\n\t\t\t\tconst cg = gsplatData.getProp('f_dc_1');\n\t\t\t\tconst cb = gsplatData.getProp('f_dc_2');\n\t\t\t\tconst ca = gsplatData.getProp('opacity');\n\t\t\t\tconst SH_C0 = 0.28209479177387814;\n\t\t\t\tfor(let i = 0; i < this.numSplats; ++i){\n\t\t\t\t\t\tconst r = cr[i] * SH_C0 + 0.5;\n\t\t\t\t\t\tconst g = cg[i] * SH_C0 + 0.5;\n\t\t\t\t\t\tconst b = cb[i] * SH_C0 + 0.5;\n\t\t\t\t\t\tconst a = 1 / (1 + Math.exp(-ca[i]));\n\t\t\t\t\t\tdata[i * 4 + 0] = float2Half(r);\n\t\t\t\t\t\tdata[i * 4 + 1] = float2Half(g);\n\t\t\t\t\t\tdata[i * 4 + 2] = float2Half(b);\n\t\t\t\t\t\tdata[i * 4 + 3] = float2Half(a);\n\t\t\t\t}\n\t\t\t\ttexture.unlock();\n\t\t}\n\t\tupdateTransformData(gsplatData) {\n\t\t\t\tconst float2Half = FloatPacking.float2Half;\n\t\t\t\tif (!this.transformATexture) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst dataA = this.transformATexture.lock();\n\t\t\t\tconst dataAFloat32 = new Float32Array(dataA.buffer);\n\t\t\t\tconst dataB = this.transformBTexture.lock();\n\t\t\t\tconst p = new Vec3();\n\t\t\t\tconst r = new Quat();\n\t\t\t\tconst s = new Vec3();\n\t\t\t\tconst iter = gsplatData.createIter(p, r, s);\n\t\t\t\tfor(let i = 0; i < this.numSplats; i++){\n\t\t\t\t\t\titer.read(i);\n\t\t\t\t\t\tr.normalize();\n\t\t\t\t\t\tif (r.w < 0) {\n\t\t\t\t\t\t\t\tr.mulScalar(-1);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdataAFloat32[i * 4 + 0] = p.x;\n\t\t\t\t\t\tdataAFloat32[i * 4 + 1] = p.y;\n\t\t\t\t\t\tdataAFloat32[i * 4 + 2] = p.z;\n\t\t\t\t\t\tdataA[i * 4 + 3] = float2Half(r.x) | float2Half(r.y) << 16;\n\t\t\t\t\t\tdataB[i * 4 + 0] = float2Half(s.x);\n\t\t\t\t\t\tdataB[i * 4 + 1] = float2Half(s.y);\n\t\t\t\t\t\tdataB[i * 4 + 2] = float2Half(s.z);\n\t\t\t\t\t\tdataB[i * 4 + 3] = float2Half(r.z);\n\t\t\t\t}\n\t\t\t\tthis.transformATexture.unlock();\n\t\t\t\tthis.transformBTexture.unlock();\n\t\t}\n\t\tupdateSHData(gsplatData) {\n\t\t\t\tconst sh1to3Data = this.sh1to3Texture.lock();\n\t\t\t\tconst sh4to7Data = this.sh4to7Texture?.lock();\n\t\t\t\tconst sh8to11Data = this.sh8to11Texture?.lock();\n\t\t\t\tconst sh12to15Data = this.sh12to15Texture?.lock();\n\t\t\t\tconst numCoeffs = {\n\t\t\t\t\t\t1: 3,\n\t\t\t\t\t\t2: 8,\n\t\t\t\t\t\t3: 15\n\t\t\t\t}[this.shBands];\n\t\t\t\tconst src = getSHData(gsplatData, numCoeffs * 3);\n\t\t\t\tconst t11 = (1 << 11) - 1;\n\t\t\t\tconst t10 = (1 << 10) - 1;\n\t\t\t\tconst float32 = new Float32Array(1);\n\t\t\t\tconst uint32 = new Uint32Array(float32.buffer);\n\t\t\t\tconst c = new Array(numCoeffs * 3).fill(0);\n\t\t\t\tfor(let i = 0; i < gsplatData.numSplats; ++i){\n\t\t\t\t\t\tfor(let j = 0; j < numCoeffs; ++j){\n\t\t\t\t\t\t\t\tc[j * 3] = src[j][i];\n\t\t\t\t\t\t\t\tc[j * 3 + 1] = src[j + numCoeffs][i];\n\t\t\t\t\t\t\t\tc[j * 3 + 2] = src[j + numCoeffs * 2][i];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlet max = c[0];\n\t\t\t\t\t\tfor(let j = 1; j < numCoeffs * 3; ++j){\n\t\t\t\t\t\t\t\tmax = Math.max(max, Math.abs(c[j]));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (max === 0) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor(let j = 0; j < numCoeffs; ++j){\n\t\t\t\t\t\t\t\tc[j * 3 + 0] = Math.max(0, Math.min(t11, Math.floor((c[j * 3 + 0] / max * 0.5 + 0.5) * t11 + 0.5)));\n\t\t\t\t\t\t\t\tc[j * 3 + 1] = Math.max(0, Math.min(t10, Math.floor((c[j * 3 + 1] / max * 0.5 + 0.5) * t10 + 0.5)));\n\t\t\t\t\t\t\t\tc[j * 3 + 2] = Math.max(0, Math.min(t11, Math.floor((c[j * 3 + 2] / max * 0.5 + 0.5) * t11 + 0.5)));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfloat32[0] = max;\n\t\t\t\t\t\tsh1to3Data[i * 4 + 0] = uint32[0];\n\t\t\t\t\t\tsh1to3Data[i * 4 + 1] = c[0] << 21 | c[1] << 11 | c[2];\n\t\t\t\t\t\tsh1to3Data[i * 4 + 2] = c[3] << 21 | c[4] << 11 | c[5];\n\t\t\t\t\t\tsh1to3Data[i * 4 + 3] = c[6] << 21 | c[7] << 11 | c[8];\n\t\t\t\t\t\tif (this.shBands > 1) {\n\t\t\t\t\t\t\t\tsh4to7Data[i * 4 + 0] = c[9] << 21 | c[10] << 11 | c[11];\n\t\t\t\t\t\t\t\tsh4to7Data[i * 4 + 1] = c[12] << 21 | c[13] << 11 | c[14];\n\t\t\t\t\t\t\t\tsh4to7Data[i * 4 + 2] = c[15] << 21 | c[16] << 11 | c[17];\n\t\t\t\t\t\t\t\tsh4to7Data[i * 4 + 3] = c[18] << 21 | c[19] << 11 | c[20];\n\t\t\t\t\t\t\t\tif (this.shBands > 2) {\n\t\t\t\t\t\t\t\t\t\tsh8to11Data[i * 4 + 0] = c[21] << 21 | c[22] << 11 | c[23];\n\t\t\t\t\t\t\t\t\t\tsh8to11Data[i * 4 + 1] = c[24] << 21 | c[25] << 11 | c[26];\n\t\t\t\t\t\t\t\t\t\tsh8to11Data[i * 4 + 2] = c[27] << 21 | c[28] << 11 | c[29];\n\t\t\t\t\t\t\t\t\t\tsh8to11Data[i * 4 + 3] = c[30] << 21 | c[31] << 11 | c[32];\n\t\t\t\t\t\t\t\t\t\tsh12to15Data[i * 4 + 0] = c[33] << 21 | c[34] << 11 | c[35];\n\t\t\t\t\t\t\t\t\t\tsh12to15Data[i * 4 + 1] = c[36] << 21 | c[37] << 11 | c[38];\n\t\t\t\t\t\t\t\t\t\tsh12to15Data[i * 4 + 2] = c[39] << 21 | c[40] << 11 | c[41];\n\t\t\t\t\t\t\t\t\t\tsh12to15Data[i * 4 + 3] = c[42] << 21 | c[43] << 11 | c[44];\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tsh8to11Data[i] = c[21] << 21 | c[22] << 11 | c[23];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.sh1to3Texture.unlock();\n\t\t\t\tthis.sh4to7Texture?.unlock();\n\t\t\t\tthis.sh8to11Texture?.unlock();\n\t\t\t\tthis.sh12to15Texture?.unlock();\n\t\t}\n}\n\nconst vertexGLSL = `\n\tattribute vec2 vertex_position;\n\tvoid main(void) {\n\t\tgl_Position = vec4(vertex_position, 0.0, 1.0);\n\t}\n`;\nconst fragmentGLSL = `\n\t#include \"gsplatEvalSHVS\"\n\tvec4 packRgb(vec3 v) {\n\t\tuvec3 vb = uvec3(clamp(v, vec3(0.0), vec3(1.0)) * vec3(2047.0, 2047.0, 1023.0));\n\t\tuint bits = (vb.x << 21) | (vb.y << 10) | vb.z;\n\t\treturn vec4((uvec4(bits) >> uvec4(24, 16, 8, 0)) & uvec4(0xff)) / vec4(255.0);\n\t}\n\tuniform mediump vec3 dir;\n\tuniform mediump sampler2D centroids;\n\tuniform mediump float shN_mins;\n\tuniform mediump float shN_maxs;\n\tvoid main(void) {\n\t\tivec2 uv = ivec2(gl_FragCoord.xy) * ivec2(SH_COEFFS, 1);\n\t\tmediump vec3 coefficients[SH_COEFFS];\n\t\tfor (int i = 0; i < SH_COEFFS; i++) {\n\t\t\tvec3 s = texelFetch(centroids, ivec2(uv.x + i, uv.y), 0).xyz;\n\t\t\tcoefficients[i] = mix(vec3(shN_mins), vec3(shN_maxs), s);\n\t\t}\n\t\tgl_FragColor = packRgb(evalSH(coefficients, dir) * 0.25 + 0.5);\n\t}\n`;\nconst vertexWGSL = `\n\tattribute vertex_position: vec2f;\n\t@vertex\n\tfn vertexMain(input: VertexInput) -> VertexOutput {\n\t\tvar output: VertexOutput;\n\t\toutput.position = vec4f(vertex_position, 0.0, 1.0);\n\t\treturn output;\n\t}\n`;\nconst fragmentWGSL = `\n\t#include \"gsplatEvalSHVS\"\n\tfn packRgb(v: vec3f) -> vec4f {\n\t\tlet vb = vec3u(clamp(v, vec3f(0.0), vec3f(1.0)) * vec3f(2047.0, 2047.0, 1023.0));\n\t\tlet bits = dot(vb, vec3u(1 << 21, 1 << 10, 1));\n\t\treturn vec4f((vec4u(bits) >> vec4u(24, 16, 8, 0)) & vec4u(0xff)) / vec4f(255.0);\n\t}\n\tuniform dir: vec3f;\n\tuniform shN_mins: f32;\n\tuniform shN_maxs: f32;\n\tvar centroids: texture_2d<f32>;\n\t@fragment\n\tfn fragmentMain(input: FragmentInput) -> FragmentOutput {\n\t\tvar output: FragmentOutput;\n\t\tvar uv = vec2i(input.position.xy) * vec2i(SH_COEFFS, 1);\n\t\tvar coefficients: array<vec3f, SH_COEFFS>;\n\t\tfor (var i: i32 = 0; i < SH_COEFFS; i++) {\n\t\t\tlet s: vec3f = textureLoad(centroids, vec2i(uv.x + i, uv.y), 0).xyz;\n\t\t\tcoefficients[i] = mix(vec3f(uniform.shN_mins), vec3f(uniform.shN_maxs), s);\n\t\t}\n\t\toutput.color = packRgb(evalSH(&coefficients, uniform.dir) * 0.25 + 0.5);\n\t\treturn output;\n\t}\n`;\nconst gsplatSogsColorGLSL = `\n\tuniform mediump sampler2D sh0;\n\tuniform highp sampler2D sh_labels;\n\tuniform mediump sampler2D sh_result;\n\tuniform vec4 sh0_mins;\n\tuniform vec4 sh0_maxs;\n\tfloat SH_C0 = 0.28209479177387814;\n\tvec3 unpackRgb(vec4 v) {\n\t\tuvec4 uv = uvec4(v * 255.0);\n\t\tuint bits = (uv.x << 24) | (uv.y << 16) | (uv.z << 8) | uv.w;\n\t\tuvec3 vb = (uvec3(bits) >> uvec3(21, 10, 0)) & uvec3(0x7ffu, 0x7ffu, 0x3ffu);\n\t\treturn vec3(vb) / vec3(2047.0, 2047.0, 1023.0);\n\t}\n\tvec4 readColor(in SplatSource source) {\n\t\tvec4 baseSample = mix(sh0_mins, sh0_maxs, texelFetch(sh0, source.uv, 0));\n\t\tvec4 base = vec4(vec3(0.5) + baseSample.xyz * SH_C0, 1.0 / (1.0 + exp(-baseSample.w)));\n\t\tivec2 labelSample = ivec2(texelFetch(sh_labels, source.uv, 0).xy * 255.0);\n\t\tint n = labelSample.x + labelSample.y * 256;\n\t\tvec4 shSample = texelFetch(sh_result, ivec2(n % 64, n / 64), 0);\n\t\tvec3 sh = (unpackRgb(shSample) - vec3(0.5)) * 4.0;\n\t\treturn vec4(base.xyz + sh, base.w);\n\t}\n`;\nconst gsplatSogsColorWGSL = `\n\tvar sh0: texture_2d<f32>;\n\tvar sh_labels: texture_2d<f32>;\n\tvar sh_result: texture_2d<f32>;\n\tuniform sh0_mins: vec4f;\n\tuniform sh0_maxs: vec4f;\n\tconst SH_C0: f32 = 0.28209479177387814;\n\tfn unpackRgb(v: vec4f) -> vec3f {\n\t\tlet bits = dot(vec4u(v * 255.0), vec4u(1u << 24, 1u << 16, 1u << 8, 1u));\n\t\tlet vb = (vec3u(bits) >> vec3u(21, 10, 0)) & vec3u(0x7ffu, 0x7ffu, 0x3ffu);\n\t\treturn vec3f(vb) / vec3f(2047.0, 2047.0, 1023.0);\n\t}\n\tfn readColor(source: ptr<function, SplatSource>) -> vec4f {\n\t\tlet baseSample: vec4f = mix(uniform.sh0_mins, uniform.sh0_maxs, textureLoad(sh0, source.uv, 0));\n\t\tlet base = vec4f(vec3f(0.5) + baseSample.xyz * SH_C0, 1.0 / (1.0 + exp(-baseSample.w)));\n\t\tlet labelSample: vec2i = vec2i(textureLoad(sh_labels, source.uv, 0).xy * 255.0);\n\t\tlet n = labelSample.x + labelSample.y * 256;\n\t\tlet shSample: vec4f = textureLoad(sh_result, vec2i(n % 64, n / 64), 0);\n\t\tlet sh: vec3f = (unpackRgb(shSample) - vec3f(0.5)) * 4.0;\n\t\treturn vec4f(base.xyz + sh, base.w);\n\t}\n`;\nconst resolve$1 = (scope, values)=>{\n\t\tfor(const key in values){\n\t\t\t\tscope.resolve(key).setValue(values[key]);\n\t\t}\n};\nclass CustomRenderPass extends RenderPass {\n\t\texecute() {\n\t\t\t\tthis.executeCallback?.();\n\t\t}\n\t\tconstructor(...args){\n\t\t\t\tsuper(...args), this.executeCallback = null;\n\t\t}\n}\nconst invModelMat$1 = new Mat4();\nconst dir$3 = new Vec3();\nclass GSplatResolveSH {\n\t\tconstructor(device, gsplatInstance){\n\t\t\t\tthis.prevDir = new Vec3();\n\t\t\t\tthis.updateMode = 'enable';\n\t\t\t\tthis.device = device;\n\t\t\t\tthis.gsplatInstance = gsplatInstance;\n\t\t\t\tconst { resource } = gsplatInstance;\n\t\t\t\tconst includes = new Map(ShaderChunks.get(device, device.isWebGPU ? 'wgsl' : 'glsl'));\n\t\t\t\tthis.shader = ShaderUtils.createShader(device, {\n\t\t\t\t\t\tuniqueName: 'gsplatResolveSH',\n\t\t\t\t\t\tvertexGLSL,\n\t\t\t\t\t\tfragmentGLSL,\n\t\t\t\t\t\tvertexWGSL,\n\t\t\t\t\t\tfragmentWGSL,\n\t\t\t\t\t\tvertexIncludes: includes,\n\t\t\t\t\t\tfragmentIncludes: includes,\n\t\t\t\t\t\tfragmentDefines: new Map([\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t'SH_BANDS',\n\t\t\t\t\t\t\t\t\t\tresource.gsplatData.shBands.toString()\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t]),\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\tvertex_position: SEMANTIC_POSITION\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tthis.texture = resource.createTexture('centroids', PIXELFORMAT_RGBA8, new Vec2(64, 1024));\n\t\t\t\tthis.renderTarget = new RenderTarget({\n\t\t\t\t\t\tcolorBuffer: this.texture,\n\t\t\t\t\t\tdepth: false\n\t\t\t\t});\n\t\t\t\tthis.renderPass = new CustomRenderPass(device);\n\t\t\t\tthis.renderPass.init(this.renderTarget, {});\n\t\t\t\tthis.renderPass.colorOps.clear = true;\n\t\t\t\tthis.quadRender = new QuadRender(this.shader);\n\t\t\t\tconst { material } = gsplatInstance;\n\t\t\t\tmaterial.setDefine('SH_BANDS', '0');\n\t\t\t\tconst { shaderChunks } = material;\n\t\t\t\tshaderChunks.glsl.set('gsplatSogsColorVS', gsplatSogsColorGLSL);\n\t\t\t\tshaderChunks.wgsl.set('gsplatSogsColorVS', gsplatSogsColorWGSL);\n\t\t\t\tmaterial.update();\n\t\t\t\tdevice.scope.resolve('sh_result').setValue(this.texture);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tconst { gsplatInstance } = this;\n\t\t\t\tconst { material } = gsplatInstance;\n\t\t\t\tmaterial.setDefine('SH_BANDS', gsplatInstance.resource.gsplatData.shBands.toString());\n\t\t\t\tconst { shaderChunks } = material;\n\t\t\t\tshaderChunks.glsl.delete('gsplatSogsColorVS');\n\t\t\t\tshaderChunks.wgsl.delete('gsplatSogsColorVS');\n\t\t\t\tmaterial.update();\n\t\t\t\tthis.quadRender.destroy();\n\t\t\t\tthis.renderPass.destroy();\n\t\t\t\tthis.renderTarget.destroy();\n\t\t\t\tthis.texture.destroy();\n\t\t\t\tthis.shader.destroy();\n\t\t}\n\t\trender(camera, modelMat) {\n\t\t\t\tconst { prevDir, updateMode } = this;\n\t\t\t\tif (updateMode === 'disable') {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tinvModelMat$1.invert(modelMat);\n\t\t\t\tinvModelMat$1.transformVector(camera.forward, dir$3);\n\t\t\t\tdir$3.normalize();\n\t\t\t\tif (updateMode === 'enable' && dir$3.equalsApprox(prevDir, 1e-3)) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tprevDir.copy(dir$3);\n\t\t\t\tconst execute = ()=>{\n\t\t\t\t\t\tconst { device } = this;\n\t\t\t\t\t\tconst { sh_centroids, meta } = this.gsplatInstance.resource.gsplatData;\n\t\t\t\t\t\tresolve$1(device.scope, {\n\t\t\t\t\t\t\t\tdir: dir$3.toArray(),\n\t\t\t\t\t\t\t\tcentroids: sh_centroids,\n\t\t\t\t\t\t\t\tshN_mins: meta.shN.mins,\n\t\t\t\t\t\t\t\tshN_maxs: meta.shN.maxs\n\t\t\t\t\t\t});\n\t\t\t\t\t\tdevice.setCullMode(CULLFACE_NONE);\n\t\t\t\t\t\tdevice.setDepthState(DepthState.NODEPTH);\n\t\t\t\t\t\tdevice.setStencilState(null, null);\n\t\t\t\t\t\tdevice.setBlendState(BlendState.NOBLEND);\n\t\t\t\t\t\tthis.quadRender.render();\n\t\t\t\t};\n\t\t\t\tthis.renderPass.executeCallback = execute;\n\t\t\t\tthis.renderPass.render();\n\t\t}\n}\n\nfunction SortWorker() {\n\t\tconst myself = typeof self !== 'undefined' && self || require('node:worker_threads').parentPort;\n\t\tlet order;\n\t\tlet centers;\n\t\tlet chunks;\n\t\tlet mapping;\n\t\tlet cameraPosition;\n\t\tlet cameraDirection;\n\t\tlet forceUpdate = false;\n\t\tconst lastCameraPosition = {\n\t\t\t\tx: 0,\n\t\t\t\ty: 0,\n\t\t\t\tz: 0\n\t\t};\n\t\tconst lastCameraDirection = {\n\t\t\t\tx: 0,\n\t\t\t\ty: 0,\n\t\t\t\tz: 0\n\t\t};\n\t\tconst boundMin = {\n\t\t\t\tx: 0,\n\t\t\t\ty: 0,\n\t\t\t\tz: 0\n\t\t};\n\t\tconst boundMax = {\n\t\t\t\tx: 0,\n\t\t\t\ty: 0,\n\t\t\t\tz: 0\n\t\t};\n\t\tlet distances;\n\t\tlet countBuffer;\n\t\tconst numBins = 32;\n\t\tconst binCount = new Array(numBins).fill(0);\n\t\tconst binBase = new Array(numBins).fill(0);\n\t\tconst binDivider = new Array(numBins).fill(0);\n\t\tconst binarySearch = (m, n, compare_fn)=>{\n\t\t\t\twhile(m <= n){\n\t\t\t\t\t\tconst k = n + m >> 1;\n\t\t\t\t\t\tconst cmp = compare_fn(k);\n\t\t\t\t\t\tif (cmp > 0) {\n\t\t\t\t\t\t\t\tm = k + 1;\n\t\t\t\t\t\t} else if (cmp < 0) {\n\t\t\t\t\t\t\t\tn = k - 1;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn k;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn ~m;\n\t\t};\n\t\tconst update = ()=>{\n\t\t\t\tif (!order || !centers || centers.length === 0 || !cameraPosition || !cameraDirection) return;\n\t\t\t\tconst px = cameraPosition.x;\n\t\t\t\tconst py = cameraPosition.y;\n\t\t\t\tconst pz = cameraPosition.z;\n\t\t\t\tconst dx = cameraDirection.x;\n\t\t\t\tconst dy = cameraDirection.y;\n\t\t\t\tconst dz = cameraDirection.z;\n\t\t\t\tconst epsilon = 0.001;\n\t\t\t\tif (!forceUpdate && Math.abs(px - lastCameraPosition.x) < epsilon && Math.abs(py - lastCameraPosition.y) < epsilon && Math.abs(pz - lastCameraPosition.z) < epsilon && Math.abs(dx - lastCameraDirection.x) < epsilon && Math.abs(dy - lastCameraDirection.y) < epsilon && Math.abs(dz - lastCameraDirection.z) < epsilon) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tforceUpdate = false;\n\t\t\t\tlastCameraPosition.x = px;\n\t\t\t\tlastCameraPosition.y = py;\n\t\t\t\tlastCameraPosition.z = pz;\n\t\t\t\tlastCameraDirection.x = dx;\n\t\t\t\tlastCameraDirection.y = dy;\n\t\t\t\tlastCameraDirection.z = dz;\n\t\t\t\tlet minDist;\n\t\t\t\tlet maxDist;\n\t\t\t\tfor(let i = 0; i < 8; ++i){\n\t\t\t\t\t\tconst x = i & 1 ? boundMin.x : boundMax.x;\n\t\t\t\t\t\tconst y = i & 2 ? boundMin.y : boundMax.y;\n\t\t\t\t\t\tconst z = i & 4 ? boundMin.z : boundMax.z;\n\t\t\t\t\t\tconst d = x * dx + y * dy + z * dz;\n\t\t\t\t\t\tif (i === 0) {\n\t\t\t\t\t\t\t\tminDist = maxDist = d;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tminDist = Math.min(minDist, d);\n\t\t\t\t\t\t\t\tmaxDist = Math.max(maxDist, d);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst numVertices = centers.length / 3;\n\t\t\t\tconst compareBits = Math.max(10, Math.min(20, Math.round(Math.log2(numVertices / 4))));\n\t\t\t\tconst bucketCount = 2 ** compareBits + 1;\n\t\t\t\tif (distances?.length !== numVertices) {\n\t\t\t\t\t\tdistances = new Uint32Array(numVertices);\n\t\t\t\t}\n\t\t\t\tif (!countBuffer || countBuffer.length !== bucketCount) {\n\t\t\t\t\t\tcountBuffer = new Uint32Array(bucketCount);\n\t\t\t\t} else {\n\t\t\t\t\t\tcountBuffer.fill(0);\n\t\t\t\t}\n\t\t\t\tconst range = maxDist - minDist;\n\t\t\t\tif (range < 1e-6) {\n\t\t\t\t\t\tfor(let i = 0; i < numVertices; ++i){\n\t\t\t\t\t\t\t\tdistances[i] = 0;\n\t\t\t\t\t\t\t\tcountBuffer[0]++;\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tconst numChunks = chunks.length / 4;\n\t\t\t\t\t\tbinCount.fill(0);\n\t\t\t\t\t\tfor(let i = 0; i < numChunks; ++i){\n\t\t\t\t\t\t\t\tconst x = chunks[i * 4 + 0];\n\t\t\t\t\t\t\t\tconst y = chunks[i * 4 + 1];\n\t\t\t\t\t\t\t\tconst z = chunks[i * 4 + 2];\n\t\t\t\t\t\t\t\tconst r = chunks[i * 4 + 3];\n\t\t\t\t\t\t\t\tconst d = x * dx + y * dy + z * dz - minDist;\n\t\t\t\t\t\t\t\tconst binMin = Math.max(0, Math.floor((d - r) * numBins / range));\n\t\t\t\t\t\t\t\tconst binMax = Math.min(numBins, Math.ceil((d + r) * numBins / range));\n\t\t\t\t\t\t\t\tfor(let j = binMin; j < binMax; ++j){\n\t\t\t\t\t\t\t\t\t\tbinCount[j]++;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst binTotal = binCount.reduce((a, b)=>a + b, 0);\n\t\t\t\t\t\tfor(let i = 0; i < numBins; ++i){\n\t\t\t\t\t\t\t\tbinDivider[i] = binCount[i] / binTotal * bucketCount >>> 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor(let i = 0; i < numBins; ++i){\n\t\t\t\t\t\t\t\tbinBase[i] = i === 0 ? 0 : binBase[i - 1] + binDivider[i - 1];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst binRange = range / numBins;\n\t\t\t\t\t\tlet ii = 0;\n\t\t\t\t\t\tfor(let i = 0; i < numVertices; ++i){\n\t\t\t\t\t\t\t\tconst x = centers[ii++];\n\t\t\t\t\t\t\t\tconst y = centers[ii++];\n\t\t\t\t\t\t\t\tconst z = centers[ii++];\n\t\t\t\t\t\t\t\tconst d = (x * dx + y * dy + z * dz - minDist) / binRange;\n\t\t\t\t\t\t\t\tconst bin = d >>> 0;\n\t\t\t\t\t\t\t\tconst sortKey = binBase[bin] + binDivider[bin] * (d - bin) >>> 0;\n\t\t\t\t\t\t\t\tdistances[i] = sortKey;\n\t\t\t\t\t\t\t\tcountBuffer[sortKey]++;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor(let i = 1; i < bucketCount; i++){\n\t\t\t\t\t\tcountBuffer[i] += countBuffer[i - 1];\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < numVertices; i++){\n\t\t\t\t\t\tconst distance = distances[i];\n\t\t\t\t\t\tconst destIndex = --countBuffer[distance];\n\t\t\t\t\t\torder[destIndex] = i;\n\t\t\t\t}\n\t\t\t\tconst cameraDist = px * dx + py * dy + pz * dz;\n\t\t\t\tconst dist = (i)=>{\n\t\t\t\t\t\tlet o = order[i] * 3;\n\t\t\t\t\t\treturn centers[o++] * dx + centers[o++] * dy + centers[o] * dz - cameraDist;\n\t\t\t\t};\n\t\t\t\tconst findZero = ()=>{\n\t\t\t\t\t\tconst result = binarySearch(0, numVertices - 1, (i)=>-dist(i));\n\t\t\t\t\t\treturn Math.min(numVertices, Math.abs(result));\n\t\t\t\t};\n\t\t\t\tconst count = dist(numVertices - 1) >= 0 ? findZero() : numVertices;\n\t\t\t\tif (mapping) {\n\t\t\t\t\t\tfor(let i = 0; i < numVertices; ++i){\n\t\t\t\t\t\t\t\torder[i] = mapping[order[i]];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tmyself.postMessage({\n\t\t\t\t\t\torder: order.buffer,\n\t\t\t\t\t\tcount\n\t\t\t\t}, [\n\t\t\t\t\t\torder.buffer\n\t\t\t\t]);\n\t\t\t\torder = null;\n\t\t};\n\t\tmyself.addEventListener('message', (message)=>{\n\t\t\t\tconst msgData = message.data ?? message;\n\t\t\t\tif (msgData.order) {\n\t\t\t\t\t\torder = new Uint32Array(msgData.order);\n\t\t\t\t}\n\t\t\t\tif (msgData.centers) {\n\t\t\t\t\t\tcenters = new Float32Array(msgData.centers);\n\t\t\t\t\t\tforceUpdate = true;\n\t\t\t\t\t\tif (msgData.chunks) {\n\t\t\t\t\t\t\t\tconst chunksSrc = new Float32Array(msgData.chunks);\n\t\t\t\t\t\t\t\tchunks = new Float32Array(msgData.chunks, 0, chunksSrc.length * 4 / 6);\n\t\t\t\t\t\t\t\tboundMin.x = chunksSrc[0];\n\t\t\t\t\t\t\t\tboundMin.y = chunksSrc[1];\n\t\t\t\t\t\t\t\tboundMin.z = chunksSrc[2];\n\t\t\t\t\t\t\t\tboundMax.x = chunksSrc[3];\n\t\t\t\t\t\t\t\tboundMax.y = chunksSrc[4];\n\t\t\t\t\t\t\t\tboundMax.z = chunksSrc[5];\n\t\t\t\t\t\t\t\tfor(let i = 0; i < chunksSrc.length / 6; ++i){\n\t\t\t\t\t\t\t\t\t\tconst mx = chunksSrc[i * 6 + 0];\n\t\t\t\t\t\t\t\t\t\tconst my = chunksSrc[i * 6 + 1];\n\t\t\t\t\t\t\t\t\t\tconst mz = chunksSrc[i * 6 + 2];\n\t\t\t\t\t\t\t\t\t\tconst Mx = chunksSrc[i * 6 + 3];\n\t\t\t\t\t\t\t\t\t\tconst My = chunksSrc[i * 6 + 4];\n\t\t\t\t\t\t\t\t\t\tconst Mz = chunksSrc[i * 6 + 5];\n\t\t\t\t\t\t\t\t\t\tchunks[i * 4 + 0] = (mx + Mx) * 0.5;\n\t\t\t\t\t\t\t\t\t\tchunks[i * 4 + 1] = (my + My) * 0.5;\n\t\t\t\t\t\t\t\t\t\tchunks[i * 4 + 2] = (mz + Mz) * 0.5;\n\t\t\t\t\t\t\t\t\t\tchunks[i * 4 + 3] = Math.sqrt((Mx - mx) ** 2 + (My - my) ** 2 + (Mz - mz) ** 2) * 0.5;\n\t\t\t\t\t\t\t\t\t\tif (mx < boundMin.x) boundMin.x = mx;\n\t\t\t\t\t\t\t\t\t\tif (my < boundMin.y) boundMin.y = my;\n\t\t\t\t\t\t\t\t\t\tif (mz < boundMin.z) boundMin.z = mz;\n\t\t\t\t\t\t\t\t\t\tif (Mx > boundMax.x) boundMax.x = Mx;\n\t\t\t\t\t\t\t\t\t\tif (My > boundMax.y) boundMax.y = My;\n\t\t\t\t\t\t\t\t\t\tif (Mz > boundMax.z) boundMax.z = Mz;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst numVertices = centers.length / 3;\n\t\t\t\t\t\t\t\tconst numChunks = Math.ceil(numVertices / 256);\n\t\t\t\t\t\t\t\tchunks = new Float32Array(numChunks * 4);\n\t\t\t\t\t\t\t\tboundMin.x = boundMin.y = boundMin.z = Infinity;\n\t\t\t\t\t\t\t\tboundMax.x = boundMax.y = boundMax.z = -Infinity;\n\t\t\t\t\t\t\t\tlet mx, my, mz, Mx, My, Mz;\n\t\t\t\t\t\t\t\tfor(let c = 0; c < numChunks; ++c){\n\t\t\t\t\t\t\t\t\t\tmx = my = mz = Infinity;\n\t\t\t\t\t\t\t\t\t\tMx = My = Mz = -Infinity;\n\t\t\t\t\t\t\t\t\t\tconst start = c * 256;\n\t\t\t\t\t\t\t\t\t\tconst end = Math.min(numVertices, (c + 1) * 256);\n\t\t\t\t\t\t\t\t\t\tfor(let i = start; i < end; ++i){\n\t\t\t\t\t\t\t\t\t\t\t\tconst x = centers[i * 3 + 0];\n\t\t\t\t\t\t\t\t\t\t\t\tconst y = centers[i * 3 + 1];\n\t\t\t\t\t\t\t\t\t\t\t\tconst z = centers[i * 3 + 2];\n\t\t\t\t\t\t\t\t\t\t\t\tconst validX = Number.isFinite(x);\n\t\t\t\t\t\t\t\t\t\t\t\tconst validY = Number.isFinite(y);\n\t\t\t\t\t\t\t\t\t\t\t\tconst validZ = Number.isFinite(z);\n\t\t\t\t\t\t\t\t\t\t\t\tif (!validX) centers[i * 3 + 0] = 0;\n\t\t\t\t\t\t\t\t\t\t\t\tif (!validY) centers[i * 3 + 1] = 0;\n\t\t\t\t\t\t\t\t\t\t\t\tif (!validZ) centers[i * 3 + 2] = 0;\n\t\t\t\t\t\t\t\t\t\t\t\tif (!validX || !validY || !validZ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tif (x < mx) mx = x;\n\t\t\t\t\t\t\t\t\t\t\t\telse if (x > Mx) Mx = x;\n\t\t\t\t\t\t\t\t\t\t\t\tif (y < my) my = y;\n\t\t\t\t\t\t\t\t\t\t\t\telse if (y > My) My = y;\n\t\t\t\t\t\t\t\t\t\t\t\tif (z < mz) mz = z;\n\t\t\t\t\t\t\t\t\t\t\t\telse if (z > Mz) Mz = z;\n\t\t\t\t\t\t\t\t\t\t\t\tif (x < boundMin.x) boundMin.x = x;\n\t\t\t\t\t\t\t\t\t\t\t\telse if (x > boundMax.x) boundMax.x = x;\n\t\t\t\t\t\t\t\t\t\t\t\tif (y < boundMin.y) boundMin.y = y;\n\t\t\t\t\t\t\t\t\t\t\t\telse if (y > boundMax.y) boundMax.y = y;\n\t\t\t\t\t\t\t\t\t\t\t\tif (z < boundMin.z) boundMin.z = z;\n\t\t\t\t\t\t\t\t\t\t\t\telse if (z > boundMax.z) boundMax.z = z;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tchunks[c * 4 + 0] = (mx + Mx) * 0.5;\n\t\t\t\t\t\t\t\t\t\tchunks[c * 4 + 1] = (my + My) * 0.5;\n\t\t\t\t\t\t\t\t\t\tchunks[c * 4 + 2] = (mz + Mz) * 0.5;\n\t\t\t\t\t\t\t\t\t\tchunks[c * 4 + 3] = Math.sqrt((Mx - mx) ** 2 + (My - my) ** 2 + (Mz - mz) ** 2) * 0.5;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (msgData.hasOwnProperty('mapping')) {\n\t\t\t\t\t\tmapping = msgData.mapping ? new Uint32Array(msgData.mapping) : null;\n\t\t\t\t\t\tforceUpdate = true;\n\t\t\t\t}\n\t\t\t\tif (msgData.cameraPosition) cameraPosition = msgData.cameraPosition;\n\t\t\t\tif (msgData.cameraDirection) cameraDirection = msgData.cameraDirection;\n\t\t\t\tupdate();\n\t\t});\n}\n\nclass GSplatSorter extends EventHandler {\n\t\tconstructor(){\n\t\t\t\tsuper();\n\t\t\t\tconst messageHandler = (message)=>{\n\t\t\t\t\t\tconst msgData = message.data ?? message;\n\t\t\t\t\t\tconst newOrder = msgData.order;\n\t\t\t\t\t\tconst oldOrder = this.orderTexture._levels[0].buffer;\n\t\t\t\t\t\tthis.worker.postMessage({\n\t\t\t\t\t\t\t\torder: oldOrder\n\t\t\t\t\t\t}, [\n\t\t\t\t\t\t\t\toldOrder\n\t\t\t\t\t\t]);\n\t\t\t\t\t\tthis.orderTexture._levels[0] = new Uint32Array(newOrder);\n\t\t\t\t\t\tthis.orderTexture.upload();\n\t\t\t\t\t\tthis.fire('updated', msgData.count);\n\t\t\t\t};\n\t\t\t\tconst workerSource = `(${SortWorker.toString()})()`;\n\t\t\t\tif (platform.environment === 'node') {\n\t\t\t\t\t\tthis.worker = new Worker(workerSource, {\n\t\t\t\t\t\t\t\teval: true\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis.worker.on('message', messageHandler);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.worker = new Worker(URL.createObjectURL(new Blob([\n\t\t\t\t\t\t\t\tworkerSource\n\t\t\t\t\t\t], {\n\t\t\t\t\t\t\t\ttype: \"application/javascript\"\n\t\t\t\t\t\t})));\n\t\t\t\t\t\tthis.worker.addEventListener('message', messageHandler);\n\t\t\t\t}\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.worker.terminate();\n\t\t\t\tthis.worker = null;\n\t\t}\n\t\tinit(orderTexture, centers, chunks) {\n\t\t\t\tthis.orderTexture = orderTexture;\n\t\t\t\tthis.centers = centers.slice();\n\t\t\t\tconst orderBuffer = this.orderTexture.lock({\n\t\t\t\t\t\tmode: TEXTURELOCK_READ\n\t\t\t\t}).slice();\n\t\t\t\tthis.orderTexture.unlock();\n\t\t\t\tfor(let i = 0; i < orderBuffer.length; ++i){\n\t\t\t\t\t\torderBuffer[i] = i;\n\t\t\t\t}\n\t\t\t\tconst obj = {\n\t\t\t\t\t\torder: orderBuffer.buffer,\n\t\t\t\t\t\tcenters: centers.buffer,\n\t\t\t\t\t\tchunks: chunks?.buffer\n\t\t\t\t};\n\t\t\t\tconst transfer = [\n\t\t\t\t\t\torderBuffer.buffer,\n\t\t\t\t\t\tcenters.buffer\n\t\t\t\t].concat(chunks ? [\n\t\t\t\t\t\tchunks.buffer\n\t\t\t\t] : []);\n\t\t\t\tthis.worker.postMessage(obj, transfer);\n\t\t}\n\t\tsetMapping(mapping) {\n\t\t\t\tif (mapping) {\n\t\t\t\t\t\tconst centers = new Float32Array(mapping.length * 3);\n\t\t\t\t\t\tfor(let i = 0; i < mapping.length; ++i){\n\t\t\t\t\t\t\t\tconst src = mapping[i] * 3;\n\t\t\t\t\t\t\t\tconst dst = i * 3;\n\t\t\t\t\t\t\t\tcenters[dst + 0] = this.centers[src + 0];\n\t\t\t\t\t\t\t\tcenters[dst + 1] = this.centers[src + 1];\n\t\t\t\t\t\t\t\tcenters[dst + 2] = this.centers[src + 2];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.worker.postMessage({\n\t\t\t\t\t\t\t\tcenters: centers.buffer,\n\t\t\t\t\t\t\t\tmapping: mapping.buffer\n\t\t\t\t\t\t}, [\n\t\t\t\t\t\t\t\tcenters.buffer,\n\t\t\t\t\t\t\t\tmapping.buffer\n\t\t\t\t\t\t]);\n\t\t\t\t} else {\n\t\t\t\t\t\tconst centers = this.centers.slice();\n\t\t\t\t\t\tthis.worker.postMessage({\n\t\t\t\t\t\t\t\tcenters: centers.buffer,\n\t\t\t\t\t\t\t\tmapping: null\n\t\t\t\t\t\t}, [\n\t\t\t\t\t\t\t\tcenters.buffer\n\t\t\t\t\t\t]);\n\t\t\t\t}\n\t\t}\n\t\tsetCamera(pos, dir) {\n\t\t\t\tthis.worker.postMessage({\n\t\t\t\t\t\tcameraPosition: {\n\t\t\t\t\t\t\t\tx: pos.x,\n\t\t\t\t\t\t\t\ty: pos.y,\n\t\t\t\t\t\t\t\tz: pos.z\n\t\t\t\t\t\t},\n\t\t\t\t\t\tcameraDirection: {\n\t\t\t\t\t\t\t\tx: dir.x,\n\t\t\t\t\t\t\t\ty: dir.y,\n\t\t\t\t\t\t\t\tz: dir.z\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n}\n\nvar glslGsplatSogsReorderPS = `\n#include \"gsplatPackingPS\"\nuniform highp sampler2D means_l;\nuniform highp sampler2D means_u;\nuniform highp sampler2D quats;\nuniform highp sampler2D scales;\nuniform highp sampler2D sh0;\nuniform highp sampler2D sh_labels;\nuniform highp uint numSplats;\n#ifdef REORDER_V1\n\tfloat sigmoid(float x) { return 1.0 / (1.0 + exp(-x)); }\n\tvec3 vmin(vec3 v) { return vec3(min(min(v.x, v.y), v.z)); }\n\tvec3 vmax(vec3 v) { return vec3(max(max(v.x, v.y), v.z)); }\n\tvec3 resolve(vec3 m, vec3 M, vec3 v) { return (mix(m, M, v) - vmin(m)) / (vmax(M) - vmin(m)); }\n\t\n\tuniform vec3 scalesMins;\n\tuniform vec3 scalesMaxs;\n\tuniform vec4 sh0Mins;\n\tuniform vec4 sh0Maxs;\n#else\n\tuniform vec4 scales_codebook[64];\n\tuniform vec4 sh0_codebook[64];\n#endif\nvoid main(void) {\n\tint w = int(textureSize(means_l, 0).x);\n\tivec2 uv = ivec2(gl_FragCoord.xy);\n\tif (uint(uv.x + uv.y * w) >= numSplats) {\n\t\tdiscard;\n\t}\n\tvec3 meansLSample   = texelFetch(means_l, uv, 0).xyz;\n\tvec3 meansUSample   = texelFetch(means_u, uv, 0).xyz;\n\tvec4 quatsSample\t= texelFetch(quats, uv, 0);\n\tvec3 scalesSample   = texelFetch(scales, uv, 0).xyz;\n\tvec4 sh0Sample\t  = texelFetch(sh0, uv, 0);\n\tvec2 shLabelsSample = texelFetch(sh_labels, uv, 0).xy;\n\t#ifdef REORDER_V1\n\t\tuint scale = pack101010(resolve(scalesMins, scalesMaxs, scalesSample));\n\t\tuint sh0 = pack111110(resolve(sh0Mins.xyz, sh0Maxs.xyz, sh0Sample.xyz));\n\t\tfloat alpha = sigmoid(mix(sh0Mins.w, sh0Maxs.w, sh0Sample.w));\n\t#else\n\t\tuint scale = pack101010(resolveCodebook(scalesSample, scales_codebook));\n\t\tuint sh0 = pack111110(resolveCodebook(sh0Sample.xyz, sh0_codebook));\n\t\tfloat alpha = sh0Sample.w;\n\t#endif\n\tuint qmode = uint(quatsSample.w * 255.0) - 252u;\n\tpcFragColor0 = uvec4(\n\t\tpack8888(vec4(meansLSample, shLabelsSample.x)),\n\t\tpack8888(vec4(meansUSample, shLabelsSample.y)),\n\t\tpack8888(vec4(quatsSample.xyz, alpha)),\n\t\t(scale << 2u) | qmode\n\t);\n\tpcFragColor1 = unpack8888(sh0);\n}\n`;\n\nvar wgslGsplatSogsReorderPS = `\n#include \"gsplatPackingPS\"\nvar means_l: texture_2d<f32>;\nvar means_u: texture_2d<f32>;\nvar quats: texture_2d<f32>;\nvar scales: texture_2d<f32>;\nvar sh0: texture_2d<f32>;\nvar sh_labels: texture_2d<f32>;\nuniform numSplats: u32;\n#ifdef REORDER_V1\n\tfn sigmoid(x: f32) -> f32 { return 1.0 / (1.0 + exp(-x)); }\n\tfn vmin(v: vec3f) -> vec3f { return vec3f(min(min(v.x, v.y), v.z)); }\n\tfn vmax(v: vec3f) -> vec3f { return vec3f(max(max(v.x, v.y), v.z)); }\n\tfn resolve(m: vec3f, M: vec3f, v: vec3f) -> vec3f { return (mix(m, M, v) - vmin(m)) / (vmax(M) - vmin(m)); }\n\tuniform scalesMins: vec3f;\n\tuniform scalesMaxs: vec3f;\n\tuniform sh0Mins: vec4f;\n\tuniform sh0Maxs: vec4f;\n#else\n\tuniform scales_codebook: array<vec4f, 64>;\n\tuniform sh0_codebook: array<vec4f, 64>;\n#endif\n@fragment\nfn fragmentMain(input: FragmentInput) -> FragmentOutput {\n\tvar output: FragmentOutput;\n\tlet w: u32 = textureDimensions(means_l, 0).x;\n\tlet uv: vec2<u32> = vec2<u32>(input.position.xy);\n\tif (uv.x + uv.y * w >= uniform.numSplats) {\n\t\tdiscard;\n\t\treturn output;\n\t}\n\tlet meansLSample: vec3<f32> = textureLoad(means_l, uv, 0).xyz;\n\tlet meansUSample: vec3<f32> = textureLoad(means_u, uv, 0).xyz;\n\tlet quatsSample: vec4<f32> = textureLoad(quats, uv, 0);\n\tlet scalesSample: vec3<f32> = textureLoad(scales, uv, 0).xyz;\n\tlet sh0Sample: vec4f = textureLoad(sh0, uv, 0);\n\tlet shLabelsSample: vec2<f32> = textureLoad(sh_labels, uv, 0).xy;\n\t#ifdef REORDER_V1\n\t\tlet scale = pack101010(resolve(uniform.scalesMins, uniform.scalesMaxs, scalesSample));\n\t\tlet sh0 = pack111110(resolve(uniform.sh0Mins.xyz, uniform.sh0Maxs.xyz, sh0Sample.xyz));\n\t\tlet alpha = sigmoid(mix(uniform.sh0Mins.w, uniform.sh0Maxs.w, sh0Sample.w));\n\t#else\n\t\tlet scale = pack101010(resolveCodebook(scalesSample, &uniform.scales_codebook));\n\t\tlet sh0 = pack111110(resolveCodebook(sh0Sample.xyz, &uniform.sh0_codebook));\n\t\tlet alpha = sh0Sample.w;\n\t#endif\n\tlet qmode = u32(quatsSample.w * 255.0) - 252u;\n\toutput.color = vec4u(\n\t\tpack8888(vec4f(meansLSample, shLabelsSample.x)),\n\t\tpack8888(vec4f(meansUSample, shLabelsSample.y)),\n\t\tpack8888(vec4f(quatsSample.xyz, alpha)),\n\t\t(scale << 2u) | qmode\n\t);\n\toutput.color1 = unpack8888(sh0);\n\treturn output;\n}\n`;\n\nvar glslGsplatSogsReorderSh = `\n#include \"gsplatPackingPS\"\nuniform highp sampler2D sh_centroids;\nuniform vec4 shN_codebook[64];\nvoid main(void) {\n\tivec2 uv = ivec2(gl_FragCoord.xy);\n\tvec3 shNSample = texelFetch(sh_centroids, uv, 0).xyz;\n#ifdef REORDER_V1\n\tpcFragColor0 = unpack8888(pack111110(shNSample));\n#else\n\tpcFragColor0 = unpack8888(pack111110(resolveCodebook(shNSample, shN_codebook)));\n#endif\n}\n`;\n\nvar gsplatPackingPS$1 = `\nuint pack8888(vec4 v) {\n\tuvec4 t = uvec4(v * 255.0) << uvec4(24u, 16u, 8u, 0u);\n\treturn t.x | t.y | t.z | t.w;\n}\nuint pack101010(vec3 v) {\n\tuvec3 t = uvec3(v * 1023.0) << uvec3(20u, 10u, 0u);\n\treturn t.x | t.y | t.z;\n}\nuint pack111110(vec3 v) {\n\tuvec3 t = uvec3(v * vec3(2047.0, 2047.0, 1023.0)) << uvec3(21u, 10u, 0u);\n\treturn t.x | t.y | t.z;\n}\nvec4 unpack8888(uint v) {\n\treturn vec4((uvec4(v) >> uvec4(24u, 16u, 8u, 0u)) & 0xffu) / 255.0;\n}\nvec3 unpack101010(uint v) {\n\treturn vec3((uvec3(v) >> uvec3(20u, 10u, 0u)) & 0x3ffu) / 1023.0;\n}\nvec3 unpack111110(uint v) {\n\treturn vec3((uvec3(v) >> uvec3(21u, 10u, 0u)) & uvec3(0x7ffu, 0x7ffu, 0x3ffu)) / vec3(2047.0, 2047.0, 1023.0);\n}\nvec3 resolveCodebook(vec3 s, vec4 codebook[64]) {\n\tuvec3 idx = uvec3(s * 255.0);\n\tvec3 v = vec3(\n\t\tcodebook[idx.x >> 2u][idx.x & 3u],\n\t\tcodebook[idx.y >> 2u][idx.y & 3u],\n\t\tcodebook[idx.z >> 2u][idx.z & 3u]\n\t);\n\treturn (v - codebook[0].x) / (codebook[63].w - codebook[0].x);\n}\n`;\n\nvar wgslGsplatSogsReorderSH = `\n#include \"gsplatPackingPS\"\nvar sh_centroids: texture_2d<f32>;\nuniform shN_codebook: array<vec4f, 64>;\n@fragment\nfn fragmentMain(input: FragmentInput) -> FragmentOutput {\n\tvar output: FragmentOutput;\n\tvar uv = vec2i(input.position.xy);\n\tvar shNSample = textureLoad(sh_centroids, uv, 0).xyz;\n#ifdef REORDER_V1\n\toutput.color = unpack8888(pack111110(shNSample));\n#else\n\toutput.color = unpack8888(pack111110(resolveCodebook(shNSample, &uniform.shN_codebook)));\n#endif\n\treturn output;\n}\n`;\n\nvar gsplatPackingPS = `\nfn pack8888(v: vec4f) -> u32 {\n\tlet t = vec4u(v * 255.0) << vec4u(24u, 16u, 8u, 0u);\n\treturn t.x | t.y | t.z | t.w;\n}\nfn pack101010(v: vec3f) -> u32 {\n\tlet t = vec3u(v * vec3f(1023.0, 1023.0, 1023.0)) << vec3u(20u, 10u, 0u);\n\treturn t.x | t.y | t.z;\n}\nfn pack111110(v: vec3f) -> u32 {\n\tlet t = vec3u(v * vec3f(2047.0, 2047.0, 1023.0)) << vec3u(21u, 10u, 0u);\n\treturn t.x | t.y | t.z;\n}\nfn unpack8888(v: u32) -> vec4f {\n\treturn vec4f((vec4u(v) >> vec4u(24u, 16u, 8u, 0u)) & vec4u(0xffu)) / 255.0;\n}\nfn unpack101010(v: u32) -> vec3f {\n\treturn vec3f((vec3u(v) >> vec3u(20u, 10u, 0u)) & vec3u(0x3ffu)) / 1023.0;\n}\nfn unpack111110(v: u32) -> vec3f {\n\treturn vec3f((vec3u(v) >> vec3u(21u, 10u, 0u)) & vec3u(0x7ffu, 0x7ffu, 0x3ffu)) / vec3f(2047.0, 2047.0, 1023.0);\n}\nfn resolveCodebook(s: vec3f, codebook: ptr<uniform, array<vec4f, 64>>) -> vec3f {\n\tlet idx = vec3u(s * 255.0);\n\tlet v = vec3f(\n\t\tcodebook[idx.x >> 2u][idx.x & 3u],\n\t\tcodebook[idx.y >> 2u][idx.y & 3u],\n\t\tcodebook[idx.z >> 2u][idx.z & 3u]\n\t);\n\treturn (v - codebook[0].x) / (codebook[63].w - codebook[0].x);\n}\n`;\n\nvar glslSogsCentersPS = `\n#include \"gsplatPackingPS\"\nuniform highp sampler2D means_l;\nuniform highp sampler2D means_u;\nuniform highp uint numSplats;\nuniform highp vec3 means_mins;\nuniform highp vec3 means_maxs;\nvoid main(void) {\n\tint w = int(textureSize(means_l, 0).x);\n\tivec2 uv = ivec2(gl_FragCoord.xy);\n\tif (uint(uv.x + uv.y * w) >= numSplats) {\n\t\tdiscard;\n\t}\n\tvec3 l = texelFetch(means_l, uv, 0).xyz;\n\tvec3 u = texelFetch(means_u, uv, 0).xyz;\n\tvec3 n = (l + u * 256.0) / 257.0;\n\tvec3 v = mix(means_mins, means_maxs, n);\n\tvec3 center = sign(v) * (exp(abs(v)) - 1.0);\n\tpcFragColor0 = uvec4(floatBitsToUint(center), 0u);\n}\n`;\n\nvar wgslSogsCentersPS = `\nvar means_l: texture_2d<f32>;\nvar means_u: texture_2d<f32>;\nuniform numSplats: u32;\nuniform means_mins: vec3f;\nuniform means_maxs: vec3f;\n@fragment\nfn fragmentMain(input: FragmentInput) -> FragmentOutput {\n\tvar output: FragmentOutput;\n\tlet w: u32 = textureDimensions(means_l, 0).x;\n\tlet uv: vec2<i32> = vec2<i32>(input.position.xy);\n\tif (u32(uv.x + uv.y * i32(w)) >= uniform.numSplats) {\n\t\tdiscard;\n\t\treturn output;\n\t}\n\tlet l: vec3f = textureLoad(means_l, uv, 0).xyz;\n\tlet u: vec3f = textureLoad(means_u, uv, 0).xyz;\n\tlet n: vec3f = (l + u * 256.0) / 257.0;\n\tlet v: vec3f = mix(uniform.means_mins, uniform.means_maxs, n);\n\tlet center: vec3f = sign(v) * (exp(abs(v)) - 1.0);\n\tlet packed: vec4<u32> = bitcast<vec4<u32>>(vec4f(center, 0.0));\n\toutput.color = packed;\n\treturn output;\n}\n`;\n\nconst SH_C0$1 = 0.28209479177387814;\nconst readImageDataAsync = (texture)=>{\n\t\tif (texture.device.isNull) {\n\t\t\t\treturn new Promise((resolve)=>{\n\t\t\t\t\t\tresolve(new Uint8Array(texture.width * texture.height * 4));\n\t\t\t\t});\n\t\t}\n\t\treturn texture.read(0, 0, texture.width, texture.height, {\n\t\t\t\tmipLevel: 0,\n\t\t\t\tface: 0,\n\t\t\t\timmediate: true\n\t\t});\n};\nconst resolve = (scope, values)=>{\n\t\tfor(const key in values){\n\t\t\t\tscope.resolve(key).setValue(values[key]);\n\t\t}\n};\nclass GSplatSogsIterator {\n\t\tconstructor(data, p, r, s, c, sh){\n\t\t\t\tconst lerp = (a, b, t)=>a * (1 - t) + b * t;\n\t\t\t\tconst { meta, shBands } = data;\n\t\t\t\tconst { means, scales, sh0, shN } = meta;\n\t\t\t\tconst means_l_data = p && data.means_l._levels[0];\n\t\t\t\tconst means_u_data = p && data.means_u._levels[0];\n\t\t\t\tconst quats_data = r && data.quats._levels[0];\n\t\t\t\tconst scales_data = s && data.scales._levels[0];\n\t\t\t\tconst sh0_data = c && data.sh0._levels[0];\n\t\t\t\tconst sh_labels_data = sh && data.sh_labels._levels[0];\n\t\t\t\tconst sh_centroids_data = sh && data.sh_centroids._levels[0];\n\t\t\t\tconst norm = Math.SQRT2;\n\t\t\t\tconst coeffs = {\n\t\t\t\t\t\t1: 3,\n\t\t\t\t\t\t2: 8,\n\t\t\t\t\t\t3: 15\n\t\t\t\t}[shBands] ?? 0;\n\t\t\t\tthis.read = (i)=>{\n\t\t\t\t\t\tif (p) {\n\t\t\t\t\t\t\t\tconst nx = lerp(means.mins[0], means.maxs[0], ((means_u_data[i * 4 + 0] << 8) + means_l_data[i * 4 + 0]) / 65535);\n\t\t\t\t\t\t\t\tconst ny = lerp(means.mins[1], means.maxs[1], ((means_u_data[i * 4 + 1] << 8) + means_l_data[i * 4 + 1]) / 65535);\n\t\t\t\t\t\t\t\tconst nz = lerp(means.mins[2], means.maxs[2], ((means_u_data[i * 4 + 2] << 8) + means_l_data[i * 4 + 2]) / 65535);\n\t\t\t\t\t\t\t\tp.x = Math.sign(nx) * (Math.exp(Math.abs(nx)) - 1);\n\t\t\t\t\t\t\t\tp.y = Math.sign(ny) * (Math.exp(Math.abs(ny)) - 1);\n\t\t\t\t\t\t\t\tp.z = Math.sign(nz) * (Math.exp(Math.abs(nz)) - 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (r) {\n\t\t\t\t\t\t\t\tconst a = (quats_data[i * 4 + 0] / 255 - 0.5) * norm;\n\t\t\t\t\t\t\t\tconst b = (quats_data[i * 4 + 1] / 255 - 0.5) * norm;\n\t\t\t\t\t\t\t\tconst c = (quats_data[i * 4 + 2] / 255 - 0.5) * norm;\n\t\t\t\t\t\t\t\tconst d = Math.sqrt(Math.max(0, 1 - (a * a + b * b + c * c)));\n\t\t\t\t\t\t\t\tconst mode = quats_data[i * 4 + 3] - 252;\n\t\t\t\t\t\t\t\tswitch(mode){\n\t\t\t\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\t\t\t\t\tr.set(a, b, c, d);\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\t\t\t\t\tr.set(d, b, c, a);\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\t\t\t\t\tr.set(b, d, c, a);\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\t\t\t\t\tr.set(b, c, d, a);\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (s) {\n\t\t\t\t\t\t\t\tif (meta.version === 2) {\n\t\t\t\t\t\t\t\t\t\tconst sx = scales.codebook[scales_data[i * 4 + 0]];\n\t\t\t\t\t\t\t\t\t\tconst sy = scales.codebook[scales_data[i * 4 + 1]];\n\t\t\t\t\t\t\t\t\t\tconst sz = scales.codebook[scales_data[i * 4 + 2]];\n\t\t\t\t\t\t\t\t\t\ts.set(sx, sy, sz);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tconst sx = lerp(scales.mins[0], scales.maxs[0], scales_data[i * 4 + 0] / 255);\n\t\t\t\t\t\t\t\t\t\tconst sy = lerp(scales.mins[1], scales.maxs[1], scales_data[i * 4 + 1] / 255);\n\t\t\t\t\t\t\t\t\t\tconst sz = lerp(scales.mins[2], scales.maxs[2], scales_data[i * 4 + 2] / 255);\n\t\t\t\t\t\t\t\t\t\ts.set(sx, sy, sz);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (c) {\n\t\t\t\t\t\t\t\tif (meta.version === 2) {\n\t\t\t\t\t\t\t\t\t\tconst r = sh0.codebook[sh0_data[i * 4 + 0]];\n\t\t\t\t\t\t\t\t\t\tconst g = sh0.codebook[sh0_data[i * 4 + 1]];\n\t\t\t\t\t\t\t\t\t\tconst b = sh0.codebook[sh0_data[i * 4 + 2]];\n\t\t\t\t\t\t\t\t\t\tconst a = sh0_data[i * 4 + 3] / 255;\n\t\t\t\t\t\t\t\t\t\tc.set(0.5 + r * SH_C0$1, 0.5 + g * SH_C0$1, 0.5 + b * SH_C0$1, a);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tconst r = lerp(sh0.mins[0], sh0.maxs[0], sh0_data[i * 4 + 0] / 255);\n\t\t\t\t\t\t\t\t\t\tconst g = lerp(sh0.mins[1], sh0.maxs[1], sh0_data[i * 4 + 1] / 255);\n\t\t\t\t\t\t\t\t\t\tconst b = lerp(sh0.mins[2], sh0.maxs[2], sh0_data[i * 4 + 2] / 255);\n\t\t\t\t\t\t\t\t\t\tconst a = lerp(sh0.mins[3], sh0.maxs[3], sh0_data[i * 4 + 3] / 255);\n\t\t\t\t\t\t\t\t\t\tc.set(0.5 + r * SH_C0$1, 0.5 + g * SH_C0$1, 0.5 + b * SH_C0$1, 1.0 / (1.0 + Math.exp(-a)));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (sh) {\n\t\t\t\t\t\t\t\tconst n = sh_labels_data[i * 4 + 0] + (sh_labels_data[i * 4 + 1] << 8);\n\t\t\t\t\t\t\t\tconst u = n % 64 * coeffs;\n\t\t\t\t\t\t\t\tconst v = Math.floor(n / 64);\n\t\t\t\t\t\t\t\tif (meta.version === 2) {\n\t\t\t\t\t\t\t\t\t\tfor(let j = 0; j < 3; ++j){\n\t\t\t\t\t\t\t\t\t\t\t\tfor(let k = 0; k < coeffs; ++k){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsh[j * 15 + k] = shN.codebook[sh_centroids_data[(u + k) * 4 + j + v * data.sh_centroids.width * 4]];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tfor(let j = 0; j < 3; ++j){\n\t\t\t\t\t\t\t\t\t\t\t\tfor(let k = 0; k < coeffs; ++k){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsh[j * 15 + k] = lerp(shN.mins, shN.maxs, sh_centroids_data[(u + k) * 4 + j + v * data.sh_centroids.width * 4] / 255);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t}\n}\nclass GSplatSogsData {\n\t\t_destroyGpuResources() {\n\t\t\t\tthis.means_l?.destroy();\n\t\t\t\tthis.means_u?.destroy();\n\t\t\t\tthis.quats?.destroy();\n\t\t\t\tthis.scales?.destroy();\n\t\t\t\tthis.sh0?.destroy();\n\t\t\t\tthis.sh_centroids?.destroy();\n\t\t\t\tthis.sh_labels?.destroy();\n\t\t\t\tthis.packedTexture?.destroy();\n\t\t\t\tthis.packedSh0?.destroy();\n\t\t\t\tthis.packedShN?.destroy();\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.destroyed = true;\n\t\t\t\tthis._destroyGpuResources();\n\t\t}\n\t\tcreateIter(p, r, s, c, sh) {\n\t\t\t\treturn new GSplatSogsIterator(this, p, r, s, c, sh);\n\t\t}\n\t\tcalcAabb(result) {\n\t\t\t\tconst { mins, maxs } = this.meta.means;\n\t\t\t\tconst map = (v)=>Math.sign(v) * (Math.exp(Math.abs(v)) - 1);\n\t\t\t\tresult.center.set((map(mins[0]) + map(maxs[0])) * 0.5, (map(mins[1]) + map(maxs[1])) * 0.5, (map(mins[2]) + map(maxs[2])) * 0.5);\n\t\t\t\tresult.halfExtents.set((map(maxs[0]) - map(mins[0])) * 0.5, (map(maxs[1]) - map(mins[1])) * 0.5, (map(maxs[2]) - map(mins[2])) * 0.5);\n\t\t}\n\t\tgetCenters() {\n\t\t\t\tconst centers = this._centers;\n\t\t\t\tthis._centers = null;\n\t\t\t\treturn centers;\n\t\t}\n\t\tcalcFocalPoint(result, pred) {\n\t\t\t\tconst { mins, maxs } = this.meta.means;\n\t\t\t\tconst map = (v)=>Math.sign(v) * (Math.exp(Math.abs(v)) - 1);\n\t\t\t\tresult.set((map(mins[0]) + map(maxs[0])) * 0.5, (map(mins[1]) + map(maxs[1])) * 0.5, (map(mins[2]) + map(maxs[2])) * 0.5);\n\t\t}\n\t\tget isSogs() {\n\t\t\t\treturn true;\n\t\t}\n\t\tget shBands() {\n\t\t\t\tconst widths = {\n\t\t\t\t\t\t192: 1,\n\t\t\t\t\t\t512: 2,\n\t\t\t\t\t\t960: 3\n\t\t\t\t};\n\t\t\t\treturn widths[this.sh_centroids?.width] ?? 0;\n\t\t}\n\t\tasync decompress() {\n\t\t\t\tconst members = [\n\t\t\t\t\t\t'x',\n\t\t\t\t\t\t'y',\n\t\t\t\t\t\t'z',\n\t\t\t\t\t\t'f_dc_0',\n\t\t\t\t\t\t'f_dc_1',\n\t\t\t\t\t\t'f_dc_2',\n\t\t\t\t\t\t'opacity',\n\t\t\t\t\t\t'scale_0',\n\t\t\t\t\t\t'scale_1',\n\t\t\t\t\t\t'scale_2',\n\t\t\t\t\t\t'rot_0',\n\t\t\t\t\t\t'rot_1',\n\t\t\t\t\t\t'rot_2',\n\t\t\t\t\t\t'rot_3'\n\t\t\t\t];\n\t\t\t\tconst { shBands } = this;\n\t\t\t\tconst { means_l, means_u, quats, scales, sh0, sh_labels, sh_centroids } = this;\n\t\t\t\tmeans_l._levels[0] = await readImageDataAsync(means_l);\n\t\t\t\tmeans_u._levels[0] = await readImageDataAsync(means_u);\n\t\t\t\tquats._levels[0] = await readImageDataAsync(quats);\n\t\t\t\tscales._levels[0] = await readImageDataAsync(scales);\n\t\t\t\tsh0._levels[0] = await readImageDataAsync(sh0);\n\t\t\t\tif (shBands > 0) {\n\t\t\t\t\t\tsh_labels._levels[0] = await readImageDataAsync(sh_labels);\n\t\t\t\t\t\tsh_centroids._levels[0] = await readImageDataAsync(sh_centroids);\n\t\t\t\t\t\tconst shMembers = [];\n\t\t\t\t\t\tfor(let i = 0; i < 45; ++i){\n\t\t\t\t\t\t\t\tshMembers.push(`f_rest_${i}`);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmembers.splice(members.indexOf('f_dc_0') + 1, 0, ...shMembers);\n\t\t\t\t}\n\t\t\t\tconst data = {};\n\t\t\t\tmembers.forEach((name)=>{\n\t\t\t\t\t\tdata[name] = new Float32Array(this.numSplats);\n\t\t\t\t});\n\t\t\t\tconst p = new Vec3();\n\t\t\t\tconst r = new Quat();\n\t\t\t\tconst s = new Vec3();\n\t\t\t\tconst c = new Vec4();\n\t\t\t\tconst sh = shBands > 0 ? new Float32Array(45) : null;\n\t\t\t\tconst iter = this.createIter(p, r, s, c, sh);\n\t\t\t\tfor(let i = 0; i < this.numSplats; ++i){\n\t\t\t\t\t\titer.read(i);\n\t\t\t\t\t\tdata.x[i] = p.x;\n\t\t\t\t\t\tdata.y[i] = p.y;\n\t\t\t\t\t\tdata.z[i] = p.z;\n\t\t\t\t\t\tdata.rot_1[i] = r.x;\n\t\t\t\t\t\tdata.rot_2[i] = r.y;\n\t\t\t\t\t\tdata.rot_3[i] = r.z;\n\t\t\t\t\t\tdata.rot_0[i] = r.w;\n\t\t\t\t\t\tdata.scale_0[i] = s.x;\n\t\t\t\t\t\tdata.scale_1[i] = s.y;\n\t\t\t\t\t\tdata.scale_2[i] = s.z;\n\t\t\t\t\t\tdata.f_dc_0[i] = (c.x - 0.5) / SH_C0$1;\n\t\t\t\t\t\tdata.f_dc_1[i] = (c.y - 0.5) / SH_C0$1;\n\t\t\t\t\t\tdata.f_dc_2[i] = (c.z - 0.5) / SH_C0$1;\n\t\t\t\t\t\tdata.opacity[i] = c.w <= 0 ? -40 : c.w >= 1 ? 40 : -Math.log(1 / c.w - 1);\n\t\t\t\t\t\tif (sh) {\n\t\t\t\t\t\t\t\tfor(let c = 0; c < 45; ++c){\n\t\t\t\t\t\t\t\t\t\tdata[`f_rest_${c}`][i] = sh[c];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn new GSplatData([\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: 'vertex',\n\t\t\t\t\t\t\t\tcount: this.numSplats,\n\t\t\t\t\t\t\t\tproperties: members.map((name)=>{\n\t\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\t\t\tname: name,\n\t\t\t\t\t\t\t\t\t\t\t\ttype: 'float',\n\t\t\t\t\t\t\t\t\t\t\t\tbyteSize: 4,\n\t\t\t\t\t\t\t\t\t\t\t\tstorage: data[name]\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\t\t\t\t]);\n\t\t}\n\t\tasync generateCenters() {\n\t\t\t\tconst { device, width, height } = this.means_l;\n\t\t\t\tconst { scope } = device;\n\t\t\t\tconst centersTexture = new Texture(device, {\n\t\t\t\t\t\tname: 'sogsCentersTexture',\n\t\t\t\t\t\twidth,\n\t\t\t\t\t\theight,\n\t\t\t\t\t\tformat: PIXELFORMAT_RGBA32U,\n\t\t\t\t\t\tmipmaps: false\n\t\t\t\t});\n\t\t\t\tconst shader = ShaderUtils.createShader(device, {\n\t\t\t\t\t\tuniqueName: 'GsplatSogsCentersShader',\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\tvertex_position: SEMANTIC_POSITION\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvertexChunk: 'fullscreenQuadVS',\n\t\t\t\t\t\tfragmentGLSL: glslSogsCentersPS,\n\t\t\t\t\t\tfragmentWGSL: wgslSogsCentersPS,\n\t\t\t\t\t\tfragmentOutputTypes: [\n\t\t\t\t\t\t\t\t'uvec4'\n\t\t\t\t\t\t],\n\t\t\t\t\t\tfragmentIncludes: new Map([\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t'gsplatPackingPS',\n\t\t\t\t\t\t\t\t\t\tdevice.isWebGPU ? gsplatPackingPS : gsplatPackingPS$1\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t])\n\t\t\t\t});\n\t\t\t\tconst renderTarget = new RenderTarget({\n\t\t\t\t\t\tcolorBuffer: centersTexture,\n\t\t\t\t\t\tdepth: false,\n\t\t\t\t\t\tmipLevel: 0\n\t\t\t\t});\n\t\t\t\tdevice.setCullMode(CULLFACE_NONE);\n\t\t\t\tdevice.setBlendState(BlendState.NOBLEND);\n\t\t\t\tdevice.setDepthState(DepthState.NODEPTH);\n\t\t\t\tresolve(scope, {\n\t\t\t\t\t\tmeans_l: this.means_l,\n\t\t\t\t\t\tmeans_u: this.means_u,\n\t\t\t\t\t\tnumSplats: this.numSplats,\n\t\t\t\t\t\tmeans_mins: this.meta.means.mins,\n\t\t\t\t\t\tmeans_maxs: this.meta.means.maxs\n\t\t\t\t});\n\t\t\t\tdrawQuadWithShader(device, renderTarget, shader);\n\t\t\t\trenderTarget.destroy();\n\t\t\t\tconst u32 = await readImageDataAsync(centersTexture);\n\t\t\t\tif (this.destroyed || device._destroyed) {\n\t\t\t\t\t\tcentersTexture.destroy();\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst asFloat = new Float32Array(u32.buffer);\n\t\t\t\tconst result = new Float32Array(this.numSplats * 3);\n\t\t\t\tfor(let i = 0; i < this.numSplats; i++){\n\t\t\t\t\t\tconst base = i * 4;\n\t\t\t\t\t\tresult[i * 3 + 0] = asFloat[base + 0];\n\t\t\t\t\t\tresult[i * 3 + 1] = asFloat[base + 1];\n\t\t\t\t\t\tresult[i * 3 + 2] = asFloat[base + 2];\n\t\t\t\t}\n\t\t\t\tthis._centers = result;\n\t\t\t\tcentersTexture.destroy();\n\t\t}\n\t\tpackGpuMemory() {\n\t\t\t\tconst { meta, means_l, means_u, quats, scales, sh0, sh_labels, numSplats } = this;\n\t\t\t\tconst { device } = means_l;\n\t\t\t\tconst { scope } = device;\n\t\t\t\tconst shaderKey = meta.version === 2 ? 'v2' : 'v1';\n\t\t\t\tconst shader = ShaderUtils.createShader(device, {\n\t\t\t\t\t\tuniqueName: `GsplatSogsReorderShader-${shaderKey}`,\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\tvertex_position: SEMANTIC_POSITION\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvertexChunk: 'fullscreenQuadVS',\n\t\t\t\t\t\tfragmentGLSL: glslGsplatSogsReorderPS,\n\t\t\t\t\t\tfragmentWGSL: wgslGsplatSogsReorderPS,\n\t\t\t\t\t\tfragmentOutputTypes: [\n\t\t\t\t\t\t\t\t'uvec4',\n\t\t\t\t\t\t\t\t'vec4'\n\t\t\t\t\t\t],\n\t\t\t\t\t\tfragmentIncludes: new Map([\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t'gsplatPackingPS',\n\t\t\t\t\t\t\t\t\t\tdevice.isWebGPU ? gsplatPackingPS : gsplatPackingPS$1\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t]),\n\t\t\t\t\t\tfragmentDefines: meta.version === 2 ? undefined : new Map([\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t'REORDER_V1',\n\t\t\t\t\t\t\t\t\t\t'1'\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t])\n\t\t\t\t});\n\t\t\t\tconst renderTarget = new RenderTarget({\n\t\t\t\t\t\tcolorBuffers: [\n\t\t\t\t\t\t\t\tthis.packedTexture,\n\t\t\t\t\t\t\t\tthis.packedSh0\n\t\t\t\t\t\t],\n\t\t\t\t\t\tdepth: false,\n\t\t\t\t\t\tmipLevel: 0\n\t\t\t\t});\n\t\t\t\tdevice.setCullMode(CULLFACE_NONE);\n\t\t\t\tdevice.setBlendState(BlendState.NOBLEND);\n\t\t\t\tdevice.setDepthState(DepthState.NODEPTH);\n\t\t\t\tresolve(scope, {\n\t\t\t\t\t\tmeans_l,\n\t\t\t\t\t\tmeans_u,\n\t\t\t\t\t\tquats,\n\t\t\t\t\t\tscales,\n\t\t\t\t\t\tsh0,\n\t\t\t\t\t\tsh_labels: sh_labels ?? means_l,\n\t\t\t\t\t\tnumSplats,\n\t\t\t\t\t\t'scales_codebook[0]': this.meta.scales.codebook,\n\t\t\t\t\t\t'sh0_codebook[0]': this.meta.sh0.codebook,\n\t\t\t\t\t\tscalesMins: meta.scales.mins,\n\t\t\t\t\t\tscalesMaxs: meta.scales.maxs,\n\t\t\t\t\t\tsh0Mins: meta.sh0.mins,\n\t\t\t\t\t\tsh0Maxs: meta.sh0.maxs\n\t\t\t\t});\n\t\t\t\tdrawQuadWithShader(device, renderTarget, shader);\n\t\t\t\trenderTarget.destroy();\n\t\t}\n\t\tpackShMemory() {\n\t\t\t\tconst { meta, sh_centroids } = this;\n\t\t\t\tconst { device } = sh_centroids;\n\t\t\t\tconst { scope } = device;\n\t\t\t\tconst shaderKey = meta.version === 2 ? 'v2' : 'v1';\n\t\t\t\tconst shader = ShaderUtils.createShader(device, {\n\t\t\t\t\t\tuniqueName: `GsplatSogsReorderShShader-${shaderKey}`,\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\tvertex_position: SEMANTIC_POSITION\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvertexChunk: 'fullscreenQuadVS',\n\t\t\t\t\t\tfragmentGLSL: glslGsplatSogsReorderSh,\n\t\t\t\t\t\tfragmentWGSL: wgslGsplatSogsReorderSH,\n\t\t\t\t\t\tfragmentIncludes: new Map([\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t'gsplatPackingPS',\n\t\t\t\t\t\t\t\t\t\tdevice.isWebGPU ? gsplatPackingPS : gsplatPackingPS$1\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t]),\n\t\t\t\t\t\tfragmentDefines: meta.version === 2 ? undefined : new Map([\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t'REORDER_V1',\n\t\t\t\t\t\t\t\t\t\t'1'\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t])\n\t\t\t\t});\n\t\t\t\tconst renderTarget = new RenderTarget({\n\t\t\t\t\t\tcolorBuffer: this.packedShN,\n\t\t\t\t\t\tdepth: false,\n\t\t\t\t\t\tmipLevel: 0\n\t\t\t\t});\n\t\t\t\tdevice.setCullMode(CULLFACE_NONE);\n\t\t\t\tdevice.setBlendState(BlendState.NOBLEND);\n\t\t\t\tdevice.setDepthState(DepthState.NODEPTH);\n\t\t\t\tresolve(scope, {\n\t\t\t\t\t\tsh_centroids,\n\t\t\t\t\t\t'shN_codebook[0]': this.meta.shN.codebook\n\t\t\t\t});\n\t\t\t\tdrawQuadWithShader(device, renderTarget, shader);\n\t\t\t\trenderTarget.destroy();\n\t\t}\n\t\tasync prepareGpuData() {\n\t\t\t\tconst { device, height, width } = this.means_l;\n\t\t\t\tif (this.destroyed || device._destroyed) return;\n\t\t\t\tthis.packedTexture = new Texture(device, {\n\t\t\t\t\t\tname: 'sogsPackedTexture',\n\t\t\t\t\t\twidth,\n\t\t\t\t\t\theight,\n\t\t\t\t\t\tformat: PIXELFORMAT_RGBA32U,\n\t\t\t\t\t\tmipmaps: false\n\t\t\t\t});\n\t\t\t\tthis.packedSh0 = new Texture(device, {\n\t\t\t\t\t\tname: 'sogsPackedSh0',\n\t\t\t\t\t\twidth,\n\t\t\t\t\t\theight,\n\t\t\t\t\t\tformat: PIXELFORMAT_RGBA8,\n\t\t\t\t\t\tmipmaps: false\n\t\t\t\t});\n\t\t\t\tthis.packedShN = this.sh_centroids && new Texture(device, {\n\t\t\t\t\t\tname: 'sogsPackedShN',\n\t\t\t\t\t\twidth: this.sh_centroids.width,\n\t\t\t\t\t\theight: this.sh_centroids.height,\n\t\t\t\t\t\tformat: PIXELFORMAT_RGBA8,\n\t\t\t\t\t\tmipmaps: false\n\t\t\t\t});\n\t\t\t\tdevice.on('devicerestored', ()=>{\n\t\t\t\t\t\tthis.packGpuMemory();\n\t\t\t\t\t\tif (this.packedShN) {\n\t\t\t\t\t\t\t\tthis.packShMemory();\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t[\n\t\t\t\t\t\t'scales',\n\t\t\t\t\t\t'sh0',\n\t\t\t\t\t\t'shN'\n\t\t\t\t].forEach((name)=>{\n\t\t\t\t\t\tconst codebook = this.meta[name]?.codebook;\n\t\t\t\t\t\tif (codebook?.[0] === null) {\n\t\t\t\t\t\t\t\tcodebook[0] = codebook[1] + (codebook[1] - codebook[255]) / 255;\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif (this.destroyed || device._destroyed) return;\n\t\t\t\tawait this.generateCenters();\n\t\t\t\tif (this.destroyed || device._destroyed) return;\n\t\t\t\tthis.packGpuMemory();\n\t\t\t\tif (this.packedShN) {\n\t\t\t\t\t\tif (this.destroyed || device._destroyed) return;\n\t\t\t\t\t\tthis.packShMemory();\n\t\t\t\t}\n\t\t}\n\t\treorderData() {\n\t\t\t\treturn this.prepareGpuData();\n\t\t}\n\t\tconstructor(){\n\t\t\t\tthis._centers = null;\n\t\t\t\tthis.destroyed = false;\n\t\t}\n}\n\nconst mat = new Mat4();\nconst cameraPosition$1 = new Vec3();\nconst cameraDirection$1 = new Vec3();\nconst viewport = [\n\t\t0,\n\t\t0\n];\nclass GSplatInstance {\n\t\tconstructor(resource, options = {}){\n\t\t\t\tthis.options = {};\n\t\t\t\tthis.sorter = null;\n\t\t\t\tthis.lastCameraPosition = new Vec3();\n\t\t\t\tthis.lastCameraDirection = new Vec3();\n\t\t\t\tthis.resolveSH = null;\n\t\t\t\tthis.cameras = [];\n\t\t\t\tthis.resource = resource;\n\t\t\t\tthis.orderTexture = resource.createTexture('splatOrder', PIXELFORMAT_R32U, resource.evalTextureSize(resource.numSplats));\n\t\t\t\tif (options.material) {\n\t\t\t\t\t\tthis._material = options.material;\n\t\t\t\t\t\tthis.setMaterialOrderTexture(this._material);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._material = new ShaderMaterial({\n\t\t\t\t\t\t\t\tuniqueName: 'SplatMaterial',\n\t\t\t\t\t\t\t\tvertexGLSL: '#include \"gsplatVS\"',\n\t\t\t\t\t\t\t\tfragmentGLSL: '#include \"gsplatPS\"',\n\t\t\t\t\t\t\t\tvertexWGSL: '#include \"gsplatVS\"',\n\t\t\t\t\t\t\t\tfragmentWGSL: '#include \"gsplatPS\"',\n\t\t\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\t\t\tvertex_position: SEMANTIC_POSITION,\n\t\t\t\t\t\t\t\t\t\tvertex_id_attrib: SEMANTIC_ATTR13\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis.configureMaterial(this._material);\n\t\t\t\t\t\tthis._material.update();\n\t\t\t\t}\n\t\t\t\tthis.meshInstance = new MeshInstance(resource.mesh, this._material);\n\t\t\t\tthis.meshInstance.setInstancing(resource.instanceIndices, true);\n\t\t\t\tthis.meshInstance.gsplatInstance = this;\n\t\t\t\tthis.meshInstance.instancingCount = 0;\n\t\t\t\tconst centers = resource.centers.slice();\n\t\t\t\tconst chunks = resource.chunks?.slice();\n\t\t\t\tthis.sorter = new GSplatSorter();\n\t\t\t\tthis.sorter.init(this.orderTexture, centers, chunks);\n\t\t\t\tthis.sorter.on('updated', (count)=>{\n\t\t\t\t\t\tthis.meshInstance.instancingCount = Math.ceil(count / GSplatResourceBase.instanceSize);\n\t\t\t\t\t\tthis.material.setParameter('numSplats', count);\n\t\t\t\t});\n\t\t\t\tthis.setHighQualitySH(options.highQualitySH ?? false);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.orderTexture?.destroy();\n\t\t\t\tthis.resolveSH?.destroy();\n\t\t\t\tthis.material?.destroy();\n\t\t\t\tthis.meshInstance?.destroy();\n\t\t\t\tthis.sorter?.destroy();\n\t\t}\n\t\tsetMaterialOrderTexture(material) {\n\t\t\t\tmaterial.setParameter('splatOrder', this.orderTexture);\n\t\t\t\tmaterial.setParameter('splatTextureSize', this.orderTexture.width);\n\t\t}\n\t\tset material(value) {\n\t\t\t\tif (this._material !== value) {\n\t\t\t\t\t\tthis._material = value;\n\t\t\t\t\t\tthis.setMaterialOrderTexture(this._material);\n\t\t\t\t\t\tif (this.meshInstance) {\n\t\t\t\t\t\t\t\tthis.meshInstance.material = value;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget material() {\n\t\t\t\treturn this._material;\n\t\t}\n\t\tconfigureMaterial(material, options = {}) {\n\t\t\t\tthis.resource.configureMaterial(material);\n\t\t\t\tmaterial.setParameter('numSplats', 0);\n\t\t\t\tthis.setMaterialOrderTexture(material);\n\t\t\t\tmaterial.setParameter('alphaClip', 0.3);\n\t\t\t\tmaterial.setDefine(`DITHER_${options.dither ? 'BLUENOISE' : 'NONE'}`, '');\n\t\t\t\tmaterial.cull = CULLFACE_NONE;\n\t\t\t\tmaterial.blendType = options.dither ? BLEND_NONE : BLEND_PREMULTIPLIED;\n\t\t\t\tmaterial.depthWrite = !!options.dither;\n\t\t}\n\t\tupdateViewport(cameraNode) {\n\t\t\t\tconst camera = cameraNode?.camera;\n\t\t\t\tconst renderTarget = camera?.renderTarget;\n\t\t\t\tconst { width, height } = renderTarget ?? this.resource.device;\n\t\t\t\tviewport[0] = width;\n\t\t\t\tviewport[1] = height;\n\t\t\t\tconst xr = camera?.camera?.xr;\n\t\t\t\tif (xr?.active && xr.views.list.length === 2) {\n\t\t\t\t\t\tviewport[0] *= 0.5;\n\t\t\t\t}\n\t\t\t\tthis.material.setParameter('viewport', viewport);\n\t\t}\n\t\tsort(cameraNode) {\n\t\t\t\tif (this.sorter) {\n\t\t\t\t\t\tconst cameraMat = cameraNode.getWorldTransform();\n\t\t\t\t\t\tcameraMat.getTranslation(cameraPosition$1);\n\t\t\t\t\t\tcameraMat.getZ(cameraDirection$1);\n\t\t\t\t\t\tconst modelMat = this.meshInstance.node.getWorldTransform();\n\t\t\t\t\t\tconst invModelMat = mat.invert(modelMat);\n\t\t\t\t\t\tinvModelMat.transformPoint(cameraPosition$1, cameraPosition$1);\n\t\t\t\t\t\tinvModelMat.transformVector(cameraDirection$1, cameraDirection$1);\n\t\t\t\t\t\tif (!cameraPosition$1.equalsApprox(this.lastCameraPosition) || !cameraDirection$1.equalsApprox(this.lastCameraDirection)) {\n\t\t\t\t\t\t\t\tthis.lastCameraPosition.copy(cameraPosition$1);\n\t\t\t\t\t\t\t\tthis.lastCameraDirection.copy(cameraDirection$1);\n\t\t\t\t\t\t\t\tthis.sorter.setCamera(cameraPosition$1, cameraDirection$1);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.updateViewport(cameraNode);\n\t\t}\n\t\tupdate() {\n\t\t\t\tif (this.cameras.length > 0) {\n\t\t\t\t\t\tconst camera = this.cameras[0];\n\t\t\t\t\t\tthis.sort(camera._node);\n\t\t\t\t\t\tthis.resolveSH?.render(camera._node, this.meshInstance.node.getWorldTransform());\n\t\t\t\t\t\tthis.cameras.length = 0;\n\t\t\t\t}\n\t\t}\n\t\tsetHighQualitySH(value) {\n\t\t\t\tconst { resource } = this;\n\t\t\t\tconst { gsplatData } = resource;\n\t\t\t\tif (gsplatData instanceof GSplatSogsData && gsplatData.shBands > 0 && value === !!this.resolveSH) {\n\t\t\t\t\t\tif (this.resolveSH) {\n\t\t\t\t\t\t\t\tthis.resolveSH.destroy();\n\t\t\t\t\t\t\t\tthis.resolveSH = null;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.resolveSH = new GSplatResolveSH(resource.device, this);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n}\n\nclass GSplatSogsResource extends GSplatResourceBase {\n\t\tdestroy() {\n\t\t\t\tthis.gsplatData.destroy();\n\t\t\t\tsuper.destroy();\n\t\t}\n\t\tconfigureMaterialDefines(defines) {\n\t\t\t\tdefines.set('GSPLAT_SOGS_DATA', true);\n\t\t\t\tdefines.set('SH_BANDS', this.gsplatData.shBands);\n\t\t}\n\t\tconfigureMaterial(material) {\n\t\t\t\tconst { gsplatData } = this;\n\t\t\t\tconst { meta } = gsplatData;\n\t\t\t\tthis.configureMaterialDefines(material.defines);\n\t\t\t\t[\n\t\t\t\t\t\t'packedTexture',\n\t\t\t\t\t\t'packedSh0',\n\t\t\t\t\t\t'packedShN'\n\t\t\t\t].forEach((name)=>{\n\t\t\t\t\t\tif (gsplatData[name]) {\n\t\t\t\t\t\t\t\tmaterial.setParameter(name, gsplatData[name]);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t[\n\t\t\t\t\t\t'means'\n\t\t\t\t].forEach((name)=>{\n\t\t\t\t\t\tconst v = meta[name];\n\t\t\t\t\t\tif (v) {\n\t\t\t\t\t\t\t\tmaterial.setParameter(`${name}_mins`, v.mins);\n\t\t\t\t\t\t\t\tmaterial.setParameter(`${name}_maxs`, v.maxs);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif (meta.version === 2) {\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t'scales',\n\t\t\t\t\t\t\t\t'sh0',\n\t\t\t\t\t\t\t\t'shN'\n\t\t\t\t\t\t].forEach((name)=>{\n\t\t\t\t\t\t\t\tconst v = meta[name];\n\t\t\t\t\t\t\t\tif (v) {\n\t\t\t\t\t\t\t\t\t\tmaterial.setParameter(`${name}_mins`, v.codebook[0]);\n\t\t\t\t\t\t\t\t\t\tmaterial.setParameter(`${name}_maxs`, v.codebook[255]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t'scales',\n\t\t\t\t\t\t\t\t'sh0'\n\t\t\t\t\t\t].forEach((name)=>{\n\t\t\t\t\t\t\t\tconst v = meta[name];\n\t\t\t\t\t\t\t\tif (v) {\n\t\t\t\t\t\t\t\t\t\tmaterial.setParameter(`${name}_mins`, Math.min(...v.mins.slice(0, 3)));\n\t\t\t\t\t\t\t\t\t\tmaterial.setParameter(`${name}_maxs`, Math.max(...v.maxs.slice(0, 3)));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t'shN'\n\t\t\t\t\t\t].forEach((name)=>{\n\t\t\t\t\t\t\t\tconst v = meta[name];\n\t\t\t\t\t\t\t\tif (v) {\n\t\t\t\t\t\t\t\t\t\tmaterial.setParameter(`${name}_mins`, v.mins);\n\t\t\t\t\t\t\t\t\t\tmaterial.setParameter(`${name}_maxs`, v.maxs);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t}\n\t\tevalTextureSize(count) {\n\t\t\t\treturn new Vec2(this.gsplatData.means_l.width, this.gsplatData.means_l.height);\n\t\t}\n}\n\nconst FILLMODE_NONE = 'NONE';\nconst FILLMODE_FILL_WINDOW = 'FILL_WINDOW';\nconst FILLMODE_KEEP_ASPECT = 'KEEP_ASPECT';\nconst RESOLUTION_AUTO = 'AUTO';\nconst RESOLUTION_FIXED = 'FIXED';\n\nlet currentApplication;\nfunction getApplication() {\n\t\treturn currentApplication;\n}\nfunction setApplication(app) {\n\t\tcurrentApplication = app;\n}\n\nlet _createdLoadingScreen = false;\nconst script = {\n\t\tapp: null,\n\t\tcreateLoadingScreen (callback) {\n\t\t\t\tif (_createdLoadingScreen) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t_createdLoadingScreen = true;\n\t\t\t\tconst app = getApplication();\n\t\t\t\tcallback(app);\n\t\t}\n};\n\nclass FrameGraph {\n\t\taddRenderPass(renderPass) {\n\t\t\t\trenderPass.frameUpdate();\n\t\t\t\tconst beforePasses = renderPass.beforePasses;\n\t\t\t\tfor(let i = 0; i < beforePasses.length; i++){\n\t\t\t\t\t\tconst pass = beforePasses[i];\n\t\t\t\t\t\tif (pass.enabled) {\n\t\t\t\t\t\t\t\tthis.addRenderPass(pass);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (renderPass.enabled) {\n\t\t\t\t\t\tthis.renderPasses.push(renderPass);\n\t\t\t\t}\n\t\t\t\tconst afterPasses = renderPass.afterPasses;\n\t\t\t\tfor(let i = 0; i < afterPasses.length; i++){\n\t\t\t\t\t\tconst pass = afterPasses[i];\n\t\t\t\t\t\tif (pass.enabled) {\n\t\t\t\t\t\t\t\tthis.addRenderPass(pass);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\treset() {\n\t\t\t\tthis.renderPasses.length = 0;\n\t\t}\n\t\tcompile() {\n\t\t\t\tconst renderTargetMap = this.renderTargetMap;\n\t\t\t\tconst renderPasses = this.renderPasses;\n\t\t\t\tfor(let i = 0; i < renderPasses.length; i++){\n\t\t\t\t\t\tconst renderPass = renderPasses[i];\n\t\t\t\t\t\tconst renderTarget = renderPass.renderTarget;\n\t\t\t\t\t\tif (renderTarget !== undefined) {\n\t\t\t\t\t\t\t\tconst prevPass = renderTargetMap.get(renderTarget);\n\t\t\t\t\t\t\t\tif (prevPass) {\n\t\t\t\t\t\t\t\t\t\tconst count = renderPass.colorArrayOps.length;\n\t\t\t\t\t\t\t\t\t\tfor(let j = 0; j < count; j++){\n\t\t\t\t\t\t\t\t\t\t\t\tconst colorOps = renderPass.colorArrayOps[j];\n\t\t\t\t\t\t\t\t\t\t\t\tif (!colorOps.clear) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tprevPass.colorArrayOps[j].store = true;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (!renderPass.depthStencilOps.clearDepth) {\n\t\t\t\t\t\t\t\t\t\t\t\tprevPass.depthStencilOps.storeDepth = true;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (!renderPass.depthStencilOps.clearStencil) {\n\t\t\t\t\t\t\t\t\t\t\t\tprevPass.depthStencilOps.storeStencil = true;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\trenderTargetMap.set(renderTarget, renderPass);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < renderPasses.length - 1; i++){\n\t\t\t\t\t\tconst firstPass = renderPasses[i];\n\t\t\t\t\t\tconst firstRT = firstPass.renderTarget;\n\t\t\t\t\t\tconst secondPass = renderPasses[i + 1];\n\t\t\t\t\t\tconst secondRT = secondPass.renderTarget;\n\t\t\t\t\t\tif (firstRT !== secondRT || firstRT === undefined) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (secondPass.depthStencilOps.clearDepth || secondPass.depthStencilOps.clearStencil || secondPass.colorArrayOps.some((colorOps)=>colorOps.clear)) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (firstPass.afterPasses.length > 0) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (secondPass.beforePasses.length > 0) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfirstPass._skipEnd = true;\n\t\t\t\t\t\tsecondPass._skipStart = true;\n\t\t\t\t}\n\t\t\t\tlet lastCubeTexture = null;\n\t\t\t\tlet lastCubeRenderPass = null;\n\t\t\t\tfor(let i = 0; i < renderPasses.length; i++){\n\t\t\t\t\t\tconst renderPass = renderPasses[i];\n\t\t\t\t\t\tconst renderTarget = renderPass.renderTarget;\n\t\t\t\t\t\tconst thisTexture = renderTarget?.colorBuffer;\n\t\t\t\t\t\tif (thisTexture?.cubemap) {\n\t\t\t\t\t\t\t\tif (lastCubeTexture === thisTexture) {\n\t\t\t\t\t\t\t\t\t\tconst count = lastCubeRenderPass.colorArrayOps.length;\n\t\t\t\t\t\t\t\t\t\tfor(let j = 0; j < count; j++){\n\t\t\t\t\t\t\t\t\t\t\t\tlastCubeRenderPass.colorArrayOps[j].mipmaps = false;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tlastCubeTexture = renderTarget.colorBuffer;\n\t\t\t\t\t\t\t\tlastCubeRenderPass = renderPass;\n\t\t\t\t\t\t} else if (renderPass.requiresCubemaps) {\n\t\t\t\t\t\t\t\tlastCubeTexture = null;\n\t\t\t\t\t\t\t\tlastCubeRenderPass = null;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\trenderTargetMap.clear();\n\t\t}\n\t\trender(device) {\n\t\t\t\tthis.compile();\n\t\t\t\tconst renderPasses = this.renderPasses;\n\t\t\t\tfor(let i = 0; i < renderPasses.length; i++){\n\t\t\t\t\t\trenderPasses[i].render();\n\t\t\t\t}\n\t\t}\n\t\tconstructor(){\n\t\t\t\tthis.renderPasses = [];\n\t\t\t\tthis.renderTargetMap = new Map();\n\t\t}\n}\n\nclass AreaLightCacheEntry {\n\t\tconstructor(texture0, texture1){\n\t\t\t\tthis.texture0 = texture0;\n\t\t\t\tthis.texture1 = texture1;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.texture0?.destroy();\n\t\t\t\tthis.texture1?.destroy();\n\t\t}\n}\nconst deviceCache = new DeviceCache();\nclass AreaLightLuts {\n\t\tstatic createTexture(device, format, size, postfix = '') {\n\t\t\t\tconst tex = new Texture(device, {\n\t\t\t\t\t\tname: `AreaLightLUT${postfix}`,\n\t\t\t\t\t\twidth: size,\n\t\t\t\t\t\theight: size,\n\t\t\t\t\t\tformat: format,\n\t\t\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\ttype: TEXTURETYPE_DEFAULT,\n\t\t\t\t\t\tmagFilter: FILTER_LINEAR,\n\t\t\t\t\t\tminFilter: FILTER_NEAREST,\n\t\t\t\t\t\tanisotropy: 1,\n\t\t\t\t\t\tmipmaps: false\n\t\t\t\t});\n\t\t\t\treturn tex;\n\t\t}\n\t\tstatic applyTextures(device, texture1, texture2) {\n\t\t\t\tdeviceCache.remove(device);\n\t\t\t\tdeviceCache.get(device, ()=>{\n\t\t\t\t\t\treturn new AreaLightCacheEntry(texture1, texture1 === texture2 ? null : texture2);\n\t\t\t\t});\n\t\t\t\tdevice.scope.resolve('areaLightsLutTex1').setValue(texture1);\n\t\t\t\tdevice.scope.resolve('areaLightsLutTex2').setValue(texture2);\n\t\t}\n\t\tstatic createPlaceholder(device) {\n\t\t\t\tconst texture = AreaLightLuts.createTexture(device, PIXELFORMAT_RGBA16F, 2, 'placeholder');\n\t\t\t\tconst pixels = texture.lock();\n\t\t\t\tpixels.fill(0);\n\t\t\t\ttexture.unlock();\n\t\t\t\tAreaLightLuts.applyTextures(device, texture, texture);\n\t\t}\n\t\tstatic set(device, ltcMat1, ltcMat2) {\n\t\t\t\tfunction buildTexture(device, data, format) {\n\t\t\t\t\t\tconst texture = AreaLightLuts.createTexture(device, format, 64);\n\t\t\t\t\t\ttexture.lock().set(data);\n\t\t\t\t\t\ttexture.unlock();\n\t\t\t\t\t\treturn texture;\n\t\t\t\t}\n\t\t\t\tfunction convertToHalfFloat(data) {\n\t\t\t\t\t\tconst count = data.length;\n\t\t\t\t\t\tconst ret = new Uint16Array(count);\n\t\t\t\t\t\tconst float2Half = FloatPacking.float2Half;\n\t\t\t\t\t\tfor(let i = 0; i < count; i++){\n\t\t\t\t\t\t\t\tret[i] = float2Half(data[i]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn ret;\n\t\t\t\t}\n\t\t\t\tconst srcData1 = ltcMat1;\n\t\t\t\tconst srcData2 = ltcMat2;\n\t\t\t\tconst data1 = convertToHalfFloat(srcData1);\n\t\t\t\tconst data2 = convertToHalfFloat(srcData2);\n\t\t\t\tconst tex1 = buildTexture(device, data1, PIXELFORMAT_RGBA16F);\n\t\t\t\tconst tex2 = buildTexture(device, data2, PIXELFORMAT_RGBA16F);\n\t\t\t\tAreaLightLuts.applyTextures(device, tex1, tex2);\n\t\t}\n}\n\nconst DEFAULT_LOCALE = 'en-US';\nconst DEFAULT_LOCALE_FALLBACKS = {\n\t\t'en': 'en-US',\n\t\t'es': 'en-ES',\n\t\t'zh': 'zh-CN',\n\t\t'zh-HK': 'zh-TW',\n\t\t'zh-TW': 'zh-HK',\n\t\t'zh-MO': 'zh-HK',\n\t\t'fr': 'fr-FR',\n\t\t'de': 'de-DE',\n\t\t'it': 'it-IT',\n\t\t'ru': 'ru-RU',\n\t\t'ja': 'ja-JP'\n};\n\nconst PLURALS = {};\nfunction definePluralFn(locales, fn) {\n\t\tfor(let i = 0, len = locales.length; i < len; i++){\n\t\t\t\tPLURALS[locales[i]] = fn;\n\t\t}\n}\nfunction getLang(locale) {\n\t\tconst idx = locale.indexOf('-');\n\t\tif (idx !== -1) {\n\t\t\t\treturn locale.substring(0, idx);\n\t\t}\n\t\treturn locale;\n}\nfunction replaceLang(locale, desiredLang) {\n\t\tconst idx = locale.indexOf('-');\n\t\tif (idx !== -1) {\n\t\t\t\treturn desiredLang + locale.substring(idx);\n\t\t}\n\t\treturn desiredLang;\n}\nfunction findAvailableLocale(desiredLocale, availableLocales) {\n\t\tif (availableLocales[desiredLocale]) {\n\t\t\t\treturn desiredLocale;\n\t\t}\n\t\tlet fallback = DEFAULT_LOCALE_FALLBACKS[desiredLocale];\n\t\tif (fallback && availableLocales[fallback]) {\n\t\t\t\treturn fallback;\n\t\t}\n\t\tconst lang = getLang(desiredLocale);\n\t\tfallback = DEFAULT_LOCALE_FALLBACKS[lang];\n\t\tif (availableLocales[fallback]) {\n\t\t\t\treturn fallback;\n\t\t}\n\t\tif (availableLocales[lang]) {\n\t\t\t\treturn lang;\n\t\t}\n\t\treturn DEFAULT_LOCALE;\n}\ndefinePluralFn([\n\t\t'ja',\n\t\t'ko',\n\t\t'th',\n\t\t'vi',\n\t\t'zh',\n\t\t'id'\n], (n)=>{\n\t\treturn 0;\n});\ndefinePluralFn([\n\t\t'fa',\n\t\t'hi'\n], (n)=>{\n\t\tif (n >= 0 && n <= 1) {\n\t\t\t\treturn 0;\n\t\t}\n\t\treturn 1;\n});\ndefinePluralFn([\n\t\t'fr',\n\t\t'pt'\n], (n)=>{\n\t\tif (n >= 0 && n < 2) {\n\t\t\t\treturn 0;\n\t\t}\n\t\treturn 1;\n});\ndefinePluralFn([\n\t\t'da'\n], (n)=>{\n\t\tif (n === 1 || !Number.isInteger(n) && n >= 0 && n <= 1) {\n\t\t\t\treturn 0;\n\t\t}\n\t\treturn 1;\n});\ndefinePluralFn([\n\t\t'de',\n\t\t'en',\n\t\t'it',\n\t\t'el',\n\t\t'es',\n\t\t'tr',\n\t\t'fi',\n\t\t'sv',\n\t\t'nb',\n\t\t'no',\n\t\t'ur'\n], (n)=>{\n\t\tif (n === 1) {\n\t\t\t\treturn 0;\n\t\t}\n\t\treturn 1;\n});\ndefinePluralFn([\n\t\t'ru',\n\t\t'uk'\n], (n)=>{\n\t\tif (Number.isInteger(n)) {\n\t\t\t\tconst mod10 = n % 10;\n\t\t\t\tconst mod100 = n % 100;\n\t\t\t\tif (mod10 === 1 && mod100 !== 11) {\n\t\t\t\t\t\treturn 0;\n\t\t\t\t} else if (mod10 >= 2 && mod10 <= 4 && (mod100 < 12 || mod100 > 14)) {\n\t\t\t\t\t\treturn 1;\n\t\t\t\t} else if (mod10 === 0 || mod10 >= 5 && mod10 <= 9 || mod100 >= 11 && mod100 <= 14) {\n\t\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t}\n\t\treturn 3;\n});\ndefinePluralFn([\n\t\t'pl'\n], (n)=>{\n\t\tif (Number.isInteger(n)) {\n\t\t\t\tif (n === 1) {\n\t\t\t\t\t\treturn 0;\n\t\t\t\t}\n\t\t\t\tconst mod10 = n % 10;\n\t\t\t\tconst mod100 = n % 100;\n\t\t\t\tif (mod10 >= 2 && mod10 <= 4 && (mod100 < 12 || mod100 > 14)) {\n\t\t\t\t\t\treturn 1;\n\t\t\t\t} else if (mod10 >= 0 && mod10 <= 1 || mod10 >= 5 && mod10 <= 9 || mod100 >= 12 && mod100 <= 14) {\n\t\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t}\n\t\treturn 3;\n});\ndefinePluralFn([\n\t\t'ar'\n], (n)=>{\n\t\tif (n === 0) {\n\t\t\t\treturn 0;\n\t\t} else if (n === 1) {\n\t\t\t\treturn 1;\n\t\t} else if (n === 2) {\n\t\t\t\treturn 2;\n\t\t}\n\t\tif (Number.isInteger(n)) {\n\t\t\t\tconst mod100 = n % 100;\n\t\t\t\tif (mod100 >= 3 && mod100 <= 10) {\n\t\t\t\t\t\treturn 3;\n\t\t\t\t} else if (mod100 >= 11 && mod100 <= 99) {\n\t\t\t\t\t\treturn 4;\n\t\t\t\t}\n\t\t}\n\t\treturn 5;\n});\nconst DEFAULT_PLURAL_FN = PLURALS[getLang(DEFAULT_LOCALE)];\nfunction getPluralFn(lang) {\n\t\treturn PLURALS[lang] || DEFAULT_PLURAL_FN;\n}\n\nconst ABSOLUTE_URL = new RegExp('^' + '\\\\s*' + '(?:' + '(?:' + '[a-z]+[a-z0-9\\\\-+.]*' + ':' + ')?' + '//' + '|' + 'data:' + '|blob:' + ')', 'i');\nconst ASSET_ANIMATION = 'animation';\nconst ASSET_AUDIO = 'audio';\nconst ASSET_IMAGE = 'image';\nconst ASSET_JSON = 'json';\nconst ASSET_MODEL = 'model';\nconst ASSET_MATERIAL = 'material';\nconst ASSET_TEXT = 'text';\nconst ASSET_TEXTURE = 'texture';\nconst ASSET_TEXTUREATLAS = 'textureatlas';\nconst ASSET_CUBEMAP = 'cubemap';\nconst ASSET_SHADER = 'shader';\nconst ASSET_CSS = 'css';\nconst ASSET_HTML = 'html';\nconst ASSET_SCRIPT = \"script\";\nconst ASSET_CONTAINER = 'container';\n\nclass AssetFile {\n\t\tconstructor(url = '', filename = '', hash = null, size = null, opt = null, contents = null){\n\t\t\t\tthis.url = url;\n\t\t\t\tthis.filename = filename;\n\t\t\t\tthis.hash = hash;\n\t\t\t\tthis.size = size;\n\t\t\t\tthis.opt = opt;\n\t\t\t\tthis.contents = contents;\n\t\t}\n\t\tequals(other) {\n\t\t\t\treturn this.url === other.url && this.filename === other.filename && this.hash === other.hash && this.size === other.size && this.opt === other.opt && this.contents === other.contents;\n\t\t}\n}\n\nlet assetIdCounter = -1;\nconst VARIANT_SUPPORT = {\n\t\tpvr: 'extCompressedTexturePVRTC',\n\t\tdxt: 'extCompressedTextureS3TC',\n\t\tetc2: 'extCompressedTextureETC',\n\t\tetc1: 'extCompressedTextureETC1',\n\t\tbasis: 'canvas'\n};\nconst VARIANT_DEFAULT_PRIORITY = [\n\t\t'pvr',\n\t\t'dxt',\n\t\t'etc2',\n\t\t'etc1',\n\t\t'basis'\n];\nclass Asset extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_LOAD = 'load';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_UNLOAD = 'unload';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_REMOVE = 'remove';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_ERROR = 'error';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_CHANGE = 'change';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_PROGRESS = 'progress';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_ADDLOCALIZED = 'add:localized';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_REMOVELOCALIZED = 'remove:localized';\n\t\t}\n\t\tconstructor(name, type, file, data = {}, options = {}){\n\t\t\t\tsuper(), this._file = null, this._i18n = {}, this._preload = false, this._resources = [], this.id = assetIdCounter--, this.loaded = false, this.loading = false, this.options = {}, this.registry = null, this.tags = new Tags(this), this.urlObject = null;\n\t\t\t\tthis._name = name || '';\n\t\t\t\tthis.type = type;\n\t\t\t\tthis._data = data || {};\n\t\t\t\tthis.options = options || {};\n\t\t\t\tif (file) this.file = file;\n\t\t}\n\t\tset name(value) {\n\t\t\t\tif (this._name === value) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst old = this._name;\n\t\t\t\tthis._name = value;\n\t\t\t\tthis.fire('name', this, this._name, old);\n\t\t}\n\t\tget name() {\n\t\t\t\treturn this._name;\n\t\t}\n\t\tset file(value) {\n\t\t\t\tif (value && value.variants && [\n\t\t\t\t\t\t'texture',\n\t\t\t\t\t\t'textureatlas',\n\t\t\t\t\t\t'bundle'\n\t\t\t\t].indexOf(this.type) !== -1) {\n\t\t\t\t\t\tconst app = this.registry?._loader?._app || getApplication();\n\t\t\t\t\t\tconst device = app?.graphicsDevice;\n\t\t\t\t\t\tif (device) {\n\t\t\t\t\t\t\t\tfor(let i = 0, len = VARIANT_DEFAULT_PRIORITY.length; i < len; i++){\n\t\t\t\t\t\t\t\t\t\tconst variant = VARIANT_DEFAULT_PRIORITY[i];\n\t\t\t\t\t\t\t\t\t\tif (value.variants[variant] && device[VARIANT_SUPPORT[variant]]) {\n\t\t\t\t\t\t\t\t\t\t\t\tvalue = value.variants[variant];\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (app.enableBundles) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst bundles = app.bundles.listBundlesForAsset(this);\n\t\t\t\t\t\t\t\t\t\t\t\tif (bundles && bundles.find((b)=>{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn b?.file?.variants[variant];\n\t\t\t\t\t\t\t\t\t\t\t\t})) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst oldFile = this._file;\n\t\t\t\tconst newFile = value ? new AssetFile(value.url, value.filename, value.hash, value.size, value.opt, value.contents) : null;\n\t\t\t\tif (!!newFile !== !!oldFile || newFile && !newFile.equals(oldFile)) {\n\t\t\t\t\t\tthis._file = newFile;\n\t\t\t\t\t\tthis.fire('change', this, 'file', newFile, oldFile);\n\t\t\t\t\t\tthis.reload();\n\t\t\t\t}\n\t\t}\n\t\tget file() {\n\t\t\t\treturn this._file;\n\t\t}\n\t\tset data(value) {\n\t\t\t\tconst old = this._data;\n\t\t\t\tthis._data = value;\n\t\t\t\tif (value !== old) {\n\t\t\t\t\t\tthis.fire('change', this, 'data', value, old);\n\t\t\t\t\t\tif (this.loaded) {\n\t\t\t\t\t\t\t\tthis.registry._loader.patch(this, this.registry);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget data() {\n\t\t\t\treturn this._data;\n\t\t}\n\t\tset resource(value) {\n\t\t\t\tconst _old = this._resources[0];\n\t\t\t\tthis._resources[0] = value;\n\t\t\t\tthis.fire('change', this, 'resource', value, _old);\n\t\t}\n\t\tget resource() {\n\t\t\t\treturn this._resources[0];\n\t\t}\n\t\tset resources(value) {\n\t\t\t\tconst _old = this._resources;\n\t\t\t\tthis._resources = value;\n\t\t\t\tthis.fire('change', this, 'resources', value, _old);\n\t\t}\n\t\tget resources() {\n\t\t\t\treturn this._resources;\n\t\t}\n\t\tset preload(value) {\n\t\t\t\tvalue = !!value;\n\t\t\t\tif (this._preload === value) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._preload = value;\n\t\t\t\tif (this._preload && !this.loaded && !this.loading && this.registry) {\n\t\t\t\t\t\tthis.registry.load(this);\n\t\t\t\t}\n\t\t}\n\t\tget preload() {\n\t\t\t\treturn this._preload;\n\t\t}\n\t\tset loadFaces(value) {\n\t\t\t\tvalue = !!value;\n\t\t\t\tif (!this.hasOwnProperty('_loadFaces') || value !== this._loadFaces) {\n\t\t\t\t\t\tthis._loadFaces = value;\n\t\t\t\t\t\tif (this.loaded) {\n\t\t\t\t\t\t\t\tthis.registry._loader.patch(this, this.registry);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget loadFaces() {\n\t\t\t\treturn this._loadFaces;\n\t\t}\n\t\tgetFileUrl() {\n\t\t\t\tconst file = this.file;\n\t\t\t\tif (!file || !file.url) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tlet url = file.url;\n\t\t\t\tif (this.registry && this.registry.prefix && !ABSOLUTE_URL.test(url)) {\n\t\t\t\t\t\turl = this.registry.prefix + url;\n\t\t\t\t}\n\t\t\t\tif (this.type !== \"script\" && file.hash) {\n\t\t\t\t\t\tconst separator = url.indexOf('?') !== -1 ? '&' : '?';\n\t\t\t\t\t\turl += `${separator}t=${file.hash}`;\n\t\t\t\t}\n\t\t\t\treturn url;\n\t\t}\n\t\tgetAbsoluteUrl(relativePath) {\n\t\t\t\tif (relativePath.startsWith('blob:') || relativePath.startsWith('data:')) {\n\t\t\t\t\t\treturn relativePath;\n\t\t\t\t}\n\t\t\t\tconst base = path.getDirectory(this.file.url);\n\t\t\t\treturn path.join(base, relativePath);\n\t\t}\n\t\tgetLocalizedAssetId(locale) {\n\t\t\t\tlocale = findAvailableLocale(locale, this._i18n);\n\t\t\t\treturn this._i18n[locale] || null;\n\t\t}\n\t\taddLocalizedAssetId(locale, assetId) {\n\t\t\t\tthis._i18n[locale] = assetId;\n\t\t\t\tthis.fire('add:localized', locale, assetId);\n\t\t}\n\t\tremoveLocalizedAssetId(locale) {\n\t\t\t\tconst assetId = this._i18n[locale];\n\t\t\t\tif (assetId) {\n\t\t\t\t\t\tdelete this._i18n[locale];\n\t\t\t\t\t\tthis.fire('remove:localized', locale, assetId);\n\t\t\t\t}\n\t\t}\n\t\tready(callback, scope) {\n\t\t\t\tscope = scope || this;\n\t\t\t\tif (this.loaded) {\n\t\t\t\t\t\tcallback.call(scope, this);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.once('load', (asset)=>{\n\t\t\t\t\t\t\t\tcallback.call(scope, asset);\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t}\n\t\treload() {\n\t\t\t\tif (this.loaded) {\n\t\t\t\t\t\tthis.loaded = false;\n\t\t\t\t\t\tthis.registry.load(this);\n\t\t\t\t}\n\t\t}\n\t\tunload() {\n\t\t\t\tif (!this.loaded && this._resources.length === 0) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.fire('unload', this);\n\t\t\t\tthis.registry.fire(`unload:${this.id}`, this);\n\t\t\t\tconst old = this._resources;\n\t\t\t\tif (this.urlObject) {\n\t\t\t\t\t\tURL.revokeObjectURL(this.urlObject);\n\t\t\t\t\t\tthis.urlObject = null;\n\t\t\t\t}\n\t\t\t\tthis.resources = [];\n\t\t\t\tthis.loaded = false;\n\t\t\t\tif (this.file) {\n\t\t\t\t\t\tthis.registry._loader.clearCache(this.getFileUrl(), this.type);\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < old.length; ++i){\n\t\t\t\t\t\told[i]?.destroy?.();\n\t\t\t\t}\n\t\t}\n\t\tstatic fetchArrayBuffer(loadUrl, callback, asset, maxRetries = 0) {\n\t\t\t\tif (asset?.file?.contents) {\n\t\t\t\t\t\tsetTimeout(()=>{\n\t\t\t\t\t\t\t\tcallback(null, asset.file.contents);\n\t\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t\thttp.get(loadUrl, {\n\t\t\t\t\t\t\t\tcache: true,\n\t\t\t\t\t\t\t\tresponseType: 'arraybuffer',\n\t\t\t\t\t\t\t\tretry: maxRetries > 0,\n\t\t\t\t\t\t\t\tmaxRetries: maxRetries,\n\t\t\t\t\t\t\t\tprogress: asset\n\t\t\t\t\t\t}, callback);\n\t\t\t\t}\n\t\t}\n}\n\nclass TagsCache {\n\t\tconstructor(key = null){\n\t\t\t\tthis._index = {};\n\t\t\t\tthis._key = key;\n\t\t}\n\t\taddItem(item) {\n\t\t\t\tconst tags = item.tags._list;\n\t\t\t\tfor (const tag of tags){\n\t\t\t\t\t\tthis.add(tag, item);\n\t\t\t\t}\n\t\t}\n\t\tremoveItem(item) {\n\t\t\t\tconst tags = item.tags._list;\n\t\t\t\tfor (const tag of tags){\n\t\t\t\t\t\tthis.remove(tag, item);\n\t\t\t\t}\n\t\t}\n\t\tadd(tag, item) {\n\t\t\t\tif (this._index[tag] && this._index[tag].list.indexOf(item) !== -1) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (!this._index[tag]) {\n\t\t\t\t\t\tthis._index[tag] = {\n\t\t\t\t\t\t\t\tlist: []\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (this._key) {\n\t\t\t\t\t\t\t\tthis._index[tag].keys = {};\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._index[tag].list.push(item);\n\t\t\t\tif (this._key) {\n\t\t\t\t\t\tthis._index[tag].keys[item[this._key]] = item;\n\t\t\t\t}\n\t\t}\n\t\tremove(tag, item) {\n\t\t\t\tif (!this._index[tag]) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this._key) {\n\t\t\t\t\t\tif (!this._index[tag].keys[item[this._key]]) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst ind = this._index[tag].list.indexOf(item);\n\t\t\t\tif (ind === -1) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._index[tag].list.splice(ind, 1);\n\t\t\t\tif (this._key) {\n\t\t\t\t\t\tdelete this._index[tag].keys[item[this._key]];\n\t\t\t\t}\n\t\t\t\tif (this._index[tag].list.length === 0) {\n\t\t\t\t\t\tdelete this._index[tag];\n\t\t\t\t}\n\t\t}\n\t\tfind(args) {\n\t\t\t\tconst index = {};\n\t\t\t\tconst items = [];\n\t\t\t\tlet item, tag, tags, tagsRest, missingIndex;\n\t\t\t\tconst sort = (a, b)=>{\n\t\t\t\t\t\treturn this._index[a].list.length - this._index[b].list.length;\n\t\t\t\t};\n\t\t\t\tfor(let i = 0; i < args.length; i++){\n\t\t\t\t\t\ttag = args[i];\n\t\t\t\t\t\tif (tag instanceof Array) {\n\t\t\t\t\t\t\t\tif (tag.length === 0) {\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (tag.length === 1) {\n\t\t\t\t\t\t\t\t\t\ttag = tag[0];\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tmissingIndex = false;\n\t\t\t\t\t\t\t\t\t\tfor(let t = 0; t < tag.length; t++){\n\t\t\t\t\t\t\t\t\t\t\t\tif (!this._index[tag[t]]) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmissingIndex = true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (missingIndex) {\n\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\ttags = tag.slice(0).sort(sort);\n\t\t\t\t\t\t\t\t\t\ttagsRest = tags.slice(1);\n\t\t\t\t\t\t\t\t\t\tif (tagsRest.length === 1) {\n\t\t\t\t\t\t\t\t\t\t\t\ttagsRest = tagsRest[0];\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tfor(let n = 0; n < this._index[tags[0]].list.length; n++){\n\t\t\t\t\t\t\t\t\t\t\t\titem = this._index[tags[0]].list[n];\n\t\t\t\t\t\t\t\t\t\t\t\tif ((this._key ? !index[item[this._key]] : items.indexOf(item) === -1) && item.tags.has(tagsRest)) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (this._key) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tindex[item[this._key]] = true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\titems.push(item);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (tag && typeof tag === 'string' && this._index[tag]) {\n\t\t\t\t\t\t\t\tfor(let n = 0; n < this._index[tag].list.length; n++){\n\t\t\t\t\t\t\t\t\t\titem = this._index[tag].list[n];\n\t\t\t\t\t\t\t\t\t\tif (this._key) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (!index[item[this._key]]) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tindex[item[this._key]] = true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\titems.push(item);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t} else if (items.indexOf(item) === -1) {\n\t\t\t\t\t\t\t\t\t\t\t\titems.push(item);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn items;\n\t\t}\n}\n\nclass AssetRegistry extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_LOAD = 'load';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_ADD = 'add';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_REMOVE = 'remove';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_ERROR = 'error';\n\t\t}\n\t\tconstructor(loader){\n\t\t\t\tsuper(), this._assets = new Set(), this._idToAsset = new Map(), this._urlToAsset = new Map(), this._nameToAsset = new Map(), this._tags = new TagsCache('id'), this.prefix = null, this.bundles = null;\n\t\t\t\tthis._loader = loader;\n\t\t}\n\t\tlist(filters = {}) {\n\t\t\t\tconst assets = Array.from(this._assets);\n\t\t\t\tif (filters.preload !== undefined) {\n\t\t\t\t\t\treturn assets.filter((asset)=>asset.preload === filters.preload);\n\t\t\t\t}\n\t\t\t\treturn assets;\n\t\t}\n\t\tadd(asset) {\n\t\t\t\tif (this._assets.has(asset)) return;\n\t\t\t\tthis._assets.add(asset);\n\t\t\t\tthis._idToAsset.set(asset.id, asset);\n\t\t\t\tif (asset.file?.url) {\n\t\t\t\t\t\tthis._urlToAsset.set(asset.file.url, asset);\n\t\t\t\t}\n\t\t\t\tif (!this._nameToAsset.has(asset.name)) {\n\t\t\t\t\t\tthis._nameToAsset.set(asset.name, new Set());\n\t\t\t\t}\n\t\t\t\tthis._nameToAsset.get(asset.name).add(asset);\n\t\t\t\tasset.on('name', this._onNameChange, this);\n\t\t\t\tasset.registry = this;\n\t\t\t\tthis._tags.addItem(asset);\n\t\t\t\tasset.tags.on('add', this._onTagAdd, this);\n\t\t\t\tasset.tags.on('remove', this._onTagRemove, this);\n\t\t\t\tthis.fire('add', asset);\n\t\t\t\tthis.fire(`add:${asset.id}`, asset);\n\t\t\t\tif (asset.file?.url) {\n\t\t\t\t\t\tthis.fire(`add:url:${asset.file.url}`, asset);\n\t\t\t\t}\n\t\t\t\tif (asset.preload) {\n\t\t\t\t\t\tthis.load(asset);\n\t\t\t\t}\n\t\t}\n\t\tremove(asset) {\n\t\t\t\tif (!this._assets.has(asset)) return false;\n\t\t\t\tthis._assets.delete(asset);\n\t\t\t\tthis._idToAsset.delete(asset.id);\n\t\t\t\tif (asset.file?.url) {\n\t\t\t\t\t\tthis._urlToAsset.delete(asset.file.url);\n\t\t\t\t}\n\t\t\t\tasset.off('name', this._onNameChange, this);\n\t\t\t\tif (this._nameToAsset.has(asset.name)) {\n\t\t\t\t\t\tconst items = this._nameToAsset.get(asset.name);\n\t\t\t\t\t\titems.delete(asset);\n\t\t\t\t\t\tif (items.size === 0) {\n\t\t\t\t\t\t\t\tthis._nameToAsset.delete(asset.name);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._tags.removeItem(asset);\n\t\t\t\tasset.tags.off('add', this._onTagAdd, this);\n\t\t\t\tasset.tags.off('remove', this._onTagRemove, this);\n\t\t\t\tasset.fire('remove', asset);\n\t\t\t\tthis.fire('remove', asset);\n\t\t\t\tthis.fire(`remove:${asset.id}`, asset);\n\t\t\t\tif (asset.file?.url) {\n\t\t\t\t\t\tthis.fire(`remove:url:${asset.file.url}`, asset);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t}\n\t\tget(id) {\n\t\t\t\treturn this._idToAsset.get(Number(id));\n\t\t}\n\t\tgetByUrl(url) {\n\t\t\t\treturn this._urlToAsset.get(url);\n\t\t}\n\t\tload(asset, options) {\n\t\t\t\tif ((asset.loading || asset.loaded) && !options?.force) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst file = asset.file;\n\t\t\t\tconst _fireLoad = ()=>{\n\t\t\t\t\t\tthis.fire('load', asset);\n\t\t\t\t\t\tthis.fire(`load:${asset.id}`, asset);\n\t\t\t\t\t\tif (file && file.url) {\n\t\t\t\t\t\t\t\tthis.fire(`load:url:${file.url}`, asset);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tasset.fire('load', asset);\n\t\t\t\t};\n\t\t\t\tconst _opened = (resource)=>{\n\t\t\t\t\t\tif (resource instanceof Array) {\n\t\t\t\t\t\t\t\tasset.resources = resource;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tasset.resource = resource;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._loader.patch(asset, this);\n\t\t\t\t\t\tif (asset.type === 'bundle') {\n\t\t\t\t\t\t\t\tconst assetIds = asset.data.assets;\n\t\t\t\t\t\t\t\tfor(let i = 0; i < assetIds.length; i++){\n\t\t\t\t\t\t\t\t\t\tconst assetInBundle = this._idToAsset.get(assetIds[i]);\n\t\t\t\t\t\t\t\t\t\tif (assetInBundle && !assetInBundle.loaded) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.load(assetInBundle, {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tforce: true\n\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (asset.resource.loaded) {\n\t\t\t\t\t\t\t\t\t\t_fireLoad();\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis.fire('load:start', asset);\n\t\t\t\t\t\t\t\t\t\tthis.fire(`load:start:${asset.id}`, asset);\n\t\t\t\t\t\t\t\t\t\tif (file && file.url) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.fire(`load:start:url:${file.url}`, asset);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tasset.fire('load:start', asset);\n\t\t\t\t\t\t\t\t\t\tasset.resource.on('load', _fireLoad);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t_fireLoad();\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tconst _loaded = (err, resource, extra)=>{\n\t\t\t\t\t\tasset.loaded = true;\n\t\t\t\t\t\tasset.loading = false;\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\tthis.fire('error', err, asset);\n\t\t\t\t\t\t\t\tthis.fire(`error:${asset.id}`, err, asset);\n\t\t\t\t\t\t\t\tasset.fire('error', err, asset);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (asset.type === \"script\") {\n\t\t\t\t\t\t\t\t\t\tconst handler = this._loader.getHandler(\"script\");\n\t\t\t\t\t\t\t\t\t\tif (handler._cache[asset.id] && handler._cache[asset.id].parentNode === document.head) {\n\t\t\t\t\t\t\t\t\t\t\t\tdocument.head.removeChild(handler._cache[asset.id]);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\thandler._cache[asset.id] = extra;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t_opened(resource);\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tif (file || asset.type === 'cubemap') {\n\t\t\t\t\t\tthis.fire('load:start', asset);\n\t\t\t\t\t\tthis.fire(`load:${asset.id}:start`, asset);\n\t\t\t\t\t\tasset.loading = true;\n\t\t\t\t\t\tconst fileUrl = asset.getFileUrl();\n\t\t\t\t\t\tif (asset.type === 'bundle') {\n\t\t\t\t\t\t\t\tconst assetIds = asset.data.assets;\n\t\t\t\t\t\t\t\tfor(let i = 0; i < assetIds.length; i++){\n\t\t\t\t\t\t\t\t\t\tconst assetInBundle = this._idToAsset.get(assetIds[i]);\n\t\t\t\t\t\t\t\t\t\tif (!assetInBundle) {\n\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (assetInBundle.loaded || assetInBundle.resource || assetInBundle.loading) {\n\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tassetInBundle.loading = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._loader.load(fileUrl, asset.type, _loaded, asset, options);\n\t\t\t\t} else {\n\t\t\t\t\t\tconst resource = this._loader.open(asset.type, asset.data);\n\t\t\t\t\t\tasset.loaded = true;\n\t\t\t\t\t\t_opened(resource);\n\t\t\t\t}\n\t\t}\n\t\tloadFromUrl(url, type, callback) {\n\t\t\t\tthis.loadFromUrlAndFilename(url, null, type, callback);\n\t\t}\n\t\tloadFromUrlAndFilename(url, filename, type, callback) {\n\t\t\t\tconst name = path.getBasename(filename || url);\n\t\t\t\tconst file = {\n\t\t\t\t\t\tfilename: filename || name,\n\t\t\t\t\t\turl: url\n\t\t\t\t};\n\t\t\t\tlet asset = this.getByUrl(url);\n\t\t\t\tif (!asset) {\n\t\t\t\t\t\tasset = new Asset(name, type, file);\n\t\t\t\t\t\tthis.add(asset);\n\t\t\t\t} else if (asset.loaded) {\n\t\t\t\t\t\tcallback(asset.loadFromUrlError || null, asset);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst startLoad = (asset)=>{\n\t\t\t\t\t\tasset.once('load', (loadedAsset)=>{\n\t\t\t\t\t\t\t\tif (type === 'material') {\n\t\t\t\t\t\t\t\t\t\tthis._loadTextures(loadedAsset, (err, textures)=>{\n\t\t\t\t\t\t\t\t\t\t\t\tcallback(err, loadedAsset);\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tcallback(null, loadedAsset);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t\tasset.once('error', (err)=>{\n\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\t\tthis.loadFromUrlError = err;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcallback(err, asset);\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis.load(asset);\n\t\t\t\t};\n\t\t\t\tif (asset.resource) {\n\t\t\t\t\t\tcallback(null, asset);\n\t\t\t\t} else if (type === 'model') {\n\t\t\t\t\t\tthis._loadModel(asset, startLoad);\n\t\t\t\t} else {\n\t\t\t\t\t\tstartLoad(asset);\n\t\t\t\t}\n\t\t}\n\t\t_loadModel(modelAsset, continuation) {\n\t\t\t\tconst url = modelAsset.getFileUrl();\n\t\t\t\tconst ext = path.getExtension(url);\n\t\t\t\tif (ext === '.json' || ext === '.glb') {\n\t\t\t\t\t\tconst dir = path.getDirectory(url);\n\t\t\t\t\t\tconst basename = path.getBasename(url);\n\t\t\t\t\t\tconst mappingUrl = path.join(dir, basename.replace(ext, '.mapping.json'));\n\t\t\t\t\t\tthis._loader.load(mappingUrl, 'json', (err, data)=>{\n\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\t\tmodelAsset.data = {\n\t\t\t\t\t\t\t\t\t\t\t\tmapping: []\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\tcontinuation(modelAsset);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis._loadMaterials(modelAsset, data, (e, materials)=>{\n\t\t\t\t\t\t\t\t\t\t\t\tmodelAsset.data = data;\n\t\t\t\t\t\t\t\t\t\t\t\tcontinuation(modelAsset);\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t\tcontinuation(modelAsset);\n\t\t\t\t}\n\t\t}\n\t\t_loadMaterials(modelAsset, mapping, callback) {\n\t\t\t\tconst materials = [];\n\t\t\t\tlet count = 0;\n\t\t\t\tconst onMaterialLoaded = (err, materialAsset)=>{\n\t\t\t\t\t\tthis._loadTextures(materialAsset, (err, textures)=>{\n\t\t\t\t\t\t\t\tmaterials.push(materialAsset);\n\t\t\t\t\t\t\t\tif (materials.length === count) {\n\t\t\t\t\t\t\t\t\t\tcallback(null, materials);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t};\n\t\t\t\tfor(let i = 0; i < mapping.mapping.length; i++){\n\t\t\t\t\t\tconst path = mapping.mapping[i].path;\n\t\t\t\t\t\tif (path) {\n\t\t\t\t\t\t\t\tcount++;\n\t\t\t\t\t\t\t\tconst url = modelAsset.getAbsoluteUrl(path);\n\t\t\t\t\t\t\t\tthis.loadFromUrl(url, 'material', onMaterialLoaded);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (count === 0) {\n\t\t\t\t\t\tcallback(null, materials);\n\t\t\t\t}\n\t\t}\n\t\t_loadTextures(materialAsset, callback) {\n\t\t\t\tconst textures = [];\n\t\t\t\tlet count = 0;\n\t\t\t\tconst data = materialAsset.data;\n\t\t\t\tif (data.mappingFormat !== 'path') {\n\t\t\t\t\t\tcallback(null, textures);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst onTextureLoaded = (err, texture)=>{\n\t\t\t\t\t\tif (err) console.error(err);\n\t\t\t\t\t\ttextures.push(texture);\n\t\t\t\t\t\tif (textures.length === count) {\n\t\t\t\t\t\t\t\tcallback(null, textures);\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tconst texParams = standardMaterialTextureParameters;\n\t\t\t\tfor(let i = 0; i < texParams.length; i++){\n\t\t\t\t\t\tconst path = data[texParams[i]];\n\t\t\t\t\t\tif (path && typeof path === 'string') {\n\t\t\t\t\t\t\t\tcount++;\n\t\t\t\t\t\t\t\tconst url = materialAsset.getAbsoluteUrl(path);\n\t\t\t\t\t\t\t\tthis.loadFromUrl(url, 'texture', onTextureLoaded);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (count === 0) {\n\t\t\t\t\t\tcallback(null, textures);\n\t\t\t\t}\n\t\t}\n\t\t_onTagAdd(tag, asset) {\n\t\t\t\tthis._tags.add(tag, asset);\n\t\t}\n\t\t_onTagRemove(tag, asset) {\n\t\t\t\tthis._tags.remove(tag, asset);\n\t\t}\n\t\t_onNameChange(asset, name, nameOld) {\n\t\t\t\tif (this._nameToAsset.has(nameOld)) {\n\t\t\t\t\t\tconst items = this._nameToAsset.get(nameOld);\n\t\t\t\t\t\titems.delete(asset);\n\t\t\t\t\t\tif (items.size === 0) {\n\t\t\t\t\t\t\t\tthis._nameToAsset.delete(nameOld);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!this._nameToAsset.has(asset.name)) {\n\t\t\t\t\t\tthis._nameToAsset.set(asset.name, new Set());\n\t\t\t\t}\n\t\t\t\tthis._nameToAsset.get(asset.name).add(asset);\n\t\t}\n\t\tfindByTag(...query) {\n\t\t\t\treturn this._tags.find(query);\n\t\t}\n\t\tfilter(callback) {\n\t\t\t\treturn Array.from(this._assets).filter((asset)=>callback(asset));\n\t\t}\n\t\tfind(name, type) {\n\t\t\t\tconst items = this._nameToAsset.get(name);\n\t\t\t\tif (!items) return null;\n\t\t\t\tfor (const asset of items){\n\t\t\t\t\t\tif (!type || asset.type === type) {\n\t\t\t\t\t\t\t\treturn asset;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tfindAll(name, type) {\n\t\t\t\tconst items = this._nameToAsset.get(name);\n\t\t\t\tif (!items) return [];\n\t\t\t\tconst results = Array.from(items);\n\t\t\t\tif (!type) return results;\n\t\t\t\treturn results.filter((asset)=>asset.type === type);\n\t\t}\n}\n\nclass BundleRegistry {\n\t\tconstructor(assets){\n\t\t\t\tthis._idToBundle = new Map();\n\t\t\t\tthis._assetToBundles = new Map();\n\t\t\t\tthis._urlsToBundles = new Map();\n\t\t\t\tthis._fileRequests = new Map();\n\t\t\t\tthis._assets = assets;\n\t\t\t\tthis._assets.bundles = this;\n\t\t\t\tthis._assets.on('add', this._onAssetAdd, this);\n\t\t\t\tthis._assets.on('remove', this._onAssetRemove, this);\n\t\t}\n\t\t_onAssetAdd(asset) {\n\t\t\t\tif (asset.type === 'bundle') {\n\t\t\t\t\t\tthis._idToBundle.set(asset.id, asset);\n\t\t\t\t\t\tthis._assets.on(`load:start:${asset.id}`, this._onBundleLoadStart, this);\n\t\t\t\t\t\tthis._assets.on(`load:${asset.id}`, this._onBundleLoad, this);\n\t\t\t\t\t\tthis._assets.on(`error:${asset.id}`, this._onBundleError, this);\n\t\t\t\t\t\tconst assetIds = asset.data.assets;\n\t\t\t\t\t\tfor(let i = 0; i < assetIds.length; i++){\n\t\t\t\t\t\t\t\tthis._indexAssetInBundle(assetIds[i], asset);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tif (this._assetToBundles.has(asset.id)) {\n\t\t\t\t\t\t\t\tthis._indexAssetFileUrls(asset);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_unbindAssetEvents(id) {\n\t\t\t\tthis._assets.off(`load:start:${id}`, this._onBundleLoadStart, this);\n\t\t\t\tthis._assets.off(`load:${id}`, this._onBundleLoad, this);\n\t\t\t\tthis._assets.off(`error:${id}`, this._onBundleError, this);\n\t\t}\n\t\t_indexAssetInBundle(id, bundle) {\n\t\t\t\tlet bundles = this._assetToBundles.get(id);\n\t\t\t\tif (!bundles) {\n\t\t\t\t\t\tbundles = new Set();\n\t\t\t\t\t\tthis._assetToBundles.set(id, bundles);\n\t\t\t\t}\n\t\t\t\tbundles.add(bundle);\n\t\t\t\tconst asset = this._assets.get(id);\n\t\t\t\tif (asset) this._indexAssetFileUrls(asset);\n\t\t}\n\t\t_indexAssetFileUrls(asset) {\n\t\t\t\tconst urls = this._getAssetFileUrls(asset);\n\t\t\t\tif (!urls) return;\n\t\t\t\tfor(let i = 0; i < urls.length; i++){\n\t\t\t\t\t\tconst bundles = this._assetToBundles.get(asset.id);\n\t\t\t\t\t\tif (!bundles) continue;\n\t\t\t\t\t\tthis._urlsToBundles.set(urls[i], bundles);\n\t\t\t\t}\n\t\t}\n\t\t_getAssetFileUrls(asset) {\n\t\t\t\tlet url = asset.getFileUrl();\n\t\t\t\tif (!url) return null;\n\t\t\t\turl = url.split('?')[0];\n\t\t\t\tconst urls = [\n\t\t\t\t\t\turl\n\t\t\t\t];\n\t\t\t\tif (asset.type === 'font') {\n\t\t\t\t\t\tconst numFiles = asset.data.info.maps.length;\n\t\t\t\t\t\tfor(let i = 1; i < numFiles; i++){\n\t\t\t\t\t\t\t\turls.push(url.replace('.png', `${i}.png`));\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn urls;\n\t\t}\n\t\t_onAssetRemove(asset) {\n\t\t\t\tif (asset.type === 'bundle') {\n\t\t\t\t\t\tthis._idToBundle.delete(asset.id);\n\t\t\t\t\t\tthis._unbindAssetEvents(asset.id);\n\t\t\t\t\t\tconst assetIds = asset.data.assets;\n\t\t\t\t\t\tfor(let i = 0; i < assetIds.length; i++){\n\t\t\t\t\t\t\t\tconst bundles = this._assetToBundles.get(assetIds[i]);\n\t\t\t\t\t\t\t\tif (!bundles) continue;\n\t\t\t\t\t\t\t\tbundles.delete(asset);\n\t\t\t\t\t\t\t\tif (bundles.size === 0) {\n\t\t\t\t\t\t\t\t\t\tthis._assetToBundles.delete(assetIds[i]);\n\t\t\t\t\t\t\t\t\t\tfor (const [url, otherBundles] of this._urlsToBundles){\n\t\t\t\t\t\t\t\t\t\t\t\tif (otherBundles !== bundles) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tthis._urlsToBundles.delete(url);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._onBundleError(`Bundle ${asset.id} was removed`);\n\t\t\t\t} else {\n\t\t\t\t\t\tconst bundles = this._assetToBundles.get(asset.id);\n\t\t\t\t\t\tif (!bundles) return;\n\t\t\t\t\t\tthis._assetToBundles.delete(asset.id);\n\t\t\t\t\t\tconst urls = this._getAssetFileUrls(asset);\n\t\t\t\t\t\tif (!urls) return;\n\t\t\t\t\t\tfor(let i = 0; i < urls.length; i++){\n\t\t\t\t\t\t\t\tthis._urlsToBundles.delete(urls[i]);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_onBundleLoadStart(asset) {\n\t\t\t\tasset.resource.on('add', (url, data)=>{\n\t\t\t\t\t\tconst callbacks = this._fileRequests.get(url);\n\t\t\t\t\t\tif (!callbacks) return;\n\t\t\t\t\t\tfor(let i = 0; i < callbacks.length; i++){\n\t\t\t\t\t\t\t\tcallbacks[i](null, data);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._fileRequests.delete(url);\n\t\t\t\t});\n\t\t}\n\t\t_onBundleLoad(asset) {\n\t\t\t\tif (!asset.resource) {\n\t\t\t\t\t\tthis._onBundleError(`Bundle ${asset.id} failed to load`);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (!this._fileRequests) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tfor (const [url, requests] of this._fileRequests){\n\t\t\t\t\t\tconst bundles = this._urlsToBundles.get(url);\n\t\t\t\t\t\tif (!bundles || !bundles.has(asset)) continue;\n\t\t\t\t\t\tconst decodedUrl = decodeURIComponent(url);\n\t\t\t\t\t\tlet err, data;\n\t\t\t\t\t\tif (asset.resource.has(decodedUrl)) {\n\t\t\t\t\t\t\t\tdata = asset.resource.get(decodedUrl);\n\t\t\t\t\t\t} else if (asset.resource.loaded) {\n\t\t\t\t\t\t\t\terr = `Bundle ${asset.id} does not contain URL ${url}`;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor(let i = 0; i < requests.length; i++){\n\t\t\t\t\t\t\t\trequests[i](err, err || data);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._fileRequests.delete(url);\n\t\t\t\t}\n\t\t}\n\t\t_onBundleError(err) {\n\t\t\t\tfor (const [url, requests] of this._fileRequests){\n\t\t\t\t\t\tconst bundle = this._findLoadedOrLoadingBundleForUrl(url);\n\t\t\t\t\t\tif (!bundle) {\n\t\t\t\t\t\t\t\tfor(let i = 0; i < requests.length; i++){\n\t\t\t\t\t\t\t\t\t\trequests[i](err);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis._fileRequests.delete(url);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_findLoadedOrLoadingBundleForUrl(url) {\n\t\t\t\tconst bundles = this._urlsToBundles.get(url);\n\t\t\t\tif (!bundles) return null;\n\t\t\t\tlet candidate = null;\n\t\t\t\tfor (const bundle of bundles){\n\t\t\t\t\t\tif (bundle.loaded && bundle.resource) {\n\t\t\t\t\t\t\t\treturn bundle;\n\t\t\t\t\t\t} else if (bundle.loading) {\n\t\t\t\t\t\t\t\tcandidate = bundle;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn candidate;\n\t\t}\n\t\tlistBundlesForAsset(asset) {\n\t\t\t\tconst bundles = this._assetToBundles.get(asset.id);\n\t\t\t\tif (bundles) return Array.from(bundles);\n\t\t\t\treturn null;\n\t\t}\n\t\tlist() {\n\t\t\t\treturn Array.from(this._idToBundle.values());\n\t\t}\n\t\thasUrl(url) {\n\t\t\t\treturn this._urlsToBundles.has(url);\n\t\t}\n\t\turlIsLoadedOrLoading(url) {\n\t\t\t\treturn !!this._findLoadedOrLoadingBundleForUrl(url);\n\t\t}\n\t\tloadUrl(url, callback) {\n\t\t\t\tconst bundle = this._findLoadedOrLoadingBundleForUrl(url);\n\t\t\t\tif (!bundle) {\n\t\t\t\t\t\tcallback(`URL ${url} not found in any bundles`);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (bundle.loaded) {\n\t\t\t\t\t\tconst decodedUrl = decodeURIComponent(url);\n\t\t\t\t\t\tif (bundle.resource.has(decodedUrl)) {\n\t\t\t\t\t\t\t\tcallback(null, bundle.resource.get(decodedUrl));\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t} else if (bundle.resource.loaded) {\n\t\t\t\t\t\t\t\tcallback(`Bundle ${bundle.id} does not contain URL ${url}`);\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tlet callbacks = this._fileRequests.get(url);\n\t\t\t\tif (!callbacks) {\n\t\t\t\t\t\tcallbacks = [];\n\t\t\t\t\t\tthis._fileRequests.set(url, callbacks);\n\t\t\t\t}\n\t\t\t\tcallbacks.push(callback);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis._assets.off('add', this._onAssetAdd, this);\n\t\t\t\tthis._assets.off('remove', this._onAssetRemove, this);\n\t\t\t\tfor (const id of this._idToBundle.keys()){\n\t\t\t\t\t\tthis._unbindAssetEvents(id);\n\t\t\t\t}\n\t\t\t\tthis._assets = null;\n\t\t\t\tthis._idToBundle.clear();\n\t\t\t\tthis._idToBundle = null;\n\t\t\t\tthis._assetToBundles.clear();\n\t\t\t\tthis._assetToBundles = null;\n\t\t\t\tthis._urlsToBundles.clear();\n\t\t\t\tthis._urlsToBundles = null;\n\t\t\t\tthis._fileRequests.clear();\n\t\t\t\tthis._fileRequests = null;\n\t\t}\n}\n\nclass ComponentSystemRegistry extends EventHandler {\n\t\tconstructor(){\n\t\t\t\tsuper();\n\t\t\t\tthis.list = [];\n\t\t}\n\t\tadd(system) {\n\t\t\t\tconst id = system.id;\n\t\t\t\tif (this[id]) {\n\t\t\t\t\t\tthrow new Error(`ComponentSystem name '${id}' already registered or not allowed`);\n\t\t\t\t}\n\t\t\t\tthis[id] = system;\n\t\t\t\tthis.list.push(system);\n\t\t}\n\t\tremove(system) {\n\t\t\t\tconst id = system.id;\n\t\t\t\tif (!this[id]) {\n\t\t\t\t\t\tthrow new Error(`No ComponentSystem named '${id}' registered`);\n\t\t\t\t}\n\t\t\t\tdelete this[id];\n\t\t\t\tconst index = this.list.indexOf(this[id]);\n\t\t\t\tif (index !== -1) {\n\t\t\t\t\t\tthis.list.splice(index, 1);\n\t\t\t\t}\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.off();\n\t\t\t\tfor(let i = 0; i < this.list.length; i++){\n\t\t\t\t\t\tthis.list[i].destroy();\n\t\t\t\t}\n\t\t}\n}\n\nclass Bundle extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_ADD = 'add';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_LOAD = 'load';\n\t\t}\n\t\taddFile(url, data) {\n\t\t\t\tif (this._index.has(url)) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._index.set(url, data);\n\t\t\t\tthis.fire('add', url, data);\n\t\t}\n\t\thas(url) {\n\t\t\t\treturn this._index.has(url);\n\t\t}\n\t\tget(url) {\n\t\t\t\treturn this._index.get(url) || null;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis._index.clear();\n\t\t}\n\t\tset loaded(value) {\n\t\t\t\tif (!value || this._loaded) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._loaded = true;\n\t\t\t\tthis.fire('load');\n\t\t}\n\t\tget loaded() {\n\t\t\t\treturn this._loaded;\n\t\t}\n\t\tconstructor(...args){\n\t\t\t\tsuper(...args), this._index = new Map(), this._loaded = false;\n\t\t}\n}\n\nclass Untar extends EventHandler {\n\t\tconstructor(fetchPromise, assetsPrefix = ''){\n\t\t\t\tsuper(), this.headerSize = 512, this.paddingSize = 512, this.bytesRead = 0, this.bytesReceived = 0, this.headerRead = false, this.reader = null, this.data = new Uint8Array(0), this.decoder = null, this.prefix = '', this.fileName = '', this.fileSize = 0, this.fileType = '', this.ustarFormat = '';\n\t\t\t\tthis.prefix = assetsPrefix || '';\n\t\t\t\tthis.reader = fetchPromise.body.getReader();\n\t\t\t\tthis.reader.read().then((res)=>{\n\t\t\t\t\t\tthis.pump(res.done, res.value);\n\t\t\t\t}).catch((err)=>{\n\t\t\t\t\t\tthis.fire('error', err);\n\t\t\t\t});\n\t\t}\n\t\tpump(done, value) {\n\t\t\t\tif (done) {\n\t\t\t\t\t\tthis.fire('done');\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tthis.bytesReceived += value.byteLength;\n\t\t\t\tconst data = new Uint8Array(this.data.length + value.length);\n\t\t\t\tdata.set(this.data);\n\t\t\t\tdata.set(value, this.data.length);\n\t\t\t\tthis.data = data;\n\t\t\t\twhile(this.readFile());\n\t\t\t\treturn this.reader.read().then((res)=>{\n\t\t\t\t\t\tthis.pump(res.done, res.value);\n\t\t\t\t}).catch((err)=>{\n\t\t\t\t\t\tthis.fire('error', err);\n\t\t\t\t});\n\t\t}\n\t\treadFile() {\n\t\t\t\tif (!this.headerRead && this.bytesReceived > this.bytesRead + this.headerSize) {\n\t\t\t\t\t\tthis.headerRead = true;\n\t\t\t\t\t\tconst view = new DataView(this.data.buffer, this.bytesRead, this.headerSize);\n\t\t\t\t\t\tthis.decoder ??= new TextDecoder('windows-1252');\n\t\t\t\t\t\tconst headers = this.decoder.decode(view);\n\t\t\t\t\t\tthis.fileName = headers.substring(0, 100).replace(/\\0/g, '');\n\t\t\t\t\t\tthis.fileSize = parseInt(headers.substring(124, 136), 8);\n\t\t\t\t\t\tthis.fileType = headers.substring(156, 157);\n\t\t\t\t\t\tthis.ustarFormat = headers.substring(257, 263);\n\t\t\t\t\t\tif (this.ustarFormat.indexOf('ustar') !== -1) {\n\t\t\t\t\t\t\t\tconst prefix = headers.substring(345, 500).replace(/\\0/g, '');\n\t\t\t\t\t\t\t\tif (prefix.length > 0) {\n\t\t\t\t\t\t\t\t\t\tthis.fileName = prefix.trim() + this.fileName.trim();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.bytesRead += 512;\n\t\t\t\t}\n\t\t\t\tif (this.headerRead) {\n\t\t\t\t\t\tif (this.bytesReceived < this.bytesRead + this.fileSize) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.fileType === '' || this.fileType === '0') {\n\t\t\t\t\t\t\t\tconst dataView = new DataView(this.data.buffer, this.bytesRead, this.fileSize);\n\t\t\t\t\t\t\t\tconst file = {\n\t\t\t\t\t\t\t\t\t\tname: this.prefix + this.fileName,\n\t\t\t\t\t\t\t\t\t\tsize: this.fileSize,\n\t\t\t\t\t\t\t\t\t\tdata: dataView\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tthis.fire('file', file);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.bytesRead += this.fileSize;\n\t\t\t\t\t\tthis.headerRead = false;\n\t\t\t\t\t\tconst bytesRemained = this.bytesRead % this.paddingSize;\n\t\t\t\t\t\tif (bytesRemained !== 0) {\n\t\t\t\t\t\t\t\tthis.bytesRead += this.paddingSize - bytesRemained;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t}\n}\n\nclass ResourceHandler {\n\t\tconstructor(app, handlerType){\n\t\t\t\tthis.handlerType = '';\n\t\t\t\tthis._maxRetries = 0;\n\t\t\t\tthis._app = app;\n\t\t\t\tthis.handlerType = handlerType;\n\t\t}\n\t\tset maxRetries(value) {\n\t\t\t\tthis._maxRetries = value;\n\t\t}\n\t\tget maxRetries() {\n\t\t\t\treturn this._maxRetries;\n\t\t}\n\t\tload(url, callback, asset) {}\n\t\topen(url, data, asset) {\n\t\t\t\treturn data;\n\t\t}\n\t\tpatch(asset, assets) {}\n}\n\nclass BundleHandler extends ResourceHandler {\n\t\tconstructor(app){\n\t\t\t\tsuper(app, 'bundle');\n\t\t\t\tthis._assets = app.assets;\n\t\t}\n\t\t_fetchRetries(url, options, retries = 0) {\n\t\t\t\treturn new Promise((resolve, reject)=>{\n\t\t\t\t\t\tconst tryFetch = ()=>{\n\t\t\t\t\t\t\t\tfetch(url, options).then(resolve).catch((err)=>{\n\t\t\t\t\t\t\t\t\t\tretries++;\n\t\t\t\t\t\t\t\t\t\tif (retries < this.maxRetries) {\n\t\t\t\t\t\t\t\t\t\t\t\ttryFetch();\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t};\n\t\t\t\t\t\ttryFetch();\n\t\t\t\t});\n\t\t}\n\t\tload(url, callback) {\n\t\t\t\tif (typeof url === 'string') {\n\t\t\t\t\t\turl = {\n\t\t\t\t\t\t\t\tload: url,\n\t\t\t\t\t\t\t\toriginal: url\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tthis._fetchRetries(url.load, {\n\t\t\t\t\t\tmode: 'cors'\n\t\t\t\t}, this.maxRetries).then((res)=>{\n\t\t\t\t\t\tconst bundle = new Bundle();\n\t\t\t\t\t\tcallback(null, bundle);\n\t\t\t\t\t\tconst untar = new Untar(res, this._assets.prefix);\n\t\t\t\t\t\tuntar.on('file', (file)=>{\n\t\t\t\t\t\t\t\tbundle.addFile(file.name, file.data);\n\t\t\t\t\t\t});\n\t\t\t\t\t\tuntar.on('done', ()=>{\n\t\t\t\t\t\t\t\tbundle.loaded = true;\n\t\t\t\t\t\t});\n\t\t\t\t\t\tuntar.on('error', (err)=>{\n\t\t\t\t\t\t\t\tcallback(err);\n\t\t\t\t\t\t});\n\t\t\t\t}).catch((err)=>{\n\t\t\t\t\t\tcallback(err);\n\t\t\t\t});\n\t\t}\n\t\topen(url, bundle) {\n\t\t\t\treturn bundle;\n\t\t}\n}\n\nclass ResourceLoader {\n\t\tconstructor(app){\n\t\t\t\tthis._handlers = {};\n\t\t\t\tthis._requests = {};\n\t\t\t\tthis._cache = {};\n\t\t\t\tthis._app = app;\n\t\t}\n\t\taddHandler(type, handler) {\n\t\t\t\tthis._handlers[type] = handler;\n\t\t\t\thandler._loader = this;\n\t\t}\n\t\tremoveHandler(type) {\n\t\t\t\tdelete this._handlers[type];\n\t\t}\n\t\tgetHandler(type) {\n\t\t\t\treturn this._handlers[type];\n\t\t}\n\t\tstatic makeKey(url, type) {\n\t\t\t\treturn `${url}-${type}`;\n\t\t}\n\t\tload(url, type, callback, asset, options) {\n\t\t\t\tconst handler = this._handlers[type];\n\t\t\t\tif (!handler) {\n\t\t\t\t\t\tconst err = `No resource handler for asset type: '${type}' when loading [${url}]`;\n\t\t\t\t\t\tcallback(err);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (!url) {\n\t\t\t\t\t\tthis._loadNull(handler, callback, asset);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst key = ResourceLoader.makeKey(url, type);\n\t\t\t\tif (this._cache[key] !== undefined) {\n\t\t\t\t\t\tcallback(null, this._cache[key]);\n\t\t\t\t} else if (this._requests[key]) {\n\t\t\t\t\t\tthis._requests[key].push(callback);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._requests[key] = [\n\t\t\t\t\t\t\t\tcallback\n\t\t\t\t\t\t];\n\t\t\t\t\t\tconst self = this;\n\t\t\t\t\t\tconst handleLoad = function(err, urlObj) {\n\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\t\tself._onFailure(key, err);\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (urlObj.load instanceof DataView) {\n\t\t\t\t\t\t\t\t\t\tif (handler.openBinary) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (!self._requests[key]) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst data = handler.openBinary(urlObj.load);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tself._onSuccess(key, data);\n\t\t\t\t\t\t\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tself._onFailure(key, err);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\turlObj.load = URL.createObjectURL(new Blob([\n\t\t\t\t\t\t\t\t\t\t\t\turlObj.load\n\t\t\t\t\t\t\t\t\t\t]));\n\t\t\t\t\t\t\t\t\t\tif (asset) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (asset.urlObject) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tURL.revokeObjectURL(asset.urlObject);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tasset.urlObject = urlObj.load;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\thandler.load(urlObj, (err, data, extra)=>{\n\t\t\t\t\t\t\t\t\t\tif (!self._requests[key]) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\t\t\t\tself._onFailure(key, err);\n\t\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\t\tself._onSuccess(key, handler.open(urlObj.original, data, asset), extra);\n\t\t\t\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t\t\t\t\tself._onFailure(key, e);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}, asset);\n\t\t\t\t\t\t};\n\t\t\t\t\t\tconst normalizedUrl = url.split('?')[0];\n\t\t\t\t\t\tif (this._app.enableBundles && this._app.bundles.hasUrl(normalizedUrl) && !(options && options.bundlesIgnore)) {\n\t\t\t\t\t\t\t\tif (!this._app.bundles.urlIsLoadedOrLoading(normalizedUrl)) {\n\t\t\t\t\t\t\t\t\t\tconst bundles = this._app.bundles.listBundlesForAsset(asset);\n\t\t\t\t\t\t\t\t\t\tlet bundle;\n\t\t\t\t\t\t\t\t\t\tif (options && options.bundlesFilter) {\n\t\t\t\t\t\t\t\t\t\t\t\tbundle = options.bundlesFilter(bundles);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (!bundle) {\n\t\t\t\t\t\t\t\t\t\t\t\tbundles?.sort((a, b)=>{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn a.file.size - b.file.size;\n\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t\tbundle = bundles?.[0];\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (bundle) this._app.assets?.load(bundle);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis._app.bundles.loadUrl(normalizedUrl, (err, fileUrlFromBundle)=>{\n\t\t\t\t\t\t\t\t\t\thandleLoad(err, {\n\t\t\t\t\t\t\t\t\t\t\t\tload: fileUrlFromBundle,\n\t\t\t\t\t\t\t\t\t\t\t\toriginal: normalizedUrl\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\thandleLoad(null, {\n\t\t\t\t\t\t\t\t\t\tload: url,\n\t\t\t\t\t\t\t\t\t\toriginal: asset && asset.file.filename || url\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_loadNull(handler, callback, asset) {\n\t\t\t\tconst onLoad = function(err, data, extra) {\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\tcallback(err);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tcallback(null, handler.open(null, data, asset), extra);\n\t\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t\t\tcallback(e);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\thandler.load(null, onLoad, asset);\n\t\t}\n\t\t_onSuccess(key, result, extra) {\n\t\t\t\tif (result !== null) {\n\t\t\t\t\t\tthis._cache[key] = result;\n\t\t\t\t} else {\n\t\t\t\t\t\tdelete this._cache[key];\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < this._requests[key].length; i++){\n\t\t\t\t\t\tthis._requests[key][i](null, result, extra);\n\t\t\t\t}\n\t\t\t\tdelete this._requests[key];\n\t\t}\n\t\t_onFailure(key, err) {\n\t\t\t\tconsole.error(err);\n\t\t\t\tif (this._requests[key]) {\n\t\t\t\t\t\tfor(let i = 0; i < this._requests[key].length; i++){\n\t\t\t\t\t\t\t\tthis._requests[key][i](err);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdelete this._requests[key];\n\t\t\t\t}\n\t\t}\n\t\topen(type, data) {\n\t\t\t\tconst handler = this._handlers[type];\n\t\t\t\tif (!handler) {\n\t\t\t\t\t\tconsole.warn(`No resource handler found for: ${type}`);\n\t\t\t\t\t\treturn data;\n\t\t\t\t}\n\t\t\t\treturn handler.open(null, data);\n\t\t}\n\t\tpatch(asset, assets) {\n\t\t\t\tconst handler = this._handlers[asset.type];\n\t\t\t\tif (!handler) {\n\t\t\t\t\t\tconsole.warn(`No resource handler found for: ${asset.type}`);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (handler.patch) {\n\t\t\t\t\t\thandler.patch(asset, assets);\n\t\t\t\t}\n\t\t}\n\t\tclearCache(url, type) {\n\t\t\t\tconst key = ResourceLoader.makeKey(url, type);\n\t\t\t\tdelete this._cache[key];\n\t\t}\n\t\tgetFromCache(url, type) {\n\t\t\t\tconst key = ResourceLoader.makeKey(url, type);\n\t\t\t\tif (this._cache[key]) {\n\t\t\t\t\t\treturn this._cache[key];\n\t\t\t\t}\n\t\t\t\treturn undefined;\n\t\t}\n\t\tenableRetry(maxRetries = 5) {\n\t\t\t\tmaxRetries = Math.max(0, maxRetries) || 0;\n\t\t\t\tfor(const key in this._handlers){\n\t\t\t\t\t\tthis._handlers[key].maxRetries = maxRetries;\n\t\t\t\t}\n\t\t}\n\t\tdisableRetry() {\n\t\t\t\tfor(const key in this._handlers){\n\t\t\t\t\t\tthis._handlers[key].maxRetries = 0;\n\t\t\t\t}\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis._handlers = {};\n\t\t\t\tthis._requests = {};\n\t\t\t\tthis._cache = {};\n\t\t}\n}\n\nclass I18nParser {\n\t\t_validate(data) {\n\t\t\t\tif (!data.header) {\n\t\t\t\t\t\tthrow new Error('pc.I18n#addData: Missing \"header\" field');\n\t\t\t\t}\n\t\t\t\tif (!data.header.version) {\n\t\t\t\t\t\tthrow new Error('pc.I18n#addData: Missing \"header.version\" field');\n\t\t\t\t}\n\t\t\t\tif (data.header.version !== 1) {\n\t\t\t\t\t\tthrow new Error('pc.I18n#addData: Invalid \"header.version\" field');\n\t\t\t\t}\n\t\t\t\tif (!data.data) {\n\t\t\t\t\t\tthrow new Error('pc.I18n#addData: Missing \"data\" field');\n\t\t\t\t} else if (!Array.isArray(data.data)) {\n\t\t\t\t\t\tthrow new Error('pc.I18n#addData: \"data\" field must be an array');\n\t\t\t\t}\n\t\t\t\tfor(let i = 0, len = data.data.length; i < len; i++){\n\t\t\t\t\t\tconst entry = data.data[i];\n\t\t\t\t\t\tif (!entry.info) {\n\t\t\t\t\t\t\t\tthrow new Error(`pc.I18n#addData: missing \"data[${i}].info\" field`);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!entry.info.locale) {\n\t\t\t\t\t\t\t\tthrow new Error(`pc.I18n#addData: missing \"data[${i}].info.locale\" field`);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (typeof entry.info.locale !== 'string') {\n\t\t\t\t\t\t\t\tthrow new Error(`pc.I18n#addData: \"data[${i}].info.locale\" must be a string`);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!entry.messages) {\n\t\t\t\t\t\t\t\tthrow new Error(`pc.I18n#addData: missing \"data[${i}].messages\" field`);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tparse(data) {\n\t\t\t\treturn data.data;\n\t\t}\n}\n\nclass I18n extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_CHANGE = 'change';\n\t\t}\n\t\tconstructor(app){\n\t\t\t\tsuper();\n\t\t\t\tthis.locale = DEFAULT_LOCALE;\n\t\t\t\tthis._translations = {};\n\t\t\t\tthis._availableLangs = {};\n\t\t\t\tthis._app = app;\n\t\t\t\tthis._assets = [];\n\t\t\t\tthis._parser = new I18nParser();\n\t\t}\n\t\tset assets(value) {\n\t\t\t\tconst index = {};\n\t\t\t\tfor(let i = 0, len = value.length; i < len; i++){\n\t\t\t\t\t\tconst id = value[i] instanceof Asset ? value[i].id : value[i];\n\t\t\t\t\t\tindex[id] = true;\n\t\t\t\t}\n\t\t\t\tlet i = this._assets.length;\n\t\t\t\twhile(i--){\n\t\t\t\t\t\tconst id = this._assets[i];\n\t\t\t\t\t\tif (!index[id]) {\n\t\t\t\t\t\t\t\tthis._app.assets.off(`add:${id}`, this._onAssetAdd, this);\n\t\t\t\t\t\t\t\tconst asset = this._app.assets.get(id);\n\t\t\t\t\t\t\t\tif (asset) {\n\t\t\t\t\t\t\t\t\t\tthis._onAssetRemove(asset);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis._assets.splice(i, 1);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor(const id in index){\n\t\t\t\t\t\tconst idNum = parseInt(id, 10);\n\t\t\t\t\t\tif (this._assets.indexOf(idNum) !== -1) continue;\n\t\t\t\t\t\tthis._assets.push(idNum);\n\t\t\t\t\t\tconst asset = this._app.assets.get(idNum);\n\t\t\t\t\t\tif (!asset) {\n\t\t\t\t\t\t\t\tthis._app.assets.once(`add:${idNum}`, this._onAssetAdd, this);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._onAssetAdd(asset);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget assets() {\n\t\t\t\treturn this._assets;\n\t\t}\n\t\tset locale(value) {\n\t\t\t\tif (this._locale === value) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tlet lang = getLang(value);\n\t\t\t\tif (lang === 'in') {\n\t\t\t\t\t\tlang = 'id';\n\t\t\t\t\t\tvalue = replaceLang(value, lang);\n\t\t\t\t\t\tif (this._locale === value) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst old = this._locale;\n\t\t\t\tthis._locale = value;\n\t\t\t\tthis._lang = lang;\n\t\t\t\tthis._pluralFn = getPluralFn(this._lang);\n\t\t\t\tthis.fire(I18n.EVENT_CHANGE, value, old);\n\t\t}\n\t\tget locale() {\n\t\t\t\treturn this._locale;\n\t\t}\n\t\tstatic findAvailableLocale(desiredLocale, availableLocales) {\n\t\t\t\treturn findAvailableLocale(desiredLocale, availableLocales);\n\t\t}\n\t\tfindAvailableLocale(desiredLocale) {\n\t\t\t\tif (this._translations[desiredLocale]) {\n\t\t\t\t\t\treturn desiredLocale;\n\t\t\t\t}\n\t\t\t\tconst lang = getLang(desiredLocale);\n\t\t\t\treturn this._findFallbackLocale(desiredLocale, lang);\n\t\t}\n\t\tgetText(key, locale) {\n\t\t\t\tlet result = key;\n\t\t\t\tlet lang;\n\t\t\t\tif (!locale) {\n\t\t\t\t\t\tlocale = this._locale;\n\t\t\t\t\t\tlang = this._lang;\n\t\t\t\t}\n\t\t\t\tlet translations = this._translations[locale];\n\t\t\t\tif (!translations) {\n\t\t\t\t\t\tif (!lang) {\n\t\t\t\t\t\t\t\tlang = getLang(locale);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlocale = this._findFallbackLocale(locale, lang);\n\t\t\t\t\t\ttranslations = this._translations[locale];\n\t\t\t\t}\n\t\t\t\tif (translations && translations.hasOwnProperty(key)) {\n\t\t\t\t\t\tresult = translations[key];\n\t\t\t\t\t\tif (Array.isArray(result)) {\n\t\t\t\t\t\t\t\tresult = result[0];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (result === null || result === undefined) {\n\t\t\t\t\t\t\t\tresult = key;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t}\n\t\tgetPluralText(key, n, locale) {\n\t\t\t\tlet result = key;\n\t\t\t\tlet lang;\n\t\t\t\tlet pluralFn;\n\t\t\t\tif (!locale) {\n\t\t\t\t\t\tlocale = this._locale;\n\t\t\t\t\t\tlang = this._lang;\n\t\t\t\t\t\tpluralFn = this._pluralFn;\n\t\t\t\t} else {\n\t\t\t\t\t\tlang = getLang(locale);\n\t\t\t\t\t\tpluralFn = getPluralFn(lang);\n\t\t\t\t}\n\t\t\t\tlet translations = this._translations[locale];\n\t\t\t\tif (!translations) {\n\t\t\t\t\t\tlocale = this._findFallbackLocale(locale, lang);\n\t\t\t\t\t\tlang = getLang(locale);\n\t\t\t\t\t\tpluralFn = getPluralFn(lang);\n\t\t\t\t\t\ttranslations = this._translations[locale];\n\t\t\t\t}\n\t\t\t\tif (translations && translations[key] && pluralFn) {\n\t\t\t\t\t\tconst index = pluralFn(n);\n\t\t\t\t\t\tresult = translations[key][index];\n\t\t\t\t\t\tif (result === null || result === undefined) {\n\t\t\t\t\t\t\t\tresult = key;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t}\n\t\taddData(data) {\n\t\t\t\tlet parsed;\n\t\t\t\ttry {\n\t\t\t\t\t\tparsed = this._parser.parse(data);\n\t\t\t\t} catch (err) {\n\t\t\t\t\t\tconsole.error(err);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tfor(let i = 0, len = parsed.length; i < len; i++){\n\t\t\t\t\t\tconst entry = parsed[i];\n\t\t\t\t\t\tconst locale = entry.info.locale;\n\t\t\t\t\t\tconst messages = entry.messages;\n\t\t\t\t\t\tif (!this._translations[locale]) {\n\t\t\t\t\t\t\t\tthis._translations[locale] = {};\n\t\t\t\t\t\t\t\tconst lang = getLang(locale);\n\t\t\t\t\t\t\t\tif (!this._availableLangs[lang]) {\n\t\t\t\t\t\t\t\t\t\tthis._availableLangs[lang] = locale;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tObject.assign(this._translations[locale], messages);\n\t\t\t\t\t\tthis.fire('data:add', locale, messages);\n\t\t\t\t}\n\t\t}\n\t\tremoveData(data) {\n\t\t\t\tlet parsed;\n\t\t\t\ttry {\n\t\t\t\t\t\tparsed = this._parser.parse(data);\n\t\t\t\t} catch (err) {\n\t\t\t\t\t\tconsole.error(err);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tfor(let i = 0, len = parsed.length; i < len; i++){\n\t\t\t\t\t\tconst entry = parsed[i];\n\t\t\t\t\t\tconst locale = entry.info.locale;\n\t\t\t\t\t\tconst translations = this._translations[locale];\n\t\t\t\t\t\tif (!translations) continue;\n\t\t\t\t\t\tconst messages = entry.messages;\n\t\t\t\t\t\tfor(const key in messages){\n\t\t\t\t\t\t\t\tdelete translations[key];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (Object.keys(translations).length === 0) {\n\t\t\t\t\t\t\t\tdelete this._translations[locale];\n\t\t\t\t\t\t\t\tdelete this._availableLangs[getLang(locale)];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.fire('data:remove', locale, messages);\n\t\t\t\t}\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis._translations = null;\n\t\t\t\tthis._availableLangs = null;\n\t\t\t\tthis._assets = null;\n\t\t\t\tthis._parser = null;\n\t\t\t\tthis.off();\n\t\t}\n\t\t_findFallbackLocale(locale, lang) {\n\t\t\t\tlet result = DEFAULT_LOCALE_FALLBACKS[locale];\n\t\t\t\tif (result && this._translations[result]) {\n\t\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t\tresult = DEFAULT_LOCALE_FALLBACKS[lang];\n\t\t\t\tif (result && this._translations[result]) {\n\t\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t\tresult = this._availableLangs[lang];\n\t\t\t\tif (result && this._translations[result]) {\n\t\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t\treturn DEFAULT_LOCALE;\n\t\t}\n\t\t_onAssetAdd(asset) {\n\t\t\t\tasset.on('load', this._onAssetLoad, this);\n\t\t\t\tasset.on('change', this._onAssetChange, this);\n\t\t\t\tasset.on('remove', this._onAssetRemove, this);\n\t\t\t\tasset.on('unload', this._onAssetUnload, this);\n\t\t\t\tif (asset.resource) {\n\t\t\t\t\t\tthis._onAssetLoad(asset);\n\t\t\t\t}\n\t\t}\n\t\t_onAssetLoad(asset) {\n\t\t\t\tthis.addData(asset.resource);\n\t\t}\n\t\t_onAssetChange(asset) {\n\t\t\t\tif (asset.resource) {\n\t\t\t\t\t\tthis.addData(asset.resource);\n\t\t\t\t}\n\t\t}\n\t\t_onAssetRemove(asset) {\n\t\t\t\tasset.off('load', this._onAssetLoad, this);\n\t\t\t\tasset.off('change', this._onAssetChange, this);\n\t\t\t\tasset.off('remove', this._onAssetRemove, this);\n\t\t\t\tasset.off('unload', this._onAssetUnload, this);\n\t\t\t\tif (asset.resource) {\n\t\t\t\t\t\tthis.removeData(asset.resource);\n\t\t\t\t}\n\t\t\t\tthis._app.assets.once(`add:${asset.id}`, this._onAssetAdd, this);\n\t\t}\n\t\t_onAssetUnload(asset) {\n\t\t\t\tif (asset.resource) {\n\t\t\t\t\t\tthis.removeData(asset.resource);\n\t\t\t\t}\n\t\t}\n}\n\nclass ScriptRegistry extends EventHandler {\n\t\tconstructor(app){\n\t\t\t\tsuper(), this._scripts = {}, this._list = [], this._scriptSchemas = new Map();\n\t\t\t\tthis.app = app;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.app = null;\n\t\t\t\tthis.off();\n\t\t}\n\t\taddSchema(id, schema) {\n\t\t\t\tif (!schema) return;\n\t\t\t\tthis._scriptSchemas.set(id, schema);\n\t\t}\n\t\tgetSchema(id) {\n\t\t\t\treturn this._scriptSchemas.get(id);\n\t\t}\n\t\tadd(script) {\n\t\t\t\tconst scriptName = script.__name;\n\t\t\t\tif (this._scripts.hasOwnProperty(scriptName)) {\n\t\t\t\t\t\tsetTimeout(()=>{\n\t\t\t\t\t\t\t\tif (script.prototype.swap) {\n\t\t\t\t\t\t\t\t\t\tconst old = this._scripts[scriptName];\n\t\t\t\t\t\t\t\t\t\tconst ind = this._list.indexOf(old);\n\t\t\t\t\t\t\t\t\t\tthis._list[ind] = script;\n\t\t\t\t\t\t\t\t\t\tthis._scripts[scriptName] = script;\n\t\t\t\t\t\t\t\t\t\tthis.fire('swap', scriptName, script);\n\t\t\t\t\t\t\t\t\t\tthis.fire(`swap:${scriptName}`, script);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tconsole.warn(`script registry already has '${scriptName}' script, define 'swap' method for new script type to enable code hot swapping`);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tthis._scripts[scriptName] = script;\n\t\t\t\tthis._list.push(script);\n\t\t\t\tthis.fire('add', scriptName, script);\n\t\t\t\tthis.fire(`add:${scriptName}`, script);\n\t\t\t\tsetTimeout(()=>{\n\t\t\t\t\t\tif (!this._scripts.hasOwnProperty(scriptName)) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!this.app || !this.app.systems || !this.app.systems.script) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst components = this.app.systems.script._components;\n\t\t\t\t\t\tlet attributes;\n\t\t\t\t\t\tconst scriptInstances = [];\n\t\t\t\t\t\tconst scriptInstancesInitialized = [];\n\t\t\t\t\t\tfor(components.loopIndex = 0; components.loopIndex < components.length; components.loopIndex++){\n\t\t\t\t\t\t\t\tconst component = components.items[components.loopIndex];\n\t\t\t\t\t\t\t\tif (component._scriptsIndex[scriptName] && component._scriptsIndex[scriptName].awaiting) {\n\t\t\t\t\t\t\t\t\t\tif (component._scriptsData && component._scriptsData[scriptName]) {\n\t\t\t\t\t\t\t\t\t\t\t\tattributes = component._scriptsData[scriptName].attributes;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tconst scriptInstance = component.create(scriptName, {\n\t\t\t\t\t\t\t\t\t\t\t\tpreloading: true,\n\t\t\t\t\t\t\t\t\t\t\t\tind: component._scriptsIndex[scriptName].ind,\n\t\t\t\t\t\t\t\t\t\t\t\tattributes: attributes\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tif (scriptInstance) {\n\t\t\t\t\t\t\t\t\t\t\t\tscriptInstances.push(scriptInstance);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tfor (const script of component.scripts){\n\t\t\t\t\t\t\t\t\t\t\t\tcomponent.initializeAttributes(script);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor(let i = 0; i < scriptInstances.length; i++){\n\t\t\t\t\t\t\t\tif (scriptInstances[i].enabled) {\n\t\t\t\t\t\t\t\t\t\tscriptInstances[i]._initialized = true;\n\t\t\t\t\t\t\t\t\t\tscriptInstancesInitialized.push(scriptInstances[i]);\n\t\t\t\t\t\t\t\t\t\tif (scriptInstances[i].initialize) {\n\t\t\t\t\t\t\t\t\t\t\t\tscriptInstances[i].initialize();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor(let i = 0; i < scriptInstancesInitialized.length; i++){\n\t\t\t\t\t\t\t\tif (!scriptInstancesInitialized[i].enabled || scriptInstancesInitialized[i]._postInitialized) {\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tscriptInstancesInitialized[i]._postInitialized = true;\n\t\t\t\t\t\t\t\tif (scriptInstancesInitialized[i].postInitialize) {\n\t\t\t\t\t\t\t\t\t\tscriptInstancesInitialized[i].postInitialize();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn true;\n\t\t}\n\t\tremove(nameOrType) {\n\t\t\t\tlet scriptType = nameOrType;\n\t\t\t\tlet scriptName = nameOrType;\n\t\t\t\tif (typeof scriptName !== 'string') {\n\t\t\t\t\t\tscriptName = scriptType.__name;\n\t\t\t\t} else {\n\t\t\t\t\t\tscriptType = this.get(scriptName);\n\t\t\t\t}\n\t\t\t\tif (this.get(scriptName) !== scriptType) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tdelete this._scripts[scriptName];\n\t\t\t\tconst ind = this._list.indexOf(scriptType);\n\t\t\t\tthis._list.splice(ind, 1);\n\t\t\t\tthis.fire('remove', scriptName, scriptType);\n\t\t\t\tthis.fire(`remove:${scriptName}`, scriptType);\n\t\t\t\treturn true;\n\t\t}\n\t\tget(name) {\n\t\t\t\treturn this._scripts[name] || null;\n\t\t}\n\t\thas(nameOrType) {\n\t\t\t\tif (typeof nameOrType === 'string') {\n\t\t\t\t\t\treturn this._scripts.hasOwnProperty(nameOrType);\n\t\t\t\t}\n\t\t\t\tif (!nameOrType) return false;\n\t\t\t\tconst scriptName = nameOrType.__name;\n\t\t\t\treturn this._scripts[scriptName] === nameOrType;\n\t\t}\n\t\tlist() {\n\t\t\t\treturn this._list;\n\t\t}\n}\n\nconst cmpStaticOrder = (a, b)=>a.constructor.order - b.constructor.order;\nconst sortStaticOrder = (arr)=>arr.sort(cmpStaticOrder);\nconst _enableList = [];\nconst tmpPool = [];\nconst getTempArray = ()=>{\n\t\treturn tmpPool.pop() ?? [];\n};\nconst releaseTempArray = (a)=>{\n\t\ta.length = 0;\n\t\ttmpPool.push(a);\n};\nclass Entity extends GraphNode {\n\t\tstatic{\n\t\t\t\tthis.EVENT_DESTROY = 'destroy';\n\t\t}\n\t\tconstructor(name, app = getApplication()){\n\t\t\t\tsuper(name), this.c = {}, this._destroying = false, this._guid = null, this._template = false;\n\t\t\t\tthis._app = app;\n\t\t}\n\t\taddComponent(type, data) {\n\t\t\t\tconst system = this._app.systems[type];\n\t\t\t\tif (!system) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tif (this.c[type]) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\treturn system.addComponent(this, data);\n\t\t}\n\t\tremoveComponent(type) {\n\t\t\t\tconst system = this._app.systems[type];\n\t\t\t\tif (!system) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (!this.c[type]) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tsystem.removeComponent(this);\n\t\t}\n\t\tfindComponent(type) {\n\t\t\t\tconst entity = this.findOne((entity)=>entity.c?.[type]);\n\t\t\t\treturn entity && entity.c[type];\n\t\t}\n\t\tfindComponents(type) {\n\t\t\t\treturn this.find((entity)=>entity.c?.[type]).map((entity)=>entity.c[type]);\n\t\t}\n\t\tfindScript(nameOrType) {\n\t\t\t\tconst entity = this.findOne((node)=>node.c?.script?.has(nameOrType));\n\t\t\t\treturn entity?.c.script.get(nameOrType);\n\t\t}\n\t\tfindScripts(nameOrType) {\n\t\t\t\tconst entities = this.find((node)=>node.c?.script?.has(nameOrType));\n\t\t\t\treturn entities.map((entity)=>entity.c.script.get(nameOrType));\n\t\t}\n\t\tgetGuid() {\n\t\t\t\tif (!this._guid) {\n\t\t\t\t\t\tthis.setGuid(guid.create());\n\t\t\t\t}\n\t\t\t\treturn this._guid;\n\t\t}\n\t\tsetGuid(guid) {\n\t\t\t\tconst index = this._app._entityIndex;\n\t\t\t\tif (this._guid) {\n\t\t\t\t\t\tdelete index[this._guid];\n\t\t\t\t}\n\t\t\t\tthis._guid = guid;\n\t\t\t\tindex[this._guid] = this;\n\t\t}\n\t\t_notifyHierarchyStateChanged(node, enabled) {\n\t\t\t\tlet enableFirst = false;\n\t\t\t\tif (node === this && _enableList.length === 0) {\n\t\t\t\t\t\tenableFirst = true;\n\t\t\t\t}\n\t\t\t\tnode._beingEnabled = true;\n\t\t\t\tnode._onHierarchyStateChanged(enabled);\n\t\t\t\tif (node._onHierarchyStatePostChanged) {\n\t\t\t\t\t\t_enableList.push(node);\n\t\t\t\t}\n\t\t\t\tconst c = node._children;\n\t\t\t\tfor(let i = 0, len = c.length; i < len; i++){\n\t\t\t\t\t\tif (c[i]._enabled) {\n\t\t\t\t\t\t\t\tthis._notifyHierarchyStateChanged(c[i], enabled);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tnode._beingEnabled = false;\n\t\t\t\tif (enableFirst) {\n\t\t\t\t\t\tfor(let i = 0; i < _enableList.length; i++){\n\t\t\t\t\t\t\t\t_enableList[i]._onHierarchyStatePostChanged();\n\t\t\t\t\t\t}\n\t\t\t\t\t\t_enableList.length = 0;\n\t\t\t\t}\n\t\t}\n\t\t_onHierarchyStateChanged(enabled) {\n\t\t\t\tsuper._onHierarchyStateChanged(enabled);\n\t\t\t\tconst components = this._getSortedComponents();\n\t\t\t\tfor(let i = 0; i < components.length; i++){\n\t\t\t\t\t\tconst component = components[i];\n\t\t\t\t\t\tif (component.enabled) {\n\t\t\t\t\t\t\t\tif (enabled) {\n\t\t\t\t\t\t\t\t\t\tcomponent.onEnable();\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tcomponent.onDisable();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treleaseTempArray(components);\n\t\t}\n\t\t_onHierarchyStatePostChanged() {\n\t\t\t\tconst components = this._getSortedComponents();\n\t\t\t\tfor(let i = 0; i < components.length; i++){\n\t\t\t\t\t\tcomponents[i].onPostStateChange();\n\t\t\t\t}\n\t\t\t\treleaseTempArray(components);\n\t\t}\n\t\tfindByGuid(guid) {\n\t\t\t\tif (this._guid === guid) return this;\n\t\t\t\tconst e = this._app._entityIndex[guid];\n\t\t\t\tif (e && (e === this || e.isDescendantOf(this))) {\n\t\t\t\t\t\treturn e;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis._destroying = true;\n\t\t\t\tfor(const name in this.c){\n\t\t\t\t\t\tthis.c[name].enabled = false;\n\t\t\t\t}\n\t\t\t\tfor(const name in this.c){\n\t\t\t\t\t\tthis.c[name].system.removeComponent(this);\n\t\t\t\t}\n\t\t\t\tsuper.destroy();\n\t\t\t\tif (this._guid) {\n\t\t\t\t\t\tdelete this._app._entityIndex[this._guid];\n\t\t\t\t}\n\t\t\t\tthis._destroying = false;\n\t\t}\n\t\tclone() {\n\t\t\t\tconst duplicatedIdsMap = {};\n\t\t\t\tconst clone = this._cloneRecursively(duplicatedIdsMap);\n\t\t\t\tduplicatedIdsMap[this.getGuid()] = clone;\n\t\t\t\tresolveDuplicatedEntityReferenceProperties(this, this, clone, duplicatedIdsMap);\n\t\t\t\treturn clone;\n\t\t}\n\t\t_getSortedComponents() {\n\t\t\t\tconst components = this.c;\n\t\t\t\tconst sortedArray = getTempArray();\n\t\t\t\tlet needSort = 0;\n\t\t\t\tfor(const type in components){\n\t\t\t\t\t\tif (components.hasOwnProperty(type)) {\n\t\t\t\t\t\t\t\tconst component = components[type];\n\t\t\t\t\t\t\t\tneedSort |= component.constructor.order !== 0;\n\t\t\t\t\t\t\t\tsortedArray.push(component);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (needSort && sortedArray.length > 1) {\n\t\t\t\t\t\tsortStaticOrder(sortedArray);\n\t\t\t\t}\n\t\t\t\treturn sortedArray;\n\t\t}\n\t\t_cloneRecursively(duplicatedIdsMap) {\n\t\t\t\tconst clone = new this.constructor(undefined, this._app);\n\t\t\t\tsuper._cloneInternal(clone);\n\t\t\t\tfor(const type in this.c){\n\t\t\t\t\t\tconst component = this.c[type];\n\t\t\t\t\t\tcomponent.system.cloneComponent(this, clone);\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < this._children.length; i++){\n\t\t\t\t\t\tconst oldChild = this._children[i];\n\t\t\t\t\t\tif (oldChild instanceof Entity) {\n\t\t\t\t\t\t\t\tconst newChild = oldChild._cloneRecursively(duplicatedIdsMap);\n\t\t\t\t\t\t\t\tclone.addChild(newChild);\n\t\t\t\t\t\t\t\tduplicatedIdsMap[oldChild.getGuid()] = newChild;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn clone;\n\t\t}\n}\nfunction resolveDuplicatedEntityReferenceProperties(oldSubtreeRoot, oldEntity, newEntity, duplicatedIdsMap) {\n\t\tif (oldEntity instanceof Entity) {\n\t\t\t\tconst components = oldEntity.c;\n\t\t\t\tfor(const componentName in components){\n\t\t\t\t\t\tconst component = components[componentName];\n\t\t\t\t\t\tconst entityProperties = component.system.getPropertiesOfType('entity');\n\t\t\t\t\t\tfor(let i = 0, len = entityProperties.length; i < len; i++){\n\t\t\t\t\t\t\t\tconst propertyDescriptor = entityProperties[i];\n\t\t\t\t\t\t\t\tconst propertyName = propertyDescriptor.name;\n\t\t\t\t\t\t\t\tconst oldEntityReferenceId = component[propertyName];\n\t\t\t\t\t\t\t\tconst entityIsWithinOldSubtree = !!oldSubtreeRoot.findByGuid(oldEntityReferenceId);\n\t\t\t\t\t\t\t\tif (entityIsWithinOldSubtree) {\n\t\t\t\t\t\t\t\t\t\tconst newEntityReferenceId = duplicatedIdsMap[oldEntityReferenceId].getGuid();\n\t\t\t\t\t\t\t\t\t\tif (newEntityReferenceId) {\n\t\t\t\t\t\t\t\t\t\t\t\tnewEntity.c[componentName][propertyName] = newEntityReferenceId;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (components.script) {\n\t\t\t\t\t\tnewEntity.script.resolveDuplicatedEntityReferenceProperties(components.script, duplicatedIdsMap);\n\t\t\t\t}\n\t\t\t\tif (components.render) {\n\t\t\t\t\t\tnewEntity.render.resolveDuplicatedEntityReferenceProperties(components.render, duplicatedIdsMap);\n\t\t\t\t}\n\t\t\t\tif (components.button) {\n\t\t\t\t\t\tnewEntity.button.resolveDuplicatedEntityReferenceProperties(components.button, duplicatedIdsMap);\n\t\t\t\t}\n\t\t\t\tif (components.scrollview) {\n\t\t\t\t\t\tnewEntity.scrollview.resolveDuplicatedEntityReferenceProperties(components.scrollview, duplicatedIdsMap);\n\t\t\t\t}\n\t\t\t\tif (components.scrollbar) {\n\t\t\t\t\t\tnewEntity.scrollbar.resolveDuplicatedEntityReferenceProperties(components.scrollbar, duplicatedIdsMap);\n\t\t\t\t}\n\t\t\t\tif (components.anim) {\n\t\t\t\t\t\tnewEntity.anim.resolveDuplicatedEntityReferenceProperties(components.anim, duplicatedIdsMap);\n\t\t\t\t}\n\t\t\t\tconst _old = oldEntity.children.filter((e)=>e instanceof Entity);\n\t\t\t\tconst _new = newEntity.children.filter((e)=>e instanceof Entity);\n\t\t\t\tfor(let i = 0, len = _old.length; i < len; i++){\n\t\t\t\t\t\tresolveDuplicatedEntityReferenceProperties(oldSubtreeRoot, _old[i], _new[i], duplicatedIdsMap);\n\t\t\t\t}\n\t\t}\n}\n\nclass SceneRegistryItem {\n\t\tconstructor(name, url){\n\t\t\t\tthis.data = null;\n\t\t\t\tthis._loading = false;\n\t\t\t\tthis._onLoadedCallbacks = [];\n\t\t\t\tthis.name = name;\n\t\t\t\tthis.url = url;\n\t\t}\n\t\tget loaded() {\n\t\t\t\treturn !!this.data;\n\t\t}\n\t\tget loading() {\n\t\t\t\treturn this._loading;\n\t\t}\n}\n\nclass SceneRegistry {\n\t\tconstructor(app){\n\t\t\t\tthis._list = [];\n\t\t\t\tthis._index = {};\n\t\t\t\tthis._urlIndex = {};\n\t\t\t\tthis._app = app;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis._app = null;\n\t\t}\n\t\tlist() {\n\t\t\t\treturn this._list;\n\t\t}\n\t\tadd(name, url) {\n\t\t\t\tif (this._index.hasOwnProperty(name)) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tconst item = new SceneRegistryItem(name, url);\n\t\t\t\tconst i = this._list.push(item);\n\t\t\t\tthis._index[item.name] = i - 1;\n\t\t\t\tthis._urlIndex[item.url] = i - 1;\n\t\t\t\treturn true;\n\t\t}\n\t\tfind(name) {\n\t\t\t\tif (this._index.hasOwnProperty(name)) {\n\t\t\t\t\t\treturn this._list[this._index[name]];\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tfindByUrl(url) {\n\t\t\t\tif (this._urlIndex.hasOwnProperty(url)) {\n\t\t\t\t\t\treturn this._list[this._urlIndex[url]];\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tremove(name) {\n\t\t\t\tif (this._index.hasOwnProperty(name)) {\n\t\t\t\t\t\tconst idx = this._index[name];\n\t\t\t\t\t\tlet item = this._list[idx];\n\t\t\t\t\t\tdelete this._urlIndex[item.url];\n\t\t\t\t\t\tdelete this._index[name];\n\t\t\t\t\t\tthis._list.splice(idx, 1);\n\t\t\t\t\t\tfor(let i = 0; i < this._list.length; i++){\n\t\t\t\t\t\t\t\titem = this._list[i];\n\t\t\t\t\t\t\t\tthis._index[item.name] = i;\n\t\t\t\t\t\t\t\tthis._urlIndex[item.url] = i;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_loadSceneData(sceneItem, storeInCache, callback) {\n\t\t\t\tconst app = this._app;\n\t\t\t\tlet url = sceneItem;\n\t\t\t\tif (typeof sceneItem === 'string') {\n\t\t\t\t\t\tsceneItem = this.findByUrl(url) || this.find(url) || new SceneRegistryItem('Untitled', url);\n\t\t\t\t}\n\t\t\t\turl = sceneItem.url;\n\t\t\t\tif (!url) {\n\t\t\t\t\t\tcallback('Cannot find scene to load');\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (sceneItem.loaded) {\n\t\t\t\t\t\tcallback(null, sceneItem);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (app.assets && app.assets.prefix && !ABSOLUTE_URL.test(url)) {\n\t\t\t\t\t\turl = path.join(app.assets.prefix, url);\n\t\t\t\t}\n\t\t\t\tsceneItem._onLoadedCallbacks.push(callback);\n\t\t\t\tif (!sceneItem._loading) {\n\t\t\t\t\t\tconst handler = app.loader.getHandler('hierarchy');\n\t\t\t\t\t\thandler.load(url, (err, data)=>{\n\t\t\t\t\t\t\t\tsceneItem.data = data;\n\t\t\t\t\t\t\t\tsceneItem._loading = false;\n\t\t\t\t\t\t\t\tfor(let i = 0; i < sceneItem._onLoadedCallbacks.length; i++){\n\t\t\t\t\t\t\t\t\t\tsceneItem._onLoadedCallbacks[i](err, sceneItem);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (!storeInCache) {\n\t\t\t\t\t\t\t\t\t\tsceneItem.data = null;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tsceneItem._onLoadedCallbacks.length = 0;\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tsceneItem._loading = true;\n\t\t}\n\t\tloadSceneData(sceneItem, callback) {\n\t\t\t\tthis._loadSceneData(sceneItem, true, callback);\n\t\t}\n\t\tunloadSceneData(sceneItem) {\n\t\t\t\tif (typeof sceneItem === 'string') {\n\t\t\t\t\t\tsceneItem = this.findByUrl(sceneItem);\n\t\t\t\t}\n\t\t\t\tif (sceneItem) {\n\t\t\t\t\t\tsceneItem.data = null;\n\t\t\t\t}\n\t\t}\n\t\t_loadSceneHierarchy(sceneItem, onBeforeAddHierarchy, callback) {\n\t\t\t\tthis._loadSceneData(sceneItem, false, (err, sceneItem)=>{\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\tif (callback) {\n\t\t\t\t\t\t\t\t\t\tcallback(err);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (onBeforeAddHierarchy) {\n\t\t\t\t\t\t\t\tonBeforeAddHierarchy(sceneItem);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst app = this._app;\n\t\t\t\t\t\tconst _loaded = ()=>{\n\t\t\t\t\t\t\t\tconst handler = app.loader.getHandler('hierarchy');\n\t\t\t\t\t\t\t\tapp.systems.script.preloading = true;\n\t\t\t\t\t\t\t\tconst entity = handler.open(sceneItem.url, sceneItem.data);\n\t\t\t\t\t\t\t\tapp.systems.script.preloading = false;\n\t\t\t\t\t\t\t\tapp.loader.clearCache(sceneItem.url, 'hierarchy');\n\t\t\t\t\t\t\t\tapp.root.addChild(entity);\n\t\t\t\t\t\t\t\tapp.systems.fire('initialize', entity);\n\t\t\t\t\t\t\t\tapp.systems.fire('postInitialize', entity);\n\t\t\t\t\t\t\t\tapp.systems.fire('postPostInitialize', entity);\n\t\t\t\t\t\t\t\tif (callback) callback(null, entity);\n\t\t\t\t\t\t};\n\t\t\t\t\t\tapp._preloadScripts(sceneItem.data, _loaded);\n\t\t\t\t});\n\t\t}\n\t\tloadSceneHierarchy(sceneItem, callback) {\n\t\t\t\tthis._loadSceneHierarchy(sceneItem, null, callback);\n\t\t}\n\t\tloadSceneSettings(sceneItem, callback) {\n\t\t\t\tthis._loadSceneData(sceneItem, false, (err, sceneItem)=>{\n\t\t\t\t\t\tif (!err) {\n\t\t\t\t\t\t\t\tthis._app.applySceneSettings(sceneItem.data.settings);\n\t\t\t\t\t\t\t\tif (callback) {\n\t\t\t\t\t\t\t\t\t\tcallback(null);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (callback) {\n\t\t\t\t\t\t\t\t\t\tcallback(err);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\tchangeScene(sceneItem, callback) {\n\t\t\t\tconst app = this._app;\n\t\t\t\tconst onBeforeAddHierarchy = (sceneItem)=>{\n\t\t\t\t\t\tconst { children } = app.root;\n\t\t\t\t\t\twhile(children.length){\n\t\t\t\t\t\t\t\tchildren[0].destroy();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tapp.applySceneSettings(sceneItem.data.settings);\n\t\t\t\t};\n\t\t\t\tthis._loadSceneHierarchy(sceneItem, onBeforeAddHierarchy, callback);\n\t\t}\n\t\tloadScene(url, callback) {\n\t\t\t\tconst app = this._app;\n\t\t\t\tconst handler = app.loader.getHandler('scene');\n\t\t\t\tif (app.assets && app.assets.prefix && !ABSOLUTE_URL.test(url)) {\n\t\t\t\t\t\turl = path.join(app.assets.prefix, url);\n\t\t\t\t}\n\t\t\t\thandler.load(url, (err, data)=>{\n\t\t\t\t\t\tif (!err) {\n\t\t\t\t\t\t\t\tconst _loaded = ()=>{\n\t\t\t\t\t\t\t\t\t\tapp.systems.script.preloading = true;\n\t\t\t\t\t\t\t\t\t\tconst scene = handler.open(url, data);\n\t\t\t\t\t\t\t\t\t\tconst sceneItem = this.findByUrl(url);\n\t\t\t\t\t\t\t\t\t\tif (sceneItem && !sceneItem.loaded) {\n\t\t\t\t\t\t\t\t\t\t\t\tsceneItem.data = data;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tapp.systems.script.preloading = false;\n\t\t\t\t\t\t\t\t\t\tapp.loader.clearCache(url, 'scene');\n\t\t\t\t\t\t\t\t\t\tapp.loader.patch({\n\t\t\t\t\t\t\t\t\t\t\t\tresource: scene,\n\t\t\t\t\t\t\t\t\t\t\t\ttype: 'scene'\n\t\t\t\t\t\t\t\t\t\t}, app.assets);\n\t\t\t\t\t\t\t\t\t\tapp.root.addChild(scene.root);\n\t\t\t\t\t\t\t\t\t\tif (app.systems.rigidbody && typeof Ammo !== 'undefined') {\n\t\t\t\t\t\t\t\t\t\t\t\tapp.systems.rigidbody.gravity.set(scene._gravity.x, scene._gravity.y, scene._gravity.z);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (callback) {\n\t\t\t\t\t\t\t\t\t\t\t\tcallback(null, scene);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tapp._preloadScripts(data, _loaded);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (callback) {\n\t\t\t\t\t\t\t\t\t\tcallback(err);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n}\n\nclass ApplicationStats {\n\t\tconstructor(device){\n\t\t\t\tthis.frame = {\n\t\t\t\t\t\tfps: 0,\n\t\t\t\t\t\tms: 0,\n\t\t\t\t\t\tdt: 0,\n\t\t\t\t\t\tupdateStart: 0,\n\t\t\t\t\t\tupdateTime: 0,\n\t\t\t\t\t\trenderStart: 0,\n\t\t\t\t\t\trenderTime: 0,\n\t\t\t\t\t\tphysicsStart: 0,\n\t\t\t\t\t\tphysicsTime: 0,\n\t\t\t\t\t\tcullTime: 0,\n\t\t\t\t\t\tsortTime: 0,\n\t\t\t\t\t\tskinTime: 0,\n\t\t\t\t\t\tmorphTime: 0,\n\t\t\t\t\t\tinstancingTime: 0,\n\t\t\t\t\t\ttriangles: 0,\n\t\t\t\t\t\tgsplats: 0,\n\t\t\t\t\t\totherPrimitives: 0,\n\t\t\t\t\t\tshaders: 0,\n\t\t\t\t\t\tmaterials: 0,\n\t\t\t\t\t\tcameras: 0,\n\t\t\t\t\t\tshadowMapUpdates: 0,\n\t\t\t\t\t\tshadowMapTime: 0,\n\t\t\t\t\t\tdepthMapTime: 0,\n\t\t\t\t\t\tforwardTime: 0,\n\t\t\t\t\t\tlightClustersTime: 0,\n\t\t\t\t\t\tlightClusters: 0,\n\t\t\t\t\t\t_timeToCountFrames: 0,\n\t\t\t\t\t\t_fpsAccum: 0\n\t\t\t\t};\n\t\t\t\tthis.drawCalls = {\n\t\t\t\t\t\tforward: 0,\n\t\t\t\t\t\tdepth: 0,\n\t\t\t\t\t\tshadow: 0,\n\t\t\t\t\t\timmediate: 0,\n\t\t\t\t\t\tmisc: 0,\n\t\t\t\t\t\ttotal: 0,\n\t\t\t\t\t\tskinned: 0,\n\t\t\t\t\t\tinstanced: 0,\n\t\t\t\t\t\tremovedByInstancing: 0\n\t\t\t\t};\n\t\t\t\tthis.misc = {\n\t\t\t\t\t\trenderTargetCreationTime: 0\n\t\t\t\t};\n\t\t\t\tthis.particles = {\n\t\t\t\t\t\tupdatesPerFrame: 0,\n\t\t\t\t\t\t_updatesPerFrame: 0,\n\t\t\t\t\t\tframeTime: 0,\n\t\t\t\t\t\t_frameTime: 0\n\t\t\t\t};\n\t\t\t\tthis.shaders = device._shaderStats;\n\t\t\t\tthis.vram = device._vram;\n\t\t\t\tObject.defineProperty(this.vram, 'totalUsed', {\n\t\t\t\t\t\tget: function() {\n\t\t\t\t\t\t\t\treturn this.tex + this.vb + this.ib;\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tObject.defineProperty(this.vram, 'geom', {\n\t\t\t\t\t\tget: function() {\n\t\t\t\t\t\t\t\treturn this.vb + this.ib;\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\tget scene() {\n\t\t\t\treturn getApplication().scene._stats;\n\t\t}\n\t\tget lightmapper() {\n\t\t\t\treturn getApplication().lightmapper?.stats;\n\t\t}\n\t\tget batcher() {\n\t\t\t\tconst batcher = getApplication()._batcher;\n\t\t\t\treturn batcher ? batcher._stats : null;\n\t\t}\n}\n\nvar alphaTestPS$1 = `\nuniform float alpha_ref;\nvoid alphaTest(float a) {\n\tif (a < alpha_ref) discard;\n}\n`;\n\nvar ambientPS$1 = `\n#ifdef LIT_AMBIENT_SOURCE == AMBIENTSH\n\tuniform vec3 ambientSH[9];\n#endif\n#if LIT_AMBIENT_SOURCE == ENVALATLAS\n\t#include \"envAtlasPS\"\n\t#ifndef ENV_ATLAS\n\t#define ENV_ATLAS\n\t\tuniform sampler2D texture_envAtlas;\n\t#endif\n#endif\nvoid addAmbient(vec3 worldNormal) {\n\t#ifdef LIT_AMBIENT_SOURCE == AMBIENTSH\n\t\tvec3 n = cubeMapRotate(worldNormal);\n\t\tvec3 color =\n\t\t\tambientSH[0] +\n\t\t\tambientSH[1] * n.x +\n\t\t\tambientSH[2] * n.y +\n\t\t\tambientSH[3] * n.z +\n\t\t\tambientSH[4] * n.x * n.z +\n\t\t\tambientSH[5] * n.z * n.y +\n\t\t\tambientSH[6] * n.y * n.x +\n\t\t\tambientSH[7] * (3.0 * n.z * n.z - 1.0) +\n\t\t\tambientSH[8] * (n.x * n.x - n.y * n.y);\n\t\tdDiffuseLight += processEnvironment(max(color, vec3(0.0)));\n\t#endif\n\t#if LIT_AMBIENT_SOURCE == ENVALATLAS\n\t\tvec3 dir = normalize(cubeMapRotate(worldNormal) * vec3(-1.0, 1.0, 1.0));\n\t\tvec2 uv = mapUv(toSphericalUv(dir), vec4(128.0, 256.0 + 128.0, 64.0, 32.0) / atlasSize);\n\t\tvec4 raw = texture2D(texture_envAtlas, uv);\n\t\tvec3 linear = {ambientDecode}(raw);\n\t\tdDiffuseLight += processEnvironment(linear);\n\t#endif\n\t#if LIT_AMBIENT_SOURCE == CONSTANT\n\t\tdDiffuseLight += light_globalAmbient;\n\t#endif\n}\n`;\n\nvar anisotropyPS$1 = `\n#ifdef LIT_GGX_SPECULAR\n\tuniform float material_anisotropyIntensity;\n\tuniform vec2 material_anisotropyRotation;\n#endif\nvoid getAnisotropy() {\n\tdAnisotropy = 0.0;\n\tdAnisotropyRotation = vec2(1.0, 0.0);\n#ifdef LIT_GGX_SPECULAR\n\tdAnisotropy = material_anisotropyIntensity;\n\tdAnisotropyRotation = material_anisotropyRotation;\n#endif\n\t#ifdef STD_ANISOTROPY_TEXTURE\n\tvec3 anisotropyTex = texture2DBias({STD_ANISOTROPY_TEXTURE_NAME}, {STD_ANISOTROPY_TEXTURE_UV}, textureBias).rgb;\n\tdAnisotropy *= anisotropyTex.b;\n\tvec2 anisotropyRotationFromTex = anisotropyTex.rg * 2.0 - vec2(1.0);\n\tmat2 rotationMatrix = mat2(dAnisotropyRotation.x, dAnisotropyRotation.y, -dAnisotropyRotation.y, dAnisotropyRotation.x);\n\tdAnisotropyRotation = rotationMatrix * anisotropyRotationFromTex;\n\t#endif\n\t\n\tdAnisotropy = clamp(dAnisotropy, 0.0, 1.0);\n}\n`;\n\nvar aoPS$1 = `\n#if defined(STD_AO_TEXTURE) || defined(STD_AO_VERTEX)\n\tuniform float material_aoIntensity;\n#endif\n#ifdef STD_AODETAIL_TEXTURE\n\t#include \"detailModesPS\"\n#endif\nvoid getAO() {\n\tdAo = 1.0;\n\t#ifdef STD_AO_TEXTURE\n\t\tfloat aoBase = texture2DBias({STD_AO_TEXTURE_NAME}, {STD_AO_TEXTURE_UV}, textureBias).{STD_AO_TEXTURE_CHANNEL};\n\t\t#ifdef STD_AODETAIL_TEXTURE\n\t\t\tfloat aoDetail = texture2DBias({STD_AODETAIL_TEXTURE_NAME}, {STD_AODETAIL_TEXTURE_UV}, textureBias).{STD_AODETAIL_TEXTURE_CHANNEL};\n\t\t\taoBase = detailMode_{STD_AODETAIL_DETAILMODE}(vec3(aoBase), vec3(aoDetail)).r;\n\t\t#endif\n\t\tdAo *= aoBase;\n\t#endif\n\t#ifdef STD_AO_VERTEX\n\t\tdAo *= saturate(vVertexColor.{STD_AO_VERTEX_CHANNEL});\n\t#endif\n\t#if defined(STD_AO_TEXTURE) || defined(STD_AO_VERTEX)\n\t\tdAo = mix(1.0, dAo, material_aoIntensity);\n\t#endif\n}\n`;\n\nvar aoDiffuseOccPS$1 = `\nvoid occludeDiffuse(float ao) {\n\tdDiffuseLight *= ao;\n}\n`;\n\nvar aoSpecOccPS$1 = `\n#if LIT_OCCLUDE_SPECULAR != NONE\n\t#ifdef LIT_OCCLUDE_SPECULAR_FLOAT\n\t\tuniform float material_occludeSpecularIntensity;\n\t#endif\n#endif\nvoid occludeSpecular(float gloss, float ao, vec3 worldNormal, vec3 viewDir) {\n\t#if LIT_OCCLUDE_SPECULAR == AO\n\t\t#ifdef LIT_OCCLUDE_SPECULAR_FLOAT\n\t\t\tfloat specOcc = mix(1.0, ao, material_occludeSpecularIntensity);\n\t\t#else\n\t\t\tfloat specOcc = ao;\n\t\t#endif\n\t#endif\n\t#if LIT_OCCLUDE_SPECULAR == GLOSSDEPENDENT\n\t\tfloat specPow = exp2(gloss * 11.0);\n\t\tfloat specOcc = saturate(pow(dot(worldNormal, viewDir) + ao, 0.01 * specPow) - 1.0 + ao);\n\t\t#ifdef LIT_OCCLUDE_SPECULAR_FLOAT\n\t\t\tspecOcc = mix(1.0, specOcc, material_occludeSpecularIntensity);\n\t\t#endif\n\t#endif\n\t#if LIT_OCCLUDE_SPECULAR != NONE\n\t\tdSpecularLight *= specOcc;\n\t\tdReflection *= specOcc;\n\t\t#ifdef LIT_SHEEN\n\t\t\tsSpecularLight *= specOcc;\n\t\t\tsReflection *= specOcc;\n\t\t#endif\n\t#endif\n}\n`;\n\nvar bakeDirLmEndPS$1 = `\n\tvec4 dirLm = texture2D(texture_dirLightMap, vUv1);\n\tif (bakeDir > 0.5) {\n\t\tif (dAtten > 0.00001) {\n\t\t\tdirLm.xyz = dirLm.xyz * 2.0 - vec3(1.0);\n\t\t\tdAtten = saturate(dAtten);\n\t\t\tgl_FragColor.rgb = normalize(dLightDirNormW.xyz*dAtten + dirLm.xyz*dirLm.w) * 0.5 + vec3(0.5);\n\t\t\tgl_FragColor.a = dirLm.w + dAtten;\n\t\t\tgl_FragColor.a = max(gl_FragColor.a, 1.0 / 255.0);\n\t\t} else {\n\t\t\tgl_FragColor = dirLm;\n\t\t}\n\t} else {\n\t\tgl_FragColor.rgb = dirLm.xyz;\n\t\tgl_FragColor.a = max(dirLm.w, dAtten > 0.00001 ? (1.0/255.0) : 0.0);\n\t}\n`;\n\nvar bakeLmEndPS$1 = `\n#ifdef LIT_LIGHTMAP_BAKING_ADD_AMBIENT\n\tdDiffuseLight = ((dDiffuseLight - 0.5) * max(ambientBakeOcclusionContrast + 1.0, 0.0)) + 0.5;\n\tdDiffuseLight += vec3(ambientBakeOcclusionBrightness);\n\tdDiffuseLight = saturate(dDiffuseLight);\n\tdDiffuseLight *= dAmbientLight;\n#endif\n#ifdef LIGHTMAP_RGBM\n\tgl_FragColor.rgb = dDiffuseLight;\n\tgl_FragColor.rgb = pow(gl_FragColor.rgb, vec3(0.5));\n\tgl_FragColor.rgb /= 8.0;\n\tgl_FragColor.a = clamp( max( max( gl_FragColor.r, gl_FragColor.g ), max( gl_FragColor.b, 1.0 / 255.0 ) ), 0.0,1.0 );\n\tgl_FragColor.a = ceil(gl_FragColor.a * 255.0) / 255.0;\n\tgl_FragColor.rgb /= gl_FragColor.a;\n#else\n\tgl_FragColor = vec4(dDiffuseLight, 1.0);\n#endif\n`;\n\nvar basePS$1 = `\nuniform vec3 view_position;\nuniform vec3 light_globalAmbient;\nfloat square(float x) {\n\treturn x*x;\n}\nfloat saturate(float x) {\n\treturn clamp(x, 0.0, 1.0);\n}\nvec3 saturate(vec3 x) {\n\treturn clamp(x, vec3(0.0), vec3(1.0));\n}\n`;\n\nvar baseNineSlicedPS$1 = `\n#define NINESLICED\nvarying vec2 vMask;\nvarying vec2 vTiledUv;\nuniform mediump vec4 innerOffset;\nuniform mediump vec2 outerScale;\nuniform mediump vec4 atlasRect;\nvec2 nineSlicedUv;\n`;\n\nvar baseNineSlicedTiledPS$1 = `\n#define NINESLICED\n#define NINESLICETILED\nvarying vec2 vMask;\nvarying vec2 vTiledUv;\nuniform mediump vec4 innerOffset;\nuniform mediump vec2 outerScale;\nuniform mediump vec4 atlasRect;\nvec2 nineSlicedUv;\n`;\n\nvar bayerPS$1 = `\nfloat bayer2(vec2 p) {\n\treturn mod(2.0 * p.y + p.x + 1.0, 4.0);\n}\nfloat bayer4(vec2 p) {\n\tvec2 p1 = mod(p, 2.0);\n\tvec2 p2 = floor(0.5 * mod(p, 4.0));\n\treturn 4.0 * bayer2(p1) + bayer2(p2);\n}\nfloat bayer8(vec2 p) {\n\tvec2 p1 = mod(p, 2.0);\n\tvec2 p2 = floor(0.5 * mod(p, 4.0));\n\tvec2 p4 = floor(0.25 * mod(p, 8.0));\n\treturn 4.0 * (4.0 * bayer2(p1) + bayer2(p2)) + bayer2(p4);\n}\n`;\n\nvar blurVSMPS$1 = `\nvarying vec2 vUv0;\nuniform sampler2D source;\nuniform vec2 pixelOffset;\n#ifdef GAUSS\n\tuniform float weight[{SAMPLES}];\n#endif\nvoid main(void) {\n\tvec3 moments = vec3(0.0);\n\tvec2 uv = vUv0 - pixelOffset * (float({SAMPLES}) * 0.5);\n\tfor (int i = 0; i < {SAMPLES}; i++) {\n\t\tvec4 c = texture2D(source, uv + pixelOffset * float(i));\n\t\t#ifdef GAUSS\n\t\t\tmoments += c.xyz * weight[i];\n\t\t#else\n\t\t\tmoments += c.xyz;\n\t\t#endif\n\t}\n\t#ifndef GAUSS\n\t\tmoments *= 1.0 / float({SAMPLES});\n\t#endif\n\tgl_FragColor = vec4(moments.x, moments.y, moments.z, 1.0);\n}\n`;\n\nvar clearCoatPS$1 = `\nuniform float material_clearCoat;\nvoid getClearCoat() {\n\tccSpecularity = material_clearCoat;\n\t#ifdef STD_CLEARCOAT_TEXTURE\n\tccSpecularity *= texture2DBias({STD_CLEARCOAT_TEXTURE_NAME}, {STD_CLEARCOAT_TEXTURE_UV}, textureBias).{STD_CLEARCOAT_TEXTURE_CHANNEL};\n\t#endif\n\t#ifdef STD_CLEARCOAT_VERTEX\n\tccSpecularity *= saturate(vVertexColor.{STD_CLEARCOAT_VERTEX_CHANNEL});\n\t#endif\n}\n`;\n\nvar clearCoatGlossPS$1 = `\nuniform float material_clearCoatGloss;\nvoid getClearCoatGlossiness() {\n\tccGlossiness = material_clearCoatGloss;\n\t#ifdef STD_CLEARCOATGLOSS_TEXTURE\n\tccGlossiness *= texture2DBias({STD_CLEARCOATGLOSS_TEXTURE_NAME}, {STD_CLEARCOATGLOSS_TEXTURE_UV}, textureBias).{STD_CLEARCOATGLOSS_TEXTURE_CHANNEL};\n\t#endif\n\t#ifdef STD_CLEARCOATGLOSS_VERTEX\n\tccGlossiness *= saturate(vVertexColor.{STD_CLEARCOATGLOSS_VERTEX_CHANNEL});\n\t#endif\n\t#ifdef STD_CLEARCOATGLOSS_INVERT\n\tccGlossiness = 1.0 - ccGlossiness;\n\t#endif\n\tccGlossiness += 0.0000001;\n}\n`;\n\nvar clearCoatNormalPS$1 = `\n#ifdef STD_CLEARCOATNORMAL_TEXTURE\nuniform float material_clearCoatBumpiness;\n#endif\nvoid getClearCoatNormal() {\n#ifdef STD_CLEARCOATNORMAL_TEXTURE\n\tvec3 normalMap = {STD_CLEARCOATNORMAL_TEXTURE_DECODE}(texture2DBias({STD_CLEARCOATNORMAL_TEXTURE_NAME}, {STD_CLEARCOATNORMAL_TEXTURE_UV}, textureBias));\n\tnormalMap = mix(vec3(0.0, 0.0, 1.0), normalMap, material_clearCoatBumpiness);\n\tccNormalW = normalize(dTBN * normalMap);\n#else\n\tccNormalW = dVertexNormalW;\n#endif\n}\n`;\n\nvar clusteredLightUtilsPS$1 = `\nvec2 getCubemapFaceCoordinates(const vec3 dir, out float faceIndex, out vec2 tileOffset)\n{\n\tvec3 vAbs = abs(dir);\n\tfloat ma;\n\tvec2 uv;\n\tif (vAbs.z >= vAbs.x && vAbs.z >= vAbs.y) {\n\t\tfaceIndex = dir.z < 0.0 ? 5.0 : 4.0;\n\t\tma = 0.5 / vAbs.z;\n\t\tuv = vec2(dir.z < 0.0 ? -dir.x : dir.x, -dir.y);\n\t\ttileOffset.x = 2.0;\n\t\ttileOffset.y = dir.z < 0.0 ? 1.0 : 0.0;\n\t} else if(vAbs.y >= vAbs.x) {\n\t\tfaceIndex = dir.y < 0.0 ? 3.0 : 2.0;\n\t\tma = 0.5 / vAbs.y;\n\t\tuv = vec2(dir.x, dir.y < 0.0 ? -dir.z : dir.z);\n\t\ttileOffset.x = 1.0;\n\t\ttileOffset.y = dir.y < 0.0 ? 1.0 : 0.0;\n\t} else {\n\t\tfaceIndex = dir.x < 0.0 ? 1.0 : 0.0;\n\t\tma = 0.5 / vAbs.x;\n\t\tuv = vec2(dir.x < 0.0 ? dir.z : -dir.z, -dir.y);\n\t\ttileOffset.x = 0.0;\n\t\ttileOffset.y = dir.x < 0.0 ? 1.0 : 0.0;\n\t}\n\treturn uv * ma + 0.5;\n}\nvec2 getCubemapAtlasCoordinates(const vec3 omniAtlasViewport, float shadowEdgePixels, float shadowTextureResolution, const vec3 dir) {\n\tfloat faceIndex;\n\tvec2 tileOffset;\n\tvec2 uv = getCubemapFaceCoordinates(dir, faceIndex, tileOffset);\n\tfloat atlasFaceSize = omniAtlasViewport.z;\n\tfloat tileSize = shadowTextureResolution * atlasFaceSize;\n\tfloat offset = shadowEdgePixels / tileSize;\n\tuv = uv * vec2(1.0 - offset * 2.0) + vec2(offset * 1.0);\n\tuv *= atlasFaceSize;\n\tuv += tileOffset * atlasFaceSize;\n\tuv += omniAtlasViewport.xy;\n\treturn uv;\n}\n`;\n\nvar clusteredLightCookiesPS$1 = `\nvec3 _getCookieClustered(TEXTURE_ACCEPT(tex), vec2 uv, float intensity, vec4 cookieChannel) {\n\tvec4 pixel = mix(vec4(1.0), texture2DLod(tex, uv, 0.0), intensity);\n\tbool isRgb = dot(cookieChannel.rgb, vec3(1.0)) == 3.0;\n\treturn isRgb ? pixel.rgb : vec3(dot(pixel, cookieChannel));\n}\nvec3 getCookie2DClustered(TEXTURE_ACCEPT(tex), mat4 transform, vec3 worldPosition, float intensity, vec4 cookieChannel) {\n\tvec4 projPos = transform * vec4(worldPosition, 1.0);\n\treturn _getCookieClustered(TEXTURE_PASS(tex), projPos.xy / projPos.w, intensity, cookieChannel);\n}\nvec3 getCookieCubeClustered(TEXTURE_ACCEPT(tex), vec3 dir, float intensity, vec4 cookieChannel, float shadowTextureResolution, float shadowEdgePixels, vec3 omniAtlasViewport) {\n\tvec2 uv = getCubemapAtlasCoordinates(omniAtlasViewport, shadowEdgePixels, shadowTextureResolution, dir);\n\treturn _getCookieClustered(TEXTURE_PASS(tex), uv, intensity, cookieChannel);\n}\n`;\n\nvar clusteredLightShadowsPS$1 = `\nvec3 _getShadowCoordPerspZbuffer(mat4 shadowMatrix, vec4 shadowParams, vec3 wPos) {\n\tvec4 projPos = shadowMatrix * vec4(wPos, 1.0);\n\tprojPos.xyz /= projPos.w;\n\treturn projPos.xyz;\n}\nvec3 getShadowCoordPerspZbufferNormalOffset(mat4 shadowMatrix, vec4 shadowParams, vec3 normal) {\n\tvec3 wPos = vPositionW + normal * shadowParams.y;\n\treturn _getShadowCoordPerspZbuffer(shadowMatrix, shadowParams, wPos);\n}\nvec3 normalOffsetPointShadow(vec4 shadowParams, vec3 lightPos, vec3 lightDir, vec3 lightDirNorm, vec3 normal) {\n\tfloat distScale = length(lightDir);\n\tvec3 wPos = vPositionW + normal * shadowParams.y * clamp(1.0 - dot(normal, -lightDirNorm), 0.0, 1.0) * distScale;\n\tvec3 dir = wPos - lightPos;\n\treturn dir;\n}\n#if defined(CLUSTER_SHADOW_TYPE_PCF1)\nfloat getShadowOmniClusteredPCF1(SHADOWMAP_ACCEPT(shadowMap), vec4 shadowParams, vec3 omniAtlasViewport, float shadowEdgePixels, vec3 lightDir) {\n\tfloat shadowTextureResolution = shadowParams.x;\n\tvec2 uv = getCubemapAtlasCoordinates(omniAtlasViewport, shadowEdgePixels, shadowTextureResolution, lightDir);\n\tfloat shadowZ = length(lightDir) * shadowParams.w + shadowParams.z;\n\treturn textureShadow(shadowMap, vec3(uv, shadowZ));\n}\n#endif\n#if defined(CLUSTER_SHADOW_TYPE_PCF3)\nfloat getShadowOmniClusteredPCF3(SHADOWMAP_ACCEPT(shadowMap), vec4 shadowParams, vec3 omniAtlasViewport, float shadowEdgePixels, vec3 lightDir) {\n\tfloat shadowTextureResolution = shadowParams.x;\n\tvec2 uv = getCubemapAtlasCoordinates(omniAtlasViewport, shadowEdgePixels, shadowTextureResolution, lightDir);\n\tfloat shadowZ = length(lightDir) * shadowParams.w + shadowParams.z;\n\tvec3 shadowCoord = vec3(uv, shadowZ);\n\treturn getShadowPCF3x3(SHADOWMAP_PASS(shadowMap), shadowCoord, shadowParams);\n}\n#endif\n#if defined(CLUSTER_SHADOW_TYPE_PCF5)\nfloat getShadowOmniClusteredPCF5(SHADOWMAP_ACCEPT(shadowMap), vec4 shadowParams, vec3 omniAtlasViewport, float shadowEdgePixels, vec3 lightDir) {\n\tfloat shadowTextureResolution = shadowParams.x;\n\tvec2 uv = getCubemapAtlasCoordinates(omniAtlasViewport, shadowEdgePixels, shadowTextureResolution, lightDir);\n\tfloat shadowZ = length(lightDir) * shadowParams.w + shadowParams.z;\n\tvec3 shadowCoord = vec3(uv, shadowZ);\n\treturn getShadowPCF5x5(SHADOWMAP_PASS(shadowMap), shadowCoord, shadowParams);\n}\n#endif\n#if defined(CLUSTER_SHADOW_TYPE_PCF1)\nfloat getShadowSpotClusteredPCF1(SHADOWMAP_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams) {\n\treturn textureShadow(shadowMap, shadowCoord);\n}\n#endif\n#if defined(CLUSTER_SHADOW_TYPE_PCF3)\nfloat getShadowSpotClusteredPCF3(SHADOWMAP_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams) {\n\treturn getShadowSpotPCF3x3(SHADOWMAP_PASS(shadowMap), shadowCoord, shadowParams);\n}\n#endif\n#if defined(CLUSTER_SHADOW_TYPE_PCF5)\nfloat getShadowSpotClusteredPCF5(SHADOWMAP_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams) {\n\treturn getShadowPCF5x5(SHADOWMAP_PASS(shadowMap), shadowCoord, shadowParams);\n}\n#endif\n`;\n\nvar clusteredLightPS$1 = `\n#include \"lightBufferDefinesPS\"\n#include \"clusteredLightUtilsPS\"\n#ifdef CLUSTER_COOKIES\n\t#include \"clusteredLightCookiesPS\"\n#endif\n#ifdef CLUSTER_SHADOWS\n\t#include \"clusteredLightShadowsPS\"\n#endif\nuniform highp sampler2D clusterWorldTexture;\nuniform highp sampler2D lightsTexture;\n#ifdef CLUSTER_SHADOWS\n\tuniform sampler2DShadow shadowAtlasTexture;\n#endif\n#ifdef CLUSTER_COOKIES\n\tuniform sampler2D cookieAtlasTexture;\n#endif\nuniform int clusterMaxCells;\nuniform float clusterSkip;\nuniform vec3 clusterCellsCountByBoundsSize;\nuniform vec3 clusterTextureSize;\nuniform vec3 clusterBoundsMin;\nuniform vec3 clusterBoundsDelta;\nuniform vec3 clusterCellsDot;\nuniform vec3 clusterCellsMax;\nuniform vec2 shadowAtlasParams;\nstruct ClusterLightData {\n\tuint flags;\n\tvec3 halfWidth;\n\tbool isSpot;\n\tvec3 halfHeight;\n\tint lightIndex;\n\tvec3 position;\n\tuint shape;\n\tvec3 direction;\n\tbool falloffModeLinear;\n\tvec3 color;\n\tfloat shadowIntensity;\n\tvec3 omniAtlasViewport;\n\tfloat range;\n\tvec4 cookieChannelMask;\n\tfloat biasesData;\n\tuint colorBFlagsData;\n\tfloat shadowBias;\n\tfloat shadowNormalBias;\n\tfloat anglesData;\n\tfloat innerConeAngleCos;\n\tfloat outerConeAngleCos;\n\tfloat cookieIntensity;\n\tbool isDynamic;\n\tbool isLightmapped;\n};\nmat4 lightProjectionMatrix;\nvec4 sampleLightTextureF(const ClusterLightData clusterLightData, int index) {\n\treturn texelFetch(lightsTexture, ivec2(index, clusterLightData.lightIndex), 0);\n}\nvoid decodeClusterLightCore(inout ClusterLightData clusterLightData, float lightIndex) {\n\tclusterLightData.lightIndex = int(lightIndex);\n\tvec4 halfData = sampleLightTextureF(clusterLightData, {CLUSTER_TEXTURE_COLOR_ANGLES_BIAS});\n\tclusterLightData.anglesData = halfData.z;\n\tclusterLightData.biasesData = halfData.w;\n\tclusterLightData.colorBFlagsData = floatBitsToUint(halfData.y);\n\tvec2 colorRG = unpackHalf2x16(floatBitsToUint(halfData.x));\n\tvec2 colorB_flags = unpackHalf2x16(clusterLightData.colorBFlagsData);\n\tclusterLightData.color = vec3(colorRG, colorB_flags.x) * {LIGHT_COLOR_DIVIDER};\n\tvec4 lightPosRange = sampleLightTextureF(clusterLightData, {CLUSTER_TEXTURE_POSITION_RANGE});\n\tclusterLightData.position = lightPosRange.xyz;\n\tclusterLightData.range = lightPosRange.w;\n\tvec4 lightDir_Flags = sampleLightTextureF(clusterLightData, {CLUSTER_TEXTURE_DIRECTION_FLAGS});\n\tclusterLightData.direction = lightDir_Flags.xyz;\n\tclusterLightData.flags = floatBitsToUint(lightDir_Flags.w);\n\tclusterLightData.isSpot = (clusterLightData.flags & (1u << 30u)) != 0u;\n\tclusterLightData.shape = (clusterLightData.flags >> 28u) & 0x3u;\n\tclusterLightData.falloffModeLinear = (clusterLightData.flags & (1u << 27u)) == 0u;\n\tclusterLightData.shadowIntensity = float((clusterLightData.flags >> 0u) & 0xFFu) / 255.0;\n\tclusterLightData.cookieIntensity = float((clusterLightData.flags >> 8u) & 0xFFu) / 255.0;\n\tclusterLightData.isDynamic = (clusterLightData.flags & (1u << 22u)) != 0u;\n\tclusterLightData.isLightmapped = (clusterLightData.flags & (1u << 21u)) != 0u;\n}\nvoid decodeClusterLightSpot(inout ClusterLightData clusterLightData) {\n\tuint angleFlags = (clusterLightData.colorBFlagsData >> 16u) & 0xFFFFu;\n\tvec2 angleValues = unpackHalf2x16(floatBitsToUint(clusterLightData.anglesData));\n\tfloat innerVal = angleValues.x;\n\tfloat outerVal = angleValues.y;\n\tfloat innerIsVersine = float(angleFlags & 1u);\n\tfloat outerIsVersine = float((angleFlags >> 1u) & 1u);\n\tclusterLightData.innerConeAngleCos = mix(innerVal, 1.0 - innerVal, innerIsVersine);\n\tclusterLightData.outerConeAngleCos = mix(outerVal, 1.0 - outerVal, outerIsVersine);\n}\nvoid decodeClusterLightOmniAtlasViewport(inout ClusterLightData clusterLightData) {\n\tclusterLightData.omniAtlasViewport = sampleLightTextureF(clusterLightData, {CLUSTER_TEXTURE_PROJ_MAT_0}).xyz;\n}\nvoid decodeClusterLightAreaData(inout ClusterLightData clusterLightData) {\n\tclusterLightData.halfWidth = sampleLightTextureF(clusterLightData, {CLUSTER_TEXTURE_AREA_DATA_WIDTH}).xyz;\n\tclusterLightData.halfHeight = sampleLightTextureF(clusterLightData, {CLUSTER_TEXTURE_AREA_DATA_HEIGHT}).xyz;\n}\nvoid decodeClusterLightProjectionMatrixData(inout ClusterLightData clusterLightData) {\n\t\n\tvec4 m0 = sampleLightTextureF(clusterLightData, {CLUSTER_TEXTURE_PROJ_MAT_0});\n\tvec4 m1 = sampleLightTextureF(clusterLightData, {CLUSTER_TEXTURE_PROJ_MAT_1});\n\tvec4 m2 = sampleLightTextureF(clusterLightData, {CLUSTER_TEXTURE_PROJ_MAT_2});\n\tvec4 m3 = sampleLightTextureF(clusterLightData, {CLUSTER_TEXTURE_PROJ_MAT_3});\n\tlightProjectionMatrix = mat4(m0, m1, m2, m3);\n}\nvoid decodeClusterLightShadowData(inout ClusterLightData clusterLightData) {\n\t\n\tvec2 biases = unpackHalf2x16(floatBitsToUint(clusterLightData.biasesData));\n\tclusterLightData.shadowBias = biases.x;\n\tclusterLightData.shadowNormalBias = biases.y;\n}\nvoid decodeClusterLightCookieData(inout ClusterLightData clusterLightData) {\n\tuint cookieFlags = (clusterLightData.flags >> 23u) & 0x0Fu;\n\tclusterLightData.cookieChannelMask = vec4(uvec4(cookieFlags) & uvec4(1u, 2u, 4u, 8u));\n\tclusterLightData.cookieChannelMask = step(1.0, clusterLightData.cookieChannelMask);\n}\nvoid evaluateLight(\n\tClusterLightData light, \n\tvec3 worldNormal, \n\tvec3 viewDir, \n\tvec3 reflectionDir,\n#if defined(LIT_CLEARCOAT)\n\tvec3 clearcoatReflectionDir,\n#endif\n\tfloat gloss, \n\tvec3 specularity, \n\tvec3 geometricNormal, \n\tmat3 tbn, \n#if defined(LIT_IRIDESCENCE)\n\tvec3 iridescenceFresnel,\n#endif\n\tvec3 clearcoat_worldNormal,\n\tfloat clearcoat_gloss,\n\tfloat sheen_gloss,\n\tfloat iridescence_intensity\n) {\n\tvec3 cookieAttenuation = vec3(1.0);\n\tfloat diffuseAttenuation = 1.0;\n\tfloat falloffAttenuation = 1.0;\n\tvec3 lightDirW = evalOmniLight(light.position);\n\tvec3 lightDirNormW = normalize(lightDirW);\n\t#ifdef CLUSTER_AREALIGHTS\n\tif (light.shape != {LIGHTSHAPE_PUNCTUAL}) {\n\t\tdecodeClusterLightAreaData(light);\n\t\tif (light.shape == {LIGHTSHAPE_RECT}) {\n\t\t\tcalcRectLightValues(light.position, light.halfWidth, light.halfHeight);\n\t\t} else if (light.shape == {LIGHTSHAPE_DISK}) {\n\t\t\tcalcDiskLightValues(light.position, light.halfWidth, light.halfHeight);\n\t\t} else {\n\t\t\tcalcSphereLightValues(light.position, light.halfWidth, light.halfHeight);\n\t\t}\n\t\tfalloffAttenuation = getFalloffWindow(light.range, lightDirW);\n\t} else\n\t#endif\n\t{\n\t\tif (light.falloffModeLinear)\n\t\t\tfalloffAttenuation = getFalloffLinear(light.range, lightDirW);\n\t\telse\n\t\t\tfalloffAttenuation = getFalloffInvSquared(light.range, lightDirW);\n\t}\n\tif (falloffAttenuation > 0.00001) {\n\t\t#ifdef CLUSTER_AREALIGHTS\n\t\tif (light.shape != {LIGHTSHAPE_PUNCTUAL}) {\n\t\t\tif (light.shape == {LIGHTSHAPE_RECT}) {\n\t\t\t\tdiffuseAttenuation = getRectLightDiffuse(worldNormal, viewDir, lightDirW, lightDirNormW) * 16.0;\n\t\t\t} else if (light.shape == {LIGHTSHAPE_DISK}) {\n\t\t\t\tdiffuseAttenuation = getDiskLightDiffuse(worldNormal, viewDir, lightDirW, lightDirNormW) * 16.0;\n\t\t\t} else {\n\t\t\t\tdiffuseAttenuation = getSphereLightDiffuse(worldNormal, viewDir, lightDirW, lightDirNormW) * 16.0;\n\t\t\t}\n\t\t} else\n\t\t#endif\n\t\t{\n\t\t\tfalloffAttenuation *= getLightDiffuse(worldNormal, viewDir, lightDirNormW); \n\t\t}\n\t\tif (light.isSpot) {\n\t\t\tdecodeClusterLightSpot(light);\n\t\t\tfalloffAttenuation *= getSpotEffect(light.direction, light.innerConeAngleCos, light.outerConeAngleCos, lightDirNormW);\n\t\t}\n\t\t#if defined(CLUSTER_COOKIES) || defined(CLUSTER_SHADOWS)\n\t\tif (falloffAttenuation > 0.00001) {\n\t\t\tif (light.shadowIntensity > 0.0 || light.cookieIntensity > 0.0) {\n\t\t\t\tif (light.isSpot) {\n\t\t\t\t\tdecodeClusterLightProjectionMatrixData(light);\n\t\t\t\t} else {\n\t\t\t\t\tdecodeClusterLightOmniAtlasViewport(light);\n\t\t\t\t}\n\t\t\t\tfloat shadowTextureResolution = shadowAtlasParams.x;\n\t\t\t\tfloat shadowEdgePixels = shadowAtlasParams.y;\n\t\t\t\t#ifdef CLUSTER_COOKIES\n\t\t\t\tif (light.cookieIntensity > 0.0) {\n\t\t\t\t\tdecodeClusterLightCookieData(light);\n\t\t\t\t\tif (light.isSpot) {\n\t\t\t\t\t\tcookieAttenuation = getCookie2DClustered(TEXTURE_PASS(cookieAtlasTexture), lightProjectionMatrix, vPositionW, light.cookieIntensity, light.cookieChannelMask);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcookieAttenuation = getCookieCubeClustered(TEXTURE_PASS(cookieAtlasTexture), lightDirW, light.cookieIntensity, light.cookieChannelMask, shadowTextureResolution, shadowEdgePixels, light.omniAtlasViewport);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t#endif\n\t\t\t\t#ifdef CLUSTER_SHADOWS\n\t\t\t\tif (light.shadowIntensity > 0.0) {\n\t\t\t\t\tdecodeClusterLightShadowData(light);\n\t\t\t\t\tvec4 shadowParams = vec4(shadowTextureResolution, light.shadowNormalBias, light.shadowBias, 1.0 / light.range);\n\t\t\t\t\tif (light.isSpot) {\n\t\t\t\t\t\tvec3 shadowCoord = getShadowCoordPerspZbufferNormalOffset(lightProjectionMatrix, shadowParams, geometricNormal);\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if defined(CLUSTER_SHADOW_TYPE_PCF1)\n\t\t\t\t\t\t\tfloat shadow = getShadowSpotClusteredPCF1(SHADOWMAP_PASS(shadowAtlasTexture), shadowCoord, shadowParams);\n\t\t\t\t\t\t#elif defined(CLUSTER_SHADOW_TYPE_PCF3)\n\t\t\t\t\t\t\tfloat shadow = getShadowSpotClusteredPCF3(SHADOWMAP_PASS(shadowAtlasTexture), shadowCoord, shadowParams);\n\t\t\t\t\t\t#elif defined(CLUSTER_SHADOW_TYPE_PCF5)\n\t\t\t\t\t\t\tfloat shadow = getShadowSpotClusteredPCF5(SHADOWMAP_PASS(shadowAtlasTexture), shadowCoord, shadowParams);\n\t\t\t\t\t\t#elif defined(CLUSTER_SHADOW_TYPE_PCSS)\n\t\t\t\t\t\t\tfloat shadow = getShadowSpotClusteredPCSS(SHADOWMAP_PASS(shadowAtlasTexture), shadowCoord, shadowParams);\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\tfalloffAttenuation *= mix(1.0, shadow, light.shadowIntensity);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvec3 dir = normalOffsetPointShadow(shadowParams, light.position, lightDirW, lightDirNormW, geometricNormal);\n\t\t\t\t\t\t#if defined(CLUSTER_SHADOW_TYPE_PCF1)\n\t\t\t\t\t\t\tfloat shadow = getShadowOmniClusteredPCF1(SHADOWMAP_PASS(shadowAtlasTexture), shadowParams, light.omniAtlasViewport, shadowEdgePixels, dir);\n\t\t\t\t\t\t#elif defined(CLUSTER_SHADOW_TYPE_PCF3)\n\t\t\t\t\t\t\tfloat shadow = getShadowOmniClusteredPCF3(SHADOWMAP_PASS(shadowAtlasTexture), shadowParams, light.omniAtlasViewport, shadowEdgePixels, dir);\n\t\t\t\t\t\t#elif defined(CLUSTER_SHADOW_TYPE_PCF5)\n\t\t\t\t\t\t\tfloat shadow = getShadowOmniClusteredPCF5(SHADOWMAP_PASS(shadowAtlasTexture), shadowParams, light.omniAtlasViewport, shadowEdgePixels, dir);\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\tfalloffAttenuation *= mix(1.0, shadow, light.shadowIntensity);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t#endif\n\t\t\t}\n\t\t}\n\t\t#endif\n\t\t#ifdef CLUSTER_AREALIGHTS\n\t\tif (light.shape != {LIGHTSHAPE_PUNCTUAL}) {\n\t\t\t{\n\t\t\t\tvec3 areaDiffuse = (diffuseAttenuation * falloffAttenuation) * light.color * cookieAttenuation;\n\t\t\t\t#if defined(LIT_SPECULAR)\n\t\t\t\t\tareaDiffuse = mix(areaDiffuse, vec3(0), dLTCSpecFres);\n\t\t\t\t#endif\n\t\t\t\tdDiffuseLight += areaDiffuse;\n\t\t\t}\n\t\t\t#ifdef LIT_SPECULAR\n\t\t\t\tfloat areaLightSpecular;\n\t\t\t\tif (light.shape == {LIGHTSHAPE_RECT}) {\n\t\t\t\t\tareaLightSpecular = getRectLightSpecular(worldNormal, viewDir);\n\t\t\t\t} else if (light.shape == {LIGHTSHAPE_DISK}) {\n\t\t\t\t\tareaLightSpecular = getDiskLightSpecular(worldNormal, viewDir);\n\t\t\t\t} else {\n\t\t\t\t\tareaLightSpecular = getSphereLightSpecular(worldNormal, viewDir);\n\t\t\t\t}\n\t\t\t\tdSpecularLight += dLTCSpecFres * areaLightSpecular * falloffAttenuation * light.color * cookieAttenuation;\n\t\t\t\t#ifdef LIT_CLEARCOAT\n\t\t\t\t\tfloat areaLightSpecularCC;\n\t\t\t\t\tif (light.shape == {LIGHTSHAPE_RECT}) {\n\t\t\t\t\t\tareaLightSpecularCC = getRectLightSpecular(clearcoat_worldNormal, viewDir);\n\t\t\t\t\t} else if (light.shape == {LIGHTSHAPE_DISK}) {\n\t\t\t\t\t\tareaLightSpecularCC = getDiskLightSpecular(clearcoat_worldNormal, viewDir);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tareaLightSpecularCC = getSphereLightSpecular(clearcoat_worldNormal, viewDir);\n\t\t\t\t\t}\n\t\t\t\t\tccSpecularLight += ccLTCSpecFres * areaLightSpecularCC * falloffAttenuation * light.color  * cookieAttenuation;\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t} else\n\t\t#endif\n\t\t{\n\t\t\t{\n\t\t\t\tvec3 punctualDiffuse = falloffAttenuation * light.color * cookieAttenuation;\n\t\t\t\t#if defined(CLUSTER_AREALIGHTS)\n\t\t\t\t#if defined(LIT_SPECULAR)\n\t\t\t\t\tpunctualDiffuse = mix(punctualDiffuse, vec3(0), specularity);\n\t\t\t\t#endif\n\t\t\t\t#endif\n\t\t\t\tdDiffuseLight += punctualDiffuse;\n\t\t\t}\n\t \n\t\t\t#ifdef LIT_SPECULAR\n\t\t\t\tvec3 halfDir = normalize(-lightDirNormW + viewDir);\n\t\t\t\t\n\t\t\t\t#ifdef LIT_SPECULAR_FRESNEL\n\t\t\t\t\tdSpecularLight += \n\t\t\t\t\t\tgetLightSpecular(halfDir, reflectionDir, worldNormal, viewDir, lightDirNormW, gloss, tbn) * falloffAttenuation * light.color * cookieAttenuation * \n\t\t\t\t\t\tgetFresnel(\n\t\t\t\t\t\t\tdot(viewDir, halfDir), \n\t\t\t\t\t\t\tgloss, \n\t\t\t\t\t\t\tspecularity\n\t\t\t\t\t\t#if defined(LIT_IRIDESCENCE)\n\t\t\t\t\t\t\t, iridescenceFresnel,\n\t\t\t\t\t\t\tiridescence_intensity\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t);\n\t\t\t\t#else\n\t\t\t\t\tdSpecularLight += getLightSpecular(halfDir, reflectionDir, worldNormal, viewDir, lightDirNormW, gloss, tbn) * falloffAttenuation * light.color * cookieAttenuation * specularity;\n\t\t\t\t#endif\n\t\t\t\t#ifdef LIT_CLEARCOAT\n\t\t\t\t\t#ifdef LIT_SPECULAR_FRESNEL\n\t\t\t\t\t\tccSpecularLight += getLightSpecular(halfDir, clearcoatReflectionDir, clearcoat_worldNormal, viewDir, lightDirNormW, clearcoat_gloss, tbn) * falloffAttenuation * light.color * cookieAttenuation * getFresnelCC(dot(viewDir, halfDir));\n\t\t\t\t\t#else\n\t\t\t\t\t\tccSpecularLight += getLightSpecular(halfDir, clearcoatReflectionDir, clearcoat_worldNormal, viewDir, lightDirNormW, clearcoat_gloss, tbn) * falloffAttenuation * light.color * cookieAttenuation; \n\t\t\t\t\t#endif\n\t\t\t\t#endif\n\t\t\t\t#ifdef LIT_SHEEN\n\t\t\t\t\tsSpecularLight += getLightSpecularSheen(halfDir, worldNormal, viewDir, lightDirNormW, sheen_gloss) * falloffAttenuation * light.color * cookieAttenuation;\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t}\n\t}\n\tdAtten = falloffAttenuation;\n\tdLightDirNormW = lightDirNormW;\n}\nvoid evaluateClusterLight(\n\tfloat lightIndex, \n\tvec3 worldNormal, \n\tvec3 viewDir, \n\tvec3 reflectionDir, \n#if defined(LIT_CLEARCOAT)\n\tvec3 clearcoatReflectionDir,\n#endif\n\tfloat gloss, \n\tvec3 specularity, \n\tvec3 geometricNormal, \n\tmat3 tbn, \n#if defined(LIT_IRIDESCENCE)\n\tvec3 iridescenceFresnel,\n#endif\n\tvec3 clearcoat_worldNormal,\n\tfloat clearcoat_gloss,\n\tfloat sheen_gloss,\n\tfloat iridescence_intensity\n) {\n\tClusterLightData clusterLightData;\n\tdecodeClusterLightCore(clusterLightData, lightIndex);\n\t#ifdef CLUSTER_MESH_DYNAMIC_LIGHTS\n\t\tbool acceptLightMask = clusterLightData.isDynamic;\n\t#else\n\t\tbool acceptLightMask = clusterLightData.isLightmapped;\n\t#endif\n\tif (acceptLightMask)\n\t\tevaluateLight(\n\t\t\tclusterLightData, \n\t\t\tworldNormal, \n\t\t\tviewDir, \n\t\t\treflectionDir, \n#if defined(LIT_CLEARCOAT)\n\t\t\tclearcoatReflectionDir, \n#endif\n\t\t\tgloss, \n\t\t\tspecularity, \n\t\t\tgeometricNormal, \n\t\t\ttbn, \n#if defined(LIT_IRIDESCENCE)\n\t\t\tiridescenceFresnel,\n#endif\n\t\t\tclearcoat_worldNormal,\n\t\t\tclearcoat_gloss,\n\t\t\tsheen_gloss,\n\t\t\tiridescence_intensity\n\t\t);\n}\nvoid addClusteredLights(\n\tvec3 worldNormal, \n\tvec3 viewDir, \n\tvec3 reflectionDir, \n#if defined(LIT_CLEARCOAT)\n\tvec3 clearcoatReflectionDir,\n#endif\n\tfloat gloss, \n\tvec3 specularity, \n\tvec3 geometricNormal, \n\tmat3 tbn, \n#if defined(LIT_IRIDESCENCE)\n\tvec3 iridescenceFresnel,\n#endif\n\tvec3 clearcoat_worldNormal,\n\tfloat clearcoat_gloss,\n\tfloat sheen_gloss,\n\tfloat iridescence_intensity\n) {\n\tif (clusterSkip > 0.5)\n\t\treturn;\n\tvec3 cellCoords = floor((vPositionW - clusterBoundsMin) * clusterCellsCountByBoundsSize);\n\tif (!(any(lessThan(cellCoords, vec3(0.0))) || any(greaterThanEqual(cellCoords, clusterCellsMax)))) {\n\t\tfloat cellIndex = dot(clusterCellsDot, cellCoords);\n\t\tfloat clusterV = floor(cellIndex * clusterTextureSize.y);\n\t\tfloat clusterU = cellIndex - (clusterV * clusterTextureSize.x);\n\t\tfor (int lightCellIndex = 0; lightCellIndex < clusterMaxCells; lightCellIndex++) {\n\t\t\tfloat lightIndex = texelFetch(clusterWorldTexture, ivec2(int(clusterU) + lightCellIndex, clusterV), 0).x;\n\t\t\tif (lightIndex <= 0.0)\n\t\t\t\tbreak;\n\t\t\tevaluateClusterLight(\n\t\t\t\tlightIndex * 255.0, \n\t\t\t\tworldNormal, \n\t\t\t\tviewDir, \n\t\t\t\treflectionDir,\n#if defined(LIT_CLEARCOAT)\n\t\t\t\tclearcoatReflectionDir,\n#endif\n\t\t\t\tgloss, \n\t\t\t\tspecularity, \n\t\t\t\tgeometricNormal, \n\t\t\t\ttbn, \n#if defined(LIT_IRIDESCENCE)\n\t\t\t\tiridescenceFresnel,\n#endif\n\t\t\t\tclearcoat_worldNormal,\n\t\t\t\tclearcoat_gloss,\n\t\t\t\tsheen_gloss,\n\t\t\t\tiridescence_intensity\n\t\t\t); \n\t\t}\n\t}\n}\n`;\n\nvar combinePS$1 = `\nvec3 combineColor(vec3 albedo, vec3 sheenSpecularity, float clearcoatSpecularity) {\n\tvec3 ret = vec3(0);\n#ifdef LIT_OLD_AMBIENT\n\tret += (dDiffuseLight - light_globalAmbient) * albedo + material_ambient * light_globalAmbient;\n#else\n\tret += albedo * dDiffuseLight;\n#endif\n#ifdef LIT_SPECULAR\n\tret += dSpecularLight;\n#endif\n#ifdef LIT_REFLECTIONS\n\tret += dReflection.rgb * dReflection.a;\n#endif\n#ifdef LIT_SHEEN\n\tfloat sheenScaling = 1.0 - max(max(sheenSpecularity.r, sheenSpecularity.g), sheenSpecularity.b) * 0.157;\n\tret = ret * sheenScaling + (sSpecularLight + sReflection.rgb) * sheenSpecularity;\n#endif\n#ifdef LIT_CLEARCOAT\n\tfloat clearCoatScaling = 1.0 - ccFresnel * clearcoatSpecularity;\n\tret = ret * clearCoatScaling + (ccSpecularLight + ccReflection) * clearcoatSpecularity;\n#endif\n\treturn ret;\n}\n`;\n\nvar cookieBlit2DPS$1 = `\n\tvarying vec2 uv0;\n\tuniform sampler2D blitTexture;\n\tvoid main(void) {\n\t\tgl_FragColor = texture2D(blitTexture, uv0);\n\t}\n`;\n\nvar cookieBlitCubePS$1 = `\n\tvarying vec2 uv0;\n\tuniform samplerCube blitTexture;\n\tuniform mat4 invViewProj;\n\tvoid main(void) {\n\t\tvec4 projPos = vec4(uv0 * 2.0 - 1.0, 0.5, 1.0);\n\t\tvec4 worldPos = invViewProj * projPos;\n\t\tgl_FragColor = textureCube(blitTexture, worldPos.xyz);\n\t}\n`;\n\nvar cookieBlitVS$1 = `\n\tattribute vec2 vertex_position;\n\tvarying vec2 uv0;\n\tvoid main(void) {\n\t\tgl_Position = vec4(vertex_position, 0.5, 1.0);\n\t\tuv0 = vertex_position.xy * 0.5 + 0.5;\n\t\t#ifndef WEBGPU\n\t\t\tuv0.y = 1.0 - uv0.y;\n\t\t#endif\n\t}\n`;\n\nvar cookiePS = `\nvec4 getCookie2D(sampler2D tex, mat4 transform, float intensity) {\n\tvec4 projPos = transform * vec4(vPositionW, 1.0);\n\tprojPos.xy /= projPos.w;\n\treturn mix(vec4(1.0), texture2D(tex, projPos.xy), intensity);\n}\nvec4 getCookie2DClip(sampler2D tex, mat4 transform, float intensity) {\n\tvec4 projPos = transform * vec4(vPositionW, 1.0);\n\tprojPos.xy /= projPos.w;\n\tif (projPos.x < 0.0 || projPos.x > 1.0 || projPos.y < 0.0 || projPos.y > 1.0 || projPos.z < 0.0) return vec4(0.0);\n\treturn mix(vec4(1.0), texture2D(tex, projPos.xy), intensity);\n}\nvec4 getCookie2DXform(sampler2D tex, mat4 transform, float intensity, vec4 cookieMatrix, vec2 cookieOffset) {\n\tvec4 projPos = transform * vec4(vPositionW, 1.0);\n\tprojPos.xy /= projPos.w;\n\tprojPos.xy += cookieOffset;\n\tvec2 uv = mat2(cookieMatrix) * (projPos.xy-vec2(0.5)) + vec2(0.5);\n\treturn mix(vec4(1.0), texture2D(tex, uv), intensity);\n}\nvec4 getCookie2DClipXform(sampler2D tex, mat4 transform, float intensity, vec4 cookieMatrix, vec2 cookieOffset) {\n\tvec4 projPos = transform * vec4(vPositionW, 1.0);\n\tprojPos.xy /= projPos.w;\n\tprojPos.xy += cookieOffset;\n\tif (projPos.x < 0.0 || projPos.x > 1.0 || projPos.y < 0.0 || projPos.y > 1.0 || projPos.z < 0.0) return vec4(0.0);\n\tvec2 uv = mat2(cookieMatrix) * (projPos.xy-vec2(0.5)) + vec2(0.5);\n\treturn mix(vec4(1.0), texture2D(tex, uv), intensity);\n}\nvec4 getCookieCube(samplerCube tex, mat4 transform, float intensity) {\n\treturn mix(vec4(1.0), textureCube(tex, dLightDirNormW * mat3(transform)), intensity);\n}\n`;\n\nvar cubeMapProjectPS$1 = `\n#if LIT_CUBEMAP_PROJECTION == BOX\n\tuniform vec3 envBoxMin;\n\tuniform vec3 envBoxMax;\n#endif\nvec3 cubeMapProject(vec3 nrdir) {\n\t#if LIT_CUBEMAP_PROJECTION == NONE\n\t\treturn cubeMapRotate(nrdir);\n\t#endif\n\t#if LIT_CUBEMAP_PROJECTION == BOX\n\t\tnrdir = cubeMapRotate(nrdir);\n\t\tvec3 rbmax = (envBoxMax - vPositionW) / nrdir;\n\t\tvec3 rbmin = (envBoxMin - vPositionW) / nrdir;\n\t\tvec3 rbminmax = mix(rbmin, rbmax, vec3(greaterThan(nrdir, vec3(0.0))));\n\t\tfloat fa = min(min(rbminmax.x, rbminmax.y), rbminmax.z);\n\t\tvec3 posonbox = vPositionW + nrdir * fa;\n\t\tvec3 envBoxPos = (envBoxMin + envBoxMax) * 0.5;\n\t\treturn normalize(posonbox - envBoxPos);\n\t#endif\n}\n`;\n\nvar cubeMapRotatePS$1 = `\n#ifdef CUBEMAP_ROTATION\nuniform mat3 cubeMapRotationMatrix;\n#endif\nvec3 cubeMapRotate(vec3 refDir) {\n#ifdef CUBEMAP_ROTATION\n\treturn refDir * cubeMapRotationMatrix;\n#else\n\treturn refDir;\n#endif\n}\n`;\n\nvar debugOutputPS$1 = `\n#ifdef DEBUG_ALBEDO_PASS\ngl_FragColor = vec4(gammaCorrectOutput(dAlbedo), 1.0);\n#endif\n#ifdef DEBUG_UV0_PASS\ngl_FragColor = vec4(litArgs_albedo , 1.0);\n#endif\n#ifdef DEBUG_WORLD_NORMAL_PASS\ngl_FragColor = vec4(litArgs_worldNormal * 0.5 + 0.5, 1.0);\n#endif\n#ifdef DEBUG_OPACITY_PASS\ngl_FragColor = vec4(vec3(litArgs_opacity) , 1.0);\n#endif\n#ifdef DEBUG_SPECULARITY_PASS\ngl_FragColor = vec4(litArgs_specularity, 1.0);\n#endif\n#ifdef DEBUG_GLOSS_PASS\ngl_FragColor = vec4(vec3(litArgs_gloss) , 1.0);\n#endif\n#ifdef DEBUG_METALNESS_PASS\ngl_FragColor = vec4(vec3(litArgs_metalness) , 1.0);\n#endif\n#ifdef DEBUG_AO_PASS\ngl_FragColor = vec4(vec3(litArgs_ao) , 1.0);\n#endif\n#ifdef DEBUG_EMISSION_PASS\ngl_FragColor = vec4(gammaCorrectOutput(litArgs_emission), 1.0);\n#endif\n`;\n\nvar debugProcessFrontendPS$1 = `\n#ifdef DEBUG_LIGHTING_PASS\nlitArgs_albedo = vec3(0.5);\n#endif\n#ifdef DEBUG_UV0_PASS\n#ifdef VARYING_VUV0\nlitArgs_albedo = vec3(vUv0, 0);\n#else\nlitArgs_albedo = vec3(0);\n#endif\n#endif\n`;\n\nvar decodePS$1 = `\n#ifndef _DECODE_INCLUDED_\n#define _DECODE_INCLUDED_\nvec3 decodeLinear(vec4 raw) {\n\treturn raw.rgb;\n}\nfloat decodeGamma(float raw) {\n\treturn pow(raw, 2.2);\n}\nvec3 decodeGamma(vec3 raw) {\n\treturn pow(raw, vec3(2.2));\n}\nvec3 decodeGamma(vec4 raw) {\n\treturn pow(raw.xyz, vec3(2.2));\n}\nvec3 decodeRGBM(vec4 raw) {\n\tvec3 color = (8.0 * raw.a) * raw.rgb;\n\treturn color * color;\n}\nvec3 decodeRGBP(vec4 raw) {\n\tvec3 color = raw.rgb * (-raw.a * 7.0 + 8.0);\n\treturn color * color;\n}\nvec3 decodeRGBE(vec4 raw) {\n\tif (raw.a == 0.0) {\n\t\treturn vec3(0.0, 0.0, 0.0);\n\t} else {\n\t\treturn raw.xyz * pow(2.0, raw.w * 255.0 - 128.0);\n\t}\n}\nvec4 passThrough(vec4 raw) {\n\treturn raw;\n}\nvec3 unpackNormalXYZ(vec4 nmap) {\n\treturn nmap.xyz * 2.0 - 1.0;\n}\nvec3 unpackNormalXY(vec4 nmap) {\n\tvec3 normal;\n\tnormal.xy = nmap.wy * 2.0 - 1.0;\n\tnormal.z = sqrt(1.0 - clamp(dot(normal.xy, normal.xy), 0.0, 1.0));\n\treturn normal;\n}\n#endif\n`;\n\nvar detailModesPS$1 = `\n#ifndef _DETAILMODES_INCLUDED_\n#define _DETAILMODES_INCLUDED_\nvec3 detailMode_mul(vec3 c1, vec3 c2) {\n\treturn c1 * c2;\n}\nvec3 detailMode_add(vec3 c1, vec3 c2) {\n\treturn c1 + c2;\n}\nvec3 detailMode_screen(vec3 c1, vec3 c2) {\n\treturn 1.0 - (1.0 - c1)*(1.0 - c2);\n}\nvec3 detailMode_overlay(vec3 c1, vec3 c2) {\n\treturn mix(1.0 - 2.0 * (1.0 - c1)*(1.0 - c2), 2.0 * c1 * c2, step(c1, vec3(0.5)));\n}\nvec3 detailMode_min(vec3 c1, vec3 c2) {\n\treturn min(c1, c2);\n}\nvec3 detailMode_max(vec3 c1, vec3 c2) {\n\treturn max(c1, c2);\n}\n#endif\n`;\n\nvar diffusePS$1 = `\nuniform vec3 material_diffuse;\n#ifdef STD_DIFFUSEDETAIL_TEXTURE\n\t#include \"detailModesPS\"\n#endif\nvoid getAlbedo() {\n\tdAlbedo = material_diffuse.rgb;\n\t#ifdef STD_DIFFUSE_TEXTURE\n\t\tvec3 albedoTexture = {STD_DIFFUSE_TEXTURE_DECODE}(texture2DBias({STD_DIFFUSE_TEXTURE_NAME}, {STD_DIFFUSE_TEXTURE_UV}, textureBias)).{STD_DIFFUSE_TEXTURE_CHANNEL};\n\t\t#ifdef STD_DIFFUSEDETAIL_TEXTURE\n\t\t\tvec3 albedoDetail = {STD_DIFFUSEDETAIL_TEXTURE_DECODE}(texture2DBias({STD_DIFFUSEDETAIL_TEXTURE_NAME}, {STD_DIFFUSEDETAIL_TEXTURE_UV}, textureBias)).{STD_DIFFUSEDETAIL_TEXTURE_CHANNEL};\n\t\t\talbedoTexture = detailMode_{STD_DIFFUSEDETAIL_DETAILMODE}(albedoTexture, albedoDetail);\n\t\t#endif\n\t\tdAlbedo *= albedoTexture;\n\t#endif\n\t#ifdef STD_DIFFUSE_VERTEX\n\t\tdAlbedo *= gammaCorrectInput(saturate(vVertexColor.{STD_DIFFUSE_VERTEX_CHANNEL}));\n\t#endif\n}\n`;\n\nvar emissivePS$1 = `\nuniform vec3 material_emissive;\nuniform float material_emissiveIntensity;\nvoid getEmission() {\n\tdEmission = material_emissive * material_emissiveIntensity;\n\t#ifdef STD_EMISSIVE_TEXTURE\n\tdEmission *= {STD_EMISSIVE_TEXTURE_DECODE}(texture2DBias({STD_EMISSIVE_TEXTURE_NAME}, {STD_EMISSIVE_TEXTURE_UV}, textureBias)).{STD_EMISSIVE_TEXTURE_CHANNEL};\n\t#endif\n\t#ifdef STD_EMISSIVE_VERTEX\n\tdEmission *= gammaCorrectInput(saturate(vVertexColor.{STD_EMISSIVE_VERTEX_CHANNEL}));\n\t#endif\n}\n`;\n\nvar encodePS$1 = `\nvec4 encodeLinear(vec3 source) {\n\treturn vec4(source, 1.0);\n}\nvec4 encodeGamma(vec3 source) {\n\treturn vec4(pow(source + 0.0000001, vec3(1.0 / 2.2)), 1.0);\n}\nvec4 encodeRGBM(vec3 source) {\n\tvec4 result;\n\tresult.rgb = pow(source.rgb, vec3(0.5));\n\tresult.rgb *= 1.0 / 8.0;\n\tresult.a = saturate( max( max( result.r, result.g ), max( result.b, 1.0 / 255.0 ) ) );\n\tresult.a = ceil(result.a * 255.0) / 255.0;\n\tresult.rgb /= result.a;\n\treturn result;\n}\nvec4 encodeRGBP(vec3 source) {\n\tvec3 gamma = pow(source, vec3(0.5));\n\tfloat maxVal = min(8.0, max(1.0, max(gamma.x, max(gamma.y, gamma.z))));\n\tfloat v = 1.0 - ((maxVal - 1.0) / 7.0);\n\tv = ceil(v * 255.0) / 255.0;\n\treturn vec4(gamma / (-v * 7.0 + 8.0), v);\t\n}\nvec4 encodeRGBE(vec3 source) {\n\tfloat maxVal = max(source.x, max(source.y, source.z));\n\tif (maxVal < 1e-32) {\n\t\treturn vec4(0, 0, 0, 0);\n\t} else {\n\t\tfloat e = ceil(log2(maxVal));\n\t\treturn vec4(source / pow(2.0, e), (e + 128.0) / 255.0);\n\t}\n}\n`;\n\nvar endPS$1 = `\n\tgl_FragColor.rgb = combineColor(litArgs_albedo, litArgs_sheen_specularity, litArgs_clearcoat_specularity);\n\tgl_FragColor.rgb += litArgs_emission;\n\tgl_FragColor.rgb = addFog(gl_FragColor.rgb);\n\tgl_FragColor.rgb = toneMap(gl_FragColor.rgb);\n\tgl_FragColor.rgb = gammaCorrectOutput(gl_FragColor.rgb);\n`;\n\nvar envAtlasPS$1 = `\n#ifndef _ENVATLAS_INCLUDED_\n#define _ENVATLAS_INCLUDED_\nconst float atlasSize = 512.0;\nconst float seamSize = 1.0 / atlasSize;\nvec2 mapUv(vec2 uv, vec4 rect) {\n\treturn vec2(mix(rect.x + seamSize, rect.x + rect.z - seamSize, uv.x),\n\t\t\t\tmix(rect.y + seamSize, rect.y + rect.w - seamSize, uv.y));\n}\nvec2 mapRoughnessUv(vec2 uv, float level) {\n\tfloat t = 1.0 / exp2(level);\n\treturn mapUv(uv, vec4(0, 1.0 - t, t, t * 0.5));\n}\nvec2 mapShinyUv(vec2 uv, float level) {\n\tfloat t = 1.0 / exp2(level);\n\treturn mapUv(uv, vec4(1.0 - t, 1.0 - t, t, t * 0.5));\n}\n#endif\n`;\n\nvar envProcPS$1 = `\n#ifdef LIT_SKYBOX_INTENSITY\n\tuniform float skyboxIntensity;\n#endif\nvec3 processEnvironment(vec3 color) {\n\t#ifdef LIT_SKYBOX_INTENSITY\n\t\treturn color * skyboxIntensity;\n\t#else\n\t\treturn color;\n\t#endif\n}\n`;\n\nvar falloffInvSquaredPS$1 = `\nfloat getFalloffWindow(float lightRadius, vec3 lightDir) {\n\tfloat sqrDist = dot(lightDir, lightDir);\n\tfloat invRadius = 1.0 / lightRadius;\n\treturn square(saturate(1.0 - square(sqrDist * square(invRadius))));\n}\nfloat getFalloffInvSquared(float lightRadius, vec3 lightDir) {\n\tfloat sqrDist = dot(lightDir, lightDir);\n\tfloat falloff = 1.0 / (sqrDist + 1.0);\n\tfloat invRadius = 1.0 / lightRadius;\n\tfalloff *= 16.0;\n\tfalloff *= square(saturate(1.0 - square(sqrDist * square(invRadius))));\n\treturn falloff;\n}\n`;\n\nvar falloffLinearPS$1 = `\nfloat getFalloffLinear(float lightRadius, vec3 lightDir) {\n\tfloat d = length(lightDir);\n\treturn max(((lightRadius - d) / lightRadius), 0.0);\n}\n`;\n\nvar floatAsUintPS$1 = `\n#ifndef FLOAT_AS_UINT\n#define FLOAT_AS_UINT\nvec4 float2uint(float value) {\n\tuint intBits = floatBitsToUint(value);\n\treturn vec4(\n\t\tfloat((intBits >> 24u) & 0xFFu) / 255.0,\n\t\tfloat((intBits >> 16u) & 0xFFu) / 255.0,\n\t\tfloat((intBits >> 8u) & 0xFFu) / 255.0,\n\t\tfloat(intBits & 0xFFu) / 255.0\n\t);\n}\nfloat uint2float(vec4 value) {\n\tuint intBits = \n\t\t(uint(value.r * 255.0) << 24u) |\n\t\t(uint(value.g * 255.0) << 16u) |\n\t\t(uint(value.b * 255.0) << 8u) |\n\t\tuint(value.a * 255.0);\n\treturn uintBitsToFloat(intBits);\n}\nvec4 float2vec4(float value) {\n\t#if defined(CAPS_TEXTURE_FLOAT_RENDERABLE)\n\t\treturn vec4(value, 1.0, 1.0, 1.0);\n\t#else\n\t\treturn float2uint(value);\n\t#endif\n}\n#endif\n`;\n\nvar fogPS$1 = `\nfloat dBlendModeFogFactor = 1.0;\n#if (FOG != NONE)\n\tuniform vec3 fog_color;\n\t#if (FOG == LINEAR)\n\t\tuniform float fog_start;\n\t\tuniform float fog_end;\n\t#else\n\t\tuniform float fog_density;\n\t#endif\n#endif\nfloat getFogFactor() {\n\tfloat depth = gl_FragCoord.z / gl_FragCoord.w;\n\tfloat fogFactor = 0.0;\n\t#if (FOG == LINEAR)\n\t\tfogFactor = (fog_end - depth) / (fog_end - fog_start);\n\t#elif (FOG == EXP)\n\t\tfogFactor = exp(-depth * fog_density);\n\t#elif (FOG == EXP2)\n\t\tfogFactor = exp(-depth * depth * fog_density * fog_density);\n\t#endif\n\treturn clamp(fogFactor, 0.0, 1.0);\n}\nvec3 addFog(vec3 color) {\n\t#if (FOG != NONE)\n\t\treturn mix(fog_color * dBlendModeFogFactor, color, getFogFactor());\n\t#endif\n\treturn color;\n}\n`;\n\nvar fresnelSchlickPS$1 = `\nvec3 getFresnel(\n\t\tfloat cosTheta, \n\t\tfloat gloss, \n\t\tvec3 specularity\n#if defined(LIT_IRIDESCENCE)\n\t\t, vec3 iridescenceFresnel, \n\t\tfloat iridescenceIntensity\n#endif\n\t) {\n\tfloat fresnel = pow(1.0 - saturate(cosTheta), 5.0);\n\tfloat glossSq = gloss * gloss;\n\tvec3 ret = specularity + (max(vec3(glossSq), specularity) - specularity) * fresnel;\n#if defined(LIT_IRIDESCENCE)\n\treturn mix(ret, iridescenceFresnel, iridescenceIntensity);\n#else\n\treturn ret;\n#endif\t\n}\nfloat getFresnelCC(float cosTheta) {\n\tfloat fresnel = pow(1.0 - saturate(cosTheta), 5.0);\n\treturn 0.04 + (1.0 - 0.04) * fresnel;\n}\n`;\n\nvar fullscreenQuadVS$1 = `\nattribute vec2 vertex_position;\nvarying vec2 vUv0;\nvoid main(void)\n{\n\tgl_Position = vec4(vertex_position, 0.5, 1.0);\n\tvUv0 = vertex_position.xy * 0.5 + 0.5;\n}\n`;\n\nvar gammaPS$1 = `\n#include \"decodePS\"\n#if (GAMMA == SRGB)\n\tfloat gammaCorrectInput(float color) {\n\t\treturn decodeGamma(color);\n\t}\n\tvec3 gammaCorrectInput(vec3 color) {\n\t\treturn decodeGamma(color);\n\t}\n\tvec4 gammaCorrectInput(vec4 color) {\n\t\treturn vec4(decodeGamma(color.xyz), color.w);\n\t}\n\tvec3 gammaCorrectOutput(vec3 color) {\n\t\treturn pow(color + 0.0000001, vec3(1.0 / 2.2));\n\t}\n#else\n\tfloat gammaCorrectInput(float color) {\n\t\treturn color;\n\t}\n\tvec3 gammaCorrectInput(vec3 color) {\n\t\treturn color;\n\t}\n\tvec4 gammaCorrectInput(vec4 color) {\n\t\treturn color;\n\t}\n\tvec3 gammaCorrectOutput(vec3 color) {\n\t\treturn color;\n\t}\n#endif\n`;\n\nvar glossPS$1 = `\n#ifdef STD_GLOSS_CONSTANT\nuniform float material_gloss;\n#endif\nvoid getGlossiness() {\n\tdGlossiness = 1.0;\n\t#ifdef STD_GLOSS_CONSTANT\n\tdGlossiness *= material_gloss;\n\t#endif\n\t#ifdef STD_GLOSS_TEXTURE\n\tdGlossiness *= texture2DBias({STD_GLOSS_TEXTURE_NAME}, {STD_GLOSS_TEXTURE_UV}, textureBias).{STD_GLOSS_TEXTURE_CHANNEL};\n\t#endif\n\t#ifdef STD_GLOSS_VERTEX\n\tdGlossiness *= saturate(vVertexColor.{STD_GLOSS_VERTEX_CHANNEL});\n\t#endif\n\t#ifdef STD_GLOSS_INVERT\n\tdGlossiness = 1.0 - dGlossiness;\n\t#endif\n\tdGlossiness += 0.0000001;\n}\n`;\n\nvar quadVS$1 = `\n\tattribute vec2 aPosition;\n\tvarying vec2 uv0;\n\tvoid main(void)\n\t{\n\t\tgl_Position = vec4(aPosition, 0.0, 1.0);\n\t\tuv0 = getImageEffectUV((aPosition.xy + 1.0) * 0.5);\n\t}\n`;\n\nvar immediateLinePS$1 = `\n\t\t#include \"gammaPS\"\n\t\tvarying vec4 color;\n\t\tvoid main(void) {\n\t\t\tgl_FragColor = vec4(gammaCorrectOutput(decodeGamma(color.rgb)), color.a);\n\t\t}\n`;\n\nvar immediateLineVS$1 = `\n\tattribute vec4 vertex_position;\n\tattribute vec4 vertex_color;\n\tuniform mat4 matrix_model;\n\tuniform mat4 matrix_viewProjection;\n\tvarying vec4 color;\n\tvoid main(void) {\n\t\tcolor = vertex_color;\n\t\tgl_Position = matrix_viewProjection * matrix_model * vertex_position;\n\t}\n`;\n\nvar iridescenceDiffractionPS$1 = `\nuniform float material_iridescenceRefractionIndex;\nfloat iridescence_iorToFresnel(float transmittedIor, float incidentIor) {\n\treturn pow((transmittedIor - incidentIor) / (transmittedIor + incidentIor), 2.0);\n}\nvec3 iridescence_iorToFresnel(vec3 transmittedIor, float incidentIor) {\n\treturn pow((transmittedIor - vec3(incidentIor)) / (transmittedIor + vec3(incidentIor)), vec3(2.0));\n}\nvec3 iridescence_fresnelToIor(vec3 f0) {\n\tvec3 sqrtF0 = sqrt(f0);\n\treturn (vec3(1.0) + sqrtF0) / (vec3(1.0) - sqrtF0);\n}\nvec3 iridescence_sensitivity(float opd, vec3 shift) {\n\tfloat PI = 3.141592653589793;\n\tfloat phase = 2.0 * PI * opd * 1.0e-9;\n\tconst vec3 val = vec3(5.4856e-13, 4.4201e-13, 5.2481e-13);\n\tconst vec3 pos = vec3(1.6810e+06, 1.7953e+06, 2.2084e+06);\n\tconst vec3 var = vec3(4.3278e+09, 9.3046e+09, 6.6121e+09);\n\tvec3 xyz = val * sqrt(2.0 * PI * var) * cos(pos * phase + shift) * exp(-pow(phase, 2.0) * var);\n\txyz.x += 9.7470e-14 * sqrt(2.0 * PI * 4.5282e+09) * cos(2.2399e+06 * phase + shift[0]) * exp(-4.5282e+09 * pow(phase, 2.0));\n\txyz /= vec3(1.0685e-07);\n\tconst mat3 XYZ_TO_REC709 = mat3(\n\t\t3.2404542, -0.9692660,  0.0556434,\n\t   -1.5371385,  1.8760108, -0.2040259,\n\t   -0.4985314,  0.0415560,  1.0572252\n\t);\n\treturn XYZ_TO_REC709 * xyz;\n}\nfloat iridescence_fresnel(float cosTheta, float f0) {\n\tfloat x = clamp(1.0 - cosTheta, 0.0, 1.0);\n\tfloat x2 = x * x;\n\tfloat x5 = x * x2 * x2;\n\treturn f0 + (1.0 - f0) * x5;\n} \nvec3 iridescence_fresnel(float cosTheta, vec3 f0) {\n\tfloat x = clamp(1.0 - cosTheta, 0.0, 1.0);\n\tfloat x2 = x * x;\n\tfloat x5 = x * x2 * x2; \n\treturn f0 + (vec3(1.0) - f0) * x5;\n}\nvec3 calcIridescence(float outsideIor, float cosTheta, vec3 base_f0, float iridescenceThickness) {\n\tfloat PI = 3.141592653589793;\n\tfloat iridescenceIor = mix(outsideIor, material_iridescenceRefractionIndex, smoothstep(0.0, 0.03, iridescenceThickness));\n\tfloat sinTheta2Sq = pow(outsideIor / iridescenceIor, 2.0) * (1.0 - pow(cosTheta, 2.0));\n\tfloat cosTheta2Sq = 1.0 - sinTheta2Sq;\n\tif (cosTheta2Sq < 0.0) {\n\t\treturn vec3(1.0);\n\t}\n\tfloat cosTheta2 = sqrt(cosTheta2Sq);\n\tfloat r0 = iridescence_iorToFresnel(iridescenceIor, outsideIor);\n\tfloat r12 = iridescence_fresnel(cosTheta, r0);\n\tfloat r21 = r12;\n\tfloat t121 = 1.0 - r12;\n\tfloat phi12 = iridescenceIor < outsideIor ? PI : 0.0;\n\tfloat phi21 = PI - phi12;\n\tvec3 baseIor = iridescence_fresnelToIor(base_f0 + vec3(0.0001));\n\tvec3 r1 = iridescence_iorToFresnel(baseIor, iridescenceIor);\n\tvec3 r23 = iridescence_fresnel(cosTheta2, r1);\n\tvec3 phi23 = vec3(0.0);\n\tif (baseIor[0] < iridescenceIor) phi23[0] = PI;\n\tif (baseIor[1] < iridescenceIor) phi23[1] = PI;\n\tif (baseIor[2] < iridescenceIor) phi23[2] = PI;\n\tfloat opd = 2.0 * iridescenceIor * iridescenceThickness * cosTheta2;\n\tvec3 phi = vec3(phi21) + phi23; \n\tvec3 r123Sq = clamp(r12 * r23, 1e-5, 0.9999);\n\tvec3 r123 = sqrt(r123Sq);\n\tvec3 rs = pow(t121, 2.0) * r23 / (1.0 - r123Sq);\n\tvec3 c0 = r12 + rs;\n\tvec3 i = c0;\n\tvec3 cm = rs - t121;\n\tfor (int m = 1; m <= 2; m++) {\n\t\tcm *= r123;\n\t\tvec3 sm = 2.0 * iridescence_sensitivity(float(m) * opd, float(m) * phi);\n\t\ti += cm * sm;\n\t}\n\treturn max(i, vec3(0.0));\n}\nvec3 getIridescence(float cosTheta, vec3 specularity, float iridescenceThickness) {\n\treturn calcIridescence(1.0, cosTheta, specularity, iridescenceThickness);\n}\n`;\n\nvar iridescencePS$1 = `\n#ifdef STD_IRIDESCENCE_CONSTANT\nuniform float material_iridescence;\n#endif\nvoid getIridescence() {\n\tfloat iridescence = 1.0;\n\t#ifdef STD_IRIDESCENCE_CONSTANT\n\tiridescence *= material_iridescence;\n\t#endif\n\t#ifdef STD_IRIDESCENCE_TEXTURE\n\tiridescence *= texture2DBias({STD_IRIDESCENCE_TEXTURE_NAME}, {STD_IRIDESCENCE_TEXTURE_UV}, textureBias).{STD_IRIDESCENCE_TEXTURE_CHANNEL};\n\t#endif\n\tdIridescence = iridescence; \n}\n`;\n\nvar iridescenceThicknessPS$1 = `\nuniform float material_iridescenceThicknessMax;\n#ifdef STD_IRIDESCENCETHICKNESS_TEXTURE\nuniform float material_iridescenceThicknessMin;\n#endif\nvoid getIridescenceThickness() {\n\t#ifdef STD_IRIDESCENCETHICKNESS_TEXTURE\n\t\tfloat blend = texture2DBias({STD_IRIDESCENCETHICKNESS_TEXTURE_NAME}, {STD_IRIDESCENCETHICKNESS_TEXTURE_UV}, textureBias).{STD_IRIDESCENCETHICKNESS_TEXTURE_CHANNEL};\n\t\tfloat iridescenceThickness = mix(material_iridescenceThicknessMin, material_iridescenceThicknessMax, blend);\n\t#else\n\t\tfloat iridescenceThickness = material_iridescenceThicknessMax;\n\t#endif\n\tdIridescenceThickness = iridescenceThickness; \n}\n`;\n\nvar iorPS$1 = `\n#ifdef STD_IOR_CONSTANT\nuniform float material_refractionIndex;\n#endif\nvoid getIor() {\n#ifdef STD_IOR_CONSTANT\n\tdIor = material_refractionIndex;\n#else\n\tdIor = 1.0 / 1.5;\n#endif\n}\n`;\n\nvar lightDeclarationPS$1 = `\n#if defined(LIGHT{i})\n\tuniform vec3 light{i}_color;\n\t#if LIGHT{i}TYPE == DIRECTIONAL\n\t\tuniform vec3 light{i}_direction;\n\t#else\n\t\t#define LIT_CODE_LIGHTS_POINT\n\t\tuniform vec3 light{i}_position;\n\t\tuniform float light{i}_radius;\n\t\t#if LIGHT{i}TYPE == SPOT\n\t\t\t#define LIT_CODE_LIGHTS_SPOT\n\t\t\tuniform vec3 light{i}_direction;\n\t\t\tuniform float light{i}_innerConeAngle;\n\t\t\tuniform float light{i}_outerConeAngle;\n\t\t#endif\n\t#endif\n\t#if LIGHT{i}SHAPE != PUNCTUAL\n\t\t#define LIT_CODE_FALLOFF_SQUARED\n\t\t#if LIGHT{i}TYPE == DIRECTIONAL\n\t\t\tuniform vec3 light{i}_position;\n\t\t#endif\n\t\tuniform vec3 light{i}_halfWidth;\n\t\tuniform vec3 light{i}_halfHeight;\n\t#else\n\t\t#if LIGHT{i}FALLOFF == LINEAR\n\t\t\t#define LIT_CODE_FALLOFF_LINEAR\n\t\t#endif\n\t\t#if LIGHT{i}FALLOFF == INVERSESQUARED\n\t\t\t#define LIT_CODE_FALLOFF_SQUARED\n\t\t#endif\n\t#endif\n\t#if defined(LIGHT{i}CASTSHADOW)\n\t\tuniform mat4 light{i}_shadowMatrix;\n\t\tuniform float light{i}_shadowIntensity;\n\t\tuniform vec4 light{i}_shadowParams;\n\t\t#if LIGHT{i}SHADOWTYPE == PCSS_32F\n\t\t\tuniform float light{i}_shadowSearchArea;\n\t\t\tuniform vec4 light{i}_cameraParams;\n\t\t\t#if LIGHT{i}TYPE == DIRECTIONAL\n\t\t\t\tuniform vec4 light{i}_softShadowParams;\n\t\t\t#endif\n\t\t#endif\n\t\t#if LIGHT{i}TYPE == DIRECTIONAL\n\t\t\tuniform mat4 light{i}_shadowMatrixPalette[4];\n\t\t\tuniform vec4 light{i}_shadowCascadeDistances;\n\t\t\tuniform int light{i}_shadowCascadeCount;\n\t\t\tuniform float light{i}_shadowCascadeBlend;\n\t\t#endif\n\t\t#if LIGHT{i}TYPE == OMNI\n\t\t\t#if defined(LIGHT{i}SHADOW_PCF)\n\t\t\t\tuniform samplerCubeShadow light{i}_shadowMap;\n\t\t\t#else\n\t\t\t\tuniform samplerCube light{i}_shadowMap;\n\t\t\t#endif\n\t\t#else\n\t\t\t#if defined(LIGHT{i}SHADOW_PCF)\n\t\t\t\tuniform sampler2DShadow light{i}_shadowMap;\n\t\t\t#else\n\t\t\t\tuniform sampler2D light{i}_shadowMap;\n\t\t\t#endif\n\t\t#endif\n\t#endif\n\t#if defined(LIGHT{i}COOKIE)\n\t\t#define LIT_CODE_COOKIE\n\t\t#if LIGHT{i}TYPE == OMNI\n\t\t\tuniform samplerCube light{i}_cookie;\n\t\t\tuniform float light{i}_cookieIntensity;\n\t\t\t#if !defined(LIGHT{i}CASTSHADOW)\n\t\t\t\tuniform mat4 light{i}_shadowMatrix;\n\t\t\t#endif\n\t\t#endif\n\t\t#if LIGHT{i}TYPE == SPOT\n\t\t\tuniform sampler2D light{i}_cookie;\n\t\t\tuniform float light{i}_cookieIntensity;\n\t\t\t#if !defined(LIGHT{i}CASTSHADOW)\n\t\t\t\tuniform mat4 light{i}_shadowMatrix;\n\t\t\t#endif\n\t\t\t#if defined(LIGHT{i}COOKIE_TRANSFORM)\n\t\t\t\tuniform vec4 light{i}_cookieMatrix;\n\t\t\t\tuniform vec2 light{i}_cookieOffset;\n\t\t\t#endif\n\t\t#endif\n\t#endif\n#endif\n`;\n\nvar lightDiffuseLambertPS$1 = `\nfloat getLightDiffuse(vec3 worldNormal, vec3 viewDir, vec3 lightDirNorm) {\n\treturn max(dot(worldNormal, -lightDirNorm), 0.0);\n}\n`;\n\nvar lightDirPointPS$1 = `\nvec3 evalOmniLight(vec3 lightPosW) {\n\treturn vPositionW - lightPosW;\n}\n`;\n\nvar lightEvaluationPS$1 = `\n#if defined(LIGHT{i})\n\tevaluateLight{i}(\n\t\t#if defined(LIT_IRIDESCENCE)\n\t\t\tiridescenceFresnel\n\t\t#endif\n\t);\n#endif\n`;\n\nvar lightFunctionLightPS$1 = `\n#if defined(LIGHT{i})\nvoid evaluateLight{i}(\n\t#if defined(LIT_IRIDESCENCE)\n\t\tvec3 iridescenceFresnel\n\t#endif\n) {\n\tvec3 lightColor = light{i}_color;\n\t#if LIGHT{i}TYPE == DIRECTIONAL && !defined(LIT_SHADOW_CATCHER)\n\t\tif (all(equal(lightColor, vec3(0.0)))) {\n\t\t\treturn;\n\t\t}\n\t#endif\n\t#if LIGHT{i}TYPE == DIRECTIONAL\n\t\tdLightDirNormW = light{i}_direction;\n\t\tdAtten = 1.0;\n\t#else\n\t\t\n\t\tvec3 lightDirW = evalOmniLight(light{i}_position);\n\t\tdLightDirNormW = normalize(lightDirW);\n\t\t#if defined(LIGHT{i}COOKIE)\n\t\t\t#if LIGHT{i}TYPE == SPOT\n\t\t\t\t#ifdef LIGHT{i}COOKIE_FALLOFF\n\t\t\t\t\t#ifdef LIGHT{i}COOKIE_TRANSFORM\n\t\t\t\t\t\tvec3 cookieAttenuation = getCookie2DXform(light{i}_cookie, light{i}_shadowMatrix, light{i}_cookieIntensity, light{i}_cookieMatrix, light{i}_cookieOffset).{LIGHT{i}COOKIE_CHANNEL};\n\t\t\t\t\t#else\n\t\t\t\t\t\tvec3 cookieAttenuation = getCookie2D(light{i}_cookie, light{i}_shadowMatrix, light{i}_cookieIntensity).{LIGHT{i}COOKIE_CHANNEL};\n\t\t\t\t\t#endif\n\t\t\t\t#else\n\t\t\t\t\t#ifdef LIGHT{i}COOKIE_TRANSFORM\n\t\t\t\t\t\tvec3 cookieAttenuation = getCookie2DClipXform(light{i}_cookie, light{i}_shadowMatrix, light{i}_cookieIntensity, light{i}_cookieMatrix, light{i}_cookieOffset).{LIGHT{i}COOKIE_CHANNEL};\n\t\t\t\t\t#else\n\t\t\t\t\t\tvec3 cookieAttenuation = getCookie2DClip(light{i}_cookie, light{i}_shadowMatrix, light{i}_cookieIntensity).{LIGHT{i}COOKIE_CHANNEL};\n\t\t\t\t\t#endif\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t\t#if LIGHT{i}TYPE == OMNI\n\t\t\t\tvec3 cookieAttenuation = getCookieCube(light{i}_cookie, light{i}_shadowMatrix, light{i}_cookieIntensity).{LIGHT{i}COOKIE_CHANNEL};\n\t\t\t#endif\n\t\t\tlightColor *= cookieAttenuation;\n\t\t#endif\n\t\t#if LIGHT{i}SHAPE == PUNCTUAL\n\t\t\t#if LIGHT{i}FALLOFF == LINEAR\n\t\t\t\tdAtten = getFalloffLinear(light{i}_radius, lightDirW);\n\t\t\t#else\n\t\t\t\tdAtten = getFalloffInvSquared(light{i}_radius, lightDirW);\n\t\t\t#endif\n\t\t#else\n\t\t\tdAtten = getFalloffWindow(light{i}_radius, lightDirW);\n\t\t#endif\n\t\t#if LIGHT{i}TYPE == SPOT\n\t\t\t#if !defined(LIGHT{i}COOKIE) || defined(LIGHT{i}COOKIE_FALLOFF)\n\t\t\t\tdAtten *= getSpotEffect(light{i}_direction, light{i}_innerConeAngle, light{i}_outerConeAngle, dLightDirNormW);\n\t\t\t#endif\n\t\t#endif\n\t#endif\n\tif (dAtten < 0.00001) {\n\t\treturn;\n\t}\n\t#if LIGHT{i}SHAPE != PUNCTUAL\n\t\t#if LIGHT{i}SHAPE == RECT\n\t\t\tcalcRectLightValues(light{i}_position, light{i}_halfWidth, light{i}_halfHeight);\n\t\t#elif LIGHT{i}SHAPE == DISK\n\t\t\tcalcDiskLightValues(light{i}_position, light{i}_halfWidth, light{i}_halfHeight);\n\t\t#elif LIGHT{i}SHAPE == SPHERE\n\t\t\tcalcSphereLightValues(light{i}_position, light{i}_halfWidth, light{i}_halfHeight);\n\t\t#endif\n\t#endif\n\t#if LIGHT{i}SHAPE != PUNCTUAL\n\t\t#if LIGHT{i}TYPE == DIRECTIONAL\n\t\t\tfloat attenDiffuse = getLightDiffuse(litArgs_worldNormal, dViewDirW, dLightDirNormW);\n\t\t#else\n\t\t\t#if LIGHT{i}SHAPE == RECT\n\t\t\t\tfloat attenDiffuse = getRectLightDiffuse(litArgs_worldNormal, dViewDirW, lightDirW, dLightDirNormW) * 16.0;\n\t\t\t#elif LIGHT{i}SHAPE == DISK\n\t\t\t\tfloat attenDiffuse = getDiskLightDiffuse(litArgs_worldNormal, dViewDirW, lightDirW, dLightDirNormW) * 16.0;\n\t\t\t#elif LIGHT{i}SHAPE == SPHERE\n\t\t\t\tfloat attenDiffuse = getSphereLightDiffuse(litArgs_worldNormal, dViewDirW, lightDirW, dLightDirNormW) * 16.0;\n\t\t\t#endif\n\t\t#endif\n\t#else\n\t\tdAtten *= getLightDiffuse(litArgs_worldNormal, vec3(0.0), dLightDirNormW);\n\t#endif\n\t#ifdef LIGHT{i}CASTSHADOW\n\t\t#if LIGHT{i}TYPE == DIRECTIONAL\n\t\t\tfloat shadow = getShadow{i}(vec3(0.0));\n\t\t#else\n\t\t\tfloat shadow = getShadow{i}(lightDirW);\n\t\t#endif\n\t\tshadow = mix(1.0, shadow, light{i}_shadowIntensity);\n\t\tdAtten *= shadow;\n\t\t#if defined(LIT_SHADOW_CATCHER) && LIGHT{i}TYPE == DIRECTIONAL\n\t\t\tdShadowCatcher *= shadow;\n\t\t#endif\t\t\t\n\t#endif\n\t#if LIGHT{i}SHAPE != PUNCTUAL\n\t\t#ifdef LIT_SPECULAR\n\t\t\tdDiffuseLight += ((attenDiffuse * dAtten) * lightColor) * (1.0 - dLTCSpecFres);\n\t\t#else\n\t\t\tdDiffuseLight += (attenDiffuse * dAtten) * lightColor;\n\t\t#endif\t\t\t\t\t\t\n\t#else\n\t\t#if defined(AREA_LIGHTS) && defined(LIT_SPECULAR)\n\t\t\tdDiffuseLight += (dAtten * lightColor) * (1.0 - litArgs_specularity);\n\t\t#else\n\t\t\tdDiffuseLight += dAtten * lightColor;\n\t\t#endif\n\t#endif\n\t#ifdef LIGHT{i}AFFECT_SPECULARITY\n\t\t#if LIGHT{i}SHAPE != PUNCTUAL\n\t\t\t#ifdef LIT_CLEARCOAT\n\t\t\t\t#if LIGHT{i}SHAPE == RECT\n\t\t\t\t\tccSpecularLight += ccLTCSpecFres * getRectLightSpecular(litArgs_clearcoat_worldNormal, dViewDirW) * dAtten * lightColor;\n\t\t\t\t#elif LIGHT{i}SHAPE == DISK\n\t\t\t\t\tccSpecularLight += ccLTCSpecFres * getDiskLightSpecular(litArgs_clearcoat_worldNormal, dViewDirW) * dAtten * lightColor;\n\t\t\t\t#elif LIGHT{i}SHAPE == SPHERE\n\t\t\t\t\tccSpecularLight += ccLTCSpecFres * getSphereLightSpecular(litArgs_clearcoat_worldNormal, dViewDirW) * dAtten * lightColor;\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t\t#ifdef LIT_SPECULAR\n\t\t\t\t#if LIGHT{i}SHAPE == RECT\n\t\t\t\t\tdSpecularLight += dLTCSpecFres * getRectLightSpecular(litArgs_worldNormal, dViewDirW) * dAtten * lightColor;\n\t\t\t\t#elif LIGHT{i}SHAPE == DISK\n\t\t\t\t\tdSpecularLight += dLTCSpecFres * getDiskLightSpecular(litArgs_worldNormal, dViewDirW) * dAtten * lightColor;\n\t\t\t\t#elif LIGHT{i}SHAPE == SPHERE\n\t\t\t\t\tdSpecularLight += dLTCSpecFres * getSphereLightSpecular(litArgs_worldNormal, dViewDirW) * dAtten * lightColor;\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t#else\n\t\t\t#if LIGHT{i}TYPE == DIRECTIONAL && LIT_FRESNEL_MODEL != NONE\n\t\t\t\t#define LIGHT{i}FRESNEL\n\t\t\t#endif\n\t\t\t#ifdef LIT_SPECULAR\n\t\t\t\tvec3 halfDirW = normalize(-dLightDirNormW + dViewDirW);\n\t\t\t#endif\n\t\t\t#ifdef LIT_CLEARCOAT\n\t\t\t\tvec3 lightspecularCC = getLightSpecular(halfDirW, ccReflDirW, litArgs_clearcoat_worldNormal, dViewDirW, dLightDirNormW, litArgs_clearcoat_gloss, dTBN) * dAtten * lightColor;\n\t\t\t\t#ifdef LIGHT{i}FRESNEL\n\t\t\t\t\tlightspecularCC *= getFresnelCC(dot(dViewDirW, halfDirW));\n\t\t\t\t#endif\n\t\t\t\tccSpecularLight += lightspecularCC;\n\t\t\t#endif\n\t\t\t#ifdef LIT_SHEEN\n\t\t\t\tsSpecularLight += getLightSpecularSheen(halfDirW, litArgs_worldNormal, dViewDirW, dLightDirNormW, litArgs_sheen_gloss) * dAtten * lightColor;\n\t\t\t#endif\n\t\t\t#ifdef LIT_SPECULAR\n\t\t\t\tvec3 lightSpecular = getLightSpecular(halfDirW, dReflDirW, litArgs_worldNormal, dViewDirW, dLightDirNormW, litArgs_gloss, dTBN) * dAtten * lightColor;\n\t\t\t\t#ifdef LIGHT{i}FRESNEL\n\t\t\t\t\t#if defined(LIT_IRIDESCENCE)\n\t\t\t\t\t\tlightSpecular *= getFresnel(dot(dViewDirW, halfDirW), litArgs_gloss, litArgs_specularity, iridescenceFresnel, litArgs_iridescence_intensity);\n\t\t\t\t\t#else\n\t\t\t\t\t\tlightSpecular *= getFresnel(dot(dViewDirW, halfDirW), litArgs_gloss, litArgs_specularity);\n\t\t\t\t\t#endif\n\t\t\t\t#else\n\t\t\t\t\tlightSpecular *= litArgs_specularity;\n\t\t\t\t#endif\n\t\t\t\t\n\t\t\t\tdSpecularLight += lightSpecular;\n\t\t\t#endif\n\t\t#endif\n\t#endif\n}\n#endif\n`;\n\nvar lightFunctionShadowPS$1 = `\n#ifdef LIGHT{i}CASTSHADOW\n\tvec3 getShadowSampleCoord{i}(mat4 shadowTransform, vec4 shadowParams, vec3 worldPosition, vec3 lightPos, inout vec3 lightDir, vec3 lightDirNorm, vec3 normal) {\n\t\tvec3 surfacePosition = worldPosition;\n\t\t#ifdef LIGHT{i}_SHADOW_SAMPLE_POINT\n\t\t\t#ifdef LIGHT{i}_SHADOW_SAMPLE_NORMAL_OFFSET\n\t\t\t\tfloat distScale = length(lightDir);\n\t\t\t\tsurfacePosition = surfacePosition + normal * shadowParams.y * clamp(1.0 - dot(normal, -lightDirNorm), 0.0, 1.0) * distScale;\n\t\t\t\tlightDir = surfacePosition - lightPos;\n\t\t\t\treturn lightDir;\n\t\t\t#endif\n\t\t#else\n\t\t\t#ifdef LIGHT{i}_SHADOW_SAMPLE_SOURCE_ZBUFFER\n\t\t\t\t#ifdef LIGHT{i}_SHADOW_SAMPLE_NORMAL_OFFSET\n\t\t\t\t\tsurfacePosition = surfacePosition + normal * shadowParams.y;\n\t\t\t\t#endif\n\t\t\t#else\n\t\t\t\t#ifdef LIGHT{i}_SHADOW_SAMPLE_NORMAL_OFFSET\n\t\t\t\t\t#ifdef LIGHT{i}_SHADOW_SAMPLE_ORTHO\n\t\t\t\t\t\tfloat distScale = 1.0;\n\t\t\t\t\t#else\n\t\t\t\t\t\tfloat distScale = abs(dot(vPositionW - lightPos, lightDirNorm));\n\t\t\t\t\t#endif\n\t\t\t\t\tsurfacePosition = surfacePosition + normal * shadowParams.y * clamp(1.0 - dot(normal, -lightDirNorm), 0.0, 1.0) * distScale;\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t\tvec4 positionInShadowSpace = shadowTransform * vec4(surfacePosition, 1.0);\n\t\t\t#ifdef LIGHT{i}_SHADOW_SAMPLE_ORTHO\n\t\t\t\tpositionInShadowSpace.z = saturate(positionInShadowSpace.z) - 0.0001;\n\t\t\t#else\n\t\t\t\t#ifdef LIGHT{i}_SHADOW_SAMPLE_SOURCE_ZBUFFER\n\t\t\t\t\tpositionInShadowSpace.xyz /= positionInShadowSpace.w;\n\t\t\t\t#else\n\t\t\t\t\tpositionInShadowSpace.xy /= positionInShadowSpace.w;\n\t\t\t\t\tpositionInShadowSpace.z = length(lightDir) * shadowParams.w;\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t\t#ifdef SHADOW_SAMPLE_Z_BIAS\n\t\t\t#endif\n\t\t\tsurfacePosition = positionInShadowSpace.xyz;\n\t\t#endif\n\t\treturn surfacePosition;\n\t}\n\tfloat getShadow{i}(vec3 lightDirW) {\n\t\t#ifdef LIGHT{i}_SHADOW_CASCADES\n\t\t\tint cascadeIndex = getShadowCascadeIndex(light{i}_shadowCascadeDistances, light{i}_shadowCascadeCount);\n\t\t\t#ifdef LIGHT{i}_SHADOW_CASCADE_BLEND\n\t\t\t\tcascadeIndex = ditherShadowCascadeIndex(cascadeIndex, light{i}_shadowCascadeDistances, light{i}_shadowCascadeCount, light{i}_shadowCascadeBlend);\n\t\t\t#endif\n\t\t\tmat4 shadowMatrix = light{i}_shadowMatrixPalette[cascadeIndex];\n\t\t#else\n\t\t\tmat4 shadowMatrix = light{i}_shadowMatrix;\n\t\t#endif\n\t\t#if LIGHT{i}TYPE == DIRECTIONAL\n\t\t\tvec3 shadowCoord = getShadowSampleCoord{i}(shadowMatrix, light{i}_shadowParams, vPositionW, vec3(0.0), lightDirW, dLightDirNormW, dVertexNormalW);\n\t\t#else\n\t\t\tvec3 shadowCoord = getShadowSampleCoord{i}(shadowMatrix, light{i}_shadowParams, vPositionW, light{i}_position, lightDirW, dLightDirNormW, dVertexNormalW);\n\t\t#endif\n\t\t#if LIGHT{i}TYPE == DIRECTIONAL\n\t\t\tshadowCoord = fadeShadow(shadowCoord, light{i}_shadowCascadeDistances);\n\t\t#endif\n\t\t#if LIGHT{i}TYPE == DIRECTIONAL\n\t\t\t#if LIGHT{i}SHADOWTYPE == VSM_16F\n\t\t\t\treturn getShadowVSM16(SHADOWMAP_PASS(light{i}_shadowMap), shadowCoord, light{i}_shadowParams, 5.54);\n\t\t\t#endif\n\t\t\t#if LIGHT{i}SHADOWTYPE == VSM_32F\n\t\t\t\treturn getShadowVSM32(SHADOWMAP_PASS(light{i}_shadowMap), shadowCoord, light{i}_shadowParams, 15.0);\n\t\t\t#endif\n\t\t\t#if LIGHT{i}SHADOWTYPE == PCSS_32F\n\t\t\t\t#if LIGHT{i}SHAPE != PUNCTUAL\n\t\t\t\t\tvec2 shadowSearchArea = vec2(length(light{i}_halfWidth), length(light{i}_halfHeight)) * light{i}_shadowSearchArea;\n\t\t\t\t\treturn getShadowPCSS(SHADOWMAP_PASS(light{i}_shadowMap), shadowCoord, light{i}_shadowParams, light{i}_cameraParams, shadowSearchArea, lightDirW);\n\t\t\t\t#else\n\t\t\t\t\treturn getShadowPCSS(SHADOWMAP_PASS(light{i}_shadowMap), shadowCoord, light{i}_shadowParams, light{i}_cameraParams, light{i}_softShadowParams, lightDirW);\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t\t#if LIGHT{i}SHADOWTYPE == PCF1_16F || LIGHT{i}SHADOWTYPE == PCF1_32F\n\t\t\t\treturn getShadowPCF1x1(SHADOWMAP_PASS(light{i}_shadowMap), shadowCoord, light{i}_shadowParams);\n\t\t\t#endif\n\t\t\t#if LIGHT{i}SHADOWTYPE == PCF3_16F || LIGHT{i}SHADOWTYPE == PCF3_32F\n\t\t\t\treturn getShadowPCF3x3(SHADOWMAP_PASS(light{i}_shadowMap), shadowCoord, light{i}_shadowParams);\n\t\t\t#endif\n\t\t\t#if LIGHT{i}SHADOWTYPE == PCF5_16F || LIGHT{i}SHADOWTYPE == PCF5_32F\n\t\t\t\treturn getShadowPCF5x5(SHADOWMAP_PASS(light{i}_shadowMap), shadowCoord, light{i}_shadowParams);\n\t\t\t#endif\n\t\t#endif\n\t\t#if LIGHT{i}TYPE == SPOT\n\t\t\t#if LIGHT{i}SHADOWTYPE == VSM_16F\n\t\t\t\treturn getShadowSpotVSM16(SHADOWMAP_PASS(light{i}_shadowMap), shadowCoord, light{i}_shadowParams, 5.54, lightDirW);\n\t\t\t#endif\n\t\t\t#if LIGHT{i}SHADOWTYPE == VSM_32F\n\t\t\t\treturn getShadowSpotVSM32(SHADOWMAP_PASS(light{i}_shadowMap), shadowCoord, light{i}_shadowParams, 15.0, lightDirW);\n\t\t\t#endif\n\t\t\t#if LIGHT{i}SHADOWTYPE == PCSS_32F\n\t\t\t\t#if LIGHT{i}SHAPE != PUNCTUAL\n\t\t\t\t\tvec2 shadowSearchArea = vec2(length(light{i}_halfWidth), length(light{i}_halfHeight)) * light{i}_shadowSearchArea;\n\t\t\t\t#else\n\t\t\t\t\tvec2 shadowSearchArea = vec2(light{i}_shadowSearchArea);\n\t\t\t\t#endif\n\t\t\t\treturn getShadowSpotPCSS(SHADOWMAP_PASS(light{i}_shadowMap), shadowCoord, light{i}_shadowParams, light{i}_cameraParams, shadowSearchArea, lightDirW);\n\t\t\t#endif\n\t\t\t#if LIGHT{i}SHADOWTYPE == PCF1_16F || LIGHT{i}SHADOWTYPE == PCF1_32F\n\t\t\t\treturn getShadowSpotPCF1x1(SHADOWMAP_PASS(light{i}_shadowMap), shadowCoord, light{i}_shadowParams);\n\t\t\t#endif\n\t\t\t#if LIGHT{i}SHADOWTYPE == PCF3_16F || LIGHT{i}SHADOWTYPE == PCF3_32F\n\t\t\t\treturn getShadowSpotPCF3x3(SHADOWMAP_PASS(light{i}_shadowMap), shadowCoord, light{i}_shadowParams);\n\t\t\t#endif\n\t\t\t#if LIGHT{i}SHADOWTYPE == PCF5_16F || LIGHT{i}SHADOWTYPE == PCF5_32F\n\t\t\t\treturn getShadowSpotPCF5x5(SHADOWMAP_PASS(light{i}_shadowMap), shadowCoord, light{i}_shadowParams);\n\t\t\t#endif\n\t\t#endif\n\t\t#if LIGHT{i}TYPE == OMNI\n\t\t\t#if LIGHT{i}SHADOWTYPE == PCSS_32F\n\t\t\t\t#if LIGHT{i}SHAPE != PUNCTUAL\n\t\t\t\t\tvec2 shadowSearchArea = vec2(length(light{i}_halfWidth), length(light{i}_halfHeight)) * light{i}_shadowSearchArea;\n\t\t\t\t#else\n\t\t\t\t\tvec2 shadowSearchArea = vec2(light{i}_shadowSearchArea);\n\t\t\t\t#endif\n\t\t\t\treturn getShadowOmniPCSS(SHADOWMAP_PASS(light{i}_shadowMap), shadowCoord, light{i}_shadowParams, light{i}_cameraParams, shadowSearchArea, lightDirW);\n\t\t\t#endif\n\t\t\t#if LIGHT{i}SHADOWTYPE == PCF1_16F || LIGHT{i}SHADOWTYPE == PCF1_32F\n\t\t\t\treturn getShadowOmniPCF1x1(SHADOWMAP_PASS(light{i}_shadowMap), shadowCoord, light{i}_shadowParams, lightDirW);\n\t\t\t#endif\n\t\t\t#if LIGHT{i}SHADOWTYPE == PCF3_16F || LIGHT{i}SHADOWTYPE == PCF3_32F\n\t\t\t\treturn getShadowOmniPCF3x3(SHADOWMAP_PASS(light{i}_shadowMap), shadowCoord, light{i}_shadowParams, lightDirW);\n\t\t\t#endif\n\t\t#endif\n\t}\n#endif\n`;\n\nvar lightingPS$1 = `\n#ifdef LIT_CLUSTERED_LIGHTS\n\t#define LIT_CODE_FALLOFF_LINEAR\n\t#define LIT_CODE_FALLOFF_SQUARED\n\t#define LIT_CODE_LIGHTS_POINT\n\t#define LIT_CODE_LIGHTS_SPOT\n#endif\n#ifdef AREA_LIGHTS\n\tuniform highp sampler2D areaLightsLutTex1;\n\tuniform highp sampler2D areaLightsLutTex2;\n#endif\n#ifdef LIT_LIGHTING\n\t#include \"lightDiffuseLambertPS\"\n\t#if defined(AREA_LIGHTS) || defined(LIT_CLUSTERED_AREA_LIGHTS)\n\t\t#include \"ltcPS\"\n\t#endif\n#endif\n#ifdef SHADOW_DIRECTIONAL\n\t#include \"shadowCascadesPS\"\n#endif\n#if defined(SHADOW_KIND_PCF1)\n\t#include \"shadowPCF1PS\"\n#endif\n#if defined(SHADOW_KIND_PCF3)\n\t#include \"shadowPCF3PS\"\n#endif\n#if defined(SHADOW_KIND_PCF5)\n\t#include \"shadowPCF5PS\"\n#endif\n#if defined(SHADOW_KIND_PCSS)\n\t#include \"linearizeDepthPS\"\n\t#include \"shadowPCSSPS\"\n\t#include \"shadowSoftPS\"\n#endif\n#if defined(SHADOW_KIND_VSM)\n\t#include \"shadowEVSMPS\"\n#endif\n#ifdef LIT_CODE_FALLOFF_LINEAR\n\t#include \"falloffLinearPS\"\n#endif\n#ifdef LIT_CODE_FALLOFF_SQUARED\n\t#include \"falloffInvSquaredPS\"\n#endif\n#ifdef LIT_CODE_LIGHTS_POINT\n\t#include \"lightDirPointPS\"\n#endif\n#ifdef LIT_CODE_LIGHTS_SPOT\n\t#include \"spotPS\"\n#endif\n#ifdef LIT_CODE_COOKIE\n\t#include \"cookiePS\"\n#endif\n#ifdef LIT_CLUSTERED_LIGHTS\n\t#include \"clusteredLightPS\"\n#endif\n#ifdef LIGHT_COUNT > 0\n\t#include \"lightFunctionShadowPS, LIGHT_COUNT\"\n\t#include \"lightFunctionLightPS, LIGHT_COUNT\"\n#endif\n`;\n\nvar lightmapAddPS$1 = `\nvoid addLightMap(\n\tvec3 lightmap, \n\tvec3 dir, \n\tvec3 worldNormal, \n\tvec3 viewDir, \n\tvec3 reflectionDir, \n\tfloat gloss, \n\tvec3 specularity, \n\tvec3 vertexNormal, \n\tmat3 tbn\n#if defined(LIT_IRIDESCENCE)\n\tvec3 iridescenceFresnel, \n\tfloat iridescenceIntensity\n#endif\n) {\n\t#if defined(LIT_SPECULAR) && defined(LIT_DIR_LIGHTMAP)\n\t\tif (dot(dir, dir) < 0.0001) {\n\t\t\t\tdDiffuseLight += lightmap;\n\t\t} else {\n\t\t\tfloat vlight = saturate(dot(dir, -vertexNormal));\n\t\t\tfloat flight = saturate(dot(dir, -worldNormal));\n\t\t\tfloat nlight = (flight / max(vlight, 0.01)) * 0.5;\n\t\t\tdDiffuseLight += lightmap * nlight * 2.0;\n\t\t\tvec3 halfDir = normalize(-dir + viewDir);\n\t\t\tvec3 specularLight = lightmap * getLightSpecular(halfDir, reflectionDir, worldNormal, viewDir, dir, gloss, tbn);\n\t\t\t#ifdef LIT_SPECULAR_FRESNEL\n\t\t\t\tspecularLight *= \n\t\t\t\t\tgetFresnel(dot(viewDir, halfDir), \n\t\t\t\t\tgloss, \n\t\t\t\t\tspecularity\n\t\t\t\t#if defined(LIT_IRIDESCENCE)\n\t\t\t\t\t, iridescenceFresnel,\n\t\t\t\t\tiridescenceIntensity\n\t\t\t\t#endif\n\t\t\t\t\t);\n\t\t\t#endif\n\t\t\tdSpecularLight += specularLight;\n\t\t}\n\t#else\n\t\tdDiffuseLight += lightmap;\n\t#endif\n}\n`;\n\nvar lightmapPS$1 = `\n#ifdef STD_LIGHTMAP_DIR\n\tvec3 dLightmapDir;\n\tuniform sampler2D texture_dirLightMap;\n#endif\nvoid getLightMap() {\n\tdLightmap = vec3(1.0);\n\t#ifdef STD_LIGHT_TEXTURE\n\t\tdLightmap *= {STD_LIGHT_TEXTURE_DECODE}(texture2DBias({STD_LIGHT_TEXTURE_NAME}, {STD_LIGHT_TEXTURE_UV}, textureBias)).{STD_LIGHT_TEXTURE_CHANNEL};\n\t\t#ifdef STD_LIGHTMAP_DIR\n\t\t\tvec3 dir = texture2DBias(texture_dirLightMap, {STD_LIGHT_TEXTURE_UV}, textureBias).xyz * 2.0 - 1.0;\n\t\t\tfloat dirDot = dot(dir, dir);\n\t\t\tdLightmapDir = (dirDot > 0.001) ? dir / sqrt(dirDot) : vec3(0.0);\n\t\t#endif\n\t#endif\n\t#ifdef STD_LIGHT_VERTEX\n\t\tdLightmap *= saturate(vVertexColor.{STD_LIGHT_VERTEX_CHANNEL});\n\t#endif\n}\n`;\n\nvar lightSpecularAnisoGGXPS$1 = `\nfloat calcLightSpecular(float gloss, vec3 worldNormal, vec3 viewDir, vec3 h, vec3 lightDirNorm, mat3 tbn) {\n\tfloat PI = 3.141592653589793;\n\tfloat roughness = max((1.0 - gloss) * (1.0 - gloss), 0.001);\n\tfloat alphaRoughness = roughness * roughness;\n\tfloat anisotropy = dAnisotropy;\n\tvec2 direction = dAnisotropyRotation;\n\tfloat at = mix(alphaRoughness, 1.0, anisotropy * anisotropy);\n\tfloat ab = clamp(alphaRoughness, 0.001, 1.0);\n\tvec3 anisotropicT = normalize(tbn * vec3(direction, 0.0));\n\tvec3 anisotropicB = normalize(cross(tbn[2], anisotropicT));\n\tfloat NoH = dot(worldNormal, h);\n\tfloat ToH = dot(anisotropicT, h);\n\tfloat BoH = dot(anisotropicB, h);\n\tfloat a2 = at * ab;\n\tvec3 v = vec3(ab * ToH, at * BoH, a2 * NoH);\n\tfloat v2 = dot(v, v);\n\tfloat w2 = a2 / v2;\n\tfloat D = a2 * w2 * w2 * (1.0 / PI);\n\tfloat ToV = dot(anisotropicT, viewDir);\n\tfloat BoV = dot(anisotropicB, viewDir);\n\tfloat ToL = dot(anisotropicT, -lightDirNorm);\n\tfloat BoL = dot(anisotropicB, -lightDirNorm);\n\tfloat NoV = dot(worldNormal, viewDir);\n\tfloat NoL = dot(worldNormal, -lightDirNorm);\n\tfloat lambdaV = NoL * length(vec3(at * ToV, ab * BoV, NoV));\n\tfloat lambdaL = NoV * length(vec3(at * ToL, ab * BoL, NoL));\n\tfloat G = 0.5 / (lambdaV + lambdaL);\n\treturn D * G;\n}\nfloat getLightSpecular(vec3 h, vec3 reflDir, vec3 worldNormal, vec3 viewDir, vec3 lightDirNorm, float gloss, mat3 tbn) {\n\treturn calcLightSpecular(gloss, worldNormal, viewDir, h, lightDirNorm, tbn);\n}\n`;\n\nvar lightSpecularBlinnPS$1 = `\nfloat calcLightSpecular(float gloss, vec3 worldNormal, vec3 h) {\n\tfloat nh = max( dot( h, worldNormal ), 0.0 );\n\tfloat specPow = exp2(gloss * 11.0);\n\tspecPow = max(specPow, 0.0001);\n\treturn pow(nh, specPow) * (specPow + 2.0) / 8.0;\n}\nfloat getLightSpecular(vec3 h, vec3 reflDir, vec3 worldNormal, vec3 viewDir, vec3 lightDirNorm, float gloss, mat3 tbn) {\n\treturn calcLightSpecular(gloss, worldNormal, h);\n}\n`;\n\nvar lightSheenPS$1 = `\nfloat sheenD(vec3 normal, vec3 h, float roughness) {\n\tconst float PI = 3.141592653589793;\n\tfloat invR = 1.0 / (roughness * roughness);\n\tfloat cos2h = max(dot(normal, h), 0.0);\n\tcos2h *= cos2h;\n\tfloat sin2h = max(1.0 - cos2h, 0.0078125);\n\treturn (2.0 + invR) * pow(sin2h, invR * 0.5) / (2.0 * PI);\n}\nfloat sheenV(vec3 normal, vec3 viewDir, vec3 light) {\n\tfloat NoV = max(dot(normal, viewDir), 0.000001);\n\tfloat NoL = max(dot(normal, light), 0.000001);\n\treturn 1.0 / (4.0 * (NoL + NoV - NoL * NoV));\n}\nfloat getLightSpecularSheen(vec3 h, vec3 worldNormal, vec3 viewDir, vec3 lightDirNorm, float sheenGloss) {\n\tfloat D = sheenD(worldNormal, h, sheenGloss);\n\tfloat V = sheenV(worldNormal, viewDir, -lightDirNorm);\n\treturn D * V;\n}\n`;\n\nvar linearizeDepthPS$1 = `\n#ifndef LINEARIZE_DEPTH\n#define LINEARIZE_DEPTH\nfloat linearizeDepthWithParams(float z, vec4 cameraParams) {\n\tif (cameraParams.w == 0.0)\n\t\treturn (cameraParams.z * cameraParams.y) / (cameraParams.y + z * (cameraParams.z - cameraParams.y));\n\telse\n\t\treturn cameraParams.z + z * (cameraParams.y - cameraParams.z);\n}\n#ifndef CAMERAPLANES\n\t#define CAMERAPLANES\n\tuniform vec4 camera_params;\n#endif\nfloat linearizeDepth(float z) {\n\treturn linearizeDepthWithParams(z, camera_params);\n}\n#endif\n`;\n\nvar litForwardBackendPS$1 = `\nvoid evaluateBackend() {\n\t#ifdef LIT_SSAO\n\t\tlitArgs_ao *= texture2DLod(ssaoTexture, gl_FragCoord.xy * ssaoTextureSizeInv, 0.0).r;\n\t#endif\n\t#ifdef LIT_NEEDS_NORMAL\n\t\t#ifdef LIT_SPECULAR\n\t\t\tgetReflDir(litArgs_worldNormal, dViewDirW, litArgs_gloss, dTBN);\n\t\t#endif\n\t\t#ifdef LIT_CLEARCOAT\n\t\t\tccReflDirW = normalize(-reflect(dViewDirW, litArgs_clearcoat_worldNormal));\n\t\t#endif\n\t#endif\n\t#ifdef LIT_SPECULAR_OR_REFLECTION\n\t\t#ifdef LIT_METALNESS\n\t\t\tfloat f0 = 1.0 / litArgs_ior;\n\t\t\tf0 = (f0 - 1.0) / (f0 + 1.0);\n\t\t\tf0 *= f0;\n\t\t\tlitArgs_specularity = getSpecularModulate(litArgs_specularity, litArgs_albedo, litArgs_metalness, f0);\n\t\t\tlitArgs_albedo = getAlbedoModulate(litArgs_albedo, litArgs_metalness);\n\t\t#endif\n\t\t#ifdef LIT_IRIDESCENCE\n\t\t\tvec3 iridescenceFresnel = getIridescence(saturate(dot(dViewDirW, litArgs_worldNormal)), litArgs_specularity, litArgs_iridescence_thickness);\n\t\t#endif\n\t#endif\n\t#ifdef LIT_ADD_AMBIENT\n\t\taddAmbient(litArgs_worldNormal);\n\t\t#ifdef LIT_SPECULAR\n\t\t\tdDiffuseLight = dDiffuseLight * (1.0 - litArgs_specularity);\n\t\t#endif\n\t\t#ifdef LIT_SEPARATE_AMBIENT\n\t\t\tvec3 dAmbientLight = dDiffuseLight;\n\t\t\tdDiffuseLight = vec3(0);\n\t\t#endif\n\t#endif\n\t#ifndef LIT_OLD_AMBIENT\n\t\tdDiffuseLight *= material_ambient;\n\t#endif\n\t#ifdef LIT_AO\n\t\t#ifndef LIT_OCCLUDE_DIRECT\n\t\t\toccludeDiffuse(litArgs_ao);\n\t\t#endif\n\t#endif\n\t#ifdef LIT_LIGHTMAP\n\t\taddLightMap(\n\t\t\tlitArgs_lightmap, \n\t\t\tlitArgs_lightmapDir, \n\t\t\tlitArgs_worldNormal, \n\t\t\tdViewDirW, \n\t\t\tdReflDirW, \n\t\t\tlitArgs_gloss, \n\t\t\tlitArgs_specularity, \n\t\t\tdVertexNormalW,\n\t\t\tdTBN\n\t\t#if defined(LIT_IRIDESCENCE)\n\t\t\t, iridescenceFresnel,\n\t\t\tlitArgs_iridescence_intensity\n\t\t#endif\n\t\t);\n\t#endif\n\t#ifdef LIT_LIGHTING || LIT_REFLECTIONS\n\t\t#ifdef LIT_REFLECTIONS\n\t\t\t#ifdef LIT_CLEARCOAT\n\t\t\t\taddReflectionCC(ccReflDirW, litArgs_clearcoat_gloss);\n\t\t\t\n\t\t\t\t#ifdef LIT_SPECULAR_FRESNEL\n\t\t\t\t\tccFresnel = getFresnelCC(dot(dViewDirW, litArgs_clearcoat_worldNormal));\n\t\t\t\t\tccReflection *= ccFresnel;\n\t\t\t\t#else\n\t\t\t\t\tccFresnel = 0.0;\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t\t#ifdef LIT_SPECULARITY_FACTOR\n\t\t\t\tccReflection *= litArgs_specularityFactor;\n\t\t\t#endif\n\t\t\t#ifdef LIT_SHEEN\n\t\t\t\taddReflectionSheen(litArgs_worldNormal, dViewDirW, litArgs_sheen_gloss);\n\t\t\t#endif\n\t\t\taddReflection(dReflDirW, litArgs_gloss);\n\t\t\t#ifdef LIT_FRESNEL_MODEL\n\t\t\t\tdReflection.rgb *= getFresnel(\n\t\t\t\t\tdot(dViewDirW, litArgs_worldNormal), \n\t\t\t\t\tlitArgs_gloss, \n\t\t\t\t\tlitArgs_specularity\n\t\t\t\t#if defined(LIT_IRIDESCENCE)\n\t\t\t\t\t, iridescenceFresnel,\n\t\t\t\t\tlitArgs_iridescence_intensity\n\t\t\t\t#endif\n\t\t\t\t\t);\n\t\t\t#else\n\t\t\t\tdReflection.rgb *= litArgs_specularity;\n\t\t\t#endif\n\t\t\t#ifdef LIT_SPECULARITY_FACTOR\n\t\t\t\tdReflection.rgb *= litArgs_specularityFactor;\n\t\t\t#endif\n\t\t#endif\n\t\t#ifdef AREA_LIGHTS\n\t\t\tdSpecularLight *= litArgs_specularity;\n\t\t\t#ifdef LIT_SPECULAR\n\t\t\t\tcalcLTCLightValues(litArgs_gloss, litArgs_worldNormal, dViewDirW, litArgs_specularity, litArgs_clearcoat_gloss, litArgs_clearcoat_worldNormal, litArgs_clearcoat_specularity);\n\t\t\t#endif\n\t\t#endif\n\t\t\n\t\t#ifdef LIGHT_COUNT > 0\n\t\t\t#include \"lightEvaluationPS, LIGHT_COUNT\"\n\t\t#endif\n\t\t#ifdef LIT_CLUSTERED_LIGHTS\n\t\t\taddClusteredLights(litArgs_worldNormal, dViewDirW, dReflDirW,\n\t\t\t\t#if defined(LIT_CLEARCOAT)\n\t\t\t\t\t\tccReflDirW,\n\t\t\t\t#endif\n\t\t\t\t\t\tlitArgs_gloss, litArgs_specularity, dVertexNormalW, dTBN, \n\t\t\t\t#if defined(LIT_IRIDESCENCE)\n\t\t\t\t\t\tiridescenceFresnel,\n\t\t\t\t#endif\n\t\t\t\t\t\tlitArgs_clearcoat_worldNormal, litArgs_clearcoat_gloss, litArgs_sheen_gloss, litArgs_iridescence_intensity\n\t\t\t);\n\t\t#endif\n\t\t#ifdef AREA_LIGHTS\n\t\t\t#ifdef LIT_CLEARCOAT\n\t\t\t\tlitArgs_clearcoat_specularity = 1.0;\n\t\t\t#endif\n\t\t\t#ifdef LIT_SPECULAR\n\t\t\t\tlitArgs_specularity = vec3(1);\n\t\t\t#endif\n\t\t#endif\n\t\t#ifdef LIT_REFRACTION\n\t\t\taddRefraction(\n\t\t\t\tlitArgs_worldNormal, \n\t\t\t\tdViewDirW, \n\t\t\t\tlitArgs_thickness, \n\t\t\t\tlitArgs_gloss, \n\t\t\t\tlitArgs_specularity, \n\t\t\t\tlitArgs_albedo, \n\t\t\t\tlitArgs_transmission,\n\t\t\t\tlitArgs_ior,\n\t\t\t\tlitArgs_dispersion\n\t\t\t\t#if defined(LIT_IRIDESCENCE)\n\t\t\t\t\t, iridescenceFresnel, \n\t\t\t\t\tlitArgs_iridescence_intensity\n\t\t\t\t#endif\n\t\t\t);\n\t\t#endif\n\t#endif\n\t#ifdef LIT_AO\n\t\t#ifdef LIT_OCCLUDE_DIRECT\n\t\t\toccludeDiffuse(litArgs_ao);\n\t\t#endif\n\t\t#if LIT_OCCLUDE_SPECULAR != NONE\n\t\t\toccludeSpecular(litArgs_gloss, litArgs_ao, litArgs_worldNormal, dViewDirW);\n\t\t#endif\n\t#endif\n\t#ifdef LIT_SPECULARITY_FACTOR\n\t\tdSpecularLight *= litArgs_specularityFactor;\n\t#endif\n\t#if !defined(LIT_OPACITY_FADES_SPECULAR)\n\t\t#if LIT_BLEND_TYPE == NORMAL || LIT_BLEND_TYPE == PREMULTIPLIED\n\t\t\tfloat specLum = dot((dSpecularLight + dReflection.rgb * dReflection.a), vec3( 0.2126, 0.7152, 0.0722 ));\n\t\t\t#ifdef LIT_CLEARCOAT\n\t\t\t\tspecLum += dot(ccSpecularLight * litArgs_clearcoat_specularity + ccReflection * litArgs_clearcoat_specularity, vec3( 0.2126, 0.7152, 0.0722 ));\n\t\t\t#endif\n\t\t\tlitArgs_opacity = clamp(litArgs_opacity + gammaCorrectInput(specLum), 0.0, 1.0);\n\t\t#endif\n\t\tlitArgs_opacity *= material_alphaFade;\n\t#endif\n\t#ifdef LIT_LIGHTMAP_BAKING\n\t\t#ifdef LIT_LIGHTMAP_BAKING_COLOR\n\t\t\t#include \"bakeLmEndPS\"\n\t\t#endif\n\t\t#ifdef LIT_LIGHTMAP_BAKING_DIR\n\t\t\t#include \"bakeDirLmEndPS\"\n\t\t#endif\n\t#else\n\t\t#include \"endPS\"\n\t\t#include \"outputAlphaPS\"\n\t#endif\n\t#ifdef LIT_MSDF\n\t\tgl_FragColor = applyMsdf(gl_FragColor);\n\t#endif\n\t#include \"outputPS\"\n\t#include \"debugOutputPS\"\n\t#ifdef LIT_SHADOW_CATCHER\n\t\tgl_FragColor.rgb = vec3(dShadowCatcher);\n\t#endif\n}\n`;\n\nvar litForwardDeclarationPS$1 = `\nvec3 sReflection;\nvec3 dVertexNormalW;\nvec3 dTangentW;\nvec3 dBinormalW;\nvec3 dViewDirW;\nvec3 dReflDirW;\nvec3 ccReflDirW;\nvec3 dLightDirNormW;\nfloat dAtten;\nmat3 dTBN;\nvec4 dReflection;\nvec3 dDiffuseLight;\nvec3 dSpecularLight;\nfloat ccFresnel;\nvec3 ccReflection;\nvec3 ccSpecularLight;\nfloat ccSpecularityNoFres;\nvec3 sSpecularLight;\n#ifdef LIT_DISPERSION\n\tuniform float material_dispersion;\n#endif\n#ifndef LIT_OPACITY_FADES_SPECULAR\n\tuniform float material_alphaFade;\n#endif\n#ifdef LIT_SSAO\n\tuniform sampler2D ssaoTexture;\n\tuniform vec2 ssaoTextureSizeInv;\n#endif\n#ifdef LIT_SHADOW_CATCHER\n\tfloat dShadowCatcher = 1.0;\n#endif\n#if LIGHT_COUNT > 0\n\t#include \"lightDeclarationPS, LIGHT_COUNT\"\n#endif\n#ifdef LIT_SPECULAR\n\t#if LIT_FRESNEL_MODEL == NONE && !defined(LIT_REFLECTIONS) && !defined(LIT_DIFFUSE_MAP) \n\t\t#define LIT_OLD_AMBIENT\n\t#endif\n#endif\n#ifdef STD_LIGHTMAP_DIR\n\tuniform float bakeDir;\n#endif\n#ifdef LIT_LIGHTMAP_BAKING_ADD_AMBIENT\n\tuniform float ambientBakeOcclusionContrast;\n\tuniform float ambientBakeOcclusionBrightness;\n#endif\n`;\n\nvar litForwardMainPS$1 = `\nvoid main(void) {\n\t#include \"litUserMainStartPS\"\n\tdReflection = vec4(0);\n\t#ifdef LIT_CLEARCOAT\n\t\tccSpecularLight = vec3(0);\n\t\tccReflection = vec3(0);\n\t#endif\n\t#if LIT_NONE_SLICE_MODE == SLICED\n\t\t#include \"startNineSlicedPS\"\n\t#elif LIT_NONE_SLICE_MODE == TILED\n\t\t#include \"startNineSlicedTiledPS\"\n\t#endif\n\t#ifdef LIT_NEEDS_NORMAL\n\t\tdVertexNormalW = normalize(vNormalW);\n\t\t#ifdef LIT_TANGENTS\n\t\t\t#if defined(LIT_HEIGHTS) || defined(LIT_USE_NORMALS) || defined(LIT_USE_CLEARCOAT_NORMALS) || defined(LIT_GGX_SPECULAR)\n\t\t\t\tdTangentW = vTangentW;\n\t\t\t\tdBinormalW = vBinormalW;\n\t\t\t#endif\n\t\t#endif\n\t\tgetViewDir();\n\t\t#ifdef LIT_TBN\n\t\t\tgetTBN(dTangentW, dBinormalW, dVertexNormalW);\n\t\t\t#ifdef LIT_TWO_SIDED_LIGHTING\n\t\t\t\thandleTwoSidedLighting();\n\t\t\t#endif\n\t\t#endif\n\t#endif\n\tevaluateFrontend();\n\t#include \"debugProcessFrontendPS\"\n\tevaluateBackend();\n\t#include \"litUserMainEndPS\"\n}\n`;\n\nvar litForwardPostCodePS$1 = `\n#ifdef LIT_NEEDS_NORMAL\n\t#include \"cubeMapRotatePS\"\n\t#include \"cubeMapProjectPS\"\n\t#include \"envProcPS\"\n#endif\n#ifdef LIT_SPECULAR_OR_REFLECTION\n\t#ifdef LIT_METALNESS\n\t\t#include \"metalnessModulatePS\"\n\t#endif\n\t#if LIT_FRESNEL_MODEL == SCHLICK\n\t\t#include \"fresnelSchlickPS\"\n\t#endif\n\t#ifdef LIT_IRIDESCENCE\n\t\t#include \"iridescenceDiffractionPS\"\n\t#endif\n#endif\n#ifdef LIT_AO\n\t#include \"aoDiffuseOccPS\"\n\t#include \"aoSpecOccPS\"\n#endif\n#if LIT_REFLECTION_SOURCE == ENVATLASHQ\n\t#include \"envAtlasPS\"\n\t#include \"reflectionEnvHQPS\"\n#elif LIT_REFLECTION_SOURCE == ENVATLAS\n\t#include \"envAtlasPS\"\n\t#include \"reflectionEnvPS\"\n#elif LIT_REFLECTION_SOURCE == CUBEMAP\n\t#include \"reflectionCubePS\"\n#elif LIT_REFLECTION_SOURCE == SPHEREMAP\n\t#include \"reflectionSpherePS\"\n#endif\n#ifdef LIT_REFLECTIONS\n\t#ifdef LIT_CLEARCOAT\n\t\t#include \"reflectionCCPS\"\n\t#endif\n\t#ifdef LIT_SHEEN\n\t\t#include \"reflectionSheenPS\"\n\t#endif\n#endif\n#ifdef LIT_REFRACTION\n\t#if defined(LIT_DYNAMIC_REFRACTION)\n\t\t#include \"refractionDynamicPS\"\n\t#elif defined(LIT_REFLECTIONS)\n\t\t#include \"refractionCubePS\"\n\t#endif\n#endif\n#ifdef LIT_SHEEN\n\t#include \"lightSheenPS\"\n#endif\nuniform vec3 material_ambient;\n#ifdef LIT_SPECULAR\n\t#ifdef LIT_LIGHTING\n\t\t#ifdef LIT_GGX_SPECULAR\n\t\t\t#include \"lightSpecularAnisoGGXPS\"\n\t\t#else\n\t\t\t#include \"lightSpecularBlinnPS\"\n\t\t#endif\n\t#endif\n#endif\n#include \"combinePS\"\n#ifdef LIT_LIGHTMAP\n\t#include \"lightmapAddPS\"\n#endif\n#ifdef LIT_ADD_AMBIENT\n\t#include \"ambientPS\"\n#endif\n#ifdef LIT_MSDF\n\t#include \"msdfPS\"\n#endif\n#ifdef LIT_NEEDS_NORMAL\n\t#include \"viewDirPS\"\n\t#ifdef LIT_SPECULAR\n\t\t#ifdef LIT_GGX_SPECULAR\n\t\t\t#include \"reflDirAnisoPS\"\n\t\t#else\n\t\t\t#include \"reflDirPS\"\n\t\t#endif\n\t#endif\n#endif\n#include \"lightingPS\"\n`;\n\nvar litForwardPreCodePS$1 = `\n#include \"basePS\"\n#include \"sphericalPS\"\n#include \"decodePS\"\n#include \"gammaPS\"\n#include \"tonemappingPS\"\n#include \"fogPS\"\n#if LIT_NONE_SLICE_MODE == SLICED\n\t#include \"baseNineSlicedPS\"\n#elif LIT_NONE_SLICE_MODE == TILED\n\t#include \"baseNineSlicedTiledPS\"\n#endif\n#ifdef LIT_TBN\n\t#include \"TBNPS\"\n\t#ifdef LIT_TWO_SIDED_LIGHTING\n\t\t#include \"twoSidedLightingPS\"\n\t#endif\n#endif\n`;\n\nvar litMainPS$1 = `\n#include \"varyingsPS\"\n#include \"litUserDeclarationPS\"\n#include \"frontendDeclPS\"\n#if defined(PICK_PASS) || defined(PREPASS_PASS)\n\t#include \"frontendCodePS\"\n\t#include \"litUserCodePS\"\n\t#include \"litOtherMainPS\"\n#elif defined(SHADOW_PASS)\n\t#include \"frontendCodePS\"\n\t#include \"litUserCodePS\"\n\t#include \"litShadowMainPS\"\n#else\n\t#include \"litForwardDeclarationPS\"\n\t#include \"litForwardPreCodePS\"\n\t#include \"frontendCodePS\"\n\t#include \"litForwardPostCodePS\"\n\t#include \"litForwardBackendPS\"\n\t#include \"litUserCodePS\"\n\t#include \"litForwardMainPS\"\n#endif\n`;\n\nvar litMainVS$1 = `\n#include \"varyingsVS\"\n#include  \"litUserDeclarationVS\"\n#ifdef VERTEX_COLOR\n\tattribute vec4 vertex_color;\n#endif\n#ifdef NINESLICED\n\tvarying vec2 vMask;\n\tvarying vec2 vTiledUv;\n\tuniform mediump vec4 innerOffset;\n\tuniform mediump vec2 outerScale;\n\tuniform mediump vec4 atlasRect;\n#endif\nvec3 dPositionW;\nmat4 dModelMatrix;\n#include \"transformCoreVS\"\n#ifdef UV0\n\tattribute vec2 vertex_texCoord0;\n\t#include \"uv0VS\"\n#endif\n#ifdef UV1\n\tattribute vec2 vertex_texCoord1;\n\t#include \"uv1VS\"\n#endif\n#ifdef LINEAR_DEPTH\n\t#ifndef VIEWMATRIX\n\t#define VIEWMATRIX\n\t\tuniform mat4 matrix_view;\n\t#endif\n#endif\n#include \"transformVS\"\n#ifdef NORMALS\n\t#include \"normalCoreVS\"\n\t#include \"normalVS\"\n#endif\n#ifdef TANGENTS\n\tattribute vec4 vertex_tangent;\n#endif\n#include \"uvTransformUniformsPS, UV_TRANSFORMS_COUNT\"\n#ifdef MSDF\n\t#include \"msdfVS\"\n#endif\n#include  \"litUserCodeVS\"\nvoid main(void) {\n\t#include \"litUserMainStartVS\"\n\tgl_PointSize = 1.0;\n\tgl_Position = getPosition();\n\tvPositionW = getWorldPosition();\n\t#ifdef NORMALS\n\t\tvNormalW = getNormal();\n\t#endif\n\t#ifdef TANGENTS\n\t\tvTangentW = normalize(dNormalMatrix * vertex_tangent.xyz);\n\t\tvBinormalW = cross(vNormalW, vTangentW) * vertex_tangent.w;\n\t#elif defined(GGX_SPECULAR)\n\t\tvObjectSpaceUpW = normalize(dNormalMatrix * vec3(0, 1, 0));\n\t#endif\n\t#ifdef UV0\n\t\tvec2 uv0 = getUv0();\n\t\t#ifdef UV0_UNMODIFIED\n\t\t\tvUv0 = uv0;\n\t\t#endif\n\t#endif\n\t#ifdef UV1\n\t\tvec2 uv1 = getUv1();\n\t\t#ifdef UV1_UNMODIFIED\n\t\t\tvUv1 = uv1;\n\t\t#endif\n\t#endif\n\t#include \"uvTransformVS, UV_TRANSFORMS_COUNT\"\n\t#ifdef VERTEX_COLOR\n\t\tvVertexColor = vertex_color;\n\t#endif\n\t#ifdef LINEAR_DEPTH\n\t\tvLinearDepth = -(matrix_view * vec4(vPositionW, 1.0)).z;\n\t#endif\n\t#ifdef MSDF\n\t\tunpackMsdfParams();\n\t#endif\n\t#include \"litUserMainEndVS\"\n}\n`;\n\nvar litOtherMainPS$1 = `\n#ifdef PICK_PASS\n\t#include \"pickPS\"\n#endif\n#ifdef PREPASS_PASS\n\t#include \"floatAsUintPS\"\n#endif\nvoid main(void) {\n\t#include \"litUserMainStartPS\"\n\tevaluateFrontend();\n\t#ifdef PICK_PASS\n\t\tgl_FragColor = getPickOutput();\n\t#endif\n\t#ifdef PREPASS_PASS\n\t\tgl_FragColor = float2vec4(vLinearDepth);\n\t#endif\n\t#include \"litUserMainEndPS\"\n}\n`;\n\nvar litShaderArgsPS$1 = `\nvec3 litArgs_albedo;\nfloat litArgs_opacity;\nvec3 litArgs_emission;\nvec3 litArgs_worldNormal;\nfloat litArgs_ao;\nvec3 litArgs_lightmap;\nvec3 litArgs_lightmapDir;\nfloat litArgs_metalness;\nvec3 litArgs_specularity;\nfloat litArgs_specularityFactor;\nfloat litArgs_gloss;\nfloat litArgs_sheen_gloss;\nvec3 litArgs_sheen_specularity;\nfloat litArgs_transmission;\nfloat litArgs_thickness;\nfloat litArgs_ior;\nfloat litArgs_dispersion;\nfloat litArgs_iridescence_intensity;\nfloat litArgs_iridescence_thickness;\nvec3 litArgs_clearcoat_worldNormal;\nfloat litArgs_clearcoat_specularity;\nfloat litArgs_clearcoat_gloss;\n`;\n\nvar litShaderCorePS$1 = `\n\t#if LIT_NONE_SLICE_MODE == TILED\n\t\tconst float textureBias = -1000.0;\n\t#else\n\t\tuniform float textureBias;\n\t#endif\n\t#include \"litShaderArgsPS\"\n`;\n\nvar litShadowMainPS$1 = `\n#if LIGHT_TYPE != DIRECTIONAL\n\tuniform vec3 view_position;\n\tuniform float light_radius;\n#endif\n#if SHADOW_TYPE == PCSS_32F\n\t#include \"linearizeDepthPS\"\n#endif\nvoid main(void) {\n\t#include \"litUserMainStartPS\"\n\tevaluateFrontend();\n\t#ifdef PERSPECTIVE_DEPTH\n\t\tfloat depth = gl_FragCoord.z;\n\t\t#if SHADOW_TYPE == PCSS_32F\n\t\t\t#if LIGHT_TYPE != DIRECTIONAL\n\t\t\t\tdepth = linearizeDepthWithParams(depth, camera_params);\n\t\t\t#endif\n\t\t#endif\n\t#else\n\t\tfloat depth = min(distance(view_position, vPositionW) / light_radius, 0.99999);\n\t\t#define MODIFIED_DEPTH\n\t#endif\n\t#if SHADOW_TYPE == VSM_16F || SHADOW_TYPE == VSM_32F\n\t\t#if SHADOW_TYPE == VSM_32F\n\t\t\tfloat exponent = 15.0;\n\t\t#else\n\t\t\tfloat exponent = 5.54;\n\t\t#endif\n\t\tdepth = 2.0 * depth - 1.0;\n\t\tdepth =  exp(exponent * depth);\n\t\tgl_FragColor = vec4(depth, depth*depth, 1.0, 1.0);\n\t#else\n\t\t#if SHADOW_TYPE == PCSS_32F\n\t\t\tgl_FragColor.r = depth;\n\t\t#else\n\t\t\t#ifdef MODIFIED_DEPTH\n\t\t\t\tgl_FragDepth = depth;\n\t\t\t#endif\n\t\t\tgl_FragColor = vec4(1.0);\n\t\t#endif\n\t#endif\n\t#include \"litUserMainEndPS\"\n}\n`;\n\nvar ltcPS$1 = `\nmat3 transposeMat3( const in mat3 m ) {\n\tmat3 tmp;\n\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\n\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\n\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\n\treturn tmp;\n}\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\n\tconst float LUT_SIZE = 64.0;\n\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\n\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\n\tfloat dotNV = saturate( dot( N, V ) );\n\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\n\tuv = uv * LUT_SCALE + LUT_BIAS;\n\treturn uv;\n}\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\n\tfloat l = length( f );\n\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\n}\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\n\tfloat x = dot( v1, v2 );\n\tfloat y = abs( x );\n\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\n\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\n\tfloat v = a / b;\n\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\n\treturn cross( v1, v2 ) * theta_sintheta;\n}\nstruct Coords {\n\tvec3 coord0;\n\tvec3 coord1;\n\tvec3 coord2;\n\tvec3 coord3;\n};\nfloat LTC_EvaluateRect( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in Coords rectCoords) {\n\tvec3 v1 = rectCoords.coord1 - rectCoords.coord0;\n\tvec3 v2 = rectCoords.coord3 - rectCoords.coord0;\n\t\n\tvec3 lightNormal = cross( v1, v2 );\n\tfloat factor = sign(-dot( lightNormal, P - rectCoords.coord0 ));\n\tvec3 T1, T2;\n\tT1 = normalize( V - N * dot( V, N ) );\n\tT2 =  factor * cross( N, T1 );\n\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\n\tvec3 coords[ 4 ];\n\tcoords[ 0 ] = mat * ( rectCoords.coord0 - P );\n\tcoords[ 1 ] = mat * ( rectCoords.coord1 - P );\n\tcoords[ 2 ] = mat * ( rectCoords.coord2 - P );\n\tcoords[ 3 ] = mat * ( rectCoords.coord3 - P );\n\tcoords[ 0 ] = normalize( coords[ 0 ] );\n\tcoords[ 1 ] = normalize( coords[ 1 ] );\n\tcoords[ 2 ] = normalize( coords[ 2 ] );\n\tcoords[ 3 ] = normalize( coords[ 3 ] );\n\tvec3 vectorFormFactor = vec3( 0.0 );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\n\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\n\treturn result;\n}\nCoords dLTCCoords;\nCoords getLTCLightCoords(vec3 lightPos, vec3 halfWidth, vec3 halfHeight){\n\tCoords coords;\n\tcoords.coord0 = lightPos + halfWidth - halfHeight;\n\tcoords.coord1 = lightPos - halfWidth - halfHeight;\n\tcoords.coord2 = lightPos - halfWidth + halfHeight;\n\tcoords.coord3 = lightPos + halfWidth + halfHeight;\n\treturn coords;\n}\nfloat dSphereRadius;\nCoords getSphereLightCoords(vec3 lightPos, vec3 halfWidth, vec3 halfHeight){\n\tdSphereRadius = max(length(halfWidth), length(halfHeight));\n\tvec3 f = reflect(normalize(lightPos - view_position), vNormalW);\n\tvec3 w = normalize(cross(f, halfHeight));\n\tvec3 h = normalize(cross(f, w));\n\treturn getLTCLightCoords(lightPos, w * dSphereRadius, h * dSphereRadius);\n}\nvec2 dLTCUV;\n#ifdef LIT_CLEARCOAT\n\tvec2 ccLTCUV;\n#endif\nvec2 getLTCLightUV(float gloss, vec3 worldNormal, vec3 viewDir)\n{\n\tfloat roughness = max((1.0 - gloss) * (1.0 - gloss), 0.001);\n\treturn LTC_Uv( worldNormal, viewDir, roughness );\n}\nvec3 dLTCSpecFres;\n#ifdef LIT_CLEARCOAT\n\tvec3 ccLTCSpecFres;\n#endif\nvec3 getLTCLightSpecFres(vec2 uv, vec3 specularity)\n{\n\tvec4 t2 = texture2DLod(areaLightsLutTex2, uv, 0.0);\n\treturn specularity * t2.x + ( vec3( 1.0 ) - specularity) * t2.y;\n}\nvoid calcLTCLightValues(float gloss, vec3 worldNormal, vec3 viewDir, vec3 specularity, float clearcoatGloss, vec3 clearcoatWorldNormal, float clearcoatSpecularity)\n{\n\tdLTCUV = getLTCLightUV(gloss, worldNormal, viewDir);\n\tdLTCSpecFres = getLTCLightSpecFres(dLTCUV, specularity); \n#ifdef LIT_CLEARCOAT\n\tccLTCUV = getLTCLightUV(clearcoatGloss, clearcoatWorldNormal, viewDir);\n\tccLTCSpecFres = getLTCLightSpecFres(ccLTCUV, vec3(clearcoatSpecularity));\n#endif\n}\nvoid calcRectLightValues(vec3 lightPos, vec3 halfWidth, vec3 halfHeight) {\n\tdLTCCoords = getLTCLightCoords(lightPos, halfWidth, halfHeight);\n}\nvoid calcDiskLightValues(vec3 lightPos, vec3 halfWidth, vec3 halfHeight) {\n\tcalcRectLightValues(lightPos, halfWidth, halfHeight);\n}\nvoid calcSphereLightValues(vec3 lightPos, vec3 halfWidth, vec3 halfHeight) {\n\tdLTCCoords = getSphereLightCoords(lightPos, halfWidth, halfHeight);\n}\nvec3 SolveCubic(vec4 Coefficient)\n{\n\tfloat pi = 3.14159;\n\tCoefficient.xyz /= Coefficient.w;\n\tCoefficient.yz /= 3.0;\n\tfloat A = Coefficient.w;\n\tfloat B = Coefficient.z;\n\tfloat C = Coefficient.y;\n\tfloat D = Coefficient.x;\n\tvec3 Delta = vec3(\n\t\t-Coefficient.z * Coefficient.z + Coefficient.y,\n\t\t-Coefficient.y * Coefficient.z + Coefficient.x,\n\t\tdot(vec2(Coefficient.z, -Coefficient.y), Coefficient.xy)\n\t);\n\tfloat Discriminant = dot(vec2(4.0 * Delta.x, -Delta.y), Delta.zy);\n\tvec2 xlc, xsc;\n\t{\n\t\tfloat A_a = 1.0;\n\t\tfloat C_a = Delta.x;\n\t\tfloat D_a = -2.0 * B * Delta.x + Delta.y;\n\t\tfloat Theta = atan(sqrt(Discriminant), -D_a) / 3.0;\n\t\tfloat x_1a = 2.0 * sqrt(-C_a) * cos(Theta);\n\t\tfloat x_3a = 2.0 * sqrt(-C_a) * cos(Theta + (2.0 / 3.0) * pi);\n\t\tfloat xl;\n\t\tif ((x_1a + x_3a) > 2.0 * B)\n\t\t\txl = x_1a;\n\t\telse\n\t\t\txl = x_3a;\n\t\txlc = vec2(xl - B, A);\n\t}\n\t{\n\t\tfloat A_d = D;\n\t\tfloat C_d = Delta.z;\n\t\tfloat D_d = -D * Delta.y + 2.0 * C * Delta.z;\n\t\tfloat Theta = atan(D * sqrt(Discriminant), -D_d) / 3.0;\n\t\tfloat x_1d = 2.0 * sqrt(-C_d) * cos(Theta);\n\t\tfloat x_3d = 2.0 * sqrt(-C_d) * cos(Theta + (2.0 / 3.0) * pi);\n\t\tfloat xs;\n\t\tif (x_1d + x_3d < 2.0 * C)\n\t\t\txs = x_1d;\n\t\telse\n\t\t\txs = x_3d;\n\t\txsc = vec2(-D, xs + C);\n\t}\n\tfloat E =  xlc.y * xsc.y;\n\tfloat F = -xlc.x * xsc.y - xlc.y * xsc.x;\n\tfloat G =  xlc.x * xsc.x;\n\tvec2 xmc = vec2(C * F - B * G, -B * F + C * E);\n\tvec3 Root = vec3(xsc.x / xsc.y, xmc.x / xmc.y, xlc.x / xlc.y);\n\tif (Root.x < Root.y && Root.x < Root.z)\n\t\tRoot.xyz = Root.yxz;\n\telse if (Root.z < Root.x && Root.z < Root.y)\n\t\tRoot.xyz = Root.xzy;\n\treturn Root;\n}\nfloat LTC_EvaluateDisk(vec3 N, vec3 V, vec3 P, mat3 Minv, Coords points)\n{\n\tvec3 T1 = normalize(V - N * dot(V, N));\n\tvec3 T2 = cross(N, T1);\n\tmat3 R = transposeMat3( mat3( T1, T2, N ) );\n\tvec3 L_[ 3 ];\n\tL_[ 0 ] = R * ( points.coord0 - P );\n\tL_[ 1 ] = R * ( points.coord1 - P );\n\tL_[ 2 ] = R * ( points.coord2 - P );\n\tvec3 C  = 0.5 * (L_[0] + L_[2]);\n\tvec3 V1 = 0.5 * (L_[1] - L_[2]);\n\tvec3 V2 = 0.5 * (L_[1] - L_[0]);\n\tC  = Minv * C;\n\tV1 = Minv * V1;\n\tV2 = Minv * V2;\n\tfloat a, b;\n\tfloat d11 = dot(V1, V1);\n\tfloat d22 = dot(V2, V2);\n\tfloat d12 = dot(V1, V2);\n\tif (abs(d12) / sqrt(d11 * d22) > 0.0001)\n\t{\n\t\tfloat tr = d11 + d22;\n\t\tfloat det = -d12 * d12 + d11 * d22;\n\t\tdet = sqrt(det);\n\t\tfloat u = 0.5 * sqrt(tr - 2.0 * det);\n\t\tfloat v = 0.5 * sqrt(tr + 2.0 * det);\n\t\tfloat e_max = (u + v) * (u + v);\n\t\tfloat e_min = (u - v) * (u - v);\n\t\tvec3 V1_, V2_;\n\t\tif (d11 > d22)\n\t\t{\n\t\t\tV1_ = d12 * V1 + (e_max - d11) * V2;\n\t\t\tV2_ = d12 * V1 + (e_min - d11) * V2;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tV1_ = d12*V2 + (e_max - d22)*V1;\n\t\t\tV2_ = d12*V2 + (e_min - d22)*V1;\n\t\t}\n\t\ta = 1.0 / e_max;\n\t\tb = 1.0 / e_min;\n\t\tV1 = normalize(V1_);\n\t\tV2 = normalize(V2_);\n\t}\n\telse\n\t{\n\t\ta = 1.0 / dot(V1, V1);\n\t\tb = 1.0 / dot(V2, V2);\n\t\tV1 *= sqrt(a);\n\t\tV2 *= sqrt(b);\n\t}\n\tvec3 V3 = normalize(cross(V1, V2));\n\tif (dot(C, V3) < 0.0)\n\t\tV3 *= -1.0;\n\tfloat L  = dot(V3, C);\n\tfloat x0 = dot(V1, C) / L;\n\tfloat y0 = dot(V2, C) / L;\n\tfloat E1 = inversesqrt(a);\n\tfloat E2 = inversesqrt(b);\n\ta *= L * L;\n\tb *= L * L;\n\tfloat c0 = a * b;\n\tfloat c1 = a * b * (1.0 + x0 * x0 + y0 * y0) - a - b;\n\tfloat c2 = 1.0 - a * (1.0 + x0 * x0) - b * (1.0 + y0 * y0);\n\tfloat c3 = 1.0;\n\tvec3 roots = SolveCubic(vec4(c0, c1, c2, c3));\n\tfloat e1 = roots.x;\n\tfloat e2 = roots.y;\n\tfloat e3 = roots.z;\n\tvec3 avgDir = vec3(a * x0 / (a - e2), b * y0 / (b - e2), 1.0);\n\tmat3 rotate = mat3(V1, V2, V3);\n\tavgDir = rotate * avgDir;\n\tavgDir = normalize(avgDir);\n\tfloat L1 = sqrt(-e2 / e3);\n\tfloat L2 = sqrt(-e2 / e1);\n\tfloat formFactor = max(0.0, L1 * L2 * inversesqrt((1.0 + L1 * L1) * (1.0 + L2 * L2)));\n\t\n\tconst float LUT_SIZE = 64.0;\n\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\n\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\n\tvec2 uv = vec2(avgDir.z * 0.5 + 0.5, formFactor);\n\tuv = uv*LUT_SCALE + LUT_BIAS;\n\tfloat scale = texture2DLod(areaLightsLutTex2, uv, 0.0).w;\n\treturn formFactor*scale;\n}\nfloat FixNan(float value) {\n\t#ifdef WEBGPU\n\t\treturn value != value ? 0.0 : value;\n\t#else\n\t\treturn isnan(value) ? 0.0 : value;\n\t#endif\n}\nfloat getRectLightDiffuse(vec3 worldNormal, vec3 viewDir, vec3 lightDir, vec3 lightDirNorm) {\n\treturn LTC_EvaluateRect( worldNormal, viewDir, vPositionW, mat3( 1.0 ), dLTCCoords );\n}\nfloat getDiskLightDiffuse(vec3 worldNormal, vec3 viewDir, vec3 lightDir, vec3 lightDirNorm) {\n\treturn FixNan(LTC_EvaluateDisk( worldNormal, viewDir, vPositionW, mat3( 1.0 ), dLTCCoords ));\n}\nfloat getSphereLightDiffuse(vec3 worldNormal, vec3 viewDir, vec3 lightDir, vec3 lightDirNorm) {\n\tfloat falloff = dSphereRadius / (dot(lightDir, lightDir) + dSphereRadius);\n\treturn FixNan(getLightDiffuse(worldNormal, viewDir, lightDirNorm) * falloff);\n}\nmat3 getLTCLightInvMat(vec2 uv)\n{\n\tvec4 t1 = texture2DLod(areaLightsLutTex1, uv, 0.0);\n\treturn mat3(\n\t\tvec3( t1.x, 0, t1.y ),\n\t\tvec3(\t0, 1,\t0 ),\n\t\tvec3( t1.z, 0, t1.w )\n\t);\n}\nfloat calcRectLightSpecular(vec3 worldNormal, vec3 viewDir, vec2 uv) {\n\tmat3 mInv = getLTCLightInvMat(uv);\n\treturn LTC_EvaluateRect( worldNormal, viewDir, vPositionW, mInv, dLTCCoords );\n}\nfloat getRectLightSpecular(vec3 worldNormal, vec3 viewDir) {\n\treturn calcRectLightSpecular(worldNormal, viewDir, dLTCUV);\n}\nfloat calcDiskLightSpecular(vec3 worldNormal, vec3 viewDir, vec2 uv) {\n\tmat3 mInv = getLTCLightInvMat(uv);\n\treturn LTC_EvaluateDisk( worldNormal, viewDir, vPositionW, mInv, dLTCCoords );\n}\nfloat getDiskLightSpecular(vec3 worldNormal, vec3 viewDir) {\n\treturn calcDiskLightSpecular(worldNormal, viewDir, dLTCUV);\n}\nfloat getSphereLightSpecular(vec3 worldNormal, vec3 viewDir) {\n\treturn calcDiskLightSpecular(worldNormal, viewDir, dLTCUV);\n}\n`;\n\nvar metalnessPS$1 = `\n#ifdef STD_METALNESS_CONSTANT\nuniform float material_metalness;\n#endif\nvoid getMetalness() {\n\tfloat metalness = 1.0;\n\t#ifdef STD_METALNESS_CONSTANT\n\tmetalness *= material_metalness;\n\t#endif\n\t#ifdef STD_METALNESS_TEXTURE\n\tmetalness *= texture2DBias({STD_METALNESS_TEXTURE_NAME}, {STD_METALNESS_TEXTURE_UV}, textureBias).{STD_METALNESS_TEXTURE_CHANNEL};\n\t#endif\n\t#ifdef STD_METALNESS_VERTEX\n\tmetalness *= saturate(vVertexColor.{STD_METALNESS_VERTEX_CHANNEL});\n\t#endif\n\tdMetalness = metalness;\n}\n`;\n\nvar msdfPS$1 = `\nuniform sampler2D texture_msdfMap;\nfloat median(float r, float g, float b) {\n\treturn max(min(r, g), min(max(r, g), b));\n}\nfloat map (float min, float max, float v) {\n\treturn (v - min) / (max - min);\n}\nuniform float font_sdfIntensity;\nuniform float font_pxrange;\nuniform float font_textureWidth;\n#ifndef LIT_MSDF_TEXT_ATTRIBUTE\n\tuniform vec4 outline_color;\n\tuniform float outline_thickness;\n\tuniform vec4 shadow_color;\n\tuniform vec2 shadow_offset;\n#else\n\tvarying vec4 outline_color;\n\tvarying float outline_thickness;\n\tvarying vec4 shadow_color;\n\tvarying vec2 shadow_offset;\n#endif\nvec4 applyMsdf(vec4 color) {\n\tcolor.rgb = gammaCorrectInput(color.rgb);\n\tvec3 tsample = texture2D(texture_msdfMap, vUv0).rgb;\n\tvec2 uvShdw = vUv0 - shadow_offset;\n\tvec3 ssample = texture2D(texture_msdfMap, uvShdw).rgb;\n\tfloat sigDist = median(tsample.r, tsample.g, tsample.b);\n\tfloat sigDistShdw = median(ssample.r, ssample.g, ssample.b);\n\tfloat smoothingMax = 0.2;\n\tvec2 w = fwidth(vUv0);\n\tfloat smoothing = clamp(w.x * font_textureWidth / font_pxrange, 0.0, smoothingMax);\n\tfloat mapMin = 0.05;\n\tfloat mapMax = clamp(1.0 - font_sdfIntensity, mapMin, 1.0);\n\tfloat sigDistInner = map(mapMin, mapMax, sigDist);\n\tfloat sigDistOutline = map(mapMin, mapMax, sigDist + outline_thickness);\n\tsigDistShdw = map(mapMin, mapMax, sigDistShdw + outline_thickness);\n\tfloat center = 0.5;\n\tfloat inside = smoothstep(center-smoothing, center+smoothing, sigDistInner);\n\tfloat outline = smoothstep(center-smoothing, center+smoothing, sigDistOutline);\n\tfloat shadow = smoothstep(center-smoothing, center+smoothing, sigDistShdw);\n\tvec4 tcolor = (outline > inside) ? outline * vec4(outline_color.a * outline_color.rgb, outline_color.a) : vec4(0.0);\n\ttcolor = mix(tcolor, color, inside);\n\tvec4 scolor = (shadow > outline) ? shadow * vec4(shadow_color.a * shadow_color.rgb, shadow_color.a) : tcolor;\n\ttcolor = mix(scolor, tcolor, outline);\n\ttcolor.rgb = gammaCorrectOutput(tcolor.rgb);\n\t\n\treturn tcolor;\n}\n`;\n\nvar metalnessModulatePS$1 = `\nvec3 getSpecularModulate(in vec3 specularity, in vec3 albedo, in float metalness, in float f0) {\n\tvec3 dielectricF0 = f0 * specularity;\n\treturn mix(dielectricF0, albedo, metalness);\n}\nvec3 getAlbedoModulate(in vec3 albedo, in float metalness) {\n\treturn albedo * (1.0 - metalness);\n}\n`;\n\nvar morphPS$1 = `\n\tvarying vec2 uv0;\n\tuniform sampler2DArray morphTexture;\n\tuniform highp float morphFactor[{MORPH_TEXTURE_MAX_COUNT}];\n\tuniform highp uint morphIndex[{MORPH_TEXTURE_MAX_COUNT}];\n\tuniform int count;\n\t#ifdef MORPH_INT\n\t\tuniform vec3 aabbSize;\n\t\tuniform vec3 aabbMin;\n\t#endif\n\tvoid main (void) {\n\t\thighp vec3 color = vec3(0, 0, 0);\n\t\tivec2 pixelCoords = ivec2(uv0 * vec2(textureSize(morphTexture, 0).xy));\n\t\t\n\t\tfor (int i = 0; i < count; i++) {\n\t\t\tuint textureIndex = morphIndex[i];\n\t\t\tvec3 delta = texelFetch(morphTexture, ivec3(pixelCoords, int(textureIndex)), 0).xyz;\n\t\t\tcolor += morphFactor[i] * delta;\n\t\t}\n\t\t#ifdef MORPH_INT\n\t\t\tcolor = (color - aabbMin) / aabbSize * 65535.0;\n\t\t\tgl_FragColor = uvec4(color, 1u);\n\t\t#else\n\t\t\tgl_FragColor = vec4(color, 1.0);\n\t\t#endif\n\t}\n`;\n\nvar morphVS$1 = `\n\tattribute vec2 vertex_position;\n\tvarying vec2 uv0;\n\tvoid main(void) {\n\t\tgl_Position = vec4(vertex_position, 0.5, 1.0);\n\t\tuv0 = vertex_position.xy * 0.5 + 0.5;\n\t}\n`;\n\nvar msdfVS$1 = `\nattribute vec3 vertex_outlineParameters;\nattribute vec3 vertex_shadowParameters;\nvarying vec4 outline_color;\nvarying float outline_thickness;\nvarying vec4 shadow_color;\nvarying vec2 shadow_offset;\nvoid unpackMsdfParams() {\n\tvec3 little = mod(vertex_outlineParameters, 256.);\n\tvec3 big = (vertex_outlineParameters - little) / 256.;\n\toutline_color.rb = little.xy / 255.;\n\toutline_color.ga = big.xy / 255.;\n\toutline_thickness = little.z / 255. * 0.2;\n\tlittle = mod(vertex_shadowParameters, 256.);\n\tbig = (vertex_shadowParameters - little) / 256.;\n\tshadow_color.rb = little.xy / 255.;\n\tshadow_color.ga = big.xy / 255.;\n\tshadow_offset = (vec2(little.z, big.z) / 127. - 1.) * 0.005;\n}\n`;\n\nvar normalVS$1 = `\nmat3 dNormalMatrix;\nvec3 getNormal() {\n\tdNormalMatrix = getNormalMatrix(dModelMatrix);\n\tvec3 localNormal = getLocalNormal(vertex_normal);\n\treturn normalize(dNormalMatrix * localNormal);\n}\n`;\n\nvar normalCoreVS$1 = `\nattribute vec3 vertex_normal;\nuniform mat3 matrix_normal;\n#ifdef MORPHING_NORMAL\n\t#ifdef MORPHING_INT\n\t\tuniform highp usampler2D morphNormalTex;\n\t#else\n\t\tuniform highp sampler2D morphNormalTex;\n\t#endif\n#endif\nvec3 getLocalNormal(vec3 vertexNormal) {\n\tvec3 localNormal = vertex_normal;\n\t#ifdef MORPHING_NORMAL\n\t\tivec2 morphUV = getTextureMorphCoords();\n\t\t#ifdef MORPHING_INT\n\t\t\tvec3 morphNormal = vec3(texelFetch(morphNormalTex, ivec2(morphUV), 0).xyz) / 65535.0 * 2.0 - 1.0;\n\t\t#else\n\t\t\tvec3 morphNormal = texelFetch(morphNormalTex, ivec2(morphUV), 0).xyz;\n\t\t#endif\n\t\tlocalNormal += morphNormal;\n\t#endif\n\treturn localNormal;\n}\n#if defined(SKIN) || defined(BATCH)\n\tmat3 getNormalMatrix(mat4 modelMatrix) {\n\t\treturn mat3(modelMatrix[0].xyz, modelMatrix[1].xyz, modelMatrix[2].xyz);\n\t}\n#elif defined(INSTANCING)\n\tmat3 getNormalMatrix(mat4 modelMatrix) {\n\t\treturn mat3(modelMatrix[0].xyz, modelMatrix[1].xyz, modelMatrix[2].xyz);\n\t}\n#else\n\tmat3 getNormalMatrix(mat4 modelMatrix) {\n\t\treturn matrix_normal;\n\t}\n#endif\n`;\n\nvar normalMapPS$1 = `\n#ifdef STD_NORMAL_TEXTURE\n\tuniform float material_bumpiness;\n#endif\n#ifdef STD_NORMALDETAIL_TEXTURE\n\tuniform float material_normalDetailMapBumpiness;\n\tvec3 blendNormals(vec3 n1, vec3 n2) {\n\t\tn1 += vec3(0, 0, 1);\n\t\tn2 *= vec3(-1, -1, 1);\n\t\treturn n1 * dot(n1, n2) / n1.z - n2;\n\t}\n#endif\nvoid getNormal() {\n#ifdef STD_NORMAL_TEXTURE\n\tvec3 normalMap = {STD_NORMAL_TEXTURE_DECODE}(texture2DBias({STD_NORMAL_TEXTURE_NAME}, {STD_NORMAL_TEXTURE_UV}, textureBias));\n\tnormalMap = mix(vec3(0.0, 0.0, 1.0), normalMap, material_bumpiness);\n\t#ifdef STD_NORMALDETAIL_TEXTURE\n\t\tvec3 normalDetailMap = {STD_NORMALDETAIL_TEXTURE_DECODE}(texture2DBias({STD_NORMALDETAIL_TEXTURE_NAME}, {STD_NORMALDETAIL_TEXTURE_UV}, textureBias));\n\t\tnormalDetailMap = mix(vec3(0.0, 0.0, 1.0), normalDetailMap, material_normalDetailMapBumpiness);\n\t\tnormalMap = blendNormals(normalMap, normalDetailMap);\n\t#endif\n\tdNormalW = normalize(dTBN * normalMap);\n#else\n\tdNormalW = dVertexNormalW;\n#endif\n}\n`;\n\nvar opacityPS$1 = `\nuniform float material_opacity;\nvoid getOpacity() {\n\tdAlpha = material_opacity;\n\t#ifdef STD_OPACITY_TEXTURE\n\tdAlpha *= texture2DBias({STD_OPACITY_TEXTURE_NAME}, {STD_OPACITY_TEXTURE_UV}, textureBias).{STD_OPACITY_TEXTURE_CHANNEL};\n\t#endif\n\t#ifdef STD_OPACITY_VERTEX\n\tdAlpha *= clamp(vVertexColor.{STD_OPACITY_VERTEX_CHANNEL}, 0.0, 1.0);\n\t#endif\n}\n`;\n\nvar opacityDitherPS$1 = `\n#if STD_OPACITY_DITHER == BAYER8\n\t#include \"bayerPS\"\n#endif\nuniform vec4 blueNoiseJitter;\n#if STD_OPACITY_DITHER == BLUENOISE\n\tuniform sampler2D blueNoiseTex32;\n#endif\nvoid opacityDither(float alpha, float id) {\n\t#if STD_OPACITY_DITHER == BAYER8\n\t\tfloat noise = bayer8(floor(mod(gl_FragCoord.xy + blueNoiseJitter.xy + id, 8.0))) / 64.0;\n\t#else\n\t\t#if STD_OPACITY_DITHER == BLUENOISE\n\t\t\tvec2 uv = fract(gl_FragCoord.xy / 32.0 + blueNoiseJitter.xy + id);\n\t\t\tfloat noise = texture2DLod(blueNoiseTex32, uv, 0.0).y;\n\t\t#endif\n\t\t#if STD_OPACITY_DITHER == IGNNOISE\n\t\t\tvec3 magic = vec3(0.06711056, 0.00583715, 52.9829189);\n\t\t\tfloat noise = fract(magic.z * fract(dot(gl_FragCoord.xy + blueNoiseJitter.xy + id, magic.xy)));\n\t\t#endif\n\t#endif\n\tnoise = pow(noise, 2.2);\n\tif (alpha < noise)\n\t\tdiscard;\n}\n`;\n\nvar outputPS$1 = `\n`;\n\nvar packHalfPS$1 = `\n#if defined(PLATFORM_ANDROID)\n\tuint floatToHalf(float a) {\n\t\tuint u\t= floatBitsToUint(a);\n\t\tuint sign = (u >> 16u) & 0x8000u;\n\t\tuint absu = u & 0x7FFFFFFFu;\n\t\tuint man  = u & 0x007FFFFFu;\n\t\tint  e32  = int((u >> 23u) & 0xFFu) - 127;\n\t\t\n\t\tif ((absu & 0x7F800000u) == 0x7F800000u) {\n\t\t\tbool isnan = (man != 0u);\n\t\t\treturn sign | (isnan ? 0x7E00u : 0x7C00u);\n\t\t}\n\t\t\n\t\tif (e32 > 15) return sign | 0x7C00u;\n\t\t\n\t\tif (e32 >= -14) {\n\t\t\tuint he  = uint(e32 + 15);\n\t\t\tuint hm  = man >> 13u;\n\t\t\tuint rem = man & 0x1FFFu;\n\t\t\tuint add = (rem > 0x1000u || (rem == 0x1000u && (hm & 1u) == 1u)) ? 1u : 0u;\n\t\t\thm = (hm + add) & 0x3FFu;\n\t\t\tif ((hm & 0x400u) != 0u) {\n\t\t\t\thm = 0u; he = he + 1u;\n\t\t\t\tif (he >= 31u) return sign | 0x7C00u;\n\t\t\t}\n\t\t\treturn sign | (he << 10u) | hm;\n\t\t}\n\t\t\n\t\tif (e32 >= -24) {\n\t\t\tuint s\t  = uint(-(e32 + 1));\n\t\t\tuint mnorm  = 0x00800000u | man;\n\t\t\tuint hm\t = mnorm >> s;\n\t\t\tuint mask   = (1u << s) - 1u;\n\t\t\tuint rem\t= mnorm & mask;\n\t\t\tuint halfBt = 1u << (s - 1u);\n\t\t\tuint add\t= (rem > halfBt || (rem == halfBt && (hm & 1u) == 1u)) ? 1u : 0u;\n\t\t\thm = hm + add;\n\t\t\tif (hm >= 0x400u) return sign | (1u << 10u);\n\t\t\treturn sign | hm;\n\t\t}\n\t\t\n\t\treturn sign;\n\t}\n\tuint packHalf2x16Safe(vec2 v) {\n\t\tuint u_x  = floatBitsToUint(v.x);\n\t\tuint u_y  = floatBitsToUint(v.y);\n\t\t\n\t\tint  e32_x = int((u_x >> 23u) & 0xFFu) - 127;\n\t\tint  e32_y = int((u_y >> 23u) & 0xFFu) - 127;\n\t\t\n\t\tif (e32_x < -14 || e32_y < -14) {\n\t\t\treturn (floatToHalf(v.y) << 16u) | floatToHalf(v.x);\n\t\t}\n\t\t\n\t\treturn packHalf2x16(v);\n\t}\n#else\n\tuint packHalf2x16Safe(vec2 v) {\n\t\treturn packHalf2x16(v);\n\t}\n#endif\n`;\n\nvar outputAlphaPS$1 = `\n#if LIT_BLEND_TYPE == NORMAL || LIT_BLEND_TYPE == ADDITIVEALPHA || defined(LIT_ALPHA_TO_COVERAGE)\n\tgl_FragColor.a = litArgs_opacity;\n#elif LIT_BLEND_TYPE == PREMULTIPLIED\n\tgl_FragColor.rgb *= litArgs_opacity;\n\tgl_FragColor.a = litArgs_opacity;\n#else\n\tgl_FragColor.a = 1.0;\n#endif\n`;\n\nvar outputTex2DPS$1 = `\nvarying vec2 vUv0;\nuniform sampler2D source;\nvoid main(void) {\n\tgl_FragColor = texture2D(source, vUv0);\n}\n`;\n\nvar sheenPS$1 = `\nuniform vec3 material_sheen;\nvoid getSheen() {\n\tvec3 sheenColor = material_sheen;\n\t#ifdef STD_SHEEN_TEXTURE\n\tsheenColor *= {STD_SHEEN_TEXTURE_DECODE}(texture2DBias({STD_SHEEN_TEXTURE_NAME}, {STD_SHEEN_TEXTURE_UV}, textureBias)).{STD_SHEEN_TEXTURE_CHANNEL};\n\t#endif\n\t#ifdef STD_SHEEN_VERTEX\n\tsheenColor *= saturate(vVertexColor.{STD_SHEEN_VERTEX_CHANNEL});\n\t#endif\n\tsSpecularity = sheenColor;\n}\n`;\n\nvar sheenGlossPS$1 = `\nuniform float material_sheenGloss;\nvoid getSheenGlossiness() {\n\tfloat sheenGlossiness = material_sheenGloss;\n\t#ifdef STD_SHEENGLOSS_TEXTURE\n\tsheenGlossiness *= texture2DBias({STD_SHEENGLOSS_TEXTURE_NAME}, {STD_SHEENGLOSS_TEXTURE_UV}, textureBias).{STD_SHEENGLOSS_TEXTURE_CHANNEL};\n\t#endif\n\t#ifdef STD_SHEENGLOSS_VERTEX\n\tsheenGlossiness *= saturate(vVertexColor.{STD_SHEENGLOSS_VERTEX_CHANNEL});\n\t#endif\n\t#ifdef STD_SHEENGLOSS_INVERT\n\tsheenGlossiness = 1.0 - sheenGlossiness;\n\t#endif\n\tsGlossiness = sheenGlossiness + 0.0000001;\n}\n`;\n\nvar parallaxPS$1 = `\nuniform float material_heightMapFactor;\nvoid getParallax() {\n\tfloat parallaxScale = material_heightMapFactor;\n\tfloat height = texture2DBias({STD_HEIGHT_TEXTURE_NAME}, {STD_HEIGHT_TEXTURE_UV}, textureBias).{STD_HEIGHT_TEXTURE_CHANNEL};\n\theight = height * parallaxScale - parallaxScale * 0.5;\n\tvec3 viewDirT = dViewDirW * dTBN;\n\tviewDirT.z += 0.42;\n\tdUvOffset = height * (viewDirT.xy / viewDirT.z);\n}\n`;\n\nvar pickPS$1 = `\nuniform uint meshInstanceId;\nvec4 getPickOutput() {\n\tconst vec4 inv = vec4(1.0 / 255.0);\n\tconst uvec4 shifts = uvec4(16, 8, 0, 24);\n\tuvec4 col = (uvec4(meshInstanceId) >> shifts) & uvec4(0xff);\n\treturn vec4(col) * inv;\n}\n`;\n\nvar reflDirPS$1 = `\nvoid getReflDir(vec3 worldNormal, vec3 viewDir, float gloss, mat3 tbn) {\n\tdReflDirW = normalize(-reflect(viewDir, worldNormal));\n}\n`;\n\nvar reflDirAnisoPS$1 = `\nvoid getReflDir(vec3 worldNormal, vec3 viewDir, float gloss, mat3 tbn) {\n\tfloat roughness = sqrt(1.0 - min(gloss, 1.0));\n\tvec2 direction = dAnisotropyRotation;\n\tvec3 anisotropicT = normalize(tbn * vec3(direction, 0.0));\n\tvec3 anisotropicB = normalize(cross(tbn[2], anisotropicT));\n\tfloat anisotropy = dAnisotropy;\n\tvec3 anisotropicDirection = anisotropicB;\n\tvec3 anisotropicTangent = cross(anisotropicDirection, viewDir);\n\tvec3 anisotropicNormal = cross(anisotropicTangent, anisotropicDirection);\n\tfloat bendFactor = 1.0 - anisotropy * (1.0 - roughness);\n\tfloat bendFactor4 = bendFactor * bendFactor * bendFactor * bendFactor;\n\tvec3 bentNormal = normalize(mix(normalize(anisotropicNormal), normalize(worldNormal), bendFactor4));\n\tdReflDirW = reflect(-viewDir, bentNormal);\n}\n`;\n\nvar reflectionCCPS$1 = `\n#ifdef LIT_CLEARCOAT\nvoid addReflectionCC(vec3 reflDir, float gloss) {\n\tccReflection += calcReflection(reflDir, gloss);\n}\n#endif\n`;\n\nvar reflectionCubePS$1 = `\nuniform samplerCube texture_cubeMap;\nuniform float material_reflectivity;\nvec3 calcReflection(vec3 reflDir, float gloss) {\n\tvec3 lookupVec = cubeMapProject(reflDir);\n\tlookupVec.x *= -1.0;\n\treturn {reflectionDecode}(textureCube(texture_cubeMap, lookupVec));\n}\nvoid addReflection(vec3 reflDir, float gloss) {   \n\tdReflection += vec4(calcReflection(reflDir, gloss), material_reflectivity);\n}\n`;\n\nvar reflectionEnvHQPS$1 = `\n#ifndef ENV_ATLAS\n\t#define ENV_ATLAS\n\tuniform sampler2D texture_envAtlas;\n#endif\nuniform samplerCube texture_cubeMap;\nuniform float material_reflectivity;\nvec3 calcReflection(vec3 reflDir, float gloss) {\n\tvec3 dir = cubeMapProject(reflDir) * vec3(-1.0, 1.0, 1.0);\n\tvec2 uv = toSphericalUv(dir);\n\tfloat level = saturate(1.0 - gloss) * 5.0;\n\tfloat ilevel = floor(level);\n\tfloat flevel = level - ilevel;\n\tvec3 sharp = {reflectionCubemapDecode}(textureCube(texture_cubeMap, dir));\n\tvec3 roughA = {reflectionDecode}(texture2D(texture_envAtlas, mapRoughnessUv(uv, ilevel)));\n\tvec3 roughB = {reflectionDecode}(texture2D(texture_envAtlas, mapRoughnessUv(uv, ilevel + 1.0)));\n\treturn processEnvironment(mix(sharp, mix(roughA, roughB, flevel), min(level, 1.0)));\n}\nvoid addReflection(vec3 reflDir, float gloss) {   \n\tdReflection += vec4(calcReflection(reflDir, gloss), material_reflectivity);\n}\n`;\n\nvar reflectionEnvPS$1 = `\n#ifndef ENV_ATLAS\n#define ENV_ATLAS\n\tuniform sampler2D texture_envAtlas;\n#endif\nuniform float material_reflectivity;\nfloat shinyMipLevel(vec2 uv) {\n\tvec2 dx = dFdx(uv);\n\tvec2 dy = dFdy(uv);\n\tvec2 uv2 = vec2(fract(uv.x + 0.5), uv.y);\n\tvec2 dx2 = dFdx(uv2);\n\tvec2 dy2 = dFdy(uv2);\n\tfloat maxd = min(max(dot(dx, dx), dot(dy, dy)), max(dot(dx2, dx2), dot(dy2, dy2)));\n\treturn clamp(0.5 * log2(maxd) - 1.0 + textureBias, 0.0, 5.0);\n}\nvec3 calcReflection(vec3 reflDir, float gloss) {\n\tvec3 dir = cubeMapProject(reflDir) * vec3(-1.0, 1.0, 1.0);\n\tvec2 uv = toSphericalUv(dir);\n\tfloat level = saturate(1.0 - gloss) * 5.0;\n\tfloat ilevel = floor(level);\n\tfloat level2 = shinyMipLevel(uv * atlasSize);\n\tfloat ilevel2 = floor(level2);\n\tvec2 uv0, uv1;\n\tfloat weight;\n\tif (ilevel == 0.0) {\n\t\tuv0 = mapShinyUv(uv, ilevel2);\n\t\tuv1 = mapShinyUv(uv, ilevel2 + 1.0);\n\t\tweight = level2 - ilevel2;\n\t} else {\n\t\tuv0 = uv1 = mapRoughnessUv(uv, ilevel);\n\t\tweight = 0.0;\n\t}\n\tvec3 linearA = {reflectionDecode}(texture2D(texture_envAtlas, uv0));\n\tvec3 linearB = {reflectionDecode}(texture2D(texture_envAtlas, uv1));\n\tvec3 linear0 = mix(linearA, linearB, weight);\n\tvec3 linear1 = {reflectionDecode}(texture2D(texture_envAtlas, mapRoughnessUv(uv, ilevel + 1.0)));\n\treturn processEnvironment(mix(linear0, linear1, level - ilevel));\n}\nvoid addReflection(vec3 reflDir, float gloss) {   \n\tdReflection += vec4(calcReflection(reflDir, gloss), material_reflectivity);\n}\n`;\n\nvar reflectionSpherePS$1 = `\n#ifndef VIEWMATRIX\n\t#define VIEWMATRIX\n\tuniform mat4 matrix_view;\n#endif\nuniform sampler2D texture_sphereMap;\nuniform float material_reflectivity;\nvec3 calcReflection(vec3 reflDir, float gloss) {\n\tvec3 reflDirV = (mat3(matrix_view) * reflDir);\n\tfloat m = 2.0 * sqrt(dot(reflDirV.xy, reflDirV.xy) + (reflDirV.z + 1.0) * (reflDirV.z + 1.0));\n\tvec2 sphereMapUv = reflDirV.xy / m + 0.5;\n\treturn {reflectionDecode}(texture2D(texture_sphereMap, sphereMapUv));\n}\nvoid addReflection(vec3 reflDir, float gloss) {   \n\tdReflection += vec4(calcReflection(reflDir, gloss), material_reflectivity);\n}\n`;\n\nvar reflectionSheenPS$1 = `\nvoid addReflectionSheen(vec3 worldNormal, vec3 viewDir, float gloss) {\n\tfloat NoV = dot(worldNormal, viewDir);\n\tfloat alphaG = gloss * gloss;\n\tfloat a = gloss < 0.25 ? -339.2 * alphaG + 161.4 * gloss - 25.9 : -8.48 * alphaG + 14.3 * gloss - 9.95;\n\tfloat b = gloss < 0.25 ? 44.0 * alphaG - 23.7 * gloss + 3.26 : 1.97 * alphaG - 3.27 * gloss + 0.72;\n\tfloat DG = exp( a * NoV + b ) + ( gloss < 0.25 ? 0.0 : 0.1 * ( gloss - 0.25 ) );\n\tsReflection += calcReflection(worldNormal, 0.0) * saturate(DG);\n}\n`;\n\nvar refractionCubePS$1 = `\nvec3 refract2(vec3 viewVec, vec3 normal, float IOR) {\n\tfloat vn = dot(viewVec, normal);\n\tfloat k = 1.0 - IOR * IOR * (1.0 - vn * vn);\n\tvec3 refrVec = IOR * viewVec - (IOR * vn + sqrt(k)) * normal;\n\treturn refrVec;\n}\nvoid addRefraction(\n\tvec3 worldNormal, \n\tvec3 viewDir, \n\tfloat thickness, \n\tfloat gloss, \n\tvec3 specularity, \n\tvec3 albedo, \n\tfloat transmission,\n\tfloat refractionIndex,\n\tfloat dispersion\n#if defined(LIT_IRIDESCENCE)\n\t, vec3 iridescenceFresnel,\n\tfloat iridescenceIntensity\n#endif \n) {\n\tvec4 tmpRefl = dReflection;\n\tvec3 reflectionDir = refract2(-viewDir, worldNormal, refractionIndex);\n\tdReflection = vec4(0);\n\taddReflection(reflectionDir, gloss);\n\tdDiffuseLight = mix(dDiffuseLight, dReflection.rgb * albedo, transmission);\n\tdReflection = tmpRefl;\n}\n`;\n\nvar refractionDynamicPS$1 = `\nuniform float material_invAttenuationDistance;\nuniform vec3 material_attenuation;\nvec3 evalRefractionColor(vec3 refractionVector, float gloss, float refractionIndex) {\n\tvec4 pointOfRefraction = vec4(vPositionW + refractionVector, 1.0);\n\tvec4 projectionPoint = matrix_viewProjection * pointOfRefraction;\n\tvec2 uv = getGrabScreenPos(projectionPoint);\n\tfloat iorToRoughness = (1.0 - gloss) * clamp((1.0 / refractionIndex) * 2.0 - 2.0, 0.0, 1.0);\n\tfloat refractionLod = log2(uScreenSize.x) * iorToRoughness;\n\tvec3 refraction = texture2DLod(uSceneColorMap, uv, refractionLod).rgb;\n\treturn refraction;\n}\nvoid addRefraction(\n\tvec3 worldNormal, \n\tvec3 viewDir, \n\tfloat thickness, \n\tfloat gloss, \n\tvec3 specularity, \n\tvec3 albedo, \n\tfloat transmission,\n\tfloat refractionIndex,\n\tfloat dispersion\n#if defined(LIT_IRIDESCENCE)\n\t, vec3 iridescenceFresnel,\n\tfloat iridescenceIntensity\n#endif\n) {\n\tvec3 modelScale;\n\tmodelScale.x = length(vec3(matrix_model[0].xyz));\n\tmodelScale.y = length(vec3(matrix_model[1].xyz));\n\tmodelScale.z = length(vec3(matrix_model[2].xyz));\n\tvec3 scale = thickness * modelScale;\n\tvec3 refractionVector = normalize(refract(-viewDir, worldNormal, refractionIndex)) * scale;\n\tvec3 refraction = evalRefractionColor(refractionVector, gloss, refractionIndex);\n\t#ifdef LIT_DISPERSION\n\t\tfloat halfSpread = (1.0 / refractionIndex - 1.0) * 0.025 * dispersion;\n\t\tfloat refractionIndexR = refractionIndex - halfSpread;\n\t\trefractionVector = normalize(refract(-viewDir, worldNormal, refractionIndexR)) * scale;\n\t\trefraction.r = evalRefractionColor(refractionVector, gloss, refractionIndexR).r;\n\t\tfloat refractionIndexB = refractionIndex + halfSpread;\n\t\trefractionVector = normalize(refract(-viewDir, worldNormal, refractionIndexB)) * scale;\n\t\trefraction.b = evalRefractionColor(refractionVector, gloss, refractionIndexB).b;\n\t#endif\n\tvec3 transmittance;\n\tif (material_invAttenuationDistance != 0.0)\n\t{\n\t\tvec3 attenuation = -log(material_attenuation) * material_invAttenuationDistance;\n\t\ttransmittance = exp(-attenuation * length(refractionVector));\n\t}\n\telse\n\t{\n\t\ttransmittance = refraction;\n\t}\n\tvec3 fresnel = vec3(1.0) - \n\t\tgetFresnel(\n\t\t\tdot(viewDir, worldNormal), \n\t\t\tgloss, \n\t\t\tspecularity\n\t\t#if defined(LIT_IRIDESCENCE)\n\t\t\t, iridescenceFresnel,\n\t\t\tiridescenceIntensity\n\t\t#endif\n\t\t);\n\tdDiffuseLight = mix(dDiffuseLight, refraction * transmittance * fresnel, transmission);\n}\n`;\n\nvar reprojectPS$1 = `\nvarying vec2 vUv0;\n#ifdef CUBEMAP_SOURCE\n\tuniform samplerCube sourceCube;\n#else\n\tuniform sampler2D sourceTex;\n#endif\n#ifdef USE_SAMPLES_TEX\n\tuniform sampler2D samplesTex;\n\tuniform vec2 samplesTexInverseSize;\n#endif\nuniform vec3 params;\nfloat targetFace() { return params.x; }\nfloat targetTotalPixels() { return params.y; }\nfloat sourceTotalPixels() { return params.z; }\nfloat PI = 3.141592653589793;\nfloat saturate(float x) {\n\treturn clamp(x, 0.0, 1.0);\n}\n#include \"decodePS\"\n#include \"encodePS\"\nvec3 modifySeams(vec3 dir, float scale) {\n\tvec3 adir = abs(dir);\n\tfloat M = max(max(adir.x, adir.y), adir.z);\n\treturn dir / M * vec3(\n\t\tadir.x == M ? 1.0 : scale,\n\t\tadir.y == M ? 1.0 : scale,\n\t\tadir.z == M ? 1.0 : scale\n\t);\n}\nvec2 toSpherical(vec3 dir) {\n\treturn vec2(dir.xz == vec2(0.0) ? 0.0 : atan(dir.x, dir.z), asin(dir.y));\n}\nvec3 fromSpherical(vec2 uv) {\n\treturn vec3(cos(uv.y) * sin(uv.x),\n\t\t\t\tsin(uv.y),\n\t\t\t\tcos(uv.y) * cos(uv.x));\n}\nvec3 getDirectionEquirect() {\n\treturn fromSpherical((vec2(vUv0.x, 1.0 - vUv0.y) * 2.0 - 1.0) * vec2(PI, PI * 0.5));\n}\nfloat signNotZero(float k){\n\treturn(k >= 0.0) ? 1.0 : -1.0;\n}\nvec2 signNotZero(vec2 v) {\n\treturn vec2(signNotZero(v.x), signNotZero(v.y));\n}\nvec3 octDecode(vec2 o) {\n\tvec3 v = vec3(o.x, 1.0 - abs(o.x) - abs(o.y), o.y);\n\tif (v.y < 0.0) {\n\t\tv.xz = (1.0 - abs(v.zx)) * signNotZero(v.xz);\n\t}\n\treturn normalize(v);\n}\nvec3 getDirectionOctahedral() {\n\treturn octDecode(vec2(vUv0.x, 1.0 - vUv0.y) * 2.0 - 1.0);\n}\nvec2 octEncode(in vec3 v) {\n\tfloat l1norm = abs(v.x) + abs(v.y) + abs(v.z);\n\tvec2 result = v.xz * (1.0 / l1norm);\n\tif (v.y < 0.0) {\n\t\tresult = (1.0 - abs(result.yx)) * signNotZero(result.xy);\n\t}\n\treturn result;\n}\n#ifdef CUBEMAP_SOURCE\n\tvec4 sampleCubemap(vec3 dir) {\n\t\treturn textureCube(sourceCube, modifySeams(dir, 1.0));\n\t}\n\tvec4 sampleCubemap(vec2 sph) {\n\t\treturn sampleCubemap(fromSpherical(sph));\n\t}\n\tvec4 sampleCubemap(vec3 dir, float mipLevel) {\n\t\treturn textureCubeLod(sourceCube, modifySeams(dir, 1.0), mipLevel);\n\t}\n\tvec4 sampleCubemap(vec2 sph, float mipLevel) {\n\t\treturn sampleCubemap(fromSpherical(sph), mipLevel);\n\t}\n#else\n\tvec4 sampleEquirect(vec2 sph) {\n\t\tvec2 uv = sph / vec2(PI * 2.0, PI) + 0.5;\n\t\treturn texture2D(sourceTex, vec2(uv.x, 1.0 - uv.y));\n\t}\n\tvec4 sampleEquirect(vec3 dir) {\n\t\treturn sampleEquirect(toSpherical(dir));\n\t}\n\tvec4 sampleEquirect(vec2 sph, float mipLevel) {\n\t\tvec2 uv = sph / vec2(PI * 2.0, PI) + 0.5;\n\t\treturn texture2DLod(sourceTex, vec2(uv.x, 1.0 - uv.y), mipLevel);\n\t}\n\tvec4 sampleEquirect(vec3 dir, float mipLevel) {\n\t\treturn sampleEquirect(toSpherical(dir), mipLevel);\n\t}\n\tvec4 sampleOctahedral(vec3 dir) {\n\t\tvec2 uv = octEncode(dir) * 0.5 + 0.5;\n\t\treturn texture2D(sourceTex, vec2(uv.x, 1.0 - uv.y));\n\t}\n\tvec4 sampleOctahedral(vec2 sph) {\n\t\treturn sampleOctahedral(fromSpherical(sph));\n\t}\n\tvec4 sampleOctahedral(vec3 dir, float mipLevel) {\n\t\tvec2 uv = octEncode(dir) * 0.5 + 0.5;\n\t\treturn texture2DLod(sourceTex, vec2(uv.x, 1.0 - uv.y), mipLevel);\n\t}\n\tvec4 sampleOctahedral(vec2 sph, float mipLevel) {\n\t\treturn sampleOctahedral(fromSpherical(sph), mipLevel);\n\t}\n#endif\nvec3 getDirectionCubemap() {\n\tvec2 st = vUv0 * 2.0 - 1.0;\n\tfloat face = targetFace();\n\tvec3 vec;\n\tif (face == 0.0) {\n\t\tvec = vec3(1, -st.y, -st.x);\n\t} else if (face == 1.0) {\n\t\tvec = vec3(-1, -st.y, st.x);\n\t} else if (face == 2.0) {\n\t\tvec = vec3(st.x, 1, st.y);\n\t} else if (face == 3.0) {\n\t\tvec = vec3(st.x, -1, -st.y);\n\t} else if (face == 4.0) {\n\t\tvec = vec3(st.x, -st.y, 1);\n\t} else {\n\t\tvec = vec3(-st.x, -st.y, -1);\n\t}\n\treturn normalize(modifySeams(vec, 1.0));\n}\nmat3 matrixFromVector(vec3 n) {\n\tfloat a = 1.0 / (1.0 + n.z);\n\tfloat b = -n.x * n.y * a;\n\tvec3 b1 = vec3(1.0 - n.x * n.x * a, b, -n.x);\n\tvec3 b2 = vec3(b, 1.0 - n.y * n.y * a, -n.y);\n\treturn mat3(b1, b2, n);\n}\nmat3 matrixFromVectorSlow(vec3 n) {\n\tvec3 up = (1.0 - abs(n.y) <= 0.0000001) ? vec3(0.0, 0.0, n.y > 0.0 ? 1.0 : -1.0) : vec3(0.0, 1.0, 0.0);\n\tvec3 x = normalize(cross(up, n));\n\tvec3 y = cross(n, x);\n\treturn mat3(x, y, n);\n}\nvec4 reproject() {\n\tif ({NUM_SAMPLES} <= 1) {\n\t\treturn {ENCODE_FUNC}({DECODE_FUNC}({SOURCE_FUNC}({TARGET_FUNC}())));\n\t} else {\n\t\tvec3 t = {TARGET_FUNC}();\n\t\tvec3 tu = dFdx(t);\n\t\tvec3 tv = dFdy(t);\n\t\tvec3 result = vec3(0.0);\n\t\tfor (float u = 0.0; u < {NUM_SAMPLES_SQRT}; ++u) {\n\t\t\tfor (float v = 0.0; v < {NUM_SAMPLES_SQRT}; ++v) {\n\t\t\t\tresult += {DECODE_FUNC}({SOURCE_FUNC}(normalize(t +\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttu * (u / {NUM_SAMPLES_SQRT} - 0.5) +\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttv * (v / {NUM_SAMPLES_SQRT} - 0.5))));\n\t\t\t}\n\t\t}\n\t\treturn {ENCODE_FUNC}(result / ({NUM_SAMPLES_SQRT} * {NUM_SAMPLES_SQRT}));\n\t}\n}\nvec4 unpackFloat = vec4(1.0, 1.0 / 255.0, 1.0 / 65025.0, 1.0 / 16581375.0);\n#ifdef USE_SAMPLES_TEX\n\tvoid unpackSample(int i, out vec3 L, out float mipLevel) {\n\t\tfloat u = (float(i * 4) + 0.5) * samplesTexInverseSize.x;\n\t\tfloat v = (floor(u) + 0.5) * samplesTexInverseSize.y;\n\t\tvec4 raw;\n\t\traw.x = dot(texture2D(samplesTex, vec2(u, v)), unpackFloat); u += samplesTexInverseSize.x;\n\t\traw.y = dot(texture2D(samplesTex, vec2(u, v)), unpackFloat); u += samplesTexInverseSize.x;\n\t\traw.z = dot(texture2D(samplesTex, vec2(u, v)), unpackFloat); u += samplesTexInverseSize.x;\n\t\traw.w = dot(texture2D(samplesTex, vec2(u, v)), unpackFloat);\n\t\tL.xyz = raw.xyz * 2.0 - 1.0;\n\t\tmipLevel = raw.w * 8.0;\n\t}\n\tvec4 prefilterSamples() {\n\t\tmat3 vecSpace = matrixFromVectorSlow({TARGET_FUNC}());\n\t\tvec3 L;\n\t\tfloat mipLevel;\n\t\tvec3 result = vec3(0.0);\n\t\tfloat totalWeight = 0.0;\n\t\tfor (int i = 0; i < {NUM_SAMPLES}; ++i) {\n\t\t\tunpackSample(i, L, mipLevel);\n\t\t\tresult += {DECODE_FUNC}({SOURCE_FUNC}(vecSpace * L, mipLevel)) * L.z;\n\t\t\ttotalWeight += L.z;\n\t\t}\n\t\treturn {ENCODE_FUNC}(result / totalWeight);\n\t}\n\tvec4 prefilterSamplesUnweighted() {\n\t\tmat3 vecSpace = matrixFromVectorSlow({TARGET_FUNC}());\n\t\tvec3 L;\n\t\tfloat mipLevel;\n\t\tvec3 result = vec3(0.0);\n\t\tfloat totalWeight = 0.0;\n\t\tfor (int i = 0; i < {NUM_SAMPLES}; ++i) {\n\t\t\tunpackSample(i, L, mipLevel);\n\t\t\tresult += {DECODE_FUNC}({SOURCE_FUNC}(vecSpace * L, mipLevel));\n\t\t}\n\t\treturn {ENCODE_FUNC}(result / float({NUM_SAMPLES}));\n\t}\n#endif\nvoid main(void) {\n\tgl_FragColor = {PROCESS_FUNC}();\n}\n`;\n\nvar reprojectVS$1 = `\nattribute vec2 vertex_position;\nuniform vec4 uvMod;\nvarying vec2 vUv0;\nvoid main(void) {\n\tgl_Position = vec4(vertex_position, 0.5, 1.0);\n\tvUv0 = getImageEffectUV((vertex_position.xy * 0.5 + 0.5) * uvMod.xy + uvMod.zw);\n}\n`;\n\nvar screenDepthPS$1 = `\nuniform highp sampler2D uSceneDepthMap;\n#ifndef SCREENSIZE\n\t#define SCREENSIZE\n\tuniform vec4 uScreenSize;\n#endif\n#ifndef VIEWMATRIX\n\t#define VIEWMATRIX\n\tuniform mat4 matrix_view;\n#endif\n#ifndef LINEARIZE_DEPTH\n\t#define LINEARIZE_DEPTH\n\t\n\t#ifndef CAMERAPLANES\n\t\t#define CAMERAPLANES\n\t\tuniform vec4 camera_params;\n\t#endif\n\tfloat linearizeDepth(float z) {\n\t\tif (camera_params.w == 0.0)\n\t\t\treturn (camera_params.z * camera_params.y) / (camera_params.y + z * (camera_params.z - camera_params.y));\n\t\telse\n\t\t\treturn camera_params.z + z * (camera_params.y - camera_params.z);\n\t}\n#endif\nfloat delinearizeDepth(float linearDepth) {\n\tif (camera_params.w == 0.0) {\n\t\treturn (camera_params.y * (camera_params.z - linearDepth)) / (linearDepth * (camera_params.z - camera_params.y));\n\t} else {\n\t\treturn (linearDepth - camera_params.z) / (camera_params.y - camera_params.z);\n\t}\n}\nfloat getLinearScreenDepth(vec2 uv) {\n\t#ifdef SCENE_DEPTHMAP_LINEAR\n\t\t#ifdef SCENE_DEPTHMAP_FLOAT\n\t\t\treturn texture2D(uSceneDepthMap, uv).r;\n\t\t#else\n\t\t\tivec2 textureSize = textureSize(uSceneDepthMap, 0);\n\t\t\tivec2 texel = ivec2(uv * vec2(textureSize));\n\t\t\tvec4 data = texelFetch(uSceneDepthMap, texel, 0);\n\t\t\tuint intBits = \n\t\t\t\t(uint(data.r * 255.0) << 24u) |\n\t\t\t\t(uint(data.g * 255.0) << 16u) |\n\t\t\t\t(uint(data.b * 255.0) << 8u) |\n\t\t\t\tuint(data.a * 255.0);\n\t\t\treturn uintBitsToFloat(intBits);\n\t\t#endif\n\t#else\n\t\treturn linearizeDepth(texture2D(uSceneDepthMap, uv).r);\n\t#endif\n}\n#ifndef VERTEXSHADER\n\tfloat getLinearScreenDepth() {\n\t\tvec2 uv = gl_FragCoord.xy * uScreenSize.zw;\n\t\treturn getLinearScreenDepth(uv);\n\t}\n#endif\nfloat getLinearDepth(vec3 pos) {\n\treturn -(matrix_view * vec4(pos, 1.0)).z;\n}\n`;\n\nvar shadowCascadesPS$1 = `\nint getShadowCascadeIndex(vec4 shadowCascadeDistances, int shadowCascadeCount) {\n\tfloat depth = 1.0 / gl_FragCoord.w;\n\tvec4 comparisons = step(shadowCascadeDistances, vec4(depth));\n\tint cascadeIndex = int(dot(comparisons, vec4(1.0)));\n\treturn min(cascadeIndex, shadowCascadeCount - 1);\n}\nint ditherShadowCascadeIndex(int cascadeIndex, vec4 shadowCascadeDistances, int shadowCascadeCount, float blendFactor) {\n \n\tif (cascadeIndex < shadowCascadeCount - 1) {\n\t\tfloat currentRangeEnd = shadowCascadeDistances[cascadeIndex];\n\t\tfloat transitionStart = blendFactor * currentRangeEnd;\n\t\tfloat depth = 1.0 / gl_FragCoord.w;\n\t\tif (depth > transitionStart) {\n\t\t\tfloat transitionFactor = smoothstep(transitionStart, currentRangeEnd, depth);\n\t\t\tfloat dither = fract(sin(dot(gl_FragCoord.xy, vec2(12.9898, 78.233))) * 43758.5453);\n\t\t\tif (dither < transitionFactor) {\n\t\t\t\tcascadeIndex += 1;\n\t\t\t}\n\t\t}\n\t}\n\treturn cascadeIndex;\n}\nvec3 fadeShadow(vec3 shadowCoord, vec4 shadowCascadeDistances) {\t\t\t\t  \n\tfloat depth = 1.0 / gl_FragCoord.w;\n\tif (depth > shadowCascadeDistances.w) {\n\t\tshadowCoord.z = -9999999.0;\n\t}\n\treturn shadowCoord;\n}\n`;\n\nvar shadowEVSMPS$1 = `\nfloat linstep(float a, float b, float v) {\n\treturn saturate((v - a) / (b - a));\n}\nfloat reduceLightBleeding(float pMax, float amount) {\n\t return linstep(amount, 1.0, pMax);\n}\nfloat chebyshevUpperBound(vec2 moments, float mean, float minVariance, float lightBleedingReduction) {\n\tfloat variance = moments.y - (moments.x * moments.x);\n\tvariance = max(variance, minVariance);\n\tfloat d = mean - moments.x;\n\tfloat pMax = variance / (variance + (d * d));\n\tpMax = reduceLightBleeding(pMax, lightBleedingReduction);\n\treturn (mean <= moments.x ? 1.0 : pMax);\n}\nfloat calculateEVSM(vec3 moments, float Z, float vsmBias, float exponent) {\n\tZ = 2.0 * Z - 1.0;\n\tfloat warpedDepth = exp(exponent * Z);\n\tmoments.xy += vec2(warpedDepth, warpedDepth*warpedDepth) * (1.0 - moments.z);\n\tfloat VSMBias = vsmBias;\n\tfloat depthScale = VSMBias * exponent * warpedDepth;\n\tfloat minVariance1 = depthScale * depthScale;\n\treturn chebyshevUpperBound(moments.xy, warpedDepth, minVariance1, 0.1);\n}\nfloat VSM16(TEXTURE_ACCEPT(tex), vec2 texCoords, float resolution, float Z, float vsmBias, float exponent) {\n\tvec3 moments = texture2DLod(tex, texCoords, 0.0).xyz;\n\treturn calculateEVSM(moments, Z, vsmBias, exponent);\n}\nfloat getShadowVSM16(TEXTURE_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams, float exponent) {\n\treturn VSM16(TEXTURE_PASS(shadowMap), shadowCoord.xy, shadowParams.x, shadowCoord.z, shadowParams.y, exponent);\n}\nfloat getShadowSpotVSM16(TEXTURE_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams, float exponent, vec3 lightDir) {\n\treturn VSM16(TEXTURE_PASS(shadowMap), shadowCoord.xy, shadowParams.x, length(lightDir) * shadowParams.w + shadowParams.z, shadowParams.y, exponent);\n}\nfloat VSM32(TEXTURE_ACCEPT(tex), vec2 texCoords, float resolution, float Z, float vsmBias, float exponent) {\n\t#ifdef CAPS_TEXTURE_FLOAT_FILTERABLE\n\t\tvec3 moments = texture2DLod(tex, texCoords, 0.0).xyz;\n\t#else\n\t\tfloat pixelSize = 1.0 / resolution;\n\t\ttexCoords -= vec2(pixelSize);\n\t\tvec3 s00 = texture2DLod(tex, texCoords, 0.0).xyz;\n\t\tvec3 s10 = texture2DLod(tex, texCoords + vec2(pixelSize, 0), 0.0).xyz;\n\t\tvec3 s01 = texture2DLod(tex, texCoords + vec2(0, pixelSize), 0.0).xyz;\n\t\tvec3 s11 = texture2DLod(tex, texCoords + vec2(pixelSize), 0.0).xyz;\n\t\tvec2 fr = fract(texCoords * resolution);\n\t\tvec3 h0 = mix(s00, s10, fr.x);\n\t\tvec3 h1 = mix(s01, s11, fr.x);\n\t\tvec3 moments = mix(h0, h1, fr.y);\n\t#endif\n\treturn calculateEVSM(moments, Z, vsmBias, exponent);\n}\nfloat getShadowVSM32(TEXTURE_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams, float exponent) {\n\treturn VSM32(TEXTURE_PASS(shadowMap), shadowCoord.xy, shadowParams.x, shadowCoord.z, shadowParams.y, exponent);\n}\nfloat getShadowSpotVSM32(TEXTURE_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams, float exponent, vec3 lightDir) {\n\tfloat Z = length(lightDir) * shadowParams.w + shadowParams.z;\n\treturn VSM32(TEXTURE_PASS(shadowMap), shadowCoord.xy, shadowParams.x, Z, shadowParams.y, exponent);\n}\n`;\n\nvar shadowPCF1PS$1 = `\nfloat getShadowPCF1x1(SHADOWMAP_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams) {\n\treturn textureShadow(shadowMap, shadowCoord);\n}\nfloat getShadowSpotPCF1x1(SHADOWMAP_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams) {\n\treturn textureShadow(shadowMap, shadowCoord);\n}\n#ifndef WEBGPU\nfloat getShadowOmniPCF1x1(samplerCubeShadow shadowMap, vec3 shadowCoord, vec4 shadowParams, vec3 lightDir) {\n\tfloat shadowZ = length(lightDir) * shadowParams.w + shadowParams.z;\n\treturn texture(shadowMap, vec4(lightDir, shadowZ));\n}\n#endif\n`;\n\nvar shadowPCF3PS$1 = `\nfloat _getShadowPCF3x3(SHADOWMAP_ACCEPT(shadowMap), vec3 shadowCoord, vec3 shadowParams) {\n\tfloat z = shadowCoord.z;\n\tvec2 uv = shadowCoord.xy * shadowParams.x;\n\tfloat shadowMapSizeInv = 1.0 / shadowParams.x;\n\tvec2 base_uv = floor(uv + 0.5);\n\tfloat s = (uv.x + 0.5 - base_uv.x);\n\tfloat t = (uv.y + 0.5 - base_uv.y); \n\tbase_uv -= vec2(0.5);\n\tbase_uv *= shadowMapSizeInv;\n\tfloat sum = 0.0;\n\tfloat uw0 = (3.0 - 2.0 * s);\n\tfloat uw1 = (1.0 + 2.0 * s);\n\tfloat u0 = (2.0 - s) / uw0 - 1.0;\n\tfloat u1 = s / uw1 + 1.0;\n\tfloat vw0 = (3.0 - 2.0 * t);\n\tfloat vw1 = (1.0 + 2.0 * t);\n\tfloat v0 = (2.0 - t) / vw0 - 1.0;\n\tfloat v1 = t / vw1 + 1.0;\n\tu0 = u0 * shadowMapSizeInv + base_uv.x;\n\tv0 = v0 * shadowMapSizeInv + base_uv.y;\n\tu1 = u1 * shadowMapSizeInv + base_uv.x;\n\tv1 = v1 * shadowMapSizeInv + base_uv.y;\n\tsum += uw0 * vw0 * textureShadow(shadowMap, vec3(u0, v0, z));\n\tsum += uw1 * vw0 * textureShadow(shadowMap, vec3(u1, v0, z));\n\tsum += uw0 * vw1 * textureShadow(shadowMap, vec3(u0, v1, z));\n\tsum += uw1 * vw1 * textureShadow(shadowMap, vec3(u1, v1, z));\n\tsum *= 1.0f / 16.0;\n\treturn sum;\n}\nfloat getShadowPCF3x3(SHADOWMAP_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams) {\n\treturn _getShadowPCF3x3(SHADOWMAP_PASS(shadowMap), shadowCoord, shadowParams.xyz);\n}\nfloat getShadowSpotPCF3x3(SHADOWMAP_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams) {\n\treturn _getShadowPCF3x3(SHADOWMAP_PASS(shadowMap), shadowCoord, shadowParams.xyz);\n}\n#ifndef WEBGPU\nfloat getShadowOmniPCF3x3(samplerCubeShadow shadowMap, vec4 shadowParams, vec3 dir) {\n\t\n\tfloat shadowZ = length(dir) * shadowParams.w + shadowParams.z;\n\tfloat z = 1.0 / float(textureSize(shadowMap, 0));\n\tvec3 tc = normalize(dir);\n\tmediump vec4 shadows;\n\tshadows.x = texture(shadowMap, vec4(tc + vec3( z, z, z), shadowZ));\n\tshadows.y = texture(shadowMap, vec4(tc + vec3(-z,-z, z), shadowZ));\n\tshadows.z = texture(shadowMap, vec4(tc + vec3(-z, z,-z), shadowZ));\n\tshadows.w = texture(shadowMap, vec4(tc + vec3( z,-z,-z), shadowZ));\n\treturn dot(shadows, vec4(0.25));\n}\nfloat getShadowOmniPCF3x3(samplerCubeShadow shadowMap, vec3 shadowCoord, vec4 shadowParams, vec3 lightDir) {\n\treturn getShadowOmniPCF3x3(shadowMap, shadowParams, lightDir);\n}\n#endif\n`;\n\nvar shadowPCF5PS$1 = `\nfloat _getShadowPCF5x5(SHADOWMAP_ACCEPT(shadowMap), vec3 shadowCoord, vec3 shadowParams) {\n\tfloat z = shadowCoord.z;\n\tvec2 uv = shadowCoord.xy * shadowParams.x;\n\tfloat shadowMapSizeInv = 1.0 / shadowParams.x;\n\tvec2 base_uv = floor(uv + 0.5);\n\tfloat s = (uv.x + 0.5 - base_uv.x);\n\tfloat t = (uv.y + 0.5 - base_uv.y);\n\tbase_uv -= vec2(0.5);\n\tbase_uv *= shadowMapSizeInv;\n\tfloat uw0 = (4.0 - 3.0 * s);\n\tfloat uw1 = 7.0;\n\tfloat uw2 = (1.0 + 3.0 * s);\n\tfloat u0 = (3.0 - 2.0 * s) / uw0 - 2.0;\n\tfloat u1 = (3.0 + s) / uw1;\n\tfloat u2 = s / uw2 + 2.0;\n\tfloat vw0 = (4.0 - 3.0 * t);\n\tfloat vw1 = 7.0;\n\tfloat vw2 = (1.0 + 3.0 * t);\n\tfloat v0 = (3.0 - 2.0 * t) / vw0 - 2.0;\n\tfloat v1 = (3.0 + t) / vw1;\n\tfloat v2 = t / vw2 + 2.0;\n\tfloat sum = 0.0;\n\tu0 = u0 * shadowMapSizeInv + base_uv.x;\n\tv0 = v0 * shadowMapSizeInv + base_uv.y;\n\tu1 = u1 * shadowMapSizeInv + base_uv.x;\n\tv1 = v1 * shadowMapSizeInv + base_uv.y;\n\tu2 = u2 * shadowMapSizeInv + base_uv.x;\n\tv2 = v2 * shadowMapSizeInv + base_uv.y;\n\tsum += uw0 * vw0 * textureShadow(shadowMap, vec3(u0, v0, z));\n\tsum += uw1 * vw0 * textureShadow(shadowMap, vec3(u1, v0, z));\n\tsum += uw2 * vw0 * textureShadow(shadowMap, vec3(u2, v0, z));\n\tsum += uw0 * vw1 * textureShadow(shadowMap, vec3(u0, v1, z));\n\tsum += uw1 * vw1 * textureShadow(shadowMap, vec3(u1, v1, z));\n\tsum += uw2 * vw1 * textureShadow(shadowMap, vec3(u2, v1, z));\n\tsum += uw0 * vw2 * textureShadow(shadowMap, vec3(u0, v2, z));\n\tsum += uw1 * vw2 * textureShadow(shadowMap, vec3(u1, v2, z));\n\tsum += uw2 * vw2 * textureShadow(shadowMap, vec3(u2, v2, z));\n\tsum *= 1.0f / 144.0;\n\tsum = saturate(sum);\n\treturn sum;\n}\nfloat getShadowPCF5x5(SHADOWMAP_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams) {\n\treturn _getShadowPCF5x5(SHADOWMAP_PASS(shadowMap), shadowCoord, shadowParams.xyz);\n}\nfloat getShadowSpotPCF5x5(SHADOWMAP_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams) {\n\treturn _getShadowPCF5x5(SHADOWMAP_PASS(shadowMap), shadowCoord, shadowParams.xyz);\n}\n`;\n\nvar shadowPCSSPS = `\n#define PCSS_SAMPLE_COUNT 16\nuniform float pcssDiskSamples[PCSS_SAMPLE_COUNT];\nuniform float pcssSphereSamples[PCSS_SAMPLE_COUNT];\nvec2 vogelDisk(int sampleIndex, float count, float phi, float r) {\n\tconst float GoldenAngle = 2.4;\n\tfloat theta = float(sampleIndex) * GoldenAngle + phi;\n\tfloat sine = sin(theta);\n\tfloat cosine = cos(theta);\n\treturn vec2(r * cosine, r * sine);\n}\nvec3 vogelSphere(int sampleIndex, float count, float phi, float r) {\n\tconst float GoldenAngle = 2.4;\n\tfloat theta = float(sampleIndex) * GoldenAngle + phi;\n\tfloat weight = float(sampleIndex) / count;\n\treturn vec3(cos(theta) * r, weight, sin(theta) * r);\n}\nfloat noise(vec2 screenPos) {\n\tconst float PHI = 1.61803398874989484820459;\n\treturn fract(sin(dot(screenPos * PHI, screenPos)) * screenPos.x);\n}\nfloat viewSpaceDepth(float depth, mat4 invProjection) {\n\tfloat z = depth * 2.0 - 1.0;\n\tvec4 clipSpace = vec4(0.0, 0.0, z, 1.0);\n\tvec4 viewSpace = invProjection * clipSpace;\n\treturn viewSpace.z;\n}\nfloat PCSSBlockerDistance(TEXTURE_ACCEPT(shadowMap), vec2 sampleCoords[PCSS_SAMPLE_COUNT], vec2 shadowCoords, vec2 searchSize, float z, vec4 cameraParams) {\n\tfloat blockers = 0.0;\n\tfloat averageBlocker = 0.0;\n\tfor (int i = 0; i < PCSS_SAMPLE_COUNT; i++) {\n\t\tvec2 offset = sampleCoords[i] * searchSize;\n\t\tvec2 sampleUV = shadowCoords + offset;\n\t\tfloat blocker = texture2DLod(shadowMap, sampleUV, 0.0).r;\n\t\tfloat isBlocking = step(blocker, z);\n\t\tblockers += isBlocking;\n\t\taverageBlocker += blocker * isBlocking;\n\t}\n\tif (blockers > 0.0)\n\t\treturn averageBlocker / blockers;\n\treturn -1.0;\n}\nfloat PCSS(TEXTURE_ACCEPT(shadowMap), vec3 shadowCoords, vec4 cameraParams, vec2 shadowSearchArea) {\n\tfloat receiverDepth = linearizeDepthWithParams(shadowCoords.z, cameraParams);\n\tvec2 samplePoints[PCSS_SAMPLE_COUNT];\n\tconst float PI = 3.141592653589793;\n\tfloat noise = noise( gl_FragCoord.xy ) * 2.0 * PI;\n\tfor (int i = 0; i < PCSS_SAMPLE_COUNT; i++) {\n\t\tfloat pcssPresample = pcssDiskSamples[i];\n\t\tsamplePoints[i] = vogelDisk(i, float(PCSS_SAMPLE_COUNT), noise, pcssPresample);\n\t}\n\tfloat averageBlocker = PCSSBlockerDistance(TEXTURE_PASS(shadowMap), samplePoints, shadowCoords.xy, shadowSearchArea, receiverDepth, cameraParams);\n\tif (averageBlocker == -1.0) {\n\t\treturn 1.0;\n\t} else {\n\t\tfloat depthDifference = (receiverDepth - averageBlocker) / 3.0;\n\t\tvec2 filterRadius = depthDifference * shadowSearchArea;\n\t\tfloat shadow = 0.0;\n\t\tfor (int i = 0; i < PCSS_SAMPLE_COUNT; i ++)\n\t\t{\n\t\t\tvec2 sampleUV = samplePoints[i] * filterRadius;\n\t\t\tsampleUV = shadowCoords.xy + sampleUV;\n\t\t\tfloat depth = texture2DLod(shadowMap, sampleUV, 0.0).r;\n\t\t\tshadow += step(receiverDepth, depth);\n\t\t}\n\t\treturn shadow / float(PCSS_SAMPLE_COUNT);\n\t} \n}\n#ifndef WEBGPU\nfloat PCSSCubeBlockerDistance(samplerCube shadowMap, vec3 lightDirNorm, vec3 samplePoints[PCSS_SAMPLE_COUNT], float z, float shadowSearchArea) {\n\tfloat blockers = 0.0;\n\tfloat averageBlocker = 0.0;\n\tfor (int i = 0; i < PCSS_SAMPLE_COUNT; i++) {\n\t\tvec3 sampleDir = lightDirNorm + samplePoints[i] * shadowSearchArea;\n\t\tsampleDir = normalize(sampleDir);\n\t\tfloat blocker = textureCubeLod(shadowMap, sampleDir, 0.0).r;\n\t\tfloat isBlocking = step(blocker, z);\n\t\tblockers += isBlocking;\n\t\taverageBlocker += blocker * isBlocking;\n\t}\n\tif (blockers > 0.0)\n\t\treturn averageBlocker / blockers;\n\treturn -1.0;\n}\nfloat PCSSCube(samplerCube shadowMap, vec4 shadowParams, vec3 shadowCoords, vec4 cameraParams, float shadowSearchArea, vec3 lightDir) {\n\t\n\tvec3 samplePoints[PCSS_SAMPLE_COUNT];\n\tconst float PI = 3.141592653589793;\n\tfloat noise = noise( gl_FragCoord.xy ) * 2.0 * PI;\n\tfor (int i = 0; i < PCSS_SAMPLE_COUNT; i++) {\n\t\tfloat r = pcssSphereSamples[i];\n\t\tsamplePoints[i] = vogelSphere(i, float(PCSS_SAMPLE_COUNT), noise, r);\n\t}\n\tfloat receiverDepth = length(lightDir) * shadowParams.w + shadowParams.z;\n\tvec3 lightDirNorm = normalize(lightDir);\n\t\n\tfloat averageBlocker = PCSSCubeBlockerDistance(shadowMap, lightDirNorm, samplePoints, receiverDepth, shadowSearchArea);\n\tif (averageBlocker == -1.0) {\n\t\treturn 1.0;\n\t} else {\n\t\tfloat filterRadius = ((receiverDepth - averageBlocker) / averageBlocker) * shadowSearchArea;\n\t\tfloat shadow = 0.0;\n\t\tfor (int i = 0; i < PCSS_SAMPLE_COUNT; i++)\n\t\t{\n\t\t\tvec3 offset = samplePoints[i] * filterRadius;\n\t\t\tvec3 sampleDir = lightDirNorm + offset;\n\t\t\tsampleDir = normalize(sampleDir);\n\t\t\tfloat depth = textureCubeLod(shadowMap, sampleDir, 0.0).r;\n\t\t\tshadow += step(receiverDepth, depth);\n\t\t}\n\t\treturn shadow / float(PCSS_SAMPLE_COUNT);\n\t}\n}\nfloat getShadowOmniPCSS(samplerCube shadowMap, vec3 shadowCoord, vec4 shadowParams, vec4 cameraParams, vec2 shadowSearchArea, vec3 lightDir) {\n\treturn PCSSCube(shadowMap, shadowParams, shadowCoord, cameraParams, shadowSearchArea.x, lightDir);\n}\n#endif\nfloat getShadowSpotPCSS(TEXTURE_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams, vec4 cameraParams, vec2 shadowSearchArea, vec3 lightDir) {\n\treturn PCSS(TEXTURE_PASS(shadowMap), shadowCoord, cameraParams, shadowSearchArea);\n}\n`;\n\nvar shadowSoftPS$1 = `\nhighp float fractSinRand(const in vec2 uv) {\n\tconst float PI = 3.141592653589793;\n\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\n\thighp float dt = dot(uv.xy, vec2(a, b)), sn = mod(dt, PI);\n\treturn fract(sin(sn) * c);\n}\nstruct VogelDiskData {\n\tfloat invNumSamples;\n\tfloat initialAngle;\n\tfloat currentPointId;\n};\nvoid prepareDiskConstants(out VogelDiskData data, int sampleCount, float randomSeed) {\n\tconst float pi2 = 6.28318530718;\n\tdata.invNumSamples = 1.0 / float(sampleCount);\n\tdata.initialAngle = randomSeed * pi2;\n\tdata.currentPointId = 0.0;\n}\nvec2 generateDiskSample(inout VogelDiskData data) {\n\tconst float GOLDEN_ANGLE = 2.399963;\n\tfloat r = sqrt((data.currentPointId + 0.5) * data.invNumSamples);\n\tfloat theta = data.currentPointId * GOLDEN_ANGLE + data.initialAngle;\n\tvec2 offset = vec2(cos(theta), sin(theta)) * pow(r, 1.33);\n\tdata.currentPointId += 1.0;\n\treturn offset;\n}\nvoid PCSSFindBlocker(TEXTURE_ACCEPT(shadowMap), out float avgBlockerDepth, out int numBlockers,\n\tvec2 shadowCoords, float z, int shadowBlockerSamples, float penumbraSize, float invShadowMapSize, float randomSeed) {\n\tVogelDiskData diskData;\n\tprepareDiskConstants(diskData, shadowBlockerSamples, randomSeed);\n\tfloat searchWidth = penumbraSize * invShadowMapSize;\n\tfloat blockerSum = 0.0;\n\tnumBlockers = 0;\n\tfor( int i = 0; i < shadowBlockerSamples; ++i ) {\n\t\tvec2 diskUV = generateDiskSample(diskData);\n\t\tvec2 sampleUV = shadowCoords + diskUV * searchWidth;\n\t\tfloat shadowMapDepth = texture2DLod(shadowMap, sampleUV, 0.0).r;\n\t\tif ( shadowMapDepth < z ) {\n\t\t\tblockerSum += shadowMapDepth;\n\t\t\tnumBlockers++;\n\t\t}\n\t}\n\tavgBlockerDepth = blockerSum / float(numBlockers);\n}\nfloat PCSSFilter(TEXTURE_ACCEPT(shadowMap), vec2 uv, float receiverDepth, int shadowSamples, float filterRadius, float randomSeed) {\n\tVogelDiskData diskData;\n\tprepareDiskConstants(diskData, shadowSamples, randomSeed);\n\tfloat sum = 0.0;\n\tfor (int i = 0; i < shadowSamples; i++) {\n\t\tvec2 offsetUV = generateDiskSample(diskData) * filterRadius;\n\t\tfloat depth = texture2DLod(shadowMap, uv + offsetUV, 0.0).r;\n\t\tsum += step(receiverDepth, depth);\n\t}\n\treturn sum / float(shadowSamples);\n}\nfloat getPenumbra(float dblocker, float dreceiver, float penumbraSize, float penumbraFalloff) {\n\tfloat dist = dreceiver - dblocker;\n\tfloat penumbra = 1.0 - pow(1.0 - dist, penumbraFalloff);\n\treturn penumbra * penumbraSize;\n}\nfloat PCSSDirectional(TEXTURE_ACCEPT(shadowMap), vec3 shadowCoords, vec4 cameraParams, vec4 softShadowParams) {\n\tfloat receiverDepth = shadowCoords.z;\n\tfloat randomSeed = fractSinRand(gl_FragCoord.xy);\n\tint shadowSamples = int(softShadowParams.x);\n\tint shadowBlockerSamples = int(softShadowParams.y);\n\tfloat penumbraSize = softShadowParams.z;\n\tfloat penumbraFalloff = softShadowParams.w;\n\tint shadowMapSize = textureSize(shadowMap, 0).x;\n\tfloat invShadowMapSize = 1.0 / float(shadowMapSize);\n\tinvShadowMapSize *= float(shadowMapSize) / 2048.0;\n\tfloat penumbra;\n\tif (shadowBlockerSamples > 0) {\n\t\tfloat avgBlockerDepth = 0.0;\n\t\tint numBlockers = 0;\n\t\tPCSSFindBlocker(TEXTURE_PASS(shadowMap), avgBlockerDepth, numBlockers, shadowCoords.xy, receiverDepth, shadowBlockerSamples, penumbraSize, invShadowMapSize, randomSeed);\n\t\tif (numBlockers < 1)\n\t\t\treturn 1.0f;\n\t\tpenumbra = getPenumbra(avgBlockerDepth, shadowCoords.z, penumbraSize, penumbraFalloff);\n\t} else {\n\t\tpenumbra = penumbraSize;\n\t}\n\tfloat filterRadius = penumbra * invShadowMapSize;\n\treturn PCSSFilter(TEXTURE_PASS(shadowMap), shadowCoords.xy, receiverDepth, shadowSamples, filterRadius, randomSeed);\n}\nfloat getShadowPCSS(TEXTURE_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams, vec4 cameraParams, vec4 softShadowParams, vec3 lightDir) {\n\treturn PCSSDirectional(TEXTURE_PASS(shadowMap), shadowCoord, cameraParams, softShadowParams);\n}\n`;\n\nvar skinBatchVS$1 = `\nattribute float vertex_boneIndices;\nuniform highp sampler2D texture_poseMap;\nmat4 getBoneMatrix(const in float indexFloat) {\n\tint width = textureSize(texture_poseMap, 0).x;\n\tint index = int(indexFloat + 0.5) * 3;\n\tint iy = index / width;\n\tint ix = index % width;\n\tvec4 v1 = texelFetch(texture_poseMap, ivec2(ix + 0, iy), 0);\n\tvec4 v2 = texelFetch(texture_poseMap, ivec2(ix + 1, iy), 0);\n\tvec4 v3 = texelFetch(texture_poseMap, ivec2(ix + 2, iy), 0);\n\treturn mat4(\n\t\tv1.x, v2.x, v3.x, 0,\n\t\tv1.y, v2.y, v3.y, 0,\n\t\tv1.z, v2.z, v3.z, 0,\n\t\tv1.w, v2.w, v3.w, 1\n\t);\n}\n`;\n\nvar skinVS$1 = `\nattribute vec4 vertex_boneWeights;\nattribute vec4 vertex_boneIndices;\nuniform highp sampler2D texture_poseMap;\nvoid getBoneMatrix(const in int width, const in int index, out vec4 v1, out vec4 v2, out vec4 v3) {\n\tint v = index / width;\n\tint u = index % width;\n\tv1 = texelFetch(texture_poseMap, ivec2(u + 0, v), 0);\n\tv2 = texelFetch(texture_poseMap, ivec2(u + 1, v), 0);\n\tv3 = texelFetch(texture_poseMap, ivec2(u + 2, v), 0);\n}\nmat4 getSkinMatrix(const in vec4 indicesFloat, const in vec4 weights) {\n\tint width = textureSize(texture_poseMap, 0).x;\n\tivec4 indices = ivec4(indicesFloat + 0.5) * 3;\n\tvec4 a1, a2, a3;\n\tgetBoneMatrix(width, indices.x, a1, a2, a3);\n\tvec4 b1, b2, b3;\n\tgetBoneMatrix(width, indices.y, b1, b2, b3);\n\tvec4 c1, c2, c3;\n\tgetBoneMatrix(width, indices.z, c1, c2, c3);\n\tvec4 d1, d2, d3;\n\tgetBoneMatrix(width, indices.w, d1, d2, d3);\n\tvec4 v1 = a1 * weights.x + b1 * weights.y + c1 * weights.z + d1 * weights.w;\n\tvec4 v2 = a2 * weights.x + b2 * weights.y + c2 * weights.z + d2 * weights.w;\n\tvec4 v3 = a3 * weights.x + b3 * weights.y + c3 * weights.z + d3 * weights.w;\n\tfloat one = dot(weights, vec4(1.0));\n\treturn mat4(\n\t\tv1.x, v2.x, v3.x, 0,\n\t\tv1.y, v2.y, v3.y, 0,\n\t\tv1.z, v2.z, v3.z, 0,\n\t\tv1.w, v2.w, v3.w, one\n\t);\n}\n`;\n\nvar skyboxPS$1 = `\n\t#define LIT_SKYBOX_INTENSITY\n\t#include \"envProcPS\"\n\t#include \"gammaPS\"\n\t#include \"tonemappingPS\"\n\t#ifdef PREPASS_PASS\n\t\tvarying float vLinearDepth;\n\t\t#include \"floatAsUintPS\"\n\t#endif\n\tvarying vec3 vViewDir;\n\tuniform float skyboxHighlightMultiplier;\n\t#ifdef SKY_CUBEMAP\n\t\tuniform samplerCube texture_cubeMap;\n\t\t#ifdef SKYMESH\n\t\t\tvarying vec3 vWorldPos;\n\t\t\tuniform mat3 cubeMapRotationMatrix;\n\t\t\tuniform vec3 projectedSkydomeCenter;\n\t\t#endif\n\t#else\n\t\t#include \"sphericalPS\"\n\t\t#include \"envAtlasPS\"\n\t\tuniform sampler2D texture_envAtlas;\n\t\tuniform float mipLevel;\n\t#endif\n\tvoid main(void) {\n\t\t#ifdef PREPASS_PASS\n\t\t\tgl_FragColor = float2vec4(vLinearDepth);\n\t\t#else\n\t\t\t#ifdef SKY_CUBEMAP\n\t\t\t\t#ifdef SKYMESH\n\t\t\t\t\tvec3 envDir = normalize(vWorldPos - projectedSkydomeCenter);\n\t\t\t\t\tvec3 dir = envDir * cubeMapRotationMatrix;\n\t\t\t\t#else\n\t\t\t\t\tvec3 dir = vViewDir;\n\t\t\t\t#endif\n\t\t\t\tdir.x *= -1.0;\n\t\t\t\tvec3 linear = {SKYBOX_DECODE_FNC}(textureCube(texture_cubeMap, dir));\n\t\t\t#else\n\t\t\t\tvec3 dir = vViewDir * vec3(-1.0, 1.0, 1.0);\n\t\t\t\tvec2 uv = toSphericalUv(normalize(dir));\n\t\t\t\tvec3 linear = {SKYBOX_DECODE_FNC}(texture2D(texture_envAtlas, mapRoughnessUv(uv, mipLevel)));\n\t\t\t#endif\n\t\t\tif (any(greaterThanEqual(linear, vec3(64.0)))) {\n\t\t\t\tlinear *= skyboxHighlightMultiplier;\n\t\t\t}\n\t\t\tgl_FragColor = vec4(gammaCorrectOutput(toneMap(processEnvironment(linear))), 1.0);\n\t\t#endif\n\t}\n`;\n\nvar skyboxVS$1 = `\nattribute vec4 aPosition;\nuniform mat4 matrix_view;\nuniform mat4 matrix_projectionSkybox;\nuniform mat3 cubeMapRotationMatrix;\nvarying vec3 vViewDir;\n#ifdef PREPASS_PASS\n\tvarying float vLinearDepth;\n#endif\n#ifdef SKYMESH\n\tuniform mat4 matrix_model;\n\tvarying vec3 vWorldPos;\n#endif\nvoid main(void) {\n\tmat4 view = matrix_view;\n\t#ifdef SKYMESH\n\t\tvec4 worldPos = matrix_model * aPosition;\n\t\tvWorldPos = worldPos.xyz;\n\t\tgl_Position = matrix_projectionSkybox * (view * worldPos);\n\t\t#ifdef PREPASS_PASS\n\t\t\tvLinearDepth = -(matrix_view * vec4(vWorldPos, 1.0)).z;\n\t\t#endif\n\t#else\n\t\tview[3][0] = view[3][1] = view[3][2] = 0.0;\n\t\tgl_Position = matrix_projectionSkybox * (view * aPosition);\n\t\tvViewDir = aPosition.xyz * cubeMapRotationMatrix;\n\t\t#ifdef PREPASS_PASS\n\t\t\tvLinearDepth = -gl_Position.w;\n\t\t#endif\n\t#endif\n\tgl_Position.z = gl_Position.w - 1.0e-7;\n}\n`;\n\nvar specularPS$1 = `\n#ifdef STD_SPECULAR_CONSTANT\nuniform vec3 material_specular;\n#endif\nvoid getSpecularity() {\n\tvec3 specularColor = vec3(1,1,1);\n\t#ifdef STD_SPECULAR_CONSTANT\n\tspecularColor *= material_specular;\n\t#endif\n\t#ifdef STD_SPECULAR_TEXTURE\n\tspecularColor *= {STD_SPECULAR_TEXTURE_DECODE}(texture2DBias({STD_SPECULAR_TEXTURE_NAME}, {STD_SPECULAR_TEXTURE_UV}, textureBias)).{STD_SPECULAR_TEXTURE_CHANNEL};\n\t#endif\n\t#ifdef STD_SPECULAR_VERTEX\n\tspecularColor *= saturate(vVertexColor.{STD_SPECULAR_VERTEX_CHANNEL});\n\t#endif\n\tdSpecularity = specularColor;\n}\n`;\n\nvar sphericalPS$1 = `\nvec2 toSpherical(vec3 dir) {\n\treturn vec2(dir.xz == vec2(0.0) ? 0.0 : atan(dir.x, dir.z), asin(dir.y));\n}\nvec2 toSphericalUv(vec3 dir) {\n\tconst float PI = 3.141592653589793;\n\tvec2 uv = toSpherical(dir) / vec2(PI * 2.0, PI) + 0.5;\n\treturn vec2(uv.x, 1.0 - uv.y);\n}\n`;\n\nvar specularityFactorPS$1 = `\n#ifdef STD_SPECULARITYFACTOR_CONSTANT\nuniform float material_specularityFactor;\n#endif\nvoid getSpecularityFactor() {\n\tfloat specularityFactor = 1.0;\n\t#ifdef STD_SPECULARITYFACTOR_CONSTANT\n\tspecularityFactor *= material_specularityFactor;\n\t#endif\n\t#ifdef STD_SPECULARITYFACTOR_TEXTURE\n\tspecularityFactor *= texture2DBias({STD_SPECULARITYFACTOR_TEXTURE_NAME}, {STD_SPECULARITYFACTOR_TEXTURE_UV}, textureBias).{STD_SPECULARITYFACTOR_TEXTURE_CHANNEL};\n\t#endif\n\t#ifdef STD_SPECULARITYFACTOR_VERTEX\n\tspecularityFactor *= saturate(vVertexColor.{STD_SPECULARITYFACTOR_VERTEX_CHANNEL});\n\t#endif\n\tdSpecularityFactor = specularityFactor;\n}\n`;\n\nvar spotPS$1 = `\nfloat getSpotEffect(vec3 lightSpotDir, float lightInnerConeAngle, float lightOuterConeAngle, vec3 lightDirNorm) {\n\tfloat cosAngle = dot(lightDirNorm, lightSpotDir);\n\treturn smoothstep(lightOuterConeAngle, lightInnerConeAngle, cosAngle);\n}\n`;\n\nvar startNineSlicedPS$1 = `\n\tnineSlicedUv = vec2(vUv0.x, 1.0 - vUv0.y);\n`;\n\nvar startNineSlicedTiledPS$1 = `\n\tvec2 tileMask = step(vMask, vec2(0.99999));\n\tvec2 tileSize = 0.5 * (innerOffset.xy + innerOffset.zw);\n\tvec2 tileScale = vec2(1.0) / (vec2(1.0) - tileSize);\n\tvec2 clampedUv = mix(innerOffset.xy * 0.5, vec2(1.0) - innerOffset.zw * 0.5, fract((vTiledUv - tileSize) * tileScale));\n\tclampedUv = clampedUv * atlasRect.zw + atlasRect.xy;\n\tnineSlicedUv = vUv0 * tileMask + clampedUv * (vec2(1.0) - tileMask);\n\tnineSlicedUv.y = 1.0 - nineSlicedUv.y;\n\t\n`;\n\nvar stdDeclarationPS$1 = `\n\tfloat dAlpha = 1.0;\n\t#if LIT_BLEND_TYPE != NONE || defined(LIT_ALPHA_TEST) || defined(LIT_ALPHA_TO_COVERAGE) || STD_OPACITY_DITHER != NONE\n\t\t#ifdef STD_OPACITY_TEXTURE_ALLOCATE\n\t\t\tuniform sampler2D texture_opacityMap;\n\t\t#endif\n\t#endif\n\t#ifdef FORWARD_PASS\n\t\tvec3 dAlbedo;\n\t\tvec3 dNormalW;\n\t\tvec3 dSpecularity = vec3(0.0);\n\t\tfloat dGlossiness = 0.0;\n\t\t#ifdef LIT_REFRACTION\n\t\t\tfloat dTransmission;\n\t\t\tfloat dThickness;\n\t\t#endif\n\t\t#ifdef LIT_SCENE_COLOR\n\t\t\tuniform sampler2D uSceneColorMap;\n\t\t#endif\n\t\t#ifdef LIT_SCREEN_SIZE\n\t\t\tuniform vec4 uScreenSize;\n\t\t#endif\n\t\t#ifdef LIT_TRANSFORMS\n\t\t\tuniform mat4 matrix_viewProjection;\n\t\t\tuniform mat4 matrix_model;\n\t\t#endif\n\t\t#ifdef STD_HEIGHT_MAP\n\t\t\tvec2 dUvOffset;\n\t\t\t#ifdef STD_HEIGHT_TEXTURE_ALLOCATE\n\t\t\t\tuniform sampler2D texture_heightMap;\n\t\t\t#endif\n\t\t#endif\n\t\t#ifdef STD_DIFFUSE_TEXTURE_ALLOCATE\n\t\t\tuniform sampler2D texture_diffuseMap;\n\t\t#endif\n\t\t#ifdef STD_DIFFUSEDETAIL_TEXTURE_ALLOCATE\n\t\t\tuniform sampler2D texture_diffuseDetailMap;\n\t\t#endif\n\t\t#ifdef STD_NORMAL_TEXTURE_ALLOCATE\n\t\t\tuniform sampler2D texture_normalMap;\n\t\t#endif\n\t\t#ifdef STD_NORMALDETAIL_TEXTURE_ALLOCATE\n\t\t\tuniform sampler2D texture_normalDetailMap;\n\t\t#endif\n\t\t#ifdef STD_THICKNESS_TEXTURE_ALLOCATE\n\t\t\tuniform sampler2D texture_thicknessMap;\n\t\t#endif\n\t\t#ifdef STD_REFRACTION_TEXTURE_ALLOCATE\n\t\t\tuniform sampler2D texture_refractionMap;\n\t\t#endif\n\t\t#ifdef LIT_IRIDESCENCE\n\t\t\tfloat dIridescence;\n\t\t\tfloat dIridescenceThickness;\n\t\t\t#ifdef STD_IRIDESCENCE_THICKNESS_TEXTURE_ALLOCATE\n\t\t\t\tuniform sampler2D texture_iridescenceThicknessMap;\n\t\t\t#endif\n\t\t\t#ifdef STD_IRIDESCENCE_TEXTURE_ALLOCATE\n\t\t\t\tuniform sampler2D texture_iridescenceMap;\n\t\t\t#endif\n\t\t#endif\n\t\t#ifdef LIT_CLEARCOAT\n\t\t\tfloat ccSpecularity;\n\t\t\tfloat ccGlossiness;\n\t\t\tvec3 ccNormalW;\n\t\t#endif\n\t\t#ifdef LIT_GGX_SPECULAR\n\t\t\tfloat dAnisotropy;\n\t\t\tvec2 dAnisotropyRotation;\n\t\t#endif\n\t\t#ifdef LIT_SPECULAR_OR_REFLECTION\n\t\t\t#ifdef LIT_SHEEN\n\t\t\t\tvec3 sSpecularity;\n\t\t\t\tfloat sGlossiness;\n\t\t\t\t#ifdef STD_SHEEN_TEXTURE_ALLOCATE\n\t\t\t\t\tuniform sampler2D texture_sheenMap;\n\t\t\t\t#endif\n\t\t\t\t#ifdef STD_SHEENGLOSS_TEXTURE_ALLOCATE\n\t\t\t\t\tuniform sampler2D texture_sheenGlossMap;\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t\t#ifdef LIT_METALNESS\n\t\t\t\tfloat dMetalness;\n\t\t\t\tfloat dIor;\n\t\t\t\t#ifdef STD_METALNESS_TEXTURE_ALLOCATE\n\t\t\t\t\tuniform sampler2D texture_metalnessMap;\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t\t#ifdef LIT_SPECULARITY_FACTOR\n\t\t\t\tfloat dSpecularityFactor;\n\t\t\t\t#ifdef STD_SPECULARITYFACTOR_TEXTURE_ALLOCATE\n\t\t\t\t\tuniform sampler2D texture_specularityFactorMap;\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t\t#ifdef STD_SPECULAR_COLOR\n\t\t\t\t#ifdef STD_SPECULAR_TEXTURE_ALLOCATE\n\t\t\t\t\tuniform sampler2D texture_specularMap;\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t\t#ifdef STD_GLOSS_TEXTURE_ALLOCATE\n\t\t\t\tuniform sampler2D texture_glossMap;\n\t\t\t#endif\n\t\t#endif\n\t\t#ifdef STD_AO\n\t\t\tfloat dAo;\n\t\t\t#ifdef STD_AO_TEXTURE_ALLOCATE\n\t\t\t\tuniform sampler2D texture_aoMap;\n\t\t\t#endif\n\t\t\t#ifdef STD_AODETAIL_TEXTURE_ALLOCATE\n\t\t\t\tuniform sampler2D texture_aoDetailMap;\n\t\t\t#endif\n\t\t#endif\n\t\tvec3 dEmission;\n\t\t#ifdef STD_EMISSIVE_TEXTURE_ALLOCATE\n\t\t\tuniform sampler2D texture_emissiveMap;\n\t\t#endif\n\t\t#ifdef LIT_CLEARCOAT\n\t\t\t#ifdef STD_CLEARCOAT_TEXTURE_ALLOCATE\n\t\t\t\tuniform sampler2D texture_clearCoatMap;\n\t\t\t#endif\n\t\t\t#ifdef STD_CLEARCOATGLOSS_TEXTURE_ALLOCATE\n\t\t\t\tuniform sampler2D texture_clearCoatGlossMap;\n\t\t\t#endif\n\t\t\t#ifdef STD_CLEARCOATNORMAL_TEXTURE_ALLOCATE\n\t\t\t\tuniform sampler2D texture_clearCoatNormalMap;\n\t\t\t#endif\n\t\t#endif\n\t\t\n\t\t#ifdef LIT_GGX_SPECULAR\n\t\t\t#ifdef STD_ANISOTROPY_TEXTURE_ALLOCATE\n\t\t\t\tuniform sampler2D texture_anisotropyMap;\n\t\t\t#endif\n\t\t#endif\n\t\t#if defined(STD_LIGHTMAP) || defined(STD_LIGHT_VERTEX_COLOR)\n\t\t\tvec3 dLightmap;\n\t\t\t#ifdef STD_LIGHT_TEXTURE_ALLOCATE\n\t\t\t\tuniform sampler2D texture_lightMap;\n\t\t\t#endif\n\t\t#endif\n\t#endif\n\t#include \"litShaderCorePS\"\n`;\n\nvar stdFrontEndPS$1 = `\n\t#if LIT_BLEND_TYPE != NONE || defined(LIT_ALPHA_TEST) || defined(LIT_ALPHA_TO_COVERAGE) || STD_OPACITY_DITHER != NONE\n\t\t#include \"opacityPS\"\n\t\t#if defined(LIT_ALPHA_TEST)\n\t\t\t#include \"alphaTestPS\"\n\t\t#endif\n\t\t#if STD_OPACITY_DITHER != NONE\n\t\t\t#include \"opacityDitherPS\"\n\t\t#endif\n\t#endif\n\t#ifdef FORWARD_PASS\n\t\t#ifdef STD_HEIGHT_MAP\n\t\t\t#include \"parallaxPS\"\n\t\t#endif\n\t\t#include  \"diffusePS\"\n\t\t#ifdef LIT_NEEDS_NORMAL\n\t\t\t#include \"normalMapPS\"\n\t\t#endif\n\t\t#ifdef LIT_REFRACTION\n\t\t\t#include \"transmissionPS\"\n\t\t\t#include \"thicknessPS\"\n\t\t#endif\n\t\t#ifdef LIT_IRIDESCENCE\n\t\t\t#include \"iridescencePS\"\n\t\t\t#include \"iridescenceThicknessPS\"\n\t\t#endif\n\t\t#ifdef LIT_SPECULAR_OR_REFLECTION\n\t\t\t#ifdef LIT_SHEEN\n\t\t\t\t#include \"sheenPS\"\n\t\t\t\t#include \"sheenGlossPS\"\n\t\t\t#endif\n\t\t\t#ifdef LIT_METALNESS\n\t\t\t\t#include \"metalnessPS\"\n\t\t\t\t#include \"iorPS\"\n\t\t\t#endif\n\t\t\t#ifdef LIT_SPECULARITY_FACTOR\n\t\t\t\t#include \"specularityFactorPS\"\n\t\t\t#endif\n\t\t\t#ifdef STD_SPECULAR_COLOR\n\t\t\t\t#include \"specularPS\"\n\t\t\t#else\n\t\t\t\tvoid getSpecularity() { \n\t\t\t\t\tdSpecularity = vec3(1);\n\t\t\t\t}\n\t\t\t#endif\n\t\t\t#include \"glossPS\"\n\t\t#endif\n\t\t#ifdef STD_AO\n\t\t\t#include \"aoPS\"\n\t\t#endif\n\t\t#include \"emissivePS\"\n\t\t#ifdef LIT_CLEARCOAT\n\t\t\t#include \"clearCoatPS\"\n\t\t\t#include \"clearCoatGlossPS\"\n\t\t\t#include \"clearCoatNormalPS\"\n\t\t#endif\n\t\t#if defined(LIT_SPECULAR) && defined(LIT_LIGHTING) && defined(LIT_GGX_SPECULAR)\n\t\t\t#include \"anisotropyPS\"\n\t\t#endif\n\t\t#if defined(STD_LIGHTMAP) || defined(STD_LIGHT_VERTEX_COLOR)\n\t\t\t#include \"lightmapPS\"\n\t\t#endif\n\t#endif\n\tvoid evaluateFrontend() {\n\t\t#if LIT_BLEND_TYPE != NONE || defined(LIT_ALPHA_TEST) || defined(LIT_ALPHA_TO_COVERAGE) || STD_OPACITY_DITHER != NONE\n\t\t\tgetOpacity();\n\t\t\t#if defined(LIT_ALPHA_TEST)\n\t\t\t\talphaTest(dAlpha);\n\t\t\t#endif\n\t\t\t#if STD_OPACITY_DITHER != NONE\n\t\t\t\topacityDither(dAlpha, 0.0);\n\t\t\t#endif\n\t\t\tlitArgs_opacity = dAlpha;\n\t\t#endif\n\t\t#ifdef FORWARD_PASS\n\t\t\t#ifdef STD_HEIGHT_MAP\n\t\t\t\tgetParallax();\n\t\t\t#endif\n\t\t\tgetAlbedo();\n\t\t\tlitArgs_albedo = dAlbedo;\n\t\t\t#ifdef LIT_NEEDS_NORMAL\n\t\t\t\tgetNormal();\n\t\t\t\tlitArgs_worldNormal = dNormalW;\n\t\t\t#endif\n\t\t\t#ifdef LIT_REFRACTION\n\t\t\t\tgetRefraction();\n\t\t\t\tlitArgs_transmission = dTransmission;\n\t\t\t\tgetThickness();\n\t\t\t\tlitArgs_thickness = dThickness;\n\t\t\t\t#ifdef LIT_DISPERSION\n\t\t\t\t\tlitArgs_dispersion = material_dispersion;\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t\t#ifdef LIT_IRIDESCENCE\n\t\t\t\tgetIridescence();\n\t\t\t\tgetIridescenceThickness();\n\t\t\t\tlitArgs_iridescence_intensity = dIridescence;\n\t\t\t\tlitArgs_iridescence_thickness = dIridescenceThickness;\n\t\t\t#endif\n\t\t\t#ifdef LIT_SPECULAR_OR_REFLECTION\n\t\t\t\t#ifdef LIT_SHEEN\n\t\t\t\t\tgetSheen();\n\t\t\t\t\tlitArgs_sheen_specularity = sSpecularity;\n\t\t\t\t\tgetSheenGlossiness();\n\t\t\t\t\tlitArgs_sheen_gloss = sGlossiness;\n\t\t\t\t#endif\n\t\t\t\t#ifdef LIT_METALNESS\n\t\t\t\t\tgetMetalness();\n\t\t\t\t\tlitArgs_metalness = dMetalness;\n\t\t\t\t\tgetIor();\n\t\t\t\t\tlitArgs_ior = dIor;\n\t\t\t\t#endif\n\t\t\t\t#ifdef LIT_SPECULARITY_FACTOR\n\t\t\t\t\tgetSpecularityFactor();\n\t\t\t\t\tlitArgs_specularityFactor = dSpecularityFactor;\n\t\t\t\t#endif\n\t\t\t\tgetGlossiness();\n\t\t\t\tgetSpecularity();\n\t\t\t\tlitArgs_specularity = dSpecularity;\n\t\t\t\tlitArgs_gloss = dGlossiness;\n\t\t\t#endif\n\t\t\t#ifdef STD_AO\n\t\t\t\tgetAO();\n\t\t\t\tlitArgs_ao = dAo;\n\t\t\t#endif\n\t\t\tgetEmission();\n\t\t\tlitArgs_emission = dEmission;\n\t\t\t#ifdef LIT_CLEARCOAT\n\t\t\t\tgetClearCoat();\n\t\t\t\tgetClearCoatGlossiness();\n\t\t\t\tgetClearCoatNormal();\n\t\t\t\tlitArgs_clearcoat_specularity = ccSpecularity;\n\t\t\t\tlitArgs_clearcoat_gloss = ccGlossiness;\n\t\t\t\tlitArgs_clearcoat_worldNormal = ccNormalW;\n\t\t\t#endif\n\t\t\t#if defined(LIT_SPECULAR) && defined(LIT_LIGHTING) && defined(LIT_GGX_SPECULAR)\n\t\t\t\tgetAnisotropy();\n\t\t\t#endif\n\t\t\t#if defined(STD_LIGHTMAP) || defined(STD_LIGHT_VERTEX_COLOR)\n\t\t\t\tgetLightMap();\n\t\t\t\tlitArgs_lightmap = dLightmap;\n\t\t\t\t#ifdef STD_LIGHTMAP_DIR\n\t\t\t\t\tlitArgs_lightmapDir = dLightmapDir;\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t#endif\n\t}\n`;\n\nvar TBNPS$1 = `\n#ifdef LIT_TANGENTS\n\t#define TBN_TANGENTS\n#else\n\t#if defined(LIT_USE_NORMALS) || defined(LIT_USE_CLEARCOAT_NORMALS)\n\t\t#define TBN_DERIVATIVES\n\t#endif\n#endif\n#if defined(TBN_DERIVATIVES)\n\tuniform float tbnBasis;\n#endif\nvoid getTBN(vec3 tangent, vec3 binormal, vec3 normal) {\n\t#ifdef TBN_TANGENTS\n\t\tdTBN = mat3(normalize(tangent), normalize(binormal), normalize(normal));\n\t#elif defined(TBN_DERIVATIVES)\n\t\tvec2 uv = {lightingUv};\n\t\tvec3 dp1 = dFdx( vPositionW );\n\t\tvec3 dp2 = dFdy( vPositionW );\n\t\tvec2 duv1 = dFdx( uv );\n\t\tvec2 duv2 = dFdy( uv );\n\t\tvec3 dp2perp = cross( dp2, normal );\n\t\tvec3 dp1perp = cross( normal, dp1 );\n\t\tvec3 T = dp2perp * duv1.x + dp1perp * duv2.x;\n\t\tvec3 B = dp2perp * duv1.y + dp1perp * duv2.y;\n\t\tfloat denom = max( dot(T,T), dot(B,B) );\n\t\tfloat invmax = (denom == 0.0) ? 0.0 : tbnBasis / sqrt( denom );\n\t\tdTBN = mat3(T * invmax, -B * invmax, normal );\n\t#else\n\t\tvec3 B = cross(normal, vObjectSpaceUpW);\n\t\tvec3 T = cross(normal, B);\n\t\tif (dot(B,B)==0.0)\n\t\t{\n\t\t\tfloat major=max(max(normal.x, normal.y), normal.z);\n\t\t\tif (normal.x == major)\n\t\t\t{\n\t\t\t\tB = cross(normal, vec3(0,1,0));\n\t\t\t\tT = cross(normal, B);\n\t\t\t}\n\t\t\telse if (normal.y == major)\n\t\t\t{\n\t\t\t\tB = cross(normal, vec3(0,0,1));\n\t\t\t\tT = cross(normal, B);\n\t\t\t}\n\t\t\telse if (normal.z == major)\n\t\t\t{\n\t\t\t\tB = cross(normal, vec3(1,0,0));\n\t\t\t\tT = cross(normal, B);\n\t\t\t}\n\t\t}\n\t\tdTBN = mat3(normalize(T), normalize(B), normalize(normal));\n\t#endif\n}\n`;\n\nvar thicknessPS$1 = `\n#ifdef STD_THICKNESS_CONSTANT\nuniform float material_thickness;\n#endif\nvoid getThickness() {\n\tdThickness = 1.0;\n\t#ifdef STD_THICKNESS_CONSTANT\n\tdThickness *= material_thickness;\n\t#endif\n\t#ifdef STD_THICKNESS_TEXTURE\n\tdThickness *= texture2DBias({STD_THICKNESS_TEXTURE_NAME}, {STD_THICKNESS_TEXTURE_UV}, textureBias).{STD_THICKNESS_TEXTURE_CHANNEL};\n\t#endif\n\t#ifdef STD_THICKNESS_VERTEX\n\tdThickness *= saturate(vVertexColor.{STD_THICKNESS_VERTEX_CHANNEL});\n\t#endif\n}\n`;\n\nvar tonemappingPS$1 = `\n#if (TONEMAP == NONE)\n\t#include \"tonemappingNonePS\"\n#elif TONEMAP == FILMIC\n\t#include \"tonemappingFilmicPS\"\n#elif TONEMAP == LINEAR\n\t#include \"tonemappingLinearPS\"\n#elif TONEMAP == HEJL\n\t#include \"tonemappingHejlPS\"\n#elif TONEMAP == ACES\n\t#include \"tonemappingAcesPS\"\n#elif TONEMAP == ACES2\n\t#include \"tonemappingAces2PS\"\n#elif TONEMAP == NEUTRAL\n\t#include \"tonemappingNeutralPS\"\n#endif\n`;\n\nvar tonemappingAcesPS$1 = `\nuniform float exposure;\nvec3 toneMap(vec3 color) {\n\tfloat tA = 2.51;\n\tfloat tB = 0.03;\n\tfloat tC = 2.43;\n\tfloat tD = 0.59;\n\tfloat tE = 0.14;\n\tvec3 x = color * exposure;\n\treturn (x*(tA*x+tB))/(x*(tC*x+tD)+tE);\n}\n`;\n\nvar tonemappingAces2PS$1 = `\nuniform float exposure;\nconst mat3 ACESInputMat = mat3(\n\t0.59719, 0.35458, 0.04823,\n\t0.07600, 0.90834, 0.01566,\n\t0.02840, 0.13383, 0.83777\n);\nconst mat3 ACESOutputMat = mat3(\n\t 1.60475, -0.53108, -0.07367,\n\t-0.10208,  1.10813, -0.00605,\n\t-0.00327, -0.07276,  1.07602\n);\nvec3 RRTAndODTFit(vec3 v) {\n\tvec3 a = v * (v + 0.0245786) - 0.000090537;\n\tvec3 b = v * (0.983729 * v + 0.4329510) + 0.238081;\n\treturn a / b;\n}\nvec3 toneMap(vec3 color) {\n\tcolor *= exposure / 0.6;\n\tcolor = color * ACESInputMat;\n\tcolor = RRTAndODTFit(color);\n\tcolor = color * ACESOutputMat;\n\tcolor = clamp(color, 0.0, 1.0);\n\treturn color;\n}\n`;\n\nvar tonemappingFilmicPS$1 = `\nconst float A =  0.15;\nconst float B =  0.50;\nconst float C =  0.10;\nconst float D =  0.20;\nconst float E =  0.02;\nconst float F =  0.30;\nconst float W =  11.2;\nuniform float exposure;\nvec3 uncharted2Tonemap(vec3 x) {\n\t return ((x*(A*x+C*B)+D*E)/(x*(A*x+B)+D*F))-E/F;\n}\nvec3 toneMap(vec3 color) {\n\tcolor = uncharted2Tonemap(color * exposure);\n\tvec3 whiteScale = 1.0 / uncharted2Tonemap(vec3(W,W,W));\n\tcolor = color * whiteScale;\n\treturn color;\n}\n`;\n\nvar tonemappingHejlPS$1 = `\nuniform float exposure;\nvec3 toneMap(vec3 color) {\n\tcolor *= exposure;\n\tconst float  A = 0.22, B = 0.3, C = .1, D = 0.2, E = .01, F = 0.3;\n\tconst float Scl = 1.25;\n\tvec3 h = max( vec3(0.0), color - vec3(0.004) );\n\treturn (h*((Scl*A)*h+Scl*vec3(C*B,C*B,C*B))+Scl*vec3(D*E,D*E,D*E)) / (h*(A*h+vec3(B,B,B))+vec3(D*F,D*F,D*F)) - Scl*vec3(E/F,E/F,E/F);\n}\n`;\n\nvar tonemappingLinearPS$1 = `\nuniform float exposure;\nvec3 toneMap(vec3 color) {\n\treturn color * exposure;\n}\n`;\n\nvar tonemappingNeutralPS$1 = `\nuniform float exposure;\nvec3 toneMap(vec3 color) {\n\tcolor *= exposure;\n\tfloat startCompression = 0.8 - 0.04;\n\tfloat desaturation = 0.15;\n\tfloat x = min(color.r, min(color.g, color.b));\n\tfloat offset = x < 0.08 ? x - 6.25 * x * x : 0.04;\n\tcolor -= offset;\n\tfloat peak = max(color.r, max(color.g, color.b));\n\tif (peak < startCompression) return color;\n\tfloat d = 1. - startCompression;\n\tfloat newPeak = 1. - d * d / (peak + d - startCompression);\n\tcolor *= newPeak / peak;\n\tfloat g = 1. - 1. / (desaturation * (peak - newPeak) + 1.);\n\treturn mix(color, newPeak * vec3(1, 1, 1), g);\n}\n`;\n\nvar tonemappingNonePS$1 = `\nvec3 toneMap(vec3 color) {\n\treturn color;\n}\n`;\n\nvar transformVS$1 = `\n#ifdef PIXELSNAP\nuniform vec4 uScreenSize;\n#endif\n#ifdef SCREENSPACE\nuniform float projectionFlipY;\n#endif\nvec4 evalWorldPosition(vec3 vertexPosition, mat4 modelMatrix) {\n\tvec3 localPos = getLocalPosition(vertexPosition);\n\t#ifdef NINESLICED\n\t\tlocalPos.xz *= outerScale;\n\t\tvec2 positiveUnitOffset = clamp(vertexPosition.xz, vec2(0.0), vec2(1.0));\n\t\tvec2 negativeUnitOffset = clamp(-vertexPosition.xz, vec2(0.0), vec2(1.0));\n\t\tlocalPos.xz += (-positiveUnitOffset * innerOffset.xy + negativeUnitOffset * innerOffset.zw) * vertex_texCoord0.xy;\n\t\tvTiledUv = (localPos.xz - outerScale + innerOffset.xy) * -0.5 + 1.0;\n\t\tlocalPos.xz *= -0.5;\n\t\tlocalPos = localPos.xzy;\n\t#endif\n\tvec4 posW = modelMatrix * vec4(localPos, 1.0);\n\t#ifdef SCREENSPACE\n\t\tposW.zw = vec2(0.0, 1.0);\n\t#endif\n\treturn posW;\n}\nvec4 getPosition() {\n\tdModelMatrix = getModelMatrix();\n\tvec4 posW = evalWorldPosition(vertex_position.xyz, dModelMatrix);\n\tdPositionW = posW.xyz;\n\tvec4 screenPos;\n\t#ifdef UV1LAYOUT\n\t\tscreenPos = vec4(vertex_texCoord1.xy * 2.0 - 1.0, 0.5, 1);\n\t\t#ifdef WEBGPU\n\t\t\tscreenPos.y *= -1.0;\n\t\t#endif\n\t#else\n\t\t#ifdef SCREENSPACE\n\t\t\tscreenPos = posW;\n\t\t\tscreenPos.y *= projectionFlipY;\n\t\t#else\n\t\t\tscreenPos = matrix_viewProjection * posW;\n\t\t#endif\n\t\t#ifdef PIXELSNAP\n\t\t\tscreenPos.xy = (screenPos.xy * 0.5) + 0.5;\n\t\t\tscreenPos.xy *= uScreenSize.xy;\n\t\t\tscreenPos.xy = floor(screenPos.xy);\n\t\t\tscreenPos.xy *= uScreenSize.zw;\n\t\t\tscreenPos.xy = (screenPos.xy * 2.0) - 1.0;\n\t\t#endif\n\t#endif\n\treturn screenPos;\n}\nvec3 getWorldPosition() {\n\treturn dPositionW;\n}\n`;\n\nvar transformCoreVS$1 = `\nattribute vec4 vertex_position;\nuniform mat4 matrix_viewProjection;\nuniform mat4 matrix_model;\n#ifdef MORPHING\n\tuniform vec2 morph_tex_params;\n\tattribute uint morph_vertex_id;\n\tivec2 getTextureMorphCoords() {\n\t\tivec2 textureSize = ivec2(morph_tex_params);\n\t\tint morphGridV = int(morph_vertex_id) / textureSize.x;\n\t\tint morphGridU = int(morph_vertex_id) - (morphGridV * textureSize.x);\n\t\t#ifdef WEBGPU\n\t\t\tmorphGridV = textureSize.y - morphGridV - 1;\n\t\t#endif\n\t\treturn ivec2(morphGridU, morphGridV);\n\t}\n\t#ifdef MORPHING_POSITION\n\t\t#ifdef MORPHING_INT\n\t\t\tuniform vec3 aabbSize;\n\t\t\tuniform vec3 aabbMin;\n\t\t\tuniform usampler2D morphPositionTex;\n\t\t#else\n\t\t\tuniform highp sampler2D morphPositionTex;\n\t\t#endif\n\t#endif\n#endif\n#ifdef defined(BATCH)\n\t#include \"skinBatchVS\"\n\tmat4 getModelMatrix() {\n\t\treturn getBoneMatrix(vertex_boneIndices);\n\t}\n#elif defined(SKIN)\n\t#include \"skinVS\"\n\tmat4 getModelMatrix() {\n\t\treturn matrix_model * getSkinMatrix(vertex_boneIndices, vertex_boneWeights);\n\t}\n#elif defined(INSTANCING)\n\t#include \"transformInstancingVS\"\n#else\n\tmat4 getModelMatrix() {\n\t\treturn matrix_model;\n\t}\n#endif\nvec3 getLocalPosition(vec3 vertexPosition) {\n\tvec3 localPos = vertexPosition;\n\t#ifdef MORPHING_POSITION\n\t\tivec2 morphUV = getTextureMorphCoords();\n\t\t#ifdef MORPHING_INT\n\t\t\tvec3 morphPos = vec3(texelFetch(morphPositionTex, ivec2(morphUV), 0).xyz) / 65535.0 * aabbSize + aabbMin;\n\t\t#else\n\t\t\tvec3 morphPos = texelFetch(morphPositionTex, ivec2(morphUV), 0).xyz;\n\t\t#endif\n\t\tlocalPos += morphPos;\n\t#endif\n\treturn localPos;\n}\n`;\n\nvar transformInstancingVS$1 = `\nattribute vec4 instance_line1;\nattribute vec4 instance_line2;\nattribute vec4 instance_line3;\nattribute vec4 instance_line4;\nmat4 getModelMatrix() {\n\treturn matrix_model * mat4(instance_line1, instance_line2, instance_line3, instance_line4);\n}\n`;\n\nvar transmissionPS$1 = `\n#ifdef STD_REFRACTION_CONSTANT\nuniform float material_refraction;\n#endif\nvoid getRefraction() {\n\tfloat refraction = 1.0;\n\t#ifdef STD_REFRACTION_CONSTANT\n\trefraction = material_refraction;\n\t#endif\n\t#ifdef STD_REFRACTION_TEXTURE\n\trefraction *= texture2DBias({STD_REFRACTION_TEXTURE_NAME}, {STD_REFRACTION_TEXTURE_UV}, textureBias).{STD_REFRACTION_TEXTURE_CHANNEL};\n\t#endif\n\t#ifdef STD_REFRACTION_VERTEX\n\trefraction *= saturate(vVertexColor.{STD_REFRACTION_VERTEX_CHANNEL});\n\t#endif\n\tdTransmission = refraction;\n}\n`;\n\nvar twoSidedLightingPS$1 = `\nuniform float twoSidedLightingNegScaleFactor;\nvoid handleTwoSidedLighting() {\n\tdTBN[2] *= gl_FrontFacing ? twoSidedLightingNegScaleFactor : -twoSidedLightingNegScaleFactor;\n}\n`;\n\nvar uv0VS$1 = `\n#ifdef NINESLICED\n\tvec2 getUv0() {\n\t\tvec2 uv = vertex_position.xz;\n\t\tvec2 positiveUnitOffset = clamp(vertex_position.xz, vec2(0.0), vec2(1.0));\n\t\tvec2 negativeUnitOffset = clamp(-vertex_position.xz, vec2(0.0), vec2(1.0));\n\t\tuv += (-positiveUnitOffset * innerOffset.xy + negativeUnitOffset * innerOffset.zw) * vertex_texCoord0.xy;\n\t\tuv = uv * -0.5 + 0.5;\n\t\tuv = uv * atlasRect.zw + atlasRect.xy;\n\t\tvMask = vertex_texCoord0.xy;\n\t\treturn uv;\n\t}\n#else\n\tvec2 getUv0() {\n\t\treturn vertex_texCoord0;\n\t}\n#endif\n`;\n\nvar uv1VS$1 = `\nvec2 getUv1() {\n\treturn vertex_texCoord1;\n}\n`;\n\nvar uvTransformVS$1 = `\nvUV{TRANSFORM_UV_{i}}_{TRANSFORM_ID_{i}} = vec2(\n\tdot(vec3(uv{TRANSFORM_UV_{i}}, 1), {TRANSFORM_NAME_{i}}0),\n\tdot(vec3(uv{TRANSFORM_UV_{i}}, 1), {TRANSFORM_NAME_{i}}1)\n);\n`;\n\nvar uvTransformUniformsPS$1 = `\n\tuniform vec3 {TRANSFORM_NAME_{i}}0;\n\tuniform vec3 {TRANSFORM_NAME_{i}}1;\n`;\n\nvar viewDirPS$1 = `\nvoid getViewDir() {\n\tdViewDirW = normalize(view_position - vPositionW);\n}\n`;\n\nconst shaderChunksGLSL = {\n\t\talphaTestPS: alphaTestPS$1,\n\t\tambientPS: ambientPS$1,\n\t\tanisotropyPS: anisotropyPS$1,\n\t\taoPS: aoPS$1,\n\t\taoDiffuseOccPS: aoDiffuseOccPS$1,\n\t\taoSpecOccPS: aoSpecOccPS$1,\n\t\tbakeDirLmEndPS: bakeDirLmEndPS$1,\n\t\tbakeLmEndPS: bakeLmEndPS$1,\n\t\tbasePS: basePS$1,\n\t\tbaseNineSlicedPS: baseNineSlicedPS$1,\n\t\tbaseNineSlicedTiledPS: baseNineSlicedTiledPS$1,\n\t\tbayerPS: bayerPS$1,\n\t\tblurVSMPS: blurVSMPS$1,\n\t\tclearCoatPS: clearCoatPS$1,\n\t\tclearCoatGlossPS: clearCoatGlossPS$1,\n\t\tclearCoatNormalPS: clearCoatNormalPS$1,\n\t\tclusteredLightCookiesPS: clusteredLightCookiesPS$1,\n\t\tclusteredLightShadowsPS: clusteredLightShadowsPS$1,\n\t\tclusteredLightUtilsPS: clusteredLightUtilsPS$1,\n\t\tclusteredLightPS: clusteredLightPS$1,\n\t\tcombinePS: combinePS$1,\n\t\tcookieBlit2DPS: cookieBlit2DPS$1,\n\t\tcookieBlitCubePS: cookieBlitCubePS$1,\n\t\tcookieBlitVS: cookieBlitVS$1,\n\t\tcookiePS,\n\t\tcubeMapProjectPS: cubeMapProjectPS$1,\n\t\tcubeMapRotatePS: cubeMapRotatePS$1,\n\t\tdebugOutputPS: debugOutputPS$1,\n\t\tdebugProcessFrontendPS: debugProcessFrontendPS$1,\n\t\tdetailModesPS: detailModesPS$1,\n\t\tdiffusePS: diffusePS$1,\n\t\tdecodePS: decodePS$1,\n\t\temissivePS: emissivePS$1,\n\t\tencodePS: encodePS$1,\n\t\tendPS: endPS$1,\n\t\tenvAtlasPS: envAtlasPS$1,\n\t\tenvProcPS: envProcPS$1,\n\t\tfalloffInvSquaredPS: falloffInvSquaredPS$1,\n\t\tfalloffLinearPS: falloffLinearPS$1,\n\t\tfloatAsUintPS: floatAsUintPS$1,\n\t\tfogPS: fogPS$1,\n\t\tfresnelSchlickPS: fresnelSchlickPS$1,\n\t\tfrontendCodePS: '',\n\t\tfrontendDeclPS: '',\n\t\tfullscreenQuadVS: fullscreenQuadVS$1,\n\t\tgammaPS: gammaPS$1,\n\t\tgles3PS,\n\t\tgles3VS,\n\t\tglossPS: glossPS$1,\n\t\tquadVS: quadVS$1,\n\t\timmediateLinePS: immediateLinePS$1,\n\t\timmediateLineVS: immediateLineVS$1,\n\t\tiridescenceDiffractionPS: iridescenceDiffractionPS$1,\n\t\tiridescencePS: iridescencePS$1,\n\t\tiridescenceThicknessPS: iridescenceThicknessPS$1,\n\t\tiorPS: iorPS$1,\n\t\tlightDeclarationPS: lightDeclarationPS$1,\n\t\tlightDiffuseLambertPS: lightDiffuseLambertPS$1,\n\t\tlightDirPointPS: lightDirPointPS$1,\n\t\tlightEvaluationPS: lightEvaluationPS$1,\n\t\tlightFunctionLightPS: lightFunctionLightPS$1,\n\t\tlightFunctionShadowPS: lightFunctionShadowPS$1,\n\t\tlightingPS: lightingPS$1,\n\t\tlightmapAddPS: lightmapAddPS$1,\n\t\tlightmapPS: lightmapPS$1,\n\t\tlightSpecularAnisoGGXPS: lightSpecularAnisoGGXPS$1,\n\t\tlightSpecularBlinnPS: lightSpecularBlinnPS$1,\n\t\tlightSheenPS: lightSheenPS$1,\n\t\tlinearizeDepthPS: linearizeDepthPS$1,\n\t\tlitForwardBackendPS: litForwardBackendPS$1,\n\t\tlitForwardDeclarationPS: litForwardDeclarationPS$1,\n\t\tlitForwardMainPS: litForwardMainPS$1,\n\t\tlitForwardPostCodePS: litForwardPostCodePS$1,\n\t\tlitForwardPreCodePS: litForwardPreCodePS$1,\n\t\tlitMainPS: litMainPS$1,\n\t\tlitMainVS: litMainVS$1,\n\t\tlitOtherMainPS: litOtherMainPS$1,\n\t\tlitShaderArgsPS: litShaderArgsPS$1,\n\t\tlitShaderCorePS: litShaderCorePS$1,\n\t\tlitShadowMainPS: litShadowMainPS$1,\n\t\tlitUserDeclarationPS: '',\n\t\tlitUserDeclarationVS: '',\n\t\tlitUserCodePS: '',\n\t\tlitUserCodeVS: '',\n\t\tlitUserMainStartPS: '',\n\t\tlitUserMainStartVS: '',\n\t\tlitUserMainEndPS: '',\n\t\tlitUserMainEndVS: '',\n\t\tltcPS: ltcPS$1,\n\t\tmetalnessPS: metalnessPS$1,\n\t\tmetalnessModulatePS: metalnessModulatePS$1,\n\t\tmorphPS: morphPS$1,\n\t\tmorphVS: morphVS$1,\n\t\tmsdfPS: msdfPS$1,\n\t\tmsdfVS: msdfVS$1,\n\t\tnormalVS: normalVS$1,\n\t\tnormalCoreVS: normalCoreVS$1,\n\t\tnormalMapPS: normalMapPS$1,\n\t\topacityPS: opacityPS$1,\n\t\topacityDitherPS: opacityDitherPS$1,\n\t\toutputPS: outputPS$1,\n\t\toutputAlphaPS: outputAlphaPS$1,\n\t\tpackHalfPS: packHalfPS$1,\n\t\toutputTex2DPS: outputTex2DPS$1,\n\t\tsheenPS: sheenPS$1,\n\t\tsheenGlossPS: sheenGlossPS$1,\n\t\tparallaxPS: parallaxPS$1,\n\t\tpickPS: pickPS$1,\n\t\treflDirPS: reflDirPS$1,\n\t\treflDirAnisoPS: reflDirAnisoPS$1,\n\t\treflectionCCPS: reflectionCCPS$1,\n\t\treflectionCubePS: reflectionCubePS$1,\n\t\treflectionEnvHQPS: reflectionEnvHQPS$1,\n\t\treflectionEnvPS: reflectionEnvPS$1,\n\t\treflectionSpherePS: reflectionSpherePS$1,\n\t\treflectionSheenPS: reflectionSheenPS$1,\n\t\trefractionCubePS: refractionCubePS$1,\n\t\trefractionDynamicPS: refractionDynamicPS$1,\n\t\treprojectPS: reprojectPS$1,\n\t\treprojectVS: reprojectVS$1,\n\t\tscreenDepthPS: screenDepthPS$1,\n\t\tshadowCascadesPS: shadowCascadesPS$1,\n\t\tshadowEVSMPS: shadowEVSMPS$1,\n\t\tshadowPCF1PS: shadowPCF1PS$1,\n\t\tshadowPCF3PS: shadowPCF3PS$1,\n\t\tshadowPCF5PS: shadowPCF5PS$1,\n\t\tshadowPCSSPS,\n\t\tshadowSoftPS: shadowSoftPS$1,\n\t\tskinBatchVS: skinBatchVS$1,\n\t\tskinVS: skinVS$1,\n\t\tskyboxPS: skyboxPS$1,\n\t\tskyboxVS: skyboxVS$1,\n\t\tspecularPS: specularPS$1,\n\t\tsphericalPS: sphericalPS$1,\n\t\tspecularityFactorPS: specularityFactorPS$1,\n\t\tspotPS: spotPS$1,\n\t\tstartNineSlicedPS: startNineSlicedPS$1,\n\t\tstartNineSlicedTiledPS: startNineSlicedTiledPS$1,\n\t\tstdDeclarationPS: stdDeclarationPS$1,\n\t\tstdFrontEndPS: stdFrontEndPS$1,\n\t\tTBNPS: TBNPS$1,\n\t\tthicknessPS: thicknessPS$1,\n\t\ttonemappingPS: tonemappingPS$1,\n\t\ttonemappingAcesPS: tonemappingAcesPS$1,\n\t\ttonemappingAces2PS: tonemappingAces2PS$1,\n\t\ttonemappingFilmicPS: tonemappingFilmicPS$1,\n\t\ttonemappingHejlPS: tonemappingHejlPS$1,\n\t\ttonemappingLinearPS: tonemappingLinearPS$1,\n\t\ttonemappingNeutralPS: tonemappingNeutralPS$1,\n\t\ttonemappingNonePS: tonemappingNonePS$1,\n\t\ttransformVS: transformVS$1,\n\t\ttransformCoreVS: transformCoreVS$1,\n\t\ttransformInstancingVS: transformInstancingVS$1,\n\t\ttransmissionPS: transmissionPS$1,\n\t\ttwoSidedLightingPS: twoSidedLightingPS$1,\n\t\tuv0VS: uv0VS$1,\n\t\tuv1VS: uv1VS$1,\n\t\tuvTransformVS: uvTransformVS$1,\n\t\tuvTransformUniformsPS: uvTransformUniformsPS$1,\n\t\tviewDirPS: viewDirPS$1,\n\t\twebgpuPS: webgpuPS$1,\n\t\twebgpuVS: webgpuVS$1\n};\n\nvar alphaTestPS = `\nuniform alpha_ref: f32;\nfn alphaTest(a: f32) {\n\tif (a < uniform.alpha_ref) {\n\t\tdiscard;\n\t}\n}\n`;\n\nvar ambientPS = `\n#if LIT_AMBIENT_SOURCE == AMBIENTSH\n\tuniform ambientSH: array<vec3f, 9>;\n#endif\n#if LIT_AMBIENT_SOURCE == ENVALATLAS\n\t#include \"envAtlasPS\"\n\t#ifndef ENV_ATLAS\n\t\t#define ENV_ATLAS\n\t\tvar texture_envAtlas: texture_2d<f32>;\n\t\tvar texture_envAtlasSampler: sampler;\n\t#endif\n#endif\nfn addAmbient(worldNormal: vec3f) {\n\t#ifdef LIT_AMBIENT_SOURCE == AMBIENTSH\n\t\tlet n: vec3f = cubeMapRotate(worldNormal);\n\t\tlet color: vec3f =\n\t\t\tuniform.ambientSH[0] +\n\t\t\tuniform.ambientSH[1] * n.x +\n\t\t\tuniform.ambientSH[2] * n.y +\n\t\t\tuniform.ambientSH[3] * n.z +\n\t\t\tuniform.ambientSH[4] * n.x * n.z +\n\t\t\tuniform.ambientSH[5] * n.z * n.y +\n\t\t\tuniform.ambientSH[6] * n.y * n.x +\n\t\t\tuniform.ambientSH[7] * (3.0 * n.z * n.z - 1.0) +\n\t\t\tuniform.ambientSH[8] * (n.x * n.x - n.y * n.y);\n\t\tdDiffuseLight += processEnvironment(max(color, vec3f(0.0)));\n\t#endif\n\t#if LIT_AMBIENT_SOURCE == ENVALATLAS\n\t\tlet dir: vec3f = normalize(cubeMapRotate(worldNormal) * vec3f(-1.0, 1.0, 1.0));\n\t\tlet uv: vec2f = mapUv(toSphericalUv(dir), vec4f(128.0, 256.0 + 128.0, 64.0, 32.0) / atlasSize);\n\t\tlet raw: vec4f = textureSample(texture_envAtlas, texture_envAtlasSampler, uv);\n\t\tlet linear: vec3f = {ambientDecode}(raw);\n\t\tdDiffuseLight += processEnvironment(linear);\n\t#endif\n\t#if LIT_AMBIENT_SOURCE == CONSTANT\n\t\tdDiffuseLight += uniform.light_globalAmbient;\n\t#endif\n}\n`;\n\nvar anisotropyPS = `\n#ifdef LIT_GGX_SPECULAR\n\tuniform material_anisotropyIntensity: f32;\n\tuniform material_anisotropyRotation: vec2f;\n#endif\nfn getAnisotropy() {\n\tdAnisotropy = 0.0;\n\tdAnisotropyRotation = vec2f(1.0, 0.0);\n#ifdef LIT_GGX_SPECULAR\n\tdAnisotropy = uniform.material_anisotropyIntensity;\n\tdAnisotropyRotation = uniform.material_anisotropyRotation;\n#endif\n#ifdef STD_ANISOTROPY_TEXTURE\n\tlet anisotropyTex: vec3f = textureSampleBias({STD_ANISOTROPY_TEXTURE_NAME}, {STD_ANISOTROPY_TEXTURE_NAME}Sampler, {STD_ANISOTROPY_TEXTURE_UV}, uniform.textureBias).rgb;\n\tdAnisotropy *= anisotropyTex.b;\n\tlet anisotropyRotationFromTex: vec2f = anisotropyTex.rg * 2.0 - vec2f(1.0);\n\tlet rotationMatrix: mat2x2f = mat2x2f(dAnisotropyRotation.x, dAnisotropyRotation.y, -dAnisotropyRotation.y, dAnisotropyRotation.x);\n\tdAnisotropyRotation = rotationMatrix * anisotropyRotationFromTex;\n#endif\n\tdAnisotropy = clamp(dAnisotropy, 0.0, 1.0);\n}\n`;\n\nvar aoPS = `\n#if defined(STD_AO_TEXTURE) || defined(STD_AO_VERTEX)\n\tuniform material_aoIntensity: f32;\n#endif\n#ifdef STD_AODETAIL_TEXTURE\n\t#include \"detailModesPS\"\n#endif\nfn getAO() {\n\tdAo = 1.0;\n\t#ifdef STD_AO_TEXTURE\n\t\tvar aoBase: f32 = textureSampleBias({STD_AO_TEXTURE_NAME}, {STD_AO_TEXTURE_NAME}Sampler, {STD_AO_TEXTURE_UV}, uniform.textureBias).{STD_AO_TEXTURE_CHANNEL};\n\t\t#ifdef STD_AODETAIL_TEXTURE\n\t\t\tvar aoDetail: f32 = textureSampleBias({STD_AODETAIL_TEXTURE_NAME}, {STD_AODETAIL_TEXTURE_NAME}Sampler, {STD_AODETAIL_TEXTURE_UV}, uniform.textureBias).{STD_AODETAIL_TEXTURE_CHANNEL};\n\t\t\taoBase = detailMode_{STD_AODETAIL_DETAILMODE}(vec3f(aoBase), vec3f(aoDetail)).r;\n\t\t#endif\n\t\tdAo = dAo * aoBase;\n\t#endif\n\t#ifdef STD_AO_VERTEX\n\t\tdAo = dAo * saturate(vVertexColor.{STD_AO_VERTEX_CHANNEL});\n\t#endif\n\t#if defined(STD_AO_TEXTURE) || defined(STD_AO_VERTEX)\n\t\tdAo = mix(1.0, dAo, uniform.material_aoIntensity);\n\t#endif\n}\n`;\n\nvar aoDiffuseOccPS = `\nfn occludeDiffuse(ao: f32) {\n\tdDiffuseLight = dDiffuseLight * ao;\n}\n`;\n\nvar aoSpecOccPS = `\n#if LIT_OCCLUDE_SPECULAR != NONE\n\t#ifdef LIT_OCCLUDE_SPECULAR_FLOAT\n\t\tuniform material_occludeSpecularIntensity: f32;\n\t#endif\n#endif\nfn occludeSpecular(gloss: f32, ao: f32, worldNormal: vec3f, viewDir: vec3f) {\n\t#if LIT_OCCLUDE_SPECULAR == AO\n\t\t#ifdef LIT_OCCLUDE_SPECULAR_FLOAT\n\t\t\tvar specOcc: f32 = mix(1.0, ao, uniform.material_occludeSpecularIntensity);\n\t\t#else\n\t\t\tvar specOcc: f32 = ao;\n\t\t#endif\n\t#endif\n\t#if LIT_OCCLUDE_SPECULAR == GLOSSDEPENDENT\n\t\tvar specPow: f32 = exp2(gloss * 11.0);\n\t\tvar specOcc: f32 = saturate(pow(dot(worldNormal, viewDir) + ao, 0.01 * specPow) - 1.0 + ao);\n\t\t#ifdef LIT_OCCLUDE_SPECULAR_FLOAT\n\t\t\tspecOcc = mix(1.0, specOcc, uniform.material_occludeSpecularIntensity);\n\t\t#endif\n\t#endif\n\t#if LIT_OCCLUDE_SPECULAR != NONE\n\t\tdSpecularLight = dSpecularLight * specOcc;\n\t\tdReflection = dReflection * specOcc;\n\t\t#ifdef LIT_SHEEN\n\t\t\tsSpecularLight = sSpecularLight * specOcc;\n\t\t\tsReflection = sReflection * specOcc;\n\t\t#endif\n\t#endif\n}\n`;\n\nvar bakeDirLmEndPS = `\n\tlet dirLm = textureSample(texture_dirLightMap, texture_dirLightMapSampler, vUv1);\n\tif (uniform.bakeDir > 0.5) {\n\t\tif (dAtten > 0.00001) {\n\t\t\tlet unpacked_dir = dirLm.xyz * 2.0 - vec3f(1.0);\n\t\t\tdAtten = clamp(dAtten, 0.0, 1.0);\n\t\t\tlet combined_dir = dLightDirNormW.xyz * dAtten + unpacked_dir * dirLm.w;\n\t\t\tlet finalRgb = normalize(combined_dir) * 0.5 + vec3f(0.5);\n\t\t\tlet finalA = max(dirLm.w + dAtten, 1.0 / 255.0);\n\t\t\toutput.color = vec4f(finalRgb, finalA);\n\t\t} else {\n\t\t\toutput.color = dirLm;\n\t\t}\n\t} else {\n\t\tlet alpha_min = select(0.0, 1.0 / 255.0, dAtten > 0.00001);\n\t\tlet finalA = max(dirLm.w, alpha_min);\n\t\toutput.color = vec4f(dirLm.rgb, finalA);\n\t}\n`;\n\nvar bakeLmEndPS = `\n#ifdef LIT_LIGHTMAP_BAKING_ADD_AMBIENT\n\tdDiffuseLight = ((dDiffuseLight - 0.5) * max(uniform.ambientBakeOcclusionContrast + 1.0, 0.0)) + 0.5;\n\tdDiffuseLight = dDiffuseLight + vec3f(uniform.ambientBakeOcclusionBrightness);\n\tdDiffuseLight = saturate3(dDiffuseLight);\n\tdDiffuseLight = dDiffuseLight * dAmbientLight;\n#endif\n#ifdef LIGHTMAP_RGBM\n\tvar temp_color_rgbm = vec4f(dDiffuseLight, 1.0);\n\ttemp_color_rgbm = vec4f(pow(temp_color_rgbm.rgb, vec3f(0.5)), temp_color_rgbm.a);\n\ttemp_color_rgbm = vec4f(temp_color_rgbm.rgb / 8.0, temp_color_rgbm.a);\n\tlet max_g_b = max(temp_color_rgbm.g, max(temp_color_rgbm.b, 1.0 / 255.0));\n\tlet max_rgb = max(temp_color_rgbm.r, max_g_b);\n\ttemp_color_rgbm.a = clamp(max_rgb, 0.0, 1.0);\n\ttemp_color_rgbm.a = ceil(temp_color_rgbm.a * 255.0) / 255.0;\n\ttemp_color_rgbm = vec4f(temp_color_rgbm.rgb / temp_color_rgbm.a, temp_color_rgbm.a);\n\toutput.color = temp_color_rgbm;\n#else\n\toutput.color = vec4f(dDiffuseLight, 1.0);\n#endif\n`;\n\nvar basePS = `\nuniform view_position: vec3f;\nuniform light_globalAmbient: vec3f;\nfn square(x: f32) -> f32 {\n\treturn x*x;\n}\nfn saturate(x: f32) -> f32 {\n\treturn clamp(x, 0.0, 1.0);\n}\nfn saturate3(x: vec3f) -> vec3f {\n\treturn clamp(x, vec3f(0.0), vec3f(1.0));\n}\n`;\n\nvar baseNineSlicedPS = `\n#define NINESLICED\nvarying vMask: vec2f;\nvarying vTiledUv: vec2f;\nuniform innerOffset: vec4f;\nuniform outerScale: vec2f;\nuniform atlasRect: vec4f;\nvar<private> nineSlicedUv: vec2f;\n`;\n\nvar baseNineSlicedTiledPS = `\n#define NINESLICED\n#define NINESLICETILED\nvarying vMask: vec2f;\nvarying vTiledUv: vec2f;\nuniform innerOffset: vec4f;\nuniform outerScale: vec2f;\nuniform atlasRect: vec4f;\nvar<private> nineSlicedUv: vec2f;\n`;\n\nvar bayerPS = `\nfn bayer2(p: vec2f) -> f32 {\n\treturn (2.0 * p.y + p.x + 1.0) % 4.0;\n}\nfn bayer4(p: vec2f) -> f32 {\n\tlet p1: vec2f = p % vec2f(2.0);\n\tlet p2: vec2f = floor(0.5 * (p % vec2f(4.0)));\n\treturn 4.0 * bayer2(p1) + bayer2(p2);\n}\nfn bayer8(p: vec2f) -> f32 {\n\tlet p1: vec2f = p % vec2f(2.0);\n\tlet p2: vec2f = floor(0.5 * (p % vec2f(4.0)));\n\tlet p4: vec2f = floor(0.25 * (p % vec2f(8.0)));\n\treturn 4.0 * (4.0 * bayer2(p1) + bayer2(p2)) + bayer2(p4);\n}\n`;\n\nvar blurVSMPS = `\nvarying vUv0: vec2f;\nvar source: texture_2d<f32>;\nvar sourceSampler: sampler;\n#ifdef GAUSS\n\tuniform weight: array<f32, {SAMPLES}>;\n#endif\nuniform pixelOffset: vec2f;\n@fragment\nfn fragmentMain(input: FragmentInput) -> FragmentOutput {\n\tvar output: FragmentOutput;\n\tvar moments: vec3f = vec3f(0.0);\n\tlet uv: vec2f = input.vUv0 - uniform.pixelOffset * (f32({SAMPLES}) * 0.5);\n\tfor (var i: i32 = 0; i < {SAMPLES}; i = i + 1) {\n\t\tlet c: vec4f = textureSample(source, sourceSampler, uv + uniform.pixelOffset * f32(i));\n\t\t#ifdef GAUSS\n\t\t\tmoments = moments + c.xyz * uniform.weight[i].element;\n\t\t#else\n\t\t\tmoments = moments + c.xyz;\n\t\t#endif\n\t}\n\t#ifndef GAUSS\n\t\tmoments = moments * (1.0 / f32({SAMPLES}));\n\t#endif\n\toutput.color = vec4f(moments, 1.0);\n\treturn output;\n}\n`;\n\nvar clearCoatPS = `\nuniform material_clearCoat: f32;\nfn getClearCoat() {\n\tccSpecularity = uniform.material_clearCoat;\n\t#ifdef STD_CLEARCOAT_TEXTURE\n\tccSpecularity = ccSpecularity * textureSampleBias({STD_CLEARCOAT_TEXTURE_NAME}, {STD_CLEARCOAT_TEXTURE_NAME}Sampler, {STD_CLEARCOAT_TEXTURE_UV}, uniform.textureBias).{STD_CLEARCOAT_TEXTURE_CHANNEL};\n\t#endif\n\t#ifdef STD_CLEARCOAT_VERTEX\n\tccSpecularity = ccSpecularity * saturate(vVertexColor.{STD_CLEARCOAT_VERTEX_CHANNEL});\n\t#endif\n}\n`;\n\nvar clearCoatGlossPS = `\n\tuniform material_clearCoatGloss: f32;\nfn getClearCoatGlossiness() {\n\tccGlossiness = uniform.material_clearCoatGloss;\n\t#ifdef STD_CLEARCOATGLOSS_TEXTURE\n\tccGlossiness = ccGlossiness * textureSampleBias({STD_CLEARCOATGLOSS_TEXTURE_NAME}, {STD_CLEARCOATGLOSS_TEXTURE_NAME}Sampler, {STD_CLEARCOATGLOSS_TEXTURE_UV}, uniform.textureBias).{STD_CLEARCOATGLOSS_TEXTURE_CHANNEL};\n\t#endif\n\t#ifdef STD_CLEARCOATGLOSS_VERTEX\n\tccGlossiness = ccGlossiness * saturate(vVertexColor.{STD_CLEARCOATGLOSS_VERTEX_CHANNEL});\n\t#endif\n\t#ifdef STD_CLEARCOATGLOSS_INVERT\n\tccGlossiness = 1.0 - ccGlossiness;\n\t#endif\n\tccGlossiness += 0.0000001;\n}\n`;\n\nvar clearCoatNormalPS = `\n#ifdef STD_CLEARCOATNORMAL_TEXTURE\n\tuniform material_clearCoatBumpiness: f32;\n#endif\nfn getClearCoatNormal() {\n#ifdef STD_CLEARCOATNORMAL_TEXTURE\n\tvar normalMap: vec3f = {STD_CLEARCOATNORMAL_TEXTURE_DECODE}(textureSampleBias({STD_CLEARCOATNORMAL_TEXTURE_NAME}, {STD_CLEARCOATNORMAL_TEXTURE_NAME}Sampler, {STD_CLEARCOATNORMAL_TEXTURE_UV}, uniform.textureBias));\n\tnormalMap = mix(vec3f(0.0, 0.0, 1.0), normalMap, uniform.material_clearCoatBumpiness);\n\tccNormalW = normalize(dTBN * normalMap);\n#else\n\tccNormalW = dVertexNormalW;\n#endif\n}\n`;\n\nvar clusteredLightUtilsPS = `\nstruct FaceCoords {\n\tuv: vec2f,\n\tfaceIndex: f32,\n\ttileOffset: vec2f,\n}\nfn getCubemapFaceCoordinates(dir: vec3f) -> FaceCoords {\n\tvar faceIndex: f32;\n\tvar tileOffset: vec2f;\n\tvar uv: vec2f;\n\tlet vAbs: vec3f = abs(dir);\n\tvar ma: f32;\n\tif (vAbs.z >= vAbs.x && vAbs.z >= vAbs.y) {\n\t\tlet is_neg_z = dir.z < 0.0;\n\t\tfaceIndex = select(4.0, 5.0, is_neg_z);\n\t\tma = 0.5 / vAbs.z;\n\t\tuv = vec2f(select(dir.x, -dir.x, is_neg_z), -dir.y);\n\t\ttileOffset = vec2f(2.0, select(0.0, 1.0, is_neg_z));\n\t} else if (vAbs.y >= vAbs.x) {\n\t\tlet is_neg_y = dir.y < 0.0;\n\t\tfaceIndex = select(2.0, 3.0, is_neg_y);\n\t\tma = 0.5 / vAbs.y;\n\t\tuv = vec2f(dir.x, select(dir.z, -dir.z, is_neg_y));\n\t\ttileOffset = vec2f(1.0, select(0.0, 1.0, is_neg_y));\n\t} else {\n\t\tlet is_neg_x = dir.x < 0.0;\n\t\tfaceIndex = select(0.0, 1.0, is_neg_x);\n\t\tma = 0.5 / vAbs.x;\n\t\tuv = vec2f(select(-dir.z, dir.z, is_neg_x), -dir.y);\n\t\ttileOffset = vec2f(0.0, select(0.0, 1.0, is_neg_x));\n\t}\n\tuv = uv * ma + 0.5;\n\treturn FaceCoords(uv, faceIndex, tileOffset);\n}\nfn getCubemapAtlasCoordinates(omniAtlasViewport: vec3f, shadowEdgePixels: f32, shadowTextureResolution: f32, dir: vec3f) -> vec2f {\n\tlet faceData: FaceCoords = getCubemapFaceCoordinates(dir);\n\tvar uv: vec2f = faceData.uv;\n\tlet tileOffset: vec2f = faceData.tileOffset;\n\tlet atlasFaceSize: f32 = omniAtlasViewport.z;\n\tlet tileSize: f32 = shadowTextureResolution * atlasFaceSize;\n\tvar offset: f32 = shadowEdgePixels / tileSize;\n\tuv = uv * (1.0 - offset * 2.0) + offset;\n\tuv = uv * atlasFaceSize;\n\tuv = uv + tileOffset * atlasFaceSize;\n\tuv = uv + omniAtlasViewport.xy;\n\treturn uv;\n}\n`;\n\nvar clusteredLightCookiesPS = `\nfn _getCookieClustered(tex: texture_2d<f32>, texSampler: sampler, uv: vec2f, intensity: f32, cookieChannel: vec4f) -> vec3f {\n\tlet pixel: vec4f = mix(vec4f(1.0), textureSampleLevel(tex, texSampler, uv, 0.0), intensity);\n\tlet isRgb: bool = dot(cookieChannel.rgb, vec3f(1.0)) == 3.0;\n\treturn select(vec3f(dot(pixel, cookieChannel)), pixel.rgb, isRgb);\n}\nfn getCookie2DClustered(tex: texture_2d<f32>, texSampler: sampler, transform: mat4x4f, worldPosition: vec3f, intensity: f32, cookieChannel: vec4f) -> vec3f {\n\tlet projPos: vec4f = transform * vec4f(worldPosition, 1.0);\n\treturn _getCookieClustered(tex, texSampler, projPos.xy / projPos.w, intensity, cookieChannel);\n}\nfn getCookieCubeClustered(tex: texture_2d<f32>, texSampler: sampler, dir: vec3f, intensity: f32, cookieChannel: vec4f, shadowTextureResolution: f32, shadowEdgePixels: f32, omniAtlasViewport: vec3f) -> vec3f {\n\tlet uv: vec2f = getCubemapAtlasCoordinates(omniAtlasViewport, shadowEdgePixels, shadowTextureResolution, dir);\n\treturn _getCookieClustered(tex, texSampler, uv, intensity, cookieChannel);\n}\n`;\n\nvar clusteredLightShadowsPS = `\nfn _getShadowCoordPerspZbuffer(shadowMatrix: mat4x4f, shadowParams: vec4f, wPos: vec3f) -> vec3f {\n\tvar projPos = shadowMatrix * vec4f(wPos, 1.0);\n\treturn projPos.xyz / projPos.w;\n}\nfn getShadowCoordPerspZbufferNormalOffset(shadowMatrix: mat4x4f, shadowParams: vec4f, normal: vec3f) -> vec3f {\n\tlet wPos: vec3f = vPositionW + normal * shadowParams.y;\n\treturn _getShadowCoordPerspZbuffer(shadowMatrix, shadowParams, wPos);\n}\nfn normalOffsetPointShadow(shadowParams: vec4f, lightPos: vec3f, lightDir: vec3f, lightDirNorm: vec3f, normal: vec3f) -> vec3f {\n\tlet distScale: f32 = length(lightDir);\n\tlet wPos: vec3f = vPositionW + normal * shadowParams.y * clamp(1.0 - dot(normal, -lightDirNorm), 0.0, 1.0) * distScale;\n\tlet dir: vec3f = wPos - lightPos;\n\treturn dir;\n}\n#if defined(CLUSTER_SHADOW_TYPE_PCF1)\n\tfn getShadowOmniClusteredPCF1(shadowMap: texture_depth_2d, shadowMapSampler: sampler_comparison, shadowParams: vec4f, omniAtlasViewport: vec3f, shadowEdgePixels: f32, lightDir: vec3f) -> f32 {\n\t\tlet shadowTextureResolution: f32 = shadowParams.x;\n\t\tlet uv: vec2f = getCubemapAtlasCoordinates(omniAtlasViewport, shadowEdgePixels, shadowTextureResolution, lightDir);\n\t\tlet shadowZ: f32 = length(lightDir) * shadowParams.w + shadowParams.z;\n\t\treturn textureSampleCompareLevel(shadowMap, shadowMapSampler, uv, shadowZ);\n\t}\n#endif\n#if defined(CLUSTER_SHADOW_TYPE_PCF3)\n\tfn getShadowOmniClusteredPCF3(shadowMap: texture_depth_2d, shadowMapSampler: sampler_comparison, shadowParams: vec4f, omniAtlasViewport: vec3f, shadowEdgePixels: f32, lightDir: vec3f) -> f32 {\n\t\tlet shadowTextureResolution: f32 = shadowParams.x;\n\t\tlet uv: vec2f = getCubemapAtlasCoordinates(omniAtlasViewport, shadowEdgePixels, shadowTextureResolution, lightDir);\n\t\tlet shadowZ: f32 = length(lightDir) * shadowParams.w + shadowParams.z;\n\t\tlet shadowCoord: vec3f = vec3f(uv, shadowZ);\n\t\treturn getShadowPCF3x3(shadowMap, shadowMapSampler, shadowCoord, shadowParams);\n\t}\n#endif\n#if defined(CLUSTER_SHADOW_TYPE_PCF5)\n\tfn getShadowOmniClusteredPCF5(shadowMap: texture_depth_2d, shadowMapSampler: sampler_comparison, shadowParams: vec4f, omniAtlasViewport: vec3f, shadowEdgePixels: f32, lightDir: vec3f) -> f32 {\n\t\tlet shadowTextureResolution: f32 = shadowParams.x;\n\t\tlet uv: vec2f = getCubemapAtlasCoordinates(omniAtlasViewport, shadowEdgePixels, shadowTextureResolution, lightDir);\n\t\tlet shadowZ: f32 = length(lightDir) * shadowParams.w + shadowParams.z;\n\t\tlet shadowCoord: vec3f = vec3f(uv, shadowZ);\n\t\treturn getShadowPCF5x5(shadowMap, shadowMapSampler, shadowCoord, shadowParams);\n\t}\n#endif\n#if defined(CLUSTER_SHADOW_TYPE_PCF1)\n\tfn getShadowSpotClusteredPCF1(shadowMap: texture_depth_2d, shadowMapSampler: sampler_comparison, shadowCoord: vec3f, shadowParams: vec4f) -> f32 {\n\t\treturn textureSampleCompareLevel(shadowMap, shadowMapSampler, shadowCoord.xy, shadowCoord.z);\n\t}\n#endif\n\t#if defined(CLUSTER_SHADOW_TYPE_PCF3)\n\tfn getShadowSpotClusteredPCF3(shadowMap: texture_depth_2d, shadowMapSampler: sampler_comparison, shadowCoord: vec3f, shadowParams: vec4f) -> f32 {\n\t\treturn getShadowSpotPCF3x3(shadowMap, shadowMapSampler, shadowCoord, shadowParams);\n\t}\n#endif\n\t#if defined(CLUSTER_SHADOW_TYPE_PCF5)\n\tfn getShadowSpotClusteredPCF5(shadowMap: texture_depth_2d, shadowMapSampler: sampler_comparison, shadowCoord: vec3f, shadowParams: vec4f) -> f32 {\n\t\treturn getShadowPCF5x5(shadowMap, shadowMapSampler, shadowCoord, shadowParams);\n\t}\n#endif\n`;\n\nvar clusteredLightPS = `\n#include \"lightBufferDefinesPS\"\n#include \"clusteredLightUtilsPS\"\n#ifdef CLUSTER_COOKIES\n\t#include \"clusteredLightCookiesPS\"\n#endif\n#ifdef CLUSTER_SHADOWS\n\t#include \"clusteredLightShadowsPS\"\n#endif\nvar clusterWorldTexture: texture_2d<f32>;\nvar lightsTexture: texture_2d<uff>;\n#ifdef CLUSTER_SHADOWS\n\tvar shadowAtlasTexture: texture_depth_2d;\n\tvar shadowAtlasTextureSampler: sampler_comparison;\n#endif\n#ifdef CLUSTER_COOKIES\n\tvar cookieAtlasTexture: texture_2d<f32>;\n\tvar cookieAtlasTextureSampler: sampler;\n#endif\nuniform clusterMaxCells: i32;\nuniform clusterSkip: f32;\nuniform clusterCellsCountByBoundsSize: vec3f;\nuniform clusterTextureSize: vec3f;\nuniform clusterBoundsMin: vec3f;\nuniform clusterBoundsDelta: vec3f;\nuniform clusterCellsDot: vec3f;\nuniform clusterCellsMax: vec3f;\nuniform shadowAtlasParams: vec2f;\nstruct ClusterLightData {\n\tflags: u32,\n\thalfWidth: vec3f,\n\tisSpot: bool,\n\thalfHeight: vec3f,\n\tlightIndex: i32,\n\tposition: vec3f,\n\tshape: u32,\n\tdirection: vec3f,\n\tfalloffModeLinear: bool,\n\tcolor: vec3f,\n\tshadowIntensity: f32,\n\tomniAtlasViewport: vec3f,\n\trange: f32,\n\tcookieChannelMask: vec4f,\n\tbiasesData: f32,\n\tcolorBFlagsData: u32,\n\tshadowBias: f32,\n\tshadowNormalBias: f32,\n\tanglesData: f32,\n\tinnerConeAngleCos: f32,\n\touterConeAngleCos: f32,\n\tcookieIntensity: f32,\n\tisDynamic: bool,\n\tisLightmapped: bool\n}\nvar<private> lightProjectionMatrix: mat4x4f;\nfn sampleLightTextureF(lightIndex: i32, index: i32) -> vec4f {\n\treturn textureLoad(lightsTexture, vec2<i32>(index, lightIndex), 0);\n}\nfn decodeClusterLightCore(clusterLightData: ptr<function, ClusterLightData>, lightIndex: f32) {\n\tclusterLightData.lightIndex = i32(lightIndex);\n\tlet halfData: vec4f = sampleLightTextureF(clusterLightData.lightIndex, {CLUSTER_TEXTURE_COLOR_ANGLES_BIAS});\n\tclusterLightData.anglesData = halfData.z;\n\tclusterLightData.biasesData = halfData.w;\n\tclusterLightData.colorBFlagsData = bitcast<u32>(halfData.y);\n\tlet colorRG: vec2f = unpack2x16float(bitcast<u32>(halfData.x));\n\tlet colorB_flags: vec2f = unpack2x16float(clusterLightData.colorBFlagsData);\n\tclusterLightData.color = vec3f(colorRG, colorB_flags.x) * {LIGHT_COLOR_DIVIDER};\n\tlet lightPosRange: vec4f = sampleLightTextureF(clusterLightData.lightIndex, {CLUSTER_TEXTURE_POSITION_RANGE});\n\tclusterLightData.position = lightPosRange.xyz;\n\tclusterLightData.range = lightPosRange.w;\n\tlet lightDir_Flags: vec4f = sampleLightTextureF(clusterLightData.lightIndex, {CLUSTER_TEXTURE_DIRECTION_FLAGS});\n\tclusterLightData.direction = lightDir_Flags.xyz;\n\tlet flags_uint: u32 = bitcast<u32>(lightDir_Flags.w);\n\tclusterLightData.flags = flags_uint;\n\tclusterLightData.isSpot = (flags_uint & (1u << 30u)) != 0u;\n\tclusterLightData.shape = (flags_uint >> 28u) & 0x3u;\n\tclusterLightData.falloffModeLinear = (flags_uint & (1u << 27u)) == 0u;\n\tclusterLightData.shadowIntensity = f32((flags_uint >> 0u) & 0xFFu) / 255.0;\n\tclusterLightData.cookieIntensity = f32((flags_uint >> 8u) & 0xFFu) / 255.0;\n\tclusterLightData.isDynamic = (flags_uint & (1u << 22u)) != 0u;\n\tclusterLightData.isLightmapped = (flags_uint & (1u << 21u)) != 0u;\n}\nfn decodeClusterLightSpot(clusterLightData: ptr<function, ClusterLightData>) {\n\tlet angleFlags: u32 = (clusterLightData.colorBFlagsData >> 16u) & 0xFFFFu;\n\tlet angleValues: vec2f = unpack2x16float(bitcast<u32>(clusterLightData.anglesData));\n\tlet innerVal: f32 = angleValues.x;\n\tlet outerVal: f32 = angleValues.y;\n\tlet innerIsVersine: bool = (angleFlags & 1u) != 0u;\n\tlet outerIsVersine: bool = ((angleFlags >> 1u) & 1u) != 0u;\n\tclusterLightData.innerConeAngleCos = select(innerVal, 1.0 - innerVal, innerIsVersine);\n\tclusterLightData.outerConeAngleCos = select(outerVal, 1.0 - outerVal, outerIsVersine);\n}\nfn decodeClusterLightOmniAtlasViewport(clusterLightData: ptr<function, ClusterLightData>) {\n\tclusterLightData.omniAtlasViewport = sampleLightTextureF(clusterLightData.lightIndex, {CLUSTER_TEXTURE_PROJ_MAT_0}).xyz;\n}\nfn decodeClusterLightAreaData(clusterLightData: ptr<function, ClusterLightData>) {\n\tclusterLightData.halfWidth = sampleLightTextureF(clusterLightData.lightIndex, {CLUSTER_TEXTURE_AREA_DATA_WIDTH}).xyz;\n\tclusterLightData.halfHeight = sampleLightTextureF(clusterLightData.lightIndex, {CLUSTER_TEXTURE_AREA_DATA_HEIGHT}).xyz;\n}\nfn decodeClusterLightProjectionMatrixData(clusterLightData: ptr<function, ClusterLightData>) {\n\tlet m0: vec4f = sampleLightTextureF(clusterLightData.lightIndex, {CLUSTER_TEXTURE_PROJ_MAT_0});\n\tlet m1: vec4f = sampleLightTextureF(clusterLightData.lightIndex, {CLUSTER_TEXTURE_PROJ_MAT_1});\n\tlet m2: vec4f = sampleLightTextureF(clusterLightData.lightIndex, {CLUSTER_TEXTURE_PROJ_MAT_2});\n\tlet m3: vec4f = sampleLightTextureF(clusterLightData.lightIndex, {CLUSTER_TEXTURE_PROJ_MAT_3});\n\tlightProjectionMatrix = mat4x4f(m0, m1, m2, m3);\n}\nfn decodeClusterLightShadowData(clusterLightData: ptr<function, ClusterLightData>) {\n\tlet biases: vec2f = unpack2x16float(bitcast<u32>(clusterLightData.biasesData));\n\tclusterLightData.shadowBias = biases.x;\n\tclusterLightData.shadowNormalBias = biases.y;\n}\nfn decodeClusterLightCookieData(clusterLightData: ptr<function, ClusterLightData>) {\n\tlet cookieFlags: u32 = (clusterLightData.flags >> 23u) & 0x0Fu;\n\tlet mask_uvec: vec4<u32> = vec4<u32>(cookieFlags) & vec4<u32>(1u, 2u, 4u, 8u);\n\tclusterLightData.cookieChannelMask = step(vec4f(1.0), vec4f(mask_uvec));\n}\nfn evaluateLight(\n\tlight: ptr<function, ClusterLightData>,\n\tworldNormal: vec3f,\n\tviewDir: vec3f,\n\treflectionDir: vec3f,\n#if defined(LIT_CLEARCOAT)\n\tclearcoatReflectionDir: vec3f,\n#endif\n\tgloss: f32,\n\tspecularity: vec3f,\n\tgeometricNormal: vec3f,\n\ttbn: mat3x3f,\n#if defined(LIT_IRIDESCENCE)\n\tiridescenceFresnel: vec3f,\n#endif\n\tclearcoat_worldNormal: vec3f,\n\tclearcoat_gloss: f32,\n\tsheen_gloss: f32,\n\tiridescence_intensity: f32\n) {\n\tvar cookieAttenuation: vec3f = vec3f(1.0);\n\tvar diffuseAttenuation: f32 = 1.0;\n\tvar falloffAttenuation: f32 = 1.0;\n\tlet lightDirW: vec3f = evalOmniLight(light.position);\n\tlet lightDirNormW: vec3f = normalize(lightDirW);\n\t#ifdef CLUSTER_AREALIGHTS\n\tif (light.shape != {LIGHTSHAPE_PUNCTUAL}) {\n\t\tdecodeClusterLightAreaData(light);\n\t\tif (light.shape == {LIGHTSHAPE_RECT}) {\n\t\t\tcalcRectLightValues(light.position, light.halfWidth, light.halfHeight);\n\t\t} else if (light.shape == {LIGHTSHAPE_DISK}) {\n\t\t\tcalcDiskLightValues(light.position, light.halfWidth, light.halfHeight);\n\t\t} else {\n\t\t\tcalcSphereLightValues(light.position, light.halfWidth, light.halfHeight);\n\t\t}\n\t\tfalloffAttenuation = getFalloffWindow(light.range, lightDirW);\n\t} else\n\t#endif\n\t{\n\t\tif (light.falloffModeLinear) {\n\t\t\tfalloffAttenuation = getFalloffLinear(light.range, lightDirW);\n\t\t} else {\n\t\t\tfalloffAttenuation = getFalloffInvSquared(light.range, lightDirW);\n\t\t}\n\t}\n\tif (falloffAttenuation > 0.00001) {\n\t\t#ifdef CLUSTER_AREALIGHTS\n\t\tif (light.shape != {LIGHTSHAPE_PUNCTUAL}) {\n\t\t\tif (light.shape == {LIGHTSHAPE_RECT}) {\n\t\t\t\tdiffuseAttenuation = getRectLightDiffuse(worldNormal, viewDir, lightDirW, lightDirNormW) * 16.0;\n\t\t\t} else if (light.shape == {LIGHTSHAPE_DISK}) {\n\t\t\t\tdiffuseAttenuation = getDiskLightDiffuse(worldNormal, viewDir, lightDirW, lightDirNormW) * 16.0;\n\t\t\t} else {\n\t\t\t\tdiffuseAttenuation = getSphereLightDiffuse(worldNormal, viewDir, lightDirW, lightDirNormW) * 16.0;\n\t\t\t}\n\t\t} else\n\t\t#endif\n\t\t{\n\t\t\tfalloffAttenuation = falloffAttenuation * getLightDiffuse(worldNormal, viewDir, lightDirNormW);\n\t\t}\n\t\tif (light.isSpot) {\n\t\t\tdecodeClusterLightSpot(light);\n\t\t\tfalloffAttenuation = falloffAttenuation * getSpotEffect(light.direction, light.innerConeAngleCos, light.outerConeAngleCos, lightDirNormW);\n\t\t}\n\t\t#if defined(CLUSTER_COOKIES) || defined(CLUSTER_SHADOWS)\n\t\tif (falloffAttenuation > 0.00001) {\n\t\t\tif (light.shadowIntensity > 0.0 || light.cookieIntensity > 0.0) {\n\t\t\t\tif (light.isSpot) {\n\t\t\t\t\tdecodeClusterLightProjectionMatrixData(light);\n\t\t\t\t} else {\n\t\t\t\t\tdecodeClusterLightOmniAtlasViewport(light);\n\t\t\t\t}\n\t\t\t\tlet shadowTextureResolution: f32 = uniform.shadowAtlasParams.x;\n\t\t\t\tlet shadowEdgePixels: f32 = uniform.shadowAtlasParams.y;\n\t\t\t\t#ifdef CLUSTER_COOKIES\n\t\t\t\tif (light.cookieIntensity > 0.0) {\n\t\t\t\t\tdecodeClusterLightCookieData(light);\n\t\t\t\t\tif (light.isSpot) {\n\t\t\t\t\t\tcookieAttenuation = getCookie2DClustered(cookieAtlasTexture, cookieAtlasTextureSampler, lightProjectionMatrix, vPositionW, light.cookieIntensity, light.cookieChannelMask);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcookieAttenuation = getCookieCubeClustered(cookieAtlasTexture, cookieAtlasTextureSampler, lightDirW, light.cookieIntensity, light.cookieChannelMask, shadowTextureResolution, shadowEdgePixels, light.omniAtlasViewport);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t#endif\n\t\t\t\t#ifdef CLUSTER_SHADOWS\n\t\t\t\tif (light.shadowIntensity > 0.0) {\n\t\t\t\t\tdecodeClusterLightShadowData(light);\n\t\t\t\t\tlet shadowParams: vec4f = vec4f(shadowTextureResolution, light.shadowNormalBias, light.shadowBias, 1.0 / light.range);\n\t\t\t\t\tif (light.isSpot) {\n\t\t\t\t\t\tlet shadowCoord: vec3f = getShadowCoordPerspZbufferNormalOffset(lightProjectionMatrix, shadowParams, geometricNormal);\n\t\t\t\t\t\t#if defined(CLUSTER_SHADOW_TYPE_PCF1)\n\t\t\t\t\t\t\tlet shadow: f32 = getShadowSpotClusteredPCF1(shadowAtlasTexture, shadowAtlasTextureSampler, shadowCoord, shadowParams);\n\t\t\t\t\t\t#elif defined(CLUSTER_SHADOW_TYPE_PCF3)\n\t\t\t\t\t\t\tlet shadow: f32 = getShadowSpotClusteredPCF3(shadowAtlasTexture, shadowAtlasTextureSampler, shadowCoord, shadowParams);\n\t\t\t\t\t\t#elif defined(CLUSTER_SHADOW_TYPE_PCF5)\n\t\t\t\t\t\t\tlet shadow: f32 = getShadowSpotClusteredPCF5(shadowAtlasTexture, shadowAtlasTextureSampler, shadowCoord, shadowParams);\n\t\t\t\t\t\t#elif defined(CLUSTER_SHADOW_TYPE_PCSS)\n\t\t\t\t\t\t\tlet shadow: f32 = getShadowSpotClusteredPCSS(shadowAtlasTexture, shadowAtlasTextureSampler, shadowCoord, shadowParams);\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\tfalloffAttenuation = falloffAttenuation * mix(1.0, shadow, light.shadowIntensity);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlet dir: vec3f = normalOffsetPointShadow(shadowParams, light.position, lightDirW, lightDirNormW, geometricNormal);\n\t\t\t\t\t\t#if defined(CLUSTER_SHADOW_TYPE_PCF1)\n\t\t\t\t\t\t\tlet shadow: f32 = getShadowOmniClusteredPCF1(shadowAtlasTexture, shadowAtlasTextureSampler, shadowParams, light.omniAtlasViewport, shadowEdgePixels, dir);\n\t\t\t\t\t\t#elif defined(CLUSTER_SHADOW_TYPE_PCF3)\n\t\t\t\t\t\t\tlet shadow: f32 = getShadowOmniClusteredPCF3(shadowAtlasTexture, shadowAtlasTextureSampler, shadowParams, light.omniAtlasViewport, shadowEdgePixels, dir);\n\t\t\t\t\t\t#elif defined(CLUSTER_SHADOW_TYPE_PCF5)\n\t\t\t\t\t\t\tlet shadow: f32 = getShadowOmniClusteredPCF5(shadowAtlasTexture, shadowAtlasTextureSampler, shadowParams, light.omniAtlasViewport, shadowEdgePixels, dir);\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\tfalloffAttenuation = falloffAttenuation * mix(1.0, shadow, light.shadowIntensity);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t#endif\n\t\t\t}\n\t\t}\n\t\t#endif\n\t\t#ifdef CLUSTER_AREALIGHTS\n\t\tif (light.shape != {LIGHTSHAPE_PUNCTUAL}) {\n\t\t\t{\n\t\t\t\tvar areaDiffuse: vec3f = (diffuseAttenuation * falloffAttenuation) * light.color * cookieAttenuation;\n\t\t\t\t#if defined(LIT_SPECULAR)\n\t\t\t\t\tareaDiffuse = mix(areaDiffuse, vec3f(0.0), dLTCSpecFres);\n\t\t\t\t#endif\n\t\t\t\tdDiffuseLight = dDiffuseLight + areaDiffuse;\n\t\t\t}\n\t\t\t#ifdef LIT_SPECULAR\n\t\t\t\tvar areaLightSpecular: f32;\n\t\t\t\tif (light.shape == {LIGHTSHAPE_RECT}) {\n\t\t\t\t\tareaLightSpecular = getRectLightSpecular(worldNormal, viewDir);\n\t\t\t\t} else if (light.shape == {LIGHTSHAPE_DISK}) {\n\t\t\t\t\tareaLightSpecular = getDiskLightSpecular(worldNormal, viewDir);\n\t\t\t\t} else {\n\t\t\t\t\tareaLightSpecular = getSphereLightSpecular(worldNormal, viewDir);\n\t\t\t\t}\n\t\t\t\tdSpecularLight = dSpecularLight + dLTCSpecFres * areaLightSpecular * falloffAttenuation * light.color * cookieAttenuation;\n\t\t\t\t#ifdef LIT_CLEARCOAT\n\t\t\t\t\tvar areaLightSpecularCC: f32;\n\t\t\t\t\tif (light.shape == {LIGHTSHAPE_RECT}) {\n\t\t\t\t\t\tareaLightSpecularCC = getRectLightSpecular(clearcoat_worldNormal, viewDir);\n\t\t\t\t\t} else if (light.shape == {LIGHTSHAPE_DISK}) {\n\t\t\t\t\t\tareaLightSpecularCC = getDiskLightSpecular(clearcoat_worldNormal, viewDir);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tareaLightSpecularCC = getSphereLightSpecular(clearcoat_worldNormal, viewDir);\n\t\t\t\t\t}\n\t\t\t\t\tccSpecularLight = ccSpecularLight + ccLTCSpecFres * areaLightSpecularCC * falloffAttenuation * light.color  * cookieAttenuation;\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t} else\n\t\t#endif\n\t\t{\n\t\t\t{\n\t\t\t\tvar punctualDiffuse: vec3f = falloffAttenuation * light.color * cookieAttenuation;\n\t\t\t\t#if defined(CLUSTER_AREALIGHTS)\n\t\t\t\t#if defined(LIT_SPECULAR)\n\t\t\t\t\tpunctualDiffuse = mix(punctualDiffuse, vec3f(0.0), specularity);\n\t\t\t\t#endif\n\t\t\t\t#endif\n\t\t\t\tdDiffuseLight = dDiffuseLight + punctualDiffuse;\n\t\t\t}\n\t\t\t#ifdef LIT_SPECULAR\n\t\t\t\tlet halfDir: vec3f = normalize(-lightDirNormW + viewDir);\n\t\t\t\t#ifdef LIT_SPECULAR_FRESNEL\n\t\t\t\t\tdSpecularLight = dSpecularLight +\n\t\t\t\t\t\tgetLightSpecular(halfDir, reflectionDir, worldNormal, viewDir, lightDirNormW, gloss, tbn) * falloffAttenuation * light.color * cookieAttenuation *\n\t\t\t\t\t\tgetFresnel(\n\t\t\t\t\t\t\tdot(viewDir, halfDir),\n\t\t\t\t\t\t\tgloss,\n\t\t\t\t\t\t\tspecularity\n\t\t\t\t\t\t#if defined(LIT_IRIDESCENCE)\n\t\t\t\t\t\t\t, iridescenceFresnel,\n\t\t\t\t\t\t\tiridescence_intensity\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t);\n\t\t\t\t#else\n\t\t\t\t\tdSpecularLight = dSpecularLight + getLightSpecular(halfDir, reflectionDir, worldNormal, viewDir, lightDirNormW, gloss, tbn) * falloffAttenuation * light.color * cookieAttenuation * specularity;\n\t\t\t\t#endif\n\t\t\t\t#ifdef LIT_CLEARCOAT\n\t\t\t\t\t#ifdef LIT_SPECULAR_FRESNEL\n\t\t\t\t\t\tccSpecularLight = ccSpecularLight + getLightSpecular(halfDir, clearcoatReflectionDir, clearcoat_worldNormal, viewDir, lightDirNormW, clearcoat_gloss, tbn) * falloffAttenuation * light.color * cookieAttenuation * getFresnelCC(dot(viewDir, halfDir));\n\t\t\t\t\t#else\n\t\t\t\t\t\tccSpecularLight = ccSpecularLight + getLightSpecular(halfDir, clearcoatReflectionDir, clearcoat_worldNormal, viewDir, lightDirNormW, clearcoat_gloss, tbn) * falloffAttenuation * light.color * cookieAttenuation;\n\t\t\t\t\t#endif\n\t\t\t\t#endif\n\t\t\t\t#ifdef LIT_SHEEN\n\t\t\t\t\tsSpecularLight = sSpecularLight + getLightSpecularSheen(halfDir, worldNormal, viewDir, lightDirNormW, sheen_gloss) * falloffAttenuation * light.color * cookieAttenuation;\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t}\n\t}\n\tdAtten = falloffAttenuation;\n\tdLightDirNormW = lightDirNormW;\n}\nfn evaluateClusterLight(\n\tlightIndex: f32,\n\tworldNormal: vec3f,\n\tviewDir: vec3f,\n\treflectionDir: vec3f,\n#if defined(LIT_CLEARCOAT)\n\tclearcoatReflectionDir: vec3f,\n#endif\n\tgloss: f32,\n\tspecularity: vec3f,\n\tgeometricNormal: vec3f,\n\ttbn: mat3x3f,\n#if defined(LIT_IRIDESCENCE)\n\tiridescenceFresnel: vec3f,\n#endif\n\tclearcoat_worldNormal: vec3f,\n\tclearcoat_gloss: f32,\n\tsheen_gloss: f32,\n\tiridescence_intensity: f32\n) {\n\tvar clusterLightData: ClusterLightData;\n\tdecodeClusterLightCore(&clusterLightData, lightIndex);\n\t#ifdef CLUSTER_MESH_DYNAMIC_LIGHTS\n\t\tlet acceptLightMask: bool = clusterLightData.isDynamic;\n\t#else\n\t\tlet acceptLightMask: bool = clusterLightData.isLightmapped;\n\t#endif\n\tif (acceptLightMask) {\n\t\tevaluateLight(\n\t\t\t&clusterLightData,\n\t\t\tworldNormal,\n\t\t\tviewDir,\n\t\t\treflectionDir,\n#if defined(LIT_CLEARCOAT)\n\t\t\tclearcoatReflectionDir,\n#endif\n\t\t\tgloss,\n\t\t\tspecularity,\n\t\t\tgeometricNormal,\n\t\t\ttbn,\n#if defined(LIT_IRIDESCENCE)\n\t\t\tiridescenceFresnel,\n#endif\n\t\t\tclearcoat_worldNormal,\n\t\t\tclearcoat_gloss,\n\t\t\tsheen_gloss,\n\t\t\tiridescence_intensity\n\t\t);\n\t}\n}\nfn addClusteredLights(\n\tworldNormal: vec3f,\n\tviewDir: vec3f,\n\treflectionDir: vec3f,\n#if defined(LIT_CLEARCOAT)\n\tclearcoatReflectionDir: vec3f,\n#endif\n\tgloss: f32,\n\tspecularity: vec3f,\n\tgeometricNormal: vec3f,\n\ttbn: mat3x3f,\n#if defined(LIT_IRIDESCENCE)\n\tiridescenceFresnel: vec3f,\n#endif\n\tclearcoat_worldNormal: vec3f,\n\tclearcoat_gloss: f32,\n\tsheen_gloss: f32,\n\tiridescence_intensity: f32\n) {\n\tif (uniform.clusterSkip > 0.5) {\n\t\treturn;\n\t}\n\tlet cellCoords: vec3f = floor((vPositionW - uniform.clusterBoundsMin) * uniform.clusterCellsCountByBoundsSize);\n\tif (!(any(cellCoords < vec3f(0.0)) || any(cellCoords >= uniform.clusterCellsMax))) {\n\t\tlet cellIndex: f32 = dot(uniform.clusterCellsDot, cellCoords);\n\t\tlet clusterV: f32 = floor(cellIndex * uniform.clusterTextureSize.y);\n\t\tlet clusterU: f32 = cellIndex - (clusterV * uniform.clusterTextureSize.x);\n\t\tfor (var lightCellIndex: i32 = 0; lightCellIndex < uniform.clusterMaxCells; lightCellIndex = lightCellIndex + 1) {\n\t\t\tlet lightIndexPacked: f32 = textureLoad(clusterWorldTexture, vec2<i32>(i32(clusterU) + lightCellIndex, i32(clusterV)), 0).r;\n\t\t\tif (lightIndexPacked <= 0.0) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tevaluateClusterLight(\n\t\t\t\tlightIndexPacked * 255.0,\n\t\t\t\tworldNormal,\n\t\t\t\tviewDir,\n\t\t\t\treflectionDir,\n#if defined(LIT_CLEARCOAT)\n\t\t\t\tclearcoatReflectionDir,\n#endif\n\t\t\t\tgloss,\n\t\t\t\tspecularity,\n\t\t\t\tgeometricNormal,\n\t\t\t\ttbn,\n#if defined(LIT_IRIDESCENCE)\n\t\t\t\tiridescenceFresnel,\n#endif\n\t\t\t\tclearcoat_worldNormal,\n\t\t\t\tclearcoat_gloss,\n\t\t\t\tsheen_gloss,\n\t\t\t\tiridescence_intensity\n\t\t\t);\n\t\t}\n\t}\n}`;\n\nvar combinePS = `\nfn combineColor(albedo: vec3f, sheenSpecularity: vec3f, clearcoatSpecularity: f32) -> vec3f {\n\tvar ret: vec3f = vec3f(0.0);\n\t#ifdef LIT_OLD_AMBIENT\n\t\tret = ret + ((dDiffuseLight - uniform.light_globalAmbient) * albedo + uniform.material_ambient * uniform.light_globalAmbient);\n\t#else\n\t\tret = ret + (albedo * dDiffuseLight);\n\t#endif\n\t#ifdef LIT_SPECULAR\n\t\tret = ret + dSpecularLight;\n\t#endif\n\t#ifdef LIT_REFLECTIONS\n\t\tret = ret + (dReflection.rgb * dReflection.a);\n\t#endif\n\t#ifdef LIT_SHEEN\n\t\tlet sheenScaling: f32 = 1.0 - max(max(sheenSpecularity.r, sheenSpecularity.g), sheenSpecularity.b) * 0.157;\n\t\tret = ret * sheenScaling + (sSpecularLight + sReflection.rgb) * sheenSpecularity;\n\t#endif\n\t#ifdef LIT_CLEARCOAT\n\t\tlet clearCoatScaling: f32 = 1.0 - ccFresnel * clearcoatSpecularity;\n\t\tret = ret * clearCoatScaling + (ccSpecularLight + ccReflection) * clearcoatSpecularity;\n\t#endif\n\treturn ret;\n}\n`;\n\nvar cookieBlit2DPS = `\n\tvarying uv0: vec2f;\n\tvar blitTexture: texture_2d<f32>;\n\tvar blitTextureSampler : sampler;\n\t@fragment\n\tfn fragmentMain(input : FragmentInput) -> FragmentOutput {\n\t\tvar output: FragmentOutput;\n\t\toutput.color = textureSample(blitTexture, blitTextureSampler, input.uv0);\n\t\treturn output;\n\t}\n`;\n\nvar cookieBlitCubePS = `\n\tvarying uv0: vec2f;\n\tuniform invViewProj: mat4x4<f32>;\n\tvar blitTexture: texture_cube<f32>;\n\tvar blitTextureSampler : sampler;\n\t@fragment\n\tfn fragmentMain(input : FragmentInput) -> FragmentOutput {\n\t\tvar output: FragmentOutput;\n\t\tvar projPos = vec4f(input.uv0 * 2.0 - 1.0, 0.5, 1.0);\n\t\tvar worldPos = uniform.invViewProj * projPos;\n\t\toutput.color = textureSample(blitTexture, blitTextureSampler, worldPos.xyz);\n\t\treturn output;\n\t}\n`;\n\nvar cookieBlitVS = `\n\tattribute vertex_position: vec2f;\n\tvarying uv0: vec2f;\n\t@vertex\n\tfn vertexMain(input: VertexInput) -> VertexOutput {\n\t\tvar output: VertexOutput;\n\t\toutput.position = vec4f(input.vertex_position, 0.5, 1.0);\n\t\toutput.uv0 = input.vertex_position * 0.5 + vec2f(0.5, 0.5);\n\t\toutput.uv0.y = 1.0 - output.uv0.y;\n\t\treturn output;\n\t}\n`;\n\nvar cubeMapProjectPS = `\n#if LIT_CUBEMAP_PROJECTION == BOX\n\tuniform envBoxMin: vec3f;\n\tuniform envBoxMax: vec3f;\n#endif\nfn cubeMapProject(nrdir: vec3f) -> vec3f {\n\t#if LIT_CUBEMAP_PROJECTION == NONE\n\t\treturn cubeMapRotate(nrdir);\n\t#endif\n\t#if LIT_CUBEMAP_PROJECTION == BOX\n\t\tlet nrdir_rotated: vec3f = cubeMapRotate(nrdir);\n\t\tlet rbmax: vec3f = (uniform.envBoxMax - vPositionW) / nrdir_rotated;\n\t\tlet rbmin: vec3f = (uniform.envBoxMin - vPositionW) / nrdir_rotated;\n\t\tlet rbminmax: vec3f = select(rbmin, rbmax, nrdir_rotated > vec3f(0.0));\n\t\tlet fa: f32 = min(min(rbminmax.x, rbminmax.y), rbminmax.z);\n\t\tlet posonbox: vec3f = vPositionW + nrdir_rotated * fa;\n\t\tlet envBoxPos: vec3f = (uniform.envBoxMin + uniform.envBoxMax) * 0.5;\n\t\treturn normalize(posonbox - envBoxPos);\n\t#endif\n}\n`;\n\nvar cubeMapRotatePS = `\n#ifdef CUBEMAP_ROTATION\nuniform cubeMapRotationMatrix: mat3x3f;\n#endif\nfn cubeMapRotate(refDir: vec3f) -> vec3f {\n#ifdef CUBEMAP_ROTATION\n\treturn refDir * uniform.cubeMapRotationMatrix;\n#else\n\treturn refDir;\n#endif\n}\n`;\n\nvar debugOutputPS = `\n#ifdef DEBUG_ALBEDO_PASS\noutput.color = vec4(gammaCorrectOutput(dAlbedo), 1.0);\n#endif\n#ifdef DEBUG_UV0_PASS\noutput.color = vec4f(litArgs_albedo , 1.0);\n#endif\n#ifdef DEBUG_WORLD_NORMAL_PASS\noutput.color = vec4f(litArgs_worldNormal * 0.5 + 0.5, 1.0);\n#endif\n#ifdef DEBUG_OPACITY_PASS\noutput.color = vec4f(vec3f(litArgs_opacity) , 1.0);\n#endif\n#ifdef DEBUG_SPECULARITY_PASS\noutput.color = vec4f(litArgs_specularity, 1.0);\n#endif\n#ifdef DEBUG_GLOSS_PASS\noutput.color = vec4f(vec3f(litArgs_gloss) , 1.0);\n#endif\n#ifdef DEBUG_METALNESS_PASS\noutput.color = vec4f(vec3f(litArgs_metalness) , 1.0);\n#endif\n#ifdef DEBUG_AO_PASS\noutput.color = vec4f(vec3f(litArgs_ao) , 1.0);\n#endif\n#ifdef DEBUG_EMISSION_PASS\noutput.color = vec4f(gammaCorrectOutput(litArgs_emission), 1.0);\n#endif\n`;\n\nvar debugProcessFrontendPS = `\n#ifdef DEBUG_LIGHTING_PASS\n\tlitArgs_albedo = vec3f(0.5);\n#endif\n#ifdef DEBUG_UV0_PASS\n#ifdef VARYING_VUV0\n\tlitArgs_albedo = vec3f(vUv0, 0.0);\n#else\n\tlitArgs_albedo = vec3f(0.0);\n#endif\n#endif\n`;\n\nvar decodePS = `\n#ifndef _DECODE_INCLUDED_\n#define _DECODE_INCLUDED_\nfn decodeLinear(raw: vec4f) -> vec3f {\n\treturn raw.rgb;\n}\nfn decodeGammaFloat(raw: f32) -> f32 {\n\treturn pow(raw, 2.2);\n}\nfn decodeGamma3(raw: vec3f) -> vec3f {\n\treturn pow(raw, vec3f(2.2));\n}\nfn decodeGamma(raw: vec4f) -> vec3f {\n\treturn pow(raw.xyz, vec3f(2.2));\n}\nfn decodeRGBM(raw: vec4f) -> vec3f {\n\tlet color = (8.0 * raw.a) * raw.rgb;\n\treturn color * color;\n}\nfn decodeRGBP(raw: vec4f) -> vec3f {\n\tlet color = raw.rgb * (-raw.a * 7.0 + 8.0);\n\treturn color * color;\n}\nfn decodeRGBE(raw: vec4f) -> vec3f {\n\treturn select(vec3f(0.0), raw.xyz * pow(2.0, raw.w * 255.0 - 128.0), raw.a != 0.0);\n}\nfn passThrough(raw: vec4f) -> vec4f {\n\treturn raw;\n}\nfn unpackNormalXYZ(nmap: vec4f) -> vec3f {\n\treturn nmap.xyz * 2.0 - 1.0;\n}\nfn unpackNormalXY(nmap: vec4f) -> vec3f {\n\tvar xy = nmap.wy * 2.0 - 1.0;\n\treturn vec3f(xy, sqrt(1.0 - clamp(dot(xy, xy), 0.0, 1.0)));\n}\n#endif\n`;\n\nvar detailModesPS = `\n#ifndef _DETAILMODES_INCLUDED_\n#define _DETAILMODES_INCLUDED_\nfn detailMode_mul(c1: vec3f, c2: vec3f) -> vec3f {\n\treturn c1 * c2;\n}\nfn detailMode_add(c1: vec3f, c2: vec3f) -> vec3f {\n\treturn c1 + c2;\n}\nfn detailMode_screen(c1: vec3f, c2: vec3f) -> vec3f {\n\treturn 1.0 - (1.0 - c1)*(1.0 - c2);\n}\nfn detailMode_overlay(c1: vec3f, c2: vec3f) -> vec3f {\n\treturn mix(1.0 - 2.0 * (1.0 - c1)*(1.0 - c2), 2.0 * c1 * c2, step(c1, vec3f(0.5)));\n}\nfn detailMode_min(c1: vec3f, c2: vec3f) -> vec3f {\n\treturn min(c1, c2);\n}\nfn detailMode_max(c1: vec3f, c2: vec3f) -> vec3f {\n\treturn max(c1, c2);\n}\n#endif\n`;\n\nvar diffusePS = `\nuniform material_diffuse: vec3f;\n#ifdef STD_DIFFUSEDETAIL_TEXTURE\n\t#include \"detailModesPS\"\n#endif\nfn getAlbedo() {\n\tdAlbedo = uniform.material_diffuse.rgb;\n\t#ifdef STD_DIFFUSE_TEXTURE\n\t\tvar albedoTexture: vec3f = {STD_DIFFUSE_TEXTURE_DECODE}(textureSampleBias({STD_DIFFUSE_TEXTURE_NAME}, {STD_DIFFUSE_TEXTURE_NAME}Sampler, {STD_DIFFUSE_TEXTURE_UV}, uniform.textureBias)).{STD_DIFFUSE_TEXTURE_CHANNEL};\n\t\t#ifdef STD_DIFFUSEDETAIL_TEXTURE\n\t\t\tvar albedoDetail: vec3f = {STD_DIFFUSEDETAIL_TEXTURE_DECODE}(textureSampleBias({STD_DIFFUSEDETAIL_TEXTURE_NAME}, {STD_DIFFUSEDETAIL_TEXTURE_NAME}Sampler, {STD_DIFFUSEDETAIL_TEXTURE_UV}, uniform.textureBias)).{STD_DIFFUSEDETAIL_TEXTURE_CHANNEL};\n\t\t\talbedoTexture = detailMode_{STD_DIFFUSEDETAIL_DETAILMODE}(albedoTexture, albedoDetail);\n\t\t#endif\n\t\tdAlbedo = dAlbedo * albedoTexture;\n\t#endif\n\t#ifdef STD_DIFFUSE_VERTEX\n\t\tdAlbedo = dAlbedo * gammaCorrectInputVec3(saturate3(vVertexColor.{STD_DIFFUSE_VERTEX_CHANNEL}));\n\t#endif\n}\n`;\n\nvar emissivePS = `\nuniform material_emissive: vec3f;\nuniform material_emissiveIntensity: f32;\nfn getEmission() {\n\tdEmission = uniform.material_emissive * uniform.material_emissiveIntensity;\n\t#ifdef STD_EMISSIVE_TEXTURE\n\tdEmission *= {STD_EMISSIVE_TEXTURE_DECODE}(textureSampleBias({STD_EMISSIVE_TEXTURE_NAME}, {STD_EMISSIVE_TEXTURE_NAME}Sampler, {STD_EMISSIVE_TEXTURE_UV}, uniform.textureBias)).{STD_EMISSIVE_TEXTURE_CHANNEL};\n\t#endif\n\t#ifdef STD_EMISSIVE_VERTEX\n\tdEmission = dEmission * gammaCorrectInputVec3(saturate3(vVertexColor.{STD_EMISSIVE_VERTEX_CHANNEL}));\n\t#endif\n}\n`;\n\nvar encodePS = `\nfn encodeLinear(source: vec3f) -> vec4f {\n\treturn vec4f(source, 1.0);\n}\nfn encodeGamma(source: vec3f) -> vec4f {\n\treturn vec4f(pow(source + vec3f(0.0000001), vec3f(1.0 / 2.2)), 1.0);\n}\nfn encodeRGBM(source: vec3f) -> vec4f {\n\tvar color: vec3f = pow(source, vec3f(0.5));\n\tcolor *= 1.0 / 8.0;\n\tvar a: f32 = saturate(max(max(color.r, color.g), max(color.b, 1.0 / 255.0)));\n\ta = ceil(a * 255.0) / 255.0;\n\tcolor /= a;\n\treturn vec4f(color, a);\n}\nfn encodeRGBP(source: vec3f) -> vec4f {\n\tvar gamma: vec3f = pow(source, vec3f(0.5));\n\tvar maxVal: f32 = min(8.0, max(1.0, max(gamma.x, max(gamma.y, gamma.z))));\n\tvar v: f32 = 1.0 - ((maxVal - 1.0) / 7.0);\n\tv = ceil(v * 255.0) / 255.0;\n\treturn vec4f(gamma / (-v * 7.0 + 8.0), v);\n}\nfn encodeRGBE(source: vec3f) -> vec4f {\n\tvar maxVal: f32 = max(source.x, max(source.y, source.z));\n\tif (maxVal < 1e-32) {\n\t\treturn vec4f(0.0, 0.0, 0.0, 0.0);\n\t} else {\n\t\tvar e: f32 = ceil(log2(maxVal));\n\t\treturn vec4f(source / pow(2.0, e), (e + 128.0) / 255.0);\n\t}\n}\n`;\n\nvar endPS = `\n\tvar finalRgb: vec3f = combineColor(litArgs_albedo, litArgs_sheen_specularity, litArgs_clearcoat_specularity);\n\tfinalRgb = finalRgb + litArgs_emission;\n\tfinalRgb = addFog(finalRgb);\n\tfinalRgb = toneMap(finalRgb);\n\tfinalRgb = gammaCorrectOutput(finalRgb);\n\toutput.color = vec4f(finalRgb, output.color.a);\n`;\n\nvar envAtlasPS = `\n#ifndef _ENVATLAS_INCLUDED_\n#define _ENVATLAS_INCLUDED_\nconst atlasSize : f32 = 512.0;\nconst seamSize : f32 = 1.0 / atlasSize;\nfn mapUv(uv : vec2f, rect : vec4f) -> vec2f {\n\treturn vec2f(mix(rect.x + seamSize, rect.x + rect.z - seamSize, uv.x),\n\t\t\t\t mix(rect.y + seamSize, rect.y + rect.w - seamSize, uv.y));\n}\nfn mapRoughnessUv(uv : vec2f, level : f32) -> vec2f {\n\tlet t : f32 = 1.0 / exp2(level);\n\treturn mapUv(uv, vec4f(0.0, 1.0 - t, t, t * 0.5));\n}\nfn mapShinyUv(uv : vec2f, level : f32) -> vec2f {\n\tlet t : f32 = 1.0 / exp2(level);\n\treturn mapUv(uv, vec4f(1.0 - t, 1.0 - t, t, t * 0.5));\n}\n#endif\n`;\n\nvar envProcPS = `\n#ifdef LIT_SKYBOX_INTENSITY\n\tuniform skyboxIntensity : f32;\n#endif\nfn processEnvironment(color : vec3f) -> vec3f {\n\t#ifdef LIT_SKYBOX_INTENSITY\n\t\treturn color * uniform.skyboxIntensity;\n\t#else\n\t\treturn color;\n\t#endif\n}\n`;\n\nvar falloffInvSquaredPS = `\nfn getFalloffWindow(lightRadius: f32, lightDir: vec3f) -> f32 {\n\tlet sqrDist: f32 = dot(lightDir, lightDir);\n\tlet invRadius: f32 = 1.0 / lightRadius;\n\treturn square(saturate(1.0 - square(sqrDist * square(invRadius))));\n}\nfn getFalloffInvSquared(lightRadius: f32, lightDir: vec3f) -> f32 {\n\tlet sqrDist: f32 = dot(lightDir, lightDir);\n\tvar falloff: f32 = 1.0 / (sqrDist + 1.0);\n\tlet invRadius: f32 = 1.0 / lightRadius;\n\tfalloff = falloff * 16.0;\n\tfalloff = falloff * square(saturate(1.0 - square(sqrDist * square(invRadius))));\n\treturn falloff;\n}\n`;\n\nvar falloffLinearPS = `\nfn getFalloffLinear(lightRadius: f32, lightDir: vec3f) -> f32 {\n\tlet d: f32 = length(lightDir);\n\treturn max(((lightRadius - d) / lightRadius), 0.0);\n}\n`;\n\nvar floatAsUintPS = `\n#ifndef FLOAT_AS_UINT\n#define FLOAT_AS_UINT\nfn float2uint(value: f32) -> vec4f {\n\tlet intBits = bitcast<u32>(value);\n\treturn vec4f(\n\t\tf32((intBits >> 24u) & 0xffu),\n\t\tf32((intBits >> 16u) & 0xffu),\n\t\tf32((intBits >> 8u) & 0xffu),\n\t\tf32(intBits & 0xffu)\n\t) / 255.0;\n}\nfn uint2float(value: vec4f) -> f32 {\n\tlet rgba_u32 = vec4<u32>(value * 255.0);\n\tlet intBits: u32 =\n\t\t(rgba_u32.r << 24u) |\n\t\t(rgba_u32.g << 16u) |\n\t\t(rgba_u32.b << 8u)  |\n\t\t rgba_u32.a;\n\treturn bitcast<f32>(intBits);\n}\nfn float2vec4(value: f32) -> vec4f {\n\t#if defined(CAPS_TEXTURE_FLOAT_RENDERABLE)\n\t\treturn vec4f(value, 1.0, 1.0, 1.0);\n\t#else\n\t\treturn float2uint(value);\n\t#endif\n}\n#endif\n`;\n\nvar fogPS = `\nvar<private> dBlendModeFogFactor : f32 = 1.0;\n#if (FOG != NONE)\n\tuniform fog_color : vec3f;\n\t\n\t#if (FOG == LINEAR)\n\t\tuniform fog_start : f32;\n\t\tuniform fog_end : f32;\n\t#else\n\t\tuniform fog_density : f32;\n\t#endif\n#endif\nfn getFogFactor() -> f32 {\n\tlet depth = pcPosition.z / pcPosition.w;\n\tvar fogFactor : f32 = 0.0;\n\t#if (FOG == LINEAR)\n\t\tfogFactor = (uniform.fog_end - depth) / (uniform.fog_end - uniform.fog_start);\n\t#elif (FOG == EXP)\n\t\tfogFactor = exp(-depth * uniform.fog_density);\n\t#elif (FOG == EXP2)\n\t\tfogFactor = exp(-depth * depth * uniform.fog_density * uniform.fog_density);\n\t#endif\n\treturn clamp(fogFactor, 0.0, 1.0);\n}\nfn addFog(color : vec3f) -> vec3f {\n\t#if (FOG != NONE)\n\t\treturn mix(uniform.fog_color * dBlendModeFogFactor, color, getFogFactor());\n\t#else\n\t\treturn color;\n\t#endif\n}\n`;\n\nvar fresnelSchlickPS = `\nfn getFresnel(\n\t\tcosTheta: f32,\n\t\tgloss: f32,\n\t\tspecularity: vec3f\n\t#if defined(LIT_IRIDESCENCE)\n\t\t, iridescenceFresnel: vec3f,\n\t\tiridescenceIntensity: f32\n\t#endif\n) -> vec3f {\n\tlet fresnel: f32 = pow(1.0 - saturate(cosTheta), 5.0);\n\tlet glossSq: f32 = gloss * gloss;\n\tlet ret: vec3f = specularity + (max(vec3f(glossSq), specularity) - specularity) * fresnel;\n\t#if defined(LIT_IRIDESCENCE)\n\t\treturn mix(ret, iridescenceFresnel, iridescenceIntensity);\n\t#else\n\t\treturn ret;\n\t#endif\n}\nfn getFresnelCC(cosTheta: f32) -> f32 {\n\tlet fresnel: f32 = pow(1.0 - saturate(cosTheta), 5.0);\n\treturn 0.04 + (1.0 - 0.04) * fresnel;\n}`;\n\nvar fullscreenQuadVS = `\nattribute vertex_position: vec2f;\nvarying vUv0: vec2f;\n@vertex\nfn vertexMain(input: VertexInput) -> VertexOutput {\n\tvar output: VertexOutput;\n\toutput.position = vec4f(input.vertex_position, 0.5, 1.0);\n\toutput.vUv0 = input.vertex_position.xy * 0.5 + vec2f(0.5);\n\treturn output;\n}\n`;\n\nvar gammaPS = `\n#include \"decodePS\"\n#if (GAMMA == SRGB)\n\tfn gammaCorrectInput(color: f32) -> f32 {\n\t\treturn decodeGammaFloat(color);\n\t}\n\tfn gammaCorrectInputVec3(color: vec3f) -> vec3f {\n\t\treturn decodeGamma3(color);\n\t}\n\tfn gammaCorrectInputVec4(color: vec4f) -> vec4f {\n\t\treturn vec4f(decodeGamma3(color.xyz), color.w);\n\t}\n\tfn gammaCorrectOutput(color: vec3f) -> vec3f {\n\t\treturn pow(color + 0.0000001, vec3f(1.0 / 2.2));\n\t}\n#else\n\tfn gammaCorrectInput(color: f32) -> f32 {\n\t\treturn color;\n\t}\n\tfn gammaCorrectInputVec3(color: vec3f) -> vec3f {\n\t\treturn color;\n\t}\n\tfn gammaCorrectInputVec4(color: vec4f) -> vec4f {\n\t\treturn color;\n\t}\n\tfn gammaCorrectOutput(color: vec3f) -> vec3f {\n\t\treturn color;\n\t}\n#endif\n`;\n\nvar glossPS = `\n#ifdef STD_GLOSS_CONSTANT\n\tuniform material_gloss: f32;\n#endif\nfn getGlossiness() {\n\tdGlossiness = 1.0;\n\t#ifdef STD_GLOSS_CONSTANT\n\tdGlossiness = dGlossiness * uniform.material_gloss;\n\t#endif\n\t#ifdef STD_GLOSS_TEXTURE\n\tdGlossiness = dGlossiness * textureSampleBias({STD_GLOSS_TEXTURE_NAME}, {STD_GLOSS_TEXTURE_NAME}Sampler, {STD_GLOSS_TEXTURE_UV}, uniform.textureBias).{STD_GLOSS_TEXTURE_CHANNEL};\n\t#endif\n\t#ifdef STD_GLOSS_VERTEX\n\tdGlossiness = dGlossiness * saturate(vVertexColor.{STD_GLOSS_VERTEX_CHANNEL});\n\t#endif\n\t#ifdef STD_GLOSS_INVERT\n\tdGlossiness = 1.0 - dGlossiness;\n\t#endif\n\tdGlossiness = dGlossiness + 0.0000001;\n}\n`;\n\nvar quadVS = `\n\tattribute aPosition: vec2f;\n\tvarying uv0: vec2f;\n\t@vertex fn vertexMain(input: VertexInput) -> VertexOutput {\n\t\tvar output: VertexOutput;\n\t\toutput.position = vec4f(input.aPosition, 0.0, 1.0);\n\t\toutput.uv0 = getImageEffectUV((input.aPosition + 1.0) * 0.5);\n\t\treturn output;\n\t}\n`;\n\nvar indirectCoreCS = `\nstruct DrawIndexedIndirectArgs {\n\tindexCount: u32,\n\tinstanceCount: u32,\n\tfirstIndex: u32,\n\tbaseVertex: i32,\n\tfirstInstance: u32\n};\nstruct DrawIndirectArgs {\n\tvertexCount: u32,\n\tinstanceCount: u32,\n\tfirstVertex: u32,\n\tfirstInstance: u32,\n\t_pad: u32\n};\n`;\n\nvar immediateLinePS = `\n\t#include \"gammaPS\"\n\tvarying color: vec4f;\n\t@fragment\n\tfn fragmentMain(input : FragmentInput) -> FragmentOutput {\n\t\tvar output: FragmentOutput;\n\t\toutput.color = vec4f(gammaCorrectOutput(decodeGamma3(input.color.rgb)), input.color.a);\n\t\treturn output;\n\t}\n`;\n\nvar immediateLineVS = `\n\tattribute vertex_position: vec4f;\n\tattribute vertex_color: vec4f;\n\tuniform matrix_model: mat4x4f;\n\tuniform matrix_viewProjection: mat4x4f;\n\tvarying color: vec4f;\n\t@vertex\n\tfn vertexMain(input : VertexInput) -> VertexOutput {\n\t\tvar output : VertexOutput;\n\t\toutput.color = input.vertex_color;\n\t\toutput.position = uniform.matrix_viewProjection * uniform.matrix_model * input.vertex_position;\n\t\treturn output;\n\t}\n`;\n\nvar iridescenceDiffractionPS = `\nuniform material_iridescenceRefractionIndex: f32;\nfn iridescence_iorToFresnelScalar(transmittedIor: f32, incidentIor: f32) -> f32 {\n\treturn pow((transmittedIor - incidentIor) / (transmittedIor + incidentIor), 2.0);\n}\nfn iridescence_iorToFresnelVec3(transmittedIor: vec3f, incidentIor: f32) -> vec3f {\n\treturn pow((transmittedIor - vec3f(incidentIor)) / (transmittedIor + vec3f(incidentIor)), vec3f(2.0));\n}\nfn iridescence_fresnelToIor(f0: vec3f) -> vec3f {\n\tlet sqrtF0: vec3f = sqrt(f0);\n\treturn (vec3f(1.0) + sqrtF0) / (vec3f(1.0) - sqrtF0);\n}\nconst XYZ_TO_REC709: mat3x3f = mat3x3f(\n\tvec3f(3.2404542, -1.5371385, -0.4985314),\n\tvec3f(-0.9692660,  1.8760108,  0.0415560),\n\tvec3f(0.0556434, -0.2040259,  1.0572252)\n);\nfn iridescence_sensitivity(opd: f32, shift: vec3f) -> vec3f {\n\tlet PI: f32 = 3.141592653589793;\n\tlet phase: f32 = 2.0 * PI * opd * 1.0e-9;\n\tconst val: vec3f = vec3f(5.4856e-13, 4.4201e-13, 5.2481e-13);\n\tconst pos: vec3f = vec3f(1.6810e+06, 1.7953e+06, 2.2084e+06);\n\tconst var_: vec3f = vec3f(4.3278e+09, 9.3046e+09, 6.6121e+09);\n\tvar xyz: vec3f = val * sqrt(2.0 * PI * var_) * cos(pos * phase + shift) * exp(-pow(phase, 2.0) * var_);\n\txyz.x = xyz.x + 9.7470e-14 * sqrt(2.0 * PI * 4.5282e+09) * cos(2.2399e+06 * phase + shift[0]) * exp(-4.5282e+09 * pow(phase, 2.0));\n\txyz = xyz / vec3f(1.0685e-07);\n\treturn XYZ_TO_REC709 * xyz;\n}\nfn iridescence_fresnelScalar(cosTheta: f32, f0: f32) -> f32 {\n\tlet x: f32 = clamp(1.0 - cosTheta, 0.0, 1.0);\n\tlet x2: f32 = x * x;\n\tlet x5: f32 = x * x2 * x2;\n\treturn f0 + (1.0 - f0) * x5;\n}\nfn iridescence_fresnelVec3(cosTheta: f32, f0: vec3f) -> vec3f {\n\tlet x: f32 = clamp(1.0 - cosTheta, 0.0, 1.0);\n\tlet x2: f32 = x * x;\n\tlet x5: f32 = x * x2 * x2;\n\treturn f0 + (vec3f(1.0) - f0) * x5;\n}\nfn calcIridescence(outsideIor: f32, cosTheta: f32, base_f0: vec3f, iridescenceThickness: f32) -> vec3f {\n\tlet PI: f32 = 3.141592653589793;\n\tlet iridescenceIor: f32 = mix(outsideIor, uniform.material_iridescenceRefractionIndex, smoothstep(0.0, 0.03, iridescenceThickness));\n\tlet sinTheta2Sq: f32 = pow(outsideIor / iridescenceIor, 2.0) * (1.0 - pow(cosTheta, 2.0));\n\tlet cosTheta2Sq: f32 = 1.0 - sinTheta2Sq;\n\tif (cosTheta2Sq < 0.0) {\n\t\treturn vec3f(1.0);\n\t}\n\tlet cosTheta2: f32 = sqrt(cosTheta2Sq);\n\tlet r0: f32 = iridescence_iorToFresnelScalar(iridescenceIor, outsideIor);\n\tlet r12: f32 = iridescence_fresnelScalar(cosTheta, r0);\n\tlet r21: f32 = r12;\n\tlet t121: f32 = 1.0 - r12;\n\tlet phi12: f32 = select(0.0, PI, iridescenceIor < outsideIor);\n\tlet phi21: f32 = PI - phi12;\n\tlet baseIor: vec3f = iridescence_fresnelToIor(base_f0 + vec3f(0.0001));\n\tlet r1: vec3f = iridescence_iorToFresnelVec3(baseIor, iridescenceIor);\n\tlet r23: vec3f = iridescence_fresnelVec3(cosTheta2, r1);\n\tlet phi23: vec3f = select(vec3f(0.0), vec3f(PI), baseIor < vec3f(iridescenceIor));\n\tlet opd: f32 = 2.0 * iridescenceIor * iridescenceThickness * cosTheta2;\n\tlet phi: vec3f = vec3f(phi21) + phi23;\n\tlet r123Sq: vec3f = clamp(vec3f(r12) * r23, vec3f(1e-5), vec3f(0.9999));\n\tlet r123: vec3f = sqrt(r123Sq);\n\tlet rs: vec3f = pow(vec3f(t121), vec3f(2.0)) * r23 / (vec3f(1.0) - r123Sq);\n\tlet c0: vec3f = vec3f(r12) + rs;\n\tvar i_irid: vec3f = c0;\n\tvar cm: vec3f = rs - vec3f(t121);\n\tcm = cm * r123;\n\tlet sm1: vec3f = 2.0 * iridescence_sensitivity(1.0 * opd, 1.0 * phi);\n\ti_irid = i_irid + cm * sm1;\n\tcm = cm * r123;\n\tlet sm2: vec3f = 2.0 * iridescence_sensitivity(2.0 * opd, 2.0 * phi);\n\ti_irid = i_irid + cm * sm2;\n\treturn max(i_irid, vec3f(0.0));\n}\nfn getIridescenceDiffraction(cosTheta: f32, specularity: vec3f, iridescenceThickness: f32) -> vec3f {\n\treturn calcIridescence(1.0, cosTheta, specularity, iridescenceThickness);\n}\n`;\n\nvar iridescencePS = `\n#ifdef STD_IRIDESCENCE_CONSTANT\n\tuniform material_iridescence: f32;\n#endif\nfn getIridescence() {\n\tvar iridescence = 1.0;\n\t#ifdef STD_IRIDESCENCE_CONSTANT\n\tiridescence = iridescence * uniform.material_iridescence;\n\t#endif\n\t#ifdef STD_IRIDESCENCE_TEXTURE\n\tiridescence = iridescence * textureSampleBias({STD_IRIDESCENCE_TEXTURE_NAME}, {STD_IRIDESCENCE_TEXTURE_NAME}Sampler, {STD_IRIDESCENCE_TEXTURE_UV}, uniform.textureBias).{STD_IRIDESCENCE_TEXTURE_CHANNEL};\n\t#endif\n\tdIridescence = iridescence; \n}\n`;\n\nvar iridescenceThicknessPS = `\nuniform material_iridescenceThicknessMax: f32;\n#ifdef STD_IRIDESCENCETHICKNESS_TEXTURE\n\tuniform material_iridescenceThicknessMin: f32;\n#endif\nfn getIridescenceThickness() {\n\t#ifdef STD_IRIDESCENCETHICKNESS_TEXTURE\n\t\tvar blend: f32 = textureSampleBias({STD_IRIDESCENCETHICKNESS_TEXTURE_NAME}, {STD_IRIDESCENCETHICKNESS_TEXTURE_NAME}Sampler, {STD_IRIDESCENCETHICKNESS_TEXTURE_UV}, uniform.textureBias).{STD_IRIDESCENCETHICKNESS_TEXTURE_CHANNEL};\n\t\tvar iridescenceThickness: f32 = mix(uniform.material_iridescenceThicknessMin, uniform.material_iridescenceThicknessMax, blend);\n\t#else\n\t\tvar iridescenceThickness: f32 = uniform.material_iridescenceThicknessMax;\n\t#endif\n\tdIridescenceThickness = iridescenceThickness; \n}\n`;\n\nvar iorPS = `\n#ifdef STD_IOR_CONSTANT\n\tuniform material_refractionIndex: f32;\n#endif\nfn getIor() {\n#ifdef STD_IOR_CONSTANT\n\tdIor = uniform.material_refractionIndex;\n#else\n\tdIor = 1.0 / 1.5;\n#endif\n}\n`;\n\nvar lightDeclarationPS = `\n#if defined(LIGHT{i})\n\tuniform light{i}_color: vec3f;\n\t#if LIGHT{i}TYPE == DIRECTIONAL\n\t\tuniform light{i}_direction: vec3f;\n\t#else\n\t\t#define LIT_CODE_LIGHTS_POINT\n\t\tuniform light{i}_position: vec3f;\n\t\tuniform light{i}_radius: f32;\n\t\t#if LIGHT{i}TYPE == SPOT\n\t\t\t#define LIT_CODE_LIGHTS_SPOT\n\t\t\tuniform light{i}_direction: vec3f;\n\t\t\tuniform light{i}_innerConeAngle: f32;\n\t\t\tuniform light{i}_outerConeAngle: f32;\n\t\t#endif\n\t#endif\n\t#if LIGHT{i}SHAPE != PUNCTUAL\n\t\t#define LIT_CODE_FALLOFF_SQUARED\n\t\t#if LIGHT{i}TYPE == DIRECTIONAL\n\t\t\tuniform light{i}_position: vec3f;\n\t\t#endif\n\t\tuniform light{i}_halfWidth: vec3f;\n\t\tuniform light{i}_halfHeight: vec3f;\n\t#else\n\t\t#if LIGHT{i}FALLOFF == LINEAR\n\t\t\t#define LIT_CODE_FALLOFF_LINEAR\n\t\t#endif\n\t\t#if LIGHT{i}FALLOFF == INVERSESQUARED\n\t\t\t#define LIT_CODE_FALLOFF_SQUARED\n\t\t#endif\n\t#endif\n\t#if defined(LIGHT{i}CASTSHADOW)\n\t\tuniform light{i}_shadowMatrix: mat4x4f;\n\t\tuniform light{i}_shadowIntensity: f32;\n\t\tuniform light{i}_shadowParams: vec4f;\n\t\t#if LIGHT{i}SHADOWTYPE == PCSS_32F\n\t\t\tuniform light{i}_shadowSearchArea: f32;\n\t\t\tuniform light{i}_cameraParams: vec4f;\n\t\t\t#if LIGHT{i}TYPE == DIRECTIONAL\n\t\t\t\tuniform light{i}_softShadowParams: vec4f;\n\t\t\t#endif\n\t\t#endif\n\t\t#if LIGHT{i}TYPE == DIRECTIONAL\n\t\t\tuniform light{i}_shadowMatrixPalette: array<mat4x4f, 4>;\n\t\t\tuniform light{i}_shadowCascadeDistances: vec4f;\n\t\t\tuniform light{i}_shadowCascadeCount: i32;\n\t\t\tuniform light{i}_shadowCascadeBlend: f32;\n\t\t#endif\n\t\t#if LIGHT{i}TYPE == OMNI\n\t\t\tNOT SUPPORTED\n\t\t\t\n\t\t#else\n\t\t\t#if defined(LIGHT{i}SHADOW_PCF)\n\t\t\t\tvar light{i}_shadowMap: texture_depth_2d;\n\t\t\t\tvar light{i}_shadowMapSampler: sampler_comparison;\n\t\t\t#else\n\t\t\t\tvar light{i}_shadowMap: texture_2d<f32>;\n\t\t\t\tvar light{i}_shadowMapSampler: sampler;\n\t\t\t#endif\n\t\t#endif\n\t#endif\n\t#if defined(LIGHT{i}COOKIE)\n\t\t#define LIT_CODE_COOKIE\n\t\t#if LIGHT{i}TYPE == OMNI\n\t\t\tNOT SUPPORTED\n\t\t#endif\n\t\t#if LIGHT{i}TYPE == SPOT\n\t\t\tNOT SUPPORTED\n\t\t#endif\n\t#endif\n#endif\n`;\n\nvar lightDiffuseLambertPS = `\nfn getLightDiffuse(worldNormal: vec3f, viewDir: vec3f, lightDirNorm: vec3f) -> f32 {\n\treturn max(dot(worldNormal, -lightDirNorm), 0.0);\n}\n`;\n\nvar lightDirPointPS = `\nfn evalOmniLight(lightPosW: vec3f) -> vec3f {\n\treturn vPositionW - lightPosW;\n}\n`;\n\nvar lightEvaluationPS = `\n#if defined(LIGHT{i})\n\tevaluateLight{i}(\n\t\t#if defined(LIT_IRIDESCENCE)\n\t\t\tiridescenceFresnel\n\t\t#endif\n\t);\n#endif\n`;\n\nvar lightFunctionLightPS = `\n#if defined(LIGHT{i})\nfn evaluateLight{i}(\n\t#if defined(LIT_IRIDESCENCE)\n\t\tiridescenceFresnel: vec3f\n\t#endif\n) {\n\tvar lightColor: vec3f = uniform.light{i}_color;\n\t#if LIGHT{i}TYPE == DIRECTIONAL && !defined(LIT_SHADOW_CATCHER)\n\t\tif (all(lightColor == vec3f(0.0, 0.0, 0.0))) {\n\t\t\treturn;\n\t\t}\n\t#endif\n\t#if LIGHT{i}TYPE == DIRECTIONAL\n\t\tdLightDirNormW = uniform.light{i}_direction;\n\t\tdAtten = 1.0;\n\t#else\n\t\tvar lightDirW: vec3f = evalOmniLight(uniform.light{i}_position);\n\t\tdLightDirNormW = normalize(lightDirW);\n\t\t#if defined(LIGHT{i}COOKIE)\n\t\t\t#if LIGHT{i}TYPE == SPOT\n\t\t\t\t#ifdef LIGHT{i}COOKIE_FALLOFF\n\t\t\t\t\t#ifdef LIGHT{i}COOKIE_TRANSFORM\n\t\t\t\t\t\tvar cookieAttenuation: vec3f = getCookie2DXform(uniform.light{i}_cookie, uniform.light{i}_shadowMatrix, uniform.light{i}_cookieIntensity, uniform.light{i}_cookieMatrix, uniform.light{i}_cookieOffset).{LIGHT{i}COOKIE_CHANNEL};\n\t\t\t\t\t#else\n\t\t\t\t\t\tvar cookieAttenuation: vec3f = getCookie2D(uniform.light{i}_cookie, uniform.light{i}_shadowMatrix, uniform.light{i}_cookieIntensity).{LIGHT{i}COOKIE_CHANNEL};\n\t\t\t\t\t#endif\n\t\t\t\t#else\n\t\t\t\t\t#ifdef LIGHT{i}COOKIE_TRANSFORM\n\t\t\t\t\t\tvar cookieAttenuation: vec3f = getCookie2DClipXform(uniform.light{i}_cookie, uniform.light{i}_shadowMatrix, uniform.light{i}_cookieIntensity, uniform.light{i}_cookieMatrix, uniform.light{i}_cookieOffset).{LIGHT{i}COOKIE_CHANNEL};\n\t\t\t\t\t#else\n\t\t\t\t\t\tvar cookieAttenuation: vec3f = getCookie2DClip(uniform.light{i}_cookie, uniform.light{i}_shadowMatrix, uniform.light{i}_cookieIntensity).{LIGHT{i}COOKIE_CHANNEL};\n\t\t\t\t\t#endif\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t\t#if LIGHT{i}TYPE == OMNI\n\t\t\t\tvar cookieAttenuation: vec3f = getCookieCube(uniform.light{i}_cookie, uniform.light{i}_shadowMatrix, uniform.light{i}_cookieIntensity).{LIGHT{i}COOKIE_CHANNEL};\n\t\t\t#endif\n\t\t\tlightColor = lightColor * cookieAttenuation;\n\t\t#endif\n\t\t#if LIGHT{i}SHAPE == PUNCTUAL\n\t\t\t#if LIGHT{i}FALLOFF == LINEAR\n\t\t\t\tdAtten = getFalloffLinear(uniform.light{i}_radius, lightDirW);\n\t\t\t#else\n\t\t\t\tdAtten = getFalloffInvSquared(uniform.light{i}_radius, lightDirW);\n\t\t\t#endif\n\t\t#else\n\t\t\tdAtten = getFalloffWindow(uniform.light{i}_radius, lightDirW);\n\t\t#endif\n\t\t#if LIGHT{i}TYPE == SPOT\n\t\t\t#if !defined(LIGHT{i}COOKIE) || defined(LIGHT{i}COOKIE_FALLOFF)\n\t\t\t\tdAtten = dAtten * getSpotEffect(uniform.light{i}_direction, uniform.light{i}_innerConeAngle, uniform.light{i}_outerConeAngle, dLightDirNormW);\n\t\t\t#endif\n\t\t#endif\n\t#endif\n\tif (dAtten < 0.00001) {\n\t\treturn;\n\t}\n\t#if LIGHT{i}SHAPE != PUNCTUAL\n\t\t#if LIGHT{i}SHAPE == RECT\n\t\t\tcalcRectLightValues(uniform.light{i}_position, uniform.light{i}_halfWidth, uniform.light{i}_halfHeight);\n\t\t#elif LIGHT{i}SHAPE == DISK\n\t\t\tcalcDiskLightValues(uniform.light{i}_position, uniform.light{i}_halfWidth, uniform.light{i}_halfHeight);\n\t\t#elif LIGHT{i}SHAPE == SPHERE\n\t\t\tcalcSphereLightValues(uniform.light{i}_position, uniform.light{i}_halfWidth, uniform.light{i}_halfHeight);\n\t\t#endif\n\t#endif\n\t#if LIGHT{i}SHAPE != PUNCTUAL\n\t\t#if LIGHT{i}TYPE == DIRECTIONAL\n\t\t\tvar attenDiffuse: f32 = getLightDiffuse(litArgs_worldNormal, dViewDirW, dLightDirNormW);\n\t\t#else\n\t\t\t#if LIGHT{i}SHAPE == RECT\n\t\t\t\tvar attenDiffuse: f32 = getRectLightDiffuse(litArgs_worldNormal, dViewDirW, lightDirW, dLightDirNormW) * 16.0;\n\t\t\t#elif LIGHT{i}SHAPE == DISK\n\t\t\t\tvar attenDiffuse: f32 = getDiskLightDiffuse(litArgs_worldNormal, dViewDirW, lightDirW, dLightDirNormW) * 16.0;\n\t\t\t#elif LIGHT{i}SHAPE == SPHERE\n\t\t\t\tvar attenDiffuse: f32 = getSphereLightDiffuse(litArgs_worldNormal, dViewDirW, lightDirW, dLightDirNormW) * 16.0;\n\t\t\t#endif\n\t\t#endif\n\t#else\n\t\tdAtten = dAtten * getLightDiffuse(litArgs_worldNormal, vec3(0.0), dLightDirNormW);\n\t#endif\n\t#ifdef LIGHT{i}CASTSHADOW\n\t\t#if LIGHT{i}TYPE == DIRECTIONAL\n\t\t\tvar shadow: f32 = getShadow{i}(vec3(0.0));\n\t\t#else\n\t\t\tvar shadow: f32 = getShadow{i}(lightDirW);\n\t\t#endif\n\t\tshadow = mix(1.0, shadow, uniform.light{i}_shadowIntensity);\n\t\tdAtten = dAtten * shadow;\n\t\t#if defined(LIT_SHADOW_CATCHER) && LIGHT{i}TYPE == DIRECTIONAL\n\t\t\tdShadowCatcher = dShadowCatcher * shadow;\n\t\t#endif\t\t\t\n\t#endif\n\t#if LIGHT{i}SHAPE != PUNCTUAL\n\t\t#ifdef LIT_SPECULAR\n\t\t\tdDiffuseLight = dDiffuseLight + (((attenDiffuse * dAtten) * lightColor) * (1.0 - dLTCSpecFres));\n\t\t#else\n\t\t\tdDiffuseLight = dDiffuseLight + ((attenDiffuse * dAtten) * lightColor);\n\t\t#endif\t\t\t\t\t\t\n\t#else\n\t\t#if defined(AREA_LIGHTS) && defined(LIT_SPECULAR)\n\t\t\tdDiffuseLight = dDiffuseLight + ((dAtten * lightColor) * (1.0 - litArgs_specularity));\n\t\t#else\n\t\t\tdDiffuseLight = dDiffuseLight + (dAtten * lightColor);\n\t\t#endif\n\t#endif\n\t#ifdef LIGHT{i}AFFECT_SPECULARITY\n\t\t#if LIGHT{i}SHAPE != PUNCTUAL\n\t\t\t#ifdef LIT_CLEARCOAT\n\t\t\t\t#if LIGHT{i}SHAPE == RECT\n\t\t\t\t\tccSpecularLight = ccSpecularLight + (ccLTCSpecFres * getRectLightSpecular(litArgs_clearcoat_worldNormal, dViewDirW) * dAtten * lightColor);\n\t\t\t\t#elif LIGHT{i}SHAPE == DISK\n\t\t\t\t\tccSpecularLight = ccSpecularLight + (ccLTCSpecFres * getDiskLightSpecular(litArgs_clearcoat_worldNormal, dViewDirW) * dAtten * lightColor);\n\t\t\t\t#elif LIGHT{i}SHAPE == SPHERE\n\t\t\t\t\tccSpecularLight = ccSpecularLight + (ccLTCSpecFres * getSphereLightSpecular(litArgs_clearcoat_worldNormal, dViewDirW) * dAtten * lightColor);\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t\t#ifdef LIT_SPECULAR\n\t\t\t\t#if LIGHT{i}SHAPE == RECT\n\t\t\t\t\tdSpecularLight = dSpecularLight + (dLTCSpecFres * getRectLightSpecular(litArgs_worldNormal, dViewDirW) * dAtten * lightColor);\n\t\t\t\t#elif LIGHT{i}SHAPE == DISK\n\t\t\t\t\tdSpecularLight = dSpecularLight + (dLTCSpecFres * getDiskLightSpecular(litArgs_worldNormal, dViewDirW) * dAtten * lightColor);\n\t\t\t\t#elif LIGHT{i}SHAPE == SPHERE\n\t\t\t\t\tdSpecularLight = dSpecularLight + (dLTCSpecFres * getSphereLightSpecular(litArgs_worldNormal, dViewDirW) * dAtten * lightColor);\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t#else\n\t\t\t#if LIGHT{i}TYPE == DIRECTIONAL && LIT_FRESNEL_MODEL != NONE\n\t\t\t\t#define LIGHT{i}FRESNEL\n\t\t\t#endif\n\t\t\t#ifdef LIT_SPECULAR\n\t\t\t\tvar halfDirW: vec3f = normalize(-dLightDirNormW + dViewDirW);\n\t\t\t#endif\n\t\t\t#ifdef LIT_CLEARCOAT\n\t\t\t\tvar lightspecularCC: vec3f = getLightSpecular(halfDirW, ccReflDirW, litArgs_clearcoat_worldNormal, dViewDirW, dLightDirNormW, litArgs_clearcoat_gloss, dTBN) * dAtten * lightColor;\n\t\t\t\t#ifdef LIGHT{i}FRESNEL\n\t\t\t\t\tlightspecularCC = lightspecularCC * getFresnelCC(dot(dViewDirW, halfDirW));\n\t\t\t\t#endif\n\t\t\t\tccSpecularLight = ccSpecularLight + lightspecularCC;\n\t\t\t#endif\n\t\t\t#ifdef LIT_SHEEN\n\t\t\t\tsSpecularLight = sSpecularLight + (getLightSpecularSheen(halfDirW, litArgs_worldNormal, dViewDirW, dLightDirNormW, litArgs_sheen_gloss) * dAtten * lightColor);\n\t\t\t#endif\n\t\t\t#ifdef LIT_SPECULAR\n\t\t\t\tvar lightSpecular: vec3f = getLightSpecular(halfDirW, dReflDirW, litArgs_worldNormal, dViewDirW, dLightDirNormW, litArgs_gloss, dTBN) * dAtten * lightColor;\n\t\t\t\t#ifdef LIGHT{i}FRESNEL\n\t\t\t\t\t#if defined(LIT_IRIDESCENCE)\n\t\t\t\t\t\tlightSpecular = lightSpecular * getFresnel(dot(dViewDirW, halfDirW), litArgs_gloss, litArgs_specularity, iridescenceFresnel, litArgs_iridescence_intensity);\n\t\t\t\t\t#else\n\t\t\t\t\t\tlightSpecular = lightSpecular * getFresnel(dot(dViewDirW, halfDirW), litArgs_gloss, litArgs_specularity);\n\t\t\t\t\t#endif\n\t\t\t\t#else\n\t\t\t\t\tlightSpecular = lightSpecular * litArgs_specularity;\n\t\t\t\t#endif\n\t\t\t\t\n\t\t\t\tdSpecularLight = dSpecularLight + lightSpecular;\n\t\t\t#endif\n\t\t#endif\n\t#endif\n}\n#endif\n`;\n\nvar lightFunctionShadowPS = `\n#ifdef LIGHT{i}CASTSHADOW\n\tfn getShadowSampleCoord{i}(shadowTransform: mat4x4f, shadowParams: vec4f, worldPosition: vec3f, lightPos: vec3f, lightDir: ptr<function, vec3f>, lightDirNorm: vec3f, normal: vec3f) -> vec3f {\n\t\tvar surfacePosition = worldPosition;\n\t\t#ifdef LIGHT{i}_SHADOW_SAMPLE_POINT\n\t\t\t#ifdef LIGHT{i}_SHADOW_SAMPLE_NORMAL_OFFSET\n\t\t\t\tlet distScale: f32 = length(*lightDir);\n\t\t\t\tsurfacePosition = surfacePosition + normal * shadowParams.y * clamp(1.0 - dot(normal, -lightDirNorm), 0.0, 1.0) * distScale;\n\t\t\t\t*lightDir = surfacePosition - lightPos;\n\t\t\t\treturn *lightDir;\n\t\t\t#endif\n\t\t#else\n\t\t\t#ifdef LIGHT{i}_SHADOW_SAMPLE_SOURCE_ZBUFFER\n\t\t\t\t#ifdef LIGHT{i}_SHADOW_SAMPLE_NORMAL_OFFSET\n\t\t\t\t\tsurfacePosition = surfacePosition + normal * shadowParams.y;\n\t\t\t\t#endif\n\t\t\t#else\n\t\t\t\t#ifdef LIGHT{i}_SHADOW_SAMPLE_NORMAL_OFFSET\n\t\t\t\t\t#ifdef LIGHT{i}_SHADOW_SAMPLE_ORTHO\n\t\t\t\t\t\tvar distScale: f32 = 1.0;\n\t\t\t\t\t#else\n\t\t\t\t\t\tvar distScale: f32 = abs(dot(vPositionW - lightPos, lightDirNorm));\n\t\t\t\t\t#endif\n\t\t\t\t\tsurfacePosition = surfacePosition + normal * shadowParams.y * clamp(1.0 - dot(normal, -lightDirNorm), 0.0, 1.0) * distScale;\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t\tvar positionInShadowSpace: vec4f = shadowTransform * vec4f(surfacePosition, 1.0);\n\t\t\t#ifdef LIGHT{i}_SHADOW_SAMPLE_ORTHO\n\t\t\t\tpositionInShadowSpace.z = saturate(positionInShadowSpace.z) - 0.0001;\n\t\t\t#else\n\t\t\t\t#ifdef LIGHT{i}_SHADOW_SAMPLE_SOURCE_ZBUFFER\n\t\t\t\t\tpositionInShadowSpace.xyz = positionInShadowSpace.xyz / positionInShadowSpace.w;\n\t\t\t\t#else\n\t\t\t\t\tpositionInShadowSpace.xy = positionInShadowSpace.xy / positionInShadowSpace.w;\n\t\t\t\t\tpositionInShadowSpace.z = length(*lightDir) * shadowParams.w;\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t\t#ifdef SHADOW_SAMPLE_Z_BIAS\n\t\t\t#endif\n\t\t\tsurfacePosition = positionInShadowSpace.xyz;\n\t\t#endif\n\t\treturn surfacePosition;\n\t}\n\tfn getShadow{i}(lightDirW_in: vec3f) -> f32 {\n\t\t#ifdef LIGHT{i}_SHADOW_CASCADES\n\t\t\tvar cascadeIndex: i32 = getShadowCascadeIndex(uniform.light{i}_shadowCascadeDistances, uniform.light{i}_shadowCascadeCount);\n\t\t\t#ifdef LIGHT{i}_SHADOW_CASCADE_BLEND\n\t\t\t\tcascadeIndex = ditherShadowCascadeIndex(cascadeIndex, uniform.light{i}_shadowCascadeDistances, uniform.light{i}_shadowCascadeCount, uniform.light{i}_shadowCascadeBlend);\n\t\t\t#endif\n\t\t\tvar shadowMatrix: mat4x4f = uniform.light{i}_shadowMatrixPalette[cascadeIndex];\n\t\t#else\n\t\t\tvar shadowMatrix: mat4x4f = uniform.light{i}_shadowMatrix;\n\t\t#endif\n\t\tvar lightDirArg = lightDirW_in;\n\t\t#if LIGHT{i}TYPE == DIRECTIONAL\n\t\t\tvar shadowCoord: vec3f = getShadowSampleCoord{i}(shadowMatrix, uniform.light{i}_shadowParams, vPositionW, vec3f(0.0), &lightDirArg, dLightDirNormW, dVertexNormalW);\n\t\t#else\n\t\t\t var shadowCoord: vec3f = getShadowSampleCoord{i}(shadowMatrix, uniform.light{i}_shadowParams, vPositionW, uniform.light{i}_position, &lightDirArg, dLightDirNormW, dVertexNormalW);\n\t\t#endif\n\t\t#if LIGHT{i}TYPE == DIRECTIONAL\n\t\t\tshadowCoord = fadeShadow(shadowCoord, uniform.light{i}_shadowCascadeDistances);\n\t\t#endif\n\t\t#if LIGHT{i}TYPE == DIRECTIONAL\n\t\t\t#if LIGHT{i}SHADOWTYPE == VSM_16F\n\t\t\t\treturn getShadowVSM16(light{i}_shadowMap, light{i}_shadowMapSampler, shadowCoord, uniform.light{i}_shadowParams, 5.54);\n\t\t\t#endif\n\t\t\t#if LIGHT{i}SHADOWTYPE == VSM_32F\n\t\t\t\treturn getShadowVSM32(light{i}_shadowMap, light{i}_shadowMapSampler, shadowCoord, uniform.light{i}_shadowParams, 15.0);\n\t\t\t#endif\n\t\t\t#if LIGHT{i}SHADOWTYPE == PCSS_32F\n\t\t\t\t#if LIGHT{i}SHAPE != PUNCTUAL\n\t\t\t\t\tlet shadowSearchArea = vec2f(length(uniform.light{i}_halfWidth), length(uniform.light{i}_halfHeight)) * uniform.light{i}_shadowSearchArea;\n\t\t\t\t\treturn getShadowPCSS(light{i}_shadowMap, light{i}_shadowMapSampler, shadowCoord, uniform.light{i}_shadowParams, uniform.light{i}_cameraParams, shadowSearchArea, lightDirW_in);\n\t\t\t\t#else\n\t\t\t\t\treturn getShadowPCSS(light{i}_shadowMap, light{i}_shadowMapSampler, shadowCoord, uniform.light{i}_shadowParams, uniform.light{i}_cameraParams, uniform.light{i}_softShadowParams, lightDirW_in);\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t\t#if LIGHT{i}SHADOWTYPE == PCF1_16F || LIGHT{i}SHADOWTYPE == PCF1_32F\n\t\t\t\treturn getShadowPCF1x1(light{i}_shadowMap, light{i}_shadowMapSampler, shadowCoord, uniform.light{i}_shadowParams);\n\t\t\t#endif\n\t\t\t#if LIGHT{i}SHADOWTYPE == PCF3_16F || LIGHT{i}SHADOWTYPE == PCF3_32F\n\t\t\t\treturn getShadowPCF3x3(light{i}_shadowMap, light{i}_shadowMapSampler, shadowCoord, uniform.light{i}_shadowParams);\n\t\t\t#endif\n\t\t\t#if LIGHT{i}SHADOWTYPE == PCF5_16F || LIGHT{i}SHADOWTYPE == PCF5_32F\n\t\t\t\treturn getShadowPCF5x5(light{i}_shadowMap, light{i}_shadowMapSampler, shadowCoord, uniform.light{i}_shadowParams);\n\t\t\t#endif\n\t\t#endif\n\t\t#if LIGHT{i}TYPE == SPOT\n\t\t\t#if LIGHT{i}SHADOWTYPE == VSM_16F\n\t\t\t\treturn getShadowSpotVSM16(light{i}_shadowMap, light{i}_shadowMapSampler, shadowCoord, uniform.light{i}_shadowParams, 5.54, lightDirW_in);\n\t\t\t#endif\n\t\t\t#if LIGHT{i}SHADOWTYPE == VSM_32F\n\t\t\t\treturn getShadowSpotVSM32(light{i}_shadowMap, light{i}_shadowMapSampler, shadowCoord, uniform.light{i}_shadowParams, 15.0, lightDirW_in);\n\t\t\t#endif\n\t\t\t#if LIGHT{i}SHADOWTYPE == PCSS_32F\n\t\t\t\t#if LIGHT{i}SHAPE != PUNCTUAL\n\t\t\t\t\tvar shadowSearchArea: vec2f = vec2f(length(uniform.light{i}_halfWidth), length(uniform.light{i}_halfHeight)) * uniform.light{i}_shadowSearchArea;\n\t\t\t\t#else\n\t\t\t\t\tvar shadowSearchArea: vec2f = vec2f(uniform.light{i}_shadowSearchArea);\n\t\t\t\t#endif\n\t\t\t\treturn getShadowSpotPCSS(light{i}_shadowMap, light{i}_shadowMapSampler, shadowCoord, uniform.light{i}_shadowParams, uniform.light{i}_cameraParams, shadowSearchArea, lightDirW_in);\n\t\t\t#endif\n\t\t\t#if LIGHT{i}SHADOWTYPE == PCF1_16F || LIGHT{i}SHADOWTYPE == PCF1_32F\n\t\t\t\treturn getShadowSpotPCF1x1(light{i}_shadowMap, light{i}_shadowMapSampler, shadowCoord, uniform.light{i}_shadowParams);\n\t\t\t#endif\n\t\t\t#if LIGHT{i}SHADOWTYPE == PCF3_16F || LIGHT{i}SHADOWTYPE == PCF3_32F\n\t\t\t\treturn getShadowSpotPCF3x3(light{i}_shadowMap, light{i}_shadowMapSampler, shadowCoord, uniform.light{i}_shadowParams);\n\t\t\t#endif\n\t\t\t#if LIGHT{i}SHADOWTYPE == PCF5_16F || LIGHT{i}SHADOWTYPE == PCF5_32F\n\t\t\t\treturn getShadowSpotPCF5x5(light{i}_shadowMap, light{i}_shadowMapSampler, shadowCoord, uniform.light{i}_shadowParams);\n\t\t\t#endif\n\t\t#endif\n\t\t#if LIGHT{i}TYPE == OMNI\n\t\t\t#if LIGHT{i}SHADOWTYPE == PCSS_32F\n\t\t\t\t var shadowSearchArea: vec2f;\n\t\t\t\t #if LIGHT{i}SHAPE != PUNCTUAL\n\t\t\t\t\tvar shadowSearchArea: vec2f = vec2f(length(uniform.light{i}_halfWidth), length(uniform.light{i}_halfHeight)) * uniform.light{i}_shadowSearchArea;\n\t\t\t\t#else\n\t\t\t\t\tvar shadowSearchArea: vec2f = vec2f(uniform.light{i}_shadowSearchArea);\n\t\t\t\t#endif\n\t\t\t\treturn getShadowOmniPCSS(light{i}_shadowMap, light{i}_shadowMapSampler, shadowCoord, uniform.light{i}_shadowParams, uniform.light{i}_cameraParams, shadowSearchArea, lightDirW_in);\n\t\t\t#endif\n\t\t\t#if LIGHT{i}SHADOWTYPE == PCF1_16F || LIGHT{i}SHADOWTYPE == PCF1_32F\n\t\t\t\treturn getShadowOmniPCF1x1(light{i}_shadowMap, light{i}_shadowMapSampler, shadowCoord, uniform.light{i}_shadowParams, lightDirW_in);\n\t\t\t#endif\n\t\t\t#if LIGHT{i}SHADOWTYPE == PCF3_16F || LIGHT{i}SHADOWTYPE == PCF3_32F\n\t\t\t\treturn getShadowOmniPCF3x3(light{i}_shadowMap, light{i}_shadowMapSampler, shadowCoord, uniform.light{i}_shadowParams, lightDirW_in);\n\t\t\t#endif\n\t\t#endif\n\t}\n#endif\n`;\n\nvar lightingPS = `\n#ifdef LIT_CLUSTERED_LIGHTS\n\t#define LIT_CODE_FALLOFF_LINEAR\n\t#define LIT_CODE_FALLOFF_SQUARED\n\t#define LIT_CODE_LIGHTS_POINT\n\t#define LIT_CODE_LIGHTS_SPOT\n#endif\n#ifdef AREA_LIGHTS\n\tvar areaLightsLutTex1: texture_2d<f32>;\n\tvar areaLightsLutTex1Sampler: sampler;\n\tvar areaLightsLutTex2: texture_2d<f32>;\n\tvar areaLightsLutTex2Sampler: sampler;\n#endif\n#ifdef LIT_LIGHTING\n\t#include \"lightDiffuseLambertPS\"\n\t#if defined(AREA_LIGHTS) || defined(LIT_CLUSTERED_AREA_LIGHTS)\n\t\t#include \"ltcPS\"\n\t#endif\n#endif\n#ifdef SHADOW_DIRECTIONAL\n\t#include \"shadowCascadesPS\"\n#endif\n#if defined(SHADOW_KIND_PCF1)\n\t#include \"shadowPCF1PS\"\n#endif\n#if defined(SHADOW_KIND_PCF3)\n\t#include \"shadowPCF3PS\"\n#endif\n#if defined(SHADOW_KIND_PCF5)\n\t#include \"shadowPCF5PS\"\n#endif\n#if defined(SHADOW_KIND_PCSS)\n\t#include \"linearizeDepthPS\"\n\t#include \"shadowSoftPS\"\n#endif\n#if defined(SHADOW_KIND_VSM)\n\t#include \"shadowEVSMPS\"\n#endif\n#ifdef LIT_CODE_FALLOFF_LINEAR\n\t#include \"falloffLinearPS\"\n#endif\n#ifdef LIT_CODE_FALLOFF_SQUARED\n\t#include \"falloffInvSquaredPS\"\n#endif\n#ifdef LIT_CODE_LIGHTS_POINT\n\t#include \"lightDirPointPS\"\n#endif\n#ifdef LIT_CODE_LIGHTS_SPOT\n\t#include \"spotPS\"\n#endif\n#ifdef LIT_CODE_COOKIE\n\t#include \"cookiePS\"\n#endif\n#ifdef LIT_CLUSTERED_LIGHTS\n\t#include \"clusteredLightPS\"\n#endif\n#ifdef LIGHT_COUNT > 0\n\t#include \"lightFunctionShadowPS, LIGHT_COUNT\"\n\t#include \"lightFunctionLightPS, LIGHT_COUNT\"\n#endif\n`;\n\nvar lightmapAddPS = `\nfn addLightMap(\n\tlightmap: vec3f,\n\tdir: vec3f,\n\tworldNormal: vec3f,\n\tviewDir: vec3f,\n\treflectionDir: vec3f,\n\tgloss: f32,\n\tspecularity: vec3f,\n\tvertexNormal: vec3f,\n\ttbn: mat3x3f\n#if defined(LIT_IRIDESCENCE)\n\t, iridescenceFresnel: vec3f,\n\tiridescenceIntensity: f32\n#endif\n) {\n\t#if defined(LIT_SPECULAR) && defined(LIT_DIR_LIGHTMAP)\n\t\tif (dot(dir, dir) < 0.0001) {\n\t\t\t\tdDiffuseLight = dDiffuseLight + lightmap;\n\t\t} else {\n\t\t\tlet vlight: f32 = saturate(dot(dir, -vertexNormal));\n\t\t\tlet flight: f32 = saturate(dot(dir, -worldNormal));\n\t\t\tlet nlight: f32 = (flight / max(vlight, 0.01)) * 0.5;\n\t\t\tdDiffuseLight = dDiffuseLight + lightmap * nlight * 2.0;\n\t\t\tlet halfDir: vec3f = normalize(-dir + viewDir);\n\t\t\tvar specularLight: vec3f = lightmap * getLightSpecular(halfDir, reflectionDir, worldNormal, viewDir, dir, gloss, tbn);\n\t\t\t#ifdef LIT_SPECULAR_FRESNEL\n\t\t\t\tspecularLight = specularLight *\n\t\t\t\t\tgetFresnel(dot(viewDir, halfDir),\n\t\t\t\t\tgloss,\n\t\t\t\t\tspecularity\n\t\t\t\t#if defined(LIT_IRIDESCENCE)\n\t\t\t\t\t, iridescenceFresnel,\n\t\t\t\t\tiridescenceIntensity\n\t\t\t\t#endif\n\t\t\t\t\t);\n\t\t\t#endif\n\t\t\tdSpecularLight = dSpecularLight + specularLight;\n\t\t}\n\t#else\n\t\tdDiffuseLight = dDiffuseLight + lightmap;\n\t#endif\n}\n`;\n\nvar lightmapPS = `\n#ifdef STD_LIGHTMAP_DIR\n\tvar<private> dLightmapDir: vec3f;\n\tvar texture_dirLightMap: texture_2d<f32>;\n\tvar texture_dirLightMapSampler: sampler;\n#endif\nfn getLightMap() {\n\tdLightmap = vec3f(1.0);\n\t#ifdef STD_LIGHT_TEXTURE\n\t\tdLightmap = dLightmap * {STD_LIGHT_TEXTURE_DECODE}(textureSampleBias({STD_LIGHT_TEXTURE_NAME}, {STD_LIGHT_TEXTURE_NAME}Sampler, {STD_LIGHT_TEXTURE_UV}, uniform.textureBias)).{STD_LIGHT_TEXTURE_CHANNEL};\n\t\t#ifdef STD_LIGHTMAP_DIR\n\t\t\tvar dir: vec3f = textureSampleBias(texture_dirLightMap, texture_dirLightMapSampler, {STD_LIGHT_TEXTURE_UV}, uniform.textureBias).xyz * 2.0 - 1.0;\n\t\t\tvar dirDot = dot(dir, dir);\n\t\t\tdLightmapDir = select(vec3(0.0), dir / sqrt(dirDot), dirDot > 0.001);\n\t\t#endif\n\t#endif\n\t#ifdef STD_LIGHT_VERTEX\n\t\tdLightmap = dLightmap * saturate(vVertexColor.{STD_LIGHT_VERTEX_CHANNEL});\n\t#endif\n}\n`;\n\nvar lightSpecularAnisoGGXPS = `\nfn calcLightSpecular(gloss: f32, worldNormal: vec3f, viewDir: vec3f, h: vec3f, lightDirNorm: vec3f, tbn: mat3x3f) -> f32 {\n\tlet PI: f32 = 3.141592653589793;\n\tlet roughness: f32 = max((1.0 - gloss) * (1.0 - gloss), 0.001);\n\tlet alphaRoughness: f32 = roughness * roughness;\n\tlet anisotropy: f32 = dAnisotropy;\n\tlet direction: vec2f = dAnisotropyRotation;\n\tlet at: f32 = mix(alphaRoughness, 1.0, anisotropy * anisotropy);\n\tlet ab: f32 = clamp(alphaRoughness, 0.001, 1.0);\n\tlet anisotropicT: vec3f = normalize(tbn * vec3f(direction, 0.0));\n\tlet anisotropicB: vec3f = normalize(cross(tbn[2], anisotropicT));\n\tlet NoH: f32 = dot(worldNormal, h);\n\tlet ToH: f32 = dot(anisotropicT, h);\n\tlet BoH: f32 = dot(anisotropicB, h);\n\tlet a2: f32 = at * ab;\n\tlet v: vec3f = vec3f(ab * ToH, at * BoH, a2 * NoH);\n\tlet v2: f32 = dot(v, v);\n\tlet w2: f32 = a2 / v2;\n\tlet D: f32 = a2 * w2 * w2 * (1.0 / PI);\n\tlet ToV: f32 = dot(anisotropicT, viewDir);\n\tlet BoV: f32 = dot(anisotropicB, viewDir);\n\tlet ToL: f32 = dot(anisotropicT, -lightDirNorm);\n\tlet BoL: f32 = dot(anisotropicB, -lightDirNorm);\n\tlet NoV: f32 = dot(worldNormal, viewDir);\n\tlet NoL: f32 = dot(worldNormal, -lightDirNorm);\n\tlet lambdaV: f32 = NoL * length(vec3f(at * ToV, ab * BoV, NoV));\n\tlet lambdaL: f32 = NoV * length(vec3f(at * ToL, ab * BoL, NoL));\n\tlet G: f32 = 0.5 / (lambdaV + lambdaL);\n\treturn D * G;\n}\nfn getLightSpecular(h: vec3f, reflDir: vec3f, worldNormal: vec3f, viewDir: vec3f, lightDirNorm: vec3f, gloss: f32, tbn: mat3x3f) -> f32 {\n\treturn calcLightSpecular(gloss, worldNormal, viewDir, h, lightDirNorm, tbn);\n}\n`;\n\nvar lightSpecularBlinnPS = `\nfn calcLightSpecular(gloss: f32, worldNormal: vec3f, h: vec3f) -> f32 {\n\tlet nh: f32 = max( dot( h, worldNormal ), 0.0 );\n\tvar specPow: f32 = exp2(gloss * 11.0);\n\tspecPow = max(specPow, 0.0001);\n\treturn pow(nh, specPow) * (specPow + 2.0) / 8.0;\n}\nfn getLightSpecular(h: vec3f, reflDir: vec3f, worldNormal: vec3f, viewDir: vec3f, lightDirNorm: vec3f, gloss: f32, tbn: mat3x3f) -> f32 {\n\treturn calcLightSpecular(gloss, worldNormal, h);\n}\n`;\n\nvar lightSheenPS = `\nfn sheenD(normal: vec3f, h: vec3f, roughness: f32) -> f32 {\n\tlet PI: f32 = 3.141592653589793;\n\tlet invR: f32 = 1.0 / (roughness * roughness);\n\tvar cos2h: f32 = max(dot(normal, h), 0.0);\n\tcos2h = cos2h * cos2h;\n\tlet sin2h: f32 = max(1.0 - cos2h, 0.0078125);\n\treturn (2.0 + invR) * pow(sin2h, invR * 0.5) / (2.0 * PI);\n}\nfn sheenV(normal: vec3f, viewDir: vec3f, light: vec3f) -> f32 {\n\tlet NoV: f32 = max(dot(normal, viewDir), 0.000001);\n\tlet NoL: f32 = max(dot(normal, light), 0.000001);\n\treturn 1.0 / (4.0 * (NoL + NoV - NoL * NoV));\n}\nfn getLightSpecularSheen(h: vec3f, worldNormal: vec3f, viewDir: vec3f, lightDirNorm: vec3f, sheenGloss: f32) -> f32 {\n\tlet D: f32 = sheenD(worldNormal, h, sheenGloss);\n\tlet V: f32 = sheenV(worldNormal, viewDir, -lightDirNorm);\n\treturn D * V;\n}`;\n\nvar linearizeDepthPS = `\n#ifndef LINEARIZE_DEPTH\n#define LINEARIZE_DEPTH\nfn linearizeDepthWithParams(z: f32, cameraParams: vec4f) -> f32 {\n\tif (cameraParams.w == 0.0) {\n\t\treturn (cameraParams.z * cameraParams.y) / (cameraParams.y + z * (cameraParams.z - cameraParams.y));\n\t} else {\n\t\treturn cameraParams.z + z * (cameraParams.y - cameraParams.z);\n\t}\n}\n#ifndef CAMERAPLANES\n\t#define CAMERAPLANES\n\tuniform camera_params: vec4f;\n#endif\nfn linearizeDepth(z: f32) -> f32 {\n\treturn linearizeDepthWithParams(z, uniform.camera_params);\n}\n#endif\n`;\n\nvar litForwardBackendPS = `\nfn evaluateBackend() -> FragmentOutput {\n\tvar output: FragmentOutput;\n\t#ifdef LIT_SSAO\n\t\tlitArgs_ao = litArgs_ao * textureSampleLevel(ssaoTexture, ssaoTextureSampler, pcPosition.xy * uniform.ssaoTextureSizeInv, 0.0).r;\n\t#endif\n\t#ifdef LIT_NEEDS_NORMAL\n\t\t#ifdef LIT_SPECULAR\n\t\t\tgetReflDir(litArgs_worldNormal, dViewDirW, litArgs_gloss, dTBN);\n\t\t#endif\n\t\t#ifdef LIT_CLEARCOAT\n\t\t\tccReflDirW = normalize(-reflect(dViewDirW, litArgs_clearcoat_worldNormal));\n\t\t#endif\n\t#endif\n\t#ifdef LIT_SPECULAR_OR_REFLECTION\n\t\t#ifdef LIT_METALNESS\n\t\t\tvar f0: f32 = 1.0 / litArgs_ior;\n\t\t\tf0 = (f0 - 1.0) / (f0 + 1.0);\n\t\t\tf0 = f0 * f0;\n\t\t\tlitArgs_specularity = getSpecularModulate(litArgs_specularity, litArgs_albedo, litArgs_metalness, f0);\n\t\t\tlitArgs_albedo = getAlbedoModulate(litArgs_albedo, litArgs_metalness);\n\t\t#endif\n\t\t#ifdef LIT_IRIDESCENCE\n\t\t\tvar iridescenceFresnel: vec3f = getIridescenceDiffraction(saturate(dot(dViewDirW, litArgs_worldNormal)), litArgs_specularity, litArgs_iridescence_thickness);\n\t\t#endif\n\t#endif\n\t#ifdef LIT_ADD_AMBIENT\n\t\taddAmbient(litArgs_worldNormal);\n\t\t#ifdef LIT_SPECULAR\n\t\t\tdDiffuseLight = dDiffuseLight * (1.0 - litArgs_specularity);\n\t\t#endif\n\t\t#ifdef LIT_SEPARATE_AMBIENT\n\t\t\tvar dAmbientLight: vec3f = dDiffuseLight;\n\t\t\tdDiffuseLight = vec3(0.0);\n\t\t#endif\n\t#endif\n\t#ifndef LIT_OLD_AMBIENT\n\t\tdDiffuseLight = dDiffuseLight * uniform.material_ambient;\n\t#endif\n\t#ifdef LIT_AO\n\t\t#ifndef LIT_OCCLUDE_DIRECT\n\t\t\toccludeDiffuse(litArgs_ao);\n\t\t#endif\n\t#endif\n\t#ifdef LIT_LIGHTMAP\n\t\taddLightMap(\n\t\t\tlitArgs_lightmap, \n\t\t\tlitArgs_lightmapDir, \n\t\t\tlitArgs_worldNormal, \n\t\t\tdViewDirW, \n\t\t\tdReflDirW, \n\t\t\tlitArgs_gloss, \n\t\t\tlitArgs_specularity, \n\t\t\tdVertexNormalW,\n\t\t\tdTBN\n\t\t#if defined(LIT_IRIDESCENCE)\n\t\t\t, iridescenceFresnel,\n\t\t\tlitArgs_iridescence_intensity\n\t\t#endif\n\t\t);\n\t#endif\n\t#ifdef LIT_LIGHTING || LIT_REFLECTIONS\n\t\t#ifdef LIT_REFLECTIONS\n\t\t\t#ifdef LIT_CLEARCOAT\n\t\t\t\taddReflectionCC(ccReflDirW, litArgs_clearcoat_gloss);\n\t\t\t\n\t\t\t\t#ifdef LIT_SPECULAR_FRESNEL\n\t\t\t\t\tccFresnel = getFresnelCC(dot(dViewDirW, litArgs_clearcoat_worldNormal));\n\t\t\t\t\tccReflection = ccReflection * ccFresnel;\n\t\t\t\t#else\n\t\t\t\t\tccFresnel = 0.0;\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t\t#ifdef LIT_SPECULARITY_FACTOR\n\t\t\t\tccReflection = ccReflection * litArgs_specularityFactor;\n\t\t\t#endif\n\t\t\t#ifdef LIT_SHEEN\n\t\t\t\taddReflectionSheen(litArgs_worldNormal, dViewDirW, litArgs_sheen_gloss);\n\t\t\t#endif\n\t\t\taddReflection(dReflDirW, litArgs_gloss);\n\t\t\t#ifdef LIT_FRESNEL_MODEL\n\t\t\t\tdReflection = vec4f(\n\t\t\t\t\tdReflection.rgb * getFresnel(\n\t\t\t\t\t\tdot(dViewDirW, litArgs_worldNormal),\n\t\t\t\t\t\tlitArgs_gloss,\n\t\t\t\t\t\tlitArgs_specularity\n\t\t\t\t\t#if defined(LIT_IRIDESCENCE)\n\t\t\t\t\t\t, iridescenceFresnel,\n\t\t\t\t\t\tlitArgs_iridescence_intensity\n\t\t\t\t\t#endif\n\t\t\t\t\t\t),\n\t\t\t\t\tdReflection.a\n\t\t\t\t);\n\t\t\t#else\n\t\t\t\tdReflection = vec4f(dReflection.rgb * litArgs_specularity, dReflection.a);\n\t\t\t#endif\n\t\t\t#ifdef LIT_SPECULARITY_FACTOR\n\t\t\t\tdReflection = vec4f(dReflection.rgb * litArgs_specularityFactor, dReflection.a);\n\t\t\t#endif\n\t\t#endif\n\t\t#ifdef AREA_LIGHTS\n\t\t\tdSpecularLight = dSpecularLight * litArgs_specularity;\n\t\t\t#ifdef LIT_SPECULAR\n\t\t\t\tcalcLTCLightValues(litArgs_gloss, litArgs_worldNormal, dViewDirW, litArgs_specularity, litArgs_clearcoat_gloss, litArgs_clearcoat_worldNormal, litArgs_clearcoat_specularity);\n\t\t\t#endif\n\t\t#endif\n\t\t\n\t\t#ifdef LIGHT_COUNT > 0\n\t\t\t#include \"lightEvaluationPS, LIGHT_COUNT\"\n\t\t#endif\n\t\t#ifdef LIT_CLUSTERED_LIGHTS\n\t\t\taddClusteredLights(litArgs_worldNormal, dViewDirW, dReflDirW,\n\t\t\t\t#if defined(LIT_CLEARCOAT)\n\t\t\t\t\t\tccReflDirW,\n\t\t\t\t#endif\n\t\t\t\t\t\tlitArgs_gloss, litArgs_specularity, dVertexNormalW, dTBN, \n\t\t\t\t#if defined(LIT_IRIDESCENCE)\n\t\t\t\t\t\tiridescenceFresnel,\n\t\t\t\t#endif\n\t\t\t\t\t\tlitArgs_clearcoat_worldNormal, litArgs_clearcoat_gloss, litArgs_sheen_gloss, litArgs_iridescence_intensity\n\t\t\t);\n\t\t#endif\n\t\t#ifdef AREA_LIGHTS\n\t\t\t#ifdef LIT_CLEARCOAT\n\t\t\t\tlitArgs_clearcoat_specularity = 1.0;\n\t\t\t#endif\n\t\t\t#ifdef LIT_SPECULAR\n\t\t\t\tlitArgs_specularity = vec3(1.0);\n\t\t\t#endif\n\t\t#endif\n\t\t#ifdef LIT_REFRACTION\n\t\t\taddRefraction(\n\t\t\t\tlitArgs_worldNormal, \n\t\t\t\tdViewDirW, \n\t\t\t\tlitArgs_thickness, \n\t\t\t\tlitArgs_gloss, \n\t\t\t\tlitArgs_specularity, \n\t\t\t\tlitArgs_albedo, \n\t\t\t\tlitArgs_transmission,\n\t\t\t\tlitArgs_ior,\n\t\t\t\tlitArgs_dispersion\n\t\t\t\t#if defined(LIT_IRIDESCENCE)\n\t\t\t\t\t, iridescenceFresnel, \n\t\t\t\t\tlitArgs_iridescence_intensity\n\t\t\t\t#endif\n\t\t\t);\n\t\t#endif\n\t#endif\n\t#ifdef LIT_AO\n\t\t#ifdef LIT_OCCLUDE_DIRECT\n\t\t\toccludeDiffuse(litArgs_ao);\n\t\t#endif\n\t\t#if LIT_OCCLUDE_SPECULAR != NONE\n\t\t\toccludeSpecular(litArgs_gloss, litArgs_ao, litArgs_worldNormal, dViewDirW);\n\t\t#endif\n\t#endif\n\t#ifdef LIT_SPECULARITY_FACTOR\n\t\tdSpecularLight = dSpecularLight * litArgs_specularityFactor;\n\t#endif\n\t#if !defined(LIT_OPACITY_FADES_SPECULAR)\n\t\t#if LIT_BLEND_TYPE == NORMAL || LIT_BLEND_TYPE == PREMULTIPLIED\n\t\t\tvar specLum: f32 = dot((dSpecularLight + dReflection.rgb * dReflection.a), vec3f( 0.2126, 0.7152, 0.0722 ));\n\t\t\t#ifdef LIT_CLEARCOAT\n\t\t\t\tspecLum = specLum + dot(ccSpecularLight * litArgs_clearcoat_specularity + ccReflection * litArgs_clearcoat_specularity, vec3f( 0.2126, 0.7152, 0.0722 ));\n\t\t\t#endif\n\t\t\tlitArgs_opacity = clamp(litArgs_opacity + gammaCorrectInput(specLum), 0.0, 1.0);\n\t\t#endif\n\t\tlitArgs_opacity = litArgs_opacity * uniform.material_alphaFade;\n\t#endif\n\t#ifdef LIT_LIGHTMAP_BAKING\n\t\t#ifdef LIT_LIGHTMAP_BAKING_COLOR\n\t\t\t#include \"bakeLmEndPS\"\n\t\t#endif\n\t\t#ifdef LIT_LIGHTMAP_BAKING_DIR\n\t\t\t#include \"bakeDirLmEndPS\"\n\t\t#endif\n\t#else\n\t\t#include \"endPS\"\n\t\t#include \"outputAlphaPS\"\n\t#endif\n\t#ifdef LIT_MSDF\n\t\toutput.color = applyMsdf(output.color);\n\t#endif\n\t#include \"outputPS\"\n\t#include \"debugOutputPS\"\n\t#ifdef LIT_SHADOW_CATCHER\n\t\toutput.color = vec4f(vec3f(dShadowCatcher), output.color.a);\n\t#endif\n\treturn output;\n}\n`;\n\nvar litForwardDeclarationPS = `\nvar<private> sReflection: vec3f;\nvar<private> dVertexNormalW: vec3f;\nvar<private> dTangentW: vec3f;\nvar<private> dBinormalW: vec3f;\nvar<private> dViewDirW: vec3f;\nvar<private> dReflDirW: vec3f;\nvar<private> ccReflDirW: vec3f;\nvar<private> dLightDirNormW: vec3f;\nvar<private> dAtten: f32;\nvar<private> dTBN: mat3x3f;\nvar<private> dReflection: vec4f;\nvar<private> dDiffuseLight: vec3f;\nvar<private> dSpecularLight: vec3f;\nvar<private> ccFresnel: f32;\nvar<private> ccReflection: vec3f;\nvar<private> ccSpecularLight: vec3f;\nvar<private> ccSpecularityNoFres: f32;\nvar<private> sSpecularLight: vec3f;\n#ifdef LIT_DISPERSION\n\tuniform material_dispersion: f32;\n#endif\n#ifndef LIT_OPACITY_FADES_SPECULAR\n\tuniform material_alphaFade: f32;\n#endif\n#ifdef LIT_SSAO\n\tvar ssaoTexture : texture_2d<f32>;\n\tvar ssaoTextureSampler : sampler;\n\tuniform ssaoTextureSizeInv: vec2f;\n#endif\n#ifdef LIT_SHADOW_CATCHER\n\tvar<private> dShadowCatcher: f32 = 1.0;\n#endif\n#if LIGHT_COUNT > 0\n\t#include \"lightDeclarationPS, LIGHT_COUNT\"\n#endif\n#ifdef LIT_SPECULAR\n\t#if LIT_FRESNEL_MODEL == NONE && !defined(LIT_REFLECTIONS) && !defined(LIT_DIFFUSE_MAP) \n\t\t#define LIT_OLD_AMBIENT\n\t#endif\n#endif\n#ifdef STD_LIGHTMAP_DIR\n\tuniform bakeDir: f32;\n#endif\n#ifdef LIT_LIGHTMAP_BAKING_ADD_AMBIENT\n\tuniform ambientBakeOcclusionContrast: f32;\n\tuniform ambientBakeOcclusionBrightness: f32;\n#endif\n`;\n\nvar litForwardMainPS = `\n@fragment\nfn fragmentMain(input: FragmentInput) -> FragmentOutput {\n\t#include \"litUserMainStartPS\"\n\tdReflection = vec4f(0.0);\n\t#ifdef LIT_CLEARCOAT\n\t\tccSpecularLight = vec3f(0.0);\n\t\tccReflection = vec3f(0.0);\n\t#endif\n\t#if LIT_NONE_SLICE_MODE == SLICED\n\t\t#include \"startNineSlicedPS\"\n\t#elif LIT_NONE_SLICE_MODE == TILED\n\t\t#include \"startNineSlicedTiledPS\"\n\t#endif\n\t#ifdef LIT_NEEDS_NORMAL\n\t\tdVertexNormalW = normalize(vNormalW);\n\t\t#ifdef LIT_TANGENTS\n\t\t\t#if defined(LIT_HEIGHTS) || defined(LIT_USE_NORMALS) || defined(LIT_USE_CLEARCOAT_NORMALS) || defined(LIT_GGX_SPECULAR)\n\t\t\t\tdTangentW = vTangentW;\n\t\t\t\tdBinormalW = vBinormalW;\n\t\t\t#endif\n\t\t#endif\n\t\tgetViewDir();\n\t\t#ifdef LIT_TBN\n\t\t\tgetTBN(dTangentW, dBinormalW, dVertexNormalW);\n\t\t\t#ifdef LIT_TWO_SIDED_LIGHTING\n\t\t\t\thandleTwoSidedLighting();\n\t\t\t#endif\n\t\t#endif\n\t#endif\n\tevaluateFrontend();\n\t#include \"debugProcessFrontendPS\"\n\tvar output: FragmentOutput = evaluateBackend();\n\t#include \"litUserMainEndPS\"\n\treturn output;\n}\n`;\n\nvar litForwardPostCodePS = `\n#ifdef LIT_NEEDS_NORMAL\n\t#include \"cubeMapRotatePS\"\n\t#include \"cubeMapProjectPS\"\n\t#include \"envProcPS\"\n#endif\n#ifdef LIT_SPECULAR_OR_REFLECTION\n\t#ifdef LIT_METALNESS\n\t\t#include \"metalnessModulatePS\"\n\t#endif\n\t#if LIT_FRESNEL_MODEL == SCHLICK\n\t\t#include \"fresnelSchlickPS\"\n\t#endif\n\t#ifdef LIT_IRIDESCENCE\n\t\t#include \"iridescenceDiffractionPS\"\n\t#endif\n#endif\n#ifdef LIT_AO\n\t#include \"aoDiffuseOccPS\"\n\t#include \"aoSpecOccPS\"\n#endif\n#if LIT_REFLECTION_SOURCE == ENVATLASHQ\n\t#include \"envAtlasPS\"\n\t#include \"reflectionEnvHQPS\"\n#elif LIT_REFLECTION_SOURCE == ENVATLAS\n\t#include \"envAtlasPS\"\n\t#include \"reflectionEnvPS\"\n#elif LIT_REFLECTION_SOURCE == CUBEMAP\n\t#include \"reflectionCubePS\"\n#elif LIT_REFLECTION_SOURCE == SPHEREMAP\n\t#include \"reflectionSpherePS\"\n#endif\n#ifdef LIT_REFLECTIONS\n\t#ifdef LIT_CLEARCOAT\n\t\t#include \"reflectionCCPS\"\n\t#endif\n\t#ifdef LIT_SHEEN\n\t\t#include \"reflectionSheenPS\"\n\t#endif\n#endif\n#ifdef LIT_REFRACTION\n\t#if defined(LIT_DYNAMIC_REFRACTION)\n\t\t#include \"refractionDynamicPS\"\n\t#elif defined(LIT_REFLECTIONS)\n\t\t#include \"refractionCubePS\"\n\t#endif\n#endif\n#ifdef LIT_SHEEN\n\t#include \"lightSheenPS\"\n#endif\nuniform material_ambient: vec3f;\n#ifdef LIT_SPECULAR\n\t#ifdef LIT_LIGHTING\n\t\t#ifdef LIT_GGX_SPECULAR\n\t\t\t#include \"lightSpecularAnisoGGXPS\"\n\t\t#else\n\t\t\t#include \"lightSpecularBlinnPS\"\n\t\t#endif\n\t#endif\n#endif\n#include \"combinePS\"\n#ifdef LIT_LIGHTMAP\n\t#include \"lightmapAddPS\"\n#endif\n#ifdef LIT_ADD_AMBIENT\n\t#include \"ambientPS\"\n#endif\n#ifdef LIT_MSDF\n\t#include \"msdfPS\"\n#endif\n#ifdef LIT_NEEDS_NORMAL\n\t#include \"viewDirPS\"\n\t#ifdef LIT_SPECULAR\n\t\t#ifdef LIT_GGX_SPECULAR\n\t\t\t#include \"reflDirAnisoPS\"\n\t\t#else\n\t\t\t#include \"reflDirPS\"\n\t\t#endif\n\t#endif\n#endif\n#include \"lightingPS\"\n`;\n\nvar litForwardPreCodePS = `\n#include \"basePS\"\n#include \"sphericalPS\"\n#include \"decodePS\"\n#include \"gammaPS\"\n#include \"tonemappingPS\"\n#include \"fogPS\"\n#if LIT_NONE_SLICE_MODE == SLICED\n\t#include \"baseNineSlicedPS\"\n#elif LIT_NONE_SLICE_MODE == TILED\n\t#include \"baseNineSlicedTiledPS\"\n#endif\n#ifdef LIT_TBN\n\t#include \"TBNPS\"\n\t#ifdef LIT_TWO_SIDED_LIGHTING\n\t\t#include \"twoSidedLightingPS\"\n\t#endif\n#endif\n`;\n\nvar litMainPS = `\n#include \"varyingsPS\"\n#include \"litUserDeclarationPS\"\n#include \"frontendDeclPS\"\n#if defined(PICK_PASS) || defined(PREPASS_PASS)\n\t#include \"frontendCodePS\"\n\t#include \"litUserCodePS\"\n\t#include \"litOtherMainPS\"\n#elif defined(SHADOW_PASS)\n\t#include \"frontendCodePS\"\n\t#include \"litUserCodePS\"\n\t#include \"litShadowMainPS\"\n#else\n\t#include \"litForwardDeclarationPS\"\n\t#include \"litForwardPreCodePS\"\n\t#include \"frontendCodePS\"\n\t#include \"litForwardPostCodePS\"\n\t#include \"litForwardBackendPS\"\n\t#include \"litUserCodePS\"\n\t#include \"litForwardMainPS\"\n#endif\n`;\n\nvar litMainVS = `\n#include \"varyingsVS\"\n#include  \"litUserDeclarationVS\"\n#ifdef VERTEX_COLOR\n\tattribute vertex_color: vec4f;\n#endif\n#ifdef NINESLICED\n\tvarying vMask: vec2f;\n\tvarying vTiledUv: vec2f;\n\tvar<private> dMaskGlobal: vec2f;\n\tvar<private> dTiledUvGlobal: vec2f;\n\tuniform innerOffset: vec4f;\n\tuniform outerScale: vec2f;\n\tuniform atlasRect: vec4f;\n#endif\nvar<private> dPositionW: vec3f;\nvar<private> dModelMatrix: mat4x4f;\n#include \"transformCoreVS\"\n#ifdef UV0\n\tattribute vertex_texCoord0: vec2f;\n\t#include \"uv0VS\"\n#endif\n#ifdef UV1\n\tattribute vertex_texCoord1: vec2f;\n\t#include \"uv1VS\"\n#endif\n#ifdef LINEAR_DEPTH\n\t#ifndef VIEWMATRIX\n\t#define VIEWMATRIX\n\t\tuniform matrix_view: mat4x4f;\n\t#endif\n#endif\n#include \"transformVS\"\n#ifdef NORMALS\n\t#include \"normalCoreVS\"\n\t#include \"normalVS\"\n#endif\n#ifdef TANGENTS\n\tattribute vertex_tangent: vec4f;\n#endif\n#include \"uvTransformUniformsPS, UV_TRANSFORMS_COUNT\"\n#ifdef MSDF\n\t#include \"msdfVS\"\n#endif\n#include  \"litUserCodeVS\"\n@vertex\nfn vertexMain(input : VertexInput) -> VertexOutput {\n\t#include \"litUserMainStartVS\"\n\tvar output : VertexOutput;\n\toutput.position = getPosition();\n\toutput.vPositionW = getWorldPosition();\n\t#ifdef NORMALS\n\t\toutput.vNormalW = getNormal();\n\t#endif\n\t#ifdef TANGENTS\n\t\toutput.vTangentW = normalize(dNormalMatrix * vertex_tangent.xyz);\n\t\toutput.vBinormalW = cross(output.vNormalW, output.vTangentW) * vertex_tangent.w;\n\t#elif defined(GGX_SPECULAR)\n\t\toutput.vObjectSpaceUpW = normalize(dNormalMatrix * vec3f(0.0, 1.0, 0.0));\n\t#endif\n\t#ifdef UV0\n\t\tvar uv0: vec2f = getUv0();\n\t\t#ifdef UV0_UNMODIFIED\n\t\t\toutput.vUv0 = uv0;\n\t\t#endif\n\t#endif\n\t#ifdef UV1\n\t\tvar uv1: vec2f = getUv1();\n\t\t#ifdef UV1_UNMODIFIED\n\t\t\toutput.vUv1 = uv1;\n\t\t#endif\n\t#endif\n\t#include \"uvTransformVS, UV_TRANSFORMS_COUNT\"\n\t#ifdef VERTEX_COLOR\n\t\toutput.vVertexColor = vertex_color;\n\t#endif\n\t#ifdef LINEAR_DEPTH\n\t\toutput.vLinearDepth = -(uniform.matrix_view * vec4f(output.vPositionW, 1.0)).z;\n\t#endif\n\t#ifdef MSDF\n\t\tunpackMsdfParams();\n\t\toutput.outline_color = dOutlineColor;\n\t\toutput.outline_thickness = dOutlineThickness;\n\t\toutput.shadow_color = dShadowColor;\n\t\toutput.shadow_offset = dShadowOffset;\n\t#endif\n\t#ifdef NINESLICED\n\t\toutput.vMask = dMaskGlobal;\n\t\toutput.vTiledUv = dTiledUvGlobal;\n\t#endif\n\t#include \"litUserMainEndVS\"\n\treturn output;\n}\n`;\n\nvar litOtherMainPS = `\n#ifdef PICK_PASS\n\t#include \"pickPS\"\n#endif\n#ifdef PREPASS_PASS\n\t#include \"floatAsUintPS\"\n#endif\n@fragment\nfn fragmentMain(input: FragmentInput) -> FragmentOutput {\n\t#include \"litUserMainStartPS\"\n\tvar output: FragmentOutput;\n\t\n\tevaluateFrontend();\n\t#ifdef PICK_PASS\n\t\toutput.color = getPickOutput();\n\t#endif\n\t#ifdef PREPASS_PASS\n\t\toutput.color = float2vec4(vLinearDepth);\n\t#endif\n\t#include \"litUserMainEndPS\"\n\treturn output;\n}\n`;\n\nvar litShaderArgsPS = `\nvar<private> litArgs_albedo: vec3f;\nvar<private> litArgs_opacity: f32;\nvar<private> litArgs_emission: vec3f;\nvar<private> litArgs_worldNormal: vec3f;\nvar<private> litArgs_ao: f32;\nvar<private> litArgs_lightmap: vec3f;\nvar<private> litArgs_lightmapDir: vec3f;\nvar<private> litArgs_metalness: f32;\nvar<private> litArgs_specularity: vec3f;\nvar<private> litArgs_specularityFactor: f32;\nvar<private> litArgs_gloss: f32;\nvar<private> litArgs_sheen_gloss: f32;\nvar<private> litArgs_sheen_specularity: vec3f;\nvar<private> litArgs_transmission: f32;\nvar<private> litArgs_thickness: f32;\nvar<private> litArgs_ior: f32;\nvar<private> litArgs_dispersion: f32;\nvar<private> litArgs_iridescence_intensity: f32;\nvar<private> litArgs_iridescence_thickness: f32;\nvar<private> litArgs_clearcoat_worldNormal: vec3f;\nvar<private> litArgs_clearcoat_specularity: f32;\nvar<private> litArgs_clearcoat_gloss: f32;\n`;\n\nvar litShaderCorePS = `\n\t#if LIT_NONE_SLICE_MODE == TILED\n\t\tvar<private> textureBias: f32 = -1000.0;\n\t#else\n\t\tuniform textureBias: f32;\n\t#endif\n\t#include \"litShaderArgsPS\"\n`;\n\nvar litShadowMainPS = `\n#if LIGHT_TYPE != DIRECTIONAL\n\tuniform view_position: vec3f;\n\tuniform light_radius: f32;\n#endif\n#if SHADOW_TYPE == PCSS_32F\n\t#include \"linearizeDepthPS\"\n#endif\n@fragment\nfn fragmentMain(input: FragmentInput) -> FragmentOutput {\n\t#include \"litUserMainStartPS\"\n\tvar output: FragmentOutput;\n\tevaluateFrontend();\n\t#ifdef PERSPECTIVE_DEPTH\n\t\tvar depth: f32 = input.position.z;\n\t\t#if SHADOW_TYPE == PCSS_32F\n\t\t\t#if LIGHT_TYPE != DIRECTIONAL\n\t\t\t\tdepth = linearizeDepthWithParams(depth, camera_params);\n\t\t\t#endif\n\t\t#endif\n\t#else\n\t\tvar depth: f32 = min(distance(uniform.view_position, input.vPositionW) / uniform.light_radius, 0.99999);\n\t\t#define MODIFIED_DEPTH\n\t#endif\n\t#if SHADOW_TYPE == VSM_16F || SHADOW_TYPE == VSM_32F\n\t\t#if SHADOW_TYPE == VSM_32F\n\t\t\tvar exponent: f32 = 15.0;\n\t\t#else\n\t\t\tvar exponent: f32 = 5.54;\n\t\t#endif\n\t\tvar depth_vsm = 2.0 * depth - 1.0;\n\t\tdepth_vsm = exp(exponent * depth_vsm);\n\t\toutput.color = vec4f(depth_vsm, depth_vsm * depth_vsm, 1.0, 1.0);\n\t#else\n\t\t#if SHADOW_TYPE == PCSS_32F\n\t\t\toutput.color = vec4f(depth, 0.0, 0.0, 1.0);\n\t\t#else\n\t\t\t#ifdef MODIFIED_DEPTH\n\t\t\t\toutput.fragDepth = depth;\n\t\t\t#endif\n\t\t\toutput.color = vec4f(1.0);\n\t\t#endif\n\t#endif\n\t#include \"litUserMainEndPS\"\n\t\n\treturn output;\n}\n`;\n\nvar ltcPS = `\nfn LTC_Uv(N: vec3f, V: vec3f, roughness: f32) -> vec2f {\n\tconst LUT_SIZE: f32 = 64.0;\n\tconst LUT_SCALE: f32 = (LUT_SIZE - 1.0) / LUT_SIZE;\n\tconst LUT_BIAS: f32 = 0.5 / LUT_SIZE;\n\tlet dotNV: f32 = saturate(dot( N, V ));\n\tlet uv: vec2f = vec2f( roughness, sqrt( 1.0 - dotNV ) );\n\treturn uv * LUT_SCALE + LUT_BIAS;\n}\nfn LTC_ClippedSphereFormFactor( f: vec3f ) -> f32 {\n\tlet l: f32 = length( f );\n\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\n}\nfn LTC_EdgeVectorFormFactor( v1: vec3f, v2: vec3f ) -> vec3f {\n\tlet x: f32 = dot( v1, v2 );\n\tlet y: f32 = abs( x );\n\tlet a: f32 = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\n\tlet b: f32 = 3.4175940 + ( 4.1616724 + y ) * y;\n\tlet v: f32 = a / b;\n\tlet inv_sqrt_term = inverseSqrt( max( 1.0 - x * x, 1e-7f ) );\n\tlet theta_sintheta: f32 = select( (0.5 * inv_sqrt_term - v), v, x > 0.0 );\n\treturn cross( v1, v2 ) * theta_sintheta;\n}\nstruct Coords {\n\tcoord0: vec3f,\n\tcoord1: vec3f,\n\tcoord2: vec3f,\n\tcoord3: vec3f,\n}\nfn LTC_EvaluateRect( N: vec3f, V: vec3f, P: vec3f, mInv: mat3x3f, rectCoords: Coords) -> f32 {\n\tlet v1: vec3f = rectCoords.coord1 - rectCoords.coord0;\n\tlet v2: vec3f = rectCoords.coord3 - rectCoords.coord0;\n\tlet lightNormal: vec3f = cross( v1, v2 );\n\tlet factor: f32 = sign(-dot( lightNormal, P - rectCoords.coord0 ));\n\tlet T1: vec3f = normalize( V - N * dot( V, N ) );\n\tlet T2: vec3f = factor * cross( N, T1 );\n\tlet mat: mat3x3f = mInv * transpose( mat3x3f( T1, T2, N ) );\n\tvar coords: array<vec3f, 4>;\n\tcoords[0] = mat * ( rectCoords.coord0 - P );\n\tcoords[1] = mat * ( rectCoords.coord1 - P );\n\tcoords[2] = mat * ( rectCoords.coord2 - P );\n\tcoords[3] = mat * ( rectCoords.coord3 - P );\n\tcoords[0] = normalize( coords[0] );\n\tcoords[1] = normalize( coords[1] );\n\tcoords[2] = normalize( coords[2] );\n\tcoords[3] = normalize( coords[3] );\n\tvar vectorFormFactor: vec3f = vec3f( 0.0 );\n\tvectorFormFactor = vectorFormFactor + LTC_EdgeVectorFormFactor( coords[0], coords[1] );\n\tvectorFormFactor = vectorFormFactor + LTC_EdgeVectorFormFactor( coords[1], coords[2] );\n\tvectorFormFactor = vectorFormFactor + LTC_EdgeVectorFormFactor( coords[2], coords[3] );\n\tvectorFormFactor = vectorFormFactor + LTC_EdgeVectorFormFactor( coords[3], coords[0] );\n\tlet result: f32 = LTC_ClippedSphereFormFactor( vectorFormFactor );\n\treturn result;\n}\nvar<private> dLTCCoords: Coords;\nfn getLTCLightCoords(lightPos: vec3f, halfWidth: vec3f, halfHeight: vec3f) -> Coords {\n\tvar coords: Coords;\n\tcoords.coord0 = lightPos + halfWidth - halfHeight;\n\tcoords.coord1 = lightPos - halfWidth - halfHeight;\n\tcoords.coord2 = lightPos - halfWidth + halfHeight;\n\tcoords.coord3 = lightPos + halfWidth + halfHeight;\n\treturn coords;\n}\nvar<private> dSphereRadius: f32;\nfn getSphereLightCoords(lightPos: vec3f, halfWidth: vec3f, halfHeight: vec3f) -> Coords {\n\tdSphereRadius = max(length(halfWidth), length(halfHeight));\n\tlet f: vec3f = reflect(normalize(lightPos - uniform.view_position), vNormalW);\n\tlet w: vec3f = normalize(cross(f, halfHeight));\n\tlet h: vec3f = normalize(cross(f, w));\n\treturn getLTCLightCoords(lightPos, w * dSphereRadius, h * dSphereRadius);\n}\nvar<private> dLTCUV: vec2f;\n#ifdef LIT_CLEARCOAT\n\tvar<private> ccLTCUV: vec2f;\n#endif\nfn getLTCLightUV(gloss: f32, worldNormal: vec3f, viewDir: vec3f) -> vec2f {\n\tlet roughness: f32 = max((1.0 - gloss) * (1.0 - gloss), 0.001);\n\treturn LTC_Uv( worldNormal, viewDir, roughness );\n}\nvar<private> dLTCSpecFres: vec3f;\n#ifdef LIT_CLEARCOAT\n\tvar<private> ccLTCSpecFres: vec3f;\n#endif\nfn getLTCLightSpecFres(uv: vec2f, specularity: vec3f) -> vec3f {\n\tlet t2: vec4f = textureSampleLevel(areaLightsLutTex2, areaLightsLutTex2Sampler, uv, 0.0);\n\treturn specularity * t2.x + ( vec3f( 1.0 ) - specularity) * t2.y;\n}\nfn calcLTCLightValues(gloss: f32, worldNormal: vec3f, viewDir: vec3f, specularity: vec3f, clearcoatGloss: f32, clearcoatWorldNormal: vec3f, clearcoatSpecularity: f32) {\n\tdLTCUV = getLTCLightUV(gloss, worldNormal, viewDir);\n\tdLTCSpecFres = getLTCLightSpecFres(dLTCUV, specularity);\n\t#ifdef LIT_CLEARCOAT\n\t\tccLTCUV = getLTCLightUV(clearcoatGloss, clearcoatWorldNormal, viewDir);\n\t\tccLTCSpecFres = getLTCLightSpecFres(ccLTCUV, vec3f(clearcoatSpecularity));\n\t#endif\n}\nfn calcRectLightValues(lightPos: vec3f, halfWidth: vec3f, halfHeight: vec3f) {\n\tdLTCCoords = getLTCLightCoords(lightPos, halfWidth, halfHeight);\n}\nfn calcDiskLightValues(lightPos: vec3f, halfWidth: vec3f, halfHeight: vec3f) {\n\tcalcRectLightValues(lightPos, halfWidth, halfHeight);\n}\nfn calcSphereLightValues(lightPos: vec3f, halfWidth: vec3f, halfHeight: vec3f) {\n\tdLTCCoords = getSphereLightCoords(lightPos, halfWidth, halfHeight);\n}\nfn SolveCubic(Coefficient_in: vec4f) -> vec3f {\n\tlet pi: f32 = 3.14159;\n\tvar Coefficient = Coefficient_in;\n\tCoefficient = vec4f(Coefficient.xyz / Coefficient.w, Coefficient.w);\n\tlet new_yz: vec2f = Coefficient.yz / 3.0;\n\tCoefficient = vec4f(Coefficient.x, new_yz.x, new_yz.y, Coefficient.w);\n\t\n\tlet A: f32 = Coefficient.w;\n\tlet B: f32 = Coefficient.z;\n\tlet C: f32 = Coefficient.y;\n\tlet D: f32 = Coefficient.x;\n\tlet Delta: vec3f = vec3f(\n\t\t-Coefficient.z * Coefficient.z + Coefficient.y,\n\t\t-Coefficient.y * Coefficient.z + Coefficient.x,\n\t\tdot(vec2f(Coefficient.z, -Coefficient.y), Coefficient.xy)\n\t);\n\tlet Discriminant: f32 = dot(vec2f(4.0 * Delta.x, -Delta.y), Delta.zy);\n\tvar xlc: vec2f;\n\tvar xsc: vec2f;\n\t{\n\t\tlet A_a: f32 = 1.0;\n\t\tlet C_a: f32 = Delta.x;\n\t\tlet D_a: f32 = -2.0 * B * Delta.x + Delta.y;\n\t\tlet Theta: f32 = atan2(sqrt(Discriminant), -D_a) / 3.0;\n\t\tlet sqrt_neg_Ca = sqrt(-C_a);\n\t\tlet x_1a: f32 = 2.0 * sqrt_neg_Ca * cos(Theta);\n\t\tlet x_3a: f32 = 2.0 * sqrt_neg_Ca * cos(Theta + (2.0 / 3.0) * pi);\n\t\tlet xl: f32 = select(x_3a, x_1a, (x_1a + x_3a) > 2.0 * B);\n\t\txlc = vec2f(xl - B, A);\n\t}\n\t{\n\t\tlet A_d: f32 = D;\n\t\tlet C_d: f32 = Delta.z;\n\t\tlet D_d: f32 = -D * Delta.y + 2.0 * C * Delta.z;\n\t\tlet Theta: f32 = atan2(D * sqrt(Discriminant), -D_d) / 3.0;\n\t\tlet sqrt_neg_Cd = sqrt(-C_d);\n\t\tlet x_1d: f32 = 2.0 * sqrt_neg_Cd * cos(Theta);\n\t\tlet x_3d: f32 = 2.0 * sqrt_neg_Cd * cos(Theta + (2.0 / 3.0) * pi);\n\t\tlet xs: f32 = select(x_3d, x_1d, x_1d + x_3d < 2.0 * C);\n\t\txsc = vec2f(-D, xs + C);\n\t}\n\tlet E: f32 =  xlc.y * xsc.y;\n\tlet F: f32 = -xlc.x * xsc.y - xlc.y * xsc.x;\n\tlet G: f32 =  xlc.x * xsc.x;\n\tlet xmc: vec2f = vec2f(C * F - B * G, -B * F + C * E);\n\tvar Root: vec3f = vec3f(xsc.x / xsc.y, xmc.x / xmc.y, xlc.x / xlc.y);\n\tif (Root.x < Root.y && Root.x < Root.z) {\n\t\tRoot = Root.yxz;\n\t} else if (Root.z < Root.x && Root.z < Root.y) {\n\t\tRoot = Root.xzy;\n\t}\n\treturn Root;\n}\nfn LTC_EvaluateDisk(N: vec3f, V: vec3f, P: vec3f, Minv: mat3x3f, points: Coords) -> f32 {\n\tlet T1: vec3f = normalize(V - N * dot(V, N));\n\tlet T2: vec3f = cross(N, T1);\n\tlet R: mat3x3f = transpose( mat3x3f( T1, T2, N ) );\n\tvar L_: array<vec3f, 3>;\n\tL_[0] = R * ( points.coord0 - P );\n\tL_[1] = R * ( points.coord1 - P );\n\tL_[2] = R * ( points.coord2 - P );\n\tlet C: vec3f  = 0.5 * (L_[0] + L_[2]);\n\tvar V1: vec3f = 0.5 * (L_[1] - L_[2]);\n\tvar V2: vec3f = 0.5 * (L_[1] - L_[0]);\n\tlet C_Minv: vec3f  = Minv * C;\n\tlet V1_Minv: vec3f = Minv * V1;\n\tlet V2_Minv: vec3f = Minv * V2;\n\tvar a: f32;\n\tvar b: f32;\n\tlet d11: f32 = dot(V1_Minv, V1_Minv);\n\tlet d22: f32 = dot(V2_Minv, V2_Minv);\n\tlet d12: f32 = dot(V1_Minv, V2_Minv);\n\tif (abs(d12) / sqrt(d11 * d22) > 0.0001) {\n\t\tlet tr: f32 = d11 + d22;\n\t\tlet det_inner: f32 = -d12 * d12 + d11 * d22;\n\t\tlet det: f32 = sqrt(det_inner);\n\t\tlet u: f32 = 0.5 * sqrt(tr - 2.0 * det);\n\t\tlet v: f32 = 0.5 * sqrt(tr + 2.0 * det);\n\t\tlet e_max: f32 = (u + v) * (u + v);\n\t\tlet e_min: f32 = (u - v) * (u - v);\n\t\tvar V1_: vec3f;\n\t\tvar V2_: vec3f;\n\t\tif (d11 > d22) {\n\t\t\tV1_ = d12 * V1_Minv + (e_max - d11) * V2_Minv;\n\t\t\tV2_ = d12 * V1_Minv + (e_min - d11) * V2_Minv;\n\t\t} else {\n\t\t\tV1_ = d12*V2_Minv + (e_max - d22)*V1_Minv;\n\t\t\tV2_ = d12*V2_Minv + (e_min - d22)*V1_Minv;\n\t\t}\n\t\ta = 1.0 / e_max;\n\t\tb = 1.0 / e_min;\n\t\tV1 = normalize(V1_);\n\t\tV2 = normalize(V2_);\n\t} else {\n\t\ta = 1.0 / dot(V1_Minv, V1_Minv);\n\t\tb = 1.0 / dot(V2_Minv, V2_Minv);\n\t\tV1 = V1_Minv * sqrt(a);\n\t\tV2 = V2_Minv * sqrt(b);\n\t}\n\tvar V3: vec3f = normalize(cross(V1, V2));\n\tif (dot(C_Minv, V3) < 0.0) {\n\t\tV3 = V3 * -1.0;\n\t}\n\tlet L: f32  = dot(V3, C_Minv);\n\tlet x0: f32 = dot(V1, C_Minv) / L;\n\tlet y0: f32 = dot(V2, C_Minv) / L;\n\tlet E1: f32 = inverseSqrt(a);\n\tlet E2: f32 = inverseSqrt(b);\n\tlet a_scaled = a * L * L;\n\tlet b_scaled = b * L * L;\n\tlet c0: f32 = a_scaled * b_scaled;\n\tlet c1: f32 = a_scaled * b_scaled * (1.0 + x0 * x0 + y0 * y0) - a_scaled - b_scaled;\n\tlet c2: f32 = 1.0 - a_scaled * (1.0 + x0 * x0) - b_scaled * (1.0 + y0 * y0);\n\tlet c3: f32 = 1.0;\n\tlet roots: vec3f = SolveCubic(vec4f(c0, c1, c2, c3));\n\tlet e1: f32 = roots.x;\n\tlet e2: f32 = roots.y;\n\tlet e3: f32 = roots.z;\n\tvar avgDir: vec3f = vec3f(a_scaled * x0 / (a_scaled - e2), b_scaled * y0 / (b_scaled - e2), 1.0);\n\tlet rotate: mat3x3f = mat3x3f(V1, V2, V3);\n\tavgDir = rotate * avgDir;\n\tavgDir = normalize(avgDir);\n\tlet L1: f32 = sqrt(-e2 / e3);\n\tlet L2: f32 = sqrt(-e2 / e1);\n\tlet formFactor: f32 = max(0.0, L1 * L2 * inverseSqrt((1.0 + L1 * L1) * (1.0 + L2 * L2)));\n\tconst LUT_SIZE_disk: f32 = 64.0;\n\tconst LUT_SCALE_disk: f32 = ( LUT_SIZE_disk - 1.0 ) / LUT_SIZE_disk;\n\tconst LUT_BIAS_disk: f32 = 0.5 / LUT_SIZE_disk;\n\tvar uv: vec2f = vec2f(avgDir.z * 0.5 + 0.5, formFactor);\n\tuv = uv * LUT_SCALE_disk + LUT_BIAS_disk;\n\tlet scale: f32 = textureSampleLevel(areaLightsLutTex2, areaLightsLutTex2Sampler, uv, 0.0).w;\n\treturn formFactor * scale;\n}\nfn FixNan(value: f32) -> f32 {\n\treturn select(value, 0.0, value != value);\n}\nfn getRectLightDiffuse(worldNormal: vec3f, viewDir: vec3f, lightDir: vec3f, lightDirNorm: vec3f) -> f32 {\n\tlet identityMat = mat3x3f(vec3f(1.0, 0.0, 0.0), vec3f(0.0, 1.0, 0.0), vec3f(0.0, 0.0, 1.0));\n\treturn LTC_EvaluateRect( worldNormal, viewDir, vPositionW, identityMat, dLTCCoords );\n}\nfn getDiskLightDiffuse(worldNormal: vec3f, viewDir: vec3f, lightDir: vec3f, lightDirNorm: vec3f) -> f32 {\n\tlet identityMat = mat3x3f(vec3f(1.0, 0.0, 0.0), vec3f(0.0, 1.0, 0.0), vec3f(0.0, 0.0, 1.0));\n\treturn FixNan(LTC_EvaluateDisk( worldNormal, viewDir, vPositionW, identityMat, dLTCCoords ));\n}\nfn getSphereLightDiffuse(worldNormal: vec3f, viewDir: vec3f, lightDir: vec3f, lightDirNorm: vec3f) -> f32 {\n\tlet falloff: f32 = dSphereRadius / (dot(lightDir, lightDir) + dSphereRadius);\n\treturn FixNan(getLightDiffuse(worldNormal, viewDir, lightDirNorm) * falloff);\n}\nfn getLTCLightInvMat(uv: vec2f) -> mat3x3f {\n\tlet t1: vec4f = textureSampleLevel(areaLightsLutTex1, areaLightsLutTex1Sampler, uv, 0.0);\n\treturn mat3x3f(\n\t\tvec3f( t1.x, 0.0, t1.y ),\n\t\tvec3f( 0.0, 1.0, 0.0 ),\n\t\tvec3f( t1.z, 0.0, t1.w )\n\t);\n}\nfn calcRectLightSpecular(worldNormal: vec3f, viewDir: vec3f, uv: vec2f) -> f32 {\n\tlet mInv: mat3x3f = getLTCLightInvMat(uv);\n\treturn LTC_EvaluateRect( worldNormal, viewDir, vPositionW, mInv, dLTCCoords );\n}\nfn getRectLightSpecular(worldNormal: vec3f, viewDir: vec3f) -> f32 {\n\treturn calcRectLightSpecular(worldNormal, viewDir, dLTCUV);\n}\nfn calcDiskLightSpecular(worldNormal: vec3f, viewDir: vec3f, uv: vec2f) -> f32 {\n\tlet mInv: mat3x3f = getLTCLightInvMat(uv);\n\treturn LTC_EvaluateDisk( worldNormal, viewDir, vPositionW, mInv, dLTCCoords );\n}\nfn getDiskLightSpecular(worldNormal: vec3f, viewDir: vec3f) -> f32 {\n\treturn calcDiskLightSpecular(worldNormal, viewDir, dLTCUV);\n}\nfn getSphereLightSpecular(worldNormal: vec3f, viewDir: vec3f) -> f32 {\n\treturn calcDiskLightSpecular(worldNormal, viewDir, dLTCUV);\n}\n`;\n\nvar metalnessPS = `\n#ifdef STD_METALNESS_CONSTANT\nuniform material_metalness: f32;\n#endif\nfn getMetalness() {\n\tvar metalness: f32 = 1.0;\n\t#ifdef STD_METALNESS_CONSTANT\n\t\tmetalness = metalness * uniform.material_metalness;\n\t#endif\n\t#ifdef STD_METALNESS_TEXTURE\n\t\tmetalness = metalness * textureSampleBias({STD_METALNESS_TEXTURE_NAME}, {STD_METALNESS_TEXTURE_NAME}Sampler, {STD_METALNESS_TEXTURE_UV}, uniform.textureBias).{STD_METALNESS_TEXTURE_CHANNEL};\n\t#endif\n\t#ifdef STD_METALNESS_VERTEX\n\tmetalness = metalness * saturate(vVertexColor.{STD_METALNESS_VERTEX_CHANNEL});\n\t#endif\n\tdMetalness = metalness;\n}\n`;\n\nvar msdfPS = `\nvar texture_msdfMap: texture_2d<f32>;\nvar texture_msdfMapSampler: sampler;\nfn median(r: f32, g: f32, b: f32) -> f32 {\n\treturn max(min(r, g), min(max(r, g), b));\n}\nfn map(min: f32, max: f32, v: f32) -> f32 {\n\treturn (v - min) / (max - min);\n}\nuniform font_sdfIntensity: f32;\nuniform font_pxrange: f32;\nuniform font_textureWidth: f32;\n#ifndef LIT_MSDF_TEXT_ATTRIBUTE\n\tuniform outline_color: vec4f;\n\tuniform outline_thickness: f32;\n\tuniform shadow_color: vec4f;\n\tuniform shadow_offset: vec2f;\n#else\n\tvarying outline_color: vec4f;\n\tvarying outline_thickness: f32;\n\tvarying shadow_color: vec4f;\n\tvarying shadow_offset: vec2f;\n#endif\nfn applyMsdf(color_in: vec4f) -> vec4f {\n\t#ifndef LIT_MSDF_TEXT_ATTRIBUTE\n\t\tvar outline_colorValue = uniform.outline_color;\n\t\tvar outline_thicknessValue = uniform.outline_thickness;\n\t\tvar shadow_colorValue = uniform.shadow_color;\n\t\tvar shadow_offsetValue = uniform.shadow_offset;\n\t#else\n\t\tvar outline_colorValue = outline_color;\n\t\tvar outline_thicknessValue = outline_thickness;\n\t\tvar shadow_colorValue = shadow_color;\n\t\tvar shadow_offsetValue = shadow_offset;\n\t#endif\n\tvar color = vec4f(gammaCorrectInputVec3(color_in.rgb), color_in.a);\n\tlet tsample: vec3f = textureSample(texture_msdfMap, texture_msdfMapSampler, vUv0).rgb;\n\tlet uvShdw: vec2f = vUv0 - shadow_offsetValue;\n\tlet ssample: vec3f = textureSample(texture_msdfMap, texture_msdfMapSampler, uvShdw).rgb;\n\tlet sigDist: f32 = median(tsample.r, tsample.g, tsample.b);\n\tvar sigDistShdw: f32 = median(ssample.r, ssample.g, ssample.b);\n\tlet smoothingMax: f32 = 0.2;\n\tlet w: vec2f = abs(dpdx(vUv0)) + abs(dpdy(vUv0));\n\tlet smoothing: f32 = clamp(w.x * uniform.font_textureWidth / uniform.font_pxrange, 0.0, smoothingMax);\n\tlet mapMin: f32 = 0.05;\n\tlet mapMax: f32 = clamp(1.0 - uniform.font_sdfIntensity, mapMin, 1.0);\n\tlet sigDistInner: f32 = map(mapMin, mapMax, sigDist);\n\tlet sigDistOutline: f32 = map(mapMin, mapMax, sigDist + outline_thicknessValue);\n\tsigDistShdw = map(mapMin, mapMax, sigDistShdw + outline_thicknessValue);\n\tlet center: f32 = 0.5;\n\tlet inside: f32 = smoothstep(center - smoothing, center + smoothing, sigDistInner);\n\tlet outline: f32 = smoothstep(center - smoothing, center + smoothing, sigDistOutline);\n\tlet shadow: f32 = smoothstep(center - smoothing, center + smoothing, sigDistShdw);\n\tlet tcolor_outline: vec4f = outline * vec4f(outline_colorValue.a * outline_colorValue.rgb, outline_colorValue.a);\n\tvar tcolor: vec4f = select(vec4f(0.0), tcolor_outline, outline > inside);\n\ttcolor = mix(tcolor, color, inside);\n\tlet scolor_shadow: vec4f = shadow * vec4f(shadow_colorValue.a * shadow_colorValue.rgb, shadow_colorValue.a);\n\tlet scolor: vec4f = select(tcolor, scolor_shadow, shadow > outline);\n\ttcolor = mix(scolor, tcolor, outline);\n\ttcolor = vec4f(gammaCorrectOutput(tcolor.rgb), tcolor.a);\n\treturn tcolor;\n}\n`;\n\nvar metalnessModulatePS = `\nfn getSpecularModulate(specularity: vec3f, albedo: vec3f, metalness: f32, f0: f32) -> vec3f {\n\tlet dielectricF0: vec3f = f0 * specularity;\n\treturn mix(dielectricF0, albedo, metalness);\n}\nfn getAlbedoModulate(albedo: vec3f, metalness: f32) -> vec3f {\n\treturn albedo * (1.0 - metalness);\n}\n`;\n\nvar morphPS = `\n\tvarying uv0: vec2f;\n\tvar morphTexture: texture_2d_array<f32>;\n\tuniform morphFactor: array<f32, {MORPH_TEXTURE_MAX_COUNT}>;\n\tuniform morphIndex: array<u32, {MORPH_TEXTURE_MAX_COUNT}>;\n\tuniform count: u32;\n\t@fragment\n\tfn fragmentMain(input : FragmentInput) -> FragmentOutput {\n\t\tvar color = vec3f(0, 0, 0);\n\t\tlet textureDims = textureDimensions(morphTexture);\n\t\tlet pixelCoords = vec2i(input.uv0 * vec2f(textureDims));\n\t\t\n\t\tfor (var i: u32 = 0; i < uniform.count; i = i + 1) {\n\t\t\tvar textureIndex: u32 = uniform.morphIndex[i].element;\n\t\t\tvar delta = textureLoad(morphTexture, pixelCoords, textureIndex, 0).xyz;\n\t\t\tcolor += uniform.morphFactor[i].element * delta;\n\t\t}\n\t\tvar output: FragmentOutput;\n\t\toutput.color = vec4f(color, 1.0);\n\t\treturn output;\n\t}\n`;\n\nvar morphVS = `\n\tattribute vertex_position: vec2f;\n\tvarying uv0: vec2f;\n\t@vertex\n\tfn vertexMain(input: VertexInput) -> VertexOutput {\n\t\tvar output: VertexOutput;\n\t\toutput.position = vec4f(input.vertex_position, 0.5, 1.0);\n\t\toutput.uv0 = input.vertex_position * 0.5 + vec2f(0.5, 0.5);\n\t\treturn output;\n\t}\n`;\n\nvar msdfVS = `\nattribute vertex_outlineParameters: vec3f;\nattribute vertex_shadowParameters: vec3f;\nvarying outline_color: vec4f;\nvarying outline_thickness: f32;\nvarying shadow_color: vec4f;\nvarying shadow_offset: vec2f;\nvar<private> dOutlineColor: vec4f;\nvar<private> dOutlineThickness: f32;\nvar<private> dShadowColor: vec4f;\nvar<private> dShadowOffset: vec2f;\nfn unpackMsdfParams() {\n\tlet little: vec3f = vertex_outlineParameters % vec3f(256.0);\n\tlet big: vec3f = (vertex_outlineParameters - little) / 256.0;\n\tdOutlineColor = vec4f(little.x, big.x, little.y, big.y) / 255.0;\n\tdOutlineThickness = little.z / 255.0 * 0.2;\n\tlet little_shadow = vertex_shadowParameters % vec3f(256.0);\n\tlet big_shadow = (vertex_shadowParameters - little_shadow) / 256.0;\n\tdShadowColor = vec4f(little_shadow.x, big_shadow.x, little_shadow.y, big_shadow.y) / 255.0;\n\tdShadowOffset = (vec2f(little_shadow.z, big_shadow.z) / 127.0 - 1.0) * 0.005;\n}\n`;\n\nvar normalVS = `\nvar<private> dNormalMatrix: mat3x3f;\nfn getNormal() -> vec3f {\n\tdNormalMatrix = getNormalMatrix(dModelMatrix);\n\tlet localNormal: vec3f = getLocalNormal(vertex_normal);\n\treturn normalize(dNormalMatrix * localNormal);\n}`;\n\nvar normalCoreVS = `\nattribute vertex_normal: vec3f;\nuniform matrix_normal: mat3x3f;\n#ifdef MORPHING_NORMAL\n\t#ifdef MORPHING_INT\n\t\tvar morphNormalTex: texture_2d<u32>;\n\t\tvar morphNormalTexSampler: sampler;\n\t#else\n\t\tvar morphNormalTex: texture_2d<f32>;\n\t\tvar morphNormalTexSampler: sampler;\n\t#endif\n#endif\nfn getLocalNormal(vertexNormal: vec3f) -> vec3f {\n\tvar localNormal: vec3f = vertexNormal;\n\t#ifdef MORPHING_NORMAL\n\t\tlet morphUV: vec2i = getTextureMorphCoords();\n\t\t#ifdef MORPHING_INT\n\t\t\tlet morphNormalInt: vec4u = textureLoad(morphNormalTex, morphUV, 0);\n\t\t\tlet morphNormalF: vec3f = vec3f(morphNormalInt.xyz) / 65535.0 * 2.0 - 1.0;\n\t\t\tlocalNormal = localNormal + morphNormalF;\n\t\t#else\n\t\t\tlet morphNormal: vec3f = textureLoad(morphNormalTex, morphUV, 0).xyz;\n\t\t\tlocalNormal = localNormal + morphNormal;\n\t\t#endif\n\t#endif\n\treturn localNormal;\n}\n#if defined(SKIN) || defined(BATCH)\n\tfn getNormalMatrix(modelMatrix: mat4x4f) -> mat3x3f {\n\t\treturn mat3x3f(modelMatrix[0].xyz, modelMatrix[1].xyz, modelMatrix[2].xyz);\n\t}\n#elif defined(INSTANCING)\n\tfn getNormalMatrix(modelMatrix: mat4x4f) -> mat3x3f {\n\t\treturn mat3x3f(modelMatrix[0].xyz, modelMatrix[1].xyz, modelMatrix[2].xyz);\n\t}\n#else\n\tfn getNormalMatrix(modelMatrix: mat4x4f) -> mat3x3f {\n\t\treturn uniform.matrix_normal;\n\t}\n#endif\n`;\n\nvar normalMapPS = `\n#ifdef STD_NORMAL_TEXTURE\n\tuniform material_bumpiness: f32;\n#endif\n#ifdef STD_NORMALDETAIL_TEXTURE\n\tuniform material_normalDetailMapBumpiness: f32;\n\tfn blendNormals(inN1: vec3f, inN2: vec3f) -> vec3f {\n\t\tlet n1: vec3f = inN1 + vec3f(0.0, 0.0, 1.0);\n\t\tlet n2: vec3f = inN2 * vec3f(-1.0, -1.0, 1.0);\n\t\treturn n1 * dot(n1, n2) / n1.z - n2;\n\t}\n#endif\nfn getNormal() {\n#ifdef STD_NORMAL_TEXTURE\n\tvar normalMap: vec3f = {STD_NORMAL_TEXTURE_DECODE}(textureSampleBias({STD_NORMAL_TEXTURE_NAME}, {STD_NORMAL_TEXTURE_NAME}Sampler, {STD_NORMAL_TEXTURE_UV}, uniform.textureBias));\n\tnormalMap = mix(vec3f(0.0, 0.0, 1.0), normalMap, uniform.material_bumpiness);\n\t#ifdef STD_NORMALDETAIL_TEXTURE\n\t\tvar normalDetailMap: vec3f = {STD_NORMALDETAIL_TEXTURE_DECODE}(textureSampleBias({STD_NORMALDETAIL_TEXTURE_NAME}, {STD_NORMALDETAIL_TEXTURE_NAME}Sampler, {STD_NORMALDETAIL_TEXTURE_UV}, uniform.textureBias));\n\t\tnormalDetailMap = mix(vec3f(0.0, 0.0, 1.0), normalDetailMap, uniform.material_normalDetailMapBumpiness);\n\t\tnormalMap = blendNormals(normalMap, normalDetailMap);\n\t#endif\n\tdNormalW = normalize(dTBN * normalMap);\n#else\n\tdNormalW = dVertexNormalW;\n#endif\n}\n`;\n\nvar opacityPS = `\nuniform material_opacity: f32;\nfn getOpacity() {\n\tdAlpha = uniform.material_opacity;\n\t#ifdef STD_OPACITY_TEXTURE\n\tdAlpha = dAlpha * textureSampleBias({STD_OPACITY_TEXTURE_NAME}, {STD_OPACITY_TEXTURE_NAME}Sampler, {STD_OPACITY_TEXTURE_UV}, uniform.textureBias).{STD_OPACITY_TEXTURE_CHANNEL};\n\t#endif\n\t#ifdef STD_OPACITY_VERTEX\n\tdAlpha = dAlpha * clamp(vVertexColor.{STD_OPACITY_VERTEX_CHANNEL}, 0.0, 1.0);\n\t#endif\n}\n`;\n\nvar opacityDitherPS = `\n#if STD_OPACITY_DITHER == BAYER8\n\t#include \"bayerPS\"\n#endif\nuniform blueNoiseJitter: vec4f;\n#if STD_OPACITY_DITHER == BLUENOISE\n\tvar blueNoiseTex32 : texture_2d<f32>;\n\tvar blueNoiseTex32Sampler : sampler;\n#endif\nfn opacityDither(alpha: f32, id: f32) {\n\t#if STD_OPACITY_DITHER == BAYER8\n\t\tvar noise: f32 = bayer8(floor((pcPosition.xy + uniform.blueNoiseJitter.xy + id) % vec2f(8.0))) / 64.0;\n\t#else\n\t\t#if STD_OPACITY_DITHER == BLUENOISE\n\t\t\tvar uv = fract(pcPosition.xy / 32.0 + uniform.blueNoiseJitter.xy + id);\n\t\t\tvar noise: f32 = textureSampleLevel(blueNoiseTex32, blueNoiseTex32Sampler, uv, 0.0).y;\n\t\t#endif\n\t\t#if STD_OPACITY_DITHER == IGNNOISE\n\t\t\tvar magic = vec3f(0.06711056, 0.00583715, 52.9829189);\n\t\t\tvar noise: f32 = fract(magic.z * fract(dot(pcPosition.xy + uniform.blueNoiseJitter.xy + id, magic.xy)));\n\t\t#endif\n\t#endif\n\tnoise = pow(noise, 2.2);\n\tif (alpha < noise) {\n\t\tdiscard;\n\t}\n}\n`;\n\nvar outputPS = `\n`;\n\nvar outputAlphaPS = `\n#if LIT_BLEND_TYPE == NORMAL || LIT_BLEND_TYPE == ADDITIVEALPHA || defined(LIT_ALPHA_TO_COVERAGE)\n\toutput.color = vec4f(output.color.rgb, litArgs_opacity);\n#elif LIT_BLEND_TYPE == PREMULTIPLIED\n\toutput.color = vec4f(output.color.rgb * litArgs_opacity, litArgs_opacity);\n#else\n\toutput.color = vec4f(output.color.rgb, 1.0);\n#endif\n`;\n\nvar packHalfPS = `\n#if defined(PLATFORM_ANDROID)\n\tfn floatToHalf(a: f32) -> u32 {\n\t\tlet u: u32\t= bitcast<u32>(a);\n\t\tlet sign: u32 = (u >> 16u) & 0x8000u;\n\t\tlet absu: u32 = u & 0x7FFFFFFFu;\n\t\tlet man: u32  = u & 0x007FFFFFu;\n\t\tlet e32: i32  = i32((u >> 23u) & 0xFFu) - 127;\n\t\t\n\t\tif ((absu & 0x7F800000u) == 0x7F800000u) {\n\t\t\tlet isnan = (man != 0u);\n\t\t\treturn sign | select(0x7C00u, 0x7E00u, isnan);\n\t\t}\n\t\t\n\t\tif (e32 > 15) { return sign | 0x7C00u; }\n\t\t\n\t\tif (e32 >= -14) {\n\t\t\tvar he: u32 = u32(e32 + 15);\n\t\t\tvar hm: u32 = man >> 13u;\n\t\t\tlet rem: u32 = man & 0x1FFFu;\n\t\t\tlet add: u32 = select(0u, 1u, (rem > 0x1000u) || (rem == 0x1000u && (hm & 1u) == 1u));\n\t\t\thm = (hm + add) & 0x3FFu;\n\t\t\tif ((hm & 0x400u) != 0u) {\n\t\t\t\thm = 0u; he = he + 1u;\n\t\t\t\tif (he >= 31u) { return sign | 0x7C00u; }\n\t\t\t}\n\t\t\treturn sign | (he << 10u) | hm;\n\t\t}\n\t\t\n\t\tif (e32 >= -24) {\n\t\t\tlet s: u32\t  = u32(-(e32 + 1));\n\t\t\tlet mnorm: u32  = 0x00800000u | man;\n\t\t\tvar hm: u32\t = mnorm >> s;\n\t\t\tlet mask: u32   = (1u << s) - 1u;\n\t\t\tlet rem: u32\t= mnorm & mask;\n\t\t\tlet halfBt: u32 = 1u << (s - 1u);\n\t\t\tlet add: u32\t= select(0u, 1u, (rem > halfBt) || (rem == halfBt && (hm & 1u) == 1u));\n\t\t\thm = hm + add;\n\t\t\tif (hm >= 0x400u) { return sign | (1u << 10u); }\n\t\t\treturn sign | hm;\n\t\t}\n\t\t\n\t\treturn sign;\n\t}\n\tfn pack2x16floatSafe(v: vec2f) -> u32 {\n\t\tlet u_x: u32  = bitcast<u32>(v.x);\n\t\tlet u_y: u32  = bitcast<u32>(v.y);\n\t\t\n\t\tlet e32_x: i32 = i32((u_x >> 23u) & 0xFFu) - 127;\n\t\tlet e32_y: i32 = i32((u_y >> 23u) & 0xFFu) - 127;\n\t\t\n\t\tif (e32_x < -14 || e32_y < -14) {\n\t\t\treturn (floatToHalf(v.y) << 16u) | floatToHalf(v.x);\n\t\t}\n\t\t\n\t\treturn pack2x16float(v);\n\t}\n#else\n\tfn pack2x16floatSafe(v: vec2f) -> u32 {\n\t\treturn pack2x16float(v);\n\t}\n#endif\n`;\n\nvar outputTex2DPS = `\nvarying vUv0: vec2f;\nvar source: texture_2d<f32>;\nvar sourceSampler: sampler;\n@fragment fn fragmentMain(input : FragmentInput) -> FragmentOutput {\n\tvar output: FragmentOutput;\n\toutput.color = textureSample(source, sourceSampler, input.vUv0);\n\treturn output;\n}\n`;\n\nvar sheenPS = `\nuniform material_sheen: vec3f;\nfn getSheen() {\n\tvar sheenColor = uniform.material_sheen;\n\t#ifdef STD_SHEEN_TEXTURE\n\tsheenColor = sheenColor * {STD_SHEEN_TEXTURE_DECODE}(textureSampleBias({STD_SHEEN_TEXTURE_NAME}, {STD_SHEEN_TEXTURE_NAME}Sampler, {STD_SHEEN_TEXTURE_UV}, uniform.textureBias)).{STD_SHEEN_TEXTURE_CHANNEL};\n\t#endif\n\t#ifdef STD_SHEEN_VERTEX\n\tsheenColor = sheenColor * saturate3(vVertexColor.{STD_SHEEN_VERTEX_CHANNEL});\n\t#endif\n\tsSpecularity = sheenColor;\n}\n`;\n\nvar sheenGlossPS = `\nuniform material_sheenGloss: f32;\nfn getSheenGlossiness() {\n\tvar sheenGlossiness = uniform.material_sheenGloss;\n\t#ifdef STD_SHEENGLOSS_TEXTURE\n\tsheenGlossiness = sheenGlossiness * textureSampleBias({STD_SHEENGLOSS_TEXTURE_NAME}, {STD_SHEENGLOSS_TEXTURE_NAME}Sampler, {STD_SHEENGLOSS_TEXTURE_UV}, uniform.textureBias).{STD_SHEENGLOSS_TEXTURE_CHANNEL};\n\t#endif\n\t#ifdef STD_SHEENGLOSS_VERTEX\n\tsheenGlossiness = sheenGlossiness * saturate(vVertexColor.{STD_SHEENGLOSS_VERTEX_CHANNEL});\n\t#endif\n\t#ifdef STD_SHEENGLOSS_INVERT\n\tsheenGlossiness = 1.0 - sheenGlossiness;\n\t#endif\n\tsGlossiness = sheenGlossiness + 0.0000001;\n}\n`;\n\nvar parallaxPS = `\nuniform material_heightMapFactor: f32;\nfn getParallax() {\n\tvar parallaxScale = uniform.material_heightMapFactor;\n\tvar height: f32 = textureSampleBias({STD_HEIGHT_TEXTURE_NAME}, {STD_HEIGHT_TEXTURE_NAME}Sampler, {STD_HEIGHT_TEXTURE_UV}, uniform.textureBias).{STD_HEIGHT_TEXTURE_CHANNEL};\n\theight = height * parallaxScale - parallaxScale * 0.5;\n\tvar viewDirT: vec3f = dViewDirW * dTBN;\n\tviewDirT.z = viewDirT.z + 0.42;\n\tdUvOffset = height * (viewDirT.xy / viewDirT.z);\n}\n`;\n\nvar pickPS = `\nuniform meshInstanceId: u32;\nfn getPickOutput() -> vec4f {\n\tlet inv: vec4f = vec4f(1.0 / 255.0);\n\tlet shifts: vec4u = vec4u(16u, 8u, 0u, 24u);\n\tlet col: vec4u = (vec4u(uniform.meshInstanceId) >> shifts) & vec4u(0xffu);\n\treturn vec4f(col) * inv;\n}`;\n\nvar reflDirPS = `\nfn getReflDir(worldNormal: vec3f, viewDir: vec3f, gloss: f32, tbn: mat3x3f) {\n\tdReflDirW = normalize(-reflect(viewDir, worldNormal));\n}\n`;\n\nvar reflDirAnisoPS = `\nfn getReflDir(worldNormal: vec3f, viewDir: vec3f, gloss: f32, tbn: mat3x3f) {\n\tlet roughness: f32 = sqrt(1.0 - min(gloss, 1.0));\n\tlet direction: vec2f = dAnisotropyRotation;\n\tlet anisotropicT: vec3f = normalize(tbn * vec3f(direction, 0.0));\n\tlet anisotropicB: vec3f = normalize(cross(tbn[2], anisotropicT));\n\tlet anisotropy: f32 = dAnisotropy;\n\tlet anisotropicDirection: vec3f = anisotropicB;\n\tlet anisotropicTangent: vec3f = cross(anisotropicDirection, viewDir);\n\tlet anisotropicNormal: vec3f = cross(anisotropicTangent, anisotropicDirection);\n\tlet bendFactor: f32 = 1.0 - anisotropy * (1.0 - roughness);\n\tlet bendFactor4: f32 = bendFactor * bendFactor * bendFactor * bendFactor;\n\tlet bentNormal: vec3f = normalize(mix(normalize(anisotropicNormal), normalize(worldNormal), bendFactor4));\n\tdReflDirW = reflect(-viewDir, bentNormal);\n}`;\n\nvar reflectionCCPS = `\n#ifdef LIT_CLEARCOAT\nfn addReflectionCC(reflDir: vec3f, gloss: f32) {\n\tccReflection = ccReflection + calcReflection(reflDir, gloss);\n}\n#endif\n`;\n\nvar reflectionCubePS = `\nvar texture_cubeMap: texture_cube<f32>;\nvar texture_cubeMapSampler: sampler;\nuniform material_reflectivity: f32;\nfn calcReflection(reflDir: vec3f, gloss: f32) -> vec3f {\n\tvar lookupVec: vec3f = cubeMapProject(reflDir);\n\tlookupVec.x = lookupVec.x * -1.0;\n\treturn {reflectionDecode}(textureSample(texture_cubeMap, texture_cubeMapSampler, lookupVec));\n}\nfn addReflection(reflDir: vec3f, gloss: f32) {\n\tdReflection = dReflection + vec4f(calcReflection(reflDir, gloss), uniform.material_reflectivity);\n}\n`;\n\nvar reflectionEnvHQPS = `\n#ifndef ENV_ATLAS\n\t#define ENV_ATLAS\n\tvar texture_envAtlas: texture_2d<f32>;\n\tvar texture_envAtlasSampler: sampler;\n#endif\nvar texture_cubeMap: texture_cube<f32>;\nvar texture_cubeMapSampler: sampler;\nuniform material_reflectivity: f32;\nfn calcReflection(reflDir: vec3f, gloss: f32) -> vec3f {\n\tlet dir: vec3f = cubeMapProject(reflDir) * vec3f(-1.0, 1.0, 1.0);\n\tlet uv: vec2f = toSphericalUv(dir);\n\tlet level: f32 = saturate(1.0 - gloss) * 5.0;\n\tlet ilevel: f32 = floor(level);\n\tlet flevel: f32 = level - ilevel;\n\tlet sharp: vec3f = {reflectionCubemapDecode}(textureSample(texture_cubeMap, texture_cubeMapSampler, dir));\n\tlet roughA: vec3f = {reflectionDecode}(textureSample(texture_envAtlas, texture_envAtlasSampler, mapRoughnessUv(uv, ilevel)));\n\tlet roughB: vec3f = {reflectionDecode}(textureSample(texture_envAtlas, texture_envAtlasSampler, mapRoughnessUv(uv, ilevel + 1.0)));\n\treturn processEnvironment(mix(sharp, mix(roughA, roughB, flevel), min(level, 1.0)));\n}\nfn addReflection(reflDir: vec3f, gloss: f32) {\n\tdReflection = dReflection + vec4f(calcReflection(reflDir, gloss), uniform.material_reflectivity);\n}\n`;\n\nvar reflectionEnvPS = `\n#ifndef ENV_ATLAS\n#define ENV_ATLAS\n\tvar texture_envAtlas: texture_2d<f32>;\n\tvar texture_envAtlasSampler: sampler;\n#endif\nuniform material_reflectivity: f32;\nfn shinyMipLevel(uv: vec2f) -> f32 {\n\tlet dx: vec2f = dpdx(uv);\n\tlet dy: vec2f = dpdy(uv);\n\tlet uv2: vec2f = vec2f(fract(uv.x + 0.5), uv.y);\n\tlet dx2: vec2f = dpdx(uv2);\n\tlet dy2: vec2f = dpdy(uv2);\n\tlet maxd: f32 = min(max(dot(dx, dx), dot(dy, dy)), max(dot(dx2, dx2), dot(dy2, dy2)));\n\treturn clamp(0.5 * log2(maxd) - 1.0 + uniform.textureBias, 0.0, 5.0);\n}\nfn calcReflection(reflDir: vec3f, gloss: f32) -> vec3f {\n\tlet dir: vec3f = cubeMapProject(reflDir) * vec3f(-1.0, 1.0, 1.0);\n\tlet uv: vec2f = toSphericalUv(dir);\n\tlet level: f32 = saturate(1.0 - gloss) * 5.0;\n\tlet ilevel: f32 = floor(level);\n\tlet level2: f32 = shinyMipLevel(uv * atlasSize);\n\tlet ilevel2: f32 = floor(level2);\n\tvar uv0: vec2f;\n\tvar uv1: vec2f;\n\tvar weight: f32;\n\tif (ilevel == 0.0) {\n\t\tuv0 = mapShinyUv(uv, ilevel2);\n\t\tuv1 = mapShinyUv(uv, ilevel2 + 1.0);\n\t\tweight = level2 - ilevel2;\n\t} else {\n\t\tuv0 = mapRoughnessUv(uv, ilevel);\n\t\tuv1 = uv0;\n\t\tweight = 0.0;\n\t}\n\tlet linearA: vec3f = {reflectionDecode}(textureSample(texture_envAtlas, texture_envAtlasSampler, uv0));\n\tlet linearB: vec3f = {reflectionDecode}(textureSample(texture_envAtlas, texture_envAtlasSampler, uv1));\n\tlet linear0: vec3f = mix(linearA, linearB, weight);\n\tlet linear1: vec3f = {reflectionDecode}(textureSample(texture_envAtlas, texture_envAtlasSampler, mapRoughnessUv(uv, ilevel + 1.0)));\n\treturn processEnvironment(mix(linear0, linear1, level - ilevel));\n}\nfn addReflection(reflDir: vec3f, gloss: f32) {\n\tdReflection = dReflection + vec4f(calcReflection(reflDir, gloss), uniform.material_reflectivity);\n}\n`;\n\nvar reflectionSpherePS = `\n#ifndef VIEWMATRIX\n\t#define VIEWMATRIX\n\tuniform matrix_view: mat4x4f;\n#endif\nvar texture_sphereMap: texture_2d<f32>;\nvar texture_sphereMapSampler: sampler;\nuniform material_reflectivity: f32;\nfn calcReflection(reflDir: vec3f, gloss: f32) -> vec3f {\n\tlet viewRotationMatrix = mat3x3f(uniform.matrix_view[0].xyz, uniform.matrix_view[1].xyz, uniform.matrix_view[2].xyz);\n\tlet reflDirV: vec3f = viewRotationMatrix * reflDir;\n\tlet m: f32 = 2.0 * sqrt(dot(reflDirV.xy, reflDirV.xy) + (reflDirV.z + 1.0) * (reflDirV.z + 1.0));\n\tlet sphereMapUv: vec2f = reflDirV.xy / m + 0.5;\n\treturn {reflectionDecode}(textureSample(texture_sphereMap, texture_sphereMapSampler, sphereMapUv));\n}\nfn addReflection(reflDir: vec3f, gloss: f32) {\n\tdReflection = dReflection + vec4f(calcReflection(reflDir, gloss), uniform.material_reflectivity);\n}\n`;\n\nvar reflectionSheenPS = `\nfn addReflectionSheen(worldNormal: vec3f, viewDir: vec3f, gloss: f32) {\n\tlet NoV: f32 = dot(worldNormal, viewDir);\n\tlet alphaG: f32 = gloss * gloss;\n\tlet a: f32 = select(\n\t\t-8.48 * alphaG + 14.3 * gloss - 9.95,\n\t\t-339.2 * alphaG + 161.4 * gloss - 25.9,\n\t\tgloss < 0.25\n\t);\n\tlet b: f32 = select(\n\t\t1.97 * alphaG - 3.27 * gloss + 0.72,\n\t\t44.0 * alphaG - 23.7 * gloss + 3.26,\n\t\tgloss < 0.25\n\t);\n\tlet dg_add: f32 = select(\n\t\t0.1 * ( gloss - 0.25 ),\n\t\t0.0,\n\t\tgloss < 0.25\n\t);\n\tlet dg: f32 = exp( a * NoV + b ) + dg_add;\n\tsReflection = sReflection + (calcReflection(worldNormal, 0.0) * saturate(dg));\n}`;\n\nvar refractionCubePS = `\nfn refract2(viewVec: vec3f, normal: vec3f, IOR: f32) -> vec3f {\n\tlet vn: f32 = dot(viewVec, normal);\n\tlet k: f32 = 1.0 - IOR * IOR * (1.0 - vn * vn);\n\tlet refrVec: vec3f = IOR * viewVec - (IOR * vn + sqrt(k)) * normal;\n\treturn refrVec;\n}\nfn addRefraction(\n\tworldNormal: vec3f,\n\tviewDir: vec3f,\n\tthickness: f32,\n\tgloss: f32,\n\tspecularity: vec3f,\n\talbedo: vec3f,\n\ttransmission: f32,\n\trefractionIndex: f32,\n\tdispersion: f32\n#if defined(LIT_IRIDESCENCE)\n\t, iridescenceFresnel: vec3f,\n\tiridescenceIntensity: f32\n#endif\n) {\n\tlet tmpRefl: vec4f = dReflection;\n\tlet reflectionDir: vec3f = refract2(-viewDir, worldNormal, refractionIndex);\n\tdReflection = vec4f(0.0);\n\taddReflection(reflectionDir, gloss);\n\tdDiffuseLight = mix(dDiffuseLight, dReflection.rgb * albedo, transmission);\n\tdReflection = tmpRefl;\n}\n`;\n\nvar refractionDynamicPS = `\nuniform material_invAttenuationDistance: f32;\nuniform material_attenuation: vec3f;\nfn evalRefractionColor(refractionVector: vec3f, gloss: f32, refractionIndex: f32) -> vec3f {\n\tlet pointOfRefraction: vec4f = vec4f(vPositionW + refractionVector, 1.0);\n\tlet projectionPoint: vec4f = uniform.matrix_viewProjection * pointOfRefraction;\n\tlet uv: vec2f = getGrabScreenPos(projectionPoint);\n\tlet iorToRoughness: f32 = (1.0 - gloss) * clamp((1.0 / refractionIndex) * 2.0 - 2.0, 0.0, 1.0);\n\tlet refractionLod: f32 = log2(uniform.uScreenSize.x) * iorToRoughness;\n\tlet refraction: vec3f = textureSampleLevel(uSceneColorMap, uSceneColorMapSampler, uv, refractionLod).rgb;\n\treturn refraction;\n}\nfn addRefraction(\n\tworldNormal: vec3f,\n\tviewDir: vec3f,\n\tthickness: f32,\n\tgloss: f32,\n\tspecularity: vec3f,\n\talbedo: vec3f,\n\ttransmission: f32,\n\trefractionIndex: f32,\n\tdispersion: f32,\n#if defined(LIT_IRIDESCENCE)\n\tiridescenceFresnel: vec3f,\n\tiridescenceIntensity: f32\n#endif\n) {\n\tvar modelScale: vec3f;\n\tmodelScale.x = length(uniform.matrix_model[0].xyz);\n\tmodelScale.y = length(uniform.matrix_model[1].xyz);\n\tmodelScale.z = length(uniform.matrix_model[2].xyz);\n\tlet scale: vec3f = thickness * modelScale;\n\tvar refractionVector = normalize(refract(-viewDir, worldNormal, refractionIndex)) * scale;\n\tvar refraction = evalRefractionColor(refractionVector, gloss, refractionIndex);\n\t#ifdef LIT_DISPERSION\n\t\tlet halfSpread: f32 = (1.0 / refractionIndex - 1.0) * 0.025 * dispersion;\n\t\tlet refractionIndexR: f32 = refractionIndex - halfSpread;\n\t\trefractionVector = normalize(refract(-viewDir, worldNormal, refractionIndexR)) * scale;\n\t\trefraction.r = evalRefractionColor(refractionVector, gloss, refractionIndexR).r;\n\t\tlet refractionIndexB: f32 = refractionIndex + halfSpread;\n\t\trefractionVector = normalize(refract(-viewDir, worldNormal, refractionIndexB)) * scale;\n\t\trefraction.b = evalRefractionColor(refractionVector, gloss, refractionIndexB).b;\n\t#endif\n\tvar transmittance: vec3f;\n\tif (uniform.material_invAttenuationDistance != 0.0)\n\t{\n\t\tlet attenuation: vec3f = -log(uniform.material_attenuation) * uniform.material_invAttenuationDistance;\n\t\ttransmittance = exp(-attenuation * length(refractionVector));\n\t}\n\telse\n\t{\n\t\ttransmittance = refraction;\n\t}\n\tlet fresnel: vec3f = vec3f(1.0) -\n\t\tgetFresnel(\n\t\t\tdot(viewDir, worldNormal),\n\t\t\tgloss,\n\t\t\tspecularity\n\t\t#if defined(LIT_IRIDESCENCE)\n\t\t\t, iridescenceFresnel,\n\t\t\tiridescenceIntensity\n\t\t#endif\n\t\t);\n\tdDiffuseLight = mix(dDiffuseLight, refraction * transmittance * fresnel, transmission);\n}\n`;\n\nvar reprojectPS = `\nvarying vUv0: vec2f;\n#ifdef CUBEMAP_SOURCE\n\tvar sourceCube: texture_cube<f32>;\n\tvar sourceCubeSampler : sampler;\n#else\n\tvar sourceTex: texture_2d<f32>;\n\tvar sourceTexSampler : sampler;\n#endif\n#ifdef USE_SAMPLES_TEX\n\tvar samplesTex: texture_2d<f32>;\n\tvar samplesTexSampler : sampler;\n\tuniform samplesTexInverseSize: vec2f;\n#endif\nuniform params: vec3f;\nfn targetFace() -> f32 { return uniform.params.x; }\nfn targetTotalPixels() -> f32 { return uniform.params.y; }\nfn sourceTotalPixels() -> f32 { return uniform.params.z; }\nconst PI: f32 = 3.141592653589793;\nfn saturate(x: f32) -> f32 {\n\treturn clamp(x, 0.0, 1.0);\n}\n#include \"decodePS\"\n#include \"encodePS\"\nfn modifySeams(dir: vec3f, scale: f32) -> vec3f {\n\tlet adir = abs(dir);\n\tlet M = max(max(adir.x, adir.y), adir.z);\n\treturn dir / M * vec3f(\n\t\tselect(scale, 1.0, adir.x == M),\n\t\tselect(scale, 1.0, adir.y == M),\n\t\tselect(scale, 1.0, adir.z == M)\n\t);\n}\nfn toSpherical(dir: vec3f) -> vec2f {\n\tlet nonZeroXZ = any(dir.xz != vec2f(0.0, 0.0));\n\treturn vec2f(select(0.0, atan2(dir.x, dir.z), nonZeroXZ), asin(dir.y));\n}\nfn fromSpherical(uv: vec2f) -> vec3f {\n\treturn vec3f(cos(uv.y) * sin(uv.x),\n\t\t\t\tsin(uv.y),\n\t\t\t\tcos(uv.y) * cos(uv.x));\n}\nfn getDirectionEquirect(uv: vec2f) -> vec3f {\n\treturn fromSpherical((vec2f(uv.x, 1.0 - uv.y) * 2.0 - 1.0) * vec2f(PI, PI * 0.5));\n}\nfn signNotZero(k: f32) -> f32 {\n\treturn select(-1.0, 1.0, k >= 0.0);\n}\nfn signNotZeroVec2(v: vec2f) -> vec2f {\n\treturn vec2f(signNotZero(v.x), signNotZero(v.y));\n}\nfn octDecode(o: vec2f) -> vec3f {\n\tvar v = vec3f(o.x, 1.0 - abs(o.x) - abs(o.y), o.y);\n\tif (v.y < 0.0) {\n\t\tvar temp: vec2f = (1.0 - abs(v.zx)) * signNotZeroVec2(v.xz);\n\t\tv = vec3f(temp.x, v.y, temp.y);\n\t}\n\treturn normalize(v);\n}\nfn getDirectionOctahedral(uv: vec2f) -> vec3f {\n\treturn octDecode(vec2f(uv.x, 1.0 - uv.y) * 2.0 - 1.0);\n}\nfn octEncode(v: vec3f) -> vec2f {\n\tlet l1norm = abs(v.x) + abs(v.y) + abs(v.z);\n\tvar result = v.xz * (1.0 / l1norm);\n\tif (v.y < 0.0) {\n\t\tresult = (1.0 - abs(result.yx)) * signNotZeroVec2(result.xy);\n\t}\n\treturn result;\n}\n#ifdef CUBEMAP_SOURCE\n\tfn sampleCubemapDir(dir: vec3f) -> vec4f {\n\t\treturn textureSample(sourceCube, sourceCubeSampler, modifySeams(dir, 1.0));\n\t}\n\tfn sampleCubemapSph(sph: vec2f) -> vec4f {\n\t\treturn sampleCubemapDir(fromSpherical(sph));\n\t}\n\tfn sampleCubemapDirLod(dir: vec3f, mipLevel: f32) -> vec4f {\n\t\treturn textureSampleLevel(sourceCube, sourceCubeSampler, modifySeams(dir, 1.0), mipLevel);\n\t}\n\tfn sampleCubemapSphLod(sph: vec2f, mipLevel: f32) -> vec4f {\n\t\treturn sampleCubemapDirLod(fromSpherical(sph), mipLevel);\n\t}\n#else\n\tfn sampleEquirectSph(sph: vec2f) -> vec4f {\n\t\tlet uv = sph / vec2f(PI * 2.0, PI) + 0.5;\n\t\treturn textureSample(sourceTex, sourceTexSampler, vec2f(uv.x, 1.0 - uv.y));\n\t}\n\tfn sampleEquirectDir(dir: vec3f) -> vec4f {\n\t\treturn sampleEquirectSph(toSpherical(dir));\n\t}\n\tfn sampleEquirectSphLod(sph: vec2f, mipLevel: f32) -> vec4f {\n\t\tlet uv = sph / vec2f(PI * 2.0, PI) + 0.5;\n\t\treturn textureSampleLevel(sourceTex, sourceTexSampler, vec2f(uv.x, 1.0 - uv.y), mipLevel);\n\t}\n\tfn sampleEquirectDirLod(dir: vec3f, mipLevel: f32) -> vec4f {\n\t\treturn sampleEquirectSphLod(toSpherical(dir), mipLevel);\n\t}\n\tfn sampleOctahedralDir(dir: vec3f) -> vec4f {\n\t\tlet uv = octEncode(dir) * 0.5 + 0.5;\n\t\treturn textureSample(sourceTex, sourceTexSampler, vec2f(uv.x, 1.0 - uv.y));\n\t}\n\tfn sampleOctahedralSph(sph: vec2f) -> vec4f {\n\t\treturn sampleOctahedralDir(fromSpherical(sph));\n\t}\n\tfn sampleOctahedralDirLod(dir: vec3f, mipLevel: f32) -> vec4f {\n\t\tlet uv = octEncode(dir) * 0.5 + 0.5;\n\t\treturn textureSampleLevel(sourceTex, sourceTexSampler, vec2f(uv.x, 1.0 - uv.y), mipLevel);\n\t}\n\tfn sampleOctahedralSphLod(sph: vec2f, mipLevel: f32) -> vec4f {\n\t\treturn sampleOctahedralDirLod(fromSpherical(sph), mipLevel);\n\t}\n#endif\nfn getDirectionCubemap(uv: vec2f) -> vec3f {\n\tlet st = uv * 2.0 - 1.0;\n\tlet face = targetFace();\n\tvar vec: vec3f;\n\tif (face == 0.0) {\n\t\tvec = vec3f(1, -st.y, -st.x);\n\t} else if (face == 1.0) {\n\t\tvec = vec3f(-1, -st.y, st.x);\n\t} else if (face == 2.0) {\n\t\tvec = vec3f(st.x, 1, st.y);\n\t} else if (face == 3.0) {\n\t\tvec = vec3f(st.x, -1, -st.y);\n\t} else if (face == 4.0) {\n\t\tvec = vec3f(st.x, -st.y, 1);\n\t} else {\n\t\tvec = vec3f(-st.x, -st.y, -1);\n\t}\n\treturn normalize(modifySeams(vec, 1.0));\n}\nfn matrixFromVector(n: vec3f) -> mat3x3f {\n\tlet a = 1.0 / (1.0 + n.z);\n\tlet b = -n.x * n.y * a;\n\tlet b1 = vec3f(1.0 - n.x * n.x * a, b, -n.x);\n\tlet b2 = vec3f(b, 1.0 - n.y * n.y * a, -n.y);\n\treturn mat3x3f(b1, b2, n);\n}\nfn matrixFromVectorSlow(n: vec3f) -> mat3x3f {\n\tlet up = select(vec3f(0.0, 0.0, select(-1.0, 1.0, n.y > 0.0)), vec3f(0.0, 1.0, 0.0), abs(n.y) > 0.0000001);\n\tlet x = normalize(cross(up, n));\n\tlet y = cross(n, x);\n\treturn mat3x3f(x, y, n);\n}\nfn reproject(uv: vec2f) -> vec4f {\n\tif ({NUM_SAMPLES} <= 1) {\n\t\treturn {ENCODE_FUNC}({DECODE_FUNC}({SOURCE_FUNC}Dir({TARGET_FUNC}(uv))));\n\t} else {\n\t\tlet t = {TARGET_FUNC}(uv);\n\t\tlet tu = dpdx(t);\n\t\tlet tv = dpdy(t);\n\t\tvar result = vec3f(0.0);\n\t\tfor (var u = 0.0; u < {NUM_SAMPLES_SQRT}; u += 1.0) {\n\t\t\tfor (var v = 0.0; v < {NUM_SAMPLES_SQRT}; v += 1.0) {\n\t\t\t\tresult += {DECODE_FUNC}({SOURCE_FUNC}Dir(normalize(t +\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttu * (u / {NUM_SAMPLES_SQRT} - 0.5) +\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttv * (v / {NUM_SAMPLES_SQRT} - 0.5))));\n\t\t\t}\n\t\t}\n\t\treturn {ENCODE_FUNC}(result / ({NUM_SAMPLES_SQRT} * {NUM_SAMPLES_SQRT}));\n\t}\n}\nconst unpackFloat: vec4f = vec4f(1.0, 1.0 / 255.0, 1.0 / 65025.0, 1.0 / 16581375.0);\n#ifdef USE_SAMPLES_TEX\n\tfn unpackSample(i: i32, L: ptr<function, vec3f>, mipLevel: ptr<function, f32>) {\n\t\tvar u = (f32(i * 4) + 0.5) * uniform.samplesTexInverseSize.x;\n\t\tvar v = (floor(u) + 0.5) * uniform.samplesTexInverseSize.y;\n\t\tvar raw: vec4f;\n\t\traw.x = dot(textureSample(samplesTex, samplesTexSampler, vec2f(u, v)), unpackFloat); u += uniform.samplesTexInverseSize.x;\n\t\traw.y = dot(textureSample(samplesTex, samplesTexSampler, vec2f(u, v)), unpackFloat); u += uniform.samplesTexInverseSize.x;\n\t\traw.z = dot(textureSample(samplesTex, samplesTexSampler, vec2f(u, v)), unpackFloat); u += uniform.samplesTexInverseSize.x;\n\t\traw.w = dot(textureSample(samplesTex, samplesTexSampler, vec2f(u, v)), unpackFloat);\n\t\t*L = raw.xyz * 2.0 - 1.0;\n\t\t*mipLevel = raw.w * 8.0;\n\t}\n\tfn prefilterSamples(uv: vec2f) -> vec4f {\n\t\tlet vecSpace = matrixFromVectorSlow({TARGET_FUNC}(uv));\n\t\tvar L: vec3f;\n\t\tvar mipLevel: f32;\n\t\tvar result = vec3f(0.0);\n\t\tvar totalWeight = 0.0;\n\t\tfor (var i = 0; i < {NUM_SAMPLES}; i += 1) {\n\t\t\tunpackSample(i, &L, &mipLevel);\n\t\t\tresult += {DECODE_FUNC}({SOURCE_FUNC}DirLod(vecSpace * L, mipLevel)) * L.z;\n\t\t\ttotalWeight += L.z;\n\t\t}\n\t\treturn {ENCODE_FUNC}(result / totalWeight);\n\t}\n\tfn prefilterSamplesUnweighted(uv: vec2f) -> vec4f {\n\t\tlet vecSpace = matrixFromVectorSlow({TARGET_FUNC}(uv));\n\t\tvar L: vec3f;\n\t\tvar mipLevel: f32;\n\t\tvar result = vec3f(0.0);\n\t\tfor (var i = 0; i < {NUM_SAMPLES}; i += 1) {\n\t\t\tunpackSample(i, &L, &mipLevel);\n\t\t\tresult += {DECODE_FUNC}({SOURCE_FUNC}DirLod(vecSpace * L, mipLevel));\n\t\t}\n\t\treturn {ENCODE_FUNC}(result / f32({NUM_SAMPLES}));\n\t}\n#endif\n@fragment\nfn fragmentMain(input : FragmentInput) -> FragmentOutput {\n\tvar output: FragmentOutput;\n\toutput.color = {PROCESS_FUNC}(input.vUv0);\n\treturn output;\n}\n`;\n\nvar reprojectVS = `\nattribute vertex_position: vec2f;\nuniform uvMod: vec4f;\nvarying vUv0: vec2f;\n@vertex\nfn vertexMain(input: VertexInput) -> VertexOutput {\n\tvar output: VertexOutput;\n\toutput.position = vec4f(input.vertex_position, 0.5, 1.0);\n\toutput.vUv0 = getImageEffectUV((input.vertex_position * 0.5 + vec2f(0.5, 0.5)) * uniform.uvMod.xy + uniform.uvMod.zw);\n\treturn output;\n}\n`;\n\nvar screenDepthPS = `\nvar uSceneDepthMap: texture_2d<uff>;\n#ifndef SCREENSIZE\n\t#define SCREENSIZE\n\tuniform uScreenSize: vec4f;\n#endif\n#ifndef VIEWMATRIX\n\t#define VIEWMATRIX\n\tuniform matrix_view: mat4x4f;\n#endif\n#ifndef LINEARIZE_DEPTH\n\t#define LINEARIZE_DEPTH\n\t#ifndef CAMERAPLANES\n\t\t#define CAMERAPLANES\n\t\tuniform camera_params: vec4f;\n\t#endif\n\tfn linearizeDepth(z: f32) -> f32 {\n\t\tif (uniform.camera_params.w == 0.0) {\n\t\t\treturn (uniform.camera_params.z * uniform.camera_params.y) / (uniform.camera_params.y + z * (uniform.camera_params.z - uniform.camera_params.y));\n\t\t} else {\n\t\t\treturn uniform.camera_params.z + z * (uniform.camera_params.y - uniform.camera_params.z);\n\t\t}\n\t}\n#endif\nfn delinearizeDepth(linearDepth: f32) -> f32 {\n\tif (uniform.camera_params.w == 0.0) {\n\t\treturn (uniform.camera_params.y * (uniform.camera_params.z - linearDepth)) / (linearDepth * (uniform.camera_params.z - uniform.camera_params.y));\n\t} else {\n\t\treturn (linearDepth - uniform.camera_params.z) / (uniform.camera_params.y - uniform.camera_params.z);\n\t}\n}\nfn getLinearScreenDepth(uv: vec2f) -> f32 {\n\tlet textureSize = textureDimensions(uSceneDepthMap, 0);\n\tlet texel: vec2i = vec2i(uv * vec2f(textureSize));\n\t#ifdef SCENE_DEPTHMAP_LINEAR\n\t\treturn textureLoad(uSceneDepthMap, texel, 0).r;\n\t#else\n\t\treturn linearizeDepth(textureLoad(uSceneDepthMap, texel, 0).r);\n\t#endif\n}\n#ifndef VERTEXSHADER\n\tfn getLinearScreenDepthFrag() -> f32 {\n\t\tlet uv: vec2f = pcPosition.xy * uniform.uScreenSize.zw;\n\t\treturn getLinearScreenDepth(uv);\n\t}\n#endif\nfn getLinearDepth(pos: vec3f) -> f32 {\n\treturn -(uniform.matrix_view * vec4f(pos, 1.0)).z;\n}\n`;\n\nvar shadowCascadesPS = `\nfn getShadowCascadeIndex(shadowCascadeDistances: vec4f, shadowCascadeCount: i32) -> i32 {\n\tlet depth: f32 = 1.0 / pcPosition.w;\n\tlet comparisons: vec4f = step(shadowCascadeDistances, vec4f(depth));\n\tlet cascadeIndex: i32 = i32(dot(comparisons, vec4f(1.0)));\n\treturn min(cascadeIndex, shadowCascadeCount - 1);\n}\nfn ditherShadowCascadeIndex(cascadeIndex_in: i32, shadowCascadeDistances: vec4f, shadowCascadeCount: i32, blendFactor: f32) -> i32 {\n\tvar cascadeIndex: i32 = cascadeIndex_in;\n\tif (cascadeIndex < shadowCascadeCount - 1) {\n\t\tlet currentRangeEnd: f32 = shadowCascadeDistances[cascadeIndex];\n\t\tlet transitionStart: f32 = blendFactor * currentRangeEnd;\n\t\tlet depth: f32 = 1.0 / pcPosition.w;\n\t\tif (depth > transitionStart) {\n\t\t\tlet transitionFactor: f32 = smoothstep(transitionStart, currentRangeEnd, depth);\n\t\t\tlet dither: f32 = fract(sin(dot(pcPosition.xy, vec2f(12.9898, 78.233))) * 43758.5453);\n\t\t\tif (dither < transitionFactor) {\n\t\t\t\tcascadeIndex = cascadeIndex + 1;\n\t\t\t}\n\t\t}\n\t}\n\treturn cascadeIndex;\n}\nfn fadeShadow(shadowCoord_in: vec3f, shadowCascadeDistances: vec4f) -> vec3f {\n\tvar shadowCoord: vec3f = shadowCoord_in;\n\tlet depth: f32 = 1.0 / pcPosition.w;\n\tif (depth > shadowCascadeDistances.w) {\n\t\tshadowCoord.z = -9999999.0;\n\t}\n\treturn shadowCoord;\n}\n`;\n\nvar shadowEVSMPS = `\nfn linstep(a: f32, b: f32, v: f32) -> f32 {\n\treturn clamp((v - a) / (b - a), 0.0, 1.0);\n}\nfn reduceLightBleeding(pMax: f32, amount: f32) -> f32 {\n\t return linstep(amount, 1.0, pMax);\n}\nfn chebyshevUpperBound(moments: vec2f, mean: f32, minVariance: f32, lightBleedingReduction: f32) -> f32 {\n\tvar variance: f32 = moments.y - (moments.x * moments.x);\n\tvariance = max(variance, minVariance);\n\tlet d: f32 = mean - moments.x;\n\tvar pMax: f32 = variance / (variance + (d * d));\n\tpMax = reduceLightBleeding(pMax, lightBleedingReduction);\n\treturn select(pMax, 1.0, mean <= moments.x);\n}\nfn calculateEVSM(moments_in: vec3f, Z_in: f32, vsmBias: f32, exponent: f32) -> f32 {\n\tlet Z: f32 = 2.0 * Z_in - 1.0;\n\tlet warpedDepth: f32 = exp(exponent * Z);\n\tlet moments: vec2f = moments_in.xy + vec2f(warpedDepth, warpedDepth*warpedDepth) * (1.0 - moments_in.z);\n\tlet VSMBias: f32 = vsmBias;\n\tlet depthScale: f32 = VSMBias * exponent * warpedDepth;\n\tlet minVariance1: f32 = depthScale * depthScale;\n\treturn chebyshevUpperBound(moments, warpedDepth, minVariance1, 0.1);\n}\nfn VSM16(tex: texture_2d<f32>, texSampler: sampler, texCoords: vec2f, resolution: f32, Z: f32, vsmBias: f32, exponent: f32) -> f32 {\n\tlet moments: vec3f = textureSampleLevel(tex, texSampler, texCoords, 0.0).xyz;\n\treturn calculateEVSM(moments, Z, vsmBias, exponent);\n}\nfn getShadowVSM16(shadowMap: texture_2d<f32>, shadowMapSampler: sampler, shadowCoord: vec3f, shadowParams: vec4f, exponent: f32) -> f32 {\n\treturn VSM16(shadowMap, shadowMapSampler, shadowCoord.xy, shadowParams.x, shadowCoord.z, shadowParams.y, exponent);\n}\nfn getShadowSpotVSM16(shadowMap: texture_2d<f32>, shadowMapSampler: sampler, shadowCoord: vec3f, shadowParams: vec4f, exponent: f32, lightDir: vec3f) -> f32 {\n\tlet Z: f32 = length(lightDir) * shadowParams.w + shadowParams.z;\n\treturn VSM16(shadowMap, shadowMapSampler, shadowCoord.xy, shadowParams.x, Z, shadowParams.y, exponent);\n}\nfn VSM32(tex: texture_2d<f32>, texSampler: sampler, texCoords_in: vec2f, resolution: f32, Z: f32, vsmBias: f32, exponent: f32) -> f32 {\n\t#ifdef CAPS_TEXTURE_FLOAT_FILTERABLE\n\t\tvar moments: vec3f = textureSampleLevel(tex, texSampler, texCoords_in, 0.0).xyz;\n\t#else\n\t\tvar pixelSize : f32 = 1.0 / resolution;\n\t\tlet texCoords: vec2f = texCoords_in - vec2f(pixelSize);\n\t\tlet s00: vec3f = textureSampleLevel(tex, texSampler, texCoords, 0.0).xyz;\n\t\tlet s10: vec3f = textureSampleLevel(tex, texSampler, texCoords + vec2f(pixelSize, 0.0), 0.0).xyz;\n\t\tlet s01: vec3f = textureSampleLevel(tex, texSampler, texCoords + vec2f(0.0, pixelSize), 0.0).xyz;\n\t\tlet s11: vec3f = textureSampleLevel(tex, texSampler, texCoords + vec2f(pixelSize), 0.0).xyz;\n\t\tlet fr: vec2f = fract(texCoords * resolution);\n\t\tlet h0: vec3f = mix(s00, s10, fr.x);\n\t\tlet h1: vec3f = mix(s01, s11, fr.x);\n\t\tvar moments: vec3f = mix(h0, h1, fr.y);\n\t#endif\n\treturn calculateEVSM(moments, Z, vsmBias, exponent);\n}\nfn getShadowVSM32(shadowMap: texture_2d<f32>, shadowMapSampler: sampler, shadowCoord: vec3f, shadowParams: vec4f, exponent: f32) -> f32 {\n\treturn VSM32(shadowMap, shadowMapSampler, shadowCoord.xy, shadowParams.x, shadowCoord.z, shadowParams.y, exponent);\n}\nfn getShadowSpotVSM32(shadowMap: texture_2d<f32>, shadowMapSampler: sampler, shadowCoord: vec3f, shadowParams: vec4f, exponent: f32, lightDir: vec3f) -> f32 {\n\tlet Z: f32 = length(lightDir) * shadowParams.w + shadowParams.z;\n\treturn VSM32(shadowMap, shadowMapSampler, shadowCoord.xy, shadowParams.x, Z, shadowParams.y, exponent);\n}\n`;\n\nvar shadowPCF1PS = `\nfn getShadowPCF1x1(shadowMap: texture_depth_2d, shadowMapSampler: sampler_comparison, shadowCoord: vec3f, shadowParams: vec4f) -> f32 {\n\treturn textureSampleCompareLevel(shadowMap, shadowMapSampler, shadowCoord.xy, shadowCoord.z);\n}\nfn getShadowSpotPCF1x1(shadowMap: texture_depth_2d, shadowMapSampler: sampler_comparison, shadowCoord: vec3f, shadowParams: vec4f) -> f32 {\n\treturn textureSampleCompareLevel(shadowMap, shadowMapSampler, shadowCoord.xy, shadowCoord.z);\n}\n`;\n\nvar shadowPCF3PS = `\nfn _getShadowPCF3x3(shadowMap: texture_depth_2d, shadowMapSampler: sampler_comparison, shadowCoord: vec3f, shadowParams: vec3f) -> f32 {\n\tlet z: f32 = shadowCoord.z;\n\tlet uv: vec2f = shadowCoord.xy * shadowParams.x;\n\tlet shadowMapSizeInv: f32 = 1.0 / shadowParams.x;\n\tlet base_uv_temp: vec2f = floor(uv + 0.5);\n\tlet s: f32 = (uv.x + 0.5 - base_uv_temp.x);\n\tlet t: f32 = (uv.y + 0.5 - base_uv_temp.y);\n\tlet base_uv: vec2f = (base_uv_temp - vec2f(0.5)) * shadowMapSizeInv;\n\tvar sum: f32 = 0.0;\n\tlet uw0: f32 = (3.0 - 2.0 * s);\n\tlet uw1: f32 = (1.0 + 2.0 * s);\n\tlet u0_offset: f32 = (2.0 - s) / uw0 - 1.0;\n\tlet u1_offset: f32 = s / uw1 + 1.0;\n\tlet vw0: f32 = (3.0 - 2.0 * t);\n\tlet vw1: f32 = (1.0 + 2.0 * t);\n\tlet v0_offset: f32 = (2.0 - t) / vw0 - 1.0;\n\tlet v1_offset: f32 = t / vw1 + 1.0;\n\tlet u0: f32 = u0_offset * shadowMapSizeInv + base_uv.x;\n\tlet v0: f32 = v0_offset * shadowMapSizeInv + base_uv.y;\n\tlet u1: f32 = u1_offset * shadowMapSizeInv + base_uv.x;\n\tlet v1: f32 = v1_offset * shadowMapSizeInv + base_uv.y;\n\tsum = sum + uw0 * vw0 * textureSampleCompareLevel(shadowMap, shadowMapSampler, vec2f(u0, v0), z);\n\tsum = sum + uw1 * vw0 * textureSampleCompareLevel(shadowMap, shadowMapSampler, vec2f(u1, v0), z);\n\tsum = sum + uw0 * vw1 * textureSampleCompareLevel(shadowMap, shadowMapSampler, vec2f(u0, v1), z);\n\tsum = sum + uw1 * vw1 * textureSampleCompareLevel(shadowMap, shadowMapSampler, vec2f(u1, v1), z);\n\tsum = sum * (1.0 / 16.0);\n\treturn sum;\n}\nfn getShadowPCF3x3(shadowMap: texture_depth_2d, shadowMapSampler: sampler_comparison, shadowCoord: vec3f, shadowParams: vec4f) -> f32 {\n\treturn _getShadowPCF3x3(shadowMap, shadowMapSampler, shadowCoord, shadowParams.xyz);\n}\nfn getShadowSpotPCF3x3(shadowMap: texture_depth_2d, shadowMapSampler: sampler_comparison, shadowCoord: vec3f, shadowParams: vec4f) -> f32 {\n\treturn _getShadowPCF3x3(shadowMap, shadowMapSampler, shadowCoord, shadowParams.xyz);\n}\n`;\n\nvar shadowPCF5PS = `\nfn _getShadowPCF5x5(shadowMap: texture_depth_2d, shadowMapSampler: sampler_comparison, shadowCoord: vec3f, shadowParams: vec3f) -> f32 {\n\tlet z: f32 = shadowCoord.z;\n\tlet uv: vec2f = shadowCoord.xy * shadowParams.x;\n\tlet shadowMapSizeInv: f32 = 1.0 / shadowParams.x;\n\tlet base_uv_temp: vec2f = floor(uv + 0.5);\n\tlet s: f32 = (uv.x + 0.5 - base_uv_temp.x);\n\tlet t: f32 = (uv.y + 0.5 - base_uv_temp.y);\n\tlet base_uv: vec2f = (base_uv_temp - vec2f(0.5)) * shadowMapSizeInv;\n\tlet uw0: f32 = (4.0 - 3.0 * s);\n\tlet uw1: f32 = 7.0;\n\tlet uw2: f32 = (1.0 + 3.0 * s);\n\tlet u0_offset: f32 = (3.0 - 2.0 * s) / uw0 - 2.0;\n\tlet u1_offset: f32 = (3.0 + s) / uw1;\n\tlet u2_offset: f32 = s / uw2 + 2.0;\n\tlet vw0: f32 = (4.0 - 3.0 * t);\n\tlet vw1: f32 = 7.0;\n\tlet vw2: f32 = (1.0 + 3.0 * t);\n\tlet v0_offset: f32 = (3.0 - 2.0 * t) / vw0 - 2.0;\n\tlet v1_offset: f32 = (3.0 + t) / vw1;\n\tlet v2_offset: f32 = t / vw2 + 2.0;\n\tvar sum: f32 = 0.0;\n\tlet u0: f32 = u0_offset * shadowMapSizeInv + base_uv.x;\n\tlet v0: f32 = v0_offset * shadowMapSizeInv + base_uv.y;\n\tlet u1: f32 = u1_offset * shadowMapSizeInv + base_uv.x;\n\tlet v1: f32 = v1_offset * shadowMapSizeInv + base_uv.y;\n\tlet u2: f32 = u2_offset * shadowMapSizeInv + base_uv.x;\n\tlet v2: f32 = v2_offset * shadowMapSizeInv + base_uv.y;\n\tsum = sum + uw0 * vw0 * textureSampleCompareLevel(shadowMap, shadowMapSampler, vec2f(u0, v0), z);\n\tsum = sum + uw1 * vw0 * textureSampleCompareLevel(shadowMap, shadowMapSampler, vec2f(u1, v0), z);\n\tsum = sum + uw2 * vw0 * textureSampleCompareLevel(shadowMap, shadowMapSampler, vec2f(u2, v0), z);\n\tsum = sum + uw0 * vw1 * textureSampleCompareLevel(shadowMap, shadowMapSampler, vec2f(u0, v1), z);\n\tsum = sum + uw1 * vw1 * textureSampleCompareLevel(shadowMap, shadowMapSampler, vec2f(u1, v1), z);\n\tsum = sum + uw2 * vw1 * textureSampleCompareLevel(shadowMap, shadowMapSampler, vec2f(u2, v1), z);\n\tsum = sum + uw0 * vw2 * textureSampleCompareLevel(shadowMap, shadowMapSampler, vec2f(u0, v2), z);\n\tsum = sum + uw1 * vw2 * textureSampleCompareLevel(shadowMap, shadowMapSampler, vec2f(u1, v2), z);\n\tsum = sum + uw2 * vw2 * textureSampleCompareLevel(shadowMap, shadowMapSampler, vec2f(u2, v2), z);\n\tsum = sum * (1.0 / 144.0);\n\tsum = saturate(sum);\n\treturn sum;\n}\nfn getShadowPCF5x5(shadowMap: texture_depth_2d, shadowMapSampler: sampler_comparison, shadowCoord: vec3f, shadowParams: vec4f) -> f32 {\n\treturn _getShadowPCF5x5(shadowMap, shadowMapSampler, shadowCoord, shadowParams.xyz);\n}\nfn getShadowSpotPCF5x5(shadowMap: texture_depth_2d, shadowMapSampler: sampler_comparison, shadowCoord: vec3f, shadowParams: vec4f) -> f32 {\n\treturn _getShadowPCF5x5(shadowMap, shadowMapSampler, shadowCoord, shadowParams.xyz);\n}\n`;\n\nvar shadowSoftPS = `\nfn fractSinRand(uv: vec2f) -> f32 {\n\tlet PI: f32 = 3.141592653589793;\n\tlet a: f32 = 12.9898; let b: f32 = 78.233; let c: f32 = 43758.5453;\n\tlet dt: f32 = dot(uv.xy, vec2f(a, b));\n\tlet sn: f32 = dt % PI;\n\treturn fract(sin(sn) * c);\n}\nstruct VogelDiskData {\n\tinvNumSamples: f32,\n\tinitialAngle: f32,\n\tcurrentPointId: f32,\n}\nfn prepareDiskConstants(data: ptr<function, VogelDiskData>, sampleCount: i32, randomSeed: f32) {\n\tlet pi2: f32 = 6.28318530718;\n\tdata.invNumSamples = 1.0 / f32(sampleCount);\n\tdata.initialAngle = randomSeed * pi2;\n\tdata.currentPointId = 0.0;\n}\nfn generateDiskSample(data: ptr<function, VogelDiskData>) -> vec2f {\n\tlet GOLDEN_ANGLE: f32 = 2.399963;\n\tlet r: f32 = sqrt((data.currentPointId + 0.5) * data.invNumSamples);\n\tlet theta: f32 = data.currentPointId * GOLDEN_ANGLE + data.initialAngle;\n\tlet offset: vec2f = vec2f(cos(theta), sin(theta)) * pow(r, 1.33);\n\tdata.currentPointId = data.currentPointId + 1.0;\n\treturn offset;\n}\nfn PCSSFindBlocker(shadowMap: texture_2d<f32>, shadowMapSampler: sampler, avgBlockerDepth: ptr<function, f32>, numBlockers: ptr<function, i32>,\n\tshadowCoords: vec2f, z: f32, shadowBlockerSamples: i32, penumbraSize: f32, invShadowMapSize: f32, randomSeed: f32) {\n\tvar diskData: VogelDiskData;\n\tprepareDiskConstants(&diskData, shadowBlockerSamples, randomSeed);\n\tlet searchWidth: f32 = penumbraSize * invShadowMapSize;\n\tvar blockerSum: f32 = 0.0;\n\tvar numBlockers_local: i32 = 0;\n\tfor( var i: i32 = 0; i < shadowBlockerSamples; i = i + 1 ) {\n\t\tlet diskUV: vec2f = generateDiskSample(&diskData);\n\t\tlet sampleUV: vec2f = shadowCoords + diskUV * searchWidth;\n\t\tlet shadowMapDepth: f32 = textureSampleLevel(shadowMap, shadowMapSampler, sampleUV, 0.0).r;\n\t\tif ( shadowMapDepth < z ) {\n\t\t\tblockerSum = blockerSum + shadowMapDepth;\n\t\t\tnumBlockers_local = numBlockers_local + 1;\n\t\t}\n\t}\n\t*avgBlockerDepth = blockerSum / f32(numBlockers_local);\n\t*numBlockers = numBlockers_local;\n}\nfn PCSSFilter(shadowMap: texture_2d<f32>, shadowMapSampler: sampler, uv: vec2f, receiverDepth: f32, shadowSamples: i32, filterRadius: f32, randomSeed: f32) -> f32 {\n\tvar diskData: VogelDiskData;\n\tprepareDiskConstants(&diskData, shadowSamples, randomSeed);\n\tvar sum: f32 = 0.0;\n\tfor (var i: i32 = 0; i < shadowSamples; i = i + 1) {\n\t\tlet offsetUV: vec2f = generateDiskSample(&diskData) * filterRadius;\n\t\tlet depth: f32 = textureSampleLevel(shadowMap, shadowMapSampler, uv + offsetUV, 0.0).r;\n\t\tsum = sum + step(receiverDepth, depth);\n\t}\n\treturn sum / f32(shadowSamples);\n}\nfn getPenumbra(dblocker: f32, dreceiver: f32, penumbraSize: f32, penumbraFalloff: f32) -> f32 {\n\tlet dist: f32 = dreceiver - dblocker;\n\tlet penumbra: f32 = 1.0 - pow(1.0 - dist, penumbraFalloff);\n\treturn penumbra * penumbraSize;\n}\nfn PCSSDirectional(shadowMap: texture_2d<f32>, shadowMapSampler: sampler, shadowCoords: vec3f, cameraParams: vec4f, softShadowParams: vec4f) -> f32 {\n\tlet receiverDepth: f32 = shadowCoords.z;\n\tlet randomSeed: f32 = fractSinRand(pcPosition.xy);\n\tlet shadowSamples: i32 = i32(softShadowParams.x);\n\tlet shadowBlockerSamples: i32 = i32(softShadowParams.y);\n\tlet penumbraSize: f32 = softShadowParams.z;\n\tlet penumbraFalloff: f32 = softShadowParams.w;\n\tlet shadowMapSize: i32 = i32(textureDimensions(shadowMap, 0).x);\n\tvar invShadowMapSize: f32 = 1.0 / f32(shadowMapSize);\n\tinvShadowMapSize = invShadowMapSize * (f32(shadowMapSize) / 2048.0);\n\tvar penumbra: f32;\n\tif (shadowBlockerSamples > 0) {\n\t\tvar avgBlockerDepth: f32 = 0.0;\n\t\tvar numBlockers: i32 = 0;\n\t\tPCSSFindBlocker(shadowMap, shadowMapSampler, &avgBlockerDepth, &numBlockers, shadowCoords.xy, receiverDepth, shadowBlockerSamples, penumbraSize, invShadowMapSize, randomSeed);\n\t\tif (numBlockers < 1) {\n\t\t\treturn 1.0;\n\t\t}\n\t\tpenumbra = getPenumbra(avgBlockerDepth, shadowCoords.z, penumbraSize, penumbraFalloff);\n\t} else {\n\t\tpenumbra = penumbraSize;\n\t}\n\tlet filterRadius: f32 = penumbra * invShadowMapSize;\n\treturn PCSSFilter(shadowMap, shadowMapSampler, shadowCoords.xy, receiverDepth, shadowSamples, filterRadius, randomSeed);\n}\nfn getShadowPCSS(shadowMap: texture_2d<f32>, shadowMapSampler: sampler, shadowCoord: vec3f, shadowParams: vec4f, cameraParams: vec4f, softShadowParams: vec4f, lightDir: vec3f) -> f32 {\n\treturn PCSSDirectional(shadowMap, shadowMapSampler, shadowCoord, cameraParams, softShadowParams);\n}\n`;\n\nvar skinBatchVS = `\nattribute vertex_boneIndices: f32;\nvar texture_poseMap: texture_2d<uff>;\nfn getBoneMatrix(indexFloat: f32) -> mat4x4f {\n\tlet width = i32(textureDimensions(texture_poseMap).x);\n\tlet index: i32 = i32(indexFloat + 0.5) * 3;\n\tlet iy: i32 = index / width;\n\tlet ix: i32 = index % width;\n\tlet v1: vec4f = textureLoad(texture_poseMap, vec2i(ix + 0, iy), 0);\n\tlet v2: vec4f = textureLoad(texture_poseMap, vec2i(ix + 1, iy), 0);\n\tlet v3: vec4f = textureLoad(texture_poseMap, vec2i(ix + 2, iy), 0);\n\treturn mat4x4f(\n\t\tv1.x, v2.x, v3.x, 0,\n\t\tv1.y, v2.y, v3.y, 0,\n\t\tv1.z, v2.z, v3.z, 0,\n\t\tv1.w, v2.w, v3.w, 1.0\n\t);\n}\n`;\n\nvar skinVS = `\nattribute vertex_boneWeights: vec4f;\nattribute vertex_boneIndices: vec4f;\nvar texture_poseMap: texture_2d<uff>;\nstruct BoneMatrix {\n\tv1: vec4f,\n\tv2: vec4f,\n\tv3: vec4f,\n}\nfn getBoneMatrix(width: i32, index: i32) -> BoneMatrix {\n\tlet v = index / width;\n\tlet u = index % width;\n\tvar result: BoneMatrix;\n\tresult.v1 = textureLoad(texture_poseMap, vec2i(u + 0, v), 0);\n\tresult.v2 = textureLoad(texture_poseMap, vec2i(u + 1, v), 0);\n\tresult.v3 = textureLoad(texture_poseMap, vec2i(u + 2, v), 0);\n\treturn result;\n}\nfn getSkinMatrix(indicesFloat: vec4f, weights: vec4f) -> mat4x4f {\n\tlet width = i32(textureDimensions(texture_poseMap).x);\n\tvar indices = vec4i(indicesFloat + 0.5) * 3;\n\tlet boneA = getBoneMatrix(width, indices.x);\n\tlet boneB = getBoneMatrix(width, indices.y);\n\tlet boneC = getBoneMatrix(width, indices.z);\n\tlet boneD = getBoneMatrix(width, indices.w);\n\tlet v1 = boneA.v1 * weights.x + boneB.v1 * weights.y + boneC.v1 * weights.z + boneD.v1 * weights.w;\n\tlet v2 = boneA.v2 * weights.x + boneB.v2 * weights.y + boneC.v2 * weights.z + boneD.v2 * weights.w;\n\tlet v3 = boneA.v3 * weights.x + boneB.v3 * weights.y + boneC.v3 * weights.z + boneD.v3 * weights.w;\n\tlet one = dot(weights, vec4f(1.0, 1.0, 1.0, 1.0));\n\treturn mat4x4f(\n\t\tv1.x, v2.x, v3.x, 0,\n\t\tv1.y, v2.y, v3.y, 0,\n\t\tv1.z, v2.z, v3.z, 0,\n\t\tv1.w, v2.w, v3.w, one\n\t);\n}\n`;\n\nvar skyboxPS = `\n\t#define LIT_SKYBOX_INTENSITY\n\t#include \"envProcPS\"\n\t#include \"gammaPS\"\n\t#include \"tonemappingPS\"\n\t#ifdef PREPASS_PASS\n\t\tvarying vLinearDepth: f32;\n\t\t#include \"floatAsUintPS\"\n\t#endif\n\tvarying vViewDir : vec3f;\n\tuniform skyboxHighlightMultiplier : f32;\n\t#ifdef SKY_CUBEMAP\n\t\tvar texture_cubeMap : texture_cube<f32>;\n\t\tvar texture_cubeMap_sampler : sampler;\n\t\t#ifdef SKYMESH\n\t\t\tvarying vWorldPos : vec3f;\n\t\t\tuniform cubeMapRotationMatrix : mat3x3f;\n\t\t\tuniform projectedSkydomeCenter : vec3f;\n\t\t#endif\n\t#else\n\t\t#include \"sphericalPS\"\n\t\t#include \"envAtlasPS\"\n\t\tvar texture_envAtlas : texture_2d<f32>;\n\t\tvar texture_envAtlas_sampler : sampler;\n\t\tuniform mipLevel : f32;\n\t#endif\n\t@fragment\n\tfn fragmentMain(input : FragmentInput) -> FragmentOutput {\n\t\tvar output: FragmentOutput;\n\t\t#ifdef PREPASS_PASS\n\t\t\toutput.color = float2vec4(vLinearDepth);\n\t\t#else\n\t\t\tvar linear : vec3f;\n\t\t\tvar dir : vec3f;\n\t\t\t#ifdef SKY_CUBEMAP\n\t\t\t\t#ifdef SKYMESH\n\t\t\t\t\tvar envDir : vec3f = normalize(input.vWorldPos - uniform.projectedSkydomeCenter);\n\t\t\t\t\tdir = envDir * uniform.cubeMapRotationMatrix;\n\t\t\t\t#else\n\t\t\t\t\tdir = input.vViewDir;\n\t\t\t\t#endif\n\t\t\t\tdir.x *= -1.0;\n\t\t\t\tlinear = {SKYBOX_DECODE_FNC}(textureSample(texture_cubeMap, texture_cubeMap_sampler, dir));\n\t\t\t#else\n\t\t\t\tdir = input.vViewDir * vec3f(-1.0, 1.0, 1.0);\n\t\t\t\tlet uv : vec2f = toSphericalUv(normalize(dir));\n\t\t\t\tlinear = {SKYBOX_DECODE_FNC}(textureSample(texture_envAtlas, texture_envAtlas_sampler, mapRoughnessUv(uv, uniform.mipLevel)));\n\t\t\t#endif\n\t\t\tif (any(linear >= vec3f(64.0))) {\n\t\t\t\tlinear *= uniform.skyboxHighlightMultiplier;\n\t\t\t}\n\t\t\t\n\t\t\toutput.color = vec4f(gammaCorrectOutput(toneMap(processEnvironment(linear))), 1.0);\n\t\t#endif\n\t\treturn output;\n\t}\n`;\n\nvar skyboxVS = `\n\tattribute aPosition : vec4f;\n\tuniform matrix_view : mat4x4f;\n\tuniform matrix_projectionSkybox : mat4x4f;\n\tuniform cubeMapRotationMatrix : mat3x3f;\n\tvarying vViewDir : vec3f;\n\t#ifdef PREPASS_PASS\n\t\tvarying vLinearDepth: f32;\n\t#endif\n\t#ifdef SKYMESH\n\t\tuniform matrix_model : mat4x4f;\n\t\tvarying vWorldPos : vec3f;\n\t#endif\n\t@vertex\n\tfn vertexMain(input : VertexInput) -> VertexOutput {\n\t\tvar output : VertexOutput;\n\t\tvar view : mat4x4f = uniform.matrix_view;\n\t\t#ifdef SKYMESH\n\t\t\tvar worldPos : vec4f = uniform.matrix_model * input.aPosition;\n\t\t\toutput.vWorldPos = worldPos.xyz;\n\t\t\toutput.position = uniform.matrix_projectionSkybox * (view * worldPos);\n\t\t\t#ifdef PREPASS_PASS\n\t\t\t\toutput.vLinearDepth = -(uniform.matrix_view * vec4f(worldPos.xyz, 1.0)).z;\n\t\t\t#endif\n\t\t#else\n\t\t\tview[3][0] = 0.0;\n\t\t\tview[3][1] = 0.0;\n\t\t\tview[3][2] = 0.0;\n\t\t\toutput.position = uniform.matrix_projectionSkybox * (view * input.aPosition);\n\t\t\toutput.vViewDir = input.aPosition.xyz * uniform.cubeMapRotationMatrix;\n\t\t\t#ifdef PREPASS_PASS\n\t\t\t\toutput.vLinearDepth = -pcPosition.w;\n\t\t\t#endif\n\t\t#endif\n\t\toutput.position.z = output.position.w - 1.0e-7;\n\t\treturn output;\n\t}\n`;\n\nvar specularPS = `\n#ifdef STD_SPECULAR_CONSTANT\n\tuniform material_specular: vec3f;\n#endif\nfn getSpecularity() {\n\tvar specularColor = vec3f(1.0, 1.0, 1.0);\n\t#ifdef STD_SPECULAR_CONSTANT\n\tspecularColor = specularColor * uniform.material_specular;\n\t#endif\n\t#ifdef STD_SPECULAR_TEXTURE\n\tspecularColor = specularColor * {STD_SPECULAR_TEXTURE_DECODE}(textureSampleBias({STD_SPECULAR_TEXTURE_NAME}, {STD_SPECULAR_TEXTURE_NAME}Sampler, {STD_SPECULAR_TEXTURE_UV}, uniform.textureBias)).{STD_SPECULAR_TEXTURE_CHANNEL};\n\t#endif\n\t#ifdef STD_SPECULAR_VERTEX\n\tspecularColor = specularColor * saturate3(vVertexColor.{STD_SPECULAR_VERTEX_CHANNEL});\n\t#endif\n\tdSpecularity = specularColor;\n}\n`;\n\nvar sphericalPS = `\nfn toSpherical(dir: vec3f) -> vec2f {\n\tlet angle_xz = select(0.0, atan2(dir.x, dir.z), any(dir.xz != vec2f(0.0)));\n\treturn vec2f(angle_xz, asin(dir.y));\n}\nfn toSphericalUv(dir : vec3f) -> vec2f {\n\tconst PI : f32 = 3.141592653589793;\n\tlet uv : vec2f = toSpherical(dir) / vec2f(PI * 2.0, PI) + vec2f(0.5, 0.5);\n\treturn vec2f(uv.x, 1.0 - uv.y);\n}\n`;\n\nvar specularityFactorPS = `\n#ifdef STD_SPECULARITYFACTOR_CONSTANT\n\tuniform material_specularityFactor: f32;\n#endif\nfn getSpecularityFactor() {\n\tvar specularityFactor = 1.0;\n\t#ifdef STD_SPECULARITYFACTOR_CONSTANT\n\tspecularityFactor = specularityFactor * uniform.material_specularityFactor;\n\t#endif\n\t#ifdef STD_SPECULARITYFACTOR_TEXTURE\n\tspecularityFactor = specularityFactor * textureSampleBias({STD_SPECULARITYFACTOR_TEXTURE_NAME}, {STD_SPECULARITYFACTOR_TEXTURE_NAME}Sampler, {STD_SPECULARITYFACTOR_TEXTURE_UV}, uniform.textureBias).{STD_SPECULARITYFACTOR_TEXTURE_CHANNEL};\n\t#endif\n\t#ifdef STD_SPECULARITYFACTOR_VERTEX\n\tspecularityFactor = specularityFactor * saturate(vVertexColor.{STD_SPECULARITYFACTOR_VERTEX_CHANNEL});\n\t#endif\n\tdSpecularityFactor = specularityFactor;\n}\n`;\n\nvar spotPS = `\nfn getSpotEffect(lightSpotDir: vec3f, lightInnerConeAngle: f32, lightOuterConeAngle: f32, lightDirNorm: vec3f) -> f32 {\n\tlet cosAngle: f32 = dot(lightDirNorm, lightSpotDir);\n\treturn smoothstep(lightOuterConeAngle, lightInnerConeAngle, cosAngle);\n}`;\n\nvar startNineSlicedPS = `\n\tnineSlicedUv = vec2f(vUv0.x, 1.0 - vUv0.y);\n`;\n\nvar startNineSlicedTiledPS = `\n\tlet tileMask: vec2f = step(vMask, vec2f(0.99999));\n\tlet tileSize: vec2f = 0.5 * (innerOffset.xy + innerOffset.zw);\n\tlet tileScale: vec2f = vec2f(1.0) / (vec2f(1.0) - tileSize);\n\tvar clampedUv: vec2f = mix(innerOffset.xy * 0.5, vec2f(1.0) - innerOffset.zw * 0.5, fract((vTiledUv - tileSize) * tileScale));\n\tclampedUv = clampedUv * atlasRect.zw + atlasRect.xy;\n\tvar nineSlicedUv: vec2f = vUv0 * tileMask + clampedUv * (vec2f(1.0) - tileMask);\n\tnineSlicedUv.y = 1.0 - nineSlicedUv.y;\n`;\n\nvar stdDeclarationPS = `\n\tvar<private> dAlpha: f32 = 1.0;\n\t#if LIT_BLEND_TYPE != NONE || defined(LIT_ALPHA_TEST) || defined(LIT_ALPHA_TO_COVERAGE) || STD_OPACITY_DITHER != NONE\n\t\t#ifdef STD_OPACITY_TEXTURE_ALLOCATE\n\t\t\tvar texture_opacityMap : texture_2d<f32>;\n\t\t\tvar texture_opacityMapSampler : sampler;\n\t\t#endif\n\t#endif\n\t#ifdef FORWARD_PASS\n\t\tvar<private> dAlbedo: vec3f;\n\t\tvar<private> dNormalW: vec3f;\n\t\tvar<private> dSpecularity: vec3f = vec3f(0.0, 0.0, 0.0);\n\t\tvar<private> dGlossiness: f32 = 0.0;\n\t\t#ifdef LIT_REFRACTION\n\t\t\tvar<private> dTransmission: f32;\n\t\t\tvar<private> dThickness: f32;\n\t\t#endif\n\t\t#ifdef LIT_SCENE_COLOR\n\t\t\tvar uSceneColorMap : texture_2d<f32>;\n\t\t\tvar uSceneColorMapSampler : sampler;\n\t\t#endif\n\t\t#ifdef LIT_SCREEN_SIZE\n\t\t\tuniform uScreenSize: vec4f;\n\t\t#endif\n\t\t#ifdef LIT_TRANSFORMS\n\t\t\tvar<private> matrix_viewProjection: mat4x4f;\n\t\t\tvar<private> matrix_model: mat4x4f;\n\t\t#endif\n\t\t#ifdef STD_HEIGHT_MAP\n\t\t\tvar<private> dUvOffset: vec2f;\n\t\t\t#ifdef STD_HEIGHT_TEXTURE_ALLOCATE\n\t\t\t\tvar texture_heightMap : texture_2d<f32>;\n\t\t\t\tvar texture_heightMapSampler : sampler;\n\t\t\t#endif\n\t\t#endif\n\t\t#ifdef STD_DIFFUSE_TEXTURE_ALLOCATE\n\t\t\tvar texture_diffuseMap : texture_2d<f32>;\n\t\t\tvar texture_diffuseMapSampler : sampler;\n\t\t#endif\n\t\t#ifdef STD_DIFFUSEDETAIL_TEXTURE_ALLOCATE\n\t\t\tvar texture_diffuseDetailMap : texture_2d<f32>;\n\t\t\tvar texture_diffuseDetailMapSampler : sampler;\n\t\t#endif\n\t\t#ifdef STD_NORMAL_TEXTURE_ALLOCATE\n\t\t\tvar texture_normalMap : texture_2d<f32>;\n\t\t\tvar texture_normalMapSampler : sampler;\n\t\t#endif\n\t\t#ifdef STD_NORMALDETAIL_TEXTURE_ALLOCATE\n\t\t\tvar texture_normalDetailMap : texture_2d<f32>;\n\t\t\tvar texture_normalDetailMapSampler : sampler;\n\t\t#endif\n\t\t#ifdef STD_THICKNESS_TEXTURE_ALLOCATE\n\t\t\tvar texture_thicknessMap : texture_2d<f32>;\n\t\t\tvar texture_thicknessMapSampler : sampler;\n\t\t#endif\n\t\t#ifdef STD_REFRACTION_TEXTURE_ALLOCATE\n\t\t\tvar texture_refractionMap : texture_2d<f32>;\n\t\t\tvar texture_refractionMapSampler : sampler;\n\t\t#endif\n\t\t#ifdef LIT_IRIDESCENCE\n\t\t\tvar<private> dIridescence: f32;\n\t\t\tvar<private> dIridescenceThickness: f32;\n\t\t\t#ifdef STD_IRIDESCENCE_THICKNESS_TEXTURE_ALLOCATE\n\t\t\t\tvar texture_iridescenceThicknessMap : texture_2d<f32>;\n\t\t\t\tvar texture_iridescenceThicknessMapSampler : sampler;\n\t\t\t#endif\n\t\t\t#ifdef STD_IRIDESCENCE_TEXTURE_ALLOCATE\n\t\t\t\tvar texture_iridescenceMap : texture_2d<f32>;\n\t\t\t\tvar texture_iridescenceMapSampler : sampler;\n\t\t\t#endif\n\t\t#endif\n\t\t#ifdef LIT_CLEARCOAT\n\t\t\tvar<private> ccSpecularity: f32;\n\t\t\tvar<private> ccGlossiness: f32;\n\t\t\tvar<private> ccNormalW: vec3f;\n\t\t#endif\n\t\t#ifdef LIT_GGX_SPECULAR\n\t\t\tvar<private> dAnisotropy: f32;\n\t\t\tvar<private> dAnisotropyRotation: vec2f;\n\t\t#endif\n\t\t#ifdef LIT_SPECULAR_OR_REFLECTION\n\t\t\t#ifdef LIT_SHEEN\n\t\t\t\tvar<private> sSpecularity: vec3f;\n\t\t\t\tvar<private> sGlossiness: f32;\n\t\t\t\t#ifdef STD_SHEEN_TEXTURE_ALLOCATE\n\t\t\t\t\tvar texture_sheenMap : texture_2d<f32>;\n\t\t\t\t\tvar texture_sheenMapSampler : sampler;\n\t\t\t\t#endif\n\t\t\t\t#ifdef STD_SHEENGLOSS_TEXTURE_ALLOCATE\n\t\t\t\t\tvar texture_sheenGlossMap : texture_2d<f32>;\n\t\t\t\t\tvar texture_sheenGlossMapSampler : sampler;\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t\t#ifdef LIT_METALNESS\n\t\t\t\tvar<private> dMetalness: f32;\n\t\t\t\tvar<private> dIor: f32;\n\t\t\t\t#ifdef STD_METALNESS_TEXTURE_ALLOCATE\n\t\t\t\t\tvar texture_metalnessMap : texture_2d<f32>;\n\t\t\t\t\tvar texture_metalnessMapSampler : sampler;\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t\t#ifdef LIT_SPECULARITY_FACTOR\n\t\t\t\tvar<private> dSpecularityFactor: f32;\n\t\t\t\t#ifdef STD_SPECULARITYFACTOR_TEXTURE_ALLOCATE\n\t\t\t\t\tvar texture_specularityFactorMap : texture_2d<f32>;\n\t\t\t\t\tvar texture_specularityFactorMapSampler : sampler;\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t\t#ifdef STD_SPECULAR_COLOR\n\t\t\t\t#ifdef STD_SPECULAR_TEXTURE_ALLOCATE\n\t\t\t\t\tvar texture_specularMap : texture_2d<f32>;\n\t\t\t\t\tvar texture_specularMapSampler : sampler;\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t\t#ifdef STD_GLOSS_TEXTURE_ALLOCATE\n\t\t\t\tvar texture_glossMap : texture_2d<f32>;\n\t\t\t\tvar texture_glossMapSampler : sampler;\n\t\t\t#endif\n\t\t#endif\n\t\t#ifdef STD_AO\n\t\t\tvar <private> dAo: f32;\n\t\t\t#ifdef STD_AO_TEXTURE_ALLOCATE\n\t\t\t\tvar texture_aoMap : texture_2d<f32>;\n\t\t\t\tvar texture_aoMapSampler : sampler;\n\t\t\t#endif\n\t\t\t#ifdef STD_AODETAIL_TEXTURE_ALLOCATE\n\t\t\t\tvar texture_aoDetailMap : texture_2d<f32>;\n\t\t\t\tvar texture_aoDetailMapSampler : sampler;\n\t\t\t#endif\n\t\t#endif\n\t\tvar <private> dEmission: vec3f;\n\t\t#ifdef STD_EMISSIVE_TEXTURE_ALLOCATE\n\t\t\tvar texture_emissiveMap : texture_2d<f32>;\n\t\t\tvar texture_emissiveMapSampler : sampler;\n\t\t#endif\n\t\t#ifdef LIT_CLEARCOAT\n\t\t\t#ifdef STD_CLEARCOAT_TEXTURE_ALLOCATE\n\t\t\t\tvar texture_clearCoatMap : texture_2d<f32>;\n\t\t\t\tvar texture_clearCoatMapSampler : sampler;\n\t\t\t#endif\n\t\t\t#ifdef STD_CLEARCOATGLOSS_TEXTURE_ALLOCATE\n\t\t\t\tvar texture_clearCoatGlossMap : texture_2d<f32>;\n\t\t\t\tvar texture_clearCoatGlossMapSampler : sampler;\n\t\t\t#endif\n\t\t\t#ifdef STD_CLEARCOATNORMAL_TEXTURE_ALLOCATE\n\t\t\t\tvar texture_clearCoatNormalMap : texture_2d<f32>;\n\t\t\t\tvar texture_clearCoatNormalMapSampler : sampler;\n\t\t\t#endif\n\t\t#endif\n\t\t#ifdef LIT_GGX_SPECULAR\n\t\t\t#ifdef STD_ANISOTROPY_TEXTURE_ALLOCATE\n\t\t\t\tvar texture_anisotropyMap : texture_2d<f32>;\n\t\t\t\tvar texture_anisotropyMapSampler : sampler;\n\t\t\t#endif\n\t\t#endif\n\t\t#if defined(STD_LIGHTMAP) || defined(STD_LIGHT_VERTEX_COLOR)\n\t\t\tvar<private> dLightmap: vec3f;\n\t\t\t#ifdef STD_LIGHT_TEXTURE_ALLOCATE\n\t\t\t\tvar texture_lightMap : texture_2d<f32>;\n\t\t\t\tvar texture_lightMapSampler : sampler;\n\t\t\t#endif\n\t\t#endif\n\t#endif\n\t#include \"litShaderCorePS\"\n`;\n\nvar stdFrontEndPS = `\n\t#if LIT_BLEND_TYPE != NONE || defined(LIT_ALPHA_TEST) || defined(LIT_ALPHA_TO_COVERAGE) || STD_OPACITY_DITHER != NONE\n\t\t#include \"opacityPS\"\n\t\t#if defined(LIT_ALPHA_TEST)\n\t\t\t#include \"alphaTestPS\"\n\t\t#endif\n\t\t#if STD_OPACITY_DITHER != NONE\n\t\t\t#include \"opacityDitherPS\"\n\t\t#endif\n\t#endif\n\t#ifdef FORWARD_PASS\n\t\t#ifdef STD_HEIGHT_MAP\n\t\t\t#include \"parallaxPS\"\n\t\t#endif\n\t\t#include  \"diffusePS\"\n\t\t#ifdef LIT_NEEDS_NORMAL\n\t\t\t#include \"normalMapPS\"\n\t\t#endif\n\t\t#ifdef LIT_REFRACTION\n\t\t\t#include \"transmissionPS\"\n\t\t\t#include \"thicknessPS\"\n\t\t#endif\n\t\t#ifdef LIT_IRIDESCENCE\n\t\t\t#include \"iridescencePS\"\n\t\t\t#include \"iridescenceThicknessPS\"\n\t\t#endif\n\t\t#ifdef LIT_SPECULAR_OR_REFLECTION\n\t\t\t#ifdef LIT_SHEEN\n\t\t\t\t#include \"sheenPS\"\n\t\t\t\t#include \"sheenGlossPS\"\n\t\t\t#endif\n\t\t\t#ifdef LIT_METALNESS\n\t\t\t\t#include \"metalnessPS\"\n\t\t\t\t#include \"iorPS\"\n\t\t\t#endif\n\t\t\t#ifdef LIT_SPECULARITY_FACTOR\n\t\t\t\t#include \"specularityFactorPS\"\n\t\t\t#endif\n\t\t\t#ifdef STD_SPECULAR_COLOR\n\t\t\t\t#include \"specularPS\"\n\t\t\t#else\n\t\t\t\tfn getSpecularity() { \n\t\t\t\t\tdSpecularity = vec3f(1.0, 1.0, 1.0);\n\t\t\t\t}\n\t\t\t#endif\n\t\t\t#include \"glossPS\"\n\t\t#endif\n\t\t#ifdef STD_AO\n\t\t\t#include \"aoPS\"\n\t\t#endif\n\t\t#include \"emissivePS\"\n\t\t#ifdef LIT_CLEARCOAT\n\t\t\t#include \"clearCoatPS\"\n\t\t\t#include \"clearCoatGlossPS\"\n\t\t\t#include \"clearCoatNormalPS\"\n\t\t#endif\n\t\t#if defined(LIT_SPECULAR) && defined(LIT_LIGHTING) && defined(LIT_GGX_SPECULAR)\n\t\t\t#include \"anisotropyPS\"\n\t\t#endif\n\t\t#if defined(STD_LIGHTMAP) || defined(STD_LIGHT_VERTEX_COLOR)\n\t\t\t#include \"lightmapPS\"\n\t\t#endif\n\t#endif\n\tfn evaluateFrontend() {\n\t\t#if LIT_BLEND_TYPE != NONE || defined(LIT_ALPHA_TEST) || defined(LIT_ALPHA_TO_COVERAGE) || STD_OPACITY_DITHER != NONE\n\t\t\tgetOpacity();\n\t\t\t#if defined(LIT_ALPHA_TEST)\n\t\t\t\talphaTest(dAlpha);\n\t\t\t#endif\n\t\t\t#if STD_OPACITY_DITHER != NONE\n\t\t\t\topacityDither(dAlpha, 0.0);\n\t\t\t#endif\n\t\t\tlitArgs_opacity = dAlpha;\n\t\t#endif\n\t\t#ifdef FORWARD_PASS\n\t\t\t#ifdef STD_HEIGHT_MAP\n\t\t\t\tgetParallax();\n\t\t\t#endif\n\t\t\tgetAlbedo();\n\t\t\tlitArgs_albedo = dAlbedo;\n\t\t\t#ifdef LIT_NEEDS_NORMAL\n\t\t\t\tgetNormal();\n\t\t\t\tlitArgs_worldNormal = dNormalW;\n\t\t\t#endif\n\t\t\t#ifdef LIT_REFRACTION\n\t\t\t\tgetRefraction();\n\t\t\t\tlitArgs_transmission = dTransmission;\n\t\t\t\tgetThickness();\n\t\t\t\tlitArgs_thickness = dThickness;\n\t\t\t\t#ifdef LIT_DISPERSION\n\t\t\t\t\tlitArgs_dispersion = uniform.material_dispersion;\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t\t#ifdef LIT_IRIDESCENCE\n\t\t\t\tgetIridescence();\n\t\t\t\tgetIridescenceThickness();\n\t\t\t\tlitArgs_iridescence_intensity = dIridescence;\n\t\t\t\tlitArgs_iridescence_thickness = dIridescenceThickness;\n\t\t\t#endif\n\t\t\t#ifdef LIT_SPECULAR_OR_REFLECTION\n\t\t\t\t#ifdef LIT_SHEEN\n\t\t\t\t\tgetSheen();\n\t\t\t\t\tlitArgs_sheen_specularity = sSpecularity;\n\t\t\t\t\tgetSheenGlossiness();\n\t\t\t\t\tlitArgs_sheen_gloss = sGlossiness;\n\t\t\t\t#endif\n\t\t\t\t#ifdef LIT_METALNESS\n\t\t\t\t\tgetMetalness();\n\t\t\t\t\tlitArgs_metalness = dMetalness;\n\t\t\t\t\tgetIor();\n\t\t\t\t\tlitArgs_ior = dIor;\n\t\t\t\t#endif\n\t\t\t\t#ifdef LIT_SPECULARITY_FACTOR\n\t\t\t\t\tgetSpecularityFactor();\n\t\t\t\t\tlitArgs_specularityFactor = dSpecularityFactor;\n\t\t\t\t#endif\n\t\t\t\tgetGlossiness();\n\t\t\t\tgetSpecularity();\n\t\t\t\tlitArgs_specularity = dSpecularity;\n\t\t\t\tlitArgs_gloss = dGlossiness;\n\t\t\t#endif\n\t\t\t#ifdef STD_AO\n\t\t\t\tgetAO();\n\t\t\t\tlitArgs_ao = dAo;\n\t\t\t#endif\n\t\t\tgetEmission();\n\t\t\tlitArgs_emission = dEmission;\n\t\t\t#ifdef LIT_CLEARCOAT\n\t\t\t\tgetClearCoat();\n\t\t\t\tgetClearCoatGlossiness();\n\t\t\t\tgetClearCoatNormal();\n\t\t\t\tlitArgs_clearcoat_specularity = ccSpecularity;\n\t\t\t\tlitArgs_clearcoat_gloss = ccGlossiness;\n\t\t\t\tlitArgs_clearcoat_worldNormal = ccNormalW;\n\t\t\t#endif\n\t\t\t#if defined(LIT_SPECULAR) && defined(LIT_LIGHTING) && defined(LIT_GGX_SPECULAR)\n\t\t\t\tgetAnisotropy();\n\t\t\t#endif\n\t\t\t#if defined(STD_LIGHTMAP) || defined(STD_LIGHT_VERTEX_COLOR)\n\t\t\t\tgetLightMap();\n\t\t\t\tlitArgs_lightmap = dLightmap;\n\t\t\t\t#ifdef STD_LIGHTMAP_DIR\n\t\t\t\t\tlitArgs_lightmapDir = dLightmapDir;\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t#endif\n\t}\n`;\n\nvar TBNPS = `\n#ifdef LIT_TANGENTS\n\t#define TBN_TANGENTS\n#else\n\t#if defined(LIT_USE_NORMALS) || defined(LIT_USE_CLEARCOAT_NORMALS)\n\t\t#define TBN_DERIVATIVES\n\t#endif\n#endif\n#if defined(TBN_DERIVATIVES)\n\tuniform tbnBasis: f32;\n#endif\nfn getTBN(tangent: vec3f, binormal: vec3f, normal: vec3f) {\n\t#ifdef TBN_TANGENTS\n\t\tdTBN = mat3x3f(normalize(tangent), normalize(binormal), normalize(normal));\n\t#elif defined(TBN_DERIVATIVES)\n\t\tlet uv: vec2f = {lightingUv};\n\t\tlet dp1: vec3f = dpdx( vPositionW );\n\t\tlet dp2: vec3f = dpdy( vPositionW );\n\t\tlet duv1: vec2f = dpdx( uv );\n\t\tlet duv2: vec2f = dpdy( uv );\n\t\tlet dp2perp: vec3f = cross( dp2, normal );\n\t\tlet dp1perp: vec3f = cross( normal, dp1 );\n\t\tlet T: vec3f = dp2perp * duv1.x + dp1perp * duv2.x;\n\t\tlet B: vec3f = dp2perp * duv1.y + dp1perp * duv2.y;\n\t\tlet denom: f32 = max( dot(T, T), dot(B, B) );\n\t\tlet invmax: f32 = select(uniform.tbnBasis / sqrt( denom ), 0.0, denom == 0.0);\n\t\tdTBN = mat3x3f(T * invmax, -B * invmax, normal );\n\t#else\n\t\tvar B: vec3f = cross(normal, vObjectSpaceUpW);\n\t\tvar T: vec3f = cross(normal, B);\n\t\tif (dot(B,B) == 0.0)\n\t\t{\n\t\t\tlet major: f32 = max(max(normal.x, normal.y), normal.z);\n\t\t\tif (normal.x == major)\n\t\t\t{\n\t\t\t\tB = cross(normal, vec3f(0.0, 1.0, 0.0));\n\t\t\t\tT = cross(normal, B);\n\t\t\t}\n\t\t\telse if (normal.y == major)\n\t\t\t{\n\t\t\t\tB = cross(normal, vec3f(0.0, 0.0, 1.0));\n\t\t\t\tT = cross(normal, B);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tB = cross(normal, vec3f(1.0, 0.0, 0.0));\n\t\t\t\tT = cross(normal, B);\n\t\t\t}\n\t\t}\n\t\tdTBN = mat3x3f(normalize(T), normalize(B), normalize(normal));\n\t#endif\n}`;\n\nvar thicknessPS = `\n#ifdef STD_THICKNESS_CONSTANT\nuniform material_thickness: f32;\n#endif\nfn getThickness() {\n\tdThickness = 1.0;\n\t#ifdef STD_THICKNESS_CONSTANT\n\tdThickness = dThickness * uniform.material_thickness;\n\t#endif\n\t#ifdef STD_THICKNESS_TEXTURE\n\tdThickness = dThickness * textureSampleBias({STD_THICKNESS_TEXTURE_NAME}, {STD_THICKNESS_TEXTURE_NAME}Sampler, {STD_THICKNESS_TEXTURE_UV}, uniform.textureBias).{STD_THICKNESS_TEXTURE_CHANNEL};\n\t#endif\n\t#ifdef STD_THICKNESS_VERTEX\n\tdThickness = dThickness * saturate(vVertexColor.{STD_THICKNESS_VERTEX_CHANNEL});\n\t#endif\n}\n`;\n\nvar tonemappingPS = `\n#if (TONEMAP == NONE)\n\t#include \"tonemappingNonePS\"\n#elif TONEMAP == FILMIC\n\t#include \"tonemappingFilmicPS\"\n#elif TONEMAP == LINEAR\n\t#include \"tonemappingLinearPS\"\n#elif TONEMAP == HEJL\n\t#include \"tonemappingHejlPS\"\n#elif TONEMAP == ACES\n\t#include \"tonemappingAcesPS\"\n#elif TONEMAP == ACES2\n\t#include \"tonemappingAces2PS\"\n#elif TONEMAP == NEUTRAL\n\t#include \"tonemappingNeutralPS\"\n#endif\n`;\n\nvar tonemappingAcesPS = `\nuniform exposure: f32;\nfn toneMap(color: vec3f) -> vec3f {\n\tlet tA: f32 = 2.51;\n\tlet tB: f32 = 0.03;\n\tlet tC: f32 = 2.43;\n\tlet tD: f32 = 0.59;\n\tlet tE: f32 = 0.14;\n\tlet x: vec3f = color * uniform.exposure;\n\treturn (x * (tA * x + tB)) / (x * (tC * x + tD) + tE);\n}\n`;\n\nvar tonemappingAces2PS = `\nuniform exposure: f32;\nconst ACESInputMat: mat3x3f = mat3x3f(\n\tvec3f(0.59719, 0.35458, 0.04823),\n\tvec3f(0.07600, 0.90834, 0.01566),\n\tvec3f(0.02840, 0.13383, 0.83777)\n);\nconst ACESOutputMat: mat3x3f = mat3x3f(\n\tvec3f( 1.60475, -0.53108, -0.07367),\n\tvec3f(-0.10208,  1.10813, -0.00605),\n\tvec3f(-0.00327, -0.07276,  1.07602)\n);\nfn RRTAndODTFit(v: vec3f) -> vec3f {\n\tlet a: vec3f = v * (v + vec3f(0.0245786)) - vec3f(0.000090537);\n\tlet b: vec3f = v * (vec3f(0.983729) * v + vec3f(0.4329510)) + vec3f(0.238081);\n\treturn a / b;\n}\nfn toneMap(color: vec3f) -> vec3f {\n\tvar c: vec3f = color * (uniform.exposure / 0.6);\n\tc = c * ACESInputMat;\n\tc = RRTAndODTFit(c);\n\tc = c * ACESOutputMat;\n\treturn clamp(c, vec3f(0.0), vec3f(1.0));\n}\n`;\n\nvar tonemappingFilmicPS = `\nconst A: f32 = 0.15;\nconst B: f32 = 0.50;\nconst C: f32 = 0.10;\nconst D: f32 = 0.20;\nconst E: f32 = 0.02;\nconst F: f32 = 0.30;\nconst W: f32 = 11.2;\nuniform exposure: f32;\nfn uncharted2Tonemap(x: vec3f) -> vec3f {\n\treturn ((x * (A * x + C * B) + D * E) / (x * (A * x + B) + D * F)) - vec3f(E / F);\n}\nfn toneMap(color: vec3f) -> vec3f {\n\tvar c: vec3f = uncharted2Tonemap(color * uniform.exposure);\n\tlet whiteScale: vec3f = vec3f(1.0) / uncharted2Tonemap(vec3f(W, W, W));\n\tc *= whiteScale;\n\treturn c;\n}\n`;\n\nvar tonemappingHejlPS = `\nuniform exposure: f32;\nfn toneMap(color: vec3f) -> vec3f {\n\tlet A: f32 = 0.22;\n\tlet B: f32 = 0.3;\n\tlet C: f32 = 0.1;\n\tlet D: f32 = 0.2;\n\tlet E: f32 = 0.01;\n\tlet F: f32 = 0.3;\n\tlet Scl: f32 = 1.25;\n\tlet adjusted_color = color * uniform.exposure;\n\tlet h = max(vec3f(0.0), adjusted_color - vec3f(0.004));\n\treturn (h * ((Scl * A) * h + Scl * vec3f(C * B)) + Scl * vec3f(D * E)) /\n\t\t   (h * (A * h + vec3f(B)) + vec3f(D * F)) -\n\t\t   Scl * vec3f(E / F);\n}\n`;\n\nvar tonemappingLinearPS = `\nuniform exposure: f32;\nfn toneMap(color: vec3f) -> vec3f {\n\treturn color * uniform.exposure;\n}\n`;\n\nvar tonemappingNeutralPS = `\nuniform exposure: f32;\nfn toneMap(col: vec3f) -> vec3f {\n\tvar color = col * uniform.exposure;\n\tlet startCompression = 0.8 - 0.04;\n\tlet desaturation = 0.15;\n\tlet x = min(color.r, min(color.g, color.b));\n\tlet offset = select(0.04, x - 6.25 * x * x, x < 0.08);\n\tcolor -= vec3f(offset);\n\tlet peak = max(color.r, max(color.g, color.b));\n\tif (peak < startCompression) {\n\t\treturn color;\n\t}\n\tlet d = 1.0 - startCompression;\n\tlet newPeak = 1.0 - d * d / (peak + d - startCompression);\n\tcolor *= newPeak / peak;\n\tlet g = 1.0 - 1.0 / (desaturation * (peak - newPeak) + 1.0);\n\treturn mix(color, vec3f(newPeak), vec3f(g));\n}\n`;\n\nvar tonemappingNonePS = `\nfn toneMap(color: vec3f) -> vec3f {\n\treturn color;\n}\n`;\n\nvar transformVS = `\n#ifdef PIXELSNAP\n\tuniform uScreenSize: vec4f;\n#endif\n#ifdef SCREENSPACE\n\tuniform projectionFlipY: f32;\n#endif\nfn evalWorldPosition(vertexPosition: vec3f, modelMatrix: mat4x4f) -> vec4f {\n\tvar localPos: vec3f = getLocalPosition(vertexPosition);\n\t#ifdef NINESLICED\n\t\tvar localPosXZ: vec2f = localPos.xz;\n\t\tlocalPosXZ = localPosXZ * uniform.outerScale;\n\t\tlet positiveUnitOffset: vec2f = clamp(vertexPosition.xz, vec2f(0.0), vec2f(1.0));\n\t\tlet negativeUnitOffset: vec2f = clamp(-vertexPosition.xz, vec2f(0.0), vec2f(1.0));\n\t\tlocalPosXZ = localPosXZ + (-positiveUnitOffset * uniform.innerOffset.xy + negativeUnitOffset * uniform.innerOffset.zw) * vertex_texCoord0.xy;\n\t\tdTiledUvGlobal = (localPosXZ - uniform.outerScale + uniform.innerOffset.xy) * -0.5 + 1.0;\n\t\tlocalPosXZ = localPosXZ * -0.5;\n\t\tlocalPos = vec3f(localPosXZ.x, localPosXZ.y, localPos.y);\n\t#endif\n\tvar posW: vec4f = modelMatrix * vec4f(localPos, 1.0);\n\t#ifdef SCREENSPACE\n\t\tposW = vec4f(posW.xy, 0.0, 1.0);\n\t#endif\n\treturn posW;\n}\nfn getPosition() -> vec4f {\n\tdModelMatrix = getModelMatrix();\n\tlet posW: vec4f = evalWorldPosition(vertex_position.xyz, dModelMatrix);\n\tdPositionW = posW.xyz;\n\tvar screenPos: vec4f;\n\t#ifdef UV1LAYOUT\n\t\tscreenPos = vec4f(vertex_texCoord1.xy * 2.0 - 1.0, 0.5, 1.0);\n\t\tscreenPos.y *= -1.0;\n\t#else\n\t\t#ifdef SCREENSPACE\n\t\t\tscreenPos = posW;\n\t\t\tscreenPos.y *= uniform.projectionFlipY;\n\t\t#else\n\t\t\tscreenPos = uniform.matrix_viewProjection * posW;\n\t\t#endif\n\t\t#ifdef PIXELSNAP\n\t\t\tscreenPos.xy = (screenPos.xy * 0.5) + 0.5;\n\t\t\tscreenPos.xy *= uniforms.uScreenSize.xy;\n\t\t\tscreenPos.xy = floor(screenPos.xy);\n\t\t\tscreenPos.xy *= uniforms.uScreenSize.zw;\n\t\t\tscreenPos.xy = (screenPos.xy * 2.0) - 1.0;\n\t\t#endif\n\t#endif\n\treturn screenPos;\n}\nfn getWorldPosition() -> vec3f {\n\treturn dPositionW;\n}\n`;\n\nvar transformCoreVS = `\n\tattribute vertex_position: vec4f;\n\tuniform matrix_viewProjection: mat4x4f;\n\tuniform matrix_model: mat4x4f;\n\t\n\t#ifdef MORPHING\n\t\tuniform morph_tex_params: vec2f;\n\t\tattribute morph_vertex_id: u32;\n\t\tfn getTextureMorphCoords() -> vec2i {\n\t\t\tvar textureSize: vec2i = vec2i(uniform.morph_tex_params);\n\t\t\tvar morphGridV: i32 = i32(morph_vertex_id) / textureSize.x;\n\t\t\tvar morphGridU: i32 = i32(morph_vertex_id) - (morphGridV * textureSize.x);\n\t\t\tmorphGridV = textureSize.y - morphGridV - 1;\n\t\t\treturn vec2i(morphGridU, morphGridV);\n\t\t}\n\t\t#ifdef MORPHING_POSITION\n\t\t\t#ifdef MORPHING_INT\n\t\t\t\tuniform aabbSize: vec3f;\n\t\t\t\tuniform aabbMin: vec3f;\n\t\t\t\tvar morphPositionTex: texture_2d<u32>;\n\t\t\t#else\n\t\t\t\tvar morphPositionTex: texture_2d<f32>;\n\t\t\t#endif\n\t\t#endif\n\t#endif\n\t#ifdef defined(BATCH)\n\t\t#include \"skinBatchVS\"\n\t\tfn getModelMatrix() -> mat4x4f {\n\t\t\treturn getBoneMatrix(vertex_boneIndices);\n\t\t}\n\t#elif defined(SKIN)\n\t\t#include \"skinVS\"\n\t\tfn getModelMatrix() -> mat4x4f {\n\t\t\treturn uniform.matrix_model * getSkinMatrix(vertex_boneIndices, vertex_boneWeights);\n\t\t}\n\t#elif defined(INSTANCING)\n\t\t#include \"transformInstancingVS\"\n\t#else\n\t\tfn getModelMatrix() -> mat4x4f {\n\t\t\treturn uniform.matrix_model;\n\t\t}\n\t#endif\n\tfn getLocalPosition(vertexPosition: vec3f) -> vec3f {\n\t\tvar localPos: vec3f = vertexPosition;\n\t\t#ifdef MORPHING_POSITION\n\t\t\tvar morphUV: vec2i = getTextureMorphCoords();\n\t\t\t#ifdef MORPHING_INT\n\t\t\t\tvar morphPos: vec3f = vec3f(textureLoad(morphPositionTex, morphUV, 0).xyz) / 65535.0 * uniform.aabbSize + uniform.aabbMin;\n\t\t\t#else\n\t\t\t\tvar morphPos: vec3f = textureLoad(morphPositionTex, morphUV, 0).xyz;\n\t\t\t#endif\n\t\t\tlocalPos += morphPos;\n\t\t#endif\n\t\treturn localPos;\n\t}\n`;\n\nvar transformInstancingVS = `\nattribute instance_line1: vec4f;\nattribute instance_line2: vec4f;\nattribute instance_line3: vec4f;\nattribute instance_line4: vec4f;\nfn getModelMatrix() -> mat4x4f {\n\treturn uniform.matrix_model * mat4x4f(instance_line1, instance_line2, instance_line3, instance_line4);\n}\n`;\n\nvar transmissionPS = `\n#ifdef STD_REFRACTION_CONSTANT\n\tuniform material_refraction: f32;\n#endif\nfn getRefraction() {\n\tvar refraction: f32 = 1.0;\n\t#ifdef STD_REFRACTION_CONSTANT\n\trefraction = uniform.material_refraction;\n\t#endif\n\t#ifdef STD_REFRACTION_TEXTURE\n\trefraction = refraction * textureSampleBias({STD_REFRACTION_TEXTURE_NAME}, {STD_REFRACTION_TEXTURE_NAME}Sampler, {STD_REFRACTION_TEXTURE_UV}, uniform.textureBias).{STD_REFRACTION_TEXTURE_CHANNEL};\n\t#endif\n\t#ifdef STD_REFRACTION_VERTEX\n\trefraction = refraction * saturate(vVertexColor.{STD_REFRACTION_VERTEX_CHANNEL});\n\t#endif\n\tdTransmission = refraction;\n}\n`;\n\nvar twoSidedLightingPS = `\nuniform twoSidedLightingNegScaleFactor: f32;\nfn handleTwoSidedLighting() {\n\tdTBN[2] = dTBN[2] * select(-uniform.twoSidedLightingNegScaleFactor, uniform.twoSidedLightingNegScaleFactor, pcFrontFacing);\n}\n`;\n\nvar uv0VS = `\n#ifdef NINESLICED\n\tfn getUv0() -> vec2f {\n\t\tvar uv = vertex_position.xz;\n\t\tlet positiveUnitOffset = clamp(vertex_position.xz, vec2f(0.0, 0.0), vec2f(1.0, 1.0));\n\t\tlet negativeUnitOffset = clamp(-vertex_position.xz, vec2f(0.0, 0.0), vec2f(1.0, 1.0));\n\t\tuv = uv + ((-positiveUnitOffset * uniform.innerOffset.xy) + (negativeUnitOffset * uniform.innerOffset.zw)) * vertex_texCoord0.xy;\n\t\tuv = uv * -0.5 + vec2f(0.5, 0.5);\n\t\tuv = uv * uniform.atlasRect.zw + uniform.atlasRect.xy;\n\t\tdMaskGlobal = vertex_texCoord0.xy;\n\t\treturn uv;\n\t}\n#else\n\tfn getUv0() -> vec2f {\n\t\treturn vertex_texCoord0;\n\t}\n#endif\n`;\n\nvar uv1VS = `\nfn getUv1() -> vec2f {\n\treturn vertex_texCoord1;\n}\n`;\n\nvar uvTransformVS = `\noutput.vUV{TRANSFORM_UV_{i}}_{TRANSFORM_ID_{i}} = vec2f(\n\tdot(vec3f(uv{TRANSFORM_UV_{i}}, 1), uniform.{TRANSFORM_NAME_{i}}0),\n\tdot(vec3f(uv{TRANSFORM_UV_{i}}, 1), uniform.{TRANSFORM_NAME_{i}}1)\n);\n`;\n\nvar uvTransformUniformsPS = `\n\tuniform {TRANSFORM_NAME_{i}}0: vec3f;\n\tuniform {TRANSFORM_NAME_{i}}1: vec3f;\n`;\n\nvar viewDirPS = `\nfn getViewDir() {\n\tdViewDirW = normalize(uniform.view_position - vPositionW);\n}\n`;\n\nconst shaderChunksWGSL = {\n\t\talphaTestPS,\n\t\tambientPS,\n\t\tanisotropyPS,\n\t\taoPS,\n\t\taoDiffuseOccPS,\n\t\taoSpecOccPS,\n\t\tbakeDirLmEndPS,\n\t\tbakeLmEndPS,\n\t\tbasePS,\n\t\tbaseNineSlicedPS,\n\t\tbaseNineSlicedTiledPS,\n\t\tbayerPS,\n\t\tblurVSMPS,\n\t\tclearCoatPS,\n\t\tclearCoatGlossPS,\n\t\tclearCoatNormalPS,\n\t\tclusteredLightCookiesPS,\n\t\tclusteredLightShadowsPS,\n\t\tclusteredLightUtilsPS,\n\t\tclusteredLightPS,\n\t\tcombinePS,\n\t\tcookieBlit2DPS,\n\t\tcookieBlitCubePS,\n\t\tcookieBlitVS,\n\t\tcubeMapProjectPS,\n\t\tcubeMapRotatePS,\n\t\tdebugOutputPS,\n\t\tdebugProcessFrontendPS,\n\t\tdetailModesPS,\n\t\tdiffusePS,\n\t\tdecodePS,\n\t\temissivePS,\n\t\tencodePS,\n\t\tendPS,\n\t\tenvAtlasPS,\n\t\tenvProcPS,\n\t\tfalloffInvSquaredPS,\n\t\tfalloffLinearPS,\n\t\tfloatAsUintPS,\n\t\tfogPS,\n\t\tfresnelSchlickPS,\n\t\tfrontendCodePS: '',\n\t\tfrontendDeclPS: '',\n\t\tfullscreenQuadVS,\n\t\tgammaPS,\n\t\tglossPS,\n\t\tquadVS,\n\t\tindirectCoreCS,\n\t\timmediateLinePS,\n\t\timmediateLineVS,\n\t\tiridescenceDiffractionPS,\n\t\tiridescencePS,\n\t\tiridescenceThicknessPS,\n\t\tiorPS,\n\t\tlightDeclarationPS,\n\t\tlightDiffuseLambertPS,\n\t\tlightDirPointPS,\n\t\tlightEvaluationPS,\n\t\tlightFunctionLightPS,\n\t\tlightFunctionShadowPS,\n\t\tlightingPS,\n\t\tlightmapAddPS,\n\t\tlightmapPS,\n\t\tlightSpecularAnisoGGXPS,\n\t\tlightSpecularBlinnPS,\n\t\tlightSheenPS,\n\t\tlinearizeDepthPS,\n\t\tlitForwardBackendPS,\n\t\tlitForwardDeclarationPS,\n\t\tlitForwardMainPS,\n\t\tlitForwardPostCodePS,\n\t\tlitForwardPreCodePS,\n\t\tlitMainPS,\n\t\tlitMainVS,\n\t\tlitOtherMainPS,\n\t\tlitShaderArgsPS,\n\t\tlitShaderCorePS,\n\t\tlitShadowMainPS,\n\t\tlitUserDeclarationPS: '',\n\t\tlitUserDeclarationVS: '',\n\t\tlitUserCodePS: '',\n\t\tlitUserCodeVS: '',\n\t\tlitUserMainStartPS: '',\n\t\tlitUserMainStartVS: '',\n\t\tlitUserMainEndPS: '',\n\t\tlitUserMainEndVS: '',\n\t\tltcPS,\n\t\tmetalnessPS,\n\t\tmetalnessModulatePS,\n\t\tmorphPS,\n\t\tmorphVS,\n\t\tmsdfPS,\n\t\tmsdfVS,\n\t\tnormalVS,\n\t\tnormalCoreVS,\n\t\tnormalMapPS,\n\t\topacityPS,\n\t\topacityDitherPS,\n\t\toutputPS,\n\t\toutputAlphaPS,\n\t\tpackHalfPS,\n\t\toutputTex2DPS,\n\t\tsheenPS,\n\t\tsheenGlossPS,\n\t\tparallaxPS,\n\t\tpickPS,\n\t\treflDirPS,\n\t\treflDirAnisoPS,\n\t\treflectionCCPS,\n\t\treflectionCubePS,\n\t\treflectionEnvHQPS,\n\t\treflectionEnvPS,\n\t\treflectionSpherePS,\n\t\treflectionSheenPS,\n\t\trefractionCubePS,\n\t\trefractionDynamicPS,\n\t\treprojectPS,\n\t\treprojectVS,\n\t\tscreenDepthPS,\n\t\tshadowCascadesPS,\n\t\tshadowEVSMPS,\n\t\tshadowPCF1PS,\n\t\tshadowPCF3PS,\n\t\tshadowPCF5PS,\n\t\tshadowSoftPS,\n\t\tskinBatchVS,\n\t\tskinVS,\n\t\tskyboxPS,\n\t\tskyboxVS,\n\t\tspecularPS,\n\t\tsphericalPS,\n\t\tspecularityFactorPS,\n\t\tspotPS,\n\t\tstartNineSlicedPS,\n\t\tstartNineSlicedTiledPS,\n\t\tstdDeclarationPS,\n\t\tstdFrontEndPS,\n\t\tTBNPS,\n\t\tthicknessPS,\n\t\ttonemappingPS,\n\t\ttonemappingAcesPS,\n\t\ttonemappingAces2PS,\n\t\ttonemappingFilmicPS,\n\t\ttonemappingHejlPS,\n\t\ttonemappingLinearPS,\n\t\ttonemappingNeutralPS,\n\t\ttonemappingNonePS,\n\t\ttransformVS,\n\t\ttransformCoreVS,\n\t\ttransformInstancingVS,\n\t\ttransmissionPS,\n\t\ttwoSidedLightingPS,\n\t\tuv0VS,\n\t\tuv1VS,\n\t\tuvTransformVS,\n\t\tuvTransformUniformsPS,\n\t\tviewDirPS,\n\t\twebgpuPS,\n\t\twebgpuVS\n};\n\nlet app = null;\nclass AppBase extends EventHandler {\n\t\tconstructor(canvas){\n\t\t\t\tsuper(), this._batcher = null, this._destroyRequested = false, this._inFrameUpdate = false, this._librariesLoaded = false, this._fillMode = FILLMODE_KEEP_ASPECT, this._resolutionMode = RESOLUTION_FIXED, this._allowResize = true, this._skyboxAsset = null, this._entityIndex = {}, this._inTools = false, this._scriptPrefix = '', this._time = 0, this.enableBundles = typeof TextDecoder !== 'undefined', this.timeScale = 1, this.maxDeltaTime = 0.1, this.frame = 0, this.frameGraph = new FrameGraph(), this.scriptsOrder = [], this.autoRender = true, this.renderNextFrame = false, this.lightmapper = null, this.loader = new ResourceLoader(this), this.scenes = new SceneRegistry(this), this.scripts = new ScriptRegistry(this), this.systems = new ComponentSystemRegistry(), this.i18n = new I18n(this), this.keyboard = null, this.mouse = null, this.touch = null, this.gamepads = null, this.elementInput = null, this.xr = null;\n\t\t\t\tAppBase._applications[canvas.id] = this;\n\t\t\t\tsetApplication(this);\n\t\t\t\tapp = this;\n\t\t\t\tthis.root = new Entity();\n\t\t\t\tthis.root._enabledInHierarchy = true;\n\t\t}\n\t\tinit(appOptions) {\n\t\t\t\tconst { assetPrefix, batchManager, componentSystems, elementInput, gamepads, graphicsDevice, keyboard, lightmapper, mouse, resourceHandlers, scriptsOrder, scriptPrefix, soundManager, touch, xr } = appOptions;\n\t\t\t\tthis.graphicsDevice = graphicsDevice;\n\t\t\t\tShaderChunks.get(graphicsDevice, SHADERLANGUAGE_GLSL).add(shaderChunksGLSL);\n\t\t\t\tShaderChunks.get(graphicsDevice, SHADERLANGUAGE_WGSL).add(shaderChunksWGSL);\n\t\t\t\tthis._initDefaultMaterial();\n\t\t\t\tthis._initProgramLibrary();\n\t\t\t\tthis.stats = new ApplicationStats(graphicsDevice);\n\t\t\t\tthis._soundManager = soundManager;\n\t\t\t\tthis.scene = new Scene(graphicsDevice);\n\t\t\t\tthis._registerSceneImmediate(this.scene);\n\t\t\t\tthis.assets = new AssetRegistry(this.loader);\n\t\t\t\tif (assetPrefix) this.assets.prefix = assetPrefix;\n\t\t\t\tthis.bundles = new BundleRegistry(this.assets);\n\t\t\t\tthis.scriptsOrder = scriptsOrder || [];\n\t\t\t\tthis.defaultLayerWorld = new Layer({\n\t\t\t\t\t\tname: 'World',\n\t\t\t\t\t\tid: LAYERID_WORLD\n\t\t\t\t});\n\t\t\t\tthis.defaultLayerDepth = new Layer({\n\t\t\t\t\t\tname: 'Depth',\n\t\t\t\t\t\tid: LAYERID_DEPTH,\n\t\t\t\t\t\tenabled: false,\n\t\t\t\t\t\topaqueSortMode: SORTMODE_NONE\n\t\t\t\t});\n\t\t\t\tthis.defaultLayerSkybox = new Layer({\n\t\t\t\t\t\tname: 'Skybox',\n\t\t\t\t\t\tid: LAYERID_SKYBOX,\n\t\t\t\t\t\topaqueSortMode: SORTMODE_NONE\n\t\t\t\t});\n\t\t\t\tthis.defaultLayerUi = new Layer({\n\t\t\t\t\t\tname: 'UI',\n\t\t\t\t\t\tid: LAYERID_UI,\n\t\t\t\t\t\ttransparentSortMode: SORTMODE_MANUAL\n\t\t\t\t});\n\t\t\t\tthis.defaultLayerImmediate = new Layer({\n\t\t\t\t\t\tname: 'Immediate',\n\t\t\t\t\t\tid: LAYERID_IMMEDIATE,\n\t\t\t\t\t\topaqueSortMode: SORTMODE_NONE\n\t\t\t\t});\n\t\t\t\tconst defaultLayerComposition = new LayerComposition('default');\n\t\t\t\tdefaultLayerComposition.pushOpaque(this.defaultLayerWorld);\n\t\t\t\tdefaultLayerComposition.pushOpaque(this.defaultLayerDepth);\n\t\t\t\tdefaultLayerComposition.pushOpaque(this.defaultLayerSkybox);\n\t\t\t\tdefaultLayerComposition.pushTransparent(this.defaultLayerWorld);\n\t\t\t\tdefaultLayerComposition.pushOpaque(this.defaultLayerImmediate);\n\t\t\t\tdefaultLayerComposition.pushTransparent(this.defaultLayerImmediate);\n\t\t\t\tdefaultLayerComposition.pushTransparent(this.defaultLayerUi);\n\t\t\t\tthis.scene.layers = defaultLayerComposition;\n\t\t\t\tAreaLightLuts.createPlaceholder(graphicsDevice);\n\t\t\t\tthis.renderer = new ForwardRenderer(graphicsDevice, this.scene);\n\t\t\t\tif (lightmapper) {\n\t\t\t\t\t\tthis.lightmapper = new lightmapper(graphicsDevice, this.root, this.scene, this.renderer, this.assets);\n\t\t\t\t\t\tthis.once('prerender', this._firstBake, this);\n\t\t\t\t}\n\t\t\t\tif (batchManager) {\n\t\t\t\t\t\tthis._batcher = new batchManager(graphicsDevice, this.root, this.scene);\n\t\t\t\t\t\tthis.once('prerender', this._firstBatch, this);\n\t\t\t\t}\n\t\t\t\tthis.keyboard = keyboard || null;\n\t\t\t\tthis.mouse = mouse || null;\n\t\t\t\tthis.touch = touch || null;\n\t\t\t\tthis.gamepads = gamepads || null;\n\t\t\t\tif (elementInput) {\n\t\t\t\t\t\tthis.elementInput = elementInput;\n\t\t\t\t\t\tthis.elementInput.app = this;\n\t\t\t\t}\n\t\t\t\tthis.xr = xr ? new xr(this) : null;\n\t\t\t\tif (this.elementInput) this.elementInput.attachSelectEvents();\n\t\t\t\tthis._scriptPrefix = scriptPrefix || '';\n\t\t\t\tif (this.enableBundles) {\n\t\t\t\t\t\tthis.loader.addHandler('bundle', new BundleHandler(this));\n\t\t\t\t}\n\t\t\t\tresourceHandlers.forEach((resourceHandler)=>{\n\t\t\t\t\t\tconst handler = new resourceHandler(this);\n\t\t\t\t\t\tthis.loader.addHandler(handler.handlerType, handler);\n\t\t\t\t});\n\t\t\t\tcomponentSystems.forEach((componentSystem)=>{\n\t\t\t\t\t\tthis.systems.add(new componentSystem(this));\n\t\t\t\t});\n\t\t\t\tthis._visibilityChangeHandler = this.onVisibilityChange.bind(this);\n\t\t\t\tif (typeof document !== 'undefined') {\n\t\t\t\t\t\tif (document.hidden !== undefined) {\n\t\t\t\t\t\t\t\tthis._hiddenAttr = 'hidden';\n\t\t\t\t\t\t\t\tdocument.addEventListener('visibilitychange', this._visibilityChangeHandler, false);\n\t\t\t\t\t\t} else if (document.mozHidden !== undefined) {\n\t\t\t\t\t\t\t\tthis._hiddenAttr = 'mozHidden';\n\t\t\t\t\t\t\t\tdocument.addEventListener('mozvisibilitychange', this._visibilityChangeHandler, false);\n\t\t\t\t\t\t} else if (document.msHidden !== undefined) {\n\t\t\t\t\t\t\t\tthis._hiddenAttr = 'msHidden';\n\t\t\t\t\t\t\t\tdocument.addEventListener('msvisibilitychange', this._visibilityChangeHandler, false);\n\t\t\t\t\t\t} else if (document.webkitHidden !== undefined) {\n\t\t\t\t\t\t\t\tthis._hiddenAttr = 'webkitHidden';\n\t\t\t\t\t\t\t\tdocument.addEventListener('webkitvisibilitychange', this._visibilityChangeHandler, false);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.tick = makeTick(this);\n\t\t}\n\t\tstatic{\n\t\t\t\tthis._applications = {};\n\t\t}\n\t\tstatic getApplication(id) {\n\t\t\t\treturn id ? AppBase._applications[id] : getApplication();\n\t\t}\n\t\t_initDefaultMaterial() {\n\t\t\t\tconst material = new StandardMaterial();\n\t\t\t\tmaterial.name = 'Default Material';\n\t\t\t\tsetDefaultMaterial(this.graphicsDevice, material);\n\t\t}\n\t\t_initProgramLibrary() {\n\t\t\t\tconst library = new ProgramLibrary(this.graphicsDevice, new StandardMaterial());\n\t\t\t\tsetProgramLibrary(this.graphicsDevice, library);\n\t\t}\n\t\tget soundManager() {\n\t\t\t\treturn this._soundManager;\n\t\t}\n\t\tget batcher() {\n\t\t\t\treturn this._batcher;\n\t\t}\n\t\tget fillMode() {\n\t\t\t\treturn this._fillMode;\n\t\t}\n\t\tget resolutionMode() {\n\t\t\t\treturn this._resolutionMode;\n\t\t}\n\t\tconfigure(url, callback) {\n\t\t\t\thttp.get(url, (err, response)=>{\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\tcallback(err);\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst props = response.application_properties;\n\t\t\t\t\t\tconst scenes = response.scenes;\n\t\t\t\t\t\tconst assets = response.assets;\n\t\t\t\t\t\tthis._parseApplicationProperties(props, (err)=>{\n\t\t\t\t\t\t\t\tthis._parseScenes(scenes);\n\t\t\t\t\t\t\t\tthis._parseAssets(assets);\n\t\t\t\t\t\t\t\tif (!err) {\n\t\t\t\t\t\t\t\t\t\tcallback(null);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tcallback(err);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t});\n\t\t}\n\t\tpreload(callback) {\n\t\t\t\tthis.fire('preload:start');\n\t\t\t\tconst assets = this.assets.list({\n\t\t\t\t\t\tpreload: true\n\t\t\t\t});\n\t\t\t\tif (assets.length === 0) {\n\t\t\t\t\t\tthis.fire('preload:end');\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tlet loadedCount = 0;\n\t\t\t\tconst onAssetLoadOrError = ()=>{\n\t\t\t\t\t\tloadedCount++;\n\t\t\t\t\t\tthis.fire('preload:progress', loadedCount / assets.length);\n\t\t\t\t\t\tif (loadedCount === assets.length) {\n\t\t\t\t\t\t\t\tthis.fire('preload:end');\n\t\t\t\t\t\t\t\tcallback();\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tassets.forEach((asset)=>{\n\t\t\t\t\t\tif (!asset.loaded) {\n\t\t\t\t\t\t\t\tasset.once('load', onAssetLoadOrError);\n\t\t\t\t\t\t\t\tasset.once('error', onAssetLoadOrError);\n\t\t\t\t\t\t\t\tthis.assets.load(asset);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tonAssetLoadOrError();\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\t_preloadScripts(sceneData, callback) {\n\t\t\t\tcallback();\n\t\t}\n\t\t_parseApplicationProperties(props, callback) {\n\t\t\t\tif (typeof props.maxAssetRetries === 'number' && props.maxAssetRetries > 0) {\n\t\t\t\t\t\tthis.loader.enableRetry(props.maxAssetRetries);\n\t\t\t\t}\n\t\t\t\tif (!props.useDevicePixelRatio) {\n\t\t\t\t\t\tprops.useDevicePixelRatio = props.use_device_pixel_ratio;\n\t\t\t\t}\n\t\t\t\tif (!props.resolutionMode) {\n\t\t\t\t\t\tprops.resolutionMode = props.resolution_mode;\n\t\t\t\t}\n\t\t\t\tif (!props.fillMode) {\n\t\t\t\t\t\tprops.fillMode = props.fill_mode;\n\t\t\t\t}\n\t\t\t\tthis._width = props.width;\n\t\t\t\tthis._height = props.height;\n\t\t\t\tif (props.useDevicePixelRatio) {\n\t\t\t\t\t\tthis.graphicsDevice.maxPixelRatio = window.devicePixelRatio;\n\t\t\t\t}\n\t\t\t\tthis.setCanvasResolution(props.resolutionMode, this._width, this._height);\n\t\t\t\tthis.setCanvasFillMode(props.fillMode, this._width, this._height);\n\t\t\t\tif (props.layers && props.layerOrder) {\n\t\t\t\t\t\tconst composition = new LayerComposition('application');\n\t\t\t\t\t\tconst layers = {};\n\t\t\t\t\t\tfor(const key in props.layers){\n\t\t\t\t\t\t\t\tconst data = props.layers[key];\n\t\t\t\t\t\t\t\tdata.id = parseInt(key, 10);\n\t\t\t\t\t\t\t\tdata.enabled = data.id !== LAYERID_DEPTH;\n\t\t\t\t\t\t\t\tlayers[key] = new Layer(data);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor(let i = 0, len = props.layerOrder.length; i < len; i++){\n\t\t\t\t\t\t\t\tconst sublayer = props.layerOrder[i];\n\t\t\t\t\t\t\t\tconst layer = layers[sublayer.layer];\n\t\t\t\t\t\t\t\tif (!layer) continue;\n\t\t\t\t\t\t\t\tif (sublayer.transparent) {\n\t\t\t\t\t\t\t\t\t\tcomposition.pushTransparent(layer);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tcomposition.pushOpaque(layer);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcomposition.subLayerEnabled[i] = sublayer.enabled;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.scene.layers = composition;\n\t\t\t\t}\n\t\t\t\tif (props.batchGroups) {\n\t\t\t\t\t\tconst batcher = this.batcher;\n\t\t\t\t\t\tif (batcher) {\n\t\t\t\t\t\t\t\tfor(let i = 0, len = props.batchGroups.length; i < len; i++){\n\t\t\t\t\t\t\t\t\t\tconst grp = props.batchGroups[i];\n\t\t\t\t\t\t\t\t\t\tbatcher.addGroup(grp.name, grp.dynamic, grp.maxAabbSize, grp.id, grp.layers);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (props.i18nAssets) {\n\t\t\t\t\t\tthis.i18n.assets = props.i18nAssets;\n\t\t\t\t}\n\t\t\t\tthis._loadLibraries(props.libraries, callback);\n\t\t}\n\t\t_loadLibraries(urls, callback) {\n\t\t\t\tconst len = urls.length;\n\t\t\t\tlet count = len;\n\t\t\t\tconst regex = /^https?:\\/\\//;\n\t\t\t\tif (len) {\n\t\t\t\t\t\tconst onLoad = (err, script)=>{\n\t\t\t\t\t\t\t\tcount--;\n\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\t\tcallback(err);\n\t\t\t\t\t\t\t\t} else if (count === 0) {\n\t\t\t\t\t\t\t\t\t\tthis.onLibrariesLoaded();\n\t\t\t\t\t\t\t\t\t\tcallback(null);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor(let i = 0; i < len; ++i){\n\t\t\t\t\t\t\t\tlet url = urls[i];\n\t\t\t\t\t\t\t\tif (!regex.test(url.toLowerCase()) && this._scriptPrefix) {\n\t\t\t\t\t\t\t\t\t\turl = path.join(this._scriptPrefix, url);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.loader.load(url, \"script\", onLoad);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.onLibrariesLoaded();\n\t\t\t\t\t\tcallback(null);\n\t\t\t\t}\n\t\t}\n\t\t_parseScenes(scenes) {\n\t\t\t\tif (!scenes) return;\n\t\t\t\tfor(let i = 0; i < scenes.length; i++){\n\t\t\t\t\t\tthis.scenes.add(scenes[i].name, scenes[i].url);\n\t\t\t\t}\n\t\t}\n\t\t_parseAssets(assets) {\n\t\t\t\tconst list = [];\n\t\t\t\tconst scriptsIndex = {};\n\t\t\t\tconst bundlesIndex = {};\n\t\t\t\tfor(let i = 0; i < this.scriptsOrder.length; i++){\n\t\t\t\t\t\tconst id = this.scriptsOrder[i];\n\t\t\t\t\t\tif (!assets[id]) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tscriptsIndex[id] = true;\n\t\t\t\t\t\tlist.push(assets[id]);\n\t\t\t\t}\n\t\t\t\tif (this.enableBundles) {\n\t\t\t\t\t\tfor(const id in assets){\n\t\t\t\t\t\t\t\tif (assets[id].type === 'bundle') {\n\t\t\t\t\t\t\t\t\t\tbundlesIndex[id] = true;\n\t\t\t\t\t\t\t\t\t\tlist.push(assets[id]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor(const id in assets){\n\t\t\t\t\t\tif (scriptsIndex[id] || bundlesIndex[id]) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlist.push(assets[id]);\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < list.length; i++){\n\t\t\t\t\t\tconst data = list[i];\n\t\t\t\t\t\tconst asset = new Asset(data.name, data.type, data.file, data.data);\n\t\t\t\t\t\tasset.id = parseInt(data.id, 10);\n\t\t\t\t\t\tasset.preload = data.preload ? data.preload : false;\n\t\t\t\t\t\tasset.loaded = data.type === \"script\" && data.data && data.data.loadingType > 0;\n\t\t\t\t\t\tasset.tags.add(data.tags);\n\t\t\t\t\t\tif (data.i18n) {\n\t\t\t\t\t\t\t\tfor(const locale in data.i18n){\n\t\t\t\t\t\t\t\t\t\tasset.addLocalizedAssetId(locale, data.i18n[locale]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.assets.add(asset);\n\t\t\t\t}\n\t\t}\n\t\tstart() {\n\t\t\t\tthis.frame = 0;\n\t\t\t\tthis.fire('start', {\n\t\t\t\t\t\ttimestamp: now(),\n\t\t\t\t\t\ttarget: this\n\t\t\t\t});\n\t\t\t\tif (!this._librariesLoaded) {\n\t\t\t\t\t\tthis.onLibrariesLoaded();\n\t\t\t\t}\n\t\t\t\tthis.systems.fire('initialize', this.root);\n\t\t\t\tthis.fire('initialize');\n\t\t\t\tthis.systems.fire('postInitialize', this.root);\n\t\t\t\tthis.systems.fire('postPostInitialize', this.root);\n\t\t\t\tthis.fire('postinitialize');\n\t\t\t\tthis.tick();\n\t\t}\n\t\tinputUpdate(dt) {\n\t\t\t\tif (this.controller) {\n\t\t\t\t\t\tthis.controller.update(dt);\n\t\t\t\t}\n\t\t\t\tif (this.mouse) {\n\t\t\t\t\t\tthis.mouse.update();\n\t\t\t\t}\n\t\t\t\tif (this.keyboard) {\n\t\t\t\t\t\tthis.keyboard.update();\n\t\t\t\t}\n\t\t\t\tif (this.gamepads) {\n\t\t\t\t\t\tthis.gamepads.update();\n\t\t\t\t}\n\t\t}\n\t\tupdate(dt) {\n\t\t\t\tthis.frame++;\n\t\t\t\tthis.graphicsDevice.update();\n\t\t\t\tthis.systems.fire(this._inTools ? 'toolsUpdate' : 'update', dt);\n\t\t\t\tthis.systems.fire('animationUpdate', dt);\n\t\t\t\tthis.systems.fire('postUpdate', dt);\n\t\t\t\tthis.fire('update', dt);\n\t\t\t\tthis.inputUpdate(dt);\n\t\t}\n\t\trender() {\n\t\t\t\tthis.updateCanvasSize();\n\t\t\t\tthis.graphicsDevice.frameStart();\n\t\t\t\tthis.fire('prerender');\n\t\t\t\tthis.root.syncHierarchy();\n\t\t\t\tif (this._batcher) {\n\t\t\t\t\t\tthis._batcher.updateAll();\n\t\t\t\t}\n\t\t\t\tthis.renderComposition(this.scene.layers);\n\t\t\t\tthis.fire('postrender');\n\t\t\t\tthis.graphicsDevice.frameEnd();\n\t\t}\n\t\trenderComposition(layerComposition) {\n\t\t\t\tthis.renderer.update(layerComposition);\n\t\t\t\tthis.renderer.buildFrameGraph(this.frameGraph, layerComposition);\n\t\t\t\tthis.frameGraph.render(this.graphicsDevice);\n\t\t}\n\t\t_fillFrameStatsBasic(now, dt, ms) {\n\t\t\t\tconst stats = this.stats.frame;\n\t\t\t\tstats.dt = dt;\n\t\t\t\tstats.ms = ms;\n\t\t\t\tif (now > stats._timeToCountFrames) {\n\t\t\t\t\t\tstats.fps = stats._fpsAccum;\n\t\t\t\t\t\tstats._fpsAccum = 0;\n\t\t\t\t\t\tstats._timeToCountFrames = now + 1000;\n\t\t\t\t} else {\n\t\t\t\t\t\tstats._fpsAccum++;\n\t\t\t\t}\n\t\t\t\tthis.stats.drawCalls.total = this.graphicsDevice._drawCallsPerFrame;\n\t\t\t\tthis.graphicsDevice._drawCallsPerFrame = 0;\n\t\t\t\tstats.gsplats = this.renderer._gsplatCount;\n\t\t}\n\t\t_fillFrameStats() {\n\t\t\t\tlet stats = this.stats.frame;\n\t\t\t\tstats.cameras = this.renderer._camerasRendered;\n\t\t\t\tstats.materials = this.renderer._materialSwitches;\n\t\t\t\tstats.shaders = this.graphicsDevice._shaderSwitchesPerFrame;\n\t\t\t\tstats.shadowMapUpdates = this.renderer._shadowMapUpdates;\n\t\t\t\tstats.shadowMapTime = this.renderer._shadowMapTime;\n\t\t\t\tstats.depthMapTime = this.renderer._depthMapTime;\n\t\t\t\tstats.forwardTime = this.renderer._forwardTime;\n\t\t\t\tconst prims = this.graphicsDevice._primsPerFrame;\n\t\t\t\tstats.triangles = prims[PRIMITIVE_TRIANGLES] / 3 + Math.max(prims[PRIMITIVE_TRISTRIP] - 2, 0) + Math.max(prims[PRIMITIVE_TRIFAN] - 2, 0);\n\t\t\t\tstats.cullTime = this.renderer._cullTime;\n\t\t\t\tstats.sortTime = this.renderer._sortTime;\n\t\t\t\tstats.skinTime = this.renderer._skinTime;\n\t\t\t\tstats.morphTime = this.renderer._morphTime;\n\t\t\t\tstats.lightClusters = this.renderer._lightClusters;\n\t\t\t\tstats.lightClustersTime = this.renderer._lightClustersTime;\n\t\t\t\tstats.otherPrimitives = 0;\n\t\t\t\tfor(let i = 0; i < prims.length; i++){\n\t\t\t\t\t\tif (i < PRIMITIVE_TRIANGLES) {\n\t\t\t\t\t\t\t\tstats.otherPrimitives += prims[i];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tprims[i] = 0;\n\t\t\t\t}\n\t\t\t\tthis.renderer._camerasRendered = 0;\n\t\t\t\tthis.renderer._materialSwitches = 0;\n\t\t\t\tthis.renderer._shadowMapUpdates = 0;\n\t\t\t\tthis.graphicsDevice._shaderSwitchesPerFrame = 0;\n\t\t\t\tthis.renderer._cullTime = 0;\n\t\t\t\tthis.renderer._layerCompositionUpdateTime = 0;\n\t\t\t\tthis.renderer._lightClustersTime = 0;\n\t\t\t\tthis.renderer._sortTime = 0;\n\t\t\t\tthis.renderer._skinTime = 0;\n\t\t\t\tthis.renderer._morphTime = 0;\n\t\t\t\tthis.renderer._shadowMapTime = 0;\n\t\t\t\tthis.renderer._depthMapTime = 0;\n\t\t\t\tthis.renderer._forwardTime = 0;\n\t\t\t\tstats = this.stats.drawCalls;\n\t\t\t\tstats.forward = this.renderer._forwardDrawCalls;\n\t\t\t\tstats.culled = this.renderer._numDrawCallsCulled;\n\t\t\t\tstats.depth = 0;\n\t\t\t\tstats.shadow = this.renderer._shadowDrawCalls;\n\t\t\t\tstats.skinned = this.renderer._skinDrawCalls;\n\t\t\t\tstats.immediate = 0;\n\t\t\t\tstats.instanced = 0;\n\t\t\t\tstats.removedByInstancing = 0;\n\t\t\t\tstats.misc = stats.total - (stats.forward + stats.shadow);\n\t\t\t\tthis.renderer._depthDrawCalls = 0;\n\t\t\t\tthis.renderer._shadowDrawCalls = 0;\n\t\t\t\tthis.renderer._forwardDrawCalls = 0;\n\t\t\t\tthis.renderer._numDrawCallsCulled = 0;\n\t\t\t\tthis.renderer._skinDrawCalls = 0;\n\t\t\t\tthis.renderer._immediateRendered = 0;\n\t\t\t\tthis.renderer._instancedDrawCalls = 0;\n\t\t\t\tthis.stats.misc.renderTargetCreationTime = this.graphicsDevice.renderTargetCreationTime;\n\t\t\t\tstats = this.stats.particles;\n\t\t\t\tstats.updatesPerFrame = stats._updatesPerFrame;\n\t\t\t\tstats.frameTime = stats._frameTime;\n\t\t\t\tstats._updatesPerFrame = 0;\n\t\t\t\tstats._frameTime = 0;\n\t\t}\n\t\tsetCanvasFillMode(mode, width, height) {\n\t\t\t\tthis._fillMode = mode;\n\t\t\t\tthis.resizeCanvas(width, height);\n\t\t}\n\t\tsetCanvasResolution(mode, width, height) {\n\t\t\t\tthis._resolutionMode = mode;\n\t\t\t\tif (mode === RESOLUTION_AUTO && width === undefined) {\n\t\t\t\t\t\twidth = this.graphicsDevice.canvas.clientWidth;\n\t\t\t\t\t\theight = this.graphicsDevice.canvas.clientHeight;\n\t\t\t\t}\n\t\t\t\tthis.graphicsDevice.resizeCanvas(width, height);\n\t\t}\n\t\tisHidden() {\n\t\t\t\treturn document[this._hiddenAttr];\n\t\t}\n\t\tonVisibilityChange() {\n\t\t\t\tif (this.isHidden()) {\n\t\t\t\t\t\tif (this._soundManager) {\n\t\t\t\t\t\t\t\tthis._soundManager.suspend();\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tif (this._soundManager) {\n\t\t\t\t\t\t\t\tthis._soundManager.resume();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tresizeCanvas(width, height) {\n\t\t\t\tif (!this._allowResize) return undefined;\n\t\t\t\tif (this.xr && this.xr.session) {\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t\tconst windowWidth = window.innerWidth;\n\t\t\t\tconst windowHeight = window.innerHeight;\n\t\t\t\tif (this._fillMode === FILLMODE_KEEP_ASPECT) {\n\t\t\t\t\t\tconst r = this.graphicsDevice.canvas.width / this.graphicsDevice.canvas.height;\n\t\t\t\t\t\tconst winR = windowWidth / windowHeight;\n\t\t\t\t\t\tif (r > winR) {\n\t\t\t\t\t\t\t\twidth = windowWidth;\n\t\t\t\t\t\t\t\theight = width / r;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\theight = windowHeight;\n\t\t\t\t\t\t\t\twidth = height * r;\n\t\t\t\t\t\t}\n\t\t\t\t} else if (this._fillMode === FILLMODE_FILL_WINDOW) {\n\t\t\t\t\t\twidth = windowWidth;\n\t\t\t\t\t\theight = windowHeight;\n\t\t\t\t}\n\t\t\t\tthis.graphicsDevice.canvas.style.width = `${width}px`;\n\t\t\t\tthis.graphicsDevice.canvas.style.height = `${height}px`;\n\t\t\t\tthis.updateCanvasSize();\n\t\t\t\treturn {\n\t\t\t\t\t\twidth: width,\n\t\t\t\t\t\theight: height\n\t\t\t\t};\n\t\t}\n\t\tupdateCanvasSize() {\n\t\t\t\tif (!this._allowResize || this.xr?.active) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this._resolutionMode === RESOLUTION_AUTO) {\n\t\t\t\t\t\tconst canvas = this.graphicsDevice.canvas;\n\t\t\t\t\t\tthis.graphicsDevice.resizeCanvas(canvas.clientWidth, canvas.clientHeight);\n\t\t\t\t}\n\t\t}\n\t\tonLibrariesLoaded() {\n\t\t\t\tthis._librariesLoaded = true;\n\t\t\t\tif (this.systems.rigidbody) {\n\t\t\t\t\t\tthis.systems.rigidbody.onLibraryLoaded();\n\t\t\t\t}\n\t\t}\n\t\tapplySceneSettings(settings) {\n\t\t\t\tlet asset;\n\t\t\t\tif (this.systems.rigidbody && typeof Ammo !== 'undefined') {\n\t\t\t\t\t\tconst [x, y, z] = settings.physics.gravity;\n\t\t\t\t\t\tthis.systems.rigidbody.gravity.set(x, y, z);\n\t\t\t\t}\n\t\t\t\tthis.scene.applySettings(settings);\n\t\t\t\tif (settings.render.hasOwnProperty('skybox')) {\n\t\t\t\t\t\tif (settings.render.skybox) {\n\t\t\t\t\t\t\t\tasset = this.assets.get(settings.render.skybox);\n\t\t\t\t\t\t\t\tif (asset) {\n\t\t\t\t\t\t\t\t\t\tthis.setSkybox(asset);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis.assets.once(`add:${settings.render.skybox}`, this.setSkybox, this);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.setSkybox(null);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tsetAreaLightLuts(ltcMat1, ltcMat2) {\n\t\t\t\tif (ltcMat1 && ltcMat2) {\n\t\t\t\t\t\tAreaLightLuts.set(this.graphicsDevice, ltcMat1, ltcMat2);\n\t\t\t\t}\n\t\t}\n\t\tsetSkybox(asset) {\n\t\t\t\tif (asset !== this._skyboxAsset) {\n\t\t\t\t\t\tconst onSkyboxRemoved = ()=>{\n\t\t\t\t\t\t\t\tthis.setSkybox(null);\n\t\t\t\t\t\t};\n\t\t\t\t\t\tconst onSkyboxChanged = ()=>{\n\t\t\t\t\t\t\t\tthis.scene.setSkybox(this._skyboxAsset ? this._skyboxAsset.resources : null);\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (this._skyboxAsset) {\n\t\t\t\t\t\t\t\tthis.assets.off(`load:${this._skyboxAsset.id}`, onSkyboxChanged, this);\n\t\t\t\t\t\t\t\tthis.assets.off(`remove:${this._skyboxAsset.id}`, onSkyboxRemoved, this);\n\t\t\t\t\t\t\t\tthis._skyboxAsset.off('change', onSkyboxChanged, this);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._skyboxAsset = asset;\n\t\t\t\t\t\tif (this._skyboxAsset) {\n\t\t\t\t\t\t\t\tthis.assets.on(`load:${this._skyboxAsset.id}`, onSkyboxChanged, this);\n\t\t\t\t\t\t\t\tthis.assets.once(`remove:${this._skyboxAsset.id}`, onSkyboxRemoved, this);\n\t\t\t\t\t\t\t\tthis._skyboxAsset.on('change', onSkyboxChanged, this);\n\t\t\t\t\t\t\t\tif (this.scene.skyboxMip === 0 && !this._skyboxAsset.loadFaces) {\n\t\t\t\t\t\t\t\t\t\tthis._skyboxAsset.loadFaces = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.assets.load(this._skyboxAsset);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonSkyboxChanged();\n\t\t\t\t}\n\t\t}\n\t\t_firstBake() {\n\t\t\t\tthis.lightmapper?.bake(null, this.scene.lightmapMode);\n\t\t}\n\t\t_firstBatch() {\n\t\t\t\tthis.batcher?.generate();\n\t\t}\n\t\t_processTimestamp(timestamp) {\n\t\t\t\treturn timestamp;\n\t\t}\n\t\tdrawLine(start, end, color, depthTest, layer) {\n\t\t\t\tthis.scene.drawLine(start, end, color, depthTest, layer);\n\t\t}\n\t\tdrawLines(positions, colors, depthTest = true, layer = this.scene.defaultDrawLayer) {\n\t\t\t\tthis.scene.drawLines(positions, colors, depthTest, layer);\n\t\t}\n\t\tdrawLineArrays(positions, colors, depthTest = true, layer = this.scene.defaultDrawLayer) {\n\t\t\t\tthis.scene.drawLineArrays(positions, colors, depthTest, layer);\n\t\t}\n\t\tdrawWireSphere(center, radius, color = Color.WHITE, segments = 20, depthTest = true, layer = this.scene.defaultDrawLayer) {\n\t\t\t\tthis.scene.immediate.drawWireSphere(center, radius, color, segments, depthTest, layer);\n\t\t}\n\t\tdrawWireAlignedBox(minPoint, maxPoint, color = Color.WHITE, depthTest = true, layer = this.scene.defaultDrawLayer, mat) {\n\t\t\t\tthis.scene.immediate.drawWireAlignedBox(minPoint, maxPoint, color, depthTest, layer, mat);\n\t\t}\n\t\tdrawMeshInstance(meshInstance, layer = this.scene.defaultDrawLayer) {\n\t\t\t\tthis.scene.immediate.drawMesh(null, null, null, meshInstance, layer);\n\t\t}\n\t\tdrawMesh(mesh, material, matrix, layer = this.scene.defaultDrawLayer) {\n\t\t\t\tthis.scene.immediate.drawMesh(material, matrix, mesh, null, layer);\n\t\t}\n\t\tdrawQuad(matrix, material, layer = this.scene.defaultDrawLayer) {\n\t\t\t\tthis.scene.immediate.drawMesh(material, matrix, this.scene.immediate.getQuadMesh(), null, layer);\n\t\t}\n\t\tdrawTexture(x, y, width, height, texture, material, layer = this.scene.defaultDrawLayer, filterable = true) {\n\t\t\t\tif (filterable === false && !this.graphicsDevice.isWebGPU) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst matrix = new Mat4();\n\t\t\t\tmatrix.setTRS(new Vec3(x, y, 0.0), Quat.IDENTITY, new Vec3(width, -height, 0.0));\n\t\t\t\tif (!material) {\n\t\t\t\t\t\tmaterial = new ShaderMaterial();\n\t\t\t\t\t\tmaterial.cull = CULLFACE_NONE;\n\t\t\t\t\t\tmaterial.setParameter('colorMap', texture);\n\t\t\t\t\t\tmaterial.shaderDesc = filterable ? this.scene.immediate.getTextureShaderDesc(texture.encoding) : this.scene.immediate.getUnfilterableTextureShaderDesc();\n\t\t\t\t\t\tmaterial.update();\n\t\t\t\t}\n\t\t\t\tthis.drawQuad(matrix, material, layer);\n\t\t}\n\t\tdrawDepthTexture(x, y, width, height, layer = this.scene.defaultDrawLayer) {\n\t\t\t\tconst material = new ShaderMaterial();\n\t\t\t\tmaterial.cull = CULLFACE_NONE;\n\t\t\t\tmaterial.shaderDesc = this.scene.immediate.getDepthTextureShaderDesc();\n\t\t\t\tmaterial.update();\n\t\t\t\tthis.drawTexture(x, y, width, height, null, material, layer);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tif (this._inFrameUpdate) {\n\t\t\t\t\t\tthis._destroyRequested = true;\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst canvasId = this.graphicsDevice.canvas.id;\n\t\t\t\tthis.fire('destroy', this);\n\t\t\t\tthis.off('librariesloaded');\n\t\t\t\tif (typeof document !== 'undefined') {\n\t\t\t\t\t\tdocument.removeEventListener('visibilitychange', this._visibilityChangeHandler, false);\n\t\t\t\t\t\tdocument.removeEventListener('mozvisibilitychange', this._visibilityChangeHandler, false);\n\t\t\t\t\t\tdocument.removeEventListener('msvisibilitychange', this._visibilityChangeHandler, false);\n\t\t\t\t\t\tdocument.removeEventListener('webkitvisibilitychange', this._visibilityChangeHandler, false);\n\t\t\t\t}\n\t\t\t\tthis._visibilityChangeHandler = null;\n\t\t\t\tthis.root.destroy();\n\t\t\t\tthis.root = null;\n\t\t\t\tif (this.mouse) {\n\t\t\t\t\t\tthis.mouse.off();\n\t\t\t\t\t\tthis.mouse.detach();\n\t\t\t\t\t\tthis.mouse = null;\n\t\t\t\t}\n\t\t\t\tif (this.keyboard) {\n\t\t\t\t\t\tthis.keyboard.off();\n\t\t\t\t\t\tthis.keyboard.detach();\n\t\t\t\t\t\tthis.keyboard = null;\n\t\t\t\t}\n\t\t\t\tif (this.touch) {\n\t\t\t\t\t\tthis.touch.off();\n\t\t\t\t\t\tthis.touch.detach();\n\t\t\t\t\t\tthis.touch = null;\n\t\t\t\t}\n\t\t\t\tif (this.elementInput) {\n\t\t\t\t\t\tthis.elementInput.detach();\n\t\t\t\t\t\tthis.elementInput = null;\n\t\t\t\t}\n\t\t\t\tif (this.gamepads) {\n\t\t\t\t\t\tthis.gamepads.destroy();\n\t\t\t\t\t\tthis.gamepads = null;\n\t\t\t\t}\n\t\t\t\tif (this.controller) {\n\t\t\t\t\t\tthis.controller = null;\n\t\t\t\t}\n\t\t\t\tthis.systems.destroy();\n\t\t\t\tif (this.scene.layers) {\n\t\t\t\t\t\tthis.scene.layers.destroy();\n\t\t\t\t}\n\t\t\t\tconst assets = this.assets.list();\n\t\t\t\tfor(let i = 0; i < assets.length; i++){\n\t\t\t\t\t\tassets[i].unload();\n\t\t\t\t\t\tassets[i].off();\n\t\t\t\t}\n\t\t\t\tthis.assets.off();\n\t\t\t\tthis.bundles.destroy();\n\t\t\t\tthis.bundles = null;\n\t\t\t\tthis.i18n.destroy();\n\t\t\t\tthis.i18n = null;\n\t\t\t\tconst scriptHandler = this.loader.getHandler(\"script\");\n\t\t\t\tscriptHandler?.clearCache();\n\t\t\t\tthis.loader.destroy();\n\t\t\t\tthis.loader = null;\n\t\t\t\tthis.scene.destroy();\n\t\t\t\tthis.scene = null;\n\t\t\t\tthis.systems = null;\n\t\t\t\tthis.context = null;\n\t\t\t\tthis.scripts.destroy();\n\t\t\t\tthis.scripts = null;\n\t\t\t\tthis.scenes.destroy();\n\t\t\t\tthis.scenes = null;\n\t\t\t\tthis.lightmapper?.destroy();\n\t\t\t\tthis.lightmapper = null;\n\t\t\t\tif (this._batcher) {\n\t\t\t\t\t\tthis._batcher.destroy();\n\t\t\t\t\t\tthis._batcher = null;\n\t\t\t\t}\n\t\t\t\tthis._entityIndex = {};\n\t\t\t\tthis.defaultLayerDepth.onDisable = null;\n\t\t\t\tthis.defaultLayerDepth.onEnable = null;\n\t\t\t\tthis.defaultLayerDepth = null;\n\t\t\t\tthis.defaultLayerWorld = null;\n\t\t\t\tthis.xr?.end();\n\t\t\t\tthis.xr?.destroy();\n\t\t\t\tthis.renderer.destroy();\n\t\t\t\tthis.renderer = null;\n\t\t\t\tthis.graphicsDevice.destroy();\n\t\t\t\tthis.graphicsDevice = null;\n\t\t\t\tthis.tick = null;\n\t\t\t\tthis.off();\n\t\t\t\tthis._soundManager?.destroy();\n\t\t\t\tthis._soundManager = null;\n\t\t\t\tscript.app = null;\n\t\t\t\tAppBase._applications[canvasId] = null;\n\t\t\t\tif (getApplication() === this) {\n\t\t\t\t\t\tsetApplication(null);\n\t\t\t\t}\n\t\t\t\tAppBase.cancelTick(this);\n\t\t}\n\t\tstatic cancelTick(app) {\n\t\t\t\tif (app.frameRequestId) {\n\t\t\t\t\t\twindow.cancelAnimationFrame(app.frameRequestId);\n\t\t\t\t\t\tapp.frameRequestId = undefined;\n\t\t\t\t}\n\t\t}\n\t\tgetEntityFromIndex(guid) {\n\t\t\t\treturn this._entityIndex[guid];\n\t\t}\n\t\t_registerSceneImmediate(scene) {\n\t\t\t\tthis.on('postrender', scene.immediate.onPostRender, scene.immediate);\n\t\t}\n}\nconst makeTick = function(_app) {\n\t\tconst application = _app;\n\t\treturn function(timestamp, xrFrame) {\n\t\t\t\tif (!application.graphicsDevice) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (application.frameRequestId) {\n\t\t\t\t\t\tapplication.xr?.session?.cancelAnimationFrame(application.frameRequestId);\n\t\t\t\t\t\tcancelAnimationFrame(application.frameRequestId);\n\t\t\t\t\t\tapplication.frameRequestId = null;\n\t\t\t\t}\n\t\t\t\tapplication._inFrameUpdate = true;\n\t\t\t\tsetApplication(application);\n\t\t\t\tapp = application;\n\t\t\t\tconst currentTime = application._processTimestamp(timestamp) || now();\n\t\t\t\tconst ms = currentTime - (application._time || currentTime);\n\t\t\t\tlet dt = ms / 1000.0;\n\t\t\t\tdt = math.clamp(dt, 0, application.maxDeltaTime);\n\t\t\t\tdt *= application.timeScale;\n\t\t\t\tapplication._time = currentTime;\n\t\t\t\tif (application.xr?.session) {\n\t\t\t\t\t\tapplication.frameRequestId = application.xr.session.requestAnimationFrame(application.tick);\n\t\t\t\t} else {\n\t\t\t\t\t\tapplication.frameRequestId = platform.browser || platform.worker ? requestAnimationFrame(application.tick) : null;\n\t\t\t\t}\n\t\t\t\tif (application.graphicsDevice.contextLost) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tapplication._fillFrameStatsBasic(currentTime, dt, ms);\n\t\t\t\tapplication.fire('frameupdate', ms);\n\t\t\t\tlet skipUpdate = false;\n\t\t\t\tif (xrFrame) {\n\t\t\t\t\t\tskipUpdate = !application.xr?.update(xrFrame);\n\t\t\t\t\t\tapplication.graphicsDevice.defaultFramebuffer = xrFrame.session.renderState.baseLayer.framebuffer;\n\t\t\t\t} else {\n\t\t\t\t\t\tapplication.graphicsDevice.defaultFramebuffer = null;\n\t\t\t\t}\n\t\t\t\tif (!skipUpdate) {\n\t\t\t\t\t\tapplication.update(dt);\n\t\t\t\t\t\tapplication.fire('framerender');\n\t\t\t\t\t\tif (application.autoRender || application.renderNextFrame) {\n\t\t\t\t\t\t\t\tapplication.render();\n\t\t\t\t\t\t\t\tapplication.renderNextFrame = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tapplication.fire('frameend');\n\t\t\t\t}\n\t\t\t\tapplication._inFrameUpdate = false;\n\t\t\t\tif (application._destroyRequested) {\n\t\t\t\t\t\tapplication.destroy();\n\t\t\t\t}\n\t\t};\n};\n\nclass AppOptions {\n\t\tconstructor(){\n\t\t\t\tthis.componentSystems = [];\n\t\t\t\tthis.resourceHandlers = [];\n\t\t}\n}\n\nconst tempSphere = new BoundingSphere();\nclass BakeLight {\n\t\tconstructor(scene, light, lightingParams){\n\t\t\t\tthis.scene = scene;\n\t\t\t\tthis.light = light;\n\t\t\t\tthis.store();\n\t\t\t\tlight.numCascades = 1;\n\t\t\t\tif (this.scene.clusteredLightingEnabled && !lightingParams.shadowsEnabled) {\n\t\t\t\t\t\tlight.castShadows = false;\n\t\t\t\t}\n\t\t\t\tif (light.type !== LIGHTTYPE_DIRECTIONAL) {\n\t\t\t\t\t\tlight._node.getWorldTransform();\n\t\t\t\t\t\tlight.getBoundingSphere(tempSphere);\n\t\t\t\t\t\tthis.lightBounds = new BoundingBox();\n\t\t\t\t\t\tthis.lightBounds.center.copy(tempSphere.center);\n\t\t\t\t\t\tthis.lightBounds.halfExtents.set(tempSphere.radius, tempSphere.radius, tempSphere.radius);\n\t\t\t\t}\n\t\t}\n\t\tstore() {\n\t\t\t\tthis.mask = this.light.mask;\n\t\t\t\tthis.shadowUpdateMode = this.light.shadowUpdateMode;\n\t\t\t\tthis.enabled = this.light.enabled;\n\t\t\t\tthis.intensity = this.light.intensity;\n\t\t\t\tthis.rotation = this.light._node.getLocalRotation().clone();\n\t\t\t\tthis.numCascades = this.light.numCascades;\n\t\t\t\tthis.castShadows = this.light._castShadows;\n\t\t}\n\t\trestore() {\n\t\t\t\tconst light = this.light;\n\t\t\t\tlight.mask = this.mask;\n\t\t\t\tlight.shadowUpdateMode = this.shadowUpdateMode;\n\t\t\t\tlight.enabled = this.enabled;\n\t\t\t\tlight.intensity = this.intensity;\n\t\t\t\tlight._node.setLocalRotation(this.rotation);\n\t\t\t\tlight.numCascades = this.numCascades;\n\t\t\t\tlight._castShadows = this.castShadows;\n\t\t}\n\t\tstartBake() {\n\t\t\t\tthis.light.enabled = true;\n\t\t\t\tthis.light._destroyShadowMap();\n\t\t\t\tthis.light.beginFrame();\n\t\t}\n\t\tendBake(shadowMapCache) {\n\t\t\t\tconst light = this.light;\n\t\t\t\tlight.enabled = false;\n\t\t\t\tif (light.shadowMap) {\n\t\t\t\t\t\tif (light.shadowMap.cached) {\n\t\t\t\t\t\t\t\tshadowMapCache.add(light, light.shadowMap);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlight.shadowMap = null;\n\t\t\t\t}\n\t\t}\n}\n\nconst _tempPoint$1 = new Vec2();\nclass BakeLightSimple extends BakeLight {\n\t\tconstructor(lightmapper, light){\n\t\t\t\tsuper(lightmapper.scene, light, lightmapper.lightingParams);\n\t\t}\n\t\tget numVirtualLights() {\n\t\t\t\tif (this.light.type === LIGHTTYPE_DIRECTIONAL) {\n\t\t\t\t\t\treturn this.light.bakeNumSamples;\n\t\t\t\t}\n\t\t\t\treturn 1;\n\t\t}\n\t\tprepareVirtualLight(index, numVirtualLights) {\n\t\t\t\tconst light = this.light;\n\t\t\t\tlight._node.setLocalRotation(this.rotation);\n\t\t\t\tif (index > 0) {\n\t\t\t\t\t\tconst directionalSpreadAngle = light.bakeArea;\n\t\t\t\t\t\trandom.circlePointDeterministic(_tempPoint$1, index, numVirtualLights);\n\t\t\t\t\t\t_tempPoint$1.mulScalar(directionalSpreadAngle * 0.5);\n\t\t\t\t\t\tlight._node.rotateLocal(_tempPoint$1.x, 0, _tempPoint$1.y);\n\t\t\t\t}\n\t\t\t\tlight._node.getWorldTransform();\n\t\t\t\tconst gamma = 2.2;\n\t\t\t\tconst linearIntensity = Math.pow(this.intensity, gamma);\n\t\t\t\tlight.intensity = Math.pow(linearIntensity / numVirtualLights, 1 / gamma);\n\t\t}\n}\n\nconst _tempPoint = new Vec3();\nclass BakeLightAmbient extends BakeLight {\n\t\tconstructor(lightmapper){\n\t\t\t\tconst scene = lightmapper.scene;\n\t\t\t\tconst lightEntity = new Entity('AmbientLight');\n\t\t\t\tlightEntity.addComponent('light', {\n\t\t\t\t\t\ttype: 'directional',\n\t\t\t\t\t\taffectDynamic: true,\n\t\t\t\t\t\taffectLightmapped: false,\n\t\t\t\t\t\tbake: true,\n\t\t\t\t\t\tbakeNumSamples: scene.ambientBakeNumSamples,\n\t\t\t\t\t\tcastShadows: true,\n\t\t\t\t\t\tnormalOffsetBias: 0.05,\n\t\t\t\t\t\tshadowBias: 0.2,\n\t\t\t\t\t\tshadowDistance: 1,\n\t\t\t\t\t\tshadowResolution: 2048,\n\t\t\t\t\t\tshadowType: SHADOW_PCF3_32F,\n\t\t\t\t\t\tcolor: Color.WHITE,\n\t\t\t\t\t\tintensity: 1,\n\t\t\t\t\t\tbakeDir: false\n\t\t\t\t});\n\t\t\t\tsuper(scene, lightEntity.light.light, lightmapper.lightingParams);\n\t\t}\n\t\tget numVirtualLights() {\n\t\t\t\treturn this.light.bakeNumSamples;\n\t\t}\n\t\tprepareVirtualLight(index, numVirtualLights) {\n\t\t\t\trandom.spherePointDeterministic(_tempPoint, index, numVirtualLights, 0, this.scene.ambientBakeSpherePart);\n\t\t\t\tthis.light._node.lookAt(_tempPoint.mulScalar(-1));\n\t\t\t\tthis.light._node.rotateLocal(90, 0, 0);\n\t\t\t\tconst gamma = 2.2;\n\t\t\t\tconst fullIntensity = 2 * Math.PI * this.scene.ambientBakeSpherePart;\n\t\t\t\tconst linearIntensity = Math.pow(fullIntensity, gamma);\n\t\t\t\tthis.light.intensity = Math.pow(linearIntensity / numVirtualLights, 1 / gamma);\n\t\t}\n}\n\nclass BakeMeshNode {\n\t\tconstructor(node, meshInstances = null){\n\t\t\t\tthis.node = node;\n\t\t\t\tthis.component = node.render || node.model;\n\t\t\t\tmeshInstances = meshInstances || this.component.meshInstances;\n\t\t\t\tthis.store();\n\t\t\t\tthis.meshInstances = meshInstances;\n\t\t\t\tthis.bounds = null;\n\t\t\t\tthis.renderTargets = [];\n\t\t}\n\t\tstore() {\n\t\t\t\tthis.castShadows = this.component.castShadows;\n\t\t}\n\t\trestore() {\n\t\t\t\tthis.component.castShadows = this.castShadows;\n\t\t}\n}\n\nvar glslBilateralDeNoisePS = `\nfloat normpdf3(in vec3 v, in float sigma) {\n\treturn 0.39894 * exp(-0.5 * dot(v, v) / (sigma * sigma)) / sigma;\n}\nvec3 decodeRGBM(vec4 rgbm) {\n\tvec3 color = (8.0 * rgbm.a) * rgbm.rgb;\n\treturn color * color;\n}\nfloat saturate(float x) {\n\treturn clamp(x, 0.0, 1.0);\n}\nvec4 encodeRGBM(vec3 color) {\n\tvec4 encoded;\n\tencoded.rgb = pow(color.rgb, vec3(0.5));\n\tencoded.rgb *= 1.0 / 8.0;\n\tencoded.a = saturate( max( max( encoded.r, encoded.g ), max( encoded.b, 1.0 / 255.0 ) ) );\n\tencoded.a = ceil(encoded.a * 255.0) / 255.0;\n\tencoded.rgb /= encoded.a;\n\treturn encoded;\n}\nvec3 decode(vec4 pixel) {\n\t#if HDR\n\t\treturn pixel.rgb;\n\t#else\n\t\treturn decodeRGBM(pixel);\n\t#endif\n}\nbool isUsed(vec4 pixel) {\n\t#if HDR\n\t\treturn any(greaterThan(pixel.rgb, vec3(0.0)));\n\t#else\n\t\treturn pixel.a > 0.0;\n\t#endif\n}\nvarying vec2 vUv0;\nuniform sampler2D source;\nuniform vec2 pixelOffset;\nuniform vec2 sigmas;\nuniform float bZnorm;\nuniform float kernel[{MSIZE}];\nvoid main(void) {\n\t\n\tvec4 pixel = texture2DLod(source, vUv0, 0.0);\n\tif (!isUsed(pixel)) {\n\t\tgl_FragColor = pixel;\n\t\treturn ;\n\t}\n\tfloat sigma = sigmas.x;\n\tfloat bSigma = sigmas.y;\n\tvec3 pixelHdr = decode(pixel);\n\tvec3 accumulatedHdr = vec3(0.0);\n\tfloat accumulatedFactor = 0.000001;\n\tconst int kSize = ({MSIZE} - 1) / 2;\n\tfor (int i = -kSize; i <= kSize; ++i) {\n\t\tfor (int j = -kSize; j <= kSize; ++j) {\n\t\t\t\n\t\t\tvec2 coord = vUv0 + vec2(float(i), float(j)) * pixelOffset;\n\t\t\tvec4 pix = texture2DLod(source, coord, 0.0);\n\t\t\tif (isUsed(pix)) {\n\t\t\t\tvec3 hdr = decode(pix);\n\t\t\t\tfloat factor = kernel[kSize + j] * kernel[kSize + i];\n\t\t\t\tfactor *= normpdf3(hdr - pixelHdr, bSigma) * bZnorm;\n\t\t\t\taccumulatedHdr += factor * hdr;\n\t\t\t\taccumulatedFactor += factor;\n\t\t\t}\n\t\t}\n\t}\n\tvec3 finalHDR = accumulatedHdr / accumulatedFactor;\n\t#if HDR\n\t\tgl_FragColor = vec4(finalHDR, 1.0);\n\t#else\n\t\tgl_FragColor = encodeRGBM(finalHDR);\n\t#endif\n}\n`;\n\nvar glslDilatePS = `\nvarying vec2 vUv0;\nuniform sampler2D source;\nuniform vec2 pixelOffset;\nbool isUsed(vec4 pixel) {\n\t#if HDR\n\t\treturn any(greaterThan(pixel.rgb, vec3(0.0)));\n\t#else\n\t\treturn pixel.a > 0.0;\n\t#endif\n}\nvoid main(void) {\n\tvec4 c = texture2DLod(source, vUv0, 0.0);\n\tc = isUsed(c) ? c : texture2DLod(source, vUv0 - pixelOffset, 0.0);\n\tc = isUsed(c) ? c : texture2DLod(source, vUv0 + vec2(0, -pixelOffset.y), 0.0);\n\tc = isUsed(c) ? c : texture2DLod(source, vUv0 + vec2(pixelOffset.x, -pixelOffset.y), 0.0);\n\tc = isUsed(c) ? c : texture2DLod(source, vUv0 + vec2(-pixelOffset.x, 0), 0.0);\n\tc = isUsed(c) ? c : texture2DLod(source, vUv0 + vec2(pixelOffset.x, 0), 0.0);\n\tc = isUsed(c) ? c : texture2DLod(source, vUv0 + vec2(-pixelOffset.x, pixelOffset.y), 0.0);\n\tc = isUsed(c) ? c : texture2DLod(source, vUv0 + vec2(0, pixelOffset.y), 0.0);\n\tc = isUsed(c) ? c : texture2DLod(source, vUv0 + pixelOffset, 0.0);\n\tgl_FragColor = c;\n}\n`;\n\nvar wgslBilateralDeNoisePS = `\nfn normpdf3(v: vec3f, sigma: f32) -> f32 {\n\treturn 0.39894 * exp(-0.5 * dot(v, v) / (sigma * sigma)) / sigma;\n}\nfn decodeRGBM(rgbm: vec4f) -> vec3f {\n\tlet color = (8.0 * rgbm.a) * rgbm.rgb;\n\treturn color * color;\n}\nfn saturate(x: f32) -> f32 {\n\treturn clamp(x, 0.0, 1.0);\n}\nfn encodeRGBM(color: vec3f) -> vec4f {\n\tvar encoded: vec4f;\n\tlet rgb_processed = pow(color.rgb, vec3f(0.5)) * (1.0 / 8.0);\n\tencoded = vec4f(rgb_processed, 0.0);\n\tlet max_g_b = max( encoded.g, max( encoded.b, 1.0 / 255.0 ) );\n\tlet max_rgb = max( encoded.r, max_g_b );\n\tencoded.a = clamp(max_rgb, 0.0, 1.0);\n\tencoded.a = ceil(encoded.a * 255.0) / 255.0;\n\tencoded = vec4f(encoded.rgb / encoded.a, encoded.a);\n\treturn encoded;\n}\nfn decode(pixel: vec4f) -> vec3f {\n\t#if HDR\n\t\treturn pixel.rgb;\n\t#else\n\t\treturn decodeRGBM(pixel);\n\t#endif\n}\nfn isUsed(pixel: vec4f) -> bool {\n\t#if HDR\n\t\treturn any(pixel.rgb > vec3f(0.0));\n\t#else\n\t\treturn pixel.a > 0.0;\n\t#endif\n}\nvarying vUv0: vec2f;\nvar source: texture_2d<f32>;\nvar sourceSampler: sampler;\nuniform kernel: array<f32, {MSIZE}>;\nuniform pixelOffset: vec2f;\nuniform sigmas: vec2f;\nuniform bZnorm: f32;\n@fragment\nfn fragmentMain(input: FragmentInput) -> FragmentOutput {\n\tvar output: FragmentOutput;\n\tlet pixel = textureSampleLevel(source, sourceSampler, input.vUv0, 0.0);\n\tif (!isUsed(pixel)) {\n\t\toutput.color = pixel;\n\t\treturn output;\n\t}\n\tlet sigma = uniform.sigmas.x;\n\tlet bSigma = uniform.sigmas.y;\n\tlet pixelHdr = decode(pixel);\n\tvar accumulatedHdr = vec3f(0.0);\n\tvar accumulatedFactor = 0.000001;\n\tconst kSize = ({MSIZE} - 1) / 2;\n\tfor (var i: i32 = -kSize; i <= kSize; i = i + 1) {\n\t\tfor (var j: i32 = -kSize; j <= kSize; j = j + 1) {\n\t\t\tlet coord = input.vUv0 + vec2f(f32(i), f32(j)) * uniform.pixelOffset;\n\t\t\tlet pix = textureSampleLevel(source, sourceSampler, coord, 0.0);\n\t\t\tif (isUsed(pix)) {\n\t\t\t\tlet hdr = decode(pix);\n\t\t\t\tvar factor = uniform.kernel[u32(kSize + j)].element * uniform.kernel[u32(kSize + i)].element;\n\t\t\t\tfactor = factor * normpdf3(hdr - pixelHdr, bSigma) * uniform.bZnorm;\n\t\t\t\taccumulatedHdr = accumulatedHdr + factor * hdr;\n\t\t\t\taccumulatedFactor = accumulatedFactor + factor;\n\t\t\t}\n\t\t}\n\t}\n\tlet finalHDR = accumulatedHdr / accumulatedFactor;\n\t#if HDR\n\t\toutput.color = vec4f(finalHDR, 1.0);\n\t#else\n\t\toutput.color = encodeRGBM(finalHDR);\n\t#endif\n\treturn output;\n}\n`;\n\nvar wgslDilatePS = `\nvarying vUv0: vec2f;\nvar source: texture_2d<f32>;\nvar sourceSampler: sampler;\nuniform pixelOffset: vec2f;\nfn isUsed(pixel: vec4f) -> bool {\n\t#ifdef HDR\n\t\treturn any(pixel.rgb > vec3f(0.0));\n\t#else\n\t\treturn pixel.a > 0.0;\n\t#endif\n}\n@fragment\nfn fragmentMain(input: FragmentInput) -> FragmentOutput {\n\tvar c: vec4f = textureSampleLevel(source, sourceSampler, input.vUv0, 0.0);\n\tc = select(textureSampleLevel(source, sourceSampler, input.vUv0 - uniform.pixelOffset, 0.0), c, isUsed(c));\n\tc = select(textureSampleLevel(source, sourceSampler, input.vUv0 + vec2f(0.0, -uniform.pixelOffset.y), 0.0), c, isUsed(c));\n\tc = select(textureSampleLevel(source, sourceSampler, input.vUv0 + vec2f(uniform.pixelOffset.x, -uniform.pixelOffset.y), 0.0), c, isUsed(c));\n\tc = select(textureSampleLevel(source, sourceSampler, input.vUv0 + vec2f(-uniform.pixelOffset.x, 0.0), 0.0), c, isUsed(c));\n\tc = select(textureSampleLevel(source, sourceSampler, input.vUv0 + vec2f(uniform.pixelOffset.x, 0.0), 0.0), c, isUsed(c));\n\tc = select(textureSampleLevel(source, sourceSampler, input.vUv0 + vec2f(-uniform.pixelOffset.x, uniform.pixelOffset.y), 0.0), c, isUsed(c));\n\tc = select(textureSampleLevel(source, sourceSampler, input.vUv0 + vec2f(0.0, uniform.pixelOffset.y), 0.0), c, isUsed(c));\n\tc = select(textureSampleLevel(source, sourceSampler, input.vUv0 + uniform.pixelOffset, 0.0), c, isUsed(c));\n\tvar output: FragmentOutput;\n\toutput.color = c;\n\treturn output;\n}\n`;\n\nconst DENOISE_FILTER_SIZE = 15;\nconst lightmapFiltersChunksGLSL = {\n\t\tglslBilateralDeNoisePS,\n\t\tglslDilatePS\n};\nconst lightmapFiltersChunksWLSL = {\n\t\twgslBilateralDeNoisePS,\n\t\twgslDilatePS\n};\nclass LightmapFilters {\n\t\tconstructor(device){\n\t\t\t\tthis.shaderDilate = [];\n\t\t\t\tthis.shaderDenoise = [];\n\t\t\t\tthis.device = device;\n\t\t\t\tShaderChunks.get(this.device, SHADERLANGUAGE_GLSL).add(lightmapFiltersChunksGLSL);\n\t\t\t\tShaderChunks.get(this.device, SHADERLANGUAGE_WGSL).add(lightmapFiltersChunksWLSL);\n\t\t\t\tthis.constantTexSource = device.scope.resolve('source');\n\t\t\t\tthis.constantPixelOffset = device.scope.resolve('pixelOffset');\n\t\t\t\tthis.pixelOffset = new Float32Array(2);\n\t\t\t\tthis.sigmas = null;\n\t\t\t\tthis.constantSigmas = null;\n\t\t\t\tthis.kernel = null;\n\t\t}\n\t\tsetSourceTexture(texture) {\n\t\t\t\tthis.constantTexSource.setValue(texture);\n\t\t}\n\t\tprepare(textureWidth, textureHeight) {\n\t\t\t\tthis.pixelOffset[0] = 1 / textureWidth;\n\t\t\t\tthis.pixelOffset[1] = 1 / textureHeight;\n\t\t\t\tthis.constantPixelOffset.setValue(this.pixelOffset);\n\t\t}\n\t\tprepareDenoise(filterRange, filterSmoothness, bakeHDR) {\n\t\t\t\tconst index = bakeHDR ? 0 : 1;\n\t\t\t\tif (!this.shaderDenoise[index]) {\n\t\t\t\t\t\tconst defines = new Map();\n\t\t\t\t\t\tdefines.set('{MSIZE}', 15);\n\t\t\t\t\t\tif (bakeHDR) defines.set('HDR', '');\n\t\t\t\t\t\tthis.shaderDenoise[index] = ShaderUtils.createShader(this.device, {\n\t\t\t\t\t\t\t\tuniqueName: `lmBilateralDeNoise-${bakeHDR ? 'hdr' : 'rgbm'}`,\n\t\t\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\t\t\tvertex_position: SEMANTIC_POSITION\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tvertexGLSL: ShaderChunks.get(this.device, SHADERLANGUAGE_GLSL).get('fullscreenQuadVS'),\n\t\t\t\t\t\t\t\tvertexWGSL: ShaderChunks.get(this.device, SHADERLANGUAGE_WGSL).get('fullscreenQuadVS'),\n\t\t\t\t\t\t\t\tfragmentGLSL: ShaderChunks.get(this.device, SHADERLANGUAGE_GLSL).get('glslBilateralDeNoisePS'),\n\t\t\t\t\t\t\t\tfragmentWGSL: ShaderChunks.get(this.device, SHADERLANGUAGE_WGSL).get('wgslBilateralDeNoisePS'),\n\t\t\t\t\t\t\t\tfragmentDefines: defines\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis.sigmas = new Float32Array(2);\n\t\t\t\t\t\tthis.constantSigmas = this.device.scope.resolve('sigmas');\n\t\t\t\t\t\tthis.constantKernel = this.device.scope.resolve('kernel[0]');\n\t\t\t\t\t\tthis.bZnorm = this.device.scope.resolve('bZnorm');\n\t\t\t\t}\n\t\t\t\tthis.sigmas[0] = filterRange;\n\t\t\t\tthis.sigmas[1] = filterSmoothness;\n\t\t\t\tthis.constantSigmas.setValue(this.sigmas);\n\t\t\t\tthis.evaluateDenoiseUniforms(filterRange, filterSmoothness);\n\t\t}\n\t\tgetDenoise(bakeHDR) {\n\t\t\t\tconst index = bakeHDR ? 0 : 1;\n\t\t\t\treturn this.shaderDenoise[index];\n\t\t}\n\t\tgetDilate(device, bakeHDR) {\n\t\t\t\tconst index = bakeHDR ? 0 : 1;\n\t\t\t\tif (!this.shaderDilate[index]) {\n\t\t\t\t\t\tconst define = bakeHDR ? '#define HDR\\n' : '';\n\t\t\t\t\t\tthis.shaderDilate[index] = ShaderUtils.createShader(device, {\n\t\t\t\t\t\t\t\tuniqueName: `lmDilate-${bakeHDR ? 'hdr' : 'rgbm'}`,\n\t\t\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\t\t\tvertex_position: SEMANTIC_POSITION\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tvertexGLSL: ShaderChunks.get(this.device, SHADERLANGUAGE_GLSL).get('fullscreenQuadVS'),\n\t\t\t\t\t\t\t\tvertexWGSL: ShaderChunks.get(this.device, SHADERLANGUAGE_WGSL).get('fullscreenQuadVS'),\n\t\t\t\t\t\t\t\tfragmentGLSL: define + ShaderChunks.get(this.device, SHADERLANGUAGE_GLSL).get('glslDilatePS'),\n\t\t\t\t\t\t\t\tfragmentWGSL: define + ShaderChunks.get(this.device, SHADERLANGUAGE_WGSL).get('wgslDilatePS')\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn this.shaderDilate[index];\n\t\t}\n\t\tevaluateDenoiseUniforms(filterRange, filterSmoothness) {\n\t\t\t\tfunction normpdf(x, sigma) {\n\t\t\t\t\t\treturn 0.39894 * Math.exp(-0.5 * x * x / (sigma * sigma)) / sigma;\n\t\t\t\t}\n\t\t\t\tthis.kernel = this.kernel || new Float32Array(DENOISE_FILTER_SIZE);\n\t\t\t\tconst kernel = this.kernel;\n\t\t\t\tconst kSize = Math.floor((DENOISE_FILTER_SIZE - 1) / 2);\n\t\t\t\tfor(let j = 0; j <= kSize; ++j){\n\t\t\t\t\t\tconst value = normpdf(j, filterRange);\n\t\t\t\t\t\tkernel[kSize + j] = value;\n\t\t\t\t\t\tkernel[kSize - j] = value;\n\t\t\t\t}\n\t\t\t\tthis.constantKernel.setValue(this.kernel);\n\t\t\t\tconst bZnorm = 1 / normpdf(0.0, filterSmoothness);\n\t\t\t\tthis.bZnorm.setValue(bZnorm);\n\t\t}\n}\n\nclass RenderPassLightmapper extends RenderPass {\n\t\tconstructor(device, renderer, camera, worldClusters, receivers, lightArray){\n\t\t\t\tsuper(device), this.viewBindGroups = [];\n\t\t\t\tthis.renderer = renderer;\n\t\t\t\tthis.camera = camera;\n\t\t\t\tthis.worldClusters = worldClusters;\n\t\t\t\tthis.receivers = receivers;\n\t\t\t\tthis.lightArray = lightArray;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.viewBindGroups.forEach((bg)=>{\n\t\t\t\t\t\tbg.defaultUniformBuffer.destroy();\n\t\t\t\t\t\tbg.destroy();\n\t\t\t\t});\n\t\t\t\tthis.viewBindGroups.length = 0;\n\t\t}\n\t\texecute() {\n\t\t\t\tthis.device;\n\t\t\t\tconst { renderer, camera, receivers, renderTarget, worldClusters, lightArray } = this;\n\t\t\t\trenderer.renderForwardLayer(camera, renderTarget, null, undefined, SHADER_FORWARD, this.viewBindGroups, {\n\t\t\t\t\t\tmeshInstances: receivers,\n\t\t\t\t\t\tsplitLights: lightArray,\n\t\t\t\t\t\tlightClusters: worldClusters\n\t\t\t\t});\n\t\t}\n}\n\nconst MAX_LIGHTMAP_SIZE = 2048;\nconst PASS_COLOR = 0;\nconst PASS_DIR = 1;\nconst tempVec$1 = new Vec3();\nclass Lightmapper {\n\t\tconstructor(device, root, scene, renderer, assets){\n\t\t\t\tthis.device = device;\n\t\t\t\tthis.root = root;\n\t\t\t\tthis.scene = scene;\n\t\t\t\tthis.renderer = renderer;\n\t\t\t\tthis.assets = assets;\n\t\t\t\tthis.shadowMapCache = renderer.shadowMapCache;\n\t\t\t\tthis._tempSet = new Set();\n\t\t\t\tthis._initCalled = false;\n\t\t\t\tthis.passMaterials = [];\n\t\t\t\tthis.ambientAOMaterial = null;\n\t\t\t\tthis.fog = '';\n\t\t\t\tthis.ambientLight = new Color();\n\t\t\t\tthis.renderTargets = new Map();\n\t\t\t\tthis.stats = {\n\t\t\t\t\t\trenderPasses: 0,\n\t\t\t\t\t\tlightmapCount: 0,\n\t\t\t\t\t\ttotalRenderTime: 0,\n\t\t\t\t\t\tforwardTime: 0,\n\t\t\t\t\t\tfboTime: 0,\n\t\t\t\t\t\tshadowMapTime: 0,\n\t\t\t\t\t\tcompileTime: 0,\n\t\t\t\t\t\tshadersLinked: 0\n\t\t\t\t};\n\t\t}\n\t\tdestroy() {\n\t\t\t\tLightmapCache.decRef(this.blackTex);\n\t\t\t\tthis.blackTex = null;\n\t\t\t\tLightmapCache.destroy();\n\t\t\t\tthis.device = null;\n\t\t\t\tthis.root = null;\n\t\t\t\tthis.scene = null;\n\t\t\t\tthis.renderer = null;\n\t\t\t\tthis.assets = null;\n\t\t\t\tthis.camera?.destroy();\n\t\t\t\tthis.camera = null;\n\t\t}\n\t\tinitBake(device) {\n\t\t\t\tthis.bakeHDR = this.scene.lightmapPixelFormat !== PIXELFORMAT_RGBA8;\n\t\t\t\tif (!this._initCalled) {\n\t\t\t\t\t\tthis._initCalled = true;\n\t\t\t\t\t\tthis.lightmapFilters = new LightmapFilters(device);\n\t\t\t\t\t\tthis.constantBakeDir = device.scope.resolve('bakeDir');\n\t\t\t\t\t\tthis.materials = [];\n\t\t\t\t\t\tthis.blackTex = new Texture(this.device, {\n\t\t\t\t\t\t\t\twidth: 4,\n\t\t\t\t\t\t\t\theight: 4,\n\t\t\t\t\t\t\t\tformat: PIXELFORMAT_RGBA8,\n\t\t\t\t\t\t\t\ttype: TEXTURETYPE_RGBM,\n\t\t\t\t\t\t\t\tname: 'lightmapBlack'\n\t\t\t\t\t\t});\n\t\t\t\t\t\tLightmapCache.incRef(this.blackTex);\n\t\t\t\t\t\tconst camera = new Camera();\n\t\t\t\t\t\tcamera.clearColor.set(0, 0, 0, 0);\n\t\t\t\t\t\tcamera.clearColorBuffer = true;\n\t\t\t\t\t\tcamera.clearDepthBuffer = false;\n\t\t\t\t\t\tcamera.clearStencilBuffer = false;\n\t\t\t\t\t\tcamera.frustumCulling = false;\n\t\t\t\t\t\tcamera.projection = PROJECTION_ORTHOGRAPHIC;\n\t\t\t\t\t\tcamera.aspectRatio = 1;\n\t\t\t\t\t\tcamera.node = new GraphNode();\n\t\t\t\t\t\tthis.camera = camera;\n\t\t\t\t\t\tthis.camera.shaderParams.gammaCorrection = GAMMA_NONE;\n\t\t\t\t\t\tthis.camera.shaderParams.toneMapping = TONEMAP_LINEAR;\n\t\t\t\t}\n\t\t\t\tif (this.scene.clusteredLightingEnabled) {\n\t\t\t\t\t\tconst lightingParams = new LightingParams(device.supportsAreaLights, device.maxTextureSize, ()=>{});\n\t\t\t\t\t\tthis.lightingParams = lightingParams;\n\t\t\t\t\t\tconst srcParams = this.scene.lighting;\n\t\t\t\t\t\tlightingParams.shadowsEnabled = srcParams.shadowsEnabled;\n\t\t\t\t\t\tlightingParams.shadowAtlasResolution = srcParams.shadowAtlasResolution;\n\t\t\t\t\t\tlightingParams.cookiesEnabled = srcParams.cookiesEnabled;\n\t\t\t\t\t\tlightingParams.cookieAtlasResolution = srcParams.cookieAtlasResolution;\n\t\t\t\t\t\tlightingParams.areaLightsEnabled = srcParams.areaLightsEnabled;\n\t\t\t\t\t\tlightingParams.cells = new Vec3(3, 3, 3);\n\t\t\t\t\t\tlightingParams.maxLightsPerCell = 4;\n\t\t\t\t\t\tthis.worldClusters = new WorldClusters(device);\n\t\t\t\t\t\tthis.worldClusters.name = 'ClusterLightmapper';\n\t\t\t\t}\n\t\t}\n\t\tfinishBake(bakeNodes) {\n\t\t\t\tthis.materials = [];\n\t\t\t\tfunction destroyRT(rt) {\n\t\t\t\t\t\tLightmapCache.decRef(rt.colorBuffer);\n\t\t\t\t\t\trt.destroy();\n\t\t\t\t}\n\t\t\t\tthis.renderTargets.forEach((rt)=>{\n\t\t\t\t\t\tdestroyRT(rt);\n\t\t\t\t});\n\t\t\t\tthis.renderTargets.clear();\n\t\t\t\tbakeNodes.forEach((node)=>{\n\t\t\t\t\t\tnode.renderTargets.forEach((rt)=>{\n\t\t\t\t\t\t\t\tdestroyRT(rt);\n\t\t\t\t\t\t});\n\t\t\t\t\t\tnode.renderTargets.length = 0;\n\t\t\t\t});\n\t\t\t\tthis.ambientAOMaterial = null;\n\t\t\t\tif (this.worldClusters) {\n\t\t\t\t\t\tthis.worldClusters.destroy();\n\t\t\t\t\t\tthis.worldClusters = null;\n\t\t\t\t}\n\t\t}\n\t\tcreateMaterialForPass(scene, pass, addAmbient) {\n\t\t\t\tconst material = new StandardMaterial();\n\t\t\t\tmaterial.name = `lmMaterial-pass:${pass}-ambient:${addAmbient}`;\n\t\t\t\tmaterial.setDefine('UV1LAYOUT', '');\n\t\t\t\tmaterial.setDefine('LIT_LIGHTMAP_BAKING', '');\n\t\t\t\tif (pass === PASS_COLOR) {\n\t\t\t\t\t\tmaterial.setDefine('LIT_LIGHTMAP_BAKING_COLOR', '');\n\t\t\t\t\t\tif (addAmbient) {\n\t\t\t\t\t\t\t\tmaterial.setDefine('LIT_LIGHTMAP_BAKING_ADD_AMBIENT', '');\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tmaterial.ambient = new Color(0, 0, 0);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!this.bakeHDR) material.setDefine('LIGHTMAP_RGBM', '');\n\t\t\t\t\t\tmaterial.lightMap = this.blackTex;\n\t\t\t\t} else {\n\t\t\t\t\t\tmaterial.setDefine('LIT_LIGHTMAP_BAKING_DIR', '');\n\t\t\t\t\t\tmaterial.setDefine('STD_LIGHTMAP_DIR', '');\n\t\t\t\t}\n\t\t\t\tmaterial.cull = CULLFACE_NONE;\n\t\t\t\tmaterial.forceUv1 = true;\n\t\t\t\tmaterial.update();\n\t\t\t\treturn material;\n\t\t}\n\t\tcreateMaterials(device, scene, passCount) {\n\t\t\t\tfor(let pass = 0; pass < passCount; pass++){\n\t\t\t\t\t\tif (!this.passMaterials[pass]) {\n\t\t\t\t\t\t\t\tthis.passMaterials[pass] = this.createMaterialForPass(scene, pass, false);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!this.ambientAOMaterial) {\n\t\t\t\t\t\tthis.ambientAOMaterial = this.createMaterialForPass(scene, 0, true);\n\t\t\t\t\t\tthis.ambientAOMaterial.onUpdateShader = function(options) {\n\t\t\t\t\t\t\t\toptions.litOptions.lightMapWithoutAmbient = true;\n\t\t\t\t\t\t\t\toptions.litOptions.separateAmbient = true;\n\t\t\t\t\t\t\t\treturn options;\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t}\n\t\tcreateTexture(size, name) {\n\t\t\t\treturn new Texture(this.device, {\n\t\t\t\t\t\twidth: size,\n\t\t\t\t\t\theight: size,\n\t\t\t\t\t\tformat: this.scene.lightmapPixelFormat,\n\t\t\t\t\t\tmipmaps: false,\n\t\t\t\t\t\ttype: this.bakeHDR ? TEXTURETYPE_DEFAULT : TEXTURETYPE_RGBM,\n\t\t\t\t\t\tminFilter: FILTER_NEAREST,\n\t\t\t\t\t\tmagFilter: FILTER_NEAREST,\n\t\t\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\tname: name\n\t\t\t\t});\n\t\t}\n\t\tcollectModels(node, bakeNodes, allNodes) {\n\t\t\t\tif (!node.enabled) return;\n\t\t\t\tlet meshInstances;\n\t\t\t\tif (node.model?.model && node.model?.enabled) {\n\t\t\t\t\t\tif (allNodes) allNodes.push(new BakeMeshNode(node));\n\t\t\t\t\t\tif (node.model.lightmapped) {\n\t\t\t\t\t\t\t\tif (bakeNodes) {\n\t\t\t\t\t\t\t\t\t\tmeshInstances = node.model.model.meshInstances;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (node.render?.enabled) {\n\t\t\t\t\t\tif (allNodes) allNodes.push(new BakeMeshNode(node));\n\t\t\t\t\t\tif (node.render.lightmapped) {\n\t\t\t\t\t\t\t\tif (bakeNodes) {\n\t\t\t\t\t\t\t\t\t\tmeshInstances = node.render.meshInstances;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (meshInstances) {\n\t\t\t\t\t\tlet hasUv1 = true;\n\t\t\t\t\t\tfor(let i = 0; i < meshInstances.length; i++){\n\t\t\t\t\t\t\t\tif (!meshInstances[i].mesh.vertexBuffer.format.hasUv1) {\n\t\t\t\t\t\t\t\t\t\thasUv1 = false;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (hasUv1) {\n\t\t\t\t\t\t\t\tconst notInstancedMeshInstances = [];\n\t\t\t\t\t\t\t\tfor(let i = 0; i < meshInstances.length; i++){\n\t\t\t\t\t\t\t\t\t\tconst mesh = meshInstances[i].mesh;\n\t\t\t\t\t\t\t\t\t\tif (this._tempSet.has(mesh)) {\n\t\t\t\t\t\t\t\t\t\t\t\tbakeNodes.push(new BakeMeshNode(node, [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmeshInstances[i]\n\t\t\t\t\t\t\t\t\t\t\t\t]));\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tnotInstancedMeshInstances.push(meshInstances[i]);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tthis._tempSet.add(mesh);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis._tempSet.clear();\n\t\t\t\t\t\t\t\tif (notInstancedMeshInstances.length > 0) {\n\t\t\t\t\t\t\t\t\t\tbakeNodes.push(new BakeMeshNode(node, notInstancedMeshInstances));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < node._children.length; i++){\n\t\t\t\t\t\tthis.collectModels(node._children[i], bakeNodes, allNodes);\n\t\t\t\t}\n\t\t}\n\t\tprepareShadowCasters(nodes) {\n\t\t\t\tconst casters = [];\n\t\t\t\tfor(let n = 0; n < nodes.length; n++){\n\t\t\t\t\t\tconst component = nodes[n].component;\n\t\t\t\t\t\tcomponent.castShadows = component.castShadowsLightmap;\n\t\t\t\t\t\tif (component.castShadowsLightmap) {\n\t\t\t\t\t\t\t\tconst meshes = nodes[n].meshInstances;\n\t\t\t\t\t\t\t\tfor(let i = 0; i < meshes.length; i++){\n\t\t\t\t\t\t\t\t\t\tmeshes[i].visibleThisFrame = true;\n\t\t\t\t\t\t\t\t\t\tcasters.push(meshes[i]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn casters;\n\t\t}\n\t\tupdateTransforms(nodes) {\n\t\t\t\tfor(let i = 0; i < nodes.length; i++){\n\t\t\t\t\t\tconst meshInstances = nodes[i].meshInstances;\n\t\t\t\t\t\tfor(let j = 0; j < meshInstances.length; j++){\n\t\t\t\t\t\t\t\tmeshInstances[j].node.getWorldTransform();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tcalculateLightmapSize(node) {\n\t\t\t\tlet data;\n\t\t\t\tconst sizeMult = this.scene.lightmapSizeMultiplier || 16;\n\t\t\t\tconst scale = tempVec$1;\n\t\t\t\tlet srcArea, lightmapSizeMultiplier;\n\t\t\t\tif (node.model) {\n\t\t\t\t\t\tlightmapSizeMultiplier = node.model.lightmapSizeMultiplier;\n\t\t\t\t\t\tif (node.model.asset) {\n\t\t\t\t\t\t\t\tdata = this.assets.get(node.model.asset).data;\n\t\t\t\t\t\t\t\tif (data.area) {\n\t\t\t\t\t\t\t\t\t\tsrcArea = data.area;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (node.model._area) {\n\t\t\t\t\t\t\t\tdata = node.model;\n\t\t\t\t\t\t\t\tif (data._area) {\n\t\t\t\t\t\t\t\t\t\tsrcArea = data._area;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t} else if (node.render) {\n\t\t\t\t\t\tlightmapSizeMultiplier = node.render.lightmapSizeMultiplier;\n\t\t\t\t\t\tif (node.render.type !== 'asset') {\n\t\t\t\t\t\t\t\tif (node.render._area) {\n\t\t\t\t\t\t\t\t\t\tdata = node.render;\n\t\t\t\t\t\t\t\t\t\tif (data._area) {\n\t\t\t\t\t\t\t\t\t\t\t\tsrcArea = data._area;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst area = {\n\t\t\t\t\t\tx: 1,\n\t\t\t\t\t\ty: 1,\n\t\t\t\t\t\tz: 1,\n\t\t\t\t\t\tuv: 1\n\t\t\t\t};\n\t\t\t\tif (srcArea) {\n\t\t\t\t\t\tarea.x = srcArea.x;\n\t\t\t\t\t\tarea.y = srcArea.y;\n\t\t\t\t\t\tarea.z = srcArea.z;\n\t\t\t\t\t\tarea.uv = srcArea.uv;\n\t\t\t\t}\n\t\t\t\tconst areaMult = lightmapSizeMultiplier || 1;\n\t\t\t\tarea.x *= areaMult;\n\t\t\t\tarea.y *= areaMult;\n\t\t\t\tarea.z *= areaMult;\n\t\t\t\tconst component = node.render || node.model;\n\t\t\t\tconst bounds = this.computeNodeBounds(component.meshInstances);\n\t\t\t\tscale.copy(bounds.halfExtents);\n\t\t\t\tlet totalArea = area.x * scale.y * scale.z + area.y * scale.x * scale.z + area.z * scale.x * scale.y;\n\t\t\t\ttotalArea /= area.uv;\n\t\t\t\ttotalArea = Math.sqrt(totalArea);\n\t\t\t\tconst lightmapSize = Math.min(math.nextPowerOfTwo(totalArea * sizeMult), this.scene.lightmapMaxResolution || MAX_LIGHTMAP_SIZE);\n\t\t\t\treturn lightmapSize;\n\t\t}\n\t\tsetLightmapping(nodes, value, passCount, shaderDefs) {\n\t\t\t\tfor(let i = 0; i < nodes.length; i++){\n\t\t\t\t\t\tconst node = nodes[i];\n\t\t\t\t\t\tconst meshInstances = node.meshInstances;\n\t\t\t\t\t\tfor(let j = 0; j < meshInstances.length; j++){\n\t\t\t\t\t\t\t\tconst meshInstance = meshInstances[j];\n\t\t\t\t\t\t\t\tmeshInstance.setLightmapped(value);\n\t\t\t\t\t\t\t\tif (value) {\n\t\t\t\t\t\t\t\t\t\tif (shaderDefs) {\n\t\t\t\t\t\t\t\t\t\t\t\tmeshInstance._shaderDefs |= shaderDefs;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tmeshInstance.mask = MASK_AFFECT_LIGHTMAPPED;\n\t\t\t\t\t\t\t\t\t\tfor(let pass = 0; pass < passCount; pass++){\n\t\t\t\t\t\t\t\t\t\t\t\tconst tex = node.renderTargets[pass].colorBuffer;\n\t\t\t\t\t\t\t\t\t\t\t\ttex.minFilter = FILTER_LINEAR;\n\t\t\t\t\t\t\t\t\t\t\t\ttex.magFilter = FILTER_LINEAR;\n\t\t\t\t\t\t\t\t\t\t\t\tmeshInstance.setRealtimeLightmap(MeshInstance.lightmapParamNames[pass], tex);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tbake(nodes, mode = BAKE_COLORDIR) {\n\t\t\t\tconst device = this.device;\n\t\t\t\tconst startTime = now();\n\t\t\t\tthis.scene._updateSkyMesh();\n\t\t\t\tthis.stats.renderPasses = 0;\n\t\t\t\tthis.stats.shadowMapTime = 0;\n\t\t\t\tthis.stats.forwardTime = 0;\n\t\t\t\tconst startShaders = device._shaderStats.linked;\n\t\t\t\tconst startFboTime = device._renderTargetCreationTime;\n\t\t\t\tconst startCompileTime = device._shaderStats.compileTime;\n\t\t\t\tconst bakeNodes = [];\n\t\t\t\tconst allNodes = [];\n\t\t\t\tif (nodes) {\n\t\t\t\t\t\tfor(let i = 0; i < nodes.length; i++){\n\t\t\t\t\t\t\t\tthis.collectModels(nodes[i], bakeNodes, null);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.collectModels(this.root, null, allNodes);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.collectModels(this.root, bakeNodes, allNodes);\n\t\t\t\t}\n\t\t\t\tif (bakeNodes.length > 0) {\n\t\t\t\t\t\tthis.renderer.shadowRenderer.frameUpdate();\n\t\t\t\t\t\tconst passCount = mode === BAKE_COLORDIR ? 2 : 1;\n\t\t\t\t\t\tthis.setLightmapping(bakeNodes, false, passCount);\n\t\t\t\t\t\tthis.initBake(device);\n\t\t\t\t\t\tthis.bakeInternal(passCount, bakeNodes, allNodes);\n\t\t\t\t\t\tlet shaderDefs = SHADERDEF_LM;\n\t\t\t\t\t\tif (mode === BAKE_COLORDIR) {\n\t\t\t\t\t\t\t\tshaderDefs |= SHADERDEF_DIRLM;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.scene.ambientBake) {\n\t\t\t\t\t\t\t\tshaderDefs |= SHADERDEF_LMAMBIENT;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.setLightmapping(bakeNodes, true, passCount, shaderDefs);\n\t\t\t\t\t\tthis.finishBake(bakeNodes);\n\t\t\t\t}\n\t\t\t\tconst nowTime = now();\n\t\t\t\tthis.stats.totalRenderTime = nowTime - startTime;\n\t\t\t\tthis.stats.shadersLinked = device._shaderStats.linked - startShaders;\n\t\t\t\tthis.stats.compileTime = device._shaderStats.compileTime - startCompileTime;\n\t\t\t\tthis.stats.fboTime = device._renderTargetCreationTime - startFboTime;\n\t\t\t\tthis.stats.lightmapCount = bakeNodes.length;\n\t\t}\n\t\tallocateTextures(bakeNodes, passCount) {\n\t\t\t\tfor(let i = 0; i < bakeNodes.length; i++){\n\t\t\t\t\t\tconst bakeNode = bakeNodes[i];\n\t\t\t\t\t\tconst size = this.calculateLightmapSize(bakeNode.node);\n\t\t\t\t\t\tfor(let pass = 0; pass < passCount; pass++){\n\t\t\t\t\t\t\t\tconst tex = this.createTexture(size, `lightmapper_lightmap_${i}`);\n\t\t\t\t\t\t\t\tLightmapCache.incRef(tex);\n\t\t\t\t\t\t\t\tbakeNode.renderTargets[pass] = new RenderTarget({\n\t\t\t\t\t\t\t\t\t\tcolorBuffer: tex,\n\t\t\t\t\t\t\t\t\t\tdepth: false\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!this.renderTargets.has(size)) {\n\t\t\t\t\t\t\t\tconst tex = this.createTexture(size, `lightmapper_temp_lightmap_${size}`);\n\t\t\t\t\t\t\t\tLightmapCache.incRef(tex);\n\t\t\t\t\t\t\t\tthis.renderTargets.set(size, new RenderTarget({\n\t\t\t\t\t\t\t\t\t\tcolorBuffer: tex,\n\t\t\t\t\t\t\t\t\t\tdepth: false\n\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tprepareLightsToBake(allLights, bakeLights) {\n\t\t\t\tif (this.scene.ambientBake) {\n\t\t\t\t\t\tconst ambientLight = new BakeLightAmbient(this);\n\t\t\t\t\t\tbakeLights.push(ambientLight);\n\t\t\t\t}\n\t\t\t\tconst sceneLights = this.renderer.lights;\n\t\t\t\tfor(let i = 0; i < sceneLights.length; i++){\n\t\t\t\t\t\tconst light = sceneLights[i];\n\t\t\t\t\t\tconst bakeLight = new BakeLightSimple(this, light);\n\t\t\t\t\t\tallLights.push(bakeLight);\n\t\t\t\t\t\tif (light.enabled && (light.mask & MASK_BAKE) !== 0) {\n\t\t\t\t\t\t\t\tlight.mask = MASK_BAKE | MASK_AFFECT_LIGHTMAPPED | MASK_AFFECT_DYNAMIC;\n\t\t\t\t\t\t\t\tlight.shadowUpdateMode = light.type === LIGHTTYPE_DIRECTIONAL ? SHADOWUPDATE_REALTIME : SHADOWUPDATE_THISFRAME;\n\t\t\t\t\t\t\t\tbakeLights.push(bakeLight);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbakeLights.sort();\n\t\t}\n\t\trestoreLights(allLights) {\n\t\t\t\tfor(let i = 0; i < allLights.length; i++){\n\t\t\t\t\t\tallLights[i].restore();\n\t\t\t\t}\n\t\t}\n\t\tsetupScene() {\n\t\t\t\tthis.ambientLight.copy(this.scene.ambientLight);\n\t\t\t\tif (!this.scene.ambientBake) {\n\t\t\t\t\t\tthis.scene.ambientLight.set(0, 0, 0);\n\t\t\t\t}\n\t\t\t\tthis.renderer.setSceneConstants();\n\t\t\t\tthis.device.scope.resolve('ambientBakeOcclusionContrast').setValue(this.scene.ambientBakeOcclusionContrast);\n\t\t\t\tthis.device.scope.resolve('ambientBakeOcclusionBrightness').setValue(this.scene.ambientBakeOcclusionBrightness);\n\t\t}\n\t\trestoreScene() {\n\t\t\t\tthis.scene.ambientLight.copy(this.ambientLight);\n\t\t}\n\t\tcomputeNodeBounds(meshInstances) {\n\t\t\t\tconst bounds = new BoundingBox();\n\t\t\t\tif (meshInstances.length > 0) {\n\t\t\t\t\t\tbounds.copy(meshInstances[0].aabb);\n\t\t\t\t\t\tfor(let m = 1; m < meshInstances.length; m++){\n\t\t\t\t\t\t\t\tbounds.add(meshInstances[m].aabb);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn bounds;\n\t\t}\n\t\tcomputeNodesBounds(nodes) {\n\t\t\t\tfor(let i = 0; i < nodes.length; i++){\n\t\t\t\t\t\tconst meshInstances = nodes[i].meshInstances;\n\t\t\t\t\t\tnodes[i].bounds = this.computeNodeBounds(meshInstances);\n\t\t\t\t}\n\t\t}\n\t\tcomputeBounds(meshInstances) {\n\t\t\t\tconst bounds = new BoundingBox();\n\t\t\t\tfor(let i = 0; i < meshInstances.length; i++){\n\t\t\t\t\t\tbounds.copy(meshInstances[0].aabb);\n\t\t\t\t\t\tfor(let m = 1; m < meshInstances.length; m++){\n\t\t\t\t\t\t\t\tbounds.add(meshInstances[m].aabb);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn bounds;\n\t\t}\n\t\tbackupMaterials(meshInstances) {\n\t\t\t\tfor(let i = 0; i < meshInstances.length; i++){\n\t\t\t\t\t\tthis.materials[i] = meshInstances[i].material;\n\t\t\t\t}\n\t\t}\n\t\trestoreMaterials(meshInstances) {\n\t\t\t\tfor(let i = 0; i < meshInstances.length; i++){\n\t\t\t\t\t\tmeshInstances[i].material = this.materials[i];\n\t\t\t\t}\n\t\t}\n\t\tlightCameraPrepare(device, bakeLight) {\n\t\t\t\tconst light = bakeLight.light;\n\t\t\t\tlet shadowCam;\n\t\t\t\tif (light.type === LIGHTTYPE_SPOT) {\n\t\t\t\t\t\tconst lightRenderData = light.getRenderData(null, 0);\n\t\t\t\t\t\tshadowCam = lightRenderData.shadowCamera;\n\t\t\t\t\t\tshadowCam._node.setPosition(light._node.getPosition());\n\t\t\t\t\t\tshadowCam._node.setRotation(light._node.getRotation());\n\t\t\t\t\t\tshadowCam._node.rotateLocal(-90, 0, 0);\n\t\t\t\t\t\tshadowCam.projection = PROJECTION_PERSPECTIVE;\n\t\t\t\t\t\tshadowCam.nearClip = light.attenuationEnd / 1000;\n\t\t\t\t\t\tshadowCam.farClip = light.attenuationEnd;\n\t\t\t\t\t\tshadowCam.aspectRatio = 1;\n\t\t\t\t\t\tshadowCam.fov = light._outerConeAngle * 2;\n\t\t\t\t\t\tthis.renderer.updateCameraFrustum(shadowCam);\n\t\t\t\t}\n\t\t\t\treturn shadowCam;\n\t\t}\n\t\tlightCameraPrepareAndCull(bakeLight, bakeNode, shadowCam, casterBounds) {\n\t\t\t\tconst light = bakeLight.light;\n\t\t\t\tlet lightAffectsNode = true;\n\t\t\t\tif (light.type === LIGHTTYPE_DIRECTIONAL) {\n\t\t\t\t\t\ttempVec$1.copy(casterBounds.center);\n\t\t\t\t\t\ttempVec$1.y += casterBounds.halfExtents.y;\n\t\t\t\t\t\tthis.camera.node.setPosition(tempVec$1);\n\t\t\t\t\t\tthis.camera.node.setEulerAngles(-90, 0, 0);\n\t\t\t\t\t\tthis.camera.nearClip = 0;\n\t\t\t\t\t\tthis.camera.farClip = casterBounds.halfExtents.y * 2;\n\t\t\t\t\t\tconst frustumSize = Math.max(casterBounds.halfExtents.x, casterBounds.halfExtents.z);\n\t\t\t\t\t\tthis.camera.orthoHeight = frustumSize;\n\t\t\t\t} else {\n\t\t\t\t\t\tif (!bakeLight.lightBounds.intersects(bakeNode.bounds)) {\n\t\t\t\t\t\t\t\tlightAffectsNode = false;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (light.type === LIGHTTYPE_SPOT) {\n\t\t\t\t\t\tlet nodeVisible = false;\n\t\t\t\t\t\tconst meshInstances = bakeNode.meshInstances;\n\t\t\t\t\t\tfor(let i = 0; i < meshInstances.length; i++){\n\t\t\t\t\t\t\t\tif (meshInstances[i]._isVisible(shadowCam)) {\n\t\t\t\t\t\t\t\t\t\tnodeVisible = true;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!nodeVisible) {\n\t\t\t\t\t\t\t\tlightAffectsNode = false;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn lightAffectsNode;\n\t\t}\n\t\tsetupLightArray(lightArray, light) {\n\t\t\t\tlightArray[LIGHTTYPE_DIRECTIONAL].length = 0;\n\t\t\t\tlightArray[LIGHTTYPE_OMNI].length = 0;\n\t\t\t\tlightArray[LIGHTTYPE_SPOT].length = 0;\n\t\t\t\tlightArray[light.type][0] = light;\n\t\t\t\tlight.visibleThisFrame = true;\n\t\t}\n\t\trenderShadowMap(comp, shadowMapRendered, casters, bakeLight) {\n\t\t\t\tconst light = bakeLight.light;\n\t\t\t\tconst isClustered = this.scene.clusteredLightingEnabled;\n\t\t\t\tconst castShadow = light.castShadows && (!isClustered || this.scene.lighting.shadowsEnabled);\n\t\t\t\tif (!shadowMapRendered && castShadow) {\n\t\t\t\t\t\tif (!light.shadowMap && !isClustered) {\n\t\t\t\t\t\t\t\tlight.shadowMap = this.shadowMapCache.get(this.device, light);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (light.type === LIGHTTYPE_DIRECTIONAL) {\n\t\t\t\t\t\t\t\tthis.renderer._shadowRendererDirectional.cull(light, comp, this.camera, casters);\n\t\t\t\t\t\t\t\tconst shadowPass = this.renderer._shadowRendererDirectional.getLightRenderPass(light, this.camera);\n\t\t\t\t\t\t\t\tshadowPass?.render();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (this.device.isWebGPU) {\n\t\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.renderer._shadowRendererLocal.cull(light, comp, casters);\n\t\t\t\t\t\t\t\tconst insideRenderPass = false;\n\t\t\t\t\t\t\t\tthis.renderer.shadowRenderer.render(light, this.camera, insideRenderPass);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t}\n\t\tpostprocessTextures(device, bakeNodes, passCount) {\n\t\t\t\tconst numDilates2x = 1;\n\t\t\t\tconst dilateShader = this.lightmapFilters.getDilate(device, this.bakeHDR);\n\t\t\t\tlet denoiseShader;\n\t\t\t\tconst filterLightmap = this.scene.lightmapFilterEnabled;\n\t\t\t\tif (filterLightmap) {\n\t\t\t\t\t\tthis.lightmapFilters.prepareDenoise(this.scene.lightmapFilterRange, this.scene.lightmapFilterSmoothness, this.bakeHDR);\n\t\t\t\t\t\tdenoiseShader = this.lightmapFilters.getDenoise(this.bakeHDR);\n\t\t\t\t}\n\t\t\t\tdevice.setBlendState(BlendState.NOBLEND);\n\t\t\t\tdevice.setDepthState(DepthState.NODEPTH);\n\t\t\t\tdevice.setStencilState(null, null);\n\t\t\t\tfor(let node = 0; node < bakeNodes.length; node++){\n\t\t\t\t\t\tconst bakeNode = bakeNodes[node];\n\t\t\t\t\t\tfor(let pass = 0; pass < passCount; pass++){\n\t\t\t\t\t\t\t\tconst nodeRT = bakeNode.renderTargets[pass];\n\t\t\t\t\t\t\t\tconst lightmap = nodeRT.colorBuffer;\n\t\t\t\t\t\t\t\tconst tempRT = this.renderTargets.get(lightmap.width);\n\t\t\t\t\t\t\t\tconst tempTex = tempRT.colorBuffer;\n\t\t\t\t\t\t\t\tthis.lightmapFilters.prepare(lightmap.width, lightmap.height);\n\t\t\t\t\t\t\t\tfor(let i = 0; i < numDilates2x; i++){\n\t\t\t\t\t\t\t\t\t\tthis.lightmapFilters.setSourceTexture(lightmap);\n\t\t\t\t\t\t\t\t\t\tconst bilateralFilterEnabled = filterLightmap && pass === 0 && i === 0;\n\t\t\t\t\t\t\t\t\t\tdrawQuadWithShader(device, tempRT, bilateralFilterEnabled ? denoiseShader : dilateShader);\n\t\t\t\t\t\t\t\t\t\tthis.lightmapFilters.setSourceTexture(tempTex);\n\t\t\t\t\t\t\t\t\t\tdrawQuadWithShader(device, nodeRT, dilateShader);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tbakeInternal(passCount, bakeNodes, allNodes) {\n\t\t\t\tconst scene = this.scene;\n\t\t\t\tconst comp = scene.layers;\n\t\t\t\tconst device = this.device;\n\t\t\t\tconst clusteredLightingEnabled = scene.clusteredLightingEnabled;\n\t\t\t\tthis.createMaterials(device, scene, passCount);\n\t\t\t\tthis.setupScene();\n\t\t\t\tcomp._update();\n\t\t\t\tthis.computeNodesBounds(bakeNodes);\n\t\t\t\tthis.allocateTextures(bakeNodes, passCount);\n\t\t\t\tthis.renderer.collectLights(comp);\n\t\t\t\tconst allLights = [], bakeLights = [];\n\t\t\t\tthis.prepareLightsToBake(allLights, bakeLights);\n\t\t\t\tthis.updateTransforms(allNodes);\n\t\t\t\tconst casters = this.prepareShadowCasters(allNodes);\n\t\t\t\tthis.renderer.updateCpuSkinMatrices(casters);\n\t\t\t\tthis.renderer.gpuUpdate(casters);\n\t\t\t\tconst casterBounds = this.computeBounds(casters);\n\t\t\t\tlet i, j, rcv, m;\n\t\t\t\tfor(i = 0; i < bakeNodes.length; i++){\n\t\t\t\t\t\tconst bakeNode = bakeNodes[i];\n\t\t\t\t\t\trcv = bakeNode.meshInstances;\n\t\t\t\t\t\tfor(j = 0; j < rcv.length; j++){\n\t\t\t\t\t\t\t\tm = rcv[j];\n\t\t\t\t\t\t\t\tm.setLightmapped(false);\n\t\t\t\t\t\t\t\tm.mask = MASK_BAKE;\n\t\t\t\t\t\t\t\tm.setRealtimeLightmap(MeshInstance.lightmapParamNames[0], this.blackTex);\n\t\t\t\t\t\t\t\tm.setRealtimeLightmap(MeshInstance.lightmapParamNames[1], this.blackTex);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor(j = 0; j < bakeLights.length; j++){\n\t\t\t\t\t\tbakeLights[j].light.enabled = false;\n\t\t\t\t}\n\t\t\t\tconst lightArray = [\n\t\t\t\t\t\t[],\n\t\t\t\t\t\t[],\n\t\t\t\t\t\t[]\n\t\t\t\t];\n\t\t\t\tlet pass, node;\n\t\t\t\tlet shadersUpdatedOn1stPass = false;\n\t\t\t\tfor(i = 0; i < bakeLights.length; i++){\n\t\t\t\t\t\tconst bakeLight = bakeLights[i];\n\t\t\t\t\t\tconst isAmbientLight = bakeLight instanceof BakeLightAmbient;\n\t\t\t\t\t\tconst isDirectional = bakeLight.light.type === LIGHTTYPE_DIRECTIONAL;\n\t\t\t\t\t\tlet numVirtualLights = bakeLight.numVirtualLights;\n\t\t\t\t\t\tif (passCount > 1 && numVirtualLights > 1 && bakeLight.light.bakeDir) {\n\t\t\t\t\t\t\t\tnumVirtualLights = 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor(let virtualLightIndex = 0; virtualLightIndex < numVirtualLights; virtualLightIndex++){\n\t\t\t\t\t\t\t\tif (numVirtualLights > 1) {\n\t\t\t\t\t\t\t\t\t\tbakeLight.prepareVirtualLight(virtualLightIndex, numVirtualLights);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbakeLight.startBake();\n\t\t\t\t\t\t\t\tlet shadowMapRendered = false;\n\t\t\t\t\t\t\t\tconst shadowCam = this.lightCameraPrepare(device, bakeLight);\n\t\t\t\t\t\t\t\tfor(node = 0; node < bakeNodes.length; node++){\n\t\t\t\t\t\t\t\t\t\tconst bakeNode = bakeNodes[node];\n\t\t\t\t\t\t\t\t\t\trcv = bakeNode.meshInstances;\n\t\t\t\t\t\t\t\t\t\tconst lightAffectsNode = this.lightCameraPrepareAndCull(bakeLight, bakeNode, shadowCam, casterBounds);\n\t\t\t\t\t\t\t\t\t\tif (!lightAffectsNode) {\n\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tthis.setupLightArray(lightArray, bakeLight.light);\n\t\t\t\t\t\t\t\t\t\tconst clusterLights = isDirectional ? [] : [\n\t\t\t\t\t\t\t\t\t\t\t\tbakeLight.light\n\t\t\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\t\t\tif (clusteredLightingEnabled) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.renderer.lightTextureAtlas.update(clusterLights, this.lightingParams);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tshadowMapRendered = this.renderShadowMap(comp, shadowMapRendered, casters, bakeLight);\n\t\t\t\t\t\t\t\t\t\tif (clusteredLightingEnabled) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.worldClusters.update(clusterLights, this.lightingParams);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tthis.backupMaterials(rcv);\n\t\t\t\t\t\t\t\t\t\tfor(pass = 0; pass < passCount; pass++){\n\t\t\t\t\t\t\t\t\t\t\t\tif (pass > 0 && virtualLightIndex > 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tif (isAmbientLight && pass > 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tconst nodeRT = bakeNode.renderTargets[pass];\n\t\t\t\t\t\t\t\t\t\t\t\tconst lightmapSize = bakeNode.renderTargets[pass].colorBuffer.width;\n\t\t\t\t\t\t\t\t\t\t\t\tconst tempRT = this.renderTargets.get(lightmapSize);\n\t\t\t\t\t\t\t\t\t\t\t\tconst tempTex = tempRT.colorBuffer;\n\t\t\t\t\t\t\t\t\t\t\t\tif (pass === 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tshadersUpdatedOn1stPass = scene.updateShaders;\n\t\t\t\t\t\t\t\t\t\t\t\t} else if (shadersUpdatedOn1stPass) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tscene.updateShaders = true;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tlet passMaterial = this.passMaterials[pass];\n\t\t\t\t\t\t\t\t\t\t\t\tif (isAmbientLight) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst lastVirtualLightForPass = virtualLightIndex + 1 === numVirtualLights;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (lastVirtualLightForPass && pass === 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tpassMaterial = this.ambientAOMaterial;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tfor(j = 0; j < rcv.length; j++){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\trcv[j].material = passMaterial;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tthis.renderer.updateShaders(rcv);\n\t\t\t\t\t\t\t\t\t\t\t\tif (pass === PASS_DIR) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.constantBakeDir.setValue(bakeLight.light.bakeDir ? 1 : 0);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tif (device.isWebGPU) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst renderPass = new RenderPassLightmapper(device, this.renderer, this.camera, clusteredLightingEnabled ? this.worldClusters : null, rcv, lightArray);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\trenderPass.init(tempRT);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\trenderPass.render();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\trenderPass.destroy();\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.renderer.setCamera(this.camera, tempRT, true);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (clusteredLightingEnabled) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.worldClusters.activate();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.renderer._forwardTime = 0;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.renderer._shadowMapTime = 0;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.renderer.renderForward(this.camera, tempRT, rcv, lightArray, SHADER_FORWARD);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdevice.updateEnd();\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tbakeNode.renderTargets[pass] = tempRT;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.renderTargets.set(lightmapSize, nodeRT);\n\t\t\t\t\t\t\t\t\t\t\t\tfor(j = 0; j < rcv.length; j++){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tm = rcv[j];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tm.setRealtimeLightmap(MeshInstance.lightmapParamNames[pass], tempTex);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tm._shaderDefs |= SHADERDEF_LM;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tthis.restoreMaterials(rcv);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbakeLight.endBake(this.shadowMapCache);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.postprocessTextures(device, bakeNodes, passCount);\n\t\t\t\tfor(node = 0; node < allNodes.length; node++){\n\t\t\t\t\t\tallNodes[node].restore();\n\t\t\t\t}\n\t\t\t\tthis.restoreLights(allLights);\n\t\t\t\tthis.restoreScene();\n\t\t\t\tif (!clusteredLightingEnabled) {\n\t\t\t\t\t\tthis.shadowMapCache.clear();\n\t\t\t\t}\n\t\t}\n}\n\nclass Component extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.order = 0;\n\t\t}\n\t\tconstructor(system, entity){\n\t\t\t\tsuper();\n\t\t\t\tthis.system = system;\n\t\t\t\tthis.entity = entity;\n\t\t\t\tif (this.system.schema && !this._accessorsBuilt) {\n\t\t\t\t\t\tthis.buildAccessors(this.system.schema);\n\t\t\t\t}\n\t\t\t\tthis.on('set', function(name, oldValue, newValue) {\n\t\t\t\t\t\tthis.fire(`set_${name}`, name, oldValue, newValue);\n\t\t\t\t});\n\t\t\t\tthis.on('set_enabled', this.onSetEnabled, this);\n\t\t}\n\t\tstatic _buildAccessors(obj, schema) {\n\t\t\t\tschema.forEach((descriptor)=>{\n\t\t\t\t\t\tconst name = typeof descriptor === 'object' ? descriptor.name : descriptor;\n\t\t\t\t\t\tObject.defineProperty(obj, name, {\n\t\t\t\t\t\t\t\tget: function() {\n\t\t\t\t\t\t\t\t\t\treturn this.data[name];\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tset: function(value) {\n\t\t\t\t\t\t\t\t\t\tconst data = this.data;\n\t\t\t\t\t\t\t\t\t\tconst oldValue = data[name];\n\t\t\t\t\t\t\t\t\t\tdata[name] = value;\n\t\t\t\t\t\t\t\t\t\tthis.fire('set', name, oldValue, value);\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tobj._accessorsBuilt = true;\n\t\t}\n\t\tbuildAccessors(schema) {\n\t\t\t\tComponent._buildAccessors(this, schema);\n\t\t}\n\t\tonSetEnabled(name, oldValue, newValue) {\n\t\t\t\tif (oldValue !== newValue) {\n\t\t\t\t\t\tif (this.entity.enabled) {\n\t\t\t\t\t\t\t\tif (newValue) {\n\t\t\t\t\t\t\t\t\t\tthis.onEnable();\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis.onDisable();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tonEnable() {}\n\t\tonDisable() {}\n\t\tonPostStateChange() {}\n\t\tget data() {\n\t\t\t\tconst record = this.system.store[this.entity.getGuid()];\n\t\t\t\treturn record ? record.data : null;\n\t\t}\n\t\tset enabled(arg) {}\n\t\tget enabled() {\n\t\t\t\treturn true;\n\t\t}\n}\n\nclass ComponentSystem extends EventHandler {\n\t\tconstructor(app){\n\t\t\t\tsuper();\n\t\t\t\tthis.app = app;\n\t\t\t\tthis.store = {};\n\t\t\t\tthis.schema = [];\n\t\t}\n\t\taddComponent(entity, data = {}) {\n\t\t\t\tconst component = new this.ComponentType(this, entity);\n\t\t\t\tconst componentData = new this.DataType();\n\t\t\t\tthis.store[entity.getGuid()] = {\n\t\t\t\t\t\tentity: entity,\n\t\t\t\t\t\tdata: componentData\n\t\t\t\t};\n\t\t\t\tentity[this.id] = component;\n\t\t\t\tentity.c[this.id] = component;\n\t\t\t\tthis.initializeComponentData(component, data, []);\n\t\t\t\tthis.fire('add', entity, component);\n\t\t\t\treturn component;\n\t\t}\n\t\tremoveComponent(entity) {\n\t\t\t\tconst id = this.id;\n\t\t\t\tconst record = this.store[entity.getGuid()];\n\t\t\t\tconst component = entity.c[id];\n\t\t\t\tcomponent.fire('beforeremove');\n\t\t\t\tthis.fire('beforeremove', entity, component);\n\t\t\t\tdelete this.store[entity.getGuid()];\n\t\t\t\tentity[id] = undefined;\n\t\t\t\tdelete entity.c[id];\n\t\t\t\tthis.fire('remove', entity, record.data);\n\t\t}\n\t\tcloneComponent(entity, clone) {\n\t\t\t\tconst src = this.store[entity.getGuid()];\n\t\t\t\treturn this.addComponent(clone, src.data);\n\t\t}\n\t\tinitializeComponentData(component, data = {}, properties) {\n\t\t\t\tfor(let i = 0, len = properties.length; i < len; i++){\n\t\t\t\t\t\tconst descriptor = properties[i];\n\t\t\t\t\t\tlet name, type;\n\t\t\t\t\t\tif (typeof descriptor === 'object') {\n\t\t\t\t\t\t\t\tname = descriptor.name;\n\t\t\t\t\t\t\t\ttype = descriptor.type;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tname = descriptor;\n\t\t\t\t\t\t\t\ttype = undefined;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlet value = data[name];\n\t\t\t\t\t\tif (value !== undefined) {\n\t\t\t\t\t\t\t\tif (type !== undefined) {\n\t\t\t\t\t\t\t\t\t\tvalue = convertValue(value, type);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcomponent[name] = value;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomponent[name] = component.data[name];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (component.enabled && component.entity.enabled) {\n\t\t\t\t\t\tcomponent.onEnable();\n\t\t\t\t}\n\t\t}\n\t\tgetPropertiesOfType(type) {\n\t\t\t\tconst matchingProperties = [];\n\t\t\t\tconst schema = this.schema || [];\n\t\t\t\tschema.forEach((descriptor)=>{\n\t\t\t\t\t\tif (descriptor && typeof descriptor === 'object' && descriptor.type === type) {\n\t\t\t\t\t\t\t\tmatchingProperties.push(descriptor);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn matchingProperties;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.off();\n\t\t}\n}\nfunction convertValue(value, type) {\n\t\tif (!value) {\n\t\t\t\treturn value;\n\t\t}\n\t\tswitch(type){\n\t\t\t\tcase 'rgb':\n\t\t\t\t\t\tif (value instanceof Color) {\n\t\t\t\t\t\t\t\treturn value.clone();\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn new Color(value[0], value[1], value[2]);\n\t\t\t\tcase 'rgba':\n\t\t\t\t\t\tif (value instanceof Color) {\n\t\t\t\t\t\t\t\treturn value.clone();\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn new Color(value[0], value[1], value[2], value[3]);\n\t\t\t\tcase 'vec2':\n\t\t\t\t\t\tif (value instanceof Vec2) {\n\t\t\t\t\t\t\t\treturn value.clone();\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn new Vec2(value[0], value[1]);\n\t\t\t\tcase 'vec3':\n\t\t\t\t\t\tif (value instanceof Vec3) {\n\t\t\t\t\t\t\t\treturn value.clone();\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn new Vec3(value[0], value[1], value[2]);\n\t\t\t\tcase 'vec4':\n\t\t\t\t\t\tif (value instanceof Vec4) {\n\t\t\t\t\t\t\t\treturn value.clone();\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn new Vec4(value[0], value[1], value[2], value[3]);\n\t\t\t\tcase 'boolean':\n\t\t\t\tcase 'number':\n\t\t\t\tcase 'string':\n\t\t\t\t\t\treturn value;\n\t\t\t\tcase 'entity':\n\t\t\t\t\t\treturn value;\n\t\t\t\tdefault:\n\t\t\t\t\t\tthrow new Error(`Could not convert unhandled type: ${type}`);\n\t\t}\n}\n\nconst INTERPOLATION_STEP = 0;\nconst INTERPOLATION_LINEAR = 1;\nconst INTERPOLATION_CUBIC = 2;\n\nclass AnimCache {\n\t\tconstructor(){\n\t\t\t\tthis._left = Infinity;\n\t\t\t\tthis._right = -Infinity;\n\t\t\t\tthis._len = 0;\n\t\t\t\tthis._recip = 0;\n\t\t\t\tthis._p0 = 0;\n\t\t\t\tthis._p1 = 0;\n\t\t\t\tthis._t = 0;\n\t\t\t\tthis._hermite = {\n\t\t\t\t\t\tvalid: false,\n\t\t\t\t\t\tp0: 0,\n\t\t\t\t\t\tm0: 0,\n\t\t\t\t\t\tp1: 0,\n\t\t\t\t\t\tm1: 0\n\t\t\t\t};\n\t\t}\n\t\tupdate(time, input) {\n\t\t\t\tif (time < this._left || time >= this._right) {\n\t\t\t\t\t\tconst len = input.length;\n\t\t\t\t\t\tif (!len) {\n\t\t\t\t\t\t\t\tthis._left = -Infinity;\n\t\t\t\t\t\t\t\tthis._right = Infinity;\n\t\t\t\t\t\t\t\tthis._len = 0;\n\t\t\t\t\t\t\t\tthis._recip = 0;\n\t\t\t\t\t\t\t\tthis._p0 = this._p1 = 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (time < input[0]) {\n\t\t\t\t\t\t\t\t\t\tthis._left = -Infinity;\n\t\t\t\t\t\t\t\t\t\tthis._right = input[0];\n\t\t\t\t\t\t\t\t\t\tthis._len = 0;\n\t\t\t\t\t\t\t\t\t\tthis._recip = 0;\n\t\t\t\t\t\t\t\t\t\tthis._p0 = this._p1 = 0;\n\t\t\t\t\t\t\t\t} else if (time >= input[len - 1]) {\n\t\t\t\t\t\t\t\t\t\tthis._left = input[len - 1];\n\t\t\t\t\t\t\t\t\t\tthis._right = Infinity;\n\t\t\t\t\t\t\t\t\t\tthis._len = 0;\n\t\t\t\t\t\t\t\t\t\tthis._recip = 0;\n\t\t\t\t\t\t\t\t\t\tthis._p0 = this._p1 = len - 1;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tconst index = this._findKey(time, input);\n\t\t\t\t\t\t\t\t\t\tthis._left = input[index];\n\t\t\t\t\t\t\t\t\t\tthis._right = input[index + 1];\n\t\t\t\t\t\t\t\t\t\tthis._len = this._right - this._left;\n\t\t\t\t\t\t\t\t\t\tconst diff = 1.0 / this._len;\n\t\t\t\t\t\t\t\t\t\tthis._recip = isFinite(diff) ? diff : 0;\n\t\t\t\t\t\t\t\t\t\tthis._p0 = index;\n\t\t\t\t\t\t\t\t\t\tthis._p1 = index + 1;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._t = this._recip === 0 ? 0 : (time - this._left) * this._recip;\n\t\t\t\tthis._hermite.valid = false;\n\t\t}\n\t\t_findKey(time, input) {\n\t\t\t\tlet index = 0;\n\t\t\t\twhile(time >= input[index + 1]){\n\t\t\t\t\t\tindex++;\n\t\t\t\t}\n\t\t\t\treturn index;\n\t\t}\n\t\teval(result, interpolation, output) {\n\t\t\t\tconst data = output._data;\n\t\t\t\tconst comp = output._components;\n\t\t\t\tconst idx0 = this._p0 * comp;\n\t\t\t\tif (interpolation === INTERPOLATION_STEP) {\n\t\t\t\t\t\tfor(let i = 0; i < comp; ++i){\n\t\t\t\t\t\t\t\tresult[i] = data[idx0 + i];\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tconst t = this._t;\n\t\t\t\t\t\tconst idx1 = this._p1 * comp;\n\t\t\t\t\t\tswitch(interpolation){\n\t\t\t\t\t\t\t\tcase INTERPOLATION_LINEAR:\n\t\t\t\t\t\t\t\t\t\tfor(let i = 0; i < comp; ++i){\n\t\t\t\t\t\t\t\t\t\t\t\tresult[i] = math.lerp(data[idx0 + i], data[idx1 + i], t);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase INTERPOLATION_CUBIC:\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tconst hermite = this._hermite;\n\t\t\t\t\t\t\t\t\t\t\t\tif (!hermite.valid) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst t2 = t * t;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst twot = t + t;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst omt = 1 - t;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst omt2 = omt * omt;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\thermite.valid = true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\thermite.p0 = (1 + twot) * omt2;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\thermite.m0 = t * omt2;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\thermite.p1 = t2 * (3 - twot);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\thermite.m1 = t2 * (t - 1);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tconst p0 = (this._p0 * 3 + 1) * comp;\n\t\t\t\t\t\t\t\t\t\t\t\tconst m0 = (this._p0 * 3 + 2) * comp;\n\t\t\t\t\t\t\t\t\t\t\t\tconst p1 = (this._p1 * 3 + 1) * comp;\n\t\t\t\t\t\t\t\t\t\t\t\tconst m1 = (this._p1 * 3 + 0) * comp;\n\t\t\t\t\t\t\t\t\t\t\t\tfor(let i = 0; i < comp; ++i){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tresult[i] = hermite.p0 * data[p0 + i] + hermite.m0 * data[m0 + i] * this._len + hermite.p1 * data[p1 + i] + hermite.m1 * data[m1 + i] * this._len;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n}\n\nclass AnimSnapshot {\n\t\tconstructor(animTrack){\n\t\t\t\tthis._name = `${animTrack.name}Snapshot`;\n\t\t\t\tthis._time = -1;\n\t\t\t\tthis._cache = [];\n\t\t\t\tthis._results = [];\n\t\t\t\tfor(let i = 0; i < animTrack._inputs.length; ++i){\n\t\t\t\t\t\tthis._cache[i] = new AnimCache();\n\t\t\t\t}\n\t\t\t\tconst curves = animTrack._curves;\n\t\t\t\tconst outputs = animTrack._outputs;\n\t\t\t\tfor(let i = 0; i < curves.length; ++i){\n\t\t\t\t\t\tconst curve = curves[i];\n\t\t\t\t\t\tconst output = outputs[curve._output];\n\t\t\t\t\t\tconst storage = [];\n\t\t\t\t\t\tfor(let j = 0; j < output._components; ++j){\n\t\t\t\t\t\t\t\tstorage[j] = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._results[i] = storage;\n\t\t\t\t}\n\t\t}\n}\n\nclass AnimClip {\n\t\tstatic{\n\t\t\t\tthis.eventFrame = {\n\t\t\t\t\t\tstart: 0,\n\t\t\t\t\t\tend: 0,\n\t\t\t\t\t\tresidual: 0\n\t\t\t\t};\n\t\t}\n\t\tconstructor(track, time, speed, playing, loop, eventHandler){\n\t\t\t\tthis._name = track.name;\n\t\t\t\tthis._track = track;\n\t\t\t\tthis._snapshot = new AnimSnapshot(track);\n\t\t\t\tthis._playing = playing;\n\t\t\t\tthis._time = time;\n\t\t\t\tthis._speed = speed;\n\t\t\t\tthis._loop = loop;\n\t\t\t\tthis._blendWeight = 1.0;\n\t\t\t\tthis._blendOrder = 0.0;\n\t\t\t\tthis._eventHandler = eventHandler;\n\t\t\t\tthis.alignCursorToCurrentTime();\n\t\t}\n\t\tset name(name) {\n\t\t\t\tthis._name = name;\n\t\t}\n\t\tget name() {\n\t\t\t\treturn this._name;\n\t\t}\n\t\tset track(track) {\n\t\t\t\tthis._track = track;\n\t\t\t\tthis._snapshot = new AnimSnapshot(track);\n\t\t}\n\t\tget track() {\n\t\t\t\treturn this._track;\n\t\t}\n\t\tget snapshot() {\n\t\t\t\treturn this._snapshot;\n\t\t}\n\t\tset time(time) {\n\t\t\t\tthis._time = time;\n\t\t\t\tthis.alignCursorToCurrentTime();\n\t\t}\n\t\tget time() {\n\t\t\t\treturn this._time;\n\t\t}\n\t\tset speed(speed) {\n\t\t\t\tconst signChanged = Math.sign(speed) !== Math.sign(this._speed);\n\t\t\t\tthis._speed = speed;\n\t\t\t\tif (signChanged) {\n\t\t\t\t\t\tthis.alignCursorToCurrentTime();\n\t\t\t\t}\n\t\t}\n\t\tget speed() {\n\t\t\t\treturn this._speed;\n\t\t}\n\t\tset loop(loop) {\n\t\t\t\tthis._loop = loop;\n\t\t}\n\t\tget loop() {\n\t\t\t\treturn this._loop;\n\t\t}\n\t\tset blendWeight(blendWeight) {\n\t\t\t\tthis._blendWeight = blendWeight;\n\t\t}\n\t\tget blendWeight() {\n\t\t\t\treturn this._blendWeight;\n\t\t}\n\t\tset blendOrder(blendOrder) {\n\t\t\t\tthis._blendOrder = blendOrder;\n\t\t}\n\t\tget blendOrder() {\n\t\t\t\treturn this._blendOrder;\n\t\t}\n\t\tset eventCursor(value) {\n\t\t\t\tthis._eventCursor = value;\n\t\t}\n\t\tget eventCursor() {\n\t\t\t\treturn this._eventCursor;\n\t\t}\n\t\tget eventCursorEnd() {\n\t\t\t\treturn this.isReverse ? 0 : this._track.events.length - 1;\n\t\t}\n\t\tget nextEvent() {\n\t\t\t\treturn this._track.events[this._eventCursor];\n\t\t}\n\t\tget isReverse() {\n\t\t\t\treturn this._speed < 0;\n\t\t}\n\t\tnextEventAheadOfTime(time) {\n\t\t\t\tif (!this.nextEvent) return false;\n\t\t\t\treturn this.isReverse ? this.nextEvent.time <= time : this.nextEvent.time >= time;\n\t\t}\n\t\tnextEventBehindTime(time) {\n\t\t\t\tif (!this.nextEvent) return false;\n\t\t\t\tif (time === this.track.duration) {\n\t\t\t\t\t\treturn this.isReverse ? this.nextEvent.time >= time : this.nextEvent.time <= time;\n\t\t\t\t}\n\t\t\t\treturn this.isReverse ? this.nextEvent.time > time : this.nextEvent.time < time;\n\t\t}\n\t\tresetEventCursor() {\n\t\t\t\tthis._eventCursor = this.isReverse ? this._track.events.length - 1 : 0;\n\t\t}\n\t\tmoveEventCursor() {\n\t\t\t\tthis._eventCursor += this.isReverse ? -1 : 1;\n\t\t\t\tif (this._eventCursor >= this.track.events.length) {\n\t\t\t\t\t\tthis._eventCursor = 0;\n\t\t\t\t} else if (this._eventCursor < 0) {\n\t\t\t\t\t\tthis._eventCursor = this.track.events.length - 1;\n\t\t\t\t}\n\t\t}\n\t\tclipFrameTime(frameEndTime) {\n\t\t\t\tconst eventFrame = AnimClip.eventFrame;\n\t\t\t\teventFrame.start = 0;\n\t\t\t\teventFrame.end = frameEndTime;\n\t\t\t\teventFrame.residual = 0;\n\t\t\t\tif (this.isReverse) {\n\t\t\t\t\t\tif (frameEndTime < 0) {\n\t\t\t\t\t\t\t\teventFrame.start = this.track.duration;\n\t\t\t\t\t\t\t\teventFrame.end = 0;\n\t\t\t\t\t\t\t\teventFrame.residual = frameEndTime + this.track.duration;\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tif (frameEndTime > this.track.duration) {\n\t\t\t\t\t\t\t\teventFrame.start = 0;\n\t\t\t\t\t\t\t\teventFrame.end = this.track.duration;\n\t\t\t\t\t\t\t\teventFrame.residual = frameEndTime - this.track.duration;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\talignCursorToCurrentTime() {\n\t\t\t\tthis.resetEventCursor();\n\t\t\t\twhile(this.nextEventBehindTime(this._time) && this._eventCursor !== this.eventCursorEnd){\n\t\t\t\t\t\tthis.moveEventCursor();\n\t\t\t\t}\n\t\t}\n\t\tfireNextEvent() {\n\t\t\t\tthis._eventHandler.fire(this.nextEvent.name, {\n\t\t\t\t\t\ttrack: this.track,\n\t\t\t\t\t\t...this.nextEvent\n\t\t\t\t});\n\t\t\t\tthis.moveEventCursor();\n\t\t}\n\t\tfireNextEventInFrame(frameStartTime, frameEndTime) {\n\t\t\t\tif (this.nextEventAheadOfTime(frameStartTime) && this.nextEventBehindTime(frameEndTime)) {\n\t\t\t\t\t\tthis.fireNextEvent();\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t}\n\t\tactiveEventsForFrame(frameStartTime, frameEndTime) {\n\t\t\t\tconst eventFrame = AnimClip.eventFrame;\n\t\t\t\tthis.clipFrameTime(frameEndTime);\n\t\t\t\tconst initialCursor = this.eventCursor;\n\t\t\t\twhile(this.fireNextEventInFrame(frameStartTime, eventFrame.end)){\n\t\t\t\t\t\tif (initialCursor === this.eventCursor) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this.loop && Math.abs(eventFrame.residual) > 0) {\n\t\t\t\t\t\tthis.activeEventsForFrame(eventFrame.start, eventFrame.residual);\n\t\t\t\t}\n\t\t}\n\t\tprogressForTime(time) {\n\t\t\t\treturn time * this._speed / this._track.duration;\n\t\t}\n\t\t_update(deltaTime) {\n\t\t\t\tif (this._playing) {\n\t\t\t\t\t\tlet time = this._time;\n\t\t\t\t\t\tconst duration = this._track.duration;\n\t\t\t\t\t\tconst speed = this._speed;\n\t\t\t\t\t\tconst loop = this._loop;\n\t\t\t\t\t\tif (this._track.events.length > 0 && duration > 0) {\n\t\t\t\t\t\t\t\tthis.activeEventsForFrame(time, time + speed * deltaTime);\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttime += speed * deltaTime;\n\t\t\t\t\t\tif (speed >= 0) {\n\t\t\t\t\t\t\t\tif (time > duration) {\n\t\t\t\t\t\t\t\t\t\tif (loop) {\n\t\t\t\t\t\t\t\t\t\t\t\ttime = time % duration || 0;\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\ttime = this._track.duration;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.pause();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (time < 0) {\n\t\t\t\t\t\t\t\t\t\tif (loop) {\n\t\t\t\t\t\t\t\t\t\t\t\ttime = duration + (time % duration || 0);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\ttime = 0;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.pause();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._time = time;\n\t\t\t\t}\n\t\t\t\tif (this._time !== this._snapshot._time) {\n\t\t\t\t\t\tthis._track.eval(this._time, this._snapshot);\n\t\t\t\t}\n\t\t}\n\t\tplay() {\n\t\t\t\tthis._playing = true;\n\t\t\t\tthis._time = 0;\n\t\t}\n\t\tstop() {\n\t\t\t\tthis._playing = false;\n\t\t\t\tthis._time = 0;\n\t\t}\n\t\tpause() {\n\t\t\t\tthis._playing = false;\n\t\t}\n\t\tresume() {\n\t\t\t\tthis._playing = true;\n\t\t}\n\t\treset() {\n\t\t\t\tthis._time = 0;\n\t\t}\n}\n\nconst ANIM_INTERRUPTION_NONE = 'NONE';\nconst ANIM_INTERRUPTION_PREV = 'PREV_STATE';\nconst ANIM_INTERRUPTION_NEXT = 'NEXT_STATE';\nconst ANIM_INTERRUPTION_PREV_NEXT = 'PREV_STATE_NEXT_STATE';\nconst ANIM_INTERRUPTION_NEXT_PREV = 'NEXT_STATE_PREV_STATE';\nconst ANIM_GREATER_THAN = 'GREATER_THAN';\nconst ANIM_LESS_THAN = 'LESS_THAN';\nconst ANIM_GREATER_THAN_EQUAL_TO = 'GREATER_THAN_EQUAL_TO';\nconst ANIM_LESS_THAN_EQUAL_TO = 'LESS_THAN_EQUAL_TO';\nconst ANIM_EQUAL_TO = 'EQUAL_TO';\nconst ANIM_NOT_EQUAL_TO = 'NOT_EQUAL_TO';\nconst ANIM_PARAMETER_INTEGER = 'INTEGER';\nconst ANIM_PARAMETER_FLOAT = 'FLOAT';\nconst ANIM_PARAMETER_BOOLEAN = 'BOOLEAN';\nconst ANIM_PARAMETER_TRIGGER = 'TRIGGER';\nconst ANIM_BLEND_1D = '1D';\nconst ANIM_BLEND_2D_DIRECTIONAL = '2D_DIRECTIONAL';\nconst ANIM_BLEND_2D_CARTESIAN = '2D_CARTESIAN';\nconst ANIM_BLEND_DIRECT = 'DIRECT';\nconst ANIM_STATE_START = 'START';\nconst ANIM_STATE_END = 'END';\nconst ANIM_STATE_ANY = 'ANY';\nconst ANIM_CONTROL_STATES = [\n\t\tANIM_STATE_START,\n\t\tANIM_STATE_END,\n\t\tANIM_STATE_ANY\n];\nconst ANIM_LAYER_OVERWRITE = 'OVERWRITE';\nconst ANIM_LAYER_ADDITIVE = 'ADDITIVE';\n\nclass AnimBlend {\n\t\tstatic dot(a, b) {\n\t\t\t\tconst len = a.length;\n\t\t\t\tlet result = 0;\n\t\t\t\tfor(let i = 0; i < len; ++i){\n\t\t\t\t\t\tresult += a[i] * b[i];\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t}\n\t\tstatic normalize(a) {\n\t\t\t\tlet l = AnimBlend.dot(a, a);\n\t\t\t\tif (l > 0) {\n\t\t\t\t\t\tl = 1.0 / Math.sqrt(l);\n\t\t\t\t\t\tconst len = a.length;\n\t\t\t\t\t\tfor(let i = 0; i < len; ++i){\n\t\t\t\t\t\t\t\ta[i] *= l;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tstatic set(a, b, type) {\n\t\t\t\tconst len = a.length;\n\t\t\t\tif (type === 'quaternion') {\n\t\t\t\t\t\tlet l = AnimBlend.dot(b, b);\n\t\t\t\t\t\tif (l > 0) {\n\t\t\t\t\t\t\t\tl = 1.0 / Math.sqrt(l);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor(let i = 0; i < len; ++i){\n\t\t\t\t\t\t\t\ta[i] = b[i] * l;\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tfor(let i = 0; i < len; ++i){\n\t\t\t\t\t\t\t\ta[i] = b[i];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tstatic blendVec(a, b, t, additive) {\n\t\t\t\tconst it = additive ? 1.0 : 1.0 - t;\n\t\t\t\tconst len = a.length;\n\t\t\t\tfor(let i = 0; i < len; ++i){\n\t\t\t\t\t\ta[i] = a[i] * it + b[i] * t;\n\t\t\t\t}\n\t\t}\n\t\tstatic blendQuat(a, b, t, additive) {\n\t\t\t\tconst len = a.length;\n\t\t\t\tconst it = additive ? 1.0 : 1.0 - t;\n\t\t\t\tif (AnimBlend.dot(a, b) < 0) {\n\t\t\t\t\t\tt = -t;\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < len; ++i){\n\t\t\t\t\t\ta[i] = a[i] * it + b[i] * t;\n\t\t\t\t}\n\t\t\t\tif (!additive) {\n\t\t\t\t\t\tAnimBlend.normalize(a);\n\t\t\t\t}\n\t\t}\n\t\tstatic blend(a, b, t, type, additive) {\n\t\t\t\tif (type === 'quaternion') {\n\t\t\t\t\t\tAnimBlend.blendQuat(a, b, t, additive);\n\t\t\t\t} else {\n\t\t\t\t\t\tAnimBlend.blendVec(a, b, t, additive);\n\t\t\t\t}\n\t\t}\n\t\tstatic stableSort(a, lessFunc) {\n\t\t\t\tconst len = a.length;\n\t\t\t\tfor(let i = 0; i < len - 1; ++i){\n\t\t\t\t\t\tfor(let j = i + 1; j < len; ++j){\n\t\t\t\t\t\t\t\tif (lessFunc(a[j], a[i])) {\n\t\t\t\t\t\t\t\t\t\tconst tmp = a[i];\n\t\t\t\t\t\t\t\t\t\ta[i] = a[j];\n\t\t\t\t\t\t\t\t\t\ta[j] = tmp;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n}\n\nclass AnimTargetValue {\n\t\tstatic{\n\t\t\t\tthis.TYPE_QUAT = 'quaternion';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.TYPE_VEC3 = 'vector3';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.q1 = new Quat();\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.q2 = new Quat();\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.q3 = new Quat();\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.quatArr = [\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t1\n\t\t\t\t];\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.vecArr = [\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0\n\t\t\t\t];\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.IDENTITY_QUAT_ARR = [\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t1\n\t\t\t\t];\n\t\t}\n\t\tconstructor(component, type){\n\t\t\t\tthis._component = component;\n\t\t\t\tthis.mask = new Int8Array(component.layers.length);\n\t\t\t\tthis.weights = new Float32Array(component.layers.length);\n\t\t\t\tthis.totalWeight = 0;\n\t\t\t\tthis.counter = 0;\n\t\t\t\tthis.layerCounter = 0;\n\t\t\t\tthis.valueType = type;\n\t\t\t\tthis.dirty = true;\n\t\t\t\tthis.value = type === AnimTargetValue.TYPE_QUAT ? [\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t1\n\t\t\t\t] : [\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0\n\t\t\t\t];\n\t\t\t\tthis.baseValue = null;\n\t\t\t\tthis.setter = null;\n\t\t}\n\t\tget _normalizeWeights() {\n\t\t\t\treturn this._component.normalizeWeights;\n\t\t}\n\t\tgetWeight(index) {\n\t\t\t\tif (this.dirty) this.updateWeights();\n\t\t\t\tif (this._normalizeWeights && this.totalWeight === 0 || !this.mask[index]) {\n\t\t\t\t\t\treturn 0;\n\t\t\t\t} else if (this._normalizeWeights) {\n\t\t\t\t\t\treturn this.weights[index] / this.totalWeight;\n\t\t\t\t}\n\t\t\t\treturn math.clamp(this.weights[index], 0, 1);\n\t\t}\n\t\t_layerBlendType(index) {\n\t\t\t\treturn this._component.layers[index].blendType;\n\t\t}\n\t\tsetMask(index, value) {\n\t\t\t\tthis.mask[index] = value;\n\t\t\t\tif (this._normalizeWeights) {\n\t\t\t\t\t\tif (this._component.layers[index].blendType === ANIM_LAYER_OVERWRITE) {\n\t\t\t\t\t\t\t\tthis.mask = this.mask.fill(0, 0, index);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.dirty = true;\n\t\t\t\t}\n\t\t}\n\t\tupdateWeights() {\n\t\t\t\tthis.totalWeight = 0;\n\t\t\t\tfor(let i = 0; i < this.weights.length; i++){\n\t\t\t\t\t\tthis.weights[i] = this._component.layers[i].weight;\n\t\t\t\t\t\tthis.totalWeight += this.mask[i] * this.weights[i];\n\t\t\t\t}\n\t\t\t\tthis.dirty = false;\n\t\t}\n\t\tupdateValue(index, value) {\n\t\t\t\tif (this.counter === 0) {\n\t\t\t\t\t\tAnimBlend.set(this.value, AnimTargetValue.IDENTITY_QUAT_ARR, this.valueType);\n\t\t\t\t\t\tif (!this._normalizeWeights) {\n\t\t\t\t\t\t\t\tAnimBlend.blend(this.value, this.baseValue, 1, this.valueType);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!this.mask[index] || this.getWeight(index) === 0) return;\n\t\t\t\tif (this._layerBlendType(index) === ANIM_LAYER_ADDITIVE && !this._normalizeWeights) {\n\t\t\t\t\t\tif (this.valueType === AnimTargetValue.TYPE_QUAT) {\n\t\t\t\t\t\t\t\tconst v = AnimTargetValue.q1.set(this.value[0], this.value[1], this.value[2], this.value[3]);\n\t\t\t\t\t\t\t\tconst aV1 = AnimTargetValue.q2.set(this.baseValue[0], this.baseValue[1], this.baseValue[2], this.baseValue[3]);\n\t\t\t\t\t\t\t\tconst aV2 = AnimTargetValue.q3.set(value[0], value[1], value[2], value[3]);\n\t\t\t\t\t\t\t\tconst aV = aV1.invert().mul(aV2);\n\t\t\t\t\t\t\t\taV.slerp(Quat.IDENTITY, aV, this.getWeight(index));\n\t\t\t\t\t\t\t\tv.mul(aV);\n\t\t\t\t\t\t\t\tAnimTargetValue.quatArr[0] = v.x;\n\t\t\t\t\t\t\t\tAnimTargetValue.quatArr[1] = v.y;\n\t\t\t\t\t\t\t\tAnimTargetValue.quatArr[2] = v.z;\n\t\t\t\t\t\t\t\tAnimTargetValue.quatArr[3] = v.w;\n\t\t\t\t\t\t\t\tAnimBlend.set(this.value, AnimTargetValue.quatArr, this.valueType);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tAnimTargetValue.vecArr[0] = value[0] - this.baseValue[0];\n\t\t\t\t\t\t\t\tAnimTargetValue.vecArr[1] = value[1] - this.baseValue[1];\n\t\t\t\t\t\t\t\tAnimTargetValue.vecArr[2] = value[2] - this.baseValue[2];\n\t\t\t\t\t\t\t\tAnimBlend.blend(this.value, AnimTargetValue.vecArr, this.getWeight(index), this.valueType, true);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tAnimBlend.blend(this.value, value, this.getWeight(index), this.valueType);\n\t\t\t\t}\n\t\t\t\tif (this.setter) this.setter(this.value);\n\t\t}\n\t\tunbind() {\n\t\t\t\tif (this.setter) {\n\t\t\t\t\t\tthis.setter(this.baseValue);\n\t\t\t\t}\n\t\t}\n}\n\nclass AnimEvaluator {\n\t\tconstructor(binder){\n\t\t\t\tthis._binder = binder;\n\t\t\t\tthis._clips = [];\n\t\t\t\tthis._inputs = [];\n\t\t\t\tthis._outputs = [];\n\t\t\t\tthis._targets = {};\n\t\t}\n\t\tget clips() {\n\t\t\t\treturn this._clips;\n\t\t}\n\t\taddClip(clip) {\n\t\t\t\tconst targets = this._targets;\n\t\t\t\tconst binder = this._binder;\n\t\t\t\tconst curves = clip.track.curves;\n\t\t\t\tconst snapshot = clip.snapshot;\n\t\t\t\tconst inputs = [];\n\t\t\t\tconst outputs = [];\n\t\t\t\tfor(let i = 0; i < curves.length; ++i){\n\t\t\t\t\t\tconst curve = curves[i];\n\t\t\t\t\t\tconst paths = curve.paths;\n\t\t\t\t\t\tfor(let j = 0; j < paths.length; ++j){\n\t\t\t\t\t\t\t\tconst path = paths[j];\n\t\t\t\t\t\t\t\tconst resolved = binder.resolve(path);\n\t\t\t\t\t\t\t\tlet target = targets[resolved && resolved.targetPath || null];\n\t\t\t\t\t\t\t\tif (!target && resolved) {\n\t\t\t\t\t\t\t\t\t\ttarget = {\n\t\t\t\t\t\t\t\t\t\t\t\ttarget: resolved,\n\t\t\t\t\t\t\t\t\t\t\t\tvalue: [],\n\t\t\t\t\t\t\t\t\t\t\t\tcurves: 0,\n\t\t\t\t\t\t\t\t\t\t\t\tblendCounter: 0\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\tfor(let k = 0; k < target.target.components; ++k){\n\t\t\t\t\t\t\t\t\t\t\t\ttarget.value.push(0);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\ttargets[resolved.targetPath] = target;\n\t\t\t\t\t\t\t\t\t\tif (binder.animComponent) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (!binder.animComponent.targets[resolved.targetPath]) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlet type;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (resolved.targetPath.substring(resolved.targetPath.length - 13) === 'localRotation') {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype = AnimTargetValue.TYPE_QUAT;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype = AnimTargetValue.TYPE_VEC3;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbinder.animComponent.targets[resolved.targetPath] = new AnimTargetValue(binder.animComponent, type);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tbinder.animComponent.targets[resolved.targetPath].layerCounter++;\n\t\t\t\t\t\t\t\t\t\t\t\tbinder.animComponent.targets[resolved.targetPath].setMask(binder.layerIndex, 1);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (target) {\n\t\t\t\t\t\t\t\t\t\ttarget.curves++;\n\t\t\t\t\t\t\t\t\t\tinputs.push(snapshot._results[i]);\n\t\t\t\t\t\t\t\t\t\toutputs.push(target);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._clips.push(clip);\n\t\t\t\tthis._inputs.push(inputs);\n\t\t\t\tthis._outputs.push(outputs);\n\t\t}\n\t\tremoveClip(index) {\n\t\t\t\tconst targets = this._targets;\n\t\t\t\tconst binder = this._binder;\n\t\t\t\tconst clips = this._clips;\n\t\t\t\tconst clip = clips[index];\n\t\t\t\tconst curves = clip.track.curves;\n\t\t\t\tfor(let i = 0; i < curves.length; ++i){\n\t\t\t\t\t\tconst curve = curves[i];\n\t\t\t\t\t\tconst paths = curve.paths;\n\t\t\t\t\t\tfor(let j = 0; j < paths.length; ++j){\n\t\t\t\t\t\t\t\tconst path = paths[j];\n\t\t\t\t\t\t\t\tconst target = this._binder.resolve(path);\n\t\t\t\t\t\t\t\tif (target) {\n\t\t\t\t\t\t\t\t\t\ttarget.curves--;\n\t\t\t\t\t\t\t\t\t\tif (target.curves === 0) {\n\t\t\t\t\t\t\t\t\t\t\t\tbinder.unresolve(path);\n\t\t\t\t\t\t\t\t\t\t\t\tdelete targets[target.targetPath];\n\t\t\t\t\t\t\t\t\t\t\t\tif (binder.animComponent) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbinder.animComponent.targets[target.targetPath].layerCounter--;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tclips.splice(index, 1);\n\t\t\t\tthis._inputs.splice(index, 1);\n\t\t\t\tthis._outputs.splice(index, 1);\n\t\t}\n\t\tremoveClips() {\n\t\t\t\twhile(this._clips.length > 0){\n\t\t\t\t\t\tthis.removeClip(0);\n\t\t\t\t}\n\t\t}\n\t\tupdateClipTrack(name, animTrack) {\n\t\t\t\tthis._clips.forEach((clip)=>{\n\t\t\t\t\t\tif (clip.name.includes(name)) {\n\t\t\t\t\t\t\t\tclip.track = animTrack;\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tthis.rebind();\n\t\t}\n\t\tfindClip(name) {\n\t\t\t\tconst clips = this._clips;\n\t\t\t\tfor(let i = 0; i < clips.length; ++i){\n\t\t\t\t\t\tconst clip = clips[i];\n\t\t\t\t\t\tif (clip.name === name) {\n\t\t\t\t\t\t\t\treturn clip;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\trebind() {\n\t\t\t\tthis._binder.rebind();\n\t\t\t\tthis._targets = {};\n\t\t\t\tconst clips = [\n\t\t\t\t\t\t...this.clips\n\t\t\t\t];\n\t\t\t\tthis.removeClips();\n\t\t\t\tclips.forEach((clip)=>{\n\t\t\t\t\t\tthis.addClip(clip);\n\t\t\t\t});\n\t\t}\n\t\tassignMask(mask) {\n\t\t\t\treturn this._binder.assignMask(mask);\n\t\t}\n\t\tupdate(deltaTime, outputAnimation = true) {\n\t\t\t\tconst clips = this._clips;\n\t\t\t\tconst order = clips.map((c, i)=>{\n\t\t\t\t\t\treturn i;\n\t\t\t\t});\n\t\t\t\tAnimBlend.stableSort(order, (a, b)=>{\n\t\t\t\t\t\treturn clips[a].blendOrder < clips[b].blendOrder;\n\t\t\t\t});\n\t\t\t\tfor(let i = 0; i < order.length; ++i){\n\t\t\t\t\t\tconst index = order[i];\n\t\t\t\t\t\tconst clip = clips[index];\n\t\t\t\t\t\tconst inputs = this._inputs[index];\n\t\t\t\t\t\tconst outputs = this._outputs[index];\n\t\t\t\t\t\tconst blendWeight = clip.blendWeight;\n\t\t\t\t\t\tif (blendWeight > 0.0) {\n\t\t\t\t\t\t\t\tclip._update(deltaTime);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!outputAnimation) break;\n\t\t\t\t\t\tlet input;\n\t\t\t\t\t\tlet output;\n\t\t\t\t\t\tlet value;\n\t\t\t\t\t\tif (blendWeight >= 1.0) {\n\t\t\t\t\t\t\t\tfor(let j = 0; j < inputs.length; ++j){\n\t\t\t\t\t\t\t\t\t\tinput = inputs[j];\n\t\t\t\t\t\t\t\t\t\toutput = outputs[j];\n\t\t\t\t\t\t\t\t\t\tvalue = output.value;\n\t\t\t\t\t\t\t\t\t\tAnimBlend.set(value, input, output.target.type);\n\t\t\t\t\t\t\t\t\t\toutput.blendCounter++;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (blendWeight > 0.0) {\n\t\t\t\t\t\t\t\tfor(let j = 0; j < inputs.length; ++j){\n\t\t\t\t\t\t\t\t\t\tinput = inputs[j];\n\t\t\t\t\t\t\t\t\t\toutput = outputs[j];\n\t\t\t\t\t\t\t\t\t\tvalue = output.value;\n\t\t\t\t\t\t\t\t\t\tif (output.blendCounter === 0) {\n\t\t\t\t\t\t\t\t\t\t\t\tAnimBlend.set(value, input, output.target.type);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tAnimBlend.blend(value, input, blendWeight, output.target.type);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\toutput.blendCounter++;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst targets = this._targets;\n\t\t\t\tconst binder = this._binder;\n\t\t\t\tfor(const path in targets){\n\t\t\t\t\t\tif (targets.hasOwnProperty(path)) {\n\t\t\t\t\t\t\t\tconst target = targets[path];\n\t\t\t\t\t\t\t\tif (binder.animComponent && target.target.usesLayerBlending) {\n\t\t\t\t\t\t\t\t\t\tconst animTarget = binder.animComponent.targets[path];\n\t\t\t\t\t\t\t\t\t\tif (animTarget.counter === animTarget.layerCounter) {\n\t\t\t\t\t\t\t\t\t\t\t\tanimTarget.counter = 0;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (!animTarget.path) {\n\t\t\t\t\t\t\t\t\t\t\t\tanimTarget.path = path;\n\t\t\t\t\t\t\t\t\t\t\t\tanimTarget.baseValue = target.target.get();\n\t\t\t\t\t\t\t\t\t\t\t\tanimTarget.setter = target.target.set;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tanimTarget.updateValue(binder.layerIndex, target.value);\n\t\t\t\t\t\t\t\t\t\tanimTarget.counter++;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\ttarget.target.set(target.value);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\ttarget.blendCounter = 0;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._binder.update(deltaTime);\n\t\t}\n}\n\nclass AnimEvents {\n\t\tconstructor(events){\n\t\t\t\tthis._events = [\n\t\t\t\t\t\t...events\n\t\t\t\t];\n\t\t\t\tthis._events.sort((a, b)=>a.time - b.time);\n\t\t}\n\t\tget events() {\n\t\t\t\treturn this._events;\n\t\t}\n}\n\nclass AnimTrack {\n\t\tstatic{\n\t\t\t\tthis.EMPTY = Object.freeze(new AnimTrack('empty', Number.MAX_VALUE, [], [], []));\n\t\t}\n\t\tconstructor(name, duration, inputs, outputs, curves, animEvents = new AnimEvents([])){\n\t\t\t\tthis._name = name;\n\t\t\t\tthis._duration = duration;\n\t\t\t\tthis._inputs = inputs;\n\t\t\t\tthis._outputs = outputs;\n\t\t\t\tthis._curves = curves;\n\t\t\t\tthis._animEvents = animEvents;\n\t\t}\n\t\tget name() {\n\t\t\t\treturn this._name;\n\t\t}\n\t\tget duration() {\n\t\t\t\treturn this._duration;\n\t\t}\n\t\tget inputs() {\n\t\t\t\treturn this._inputs;\n\t\t}\n\t\tget outputs() {\n\t\t\t\treturn this._outputs;\n\t\t}\n\t\tget curves() {\n\t\t\t\treturn this._curves;\n\t\t}\n\t\tset events(animEvents) {\n\t\t\t\tthis._animEvents = animEvents;\n\t\t}\n\t\tget events() {\n\t\t\t\treturn this._animEvents.events;\n\t\t}\n\t\teval(time, snapshot) {\n\t\t\t\tsnapshot._time = time;\n\t\t\t\tconst inputs = this._inputs;\n\t\t\t\tconst outputs = this._outputs;\n\t\t\t\tconst curves = this._curves;\n\t\t\t\tconst cache = snapshot._cache;\n\t\t\t\tconst results = snapshot._results;\n\t\t\t\tfor(let i = 0; i < inputs.length; ++i){\n\t\t\t\t\t\tcache[i].update(time, inputs[i]._data);\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < curves.length; ++i){\n\t\t\t\t\t\tconst curve = curves[i];\n\t\t\t\t\t\tconst output = outputs[curve._output];\n\t\t\t\t\t\tconst result = results[i];\n\t\t\t\t\t\tcache[curve._input].eval(result, curve._interpolation, output);\n\t\t\t\t}\n\t\t}\n}\n\nclass AnimBinder {\n\t\tstatic joinPath(pathSegments, character) {\n\t\t\t\tcharacter = character || '.';\n\t\t\t\tconst escape = function(string) {\n\t\t\t\t\t\treturn string.replace(/\\\\/g, '\\\\\\\\').replace(new RegExp(`\\\\${character}`, 'g'), `\\\\${character}`);\n\t\t\t\t};\n\t\t\t\treturn pathSegments.map(escape).join(character);\n\t\t}\n\t\tstatic splitPath(path, character) {\n\t\t\t\tcharacter = character || '.';\n\t\t\t\tconst result = [];\n\t\t\t\tlet curr = '';\n\t\t\t\tlet i = 0;\n\t\t\t\twhile(i < path.length){\n\t\t\t\t\t\tlet c = path[i++];\n\t\t\t\t\t\tif (c === '\\\\' && i < path.length) {\n\t\t\t\t\t\t\t\tc = path[i++];\n\t\t\t\t\t\t\t\tif (c === '\\\\' || c === character) {\n\t\t\t\t\t\t\t\t\t\tcurr += c;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tcurr += `\\\\${c}`;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (c === character) {\n\t\t\t\t\t\t\t\tresult.push(curr);\n\t\t\t\t\t\t\t\tcurr = '';\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcurr += c;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (curr.length > 0) {\n\t\t\t\t\t\tresult.push(curr);\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t}\n\t\tstatic encode(entityPath, component, propertyPath) {\n\t\t\t\treturn `${Array.isArray(entityPath) ? entityPath.join('/') : entityPath}/${component}/${Array.isArray(propertyPath) ? propertyPath.join('/') : propertyPath}`;\n\t\t}\n\t\tresolve(path) {\n\t\t\t\treturn null;\n\t\t}\n\t\tunresolve(path) {}\n\t\tupdate(deltaTime) {}\n}\n\nclass AnimTarget {\n\t\tconstructor(func, type, components, targetPath){\n\t\t\t\tif (func.set) {\n\t\t\t\t\t\tthis._set = func.set;\n\t\t\t\t\t\tthis._get = func.get;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._set = func;\n\t\t\t\t}\n\t\t\t\tthis._type = type;\n\t\t\t\tthis._components = components;\n\t\t\t\tthis._targetPath = targetPath;\n\t\t\t\tthis._isTransform = this._targetPath.substring(this._targetPath.length - 13) === 'localRotation' || this._targetPath.substring(this._targetPath.length - 13) === 'localPosition' || this._targetPath.substring(this._targetPath.length - 10) === 'localScale';\n\t\t\t\tthis._isWeight = this._targetPath.indexOf('weight.') !== -1;\n\t\t}\n\t\tget set() {\n\t\t\t\treturn this._set;\n\t\t}\n\t\tget get() {\n\t\t\t\treturn this._get;\n\t\t}\n\t\tget type() {\n\t\t\t\treturn this._type;\n\t\t}\n\t\tget components() {\n\t\t\t\treturn this._components;\n\t\t}\n\t\tget targetPath() {\n\t\t\t\treturn this._targetPath;\n\t\t}\n\t\tget isTransform() {\n\t\t\t\treturn this._isTransform;\n\t\t}\n\t\tget isWeight() {\n\t\t\t\treturn this._isWeight;\n\t\t}\n\t\tget usesLayerBlending() {\n\t\t\t\treturn this._isTransform || this._isWeight;\n\t\t}\n}\n\nclass DefaultAnimBinder {\n\t\tconstructor(graph){\n\t\t\t\tthis._isPathInMask = (path, checkMaskValue)=>{\n\t\t\t\t\t\tconst maskItem = this._mask[path];\n\t\t\t\t\t\tif (!maskItem) return false;\n\t\t\t\t\t\telse if (maskItem.children || checkMaskValue && maskItem.value !== false) return true;\n\t\t\t\t\t\treturn false;\n\t\t\t\t};\n\t\t\t\tthis.graph = graph;\n\t\t\t\tif (!graph) return;\n\t\t\t\tthis._mask = null;\n\t\t\t\tconst nodes = {};\n\t\t\t\tconst flatten = function(node) {\n\t\t\t\t\t\tnodes[node.name] = node;\n\t\t\t\t\t\tfor(let i = 0; i < node.children.length; ++i){\n\t\t\t\t\t\t\t\tflatten(node.children[i]);\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tflatten(graph);\n\t\t\t\tthis.nodes = nodes;\n\t\t\t\tthis.targetCache = {};\n\t\t\t\tconst findMeshInstances = function(node) {\n\t\t\t\t\t\tlet object = node;\n\t\t\t\t\t\twhile(object && !(object instanceof Entity)){\n\t\t\t\t\t\t\t\tobject = object.parent;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlet meshInstances;\n\t\t\t\t\t\tif (object) {\n\t\t\t\t\t\t\t\tif (object.render) {\n\t\t\t\t\t\t\t\t\t\tmeshInstances = object.render.meshInstances;\n\t\t\t\t\t\t\t\t} else if (object.model) {\n\t\t\t\t\t\t\t\t\t\tmeshInstances = object.model.meshInstances;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn meshInstances;\n\t\t\t\t};\n\t\t\t\tthis.nodeCounts = {};\n\t\t\t\tthis.activeNodes = [];\n\t\t\t\tthis.handlers = {\n\t\t\t\t\t\t'localPosition': function(node) {\n\t\t\t\t\t\t\t\tconst object = node.localPosition;\n\t\t\t\t\t\t\t\tconst func = function(value) {\n\t\t\t\t\t\t\t\t\t\tobject.set(...value);\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\treturn DefaultAnimBinder.createAnimTarget(func, 'vector', 3, node, 'localPosition');\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'localRotation': function(node) {\n\t\t\t\t\t\t\t\tconst object = node.localRotation;\n\t\t\t\t\t\t\t\tconst func = function(value) {\n\t\t\t\t\t\t\t\t\t\tobject.set(...value);\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\treturn DefaultAnimBinder.createAnimTarget(func, 'quaternion', 4, node, 'localRotation');\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'localScale': function(node) {\n\t\t\t\t\t\t\t\tconst object = node.localScale;\n\t\t\t\t\t\t\t\tconst func = function(value) {\n\t\t\t\t\t\t\t\t\t\tobject.set(...value);\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\treturn DefaultAnimBinder.createAnimTarget(func, 'vector', 3, node, 'localScale');\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'weight': function(node, weightName) {\n\t\t\t\t\t\t\t\tif (weightName.indexOf('name.') === 0) {\n\t\t\t\t\t\t\t\t\t\tweightName = weightName.replace('name.', '');\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tweightName = Number(weightName);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst meshInstances = findMeshInstances(node);\n\t\t\t\t\t\t\t\tconst instances = [];\n\t\t\t\t\t\t\t\tif (meshInstances) {\n\t\t\t\t\t\t\t\t\t\tfor(let i = 0; i < meshInstances.length; ++i){\n\t\t\t\t\t\t\t\t\t\t\t\tif (meshInstances[i].node.name === node.name && meshInstances[i].morphInstance) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tinstances.push(meshInstances[i].morphInstance);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (instances.length > 0) {\n\t\t\t\t\t\t\t\t\t\tconst func = {\n\t\t\t\t\t\t\t\t\t\t\t\tset: (value)=>{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor(let i = 0; i < instances.length; ++i){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tinstances[i].setWeight(weightName, value[0]);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\tget: ()=>{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tinstances[0].getWeight(weightName)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\treturn DefaultAnimBinder.createAnimTarget(func, 'number', 1, node, `weight.${weightName}`);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'materialTexture': (node, textureName)=>{\n\t\t\t\t\t\t\t\tconst meshInstances = findMeshInstances(node);\n\t\t\t\t\t\t\t\tif (meshInstances) {\n\t\t\t\t\t\t\t\t\t\tlet meshInstance;\n\t\t\t\t\t\t\t\t\t\tfor(let i = 0; i < meshInstances.length; ++i){\n\t\t\t\t\t\t\t\t\t\t\t\tif (meshInstances[i].node.name === node.name) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmeshInstance = meshInstances[i];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (meshInstance) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst func = (value)=>{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst textureAsset = this.animComponent.system.app.assets.get(value[0]);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (textureAsset && textureAsset.resource && textureAsset.type === 'texture') {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tmeshInstance.material[textureName] = textureAsset.resource;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tmeshInstance.material.update();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\t\t\treturn DefaultAnimBinder.createAnimTarget(func, 'vector', 1, node, 'materialTexture', 'material');\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t}\n\t\t_isPathActive(path) {\n\t\t\t\tif (!this._mask) return true;\n\t\t\t\tconst rootNodeNames = [\n\t\t\t\t\t\tpath.entityPath[0],\n\t\t\t\t\t\tthis.graph.name\n\t\t\t\t];\n\t\t\t\tfor(let j = 0; j < rootNodeNames.length; ++j){\n\t\t\t\t\t\tlet currEntityPath = rootNodeNames[j];\n\t\t\t\t\t\tif (this._isPathInMask(currEntityPath, path.entityPath.length === 1)) return true;\n\t\t\t\t\t\tfor(let i = 1; i < path.entityPath.length; i++){\n\t\t\t\t\t\t\t\tcurrEntityPath += `/${path.entityPath[i]}`;\n\t\t\t\t\t\t\t\tif (this._isPathInMask(currEntityPath, i === path.entityPath.length - 1)) return true;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t}\n\t\tfindNode(path) {\n\t\t\t\tif (!this._isPathActive(path)) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tlet node;\n\t\t\t\tif (this.graph) {\n\t\t\t\t\t\tnode = this.graph.findByPath(path.entityPath);\n\t\t\t\t\t\tif (!node) {\n\t\t\t\t\t\t\t\tnode = this.graph.findByPath(path.entityPath.slice(1));\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!node) {\n\t\t\t\t\t\tnode = this.nodes[path.entityPath[path.entityPath.length - 1] || ''];\n\t\t\t\t}\n\t\t\t\treturn node;\n\t\t}\n\t\tstatic createAnimTarget(func, type, valueCount, node, propertyPath, componentType) {\n\t\t\t\tconst targetPath = AnimBinder.encode(node.path, componentType ? componentType : 'entity', propertyPath);\n\t\t\t\treturn new AnimTarget(func, type, valueCount, targetPath);\n\t\t}\n\t\tresolve(path) {\n\t\t\t\tconst encodedPath = AnimBinder.encode(path.entityPath, path.component, path.propertyPath);\n\t\t\t\tlet target = this.targetCache[encodedPath];\n\t\t\t\tif (target) return target;\n\t\t\t\tconst node = this.findNode(path);\n\t\t\t\tif (!node) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tconst handler = this.handlers[path.propertyPath];\n\t\t\t\tif (!handler) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\ttarget = handler(node);\n\t\t\t\tif (!target) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tthis.targetCache[encodedPath] = target;\n\t\t\t\tif (!this.nodeCounts[node.path]) {\n\t\t\t\t\t\tthis.activeNodes.push(node);\n\t\t\t\t\t\tthis.nodeCounts[node.path] = 1;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.nodeCounts[node.path]++;\n\t\t\t\t}\n\t\t\t\treturn target;\n\t\t}\n\t\tunresolve(path) {\n\t\t\t\tif (path.component !== 'graph') {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst node = this.nodes[path.entityPath[path.entityPath.length - 1] || ''];\n\t\t\t\tthis.nodeCounts[node.path]--;\n\t\t\t\tif (this.nodeCounts[node.path] === 0) {\n\t\t\t\t\t\tconst activeNodes = this.activeNodes;\n\t\t\t\t\t\tconst i = activeNodes.indexOf(node.node);\n\t\t\t\t\t\tconst len = activeNodes.length;\n\t\t\t\t\t\tif (i < len - 1) {\n\t\t\t\t\t\t\t\tactiveNodes[i] = activeNodes[len - 1];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tactiveNodes.pop();\n\t\t\t\t}\n\t\t}\n\t\tupdate(deltaTime) {\n\t\t\t\tconst activeNodes = this.activeNodes;\n\t\t\t\tfor(let i = 0; i < activeNodes.length; ++i){\n\t\t\t\t\t\tactiveNodes[i]._dirtifyLocal();\n\t\t\t\t}\n\t\t}\n\t\tassignMask(mask) {\n\t\t\t\tif (mask !== this._mask) {\n\t\t\t\t\t\tthis._mask = mask;\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t}\n}\n\nclass AnimationComponent extends Component {\n\t\tset animations(value) {\n\t\t\t\tthis._animations = value;\n\t\t\t\tthis.onSetAnimations();\n\t\t}\n\t\tget animations() {\n\t\t\t\treturn this._animations;\n\t\t}\n\t\tset assets(value) {\n\t\t\t\tconst assets = this._assets;\n\t\t\t\tif (assets && assets.length) {\n\t\t\t\t\t\tfor(let i = 0; i < assets.length; i++){\n\t\t\t\t\t\t\t\tif (assets[i]) {\n\t\t\t\t\t\t\t\t\t\tconst asset = this.system.app.assets.get(assets[i]);\n\t\t\t\t\t\t\t\t\t\tif (asset) {\n\t\t\t\t\t\t\t\t\t\t\t\tasset.off('change', this.onAssetChanged, this);\n\t\t\t\t\t\t\t\t\t\t\t\tasset.off('remove', this.onAssetRemoved, this);\n\t\t\t\t\t\t\t\t\t\t\t\tconst animName = this.animationsIndex[asset.id];\n\t\t\t\t\t\t\t\t\t\t\t\tif (this.currAnim === animName) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis._stopCurrentAnimation();\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tdelete this.animations[animName];\n\t\t\t\t\t\t\t\t\t\t\t\tdelete this.animationsIndex[asset.id];\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._assets = value;\n\t\t\t\tconst assetIds = value.map((value)=>{\n\t\t\t\t\t\treturn value instanceof Asset ? value.id : value;\n\t\t\t\t});\n\t\t\t\tthis.loadAnimationAssets(assetIds);\n\t\t}\n\t\tget assets() {\n\t\t\t\treturn this._assets;\n\t\t}\n\t\tset currentTime(currentTime) {\n\t\t\t\tif (this.skeleton) {\n\t\t\t\t\t\tthis.skeleton.currentTime = currentTime;\n\t\t\t\t\t\tthis.skeleton.addTime(0);\n\t\t\t\t\t\tthis.skeleton.updateGraph();\n\t\t\t\t}\n\t\t\t\tif (this.animEvaluator) {\n\t\t\t\t\t\tconst clips = this.animEvaluator.clips;\n\t\t\t\t\t\tfor(let i = 0; i < clips.length; ++i){\n\t\t\t\t\t\t\t\tclips[i].time = currentTime;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget currentTime() {\n\t\t\t\tif (this.skeleton) {\n\t\t\t\t\t\treturn this.skeleton._time;\n\t\t\t\t}\n\t\t\t\tif (this.animEvaluator) {\n\t\t\t\t\t\tconst clips = this.animEvaluator.clips;\n\t\t\t\t\t\tif (clips.length > 0) {\n\t\t\t\t\t\t\t\treturn clips[clips.length - 1].time;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn 0;\n\t\t}\n\t\tget duration() {\n\t\t\t\tif (this.currAnim) {\n\t\t\t\t\t\treturn this.animations[this.currAnim].duration;\n\t\t\t\t}\n\t\t\t\treturn 0;\n\t\t}\n\t\tset loop(value) {\n\t\t\t\tthis._loop = value;\n\t\t\t\tif (this.skeleton) {\n\t\t\t\t\t\tthis.skeleton.looping = value;\n\t\t\t\t}\n\t\t\t\tif (this.animEvaluator) {\n\t\t\t\t\t\tfor(let i = 0; i < this.animEvaluator.clips.length; ++i){\n\t\t\t\t\t\t\t\tthis.animEvaluator.clips[i].loop = value;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget loop() {\n\t\t\t\treturn this._loop;\n\t\t}\n\t\tplay(name, blendTime = 0) {\n\t\t\t\tif (!this.enabled || !this.entity.enabled) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (!this.animations[name]) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.prevAnim = this.currAnim;\n\t\t\t\tthis.currAnim = name;\n\t\t\t\tif (this.model) {\n\t\t\t\t\t\tif (!this.skeleton && !this.animEvaluator) {\n\t\t\t\t\t\t\t\tthis._createAnimationController();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst prevAnim = this.animations[this.prevAnim];\n\t\t\t\t\t\tconst currAnim = this.animations[this.currAnim];\n\t\t\t\t\t\tthis.blending = blendTime > 0 && !!this.prevAnim;\n\t\t\t\t\t\tif (this.blending) {\n\t\t\t\t\t\t\t\tthis.blend = 0;\n\t\t\t\t\t\t\t\tthis.blendSpeed = 1 / blendTime;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.skeleton) {\n\t\t\t\t\t\t\t\tif (this.blending) {\n\t\t\t\t\t\t\t\t\t\tthis.fromSkel.animation = prevAnim;\n\t\t\t\t\t\t\t\t\t\tthis.fromSkel.addTime(this.skeleton._time);\n\t\t\t\t\t\t\t\t\t\tthis.toSkel.animation = currAnim;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis.skeleton.animation = currAnim;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.animEvaluator) {\n\t\t\t\t\t\t\t\tconst animEvaluator = this.animEvaluator;\n\t\t\t\t\t\t\t\tif (this.blending) {\n\t\t\t\t\t\t\t\t\t\twhile(animEvaluator.clips.length > 1){\n\t\t\t\t\t\t\t\t\t\t\t\tanimEvaluator.removeClip(0);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis.animEvaluator.removeClips();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst clip = new AnimClip(this.animations[this.currAnim], 0, 1.0, true, this.loop);\n\t\t\t\t\t\t\t\tclip.name = this.currAnim;\n\t\t\t\t\t\t\t\tclip.blendWeight = this.blending ? 0 : 1;\n\t\t\t\t\t\t\t\tclip.reset();\n\t\t\t\t\t\t\t\tthis.animEvaluator.addClip(clip);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.playing = true;\n\t\t}\n\t\tgetAnimation(name) {\n\t\t\t\treturn this.animations[name];\n\t\t}\n\t\tsetModel(model) {\n\t\t\t\tif (model !== this.model) {\n\t\t\t\t\t\tthis._resetAnimationController();\n\t\t\t\t\t\tthis.model = model;\n\t\t\t\t\t\tif (this.animations && this.currAnim && this.animations[this.currAnim]) {\n\t\t\t\t\t\t\t\tthis.play(this.currAnim);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tonSetAnimations() {\n\t\t\t\tconst modelComponent = this.entity.model;\n\t\t\t\tif (modelComponent) {\n\t\t\t\t\t\tconst m = modelComponent.model;\n\t\t\t\t\t\tif (m && m !== this.model) {\n\t\t\t\t\t\t\t\tthis.setModel(m);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!this.currAnim && this.activate && this.enabled && this.entity.enabled) {\n\t\t\t\t\t\tconst animationNames = Object.keys(this._animations);\n\t\t\t\t\t\tif (animationNames.length > 0) {\n\t\t\t\t\t\t\t\tthis.play(animationNames[0]);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_resetAnimationController() {\n\t\t\t\tthis.skeleton = null;\n\t\t\t\tthis.fromSkel = null;\n\t\t\t\tthis.toSkel = null;\n\t\t\t\tthis.animEvaluator = null;\n\t\t}\n\t\t_createAnimationController() {\n\t\t\t\tconst model = this.model;\n\t\t\t\tconst animations = this.animations;\n\t\t\t\tlet hasJson = false;\n\t\t\t\tlet hasGlb = false;\n\t\t\t\tfor(const animation in animations){\n\t\t\t\t\t\tif (animations.hasOwnProperty(animation)) {\n\t\t\t\t\t\t\t\tconst anim = animations[animation];\n\t\t\t\t\t\t\t\tif (anim.constructor === AnimTrack) {\n\t\t\t\t\t\t\t\t\t\thasGlb = true;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\thasJson = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst graph = model.getGraph();\n\t\t\t\tif (hasJson) {\n\t\t\t\t\t\tthis.fromSkel = new Skeleton(graph);\n\t\t\t\t\t\tthis.toSkel = new Skeleton(graph);\n\t\t\t\t\t\tthis.skeleton = new Skeleton(graph);\n\t\t\t\t\t\tthis.skeleton.looping = this.loop;\n\t\t\t\t\t\tthis.skeleton.setGraph(graph);\n\t\t\t\t} else if (hasGlb) {\n\t\t\t\t\t\tthis.animEvaluator = new AnimEvaluator(new DefaultAnimBinder(this.entity));\n\t\t\t\t}\n\t\t}\n\t\tloadAnimationAssets(ids) {\n\t\t\t\tif (!ids || !ids.length) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst assets = this.system.app.assets;\n\t\t\t\tconst onAssetReady = (asset)=>{\n\t\t\t\t\t\tif (asset.resources.length > 1) {\n\t\t\t\t\t\t\t\tfor(let i = 0; i < asset.resources.length; i++){\n\t\t\t\t\t\t\t\t\t\tthis.animations[asset.resources[i].name] = asset.resources[i];\n\t\t\t\t\t\t\t\t\t\tthis.animationsIndex[asset.id] = asset.resources[i].name;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.animations[asset.name] = asset.resource;\n\t\t\t\t\t\t\t\tthis.animationsIndex[asset.id] = asset.name;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.animations = this.animations;\n\t\t\t\t};\n\t\t\t\tconst onAssetAdd = (asset)=>{\n\t\t\t\t\t\tasset.off('change', this.onAssetChanged, this);\n\t\t\t\t\t\tasset.on('change', this.onAssetChanged, this);\n\t\t\t\t\t\tasset.off('remove', this.onAssetRemoved, this);\n\t\t\t\t\t\tasset.on('remove', this.onAssetRemoved, this);\n\t\t\t\t\t\tif (asset.resource) {\n\t\t\t\t\t\t\t\tonAssetReady(asset);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tasset.once('load', onAssetReady, this);\n\t\t\t\t\t\t\t\tif (this.enabled && this.entity.enabled) {\n\t\t\t\t\t\t\t\t\t\tassets.load(asset);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tfor(let i = 0, l = ids.length; i < l; i++){\n\t\t\t\t\t\tconst asset = assets.get(ids[i]);\n\t\t\t\t\t\tif (asset) {\n\t\t\t\t\t\t\t\tonAssetAdd(asset);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tassets.on(`add:${ids[i]}`, onAssetAdd);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tonAssetChanged(asset, attribute, newValue, oldValue) {\n\t\t\t\tif (attribute === 'resource' || attribute === 'resources') {\n\t\t\t\t\t\tif (attribute === 'resources' && newValue && newValue.length === 0) {\n\t\t\t\t\t\t\t\tnewValue = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (newValue) {\n\t\t\t\t\t\t\t\tlet restarted = false;\n\t\t\t\t\t\t\t\tif (newValue.length > 1) {\n\t\t\t\t\t\t\t\t\t\tif (oldValue && oldValue.length > 1) {\n\t\t\t\t\t\t\t\t\t\t\t\tfor(let i = 0; i < oldValue.length; i++){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdelete this.animations[oldValue[i].name];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tdelete this.animations[asset.name];\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\trestarted = false;\n\t\t\t\t\t\t\t\t\t\tfor(let i = 0; i < newValue.length; i++){\n\t\t\t\t\t\t\t\t\t\t\t\tthis.animations[newValue[i].name] = newValue[i];\n\t\t\t\t\t\t\t\t\t\t\t\tif (!restarted && this.currAnim === newValue[i].name) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (this.playing && this.enabled && this.entity.enabled) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\trestarted = true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.play(newValue[i].name);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (!restarted) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._stopCurrentAnimation();\n\t\t\t\t\t\t\t\t\t\t\t\tthis.onSetAnimations();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tif (oldValue && oldValue.length > 1) {\n\t\t\t\t\t\t\t\t\t\t\t\tfor(let i = 0; i < oldValue.length; i++){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdelete this.animations[oldValue[i].name];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tthis.animations[asset.name] = newValue[0] || newValue;\n\t\t\t\t\t\t\t\t\t\trestarted = false;\n\t\t\t\t\t\t\t\t\t\tif (this.currAnim === asset.name) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (this.playing && this.enabled && this.entity.enabled) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\trestarted = true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.play(asset.name);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (!restarted) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._stopCurrentAnimation();\n\t\t\t\t\t\t\t\t\t\t\t\tthis.onSetAnimations();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.animationsIndex[asset.id] = asset.name;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (oldValue.length > 1) {\n\t\t\t\t\t\t\t\t\t\tfor(let i = 0; i < oldValue.length; i++){\n\t\t\t\t\t\t\t\t\t\t\t\tdelete this.animations[oldValue[i].name];\n\t\t\t\t\t\t\t\t\t\t\t\tif (this.currAnim === oldValue[i].name) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis._stopCurrentAnimation();\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tdelete this.animations[asset.name];\n\t\t\t\t\t\t\t\t\t\tif (this.currAnim === asset.name) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._stopCurrentAnimation();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tdelete this.animationsIndex[asset.id];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tonAssetRemoved(asset) {\n\t\t\t\tasset.off('remove', this.onAssetRemoved, this);\n\t\t\t\tif (this.animations) {\n\t\t\t\t\t\tif (asset.resources.length > 1) {\n\t\t\t\t\t\t\t\tfor(let i = 0; i < asset.resources.length; i++){\n\t\t\t\t\t\t\t\t\t\tdelete this.animations[asset.resources[i].name];\n\t\t\t\t\t\t\t\t\t\tif (this.currAnim === asset.resources[i].name) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._stopCurrentAnimation();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tdelete this.animations[asset.name];\n\t\t\t\t\t\t\t\tif (this.currAnim === asset.name) {\n\t\t\t\t\t\t\t\t\t\tthis._stopCurrentAnimation();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdelete this.animationsIndex[asset.id];\n\t\t\t\t}\n\t\t}\n\t\t_stopCurrentAnimation() {\n\t\t\t\tthis.currAnim = null;\n\t\t\t\tthis.playing = false;\n\t\t\t\tif (this.skeleton) {\n\t\t\t\t\t\tthis.skeleton.currentTime = 0;\n\t\t\t\t\t\tthis.skeleton.animation = null;\n\t\t\t\t}\n\t\t\t\tif (this.animEvaluator) {\n\t\t\t\t\t\tfor(let i = 0; i < this.animEvaluator.clips.length; ++i){\n\t\t\t\t\t\t\t\tthis.animEvaluator.clips[i].stop();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.animEvaluator.update(0);\n\t\t\t\t\t\tthis.animEvaluator.removeClips();\n\t\t\t\t}\n\t\t}\n\t\tonEnable() {\n\t\t\t\tsuper.onEnable();\n\t\t\t\tconst assets = this.assets;\n\t\t\t\tconst registry = this.system.app.assets;\n\t\t\t\tif (assets) {\n\t\t\t\t\t\tfor(let i = 0, len = assets.length; i < len; i++){\n\t\t\t\t\t\t\t\tlet asset = assets[i];\n\t\t\t\t\t\t\t\tif (!(asset instanceof Asset)) {\n\t\t\t\t\t\t\t\t\t\tasset = registry.get(asset);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (asset && !asset.resource) {\n\t\t\t\t\t\t\t\t\t\tregistry.load(asset);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this.activate && !this.currAnim) {\n\t\t\t\t\t\tconst animationNames = Object.keys(this.animations);\n\t\t\t\t\t\tif (animationNames.length > 0) {\n\t\t\t\t\t\t\t\tthis.play(animationNames[0]);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tonBeforeRemove() {\n\t\t\t\tfor(let i = 0; i < this.assets.length; i++){\n\t\t\t\t\t\tlet asset = this.assets[i];\n\t\t\t\t\t\tif (typeof asset === 'number') {\n\t\t\t\t\t\t\t\tasset = this.system.app.assets.get(asset);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!asset) continue;\n\t\t\t\t\t\tasset.off('change', this.onAssetChanged, this);\n\t\t\t\t\t\tasset.off('remove', this.onAssetRemoved, this);\n\t\t\t\t}\n\t\t\t\tthis.skeleton = null;\n\t\t\t\tthis.fromSkel = null;\n\t\t\t\tthis.toSkel = null;\n\t\t\t\tthis.animEvaluator = null;\n\t\t}\n\t\tupdate(dt) {\n\t\t\t\tif (this.blending) {\n\t\t\t\t\t\tthis.blend += dt * this.blendSpeed;\n\t\t\t\t\t\tif (this.blend >= 1) {\n\t\t\t\t\t\t\t\tthis.blend = 1;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this.playing) {\n\t\t\t\t\t\tconst skeleton = this.skeleton;\n\t\t\t\t\t\tif (skeleton !== null && this.model !== null) {\n\t\t\t\t\t\t\t\tif (this.blending) {\n\t\t\t\t\t\t\t\t\t\tskeleton.blend(this.fromSkel, this.toSkel, this.blend);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tconst delta = dt * this.speed;\n\t\t\t\t\t\t\t\t\t\tskeleton.addTime(delta);\n\t\t\t\t\t\t\t\t\t\tif (this.speed > 0 && skeleton._time === skeleton.animation.duration && !this.loop) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.playing = false;\n\t\t\t\t\t\t\t\t\t\t} else if (this.speed < 0 && skeleton._time === 0 && !this.loop) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.playing = false;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (this.blending && this.blend === 1) {\n\t\t\t\t\t\t\t\t\t\tskeleton.animation = this.toSkel.animation;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tskeleton.updateGraph();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst animEvaluator = this.animEvaluator;\n\t\t\t\tif (animEvaluator) {\n\t\t\t\t\t\tfor(let i = 0; i < animEvaluator.clips.length; ++i){\n\t\t\t\t\t\t\t\tconst clip = animEvaluator.clips[i];\n\t\t\t\t\t\t\t\tclip.speed = this.speed;\n\t\t\t\t\t\t\t\tif (!this.playing) {\n\t\t\t\t\t\t\t\t\t\tclip.pause();\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tclip.resume();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.blending && animEvaluator.clips.length > 1) {\n\t\t\t\t\t\t\t\tanimEvaluator.clips[1].blendWeight = this.blend;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tanimEvaluator.update(dt);\n\t\t\t\t}\n\t\t\t\tif (this.blending && this.blend === 1) {\n\t\t\t\t\t\tthis.blending = false;\n\t\t\t\t}\n\t\t}\n\t\tconstructor(...args){\n\t\t\t\tsuper(...args), this._animations = {}, this._assets = [], this._loop = true, this.animEvaluator = null, this.model = null, this.skeleton = null, this.fromSkel = null, this.toSkel = null, this.animationsIndex = {}, this.prevAnim = null, this.currAnim = null, this.blend = 0, this.blending = false, this.blendSpeed = 0, this.activate = true, this.speed = 1;\n\t\t}\n}\n\nclass AnimationComponentData {\n\t\tconstructor(){\n\t\t\t\tthis.enabled = true;\n\t\t}\n}\n\nconst _schema$k = [\n\t\t'enabled'\n];\nclass AnimationComponentSystem extends ComponentSystem {\n\t\tconstructor(app){\n\t\t\t\tsuper(app);\n\t\t\t\tthis.id = 'animation';\n\t\t\t\tthis.ComponentType = AnimationComponent;\n\t\t\t\tthis.DataType = AnimationComponentData;\n\t\t\t\tthis.schema = _schema$k;\n\t\t\t\tthis.on('beforeremove', this.onBeforeRemove, this);\n\t\t\t\tthis.app.systems.on('update', this.onUpdate, this);\n\t\t}\n\t\tinitializeComponentData(component, data, properties) {\n\t\t\t\tproperties = [\n\t\t\t\t\t\t'activate',\n\t\t\t\t\t\t'enabled',\n\t\t\t\t\t\t'loop',\n\t\t\t\t\t\t'speed',\n\t\t\t\t\t\t'assets'\n\t\t\t\t];\n\t\t\t\tfor (const property of properties){\n\t\t\t\t\t\tif (data.hasOwnProperty(property)) {\n\t\t\t\t\t\t\t\tcomponent[property] = data[property];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tsuper.initializeComponentData(component, data, _schema$k);\n\t\t}\n\t\tcloneComponent(entity, clone) {\n\t\t\t\tthis.addComponent(clone, {});\n\t\t\t\tclone.animation.assets = entity.animation.assets.slice();\n\t\t\t\tclone.animation.speed = entity.animation.speed;\n\t\t\t\tclone.animation.loop = entity.animation.loop;\n\t\t\t\tclone.animation.activate = entity.animation.activate;\n\t\t\t\tclone.animation.enabled = entity.animation.enabled;\n\t\t\t\tconst clonedAnimations = {};\n\t\t\t\tconst animations = entity.animation.animations;\n\t\t\t\tfor(const key in animations){\n\t\t\t\t\t\tif (animations.hasOwnProperty(key)) {\n\t\t\t\t\t\t\t\tclonedAnimations[key] = animations[key];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tclone.animation.animations = clonedAnimations;\n\t\t\t\tconst clonedAnimationsIndex = {};\n\t\t\t\tconst animationsIndex = entity.animation.animationsIndex;\n\t\t\t\tfor(const key in animationsIndex){\n\t\t\t\t\t\tif (animationsIndex.hasOwnProperty(key)) {\n\t\t\t\t\t\t\t\tclonedAnimationsIndex[key] = animationsIndex[key];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tclone.animation.animationsIndex = clonedAnimationsIndex;\n\t\t\t\treturn clone.animation;\n\t\t}\n\t\tonBeforeRemove(entity, component) {\n\t\t\t\tcomponent.onBeforeRemove();\n\t\t}\n\t\tonUpdate(dt) {\n\t\t\t\tconst components = this.store;\n\t\t\t\tfor(const id in components){\n\t\t\t\t\t\tif (components.hasOwnProperty(id)) {\n\t\t\t\t\t\t\t\tconst component = components[id];\n\t\t\t\t\t\t\t\tif (component.data.enabled && component.entity.enabled) {\n\t\t\t\t\t\t\t\t\t\tcomponent.entity.animation.update(dt);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tdestroy() {\n\t\t\t\tsuper.destroy();\n\t\t\t\tthis.app.systems.off('update', this.onUpdate, this);\n\t\t}\n}\nComponent._buildAccessors(AnimationComponent.prototype, _schema$k);\n\nclass AnimNode {\n\t\tconstructor(state, parent, name, point, speed = 1){\n\t\t\t\tthis._state = state;\n\t\t\t\tthis._parent = parent;\n\t\t\t\tthis._name = name;\n\t\t\t\tif (Array.isArray(point)) {\n\t\t\t\t\t\tthis._point = new Vec2(point[0], point[1]);\n\t\t\t\t\t\tthis._pointLength = this._point.length();\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._point = point;\n\t\t\t\t\t\tthis._pointLength = point;\n\t\t\t\t}\n\t\t\t\tthis._speed = speed;\n\t\t\t\tthis._weightedSpeed = 1.0;\n\t\t\t\tthis._weight = 1.0;\n\t\t\t\tthis._animTrack = null;\n\t\t}\n\t\tget parent() {\n\t\t\t\treturn this._parent;\n\t\t}\n\t\tget name() {\n\t\t\t\treturn this._name;\n\t\t}\n\t\tget path() {\n\t\t\t\treturn this._parent ? `${this._parent.path}.${this._name}` : this._name;\n\t\t}\n\t\tget point() {\n\t\t\t\treturn this._point;\n\t\t}\n\t\tget pointLength() {\n\t\t\t\treturn this._pointLength;\n\t\t}\n\t\tset weight(value) {\n\t\t\t\tthis._weight = value;\n\t\t}\n\t\tget weight() {\n\t\t\t\treturn this._parent ? this._parent.weight * this._weight : this._weight;\n\t\t}\n\t\tget normalizedWeight() {\n\t\t\t\tconst totalWeight = this._state.totalWeight;\n\t\t\t\tif (totalWeight === 0.0) return 0.0;\n\t\t\t\treturn this.weight / totalWeight;\n\t\t}\n\t\tget speed() {\n\t\t\t\treturn this._weightedSpeed * this._speed;\n\t\t}\n\t\tget absoluteSpeed() {\n\t\t\t\treturn Math.abs(this._speed);\n\t\t}\n\t\tset weightedSpeed(weightedSpeed) {\n\t\t\t\tthis._weightedSpeed = weightedSpeed;\n\t\t}\n\t\tget weightedSpeed() {\n\t\t\t\treturn this._weightedSpeed;\n\t\t}\n\t\tset animTrack(value) {\n\t\t\t\tthis._animTrack = value;\n\t\t}\n\t\tget animTrack() {\n\t\t\t\treturn this._animTrack;\n\t\t}\n}\n\nclass AnimBlendTree extends AnimNode {\n\t\tconstructor(state, parent, name, point, parameters, children, syncAnimations, createTree, findParameter){\n\t\t\t\tsuper(state, parent, name, point);\n\t\t\t\tthis._parameters = parameters;\n\t\t\t\tthis._parameterValues = new Array(parameters.length);\n\t\t\t\tthis._children = [];\n\t\t\t\tthis._findParameter = findParameter;\n\t\t\t\tthis._syncAnimations = syncAnimations !== false;\n\t\t\t\tthis._pointCache = {};\n\t\t\t\tfor(let i = 0; i < children.length; i++){\n\t\t\t\t\t\tconst child = children[i];\n\t\t\t\t\t\tif (child.children) {\n\t\t\t\t\t\t\t\tthis._children.push(createTree(child.type, state, this, child.name, 1.0, child.parameter ? [\n\t\t\t\t\t\t\t\t\t\tchild.parameter\n\t\t\t\t\t\t\t\t] : child.parameters, child.children, child.syncAnimations, createTree, findParameter));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._children.push(new AnimNode(state, this, child.name, child.point, child.speed));\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget weight() {\n\t\t\t\tthis.calculateWeights();\n\t\t\t\treturn this._parent ? this._parent.weight * this._weight : this._weight;\n\t\t}\n\t\tget syncAnimations() {\n\t\t\t\treturn this._syncAnimations;\n\t\t}\n\t\tgetChild(name) {\n\t\t\t\tfor(let i = 0; i < this._children.length; i++){\n\t\t\t\t\t\tif (this._children[i].name === name) return this._children[i];\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tupdateParameterValues() {\n\t\t\t\tlet paramsEqual = true;\n\t\t\t\tfor(let i = 0; i < this._parameterValues.length; i++){\n\t\t\t\t\t\tconst updatedParameter = this._findParameter(this._parameters[i]).value;\n\t\t\t\t\t\tif (this._parameterValues[i] !== updatedParameter) {\n\t\t\t\t\t\t\t\tthis._parameterValues[i] = updatedParameter;\n\t\t\t\t\t\t\t\tparamsEqual = false;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn paramsEqual;\n\t\t}\n\t\tgetNodeWeightedDuration(i) {\n\t\t\t\treturn this._children[i].animTrack.duration / this._children[i].speedMultiplier * this._children[i].weight;\n\t\t}\n\t\tgetNodeCount() {\n\t\t\t\tlet count = 0;\n\t\t\t\tfor(let i = 0; i < this._children.length; i++){\n\t\t\t\t\t\tconst child = this._children[i];\n\t\t\t\t\t\tif (child.constructor === AnimBlendTree) {\n\t\t\t\t\t\t\t\tcount += this._children[i].getNodeCount();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcount++;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn count;\n\t\t}\n}\n\nclass AnimBlendTree1D extends AnimBlendTree {\n\t\tconstructor(state, parent, name, point, parameters, children, syncAnimations, createTree, findParameter){\n\t\t\t\tchildren.sort((a, b)=>a.point - b.point);\n\t\t\t\tsuper(state, parent, name, point, parameters, children, syncAnimations, createTree, findParameter);\n\t\t}\n\t\tcalculateWeights() {\n\t\t\t\tif (this.updateParameterValues()) return;\n\t\t\t\tlet weightedDurationSum = 0.0;\n\t\t\t\tthis._children[0].weight = 0.0;\n\t\t\t\tfor(let i = 0; i < this._children.length; i++){\n\t\t\t\t\t\tconst c1 = this._children[i];\n\t\t\t\t\t\tif (i !== this._children.length - 1) {\n\t\t\t\t\t\t\t\tconst c2 = this._children[i + 1];\n\t\t\t\t\t\t\t\tif (c1.point === c2.point) {\n\t\t\t\t\t\t\t\t\t\tc1.weight = 0.5;\n\t\t\t\t\t\t\t\t\t\tc2.weight = 0.5;\n\t\t\t\t\t\t\t\t} else if (math.between(this._parameterValues[0], c1.point, c2.point, true)) {\n\t\t\t\t\t\t\t\t\t\tconst child2Distance = Math.abs(c1.point - c2.point);\n\t\t\t\t\t\t\t\t\t\tconst parameterDistance = Math.abs(c1.point - this._parameterValues[0]);\n\t\t\t\t\t\t\t\t\t\tconst weight = (child2Distance - parameterDistance) / child2Distance;\n\t\t\t\t\t\t\t\t\t\tc1.weight = weight;\n\t\t\t\t\t\t\t\t\t\tc2.weight = 1.0 - weight;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tc2.weight = 0.0;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this._syncAnimations) {\n\t\t\t\t\t\t\t\tweightedDurationSum += c1.animTrack.duration / c1.absoluteSpeed * c1.weight;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this._syncAnimations) {\n\t\t\t\t\t\tfor(let i = 0; i < this._children.length; i++){\n\t\t\t\t\t\t\t\tconst child = this._children[i];\n\t\t\t\t\t\t\t\tchild.weightedSpeed = child.animTrack.duration / child.absoluteSpeed / weightedDurationSum;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n}\n\nclass AnimBlendTreeCartesian2D extends AnimBlendTree {\n\t\tstatic{\n\t\t\t\tthis._p = new Vec2();\n\t\t}\n\t\tstatic{\n\t\t\t\tthis._pip = new Vec2();\n\t\t}\n\t\tpointDistanceCache(i, j) {\n\t\t\t\tconst pointKey = `${i}${j}`;\n\t\t\t\tif (!this._pointCache[pointKey]) {\n\t\t\t\t\t\tthis._pointCache[pointKey] = this._children[j].point.clone().sub(this._children[i].point);\n\t\t\t\t}\n\t\t\t\treturn this._pointCache[pointKey];\n\t\t}\n\t\tcalculateWeights() {\n\t\t\t\tif (this.updateParameterValues()) return;\n\t\t\t\tlet weightSum, weightedDurationSum;\n\t\t\t\tAnimBlendTreeCartesian2D._p.set(...this._parameterValues);\n\t\t\t\tweightSum = 0.0;\n\t\t\t\tweightedDurationSum = 0.0;\n\t\t\t\tfor(let i = 0; i < this._children.length; i++){\n\t\t\t\t\t\tconst child = this._children[i];\n\t\t\t\t\t\tconst pi = child.point;\n\t\t\t\t\t\tAnimBlendTreeCartesian2D._pip.set(AnimBlendTreeCartesian2D._p.x, AnimBlendTreeCartesian2D._p.y).sub(pi);\n\t\t\t\t\t\tlet minj = Number.MAX_VALUE;\n\t\t\t\t\t\tfor(let j = 0; j < this._children.length; j++){\n\t\t\t\t\t\t\t\tif (i === j) continue;\n\t\t\t\t\t\t\t\tconst pipj = this.pointDistanceCache(i, j);\n\t\t\t\t\t\t\t\tconst result = math.clamp(1.0 - AnimBlendTreeCartesian2D._pip.dot(pipj) / pipj.lengthSq(), 0.0, 1.0);\n\t\t\t\t\t\t\t\tif (result < minj) minj = result;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tchild.weight = minj;\n\t\t\t\t\t\tweightSum += minj;\n\t\t\t\t\t\tif (this._syncAnimations) {\n\t\t\t\t\t\t\t\tweightedDurationSum += child.animTrack.duration / child.absoluteSpeed * child.weight;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < this._children.length; i++){\n\t\t\t\t\t\tconst child = this._children[i];\n\t\t\t\t\t\tchild.weight = child._weight / weightSum;\n\t\t\t\t\t\tif (this._syncAnimations) {\n\t\t\t\t\t\t\t\tchild.weightedSpeed = child.animTrack.duration / child.absoluteSpeed / weightedDurationSum;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n}\n\nclass AnimBlendTreeDirectional2D extends AnimBlendTree {\n\t\tstatic{\n\t\t\t\tthis._p = new Vec2();\n\t\t}\n\t\tstatic{\n\t\t\t\tthis._pip = new Vec2();\n\t\t}\n\t\tpointCache(i, j) {\n\t\t\t\tconst pointKey = `${i}${j}`;\n\t\t\t\tif (!this._pointCache[pointKey]) {\n\t\t\t\t\t\tthis._pointCache[pointKey] = new Vec2((this._children[j].pointLength - this._children[i].pointLength) / ((this._children[j].pointLength + this._children[i].pointLength) / 2), Vec2.angleRad(this._children[i].point, this._children[j].point) * 2.0);\n\t\t\t\t}\n\t\t\t\treturn this._pointCache[pointKey];\n\t\t}\n\t\tcalculateWeights() {\n\t\t\t\tif (this.updateParameterValues()) return;\n\t\t\t\tlet weightSum, weightedDurationSum;\n\t\t\t\tAnimBlendTreeDirectional2D._p.set(...this._parameterValues);\n\t\t\t\tconst pLength = AnimBlendTreeDirectional2D._p.length();\n\t\t\t\tweightSum = 0.0;\n\t\t\t\tweightedDurationSum = 0.0;\n\t\t\t\tfor(let i = 0; i < this._children.length; i++){\n\t\t\t\t\t\tconst child = this._children[i];\n\t\t\t\t\t\tconst pi = child.point;\n\t\t\t\t\t\tconst piLength = child.pointLength;\n\t\t\t\t\t\tlet minj = Number.MAX_VALUE;\n\t\t\t\t\t\tfor(let j = 0; j < this._children.length; j++){\n\t\t\t\t\t\t\t\tif (i === j) continue;\n\t\t\t\t\t\t\t\tconst pipj = this.pointCache(i, j);\n\t\t\t\t\t\t\t\tconst pjLength = this._children[j].pointLength;\n\t\t\t\t\t\t\t\tAnimBlendTreeDirectional2D._pip.set((pLength - piLength) / ((pjLength + piLength) / 2), Vec2.angleRad(pi, AnimBlendTreeDirectional2D._p) * 2.0);\n\t\t\t\t\t\t\t\tconst result = math.clamp(1.0 - Math.abs(AnimBlendTreeDirectional2D._pip.dot(pipj) / pipj.lengthSq()), 0.0, 1.0);\n\t\t\t\t\t\t\t\tif (result < minj) minj = result;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tchild.weight = minj;\n\t\t\t\t\t\tweightSum += minj;\n\t\t\t\t\t\tif (this._syncAnimations) {\n\t\t\t\t\t\t\t\tweightedDurationSum += child.animTrack.duration / child.absoluteSpeed * child.weight;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < this._children.length; i++){\n\t\t\t\t\t\tconst child = this._children[i];\n\t\t\t\t\t\tchild.weight = child._weight / weightSum;\n\t\t\t\t\t\tif (this._syncAnimations) {\n\t\t\t\t\t\t\t\tconst weightedChildDuration = child.animTrack.duration / weightedDurationSum * weightSum;\n\t\t\t\t\t\t\t\tchild.weightedSpeed = child.absoluteSpeed * weightedChildDuration;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n}\n\nclass AnimBlendTreeDirect extends AnimBlendTree {\n\t\tcalculateWeights() {\n\t\t\t\tif (this.updateParameterValues()) return;\n\t\t\t\tlet weightSum = 0.0;\n\t\t\t\tlet weightedDurationSum = 0.0;\n\t\t\t\tfor(let i = 0; i < this._children.length; i++){\n\t\t\t\t\t\tweightSum += Math.max(this._parameterValues[i], 0.0);\n\t\t\t\t\t\tif (this._syncAnimations) {\n\t\t\t\t\t\t\t\tconst child = this._children[i];\n\t\t\t\t\t\t\t\tweightedDurationSum += child.animTrack.duration / child.absoluteSpeed * child.weight;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < this._children.length; i++){\n\t\t\t\t\t\tconst child = this._children[i];\n\t\t\t\t\t\tconst weight = Math.max(this._parameterValues[i], 0.0);\n\t\t\t\t\t\tif (weightSum) {\n\t\t\t\t\t\t\t\tchild.weight = weight / weightSum;\n\t\t\t\t\t\t\t\tif (this._syncAnimations) {\n\t\t\t\t\t\t\t\t\t\tchild.weightedSpeed = child.animTrack.duration / child.absoluteSpeed / weightedDurationSum;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tchild.weight = 0.0;\n\t\t\t\t\t\t\t\tif (this._syncAnimations) {\n\t\t\t\t\t\t\t\t\t\tchild.weightedSpeed = 0;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n}\n\nclass AnimState {\n\t\tconstructor(controller, name, speed = 1, loop = true, blendTree){\n\t\t\t\tthis._animations = {};\n\t\t\t\tthis._animationList = [];\n\t\t\t\tthis._controller = controller;\n\t\t\t\tthis._name = name;\n\t\t\t\tthis._speed = speed;\n\t\t\t\tthis._loop = loop;\n\t\t\t\tthis._hasAnimations = false;\n\t\t\t\tif (blendTree) {\n\t\t\t\t\t\tthis._blendTree = this._createTree(blendTree.type, this, null, name, 1.0, blendTree.parameter ? [\n\t\t\t\t\t\t\t\tblendTree.parameter\n\t\t\t\t\t\t] : blendTree.parameters, blendTree.children, blendTree.syncAnimations, this._createTree, this._controller.findParameter);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._blendTree = new AnimNode(this, null, name, 1.0, speed);\n\t\t\t\t}\n\t\t}\n\t\t_createTree(type, state, parent, name, point, parameters, children, syncAnimations, createTree, findParameter) {\n\t\t\t\tswitch(type){\n\t\t\t\t\t\tcase ANIM_BLEND_1D:\n\t\t\t\t\t\t\t\treturn new AnimBlendTree1D(state, parent, name, point, parameters, children, syncAnimations, createTree, findParameter);\n\t\t\t\t\t\tcase ANIM_BLEND_2D_CARTESIAN:\n\t\t\t\t\t\t\t\treturn new AnimBlendTreeCartesian2D(state, parent, name, point, parameters, children, syncAnimations, createTree, findParameter);\n\t\t\t\t\t\tcase ANIM_BLEND_2D_DIRECTIONAL:\n\t\t\t\t\t\t\t\treturn new AnimBlendTreeDirectional2D(state, parent, name, point, parameters, children, syncAnimations, createTree, findParameter);\n\t\t\t\t\t\tcase ANIM_BLEND_DIRECT:\n\t\t\t\t\t\t\t\treturn new AnimBlendTreeDirect(state, parent, name, point, parameters, children, syncAnimations, createTree, findParameter);\n\t\t\t\t}\n\t\t\t\treturn undefined;\n\t\t}\n\t\t_getNodeFromPath(path) {\n\t\t\t\tlet currNode = this._blendTree;\n\t\t\t\tfor(let i = 1; i < path.length; i++){\n\t\t\t\t\t\tcurrNode = currNode.getChild(path[i]);\n\t\t\t\t}\n\t\t\t\treturn currNode;\n\t\t}\n\t\taddAnimation(path, animTrack) {\n\t\t\t\tconst pathString = path.join('.');\n\t\t\t\tconst indexOfAnimation = this._animationList.findIndex((animation)=>{\n\t\t\t\t\t\treturn animation.path === pathString;\n\t\t\t\t});\n\t\t\t\tif (indexOfAnimation >= 0) {\n\t\t\t\t\t\tthis._animationList[indexOfAnimation].animTrack = animTrack;\n\t\t\t\t} else {\n\t\t\t\t\t\tconst node = this._getNodeFromPath(path);\n\t\t\t\t\t\tnode.animTrack = animTrack;\n\t\t\t\t\t\tthis._animationList.push(node);\n\t\t\t\t}\n\t\t\t\tthis._updateHasAnimations();\n\t\t}\n\t\t_updateHasAnimations() {\n\t\t\t\tthis._hasAnimations = this._animationList.length > 0 && this._animationList.every((animation)=>animation.animTrack && animation.animTrack !== AnimTrack.EMPTY);\n\t\t}\n\t\tget name() {\n\t\t\t\treturn this._name;\n\t\t}\n\t\tset animations(value) {\n\t\t\t\tthis._animationList = value;\n\t\t\t\tthis._updateHasAnimations();\n\t\t}\n\t\tget animations() {\n\t\t\t\treturn this._animationList;\n\t\t}\n\t\tget hasAnimations() {\n\t\t\t\treturn this._hasAnimations;\n\t\t}\n\t\tset speed(value) {\n\t\t\t\tthis._speed = value;\n\t\t}\n\t\tget speed() {\n\t\t\t\treturn this._speed;\n\t\t}\n\t\tset loop(value) {\n\t\t\t\tthis._loop = value;\n\t\t}\n\t\tget loop() {\n\t\t\t\treturn this._loop;\n\t\t}\n\t\tget nodeCount() {\n\t\t\t\tif (!this._blendTree || this._blendTree.constructor === AnimNode) return 1;\n\t\t\t\treturn this._blendTree.getNodeCount();\n\t\t}\n\t\tget playable() {\n\t\t\t\treturn ANIM_CONTROL_STATES.indexOf(this.name) !== -1 || this.animations.length === this.nodeCount;\n\t\t}\n\t\tget looping() {\n\t\t\t\tif (this.animations.length > 0) {\n\t\t\t\t\t\tconst trackClipName = `${this.name}.${this.animations[0].animTrack.name}`;\n\t\t\t\t\t\tconst trackClip = this._controller.animEvaluator.findClip(trackClipName);\n\t\t\t\t\t\tif (trackClip) {\n\t\t\t\t\t\t\t\treturn trackClip.loop;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t}\n\t\tget totalWeight() {\n\t\t\t\tlet sum = 0;\n\t\t\t\tfor(let i = 0; i < this.animations.length; i++){\n\t\t\t\t\t\tsum += this.animations[i].weight;\n\t\t\t\t}\n\t\t\t\treturn sum;\n\t\t}\n\t\tget timelineDuration() {\n\t\t\t\tlet duration = 0;\n\t\t\t\tfor(let i = 0; i < this.animations.length; i++){\n\t\t\t\t\t\tconst animation = this.animations[i];\n\t\t\t\t\t\tif (animation.animTrack.duration > duration) {\n\t\t\t\t\t\t\t\tduration = animation.animTrack.duration;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn duration;\n\t\t}\n}\n\nclass AnimTransition {\n\t\tconstructor({ from, to, time = 0, priority = 0, conditions = [], exitTime = null, transitionOffset = null, interruptionSource = ANIM_INTERRUPTION_NONE }){\n\t\t\t\tthis._from = from;\n\t\t\t\tthis._to = to;\n\t\t\t\tthis._time = time;\n\t\t\t\tthis._priority = priority;\n\t\t\t\tthis._conditions = conditions;\n\t\t\t\tthis._exitTime = exitTime;\n\t\t\t\tthis._transitionOffset = transitionOffset;\n\t\t\t\tthis._interruptionSource = interruptionSource;\n\t\t}\n\t\tget from() {\n\t\t\t\treturn this._from;\n\t\t}\n\t\tset to(value) {\n\t\t\t\tthis._to = value;\n\t\t}\n\t\tget to() {\n\t\t\t\treturn this._to;\n\t\t}\n\t\tget time() {\n\t\t\t\treturn this._time;\n\t\t}\n\t\tget priority() {\n\t\t\t\treturn this._priority;\n\t\t}\n\t\tget conditions() {\n\t\t\t\treturn this._conditions;\n\t\t}\n\t\tget exitTime() {\n\t\t\t\treturn this._exitTime;\n\t\t}\n\t\tget transitionOffset() {\n\t\t\t\treturn this._transitionOffset;\n\t\t}\n\t\tget interruptionSource() {\n\t\t\t\treturn this._interruptionSource;\n\t\t}\n\t\tget hasExitTime() {\n\t\t\t\treturn !!this.exitTime;\n\t\t}\n}\n\nclass AnimController {\n\t\tconstructor(animEvaluator, states, transitions, activate, eventHandler, findParameter, consumeTrigger){\n\t\t\t\tthis._states = {};\n\t\t\t\tthis._stateNames = [];\n\t\t\t\tthis._findTransitionsFromStateCache = {};\n\t\t\t\tthis._findTransitionsBetweenStatesCache = {};\n\t\t\t\tthis._previousStateName = null;\n\t\t\t\tthis._activeStateName = ANIM_STATE_START;\n\t\t\t\tthis._activeStateDuration = 0;\n\t\t\t\tthis._activeStateDurationDirty = true;\n\t\t\t\tthis._playing = false;\n\t\t\t\tthis._currTransitionTime = 1;\n\t\t\t\tthis._totalTransitionTime = 1;\n\t\t\t\tthis._isTransitioning = false;\n\t\t\t\tthis._transitionInterruptionSource = ANIM_INTERRUPTION_NONE;\n\t\t\t\tthis._transitionPreviousStates = [];\n\t\t\t\tthis._timeInState = 0;\n\t\t\t\tthis._timeInStateBefore = 0;\n\t\t\t\tthis.findParameter = (name)=>{\n\t\t\t\t\t\treturn this._findParameter(name);\n\t\t\t\t};\n\t\t\t\tthis._animEvaluator = animEvaluator;\n\t\t\t\tthis._eventHandler = eventHandler;\n\t\t\t\tthis._findParameter = findParameter;\n\t\t\t\tthis._consumeTrigger = consumeTrigger;\n\t\t\t\tfor(let i = 0; i < states.length; i++){\n\t\t\t\t\t\tthis._states[states[i].name] = new AnimState(this, states[i].name, states[i].speed, states[i].loop, states[i].blendTree);\n\t\t\t\t\t\tthis._stateNames.push(states[i].name);\n\t\t\t\t}\n\t\t\t\tthis._transitions = transitions.map((transition)=>{\n\t\t\t\t\t\treturn new AnimTransition({\n\t\t\t\t\t\t\t\t...transition\n\t\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tthis._activate = activate;\n\t\t}\n\t\tget animEvaluator() {\n\t\t\t\treturn this._animEvaluator;\n\t\t}\n\t\tset activeState(stateName) {\n\t\t\t\tthis._activeStateName = stateName;\n\t\t}\n\t\tget activeState() {\n\t\t\t\treturn this._findState(this._activeStateName);\n\t\t}\n\t\tget activeStateName() {\n\t\t\t\treturn this._activeStateName;\n\t\t}\n\t\tget activeStateAnimations() {\n\t\t\t\treturn this.activeState.animations;\n\t\t}\n\t\tset previousState(stateName) {\n\t\t\t\tthis._previousStateName = stateName;\n\t\t}\n\t\tget previousState() {\n\t\t\t\treturn this._findState(this._previousStateName);\n\t\t}\n\t\tget previousStateName() {\n\t\t\t\treturn this._previousStateName;\n\t\t}\n\t\tget playable() {\n\t\t\t\tlet playable = true;\n\t\t\t\tfor(let i = 0; i < this._stateNames.length; i++){\n\t\t\t\t\t\tif (!this._states[this._stateNames[i]].playable) {\n\t\t\t\t\t\t\t\tplayable = false;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn playable;\n\t\t}\n\t\tset playing(value) {\n\t\t\t\tthis._playing = value;\n\t\t}\n\t\tget playing() {\n\t\t\t\treturn this._playing;\n\t\t}\n\t\tget activeStateProgress() {\n\t\t\t\treturn this._getActiveStateProgressForTime(this._timeInState);\n\t\t}\n\t\tget activeStateDuration() {\n\t\t\t\tif (this._activeStateDurationDirty) {\n\t\t\t\t\t\tlet maxDuration = 0.0;\n\t\t\t\t\t\tfor(let i = 0; i < this.activeStateAnimations.length; i++){\n\t\t\t\t\t\t\t\tconst activeClip = this._animEvaluator.findClip(this.activeStateAnimations[i].name);\n\t\t\t\t\t\t\t\tif (activeClip) {\n\t\t\t\t\t\t\t\t\t\tmaxDuration = Math.max(maxDuration, activeClip.track.duration);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._activeStateDuration = maxDuration;\n\t\t\t\t\t\tthis._activeStateDurationDirty = false;\n\t\t\t\t}\n\t\t\t\treturn this._activeStateDuration;\n\t\t}\n\t\tset activeStateCurrentTime(time) {\n\t\t\t\tthis._timeInStateBefore = time;\n\t\t\t\tthis._timeInState = time;\n\t\t\t\tfor(let i = 0; i < this.activeStateAnimations.length; i++){\n\t\t\t\t\t\tconst clip = this.animEvaluator.findClip(this.activeStateAnimations[i].name);\n\t\t\t\t\t\tif (clip) {\n\t\t\t\t\t\t\t\tclip.time = time;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget activeStateCurrentTime() {\n\t\t\t\treturn this._timeInState;\n\t\t}\n\t\tget transitioning() {\n\t\t\t\treturn this._isTransitioning;\n\t\t}\n\t\tget transitionProgress() {\n\t\t\t\treturn this._currTransitionTime / this._totalTransitionTime;\n\t\t}\n\t\tget states() {\n\t\t\t\treturn this._stateNames;\n\t\t}\n\t\tassignMask(mask) {\n\t\t\t\treturn this._animEvaluator.assignMask(mask);\n\t\t}\n\t\t_findState(stateName) {\n\t\t\t\treturn this._states[stateName];\n\t\t}\n\t\t_getActiveStateProgressForTime(time) {\n\t\t\t\tif (this.activeStateName === ANIM_STATE_START || this.activeStateName === ANIM_STATE_END || this.activeStateName === ANIM_STATE_ANY) {\n\t\t\t\t\t\treturn 1.0;\n\t\t\t\t}\n\t\t\t\tconst activeClip = this._animEvaluator.findClip(this.activeStateAnimations[0].name);\n\t\t\t\tif (activeClip) {\n\t\t\t\t\t\treturn activeClip.progressForTime(time);\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\t_findTransitionsFromState(stateName) {\n\t\t\t\tlet transitions = this._findTransitionsFromStateCache[stateName];\n\t\t\t\tif (!transitions) {\n\t\t\t\t\t\ttransitions = this._transitions.filter((transition)=>{\n\t\t\t\t\t\t\t\treturn transition.from === stateName;\n\t\t\t\t\t\t});\n\t\t\t\t\t\tsortPriority(transitions);\n\t\t\t\t\t\tthis._findTransitionsFromStateCache[stateName] = transitions;\n\t\t\t\t}\n\t\t\t\treturn transitions;\n\t\t}\n\t\t_findTransitionsBetweenStates(sourceStateName, destinationStateName) {\n\t\t\t\tlet transitions = this._findTransitionsBetweenStatesCache[`${sourceStateName}->${destinationStateName}`];\n\t\t\t\tif (!transitions) {\n\t\t\t\t\t\ttransitions = this._transitions.filter((transition)=>{\n\t\t\t\t\t\t\t\treturn transition.from === sourceStateName && transition.to === destinationStateName;\n\t\t\t\t\t\t});\n\t\t\t\t\t\tsortPriority(transitions);\n\t\t\t\t\t\tthis._findTransitionsBetweenStatesCache[`${sourceStateName}->${destinationStateName}`] = transitions;\n\t\t\t\t}\n\t\t\t\treturn transitions;\n\t\t}\n\t\t_transitionHasConditionsMet(transition) {\n\t\t\t\tconst conditions = transition.conditions;\n\t\t\t\tfor(let i = 0; i < conditions.length; i++){\n\t\t\t\t\t\tconst condition = conditions[i];\n\t\t\t\t\t\tconst parameter = this._findParameter(condition.parameterName);\n\t\t\t\t\t\tswitch(condition.predicate){\n\t\t\t\t\t\t\t\tcase ANIM_GREATER_THAN:\n\t\t\t\t\t\t\t\t\t\tif (!(parameter.value > condition.value)) return false;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase ANIM_LESS_THAN:\n\t\t\t\t\t\t\t\t\t\tif (!(parameter.value < condition.value)) return false;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase ANIM_GREATER_THAN_EQUAL_TO:\n\t\t\t\t\t\t\t\t\t\tif (!(parameter.value >= condition.value)) return false;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase ANIM_LESS_THAN_EQUAL_TO:\n\t\t\t\t\t\t\t\t\t\tif (!(parameter.value <= condition.value)) return false;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase ANIM_EQUAL_TO:\n\t\t\t\t\t\t\t\t\t\tif (!(parameter.value === condition.value)) return false;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase ANIM_NOT_EQUAL_TO:\n\t\t\t\t\t\t\t\t\t\tif (!(parameter.value !== condition.value)) return false;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t}\n\t\t_findTransition(from, to) {\n\t\t\t\tlet transitions = [];\n\t\t\t\tif (from && to) {\n\t\t\t\t\t\ttransitions = transitions.concat(this._findTransitionsBetweenStates(from, to));\n\t\t\t\t} else {\n\t\t\t\t\t\tif (!this._isTransitioning) {\n\t\t\t\t\t\t\t\ttransitions = transitions.concat(this._findTransitionsFromState(this._activeStateName));\n\t\t\t\t\t\t\t\ttransitions = transitions.concat(this._findTransitionsFromState(ANIM_STATE_ANY));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tswitch(this._transitionInterruptionSource){\n\t\t\t\t\t\t\t\t\t\tcase ANIM_INTERRUPTION_PREV:\n\t\t\t\t\t\t\t\t\t\t\t\ttransitions = transitions.concat(this._findTransitionsFromState(this._previousStateName));\n\t\t\t\t\t\t\t\t\t\t\t\ttransitions = transitions.concat(this._findTransitionsFromState(ANIM_STATE_ANY));\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\tcase ANIM_INTERRUPTION_NEXT:\n\t\t\t\t\t\t\t\t\t\t\t\ttransitions = transitions.concat(this._findTransitionsFromState(this._activeStateName));\n\t\t\t\t\t\t\t\t\t\t\t\ttransitions = transitions.concat(this._findTransitionsFromState(ANIM_STATE_ANY));\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\tcase ANIM_INTERRUPTION_PREV_NEXT:\n\t\t\t\t\t\t\t\t\t\t\t\ttransitions = transitions.concat(this._findTransitionsFromState(this._previousStateName));\n\t\t\t\t\t\t\t\t\t\t\t\ttransitions = transitions.concat(this._findTransitionsFromState(this._activeStateName));\n\t\t\t\t\t\t\t\t\t\t\t\ttransitions = transitions.concat(this._findTransitionsFromState(ANIM_STATE_ANY));\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\tcase ANIM_INTERRUPTION_NEXT_PREV:\n\t\t\t\t\t\t\t\t\t\t\t\ttransitions = transitions.concat(this._findTransitionsFromState(this._activeStateName));\n\t\t\t\t\t\t\t\t\t\t\t\ttransitions = transitions.concat(this._findTransitionsFromState(this._previousStateName));\n\t\t\t\t\t\t\t\t\t\t\t\ttransitions = transitions.concat(this._findTransitionsFromState(ANIM_STATE_ANY));\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ttransitions = transitions.filter((transition)=>{\n\t\t\t\t\t\tif (transition.to === this.activeStateName) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (transition.hasExitTime) {\n\t\t\t\t\t\t\t\tlet progressBefore = this._getActiveStateProgressForTime(this._timeInStateBefore);\n\t\t\t\t\t\t\t\tlet progress = this._getActiveStateProgressForTime(this._timeInState);\n\t\t\t\t\t\t\t\tif (transition.exitTime < 1.0 && this.activeState.loop) {\n\t\t\t\t\t\t\t\t\t\tprogressBefore -= Math.floor(progressBefore);\n\t\t\t\t\t\t\t\t\t\tprogress -= Math.floor(progress);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (progress === progressBefore) {\n\t\t\t\t\t\t\t\t\t\tif (progress !== transition.exitTime) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else if (!(transition.exitTime > progressBefore && transition.exitTime <= progress)) {\n\t\t\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn this._transitionHasConditionsMet(transition);\n\t\t\t\t});\n\t\t\t\tif (transitions.length > 0) {\n\t\t\t\t\t\tconst transition = transitions[0];\n\t\t\t\t\t\tif (transition.to === ANIM_STATE_END) {\n\t\t\t\t\t\t\t\tconst startTransition = this._findTransitionsFromState(ANIM_STATE_START)[0];\n\t\t\t\t\t\t\t\ttransition.to = startTransition.to;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn transition;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tupdateStateFromTransition(transition) {\n\t\t\t\tlet state;\n\t\t\t\tlet animation;\n\t\t\t\tlet clip;\n\t\t\t\tthis.previousState = transition.from ? this.activeStateName : null;\n\t\t\t\tthis.activeState = transition.to;\n\t\t\t\tthis._activeStateDurationDirty = true;\n\t\t\t\tfor(let i = 0; i < transition.conditions.length; i++){\n\t\t\t\t\t\tconst condition = transition.conditions[i];\n\t\t\t\t\t\tconst parameter = this._findParameter(condition.parameterName);\n\t\t\t\t\t\tif (parameter.type === ANIM_PARAMETER_TRIGGER) {\n\t\t\t\t\t\t\t\tthis._consumeTrigger(condition.parameterName);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this.previousState) {\n\t\t\t\t\t\tif (!this._isTransitioning) {\n\t\t\t\t\t\t\t\tthis._transitionPreviousStates = [];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._transitionPreviousStates.push({\n\t\t\t\t\t\t\t\tname: this._previousStateName,\n\t\t\t\t\t\t\t\tweight: 1\n\t\t\t\t\t\t});\n\t\t\t\t\t\tconst interpolatedTime = Math.min(this._totalTransitionTime !== 0 ? this._currTransitionTime / this._totalTransitionTime : 1, 1.0);\n\t\t\t\t\t\tfor(let i = 0; i < this._transitionPreviousStates.length; i++){\n\t\t\t\t\t\t\t\tif (!this._isTransitioning) {\n\t\t\t\t\t\t\t\t\t\tthis._transitionPreviousStates[i].weight = 1.0;\n\t\t\t\t\t\t\t\t} else if (i !== this._transitionPreviousStates.length - 1) {\n\t\t\t\t\t\t\t\t\t\tthis._transitionPreviousStates[i].weight *= 1.0 - interpolatedTime;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis._transitionPreviousStates[i].weight = interpolatedTime;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tstate = this._findState(this._transitionPreviousStates[i].name);\n\t\t\t\t\t\t\t\tfor(let j = 0; j < state.animations.length; j++){\n\t\t\t\t\t\t\t\t\t\tanimation = state.animations[j];\n\t\t\t\t\t\t\t\t\t\tclip = this._animEvaluator.findClip(`${animation.name}.previous.${i}`);\n\t\t\t\t\t\t\t\t\t\tif (!clip) {\n\t\t\t\t\t\t\t\t\t\t\t\tclip = this._animEvaluator.findClip(animation.name);\n\t\t\t\t\t\t\t\t\t\t\t\tclip.name = `${animation.name}.previous.${i}`;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (i !== this._transitionPreviousStates.length - 1) {\n\t\t\t\t\t\t\t\t\t\t\t\tclip.pause();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._isTransitioning = true;\n\t\t\t\tthis._totalTransitionTime = transition.time;\n\t\t\t\tthis._currTransitionTime = 0;\n\t\t\t\tthis._transitionInterruptionSource = transition.interruptionSource;\n\t\t\t\tconst activeState = this.activeState;\n\t\t\t\tconst hasTransitionOffset = transition.transitionOffset && transition.transitionOffset > 0.0 && transition.transitionOffset < 1.0;\n\t\t\t\tlet timeInState = 0;\n\t\t\t\tlet timeInStateBefore = 0;\n\t\t\t\tif (hasTransitionOffset) {\n\t\t\t\t\t\tconst offsetTime = activeState.timelineDuration * transition.transitionOffset;\n\t\t\t\t\t\ttimeInState = offsetTime;\n\t\t\t\t\t\ttimeInStateBefore = offsetTime;\n\t\t\t\t}\n\t\t\t\tthis._timeInState = timeInState;\n\t\t\t\tthis._timeInStateBefore = timeInStateBefore;\n\t\t\t\tfor(let i = 0; i < activeState.animations.length; i++){\n\t\t\t\t\t\tclip = this._animEvaluator.findClip(activeState.animations[i].name);\n\t\t\t\t\t\tif (!clip) {\n\t\t\t\t\t\t\t\tconst speed = Number.isFinite(activeState.animations[i].speed) ? activeState.animations[i].speed : activeState.speed;\n\t\t\t\t\t\t\t\tclip = new AnimClip(activeState.animations[i].animTrack, this._timeInState, speed, true, activeState.loop, this._eventHandler);\n\t\t\t\t\t\t\t\tclip.name = activeState.animations[i].name;\n\t\t\t\t\t\t\t\tthis._animEvaluator.addClip(clip);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tclip.reset();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (transition.time > 0) {\n\t\t\t\t\t\t\t\tclip.blendWeight = 0.0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tclip.blendWeight = activeState.animations[i].normalizedWeight;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclip.play();\n\t\t\t\t\t\tif (hasTransitionOffset) {\n\t\t\t\t\t\t\t\tclip.time = activeState.timelineDuration * transition.transitionOffset;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst startTime = activeState.speed >= 0 ? 0 : this.activeStateDuration;\n\t\t\t\t\t\t\t\tclip.time = startTime;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_transitionToState(newStateName) {\n\t\t\t\tif (!this._findState(newStateName)) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tlet transition = this._findTransition(this._activeStateName, newStateName);\n\t\t\t\tif (!transition) {\n\t\t\t\t\t\tthis._animEvaluator.removeClips();\n\t\t\t\t\t\ttransition = new AnimTransition({\n\t\t\t\t\t\t\t\tfrom: null,\n\t\t\t\t\t\t\t\tto: newStateName\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tthis.updateStateFromTransition(transition);\n\t\t}\n\t\tassignAnimation(pathString, animTrack, speed, loop) {\n\t\t\t\tconst path = pathString.split('.');\n\t\t\t\tlet state = this._findState(path[0]);\n\t\t\t\tif (!state) {\n\t\t\t\t\t\tstate = new AnimState(this, path[0], speed);\n\t\t\t\t\t\tthis._states[path[0]] = state;\n\t\t\t\t\t\tthis._stateNames.push(path[0]);\n\t\t\t\t}\n\t\t\t\tstate.addAnimation(path, animTrack);\n\t\t\t\tthis._animEvaluator.updateClipTrack(state.name, animTrack);\n\t\t\t\tif (speed !== undefined) {\n\t\t\t\t\t\tstate.speed = speed;\n\t\t\t\t}\n\t\t\t\tif (loop !== undefined) {\n\t\t\t\t\t\tstate.loop = loop;\n\t\t\t\t}\n\t\t\t\tif (!this._playing && this._activate && this.playable) {\n\t\t\t\t\t\tthis.play();\n\t\t\t\t}\n\t\t\t\tthis._activeStateDurationDirty = true;\n\t\t}\n\t\tremoveNodeAnimations(nodeName) {\n\t\t\t\tif (ANIM_CONTROL_STATES.indexOf(nodeName) !== -1) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tconst state = this._findState(nodeName);\n\t\t\t\tif (!state) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tstate.animations = [];\n\t\t\t\treturn true;\n\t\t}\n\t\tplay(stateName) {\n\t\t\t\tif (stateName) {\n\t\t\t\t\t\tthis._transitionToState(stateName);\n\t\t\t\t}\n\t\t\t\tthis._playing = true;\n\t\t}\n\t\tpause() {\n\t\t\t\tthis._playing = false;\n\t\t}\n\t\treset() {\n\t\t\t\tthis._previousStateName = null;\n\t\t\t\tthis._activeStateName = ANIM_STATE_START;\n\t\t\t\tthis._playing = false;\n\t\t\t\tthis._currTransitionTime = 1.0;\n\t\t\t\tthis._totalTransitionTime = 1.0;\n\t\t\t\tthis._isTransitioning = false;\n\t\t\t\tthis._timeInState = 0;\n\t\t\t\tthis._timeInStateBefore = 0;\n\t\t\t\tthis._animEvaluator.removeClips();\n\t\t}\n\t\trebind() {\n\t\t\t\tthis._animEvaluator.rebind();\n\t\t}\n\t\tupdate(dt) {\n\t\t\t\tif (!this._playing) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tlet state;\n\t\t\t\tlet animation;\n\t\t\t\tlet clip;\n\t\t\t\tif (this.activeState.loop || this._timeInState < this.activeStateDuration) {\n\t\t\t\t\t\tthis._timeInStateBefore = this._timeInState;\n\t\t\t\t\t\tthis._timeInState += dt * this.activeState.speed;\n\t\t\t\t\t\tif (!this.activeState.loop && this._timeInState > this.activeStateDuration) {\n\t\t\t\t\t\t\t\tthis._timeInState = this.activeStateDuration;\n\t\t\t\t\t\t\t\tdt = this.activeStateDuration - this._timeInStateBefore;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst transition = this._findTransition(this._activeStateName);\n\t\t\t\tif (transition) {\n\t\t\t\t\t\tthis.updateStateFromTransition(transition);\n\t\t\t\t}\n\t\t\t\tif (this._isTransitioning) {\n\t\t\t\t\t\tthis._currTransitionTime += dt;\n\t\t\t\t\t\tif (this._currTransitionTime <= this._totalTransitionTime) {\n\t\t\t\t\t\t\t\tconst interpolatedTime = this._totalTransitionTime !== 0 ? this._currTransitionTime / this._totalTransitionTime : 1;\n\t\t\t\t\t\t\t\tfor(let i = 0; i < this._transitionPreviousStates.length; i++){\n\t\t\t\t\t\t\t\t\t\tstate = this._findState(this._transitionPreviousStates[i].name);\n\t\t\t\t\t\t\t\t\t\tconst stateWeight = this._transitionPreviousStates[i].weight;\n\t\t\t\t\t\t\t\t\t\tfor(let j = 0; j < state.animations.length; j++){\n\t\t\t\t\t\t\t\t\t\t\t\tanimation = state.animations[j];\n\t\t\t\t\t\t\t\t\t\t\t\tclip = this._animEvaluator.findClip(`${animation.name}.previous.${i}`);\n\t\t\t\t\t\t\t\t\t\t\t\tif (clip) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclip.blendWeight = (1.0 - interpolatedTime) * animation.normalizedWeight * stateWeight;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tstate = this.activeState;\n\t\t\t\t\t\t\t\tfor(let i = 0; i < state.animations.length; i++){\n\t\t\t\t\t\t\t\t\t\tanimation = state.animations[i];\n\t\t\t\t\t\t\t\t\t\tthis._animEvaluator.findClip(animation.name).blendWeight = interpolatedTime * animation.normalizedWeight;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._isTransitioning = false;\n\t\t\t\t\t\t\t\tconst activeClips = this.activeStateAnimations.length;\n\t\t\t\t\t\t\t\tconst totalClips = this._animEvaluator.clips.length;\n\t\t\t\t\t\t\t\tfor(let i = 0; i < totalClips - activeClips; i++){\n\t\t\t\t\t\t\t\t\t\tthis._animEvaluator.removeClip(0);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis._transitionPreviousStates = [];\n\t\t\t\t\t\t\t\tstate = this.activeState;\n\t\t\t\t\t\t\t\tfor(let i = 0; i < state.animations.length; i++){\n\t\t\t\t\t\t\t\t\t\tanimation = state.animations[i];\n\t\t\t\t\t\t\t\t\t\tclip = this._animEvaluator.findClip(animation.name);\n\t\t\t\t\t\t\t\t\t\tif (clip) {\n\t\t\t\t\t\t\t\t\t\t\t\tclip.blendWeight = animation.normalizedWeight;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tif (this.activeState._blendTree.constructor !== AnimNode) {\n\t\t\t\t\t\t\t\tstate = this.activeState;\n\t\t\t\t\t\t\t\tfor(let i = 0; i < state.animations.length; i++){\n\t\t\t\t\t\t\t\t\t\tanimation = state.animations[i];\n\t\t\t\t\t\t\t\t\t\tclip = this._animEvaluator.findClip(animation.name);\n\t\t\t\t\t\t\t\t\t\tif (clip) {\n\t\t\t\t\t\t\t\t\t\t\t\tclip.blendWeight = animation.normalizedWeight;\n\t\t\t\t\t\t\t\t\t\t\t\tif (animation.parent.syncAnimations) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclip.speed = animation.speed;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._animEvaluator.update(dt, this.activeState.hasAnimations);\n\t\t}\n}\n\nconst v2$4 = new Vec2();\nconst v3$1 = new Vec3();\nconst v4 = new Vec4();\nconst c = new Color();\nconst q$2 = new Quat();\nclass AnimComponentBinder extends DefaultAnimBinder {\n\t\tconstructor(animComponent, graph, layerName, mask, layerIndex){\n\t\t\t\tsuper(graph);\n\t\t\t\tthis.animComponent = animComponent;\n\t\t\t\tthis._mask = mask;\n\t\t\t\tthis.layerName = layerName;\n\t\t\t\tthis.layerIndex = layerIndex;\n\t\t}\n\t\tstatic _packFloat(values) {\n\t\t\t\treturn values[0];\n\t\t}\n\t\tstatic _packBoolean(values) {\n\t\t\t\treturn !!values[0];\n\t\t}\n\t\tstatic _packVec2(values) {\n\t\t\t\tv2$4.x = values[0];\n\t\t\t\tv2$4.y = values[1];\n\t\t\t\treturn v2$4;\n\t\t}\n\t\tstatic _packVec3(values) {\n\t\t\t\tv3$1.x = values[0];\n\t\t\t\tv3$1.y = values[1];\n\t\t\t\tv3$1.z = values[2];\n\t\t\t\treturn v3$1;\n\t\t}\n\t\tstatic _packVec4(values) {\n\t\t\t\tv4.x = values[0];\n\t\t\t\tv4.y = values[1];\n\t\t\t\tv4.z = values[2];\n\t\t\t\tv4.w = values[3];\n\t\t\t\treturn v4;\n\t\t}\n\t\tstatic _packColor(values) {\n\t\t\t\tc.r = values[0];\n\t\t\t\tc.g = values[1];\n\t\t\t\tc.b = values[2];\n\t\t\t\tc.a = values[3];\n\t\t\t\treturn c;\n\t\t}\n\t\tstatic _packQuat(values) {\n\t\t\t\tq$2.x = values[0];\n\t\t\t\tq$2.y = values[1];\n\t\t\t\tq$2.z = values[2];\n\t\t\t\tq$2.w = values[3];\n\t\t\t\treturn q$2;\n\t\t}\n\t\tresolve(path) {\n\t\t\t\tconst encodedPath = AnimBinder.encode(path.entityPath, path.component, path.propertyPath);\n\t\t\t\tlet target = this.targetCache[encodedPath];\n\t\t\t\tif (target) return target;\n\t\t\t\tlet entity;\n\t\t\t\tlet propertyComponent;\n\t\t\t\tlet targetPath;\n\t\t\t\tswitch(path.component){\n\t\t\t\t\t\tcase 'entity':\n\t\t\t\t\t\t\t\tentity = this._getEntityFromHierarchy(path.entityPath);\n\t\t\t\t\t\t\t\ttargetPath = AnimBinder.encode(entity.path, 'entity', path.propertyPath);\n\t\t\t\t\t\t\t\tpropertyComponent = entity;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'graph':\n\t\t\t\t\t\t\t\tpropertyComponent = this.findNode(path);\n\t\t\t\t\t\t\t\tif (!propertyComponent) return null;\n\t\t\t\t\t\t\t\ttargetPath = AnimBinder.encode(propertyComponent.path, 'graph', path.propertyPath);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tentity = this._getEntityFromHierarchy(path.entityPath);\n\t\t\t\t\t\t\t\tpropertyComponent = entity.findComponent(path.component);\n\t\t\t\t\t\t\t\tif (!propertyComponent) {\n\t\t\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\ttargetPath = AnimBinder.encode(entity.path, path.component, path.propertyPath);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\ttarget = this._createAnimTargetForProperty(propertyComponent, path.propertyPath, targetPath);\n\t\t\t\tthis.targetCache[encodedPath] = target;\n\t\t\t\treturn target;\n\t\t}\n\t\tupdate(deltaTime) {\n\t\t\t\tconst activeNodes = this.activeNodes;\n\t\t\t\tif (activeNodes) {\n\t\t\t\t\t\tfor(let i = 0; i < activeNodes.length; i++){\n\t\t\t\t\t\t\t\tactiveNodes[i]._dirtifyLocal();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_getEntityFromHierarchy(entityHierarchy) {\n\t\t\t\tif (!this.animComponent.entity.name === entityHierarchy[0]) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tconst currEntity = this.animComponent.entity;\n\t\t\t\tif (entityHierarchy.length === 1) {\n\t\t\t\t\t\treturn currEntity;\n\t\t\t\t}\n\t\t\t\treturn currEntity._parent.findByPath(entityHierarchy);\n\t\t}\n\t\t_resolvePath(object, path, resolveLeaf) {\n\t\t\t\tconst steps = path.length - (resolveLeaf ? 0 : 1);\n\t\t\t\tfor(let i = 0; i < steps; i++){\n\t\t\t\t\t\tobject = object[path[i]];\n\t\t\t\t}\n\t\t\t\treturn object;\n\t\t}\n\t\t_setter(object, path, packFunc) {\n\t\t\t\tconst obj = this._resolvePath(object, path);\n\t\t\t\tconst key = path[path.length - 1];\n\t\t\t\tconst setterFuncName = `set${key.substring(0, 1).toUpperCase()}${key.substring(1)}`;\n\t\t\t\tif (obj[setterFuncName]) {\n\t\t\t\t\t\tconst getterFunc = obj[`get${key.substring(0, 1).toUpperCase()}${key.substring(1)}`].bind(obj);\n\t\t\t\t\t\tlet baseValues = getterFunc();\n\t\t\t\t\t\tbaseValues = [\n\t\t\t\t\t\t\t\tbaseValues.x,\n\t\t\t\t\t\t\t\tbaseValues.y,\n\t\t\t\t\t\t\t\tbaseValues.z,\n\t\t\t\t\t\t\t\tbaseValues.w\n\t\t\t\t\t\t];\n\t\t\t\t\t\tconst setterFunc = obj[setterFuncName].bind(obj);\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tset: (values)=>{\n\t\t\t\t\t\t\t\t\t\tsetterFunc(packFunc(values));\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tget: ()=>baseValues\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst prop = obj[key];\n\t\t\t\tif (typeof prop === 'object' && prop.hasOwnProperty('copy')) {\n\t\t\t\t\t\treturn function(values) {\n\t\t\t\t\t\t\t\tprop.copy(packFunc(values));\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tif ([\n\t\t\t\t\t\tVec2,\n\t\t\t\t\t\tVec3,\n\t\t\t\t\t\tVec4,\n\t\t\t\t\t\tColor,\n\t\t\t\t\t\tQuat\n\t\t\t\t].indexOf(obj.constructor) !== -1 && path.length > 1) {\n\t\t\t\t\t\tconst parent = path.length > 2 ? this._resolvePath(object, path.slice(0, -1)) : object;\n\t\t\t\t\t\tconst objKey = path[path.length - 2];\n\t\t\t\t\t\treturn function(values) {\n\t\t\t\t\t\t\t\tobj[key] = packFunc(values);\n\t\t\t\t\t\t\t\tparent[objKey] = obj;\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\treturn function(values) {\n\t\t\t\t\t\tobj[key] = packFunc(values);\n\t\t\t\t};\n\t\t}\n\t\t_createAnimTargetForProperty(propertyComponent, propertyHierarchy, targetPath) {\n\t\t\t\tif (this.handlers && propertyHierarchy[0].startsWith('weight.')) {\n\t\t\t\t\t\treturn this.handlers.weight(propertyComponent, propertyHierarchy[0].replace('weight.', ''));\n\t\t\t\t} else if (this.handlers && propertyHierarchy[0] === 'material' && propertyHierarchy.length === 2) {\n\t\t\t\t\t\tconst materialPropertyName = propertyHierarchy[1];\n\t\t\t\t\t\tif (materialPropertyName.endsWith('Map')) {\n\t\t\t\t\t\t\t\treturn this.handlers.materialTexture(propertyComponent, materialPropertyName);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst property = this._resolvePath(propertyComponent, propertyHierarchy, true);\n\t\t\t\tif (typeof property === 'undefined') {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tlet setter;\n\t\t\t\tlet animDataType;\n\t\t\t\tlet animDataComponents;\n\t\t\t\tif (typeof property === 'number') {\n\t\t\t\t\t\tsetter = this._setter(propertyComponent, propertyHierarchy, AnimComponentBinder._packFloat);\n\t\t\t\t\t\tanimDataType = 'vector';\n\t\t\t\t\t\tanimDataComponents = 1;\n\t\t\t\t} else if (typeof property === 'boolean') {\n\t\t\t\t\t\tsetter = this._setter(propertyComponent, propertyHierarchy, AnimComponentBinder._packBoolean);\n\t\t\t\t\t\tanimDataType = 'vector';\n\t\t\t\t\t\tanimDataComponents = 1;\n\t\t\t\t} else if (typeof property === 'object') {\n\t\t\t\t\t\tswitch(property.constructor){\n\t\t\t\t\t\t\t\tcase Vec2:\n\t\t\t\t\t\t\t\t\t\tsetter = this._setter(propertyComponent, propertyHierarchy, AnimComponentBinder._packVec2);\n\t\t\t\t\t\t\t\t\t\tanimDataType = 'vector';\n\t\t\t\t\t\t\t\t\t\tanimDataComponents = 2;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase Vec3:\n\t\t\t\t\t\t\t\t\t\tsetter = this._setter(propertyComponent, propertyHierarchy, AnimComponentBinder._packVec3);\n\t\t\t\t\t\t\t\t\t\tanimDataType = 'vector';\n\t\t\t\t\t\t\t\t\t\tanimDataComponents = 3;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase Vec4:\n\t\t\t\t\t\t\t\t\t\tsetter = this._setter(propertyComponent, propertyHierarchy, AnimComponentBinder._packVec4);\n\t\t\t\t\t\t\t\t\t\tanimDataType = 'vector';\n\t\t\t\t\t\t\t\t\t\tanimDataComponents = 4;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase Color:\n\t\t\t\t\t\t\t\t\t\tsetter = this._setter(propertyComponent, propertyHierarchy, AnimComponentBinder._packColor);\n\t\t\t\t\t\t\t\t\t\tanimDataType = 'vector';\n\t\t\t\t\t\t\t\t\t\tanimDataComponents = 4;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase Quat:\n\t\t\t\t\t\t\t\t\t\tsetter = this._setter(propertyComponent, propertyHierarchy, AnimComponentBinder._packQuat);\n\t\t\t\t\t\t\t\t\t\tanimDataType = 'quaternion';\n\t\t\t\t\t\t\t\t\t\tanimDataComponents = 4;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (propertyHierarchy.indexOf('material') !== -1) {\n\t\t\t\t\t\treturn new AnimTarget((values)=>{\n\t\t\t\t\t\t\t\tsetter(values);\n\t\t\t\t\t\t\t\tpropertyComponent.material.update();\n\t\t\t\t\t\t}, animDataType, animDataComponents, targetPath);\n\t\t\t\t}\n\t\t\t\treturn new AnimTarget(setter, animDataType, animDataComponents, targetPath);\n\t\t}\n\t\trebind() {\n\t\t\t\tthis.targetCache = {};\n\t\t\t\tif (this.animComponent.rootBone) {\n\t\t\t\t\t\tthis.graph = this.animComponent.rootBone;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.graph = this.animComponent.entity;\n\t\t\t\t}\n\t\t\t\tconst nodes = {};\n\t\t\t\tconst flatten = function(node) {\n\t\t\t\t\t\tnodes[node.name] = node;\n\t\t\t\t\t\tfor(let i = 0; i < node.children.length; ++i){\n\t\t\t\t\t\t\t\tflatten(node.children[i]);\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tflatten(this.graph);\n\t\t\t\tthis.nodes = nodes;\n\t\t}\n}\n\nclass AnimComponentLayer {\n\t\tconstructor(name, controller, component, weight = 1, blendType = ANIM_LAYER_OVERWRITE){\n\t\t\t\tthis._mask = null;\n\t\t\t\tthis._blendTime = 0;\n\t\t\t\tthis._blendTimeElapsed = 0;\n\t\t\t\tthis._startingWeight = 0;\n\t\t\t\tthis._targetWeight = 0;\n\t\t\t\tthis._name = name;\n\t\t\t\tthis._controller = controller;\n\t\t\t\tthis._component = component;\n\t\t\t\tthis._weight = weight;\n\t\t\t\tthis._blendType = blendType;\n\t\t}\n\t\tget name() {\n\t\t\t\treturn this._name;\n\t\t}\n\t\tset playing(value) {\n\t\t\t\tthis._controller.playing = value;\n\t\t}\n\t\tget playing() {\n\t\t\t\treturn this._controller.playing;\n\t\t}\n\t\tget playable() {\n\t\t\t\treturn this._controller.playable;\n\t\t}\n\t\tget activeState() {\n\t\t\t\treturn this._controller.activeStateName;\n\t\t}\n\t\tget previousState() {\n\t\t\t\treturn this._controller.previousStateName;\n\t\t}\n\t\tget activeStateProgress() {\n\t\t\t\treturn this._controller.activeStateProgress;\n\t\t}\n\t\tget activeStateDuration() {\n\t\t\t\treturn this._controller.activeStateDuration;\n\t\t}\n\t\tset activeStateCurrentTime(time) {\n\t\t\t\tconst controller = this._controller;\n\t\t\t\tconst layerPlaying = controller.playing;\n\t\t\t\tcontroller.playing = true;\n\t\t\t\tcontroller.activeStateCurrentTime = time;\n\t\t\t\tif (!layerPlaying) {\n\t\t\t\t\t\tcontroller.update(0);\n\t\t\t\t}\n\t\t\t\tcontroller.playing = layerPlaying;\n\t\t}\n\t\tget activeStateCurrentTime() {\n\t\t\t\treturn this._controller.activeStateCurrentTime;\n\t\t}\n\t\tget transitioning() {\n\t\t\t\treturn this._controller.transitioning;\n\t\t}\n\t\tget transitionProgress() {\n\t\t\t\tif (this.transitioning) {\n\t\t\t\t\t\treturn this._controller.transitionProgress;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tget states() {\n\t\t\t\treturn this._controller.states;\n\t\t}\n\t\tset weight(value) {\n\t\t\t\tthis._weight = value;\n\t\t\t\tthis._component.dirtifyTargets();\n\t\t}\n\t\tget weight() {\n\t\t\t\treturn this._weight;\n\t\t}\n\t\tset blendType(value) {\n\t\t\t\tif (value !== this._blendType) {\n\t\t\t\t\t\tthis._blendType = value;\n\t\t\t\t\t\tif (this._controller.normalizeWeights) {\n\t\t\t\t\t\t\t\tthis._component.rebind();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget blendType() {\n\t\t\t\treturn this._blendType;\n\t\t}\n\t\tset mask(value) {\n\t\t\t\tif (this._controller.assignMask(value)) {\n\t\t\t\t\t\tthis._component.rebind();\n\t\t\t\t}\n\t\t\t\tthis._mask = value;\n\t\t}\n\t\tget mask() {\n\t\t\t\treturn this._mask;\n\t\t}\n\t\tplay(name) {\n\t\t\t\tthis._controller.play(name);\n\t\t}\n\t\tpause() {\n\t\t\t\tthis._controller.pause();\n\t\t}\n\t\treset() {\n\t\t\t\tthis._controller.reset();\n\t\t}\n\t\trebind() {\n\t\t\t\tthis._controller.rebind();\n\t\t}\n\t\tupdate(dt) {\n\t\t\t\tif (this._blendTime) {\n\t\t\t\t\t\tif (this._blendTimeElapsed < this._blendTime) {\n\t\t\t\t\t\t\t\tthis.weight = math.lerp(this._startingWeight, this._targetWeight, this._blendTimeElapsed / this._blendTime);\n\t\t\t\t\t\t\t\tthis._blendTimeElapsed += dt;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.weight = this._targetWeight;\n\t\t\t\t\t\t\t\tthis._blendTime = 0;\n\t\t\t\t\t\t\t\tthis._blendTimeElapsed = 0;\n\t\t\t\t\t\t\t\tthis._startingWeight = 0;\n\t\t\t\t\t\t\t\tthis._targetWeight = 0;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._controller.update(dt);\n\t\t}\n\t\tblendToWeight(weight, time) {\n\t\t\t\tthis._startingWeight = this.weight;\n\t\t\t\tthis._targetWeight = weight;\n\t\t\t\tthis._blendTime = Math.max(0, time);\n\t\t\t\tthis._blendTimeElapsed = 0;\n\t\t}\n\t\tassignAnimation(nodePath, animTrack, speed, loop) {\n\t\t\t\tif (!(animTrack instanceof AnimTrack)) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._controller.assignAnimation(nodePath, animTrack, speed, loop);\n\t\t\t\tif (this._controller._transitions.length === 0) {\n\t\t\t\t\t\tthis._controller._transitions.push(new AnimTransition({\n\t\t\t\t\t\t\t\tfrom: 'START',\n\t\t\t\t\t\t\t\tto: nodePath\n\t\t\t\t\t\t}));\n\t\t\t\t}\n\t\t\t\tif (this._component.activate && this._component.playable) {\n\t\t\t\t\t\tthis._component.playing = true;\n\t\t\t\t}\n\t\t}\n\t\tremoveNodeAnimations(nodeName) {\n\t\t\t\tif (this._controller.removeNodeAnimations(nodeName)) {\n\t\t\t\t\t\tthis._component.playing = false;\n\t\t\t\t}\n\t\t}\n\t\tgetAnimationAsset(stateName) {\n\t\t\t\treturn this._component.animationAssets[`${this.name}:${stateName}`];\n\t\t}\n\t\ttransition(to, time = 0, transitionOffset = null) {\n\t\t\t\tthis._controller.updateStateFromTransition(new AnimTransition({\n\t\t\t\t\t\tfrom: this._controller.activeStateName,\n\t\t\t\t\t\tto,\n\t\t\t\t\t\ttime,\n\t\t\t\t\t\ttransitionOffset\n\t\t\t\t}));\n\t\t}\n}\n\nclass AnimStateGraph {\n\t\tconstructor(data){\n\t\t\t\tthis._layers = [];\n\t\t\t\tthis._parameters = {};\n\t\t\t\tif (!Array.isArray(data.layers)) {\n\t\t\t\t\t\tfor(const layerId in data.layers){\n\t\t\t\t\t\t\t\tconst dataLayer = data.layers[layerId];\n\t\t\t\t\t\t\t\tconst layer = {\n\t\t\t\t\t\t\t\t\t\tname: dataLayer.name,\n\t\t\t\t\t\t\t\t\t\tblendType: dataLayer.blendType,\n\t\t\t\t\t\t\t\t\t\tweight: dataLayer.weight,\n\t\t\t\t\t\t\t\t\t\tstates: [],\n\t\t\t\t\t\t\t\t\t\ttransitions: []\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tfor(let i = 0; i < dataLayer.states.length; i++){\n\t\t\t\t\t\t\t\t\t\tlayer.states.push(data.states[dataLayer.states[i]]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tfor(let i = 0; i < dataLayer.transitions.length; i++){\n\t\t\t\t\t\t\t\t\t\tconst dataLayerTransition = data.transitions[dataLayer.transitions[i]];\n\t\t\t\t\t\t\t\t\t\tif (dataLayerTransition.conditions && !Array.isArray(dataLayerTransition.conditions)) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst conditionKeys = Object.keys(dataLayerTransition.conditions);\n\t\t\t\t\t\t\t\t\t\t\t\tconst conditions = [];\n\t\t\t\t\t\t\t\t\t\t\t\tfor(let j = 0; j < conditionKeys.length; j++){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst condition = dataLayerTransition.conditions[conditionKeys[j]];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (condition.parameterName) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconditions.push(condition);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tdataLayerTransition.conditions = conditions;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (Number.isInteger(dataLayerTransition.from)) {\n\t\t\t\t\t\t\t\t\t\t\t\tdataLayerTransition.from = data.states[dataLayerTransition.from].name;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (Number.isInteger(dataLayerTransition.to)) {\n\t\t\t\t\t\t\t\t\t\t\t\tdataLayerTransition.to = data.states[dataLayerTransition.to].name;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tlayer.transitions.push(dataLayerTransition);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis._layers.push(layer);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._layers = data.layers;\n\t\t\t\t}\n\t\t\t\tfor(const paramId in data.parameters){\n\t\t\t\t\t\tconst param = data.parameters[paramId];\n\t\t\t\t\t\tthis._parameters[param.name] = {\n\t\t\t\t\t\t\t\ttype: param.type,\n\t\t\t\t\t\t\t\tvalue: param.value\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t}\n\t\tget parameters() {\n\t\t\t\treturn Object.assign({}, this._parameters);\n\t\t}\n\t\tget layers() {\n\t\t\t\treturn this._layers;\n\t\t}\n}\n\nclass AnimComponent extends Component {\n\t\tset stateGraphAsset(value) {\n\t\t\t\tif (value === null) {\n\t\t\t\t\t\tthis.removeStateGraph();\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this._stateGraphAsset) {\n\t\t\t\t\t\tconst stateGraphAsset = this.system.app.assets.get(this._stateGraphAsset);\n\t\t\t\t\t\tstateGraphAsset.off('change', this._onStateGraphAssetChangeEvent, this);\n\t\t\t\t}\n\t\t\t\tlet _id;\n\t\t\t\tlet _asset;\n\t\t\t\tif (value instanceof Asset) {\n\t\t\t\t\t\t_id = value.id;\n\t\t\t\t\t\t_asset = this.system.app.assets.get(_id);\n\t\t\t\t\t\tif (!_asset) {\n\t\t\t\t\t\t\t\tthis.system.app.assets.add(value);\n\t\t\t\t\t\t\t\t_asset = this.system.app.assets.get(_id);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\t_id = value;\n\t\t\t\t\t\t_asset = this.system.app.assets.get(_id);\n\t\t\t\t}\n\t\t\t\tif (!_asset || this._stateGraphAsset === _id) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (_asset.resource) {\n\t\t\t\t\t\tthis._stateGraph = _asset.resource;\n\t\t\t\t\t\tthis.loadStateGraph(this._stateGraph);\n\t\t\t\t\t\t_asset.on('change', this._onStateGraphAssetChangeEvent, this);\n\t\t\t\t} else {\n\t\t\t\t\t\t_asset.once('load', (asset)=>{\n\t\t\t\t\t\t\t\tthis._stateGraph = asset.resource;\n\t\t\t\t\t\t\t\tthis.loadStateGraph(this._stateGraph);\n\t\t\t\t\t\t});\n\t\t\t\t\t\t_asset.on('change', this._onStateGraphAssetChangeEvent, this);\n\t\t\t\t\t\tthis.system.app.assets.load(_asset);\n\t\t\t\t}\n\t\t\t\tthis._stateGraphAsset = _id;\n\t\t}\n\t\tget stateGraphAsset() {\n\t\t\t\treturn this._stateGraphAsset;\n\t\t}\n\t\tset normalizeWeights(value) {\n\t\t\t\tthis._normalizeWeights = value;\n\t\t\t\tthis.unbind();\n\t\t}\n\t\tget normalizeWeights() {\n\t\t\t\treturn this._normalizeWeights;\n\t\t}\n\t\tset animationAssets(value) {\n\t\t\t\tthis._animationAssets = value;\n\t\t\t\tthis.loadAnimationAssets();\n\t\t}\n\t\tget animationAssets() {\n\t\t\t\treturn this._animationAssets;\n\t\t}\n\t\tset speed(value) {\n\t\t\t\tthis._speed = value;\n\t\t}\n\t\tget speed() {\n\t\t\t\treturn this._speed;\n\t\t}\n\t\tset activate(value) {\n\t\t\t\tthis._activate = value;\n\t\t}\n\t\tget activate() {\n\t\t\t\treturn this._activate;\n\t\t}\n\t\tset playing(value) {\n\t\t\t\tthis._playing = value;\n\t\t}\n\t\tget playing() {\n\t\t\t\treturn this._playing;\n\t\t}\n\t\tset rootBone(value) {\n\t\t\t\tif (typeof value === 'string') {\n\t\t\t\t\t\tconst entity = this.entity.root.findByGuid(value);\n\t\t\t\t\t\tthis._rootBone = entity;\n\t\t\t\t} else if (value instanceof Entity) {\n\t\t\t\t\t\tthis._rootBone = value;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._rootBone = null;\n\t\t\t\t}\n\t\t\t\tthis.rebind();\n\t\t}\n\t\tget rootBone() {\n\t\t\t\treturn this._rootBone;\n\t\t}\n\t\tset stateGraph(value) {\n\t\t\t\tthis._stateGraph = value;\n\t\t}\n\t\tget stateGraph() {\n\t\t\t\treturn this._stateGraph;\n\t\t}\n\t\tget layers() {\n\t\t\t\treturn this._layers;\n\t\t}\n\t\tset layerIndices(value) {\n\t\t\t\tthis._layerIndices = value;\n\t\t}\n\t\tget layerIndices() {\n\t\t\t\treturn this._layerIndices;\n\t\t}\n\t\tset parameters(value) {\n\t\t\t\tthis._parameters = value;\n\t\t}\n\t\tget parameters() {\n\t\t\t\treturn this._parameters;\n\t\t}\n\t\tset targets(value) {\n\t\t\t\tthis._targets = value;\n\t\t}\n\t\tget targets() {\n\t\t\t\treturn this._targets;\n\t\t}\n\t\tget playable() {\n\t\t\t\tfor(let i = 0; i < this._layers.length; i++){\n\t\t\t\t\t\tif (!this._layers[i].playable) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t}\n\t\tget baseLayer() {\n\t\t\t\tif (this._layers.length > 0) {\n\t\t\t\t\t\treturn this._layers[0];\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\t_onStateGraphAssetChangeEvent(asset) {\n\t\t\t\tconst prevAnimationAssets = this.animationAssets;\n\t\t\t\tconst prevMasks = this.layers.map((layer)=>layer.mask);\n\t\t\t\tthis.removeStateGraph();\n\t\t\t\tthis._stateGraph = new AnimStateGraph(asset._data);\n\t\t\t\tthis.loadStateGraph(this._stateGraph);\n\t\t\t\tthis.animationAssets = prevAnimationAssets;\n\t\t\t\tthis.loadAnimationAssets();\n\t\t\t\tthis.layers.forEach((layer, i)=>{\n\t\t\t\t\t\tlayer.mask = prevMasks[i];\n\t\t\t\t});\n\t\t\t\tthis.rebind();\n\t\t}\n\t\tdirtifyTargets() {\n\t\t\t\tconst targets = Object.values(this._targets);\n\t\t\t\tfor(let i = 0; i < targets.length; i++){\n\t\t\t\t\t\ttargets[i].dirty = true;\n\t\t\t\t}\n\t\t}\n\t\t_addLayer({ name, states, transitions, weight, mask, blendType }) {\n\t\t\t\tlet graph;\n\t\t\t\tif (this.rootBone) {\n\t\t\t\t\t\tgraph = this.rootBone;\n\t\t\t\t} else {\n\t\t\t\t\t\tgraph = this.entity;\n\t\t\t\t}\n\t\t\t\tconst layerIndex = this._layers.length;\n\t\t\t\tconst animBinder = new AnimComponentBinder(this, graph, name, mask, layerIndex);\n\t\t\t\tconst animEvaluator = new AnimEvaluator(animBinder);\n\t\t\t\tconst controller = new AnimController(animEvaluator, states, transitions, this._activate, this, this.findParameter, this.consumeTrigger);\n\t\t\t\tthis._layers.push(new AnimComponentLayer(name, controller, this, weight, blendType));\n\t\t\t\tthis._layerIndices[name] = layerIndex;\n\t\t\t\treturn this._layers[layerIndex];\n\t\t}\n\t\taddLayer(name, weight, mask, blendType) {\n\t\t\t\tconst layer = this.findAnimationLayer(name);\n\t\t\t\tif (layer) return layer;\n\t\t\t\tconst states = [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t'name': 'START',\n\t\t\t\t\t\t\t\t'speed': 1\n\t\t\t\t\t\t}\n\t\t\t\t];\n\t\t\t\tconst transitions = [];\n\t\t\t\treturn this._addLayer({\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tstates,\n\t\t\t\t\t\ttransitions,\n\t\t\t\t\t\tweight,\n\t\t\t\t\t\tmask,\n\t\t\t\t\t\tblendType\n\t\t\t\t});\n\t\t}\n\t\t_assignParameters(stateGraph) {\n\t\t\t\tthis._parameters = {};\n\t\t\t\tconst paramKeys = Object.keys(stateGraph.parameters);\n\t\t\t\tfor(let i = 0; i < paramKeys.length; i++){\n\t\t\t\t\t\tconst paramKey = paramKeys[i];\n\t\t\t\t\t\tthis._parameters[paramKey] = {\n\t\t\t\t\t\t\t\ttype: stateGraph.parameters[paramKey].type,\n\t\t\t\t\t\t\t\tvalue: stateGraph.parameters[paramKey].value\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t}\n\t\tloadStateGraph(stateGraph) {\n\t\t\t\tthis._stateGraph = stateGraph;\n\t\t\t\tthis._assignParameters(stateGraph);\n\t\t\t\tthis._layers = [];\n\t\t\t\tlet containsBlendTree = false;\n\t\t\t\tfor(let i = 0; i < stateGraph.layers.length; i++){\n\t\t\t\t\t\tconst layer = stateGraph.layers[i];\n\t\t\t\t\t\tthis._addLayer({\n\t\t\t\t\t\t\t\t...layer\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (layer.states.some((state)=>state.blendTree)) {\n\t\t\t\t\t\t\t\tcontainsBlendTree = true;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!containsBlendTree) {\n\t\t\t\t\t\tthis.setupAnimationAssets();\n\t\t\t\t}\n\t\t}\n\t\tsetupAnimationAssets() {\n\t\t\t\tfor(let i = 0; i < this._layers.length; i++){\n\t\t\t\t\t\tconst layer = this._layers[i];\n\t\t\t\t\t\tconst layerName = layer.name;\n\t\t\t\t\t\tfor(let j = 0; j < layer.states.length; j++){\n\t\t\t\t\t\t\t\tconst stateName = layer.states[j];\n\t\t\t\t\t\t\t\tif (ANIM_CONTROL_STATES.indexOf(stateName) === -1) {\n\t\t\t\t\t\t\t\t\t\tconst stateKey = `${layerName}:${stateName}`;\n\t\t\t\t\t\t\t\t\t\tif (!this._animationAssets[stateKey]) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._animationAssets[stateKey] = {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tasset: null\n\t\t\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.loadAnimationAssets();\n\t\t}\n\t\tloadAnimationAssets() {\n\t\t\t\tfor(let i = 0; i < this._layers.length; i++){\n\t\t\t\t\t\tconst layer = this._layers[i];\n\t\t\t\t\t\tfor(let j = 0; j < layer.states.length; j++){\n\t\t\t\t\t\t\t\tconst stateName = layer.states[j];\n\t\t\t\t\t\t\t\tif (ANIM_CONTROL_STATES.indexOf(stateName) !== -1) continue;\n\t\t\t\t\t\t\t\tconst animationAsset = this._animationAssets[`${layer.name}:${stateName}`];\n\t\t\t\t\t\t\t\tif (!animationAsset || !animationAsset.asset) {\n\t\t\t\t\t\t\t\t\t\tthis.findAnimationLayer(layer.name).assignAnimation(stateName, AnimTrack.EMPTY);\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst assetId = animationAsset.asset;\n\t\t\t\t\t\t\t\tconst asset = this.system.app.assets.get(assetId);\n\t\t\t\t\t\t\t\tif (asset) {\n\t\t\t\t\t\t\t\t\t\tif (asset.resource) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.onAnimationAssetLoaded(layer.name, stateName, asset);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tasset.once('load', (function(layerName, stateName) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn (function(asset) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.onAnimationAssetLoaded(layerName, stateName, asset);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}).bind(this);\n\t\t\t\t\t\t\t\t\t\t\t\t}).bind(this)(layer.name, stateName));\n\t\t\t\t\t\t\t\t\t\t\t\tthis.system.app.assets.load(asset);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tonAnimationAssetLoaded(layerName, stateName, asset) {\n\t\t\t\tthis.findAnimationLayer(layerName).assignAnimation(stateName, asset.resource);\n\t\t}\n\t\tremoveStateGraph() {\n\t\t\t\tthis._stateGraph = null;\n\t\t\t\tthis._stateGraphAsset = null;\n\t\t\t\tthis._animationAssets = {};\n\t\t\t\tthis._layers = [];\n\t\t\t\tthis._layerIndices = {};\n\t\t\t\tthis._parameters = {};\n\t\t\t\tthis._playing = false;\n\t\t\t\tthis.unbind();\n\t\t\t\tthis._targets = {};\n\t\t}\n\t\treset() {\n\t\t\t\tthis._assignParameters(this._stateGraph);\n\t\t\t\tfor(let i = 0; i < this._layers.length; i++){\n\t\t\t\t\t\tconst layerPlaying = this._layers[i].playing;\n\t\t\t\t\t\tthis._layers[i].reset();\n\t\t\t\t\t\tthis._layers[i].playing = layerPlaying;\n\t\t\t\t}\n\t\t}\n\t\tunbind() {\n\t\t\t\tif (!this._normalizeWeights) {\n\t\t\t\t\t\tObject.keys(this._targets).forEach((targetKey)=>{\n\t\t\t\t\t\t\t\tthis._targets[targetKey].unbind();\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t}\n\t\trebind() {\n\t\t\t\tthis._targets = {};\n\t\t\t\tfor(let i = 0; i < this._layers.length; i++){\n\t\t\t\t\t\tthis._layers[i].rebind();\n\t\t\t\t}\n\t\t}\n\t\tfindAnimationLayer(name) {\n\t\t\t\tconst layerIndex = this._layerIndices[name];\n\t\t\t\treturn this._layers[layerIndex] || null;\n\t\t}\n\t\taddAnimationState(nodeName, animTrack, speed = 1, loop = true, layerName = 'Base') {\n\t\t\t\tif (!this._stateGraph) {\n\t\t\t\t\t\tthis.loadStateGraph(new AnimStateGraph({\n\t\t\t\t\t\t\t\t'layers': [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t'name': layerName,\n\t\t\t\t\t\t\t\t\t\t\t\t'states': [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'name': 'START',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'speed': 1\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'name': nodeName,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'speed': speed,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'loop': loop,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'defaultState': true\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t'transitions': [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'from': 'START',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'to': nodeName\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t'parameters': {}\n\t\t\t\t\t\t}));\n\t\t\t\t}\n\t\t\t\tconst layer = this.findAnimationLayer(layerName);\n\t\t\t\tif (layer) {\n\t\t\t\t\t\tlayer.assignAnimation(nodeName, animTrack, speed, loop);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.addLayer(layerName)?.assignAnimation(nodeName, animTrack, speed, loop);\n\t\t\t\t}\n\t\t}\n\t\tassignAnimation(nodePath, animTrack, layerName, speed = 1, loop = true) {\n\t\t\t\tif (!this._stateGraph && nodePath.indexOf('.') === -1) {\n\t\t\t\t\t\tthis.loadStateGraph(new AnimStateGraph({\n\t\t\t\t\t\t\t\t'layers': [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t'name': 'Base',\n\t\t\t\t\t\t\t\t\t\t\t\t'states': [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'name': 'START',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'speed': 1\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'name': nodePath,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'speed': speed,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'loop': loop,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'defaultState': true\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t'transitions': [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'from': 'START',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'to': nodePath\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t'parameters': {}\n\t\t\t\t\t\t}));\n\t\t\t\t\t\tthis.baseLayer.assignAnimation(nodePath, animTrack);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst layer = layerName ? this.findAnimationLayer(layerName) : this.baseLayer;\n\t\t\t\tif (!layer) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tlayer.assignAnimation(nodePath, animTrack, speed, loop);\n\t\t}\n\t\tremoveNodeAnimations(nodeName, layerName) {\n\t\t\t\tconst layer = layerName ? this.findAnimationLayer(layerName) : this.baseLayer;\n\t\t\t\tif (!layer) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tlayer.removeNodeAnimations(nodeName);\n\t\t}\n\t\tgetParameterValue(name, type) {\n\t\t\t\tconst param = this._parameters[name];\n\t\t\t\tif (param && param.type === type) {\n\t\t\t\t\t\treturn param.value;\n\t\t\t\t}\n\t\t\t\treturn undefined;\n\t\t}\n\t\tsetParameterValue(name, type, value) {\n\t\t\t\tconst param = this._parameters[name];\n\t\t\t\tif (param && param.type === type) {\n\t\t\t\t\t\tparam.value = value;\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t}\n\t\tgetFloat(name) {\n\t\t\t\treturn this.getParameterValue(name, ANIM_PARAMETER_FLOAT);\n\t\t}\n\t\tsetFloat(name, value) {\n\t\t\t\tthis.setParameterValue(name, ANIM_PARAMETER_FLOAT, value);\n\t\t}\n\t\tgetInteger(name) {\n\t\t\t\treturn this.getParameterValue(name, ANIM_PARAMETER_INTEGER);\n\t\t}\n\t\tsetInteger(name, value) {\n\t\t\t\tif (typeof value === 'number' && value % 1 === 0) {\n\t\t\t\t\t\tthis.setParameterValue(name, ANIM_PARAMETER_INTEGER, value);\n\t\t\t\t}\n\t\t}\n\t\tgetBoolean(name) {\n\t\t\t\treturn this.getParameterValue(name, ANIM_PARAMETER_BOOLEAN);\n\t\t}\n\t\tsetBoolean(name, value) {\n\t\t\t\tthis.setParameterValue(name, ANIM_PARAMETER_BOOLEAN, !!value);\n\t\t}\n\t\tgetTrigger(name) {\n\t\t\t\treturn this.getParameterValue(name, ANIM_PARAMETER_TRIGGER);\n\t\t}\n\t\tsetTrigger(name, singleFrame = false) {\n\t\t\t\tthis.setParameterValue(name, ANIM_PARAMETER_TRIGGER, true);\n\t\t\t\tif (singleFrame) {\n\t\t\t\t\t\tthis._consumedTriggers.add(name);\n\t\t\t\t}\n\t\t}\n\t\tresetTrigger(name) {\n\t\t\t\tthis.setParameterValue(name, ANIM_PARAMETER_TRIGGER, false);\n\t\t}\n\t\tonBeforeRemove() {\n\t\t\t\tif (Number.isFinite(this._stateGraphAsset)) {\n\t\t\t\t\t\tconst stateGraphAsset = this.system.app.assets.get(this._stateGraphAsset);\n\t\t\t\t\t\tstateGraphAsset.off('change', this._onStateGraphAssetChangeEvent, this);\n\t\t\t\t}\n\t\t}\n\t\tupdate(dt) {\n\t\t\t\tfor(let i = 0; i < this.layers.length; i++){\n\t\t\t\t\t\tthis.layers[i].update(dt * this.speed);\n\t\t\t\t}\n\t\t\t\tthis._consumedTriggers.forEach((trigger)=>{\n\t\t\t\t\t\tthis.parameters[trigger].value = false;\n\t\t\t\t});\n\t\t\t\tthis._consumedTriggers.clear();\n\t\t}\n\t\tresolveDuplicatedEntityReferenceProperties(oldAnim, duplicatedIdsMap) {\n\t\t\t\tif (oldAnim.rootBone && duplicatedIdsMap[oldAnim.rootBone.getGuid()]) {\n\t\t\t\t\t\tthis.rootBone = duplicatedIdsMap[oldAnim.rootBone.getGuid()];\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.rebind();\n\t\t\t\t}\n\t\t}\n\t\tconstructor(...args){\n\t\t\t\tsuper(...args), this._stateGraphAsset = null, this._animationAssets = {}, this._speed = 1, this._activate = true, this._playing = false, this._rootBone = null, this._stateGraph = null, this._layers = [], this._layerIndices = {}, this._parameters = {}, this._targets = {}, this._consumedTriggers = new Set(), this._normalizeWeights = false, this.findParameter = (name)=>{\n\t\t\t\t\t\treturn this._parameters[name];\n\t\t\t\t}, this.consumeTrigger = (name)=>{\n\t\t\t\t\t\tthis._consumedTriggers.add(name);\n\t\t\t\t};\n\t\t}\n}\n\nclass AnimComponentData {\n\t\tconstructor(){\n\t\t\t\tthis.enabled = true;\n\t\t}\n}\n\nconst _schema$j = [\n\t\t'enabled'\n];\nclass AnimComponentSystem extends ComponentSystem {\n\t\tconstructor(app){\n\t\t\t\tsuper(app);\n\t\t\t\tthis.id = 'anim';\n\t\t\t\tthis.ComponentType = AnimComponent;\n\t\t\t\tthis.DataType = AnimComponentData;\n\t\t\t\tthis.schema = _schema$j;\n\t\t\t\tthis.on('beforeremove', this.onBeforeRemove, this);\n\t\t\t\tthis.app.systems.on('animationUpdate', this.onAnimationUpdate, this);\n\t\t}\n\t\tinitializeComponentData(component, data, properties) {\n\t\t\t\tsuper.initializeComponentData(component, data, _schema$j);\n\t\t\t\tconst complexProperties = [\n\t\t\t\t\t\t'animationAssets',\n\t\t\t\t\t\t'stateGraph',\n\t\t\t\t\t\t'layers',\n\t\t\t\t\t\t'masks'\n\t\t\t\t];\n\t\t\t\tObject.keys(data).forEach((key)=>{\n\t\t\t\t\t\tif (complexProperties.includes(key)) return;\n\t\t\t\t\t\tcomponent[key] = data[key];\n\t\t\t\t});\n\t\t\t\tif (data.stateGraph) {\n\t\t\t\t\t\tcomponent.stateGraph = data.stateGraph;\n\t\t\t\t\t\tcomponent.loadStateGraph(component.stateGraph);\n\t\t\t\t}\n\t\t\t\tif (data.layers) {\n\t\t\t\t\t\tdata.layers.forEach((layer, i)=>{\n\t\t\t\t\t\t\t\tlayer._controller.states.forEach((stateKey)=>{\n\t\t\t\t\t\t\t\t\t\tlayer._controller._states[stateKey]._animationList.forEach((node)=>{\n\t\t\t\t\t\t\t\t\t\t\t\tif (!node.animTrack || node.animTrack === AnimTrack.EMPTY) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst animationAsset = this.app.assets.get(layer._component._animationAssets[`${layer.name}:${node.name}`].asset);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (animationAsset && !animationAsset.loaded) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tanimationAsset.once('load', ()=>{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcomponent.layers[i].assignAnimation(node.name, animationAsset.resource);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcomponent.layers[i].assignAnimation(node.name, node.animTrack);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif (data.animationAssets) {\n\t\t\t\t\t\tcomponent.animationAssets = Object.assign(component.animationAssets, data.animationAssets);\n\t\t\t\t}\n\t\t\t\tif (data.masks) {\n\t\t\t\t\t\tObject.keys(data.masks).forEach((key)=>{\n\t\t\t\t\t\t\t\tif (component.layers[key]) {\n\t\t\t\t\t\t\t\t\t\tconst maskData = data.masks[key].mask;\n\t\t\t\t\t\t\t\t\t\tconst mask = {};\n\t\t\t\t\t\t\t\t\t\tObject.keys(maskData).forEach((maskKey)=>{\n\t\t\t\t\t\t\t\t\t\t\t\tmask[decodeURI(maskKey)] = maskData[maskKey];\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tcomponent.layers[key].mask = mask;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t}\n\t\tonAnimationUpdate(dt) {\n\t\t\t\tconst components = this.store;\n\t\t\t\tfor(const id in components){\n\t\t\t\t\t\tif (components.hasOwnProperty(id)) {\n\t\t\t\t\t\t\t\tconst component = components[id].entity.anim;\n\t\t\t\t\t\t\t\tconst componentData = component.data;\n\t\t\t\t\t\t\t\tif (componentData.enabled && component.entity.enabled && component.playing) {\n\t\t\t\t\t\t\t\t\t\tcomponent.update(dt);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tcloneComponent(entity, clone) {\n\t\t\t\tlet masks;\n\t\t\t\tif (!entity.anim.rootBone || entity.anim.rootBone === entity) {\n\t\t\t\t\t\tmasks = {};\n\t\t\t\t\t\tentity.anim.layers.forEach((layer, i)=>{\n\t\t\t\t\t\t\t\tif (layer.mask) {\n\t\t\t\t\t\t\t\t\t\tconst mask = {};\n\t\t\t\t\t\t\t\t\t\tObject.keys(layer.mask).forEach((path)=>{\n\t\t\t\t\t\t\t\t\t\t\t\tconst pathArr = path.split('/');\n\t\t\t\t\t\t\t\t\t\t\t\tpathArr.shift();\n\t\t\t\t\t\t\t\t\t\t\t\tconst clonePath = [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclone.name,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t...pathArr\n\t\t\t\t\t\t\t\t\t\t\t\t].join('/');\n\t\t\t\t\t\t\t\t\t\t\t\tmask[clonePath] = layer.mask[path];\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tmasks[i] = {\n\t\t\t\t\t\t\t\t\t\t\t\tmask\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tconst data = {\n\t\t\t\t\t\tenabled: entity.anim.enabled,\n\t\t\t\t\t\tstateGraphAsset: entity.anim.stateGraphAsset,\n\t\t\t\t\t\tanimationAssets: entity.anim.animationAssets,\n\t\t\t\t\t\tspeed: entity.anim.speed,\n\t\t\t\t\t\tactivate: entity.anim.activate,\n\t\t\t\t\t\tplaying: entity.anim.playing,\n\t\t\t\t\t\trootBone: entity.anim.rootBone,\n\t\t\t\t\t\tstateGraph: entity.anim.stateGraph,\n\t\t\t\t\t\tlayers: entity.anim.layers,\n\t\t\t\t\t\tlayerIndices: entity.anim.layerIndices,\n\t\t\t\t\t\tparameters: entity.anim.parameters,\n\t\t\t\t\t\tnormalizeWeights: entity.anim.normalizeWeights,\n\t\t\t\t\t\tmasks\n\t\t\t\t};\n\t\t\t\treturn this.addComponent(clone, data);\n\t\t}\n\t\tonBeforeRemove(entity, component) {\n\t\t\t\tcomponent.onBeforeRemove();\n\t\t}\n\t\tdestroy() {\n\t\t\t\tsuper.destroy();\n\t\t\t\tthis.app.systems.off('animationUpdate', this.onAnimationUpdate, this);\n\t\t}\n}\nComponent._buildAccessors(AnimComponent.prototype, _schema$j);\n\nclass AudioListenerComponent extends Component {\n\t\tsetCurrentListener() {\n\t\t\t\tif (this.enabled && this.entity.audiolistener && this.entity.enabled) {\n\t\t\t\t\t\tthis.system.current = this.entity;\n\t\t\t\t\t\tconst position = this.system.current.getPosition();\n\t\t\t\t\t\tthis.system.manager.listener.setPosition(position);\n\t\t\t\t}\n\t\t}\n\t\tonEnable() {\n\t\t\t\tthis.setCurrentListener();\n\t\t}\n\t\tonDisable() {\n\t\t\t\tif (this.system.current === this.entity) {\n\t\t\t\t\t\tthis.system.current = null;\n\t\t\t\t}\n\t\t}\n}\n\nclass AudioListenerComponentData {\n\t\tconstructor(){\n\t\t\t\tthis.enabled = true;\n\t\t}\n}\n\nconst _schema$i = [\n\t\t'enabled'\n];\nclass AudioListenerComponentSystem extends ComponentSystem {\n\t\tconstructor(app){\n\t\t\t\tsuper(app);\n\t\t\t\tthis.id = 'audiolistener';\n\t\t\t\tthis.ComponentType = AudioListenerComponent;\n\t\t\t\tthis.DataType = AudioListenerComponentData;\n\t\t\t\tthis.schema = _schema$i;\n\t\t\t\tthis.manager = app.soundManager;\n\t\t\t\tthis.current = null;\n\t\t\t\tthis.app.systems.on('update', this.onUpdate, this);\n\t\t}\n\t\tinitializeComponentData(component, data, properties) {\n\t\t\t\tproperties = [\n\t\t\t\t\t\t'enabled'\n\t\t\t\t];\n\t\t\t\tsuper.initializeComponentData(component, data, properties);\n\t\t}\n\t\tonUpdate(dt) {\n\t\t\t\tif (this.current) {\n\t\t\t\t\t\tconst position = this.current.getPosition();\n\t\t\t\t\t\tthis.manager.listener.setPosition(position);\n\t\t\t\t\t\tconst wtm = this.current.getWorldTransform();\n\t\t\t\t\t\tthis.manager.listener.setOrientation(wtm);\n\t\t\t\t}\n\t\t}\n\t\tdestroy() {\n\t\t\t\tsuper.destroy();\n\t\t\t\tthis.app.systems.off('update', this.onUpdate, this);\n\t\t}\n}\nComponent._buildAccessors(AudioListenerComponent.prototype, _schema$i);\n\nconst BUTTON_TRANSITION_MODE_TINT = 0;\nconst BUTTON_TRANSITION_MODE_SPRITE_CHANGE = 1;\n\nconst ELEMENTTYPE_GROUP = 'group';\nconst ELEMENTTYPE_IMAGE = 'image';\nconst ELEMENTTYPE_TEXT = 'text';\nconst FITMODE_STRETCH = 'stretch';\nconst FITMODE_CONTAIN = 'contain';\nconst FITMODE_COVER = 'cover';\n\nconst VisualState = {\n\t\tDEFAULT: 'DEFAULT',\n\t\tHOVER: 'HOVER',\n\t\tPRESSED: 'PRESSED',\n\t\tINACTIVE: 'INACTIVE'\n};\nconst STATES_TO_TINT_NAMES = {};\nSTATES_TO_TINT_NAMES[VisualState.DEFAULT] = '_defaultTint';\nSTATES_TO_TINT_NAMES[VisualState.HOVER] = 'hoverTint';\nSTATES_TO_TINT_NAMES[VisualState.PRESSED] = 'pressedTint';\nSTATES_TO_TINT_NAMES[VisualState.INACTIVE] = 'inactiveTint';\nconst STATES_TO_SPRITE_ASSET_NAMES = {};\nSTATES_TO_SPRITE_ASSET_NAMES[VisualState.DEFAULT] = '_defaultSpriteAsset';\nSTATES_TO_SPRITE_ASSET_NAMES[VisualState.HOVER] = 'hoverSpriteAsset';\nSTATES_TO_SPRITE_ASSET_NAMES[VisualState.PRESSED] = 'pressedSpriteAsset';\nSTATES_TO_SPRITE_ASSET_NAMES[VisualState.INACTIVE] = 'inactiveSpriteAsset';\nconst STATES_TO_SPRITE_FRAME_NAMES = {};\nSTATES_TO_SPRITE_FRAME_NAMES[VisualState.DEFAULT] = '_defaultSpriteFrame';\nSTATES_TO_SPRITE_FRAME_NAMES[VisualState.HOVER] = 'hoverSpriteFrame';\nSTATES_TO_SPRITE_FRAME_NAMES[VisualState.PRESSED] = 'pressedSpriteFrame';\nSTATES_TO_SPRITE_FRAME_NAMES[VisualState.INACTIVE] = 'inactiveSpriteFrame';\nclass ButtonComponent extends Component {\n\t\tstatic{\n\t\t\t\tthis.EVENT_MOUSEDOWN = 'mousedown';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_MOUSEUP = 'mouseup';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_MOUSEENTER = 'mouseenter';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_MOUSELEAVE = 'mouseleave';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_CLICK = 'click';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_TOUCHSTART = 'touchstart';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_TOUCHEND = 'touchend';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_TOUCHCANCEL = 'touchcancel';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_TOUCHLEAVE = 'touchleave';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_SELECTSTART = 'selectstart';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_SELECTEND = 'selectend';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_SELECTENTER = 'selectenter';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_SELECTLEAVE = 'selectleave';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_HOVERSTART = 'hoverstart';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_HOVEREND = 'hoverend';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_PRESSEDSTART = 'pressedstart';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_PRESSEDEND = 'pressedend';\n\t\t}\n\t\tconstructor(system, entity){\n\t\t\t\tsuper(system, entity), this._visualState = VisualState.DEFAULT, this._isHovering = false, this._hoveringCounter = 0, this._isPressed = false, this._defaultTint = new Color(1, 1, 1, 1), this._defaultSpriteAsset = null, this._defaultSpriteFrame = 0, this._imageEntity = null, this._evtElementAdd = null, this._evtImageEntityElementAdd = null, this._evtImageEntityElementRemove = null, this._evtImageEntityElementColor = null, this._evtImageEntityElementOpacity = null, this._evtImageEntityElementSpriteAsset = null, this._evtImageEntityElementSpriteFrame = null;\n\t\t\t\tthis._visualState = VisualState.DEFAULT;\n\t\t\t\tthis._isHovering = false;\n\t\t\t\tthis._hoveringCounter = 0;\n\t\t\t\tthis._isPressed = false;\n\t\t\t\tthis._defaultTint = new Color(1, 1, 1, 1);\n\t\t\t\tthis._defaultSpriteAsset = null;\n\t\t\t\tthis._defaultSpriteFrame = 0;\n\t\t\t\tthis._toggleLifecycleListeners('on', system);\n\t\t}\n\t\tget data() {\n\t\t\t\tconst record = this.system.store[this.entity.getGuid()];\n\t\t\t\treturn record ? record.data : null;\n\t\t}\n\t\tset enabled(arg) {\n\t\t\t\tthis._setValue('enabled', arg);\n\t\t}\n\t\tget enabled() {\n\t\t\t\treturn this.data.enabled;\n\t\t}\n\t\tset active(arg) {\n\t\t\t\tthis._setValue('active', arg);\n\t\t}\n\t\tget active() {\n\t\t\t\treturn this.data.active;\n\t\t}\n\t\tset imageEntity(arg) {\n\t\t\t\tif (this._imageEntity !== arg) {\n\t\t\t\t\t\tconst isString = typeof arg === 'string';\n\t\t\t\t\t\tif (this._imageEntity && isString && this._imageEntity.getGuid() === arg) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this._imageEntity) {\n\t\t\t\t\t\t\t\tthis._imageEntityUnsubscribe();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (arg instanceof GraphNode) {\n\t\t\t\t\t\t\t\tthis._imageEntity = arg;\n\t\t\t\t\t\t} else if (isString) {\n\t\t\t\t\t\t\t\tthis._imageEntity = this.system.app.getEntityFromIndex(arg) || null;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._imageEntity = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this._imageEntity) {\n\t\t\t\t\t\t\t\tthis._imageEntitySubscribe();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this._imageEntity) {\n\t\t\t\t\t\t\t\tthis.data.imageEntity = this._imageEntity.getGuid();\n\t\t\t\t\t\t} else if (isString && arg) {\n\t\t\t\t\t\t\t\tthis.data.imageEntity = arg;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget imageEntity() {\n\t\t\t\treturn this._imageEntity;\n\t\t}\n\t\tset hitPadding(arg) {\n\t\t\t\tthis._setValue('hitPadding', arg);\n\t\t}\n\t\tget hitPadding() {\n\t\t\t\treturn this.data.hitPadding;\n\t\t}\n\t\tset transitionMode(arg) {\n\t\t\t\tthis._setValue('transitionMode', arg);\n\t\t}\n\t\tget transitionMode() {\n\t\t\t\treturn this.data.transitionMode;\n\t\t}\n\t\tset hoverTint(arg) {\n\t\t\t\tthis._setValue('hoverTint', arg);\n\t\t}\n\t\tget hoverTint() {\n\t\t\t\treturn this.data.hoverTint;\n\t\t}\n\t\tset pressedTint(arg) {\n\t\t\t\tthis._setValue('pressedTint', arg);\n\t\t}\n\t\tget pressedTint() {\n\t\t\t\treturn this.data.pressedTint;\n\t\t}\n\t\tset inactiveTint(arg) {\n\t\t\t\tthis._setValue('inactiveTint', arg);\n\t\t}\n\t\tget inactiveTint() {\n\t\t\t\treturn this.data.inactiveTint;\n\t\t}\n\t\tset fadeDuration(arg) {\n\t\t\t\tthis._setValue('fadeDuration', arg);\n\t\t}\n\t\tget fadeDuration() {\n\t\t\t\treturn this.data.fadeDuration;\n\t\t}\n\t\tset hoverSpriteAsset(arg) {\n\t\t\t\tthis._setValue('hoverSpriteAsset', arg);\n\t\t}\n\t\tget hoverSpriteAsset() {\n\t\t\t\treturn this.data.hoverSpriteAsset;\n\t\t}\n\t\tset hoverSpriteFrame(arg) {\n\t\t\t\tthis._setValue('hoverSpriteFrame', arg);\n\t\t}\n\t\tget hoverSpriteFrame() {\n\t\t\t\treturn this.data.hoverSpriteFrame;\n\t\t}\n\t\tset pressedSpriteAsset(arg) {\n\t\t\t\tthis._setValue('pressedSpriteAsset', arg);\n\t\t}\n\t\tget pressedSpriteAsset() {\n\t\t\t\treturn this.data.pressedSpriteAsset;\n\t\t}\n\t\tset pressedSpriteFrame(arg) {\n\t\t\t\tthis._setValue('pressedSpriteFrame', arg);\n\t\t}\n\t\tget pressedSpriteFrame() {\n\t\t\t\treturn this.data.pressedSpriteFrame;\n\t\t}\n\t\tset inactiveSpriteAsset(arg) {\n\t\t\t\tthis._setValue('inactiveSpriteAsset', arg);\n\t\t}\n\t\tget inactiveSpriteAsset() {\n\t\t\t\treturn this.data.inactiveSpriteAsset;\n\t\t}\n\t\tset inactiveSpriteFrame(arg) {\n\t\t\t\tthis._setValue('inactiveSpriteFrame', arg);\n\t\t}\n\t\tget inactiveSpriteFrame() {\n\t\t\t\treturn this.data.inactiveSpriteFrame;\n\t\t}\n\t\t_setValue(name, value) {\n\t\t\t\tconst data = this.data;\n\t\t\t\tconst oldValue = data[name];\n\t\t\t\tdata[name] = value;\n\t\t\t\tthis.fire('set', name, oldValue, value);\n\t\t}\n\t\t_toggleLifecycleListeners(onOrOff, system) {\n\t\t\t\tthis[onOrOff]('set_active', this._onSetActive, this);\n\t\t\t\tthis[onOrOff]('set_transitionMode', this._onSetTransitionMode, this);\n\t\t\t\tthis[onOrOff]('set_hoverTint', this._onSetTransitionValue, this);\n\t\t\t\tthis[onOrOff]('set_pressedTint', this._onSetTransitionValue, this);\n\t\t\t\tthis[onOrOff]('set_inactiveTint', this._onSetTransitionValue, this);\n\t\t\t\tthis[onOrOff]('set_hoverSpriteAsset', this._onSetTransitionValue, this);\n\t\t\t\tthis[onOrOff]('set_hoverSpriteFrame', this._onSetTransitionValue, this);\n\t\t\t\tthis[onOrOff]('set_pressedSpriteAsset', this._onSetTransitionValue, this);\n\t\t\t\tthis[onOrOff]('set_pressedSpriteFrame', this._onSetTransitionValue, this);\n\t\t\t\tthis[onOrOff]('set_inactiveSpriteAsset', this._onSetTransitionValue, this);\n\t\t\t\tthis[onOrOff]('set_inactiveSpriteFrame', this._onSetTransitionValue, this);\n\t\t\t\tif (onOrOff === 'on') {\n\t\t\t\t\t\tthis._evtElementAdd = this.entity.on('element:add', this._onElementComponentAdd, this);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._evtElementAdd?.off();\n\t\t\t\t\t\tthis._evtElementAdd = null;\n\t\t\t\t}\n\t\t}\n\t\t_onSetActive(name, oldValue, newValue) {\n\t\t\t\tif (oldValue !== newValue) {\n\t\t\t\t\t\tthis._updateVisualState();\n\t\t\t\t}\n\t\t}\n\t\t_onSetTransitionMode(name, oldValue, newValue) {\n\t\t\t\tif (oldValue !== newValue) {\n\t\t\t\t\t\tthis._cancelTween();\n\t\t\t\t\t\tthis._resetToDefaultVisualState(oldValue);\n\t\t\t\t\t\tthis._forceReapplyVisualState();\n\t\t\t\t}\n\t\t}\n\t\t_onSetTransitionValue(name, oldValue, newValue) {\n\t\t\t\tif (oldValue !== newValue) {\n\t\t\t\t\t\tthis._forceReapplyVisualState();\n\t\t\t\t}\n\t\t}\n\t\t_imageEntitySubscribe() {\n\t\t\t\tthis._evtImageEntityElementAdd = this._imageEntity.on('element:add', this._onImageElementGain, this);\n\t\t\t\tif (this._imageEntity.element) {\n\t\t\t\t\t\tthis._onImageElementGain();\n\t\t\t\t}\n\t\t}\n\t\t_imageEntityUnsubscribe() {\n\t\t\t\tthis._evtImageEntityElementAdd?.off();\n\t\t\t\tthis._evtImageEntityElementAdd = null;\n\t\t\t\tif (this._imageEntity?.element) {\n\t\t\t\t\t\tthis._onImageElementLose();\n\t\t\t\t}\n\t\t}\n\t\t_imageEntityElementSubscribe() {\n\t\t\t\tconst element = this._imageEntity.element;\n\t\t\t\tthis._evtImageEntityElementRemove = element.once('beforeremove', this._onImageElementLose, this);\n\t\t\t\tthis._evtImageEntityElementColor = element.on('set:color', this._onSetColor, this);\n\t\t\t\tthis._evtImageEntityElementOpacity = element.on('set:opacity', this._onSetOpacity, this);\n\t\t\t\tthis._evtImageEntityElementSpriteAsset = element.on('set:spriteAsset', this._onSetSpriteAsset, this);\n\t\t\t\tthis._evtImageEntityElementSpriteFrame = element.on('set:spriteFrame', this._onSetSpriteFrame, this);\n\t\t}\n\t\t_imageEntityElementUnsubscribe() {\n\t\t\t\tthis._evtImageEntityElementRemove?.off();\n\t\t\t\tthis._evtImageEntityElementRemove = null;\n\t\t\t\tthis._evtImageEntityElementColor?.off();\n\t\t\t\tthis._evtImageEntityElementColor = null;\n\t\t\t\tthis._evtImageEntityElementOpacity?.off();\n\t\t\t\tthis._evtImageEntityElementOpacity = null;\n\t\t\t\tthis._evtImageEntityElementSpriteAsset?.off();\n\t\t\t\tthis._evtImageEntityElementSpriteAsset = null;\n\t\t\t\tthis._evtImageEntityElementSpriteFrame?.off();\n\t\t\t\tthis._evtImageEntityElementSpriteFrame = null;\n\t\t}\n\t\t_onElementComponentRemove() {\n\t\t\t\tthis._toggleHitElementListeners('off');\n\t\t}\n\t\t_onElementComponentAdd() {\n\t\t\t\tthis._toggleHitElementListeners('on');\n\t\t}\n\t\t_onImageElementLose() {\n\t\t\t\tthis._imageEntityElementUnsubscribe();\n\t\t\t\tthis._cancelTween();\n\t\t\t\tthis._resetToDefaultVisualState(this.transitionMode);\n\t\t}\n\t\t_onImageElementGain() {\n\t\t\t\tthis._imageEntityElementSubscribe();\n\t\t\t\tthis._storeDefaultVisualState();\n\t\t\t\tthis._forceReapplyVisualState();\n\t\t}\n\t\t_toggleHitElementListeners(onOrOff) {\n\t\t\t\tif (this.entity.element) {\n\t\t\t\t\t\tconst isAdding = onOrOff === 'on';\n\t\t\t\t\t\tif (isAdding && this._hasHitElementListeners) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.entity.element[onOrOff]('beforeremove', this._onElementComponentRemove, this);\n\t\t\t\t\t\tthis.entity.element[onOrOff]('mouseenter', this._onMouseEnter, this);\n\t\t\t\t\t\tthis.entity.element[onOrOff]('mouseleave', this._onMouseLeave, this);\n\t\t\t\t\t\tthis.entity.element[onOrOff]('mousedown', this._onMouseDown, this);\n\t\t\t\t\t\tthis.entity.element[onOrOff]('mouseup', this._onMouseUp, this);\n\t\t\t\t\t\tthis.entity.element[onOrOff]('touchstart', this._onTouchStart, this);\n\t\t\t\t\t\tthis.entity.element[onOrOff]('touchend', this._onTouchEnd, this);\n\t\t\t\t\t\tthis.entity.element[onOrOff]('touchleave', this._onTouchLeave, this);\n\t\t\t\t\t\tthis.entity.element[onOrOff]('touchcancel', this._onTouchCancel, this);\n\t\t\t\t\t\tthis.entity.element[onOrOff]('selectstart', this._onSelectStart, this);\n\t\t\t\t\t\tthis.entity.element[onOrOff]('selectend', this._onSelectEnd, this);\n\t\t\t\t\t\tthis.entity.element[onOrOff]('selectenter', this._onSelectEnter, this);\n\t\t\t\t\t\tthis.entity.element[onOrOff]('selectleave', this._onSelectLeave, this);\n\t\t\t\t\t\tthis.entity.element[onOrOff]('click', this._onClick, this);\n\t\t\t\t\t\tthis._hasHitElementListeners = isAdding;\n\t\t\t\t}\n\t\t}\n\t\t_storeDefaultVisualState() {\n\t\t\t\tconst element = this._imageEntity?.element;\n\t\t\t\tif (!element || element.type === ELEMENTTYPE_GROUP) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._storeDefaultColor(element.color);\n\t\t\t\tthis._storeDefaultOpacity(element.opacity);\n\t\t\t\tthis._storeDefaultSpriteAsset(element.spriteAsset);\n\t\t\t\tthis._storeDefaultSpriteFrame(element.spriteFrame);\n\t\t}\n\t\t_storeDefaultColor(color) {\n\t\t\t\tthis._defaultTint.r = color.r;\n\t\t\t\tthis._defaultTint.g = color.g;\n\t\t\t\tthis._defaultTint.b = color.b;\n\t\t}\n\t\t_storeDefaultOpacity(opacity) {\n\t\t\t\tthis._defaultTint.a = opacity;\n\t\t}\n\t\t_storeDefaultSpriteAsset(spriteAsset) {\n\t\t\t\tthis._defaultSpriteAsset = spriteAsset;\n\t\t}\n\t\t_storeDefaultSpriteFrame(spriteFrame) {\n\t\t\t\tthis._defaultSpriteFrame = spriteFrame;\n\t\t}\n\t\t_onSetColor(color) {\n\t\t\t\tif (!this._isApplyingTint) {\n\t\t\t\t\t\tthis._storeDefaultColor(color);\n\t\t\t\t\t\tthis._forceReapplyVisualState();\n\t\t\t\t}\n\t\t}\n\t\t_onSetOpacity(opacity) {\n\t\t\t\tif (!this._isApplyingTint) {\n\t\t\t\t\t\tthis._storeDefaultOpacity(opacity);\n\t\t\t\t\t\tthis._forceReapplyVisualState();\n\t\t\t\t}\n\t\t}\n\t\t_onSetSpriteAsset(spriteAsset) {\n\t\t\t\tif (!this._isApplyingSprite) {\n\t\t\t\t\t\tthis._storeDefaultSpriteAsset(spriteAsset);\n\t\t\t\t\t\tthis._forceReapplyVisualState();\n\t\t\t\t}\n\t\t}\n\t\t_onSetSpriteFrame(spriteFrame) {\n\t\t\t\tif (!this._isApplyingSprite) {\n\t\t\t\t\t\tthis._storeDefaultSpriteFrame(spriteFrame);\n\t\t\t\t\t\tthis._forceReapplyVisualState();\n\t\t\t\t}\n\t\t}\n\t\t_onMouseEnter(event) {\n\t\t\t\tthis._isHovering = true;\n\t\t\t\tthis._updateVisualState();\n\t\t\t\tthis._fireIfActive('mouseenter', event);\n\t\t}\n\t\t_onMouseLeave(event) {\n\t\t\t\tthis._isHovering = false;\n\t\t\t\tthis._isPressed = false;\n\t\t\t\tthis._updateVisualState();\n\t\t\t\tthis._fireIfActive('mouseleave', event);\n\t\t}\n\t\t_onMouseDown(event) {\n\t\t\t\tthis._isPressed = true;\n\t\t\t\tthis._updateVisualState();\n\t\t\t\tthis._fireIfActive('mousedown', event);\n\t\t}\n\t\t_onMouseUp(event) {\n\t\t\t\tthis._isPressed = false;\n\t\t\t\tthis._updateVisualState();\n\t\t\t\tthis._fireIfActive('mouseup', event);\n\t\t}\n\t\t_onTouchStart(event) {\n\t\t\t\tthis._isPressed = true;\n\t\t\t\tthis._updateVisualState();\n\t\t\t\tthis._fireIfActive('touchstart', event);\n\t\t}\n\t\t_onTouchEnd(event) {\n\t\t\t\tevent.event.preventDefault();\n\t\t\t\tthis._isPressed = false;\n\t\t\t\tthis._updateVisualState();\n\t\t\t\tthis._fireIfActive('touchend', event);\n\t\t}\n\t\t_onTouchLeave(event) {\n\t\t\t\tthis._isPressed = false;\n\t\t\t\tthis._updateVisualState();\n\t\t\t\tthis._fireIfActive('touchleave', event);\n\t\t}\n\t\t_onTouchCancel(event) {\n\t\t\t\tthis._isPressed = false;\n\t\t\t\tthis._updateVisualState();\n\t\t\t\tthis._fireIfActive('touchcancel', event);\n\t\t}\n\t\t_onSelectStart(event) {\n\t\t\t\tthis._isPressed = true;\n\t\t\t\tthis._updateVisualState();\n\t\t\t\tthis._fireIfActive('selectstart', event);\n\t\t}\n\t\t_onSelectEnd(event) {\n\t\t\t\tthis._isPressed = false;\n\t\t\t\tthis._updateVisualState();\n\t\t\t\tthis._fireIfActive('selectend', event);\n\t\t}\n\t\t_onSelectEnter(event) {\n\t\t\t\tthis._hoveringCounter++;\n\t\t\t\tif (this._hoveringCounter === 1) {\n\t\t\t\t\t\tthis._isHovering = true;\n\t\t\t\t\t\tthis._updateVisualState();\n\t\t\t\t}\n\t\t\t\tthis._fireIfActive('selectenter', event);\n\t\t}\n\t\t_onSelectLeave(event) {\n\t\t\t\tthis._hoveringCounter--;\n\t\t\t\tif (this._hoveringCounter === 0) {\n\t\t\t\t\t\tthis._isHovering = false;\n\t\t\t\t\t\tthis._isPressed = false;\n\t\t\t\t\t\tthis._updateVisualState();\n\t\t\t\t}\n\t\t\t\tthis._fireIfActive('selectleave', event);\n\t\t}\n\t\t_onClick(event) {\n\t\t\t\tthis._fireIfActive('click', event);\n\t\t}\n\t\t_fireIfActive(name, event) {\n\t\t\t\tif (this.data.active) {\n\t\t\t\t\t\tthis.fire(name, event);\n\t\t\t\t}\n\t\t}\n\t\t_updateVisualState(force) {\n\t\t\t\tconst oldVisualState = this._visualState;\n\t\t\t\tconst newVisualState = this._determineVisualState();\n\t\t\t\tif ((oldVisualState !== newVisualState || force) && this.enabled) {\n\t\t\t\t\t\tthis._visualState = newVisualState;\n\t\t\t\t\t\tif (oldVisualState === VisualState.HOVER) {\n\t\t\t\t\t\t\t\tthis._fireIfActive('hoverend');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (oldVisualState === VisualState.PRESSED) {\n\t\t\t\t\t\t\t\tthis._fireIfActive('pressedend');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (newVisualState === VisualState.HOVER) {\n\t\t\t\t\t\t\t\tthis._fireIfActive('hoverstart');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (newVisualState === VisualState.PRESSED) {\n\t\t\t\t\t\t\t\tthis._fireIfActive('pressedstart');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tswitch(this.transitionMode){\n\t\t\t\t\t\t\t\tcase BUTTON_TRANSITION_MODE_TINT:\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tconst tintName = STATES_TO_TINT_NAMES[this._visualState];\n\t\t\t\t\t\t\t\t\t\t\t\tconst tintColor = this[tintName];\n\t\t\t\t\t\t\t\t\t\t\t\tthis._applyTint(tintColor);\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcase BUTTON_TRANSITION_MODE_SPRITE_CHANGE:\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tconst spriteAssetName = STATES_TO_SPRITE_ASSET_NAMES[this._visualState];\n\t\t\t\t\t\t\t\t\t\t\t\tconst spriteFrameName = STATES_TO_SPRITE_FRAME_NAMES[this._visualState];\n\t\t\t\t\t\t\t\t\t\t\t\tconst spriteAsset = this[spriteAssetName];\n\t\t\t\t\t\t\t\t\t\t\t\tconst spriteFrame = this[spriteFrameName];\n\t\t\t\t\t\t\t\t\t\t\t\tthis._applySprite(spriteAsset, spriteFrame);\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_forceReapplyVisualState() {\n\t\t\t\tthis._updateVisualState(true);\n\t\t}\n\t\t_resetToDefaultVisualState(transitionMode) {\n\t\t\t\tif (!this._imageEntity?.element) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tswitch(transitionMode){\n\t\t\t\t\t\tcase BUTTON_TRANSITION_MODE_TINT:\n\t\t\t\t\t\t\t\tthis._cancelTween();\n\t\t\t\t\t\t\t\tthis._applyTintImmediately(this._defaultTint);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase BUTTON_TRANSITION_MODE_SPRITE_CHANGE:\n\t\t\t\t\t\t\t\tthis._applySprite(this._defaultSpriteAsset, this._defaultSpriteFrame);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t}\n\t\t_determineVisualState() {\n\t\t\t\tif (!this.active) {\n\t\t\t\t\t\treturn VisualState.INACTIVE;\n\t\t\t\t} else if (this._isPressed) {\n\t\t\t\t\t\treturn VisualState.PRESSED;\n\t\t\t\t} else if (this._isHovering) {\n\t\t\t\t\t\treturn VisualState.HOVER;\n\t\t\t\t}\n\t\t\t\treturn VisualState.DEFAULT;\n\t\t}\n\t\t_applySprite(spriteAsset, spriteFrame) {\n\t\t\t\tconst element = this._imageEntity?.element;\n\t\t\t\tif (!element) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tspriteFrame = spriteFrame || 0;\n\t\t\t\tthis._isApplyingSprite = true;\n\t\t\t\tif (element.spriteAsset !== spriteAsset) {\n\t\t\t\t\t\telement.spriteAsset = spriteAsset;\n\t\t\t\t}\n\t\t\t\tif (element.spriteFrame !== spriteFrame) {\n\t\t\t\t\t\telement.spriteFrame = spriteFrame;\n\t\t\t\t}\n\t\t\t\tthis._isApplyingSprite = false;\n\t\t}\n\t\t_applyTint(tintColor) {\n\t\t\t\tthis._cancelTween();\n\t\t\t\tif (this.fadeDuration === 0) {\n\t\t\t\t\t\tthis._applyTintImmediately(tintColor);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._applyTintWithTween(tintColor);\n\t\t\t\t}\n\t\t}\n\t\t_applyTintImmediately(tintColor) {\n\t\t\t\tconst element = this._imageEntity?.element;\n\t\t\t\tif (!tintColor || !element || element.type === ELEMENTTYPE_GROUP) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst color3 = toColor3(tintColor);\n\t\t\t\tthis._isApplyingTint = true;\n\t\t\t\tif (!color3.equals(element.color)) {\n\t\t\t\t\t\telement.color = color3;\n\t\t\t\t}\n\t\t\t\tif (element.opacity !== tintColor.a) {\n\t\t\t\t\t\telement.opacity = tintColor.a;\n\t\t\t\t}\n\t\t\t\tthis._isApplyingTint = false;\n\t\t}\n\t\t_applyTintWithTween(tintColor) {\n\t\t\t\tconst element = this._imageEntity?.element;\n\t\t\t\tif (!tintColor || !element || element.type === ELEMENTTYPE_GROUP) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst color3 = toColor3(tintColor);\n\t\t\t\tconst color = element.color;\n\t\t\t\tconst opacity = element.opacity;\n\t\t\t\tif (color3.equals(color) && tintColor.a === opacity) return;\n\t\t\t\tthis._tweenInfo = {\n\t\t\t\t\t\tstartTime: now(),\n\t\t\t\t\t\tfrom: new Color(color.r, color.g, color.b, opacity),\n\t\t\t\t\t\tto: tintColor.clone(),\n\t\t\t\t\t\tlerpColor: new Color()\n\t\t\t\t};\n\t\t}\n\t\t_updateTintTween() {\n\t\t\t\tconst elapsedTime = now() - this._tweenInfo.startTime;\n\t\t\t\tlet elapsedProportion = this.fadeDuration === 0 ? 1 : elapsedTime / this.fadeDuration;\n\t\t\t\telapsedProportion = math.clamp(elapsedProportion, 0, 1);\n\t\t\t\tif (Math.abs(elapsedProportion - 1) > 1e-5) {\n\t\t\t\t\t\tconst lerpColor = this._tweenInfo.lerpColor;\n\t\t\t\t\t\tlerpColor.lerp(this._tweenInfo.from, this._tweenInfo.to, elapsedProportion);\n\t\t\t\t\t\tthis._applyTintImmediately(new Color(lerpColor.r, lerpColor.g, lerpColor.b, lerpColor.a));\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._applyTintImmediately(this._tweenInfo.to);\n\t\t\t\t\t\tthis._cancelTween();\n\t\t\t\t}\n\t\t}\n\t\t_cancelTween() {\n\t\t\t\tdelete this._tweenInfo;\n\t\t}\n\t\tonUpdate() {\n\t\t\t\tif (this._tweenInfo) {\n\t\t\t\t\t\tthis._updateTintTween();\n\t\t\t\t}\n\t\t}\n\t\tonEnable() {\n\t\t\t\tthis._isHovering = false;\n\t\t\t\tthis._hoveringCounter = 0;\n\t\t\t\tthis._isPressed = false;\n\t\t\t\tthis._toggleHitElementListeners('on');\n\t\t\t\tthis._forceReapplyVisualState();\n\t\t}\n\t\tonDisable() {\n\t\t\t\tthis._toggleHitElementListeners('off');\n\t\t\t\tthis._resetToDefaultVisualState(this.transitionMode);\n\t\t}\n\t\tonRemove() {\n\t\t\t\tthis._imageEntityUnsubscribe();\n\t\t\t\tthis._toggleLifecycleListeners('off', this.system);\n\t\t\t\tthis.onDisable();\n\t\t}\n\t\tresolveDuplicatedEntityReferenceProperties(oldButton, duplicatedIdsMap) {\n\t\t\t\tif (oldButton.imageEntity) {\n\t\t\t\t\t\tthis.imageEntity = duplicatedIdsMap[oldButton.imageEntity.getGuid()];\n\t\t\t\t}\n\t\t}\n}\nfunction toColor3(color4) {\n\t\treturn new Color(color4.r, color4.g, color4.b);\n}\n\nclass ButtonComponentData {\n\t\tconstructor(){\n\t\t\t\tthis.enabled = true;\n\t\t\t\tthis.active = true;\n\t\t\t\tthis.imageEntity = null;\n\t\t\t\tthis.hitPadding = new Vec4();\n\t\t\t\tthis.transitionMode = BUTTON_TRANSITION_MODE_TINT;\n\t\t\t\tthis.hoverTint = new Color(0.75, 0.75, 0.75);\n\t\t\t\tthis.pressedTint = new Color(0.5, 0.5, 0.5);\n\t\t\t\tthis.inactiveTint = new Color(0.25, 0.25, 0.25);\n\t\t\t\tthis.fadeDuration = 0;\n\t\t\t\tthis.hoverSpriteAsset = null;\n\t\t\t\tthis.hoverSpriteFrame = 0;\n\t\t\t\tthis.pressedSpriteAsset = null;\n\t\t\t\tthis.pressedSpriteFrame = 0;\n\t\t\t\tthis.inactiveSpriteAsset = null;\n\t\t\t\tthis.inactiveSpriteFrame = 0;\n\t\t}\n}\n\nconst _schema$h = [\n\t\t'enabled',\n\t\t'active',\n\t\t{\n\t\t\t\tname: 'hitPadding',\n\t\t\t\ttype: 'vec4'\n\t\t},\n\t\t'transitionMode',\n\t\t{\n\t\t\t\tname: 'hoverTint',\n\t\t\t\ttype: 'rgba'\n\t\t},\n\t\t{\n\t\t\t\tname: 'pressedTint',\n\t\t\t\ttype: 'rgba'\n\t\t},\n\t\t{\n\t\t\t\tname: 'inactiveTint',\n\t\t\t\ttype: 'rgba'\n\t\t},\n\t\t'fadeDuration',\n\t\t'hoverSpriteAsset',\n\t\t'hoverSpriteFrame',\n\t\t'pressedSpriteAsset',\n\t\t'pressedSpriteFrame',\n\t\t'inactiveSpriteAsset',\n\t\t'inactiveSpriteFrame'\n];\nclass ButtonComponentSystem extends ComponentSystem {\n\t\tconstructor(app){\n\t\t\t\tsuper(app);\n\t\t\t\tthis.id = 'button';\n\t\t\t\tthis.ComponentType = ButtonComponent;\n\t\t\t\tthis.DataType = ButtonComponentData;\n\t\t\t\tthis.schema = _schema$h;\n\t\t\t\tthis.on('beforeremove', this._onRemoveComponent, this);\n\t\t\t\tthis.app.systems.on('update', this.onUpdate, this);\n\t\t}\n\t\tinitializeComponentData(component, data, properties) {\n\t\t\t\tcomponent.imageEntity = data.imageEntity;\n\t\t\t\tsuper.initializeComponentData(component, data, _schema$h);\n\t\t}\n\t\tonUpdate(dt) {\n\t\t\t\tconst components = this.store;\n\t\t\t\tfor(const id in components){\n\t\t\t\t\t\tconst entity = components[id].entity;\n\t\t\t\t\t\tconst component = entity.button;\n\t\t\t\t\t\tif (component.enabled && entity.enabled) {\n\t\t\t\t\t\t\t\tcomponent.onUpdate();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_onRemoveComponent(entity, component) {\n\t\t\t\tcomponent.onRemove();\n\t\t}\n\t\tdestroy() {\n\t\t\t\tsuper.destroy();\n\t\t\t\tthis.app.systems.off('update', this.onUpdate, this);\n\t\t}\n}\n\nconst _vec3$1 = new Vec3();\nconst _quat = new Quat();\nclass CollisionComponent extends Component {\n\t\tstatic{\n\t\t\t\tthis.EVENT_CONTACT = 'contact';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_COLLISIONSTART = 'collisionstart';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_COLLISIONEND = 'collisionend';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_TRIGGERENTER = 'triggerenter';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_TRIGGERLEAVE = 'triggerleave';\n\t\t}\n\t\tconstructor(system, entity){\n\t\t\t\tsuper(system, entity), this._compoundParent = null, this._hasOffset = false;\n\t\t\t\tthis.entity.on('insert', this._onInsert, this);\n\t\t\t\tthis.on('set_type', this.onSetType, this);\n\t\t\t\tthis.on('set_convexHull', this.onSetModel, this);\n\t\t\t\tthis.on('set_halfExtents', this.onSetHalfExtents, this);\n\t\t\t\tthis.on('set_linearOffset', this.onSetOffset, this);\n\t\t\t\tthis.on('set_angularOffset', this.onSetOffset, this);\n\t\t\t\tthis.on('set_radius', this.onSetRadius, this);\n\t\t\t\tthis.on('set_height', this.onSetHeight, this);\n\t\t\t\tthis.on('set_axis', this.onSetAxis, this);\n\t\t\t\tthis.on('set_asset', this.onSetAsset, this);\n\t\t\t\tthis.on('set_renderAsset', this.onSetRenderAsset, this);\n\t\t\t\tthis.on('set_model', this.onSetModel, this);\n\t\t\t\tthis.on('set_render', this.onSetRender, this);\n\t\t}\n\t\tget data() {\n\t\t\t\tconst record = this.system.store[this.entity.getGuid()];\n\t\t\t\treturn record ? record.data : null;\n\t\t}\n\t\tset enabled(arg) {\n\t\t\t\tthis._setValue('enabled', arg);\n\t\t}\n\t\tget enabled() {\n\t\t\t\treturn this.data.enabled;\n\t\t}\n\t\tset type(arg) {\n\t\t\t\tthis._setValue('type', arg);\n\t\t}\n\t\tget type() {\n\t\t\t\treturn this.data.type;\n\t\t}\n\t\tset halfExtents(arg) {\n\t\t\t\tthis._setValue('halfExtents', arg);\n\t\t}\n\t\tget halfExtents() {\n\t\t\t\treturn this.data.halfExtents;\n\t\t}\n\t\tset linearOffset(arg) {\n\t\t\t\tthis._setValue('linearOffset', arg);\n\t\t}\n\t\tget linearOffset() {\n\t\t\t\treturn this.data.linearOffset;\n\t\t}\n\t\tset angularOffset(arg) {\n\t\t\t\tthis._setValue('angularOffset', arg);\n\t\t}\n\t\tget angularOffset() {\n\t\t\t\treturn this.data.angularOffset;\n\t\t}\n\t\tset radius(arg) {\n\t\t\t\tthis._setValue('radius', arg);\n\t\t}\n\t\tget radius() {\n\t\t\t\treturn this.data.radius;\n\t\t}\n\t\tset axis(arg) {\n\t\t\t\tthis._setValue('axis', arg);\n\t\t}\n\t\tget axis() {\n\t\t\t\treturn this.data.axis;\n\t\t}\n\t\tset height(arg) {\n\t\t\t\tthis._setValue('height', arg);\n\t\t}\n\t\tget height() {\n\t\t\t\treturn this.data.height;\n\t\t}\n\t\tset asset(arg) {\n\t\t\t\tthis._setValue('asset', arg);\n\t\t}\n\t\tget asset() {\n\t\t\t\treturn this.data.asset;\n\t\t}\n\t\tset renderAsset(arg) {\n\t\t\t\tthis._setValue('renderAsset', arg);\n\t\t}\n\t\tget renderAsset() {\n\t\t\t\treturn this.data.renderAsset;\n\t\t}\n\t\tset convexHull(arg) {\n\t\t\t\tthis._setValue('convexHull', arg);\n\t\t}\n\t\tget convexHull() {\n\t\t\t\treturn this.data.convexHull;\n\t\t}\n\t\tset shape(arg) {\n\t\t\t\tthis._setValue('shape', arg);\n\t\t}\n\t\tget shape() {\n\t\t\t\treturn this.data.shape;\n\t\t}\n\t\tset model(arg) {\n\t\t\t\tthis._setValue('model', arg);\n\t\t}\n\t\tget model() {\n\t\t\t\treturn this.data.model;\n\t\t}\n\t\tset render(arg) {\n\t\t\t\tthis._setValue('render', arg);\n\t\t}\n\t\tget render() {\n\t\t\t\treturn this.data.render;\n\t\t}\n\t\tset checkVertexDuplicates(arg) {\n\t\t\t\tthis._setValue('checkVertexDuplicates', arg);\n\t\t}\n\t\tget checkVertexDuplicates() {\n\t\t\t\treturn this.data.checkVertexDuplicates;\n\t\t}\n\t\t_setValue(name, value) {\n\t\t\t\tconst data = this.data;\n\t\t\t\tconst oldValue = data[name];\n\t\t\t\tdata[name] = value;\n\t\t\t\tthis.fire('set', name, oldValue, value);\n\t\t}\n\t\tonSetType(name, oldValue, newValue) {\n\t\t\t\tif (oldValue !== newValue) {\n\t\t\t\t\t\tthis.system.changeType(this, oldValue, newValue);\n\t\t\t\t}\n\t\t}\n\t\tonSetHalfExtents(name, oldValue, newValue) {\n\t\t\t\tconst t = this.data.type;\n\t\t\t\tif (this.data.initialized && t === 'box') {\n\t\t\t\t\t\tthis.system.recreatePhysicalShapes(this);\n\t\t\t\t}\n\t\t}\n\t\tonSetOffset(name, oldValue, newValue) {\n\t\t\t\tthis._hasOffset = !this.data.linearOffset.equals(Vec3.ZERO) || !this.data.angularOffset.equals(Quat.IDENTITY);\n\t\t\t\tif (this.data.initialized) {\n\t\t\t\t\t\tthis.system.recreatePhysicalShapes(this);\n\t\t\t\t}\n\t\t}\n\t\tonSetRadius(name, oldValue, newValue) {\n\t\t\t\tconst t = this.data.type;\n\t\t\t\tif (this.data.initialized && (t === 'sphere' || t === 'capsule' || t === 'cylinder' || t === 'cone')) {\n\t\t\t\t\t\tthis.system.recreatePhysicalShapes(this);\n\t\t\t\t}\n\t\t}\n\t\tonSetHeight(name, oldValue, newValue) {\n\t\t\t\tconst t = this.data.type;\n\t\t\t\tif (this.data.initialized && (t === 'capsule' || t === 'cylinder' || t === 'cone')) {\n\t\t\t\t\t\tthis.system.recreatePhysicalShapes(this);\n\t\t\t\t}\n\t\t}\n\t\tonSetAxis(name, oldValue, newValue) {\n\t\t\t\tconst t = this.data.type;\n\t\t\t\tif (this.data.initialized && (t === 'capsule' || t === 'cylinder' || t === 'cone')) {\n\t\t\t\t\t\tthis.system.recreatePhysicalShapes(this);\n\t\t\t\t}\n\t\t}\n\t\tonSetAsset(name, oldValue, newValue) {\n\t\t\t\tconst assets = this.system.app.assets;\n\t\t\t\tif (oldValue) {\n\t\t\t\t\t\tconst asset = assets.get(oldValue);\n\t\t\t\t\t\tif (asset) {\n\t\t\t\t\t\t\t\tasset.off('remove', this.onAssetRemoved, this);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (newValue) {\n\t\t\t\t\t\tif (newValue instanceof Asset) {\n\t\t\t\t\t\t\t\tthis.data.asset = newValue.id;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst asset = assets.get(this.data.asset);\n\t\t\t\t\t\tif (asset) {\n\t\t\t\t\t\t\t\tasset.off('remove', this.onAssetRemoved, this);\n\t\t\t\t\t\t\t\tasset.on('remove', this.onAssetRemoved, this);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this.data.initialized && this.data.type === 'mesh') {\n\t\t\t\t\t\tif (!newValue) {\n\t\t\t\t\t\t\t\tthis.data.model = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.system.recreatePhysicalShapes(this);\n\t\t\t\t}\n\t\t}\n\t\tonSetRenderAsset(name, oldValue, newValue) {\n\t\t\t\tconst assets = this.system.app.assets;\n\t\t\t\tif (oldValue) {\n\t\t\t\t\t\tconst asset = assets.get(oldValue);\n\t\t\t\t\t\tif (asset) {\n\t\t\t\t\t\t\t\tasset.off('remove', this.onRenderAssetRemoved, this);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (newValue) {\n\t\t\t\t\t\tif (newValue instanceof Asset) {\n\t\t\t\t\t\t\t\tthis.data.renderAsset = newValue.id;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst asset = assets.get(this.data.renderAsset);\n\t\t\t\t\t\tif (asset) {\n\t\t\t\t\t\t\t\tasset.off('remove', this.onRenderAssetRemoved, this);\n\t\t\t\t\t\t\t\tasset.on('remove', this.onRenderAssetRemoved, this);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this.data.initialized && this.data.type === 'mesh') {\n\t\t\t\t\t\tif (!newValue) {\n\t\t\t\t\t\t\t\tthis.data.render = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.system.recreatePhysicalShapes(this);\n\t\t\t\t}\n\t\t}\n\t\tonSetModel(name, oldValue, newValue) {\n\t\t\t\tif (this.data.initialized && this.data.type === 'mesh') {\n\t\t\t\t\t\tthis.system.implementations.mesh.doRecreatePhysicalShape(this);\n\t\t\t\t}\n\t\t}\n\t\tonSetRender(name, oldValue, newValue) {\n\t\t\t\tthis.onSetModel(name, oldValue, newValue);\n\t\t}\n\t\tonAssetRemoved(asset) {\n\t\t\t\tasset.off('remove', this.onAssetRemoved, this);\n\t\t\t\tif (this.data.asset === asset.id) {\n\t\t\t\t\t\tthis.asset = null;\n\t\t\t\t}\n\t\t}\n\t\tonRenderAssetRemoved(asset) {\n\t\t\t\tasset.off('remove', this.onRenderAssetRemoved, this);\n\t\t\t\tif (this.data.renderAsset === asset.id) {\n\t\t\t\t\t\tthis.renderAsset = null;\n\t\t\t\t}\n\t\t}\n\t\tgetCompoundChildShapeIndex(shape) {\n\t\t\t\tconst compound = this.data.shape;\n\t\t\t\tconst shapes = compound.getNumChildShapes();\n\t\t\t\tfor(let i = 0; i < shapes; i++){\n\t\t\t\t\t\tconst childShape = compound.getChildShape(i);\n\t\t\t\t\t\tif (Ammo.getPointer(childShape) === Ammo.getPointer(shape)) {\n\t\t\t\t\t\t\t\treturn i;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\t_onInsert(parent) {\n\t\t\t\tif (typeof Ammo === 'undefined') {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this._compoundParent) {\n\t\t\t\t\t\tthis.system.recreatePhysicalShapes(this);\n\t\t\t\t} else if (!this.entity.rigidbody) {\n\t\t\t\t\t\tlet ancestor = this.entity.parent;\n\t\t\t\t\t\twhile(ancestor){\n\t\t\t\t\t\t\t\tif (ancestor.collision && ancestor.collision.type === 'compound') {\n\t\t\t\t\t\t\t\t\t\tif (ancestor.collision.shape.getNumChildShapes() === 0) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.system.recreatePhysicalShapes(ancestor.collision);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.system.recreatePhysicalShapes(this);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tancestor = ancestor.parent;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_updateCompound() {\n\t\t\t\tconst entity = this.entity;\n\t\t\t\tif (entity._dirtyWorld) {\n\t\t\t\t\t\tlet dirty = entity._dirtyLocal;\n\t\t\t\t\t\tlet parent = entity;\n\t\t\t\t\t\twhile(parent && !dirty){\n\t\t\t\t\t\t\t\tif (parent.collision && parent.collision === this._compoundParent) {\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (parent._dirtyLocal) {\n\t\t\t\t\t\t\t\t\t\tdirty = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tparent = parent.parent;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (dirty) {\n\t\t\t\t\t\t\t\tentity.forEach(this.system.implementations.compound._updateEachDescendantTransform, entity);\n\t\t\t\t\t\t\t\tconst bodyComponent = this._compoundParent.entity.rigidbody;\n\t\t\t\t\t\t\t\tif (bodyComponent) {\n\t\t\t\t\t\t\t\t\t\tbodyComponent.activate();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tgetShapePosition() {\n\t\t\t\tconst pos = this.entity.getPosition();\n\t\t\t\tif (this._hasOffset) {\n\t\t\t\t\t\tconst rot = this.entity.getRotation();\n\t\t\t\t\t\tconst lo = this.data.linearOffset;\n\t\t\t\t\t\t_quat.copy(rot).transformVector(lo, _vec3$1);\n\t\t\t\t\t\treturn _vec3$1.add(pos);\n\t\t\t\t}\n\t\t\t\treturn pos;\n\t\t}\n\t\tgetShapeRotation() {\n\t\t\t\tconst rot = this.entity.getRotation();\n\t\t\t\tif (this._hasOffset) {\n\t\t\t\t\t\treturn _quat.copy(rot).mul(this.data.angularOffset);\n\t\t\t\t}\n\t\t\t\treturn rot;\n\t\t}\n\t\tonEnable() {\n\t\t\t\tif (this.data.type === 'mesh' && (this.data.asset || this.data.renderAsset) && this.data.initialized) {\n\t\t\t\t\t\tconst asset = this.system.app.assets.get(this.data.asset || this.data.renderAsset);\n\t\t\t\t\t\tif (asset && (!asset.resource || !this.data.shape)) {\n\t\t\t\t\t\t\t\tthis.system.recreatePhysicalShapes(this);\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this.entity.rigidbody) {\n\t\t\t\t\t\tif (this.entity.rigidbody.enabled) {\n\t\t\t\t\t\t\t\tthis.entity.rigidbody.enableSimulation();\n\t\t\t\t\t\t}\n\t\t\t\t} else if (this._compoundParent && this !== this._compoundParent) {\n\t\t\t\t\t\tif (this._compoundParent.shape.getNumChildShapes() === 0) {\n\t\t\t\t\t\t\t\tthis.system.recreatePhysicalShapes(this._compoundParent);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst transform = this.system._getNodeTransform(this.entity, this._compoundParent.entity);\n\t\t\t\t\t\t\t\tthis._compoundParent.shape.addChildShape(transform, this.data.shape);\n\t\t\t\t\t\t\t\tAmmo.destroy(transform);\n\t\t\t\t\t\t\t\tif (this._compoundParent.entity.rigidbody) {\n\t\t\t\t\t\t\t\t\t\tthis._compoundParent.entity.rigidbody.activate();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t} else if (this.entity.trigger) {\n\t\t\t\t\t\tthis.entity.trigger.enable();\n\t\t\t\t}\n\t\t}\n\t\tonDisable() {\n\t\t\t\tif (this.entity.rigidbody) {\n\t\t\t\t\t\tthis.entity.rigidbody.disableSimulation();\n\t\t\t\t} else if (this._compoundParent && this !== this._compoundParent) {\n\t\t\t\t\t\tif (!this._compoundParent.entity._destroying) {\n\t\t\t\t\t\t\t\tthis.system._removeCompoundChild(this._compoundParent, this.data.shape);\n\t\t\t\t\t\t\t\tif (this._compoundParent.entity.rigidbody) {\n\t\t\t\t\t\t\t\t\t\tthis._compoundParent.entity.rigidbody.activate();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t} else if (this.entity.trigger) {\n\t\t\t\t\t\tthis.entity.trigger.disable();\n\t\t\t\t}\n\t\t}\n\t\tonBeforeRemove() {\n\t\t\t\tif (this.asset) {\n\t\t\t\t\t\tthis.asset = null;\n\t\t\t\t}\n\t\t\t\tif (this.renderAsset) {\n\t\t\t\t\t\tthis.renderAsset = null;\n\t\t\t\t}\n\t\t\t\tthis.entity.off('insert', this._onInsert, this);\n\t\t\t\tthis.off();\n\t\t}\n}\n\nclass CollisionComponentData {\n\t\tconstructor(){\n\t\t\t\tthis.enabled = true;\n\t\t\t\tthis.type = 'box';\n\t\t\t\tthis.halfExtents = new Vec3(0.5, 0.5, 0.5);\n\t\t\t\tthis.linearOffset = new Vec3();\n\t\t\t\tthis.angularOffset = new Quat();\n\t\t\t\tthis.radius = 0.5;\n\t\t\t\tthis.axis = 1;\n\t\t\t\tthis.height = 2;\n\t\t\t\tthis.convexHull = false;\n\t\t\t\tthis.asset = null;\n\t\t\t\tthis.renderAsset = null;\n\t\t\t\tthis.checkVertexDuplicates = true;\n\t\t\t\tthis.shape = null;\n\t\t\t\tthis.model = null;\n\t\t\t\tthis.render = null;\n\t\t\t\tthis.initialized = false;\n\t\t}\n}\n\nconst BODYTYPE_STATIC = 'static';\nconst BODYTYPE_DYNAMIC = 'dynamic';\nconst BODYTYPE_KINEMATIC = 'kinematic';\nconst BODYFLAG_STATIC_OBJECT = 1;\nconst BODYFLAG_KINEMATIC_OBJECT = 2;\nconst BODYFLAG_NORESPONSE_OBJECT = 4;\nconst BODYSTATE_ACTIVE_TAG = 1;\nconst BODYSTATE_ISLAND_SLEEPING = 2;\nconst BODYSTATE_WANTS_DEACTIVATION = 3;\nconst BODYSTATE_DISABLE_DEACTIVATION = 4;\nconst BODYSTATE_DISABLE_SIMULATION = 5;\nconst BODYGROUP_NONE = 0;\nconst BODYGROUP_DEFAULT = 1;\nconst BODYGROUP_DYNAMIC = 1;\nconst BODYGROUP_STATIC = 2;\nconst BODYGROUP_KINEMATIC = 4;\nconst BODYGROUP_ENGINE_1 = 8;\nconst BODYGROUP_TRIGGER = 16;\nconst BODYGROUP_ENGINE_2 = 32;\nconst BODYGROUP_ENGINE_3 = 64;\nconst BODYGROUP_USER_1 = 128;\nconst BODYGROUP_USER_2 = 256;\nconst BODYGROUP_USER_3 = 512;\nconst BODYGROUP_USER_4 = 1024;\nconst BODYGROUP_USER_5 = 2048;\nconst BODYGROUP_USER_6 = 4096;\nconst BODYGROUP_USER_7 = 8192;\nconst BODYGROUP_USER_8 = 16384;\nconst BODYMASK_NONE = 0;\nconst BODYMASK_ALL = 65535;\nconst BODYMASK_STATIC = 2;\nconst BODYMASK_NOT_STATIC = 65535 ^ 2;\nconst BODYMASK_NOT_STATIC_KINEMATIC = 65535 ^ (2 | 4);\n\nlet _ammoVec1$1, _ammoQuat$1, _ammoTransform$1;\nclass Trigger {\n\t\tconstructor(app, component, data){\n\t\t\t\tthis.entity = component.entity;\n\t\t\t\tthis.component = component;\n\t\t\t\tthis.app = app;\n\t\t\t\tif (typeof Ammo !== 'undefined' && !_ammoVec1$1) {\n\t\t\t\t\t\t_ammoVec1$1 = new Ammo.btVector3();\n\t\t\t\t\t\t_ammoQuat$1 = new Ammo.btQuaternion();\n\t\t\t\t\t\t_ammoTransform$1 = new Ammo.btTransform();\n\t\t\t\t}\n\t\t\t\tthis.initialize(data);\n\t\t}\n\t\tinitialize(data) {\n\t\t\t\tconst entity = this.entity;\n\t\t\t\tconst shape = data.shape;\n\t\t\t\tif (shape && typeof Ammo !== 'undefined') {\n\t\t\t\t\t\tif (entity.trigger) {\n\t\t\t\t\t\t\t\tentity.trigger.destroy();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst mass = 1;\n\t\t\t\t\t\tconst component = this.component;\n\t\t\t\t\t\tif (component) {\n\t\t\t\t\t\t\t\tconst bodyPos = component.getShapePosition();\n\t\t\t\t\t\t\t\tconst bodyRot = component.getShapeRotation();\n\t\t\t\t\t\t\t\t_ammoVec1$1.setValue(bodyPos.x, bodyPos.y, bodyPos.z);\n\t\t\t\t\t\t\t\t_ammoQuat$1.setValue(bodyRot.x, bodyRot.y, bodyRot.z, bodyRot.w);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst pos = entity.getPosition();\n\t\t\t\t\t\t\t\tconst rot = entity.getRotation();\n\t\t\t\t\t\t\t\t_ammoVec1$1.setValue(pos.x, pos.y, pos.z);\n\t\t\t\t\t\t\t\t_ammoQuat$1.setValue(rot.x, rot.y, rot.z, rot.w);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t_ammoTransform$1.setOrigin(_ammoVec1$1);\n\t\t\t\t\t\t_ammoTransform$1.setRotation(_ammoQuat$1);\n\t\t\t\t\t\tconst body = this.app.systems.rigidbody.createBody(mass, shape, _ammoTransform$1);\n\t\t\t\t\t\tbody.setRestitution(0);\n\t\t\t\t\t\tbody.setFriction(0);\n\t\t\t\t\t\tbody.setDamping(0, 0);\n\t\t\t\t\t\t_ammoVec1$1.setValue(0, 0, 0);\n\t\t\t\t\t\tbody.setLinearFactor(_ammoVec1$1);\n\t\t\t\t\t\tbody.setAngularFactor(_ammoVec1$1);\n\t\t\t\t\t\tbody.setCollisionFlags(body.getCollisionFlags() | BODYFLAG_NORESPONSE_OBJECT);\n\t\t\t\t\t\tbody.entity = entity;\n\t\t\t\t\t\tthis.body = body;\n\t\t\t\t\t\tif (this.component.enabled && entity.enabled) {\n\t\t\t\t\t\t\t\tthis.enable();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tdestroy() {\n\t\t\t\tif (!this.body) return;\n\t\t\t\tthis.disable();\n\t\t\t\tthis.app.systems.rigidbody.destroyBody(this.body);\n\t\t\t\tthis.body = null;\n\t\t}\n\t\t_getEntityTransform(transform) {\n\t\t\t\tconst component = this.component;\n\t\t\t\tif (component) {\n\t\t\t\t\t\tconst bodyPos = component.getShapePosition();\n\t\t\t\t\t\tconst bodyRot = component.getShapeRotation();\n\t\t\t\t\t\t_ammoVec1$1.setValue(bodyPos.x, bodyPos.y, bodyPos.z);\n\t\t\t\t\t\t_ammoQuat$1.setValue(bodyRot.x, bodyRot.y, bodyRot.z, bodyRot.w);\n\t\t\t\t} else {\n\t\t\t\t\t\tconst pos = this.entity.getPosition();\n\t\t\t\t\t\tconst rot = this.entity.getRotation();\n\t\t\t\t\t\t_ammoVec1$1.setValue(pos.x, pos.y, pos.z);\n\t\t\t\t\t\t_ammoQuat$1.setValue(rot.x, rot.y, rot.z, rot.w);\n\t\t\t\t}\n\t\t\t\ttransform.setOrigin(_ammoVec1$1);\n\t\t\t\ttransform.setRotation(_ammoQuat$1);\n\t\t}\n\t\tupdateTransform() {\n\t\t\t\tthis._getEntityTransform(_ammoTransform$1);\n\t\t\t\tconst body = this.body;\n\t\t\t\tbody.setWorldTransform(_ammoTransform$1);\n\t\t\t\tbody.activate();\n\t\t}\n\t\tenable() {\n\t\t\t\tconst body = this.body;\n\t\t\t\tif (!body) return;\n\t\t\t\tconst system = this.app.systems.rigidbody;\n\t\t\t\tconst idx = system._triggers.indexOf(this);\n\t\t\t\tif (idx < 0) {\n\t\t\t\t\t\tsystem.addBody(body, BODYGROUP_TRIGGER, BODYMASK_NOT_STATIC ^ BODYGROUP_TRIGGER);\n\t\t\t\t\t\tsystem._triggers.push(this);\n\t\t\t\t}\n\t\t\t\tbody.forceActivationState(BODYSTATE_ACTIVE_TAG);\n\t\t\t\tthis.updateTransform();\n\t\t}\n\t\tdisable() {\n\t\t\t\tconst body = this.body;\n\t\t\t\tif (!body) return;\n\t\t\t\tconst system = this.app.systems.rigidbody;\n\t\t\t\tconst idx = system._triggers.indexOf(this);\n\t\t\t\tif (idx > -1) {\n\t\t\t\t\t\tsystem.removeBody(body);\n\t\t\t\t\t\tsystem._triggers.splice(idx, 1);\n\t\t\t\t}\n\t\t\t\tbody.forceActivationState(BODYSTATE_DISABLE_SIMULATION);\n\t\t}\n}\n\nconst mat4 = new Mat4();\nconst p1 = new Vec3();\nconst p2 = new Vec3();\nconst quat$1 = new Quat();\nconst tempGraphNode = new GraphNode();\nconst _schema$g = [\n\t\t'enabled',\n\t\t'type',\n\t\t'halfExtents',\n\t\t'linearOffset',\n\t\t'angularOffset',\n\t\t'radius',\n\t\t'axis',\n\t\t'height',\n\t\t'convexHull',\n\t\t'asset',\n\t\t'renderAsset',\n\t\t'shape',\n\t\t'model',\n\t\t'render',\n\t\t'checkVertexDuplicates'\n];\nclass CollisionSystemImpl {\n\t\tconstructor(system){\n\t\t\t\tthis.system = system;\n\t\t}\n\t\tbeforeInitialize(component, data) {\n\t\t\t\tdata.shape = null;\n\t\t\t\tdata.model = new Model();\n\t\t\t\tdata.model.graph = new GraphNode();\n\t\t}\n\t\tafterInitialize(component, data) {\n\t\t\t\tthis.recreatePhysicalShapes(component);\n\t\t\t\tcomponent.data.initialized = true;\n\t\t}\n\t\treset(component, data) {\n\t\t\t\tthis.beforeInitialize(component, data);\n\t\t\t\tthis.afterInitialize(component, data);\n\t\t}\n\t\trecreatePhysicalShapes(component) {\n\t\t\t\tconst entity = component.entity;\n\t\t\t\tconst data = component.data;\n\t\t\t\tif (typeof Ammo !== 'undefined') {\n\t\t\t\t\t\tif (entity.trigger) {\n\t\t\t\t\t\t\t\tentity.trigger.destroy();\n\t\t\t\t\t\t\t\tdelete entity.trigger;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (data.shape) {\n\t\t\t\t\t\t\t\tif (component._compoundParent) {\n\t\t\t\t\t\t\t\t\t\tif (component !== component._compoundParent) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.system._removeCompoundChild(component._compoundParent, data.shape);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (component._compoundParent.entity.rigidbody) {\n\t\t\t\t\t\t\t\t\t\t\t\tcomponent._compoundParent.entity.rigidbody.activate();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.destroyShape(data);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdata.shape = this.createPhysicalShape(component.entity, data);\n\t\t\t\t\t\tconst firstCompoundChild = !component._compoundParent;\n\t\t\t\t\t\tif (data.type === 'compound' && (!component._compoundParent || component === component._compoundParent)) {\n\t\t\t\t\t\t\t\tcomponent._compoundParent = component;\n\t\t\t\t\t\t\t\tentity.forEach(this._addEachDescendant, component);\n\t\t\t\t\t\t} else if (data.type !== 'compound') {\n\t\t\t\t\t\t\t\tif (!component.rigidbody) {\n\t\t\t\t\t\t\t\t\t\tcomponent._compoundParent = null;\n\t\t\t\t\t\t\t\t\t\tlet parent = entity.parent;\n\t\t\t\t\t\t\t\t\t\twhile(parent){\n\t\t\t\t\t\t\t\t\t\t\t\tif (parent.collision && parent.collision.type === 'compound') {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcomponent._compoundParent = parent.collision;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tparent = parent.parent;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (component._compoundParent) {\n\t\t\t\t\t\t\t\tif (component !== component._compoundParent) {\n\t\t\t\t\t\t\t\t\t\tif (firstCompoundChild && component._compoundParent.shape.getNumChildShapes() === 0) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.system.recreatePhysicalShapes(component._compoundParent);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.system.updateCompoundChildTransform(entity, true);\n\t\t\t\t\t\t\t\t\t\t\t\tif (component._compoundParent.entity.rigidbody) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcomponent._compoundParent.entity.rigidbody.activate();\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (entity.rigidbody) {\n\t\t\t\t\t\t\t\tentity.rigidbody.disableSimulation();\n\t\t\t\t\t\t\t\tentity.rigidbody.createBody();\n\t\t\t\t\t\t\t\tif (entity.enabled && entity.rigidbody.enabled) {\n\t\t\t\t\t\t\t\t\t\tentity.rigidbody.enableSimulation();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (!component._compoundParent) {\n\t\t\t\t\t\t\t\tif (!entity.trigger) {\n\t\t\t\t\t\t\t\t\t\tentity.trigger = new Trigger(this.system.app, component, data);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tentity.trigger.initialize(data);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tcreatePhysicalShape(entity, data) {\n\t\t\t\treturn undefined;\n\t\t}\n\t\tupdateTransform(component, position, rotation, scale) {\n\t\t\t\tif (component.entity.trigger) {\n\t\t\t\t\t\tcomponent.entity.trigger.updateTransform();\n\t\t\t\t}\n\t\t}\n\t\tdestroyShape(data) {\n\t\t\t\tif (data.shape) {\n\t\t\t\t\t\tAmmo.destroy(data.shape);\n\t\t\t\t\t\tdata.shape = null;\n\t\t\t\t}\n\t\t}\n\t\tbeforeRemove(entity, component) {\n\t\t\t\tif (component.data.shape) {\n\t\t\t\t\t\tif (component._compoundParent && !component._compoundParent.entity._destroying) {\n\t\t\t\t\t\t\t\tthis.system._removeCompoundChild(component._compoundParent, component.data.shape);\n\t\t\t\t\t\t\t\tif (component._compoundParent.entity.rigidbody) {\n\t\t\t\t\t\t\t\t\t\tcomponent._compoundParent.entity.rigidbody.activate();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcomponent._compoundParent = null;\n\t\t\t\t\t\tthis.destroyShape(component.data);\n\t\t\t\t}\n\t\t}\n\t\tremove(entity, data) {\n\t\t\t\tif (entity.rigidbody && entity.rigidbody.body) {\n\t\t\t\t\t\tentity.rigidbody.disableSimulation();\n\t\t\t\t}\n\t\t\t\tif (entity.trigger) {\n\t\t\t\t\t\tentity.trigger.destroy();\n\t\t\t\t\t\tdelete entity.trigger;\n\t\t\t\t}\n\t\t}\n\t\tclone(entity, clone) {\n\t\t\t\tconst src = this.system.store[entity.getGuid()];\n\t\t\t\tconst data = {\n\t\t\t\t\t\tenabled: src.data.enabled,\n\t\t\t\t\t\ttype: src.data.type,\n\t\t\t\t\t\thalfExtents: [\n\t\t\t\t\t\t\t\tsrc.data.halfExtents.x,\n\t\t\t\t\t\t\t\tsrc.data.halfExtents.y,\n\t\t\t\t\t\t\t\tsrc.data.halfExtents.z\n\t\t\t\t\t\t],\n\t\t\t\t\t\tlinearOffset: [\n\t\t\t\t\t\t\t\tsrc.data.linearOffset.x,\n\t\t\t\t\t\t\t\tsrc.data.linearOffset.y,\n\t\t\t\t\t\t\t\tsrc.data.linearOffset.z\n\t\t\t\t\t\t],\n\t\t\t\t\t\tangularOffset: [\n\t\t\t\t\t\t\t\tsrc.data.angularOffset.x,\n\t\t\t\t\t\t\t\tsrc.data.angularOffset.y,\n\t\t\t\t\t\t\t\tsrc.data.angularOffset.z,\n\t\t\t\t\t\t\t\tsrc.data.angularOffset.w\n\t\t\t\t\t\t],\n\t\t\t\t\t\tradius: src.data.radius,\n\t\t\t\t\t\taxis: src.data.axis,\n\t\t\t\t\t\theight: src.data.height,\n\t\t\t\t\t\tconvexHull: src.data.convexHull,\n\t\t\t\t\t\tasset: src.data.asset,\n\t\t\t\t\t\trenderAsset: src.data.renderAsset,\n\t\t\t\t\t\tmodel: src.data.model,\n\t\t\t\t\t\trender: src.data.render,\n\t\t\t\t\t\tcheckVertexDuplicates: src.data.checkVertexDuplicates\n\t\t\t\t};\n\t\t\t\treturn this.system.addComponent(clone, data);\n\t\t}\n}\nclass CollisionBoxSystemImpl extends CollisionSystemImpl {\n\t\tcreatePhysicalShape(entity, data) {\n\t\t\t\tif (typeof Ammo !== 'undefined') {\n\t\t\t\t\t\tconst he = data.halfExtents;\n\t\t\t\t\t\tconst ammoHe = new Ammo.btVector3(he ? he.x : 0.5, he ? he.y : 0.5, he ? he.z : 0.5);\n\t\t\t\t\t\tconst shape = new Ammo.btBoxShape(ammoHe);\n\t\t\t\t\t\tAmmo.destroy(ammoHe);\n\t\t\t\t\t\treturn shape;\n\t\t\t\t}\n\t\t\t\treturn undefined;\n\t\t}\n}\nclass CollisionSphereSystemImpl extends CollisionSystemImpl {\n\t\tcreatePhysicalShape(entity, data) {\n\t\t\t\tif (typeof Ammo !== 'undefined') {\n\t\t\t\t\t\treturn new Ammo.btSphereShape(data.radius);\n\t\t\t\t}\n\t\t\t\treturn undefined;\n\t\t}\n}\nclass CollisionCapsuleSystemImpl extends CollisionSystemImpl {\n\t\tcreatePhysicalShape(entity, data) {\n\t\t\t\tconst axis = data.axis ?? 1;\n\t\t\t\tconst radius = data.radius ?? 0.5;\n\t\t\t\tconst height = Math.max((data.height ?? 2) - 2 * radius, 0);\n\t\t\t\tlet shape = null;\n\t\t\t\tif (typeof Ammo !== 'undefined') {\n\t\t\t\t\t\tswitch(axis){\n\t\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\t\t\tshape = new Ammo.btCapsuleShapeX(radius, height);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\t\t\tshape = new Ammo.btCapsuleShape(radius, height);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\t\t\tshape = new Ammo.btCapsuleShapeZ(radius, height);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn shape;\n\t\t}\n}\nclass CollisionCylinderSystemImpl extends CollisionSystemImpl {\n\t\tcreatePhysicalShape(entity, data) {\n\t\t\t\tconst axis = data.axis ?? 1;\n\t\t\t\tconst radius = data.radius ?? 0.5;\n\t\t\t\tconst height = data.height ?? 1;\n\t\t\t\tlet halfExtents = null;\n\t\t\t\tlet shape = null;\n\t\t\t\tif (typeof Ammo !== 'undefined') {\n\t\t\t\t\t\tswitch(axis){\n\t\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\t\t\thalfExtents = new Ammo.btVector3(height * 0.5, radius, radius);\n\t\t\t\t\t\t\t\t\t\tshape = new Ammo.btCylinderShapeX(halfExtents);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\t\t\thalfExtents = new Ammo.btVector3(radius, height * 0.5, radius);\n\t\t\t\t\t\t\t\t\t\tshape = new Ammo.btCylinderShape(halfExtents);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\t\t\thalfExtents = new Ammo.btVector3(radius, radius, height * 0.5);\n\t\t\t\t\t\t\t\t\t\tshape = new Ammo.btCylinderShapeZ(halfExtents);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (halfExtents) {\n\t\t\t\t\t\tAmmo.destroy(halfExtents);\n\t\t\t\t}\n\t\t\t\treturn shape;\n\t\t}\n}\nclass CollisionConeSystemImpl extends CollisionSystemImpl {\n\t\tcreatePhysicalShape(entity, data) {\n\t\t\t\tconst axis = data.axis ?? 1;\n\t\t\t\tconst radius = data.radius ?? 0.5;\n\t\t\t\tconst height = data.height ?? 1;\n\t\t\t\tlet shape = null;\n\t\t\t\tif (typeof Ammo !== 'undefined') {\n\t\t\t\t\t\tswitch(axis){\n\t\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\t\t\tshape = new Ammo.btConeShapeX(radius, height);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\t\t\tshape = new Ammo.btConeShape(radius, height);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\t\t\tshape = new Ammo.btConeShapeZ(radius, height);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn shape;\n\t\t}\n}\nclass CollisionMeshSystemImpl extends CollisionSystemImpl {\n\t\tbeforeInitialize(component, data) {}\n\t\tcreateAmmoHull(mesh, node, shape, scale) {\n\t\t\t\tconst hull = new Ammo.btConvexHullShape();\n\t\t\t\tconst point = new Ammo.btVector3();\n\t\t\t\tconst positions = [];\n\t\t\t\tmesh.getPositions(positions);\n\t\t\t\tfor(let i = 0; i < positions.length; i += 3){\n\t\t\t\t\t\tpoint.setValue(positions[i] * scale.x, positions[i + 1] * scale.y, positions[i + 2] * scale.z);\n\t\t\t\t\t\thull.addPoint(point, false);\n\t\t\t\t}\n\t\t\t\tAmmo.destroy(point);\n\t\t\t\thull.recalcLocalAabb();\n\t\t\t\thull.setMargin(0.01);\n\t\t\t\tconst transform = this.system._getNodeTransform(node);\n\t\t\t\tshape.addChildShape(transform, hull);\n\t\t\t\tAmmo.destroy(transform);\n\t\t}\n\t\tcreateAmmoMesh(mesh, node, shape, scale, checkDupes = true) {\n\t\t\t\tconst system = this.system;\n\t\t\t\tlet triMesh;\n\t\t\t\tif (system._triMeshCache[mesh.id]) {\n\t\t\t\t\t\ttriMesh = system._triMeshCache[mesh.id];\n\t\t\t\t} else {\n\t\t\t\t\t\tconst vb = mesh.vertexBuffer;\n\t\t\t\t\t\tconst format = vb.getFormat();\n\t\t\t\t\t\tlet stride, positions;\n\t\t\t\t\t\tfor(let i = 0; i < format.elements.length; i++){\n\t\t\t\t\t\t\t\tconst element = format.elements[i];\n\t\t\t\t\t\t\t\tif (element.name === SEMANTIC_POSITION) {\n\t\t\t\t\t\t\t\t\t\tpositions = new Float32Array(vb.lock(), element.offset);\n\t\t\t\t\t\t\t\t\t\tstride = element.stride / 4;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst indices = [];\n\t\t\t\t\t\tmesh.getIndices(indices);\n\t\t\t\t\t\tconst numTriangles = mesh.primitive[0].count / 3;\n\t\t\t\t\t\tconst v1 = new Ammo.btVector3();\n\t\t\t\t\t\tlet i1, i2, i3;\n\t\t\t\t\t\tconst base = mesh.primitive[0].base;\n\t\t\t\t\t\ttriMesh = new Ammo.btTriangleMesh();\n\t\t\t\t\t\tsystem._triMeshCache[mesh.id] = triMesh;\n\t\t\t\t\t\tconst vertexCache = new Map();\n\t\t\t\t\t\tconst indexedArray = triMesh.getIndexedMeshArray();\n\t\t\t\t\t\tindexedArray.at(0).m_numTriangles = numTriangles;\n\t\t\t\t\t\tconst sx = scale ? scale.x : 1;\n\t\t\t\t\t\tconst sy = scale ? scale.y : 1;\n\t\t\t\t\t\tconst sz = scale ? scale.z : 1;\n\t\t\t\t\t\tconst addVertex = (index)=>{\n\t\t\t\t\t\t\t\tconst x = positions[index * stride] * sx;\n\t\t\t\t\t\t\t\tconst y = positions[index * stride + 1] * sy;\n\t\t\t\t\t\t\t\tconst z = positions[index * stride + 2] * sz;\n\t\t\t\t\t\t\t\tlet idx;\n\t\t\t\t\t\t\t\tif (checkDupes) {\n\t\t\t\t\t\t\t\t\t\tconst str = `${x}:${y}:${z}`;\n\t\t\t\t\t\t\t\t\t\tidx = vertexCache.get(str);\n\t\t\t\t\t\t\t\t\t\tif (idx !== undefined) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn idx;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tv1.setValue(x, y, z);\n\t\t\t\t\t\t\t\t\t\tidx = triMesh.findOrAddVertex(v1, false);\n\t\t\t\t\t\t\t\t\t\tvertexCache.set(str, idx);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tv1.setValue(x, y, z);\n\t\t\t\t\t\t\t\t\t\tidx = triMesh.findOrAddVertex(v1, false);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn idx;\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor(let i = 0; i < numTriangles; i++){\n\t\t\t\t\t\t\t\ti1 = addVertex(indices[base + i * 3]);\n\t\t\t\t\t\t\t\ti2 = addVertex(indices[base + i * 3 + 1]);\n\t\t\t\t\t\t\t\ti3 = addVertex(indices[base + i * 3 + 2]);\n\t\t\t\t\t\t\t\ttriMesh.addIndex(i1);\n\t\t\t\t\t\t\t\ttriMesh.addIndex(i2);\n\t\t\t\t\t\t\t\ttriMesh.addIndex(i3);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tAmmo.destroy(v1);\n\t\t\t\t}\n\t\t\t\tconst triMeshShape = new Ammo.btBvhTriangleMeshShape(triMesh, true);\n\t\t\t\tif (!scale) {\n\t\t\t\t\t\tconst scaling = system._getNodeScaling(node);\n\t\t\t\t\t\ttriMeshShape.setLocalScaling(scaling);\n\t\t\t\t\t\tAmmo.destroy(scaling);\n\t\t\t\t}\n\t\t\t\tconst transform = system._getNodeTransform(node);\n\t\t\t\tshape.addChildShape(transform, triMeshShape);\n\t\t\t\tAmmo.destroy(transform);\n\t\t}\n\t\tcreatePhysicalShape(entity, data) {\n\t\t\t\tif (typeof Ammo === 'undefined') return undefined;\n\t\t\t\tif (data.model || data.render) {\n\t\t\t\t\t\tconst shape = new Ammo.btCompoundShape();\n\t\t\t\t\t\tconst entityTransform = entity.getWorldTransform();\n\t\t\t\t\t\tconst scale = entityTransform.getScale();\n\t\t\t\t\t\tif (data.render) {\n\t\t\t\t\t\t\t\tconst meshes = data.render.meshes;\n\t\t\t\t\t\t\t\tfor(let i = 0; i < meshes.length; i++){\n\t\t\t\t\t\t\t\t\t\tif (data.convexHull) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.createAmmoHull(meshes[i], tempGraphNode, shape, scale);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.createAmmoMesh(meshes[i], tempGraphNode, shape, scale, data.checkVertexDuplicates);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (data.model) {\n\t\t\t\t\t\t\t\tconst meshInstances = data.model.meshInstances;\n\t\t\t\t\t\t\t\tfor(let i = 0; i < meshInstances.length; i++){\n\t\t\t\t\t\t\t\t\t\tthis.createAmmoMesh(meshInstances[i].mesh, meshInstances[i].node, shape, null, data.checkVertexDuplicates);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst vec = new Ammo.btVector3(scale.x, scale.y, scale.z);\n\t\t\t\t\t\t\t\tshape.setLocalScaling(vec);\n\t\t\t\t\t\t\t\tAmmo.destroy(vec);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn shape;\n\t\t\t\t}\n\t\t\t\treturn undefined;\n\t\t}\n\t\trecreatePhysicalShapes(component) {\n\t\t\t\tconst data = component.data;\n\t\t\t\tif (data.renderAsset || data.asset) {\n\t\t\t\t\t\tif (component.enabled && component.entity.enabled) {\n\t\t\t\t\t\t\t\tthis.loadAsset(component, data.renderAsset || data.asset, data.renderAsset ? 'render' : 'model');\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.doRecreatePhysicalShape(component);\n\t\t}\n\t\tloadAsset(component, id, property) {\n\t\t\t\tconst data = component.data;\n\t\t\t\tconst assets = this.system.app.assets;\n\t\t\t\tconst previousPropertyValue = data[property];\n\t\t\t\tconst onAssetFullyReady = (asset)=>{\n\t\t\t\t\t\tif (data[property] !== previousPropertyValue) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdata[property] = asset.resource;\n\t\t\t\t\t\tthis.doRecreatePhysicalShape(component);\n\t\t\t\t};\n\t\t\t\tconst loadAndHandleAsset = (asset)=>{\n\t\t\t\t\t\tasset.ready((asset)=>{\n\t\t\t\t\t\t\t\tif (asset.data.containerAsset) {\n\t\t\t\t\t\t\t\t\t\tconst containerAsset = assets.get(asset.data.containerAsset);\n\t\t\t\t\t\t\t\t\t\tif (containerAsset.loaded) {\n\t\t\t\t\t\t\t\t\t\t\t\tonAssetFullyReady(asset);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tcontainerAsset.ready(()=>{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonAssetFullyReady(asset);\n\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t\tassets.load(containerAsset);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tonAssetFullyReady(asset);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t\tassets.load(asset);\n\t\t\t\t};\n\t\t\t\tconst asset = assets.get(id);\n\t\t\t\tif (asset) {\n\t\t\t\t\t\tloadAndHandleAsset(asset);\n\t\t\t\t} else {\n\t\t\t\t\t\tassets.once(`add:${id}`, loadAndHandleAsset);\n\t\t\t\t}\n\t\t}\n\t\tdoRecreatePhysicalShape(component) {\n\t\t\t\tconst entity = component.entity;\n\t\t\t\tconst data = component.data;\n\t\t\t\tif (data.model || data.render) {\n\t\t\t\t\t\tthis.destroyShape(data);\n\t\t\t\t\t\tdata.shape = this.createPhysicalShape(entity, data);\n\t\t\t\t\t\tif (entity.rigidbody) {\n\t\t\t\t\t\t\t\tentity.rigidbody.disableSimulation();\n\t\t\t\t\t\t\t\tentity.rigidbody.createBody();\n\t\t\t\t\t\t\t\tif (entity.enabled && entity.rigidbody.enabled) {\n\t\t\t\t\t\t\t\t\t\tentity.rigidbody.enableSimulation();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (!entity.trigger) {\n\t\t\t\t\t\t\t\t\t\tentity.trigger = new Trigger(this.system.app, component, data);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tentity.trigger.initialize(data);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.beforeRemove(entity, component);\n\t\t\t\t\t\tthis.remove(entity, data);\n\t\t\t\t}\n\t\t}\n\t\tupdateTransform(component, position, rotation, scale) {\n\t\t\t\tif (component.shape) {\n\t\t\t\t\t\tconst entityTransform = component.entity.getWorldTransform();\n\t\t\t\t\t\tconst worldScale = entityTransform.getScale();\n\t\t\t\t\t\tconst previousScale = component.shape.getLocalScaling();\n\t\t\t\t\t\tif (worldScale.x !== previousScale.x() || worldScale.y !== previousScale.y() || worldScale.z !== previousScale.z()) {\n\t\t\t\t\t\t\t\tthis.doRecreatePhysicalShape(component);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tsuper.updateTransform(component, position, rotation, scale);\n\t\t}\n\t\tdestroyShape(data) {\n\t\t\t\tif (!data.shape) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst numShapes = data.shape.getNumChildShapes();\n\t\t\t\tfor(let i = 0; i < numShapes; i++){\n\t\t\t\t\t\tconst shape = data.shape.getChildShape(i);\n\t\t\t\t\t\tAmmo.destroy(shape);\n\t\t\t\t}\n\t\t\t\tAmmo.destroy(data.shape);\n\t\t\t\tdata.shape = null;\n\t\t}\n}\nclass CollisionCompoundSystemImpl extends CollisionSystemImpl {\n\t\tcreatePhysicalShape(entity, data) {\n\t\t\t\tif (typeof Ammo !== 'undefined') {\n\t\t\t\t\t\treturn new Ammo.btCompoundShape();\n\t\t\t\t}\n\t\t\t\treturn undefined;\n\t\t}\n\t\t_addEachDescendant(entity) {\n\t\t\t\tif (!entity.collision || entity.rigidbody) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tentity.collision._compoundParent = this;\n\t\t\t\tif (entity !== this.entity) {\n\t\t\t\t\t\tentity.collision.system.recreatePhysicalShapes(entity.collision);\n\t\t\t\t}\n\t\t}\n\t\t_updateEachDescendant(entity) {\n\t\t\t\tif (!entity.collision) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (entity.collision._compoundParent !== this) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tentity.collision._compoundParent = null;\n\t\t\t\tif (entity !== this.entity && !entity.rigidbody) {\n\t\t\t\t\t\tentity.collision.system.recreatePhysicalShapes(entity.collision);\n\t\t\t\t}\n\t\t}\n\t\t_updateEachDescendantTransform(entity) {\n\t\t\t\tif (!entity.collision || entity.collision._compoundParent !== this.collision._compoundParent) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.collision.system.updateCompoundChildTransform(entity, false);\n\t\t}\n}\nclass CollisionComponentSystem extends ComponentSystem {\n\t\tconstructor(app){\n\t\t\t\tsuper(app);\n\t\t\t\tthis.id = 'collision';\n\t\t\t\tthis.ComponentType = CollisionComponent;\n\t\t\t\tthis.DataType = CollisionComponentData;\n\t\t\t\tthis.schema = _schema$g;\n\t\t\t\tthis.implementations = {};\n\t\t\t\tthis._triMeshCache = {};\n\t\t\t\tthis.on('beforeremove', this.onBeforeRemove, this);\n\t\t\t\tthis.on('remove', this.onRemove, this);\n\t\t}\n\t\tinitializeComponentData(component, _data, properties) {\n\t\t\t\tproperties = [\n\t\t\t\t\t\t'type',\n\t\t\t\t\t\t'halfExtents',\n\t\t\t\t\t\t'radius',\n\t\t\t\t\t\t'axis',\n\t\t\t\t\t\t'height',\n\t\t\t\t\t\t'convexHull',\n\t\t\t\t\t\t'shape',\n\t\t\t\t\t\t'model',\n\t\t\t\t\t\t'asset',\n\t\t\t\t\t\t'render',\n\t\t\t\t\t\t'renderAsset',\n\t\t\t\t\t\t'enabled',\n\t\t\t\t\t\t'linearOffset',\n\t\t\t\t\t\t'angularOffset',\n\t\t\t\t\t\t'checkVertexDuplicates'\n\t\t\t\t];\n\t\t\t\tconst data = {};\n\t\t\t\tfor(let i = 0, len = properties.length; i < len; i++){\n\t\t\t\t\t\tconst property = properties[i];\n\t\t\t\t\t\tdata[property] = _data[property];\n\t\t\t\t}\n\t\t\t\tlet idx;\n\t\t\t\tif (_data.hasOwnProperty('asset')) {\n\t\t\t\t\t\tidx = properties.indexOf('model');\n\t\t\t\t\t\tif (idx !== -1) {\n\t\t\t\t\t\t\t\tproperties.splice(idx, 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tidx = properties.indexOf('render');\n\t\t\t\t\t\tif (idx !== -1) {\n\t\t\t\t\t\t\t\tproperties.splice(idx, 1);\n\t\t\t\t\t\t}\n\t\t\t\t} else if (_data.hasOwnProperty('model')) {\n\t\t\t\t\t\tidx = properties.indexOf('asset');\n\t\t\t\t\t\tif (idx !== -1) {\n\t\t\t\t\t\t\t\tproperties.splice(idx, 1);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!data.type) {\n\t\t\t\t\t\tdata.type = component.data.type;\n\t\t\t\t}\n\t\t\t\tcomponent.data.type = data.type;\n\t\t\t\tif (Array.isArray(data.halfExtents)) {\n\t\t\t\t\t\tdata.halfExtents = new Vec3(data.halfExtents);\n\t\t\t\t}\n\t\t\t\tif (Array.isArray(data.linearOffset)) {\n\t\t\t\t\t\tdata.linearOffset = new Vec3(data.linearOffset);\n\t\t\t\t}\n\t\t\t\tif (Array.isArray(data.angularOffset)) {\n\t\t\t\t\t\tconst values = data.angularOffset;\n\t\t\t\t\t\tif (values.length === 3) {\n\t\t\t\t\t\t\t\tdata.angularOffset = new Quat().setFromEulerAngles(values[0], values[1], values[2]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tdata.angularOffset = new Quat(data.angularOffset);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst impl = this._createImplementation(data.type);\n\t\t\t\timpl.beforeInitialize(component, data);\n\t\t\t\tsuper.initializeComponentData(component, data, properties);\n\t\t\t\timpl.afterInitialize(component, data);\n\t\t}\n\t\t_createImplementation(type) {\n\t\t\t\tif (this.implementations[type] === undefined) {\n\t\t\t\t\t\tlet impl;\n\t\t\t\t\t\tswitch(type){\n\t\t\t\t\t\t\t\tcase 'box':\n\t\t\t\t\t\t\t\t\t\timpl = new CollisionBoxSystemImpl(this);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase 'sphere':\n\t\t\t\t\t\t\t\t\t\timpl = new CollisionSphereSystemImpl(this);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase 'capsule':\n\t\t\t\t\t\t\t\t\t\timpl = new CollisionCapsuleSystemImpl(this);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase 'cylinder':\n\t\t\t\t\t\t\t\t\t\timpl = new CollisionCylinderSystemImpl(this);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase 'cone':\n\t\t\t\t\t\t\t\t\t\timpl = new CollisionConeSystemImpl(this);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase 'mesh':\n\t\t\t\t\t\t\t\t\t\timpl = new CollisionMeshSystemImpl(this);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase 'compound':\n\t\t\t\t\t\t\t\t\t\timpl = new CollisionCompoundSystemImpl(this);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.implementations[type] = impl;\n\t\t\t\t}\n\t\t\t\treturn this.implementations[type];\n\t\t}\n\t\t_getImplementation(entity) {\n\t\t\t\treturn this.implementations[entity.collision.data.type];\n\t\t}\n\t\tcloneComponent(entity, clone) {\n\t\t\t\treturn this._getImplementation(entity).clone(entity, clone);\n\t\t}\n\t\tonBeforeRemove(entity, component) {\n\t\t\t\tthis.implementations[component.data.type].beforeRemove(entity, component);\n\t\t\t\tcomponent.onBeforeRemove();\n\t\t}\n\t\tonRemove(entity, data) {\n\t\t\t\tthis.implementations[data.type].remove(entity, data);\n\t\t}\n\t\tupdateCompoundChildTransform(entity, forceUpdate) {\n\t\t\t\tconst parentComponent = entity.collision._compoundParent;\n\t\t\t\tif (parentComponent === entity.collision) return;\n\t\t\t\tif (entity.enabled && entity.collision.enabled && (entity._dirtyLocal || forceUpdate)) {\n\t\t\t\t\t\tconst transform = this._getNodeTransform(entity, parentComponent.entity);\n\t\t\t\t\t\tconst idx = parentComponent.getCompoundChildShapeIndex(entity.collision.shape);\n\t\t\t\t\t\tif (idx === null) {\n\t\t\t\t\t\t\t\tparentComponent.shape.addChildShape(transform, entity.collision.data.shape);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tparentComponent.shape.updateChildTransform(idx, transform, true);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tAmmo.destroy(transform);\n\t\t\t\t}\n\t\t}\n\t\t_removeCompoundChild(collision, shape) {\n\t\t\t\tif (collision.shape.getNumChildShapes() === 0) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (collision.shape.removeChildShape) {\n\t\t\t\t\t\tcollision.shape.removeChildShape(shape);\n\t\t\t\t} else {\n\t\t\t\t\t\tconst ind = collision.getCompoundChildShapeIndex(shape);\n\t\t\t\t\t\tif (ind !== null) {\n\t\t\t\t\t\t\t\tcollision.shape.removeChildShapeByIndex(ind);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tonTransformChanged(component, position, rotation, scale) {\n\t\t\t\tthis.implementations[component.data.type].updateTransform(component, position, rotation, scale);\n\t\t}\n\t\tchangeType(component, previousType, newType) {\n\t\t\t\tthis.implementations[previousType].beforeRemove(component.entity, component);\n\t\t\t\tthis.implementations[previousType].remove(component.entity, component.data);\n\t\t\t\tthis._createImplementation(newType).reset(component, component.data);\n\t\t}\n\t\trecreatePhysicalShapes(component) {\n\t\t\t\tthis.implementations[component.data.type].recreatePhysicalShapes(component);\n\t\t}\n\t\t_calculateNodeRelativeTransform(node, relative) {\n\t\t\t\tif (node === relative) {\n\t\t\t\t\t\tconst scale = node.getWorldTransform().getScale();\n\t\t\t\t\t\tmat4.setScale(scale.x, scale.y, scale.z);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._calculateNodeRelativeTransform(node.parent, relative);\n\t\t\t\t\t\tmat4.mul(node.getLocalTransform());\n\t\t\t\t}\n\t\t}\n\t\t_getNodeScaling(node) {\n\t\t\t\tconst wtm = node.getWorldTransform();\n\t\t\t\tconst scl = wtm.getScale();\n\t\t\t\treturn new Ammo.btVector3(scl.x, scl.y, scl.z);\n\t\t}\n\t\t_getNodeTransform(node, relative) {\n\t\t\t\tlet pos, rot;\n\t\t\t\tif (relative) {\n\t\t\t\t\t\tthis._calculateNodeRelativeTransform(node, relative);\n\t\t\t\t\t\tpos = p1;\n\t\t\t\t\t\trot = quat$1;\n\t\t\t\t\t\tmat4.getTranslation(pos);\n\t\t\t\t\t\trot.setFromMat4(mat4);\n\t\t\t\t} else {\n\t\t\t\t\t\tpos = node.getPosition();\n\t\t\t\t\t\trot = node.getRotation();\n\t\t\t\t}\n\t\t\t\tconst ammoQuat = new Ammo.btQuaternion();\n\t\t\t\tconst transform = new Ammo.btTransform();\n\t\t\t\ttransform.setIdentity();\n\t\t\t\tconst origin = transform.getOrigin();\n\t\t\t\tconst component = node.collision;\n\t\t\t\tif (component && component._hasOffset) {\n\t\t\t\t\t\tconst lo = component.data.linearOffset;\n\t\t\t\t\t\tconst ao = component.data.angularOffset;\n\t\t\t\t\t\tconst newOrigin = p2;\n\t\t\t\t\t\tquat$1.copy(rot).transformVector(lo, newOrigin);\n\t\t\t\t\t\tnewOrigin.add(pos);\n\t\t\t\t\t\tquat$1.copy(rot).mul(ao);\n\t\t\t\t\t\torigin.setValue(newOrigin.x, newOrigin.y, newOrigin.z);\n\t\t\t\t\t\tammoQuat.setValue(quat$1.x, quat$1.y, quat$1.z, quat$1.w);\n\t\t\t\t} else {\n\t\t\t\t\t\torigin.setValue(pos.x, pos.y, pos.z);\n\t\t\t\t\t\tammoQuat.setValue(rot.x, rot.y, rot.z, rot.w);\n\t\t\t\t}\n\t\t\t\ttransform.setRotation(ammoQuat);\n\t\t\t\tAmmo.destroy(ammoQuat);\n\t\t\t\treturn transform;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tfor(const key in this._triMeshCache){\n\t\t\t\t\t\tAmmo.destroy(this._triMeshCache[key]);\n\t\t\t\t}\n\t\t\t\tthis._triMeshCache = null;\n\t\t\t\tsuper.destroy();\n\t\t}\n}\n\nconst _tempColor$2 = new Color();\nconst _vertexFormatDeviceCache = new DeviceCache();\nclass ImageRenderable {\n\t\tconstructor(entity, mesh, material){\n\t\t\t\tthis._entity = entity;\n\t\t\t\tthis._element = entity.element;\n\t\t\t\tthis.model = new Model();\n\t\t\t\tthis.node = new GraphNode();\n\t\t\t\tthis.model.graph = this.node;\n\t\t\t\tthis.mesh = mesh;\n\t\t\t\tthis.meshInstance = new MeshInstance(this.mesh, material, this.node);\n\t\t\t\tthis.meshInstance.name = `ImageElement: ${entity.name}`;\n\t\t\t\tthis.meshInstance.castShadow = false;\n\t\t\t\tthis.meshInstance.receiveShadow = false;\n\t\t\t\tthis._meshDirty = false;\n\t\t\t\tthis.model.meshInstances.push(this.meshInstance);\n\t\t\t\tthis._entity.addChild(this.model.graph);\n\t\t\t\tthis.model._entity = this._entity;\n\t\t\t\tthis.unmaskMeshInstance = null;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.setMaterial(null);\n\t\t\t\tthis._element.removeModelFromLayers(this.model);\n\t\t\t\tthis.model.destroy();\n\t\t\t\tthis.model = null;\n\t\t\t\tthis.node = null;\n\t\t\t\tthis.mesh = null;\n\t\t\t\tthis.meshInstance?.destroy();\n\t\t\t\tthis.meshInstance = null;\n\t\t\t\tthis.unmaskMeshInstance?.destroy();\n\t\t\t\tthis.unmaskMeshInstance = null;\n\t\t\t\tthis._entity = null;\n\t\t\t\tthis._element = null;\n\t\t}\n\t\tsetMesh(mesh) {\n\t\t\t\tif (!this.meshInstance) return;\n\t\t\t\tthis.mesh = mesh;\n\t\t\t\tthis.meshInstance.mesh = mesh;\n\t\t\t\tthis.meshInstance.visible = !!mesh;\n\t\t\t\tif (this.unmaskMeshInstance) {\n\t\t\t\t\t\tthis.unmaskMeshInstance.mesh = mesh;\n\t\t\t\t}\n\t\t\t\tthis.forceUpdateAabb();\n\t\t}\n\t\tsetMask(mask) {\n\t\t\t\tif (!this.meshInstance) return;\n\t\t\t\tif (this._entity.enabled && this._element.enabled) {\n\t\t\t\t\t\tthis._element.removeModelFromLayers(this.model);\n\t\t\t\t}\n\t\t\t\tif (mask) {\n\t\t\t\t\t\tthis.unmaskMeshInstance = new MeshInstance(this.mesh, this.meshInstance.material, this.node);\n\t\t\t\t\t\tthis.unmaskMeshInstance.name = `Unmask: ${this._entity.name}`;\n\t\t\t\t\t\tthis.unmaskMeshInstance.castShadow = false;\n\t\t\t\t\t\tthis.unmaskMeshInstance.receiveShadow = false;\n\t\t\t\t\t\tthis.unmaskMeshInstance.pick = false;\n\t\t\t\t\t\tthis.model.meshInstances.push(this.unmaskMeshInstance);\n\t\t\t\t\t\tfor(const name in this.meshInstance.parameters){\n\t\t\t\t\t\t\t\tthis.unmaskMeshInstance.setParameter(name, this.meshInstance.parameters[name].data);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tconst idx = this.model.meshInstances.indexOf(this.unmaskMeshInstance);\n\t\t\t\t\t\tif (idx >= 0) {\n\t\t\t\t\t\t\t\tthis.model.meshInstances.splice(idx, 1);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this._entity.enabled && this._element.enabled) {\n\t\t\t\t\t\tthis._element.addModelToLayers(this.model);\n\t\t\t\t}\n\t\t\t\tif (!mask) {\n\t\t\t\t\t\tthis.unmaskMeshInstance?.destroy();\n\t\t\t\t\t\tthis.unmaskMeshInstance = null;\n\t\t\t\t}\n\t\t}\n\t\tsetMaterial(material) {\n\t\t\t\tif (!this.meshInstance) return;\n\t\t\t\tthis.meshInstance.material = material;\n\t\t\t\tif (this.unmaskMeshInstance) {\n\t\t\t\t\t\tthis.unmaskMeshInstance.material = material;\n\t\t\t\t}\n\t\t}\n\t\tsetParameter(name, value) {\n\t\t\t\tif (!this.meshInstance) return;\n\t\t\t\tthis.meshInstance.setParameter(name, value);\n\t\t\t\tif (this.unmaskMeshInstance) {\n\t\t\t\t\t\tthis.unmaskMeshInstance.setParameter(name, value);\n\t\t\t\t}\n\t\t}\n\t\tdeleteParameter(name) {\n\t\t\t\tif (!this.meshInstance) return;\n\t\t\t\tthis.meshInstance.deleteParameter(name);\n\t\t\t\tif (this.unmaskMeshInstance) {\n\t\t\t\t\t\tthis.unmaskMeshInstance.deleteParameter(name);\n\t\t\t\t}\n\t\t}\n\t\tsetUnmaskDrawOrder() {\n\t\t\t\tif (!this.meshInstance) return;\n\t\t\t\tconst getLastChild = function(e) {\n\t\t\t\t\t\tlet last;\n\t\t\t\t\t\tconst c = e.children;\n\t\t\t\t\t\tconst l = c.length;\n\t\t\t\t\t\tif (l) {\n\t\t\t\t\t\t\t\tfor(let i = 0; i < l; i++){\n\t\t\t\t\t\t\t\t\t\tif (c[i].element) {\n\t\t\t\t\t\t\t\t\t\t\t\tlast = c[i];\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (!last) return null;\n\t\t\t\t\t\t\t\tconst child = getLastChild(last);\n\t\t\t\t\t\t\t\tif (child) {\n\t\t\t\t\t\t\t\t\t\treturn child;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn last;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn null;\n\t\t\t\t};\n\t\t\t\tif (this.unmaskMeshInstance) {\n\t\t\t\t\t\tconst lastChild = getLastChild(this._entity);\n\t\t\t\t\t\tif (lastChild && lastChild.element) {\n\t\t\t\t\t\t\t\tthis.unmaskMeshInstance.drawOrder = lastChild.element.drawOrder + lastChild.element.getMaskOffset();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.unmaskMeshInstance.drawOrder = this.meshInstance.drawOrder + this._element.getMaskOffset();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tsetDrawOrder(drawOrder) {\n\t\t\t\tif (!this.meshInstance) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.meshInstance.drawOrder = drawOrder;\n\t\t}\n\t\tsetCull(cull) {\n\t\t\t\tif (!this.meshInstance) return;\n\t\t\t\tconst element = this._element;\n\t\t\t\tlet visibleFn = null;\n\t\t\t\tif (cull && element._isScreenSpace()) {\n\t\t\t\t\t\tvisibleFn = function(camera) {\n\t\t\t\t\t\t\t\treturn element.isVisibleForCamera(camera);\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tthis.meshInstance.cull = cull;\n\t\t\t\tthis.meshInstance.isVisibleFunc = visibleFn;\n\t\t\t\tif (this.unmaskMeshInstance) {\n\t\t\t\t\t\tthis.unmaskMeshInstance.cull = cull;\n\t\t\t\t\t\tthis.unmaskMeshInstance.isVisibleFunc = visibleFn;\n\t\t\t\t}\n\t\t}\n\t\tsetScreenSpace(screenSpace) {\n\t\t\t\tif (!this.meshInstance) return;\n\t\t\t\tthis.meshInstance.screenSpace = screenSpace;\n\t\t\t\tif (this.unmaskMeshInstance) {\n\t\t\t\t\t\tthis.unmaskMeshInstance.screenSpace = screenSpace;\n\t\t\t\t}\n\t\t}\n\t\tsetLayer(layer) {\n\t\t\t\tif (!this.meshInstance) return;\n\t\t\t\tthis.meshInstance.layer = layer;\n\t\t\t\tif (this.unmaskMeshInstance) {\n\t\t\t\t\t\tthis.unmaskMeshInstance.layer = layer;\n\t\t\t\t}\n\t\t}\n\t\tforceUpdateAabb(mask) {\n\t\t\t\tif (!this.meshInstance) return;\n\t\t\t\tthis.meshInstance._aabbVer = -1;\n\t\t\t\tif (this.unmaskMeshInstance) {\n\t\t\t\t\t\tthis.unmaskMeshInstance._aabbVer = -1;\n\t\t\t\t}\n\t\t}\n\t\tsetAabbFunc(fn) {\n\t\t\t\tif (!this.meshInstance) return;\n\t\t\t\tthis.meshInstance._updateAabbFunc = fn;\n\t\t\t\tif (this.unmaskMeshInstance) {\n\t\t\t\t\t\tthis.unmaskMeshInstance._updateAabbFunc = fn;\n\t\t\t\t}\n\t\t}\n}\nclass ImageElement {\n\t\tconstructor(element){\n\t\t\t\tthis._evtSetMeshes = null;\n\t\t\t\tthis._element = element;\n\t\t\t\tthis._entity = element.entity;\n\t\t\t\tthis._system = element.system;\n\t\t\t\tthis._textureAsset = null;\n\t\t\t\tthis._texture = null;\n\t\t\t\tthis._materialAsset = null;\n\t\t\t\tthis._material = null;\n\t\t\t\tthis._spriteAsset = null;\n\t\t\t\tthis._sprite = null;\n\t\t\t\tthis._spriteFrame = 0;\n\t\t\t\tthis._pixelsPerUnit = null;\n\t\t\t\tthis._targetAspectRatio = -1;\n\t\t\t\tthis._rect = new Vec4(0, 0, 1, 1);\n\t\t\t\tthis._mask = false;\n\t\t\t\tthis._maskRef = 0;\n\t\t\t\tthis._outerScale = new Vec2();\n\t\t\t\tthis._outerScaleUniform = new Float32Array(2);\n\t\t\t\tthis._innerOffset = new Vec4();\n\t\t\t\tthis._innerOffsetUniform = new Float32Array(4);\n\t\t\t\tthis._atlasRect = new Vec4();\n\t\t\t\tthis._atlasRectUniform = new Float32Array(4);\n\t\t\t\tthis._defaultMesh = this._createMesh();\n\t\t\t\tthis._renderable = new ImageRenderable(this._entity, this._defaultMesh, this._material);\n\t\t\t\tthis._color = new Color(1, 1, 1, 1);\n\t\t\t\tthis._colorUniform = new Float32Array([\n\t\t\t\t\t\t1,\n\t\t\t\t\t\t1,\n\t\t\t\t\t\t1\n\t\t\t\t]);\n\t\t\t\tthis._updateRenderableEmissive();\n\t\t\t\tthis._renderable.setParameter('material_opacity', 1);\n\t\t\t\tthis._updateAabbFunc = this._updateAabb.bind(this);\n\t\t\t\tthis._onScreenChange(this._element.screen);\n\t\t\t\tthis._element.on('resize', this._onParentResizeOrPivotChange, this);\n\t\t\t\tthis._element.on('set:pivot', this._onParentResizeOrPivotChange, this);\n\t\t\t\tthis._element.on('screen:set:screenspace', this._onScreenSpaceChange, this);\n\t\t\t\tthis._element.on('set:screen', this._onScreenChange, this);\n\t\t\t\tthis._element.on('set:draworder', this._onDrawOrderChange, this);\n\t\t\t\tthis._element.on('screen:set:resolution', this._onResolutionChange, this);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.textureAsset = null;\n\t\t\t\tthis.spriteAsset = null;\n\t\t\t\tthis.materialAsset = null;\n\t\t\t\tthis._renderable.setMesh(this._defaultMesh);\n\t\t\t\tthis._renderable.destroy();\n\t\t\t\tthis._defaultMesh = null;\n\t\t\t\tthis._element.off('resize', this._onParentResizeOrPivotChange, this);\n\t\t\t\tthis._element.off('set:pivot', this._onParentResizeOrPivotChange, this);\n\t\t\t\tthis._element.off('screen:set:screenspace', this._onScreenSpaceChange, this);\n\t\t\t\tthis._element.off('set:screen', this._onScreenChange, this);\n\t\t\t\tthis._element.off('set:draworder', this._onDrawOrderChange, this);\n\t\t\t\tthis._element.off('screen:set:resolution', this._onResolutionChange, this);\n\t\t}\n\t\t_onResolutionChange(res) {}\n\t\t_onParentResizeOrPivotChange() {\n\t\t\t\tif (this._renderable.mesh) {\n\t\t\t\t\t\tthis._updateMesh(this._renderable.mesh);\n\t\t\t\t}\n\t\t}\n\t\t_onScreenSpaceChange(value) {\n\t\t\t\tthis._updateMaterial(value);\n\t\t}\n\t\t_onScreenChange(screen, previous) {\n\t\t\t\tif (screen) {\n\t\t\t\t\t\tthis._updateMaterial(screen.screen.screenSpace);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._updateMaterial(false);\n\t\t\t\t}\n\t\t}\n\t\t_onDrawOrderChange(order) {\n\t\t\t\tthis._renderable.setDrawOrder(order);\n\t\t\t\tif (this.mask && this._element.screen) {\n\t\t\t\t\t\tthis._element.screen.screen.once('syncdraworder', function() {\n\t\t\t\t\t\t\t\tthis._renderable.setUnmaskDrawOrder();\n\t\t\t\t\t\t}, this);\n\t\t\t\t}\n\t\t}\n\t\t_hasUserMaterial() {\n\t\t\t\treturn !!this._materialAsset || !!this._material && this._system.defaultImageMaterials.indexOf(this._material) === -1;\n\t\t}\n\t\t_use9Slicing() {\n\t\t\t\treturn this.sprite && (this.sprite.renderMode === SPRITE_RENDERMODE_SLICED || this.sprite.renderMode === SPRITE_RENDERMODE_TILED);\n\t\t}\n\t\t_updateMaterial(screenSpace) {\n\t\t\t\tconst mask = !!this._mask;\n\t\t\t\tconst nineSliced = !!(this.sprite && this.sprite.renderMode === SPRITE_RENDERMODE_SLICED);\n\t\t\t\tconst nineTiled = !!(this.sprite && this.sprite.renderMode === SPRITE_RENDERMODE_TILED);\n\t\t\t\tif (!this._hasUserMaterial()) {\n\t\t\t\t\t\tthis._material = this._system.getImageElementMaterial(screenSpace, mask, nineSliced, nineTiled);\n\t\t\t\t}\n\t\t\t\tif (this._renderable) {\n\t\t\t\t\t\tthis._renderable.setCull(!this._element._isScreenSpace() || this._element._isScreenCulled());\n\t\t\t\t\t\tthis._renderable.setMaterial(this._material);\n\t\t\t\t\t\tthis._renderable.setScreenSpace(screenSpace);\n\t\t\t\t\t\tthis._renderable.setLayer(screenSpace ? LAYER_HUD : LAYER_WORLD);\n\t\t\t\t}\n\t\t}\n\t\t_createMesh() {\n\t\t\t\tconst element = this._element;\n\t\t\t\tconst w = element.calculatedWidth;\n\t\t\t\tconst h = element.calculatedHeight;\n\t\t\t\tconst r = this._rect;\n\t\t\t\tconst device = this._system.app.graphicsDevice;\n\t\t\t\tconst vertexData = new Float32Array([\n\t\t\t\t\t\tw,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t1,\n\t\t\t\t\t\tr.x + r.z,\n\t\t\t\t\t\t1.0 - r.y,\n\t\t\t\t\t\tw,\n\t\t\t\t\t\th,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t1,\n\t\t\t\t\t\tr.x + r.z,\n\t\t\t\t\t\t1.0 - (r.y + r.w),\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t1,\n\t\t\t\t\t\tr.x,\n\t\t\t\t\t\t1.0 - r.y,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\th,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t1,\n\t\t\t\t\t\tr.x,\n\t\t\t\t\t\t1.0 - (r.y + r.w)\n\t\t\t\t]);\n\t\t\t\tconst vertexFormat = _vertexFormatDeviceCache.get(device, ()=>{\n\t\t\t\t\t\treturn new VertexFormat(device, [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tsemantic: SEMANTIC_POSITION,\n\t\t\t\t\t\t\t\t\t\tcomponents: 3,\n\t\t\t\t\t\t\t\t\t\ttype: TYPE_FLOAT32\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tsemantic: SEMANTIC_NORMAL,\n\t\t\t\t\t\t\t\t\t\tcomponents: 3,\n\t\t\t\t\t\t\t\t\t\ttype: TYPE_FLOAT32\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tsemantic: SEMANTIC_TEXCOORD0,\n\t\t\t\t\t\t\t\t\t\tcomponents: 2,\n\t\t\t\t\t\t\t\t\t\ttype: TYPE_FLOAT32\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]);\n\t\t\t\t});\n\t\t\t\tconst vertexBuffer = new VertexBuffer(device, vertexFormat, 4, {\n\t\t\t\t\t\tdata: vertexData.buffer\n\t\t\t\t});\n\t\t\t\tconst mesh = new Mesh(device);\n\t\t\t\tmesh.vertexBuffer = vertexBuffer;\n\t\t\t\tmesh.primitive[0].type = PRIMITIVE_TRISTRIP;\n\t\t\t\tmesh.primitive[0].base = 0;\n\t\t\t\tmesh.primitive[0].count = 4;\n\t\t\t\tmesh.primitive[0].indexed = false;\n\t\t\t\tmesh.aabb.setMinMax(Vec3.ZERO, new Vec3(w, h, 0));\n\t\t\t\tthis._updateMesh(mesh);\n\t\t\t\treturn mesh;\n\t\t}\n\t\t_updateMesh(mesh) {\n\t\t\t\tconst element = this._element;\n\t\t\t\tlet w = element.calculatedWidth;\n\t\t\t\tlet h = element.calculatedHeight;\n\t\t\t\tif (element.fitMode !== FITMODE_STRETCH && this._targetAspectRatio > 0) {\n\t\t\t\t\t\tconst actualRatio = element.calculatedWidth / element.calculatedHeight;\n\t\t\t\t\t\tif (element.fitMode === FITMODE_CONTAIN && actualRatio > this._targetAspectRatio || element.fitMode === FITMODE_COVER && actualRatio < this._targetAspectRatio) {\n\t\t\t\t\t\t\t\tw = element.calculatedHeight * this._targetAspectRatio;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\th = element.calculatedWidth / this._targetAspectRatio;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst screenSpace = element._isScreenSpace();\n\t\t\t\tthis._updateMaterial(screenSpace);\n\t\t\t\tif (this._renderable) this._renderable.forceUpdateAabb();\n\t\t\t\tif (this.sprite && (this.sprite.renderMode === SPRITE_RENDERMODE_SLICED || this.sprite.renderMode === SPRITE_RENDERMODE_TILED)) {\n\t\t\t\t\t\tconst frameData = this._sprite.atlas.frames[this._sprite.frameKeys[this._spriteFrame]];\n\t\t\t\t\t\tconst borderWidthScale = 2 / frameData.rect.z;\n\t\t\t\t\t\tconst borderHeightScale = 2 / frameData.rect.w;\n\t\t\t\t\t\tthis._innerOffset.set(frameData.border.x * borderWidthScale, frameData.border.y * borderHeightScale, frameData.border.z * borderWidthScale, frameData.border.w * borderHeightScale);\n\t\t\t\t\t\tconst tex = this.sprite.atlas.texture;\n\t\t\t\t\t\tthis._atlasRect.set(frameData.rect.x / tex.width, frameData.rect.y / tex.height, frameData.rect.z / tex.width, frameData.rect.w / tex.height);\n\t\t\t\t\t\tconst ppu = this._pixelsPerUnit !== null ? this._pixelsPerUnit : this.sprite.pixelsPerUnit;\n\t\t\t\t\t\tconst scaleMulX = frameData.rect.z / ppu;\n\t\t\t\t\t\tconst scaleMulY = frameData.rect.w / ppu;\n\t\t\t\t\t\tthis._outerScale.set(Math.max(w, this._innerOffset.x * scaleMulX), Math.max(h, this._innerOffset.y * scaleMulY));\n\t\t\t\t\t\tlet scaleX = scaleMulX;\n\t\t\t\t\t\tlet scaleY = scaleMulY;\n\t\t\t\t\t\tthis._outerScale.x /= scaleMulX;\n\t\t\t\t\t\tthis._outerScale.y /= scaleMulY;\n\t\t\t\t\t\tscaleX *= math.clamp(w / (this._innerOffset.x * scaleMulX), 0.0001, 1);\n\t\t\t\t\t\tscaleY *= math.clamp(h / (this._innerOffset.y * scaleMulY), 0.0001, 1);\n\t\t\t\t\t\tif (this._renderable) {\n\t\t\t\t\t\t\t\tthis._innerOffsetUniform[0] = this._innerOffset.x;\n\t\t\t\t\t\t\t\tthis._innerOffsetUniform[1] = this._innerOffset.y;\n\t\t\t\t\t\t\t\tthis._innerOffsetUniform[2] = this._innerOffset.z;\n\t\t\t\t\t\t\t\tthis._innerOffsetUniform[3] = this._innerOffset.w;\n\t\t\t\t\t\t\t\tthis._renderable.setParameter('innerOffset', this._innerOffsetUniform);\n\t\t\t\t\t\t\t\tthis._atlasRectUniform[0] = this._atlasRect.x;\n\t\t\t\t\t\t\t\tthis._atlasRectUniform[1] = this._atlasRect.y;\n\t\t\t\t\t\t\t\tthis._atlasRectUniform[2] = this._atlasRect.z;\n\t\t\t\t\t\t\t\tthis._atlasRectUniform[3] = this._atlasRect.w;\n\t\t\t\t\t\t\t\tthis._renderable.setParameter('atlasRect', this._atlasRectUniform);\n\t\t\t\t\t\t\t\tthis._outerScaleUniform[0] = this._outerScale.x;\n\t\t\t\t\t\t\t\tthis._outerScaleUniform[1] = this._outerScale.y;\n\t\t\t\t\t\t\t\tthis._renderable.setParameter('outerScale', this._outerScaleUniform);\n\t\t\t\t\t\t\t\tthis._renderable.setAabbFunc(this._updateAabbFunc);\n\t\t\t\t\t\t\t\tthis._renderable.node.setLocalScale(scaleX, scaleY, 1);\n\t\t\t\t\t\t\t\tthis._renderable.node.setLocalPosition((0.5 - element.pivot.x) * w, (0.5 - element.pivot.y) * h, 0);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tconst vb = mesh.vertexBuffer;\n\t\t\t\t\t\tconst vertexDataF32 = new Float32Array(vb.lock());\n\t\t\t\t\t\tconst hp = element.pivot.x;\n\t\t\t\t\t\tconst vp = element.pivot.y;\n\t\t\t\t\t\tvertexDataF32[0] = w - hp * w;\n\t\t\t\t\t\tvertexDataF32[1] = 0 - vp * h;\n\t\t\t\t\t\tvertexDataF32[8] = w - hp * w;\n\t\t\t\t\t\tvertexDataF32[9] = h - vp * h;\n\t\t\t\t\t\tvertexDataF32[16] = 0 - hp * w;\n\t\t\t\t\t\tvertexDataF32[17] = 0 - vp * h;\n\t\t\t\t\t\tvertexDataF32[24] = 0 - hp * w;\n\t\t\t\t\t\tvertexDataF32[25] = h - vp * h;\n\t\t\t\t\t\tlet atlasTextureWidth = 1;\n\t\t\t\t\t\tlet atlasTextureHeight = 1;\n\t\t\t\t\t\tlet rect = this._rect;\n\t\t\t\t\t\tif (this._sprite && this._sprite.frameKeys[this._spriteFrame] && this._sprite.atlas) {\n\t\t\t\t\t\t\t\tconst frame = this._sprite.atlas.frames[this._sprite.frameKeys[this._spriteFrame]];\n\t\t\t\t\t\t\t\tif (frame) {\n\t\t\t\t\t\t\t\t\t\trect = frame.rect;\n\t\t\t\t\t\t\t\t\t\tatlasTextureWidth = this._sprite.atlas.texture.width;\n\t\t\t\t\t\t\t\t\t\tatlasTextureHeight = this._sprite.atlas.texture.height;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvertexDataF32[6] = (rect.x + rect.z) / atlasTextureWidth;\n\t\t\t\t\t\tvertexDataF32[7] = 1.0 - rect.y / atlasTextureHeight;\n\t\t\t\t\t\tvertexDataF32[14] = (rect.x + rect.z) / atlasTextureWidth;\n\t\t\t\t\t\tvertexDataF32[15] = 1.0 - (rect.y + rect.w) / atlasTextureHeight;\n\t\t\t\t\t\tvertexDataF32[22] = rect.x / atlasTextureWidth;\n\t\t\t\t\t\tvertexDataF32[23] = 1.0 - rect.y / atlasTextureHeight;\n\t\t\t\t\t\tvertexDataF32[30] = rect.x / atlasTextureWidth;\n\t\t\t\t\t\tvertexDataF32[31] = 1.0 - (rect.y + rect.w) / atlasTextureHeight;\n\t\t\t\t\t\tvb.unlock();\n\t\t\t\t\t\tconst min = new Vec3(0 - hp * w, 0 - vp * h, 0);\n\t\t\t\t\t\tconst max = new Vec3(w - hp * w, h - vp * h, 0);\n\t\t\t\t\t\tmesh.aabb.setMinMax(min, max);\n\t\t\t\t\t\tif (this._renderable) {\n\t\t\t\t\t\t\t\tthis._renderable.node.setLocalScale(1, 1, 1);\n\t\t\t\t\t\t\t\tthis._renderable.node.setLocalPosition(0, 0, 0);\n\t\t\t\t\t\t\t\tthis._renderable.setAabbFunc(null);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._meshDirty = false;\n\t\t}\n\t\t_updateSprite() {\n\t\t\t\tlet nineSlice = false;\n\t\t\t\tlet mesh = null;\n\t\t\t\tthis._targetAspectRatio = -1;\n\t\t\t\tif (this._sprite && this._sprite.atlas) {\n\t\t\t\t\t\tmesh = this._sprite.meshes[this.spriteFrame];\n\t\t\t\t\t\tnineSlice = this._sprite.renderMode === SPRITE_RENDERMODE_SLICED || this._sprite.renderMode === SPRITE_RENDERMODE_TILED;\n\t\t\t\t\t\tconst frameData = this._sprite.atlas.frames[this._sprite.frameKeys[this._spriteFrame]];\n\t\t\t\t\t\tif (frameData?.rect.w > 0) {\n\t\t\t\t\t\t\t\tthis._targetAspectRatio = frameData.rect.z / frameData.rect.w;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.mesh = nineSlice ? mesh : this._defaultMesh;\n\t\t\t\tthis.refreshMesh();\n\t\t}\n\t\trefreshMesh() {\n\t\t\t\tif (this.mesh) {\n\t\t\t\t\t\tif (!this._element._beingInitialized) {\n\t\t\t\t\t\t\t\tthis._updateMesh(this.mesh);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._meshDirty = true;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_updateAabb(aabb) {\n\t\t\t\taabb.center.set(0, 0, 0);\n\t\t\t\taabb.halfExtents.set(this._outerScale.x * 0.5, this._outerScale.y * 0.5, 0.001);\n\t\t\t\taabb.setFromTransformedAabb(aabb, this._renderable.node.getWorldTransform());\n\t\t\t\treturn aabb;\n\t\t}\n\t\t_toggleMask() {\n\t\t\t\tthis._element._dirtifyMask();\n\t\t\t\tconst screenSpace = this._element._isScreenSpace();\n\t\t\t\tthis._updateMaterial(screenSpace);\n\t\t\t\tthis._renderable.setMask(!!this._mask);\n\t\t}\n\t\t_onMaterialLoad(asset) {\n\t\t\t\tthis.material = asset.resource;\n\t\t}\n\t\t_onMaterialAdded(asset) {\n\t\t\t\tthis._system.app.assets.off(`add:${asset.id}`, this._onMaterialAdded, this);\n\t\t\t\tif (this._materialAsset === asset.id) {\n\t\t\t\t\t\tthis._bindMaterialAsset(asset);\n\t\t\t\t}\n\t\t}\n\t\t_bindMaterialAsset(asset) {\n\t\t\t\tif (!this._entity.enabled) return;\n\t\t\t\tasset.on('load', this._onMaterialLoad, this);\n\t\t\t\tasset.on('change', this._onMaterialChange, this);\n\t\t\t\tasset.on('remove', this._onMaterialRemove, this);\n\t\t\t\tif (asset.resource) {\n\t\t\t\t\t\tthis._onMaterialLoad(asset);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._system.app.assets.load(asset);\n\t\t\t\t}\n\t\t}\n\t\t_unbindMaterialAsset(asset) {\n\t\t\t\tasset.off('load', this._onMaterialLoad, this);\n\t\t\t\tasset.off('change', this._onMaterialChange, this);\n\t\t\t\tasset.off('remove', this._onMaterialRemove, this);\n\t\t}\n\t\t_onMaterialChange() {}\n\t\t_onMaterialRemove() {}\n\t\t_onTextureAdded(asset) {\n\t\t\t\tthis._system.app.assets.off(`add:${asset.id}`, this._onTextureAdded, this);\n\t\t\t\tif (this._textureAsset === asset.id) {\n\t\t\t\t\t\tthis._bindTextureAsset(asset);\n\t\t\t\t}\n\t\t}\n\t\t_bindTextureAsset(asset) {\n\t\t\t\tif (!this._entity.enabled) return;\n\t\t\t\tasset.on('load', this._onTextureLoad, this);\n\t\t\t\tasset.on('change', this._onTextureChange, this);\n\t\t\t\tasset.on('remove', this._onTextureRemove, this);\n\t\t\t\tif (asset.resource) {\n\t\t\t\t\t\tthis._onTextureLoad(asset);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._system.app.assets.load(asset);\n\t\t\t\t}\n\t\t}\n\t\t_unbindTextureAsset(asset) {\n\t\t\t\tasset.off('load', this._onTextureLoad, this);\n\t\t\t\tasset.off('change', this._onTextureChange, this);\n\t\t\t\tasset.off('remove', this._onTextureRemove, this);\n\t\t}\n\t\t_onTextureLoad(asset) {\n\t\t\t\tthis.texture = asset.resource;\n\t\t}\n\t\t_onTextureChange(asset) {}\n\t\t_onTextureRemove(asset) {}\n\t\t_onSpriteAssetAdded(asset) {\n\t\t\t\tthis._system.app.assets.off(`add:${asset.id}`, this._onSpriteAssetAdded, this);\n\t\t\t\tif (this._spriteAsset === asset.id) {\n\t\t\t\t\t\tthis._bindSpriteAsset(asset);\n\t\t\t\t}\n\t\t}\n\t\t_bindSpriteAsset(asset) {\n\t\t\t\tif (!this._entity.enabled) return;\n\t\t\t\tasset.on('load', this._onSpriteAssetLoad, this);\n\t\t\t\tasset.on('change', this._onSpriteAssetChange, this);\n\t\t\t\tasset.on('remove', this._onSpriteAssetRemove, this);\n\t\t\t\tif (asset.resource) {\n\t\t\t\t\t\tthis._onSpriteAssetLoad(asset);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._system.app.assets.load(asset);\n\t\t\t\t}\n\t\t}\n\t\t_unbindSpriteAsset(asset) {\n\t\t\t\tasset.off('load', this._onSpriteAssetLoad, this);\n\t\t\t\tasset.off('change', this._onSpriteAssetChange, this);\n\t\t\t\tasset.off('remove', this._onSpriteAssetRemove, this);\n\t\t\t\tif (asset.data.textureAtlasAsset) {\n\t\t\t\t\t\tthis._system.app.assets.off(`load:${asset.data.textureAtlasAsset}`, this._onTextureAtlasLoad, this);\n\t\t\t\t}\n\t\t}\n\t\t_onSpriteAssetLoad(asset) {\n\t\t\t\tif (!asset || !asset.resource) {\n\t\t\t\t\t\tthis.sprite = null;\n\t\t\t\t} else {\n\t\t\t\t\t\tif (!asset.resource.atlas) {\n\t\t\t\t\t\t\t\tconst atlasAssetId = asset.data.textureAtlasAsset;\n\t\t\t\t\t\t\t\tif (atlasAssetId) {\n\t\t\t\t\t\t\t\t\t\tconst assets = this._system.app.assets;\n\t\t\t\t\t\t\t\t\t\tassets.off(`load:${atlasAssetId}`, this._onTextureAtlasLoad, this);\n\t\t\t\t\t\t\t\t\t\tassets.once(`load:${atlasAssetId}`, this._onTextureAtlasLoad, this);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.sprite = asset.resource;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_onSpriteAssetChange(asset) {\n\t\t\t\tthis._onSpriteAssetLoad(asset);\n\t\t}\n\t\t_onSpriteAssetRemove(asset) {}\n\t\t_bindSprite(sprite) {\n\t\t\t\tthis._evtSetMeshes = sprite.on('set:meshes', this._onSpriteMeshesChange, this);\n\t\t\t\tsprite.on('set:pixelsPerUnit', this._onSpritePpuChange, this);\n\t\t\t\tsprite.on('set:atlas', this._onAtlasTextureChange, this);\n\t\t\t\tif (sprite.atlas) {\n\t\t\t\t\t\tsprite.atlas.on('set:texture', this._onAtlasTextureChange, this);\n\t\t\t\t}\n\t\t}\n\t\t_unbindSprite(sprite) {\n\t\t\t\tthis._evtSetMeshes?.off();\n\t\t\t\tthis._evtSetMeshes = null;\n\t\t\t\tsprite.off('set:pixelsPerUnit', this._onSpritePpuChange, this);\n\t\t\t\tsprite.off('set:atlas', this._onAtlasTextureChange, this);\n\t\t\t\tif (sprite.atlas) {\n\t\t\t\t\t\tsprite.atlas.off('set:texture', this._onAtlasTextureChange, this);\n\t\t\t\t}\n\t\t}\n\t\t_onSpriteMeshesChange() {\n\t\t\t\tif (this._sprite) {\n\t\t\t\t\t\tthis._spriteFrame = math.clamp(this._spriteFrame, 0, this._sprite.frameKeys.length - 1);\n\t\t\t\t}\n\t\t\t\tthis._updateSprite();\n\t\t}\n\t\t_onSpritePpuChange() {\n\t\t\t\tif (this.sprite.renderMode !== SPRITE_RENDERMODE_SIMPLE && this._pixelsPerUnit === null) {\n\t\t\t\t\t\tthis._updateSprite();\n\t\t\t\t}\n\t\t}\n\t\t_onAtlasTextureChange() {\n\t\t\t\tif (this.sprite && this.sprite.atlas && this.sprite.atlas.texture) {\n\t\t\t\t\t\tthis._renderable.setParameter('texture_emissiveMap', this._sprite.atlas.texture);\n\t\t\t\t\t\tthis._renderable.setParameter('texture_opacityMap', this._sprite.atlas.texture);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._renderable.deleteParameter('texture_emissiveMap');\n\t\t\t\t\t\tthis._renderable.deleteParameter('texture_opacityMap');\n\t\t\t\t}\n\t\t}\n\t\t_onTextureAtlasLoad(atlasAsset) {\n\t\t\t\tconst spriteAsset = this._spriteAsset;\n\t\t\t\tif (spriteAsset instanceof Asset) {\n\t\t\t\t\t\tthis._onSpriteAssetLoad(spriteAsset);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._onSpriteAssetLoad(this._system.app.assets.get(spriteAsset));\n\t\t\t\t}\n\t\t}\n\t\tonEnable() {\n\t\t\t\tif (this._materialAsset) {\n\t\t\t\t\t\tconst asset = this._system.app.assets.get(this._materialAsset);\n\t\t\t\t\t\tif (asset && asset.resource !== this._material) {\n\t\t\t\t\t\t\t\tthis._bindMaterialAsset(asset);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this._textureAsset) {\n\t\t\t\t\t\tconst asset = this._system.app.assets.get(this._textureAsset);\n\t\t\t\t\t\tif (asset && asset.resource !== this._texture) {\n\t\t\t\t\t\t\t\tthis._bindTextureAsset(asset);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this._spriteAsset) {\n\t\t\t\t\t\tconst asset = this._system.app.assets.get(this._spriteAsset);\n\t\t\t\t\t\tif (asset && asset.resource !== this._sprite) {\n\t\t\t\t\t\t\t\tthis._bindSpriteAsset(asset);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._element.addModelToLayers(this._renderable.model);\n\t\t}\n\t\tonDisable() {\n\t\t\t\tthis._element.removeModelFromLayers(this._renderable.model);\n\t\t}\n\t\t_setStencil(stencilParams) {\n\t\t\t\tthis._renderable.meshInstance.stencilFront = stencilParams;\n\t\t\t\tthis._renderable.meshInstance.stencilBack = stencilParams;\n\t\t\t\tlet ref = 0;\n\t\t\t\tif (this._element.maskedBy) {\n\t\t\t\t\t\tref = this._element.maskedBy.element._image._maskRef;\n\t\t\t\t}\n\t\t\t\tif (this._renderable.unmaskMeshInstance) {\n\t\t\t\t\t\tconst sp = new StencilParameters({\n\t\t\t\t\t\t\t\tref: ref + 1,\n\t\t\t\t\t\t\t\tfunc: FUNC_EQUAL,\n\t\t\t\t\t\t\t\tzpass: STENCILOP_DECREMENT\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis._renderable.unmaskMeshInstance.stencilFront = sp;\n\t\t\t\t\t\tthis._renderable.unmaskMeshInstance.stencilBack = sp;\n\t\t\t\t}\n\t\t}\n\t\t_updateRenderableEmissive() {\n\t\t\t\t_tempColor$2.linear(this._color);\n\t\t\t\tthis._colorUniform[0] = _tempColor$2.r;\n\t\t\t\tthis._colorUniform[1] = _tempColor$2.g;\n\t\t\t\tthis._colorUniform[2] = _tempColor$2.b;\n\t\t\t\tthis._renderable.setParameter('material_emissive', this._colorUniform);\n\t\t}\n\t\tset color(value) {\n\t\t\t\tconst { r, g, b } = value;\n\t\t\t\tif (this._color.r !== r || this._color.g !== g || this._color.b !== b) {\n\t\t\t\t\t\tthis._color.r = r;\n\t\t\t\t\t\tthis._color.g = g;\n\t\t\t\t\t\tthis._color.b = b;\n\t\t\t\t\t\tthis._updateRenderableEmissive();\n\t\t\t\t}\n\t\t\t\tif (this._element) {\n\t\t\t\t\t\tthis._element.fire('set:color', this._color);\n\t\t\t\t}\n\t\t}\n\t\tget color() {\n\t\t\t\treturn this._color;\n\t\t}\n\t\tset opacity(value) {\n\t\t\t\tif (value !== this._color.a) {\n\t\t\t\t\t\tthis._color.a = value;\n\t\t\t\t\t\tthis._renderable.setParameter('material_opacity', value);\n\t\t\t\t}\n\t\t\t\tif (this._element) {\n\t\t\t\t\t\tthis._element.fire('set:opacity', value);\n\t\t\t\t}\n\t\t}\n\t\tget opacity() {\n\t\t\t\treturn this._color.a;\n\t\t}\n\t\tset rect(value) {\n\t\t\t\tlet x, y, z, w;\n\t\t\t\tif (value instanceof Vec4) {\n\t\t\t\t\t\tx = value.x;\n\t\t\t\t\t\ty = value.y;\n\t\t\t\t\t\tz = value.z;\n\t\t\t\t\t\tw = value.w;\n\t\t\t\t} else {\n\t\t\t\t\t\tx = value[0];\n\t\t\t\t\t\ty = value[1];\n\t\t\t\t\t\tz = value[2];\n\t\t\t\t\t\tw = value[3];\n\t\t\t\t}\n\t\t\t\tif (x === this._rect.x && y === this._rect.y && z === this._rect.z && w === this._rect.w) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._rect.set(x, y, z, w);\n\t\t\t\tif (this._renderable.mesh) {\n\t\t\t\t\t\tif (!this._element._beingInitialized) {\n\t\t\t\t\t\t\t\tthis._updateMesh(this._renderable.mesh);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._meshDirty = true;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget rect() {\n\t\t\t\treturn this._rect;\n\t\t}\n\t\t_removeMaterialAssetEvents() {\n\t\t\t\tif (this._materialAsset) {\n\t\t\t\t\t\tconst assets = this._system.app.assets;\n\t\t\t\t\t\tassets.off(`add:${this._materialAsset}`, this._onMaterialAdded, this);\n\t\t\t\t\t\tconst asset = assets.get(this._materialAsset);\n\t\t\t\t\t\tif (asset) {\n\t\t\t\t\t\t\t\tasset.off('load', this._onMaterialLoad, this);\n\t\t\t\t\t\t\t\tasset.off('change', this._onMaterialChange, this);\n\t\t\t\t\t\t\t\tasset.off('remove', this._onMaterialRemove, this);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tset material(value) {\n\t\t\t\tif (this._material === value) return;\n\t\t\t\tif (!value) {\n\t\t\t\t\t\tconst screenSpace = this._element._isScreenSpace();\n\t\t\t\t\t\tif (this.mask) {\n\t\t\t\t\t\t\t\tvalue = screenSpace ? this._system.defaultScreenSpaceImageMaskMaterial : this._system.defaultImageMaskMaterial;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tvalue = screenSpace ? this._system.defaultScreenSpaceImageMaterial : this._system.defaultImageMaterial;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._material = value;\n\t\t\t\tif (this._materialAsset) {\n\t\t\t\t\t\tconst asset = this._system.app.assets.get(this._materialAsset);\n\t\t\t\t\t\tif (!asset || asset.resource !== value) {\n\t\t\t\t\t\t\t\tthis._removeMaterialAssetEvents();\n\t\t\t\t\t\t\t\tthis._materialAsset = null;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (value) {\n\t\t\t\t\t\tthis._renderable.setMaterial(value);\n\t\t\t\t\t\tif (this._hasUserMaterial()) {\n\t\t\t\t\t\t\t\tthis._renderable.deleteParameter('material_opacity');\n\t\t\t\t\t\t\t\tthis._renderable.deleteParameter('material_emissive');\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._updateRenderableEmissive();\n\t\t\t\t\t\t\t\tthis._renderable.setParameter('material_opacity', this._color.a);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget material() {\n\t\t\t\treturn this._material;\n\t\t}\n\t\tset materialAsset(value) {\n\t\t\t\tconst assets = this._system.app.assets;\n\t\t\t\tlet _id = value;\n\t\t\t\tif (value instanceof Asset) {\n\t\t\t\t\t\t_id = value.id;\n\t\t\t\t}\n\t\t\t\tif (this._materialAsset !== _id) {\n\t\t\t\t\t\tthis._removeMaterialAssetEvents();\n\t\t\t\t\t\tthis._materialAsset = _id;\n\t\t\t\t\t\tif (this._materialAsset) {\n\t\t\t\t\t\t\t\tconst asset = assets.get(this._materialAsset);\n\t\t\t\t\t\t\t\tif (!asset) {\n\t\t\t\t\t\t\t\t\t\tthis._materialAsset = null;\n\t\t\t\t\t\t\t\t\t\tthis.material = null;\n\t\t\t\t\t\t\t\t\t\tthis._materialAsset = _id;\n\t\t\t\t\t\t\t\t\t\tassets.on(`add:${this._materialAsset}`, this._onMaterialAdded, this);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis._bindMaterialAsset(asset);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._materialAsset = null;\n\t\t\t\t\t\t\t\tthis.material = null;\n\t\t\t\t\t\t\t\tthis._materialAsset = _id;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget materialAsset() {\n\t\t\t\treturn this._materialAsset;\n\t\t}\n\t\tset texture(value) {\n\t\t\t\tif (this._texture === value) return;\n\t\t\t\tif (this._textureAsset) {\n\t\t\t\t\t\tconst textureAsset = this._system.app.assets.get(this._textureAsset);\n\t\t\t\t\t\tif (textureAsset && textureAsset.resource !== value) {\n\t\t\t\t\t\t\t\tthis.textureAsset = null;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._texture = value;\n\t\t\t\tif (value) {\n\t\t\t\t\t\tif (this._spriteAsset) {\n\t\t\t\t\t\t\t\tthis.spriteAsset = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._renderable.setParameter('texture_emissiveMap', this._texture);\n\t\t\t\t\t\tthis._renderable.setParameter('texture_opacityMap', this._texture);\n\t\t\t\t\t\tthis._updateRenderableEmissive();\n\t\t\t\t\t\tthis._renderable.setParameter('material_opacity', this._color.a);\n\t\t\t\t\t\tconst newAspectRatio = this._texture.width / this._texture.height;\n\t\t\t\t\t\tif (newAspectRatio !== this._targetAspectRatio) {\n\t\t\t\t\t\t\t\tthis._targetAspectRatio = newAspectRatio;\n\t\t\t\t\t\t\t\tif (this._element.fitMode !== FITMODE_STRETCH) {\n\t\t\t\t\t\t\t\t\t\tthis.refreshMesh();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._renderable.deleteParameter('texture_emissiveMap');\n\t\t\t\t\t\tthis._renderable.deleteParameter('texture_opacityMap');\n\t\t\t\t\t\tthis._targetAspectRatio = -1;\n\t\t\t\t\t\tif (this._element.fitMode !== FITMODE_STRETCH) {\n\t\t\t\t\t\t\t\tthis.refreshMesh();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget texture() {\n\t\t\t\treturn this._texture;\n\t\t}\n\t\tset textureAsset(value) {\n\t\t\t\tconst assets = this._system.app.assets;\n\t\t\t\tlet _id = value;\n\t\t\t\tif (value instanceof Asset) {\n\t\t\t\t\t\t_id = value.id;\n\t\t\t\t}\n\t\t\t\tif (this._textureAsset !== _id) {\n\t\t\t\t\t\tif (this._textureAsset) {\n\t\t\t\t\t\t\t\tassets.off(`add:${this._textureAsset}`, this._onTextureAdded, this);\n\t\t\t\t\t\t\t\tconst _prev = assets.get(this._textureAsset);\n\t\t\t\t\t\t\t\tif (_prev) {\n\t\t\t\t\t\t\t\t\t\t_prev.off('load', this._onTextureLoad, this);\n\t\t\t\t\t\t\t\t\t\t_prev.off('change', this._onTextureChange, this);\n\t\t\t\t\t\t\t\t\t\t_prev.off('remove', this._onTextureRemove, this);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._textureAsset = _id;\n\t\t\t\t\t\tif (this._textureAsset) {\n\t\t\t\t\t\t\t\tconst asset = assets.get(this._textureAsset);\n\t\t\t\t\t\t\t\tif (!asset) {\n\t\t\t\t\t\t\t\t\t\tthis.texture = null;\n\t\t\t\t\t\t\t\t\t\tassets.on(`add:${this._textureAsset}`, this._onTextureAdded, this);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis._bindTextureAsset(asset);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.texture = null;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget textureAsset() {\n\t\t\t\treturn this._textureAsset;\n\t\t}\n\t\tset spriteAsset(value) {\n\t\t\t\tconst assets = this._system.app.assets;\n\t\t\t\tlet _id = value;\n\t\t\t\tif (value instanceof Asset) {\n\t\t\t\t\t\t_id = value.id;\n\t\t\t\t}\n\t\t\t\tif (this._spriteAsset !== _id) {\n\t\t\t\t\t\tif (this._spriteAsset) {\n\t\t\t\t\t\t\t\tassets.off(`add:${this._spriteAsset}`, this._onSpriteAssetAdded, this);\n\t\t\t\t\t\t\t\tconst _prev = assets.get(this._spriteAsset);\n\t\t\t\t\t\t\t\tif (_prev) {\n\t\t\t\t\t\t\t\t\t\tthis._unbindSpriteAsset(_prev);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._spriteAsset = _id;\n\t\t\t\t\t\tif (this._spriteAsset) {\n\t\t\t\t\t\t\t\tconst asset = assets.get(this._spriteAsset);\n\t\t\t\t\t\t\t\tif (!asset) {\n\t\t\t\t\t\t\t\t\t\tthis.sprite = null;\n\t\t\t\t\t\t\t\t\t\tassets.on(`add:${this._spriteAsset}`, this._onSpriteAssetAdded, this);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis._bindSpriteAsset(asset);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.sprite = null;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this._element) {\n\t\t\t\t\t\tthis._element.fire('set:spriteAsset', _id);\n\t\t\t\t}\n\t\t}\n\t\tget spriteAsset() {\n\t\t\t\treturn this._spriteAsset;\n\t\t}\n\t\tset sprite(value) {\n\t\t\t\tif (this._sprite === value) return;\n\t\t\t\tif (this._sprite) {\n\t\t\t\t\t\tthis._unbindSprite(this._sprite);\n\t\t\t\t}\n\t\t\t\tif (this._spriteAsset) {\n\t\t\t\t\t\tconst spriteAsset = this._system.app.assets.get(this._spriteAsset);\n\t\t\t\t\t\tif (spriteAsset && spriteAsset.resource !== value) {\n\t\t\t\t\t\t\t\tthis.spriteAsset = null;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._sprite = value;\n\t\t\t\tif (this._sprite) {\n\t\t\t\t\t\tthis._bindSprite(this._sprite);\n\t\t\t\t\t\tif (this._textureAsset) {\n\t\t\t\t\t\t\t\tthis.textureAsset = null;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this._sprite && this._sprite.atlas && this._sprite.atlas.texture) {\n\t\t\t\t\t\tthis._renderable.setParameter('texture_emissiveMap', this._sprite.atlas.texture);\n\t\t\t\t\t\tthis._renderable.setParameter('texture_opacityMap', this._sprite.atlas.texture);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._renderable.deleteParameter('texture_emissiveMap');\n\t\t\t\t\t\tthis._renderable.deleteParameter('texture_opacityMap');\n\t\t\t\t}\n\t\t\t\tif (this._sprite) {\n\t\t\t\t\t\tthis._spriteFrame = math.clamp(this._spriteFrame, 0, this._sprite.frameKeys.length - 1);\n\t\t\t\t}\n\t\t\t\tthis._updateSprite();\n\t\t}\n\t\tget sprite() {\n\t\t\t\treturn this._sprite;\n\t\t}\n\t\tset spriteFrame(value) {\n\t\t\t\tconst oldValue = this._spriteFrame;\n\t\t\t\tif (this._sprite) {\n\t\t\t\t\t\tthis._spriteFrame = math.clamp(value, 0, this._sprite.frameKeys.length - 1);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._spriteFrame = value;\n\t\t\t\t}\n\t\t\t\tif (this._spriteFrame !== oldValue) {\n\t\t\t\t\t\tthis._updateSprite();\n\t\t\t\t}\n\t\t\t\tif (this._element) {\n\t\t\t\t\t\tthis._element.fire('set:spriteFrame', value);\n\t\t\t\t}\n\t\t}\n\t\tget spriteFrame() {\n\t\t\t\treturn this._spriteFrame;\n\t\t}\n\t\tset mesh(value) {\n\t\t\t\tthis._renderable.setMesh(value);\n\t\t\t\tif (this._defaultMesh === value) {\n\t\t\t\t\t\tthis._renderable.setAabbFunc(null);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._renderable.setAabbFunc(this._updateAabbFunc);\n\t\t\t\t}\n\t\t}\n\t\tget mesh() {\n\t\t\t\treturn this._renderable.mesh;\n\t\t}\n\t\tset mask(value) {\n\t\t\t\tif (this._mask !== value) {\n\t\t\t\t\t\tthis._mask = value;\n\t\t\t\t\t\tthis._toggleMask();\n\t\t\t\t}\n\t\t}\n\t\tget mask() {\n\t\t\t\treturn this._mask;\n\t\t}\n\t\tset pixelsPerUnit(value) {\n\t\t\t\tif (this._pixelsPerUnit === value) return;\n\t\t\t\tthis._pixelsPerUnit = value;\n\t\t\t\tif (this._sprite && (this._sprite.renderMode === SPRITE_RENDERMODE_SLICED || this._sprite.renderMode === SPRITE_RENDERMODE_TILED)) {\n\t\t\t\t\t\tthis._updateSprite();\n\t\t\t\t}\n\t\t}\n\t\tget pixelsPerUnit() {\n\t\t\t\treturn this._pixelsPerUnit;\n\t\t}\n\t\tget aabb() {\n\t\t\t\tif (this._renderable.meshInstance) {\n\t\t\t\t\t\treturn this._renderable.meshInstance.aabb;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n}\n\nclass LocalizedAsset extends EventHandler {\n\t\tconstructor(app){\n\t\t\t\tsuper();\n\t\t\t\tthis._app = app;\n\t\t\t\tapp.i18n.on(I18n.EVENT_CHANGE, this._onSetLocale, this);\n\t\t\t\tthis._autoLoad = false;\n\t\t\t\tthis._disableLocalization = false;\n\t\t\t\tthis._defaultAsset = null;\n\t\t\t\tthis._localizedAsset = null;\n\t\t}\n\t\tset defaultAsset(value) {\n\t\t\t\tconst id = value instanceof Asset ? value.id : value;\n\t\t\t\tif (this._defaultAsset === id) return;\n\t\t\t\tif (this._defaultAsset) {\n\t\t\t\t\t\tthis._unbindDefaultAsset();\n\t\t\t\t}\n\t\t\t\tthis._defaultAsset = id;\n\t\t\t\tif (this._defaultAsset) {\n\t\t\t\t\t\tthis._bindDefaultAsset();\n\t\t\t\t}\n\t\t\t\tthis._onSetLocale(this._app.i18n.locale);\n\t\t}\n\t\tget defaultAsset() {\n\t\t\t\treturn this._defaultAsset;\n\t\t}\n\t\tset localizedAsset(value) {\n\t\t\t\tconst id = value instanceof Asset ? value.id : value;\n\t\t\t\tif (this._localizedAsset === id) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this._localizedAsset) {\n\t\t\t\t\t\tthis._app.assets.off(`add:${this._localizedAsset}`, this._onLocalizedAssetAdd, this);\n\t\t\t\t\t\tthis._unbindLocalizedAsset();\n\t\t\t\t}\n\t\t\t\tthis._localizedAsset = id;\n\t\t\t\tif (this._localizedAsset) {\n\t\t\t\t\t\tconst asset = this._app.assets.get(this._localizedAsset);\n\t\t\t\t\t\tif (!asset) {\n\t\t\t\t\t\t\t\tthis._app.assets.once(`add:${this._localizedAsset}`, this._onLocalizedAssetAdd, this);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._bindLocalizedAsset();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget localizedAsset() {\n\t\t\t\treturn this._localizedAsset;\n\t\t}\n\t\tset autoLoad(value) {\n\t\t\t\tif (this._autoLoad === value) return;\n\t\t\t\tthis._autoLoad = value;\n\t\t\t\tif (this._autoLoad && this._localizedAsset) {\n\t\t\t\t\t\tthis._unbindLocalizedAsset();\n\t\t\t\t\t\tthis._bindLocalizedAsset();\n\t\t\t\t}\n\t\t}\n\t\tget autoLoad() {\n\t\t\t\treturn this._autoLoad;\n\t\t}\n\t\tset disableLocalization(value) {\n\t\t\t\tif (this._disableLocalization === value) return;\n\t\t\t\tthis._disableLocalization = value;\n\t\t\t\tthis._onSetLocale(this._app.i18n.locale);\n\t\t}\n\t\tget disableLocalization() {\n\t\t\t\treturn this._disableLocalization;\n\t\t}\n\t\t_bindDefaultAsset() {\n\t\t\t\tconst asset = this._app.assets.get(this._defaultAsset);\n\t\t\t\tif (!asset) {\n\t\t\t\t\t\tthis._app.assets.once(`add:${this._defaultAsset}`, this._onDefaultAssetAdd, this);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._onDefaultAssetAdd(asset);\n\t\t\t\t}\n\t\t}\n\t\t_unbindDefaultAsset() {\n\t\t\t\tif (!this._defaultAsset) return;\n\t\t\t\tthis._app.assets.off(`add:${this._defaultAsset}`, this._onDefaultAssetAdd, this);\n\t\t\t\tconst asset = this._app.assets.get(this._defaultAsset);\n\t\t\t\tif (!asset) return;\n\t\t\t\tasset.off('add:localized', this._onLocaleAdd, this);\n\t\t\t\tasset.off('remove:localized', this._onLocaleRemove, this);\n\t\t\t\tasset.off('remove', this._onDefaultAssetRemove, this);\n\t\t}\n\t\t_onDefaultAssetAdd(asset) {\n\t\t\t\tif (this._defaultAsset !== asset.id) return;\n\t\t\t\tasset.on('add:localized', this._onLocaleAdd, this);\n\t\t\t\tasset.on('remove:localized', this._onLocaleRemove, this);\n\t\t\t\tasset.once('remove', this._onDefaultAssetRemove, this);\n\t\t}\n\t\t_onDefaultAssetRemove(asset) {\n\t\t\t\tif (this._defaultAsset !== asset.id) return;\n\t\t\t\tasset.off('add:localized', this._onLocaleAdd, this);\n\t\t\t\tasset.off('remove:localized', this._onLocaleAdd, this);\n\t\t\t\tthis._app.assets.once(`add:${this._defaultAsset}`, this._onDefaultAssetAdd, this);\n\t\t}\n\t\t_bindLocalizedAsset() {\n\t\t\t\tif (!this._autoLoad) return;\n\t\t\t\tconst asset = this._app.assets.get(this._localizedAsset);\n\t\t\t\tif (!asset) return;\n\t\t\t\tasset.on('load', this._onLocalizedAssetLoad, this);\n\t\t\t\tasset.on('change', this._onLocalizedAssetChange, this);\n\t\t\t\tasset.on('remove', this._onLocalizedAssetRemove, this);\n\t\t\t\tif (asset.resource) {\n\t\t\t\t\t\tthis._onLocalizedAssetLoad(asset);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._app.assets.load(asset);\n\t\t\t\t}\n\t\t}\n\t\t_unbindLocalizedAsset() {\n\t\t\t\tconst asset = this._app.assets.get(this._localizedAsset);\n\t\t\t\tif (!asset) return;\n\t\t\t\tasset.off('load', this._onLocalizedAssetLoad, this);\n\t\t\t\tasset.off('change', this._onLocalizedAssetChange, this);\n\t\t\t\tasset.off('remove', this._onLocalizedAssetRemove, this);\n\t\t}\n\t\t_onLocalizedAssetAdd(asset) {\n\t\t\t\tif (this._localizedAsset !== asset.id) return;\n\t\t\t\tthis._bindLocalizedAsset();\n\t\t}\n\t\t_onLocalizedAssetLoad(asset) {\n\t\t\t\tthis.fire('load', asset);\n\t\t}\n\t\t_onLocalizedAssetChange(asset, name, newValue, oldValue) {\n\t\t\t\tthis.fire('change', asset, name, newValue, oldValue);\n\t\t}\n\t\t_onLocalizedAssetRemove(asset) {\n\t\t\t\tif (this._localizedAsset === asset.id) {\n\t\t\t\t\t\tthis.localizedAsset = this._defaultAsset;\n\t\t\t\t}\n\t\t\t\tthis.fire('remove', asset);\n\t\t}\n\t\t_onLocaleAdd(locale, assetId) {\n\t\t\t\tif (this._app.i18n.locale !== locale) return;\n\t\t\t\tthis._onSetLocale(locale);\n\t\t}\n\t\t_onLocaleRemove(locale, assetId) {\n\t\t\t\tif (this._app.i18n.locale !== locale) return;\n\t\t\t\tthis._onSetLocale(locale);\n\t\t}\n\t\t_onSetLocale(locale) {\n\t\t\t\tif (!this._defaultAsset) {\n\t\t\t\t\t\tthis.localizedAsset = null;\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst asset = this._app.assets.get(this._defaultAsset);\n\t\t\t\tif (!asset || this._disableLocalization) {\n\t\t\t\t\t\tthis.localizedAsset = this._defaultAsset;\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst localizedAssetId = asset.getLocalizedAssetId(locale);\n\t\t\t\tif (!localizedAssetId) {\n\t\t\t\t\t\tthis.localizedAsset = this._defaultAsset;\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.localizedAsset = localizedAssetId;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.defaultAsset = null;\n\t\t\t\tthis._app.i18n.off(I18n.EVENT_CHANGE, this._onSetLocale, this);\n\t\t\t\tthis.off();\n\t\t}\n}\n\nconst FONT_MSDF = 'msdf';\nconst FONT_BITMAP = 'bitmap';\n\nconst EOF_TOKEN = 0;\nconst ERROR_TOKEN = 1;\nconst TEXT_TOKEN = 2;\nconst OPEN_BRACKET_TOKEN = 3;\nconst CLOSE_BRACKET_TOKEN = 4;\nconst EQUALS_TOKEN = 5;\nconst STRING_TOKEN = 6;\nconst IDENTIFIER_TOKEN = 7;\nconst WHITESPACE_TOKEN = 8;\nconst WHITESPACE_CHARS = ' \\t\\n\\r\\v\\f';\nconst IDENTIFIER_REGEX = /[\\w|/]/;\nclass Scanner {\n\t\tconstructor(symbols){\n\t\t\t\tthis._symbols = symbols;\n\t\t\t\tthis._index = 0;\n\t\t\t\tthis._last = 0;\n\t\t\t\tthis._cur = this._symbols.length > 0 ? this._symbols[0] : null;\n\t\t\t\tthis._buf = [];\n\t\t\t\tthis._mode = 'text';\n\t\t\t\tthis._error = null;\n\t\t}\n\t\tread() {\n\t\t\t\tlet token = this._read();\n\t\t\t\twhile(token === WHITESPACE_TOKEN){\n\t\t\t\t\t\ttoken = this._read();\n\t\t\t\t}\n\t\t\t\tif (token !== EOF_TOKEN && token !== ERROR_TOKEN) {\n\t\t\t\t\t\tthis._last = this._index;\n\t\t\t\t}\n\t\t\t\treturn token;\n\t\t}\n\t\tbuf() {\n\t\t\t\treturn this._buf;\n\t\t}\n\t\tlast() {\n\t\t\t\treturn this._last;\n\t\t}\n\t\terror() {\n\t\t\t\treturn this._error;\n\t\t}\n\t\tdebugPrint() {\n\t\t\t\tconst tokenStrings = [\n\t\t\t\t\t\t'EOF',\n\t\t\t\t\t\t'ERROR',\n\t\t\t\t\t\t'TEXT',\n\t\t\t\t\t\t'OPEN_BRACKET',\n\t\t\t\t\t\t'CLOSE_BRACKET',\n\t\t\t\t\t\t'EQUALS',\n\t\t\t\t\t\t'STRING',\n\t\t\t\t\t\t'IDENTIFIER',\n\t\t\t\t\t\t'WHITESPACE'\n\t\t\t\t];\n\t\t\t\tlet token = this.read();\n\t\t\t\tlet result = '';\n\t\t\t\twhile(true){\n\t\t\t\t\t\tresult += `${(result.length > 0 ? '\\n' : '') + tokenStrings[token]} '${this.buf().join('')}'`;\n\t\t\t\t\t\tif (token === EOF_TOKEN || token === ERROR_TOKEN) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttoken = this.read();\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t}\n\t\t_read() {\n\t\t\t\tthis._buf = [];\n\t\t\t\tif (this._eof()) {\n\t\t\t\t\t\treturn EOF_TOKEN;\n\t\t\t\t}\n\t\t\t\treturn this._mode === 'text' ? this._text() : this._tag();\n\t\t}\n\t\t_text() {\n\t\t\t\twhile(true){\n\t\t\t\t\t\tswitch(this._cur){\n\t\t\t\t\t\t\t\tcase null:\n\t\t\t\t\t\t\t\t\t\treturn this._buf.length > 0 ? TEXT_TOKEN : EOF_TOKEN;\n\t\t\t\t\t\t\t\tcase '[':\n\t\t\t\t\t\t\t\t\t\tthis._mode = 'tag';\n\t\t\t\t\t\t\t\t\t\treturn this._buf.length > 0 ? TEXT_TOKEN : this._tag();\n\t\t\t\t\t\t\t\tcase '\\\\':\n\t\t\t\t\t\t\t\t\t\tthis._next();\n\t\t\t\t\t\t\t\t\t\tswitch(this._cur){\n\t\t\t\t\t\t\t\t\t\t\t\tcase '[':\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis._store();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis._output('\\\\');\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tthis._store();\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_tag() {\n\t\t\t\tswitch(this._cur){\n\t\t\t\t\t\tcase null:\n\t\t\t\t\t\t\t\tthis._error = 'unexpected end of input reading tag';\n\t\t\t\t\t\t\t\treturn ERROR_TOKEN;\n\t\t\t\t\t\tcase '[':\n\t\t\t\t\t\t\t\tthis._store();\n\t\t\t\t\t\t\t\treturn OPEN_BRACKET_TOKEN;\n\t\t\t\t\t\tcase ']':\n\t\t\t\t\t\t\t\tthis._store();\n\t\t\t\t\t\t\t\tthis._mode = 'text';\n\t\t\t\t\t\t\t\treturn CLOSE_BRACKET_TOKEN;\n\t\t\t\t\t\tcase '=':\n\t\t\t\t\t\t\t\tthis._store();\n\t\t\t\t\t\t\t\treturn EQUALS_TOKEN;\n\t\t\t\t\t\tcase ' ':\n\t\t\t\t\t\tcase '\\t':\n\t\t\t\t\t\tcase '\\n':\n\t\t\t\t\t\tcase '\\r':\n\t\t\t\t\t\tcase '\\v':\n\t\t\t\t\t\tcase '\\f':\n\t\t\t\t\t\t\t\treturn this._whitespace();\n\t\t\t\t\t\tcase '\"':\n\t\t\t\t\t\t\t\treturn this._string();\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tif (!this._isIdentifierSymbol(this._cur)) {\n\t\t\t\t\t\t\t\t\t\tthis._error = 'unrecognized character';\n\t\t\t\t\t\t\t\t\t\treturn ERROR_TOKEN;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn this._identifier();\n\t\t\t\t}\n\t\t}\n\t\t_whitespace() {\n\t\t\t\tthis._store();\n\t\t\t\twhile(WHITESPACE_CHARS.indexOf(this._cur) !== -1){\n\t\t\t\t\t\tthis._store();\n\t\t\t\t}\n\t\t\t\treturn WHITESPACE_TOKEN;\n\t\t}\n\t\t_string() {\n\t\t\t\tthis._next();\n\t\t\t\twhile(true){\n\t\t\t\t\t\tswitch(this._cur){\n\t\t\t\t\t\t\t\tcase null:\n\t\t\t\t\t\t\t\t\t\tthis._error = 'unexpected end of input reading string';\n\t\t\t\t\t\t\t\t\t\treturn ERROR_TOKEN;\n\t\t\t\t\t\t\t\tcase '\"':\n\t\t\t\t\t\t\t\t\t\tthis._next();\n\t\t\t\t\t\t\t\t\t\treturn STRING_TOKEN;\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tthis._store();\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_identifier() {\n\t\t\t\tthis._store();\n\t\t\t\twhile(this._cur !== null && this._isIdentifierSymbol(this._cur)){\n\t\t\t\t\t\tthis._store();\n\t\t\t\t}\n\t\t\t\treturn IDENTIFIER_TOKEN;\n\t\t}\n\t\t_isIdentifierSymbol(s) {\n\t\t\t\treturn s.length === 1 && s.match(IDENTIFIER_REGEX) !== null;\n\t\t}\n\t\t_eof() {\n\t\t\t\treturn this._cur === null;\n\t\t}\n\t\t_next() {\n\t\t\t\tif (!this._eof()) {\n\t\t\t\t\t\tthis._index++;\n\t\t\t\t\t\tthis._cur = this._index < this._symbols.length ? this._symbols[this._index] : null;\n\t\t\t\t}\n\t\t\t\treturn this._cur;\n\t\t}\n\t\t_store() {\n\t\t\t\tthis._buf.push(this._cur);\n\t\t\t\treturn this._next();\n\t\t}\n\t\t_output(c) {\n\t\t\t\tthis._buf.push(c);\n\t\t}\n}\nclass Parser {\n\t\tconstructor(symbols){\n\t\t\t\tthis._scanner = new Scanner(symbols);\n\t\t\t\tthis._error = null;\n\t\t}\n\t\tparse(symbols, tags) {\n\t\t\t\twhile(true){\n\t\t\t\t\t\tconst token = this._scanner.read();\n\t\t\t\t\t\tswitch(token){\n\t\t\t\t\t\t\t\tcase EOF_TOKEN:\n\t\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\tcase ERROR_TOKEN:\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\tcase TEXT_TOKEN:\n\t\t\t\t\t\t\t\t\t\tArray.prototype.push.apply(symbols, this._scanner.buf());\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase OPEN_BRACKET_TOKEN:\n\t\t\t\t\t\t\t\t\t\tif (!this._parseTag(symbols, tags)) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\terror() {\n\t\t\t\treturn `Error evaluating markup at #${this._scanner.last().toString()} (${this._scanner.error() || this._error})`;\n\t\t}\n\t\t_parseTag(symbols, tags) {\n\t\t\t\tlet token = this._scanner.read();\n\t\t\t\tif (token !== IDENTIFIER_TOKEN) {\n\t\t\t\t\t\tthis._error = 'expected identifier';\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tconst name = this._scanner.buf().join('');\n\t\t\t\tif (name[0] === '/') {\n\t\t\t\t\t\tfor(let index = tags.length - 1; index >= 0; --index){\n\t\t\t\t\t\t\t\tif (name === `/${tags[index].name}` && tags[index].end === null) {\n\t\t\t\t\t\t\t\t\t\ttags[index].end = symbols.length;\n\t\t\t\t\t\t\t\t\t\ttoken = this._scanner.read();\n\t\t\t\t\t\t\t\t\t\tif (token !== CLOSE_BRACKET_TOKEN) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._error = 'expected close bracket';\n\t\t\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._error = 'failed to find matching tag';\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tconst tag = {\n\t\t\t\t\t\tname: name,\n\t\t\t\t\t\tvalue: null,\n\t\t\t\t\t\tattributes: {},\n\t\t\t\t\t\tstart: symbols.length,\n\t\t\t\t\t\tend: null\n\t\t\t\t};\n\t\t\t\ttoken = this._scanner.read();\n\t\t\t\tif (token === EQUALS_TOKEN) {\n\t\t\t\t\t\ttoken = this._scanner.read();\n\t\t\t\t\t\tif (token !== STRING_TOKEN) {\n\t\t\t\t\t\t\t\tthis._error = 'expected string';\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttag.value = this._scanner.buf().join('');\n\t\t\t\t\t\ttoken = this._scanner.read();\n\t\t\t\t}\n\t\t\t\twhile(true){\n\t\t\t\t\t\tswitch(token){\n\t\t\t\t\t\t\t\tcase CLOSE_BRACKET_TOKEN:\n\t\t\t\t\t\t\t\t\t\ttags.push(tag);\n\t\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\tcase IDENTIFIER_TOKEN:\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tconst identifier = this._scanner.buf().join('');\n\t\t\t\t\t\t\t\t\t\t\t\ttoken = this._scanner.read();\n\t\t\t\t\t\t\t\t\t\t\t\tif (token !== EQUALS_TOKEN) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis._error = 'expected equals';\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\ttoken = this._scanner.read();\n\t\t\t\t\t\t\t\t\t\t\t\tif (token !== STRING_TOKEN) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis._error = 'expected string';\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tconst value = this._scanner.buf().join('');\n\t\t\t\t\t\t\t\t\t\t\t\ttag.attributes[identifier] = value;\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tthis._error = 'expected close bracket or identifier';\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttoken = this._scanner.read();\n\t\t\t\t}\n\t\t}\n}\nfunction merge(target, source) {\n\t\tfor(const key in source){\n\t\t\t\tif (!source.hasOwnProperty(key)) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst value = source[key];\n\t\t\t\tif (value instanceof Object) {\n\t\t\t\t\t\tif (!target.hasOwnProperty(key)) {\n\t\t\t\t\t\t\t\ttarget[key] = {};\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmerge(target[key], source[key]);\n\t\t\t\t} else {\n\t\t\t\t\t\ttarget[key] = value;\n\t\t\t\t}\n\t\t}\n}\nfunction combineTags(tags) {\n\t\tif (tags.length === 0) {\n\t\t\t\treturn null;\n\t\t}\n\t\tconst result = {};\n\t\tfor(let index = 0; index < tags.length; ++index){\n\t\t\t\tconst tag = tags[index];\n\t\t\t\tconst tmp = {};\n\t\t\t\ttmp[tag.name] = {\n\t\t\t\t\t\tvalue: tag.value,\n\t\t\t\t\t\tattributes: tag.attributes\n\t\t\t\t};\n\t\t\t\tmerge(result, tmp);\n\t\t}\n\t\treturn result;\n}\nfunction resolveMarkupTags(tags, numSymbols) {\n\t\tif (tags.length === 0) {\n\t\t\t\treturn null;\n\t\t}\n\t\tconst edges = {};\n\t\tfor(let index = 0; index < tags.length; ++index){\n\t\t\t\tconst tag = tags[index];\n\t\t\t\tif (!edges.hasOwnProperty(tag.start)) {\n\t\t\t\t\t\tedges[tag.start] = {\n\t\t\t\t\t\t\t\topen: [\n\t\t\t\t\t\t\t\t\t\ttag\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tclose: null\n\t\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\t\tif (edges[tag.start].open === null) {\n\t\t\t\t\t\t\t\tedges[tag.start].open = [\n\t\t\t\t\t\t\t\t\t\ttag\n\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tedges[tag.start].open.push(tag);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!edges.hasOwnProperty(tag.end)) {\n\t\t\t\t\t\tedges[tag.end] = {\n\t\t\t\t\t\t\t\topen: null,\n\t\t\t\t\t\t\t\tclose: [\n\t\t\t\t\t\t\t\t\t\ttag\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\t\tif (edges[tag.end].close === null) {\n\t\t\t\t\t\t\t\tedges[tag.end].close = [\n\t\t\t\t\t\t\t\t\t\ttag\n\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tedges[tag.end].close.push(tag);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tlet tagStack = [];\n\t\tfunction removeTags(tags) {\n\t\t\t\ttagStack = tagStack.filter((tag)=>{\n\t\t\t\t\t\treturn tags.find((t)=>{\n\t\t\t\t\t\t\t\treturn t === tag;\n\t\t\t\t\t\t}) === undefined;\n\t\t\t\t});\n\t\t}\n\t\tfunction addTags(tags) {\n\t\t\t\tfor(let index = 0; index < tags.length; ++index){\n\t\t\t\t\t\ttagStack.push(tags[index]);\n\t\t\t\t}\n\t\t}\n\t\tconst edgeKeys = Object.keys(edges).sort((a, b)=>{\n\t\t\t\treturn a - b;\n\t\t});\n\t\tconst resolvedTags = [];\n\t\tfor(let index = 0; index < edgeKeys.length; ++index){\n\t\t\t\tconst edge = edges[edgeKeys[index]];\n\t\t\t\tif (edge.close !== null) {\n\t\t\t\t\t\tremoveTags(edge.close);\n\t\t\t\t}\n\t\t\t\tif (edge.open !== null) {\n\t\t\t\t\t\taddTags(edge.open);\n\t\t\t\t}\n\t\t\t\tresolvedTags.push({\n\t\t\t\t\t\tstart: edgeKeys[index],\n\t\t\t\t\t\ttags: combineTags(tagStack)\n\t\t\t\t});\n\t\t}\n\t\tconst result = [];\n\t\tlet prevTag = null;\n\t\tfor(let index = 0; index < resolvedTags.length; ++index){\n\t\t\t\tconst resolvedTag = resolvedTags[index];\n\t\t\t\twhile(result.length < resolvedTag.start){\n\t\t\t\t\t\tresult.push(prevTag ? prevTag.tags : null);\n\t\t\t\t}\n\t\t\t\tprevTag = resolvedTag;\n\t\t}\n\t\twhile(result.length < numSymbols){\n\t\t\t\tresult.push(null);\n\t\t}\n\t\treturn result;\n}\nfunction evaluateMarkup(symbols) {\n\t\tconst parser = new Parser(symbols);\n\t\tconst stripped_symbols = [];\n\t\tconst tags = [];\n\t\tif (!parser.parse(stripped_symbols, tags)) {\n\t\t\t\tconsole.warn(parser.error());\n\t\t\t\treturn {\n\t\t\t\t\t\tsymbols: symbols,\n\t\t\t\t\t\ttags: null\n\t\t\t\t};\n\t\t}\n\t\tconst invalidTag = tags.find((t)=>{\n\t\t\t\treturn t.end === null;\n\t\t});\n\t\tif (invalidTag) {\n\t\t\t\tconsole.warn(`Markup error: found unclosed tag='${invalidTag.name}'`);\n\t\t\t\treturn {\n\t\t\t\t\t\tsymbols: symbols,\n\t\t\t\t\t\ttags: null\n\t\t\t\t};\n\t\t}\n\t\tconst resolved_tags = resolveMarkupTags(tags, stripped_symbols.length);\n\t\treturn {\n\t\t\t\tsymbols: stripped_symbols,\n\t\t\t\ttags: resolved_tags\n\t\t};\n}\nclass Markup {\n\t\tstatic evaluate(symbols) {\n\t\t\t\treturn evaluateMarkup(symbols);\n\t\t}\n}\n\nclass MeshInfo {\n\t\tconstructor(){\n\t\t\t\tthis.count = 0;\n\t\t\t\tthis.quad = 0;\n\t\t\t\tthis.lines = {};\n\t\t\t\tthis.positions = [];\n\t\t\t\tthis.normals = [];\n\t\t\t\tthis.uvs = [];\n\t\t\t\tthis.colors = [];\n\t\t\t\tthis.indices = [];\n\t\t\t\tthis.outlines = [];\n\t\t\t\tthis.shadows = [];\n\t\t\t\tthis.meshInstance = null;\n\t\t}\n}\nfunction createTextMesh(device, meshInfo) {\n\t\tconst mesh = new Mesh(device);\n\t\tmesh.setPositions(meshInfo.positions);\n\t\tmesh.setNormals(meshInfo.normals);\n\t\tmesh.setColors32(meshInfo.colors);\n\t\tmesh.setUvs(0, meshInfo.uvs);\n\t\tmesh.setIndices(meshInfo.indices);\n\t\tmesh.setVertexStream(SEMANTIC_ATTR8, meshInfo.outlines, 3, undefined, TYPE_FLOAT32, false);\n\t\tmesh.setVertexStream(SEMANTIC_ATTR9, meshInfo.shadows, 3, undefined, TYPE_FLOAT32, false);\n\t\tmesh.update();\n\t\treturn mesh;\n}\nconst LINE_BREAK_CHAR = /^[\\r\\n]$/;\nconst WHITESPACE_CHAR = /^[ \\t]$/;\nconst WORD_BOUNDARY_CHAR = /^[ \\t\\-]|\\u200b$/;\nconst ALPHANUMERIC_CHAR = /^[a-z0-9]$/i;\nconst CJK_CHAR = /^[\\u1100-\\u11ff]|[\\u3000-\\u9fff\\ua960-\\ua97f]|[\\uac00-\\ud7ff]$/;\nconst NO_LINE_BREAK_CJK_CHAR = /^[〕〉》」』】〙〗〟ヽヾーァィゥェォッャュョヮヵヶぁぃぅぇぉっゃゅょゎゕゖㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇺㇻㇼㇽㇾㇿ々〻]$/;\nconst CONTROL_CHARS = [\n\t\t'\\u200B',\n\t\t'\\u061C',\n\t\t'\\u200E',\n\t\t'\\u200F',\n\t\t'\\u202A',\n\t\t'\\u202B',\n\t\t'\\u202C',\n\t\t'\\u202D',\n\t\t'\\u202E',\n\t\t'\\u2066',\n\t\t'\\u2067',\n\t\t'\\u2068',\n\t\t'\\u2069'\n];\nconst CONTROL_GLYPH_DATA = {\n\t\twidth: 0,\n\t\theight: 0,\n\t\txadvance: 0,\n\t\txoffset: 0,\n\t\tyoffset: 0\n};\nconst colorTmp = new Color();\nconst vec2Tmp = new Vec2();\nconst _tempColor$1 = new Color();\nclass TextElement {\n\t\tconstructor(element){\n\t\t\t\tthis._element = element;\n\t\t\t\tthis._system = element.system;\n\t\t\t\tthis._entity = element.entity;\n\t\t\t\tthis._text = '';\n\t\t\t\tthis._symbols = [];\n\t\t\t\tthis._colorPalette = [];\n\t\t\t\tthis._outlinePalette = [];\n\t\t\t\tthis._shadowPalette = [];\n\t\t\t\tthis._symbolColors = null;\n\t\t\t\tthis._symbolOutlineParams = null;\n\t\t\t\tthis._symbolShadowParams = null;\n\t\t\t\tthis._i18nKey = null;\n\t\t\t\tthis._fontAsset = new LocalizedAsset(this._system.app);\n\t\t\t\tthis._fontAsset.disableLocalization = true;\n\t\t\t\tthis._fontAsset.on('load', this._onFontLoad, this);\n\t\t\t\tthis._fontAsset.on('change', this._onFontChange, this);\n\t\t\t\tthis._fontAsset.on('remove', this._onFontRemove, this);\n\t\t\t\tthis._font = null;\n\t\t\t\tthis._color = new Color(1, 1, 1, 1);\n\t\t\t\tthis._colorUniform = new Float32Array(3);\n\t\t\t\tthis._spacing = 1;\n\t\t\t\tthis._fontSize = 32;\n\t\t\t\tthis._fontMinY = 0;\n\t\t\t\tthis._fontMaxY = 0;\n\t\t\t\tthis._originalFontSize = 32;\n\t\t\t\tthis._maxFontSize = 32;\n\t\t\t\tthis._minFontSize = 8;\n\t\t\t\tthis._autoFitWidth = false;\n\t\t\t\tthis._autoFitHeight = false;\n\t\t\t\tthis._maxLines = -1;\n\t\t\t\tthis._lineHeight = 32;\n\t\t\t\tthis._scaledLineHeight = 32;\n\t\t\t\tthis._wrapLines = false;\n\t\t\t\tthis._drawOrder = 0;\n\t\t\t\tthis._alignment = new Vec2(0.5, 0.5);\n\t\t\t\tthis._autoWidth = true;\n\t\t\t\tthis._autoHeight = true;\n\t\t\t\tthis.width = 0;\n\t\t\t\tthis.height = 0;\n\t\t\t\tthis._node = new GraphNode();\n\t\t\t\tthis._model = new Model();\n\t\t\t\tthis._model.graph = this._node;\n\t\t\t\tthis._entity.addChild(this._node);\n\t\t\t\tthis._meshInfo = [];\n\t\t\t\tthis._material = null;\n\t\t\t\tthis._aabbDirty = true;\n\t\t\t\tthis._aabb = new BoundingBox();\n\t\t\t\tthis._noResize = false;\n\t\t\t\tthis._currentMaterialType = null;\n\t\t\t\tthis._maskedMaterialSrc = null;\n\t\t\t\tthis._rtlReorder = false;\n\t\t\t\tthis._unicodeConverter = false;\n\t\t\t\tthis._rtl = false;\n\t\t\t\tthis._outlineColor = new Color(0, 0, 0, 1);\n\t\t\t\tthis._outlineColorUniform = new Float32Array(4);\n\t\t\t\tthis._outlineThicknessScale = 0.2;\n\t\t\t\tthis._outlineThickness = 0.0;\n\t\t\t\tthis._shadowColor = new Color(0, 0, 0, 1);\n\t\t\t\tthis._shadowColorUniform = new Float32Array(4);\n\t\t\t\tthis._shadowOffsetScale = 0.005;\n\t\t\t\tthis._shadowOffset = new Vec2(0, 0);\n\t\t\t\tthis._shadowOffsetUniform = new Float32Array(2);\n\t\t\t\tthis._enableMarkup = false;\n\t\t\t\tthis._onScreenChange(this._element.screen);\n\t\t\t\telement.on('resize', this._onParentResize, this);\n\t\t\t\telement.on('set:screen', this._onScreenChange, this);\n\t\t\t\telement.on('screen:set:screenspace', this._onScreenSpaceChange, this);\n\t\t\t\telement.on('set:draworder', this._onDrawOrderChange, this);\n\t\t\t\telement.on('set:pivot', this._onPivotChange, this);\n\t\t\t\tthis._system.app.i18n.on(I18n.EVENT_CHANGE, this._onLocaleSet, this);\n\t\t\t\tthis._system.app.i18n.on('data:add', this._onLocalizationData, this);\n\t\t\t\tthis._system.app.i18n.on('data:remove', this._onLocalizationData, this);\n\t\t\t\tthis._rangeStart = 0;\n\t\t\t\tthis._rangeEnd = 0;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis._setMaterial(null);\n\t\t\t\tif (this._model) {\n\t\t\t\t\t\tthis._element.removeModelFromLayers(this._model);\n\t\t\t\t\t\tthis._model.destroy();\n\t\t\t\t\t\tthis._model = null;\n\t\t\t\t}\n\t\t\t\tthis._fontAsset.destroy();\n\t\t\t\tthis.font = null;\n\t\t\t\tthis._element.off('resize', this._onParentResize, this);\n\t\t\t\tthis._element.off('set:screen', this._onScreenChange, this);\n\t\t\t\tthis._element.off('screen:set:screenspace', this._onScreenSpaceChange, this);\n\t\t\t\tthis._element.off('set:draworder', this._onDrawOrderChange, this);\n\t\t\t\tthis._element.off('set:pivot', this._onPivotChange, this);\n\t\t\t\tthis._system.app.i18n.off(I18n.EVENT_CHANGE, this._onLocaleSet, this);\n\t\t\t\tthis._system.app.i18n.off('data:add', this._onLocalizationData, this);\n\t\t\t\tthis._system.app.i18n.off('data:remove', this._onLocalizationData, this);\n\t\t}\n\t\t_onParentResize(width, height) {\n\t\t\t\tif (this._noResize) return;\n\t\t\t\tif (this._font) this._updateText();\n\t\t}\n\t\t_onScreenChange(screen) {\n\t\t\t\tif (screen) {\n\t\t\t\t\t\tthis._updateMaterial(screen.screen.screenSpace);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._updateMaterial(false);\n\t\t\t\t}\n\t\t}\n\t\t_onScreenSpaceChange(value) {\n\t\t\t\tthis._updateMaterial(value);\n\t\t}\n\t\t_onDrawOrderChange(order) {\n\t\t\t\tthis._drawOrder = order;\n\t\t\t\tif (this._model) {\n\t\t\t\t\t\tfor(let i = 0, len = this._model.meshInstances.length; i < len; i++){\n\t\t\t\t\t\t\t\tthis._model.meshInstances[i].drawOrder = order;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_onPivotChange(pivot) {\n\t\t\t\tif (this._font) {\n\t\t\t\t\t\tthis._updateText();\n\t\t\t\t}\n\t\t}\n\t\t_onLocaleSet(locale) {\n\t\t\t\tif (!this._i18nKey) return;\n\t\t\t\tif (this.fontAsset) {\n\t\t\t\t\t\tconst asset = this._system.app.assets.get(this.fontAsset);\n\t\t\t\t\t\tif (!asset || !asset.resource || asset.resource !== this._font) {\n\t\t\t\t\t\t\t\tthis.font = null;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._resetLocalizedText();\n\t\t}\n\t\t_onLocalizationData(locale, messages) {\n\t\t\t\tif (this._i18nKey && messages[this._i18nKey]) {\n\t\t\t\t\t\tthis._resetLocalizedText();\n\t\t\t\t}\n\t\t}\n\t\t_resetLocalizedText() {\n\t\t\t\tthis._setText(this._system.app.i18n.getText(this._i18nKey));\n\t\t}\n\t\t_setText(text) {\n\t\t\t\tif (this.unicodeConverter) {\n\t\t\t\t\t\tconst unicodeConverterFunc = this._system.getUnicodeConverter();\n\t\t\t\t\t\tif (unicodeConverterFunc) {\n\t\t\t\t\t\t\t\ttext = unicodeConverterFunc(text);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconsole.warn('Element created with unicodeConverter option but no unicodeConverter function registered');\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this._text !== text) {\n\t\t\t\t\t\tif (this._font) {\n\t\t\t\t\t\t\t\tthis._updateText(text);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._text = text;\n\t\t\t\t}\n\t\t}\n\t\t_updateText(text) {\n\t\t\t\tlet tags;\n\t\t\t\tif (text === undefined) text = this._text;\n\t\t\t\tthis._symbols = string.getSymbols(text.normalize ? text.normalize('NFC') : text);\n\t\t\t\tif (this._symbols.length === 0) {\n\t\t\t\t\t\tthis._symbols = [\n\t\t\t\t\t\t\t\t' '\n\t\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t\tif (this._enableMarkup) {\n\t\t\t\t\t\tconst results = Markup.evaluate(this._symbols);\n\t\t\t\t\t\tthis._symbols = results.symbols;\n\t\t\t\t\t\ttags = results.tags || [];\n\t\t\t\t}\n\t\t\t\tif (this._rtlReorder) {\n\t\t\t\t\t\tconst rtlReorderFunc = this._system.app.systems.element.getRtlReorder();\n\t\t\t\t\t\tif (rtlReorderFunc) {\n\t\t\t\t\t\t\t\tconst results = rtlReorderFunc(this._symbols);\n\t\t\t\t\t\t\t\tthis._rtl = results.rtl;\n\t\t\t\t\t\t\t\tthis._symbols = results.mapping.map(function(v) {\n\t\t\t\t\t\t\t\t\t\treturn this._symbols[v];\n\t\t\t\t\t\t\t\t}, this);\n\t\t\t\t\t\t\t\tif (tags) {\n\t\t\t\t\t\t\t\t\t\ttags = results.mapping.map((v)=>{\n\t\t\t\t\t\t\t\t\t\t\t\treturn tags[v];\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconsole.warn('Element created with rtlReorder option but no rtlReorder function registered');\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._rtl = false;\n\t\t\t\t}\n\t\t\t\tconst getColorThicknessHash = (color, thickness)=>{\n\t\t\t\t\t\treturn `${color.toString(true).toLowerCase()}:${thickness.toFixed(2)}`;\n\t\t\t\t};\n\t\t\t\tconst getColorOffsetHash = (color, offset)=>{\n\t\t\t\t\t\treturn `${color.toString(true).toLowerCase()}:${offset.x.toFixed(2)}:${offset.y.toFixed(2)}`;\n\t\t\t\t};\n\t\t\t\tif (tags) {\n\t\t\t\t\t\tconst paletteMap = {};\n\t\t\t\t\t\tconst outlinePaletteMap = {};\n\t\t\t\t\t\tconst shadowPaletteMap = {};\n\t\t\t\t\t\tthis._colorPalette = [\n\t\t\t\t\t\t\t\tMath.round(this._color.r * 255),\n\t\t\t\t\t\t\t\tMath.round(this._color.g * 255),\n\t\t\t\t\t\t\t\tMath.round(this._color.b * 255)\n\t\t\t\t\t\t];\n\t\t\t\t\t\tthis._outlinePalette = [\n\t\t\t\t\t\t\t\tMath.round(this._outlineColor.r * 255),\n\t\t\t\t\t\t\t\tMath.round(this._outlineColor.g * 255),\n\t\t\t\t\t\t\t\tMath.round(this._outlineColor.b * 255),\n\t\t\t\t\t\t\t\tMath.round(this._outlineColor.a * 255),\n\t\t\t\t\t\t\t\tMath.round(this._outlineThickness * 255)\n\t\t\t\t\t\t];\n\t\t\t\t\t\tthis._shadowPalette = [\n\t\t\t\t\t\t\t\tMath.round(this._shadowColor.r * 255),\n\t\t\t\t\t\t\t\tMath.round(this._shadowColor.g * 255),\n\t\t\t\t\t\t\t\tMath.round(this._shadowColor.b * 255),\n\t\t\t\t\t\t\t\tMath.round(this._shadowColor.a * 255),\n\t\t\t\t\t\t\t\tMath.round(this._shadowOffset.x * 127),\n\t\t\t\t\t\t\t\tMath.round(this._shadowOffset.y * 127)\n\t\t\t\t\t\t];\n\t\t\t\t\t\tthis._symbolColors = [];\n\t\t\t\t\t\tthis._symbolOutlineParams = [];\n\t\t\t\t\t\tthis._symbolShadowParams = [];\n\t\t\t\t\t\tpaletteMap[this._color.toString(false).toLowerCase()] = 0;\n\t\t\t\t\t\toutlinePaletteMap[getColorThicknessHash(this._outlineColor, this._outlineThickness)] = 0;\n\t\t\t\t\t\tshadowPaletteMap[getColorOffsetHash(this._shadowColor, this._shadowOffset)] = 0;\n\t\t\t\t\t\tfor(let i = 0, len = this._symbols.length; i < len; ++i){\n\t\t\t\t\t\t\t\tconst tag = tags[i];\n\t\t\t\t\t\t\t\tlet color = 0;\n\t\t\t\t\t\t\t\tif (tag && tag.color && tag.color.value) {\n\t\t\t\t\t\t\t\t\t\tconst c = tag.color.value;\n\t\t\t\t\t\t\t\t\t\tif (c.length === 7 && c[0] === '#') {\n\t\t\t\t\t\t\t\t\t\t\t\tconst hex = c.substring(1).toLowerCase();\n\t\t\t\t\t\t\t\t\t\t\t\tif (paletteMap.hasOwnProperty(hex)) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolor = paletteMap[hex];\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (/^[0-9a-f]{6}$/.test(hex)) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolor = this._colorPalette.length / 3;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tpaletteMap[hex] = color;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis._colorPalette.push(parseInt(hex.substring(0, 2), 16));\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis._colorPalette.push(parseInt(hex.substring(2, 4), 16));\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis._colorPalette.push(parseInt(hex.substring(4, 6), 16));\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis._symbolColors.push(color);\n\t\t\t\t\t\t\t\tlet outline = 0;\n\t\t\t\t\t\t\t\tif (tag && tag.outline && (tag.outline.attributes.color || tag.outline.attributes.thickness)) {\n\t\t\t\t\t\t\t\t\t\tlet color = tag.outline.attributes.color ? colorTmp.fromString(tag.outline.attributes.color) : this._outlineColor;\n\t\t\t\t\t\t\t\t\t\tlet thickness = Number(tag.outline.attributes.thickness);\n\t\t\t\t\t\t\t\t\t\tif (Number.isNaN(color.r) || Number.isNaN(color.g) || Number.isNaN(color.b) || Number.isNaN(color.a)) {\n\t\t\t\t\t\t\t\t\t\t\t\tcolor = this._outlineColor;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (Number.isNaN(thickness)) {\n\t\t\t\t\t\t\t\t\t\t\t\tthickness = this._outlineThickness;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tconst outlineHash = getColorThicknessHash(color, thickness);\n\t\t\t\t\t\t\t\t\t\tif (outlinePaletteMap.hasOwnProperty(outlineHash)) {\n\t\t\t\t\t\t\t\t\t\t\t\toutline = outlinePaletteMap[outlineHash];\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\toutline = this._outlinePalette.length / 5;\n\t\t\t\t\t\t\t\t\t\t\t\toutlinePaletteMap[outlineHash] = outline;\n\t\t\t\t\t\t\t\t\t\t\t\tthis._outlinePalette.push(Math.round(color.r * 255), Math.round(color.g * 255), Math.round(color.b * 255), Math.round(color.a * 255), Math.round(thickness * 255));\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis._symbolOutlineParams.push(outline);\n\t\t\t\t\t\t\t\tlet shadow = 0;\n\t\t\t\t\t\t\t\tif (tag && tag.shadow && (tag.shadow.attributes.color || tag.shadow.attributes.offset || tag.shadow.attributes.offsetX || tag.shadow.attributes.offsetY)) {\n\t\t\t\t\t\t\t\t\t\tlet color = tag.shadow.attributes.color ? colorTmp.fromString(tag.shadow.attributes.color) : this._shadowColor;\n\t\t\t\t\t\t\t\t\t\tconst off = Number(tag.shadow.attributes.offset);\n\t\t\t\t\t\t\t\t\t\tconst offX = Number(tag.shadow.attributes.offsetX);\n\t\t\t\t\t\t\t\t\t\tconst offY = Number(tag.shadow.attributes.offsetY);\n\t\t\t\t\t\t\t\t\t\tif (Number.isNaN(color.r) || Number.isNaN(color.g) || Number.isNaN(color.b) || Number.isNaN(color.a)) {\n\t\t\t\t\t\t\t\t\t\t\t\tcolor = this._shadowColor;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tconst offset = vec2Tmp.set(!Number.isNaN(offX) ? offX : !Number.isNaN(off) ? off : this._shadowOffset.x, !Number.isNaN(offY) ? offY : !Number.isNaN(off) ? off : this._shadowOffset.y);\n\t\t\t\t\t\t\t\t\t\tconst shadowHash = getColorOffsetHash(color, offset);\n\t\t\t\t\t\t\t\t\t\tif (shadowPaletteMap.hasOwnProperty(shadowHash)) {\n\t\t\t\t\t\t\t\t\t\t\t\tshadow = shadowPaletteMap[shadowHash];\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tshadow = this._shadowPalette.length / 6;\n\t\t\t\t\t\t\t\t\t\t\t\tshadowPaletteMap[shadowHash] = shadow;\n\t\t\t\t\t\t\t\t\t\t\t\tthis._shadowPalette.push(Math.round(color.r * 255), Math.round(color.g * 255), Math.round(color.b * 255), Math.round(color.a * 255), Math.round(offset.x * 127), Math.round(offset.y * 127));\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis._symbolShadowParams.push(shadow);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._colorPalette = [];\n\t\t\t\t\t\tthis._symbolColors = null;\n\t\t\t\t\t\tthis._symbolOutlineParams = null;\n\t\t\t\t\t\tthis._symbolShadowParams = null;\n\t\t\t\t}\n\t\t\t\tthis._updateMaterialEmissive();\n\t\t\t\tthis._updateMaterialOutline();\n\t\t\t\tthis._updateMaterialShadow();\n\t\t\t\tconst charactersPerTexture = this._calculateCharsPerTexture();\n\t\t\t\tlet removedModel = false;\n\t\t\t\tconst element = this._element;\n\t\t\t\tconst screenSpace = element._isScreenSpace();\n\t\t\t\tconst screenCulled = element._isScreenCulled();\n\t\t\t\tconst visibleFn = function(camera) {\n\t\t\t\t\t\treturn element.isVisibleForCamera(camera);\n\t\t\t\t};\n\t\t\t\tfor(let i = 0, len = this._meshInfo.length; i < len; i++){\n\t\t\t\t\t\tconst l = charactersPerTexture[i] || 0;\n\t\t\t\t\t\tconst meshInfo = this._meshInfo[i];\n\t\t\t\t\t\tif (meshInfo.count !== l) {\n\t\t\t\t\t\t\t\tif (!removedModel) {\n\t\t\t\t\t\t\t\t\t\telement.removeModelFromLayers(this._model);\n\t\t\t\t\t\t\t\t\t\tremovedModel = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tmeshInfo.count = l;\n\t\t\t\t\t\t\t\tmeshInfo.positions.length = meshInfo.normals.length = l * 3 * 4;\n\t\t\t\t\t\t\t\tmeshInfo.indices.length = l * 3 * 2;\n\t\t\t\t\t\t\t\tmeshInfo.uvs.length = l * 2 * 4;\n\t\t\t\t\t\t\t\tmeshInfo.colors.length = l * 4 * 4;\n\t\t\t\t\t\t\t\tmeshInfo.outlines.length = l * 4 * 3;\n\t\t\t\t\t\t\t\tmeshInfo.shadows.length = l * 4 * 3;\n\t\t\t\t\t\t\t\tif (meshInfo.meshInstance) {\n\t\t\t\t\t\t\t\t\t\tthis._removeMeshInstance(meshInfo.meshInstance);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (l === 0) {\n\t\t\t\t\t\t\t\t\t\tmeshInfo.meshInstance = null;\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tfor(let v = 0; v < l; v++){\n\t\t\t\t\t\t\t\t\t\tmeshInfo.indices[v * 3 * 2 + 0] = v * 4;\n\t\t\t\t\t\t\t\t\t\tmeshInfo.indices[v * 3 * 2 + 1] = v * 4 + 1;\n\t\t\t\t\t\t\t\t\t\tmeshInfo.indices[v * 3 * 2 + 2] = v * 4 + 3;\n\t\t\t\t\t\t\t\t\t\tmeshInfo.indices[v * 3 * 2 + 3] = v * 4 + 2;\n\t\t\t\t\t\t\t\t\t\tmeshInfo.indices[v * 3 * 2 + 4] = v * 4 + 3;\n\t\t\t\t\t\t\t\t\t\tmeshInfo.indices[v * 3 * 2 + 5] = v * 4 + 1;\n\t\t\t\t\t\t\t\t\t\tmeshInfo.normals[v * 4 * 3 + 0] = 0;\n\t\t\t\t\t\t\t\t\t\tmeshInfo.normals[v * 4 * 3 + 1] = 0;\n\t\t\t\t\t\t\t\t\t\tmeshInfo.normals[v * 4 * 3 + 2] = -1;\n\t\t\t\t\t\t\t\t\t\tmeshInfo.normals[v * 4 * 3 + 3] = 0;\n\t\t\t\t\t\t\t\t\t\tmeshInfo.normals[v * 4 * 3 + 4] = 0;\n\t\t\t\t\t\t\t\t\t\tmeshInfo.normals[v * 4 * 3 + 5] = -1;\n\t\t\t\t\t\t\t\t\t\tmeshInfo.normals[v * 4 * 3 + 6] = 0;\n\t\t\t\t\t\t\t\t\t\tmeshInfo.normals[v * 4 * 3 + 7] = 0;\n\t\t\t\t\t\t\t\t\t\tmeshInfo.normals[v * 4 * 3 + 8] = -1;\n\t\t\t\t\t\t\t\t\t\tmeshInfo.normals[v * 4 * 3 + 9] = 0;\n\t\t\t\t\t\t\t\t\t\tmeshInfo.normals[v * 4 * 3 + 10] = 0;\n\t\t\t\t\t\t\t\t\t\tmeshInfo.normals[v * 4 * 3 + 11] = -1;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst mesh = createTextMesh(this._system.app.graphicsDevice, meshInfo);\n\t\t\t\t\t\t\t\tconst mi = new MeshInstance(mesh, this._material, this._node);\n\t\t\t\t\t\t\t\tmi.name = `Text Element: ${this._entity.name}`;\n\t\t\t\t\t\t\t\tmi.castShadow = false;\n\t\t\t\t\t\t\t\tmi.receiveShadow = false;\n\t\t\t\t\t\t\t\tmi.cull = !screenSpace;\n\t\t\t\t\t\t\t\tmi.screenSpace = screenSpace;\n\t\t\t\t\t\t\t\tmi.drawOrder = this._drawOrder;\n\t\t\t\t\t\t\t\tif (screenCulled) {\n\t\t\t\t\t\t\t\t\t\tmi.cull = true;\n\t\t\t\t\t\t\t\t\t\tmi.isVisibleFunc = visibleFn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis._setTextureParams(mi, this._font.textures[i]);\n\t\t\t\t\t\t\t\tmi.setParameter('material_emissive', this._colorUniform);\n\t\t\t\t\t\t\t\tmi.setParameter('material_opacity', this._color.a);\n\t\t\t\t\t\t\t\tmi.setParameter('font_sdfIntensity', this._font.intensity);\n\t\t\t\t\t\t\t\tmi.setParameter('font_pxrange', this._getPxRange(this._font));\n\t\t\t\t\t\t\t\tmi.setParameter('font_textureWidth', this._font.data.info.maps[i].width);\n\t\t\t\t\t\t\t\tmi.setParameter('outline_color', this._outlineColorUniform);\n\t\t\t\t\t\t\t\tmi.setParameter('outline_thickness', this._outlineThicknessScale * this._outlineThickness);\n\t\t\t\t\t\t\t\tmi.setParameter('shadow_color', this._shadowColorUniform);\n\t\t\t\t\t\t\t\tif (this._symbolShadowParams) {\n\t\t\t\t\t\t\t\t\t\tthis._shadowOffsetUniform[0] = 0;\n\t\t\t\t\t\t\t\t\t\tthis._shadowOffsetUniform[1] = 0;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tconst ratio = -this._font.data.info.maps[i].width / this._font.data.info.maps[i].height;\n\t\t\t\t\t\t\t\t\t\tthis._shadowOffsetUniform[0] = this._shadowOffsetScale * this._shadowOffset.x;\n\t\t\t\t\t\t\t\t\t\tthis._shadowOffsetUniform[1] = ratio * this._shadowOffsetScale * this._shadowOffset.y;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tmi.setParameter('shadow_offset', this._shadowOffsetUniform);\n\t\t\t\t\t\t\t\tmeshInfo.meshInstance = mi;\n\t\t\t\t\t\t\t\tthis._model.meshInstances.push(mi);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this._element.maskedBy) {\n\t\t\t\t\t\tthis._element._setMaskedBy(this._element.maskedBy);\n\t\t\t\t}\n\t\t\t\tif (removedModel && this._element.enabled && this._entity.enabled) {\n\t\t\t\t\t\tthis._element.addModelToLayers(this._model);\n\t\t\t\t}\n\t\t\t\tthis._updateMeshes();\n\t\t\t\tthis._rangeStart = 0;\n\t\t\t\tthis._rangeEnd = this._symbols.length;\n\t\t\t\tthis._updateRenderRange();\n\t\t}\n\t\t_removeMeshInstance(meshInstance) {\n\t\t\t\tmeshInstance.destroy();\n\t\t\t\tconst idx = this._model.meshInstances.indexOf(meshInstance);\n\t\t\t\tif (idx !== -1) {\n\t\t\t\t\t\tthis._model.meshInstances.splice(idx, 1);\n\t\t\t\t}\n\t\t}\n\t\t_setMaterial(material) {\n\t\t\t\tthis._material = material;\n\t\t\t\tif (this._model) {\n\t\t\t\t\t\tfor(let i = 0, len = this._model.meshInstances.length; i < len; i++){\n\t\t\t\t\t\t\t\tconst mi = this._model.meshInstances[i];\n\t\t\t\t\t\t\t\tmi.material = material;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_updateMaterial(screenSpace) {\n\t\t\t\tconst element = this._element;\n\t\t\t\tconst screenCulled = element._isScreenCulled();\n\t\t\t\tconst visibleFn = function(camera) {\n\t\t\t\t\t\treturn element.isVisibleForCamera(camera);\n\t\t\t\t};\n\t\t\t\tconst msdf = this._font && this._font.type === FONT_MSDF;\n\t\t\t\tthis._material = this._system.getTextElementMaterial(screenSpace, msdf, this._enableMarkup);\n\t\t\t\tif (this._model) {\n\t\t\t\t\t\tfor(let i = 0, len = this._model.meshInstances.length; i < len; i++){\n\t\t\t\t\t\t\t\tconst mi = this._model.meshInstances[i];\n\t\t\t\t\t\t\t\tmi.cull = !screenSpace;\n\t\t\t\t\t\t\t\tmi.material = this._material;\n\t\t\t\t\t\t\t\tmi.screenSpace = screenSpace;\n\t\t\t\t\t\t\t\tif (screenCulled) {\n\t\t\t\t\t\t\t\t\t\tmi.cull = true;\n\t\t\t\t\t\t\t\t\t\tmi.isVisibleFunc = visibleFn;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tmi.isVisibleFunc = null;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_updateMaterialEmissive() {\n\t\t\t\tif (this._symbolColors) {\n\t\t\t\t\t\tthis._colorUniform[0] = 1;\n\t\t\t\t\t\tthis._colorUniform[1] = 1;\n\t\t\t\t\t\tthis._colorUniform[2] = 1;\n\t\t\t\t} else {\n\t\t\t\t\t\t_tempColor$1.linear(this._color);\n\t\t\t\t\t\tthis._colorUniform[0] = _tempColor$1.r;\n\t\t\t\t\t\tthis._colorUniform[1] = _tempColor$1.g;\n\t\t\t\t\t\tthis._colorUniform[2] = _tempColor$1.b;\n\t\t\t\t}\n\t\t}\n\t\t_updateMaterialOutline() {\n\t\t\t\tif (this._symbolOutlineParams) {\n\t\t\t\t\t\tthis._outlineColorUniform[0] = 0;\n\t\t\t\t\t\tthis._outlineColorUniform[1] = 0;\n\t\t\t\t\t\tthis._outlineColorUniform[2] = 0;\n\t\t\t\t\t\tthis._outlineColorUniform[3] = 1;\n\t\t\t\t} else {\n\t\t\t\t\t\t_tempColor$1.linear(this._outlineColor);\n\t\t\t\t\t\tthis._outlineColorUniform[0] = _tempColor$1.r;\n\t\t\t\t\t\tthis._outlineColorUniform[1] = _tempColor$1.g;\n\t\t\t\t\t\tthis._outlineColorUniform[2] = _tempColor$1.b;\n\t\t\t\t\t\tthis._outlineColorUniform[3] = _tempColor$1.a;\n\t\t\t\t}\n\t\t}\n\t\t_updateMaterialShadow() {\n\t\t\t\tif (this._symbolOutlineParams) {\n\t\t\t\t\t\tthis._shadowColorUniform[0] = 0;\n\t\t\t\t\t\tthis._shadowColorUniform[1] = 0;\n\t\t\t\t\t\tthis._shadowColorUniform[2] = 0;\n\t\t\t\t\t\tthis._shadowColorUniform[3] = 0;\n\t\t\t\t} else {\n\t\t\t\t\t\t_tempColor$1.linear(this._shadowColor);\n\t\t\t\t\t\tthis._shadowColorUniform[0] = _tempColor$1.r;\n\t\t\t\t\t\tthis._shadowColorUniform[1] = _tempColor$1.g;\n\t\t\t\t\t\tthis._shadowColorUniform[2] = _tempColor$1.b;\n\t\t\t\t\t\tthis._shadowColorUniform[3] = _tempColor$1.a;\n\t\t\t\t}\n\t\t}\n\t\t_isWordBoundary(char) {\n\t\t\t\treturn WORD_BOUNDARY_CHAR.test(char);\n\t\t}\n\t\t_isValidNextChar(nextchar) {\n\t\t\t\treturn nextchar !== null && !NO_LINE_BREAK_CJK_CHAR.test(nextchar);\n\t\t}\n\t\t_isNextCJKBoundary(char, nextchar) {\n\t\t\t\treturn CJK_CHAR.test(char) && (WORD_BOUNDARY_CHAR.test(nextchar) || ALPHANUMERIC_CHAR.test(nextchar));\n\t\t}\n\t\t_isNextCJKWholeWord(nextchar) {\n\t\t\t\treturn CJK_CHAR.test(nextchar);\n\t\t}\n\t\t_updateMeshes() {\n\t\t\t\tconst json = this._font.data;\n\t\t\t\tconst self = this;\n\t\t\t\tconst minFont = Math.min(this._minFontSize, this._maxFontSize);\n\t\t\t\tconst maxFont = this._maxFontSize;\n\t\t\t\tconst autoFit = this._shouldAutoFit();\n\t\t\t\tif (autoFit) {\n\t\t\t\t\t\tthis._fontSize = this._maxFontSize;\n\t\t\t\t}\n\t\t\t\tconst MAGIC = 32;\n\t\t\t\tconst l = this._symbols.length;\n\t\t\t\tlet _x = 0;\n\t\t\t\tlet _y = 0;\n\t\t\t\tlet _z = 0;\n\t\t\t\tlet _xMinusTrailingWhitespace = 0;\n\t\t\t\tlet lines = 1;\n\t\t\t\tlet wordStartX = 0;\n\t\t\t\tlet wordStartIndex = 0;\n\t\t\t\tlet lineStartIndex = 0;\n\t\t\t\tlet numWordsThisLine = 0;\n\t\t\t\tlet numCharsThisLine = 0;\n\t\t\t\tlet numBreaksThisLine = 0;\n\t\t\t\tconst splitHorizontalAnchors = Math.abs(this._element.anchor.x - this._element.anchor.z) >= 0.0001;\n\t\t\t\tlet maxLineWidth = this._element.calculatedWidth;\n\t\t\t\tif (this.autoWidth && !splitHorizontalAnchors || !this._wrapLines) {\n\t\t\t\t\t\tmaxLineWidth = Number.POSITIVE_INFINITY;\n\t\t\t\t}\n\t\t\t\tlet fontMinY = 0;\n\t\t\t\tlet fontMaxY = 0;\n\t\t\t\tlet char, data, quad, nextchar;\n\t\t\t\tfunction breakLine(symbols, lineBreakIndex, lineBreakX) {\n\t\t\t\t\t\tself._lineWidths.push(Math.abs(lineBreakX));\n\t\t\t\t\t\tconst sliceStart = lineStartIndex > lineBreakIndex ? lineBreakIndex + 1 : lineStartIndex;\n\t\t\t\t\t\tconst sliceEnd = lineStartIndex > lineBreakIndex ? lineStartIndex + 1 : lineBreakIndex;\n\t\t\t\t\t\tconst chars = symbols.slice(sliceStart, sliceEnd);\n\t\t\t\t\t\tif (numBreaksThisLine) {\n\t\t\t\t\t\t\t\tlet i = chars.length;\n\t\t\t\t\t\t\t\twhile(i-- && numBreaksThisLine > 0){\n\t\t\t\t\t\t\t\t\t\tif (LINE_BREAK_CHAR.test(chars[i])) {\n\t\t\t\t\t\t\t\t\t\t\t\tchars.splice(i, 1);\n\t\t\t\t\t\t\t\t\t\t\t\tnumBreaksThisLine--;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tself._lineContents.push(chars.join(''));\n\t\t\t\t\t\t_x = 0;\n\t\t\t\t\t\t_y -= self._scaledLineHeight;\n\t\t\t\t\t\tlines++;\n\t\t\t\t\t\tnumWordsThisLine = 0;\n\t\t\t\t\t\tnumCharsThisLine = 0;\n\t\t\t\t\t\tnumBreaksThisLine = 0;\n\t\t\t\t\t\twordStartX = 0;\n\t\t\t\t\t\tlineStartIndex = lineBreakIndex;\n\t\t\t\t}\n\t\t\t\tlet retryUpdateMeshes = true;\n\t\t\t\twhile(retryUpdateMeshes){\n\t\t\t\t\t\tretryUpdateMeshes = false;\n\t\t\t\t\t\tif (autoFit) {\n\t\t\t\t\t\t\t\tthis._scaledLineHeight = this._lineHeight * this._fontSize / (this._maxFontSize || 0.0001);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._scaledLineHeight = this._lineHeight;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.width = 0;\n\t\t\t\t\t\tthis.height = 0;\n\t\t\t\t\t\tthis._lineWidths = [];\n\t\t\t\t\t\tthis._lineContents = [];\n\t\t\t\t\t\t_x = 0;\n\t\t\t\t\t\t_y = 0;\n\t\t\t\t\t\t_z = 0;\n\t\t\t\t\t\t_xMinusTrailingWhitespace = 0;\n\t\t\t\t\t\tlines = 1;\n\t\t\t\t\t\twordStartX = 0;\n\t\t\t\t\t\twordStartIndex = 0;\n\t\t\t\t\t\tlineStartIndex = 0;\n\t\t\t\t\t\tnumWordsThisLine = 0;\n\t\t\t\t\t\tnumCharsThisLine = 0;\n\t\t\t\t\t\tnumBreaksThisLine = 0;\n\t\t\t\t\t\tconst scale = this._fontSize / MAGIC;\n\t\t\t\t\t\tfontMinY = this._fontMinY * scale;\n\t\t\t\t\t\tfontMaxY = this._fontMaxY * scale;\n\t\t\t\t\t\tfor(let i = 0; i < this._meshInfo.length; i++){\n\t\t\t\t\t\t\t\tthis._meshInfo[i].quad = 0;\n\t\t\t\t\t\t\t\tthis._meshInfo[i].lines = {};\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlet color_r = 255;\n\t\t\t\t\t\tlet color_g = 255;\n\t\t\t\t\t\tlet color_b = 255;\n\t\t\t\t\t\tlet outline_color_rg = 255 + 255 * 256;\n\t\t\t\t\t\tlet outline_color_ba = 255 + 255 * 256;\n\t\t\t\t\t\tlet outline_thickness = 0;\n\t\t\t\t\t\tlet shadow_color_rg = 255 + 255 * 256;\n\t\t\t\t\t\tlet shadow_color_ba = 255 + 255 * 256;\n\t\t\t\t\t\tlet shadow_offset_xy = 127 + 127 * 256;\n\t\t\t\t\t\tfor(let i = 0; i < l; i++){\n\t\t\t\t\t\t\t\tchar = this._symbols[i];\n\t\t\t\t\t\t\t\tnextchar = i + 1 >= l ? null : this._symbols[i + 1];\n\t\t\t\t\t\t\t\tconst isLineBreak = LINE_BREAK_CHAR.test(char);\n\t\t\t\t\t\t\t\tif (isLineBreak) {\n\t\t\t\t\t\t\t\t\t\tnumBreaksThisLine++;\n\t\t\t\t\t\t\t\t\t\tif (!this._wrapLines || this._maxLines < 0 || lines < this._maxLines) {\n\t\t\t\t\t\t\t\t\t\t\t\tbreakLine(this._symbols, i, _xMinusTrailingWhitespace);\n\t\t\t\t\t\t\t\t\t\t\t\twordStartIndex = i + 1;\n\t\t\t\t\t\t\t\t\t\t\t\tlineStartIndex = i + 1;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tlet x = 0;\n\t\t\t\t\t\t\t\tlet y = 0;\n\t\t\t\t\t\t\t\tlet advance = 0;\n\t\t\t\t\t\t\t\tlet quadsize = 1;\n\t\t\t\t\t\t\t\tlet dataScale, size;\n\t\t\t\t\t\t\t\tdata = json.chars[char];\n\t\t\t\t\t\t\t\tif (!data) {\n\t\t\t\t\t\t\t\t\t\tif (CONTROL_CHARS.indexOf(char) !== -1) {\n\t\t\t\t\t\t\t\t\t\t\t\tdata = CONTROL_GLYPH_DATA;\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tif (json.chars[' ']) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdata = json.chars[' '];\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor(const key in json.chars){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdata = json.chars[key];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (data) {\n\t\t\t\t\t\t\t\t\t\tlet kerning = 0;\n\t\t\t\t\t\t\t\t\t\tif (numCharsThisLine > 0) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst kernTable = this._font.data.kerning;\n\t\t\t\t\t\t\t\t\t\t\t\tif (kernTable) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst kernLeft = kernTable[string.getCodePoint(this._symbols[i - 1]) || 0];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (kernLeft) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tkerning = kernLeft[string.getCodePoint(this._symbols[i]) || 0] || 0;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tdataScale = data.scale || 1;\n\t\t\t\t\t\t\t\t\t\tsize = (data.width + data.height) / 2;\n\t\t\t\t\t\t\t\t\t\tquadsize = scale * size / dataScale;\n\t\t\t\t\t\t\t\t\t\tadvance = (data.xadvance + kerning) * scale;\n\t\t\t\t\t\t\t\t\t\tx = (data.xoffset - kerning) * scale;\n\t\t\t\t\t\t\t\t\t\ty = data.yoffset * scale;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tconsole.error(`Couldn't substitute missing character: '${char}'`);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst isWhitespace = WHITESPACE_CHAR.test(char);\n\t\t\t\t\t\t\t\tconst meshInfoId = data && data.map || 0;\n\t\t\t\t\t\t\t\tconst ratio = -this._font.data.info.maps[meshInfoId].width / this._font.data.info.maps[meshInfoId].height;\n\t\t\t\t\t\t\t\tconst meshInfo = this._meshInfo[meshInfoId];\n\t\t\t\t\t\t\t\tconst candidateLineWidth = _x + this._spacing * advance;\n\t\t\t\t\t\t\t\tif (candidateLineWidth > maxLineWidth && numCharsThisLine > 0 && !isWhitespace) {\n\t\t\t\t\t\t\t\t\t\tif (this._maxLines < 0 || lines < this._maxLines) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (numWordsThisLine === 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\twordStartIndex = i;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreakLine(this._symbols, i, _xMinusTrailingWhitespace);\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst backtrack = Math.max(i - wordStartIndex, 0);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (this._meshInfo.length <= 1) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tmeshInfo.lines[lines - 1] -= backtrack;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tmeshInfo.quad -= backtrack;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst backtrackStart = wordStartIndex;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst backtrackEnd = i;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor(let j = backtrackStart; j < backtrackEnd; j++){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst backChar = this._symbols[j];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst backCharData = json.chars[backChar];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst backMeshInfo = this._meshInfo[backCharData && backCharData.map || 0];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbackMeshInfo.lines[lines - 1] -= 1;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbackMeshInfo.quad -= 1;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ti -= backtrack + 1;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreakLine(this._symbols, wordStartIndex, wordStartX);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tquad = meshInfo.quad;\n\t\t\t\t\t\t\t\tmeshInfo.lines[lines - 1] = quad;\n\t\t\t\t\t\t\t\tlet left = _x - x;\n\t\t\t\t\t\t\t\tlet right = left + quadsize;\n\t\t\t\t\t\t\t\tconst bottom = _y - y;\n\t\t\t\t\t\t\t\tconst top = bottom + quadsize;\n\t\t\t\t\t\t\t\tif (this._rtl) {\n\t\t\t\t\t\t\t\t\t\tconst shift = quadsize - x - this._spacing * advance - x;\n\t\t\t\t\t\t\t\t\t\tleft -= shift;\n\t\t\t\t\t\t\t\t\t\tright -= shift;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tmeshInfo.positions[quad * 4 * 3 + 0] = left;\n\t\t\t\t\t\t\t\tmeshInfo.positions[quad * 4 * 3 + 1] = bottom;\n\t\t\t\t\t\t\t\tmeshInfo.positions[quad * 4 * 3 + 2] = _z;\n\t\t\t\t\t\t\t\tmeshInfo.positions[quad * 4 * 3 + 3] = right;\n\t\t\t\t\t\t\t\tmeshInfo.positions[quad * 4 * 3 + 4] = bottom;\n\t\t\t\t\t\t\t\tmeshInfo.positions[quad * 4 * 3 + 5] = _z;\n\t\t\t\t\t\t\t\tmeshInfo.positions[quad * 4 * 3 + 6] = right;\n\t\t\t\t\t\t\t\tmeshInfo.positions[quad * 4 * 3 + 7] = top;\n\t\t\t\t\t\t\t\tmeshInfo.positions[quad * 4 * 3 + 8] = _z;\n\t\t\t\t\t\t\t\tmeshInfo.positions[quad * 4 * 3 + 9] = left;\n\t\t\t\t\t\t\t\tmeshInfo.positions[quad * 4 * 3 + 10] = top;\n\t\t\t\t\t\t\t\tmeshInfo.positions[quad * 4 * 3 + 11] = _z;\n\t\t\t\t\t\t\t\tthis.width = Math.max(this.width, candidateLineWidth);\n\t\t\t\t\t\t\t\tlet fontSize;\n\t\t\t\t\t\t\t\tif (this._shouldAutoFitWidth() && this.width > this._element.calculatedWidth) {\n\t\t\t\t\t\t\t\t\t\tfontSize = Math.floor(this._element.fontSize * this._element.calculatedWidth / (this.width || 0.0001));\n\t\t\t\t\t\t\t\t\t\tfontSize = math.clamp(fontSize, minFont, maxFont);\n\t\t\t\t\t\t\t\t\t\tif (fontSize !== this._element.fontSize) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._fontSize = fontSize;\n\t\t\t\t\t\t\t\t\t\t\t\tretryUpdateMeshes = true;\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.height = Math.max(this.height, fontMaxY - (_y + fontMinY));\n\t\t\t\t\t\t\t\tif (this._shouldAutoFitHeight() && this.height > this._element.calculatedHeight) {\n\t\t\t\t\t\t\t\t\t\tfontSize = math.clamp(this._fontSize - 1, minFont, maxFont);\n\t\t\t\t\t\t\t\t\t\tif (fontSize !== this._element.fontSize) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._fontSize = fontSize;\n\t\t\t\t\t\t\t\t\t\t\t\tretryUpdateMeshes = true;\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t_x += this._spacing * advance;\n\t\t\t\t\t\t\t\tif (!isWhitespace) {\n\t\t\t\t\t\t\t\t\t\t_xMinusTrailingWhitespace = _x;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (this._isWordBoundary(char) || this._isValidNextChar(nextchar) && (this._isNextCJKBoundary(char, nextchar) || this._isNextCJKWholeWord(nextchar))) {\n\t\t\t\t\t\t\t\t\t\tnumWordsThisLine++;\n\t\t\t\t\t\t\t\t\t\twordStartX = _xMinusTrailingWhitespace;\n\t\t\t\t\t\t\t\t\t\twordStartIndex = i + 1;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tnumCharsThisLine++;\n\t\t\t\t\t\t\t\tconst uv = this._getUv(char);\n\t\t\t\t\t\t\t\tmeshInfo.uvs[quad * 4 * 2 + 0] = uv[0];\n\t\t\t\t\t\t\t\tmeshInfo.uvs[quad * 4 * 2 + 1] = 1.0 - uv[1];\n\t\t\t\t\t\t\t\tmeshInfo.uvs[quad * 4 * 2 + 2] = uv[2];\n\t\t\t\t\t\t\t\tmeshInfo.uvs[quad * 4 * 2 + 3] = 1.0 - uv[1];\n\t\t\t\t\t\t\t\tmeshInfo.uvs[quad * 4 * 2 + 4] = uv[2];\n\t\t\t\t\t\t\t\tmeshInfo.uvs[quad * 4 * 2 + 5] = 1.0 - uv[3];\n\t\t\t\t\t\t\t\tmeshInfo.uvs[quad * 4 * 2 + 6] = uv[0];\n\t\t\t\t\t\t\t\tmeshInfo.uvs[quad * 4 * 2 + 7] = 1.0 - uv[3];\n\t\t\t\t\t\t\t\tif (this._symbolColors) {\n\t\t\t\t\t\t\t\t\t\tconst colorIdx = this._symbolColors[i] * 3;\n\t\t\t\t\t\t\t\t\t\tcolor_r = this._colorPalette[colorIdx];\n\t\t\t\t\t\t\t\t\t\tcolor_g = this._colorPalette[colorIdx + 1];\n\t\t\t\t\t\t\t\t\t\tcolor_b = this._colorPalette[colorIdx + 2];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tmeshInfo.colors[quad * 4 * 4 + 0] = color_r;\n\t\t\t\t\t\t\t\tmeshInfo.colors[quad * 4 * 4 + 1] = color_g;\n\t\t\t\t\t\t\t\tmeshInfo.colors[quad * 4 * 4 + 2] = color_b;\n\t\t\t\t\t\t\t\tmeshInfo.colors[quad * 4 * 4 + 3] = 255;\n\t\t\t\t\t\t\t\tmeshInfo.colors[quad * 4 * 4 + 4] = color_r;\n\t\t\t\t\t\t\t\tmeshInfo.colors[quad * 4 * 4 + 5] = color_g;\n\t\t\t\t\t\t\t\tmeshInfo.colors[quad * 4 * 4 + 6] = color_b;\n\t\t\t\t\t\t\t\tmeshInfo.colors[quad * 4 * 4 + 7] = 255;\n\t\t\t\t\t\t\t\tmeshInfo.colors[quad * 4 * 4 + 8] = color_r;\n\t\t\t\t\t\t\t\tmeshInfo.colors[quad * 4 * 4 + 9] = color_g;\n\t\t\t\t\t\t\t\tmeshInfo.colors[quad * 4 * 4 + 10] = color_b;\n\t\t\t\t\t\t\t\tmeshInfo.colors[quad * 4 * 4 + 11] = 255;\n\t\t\t\t\t\t\t\tmeshInfo.colors[quad * 4 * 4 + 12] = color_r;\n\t\t\t\t\t\t\t\tmeshInfo.colors[quad * 4 * 4 + 13] = color_g;\n\t\t\t\t\t\t\t\tmeshInfo.colors[quad * 4 * 4 + 14] = color_b;\n\t\t\t\t\t\t\t\tmeshInfo.colors[quad * 4 * 4 + 15] = 255;\n\t\t\t\t\t\t\t\tif (this._symbolOutlineParams) {\n\t\t\t\t\t\t\t\t\t\tconst outlineIdx = this._symbolOutlineParams[i] * 5;\n\t\t\t\t\t\t\t\t\t\toutline_color_rg = this._outlinePalette[outlineIdx] + this._outlinePalette[outlineIdx + 1] * 256;\n\t\t\t\t\t\t\t\t\t\toutline_color_ba = this._outlinePalette[outlineIdx + 2] + this._outlinePalette[outlineIdx + 3] * 256;\n\t\t\t\t\t\t\t\t\t\toutline_thickness = this._outlinePalette[outlineIdx + 4];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tmeshInfo.outlines[quad * 4 * 3 + 0] = outline_color_rg;\n\t\t\t\t\t\t\t\tmeshInfo.outlines[quad * 4 * 3 + 1] = outline_color_ba;\n\t\t\t\t\t\t\t\tmeshInfo.outlines[quad * 4 * 3 + 2] = outline_thickness;\n\t\t\t\t\t\t\t\tmeshInfo.outlines[quad * 4 * 3 + 3] = outline_color_rg;\n\t\t\t\t\t\t\t\tmeshInfo.outlines[quad * 4 * 3 + 4] = outline_color_ba;\n\t\t\t\t\t\t\t\tmeshInfo.outlines[quad * 4 * 3 + 5] = outline_thickness;\n\t\t\t\t\t\t\t\tmeshInfo.outlines[quad * 4 * 3 + 6] = outline_color_rg;\n\t\t\t\t\t\t\t\tmeshInfo.outlines[quad * 4 * 3 + 7] = outline_color_ba;\n\t\t\t\t\t\t\t\tmeshInfo.outlines[quad * 4 * 3 + 8] = outline_thickness;\n\t\t\t\t\t\t\t\tmeshInfo.outlines[quad * 4 * 3 + 9] = outline_color_rg;\n\t\t\t\t\t\t\t\tmeshInfo.outlines[quad * 4 * 3 + 10] = outline_color_ba;\n\t\t\t\t\t\t\t\tmeshInfo.outlines[quad * 4 * 3 + 11] = outline_thickness;\n\t\t\t\t\t\t\t\tif (this._symbolShadowParams) {\n\t\t\t\t\t\t\t\t\t\tconst shadowIdx = this._symbolShadowParams[i] * 6;\n\t\t\t\t\t\t\t\t\t\tshadow_color_rg = this._shadowPalette[shadowIdx] + this._shadowPalette[shadowIdx + 1] * 256;\n\t\t\t\t\t\t\t\t\t\tshadow_color_ba = this._shadowPalette[shadowIdx + 2] + this._shadowPalette[shadowIdx + 3] * 256;\n\t\t\t\t\t\t\t\t\t\tshadow_offset_xy = this._shadowPalette[shadowIdx + 4] + 127 + Math.round(ratio * this._shadowPalette[shadowIdx + 5] + 127) * 256;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tmeshInfo.shadows[quad * 4 * 3 + 0] = shadow_color_rg;\n\t\t\t\t\t\t\t\tmeshInfo.shadows[quad * 4 * 3 + 1] = shadow_color_ba;\n\t\t\t\t\t\t\t\tmeshInfo.shadows[quad * 4 * 3 + 2] = shadow_offset_xy;\n\t\t\t\t\t\t\t\tmeshInfo.shadows[quad * 4 * 3 + 3] = shadow_color_rg;\n\t\t\t\t\t\t\t\tmeshInfo.shadows[quad * 4 * 3 + 4] = shadow_color_ba;\n\t\t\t\t\t\t\t\tmeshInfo.shadows[quad * 4 * 3 + 5] = shadow_offset_xy;\n\t\t\t\t\t\t\t\tmeshInfo.shadows[quad * 4 * 3 + 6] = shadow_color_rg;\n\t\t\t\t\t\t\t\tmeshInfo.shadows[quad * 4 * 3 + 7] = shadow_color_ba;\n\t\t\t\t\t\t\t\tmeshInfo.shadows[quad * 4 * 3 + 8] = shadow_offset_xy;\n\t\t\t\t\t\t\t\tmeshInfo.shadows[quad * 4 * 3 + 9] = shadow_color_rg;\n\t\t\t\t\t\t\t\tmeshInfo.shadows[quad * 4 * 3 + 10] = shadow_color_ba;\n\t\t\t\t\t\t\t\tmeshInfo.shadows[quad * 4 * 3 + 11] = shadow_offset_xy;\n\t\t\t\t\t\t\t\tmeshInfo.quad++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (retryUpdateMeshes) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (lineStartIndex < l) {\n\t\t\t\t\t\t\t\tbreakLine(this._symbols, l, _x);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._noResize = true;\n\t\t\t\tthis.autoWidth = this._autoWidth;\n\t\t\t\tthis.autoHeight = this._autoHeight;\n\t\t\t\tthis._noResize = false;\n\t\t\t\tconst hp = this._element.pivot.x;\n\t\t\t\tconst vp = this._element.pivot.y;\n\t\t\t\tconst ha = this._alignment.x;\n\t\t\t\tconst va = this._alignment.y;\n\t\t\t\tfor(let i = 0; i < this._meshInfo.length; i++){\n\t\t\t\t\t\tif (this._meshInfo[i].count === 0) continue;\n\t\t\t\t\t\tlet prevQuad = 0;\n\t\t\t\t\t\tfor(const line in this._meshInfo[i].lines){\n\t\t\t\t\t\t\t\tconst index = this._meshInfo[i].lines[line];\n\t\t\t\t\t\t\t\tconst lw = this._lineWidths[parseInt(line, 10)];\n\t\t\t\t\t\t\t\tconst hoffset = -hp * this._element.calculatedWidth + ha * (this._element.calculatedWidth - lw) * (this._rtl ? -1 : 1);\n\t\t\t\t\t\t\t\tconst voffset = (1 - vp) * this._element.calculatedHeight - fontMaxY - (1 - va) * (this._element.calculatedHeight - this.height);\n\t\t\t\t\t\t\t\tfor(let quad = prevQuad; quad <= index; quad++){\n\t\t\t\t\t\t\t\t\t\tthis._meshInfo[i].positions[quad * 4 * 3] += hoffset;\n\t\t\t\t\t\t\t\t\t\tthis._meshInfo[i].positions[quad * 4 * 3 + 3] += hoffset;\n\t\t\t\t\t\t\t\t\t\tthis._meshInfo[i].positions[quad * 4 * 3 + 6] += hoffset;\n\t\t\t\t\t\t\t\t\t\tthis._meshInfo[i].positions[quad * 4 * 3 + 9] += hoffset;\n\t\t\t\t\t\t\t\t\t\tthis._meshInfo[i].positions[quad * 4 * 3 + 1] += voffset;\n\t\t\t\t\t\t\t\t\t\tthis._meshInfo[i].positions[quad * 4 * 3 + 4] += voffset;\n\t\t\t\t\t\t\t\t\t\tthis._meshInfo[i].positions[quad * 4 * 3 + 7] += voffset;\n\t\t\t\t\t\t\t\t\t\tthis._meshInfo[i].positions[quad * 4 * 3 + 10] += voffset;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (this._rtl) {\n\t\t\t\t\t\t\t\t\t\tfor(let quad = prevQuad; quad <= index; quad++){\n\t\t\t\t\t\t\t\t\t\t\t\tconst idx = quad * 4 * 3;\n\t\t\t\t\t\t\t\t\t\t\t\tfor(let vert = 0; vert < 4; ++vert){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis._meshInfo[i].positions[idx + vert * 3] = this._element.calculatedWidth - this._meshInfo[i].positions[idx + vert * 3] + hoffset * 2;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tconst tmp0 = this._meshInfo[i].positions[idx + 3];\n\t\t\t\t\t\t\t\t\t\t\t\tconst tmp1 = this._meshInfo[i].positions[idx + 6];\n\t\t\t\t\t\t\t\t\t\t\t\tthis._meshInfo[i].positions[idx + 3] = this._meshInfo[i].positions[idx + 0];\n\t\t\t\t\t\t\t\t\t\t\t\tthis._meshInfo[i].positions[idx + 6] = this._meshInfo[i].positions[idx + 9];\n\t\t\t\t\t\t\t\t\t\t\t\tthis._meshInfo[i].positions[idx + 0] = tmp0;\n\t\t\t\t\t\t\t\t\t\t\t\tthis._meshInfo[i].positions[idx + 9] = tmp1;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tprevQuad = index + 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst numVertices = this._meshInfo[i].count * 4;\n\t\t\t\t\t\tconst vertMax = this._meshInfo[i].quad * 4;\n\t\t\t\t\t\tconst it = new VertexIterator(this._meshInfo[i].meshInstance.mesh.vertexBuffer);\n\t\t\t\t\t\tfor(let v = 0; v < numVertices; v++){\n\t\t\t\t\t\t\t\tif (v >= vertMax) {\n\t\t\t\t\t\t\t\t\t\tit.element[SEMANTIC_POSITION].set(0, 0, 0);\n\t\t\t\t\t\t\t\t\t\tit.element[SEMANTIC_TEXCOORD0].set(0, 0);\n\t\t\t\t\t\t\t\t\t\tit.element[SEMANTIC_COLOR].set(0, 0, 0, 0);\n\t\t\t\t\t\t\t\t\t\tit.element[SEMANTIC_ATTR8].set(0, 0, 0, 0);\n\t\t\t\t\t\t\t\t\t\tit.element[SEMANTIC_ATTR9].set(0, 0, 0, 0);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tit.element[SEMANTIC_POSITION].set(this._meshInfo[i].positions[v * 3 + 0], this._meshInfo[i].positions[v * 3 + 1], this._meshInfo[i].positions[v * 3 + 2]);\n\t\t\t\t\t\t\t\t\t\tit.element[SEMANTIC_TEXCOORD0].set(this._meshInfo[i].uvs[v * 2 + 0], this._meshInfo[i].uvs[v * 2 + 1]);\n\t\t\t\t\t\t\t\t\t\tit.element[SEMANTIC_COLOR].set(this._meshInfo[i].colors[v * 4 + 0], this._meshInfo[i].colors[v * 4 + 1], this._meshInfo[i].colors[v * 4 + 2], this._meshInfo[i].colors[v * 4 + 3]);\n\t\t\t\t\t\t\t\t\t\tit.element[SEMANTIC_ATTR8].set(this._meshInfo[i].outlines[v * 3 + 0], this._meshInfo[i].outlines[v * 3 + 1], this._meshInfo[i].outlines[v * 3 + 2]);\n\t\t\t\t\t\t\t\t\t\tit.element[SEMANTIC_ATTR9].set(this._meshInfo[i].shadows[v * 3 + 0], this._meshInfo[i].shadows[v * 3 + 1], this._meshInfo[i].shadows[v * 3 + 2]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tit.next();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tit.end();\n\t\t\t\t\t\tthis._meshInfo[i].meshInstance.mesh.aabb.compute(this._meshInfo[i].positions);\n\t\t\t\t\t\tthis._meshInfo[i].meshInstance._aabbVer = -1;\n\t\t\t\t}\n\t\t\t\tthis._aabbDirty = true;\n\t\t}\n\t\t_onFontRender() {\n\t\t\t\tthis.font = this._font;\n\t\t}\n\t\t_onFontLoad(asset) {\n\t\t\t\tif (this.font !== asset.resource) {\n\t\t\t\t\t\tthis.font = asset.resource;\n\t\t\t\t}\n\t\t}\n\t\t_onFontChange(asset, name, _new, _old) {\n\t\t\t\tif (name === 'data') {\n\t\t\t\t\t\tthis._font.data = _new;\n\t\t\t\t\t\tconst maps = this._font.data.info.maps.length;\n\t\t\t\t\t\tfor(let i = 0; i < maps; i++){\n\t\t\t\t\t\t\t\tif (!this._meshInfo[i]) continue;\n\t\t\t\t\t\t\t\tconst mi = this._meshInfo[i].meshInstance;\n\t\t\t\t\t\t\t\tif (mi) {\n\t\t\t\t\t\t\t\t\t\tmi.setParameter('font_sdfIntensity', this._font.intensity);\n\t\t\t\t\t\t\t\t\t\tmi.setParameter('font_pxrange', this._getPxRange(this._font));\n\t\t\t\t\t\t\t\t\t\tmi.setParameter('font_textureWidth', this._font.data.info.maps[i].width);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_onFontRemove(asset) {}\n\t\t_setTextureParams(mi, texture) {\n\t\t\t\tif (this._font) {\n\t\t\t\t\t\tif (this._font.type === FONT_MSDF) {\n\t\t\t\t\t\t\t\tmi.deleteParameter('texture_emissiveMap');\n\t\t\t\t\t\t\t\tmi.deleteParameter('texture_opacityMap');\n\t\t\t\t\t\t\t\tmi.setParameter('texture_msdfMap', texture);\n\t\t\t\t\t\t} else if (this._font.type === FONT_BITMAP) {\n\t\t\t\t\t\t\t\tmi.deleteParameter('texture_msdfMap');\n\t\t\t\t\t\t\t\tmi.setParameter('texture_emissiveMap', texture);\n\t\t\t\t\t\t\t\tmi.setParameter('texture_opacityMap', texture);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_getPxRange(font) {\n\t\t\t\tconst keys = Object.keys(this._font.data.chars);\n\t\t\t\tfor(let i = 0; i < keys.length; i++){\n\t\t\t\t\t\tconst char = this._font.data.chars[keys[i]];\n\t\t\t\t\t\tif (char.range) {\n\t\t\t\t\t\t\t\treturn (char.scale || 1) * char.range;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn 2;\n\t\t}\n\t\t_getUv(char) {\n\t\t\t\tconst data = this._font.data;\n\t\t\t\tif (!data.chars[char]) {\n\t\t\t\t\t\tconst space = ' ';\n\t\t\t\t\t\tif (data.chars[space]) {\n\t\t\t\t\t\t\t\treturn this._getUv(space);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn [\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t\tconst map = data.chars[char].map;\n\t\t\t\tconst width = data.info.maps[map].width;\n\t\t\t\tconst height = data.info.maps[map].height;\n\t\t\t\tconst x = data.chars[char].x;\n\t\t\t\tconst y = data.chars[char].y;\n\t\t\t\tconst x1 = x;\n\t\t\t\tconst y1 = y;\n\t\t\t\tconst x2 = x + data.chars[char].width;\n\t\t\t\tconst y2 = y - data.chars[char].height;\n\t\t\t\tconst edge = 1 - data.chars[char].height / height;\n\t\t\t\treturn [\n\t\t\t\t\t\tx1 / width,\n\t\t\t\t\t\tedge - y1 / height,\n\t\t\t\t\t\tx2 / width,\n\t\t\t\t\t\tedge - y2 / height\n\t\t\t\t];\n\t\t}\n\t\tonEnable() {\n\t\t\t\tthis._fontAsset.autoLoad = true;\n\t\t\t\tif (this._model) {\n\t\t\t\t\t\tthis._element.addModelToLayers(this._model);\n\t\t\t\t}\n\t\t}\n\t\tonDisable() {\n\t\t\t\tthis._fontAsset.autoLoad = false;\n\t\t\t\tif (this._model) {\n\t\t\t\t\t\tthis._element.removeModelFromLayers(this._model);\n\t\t\t\t}\n\t\t}\n\t\t_setStencil(stencilParams) {\n\t\t\t\tif (this._model) {\n\t\t\t\t\t\tconst instances = this._model.meshInstances;\n\t\t\t\t\t\tfor(let i = 0; i < instances.length; i++){\n\t\t\t\t\t\t\t\tinstances[i].stencilFront = stencilParams;\n\t\t\t\t\t\t\t\tinstances[i].stencilBack = stencilParams;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_shouldAutoFitWidth() {\n\t\t\t\treturn this._autoFitWidth && !this._autoWidth;\n\t\t}\n\t\t_shouldAutoFitHeight() {\n\t\t\t\treturn this._autoFitHeight && !this._autoHeight;\n\t\t}\n\t\t_shouldAutoFit() {\n\t\t\t\treturn this._autoFitWidth && !this._autoWidth || this._autoFitHeight && !this._autoHeight;\n\t\t}\n\t\t_calculateCharsPerTexture(symbolIndex) {\n\t\t\t\tconst charactersPerTexture = {};\n\t\t\t\tif (symbolIndex === undefined) {\n\t\t\t\t\t\tsymbolIndex = this._symbols.length;\n\t\t\t\t}\n\t\t\t\tfor(let i = 0, len = symbolIndex; i < len; i++){\n\t\t\t\t\t\tconst char = this._symbols[i];\n\t\t\t\t\t\tlet info = this._font.data.chars[char];\n\t\t\t\t\t\tif (!info) {\n\t\t\t\t\t\t\t\tinfo = this._font.data.chars[' '];\n\t\t\t\t\t\t\t\tif (!info) {\n\t\t\t\t\t\t\t\t\t\tinfo = this._font.data.chars[Object.keys(this._font.data.chars)[0]];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst map = info.map;\n\t\t\t\t\t\tif (!charactersPerTexture[map]) {\n\t\t\t\t\t\t\t\tcharactersPerTexture[map] = 1;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcharactersPerTexture[map]++;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn charactersPerTexture;\n\t\t}\n\t\t_updateRenderRange() {\n\t\t\t\tconst startChars = this._rangeStart === 0 ? 0 : this._calculateCharsPerTexture(this._rangeStart);\n\t\t\t\tconst endChars = this._rangeEnd === 0 ? 0 : this._calculateCharsPerTexture(this._rangeEnd);\n\t\t\t\tfor(let i = 0, len = this._meshInfo.length; i < len; i++){\n\t\t\t\t\t\tconst start = startChars[i] || 0;\n\t\t\t\t\t\tconst end = endChars[i] || 0;\n\t\t\t\t\t\tconst instance = this._meshInfo[i].meshInstance;\n\t\t\t\t\t\tif (instance) {\n\t\t\t\t\t\t\t\tconst mesh = instance.mesh;\n\t\t\t\t\t\t\t\tif (mesh) {\n\t\t\t\t\t\t\t\t\t\tmesh.primitive[0].base = start * 3 * 2;\n\t\t\t\t\t\t\t\t\t\tmesh.primitive[0].count = (end - start) * 3 * 2;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tset text(value) {\n\t\t\t\tthis._i18nKey = null;\n\t\t\t\tconst str = value != null && value.toString() || '';\n\t\t\t\tthis._setText(str);\n\t\t}\n\t\tget text() {\n\t\t\t\treturn this._text;\n\t\t}\n\t\tset key(value) {\n\t\t\t\tconst str = value !== null ? value.toString() : null;\n\t\t\t\tif (this._i18nKey === str) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._i18nKey = str;\n\t\t\t\tif (str) {\n\t\t\t\t\t\tthis._fontAsset.disableLocalization = false;\n\t\t\t\t\t\tthis._resetLocalizedText();\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._fontAsset.disableLocalization = true;\n\t\t\t\t}\n\t\t}\n\t\tget key() {\n\t\t\t\treturn this._i18nKey;\n\t\t}\n\t\tset color(value) {\n\t\t\t\tconst r = value.r;\n\t\t\t\tconst g = value.g;\n\t\t\t\tconst b = value.b;\n\t\t\t\tif (this._color.r === r && this._color.g === g && this._color.b === b) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._color.r = r;\n\t\t\t\tthis._color.g = g;\n\t\t\t\tthis._color.b = b;\n\t\t\t\tif (!this._model) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this._symbolColors) {\n\t\t\t\t\t\tif (this._font) {\n\t\t\t\t\t\t\t\tthis._updateText();\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\t_tempColor$1.linear(this._color);\n\t\t\t\t\t\tthis._colorUniform[0] = _tempColor$1.r;\n\t\t\t\t\t\tthis._colorUniform[1] = _tempColor$1.g;\n\t\t\t\t\t\tthis._colorUniform[2] = _tempColor$1.b;\n\t\t\t\t\t\tfor(let i = 0, len = this._model.meshInstances.length; i < len; i++){\n\t\t\t\t\t\t\t\tconst mi = this._model.meshInstances[i];\n\t\t\t\t\t\t\t\tmi.setParameter('material_emissive', this._colorUniform);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this._element) {\n\t\t\t\t\t\tthis._element.fire('set:color', this._color);\n\t\t\t\t}\n\t\t}\n\t\tget color() {\n\t\t\t\treturn this._color;\n\t\t}\n\t\tset opacity(value) {\n\t\t\t\tif (this._color.a !== value) {\n\t\t\t\t\t\tthis._color.a = value;\n\t\t\t\t\t\tif (this._model) {\n\t\t\t\t\t\t\t\tfor(let i = 0, len = this._model.meshInstances.length; i < len; i++){\n\t\t\t\t\t\t\t\t\t\tconst mi = this._model.meshInstances[i];\n\t\t\t\t\t\t\t\t\t\tmi.setParameter('material_opacity', value);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this._element) {\n\t\t\t\t\t\tthis._element.fire('set:opacity', value);\n\t\t\t\t}\n\t\t}\n\t\tget opacity() {\n\t\t\t\treturn this._color.a;\n\t\t}\n\t\tset lineHeight(value) {\n\t\t\t\tconst _prev = this._lineHeight;\n\t\t\t\tthis._lineHeight = value;\n\t\t\t\tthis._scaledLineHeight = value;\n\t\t\t\tif (_prev !== value && this._font) {\n\t\t\t\t\t\tthis._updateText();\n\t\t\t\t}\n\t\t}\n\t\tget lineHeight() {\n\t\t\t\treturn this._lineHeight;\n\t\t}\n\t\tset wrapLines(value) {\n\t\t\t\tconst _prev = this._wrapLines;\n\t\t\t\tthis._wrapLines = value;\n\t\t\t\tif (_prev !== value && this._font) {\n\t\t\t\t\t\tthis._updateText();\n\t\t\t\t}\n\t\t}\n\t\tget wrapLines() {\n\t\t\t\treturn this._wrapLines;\n\t\t}\n\t\tget lines() {\n\t\t\t\treturn this._lineContents;\n\t\t}\n\t\tset spacing(value) {\n\t\t\t\tconst _prev = this._spacing;\n\t\t\t\tthis._spacing = value;\n\t\t\t\tif (_prev !== value && this._font) {\n\t\t\t\t\t\tthis._updateText();\n\t\t\t\t}\n\t\t}\n\t\tget spacing() {\n\t\t\t\treturn this._spacing;\n\t\t}\n\t\tset fontSize(value) {\n\t\t\t\tconst _prev = this._fontSize;\n\t\t\t\tthis._fontSize = value;\n\t\t\t\tthis._originalFontSize = value;\n\t\t\t\tif (_prev !== value && this._font) {\n\t\t\t\t\t\tthis._updateText();\n\t\t\t\t}\n\t\t}\n\t\tget fontSize() {\n\t\t\t\treturn this._fontSize;\n\t\t}\n\t\tset fontAsset(value) {\n\t\t\t\tthis._fontAsset.defaultAsset = value;\n\t\t}\n\t\tget fontAsset() {\n\t\t\t\treturn this._fontAsset.localizedAsset;\n\t\t}\n\t\tset font(value) {\n\t\t\t\tlet previousFontType;\n\t\t\t\tif (this._font) {\n\t\t\t\t\t\tpreviousFontType = this._font.type;\n\t\t\t\t\t\tif (this._font.off) this._font.off('render', this._onFontRender, this);\n\t\t\t\t}\n\t\t\t\tthis._font = value;\n\t\t\t\tthis._fontMinY = 0;\n\t\t\t\tthis._fontMaxY = 0;\n\t\t\t\tif (!value) return;\n\t\t\t\tconst json = this._font.data;\n\t\t\t\tfor(const charId in json.chars){\n\t\t\t\t\t\tconst data = json.chars[charId];\n\t\t\t\t\t\tif (data.bounds) {\n\t\t\t\t\t\t\t\tthis._fontMinY = Math.min(this._fontMinY, data.bounds[1]);\n\t\t\t\t\t\t\t\tthis._fontMaxY = Math.max(this._fontMaxY, data.bounds[3]);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this._font.on) this._font.on('render', this._onFontRender, this);\n\t\t\t\tif (this._fontAsset.localizedAsset) {\n\t\t\t\t\t\tconst asset = this._system.app.assets.get(this._fontAsset.localizedAsset);\n\t\t\t\t\t\tif (asset.resource !== this._font) {\n\t\t\t\t\t\t\t\tthis._fontAsset.defaultAsset = null;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (value.type !== previousFontType) {\n\t\t\t\t\t\tconst screenSpace = this._element._isScreenSpace();\n\t\t\t\t\t\tthis._updateMaterial(screenSpace);\n\t\t\t\t}\n\t\t\t\tfor(let i = 0, len = this._font.textures.length; i < len; i++){\n\t\t\t\t\t\tif (!this._meshInfo[i]) {\n\t\t\t\t\t\t\t\tthis._meshInfo[i] = new MeshInfo();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst mi = this._meshInfo[i].meshInstance;\n\t\t\t\t\t\t\t\tif (mi) {\n\t\t\t\t\t\t\t\t\t\tmi.setParameter('font_sdfIntensity', this._font.intensity);\n\t\t\t\t\t\t\t\t\t\tmi.setParameter('font_pxrange', this._getPxRange(this._font));\n\t\t\t\t\t\t\t\t\t\tmi.setParameter('font_textureWidth', this._font.data.info.maps[i].width);\n\t\t\t\t\t\t\t\t\t\tthis._setTextureParams(mi, this._font.textures[i]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tlet removedModel = false;\n\t\t\t\tfor(let i = this._font.textures.length; i < this._meshInfo.length; i++){\n\t\t\t\t\t\tif (this._meshInfo[i].meshInstance) {\n\t\t\t\t\t\t\t\tif (!removedModel) {\n\t\t\t\t\t\t\t\t\t\tthis._element.removeModelFromLayers(this._model);\n\t\t\t\t\t\t\t\t\t\tremovedModel = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis._removeMeshInstance(this._meshInfo[i].meshInstance);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this._meshInfo.length > this._font.textures.length) {\n\t\t\t\t\t\tthis._meshInfo.length = this._font.textures.length;\n\t\t\t\t}\n\t\t\t\tthis._updateText();\n\t\t}\n\t\tget font() {\n\t\t\t\treturn this._font;\n\t\t}\n\t\tset alignment(value) {\n\t\t\t\tif (value instanceof Vec2) {\n\t\t\t\t\t\tthis._alignment.set(value.x, value.y);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._alignment.set(value[0], value[1]);\n\t\t\t\t}\n\t\t\t\tif (this._font) {\n\t\t\t\t\t\tthis._updateText();\n\t\t\t\t}\n\t\t}\n\t\tget alignment() {\n\t\t\t\treturn this._alignment;\n\t\t}\n\t\tset autoWidth(value) {\n\t\t\t\tconst old = this._autoWidth;\n\t\t\t\tthis._autoWidth = value;\n\t\t\t\tif (value && Math.abs(this._element.anchor.x - this._element.anchor.z) < 0.0001) {\n\t\t\t\t\t\tthis._element.width = this.width;\n\t\t\t\t}\n\t\t\t\tif (old !== value) {\n\t\t\t\t\t\tconst newFontSize = this._shouldAutoFit() ? this._maxFontSize : this._originalFontSize;\n\t\t\t\t\t\tif (newFontSize !== this._fontSize) {\n\t\t\t\t\t\t\t\tthis._fontSize = newFontSize;\n\t\t\t\t\t\t\t\tif (this._font) {\n\t\t\t\t\t\t\t\t\t\tthis._updateText();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget autoWidth() {\n\t\t\t\treturn this._autoWidth;\n\t\t}\n\t\tset autoHeight(value) {\n\t\t\t\tconst old = this._autoHeight;\n\t\t\t\tthis._autoHeight = value;\n\t\t\t\tif (value && Math.abs(this._element.anchor.y - this._element.anchor.w) < 0.0001) {\n\t\t\t\t\t\tthis._element.height = this.height;\n\t\t\t\t}\n\t\t\t\tif (old !== value) {\n\t\t\t\t\t\tconst newFontSize = this._shouldAutoFit() ? this._maxFontSize : this._originalFontSize;\n\t\t\t\t\t\tif (newFontSize !== this._fontSize) {\n\t\t\t\t\t\t\t\tthis._fontSize = newFontSize;\n\t\t\t\t\t\t\t\tif (this._font) {\n\t\t\t\t\t\t\t\t\t\tthis._updateText();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget autoHeight() {\n\t\t\t\treturn this._autoHeight;\n\t\t}\n\t\tset rtlReorder(value) {\n\t\t\t\tif (this._rtlReorder !== value) {\n\t\t\t\t\t\tthis._rtlReorder = value;\n\t\t\t\t\t\tif (this._font) {\n\t\t\t\t\t\t\t\tthis._updateText();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget rtlReorder() {\n\t\t\t\treturn this._rtlReorder;\n\t\t}\n\t\tset unicodeConverter(value) {\n\t\t\t\tif (this._unicodeConverter !== value) {\n\t\t\t\t\t\tthis._unicodeConverter = value;\n\t\t\t\t\t\tthis._setText(this._text);\n\t\t\t\t}\n\t\t}\n\t\tget unicodeConverter() {\n\t\t\t\treturn this._unicodeConverter;\n\t\t}\n\t\tget aabb() {\n\t\t\t\tif (this._aabbDirty) {\n\t\t\t\t\t\tlet initialized = false;\n\t\t\t\t\t\tfor(let i = 0; i < this._meshInfo.length; i++){\n\t\t\t\t\t\t\t\tif (!this._meshInfo[i].meshInstance) continue;\n\t\t\t\t\t\t\t\tif (!initialized) {\n\t\t\t\t\t\t\t\t\t\tthis._aabb.copy(this._meshInfo[i].meshInstance.aabb);\n\t\t\t\t\t\t\t\t\t\tinitialized = true;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis._aabb.add(this._meshInfo[i].meshInstance.aabb);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._aabbDirty = false;\n\t\t\t\t}\n\t\t\t\treturn this._aabb;\n\t\t}\n\t\tset outlineColor(value) {\n\t\t\t\tconst r = value instanceof Color ? value.r : value[0];\n\t\t\t\tconst g = value instanceof Color ? value.g : value[1];\n\t\t\t\tconst b = value instanceof Color ? value.b : value[2];\n\t\t\t\tconst a = value instanceof Color ? value.a : value[3];\n\t\t\t\tif (this._outlineColor.r === r && this._outlineColor.g === g && this._outlineColor.b === b && this._outlineColor.a === a) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._outlineColor.r = r;\n\t\t\t\tthis._outlineColor.g = g;\n\t\t\t\tthis._outlineColor.b = b;\n\t\t\t\tthis._outlineColor.a = a;\n\t\t\t\tif (!this._model) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this._symbolOutlineParams) {\n\t\t\t\t\t\tif (this._font) {\n\t\t\t\t\t\t\t\tthis._updateText();\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\t_tempColor$1.linear(this._outlineColor);\n\t\t\t\t\t\tthis._outlineColorUniform[0] = _tempColor$1.r;\n\t\t\t\t\t\tthis._outlineColorUniform[1] = _tempColor$1.g;\n\t\t\t\t\t\tthis._outlineColorUniform[2] = _tempColor$1.b;\n\t\t\t\t\t\tthis._outlineColorUniform[3] = _tempColor$1.a;\n\t\t\t\t\t\tfor(let i = 0, len = this._model.meshInstances.length; i < len; i++){\n\t\t\t\t\t\t\t\tconst mi = this._model.meshInstances[i];\n\t\t\t\t\t\t\t\tmi.setParameter('outline_color', this._outlineColorUniform);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this._element) {\n\t\t\t\t\t\tthis._element.fire('set:outline', this._color);\n\t\t\t\t}\n\t\t}\n\t\tget outlineColor() {\n\t\t\t\treturn this._outlineColor;\n\t\t}\n\t\tset outlineThickness(value) {\n\t\t\t\tconst _prev = this._outlineThickness;\n\t\t\t\tthis._outlineThickness = value;\n\t\t\t\tif (_prev !== value && this._font) {\n\t\t\t\t\t\tif (!this._model) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this._symbolOutlineParams) {\n\t\t\t\t\t\t\t\tif (this._font) {\n\t\t\t\t\t\t\t\t\t\tthis._updateText();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tfor(let i = 0, len = this._model.meshInstances.length; i < len; i++){\n\t\t\t\t\t\t\t\t\t\tconst mi = this._model.meshInstances[i];\n\t\t\t\t\t\t\t\t\t\tmi.setParameter('outline_thickness', this._outlineThicknessScale * this._outlineThickness);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget outlineThickness() {\n\t\t\t\treturn this._outlineThickness;\n\t\t}\n\t\tset shadowColor(value) {\n\t\t\t\tconst r = value instanceof Color ? value.r : value[0];\n\t\t\t\tconst g = value instanceof Color ? value.g : value[1];\n\t\t\t\tconst b = value instanceof Color ? value.b : value[2];\n\t\t\t\tconst a = value instanceof Color ? value.a : value[3];\n\t\t\t\tif (this._shadowColor.r === r && this._shadowColor.g === g && this._shadowColor.b === b && this._shadowColor.a === a) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._shadowColor.r = r;\n\t\t\t\tthis._shadowColor.g = g;\n\t\t\t\tthis._shadowColor.b = b;\n\t\t\t\tthis._shadowColor.a = a;\n\t\t\t\tif (!this._model) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this._symbolShadowParams) {\n\t\t\t\t\t\tif (this._font) {\n\t\t\t\t\t\t\t\tthis._updateText();\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\t_tempColor$1.linear(this._shadowColor);\n\t\t\t\t\t\tthis._shadowColorUniform[0] = _tempColor$1.r;\n\t\t\t\t\t\tthis._shadowColorUniform[1] = _tempColor$1.g;\n\t\t\t\t\t\tthis._shadowColorUniform[2] = _tempColor$1.b;\n\t\t\t\t\t\tthis._shadowColorUniform[3] = _tempColor$1.a;\n\t\t\t\t\t\tfor(let i = 0, len = this._model.meshInstances.length; i < len; i++){\n\t\t\t\t\t\t\t\tconst mi = this._model.meshInstances[i];\n\t\t\t\t\t\t\t\tmi.setParameter('shadow_color', this._shadowColorUniform);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget shadowColor() {\n\t\t\t\treturn this._shadowColor;\n\t\t}\n\t\tset shadowOffset(value) {\n\t\t\t\tconst x = value instanceof Vec2 ? value.x : value[0], y = value instanceof Vec2 ? value.y : value[1];\n\t\t\t\tif (this._shadowOffset.x === x && this._shadowOffset.y === y) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._shadowOffset.set(x, y);\n\t\t\t\tif (this._font && this._model) {\n\t\t\t\t\t\tif (this._symbolShadowParams) {\n\t\t\t\t\t\t\t\tthis._updateText();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tfor(let i = 0, len = this._model.meshInstances.length; i < len; i++){\n\t\t\t\t\t\t\t\t\t\tconst ratio = -this._font.data.info.maps[i].width / this._font.data.info.maps[i].height;\n\t\t\t\t\t\t\t\t\t\tthis._shadowOffsetUniform[0] = this._shadowOffsetScale * this._shadowOffset.x;\n\t\t\t\t\t\t\t\t\t\tthis._shadowOffsetUniform[1] = ratio * this._shadowOffsetScale * this._shadowOffset.y;\n\t\t\t\t\t\t\t\t\t\tconst mi = this._model.meshInstances[i];\n\t\t\t\t\t\t\t\t\t\tmi.setParameter('shadow_offset', this._shadowOffsetUniform);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget shadowOffset() {\n\t\t\t\treturn this._shadowOffset;\n\t\t}\n\t\tset minFontSize(value) {\n\t\t\t\tif (this._minFontSize === value) return;\n\t\t\t\tthis._minFontSize = value;\n\t\t\t\tif (this.font && this._shouldAutoFit()) {\n\t\t\t\t\t\tthis._updateText();\n\t\t\t\t}\n\t\t}\n\t\tget minFontSize() {\n\t\t\t\treturn this._minFontSize;\n\t\t}\n\t\tset maxFontSize(value) {\n\t\t\t\tif (this._maxFontSize === value) return;\n\t\t\t\tthis._maxFontSize = value;\n\t\t\t\tif (this.font && this._shouldAutoFit()) {\n\t\t\t\t\t\tthis._updateText();\n\t\t\t\t}\n\t\t}\n\t\tget maxFontSize() {\n\t\t\t\treturn this._maxFontSize;\n\t\t}\n\t\tset autoFitWidth(value) {\n\t\t\t\tif (this._autoFitWidth === value) return;\n\t\t\t\tthis._autoFitWidth = value;\n\t\t\t\tthis._fontSize = this._shouldAutoFit() ? this._maxFontSize : this._originalFontSize;\n\t\t\t\tif (this.font) {\n\t\t\t\t\t\tthis._updateText();\n\t\t\t\t}\n\t\t}\n\t\tget autoFitWidth() {\n\t\t\t\treturn this._autoFitWidth;\n\t\t}\n\t\tset autoFitHeight(value) {\n\t\t\t\tif (this._autoFitHeight === value) return;\n\t\t\t\tthis._autoFitHeight = value;\n\t\t\t\tthis._fontSize = this._shouldAutoFit() ? this._maxFontSize : this._originalFontSize;\n\t\t\t\tif (this.font) {\n\t\t\t\t\t\tthis._updateText();\n\t\t\t\t}\n\t\t}\n\t\tget autoFitHeight() {\n\t\t\t\treturn this._autoFitHeight;\n\t\t}\n\t\tset maxLines(value) {\n\t\t\t\tif (this._maxLines === value) return;\n\t\t\t\tif (value === null && this._maxLines === -1) return;\n\t\t\t\tthis._maxLines = value === null ? -1 : value;\n\t\t\t\tif (this.font && this._wrapLines) {\n\t\t\t\t\t\tthis._updateText();\n\t\t\t\t}\n\t\t}\n\t\tget maxLines() {\n\t\t\t\treturn this._maxLines;\n\t\t}\n\t\tset enableMarkup(value) {\n\t\t\t\tvalue = !!value;\n\t\t\t\tif (this._enableMarkup === value) return;\n\t\t\t\tthis._enableMarkup = value;\n\t\t\t\tif (this.font) {\n\t\t\t\t\t\tthis._updateText();\n\t\t\t\t}\n\t\t\t\tconst screenSpace = this._element._isScreenSpace();\n\t\t\t\tthis._updateMaterial(screenSpace);\n\t\t}\n\t\tget enableMarkup() {\n\t\t\t\treturn this._enableMarkup;\n\t\t}\n\t\tget symbols() {\n\t\t\t\treturn this._symbols;\n\t\t}\n\t\tget symbolColors() {\n\t\t\t\tif (this._symbolColors === null) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\treturn this._symbolColors.map(function(c) {\n\t\t\t\t\t\treturn this._colorPalette.slice(c * 3, c * 3 + 3);\n\t\t\t\t}, this);\n\t\t}\n\t\tget symbolOutlineParams() {\n\t\t\t\tif (this._symbolOutlineParams === null) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\treturn this._symbolOutlineParams.map(function(paramId) {\n\t\t\t\t\t\treturn this._outlinePalette.slice(paramId * 5, paramId * 5 + 5);\n\t\t\t\t}, this);\n\t\t}\n\t\tget symbolShadowParams() {\n\t\t\t\tif (this._symbolShadowParams === null) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\treturn this._symbolShadowParams.map(function(paramId) {\n\t\t\t\t\t\treturn this._shadowPalette.slice(paramId * 6, paramId * 6 + 6);\n\t\t\t\t}, this);\n\t\t}\n\t\tget rtl() {\n\t\t\t\treturn this._rtl;\n\t\t}\n\t\tset rangeStart(rangeStart) {\n\t\t\t\trangeStart = Math.max(0, Math.min(rangeStart, this._symbols.length));\n\t\t\t\tif (rangeStart !== this._rangeStart) {\n\t\t\t\t\t\tthis._rangeStart = rangeStart;\n\t\t\t\t\t\tthis._updateRenderRange();\n\t\t\t\t}\n\t\t}\n\t\tget rangeStart() {\n\t\t\t\treturn this._rangeStart;\n\t\t}\n\t\tset rangeEnd(rangeEnd) {\n\t\t\t\trangeEnd = Math.max(this._rangeStart, Math.min(rangeEnd, this._symbols.length));\n\t\t\t\tif (rangeEnd !== this._rangeEnd) {\n\t\t\t\t\t\tthis._rangeEnd = rangeEnd;\n\t\t\t\t\t\tthis._updateRenderRange();\n\t\t\t\t}\n\t\t}\n\t\tget rangeEnd() {\n\t\t\t\treturn this._rangeEnd;\n\t\t}\n}\n\nconst position$2 = new Vec3();\nconst invParentWtm = new Mat4();\nconst vecA$2 = new Vec3();\nconst vecB$2 = new Vec3();\nconst matA = new Mat4();\nconst matB = new Mat4();\nconst matC = new Mat4();\nconst matD = new Mat4();\nclass ElementComponent extends Component {\n\t\tstatic{\n\t\t\t\tthis.EVENT_MOUSEDOWN = 'mousedown';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_MOUSEUP = 'mouseup';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_MOUSEENTER = 'mouseenter';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_MOUSELEAVE = 'mouseleave';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_MOUSEMOVE = 'mousemove';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_MOUSEWHEEL = 'mousewheel';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_CLICK = 'click';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_TOUCHSTART = 'touchstart';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_TOUCHEND = 'touchend';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_TOUCHMOVE = 'touchmove';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_TOUCHCANCEL = 'touchcancel';\n\t\t}\n\t\tconstructor(system, entity){\n\t\t\t\tsuper(system, entity), this._evtLayersChanged = null, this._evtLayerAdded = null, this._evtLayerRemoved = null;\n\t\t\t\tthis._beingInitialized = false;\n\t\t\t\tthis._anchor = new Vec4();\n\t\t\t\tthis._localAnchor = new Vec4();\n\t\t\t\tthis._pivot = new Vec2();\n\t\t\t\tthis._width = this._calculatedWidth = 32;\n\t\t\t\tthis._height = this._calculatedHeight = 32;\n\t\t\t\tthis._margin = new Vec4(0, 0, -32, -32);\n\t\t\t\tthis._modelTransform = new Mat4();\n\t\t\t\tthis._screenToWorld = new Mat4();\n\t\t\t\tthis._anchorTransform = new Mat4();\n\t\t\t\tthis._anchorDirty = true;\n\t\t\t\tthis._parentWorldTransform = new Mat4();\n\t\t\t\tthis._screenTransform = new Mat4();\n\t\t\t\tthis._screenCorners = [\n\t\t\t\t\t\tnew Vec3(),\n\t\t\t\t\t\tnew Vec3(),\n\t\t\t\t\t\tnew Vec3(),\n\t\t\t\t\t\tnew Vec3()\n\t\t\t\t];\n\t\t\t\tthis._canvasCorners = [\n\t\t\t\t\t\tnew Vec2(),\n\t\t\t\t\t\tnew Vec2(),\n\t\t\t\t\t\tnew Vec2(),\n\t\t\t\t\t\tnew Vec2()\n\t\t\t\t];\n\t\t\t\tthis._worldCorners = [\n\t\t\t\t\t\tnew Vec3(),\n\t\t\t\t\t\tnew Vec3(),\n\t\t\t\t\t\tnew Vec3(),\n\t\t\t\t\t\tnew Vec3()\n\t\t\t\t];\n\t\t\t\tthis._cornersDirty = true;\n\t\t\t\tthis._canvasCornersDirty = true;\n\t\t\t\tthis._worldCornersDirty = true;\n\t\t\t\tthis.entity.on('insert', this._onInsert, this);\n\t\t\t\tthis._patch();\n\t\t\t\tthis.screen = null;\n\t\t\t\tthis._type = ELEMENTTYPE_GROUP;\n\t\t\t\tthis._image = null;\n\t\t\t\tthis._text = null;\n\t\t\t\tthis._group = null;\n\t\t\t\tthis._drawOrder = 0;\n\t\t\t\tthis._fitMode = FITMODE_STRETCH;\n\t\t\t\tthis._useInput = false;\n\t\t\t\tthis._layers = [\n\t\t\t\t\t\tLAYERID_UI\n\t\t\t\t];\n\t\t\t\tthis._addedModels = [];\n\t\t\t\tthis._batchGroupId = -1;\n\t\t\t\tthis._offsetReadAt = 0;\n\t\t\t\tthis._maskOffset = 0.5;\n\t\t\t\tthis._maskedBy = null;\n\t\t}\n\t\tget data() {\n\t\t\t\tconst record = this.system.store[this.entity.getGuid()];\n\t\t\t\treturn record ? record.data : null;\n\t\t}\n\t\tset enabled(value) {\n\t\t\t\tconst data = this.data;\n\t\t\t\tconst oldValue = data.enabled;\n\t\t\t\tdata.enabled = value;\n\t\t\t\tthis.fire('set', 'enabled', oldValue, value);\n\t\t}\n\t\tget enabled() {\n\t\t\t\treturn this.data.enabled;\n\t\t}\n\t\tget _absLeft() {\n\t\t\t\treturn this._localAnchor.x + this._margin.x;\n\t\t}\n\t\tget _absRight() {\n\t\t\t\treturn this._localAnchor.z - this._margin.z;\n\t\t}\n\t\tget _absTop() {\n\t\t\t\treturn this._localAnchor.w - this._margin.w;\n\t\t}\n\t\tget _absBottom() {\n\t\t\t\treturn this._localAnchor.y + this._margin.y;\n\t\t}\n\t\tget _hasSplitAnchorsX() {\n\t\t\t\treturn Math.abs(this._anchor.x - this._anchor.z) > 0.001;\n\t\t}\n\t\tget _hasSplitAnchorsY() {\n\t\t\t\treturn Math.abs(this._anchor.y - this._anchor.w) > 0.001;\n\t\t}\n\t\tget aabb() {\n\t\t\t\tif (this._image) {\n\t\t\t\t\t\treturn this._image.aabb;\n\t\t\t\t}\n\t\t\t\tif (this._text) {\n\t\t\t\t\t\treturn this._text.aabb;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset anchor(value) {\n\t\t\t\tif (value instanceof Vec4) {\n\t\t\t\t\t\tthis._anchor.copy(value);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._anchor.set(...value);\n\t\t\t\t}\n\t\t\t\tif (!this.entity._parent && !this.screen) {\n\t\t\t\t\t\tthis._calculateLocalAnchors();\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._calculateSize(this._hasSplitAnchorsX, this._hasSplitAnchorsY);\n\t\t\t\t}\n\t\t\t\tthis._anchorDirty = true;\n\t\t\t\tif (!this.entity._dirtyLocal) {\n\t\t\t\t\t\tthis.entity._dirtifyLocal();\n\t\t\t\t}\n\t\t\t\tthis.fire('set:anchor', this._anchor);\n\t\t}\n\t\tget anchor() {\n\t\t\t\treturn this._anchor;\n\t\t}\n\t\tset batchGroupId(value) {\n\t\t\t\tif (this._batchGroupId === value) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this.entity.enabled && this._batchGroupId >= 0) {\n\t\t\t\t\t\tthis.system.app.batcher?.remove(BatchGroup.ELEMENT, this.batchGroupId, this.entity);\n\t\t\t\t}\n\t\t\t\tif (this.entity.enabled && value >= 0) {\n\t\t\t\t\t\tthis.system.app.batcher?.insert(BatchGroup.ELEMENT, value, this.entity);\n\t\t\t\t}\n\t\t\t\tif (value < 0 && this._batchGroupId >= 0 && this.enabled && this.entity.enabled) {\n\t\t\t\t\t\tif (this._image && this._image._renderable.model) {\n\t\t\t\t\t\t\t\tthis.addModelToLayers(this._image._renderable.model);\n\t\t\t\t\t\t} else if (this._text && this._text._model) {\n\t\t\t\t\t\t\t\tthis.addModelToLayers(this._text._model);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._batchGroupId = value;\n\t\t}\n\t\tget batchGroupId() {\n\t\t\t\treturn this._batchGroupId;\n\t\t}\n\t\tset bottom(value) {\n\t\t\t\tthis._margin.y = value;\n\t\t\t\tconst p = this.entity.getLocalPosition();\n\t\t\t\tconst wt = this._absTop;\n\t\t\t\tconst wb = this._localAnchor.y + value;\n\t\t\t\tthis._setHeight(wt - wb);\n\t\t\t\tp.y = value + this._calculatedHeight * this._pivot.y;\n\t\t\t\tthis.entity.setLocalPosition(p);\n\t\t}\n\t\tget bottom() {\n\t\t\t\treturn this._margin.y;\n\t\t}\n\t\tset calculatedWidth(value) {\n\t\t\t\tthis._setCalculatedWidth(value, true);\n\t\t}\n\t\tget calculatedWidth() {\n\t\t\t\treturn this._calculatedWidth;\n\t\t}\n\t\tset calculatedHeight(value) {\n\t\t\t\tthis._setCalculatedHeight(value, true);\n\t\t}\n\t\tget calculatedHeight() {\n\t\t\t\treturn this._calculatedHeight;\n\t\t}\n\t\tget canvasCorners() {\n\t\t\t\tif (!this._canvasCornersDirty || !this.screen || !this.screen.screen.screenSpace) {\n\t\t\t\t\t\treturn this._canvasCorners;\n\t\t\t\t}\n\t\t\t\tconst device = this.system.app.graphicsDevice;\n\t\t\t\tconst screenCorners = this.screenCorners;\n\t\t\t\tconst sx = device.canvas.clientWidth / device.width;\n\t\t\t\tconst sy = device.canvas.clientHeight / device.height;\n\t\t\t\tfor(let i = 0; i < 4; i++){\n\t\t\t\t\t\tthis._canvasCorners[i].set(screenCorners[i].x * sx, (device.height - screenCorners[i].y) * sy);\n\t\t\t\t}\n\t\t\t\tthis._canvasCornersDirty = false;\n\t\t\t\treturn this._canvasCorners;\n\t\t}\n\t\tset drawOrder(value) {\n\t\t\t\tlet priority = 0;\n\t\t\t\tif (this.screen) {\n\t\t\t\t\t\tpriority = this.screen.screen.priority;\n\t\t\t\t}\n\t\t\t\tif (value > 0xFFFFFF) {\n\t\t\t\t\t\tvalue = 0xFFFFFF;\n\t\t\t\t}\n\t\t\t\tthis._drawOrder = (priority << 24) + value;\n\t\t\t\tthis.fire('set:draworder', this._drawOrder);\n\t\t}\n\t\tget drawOrder() {\n\t\t\t\treturn this._drawOrder;\n\t\t}\n\t\tset height(value) {\n\t\t\t\tthis._height = value;\n\t\t\t\tif (!this._hasSplitAnchorsY) {\n\t\t\t\t\t\tthis._setCalculatedHeight(value, true);\n\t\t\t\t}\n\t\t\t\tthis.fire('set:height', this._height);\n\t\t}\n\t\tget height() {\n\t\t\t\treturn this._height;\n\t\t}\n\t\tset layers(value) {\n\t\t\t\tif (this._addedModels.length) {\n\t\t\t\t\t\tfor(let i = 0; i < this._layers.length; i++){\n\t\t\t\t\t\t\t\tconst layer = this.system.app.scene.layers.getLayerById(this._layers[i]);\n\t\t\t\t\t\t\t\tif (layer) {\n\t\t\t\t\t\t\t\t\t\tfor(let j = 0; j < this._addedModels.length; j++){\n\t\t\t\t\t\t\t\t\t\t\t\tlayer.removeMeshInstances(this._addedModels[j].meshInstances);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._layers = value;\n\t\t\t\tif (!this.enabled || !this.entity.enabled || !this._addedModels.length) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < this._layers.length; i++){\n\t\t\t\t\t\tconst layer = this.system.app.scene.layers.getLayerById(this._layers[i]);\n\t\t\t\t\t\tif (layer) {\n\t\t\t\t\t\t\t\tfor(let j = 0; j < this._addedModels.length; j++){\n\t\t\t\t\t\t\t\t\t\tlayer.addMeshInstances(this._addedModels[j].meshInstances);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget layers() {\n\t\t\t\treturn this._layers;\n\t\t}\n\t\tset left(value) {\n\t\t\t\tthis._margin.x = value;\n\t\t\t\tconst p = this.entity.getLocalPosition();\n\t\t\t\tconst wr = this._absRight;\n\t\t\t\tconst wl = this._localAnchor.x + value;\n\t\t\t\tthis._setWidth(wr - wl);\n\t\t\t\tp.x = value + this._calculatedWidth * this._pivot.x;\n\t\t\t\tthis.entity.setLocalPosition(p);\n\t\t}\n\t\tget left() {\n\t\t\t\treturn this._margin.x;\n\t\t}\n\t\tset margin(value) {\n\t\t\t\tthis._margin.copy(value);\n\t\t\t\tthis._calculateSize(true, true);\n\t\t\t\tthis.fire('set:margin', this._margin);\n\t\t}\n\t\tget margin() {\n\t\t\t\treturn this._margin;\n\t\t}\n\t\tget maskedBy() {\n\t\t\t\treturn this._maskedBy;\n\t\t}\n\t\tset pivot(value) {\n\t\t\t\tconst { pivot, margin } = this;\n\t\t\t\tconst prevX = pivot.x;\n\t\t\t\tconst prevY = pivot.y;\n\t\t\t\tif (value instanceof Vec2) {\n\t\t\t\t\t\tpivot.copy(value);\n\t\t\t\t} else {\n\t\t\t\t\t\tpivot.set(...value);\n\t\t\t\t}\n\t\t\t\tconst mx = margin.x + margin.z;\n\t\t\t\tconst dx = pivot.x - prevX;\n\t\t\t\tmargin.x += mx * dx;\n\t\t\t\tmargin.z -= mx * dx;\n\t\t\t\tconst my = margin.y + margin.w;\n\t\t\t\tconst dy = pivot.y - prevY;\n\t\t\t\tmargin.y += my * dy;\n\t\t\t\tmargin.w -= my * dy;\n\t\t\t\tthis._anchorDirty = true;\n\t\t\t\tthis._cornersDirty = true;\n\t\t\t\tthis._worldCornersDirty = true;\n\t\t\t\tthis._calculateSize(false, false);\n\t\t\t\tthis._flagChildrenAsDirty();\n\t\t\t\tthis.fire('set:pivot', pivot);\n\t\t}\n\t\tget pivot() {\n\t\t\t\treturn this._pivot;\n\t\t}\n\t\tset right(value) {\n\t\t\t\tthis._margin.z = value;\n\t\t\t\tconst p = this.entity.getLocalPosition();\n\t\t\t\tconst wl = this._absLeft;\n\t\t\t\tconst wr = this._localAnchor.z - value;\n\t\t\t\tthis._setWidth(wr - wl);\n\t\t\t\tp.x = this._localAnchor.z - this._localAnchor.x - value - this._calculatedWidth * (1 - this._pivot.x);\n\t\t\t\tthis.entity.setLocalPosition(p);\n\t\t}\n\t\tget right() {\n\t\t\t\treturn this._margin.z;\n\t\t}\n\t\tget screenCorners() {\n\t\t\t\tif (!this._cornersDirty || !this.screen) {\n\t\t\t\t\t\treturn this._screenCorners;\n\t\t\t\t}\n\t\t\t\tconst parentBottomLeft = this.entity.parent && this.entity.parent.element && this.entity.parent.element.screenCorners[0];\n\t\t\t\tthis._screenCorners[0].set(this._absLeft, this._absBottom, 0);\n\t\t\t\tthis._screenCorners[1].set(this._absRight, this._absBottom, 0);\n\t\t\t\tthis._screenCorners[2].set(this._absRight, this._absTop, 0);\n\t\t\t\tthis._screenCorners[3].set(this._absLeft, this._absTop, 0);\n\t\t\t\tconst screenSpace = this.screen.screen.screenSpace;\n\t\t\t\tfor(let i = 0; i < 4; i++){\n\t\t\t\t\t\tthis._screenTransform.transformPoint(this._screenCorners[i], this._screenCorners[i]);\n\t\t\t\t\t\tif (screenSpace) {\n\t\t\t\t\t\t\t\tthis._screenCorners[i].mulScalar(this.screen.screen.scale);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (parentBottomLeft) {\n\t\t\t\t\t\t\t\tthis._screenCorners[i].add(parentBottomLeft);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._cornersDirty = false;\n\t\t\t\tthis._canvasCornersDirty = true;\n\t\t\t\tthis._worldCornersDirty = true;\n\t\t\t\treturn this._screenCorners;\n\t\t}\n\t\tget textWidth() {\n\t\t\t\treturn this._text ? this._text.width : 0;\n\t\t}\n\t\tget textHeight() {\n\t\t\t\treturn this._text ? this._text.height : 0;\n\t\t}\n\t\tset top(value) {\n\t\t\t\tthis._margin.w = value;\n\t\t\t\tconst p = this.entity.getLocalPosition();\n\t\t\t\tconst wb = this._absBottom;\n\t\t\t\tconst wt = this._localAnchor.w - value;\n\t\t\t\tthis._setHeight(wt - wb);\n\t\t\t\tp.y = this._localAnchor.w - this._localAnchor.y - value - this._calculatedHeight * (1 - this._pivot.y);\n\t\t\t\tthis.entity.setLocalPosition(p);\n\t\t}\n\t\tget top() {\n\t\t\t\treturn this._margin.w;\n\t\t}\n\t\tset type(value) {\n\t\t\t\tif (value !== this._type) {\n\t\t\t\t\t\tthis._type = value;\n\t\t\t\t\t\tif (this._image) {\n\t\t\t\t\t\t\t\tthis._image.destroy();\n\t\t\t\t\t\t\t\tthis._image = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this._text) {\n\t\t\t\t\t\t\t\tthis._text.destroy();\n\t\t\t\t\t\t\t\tthis._text = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (value === ELEMENTTYPE_IMAGE) {\n\t\t\t\t\t\t\t\tthis._image = new ImageElement(this);\n\t\t\t\t\t\t} else if (value === ELEMENTTYPE_TEXT) {\n\t\t\t\t\t\t\t\tthis._text = new TextElement(this);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget type() {\n\t\t\t\treturn this._type;\n\t\t}\n\t\tset useInput(value) {\n\t\t\t\tif (this._useInput === value) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._useInput = value;\n\t\t\t\tif (this.system.app.elementInput) {\n\t\t\t\t\t\tif (value) {\n\t\t\t\t\t\t\t\tif (this.enabled && this.entity.enabled) {\n\t\t\t\t\t\t\t\t\t\tthis.system.app.elementInput.addElement(this);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.system.app.elementInput.removeElement(this);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tif (this._useInput === true) ;\n\t\t\t\t}\n\t\t\t\tthis.fire('set:useInput', value);\n\t\t}\n\t\tget useInput() {\n\t\t\t\treturn this._useInput;\n\t\t}\n\t\tset fitMode(value) {\n\t\t\t\tthis._fitMode = value;\n\t\t\t\tthis._calculateSize(true, true);\n\t\t\t\tif (this._image) {\n\t\t\t\t\t\tthis._image.refreshMesh();\n\t\t\t\t}\n\t\t}\n\t\tget fitMode() {\n\t\t\t\treturn this._fitMode;\n\t\t}\n\t\tset width(value) {\n\t\t\t\tthis._width = value;\n\t\t\t\tif (!this._hasSplitAnchorsX) {\n\t\t\t\t\t\tthis._setCalculatedWidth(value, true);\n\t\t\t\t}\n\t\t\t\tthis.fire('set:width', this._width);\n\t\t}\n\t\tget width() {\n\t\t\t\treturn this._width;\n\t\t}\n\t\tget worldCorners() {\n\t\t\t\tif (!this._worldCornersDirty) {\n\t\t\t\t\t\treturn this._worldCorners;\n\t\t\t\t}\n\t\t\t\tif (this.screen) {\n\t\t\t\t\t\tconst screenCorners = this.screenCorners;\n\t\t\t\t\t\tif (!this.screen.screen.screenSpace) {\n\t\t\t\t\t\t\t\tmatA.copy(this.screen.screen._screenMatrix);\n\t\t\t\t\t\t\t\tmatA.data[13] = -matA.data[13];\n\t\t\t\t\t\t\t\tmatA.mul2(this.screen.getWorldTransform(), matA);\n\t\t\t\t\t\t\t\tfor(let i = 0; i < 4; i++){\n\t\t\t\t\t\t\t\t\t\tmatA.transformPoint(screenCorners[i], this._worldCorners[i]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tconst localPos = this.entity.getLocalPosition();\n\t\t\t\t\t\tmatA.setTranslate(-localPos.x, -localPos.y, -localPos.z);\n\t\t\t\t\t\tmatB.setTRS(Vec3.ZERO, this.entity.getLocalRotation(), this.entity.getLocalScale());\n\t\t\t\t\t\tmatC.setTranslate(localPos.x, localPos.y, localPos.z);\n\t\t\t\t\t\tconst entity = this.entity.parent ? this.entity.parent : this.entity;\n\t\t\t\t\t\tmatD.copy(entity.getWorldTransform());\n\t\t\t\t\t\tmatD.mul(matC).mul(matB).mul(matA);\n\t\t\t\t\t\tvecA$2.set(localPos.x - this.pivot.x * this.calculatedWidth, localPos.y - this.pivot.y * this.calculatedHeight, localPos.z);\n\t\t\t\t\t\tmatD.transformPoint(vecA$2, this._worldCorners[0]);\n\t\t\t\t\t\tvecA$2.set(localPos.x + (1 - this.pivot.x) * this.calculatedWidth, localPos.y - this.pivot.y * this.calculatedHeight, localPos.z);\n\t\t\t\t\t\tmatD.transformPoint(vecA$2, this._worldCorners[1]);\n\t\t\t\t\t\tvecA$2.set(localPos.x + (1 - this.pivot.x) * this.calculatedWidth, localPos.y + (1 - this.pivot.y) * this.calculatedHeight, localPos.z);\n\t\t\t\t\t\tmatD.transformPoint(vecA$2, this._worldCorners[2]);\n\t\t\t\t\t\tvecA$2.set(localPos.x - this.pivot.x * this.calculatedWidth, localPos.y + (1 - this.pivot.y) * this.calculatedHeight, localPos.z);\n\t\t\t\t\t\tmatD.transformPoint(vecA$2, this._worldCorners[3]);\n\t\t\t\t}\n\t\t\t\tthis._worldCornersDirty = false;\n\t\t\t\treturn this._worldCorners;\n\t\t}\n\t\tset fontSize(arg) {\n\t\t\t\tthis._setValue('fontSize', arg);\n\t\t}\n\t\tget fontSize() {\n\t\t\t\tif (this._text) {\n\t\t\t\t\t\treturn this._text.fontSize;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset minFontSize(arg) {\n\t\t\t\tthis._setValue('minFontSize', arg);\n\t\t}\n\t\tget minFontSize() {\n\t\t\t\tif (this._text) {\n\t\t\t\t\t\treturn this._text.minFontSize;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset maxFontSize(arg) {\n\t\t\t\tthis._setValue('maxFontSize', arg);\n\t\t}\n\t\tget maxFontSize() {\n\t\t\t\tif (this._text) {\n\t\t\t\t\t\treturn this._text.maxFontSize;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset maxLines(arg) {\n\t\t\t\tthis._setValue('maxLines', arg);\n\t\t}\n\t\tget maxLines() {\n\t\t\t\tif (this._text) {\n\t\t\t\t\t\treturn this._text.maxLines;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset autoFitWidth(arg) {\n\t\t\t\tthis._setValue('autoFitWidth', arg);\n\t\t}\n\t\tget autoFitWidth() {\n\t\t\t\tif (this._text) {\n\t\t\t\t\t\treturn this._text.autoFitWidth;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset autoFitHeight(arg) {\n\t\t\t\tthis._setValue('autoFitHeight', arg);\n\t\t}\n\t\tget autoFitHeight() {\n\t\t\t\tif (this._text) {\n\t\t\t\t\t\treturn this._text.autoFitHeight;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset color(arg) {\n\t\t\t\tthis._setValue('color', arg);\n\t\t}\n\t\tget color() {\n\t\t\t\tif (this._text) {\n\t\t\t\t\t\treturn this._text.color;\n\t\t\t\t}\n\t\t\t\tif (this._image) {\n\t\t\t\t\t\treturn this._image.color;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset font(arg) {\n\t\t\t\tthis._setValue('font', arg);\n\t\t}\n\t\tget font() {\n\t\t\t\tif (this._text) {\n\t\t\t\t\t\treturn this._text.font;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset fontAsset(arg) {\n\t\t\t\tthis._setValue('fontAsset', arg);\n\t\t}\n\t\tget fontAsset() {\n\t\t\t\tif (this._text && typeof this._text.fontAsset === 'number') {\n\t\t\t\t\t\treturn this._text.fontAsset;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset spacing(arg) {\n\t\t\t\tthis._setValue('spacing', arg);\n\t\t}\n\t\tget spacing() {\n\t\t\t\tif (this._text) {\n\t\t\t\t\t\treturn this._text.spacing;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset lineHeight(arg) {\n\t\t\t\tthis._setValue('lineHeight', arg);\n\t\t}\n\t\tget lineHeight() {\n\t\t\t\tif (this._text) {\n\t\t\t\t\t\treturn this._text.lineHeight;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset wrapLines(arg) {\n\t\t\t\tthis._setValue('wrapLines', arg);\n\t\t}\n\t\tget wrapLines() {\n\t\t\t\tif (this._text) {\n\t\t\t\t\t\treturn this._text.wrapLines;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset lines(arg) {\n\t\t\t\tthis._setValue('lines', arg);\n\t\t}\n\t\tget lines() {\n\t\t\t\tif (this._text) {\n\t\t\t\t\t\treturn this._text.lines;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset alignment(arg) {\n\t\t\t\tthis._setValue('alignment', arg);\n\t\t}\n\t\tget alignment() {\n\t\t\t\tif (this._text) {\n\t\t\t\t\t\treturn this._text.alignment;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset autoWidth(arg) {\n\t\t\t\tthis._setValue('autoWidth', arg);\n\t\t}\n\t\tget autoWidth() {\n\t\t\t\tif (this._text) {\n\t\t\t\t\t\treturn this._text.autoWidth;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset autoHeight(arg) {\n\t\t\t\tthis._setValue('autoHeight', arg);\n\t\t}\n\t\tget autoHeight() {\n\t\t\t\tif (this._text) {\n\t\t\t\t\t\treturn this._text.autoHeight;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset rtlReorder(arg) {\n\t\t\t\tthis._setValue('rtlReorder', arg);\n\t\t}\n\t\tget rtlReorder() {\n\t\t\t\tif (this._text) {\n\t\t\t\t\t\treturn this._text.rtlReorder;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset unicodeConverter(arg) {\n\t\t\t\tthis._setValue('unicodeConverter', arg);\n\t\t}\n\t\tget unicodeConverter() {\n\t\t\t\tif (this._text) {\n\t\t\t\t\t\treturn this._text.unicodeConverter;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset text(arg) {\n\t\t\t\tthis._setValue('text', arg);\n\t\t}\n\t\tget text() {\n\t\t\t\tif (this._text) {\n\t\t\t\t\t\treturn this._text.text;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset key(arg) {\n\t\t\t\tthis._setValue('key', arg);\n\t\t}\n\t\tget key() {\n\t\t\t\tif (this._text) {\n\t\t\t\t\t\treturn this._text.key;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset texture(arg) {\n\t\t\t\tthis._setValue('texture', arg);\n\t\t}\n\t\tget texture() {\n\t\t\t\tif (this._image) {\n\t\t\t\t\t\treturn this._image.texture;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset textureAsset(arg) {\n\t\t\t\tthis._setValue('textureAsset', arg);\n\t\t}\n\t\tget textureAsset() {\n\t\t\t\tif (this._image) {\n\t\t\t\t\t\treturn this._image.textureAsset;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset material(arg) {\n\t\t\t\tthis._setValue('material', arg);\n\t\t}\n\t\tget material() {\n\t\t\t\tif (this._image) {\n\t\t\t\t\t\treturn this._image.material;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset materialAsset(arg) {\n\t\t\t\tthis._setValue('materialAsset', arg);\n\t\t}\n\t\tget materialAsset() {\n\t\t\t\tif (this._image) {\n\t\t\t\t\t\treturn this._image.materialAsset;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset sprite(arg) {\n\t\t\t\tthis._setValue('sprite', arg);\n\t\t}\n\t\tget sprite() {\n\t\t\t\tif (this._image) {\n\t\t\t\t\t\treturn this._image.sprite;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset spriteAsset(arg) {\n\t\t\t\tthis._setValue('spriteAsset', arg);\n\t\t}\n\t\tget spriteAsset() {\n\t\t\t\tif (this._image) {\n\t\t\t\t\t\treturn this._image.spriteAsset;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset spriteFrame(arg) {\n\t\t\t\tthis._setValue('spriteFrame', arg);\n\t\t}\n\t\tget spriteFrame() {\n\t\t\t\tif (this._image) {\n\t\t\t\t\t\treturn this._image.spriteFrame;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset pixelsPerUnit(arg) {\n\t\t\t\tthis._setValue('pixelsPerUnit', arg);\n\t\t}\n\t\tget pixelsPerUnit() {\n\t\t\t\tif (this._image) {\n\t\t\t\t\t\treturn this._image.pixelsPerUnit;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset opacity(arg) {\n\t\t\t\tthis._setValue('opacity', arg);\n\t\t}\n\t\tget opacity() {\n\t\t\t\tif (this._text) {\n\t\t\t\t\t\treturn this._text.opacity;\n\t\t\t\t}\n\t\t\t\tif (this._image) {\n\t\t\t\t\t\treturn this._image.opacity;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset rect(arg) {\n\t\t\t\tthis._setValue('rect', arg);\n\t\t}\n\t\tget rect() {\n\t\t\t\tif (this._image) {\n\t\t\t\t\t\treturn this._image.rect;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset mask(arg) {\n\t\t\t\tthis._setValue('mask', arg);\n\t\t}\n\t\tget mask() {\n\t\t\t\tif (this._image) {\n\t\t\t\t\t\treturn this._image.mask;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset outlineColor(arg) {\n\t\t\t\tthis._setValue('outlineColor', arg);\n\t\t}\n\t\tget outlineColor() {\n\t\t\t\tif (this._text) {\n\t\t\t\t\t\treturn this._text.outlineColor;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset outlineThickness(arg) {\n\t\t\t\tthis._setValue('outlineThickness', arg);\n\t\t}\n\t\tget outlineThickness() {\n\t\t\t\tif (this._text) {\n\t\t\t\t\t\treturn this._text.outlineThickness;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset shadowColor(arg) {\n\t\t\t\tthis._setValue('shadowColor', arg);\n\t\t}\n\t\tget shadowColor() {\n\t\t\t\tif (this._text) {\n\t\t\t\t\t\treturn this._text.shadowColor;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset shadowOffset(arg) {\n\t\t\t\tthis._setValue('shadowOffset', arg);\n\t\t}\n\t\tget shadowOffset() {\n\t\t\t\tif (this._text) {\n\t\t\t\t\t\treturn this._text.shadowOffset;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset enableMarkup(arg) {\n\t\t\t\tthis._setValue('enableMarkup', arg);\n\t\t}\n\t\tget enableMarkup() {\n\t\t\t\tif (this._text) {\n\t\t\t\t\t\treturn this._text.enableMarkup;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset rangeStart(arg) {\n\t\t\t\tthis._setValue('rangeStart', arg);\n\t\t}\n\t\tget rangeStart() {\n\t\t\t\tif (this._text) {\n\t\t\t\t\t\treturn this._text.rangeStart;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset rangeEnd(arg) {\n\t\t\t\tthis._setValue('rangeEnd', arg);\n\t\t}\n\t\tget rangeEnd() {\n\t\t\t\tif (this._text) {\n\t\t\t\t\t\treturn this._text.rangeEnd;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\t_setValue(name, value) {\n\t\t\t\tif (this._text) {\n\t\t\t\t\t\tif (this._text[name] !== value) {\n\t\t\t\t\t\t\t\tthis._dirtyBatch();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._text[name] = value;\n\t\t\t\t} else if (this._image) {\n\t\t\t\t\t\tif (this._image[name] !== value) {\n\t\t\t\t\t\t\t\tthis._dirtyBatch();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._image[name] = value;\n\t\t\t\t}\n\t\t}\n\t\t_patch() {\n\t\t\t\tthis.entity._sync = this._sync;\n\t\t\t\tthis.entity.setPosition = this._setPosition;\n\t\t\t\tthis.entity.setLocalPosition = this._setLocalPosition;\n\t\t}\n\t\t_unpatch() {\n\t\t\t\tthis.entity._sync = Entity.prototype._sync;\n\t\t\t\tthis.entity.setPosition = Entity.prototype.setPosition;\n\t\t\t\tthis.entity.setLocalPosition = Entity.prototype.setLocalPosition;\n\t\t}\n\t\t_setPosition(x, y, z) {\n\t\t\t\tif (!this.element.screen) {\n\t\t\t\t\t\tEntity.prototype.setPosition.call(this, x, y, z);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (x instanceof Vec3) {\n\t\t\t\t\t\tposition$2.copy(x);\n\t\t\t\t} else {\n\t\t\t\t\t\tposition$2.set(x, y, z);\n\t\t\t\t}\n\t\t\t\tthis.getWorldTransform();\n\t\t\t\tinvParentWtm.copy(this.element._screenToWorld).invert();\n\t\t\t\tinvParentWtm.transformPoint(position$2, this.localPosition);\n\t\t\t\tif (!this._dirtyLocal) {\n\t\t\t\t\t\tthis._dirtifyLocal();\n\t\t\t\t}\n\t\t}\n\t\t_setLocalPosition(x, y, z) {\n\t\t\t\tif (x instanceof Vec3) {\n\t\t\t\t\t\tthis.localPosition.copy(x);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.localPosition.set(x, y, z);\n\t\t\t\t}\n\t\t\t\tconst element = this.element;\n\t\t\t\tconst p = this.localPosition;\n\t\t\t\tconst pvt = element._pivot;\n\t\t\t\telement._margin.x = p.x - element._calculatedWidth * pvt.x;\n\t\t\t\telement._margin.z = element._localAnchor.z - element._localAnchor.x - element._calculatedWidth - element._margin.x;\n\t\t\t\telement._margin.y = p.y - element._calculatedHeight * pvt.y;\n\t\t\t\telement._margin.w = element._localAnchor.w - element._localAnchor.y - element._calculatedHeight - element._margin.y;\n\t\t\t\tif (!this._dirtyLocal) {\n\t\t\t\t\t\tthis._dirtifyLocal();\n\t\t\t\t}\n\t\t}\n\t\t_sync() {\n\t\t\t\tconst element = this.element;\n\t\t\t\tconst screen = element.screen;\n\t\t\t\tif (screen) {\n\t\t\t\t\t\tif (element._anchorDirty) {\n\t\t\t\t\t\t\t\tlet resx = 0;\n\t\t\t\t\t\t\t\tlet resy = 0;\n\t\t\t\t\t\t\t\tlet px = 0;\n\t\t\t\t\t\t\t\tlet py = 1;\n\t\t\t\t\t\t\t\tif (this._parent && this._parent.element) {\n\t\t\t\t\t\t\t\t\t\tresx = this._parent.element.calculatedWidth;\n\t\t\t\t\t\t\t\t\t\tresy = this._parent.element.calculatedHeight;\n\t\t\t\t\t\t\t\t\t\tpx = this._parent.element.pivot.x;\n\t\t\t\t\t\t\t\t\t\tpy = this._parent.element.pivot.y;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tconst resolution = screen.screen.resolution;\n\t\t\t\t\t\t\t\t\t\tresx = resolution.x / screen.screen.scale;\n\t\t\t\t\t\t\t\t\t\tresy = resolution.y / screen.screen.scale;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telement._anchorTransform.setTranslate(resx * (element.anchor.x - px), -(resy * (py - element.anchor.y)), 0);\n\t\t\t\t\t\t\t\telement._anchorDirty = false;\n\t\t\t\t\t\t\t\telement._calculateLocalAnchors();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (element._sizeDirty) {\n\t\t\t\t\t\t\t\telement._calculateSize(false, false);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this._dirtyLocal) {\n\t\t\t\t\t\tthis.localTransform.setTRS(this.localPosition, this.localRotation, this.localScale);\n\t\t\t\t\t\tconst p = this.localPosition;\n\t\t\t\t\t\tconst pvt = element._pivot;\n\t\t\t\t\t\telement._margin.x = p.x - element._calculatedWidth * pvt.x;\n\t\t\t\t\t\telement._margin.z = element._localAnchor.z - element._localAnchor.x - element._calculatedWidth - element._margin.x;\n\t\t\t\t\t\telement._margin.y = p.y - element._calculatedHeight * pvt.y;\n\t\t\t\t\t\telement._margin.w = element._localAnchor.w - element._localAnchor.y - element._calculatedHeight - element._margin.y;\n\t\t\t\t\t\tthis._dirtyLocal = false;\n\t\t\t\t}\n\t\t\t\tif (!screen) {\n\t\t\t\t\t\tif (this._dirtyWorld) {\n\t\t\t\t\t\t\t\telement._cornersDirty = true;\n\t\t\t\t\t\t\t\telement._canvasCornersDirty = true;\n\t\t\t\t\t\t\t\telement._worldCornersDirty = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tEntity.prototype._sync.call(this);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this._dirtyWorld) {\n\t\t\t\t\t\tif (this._parent === null) {\n\t\t\t\t\t\t\t\tthis.worldTransform.copy(this.localTransform);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (this._parent.element) {\n\t\t\t\t\t\t\t\t\t\telement._screenToWorld.mul2(this._parent.element._modelTransform, element._anchorTransform);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\telement._screenToWorld.copy(element._anchorTransform);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telement._modelTransform.mul2(element._screenToWorld, this.localTransform);\n\t\t\t\t\t\t\t\tif (screen) {\n\t\t\t\t\t\t\t\t\t\telement._screenToWorld.mul2(screen.screen._screenMatrix, element._screenToWorld);\n\t\t\t\t\t\t\t\t\t\tif (!screen.screen.screenSpace) {\n\t\t\t\t\t\t\t\t\t\t\t\telement._screenToWorld.mul2(screen.worldTransform, element._screenToWorld);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tthis.worldTransform.mul2(element._screenToWorld, this.localTransform);\n\t\t\t\t\t\t\t\t\t\tconst parentWorldTransform = element._parentWorldTransform;\n\t\t\t\t\t\t\t\t\t\tparentWorldTransform.setIdentity();\n\t\t\t\t\t\t\t\t\t\tconst parent = this._parent;\n\t\t\t\t\t\t\t\t\t\tif (parent && parent.element && parent !== screen) {\n\t\t\t\t\t\t\t\t\t\t\t\tmatA.setTRS(Vec3.ZERO, parent.getLocalRotation(), parent.getLocalScale());\n\t\t\t\t\t\t\t\t\t\t\t\tparentWorldTransform.mul2(parent.element._parentWorldTransform, matA);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tconst depthOffset = vecA$2;\n\t\t\t\t\t\t\t\t\t\tdepthOffset.set(0, 0, this.localPosition.z);\n\t\t\t\t\t\t\t\t\t\tconst pivotOffset = vecB$2;\n\t\t\t\t\t\t\t\t\t\tpivotOffset.set(element._absLeft + element._pivot.x * element.calculatedWidth, element._absBottom + element._pivot.y * element.calculatedHeight, 0);\n\t\t\t\t\t\t\t\t\t\tmatA.setTranslate(-pivotOffset.x, -pivotOffset.y, -pivotOffset.z);\n\t\t\t\t\t\t\t\t\t\tmatB.setTRS(depthOffset, this.getLocalRotation(), this.getLocalScale());\n\t\t\t\t\t\t\t\t\t\tmatC.setTranslate(pivotOffset.x, pivotOffset.y, pivotOffset.z);\n\t\t\t\t\t\t\t\t\t\telement._screenTransform.mul2(element._parentWorldTransform, matC).mul(matB).mul(matA);\n\t\t\t\t\t\t\t\t\t\telement._cornersDirty = true;\n\t\t\t\t\t\t\t\t\t\telement._canvasCornersDirty = true;\n\t\t\t\t\t\t\t\t\t\telement._worldCornersDirty = true;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis.worldTransform.copy(element._modelTransform);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._dirtyWorld = false;\n\t\t\t\t}\n\t\t}\n\t\t_onInsert(parent) {\n\t\t\t\tconst result = this._parseUpToScreen();\n\t\t\t\tthis.entity._dirtifyWorld();\n\t\t\t\tthis._updateScreen(result.screen);\n\t\t\t\tthis._dirtifyMask();\n\t\t}\n\t\t_dirtifyMask() {\n\t\t\t\tlet current = this.entity;\n\t\t\t\twhile(current){\n\t\t\t\t\t\tconst next = current.parent;\n\t\t\t\t\t\tif ((next === null || next.screen) && current.element) {\n\t\t\t\t\t\t\t\tif (!this.system._prerender || !this.system._prerender.length) {\n\t\t\t\t\t\t\t\t\t\tthis.system._prerender = [];\n\t\t\t\t\t\t\t\t\t\tthis.system.app.once('prerender', this._onPrerender, this);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst i = this.system._prerender.indexOf(this.entity);\n\t\t\t\t\t\t\t\tif (i >= 0) {\n\t\t\t\t\t\t\t\t\t\tthis.system._prerender.splice(i, 1);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst j = this.system._prerender.indexOf(current);\n\t\t\t\t\t\t\t\tif (j < 0) {\n\t\t\t\t\t\t\t\t\t\tthis.system._prerender.push(current);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcurrent = next;\n\t\t\t\t}\n\t\t}\n\t\t_onPrerender() {\n\t\t\t\tfor(let i = 0; i < this.system._prerender.length; i++){\n\t\t\t\t\t\tconst mask = this.system._prerender[i];\n\t\t\t\t\t\tif (mask.element) {\n\t\t\t\t\t\t\t\tconst depth = 1;\n\t\t\t\t\t\t\t\tmask.element.syncMask(depth);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.system._prerender.length = 0;\n\t\t}\n\t\t_bindScreen(screen) {\n\t\t\t\tscreen._bindElement(this);\n\t\t}\n\t\t_unbindScreen(screen) {\n\t\t\t\tscreen._unbindElement(this);\n\t\t}\n\t\t_updateScreen(screen) {\n\t\t\t\tif (this.screen && this.screen !== screen) {\n\t\t\t\t\t\tthis._unbindScreen(this.screen.screen);\n\t\t\t\t}\n\t\t\t\tconst previousScreen = this.screen;\n\t\t\t\tthis.screen = screen;\n\t\t\t\tif (this.screen) {\n\t\t\t\t\t\tthis._bindScreen(this.screen.screen);\n\t\t\t\t}\n\t\t\t\tthis._calculateSize(this._hasSplitAnchorsX, this._hasSplitAnchorsY);\n\t\t\t\tthis.fire('set:screen', this.screen, previousScreen);\n\t\t\t\tthis._anchorDirty = true;\n\t\t\t\tconst children = this.entity.children;\n\t\t\t\tfor(let i = 0, l = children.length; i < l; i++){\n\t\t\t\t\t\tif (children[i].element) {\n\t\t\t\t\t\t\t\tchildren[i].element._updateScreen(screen);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this.screen) {\n\t\t\t\t\t\tthis.screen.screen.syncDrawOrder();\n\t\t\t\t}\n\t\t}\n\t\tsyncMask(depth) {\n\t\t\t\tconst result = this._parseUpToScreen();\n\t\t\t\tthis._updateMask(result.mask, depth);\n\t\t}\n\t\t_setMaskedBy(mask) {\n\t\t\t\tconst renderableElement = this._image || this._text;\n\t\t\t\tif (mask) {\n\t\t\t\t\t\tconst ref = mask.element._image._maskRef;\n\t\t\t\t\t\trenderableElement?._setStencil(new StencilParameters({\n\t\t\t\t\t\t\t\tref: ref,\n\t\t\t\t\t\t\t\tfunc: FUNC_EQUAL\n\t\t\t\t\t\t}));\n\t\t\t\t\t\tthis._maskedBy = mask;\n\t\t\t\t} else {\n\t\t\t\t\t\trenderableElement?._setStencil(null);\n\t\t\t\t\t\tthis._maskedBy = null;\n\t\t\t\t}\n\t\t}\n\t\t_updateMask(currentMask, depth) {\n\t\t\t\tif (currentMask) {\n\t\t\t\t\t\tthis._setMaskedBy(currentMask);\n\t\t\t\t\t\tif (this.mask) {\n\t\t\t\t\t\t\t\tconst ref = currentMask.element._image._maskRef;\n\t\t\t\t\t\t\t\tconst sp = new StencilParameters({\n\t\t\t\t\t\t\t\t\t\tref: ref,\n\t\t\t\t\t\t\t\t\t\tfunc: FUNC_EQUAL,\n\t\t\t\t\t\t\t\t\t\tzpass: STENCILOP_INCREMENT\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tthis._image._setStencil(sp);\n\t\t\t\t\t\t\t\tthis._image._maskRef = depth;\n\t\t\t\t\t\t\t\tdepth++;\n\t\t\t\t\t\t\t\tcurrentMask = this.entity;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst children = this.entity.children;\n\t\t\t\t\t\tfor(let i = 0, l = children.length; i < l; i++){\n\t\t\t\t\t\t\t\tchildren[i].element?._updateMask(currentMask, depth);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.mask) depth--;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._setMaskedBy(null);\n\t\t\t\t\t\tif (this.mask) {\n\t\t\t\t\t\t\t\tconst sp = new StencilParameters({\n\t\t\t\t\t\t\t\t\t\tref: depth,\n\t\t\t\t\t\t\t\t\t\tfunc: FUNC_ALWAYS,\n\t\t\t\t\t\t\t\t\t\tzpass: STENCILOP_REPLACE\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tthis._image._setStencil(sp);\n\t\t\t\t\t\t\t\tthis._image._maskRef = depth;\n\t\t\t\t\t\t\t\tdepth++;\n\t\t\t\t\t\t\t\tcurrentMask = this.entity;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst children = this.entity.children;\n\t\t\t\t\t\tfor(let i = 0, l = children.length; i < l; i++){\n\t\t\t\t\t\t\t\tchildren[i].element?._updateMask(currentMask, depth);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.mask) {\n\t\t\t\t\t\t\t\tdepth--;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_parseUpToScreen() {\n\t\t\t\tconst result = {\n\t\t\t\t\t\tscreen: null,\n\t\t\t\t\t\tmask: null\n\t\t\t\t};\n\t\t\t\tlet parent = this.entity._parent;\n\t\t\t\twhile(parent && !parent.screen){\n\t\t\t\t\t\tif (parent.element && parent.element.mask) {\n\t\t\t\t\t\t\t\tif (!result.mask) result.mask = parent;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tparent = parent.parent;\n\t\t\t\t}\n\t\t\t\tif (parent && parent.screen) {\n\t\t\t\t\t\tresult.screen = parent;\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t}\n\t\t_onScreenResize(res) {\n\t\t\t\tthis._anchorDirty = true;\n\t\t\t\tthis._cornersDirty = true;\n\t\t\t\tthis._worldCornersDirty = true;\n\t\t\t\tthis._calculateSize(this._hasSplitAnchorsX, this._hasSplitAnchorsY);\n\t\t\t\tthis.fire('screen:set:resolution', res);\n\t\t}\n\t\t_onScreenSpaceChange() {\n\t\t\t\tthis.fire('screen:set:screenspace', this.screen.screen.screenSpace);\n\t\t}\n\t\t_onScreenRemove() {\n\t\t\t\tif (this.screen) {\n\t\t\t\t\t\tif (this.screen._destroying) {\n\t\t\t\t\t\t\t\tthis.screen = null;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._updateScreen(null);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_calculateLocalAnchors() {\n\t\t\t\tlet resx = 1000;\n\t\t\t\tlet resy = 1000;\n\t\t\t\tconst parent = this.entity._parent;\n\t\t\t\tif (parent && parent.element) {\n\t\t\t\t\t\tresx = parent.element.calculatedWidth;\n\t\t\t\t\t\tresy = parent.element.calculatedHeight;\n\t\t\t\t} else if (this.screen) {\n\t\t\t\t\t\tconst res = this.screen.screen.resolution;\n\t\t\t\t\t\tconst scale = this.screen.screen.scale;\n\t\t\t\t\t\tresx = res.x / scale;\n\t\t\t\t\t\tresy = res.y / scale;\n\t\t\t\t}\n\t\t\t\tthis._localAnchor.set(this._anchor.x * resx, this._anchor.y * resy, this._anchor.z * resx, this._anchor.w * resy);\n\t\t}\n\t\tgetOffsetPosition(x, y) {\n\t\t\t\tconst p = this.entity.getLocalPosition().clone();\n\t\t\t\tp.x += x;\n\t\t\t\tp.y += y;\n\t\t\t\tthis._screenToWorld.transformPoint(p, p);\n\t\t\t\treturn p;\n\t\t}\n\t\tonLayersChanged(oldComp, newComp) {\n\t\t\t\tthis.addModelToLayers(this._image ? this._image._renderable.model : this._text._model);\n\t\t\t\toldComp.off('add', this.onLayerAdded, this);\n\t\t\t\toldComp.off('remove', this.onLayerRemoved, this);\n\t\t\t\tnewComp.on('add', this.onLayerAdded, this);\n\t\t\t\tnewComp.on('remove', this.onLayerRemoved, this);\n\t\t}\n\t\tonLayerAdded(layer) {\n\t\t\t\tconst index = this.layers.indexOf(layer.id);\n\t\t\t\tif (index < 0) return;\n\t\t\t\tif (this._image) {\n\t\t\t\t\t\tlayer.addMeshInstances(this._image._renderable.model.meshInstances);\n\t\t\t\t} else if (this._text) {\n\t\t\t\t\t\tlayer.addMeshInstances(this._text._model.meshInstances);\n\t\t\t\t}\n\t\t}\n\t\tonLayerRemoved(layer) {\n\t\t\t\tconst index = this.layers.indexOf(layer.id);\n\t\t\t\tif (index < 0) return;\n\t\t\t\tif (this._image) {\n\t\t\t\t\t\tlayer.removeMeshInstances(this._image._renderable.model.meshInstances);\n\t\t\t\t} else if (this._text) {\n\t\t\t\t\t\tlayer.removeMeshInstances(this._text._model.meshInstances);\n\t\t\t\t}\n\t\t}\n\t\tonEnable() {\n\t\t\t\tconst scene = this.system.app.scene;\n\t\t\t\tconst layers = scene.layers;\n\t\t\t\tif (this._image) {\n\t\t\t\t\t\tthis._image.onEnable();\n\t\t\t\t}\n\t\t\t\tif (this._text) {\n\t\t\t\t\t\tthis._text.onEnable();\n\t\t\t\t}\n\t\t\t\tif (this._group) {\n\t\t\t\t\t\tthis._group.onEnable();\n\t\t\t\t}\n\t\t\t\tif (this.useInput && this.system.app.elementInput) {\n\t\t\t\t\t\tthis.system.app.elementInput.addElement(this);\n\t\t\t\t}\n\t\t\t\tthis._evtLayersChanged = scene.on('set:layers', this.onLayersChanged, this);\n\t\t\t\tif (layers) {\n\t\t\t\t\t\tthis._evtLayerAdded = layers.on('add', this.onLayerAdded, this);\n\t\t\t\t\t\tthis._evtLayerRemoved = layers.on('remove', this.onLayerRemoved, this);\n\t\t\t\t}\n\t\t\t\tif (this._batchGroupId >= 0) {\n\t\t\t\t\t\tthis.system.app.batcher?.insert(BatchGroup.ELEMENT, this.batchGroupId, this.entity);\n\t\t\t\t}\n\t\t\t\tthis.fire('enableelement');\n\t\t}\n\t\tonDisable() {\n\t\t\t\tconst scene = this.system.app.scene;\n\t\t\t\tconst layers = scene.layers;\n\t\t\t\tthis._evtLayersChanged?.off();\n\t\t\t\tthis._evtLayersChanged = null;\n\t\t\t\tif (layers) {\n\t\t\t\t\t\tthis._evtLayerAdded?.off();\n\t\t\t\t\t\tthis._evtLayerAdded = null;\n\t\t\t\t\t\tthis._evtLayerRemoved?.off();\n\t\t\t\t\t\tthis._evtLayerRemoved = null;\n\t\t\t\t}\n\t\t\t\tif (this._image) this._image.onDisable();\n\t\t\t\tif (this._text) this._text.onDisable();\n\t\t\t\tif (this._group) this._group.onDisable();\n\t\t\t\tif (this.system.app.elementInput && this.useInput) {\n\t\t\t\t\t\tthis.system.app.elementInput.removeElement(this);\n\t\t\t\t}\n\t\t\t\tif (this._batchGroupId >= 0) {\n\t\t\t\t\t\tthis.system.app.batcher?.remove(BatchGroup.ELEMENT, this.batchGroupId, this.entity);\n\t\t\t\t}\n\t\t\t\tthis.fire('disableelement');\n\t\t}\n\t\tonRemove() {\n\t\t\t\tthis.entity.off('insert', this._onInsert, this);\n\t\t\t\tthis._unpatch();\n\t\t\t\tif (this._image) {\n\t\t\t\t\t\tthis._image.destroy();\n\t\t\t\t}\n\t\t\t\tif (this._text) {\n\t\t\t\t\t\tthis._text.destroy();\n\t\t\t\t}\n\t\t\t\tif (this.system.app.elementInput && this.useInput) {\n\t\t\t\t\t\tthis.system.app.elementInput.removeElement(this);\n\t\t\t\t}\n\t\t\t\tif (this.screen && this.screen.screen) {\n\t\t\t\t\t\tthis._unbindScreen(this.screen.screen);\n\t\t\t\t\t\tthis.screen.screen.syncDrawOrder();\n\t\t\t\t}\n\t\t\t\tthis.off();\n\t\t}\n\t\t_calculateSize(propagateCalculatedWidth, propagateCalculatedHeight) {\n\t\t\t\tif (!this.entity._parent && !this.screen) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._calculateLocalAnchors();\n\t\t\t\tconst newWidth = this._absRight - this._absLeft;\n\t\t\t\tconst newHeight = this._absTop - this._absBottom;\n\t\t\t\tif (propagateCalculatedWidth) {\n\t\t\t\t\t\tthis._setWidth(newWidth);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._setCalculatedWidth(newWidth, false);\n\t\t\t\t}\n\t\t\t\tif (propagateCalculatedHeight) {\n\t\t\t\t\t\tthis._setHeight(newHeight);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._setCalculatedHeight(newHeight, false);\n\t\t\t\t}\n\t\t\t\tconst p = this.entity.getLocalPosition();\n\t\t\t\tp.x = this._margin.x + this._calculatedWidth * this._pivot.x;\n\t\t\t\tp.y = this._margin.y + this._calculatedHeight * this._pivot.y;\n\t\t\t\tthis.entity.setLocalPosition(p);\n\t\t\t\tthis._sizeDirty = false;\n\t\t}\n\t\t_setWidth(w) {\n\t\t\t\tthis._width = w;\n\t\t\t\tthis._setCalculatedWidth(w, false);\n\t\t\t\tthis.fire('set:width', this._width);\n\t\t}\n\t\t_setHeight(h) {\n\t\t\t\tthis._height = h;\n\t\t\t\tthis._setCalculatedHeight(h, false);\n\t\t\t\tthis.fire('set:height', this._height);\n\t\t}\n\t\t_setCalculatedWidth(value, updateMargins) {\n\t\t\t\tif (Math.abs(value - this._calculatedWidth) <= 1e-4) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._calculatedWidth = value;\n\t\t\t\tthis.entity._dirtifyLocal();\n\t\t\t\tif (updateMargins) {\n\t\t\t\t\t\tconst p = this.entity.getLocalPosition();\n\t\t\t\t\t\tconst pvt = this._pivot;\n\t\t\t\t\t\tthis._margin.x = p.x - this._calculatedWidth * pvt.x;\n\t\t\t\t\t\tthis._margin.z = this._localAnchor.z - this._localAnchor.x - this._calculatedWidth - this._margin.x;\n\t\t\t\t}\n\t\t\t\tthis._flagChildrenAsDirty();\n\t\t\t\tthis.fire('set:calculatedWidth', this._calculatedWidth);\n\t\t\t\tthis.fire('resize', this._calculatedWidth, this._calculatedHeight);\n\t\t}\n\t\t_setCalculatedHeight(value, updateMargins) {\n\t\t\t\tif (Math.abs(value - this._calculatedHeight) <= 1e-4) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._calculatedHeight = value;\n\t\t\t\tthis.entity._dirtifyLocal();\n\t\t\t\tif (updateMargins) {\n\t\t\t\t\t\tconst p = this.entity.getLocalPosition();\n\t\t\t\t\t\tconst pvt = this._pivot;\n\t\t\t\t\t\tthis._margin.y = p.y - this._calculatedHeight * pvt.y;\n\t\t\t\t\t\tthis._margin.w = this._localAnchor.w - this._localAnchor.y - this._calculatedHeight - this._margin.y;\n\t\t\t\t}\n\t\t\t\tthis._flagChildrenAsDirty();\n\t\t\t\tthis.fire('set:calculatedHeight', this._calculatedHeight);\n\t\t\t\tthis.fire('resize', this._calculatedWidth, this._calculatedHeight);\n\t\t}\n\t\t_flagChildrenAsDirty() {\n\t\t\t\tconst c = this.entity._children;\n\t\t\t\tfor(let i = 0, l = c.length; i < l; i++){\n\t\t\t\t\t\tif (c[i].element) {\n\t\t\t\t\t\t\t\tc[i].element._anchorDirty = true;\n\t\t\t\t\t\t\t\tc[i].element._sizeDirty = true;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\taddModelToLayers(model) {\n\t\t\t\tthis._addedModels.push(model);\n\t\t\t\tfor(let i = 0; i < this.layers.length; i++){\n\t\t\t\t\t\tconst layer = this.system.app.scene.layers.getLayerById(this.layers[i]);\n\t\t\t\t\t\tif (!layer) continue;\n\t\t\t\t\t\tlayer.addMeshInstances(model.meshInstances);\n\t\t\t\t}\n\t\t}\n\t\tremoveModelFromLayers(model) {\n\t\t\t\tconst idx = this._addedModels.indexOf(model);\n\t\t\t\tif (idx >= 0) {\n\t\t\t\t\t\tthis._addedModels.splice(idx, 1);\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < this.layers.length; i++){\n\t\t\t\t\t\tconst layer = this.system.app.scene.layers.getLayerById(this.layers[i]);\n\t\t\t\t\t\tif (!layer) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlayer.removeMeshInstances(model.meshInstances);\n\t\t\t\t}\n\t\t}\n\t\tgetMaskOffset() {\n\t\t\t\tconst frame = this.system.app.frame;\n\t\t\t\tif (this._offsetReadAt !== frame) {\n\t\t\t\t\t\tthis._maskOffset = 0.5;\n\t\t\t\t\t\tthis._offsetReadAt = frame;\n\t\t\t\t}\n\t\t\t\tconst mo = this._maskOffset;\n\t\t\t\tthis._maskOffset -= 0.001;\n\t\t\t\treturn mo;\n\t\t}\n\t\tisVisibleForCamera(camera) {\n\t\t\t\tlet clipL, clipR, clipT, clipB;\n\t\t\t\tif (this.maskedBy) {\n\t\t\t\t\t\tconst corners = this.maskedBy.element.screenCorners;\n\t\t\t\t\t\tclipL = Math.min(Math.min(corners[0].x, corners[1].x), Math.min(corners[2].x, corners[3].x));\n\t\t\t\t\t\tclipR = Math.max(Math.max(corners[0].x, corners[1].x), Math.max(corners[2].x, corners[3].x));\n\t\t\t\t\t\tclipB = Math.min(Math.min(corners[0].y, corners[1].y), Math.min(corners[2].y, corners[3].y));\n\t\t\t\t\t\tclipT = Math.max(Math.max(corners[0].y, corners[1].y), Math.max(corners[2].y, corners[3].y));\n\t\t\t\t} else {\n\t\t\t\t\t\tconst sw = this.system.app.graphicsDevice.width;\n\t\t\t\t\t\tconst sh = this.system.app.graphicsDevice.height;\n\t\t\t\t\t\tconst cameraWidth = camera._rect.z * sw;\n\t\t\t\t\t\tconst cameraHeight = camera._rect.w * sh;\n\t\t\t\t\t\tclipL = camera._rect.x * sw;\n\t\t\t\t\t\tclipR = clipL + cameraWidth;\n\t\t\t\t\t\tclipT = (1 - camera._rect.y) * sh;\n\t\t\t\t\t\tclipB = clipT - cameraHeight;\n\t\t\t\t}\n\t\t\t\tconst hitCorners = this.screenCorners;\n\t\t\t\tconst left = Math.min(Math.min(hitCorners[0].x, hitCorners[1].x), Math.min(hitCorners[2].x, hitCorners[3].x));\n\t\t\t\tconst right = Math.max(Math.max(hitCorners[0].x, hitCorners[1].x), Math.max(hitCorners[2].x, hitCorners[3].x));\n\t\t\t\tconst bottom = Math.min(Math.min(hitCorners[0].y, hitCorners[1].y), Math.min(hitCorners[2].y, hitCorners[3].y));\n\t\t\t\tconst top = Math.max(Math.max(hitCorners[0].y, hitCorners[1].y), Math.max(hitCorners[2].y, hitCorners[3].y));\n\t\t\t\tif (right < clipL || left > clipR || bottom > clipT || top < clipB) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t}\n\t\t_isScreenSpace() {\n\t\t\t\tif (this.screen && this.screen.screen) {\n\t\t\t\t\t\treturn this.screen.screen.screenSpace;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t}\n\t\t_isScreenCulled() {\n\t\t\t\tif (this.screen && this.screen.screen) {\n\t\t\t\t\t\treturn this.screen.screen.cull;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t}\n\t\t_dirtyBatch() {\n\t\t\t\tif (this.batchGroupId !== -1) {\n\t\t\t\t\t\tthis.system.app.batcher?.markGroupDirty(this.batchGroupId);\n\t\t\t\t}\n\t\t}\n}\n\nclass ElementComponentData {\n\t\tconstructor(){\n\t\t\t\tthis.enabled = true;\n\t\t}\n}\n\nconst _schema$f = [\n\t\t'enabled'\n];\nclass ElementComponentSystem extends ComponentSystem {\n\t\tconstructor(app){\n\t\t\t\tsuper(app);\n\t\t\t\tthis.id = 'element';\n\t\t\t\tthis.ComponentType = ElementComponent;\n\t\t\t\tthis.DataType = ElementComponentData;\n\t\t\t\tthis.schema = _schema$f;\n\t\t\t\tthis._unicodeConverter = null;\n\t\t\t\tthis._rtlReorder = null;\n\t\t\t\tthis._defaultTexture = new Texture(app.graphicsDevice, {\n\t\t\t\t\t\twidth: 1,\n\t\t\t\t\t\theight: 1,\n\t\t\t\t\t\tformat: PIXELFORMAT_SRGBA8,\n\t\t\t\t\t\tname: 'element-system'\n\t\t\t\t});\n\t\t\t\tconst pixels = this._defaultTexture.lock();\n\t\t\t\tconst pixelData = new Uint8Array(4);\n\t\t\t\tpixelData[0] = 255.0;\n\t\t\t\tpixelData[1] = 255.0;\n\t\t\t\tpixelData[2] = 255.0;\n\t\t\t\tpixelData[3] = 255.0;\n\t\t\t\tpixels.set(pixelData);\n\t\t\t\tthis._defaultTexture.unlock();\n\t\t\t\tthis.defaultImageMaterial = null;\n\t\t\t\tthis.defaultImage9SlicedMaterial = null;\n\t\t\t\tthis.defaultImage9TiledMaterial = null;\n\t\t\t\tthis.defaultImageMaskMaterial = null;\n\t\t\t\tthis.defaultImage9SlicedMaskMaterial = null;\n\t\t\t\tthis.defaultImage9TiledMaskMaterial = null;\n\t\t\t\tthis.defaultScreenSpaceImageMaterial = null;\n\t\t\t\tthis.defaultScreenSpaceImage9SlicedMaterial = null;\n\t\t\t\tthis.defaultScreenSpaceImage9TiledMaterial = null;\n\t\t\t\tthis.defaultScreenSpaceImageMask9SlicedMaterial = null;\n\t\t\t\tthis.defaultScreenSpaceImageMask9TiledMaterial = null;\n\t\t\t\tthis.defaultScreenSpaceImageMaskMaterial = null;\n\t\t\t\tthis._defaultTextMaterials = {};\n\t\t\t\tthis.defaultImageMaterials = [];\n\t\t\t\tthis.on('add', this.onAddComponent, this);\n\t\t\t\tthis.on('beforeremove', this.onRemoveComponent, this);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tsuper.destroy();\n\t\t\t\tthis._defaultTexture.destroy();\n\t\t}\n\t\tinitializeComponentData(component, data, properties) {\n\t\t\t\tcomponent._beingInitialized = true;\n\t\t\t\tif (data.anchor !== undefined) {\n\t\t\t\t\t\tif (data.anchor instanceof Vec4) {\n\t\t\t\t\t\t\t\tcomponent.anchor.copy(data.anchor);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomponent.anchor.set(data.anchor[0], data.anchor[1], data.anchor[2], data.anchor[3]);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (data.pivot !== undefined) {\n\t\t\t\t\t\tif (data.pivot instanceof Vec2) {\n\t\t\t\t\t\t\t\tcomponent.pivot.copy(data.pivot);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomponent.pivot.set(data.pivot[0], data.pivot[1]);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst splitHorAnchors = Math.abs(component.anchor.x - component.anchor.z) > 0.001;\n\t\t\t\tconst splitVerAnchors = Math.abs(component.anchor.y - component.anchor.w) > 0.001;\n\t\t\t\tlet _marginChange = false;\n\t\t\t\tlet color;\n\t\t\t\tif (data.margin !== undefined) {\n\t\t\t\t\t\tif (data.margin instanceof Vec4) {\n\t\t\t\t\t\t\t\tcomponent.margin.copy(data.margin);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomponent._margin.set(data.margin[0], data.margin[1], data.margin[2], data.margin[3]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t_marginChange = true;\n\t\t\t\t}\n\t\t\t\tif (data.left !== undefined) {\n\t\t\t\t\t\tcomponent._margin.x = data.left;\n\t\t\t\t\t\t_marginChange = true;\n\t\t\t\t}\n\t\t\t\tif (data.bottom !== undefined) {\n\t\t\t\t\t\tcomponent._margin.y = data.bottom;\n\t\t\t\t\t\t_marginChange = true;\n\t\t\t\t}\n\t\t\t\tif (data.right !== undefined) {\n\t\t\t\t\t\tcomponent._margin.z = data.right;\n\t\t\t\t\t\t_marginChange = true;\n\t\t\t\t}\n\t\t\t\tif (data.top !== undefined) {\n\t\t\t\t\t\tcomponent._margin.w = data.top;\n\t\t\t\t\t\t_marginChange = true;\n\t\t\t\t}\n\t\t\t\tif (_marginChange) {\n\t\t\t\t\t\tcomponent.margin = component._margin;\n\t\t\t\t}\n\t\t\t\tlet shouldForceSetAnchor = false;\n\t\t\t\tif (data.width !== undefined && !splitHorAnchors) {\n\t\t\t\t\t\tcomponent.width = data.width;\n\t\t\t\t} else if (splitHorAnchors) {\n\t\t\t\t\t\tshouldForceSetAnchor = true;\n\t\t\t\t}\n\t\t\t\tif (data.height !== undefined && !splitVerAnchors) {\n\t\t\t\t\t\tcomponent.height = data.height;\n\t\t\t\t} else if (splitVerAnchors) {\n\t\t\t\t\t\tshouldForceSetAnchor = true;\n\t\t\t\t}\n\t\t\t\tif (shouldForceSetAnchor) {\n\t\t\t\t\t\tcomponent.anchor = component.anchor;\n\t\t\t\t}\n\t\t\t\tif (data.enabled !== undefined) {\n\t\t\t\t\t\tcomponent.enabled = data.enabled;\n\t\t\t\t}\n\t\t\t\tif (data.useInput !== undefined) {\n\t\t\t\t\t\tcomponent.useInput = data.useInput;\n\t\t\t\t}\n\t\t\t\tif (data.fitMode !== undefined) {\n\t\t\t\t\t\tcomponent.fitMode = data.fitMode;\n\t\t\t\t}\n\t\t\t\tcomponent.batchGroupId = data.batchGroupId === undefined || data.batchGroupId === null ? -1 : data.batchGroupId;\n\t\t\t\tif (data.layers && Array.isArray(data.layers)) {\n\t\t\t\t\t\tcomponent.layers = data.layers.slice(0);\n\t\t\t\t}\n\t\t\t\tif (data.type !== undefined) {\n\t\t\t\t\t\tcomponent.type = data.type;\n\t\t\t\t}\n\t\t\t\tif (component.type === ELEMENTTYPE_IMAGE) {\n\t\t\t\t\t\tif (data.rect !== undefined) {\n\t\t\t\t\t\t\t\tcomponent.rect = data.rect;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (data.color !== undefined) {\n\t\t\t\t\t\t\t\tcolor = data.color;\n\t\t\t\t\t\t\t\tif (!(color instanceof Color)) {\n\t\t\t\t\t\t\t\t\t\tcolor = new Color(data.color[0], data.color[1], data.color[2]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcomponent.color = color;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (data.opacity !== undefined) component.opacity = data.opacity;\n\t\t\t\t\t\tif (data.textureAsset !== undefined) component.textureAsset = data.textureAsset;\n\t\t\t\t\t\tif (data.texture) component.texture = data.texture;\n\t\t\t\t\t\tif (data.spriteAsset !== undefined) component.spriteAsset = data.spriteAsset;\n\t\t\t\t\t\tif (data.sprite) component.sprite = data.sprite;\n\t\t\t\t\t\tif (data.spriteFrame !== undefined) component.spriteFrame = data.spriteFrame;\n\t\t\t\t\t\tif (data.pixelsPerUnit !== undefined && data.pixelsPerUnit !== null) component.pixelsPerUnit = data.pixelsPerUnit;\n\t\t\t\t\t\tif (data.materialAsset !== undefined) component.materialAsset = data.materialAsset;\n\t\t\t\t\t\tif (data.material) component.material = data.material;\n\t\t\t\t\t\tif (data.mask !== undefined) {\n\t\t\t\t\t\t\t\tcomponent.mask = data.mask;\n\t\t\t\t\t\t}\n\t\t\t\t} else if (component.type === ELEMENTTYPE_TEXT) {\n\t\t\t\t\t\tif (data.autoWidth !== undefined) component.autoWidth = data.autoWidth;\n\t\t\t\t\t\tif (data.autoHeight !== undefined) component.autoHeight = data.autoHeight;\n\t\t\t\t\t\tif (data.rtlReorder !== undefined) component.rtlReorder = data.rtlReorder;\n\t\t\t\t\t\tif (data.unicodeConverter !== undefined) component.unicodeConverter = data.unicodeConverter;\n\t\t\t\t\t\tif (data.text !== null && data.text !== undefined) {\n\t\t\t\t\t\t\t\tcomponent.text = data.text;\n\t\t\t\t\t\t} else if (data.key !== null && data.key !== undefined) {\n\t\t\t\t\t\t\t\tcomponent.key = data.key;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (data.color !== undefined) {\n\t\t\t\t\t\t\t\tcolor = data.color;\n\t\t\t\t\t\t\t\tif (!(color instanceof Color)) {\n\t\t\t\t\t\t\t\t\t\tcolor = new Color(color[0], color[1], color[2]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcomponent.color = color;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (data.opacity !== undefined) {\n\t\t\t\t\t\t\t\tcomponent.opacity = data.opacity;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (data.spacing !== undefined) component.spacing = data.spacing;\n\t\t\t\t\t\tif (data.fontSize !== undefined) {\n\t\t\t\t\t\t\t\tcomponent.fontSize = data.fontSize;\n\t\t\t\t\t\t\t\tif (!data.lineHeight) component.lineHeight = data.fontSize;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (data.lineHeight !== undefined) component.lineHeight = data.lineHeight;\n\t\t\t\t\t\tif (data.maxLines !== undefined) component.maxLines = data.maxLines;\n\t\t\t\t\t\tif (data.wrapLines !== undefined) component.wrapLines = data.wrapLines;\n\t\t\t\t\t\tif (data.minFontSize !== undefined) component.minFontSize = data.minFontSize;\n\t\t\t\t\t\tif (data.maxFontSize !== undefined) component.maxFontSize = data.maxFontSize;\n\t\t\t\t\t\tif (data.autoFitWidth) component.autoFitWidth = data.autoFitWidth;\n\t\t\t\t\t\tif (data.autoFitHeight) component.autoFitHeight = data.autoFitHeight;\n\t\t\t\t\t\tif (data.fontAsset !== undefined) component.fontAsset = data.fontAsset;\n\t\t\t\t\t\tif (data.font !== undefined) component.font = data.font;\n\t\t\t\t\t\tif (data.alignment !== undefined) component.alignment = data.alignment;\n\t\t\t\t\t\tif (data.outlineColor !== undefined) component.outlineColor = data.outlineColor;\n\t\t\t\t\t\tif (data.outlineThickness !== undefined) component.outlineThickness = data.outlineThickness;\n\t\t\t\t\t\tif (data.shadowColor !== undefined) component.shadowColor = data.shadowColor;\n\t\t\t\t\t\tif (data.shadowOffset !== undefined) component.shadowOffset = data.shadowOffset;\n\t\t\t\t\t\tif (data.enableMarkup !== undefined) component.enableMarkup = data.enableMarkup;\n\t\t\t\t}\n\t\t\t\tconst result = component._parseUpToScreen();\n\t\t\t\tif (result.screen) {\n\t\t\t\t\t\tcomponent._updateScreen(result.screen);\n\t\t\t\t}\n\t\t\t\tsuper.initializeComponentData(component, data, properties);\n\t\t\t\tcomponent._beingInitialized = false;\n\t\t\t\tif (component.type === ELEMENTTYPE_IMAGE && component._image._meshDirty) {\n\t\t\t\t\t\tcomponent._image._updateMesh(component._image.mesh);\n\t\t\t\t}\n\t\t}\n\t\tonAddComponent(entity, component) {\n\t\t\t\tentity.fire('element:add');\n\t\t}\n\t\tonRemoveComponent(entity, component) {\n\t\t\t\tcomponent.onRemove();\n\t\t}\n\t\tcloneComponent(entity, clone) {\n\t\t\t\tconst source = entity.element;\n\t\t\t\tconst data = {\n\t\t\t\t\t\tenabled: source.enabled,\n\t\t\t\t\t\twidth: source.width,\n\t\t\t\t\t\theight: source.height,\n\t\t\t\t\t\tanchor: source.anchor.clone(),\n\t\t\t\t\t\tpivot: source.pivot.clone(),\n\t\t\t\t\t\tmargin: source.margin.clone(),\n\t\t\t\t\t\talignment: source.alignment && source.alignment.clone() || source.alignment,\n\t\t\t\t\t\tautoWidth: source.autoWidth,\n\t\t\t\t\t\tautoHeight: source.autoHeight,\n\t\t\t\t\t\ttype: source.type,\n\t\t\t\t\t\trect: source.rect && source.rect.clone() || source.rect,\n\t\t\t\t\t\trtlReorder: source.rtlReorder,\n\t\t\t\t\t\tunicodeConverter: source.unicodeConverter,\n\t\t\t\t\t\tmaterialAsset: source.materialAsset,\n\t\t\t\t\t\tmaterial: source.material,\n\t\t\t\t\t\tcolor: source.color && source.color.clone() || source.color,\n\t\t\t\t\t\topacity: source.opacity,\n\t\t\t\t\t\ttextureAsset: source.textureAsset,\n\t\t\t\t\t\ttexture: source.texture,\n\t\t\t\t\t\tspriteAsset: source.spriteAsset,\n\t\t\t\t\t\tsprite: source.sprite,\n\t\t\t\t\t\tspriteFrame: source.spriteFrame,\n\t\t\t\t\t\tpixelsPerUnit: source.pixelsPerUnit,\n\t\t\t\t\t\tspacing: source.spacing,\n\t\t\t\t\t\tlineHeight: source.lineHeight,\n\t\t\t\t\t\twrapLines: source.wrapLines,\n\t\t\t\t\t\tlayers: source.layers,\n\t\t\t\t\t\tfontSize: source.fontSize,\n\t\t\t\t\t\tminFontSize: source.minFontSize,\n\t\t\t\t\t\tmaxFontSize: source.maxFontSize,\n\t\t\t\t\t\tautoFitWidth: source.autoFitWidth,\n\t\t\t\t\t\tautoFitHeight: source.autoFitHeight,\n\t\t\t\t\t\tmaxLines: source.maxLines,\n\t\t\t\t\t\tfontAsset: source.fontAsset,\n\t\t\t\t\t\tfont: source.font,\n\t\t\t\t\t\tuseInput: source.useInput,\n\t\t\t\t\t\tfitMode: source.fitMode,\n\t\t\t\t\t\tbatchGroupId: source.batchGroupId,\n\t\t\t\t\t\tmask: source.mask,\n\t\t\t\t\t\toutlineColor: source.outlineColor && source.outlineColor.clone() || source.outlineColor,\n\t\t\t\t\t\toutlineThickness: source.outlineThickness,\n\t\t\t\t\t\tshadowColor: source.shadowColor && source.shadowColor.clone() || source.shadowColor,\n\t\t\t\t\t\tshadowOffset: source.shadowOffset && source.shadowOffset.clone() || source.shadowOffset,\n\t\t\t\t\t\tenableMarkup: source.enableMarkup\n\t\t\t\t};\n\t\t\t\tif (source.key !== undefined && source.key !== null) {\n\t\t\t\t\t\tdata.key = source.key;\n\t\t\t\t} else {\n\t\t\t\t\t\tdata.text = source.text;\n\t\t\t\t}\n\t\t\t\treturn this.addComponent(clone, data);\n\t\t}\n\t\tgetTextElementMaterial(screenSpace, msdf, textAttibutes) {\n\t\t\t\tconst hash = (screenSpace && 1 << 0) | (msdf && 1 << 1) | (textAttibutes && 1 << 2);\n\t\t\t\tlet material = this._defaultTextMaterials[hash];\n\t\t\t\tif (material) {\n\t\t\t\t\t\treturn material;\n\t\t\t\t}\n\t\t\t\tlet name = 'TextMaterial';\n\t\t\t\tmaterial = new StandardMaterial();\n\t\t\t\tif (msdf) {\n\t\t\t\t\t\tmaterial.msdfMap = this._defaultTexture;\n\t\t\t\t\t\tmaterial.msdfTextAttribute = textAttibutes;\n\t\t\t\t\t\tmaterial.emissive.set(1, 1, 1);\n\t\t\t\t} else {\n\t\t\t\t\t\tname = `Bitmap${name}`;\n\t\t\t\t\t\tmaterial.emissive.set(1, 1, 1);\n\t\t\t\t\t\tmaterial.emissiveMap = this._defaultTexture;\n\t\t\t\t\t\tmaterial.opacityMap = this._defaultTexture;\n\t\t\t\t\t\tmaterial.opacityMapChannel = 'a';\n\t\t\t\t}\n\t\t\t\tif (screenSpace) {\n\t\t\t\t\t\tname = `ScreenSpace${name}`;\n\t\t\t\t\t\tmaterial.depthTest = false;\n\t\t\t\t}\n\t\t\t\tmaterial.name = `default${name}`;\n\t\t\t\tmaterial.useLighting = false;\n\t\t\t\tmaterial.useTonemap = false;\n\t\t\t\tmaterial.useFog = false;\n\t\t\t\tmaterial.useSkybox = false;\n\t\t\t\tmaterial.diffuse.set(0, 0, 0);\n\t\t\t\tmaterial.opacity = 0.5;\n\t\t\t\tmaterial.blendType = BLEND_PREMULTIPLIED;\n\t\t\t\tmaterial.depthWrite = false;\n\t\t\t\tmaterial.emissiveVertexColor = true;\n\t\t\t\tmaterial.update();\n\t\t\t\tthis._defaultTextMaterials[hash] = material;\n\t\t\t\treturn material;\n\t\t}\n\t\t_createBaseImageMaterial() {\n\t\t\t\tconst material = new StandardMaterial();\n\t\t\t\tmaterial.diffuse.set(0, 0, 0);\n\t\t\t\tmaterial.emissive.set(1, 1, 1);\n\t\t\t\tmaterial.emissiveMap = this._defaultTexture;\n\t\t\t\tmaterial.opacityMap = this._defaultTexture;\n\t\t\t\tmaterial.opacityMapChannel = 'a';\n\t\t\t\tmaterial.useLighting = false;\n\t\t\t\tmaterial.useTonemap = false;\n\t\t\t\tmaterial.useFog = false;\n\t\t\t\tmaterial.useSkybox = false;\n\t\t\t\tmaterial.blendType = BLEND_PREMULTIPLIED;\n\t\t\t\tmaterial.depthWrite = false;\n\t\t\t\treturn material;\n\t\t}\n\t\tgetImageElementMaterial(screenSpace, mask, nineSliced, nineSliceTiled) {\n\t\t\t\tif (screenSpace) {\n\t\t\t\t\t\tif (mask) {\n\t\t\t\t\t\t\t\tif (nineSliced) {\n\t\t\t\t\t\t\t\t\t\tif (!this.defaultScreenSpaceImageMask9SlicedMaterial) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMask9SlicedMaterial = this._createBaseImageMaterial();\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMask9SlicedMaterial.name = 'defaultScreenSpaceImageMask9SlicedMaterial';\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMask9SlicedMaterial.nineSlicedMode = SPRITE_RENDERMODE_SLICED;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMask9SlicedMaterial.depthTest = false;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMask9SlicedMaterial.alphaTest = 1;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMask9SlicedMaterial.redWrite = false;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMask9SlicedMaterial.greenWrite = false;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMask9SlicedMaterial.blueWrite = false;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMask9SlicedMaterial.alphaWrite = false;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMask9SlicedMaterial.update();\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImageMaterials.push(this.defaultScreenSpaceImageMask9SlicedMaterial);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\treturn this.defaultScreenSpaceImageMask9SlicedMaterial;\n\t\t\t\t\t\t\t\t} else if (nineSliceTiled) {\n\t\t\t\t\t\t\t\t\t\tif (!this.defaultScreenSpaceImageMask9TiledMaterial) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMask9TiledMaterial = this.defaultScreenSpaceImage9TiledMaterial.clone();\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMask9TiledMaterial.name = 'defaultScreenSpaceImageMask9TiledMaterial';\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMask9TiledMaterial.nineSlicedMode = SPRITE_RENDERMODE_TILED;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMask9TiledMaterial.depthTest = false;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMask9TiledMaterial.alphaTest = 1;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMask9TiledMaterial.redWrite = false;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMask9TiledMaterial.greenWrite = false;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMask9TiledMaterial.blueWrite = false;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMask9TiledMaterial.alphaWrite = false;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMask9TiledMaterial.update();\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImageMaterials.push(this.defaultScreenSpaceImageMask9TiledMaterial);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\treturn this.defaultScreenSpaceImageMask9TiledMaterial;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tif (!this.defaultScreenSpaceImageMaskMaterial) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMaskMaterial = this._createBaseImageMaterial();\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMaskMaterial.name = 'defaultScreenSpaceImageMaskMaterial';\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMaskMaterial.depthTest = false;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMaskMaterial.alphaTest = 1;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMaskMaterial.redWrite = false;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMaskMaterial.greenWrite = false;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMaskMaterial.blueWrite = false;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMaskMaterial.alphaWrite = false;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMaskMaterial.update();\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImageMaterials.push(this.defaultScreenSpaceImageMaskMaterial);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\treturn this.defaultScreenSpaceImageMaskMaterial;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (nineSliced) {\n\t\t\t\t\t\t\t\t\t\tif (!this.defaultScreenSpaceImage9SlicedMaterial) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImage9SlicedMaterial = this._createBaseImageMaterial();\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImage9SlicedMaterial.name = 'defaultScreenSpaceImage9SlicedMaterial';\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImage9SlicedMaterial.nineSlicedMode = SPRITE_RENDERMODE_SLICED;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImage9SlicedMaterial.depthTest = false;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImage9SlicedMaterial.update();\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImageMaterials.push(this.defaultScreenSpaceImage9SlicedMaterial);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\treturn this.defaultScreenSpaceImage9SlicedMaterial;\n\t\t\t\t\t\t\t\t} else if (nineSliceTiled) {\n\t\t\t\t\t\t\t\t\t\tif (!this.defaultScreenSpaceImage9TiledMaterial) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImage9TiledMaterial = this._createBaseImageMaterial();\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImage9TiledMaterial.name = 'defaultScreenSpaceImage9TiledMaterial';\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImage9TiledMaterial.nineSlicedMode = SPRITE_RENDERMODE_TILED;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImage9TiledMaterial.depthTest = false;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImage9TiledMaterial.update();\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImageMaterials.push(this.defaultScreenSpaceImage9TiledMaterial);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\treturn this.defaultScreenSpaceImage9TiledMaterial;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tif (!this.defaultScreenSpaceImageMaterial) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMaterial = this._createBaseImageMaterial();\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMaterial.name = 'defaultScreenSpaceImageMaterial';\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMaterial.depthTest = false;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMaterial.update();\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImageMaterials.push(this.defaultScreenSpaceImageMaterial);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\treturn this.defaultScreenSpaceImageMaterial;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tif (mask) {\n\t\t\t\t\t\t\t\tif (nineSliced) {\n\t\t\t\t\t\t\t\t\t\tif (!this.defaultImage9SlicedMaskMaterial) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImage9SlicedMaskMaterial = this._createBaseImageMaterial();\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImage9SlicedMaskMaterial.name = 'defaultImage9SlicedMaskMaterial';\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImage9SlicedMaskMaterial.nineSlicedMode = SPRITE_RENDERMODE_SLICED;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImage9SlicedMaskMaterial.alphaTest = 1;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImage9SlicedMaskMaterial.redWrite = false;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImage9SlicedMaskMaterial.greenWrite = false;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImage9SlicedMaskMaterial.blueWrite = false;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImage9SlicedMaskMaterial.alphaWrite = false;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImage9SlicedMaskMaterial.update();\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImageMaterials.push(this.defaultImage9SlicedMaskMaterial);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\treturn this.defaultImage9SlicedMaskMaterial;\n\t\t\t\t\t\t\t\t} else if (nineSliceTiled) {\n\t\t\t\t\t\t\t\t\t\tif (!this.defaultImage9TiledMaskMaterial) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImage9TiledMaskMaterial = this._createBaseImageMaterial();\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImage9TiledMaskMaterial.name = 'defaultImage9TiledMaskMaterial';\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImage9TiledMaskMaterial.nineSlicedMode = SPRITE_RENDERMODE_TILED;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImage9TiledMaskMaterial.alphaTest = 1;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImage9TiledMaskMaterial.redWrite = false;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImage9TiledMaskMaterial.greenWrite = false;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImage9TiledMaskMaterial.blueWrite = false;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImage9TiledMaskMaterial.alphaWrite = false;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImage9TiledMaskMaterial.update();\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImageMaterials.push(this.defaultImage9TiledMaskMaterial);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\treturn this.defaultImage9TiledMaskMaterial;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tif (!this.defaultImageMaskMaterial) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImageMaskMaterial = this._createBaseImageMaterial();\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImageMaskMaterial.name = 'defaultImageMaskMaterial';\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImageMaskMaterial.alphaTest = 1;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImageMaskMaterial.redWrite = false;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImageMaskMaterial.greenWrite = false;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImageMaskMaterial.blueWrite = false;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImageMaskMaterial.alphaWrite = false;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImageMaskMaterial.update();\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImageMaterials.push(this.defaultImageMaskMaterial);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\treturn this.defaultImageMaskMaterial;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (nineSliced) {\n\t\t\t\t\t\t\t\t\t\tif (!this.defaultImage9SlicedMaterial) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImage9SlicedMaterial = this._createBaseImageMaterial();\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImage9SlicedMaterial.name = 'defaultImage9SlicedMaterial';\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImage9SlicedMaterial.nineSlicedMode = SPRITE_RENDERMODE_SLICED;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImage9SlicedMaterial.update();\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImageMaterials.push(this.defaultImage9SlicedMaterial);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\treturn this.defaultImage9SlicedMaterial;\n\t\t\t\t\t\t\t\t} else if (nineSliceTiled) {\n\t\t\t\t\t\t\t\t\t\tif (!this.defaultImage9TiledMaterial) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImage9TiledMaterial = this._createBaseImageMaterial();\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImage9TiledMaterial.name = 'defaultImage9TiledMaterial';\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImage9TiledMaterial.nineSlicedMode = SPRITE_RENDERMODE_TILED;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImage9TiledMaterial.update();\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImageMaterials.push(this.defaultImage9TiledMaterial);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\treturn this.defaultImage9TiledMaterial;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tif (!this.defaultImageMaterial) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImageMaterial = this._createBaseImageMaterial();\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImageMaterial.name = 'defaultImageMaterial';\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImageMaterial.update();\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImageMaterials.push(this.defaultImageMaterial);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\treturn this.defaultImageMaterial;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tregisterUnicodeConverter(func) {\n\t\t\t\tthis._unicodeConverter = func;\n\t\t}\n\t\tregisterRtlReorder(func) {\n\t\t\t\tthis._rtlReorder = func;\n\t\t}\n\t\tgetUnicodeConverter() {\n\t\t\t\treturn this._unicodeConverter;\n\t\t}\n\t\tgetRtlReorder() {\n\t\t\t\treturn this._rtlReorder;\n\t\t}\n}\n\nconst MOTION_FREE = 'free';\nconst MOTION_LIMITED = 'limited';\nconst MOTION_LOCKED = 'locked';\n\nconst properties$1 = [\n\t\t'angularDampingX',\n\t\t'angularDampingY',\n\t\t'angularDampingZ',\n\t\t'angularEquilibriumX',\n\t\t'angularEquilibriumY',\n\t\t'angularEquilibriumZ',\n\t\t'angularLimitsX',\n\t\t'angularLimitsY',\n\t\t'angularLimitsZ',\n\t\t'angularMotionX',\n\t\t'angularMotionY',\n\t\t'angularMotionZ',\n\t\t'angularSpringX',\n\t\t'angularSpringY',\n\t\t'angularSpringZ',\n\t\t'angularStiffnessX',\n\t\t'angularStiffnessY',\n\t\t'angularStiffnessZ',\n\t\t'breakForce',\n\t\t'enableCollision',\n\t\t'enabled',\n\t\t'entityA',\n\t\t'entityB',\n\t\t'linearDampingX',\n\t\t'linearDampingY',\n\t\t'linearDampingZ',\n\t\t'linearEquilibriumX',\n\t\t'linearEquilibriumY',\n\t\t'linearEquilibriumZ',\n\t\t'linearLimitsX',\n\t\t'linearLimitsY',\n\t\t'linearLimitsZ',\n\t\t'linearMotionX',\n\t\t'linearMotionY',\n\t\t'linearMotionZ',\n\t\t'linearSpringX',\n\t\t'linearSpringY',\n\t\t'linearSpringZ',\n\t\t'linearStiffnessX',\n\t\t'linearStiffnessY',\n\t\t'linearStiffnessZ'\n];\nclass JointComponent extends Component {\n\t\tconstructor(system, entity){\n\t\t\t\tsuper(system, entity);\n\t\t\t\tthis._constraint = null;\n\t\t\t\tthis._entityA = null;\n\t\t\t\tthis._entityB = null;\n\t\t\t\tthis._breakForce = 3.4e+38;\n\t\t\t\tthis._enableCollision = true;\n\t\t\t\tthis._linearMotionX = MOTION_LOCKED;\n\t\t\t\tthis._linearLimitsX = new Vec2(0, 0);\n\t\t\t\tthis._linearSpringX = false;\n\t\t\t\tthis._linearStiffnessX = 0;\n\t\t\t\tthis._linearDampingX = 1;\n\t\t\t\tthis._linearEquilibriumX = 0;\n\t\t\t\tthis._linearMotionY = MOTION_LOCKED;\n\t\t\t\tthis._linearLimitsY = new Vec2(0, 0);\n\t\t\t\tthis._linearSpringY = false;\n\t\t\t\tthis._linearStiffnessY = 0;\n\t\t\t\tthis._linearDampingY = 1;\n\t\t\t\tthis._linearEquilibriumY = 0;\n\t\t\t\tthis._linearMotionZ = MOTION_LOCKED;\n\t\t\t\tthis._linearLimitsZ = new Vec2(0, 0);\n\t\t\t\tthis._linearSpringZ = false;\n\t\t\t\tthis._linearStiffnessZ = 0;\n\t\t\t\tthis._linearDampingZ = 1;\n\t\t\t\tthis._linearEquilibriumZ = 0;\n\t\t\t\tthis._angularMotionX = MOTION_LOCKED;\n\t\t\t\tthis._angularLimitsX = new Vec2(0, 0);\n\t\t\t\tthis._angularSpringX = false;\n\t\t\t\tthis._angularStiffnessX = 0;\n\t\t\t\tthis._angularDampingX = 1;\n\t\t\t\tthis._angularEquilibriumX = 0;\n\t\t\t\tthis._angularMotionY = MOTION_LOCKED;\n\t\t\t\tthis._angularLimitsY = new Vec2(0, 0);\n\t\t\t\tthis._angularSpringY = false;\n\t\t\t\tthis._angularStiffnessY = 0;\n\t\t\t\tthis._angularDampingY = 1;\n\t\t\t\tthis._angularEquilibriumY = 0;\n\t\t\t\tthis._angularMotionZ = MOTION_LOCKED;\n\t\t\t\tthis._angularLimitsZ = new Vec2(0, 0);\n\t\t\t\tthis._angularSpringZ = false;\n\t\t\t\tthis._angularEquilibriumZ = 0;\n\t\t\t\tthis._angularDampingZ = 1;\n\t\t\t\tthis._angularStiffnessZ = 0;\n\t\t\t\tthis.on('set_enabled', this._onSetEnabled, this);\n\t\t}\n\t\tset entityA(body) {\n\t\t\t\tthis._destroyConstraint();\n\t\t\t\tthis._entityA = body;\n\t\t\t\tthis._createConstraint();\n\t\t}\n\t\tget entityA() {\n\t\t\t\treturn this._entityA;\n\t\t}\n\t\tset entityB(body) {\n\t\t\t\tthis._destroyConstraint();\n\t\t\t\tthis._entityB = body;\n\t\t\t\tthis._createConstraint();\n\t\t}\n\t\tget entityB() {\n\t\t\t\treturn this._entityB;\n\t\t}\n\t\tset breakForce(force) {\n\t\t\t\tif (this._constraint && this._breakForce !== force) {\n\t\t\t\t\t\tthis._constraint.setBreakingImpulseThreshold(force);\n\t\t\t\t\t\tthis._breakForce = force;\n\t\t\t\t}\n\t\t}\n\t\tget breakForce() {\n\t\t\t\treturn this._breakForce;\n\t\t}\n\t\tset enableCollision(enableCollision) {\n\t\t\t\tthis._destroyConstraint();\n\t\t\t\tthis._enableCollision = enableCollision;\n\t\t\t\tthis._createConstraint();\n\t\t}\n\t\tget enableCollision() {\n\t\t\t\treturn this._enableCollision;\n\t\t}\n\t\tset angularLimitsX(limits) {\n\t\t\t\tif (!this._angularLimitsX.equals(limits)) {\n\t\t\t\t\t\tthis._angularLimitsX.copy(limits);\n\t\t\t\t\t\tthis._updateAngularLimits();\n\t\t\t\t}\n\t\t}\n\t\tget angularLimitsX() {\n\t\t\t\treturn this._angularLimitsX;\n\t\t}\n\t\tset angularMotionX(value) {\n\t\t\t\tif (this._angularMotionX !== value) {\n\t\t\t\t\t\tthis._angularMotionX = value;\n\t\t\t\t\t\tthis._updateAngularLimits();\n\t\t\t\t}\n\t\t}\n\t\tget angularMotionX() {\n\t\t\t\treturn this._angularMotionX;\n\t\t}\n\t\tset angularLimitsY(limits) {\n\t\t\t\tif (!this._angularLimitsY.equals(limits)) {\n\t\t\t\t\t\tthis._angularLimitsY.copy(limits);\n\t\t\t\t\t\tthis._updateAngularLimits();\n\t\t\t\t}\n\t\t}\n\t\tget angularLimitsY() {\n\t\t\t\treturn this._angularLimitsY;\n\t\t}\n\t\tset angularMotionY(value) {\n\t\t\t\tif (this._angularMotionY !== value) {\n\t\t\t\t\t\tthis._angularMotionY = value;\n\t\t\t\t\t\tthis._updateAngularLimits();\n\t\t\t\t}\n\t\t}\n\t\tget angularMotionY() {\n\t\t\t\treturn this._angularMotionY;\n\t\t}\n\t\tset angularLimitsZ(limits) {\n\t\t\t\tif (!this._angularLimitsZ.equals(limits)) {\n\t\t\t\t\t\tthis._angularLimitsZ.copy(limits);\n\t\t\t\t\t\tthis._updateAngularLimits();\n\t\t\t\t}\n\t\t}\n\t\tget angularLimitsZ() {\n\t\t\t\treturn this._angularLimitsZ;\n\t\t}\n\t\tset angularMotionZ(value) {\n\t\t\t\tif (this._angularMotionZ !== value) {\n\t\t\t\t\t\tthis._angularMotionZ = value;\n\t\t\t\t\t\tthis._updateAngularLimits();\n\t\t\t\t}\n\t\t}\n\t\tget angularMotionZ() {\n\t\t\t\treturn this._angularMotionZ;\n\t\t}\n\t\tset linearLimitsX(limits) {\n\t\t\t\tif (!this._linearLimitsX.equals(limits)) {\n\t\t\t\t\t\tthis._linearLimitsX.copy(limits);\n\t\t\t\t\t\tthis._updateLinearLimits();\n\t\t\t\t}\n\t\t}\n\t\tget linearLimitsX() {\n\t\t\t\treturn this._linearLimitsX;\n\t\t}\n\t\tset linearMotionX(value) {\n\t\t\t\tif (this._linearMotionX !== value) {\n\t\t\t\t\t\tthis._linearMotionX = value;\n\t\t\t\t\t\tthis._updateLinearLimits();\n\t\t\t\t}\n\t\t}\n\t\tget linearMotionX() {\n\t\t\t\treturn this._linearMotionX;\n\t\t}\n\t\tset linearLimitsY(limits) {\n\t\t\t\tif (!this._linearLimitsY.equals(limits)) {\n\t\t\t\t\t\tthis._linearLimitsY.copy(limits);\n\t\t\t\t\t\tthis._updateLinearLimits();\n\t\t\t\t}\n\t\t}\n\t\tget linearLimitsY() {\n\t\t\t\treturn this._linearLimitsY;\n\t\t}\n\t\tset linearMotionY(value) {\n\t\t\t\tif (this._linearMotionY !== value) {\n\t\t\t\t\t\tthis._linearMotionY = value;\n\t\t\t\t\t\tthis._updateLinearLimits();\n\t\t\t\t}\n\t\t}\n\t\tget linearMotionY() {\n\t\t\t\treturn this._linearMotionY;\n\t\t}\n\t\tset linearLimitsZ(limits) {\n\t\t\t\tif (!this._linearLimitsZ.equals(limits)) {\n\t\t\t\t\t\tthis._linearLimitsZ.copy(limits);\n\t\t\t\t\t\tthis._updateLinearLimits();\n\t\t\t\t}\n\t\t}\n\t\tget linearLimitsZ() {\n\t\t\t\treturn this._linearLimitsZ;\n\t\t}\n\t\tset linearMotionZ(value) {\n\t\t\t\tif (this._linearMotionZ !== value) {\n\t\t\t\t\t\tthis._linearMotionZ = value;\n\t\t\t\t\t\tthis._updateLinearLimits();\n\t\t\t\t}\n\t\t}\n\t\tget linearMotionZ() {\n\t\t\t\treturn this._linearMotionZ;\n\t\t}\n\t\t_convertTransform(pcTransform, ammoTransform) {\n\t\t\t\tconst pos = pcTransform.getTranslation();\n\t\t\t\tconst rot = new Quat();\n\t\t\t\trot.setFromMat4(pcTransform);\n\t\t\t\tconst ammoVec = new Ammo.btVector3(pos.x, pos.y, pos.z);\n\t\t\t\tconst ammoQuat = new Ammo.btQuaternion(rot.x, rot.y, rot.z, rot.w);\n\t\t\t\tammoTransform.setOrigin(ammoVec);\n\t\t\t\tammoTransform.setRotation(ammoQuat);\n\t\t\t\tAmmo.destroy(ammoVec);\n\t\t\t\tAmmo.destroy(ammoQuat);\n\t\t}\n\t\t_updateAngularLimits() {\n\t\t\t\tconst constraint = this._constraint;\n\t\t\t\tif (constraint) {\n\t\t\t\t\t\tlet lx, ly, lz, ux, uy, uz;\n\t\t\t\t\t\tif (this._angularMotionX === MOTION_LIMITED) {\n\t\t\t\t\t\t\t\tlx = this._angularLimitsX.x * math.DEG_TO_RAD;\n\t\t\t\t\t\t\t\tux = this._angularLimitsX.y * math.DEG_TO_RAD;\n\t\t\t\t\t\t} else if (this._angularMotionX === MOTION_FREE) {\n\t\t\t\t\t\t\t\tlx = 1;\n\t\t\t\t\t\t\t\tux = 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tlx = ux = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this._angularMotionY === MOTION_LIMITED) {\n\t\t\t\t\t\t\t\tly = this._angularLimitsY.x * math.DEG_TO_RAD;\n\t\t\t\t\t\t\t\tuy = this._angularLimitsY.y * math.DEG_TO_RAD;\n\t\t\t\t\t\t} else if (this._angularMotionY === MOTION_FREE) {\n\t\t\t\t\t\t\t\tly = 1;\n\t\t\t\t\t\t\t\tuy = 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tly = uy = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this._angularMotionZ === MOTION_LIMITED) {\n\t\t\t\t\t\t\t\tlz = this._angularLimitsZ.x * math.DEG_TO_RAD;\n\t\t\t\t\t\t\t\tuz = this._angularLimitsZ.y * math.DEG_TO_RAD;\n\t\t\t\t\t\t} else if (this._angularMotionZ === MOTION_FREE) {\n\t\t\t\t\t\t\t\tlz = 1;\n\t\t\t\t\t\t\t\tuz = 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tlz = uz = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst limits = new Ammo.btVector3(lx, ly, lz);\n\t\t\t\t\t\tconstraint.setAngularLowerLimit(limits);\n\t\t\t\t\t\tlimits.setValue(ux, uy, uz);\n\t\t\t\t\t\tconstraint.setAngularUpperLimit(limits);\n\t\t\t\t\t\tAmmo.destroy(limits);\n\t\t\t\t}\n\t\t}\n\t\t_updateLinearLimits() {\n\t\t\t\tconst constraint = this._constraint;\n\t\t\t\tif (constraint) {\n\t\t\t\t\t\tlet lx, ly, lz, ux, uy, uz;\n\t\t\t\t\t\tif (this._linearMotionX === MOTION_LIMITED) {\n\t\t\t\t\t\t\t\tlx = this._linearLimitsX.x;\n\t\t\t\t\t\t\t\tux = this._linearLimitsX.y;\n\t\t\t\t\t\t} else if (this._linearMotionX === MOTION_FREE) {\n\t\t\t\t\t\t\t\tlx = 1;\n\t\t\t\t\t\t\t\tux = 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tlx = ux = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this._linearMotionY === MOTION_LIMITED) {\n\t\t\t\t\t\t\t\tly = this._linearLimitsY.x;\n\t\t\t\t\t\t\t\tuy = this._linearLimitsY.y;\n\t\t\t\t\t\t} else if (this._linearMotionY === MOTION_FREE) {\n\t\t\t\t\t\t\t\tly = 1;\n\t\t\t\t\t\t\t\tuy = 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tly = uy = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this._linearMotionZ === MOTION_LIMITED) {\n\t\t\t\t\t\t\t\tlz = this._linearLimitsZ.x;\n\t\t\t\t\t\t\t\tuz = this._linearLimitsZ.y;\n\t\t\t\t\t\t} else if (this._linearMotionZ === MOTION_FREE) {\n\t\t\t\t\t\t\t\tlz = 1;\n\t\t\t\t\t\t\t\tuz = 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tlz = uz = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst limits = new Ammo.btVector3(lx, ly, lz);\n\t\t\t\t\t\tconstraint.setLinearLowerLimit(limits);\n\t\t\t\t\t\tlimits.setValue(ux, uy, uz);\n\t\t\t\t\t\tconstraint.setLinearUpperLimit(limits);\n\t\t\t\t\t\tAmmo.destroy(limits);\n\t\t\t\t}\n\t\t}\n\t\t_createConstraint() {\n\t\t\t\tif (this._entityA && this._entityA.rigidbody) {\n\t\t\t\t\t\tthis._destroyConstraint();\n\t\t\t\t\t\tconst mat = new Mat4();\n\t\t\t\t\t\tconst bodyA = this._entityA.rigidbody.body;\n\t\t\t\t\t\tbodyA.activate();\n\t\t\t\t\t\tconst jointWtm = this.entity.getWorldTransform();\n\t\t\t\t\t\tconst entityAWtm = this._entityA.getWorldTransform();\n\t\t\t\t\t\tconst invEntityAWtm = entityAWtm.clone().invert();\n\t\t\t\t\t\tmat.mul2(invEntityAWtm, jointWtm);\n\t\t\t\t\t\tconst frameA = new Ammo.btTransform();\n\t\t\t\t\t\tthis._convertTransform(mat, frameA);\n\t\t\t\t\t\tif (this._entityB && this._entityB.rigidbody) {\n\t\t\t\t\t\t\t\tconst bodyB = this._entityB.rigidbody.body;\n\t\t\t\t\t\t\t\tbodyB.activate();\n\t\t\t\t\t\t\t\tconst entityBWtm = this._entityB.getWorldTransform();\n\t\t\t\t\t\t\t\tconst invEntityBWtm = entityBWtm.clone().invert();\n\t\t\t\t\t\t\t\tmat.mul2(invEntityBWtm, jointWtm);\n\t\t\t\t\t\t\t\tconst frameB = new Ammo.btTransform();\n\t\t\t\t\t\t\t\tthis._convertTransform(mat, frameB);\n\t\t\t\t\t\t\t\tthis._constraint = new Ammo.btGeneric6DofSpringConstraint(bodyA, bodyB, frameA, frameB, !this._enableCollision);\n\t\t\t\t\t\t\t\tAmmo.destroy(frameB);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._constraint = new Ammo.btGeneric6DofSpringConstraint(bodyA, frameA, !this._enableCollision);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tAmmo.destroy(frameA);\n\t\t\t\t\t\tconst axis = [\n\t\t\t\t\t\t\t\t'X',\n\t\t\t\t\t\t\t\t'Y',\n\t\t\t\t\t\t\t\t'Z',\n\t\t\t\t\t\t\t\t'X',\n\t\t\t\t\t\t\t\t'Y',\n\t\t\t\t\t\t\t\t'Z'\n\t\t\t\t\t\t];\n\t\t\t\t\t\tfor(let i = 0; i < 6; i++){\n\t\t\t\t\t\t\t\tconst type = i < 3 ? '_linear' : '_angular';\n\t\t\t\t\t\t\t\tthis._constraint.enableSpring(i, this[`${type}Spring${axis[i]}`]);\n\t\t\t\t\t\t\t\tthis._constraint.setDamping(i, this[`${type}Damping${axis[i]}`]);\n\t\t\t\t\t\t\t\tthis._constraint.setEquilibriumPoint(i, this[`${type}Equilibrium${axis[i]}`]);\n\t\t\t\t\t\t\t\tthis._constraint.setStiffness(i, this[`${type}Stiffness${axis[i]}`]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._constraint.setBreakingImpulseThreshold(this._breakForce);\n\t\t\t\t\t\tthis._updateLinearLimits();\n\t\t\t\t\t\tthis._updateAngularLimits();\n\t\t\t\t\t\tconst app = this.system.app;\n\t\t\t\t\t\tconst dynamicsWorld = app.systems.rigidbody.dynamicsWorld;\n\t\t\t\t\t\tdynamicsWorld.addConstraint(this._constraint, !this._enableCollision);\n\t\t\t\t}\n\t\t}\n\t\t_destroyConstraint() {\n\t\t\t\tif (this._constraint) {\n\t\t\t\t\t\tconst app = this.system.app;\n\t\t\t\t\t\tconst dynamicsWorld = app.systems.rigidbody.dynamicsWorld;\n\t\t\t\t\t\tdynamicsWorld.removeConstraint(this._constraint);\n\t\t\t\t\t\tAmmo.destroy(this._constraint);\n\t\t\t\t\t\tthis._constraint = null;\n\t\t\t\t}\n\t\t}\n\t\tinitFromData(data) {\n\t\t\t\tfor (const prop of properties$1){\n\t\t\t\t\t\tif (data.hasOwnProperty(prop)) {\n\t\t\t\t\t\t\t\tif (data[prop] instanceof Vec2) {\n\t\t\t\t\t\t\t\t\t\tthis[`_${prop}`].copy(data[prop]);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis[`_${prop}`] = data[prop];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._createConstraint();\n\t\t}\n\t\tonEnable() {\n\t\t\t\tthis._createConstraint();\n\t\t}\n\t\tonDisable() {\n\t\t\t\tthis._destroyConstraint();\n\t\t}\n\t\t_onSetEnabled(prop, old, value) {}\n\t\t_onBeforeRemove() {\n\t\t\t\tthis.fire('remove');\n\t\t}\n}\nconst functionMap = {\n\t\tDamping: 'setDamping',\n\t\tEquilibrium: 'setEquilibriumPoint',\n\t\tSpring: 'enableSpring',\n\t\tStiffness: 'setStiffness'\n};\n[\n\t\t'linear',\n\t\t'angular'\n].forEach((type)=>{\n\t\t[\n\t\t\t\t'Damping',\n\t\t\t\t'Equilibrium',\n\t\t\t\t'Spring',\n\t\t\t\t'Stiffness'\n\t\t].forEach((name)=>{\n\t\t\t\t[\n\t\t\t\t\t\t'X',\n\t\t\t\t\t\t'Y',\n\t\t\t\t\t\t'Z'\n\t\t\t\t].forEach((axis)=>{\n\t\t\t\t\t\tconst prop = type + name + axis;\n\t\t\t\t\t\tconst propInternal = `_${prop}`;\n\t\t\t\t\t\tlet index = type === 'linear' ? 0 : 3;\n\t\t\t\t\t\tif (axis === 'Y') index += 1;\n\t\t\t\t\t\tif (axis === 'Z') index += 2;\n\t\t\t\t\t\tObject.defineProperty(JointComponent.prototype, prop, {\n\t\t\t\t\t\t\t\tget: function() {\n\t\t\t\t\t\t\t\t\t\treturn this[propInternal];\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tset: function(value) {\n\t\t\t\t\t\t\t\t\t\tif (this[propInternal] !== value) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis[propInternal] = value;\n\t\t\t\t\t\t\t\t\t\t\t\tthis._constraint[functionMap[name]](index, value);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t});\n\t\t});\n});\n\nclass JointComponentData {\n\t\tconstructor(){\n\t\t\t\tthis.enabled = true;\n\t\t}\n}\n\nconst _schema$e = [\n\t\t'enabled'\n];\nclass JointComponentSystem extends ComponentSystem {\n\t\tconstructor(app){\n\t\t\t\tsuper(app);\n\t\t\t\tthis.id = 'joint';\n\t\t\t\tthis.app = app;\n\t\t\t\tthis.ComponentType = JointComponent;\n\t\t\t\tthis.DataType = JointComponentData;\n\t\t\t\tthis.schema = _schema$e;\n\t\t}\n\t\tinitializeComponentData(component, data, properties) {\n\t\t\t\tcomponent.initFromData(data);\n\t\t\t\tsuper.initializeComponentData(component, data, _schema$e);\n\t\t}\n}\nComponent._buildAccessors(JointComponent.prototype, _schema$e);\n\nclass LayoutChildComponent extends Component {\n\t\tset minWidth(value) {\n\t\t\t\tif (value !== this._minWidth) {\n\t\t\t\t\t\tthis._minWidth = value;\n\t\t\t\t\t\tthis.fire('resize');\n\t\t\t\t}\n\t\t}\n\t\tget minWidth() {\n\t\t\t\treturn this._minWidth;\n\t\t}\n\t\tset minHeight(value) {\n\t\t\t\tif (value !== this._minHeight) {\n\t\t\t\t\t\tthis._minHeight = value;\n\t\t\t\t\t\tthis.fire('resize');\n\t\t\t\t}\n\t\t}\n\t\tget minHeight() {\n\t\t\t\treturn this._minHeight;\n\t\t}\n\t\tset maxWidth(value) {\n\t\t\t\tif (value !== this._maxWidth) {\n\t\t\t\t\t\tthis._maxWidth = value;\n\t\t\t\t\t\tthis.fire('resize');\n\t\t\t\t}\n\t\t}\n\t\tget maxWidth() {\n\t\t\t\treturn this._maxWidth;\n\t\t}\n\t\tset maxHeight(value) {\n\t\t\t\tif (value !== this._maxHeight) {\n\t\t\t\t\t\tthis._maxHeight = value;\n\t\t\t\t\t\tthis.fire('resize');\n\t\t\t\t}\n\t\t}\n\t\tget maxHeight() {\n\t\t\t\treturn this._maxHeight;\n\t\t}\n\t\tset fitWidthProportion(value) {\n\t\t\t\tif (value !== this._fitWidthProportion) {\n\t\t\t\t\t\tthis._fitWidthProportion = value;\n\t\t\t\t\t\tthis.fire('resize');\n\t\t\t\t}\n\t\t}\n\t\tget fitWidthProportion() {\n\t\t\t\treturn this._fitWidthProportion;\n\t\t}\n\t\tset fitHeightProportion(value) {\n\t\t\t\tif (value !== this._fitHeightProportion) {\n\t\t\t\t\t\tthis._fitHeightProportion = value;\n\t\t\t\t\t\tthis.fire('resize');\n\t\t\t\t}\n\t\t}\n\t\tget fitHeightProportion() {\n\t\t\t\treturn this._fitHeightProportion;\n\t\t}\n\t\tset excludeFromLayout(value) {\n\t\t\t\tif (value !== this._excludeFromLayout) {\n\t\t\t\t\t\tthis._excludeFromLayout = value;\n\t\t\t\t\t\tthis.fire('resize');\n\t\t\t\t}\n\t\t}\n\t\tget excludeFromLayout() {\n\t\t\t\treturn this._excludeFromLayout;\n\t\t}\n\t\tconstructor(...args){\n\t\t\t\tsuper(...args), this._minWidth = 0, this._minHeight = 0, this._maxWidth = null, this._maxHeight = null, this._fitWidthProportion = 0, this._fitHeightProportion = 0, this._excludeFromLayout = false;\n\t\t}\n}\n\nclass LayoutChildComponentData {\n\t\tconstructor(){\n\t\t\t\tthis.enabled = true;\n\t\t}\n}\n\nconst _schema$d = [\n\t\t'enabled'\n];\nclass LayoutChildComponentSystem extends ComponentSystem {\n\t\tconstructor(app){\n\t\t\t\tsuper(app);\n\t\t\t\tthis.id = 'layoutchild';\n\t\t\t\tthis.ComponentType = LayoutChildComponent;\n\t\t\t\tthis.DataType = LayoutChildComponentData;\n\t\t\t\tthis.schema = _schema$d;\n\t\t}\n\t\tinitializeComponentData(component, data, properties) {\n\t\t\t\tif (data.enabled !== undefined) component.enabled = data.enabled;\n\t\t\t\tif (data.minWidth !== undefined) component.minWidth = data.minWidth;\n\t\t\t\tif (data.minHeight !== undefined) component.minHeight = data.minHeight;\n\t\t\t\tif (data.maxWidth !== undefined) component.maxWidth = data.maxWidth;\n\t\t\t\tif (data.maxHeight !== undefined) component.maxHeight = data.maxHeight;\n\t\t\t\tif (data.fitWidthProportion !== undefined) component.fitWidthProportion = data.fitWidthProportion;\n\t\t\t\tif (data.fitHeightProportion !== undefined) component.fitHeightProportion = data.fitHeightProportion;\n\t\t\t\tif (data.excludeFromLayout !== undefined) component.excludeFromLayout = data.excludeFromLayout;\n\t\t\t\tsuper.initializeComponentData(component, data, properties);\n\t\t}\n\t\tcloneComponent(entity, clone) {\n\t\t\t\tconst layoutChild = entity.layoutchild;\n\t\t\t\treturn this.addComponent(clone, {\n\t\t\t\t\t\tenabled: layoutChild.enabled,\n\t\t\t\t\t\tminWidth: layoutChild.minWidth,\n\t\t\t\t\t\tminHeight: layoutChild.minHeight,\n\t\t\t\t\t\tmaxWidth: layoutChild.maxWidth,\n\t\t\t\t\t\tmaxHeight: layoutChild.maxHeight,\n\t\t\t\t\t\tfitWidthProportion: layoutChild.fitWidthProportion,\n\t\t\t\t\t\tfitHeightProportion: layoutChild.fitHeightProportion,\n\t\t\t\t\t\texcludeFromLayout: layoutChild.excludeFromLayout\n\t\t\t\t});\n\t\t}\n}\nComponent._buildAccessors(LayoutChildComponent.prototype, _schema$d);\n\nconst FITTING_NONE = 0;\nconst FITTING_STRETCH = 1;\nconst FITTING_SHRINK = 2;\nconst FITTING_BOTH = 3;\n\nconst AXIS_MAPPINGS = {};\nAXIS_MAPPINGS[ORIENTATION_HORIZONTAL] = {\n\t\taxis: 'x',\n\t\tsize: 'width',\n\t\tcalculatedSize: 'calculatedWidth',\n\t\tminSize: 'minWidth',\n\t\tmaxSize: 'maxWidth',\n\t\tfitting: 'widthFitting',\n\t\tfittingProportion: 'fitWidthProportion'\n};\nAXIS_MAPPINGS[ORIENTATION_VERTICAL] = {\n\t\taxis: 'y',\n\t\tsize: 'height',\n\t\tcalculatedSize: 'calculatedHeight',\n\t\tminSize: 'minHeight',\n\t\tmaxSize: 'maxHeight',\n\t\tfitting: 'heightFitting',\n\t\tfittingProportion: 'fitHeightProportion'\n};\nconst OPPOSITE_ORIENTATION = {};\nOPPOSITE_ORIENTATION[ORIENTATION_HORIZONTAL] = ORIENTATION_VERTICAL;\nOPPOSITE_ORIENTATION[ORIENTATION_VERTICAL] = ORIENTATION_HORIZONTAL;\nconst PROPERTY_DEFAULTS = {\n\t\tminWidth: 0,\n\t\tminHeight: 0,\n\t\tmaxWidth: Number.POSITIVE_INFINITY,\n\t\tmaxHeight: Number.POSITIVE_INFINITY,\n\t\twidth: null,\n\t\theight: null,\n\t\tfitWidthProportion: 0,\n\t\tfitHeightProportion: 0\n};\nconst FITTING_ACTION = {\n\t\tNONE: 'NONE',\n\t\tAPPLY_STRETCHING: 'APPLY_STRETCHING',\n\t\tAPPLY_SHRINKING: 'APPLY_SHRINKING'\n};\nconst availableSpace = new Vec2();\nfunction createCalculator(orientation) {\n\t\tlet options;\n\t\tconst a = AXIS_MAPPINGS[orientation];\n\t\tconst b = AXIS_MAPPINGS[OPPOSITE_ORIENTATION[orientation]];\n\t\tfunction minExtentA(element, size) {\n\t\t\t\treturn -size[a.size] * element.pivot[a.axis];\n\t\t}\n\t\tfunction minExtentB(element, size) {\n\t\t\t\treturn -size[b.size] * element.pivot[b.axis];\n\t\t}\n\t\tfunction maxExtentA(element, size) {\n\t\t\t\treturn size[a.size] * (1 - element.pivot[a.axis]);\n\t\t}\n\t\tfunction calculateAll(allElements, layoutOptions) {\n\t\t\t\tallElements = allElements.filter(shouldIncludeInLayout);\n\t\t\t\toptions = layoutOptions;\n\t\t\t\tavailableSpace.x = options.containerSize.x - options.padding.x - options.padding.z;\n\t\t\t\tavailableSpace.y = options.containerSize.y - options.padding.y - options.padding.w;\n\t\t\t\tresetAnchors(allElements);\n\t\t\t\tconst lines = reverseLinesIfRequired(splitLines(allElements));\n\t\t\t\tconst sizes = calculateSizesOnAxisB(lines, calculateSizesOnAxisA(lines));\n\t\t\t\tconst positions = calculateBasePositions(lines, sizes);\n\t\t\t\tapplyAlignmentAndPadding(lines, sizes, positions);\n\t\t\t\tapplySizesAndPositions(lines, sizes, positions);\n\t\t\t\treturn createLayoutInfo(lines);\n\t\t}\n\t\tfunction shouldIncludeInLayout(element) {\n\t\t\t\tconst layoutChildComponent = element.entity.layoutchild;\n\t\t\t\treturn !layoutChildComponent || !layoutChildComponent.enabled || !layoutChildComponent.excludeFromLayout;\n\t\t}\n\t\tfunction resetAnchors(allElements) {\n\t\t\t\tfor(let i = 0; i < allElements.length; ++i){\n\t\t\t\t\t\tconst element = allElements[i];\n\t\t\t\t\t\tconst anchor = element.anchor;\n\t\t\t\t\t\tif (anchor.x !== 0 || anchor.y !== 0 || anchor.z !== 0 || anchor.w !== 0) {\n\t\t\t\t\t\t\t\telement.anchor = Vec4.ZERO;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tfunction splitLines(allElements) {\n\t\t\t\tif (!options.wrap) {\n\t\t\t\t\t\treturn [\n\t\t\t\t\t\t\t\tallElements\n\t\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t\tconst lines = [\n\t\t\t\t\t\t[]\n\t\t\t\t];\n\t\t\t\tconst sizes = getElementSizeProperties(allElements);\n\t\t\t\tlet runningSize = 0;\n\t\t\t\tconst allowOverrun = options[a.fitting] === FITTING_SHRINK;\n\t\t\t\tfor(let i = 0; i < allElements.length; ++i){\n\t\t\t\t\t\tif (lines[lines.length - 1].length > 0) {\n\t\t\t\t\t\t\t\trunningSize += options.spacing[a.axis];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst idealElementSize = sizes[i][a.size];\n\t\t\t\t\t\trunningSize += idealElementSize;\n\t\t\t\t\t\tif (!allowOverrun && runningSize > availableSpace[a.axis] && lines[lines.length - 1].length !== 0) {\n\t\t\t\t\t\t\t\trunningSize = idealElementSize;\n\t\t\t\t\t\t\t\tlines.push([]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlines[lines.length - 1].push(allElements[i]);\n\t\t\t\t\t\tif (allowOverrun && runningSize > availableSpace[a.axis] && i !== allElements.length - 1) {\n\t\t\t\t\t\t\t\trunningSize = 0;\n\t\t\t\t\t\t\t\tlines.push([]);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn lines;\n\t\t}\n\t\tfunction reverseLinesIfRequired(lines) {\n\t\t\t\tconst reverseAxisA = options.orientation === ORIENTATION_HORIZONTAL && options.reverseX || options.orientation === ORIENTATION_VERTICAL && options.reverseY;\n\t\t\t\tconst reverseAxisB = options.orientation === ORIENTATION_HORIZONTAL && options.reverseY || options.orientation === ORIENTATION_VERTICAL && options.reverseX;\n\t\t\t\tif (reverseAxisA) {\n\t\t\t\t\t\tfor(let lineIndex = 0; lineIndex < lines.length; ++lineIndex){\n\t\t\t\t\t\t\t\tif (reverseAxisA) {\n\t\t\t\t\t\t\t\t\t\tlines[lineIndex].reverse();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (reverseAxisB) {\n\t\t\t\t\t\tlines.reverse();\n\t\t\t\t}\n\t\t\t\treturn lines;\n\t\t}\n\t\tfunction calculateSizesOnAxisA(lines) {\n\t\t\t\tconst sizesAllLines = [];\n\t\t\t\tfor(let lineIndex = 0; lineIndex < lines.length; ++lineIndex){\n\t\t\t\t\t\tconst line = lines[lineIndex];\n\t\t\t\t\t\tconst sizesThisLine = getElementSizeProperties(line);\n\t\t\t\t\t\tconst idealRequiredSpace = calculateTotalSpace(sizesThisLine, a);\n\t\t\t\t\t\tconst fittingAction = determineFittingAction(options[a.fitting], idealRequiredSpace, availableSpace[a.axis]);\n\t\t\t\t\t\tif (fittingAction === FITTING_ACTION.APPLY_STRETCHING) {\n\t\t\t\t\t\t\t\tstretchSizesToFitContainer(sizesThisLine, idealRequiredSpace, a);\n\t\t\t\t\t\t} else if (fittingAction === FITTING_ACTION.APPLY_SHRINKING) {\n\t\t\t\t\t\t\t\tshrinkSizesToFitContainer(sizesThisLine, idealRequiredSpace, a);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsizesAllLines.push(sizesThisLine);\n\t\t\t\t}\n\t\t\t\treturn sizesAllLines;\n\t\t}\n\t\tfunction calculateSizesOnAxisB(lines, sizesAllLines) {\n\t\t\t\tconst largestElementsForEachLine = [];\n\t\t\t\tconst largestSizesForEachLine = [];\n\t\t\t\tfor(let lineIndex = 0; lineIndex < lines.length; ++lineIndex){\n\t\t\t\t\t\tconst line = lines[lineIndex];\n\t\t\t\t\t\tline.largestElement = null;\n\t\t\t\t\t\tline.largestSize = {\n\t\t\t\t\t\t\t\twidth: Number.NEGATIVE_INFINITY,\n\t\t\t\t\t\t\t\theight: Number.NEGATIVE_INFINITY\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor(let elementIndex = 0; elementIndex < line.length; ++elementIndex){\n\t\t\t\t\t\t\t\tconst sizesThisElement = sizesAllLines[lineIndex][elementIndex];\n\t\t\t\t\t\t\t\tif (sizesThisElement[b.size] > line.largestSize[b.size]) {\n\t\t\t\t\t\t\t\t\t\tline.largestElement = line[elementIndex];\n\t\t\t\t\t\t\t\t\t\tline.largestSize = sizesThisElement;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlargestElementsForEachLine.push(line.largestElement);\n\t\t\t\t\t\tlargestSizesForEachLine.push(line.largestSize);\n\t\t\t\t}\n\t\t\t\tconst idealRequiredSpace = calculateTotalSpace(largestSizesForEachLine, b);\n\t\t\t\tconst fittingAction = determineFittingAction(options[b.fitting], idealRequiredSpace, availableSpace[b.axis]);\n\t\t\t\tif (fittingAction === FITTING_ACTION.APPLY_STRETCHING) {\n\t\t\t\t\t\tstretchSizesToFitContainer(largestSizesForEachLine, idealRequiredSpace, b);\n\t\t\t\t} else if (fittingAction === FITTING_ACTION.APPLY_SHRINKING) {\n\t\t\t\t\t\tshrinkSizesToFitContainer(largestSizesForEachLine, idealRequiredSpace, b);\n\t\t\t\t}\n\t\t\t\tfor(let lineIndex = 0; lineIndex < lines.length; ++lineIndex){\n\t\t\t\t\t\tconst line = lines[lineIndex];\n\t\t\t\t\t\tfor(let elementIndex = 0; elementIndex < line.length; ++elementIndex){\n\t\t\t\t\t\t\t\tconst sizesForThisElement = sizesAllLines[lineIndex][elementIndex];\n\t\t\t\t\t\t\t\tconst currentSize = sizesForThisElement[b.size];\n\t\t\t\t\t\t\t\tconst availableSize = lines.length === 1 ? availableSpace[b.axis] : line.largestSize[b.size];\n\t\t\t\t\t\t\t\tconst elementFittingAction = determineFittingAction(options[b.fitting], currentSize, availableSize);\n\t\t\t\t\t\t\t\tif (elementFittingAction === FITTING_ACTION.APPLY_STRETCHING) {\n\t\t\t\t\t\t\t\t\t\tsizesForThisElement[b.size] = Math.min(availableSize, sizesForThisElement[b.maxSize]);\n\t\t\t\t\t\t\t\t} else if (elementFittingAction === FITTING_ACTION.APPLY_SHRINKING) {\n\t\t\t\t\t\t\t\t\t\tsizesForThisElement[b.size] = Math.max(availableSize, sizesForThisElement[b.minSize]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn sizesAllLines;\n\t\t}\n\t\tfunction determineFittingAction(fittingMode, currentSize, availableSize) {\n\t\t\t\tswitch(fittingMode){\n\t\t\t\t\t\tcase FITTING_NONE:\n\t\t\t\t\t\t\t\treturn FITTING_ACTION.NONE;\n\t\t\t\t\t\tcase FITTING_STRETCH:\n\t\t\t\t\t\t\t\tif (currentSize < availableSize) {\n\t\t\t\t\t\t\t\t\t\treturn FITTING_ACTION.APPLY_STRETCHING;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn FITTING_ACTION.NONE;\n\t\t\t\t\t\tcase FITTING_SHRINK:\n\t\t\t\t\t\t\t\tif (currentSize >= availableSize) {\n\t\t\t\t\t\t\t\t\t\treturn FITTING_ACTION.APPLY_SHRINKING;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn FITTING_ACTION.NONE;\n\t\t\t\t\t\tcase FITTING_BOTH:\n\t\t\t\t\t\t\t\tif (currentSize < availableSize) {\n\t\t\t\t\t\t\t\t\t\treturn FITTING_ACTION.APPLY_STRETCHING;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn FITTING_ACTION.APPLY_SHRINKING;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tthrow new Error(`Unrecognized fitting mode: ${fittingMode}`);\n\t\t\t\t}\n\t\t}\n\t\tfunction calculateTotalSpace(sizes, axis) {\n\t\t\t\tconst totalSizes = sumValues(sizes, axis.size);\n\t\t\t\tconst totalSpacing = (sizes.length - 1) * options.spacing[axis.axis];\n\t\t\t\treturn totalSizes + totalSpacing;\n\t\t}\n\t\tfunction stretchSizesToFitContainer(sizesThisLine, idealRequiredSpace, axis) {\n\t\t\t\tconst ascendingMaxSizeOrder = getTraversalOrder(sizesThisLine, axis.maxSize);\n\t\t\t\tconst fittingProportions = getNormalizedValues(sizesThisLine, axis.fittingProportion);\n\t\t\t\tconst fittingProportionSums = createSumArray(fittingProportions, ascendingMaxSizeOrder);\n\t\t\t\tlet remainingUndershoot = availableSpace[axis.axis] - idealRequiredSpace;\n\t\t\t\tfor(let i = 0; i < sizesThisLine.length; ++i){\n\t\t\t\t\t\tconst index = ascendingMaxSizeOrder[i];\n\t\t\t\t\t\tconst targetIncrease = calculateAdjustment(index, remainingUndershoot, fittingProportions, fittingProportionSums);\n\t\t\t\t\t\tconst targetSize = sizesThisLine[index][axis.size] + targetIncrease;\n\t\t\t\t\t\tconst maxSize = sizesThisLine[index][axis.maxSize];\n\t\t\t\t\t\tconst actualSize = Math.min(targetSize, maxSize);\n\t\t\t\t\t\tsizesThisLine[index][axis.size] = actualSize;\n\t\t\t\t\t\tconst actualIncrease = Math.max(targetSize - actualSize, 0);\n\t\t\t\t\t\tconst appliedIncrease = targetIncrease - actualIncrease;\n\t\t\t\t\t\tremainingUndershoot -= appliedIncrease;\n\t\t\t\t}\n\t\t}\n\t\tfunction shrinkSizesToFitContainer(sizesThisLine, idealRequiredSpace, axis) {\n\t\t\t\tconst descendingMinSizeOrder = getTraversalOrder(sizesThisLine, axis.minSize, true);\n\t\t\t\tconst fittingProportions = getNormalizedValues(sizesThisLine, axis.fittingProportion);\n\t\t\t\tconst inverseFittingProportions = invertNormalizedValues(fittingProportions);\n\t\t\t\tconst inverseFittingProportionSums = createSumArray(inverseFittingProportions, descendingMinSizeOrder);\n\t\t\t\tlet remainingOvershoot = idealRequiredSpace - availableSpace[axis.axis];\n\t\t\t\tfor(let i = 0; i < sizesThisLine.length; ++i){\n\t\t\t\t\t\tconst index = descendingMinSizeOrder[i];\n\t\t\t\t\t\tconst targetReduction = calculateAdjustment(index, remainingOvershoot, inverseFittingProportions, inverseFittingProportionSums);\n\t\t\t\t\t\tconst targetSize = sizesThisLine[index][axis.size] - targetReduction;\n\t\t\t\t\t\tconst minSize = sizesThisLine[index][axis.minSize];\n\t\t\t\t\t\tconst actualSize = Math.max(targetSize, minSize);\n\t\t\t\t\t\tsizesThisLine[index][axis.size] = actualSize;\n\t\t\t\t\t\tconst actualReduction = Math.max(actualSize - targetSize, 0);\n\t\t\t\t\t\tconst appliedReduction = targetReduction - actualReduction;\n\t\t\t\t\t\tremainingOvershoot -= appliedReduction;\n\t\t\t\t}\n\t\t}\n\t\tfunction calculateAdjustment(index, remainingAdjustment, fittingProportions, fittingProportionSums) {\n\t\t\t\tconst proportion = fittingProportions[index];\n\t\t\t\tconst sumOfRemainingProportions = fittingProportionSums[index];\n\t\t\t\tif (Math.abs(proportion) < 1e-5 && Math.abs(sumOfRemainingProportions) < 1e-5) {\n\t\t\t\t\t\treturn remainingAdjustment;\n\t\t\t\t}\n\t\t\t\treturn remainingAdjustment * proportion / sumOfRemainingProportions;\n\t\t}\n\t\tfunction calculateBasePositions(lines, sizes) {\n\t\t\t\tconst cursor = {};\n\t\t\t\tcursor[a.axis] = 0;\n\t\t\t\tcursor[b.axis] = 0;\n\t\t\t\tlines[a.size] = Number.NEGATIVE_INFINITY;\n\t\t\t\tconst positionsAllLines = [];\n\t\t\t\tfor(let lineIndex = 0; lineIndex < lines.length; ++lineIndex){\n\t\t\t\t\t\tconst line = lines[lineIndex];\n\t\t\t\t\t\tif (line.length === 0) {\n\t\t\t\t\t\t\t\tpositionsAllLines.push([]);\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst positionsThisLine = [];\n\t\t\t\t\t\tconst sizesThisLine = sizes[lineIndex];\n\t\t\t\t\t\tfor(let elementIndex = 0; elementIndex < line.length; ++elementIndex){\n\t\t\t\t\t\t\t\tconst element = line[elementIndex];\n\t\t\t\t\t\t\t\tconst sizesThisElement = sizesThisLine[elementIndex];\n\t\t\t\t\t\t\t\tcursor[b.axis] -= minExtentB(element, sizesThisElement);\n\t\t\t\t\t\t\t\tcursor[a.axis] -= minExtentA(element, sizesThisElement);\n\t\t\t\t\t\t\t\tpositionsThisLine[elementIndex] = {};\n\t\t\t\t\t\t\t\tpositionsThisLine[elementIndex][a.axis] = cursor[a.axis];\n\t\t\t\t\t\t\t\tpositionsThisLine[elementIndex][b.axis] = cursor[b.axis];\n\t\t\t\t\t\t\t\tcursor[b.axis] += minExtentB(element, sizesThisElement);\n\t\t\t\t\t\t\t\tcursor[a.axis] += maxExtentA(element, sizesThisElement) + options.spacing[a.axis];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tline[a.size] = cursor[a.axis] - options.spacing[a.axis];\n\t\t\t\t\t\tline[b.size] = line.largestSize[b.size];\n\t\t\t\t\t\tlines[a.size] = Math.max(lines[a.size], line[a.size]);\n\t\t\t\t\t\tcursor[a.axis] = 0;\n\t\t\t\t\t\tcursor[b.axis] += line[b.size] + options.spacing[b.axis];\n\t\t\t\t\t\tpositionsAllLines.push(positionsThisLine);\n\t\t\t\t}\n\t\t\t\tlines[b.size] = cursor[b.axis] - options.spacing[b.axis];\n\t\t\t\treturn positionsAllLines;\n\t\t}\n\t\tfunction applyAlignmentAndPadding(lines, sizes, positions) {\n\t\t\t\tconst alignmentA = options.alignment[a.axis];\n\t\t\t\tconst alignmentB = options.alignment[b.axis];\n\t\t\t\tconst paddingA = options.padding[a.axis];\n\t\t\t\tconst paddingB = options.padding[b.axis];\n\t\t\t\tfor(let lineIndex = 0; lineIndex < lines.length; ++lineIndex){\n\t\t\t\t\t\tconst line = lines[lineIndex];\n\t\t\t\t\t\tconst sizesThisLine = sizes[lineIndex];\n\t\t\t\t\t\tconst positionsThisLine = positions[lineIndex];\n\t\t\t\t\t\tconst axisAOffset = (availableSpace[a.axis] - line[a.size]) * alignmentA + paddingA;\n\t\t\t\t\t\tconst axisBOffset = (availableSpace[b.axis] - lines[b.size]) * alignmentB + paddingB;\n\t\t\t\t\t\tfor(let elementIndex = 0; elementIndex < line.length; ++elementIndex){\n\t\t\t\t\t\t\t\tconst withinLineAxisBOffset = (line[b.size] - sizesThisLine[elementIndex][b.size]) * options.alignment[b.axis];\n\t\t\t\t\t\t\t\tpositionsThisLine[elementIndex][a.axis] += axisAOffset;\n\t\t\t\t\t\t\t\tpositionsThisLine[elementIndex][b.axis] += axisBOffset + withinLineAxisBOffset;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tfunction applySizesAndPositions(lines, sizes, positions) {\n\t\t\t\tfor(let lineIndex = 0; lineIndex < lines.length; ++lineIndex){\n\t\t\t\t\t\tconst line = lines[lineIndex];\n\t\t\t\t\t\tconst sizesThisLine = sizes[lineIndex];\n\t\t\t\t\t\tconst positionsThisLine = positions[lineIndex];\n\t\t\t\t\t\tfor(let elementIndex = 0; elementIndex < line.length; ++elementIndex){\n\t\t\t\t\t\t\t\tconst element = line[elementIndex];\n\t\t\t\t\t\t\t\telement[a.calculatedSize] = sizesThisLine[elementIndex][a.size];\n\t\t\t\t\t\t\t\telement[b.calculatedSize] = sizesThisLine[elementIndex][b.size];\n\t\t\t\t\t\t\t\tif (options.orientation === ORIENTATION_HORIZONTAL) {\n\t\t\t\t\t\t\t\t\t\telement.entity.setLocalPosition(positionsThisLine[elementIndex][a.axis], positionsThisLine[elementIndex][b.axis], element.entity.getLocalPosition().z);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\telement.entity.setLocalPosition(positionsThisLine[elementIndex][b.axis], positionsThisLine[elementIndex][a.axis], element.entity.getLocalPosition().z);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tfunction createLayoutInfo(lines) {\n\t\t\t\tconst layoutWidth = lines.width;\n\t\t\t\tconst layoutHeight = lines.height;\n\t\t\t\tconst xOffset = (availableSpace.x - layoutWidth) * options.alignment.x + options.padding.x;\n\t\t\t\tconst yOffset = (availableSpace.y - layoutHeight) * options.alignment.y + options.padding.y;\n\t\t\t\treturn {\n\t\t\t\t\t\tbounds: new Vec4(xOffset, yOffset, layoutWidth, layoutHeight)\n\t\t\t\t};\n\t\t}\n\t\tfunction getElementSizeProperties(elements) {\n\t\t\t\tconst sizeProperties = [];\n\t\t\t\tfor(let i = 0; i < elements.length; ++i){\n\t\t\t\t\t\tconst element = elements[i];\n\t\t\t\t\t\tconst minWidth = Math.max(getProperty(element, 'minWidth'), 0);\n\t\t\t\t\t\tconst minHeight = Math.max(getProperty(element, 'minHeight'), 0);\n\t\t\t\t\t\tconst maxWidth = Math.max(getProperty(element, 'maxWidth'), minWidth);\n\t\t\t\t\t\tconst maxHeight = Math.max(getProperty(element, 'maxHeight'), minHeight);\n\t\t\t\t\t\tconst width = clamp(getProperty(element, 'width'), minWidth, maxWidth);\n\t\t\t\t\t\tconst height = clamp(getProperty(element, 'height'), minHeight, maxHeight);\n\t\t\t\t\t\tconst fitWidthProportion = getProperty(element, 'fitWidthProportion');\n\t\t\t\t\t\tconst fitHeightProportion = getProperty(element, 'fitHeightProportion');\n\t\t\t\t\t\tsizeProperties.push({\n\t\t\t\t\t\t\t\tminWidth: minWidth,\n\t\t\t\t\t\t\t\tminHeight: minHeight,\n\t\t\t\t\t\t\t\tmaxWidth: maxWidth,\n\t\t\t\t\t\t\t\tmaxHeight: maxHeight,\n\t\t\t\t\t\t\t\twidth: width,\n\t\t\t\t\t\t\t\theight: height,\n\t\t\t\t\t\t\t\tfitWidthProportion: fitWidthProportion,\n\t\t\t\t\t\t\t\tfitHeightProportion: fitHeightProportion\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn sizeProperties;\n\t\t}\n\t\tfunction getProperty(element, propertyName) {\n\t\t\t\tconst layoutChildComponent = element.entity.layoutchild;\n\t\t\t\tif (layoutChildComponent && layoutChildComponent.enabled && layoutChildComponent[propertyName] !== undefined && layoutChildComponent[propertyName] !== null) {\n\t\t\t\t\t\treturn layoutChildComponent[propertyName];\n\t\t\t\t} else if (element[propertyName] !== undefined) {\n\t\t\t\t\t\treturn element[propertyName];\n\t\t\t\t}\n\t\t\t\treturn PROPERTY_DEFAULTS[propertyName];\n\t\t}\n\t\tfunction clamp(value, min, max) {\n\t\t\t\treturn Math.min(Math.max(value, min), max);\n\t\t}\n\t\tfunction sumValues(items, propertyName) {\n\t\t\t\treturn items.reduce((accumulator, current)=>{\n\t\t\t\t\t\treturn accumulator + current[propertyName];\n\t\t\t\t}, 0);\n\t\t}\n\t\tfunction getNormalizedValues(items, propertyName) {\n\t\t\t\tconst sum = sumValues(items, propertyName);\n\t\t\t\tconst normalizedValues = [];\n\t\t\t\tconst numItems = items.length;\n\t\t\t\tif (sum === 0) {\n\t\t\t\t\t\tfor(let i = 0; i < numItems; ++i){\n\t\t\t\t\t\t\t\tnormalizedValues.push(1 / numItems);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tfor(let i = 0; i < numItems; ++i){\n\t\t\t\t\t\t\t\tnormalizedValues.push(items[i][propertyName] / sum);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn normalizedValues;\n\t\t}\n\t\tfunction invertNormalizedValues(values) {\n\t\t\t\tif (values.length === 1) {\n\t\t\t\t\t\treturn [\n\t\t\t\t\t\t\t\t1\n\t\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t\tconst invertedValues = [];\n\t\t\t\tconst numValues = values.length;\n\t\t\t\tfor(let i = 0; i < numValues; ++i){\n\t\t\t\t\t\tinvertedValues.push((1 - values[i]) / (numValues - 1));\n\t\t\t\t}\n\t\t\t\treturn invertedValues;\n\t\t}\n\t\tfunction getTraversalOrder(items, orderBy, descending) {\n\t\t\t\titems.forEach(assignIndex);\n\t\t\t\treturn items.slice().sort((itemA, itemB)=>{\n\t\t\t\t\t\treturn descending ? itemB[orderBy] - itemA[orderBy] : itemA[orderBy] - itemB[orderBy];\n\t\t\t\t}).map(getIndex);\n\t\t}\n\t\tfunction assignIndex(item, index) {\n\t\t\t\titem.index = index;\n\t\t}\n\t\tfunction getIndex(item) {\n\t\t\t\treturn item.index;\n\t\t}\n\t\tfunction createSumArray(values, order) {\n\t\t\t\tconst sumArray = [];\n\t\t\t\tsumArray[order[values.length - 1]] = values[order[values.length - 1]];\n\t\t\t\tfor(let i = values.length - 2; i >= 0; --i){\n\t\t\t\t\t\tsumArray[order[i]] = sumArray[order[i + 1]] + values[order[i]];\n\t\t\t\t}\n\t\t\t\treturn sumArray;\n\t\t}\n\t\treturn calculateAll;\n}\nconst CALCULATE_FNS = {};\nCALCULATE_FNS[ORIENTATION_HORIZONTAL] = createCalculator(ORIENTATION_HORIZONTAL);\nCALCULATE_FNS[ORIENTATION_VERTICAL] = createCalculator(ORIENTATION_VERTICAL);\nclass LayoutCalculator {\n\t\tcalculateLayout(elements, options) {\n\t\t\t\tconst calculateFn = CALCULATE_FNS[options.orientation];\n\t\t\t\tif (!calculateFn) {\n\t\t\t\t\t\tthrow new Error(`Unrecognized orientation value: ${options.orientation}`);\n\t\t\t\t} else {\n\t\t\t\t\t\treturn calculateFn(elements, options);\n\t\t\t\t}\n\t\t}\n}\n\nfunction getElement(entity) {\n\t\treturn entity.element;\n}\nfunction isEnabledAndHasEnabledElement(entity) {\n\t\treturn entity.enabled && entity.element && entity.element.enabled;\n}\nclass LayoutGroupComponent extends Component {\n\t\tconstructor(system, entity){\n\t\t\t\tsuper(system, entity), this._orientation = ORIENTATION_HORIZONTAL, this._reverseX = false, this._reverseY = true, this._alignment = new Vec2(0, 1), this._padding = new Vec4(), this._spacing = new Vec2(), this._widthFitting = FITTING_NONE, this._heightFitting = FITTING_NONE, this._wrap = false, this._layoutCalculator = new LayoutCalculator();\n\t\t\t\tthis._listenForReflowEvents(this.entity, 'on');\n\t\t\t\tthis.entity.children.forEach((child)=>{\n\t\t\t\t\t\tthis._listenForReflowEvents(child, 'on');\n\t\t\t\t});\n\t\t\t\tthis.entity.on('childinsert', this._onChildInsert, this);\n\t\t\t\tthis.entity.on('childremove', this._onChildRemove, this);\n\t\t\t\tsystem.app.systems.element.on('add', this._onElementOrLayoutComponentAdd, this);\n\t\t\t\tsystem.app.systems.element.on('beforeremove', this._onElementOrLayoutComponentRemove, this);\n\t\t\t\tsystem.app.systems.layoutchild.on('add', this._onElementOrLayoutComponentAdd, this);\n\t\t\t\tsystem.app.systems.layoutchild.on('beforeremove', this._onElementOrLayoutComponentRemove, this);\n\t\t}\n\t\tset orientation(value) {\n\t\t\t\tif (value !== this._orientation) {\n\t\t\t\t\t\tthis._orientation = value;\n\t\t\t\t\t\tthis._scheduleReflow();\n\t\t\t\t}\n\t\t}\n\t\tget orientation() {\n\t\t\t\treturn this._orientation;\n\t\t}\n\t\tset reverseX(value) {\n\t\t\t\tif (value !== this._reverseX) {\n\t\t\t\t\t\tthis._reverseX = value;\n\t\t\t\t\t\tthis._scheduleReflow();\n\t\t\t\t}\n\t\t}\n\t\tget reverseX() {\n\t\t\t\treturn this._reverseX;\n\t\t}\n\t\tset reverseY(value) {\n\t\t\t\tif (value !== this._reverseY) {\n\t\t\t\t\t\tthis._reverseY = value;\n\t\t\t\t\t\tthis._scheduleReflow();\n\t\t\t\t}\n\t\t}\n\t\tget reverseY() {\n\t\t\t\treturn this._reverseY;\n\t\t}\n\t\tset alignment(value) {\n\t\t\t\tif (!value.equals(this._alignment)) {\n\t\t\t\t\t\tthis._alignment.copy(value);\n\t\t\t\t\t\tthis._scheduleReflow();\n\t\t\t\t}\n\t\t}\n\t\tget alignment() {\n\t\t\t\treturn this._alignment;\n\t\t}\n\t\tset padding(value) {\n\t\t\t\tif (!value.equals(this._padding)) {\n\t\t\t\t\t\tthis._padding.copy(value);\n\t\t\t\t\t\tthis._scheduleReflow();\n\t\t\t\t}\n\t\t}\n\t\tget padding() {\n\t\t\t\treturn this._padding;\n\t\t}\n\t\tset spacing(value) {\n\t\t\t\tif (!value.equals(this._spacing)) {\n\t\t\t\t\t\tthis._spacing.copy(value);\n\t\t\t\t\t\tthis._scheduleReflow();\n\t\t\t\t}\n\t\t}\n\t\tget spacing() {\n\t\t\t\treturn this._spacing;\n\t\t}\n\t\tset widthFitting(value) {\n\t\t\t\tif (value !== this._widthFitting) {\n\t\t\t\t\t\tthis._widthFitting = value;\n\t\t\t\t\t\tthis._scheduleReflow();\n\t\t\t\t}\n\t\t}\n\t\tget widthFitting() {\n\t\t\t\treturn this._widthFitting;\n\t\t}\n\t\tset heightFitting(value) {\n\t\t\t\tif (value !== this._heightFitting) {\n\t\t\t\t\t\tthis._heightFitting = value;\n\t\t\t\t\t\tthis._scheduleReflow();\n\t\t\t\t}\n\t\t}\n\t\tget heightFitting() {\n\t\t\t\treturn this._heightFitting;\n\t\t}\n\t\tset wrap(value) {\n\t\t\t\tif (value !== this._wrap) {\n\t\t\t\t\t\tthis._wrap = value;\n\t\t\t\t\t\tthis._scheduleReflow();\n\t\t\t\t}\n\t\t}\n\t\tget wrap() {\n\t\t\t\treturn this._wrap;\n\t\t}\n\t\t_isSelfOrChild(entity) {\n\t\t\t\treturn entity === this.entity || this.entity.children.indexOf(entity) !== -1;\n\t\t}\n\t\t_listenForReflowEvents(target, onOff) {\n\t\t\t\tif (target.element) {\n\t\t\t\t\t\ttarget.element[onOff]('enableelement', this._scheduleReflow, this);\n\t\t\t\t\t\ttarget.element[onOff]('disableelement', this._scheduleReflow, this);\n\t\t\t\t\t\ttarget.element[onOff]('resize', this._scheduleReflow, this);\n\t\t\t\t\t\ttarget.element[onOff]('set:pivot', this._scheduleReflow, this);\n\t\t\t\t}\n\t\t\t\tif (target.layoutchild) {\n\t\t\t\t\t\ttarget.layoutchild[onOff]('set_enabled', this._scheduleReflow, this);\n\t\t\t\t\t\ttarget.layoutchild[onOff]('resize', this._scheduleReflow, this);\n\t\t\t\t}\n\t\t}\n\t\t_onElementOrLayoutComponentAdd(entity) {\n\t\t\t\tif (this._isSelfOrChild(entity)) {\n\t\t\t\t\t\tthis._listenForReflowEvents(entity, 'on');\n\t\t\t\t\t\tthis._scheduleReflow();\n\t\t\t\t}\n\t\t}\n\t\t_onElementOrLayoutComponentRemove(entity) {\n\t\t\t\tif (this._isSelfOrChild(entity)) {\n\t\t\t\t\t\tthis._listenForReflowEvents(entity, 'off');\n\t\t\t\t\t\tthis._scheduleReflow();\n\t\t\t\t}\n\t\t}\n\t\t_onChildInsert(child) {\n\t\t\t\tthis._listenForReflowEvents(child, 'on');\n\t\t\t\tthis._scheduleReflow();\n\t\t}\n\t\t_onChildRemove(child) {\n\t\t\t\tthis._listenForReflowEvents(child, 'off');\n\t\t\t\tthis._scheduleReflow();\n\t\t}\n\t\t_scheduleReflow() {\n\t\t\t\tif (this.enabled && this.entity && this.entity.enabled && !this._isPerformingReflow) {\n\t\t\t\t\t\tthis.system.scheduleReflow(this);\n\t\t\t\t}\n\t\t}\n\t\treflow() {\n\t\t\t\tconst container = getElement(this.entity);\n\t\t\t\tconst elements = this.entity.children.filter(isEnabledAndHasEnabledElement).map(getElement);\n\t\t\t\tif (!container || elements.length === 0) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst containerWidth = Math.max(container.calculatedWidth, 0);\n\t\t\t\tconst containerHeight = Math.max(container.calculatedHeight, 0);\n\t\t\t\tconst options = {\n\t\t\t\t\t\torientation: this._orientation,\n\t\t\t\t\t\treverseX: this._reverseX,\n\t\t\t\t\t\treverseY: this._reverseY,\n\t\t\t\t\t\talignment: this._alignment,\n\t\t\t\t\t\tpadding: this._padding,\n\t\t\t\t\t\tspacing: this._spacing,\n\t\t\t\t\t\twidthFitting: this._widthFitting,\n\t\t\t\t\t\theightFitting: this._heightFitting,\n\t\t\t\t\t\twrap: this._wrap,\n\t\t\t\t\t\tcontainerSize: new Vec2(containerWidth, containerHeight)\n\t\t\t\t};\n\t\t\t\tthis._isPerformingReflow = true;\n\t\t\t\tconst layoutInfo = this._layoutCalculator.calculateLayout(elements, options);\n\t\t\t\tthis._isPerformingReflow = false;\n\t\t\t\tthis.fire('reflow', layoutInfo);\n\t\t}\n\t\tonEnable() {\n\t\t\t\tthis._scheduleReflow();\n\t\t}\n\t\tonRemove() {\n\t\t\t\tthis.entity.off('childinsert', this._onChildInsert, this);\n\t\t\t\tthis.entity.off('childremove', this._onChildRemove, this);\n\t\t\t\tthis._listenForReflowEvents(this.entity, 'off');\n\t\t\t\tthis.entity.children.forEach((child)=>{\n\t\t\t\t\t\tthis._listenForReflowEvents(child, 'off');\n\t\t\t\t});\n\t\t\t\tthis.system.app.systems.element.off('add', this._onElementOrLayoutComponentAdd, this);\n\t\t\t\tthis.system.app.systems.element.off('beforeremove', this._onElementOrLayoutComponentRemove, this);\n\t\t\t\tthis.system.app.systems.layoutchild.off('add', this._onElementOrLayoutComponentAdd, this);\n\t\t\t\tthis.system.app.systems.layoutchild.off('beforeremove', this._onElementOrLayoutComponentRemove, this);\n\t\t}\n}\n\nclass LayoutGroupComponentData {\n\t\tconstructor(){\n\t\t\t\tthis.enabled = true;\n\t\t}\n}\n\nconst _schema$c = [\n\t\t'enabled'\n];\nconst MAX_ITERATIONS = 100;\nclass LayoutGroupComponentSystem extends ComponentSystem {\n\t\tconstructor(app){\n\t\t\t\tsuper(app);\n\t\t\t\tthis.id = 'layoutgroup';\n\t\t\t\tthis.ComponentType = LayoutGroupComponent;\n\t\t\t\tthis.DataType = LayoutGroupComponentData;\n\t\t\t\tthis.schema = _schema$c;\n\t\t\t\tthis._reflowQueue = [];\n\t\t\t\tthis.on('beforeremove', this._onRemoveComponent, this);\n\t\t\t\tthis.app.systems.on('postUpdate', this._onPostUpdate, this);\n\t\t}\n\t\tinitializeComponentData(component, data, properties) {\n\t\t\t\tif (data.enabled !== undefined) component.enabled = data.enabled;\n\t\t\t\tif (data.orientation !== undefined) component.orientation = data.orientation;\n\t\t\t\tif (data.reverseX !== undefined) component.reverseX = data.reverseX;\n\t\t\t\tif (data.reverseY !== undefined) component.reverseY = data.reverseY;\n\t\t\t\tif (data.alignment !== undefined) {\n\t\t\t\t\t\tcomponent.alignment = Array.isArray(data.alignment) ? new Vec2(data.alignment) : data.alignment;\n\t\t\t\t}\n\t\t\t\tif (data.padding !== undefined) {\n\t\t\t\t\t\tcomponent.padding = Array.isArray(data.padding) ? new Vec4(data.padding) : data.padding;\n\t\t\t\t}\n\t\t\t\tif (data.spacing !== undefined) {\n\t\t\t\t\t\tcomponent.spacing = Array.isArray(data.spacing) ? new Vec2(data.spacing) : data.spacing;\n\t\t\t\t}\n\t\t\t\tif (data.widthFitting !== undefined) component.widthFitting = data.widthFitting;\n\t\t\t\tif (data.heightFitting !== undefined) component.heightFitting = data.heightFitting;\n\t\t\t\tif (data.wrap !== undefined) component.wrap = data.wrap;\n\t\t\t\tsuper.initializeComponentData(component, data, properties);\n\t\t}\n\t\tcloneComponent(entity, clone) {\n\t\t\t\tconst layoutGroup = entity.layoutgroup;\n\t\t\t\treturn this.addComponent(clone, {\n\t\t\t\t\t\tenabled: layoutGroup.enabled,\n\t\t\t\t\t\torientation: layoutGroup.orientation,\n\t\t\t\t\t\treverseX: layoutGroup.reverseX,\n\t\t\t\t\t\treverseY: layoutGroup.reverseY,\n\t\t\t\t\t\talignment: layoutGroup.alignment,\n\t\t\t\t\t\tpadding: layoutGroup.padding,\n\t\t\t\t\t\tspacing: layoutGroup.spacing,\n\t\t\t\t\t\twidthFitting: layoutGroup.widthFitting,\n\t\t\t\t\t\theightFitting: layoutGroup.heightFitting,\n\t\t\t\t\t\twrap: layoutGroup.wrap\n\t\t\t\t});\n\t\t}\n\t\tscheduleReflow(component) {\n\t\t\t\tif (this._reflowQueue.indexOf(component) === -1) {\n\t\t\t\t\t\tthis._reflowQueue.push(component);\n\t\t\t\t}\n\t\t}\n\t\t_onPostUpdate() {\n\t\t\t\tthis._processReflowQueue();\n\t\t}\n\t\t_processReflowQueue() {\n\t\t\t\tif (this._reflowQueue.length === 0) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tlet iterationCount = 0;\n\t\t\t\twhile(this._reflowQueue.length > 0){\n\t\t\t\t\t\tconst queue = this._reflowQueue.slice();\n\t\t\t\t\t\tthis._reflowQueue.length = 0;\n\t\t\t\t\t\tqueue.sort((componentA, componentB)=>{\n\t\t\t\t\t\t\t\treturn componentA.entity.graphDepth - componentB.entity.graphDepth;\n\t\t\t\t\t\t});\n\t\t\t\t\t\tfor(let i = 0; i < queue.length; ++i){\n\t\t\t\t\t\t\t\tqueue[i].reflow();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (++iterationCount >= MAX_ITERATIONS) {\n\t\t\t\t\t\t\t\tconsole.warn('Max reflow iterations limit reached, bailing.');\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_onRemoveComponent(entity, component) {\n\t\t\t\tcomponent.onRemove();\n\t\t}\n\t\tdestroy() {\n\t\t\t\tsuper.destroy();\n\t\t\t\tthis.app.systems.off('postUpdate', this._onPostUpdate, this);\n\t\t}\n}\nComponent._buildAccessors(LayoutGroupComponent.prototype, _schema$c);\n\nclass PrimitivesCache {\n\t\tdestroy(device) {\n\t\t\t\tthis.map.forEach((primData)=>primData.mesh.destroy());\n\t\t}\n\t\tconstructor(){\n\t\t\t\tthis.map = new Map();\n\t\t}\n}\nconst _primitivesCache = new DeviceCache();\nconst getShapePrimitive = (device, type)=>{\n\t\tconst cache = _primitivesCache.get(device, ()=>{\n\t\t\t\treturn new PrimitivesCache();\n\t\t});\n\t\tlet primData = cache.map.get(type);\n\t\tif (!primData) {\n\t\t\t\tlet mesh, area;\n\t\t\t\tswitch(type){\n\t\t\t\t\t\tcase 'box':\n\t\t\t\t\t\t\t\tmesh = Mesh.fromGeometry(device, new BoxGeometry());\n\t\t\t\t\t\t\t\tarea = {\n\t\t\t\t\t\t\t\t\t\tx: 2,\n\t\t\t\t\t\t\t\t\t\ty: 2,\n\t\t\t\t\t\t\t\t\t\tz: 2,\n\t\t\t\t\t\t\t\t\t\tuv: 2.0 / 3\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'capsule':\n\t\t\t\t\t\t\t\tmesh = Mesh.fromGeometry(device, new CapsuleGeometry({\n\t\t\t\t\t\t\t\t\t\tradius: 0.5,\n\t\t\t\t\t\t\t\t\t\theight: 2\n\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\t\tarea = {\n\t\t\t\t\t\t\t\t\t\tx: Math.PI * 2,\n\t\t\t\t\t\t\t\t\t\ty: Math.PI,\n\t\t\t\t\t\t\t\t\t\tz: Math.PI * 2,\n\t\t\t\t\t\t\t\t\t\tuv: 1.0 / 3 + 1.0 / 3 / 3 * 2\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'cone':\n\t\t\t\t\t\t\t\tmesh = Mesh.fromGeometry(device, new ConeGeometry({\n\t\t\t\t\t\t\t\t\t\tbaseRadius: 0.5,\n\t\t\t\t\t\t\t\t\t\tpeakRadius: 0,\n\t\t\t\t\t\t\t\t\t\theight: 1\n\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\t\tarea = {\n\t\t\t\t\t\t\t\t\t\tx: 2.54,\n\t\t\t\t\t\t\t\t\t\ty: 2.54,\n\t\t\t\t\t\t\t\t\t\tz: 2.54,\n\t\t\t\t\t\t\t\t\t\tuv: 1.0 / 3 + 1.0 / 3 / 3\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'cylinder':\n\t\t\t\t\t\t\t\tmesh = Mesh.fromGeometry(device, new CylinderGeometry({\n\t\t\t\t\t\t\t\t\t\tradius: 0.5,\n\t\t\t\t\t\t\t\t\t\theight: 1\n\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\t\tarea = {\n\t\t\t\t\t\t\t\t\t\tx: Math.PI,\n\t\t\t\t\t\t\t\t\t\ty: 0.79 * 2,\n\t\t\t\t\t\t\t\t\t\tz: Math.PI,\n\t\t\t\t\t\t\t\t\t\tuv: 1.0 / 3 + 1.0 / 3 / 3 * 2\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'plane':\n\t\t\t\t\t\t\t\tmesh = Mesh.fromGeometry(device, new PlaneGeometry({\n\t\t\t\t\t\t\t\t\t\thalfExtents: new Vec2(0.5, 0.5),\n\t\t\t\t\t\t\t\t\t\twidthSegments: 1,\n\t\t\t\t\t\t\t\t\t\tlengthSegments: 1\n\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\t\tarea = {\n\t\t\t\t\t\t\t\t\t\tx: 0,\n\t\t\t\t\t\t\t\t\t\ty: 1,\n\t\t\t\t\t\t\t\t\t\tz: 0,\n\t\t\t\t\t\t\t\t\t\tuv: 1\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'sphere':\n\t\t\t\t\t\t\t\tmesh = Mesh.fromGeometry(device, new SphereGeometry({\n\t\t\t\t\t\t\t\t\t\tradius: 0.5\n\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\t\tarea = {\n\t\t\t\t\t\t\t\t\t\tx: Math.PI,\n\t\t\t\t\t\t\t\t\t\ty: Math.PI,\n\t\t\t\t\t\t\t\t\t\tz: Math.PI,\n\t\t\t\t\t\t\t\t\t\tuv: 1\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'torus':\n\t\t\t\t\t\t\t\tmesh = Mesh.fromGeometry(device, new TorusGeometry({\n\t\t\t\t\t\t\t\t\t\ttubeRadius: 0.2,\n\t\t\t\t\t\t\t\t\t\tringRadius: 0.3\n\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\t\tarea = {\n\t\t\t\t\t\t\t\t\t\tx: Math.PI * 0.5 * 0.5 - Math.PI * 0.1 * 0.1,\n\t\t\t\t\t\t\t\t\t\ty: 0.4,\n\t\t\t\t\t\t\t\t\t\tz: 0.4,\n\t\t\t\t\t\t\t\t\t\tuv: 1\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tthrow new Error(`Invalid primitive type: ${type}`);\n\t\t\t\t}\n\t\t\t\tmesh.incRefCount();\n\t\t\t\tprimData = {\n\t\t\t\t\t\tmesh: mesh,\n\t\t\t\t\t\tarea: area\n\t\t\t\t};\n\t\t\t\tcache.map.set(type, primData);\n\t\t}\n\t\treturn primData;\n};\n\nclass ModelComponent extends Component {\n\t\tconstructor(system, entity){\n\t\t\t\tsuper(system, entity), this._type = 'asset', this._asset = null, this._model = null, this._mapping = {}, this._castShadows = true, this._receiveShadows = true, this._materialAsset = null, this._castShadowsLightmap = true, this._lightmapped = false, this._lightmapSizeMultiplier = 1, this.isStatic = false, this._layers = [\n\t\t\t\t\t\tLAYERID_WORLD\n\t\t\t\t], this._batchGroupId = -1, this._customAabb = null, this._area = null, this._materialEvents = null, this._clonedModel = false, this._evtLayersChanged = null, this._evtLayerAdded = null, this._evtLayerRemoved = null;\n\t\t\t\tthis._material = system.defaultMaterial;\n\t\t\t\tentity.on('remove', this.onRemoveChild, this);\n\t\t\t\tentity.on('removehierarchy', this.onRemoveChild, this);\n\t\t\t\tentity.on('insert', this.onInsertChild, this);\n\t\t\t\tentity.on('inserthierarchy', this.onInsertChild, this);\n\t\t}\n\t\tset meshInstances(value) {\n\t\t\t\tif (!this._model) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._model.meshInstances = value;\n\t\t}\n\t\tget meshInstances() {\n\t\t\t\tif (!this._model) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\treturn this._model.meshInstances;\n\t\t}\n\t\tset customAabb(value) {\n\t\t\t\tthis._customAabb = value;\n\t\t\t\tif (this._model) {\n\t\t\t\t\t\tconst mi = this._model.meshInstances;\n\t\t\t\t\t\tif (mi) {\n\t\t\t\t\t\t\t\tfor(let i = 0; i < mi.length; i++){\n\t\t\t\t\t\t\t\t\t\tmi[i].setCustomAabb(this._customAabb);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget customAabb() {\n\t\t\t\treturn this._customAabb;\n\t\t}\n\t\tset type(value) {\n\t\t\t\tif (this._type === value) return;\n\t\t\t\tthis._area = null;\n\t\t\t\tthis._type = value;\n\t\t\t\tif (value === 'asset') {\n\t\t\t\t\t\tif (this._asset !== null) {\n\t\t\t\t\t\t\t\tthis._bindModelAsset(this._asset);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.model = null;\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tconst primData = getShapePrimitive(this.system.app.graphicsDevice, value);\n\t\t\t\t\t\tthis._area = primData.area;\n\t\t\t\t\t\tconst mesh = primData.mesh;\n\t\t\t\t\t\tconst node = new GraphNode();\n\t\t\t\t\t\tconst model = new Model();\n\t\t\t\t\t\tmodel.graph = node;\n\t\t\t\t\t\tmodel.meshInstances = [\n\t\t\t\t\t\t\t\tnew MeshInstance(mesh, this._material, node)\n\t\t\t\t\t\t];\n\t\t\t\t\t\tthis.model = model;\n\t\t\t\t\t\tthis._asset = null;\n\t\t\t\t}\n\t\t}\n\t\tget type() {\n\t\t\t\treturn this._type;\n\t\t}\n\t\tset asset(value) {\n\t\t\t\tconst assets = this.system.app.assets;\n\t\t\t\tlet _id = value;\n\t\t\t\tif (value instanceof Asset) {\n\t\t\t\t\t\t_id = value.id;\n\t\t\t\t}\n\t\t\t\tif (this._asset !== _id) {\n\t\t\t\t\t\tif (this._asset) {\n\t\t\t\t\t\t\t\tassets.off(`add:${this._asset}`, this._onModelAssetAdded, this);\n\t\t\t\t\t\t\t\tconst _prev = assets.get(this._asset);\n\t\t\t\t\t\t\t\tif (_prev) {\n\t\t\t\t\t\t\t\t\t\tthis._unbindModelAsset(_prev);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._asset = _id;\n\t\t\t\t\t\tif (this._asset) {\n\t\t\t\t\t\t\t\tconst asset = assets.get(this._asset);\n\t\t\t\t\t\t\t\tif (!asset) {\n\t\t\t\t\t\t\t\t\t\tthis.model = null;\n\t\t\t\t\t\t\t\t\t\tassets.on(`add:${this._asset}`, this._onModelAssetAdded, this);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis._bindModelAsset(asset);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.model = null;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget asset() {\n\t\t\t\treturn this._asset;\n\t\t}\n\t\tset model(value) {\n\t\t\t\tif (this._model === value) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (value && value._immutable) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this._model) {\n\t\t\t\t\t\tthis._model._immutable = false;\n\t\t\t\t\t\tthis.removeModelFromLayers();\n\t\t\t\t\t\tthis._model.getGraph().destroy();\n\t\t\t\t\t\tdelete this._model._entity;\n\t\t\t\t\t\tif (this._clonedModel) {\n\t\t\t\t\t\t\t\tthis._model.destroy();\n\t\t\t\t\t\t\t\tthis._clonedModel = false;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._model = value;\n\t\t\t\tif (this._model) {\n\t\t\t\t\t\tthis._model._immutable = true;\n\t\t\t\t\t\tconst meshInstances = this._model.meshInstances;\n\t\t\t\t\t\tfor(let i = 0; i < meshInstances.length; i++){\n\t\t\t\t\t\t\t\tmeshInstances[i].castShadow = this._castShadows;\n\t\t\t\t\t\t\t\tmeshInstances[i].receiveShadow = this._receiveShadows;\n\t\t\t\t\t\t\t\tmeshInstances[i].setCustomAabb(this._customAabb);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.lightmapped = this._lightmapped;\n\t\t\t\t\t\tthis.entity.addChild(this._model.graph);\n\t\t\t\t\t\tif (this.enabled && this.entity.enabled) {\n\t\t\t\t\t\t\t\tthis.addModelToLayers();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._model._entity = this.entity;\n\t\t\t\t\t\tif (this.entity.animation) {\n\t\t\t\t\t\t\t\tthis.entity.animation.setModel(this._model);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.entity.anim) {\n\t\t\t\t\t\t\t\tthis.entity.anim.rebind();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.type === 'asset') {\n\t\t\t\t\t\t\t\tthis.mapping = this._mapping;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._unsetMaterialEvents();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget model() {\n\t\t\t\treturn this._model;\n\t\t}\n\t\tset lightmapped(value) {\n\t\t\t\tif (value !== this._lightmapped) {\n\t\t\t\t\t\tthis._lightmapped = value;\n\t\t\t\t\t\tif (this._model) {\n\t\t\t\t\t\t\t\tconst mi = this._model.meshInstances;\n\t\t\t\t\t\t\t\tfor(let i = 0; i < mi.length; i++){\n\t\t\t\t\t\t\t\t\t\tmi[i].setLightmapped(value);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget lightmapped() {\n\t\t\t\treturn this._lightmapped;\n\t\t}\n\t\tset castShadows(value) {\n\t\t\t\tif (this._castShadows === value) return;\n\t\t\t\tconst model = this._model;\n\t\t\t\tif (model) {\n\t\t\t\t\t\tconst layers = this.layers;\n\t\t\t\t\t\tconst scene = this.system.app.scene;\n\t\t\t\t\t\tif (this._castShadows && !value) {\n\t\t\t\t\t\t\t\tfor(let i = 0; i < layers.length; i++){\n\t\t\t\t\t\t\t\t\t\tconst layer = this.system.app.scene.layers.getLayerById(this.layers[i]);\n\t\t\t\t\t\t\t\t\t\tif (!layer) continue;\n\t\t\t\t\t\t\t\t\t\tlayer.removeShadowCasters(model.meshInstances);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst meshInstances = model.meshInstances;\n\t\t\t\t\t\tfor(let i = 0; i < meshInstances.length; i++){\n\t\t\t\t\t\t\t\tmeshInstances[i].castShadow = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!this._castShadows && value) {\n\t\t\t\t\t\t\t\tfor(let i = 0; i < layers.length; i++){\n\t\t\t\t\t\t\t\t\t\tconst layer = scene.layers.getLayerById(layers[i]);\n\t\t\t\t\t\t\t\t\t\tif (!layer) continue;\n\t\t\t\t\t\t\t\t\t\tlayer.addShadowCasters(model.meshInstances);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._castShadows = value;\n\t\t}\n\t\tget castShadows() {\n\t\t\t\treturn this._castShadows;\n\t\t}\n\t\tset receiveShadows(value) {\n\t\t\t\tif (this._receiveShadows === value) return;\n\t\t\t\tthis._receiveShadows = value;\n\t\t\t\tif (this._model) {\n\t\t\t\t\t\tconst meshInstances = this._model.meshInstances;\n\t\t\t\t\t\tfor(let i = 0, len = meshInstances.length; i < len; i++){\n\t\t\t\t\t\t\t\tmeshInstances[i].receiveShadow = value;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget receiveShadows() {\n\t\t\t\treturn this._receiveShadows;\n\t\t}\n\t\tset castShadowsLightmap(value) {\n\t\t\t\tthis._castShadowsLightmap = value;\n\t\t}\n\t\tget castShadowsLightmap() {\n\t\t\t\treturn this._castShadowsLightmap;\n\t\t}\n\t\tset lightmapSizeMultiplier(value) {\n\t\t\t\tthis._lightmapSizeMultiplier = value;\n\t\t}\n\t\tget lightmapSizeMultiplier() {\n\t\t\t\treturn this._lightmapSizeMultiplier;\n\t\t}\n\t\tset layers(value) {\n\t\t\t\tconst layers = this.system.app.scene.layers;\n\t\t\t\tif (this.meshInstances) {\n\t\t\t\t\t\tfor(let i = 0; i < this._layers.length; i++){\n\t\t\t\t\t\t\t\tconst layer = layers.getLayerById(this._layers[i]);\n\t\t\t\t\t\t\t\tif (!layer) continue;\n\t\t\t\t\t\t\t\tlayer.removeMeshInstances(this.meshInstances);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._layers.length = 0;\n\t\t\t\tfor(let i = 0; i < value.length; i++){\n\t\t\t\t\t\tthis._layers[i] = value[i];\n\t\t\t\t}\n\t\t\t\tif (!this.enabled || !this.entity.enabled || !this.meshInstances) return;\n\t\t\t\tfor(let i = 0; i < this._layers.length; i++){\n\t\t\t\t\t\tconst layer = layers.getLayerById(this._layers[i]);\n\t\t\t\t\t\tif (!layer) continue;\n\t\t\t\t\t\tlayer.addMeshInstances(this.meshInstances);\n\t\t\t\t}\n\t\t}\n\t\tget layers() {\n\t\t\t\treturn this._layers;\n\t\t}\n\t\tset batchGroupId(value) {\n\t\t\t\tif (this._batchGroupId === value) return;\n\t\t\t\tif (this.entity.enabled && this._batchGroupId >= 0) {\n\t\t\t\t\t\tthis.system.app.batcher?.remove(BatchGroup.MODEL, this.batchGroupId, this.entity);\n\t\t\t\t}\n\t\t\t\tif (this.entity.enabled && value >= 0) {\n\t\t\t\t\t\tthis.system.app.batcher?.insert(BatchGroup.MODEL, value, this.entity);\n\t\t\t\t}\n\t\t\t\tif (value < 0 && this._batchGroupId >= 0 && this.enabled && this.entity.enabled) {\n\t\t\t\t\t\tthis.addModelToLayers();\n\t\t\t\t}\n\t\t\t\tthis._batchGroupId = value;\n\t\t}\n\t\tget batchGroupId() {\n\t\t\t\treturn this._batchGroupId;\n\t\t}\n\t\tset materialAsset(value) {\n\t\t\t\tlet _id = value;\n\t\t\t\tif (value instanceof Asset) {\n\t\t\t\t\t\t_id = value.id;\n\t\t\t\t}\n\t\t\t\tconst assets = this.system.app.assets;\n\t\t\t\tif (_id !== this._materialAsset) {\n\t\t\t\t\t\tif (this._materialAsset) {\n\t\t\t\t\t\t\t\tassets.off(`add:${this._materialAsset}`, this._onMaterialAssetAdd, this);\n\t\t\t\t\t\t\t\tconst _prev = assets.get(this._materialAsset);\n\t\t\t\t\t\t\t\tif (_prev) {\n\t\t\t\t\t\t\t\t\t\tthis._unbindMaterialAsset(_prev);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._materialAsset = _id;\n\t\t\t\t\t\tif (this._materialAsset) {\n\t\t\t\t\t\t\t\tconst asset = assets.get(this._materialAsset);\n\t\t\t\t\t\t\t\tif (!asset) {\n\t\t\t\t\t\t\t\t\t\tthis._setMaterial(this.system.defaultMaterial);\n\t\t\t\t\t\t\t\t\t\tassets.on(`add:${this._materialAsset}`, this._onMaterialAssetAdd, this);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis._bindMaterialAsset(asset);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._setMaterial(this.system.defaultMaterial);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget materialAsset() {\n\t\t\t\treturn this._materialAsset;\n\t\t}\n\t\tset material(value) {\n\t\t\t\tif (this._material === value) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.materialAsset = null;\n\t\t\t\tthis._setMaterial(value);\n\t\t}\n\t\tget material() {\n\t\t\t\treturn this._material;\n\t\t}\n\t\tset mapping(value) {\n\t\t\t\tif (this._type !== 'asset') {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._unsetMaterialEvents();\n\t\t\t\tif (!value) {\n\t\t\t\t\t\tvalue = {};\n\t\t\t\t}\n\t\t\t\tthis._mapping = value;\n\t\t\t\tif (!this._model) return;\n\t\t\t\tconst meshInstances = this._model.meshInstances;\n\t\t\t\tconst modelAsset = this.asset ? this.system.app.assets.get(this.asset) : null;\n\t\t\t\tconst assetMapping = modelAsset ? modelAsset.data.mapping : null;\n\t\t\t\tlet asset = null;\n\t\t\t\tfor(let i = 0, len = meshInstances.length; i < len; i++){\n\t\t\t\t\t\tif (value[i] !== undefined) {\n\t\t\t\t\t\t\t\tif (value[i]) {\n\t\t\t\t\t\t\t\t\t\tasset = this.system.app.assets.get(value[i]);\n\t\t\t\t\t\t\t\t\t\tthis._loadAndSetMeshInstanceMaterial(asset, meshInstances[i], i);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tmeshInstances[i].material = this.system.defaultMaterial;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (assetMapping) {\n\t\t\t\t\t\t\t\tif (assetMapping[i] && (assetMapping[i].material || assetMapping[i].path)) {\n\t\t\t\t\t\t\t\t\t\tif (assetMapping[i].material !== undefined) {\n\t\t\t\t\t\t\t\t\t\t\t\tasset = this.system.app.assets.get(assetMapping[i].material);\n\t\t\t\t\t\t\t\t\t\t} else if (assetMapping[i].path !== undefined) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst url = this._getMaterialAssetUrl(assetMapping[i].path);\n\t\t\t\t\t\t\t\t\t\t\t\tif (url) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tasset = this.system.app.assets.getByUrl(url);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tthis._loadAndSetMeshInstanceMaterial(asset, meshInstances[i], i);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tmeshInstances[i].material = this.system.defaultMaterial;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget mapping() {\n\t\t\t\treturn this._mapping;\n\t\t}\n\t\taddModelToLayers() {\n\t\t\t\tconst layers = this.system.app.scene.layers;\n\t\t\t\tfor(let i = 0; i < this._layers.length; i++){\n\t\t\t\t\t\tconst layer = layers.getLayerById(this._layers[i]);\n\t\t\t\t\t\tif (layer) {\n\t\t\t\t\t\t\t\tlayer.addMeshInstances(this.meshInstances);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tremoveModelFromLayers() {\n\t\t\t\tconst layers = this.system.app.scene.layers;\n\t\t\t\tfor(let i = 0; i < this._layers.length; i++){\n\t\t\t\t\t\tconst layer = layers.getLayerById(this._layers[i]);\n\t\t\t\t\t\tif (!layer) continue;\n\t\t\t\t\t\tlayer.removeMeshInstances(this.meshInstances);\n\t\t\t\t}\n\t\t}\n\t\tonRemoveChild() {\n\t\t\t\tif (this._model) {\n\t\t\t\t\t\tthis.removeModelFromLayers();\n\t\t\t\t}\n\t\t}\n\t\tonInsertChild() {\n\t\t\t\tif (this._model && this.enabled && this.entity.enabled) {\n\t\t\t\t\t\tthis.addModelToLayers();\n\t\t\t\t}\n\t\t}\n\t\tonRemove() {\n\t\t\t\tthis.asset = null;\n\t\t\t\tthis.model = null;\n\t\t\t\tthis.materialAsset = null;\n\t\t\t\tthis._unsetMaterialEvents();\n\t\t\t\tthis.entity.off('remove', this.onRemoveChild, this);\n\t\t\t\tthis.entity.off('insert', this.onInsertChild, this);\n\t\t}\n\t\tonLayersChanged(oldComp, newComp) {\n\t\t\t\tthis.addModelToLayers();\n\t\t\t\toldComp.off('add', this.onLayerAdded, this);\n\t\t\t\toldComp.off('remove', this.onLayerRemoved, this);\n\t\t\t\tnewComp.on('add', this.onLayerAdded, this);\n\t\t\t\tnewComp.on('remove', this.onLayerRemoved, this);\n\t\t}\n\t\tonLayerAdded(layer) {\n\t\t\t\tconst index = this.layers.indexOf(layer.id);\n\t\t\t\tif (index < 0) return;\n\t\t\t\tlayer.addMeshInstances(this.meshInstances);\n\t\t}\n\t\tonLayerRemoved(layer) {\n\t\t\t\tconst index = this.layers.indexOf(layer.id);\n\t\t\t\tif (index < 0) return;\n\t\t\t\tlayer.removeMeshInstances(this.meshInstances);\n\t\t}\n\t\t_setMaterialEvent(index, event, id, handler) {\n\t\t\t\tconst evt = `${event}:${id}`;\n\t\t\t\tthis.system.app.assets.on(evt, handler, this);\n\t\t\t\tif (!this._materialEvents) {\n\t\t\t\t\t\tthis._materialEvents = [];\n\t\t\t\t}\n\t\t\t\tif (!this._materialEvents[index]) {\n\t\t\t\t\t\tthis._materialEvents[index] = {};\n\t\t\t\t}\n\t\t\t\tthis._materialEvents[index][evt] = {\n\t\t\t\t\t\tid: id,\n\t\t\t\t\t\thandler: handler\n\t\t\t\t};\n\t\t}\n\t\t_unsetMaterialEvents() {\n\t\t\t\tconst assets = this.system.app.assets;\n\t\t\t\tconst events = this._materialEvents;\n\t\t\t\tif (!events) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tfor(let i = 0, len = events.length; i < len; i++){\n\t\t\t\t\t\tif (!events[i]) continue;\n\t\t\t\t\t\tconst evt = events[i];\n\t\t\t\t\t\tfor(const key in evt){\n\t\t\t\t\t\t\t\tassets.off(key, evt[key].handler, this);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._materialEvents = null;\n\t\t}\n\t\t_getAssetByIdOrPath(idOrPath) {\n\t\t\t\tlet asset = null;\n\t\t\t\tconst isPath = isNaN(parseInt(idOrPath, 10));\n\t\t\t\tif (!isPath) {\n\t\t\t\t\t\tasset = this.system.app.assets.get(idOrPath);\n\t\t\t\t} else if (this.asset) {\n\t\t\t\t\t\tconst url = this._getMaterialAssetUrl(idOrPath);\n\t\t\t\t\t\tif (url) {\n\t\t\t\t\t\t\t\tasset = this.system.app.assets.getByUrl(url);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn asset;\n\t\t}\n\t\t_getMaterialAssetUrl(path) {\n\t\t\t\tif (!this.asset) return null;\n\t\t\t\tconst modelAsset = this.system.app.assets.get(this.asset);\n\t\t\t\treturn modelAsset ? modelAsset.getAbsoluteUrl(path) : null;\n\t\t}\n\t\t_loadAndSetMeshInstanceMaterial(materialAsset, meshInstance, index) {\n\t\t\t\tconst assets = this.system.app.assets;\n\t\t\t\tif (!materialAsset) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (materialAsset.resource) {\n\t\t\t\t\t\tmeshInstance.material = materialAsset.resource;\n\t\t\t\t\t\tthis._setMaterialEvent(index, 'remove', materialAsset.id, function() {\n\t\t\t\t\t\t\t\tmeshInstance.material = this.system.defaultMaterial;\n\t\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._setMaterialEvent(index, 'load', materialAsset.id, function(asset) {\n\t\t\t\t\t\t\t\tmeshInstance.material = asset.resource;\n\t\t\t\t\t\t\t\tthis._setMaterialEvent(index, 'remove', materialAsset.id, function() {\n\t\t\t\t\t\t\t\t\t\tmeshInstance.material = this.system.defaultMaterial;\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (this.enabled && this.entity.enabled) {\n\t\t\t\t\t\t\t\tassets.load(materialAsset);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tonEnable() {\n\t\t\t\tconst app = this.system.app;\n\t\t\t\tconst scene = app.scene;\n\t\t\t\tconst layers = scene?.layers;\n\t\t\t\tthis._evtLayersChanged = scene.on('set:layers', this.onLayersChanged, this);\n\t\t\t\tif (layers) {\n\t\t\t\t\t\tthis._evtLayerAdded = layers.on('add', this.onLayerAdded, this);\n\t\t\t\t\t\tthis._evtLayerRemoved = layers.on('remove', this.onLayerRemoved, this);\n\t\t\t\t}\n\t\t\t\tconst isAsset = this._type === 'asset';\n\t\t\t\tlet asset;\n\t\t\t\tif (this._model) {\n\t\t\t\t\t\tthis.addModelToLayers();\n\t\t\t\t} else if (isAsset && this._asset) {\n\t\t\t\t\t\tasset = app.assets.get(this._asset);\n\t\t\t\t\t\tif (asset && asset.resource !== this._model) {\n\t\t\t\t\t\t\t\tthis._bindModelAsset(asset);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this._materialAsset) {\n\t\t\t\t\t\tasset = app.assets.get(this._materialAsset);\n\t\t\t\t\t\tif (asset && asset.resource !== this._material) {\n\t\t\t\t\t\t\t\tthis._bindMaterialAsset(asset);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (isAsset) {\n\t\t\t\t\t\tif (this._mapping) {\n\t\t\t\t\t\t\t\tfor(const index in this._mapping){\n\t\t\t\t\t\t\t\t\t\tif (this._mapping[index]) {\n\t\t\t\t\t\t\t\t\t\t\t\tasset = this._getAssetByIdOrPath(this._mapping[index]);\n\t\t\t\t\t\t\t\t\t\t\t\tif (asset && !asset.resource) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tapp.assets.load(asset);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this._batchGroupId >= 0) {\n\t\t\t\t\t\tapp.batcher?.insert(BatchGroup.MODEL, this.batchGroupId, this.entity);\n\t\t\t\t}\n\t\t}\n\t\tonDisable() {\n\t\t\t\tconst app = this.system.app;\n\t\t\t\tconst scene = app.scene;\n\t\t\t\tconst layers = scene.layers;\n\t\t\t\tthis._evtLayersChanged?.off();\n\t\t\t\tthis._evtLayersChanged = null;\n\t\t\t\tif (layers) {\n\t\t\t\t\t\tthis._evtLayerAdded?.off();\n\t\t\t\t\t\tthis._evtLayerAdded = null;\n\t\t\t\t\t\tthis._evtLayerRemoved?.off();\n\t\t\t\t\t\tthis._evtLayerRemoved = null;\n\t\t\t\t}\n\t\t\t\tif (this._batchGroupId >= 0) {\n\t\t\t\t\t\tapp.batcher?.remove(BatchGroup.MODEL, this.batchGroupId, this.entity);\n\t\t\t\t}\n\t\t\t\tif (this._model) {\n\t\t\t\t\t\tthis.removeModelFromLayers();\n\t\t\t\t}\n\t\t}\n\t\thide() {\n\t\t\t\tif (this._model) {\n\t\t\t\t\t\tconst instances = this._model.meshInstances;\n\t\t\t\t\t\tfor(let i = 0, l = instances.length; i < l; i++){\n\t\t\t\t\t\t\t\tinstances[i].visible = false;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tshow() {\n\t\t\t\tif (this._model) {\n\t\t\t\t\t\tconst instances = this._model.meshInstances;\n\t\t\t\t\t\tfor(let i = 0, l = instances.length; i < l; i++){\n\t\t\t\t\t\t\t\tinstances[i].visible = true;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_bindMaterialAsset(asset) {\n\t\t\t\tasset.on('load', this._onMaterialAssetLoad, this);\n\t\t\t\tasset.on('unload', this._onMaterialAssetUnload, this);\n\t\t\t\tasset.on('remove', this._onMaterialAssetRemove, this);\n\t\t\t\tasset.on('change', this._onMaterialAssetChange, this);\n\t\t\t\tif (asset.resource) {\n\t\t\t\t\t\tthis._onMaterialAssetLoad(asset);\n\t\t\t\t} else {\n\t\t\t\t\t\tif (!this.enabled || !this.entity.enabled) return;\n\t\t\t\t\t\tthis.system.app.assets.load(asset);\n\t\t\t\t}\n\t\t}\n\t\t_unbindMaterialAsset(asset) {\n\t\t\t\tasset.off('load', this._onMaterialAssetLoad, this);\n\t\t\t\tasset.off('unload', this._onMaterialAssetUnload, this);\n\t\t\t\tasset.off('remove', this._onMaterialAssetRemove, this);\n\t\t\t\tasset.off('change', this._onMaterialAssetChange, this);\n\t\t}\n\t\t_onMaterialAssetAdd(asset) {\n\t\t\t\tthis.system.app.assets.off(`add:${asset.id}`, this._onMaterialAssetAdd, this);\n\t\t\t\tif (this._materialAsset === asset.id) {\n\t\t\t\t\t\tthis._bindMaterialAsset(asset);\n\t\t\t\t}\n\t\t}\n\t\t_onMaterialAssetLoad(asset) {\n\t\t\t\tthis._setMaterial(asset.resource);\n\t\t}\n\t\t_onMaterialAssetUnload(asset) {\n\t\t\t\tthis._setMaterial(this.system.defaultMaterial);\n\t\t}\n\t\t_onMaterialAssetRemove(asset) {\n\t\t\t\tthis._onMaterialAssetUnload(asset);\n\t\t}\n\t\t_onMaterialAssetChange(asset) {}\n\t\t_bindModelAsset(asset) {\n\t\t\t\tthis._unbindModelAsset(asset);\n\t\t\t\tasset.on('load', this._onModelAssetLoad, this);\n\t\t\t\tasset.on('unload', this._onModelAssetUnload, this);\n\t\t\t\tasset.on('change', this._onModelAssetChange, this);\n\t\t\t\tasset.on('remove', this._onModelAssetRemove, this);\n\t\t\t\tif (asset.resource) {\n\t\t\t\t\t\tthis._onModelAssetLoad(asset);\n\t\t\t\t} else {\n\t\t\t\t\t\tif (!this.enabled || !this.entity.enabled) return;\n\t\t\t\t\t\tthis.system.app.assets.load(asset);\n\t\t\t\t}\n\t\t}\n\t\t_unbindModelAsset(asset) {\n\t\t\t\tasset.off('load', this._onModelAssetLoad, this);\n\t\t\t\tasset.off('unload', this._onModelAssetUnload, this);\n\t\t\t\tasset.off('change', this._onModelAssetChange, this);\n\t\t\t\tasset.off('remove', this._onModelAssetRemove, this);\n\t\t}\n\t\t_onModelAssetAdded(asset) {\n\t\t\t\tthis.system.app.assets.off(`add:${asset.id}`, this._onModelAssetAdded, this);\n\t\t\t\tif (asset.id === this._asset) {\n\t\t\t\t\t\tthis._bindModelAsset(asset);\n\t\t\t\t}\n\t\t}\n\t\t_onModelAssetLoad(asset) {\n\t\t\t\tthis.model = asset.resource.clone();\n\t\t\t\tthis._clonedModel = true;\n\t\t}\n\t\t_onModelAssetUnload(asset) {\n\t\t\t\tthis.model = null;\n\t\t}\n\t\t_onModelAssetChange(asset, attr, _new, _old) {\n\t\t\t\tif (attr === 'data') {\n\t\t\t\t\t\tthis.mapping = this._mapping;\n\t\t\t\t}\n\t\t}\n\t\t_onModelAssetRemove(asset) {\n\t\t\t\tthis.model = null;\n\t\t}\n\t\t_setMaterial(material) {\n\t\t\t\tif (this._material === material) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._material = material;\n\t\t\t\tconst model = this._model;\n\t\t\t\tif (model && this._type !== 'asset') {\n\t\t\t\t\t\tconst meshInstances = model.meshInstances;\n\t\t\t\t\t\tfor(let i = 0, len = meshInstances.length; i < len; i++){\n\t\t\t\t\t\t\t\tmeshInstances[i].material = material;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n}\n\nclass ModelComponentData {\n\t\tconstructor(){\n\t\t\t\tthis.enabled = true;\n\t\t}\n}\n\nconst _schema$b = [\n\t\t'enabled'\n];\nclass ModelComponentSystem extends ComponentSystem {\n\t\tconstructor(app){\n\t\t\t\tsuper(app);\n\t\t\t\tthis.id = 'model';\n\t\t\t\tthis.ComponentType = ModelComponent;\n\t\t\t\tthis.DataType = ModelComponentData;\n\t\t\t\tthis.schema = _schema$b;\n\t\t\t\tthis.defaultMaterial = getDefaultMaterial(app.graphicsDevice);\n\t\t\t\tthis.on('beforeremove', this.onRemove, this);\n\t\t}\n\t\tinitializeComponentData(component, _data, properties) {\n\t\t\t\tproperties = [\n\t\t\t\t\t\t'material',\n\t\t\t\t\t\t'materialAsset',\n\t\t\t\t\t\t'asset',\n\t\t\t\t\t\t'castShadows',\n\t\t\t\t\t\t'receiveShadows',\n\t\t\t\t\t\t'castShadowsLightmap',\n\t\t\t\t\t\t'lightmapped',\n\t\t\t\t\t\t'lightmapSizeMultiplier',\n\t\t\t\t\t\t'type',\n\t\t\t\t\t\t'mapping',\n\t\t\t\t\t\t'layers',\n\t\t\t\t\t\t'isStatic',\n\t\t\t\t\t\t'batchGroupId'\n\t\t\t\t];\n\t\t\t\tif (_data.batchGroupId === null || _data.batchGroupId === undefined) {\n\t\t\t\t\t\t_data.batchGroupId = -1;\n\t\t\t\t}\n\t\t\t\tif (_data.layers && _data.layers.length) {\n\t\t\t\t\t\t_data.layers = _data.layers.slice(0);\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < properties.length; i++){\n\t\t\t\t\t\tif (_data.hasOwnProperty(properties[i])) {\n\t\t\t\t\t\t\t\tcomponent[properties[i]] = _data[properties[i]];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (_data.aabbCenter && _data.aabbHalfExtents) {\n\t\t\t\t\t\tcomponent.customAabb = new BoundingBox(new Vec3(_data.aabbCenter), new Vec3(_data.aabbHalfExtents));\n\t\t\t\t}\n\t\t\t\tsuper.initializeComponentData(component, _data, [\n\t\t\t\t\t\t'enabled'\n\t\t\t\t]);\n\t\t}\n\t\tcloneComponent(entity, clone) {\n\t\t\t\tconst data = {\n\t\t\t\t\t\ttype: entity.model.type,\n\t\t\t\t\t\tasset: entity.model.asset,\n\t\t\t\t\t\tcastShadows: entity.model.castShadows,\n\t\t\t\t\t\treceiveShadows: entity.model.receiveShadows,\n\t\t\t\t\t\tcastShadowsLightmap: entity.model.castShadowsLightmap,\n\t\t\t\t\t\tlightmapped: entity.model.lightmapped,\n\t\t\t\t\t\tlightmapSizeMultiplier: entity.model.lightmapSizeMultiplier,\n\t\t\t\t\t\tisStatic: entity.model.isStatic,\n\t\t\t\t\t\tenabled: entity.model.enabled,\n\t\t\t\t\t\tlayers: entity.model.layers,\n\t\t\t\t\t\tbatchGroupId: entity.model.batchGroupId,\n\t\t\t\t\t\tmapping: extend({}, entity.model.mapping)\n\t\t\t\t};\n\t\t\t\tlet materialAsset = entity.model.materialAsset;\n\t\t\t\tif (!(materialAsset instanceof Asset) && materialAsset != null) {\n\t\t\t\t\t\tmaterialAsset = this.app.assets.get(materialAsset);\n\t\t\t\t}\n\t\t\t\tconst material = entity.model.material;\n\t\t\t\tif (!material || material === this.defaultMaterial || !materialAsset || material === materialAsset.resource) {\n\t\t\t\t\t\tdata.materialAsset = materialAsset;\n\t\t\t\t}\n\t\t\t\tconst component = this.addComponent(clone, data);\n\t\t\t\tif (entity.model.model && entity.model.type === 'asset' && !entity.model.asset) {\n\t\t\t\t\t\tcomponent.model = entity.model.model.clone();\n\t\t\t\t\t\tcomponent._clonedModel = true;\n\t\t\t\t}\n\t\t\t\tif (!data.materialAsset) {\n\t\t\t\t\t\tcomponent.material = material;\n\t\t\t\t}\n\t\t\t\tif (entity.model.model) {\n\t\t\t\t\t\tconst meshInstances = entity.model.model.meshInstances;\n\t\t\t\t\t\tconst meshInstancesClone = component.model.meshInstances;\n\t\t\t\t\t\tfor(let i = 0; i < meshInstances.length; i++){\n\t\t\t\t\t\t\t\tmeshInstancesClone[i].mask = meshInstances[i].mask;\n\t\t\t\t\t\t\t\tmeshInstancesClone[i].material = meshInstances[i].material;\n\t\t\t\t\t\t\t\tmeshInstancesClone[i].layer = meshInstances[i].layer;\n\t\t\t\t\t\t\t\tmeshInstancesClone[i].receiveShadow = meshInstances[i].receiveShadow;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (entity.model.customAabb) {\n\t\t\t\t\t\tcomponent.customAabb = entity.model.customAabb.clone();\n\t\t\t\t}\n\t\t\t\treturn component;\n\t\t}\n\t\tonRemove(entity, component) {\n\t\t\t\tcomponent.onRemove();\n\t\t}\n}\nComponent._buildAccessors(ModelComponent.prototype, _schema$b);\n\nconst SIMPLE_PROPERTIES = [\n\t\t'emitterExtents',\n\t\t'emitterRadius',\n\t\t'emitterExtentsInner',\n\t\t'emitterRadiusInner',\n\t\t'loop',\n\t\t'initialVelocity',\n\t\t'animSpeed',\n\t\t'normalMap',\n\t\t'particleNormal'\n];\nconst COMPLEX_PROPERTIES = [\n\t\t'numParticles',\n\t\t'lifetime',\n\t\t'rate',\n\t\t'rate2',\n\t\t'startAngle',\n\t\t'startAngle2',\n\t\t'lighting',\n\t\t'halfLambert',\n\t\t'intensity',\n\t\t'wrap',\n\t\t'wrapBounds',\n\t\t'depthWrite',\n\t\t'noFog',\n\t\t'sort',\n\t\t'stretch',\n\t\t'alignToMotion',\n\t\t'preWarm',\n\t\t'emitterShape',\n\t\t'animTilesX',\n\t\t'animTilesY',\n\t\t'animStartFrame',\n\t\t'animNumFrames',\n\t\t'animNumAnimations',\n\t\t'animIndex',\n\t\t'randomizeAnimIndex',\n\t\t'animLoop',\n\t\t'colorMap',\n\t\t'localSpace',\n\t\t'screenSpace',\n\t\t'orientation'\n];\nconst GRAPH_PROPERTIES = [\n\t\t'scaleGraph',\n\t\t'scaleGraph2',\n\t\t'colorGraph',\n\t\t'colorGraph2',\n\t\t'alphaGraph',\n\t\t'alphaGraph2',\n\t\t'velocityGraph',\n\t\t'velocityGraph2',\n\t\t'localVelocityGraph',\n\t\t'localVelocityGraph2',\n\t\t'rotationSpeedGraph',\n\t\t'rotationSpeedGraph2',\n\t\t'radialSpeedGraph',\n\t\t'radialSpeedGraph2'\n];\nconst ASSET_PROPERTIES = [\n\t\t'colorMapAsset',\n\t\t'normalMapAsset',\n\t\t'meshAsset',\n\t\t'renderAsset'\n];\nlet depthLayer;\nclass ParticleSystemComponent extends Component {\n\t\tconstructor(system, entity){\n\t\t\t\tsuper(system, entity), this._requestedDepth = false, this._drawOrder = 0, this._evtLayersChanged = null, this._evtLayerAdded = null, this._evtLayerRemoved = null, this._evtSetMeshes = null;\n\t\t\t\tthis.on('set_colorMapAsset', this.onSetColorMapAsset, this);\n\t\t\t\tthis.on('set_normalMapAsset', this.onSetNormalMapAsset, this);\n\t\t\t\tthis.on('set_meshAsset', this.onSetMeshAsset, this);\n\t\t\t\tthis.on('set_mesh', this.onSetMesh, this);\n\t\t\t\tthis.on('set_renderAsset', this.onSetRenderAsset, this);\n\t\t\t\tthis.on('set_loop', this.onSetLoop, this);\n\t\t\t\tthis.on('set_blendType', this.onSetBlendType, this);\n\t\t\t\tthis.on('set_depthSoftening', this.onSetDepthSoftening, this);\n\t\t\t\tthis.on('set_layers', this.onSetLayers, this);\n\t\t\t\tSIMPLE_PROPERTIES.forEach((prop)=>{\n\t\t\t\t\t\tthis.on(`set_${prop}`, this.onSetSimpleProperty, this);\n\t\t\t\t});\n\t\t\t\tCOMPLEX_PROPERTIES.forEach((prop)=>{\n\t\t\t\t\t\tthis.on(`set_${prop}`, this.onSetComplexProperty, this);\n\t\t\t\t});\n\t\t\t\tGRAPH_PROPERTIES.forEach((prop)=>{\n\t\t\t\t\t\tthis.on(`set_${prop}`, this.onSetGraphProperty, this);\n\t\t\t\t});\n\t\t}\n\t\tget data() {\n\t\t\t\tconst record = this.system.store[this.entity.getGuid()];\n\t\t\t\treturn record ? record.data : null;\n\t\t}\n\t\tset enabled(arg) {\n\t\t\t\tthis._setValue('enabled', arg);\n\t\t}\n\t\tget enabled() {\n\t\t\t\treturn this.data.enabled;\n\t\t}\n\t\tset autoPlay(arg) {\n\t\t\t\tthis._setValue('autoPlay', arg);\n\t\t}\n\t\tget autoPlay() {\n\t\t\t\treturn this.data.autoPlay;\n\t\t}\n\t\tset numParticles(arg) {\n\t\t\t\tthis._setValue('numParticles', arg);\n\t\t}\n\t\tget numParticles() {\n\t\t\t\treturn this.data.numParticles;\n\t\t}\n\t\tset lifetime(arg) {\n\t\t\t\tthis._setValue('lifetime', arg);\n\t\t}\n\t\tget lifetime() {\n\t\t\t\treturn this.data.lifetime;\n\t\t}\n\t\tset rate(arg) {\n\t\t\t\tthis._setValue('rate', arg);\n\t\t}\n\t\tget rate() {\n\t\t\t\treturn this.data.rate;\n\t\t}\n\t\tset rate2(arg) {\n\t\t\t\tthis._setValue('rate2', arg);\n\t\t}\n\t\tget rate2() {\n\t\t\t\treturn this.data.rate2;\n\t\t}\n\t\tset startAngle(arg) {\n\t\t\t\tthis._setValue('startAngle', arg);\n\t\t}\n\t\tget startAngle() {\n\t\t\t\treturn this.data.startAngle;\n\t\t}\n\t\tset startAngle2(arg) {\n\t\t\t\tthis._setValue('startAngle2', arg);\n\t\t}\n\t\tget startAngle2() {\n\t\t\t\treturn this.data.startAngle2;\n\t\t}\n\t\tset loop(arg) {\n\t\t\t\tthis._setValue('loop', arg);\n\t\t}\n\t\tget loop() {\n\t\t\t\treturn this.data.loop;\n\t\t}\n\t\tset preWarm(arg) {\n\t\t\t\tthis._setValue('preWarm', arg);\n\t\t}\n\t\tget preWarm() {\n\t\t\t\treturn this.data.preWarm;\n\t\t}\n\t\tset lighting(arg) {\n\t\t\t\tthis._setValue('lighting', arg);\n\t\t}\n\t\tget lighting() {\n\t\t\t\treturn this.data.lighting;\n\t\t}\n\t\tset halfLambert(arg) {\n\t\t\t\tthis._setValue('halfLambert', arg);\n\t\t}\n\t\tget halfLambert() {\n\t\t\t\treturn this.data.halfLambert;\n\t\t}\n\t\tset intensity(arg) {\n\t\t\t\tthis._setValue('intensity', arg);\n\t\t}\n\t\tget intensity() {\n\t\t\t\treturn this.data.intensity;\n\t\t}\n\t\tset depthWrite(arg) {\n\t\t\t\tthis._setValue('depthWrite', arg);\n\t\t}\n\t\tget depthWrite() {\n\t\t\t\treturn this.data.depthWrite;\n\t\t}\n\t\tset noFog(arg) {\n\t\t\t\tthis._setValue('noFog', arg);\n\t\t}\n\t\tget noFog() {\n\t\t\t\treturn this.data.noFog;\n\t\t}\n\t\tset depthSoftening(arg) {\n\t\t\t\tthis._setValue('depthSoftening', arg);\n\t\t}\n\t\tget depthSoftening() {\n\t\t\t\treturn this.data.depthSoftening;\n\t\t}\n\t\tset sort(arg) {\n\t\t\t\tthis._setValue('sort', arg);\n\t\t}\n\t\tget sort() {\n\t\t\t\treturn this.data.sort;\n\t\t}\n\t\tset blendType(arg) {\n\t\t\t\tthis._setValue('blendType', arg);\n\t\t}\n\t\tget blendType() {\n\t\t\t\treturn this.data.blendType;\n\t\t}\n\t\tset stretch(arg) {\n\t\t\t\tthis._setValue('stretch', arg);\n\t\t}\n\t\tget stretch() {\n\t\t\t\treturn this.data.stretch;\n\t\t}\n\t\tset alignToMotion(arg) {\n\t\t\t\tthis._setValue('alignToMotion', arg);\n\t\t}\n\t\tget alignToMotion() {\n\t\t\t\treturn this.data.alignToMotion;\n\t\t}\n\t\tset emitterShape(arg) {\n\t\t\t\tthis._setValue('emitterShape', arg);\n\t\t}\n\t\tget emitterShape() {\n\t\t\t\treturn this.data.emitterShape;\n\t\t}\n\t\tset emitterExtents(arg) {\n\t\t\t\tthis._setValue('emitterExtents', arg);\n\t\t}\n\t\tget emitterExtents() {\n\t\t\t\treturn this.data.emitterExtents;\n\t\t}\n\t\tset emitterExtentsInner(arg) {\n\t\t\t\tthis._setValue('emitterExtentsInner', arg);\n\t\t}\n\t\tget emitterExtentsInner() {\n\t\t\t\treturn this.data.emitterExtentsInner;\n\t\t}\n\t\tset emitterRadius(arg) {\n\t\t\t\tthis._setValue('emitterRadius', arg);\n\t\t}\n\t\tget emitterRadius() {\n\t\t\t\treturn this.data.emitterRadius;\n\t\t}\n\t\tset emitterRadiusInner(arg) {\n\t\t\t\tthis._setValue('emitterRadiusInner', arg);\n\t\t}\n\t\tget emitterRadiusInner() {\n\t\t\t\treturn this.data.emitterRadiusInner;\n\t\t}\n\t\tset initialVelocity(arg) {\n\t\t\t\tthis._setValue('initialVelocity', arg);\n\t\t}\n\t\tget initialVelocity() {\n\t\t\t\treturn this.data.initialVelocity;\n\t\t}\n\t\tset wrap(arg) {\n\t\t\t\tthis._setValue('wrap', arg);\n\t\t}\n\t\tget wrap() {\n\t\t\t\treturn this.data.wrap;\n\t\t}\n\t\tset wrapBounds(arg) {\n\t\t\t\tthis._setValue('wrapBounds', arg);\n\t\t}\n\t\tget wrapBounds() {\n\t\t\t\treturn this.data.wrapBounds;\n\t\t}\n\t\tset localSpace(arg) {\n\t\t\t\tthis._setValue('localSpace', arg);\n\t\t}\n\t\tget localSpace() {\n\t\t\t\treturn this.data.localSpace;\n\t\t}\n\t\tset screenSpace(arg) {\n\t\t\t\tthis._setValue('screenSpace', arg);\n\t\t}\n\t\tget screenSpace() {\n\t\t\t\treturn this.data.screenSpace;\n\t\t}\n\t\tset colorMapAsset(arg) {\n\t\t\t\tthis._setValue('colorMapAsset', arg);\n\t\t}\n\t\tget colorMapAsset() {\n\t\t\t\treturn this.data.colorMapAsset;\n\t\t}\n\t\tset normalMapAsset(arg) {\n\t\t\t\tthis._setValue('normalMapAsset', arg);\n\t\t}\n\t\tget normalMapAsset() {\n\t\t\t\treturn this.data.normalMapAsset;\n\t\t}\n\t\tset mesh(arg) {\n\t\t\t\tthis._setValue('mesh', arg);\n\t\t}\n\t\tget mesh() {\n\t\t\t\treturn this.data.mesh;\n\t\t}\n\t\tset meshAsset(arg) {\n\t\t\t\tthis._setValue('meshAsset', arg);\n\t\t}\n\t\tget meshAsset() {\n\t\t\t\treturn this.data.meshAsset;\n\t\t}\n\t\tset renderAsset(arg) {\n\t\t\t\tthis._setValue('renderAsset', arg);\n\t\t}\n\t\tget renderAsset() {\n\t\t\t\treturn this.data.renderAsset;\n\t\t}\n\t\tset orientation(arg) {\n\t\t\t\tthis._setValue('orientation', arg);\n\t\t}\n\t\tget orientation() {\n\t\t\t\treturn this.data.orientation;\n\t\t}\n\t\tset particleNormal(arg) {\n\t\t\t\tthis._setValue('particleNormal', arg);\n\t\t}\n\t\tget particleNormal() {\n\t\t\t\treturn this.data.particleNormal;\n\t\t}\n\t\tset localVelocityGraph(arg) {\n\t\t\t\tthis._setValue('localVelocityGraph', arg);\n\t\t}\n\t\tget localVelocityGraph() {\n\t\t\t\treturn this.data.localVelocityGraph;\n\t\t}\n\t\tset localVelocityGraph2(arg) {\n\t\t\t\tthis._setValue('localVelocityGraph2', arg);\n\t\t}\n\t\tget localVelocityGraph2() {\n\t\t\t\treturn this.data.localVelocityGraph2;\n\t\t}\n\t\tset velocityGraph(arg) {\n\t\t\t\tthis._setValue('velocityGraph', arg);\n\t\t}\n\t\tget velocityGraph() {\n\t\t\t\treturn this.data.velocityGraph;\n\t\t}\n\t\tset velocityGraph2(arg) {\n\t\t\t\tthis._setValue('velocityGraph2', arg);\n\t\t}\n\t\tget velocityGraph2() {\n\t\t\t\treturn this.data.velocityGraph2;\n\t\t}\n\t\tset rotationSpeedGraph(arg) {\n\t\t\t\tthis._setValue('rotationSpeedGraph', arg);\n\t\t}\n\t\tget rotationSpeedGraph() {\n\t\t\t\treturn this.data.rotationSpeedGraph;\n\t\t}\n\t\tset rotationSpeedGraph2(arg) {\n\t\t\t\tthis._setValue('rotationSpeedGraph2', arg);\n\t\t}\n\t\tget rotationSpeedGraph2() {\n\t\t\t\treturn this.data.rotationSpeedGraph2;\n\t\t}\n\t\tset radialSpeedGraph(arg) {\n\t\t\t\tthis._setValue('radialSpeedGraph', arg);\n\t\t}\n\t\tget radialSpeedGraph() {\n\t\t\t\treturn this.data.radialSpeedGraph;\n\t\t}\n\t\tset radialSpeedGraph2(arg) {\n\t\t\t\tthis._setValue('radialSpeedGraph2', arg);\n\t\t}\n\t\tget radialSpeedGraph2() {\n\t\t\t\treturn this.data.radialSpeedGraph2;\n\t\t}\n\t\tset scaleGraph(arg) {\n\t\t\t\tthis._setValue('scaleGraph', arg);\n\t\t}\n\t\tget scaleGraph() {\n\t\t\t\treturn this.data.scaleGraph;\n\t\t}\n\t\tset scaleGraph2(arg) {\n\t\t\t\tthis._setValue('scaleGraph2', arg);\n\t\t}\n\t\tget scaleGraph2() {\n\t\t\t\treturn this.data.scaleGraph2;\n\t\t}\n\t\tset colorGraph(arg) {\n\t\t\t\tthis._setValue('colorGraph', arg);\n\t\t}\n\t\tget colorGraph() {\n\t\t\t\treturn this.data.colorGraph;\n\t\t}\n\t\tset colorGraph2(arg) {\n\t\t\t\tthis._setValue('colorGraph2', arg);\n\t\t}\n\t\tget colorGraph2() {\n\t\t\t\treturn this.data.colorGraph2;\n\t\t}\n\t\tset alphaGraph(arg) {\n\t\t\t\tthis._setValue('alphaGraph', arg);\n\t\t}\n\t\tget alphaGraph() {\n\t\t\t\treturn this.data.alphaGraph;\n\t\t}\n\t\tset alphaGraph2(arg) {\n\t\t\t\tthis._setValue('alphaGraph2', arg);\n\t\t}\n\t\tget alphaGraph2() {\n\t\t\t\treturn this.data.alphaGraph2;\n\t\t}\n\t\tset colorMap(arg) {\n\t\t\t\tthis._setValue('colorMap', arg);\n\t\t}\n\t\tget colorMap() {\n\t\t\t\treturn this.data.colorMap;\n\t\t}\n\t\tset normalMap(arg) {\n\t\t\t\tthis._setValue('normalMap', arg);\n\t\t}\n\t\tget normalMap() {\n\t\t\t\treturn this.data.normalMap;\n\t\t}\n\t\tset animTilesX(arg) {\n\t\t\t\tthis._setValue('animTilesX', arg);\n\t\t}\n\t\tget animTilesX() {\n\t\t\t\treturn this.data.animTilesX;\n\t\t}\n\t\tset animTilesY(arg) {\n\t\t\t\tthis._setValue('animTilesY', arg);\n\t\t}\n\t\tget animTilesY() {\n\t\t\t\treturn this.data.animTilesY;\n\t\t}\n\t\tset animStartFrame(arg) {\n\t\t\t\tthis._setValue('animStartFrame', arg);\n\t\t}\n\t\tget animStartFrame() {\n\t\t\t\treturn this.data.animStartFrame;\n\t\t}\n\t\tset animNumFrames(arg) {\n\t\t\t\tthis._setValue('animNumFrames', arg);\n\t\t}\n\t\tget animNumFrames() {\n\t\t\t\treturn this.data.animNumFrames;\n\t\t}\n\t\tset animNumAnimations(arg) {\n\t\t\t\tthis._setValue('animNumAnimations', arg);\n\t\t}\n\t\tget animNumAnimations() {\n\t\t\t\treturn this.data.animNumAnimations;\n\t\t}\n\t\tset animIndex(arg) {\n\t\t\t\tthis._setValue('animIndex', arg);\n\t\t}\n\t\tget animIndex() {\n\t\t\t\treturn this.data.animIndex;\n\t\t}\n\t\tset randomizeAnimIndex(arg) {\n\t\t\t\tthis._setValue('randomizeAnimIndex', arg);\n\t\t}\n\t\tget randomizeAnimIndex() {\n\t\t\t\treturn this.data.randomizeAnimIndex;\n\t\t}\n\t\tset animSpeed(arg) {\n\t\t\t\tthis._setValue('animSpeed', arg);\n\t\t}\n\t\tget animSpeed() {\n\t\t\t\treturn this.data.animSpeed;\n\t\t}\n\t\tset animLoop(arg) {\n\t\t\t\tthis._setValue('animLoop', arg);\n\t\t}\n\t\tget animLoop() {\n\t\t\t\treturn this.data.animLoop;\n\t\t}\n\t\tset layers(arg) {\n\t\t\t\tthis._setValue('layers', arg);\n\t\t}\n\t\tget layers() {\n\t\t\t\treturn this.data.layers;\n\t\t}\n\t\tset drawOrder(drawOrder) {\n\t\t\t\tthis._drawOrder = drawOrder;\n\t\t\t\tif (this.emitter) {\n\t\t\t\t\t\tthis.emitter.drawOrder = drawOrder;\n\t\t\t\t}\n\t\t}\n\t\tget drawOrder() {\n\t\t\t\treturn this._drawOrder;\n\t\t}\n\t\t_setValue(name, value) {\n\t\t\t\tconst data = this.data;\n\t\t\t\tconst oldValue = data[name];\n\t\t\t\tdata[name] = value;\n\t\t\t\tthis.fire('set', name, oldValue, value);\n\t\t}\n\t\taddMeshInstanceToLayers() {\n\t\t\t\tif (!this.emitter) return;\n\t\t\t\tfor(let i = 0; i < this.layers.length; i++){\n\t\t\t\t\t\tconst layer = this.system.app.scene.layers.getLayerById(this.layers[i]);\n\t\t\t\t\t\tif (!layer) continue;\n\t\t\t\t\t\tlayer.addMeshInstances([\n\t\t\t\t\t\t\t\tthis.emitter.meshInstance\n\t\t\t\t\t\t]);\n\t\t\t\t\t\tthis.emitter._layer = layer;\n\t\t\t\t}\n\t\t}\n\t\tremoveMeshInstanceFromLayers() {\n\t\t\t\tif (!this.emitter) return;\n\t\t\t\tfor(let i = 0; i < this.layers.length; i++){\n\t\t\t\t\t\tconst layer = this.system.app.scene.layers.getLayerById(this.layers[i]);\n\t\t\t\t\t\tif (!layer) continue;\n\t\t\t\t\t\tlayer.removeMeshInstances([\n\t\t\t\t\t\t\t\tthis.emitter.meshInstance\n\t\t\t\t\t\t]);\n\t\t\t\t}\n\t\t}\n\t\tonSetLayers(name, oldValue, newValue) {\n\t\t\t\tif (!this.emitter) return;\n\t\t\t\tfor(let i = 0; i < oldValue.length; i++){\n\t\t\t\t\t\tconst layer = this.system.app.scene.layers.getLayerById(oldValue[i]);\n\t\t\t\t\t\tif (!layer) continue;\n\t\t\t\t\t\tlayer.removeMeshInstances([\n\t\t\t\t\t\t\t\tthis.emitter.meshInstance\n\t\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t\tif (!this.enabled || !this.entity.enabled) return;\n\t\t\t\tfor(let i = 0; i < newValue.length; i++){\n\t\t\t\t\t\tconst layer = this.system.app.scene.layers.getLayerById(newValue[i]);\n\t\t\t\t\t\tif (!layer) continue;\n\t\t\t\t\t\tlayer.addMeshInstances([\n\t\t\t\t\t\t\t\tthis.emitter.meshInstance\n\t\t\t\t\t\t]);\n\t\t\t\t}\n\t\t}\n\t\tonLayersChanged(oldComp, newComp) {\n\t\t\t\tthis.addMeshInstanceToLayers();\n\t\t\t\toldComp.off('add', this.onLayerAdded, this);\n\t\t\t\toldComp.off('remove', this.onLayerRemoved, this);\n\t\t\t\tnewComp.on('add', this.onLayerAdded, this);\n\t\t\t\tnewComp.on('remove', this.onLayerRemoved, this);\n\t\t}\n\t\tonLayerAdded(layer) {\n\t\t\t\tif (!this.emitter) return;\n\t\t\t\tconst index = this.layers.indexOf(layer.id);\n\t\t\t\tif (index < 0) return;\n\t\t\t\tlayer.addMeshInstances([\n\t\t\t\t\t\tthis.emitter.meshInstance\n\t\t\t\t]);\n\t\t}\n\t\tonLayerRemoved(layer) {\n\t\t\t\tif (!this.emitter) return;\n\t\t\t\tconst index = this.layers.indexOf(layer.id);\n\t\t\t\tif (index < 0) return;\n\t\t\t\tlayer.removeMeshInstances([\n\t\t\t\t\t\tthis.emitter.meshInstance\n\t\t\t\t]);\n\t\t}\n\t\t_bindColorMapAsset(asset) {\n\t\t\t\tasset.on('load', this._onColorMapAssetLoad, this);\n\t\t\t\tasset.on('unload', this._onColorMapAssetUnload, this);\n\t\t\t\tasset.on('remove', this._onColorMapAssetRemove, this);\n\t\t\t\tasset.on('change', this._onColorMapAssetChange, this);\n\t\t\t\tif (asset.resource) {\n\t\t\t\t\t\tthis._onColorMapAssetLoad(asset);\n\t\t\t\t} else {\n\t\t\t\t\t\tif (!this.enabled || !this.entity.enabled) return;\n\t\t\t\t\t\tthis.system.app.assets.load(asset);\n\t\t\t\t}\n\t\t}\n\t\t_unbindColorMapAsset(asset) {\n\t\t\t\tasset.off('load', this._onColorMapAssetLoad, this);\n\t\t\t\tasset.off('unload', this._onColorMapAssetUnload, this);\n\t\t\t\tasset.off('remove', this._onColorMapAssetRemove, this);\n\t\t\t\tasset.off('change', this._onColorMapAssetChange, this);\n\t\t}\n\t\t_onColorMapAssetLoad(asset) {\n\t\t\t\tthis.colorMap = asset.resource;\n\t\t}\n\t\t_onColorMapAssetUnload(asset) {\n\t\t\t\tthis.colorMap = null;\n\t\t}\n\t\t_onColorMapAssetRemove(asset) {\n\t\t\t\tthis._onColorMapAssetUnload(asset);\n\t\t}\n\t\t_onColorMapAssetChange(asset) {}\n\t\tonSetColorMapAsset(name, oldValue, newValue) {\n\t\t\t\tconst assets = this.system.app.assets;\n\t\t\t\tif (oldValue) {\n\t\t\t\t\t\tconst asset = assets.get(oldValue);\n\t\t\t\t\t\tif (asset) {\n\t\t\t\t\t\t\t\tthis._unbindColorMapAsset(asset);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (newValue) {\n\t\t\t\t\t\tif (newValue instanceof Asset) {\n\t\t\t\t\t\t\t\tthis.data.colorMapAsset = newValue.id;\n\t\t\t\t\t\t\t\tnewValue = newValue.id;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst asset = assets.get(newValue);\n\t\t\t\t\t\tif (asset) {\n\t\t\t\t\t\t\t\tthis._bindColorMapAsset(asset);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tassets.once(`add:${newValue}`, (asset)=>{\n\t\t\t\t\t\t\t\t\t\tthis._bindColorMapAsset(asset);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.colorMap = null;\n\t\t\t\t}\n\t\t}\n\t\t_bindNormalMapAsset(asset) {\n\t\t\t\tasset.on('load', this._onNormalMapAssetLoad, this);\n\t\t\t\tasset.on('unload', this._onNormalMapAssetUnload, this);\n\t\t\t\tasset.on('remove', this._onNormalMapAssetRemove, this);\n\t\t\t\tasset.on('change', this._onNormalMapAssetChange, this);\n\t\t\t\tif (asset.resource) {\n\t\t\t\t\t\tthis._onNormalMapAssetLoad(asset);\n\t\t\t\t} else {\n\t\t\t\t\t\tif (!this.enabled || !this.entity.enabled) return;\n\t\t\t\t\t\tthis.system.app.assets.load(asset);\n\t\t\t\t}\n\t\t}\n\t\t_unbindNormalMapAsset(asset) {\n\t\t\t\tasset.off('load', this._onNormalMapAssetLoad, this);\n\t\t\t\tasset.off('unload', this._onNormalMapAssetUnload, this);\n\t\t\t\tasset.off('remove', this._onNormalMapAssetRemove, this);\n\t\t\t\tasset.off('change', this._onNormalMapAssetChange, this);\n\t\t}\n\t\t_onNormalMapAssetLoad(asset) {\n\t\t\t\tthis.normalMap = asset.resource;\n\t\t}\n\t\t_onNormalMapAssetUnload(asset) {\n\t\t\t\tthis.normalMap = null;\n\t\t}\n\t\t_onNormalMapAssetRemove(asset) {\n\t\t\t\tthis._onNormalMapAssetUnload(asset);\n\t\t}\n\t\t_onNormalMapAssetChange(asset) {}\n\t\tonSetNormalMapAsset(name, oldValue, newValue) {\n\t\t\t\tconst assets = this.system.app.assets;\n\t\t\t\tif (oldValue) {\n\t\t\t\t\t\tconst asset = assets.get(oldValue);\n\t\t\t\t\t\tif (asset) {\n\t\t\t\t\t\t\t\tthis._unbindNormalMapAsset(asset);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (newValue) {\n\t\t\t\t\t\tif (newValue instanceof Asset) {\n\t\t\t\t\t\t\t\tthis.data.normalMapAsset = newValue.id;\n\t\t\t\t\t\t\t\tnewValue = newValue.id;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst asset = assets.get(newValue);\n\t\t\t\t\t\tif (asset) {\n\t\t\t\t\t\t\t\tthis._bindNormalMapAsset(asset);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tassets.once(`add:${newValue}`, (asset)=>{\n\t\t\t\t\t\t\t\t\t\tthis._bindNormalMapAsset(asset);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.normalMap = null;\n\t\t\t\t}\n\t\t}\n\t\t_bindMeshAsset(asset) {\n\t\t\t\tasset.on('load', this._onMeshAssetLoad, this);\n\t\t\t\tasset.on('unload', this._onMeshAssetUnload, this);\n\t\t\t\tasset.on('remove', this._onMeshAssetRemove, this);\n\t\t\t\tasset.on('change', this._onMeshAssetChange, this);\n\t\t\t\tif (asset.resource) {\n\t\t\t\t\t\tthis._onMeshAssetLoad(asset);\n\t\t\t\t} else {\n\t\t\t\t\t\tif (!this.enabled || !this.entity.enabled) return;\n\t\t\t\t\t\tthis.system.app.assets.load(asset);\n\t\t\t\t}\n\t\t}\n\t\t_unbindMeshAsset(asset) {\n\t\t\t\tasset.off('load', this._onMeshAssetLoad, this);\n\t\t\t\tasset.off('unload', this._onMeshAssetUnload, this);\n\t\t\t\tasset.off('remove', this._onMeshAssetRemove, this);\n\t\t\t\tasset.off('change', this._onMeshAssetChange, this);\n\t\t}\n\t\t_onMeshAssetLoad(asset) {\n\t\t\t\tthis._onMeshChanged(asset.resource);\n\t\t}\n\t\t_onMeshAssetUnload(asset) {\n\t\t\t\tthis.mesh = null;\n\t\t}\n\t\t_onMeshAssetRemove(asset) {\n\t\t\t\tthis._onMeshAssetUnload(asset);\n\t\t}\n\t\t_onMeshAssetChange(asset) {}\n\t\tonSetMeshAsset(name, oldValue, newValue) {\n\t\t\t\tconst assets = this.system.app.assets;\n\t\t\t\tif (oldValue) {\n\t\t\t\t\t\tconst asset = assets.get(oldValue);\n\t\t\t\t\t\tif (asset) {\n\t\t\t\t\t\t\t\tthis._unbindMeshAsset(asset);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (newValue) {\n\t\t\t\t\t\tif (newValue instanceof Asset) {\n\t\t\t\t\t\t\t\tthis.data.meshAsset = newValue.id;\n\t\t\t\t\t\t\t\tnewValue = newValue.id;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst asset = assets.get(newValue);\n\t\t\t\t\t\tif (asset) {\n\t\t\t\t\t\t\t\tthis._bindMeshAsset(asset);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._onMeshChanged(null);\n\t\t\t\t}\n\t\t}\n\t\tonSetMesh(name, oldValue, newValue) {\n\t\t\t\tif (!newValue || newValue instanceof Asset || typeof newValue === 'number') {\n\t\t\t\t\t\tthis.meshAsset = newValue;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._onMeshChanged(newValue);\n\t\t\t\t}\n\t\t}\n\t\t_onMeshChanged(mesh) {\n\t\t\t\tif (mesh && !(mesh instanceof Mesh)) {\n\t\t\t\t\t\tif (mesh.meshInstances[0]) {\n\t\t\t\t\t\t\t\tmesh = mesh.meshInstances[0].mesh;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tmesh = null;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.data.mesh = mesh;\n\t\t\t\tif (this.emitter) {\n\t\t\t\t\t\tthis.emitter.mesh = mesh;\n\t\t\t\t\t\tthis.emitter.resetMaterial();\n\t\t\t\t\t\tthis.rebuild();\n\t\t\t\t}\n\t\t}\n\t\tonSetRenderAsset(name, oldValue, newValue) {\n\t\t\t\tconst assets = this.system.app.assets;\n\t\t\t\tif (oldValue) {\n\t\t\t\t\t\tconst asset = assets.get(oldValue);\n\t\t\t\t\t\tif (asset) {\n\t\t\t\t\t\t\t\tthis._unbindRenderAsset(asset);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (newValue) {\n\t\t\t\t\t\tif (newValue instanceof Asset) {\n\t\t\t\t\t\t\t\tthis.data.renderAsset = newValue.id;\n\t\t\t\t\t\t\t\tnewValue = newValue.id;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst asset = assets.get(newValue);\n\t\t\t\t\t\tif (asset) {\n\t\t\t\t\t\t\t\tthis._bindRenderAsset(asset);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._onRenderChanged(null);\n\t\t\t\t}\n\t\t}\n\t\t_bindRenderAsset(asset) {\n\t\t\t\tasset.on('load', this._onRenderAssetLoad, this);\n\t\t\t\tasset.on('unload', this._onRenderAssetUnload, this);\n\t\t\t\tasset.on('remove', this._onRenderAssetRemove, this);\n\t\t\t\tif (asset.resource) {\n\t\t\t\t\t\tthis._onRenderAssetLoad(asset);\n\t\t\t\t} else {\n\t\t\t\t\t\tif (!this.enabled || !this.entity.enabled) return;\n\t\t\t\t\t\tthis.system.app.assets.load(asset);\n\t\t\t\t}\n\t\t}\n\t\t_unbindRenderAsset(asset) {\n\t\t\t\tasset.off('load', this._onRenderAssetLoad, this);\n\t\t\t\tasset.off('unload', this._onRenderAssetUnload, this);\n\t\t\t\tasset.off('remove', this._onRenderAssetRemove, this);\n\t\t\t\tthis._evtSetMeshes?.off();\n\t\t\t\tthis._evtSetMeshes = null;\n\t\t}\n\t\t_onRenderAssetLoad(asset) {\n\t\t\t\tthis._onRenderChanged(asset.resource);\n\t\t}\n\t\t_onRenderAssetUnload(asset) {\n\t\t\t\tthis._onRenderChanged(null);\n\t\t}\n\t\t_onRenderAssetRemove(asset) {\n\t\t\t\tthis._onRenderAssetUnload(asset);\n\t\t}\n\t\t_onRenderChanged(render) {\n\t\t\t\tif (!render) {\n\t\t\t\t\t\tthis._onMeshChanged(null);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._evtSetMeshes?.off();\n\t\t\t\tthis._evtSetMeshes = render.on('set:meshes', this._onRenderSetMeshes, this);\n\t\t\t\tif (render.meshes) {\n\t\t\t\t\t\tthis._onRenderSetMeshes(render.meshes);\n\t\t\t\t}\n\t\t}\n\t\t_onRenderSetMeshes(meshes) {\n\t\t\t\tthis._onMeshChanged(meshes && meshes[0]);\n\t\t}\n\t\tonSetLoop(name, oldValue, newValue) {\n\t\t\t\tif (this.emitter) {\n\t\t\t\t\t\tthis.emitter[name] = newValue;\n\t\t\t\t\t\tthis.emitter.resetTime();\n\t\t\t\t}\n\t\t}\n\t\tonSetBlendType(name, oldValue, newValue) {\n\t\t\t\tif (this.emitter) {\n\t\t\t\t\t\tthis.emitter[name] = newValue;\n\t\t\t\t\t\tthis.emitter.material.blendType = newValue;\n\t\t\t\t\t\tthis.emitter.resetMaterial();\n\t\t\t\t\t\tthis.rebuild();\n\t\t\t\t}\n\t\t}\n\t\t_requestDepth() {\n\t\t\t\tif (this._requestedDepth) return;\n\t\t\t\tif (!depthLayer) depthLayer = this.system.app.scene.layers.getLayerById(LAYERID_DEPTH);\n\t\t\t\tif (depthLayer) {\n\t\t\t\t\t\tdepthLayer.incrementCounter();\n\t\t\t\t\t\tthis._requestedDepth = true;\n\t\t\t\t}\n\t\t}\n\t\t_releaseDepth() {\n\t\t\t\tif (!this._requestedDepth) return;\n\t\t\t\tif (depthLayer) {\n\t\t\t\t\t\tdepthLayer.decrementCounter();\n\t\t\t\t\t\tthis._requestedDepth = false;\n\t\t\t\t}\n\t\t}\n\t\tonSetDepthSoftening(name, oldValue, newValue) {\n\t\t\t\tif (oldValue !== newValue) {\n\t\t\t\t\t\tif (newValue) {\n\t\t\t\t\t\t\t\tif (this.enabled && this.entity.enabled) this._requestDepth();\n\t\t\t\t\t\t\t\tif (this.emitter) this.emitter[name] = newValue;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (this.enabled && this.entity.enabled) this._releaseDepth();\n\t\t\t\t\t\t\t\tif (this.emitter) this.emitter[name] = newValue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.emitter) {\n\t\t\t\t\t\t\t\tthis.reset();\n\t\t\t\t\t\t\t\tthis.emitter.resetMaterial();\n\t\t\t\t\t\t\t\tthis.rebuild();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tonSetSimpleProperty(name, oldValue, newValue) {\n\t\t\t\tif (this.emitter) {\n\t\t\t\t\t\tthis.emitter[name] = newValue;\n\t\t\t\t\t\tthis.emitter.resetMaterial();\n\t\t\t\t}\n\t\t}\n\t\tonSetComplexProperty(name, oldValue, newValue) {\n\t\t\t\tif (this.emitter) {\n\t\t\t\t\t\tthis.emitter[name] = newValue;\n\t\t\t\t\t\tthis.emitter.resetMaterial();\n\t\t\t\t\t\tthis.rebuild();\n\t\t\t\t\t\tthis.reset();\n\t\t\t\t}\n\t\t}\n\t\tonSetGraphProperty(name, oldValue, newValue) {\n\t\t\t\tif (this.emitter) {\n\t\t\t\t\t\tthis.emitter[name] = newValue;\n\t\t\t\t\t\tthis.emitter.rebuildGraphs();\n\t\t\t\t\t\tthis.emitter.resetMaterial();\n\t\t\t\t}\n\t\t}\n\t\tonEnable() {\n\t\t\t\tconst scene = this.system.app.scene;\n\t\t\t\tconst layers = scene.layers;\n\t\t\t\tconst data = this.data;\n\t\t\t\tfor(let i = 0, len = ASSET_PROPERTIES.length; i < len; i++){\n\t\t\t\t\t\tlet asset = data[ASSET_PROPERTIES[i]];\n\t\t\t\t\t\tif (asset) {\n\t\t\t\t\t\t\t\tif (!(asset instanceof Asset)) {\n\t\t\t\t\t\t\t\t\t\tconst id = parseInt(asset, 10);\n\t\t\t\t\t\t\t\t\t\tif (id >= 0) {\n\t\t\t\t\t\t\t\t\t\t\t\tasset = this.system.app.assets.get(asset);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (asset && !asset.resource) {\n\t\t\t\t\t\t\t\t\t\tthis.system.app.assets.load(asset);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this.system.app.graphicsDevice.disableParticleSystem) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (!this.emitter) {\n\t\t\t\t\t\tlet mesh = data.mesh;\n\t\t\t\t\t\tif (!(mesh instanceof Mesh)) {\n\t\t\t\t\t\t\t\tmesh = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.emitter = new ParticleEmitter(this.system.app.graphicsDevice, {\n\t\t\t\t\t\t\t\tnumParticles: data.numParticles,\n\t\t\t\t\t\t\t\temitterExtents: data.emitterExtents,\n\t\t\t\t\t\t\t\temitterExtentsInner: data.emitterExtentsInner,\n\t\t\t\t\t\t\t\temitterRadius: data.emitterRadius,\n\t\t\t\t\t\t\t\temitterRadiusInner: data.emitterRadiusInner,\n\t\t\t\t\t\t\t\temitterShape: data.emitterShape,\n\t\t\t\t\t\t\t\tinitialVelocity: data.initialVelocity,\n\t\t\t\t\t\t\t\twrap: data.wrap,\n\t\t\t\t\t\t\t\tlocalSpace: data.localSpace,\n\t\t\t\t\t\t\t\tscreenSpace: data.screenSpace,\n\t\t\t\t\t\t\t\twrapBounds: data.wrapBounds,\n\t\t\t\t\t\t\t\tlifetime: data.lifetime,\n\t\t\t\t\t\t\t\trate: data.rate,\n\t\t\t\t\t\t\t\trate2: data.rate2,\n\t\t\t\t\t\t\t\torientation: data.orientation,\n\t\t\t\t\t\t\t\tparticleNormal: data.particleNormal,\n\t\t\t\t\t\t\t\tanimTilesX: data.animTilesX,\n\t\t\t\t\t\t\t\tanimTilesY: data.animTilesY,\n\t\t\t\t\t\t\t\tanimStartFrame: data.animStartFrame,\n\t\t\t\t\t\t\t\tanimNumFrames: data.animNumFrames,\n\t\t\t\t\t\t\t\tanimNumAnimations: data.animNumAnimations,\n\t\t\t\t\t\t\t\tanimIndex: data.animIndex,\n\t\t\t\t\t\t\t\trandomizeAnimIndex: data.randomizeAnimIndex,\n\t\t\t\t\t\t\t\tanimSpeed: data.animSpeed,\n\t\t\t\t\t\t\t\tanimLoop: data.animLoop,\n\t\t\t\t\t\t\t\tstartAngle: data.startAngle,\n\t\t\t\t\t\t\t\tstartAngle2: data.startAngle2,\n\t\t\t\t\t\t\t\tscaleGraph: data.scaleGraph,\n\t\t\t\t\t\t\t\tscaleGraph2: data.scaleGraph2,\n\t\t\t\t\t\t\t\tcolorGraph: data.colorGraph,\n\t\t\t\t\t\t\t\tcolorGraph2: data.colorGraph2,\n\t\t\t\t\t\t\t\talphaGraph: data.alphaGraph,\n\t\t\t\t\t\t\t\talphaGraph2: data.alphaGraph2,\n\t\t\t\t\t\t\t\tlocalVelocityGraph: data.localVelocityGraph,\n\t\t\t\t\t\t\t\tlocalVelocityGraph2: data.localVelocityGraph2,\n\t\t\t\t\t\t\t\tvelocityGraph: data.velocityGraph,\n\t\t\t\t\t\t\t\tvelocityGraph2: data.velocityGraph2,\n\t\t\t\t\t\t\t\trotationSpeedGraph: data.rotationSpeedGraph,\n\t\t\t\t\t\t\t\trotationSpeedGraph2: data.rotationSpeedGraph2,\n\t\t\t\t\t\t\t\tradialSpeedGraph: data.radialSpeedGraph,\n\t\t\t\t\t\t\t\tradialSpeedGraph2: data.radialSpeedGraph2,\n\t\t\t\t\t\t\t\tcolorMap: data.colorMap,\n\t\t\t\t\t\t\t\tnormalMap: data.normalMap,\n\t\t\t\t\t\t\t\tloop: data.loop,\n\t\t\t\t\t\t\t\tpreWarm: data.preWarm,\n\t\t\t\t\t\t\t\tsort: data.sort,\n\t\t\t\t\t\t\t\tstretch: data.stretch,\n\t\t\t\t\t\t\t\talignToMotion: data.alignToMotion,\n\t\t\t\t\t\t\t\tlighting: data.lighting,\n\t\t\t\t\t\t\t\thalfLambert: data.halfLambert,\n\t\t\t\t\t\t\t\tintensity: data.intensity,\n\t\t\t\t\t\t\t\tdepthSoftening: data.depthSoftening,\n\t\t\t\t\t\t\t\tscene: this.system.app.scene,\n\t\t\t\t\t\t\t\tmesh: mesh,\n\t\t\t\t\t\t\t\tdepthWrite: data.depthWrite,\n\t\t\t\t\t\t\t\tnoFog: data.noFog,\n\t\t\t\t\t\t\t\tnode: this.entity,\n\t\t\t\t\t\t\t\tblendType: data.blendType\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis.emitter.meshInstance.node = this.entity;\n\t\t\t\t\t\tthis.emitter.drawOrder = this.drawOrder;\n\t\t\t\t\t\tif (!data.autoPlay) {\n\t\t\t\t\t\t\t\tthis.pause();\n\t\t\t\t\t\t\t\tthis.emitter.meshInstance.visible = false;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this.emitter.colorMap) {\n\t\t\t\t\t\tthis.addMeshInstanceToLayers();\n\t\t\t\t}\n\t\t\t\tthis._evtLayersChanged = scene.on('set:layers', this.onLayersChanged, this);\n\t\t\t\tif (layers) {\n\t\t\t\t\t\tthis._evtLayerAdded = layers.on('add', this.onLayerAdded, this);\n\t\t\t\t\t\tthis._evtLayerRemoved = layers.on('remove', this.onLayerRemoved, this);\n\t\t\t\t}\n\t\t\t\tif (this.enabled && this.entity.enabled && data.depthSoftening) {\n\t\t\t\t\t\tthis._requestDepth();\n\t\t\t\t}\n\t\t}\n\t\tonDisable() {\n\t\t\t\tconst scene = this.system.app.scene;\n\t\t\t\tconst layers = scene.layers;\n\t\t\t\tthis._evtLayersChanged?.off();\n\t\t\t\tthis._evtLayersChanged = null;\n\t\t\t\tif (layers) {\n\t\t\t\t\t\tthis._evtLayerAdded?.off();\n\t\t\t\t\t\tthis._evtLayerAdded = null;\n\t\t\t\t\t\tthis._evtLayerRemoved?.off();\n\t\t\t\t\t\tthis._evtLayerRemoved = null;\n\t\t\t\t}\n\t\t\t\tif (this.emitter) {\n\t\t\t\t\t\tthis.removeMeshInstanceFromLayers();\n\t\t\t\t\t\tif (this.data.depthSoftening) this._releaseDepth();\n\t\t\t\t\t\tthis.emitter.camera = null;\n\t\t\t\t}\n\t\t}\n\t\tonBeforeRemove() {\n\t\t\t\tif (this.enabled) {\n\t\t\t\t\t\tthis.enabled = false;\n\t\t\t\t}\n\t\t\t\tif (this.emitter) {\n\t\t\t\t\t\tthis.emitter.destroy();\n\t\t\t\t\t\tthis.emitter = null;\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < ASSET_PROPERTIES.length; i++){\n\t\t\t\t\t\tconst prop = ASSET_PROPERTIES[i];\n\t\t\t\t\t\tif (this.data[prop]) {\n\t\t\t\t\t\t\t\tthis[prop] = null;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.off();\n\t\t}\n\t\treset() {\n\t\t\t\tif (this.emitter) {\n\t\t\t\t\t\tthis.emitter.reset();\n\t\t\t\t}\n\t\t}\n\t\tstop() {\n\t\t\t\tif (this.emitter) {\n\t\t\t\t\t\tthis.emitter.loop = false;\n\t\t\t\t\t\tthis.emitter.resetTime();\n\t\t\t\t\t\tthis.emitter.addTime(0, true);\n\t\t\t\t}\n\t\t}\n\t\tpause() {\n\t\t\t\tthis.data.paused = true;\n\t\t}\n\t\tunpause() {\n\t\t\t\tthis.data.paused = false;\n\t\t}\n\t\tplay() {\n\t\t\t\tthis.data.paused = false;\n\t\t\t\tif (this.emitter) {\n\t\t\t\t\t\tthis.emitter.meshInstance.visible = true;\n\t\t\t\t\t\tthis.emitter.loop = this.data.loop;\n\t\t\t\t\t\tthis.emitter.resetTime();\n\t\t\t\t}\n\t\t}\n\t\tisPlaying() {\n\t\t\t\tif (this.data.paused) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif (this.emitter && this.emitter.loop) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn Date.now() <= this.emitter.endTime;\n\t\t}\n\t\tsetInTools() {\n\t\t\t\tconst { emitter } = this;\n\t\t\t\tif (emitter && !emitter.inTools) {\n\t\t\t\t\t\temitter.inTools = true;\n\t\t\t\t\t\tthis.rebuild();\n\t\t\t\t}\n\t\t}\n\t\trebuild() {\n\t\t\t\tconst enabled = this.enabled;\n\t\t\t\tthis.enabled = false;\n\t\t\t\tif (this.emitter) {\n\t\t\t\t\t\tthis.emitter.rebuild();\n\t\t\t\t}\n\t\t\t\tthis.enabled = enabled;\n\t\t}\n}\n\nclass ParticleSystemComponentData {\n\t\tconstructor(){\n\t\t\t\tthis.numParticles = 1;\n\t\t\t\tthis.rate = 1;\n\t\t\t\tthis.rate2 = null;\n\t\t\t\tthis.startAngle = 0;\n\t\t\t\tthis.startAngle2 = null;\n\t\t\t\tthis.lifetime = 50;\n\t\t\t\tthis.emitterExtents = new Vec3();\n\t\t\t\tthis.emitterExtentsInner = new Vec3();\n\t\t\t\tthis.emitterRadius = 0;\n\t\t\t\tthis.emitterRadiusInner = 0;\n\t\t\t\tthis.emitterShape = EMITTERSHAPE_BOX;\n\t\t\t\tthis.initialVelocity = 0;\n\t\t\t\tthis.wrap = false;\n\t\t\t\tthis.wrapBounds = new Vec3();\n\t\t\t\tthis.localSpace = false;\n\t\t\t\tthis.screenSpace = false;\n\t\t\t\tthis.colorMap = null;\n\t\t\t\tthis.colorMapAsset = null;\n\t\t\t\tthis.normalMap = null;\n\t\t\t\tthis.normalMapAsset = null;\n\t\t\t\tthis.loop = true;\n\t\t\t\tthis.preWarm = false;\n\t\t\t\tthis.sort = 0;\n\t\t\t\tthis.mode = PARTICLEMODE_GPU;\n\t\t\t\tthis.scene = null;\n\t\t\t\tthis.lighting = false;\n\t\t\t\tthis.halfLambert = false;\n\t\t\t\tthis.intensity = 1;\n\t\t\t\tthis.stretch = 0.0;\n\t\t\t\tthis.alignToMotion = false;\n\t\t\t\tthis.depthSoftening = 0;\n\t\t\t\tthis.renderAsset = null;\n\t\t\t\tthis.meshAsset = null;\n\t\t\t\tthis.mesh = null;\n\t\t\t\tthis.depthWrite = false;\n\t\t\t\tthis.noFog = false;\n\t\t\t\tthis.orientation = PARTICLEORIENTATION_SCREEN;\n\t\t\t\tthis.particleNormal = new Vec3(0, 1, 0);\n\t\t\t\tthis.animTilesX = 1;\n\t\t\t\tthis.animTilesY = 1;\n\t\t\t\tthis.animStartFrame = 0;\n\t\t\t\tthis.animNumFrames = 1;\n\t\t\t\tthis.animNumAnimations = 1;\n\t\t\t\tthis.animIndex = 0;\n\t\t\t\tthis.randomizeAnimIndex = false;\n\t\t\t\tthis.animSpeed = 1;\n\t\t\t\tthis.animLoop = true;\n\t\t\t\tthis.scaleGraph = null;\n\t\t\t\tthis.scaleGraph2 = null;\n\t\t\t\tthis.colorGraph = null;\n\t\t\t\tthis.colorGraph2 = null;\n\t\t\t\tthis.alphaGraph = null;\n\t\t\t\tthis.alphaGraph2 = null;\n\t\t\t\tthis.localVelocityGraph = null;\n\t\t\t\tthis.localVelocityGraph2 = null;\n\t\t\t\tthis.velocityGraph = null;\n\t\t\t\tthis.velocityGraph2 = null;\n\t\t\t\tthis.rotationSpeedGraph = null;\n\t\t\t\tthis.rotationSpeedGraph2 = null;\n\t\t\t\tthis.radialSpeedGraph = null;\n\t\t\t\tthis.radialSpeedGraph2 = null;\n\t\t\t\tthis.blendType = BLEND_NORMAL;\n\t\t\t\tthis.enabled = true;\n\t\t\t\tthis.paused = false;\n\t\t\t\tthis.autoPlay = true;\n\t\t\t\tthis.layers = [\n\t\t\t\t\t\tLAYERID_WORLD\n\t\t\t\t];\n\t\t}\n}\n\nvar particlePS$1 = `\nvarying vec4 texCoordsAlphaLife;\nuniform sampler2D colorMap;\nuniform sampler2D colorParam;\nuniform float graphSampleSize;\nuniform float graphNumSamples;\n#ifndef CAMERAPLANES\n\t#define CAMERAPLANES\n\tuniform vec4 camera_params;\n#endif\n#ifdef SOFT\n\tuniform float softening;\n#endif\nuniform float colorMult;\nfloat saturate(float x) {\n\treturn clamp(x, 0.0, 1.0);\n}\nvoid main(void) {\n\tvec4 tex  = texture2D(colorMap, vec2(texCoordsAlphaLife.x, 1.0 - texCoordsAlphaLife.y));\n\tvec4 ramp = texture2D(colorParam, vec2(texCoordsAlphaLife.w, 0.0));\n\tramp.rgb *= colorMult;\n\tramp.a += texCoordsAlphaLife.z;\n\tvec3 rgb = tex.rgb * ramp.rgb;\n\tfloat a  = tex.a * ramp.a;\n`;\n\nvar particleVS$1 = `\nvec3 unpack3NFloats(float src) {\n\tfloat r = fract(src);\n\tfloat g = fract(src * 256.0);\n\tfloat b = fract(src * 65536.0);\n\treturn vec3(r, g, b);\n}\nfloat saturate(float x) {\n\treturn clamp(x, 0.0, 1.0);\n}\nvec4 tex1Dlod_lerp(TEXTURE_ACCEPT_HIGHP(tex), vec2 tc) {\n\treturn mix( texture2D(tex,tc), texture2D(tex,tc + graphSampleSize), fract(tc.x*graphNumSamples) );\n}\nvec4 tex1Dlod_lerp(TEXTURE_ACCEPT_HIGHP(tex), vec2 tc, out vec3 w) {\n\tvec4 a = texture2D(tex,tc);\n\tvec4 b = texture2D(tex,tc + graphSampleSize);\n\tfloat c = fract(tc.x*graphNumSamples);\n\tvec3 unpackedA = unpack3NFloats(a.w);\n\tvec3 unpackedB = unpack3NFloats(b.w);\n\tw = mix(unpackedA, unpackedB, c);\n\treturn mix(a, b, c);\n}\nvec2 rotate(vec2 quadXY, float pRotation, out mat2 rotMatrix) {\n\tfloat c = cos(pRotation);\n\tfloat s = sin(pRotation);\n\tmat2 m = mat2(c, -s, s, c);\n\trotMatrix = m;\n\treturn m * quadXY;\n}\nvec3 billboard(vec3 InstanceCoords, vec2 quadXY) {\n\t#ifdef SCREEN_SPACE\n\t\tvec3 pos = vec3(-1, 0, 0) * quadXY.x + vec3(0, -1, 0) * quadXY.y;\n\t#else\n\t\tvec3 pos = -matrix_viewInverse[0].xyz * quadXY.x + -matrix_viewInverse[1].xyz * quadXY.y;\n\t#endif\n\treturn pos;\n}\nvec3 customFace(vec3 InstanceCoords, vec2 quadXY) {\n\tvec3 pos = faceTangent * quadXY.x + faceBinorm * quadXY.y;\n\treturn pos;\n}\nvec2 safeNormalize(vec2 v) {\n\tfloat l = length(v);\n\treturn (l > 1e-06) ? v / l : v;\n}\nvoid main(void) {\n\tvec3 meshLocalPos = particle_vertexData.xyz;\n\tfloat id = floor(particle_vertexData.w);\n\tfloat rndFactor = fract(sin(id + 1.0 + seed));\n\tvec3 rndFactor3 = vec3(rndFactor, fract(rndFactor*10.0), fract(rndFactor*100.0));\n\tfloat uv = id / numParticlesPot;\n\treadInput(uv);\n#ifdef LOCAL_SPACE\n\tinVel = mat3(matrix_model) * inVel;\n#endif\n\tvec2 velocityV = safeNormalize((mat3(matrix_view) * inVel).xy);\n\tfloat particleLifetime = lifetime;\n\tif (inLife <= 0.0 || inLife > particleLifetime || !inShow)\n\t\tmeshLocalPos = vec3(0.0);\n\tvec2 quadXY = meshLocalPos.xy;\n\tfloat nlife = clamp(inLife / particleLifetime, 0.0, 1.0);\n\tvec3 paramDiv;\n\tvec4 params = tex1Dlod_lerp(TEXTURE_PASS(internalTex2), vec2(nlife, 0), paramDiv);\n\tfloat scale = params.y;\n\tfloat scaleDiv = paramDiv.x;\n\tfloat alphaDiv = paramDiv.z;\n\tscale += (scaleDiv * 2.0 - 1.0) * scaleDivMult * fract(rndFactor*10000.0);\n#ifndef USE_MESH\n\ttexCoordsAlphaLife = vec4(quadXY * -0.5 + 0.5, (alphaDiv * 2.0 - 1.0) * alphaDivMult * fract(rndFactor*1000.0), nlife);\n#else\n\ttexCoordsAlphaLife = vec4(particle_uv, (alphaDiv * 2.0 - 1.0) * alphaDivMult * fract(rndFactor*1000.0), nlife);\n#endif\n\tvec3 particlePos = inPos;\n\tvec3 particlePosMoved = vec3(0.0);\n\tmat2 rotMatrix;\n`;\n\nvar particleAnimFrameClampVS$1 = `\n\tfloat animFrame = min(floor(texCoordsAlphaLife.w * animTexParams.y) + animTexParams.x, animTexParams.z);\n`;\n\nvar particleAnimFrameLoopVS$1 = `\n\tfloat animFrame = floor(mod(texCoordsAlphaLife.w * animTexParams.y + animTexParams.x, animTexParams.z + 1.0));\n`;\n\nvar particleAnimTexVS$1 = `\n\tfloat animationIndex;\n\tif (animTexIndexParams.y == 1.0) {\n\t\tanimationIndex = floor((animTexParams.w + 1.0) * rndFactor3.z) * (animTexParams.z + 1.0);\n\t} else {\n\t\tanimationIndex = animTexIndexParams.x * (animTexParams.z + 1.0);\n\t}\n\tfloat atlasX = (animationIndex + animFrame) * animTexTilesParams.x;\n\tfloat atlasY = 1.0 - floor(atlasX + 1.0) * animTexTilesParams.y;\n\tatlasX = fract(atlasX);\n\ttexCoordsAlphaLife.xy *= animTexTilesParams.xy;\n\ttexCoordsAlphaLife.xy += vec2(atlasX, atlasY);\n`;\n\nvar particleInputFloatPS$1 = `\nvoid readInput(float uv) {\n\tvec4 tex = texture2D(particleTexIN, vec2(uv, 0.25));\n\tvec4 tex2 = texture2D(particleTexIN, vec2(uv, 0.75));\n\tinPos = tex.xyz;\n\tinVel = tex2.xyz;\n\tinAngle = (tex.w < 0.0? -tex.w : tex.w) - 1000.0;\n\tinShow = tex.w >= 0.0;\n\tinLife = tex2.w;\n}\n`;\n\nvar particleInputRgba8PS$1 = `\n#define PI2 6.283185307179586\nuniform vec3 inBoundsSize;\nuniform vec3 inBoundsCenter;\nuniform float maxVel;\nfloat decodeFloatRG(vec2 rg) {\n\treturn rg.y * (1.0 / 255.0) + rg.x;\n}\nfloat decodeFloatRGBA( vec4 rgba ) {\n\treturn dot(rgba, vec4(1.0, 1.0 / 255.0, 1.0 / 65025.0, 1.0 / 160581375.0));\n}\nvoid readInput(float uv) {\n\tvec4 tex0 = texture2D(particleTexIN, vec2(uv, 0.125));\n\tvec4 tex1 = texture2D(particleTexIN, vec2(uv, 0.375));\n\tvec4 tex2 = texture2D(particleTexIN, vec2(uv, 0.625));\n\tvec4 tex3 = texture2D(particleTexIN, vec2(uv, 0.875));\n\tinPos = vec3(decodeFloatRG(tex0.rg), decodeFloatRG(tex0.ba), decodeFloatRG(tex1.rg));\n\tinPos = (inPos - vec3(0.5)) * inBoundsSize + inBoundsCenter;\n\tinVel = tex2.xyz;\n\tinVel = (inVel - vec3(0.5)) * maxVel;\n\tinAngle = decodeFloatRG(tex1.ba) * PI2;\n\tinShow = tex2.a > 0.5;\n\tinLife = decodeFloatRGBA(tex3);\n\tfloat maxNegLife = max(lifetime, (numParticles - 1.0) * (rate+rateDiv));\n\tfloat maxPosLife = lifetime+1.0;\n\tinLife = inLife * (maxNegLife + maxPosLife) - maxNegLife;\n}\n`;\n\nvar particleOutputFloatPS$1 = `\nvoid writeOutput() {\n\tif (gl_FragCoord.y<1.0) {\n\t\tgl_FragColor = vec4(outPos, (outAngle + 1000.0) * visMode);\n\t} else {\n\t\tgl_FragColor = vec4(outVel, outLife);\n\t}\n}\n`;\n\nvar particleOutputRgba8PS$1 = `\nuniform vec3 outBoundsMul;\nuniform vec3 outBoundsAdd;\nvec2 encodeFloatRG( float v ) {\n\tvec2 enc = vec2(1.0, 255.0) * v;\n\tenc = fract(enc);\n\tenc -= enc.yy * vec2(1.0/255.0, 1.0/255.0);\n\treturn enc;\n}\nvec4 encodeFloatRGBA( float v ) {\n\tvec4 enc = vec4(1.0, 255.0, 65025.0, 160581375.0) * v;\n\tenc = fract(enc);\n\tenc -= enc.yzww * vec4(1.0/255.0,1.0/255.0,1.0/255.0,0.0);\n\treturn enc;\n}\nvoid writeOutput() {\n\toutPos = outPos * outBoundsMul + outBoundsAdd;\n\toutAngle = fract(outAngle / PI2);\n\toutVel = (outVel / maxVel) + vec3(0.5);\n\tfloat maxNegLife = max(lifetime, (numParticles - 1.0) * (rate+rateDiv));\n\tfloat maxPosLife = lifetime+1.0;\n\toutLife = (outLife + maxNegLife) / (maxNegLife + maxPosLife);\n\tif (gl_FragCoord.y < 1.0) {\n\t\tgl_FragColor = vec4(encodeFloatRG(outPos.x), encodeFloatRG(outPos.y));\n\t} else if (gl_FragCoord.y < 2.0) {\n\t\tgl_FragColor = vec4(encodeFloatRG(outPos.z), encodeFloatRG(outAngle));\n\t} else if (gl_FragCoord.y < 3.0) {\n\t\tgl_FragColor = vec4(outVel, visMode*0.5+0.5);\n\t} else {\n\t\tgl_FragColor = encodeFloatRGBA(outLife);\n\t}\n}\n`;\n\nvar particleUpdaterAABBPS$1 = `\nuniform mat3 spawnBounds;\nuniform vec3 spawnPosInnerRatio;\nvec3 calcSpawnPosition(vec3 inBounds, float rndFactor) {\n\tvec3 pos = inBounds - vec3(0.5);\n\tvec3 posAbs = abs(pos);\n\tvec3 maxPos = vec3(max(posAbs.x, max(posAbs.y, posAbs.z)));\n\tvec3 edge = maxPos + (vec3(0.5) - maxPos) * spawnPosInnerRatio;\n\tpos.x = edge.x * (maxPos.x == posAbs.x ? sign(pos.x) : 2.0 * pos.x);\n\tpos.y = edge.y * (maxPos.y == posAbs.y ? sign(pos.y) : 2.0 * pos.y);\n\tpos.z = edge.z * (maxPos.z == posAbs.z ? sign(pos.z) : 2.0 * pos.z);\n#ifndef LOCAL_SPACE\n\treturn emitterPos + spawnBounds * pos;\n#else\n\treturn spawnBounds * pos;\n#endif\n}\nvoid addInitialVelocity(inout vec3 localVelocity, vec3 inBounds) {\n\tlocalVelocity -= vec3(0, 0, initialVelocity);\n}\n`;\n\nvar particleUpdaterEndPS$1 = `\n\twriteOutput();\n}\n`;\n\nvar particleUpdaterInitPS$1 = `\nvarying vec2 vUv0;\nuniform highp sampler2D particleTexIN;\nuniform highp sampler2D internalTex0;\nuniform highp sampler2D internalTex1;\nuniform highp sampler2D internalTex2;\nuniform highp sampler2D internalTex3;\nuniform mat3 emitterMatrix;\nuniform mat3 emitterMatrixInv;\nuniform vec3 emitterScale;\nuniform vec3 emitterPos;\nuniform vec3 frameRandom;\nuniform vec3 localVelocityDivMult;\nuniform vec3 velocityDivMult;\nuniform float delta;\nuniform float rate;\nuniform float rateDiv;\nuniform float lifetime;\nuniform float numParticles;\nuniform float rotSpeedDivMult;\nuniform float radialSpeedDivMult;\nuniform float seed;\nuniform float startAngle;\nuniform float startAngle2;\nuniform float initialVelocity;\nuniform float graphSampleSize;\nuniform float graphNumSamples;\nvec3 inPos;\nvec3 inVel;\nfloat inAngle;\nbool inShow;\nfloat inLife;\nfloat visMode;\nvec3 outPos;\nvec3 outVel;\nfloat outAngle;\nbool outShow;\nfloat outLife;\n`;\n\nvar particleUpdaterNoRespawnPS$1 = `\n\tif (outLife >= lifetime) {\n\t\toutLife -= max(lifetime, (numParticles - 1.0) * particleRate);\n\t\tvisMode = -1.0;\n\t}\n`;\n\nvar particleUpdaterOnStopPS$1 = `\n\tvisMode = outLife < 0.0? -1.0: visMode;\n`;\n\nvar particleUpdaterRespawnPS$1 = `\n\tif (outLife >= lifetime) {\n\t\toutLife -= max(lifetime, (numParticles - 1.0) * particleRate);\n\t\tvisMode = 1.0;\n\t}\n\tvisMode = outLife < 0.0? 1.0: visMode;\n`;\n\nvar particleUpdaterSpherePS$1 = `\nuniform float spawnBoundsSphere;\nuniform float spawnBoundsSphereInnerRatio;\nvec3 calcSpawnPosition(vec3 inBounds, float rndFactor) {\n\tfloat rnd4 = fract(rndFactor * 1000.0);\n\tvec3 norm = normalize(inBounds.xyz - vec3(0.5));\n\tfloat r = rnd4 * (1.0 - spawnBoundsSphereInnerRatio) + spawnBoundsSphereInnerRatio;\n#ifndef LOCAL_SPACE\n\treturn emitterPos + norm * r * spawnBoundsSphere;\n#else\n\treturn norm * r * spawnBoundsSphere;\n#endif\n}\nvoid addInitialVelocity(inout vec3 localVelocity, vec3 inBounds) {\n\tlocalVelocity += normalize(inBounds - vec3(0.5)) * initialVelocity;\n}\n`;\n\nvar particleUpdaterStartPS$1 = `\nfloat saturate(float x) {\n\treturn clamp(x, 0.0, 1.0);\n}\nvec3 unpack3NFloats(float src) {\n\tfloat r = fract(src);\n\tfloat g = fract(src * 256.0);\n\tfloat b = fract(src * 65536.0);\n\treturn vec3(r, g, b);\n}\nvec3 tex1Dlod_lerp(TEXTURE_ACCEPT_HIGHP(tex), vec2 tc, out vec3 w) {\n\tvec4 a = texture2D(tex, tc);\n\tvec4 b = texture2D(tex, tc + graphSampleSize);\n\tfloat c = fract(tc.x * graphNumSamples);\n\tvec3 unpackedA = unpack3NFloats(a.w);\n\tvec3 unpackedB = unpack3NFloats(b.w);\n\tw = mix(unpackedA, unpackedB, c);\n\treturn mix(a.xyz, b.xyz, c);\n}\n#define HASHSCALE4 vec4(1031, .1030, .0973, .1099)\nvec4 hash41(float p) {\n\tvec4 p4 = fract(vec4(p) * HASHSCALE4);\n\tp4 += dot(p4, p4.wzxy+19.19);\n\treturn fract(vec4((p4.x + p4.y)*p4.z, (p4.x + p4.z)*p4.y, (p4.y + p4.z)*p4.w, (p4.z + p4.w)*p4.x));\n}\nvoid main(void) {\n\tif (gl_FragCoord.x > numParticles) discard;\n\treadInput(vUv0.x);\n\tvisMode = inShow? 1.0 : -1.0;\n\tvec4 rndFactor = hash41(gl_FragCoord.x + seed);\n\tfloat particleRate = rate + rateDiv * rndFactor.x;\n\toutLife = inLife + delta;\n\tfloat nlife = clamp(outLife / lifetime, 0.0, 1.0);\n\tvec3 localVelocityDiv;\n\tvec3 velocityDiv;\n\tvec3 paramDiv;\n\tvec3 localVelocity = tex1Dlod_lerp(TEXTURE_PASS(internalTex0), vec2(nlife, 0), localVelocityDiv);\n\tvec3 velocity =\t  tex1Dlod_lerp(TEXTURE_PASS(internalTex1), vec2(nlife, 0), velocityDiv);\n\tvec3 params =\t\ttex1Dlod_lerp(TEXTURE_PASS(internalTex2), vec2(nlife, 0), paramDiv);\n\tfloat rotSpeed = params.x;\n\tfloat rotSpeedDiv = paramDiv.y;\n\tvec3 radialParams = tex1Dlod_lerp(TEXTURE_PASS(internalTex3), vec2(nlife, 0), paramDiv);\n\tfloat radialSpeed = radialParams.x;\n\tfloat radialSpeedDiv = radialParams.y;\n\tbool respawn = inLife <= 0.0 || outLife >= lifetime;\n\tinPos = respawn ? calcSpawnPosition(rndFactor.xyz, rndFactor.x) : inPos;\n\tinAngle = respawn ? mix(startAngle, startAngle2, rndFactor.x) : inAngle;\n#ifndef LOCAL_SPACE\n\tvec3 radialVel = inPos - emitterPos;\n#else\n\tvec3 radialVel = inPos;\n#endif\n\tradialVel = (dot(radialVel, radialVel) > 1.0E-8) ? radialSpeed * normalize(radialVel) : vec3(0.0);\n\tradialVel += (radialSpeedDiv * vec3(2.0) - vec3(1.0)) * radialSpeedDivMult * rndFactor.xyz;\n\tlocalVelocity +=\t(localVelocityDiv * vec3(2.0) - vec3(1.0)) * localVelocityDivMult * rndFactor.xyz;\n\tvelocity +=\t\t (velocityDiv * vec3(2.0) - vec3(1.0)) * velocityDivMult * rndFactor.xyz;\n\trotSpeed +=\t\t (rotSpeedDiv * 2.0 - 1.0) * rotSpeedDivMult * rndFactor.y;\n\taddInitialVelocity(localVelocity, rndFactor.xyz);\n#ifndef LOCAL_SPACE\n\toutVel = emitterMatrix * localVelocity + (radialVel + velocity) * emitterScale;\n#else\n\toutVel = (localVelocity + radialVel) / emitterScale + emitterMatrixInv * velocity;\n#endif\n\toutPos = inPos + outVel * delta;\n\toutAngle = inAngle + rotSpeed * delta;\n`;\n\nvar particle_billboardVS$1 = `\n\tquadXY = rotate(quadXY, inAngle, rotMatrix);\n\tvec3 localPos = billboard(particlePos, quadXY);\n`;\n\nvar particle_blendAddPS$1 = `\n\tdBlendModeFogFactor = 0.0;\n\trgb *= saturate(gammaCorrectInput(max(a, 0.0)));\n\tif ((rgb.r + rgb.g + rgb.b) < 0.000001) discard;\n`;\n\nvar particle_blendMultiplyPS$1 = `\n\trgb = mix(vec3(1.0), rgb, vec3(a));\n\tif (rgb.r + rgb.g + rgb.b > 2.99) discard;\n`;\n\nvar particle_blendNormalPS$1 = `\n\tif (a < 0.01) discard;\n`;\n\nvar particle_cpuVS$1 = `\nattribute vec4 particle_vertexData;\nattribute vec4 particle_vertexData2;\nattribute vec4 particle_vertexData3;\nattribute float particle_vertexData4;\n#ifndef USE_MESH\n\tattribute vec2 particle_vertexData5;\n#else\n\tattribute vec4 particle_vertexData5;\n#endif\nuniform mat4 matrix_viewProjection;\nuniform mat4 matrix_model;\n#ifndef VIEWMATRIX\n\t#define VIEWMATRIX\n\tuniform mat4 matrix_view;\n#endif\nuniform mat3 matrix_normal;\nuniform mat4 matrix_viewInverse;\nuniform float numParticles;\nuniform float lifetime;\nuniform float stretch;\nuniform float seed;\nuniform vec3 emitterScale;\nuniform vec3 faceTangent;\nuniform vec3 faceBinorm;\n#ifdef PARTICLE_GPU\n\t#ifdef WRAP\n\t\tuniform vec3 wrapBounds;\n\t#endif\n#endif\n#ifdef PARTICLE_GPU\n\tuniform highp sampler2D internalTex0;\n\tuniform highp sampler2D internalTex1;\n\tuniform highp sampler2D internalTex2;\n#endif\nuniform vec3 emitterPos;\nvarying vec4 texCoordsAlphaLife;\nvec2 rotate(vec2 quadXY, float pRotation, out mat2 rotMatrix)\n{\n\tfloat c = cos(pRotation);\n\tfloat s = sin(pRotation);\n\tmat2 m = mat2(c, -s, s, c);\n\trotMatrix = m;\n\treturn m * quadXY;\n}\nvec3 billboard(vec3 InstanceCoords, vec2 quadXY)\n{\n\tvec3 pos = -matrix_viewInverse[0].xyz * quadXY.x + -matrix_viewInverse[1].xyz * quadXY.y;\n\treturn pos;\n}\nvec3 customFace(vec3 InstanceCoords, vec2 quadXY)\n{\n\tvec3 pos = faceTangent * quadXY.x + faceBinorm * quadXY.y;\n\treturn pos;\n}\nvoid main(void)\n{\n\tvec3 particlePos = particle_vertexData.xyz;\n\tvec3 inPos = particlePos;\n\tvec3 vertPos = particle_vertexData3.xyz;\n\tvec3 inVel = vec3(particle_vertexData2.w, particle_vertexData3.w, particle_vertexData5.x);\n\tfloat id = floor(particle_vertexData4);\n\tfloat rndFactor = fract(sin(id + 1.0 + seed));\n\tvec3 rndFactor3 = vec3(rndFactor, fract(rndFactor*10.0), fract(rndFactor*100.0));\n#ifdef LOCAL_SPACE\n\tinVel = mat3(matrix_model) * inVel;\n#endif\n\tvec2 velocityV = normalize((mat3(matrix_view) * inVel).xy);\n\tvec2 quadXY = vertPos.xy;\n#ifdef USE_MESH\n\ttexCoordsAlphaLife = vec4(particle_vertexData5.zw, particle_vertexData2.z, particle_vertexData.w);\n#else\n\ttexCoordsAlphaLife = vec4(quadXY * -0.5 + 0.5, particle_vertexData2.z, particle_vertexData.w);\n#endif\n\tmat2 rotMatrix;\n\tfloat inAngle = particle_vertexData2.x;\n\tvec3 particlePosMoved = vec3(0.0);\n\tvec3 meshLocalPos = particle_vertexData3.xyz;\n`;\n\nvar particle_cpu_endVS$1 = `\n\tlocalPos *= particle_vertexData2.y * emitterScale;\n\tlocalPos += particlePos;\n\tgl_Position = matrix_viewProjection * vec4(localPos, 1.0);\n`;\n\nvar particle_customFaceVS$1 = `\n\tquadXY = rotate(quadXY, inAngle, rotMatrix);\n\tvec3 localPos = customFace(particlePos, quadXY);\n`;\n\nvar particle_endPS$1 = `\n\trgb = addFog(rgb);\n\trgb = toneMap(rgb);\n\trgb = gammaCorrectOutput(rgb);\n\tgl_FragColor = vec4(rgb, a);\n}\n`;\n\nvar particle_endVS$1 = `\n\tlocalPos *= scale * emitterScale;\n\tlocalPos += particlePos;\n\t#ifdef SCREEN_SPACE\n\tgl_Position = vec4(localPos.x, localPos.y, 0.0, 1.0);\n\t#else\n\tgl_Position = matrix_viewProjection * vec4(localPos.xyz, 1.0);\n\t#endif\n`;\n\nvar particle_halflambertPS$1 = `\n\tvec3 negNormal = normal * 0.5 + 0.5;\n\tvec3 posNormal = -normal * 0.5 + 0.5;\n\tnegNormal *= negNormal;\n\tposNormal *= posNormal;\n`;\n\nvar particle_initVS$1 = `\nattribute vec4 particle_vertexData;\n#if defined(USE_MESH)\n\t#if defined(USE_MESH_UV)\n\t\tattribute vec2 particle_uv;\n\t#else\n\t\tvec2 particle_uv = vec2(0.0, 0.0);\n\t#endif\n#endif\nuniform mat4 matrix_viewProjection;\nuniform mat4 matrix_model;\nuniform mat3 matrix_normal;\nuniform mat4 matrix_viewInverse;\n#ifndef VIEWMATRIX\n\t#define VIEWMATRIX\n\tuniform mat4 matrix_view;\n#endif\nuniform float numParticles;\nuniform float numParticlesPot;\nuniform float graphSampleSize;\nuniform float graphNumSamples;\nuniform float stretch;\nuniform vec3 emitterScale;\nuniform vec3 emitterPos;\nuniform vec3 faceTangent;\nuniform vec3 faceBinorm;\nuniform float rate;\nuniform float rateDiv;\nuniform float lifetime;\nuniform float scaleDivMult;\nuniform float alphaDivMult;\nuniform float seed;\nuniform float delta;\nuniform sampler2D particleTexOUT;\nuniform sampler2D particleTexIN;\n#ifdef PARTICLE_GPU\n\t#ifdef WRAP\n\t\tuniform vec3 wrapBounds;\n\t#endif\n#endif\n#ifdef PARTICLE_GPU\n\tuniform highp sampler2D internalTex0;\n\tuniform highp sampler2D internalTex1;\n\tuniform highp sampler2D internalTex2;\n#endif\n#ifndef CAMERAPLANES\n\t#define CAMERAPLANES\n\tuniform vec4 camera_params;\n#endif\nvarying vec4 texCoordsAlphaLife;\nvec3 inPos;\nvec3 inVel;\nfloat inAngle;\nbool inShow;\nfloat inLife;\n`;\n\nvar particle_lambertPS$1 = `\n\tvec3 negNormal = max(normal, vec3(0.0));\n\tvec3 posNormal = max(-normal, vec3(0.0));\n`;\n\nvar particle_lightingPS$1 = `\n\tvec3 light = negNormal.x*lightCube[0] + posNormal.x*lightCube[1] +\n\t\t\t\t\t\tnegNormal.y*lightCube[2] + posNormal.y*lightCube[3] +\n\t\t\t\t\t\tnegNormal.z*lightCube[4] + posNormal.z*lightCube[5];\n\trgb *= light;\n`;\n\nvar particle_localShiftVS$1 = `\n\tparticlePos = (matrix_model * vec4(particlePos, 1.0)).xyz;\n`;\n\nvar particle_meshVS$1 = `\n\tvec3 localPos = meshLocalPos;\n\tlocalPos.xy = rotate(localPos.xy, inAngle, rotMatrix);\n\tlocalPos.yz = rotate(localPos.yz, inAngle, rotMatrix);\n\tbillboard(particlePos, quadXY);\n`;\n\nvar particle_normalVS$1 = `\n\tNormal = normalize(localPos + matrix_viewInverse[2].xyz);\n`;\n\nvar particle_normalMapPS$1 = `\n\tvec3 normalMap = normalize(texture2D(normalMap, vec2(texCoordsAlphaLife.x, 1.0 - texCoordsAlphaLife.y)).xyz * 2.0 - 1.0);\n\tvec3 normal = ParticleMat * normalMap;\n`;\n\nvar particle_pointAlongVS$1 = `\n\tinAngle = atan(velocityV.x, velocityV.y);\n`;\n\nvar particle_simulationPS$1 = `\n\t#include \"particleUpdaterInitPS\"\n\t#ifdef PACK8\n\t\t#include \"particleInputRgba8PS\"\n\t\t#include \"particleOutputRgba8PS\"\n\t#else\n\t\t#include \"particleInputFloatPS\"\n\t\t#include \"particleOutputFloatPS\"\n\t#endif\n\t#ifdef EMITTERSHAPE_BOX\n\t\t#include \"particleUpdaterAABBPS\"\n\t#else\n\t\t#include \"particleUpdaterSpherePS\"\n\t#endif\n\t#include \"particleUpdaterStartPS\"\n\t#ifdef RESPAWN\n\t\t#include \"particleUpdaterRespawnPS\"\n\t#endif\n\t#ifdef NO_RESPAWN\n\t\t#include \"particleUpdaterNoRespawnPS\"\n\t#endif\n\t#ifdef ON_STOP\n\t\t#include \"particleUpdaterOnStopPS\"\n\t#endif\n\t#include \"particleUpdaterEndPS\"\n`;\n\nvar particle_shaderPS$1 = `\n\t#if NORMAL != NONE\n\t\t#if NORMAL == VERTEX\n\t\t\tvarying vec3 Normal;\n\t\t#endif\n\t\t#if NORMAL == MAP\n\t\t\tvarying mat3 ParticleMat;\n\t\t#endif\n\t\tuniform vec3 lightCube[6];\n\t#endif\n\t#ifdef SOFT\n\t\tvarying float vDepth;\n\t\t#include \"screenDepthPS\"\n\t#endif\n\t#include \"gammaPS\"\n\t#include \"tonemappingPS\"\n\t#include \"fogPS\"\n\t#if NORMAL == MAP\n\t\tuniform sampler2D normalMap;\n\t#endif\n\t#include \"particlePS\"\n\t#ifdef SOFT\n\t\t#include \"particle_softPS\"\n\t#endif\n\t#if NORMAL == VERTEX\n\t\tvec3 normal = Normal;\n\t#endif\n\t#if NORMAL == MAP\n\t\t#include \"particle_normalMapPS\"\n\t#endif\n\t#if NORMAL != NONE\n\t\t#ifdef HALF_LAMBERT\n\t\t\t#include \"particle_halflambertPS\"\n\t\t#else\n\t\t\t#include \"particle_lambertPS\"\n\t\t#endif\n\t\t#include \"particle_lightingPS\"\n\t#endif\n\t#if BLEND == NORMAL\n\t\t#include \"particle_blendNormalPS\"\n\t#elif BLEND == ADDITIVE\n\t\t#include \"particle_blendAddPS\"\n\t#elif BLEND == MULTIPLICATIVE\n\t\t#include \"particle_blendMultiplyPS\"\n\t#endif\n\t#include \"particle_endPS\"\n`;\n\nvar particle_shaderVS$1 = `\n\t#ifdef ANIMTEX\n\t\tuniform vec2 animTexTilesParams;\n\t\tuniform vec4 animTexParams;\n\t\tuniform vec2 animTexIndexParams;\n\t#endif\n\t#if NORMAL == MAP\n\t\tvarying mat3 ParticleMat;\n\t#endif\n\t#if NORMAL == VERTEX\n\t\tvarying vec3 Normal;\n\t#endif\n\t#ifdef SOFT\n\t\tvarying float vDepth;\n\t#endif\n\t#ifdef PARTICLE_GPU\n\t\t#include \"particle_initVS\"\n\t\t#ifdef PACK8\n\t\t\t#include \"particleInputRgba8PS\"\n\t\t#else\n\t\t\t#include  \"particleInputFloatPS\"\n\t\t#endif\n\t\t#ifdef SOFT\n\t\t\t#include \"screenDepthPS\"\n\t\t#endif\n\t\t#include \"particleVS\"\n\t#else\n\t\t#ifdef SOFT\n\t\t\t#include \"screenDepthPS\"\n\t\t#endif\n\t\t#include \"particle_cpuVS\"\n\t#endif\n\t#ifdef LOCAL_SPACE\n\t\t#include \"particle_localShiftVS\"\n\t#endif\n\t#ifdef ANIMTEX\n\t\t#ifdef ANIMTEX_LOOP\n\t\t\t#include \"particleAnimFrameLoopVS\"\n\t\t#else\n\t\t\t#include \"particleAnimFrameClampVS\"\n\t\t#endif\n\t\t#include \"particleAnimTexVS\"\n\t#endif\n\t#ifdef PARTICLE_GPU\n\t\t#ifdef WRAP\n\t\t\t#include \"particle_wrapVS\"\n\t\t#endif\n\t#endif\n\t#ifdef ALIGN_TO_MOTION\n\t\t#include \"particle_pointAlongVS\"\n\t#endif\n\t#ifdef USE_MESH\n\t\t#include \"particle_meshVS\"\n\t#else\n\t\t#ifdef CUSTOM_FACE\n\t\t\t#include \"particle_customFaceVS\"\n\t\t#else\n\t\t\t#include \"particle_billboardVS\"\n\t\t#endif\n\t#endif\n\t#if NORMAL == VERTEX\n\t\t#include \"particle_normalVS\"\n\t#endif\n\t#if NORMAL == MAP\n\t\t#include \"particle_TBNVS\"\n\t#endif\n\t#ifdef STRETCH\n\t\t#include \"particle_stretchVS\"\n\t#endif\n\t#ifdef PARTICLE_GPU\n\t\t#include \"particle_endVS\"\n\t#else\n\t\t#include \"particle_cpu_endVS\"\n\t#endif\n\t#ifdef SOFT\n\t\t#include \"particle_softVS\"\n\t#endif\n\t}\n`;\n\nvar particle_softPS$1 = `\n\tfloat depth = getLinearScreenDepth();\n\tfloat particleDepth = vDepth;\n\tfloat depthDiff = saturate(abs(particleDepth - depth) * softening);\n\ta *= depthDiff;\n`;\n\nvar particle_softVS$1 = `\n\tvDepth = getLinearDepth(localPos);\n`;\n\nvar particle_stretchVS$1 = `\n\tvec3 moveDir = inVel * stretch;\n\tvec3 posPrev = particlePos - moveDir;\n\tposPrev += particlePosMoved;\n\tvec2 centerToVertexV = normalize((mat3(matrix_view) * localPos).xy);\n\tfloat interpolation = dot(-velocityV, centerToVertexV) * 0.5 + 0.5;\n\tparticlePos = mix(particlePos, posPrev, interpolation);\n`;\n\nvar particle_TBNVS$1 = `\n\tmat3 rot3 = mat3(rotMatrix[0][0], rotMatrix[0][1], 0.0, rotMatrix[1][0], rotMatrix[1][1], 0.0, 0.0, 0.0, 1.0);\n\tParticleMat = mat3(-matrix_viewInverse[0].xyz, -matrix_viewInverse[1].xyz, matrix_viewInverse[2].xyz) * rot3;\n`;\n\nvar particle_wrapVS$1 = `\n\tvec3 origParticlePos = particlePos;\n\tparticlePos -= matrix_model[3].xyz;\n\tparticlePos = mod(particlePos, wrapBounds) - wrapBounds * 0.5;\n\tparticlePos += matrix_model[3].xyz;\n\tparticlePosMoved = particlePos - origParticlePos;\n`;\n\nconst particleChunksGLSL = {\n\t\tparticlePS: particlePS$1,\n\t\tparticleVS: particleVS$1,\n\t\tparticleAnimFrameClampVS: particleAnimFrameClampVS$1,\n\t\tparticleAnimFrameLoopVS: particleAnimFrameLoopVS$1,\n\t\tparticleAnimTexVS: particleAnimTexVS$1,\n\t\tparticleInputFloatPS: particleInputFloatPS$1,\n\t\tparticleInputRgba8PS: particleInputRgba8PS$1,\n\t\tparticleOutputFloatPS: particleOutputFloatPS$1,\n\t\tparticleOutputRgba8PS: particleOutputRgba8PS$1,\n\t\tparticleUpdaterAABBPS: particleUpdaterAABBPS$1,\n\t\tparticleUpdaterEndPS: particleUpdaterEndPS$1,\n\t\tparticleUpdaterInitPS: particleUpdaterInitPS$1,\n\t\tparticleUpdaterNoRespawnPS: particleUpdaterNoRespawnPS$1,\n\t\tparticleUpdaterOnStopPS: particleUpdaterOnStopPS$1,\n\t\tparticleUpdaterRespawnPS: particleUpdaterRespawnPS$1,\n\t\tparticleUpdaterSpherePS: particleUpdaterSpherePS$1,\n\t\tparticleUpdaterStartPS: particleUpdaterStartPS$1,\n\t\tparticle_billboardVS: particle_billboardVS$1,\n\t\tparticle_blendAddPS: particle_blendAddPS$1,\n\t\tparticle_blendMultiplyPS: particle_blendMultiplyPS$1,\n\t\tparticle_blendNormalPS: particle_blendNormalPS$1,\n\t\tparticle_cpuVS: particle_cpuVS$1,\n\t\tparticle_cpu_endVS: particle_cpu_endVS$1,\n\t\tparticle_customFaceVS: particle_customFaceVS$1,\n\t\tparticle_endPS: particle_endPS$1,\n\t\tparticle_endVS: particle_endVS$1,\n\t\tparticle_halflambertPS: particle_halflambertPS$1,\n\t\tparticle_initVS: particle_initVS$1,\n\t\tparticle_lambertPS: particle_lambertPS$1,\n\t\tparticle_lightingPS: particle_lightingPS$1,\n\t\tparticle_localShiftVS: particle_localShiftVS$1,\n\t\tparticle_meshVS: particle_meshVS$1,\n\t\tparticle_normalVS: particle_normalVS$1,\n\t\tparticle_normalMapPS: particle_normalMapPS$1,\n\t\tparticle_pointAlongVS: particle_pointAlongVS$1,\n\t\tparticle_simulationPS: particle_simulationPS$1,\n\t\tparticle_shaderPS: particle_shaderPS$1,\n\t\tparticle_shaderVS: particle_shaderVS$1,\n\t\tparticle_softPS: particle_softPS$1,\n\t\tparticle_softVS: particle_softVS$1,\n\t\tparticle_stretchVS: particle_stretchVS$1,\n\t\tparticle_TBNVS: particle_TBNVS$1,\n\t\tparticle_wrapVS: particle_wrapVS$1\n};\n\nvar particlePS = `\nvarying texCoordsAlphaLife: vec4f;\nvar colorMap: texture_2d<f32>;\nvar colorMapSampler: sampler;\nvar colorParam: texture_2d<f32>;\nvar colorParamSampler: sampler;\nuniform graphSampleSize: f32;\nuniform graphNumSamples: f32;\n#ifndef CAMERAPLANES\n\t#define CAMERAPLANES\n\tuniform camera_params: vec4f;\n#endif\n#ifdef SOFT\n\tuniform softening: f32;\n#endif\nuniform colorMult: f32;\nfn saturate(x: f32) -> f32 {\n\treturn clamp(x, 0.0, 1.0);\n}\n@fragment\nfn fragmentMain(input: FragmentInput) -> FragmentOutput {\n\tvar output: FragmentOutput;\n\tlet tex: vec4f  = textureSample(colorMap, colorMapSampler, vec2f(input.texCoordsAlphaLife.x, 1.0 - input.texCoordsAlphaLife.y));\n\tvar ramp: vec4f = textureSample(colorParam, colorParamSampler, vec2f(input.texCoordsAlphaLife.w, 0.0));\n\tramp = vec4f(ramp.rgb * uniform.colorMult, ramp.a);\n\tramp.a = ramp.a + input.texCoordsAlphaLife.z;\n\tvar rgb: vec3f = tex.rgb * ramp.rgb;\n\tvar a: f32 = tex.a * ramp.a;\n`;\n\nvar particleVS = `\nfn unpack3NFloats(src: f32) -> vec3f {\n\tlet r = fract(src);\n\tlet g = fract(src * 256.0);\n\tlet b = fract(src * 65536.0);\n\treturn vec3f(r, g, b);\n}\nfn saturate(x: f32) -> f32 {\n\treturn clamp(x, 0.0, 1.0);\n}\nstruct TexLerpUnpackResult {\n\tresult: vec4f,\n\tunpacked: vec3f\n}\nfn tex1Dlod_lerp_simple(tex: texture_2d<f32>, textureSize: vec2u, tc: vec2f) -> vec4f {\n\tlet tc_next = tc + vec2f(uniform.graphSampleSize);\n\tlet texelA: vec2i = vec2i(tc * vec2f(textureSize));\n\tlet texelB: vec2i = vec2i(tc_next * vec2f(textureSize));\n\treturn mix( textureLoad(tex, texelA, 0), textureLoad(tex, texelB, 0), fract(tc.x * uniform.graphNumSamples) );\n}\nfn tex1Dlod_lerp_unpack(tex: texture_2d<f32>, textureSize: vec2u, tc: vec2f) -> TexLerpUnpackResult {\n\tlet tc_next = tc + vec2f(uniform.graphSampleSize);\n\tlet texelA: vec2i = vec2i(tc * vec2f(textureSize));\n\tlet texelB: vec2i = vec2i(tc_next * vec2f(textureSize));\n\tlet a = textureLoad(tex, texelA, 0);\n\tlet b = textureLoad(tex, texelB, 0);\n\tlet c = fract(tc.x * uniform.graphNumSamples);\n\tlet unpackedA = unpack3NFloats(a.w);\n\tlet unpackedB = unpack3NFloats(b.w);\n\tlet w_out = mix(unpackedA, unpackedB, c);\n\treturn TexLerpUnpackResult(mix(a, b, c), w_out);\n}\nstruct RotateResult {\n\trotatedVec: vec2f,\n\tmatrix: mat2x2f\n}\nfn rotateWithMatrix(quadXY: vec2f, pRotation: f32) -> RotateResult {\n\tlet c = cos(pRotation);\n\tlet s = sin(pRotation);\n\tlet m = mat2x2f(vec2f(c, -s), vec2f(s, c));\n\treturn RotateResult(m * quadXY, m);\n}\nfn billboard(InstanceCoords: vec3f, quadXY: vec2f) -> vec3f {\n\tvar pos: vec3f;\n\t#ifdef SCREEN_SPACE\n\t\tpos = vec3f(-1.0, 0.0, 0.0) * quadXY.x + vec3f(0.0, -1.0, 0.0) * quadXY.y;\n\t#else\n\t\tpos = -uniform.matrix_viewInverse[0].xyz * quadXY.x + -uniform.matrix_viewInverse[1].xyz * quadXY.y;\n\t#endif\n\treturn pos;\n}\nfn customFace(InstanceCoords: vec3f, quadXY: vec2f) -> vec3f {\n\tlet pos = uniform.faceTangent * quadXY.x + uniform.faceBinorm * quadXY.y;\n\treturn pos;\n}\nfn safeNormalize(v: vec2f) -> vec2f {\n\tlet l = length(v);\n\treturn select(v, v / l, l > 1e-06);\n}\n@vertex\nfn vertexMain(input: VertexInput) -> VertexOutput {\n\tvar output: VertexOutput;\n\tlet meshLocalPos_in = input.particle_vertexData.xyz;\n\tlet id = floor(input.particle_vertexData.w);\n\tlet rndFactor = fract(sin(id + 1.0 + uniform.seed));\n\tlet rndFactor3 = vec3f(rndFactor, fract(rndFactor*10.0), fract(rndFactor*100.0));\n\tlet uv = id / uniform.numParticlesPot;\n\treadInput(uv);\n\t#ifdef LOCAL_SPACE\n\t\tlet modelRotation = mat3x3f(uniform.matrix_model[0].xyz, uniform.matrix_model[1].xyz, uniform.matrix_model[2].xyz);\n\t\tinVel = modelRotation * inVel;\n\t#endif\n\tlet viewRotation = mat3x3f(uniform.matrix_view[0].xyz, uniform.matrix_view[1].xyz, uniform.matrix_view[2].xyz);\n\tlet velocityV = safeNormalize((viewRotation * inVel).xy);\n\tlet particleLifetime = uniform.lifetime;\n\tvar meshLocalPos = meshLocalPos_in;\n\tif (inLife <= 0.0 || inLife > particleLifetime || !inShow) {\n\t\t meshLocalPos = vec3f(0.0);\n\t}\n\tlet quadXY = meshLocalPos.xy;\n\tlet nlife = clamp(inLife / particleLifetime, 0.0, 1.0);\n\tlet internalTexSize = textureDimensions(internalTex2, 0);\n\tlet lerp_result = tex1Dlod_lerp_unpack(internalTex2, internalTexSize, vec2f(nlife, 0.0));\n\tlet params = lerp_result.result;\n\tlet paramDiv = lerp_result.unpacked;\n\tvar scale = params.y;\n\tlet scaleDiv = paramDiv.x;\n\tlet alphaDiv = paramDiv.z;\n\tscale = scale + (scaleDiv * 2.0 - 1.0) * uniform.scaleDivMult * fract(rndFactor*10000.0);\n\t#ifndef USE_MESH\n\t\toutput.texCoordsAlphaLife = vec4f(quadXY * -0.5 + 0.5, (alphaDiv * 2.0 - 1.0) * uniform.alphaDivMult * fract(rndFactor*1000.0), nlife);\n\t#else\n\t\toutput.texCoordsAlphaLife = vec4f(particle_uv, (alphaDiv * 2.0 - 1.0) * uniform.alphaDivMult * fract(rndFactor*1000.0), nlife);\n\t#endif\n\tvar particlePos = inPos;\n\tvar particlePosMoved = vec3f(0.0);\n\tvar rotMatrix: mat2x2f;\n`;\n\nvar particleAnimFrameClampVS = `\n\tlet animFrame: f32 = min(floor(input.texCoordsAlphaLife.w * uniform.animTexParams.y) + uniform.animTexParams.x, uniform.animTexParams.z);\n`;\n\nvar particleAnimFrameLoopVS = `\n\tlet animFrame: f32 = floor((output.texCoordsAlphaLife.w * uniform.animTexParams.y + uniform.animTexParams.x) % (uniform.animTexParams.z + 1.0));\t\n`;\n\nvar particleAnimTexVS = `\n\tvar animationIndex: f32;\n\tif (uniform.animTexIndexParams.y == 1.0) {\n\t\tanimationIndex = floor((uniform.animTexParams.w + 1.0) * rndFactor3.z) * (uniform.animTexParams.z + 1.0);\n\t} else {\n\t\tanimationIndex = uniform.animTexIndexParams.x * (uniform.animTexParams.z + 1.0);\n\t}\n\tvar atlasX: f32 = (animationIndex + animFrame) * uniform.animTexTilesParams.x;\n\tlet atlasY: f32 = 1.0 - floor(atlasX + 1.0) * uniform.animTexTilesParams.y;\n\tatlasX = fract(atlasX);\n\tlet current_tcal_xy = output.texCoordsAlphaLife.xy;\n\tlet scaled_tcal_xy = current_tcal_xy * uniform.animTexTilesParams.xy;\n\tlet final_tcal_xy = scaled_tcal_xy + vec2f(atlasX, atlasY);\n\toutput.texCoordsAlphaLife = vec4f(final_tcal_xy, output.texCoordsAlphaLife.z, output.texCoordsAlphaLife.w);\n`;\n\nvar particleInputFloatPS = `\nfn readInput(uv: f32) {\n\tlet textureSize = textureDimensions(particleTexIN, 0);\n\tlet texel0: vec2i = vec2i(vec2f(uv, 0.25) * vec2f(textureSize));\n\tlet texel1: vec2i = vec2i(vec2f(uv, 0.75) * vec2f(textureSize));\n\tlet tex: vec4f = textureLoad(particleTexIN, texel0, 0);\n\tlet tex2: vec4f = textureLoad(particleTexIN, texel1, 0);\n\tinPos = tex.xyz;\n\tinVel = tex2.xyz;\n\tinAngle = abs(tex.w) - 1000.0;\n\tinShow = tex.w >= 0.0;\n\tinLife = tex2.w;\n}\n`;\n\nvar particleInputRgba8PS = `\nconst PI2: f32 = 6.283185307179586;\nuniform inBoundsSize: vec3f;\nuniform inBoundsCenter: vec3f;\nuniform maxVel: f32;\nfn decodeFloatRG(rg: vec2f) -> f32 {\n\treturn rg.y * (1.0 / 255.0) + rg.x;\n}\nfn decodeFloatRGBA( rgba: vec4f ) -> f32 {\n\treturn dot(rgba, vec4f(1.0, 1.0 / 255.0, 1.0 / 65025.0, 1.0 / 160581375.0));\n}\nfn readInput(uv: f32) {\n\tlet textureSize = textureDimensions(particleTexIN, 0);\n\tlet texel0: vec2i = vec2i(vec2f(uv, 0.125) * vec2f(textureSize));\n\tlet texel1: vec2i = vec2i(vec2f(uv, 0.375) * vec2f(textureSize));\n\tlet texel2: vec2i = vec2i(vec2f(uv, 0.625) * vec2f(textureSize));\n\tlet texel3: vec2i = vec2i(vec2f(uv, 0.875) * vec2f(textureSize));\n\tlet tex0 = textureLoad(particleTexIN, texel0, 0);\n\tlet tex1 = textureLoad(particleTexIN, texel1, 0);\n\tlet tex2 = textureLoad(particleTexIN, texel2, 0);\n\tlet tex3 = textureLoad(particleTexIN, texel3, 0);\n\tinPos = vec3f(decodeFloatRG(tex0.rg), decodeFloatRG(tex0.ba), decodeFloatRG(tex1.rg));\n\tinPos = (inPos - vec3f(0.5)) * uniform.inBoundsSize + uniform.inBoundsCenter;\n\tinVel = tex2.xyz;\n\tinVel = (inVel - vec3f(0.5)) * uniform.maxVel;\n\tinAngle = decodeFloatRG(tex1.ba) * PI2;\n\tinShow = tex2.a > 0.5;\n\tlet life_decoded = decodeFloatRGBA(tex3);\n\tlet maxNegLife = max(uniform.lifetime, (uniform.numParticles - 1.0) * (uniform.rate + uniform.rateDiv));\n\tlet maxPosLife = uniform.lifetime + 1.0;\n\tinLife = life_decoded * (maxNegLife + maxPosLife) - maxNegLife;\n}`;\n\nvar particleOutputFloatPS = `\nfn getOutput() -> vec4f {\n\tif (pcPosition.y < 1.0) {\n\t\treturn vec4f(outPos, (outAngle + 1000.0) * visMode);\n\t} else {\n\t\treturn vec4f(outVel, outLife);\n\t}\n}\n`;\n\nvar particleOutputRgba8PS = `\nuniform outBoundsMul: vec3f;\nuniform outBoundsAdd: vec3f;\nfn encodeFloatRG( v: f32 ) -> vec2f {\n\tvar enc: vec2f = vec2f(1.0, 255.0) * v;\n\tenc = fract(enc);\n\tenc = enc - enc.yy * (1.0 / 255.0);\n\treturn enc;\n}\nfn encodeFloatRGBA( v: f32 ) -> vec4f {\n\tlet factors = vec4f(1.0, 255.0, 65025.0, 160581375.0);\n\tvar enc: vec4f = factors * v;\n\tenc = fract(enc);\n\tenc = enc - enc.yzww * vec4f(1.0 / 255.0, 1.0 / 255.0, 1.0 / 255.0, 0.0);\n\treturn enc;\n}\nfn getOutput() -> vec4f {\n\toutPos = outPos * uniform.outBoundsMul + uniform.outBoundsAdd;\n\toutAngle = fract(outAngle / PI2);\n\toutVel = (outVel / uniform.maxVel) + vec3f(0.5);\n\tlet maxNegLife = max(uniform.lifetime, (uniform.numParticles - 1.0) * (uniform.rate + uniform.rateDiv));\n\tlet maxPosLife = uniform.lifetime + 1.0;\n\toutLife = (outLife + maxNegLife) / (maxNegLife + maxPosLife);\n\tif (pcPosition.y < 1.0) {\n\t\treturn vec4f(encodeFloatRG(outPos.x), encodeFloatRG(outPos.y));\n\t} else if (pcPosition.y < 2.0) {\n\t\treturn vec4f(encodeFloatRG(outPos.z), encodeFloatRG(outAngle));\n\t} else if (pcPosition.y < 3.0) {\n\t\treturn vec4f(outVel, visMode * 0.5 + 0.5);\n\t} else {\n\t\treturn encodeFloatRGBA(outLife);\n\t}\n}\n`;\n\nvar particleUpdaterAABBPS = `\nuniform spawnBounds: mat3x3f;\nuniform spawnPosInnerRatio: vec3f;\nfn calcSpawnPosition(inBounds: vec3f, rndFactor: f32) -> vec3f {\n\tvar pos = inBounds - vec3f(0.5);\n\tlet posAbs = abs(pos);\n\tlet maxComp = max(posAbs.x, max(posAbs.y, posAbs.z));\n\tlet maxPos = vec3f(maxComp);\n\tlet edge = maxPos + (vec3f(0.5) - maxPos) * uniform.spawnPosInnerRatio;\n\tpos.x = edge.x * select(2.0 * pos.x, sign(pos.x), maxPos.x == posAbs.x);\n\tpos.y = edge.y * select(2.0 * pos.y, sign(pos.y), maxPos.y == posAbs.y);\n\tpos.z = edge.z * select(2.0 * pos.z, sign(pos.z), maxPos.z == posAbs.z);\n\t#ifndef LOCAL_SPACE\n\t\treturn uniform.emitterPos + uniform.spawnBounds * pos;\n\t#else\n\t\treturn uniform.spawnBounds * pos;\n\t#endif\n}\nfn addInitialVelocity(localVelocity: ptr<function, vec3f>, inBounds: vec3f) {\n\t*localVelocity = *localVelocity - vec3f(0.0, 0.0, uniform.initialVelocity);\n}\n`;\n\nvar particleUpdaterEndPS = `\n\toutput.color = getOutput();\n\treturn output;\n}\n`;\n\nvar particleUpdaterInitPS = `\nvarying vUv0: vec2f;\nvar particleTexIN: texture_2d<uff>;\nvar internalTex0: texture_2d<uff>;\nvar internalTex1: texture_2d<uff>;\nvar internalTex2: texture_2d<uff>;\nvar internalTex3: texture_2d<uff>;\nuniform emitterMatrix: mat3x3f;\nuniform emitterMatrixInv: mat3x3f;\nuniform emitterScale: vec3f;\nuniform emitterPos: vec3f;\nuniform frameRandom: vec3f;\nuniform localVelocityDivMult: vec3f;\nuniform velocityDivMult: vec3f;\nuniform delta: f32;\nuniform rate: f32;\nuniform rateDiv: f32;\nuniform lifetime: f32;\nuniform numParticles: f32;\nuniform rotSpeedDivMult: f32;\nuniform radialSpeedDivMult: f32;\nuniform seed: f32;\nuniform startAngle: f32;\nuniform startAngle2: f32;\nuniform initialVelocity: f32;\nuniform graphSampleSize: f32;\nuniform graphNumSamples: f32;\nvar<private> inPos: vec3f;\nvar<private> inVel: vec3f;\nvar<private> inAngle: f32;\nvar<private> inShow: bool;\nvar<private> inLife: f32;\nvar<private> visMode: f32;\nvar<private> outPos: vec3f;\nvar<private> outVel: vec3f;\nvar<private> outAngle: f32;\nvar<private> outShow: bool;\nvar<private> outLife: f32;\n`;\n\nvar particleUpdaterNoRespawnPS = `\n\tif (outLife >= uniform.lifetime) {\n\t\toutLife = outLife - max(uniform.lifetime, (uniform.numParticles - 1.0) * particleRate);\n\t\tvisMode = -1.0;\n\t}\n`;\n\nvar particleUpdaterOnStopPS = `\n\tvisMode = select(visMode, -1.0, outLife < 0.0);\n`;\n\nvar particleUpdaterRespawnPS = `\n\tif (outLife >= uniform.lifetime) {\n\t\tlet subtractAmount = max(uniform.lifetime, (uniform.numParticles - 1.0) * particleRate);\n\t\toutLife = outLife - subtractAmount;\n\t\tvisMode = 1.0;\n\t}\n\tvisMode = select(visMode, 1.0, outLife < 0.0);\n`;\n\nvar particleUpdaterSpherePS = `\nuniform spawnBoundsSphere: f32;\nuniform spawnBoundsSphereInnerRatio: f32;\nfn calcSpawnPosition(inBounds: vec3f, rndFactor: f32) -> vec3f {\n\tlet rnd4: f32 = fract(rndFactor * 1000.0);\n\tlet norm: vec3f = normalize(inBounds.xyz - vec3f(0.5));\n\tlet r: f32 = rnd4 * (1.0 - uniform.spawnBoundsSphereInnerRatio) + uniform.spawnBoundsSphereInnerRatio;\n\t#ifndef LOCAL_SPACE\n\t\treturn uniform.emitterPos + norm * r * uniform.spawnBoundsSphere;\n\t#else\n\t\treturn norm * r * uniform.spawnBoundsSphere;\n\t#endif\n}\nfn addInitialVelocity(localVelocity: ptr<function, vec3f>, inBounds: vec3f) {\n\tlet initialVelOffset: vec3f = normalize(inBounds - vec3f(0.5)) * uniform.initialVelocity;\n\t*localVelocity = *localVelocity + initialVelOffset;\n}\n`;\n\nvar particleUpdaterStartPS = `\nfn saturate(x: f32) -> f32 {\n\treturn clamp(x, 0.0, 1.0);\n}\nfn unpack3NFloats(src: f32) -> vec3f {\n\tlet r = fract(src);\n\tlet g = fract(src * 256.0);\n\tlet b = fract(src * 65536.0);\n\treturn vec3f(r, g, b);\n}\nstruct TexLerpUnpackResult {\n\tresult: vec3f,\n\tunpacked: vec3f\n}\nfn tex1Dlod_lerp(tex: texture_2d<f32>, textureSize: vec2u, tc: vec2f) -> TexLerpUnpackResult {\n\tlet tc_next = tc + vec2f(uniform.graphSampleSize);\n\tlet texelA: vec2i = vec2i(tc * vec2f(textureSize));\n\tlet texelB: vec2i = vec2i(tc_next * vec2f(textureSize));\n\tlet a = textureLoad(tex, texelA, 0);\n\tlet b = textureLoad(tex, texelB, 0);\n\tlet c = fract(tc.x * uniform.graphNumSamples);\n\tlet unpackedA = unpack3NFloats(a.w);\n\tlet unpackedB = unpack3NFloats(b.w);\n\tlet w_out = mix(unpackedA, unpackedB, c);\n\treturn TexLerpUnpackResult(mix(a.xyz, b.xyz, c), w_out);\n}\nconst HASHSCALE4: vec4f = vec4f(1031.0, 0.1030, 0.0973, 0.1099);\nfn hash41(p: f32) -> vec4f {\n\tvar p4 = fract(vec4f(p) * HASHSCALE4);\n\tp4 = p4 + dot(p4, p4.wzxy + 19.19);\n\treturn fract(vec4f((p4.x + p4.y)*p4.z, (p4.x + p4.z)*p4.y, (p4.y + p4.z)*p4.w, (p4.z + p4.w)*p4.x));\n}\n@fragment\nfn fragmentMain(input : FragmentInput) -> FragmentOutput {\n\tvar output: FragmentOutput;\n\tif (pcPosition.x > uniform.numParticles) {\n\t\tdiscard;\n\t\treturn output;\n\t}\n\treadInput(input.vUv0.x);\n\tvisMode = select(-1.0, 1.0, inShow);\n\tlet rndFactor = hash41(pcPosition.x + uniform.seed);\n\tlet particleRate = uniform.rate + uniform.rateDiv * rndFactor.x;\n\toutLife = inLife + uniform.delta;\n\tlet nlife = clamp(outLife / uniform.lifetime, 0.0, 1.0);\n\tlet internalTexSize = textureDimensions(internalTex0, 0);\n\tlet lerpResult0 = tex1Dlod_lerp(internalTex0, internalTexSize, vec2f(nlife, 0.0));\n\tvar localVelocity = lerpResult0.result;\n\tlet localVelocityDiv = lerpResult0.unpacked;\n\tlet lerpResult1 = tex1Dlod_lerp(internalTex1, internalTexSize, vec2f(nlife, 0.0));\n\tvar velocity = lerpResult1.result;\n\tlet velocityDiv = lerpResult1.unpacked;\n\tlet lerpResult2 = tex1Dlod_lerp(internalTex2, internalTexSize, vec2f(nlife, 0.0));\n\tlet params = lerpResult2.result;\n\tlet paramDiv = lerpResult2.unpacked;\n\tvar rotSpeed = params.x;\n\tlet rotSpeedDiv = paramDiv.y;\n\tlet lerpResult3 = tex1Dlod_lerp(internalTex3, internalTexSize, vec2f(nlife, 0.0));\n\tlet radialParams = lerpResult3.result;\n\tlet radialParamDiv = lerpResult3.unpacked;\n\tlet radialSpeed = radialParams.x;\n\tlet radialSpeedDiv = radialParamDiv.y;\n\tlet respawn = inLife <= 0.0 || outLife >= uniform.lifetime;\n\tinPos = select(inPos, calcSpawnPosition(rndFactor.xyz, rndFactor.x), respawn);\n\tinAngle = select(inAngle, mix(uniform.startAngle, uniform.startAngle2, rndFactor.x), respawn);\n\t#ifndef LOCAL_SPACE\n\t\tvar radialVel: vec3f = inPos - uniform.emitterPos;\n\t#else\n\t\tvar radialVel: vec3f = inPos;\n\t#endif\n\tradialVel = select(vec3f(0.0), radialSpeed * normalize(radialVel), dot(radialVel, radialVel) > 1.0E-8);\n\tradialVel = radialVel + (radialSpeedDiv * vec3f(2.0) - vec3f(1.0)) * uniform.radialSpeedDivMult * rndFactor.xyz;\n\tlocalVelocity = localVelocity + (localVelocityDiv * vec3f(2.0) - vec3f(1.0)) * uniform.localVelocityDivMult * rndFactor.xyz;\n\tvelocity = velocity + (velocityDiv * vec3f(2.0) - vec3f(1.0)) * uniform.velocityDivMult * rndFactor.xyz;\n\trotSpeed = rotSpeed + (rotSpeedDiv * 2.0 - 1.0) * uniform.rotSpeedDivMult * rndFactor.y;\n\taddInitialVelocity(&localVelocity, rndFactor.xyz);\n\t#ifndef LOCAL_SPACE\n\t\toutVel = uniform.emitterMatrix * localVelocity + (radialVel + velocity) * uniform.emitterScale;\n\t#else\n\t\toutVel = (localVelocity + radialVel) / uniform.emitterScale + uniform.emitterMatrixInv * velocity;\n\t#endif\n\toutPos = inPos + outVel * uniform.delta;\n\toutAngle = inAngle + rotSpeed * uniform.delta;\n`;\n\nvar particle_billboardVS = `\n\tlet rotationResult = rotateWithMatrix(quadXY, inAngle);\n\tlet rotatedQuadXY = rotationResult.rotatedVec;\n\trotMatrix = rotationResult.matrix;\n\tvar localPos = billboard(particlePos, rotatedQuadXY);\n`;\n\nvar particle_blendAddPS = `\n\tdBlendModeFogFactor = 0.0;\n\trgb = rgb * saturate(gammaCorrectInput(max(a, 0.0)));\n\tif ((rgb.r + rgb.g + rgb.b) < 0.000001) {\n\t\tdiscard;\n\t}\t\n`;\n\nvar particle_blendMultiplyPS = `\n\trgb = mix(vec3f(1.0), rgb, a);\n\tif ((rgb.r + rgb.g + rgb.b) > 2.99) {\n\t\tdiscard;\n\t}\n`;\n\nvar particle_blendNormalPS = `\n\tif (a < 0.01) {\n\t\tdiscard;\n\t}\n`;\n\nvar particle_cpuVS = `\nattribute particle_vertexData: vec4f;\nattribute particle_vertexData2: vec4f;\nattribute particle_vertexData3: vec4f;\nattribute particle_vertexData4: f32;\n#ifndef USE_MESH\n\tattribute particle_vertexData5: vec2f;\n#else\n\tattribute particle_vertexData5: vec4f;\n#endif\nuniform matrix_viewProjection: mat4x4f;\nuniform matrix_model: mat4x4f;\n#ifndef VIEWMATRIX\n\t#define VIEWMATRIX\n\tuniform matrix_view: mat4x4f;\n#endif\nuniform matrix_normal: mat3x3f;\nuniform matrix_viewInverse: mat4x4f;\nuniform numParticles: f32;\nuniform lifetime: f32;\nuniform stretch: f32;\nuniform seed: f32;\nuniform emitterScale: vec3f;\nuniform faceTangent: vec3f;\nuniform faceBinorm: vec3f;\n#ifdef PARTICLE_GPU\n\t#ifdef WRAP\n\t\tuniform wrapBounds: vec3f;\n\t#endif\n#endif\n#ifdef PARTICLE_GPU\n\tvar internalTex0: texture_2d<uff>;\n\tvar internalTex1: texture_2d<uff>;\n\tvar internalTex2: texture_2d<uff>;\n#endif\nuniform emitterPos: vec3f;\nvarying texCoordsAlphaLife: vec4f;\nstruct RotateResult {\n\trotatedVec: vec2f,\n\tmatrix: mat2x2f\n}\nfn rotateWithMatrix(quadXY: vec2f, pRotation: f32) -> RotateResult {\n\tlet c = cos(pRotation);\n\tlet s = sin(pRotation);\n\tlet m = mat2x2f(vec2f(c, -s), vec2f(s, c));\n\treturn RotateResult(m * quadXY, m);\n}\nfn billboard(InstanceCoords: vec3f, quadXY: vec2f) -> vec3f {\n\tlet pos = -uniform.matrix_viewInverse[0].xyz * quadXY.x + -uniform.matrix_viewInverse[1].xyz * quadXY.y;\n\treturn pos;\n}\nfn customFace(InstanceCoords: vec3f, quadXY: vec2f) -> vec3f {\n\tlet pos = uniform.faceTangent * quadXY.x + uniform.faceBinorm * quadXY.y;\n\treturn pos;\n}\nfn safeNormalize(v: vec2f) -> vec2f {\n\tlet l = length(v);\n\treturn select(v, v / l, l > 1e-06);\n}\n@vertex\nfn vertexMain(input: VertexInput) -> VertexOutput {\n\tvar output: VertexOutput;\n\tvar particlePos = input.particle_vertexData.xyz;\n\tlet inPos = particlePos;\n\tlet vertPos = input.particle_vertexData3.xyz;\n\tvar inVel = vec3f(input.particle_vertexData2.w, input.particle_vertexData3.w, input.particle_vertexData5.x);\n\tlet id = floor(input.particle_vertexData4);\n\tlet rndFactor = fract(sin(id + 1.0 + uniform.seed));\n\tlet rndFactor3 = vec3f(rndFactor, fract(rndFactor*10.0), fract(rndFactor*100.0));\n\t#ifdef LOCAL_SPACE\n\t\tlet modelRotation = mat3x3f(uniform.matrix_model[0].xyz, uniform.matrix_model[1].xyz, uniform.matrix_model[2].xyz);\n\t\tinVel = modelRotation * inVel;\n\t#endif\n\tlet velocityV = safeNormalize((mat3x3f(uniform.matrix_view[0].xyz, uniform.matrix_view[1].xyz, uniform.matrix_view[2].xyz) * inVel).xy);\n\tlet quadXY = vertPos.xy;\n\t#ifdef USE_MESH\n\t\toutput.texCoordsAlphaLife = vec4f(input.particle_vertexData5.zw, input.particle_vertexData2.z, input.particle_vertexData.w);\n\t#else\n\t\toutput.texCoordsAlphaLife = vec4f(quadXY * -0.5 + 0.5, input.particle_vertexData2.z, input.particle_vertexData.w);\n\t#endif\n\tvar rotMatrix: mat2x2f;\n\tvar inAngle = input.particle_vertexData2.x;\n\tvar particlePosMoved = vec3f(0.0);\n\tlet meshLocalPos = input.particle_vertexData3.xyz;\n`;\n\nvar particle_cpu_endVS = `\n\tlocalPos = localPos * input.particle_vertexData2.y * uniform.emitterScale;\n\tlocalPos = localPos + particlePos;\n\toutput.position = uniform.matrix_viewProjection * vec4f(localPos, 1.0);\n`;\n\nvar particle_customFaceVS = `\n\tlet rotationResult = rotateWithMatrix(quadXY, inAngle);\n\tlet rotatedQuadXY = rotationResult.rotatedVec;\n\trotMatrix = rotationResult.matrix;\n\tvar localPos = customFace(particlePos, rotatedQuadXY);\n`;\n\nvar particle_endPS = `\n\trgb = addFog(rgb);\n\trgb = toneMap(rgb);\n\trgb = gammaCorrectOutput(rgb);\n\toutput.color = vec4f(rgb, a);\n\treturn output;\n}\n`;\n\nvar particle_endVS = `\n\tlocalPos = localPos * scale * uniform.emitterScale;\n\tlocalPos = localPos + particlePos;\n\t#ifdef SCREEN_SPACE\n\t\toutput.position = vec4f(localPos.x, localPos.y, 0.0, 1.0);\n\t#else\n\t\toutput.position = uniform.matrix_viewProjection * vec4f(localPos.xyz, 1.0);\n\t#endif\n`;\n\nvar particle_halflambertPS = `\n\tvar negNormal: vec3f = normal * 0.5 + 0.5;\n\tvar posNormal: vec3f = -normal * 0.5 + 0.5;\n\tnegNormal = negNormal * negNormal;\n\tposNormal = posNormal * posNormal;\n`;\n\nvar particle_initVS = `\nattribute particle_vertexData: vec4f;\n#if defined(USE_MESH)\n\t#if defined(USE_MESH_UV)\n\t\tattribute particle_uv: vec2f;\n\t#else\n\t\tvar<private> particle_uv: vec2f = vec2f(0.0, 0.0);\n\t#endif\n#endif\nuniform matrix_viewProjection: mat4x4f;\nuniform matrix_model: mat4x4f;\nuniform matrix_normal: mat3x3f;\nuniform matrix_viewInverse: mat4x4f;\n#ifndef VIEWMATRIX\n\t#define VIEWMATRIX\n\tuniform matrix_view: mat4x4f;\n#endif\nuniform numParticles: f32;\nuniform numParticlesPot: f32;\nuniform graphSampleSize: f32;\nuniform graphNumSamples: f32;\nuniform stretch: f32;\nuniform emitterScale: vec3f;\nuniform emitterPos: vec3f;\nuniform faceTangent: vec3f;\nuniform faceBinorm: vec3f;\nuniform rate: f32;\nuniform rateDiv: f32;\nuniform lifetime: f32;\nuniform scaleDivMult: f32;\nuniform alphaDivMult: f32;\nuniform seed: f32;\nuniform delta: f32;\n#ifdef PARTICLE_GPU\n\t#ifdef WRAP\n\t\tuniform wrapBounds: vec3f;\n\t#endif\n#endif\nvar particleTexOUT: texture_2d<uff>;\nvar particleTexIN: texture_2d<uff>;\n#ifdef PARTICLE_GPU\n\tvar internalTex0: texture_2d<uff>;\n\tvar internalTex1: texture_2d<uff>;\n\tvar internalTex2: texture_2d<uff>;\n#endif\n#ifndef CAMERAPLANES\n\t#define CAMERAPLANES\n\tuniform camera_params: vec4f;\n#endif\nvarying texCoordsAlphaLife: vec4f;\nvar<private> inPos: vec3f;\nvar<private> inVel: vec3f;\nvar<private> inAngle: f32;\nvar<private> inShow: bool;\nvar<private> inLife: f32;\n`;\n\nvar particle_lambertPS = `\n\tvar negNormal: vec3f = max(normal, vec3(0.0));\n\tvar posNormal: vec3f = max(-normal, vec3(0.0));\n`;\n\nvar particle_lightingPS = `\n\tlet light: vec3f = negNormal.x * uniform.lightCube[0] + posNormal.x * uniform.lightCube[1] +\n\t\t\t\t\t   negNormal.y * uniform.lightCube[2] + posNormal.y * uniform.lightCube[3] +\n\t\t\t\t\t   negNormal.z * uniform.lightCube[4] + posNormal.z * uniform.lightCube[5];\n\trgb = rgb * light;\n`;\n\nvar particle_localShiftVS = `\nparticlePos = (uniform.matrix_model * vec4f(particlePos, 1.0)).xyz;\n`;\n\nvar particle_meshVS = `\nvar localPos = meshLocalPos;\nlet rotResultXY = rotateWithMatrix(localPos.xy, inAngle);\nlocalPos = vec3f(rotResultXY.rotatedVec, localPos.z);\nrotMatrix = rotResultXY.matrix;\nlet rotResultYZ = rotateWithMatrix(localPos.yz, inAngle);\nlocalPos = vec3f(localPos.x, rotResultYZ.rotatedVec);\nrotMatrix = rotResultYZ.matrix;\nbillboard(particlePos, quadXY);\n`;\n\nvar particle_normalVS = `\noutput.Normal = normalize(localPos + uniform.matrix_viewInverse[2].xyz);\n`;\n\nvar particle_normalMapPS = `\n\tlet sampledNormal: vec4f = textureSample(normalMap, normalMapSampler, vec2f(input.texCoordsAlphaLife.x, 1.0 - input.texCoordsAlphaLife.y));\n\tlet normalMap: vec3f = normalize(sampledNormal.xyz * 2.0 - 1.0);\n\tlet ParticleMat = mat3x3<f32>(ParticleMat0, ParticleMat1, ParticleMat2);\n\tlet normal: vec3f = ParticleMat * normalMap;\n`;\n\nvar particle_pointAlongVS = `\n\tinAngle = atan2(velocityV.x, velocityV.y);\n`;\n\nvar particle_simulationPS = `\n\t#include \"particleUpdaterInitPS\"\n\t#ifdef PACK8\n\t\t#include \"particleInputRgba8PS\"\n\t\t#include \"particleOutputRgba8PS\"\n\t#else\n\t\t#include \"particleInputFloatPS\"\n\t\t#include \"particleOutputFloatPS\"\n\t#endif\n\t#ifdef EMITTERSHAPE_BOX\n\t\t#include \"particleUpdaterAABBPS\"\n\t#else\n\t\t#include \"particleUpdaterSpherePS\"\n\t#endif\n\t#include \"particleUpdaterStartPS\"\n\t#ifdef RESPAWN\n\t\t#include \"particleUpdaterRespawnPS\"\n\t#endif\n\t#ifdef NO_RESPAWN\n\t\t#include \"particleUpdaterNoRespawnPS\"\n\t#endif\n\t#ifdef ON_STOP\n\t\t#include \"particleUpdaterOnStopPS\"\n\t#endif\n\t#include \"particleUpdaterEndPS\"\n`;\n\nvar particle_shaderPS = `\n\t#if NORMAL != NONE\n\t\t#if NORMAL == VERTEX\n\t\t\tvarying Normal: vec3f;\n\t\t#endif\n\t\t#if NORMAL == MAP\n\t\t\tvarying ParticleMat0: vec3f;\n\t\t\tvarying ParticleMat1: vec3f;\n\t\t\tvarying ParticleMat2: vec3f;\n\t\t#endif\n\t\tuniform lightCube: array<vec3f, 6>;\n\t#endif\n\t#ifdef SOFT\n\t\tvarying vDepth: f32;\n\t\t#include \"screenDepthPS\"\n\t#endif\n\t#include \"gammaPS\"\n\t#include \"tonemappingPS\"\n\t#include \"fogPS\"\n\t#if NORMAL == MAP\n\t\tvar normalMap: texture_2d<f32>;\n\t\tvar normalMapSampler: sampler;\n\t#endif\n\t#include \"particlePS\"\n\t#ifdef SOFT\n\t\t#include \"particle_softPS\"\n\t#endif\n\t#if NORMAL == VERTEX\n\t\tvar normal: vec3f = Normal;\n\t#endif\n\t#if NORMAL == MAP\n\t\t#include \"particle_normalMapPS\"\n\t#endif\n\t#if NORMAL != NONE\n\t\t#ifdef HALF_LAMBERT\n\t\t\t#include \"particle_halflambertPS\"\n\t\t#else\n\t\t\t#include \"particle_lambertPS\"\n\t\t#endif\n\t\t#include \"particle_lightingPS\"\n\t#endif\n\t#if BLEND == NORMAL\n\t\t#include \"particle_blendNormalPS\"\n\t#elif BLEND == ADDITIVE\n\t\t#include \"particle_blendAddPS\"\n\t#elif BLEND == MULTIPLICATIVE\n\t\t#include \"particle_blendMultiplyPS\"\n\t#endif\n\t#include \"particle_endPS\"\n`;\n\nvar particle_shaderVS = `\n\t#ifdef ANIMTEX\n\t\tuniform animTexTilesParams: vec2f;\n\t\tuniform animTexParams: vec4f;\n\t\tuniform animTexIndexParams: vec2f;\n\t#endif\n\t#if NORMAL == MAP\n\t\tvarying ParticleMat0: vec3f;\n\t\tvarying ParticleMat1: vec3f;\n\t\tvarying ParticleMat2: vec3f;\n\t#endif\n\t#if NORMAL == VERTEX\n\t\tvarying Normal: vec3f;\n\t#endif\n\t#ifdef SOFT\n\t\tvarying vDepth: f32;\n\t#endif\n\t#ifdef PARTICLE_GPU\n\t\t#include \"particle_initVS\"\n\t\t#ifdef PACK8\n\t\t\t#include \"particleInputRgba8PS\"\n\t\t#else\n\t\t\t#include  \"particleInputFloatPS\"\n\t\t#endif\n\t\t#ifdef SOFT\n\t\t\t#include \"screenDepthPS\"\n\t\t#endif\n\t\t#include \"particleVS\"\n\t#else\n\t\t#ifdef SOFT\n\t\t\t#include \"screenDepthPS\"\n\t\t#endif\n\t\t#include \"particle_cpuVS\"\n\t#endif\n\t#ifdef LOCAL_SPACE\n\t\t#include \"particle_localShiftVS\"\n\t#endif\n\t#ifdef ANIMTEX\n\t\t#ifdef ANIMTEX_LOOP\n\t\t\t#include \"particleAnimFrameLoopVS\"\n\t\t#else\n\t\t\t#include \"particleAnimFrameClampVS\"\n\t\t#endif\n\t\t#include \"particleAnimTexVS\"\n\t#endif\n\t#ifdef PARTICLE_GPU\n\t\t#ifdef WRAP\n\t\t\t#include \"particle_wrapVS\"\n\t\t#endif\n\t#endif\n\t#ifdef ALIGN_TO_MOTION\n\t\t#include \"particle_pointAlongVS\"\n\t#endif\n\t#ifdef USE_MESH\n\t\t#include \"particle_meshVS\"\n\t#else\n\t\t#ifdef CUSTOM_FACE\n\t\t\t#include \"particle_customFaceVS\"\n\t\t#else\n\t\t\t#include \"particle_billboardVS\"\n\t\t#endif\n\t#endif\n\t#if NORMAL == VERTEX\n\t\t#include \"particle_normalVS\"\n\t#endif\n\t#if NORMAL == MAP\n\t\t#include \"particle_TBNVS\"\n\t#endif\n\t#ifdef STRETCH\n\t\t#include \"particle_stretchVS\"\n\t#endif\n\t#ifdef PARTICLE_GPU\n\t\t#include \"particle_endVS\"\n\t#else\n\t\t#include \"particle_cpu_endVS\"\n\t#endif\n\t#ifdef SOFT\n\t\t#include \"particle_softVS\"\n\t#endif\n\treturn output;\n}\n`;\n\nvar particle_softPS = `\n\tvar depth: f32 = getLinearScreenDepthFrag();\n\tvar particleDepth: f32 = vDepth;\n\tvar depthDiff: f32 = saturate(abs(particleDepth - depth) * uniform.softening);\n\ta = a * depthDiff;\n`;\n\nvar particle_softVS = `\n\toutput.vDepth = getLinearDepth(localPos);\n`;\n\nvar particle_stretchVS = `\n\tlet moveDir: vec3f = inVel * uniform.stretch;\n\tvar posPrev: vec3f = particlePos - moveDir;\n\tposPrev = posPrev + particlePosMoved;\n\tlet viewRotationTemp: mat3x3f = mat3x3f(uniform.matrix_view[0].xyz, uniform.matrix_view[1].xyz, uniform.matrix_view[2].xyz);\n\tlet centerToVertexV: vec2f = normalize((viewRotationTemp * localPos).xy);\n\tlet interpolation: f32 = dot(-velocityV, centerToVertexV) * 0.5 + 0.5;\n\tparticlePos = mix(particlePos, posPrev, interpolation);\n`;\n\nvar particle_TBNVS = `\n\tlet rot3 = mat3x3f(\n\t\tvec3f(rotMatrix[0][0], rotMatrix[1][0], 0.0),\n\t\tvec3f(rotMatrix[0][1], rotMatrix[1][1], 0.0),\n\t\tvec3f(0.0, 0.0, 1.0)\n\t);\n\tlet viewBasis = mat3x3f(\n\t\t-uniform.matrix_viewInverse[0].xyz,\n\t\t-uniform.matrix_viewInverse[1].xyz,\n\t\tuniform.matrix_viewInverse[2].xyz\n\t);\n\tlet tempMat = viewBasis * rot3;\n\toutput.ParticleMat0 = tempMat[0];\n\toutput.ParticleMat1 = tempMat[1];\n\toutput.ParticleMat2 = tempMat[2];\n`;\n\nvar particle_wrapVS = `\n\tlet origParticlePos: vec3f = particlePos;\n\tparticlePos = particlePos - uniform.matrix_model[3].xyz;\n\tparticlePos = (particlePos % uniform.wrapBounds) - uniform.wrapBounds * 0.5;\n\tparticlePos = particlePos + uniform.matrix_model[3].xyz;\n\tparticlePosMoved = particlePos - origParticlePos;\n`;\n\nconst particleChunksWGSL = {\n\t\tparticlePS,\n\t\tparticleVS,\n\t\tparticleAnimFrameClampVS,\n\t\tparticleAnimFrameLoopVS,\n\t\tparticleAnimTexVS,\n\t\tparticleInputFloatPS,\n\t\tparticleInputRgba8PS,\n\t\tparticleOutputFloatPS,\n\t\tparticleOutputRgba8PS,\n\t\tparticleUpdaterAABBPS,\n\t\tparticleUpdaterEndPS,\n\t\tparticleUpdaterInitPS,\n\t\tparticleUpdaterNoRespawnPS,\n\t\tparticleUpdaterOnStopPS,\n\t\tparticleUpdaterRespawnPS,\n\t\tparticleUpdaterSpherePS,\n\t\tparticleUpdaterStartPS,\n\t\tparticle_billboardVS,\n\t\tparticle_blendAddPS,\n\t\tparticle_blendMultiplyPS,\n\t\tparticle_blendNormalPS,\n\t\tparticle_cpuVS,\n\t\tparticle_cpu_endVS,\n\t\tparticle_customFaceVS,\n\t\tparticle_endPS,\n\t\tparticle_endVS,\n\t\tparticle_halflambertPS,\n\t\tparticle_initVS,\n\t\tparticle_lambertPS,\n\t\tparticle_lightingPS,\n\t\tparticle_localShiftVS,\n\t\tparticle_meshVS,\n\t\tparticle_normalVS,\n\t\tparticle_normalMapPS,\n\t\tparticle_pointAlongVS,\n\t\tparticle_simulationPS,\n\t\tparticle_shaderPS,\n\t\tparticle_shaderVS,\n\t\tparticle_softPS,\n\t\tparticle_softVS,\n\t\tparticle_stretchVS,\n\t\tparticle_TBNVS,\n\t\tparticle_wrapVS\n};\n\nconst _schema$a = [\n\t\t'enabled',\n\t\t'autoPlay',\n\t\t'numParticles',\n\t\t'lifetime',\n\t\t'rate',\n\t\t'rate2',\n\t\t'startAngle',\n\t\t'startAngle2',\n\t\t'loop',\n\t\t'preWarm',\n\t\t'lighting',\n\t\t'halfLambert',\n\t\t'intensity',\n\t\t'depthWrite',\n\t\t'noFog',\n\t\t'depthSoftening',\n\t\t'sort',\n\t\t'blendType',\n\t\t'stretch',\n\t\t'alignToMotion',\n\t\t'emitterShape',\n\t\t'emitterExtents',\n\t\t'emitterExtentsInner',\n\t\t'emitterRadius',\n\t\t'emitterRadiusInner',\n\t\t'initialVelocity',\n\t\t'wrap',\n\t\t'wrapBounds',\n\t\t'localSpace',\n\t\t'screenSpace',\n\t\t'colorMapAsset',\n\t\t'normalMapAsset',\n\t\t'mesh',\n\t\t'meshAsset',\n\t\t'renderAsset',\n\t\t'orientation',\n\t\t'particleNormal',\n\t\t'localVelocityGraph',\n\t\t'localVelocityGraph2',\n\t\t'velocityGraph',\n\t\t'velocityGraph2',\n\t\t'rotationSpeedGraph',\n\t\t'rotationSpeedGraph2',\n\t\t'radialSpeedGraph',\n\t\t'radialSpeedGraph2',\n\t\t'scaleGraph',\n\t\t'scaleGraph2',\n\t\t'colorGraph',\n\t\t'colorGraph2',\n\t\t'alphaGraph',\n\t\t'alphaGraph2',\n\t\t'colorMap',\n\t\t'normalMap',\n\t\t'animTilesX',\n\t\t'animTilesY',\n\t\t'animStartFrame',\n\t\t'animNumFrames',\n\t\t'animNumAnimations',\n\t\t'animIndex',\n\t\t'randomizeAnimIndex',\n\t\t'animSpeed',\n\t\t'animLoop',\n\t\t'layers'\n];\nclass ParticleSystemComponentSystem extends ComponentSystem {\n\t\tconstructor(app){\n\t\t\t\tsuper(app);\n\t\t\t\tthis.id = 'particlesystem';\n\t\t\t\tthis.ComponentType = ParticleSystemComponent;\n\t\t\t\tthis.DataType = ParticleSystemComponentData;\n\t\t\t\tthis.schema = _schema$a;\n\t\t\t\tthis.propertyTypes = {\n\t\t\t\t\t\temitterExtents: 'vec3',\n\t\t\t\t\t\temitterExtentsInner: 'vec3',\n\t\t\t\t\t\tparticleNormal: 'vec3',\n\t\t\t\t\t\twrapBounds: 'vec3',\n\t\t\t\t\t\tlocalVelocityGraph: 'curveset',\n\t\t\t\t\t\tlocalVelocityGraph2: 'curveset',\n\t\t\t\t\t\tvelocityGraph: 'curveset',\n\t\t\t\t\t\tvelocityGraph2: 'curveset',\n\t\t\t\t\t\tcolorGraph: 'curveset',\n\t\t\t\t\t\tcolorGraph2: 'curveset',\n\t\t\t\t\t\talphaGraph: 'curve',\n\t\t\t\t\t\talphaGraph2: 'curve',\n\t\t\t\t\t\trotationSpeedGraph: 'curve',\n\t\t\t\t\t\trotationSpeedGraph2: 'curve',\n\t\t\t\t\t\tradialSpeedGraph: 'curve',\n\t\t\t\t\t\tradialSpeedGraph2: 'curve',\n\t\t\t\t\t\tscaleGraph: 'curve',\n\t\t\t\t\t\tscaleGraph2: 'curve'\n\t\t\t\t};\n\t\t\t\tthis.on('beforeremove', this.onBeforeRemove, this);\n\t\t\t\tthis.app.systems.on('update', this.onUpdate, this);\n\t\t\t\tShaderChunks.get(app.graphicsDevice, SHADERLANGUAGE_GLSL).add(particleChunksGLSL);\n\t\t\t\tShaderChunks.get(app.graphicsDevice, SHADERLANGUAGE_WGSL).add(particleChunksWGSL);\n\t\t}\n\t\tinitializeComponentData(component, _data, properties) {\n\t\t\t\tconst data = {};\n\t\t\t\tproperties = [];\n\t\t\t\tconst types = this.propertyTypes;\n\t\t\t\tif (_data.mesh instanceof Asset || typeof _data.mesh === 'number') {\n\t\t\t\t\t\t_data.meshAsset = _data.mesh;\n\t\t\t\t\t\tdelete _data.mesh;\n\t\t\t\t}\n\t\t\t\tfor(const prop in _data){\n\t\t\t\t\t\tif (_data.hasOwnProperty(prop)) {\n\t\t\t\t\t\t\t\tproperties.push(prop);\n\t\t\t\t\t\t\t\tdata[prop] = _data[prop];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (types[prop] === 'vec3') {\n\t\t\t\t\t\t\t\tif (Array.isArray(data[prop])) {\n\t\t\t\t\t\t\t\t\t\tdata[prop] = new Vec3(data[prop][0], data[prop][1], data[prop][2]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (types[prop] === 'curve') {\n\t\t\t\t\t\t\t\tif (!(data[prop] instanceof Curve)) {\n\t\t\t\t\t\t\t\t\t\tconst t = data[prop].type;\n\t\t\t\t\t\t\t\t\t\tdata[prop] = new Curve(data[prop].keys);\n\t\t\t\t\t\t\t\t\t\tdata[prop].type = t;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (types[prop] === 'curveset') {\n\t\t\t\t\t\t\t\tif (!(data[prop] instanceof CurveSet)) {\n\t\t\t\t\t\t\t\t\t\tconst t = data[prop].type;\n\t\t\t\t\t\t\t\t\t\tdata[prop] = new CurveSet(data[prop].keys);\n\t\t\t\t\t\t\t\t\t\tdata[prop].type = t;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (data.layers && Array.isArray(data.layers)) {\n\t\t\t\t\t\t\t\tdata.layers = data.layers.slice(0);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tsuper.initializeComponentData(component, data, properties);\n\t\t}\n\t\tcloneComponent(entity, clone) {\n\t\t\t\tconst source = entity.particlesystem.data;\n\t\t\t\tconst schema = this.schema;\n\t\t\t\tconst data = {};\n\t\t\t\tfor(let i = 0, len = schema.length; i < len; i++){\n\t\t\t\t\t\tconst prop = schema[i];\n\t\t\t\t\t\tlet sourceProp = source[prop];\n\t\t\t\t\t\tif (sourceProp instanceof Vec3 || sourceProp instanceof Curve || sourceProp instanceof CurveSet) {\n\t\t\t\t\t\t\t\tsourceProp = sourceProp.clone();\n\t\t\t\t\t\t\t\tdata[prop] = sourceProp;\n\t\t\t\t\t\t} else if (prop === 'layers') {\n\t\t\t\t\t\t\t\tdata.layers = source.layers.slice(0);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (sourceProp !== null && sourceProp !== undefined) {\n\t\t\t\t\t\t\t\t\t\tdata[prop] = sourceProp;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this.addComponent(clone, data);\n\t\t}\n\t\tonUpdate(dt) {\n\t\t\t\tconst components = this.store;\n\t\t\t\tconst stats = this.app.stats.particles;\n\t\t\t\tconst composition = this.app.scene.layers;\n\t\t\t\tfor(let i = 0; i < composition.layerList.length; i++){\n\t\t\t\t\t\tcomposition.layerList[i].requiresLightCube = false;\n\t\t\t\t}\n\t\t\t\tfor(const id in components){\n\t\t\t\t\t\tif (components.hasOwnProperty(id)) {\n\t\t\t\t\t\t\t\tconst component = components[id];\n\t\t\t\t\t\t\t\tconst entity = component.entity;\n\t\t\t\t\t\t\t\tconst data = component.data;\n\t\t\t\t\t\t\t\tif (data.enabled && entity.enabled) {\n\t\t\t\t\t\t\t\t\t\tconst emitter = entity.particlesystem.emitter;\n\t\t\t\t\t\t\t\t\t\tif (!emitter?.meshInstance.visible) continue;\n\t\t\t\t\t\t\t\t\t\tif (emitter.lighting) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst layers = data.layers;\n\t\t\t\t\t\t\t\t\t\t\t\tfor(let i = 0; i < layers.length; i++){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst layer = composition.getLayerById(layers[i]);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (layer) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tlayer.requiresLightCube = true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (!data.paused) {\n\t\t\t\t\t\t\t\t\t\t\t\tlet numSteps = 0;\n\t\t\t\t\t\t\t\t\t\t\t\temitter.simTime += dt;\n\t\t\t\t\t\t\t\t\t\t\t\tif (emitter.simTime >= emitter.fixedTimeStep) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnumSteps = Math.floor(emitter.simTime / emitter.fixedTimeStep);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\temitter.simTime -= numSteps * emitter.fixedTimeStep;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tif (numSteps) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnumSteps = Math.min(numSteps, emitter.maxSubSteps);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor(let i = 0; i < numSteps; i++){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\temitter.addTime(emitter.fixedTimeStep, false);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tstats._updatesPerFrame += numSteps;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tstats._frameTime += emitter._addTimeTime;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\temitter._addTimeTime = 0;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\temitter.finishFrame();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tonBeforeRemove(entity, component) {\n\t\t\t\tcomponent.onBeforeRemove();\n\t\t}\n\t\tdestroy() {\n\t\t\t\tsuper.destroy();\n\t\t\t\tthis.app.systems.off('update', this.onUpdate, this);\n\t\t}\n}\n\nclass SkinInstanceCachedObject extends RefCountedObject {\n\t\tconstructor(skin, skinInstance){\n\t\t\t\tsuper();\n\t\t\t\tthis.skin = skin;\n\t\t\t\tthis.skinInstance = skinInstance;\n\t\t}\n}\nclass SkinInstanceCache {\n\t\tstatic{\n\t\t\t\tthis._skinInstanceCache = new Map();\n\t\t}\n\t\tstatic createCachedSkinInstance(skin, rootBone, entity) {\n\t\t\t\tlet skinInst = SkinInstanceCache.getCachedSkinInstance(skin, rootBone);\n\t\t\t\tif (!skinInst) {\n\t\t\t\t\t\tskinInst = new SkinInstance(skin);\n\t\t\t\t\t\tskinInst.resolve(rootBone, entity);\n\t\t\t\t\t\tSkinInstanceCache.addCachedSkinInstance(skin, rootBone, skinInst);\n\t\t\t\t}\n\t\t\t\treturn skinInst;\n\t\t}\n\t\tstatic getCachedSkinInstance(skin, rootBone) {\n\t\t\t\tlet skinInstance = null;\n\t\t\t\tconst cachedObjArray = SkinInstanceCache._skinInstanceCache.get(rootBone);\n\t\t\t\tif (cachedObjArray) {\n\t\t\t\t\t\tconst cachedObj = cachedObjArray.find((element)=>element.skin === skin);\n\t\t\t\t\t\tif (cachedObj) {\n\t\t\t\t\t\t\t\tcachedObj.incRefCount();\n\t\t\t\t\t\t\t\tskinInstance = cachedObj.skinInstance;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn skinInstance;\n\t\t}\n\t\tstatic addCachedSkinInstance(skin, rootBone, skinInstance) {\n\t\t\t\tlet cachedObjArray = SkinInstanceCache._skinInstanceCache.get(rootBone);\n\t\t\t\tif (!cachedObjArray) {\n\t\t\t\t\t\tcachedObjArray = [];\n\t\t\t\t\t\tSkinInstanceCache._skinInstanceCache.set(rootBone, cachedObjArray);\n\t\t\t\t}\n\t\t\t\tlet cachedObj = cachedObjArray.find((element)=>element.skin === skin);\n\t\t\t\tif (!cachedObj) {\n\t\t\t\t\t\tcachedObj = new SkinInstanceCachedObject(skin, skinInstance);\n\t\t\t\t\t\tcachedObjArray.push(cachedObj);\n\t\t\t\t}\n\t\t\t\tcachedObj.incRefCount();\n\t\t}\n\t\tstatic removeCachedSkinInstance(skinInstance) {\n\t\t\t\tif (skinInstance) {\n\t\t\t\t\t\tconst rootBone = skinInstance.rootBone;\n\t\t\t\t\t\tif (rootBone) {\n\t\t\t\t\t\t\t\tconst cachedObjArray = SkinInstanceCache._skinInstanceCache.get(rootBone);\n\t\t\t\t\t\t\t\tif (cachedObjArray) {\n\t\t\t\t\t\t\t\t\t\tconst cachedObjIndex = cachedObjArray.findIndex((element)=>element.skinInstance === skinInstance);\n\t\t\t\t\t\t\t\t\t\tif (cachedObjIndex >= 0) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst cachedObj = cachedObjArray[cachedObjIndex];\n\t\t\t\t\t\t\t\t\t\t\t\tcachedObj.decRefCount();\n\t\t\t\t\t\t\t\t\t\t\t\tif (cachedObj.refCount === 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcachedObjArray.splice(cachedObjIndex, 1);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (!cachedObjArray.length) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tSkinInstanceCache._skinInstanceCache.delete(rootBone);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (skinInstance) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tskinInstance.destroy();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcachedObj.skinInstance = null;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n}\n\nclass AssetReference {\n\t\tconstructor(propertyName, parent, registry, callbacks, scope){\n\t\t\t\tthis._evtLoadById = null;\n\t\t\t\tthis._evtUnloadById = null;\n\t\t\t\tthis._evtAddById = null;\n\t\t\t\tthis._evtRemoveById = null;\n\t\t\t\tthis._evtLoadByUrl = null;\n\t\t\t\tthis._evtAddByUrl = null;\n\t\t\t\tthis._evtRemoveByUrl = null;\n\t\t\t\tthis.propertyName = propertyName;\n\t\t\t\tthis.parent = parent;\n\t\t\t\tthis._scope = scope;\n\t\t\t\tthis._registry = registry;\n\t\t\t\tthis.id = null;\n\t\t\t\tthis.url = null;\n\t\t\t\tthis.asset = null;\n\t\t\t\tthis._onAssetLoad = callbacks.load;\n\t\t\t\tthis._onAssetAdd = callbacks.add;\n\t\t\t\tthis._onAssetRemove = callbacks.remove;\n\t\t\t\tthis._onAssetUnload = callbacks.unload;\n\t\t}\n\t\tset id(value) {\n\t\t\t\tif (this.url) throw Error('Can\\'t set id and url');\n\t\t\t\tthis._unbind();\n\t\t\t\tthis._id = value;\n\t\t\t\tthis.asset = this._registry.get(this._id);\n\t\t\t\tthis._bind();\n\t\t}\n\t\tget id() {\n\t\t\t\treturn this._id;\n\t\t}\n\t\tset url(value) {\n\t\t\t\tif (this.id) throw Error('Can\\'t set id and url');\n\t\t\t\tthis._unbind();\n\t\t\t\tthis._url = value;\n\t\t\t\tthis.asset = this._registry.getByUrl(this._url);\n\t\t\t\tthis._bind();\n\t\t}\n\t\tget url() {\n\t\t\t\treturn this._url;\n\t\t}\n\t\t_bind() {\n\t\t\t\tif (this.id) {\n\t\t\t\t\t\tif (this._onAssetLoad) this._evtLoadById = this._registry.on(`load:${this.id}`, this._onLoad, this);\n\t\t\t\t\t\tif (this._onAssetAdd) this._evtAddById = this._registry.once(`add:${this.id}`, this._onAdd, this);\n\t\t\t\t\t\tif (this._onAssetRemove) this._evtRemoveById = this._registry.on(`remove:${this.id}`, this._onRemove, this);\n\t\t\t\t\t\tif (this._onAssetUnload) this._evtUnloadById = this._registry.on(`unload:${this.id}`, this._onUnload, this);\n\t\t\t\t}\n\t\t\t\tif (this.url) {\n\t\t\t\t\t\tif (this._onAssetLoad) this._evtLoadByUrl = this._registry.on(`load:url:${this.url}`, this._onLoad, this);\n\t\t\t\t\t\tif (this._onAssetAdd) this._evtAddByUrl = this._registry.once(`add:url:${this.url}`, this._onAdd, this);\n\t\t\t\t\t\tif (this._onAssetRemove) this._evtRemoveByUrl = this._registry.on(`remove:url:${this.url}`, this._onRemove, this);\n\t\t\t\t}\n\t\t}\n\t\t_unbind() {\n\t\t\t\tif (this.id) {\n\t\t\t\t\t\tthis._evtLoadById?.off();\n\t\t\t\t\t\tthis._evtLoadById = null;\n\t\t\t\t\t\tthis._evtAddById?.off();\n\t\t\t\t\t\tthis._evtAddById = null;\n\t\t\t\t\t\tthis._evtRemoveById?.off();\n\t\t\t\t\t\tthis._evtRemoveById = null;\n\t\t\t\t\t\tthis._evtUnloadById?.off();\n\t\t\t\t\t\tthis._evtUnloadById = null;\n\t\t\t\t}\n\t\t\t\tif (this.url) {\n\t\t\t\t\t\tthis._evtLoadByUrl?.off();\n\t\t\t\t\t\tthis._evtLoadByUrl = null;\n\t\t\t\t\t\tthis._evtAddByUrl?.off();\n\t\t\t\t\t\tthis._evtAddByUrl = null;\n\t\t\t\t\t\tthis._evtRemoveByUrl?.off();\n\t\t\t\t\t\tthis._evtRemoveByUrl = null;\n\t\t\t\t}\n\t\t}\n\t\t_onLoad(asset) {\n\t\t\t\tthis._onAssetLoad.call(this._scope, this.propertyName, this.parent, asset);\n\t\t}\n\t\t_onAdd(asset) {\n\t\t\t\tthis.asset = asset;\n\t\t\t\tthis._onAssetAdd.call(this._scope, this.propertyName, this.parent, asset);\n\t\t}\n\t\t_onRemove(asset) {\n\t\t\t\tthis._onAssetRemove.call(this._scope, this.propertyName, this.parent, asset);\n\t\t\t\tthis.asset = null;\n\t\t}\n\t\t_onUnload(asset) {\n\t\t\t\tthis._onAssetUnload.call(this._scope, this.propertyName, this.parent, asset);\n\t\t}\n}\n\nclass RenderComponent extends Component {\n\t\tconstructor(system, entity){\n\t\t\t\tsuper(system, entity), this._type = 'asset', this._castShadows = true, this._receiveShadows = true, this._castShadowsLightmap = true, this._lightmapped = false, this._lightmapSizeMultiplier = 1, this.isStatic = false, this._batchGroupId = -1, this._layers = [\n\t\t\t\t\t\tLAYERID_WORLD\n\t\t\t\t], this._renderStyle = RENDERSTYLE_SOLID, this._meshInstances = [], this._customAabb = null, this._area = null, this._materialReferences = [], this._rootBone = null, this._evtLayersChanged = null, this._evtLayerAdded = null, this._evtLayerRemoved = null, this._evtSetMeshes = null;\n\t\t\t\tthis._assetReference = new AssetReference('asset', this, system.app.assets, {\n\t\t\t\t\t\tadd: this._onRenderAssetAdded,\n\t\t\t\t\t\tload: this._onRenderAssetLoad,\n\t\t\t\t\t\tremove: this._onRenderAssetRemove,\n\t\t\t\t\t\tunload: this._onRenderAssetUnload\n\t\t\t\t}, this);\n\t\t\t\tthis._material = system.defaultMaterial;\n\t\t\t\tentity.on('remove', this.onRemoveChild, this);\n\t\t\t\tentity.on('removehierarchy', this.onRemoveChild, this);\n\t\t\t\tentity.on('insert', this.onInsertChild, this);\n\t\t\t\tentity.on('inserthierarchy', this.onInsertChild, this);\n\t\t}\n\t\tset renderStyle(renderStyle) {\n\t\t\t\tif (this._renderStyle !== renderStyle) {\n\t\t\t\t\t\tthis._renderStyle = renderStyle;\n\t\t\t\t\t\tMeshInstance._prepareRenderStyleForArray(this._meshInstances, renderStyle);\n\t\t\t\t}\n\t\t}\n\t\tget renderStyle() {\n\t\t\t\treturn this._renderStyle;\n\t\t}\n\t\tset customAabb(value) {\n\t\t\t\tthis._customAabb = value;\n\t\t\t\tconst mi = this._meshInstances;\n\t\t\t\tif (mi) {\n\t\t\t\t\t\tfor(let i = 0; i < mi.length; i++){\n\t\t\t\t\t\t\t\tmi[i].setCustomAabb(this._customAabb);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget customAabb() {\n\t\t\t\treturn this._customAabb;\n\t\t}\n\t\tset type(value) {\n\t\t\t\tif (this._type !== value) {\n\t\t\t\t\t\tthis._area = null;\n\t\t\t\t\t\tthis._type = value;\n\t\t\t\t\t\tthis.destroyMeshInstances();\n\t\t\t\t\t\tif (value !== 'asset') {\n\t\t\t\t\t\t\t\tlet material = this._material;\n\t\t\t\t\t\t\t\tif (!material || material === this.system.defaultMaterial) {\n\t\t\t\t\t\t\t\t\t\tmaterial = this._materialReferences[0] && this._materialReferences[0].asset && this._materialReferences[0].asset.resource;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst primData = getShapePrimitive(this.system.app.graphicsDevice, value);\n\t\t\t\t\t\t\t\tthis._area = primData.area;\n\t\t\t\t\t\t\t\tthis.meshInstances = [\n\t\t\t\t\t\t\t\t\t\tnew MeshInstance(primData.mesh, material || this.system.defaultMaterial, this.entity)\n\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget type() {\n\t\t\t\treturn this._type;\n\t\t}\n\t\tset meshInstances(value) {\n\t\t\t\tthis.destroyMeshInstances();\n\t\t\t\tthis._meshInstances = value;\n\t\t\t\tif (this._meshInstances) {\n\t\t\t\t\t\tconst mi = this._meshInstances;\n\t\t\t\t\t\tfor(let i = 0; i < mi.length; i++){\n\t\t\t\t\t\t\t\tif (!mi[i].node) {\n\t\t\t\t\t\t\t\t\t\tmi[i].node = this.entity;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tmi[i].castShadow = this._castShadows;\n\t\t\t\t\t\t\t\tmi[i].receiveShadow = this._receiveShadows;\n\t\t\t\t\t\t\t\tmi[i].renderStyle = this._renderStyle;\n\t\t\t\t\t\t\t\tmi[i].setLightmapped(this._lightmapped);\n\t\t\t\t\t\t\t\tmi[i].setCustomAabb(this._customAabb);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.enabled && this.entity.enabled) {\n\t\t\t\t\t\t\t\tthis.addToLayers();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget meshInstances() {\n\t\t\t\treturn this._meshInstances;\n\t\t}\n\t\tset lightmapped(value) {\n\t\t\t\tif (value !== this._lightmapped) {\n\t\t\t\t\t\tthis._lightmapped = value;\n\t\t\t\t\t\tconst mi = this._meshInstances;\n\t\t\t\t\t\tif (mi) {\n\t\t\t\t\t\t\t\tfor(let i = 0; i < mi.length; i++){\n\t\t\t\t\t\t\t\t\t\tmi[i].setLightmapped(value);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget lightmapped() {\n\t\t\t\treturn this._lightmapped;\n\t\t}\n\t\tset castShadows(value) {\n\t\t\t\tif (this._castShadows !== value) {\n\t\t\t\t\t\tconst mi = this._meshInstances;\n\t\t\t\t\t\tif (mi) {\n\t\t\t\t\t\t\t\tconst layers = this.layers;\n\t\t\t\t\t\t\t\tconst scene = this.system.app.scene;\n\t\t\t\t\t\t\t\tif (this._castShadows && !value) {\n\t\t\t\t\t\t\t\t\t\tfor(let i = 0; i < layers.length; i++){\n\t\t\t\t\t\t\t\t\t\t\t\tconst layer = scene.layers.getLayerById(this.layers[i]);\n\t\t\t\t\t\t\t\t\t\t\t\tif (layer) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlayer.removeShadowCasters(mi);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tfor(let i = 0; i < mi.length; i++){\n\t\t\t\t\t\t\t\t\t\tmi[i].castShadow = value;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (!this._castShadows && value) {\n\t\t\t\t\t\t\t\t\t\tfor(let i = 0; i < layers.length; i++){\n\t\t\t\t\t\t\t\t\t\t\t\tconst layer = scene.layers.getLayerById(layers[i]);\n\t\t\t\t\t\t\t\t\t\t\t\tif (layer) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlayer.addShadowCasters(mi);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._castShadows = value;\n\t\t\t\t}\n\t\t}\n\t\tget castShadows() {\n\t\t\t\treturn this._castShadows;\n\t\t}\n\t\tset receiveShadows(value) {\n\t\t\t\tif (this._receiveShadows !== value) {\n\t\t\t\t\t\tthis._receiveShadows = value;\n\t\t\t\t\t\tconst mi = this._meshInstances;\n\t\t\t\t\t\tif (mi) {\n\t\t\t\t\t\t\t\tfor(let i = 0; i < mi.length; i++){\n\t\t\t\t\t\t\t\t\t\tmi[i].receiveShadow = value;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget receiveShadows() {\n\t\t\t\treturn this._receiveShadows;\n\t\t}\n\t\tset castShadowsLightmap(value) {\n\t\t\t\tthis._castShadowsLightmap = value;\n\t\t}\n\t\tget castShadowsLightmap() {\n\t\t\t\treturn this._castShadowsLightmap;\n\t\t}\n\t\tset lightmapSizeMultiplier(value) {\n\t\t\t\tthis._lightmapSizeMultiplier = value;\n\t\t}\n\t\tget lightmapSizeMultiplier() {\n\t\t\t\treturn this._lightmapSizeMultiplier;\n\t\t}\n\t\tset layers(value) {\n\t\t\t\tconst layers = this.system.app.scene.layers;\n\t\t\t\tlet layer;\n\t\t\t\tif (this._meshInstances) {\n\t\t\t\t\t\tfor(let i = 0; i < this._layers.length; i++){\n\t\t\t\t\t\t\t\tlayer = layers.getLayerById(this._layers[i]);\n\t\t\t\t\t\t\t\tif (layer) {\n\t\t\t\t\t\t\t\t\t\tlayer.removeMeshInstances(this._meshInstances);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._layers.length = 0;\n\t\t\t\tfor(let i = 0; i < value.length; i++){\n\t\t\t\t\t\tthis._layers[i] = value[i];\n\t\t\t\t}\n\t\t\t\tif (!this.enabled || !this.entity.enabled || !this._meshInstances) return;\n\t\t\t\tfor(let i = 0; i < this._layers.length; i++){\n\t\t\t\t\t\tlayer = layers.getLayerById(this._layers[i]);\n\t\t\t\t\t\tif (layer) {\n\t\t\t\t\t\t\t\tlayer.addMeshInstances(this._meshInstances);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget layers() {\n\t\t\t\treturn this._layers;\n\t\t}\n\t\tset batchGroupId(value) {\n\t\t\t\tif (this._batchGroupId !== value) {\n\t\t\t\t\t\tif (this.entity.enabled && this._batchGroupId >= 0) {\n\t\t\t\t\t\t\t\tthis.system.app.batcher?.remove(BatchGroup.RENDER, this.batchGroupId, this.entity);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.entity.enabled && value >= 0) {\n\t\t\t\t\t\t\t\tthis.system.app.batcher?.insert(BatchGroup.RENDER, value, this.entity);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (value < 0 && this._batchGroupId >= 0 && this.enabled && this.entity.enabled) {\n\t\t\t\t\t\t\t\tthis.addToLayers();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._batchGroupId = value;\n\t\t\t\t}\n\t\t}\n\t\tget batchGroupId() {\n\t\t\t\treturn this._batchGroupId;\n\t\t}\n\t\tset material(value) {\n\t\t\t\tif (this._material !== value) {\n\t\t\t\t\t\tthis._material = value;\n\t\t\t\t\t\tif (this._meshInstances && this._type !== 'asset') {\n\t\t\t\t\t\t\t\tfor(let i = 0; i < this._meshInstances.length; i++){\n\t\t\t\t\t\t\t\t\t\tthis._meshInstances[i].material = value;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget material() {\n\t\t\t\treturn this._material;\n\t\t}\n\t\tset materialAssets(value = []) {\n\t\t\t\tif (this._materialReferences.length > value.length) {\n\t\t\t\t\t\tfor(let i = value.length; i < this._materialReferences.length; i++){\n\t\t\t\t\t\t\t\tthis._materialReferences[i].id = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._materialReferences.length = value.length;\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < value.length; i++){\n\t\t\t\t\t\tif (!this._materialReferences[i]) {\n\t\t\t\t\t\t\t\tthis._materialReferences.push(new AssetReference(i, this, this.system.app.assets, {\n\t\t\t\t\t\t\t\t\t\tadd: this._onMaterialAdded,\n\t\t\t\t\t\t\t\t\t\tload: this._onMaterialLoad,\n\t\t\t\t\t\t\t\t\t\tremove: this._onMaterialRemove,\n\t\t\t\t\t\t\t\t\t\tunload: this._onMaterialUnload\n\t\t\t\t\t\t\t\t}, this));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (value[i]) {\n\t\t\t\t\t\t\t\tconst id = value[i] instanceof Asset ? value[i].id : value[i];\n\t\t\t\t\t\t\t\tif (this._materialReferences[i].id !== id) {\n\t\t\t\t\t\t\t\t\t\tthis._materialReferences[i].id = id;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (this._materialReferences[i].asset) {\n\t\t\t\t\t\t\t\t\t\tthis._onMaterialAdded(i, this, this._materialReferences[i].asset);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._materialReferences[i].id = null;\n\t\t\t\t\t\t\t\tif (this._meshInstances[i]) {\n\t\t\t\t\t\t\t\t\t\tthis._meshInstances[i].material = this.system.defaultMaterial;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget materialAssets() {\n\t\t\t\treturn this._materialReferences.map((ref)=>{\n\t\t\t\t\t\treturn ref.id;\n\t\t\t\t});\n\t\t}\n\t\tset asset(value) {\n\t\t\t\tconst id = value instanceof Asset ? value.id : value;\n\t\t\t\tif (this._assetReference.id === id) return;\n\t\t\t\tif (this._assetReference.asset && this._assetReference.asset.resource) {\n\t\t\t\t\t\tthis._onRenderAssetRemove();\n\t\t\t\t}\n\t\t\t\tthis._assetReference.id = id;\n\t\t\t\tif (this._assetReference.asset) {\n\t\t\t\t\t\tthis._onRenderAssetAdded();\n\t\t\t\t}\n\t\t}\n\t\tget asset() {\n\t\t\t\treturn this._assetReference.id;\n\t\t}\n\t\tassignAsset(asset) {\n\t\t\t\tconst id = asset instanceof Asset ? asset.id : asset;\n\t\t\t\tthis._assetReference.id = id;\n\t\t}\n\t\tset rootBone(value) {\n\t\t\t\tif (this._rootBone !== value) {\n\t\t\t\t\t\tconst isString = typeof value === 'string';\n\t\t\t\t\t\tif (this._rootBone && isString && this._rootBone.getGuid() === value) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this._rootBone) {\n\t\t\t\t\t\t\t\tthis._clearSkinInstances();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (value instanceof GraphNode) {\n\t\t\t\t\t\t\t\tthis._rootBone = value;\n\t\t\t\t\t\t} else if (isString) {\n\t\t\t\t\t\t\t\tthis._rootBone = this.system.app.getEntityFromIndex(value) || null;\n\t\t\t\t\t\t\t\tif (!this._rootBone) ;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._rootBone = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this._rootBone) {\n\t\t\t\t\t\t\t\tthis._cloneSkinInstances();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget rootBone() {\n\t\t\t\treturn this._rootBone;\n\t\t}\n\t\tdestroyMeshInstances() {\n\t\t\t\tconst meshInstances = this._meshInstances;\n\t\t\t\tif (meshInstances) {\n\t\t\t\t\t\tthis.removeFromLayers();\n\t\t\t\t\t\tthis._clearSkinInstances();\n\t\t\t\t\t\tfor(let i = 0; i < meshInstances.length; i++){\n\t\t\t\t\t\t\t\tmeshInstances[i].destroy();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._meshInstances.length = 0;\n\t\t\t\t}\n\t\t}\n\t\taddToLayers() {\n\t\t\t\tconst layers = this.system.app.scene.layers;\n\t\t\t\tfor(let i = 0; i < this._layers.length; i++){\n\t\t\t\t\t\tconst layer = layers.getLayerById(this._layers[i]);\n\t\t\t\t\t\tif (layer) {\n\t\t\t\t\t\t\t\tlayer.addMeshInstances(this._meshInstances);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tremoveFromLayers() {\n\t\t\t\tif (this._meshInstances && this._meshInstances.length) {\n\t\t\t\t\t\tconst layers = this.system.app.scene.layers;\n\t\t\t\t\t\tfor(let i = 0; i < this._layers.length; i++){\n\t\t\t\t\t\t\t\tconst layer = layers.getLayerById(this._layers[i]);\n\t\t\t\t\t\t\t\tif (layer) {\n\t\t\t\t\t\t\t\t\t\tlayer.removeMeshInstances(this._meshInstances);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tonRemoveChild() {\n\t\t\t\tthis.removeFromLayers();\n\t\t}\n\t\tonInsertChild() {\n\t\t\t\tif (this._meshInstances && this.enabled && this.entity.enabled) {\n\t\t\t\t\t\tthis.addToLayers();\n\t\t\t\t}\n\t\t}\n\t\tonRemove() {\n\t\t\t\tthis.destroyMeshInstances();\n\t\t\t\tthis.asset = null;\n\t\t\t\tthis.materialAsset = null;\n\t\t\t\tthis._assetReference.id = null;\n\t\t\t\tfor(let i = 0; i < this._materialReferences.length; i++){\n\t\t\t\t\t\tthis._materialReferences[i].id = null;\n\t\t\t\t}\n\t\t\t\tthis.entity.off('remove', this.onRemoveChild, this);\n\t\t\t\tthis.entity.off('insert', this.onInsertChild, this);\n\t\t}\n\t\tonLayersChanged(oldComp, newComp) {\n\t\t\t\tthis.addToLayers();\n\t\t\t\toldComp.off('add', this.onLayerAdded, this);\n\t\t\t\toldComp.off('remove', this.onLayerRemoved, this);\n\t\t\t\tnewComp.on('add', this.onLayerAdded, this);\n\t\t\t\tnewComp.on('remove', this.onLayerRemoved, this);\n\t\t}\n\t\tonLayerAdded(layer) {\n\t\t\t\tconst index = this.layers.indexOf(layer.id);\n\t\t\t\tif (index < 0) return;\n\t\t\t\tlayer.addMeshInstances(this._meshInstances);\n\t\t}\n\t\tonLayerRemoved(layer) {\n\t\t\t\tconst index = this.layers.indexOf(layer.id);\n\t\t\t\tif (index < 0) return;\n\t\t\t\tlayer.removeMeshInstances(this._meshInstances);\n\t\t}\n\t\tonEnable() {\n\t\t\t\tconst app = this.system.app;\n\t\t\t\tconst scene = app.scene;\n\t\t\t\tconst layers = scene.layers;\n\t\t\t\tif (this._rootBone) {\n\t\t\t\t\t\tthis._cloneSkinInstances();\n\t\t\t\t}\n\t\t\t\tthis._evtLayersChanged = scene.on('set:layers', this.onLayersChanged, this);\n\t\t\t\tif (layers) {\n\t\t\t\t\t\tthis._evtLayerAdded = layers.on('add', this.onLayerAdded, this);\n\t\t\t\t\t\tthis._evtLayerRemoved = layers.on('remove', this.onLayerRemoved, this);\n\t\t\t\t}\n\t\t\t\tconst isAsset = this._type === 'asset';\n\t\t\t\tif (this._meshInstances && this._meshInstances.length) {\n\t\t\t\t\t\tthis.addToLayers();\n\t\t\t\t} else if (isAsset && this.asset) {\n\t\t\t\t\t\tthis._onRenderAssetAdded();\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < this._materialReferences.length; i++){\n\t\t\t\t\t\tif (this._materialReferences[i].asset) {\n\t\t\t\t\t\t\t\tthis.system.app.assets.load(this._materialReferences[i].asset);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this._batchGroupId >= 0) {\n\t\t\t\t\t\tapp.batcher?.insert(BatchGroup.RENDER, this.batchGroupId, this.entity);\n\t\t\t\t}\n\t\t}\n\t\tonDisable() {\n\t\t\t\tconst app = this.system.app;\n\t\t\t\tconst scene = app.scene;\n\t\t\t\tconst layers = scene.layers;\n\t\t\t\tthis._evtLayersChanged?.off();\n\t\t\t\tthis._evtLayersChanged = null;\n\t\t\t\tif (this._rootBone) {\n\t\t\t\t\t\tthis._clearSkinInstances();\n\t\t\t\t}\n\t\t\t\tif (layers) {\n\t\t\t\t\t\tthis._evtLayerAdded?.off();\n\t\t\t\t\t\tthis._evtLayerAdded = null;\n\t\t\t\t\t\tthis._evtLayerRemoved?.off();\n\t\t\t\t\t\tthis._evtLayerRemoved = null;\n\t\t\t\t}\n\t\t\t\tif (this._batchGroupId >= 0) {\n\t\t\t\t\t\tapp.batcher?.remove(BatchGroup.RENDER, this.batchGroupId, this.entity);\n\t\t\t\t}\n\t\t\t\tthis.removeFromLayers();\n\t\t}\n\t\thide() {\n\t\t\t\tif (this._meshInstances) {\n\t\t\t\t\t\tfor(let i = 0; i < this._meshInstances.length; i++){\n\t\t\t\t\t\t\t\tthis._meshInstances[i].visible = false;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tshow() {\n\t\t\t\tif (this._meshInstances) {\n\t\t\t\t\t\tfor(let i = 0; i < this._meshInstances.length; i++){\n\t\t\t\t\t\t\t\tthis._meshInstances[i].visible = true;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_onRenderAssetAdded() {\n\t\t\t\tif (!this._assetReference.asset) return;\n\t\t\t\tif (this._assetReference.asset.resource) {\n\t\t\t\t\t\tthis._onRenderAssetLoad();\n\t\t\t\t} else if (this.enabled && this.entity.enabled) {\n\t\t\t\t\t\tthis.system.app.assets.load(this._assetReference.asset);\n\t\t\t\t}\n\t\t}\n\t\t_onRenderAssetLoad() {\n\t\t\t\tthis.destroyMeshInstances();\n\t\t\t\tif (this._assetReference.asset) {\n\t\t\t\t\t\tconst render = this._assetReference.asset.resource;\n\t\t\t\t\t\tthis._evtSetMeshes?.off();\n\t\t\t\t\t\tthis._evtSetMeshes = render.on('set:meshes', this._onSetMeshes, this);\n\t\t\t\t\t\tif (render.meshes) {\n\t\t\t\t\t\t\t\tthis._onSetMeshes(render.meshes);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_onSetMeshes(meshes) {\n\t\t\t\tthis._cloneMeshes(meshes);\n\t\t}\n\t\t_clearSkinInstances() {\n\t\t\t\tfor(let i = 0; i < this._meshInstances.length; i++){\n\t\t\t\t\t\tconst meshInstance = this._meshInstances[i];\n\t\t\t\t\t\tSkinInstanceCache.removeCachedSkinInstance(meshInstance.skinInstance);\n\t\t\t\t\t\tmeshInstance.skinInstance = null;\n\t\t\t\t}\n\t\t}\n\t\t_cloneSkinInstances() {\n\t\t\t\tif (this._meshInstances.length && this._rootBone instanceof GraphNode) {\n\t\t\t\t\t\tfor(let i = 0; i < this._meshInstances.length; i++){\n\t\t\t\t\t\t\t\tconst meshInstance = this._meshInstances[i];\n\t\t\t\t\t\t\t\tconst mesh = meshInstance.mesh;\n\t\t\t\t\t\t\t\tif (mesh.skin && !meshInstance.skinInstance) {\n\t\t\t\t\t\t\t\t\t\tmeshInstance.skinInstance = SkinInstanceCache.createCachedSkinInstance(mesh.skin, this._rootBone, this.entity);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_cloneMeshes(meshes) {\n\t\t\t\tif (meshes && meshes.length) {\n\t\t\t\t\t\tconst meshInstances = [];\n\t\t\t\t\t\tfor(let i = 0; i < meshes.length; i++){\n\t\t\t\t\t\t\t\tconst mesh = meshes[i];\n\t\t\t\t\t\t\t\tconst material = this._materialReferences[i] && this._materialReferences[i].asset && this._materialReferences[i].asset.resource;\n\t\t\t\t\t\t\t\tconst meshInst = new MeshInstance(mesh, material || this.system.defaultMaterial, this.entity);\n\t\t\t\t\t\t\t\tmeshInstances.push(meshInst);\n\t\t\t\t\t\t\t\tif (mesh.morph) {\n\t\t\t\t\t\t\t\t\t\tmeshInst.morphInstance = new MorphInstance(mesh.morph);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.meshInstances = meshInstances;\n\t\t\t\t\t\tthis._cloneSkinInstances();\n\t\t\t\t}\n\t\t}\n\t\t_onRenderAssetUnload() {\n\t\t\t\tif (this._type === 'asset') {\n\t\t\t\t\t\tthis.destroyMeshInstances();\n\t\t\t\t}\n\t\t}\n\t\t_onRenderAssetRemove() {\n\t\t\t\tthis._evtSetMeshes?.off();\n\t\t\t\tthis._evtSetMeshes = null;\n\t\t\t\tthis._onRenderAssetUnload();\n\t\t}\n\t\t_onMaterialAdded(index, component, asset) {\n\t\t\t\tif (asset.resource) {\n\t\t\t\t\t\tthis._onMaterialLoad(index, component, asset);\n\t\t\t\t} else {\n\t\t\t\t\t\tif (this.enabled && this.entity.enabled) {\n\t\t\t\t\t\t\t\tthis.system.app.assets.load(asset);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_updateMainMaterial(index, material) {\n\t\t\t\tif (index === 0) {\n\t\t\t\t\t\tthis.material = material;\n\t\t\t\t}\n\t\t}\n\t\t_onMaterialLoad(index, component, asset) {\n\t\t\t\tif (this._meshInstances[index]) {\n\t\t\t\t\t\tthis._meshInstances[index].material = asset.resource;\n\t\t\t\t}\n\t\t\t\tthis._updateMainMaterial(index, asset.resource);\n\t\t}\n\t\t_onMaterialRemove(index, component, asset) {\n\t\t\t\tif (this._meshInstances[index]) {\n\t\t\t\t\t\tthis._meshInstances[index].material = this.system.defaultMaterial;\n\t\t\t\t}\n\t\t\t\tthis._updateMainMaterial(index, this.system.defaultMaterial);\n\t\t}\n\t\t_onMaterialUnload(index, component, asset) {\n\t\t\t\tif (this._meshInstances[index]) {\n\t\t\t\t\t\tthis._meshInstances[index].material = this.system.defaultMaterial;\n\t\t\t\t}\n\t\t\t\tthis._updateMainMaterial(index, this.system.defaultMaterial);\n\t\t}\n\t\tresolveDuplicatedEntityReferenceProperties(oldRender, duplicatedIdsMap) {\n\t\t\t\tif (oldRender.rootBone) {\n\t\t\t\t\t\tthis.rootBone = duplicatedIdsMap[oldRender.rootBone.getGuid()];\n\t\t\t\t}\n\t\t}\n}\n\nclass RenderComponentData {\n\t\tconstructor(){\n\t\t\t\tthis.enabled = true;\n\t\t}\n}\n\nconst _schema$9 = [\n\t\t'enabled'\n];\nconst _properties$1 = [\n\t\t'material',\n\t\t'meshInstances',\n\t\t'asset',\n\t\t'materialAssets',\n\t\t'castShadows',\n\t\t'receiveShadows',\n\t\t'castShadowsLightmap',\n\t\t'lightmapped',\n\t\t'lightmapSizeMultiplier',\n\t\t'renderStyle',\n\t\t'type',\n\t\t'layers',\n\t\t'isStatic',\n\t\t'batchGroupId',\n\t\t'rootBone'\n];\nclass RenderComponentSystem extends ComponentSystem {\n\t\tconstructor(app){\n\t\t\t\tsuper(app);\n\t\t\t\tthis.id = 'render';\n\t\t\t\tthis.ComponentType = RenderComponent;\n\t\t\t\tthis.DataType = RenderComponentData;\n\t\t\t\tthis.schema = _schema$9;\n\t\t\t\tthis.defaultMaterial = getDefaultMaterial(app.graphicsDevice);\n\t\t\t\tthis.on('beforeremove', this.onRemove, this);\n\t\t}\n\t\tinitializeComponentData(component, _data, properties) {\n\t\t\t\tif (_data.batchGroupId === null || _data.batchGroupId === undefined) {\n\t\t\t\t\t\t_data.batchGroupId = -1;\n\t\t\t\t}\n\t\t\t\tif (_data.layers && _data.layers.length) {\n\t\t\t\t\t\t_data.layers = _data.layers.slice(0);\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < _properties$1.length; i++){\n\t\t\t\t\t\tif (_data.hasOwnProperty(_properties$1[i])) {\n\t\t\t\t\t\t\t\tcomponent[_properties$1[i]] = _data[_properties$1[i]];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (_data.aabbCenter && _data.aabbHalfExtents) {\n\t\t\t\t\t\tcomponent.customAabb = new BoundingBox(new Vec3(_data.aabbCenter), new Vec3(_data.aabbHalfExtents));\n\t\t\t\t}\n\t\t\t\tsuper.initializeComponentData(component, _data, _schema$9);\n\t\t}\n\t\tcloneComponent(entity, clone) {\n\t\t\t\tconst data = {};\n\t\t\t\tfor(let i = 0; i < _properties$1.length; i++){\n\t\t\t\t\t\tdata[_properties$1[i]] = entity.render[_properties$1[i]];\n\t\t\t\t}\n\t\t\t\tdata.enabled = entity.render.enabled;\n\t\t\t\tdelete data.meshInstances;\n\t\t\t\tconst component = this.addComponent(clone, data);\n\t\t\t\tconst srcMeshInstances = entity.render.meshInstances;\n\t\t\t\tconst meshes = srcMeshInstances.map((mi)=>mi.mesh);\n\t\t\t\tcomponent._onSetMeshes(meshes);\n\t\t\t\tfor(let m = 0; m < srcMeshInstances.length; m++){\n\t\t\t\t\t\tcomponent.meshInstances[m].material = srcMeshInstances[m].material;\n\t\t\t\t}\n\t\t\t\tif (entity.render.customAabb) {\n\t\t\t\t\t\tcomponent.customAabb = entity.render.customAabb.clone();\n\t\t\t\t}\n\t\t\t\treturn component;\n\t\t}\n\t\tonRemove(entity, component) {\n\t\t\t\tcomponent.onRemove();\n\t\t}\n}\nComponent._buildAccessors(RenderComponent.prototype, _schema$9);\n\nclass ObjectPool {\n\t\tconstructor(constructorFunc, size){\n\t\t\t\tthis._pool = [];\n\t\t\t\tthis._count = 0;\n\t\t\t\tthis._constructor = constructorFunc;\n\t\t\t\tthis._resize(size);\n\t\t}\n\t\t_resize(size) {\n\t\t\t\tif (size > this._pool.length) {\n\t\t\t\t\t\tfor(let i = this._pool.length; i < size; i++){\n\t\t\t\t\t\t\t\tthis._pool[i] = new this._constructor();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tallocate() {\n\t\t\t\tif (this._count >= this._pool.length) {\n\t\t\t\t\t\tthis._resize(this._pool.length * 2);\n\t\t\t\t}\n\t\t\t\treturn this._pool[this._count++];\n\t\t}\n\t\tfreeAll() {\n\t\t\t\tthis._count = 0;\n\t\t}\n}\n\nlet _ammoTransform;\nlet _ammoVec1, _ammoVec2, _ammoQuat;\nconst _quat1 = new Quat();\nconst _quat2 = new Quat();\nconst _vec3 = new Vec3();\nclass RigidBodyComponent extends Component {\n\t\tstatic{\n\t\t\t\tthis.EVENT_CONTACT = 'contact';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_COLLISIONSTART = 'collisionstart';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_COLLISIONEND = 'collisionend';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_TRIGGERENTER = 'triggerenter';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_TRIGGERLEAVE = 'triggerleave';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.order = -1;\n\t\t}\n\t\tstatic onLibraryLoaded() {\n\t\t\t\tif (typeof Ammo !== 'undefined') {\n\t\t\t\t\t\t_ammoTransform = new Ammo.btTransform();\n\t\t\t\t\t\t_ammoVec1 = new Ammo.btVector3();\n\t\t\t\t\t\t_ammoVec2 = new Ammo.btVector3();\n\t\t\t\t\t\t_ammoQuat = new Ammo.btQuaternion();\n\t\t\t\t}\n\t\t}\n\t\tstatic onAppDestroy() {\n\t\t\t\tAmmo.destroy(_ammoTransform);\n\t\t\t\tAmmo.destroy(_ammoVec1);\n\t\t\t\tAmmo.destroy(_ammoVec2);\n\t\t\t\tAmmo.destroy(_ammoQuat);\n\t\t\t\t_ammoTransform = null;\n\t\t\t\t_ammoVec1 = null;\n\t\t\t\t_ammoVec2 = null;\n\t\t\t\t_ammoQuat = null;\n\t\t}\n\t\tset angularDamping(damping) {\n\t\t\t\tif (this._angularDamping !== damping) {\n\t\t\t\t\t\tthis._angularDamping = damping;\n\t\t\t\t\t\tif (this._body) {\n\t\t\t\t\t\t\t\tthis._body.setDamping(this._linearDamping, damping);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget angularDamping() {\n\t\t\t\treturn this._angularDamping;\n\t\t}\n\t\tset angularFactor(factor) {\n\t\t\t\tif (!this._angularFactor.equals(factor)) {\n\t\t\t\t\t\tthis._angularFactor.copy(factor);\n\t\t\t\t\t\tif (this._body && this._type === BODYTYPE_DYNAMIC) {\n\t\t\t\t\t\t\t\t_ammoVec1.setValue(factor.x, factor.y, factor.z);\n\t\t\t\t\t\t\t\tthis._body.setAngularFactor(_ammoVec1);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget angularFactor() {\n\t\t\t\treturn this._angularFactor;\n\t\t}\n\t\tset angularVelocity(velocity) {\n\t\t\t\tif (this._body && this._type === BODYTYPE_DYNAMIC) {\n\t\t\t\t\t\tthis._body.activate();\n\t\t\t\t\t\t_ammoVec1.setValue(velocity.x, velocity.y, velocity.z);\n\t\t\t\t\t\tthis._body.setAngularVelocity(_ammoVec1);\n\t\t\t\t\t\tthis._angularVelocity.copy(velocity);\n\t\t\t\t}\n\t\t}\n\t\tget angularVelocity() {\n\t\t\t\tif (this._body && this._type === BODYTYPE_DYNAMIC) {\n\t\t\t\t\t\tconst velocity = this._body.getAngularVelocity();\n\t\t\t\t\t\tthis._angularVelocity.set(velocity.x(), velocity.y(), velocity.z());\n\t\t\t\t}\n\t\t\t\treturn this._angularVelocity;\n\t\t}\n\t\tset body(body) {\n\t\t\t\tif (this._body !== body) {\n\t\t\t\t\t\tthis._body = body;\n\t\t\t\t\t\tif (body && this._simulationEnabled) {\n\t\t\t\t\t\t\t\tbody.activate();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget body() {\n\t\t\t\treturn this._body;\n\t\t}\n\t\tset friction(friction) {\n\t\t\t\tif (this._friction !== friction) {\n\t\t\t\t\t\tthis._friction = friction;\n\t\t\t\t\t\tif (this._body) {\n\t\t\t\t\t\t\t\tthis._body.setFriction(friction);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget friction() {\n\t\t\t\treturn this._friction;\n\t\t}\n\t\tset group(group) {\n\t\t\t\tif (this._group !== group) {\n\t\t\t\t\t\tthis._group = group;\n\t\t\t\t\t\tif (this.enabled && this.entity.enabled) {\n\t\t\t\t\t\t\t\tthis.disableSimulation();\n\t\t\t\t\t\t\t\tthis.enableSimulation();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget group() {\n\t\t\t\treturn this._group;\n\t\t}\n\t\tset linearDamping(damping) {\n\t\t\t\tif (this._linearDamping !== damping) {\n\t\t\t\t\t\tthis._linearDamping = damping;\n\t\t\t\t\t\tif (this._body) {\n\t\t\t\t\t\t\t\tthis._body.setDamping(damping, this._angularDamping);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget linearDamping() {\n\t\t\t\treturn this._linearDamping;\n\t\t}\n\t\tset linearFactor(factor) {\n\t\t\t\tif (!this._linearFactor.equals(factor)) {\n\t\t\t\t\t\tthis._linearFactor.copy(factor);\n\t\t\t\t\t\tif (this._body && this._type === BODYTYPE_DYNAMIC) {\n\t\t\t\t\t\t\t\t_ammoVec1.setValue(factor.x, factor.y, factor.z);\n\t\t\t\t\t\t\t\tthis._body.setLinearFactor(_ammoVec1);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget linearFactor() {\n\t\t\t\treturn this._linearFactor;\n\t\t}\n\t\tset linearVelocity(velocity) {\n\t\t\t\tif (this._body && this._type === BODYTYPE_DYNAMIC) {\n\t\t\t\t\t\tthis._body.activate();\n\t\t\t\t\t\t_ammoVec1.setValue(velocity.x, velocity.y, velocity.z);\n\t\t\t\t\t\tthis._body.setLinearVelocity(_ammoVec1);\n\t\t\t\t\t\tthis._linearVelocity.copy(velocity);\n\t\t\t\t}\n\t\t}\n\t\tget linearVelocity() {\n\t\t\t\tif (this._body && this._type === BODYTYPE_DYNAMIC) {\n\t\t\t\t\t\tconst velocity = this._body.getLinearVelocity();\n\t\t\t\t\t\tthis._linearVelocity.set(velocity.x(), velocity.y(), velocity.z());\n\t\t\t\t}\n\t\t\t\treturn this._linearVelocity;\n\t\t}\n\t\tset mask(mask) {\n\t\t\t\tif (this._mask !== mask) {\n\t\t\t\t\t\tthis._mask = mask;\n\t\t\t\t\t\tif (this.enabled && this.entity.enabled) {\n\t\t\t\t\t\t\t\tthis.disableSimulation();\n\t\t\t\t\t\t\t\tthis.enableSimulation();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget mask() {\n\t\t\t\treturn this._mask;\n\t\t}\n\t\tset mass(mass) {\n\t\t\t\tif (this._mass !== mass) {\n\t\t\t\t\t\tthis._mass = mass;\n\t\t\t\t\t\tif (this._body && this._type === BODYTYPE_DYNAMIC) {\n\t\t\t\t\t\t\t\tconst enabled = this.enabled && this.entity.enabled;\n\t\t\t\t\t\t\t\tif (enabled) {\n\t\t\t\t\t\t\t\t\t\tthis.disableSimulation();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis._body.getCollisionShape().calculateLocalInertia(mass, _ammoVec1);\n\t\t\t\t\t\t\t\tthis._body.setMassProps(mass, _ammoVec1);\n\t\t\t\t\t\t\t\tthis._body.updateInertiaTensor();\n\t\t\t\t\t\t\t\tif (enabled) {\n\t\t\t\t\t\t\t\t\t\tthis.enableSimulation();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget mass() {\n\t\t\t\treturn this._mass;\n\t\t}\n\t\tset restitution(restitution) {\n\t\t\t\tif (this._restitution !== restitution) {\n\t\t\t\t\t\tthis._restitution = restitution;\n\t\t\t\t\t\tif (this._body) {\n\t\t\t\t\t\t\t\tthis._body.setRestitution(restitution);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget restitution() {\n\t\t\t\treturn this._restitution;\n\t\t}\n\t\tset rollingFriction(friction) {\n\t\t\t\tif (this._rollingFriction !== friction) {\n\t\t\t\t\t\tthis._rollingFriction = friction;\n\t\t\t\t\t\tif (this._body) {\n\t\t\t\t\t\t\t\tthis._body.setRollingFriction(friction);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget rollingFriction() {\n\t\t\t\treturn this._rollingFriction;\n\t\t}\n\t\tset type(type) {\n\t\t\t\tif (this._type !== type) {\n\t\t\t\t\t\tthis._type = type;\n\t\t\t\t\t\tthis.disableSimulation();\n\t\t\t\t\t\tswitch(type){\n\t\t\t\t\t\t\t\tcase BODYTYPE_DYNAMIC:\n\t\t\t\t\t\t\t\t\t\tthis._group = BODYGROUP_DYNAMIC;\n\t\t\t\t\t\t\t\t\t\tthis._mask = BODYMASK_ALL;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase BODYTYPE_KINEMATIC:\n\t\t\t\t\t\t\t\t\t\tthis._group = BODYGROUP_KINEMATIC;\n\t\t\t\t\t\t\t\t\t\tthis._mask = BODYMASK_ALL;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase BODYTYPE_STATIC:\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tthis._group = BODYGROUP_STATIC;\n\t\t\t\t\t\t\t\t\t\tthis._mask = BODYMASK_NOT_STATIC;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.createBody();\n\t\t\t\t}\n\t\t}\n\t\tget type() {\n\t\t\t\treturn this._type;\n\t\t}\n\t\tcreateBody() {\n\t\t\t\tconst entity = this.entity;\n\t\t\t\tlet shape;\n\t\t\t\tif (entity.collision) {\n\t\t\t\t\t\tshape = entity.collision.shape;\n\t\t\t\t\t\tif (entity.trigger) {\n\t\t\t\t\t\t\t\tentity.trigger.destroy();\n\t\t\t\t\t\t\t\tdelete entity.trigger;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (shape) {\n\t\t\t\t\t\tif (this._body) {\n\t\t\t\t\t\t\t\tthis.system.removeBody(this._body);\n\t\t\t\t\t\t\t\tthis.system.destroyBody(this._body);\n\t\t\t\t\t\t\t\tthis._body = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst mass = this._type === BODYTYPE_DYNAMIC ? this._mass : 0;\n\t\t\t\t\t\tthis._getEntityTransform(_ammoTransform);\n\t\t\t\t\t\tconst body = this.system.createBody(mass, shape, _ammoTransform);\n\t\t\t\t\t\tbody.setRestitution(this._restitution);\n\t\t\t\t\t\tbody.setFriction(this._friction);\n\t\t\t\t\t\tbody.setRollingFriction(this._rollingFriction);\n\t\t\t\t\t\tbody.setDamping(this._linearDamping, this._angularDamping);\n\t\t\t\t\t\tif (this._type === BODYTYPE_DYNAMIC) {\n\t\t\t\t\t\t\t\tconst linearFactor = this._linearFactor;\n\t\t\t\t\t\t\t\t_ammoVec1.setValue(linearFactor.x, linearFactor.y, linearFactor.z);\n\t\t\t\t\t\t\t\tbody.setLinearFactor(_ammoVec1);\n\t\t\t\t\t\t\t\tconst angularFactor = this._angularFactor;\n\t\t\t\t\t\t\t\t_ammoVec1.setValue(angularFactor.x, angularFactor.y, angularFactor.z);\n\t\t\t\t\t\t\t\tbody.setAngularFactor(_ammoVec1);\n\t\t\t\t\t\t} else if (this._type === BODYTYPE_KINEMATIC) {\n\t\t\t\t\t\t\t\tbody.setCollisionFlags(body.getCollisionFlags() | BODYFLAG_KINEMATIC_OBJECT);\n\t\t\t\t\t\t\t\tbody.setActivationState(BODYSTATE_DISABLE_DEACTIVATION);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbody.entity = entity;\n\t\t\t\t\t\tthis.body = body;\n\t\t\t\t\t\tif (this.enabled && entity.enabled) {\n\t\t\t\t\t\t\t\tthis.enableSimulation();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tisActive() {\n\t\t\t\treturn this._body ? this._body.isActive() : false;\n\t\t}\n\t\tactivate() {\n\t\t\t\tif (this._body) {\n\t\t\t\t\t\tthis._body.activate();\n\t\t\t\t}\n\t\t}\n\t\tenableSimulation() {\n\t\t\t\tconst entity = this.entity;\n\t\t\t\tif (entity.collision && entity.collision.enabled && !this._simulationEnabled) {\n\t\t\t\t\t\tconst body = this._body;\n\t\t\t\t\t\tif (body) {\n\t\t\t\t\t\t\t\tthis.system.addBody(body, this._group, this._mask);\n\t\t\t\t\t\t\t\tswitch(this._type){\n\t\t\t\t\t\t\t\t\t\tcase BODYTYPE_DYNAMIC:\n\t\t\t\t\t\t\t\t\t\t\t\tthis.system._dynamic.push(this);\n\t\t\t\t\t\t\t\t\t\t\t\tbody.forceActivationState(BODYSTATE_ACTIVE_TAG);\n\t\t\t\t\t\t\t\t\t\t\t\tthis.syncEntityToBody();\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\tcase BODYTYPE_KINEMATIC:\n\t\t\t\t\t\t\t\t\t\t\t\tthis.system._kinematic.push(this);\n\t\t\t\t\t\t\t\t\t\t\t\tbody.forceActivationState(BODYSTATE_DISABLE_DEACTIVATION);\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\tcase BODYTYPE_STATIC:\n\t\t\t\t\t\t\t\t\t\t\t\tbody.forceActivationState(BODYSTATE_ACTIVE_TAG);\n\t\t\t\t\t\t\t\t\t\t\t\tthis.syncEntityToBody();\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (entity.collision.type === 'compound') {\n\t\t\t\t\t\t\t\t\t\tthis.system._compounds.push(entity.collision);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbody.activate();\n\t\t\t\t\t\t\t\tthis._simulationEnabled = true;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tdisableSimulation() {\n\t\t\t\tconst body = this._body;\n\t\t\t\tif (body && this._simulationEnabled) {\n\t\t\t\t\t\tconst system = this.system;\n\t\t\t\t\t\tlet idx = system._compounds.indexOf(this.entity.collision);\n\t\t\t\t\t\tif (idx > -1) {\n\t\t\t\t\t\t\t\tsystem._compounds.splice(idx, 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tidx = system._dynamic.indexOf(this);\n\t\t\t\t\t\tif (idx > -1) {\n\t\t\t\t\t\t\t\tsystem._dynamic.splice(idx, 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tidx = system._kinematic.indexOf(this);\n\t\t\t\t\t\tif (idx > -1) {\n\t\t\t\t\t\t\t\tsystem._kinematic.splice(idx, 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsystem.removeBody(body);\n\t\t\t\t\t\tbody.forceActivationState(BODYSTATE_DISABLE_SIMULATION);\n\t\t\t\t\t\tthis._simulationEnabled = false;\n\t\t\t\t}\n\t\t}\n\t\tapplyForce(x, y, z, px, py, pz) {\n\t\t\t\tconst body = this._body;\n\t\t\t\tif (body) {\n\t\t\t\t\t\tbody.activate();\n\t\t\t\t\t\tif (x instanceof Vec3) {\n\t\t\t\t\t\t\t\t_ammoVec1.setValue(x.x, x.y, x.z);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t_ammoVec1.setValue(x, y, z);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (y instanceof Vec3) {\n\t\t\t\t\t\t\t\t_ammoVec2.setValue(y.x, y.y, y.z);\n\t\t\t\t\t\t} else if (px !== undefined) {\n\t\t\t\t\t\t\t\t_ammoVec2.setValue(px, py, pz);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t_ammoVec2.setValue(0, 0, 0);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbody.applyForce(_ammoVec1, _ammoVec2);\n\t\t\t\t}\n\t\t}\n\t\tapplyTorque(x, y, z) {\n\t\t\t\tconst body = this._body;\n\t\t\t\tif (body) {\n\t\t\t\t\t\tbody.activate();\n\t\t\t\t\t\tif (x instanceof Vec3) {\n\t\t\t\t\t\t\t\t_ammoVec1.setValue(x.x, x.y, x.z);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t_ammoVec1.setValue(x, y, z);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbody.applyTorque(_ammoVec1);\n\t\t\t\t}\n\t\t}\n\t\tapplyImpulse(x, y, z, px, py, pz) {\n\t\t\t\tconst body = this._body;\n\t\t\t\tif (body) {\n\t\t\t\t\t\tbody.activate();\n\t\t\t\t\t\tif (x instanceof Vec3) {\n\t\t\t\t\t\t\t\t_ammoVec1.setValue(x.x, x.y, x.z);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t_ammoVec1.setValue(x, y, z);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (y instanceof Vec3) {\n\t\t\t\t\t\t\t\t_ammoVec2.setValue(y.x, y.y, y.z);\n\t\t\t\t\t\t} else if (px !== undefined) {\n\t\t\t\t\t\t\t\t_ammoVec2.setValue(px, py, pz);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t_ammoVec2.setValue(0, 0, 0);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbody.applyImpulse(_ammoVec1, _ammoVec2);\n\t\t\t\t}\n\t\t}\n\t\tapplyTorqueImpulse(x, y, z) {\n\t\t\t\tconst body = this._body;\n\t\t\t\tif (body) {\n\t\t\t\t\t\tbody.activate();\n\t\t\t\t\t\tif (x instanceof Vec3) {\n\t\t\t\t\t\t\t\t_ammoVec1.setValue(x.x, x.y, x.z);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t_ammoVec1.setValue(x, y, z);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbody.applyTorqueImpulse(_ammoVec1);\n\t\t\t\t}\n\t\t}\n\t\tisStatic() {\n\t\t\t\treturn this._type === BODYTYPE_STATIC;\n\t\t}\n\t\tisStaticOrKinematic() {\n\t\t\t\treturn this._type === BODYTYPE_STATIC || this._type === BODYTYPE_KINEMATIC;\n\t\t}\n\t\tisKinematic() {\n\t\t\t\treturn this._type === BODYTYPE_KINEMATIC;\n\t\t}\n\t\t_getEntityTransform(transform) {\n\t\t\t\tconst entity = this.entity;\n\t\t\t\tconst component = entity.collision;\n\t\t\t\tif (component) {\n\t\t\t\t\t\tconst bodyPos = component.getShapePosition();\n\t\t\t\t\t\tconst bodyRot = component.getShapeRotation();\n\t\t\t\t\t\t_ammoVec1.setValue(bodyPos.x, bodyPos.y, bodyPos.z);\n\t\t\t\t\t\t_ammoQuat.setValue(bodyRot.x, bodyRot.y, bodyRot.z, bodyRot.w);\n\t\t\t\t} else {\n\t\t\t\t\t\tconst pos = entity.getPosition();\n\t\t\t\t\t\tconst rot = entity.getRotation();\n\t\t\t\t\t\t_ammoVec1.setValue(pos.x, pos.y, pos.z);\n\t\t\t\t\t\t_ammoQuat.setValue(rot.x, rot.y, rot.z, rot.w);\n\t\t\t\t}\n\t\t\t\ttransform.setOrigin(_ammoVec1);\n\t\t\t\ttransform.setRotation(_ammoQuat);\n\t\t}\n\t\tsyncEntityToBody() {\n\t\t\t\tconst body = this._body;\n\t\t\t\tif (body) {\n\t\t\t\t\t\tthis._getEntityTransform(_ammoTransform);\n\t\t\t\t\t\tbody.setWorldTransform(_ammoTransform);\n\t\t\t\t\t\tif (this._type === BODYTYPE_KINEMATIC) {\n\t\t\t\t\t\t\t\tconst motionState = body.getMotionState();\n\t\t\t\t\t\t\t\tif (motionState) {\n\t\t\t\t\t\t\t\t\t\tmotionState.setWorldTransform(_ammoTransform);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbody.activate();\n\t\t\t\t}\n\t\t}\n\t\t_updateDynamic() {\n\t\t\t\tconst body = this._body;\n\t\t\t\tif (body.isActive()) {\n\t\t\t\t\t\tconst motionState = body.getMotionState();\n\t\t\t\t\t\tif (motionState) {\n\t\t\t\t\t\t\t\tconst entity = this.entity;\n\t\t\t\t\t\t\t\tmotionState.getWorldTransform(_ammoTransform);\n\t\t\t\t\t\t\t\tconst p = _ammoTransform.getOrigin();\n\t\t\t\t\t\t\t\tconst q = _ammoTransform.getRotation();\n\t\t\t\t\t\t\t\tconst component = entity.collision;\n\t\t\t\t\t\t\t\tif (component && component._hasOffset) {\n\t\t\t\t\t\t\t\t\t\tconst lo = component.data.linearOffset;\n\t\t\t\t\t\t\t\t\t\tconst ao = component.data.angularOffset;\n\t\t\t\t\t\t\t\t\t\tconst invertedAo = _quat2.copy(ao).invert();\n\t\t\t\t\t\t\t\t\t\tconst entityRot = _quat1.set(q.x(), q.y(), q.z(), q.w()).mul(invertedAo);\n\t\t\t\t\t\t\t\t\t\tentityRot.transformVector(lo, _vec3);\n\t\t\t\t\t\t\t\t\t\tentity.setPosition(p.x() - _vec3.x, p.y() - _vec3.y, p.z() - _vec3.z);\n\t\t\t\t\t\t\t\t\t\tentity.setRotation(entityRot);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tentity.setPosition(p.x(), p.y(), p.z());\n\t\t\t\t\t\t\t\t\t\tentity.setRotation(q.x(), q.y(), q.z(), q.w());\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_updateKinematic() {\n\t\t\t\tconst motionState = this._body.getMotionState();\n\t\t\t\tif (motionState) {\n\t\t\t\t\t\tthis._getEntityTransform(_ammoTransform);\n\t\t\t\t\t\tmotionState.setWorldTransform(_ammoTransform);\n\t\t\t\t}\n\t\t}\n\t\tteleport(x, y, z, rx, ry, rz) {\n\t\t\t\tif (x instanceof Vec3) {\n\t\t\t\t\t\tthis.entity.setPosition(x);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.entity.setPosition(x, y, z);\n\t\t\t\t}\n\t\t\t\tif (y instanceof Quat) {\n\t\t\t\t\t\tthis.entity.setRotation(y);\n\t\t\t\t} else if (y instanceof Vec3) {\n\t\t\t\t\t\tthis.entity.setEulerAngles(y);\n\t\t\t\t} else if (rx !== undefined) {\n\t\t\t\t\t\tthis.entity.setEulerAngles(rx, ry, rz);\n\t\t\t\t}\n\t\t\t\tthis.syncEntityToBody();\n\t\t}\n\t\tonEnable() {\n\t\t\t\tif (!this._body) {\n\t\t\t\t\t\tthis.createBody();\n\t\t\t\t}\n\t\t\t\tthis.enableSimulation();\n\t\t}\n\t\tonDisable() {\n\t\t\t\tthis.disableSimulation();\n\t\t}\n\t\tconstructor(...args){\n\t\t\t\tsuper(...args), this._angularDamping = 0, this._angularFactor = new Vec3(1, 1, 1), this._angularVelocity = new Vec3(), this._body = null, this._friction = 0.5, this._group = BODYGROUP_STATIC, this._linearDamping = 0, this._linearFactor = new Vec3(1, 1, 1), this._linearVelocity = new Vec3(), this._mask = BODYMASK_NOT_STATIC, this._mass = 1, this._restitution = 0, this._rollingFriction = 0, this._simulationEnabled = false, this._type = BODYTYPE_STATIC;\n\t\t}\n}\n\nclass RigidBodyComponentData {\n\t\tconstructor(){\n\t\t\t\tthis.enabled = true;\n\t\t}\n}\n\nlet ammoRayStart, ammoRayEnd;\nclass RaycastResult {\n\t\tconstructor(entity, point, normal, hitFraction){\n\t\t\t\tthis.entity = entity;\n\t\t\t\tthis.point = point;\n\t\t\t\tthis.normal = normal;\n\t\t\t\tthis.hitFraction = hitFraction;\n\t\t}\n}\nclass SingleContactResult {\n\t\tconstructor(a, b, contactPoint){\n\t\t\t\tif (arguments.length !== 0) {\n\t\t\t\t\t\tthis.a = a;\n\t\t\t\t\t\tthis.b = b;\n\t\t\t\t\t\tthis.impulse = contactPoint.impulse;\n\t\t\t\t\t\tthis.localPointA = contactPoint.localPoint;\n\t\t\t\t\t\tthis.localPointB = contactPoint.localPointOther;\n\t\t\t\t\t\tthis.pointA = contactPoint.point;\n\t\t\t\t\t\tthis.pointB = contactPoint.pointOther;\n\t\t\t\t\t\tthis.normal = contactPoint.normal;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.a = null;\n\t\t\t\t\t\tthis.b = null;\n\t\t\t\t\t\tthis.impulse = 0;\n\t\t\t\t\t\tthis.localPointA = new Vec3();\n\t\t\t\t\t\tthis.localPointB = new Vec3();\n\t\t\t\t\t\tthis.pointA = new Vec3();\n\t\t\t\t\t\tthis.pointB = new Vec3();\n\t\t\t\t\t\tthis.normal = new Vec3();\n\t\t\t\t}\n\t\t}\n}\nclass ContactPoint {\n\t\tconstructor(localPoint = new Vec3(), localPointOther = new Vec3(), point = new Vec3(), pointOther = new Vec3(), normal = new Vec3(), impulse = 0){\n\t\t\t\tthis.localPoint = localPoint;\n\t\t\t\tthis.localPointOther = localPointOther;\n\t\t\t\tthis.point = point;\n\t\t\t\tthis.pointOther = pointOther;\n\t\t\t\tthis.normal = normal;\n\t\t\t\tthis.impulse = impulse;\n\t\t}\n}\nclass ContactResult {\n\t\tconstructor(other, contacts){\n\t\t\t\tthis.other = other;\n\t\t\t\tthis.contacts = contacts;\n\t\t}\n}\nconst _schema$8 = [\n\t\t'enabled'\n];\nclass RigidBodyComponentSystem extends ComponentSystem {\n\t\tstatic{\n\t\t\t\tthis.EVENT_CONTACT = 'contact';\n\t\t}\n\t\tconstructor(app){\n\t\t\t\tsuper(app), this.maxSubSteps = 10, this.fixedTimeStep = 1 / 60, this.gravity = new Vec3(0, -9.81, 0), this._gravityFloat32 = new Float32Array(3), this._dynamic = [], this._kinematic = [], this._triggers = [], this._compounds = [];\n\t\t\t\tthis.id = 'rigidbody';\n\t\t\t\tthis._stats = app.stats.frame;\n\t\t\t\tthis.ComponentType = RigidBodyComponent;\n\t\t\t\tthis.DataType = RigidBodyComponentData;\n\t\t\t\tthis.contactPointPool = null;\n\t\t\t\tthis.contactResultPool = null;\n\t\t\t\tthis.singleContactResultPool = null;\n\t\t\t\tthis.schema = _schema$8;\n\t\t\t\tthis.collisions = {};\n\t\t\t\tthis.frameCollisions = {};\n\t\t\t\tthis.on('beforeremove', this.onBeforeRemove, this);\n\t\t}\n\t\tonLibraryLoaded() {\n\t\t\t\tif (typeof Ammo !== 'undefined') {\n\t\t\t\t\t\tthis.collisionConfiguration = new Ammo.btDefaultCollisionConfiguration();\n\t\t\t\t\t\tthis.dispatcher = new Ammo.btCollisionDispatcher(this.collisionConfiguration);\n\t\t\t\t\t\tthis.overlappingPairCache = new Ammo.btDbvtBroadphase();\n\t\t\t\t\t\tthis.solver = new Ammo.btSequentialImpulseConstraintSolver();\n\t\t\t\t\t\tthis.dynamicsWorld = new Ammo.btDiscreteDynamicsWorld(this.dispatcher, this.overlappingPairCache, this.solver, this.collisionConfiguration);\n\t\t\t\t\t\tif (this.dynamicsWorld.setInternalTickCallback) {\n\t\t\t\t\t\t\t\tconst checkForCollisionsPointer = Ammo.addFunction(this._checkForCollisions.bind(this), 'vif');\n\t\t\t\t\t\t\t\tthis.dynamicsWorld.setInternalTickCallback(checkForCollisionsPointer);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tammoRayStart = new Ammo.btVector3();\n\t\t\t\t\t\tammoRayEnd = new Ammo.btVector3();\n\t\t\t\t\t\tRigidBodyComponent.onLibraryLoaded();\n\t\t\t\t\t\tthis.contactPointPool = new ObjectPool(ContactPoint, 1);\n\t\t\t\t\t\tthis.contactResultPool = new ObjectPool(ContactResult, 1);\n\t\t\t\t\t\tthis.singleContactResultPool = new ObjectPool(SingleContactResult, 1);\n\t\t\t\t\t\tthis.app.systems.on('update', this.onUpdate, this);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.app.systems.off('update', this.onUpdate, this);\n\t\t\t\t}\n\t\t}\n\t\tinitializeComponentData(component, data, properties) {\n\t\t\t\tconst props = [\n\t\t\t\t\t\t'mass',\n\t\t\t\t\t\t'linearDamping',\n\t\t\t\t\t\t'angularDamping',\n\t\t\t\t\t\t'linearFactor',\n\t\t\t\t\t\t'angularFactor',\n\t\t\t\t\t\t'friction',\n\t\t\t\t\t\t'rollingFriction',\n\t\t\t\t\t\t'restitution',\n\t\t\t\t\t\t'type',\n\t\t\t\t\t\t'group',\n\t\t\t\t\t\t'mask'\n\t\t\t\t];\n\t\t\t\tfor (const property of props){\n\t\t\t\t\t\tif (data.hasOwnProperty(property)) {\n\t\t\t\t\t\t\t\tconst value = data[property];\n\t\t\t\t\t\t\t\tif (Array.isArray(value)) {\n\t\t\t\t\t\t\t\t\t\tcomponent[property] = new Vec3(value[0], value[1], value[2]);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tcomponent[property] = value;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tsuper.initializeComponentData(component, data, [\n\t\t\t\t\t\t'enabled'\n\t\t\t\t]);\n\t\t}\n\t\tcloneComponent(entity, clone) {\n\t\t\t\tconst rigidbody = entity.rigidbody;\n\t\t\t\tconst data = {\n\t\t\t\t\t\tenabled: rigidbody.enabled,\n\t\t\t\t\t\tmass: rigidbody.mass,\n\t\t\t\t\t\tlinearDamping: rigidbody.linearDamping,\n\t\t\t\t\t\tangularDamping: rigidbody.angularDamping,\n\t\t\t\t\t\tlinearFactor: [\n\t\t\t\t\t\t\t\trigidbody.linearFactor.x,\n\t\t\t\t\t\t\t\trigidbody.linearFactor.y,\n\t\t\t\t\t\t\t\trigidbody.linearFactor.z\n\t\t\t\t\t\t],\n\t\t\t\t\t\tangularFactor: [\n\t\t\t\t\t\t\t\trigidbody.angularFactor.x,\n\t\t\t\t\t\t\t\trigidbody.angularFactor.y,\n\t\t\t\t\t\t\t\trigidbody.angularFactor.z\n\t\t\t\t\t\t],\n\t\t\t\t\t\tfriction: rigidbody.friction,\n\t\t\t\t\t\trollingFriction: rigidbody.rollingFriction,\n\t\t\t\t\t\trestitution: rigidbody.restitution,\n\t\t\t\t\t\ttype: rigidbody.type,\n\t\t\t\t\t\tgroup: rigidbody.group,\n\t\t\t\t\t\tmask: rigidbody.mask\n\t\t\t\t};\n\t\t\t\treturn this.addComponent(clone, data);\n\t\t}\n\t\tonBeforeRemove(entity, component) {\n\t\t\t\tif (component.enabled) {\n\t\t\t\t\t\tcomponent.enabled = false;\n\t\t\t\t}\n\t\t\t\tif (component.body) {\n\t\t\t\t\t\tthis.destroyBody(component.body);\n\t\t\t\t\t\tcomponent.body = null;\n\t\t\t\t}\n\t\t}\n\t\taddBody(body, group, mask) {\n\t\t\t\tif (group !== undefined && mask !== undefined) {\n\t\t\t\t\t\tthis.dynamicsWorld.addRigidBody(body, group, mask);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.dynamicsWorld.addRigidBody(body);\n\t\t\t\t}\n\t\t}\n\t\tremoveBody(body) {\n\t\t\t\tthis.dynamicsWorld.removeRigidBody(body);\n\t\t}\n\t\tcreateBody(mass, shape, transform) {\n\t\t\t\tconst localInertia = new Ammo.btVector3(0, 0, 0);\n\t\t\t\tif (mass !== 0) {\n\t\t\t\t\t\tshape.calculateLocalInertia(mass, localInertia);\n\t\t\t\t}\n\t\t\t\tconst motionState = new Ammo.btDefaultMotionState(transform);\n\t\t\t\tconst bodyInfo = new Ammo.btRigidBodyConstructionInfo(mass, motionState, shape, localInertia);\n\t\t\t\tconst body = new Ammo.btRigidBody(bodyInfo);\n\t\t\t\tAmmo.destroy(bodyInfo);\n\t\t\t\tAmmo.destroy(localInertia);\n\t\t\t\treturn body;\n\t\t}\n\t\tdestroyBody(body) {\n\t\t\t\tconst motionState = body.getMotionState();\n\t\t\t\tif (motionState) {\n\t\t\t\t\t\tAmmo.destroy(motionState);\n\t\t\t\t}\n\t\t\t\tAmmo.destroy(body);\n\t\t}\n\t\traycastFirst(start, end, options = {}) {\n\t\t\t\tif (options.filterTags || options.filterCallback) {\n\t\t\t\t\t\toptions.sort = true;\n\t\t\t\t\t\treturn this.raycastAll(start, end, options)[0] || null;\n\t\t\t\t}\n\t\t\t\tlet result = null;\n\t\t\t\tammoRayStart.setValue(start.x, start.y, start.z);\n\t\t\t\tammoRayEnd.setValue(end.x, end.y, end.z);\n\t\t\t\tconst rayCallback = new Ammo.ClosestRayResultCallback(ammoRayStart, ammoRayEnd);\n\t\t\t\tif (typeof options.filterCollisionGroup === 'number') {\n\t\t\t\t\t\trayCallback.set_m_collisionFilterGroup(options.filterCollisionGroup);\n\t\t\t\t}\n\t\t\t\tif (typeof options.filterCollisionMask === 'number') {\n\t\t\t\t\t\trayCallback.set_m_collisionFilterMask(options.filterCollisionMask);\n\t\t\t\t}\n\t\t\t\tthis.dynamicsWorld.rayTest(ammoRayStart, ammoRayEnd, rayCallback);\n\t\t\t\tif (rayCallback.hasHit()) {\n\t\t\t\t\t\tconst collisionObj = rayCallback.get_m_collisionObject();\n\t\t\t\t\t\tconst body = Ammo.castObject(collisionObj, Ammo.btRigidBody);\n\t\t\t\t\t\tif (body) {\n\t\t\t\t\t\t\t\tconst point = rayCallback.get_m_hitPointWorld();\n\t\t\t\t\t\t\t\tconst normal = rayCallback.get_m_hitNormalWorld();\n\t\t\t\t\t\t\t\tresult = new RaycastResult(body.entity, new Vec3(point.x(), point.y(), point.z()), new Vec3(normal.x(), normal.y(), normal.z()), rayCallback.get_m_closestHitFraction());\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tAmmo.destroy(rayCallback);\n\t\t\t\treturn result;\n\t\t}\n\t\traycastAll(start, end, options = {}) {\n\t\t\t\tconst results = [];\n\t\t\t\tammoRayStart.setValue(start.x, start.y, start.z);\n\t\t\t\tammoRayEnd.setValue(end.x, end.y, end.z);\n\t\t\t\tconst rayCallback = new Ammo.AllHitsRayResultCallback(ammoRayStart, ammoRayEnd);\n\t\t\t\tif (typeof options.filterCollisionGroup === 'number') {\n\t\t\t\t\t\trayCallback.set_m_collisionFilterGroup(options.filterCollisionGroup);\n\t\t\t\t}\n\t\t\t\tif (typeof options.filterCollisionMask === 'number') {\n\t\t\t\t\t\trayCallback.set_m_collisionFilterMask(options.filterCollisionMask);\n\t\t\t\t}\n\t\t\t\tthis.dynamicsWorld.rayTest(ammoRayStart, ammoRayEnd, rayCallback);\n\t\t\t\tif (rayCallback.hasHit()) {\n\t\t\t\t\t\tconst collisionObjs = rayCallback.get_m_collisionObjects();\n\t\t\t\t\t\tconst points = rayCallback.get_m_hitPointWorld();\n\t\t\t\t\t\tconst normals = rayCallback.get_m_hitNormalWorld();\n\t\t\t\t\t\tconst hitFractions = rayCallback.get_m_hitFractions();\n\t\t\t\t\t\tconst numHits = collisionObjs.size();\n\t\t\t\t\t\tfor(let i = 0; i < numHits; i++){\n\t\t\t\t\t\t\t\tconst body = Ammo.castObject(collisionObjs.at(i), Ammo.btRigidBody);\n\t\t\t\t\t\t\t\tif (body && body.entity) {\n\t\t\t\t\t\t\t\t\t\tif (options.filterTags && !body.entity.tags.has(...options.filterTags) || options.filterCallback && !options.filterCallback(body.entity)) {\n\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tconst point = points.at(i);\n\t\t\t\t\t\t\t\t\t\tconst normal = normals.at(i);\n\t\t\t\t\t\t\t\t\t\tconst result = new RaycastResult(body.entity, new Vec3(point.x(), point.y(), point.z()), new Vec3(normal.x(), normal.y(), normal.z()), hitFractions.at(i));\n\t\t\t\t\t\t\t\t\t\tresults.push(result);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (options.sort) {\n\t\t\t\t\t\t\t\tresults.sort((a, b)=>a.hitFraction - b.hitFraction);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tAmmo.destroy(rayCallback);\n\t\t\t\treturn results;\n\t\t}\n\t\t_storeCollision(entity, other) {\n\t\t\t\tlet isNewCollision = false;\n\t\t\t\tconst guid = entity.getGuid();\n\t\t\t\tthis.collisions[guid] = this.collisions[guid] || {\n\t\t\t\t\t\tothers: [],\n\t\t\t\t\t\tentity: entity\n\t\t\t\t};\n\t\t\t\tif (this.collisions[guid].others.indexOf(other) < 0) {\n\t\t\t\t\t\tthis.collisions[guid].others.push(other);\n\t\t\t\t\t\tisNewCollision = true;\n\t\t\t\t}\n\t\t\t\tthis.frameCollisions[guid] = this.frameCollisions[guid] || {\n\t\t\t\t\t\tothers: [],\n\t\t\t\t\t\tentity: entity\n\t\t\t\t};\n\t\t\t\tthis.frameCollisions[guid].others.push(other);\n\t\t\t\treturn isNewCollision;\n\t\t}\n\t\t_createContactPointFromAmmo(contactPoint) {\n\t\t\t\tconst localPointA = contactPoint.get_m_localPointA();\n\t\t\t\tconst localPointB = contactPoint.get_m_localPointB();\n\t\t\t\tconst positionWorldOnA = contactPoint.getPositionWorldOnA();\n\t\t\t\tconst positionWorldOnB = contactPoint.getPositionWorldOnB();\n\t\t\t\tconst normalWorldOnB = contactPoint.get_m_normalWorldOnB();\n\t\t\t\tconst contact = this.contactPointPool.allocate();\n\t\t\t\tcontact.localPoint.set(localPointA.x(), localPointA.y(), localPointA.z());\n\t\t\t\tcontact.localPointOther.set(localPointB.x(), localPointB.y(), localPointB.z());\n\t\t\t\tcontact.point.set(positionWorldOnA.x(), positionWorldOnA.y(), positionWorldOnA.z());\n\t\t\t\tcontact.pointOther.set(positionWorldOnB.x(), positionWorldOnB.y(), positionWorldOnB.z());\n\t\t\t\tcontact.normal.set(normalWorldOnB.x(), normalWorldOnB.y(), normalWorldOnB.z());\n\t\t\t\tcontact.impulse = contactPoint.getAppliedImpulse();\n\t\t\t\treturn contact;\n\t\t}\n\t\t_createReverseContactPointFromAmmo(contactPoint) {\n\t\t\t\tconst localPointA = contactPoint.get_m_localPointA();\n\t\t\t\tconst localPointB = contactPoint.get_m_localPointB();\n\t\t\t\tconst positionWorldOnA = contactPoint.getPositionWorldOnA();\n\t\t\t\tconst positionWorldOnB = contactPoint.getPositionWorldOnB();\n\t\t\t\tconst normalWorldOnB = contactPoint.get_m_normalWorldOnB();\n\t\t\t\tconst contact = this.contactPointPool.allocate();\n\t\t\t\tcontact.localPointOther.set(localPointA.x(), localPointA.y(), localPointA.z());\n\t\t\t\tcontact.localPoint.set(localPointB.x(), localPointB.y(), localPointB.z());\n\t\t\t\tcontact.pointOther.set(positionWorldOnA.x(), positionWorldOnA.y(), positionWorldOnA.z());\n\t\t\t\tcontact.point.set(positionWorldOnB.x(), positionWorldOnB.y(), positionWorldOnB.z());\n\t\t\t\tcontact.normal.set(normalWorldOnB.x(), normalWorldOnB.y(), normalWorldOnB.z());\n\t\t\t\tcontact.impulse = contactPoint.getAppliedImpulse();\n\t\t\t\treturn contact;\n\t\t}\n\t\t_createSingleContactResult(a, b, contactPoint) {\n\t\t\t\tconst result = this.singleContactResultPool.allocate();\n\t\t\t\tresult.a = a;\n\t\t\t\tresult.b = b;\n\t\t\t\tresult.localPointA = contactPoint.localPoint;\n\t\t\t\tresult.localPointB = contactPoint.localPointOther;\n\t\t\t\tresult.pointA = contactPoint.point;\n\t\t\t\tresult.pointB = contactPoint.pointOther;\n\t\t\t\tresult.normal = contactPoint.normal;\n\t\t\t\tresult.impulse = contactPoint.impulse;\n\t\t\t\treturn result;\n\t\t}\n\t\t_createContactResult(other, contacts) {\n\t\t\t\tconst result = this.contactResultPool.allocate();\n\t\t\t\tresult.other = other;\n\t\t\t\tresult.contacts = contacts;\n\t\t\t\treturn result;\n\t\t}\n\t\t_cleanOldCollisions() {\n\t\t\t\tfor(const guid in this.collisions){\n\t\t\t\t\t\tif (this.collisions.hasOwnProperty(guid)) {\n\t\t\t\t\t\t\t\tconst frameCollision = this.frameCollisions[guid];\n\t\t\t\t\t\t\t\tconst collision = this.collisions[guid];\n\t\t\t\t\t\t\t\tconst entity = collision.entity;\n\t\t\t\t\t\t\t\tconst entityCollision = entity.collision;\n\t\t\t\t\t\t\t\tconst entityRigidbody = entity.rigidbody;\n\t\t\t\t\t\t\t\tconst others = collision.others;\n\t\t\t\t\t\t\t\tconst length = others.length;\n\t\t\t\t\t\t\t\tlet i = length;\n\t\t\t\t\t\t\t\twhile(i--){\n\t\t\t\t\t\t\t\t\t\tconst other = others[i];\n\t\t\t\t\t\t\t\t\t\tif (!frameCollision || frameCollision.others.indexOf(other) < 0) {\n\t\t\t\t\t\t\t\t\t\t\t\tothers.splice(i, 1);\n\t\t\t\t\t\t\t\t\t\t\t\tif (entity.trigger) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (entityCollision) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tentityCollision.fire('triggerleave', other);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (other.rigidbody) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tother.rigidbody.fire('triggerleave', entity);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t} else if (!other.trigger) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (entityRigidbody) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tentityRigidbody.fire('collisionend', other);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (entityCollision) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tentityCollision.fire('collisionend', other);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (others.length === 0) {\n\t\t\t\t\t\t\t\t\t\tdelete this.collisions[guid];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_hasContactEvent(entity) {\n\t\t\t\tconst c = entity.collision;\n\t\t\t\tif (c && (c.hasEvent('collisionstart') || c.hasEvent('collisionend') || c.hasEvent('contact'))) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tconst r = entity.rigidbody;\n\t\t\t\treturn r && (r.hasEvent('collisionstart') || r.hasEvent('collisionend') || r.hasEvent('contact'));\n\t\t}\n\t\t_checkForCollisions(world, timeStep) {\n\t\t\t\tconst dynamicsWorld = Ammo.wrapPointer(world, Ammo.btDynamicsWorld);\n\t\t\t\tconst dispatcher = dynamicsWorld.getDispatcher();\n\t\t\t\tconst numManifolds = dispatcher.getNumManifolds();\n\t\t\t\tthis.frameCollisions = {};\n\t\t\t\tfor(let i = 0; i < numManifolds; i++){\n\t\t\t\t\t\tconst manifold = dispatcher.getManifoldByIndexInternal(i);\n\t\t\t\t\t\tconst body0 = manifold.getBody0();\n\t\t\t\t\t\tconst body1 = manifold.getBody1();\n\t\t\t\t\t\tconst wb0 = Ammo.castObject(body0, Ammo.btRigidBody);\n\t\t\t\t\t\tconst wb1 = Ammo.castObject(body1, Ammo.btRigidBody);\n\t\t\t\t\t\tconst e0 = wb0.entity;\n\t\t\t\t\t\tconst e1 = wb1.entity;\n\t\t\t\t\t\tif (!e0 || !e1) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst flags0 = wb0.getCollisionFlags();\n\t\t\t\t\t\tconst flags1 = wb1.getCollisionFlags();\n\t\t\t\t\t\tconst numContacts = manifold.getNumContacts();\n\t\t\t\t\t\tconst forwardContacts = [];\n\t\t\t\t\t\tconst reverseContacts = [];\n\t\t\t\t\t\tlet newCollision;\n\t\t\t\t\t\tif (numContacts > 0) {\n\t\t\t\t\t\t\t\tif (flags0 & BODYFLAG_NORESPONSE_OBJECT || flags1 & BODYFLAG_NORESPONSE_OBJECT) {\n\t\t\t\t\t\t\t\t\t\tconst e0Events = e0.collision && (e0.collision.hasEvent('triggerenter') || e0.collision.hasEvent('triggerleave'));\n\t\t\t\t\t\t\t\t\t\tconst e1Events = e1.collision && (e1.collision.hasEvent('triggerenter') || e1.collision.hasEvent('triggerleave'));\n\t\t\t\t\t\t\t\t\t\tconst e0BodyEvents = e0.rigidbody && (e0.rigidbody.hasEvent('triggerenter') || e0.rigidbody.hasEvent('triggerleave'));\n\t\t\t\t\t\t\t\t\t\tconst e1BodyEvents = e1.rigidbody && (e1.rigidbody.hasEvent('triggerenter') || e1.rigidbody.hasEvent('triggerleave'));\n\t\t\t\t\t\t\t\t\t\tif (e0Events) {\n\t\t\t\t\t\t\t\t\t\t\t\tnewCollision = this._storeCollision(e0, e1);\n\t\t\t\t\t\t\t\t\t\t\t\tif (newCollision && !(flags1 & BODYFLAG_NORESPONSE_OBJECT)) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\te0.collision.fire('triggerenter', e1);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (e1Events) {\n\t\t\t\t\t\t\t\t\t\t\t\tnewCollision = this._storeCollision(e1, e0);\n\t\t\t\t\t\t\t\t\t\t\t\tif (newCollision && !(flags0 & BODYFLAG_NORESPONSE_OBJECT)) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\te1.collision.fire('triggerenter', e0);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (e0BodyEvents) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (!newCollision) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnewCollision = this._storeCollision(e1, e0);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tif (newCollision) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\te0.rigidbody.fire('triggerenter', e1);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (e1BodyEvents) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (!newCollision) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnewCollision = this._storeCollision(e0, e1);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tif (newCollision) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\te1.rigidbody.fire('triggerenter', e0);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tconst e0Events = this._hasContactEvent(e0);\n\t\t\t\t\t\t\t\t\t\tconst e1Events = this._hasContactEvent(e1);\n\t\t\t\t\t\t\t\t\t\tconst globalEvents = this.hasEvent('contact');\n\t\t\t\t\t\t\t\t\t\tif (globalEvents || e0Events || e1Events) {\n\t\t\t\t\t\t\t\t\t\t\t\tfor(let j = 0; j < numContacts; j++){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst btContactPoint = manifold.getContactPoint(j);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst contactPoint = this._createContactPointFromAmmo(btContactPoint);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (e0Events || e1Events) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tforwardContacts.push(contactPoint);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst reverseContactPoint = this._createReverseContactPointFromAmmo(btContactPoint);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treverseContacts.push(reverseContactPoint);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (globalEvents) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst result = this._createSingleContactResult(e0, e1, contactPoint);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.fire('contact', result);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tif (e0Events) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst forwardResult = this._createContactResult(e1, forwardContacts);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnewCollision = this._storeCollision(e0, e1);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (e0.collision) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\te0.collision.fire('contact', forwardResult);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (newCollision) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\te0.collision.fire('collisionstart', forwardResult);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (e0.rigidbody) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\te0.rigidbody.fire('contact', forwardResult);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (newCollision) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\te0.rigidbody.fire('collisionstart', forwardResult);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tif (e1Events) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst reverseResult = this._createContactResult(e0, reverseContacts);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnewCollision = this._storeCollision(e1, e0);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (e1.collision) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\te1.collision.fire('contact', reverseResult);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (newCollision) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\te1.collision.fire('collisionstart', reverseResult);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (e1.rigidbody) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\te1.rigidbody.fire('contact', reverseResult);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (newCollision) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\te1.rigidbody.fire('collisionstart', reverseResult);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._cleanOldCollisions();\n\t\t\t\tthis.contactPointPool.freeAll();\n\t\t\t\tthis.contactResultPool.freeAll();\n\t\t\t\tthis.singleContactResultPool.freeAll();\n\t\t}\n\t\tonUpdate(dt) {\n\t\t\t\tlet i, len;\n\t\t\t\tthis._gravityFloat32[0] = this.gravity.x;\n\t\t\t\tthis._gravityFloat32[1] = this.gravity.y;\n\t\t\t\tthis._gravityFloat32[2] = this.gravity.z;\n\t\t\t\tconst gravity = this.dynamicsWorld.getGravity();\n\t\t\t\tif (gravity.x() !== this._gravityFloat32[0] || gravity.y() !== this._gravityFloat32[1] || gravity.z() !== this._gravityFloat32[2]) {\n\t\t\t\t\t\tgravity.setValue(this.gravity.x, this.gravity.y, this.gravity.z);\n\t\t\t\t\t\tthis.dynamicsWorld.setGravity(gravity);\n\t\t\t\t}\n\t\t\t\tconst triggers = this._triggers;\n\t\t\t\tfor(i = 0, len = triggers.length; i < len; i++){\n\t\t\t\t\t\ttriggers[i].updateTransform();\n\t\t\t\t}\n\t\t\t\tconst compounds = this._compounds;\n\t\t\t\tfor(i = 0, len = compounds.length; i < len; i++){\n\t\t\t\t\t\tcompounds[i]._updateCompound();\n\t\t\t\t}\n\t\t\t\tconst kinematic = this._kinematic;\n\t\t\t\tfor(i = 0, len = kinematic.length; i < len; i++){\n\t\t\t\t\t\tkinematic[i]._updateKinematic();\n\t\t\t\t}\n\t\t\t\tthis.dynamicsWorld.stepSimulation(dt, this.maxSubSteps, this.fixedTimeStep);\n\t\t\t\tconst dynamic = this._dynamic;\n\t\t\t\tfor(i = 0, len = dynamic.length; i < len; i++){\n\t\t\t\t\t\tdynamic[i]._updateDynamic();\n\t\t\t\t}\n\t\t\t\tif (!this.dynamicsWorld.setInternalTickCallback) {\n\t\t\t\t\t\tthis._checkForCollisions(Ammo.getPointer(this.dynamicsWorld), dt);\n\t\t\t\t}\n\t\t}\n\t\tdestroy() {\n\t\t\t\tsuper.destroy();\n\t\t\t\tthis.app.systems.off('update', this.onUpdate, this);\n\t\t\t\tif (typeof Ammo !== 'undefined') {\n\t\t\t\t\t\tAmmo.destroy(this.dynamicsWorld);\n\t\t\t\t\t\tAmmo.destroy(this.solver);\n\t\t\t\t\t\tAmmo.destroy(this.overlappingPairCache);\n\t\t\t\t\t\tAmmo.destroy(this.dispatcher);\n\t\t\t\t\t\tAmmo.destroy(this.collisionConfiguration);\n\t\t\t\t\t\tAmmo.destroy(ammoRayStart);\n\t\t\t\t\t\tAmmo.destroy(ammoRayEnd);\n\t\t\t\t\t\tthis.dynamicsWorld = null;\n\t\t\t\t\t\tthis.solver = null;\n\t\t\t\t\t\tthis.overlappingPairCache = null;\n\t\t\t\t\t\tthis.dispatcher = null;\n\t\t\t\t\t\tthis.collisionConfiguration = null;\n\t\t\t\t\t\tammoRayStart = null;\n\t\t\t\t\t\tammoRayEnd = null;\n\t\t\t\t\t\tRigidBodyComponent.onAppDestroy();\n\t\t\t\t}\n\t\t}\n}\nComponent._buildAccessors(RigidBodyComponent.prototype, _schema$8);\n\nconst SCALEMODE_NONE = 'none';\nconst SCALEMODE_BLEND = 'blend';\n\nconst _transform = new Mat4();\nclass ScreenComponent extends Component {\n\t\tconstructor(system, entity){\n\t\t\t\tsuper(system, entity);\n\t\t\t\tthis._resolution = new Vec2(640, 320);\n\t\t\t\tthis._referenceResolution = new Vec2(640, 320);\n\t\t\t\tthis._scaleMode = SCALEMODE_NONE;\n\t\t\t\tthis.scale = 1;\n\t\t\t\tthis._scaleBlend = 0.5;\n\t\t\t\tthis._priority = 0;\n\t\t\t\tthis._screenSpace = false;\n\t\t\t\tthis.cull = this._screenSpace;\n\t\t\t\tthis._screenMatrix = new Mat4();\n\t\t\t\tthis._elements = new Set();\n\t\t\t\tsystem.app.graphicsDevice.on('resizecanvas', this._onResize, this);\n\t\t}\n\t\tsyncDrawOrder() {\n\t\t\t\tthis.system.queueDrawOrderSync(this.entity.getGuid(), this._processDrawOrderSync, this);\n\t\t}\n\t\t_recurseDrawOrderSync(e, i) {\n\t\t\t\tif (!(e instanceof Entity)) {\n\t\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t\tif (e.element) {\n\t\t\t\t\t\tconst prevDrawOrder = e.element.drawOrder;\n\t\t\t\t\t\te.element.drawOrder = i++;\n\t\t\t\t\t\tif (e.element._batchGroupId >= 0 && prevDrawOrder !== e.element.drawOrder) {\n\t\t\t\t\t\t\t\tthis.system.app.batcher?.markGroupDirty(e.element._batchGroupId);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (e.particlesystem) {\n\t\t\t\t\t\te.particlesystem.drawOrder = i++;\n\t\t\t\t}\n\t\t\t\tconst children = e.children;\n\t\t\t\tfor(let j = 0; j < children.length; j++){\n\t\t\t\t\t\ti = this._recurseDrawOrderSync(children[j], i);\n\t\t\t\t}\n\t\t\t\treturn i;\n\t\t}\n\t\t_processDrawOrderSync() {\n\t\t\t\tconst i = 1;\n\t\t\t\tthis._recurseDrawOrderSync(this.entity, i);\n\t\t\t\tthis.fire('syncdraworder');\n\t\t}\n\t\t_calcProjectionMatrix() {\n\t\t\t\tconst w = this._resolution.x / this.scale;\n\t\t\t\tconst h = this._resolution.y / this.scale;\n\t\t\t\tconst left = 0;\n\t\t\t\tconst right = w;\n\t\t\t\tconst bottom = -h;\n\t\t\t\tconst top = 0;\n\t\t\t\tconst near = 1;\n\t\t\t\tconst far = -1;\n\t\t\t\tthis._screenMatrix.setOrtho(left, right, bottom, top, near, far);\n\t\t\t\tif (!this._screenSpace) {\n\t\t\t\t\t\t_transform.setScale(0.5 * w, 0.5 * h, 1);\n\t\t\t\t\t\tthis._screenMatrix.mul2(_transform, this._screenMatrix);\n\t\t\t\t}\n\t\t}\n\t\t_updateScale() {\n\t\t\t\tthis.scale = this._calcScale(this._resolution, this.referenceResolution);\n\t\t}\n\t\t_calcScale(resolution, referenceResolution) {\n\t\t\t\tconst lx = Math.log2((resolution.x || 1) / referenceResolution.x);\n\t\t\t\tconst ly = Math.log2((resolution.y || 1) / referenceResolution.y);\n\t\t\t\treturn Math.pow(2, lx * (1 - this._scaleBlend) + ly * this._scaleBlend);\n\t\t}\n\t\t_onResize(width, height) {\n\t\t\t\tif (this._screenSpace) {\n\t\t\t\t\t\tthis._resolution.set(width, height);\n\t\t\t\t\t\tthis.resolution = this._resolution;\n\t\t\t\t}\n\t\t}\n\t\t_bindElement(element) {\n\t\t\t\tthis._elements.add(element);\n\t\t}\n\t\t_unbindElement(element) {\n\t\t\t\tthis._elements.delete(element);\n\t\t}\n\t\tonRemove() {\n\t\t\t\tthis.system.app.graphicsDevice.off('resizecanvas', this._onResize, this);\n\t\t\t\tthis.fire('remove');\n\t\t\t\tthis._elements.forEach((element)=>element._onScreenRemove());\n\t\t\t\tthis._elements.clear();\n\t\t\t\tthis.off();\n\t\t}\n\t\tset resolution(value) {\n\t\t\t\tif (!this._screenSpace) {\n\t\t\t\t\t\tthis._resolution.set(value.x, value.y);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._resolution.set(this.system.app.graphicsDevice.width, this.system.app.graphicsDevice.height);\n\t\t\t\t}\n\t\t\t\tthis._updateScale();\n\t\t\t\tthis._calcProjectionMatrix();\n\t\t\t\tif (!this.entity._dirtyLocal) {\n\t\t\t\t\t\tthis.entity._dirtifyLocal();\n\t\t\t\t}\n\t\t\t\tthis.fire('set:resolution', this._resolution);\n\t\t\t\tthis._elements.forEach((element)=>element._onScreenResize(this._resolution));\n\t\t}\n\t\tget resolution() {\n\t\t\t\treturn this._resolution;\n\t\t}\n\t\tset referenceResolution(value) {\n\t\t\t\tthis._referenceResolution.set(value.x, value.y);\n\t\t\t\tthis._updateScale();\n\t\t\t\tthis._calcProjectionMatrix();\n\t\t\t\tif (!this.entity._dirtyLocal) {\n\t\t\t\t\t\tthis.entity._dirtifyLocal();\n\t\t\t\t}\n\t\t\t\tthis.fire('set:referenceresolution', this._resolution);\n\t\t\t\tthis._elements.forEach((element)=>element._onScreenResize(this._resolution));\n\t\t}\n\t\tget referenceResolution() {\n\t\t\t\tif (this._scaleMode === SCALEMODE_NONE) {\n\t\t\t\t\t\treturn this._resolution;\n\t\t\t\t}\n\t\t\t\treturn this._referenceResolution;\n\t\t}\n\t\tset screenSpace(value) {\n\t\t\t\tthis._screenSpace = value;\n\t\t\t\tif (this._screenSpace) {\n\t\t\t\t\t\tthis._resolution.set(this.system.app.graphicsDevice.width, this.system.app.graphicsDevice.height);\n\t\t\t\t}\n\t\t\t\tthis.resolution = this._resolution;\n\t\t\t\tif (!this.entity._dirtyLocal) {\n\t\t\t\t\t\tthis.entity._dirtifyLocal();\n\t\t\t\t}\n\t\t\t\tthis.fire('set:screenspace', this._screenSpace);\n\t\t\t\tthis._elements.forEach((element)=>element._onScreenSpaceChange());\n\t\t}\n\t\tget screenSpace() {\n\t\t\t\treturn this._screenSpace;\n\t\t}\n\t\tset scaleMode(value) {\n\t\t\t\tif (value !== SCALEMODE_NONE && value !== SCALEMODE_BLEND) {\n\t\t\t\t\t\tvalue = SCALEMODE_NONE;\n\t\t\t\t}\n\t\t\t\tif (!this._screenSpace && value !== SCALEMODE_NONE) {\n\t\t\t\t\t\tvalue = SCALEMODE_NONE;\n\t\t\t\t}\n\t\t\t\tthis._scaleMode = value;\n\t\t\t\tthis.resolution = this._resolution;\n\t\t\t\tthis.fire('set:scalemode', this._scaleMode);\n\t\t}\n\t\tget scaleMode() {\n\t\t\t\treturn this._scaleMode;\n\t\t}\n\t\tset scaleBlend(value) {\n\t\t\t\tthis._scaleBlend = value;\n\t\t\t\tthis._updateScale();\n\t\t\t\tthis._calcProjectionMatrix();\n\t\t\t\tif (!this.entity._dirtyLocal) {\n\t\t\t\t\t\tthis.entity._dirtifyLocal();\n\t\t\t\t}\n\t\t\t\tthis.fire('set:scaleblend', this._scaleBlend);\n\t\t\t\tthis._elements.forEach((element)=>element._onScreenResize(this._resolution));\n\t\t}\n\t\tget scaleBlend() {\n\t\t\t\treturn this._scaleBlend;\n\t\t}\n\t\tset priority(value) {\n\t\t\t\tif (value > 0xFF) {\n\t\t\t\t\t\tvalue = 0xFF;\n\t\t\t\t}\n\t\t\t\tif (this._priority === value) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._priority = value;\n\t\t\t\tthis.syncDrawOrder();\n\t\t}\n\t\tget priority() {\n\t\t\t\treturn this._priority;\n\t\t}\n}\n\nclass ScreenComponentData {\n\t\tconstructor(){\n\t\t\t\tthis.enabled = true;\n\t\t}\n}\n\nconst _schema$7 = [\n\t\t'enabled'\n];\nclass ScreenComponentSystem extends ComponentSystem {\n\t\tconstructor(app){\n\t\t\t\tsuper(app);\n\t\t\t\tthis.id = 'screen';\n\t\t\t\tthis.ComponentType = ScreenComponent;\n\t\t\t\tthis.DataType = ScreenComponentData;\n\t\t\t\tthis.schema = _schema$7;\n\t\t\t\tthis.windowResolution = new Vec2();\n\t\t\t\tthis._drawOrderSyncQueue = new IndexedList();\n\t\t\t\tthis.app.graphicsDevice.on('resizecanvas', this._onResize, this);\n\t\t\t\tthis.app.systems.on('update', this._onUpdate, this);\n\t\t\t\tthis.on('beforeremove', this.onRemoveComponent, this);\n\t\t}\n\t\tinitializeComponentData(component, data, properties) {\n\t\t\t\tif (data.priority !== undefined) component.priority = data.priority;\n\t\t\t\tif (data.screenSpace !== undefined) component.screenSpace = data.screenSpace;\n\t\t\t\tcomponent.cull = component.screenSpace;\n\t\t\t\tif (data.scaleMode !== undefined) component.scaleMode = data.scaleMode;\n\t\t\t\tif (data.scaleBlend !== undefined) component.scaleBlend = data.scaleBlend;\n\t\t\t\tif (data.resolution !== undefined) {\n\t\t\t\t\t\tif (data.resolution instanceof Vec2) {\n\t\t\t\t\t\t\t\tcomponent._resolution.copy(data.resolution);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomponent._resolution.set(data.resolution[0], data.resolution[1]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcomponent.resolution = component._resolution;\n\t\t\t\t}\n\t\t\t\tif (data.referenceResolution !== undefined) {\n\t\t\t\t\t\tif (data.referenceResolution instanceof Vec2) {\n\t\t\t\t\t\t\t\tcomponent._referenceResolution.copy(data.referenceResolution);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomponent._referenceResolution.set(data.referenceResolution[0], data.referenceResolution[1]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcomponent.referenceResolution = component._referenceResolution;\n\t\t\t\t}\n\t\t\t\tcomponent.syncDrawOrder();\n\t\t\t\tsuper.initializeComponentData(component, data, _schema$7);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tsuper.destroy();\n\t\t\t\tthis.app.graphicsDevice.off('resizecanvas', this._onResize, this);\n\t\t\t\tthis.app.systems.off('update', this._onUpdate, this);\n\t\t}\n\t\t_onUpdate(dt) {\n\t\t\t\tconst components = this.store;\n\t\t\t\tfor(const id in components){\n\t\t\t\t\t\tif (components[id].entity.screen.update) components[id].entity.screen.update(dt);\n\t\t\t\t}\n\t\t}\n\t\t_onResize(width, height) {\n\t\t\t\tthis.windowResolution.x = width;\n\t\t\t\tthis.windowResolution.y = height;\n\t\t}\n\t\tcloneComponent(entity, clone) {\n\t\t\t\tconst screen = entity.screen;\n\t\t\t\treturn this.addComponent(clone, {\n\t\t\t\t\t\tenabled: screen.enabled,\n\t\t\t\t\t\tscreenSpace: screen.screenSpace,\n\t\t\t\t\t\tscaleMode: screen.scaleMode,\n\t\t\t\t\t\tscaleBlend: screen.scaleBlend,\n\t\t\t\t\t\tpriority: screen.priority,\n\t\t\t\t\t\tresolution: screen.resolution.clone(),\n\t\t\t\t\t\treferenceResolution: screen.referenceResolution.clone()\n\t\t\t\t});\n\t\t}\n\t\tonRemoveComponent(entity, component) {\n\t\t\t\tcomponent.onRemove();\n\t\t}\n\t\tprocessDrawOrderSyncQueue() {\n\t\t\t\tconst list = this._drawOrderSyncQueue.list();\n\t\t\t\tfor(let i = 0; i < list.length; i++){\n\t\t\t\t\t\tconst item = list[i];\n\t\t\t\t\t\titem.callback.call(item.scope);\n\t\t\t\t}\n\t\t\t\tthis._drawOrderSyncQueue.clear();\n\t\t}\n\t\tqueueDrawOrderSync(id, fn, scope) {\n\t\t\t\tif (!this._drawOrderSyncQueue.list().length) {\n\t\t\t\t\t\tthis.app.once('prerender', this.processDrawOrderSyncQueue, this);\n\t\t\t\t}\n\t\t\t\tif (!this._drawOrderSyncQueue.has(id)) {\n\t\t\t\t\t\tthis._drawOrderSyncQueue.push(id, {\n\t\t\t\t\t\t\t\tcallback: fn,\n\t\t\t\t\t\t\t\tscope: scope\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t}\n}\nComponent._buildAccessors(ScreenComponent.prototype, _schema$7);\n\nconst _inputScreenPosition = new Vec2();\nconst _inputWorldPosition = new Vec3();\nconst _ray = new Ray();\nconst _plane = new Plane();\nconst _normal = new Vec3();\nconst _point = new Vec3();\nconst _entityRotation = new Quat();\nconst OPPOSITE_AXIS = {\n\t\tx: 'y',\n\t\ty: 'x'\n};\nclass ElementDragHelper extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_DRAGSTART = 'drag:start';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_DRAGEND = 'drag:end';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_DRAGMOVE = 'drag:move';\n\t\t}\n\t\tconstructor(element, axis){\n\t\t\t\tsuper();\n\t\t\t\tif (!element || !(element instanceof ElementComponent)) {\n\t\t\t\t\t\tthrow new Error('Element was null or not an ElementComponent');\n\t\t\t\t}\n\t\t\t\tif (axis && axis !== 'x' && axis !== 'y') {\n\t\t\t\t\t\tthrow new Error(`Unrecognized axis: ${axis}`);\n\t\t\t\t}\n\t\t\t\tthis._element = element;\n\t\t\t\tthis._app = element.system.app;\n\t\t\t\tthis._axis = axis || null;\n\t\t\t\tthis._enabled = true;\n\t\t\t\tthis._dragScale = new Vec3();\n\t\t\t\tthis._dragStartMousePosition = new Vec3();\n\t\t\t\tthis._dragStartHandlePosition = new Vec3();\n\t\t\t\tthis._deltaMousePosition = new Vec3();\n\t\t\t\tthis._deltaHandlePosition = new Vec3();\n\t\t\t\tthis._isDragging = false;\n\t\t\t\tthis._toggleLifecycleListeners('on');\n\t\t}\n\t\t_toggleLifecycleListeners(onOrOff) {\n\t\t\t\tthis._element[onOrOff]('mousedown', this._onMouseDownOrTouchStart, this);\n\t\t\t\tthis._element[onOrOff]('touchstart', this._onMouseDownOrTouchStart, this);\n\t\t\t\tthis._element[onOrOff]('selectstart', this._onMouseDownOrTouchStart, this);\n\t\t}\n\t\t_toggleDragListeners(onOrOff) {\n\t\t\t\tconst isOn = onOrOff === 'on';\n\t\t\t\tif (this._hasDragListeners && isOn) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this._app.mouse) {\n\t\t\t\t\t\tthis._element[onOrOff]('mousemove', this._onMove, this);\n\t\t\t\t\t\tthis._element[onOrOff]('mouseup', this._onMouseUpOrTouchEnd, this);\n\t\t\t\t}\n\t\t\t\tif (platform.touch) {\n\t\t\t\t\t\tthis._element[onOrOff]('touchmove', this._onMove, this);\n\t\t\t\t\t\tthis._element[onOrOff]('touchend', this._onMouseUpOrTouchEnd, this);\n\t\t\t\t\t\tthis._element[onOrOff]('touchcancel', this._onMouseUpOrTouchEnd, this);\n\t\t\t\t}\n\t\t\t\tthis._element[onOrOff]('selectmove', this._onMove, this);\n\t\t\t\tthis._element[onOrOff]('selectend', this._onMouseUpOrTouchEnd, this);\n\t\t\t\tthis._hasDragListeners = isOn;\n\t\t}\n\t\t_onMouseDownOrTouchStart(event) {\n\t\t\t\tif (this._element && !this._isDragging && this.enabled) {\n\t\t\t\t\t\tthis._dragCamera = event.camera;\n\t\t\t\t\t\tthis._calculateDragScale();\n\t\t\t\t\t\tconst currentMousePosition = this._screenToLocal(event);\n\t\t\t\t\t\tif (currentMousePosition) {\n\t\t\t\t\t\t\t\tthis._toggleDragListeners('on');\n\t\t\t\t\t\t\t\tthis._isDragging = true;\n\t\t\t\t\t\t\t\tthis._dragStartMousePosition.copy(currentMousePosition);\n\t\t\t\t\t\t\t\tthis._dragStartHandlePosition.copy(this._element.entity.getLocalPosition());\n\t\t\t\t\t\t\t\tthis.fire('drag:start');\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_onMouseUpOrTouchEnd() {\n\t\t\t\tif (this._isDragging) {\n\t\t\t\t\t\tthis._isDragging = false;\n\t\t\t\t\t\tthis._toggleDragListeners('off');\n\t\t\t\t\t\tthis.fire('drag:end');\n\t\t\t\t}\n\t\t}\n\t\t_screenToLocal(event) {\n\t\t\t\tif (event.inputSource) {\n\t\t\t\t\t\t_ray.set(event.inputSource.getOrigin(), event.inputSource.getDirection());\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._determineInputPosition(event);\n\t\t\t\t\t\tthis._chooseRayOriginAndDirection();\n\t\t\t\t}\n\t\t\t\t_normal.copy(this._element.entity.forward).mulScalar(-1);\n\t\t\t\t_plane.setFromPointNormal(this._element.entity.getPosition(), _normal);\n\t\t\t\tif (_plane.intersectsRay(_ray, _point)) {\n\t\t\t\t\t\t_entityRotation.copy(this._element.entity.getRotation()).invert().transformVector(_point, _point);\n\t\t\t\t\t\t_point.mul(this._dragScale);\n\t\t\t\t\t\treturn _point;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\t_determineInputPosition(event) {\n\t\t\t\tconst devicePixelRatio = this._app.graphicsDevice.maxPixelRatio;\n\t\t\t\tif (typeof event.x !== 'undefined' && typeof event.y !== 'undefined') {\n\t\t\t\t\t\t_inputScreenPosition.x = event.x * devicePixelRatio;\n\t\t\t\t\t\t_inputScreenPosition.y = event.y * devicePixelRatio;\n\t\t\t\t} else if (event.changedTouches) {\n\t\t\t\t\t\t_inputScreenPosition.x = event.changedTouches[0].x * devicePixelRatio;\n\t\t\t\t\t\t_inputScreenPosition.y = event.changedTouches[0].y * devicePixelRatio;\n\t\t\t\t} else {\n\t\t\t\t\t\tconsole.warn('Could not determine position from input event');\n\t\t\t\t}\n\t\t}\n\t\t_chooseRayOriginAndDirection() {\n\t\t\t\tif (this._element.screen && this._element.screen.screen.screenSpace) {\n\t\t\t\t\t\t_ray.origin.set(_inputScreenPosition.x, -_inputScreenPosition.y, 0);\n\t\t\t\t\t\t_ray.direction.copy(Vec3.FORWARD);\n\t\t\t\t} else {\n\t\t\t\t\t\t_inputWorldPosition.copy(this._dragCamera.screenToWorld(_inputScreenPosition.x, _inputScreenPosition.y, 1));\n\t\t\t\t\t\t_ray.origin.copy(this._dragCamera.entity.getPosition());\n\t\t\t\t\t\t_ray.direction.copy(_inputWorldPosition).sub(_ray.origin).normalize();\n\t\t\t\t}\n\t\t}\n\t\t_calculateDragScale() {\n\t\t\t\tlet current = this._element.entity.parent;\n\t\t\t\tconst screen = this._element.screen && this._element.screen.screen;\n\t\t\t\tconst isWithin2DScreen = screen && screen.screenSpace;\n\t\t\t\tconst screenScale = isWithin2DScreen ? screen.scale : 1;\n\t\t\t\tconst dragScale = this._dragScale;\n\t\t\t\tdragScale.set(screenScale, screenScale, screenScale);\n\t\t\t\twhile(current){\n\t\t\t\t\t\tdragScale.mul(current.getLocalScale());\n\t\t\t\t\t\tcurrent = current.parent;\n\t\t\t\t\t\tif (isWithin2DScreen && current.screen) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tdragScale.x = 1 / dragScale.x;\n\t\t\t\tdragScale.y = 1 / dragScale.y;\n\t\t\t\tdragScale.z = 0;\n\t\t}\n\t\t_onMove(event) {\n\t\t\t\tconst { _element: element, _deltaMousePosition: deltaMousePosition, _deltaHandlePosition: deltaHandlePosition, _axis: axis } = this;\n\t\t\t\tif (element && this._isDragging && this.enabled && element.enabled && element.entity.enabled) {\n\t\t\t\t\t\tconst currentMousePosition = this._screenToLocal(event);\n\t\t\t\t\t\tif (currentMousePosition) {\n\t\t\t\t\t\t\t\tdeltaMousePosition.sub2(currentMousePosition, this._dragStartMousePosition);\n\t\t\t\t\t\t\t\tdeltaHandlePosition.add2(this._dragStartHandlePosition, deltaMousePosition);\n\t\t\t\t\t\t\t\tif (axis) {\n\t\t\t\t\t\t\t\t\t\tconst currentPosition = element.entity.getLocalPosition();\n\t\t\t\t\t\t\t\t\t\tconst constrainedAxis = OPPOSITE_AXIS[axis];\n\t\t\t\t\t\t\t\t\t\tdeltaHandlePosition[constrainedAxis] = currentPosition[constrainedAxis];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telement.entity.setLocalPosition(deltaHandlePosition);\n\t\t\t\t\t\t\t\tthis.fire('drag:move', deltaHandlePosition);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis._toggleLifecycleListeners('off');\n\t\t\t\tthis._toggleDragListeners('off');\n\t\t}\n\t\tset enabled(value) {\n\t\t\t\tthis._enabled = value;\n\t\t}\n\t\tget enabled() {\n\t\t\t\treturn this._enabled;\n\t\t}\n\t\tget isDragging() {\n\t\t\t\treturn this._isDragging;\n\t\t}\n}\n\nconst SCROLL_MODE_CLAMP = 0;\nconst SCROLL_MODE_BOUNCE = 1;\nconst SCROLL_MODE_INFINITE = 2;\nconst SCROLLBAR_VISIBILITY_SHOW_ALWAYS = 0;\nconst SCROLLBAR_VISIBILITY_SHOW_WHEN_REQUIRED = 1;\n\nconst _tempScrollValue = new Vec2();\nclass ScrollViewComponent extends Component {\n\t\tstatic{\n\t\t\t\tthis.EVENT_SETSCROLL = 'set:scroll';\n\t\t}\n\t\tconstructor(system, entity){\n\t\t\t\tsuper(system, entity), this._viewportEntity = null, this._contentEntity = null, this._horizontalScrollbarEntity = null, this._verticalScrollbarEntity = null, this._evtElementRemove = null, this._evtViewportElementRemove = null, this._evtViewportResize = null, this._evtContentEntityElementAdd = null, this._evtContentElementRemove = null, this._evtContentResize = null, this._evtHorizontalScrollbarAdd = null, this._evtHorizontalScrollbarRemove = null, this._evtHorizontalScrollbarValue = null, this._evtVerticalScrollbarAdd = null, this._evtVerticalScrollbarRemove = null, this._evtVerticalScrollbarValue = null;\n\t\t\t\tthis._scrollbarUpdateFlags = {};\n\t\t\t\tthis._scrollbarEntities = {};\n\t\t\t\tthis._prevContentSizes = {};\n\t\t\t\tthis._prevContentSizes[ORIENTATION_HORIZONTAL] = null;\n\t\t\t\tthis._prevContentSizes[ORIENTATION_VERTICAL] = null;\n\t\t\t\tthis._scroll = new Vec2();\n\t\t\t\tthis._velocity = new Vec3();\n\t\t\t\tthis._dragStartPosition = new Vec3();\n\t\t\t\tthis._disabledContentInput = false;\n\t\t\t\tthis._disabledContentInputEntities = [];\n\t\t\t\tthis._toggleLifecycleListeners('on');\n\t\t\t\tthis._toggleElementListeners('on');\n\t\t}\n\t\tget data() {\n\t\t\t\tconst record = this.system.store[this.entity.getGuid()];\n\t\t\t\treturn record ? record.data : null;\n\t\t}\n\t\tset enabled(arg) {\n\t\t\t\tthis._setValue('enabled', arg);\n\t\t}\n\t\tget enabled() {\n\t\t\t\treturn this.data.enabled;\n\t\t}\n\t\tset horizontal(arg) {\n\t\t\t\tthis._setValue('horizontal', arg);\n\t\t}\n\t\tget horizontal() {\n\t\t\t\treturn this.data.horizontal;\n\t\t}\n\t\tset vertical(arg) {\n\t\t\t\tthis._setValue('vertical', arg);\n\t\t}\n\t\tget vertical() {\n\t\t\t\treturn this.data.vertical;\n\t\t}\n\t\tset scrollMode(arg) {\n\t\t\t\tthis._setValue('scrollMode', arg);\n\t\t}\n\t\tget scrollMode() {\n\t\t\t\treturn this.data.scrollMode;\n\t\t}\n\t\tset bounceAmount(arg) {\n\t\t\t\tthis._setValue('bounceAmount', arg);\n\t\t}\n\t\tget bounceAmount() {\n\t\t\t\treturn this.data.bounceAmount;\n\t\t}\n\t\tset friction(arg) {\n\t\t\t\tthis._setValue('friction', arg);\n\t\t}\n\t\tget friction() {\n\t\t\t\treturn this.data.friction;\n\t\t}\n\t\tset dragThreshold(arg) {\n\t\t\t\tthis._setValue('dragThreshold', arg);\n\t\t}\n\t\tget dragThreshold() {\n\t\t\t\treturn this.data.dragThreshold;\n\t\t}\n\t\tset useMouseWheel(arg) {\n\t\t\t\tthis._setValue('useMouseWheel', arg);\n\t\t}\n\t\tget useMouseWheel() {\n\t\t\t\treturn this.data.useMouseWheel;\n\t\t}\n\t\tset mouseWheelSensitivity(arg) {\n\t\t\t\tthis._setValue('mouseWheelSensitivity', arg);\n\t\t}\n\t\tget mouseWheelSensitivity() {\n\t\t\t\treturn this.data.mouseWheelSensitivity;\n\t\t}\n\t\tset horizontalScrollbarVisibility(arg) {\n\t\t\t\tthis._setValue('horizontalScrollbarVisibility', arg);\n\t\t}\n\t\tget horizontalScrollbarVisibility() {\n\t\t\t\treturn this.data.horizontalScrollbarVisibility;\n\t\t}\n\t\tset verticalScrollbarVisibility(arg) {\n\t\t\t\tthis._setValue('verticalScrollbarVisibility', arg);\n\t\t}\n\t\tget verticalScrollbarVisibility() {\n\t\t\t\treturn this.data.verticalScrollbarVisibility;\n\t\t}\n\t\tset viewportEntity(arg) {\n\t\t\t\tif (this._viewportEntity === arg) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst isString = typeof arg === 'string';\n\t\t\t\tif (this._viewportEntity && isString && this._viewportEntity.getGuid() === arg) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this._viewportEntity) {\n\t\t\t\t\t\tthis._viewportEntityUnsubscribe();\n\t\t\t\t}\n\t\t\t\tif (arg instanceof GraphNode) {\n\t\t\t\t\t\tthis._viewportEntity = arg;\n\t\t\t\t} else if (isString) {\n\t\t\t\t\t\tthis._viewportEntity = this.system.app.getEntityFromIndex(arg) || null;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._viewportEntity = null;\n\t\t\t\t}\n\t\t\t\tif (this._viewportEntity) {\n\t\t\t\t\t\tthis._viewportEntitySubscribe();\n\t\t\t\t}\n\t\t\t\tif (this._viewportEntity) {\n\t\t\t\t\t\tthis.data.viewportEntity = this._viewportEntity.getGuid();\n\t\t\t\t} else if (isString && arg) {\n\t\t\t\t\t\tthis.data.viewportEntity = arg;\n\t\t\t\t}\n\t\t}\n\t\tget viewportEntity() {\n\t\t\t\treturn this._viewportEntity;\n\t\t}\n\t\tset contentEntity(arg) {\n\t\t\t\tif (this._contentEntity === arg) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst isString = typeof arg === 'string';\n\t\t\t\tif (this._contentEntity && isString && this._contentEntity.getGuid() === arg) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this._contentEntity) {\n\t\t\t\t\t\tthis._contentEntityUnsubscribe();\n\t\t\t\t}\n\t\t\t\tif (arg instanceof GraphNode) {\n\t\t\t\t\t\tthis._contentEntity = arg;\n\t\t\t\t} else if (isString) {\n\t\t\t\t\t\tthis._contentEntity = this.system.app.getEntityFromIndex(arg) || null;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._contentEntity = null;\n\t\t\t\t}\n\t\t\t\tif (this._contentEntity) {\n\t\t\t\t\t\tthis._contentEntitySubscribe();\n\t\t\t\t}\n\t\t\t\tif (this._contentEntity) {\n\t\t\t\t\t\tthis.data.contentEntity = this._contentEntity.getGuid();\n\t\t\t\t} else if (isString && arg) {\n\t\t\t\t\t\tthis.data.contentEntity = arg;\n\t\t\t\t}\n\t\t}\n\t\tget contentEntity() {\n\t\t\t\treturn this._contentEntity;\n\t\t}\n\t\tset horizontalScrollbarEntity(arg) {\n\t\t\t\tif (this._horizontalScrollbarEntity === arg) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst isString = typeof arg === 'string';\n\t\t\t\tif (this._horizontalScrollbarEntity && isString && this._horizontalScrollbarEntity.getGuid() === arg) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this._horizontalScrollbarEntity) {\n\t\t\t\t\t\tthis._horizontalScrollbarEntityUnsubscribe();\n\t\t\t\t}\n\t\t\t\tif (arg instanceof GraphNode) {\n\t\t\t\t\t\tthis._horizontalScrollbarEntity = arg;\n\t\t\t\t} else if (isString) {\n\t\t\t\t\t\tthis._horizontalScrollbarEntity = this.system.app.getEntityFromIndex(arg) || null;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._horizontalScrollbarEntity = null;\n\t\t\t\t}\n\t\t\t\tthis._scrollbarEntities[ORIENTATION_HORIZONTAL] = this._horizontalScrollbarEntity;\n\t\t\t\tif (this._horizontalScrollbarEntity) {\n\t\t\t\t\t\tthis._horizontalScrollbarEntitySubscribe();\n\t\t\t\t}\n\t\t\t\tif (this._horizontalScrollbarEntity) {\n\t\t\t\t\t\tthis.data.horizontalScrollbarEntity = this._horizontalScrollbarEntity.getGuid();\n\t\t\t\t} else if (isString && arg) {\n\t\t\t\t\t\tthis.data.horizontalScrollbarEntity = arg;\n\t\t\t\t}\n\t\t}\n\t\tget horizontalScrollbarEntity() {\n\t\t\t\treturn this._horizontalScrollbarEntity;\n\t\t}\n\t\tset verticalScrollbarEntity(arg) {\n\t\t\t\tif (this._verticalScrollbarEntity === arg) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst isString = typeof arg === 'string';\n\t\t\t\tif (this._verticalScrollbarEntity && isString && this._verticalScrollbarEntity.getGuid() === arg) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this._verticalScrollbarEntity) {\n\t\t\t\t\t\tthis._verticalScrollbarEntityUnsubscribe();\n\t\t\t\t}\n\t\t\t\tif (arg instanceof GraphNode) {\n\t\t\t\t\t\tthis._verticalScrollbarEntity = arg;\n\t\t\t\t} else if (isString) {\n\t\t\t\t\t\tthis._verticalScrollbarEntity = this.system.app.getEntityFromIndex(arg) || null;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._verticalScrollbarEntity = null;\n\t\t\t\t}\n\t\t\t\tthis._scrollbarEntities[ORIENTATION_VERTICAL] = this._verticalScrollbarEntity;\n\t\t\t\tif (this._verticalScrollbarEntity) {\n\t\t\t\t\t\tthis._verticalScrollbarEntitySubscribe();\n\t\t\t\t}\n\t\t\t\tif (this._verticalScrollbarEntity) {\n\t\t\t\t\t\tthis.data.verticalScrollbarEntity = this._verticalScrollbarEntity.getGuid();\n\t\t\t\t} else if (isString && arg) {\n\t\t\t\t\t\tthis.data.verticalScrollbarEntity = arg;\n\t\t\t\t}\n\t\t}\n\t\tget verticalScrollbarEntity() {\n\t\t\t\treturn this._verticalScrollbarEntity;\n\t\t}\n\t\tset scroll(value) {\n\t\t\t\tthis._onSetScroll(value.x, value.y);\n\t\t}\n\t\tget scroll() {\n\t\t\t\treturn this._scroll;\n\t\t}\n\t\t_setValue(name, value) {\n\t\t\t\tconst data = this.data;\n\t\t\t\tconst oldValue = data[name];\n\t\t\t\tdata[name] = value;\n\t\t\t\tthis.fire('set', name, oldValue, value);\n\t\t}\n\t\t_toggleLifecycleListeners(onOrOff) {\n\t\t\t\tthis[onOrOff]('set_horizontal', this._onSetHorizontalScrollingEnabled, this);\n\t\t\t\tthis[onOrOff]('set_vertical', this._onSetVerticalScrollingEnabled, this);\n\t\t\t\tthis.entity[onOrOff]('element:add', this._onElementComponentAdd, this);\n\t\t}\n\t\t_toggleElementListeners(onOrOff) {\n\t\t\t\tif (this.entity.element) {\n\t\t\t\t\t\tif (onOrOff === 'on' && this._hasElementListeners) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.entity.element[onOrOff]('resize', this._syncAll, this);\n\t\t\t\t\t\tthis.entity.element[onOrOff]('mousewheel', this._onMouseWheel, this);\n\t\t\t\t\t\tthis._hasElementListeners = onOrOff === 'on';\n\t\t\t\t}\n\t\t}\n\t\t_onElementComponentAdd(entity) {\n\t\t\t\tthis._evtElementRemove = this.entity.element.once('beforeremove', this._onElementComponentRemove, this);\n\t\t\t\tthis._toggleElementListeners('on');\n\t\t}\n\t\t_onElementComponentRemove(entity) {\n\t\t\t\tthis._evtElementRemove?.off();\n\t\t\t\tthis._evtElementRemove = null;\n\t\t\t\tthis._toggleElementListeners('off');\n\t\t}\n\t\t_viewportEntitySubscribe() {\n\t\t\t\tthis._evtViewportEntityElementAdd = this._viewportEntity.on('element:add', this._onViewportElementGain, this);\n\t\t\t\tif (this._viewportEntity.element) {\n\t\t\t\t\t\tthis._onViewportElementGain();\n\t\t\t\t}\n\t\t}\n\t\t_viewportEntityUnsubscribe() {\n\t\t\t\tthis._evtViewportEntityElementAdd?.off();\n\t\t\t\tthis._evtViewportEntityElementAdd = null;\n\t\t\t\tif (this._viewportEntity?.element) {\n\t\t\t\t\t\tthis._onViewportElementLose();\n\t\t\t\t}\n\t\t}\n\t\t_viewportEntityElementSubscribe() {\n\t\t\t\tconst element = this._viewportEntity.element;\n\t\t\t\tthis._evtViewportElementRemove = element.once('beforeremove', this._onViewportElementLose, this);\n\t\t\t\tthis._evtViewportResize = element.on('resize', this._syncAll, this);\n\t\t}\n\t\t_viewportEntityElementUnsubscribe() {\n\t\t\t\tthis._evtViewportElementRemove?.off();\n\t\t\t\tthis._evtViewportElementRemove = null;\n\t\t\t\tthis._evtViewportResize?.off();\n\t\t\t\tthis._evtViewportResize = null;\n\t\t}\n\t\t_onViewportElementGain() {\n\t\t\t\tthis._viewportEntityElementSubscribe();\n\t\t\t\tthis._syncAll();\n\t\t}\n\t\t_onViewportElementLose() {\n\t\t\t\tthis._viewportEntityElementUnsubscribe();\n\t\t}\n\t\t_contentEntitySubscribe() {\n\t\t\t\tthis._evtContentEntityElementAdd = this._contentEntity.on('element:add', this._onContentElementGain, this);\n\t\t\t\tif (this._contentEntity.element) {\n\t\t\t\t\t\tthis._onContentElementGain();\n\t\t\t\t}\n\t\t}\n\t\t_contentEntityUnsubscribe() {\n\t\t\t\tthis._evtContentEntityElementAdd?.off();\n\t\t\t\tthis._evtContentEntityElementAdd = null;\n\t\t\t\tif (this._contentEntity?.element) {\n\t\t\t\t\t\tthis._onContentElementLose();\n\t\t\t\t}\n\t\t}\n\t\t_contentEntityElementSubscribe() {\n\t\t\t\tconst element = this._contentEntity.element;\n\t\t\t\tthis._evtContentElementRemove = element.once('beforeremove', this._onContentElementLose, this);\n\t\t\t\tthis._evtContentResize = element.on('resize', this._syncAll, this);\n\t\t}\n\t\t_contentEntityElementUnsubscribe() {\n\t\t\t\tthis._evtContentElementRemove?.off();\n\t\t\t\tthis._evtContentElementRemove = null;\n\t\t\t\tthis._evtContentResize?.off();\n\t\t\t\tthis._evtContentResize = null;\n\t\t}\n\t\t_onContentElementGain() {\n\t\t\t\tthis._contentEntityElementSubscribe();\n\t\t\t\tthis._destroyDragHelper();\n\t\t\t\tthis._contentDragHelper = new ElementDragHelper(this._contentEntity.element);\n\t\t\t\tthis._contentDragHelper.on('drag:start', this._onContentDragStart, this);\n\t\t\t\tthis._contentDragHelper.on('drag:end', this._onContentDragEnd, this);\n\t\t\t\tthis._contentDragHelper.on('drag:move', this._onContentDragMove, this);\n\t\t\t\tthis._prevContentSizes[ORIENTATION_HORIZONTAL] = null;\n\t\t\t\tthis._prevContentSizes[ORIENTATION_VERTICAL] = null;\n\t\t\t\tthis._syncAll();\n\t\t}\n\t\t_onContentElementLose() {\n\t\t\t\tthis._contentEntityElementUnsubscribe();\n\t\t\t\tthis._destroyDragHelper();\n\t\t}\n\t\t_onContentDragStart() {\n\t\t\t\tif (this._contentEntity && this.enabled && this.entity.enabled) {\n\t\t\t\t\t\tthis._dragStartPosition.copy(this._contentEntity.getLocalPosition());\n\t\t\t\t}\n\t\t}\n\t\t_onContentDragEnd() {\n\t\t\t\tthis._prevContentDragPosition = null;\n\t\t\t\tthis._enableContentInput();\n\t\t}\n\t\t_onContentDragMove(position) {\n\t\t\t\tif (this._contentEntity && this.enabled && this.entity.enabled) {\n\t\t\t\t\t\tthis._wasDragged = true;\n\t\t\t\t\t\tthis._setScrollFromContentPosition(position);\n\t\t\t\t\t\tthis._setVelocityFromContentPositionDelta(position);\n\t\t\t\t\t\tif (!this._disabledContentInput) {\n\t\t\t\t\t\t\t\tconst dx = position.x - this._dragStartPosition.x;\n\t\t\t\t\t\t\t\tconst dy = position.y - this._dragStartPosition.y;\n\t\t\t\t\t\t\t\tif (Math.abs(dx) > this.dragThreshold || Math.abs(dy) > this.dragThreshold) {\n\t\t\t\t\t\t\t\t\t\tthis._disableContentInput();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_horizontalScrollbarEntitySubscribe() {\n\t\t\t\tthis._evtHorizontalScrollbarAdd = this._horizontalScrollbarEntity.on('scrollbar:add', this._onHorizontalScrollbarGain, this);\n\t\t\t\tif (this._horizontalScrollbarEntity.scrollbar) {\n\t\t\t\t\t\tthis._onHorizontalScrollbarGain();\n\t\t\t\t}\n\t\t}\n\t\t_verticalScrollbarEntitySubscribe() {\n\t\t\t\tthis._evtVerticalScrollbarAdd = this._verticalScrollbarEntity.on('scrollbar:add', this._onVerticalScrollbarGain, this);\n\t\t\t\tif (this._verticalScrollbarEntity.scrollbar) {\n\t\t\t\t\t\tthis._onVerticalScrollbarGain();\n\t\t\t\t}\n\t\t}\n\t\t_horizontalScrollbarEntityUnsubscribe() {\n\t\t\t\tthis._evtHorizontalScrollbarAdd?.off();\n\t\t\t\tthis._evtHorizontalScrollbarAdd = null;\n\t\t\t\tif (this._horizontalScrollbarEntity.scrollbar) {\n\t\t\t\t\t\tthis._onHorizontalScrollbarLose();\n\t\t\t\t}\n\t\t}\n\t\t_verticalScrollbarEntityUnsubscribe() {\n\t\t\t\tthis._evtVerticalScrollbarAdd?.off();\n\t\t\t\tthis._evtVerticalScrollbarAdd = null;\n\t\t\t\tif (this._verticalScrollbarEntity.scrollbar) {\n\t\t\t\t\t\tthis._onVerticalScrollbarLose();\n\t\t\t\t}\n\t\t}\n\t\t_onSetHorizontalScrollbarValue(scrollValueX) {\n\t\t\t\tif (!this._scrollbarUpdateFlags[ORIENTATION_HORIZONTAL] && this.enabled && this.entity.enabled) {\n\t\t\t\t\t\tthis._onSetScroll(scrollValueX, null);\n\t\t\t\t}\n\t\t}\n\t\t_onSetVerticalScrollbarValue(scrollValueY) {\n\t\t\t\tif (!this._scrollbarUpdateFlags[ORIENTATION_VERTICAL] && this.enabled && this.entity.enabled) {\n\t\t\t\t\t\tthis._onSetScroll(null, scrollValueY);\n\t\t\t\t}\n\t\t}\n\t\t_onHorizontalScrollbarGain() {\n\t\t\t\tconst scrollbar = this._horizontalScrollbarEntity?.scrollbar;\n\t\t\t\tthis._evtHorizontalScrollbarRemove = scrollbar.on('beforeremove', this._onHorizontalScrollbarLose, this);\n\t\t\t\tthis._evtHorizontalScrollbarValue = scrollbar.on('set:value', this._onSetHorizontalScrollbarValue, this);\n\t\t\t\tthis._syncScrollbarEnabledState(ORIENTATION_HORIZONTAL);\n\t\t\t\tthis._syncScrollbarPosition(ORIENTATION_HORIZONTAL);\n\t\t}\n\t\t_onVerticalScrollbarGain() {\n\t\t\t\tconst scrollbar = this._verticalScrollbarEntity?.scrollbar;\n\t\t\t\tthis._evtVerticalScrollbarRemove = scrollbar.on('beforeremove', this._onVerticalScrollbarLose, this);\n\t\t\t\tthis._evtVerticalScrollbarValue = scrollbar.on('set:value', this._onSetVerticalScrollbarValue, this);\n\t\t\t\tthis._syncScrollbarEnabledState(ORIENTATION_VERTICAL);\n\t\t\t\tthis._syncScrollbarPosition(ORIENTATION_VERTICAL);\n\t\t}\n\t\t_onHorizontalScrollbarLose() {\n\t\t\t\tthis._evtHorizontalScrollbarRemove?.off();\n\t\t\t\tthis._evtHorizontalScrollbarRemove = null;\n\t\t\t\tthis._evtHorizontalScrollbarValue?.off();\n\t\t\t\tthis._evtHorizontalScrollbarValue = null;\n\t\t}\n\t\t_onVerticalScrollbarLose() {\n\t\t\t\tthis._evtVerticalScrollbarRemove?.off();\n\t\t\t\tthis._evtVerticalScrollbarRemove = null;\n\t\t\t\tthis._evtVerticalScrollbarValue?.off();\n\t\t\t\tthis._evtVerticalScrollbarValue = null;\n\t\t}\n\t\t_onSetHorizontalScrollingEnabled() {\n\t\t\t\tthis._syncScrollbarEnabledState(ORIENTATION_HORIZONTAL);\n\t\t}\n\t\t_onSetVerticalScrollingEnabled() {\n\t\t\t\tthis._syncScrollbarEnabledState(ORIENTATION_VERTICAL);\n\t\t}\n\t\t_onSetScroll(x, y, resetVelocity) {\n\t\t\t\tif (resetVelocity !== false) {\n\t\t\t\t\t\tthis._velocity.set(0, 0, 0);\n\t\t\t\t}\n\t\t\t\tconst xChanged = this._updateAxis(x, 'x', ORIENTATION_HORIZONTAL);\n\t\t\t\tconst yChanged = this._updateAxis(y, 'y', ORIENTATION_VERTICAL);\n\t\t\t\tif (xChanged || yChanged) {\n\t\t\t\t\t\tthis.fire('set:scroll', this._scroll);\n\t\t\t\t}\n\t\t}\n\t\t_updateAxis(scrollValue, axis, orientation) {\n\t\t\t\tconst hasChanged = scrollValue !== null && Math.abs(scrollValue - this._scroll[axis]) > 1e-5;\n\t\t\t\tif (hasChanged || this._isDragging() || scrollValue === 0) {\n\t\t\t\t\t\tthis._scroll[axis] = this._determineNewScrollValue(scrollValue, axis, orientation);\n\t\t\t\t\t\tthis._syncContentPosition(orientation);\n\t\t\t\t\t\tthis._syncScrollbarPosition(orientation);\n\t\t\t\t}\n\t\t\t\treturn hasChanged;\n\t\t}\n\t\t_determineNewScrollValue(scrollValue, axis, orientation) {\n\t\t\t\tif (!this._getScrollingEnabled(orientation)) {\n\t\t\t\t\t\treturn this._scroll[axis];\n\t\t\t\t}\n\t\t\t\tswitch(this.scrollMode){\n\t\t\t\t\t\tcase SCROLL_MODE_CLAMP:\n\t\t\t\t\t\t\t\treturn math.clamp(scrollValue, 0, this._getMaxScrollValue(orientation));\n\t\t\t\t\t\tcase SCROLL_MODE_BOUNCE:\n\t\t\t\t\t\t\t\tthis._setVelocityFromOvershoot(scrollValue, axis, orientation);\n\t\t\t\t\t\t\t\treturn scrollValue;\n\t\t\t\t\t\tcase SCROLL_MODE_INFINITE:\n\t\t\t\t\t\t\t\treturn scrollValue;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tconsole.warn(`Unhandled scroll mode:${this.scrollMode}`);\n\t\t\t\t\t\t\t\treturn scrollValue;\n\t\t\t\t}\n\t\t}\n\t\t_syncAll() {\n\t\t\t\tthis._syncContentPosition(ORIENTATION_HORIZONTAL);\n\t\t\t\tthis._syncContentPosition(ORIENTATION_VERTICAL);\n\t\t\t\tthis._syncScrollbarPosition(ORIENTATION_HORIZONTAL);\n\t\t\t\tthis._syncScrollbarPosition(ORIENTATION_VERTICAL);\n\t\t\t\tthis._syncScrollbarEnabledState(ORIENTATION_HORIZONTAL);\n\t\t\t\tthis._syncScrollbarEnabledState(ORIENTATION_VERTICAL);\n\t\t}\n\t\t_syncContentPosition(orientation) {\n\t\t\t\tif (!this._contentEntity) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst axis = this._getAxis(orientation);\n\t\t\t\tconst sign = this._getSign(orientation);\n\t\t\t\tconst prevContentSize = this._prevContentSizes[orientation];\n\t\t\t\tconst currContentSize = this._getContentSize(orientation);\n\t\t\t\tif (prevContentSize !== null && Math.abs(prevContentSize - currContentSize) > 1e-4) {\n\t\t\t\t\t\tconst prevMaxOffset = this._getMaxOffset(orientation, prevContentSize);\n\t\t\t\t\t\tconst currMaxOffset = this._getMaxOffset(orientation, currContentSize);\n\t\t\t\t\t\tif (currMaxOffset === 0) {\n\t\t\t\t\t\t\t\tthis._scroll[axis] = 1;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._scroll[axis] = math.clamp(this._scroll[axis] * prevMaxOffset / currMaxOffset, 0, 1);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst offset = this._scroll[axis] * this._getMaxOffset(orientation);\n\t\t\t\tconst contentPosition = this._contentEntity.getLocalPosition();\n\t\t\t\tcontentPosition[axis] = offset * sign;\n\t\t\t\tthis._contentEntity.setLocalPosition(contentPosition);\n\t\t\t\tthis._prevContentSizes[orientation] = currContentSize;\n\t\t}\n\t\t_syncScrollbarPosition(orientation) {\n\t\t\t\tconst scrollbarEntity = this._scrollbarEntities[orientation];\n\t\t\t\tif (!scrollbarEntity?.scrollbar) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst axis = this._getAxis(orientation);\n\t\t\t\tthis._scrollbarUpdateFlags[orientation] = true;\n\t\t\t\tscrollbarEntity.scrollbar.value = this._scroll[axis];\n\t\t\t\tscrollbarEntity.scrollbar.handleSize = this._getScrollbarHandleSize(axis, orientation);\n\t\t\t\tthis._scrollbarUpdateFlags[orientation] = false;\n\t\t}\n\t\t_syncScrollbarEnabledState(orientation) {\n\t\t\t\tconst entity = this._scrollbarEntities[orientation];\n\t\t\t\tif (!entity) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst isScrollingEnabled = this._getScrollingEnabled(orientation);\n\t\t\t\tconst requestedVisibility = this._getScrollbarVisibility(orientation);\n\t\t\t\tswitch(requestedVisibility){\n\t\t\t\t\t\tcase SCROLLBAR_VISIBILITY_SHOW_ALWAYS:\n\t\t\t\t\t\t\t\tentity.enabled = isScrollingEnabled;\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\tcase SCROLLBAR_VISIBILITY_SHOW_WHEN_REQUIRED:\n\t\t\t\t\t\t\t\tentity.enabled = isScrollingEnabled && this._contentIsLargerThanViewport(orientation);\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tconsole.warn(`Unhandled scrollbar visibility:${requestedVisibility}`);\n\t\t\t\t\t\t\t\tentity.enabled = isScrollingEnabled;\n\t\t\t\t}\n\t\t}\n\t\t_contentIsLargerThanViewport(orientation) {\n\t\t\t\treturn this._getContentSize(orientation) > this._getViewportSize(orientation);\n\t\t}\n\t\t_contentPositionToScrollValue(contentPosition) {\n\t\t\t\tconst maxOffsetH = this._getMaxOffset(ORIENTATION_HORIZONTAL);\n\t\t\t\tconst maxOffsetV = this._getMaxOffset(ORIENTATION_VERTICAL);\n\t\t\t\tif (maxOffsetH === 0) {\n\t\t\t\t\t\t_tempScrollValue.x = 0;\n\t\t\t\t} else {\n\t\t\t\t\t\t_tempScrollValue.x = contentPosition.x / maxOffsetH;\n\t\t\t\t}\n\t\t\t\tif (maxOffsetV === 0) {\n\t\t\t\t\t\t_tempScrollValue.y = 0;\n\t\t\t\t} else {\n\t\t\t\t\t\t_tempScrollValue.y = contentPosition.y / -maxOffsetV;\n\t\t\t\t}\n\t\t\t\treturn _tempScrollValue;\n\t\t}\n\t\t_getMaxOffset(orientation, contentSize) {\n\t\t\t\tcontentSize = contentSize === undefined ? this._getContentSize(orientation) : contentSize;\n\t\t\t\tconst viewportSize = this._getViewportSize(orientation);\n\t\t\t\tif (contentSize < viewportSize) {\n\t\t\t\t\t\treturn -this._getViewportSize(orientation);\n\t\t\t\t}\n\t\t\t\treturn viewportSize - contentSize;\n\t\t}\n\t\t_getMaxScrollValue(orientation) {\n\t\t\t\treturn this._contentIsLargerThanViewport(orientation) ? 1 : 0;\n\t\t}\n\t\t_getScrollbarHandleSize(axis, orientation) {\n\t\t\t\tconst viewportSize = this._getViewportSize(orientation);\n\t\t\t\tconst contentSize = this._getContentSize(orientation);\n\t\t\t\tif (Math.abs(contentSize) < 0.001) {\n\t\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t\tconst handleSize = Math.min(viewportSize / contentSize, 1);\n\t\t\t\tconst overshoot = this._toOvershoot(this._scroll[axis], orientation);\n\t\t\t\tif (overshoot === 0) {\n\t\t\t\t\t\treturn handleSize;\n\t\t\t\t}\n\t\t\t\treturn handleSize / (1 + Math.abs(overshoot));\n\t\t}\n\t\t_getViewportSize(orientation) {\n\t\t\t\treturn this._getSize(orientation, this._viewportEntity);\n\t\t}\n\t\t_getContentSize(orientation) {\n\t\t\t\treturn this._getSize(orientation, this._contentEntity);\n\t\t}\n\t\t_getSize(orientation, entity) {\n\t\t\t\tif (entity?.element) {\n\t\t\t\t\t\treturn entity.element[this._getCalculatedDimension(orientation)];\n\t\t\t\t}\n\t\t\t\treturn 0;\n\t\t}\n\t\t_getScrollingEnabled(orientation) {\n\t\t\t\tif (orientation === ORIENTATION_HORIZONTAL) {\n\t\t\t\t\t\treturn this.horizontal;\n\t\t\t\t} else if (orientation === ORIENTATION_VERTICAL) {\n\t\t\t\t\t\treturn this.vertical;\n\t\t\t\t}\n\t\t\t\treturn undefined;\n\t\t}\n\t\t_getScrollbarVisibility(orientation) {\n\t\t\t\tif (orientation === ORIENTATION_HORIZONTAL) {\n\t\t\t\t\t\treturn this.horizontalScrollbarVisibility;\n\t\t\t\t} else if (orientation === ORIENTATION_VERTICAL) {\n\t\t\t\t\t\treturn this.verticalScrollbarVisibility;\n\t\t\t\t}\n\t\t\t\treturn undefined;\n\t\t}\n\t\t_getSign(orientation) {\n\t\t\t\treturn orientation === ORIENTATION_HORIZONTAL ? 1 : -1;\n\t\t}\n\t\t_getAxis(orientation) {\n\t\t\t\treturn orientation === ORIENTATION_HORIZONTAL ? 'x' : 'y';\n\t\t}\n\t\t_getCalculatedDimension(orientation) {\n\t\t\t\treturn orientation === ORIENTATION_HORIZONTAL ? 'calculatedWidth' : 'calculatedHeight';\n\t\t}\n\t\t_destroyDragHelper() {\n\t\t\t\tif (this._contentDragHelper) {\n\t\t\t\t\t\tthis._contentDragHelper.destroy();\n\t\t\t\t}\n\t\t}\n\t\tonUpdate() {\n\t\t\t\tif (this._contentEntity) {\n\t\t\t\t\t\tthis._updateVelocity();\n\t\t\t\t\t\tthis._syncScrollbarEnabledState(ORIENTATION_HORIZONTAL);\n\t\t\t\t\t\tthis._syncScrollbarEnabledState(ORIENTATION_VERTICAL);\n\t\t\t\t}\n\t\t}\n\t\t_updateVelocity() {\n\t\t\t\tif (!this._isDragging()) {\n\t\t\t\t\t\tif (this.scrollMode === SCROLL_MODE_BOUNCE) {\n\t\t\t\t\t\t\t\tif (this._hasOvershoot('x', ORIENTATION_HORIZONTAL)) {\n\t\t\t\t\t\t\t\t\t\tthis._setVelocityFromOvershoot(this.scroll.x, 'x', ORIENTATION_HORIZONTAL);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (this._hasOvershoot('y', ORIENTATION_VERTICAL)) {\n\t\t\t\t\t\t\t\t\t\tthis._setVelocityFromOvershoot(this.scroll.y, 'y', ORIENTATION_VERTICAL);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (Math.abs(this._velocity.x) > 1e-4 || Math.abs(this._velocity.y) > 1e-4) {\n\t\t\t\t\t\t\t\tconst position = this._contentEntity.getLocalPosition();\n\t\t\t\t\t\t\t\tposition.x += this._velocity.x;\n\t\t\t\t\t\t\t\tposition.y += this._velocity.y;\n\t\t\t\t\t\t\t\tthis._contentEntity.setLocalPosition(position);\n\t\t\t\t\t\t\t\tthis._setScrollFromContentPosition(position);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._velocity.x *= 1 - this.friction;\n\t\t\t\t\t\tthis._velocity.y *= 1 - this.friction;\n\t\t\t\t}\n\t\t}\n\t\t_hasOvershoot(axis, orientation) {\n\t\t\t\treturn Math.abs(this._toOvershoot(this.scroll[axis], orientation)) > 0.001;\n\t\t}\n\t\t_toOvershoot(scrollValue, orientation) {\n\t\t\t\tconst maxScrollValue = this._getMaxScrollValue(orientation);\n\t\t\t\tif (scrollValue < 0) {\n\t\t\t\t\t\treturn scrollValue;\n\t\t\t\t} else if (scrollValue > maxScrollValue) {\n\t\t\t\t\t\treturn scrollValue - maxScrollValue;\n\t\t\t\t}\n\t\t\t\treturn 0;\n\t\t}\n\t\t_setVelocityFromOvershoot(scrollValue, axis, orientation) {\n\t\t\t\tconst overshootValue = this._toOvershoot(scrollValue, orientation);\n\t\t\t\tconst overshootPixels = overshootValue * this._getMaxOffset(orientation) * this._getSign(orientation);\n\t\t\t\tif (Math.abs(overshootPixels) > 0) {\n\t\t\t\t\t\tthis._velocity[axis] = -overshootPixels / (this.bounceAmount * 50 + 1);\n\t\t\t\t}\n\t\t}\n\t\t_setVelocityFromContentPositionDelta(position) {\n\t\t\t\tif (this._prevContentDragPosition) {\n\t\t\t\t\t\tthis._velocity.sub2(position, this._prevContentDragPosition);\n\t\t\t\t\t\tthis._prevContentDragPosition.copy(position);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._velocity.set(0, 0, 0);\n\t\t\t\t\t\tthis._prevContentDragPosition = position.clone();\n\t\t\t\t}\n\t\t}\n\t\t_setScrollFromContentPosition(position) {\n\t\t\t\tlet scrollValue = this._contentPositionToScrollValue(position);\n\t\t\t\tif (this._isDragging()) {\n\t\t\t\t\t\tscrollValue = this._applyScrollValueTension(scrollValue);\n\t\t\t\t}\n\t\t\t\tthis._onSetScroll(scrollValue.x, scrollValue.y, false);\n\t\t}\n\t\t_applyScrollValueTension(scrollValue) {\n\t\t\t\tconst factor = 1;\n\t\t\t\tlet max = this._getMaxScrollValue(ORIENTATION_HORIZONTAL);\n\t\t\t\tlet overshoot = this._toOvershoot(scrollValue.x, ORIENTATION_HORIZONTAL);\n\t\t\t\tif (overshoot > 0) {\n\t\t\t\t\t\tscrollValue.x = max + factor * Math.log10(1 + overshoot);\n\t\t\t\t} else if (overshoot < 0) {\n\t\t\t\t\t\tscrollValue.x = -factor * Math.log10(1 - overshoot);\n\t\t\t\t}\n\t\t\t\tmax = this._getMaxScrollValue(ORIENTATION_VERTICAL);\n\t\t\t\tovershoot = this._toOvershoot(scrollValue.y, ORIENTATION_VERTICAL);\n\t\t\t\tif (overshoot > 0) {\n\t\t\t\t\t\tscrollValue.y = max + factor * Math.log10(1 + overshoot);\n\t\t\t\t} else if (overshoot < 0) {\n\t\t\t\t\t\tscrollValue.y = -factor * Math.log10(1 - overshoot);\n\t\t\t\t}\n\t\t\t\treturn scrollValue;\n\t\t}\n\t\t_isDragging() {\n\t\t\t\treturn this._contentDragHelper && this._contentDragHelper.isDragging;\n\t\t}\n\t\t_setScrollbarComponentsEnabled(enabled) {\n\t\t\t\tif (this._horizontalScrollbarEntity?.scrollbar) {\n\t\t\t\t\t\tthis._horizontalScrollbarEntity.scrollbar.enabled = enabled;\n\t\t\t\t}\n\t\t\t\tif (this._verticalScrollbarEntity?.scrollbar) {\n\t\t\t\t\t\tthis._verticalScrollbarEntity.scrollbar.enabled = enabled;\n\t\t\t\t}\n\t\t}\n\t\t_setContentDraggingEnabled(enabled) {\n\t\t\t\tif (this._contentDragHelper) {\n\t\t\t\t\t\tthis._contentDragHelper.enabled = enabled;\n\t\t\t\t}\n\t\t}\n\t\t_onMouseWheel(event) {\n\t\t\t\tif (!this.useMouseWheel || !this._contentEntity?.element) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst wheelEvent = event.event;\n\t\t\t\tconst normalizedDeltaX = wheelEvent.deltaX / this._contentEntity.element.calculatedWidth * this.mouseWheelSensitivity.x;\n\t\t\t\tconst normalizedDeltaY = wheelEvent.deltaY / this._contentEntity.element.calculatedHeight * this.mouseWheelSensitivity.y;\n\t\t\t\tconst scrollX = math.clamp(this._scroll.x + normalizedDeltaX, 0, this._getMaxScrollValue(ORIENTATION_HORIZONTAL));\n\t\t\t\tconst scrollY = math.clamp(this._scroll.y + normalizedDeltaY, 0, this._getMaxScrollValue(ORIENTATION_VERTICAL));\n\t\t\t\tthis.scroll = new Vec2(scrollX, scrollY);\n\t\t}\n\t\t_enableContentInput() {\n\t\t\t\twhile(this._disabledContentInputEntities.length){\n\t\t\t\t\t\tconst e = this._disabledContentInputEntities.pop();\n\t\t\t\t\t\tif (e.element) {\n\t\t\t\t\t\t\t\te.element.useInput = true;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._disabledContentInput = false;\n\t\t}\n\t\t_disableContentInput() {\n\t\t\t\tconst _disableInput = (e)=>{\n\t\t\t\t\t\tif (e.element && e.element.useInput) {\n\t\t\t\t\t\t\t\tthis._disabledContentInputEntities.push(e);\n\t\t\t\t\t\t\t\te.element.useInput = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst children = e.children;\n\t\t\t\t\t\tfor(let i = 0, l = children.length; i < l; i++){\n\t\t\t\t\t\t\t\t_disableInput(children[i]);\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tif (this._contentEntity) {\n\t\t\t\t\t\tconst children = this._contentEntity.children;\n\t\t\t\t\t\tfor(let i = 0, l = children.length; i < l; i++){\n\t\t\t\t\t\t\t\t_disableInput(children[i]);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._disabledContentInput = true;\n\t\t}\n\t\tonEnable() {\n\t\t\t\tthis._setScrollbarComponentsEnabled(true);\n\t\t\t\tthis._setContentDraggingEnabled(true);\n\t\t\t\tthis._syncAll();\n\t\t}\n\t\tonDisable() {\n\t\t\t\tthis._setScrollbarComponentsEnabled(false);\n\t\t\t\tthis._setContentDraggingEnabled(false);\n\t\t}\n\t\tonRemove() {\n\t\t\t\tthis._toggleLifecycleListeners('off');\n\t\t\t\tthis._toggleElementListeners('off');\n\t\t\t\tthis._destroyDragHelper();\n\t\t}\n\t\tresolveDuplicatedEntityReferenceProperties(oldScrollView, duplicatedIdsMap) {\n\t\t\t\tif (oldScrollView.viewportEntity) {\n\t\t\t\t\t\tthis.viewportEntity = duplicatedIdsMap[oldScrollView.viewportEntity.getGuid()];\n\t\t\t\t}\n\t\t\t\tif (oldScrollView.contentEntity) {\n\t\t\t\t\t\tthis.contentEntity = duplicatedIdsMap[oldScrollView.contentEntity.getGuid()];\n\t\t\t\t}\n\t\t\t\tif (oldScrollView.horizontalScrollbarEntity) {\n\t\t\t\t\t\tthis.horizontalScrollbarEntity = duplicatedIdsMap[oldScrollView.horizontalScrollbarEntity.getGuid()];\n\t\t\t\t}\n\t\t\t\tif (oldScrollView.verticalScrollbarEntity) {\n\t\t\t\t\t\tthis.verticalScrollbarEntity = duplicatedIdsMap[oldScrollView.verticalScrollbarEntity.getGuid()];\n\t\t\t\t}\n\t\t}\n}\n\nconst DEFAULT_DRAG_THRESHOLD$1 = 10;\nclass ScrollViewComponentData {\n\t\tconstructor(){\n\t\t\t\tthis.enabled = true;\n\t\t\t\tthis.dragThreshold = DEFAULT_DRAG_THRESHOLD$1;\n\t\t\t\tthis.useMouseWheel = true;\n\t\t\t\tthis.mouseWheelSensitivity = new Vec2(1, 1);\n\t\t\t\tthis.horizontalScrollbarVisibility = 0;\n\t\t\t\tthis.verticalScrollbarVisibility = 0;\n\t\t\t\tthis.viewportEntity = null;\n\t\t\t\tthis.contentEntity = null;\n\t\t\t\tthis.horizontalScrollbarEntity = null;\n\t\t\t\tthis.verticalScrollbarEntity = null;\n\t\t}\n}\n\nconst _schema$6 = [\n\t\t{\n\t\t\t\tname: 'enabled',\n\t\t\t\ttype: 'boolean'\n\t\t},\n\t\t{\n\t\t\t\tname: 'horizontal',\n\t\t\t\ttype: 'boolean'\n\t\t},\n\t\t{\n\t\t\t\tname: 'vertical',\n\t\t\t\ttype: 'boolean'\n\t\t},\n\t\t{\n\t\t\t\tname: 'scrollMode',\n\t\t\t\ttype: 'number'\n\t\t},\n\t\t{\n\t\t\t\tname: 'bounceAmount',\n\t\t\t\ttype: 'number'\n\t\t},\n\t\t{\n\t\t\t\tname: 'friction',\n\t\t\t\ttype: 'number'\n\t\t},\n\t\t{\n\t\t\t\tname: 'dragThreshold',\n\t\t\t\ttype: 'number'\n\t\t},\n\t\t{\n\t\t\t\tname: 'useMouseWheel',\n\t\t\t\ttype: 'boolean'\n\t\t},\n\t\t{\n\t\t\t\tname: 'mouseWheelSensitivity',\n\t\t\t\ttype: 'vec2'\n\t\t},\n\t\t{\n\t\t\t\tname: 'horizontalScrollbarVisibility',\n\t\t\t\ttype: 'number'\n\t\t},\n\t\t{\n\t\t\t\tname: 'verticalScrollbarVisibility',\n\t\t\t\ttype: 'number'\n\t\t}\n];\nconst DEFAULT_DRAG_THRESHOLD = 10;\nclass ScrollViewComponentSystem extends ComponentSystem {\n\t\tconstructor(app){\n\t\t\t\tsuper(app);\n\t\t\t\tthis.id = 'scrollview';\n\t\t\t\tthis.ComponentType = ScrollViewComponent;\n\t\t\t\tthis.DataType = ScrollViewComponentData;\n\t\t\t\tthis.schema = _schema$6;\n\t\t\t\tthis.on('beforeremove', this._onRemoveComponent, this);\n\t\t\t\tthis.app.systems.on('update', this.onUpdate, this);\n\t\t}\n\t\tinitializeComponentData(component, data, properties) {\n\t\t\t\tif (data.dragThreshold === undefined) {\n\t\t\t\t\t\tdata.dragThreshold = DEFAULT_DRAG_THRESHOLD;\n\t\t\t\t}\n\t\t\t\tif (data.useMouseWheel === undefined) {\n\t\t\t\t\t\tdata.useMouseWheel = true;\n\t\t\t\t}\n\t\t\t\tif (data.mouseWheelSensitivity === undefined) {\n\t\t\t\t\t\tdata.mouseWheelSensitivity = new Vec2(1, 1);\n\t\t\t\t}\n\t\t\t\tsuper.initializeComponentData(component, data, _schema$6);\n\t\t\t\tcomponent.viewportEntity = data.viewportEntity;\n\t\t\t\tcomponent.contentEntity = data.contentEntity;\n\t\t\t\tcomponent.horizontalScrollbarEntity = data.horizontalScrollbarEntity;\n\t\t\t\tcomponent.verticalScrollbarEntity = data.verticalScrollbarEntity;\n\t\t}\n\t\tonUpdate(dt) {\n\t\t\t\tconst components = this.store;\n\t\t\t\tfor(const id in components){\n\t\t\t\t\t\tconst entity = components[id].entity;\n\t\t\t\t\t\tconst component = entity.scrollview;\n\t\t\t\t\t\tif (component.enabled && entity.enabled) {\n\t\t\t\t\t\t\t\tcomponent.onUpdate();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_onRemoveComponent(entity, component) {\n\t\t\t\tcomponent.onRemove();\n\t\t}\n\t\tdestroy() {\n\t\t\t\tsuper.destroy();\n\t\t\t\tthis.app.systems.off('update', this.onUpdate, this);\n\t\t}\n}\n\nclass ScrollbarComponent extends Component {\n\t\tstatic{\n\t\t\t\tthis.EVENT_SETVALUE = 'set:value';\n\t\t}\n\t\tconstructor(system, entity){\n\t\t\t\tsuper(system, entity), this._handleEntity = null, this._evtHandleEntityElementAdd = null, this._evtHandleEntityChanges = [];\n\t\t\t\tthis._toggleLifecycleListeners('on');\n\t\t}\n\t\tget data() {\n\t\t\t\tconst record = this.system.store[this.entity.getGuid()];\n\t\t\t\treturn record ? record.data : null;\n\t\t}\n\t\tset enabled(arg) {\n\t\t\t\tthis._setValue('enabled', arg);\n\t\t}\n\t\tget enabled() {\n\t\t\t\treturn this.data.enabled;\n\t\t}\n\t\tset orientation(arg) {\n\t\t\t\tthis._setValue('orientation', arg);\n\t\t}\n\t\tget orientation() {\n\t\t\t\treturn this.data.orientation;\n\t\t}\n\t\tset value(arg) {\n\t\t\t\tthis._setValue('value', arg);\n\t\t}\n\t\tget value() {\n\t\t\t\treturn this.data.value;\n\t\t}\n\t\tset handleSize(arg) {\n\t\t\t\tthis._setValue('handleSize', arg);\n\t\t}\n\t\tget handleSize() {\n\t\t\t\treturn this.data.handleSize;\n\t\t}\n\t\tset handleEntity(arg) {\n\t\t\t\tif (this._handleEntity === arg) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst isString = typeof arg === 'string';\n\t\t\t\tif (this._handleEntity && isString && this._handleEntity.getGuid() === arg) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this._handleEntity) {\n\t\t\t\t\t\tthis._handleEntityUnsubscribe();\n\t\t\t\t}\n\t\t\t\tif (arg instanceof GraphNode) {\n\t\t\t\t\t\tthis._handleEntity = arg;\n\t\t\t\t} else if (isString) {\n\t\t\t\t\t\tthis._handleEntity = this.system.app.getEntityFromIndex(arg) || null;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._handleEntity = null;\n\t\t\t\t}\n\t\t\t\tif (this._handleEntity) {\n\t\t\t\t\t\tthis._handleEntitySubscribe();\n\t\t\t\t}\n\t\t\t\tif (this._handleEntity) {\n\t\t\t\t\t\tthis.data.handleEntity = this._handleEntity.getGuid();\n\t\t\t\t} else if (isString && arg) {\n\t\t\t\t\t\tthis.data.handleEntity = arg;\n\t\t\t\t}\n\t\t}\n\t\tget handleEntity() {\n\t\t\t\treturn this._handleEntity;\n\t\t}\n\t\t_setValue(name, value) {\n\t\t\t\tconst data = this.data;\n\t\t\t\tconst oldValue = data[name];\n\t\t\t\tdata[name] = value;\n\t\t\t\tthis.fire('set', name, oldValue, value);\n\t\t}\n\t\t_toggleLifecycleListeners(onOrOff) {\n\t\t\t\tthis[onOrOff]('set_value', this._onSetValue, this);\n\t\t\t\tthis[onOrOff]('set_handleSize', this._onSetHandleSize, this);\n\t\t\t\tthis[onOrOff]('set_orientation', this._onSetOrientation, this);\n\t\t}\n\t\t_handleEntitySubscribe() {\n\t\t\t\tthis._evtHandleEntityElementAdd = this._handleEntity.on('element:add', this._onHandleElementGain, this);\n\t\t\t\tif (this._handleEntity.element) {\n\t\t\t\t\t\tthis._onHandleElementGain();\n\t\t\t\t}\n\t\t}\n\t\t_handleEntityUnsubscribe() {\n\t\t\t\tthis._evtHandleEntityElementAdd?.off();\n\t\t\t\tthis._evtHandleEntityElementAdd = null;\n\t\t\t\tif (this._handleEntity?.element) {\n\t\t\t\t\t\tthis._onHandleElementLose();\n\t\t\t\t}\n\t\t}\n\t\t_handleEntityElementSubscribe() {\n\t\t\t\tconst element = this._handleEntity.element;\n\t\t\t\tconst handles = this._evtHandleEntityChanges;\n\t\t\t\thandles.push(element.once('beforeremove', this._onHandleElementLose, this));\n\t\t\t\thandles.push(element.on('set:anchor', this._onSetHandleAlignment, this));\n\t\t\t\thandles.push(element.on('set:margin', this._onSetHandleAlignment, this));\n\t\t\t\thandles.push(element.on('set:pivot', this._onSetHandleAlignment, this));\n\t\t}\n\t\t_handleEntityElementUnsubscribe() {\n\t\t\t\tfor(let i = 0; i < this._evtHandleEntityChanges.length; i++){\n\t\t\t\t\t\tthis._evtHandleEntityChanges[i].off();\n\t\t\t\t}\n\t\t\t\tthis._evtHandleEntityChanges.length = 0;\n\t\t}\n\t\t_onHandleElementGain() {\n\t\t\t\tthis._handleEntityElementSubscribe();\n\t\t\t\tthis._destroyDragHelper();\n\t\t\t\tthis._handleDragHelper = new ElementDragHelper(this._handleEntity.element, this._getAxis());\n\t\t\t\tthis._handleDragHelper.on('drag:move', this._onHandleDrag, this);\n\t\t\t\tthis._updateHandlePositionAndSize();\n\t\t}\n\t\t_onHandleElementLose() {\n\t\t\t\tthis._handleEntityElementUnsubscribe();\n\t\t\t\tthis._destroyDragHelper();\n\t\t}\n\t\t_onHandleDrag(position) {\n\t\t\t\tif (this._handleEntity && this.enabled && this.entity.enabled) {\n\t\t\t\t\t\tthis.value = this._handlePositionToScrollValue(position[this._getAxis()]);\n\t\t\t\t}\n\t\t}\n\t\t_onSetValue(name, oldValue, newValue) {\n\t\t\t\tif (Math.abs(newValue - oldValue) > 1e-5) {\n\t\t\t\t\t\tthis.data.value = math.clamp(newValue, 0, 1);\n\t\t\t\t\t\tthis._updateHandlePositionAndSize();\n\t\t\t\t\t\tthis.fire('set:value', this.data.value);\n\t\t\t\t}\n\t\t}\n\t\t_onSetHandleSize(name, oldValue, newValue) {\n\t\t\t\tif (Math.abs(newValue - oldValue) > 1e-5) {\n\t\t\t\t\t\tthis.data.handleSize = math.clamp(newValue, 0, 1);\n\t\t\t\t\t\tthis._updateHandlePositionAndSize();\n\t\t\t\t}\n\t\t}\n\t\t_onSetHandleAlignment() {\n\t\t\t\tthis._updateHandlePositionAndSize();\n\t\t}\n\t\t_onSetOrientation(name, oldValue, newValue) {\n\t\t\t\tif (newValue !== oldValue && this._handleEntity?.element) {\n\t\t\t\t\t\tthis._handleEntity.element[this._getOppositeDimension()] = 0;\n\t\t\t\t}\n\t\t}\n\t\t_updateHandlePositionAndSize() {\n\t\t\t\tconst handleEntity = this._handleEntity;\n\t\t\t\tconst handleElement = handleEntity?.element;\n\t\t\t\tif (handleEntity) {\n\t\t\t\t\t\tconst position = handleEntity.getLocalPosition();\n\t\t\t\t\t\tposition[this._getAxis()] = this._getHandlePosition();\n\t\t\t\t\t\thandleEntity.setLocalPosition(position);\n\t\t\t\t}\n\t\t\t\tif (handleElement) {\n\t\t\t\t\t\thandleElement[this._getDimension()] = this._getHandleLength();\n\t\t\t\t}\n\t\t}\n\t\t_handlePositionToScrollValue(handlePosition) {\n\t\t\t\treturn handlePosition * this._getSign() / this._getUsableTrackLength();\n\t\t}\n\t\t_scrollValueToHandlePosition(value) {\n\t\t\t\treturn value * this._getSign() * this._getUsableTrackLength();\n\t\t}\n\t\t_getUsableTrackLength() {\n\t\t\t\treturn Math.max(this._getTrackLength() - this._getHandleLength(), 0.001);\n\t\t}\n\t\t_getTrackLength() {\n\t\t\t\tif (this.entity.element) {\n\t\t\t\t\t\treturn this.orientation === ORIENTATION_HORIZONTAL ? this.entity.element.calculatedWidth : this.entity.element.calculatedHeight;\n\t\t\t\t}\n\t\t\t\treturn 0;\n\t\t}\n\t\t_getHandleLength() {\n\t\t\t\treturn this._getTrackLength() * this.handleSize;\n\t\t}\n\t\t_getHandlePosition() {\n\t\t\t\treturn this._scrollValueToHandlePosition(this.value);\n\t\t}\n\t\t_getSign() {\n\t\t\t\treturn this.orientation === ORIENTATION_HORIZONTAL ? 1 : -1;\n\t\t}\n\t\t_getAxis() {\n\t\t\t\treturn this.orientation === ORIENTATION_HORIZONTAL ? 'x' : 'y';\n\t\t}\n\t\t_getDimension() {\n\t\t\t\treturn this.orientation === ORIENTATION_HORIZONTAL ? 'width' : 'height';\n\t\t}\n\t\t_getOppositeDimension() {\n\t\t\t\treturn this.orientation === ORIENTATION_HORIZONTAL ? 'height' : 'width';\n\t\t}\n\t\t_destroyDragHelper() {\n\t\t\t\tif (this._handleDragHelper) {\n\t\t\t\t\t\tthis._handleDragHelper.destroy();\n\t\t\t\t}\n\t\t}\n\t\t_setHandleDraggingEnabled(enabled) {\n\t\t\t\tif (this._handleDragHelper) {\n\t\t\t\t\t\tthis._handleDragHelper.enabled = enabled;\n\t\t\t\t}\n\t\t}\n\t\tonEnable() {\n\t\t\t\tthis._setHandleDraggingEnabled(true);\n\t\t}\n\t\tonDisable() {\n\t\t\t\tthis._setHandleDraggingEnabled(false);\n\t\t}\n\t\tonRemove() {\n\t\t\t\tthis._destroyDragHelper();\n\t\t\t\tthis._toggleLifecycleListeners('off');\n\t\t}\n\t\tresolveDuplicatedEntityReferenceProperties(oldScrollbar, duplicatedIdsMap) {\n\t\t\t\tif (oldScrollbar.handleEntity) {\n\t\t\t\t\t\tthis.handleEntity = duplicatedIdsMap[oldScrollbar.handleEntity.getGuid()];\n\t\t\t\t}\n\t\t}\n}\n\nclass ScrollbarComponentData {\n\t\tconstructor(){\n\t\t\t\tthis.enabled = true;\n\t\t\t\tthis.orientation = ORIENTATION_HORIZONTAL;\n\t\t\t\tthis.value = 0;\n\t\t\t\tthis.handleSize = 0;\n\t\t\t\tthis.handleEntity = null;\n\t\t}\n}\n\nconst _schema$5 = [\n\t\t{\n\t\t\t\tname: 'enabled',\n\t\t\t\ttype: 'boolean'\n\t\t},\n\t\t{\n\t\t\t\tname: 'orientation',\n\t\t\t\ttype: 'number'\n\t\t},\n\t\t{\n\t\t\t\tname: 'value',\n\t\t\t\ttype: 'number'\n\t\t},\n\t\t{\n\t\t\t\tname: 'handleSize',\n\t\t\t\ttype: 'number'\n\t\t}\n];\nclass ScrollbarComponentSystem extends ComponentSystem {\n\t\tconstructor(app){\n\t\t\t\tsuper(app);\n\t\t\t\tthis.id = 'scrollbar';\n\t\t\t\tthis.ComponentType = ScrollbarComponent;\n\t\t\t\tthis.DataType = ScrollbarComponentData;\n\t\t\t\tthis.schema = _schema$5;\n\t\t\t\tthis.on('add', this._onAddComponent, this);\n\t\t\t\tthis.on('beforeremove', this._onRemoveComponent, this);\n\t\t}\n\t\tinitializeComponentData(component, data, properties) {\n\t\t\t\tsuper.initializeComponentData(component, data, _schema$5);\n\t\t\t\tcomponent.handleEntity = data.handleEntity;\n\t\t}\n\t\t_onAddComponent(entity) {\n\t\t\t\tentity.fire('scrollbar:add');\n\t\t}\n\t\t_onRemoveComponent(entity, component) {\n\t\t\t\tcomponent.onRemove();\n\t\t}\n}\n\nconst instanceOptions = {\n\t\tvolume: 0,\n\t\tpitch: 0,\n\t\tloop: false,\n\t\tstartTime: 0,\n\t\tduration: 0,\n\t\tposition: new Vec3(),\n\t\tmaxDistance: 0,\n\t\trefDistance: 0,\n\t\trollOffFactor: 0,\n\t\tdistanceModel: 0,\n\t\tonPlay: null,\n\t\tonPause: null,\n\t\tonResume: null,\n\t\tonStop: null,\n\t\tonEnd: null\n};\nclass SoundSlot extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_PLAY = 'play';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_PAUSE = 'pause';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_RESUME = 'resume';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_STOP = 'stop';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_END = 'end';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_LOAD = 'load';\n\t\t}\n\t\tconstructor(component, name = 'Untitled', options = {}){\n\t\t\t\tsuper(), this.instances = [];\n\t\t\t\tthis._component = component;\n\t\t\t\tthis._assets = component.system.app.assets;\n\t\t\t\tthis._manager = component.system.manager;\n\t\t\t\tthis.name = name;\n\t\t\t\tthis._volume = options.volume !== undefined ? math.clamp(Number(options.volume) || 0, 0, 1) : 1;\n\t\t\t\tthis._pitch = options.pitch !== undefined ? Math.max(0.01, Number(options.pitch) || 0) : 1;\n\t\t\t\tthis._loop = !!(options.loop !== undefined ? options.loop : false);\n\t\t\t\tthis._duration = options.duration > 0 ? options.duration : null;\n\t\t\t\tthis._startTime = Math.max(0, Number(options.startTime) || 0);\n\t\t\t\tthis._overlap = !!options.overlap;\n\t\t\t\tthis._autoPlay = !!options.autoPlay;\n\t\t\t\tthis._firstNode = null;\n\t\t\t\tthis._lastNode = null;\n\t\t\t\tthis._asset = options.asset;\n\t\t\t\tif (this._asset instanceof Asset) {\n\t\t\t\t\t\tthis._asset = this._asset.id;\n\t\t\t\t}\n\t\t\t\tthis._onInstancePlayHandler = this._onInstancePlay.bind(this);\n\t\t\t\tthis._onInstancePauseHandler = this._onInstancePause.bind(this);\n\t\t\t\tthis._onInstanceResumeHandler = this._onInstanceResume.bind(this);\n\t\t\t\tthis._onInstanceStopHandler = this._onInstanceStop.bind(this);\n\t\t\t\tthis._onInstanceEndHandler = this._onInstanceEnd.bind(this);\n\t\t}\n\t\tplay() {\n\t\t\t\tif (!this.overlap) {\n\t\t\t\t\t\tthis.stop();\n\t\t\t\t}\n\t\t\t\tif (!this.isLoaded && !this._hasAsset()) {\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t\tconst instance = this._createInstance();\n\t\t\t\tthis.instances.push(instance);\n\t\t\t\tif (!this.isLoaded) {\n\t\t\t\t\t\tconst onLoad = function(sound) {\n\t\t\t\t\t\t\t\tconst playWhenLoaded = instance._playWhenLoaded;\n\t\t\t\t\t\t\t\tinstance.sound = sound;\n\t\t\t\t\t\t\t\tif (playWhenLoaded) {\n\t\t\t\t\t\t\t\t\t\tinstance.play();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t\tthis.off('load', onLoad);\n\t\t\t\t\t\tthis.once('load', onLoad);\n\t\t\t\t\t\tthis.load();\n\t\t\t\t} else {\n\t\t\t\t\t\tinstance.play();\n\t\t\t\t}\n\t\t\t\treturn instance;\n\t\t}\n\t\tpause() {\n\t\t\t\tlet paused = false;\n\t\t\t\tconst instances = this.instances;\n\t\t\t\tfor(let i = 0, len = instances.length; i < len; i++){\n\t\t\t\t\t\tif (instances[i].pause()) {\n\t\t\t\t\t\t\t\tpaused = true;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn paused;\n\t\t}\n\t\tresume() {\n\t\t\t\tlet resumed = false;\n\t\t\t\tconst instances = this.instances;\n\t\t\t\tfor(let i = 0, len = instances.length; i < len; i++){\n\t\t\t\t\t\tif (instances[i].resume()) {\n\t\t\t\t\t\t\t\tresumed = true;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn resumed;\n\t\t}\n\t\tstop() {\n\t\t\t\tlet stopped = false;\n\t\t\t\tconst instances = this.instances;\n\t\t\t\tlet i = instances.length;\n\t\t\t\twhile(i--){\n\t\t\t\t\t\tinstances[i].stop();\n\t\t\t\t\t\tstopped = true;\n\t\t\t\t}\n\t\t\t\tinstances.length = 0;\n\t\t\t\treturn stopped;\n\t\t}\n\t\tload() {\n\t\t\t\tif (!this._hasAsset()) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst asset = this._assets.get(this._asset);\n\t\t\t\tif (!asset) {\n\t\t\t\t\t\tthis._assets.off(`add:${this._asset}`, this._onAssetAdd, this);\n\t\t\t\t\t\tthis._assets.once(`add:${this._asset}`, this._onAssetAdd, this);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tasset.off('remove', this._onAssetRemoved, this);\n\t\t\t\tasset.on('remove', this._onAssetRemoved, this);\n\t\t\t\tif (!asset.resource) {\n\t\t\t\t\t\tasset.off('load', this._onAssetLoad, this);\n\t\t\t\t\t\tasset.once('load', this._onAssetLoad, this);\n\t\t\t\t\t\tthis._assets.load(asset);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.fire('load', asset.resource);\n\t\t}\n\t\tsetExternalNodes(firstNode, lastNode) {\n\t\t\t\tif (!firstNode) {\n\t\t\t\t\t\tconsole.error('The firstNode must have a valid AudioNode');\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (!lastNode) {\n\t\t\t\t\t\tlastNode = firstNode;\n\t\t\t\t}\n\t\t\t\tthis._firstNode = firstNode;\n\t\t\t\tthis._lastNode = lastNode;\n\t\t\t\tif (!this._overlap) {\n\t\t\t\t\t\tconst instances = this.instances;\n\t\t\t\t\t\tfor(let i = 0, len = instances.length; i < len; i++){\n\t\t\t\t\t\t\t\tinstances[i].setExternalNodes(firstNode, lastNode);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tclearExternalNodes() {\n\t\t\t\tthis._firstNode = null;\n\t\t\t\tthis._lastNode = null;\n\t\t\t\tif (!this._overlap) {\n\t\t\t\t\t\tconst instances = this.instances;\n\t\t\t\t\t\tfor(let i = 0, len = instances.length; i < len; i++){\n\t\t\t\t\t\t\t\tinstances[i].clearExternalNodes();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tgetExternalNodes() {\n\t\t\t\treturn [\n\t\t\t\t\t\tthis._firstNode,\n\t\t\t\t\t\tthis._lastNode\n\t\t\t\t];\n\t\t}\n\t\t_hasAsset() {\n\t\t\t\treturn this._asset != null;\n\t\t}\n\t\t_createInstance() {\n\t\t\t\tlet instance = null;\n\t\t\t\tconst component = this._component;\n\t\t\t\tlet sound = null;\n\t\t\t\tif (this._hasAsset()) {\n\t\t\t\t\t\tconst asset = this._assets.get(this._asset);\n\t\t\t\t\t\tif (asset) {\n\t\t\t\t\t\t\t\tsound = asset.resource;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst data = instanceOptions;\n\t\t\t\tdata.volume = this._volume * component.volume;\n\t\t\t\tdata.pitch = this._pitch * component.pitch;\n\t\t\t\tdata.loop = this._loop;\n\t\t\t\tdata.startTime = this._startTime;\n\t\t\t\tdata.duration = this._duration;\n\t\t\t\tdata.onPlay = this._onInstancePlayHandler;\n\t\t\t\tdata.onPause = this._onInstancePauseHandler;\n\t\t\t\tdata.onResume = this._onInstanceResumeHandler;\n\t\t\t\tdata.onStop = this._onInstanceStopHandler;\n\t\t\t\tdata.onEnd = this._onInstanceEndHandler;\n\t\t\t\tif (component.positional) {\n\t\t\t\t\t\tdata.position.copy(component.entity.getPosition());\n\t\t\t\t\t\tdata.maxDistance = component.maxDistance;\n\t\t\t\t\t\tdata.refDistance = component.refDistance;\n\t\t\t\t\t\tdata.rollOffFactor = component.rollOffFactor;\n\t\t\t\t\t\tdata.distanceModel = component.distanceModel;\n\t\t\t\t\t\tinstance = new SoundInstance3d(this._manager, sound, data);\n\t\t\t\t} else {\n\t\t\t\t\t\tinstance = new SoundInstance(this._manager, sound, data);\n\t\t\t\t}\n\t\t\t\tif (this._firstNode) {\n\t\t\t\t\t\tinstance.setExternalNodes(this._firstNode, this._lastNode);\n\t\t\t\t}\n\t\t\t\treturn instance;\n\t\t}\n\t\t_onInstancePlay(instance) {\n\t\t\t\tthis.fire('play', instance);\n\t\t\t\tthis._component.fire('play', this, instance);\n\t\t}\n\t\t_onInstancePause(instance) {\n\t\t\t\tthis.fire('pause', instance);\n\t\t\t\tthis._component.fire('pause', this, instance);\n\t\t}\n\t\t_onInstanceResume(instance) {\n\t\t\t\tthis.fire('resume', instance);\n\t\t\t\tthis._component.fire('resume', this, instance);\n\t\t}\n\t\t_onInstanceStop(instance) {\n\t\t\t\tconst idx = this.instances.indexOf(instance);\n\t\t\t\tif (idx !== -1) {\n\t\t\t\t\t\tthis.instances.splice(idx, 1);\n\t\t\t\t}\n\t\t\t\tthis.fire('stop', instance);\n\t\t\t\tthis._component.fire('stop', this, instance);\n\t\t}\n\t\t_onInstanceEnd(instance) {\n\t\t\t\tconst idx = this.instances.indexOf(instance);\n\t\t\t\tif (idx !== -1) {\n\t\t\t\t\t\tthis.instances.splice(idx, 1);\n\t\t\t\t}\n\t\t\t\tthis.fire('end', instance);\n\t\t\t\tthis._component.fire('end', this, instance);\n\t\t}\n\t\t_onAssetAdd(asset) {\n\t\t\t\tthis.load();\n\t\t}\n\t\t_onAssetLoad(asset) {\n\t\t\t\tthis.load();\n\t\t}\n\t\t_onAssetRemoved(asset) {\n\t\t\t\tasset.off('remove', this._onAssetRemoved, this);\n\t\t\t\tthis._assets.off(`add:${asset.id}`, this._onAssetAdd, this);\n\t\t\t\tthis.stop();\n\t\t}\n\t\tupdatePosition(position) {\n\t\t\t\tconst instances = this.instances;\n\t\t\t\tfor(let i = 0, len = instances.length; i < len; i++){\n\t\t\t\t\t\tinstances[i].position = position;\n\t\t\t\t}\n\t\t}\n\t\tset asset(value) {\n\t\t\t\tconst old = this._asset;\n\t\t\t\tif (old) {\n\t\t\t\t\t\tthis._assets.off(`add:${old}`, this._onAssetAdd, this);\n\t\t\t\t\t\tconst oldAsset = this._assets.get(old);\n\t\t\t\t\t\tif (oldAsset) {\n\t\t\t\t\t\t\t\toldAsset.off('remove', this._onAssetRemoved, this);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._asset = value;\n\t\t\t\tif (this._asset instanceof Asset) {\n\t\t\t\t\t\tthis._asset = this._asset.id;\n\t\t\t\t}\n\t\t\t\tif (this._hasAsset() && this._component.enabled && this._component.entity.enabled) {\n\t\t\t\t\t\tthis.load();\n\t\t\t\t}\n\t\t}\n\t\tget asset() {\n\t\t\t\treturn this._asset;\n\t\t}\n\t\tset autoPlay(value) {\n\t\t\t\tthis._autoPlay = !!value;\n\t\t}\n\t\tget autoPlay() {\n\t\t\t\treturn this._autoPlay;\n\t\t}\n\t\tset duration(value) {\n\t\t\t\tthis._duration = Math.max(0, Number(value) || 0) || null;\n\t\t\t\tif (!this._overlap) {\n\t\t\t\t\t\tconst instances = this.instances;\n\t\t\t\t\t\tfor(let i = 0, len = instances.length; i < len; i++){\n\t\t\t\t\t\t\t\tinstances[i].duration = this._duration;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget duration() {\n\t\t\t\tlet assetDuration = 0;\n\t\t\t\tif (this._hasAsset()) {\n\t\t\t\t\t\tconst asset = this._assets.get(this._asset);\n\t\t\t\t\t\tassetDuration = asset?.resource ? asset.resource.duration : 0;\n\t\t\t\t}\n\t\t\t\tif (this._duration != null) {\n\t\t\t\t\t\treturn this._duration % (assetDuration || 1);\n\t\t\t\t}\n\t\t\t\treturn assetDuration;\n\t\t}\n\t\tget isLoaded() {\n\t\t\t\tif (this._hasAsset()) {\n\t\t\t\t\t\tconst asset = this._assets.get(this._asset);\n\t\t\t\t\t\tif (asset) {\n\t\t\t\t\t\t\t\treturn !!asset.resource;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t}\n\t\tget isPaused() {\n\t\t\t\tconst instances = this.instances;\n\t\t\t\tconst len = instances.length;\n\t\t\t\tif (len === 0) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < len; i++){\n\t\t\t\t\t\tif (!instances[i].isPaused) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t}\n\t\tget isPlaying() {\n\t\t\t\tconst instances = this.instances;\n\t\t\t\tfor(let i = 0, len = instances.length; i < len; i++){\n\t\t\t\t\t\tif (instances[i].isPlaying) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t}\n\t\tget isStopped() {\n\t\t\t\tconst instances = this.instances;\n\t\t\t\tfor(let i = 0, len = instances.length; i < len; i++){\n\t\t\t\t\t\tif (!instances[i].isStopped) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t}\n\t\tset loop(value) {\n\t\t\t\tthis._loop = !!value;\n\t\t\t\tconst instances = this.instances;\n\t\t\t\tfor(let i = 0, len = instances.length; i < len; i++){\n\t\t\t\t\t\tinstances[i].loop = this._loop;\n\t\t\t\t}\n\t\t}\n\t\tget loop() {\n\t\t\t\treturn this._loop;\n\t\t}\n\t\tset overlap(value) {\n\t\t\t\tthis._overlap = !!value;\n\t\t}\n\t\tget overlap() {\n\t\t\t\treturn this._overlap;\n\t\t}\n\t\tset pitch(value) {\n\t\t\t\tthis._pitch = Math.max(Number(value) || 0, 0.01);\n\t\t\t\tif (!this._overlap) {\n\t\t\t\t\t\tconst instances = this.instances;\n\t\t\t\t\t\tfor(let i = 0, len = instances.length; i < len; i++){\n\t\t\t\t\t\t\t\tinstances[i].pitch = this.pitch * this._component.pitch;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget pitch() {\n\t\t\t\treturn this._pitch;\n\t\t}\n\t\tset startTime(value) {\n\t\t\t\tthis._startTime = Math.max(0, Number(value) || 0);\n\t\t\t\tif (!this._overlap) {\n\t\t\t\t\t\tconst instances = this.instances;\n\t\t\t\t\t\tfor(let i = 0, len = instances.length; i < len; i++){\n\t\t\t\t\t\t\t\tinstances[i].startTime = this._startTime;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget startTime() {\n\t\t\t\treturn this._startTime;\n\t\t}\n\t\tset volume(value) {\n\t\t\t\tthis._volume = math.clamp(Number(value) || 0, 0, 1);\n\t\t\t\tif (!this._overlap) {\n\t\t\t\t\t\tconst instances = this.instances;\n\t\t\t\t\t\tfor(let i = 0, len = instances.length; i < len; i++){\n\t\t\t\t\t\t\t\tinstances[i].volume = this._volume * this._component.volume;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget volume() {\n\t\t\t\treturn this._volume;\n\t\t}\n}\n\nclass SoundComponent extends Component {\n\t\tstatic{\n\t\t\t\tthis.EVENT_PLAY = 'play';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_PAUSE = 'pause';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_RESUME = 'resume';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_STOP = 'stop';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_END = 'end';\n\t\t}\n\t\t_updateSoundInstances(property, value, isFactor) {\n\t\t\t\tconst slots = this._slots;\n\t\t\t\tfor(const key in slots){\n\t\t\t\t\t\tconst slot = slots[key];\n\t\t\t\t\t\tif (!slot.overlap) {\n\t\t\t\t\t\t\t\tconst instances = slot.instances;\n\t\t\t\t\t\t\t\tfor(let i = 0, len = instances.length; i < len; i++){\n\t\t\t\t\t\t\t\t\t\tinstances[i][property] = isFactor ? slot[property] * value : value;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tset distanceModel(value) {\n\t\t\t\tthis._distanceModel = value;\n\t\t\t\tthis._updateSoundInstances('distanceModel', value, false);\n\t\t}\n\t\tget distanceModel() {\n\t\t\t\treturn this._distanceModel;\n\t\t}\n\t\tset maxDistance(value) {\n\t\t\t\tthis._maxDistance = value;\n\t\t\t\tthis._updateSoundInstances('maxDistance', value, false);\n\t\t}\n\t\tget maxDistance() {\n\t\t\t\treturn this._maxDistance;\n\t\t}\n\t\tset refDistance(value) {\n\t\t\t\tthis._refDistance = value;\n\t\t\t\tthis._updateSoundInstances('refDistance', value, false);\n\t\t}\n\t\tget refDistance() {\n\t\t\t\treturn this._refDistance;\n\t\t}\n\t\tset rollOffFactor(value) {\n\t\t\t\tthis._rollOffFactor = value;\n\t\t\t\tthis._updateSoundInstances('rollOffFactor', value, false);\n\t\t}\n\t\tget rollOffFactor() {\n\t\t\t\treturn this._rollOffFactor;\n\t\t}\n\t\tset pitch(value) {\n\t\t\t\tthis._pitch = value;\n\t\t\t\tthis._updateSoundInstances('pitch', value, true);\n\t\t}\n\t\tget pitch() {\n\t\t\t\treturn this._pitch;\n\t\t}\n\t\tset volume(value) {\n\t\t\t\tthis._volume = value;\n\t\t\t\tthis._updateSoundInstances('volume', value, true);\n\t\t}\n\t\tget volume() {\n\t\t\t\treturn this._volume;\n\t\t}\n\t\tset positional(newValue) {\n\t\t\t\tthis._positional = newValue;\n\t\t\t\tconst slots = this._slots;\n\t\t\t\tfor(const key in slots){\n\t\t\t\t\t\tconst slot = slots[key];\n\t\t\t\t\t\tif (!slot.overlap) {\n\t\t\t\t\t\t\t\tconst instances = slot.instances;\n\t\t\t\t\t\t\t\tconst oldLength = instances.length;\n\t\t\t\t\t\t\t\tfor(let i = oldLength - 1; i >= 0; i--){\n\t\t\t\t\t\t\t\t\t\tconst isPlaying = instances[i].isPlaying || instances[i].isSuspended;\n\t\t\t\t\t\t\t\t\t\tconst currentTime = instances[i].currentTime;\n\t\t\t\t\t\t\t\t\t\tif (isPlaying) {\n\t\t\t\t\t\t\t\t\t\t\t\tinstances[i].stop();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tconst instance = slot._createInstance();\n\t\t\t\t\t\t\t\t\t\tif (isPlaying) {\n\t\t\t\t\t\t\t\t\t\t\t\tinstance.play();\n\t\t\t\t\t\t\t\t\t\t\t\tinstance.currentTime = currentTime;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tinstances.push(instance);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget positional() {\n\t\t\t\treturn this._positional;\n\t\t}\n\t\tset slots(newValue) {\n\t\t\t\tconst oldValue = this._slots;\n\t\t\t\tif (oldValue) {\n\t\t\t\t\t\tfor(const key in oldValue){\n\t\t\t\t\t\t\t\toldValue[key].stop();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst slots = {};\n\t\t\t\tfor(const key in newValue){\n\t\t\t\t\t\tif (!(newValue[key] instanceof SoundSlot)) {\n\t\t\t\t\t\t\t\tif (newValue[key].name) {\n\t\t\t\t\t\t\t\t\t\tslots[newValue[key].name] = new SoundSlot(this, newValue[key].name, newValue[key]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tslots[newValue[key].name] = newValue[key];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._slots = slots;\n\t\t\t\tif (this.enabled && this.entity.enabled) {\n\t\t\t\t\t\tthis.onEnable();\n\t\t\t\t}\n\t\t}\n\t\tget slots() {\n\t\t\t\treturn this._slots;\n\t\t}\n\t\tonEnable() {\n\t\t\t\tif (this.system._inTools) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst slots = this._slots;\n\t\t\t\tconst playingBeforeDisable = this._playingBeforeDisable;\n\t\t\t\tfor(const key in slots){\n\t\t\t\t\t\tconst slot = slots[key];\n\t\t\t\t\t\tif (slot.autoPlay && slot.isStopped) {\n\t\t\t\t\t\t\t\tslot.play();\n\t\t\t\t\t\t} else if (playingBeforeDisable[key]) {\n\t\t\t\t\t\t\t\tslot.resume();\n\t\t\t\t\t\t} else if (!slot.isLoaded) {\n\t\t\t\t\t\t\t\tslot.load();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tonDisable() {\n\t\t\t\tconst slots = this._slots;\n\t\t\t\tconst playingBeforeDisable = {};\n\t\t\t\tfor(const key in slots){\n\t\t\t\t\t\tif (!slots[key].overlap) {\n\t\t\t\t\t\t\t\tif (slots[key].isPlaying) {\n\t\t\t\t\t\t\t\t\t\tslots[key].pause();\n\t\t\t\t\t\t\t\t\t\tplayingBeforeDisable[key] = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._playingBeforeDisable = playingBeforeDisable;\n\t\t}\n\t\tonRemove() {\n\t\t\t\tthis.off();\n\t\t}\n\t\taddSlot(name, options) {\n\t\t\t\tconst slots = this._slots;\n\t\t\t\tif (slots[name]) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tconst slot = new SoundSlot(this, name, options);\n\t\t\t\tslots[name] = slot;\n\t\t\t\tif (slot.autoPlay && this.enabled && this.entity.enabled) {\n\t\t\t\t\t\tslot.play();\n\t\t\t\t}\n\t\t\t\treturn slot;\n\t\t}\n\t\tremoveSlot(name) {\n\t\t\t\tconst slots = this._slots;\n\t\t\t\tif (slots[name]) {\n\t\t\t\t\t\tslots[name].stop();\n\t\t\t\t\t\tdelete slots[name];\n\t\t\t\t}\n\t\t}\n\t\tslot(name) {\n\t\t\t\treturn this._slots[name];\n\t\t}\n\t\t_getSlotProperty(name, property) {\n\t\t\t\tif (!this.enabled || !this.entity.enabled) {\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t\tconst slot = this._slots[name];\n\t\t\t\tif (!slot) {\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t\treturn slot[property];\n\t\t}\n\t\tisPlaying(name) {\n\t\t\t\treturn this._getSlotProperty(name, 'isPlaying') || false;\n\t\t}\n\t\tisLoaded(name) {\n\t\t\t\treturn this._getSlotProperty(name, 'isLoaded') || false;\n\t\t}\n\t\tisPaused(name) {\n\t\t\t\treturn this._getSlotProperty(name, 'isPaused') || false;\n\t\t}\n\t\tisStopped(name) {\n\t\t\t\treturn this._getSlotProperty(name, 'isStopped') || false;\n\t\t}\n\t\tplay(name) {\n\t\t\t\tif (!this.enabled || !this.entity.enabled) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tconst slot = this._slots[name];\n\t\t\t\tif (!slot) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\treturn slot.play();\n\t\t}\n\t\tpause(name) {\n\t\t\t\tconst slots = this._slots;\n\t\t\t\tif (name) {\n\t\t\t\t\t\tconst slot = slots[name];\n\t\t\t\t\t\tif (!slot) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tslot.pause();\n\t\t\t\t} else {\n\t\t\t\t\t\tfor(const key in slots){\n\t\t\t\t\t\t\t\tslots[key].pause();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tresume(name) {\n\t\t\t\tconst slots = this._slots;\n\t\t\t\tif (name) {\n\t\t\t\t\t\tconst slot = slots[name];\n\t\t\t\t\t\tif (!slot) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (slot.isPaused) {\n\t\t\t\t\t\t\t\tslot.resume();\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tfor(const key in slots){\n\t\t\t\t\t\t\t\tslots[key].resume();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tstop(name) {\n\t\t\t\tconst slots = this._slots;\n\t\t\t\tif (name) {\n\t\t\t\t\t\tconst slot = slots[name];\n\t\t\t\t\t\tif (!slot) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tslot.stop();\n\t\t\t\t} else {\n\t\t\t\t\t\tfor(const key in slots){\n\t\t\t\t\t\t\t\tslots[key].stop();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tconstructor(...args){\n\t\t\t\tsuper(...args), this._volume = 1, this._pitch = 1, this._positional = true, this._refDistance = 1, this._maxDistance = 10000, this._rollOffFactor = 1, this._distanceModel = DISTANCE_LINEAR, this._slots = {}, this._playingBeforeDisable = {};\n\t\t}\n}\n\nclass SoundComponentData {\n\t\tconstructor(){\n\t\t\t\tthis.enabled = true;\n\t\t}\n}\n\nconst _schema$4 = [\n\t\t'enabled'\n];\nclass SoundComponentSystem extends ComponentSystem {\n\t\tconstructor(app){\n\t\t\t\tsuper(app);\n\t\t\t\tthis.id = 'sound';\n\t\t\t\tthis.ComponentType = SoundComponent;\n\t\t\t\tthis.DataType = SoundComponentData;\n\t\t\t\tthis.schema = _schema$4;\n\t\t\t\tthis.manager = app.soundManager;\n\t\t\t\tthis.app.systems.on('update', this.onUpdate, this);\n\t\t\t\tthis.on('beforeremove', this.onBeforeRemove, this);\n\t\t}\n\t\tset volume(volume) {\n\t\t\t\tthis.manager.volume = volume;\n\t\t}\n\t\tget volume() {\n\t\t\t\treturn this.manager.volume;\n\t\t}\n\t\tget context() {\n\t\t\t\tif (!hasAudioContext()) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\treturn this.manager.context;\n\t\t}\n\t\tinitializeComponentData(component, data, properties) {\n\t\t\t\tproperties = [\n\t\t\t\t\t\t'volume',\n\t\t\t\t\t\t'pitch',\n\t\t\t\t\t\t'positional',\n\t\t\t\t\t\t'refDistance',\n\t\t\t\t\t\t'maxDistance',\n\t\t\t\t\t\t'rollOffFactor',\n\t\t\t\t\t\t'distanceModel',\n\t\t\t\t\t\t'slots'\n\t\t\t\t];\n\t\t\t\tfor(let i = 0; i < properties.length; i++){\n\t\t\t\t\t\tif (data.hasOwnProperty(properties[i])) {\n\t\t\t\t\t\t\t\tcomponent[properties[i]] = data[properties[i]];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tsuper.initializeComponentData(component, data, [\n\t\t\t\t\t\t'enabled'\n\t\t\t\t]);\n\t\t}\n\t\tcloneComponent(entity, clone) {\n\t\t\t\tconst srcComponent = entity.sound;\n\t\t\t\tconst srcSlots = srcComponent.slots;\n\t\t\t\tconst slots = {};\n\t\t\t\tfor(const key in srcSlots){\n\t\t\t\t\t\tconst srcSlot = srcSlots[key];\n\t\t\t\t\t\tslots[key] = {\n\t\t\t\t\t\t\t\tname: srcSlot.name,\n\t\t\t\t\t\t\t\tvolume: srcSlot.volume,\n\t\t\t\t\t\t\t\tpitch: srcSlot.pitch,\n\t\t\t\t\t\t\t\tloop: srcSlot.loop,\n\t\t\t\t\t\t\t\tduration: srcSlot.duration,\n\t\t\t\t\t\t\t\tstartTime: srcSlot.startTime,\n\t\t\t\t\t\t\t\toverlap: srcSlot.overlap,\n\t\t\t\t\t\t\t\tautoPlay: srcSlot.autoPlay,\n\t\t\t\t\t\t\t\tasset: srcSlot.asset\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst cloneData = {\n\t\t\t\t\t\tdistanceModel: srcComponent.distanceModel,\n\t\t\t\t\t\tenabled: srcComponent.enabled,\n\t\t\t\t\t\tmaxDistance: srcComponent.maxDistance,\n\t\t\t\t\t\tpitch: srcComponent.pitch,\n\t\t\t\t\t\tpositional: srcComponent.positional,\n\t\t\t\t\t\trefDistance: srcComponent.refDistance,\n\t\t\t\t\t\trollOffFactor: srcComponent.rollOffFactor,\n\t\t\t\t\t\tslots: slots,\n\t\t\t\t\t\tvolume: srcComponent.volume\n\t\t\t\t};\n\t\t\t\treturn this.addComponent(clone, cloneData);\n\t\t}\n\t\tonUpdate(dt) {\n\t\t\t\tconst store = this.store;\n\t\t\t\tfor(const id in store){\n\t\t\t\t\t\tif (store.hasOwnProperty(id)) {\n\t\t\t\t\t\t\t\tconst item = store[id];\n\t\t\t\t\t\t\t\tconst entity = item.entity;\n\t\t\t\t\t\t\t\tif (entity.enabled) {\n\t\t\t\t\t\t\t\t\t\tconst component = entity.sound;\n\t\t\t\t\t\t\t\t\t\tif (component.enabled && component.positional) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst position = entity.getPosition();\n\t\t\t\t\t\t\t\t\t\t\t\tconst slots = component.slots;\n\t\t\t\t\t\t\t\t\t\t\t\tfor(const key in slots){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tslots[key].updatePosition(position);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tonBeforeRemove(entity, component) {\n\t\t\t\tconst slots = component.slots;\n\t\t\t\tfor(const key in slots){\n\t\t\t\t\t\tif (!slots[key].overlap) {\n\t\t\t\t\t\t\t\tslots[key].stop();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcomponent.onRemove();\n\t\t}\n\t\tdestroy() {\n\t\t\t\tsuper.destroy();\n\t\t\t\tthis.app.systems.off('update', this.onUpdate, this);\n\t\t}\n}\nComponent._buildAccessors(SoundComponent.prototype, _schema$4);\n\nconst SPRITETYPE_SIMPLE = 'simple';\nconst SPRITETYPE_ANIMATED = 'animated';\n\nclass SpriteAnimationClip extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_PLAY = 'play';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_PAUSE = 'pause';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_RESUME = 'resume';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_STOP = 'stop';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_END = 'end';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_LOOP = 'loop';\n\t\t}\n\t\tconstructor(component, data){\n\t\t\t\tsuper(), this._evtSetMeshes = null;\n\t\t\t\tthis._component = component;\n\t\t\t\tthis._frame = 0;\n\t\t\t\tthis._sprite = null;\n\t\t\t\tthis._spriteAsset = null;\n\t\t\t\tthis.spriteAsset = data.spriteAsset;\n\t\t\t\tthis.name = data.name;\n\t\t\t\tthis.fps = data.fps || 0;\n\t\t\t\tthis.loop = data.loop || false;\n\t\t\t\tthis._playing = false;\n\t\t\t\tthis._paused = false;\n\t\t\t\tthis._time = 0;\n\t\t}\n\t\tget duration() {\n\t\t\t\tif (this._sprite) {\n\t\t\t\t\t\tconst fps = this.fps || Number.MIN_VALUE;\n\t\t\t\t\t\treturn this._sprite.frameKeys.length / Math.abs(fps);\n\t\t\t\t}\n\t\t\t\treturn 0;\n\t\t}\n\t\tset frame(value) {\n\t\t\t\tthis._setFrame(value);\n\t\t\t\tconst fps = this.fps || Number.MIN_VALUE;\n\t\t\t\tthis._setTime(this._frame / fps);\n\t\t}\n\t\tget frame() {\n\t\t\t\treturn this._frame;\n\t\t}\n\t\tget isPaused() {\n\t\t\t\treturn this._paused;\n\t\t}\n\t\tget isPlaying() {\n\t\t\t\treturn this._playing;\n\t\t}\n\t\tset sprite(value) {\n\t\t\t\tif (this._sprite) {\n\t\t\t\t\t\tthis._evtSetMeshes?.off();\n\t\t\t\t\t\tthis._evtSetMeshes = null;\n\t\t\t\t\t\tthis._sprite.off('set:pixelsPerUnit', this._onSpritePpuChanged, this);\n\t\t\t\t\t\tthis._sprite.off('set:atlas', this._onSpriteMeshesChange, this);\n\t\t\t\t\t\tif (this._sprite.atlas) {\n\t\t\t\t\t\t\t\tthis._sprite.atlas.off('set:texture', this._onSpriteMeshesChange, this);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._sprite = value;\n\t\t\t\tif (this._sprite) {\n\t\t\t\t\t\tthis._evtSetMeshes = this._sprite.on('set:meshes', this._onSpriteMeshesChange, this);\n\t\t\t\t\t\tthis._sprite.on('set:pixelsPerUnit', this._onSpritePpuChanged, this);\n\t\t\t\t\t\tthis._sprite.on('set:atlas', this._onSpriteMeshesChange, this);\n\t\t\t\t\t\tif (this._sprite.atlas) {\n\t\t\t\t\t\t\t\tthis._sprite.atlas.on('set:texture', this._onSpriteMeshesChange, this);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this._component.currentClip === this) {\n\t\t\t\t\t\tlet mi;\n\t\t\t\t\t\tif (!value || !value.atlas) {\n\t\t\t\t\t\t\t\tmi = this._component._meshInstance;\n\t\t\t\t\t\t\t\tif (mi) {\n\t\t\t\t\t\t\t\t\t\tmi.deleteParameter('texture_emissiveMap');\n\t\t\t\t\t\t\t\t\t\tmi.deleteParameter('texture_opacityMap');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis._component._hideModel();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (value.atlas.texture) {\n\t\t\t\t\t\t\t\t\t\tmi = this._component._meshInstance;\n\t\t\t\t\t\t\t\t\t\tif (mi) {\n\t\t\t\t\t\t\t\t\t\t\t\tmi.setParameter('texture_emissiveMap', value.atlas.texture);\n\t\t\t\t\t\t\t\t\t\t\t\tmi.setParameter('texture_opacityMap', value.atlas.texture);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (this._component.enabled && this._component.entity.enabled) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._component._showModel();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (this.time && this.fps) {\n\t\t\t\t\t\t\t\t\t\tthis.time = this.time;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis.frame = this.frame;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget sprite() {\n\t\t\t\treturn this._sprite;\n\t\t}\n\t\tset spriteAsset(value) {\n\t\t\t\tconst assets = this._component.system.app.assets;\n\t\t\t\tlet id = value;\n\t\t\t\tif (value instanceof Asset) {\n\t\t\t\t\t\tid = value.id;\n\t\t\t\t}\n\t\t\t\tif (this._spriteAsset !== id) {\n\t\t\t\t\t\tif (this._spriteAsset) {\n\t\t\t\t\t\t\t\tconst prev = assets.get(this._spriteAsset);\n\t\t\t\t\t\t\t\tif (prev) {\n\t\t\t\t\t\t\t\t\t\tthis._unbindSpriteAsset(prev);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._spriteAsset = id;\n\t\t\t\t\t\tif (this._spriteAsset) {\n\t\t\t\t\t\t\t\tconst asset = assets.get(this._spriteAsset);\n\t\t\t\t\t\t\t\tif (!asset) {\n\t\t\t\t\t\t\t\t\t\tthis.sprite = null;\n\t\t\t\t\t\t\t\t\t\tassets.on(`add:${this._spriteAsset}`, this._onSpriteAssetAdded, this);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis._bindSpriteAsset(asset);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.sprite = null;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget spriteAsset() {\n\t\t\t\treturn this._spriteAsset;\n\t\t}\n\t\tset time(value) {\n\t\t\t\tthis._setTime(value);\n\t\t\t\tif (this._sprite) {\n\t\t\t\t\t\tthis.frame = Math.min(this._sprite.frameKeys.length - 1, Math.floor(this._time * Math.abs(this.fps)));\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.frame = 0;\n\t\t\t\t}\n\t\t}\n\t\tget time() {\n\t\t\t\treturn this._time;\n\t\t}\n\t\t_onSpriteAssetAdded(asset) {\n\t\t\t\tthis._component.system.app.assets.off(`add:${asset.id}`, this._onSpriteAssetAdded, this);\n\t\t\t\tif (this._spriteAsset === asset.id) {\n\t\t\t\t\t\tthis._bindSpriteAsset(asset);\n\t\t\t\t}\n\t\t}\n\t\t_bindSpriteAsset(asset) {\n\t\t\t\tasset.on('load', this._onSpriteAssetLoad, this);\n\t\t\t\tasset.on('remove', this._onSpriteAssetRemove, this);\n\t\t\t\tif (asset.resource) {\n\t\t\t\t\t\tthis._onSpriteAssetLoad(asset);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._component.system.app.assets.load(asset);\n\t\t\t\t}\n\t\t}\n\t\t_unbindSpriteAsset(asset) {\n\t\t\t\tif (!asset) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tasset.off('load', this._onSpriteAssetLoad, this);\n\t\t\t\tasset.off('remove', this._onSpriteAssetRemove, this);\n\t\t\t\tif (asset.resource && !asset.resource.atlas) {\n\t\t\t\t\t\tthis._component.system.app.assets.off(`load:${asset.data.textureAtlasAsset}`, this._onTextureAtlasLoad, this);\n\t\t\t\t}\n\t\t}\n\t\t_onSpriteAssetLoad(asset) {\n\t\t\t\tif (!asset.resource) {\n\t\t\t\t\t\tthis.sprite = null;\n\t\t\t\t} else {\n\t\t\t\t\t\tif (!asset.resource.atlas) {\n\t\t\t\t\t\t\t\tconst atlasAssetId = asset.data.textureAtlasAsset;\n\t\t\t\t\t\t\t\tconst assets = this._component.system.app.assets;\n\t\t\t\t\t\t\t\tassets.off(`load:${atlasAssetId}`, this._onTextureAtlasLoad, this);\n\t\t\t\t\t\t\t\tassets.once(`load:${atlasAssetId}`, this._onTextureAtlasLoad, this);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.sprite = asset.resource;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_onTextureAtlasLoad(atlasAsset) {\n\t\t\t\tconst spriteAsset = this._spriteAsset;\n\t\t\t\tif (spriteAsset instanceof Asset) {\n\t\t\t\t\t\tthis._onSpriteAssetLoad(spriteAsset);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._onSpriteAssetLoad(this._component.system.app.assets.get(spriteAsset));\n\t\t\t\t}\n\t\t}\n\t\t_onSpriteAssetRemove(asset) {\n\t\t\t\tthis.sprite = null;\n\t\t}\n\t\t_onSpriteMeshesChange() {\n\t\t\t\tif (this._component.currentClip === this) {\n\t\t\t\t\t\tthis._component._showFrame(this.frame);\n\t\t\t\t}\n\t\t}\n\t\t_onSpritePpuChanged() {\n\t\t\t\tif (this._component.currentClip === this) {\n\t\t\t\t\t\tif (this.sprite.renderMode !== SPRITE_RENDERMODE_SIMPLE) {\n\t\t\t\t\t\t\t\tthis._component._showFrame(this.frame);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_update(dt) {\n\t\t\t\tif (this.fps === 0) return;\n\t\t\t\tif (!this._playing || this._paused || !this._sprite) return;\n\t\t\t\tconst dir = this.fps < 0 ? -1 : 1;\n\t\t\t\tconst time = this._time + dt * this._component.speed * dir;\n\t\t\t\tconst duration = this.duration;\n\t\t\t\tconst end = time > duration || time < 0;\n\t\t\t\tthis._setTime(time);\n\t\t\t\tlet frame = this.frame;\n\t\t\t\tif (this._sprite) {\n\t\t\t\t\t\tframe = Math.floor(this._sprite.frameKeys.length * this._time / duration);\n\t\t\t\t} else {\n\t\t\t\t\t\tframe = 0;\n\t\t\t\t}\n\t\t\t\tif (frame !== this._frame) {\n\t\t\t\t\t\tthis._setFrame(frame);\n\t\t\t\t}\n\t\t\t\tif (end) {\n\t\t\t\t\t\tif (this.loop) {\n\t\t\t\t\t\t\t\tthis.fire('loop');\n\t\t\t\t\t\t\t\tthis._component.fire('loop', this);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._playing = false;\n\t\t\t\t\t\t\t\tthis._paused = false;\n\t\t\t\t\t\t\t\tthis.fire('end');\n\t\t\t\t\t\t\t\tthis._component.fire('end', this);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_setTime(value) {\n\t\t\t\tthis._time = value;\n\t\t\t\tconst duration = this.duration;\n\t\t\t\tif (this._time < 0) {\n\t\t\t\t\t\tif (this.loop) {\n\t\t\t\t\t\t\t\tthis._time = this._time % duration + duration;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._time = 0;\n\t\t\t\t\t\t}\n\t\t\t\t} else if (this._time > duration) {\n\t\t\t\t\t\tif (this.loop) {\n\t\t\t\t\t\t\t\tthis._time %= duration;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._time = duration;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_setFrame(value) {\n\t\t\t\tif (this._sprite) {\n\t\t\t\t\t\tthis._frame = math.clamp(value, 0, this._sprite.frameKeys.length - 1);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._frame = value;\n\t\t\t\t}\n\t\t\t\tif (this._component.currentClip === this) {\n\t\t\t\t\t\tthis._component._showFrame(this._frame);\n\t\t\t\t}\n\t\t}\n\t\t_destroy() {\n\t\t\t\tif (this._spriteAsset) {\n\t\t\t\t\t\tconst assets = this._component.system.app.assets;\n\t\t\t\t\t\tthis._unbindSpriteAsset(assets.get(this._spriteAsset));\n\t\t\t\t}\n\t\t\t\tif (this._sprite) {\n\t\t\t\t\t\tthis.sprite = null;\n\t\t\t\t}\n\t\t\t\tif (this._spriteAsset) {\n\t\t\t\t\t\tthis.spriteAsset = null;\n\t\t\t\t}\n\t\t}\n\t\tplay() {\n\t\t\t\tif (this._playing) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._playing = true;\n\t\t\t\tthis._paused = false;\n\t\t\t\tthis.frame = 0;\n\t\t\t\tthis.fire('play');\n\t\t\t\tthis._component.fire('play', this);\n\t\t}\n\t\tpause() {\n\t\t\t\tif (!this._playing || this._paused) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._paused = true;\n\t\t\t\tthis.fire('pause');\n\t\t\t\tthis._component.fire('pause', this);\n\t\t}\n\t\tresume() {\n\t\t\t\tif (!this._paused) return;\n\t\t\t\tthis._paused = false;\n\t\t\t\tthis.fire('resume');\n\t\t\t\tthis._component.fire('resume', this);\n\t\t}\n\t\tstop() {\n\t\t\t\tif (!this._playing) return;\n\t\t\t\tthis._playing = false;\n\t\t\t\tthis._paused = false;\n\t\t\t\tthis._time = 0;\n\t\t\t\tthis.frame = 0;\n\t\t\t\tthis.fire('stop');\n\t\t\t\tthis._component.fire('stop', this);\n\t\t}\n}\n\nconst PARAM_EMISSIVE_MAP = 'texture_emissiveMap';\nconst PARAM_OPACITY_MAP = 'texture_opacityMap';\nconst PARAM_EMISSIVE = 'material_emissive';\nconst PARAM_OPACITY = 'material_opacity';\nconst PARAM_INNER_OFFSET = 'innerOffset';\nconst PARAM_OUTER_SCALE = 'outerScale';\nconst PARAM_ATLAS_RECT = 'atlasRect';\nclass SpriteComponent extends Component {\n\t\tstatic{\n\t\t\t\tthis.EVENT_PLAY = 'play';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_PAUSE = 'pause';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_RESUME = 'resume';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_STOP = 'stop';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_END = 'end';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_LOOP = 'loop';\n\t\t}\n\t\tconstructor(system, entity){\n\t\t\t\tsuper(system, entity), this._evtLayersChanged = null, this._evtLayerAdded = null, this._evtLayerRemoved = null;\n\t\t\t\tthis._type = SPRITETYPE_SIMPLE;\n\t\t\t\tthis._material = system.defaultMaterial;\n\t\t\t\tthis._color = new Color(1, 1, 1, 1);\n\t\t\t\tthis._colorUniform = new Float32Array(3);\n\t\t\t\tthis._speed = 1;\n\t\t\t\tthis._flipX = false;\n\t\t\t\tthis._flipY = false;\n\t\t\t\tthis._width = 1;\n\t\t\t\tthis._height = 1;\n\t\t\t\tthis._drawOrder = 0;\n\t\t\t\tthis._layers = [\n\t\t\t\t\t\tLAYERID_WORLD\n\t\t\t\t];\n\t\t\t\tthis._outerScale = new Vec2(1, 1);\n\t\t\t\tthis._outerScaleUniform = new Float32Array(2);\n\t\t\t\tthis._innerOffset = new Vec4();\n\t\t\t\tthis._innerOffsetUniform = new Float32Array(4);\n\t\t\t\tthis._atlasRect = new Vec4();\n\t\t\t\tthis._atlasRectUniform = new Float32Array(4);\n\t\t\t\tthis._batchGroupId = -1;\n\t\t\t\tthis._batchGroup = null;\n\t\t\t\tthis._node = new GraphNode();\n\t\t\t\tthis._model = new Model();\n\t\t\t\tthis._model.graph = this._node;\n\t\t\t\tthis._meshInstance = null;\n\t\t\t\tentity.addChild(this._model.graph);\n\t\t\t\tthis._model._entity = entity;\n\t\t\t\tthis._updateAabbFunc = this._updateAabb.bind(this);\n\t\t\t\tthis._addedModel = false;\n\t\t\t\tthis._autoPlayClip = null;\n\t\t\t\tthis._clips = {};\n\t\t\t\tthis._defaultClip = new SpriteAnimationClip(this, {\n\t\t\t\t\t\tname: this.entity.name,\n\t\t\t\t\t\tfps: 0,\n\t\t\t\t\t\tloop: false,\n\t\t\t\t\t\tspriteAsset: null\n\t\t\t\t});\n\t\t\t\tthis._currentClip = this._defaultClip;\n\t\t}\n\t\tset type(value) {\n\t\t\t\tif (this._type === value) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._type = value;\n\t\t\t\tif (this._type === SPRITETYPE_SIMPLE) {\n\t\t\t\t\t\tthis.stop();\n\t\t\t\t\t\tthis._currentClip = this._defaultClip;\n\t\t\t\t\t\tif (this.enabled && this.entity.enabled) {\n\t\t\t\t\t\t\t\tthis._currentClip.frame = this.frame;\n\t\t\t\t\t\t\t\tif (this._currentClip.sprite) {\n\t\t\t\t\t\t\t\t\t\tthis._showModel();\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis._hideModel();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t} else if (this._type === SPRITETYPE_ANIMATED) {\n\t\t\t\t\t\tthis.stop();\n\t\t\t\t\t\tif (this._autoPlayClip) {\n\t\t\t\t\t\t\t\tthis._tryAutoPlay();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this._currentClip && this._currentClip.isPlaying && this.enabled && this.entity.enabled) {\n\t\t\t\t\t\t\t\tthis._showModel();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._hideModel();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget type() {\n\t\t\t\treturn this._type;\n\t\t}\n\t\tset frame(value) {\n\t\t\t\tthis._currentClip.frame = value;\n\t\t}\n\t\tget frame() {\n\t\t\t\treturn this._currentClip.frame;\n\t\t}\n\t\tset spriteAsset(value) {\n\t\t\t\tthis._defaultClip.spriteAsset = value;\n\t\t}\n\t\tget spriteAsset() {\n\t\t\t\treturn this._defaultClip._spriteAsset;\n\t\t}\n\t\tset sprite(value) {\n\t\t\t\tthis._currentClip.sprite = value;\n\t\t}\n\t\tget sprite() {\n\t\t\t\treturn this._currentClip.sprite;\n\t\t}\n\t\tset material(value) {\n\t\t\t\tthis._material = value;\n\t\t\t\tif (this._meshInstance) {\n\t\t\t\t\t\tthis._meshInstance.material = value;\n\t\t\t\t}\n\t\t}\n\t\tget material() {\n\t\t\t\treturn this._material;\n\t\t}\n\t\tset color(value) {\n\t\t\t\tthis._color.r = value.r;\n\t\t\t\tthis._color.g = value.g;\n\t\t\t\tthis._color.b = value.b;\n\t\t\t\tif (this._meshInstance) {\n\t\t\t\t\t\tthis._colorUniform[0] = this._color.r;\n\t\t\t\t\t\tthis._colorUniform[1] = this._color.g;\n\t\t\t\t\t\tthis._colorUniform[2] = this._color.b;\n\t\t\t\t\t\tthis._meshInstance.setParameter(PARAM_EMISSIVE, this._colorUniform);\n\t\t\t\t}\n\t\t}\n\t\tget color() {\n\t\t\t\treturn this._color;\n\t\t}\n\t\tset opacity(value) {\n\t\t\t\tthis._color.a = value;\n\t\t\t\tif (this._meshInstance) {\n\t\t\t\t\t\tthis._meshInstance.setParameter(PARAM_OPACITY, value);\n\t\t\t\t}\n\t\t}\n\t\tget opacity() {\n\t\t\t\treturn this._color.a;\n\t\t}\n\t\tset clips(value) {\n\t\t\t\tif (!value) {\n\t\t\t\t\t\tfor(const name in this._clips){\n\t\t\t\t\t\t\t\tthis.removeClip(name);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tfor(const name in this._clips){\n\t\t\t\t\t\tlet found = false;\n\t\t\t\t\t\tfor(const key in value){\n\t\t\t\t\t\t\t\tif (value[key].name === name) {\n\t\t\t\t\t\t\t\t\t\tfound = true;\n\t\t\t\t\t\t\t\t\t\tthis._clips[name].fps = value[key].fps;\n\t\t\t\t\t\t\t\t\t\tthis._clips[name].loop = value[key].loop;\n\t\t\t\t\t\t\t\t\t\tif (value[key].hasOwnProperty('sprite')) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._clips[name].sprite = value[key].sprite;\n\t\t\t\t\t\t\t\t\t\t} else if (value[key].hasOwnProperty('spriteAsset')) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._clips[name].spriteAsset = value[key].spriteAsset;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!found) {\n\t\t\t\t\t\t\t\tthis.removeClip(name);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor(const key in value){\n\t\t\t\t\t\tif (this._clips[value[key].name]) continue;\n\t\t\t\t\t\tthis.addClip(value[key]);\n\t\t\t\t}\n\t\t\t\tif (this._autoPlayClip) {\n\t\t\t\t\t\tthis._tryAutoPlay();\n\t\t\t\t}\n\t\t\t\tif (!this._currentClip || !this._currentClip.sprite) {\n\t\t\t\t\t\tthis._hideModel();\n\t\t\t\t}\n\t\t}\n\t\tget clips() {\n\t\t\t\treturn this._clips;\n\t\t}\n\t\tget currentClip() {\n\t\t\t\treturn this._currentClip;\n\t\t}\n\t\tset speed(value) {\n\t\t\t\tthis._speed = value;\n\t\t}\n\t\tget speed() {\n\t\t\t\treturn this._speed;\n\t\t}\n\t\tset flipX(value) {\n\t\t\t\tif (this._flipX === value) return;\n\t\t\t\tthis._flipX = value;\n\t\t\t\tthis._updateTransform();\n\t\t}\n\t\tget flipX() {\n\t\t\t\treturn this._flipX;\n\t\t}\n\t\tset flipY(value) {\n\t\t\t\tif (this._flipY === value) return;\n\t\t\t\tthis._flipY = value;\n\t\t\t\tthis._updateTransform();\n\t\t}\n\t\tget flipY() {\n\t\t\t\treturn this._flipY;\n\t\t}\n\t\tset width(value) {\n\t\t\t\tif (value === this._width) return;\n\t\t\t\tthis._width = value;\n\t\t\t\tthis._outerScale.x = this._width;\n\t\t\t\tif (this.sprite && (this.sprite.renderMode === SPRITE_RENDERMODE_TILED || this.sprite.renderMode === SPRITE_RENDERMODE_SLICED)) {\n\t\t\t\t\t\tthis._updateTransform();\n\t\t\t\t}\n\t\t}\n\t\tget width() {\n\t\t\t\treturn this._width;\n\t\t}\n\t\tset height(value) {\n\t\t\t\tif (value === this._height) return;\n\t\t\t\tthis._height = value;\n\t\t\t\tthis._outerScale.y = this.height;\n\t\t\t\tif (this.sprite && (this.sprite.renderMode === SPRITE_RENDERMODE_TILED || this.sprite.renderMode === SPRITE_RENDERMODE_SLICED)) {\n\t\t\t\t\t\tthis._updateTransform();\n\t\t\t\t}\n\t\t}\n\t\tget height() {\n\t\t\t\treturn this._height;\n\t\t}\n\t\tset batchGroupId(value) {\n\t\t\t\tif (this._batchGroupId === value) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst prev = this._batchGroupId;\n\t\t\t\tthis._batchGroupId = value;\n\t\t\t\tif (this.entity.enabled && prev >= 0) {\n\t\t\t\t\t\tthis.system.app.batcher?.remove(BatchGroup.SPRITE, prev, this.entity);\n\t\t\t\t}\n\t\t\t\tif (this.entity.enabled && value >= 0) {\n\t\t\t\t\t\tthis.system.app.batcher?.insert(BatchGroup.SPRITE, value, this.entity);\n\t\t\t\t} else {\n\t\t\t\t\t\tif (prev >= 0) {\n\t\t\t\t\t\t\t\tif (this._currentClip && this._currentClip.sprite && this.enabled && this.entity.enabled) {\n\t\t\t\t\t\t\t\t\t\tthis._showModel();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget batchGroupId() {\n\t\t\t\treturn this._batchGroupId;\n\t\t}\n\t\tset autoPlayClip(value) {\n\t\t\t\tthis._autoPlayClip = value instanceof SpriteAnimationClip ? value.name : value;\n\t\t\t\tthis._tryAutoPlay();\n\t\t}\n\t\tget autoPlayClip() {\n\t\t\t\treturn this._autoPlayClip;\n\t\t}\n\t\tset drawOrder(value) {\n\t\t\t\tthis._drawOrder = value;\n\t\t\t\tif (this._meshInstance) {\n\t\t\t\t\t\tthis._meshInstance.drawOrder = value;\n\t\t\t\t}\n\t\t}\n\t\tget drawOrder() {\n\t\t\t\treturn this._drawOrder;\n\t\t}\n\t\tset layers(value) {\n\t\t\t\tif (this._addedModel) {\n\t\t\t\t\t\tthis._hideModel();\n\t\t\t\t}\n\t\t\t\tthis._layers = value;\n\t\t\t\tif (!this._meshInstance) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this.enabled && this.entity.enabled) {\n\t\t\t\t\t\tthis._showModel();\n\t\t\t\t}\n\t\t}\n\t\tget layers() {\n\t\t\t\treturn this._layers;\n\t\t}\n\t\tget aabb() {\n\t\t\t\tif (this._meshInstance) {\n\t\t\t\t\t\treturn this._meshInstance.aabb;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tonEnable() {\n\t\t\t\tconst app = this.system.app;\n\t\t\t\tconst scene = app.scene;\n\t\t\t\tconst layers = scene.layers;\n\t\t\t\tthis._evtLayersChanged = scene.on('set:layers', this._onLayersChanged, this);\n\t\t\t\tif (layers) {\n\t\t\t\t\t\tthis._evtLayerAdded = layers.on('add', this._onLayerAdded, this);\n\t\t\t\t\t\tthis._evtLayerRemoved = layers.on('remove', this._onLayerRemoved, this);\n\t\t\t\t}\n\t\t\t\tthis._showModel();\n\t\t\t\tif (this._autoPlayClip) {\n\t\t\t\t\t\tthis._tryAutoPlay();\n\t\t\t\t}\n\t\t\t\tif (this._batchGroupId >= 0) {\n\t\t\t\t\t\tapp.batcher?.insert(BatchGroup.SPRITE, this._batchGroupId, this.entity);\n\t\t\t\t}\n\t\t}\n\t\tonDisable() {\n\t\t\t\tconst app = this.system.app;\n\t\t\t\tconst scene = app.scene;\n\t\t\t\tconst layers = scene.layers;\n\t\t\t\tthis._evtLayersChanged?.off();\n\t\t\t\tthis._evtLayersChanged = null;\n\t\t\t\tif (layers) {\n\t\t\t\t\t\tthis._evtLayerAdded?.off();\n\t\t\t\t\t\tthis._evtLayerAdded = null;\n\t\t\t\t\t\tthis._evtLayerRemoved?.off();\n\t\t\t\t\t\tthis._evtLayerRemoved = null;\n\t\t\t\t}\n\t\t\t\tthis.stop();\n\t\t\t\tthis._hideModel();\n\t\t\t\tif (this._batchGroupId >= 0) {\n\t\t\t\t\t\tapp.batcher?.remove(BatchGroup.SPRITE, this._batchGroupId, this.entity);\n\t\t\t\t}\n\t\t}\n\t\tonDestroy() {\n\t\t\t\tthis._currentClip = null;\n\t\t\t\tif (this._defaultClip) {\n\t\t\t\t\t\tthis._defaultClip._destroy();\n\t\t\t\t\t\tthis._defaultClip = null;\n\t\t\t\t}\n\t\t\t\tfor(const key in this._clips){\n\t\t\t\t\t\tthis._clips[key]._destroy();\n\t\t\t\t}\n\t\t\t\tthis._clips = null;\n\t\t\t\tthis._hideModel();\n\t\t\t\tthis._model = null;\n\t\t\t\tthis._node?.remove();\n\t\t\t\tthis._node = null;\n\t\t\t\tif (this._meshInstance) {\n\t\t\t\t\t\tthis._meshInstance.material = null;\n\t\t\t\t\t\tthis._meshInstance.mesh = null;\n\t\t\t\t\t\tthis._meshInstance = null;\n\t\t\t\t}\n\t\t}\n\t\t_showModel() {\n\t\t\t\tif (this._addedModel) return;\n\t\t\t\tif (!this._meshInstance) return;\n\t\t\t\tconst meshInstances = [\n\t\t\t\t\t\tthis._meshInstance\n\t\t\t\t];\n\t\t\t\tfor(let i = 0, len = this._layers.length; i < len; i++){\n\t\t\t\t\t\tconst layer = this.system.app.scene.layers.getLayerById(this._layers[i]);\n\t\t\t\t\t\tif (layer) {\n\t\t\t\t\t\t\t\tlayer.addMeshInstances(meshInstances);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._addedModel = true;\n\t\t}\n\t\t_hideModel() {\n\t\t\t\tif (!this._addedModel || !this._meshInstance) return;\n\t\t\t\tconst meshInstances = [\n\t\t\t\t\t\tthis._meshInstance\n\t\t\t\t];\n\t\t\t\tfor(let i = 0, len = this._layers.length; i < len; i++){\n\t\t\t\t\t\tconst layer = this.system.app.scene.layers.getLayerById(this._layers[i]);\n\t\t\t\t\t\tif (layer) {\n\t\t\t\t\t\t\t\tlayer.removeMeshInstances(meshInstances);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._addedModel = false;\n\t\t}\n\t\t_showFrame(frame) {\n\t\t\t\tif (!this.sprite) return;\n\t\t\t\tconst mesh = this.sprite.meshes[frame];\n\t\t\t\tif (!mesh) {\n\t\t\t\t\t\tif (this._meshInstance) {\n\t\t\t\t\t\t\t\tthis._meshInstance.mesh = null;\n\t\t\t\t\t\t\t\tthis._meshInstance.visible = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tlet material;\n\t\t\t\tif (this.sprite.renderMode === SPRITE_RENDERMODE_SLICED) {\n\t\t\t\t\t\tmaterial = this.system.default9SlicedMaterialSlicedMode;\n\t\t\t\t} else if (this.sprite.renderMode === SPRITE_RENDERMODE_TILED) {\n\t\t\t\t\t\tmaterial = this.system.default9SlicedMaterialTiledMode;\n\t\t\t\t} else {\n\t\t\t\t\t\tmaterial = this.system.defaultMaterial;\n\t\t\t\t}\n\t\t\t\tif (!this._meshInstance) {\n\t\t\t\t\t\tthis._meshInstance = new MeshInstance(mesh, this._material, this._node);\n\t\t\t\t\t\tthis._meshInstance.castShadow = false;\n\t\t\t\t\t\tthis._meshInstance.receiveShadow = false;\n\t\t\t\t\t\tthis._meshInstance.drawOrder = this._drawOrder;\n\t\t\t\t\t\tthis._model.meshInstances.push(this._meshInstance);\n\t\t\t\t\t\tthis._colorUniform[0] = this._color.r;\n\t\t\t\t\t\tthis._colorUniform[1] = this._color.g;\n\t\t\t\t\t\tthis._colorUniform[2] = this._color.b;\n\t\t\t\t\t\tthis._meshInstance.setParameter(PARAM_EMISSIVE, this._colorUniform);\n\t\t\t\t\t\tthis._meshInstance.setParameter(PARAM_OPACITY, this._color.a);\n\t\t\t\t\t\tif (this.enabled && this.entity.enabled) {\n\t\t\t\t\t\t\t\tthis._showModel();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this._meshInstance.material !== material) {\n\t\t\t\t\t\tthis._meshInstance.material = material;\n\t\t\t\t}\n\t\t\t\tif (this._meshInstance.mesh !== mesh) {\n\t\t\t\t\t\tthis._meshInstance.mesh = mesh;\n\t\t\t\t\t\tthis._meshInstance.visible = true;\n\t\t\t\t\t\tthis._meshInstance._aabbVer = -1;\n\t\t\t\t}\n\t\t\t\tif (this.sprite.atlas && this.sprite.atlas.texture) {\n\t\t\t\t\t\tthis._meshInstance.setParameter(PARAM_EMISSIVE_MAP, this.sprite.atlas.texture);\n\t\t\t\t\t\tthis._meshInstance.setParameter(PARAM_OPACITY_MAP, this.sprite.atlas.texture);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._meshInstance.deleteParameter(PARAM_EMISSIVE_MAP);\n\t\t\t\t\t\tthis._meshInstance.deleteParameter(PARAM_OPACITY_MAP);\n\t\t\t\t}\n\t\t\t\tif (this.sprite.atlas && (this.sprite.renderMode === SPRITE_RENDERMODE_SLICED || this.sprite.renderMode === SPRITE_RENDERMODE_TILED)) {\n\t\t\t\t\t\tthis._meshInstance._updateAabbFunc = this._updateAabbFunc;\n\t\t\t\t\t\tconst frameData = this.sprite.atlas.frames[this.sprite.frameKeys[frame]];\n\t\t\t\t\t\tif (frameData) {\n\t\t\t\t\t\t\t\tconst borderWidthScale = 2 / frameData.rect.z;\n\t\t\t\t\t\t\t\tconst borderHeightScale = 2 / frameData.rect.w;\n\t\t\t\t\t\t\t\tthis._innerOffset.set(frameData.border.x * borderWidthScale, frameData.border.y * borderHeightScale, frameData.border.z * borderWidthScale, frameData.border.w * borderHeightScale);\n\t\t\t\t\t\t\t\tconst tex = this.sprite.atlas.texture;\n\t\t\t\t\t\t\t\tthis._atlasRect.set(frameData.rect.x / tex.width, frameData.rect.y / tex.height, frameData.rect.z / tex.width, frameData.rect.w / tex.height);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._innerOffset.set(0, 0, 0, 0);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._innerOffsetUniform[0] = this._innerOffset.x;\n\t\t\t\t\t\tthis._innerOffsetUniform[1] = this._innerOffset.y;\n\t\t\t\t\t\tthis._innerOffsetUniform[2] = this._innerOffset.z;\n\t\t\t\t\t\tthis._innerOffsetUniform[3] = this._innerOffset.w;\n\t\t\t\t\t\tthis._meshInstance.setParameter(PARAM_INNER_OFFSET, this._innerOffsetUniform);\n\t\t\t\t\t\tthis._atlasRectUniform[0] = this._atlasRect.x;\n\t\t\t\t\t\tthis._atlasRectUniform[1] = this._atlasRect.y;\n\t\t\t\t\t\tthis._atlasRectUniform[2] = this._atlasRect.z;\n\t\t\t\t\t\tthis._atlasRectUniform[3] = this._atlasRect.w;\n\t\t\t\t\t\tthis._meshInstance.setParameter(PARAM_ATLAS_RECT, this._atlasRectUniform);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._meshInstance._updateAabbFunc = null;\n\t\t\t\t}\n\t\t\t\tthis._updateTransform();\n\t\t}\n\t\t_updateTransform() {\n\t\t\t\tlet scaleX = this.flipX ? -1 : 1;\n\t\t\t\tlet scaleY = this.flipY ? -1 : 1;\n\t\t\t\tlet posX = 0;\n\t\t\t\tlet posY = 0;\n\t\t\t\tif (this.sprite && (this.sprite.renderMode === SPRITE_RENDERMODE_SLICED || this.sprite.renderMode === SPRITE_RENDERMODE_TILED)) {\n\t\t\t\t\t\tlet w = 1;\n\t\t\t\t\t\tlet h = 1;\n\t\t\t\t\t\tif (this.sprite.atlas) {\n\t\t\t\t\t\t\t\tconst frameData = this.sprite.atlas.frames[this.sprite.frameKeys[this.frame]];\n\t\t\t\t\t\t\t\tif (frameData) {\n\t\t\t\t\t\t\t\t\t\tw = frameData.rect.z;\n\t\t\t\t\t\t\t\t\t\th = frameData.rect.w;\n\t\t\t\t\t\t\t\t\t\tposX = (0.5 - frameData.pivot.x) * this._width;\n\t\t\t\t\t\t\t\t\t\tposY = (0.5 - frameData.pivot.y) * this._height;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst scaleMulX = w / this.sprite.pixelsPerUnit;\n\t\t\t\t\t\tconst scaleMulY = h / this.sprite.pixelsPerUnit;\n\t\t\t\t\t\tthis._outerScale.set(Math.max(this._width, this._innerOffset.x * scaleMulX), Math.max(this._height, this._innerOffset.y * scaleMulY));\n\t\t\t\t\t\tscaleX *= scaleMulX;\n\t\t\t\t\t\tscaleY *= scaleMulY;\n\t\t\t\t\t\tthis._outerScale.x /= scaleMulX;\n\t\t\t\t\t\tthis._outerScale.y /= scaleMulY;\n\t\t\t\t\t\tscaleX *= math.clamp(this._width / (this._innerOffset.x * scaleMulX), 0.0001, 1);\n\t\t\t\t\t\tscaleY *= math.clamp(this._height / (this._innerOffset.y * scaleMulY), 0.0001, 1);\n\t\t\t\t\t\tif (this._meshInstance) {\n\t\t\t\t\t\t\t\tthis._outerScaleUniform[0] = this._outerScale.x;\n\t\t\t\t\t\t\t\tthis._outerScaleUniform[1] = this._outerScale.y;\n\t\t\t\t\t\t\t\tthis._meshInstance.setParameter(PARAM_OUTER_SCALE, this._outerScaleUniform);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._node.setLocalScale(scaleX, scaleY, 1);\n\t\t\t\tthis._node.setLocalPosition(posX, posY, 0);\n\t\t}\n\t\t_updateAabb(aabb) {\n\t\t\t\taabb.center.set(0, 0, 0);\n\t\t\t\taabb.halfExtents.set(this._outerScale.x * 0.5, this._outerScale.y * 0.5, 0.001);\n\t\t\t\taabb.setFromTransformedAabb(aabb, this._node.getWorldTransform());\n\t\t\t\treturn aabb;\n\t\t}\n\t\t_tryAutoPlay() {\n\t\t\t\tif (!this._autoPlayClip) return;\n\t\t\t\tif (this.type !== SPRITETYPE_ANIMATED) return;\n\t\t\t\tconst clip = this._clips[this._autoPlayClip];\n\t\t\t\tif (clip && !clip.isPlaying && (!this._currentClip || !this._currentClip.isPlaying)) {\n\t\t\t\t\t\tif (this.enabled && this.entity.enabled) {\n\t\t\t\t\t\t\t\tthis.play(clip.name);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_onLayersChanged(oldComp, newComp) {\n\t\t\t\toldComp.off('add', this.onLayerAdded, this);\n\t\t\t\toldComp.off('remove', this.onLayerRemoved, this);\n\t\t\t\tnewComp.on('add', this.onLayerAdded, this);\n\t\t\t\tnewComp.on('remove', this.onLayerRemoved, this);\n\t\t\t\tif (this.enabled && this.entity.enabled) {\n\t\t\t\t\t\tthis._showModel();\n\t\t\t\t}\n\t\t}\n\t\t_onLayerAdded(layer) {\n\t\t\t\tconst index = this.layers.indexOf(layer.id);\n\t\t\t\tif (index < 0) return;\n\t\t\t\tif (this._addedModel && this.enabled && this.entity.enabled && this._meshInstance) {\n\t\t\t\t\t\tlayer.addMeshInstances([\n\t\t\t\t\t\t\t\tthis._meshInstance\n\t\t\t\t\t\t]);\n\t\t\t\t}\n\t\t}\n\t\t_onLayerRemoved(layer) {\n\t\t\t\tif (!this._meshInstance) return;\n\t\t\t\tconst index = this.layers.indexOf(layer.id);\n\t\t\t\tif (index < 0) return;\n\t\t\t\tlayer.removeMeshInstances([\n\t\t\t\t\t\tthis._meshInstance\n\t\t\t\t]);\n\t\t}\n\t\tremoveModelFromLayers() {\n\t\t\t\tfor(let i = 0; i < this.layers.length; i++){\n\t\t\t\t\t\tconst layer = this.system.app.scene.layers.getLayerById(this.layers[i]);\n\t\t\t\t\t\tif (!layer) continue;\n\t\t\t\t\t\tlayer.removeMeshInstances([\n\t\t\t\t\t\t\t\tthis._meshInstance\n\t\t\t\t\t\t]);\n\t\t\t\t}\n\t\t}\n\t\taddClip(data) {\n\t\t\t\tconst clip = new SpriteAnimationClip(this, {\n\t\t\t\t\t\tname: data.name,\n\t\t\t\t\t\tfps: data.fps,\n\t\t\t\t\t\tloop: data.loop,\n\t\t\t\t\t\tspriteAsset: data.spriteAsset\n\t\t\t\t});\n\t\t\t\tthis._clips[data.name] = clip;\n\t\t\t\tif (clip.name && clip.name === this._autoPlayClip) {\n\t\t\t\t\t\tthis._tryAutoPlay();\n\t\t\t\t}\n\t\t\t\treturn clip;\n\t\t}\n\t\tremoveClip(name) {\n\t\t\t\tdelete this._clips[name];\n\t\t}\n\t\tclip(name) {\n\t\t\t\treturn this._clips[name];\n\t\t}\n\t\tplay(name) {\n\t\t\t\tconst clip = this._clips[name];\n\t\t\t\tconst current = this._currentClip;\n\t\t\t\tif (current && current !== clip) {\n\t\t\t\t\t\tcurrent._playing = false;\n\t\t\t\t}\n\t\t\t\tthis._currentClip = clip;\n\t\t\t\tif (this._currentClip) {\n\t\t\t\t\t\tthis._currentClip = clip;\n\t\t\t\t\t\tthis._currentClip.play();\n\t\t\t\t}\n\t\t\t\treturn clip;\n\t\t}\n\t\tpause() {\n\t\t\t\tif (this._currentClip === this._defaultClip) return;\n\t\t\t\tif (this._currentClip.isPlaying) {\n\t\t\t\t\t\tthis._currentClip.pause();\n\t\t\t\t}\n\t\t}\n\t\tresume() {\n\t\t\t\tif (this._currentClip === this._defaultClip) return;\n\t\t\t\tif (this._currentClip.isPaused) {\n\t\t\t\t\t\tthis._currentClip.resume();\n\t\t\t\t}\n\t\t}\n\t\tstop() {\n\t\t\t\tif (this._currentClip === this._defaultClip) return;\n\t\t\t\tthis._currentClip.stop();\n\t\t}\n}\n\nclass SpriteComponentData {\n\t\tconstructor(){\n\t\t\t\tthis.enabled = true;\n\t\t}\n}\n\nconst _schema$3 = [\n\t\t'enabled'\n];\nclass SpriteComponentSystem extends ComponentSystem {\n\t\tconstructor(app){\n\t\t\t\tsuper(app);\n\t\t\t\tthis.id = 'sprite';\n\t\t\t\tthis.ComponentType = SpriteComponent;\n\t\t\t\tthis.DataType = SpriteComponentData;\n\t\t\t\tthis.schema = _schema$3;\n\t\t\t\tthis._defaultTexture = null;\n\t\t\t\tthis._defaultMaterial = null;\n\t\t\t\tthis._default9SlicedMaterialSlicedMode = null;\n\t\t\t\tthis._default9SlicedMaterialTiledMode = null;\n\t\t\t\tthis.app.systems.on('update', this.onUpdate, this);\n\t\t\t\tthis.on('beforeremove', this.onBeforeRemove, this);\n\t\t}\n\t\tset defaultMaterial(material) {\n\t\t\t\tthis._defaultMaterial = material;\n\t\t}\n\t\tget defaultMaterial() {\n\t\t\t\tif (!this._defaultMaterial) {\n\t\t\t\t\t\tconst texture = new Texture(this.app.graphicsDevice, {\n\t\t\t\t\t\t\t\twidth: 1,\n\t\t\t\t\t\t\t\theight: 1,\n\t\t\t\t\t\t\t\tformat: PIXELFORMAT_SRGBA8,\n\t\t\t\t\t\t\t\tname: 'sprite'\n\t\t\t\t\t\t});\n\t\t\t\t\t\tconst pixels = new Uint8Array(texture.lock());\n\t\t\t\t\t\tpixels[0] = pixels[1] = pixels[2] = pixels[3] = 255;\n\t\t\t\t\t\ttexture.unlock();\n\t\t\t\t\t\tconst material = new StandardMaterial();\n\t\t\t\t\t\tmaterial.diffuse.set(0, 0, 0);\n\t\t\t\t\t\tmaterial.emissive.set(1, 1, 1);\n\t\t\t\t\t\tmaterial.emissiveMap = texture;\n\t\t\t\t\t\tmaterial.opacityMap = texture;\n\t\t\t\t\t\tmaterial.opacityMapChannel = 'a';\n\t\t\t\t\t\tmaterial.useLighting = false;\n\t\t\t\t\t\tmaterial.useTonemap = false;\n\t\t\t\t\t\tmaterial.useFog = false;\n\t\t\t\t\t\tmaterial.useSkybox = false;\n\t\t\t\t\t\tmaterial.blendType = BLEND_PREMULTIPLIED;\n\t\t\t\t\t\tmaterial.depthWrite = false;\n\t\t\t\t\t\tmaterial.pixelSnap = false;\n\t\t\t\t\t\tmaterial.cull = CULLFACE_NONE;\n\t\t\t\t\t\tmaterial.update();\n\t\t\t\t\t\tthis._defaultTexture = texture;\n\t\t\t\t\t\tthis._defaultMaterial = material;\n\t\t\t\t}\n\t\t\t\treturn this._defaultMaterial;\n\t\t}\n\t\tset default9SlicedMaterialSlicedMode(material) {\n\t\t\t\tthis._default9SlicedMaterialSlicedMode = material;\n\t\t}\n\t\tget default9SlicedMaterialSlicedMode() {\n\t\t\t\tif (!this._default9SlicedMaterialSlicedMode) {\n\t\t\t\t\t\tconst material = this.defaultMaterial.clone();\n\t\t\t\t\t\tmaterial.nineSlicedMode = SPRITE_RENDERMODE_SLICED;\n\t\t\t\t\t\tmaterial.update();\n\t\t\t\t\t\tthis._default9SlicedMaterialSlicedMode = material;\n\t\t\t\t}\n\t\t\t\treturn this._default9SlicedMaterialSlicedMode;\n\t\t}\n\t\tset default9SlicedMaterialTiledMode(material) {\n\t\t\t\tthis._default9SlicedMaterialTiledMode = material;\n\t\t}\n\t\tget default9SlicedMaterialTiledMode() {\n\t\t\t\tif (!this._default9SlicedMaterialTiledMode) {\n\t\t\t\t\t\tconst material = this.defaultMaterial.clone();\n\t\t\t\t\t\tmaterial.nineSlicedMode = SPRITE_RENDERMODE_TILED;\n\t\t\t\t\t\tmaterial.update();\n\t\t\t\t\t\tthis._default9SlicedMaterialTiledMode = material;\n\t\t\t\t}\n\t\t\t\treturn this._default9SlicedMaterialTiledMode;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tsuper.destroy();\n\t\t\t\tthis.app.systems.off('update', this.onUpdate, this);\n\t\t\t\tif (this._defaultTexture) {\n\t\t\t\t\t\tthis._defaultTexture.destroy();\n\t\t\t\t\t\tthis._defaultTexture = null;\n\t\t\t\t}\n\t\t}\n\t\tinitializeComponentData(component, data, properties) {\n\t\t\t\tif (data.enabled !== undefined) {\n\t\t\t\t\t\tcomponent.enabled = data.enabled;\n\t\t\t\t}\n\t\t\t\tcomponent.type = data.type;\n\t\t\t\tif (data.layers && Array.isArray(data.layers)) {\n\t\t\t\t\t\tcomponent.layers = data.layers.slice(0);\n\t\t\t\t}\n\t\t\t\tif (data.drawOrder !== undefined) {\n\t\t\t\t\t\tcomponent.drawOrder = data.drawOrder;\n\t\t\t\t}\n\t\t\t\tif (data.color !== undefined) {\n\t\t\t\t\t\tif (data.color instanceof Color) {\n\t\t\t\t\t\t\t\tcomponent.color.set(data.color.r, data.color.g, data.color.b, data.opacity ?? 1);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomponent.color.set(data.color[0], data.color[1], data.color[2], data.opacity ?? 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcomponent.color = component.color;\n\t\t\t\t}\n\t\t\t\tif (data.opacity !== undefined) {\n\t\t\t\t\t\tcomponent.opacity = data.opacity;\n\t\t\t\t}\n\t\t\t\tif (data.flipX !== undefined) {\n\t\t\t\t\t\tcomponent.flipX = data.flipX;\n\t\t\t\t}\n\t\t\t\tif (data.flipY !== undefined) {\n\t\t\t\t\t\tcomponent.flipY = data.flipY;\n\t\t\t\t}\n\t\t\t\tif (data.width !== undefined) {\n\t\t\t\t\t\tcomponent.width = data.width;\n\t\t\t\t}\n\t\t\t\tif (data.height !== undefined) {\n\t\t\t\t\t\tcomponent.height = data.height;\n\t\t\t\t}\n\t\t\t\tif (data.spriteAsset !== undefined) {\n\t\t\t\t\t\tcomponent.spriteAsset = data.spriteAsset;\n\t\t\t\t}\n\t\t\t\tif (data.sprite) {\n\t\t\t\t\t\tcomponent.sprite = data.sprite;\n\t\t\t\t}\n\t\t\t\tif (data.frame !== undefined) {\n\t\t\t\t\t\tcomponent.frame = data.frame;\n\t\t\t\t}\n\t\t\t\tif (data.clips) {\n\t\t\t\t\t\tfor(const name in data.clips){\n\t\t\t\t\t\t\t\tcomponent.addClip(data.clips[name]);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (data.speed !== undefined) {\n\t\t\t\t\t\tcomponent.speed = data.speed;\n\t\t\t\t}\n\t\t\t\tif (data.autoPlayClip) {\n\t\t\t\t\t\tcomponent.autoPlayClip = data.autoPlayClip;\n\t\t\t\t}\n\t\t\t\tcomponent.batchGroupId = data.batchGroupId === undefined || data.batchGroupId === null ? -1 : data.batchGroupId;\n\t\t\t\tsuper.initializeComponentData(component, data, properties);\n\t\t}\n\t\tcloneComponent(entity, clone) {\n\t\t\t\tconst source = entity.sprite;\n\t\t\t\treturn this.addComponent(clone, {\n\t\t\t\t\t\tenabled: source.enabled,\n\t\t\t\t\t\ttype: source.type,\n\t\t\t\t\t\tspriteAsset: source.spriteAsset,\n\t\t\t\t\t\tsprite: source.sprite,\n\t\t\t\t\t\twidth: source.width,\n\t\t\t\t\t\theight: source.height,\n\t\t\t\t\t\tframe: source.frame,\n\t\t\t\t\t\tcolor: source.color.clone(),\n\t\t\t\t\t\topacity: source.opacity,\n\t\t\t\t\t\tflipX: source.flipX,\n\t\t\t\t\t\tflipY: source.flipY,\n\t\t\t\t\t\tspeed: source.speed,\n\t\t\t\t\t\tclips: source.clips,\n\t\t\t\t\t\tautoPlayClip: source.autoPlayClip,\n\t\t\t\t\t\tbatchGroupId: source.batchGroupId,\n\t\t\t\t\t\tdrawOrder: source.drawOrder,\n\t\t\t\t\t\tlayers: source.layers.slice(0)\n\t\t\t\t});\n\t\t}\n\t\tonUpdate(dt) {\n\t\t\t\tconst components = this.store;\n\t\t\t\tfor(const id in components){\n\t\t\t\t\t\tif (components.hasOwnProperty(id)) {\n\t\t\t\t\t\t\t\tconst component = components[id];\n\t\t\t\t\t\t\t\tif (component.data.enabled && component.entity.enabled) {\n\t\t\t\t\t\t\t\t\t\tconst sprite = component.entity.sprite;\n\t\t\t\t\t\t\t\t\t\tif (sprite._currentClip) {\n\t\t\t\t\t\t\t\t\t\t\t\tsprite._currentClip._update(dt);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tonBeforeRemove(entity, component) {\n\t\t\t\tcomponent.onDestroy();\n\t\t}\n}\nComponent._buildAccessors(SpriteComponent.prototype, _schema$3);\n\nclass ZoneComponent extends Component {\n\t\tstatic{\n\t\t\t\tthis.EVENT_ENABLE = 'enable';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_DISABLE = 'disable';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_STATE = 'state';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_REMOVE = 'remove';\n\t\t}\n\t\tconstructor(system, entity){\n\t\t\t\tsuper(system, entity);\n\t\t\t\tthis._oldState = true;\n\t\t\t\tthis._size = new Vec3();\n\t\t\t\tthis.on('set_enabled', this._onSetEnabled, this);\n\t\t}\n\t\tset size(data) {\n\t\t\t\tif (data instanceof Vec3) {\n\t\t\t\t\t\tthis._size.copy(data);\n\t\t\t\t} else if (data instanceof Array && data.length >= 3) {\n\t\t\t\t\t\tthis.size.set(data[0], data[1], data[2]);\n\t\t\t\t}\n\t\t}\n\t\tget size() {\n\t\t\t\treturn this._size;\n\t\t}\n\t\tonEnable() {\n\t\t\t\tthis._checkState();\n\t\t}\n\t\tonDisable() {\n\t\t\t\tthis._checkState();\n\t\t}\n\t\t_onSetEnabled(prop, old, value) {\n\t\t\t\tthis._checkState();\n\t\t}\n\t\t_checkState() {\n\t\t\t\tconst state = this.enabled && this.entity.enabled;\n\t\t\t\tif (state === this._oldState) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._oldState = state;\n\t\t\t\tthis.fire('enable');\n\t\t\t\tthis.fire('state', this.enabled);\n\t\t}\n\t\t_onBeforeRemove() {\n\t\t\t\tthis.fire('remove');\n\t\t}\n}\n\nclass ZoneComponentData {\n\t\tconstructor(){\n\t\t\t\tthis.enabled = true;\n\t\t}\n}\n\nconst _schema$2 = [\n\t\t'enabled'\n];\nclass ZoneComponentSystem extends ComponentSystem {\n\t\tconstructor(app){\n\t\t\t\tsuper(app);\n\t\t\t\tthis.id = 'zone';\n\t\t\t\tthis.ComponentType = ZoneComponent;\n\t\t\t\tthis.DataType = ZoneComponentData;\n\t\t\t\tthis.schema = _schema$2;\n\t\t\t\tthis.on('beforeremove', this._onBeforeRemove, this);\n\t\t}\n\t\tinitializeComponentData(component, data, properties) {\n\t\t\t\tcomponent.enabled = data.hasOwnProperty('enabled') ? !!data.enabled : true;\n\t\t\t\tif (data.size) {\n\t\t\t\t\t\tif (data.size instanceof Vec3) {\n\t\t\t\t\t\t\t\tcomponent.size.copy(data.size);\n\t\t\t\t\t\t} else if (data.size instanceof Array && data.size.length >= 3) {\n\t\t\t\t\t\t\t\tcomponent.size.set(data.size[0], data.size[1], data.size[2]);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tcloneComponent(entity, clone) {\n\t\t\t\tconst data = {\n\t\t\t\t\t\tenabled: entity.zone.enabled,\n\t\t\t\t\t\tsize: entity.zone.size\n\t\t\t\t};\n\t\t\t\treturn this.addComponent(clone, data);\n\t\t}\n\t\t_onBeforeRemove(entity, component) {\n\t\t\t\tcomponent._onBeforeRemove();\n\t\t}\n}\nComponent._buildAccessors(ZoneComponent.prototype, _schema$2);\n\nclass PostEffectEntry {\n\t\tconstructor(effect, inputTarget){\n\t\t\t\tthis.effect = effect;\n\t\t\t\tthis.inputTarget = inputTarget;\n\t\t\t\tthis.outputTarget = null;\n\t\t\t\tthis.name = effect.constructor.name;\n\t\t}\n}\nclass PostEffectQueue {\n\t\tconstructor(app, camera){\n\t\t\t\tthis.app = app;\n\t\t\t\tthis.camera = camera;\n\t\t\t\tthis.destinationRenderTarget = null;\n\t\t\t\tthis.effects = [];\n\t\t\t\tthis.enabled = false;\n\t\t\t\tthis.depthTarget = null;\n\t\t\t\tcamera.on('set:rect', this.onCameraRectChanged, this);\n\t\t}\n\t\t_allocateColorBuffer(format, name) {\n\t\t\t\tconst rect = this.camera.rect;\n\t\t\t\tconst renderTarget = this.destinationRenderTarget;\n\t\t\t\tconst device = this.app.graphicsDevice;\n\t\t\t\tconst width = Math.floor(rect.z * (renderTarget?.width ?? device.width));\n\t\t\t\tconst height = Math.floor(rect.w * (renderTarget?.height ?? device.height));\n\t\t\t\tconst colorBuffer = new Texture(device, {\n\t\t\t\t\t\tname: name,\n\t\t\t\t\t\tformat: format,\n\t\t\t\t\t\twidth: width,\n\t\t\t\t\t\theight: height,\n\t\t\t\t\t\tmipmaps: false,\n\t\t\t\t\t\tminFilter: FILTER_NEAREST,\n\t\t\t\t\t\tmagFilter: FILTER_NEAREST,\n\t\t\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE\n\t\t\t\t});\n\t\t\t\treturn colorBuffer;\n\t\t}\n\t\t_createOffscreenTarget(useDepth, hdr) {\n\t\t\t\tconst device = this.app.graphicsDevice;\n\t\t\t\tconst outputRt = this.destinationRenderTarget ?? device.backBuffer;\n\t\t\t\tconst srgb = outputRt.isColorBufferSrgb(0);\n\t\t\t\tconst format = (hdr && device.getRenderableHdrFormat([\n\t\t\t\t\t\tPIXELFORMAT_RGBA16F,\n\t\t\t\t\t\tPIXELFORMAT_RGBA32F\n\t\t\t\t], true)) ?? (srgb ? PIXELFORMAT_SRGBA8 : PIXELFORMAT_RGBA8);\n\t\t\t\tconst name = `${this.camera.entity.name}-posteffect-${this.effects.length}`;\n\t\t\t\tconst colorBuffer = this._allocateColorBuffer(format, name);\n\t\t\t\treturn new RenderTarget({\n\t\t\t\t\t\tcolorBuffer: colorBuffer,\n\t\t\t\t\t\tdepth: useDepth,\n\t\t\t\t\t\tstencil: useDepth && this.app.graphicsDevice.supportsStencil,\n\t\t\t\t\t\tsamples: useDepth ? device.samples : 1\n\t\t\t\t});\n\t\t}\n\t\t_resizeOffscreenTarget(rt) {\n\t\t\t\tconst format = rt.colorBuffer.format;\n\t\t\t\tconst name = rt.colorBuffer.name;\n\t\t\t\trt.destroyFrameBuffers();\n\t\t\t\trt.destroyTextureBuffers();\n\t\t\t\trt._colorBuffer = this._allocateColorBuffer(format, name);\n\t\t\t\trt._colorBuffers = [\n\t\t\t\t\t\trt._colorBuffer\n\t\t\t\t];\n\t\t\t\trt.evaluateDimensions();\n\t\t}\n\t\t_destroyOffscreenTarget(rt) {\n\t\t\t\trt.destroyTextureBuffers();\n\t\t\t\trt.destroy();\n\t\t}\n\t\taddEffect(effect) {\n\t\t\t\tconst effects = this.effects;\n\t\t\t\tconst isFirstEffect = effects.length === 0;\n\t\t\t\tconst inputTarget = this._createOffscreenTarget(isFirstEffect, effect.hdr);\n\t\t\t\tconst newEntry = new PostEffectEntry(effect, inputTarget);\n\t\t\t\teffects.push(newEntry);\n\t\t\t\tthis._sourceTarget = newEntry.inputTarget;\n\t\t\t\tif (effects.length > 1) {\n\t\t\t\t\t\teffects[effects.length - 2].outputTarget = newEntry.inputTarget;\n\t\t\t\t}\n\t\t\t\tthis._newPostEffect = effect;\n\t\t\t\tif (effect.needsDepthBuffer) {\n\t\t\t\t\t\tthis._requestDepthMap();\n\t\t\t\t}\n\t\t\t\tthis.enable();\n\t\t\t\tthis._newPostEffect = undefined;\n\t\t}\n\t\tremoveEffect(effect) {\n\t\t\t\tlet index = -1;\n\t\t\t\tfor(let i = 0, len = this.effects.length; i < len; i++){\n\t\t\t\t\t\tif (this.effects[i].effect === effect) {\n\t\t\t\t\t\t\t\tindex = i;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (index >= 0) {\n\t\t\t\t\t\tif (index > 0) {\n\t\t\t\t\t\t\t\tthis.effects[index - 1].outputTarget = index + 1 < this.effects.length ? this.effects[index + 1].inputTarget : null;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (this.effects.length > 1) {\n\t\t\t\t\t\t\t\t\t\tif (!this.effects[1].inputTarget._depth) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._destroyOffscreenTarget(this.effects[1].inputTarget);\n\t\t\t\t\t\t\t\t\t\t\t\tthis.effects[1].inputTarget = this._createOffscreenTarget(true, this.effects[1].hdr);\n\t\t\t\t\t\t\t\t\t\t\t\tthis._sourceTarget = this.effects[1].inputTarget;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tthis.camera.renderTarget = this.effects[1].inputTarget;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._destroyOffscreenTarget(this.effects[index].inputTarget);\n\t\t\t\t\t\tthis.effects.splice(index, 1);\n\t\t\t\t}\n\t\t\t\tif (this.enabled) {\n\t\t\t\t\t\tif (effect.needsDepthBuffer) {\n\t\t\t\t\t\t\t\tthis._releaseDepthMap();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this.effects.length === 0) {\n\t\t\t\t\t\tthis.disable();\n\t\t\t\t}\n\t\t}\n\t\t_requestDepthMaps() {\n\t\t\t\tfor(let i = 0, len = this.effects.length; i < len; i++){\n\t\t\t\t\t\tconst effect = this.effects[i].effect;\n\t\t\t\t\t\tif (this._newPostEffect === effect) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (effect.needsDepthBuffer) {\n\t\t\t\t\t\t\t\tthis._requestDepthMap();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_releaseDepthMaps() {\n\t\t\t\tfor(let i = 0, len = this.effects.length; i < len; i++){\n\t\t\t\t\t\tconst effect = this.effects[i].effect;\n\t\t\t\t\t\tif (effect.needsDepthBuffer) {\n\t\t\t\t\t\t\t\tthis._releaseDepthMap();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_requestDepthMap() {\n\t\t\t\tconst depthLayer = this.app.scene.layers.getLayerById(LAYERID_DEPTH);\n\t\t\t\tif (depthLayer) {\n\t\t\t\t\t\tdepthLayer.incrementCounter();\n\t\t\t\t\t\tthis.camera.requestSceneDepthMap(true);\n\t\t\t\t}\n\t\t}\n\t\t_releaseDepthMap() {\n\t\t\t\tconst depthLayer = this.app.scene.layers.getLayerById(LAYERID_DEPTH);\n\t\t\t\tif (depthLayer) {\n\t\t\t\t\t\tdepthLayer.decrementCounter();\n\t\t\t\t\t\tthis.camera.requestSceneDepthMap(false);\n\t\t\t\t}\n\t\t}\n\t\tdestroy() {\n\t\t\t\tfor(let i = 0, len = this.effects.length; i < len; i++){\n\t\t\t\t\t\tthis.effects[i].inputTarget.destroy();\n\t\t\t\t}\n\t\t\t\tthis.effects.length = 0;\n\t\t\t\tthis.disable();\n\t\t}\n\t\tenable() {\n\t\t\t\tif (!this.enabled && this.effects.length) {\n\t\t\t\t\t\tthis.enabled = true;\n\t\t\t\t\t\tthis._requestDepthMaps();\n\t\t\t\t\t\tthis.app.graphicsDevice.on('resizecanvas', this._onCanvasResized, this);\n\t\t\t\t\t\tthis.destinationRenderTarget = this.camera.renderTarget;\n\t\t\t\t\t\tthis.camera.renderTarget = this.effects[0].inputTarget;\n\t\t\t\t\t\tthis.camera.onPostprocessing = ()=>{\n\t\t\t\t\t\t\t\tif (this.enabled) {\n\t\t\t\t\t\t\t\t\t\tlet rect = null;\n\t\t\t\t\t\t\t\t\t\tconst len = this.effects.length;\n\t\t\t\t\t\t\t\t\t\tif (len) {\n\t\t\t\t\t\t\t\t\t\t\t\tfor(let i = 0; i < len; i++){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst fx = this.effects[i];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlet destTarget = fx.outputTarget;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (i === len - 1) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\trect = this.camera.rect;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (this.destinationRenderTarget) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdestTarget = this.destinationRenderTarget;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfx.effect.render(fx.inputTarget, destTarget, rect);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t}\n\t\tdisable() {\n\t\t\t\tif (this.enabled) {\n\t\t\t\t\t\tthis.enabled = false;\n\t\t\t\t\t\tthis.app.graphicsDevice.off('resizecanvas', this._onCanvasResized, this);\n\t\t\t\t\t\tthis._releaseDepthMaps();\n\t\t\t\t\t\tthis._destroyOffscreenTarget(this._sourceTarget);\n\t\t\t\t\t\tthis.camera.renderTarget = this.destinationRenderTarget;\n\t\t\t\t\t\tthis.camera.onPostprocessing = null;\n\t\t\t\t}\n\t\t}\n\t\t_onCanvasResized(width, height) {\n\t\t\t\tconst rect = this.camera.rect;\n\t\t\t\tconst renderTarget = this.destinationRenderTarget;\n\t\t\t\twidth = renderTarget?.width ?? width;\n\t\t\t\theight = renderTarget?.height ?? height;\n\t\t\t\tthis.camera.camera.aspectRatio = width * rect.z / (height * rect.w);\n\t\t\t\tthis.resizeRenderTargets();\n\t\t}\n\t\tresizeRenderTargets() {\n\t\t\t\tconst device = this.app.graphicsDevice;\n\t\t\t\tconst renderTarget = this.destinationRenderTarget;\n\t\t\t\tconst width = renderTarget?.width ?? device.width;\n\t\t\t\tconst height = renderTarget?.height ?? device.height;\n\t\t\t\tconst rect = this.camera.rect;\n\t\t\t\tconst desiredWidth = Math.floor(rect.z * width);\n\t\t\t\tconst desiredHeight = Math.floor(rect.w * height);\n\t\t\t\tconst effects = this.effects;\n\t\t\t\tfor(let i = 0, len = effects.length; i < len; i++){\n\t\t\t\t\t\tconst fx = effects[i];\n\t\t\t\t\t\tif (fx.inputTarget.width !== desiredWidth || fx.inputTarget.height !== desiredHeight) {\n\t\t\t\t\t\t\t\tthis._resizeOffscreenTarget(fx.inputTarget);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tonCameraRectChanged(name, oldValue, newValue) {\n\t\t\t\tif (this.enabled) {\n\t\t\t\t\t\tthis.resizeRenderTargets();\n\t\t\t\t}\n\t\t}\n}\n\nclass CameraComponent extends Component {\n\t\tconstructor(system, entity){\n\t\t\t\tsuper(system, entity), this.onPostprocessing = null, this._renderSceneDepthMap = 0, this._renderSceneColorMap = 0, this._sceneDepthMapRequested = false, this._sceneColorMapRequested = false, this._priority = 0, this._disablePostEffectsLayer = LAYERID_UI, this._camera = new Camera(), this._evtLayersChanged = null, this._evtLayerAdded = null, this._evtLayerRemoved = null;\n\t\t\t\tthis._camera.node = entity;\n\t\t\t\tthis._postEffects = new PostEffectQueue(system.app, this);\n\t\t}\n\t\tsetShaderPass(name) {\n\t\t\t\tconst shaderPass = ShaderPass.get(this.system.app.graphicsDevice);\n\t\t\t\tconst shaderPassInfo = name ? shaderPass.allocate(name, {\n\t\t\t\t\t\tisForward: true\n\t\t\t\t}) : null;\n\t\t\t\tthis._camera.shaderPassInfo = shaderPassInfo;\n\t\t\t\treturn shaderPassInfo.index;\n\t\t}\n\t\tgetShaderPass() {\n\t\t\t\treturn this._camera.shaderPassInfo?.name;\n\t\t}\n\t\tset renderPasses(passes) {\n\t\t\t\tthis._camera.renderPasses = passes || [];\n\t\t\t\tthis.dirtyLayerCompositionCameras();\n\t\t\t\tthis.system.app.scene.updateShaders = true;\n\t\t}\n\t\tget renderPasses() {\n\t\t\t\treturn this._camera.renderPasses;\n\t\t}\n\t\tget shaderParams() {\n\t\t\t\treturn this._camera.shaderParams;\n\t\t}\n\t\tset gammaCorrection(value) {\n\t\t\t\tthis.camera.shaderParams.gammaCorrection = value;\n\t\t}\n\t\tget gammaCorrection() {\n\t\t\t\treturn this.camera.shaderParams.gammaCorrection;\n\t\t}\n\t\tset toneMapping(value) {\n\t\t\t\tthis.camera.shaderParams.toneMapping = value;\n\t\t}\n\t\tget toneMapping() {\n\t\t\t\treturn this.camera.shaderParams.toneMapping;\n\t\t}\n\t\tset fog(value) {\n\t\t\t\tthis._camera.fogParams = value;\n\t\t}\n\t\tget fog() {\n\t\t\t\treturn this._camera.fogParams;\n\t\t}\n\t\tset aperture(value) {\n\t\t\t\tthis._camera.aperture = value;\n\t\t}\n\t\tget aperture() {\n\t\t\t\treturn this._camera.aperture;\n\t\t}\n\t\tset aspectRatio(value) {\n\t\t\t\tthis._camera.aspectRatio = value;\n\t\t}\n\t\tget aspectRatio() {\n\t\t\t\treturn this._camera.aspectRatio;\n\t\t}\n\t\tset aspectRatioMode(value) {\n\t\t\t\tthis._camera.aspectRatioMode = value;\n\t\t}\n\t\tget aspectRatioMode() {\n\t\t\t\treturn this._camera.aspectRatioMode;\n\t\t}\n\t\tset calculateProjection(value) {\n\t\t\t\tthis._camera.calculateProjection = value;\n\t\t}\n\t\tget calculateProjection() {\n\t\t\t\treturn this._camera.calculateProjection;\n\t\t}\n\t\tset calculateTransform(value) {\n\t\t\t\tthis._camera.calculateTransform = value;\n\t\t}\n\t\tget calculateTransform() {\n\t\t\t\treturn this._camera.calculateTransform;\n\t\t}\n\t\tget camera() {\n\t\t\t\treturn this._camera;\n\t\t}\n\t\tset clearColor(value) {\n\t\t\t\tthis._camera.clearColor = value;\n\t\t}\n\t\tget clearColor() {\n\t\t\t\treturn this._camera.clearColor;\n\t\t}\n\t\tset clearColorBuffer(value) {\n\t\t\t\tthis._camera.clearColorBuffer = value;\n\t\t\t\tthis.dirtyLayerCompositionCameras();\n\t\t}\n\t\tget clearColorBuffer() {\n\t\t\t\treturn this._camera.clearColorBuffer;\n\t\t}\n\t\tset clearDepth(value) {\n\t\t\t\tthis._camera.clearDepth = value;\n\t\t}\n\t\tget clearDepth() {\n\t\t\t\treturn this._camera.clearDepth;\n\t\t}\n\t\tset clearDepthBuffer(value) {\n\t\t\t\tthis._camera.clearDepthBuffer = value;\n\t\t\t\tthis.dirtyLayerCompositionCameras();\n\t\t}\n\t\tget clearDepthBuffer() {\n\t\t\t\treturn this._camera.clearDepthBuffer;\n\t\t}\n\t\tset clearStencilBuffer(value) {\n\t\t\t\tthis._camera.clearStencilBuffer = value;\n\t\t\t\tthis.dirtyLayerCompositionCameras();\n\t\t}\n\t\tget clearStencilBuffer() {\n\t\t\t\treturn this._camera.clearStencilBuffer;\n\t\t}\n\t\tset cullFaces(value) {\n\t\t\t\tthis._camera.cullFaces = value;\n\t\t}\n\t\tget cullFaces() {\n\t\t\t\treturn this._camera.cullFaces;\n\t\t}\n\t\tset disablePostEffectsLayer(layer) {\n\t\t\t\tthis._disablePostEffectsLayer = layer;\n\t\t\t\tthis.dirtyLayerCompositionCameras();\n\t\t}\n\t\tget disablePostEffectsLayer() {\n\t\t\t\treturn this._disablePostEffectsLayer;\n\t\t}\n\t\tset farClip(value) {\n\t\t\t\tthis._camera.farClip = value;\n\t\t}\n\t\tget farClip() {\n\t\t\t\treturn this._camera.farClip;\n\t\t}\n\t\tset flipFaces(value) {\n\t\t\t\tthis._camera.flipFaces = value;\n\t\t}\n\t\tget flipFaces() {\n\t\t\t\treturn this._camera.flipFaces;\n\t\t}\n\t\tset fov(value) {\n\t\t\t\tthis._camera.fov = value;\n\t\t}\n\t\tget fov() {\n\t\t\t\treturn this._camera.fov;\n\t\t}\n\t\tget frustum() {\n\t\t\t\treturn this._camera.frustum;\n\t\t}\n\t\tset frustumCulling(value) {\n\t\t\t\tthis._camera.frustumCulling = value;\n\t\t}\n\t\tget frustumCulling() {\n\t\t\t\treturn this._camera.frustumCulling;\n\t\t}\n\t\tset horizontalFov(value) {\n\t\t\t\tthis._camera.horizontalFov = value;\n\t\t}\n\t\tget horizontalFov() {\n\t\t\t\treturn this._camera.horizontalFov;\n\t\t}\n\t\tset layers(newValue) {\n\t\t\t\tconst oldLayers = this._camera.layers;\n\t\t\t\tconst scene = this.system.app.scene;\n\t\t\t\toldLayers.forEach((layerId)=>{\n\t\t\t\t\t\tconst layer = scene.layers.getLayerById(layerId);\n\t\t\t\t\t\tlayer?.removeCamera(this);\n\t\t\t\t});\n\t\t\t\tthis._camera.layers = newValue;\n\t\t\t\tif (this.enabled && this.entity.enabled) {\n\t\t\t\t\t\tnewValue.forEach((layerId)=>{\n\t\t\t\t\t\t\t\tconst layer = scene.layers.getLayerById(layerId);\n\t\t\t\t\t\t\t\tlayer?.addCamera(this);\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tthis.fire('set:layers');\n\t\t}\n\t\tget layers() {\n\t\t\t\treturn this._camera.layers;\n\t\t}\n\t\tget layersSet() {\n\t\t\t\treturn this._camera.layersSet;\n\t\t}\n\t\tset jitter(value) {\n\t\t\t\tthis._camera.jitter = value;\n\t\t}\n\t\tget jitter() {\n\t\t\t\treturn this._camera.jitter;\n\t\t}\n\t\tset nearClip(value) {\n\t\t\t\tthis._camera.nearClip = value;\n\t\t}\n\t\tget nearClip() {\n\t\t\t\treturn this._camera.nearClip;\n\t\t}\n\t\tset orthoHeight(value) {\n\t\t\t\tthis._camera.orthoHeight = value;\n\t\t}\n\t\tget orthoHeight() {\n\t\t\t\treturn this._camera.orthoHeight;\n\t\t}\n\t\tget postEffects() {\n\t\t\t\treturn this._postEffects;\n\t\t}\n\t\tget postEffectsEnabled() {\n\t\t\t\treturn this._postEffects.enabled;\n\t\t}\n\t\tset priority(newValue) {\n\t\t\t\tthis._priority = newValue;\n\t\t\t\tthis.dirtyLayerCompositionCameras();\n\t\t}\n\t\tget priority() {\n\t\t\t\treturn this._priority;\n\t\t}\n\t\tset projection(value) {\n\t\t\t\tthis._camera.projection = value;\n\t\t}\n\t\tget projection() {\n\t\t\t\treturn this._camera.projection;\n\t\t}\n\t\tget projectionMatrix() {\n\t\t\t\treturn this._camera.projectionMatrix;\n\t\t}\n\t\tset rect(value) {\n\t\t\t\tthis._camera.rect = value;\n\t\t\t\tthis.fire('set:rect', this._camera.rect);\n\t\t}\n\t\tget rect() {\n\t\t\t\treturn this._camera.rect;\n\t\t}\n\t\tset renderSceneColorMap(value) {\n\t\t\t\tif (value && !this._sceneColorMapRequested) {\n\t\t\t\t\t\tthis.requestSceneColorMap(true);\n\t\t\t\t\t\tthis._sceneColorMapRequested = true;\n\t\t\t\t} else if (this._sceneColorMapRequested) {\n\t\t\t\t\t\tthis.requestSceneColorMap(false);\n\t\t\t\t\t\tthis._sceneColorMapRequested = false;\n\t\t\t\t}\n\t\t}\n\t\tget renderSceneColorMap() {\n\t\t\t\treturn this._renderSceneColorMap > 0;\n\t\t}\n\t\tset renderSceneDepthMap(value) {\n\t\t\t\tif (value && !this._sceneDepthMapRequested) {\n\t\t\t\t\t\tthis.requestSceneDepthMap(true);\n\t\t\t\t\t\tthis._sceneDepthMapRequested = true;\n\t\t\t\t} else if (this._sceneDepthMapRequested) {\n\t\t\t\t\t\tthis.requestSceneDepthMap(false);\n\t\t\t\t\t\tthis._sceneDepthMapRequested = false;\n\t\t\t\t}\n\t\t}\n\t\tget renderSceneDepthMap() {\n\t\t\t\treturn this._renderSceneDepthMap > 0;\n\t\t}\n\t\tset renderTarget(value) {\n\t\t\t\tthis._camera.renderTarget = value;\n\t\t\t\tthis.dirtyLayerCompositionCameras();\n\t\t}\n\t\tget renderTarget() {\n\t\t\t\treturn this._camera.renderTarget;\n\t\t}\n\t\tset scissorRect(value) {\n\t\t\t\tthis._camera.scissorRect = value;\n\t\t}\n\t\tget scissorRect() {\n\t\t\t\treturn this._camera.scissorRect;\n\t\t}\n\t\tset sensitivity(value) {\n\t\t\t\tthis._camera.sensitivity = value;\n\t\t}\n\t\tget sensitivity() {\n\t\t\t\treturn this._camera.sensitivity;\n\t\t}\n\t\tset shutter(value) {\n\t\t\t\tthis._camera.shutter = value;\n\t\t}\n\t\tget shutter() {\n\t\t\t\treturn this._camera.shutter;\n\t\t}\n\t\tget viewMatrix() {\n\t\t\t\treturn this._camera.viewMatrix;\n\t\t}\n\t\t_enableDepthLayer(value) {\n\t\t\t\tconst hasDepthLayer = this.layers.find((layerId)=>layerId === LAYERID_DEPTH);\n\t\t\t\tif (hasDepthLayer) {\n\t\t\t\t\t\tconst depthLayer = this.system.app.scene.layers.getLayerById(LAYERID_DEPTH);\n\t\t\t\t\t\tif (value) {\n\t\t\t\t\t\t\t\tdepthLayer?.incrementCounter();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tdepthLayer?.decrementCounter();\n\t\t\t\t\t\t}\n\t\t\t\t} else if (value) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t}\n\t\trequestSceneColorMap(enabled) {\n\t\t\t\tthis._renderSceneColorMap += enabled ? 1 : -1;\n\t\t\t\tthis._enableDepthLayer(enabled);\n\t\t\t\tthis.camera._enableRenderPassColorGrab(this.system.app.graphicsDevice, this.renderSceneColorMap);\n\t\t\t\tthis.system.app.scene.layers.markDirty();\n\t\t}\n\t\trequestSceneDepthMap(enabled) {\n\t\t\t\tthis._renderSceneDepthMap += enabled ? 1 : -1;\n\t\t\t\tthis._enableDepthLayer(enabled);\n\t\t\t\tthis.camera._enableRenderPassDepthGrab(this.system.app.graphicsDevice, this.system.app.renderer, this.renderSceneDepthMap);\n\t\t\t\tthis.system.app.scene.layers.markDirty();\n\t\t}\n\t\tdirtyLayerCompositionCameras() {\n\t\t\t\tconst layerComp = this.system.app.scene.layers;\n\t\t\t\tlayerComp._dirty = true;\n\t\t}\n\t\tscreenToWorld(screenx, screeny, cameraz, worldCoord) {\n\t\t\t\tconst device = this.system.app.graphicsDevice;\n\t\t\t\tconst { width, height } = device.clientRect;\n\t\t\t\treturn this._camera.screenToWorld(screenx, screeny, cameraz, width, height, worldCoord);\n\t\t}\n\t\tworldToScreen(worldCoord, screenCoord) {\n\t\t\t\tconst device = this.system.app.graphicsDevice;\n\t\t\t\tconst { width, height } = device.clientRect;\n\t\t\t\treturn this._camera.worldToScreen(worldCoord, width, height, screenCoord);\n\t\t}\n\t\tonAppPrerender() {\n\t\t\t\tthis._camera._viewMatDirty = true;\n\t\t\t\tthis._camera._viewProjMatDirty = true;\n\t\t}\n\t\taddCameraToLayers() {\n\t\t\t\tconst layers = this.layers;\n\t\t\t\tfor(let i = 0; i < layers.length; i++){\n\t\t\t\t\t\tconst layer = this.system.app.scene.layers.getLayerById(layers[i]);\n\t\t\t\t\t\tif (layer) {\n\t\t\t\t\t\t\t\tlayer.addCamera(this);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tremoveCameraFromLayers() {\n\t\t\t\tconst layers = this.layers;\n\t\t\t\tfor(let i = 0; i < layers.length; i++){\n\t\t\t\t\t\tconst layer = this.system.app.scene.layers.getLayerById(layers[i]);\n\t\t\t\t\t\tif (layer) {\n\t\t\t\t\t\t\t\tlayer.removeCamera(this);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tonLayersChanged(oldComp, newComp) {\n\t\t\t\tthis.addCameraToLayers();\n\t\t\t\toldComp.off('add', this.onLayerAdded, this);\n\t\t\t\toldComp.off('remove', this.onLayerRemoved, this);\n\t\t\t\tnewComp.on('add', this.onLayerAdded, this);\n\t\t\t\tnewComp.on('remove', this.onLayerRemoved, this);\n\t\t}\n\t\tonLayerAdded(layer) {\n\t\t\t\tconst index = this.layers.indexOf(layer.id);\n\t\t\t\tif (index < 0) return;\n\t\t\t\tlayer.addCamera(this);\n\t\t}\n\t\tonLayerRemoved(layer) {\n\t\t\t\tconst index = this.layers.indexOf(layer.id);\n\t\t\t\tif (index < 0) return;\n\t\t\t\tlayer.removeCamera(this);\n\t\t}\n\t\tonEnable() {\n\t\t\t\tconst scene = this.system.app.scene;\n\t\t\t\tconst layers = scene.layers;\n\t\t\t\tthis.system.addCamera(this);\n\t\t\t\tthis._evtLayersChanged?.off();\n\t\t\t\tthis._evtLayersChanged = scene.on('set:layers', this.onLayersChanged, this);\n\t\t\t\tif (layers) {\n\t\t\t\t\t\tthis._evtLayerAdded?.off();\n\t\t\t\t\t\tthis._evtLayerAdded = layers.on('add', this.onLayerAdded, this);\n\t\t\t\t\t\tthis._evtLayerRemoved?.off();\n\t\t\t\t\t\tthis._evtLayerRemoved = layers.on('remove', this.onLayerRemoved, this);\n\t\t\t\t}\n\t\t\t\tif (this.enabled && this.entity.enabled) {\n\t\t\t\t\t\tthis.addCameraToLayers();\n\t\t\t\t}\n\t\t\t\tthis.postEffects.enable();\n\t\t}\n\t\tonDisable() {\n\t\t\t\tconst scene = this.system.app.scene;\n\t\t\t\tconst layers = scene.layers;\n\t\t\t\tthis.postEffects.disable();\n\t\t\t\tthis.removeCameraFromLayers();\n\t\t\t\tthis._evtLayersChanged?.off();\n\t\t\t\tthis._evtLayersChanged = null;\n\t\t\t\tif (layers) {\n\t\t\t\t\t\tthis._evtLayerAdded?.off();\n\t\t\t\t\t\tthis._evtLayerAdded = null;\n\t\t\t\t\t\tthis._evtLayerRemoved?.off();\n\t\t\t\t\t\tthis._evtLayerRemoved = null;\n\t\t\t\t}\n\t\t\t\tthis.system.removeCamera(this);\n\t\t}\n\t\tonRemove() {\n\t\t\t\tthis.onDisable();\n\t\t\t\tthis.off();\n\t\t\t\tthis.camera.destroy();\n\t\t}\n\t\tcalculateAspectRatio(rt) {\n\t\t\t\tconst device = this.system.app.graphicsDevice;\n\t\t\t\tconst width = rt ? rt.width : device.width;\n\t\t\t\tconst height = rt ? rt.height : device.height;\n\t\t\t\treturn width * this.rect.z / (height * this.rect.w);\n\t\t}\n\t\tframeUpdate(rt) {\n\t\t\t\tif (this.aspectRatioMode === ASPECT_AUTO) {\n\t\t\t\t\t\tthis.aspectRatio = this.calculateAspectRatio(rt);\n\t\t\t\t}\n\t\t}\n\t\tstartXr(type, spaceType, options) {\n\t\t\t\tthis.system.app.xr.start(this, type, spaceType, options);\n\t\t}\n\t\tendXr(callback) {\n\t\t\t\tif (!this._camera.xr) {\n\t\t\t\t\t\tif (callback) callback(new Error('Camera is not in XR'));\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._camera.xr.end(callback);\n\t\t}\n\t\tcopy(source) {\n\t\t\t\tthis.aperture = source.aperture;\n\t\t\t\tthis.aspectRatio = source.aspectRatio;\n\t\t\t\tthis.aspectRatioMode = source.aspectRatioMode;\n\t\t\t\tthis.calculateProjection = source.calculateProjection;\n\t\t\t\tthis.calculateTransform = source.calculateTransform;\n\t\t\t\tthis.clearColor = source.clearColor;\n\t\t\t\tthis.clearColorBuffer = source.clearColorBuffer;\n\t\t\t\tthis.clearDepthBuffer = source.clearDepthBuffer;\n\t\t\t\tthis.clearStencilBuffer = source.clearStencilBuffer;\n\t\t\t\tthis.cullFaces = source.cullFaces;\n\t\t\t\tthis.disablePostEffectsLayer = source.disablePostEffectsLayer;\n\t\t\t\tthis.farClip = source.farClip;\n\t\t\t\tthis.flipFaces = source.flipFaces;\n\t\t\t\tthis.fov = source.fov;\n\t\t\t\tthis.frustumCulling = source.frustumCulling;\n\t\t\t\tthis.horizontalFov = source.horizontalFov;\n\t\t\t\tthis.layers = source.layers;\n\t\t\t\tthis.nearClip = source.nearClip;\n\t\t\t\tthis.orthoHeight = source.orthoHeight;\n\t\t\t\tthis.priority = source.priority;\n\t\t\t\tthis.projection = source.projection;\n\t\t\t\tthis.rect = source.rect;\n\t\t\t\tthis.renderTarget = source.renderTarget;\n\t\t\t\tthis.scissorRect = source.scissorRect;\n\t\t\t\tthis.sensitivity = source.sensitivity;\n\t\t\t\tthis.shutter = source.shutter;\n\t\t}\n}\n\nclass CameraComponentData {\n\t\tconstructor(){\n\t\t\t\tthis.enabled = true;\n\t\t}\n}\n\nconst _schema$1 = [\n\t\t'enabled'\n];\nclass CameraComponentSystem extends ComponentSystem {\n\t\tconstructor(app){\n\t\t\t\tsuper(app), this.cameras = [];\n\t\t\t\tthis.id = 'camera';\n\t\t\t\tthis.ComponentType = CameraComponent;\n\t\t\t\tthis.DataType = CameraComponentData;\n\t\t\t\tthis.schema = _schema$1;\n\t\t\t\tthis.on('beforeremove', this.onBeforeRemove, this);\n\t\t\t\tthis.app.on('prerender', this.onAppPrerender, this);\n\t\t}\n\t\tinitializeComponentData(component, data, properties) {\n\t\t\t\tproperties = [\n\t\t\t\t\t\t'aspectRatio',\n\t\t\t\t\t\t'aspectRatioMode',\n\t\t\t\t\t\t'calculateProjection',\n\t\t\t\t\t\t'calculateTransform',\n\t\t\t\t\t\t'clearColor',\n\t\t\t\t\t\t'clearColorBuffer',\n\t\t\t\t\t\t'clearDepth',\n\t\t\t\t\t\t'clearDepthBuffer',\n\t\t\t\t\t\t'clearStencilBuffer',\n\t\t\t\t\t\t'renderSceneColorMap',\n\t\t\t\t\t\t'renderSceneDepthMap',\n\t\t\t\t\t\t'cullFaces',\n\t\t\t\t\t\t'farClip',\n\t\t\t\t\t\t'flipFaces',\n\t\t\t\t\t\t'fog',\n\t\t\t\t\t\t'fov',\n\t\t\t\t\t\t'frustumCulling',\n\t\t\t\t\t\t'horizontalFov',\n\t\t\t\t\t\t'layers',\n\t\t\t\t\t\t'renderTarget',\n\t\t\t\t\t\t'nearClip',\n\t\t\t\t\t\t'orthoHeight',\n\t\t\t\t\t\t'projection',\n\t\t\t\t\t\t'priority',\n\t\t\t\t\t\t'rect',\n\t\t\t\t\t\t'scissorRect',\n\t\t\t\t\t\t'aperture',\n\t\t\t\t\t\t'shutter',\n\t\t\t\t\t\t'sensitivity',\n\t\t\t\t\t\t'gammaCorrection',\n\t\t\t\t\t\t'toneMapping'\n\t\t\t\t];\n\t\t\t\tfor(let i = 0; i < properties.length; i++){\n\t\t\t\t\t\tconst property = properties[i];\n\t\t\t\t\t\tif (data.hasOwnProperty(property)) {\n\t\t\t\t\t\t\t\tconst value = data[property];\n\t\t\t\t\t\t\t\tswitch(property){\n\t\t\t\t\t\t\t\t\t\tcase 'rect':\n\t\t\t\t\t\t\t\t\t\tcase 'scissorRect':\n\t\t\t\t\t\t\t\t\t\t\t\tif (Array.isArray(value)) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcomponent[property] = new Vec4(value[0], value[1], value[2], value[3]);\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcomponent[property] = value;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\tcase 'clearColor':\n\t\t\t\t\t\t\t\t\t\t\t\tif (Array.isArray(value)) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcomponent[property] = new Color(value[0], value[1], value[2], value[3]);\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcomponent[property] = value;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\t\t\tcomponent[property] = value;\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tsuper.initializeComponentData(component, data, [\n\t\t\t\t\t\t'enabled'\n\t\t\t\t]);\n\t\t}\n\t\tcloneComponent(entity, clone) {\n\t\t\t\tconst c = entity.camera;\n\t\t\t\treturn this.addComponent(clone, {\n\t\t\t\t\t\taspectRatio: c.aspectRatio,\n\t\t\t\t\t\taspectRatioMode: c.aspectRatioMode,\n\t\t\t\t\t\tcalculateProjection: c.calculateProjection,\n\t\t\t\t\t\tcalculateTransform: c.calculateTransform,\n\t\t\t\t\t\tclearColor: c.clearColor,\n\t\t\t\t\t\tclearColorBuffer: c.clearColorBuffer,\n\t\t\t\t\t\tclearDepthBuffer: c.clearDepthBuffer,\n\t\t\t\t\t\tclearStencilBuffer: c.clearStencilBuffer,\n\t\t\t\t\t\trenderSceneDepthMap: c.renderSceneDepthMap,\n\t\t\t\t\t\trenderSceneColorMap: c.renderSceneColorMap,\n\t\t\t\t\t\tcullFaces: c.cullFaces,\n\t\t\t\t\t\tenabled: c.enabled,\n\t\t\t\t\t\tfarClip: c.farClip,\n\t\t\t\t\t\tflipFaces: c.flipFaces,\n\t\t\t\t\t\tfov: c.fov,\n\t\t\t\t\t\tfrustumCulling: c.frustumCulling,\n\t\t\t\t\t\thorizontalFov: c.horizontalFov,\n\t\t\t\t\t\tlayers: c.layers,\n\t\t\t\t\t\trenderTarget: c.renderTarget,\n\t\t\t\t\t\tnearClip: c.nearClip,\n\t\t\t\t\t\torthoHeight: c.orthoHeight,\n\t\t\t\t\t\tprojection: c.projection,\n\t\t\t\t\t\tpriority: c.priority,\n\t\t\t\t\t\trect: c.rect,\n\t\t\t\t\t\tscissorRect: c.scissorRect,\n\t\t\t\t\t\taperture: c.aperture,\n\t\t\t\t\t\tsensitivity: c.sensitivity,\n\t\t\t\t\t\tshutter: c.shutter,\n\t\t\t\t\t\tgammaCorrection: c.gammaCorrection,\n\t\t\t\t\t\ttoneMapping: c.toneMapping\n\t\t\t\t});\n\t\t}\n\t\tonBeforeRemove(entity, component) {\n\t\t\t\tthis.removeCamera(component);\n\t\t\t\tcomponent.onRemove();\n\t\t}\n\t\tonAppPrerender() {\n\t\t\t\tfor(let i = 0, len = this.cameras.length; i < len; i++){\n\t\t\t\t\t\tthis.cameras[i].onAppPrerender();\n\t\t\t\t}\n\t\t}\n\t\taddCamera(camera) {\n\t\t\t\tthis.cameras.push(camera);\n\t\t\t\tsortPriority(this.cameras);\n\t\t}\n\t\tremoveCamera(camera) {\n\t\t\t\tconst index = this.cameras.indexOf(camera);\n\t\t\t\tif (index >= 0) {\n\t\t\t\t\t\tthis.cameras.splice(index, 1);\n\t\t\t\t\t\tsortPriority(this.cameras);\n\t\t\t\t}\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.app.off('prerender', this.onAppPrerender, this);\n\t\t\t\tsuper.destroy();\n\t\t}\n}\nComponent._buildAccessors(CameraComponent.prototype, _schema$1);\n\nclass LightComponentData {\n\t\tconstructor(){\n\t\t\t\tthis.enabled = true;\n\t\t\t\tthis.type = 'directional';\n\t\t\t\tthis.color = new Color(1, 1, 1);\n\t\t\t\tthis.intensity = 1;\n\t\t\t\tthis.luminance = 0;\n\t\t\t\tthis.shape = LIGHTSHAPE_PUNCTUAL;\n\t\t\t\tthis.affectSpecularity = true;\n\t\t\t\tthis.castShadows = false;\n\t\t\t\tthis.shadowDistance = 40;\n\t\t\t\tthis.shadowIntensity = 1;\n\t\t\t\tthis.shadowResolution = 1024;\n\t\t\t\tthis.shadowBias = 0.05;\n\t\t\t\tthis.numCascades = 1;\n\t\t\t\tthis.cascadeBlend = 0;\n\t\t\t\tthis.bakeNumSamples = 1;\n\t\t\t\tthis.bakeArea = 0;\n\t\t\t\tthis.cascadeDistribution = 0.5;\n\t\t\t\tthis.normalOffsetBias = 0;\n\t\t\t\tthis.range = 10;\n\t\t\t\tthis.innerConeAngle = 40;\n\t\t\t\tthis.outerConeAngle = 45;\n\t\t\t\tthis.falloffMode = LIGHTFALLOFF_LINEAR;\n\t\t\t\tthis.shadowType = SHADOW_PCF3_32F;\n\t\t\t\tthis.vsmBlurSize = 11;\n\t\t\t\tthis.vsmBlurMode = BLUR_GAUSSIAN;\n\t\t\t\tthis.vsmBias = 0.01 * 0.25;\n\t\t\t\tthis.cookieAsset = null;\n\t\t\t\tthis.cookie = null;\n\t\t\t\tthis.cookieIntensity = 1;\n\t\t\t\tthis.cookieFalloff = true;\n\t\t\t\tthis.cookieChannel = 'rgb';\n\t\t\t\tthis.cookieAngle = 0;\n\t\t\t\tthis.cookieScale = null;\n\t\t\t\tthis.cookieOffset = null;\n\t\t\t\tthis.shadowUpdateMode = SHADOWUPDATE_REALTIME;\n\t\t\t\tthis.mask = 1;\n\t\t\t\tthis.affectDynamic = true;\n\t\t\t\tthis.affectLightmapped = false;\n\t\t\t\tthis.bake = false;\n\t\t\t\tthis.bakeDir = true;\n\t\t\t\tthis.isStatic = false;\n\t\t\t\tthis.layers = [\n\t\t\t\t\t\tLAYERID_WORLD\n\t\t\t\t];\n\t\t\t\tthis.penumbraSize = 1;\n\t\t\t\tthis.penumbraFalloff = 1;\n\t\t\t\tthis.shadowSamples = 16;\n\t\t\t\tthis.shadowBlockerSamples = 16;\n\t\t}\n}\nconst properties = Object.keys(new LightComponentData());\n\nclass LightComponent extends Component {\n\t\tget data() {\n\t\t\t\tconst record = this.system.store[this.entity.getGuid()];\n\t\t\t\treturn record ? record.data : null;\n\t\t}\n\t\tset enabled(arg) {\n\t\t\t\tthis._setValue('enabled', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.onSetEnabled(null, oldValue, newValue);\n\t\t\t\t});\n\t\t}\n\t\tget enabled() {\n\t\t\t\treturn this.data.enabled;\n\t\t}\n\t\tset light(arg) {\n\t\t\t\tthis._setValue('light', arg);\n\t\t}\n\t\tget light() {\n\t\t\t\treturn this.data.light;\n\t\t}\n\t\tset type(arg) {\n\t\t\t\tthis._setValue('type', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.system.changeType(this, oldValue, newValue);\n\t\t\t\t\t\tthis.refreshProperties();\n\t\t\t\t});\n\t\t}\n\t\tget type() {\n\t\t\t\treturn this.data.type;\n\t\t}\n\t\tset color(arg) {\n\t\t\t\tthis._setValue('color', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.setColor(newValue);\n\t\t\t\t}, true);\n\t\t}\n\t\tget color() {\n\t\t\t\treturn this.data.color;\n\t\t}\n\t\tset intensity(arg) {\n\t\t\t\tthis._setValue('intensity', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.intensity = newValue;\n\t\t\t\t});\n\t\t}\n\t\tget intensity() {\n\t\t\t\treturn this.data.intensity;\n\t\t}\n\t\tset luminance(arg) {\n\t\t\t\tthis._setValue('luminance', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.luminance = newValue;\n\t\t\t\t});\n\t\t}\n\t\tget luminance() {\n\t\t\t\treturn this.data.luminance;\n\t\t}\n\t\tset shape(arg) {\n\t\t\t\tthis._setValue('shape', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.shape = newValue;\n\t\t\t\t});\n\t\t}\n\t\tget shape() {\n\t\t\t\treturn this.data.shape;\n\t\t}\n\t\tset affectSpecularity(arg) {\n\t\t\t\tthis._setValue('affectSpecularity', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.affectSpecularity = newValue;\n\t\t\t\t});\n\t\t}\n\t\tget affectSpecularity() {\n\t\t\t\treturn this.data.affectSpecularity;\n\t\t}\n\t\tset castShadows(arg) {\n\t\t\t\tthis._setValue('castShadows', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.castShadows = newValue;\n\t\t\t\t});\n\t\t}\n\t\tget castShadows() {\n\t\t\t\treturn this.data.castShadows;\n\t\t}\n\t\tset shadowDistance(arg) {\n\t\t\t\tthis._setValue('shadowDistance', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.shadowDistance = newValue;\n\t\t\t\t});\n\t\t}\n\t\tget shadowDistance() {\n\t\t\t\treturn this.data.shadowDistance;\n\t\t}\n\t\tset shadowIntensity(arg) {\n\t\t\t\tthis._setValue('shadowIntensity', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.shadowIntensity = newValue;\n\t\t\t\t});\n\t\t}\n\t\tget shadowIntensity() {\n\t\t\t\treturn this.data.shadowIntensity;\n\t\t}\n\t\tset shadowResolution(arg) {\n\t\t\t\tthis._setValue('shadowResolution', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.shadowResolution = newValue;\n\t\t\t\t});\n\t\t}\n\t\tget shadowResolution() {\n\t\t\t\treturn this.data.shadowResolution;\n\t\t}\n\t\tset shadowBias(arg) {\n\t\t\t\tthis._setValue('shadowBias', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.shadowBias = -0.01 * math.clamp(newValue, 0, 1);\n\t\t\t\t});\n\t\t}\n\t\tget shadowBias() {\n\t\t\t\treturn this.data.shadowBias;\n\t\t}\n\t\tset numCascades(arg) {\n\t\t\t\tthis._setValue('numCascades', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.numCascades = math.clamp(Math.floor(newValue), 1, 4);\n\t\t\t\t});\n\t\t}\n\t\tget numCascades() {\n\t\t\t\treturn this.data.numCascades;\n\t\t}\n\t\tset cascadeBlend(value) {\n\t\t\t\tthis._setValue('cascadeBlend', value, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.cascadeBlend = math.clamp(newValue, 0, 1);\n\t\t\t\t});\n\t\t}\n\t\tget cascadeBlend() {\n\t\t\t\treturn this.data.cascadeBlend;\n\t\t}\n\t\tset bakeNumSamples(arg) {\n\t\t\t\tthis._setValue('bakeNumSamples', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.bakeNumSamples = math.clamp(Math.floor(newValue), 1, 255);\n\t\t\t\t});\n\t\t}\n\t\tget bakeNumSamples() {\n\t\t\t\treturn this.data.bakeNumSamples;\n\t\t}\n\t\tset bakeArea(arg) {\n\t\t\t\tthis._setValue('bakeArea', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.bakeArea = math.clamp(newValue, 0, 180);\n\t\t\t\t});\n\t\t}\n\t\tget bakeArea() {\n\t\t\t\treturn this.data.bakeArea;\n\t\t}\n\t\tset cascadeDistribution(arg) {\n\t\t\t\tthis._setValue('cascadeDistribution', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.cascadeDistribution = math.clamp(newValue, 0, 1);\n\t\t\t\t});\n\t\t}\n\t\tget cascadeDistribution() {\n\t\t\t\treturn this.data.cascadeDistribution;\n\t\t}\n\t\tset normalOffsetBias(arg) {\n\t\t\t\tthis._setValue('normalOffsetBias', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.normalOffsetBias = math.clamp(newValue, 0, 1);\n\t\t\t\t});\n\t\t}\n\t\tget normalOffsetBias() {\n\t\t\t\treturn this.data.normalOffsetBias;\n\t\t}\n\t\tset range(arg) {\n\t\t\t\tthis._setValue('range', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.attenuationEnd = newValue;\n\t\t\t\t});\n\t\t}\n\t\tget range() {\n\t\t\t\treturn this.data.range;\n\t\t}\n\t\tset innerConeAngle(arg) {\n\t\t\t\tthis._setValue('innerConeAngle', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.innerConeAngle = newValue;\n\t\t\t\t});\n\t\t}\n\t\tget innerConeAngle() {\n\t\t\t\treturn this.data.innerConeAngle;\n\t\t}\n\t\tset outerConeAngle(arg) {\n\t\t\t\tthis._setValue('outerConeAngle', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.outerConeAngle = newValue;\n\t\t\t\t});\n\t\t}\n\t\tget outerConeAngle() {\n\t\t\t\treturn this.data.outerConeAngle;\n\t\t}\n\t\tset falloffMode(arg) {\n\t\t\t\tthis._setValue('falloffMode', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.falloffMode = newValue;\n\t\t\t\t});\n\t\t}\n\t\tget falloffMode() {\n\t\t\t\treturn this.data.falloffMode;\n\t\t}\n\t\tset shadowType(arg) {\n\t\t\t\tthis._setValue('shadowType', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.shadowType = newValue;\n\t\t\t\t});\n\t\t}\n\t\tget shadowType() {\n\t\t\t\treturn this.data.shadowType;\n\t\t}\n\t\tset vsmBlurSize(arg) {\n\t\t\t\tthis._setValue('vsmBlurSize', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.vsmBlurSize = newValue;\n\t\t\t\t});\n\t\t}\n\t\tget vsmBlurSize() {\n\t\t\t\treturn this.data.vsmBlurSize;\n\t\t}\n\t\tset vsmBlurMode(arg) {\n\t\t\t\tthis._setValue('vsmBlurMode', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.vsmBlurMode = newValue;\n\t\t\t\t});\n\t\t}\n\t\tget vsmBlurMode() {\n\t\t\t\treturn this.data.vsmBlurMode;\n\t\t}\n\t\tset vsmBias(arg) {\n\t\t\t\tthis._setValue('vsmBias', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.vsmBias = math.clamp(newValue, 0, 1);\n\t\t\t\t});\n\t\t}\n\t\tget vsmBias() {\n\t\t\t\treturn this.data.vsmBias;\n\t\t}\n\t\tset cookieAsset(arg) {\n\t\t\t\tthis._setValue('cookieAsset', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tif (this._cookieAssetId && (newValue instanceof Asset && newValue.id === this._cookieAssetId || newValue === this._cookieAssetId)) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.onCookieAssetRemove();\n\t\t\t\t\t\tthis._cookieAssetId = null;\n\t\t\t\t\t\tif (newValue instanceof Asset) {\n\t\t\t\t\t\t\t\tthis.data.cookieAsset = newValue.id;\n\t\t\t\t\t\t\t\tthis._cookieAssetId = newValue.id;\n\t\t\t\t\t\t\t\tthis.onCookieAssetAdd(newValue);\n\t\t\t\t\t\t} else if (typeof newValue === 'number') {\n\t\t\t\t\t\t\t\tthis._cookieAssetId = newValue;\n\t\t\t\t\t\t\t\tconst asset = this.system.app.assets.get(newValue);\n\t\t\t\t\t\t\t\tif (asset) {\n\t\t\t\t\t\t\t\t\t\tthis.onCookieAssetAdd(asset);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis._cookieAssetAdd = true;\n\t\t\t\t\t\t\t\t\t\tthis.system.app.assets.on(`add:${this._cookieAssetId}`, this.onCookieAssetAdd, this);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\tget cookieAsset() {\n\t\t\t\treturn this.data.cookieAsset;\n\t\t}\n\t\tset cookie(arg) {\n\t\t\t\tthis._setValue('cookie', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.cookie = newValue;\n\t\t\t\t});\n\t\t}\n\t\tget cookie() {\n\t\t\t\treturn this.data.cookie;\n\t\t}\n\t\tset cookieIntensity(arg) {\n\t\t\t\tthis._setValue('cookieIntensity', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.cookieIntensity = math.clamp(newValue, 0, 1);\n\t\t\t\t});\n\t\t}\n\t\tget cookieIntensity() {\n\t\t\t\treturn this.data.cookieIntensity;\n\t\t}\n\t\tset cookieFalloff(arg) {\n\t\t\t\tthis._setValue('cookieFalloff', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.cookieFalloff = newValue;\n\t\t\t\t});\n\t\t}\n\t\tget cookieFalloff() {\n\t\t\t\treturn this.data.cookieFalloff;\n\t\t}\n\t\tset cookieChannel(arg) {\n\t\t\t\tthis._setValue('cookieChannel', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.cookieChannel = newValue;\n\t\t\t\t});\n\t\t}\n\t\tget cookieChannel() {\n\t\t\t\treturn this.data.cookieChannel;\n\t\t}\n\t\tset cookieAngle(arg) {\n\t\t\t\tthis._setValue('cookieAngle', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tif (newValue !== 0 || this.cookieScale !== null) {\n\t\t\t\t\t\t\t\tif (!this._cookieMatrix) this._cookieMatrix = new Vec4();\n\t\t\t\t\t\t\t\tlet scx = 1;\n\t\t\t\t\t\t\t\tlet scy = 1;\n\t\t\t\t\t\t\t\tif (this.cookieScale) {\n\t\t\t\t\t\t\t\t\t\tscx = this.cookieScale.x;\n\t\t\t\t\t\t\t\t\t\tscy = this.cookieScale.y;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst c = Math.cos(newValue * math.DEG_TO_RAD);\n\t\t\t\t\t\t\t\tconst s = Math.sin(newValue * math.DEG_TO_RAD);\n\t\t\t\t\t\t\t\tthis._cookieMatrix.set(c / scx, -s / scx, s / scy, c / scy);\n\t\t\t\t\t\t\t\tthis.light.cookieTransform = this._cookieMatrix;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.light.cookieTransform = null;\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\tget cookieAngle() {\n\t\t\t\treturn this.data.cookieAngle;\n\t\t}\n\t\tset cookieScale(arg) {\n\t\t\t\tthis._setValue('cookieScale', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tif (newValue !== null || this.cookieAngle !== 0) {\n\t\t\t\t\t\t\t\tif (!this._cookieMatrix) this._cookieMatrix = new Vec4();\n\t\t\t\t\t\t\t\tconst scx = newValue.x;\n\t\t\t\t\t\t\t\tconst scy = newValue.y;\n\t\t\t\t\t\t\t\tconst c = Math.cos(this.cookieAngle * math.DEG_TO_RAD);\n\t\t\t\t\t\t\t\tconst s = Math.sin(this.cookieAngle * math.DEG_TO_RAD);\n\t\t\t\t\t\t\t\tthis._cookieMatrix.set(c / scx, -s / scx, s / scy, c / scy);\n\t\t\t\t\t\t\t\tthis.light.cookieTransform = this._cookieMatrix;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.light.cookieTransform = null;\n\t\t\t\t\t\t}\n\t\t\t\t}, true);\n\t\t}\n\t\tget cookieScale() {\n\t\t\t\treturn this.data.cookieScale;\n\t\t}\n\t\tset cookieOffset(arg) {\n\t\t\t\tthis._setValue('cookieOffset', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.cookieOffset = newValue;\n\t\t\t\t}, true);\n\t\t}\n\t\tget cookieOffset() {\n\t\t\t\treturn this.data.cookieOffset;\n\t\t}\n\t\tset shadowUpdateMode(arg) {\n\t\t\t\tthis._setValue('shadowUpdateMode', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.shadowUpdateMode = newValue;\n\t\t\t\t}, true);\n\t\t}\n\t\tget shadowUpdateMode() {\n\t\t\t\treturn this.data.shadowUpdateMode;\n\t\t}\n\t\tset mask(arg) {\n\t\t\t\tthis._setValue('mask', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.mask = newValue;\n\t\t\t\t});\n\t\t}\n\t\tget mask() {\n\t\t\t\treturn this.data.mask;\n\t\t}\n\t\tset affectDynamic(arg) {\n\t\t\t\tthis._setValue('affectDynamic', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tif (newValue) {\n\t\t\t\t\t\t\t\tthis.light.mask |= MASK_AFFECT_DYNAMIC;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.light.mask &= ~MASK_AFFECT_DYNAMIC;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.light.layersDirty();\n\t\t\t\t});\n\t\t}\n\t\tget affectDynamic() {\n\t\t\t\treturn this.data.affectDynamic;\n\t\t}\n\t\tset affectLightmapped(arg) {\n\t\t\t\tthis._setValue('affectLightmapped', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tif (newValue) {\n\t\t\t\t\t\t\t\tthis.light.mask |= MASK_AFFECT_LIGHTMAPPED;\n\t\t\t\t\t\t\t\tif (this.bake) this.light.mask &= ~MASK_BAKE;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.light.mask &= ~MASK_AFFECT_LIGHTMAPPED;\n\t\t\t\t\t\t\t\tif (this.bake) this.light.mask |= MASK_BAKE;\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\tget affectLightmapped() {\n\t\t\t\treturn this.data.affectLightmapped;\n\t\t}\n\t\tset bake(arg) {\n\t\t\t\tthis._setValue('bake', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tif (newValue) {\n\t\t\t\t\t\t\t\tthis.light.mask |= MASK_BAKE;\n\t\t\t\t\t\t\t\tif (this.affectLightmapped) this.light.mask &= ~MASK_AFFECT_LIGHTMAPPED;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.light.mask &= ~MASK_BAKE;\n\t\t\t\t\t\t\t\tif (this.affectLightmapped) this.light.mask |= MASK_AFFECT_LIGHTMAPPED;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.light.layersDirty();\n\t\t\t\t});\n\t\t}\n\t\tget bake() {\n\t\t\t\treturn this.data.bake;\n\t\t}\n\t\tset bakeDir(arg) {\n\t\t\t\tthis._setValue('bakeDir', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.bakeDir = newValue;\n\t\t\t\t});\n\t\t}\n\t\tget bakeDir() {\n\t\t\t\treturn this.data.bakeDir;\n\t\t}\n\t\tset isStatic(arg) {\n\t\t\t\tthis._setValue('isStatic', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.isStatic = newValue;\n\t\t\t\t});\n\t\t}\n\t\tget isStatic() {\n\t\t\t\treturn this.data.isStatic;\n\t\t}\n\t\tset layers(arg) {\n\t\t\t\tthis._setValue('layers', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tfor(let i = 0; i < oldValue.length; i++){\n\t\t\t\t\t\t\t\tconst layer = this.system.app.scene.layers.getLayerById(oldValue[i]);\n\t\t\t\t\t\t\t\tif (!layer) continue;\n\t\t\t\t\t\t\t\tlayer.removeLight(this);\n\t\t\t\t\t\t\t\tthis.light.removeLayer(layer);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor(let i = 0; i < newValue.length; i++){\n\t\t\t\t\t\t\t\tconst layer = this.system.app.scene.layers.getLayerById(newValue[i]);\n\t\t\t\t\t\t\t\tif (!layer) continue;\n\t\t\t\t\t\t\t\tif (this.enabled && this.entity.enabled) {\n\t\t\t\t\t\t\t\t\t\tlayer.addLight(this);\n\t\t\t\t\t\t\t\t\t\tthis.light.addLayer(layer);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\tget layers() {\n\t\t\t\treturn this.data.layers;\n\t\t}\n\t\tset shadowUpdateOverrides(values) {\n\t\t\t\tthis.light.shadowUpdateOverrides = values;\n\t\t}\n\t\tget shadowUpdateOverrides() {\n\t\t\t\treturn this.light.shadowUpdateOverrides;\n\t\t}\n\t\tset shadowSamples(value) {\n\t\t\t\tthis.light.shadowSamples = value;\n\t\t}\n\t\tget shadowSamples() {\n\t\t\t\treturn this.light.shadowSamples;\n\t\t}\n\t\tset shadowBlockerSamples(value) {\n\t\t\t\tthis.light.shadowBlockerSamples = value;\n\t\t}\n\t\tget shadowBlockerSamples() {\n\t\t\t\treturn this.light.shadowBlockerSamples;\n\t\t}\n\t\tset penumbraSize(value) {\n\t\t\t\tthis.light.penumbraSize = value;\n\t\t}\n\t\tget penumbraSize() {\n\t\t\t\treturn this.light.penumbraSize;\n\t\t}\n\t\tset penumbraFalloff(value) {\n\t\t\t\tthis.light.penumbraFalloff = value;\n\t\t}\n\t\tget penumbraFalloff() {\n\t\t\t\treturn this.light.penumbraFalloff;\n\t\t}\n\t\t_setValue(name, value, setFunc, skipEqualsCheck) {\n\t\t\t\tconst data = this.data;\n\t\t\t\tconst oldValue = data[name];\n\t\t\t\tif (!skipEqualsCheck && oldValue === value) return;\n\t\t\t\tdata[name] = value;\n\t\t\t\tif (setFunc) setFunc.call(this, value, oldValue);\n\t\t}\n\t\taddLightToLayers() {\n\t\t\t\tfor(let i = 0; i < this.layers.length; i++){\n\t\t\t\t\t\tconst layer = this.system.app.scene.layers.getLayerById(this.layers[i]);\n\t\t\t\t\t\tif (layer) {\n\t\t\t\t\t\t\t\tlayer.addLight(this);\n\t\t\t\t\t\t\t\tthis.light.addLayer(layer);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tremoveLightFromLayers() {\n\t\t\t\tfor(let i = 0; i < this.layers.length; i++){\n\t\t\t\t\t\tconst layer = this.system.app.scene.layers.getLayerById(this.layers[i]);\n\t\t\t\t\t\tif (layer) {\n\t\t\t\t\t\t\t\tlayer.removeLight(this);\n\t\t\t\t\t\t\t\tthis.light.removeLayer(layer);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tonLayersChanged(oldComp, newComp) {\n\t\t\t\tif (this.enabled && this.entity.enabled) {\n\t\t\t\t\t\tthis.addLightToLayers();\n\t\t\t\t}\n\t\t\t\toldComp.off('add', this.onLayerAdded, this);\n\t\t\t\toldComp.off('remove', this.onLayerRemoved, this);\n\t\t\t\tnewComp.on('add', this.onLayerAdded, this);\n\t\t\t\tnewComp.on('remove', this.onLayerRemoved, this);\n\t\t}\n\t\tonLayerAdded(layer) {\n\t\t\t\tconst index = this.layers.indexOf(layer.id);\n\t\t\t\tif (index >= 0 && this.enabled && this.entity.enabled) {\n\t\t\t\t\t\tlayer.addLight(this);\n\t\t\t\t\t\tthis.light.addLayer(layer);\n\t\t\t\t}\n\t\t}\n\t\tonLayerRemoved(layer) {\n\t\t\t\tconst index = this.layers.indexOf(layer.id);\n\t\t\t\tif (index >= 0) {\n\t\t\t\t\t\tlayer.removeLight(this);\n\t\t\t\t\t\tthis.light.removeLayer(layer);\n\t\t\t\t}\n\t\t}\n\t\trefreshProperties() {\n\t\t\t\tfor(let i = 0; i < properties.length; i++){\n\t\t\t\t\t\tconst name = properties[i];\n\t\t\t\t\t\tthis[name] = this[name];\n\t\t\t\t}\n\t\t\t\tif (this.enabled && this.entity.enabled) {\n\t\t\t\t\t\tthis.onEnable();\n\t\t\t\t}\n\t\t}\n\t\tonCookieAssetSet() {\n\t\t\t\tlet forceLoad = false;\n\t\t\t\tif (this._cookieAsset.type === 'cubemap' && !this._cookieAsset.loadFaces) {\n\t\t\t\t\t\tthis._cookieAsset.loadFaces = true;\n\t\t\t\t\t\tforceLoad = true;\n\t\t\t\t}\n\t\t\t\tif (!this._cookieAsset.resource || forceLoad) this.system.app.assets.load(this._cookieAsset);\n\t\t\t\tif (this._cookieAsset.resource) {\n\t\t\t\t\t\tthis.onCookieAssetLoad();\n\t\t\t\t}\n\t\t}\n\t\tonCookieAssetAdd(asset) {\n\t\t\t\tif (this._cookieAssetId !== asset.id) return;\n\t\t\t\tthis._cookieAsset = asset;\n\t\t\t\tif (this.light.enabled) {\n\t\t\t\t\t\tthis.onCookieAssetSet();\n\t\t\t\t}\n\t\t\t\tthis._cookieAsset.on('load', this.onCookieAssetLoad, this);\n\t\t\t\tthis._cookieAsset.on('remove', this.onCookieAssetRemove, this);\n\t\t}\n\t\tonCookieAssetLoad() {\n\t\t\t\tif (!this._cookieAsset || !this._cookieAsset.resource) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.cookie = this._cookieAsset.resource;\n\t\t}\n\t\tonCookieAssetRemove() {\n\t\t\t\tif (!this._cookieAssetId) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this._cookieAssetAdd) {\n\t\t\t\t\t\tthis.system.app.assets.off(`add:${this._cookieAssetId}`, this.onCookieAssetAdd, this);\n\t\t\t\t\t\tthis._cookieAssetAdd = false;\n\t\t\t\t}\n\t\t\t\tif (this._cookieAsset) {\n\t\t\t\t\t\tthis._cookieAsset.off('load', this.onCookieAssetLoad, this);\n\t\t\t\t\t\tthis._cookieAsset.off('remove', this.onCookieAssetRemove, this);\n\t\t\t\t\t\tthis._cookieAsset = null;\n\t\t\t\t}\n\t\t\t\tthis.cookie = null;\n\t\t}\n\t\tonEnable() {\n\t\t\t\tconst scene = this.system.app.scene;\n\t\t\t\tconst layers = scene.layers;\n\t\t\t\tthis.light.enabled = true;\n\t\t\t\tthis._evtLayersChanged = scene.on('set:layers', this.onLayersChanged, this);\n\t\t\t\tif (layers) {\n\t\t\t\t\t\tthis._evtLayerAdded = layers.on('add', this.onLayerAdded, this);\n\t\t\t\t\t\tthis._evtLayerRemoved = layers.on('remove', this.onLayerRemoved, this);\n\t\t\t\t}\n\t\t\t\tif (this.enabled && this.entity.enabled) {\n\t\t\t\t\t\tthis.addLightToLayers();\n\t\t\t\t}\n\t\t\t\tif (this._cookieAsset && !this.cookie) {\n\t\t\t\t\t\tthis.onCookieAssetSet();\n\t\t\t\t}\n\t\t}\n\t\tonDisable() {\n\t\t\t\tconst scene = this.system.app.scene;\n\t\t\t\tconst layers = scene.layers;\n\t\t\t\tthis.light.enabled = false;\n\t\t\t\tthis._evtLayersChanged?.off();\n\t\t\t\tthis._evtLayersChanged = null;\n\t\t\t\tif (layers) {\n\t\t\t\t\t\tthis._evtLayerAdded?.off();\n\t\t\t\t\t\tthis._evtLayerAdded = null;\n\t\t\t\t\t\tthis._evtLayerRemoved?.off();\n\t\t\t\t\t\tthis._evtLayerRemoved = null;\n\t\t\t\t}\n\t\t\t\tthis.removeLightFromLayers();\n\t\t}\n\t\tonRemove() {\n\t\t\t\tthis.onDisable();\n\t\t\t\tthis.light.destroy();\n\t\t\t\tthis.cookieAsset = null;\n\t\t}\n\t\tconstructor(...args){\n\t\t\t\tsuper(...args), this._evtLayersChanged = null, this._evtLayerAdded = null, this._evtLayerRemoved = null, this._cookieAsset = null, this._cookieAssetId = null, this._cookieAssetAdd = false, this._cookieMatrix = null;\n\t\t}\n}\n\nclass LightComponentSystem extends ComponentSystem {\n\t\tconstructor(app){\n\t\t\t\tsuper(app);\n\t\t\t\tthis.id = 'light';\n\t\t\t\tthis.ComponentType = LightComponent;\n\t\t\t\tthis.DataType = LightComponentData;\n\t\t\t\tthis.on('beforeremove', this._onRemoveComponent, this);\n\t\t}\n\t\tinitializeComponentData(component, _data) {\n\t\t\t\tconst data = {\n\t\t\t\t\t\t..._data\n\t\t\t\t};\n\t\t\t\tif (!data.type) {\n\t\t\t\t\t\tdata.type = component.data.type;\n\t\t\t\t}\n\t\t\t\tcomponent.data.type = data.type;\n\t\t\t\tif (data.layers && Array.isArray(data.layers)) {\n\t\t\t\t\t\tdata.layers = data.layers.slice(0);\n\t\t\t\t}\n\t\t\t\tif (data.color && Array.isArray(data.color)) {\n\t\t\t\t\t\tdata.color = new Color(data.color[0], data.color[1], data.color[2]);\n\t\t\t\t}\n\t\t\t\tif (data.cookieOffset && data.cookieOffset instanceof Array) {\n\t\t\t\t\t\tdata.cookieOffset = new Vec2(data.cookieOffset[0], data.cookieOffset[1]);\n\t\t\t\t}\n\t\t\t\tif (data.cookieScale && data.cookieScale instanceof Array) {\n\t\t\t\t\t\tdata.cookieScale = new Vec2(data.cookieScale[0], data.cookieScale[1]);\n\t\t\t\t}\n\t\t\t\tif (data.enable) {\n\t\t\t\t\t\tconsole.warn('WARNING: enable: Property is deprecated. Set enabled property instead.');\n\t\t\t\t\t\tdata.enabled = data.enable;\n\t\t\t\t}\n\t\t\t\tif (!data.shape) {\n\t\t\t\t\t\tdata.shape = LIGHTSHAPE_PUNCTUAL;\n\t\t\t\t}\n\t\t\t\tconst light = new Light(this.app.graphicsDevice, this.app.scene.clusteredLightingEnabled);\n\t\t\t\tlight.type = lightTypes[data.type];\n\t\t\t\tlight._node = component.entity;\n\t\t\t\tcomponent.data.light = light;\n\t\t\t\tsuper.initializeComponentData(component, data, properties);\n\t\t}\n\t\t_onRemoveComponent(entity, component) {\n\t\t\t\tcomponent.onRemove();\n\t\t}\n\t\tcloneComponent(entity, clone) {\n\t\t\t\tconst light = entity.light;\n\t\t\t\tconst data = [];\n\t\t\t\tlet name;\n\t\t\t\tfor(let i = 0; i < properties.length; i++){\n\t\t\t\t\t\tname = properties[i];\n\t\t\t\t\t\tif (name === 'light') {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (light[name] && light[name].clone) {\n\t\t\t\t\t\t\t\tdata[name] = light[name].clone();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tdata[name] = light[name];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this.addComponent(clone, data);\n\t\t}\n\t\tchangeType(component, oldValue, newValue) {\n\t\t\t\tif (oldValue !== newValue) {\n\t\t\t\t\t\tcomponent.light.type = lightTypes[newValue];\n\t\t\t\t}\n\t\t}\n}\n\nconst components = [\n\t\t'x',\n\t\t'y',\n\t\t'z',\n\t\t'w'\n];\nconst vecLookup = [\n\t\tundefined,\n\t\tundefined,\n\t\tVec2,\n\t\tVec3,\n\t\tVec4\n];\nfunction rawToValue(app, args, value, old) {\n\t\tswitch(args.type){\n\t\t\t\tcase 'boolean':\n\t\t\t\t\t\treturn !!value;\n\t\t\t\tcase 'number':\n\t\t\t\t\t\tif (typeof value === 'number') {\n\t\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t} else if (typeof value === 'string') {\n\t\t\t\t\t\t\t\tconst v = parseInt(value, 10);\n\t\t\t\t\t\t\t\tif (isNaN(v)) return null;\n\t\t\t\t\t\t\t\treturn v;\n\t\t\t\t\t\t} else if (typeof value === 'boolean') {\n\t\t\t\t\t\t\t\treturn 0 + value;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn null;\n\t\t\t\tcase 'json':\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tconst result = {};\n\t\t\t\t\t\t\t\tif (Array.isArray(args.schema)) {\n\t\t\t\t\t\t\t\t\t\tif (!value || typeof value !== 'object') {\n\t\t\t\t\t\t\t\t\t\t\t\tvalue = {};\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tfor(let i = 0; i < args.schema.length; i++){\n\t\t\t\t\t\t\t\t\t\t\t\tconst field = args.schema[i];\n\t\t\t\t\t\t\t\t\t\t\t\tif (!field.name) continue;\n\t\t\t\t\t\t\t\t\t\t\t\tif (field.array) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tresult[field.name] = [];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst arr = Array.isArray(value[field.name]) ? value[field.name] : [];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor(let j = 0; j < arr.length; j++){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tresult[field.name].push(rawToValue(app, field, arr[j]));\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst val = value.hasOwnProperty(field.name) ? value[field.name] : field.default;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tresult[field.name] = rawToValue(app, field, val);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t}\n\t\t\t\tcase 'asset':\n\t\t\t\t\t\tif (value instanceof Asset) {\n\t\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t} else if (typeof value === 'number') {\n\t\t\t\t\t\t\t\treturn app.assets.get(value) || null;\n\t\t\t\t\t\t} else if (typeof value === 'string') {\n\t\t\t\t\t\t\t\treturn app.assets.get(parseInt(value, 10)) || null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn null;\n\t\t\t\tcase 'entity':\n\t\t\t\t\t\tif (value instanceof GraphNode) {\n\t\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t} else if (typeof value === 'string') {\n\t\t\t\t\t\t\t\treturn app.getEntityFromIndex(value);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn null;\n\t\t\t\tcase 'rgb':\n\t\t\t\tcase 'rgba':\n\t\t\t\t\t\tif (value instanceof Color) {\n\t\t\t\t\t\t\t\tif (old instanceof Color) {\n\t\t\t\t\t\t\t\t\t\told.copy(value);\n\t\t\t\t\t\t\t\t\t\treturn old;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn value.clone();\n\t\t\t\t\t\t} else if (value instanceof Array && value.length >= 3 && value.length <= 4) {\n\t\t\t\t\t\t\t\tfor(let i = 0; i < value.length; i++){\n\t\t\t\t\t\t\t\t\t\tif (typeof value[i] !== 'number') {\n\t\t\t\t\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (!old) old = new Color();\n\t\t\t\t\t\t\t\told.r = value[0];\n\t\t\t\t\t\t\t\told.g = value[1];\n\t\t\t\t\t\t\t\told.b = value[2];\n\t\t\t\t\t\t\t\told.a = value.length === 3 ? 1 : value[3];\n\t\t\t\t\t\t\t\treturn old;\n\t\t\t\t\t\t} else if (typeof value === 'string' && /#(?:[0-9a-f]{2}){3,4}/i.test(value)) {\n\t\t\t\t\t\t\t\tif (!old) {\n\t\t\t\t\t\t\t\t\t\told = new Color();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\told.fromString(value);\n\t\t\t\t\t\t\t\treturn old;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn null;\n\t\t\t\tcase 'vec2':\n\t\t\t\tcase 'vec3':\n\t\t\t\tcase 'vec4':\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tconst len = parseInt(args.type.slice(3), 10);\n\t\t\t\t\t\t\t\tconst vecType = vecLookup[len];\n\t\t\t\t\t\t\t\tif (value instanceof vecType) {\n\t\t\t\t\t\t\t\t\t\tif (old instanceof vecType) {\n\t\t\t\t\t\t\t\t\t\t\t\told.copy(value);\n\t\t\t\t\t\t\t\t\t\t\t\treturn old;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\treturn value.clone();\n\t\t\t\t\t\t\t\t} else if (value instanceof Array && value.length === len) {\n\t\t\t\t\t\t\t\t\t\tfor(let i = 0; i < value.length; i++){\n\t\t\t\t\t\t\t\t\t\t\t\tif (typeof value[i] !== 'number') {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (!old) old = new vecType();\n\t\t\t\t\t\t\t\t\t\tfor(let i = 0; i < len; i++){\n\t\t\t\t\t\t\t\t\t\t\t\told[components[i]] = value[i];\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\treturn old;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\t\t\t\tcase 'curve':\n\t\t\t\t\t\tif (value) {\n\t\t\t\t\t\t\t\tlet curve;\n\t\t\t\t\t\t\t\tif (value instanceof Curve || value instanceof CurveSet) {\n\t\t\t\t\t\t\t\t\t\tcurve = value.clone();\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tconst CurveType = value.keys[0] instanceof Array ? CurveSet : Curve;\n\t\t\t\t\t\t\t\t\t\tcurve = new CurveType(value.keys);\n\t\t\t\t\t\t\t\t\t\tcurve.type = value.type;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn curve;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t}\n\t\treturn value;\n}\nfunction attributeToValue(app, schema, value, current) {\n\t\tif (schema.array) {\n\t\t\t\treturn value.map((item, index)=>rawToValue(app, schema, item, current ? current[index] : null));\n\t\t}\n\t\treturn rawToValue(app, schema, value, current);\n}\nfunction assignAttributesToScript(app, attributeSchemaMap, data, script) {\n\t\tif (!data) return;\n\t\tfor(const attributeName in attributeSchemaMap){\n\t\t\t\tconst attributeSchema = attributeSchemaMap[attributeName];\n\t\t\t\tconst dataToAssign = data[attributeName];\n\t\t\t\tif (dataToAssign === undefined) continue;\n\t\t\t\tscript[attributeName] = attributeToValue(app, attributeSchema, dataToAssign, script[attributeName]);\n\t\t}\n}\nclass ScriptAttributes {\n\t\tstatic{\n\t\t\t\tthis.assignAttributesToScript = assignAttributesToScript;\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.attributeToValue = attributeToValue;\n\t\t}\n\t\tconstructor(scriptType){\n\t\t\t\tthis.scriptType = scriptType;\n\t\t\t\tthis.index = {};\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.reservedNames = new Set([\n\t\t\t\t\t\t'app',\n\t\t\t\t\t\t'entity',\n\t\t\t\t\t\t'enabled',\n\t\t\t\t\t\t'_enabled',\n\t\t\t\t\t\t'_enabledOld',\n\t\t\t\t\t\t'_destroyed',\n\t\t\t\t\t\t'__attributes',\n\t\t\t\t\t\t'__attributesRaw',\n\t\t\t\t\t\t\"__scriptType\",\n\t\t\t\t\t\t'__executionOrder',\n\t\t\t\t\t\t'_callbacks',\n\t\t\t\t\t\t'_callbackActive',\n\t\t\t\t\t\t'has',\n\t\t\t\t\t\t'get',\n\t\t\t\t\t\t'on',\n\t\t\t\t\t\t'off',\n\t\t\t\t\t\t'fire',\n\t\t\t\t\t\t'once',\n\t\t\t\t\t\t'hasEvent'\n\t\t\t\t]);\n\t\t}\n\t\tadd(name, args) {\n\t\t\t\tif (this.index[name]) {\n\t\t\t\t\t\treturn;\n\t\t\t\t} else if (ScriptAttributes.reservedNames.has(name)) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.index[name] = args;\n\t\t\t\tObject.defineProperty(this.scriptType.prototype, name, {\n\t\t\t\t\t\tget: function() {\n\t\t\t\t\t\t\t\treturn this.__attributes[name];\n\t\t\t\t\t\t},\n\t\t\t\t\t\tset: function(raw) {\n\t\t\t\t\t\t\t\tconst evt = 'attr';\n\t\t\t\t\t\t\t\tconst evtName = `attr:${name}`;\n\t\t\t\t\t\t\t\tconst old = this.__attributes[name];\n\t\t\t\t\t\t\t\tlet oldCopy = old;\n\t\t\t\t\t\t\t\tif (old && args.type !== 'json' && args.type !== 'entity' && old.clone) {\n\t\t\t\t\t\t\t\t\t\tif (this.hasEvent(evt) || this.hasEvent(evtName)) {\n\t\t\t\t\t\t\t\t\t\t\t\toldCopy = old.clone();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (args.array) {\n\t\t\t\t\t\t\t\t\t\tthis.__attributes[name] = [];\n\t\t\t\t\t\t\t\t\t\tif (raw) {\n\t\t\t\t\t\t\t\t\t\t\t\tfor(let i = 0, len = raw.length; i < len; i++){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.__attributes[name].push(rawToValue(this.app, args, raw[i], old ? old[i] : null));\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis.__attributes[name] = rawToValue(this.app, args, raw, old);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.fire(evt, name, this.__attributes[name], oldCopy);\n\t\t\t\t\t\t\t\tthis.fire(evtName, this.__attributes[name], oldCopy);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\tremove(name) {\n\t\t\t\tif (!this.index[name]) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tdelete this.index[name];\n\t\t\t\tdelete this.scriptType.prototype[name];\n\t\t\t\treturn true;\n\t\t}\n\t\thas(name) {\n\t\t\t\treturn !!this.index[name];\n\t\t}\n\t\tget(name) {\n\t\t\t\treturn this.index[name] || null;\n\t\t}\n}\n\nconst SCRIPT_INITIALIZE = 'initialize';\nconst SCRIPT_POST_INITIALIZE = 'postInitialize';\nconst SCRIPT_UPDATE = 'update';\nconst SCRIPT_POST_UPDATE = 'postUpdate';\nconst SCRIPT_SWAP = 'swap';\n\nclass Script extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_ENABLE = 'enable';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_DISABLE = 'disable';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_STATE = 'state';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_DESTROY = 'destroy';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_ATTR = 'attr';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_ERROR = 'error';\n\t\t}\n\t\tconstructor(args){\n\t\t\t\tsuper();\n\t\t\t\tthis.initScript(args);\n\t\t}\n\t\tset enabled(value) {\n\t\t\t\tthis._enabled = !!value;\n\t\t\t\tif (this.enabled === this._enabledOld) return;\n\t\t\t\tthis._enabledOld = this.enabled;\n\t\t\t\tthis.fire(this.enabled ? 'enable' : 'disable');\n\t\t\t\tthis.fire('state', this.enabled);\n\t\t\t\tif (!this._initialized && this.enabled) {\n\t\t\t\t\t\tthis._initialized = true;\n\t\t\t\t\t\tthis.fire('preInitialize');\n\t\t\t\t\t\tif (this.initialize) {\n\t\t\t\t\t\t\t\tthis.entity.script._scriptMethod(this, SCRIPT_INITIALIZE);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this._initialized && !this._postInitialized && this.enabled && !this.entity.script._beingEnabled) {\n\t\t\t\t\t\tthis._postInitialized = true;\n\t\t\t\t\t\tif (this.postInitialize) {\n\t\t\t\t\t\t\t\tthis.entity.script._scriptMethod(this, SCRIPT_POST_INITIALIZE);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget enabled() {\n\t\t\t\treturn this._enabled && !this._destroyed && this.entity.script.enabled && this.entity.enabled;\n\t\t}\n\t\tinitScript(args) {\n\t\t\t\tconst script = this.constructor;\n\t\t\t\tthis.app = args.app;\n\t\t\t\tthis.entity = args.entity;\n\t\t\t\tthis._enabled = typeof args.enabled === 'boolean' ? args.enabled : true;\n\t\t\t\tthis._enabledOld = this.enabled;\n\t\t\t\tthis.__destroyed = false;\n\t\t\t\tthis.__scriptType = script;\n\t\t\t\tthis.__executionOrder = -1;\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.__name = null;\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.__getScriptName = getScriptName;\n\t\t}\n\t\tstatic get scriptName() {\n\t\t\t\treturn this.__name;\n\t\t}\n}\nconst funcNameRegex = /^\\s*function(?:\\s|\\s*\\/\\*.*\\*\\/\\s*)+([^(\\s\\/]*)\\s*/;\nfunction getScriptName(constructorFn) {\n\t\tif (typeof constructorFn !== 'function') return undefined;\n\t\tif (constructorFn.scriptName) return constructorFn.scriptName;\n\t\tif ('name' in Function.prototype) return constructorFn.name;\n\t\tif (constructorFn === Function || constructorFn === Function.prototype.constructor) return 'Function';\n\t\tconst match = `${constructorFn}`.match(funcNameRegex);\n\t\treturn match ? match[1] : undefined;\n}\n\nclass ScriptType extends Script {\n\t\tconstructor(args){\n\t\t\t\tsuper(args);\n\t\t\t\tthis.initScriptType(args);\n\t\t}\n\t\tstatic get attributes() {\n\t\t\t\tif (!this.hasOwnProperty('__attributes')) this.__attributes = new ScriptAttributes(this);\n\t\t\t\treturn this.__attributes;\n\t\t}\n\t\tinitScript(args) {\n\t\t\t\tScript.prototype.initScript.call(this, args);\n\t\t\t\tthis.__attributes = {};\n\t\t\t\tthis.__attributesRaw = args.attributes || {};\n\t\t}\n\t\tinitScriptType(args) {\n\t\t\t\tthis.initScript(args);\n\t\t}\n\t\t__initializeAttributes(force) {\n\t\t\t\tif (!force && !this.__attributesRaw) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tfor(const key in this.__scriptType.attributes.index){\n\t\t\t\t\t\tif (this.__attributesRaw && this.__attributesRaw.hasOwnProperty(key)) {\n\t\t\t\t\t\t\t\tthis[key] = this.__attributesRaw[key];\n\t\t\t\t\t\t} else if (!this.__attributes.hasOwnProperty(key)) {\n\t\t\t\t\t\t\t\tif (this.__scriptType.attributes.index[key].hasOwnProperty('default')) {\n\t\t\t\t\t\t\t\t\t\tthis[key] = this.__scriptType.attributes.index[key].default;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis[key] = null;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.__attributesRaw = null;\n\t\t}\n\t\tstatic extend(methods) {\n\t\t\t\tfor(const key in methods){\n\t\t\t\t\t\tif (!methods.hasOwnProperty(key)) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.prototype[key] = methods[key];\n\t\t\t\t}\n\t\t}\n}\n\nconst toLowerCamelCase$1 = (str)=>str[0].toLowerCase() + str.substring(1);\nclass ScriptComponent extends Component {\n\t\tstatic{\n\t\t\t\tthis.EVENT_CREATE = 'create';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_DESTROY = 'destroy';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_ENABLE = 'enable';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_DISABLE = 'disable';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_REMOVE = 'remove';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_STATE = 'state';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_MOVE = 'move';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_ERROR = 'error';\n\t\t}\n\t\tconstructor(system, entity){\n\t\t\t\tsuper(system, entity), this._attributeDataMap = new Map();\n\t\t\t\tthis._scripts = [];\n\t\t\t\tthis._updateList = new SortedLoopArray({\n\t\t\t\t\t\tsortBy: '__executionOrder'\n\t\t\t\t});\n\t\t\t\tthis._postUpdateList = new SortedLoopArray({\n\t\t\t\t\t\tsortBy: '__executionOrder'\n\t\t\t\t});\n\t\t\t\tthis._scriptsIndex = {};\n\t\t\t\tthis._destroyedScripts = [];\n\t\t\t\tthis._destroyed = false;\n\t\t\t\tthis._scriptsData = null;\n\t\t\t\tthis._oldState = true;\n\t\t\t\tthis._enabled = true;\n\t\t\t\tthis._beingEnabled = false;\n\t\t\t\tthis._isLoopingThroughScripts = false;\n\t\t\t\tthis._executionOrder = -1;\n\t\t\t\tthis.on('set_enabled', this._onSetEnabled, this);\n\t\t}\n\t\tset scripts(value) {\n\t\t\t\tthis._scriptsData = value;\n\t\t\t\tfor(const key in value){\n\t\t\t\t\t\tif (!value.hasOwnProperty(key)) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst script = this._scriptsIndex[key];\n\t\t\t\t\t\tif (script) {\n\t\t\t\t\t\t\t\tif (typeof value[key].enabled === 'boolean') {\n\t\t\t\t\t\t\t\t\t\tscript.once('preInitialize', ()=>{\n\t\t\t\t\t\t\t\t\t\t\t\tthis.initializeAttributes(script);\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tscript.enabled = !!value[key].enabled;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (typeof value[key].attributes === 'object') {\n\t\t\t\t\t\t\t\t\t\tfor(const attr in value[key].attributes){\n\t\t\t\t\t\t\t\t\t\t\t\tif (ScriptAttributes.reservedNames.has(attr)) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tif (!script.__attributes.hasOwnProperty(attr)) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst scriptType = this.system.app.scripts.get(key);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (scriptType) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tscriptType.attributes.add(attr, {});\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tscript[attr] = value[key].attributes[attr];\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconsole.log(this.order);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget scripts() {\n\t\t\t\treturn this._scripts;\n\t\t}\n\t\tset enabled(value) {\n\t\t\t\tconst oldValue = this._enabled;\n\t\t\t\tthis._enabled = value;\n\t\t\t\tthis.fire('set', 'enabled', oldValue, value);\n\t\t}\n\t\tget enabled() {\n\t\t\t\treturn this._enabled;\n\t\t}\n\t\tonEnable() {\n\t\t\t\tthis._beingEnabled = true;\n\t\t\t\tthis._checkState();\n\t\t\t\tif (!this.entity._beingEnabled) {\n\t\t\t\t\t\tthis.onPostStateChange();\n\t\t\t\t}\n\t\t\t\tthis._beingEnabled = false;\n\t\t}\n\t\tonDisable() {\n\t\t\t\tthis._checkState();\n\t\t}\n\t\tonPostStateChange() {\n\t\t\t\tconst wasLooping = this._beginLooping();\n\t\t\t\tfor(let i = 0, len = this.scripts.length; i < len; i++){\n\t\t\t\t\t\tconst script = this.scripts[i];\n\t\t\t\t\t\tif (script._initialized && !script._postInitialized && script.enabled) {\n\t\t\t\t\t\t\t\tscript._postInitialized = true;\n\t\t\t\t\t\t\t\tif (script.postInitialize) {\n\t\t\t\t\t\t\t\t\t\tthis._scriptMethod(script, SCRIPT_POST_INITIALIZE);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._endLooping(wasLooping);\n\t\t}\n\t\t_beginLooping() {\n\t\t\t\tconst looping = this._isLoopingThroughScripts;\n\t\t\t\tthis._isLoopingThroughScripts = true;\n\t\t\t\treturn looping;\n\t\t}\n\t\t_endLooping(wasLoopingBefore) {\n\t\t\t\tthis._isLoopingThroughScripts = wasLoopingBefore;\n\t\t\t\tif (!this._isLoopingThroughScripts) {\n\t\t\t\t\t\tthis._removeDestroyedScripts();\n\t\t\t\t}\n\t\t}\n\t\t_onSetEnabled(prop, old, value) {\n\t\t\t\tthis._beingEnabled = true;\n\t\t\t\tthis._checkState();\n\t\t\t\tthis._beingEnabled = false;\n\t\t}\n\t\t_checkState() {\n\t\t\t\tconst state = this.enabled && this.entity.enabled;\n\t\t\t\tif (state === this._oldState) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._oldState = state;\n\t\t\t\tthis.fire(state ? 'enable' : 'disable');\n\t\t\t\tthis.fire('state', state);\n\t\t\t\tif (state) {\n\t\t\t\t\t\tthis.system._addComponentToEnabled(this);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.system._removeComponentFromEnabled(this);\n\t\t\t\t}\n\t\t\t\tconst wasLooping = this._beginLooping();\n\t\t\t\tfor(let i = 0, len = this.scripts.length; i < len; i++){\n\t\t\t\t\t\tconst script = this.scripts[i];\n\t\t\t\t\t\tscript.once('preInitialize', ()=>{\n\t\t\t\t\t\t\t\tthis.initializeAttributes(script);\n\t\t\t\t\t\t});\n\t\t\t\t\t\tscript.enabled = script._enabled;\n\t\t\t\t}\n\t\t\t\tthis._endLooping(wasLooping);\n\t\t}\n\t\t_onBeforeRemove() {\n\t\t\t\tthis.fire('remove');\n\t\t\t\tconst wasLooping = this._beginLooping();\n\t\t\t\tfor(let i = 0; i < this.scripts.length; i++){\n\t\t\t\t\t\tconst script = this.scripts[i];\n\t\t\t\t\t\tif (!script) continue;\n\t\t\t\t\t\tthis.destroy(script.__scriptType.__name);\n\t\t\t\t}\n\t\t\t\tthis._endLooping(wasLooping);\n\t\t}\n\t\t_removeDestroyedScripts() {\n\t\t\t\tconst len = this._destroyedScripts.length;\n\t\t\t\tif (!len) return;\n\t\t\t\tfor(let i = 0; i < len; i++){\n\t\t\t\t\t\tconst script = this._destroyedScripts[i];\n\t\t\t\t\t\tthis._removeScriptInstance(script);\n\t\t\t\t}\n\t\t\t\tthis._destroyedScripts.length = 0;\n\t\t\t\tthis._resetExecutionOrder(0, this._scripts.length);\n\t\t}\n\t\t_onInitializeAttributes() {\n\t\t\t\tfor(let i = 0, len = this.scripts.length; i < len; i++){\n\t\t\t\t\t\tconst script = this.scripts[i];\n\t\t\t\t\t\tthis.initializeAttributes(script);\n\t\t\t\t}\n\t\t}\n\t\tinitializeAttributes(script) {\n\t\t\t\tif (script instanceof ScriptType) {\n\t\t\t\t\t\tscript.__initializeAttributes();\n\t\t\t\t} else {\n\t\t\t\t\t\tconst name = script.__scriptType.__name;\n\t\t\t\t\t\tconst data = this._attributeDataMap.get(name);\n\t\t\t\t\t\tif (!data) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst schema = this.system.app.scripts?.getSchema(name);\n\t\t\t\t\t\tassignAttributesToScript(this.system.app, schema.attributes, data, script);\n\t\t\t\t}\n\t\t}\n\t\t_scriptMethod(script, method, arg) {\n\t\t\t\tscript[method](arg);\n\t\t}\n\t\t_onInitialize() {\n\t\t\t\tconst scripts = this._scripts;\n\t\t\t\tconst wasLooping = this._beginLooping();\n\t\t\t\tfor(let i = 0, len = scripts.length; i < len; i++){\n\t\t\t\t\t\tconst script = scripts[i];\n\t\t\t\t\t\tif (!script._initialized && script.enabled) {\n\t\t\t\t\t\t\t\tscript._initialized = true;\n\t\t\t\t\t\t\t\tif (script.initialize) {\n\t\t\t\t\t\t\t\t\t\tthis._scriptMethod(script, SCRIPT_INITIALIZE);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._endLooping(wasLooping);\n\t\t}\n\t\t_onPostInitialize() {\n\t\t\t\tthis.onPostStateChange();\n\t\t}\n\t\t_onUpdate(dt) {\n\t\t\t\tconst list = this._updateList;\n\t\t\t\tif (!list.length) return;\n\t\t\t\tconst wasLooping = this._beginLooping();\n\t\t\t\tfor(list.loopIndex = 0; list.loopIndex < list.length; list.loopIndex++){\n\t\t\t\t\t\tconst script = list.items[list.loopIndex];\n\t\t\t\t\t\tif (script.enabled) {\n\t\t\t\t\t\t\t\tthis._scriptMethod(script, SCRIPT_UPDATE, dt);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._endLooping(wasLooping);\n\t\t}\n\t\t_onPostUpdate(dt) {\n\t\t\t\tconst list = this._postUpdateList;\n\t\t\t\tif (!list.length) return;\n\t\t\t\tconst wasLooping = this._beginLooping();\n\t\t\t\tfor(list.loopIndex = 0; list.loopIndex < list.length; list.loopIndex++){\n\t\t\t\t\t\tconst script = list.items[list.loopIndex];\n\t\t\t\t\t\tif (script.enabled) {\n\t\t\t\t\t\t\t\tthis._scriptMethod(script, SCRIPT_POST_UPDATE, dt);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._endLooping(wasLooping);\n\t\t}\n\t\t_insertScriptInstance(scriptInstance, index, scriptsLength) {\n\t\t\t\tif (index === -1) {\n\t\t\t\t\t\tthis._scripts.push(scriptInstance);\n\t\t\t\t\t\tscriptInstance.__executionOrder = scriptsLength;\n\t\t\t\t\t\tif (scriptInstance.update) {\n\t\t\t\t\t\t\t\tthis._updateList.append(scriptInstance);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (scriptInstance.postUpdate) {\n\t\t\t\t\t\t\t\tthis._postUpdateList.append(scriptInstance);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._scripts.splice(index, 0, scriptInstance);\n\t\t\t\t\t\tscriptInstance.__executionOrder = index;\n\t\t\t\t\t\tthis._resetExecutionOrder(index + 1, scriptsLength + 1);\n\t\t\t\t\t\tif (scriptInstance.update) {\n\t\t\t\t\t\t\t\tthis._updateList.insert(scriptInstance);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (scriptInstance.postUpdate) {\n\t\t\t\t\t\t\t\tthis._postUpdateList.insert(scriptInstance);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_removeScriptInstance(scriptInstance) {\n\t\t\t\tconst idx = this._scripts.indexOf(scriptInstance);\n\t\t\t\tif (idx === -1) return idx;\n\t\t\t\tthis._scripts.splice(idx, 1);\n\t\t\t\tif (scriptInstance.update) {\n\t\t\t\t\t\tthis._updateList.remove(scriptInstance);\n\t\t\t\t}\n\t\t\t\tif (scriptInstance.postUpdate) {\n\t\t\t\t\t\tthis._postUpdateList.remove(scriptInstance);\n\t\t\t\t}\n\t\t\t\treturn idx;\n\t\t}\n\t\t_resetExecutionOrder(startIndex, scriptsLength) {\n\t\t\t\tfor(let i = startIndex; i < scriptsLength; i++){\n\t\t\t\t\t\tthis._scripts[i].__executionOrder = i;\n\t\t\t\t}\n\t\t}\n\t\t_resolveEntityScriptAttribute(attribute, attributeName, oldValue, useGuid, newAttributes, duplicatedIdsMap) {\n\t\t\t\tif (attribute.array) {\n\t\t\t\t\t\tconst len = oldValue.length;\n\t\t\t\t\t\tif (!len) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst newGuidArray = oldValue.slice();\n\t\t\t\t\t\tfor(let i = 0; i < len; i++){\n\t\t\t\t\t\t\t\tconst guid = newGuidArray[i] instanceof Entity ? newGuidArray[i].getGuid() : newGuidArray[i];\n\t\t\t\t\t\t\t\tif (duplicatedIdsMap[guid]) {\n\t\t\t\t\t\t\t\t\t\tnewGuidArray[i] = useGuid ? duplicatedIdsMap[guid].getGuid() : duplicatedIdsMap[guid];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnewAttributes[attributeName] = newGuidArray;\n\t\t\t\t} else {\n\t\t\t\t\t\tif (oldValue instanceof Entity) {\n\t\t\t\t\t\t\t\toldValue = oldValue.getGuid();\n\t\t\t\t\t\t} else if (typeof oldValue !== 'string') {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (duplicatedIdsMap[oldValue]) {\n\t\t\t\t\t\t\t\tnewAttributes[attributeName] = duplicatedIdsMap[oldValue];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\thas(nameOrType) {\n\t\t\t\tif (typeof nameOrType === 'string') {\n\t\t\t\t\t\treturn !!this._scriptsIndex[nameOrType];\n\t\t\t\t}\n\t\t\t\tif (!nameOrType) return false;\n\t\t\t\tconst scriptType = nameOrType;\n\t\t\t\tconst scriptName = scriptType.__name;\n\t\t\t\tconst scriptData = this._scriptsIndex[scriptName];\n\t\t\t\tconst scriptInstance = scriptData && scriptData.instance;\n\t\t\t\treturn scriptInstance instanceof scriptType;\n\t\t}\n\t\tget(nameOrType) {\n\t\t\t\tif (typeof nameOrType === 'string') {\n\t\t\t\t\t\tconst data = this._scriptsIndex[nameOrType];\n\t\t\t\t\t\treturn data ? data.instance : null;\n\t\t\t\t}\n\t\t\t\tif (!nameOrType) return null;\n\t\t\t\tconst scriptType = nameOrType;\n\t\t\t\tconst scriptName = scriptType.__name;\n\t\t\t\tconst scriptData = this._scriptsIndex[scriptName];\n\t\t\t\tconst scriptInstance = scriptData && scriptData.instance;\n\t\t\t\treturn scriptInstance instanceof scriptType ? scriptInstance : null;\n\t\t}\n\t\tcreate(nameOrType, args = {}) {\n\t\t\t\tconst self = this;\n\t\t\t\tlet scriptType = nameOrType;\n\t\t\t\tlet scriptName = nameOrType;\n\t\t\t\tif (typeof scriptType === 'string') {\n\t\t\t\t\t\tscriptType = this.system.app.scripts.get(scriptType);\n\t\t\t\t} else if (scriptType) {\n\t\t\t\t\t\tconst inferredScriptName = getScriptName(scriptType);\n\t\t\t\t\t\tconst lowerInferredScriptName = toLowerCamelCase$1(inferredScriptName);\n\t\t\t\t\t\tif (!(scriptType.prototype instanceof ScriptType) && !scriptType.scriptName) ;\n\t\t\t\t\t\tscriptType.__name ??= scriptType.scriptName ?? lowerInferredScriptName;\n\t\t\t\t\t\tscriptName = scriptType.__name;\n\t\t\t\t}\n\t\t\t\tif (scriptType) {\n\t\t\t\t\t\tif (!this._scriptsIndex[scriptName] || !this._scriptsIndex[scriptName].instance) {\n\t\t\t\t\t\t\t\tconst scriptInstance = new scriptType({\n\t\t\t\t\t\t\t\t\t\tapp: this.system.app,\n\t\t\t\t\t\t\t\t\t\tentity: this.entity,\n\t\t\t\t\t\t\t\t\t\tenabled: args.hasOwnProperty('enabled') ? args.enabled : true,\n\t\t\t\t\t\t\t\t\t\tattributes: args.attributes || {}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tif (args.properties && typeof args.properties === 'object') {\n\t\t\t\t\t\t\t\t\t\tObject.assign(scriptInstance, args.properties);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (!(scriptInstance instanceof ScriptType) && args.attributes) {\n\t\t\t\t\t\t\t\t\t\tthis._attributeDataMap.set(scriptName, {\n\t\t\t\t\t\t\t\t\t\t\t\t...args.attributes\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst len = this._scripts.length;\n\t\t\t\t\t\t\t\tlet ind = -1;\n\t\t\t\t\t\t\t\tif (typeof args.ind === 'number' && args.ind !== -1 && len > args.ind) {\n\t\t\t\t\t\t\t\t\t\tind = args.ind;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis._insertScriptInstance(scriptInstance, ind, len);\n\t\t\t\t\t\t\t\tthis._scriptsIndex[scriptName] = {\n\t\t\t\t\t\t\t\t\t\tinstance: scriptInstance,\n\t\t\t\t\t\t\t\t\t\tonSwap: function() {\n\t\t\t\t\t\t\t\t\t\t\t\tself.swap(scriptName);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tthis[scriptName] = scriptInstance;\n\t\t\t\t\t\t\t\tif (!args.preloading) {\n\t\t\t\t\t\t\t\t\t\tthis.initializeAttributes(scriptInstance);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.fire('create', scriptName, scriptInstance);\n\t\t\t\t\t\t\t\tthis.fire(`create:${scriptName}`, scriptInstance);\n\t\t\t\t\t\t\t\tthis.system.app.scripts.on(`swap:${scriptName}`, this._scriptsIndex[scriptName].onSwap);\n\t\t\t\t\t\t\t\tif (!args.preloading) {\n\t\t\t\t\t\t\t\t\t\tif (scriptInstance.enabled && !scriptInstance._initialized) {\n\t\t\t\t\t\t\t\t\t\t\t\tscriptInstance._initialized = true;\n\t\t\t\t\t\t\t\t\t\t\t\tif (scriptInstance.initialize) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis._scriptMethod(scriptInstance, SCRIPT_INITIALIZE);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (scriptInstance.enabled && !scriptInstance._postInitialized) {\n\t\t\t\t\t\t\t\t\t\t\t\tscriptInstance._postInitialized = true;\n\t\t\t\t\t\t\t\t\t\t\t\tif (scriptInstance.postInitialize) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis._scriptMethod(scriptInstance, SCRIPT_POST_INITIALIZE);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn scriptInstance;\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._scriptsIndex[scriptName] = {\n\t\t\t\t\t\t\t\tawaiting: true,\n\t\t\t\t\t\t\t\tind: this._scripts.length\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tdestroy(nameOrType) {\n\t\t\t\tlet scriptName = nameOrType;\n\t\t\t\tlet scriptType = nameOrType;\n\t\t\t\tif (typeof scriptType === 'string') {\n\t\t\t\t\t\tscriptType = this.system.app.scripts.get(scriptType);\n\t\t\t\t} else if (scriptType) {\n\t\t\t\t\t\tscriptName = scriptType.__name;\n\t\t\t\t}\n\t\t\t\tconst scriptData = this._scriptsIndex[scriptName];\n\t\t\t\tdelete this._scriptsIndex[scriptName];\n\t\t\t\tif (!scriptData) return false;\n\t\t\t\tthis._attributeDataMap.delete(scriptName);\n\t\t\t\tconst scriptInstance = scriptData.instance;\n\t\t\t\tif (scriptInstance && !scriptInstance._destroyed) {\n\t\t\t\t\t\tscriptInstance.enabled = false;\n\t\t\t\t\t\tscriptInstance._destroyed = true;\n\t\t\t\t\t\tif (!this._isLoopingThroughScripts) {\n\t\t\t\t\t\t\t\tconst ind = this._removeScriptInstance(scriptInstance);\n\t\t\t\t\t\t\t\tif (ind >= 0) {\n\t\t\t\t\t\t\t\t\t\tthis._resetExecutionOrder(ind, this._scripts.length);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._destroyedScripts.push(scriptInstance);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.system.app.scripts.off(`swap:${scriptName}`, scriptData.onSwap);\n\t\t\t\tdelete this[scriptName];\n\t\t\t\tthis.fire('destroy', scriptName, scriptInstance || null);\n\t\t\t\tthis.fire(`destroy:${scriptName}`, scriptInstance || null);\n\t\t\t\tif (scriptInstance) {\n\t\t\t\t\t\tscriptInstance.fire('destroy');\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t}\n\t\tswap(nameOrType) {\n\t\t\t\tlet scriptName = nameOrType;\n\t\t\t\tlet scriptType = nameOrType;\n\t\t\t\tif (typeof scriptType === 'string') {\n\t\t\t\t\t\tscriptType = this.system.app.scripts.get(scriptType);\n\t\t\t\t} else if (scriptType) {\n\t\t\t\t\t\tscriptName = scriptType.__name;\n\t\t\t\t}\n\t\t\t\tconst old = this._scriptsIndex[scriptName];\n\t\t\t\tif (!old || !old.instance) return false;\n\t\t\t\tconst scriptInstanceOld = old.instance;\n\t\t\t\tconst ind = this._scripts.indexOf(scriptInstanceOld);\n\t\t\t\tconst scriptInstance = new scriptType({\n\t\t\t\t\t\tapp: this.system.app,\n\t\t\t\t\t\tentity: this.entity,\n\t\t\t\t\t\tenabled: scriptInstanceOld.enabled,\n\t\t\t\t\t\tattributes: scriptInstanceOld.__attributes\n\t\t\t\t});\n\t\t\t\tif (!scriptInstance.swap) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tthis.initializeAttributes(scriptInstance);\n\t\t\t\tthis._scripts[ind] = scriptInstance;\n\t\t\t\tthis._scriptsIndex[scriptName].instance = scriptInstance;\n\t\t\t\tthis[scriptName] = scriptInstance;\n\t\t\t\tscriptInstance.__executionOrder = ind;\n\t\t\t\tif (scriptInstanceOld.update) {\n\t\t\t\t\t\tthis._updateList.remove(scriptInstanceOld);\n\t\t\t\t}\n\t\t\t\tif (scriptInstanceOld.postUpdate) {\n\t\t\t\t\t\tthis._postUpdateList.remove(scriptInstanceOld);\n\t\t\t\t}\n\t\t\t\tif (scriptInstance.update) {\n\t\t\t\t\t\tthis._updateList.insert(scriptInstance);\n\t\t\t\t}\n\t\t\t\tif (scriptInstance.postUpdate) {\n\t\t\t\t\t\tthis._postUpdateList.insert(scriptInstance);\n\t\t\t\t}\n\t\t\t\tthis._scriptMethod(scriptInstance, SCRIPT_SWAP, scriptInstanceOld);\n\t\t\t\tthis.fire('swap', scriptName, scriptInstance);\n\t\t\t\tthis.fire(`swap:${scriptName}`, scriptInstance);\n\t\t\t\treturn true;\n\t\t}\n\t\tresolveDuplicatedEntityReferenceProperties(oldScriptComponent, duplicatedIdsMap) {\n\t\t\t\tconst newScriptComponent = this.entity.script;\n\t\t\t\tfor(const scriptName in oldScriptComponent._scriptsIndex){\n\t\t\t\t\t\tconst scriptType = this.system.app.scripts.get(scriptName);\n\t\t\t\t\t\tif (!scriptType) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst script = oldScriptComponent._scriptsIndex[scriptName];\n\t\t\t\t\t\tif (!script || !script.instance) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst newAttributesRaw = newScriptComponent[scriptName].__attributesRaw ?? newScriptComponent._attributeDataMap.get(scriptName);\n\t\t\t\t\t\tconst newAttributes = newScriptComponent[scriptName].__attributes;\n\t\t\t\t\t\tif (!newAttributesRaw && !newAttributes) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst useGuid = !!newAttributesRaw;\n\t\t\t\t\t\tconst oldAttributes = script.instance.__attributes ?? newScriptComponent._attributeDataMap.get(scriptName);\n\t\t\t\t\t\tfor(const attributeName in oldAttributes){\n\t\t\t\t\t\t\t\tif (!oldAttributes[attributeName]) {\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst attribute = scriptType.attributes?.get(attributeName) ?? this.system.app.scripts.getSchema(scriptName)?.attributes?.[attributeName];\n\t\t\t\t\t\t\t\tif (!attribute) {\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (attribute.type === 'entity') {\n\t\t\t\t\t\t\t\t\t\tthis._resolveEntityScriptAttribute(attribute, attributeName, oldAttributes[attributeName], useGuid, newAttributesRaw || newAttributes, duplicatedIdsMap);\n\t\t\t\t\t\t\t\t} else if (attribute.type === 'json' && Array.isArray(attribute.schema)) {\n\t\t\t\t\t\t\t\t\t\tconst oldValue = oldAttributes[attributeName];\n\t\t\t\t\t\t\t\t\t\tconst newJsonValue = newAttributesRaw ? newAttributesRaw[attributeName] : newAttributes[attributeName];\n\t\t\t\t\t\t\t\t\t\tfor(let i = 0; i < attribute.schema.length; i++){\n\t\t\t\t\t\t\t\t\t\t\t\tconst field = attribute.schema[i];\n\t\t\t\t\t\t\t\t\t\t\t\tif (field.type !== 'entity') {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tif (attribute.array) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor(let j = 0; j < oldValue.length; j++){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis._resolveEntityScriptAttribute(field, field.name, oldValue[j][field.name], useGuid, newJsonValue[j], duplicatedIdsMap);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis._resolveEntityScriptAttribute(field, field.name, oldValue[field.name], useGuid, newJsonValue, duplicatedIdsMap);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tmove(nameOrType, ind) {\n\t\t\t\tconst len = this._scripts.length;\n\t\t\t\tif (ind >= len || ind < 0) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tlet scriptType = nameOrType;\n\t\t\t\tlet scriptName = nameOrType;\n\t\t\t\tif (typeof scriptName !== 'string') {\n\t\t\t\t\t\tscriptName = nameOrType.__name;\n\t\t\t\t} else {\n\t\t\t\t\t\tscriptType = null;\n\t\t\t\t}\n\t\t\t\tconst scriptData = this._scriptsIndex[scriptName];\n\t\t\t\tif (!scriptData || !scriptData.instance) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tconst scriptInstance = scriptData.instance;\n\t\t\t\tif (scriptType && !(scriptInstance instanceof scriptType)) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tconst indOld = this._scripts.indexOf(scriptInstance);\n\t\t\t\tif (indOld === -1 || indOld === ind) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tthis._scripts.splice(ind, 0, this._scripts.splice(indOld, 1)[0]);\n\t\t\t\tthis._resetExecutionOrder(0, len);\n\t\t\t\tthis._updateList.sort();\n\t\t\t\tthis._postUpdateList.sort();\n\t\t\t\tthis.fire('move', scriptName, scriptInstance, ind, indOld);\n\t\t\t\tthis.fire(`move:${scriptName}`, scriptInstance, ind, indOld);\n\t\t\t\treturn true;\n\t\t}\n}\n\nclass ScriptComponentData {\n\t\tconstructor(){\n\t\t\t\tthis.enabled = true;\n\t\t}\n}\n\nconst METHOD_INITIALIZE_ATTRIBUTES = '_onInitializeAttributes';\nconst METHOD_INITIALIZE = '_onInitialize';\nconst METHOD_POST_INITIALIZE = '_onPostInitialize';\nconst METHOD_UPDATE = '_onUpdate';\nconst METHOD_POST_UPDATE = '_onPostUpdate';\nlet executionOrderCounter = 0;\nclass ScriptComponentSystem extends ComponentSystem {\n\t\tconstructor(app){\n\t\t\t\tsuper(app);\n\t\t\t\tthis.id = \"script\";\n\t\t\t\tthis.ComponentType = ScriptComponent;\n\t\t\t\tthis.DataType = ScriptComponentData;\n\t\t\t\tthis._components = new SortedLoopArray({\n\t\t\t\t\t\tsortBy: '_executionOrder'\n\t\t\t\t});\n\t\t\t\tthis._enabledComponents = new SortedLoopArray({\n\t\t\t\t\t\tsortBy: '_executionOrder'\n\t\t\t\t});\n\t\t\t\tthis.preloading = true;\n\t\t\t\tthis.on('beforeremove', this._onBeforeRemove, this);\n\t\t\t\tthis.app.systems.on('initialize', this._onInitialize, this);\n\t\t\t\tthis.app.systems.on('postInitialize', this._onPostInitialize, this);\n\t\t\t\tthis.app.systems.on('update', this._onUpdate, this);\n\t\t\t\tthis.app.systems.on('postUpdate', this._onPostUpdate, this);\n\t\t}\n\t\tinitializeComponentData(component, data) {\n\t\t\t\tcomponent._executionOrder = executionOrderCounter++;\n\t\t\t\tthis._components.append(component);\n\t\t\t\tif (executionOrderCounter > Number.MAX_SAFE_INTEGER) {\n\t\t\t\t\t\tthis._resetExecutionOrder();\n\t\t\t\t}\n\t\t\t\tcomponent.enabled = data.hasOwnProperty('enabled') ? !!data.enabled : true;\n\t\t\t\tif (component.enabled && component.entity.enabled) {\n\t\t\t\t\t\tthis._enabledComponents.append(component);\n\t\t\t\t}\n\t\t\t\tif (data.hasOwnProperty('order') && data.hasOwnProperty(\"scripts\")) {\n\t\t\t\t\t\tcomponent._scriptsData = data.scripts;\n\t\t\t\t\t\tfor(let i = 0; i < data.order.length; i++){\n\t\t\t\t\t\t\t\tcomponent.create(data.order[i], {\n\t\t\t\t\t\t\t\t\t\tenabled: data.scripts[data.order[i]].enabled,\n\t\t\t\t\t\t\t\t\t\tattributes: data.scripts[data.order[i]].attributes,\n\t\t\t\t\t\t\t\t\t\tpreloading: this.preloading\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tcloneComponent(entity, clone) {\n\t\t\t\tconst order = [];\n\t\t\t\tconst scripts = {};\n\t\t\t\tfor(let i = 0; i < entity.script._scripts.length; i++){\n\t\t\t\t\t\tconst scriptInstance = entity.script._scripts[i];\n\t\t\t\t\t\tconst scriptName = scriptInstance.__scriptType.__name;\n\t\t\t\t\t\torder.push(scriptName);\n\t\t\t\t\t\tconst attributes = entity.script._attributeDataMap?.get(scriptName) || {};\n\t\t\t\t\t\tfor(const key in scriptInstance.__attributes){\n\t\t\t\t\t\t\t\tattributes[key] = scriptInstance.__attributes[key];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tscripts[scriptName] = {\n\t\t\t\t\t\t\t\tenabled: scriptInstance._enabled,\n\t\t\t\t\t\t\t\tattributes: attributes\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tfor(const key in entity.script._scriptsIndex){\n\t\t\t\t\t\tif (key.awaiting) {\n\t\t\t\t\t\t\t\torder.splice(key.ind, 0, key);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst data = {\n\t\t\t\t\t\tenabled: entity.script.enabled,\n\t\t\t\t\t\torder: order,\n\t\t\t\t\t\tscripts: scripts\n\t\t\t\t};\n\t\t\t\treturn this.addComponent(clone, data);\n\t\t}\n\t\t_resetExecutionOrder() {\n\t\t\t\texecutionOrderCounter = 0;\n\t\t\t\tfor(let i = 0, len = this._components.length; i < len; i++){\n\t\t\t\t\t\tthis._components.items[i]._executionOrder = executionOrderCounter++;\n\t\t\t\t}\n\t\t}\n\t\t_callComponentMethod(components, name, dt) {\n\t\t\t\tfor(components.loopIndex = 0; components.loopIndex < components.length; components.loopIndex++){\n\t\t\t\t\t\tcomponents.items[components.loopIndex][name](dt);\n\t\t\t\t}\n\t\t}\n\t\t_onInitialize() {\n\t\t\t\tthis.preloading = false;\n\t\t\t\tthis._callComponentMethod(this._components, METHOD_INITIALIZE_ATTRIBUTES);\n\t\t\t\tthis._callComponentMethod(this._enabledComponents, METHOD_INITIALIZE);\n\t\t}\n\t\t_onPostInitialize() {\n\t\t\t\tthis._callComponentMethod(this._enabledComponents, METHOD_POST_INITIALIZE);\n\t\t}\n\t\t_onUpdate(dt) {\n\t\t\t\tthis._callComponentMethod(this._enabledComponents, METHOD_UPDATE, dt);\n\t\t}\n\t\t_onPostUpdate(dt) {\n\t\t\t\tthis._callComponentMethod(this._enabledComponents, METHOD_POST_UPDATE, dt);\n\t\t}\n\t\t_addComponentToEnabled(component) {\n\t\t\t\tthis._enabledComponents.insert(component);\n\t\t}\n\t\t_removeComponentFromEnabled(component) {\n\t\t\t\tthis._enabledComponents.remove(component);\n\t\t}\n\t\t_onBeforeRemove(entity, component) {\n\t\t\t\tconst ind = this._components.items.indexOf(component);\n\t\t\t\tif (ind >= 0) {\n\t\t\t\t\t\tcomponent._onBeforeRemove();\n\t\t\t\t}\n\t\t\t\tthis._removeComponentFromEnabled(component);\n\t\t\t\tthis._components.remove(component);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tsuper.destroy();\n\t\t\t\tthis.app.systems.off('initialize', this._onInitialize, this);\n\t\t\t\tthis.app.systems.off('postInitialize', this._onPostInitialize, this);\n\t\t\t\tthis.app.systems.off('update', this._onUpdate, this);\n\t\t\t\tthis.app.systems.off('postUpdate', this._onPostUpdate, this);\n\t\t}\n}\n\nvar gsplatIntervalTextureGLSL = `\nprecision highp usampler2D;\nuniform usampler2D uIntervalsTexture;\nuniform int uNumIntervals;\nuniform int uTextureWidth;\nuniform int uActiveSplats;\nivec2 getCoordFromIndex(int index, int textureWidth) {\n\treturn ivec2(index % textureWidth, index / textureWidth);\n}\nvoid main() {\n\tivec2 coord = ivec2(gl_FragCoord.xy);\n\tint targetIndex = coord.y * uTextureWidth + coord.x;\n\t\n\tif (targetIndex >= uActiveSplats) {\n\t\tgl_FragColor = 0u;\n\t\treturn;\n\t}\n\t\n\tint left = 0;\n\tint right = uNumIntervals - 1;\n\tint intervalIndex = 0;\n\t\n\twhile (left <= right) {\n\t\tint mid = (left + right) / 2;\n\t\t\n\t\tint textureWidth = textureSize(uIntervalsTexture, 0).x;\n\t\tivec2 intervalCoord = getCoordFromIndex(mid, textureWidth);\n\t\tuvec2 intervalData = texelFetch(uIntervalsTexture, intervalCoord, 0).rg;\n\t\t\n\t\tuint accumulatedSum = intervalData.g;\n\t\t\n\t\tif (uint(targetIndex) < accumulatedSum) {\n\t\t\tintervalIndex = mid;\n\t\t\tright = mid - 1;\n\t\t} else {\n\t\t\tleft = mid + 1;\n\t\t}\n\t}\n\t\n\tint textureWidth = textureSize(uIntervalsTexture, 0).x;\n\tivec2 intervalCoord = getCoordFromIndex(intervalIndex, textureWidth);\n\tuvec2 intervalData = texelFetch(uIntervalsTexture, intervalCoord, 0).rg;\n\t\n\tuint intervalStart = intervalData.r;\n\tuint currentAccSum = intervalData.g;\n\t\n\tuint prevAccSum = 0u;\n\tif (intervalIndex > 0) {\n\t\tivec2 prevCoord = getCoordFromIndex(intervalIndex - 1, textureWidth);\n\t\tprevAccSum = texelFetch(uIntervalsTexture, prevCoord, 0).g;\n\t}\n\t\n\tuint offsetInInterval = uint(targetIndex) - prevAccSum;\n\tuint originalIndex = intervalStart + offsetInInterval;\n\t\n\tgl_FragColor = originalIndex;\n}\n`;\n\nvar gsplatIntervalTextureWGSL = `\nvar uIntervalsTexture: texture_2d<u32>;\nuniform uNumIntervals: i32;\nuniform uTextureWidth: i32;\nuniform uActiveSplats: i32;\nfn getCoordFromIndex(index: i32, textureWidth: i32) -> vec2i {\n\treturn vec2i(index % textureWidth, index / textureWidth);\n}\n@fragment\nfn fragmentMain(input: FragmentInput) -> FragmentOutput {\n\tvar output: FragmentOutput;\n\t\n\tlet coord = vec2i(i32(input.position.x), i32(input.position.y));\n\tlet targetIndex = coord.y * uniform.uTextureWidth + coord.x;\n\t\n\tif (targetIndex >= uniform.uActiveSplats) {\n\t\toutput.color = 0u;\n\t\treturn output;\n\t}\n\t\n\tvar left = 0i;\n\tvar right = uniform.uNumIntervals - 1;\n\tvar intervalIndex = 0i;\n\t\n\twhile (left <= right) {\n\t\tlet mid = (left + right) / 2;\n\t\t\n\t\tlet textureWidth = i32(textureDimensions(uIntervalsTexture, 0).x);\n\t\tlet intervalCoord = getCoordFromIndex(mid, textureWidth);\n\t\tlet intervalData = textureLoad(uIntervalsTexture, intervalCoord, 0).rg;\n\t\t\n\t\tlet accumulatedSum = intervalData.g;\n\t\t\n\t\tif (u32(targetIndex) < accumulatedSum) {\n\t\t\tintervalIndex = mid;\n\t\t\tright = mid - 1;\n\t\t} else {\n\t\t\tleft = mid + 1;\n\t\t}\n\t}\n\t\n\tlet textureWidth = i32(textureDimensions(uIntervalsTexture, 0).x);\n\tlet intervalCoord = getCoordFromIndex(intervalIndex, textureWidth);\n\tlet intervalData = textureLoad(uIntervalsTexture, intervalCoord, 0).rg;\n\t\n\tlet intervalStart = intervalData.r;\n\tlet currentAccSum = intervalData.g;\n\t\n\tvar prevAccSum = 0u;\n\tif (intervalIndex > 0) {\n\t\tlet prevCoord = getCoordFromIndex(intervalIndex - 1, textureWidth);\n\t\tprevAccSum = textureLoad(uIntervalsTexture, prevCoord, 0).g;\n\t}\n\t\n\tlet offsetInInterval = u32(targetIndex) - prevAccSum;\n\tlet originalIndex = intervalStart + offsetInInterval;\n\t\n\toutput.color = originalIndex;\n\treturn output;\n}\n`;\n\nclass GSplatIntervalTexture {\n\t\tconstructor(device){\n\t\t\t\tthis.texture = null;\n\t\t\t\tthis.rt = null;\n\t\t\t\tthis.intervalsDataTexture = null;\n\t\t\t\tthis.shader = null;\n\t\t\t\tthis.device = device;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.texture?.destroy();\n\t\t\t\tthis.texture = null;\n\t\t\t\tthis.rt?.destroy();\n\t\t\t\tthis.rt = null;\n\t\t\t\tthis.intervalsDataTexture?.destroy();\n\t\t\t\tthis.intervalsDataTexture = null;\n\t\t\t\tthis.shader = null;\n\t\t}\n\t\tgetShader() {\n\t\t\t\tif (!this.shader) {\n\t\t\t\t\t\tthis.shader = ShaderUtils.createShader(this.device, {\n\t\t\t\t\t\t\t\tuniqueName: 'GSplatIntervalsShader',\n\t\t\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\t\t\taPosition: SEMANTIC_POSITION\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tvertexChunk: 'quadVS',\n\t\t\t\t\t\t\t\tfragmentGLSL: gsplatIntervalTextureGLSL,\n\t\t\t\t\t\t\t\tfragmentWGSL: gsplatIntervalTextureWGSL,\n\t\t\t\t\t\t\t\tfragmentOutputTypes: [\n\t\t\t\t\t\t\t\t\t\t'uint'\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn this.shader;\n\t\t}\n\t\tcreateTexture(name, format, width, height) {\n\t\t\t\treturn new Texture(this.device, {\n\t\t\t\t\t\tname: name,\n\t\t\t\t\t\twidth: width,\n\t\t\t\t\t\theight: height,\n\t\t\t\t\t\tformat: format,\n\t\t\t\t\t\tcubemap: false,\n\t\t\t\t\t\tmipmaps: false,\n\t\t\t\t\t\tminFilter: FILTER_NEAREST,\n\t\t\t\t\t\tmagFilter: FILTER_NEAREST,\n\t\t\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE\n\t\t\t\t});\n\t\t}\n\t\tupdate(intervals, totalIntervalSplats) {\n\t\t\t\tconst maxTextureSize = this.device.maxTextureSize;\n\t\t\t\tlet textureWidth = Math.ceil(Math.sqrt(totalIntervalSplats));\n\t\t\t\ttextureWidth = Math.min(textureWidth, maxTextureSize);\n\t\t\t\tconst textureHeight = Math.ceil(totalIntervalSplats / textureWidth);\n\t\t\t\tthis.texture = this.createTexture('intervalsTexture', PIXELFORMAT_R32U, textureWidth, textureHeight);\n\t\t\t\tthis.rt = new RenderTarget({\n\t\t\t\t\t\tcolorBuffer: this.texture,\n\t\t\t\t\t\tdepth: false\n\t\t\t\t});\n\t\t\t\tconst numIntervals = intervals.length / 2;\n\t\t\t\tconst dataTextureSize = Math.ceil(Math.sqrt(numIntervals));\n\t\t\t\tthis.intervalsDataTexture = this.createTexture('intervalsData', PIXELFORMAT_RG32U, dataTextureSize, dataTextureSize);\n\t\t\t\tconst intervalsData = this.intervalsDataTexture.lock();\n\t\t\t\tlet runningSum = 0;\n\t\t\t\tfor(let i = 0; i < numIntervals; i++){\n\t\t\t\t\t\tconst start = intervals[i * 2];\n\t\t\t\t\t\tconst end = intervals[i * 2 + 1];\n\t\t\t\t\t\tconst intervalSize = end - start;\n\t\t\t\t\t\trunningSum += intervalSize;\n\t\t\t\t\t\tintervalsData[i * 2] = start;\n\t\t\t\t\t\tintervalsData[i * 2 + 1] = runningSum;\n\t\t\t\t}\n\t\t\t\tthis.intervalsDataTexture.unlock();\n\t\t\t\tconst scope = this.device.scope;\n\t\t\t\tscope.resolve('uIntervalsTexture').setValue(this.intervalsDataTexture);\n\t\t\t\tscope.resolve('uNumIntervals').setValue(numIntervals);\n\t\t\t\tscope.resolve('uTextureWidth').setValue(textureWidth);\n\t\t\t\tscope.resolve('uActiveSplats').setValue(totalIntervalSplats);\n\t\t\t\tthis.device.setCullMode(CULLFACE_NONE);\n\t\t\t\tthis.device.setBlendState(BlendState.NOBLEND);\n\t\t\t\tthis.device.setDepthState(DepthState.NODEPTH);\n\t\t\t\tdrawQuadWithShader(this.device, this.rt, this.getShader());\n\t\t\t\treturn totalIntervalSplats;\n\t\t}\n}\n\nconst vecs = [];\nclass GSplatInfo {\n\t\tconstructor(device, resource, placement){\n\t\t\t\tthis.activeSplats = 0;\n\t\t\t\tthis.intervals = [];\n\t\t\t\tthis.lineStart = 0;\n\t\t\t\tthis.lineCount = 0;\n\t\t\t\tthis.padding = 0;\n\t\t\t\tthis.viewport = new Vec4();\n\t\t\t\tthis.previousWorldTransform = new Mat4();\n\t\t\t\tthis.aabb = new BoundingBox();\n\t\t\t\tthis.intervalTexture = null;\n\t\t\t\tthis.colorAccumulatedRotation = 0;\n\t\t\t\tthis.colorAccumulatedTranslation = 0;\n\t\t\t\tthis.device = device;\n\t\t\t\tthis.resource = resource;\n\t\t\t\tthis.node = placement.node;\n\t\t\t\tthis.lodIndex = placement.lodIndex;\n\t\t\t\tthis.numSplats = resource.numSplats;\n\t\t\t\tthis.aabb.copy(placement.aabb);\n\t\t\t\tthis.updateIntervals(placement.intervals);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.intervals.length = 0;\n\t\t\t\tthis.intervalTexture?.destroy();\n\t\t}\n\t\tsetLines(start, count, textureSize, activeSplats) {\n\t\t\t\tthis.lineStart = start;\n\t\t\t\tthis.lineCount = count;\n\t\t\t\tthis.padding = textureSize * count - activeSplats;\n\t\t\t\tthis.viewport.set(0, start, textureSize, count);\n\t\t}\n\t\tupdateIntervals(intervals) {\n\t\t\t\tconst resource = this.resource;\n\t\t\t\tthis.intervals.length = 0;\n\t\t\t\tthis.activeSplats = resource.numSplats;\n\t\t\t\tif (intervals.size > 0) {\n\t\t\t\t\t\tlet totalCount = 0;\n\t\t\t\t\t\tlet used = 0;\n\t\t\t\t\t\tfor (const interval of intervals.values()){\n\t\t\t\t\t\t\t\ttotalCount += interval.y - interval.x + 1;\n\t\t\t\t\t\t\t\tvecs[used++] = interval;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (totalCount !== this.numSplats) {\n\t\t\t\t\t\t\t\tvecs.length = used;\n\t\t\t\t\t\t\t\tvecs.sort((a, b)=>a.x - b.x);\n\t\t\t\t\t\t\t\tthis.intervals.length = used * 2;\n\t\t\t\t\t\t\t\tlet k = 0;\n\t\t\t\t\t\t\t\tlet currentStart = vecs[0].x;\n\t\t\t\t\t\t\t\tlet currentEnd = vecs[0].y;\n\t\t\t\t\t\t\t\tfor(let i = 1; i < used; i++){\n\t\t\t\t\t\t\t\t\t\tconst p = vecs[i];\n\t\t\t\t\t\t\t\t\t\tif (p.x === currentEnd + 1) {\n\t\t\t\t\t\t\t\t\t\t\t\tcurrentEnd = p.y;\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.intervals[k++] = currentStart;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.intervals[k++] = currentEnd + 1;\n\t\t\t\t\t\t\t\t\t\t\t\tcurrentStart = p.x;\n\t\t\t\t\t\t\t\t\t\t\t\tcurrentEnd = p.y;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.intervals[k++] = currentStart;\n\t\t\t\t\t\t\t\tthis.intervals[k++] = currentEnd + 1;\n\t\t\t\t\t\t\t\tthis.intervals.length = k;\n\t\t\t\t\t\t\t\tthis.intervalTexture = new GSplatIntervalTexture(this.device);\n\t\t\t\t\t\t\t\tthis.activeSplats = this.intervalTexture.update(this.intervals, totalCount);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvecs.length = 0;\n\t\t\t\t}\n\t\t}\n\t\tupdate() {\n\t\t\t\tconst worldMatrix = this.node.getWorldTransform();\n\t\t\t\tconst worldMatrixChanged = !this.previousWorldTransform.equals(worldMatrix);\n\t\t\t\tif (worldMatrixChanged) {\n\t\t\t\t\t\tthis.previousWorldTransform.copy(worldMatrix);\n\t\t\t\t}\n\t\t\t\treturn worldMatrixChanged;\n\t\t}\n\t\tresetColorAccumulators(colorUpdateAngle, colorUpdateDistance) {\n\t\t\t\tconst randomFactor = Math.random();\n\t\t\t\tthis.colorAccumulatedRotation = randomFactor * colorUpdateAngle;\n\t\t\t\tthis.colorAccumulatedTranslation = randomFactor * colorUpdateDistance;\n\t\t}\n\t\tget hasSphericalHarmonics() {\n\t\t\t\treturn this.resource.gsplatData?.shBands > 0;\n\t\t}\n}\n\nfunction UnifiedSortWorker() {\n\t\tconst myself = typeof self !== 'undefined' && self || require('node:worker_threads').parentPort;\n\t\tconst centersMap = new Map();\n\t\tlet centersData;\n\t\tlet distances;\n\t\tlet countBuffer;\n\t\tlet _radialSort = false;\n\t\tconst numBins = 32;\n\t\tconst binBase = new Array(numBins).fill(0);\n\t\tconst binDivider = new Array(numBins).fill(0);\n\t\tconst weightTiers = [\n\t\t\t\t{\n\t\t\t\t\t\tmaxDistance: 0,\n\t\t\t\t\t\tweight: 40.0\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\tmaxDistance: 2,\n\t\t\t\t\t\tweight: 20.0\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\tmaxDistance: 5,\n\t\t\t\t\t\tweight: 8.0\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\tmaxDistance: 10,\n\t\t\t\t\t\tweight: 3.0\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\tmaxDistance: Infinity,\n\t\t\t\t\t\tweight: 1.0\n\t\t\t\t}\n\t\t];\n\t\tconst weightByDistance = new Array(numBins);\n\t\tfor(let dist = 0; dist < numBins; ++dist){\n\t\t\t\tlet weight = 1.0;\n\t\t\t\tfor(let j = 0; j < weightTiers.length; ++j){\n\t\t\t\t\t\tif (dist <= weightTiers[j].maxDistance) {\n\t\t\t\t\t\t\t\tweight = weightTiers[j].weight;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tweightByDistance[dist] = weight;\n\t\t}\n\t\tconst setupCameraRelativeBins = (cameraBin, bucketCount)=>{\n\t\t\t\tconst totalBudget = bucketCount;\n\t\t\t\tconst bitsPerBin = [];\n\t\t\t\tfor(let i = 0; i < numBins; ++i){\n\t\t\t\t\t\tconst distFromCamera = Math.abs(i - cameraBin);\n\t\t\t\t\t\tbitsPerBin[i] = weightByDistance[distFromCamera];\n\t\t\t\t}\n\t\t\t\tconst totalWeight = bitsPerBin.reduce((a, b)=>a + b, 0);\n\t\t\t\tlet accumulated = 0;\n\t\t\t\tfor(let i = 0; i < numBins; ++i){\n\t\t\t\t\t\tbinDivider[i] = Math.max(1, Math.floor(bitsPerBin[i] / totalWeight * totalBudget));\n\t\t\t\t\t\tbinBase[i] = accumulated;\n\t\t\t\t\t\taccumulated += binDivider[i];\n\t\t\t\t}\n\t\t\t\tif (accumulated > bucketCount) {\n\t\t\t\t\t\tconst excess = accumulated - bucketCount;\n\t\t\t\t\t\tbinDivider[numBins - 1] = Math.max(1, binDivider[numBins - 1] - excess);\n\t\t\t\t}\n\t\t\t\tbinBase[numBins] = binBase[numBins - 1] + binDivider[numBins - 1];\n\t\t\t\tbinDivider[numBins] = 0;\n\t\t};\n\t\tconst evaluateSortKeysCommon = (sortParams, minDist, range, distances, countBuffer, centersData, processSplatFn)=>{\n\t\t\t\tconst { ids, lineStarts, padding, intervals, textureSize } = centersData;\n\t\t\t\tconst invBinRange = numBins / range;\n\t\t\t\tfor(let paramIdx = 0; paramIdx < sortParams.length; paramIdx++){\n\t\t\t\t\t\tconst params = sortParams[paramIdx];\n\t\t\t\t\t\tconst id = ids[paramIdx];\n\t\t\t\t\t\tconst centers = centersMap.get(id);\n\t\t\t\t\t\tif (!centers) {\n\t\t\t\t\t\t\t\tconsole.error('UnifiedSortWorker: No centers found for id', id);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlet targetIndex = lineStarts[paramIdx] * textureSize;\n\t\t\t\t\t\tconst intervalsArray = intervals[paramIdx].length > 0 ? intervals[paramIdx] : [\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tcenters.length / 3\n\t\t\t\t\t\t];\n\t\t\t\t\t\tfor(let i = 0; i < intervalsArray.length; i += 2){\n\t\t\t\t\t\t\t\tconst intervalStart = intervalsArray[i] * 3;\n\t\t\t\t\t\t\t\tconst intervalEnd = intervalsArray[i + 1] * 3;\n\t\t\t\t\t\t\t\ttargetIndex = processSplatFn(centers, params, intervalStart, intervalEnd, targetIndex, invBinRange, minDist, range, distances, countBuffer);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst pad = padding[paramIdx];\n\t\t\t\t\t\tcountBuffer[0] += pad;\n\t\t\t\t\t\tdistances.fill(0, targetIndex, targetIndex + pad);\n\t\t\t\t\t\ttargetIndex += pad;\n\t\t\t\t}\n\t\t};\n\t\tconst evaluateSortKeysLinear = (sortParams, minDist, range, distances, countBuffer, centersData)=>{\n\t\t\t\tevaluateSortKeysCommon(sortParams, minDist, range, distances, countBuffer, centersData, (centers, params, intervalStart, intervalEnd, targetIndex, invBinRange, minDist, range, distances, countBuffer)=>{\n\t\t\t\t\t\tconst { transformedDirection, offset, scale } = params;\n\t\t\t\t\t\tconst dx = transformedDirection.x;\n\t\t\t\t\t\tconst dy = transformedDirection.y;\n\t\t\t\t\t\tconst dz = transformedDirection.z;\n\t\t\t\t\t\tconst sdx = dx * scale;\n\t\t\t\t\t\tconst sdy = dy * scale;\n\t\t\t\t\t\tconst sdz = dz * scale;\n\t\t\t\t\t\tconst add = offset - minDist;\n\t\t\t\t\t\tfor(let srcIndex = intervalStart; srcIndex < intervalEnd; srcIndex += 3){\n\t\t\t\t\t\t\t\tconst x = centers[srcIndex];\n\t\t\t\t\t\t\t\tconst y = centers[srcIndex + 1];\n\t\t\t\t\t\t\t\tconst z = centers[srcIndex + 2];\n\t\t\t\t\t\t\t\tconst dist = x * sdx + y * sdy + z * sdz + add;\n\t\t\t\t\t\t\t\tconst d = dist * invBinRange;\n\t\t\t\t\t\t\t\tconst bin = d >>> 0;\n\t\t\t\t\t\t\t\tconst sortKey = binBase[bin] + binDivider[bin] * (d - bin) >>> 0;\n\t\t\t\t\t\t\t\tdistances[targetIndex++] = sortKey;\n\t\t\t\t\t\t\t\tcountBuffer[sortKey]++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn targetIndex;\n\t\t\t\t});\n\t\t};\n\t\tconst evaluateSortKeysRadial = (sortParams, minDist, range, distances, countBuffer, centersData)=>{\n\t\t\t\tevaluateSortKeysCommon(sortParams, minDist, range, distances, countBuffer, centersData, (centers, params, intervalStart, intervalEnd, targetIndex, invBinRange, minDist, range, distances, countBuffer)=>{\n\t\t\t\t\t\tconst { transformedPosition, scale } = params;\n\t\t\t\t\t\tconst cx = transformedPosition.x;\n\t\t\t\t\t\tconst cy = transformedPosition.y;\n\t\t\t\t\t\tconst cz = transformedPosition.z;\n\t\t\t\t\t\tfor(let srcIndex = intervalStart; srcIndex < intervalEnd; srcIndex += 3){\n\t\t\t\t\t\t\t\tconst dx = centers[srcIndex] - cx;\n\t\t\t\t\t\t\t\tconst dy = centers[srcIndex + 1] - cy;\n\t\t\t\t\t\t\t\tconst dz = centers[srcIndex + 2] - cz;\n\t\t\t\t\t\t\t\tconst distSq = dx * dx + dy * dy + dz * dz;\n\t\t\t\t\t\t\t\tconst dist = Math.sqrt(distSq) * scale;\n\t\t\t\t\t\t\t\tconst invertedDist = range - dist;\n\t\t\t\t\t\t\t\tconst d = invertedDist * invBinRange;\n\t\t\t\t\t\t\t\tconst bin = d >>> 0;\n\t\t\t\t\t\t\t\tconst sortKey = binBase[bin] + binDivider[bin] * (d - bin) >>> 0;\n\t\t\t\t\t\t\t\tdistances[targetIndex++] = sortKey;\n\t\t\t\t\t\t\t\tcountBuffer[sortKey]++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn targetIndex;\n\t\t\t\t});\n\t\t};\n\t\tconst countingSort = (bucketCount, countBuffer, numVertices, distances, order)=>{\n\t\t\t\tfor(let i = 1; i < bucketCount; i++){\n\t\t\t\t\t\tcountBuffer[i] += countBuffer[i - 1];\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < numVertices; i++){\n\t\t\t\t\t\tconst distance = distances[i];\n\t\t\t\t\t\tconst destIndex = --countBuffer[distance];\n\t\t\t\t\t\torder[destIndex] = i;\n\t\t\t\t}\n\t\t};\n\t\tconst computeEffectiveDistanceRangeLinear = (sortParams)=>{\n\t\t\t\tlet minDist = Infinity;\n\t\t\t\tlet maxDist = -Infinity;\n\t\t\t\tfor(let paramIdx = 0; paramIdx < sortParams.length; paramIdx++){\n\t\t\t\t\t\tconst params = sortParams[paramIdx];\n\t\t\t\t\t\tconst { transformedDirection, offset, scale, aabbMin, aabbMax } = params;\n\t\t\t\t\t\tconst dx = transformedDirection.x;\n\t\t\t\t\t\tconst dy = transformedDirection.y;\n\t\t\t\t\t\tconst dz = transformedDirection.z;\n\t\t\t\t\t\tconst pxMin = dx >= 0 ? aabbMin[0] : aabbMax[0];\n\t\t\t\t\t\tconst pyMin = dy >= 0 ? aabbMin[1] : aabbMax[1];\n\t\t\t\t\t\tconst pzMin = dz >= 0 ? aabbMin[2] : aabbMax[2];\n\t\t\t\t\t\tconst pxMax = dx >= 0 ? aabbMax[0] : aabbMin[0];\n\t\t\t\t\t\tconst pyMax = dy >= 0 ? aabbMax[1] : aabbMin[1];\n\t\t\t\t\t\tconst pzMax = dz >= 0 ? aabbMax[2] : aabbMin[2];\n\t\t\t\t\t\tconst dMin = pxMin * dx + pyMin * dy + pzMin * dz;\n\t\t\t\t\t\tconst dMax = pxMax * dx + pyMax * dy + pzMax * dz;\n\t\t\t\t\t\tconst eMin = dMin * scale + offset;\n\t\t\t\t\t\tconst eMax = dMax * scale + offset;\n\t\t\t\t\t\tconst localMin = Math.min(eMin, eMax);\n\t\t\t\t\t\tconst localMax = Math.max(eMin, eMax);\n\t\t\t\t\t\tif (localMin < minDist) minDist = localMin;\n\t\t\t\t\t\tif (localMax > maxDist) maxDist = localMax;\n\t\t\t\t}\n\t\t\t\tif (minDist === Infinity) {\n\t\t\t\t\t\tminDist = 0;\n\t\t\t\t\t\tmaxDist = 0;\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\t\tminDist,\n\t\t\t\t\t\tmaxDist\n\t\t\t\t};\n\t\t};\n\t\tconst computeEffectiveDistanceRangeRadial = (sortParams)=>{\n\t\t\t\tlet maxDist = -Infinity;\n\t\t\t\tfor(let paramIdx = 0; paramIdx < sortParams.length; paramIdx++){\n\t\t\t\t\t\tconst params = sortParams[paramIdx];\n\t\t\t\t\t\tconst { transformedPosition, scale, aabbMin, aabbMax } = params;\n\t\t\t\t\t\tconst cx = transformedPosition.x;\n\t\t\t\t\t\tconst cy = transformedPosition.y;\n\t\t\t\t\t\tconst cz = transformedPosition.z;\n\t\t\t\t\t\tfor(let i = 0; i < 8; i++){\n\t\t\t\t\t\t\t\tconst px = i & 1 ? aabbMax[0] : aabbMin[0];\n\t\t\t\t\t\t\t\tconst py = i & 2 ? aabbMax[1] : aabbMin[1];\n\t\t\t\t\t\t\t\tconst pz = i & 4 ? aabbMax[2] : aabbMin[2];\n\t\t\t\t\t\t\t\tconst dx = px - cx;\n\t\t\t\t\t\t\t\tconst dy = py - cy;\n\t\t\t\t\t\t\t\tconst dz = pz - cz;\n\t\t\t\t\t\t\t\tconst distSq = dx * dx + dy * dy + dz * dz;\n\t\t\t\t\t\t\t\tconst dist = Math.sqrt(distSq) * scale;\n\t\t\t\t\t\t\t\tif (dist > maxDist) maxDist = dist;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst minDist = 0;\n\t\t\t\tif (maxDist < 0) {\n\t\t\t\t\t\tmaxDist = 0;\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\t\tminDist,\n\t\t\t\t\t\tmaxDist\n\t\t\t\t};\n\t\t};\n\t\tconst sort = (sortParams, order, centersData)=>{\n\t\t\t\tconst { minDist, maxDist } = _radialSort ? computeEffectiveDistanceRangeRadial(sortParams) : computeEffectiveDistanceRangeLinear(sortParams);\n\t\t\t\tconst numVertices = centersData.totalUsedPixels;\n\t\t\t\tconst compareBits = Math.max(10, Math.min(20, Math.round(Math.log2(numVertices / 4))));\n\t\t\t\tconst bucketCount = 2 ** compareBits + 1;\n\t\t\t\tif (distances?.length !== numVertices) {\n\t\t\t\t\t\tdistances = new Uint32Array(numVertices);\n\t\t\t\t}\n\t\t\t\tif (!countBuffer || countBuffer.length !== bucketCount) {\n\t\t\t\t\t\tcountBuffer = new Uint32Array(bucketCount);\n\t\t\t\t} else {\n\t\t\t\t\t\tcountBuffer.fill(0);\n\t\t\t\t}\n\t\t\t\tconst range = maxDist - minDist;\n\t\t\t\tlet cameraBin;\n\t\t\t\tif (_radialSort) {\n\t\t\t\t\t\tcameraBin = numBins - 1;\n\t\t\t\t} else {\n\t\t\t\t\t\tconst cameraOffsetFromRangeStart = 0 - minDist;\n\t\t\t\t\t\tconst cameraBinFloat = cameraOffsetFromRangeStart / range * numBins;\n\t\t\t\t\t\tcameraBin = Math.max(0, Math.min(numBins - 1, Math.floor(cameraBinFloat)));\n\t\t\t\t}\n\t\t\t\tsetupCameraRelativeBins(cameraBin, bucketCount);\n\t\t\t\tif (_radialSort) {\n\t\t\t\t\t\tevaluateSortKeysRadial(sortParams, minDist, range, distances, countBuffer, centersData);\n\t\t\t\t} else {\n\t\t\t\t\t\tevaluateSortKeysLinear(sortParams, minDist, range, distances, countBuffer, centersData);\n\t\t\t\t}\n\t\t\t\tcountingSort(bucketCount, countBuffer, numVertices, distances, order);\n\t\t\t\tconst count = numVertices;\n\t\t\t\tconst transferList = [\n\t\t\t\t\t\torder.buffer\n\t\t\t\t];\n\t\t\t\tconst response = {\n\t\t\t\t\t\torder: order.buffer,\n\t\t\t\t\t\tcount,\n\t\t\t\t\t\tversion: centersData.version\n\t\t\t\t};\n\t\t\t\tmyself.postMessage(response, transferList);\n\t\t};\n\t\tmyself.addEventListener('message', (message)=>{\n\t\t\t\tconst msgData = message.data ?? message;\n\t\t\t\tswitch(msgData.command){\n\t\t\t\t\t\tcase 'addCenters':\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tcentersMap.set(msgData.id, new Float32Array(msgData.centers));\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\tcase 'removeCenters':\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tcentersMap.delete(msgData.id);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\tcase 'sort':\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t_radialSort = msgData.radialSorting || false;\n\t\t\t\t\t\t\t\t\t\tconst order = new Uint32Array(msgData.order);\n\t\t\t\t\t\t\t\t\t\tsort(msgData.sortParams, order, centersData);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\tcase 'intervals':\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tcentersData = msgData;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t});\n}\n\nconst _neededIds = new Set();\nclass GSplatUnifiedSorter extends EventHandler {\n\t\tconstructor(){\n\t\t\t\tsuper(), this.bufferLength = 0, this.availableOrderData = [], this.jobsInFlight = 0, this.hasNewVersion = false, this.pendingSorted = null, this.centersSet = new Set(), this._destroyed = false;\n\t\t\t\tconst workerSource = `(${UnifiedSortWorker.toString()})()`;\n\t\t\t\tif (platform.environment === 'node') {\n\t\t\t\t\t\tthis.worker = new Worker(workerSource, {\n\t\t\t\t\t\t\t\teval: true\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis.worker.on('message', this.onSorted.bind(this));\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.worker = new Worker(URL.createObjectURL(new Blob([\n\t\t\t\t\t\t\t\tworkerSource\n\t\t\t\t\t\t], {\n\t\t\t\t\t\t\t\ttype: \"application/javascript\"\n\t\t\t\t\t\t})));\n\t\t\t\t\t\tthis.worker.addEventListener('message', this.onSorted.bind(this));\n\t\t\t\t}\n\t\t}\n\t\tonSorted(message) {\n\t\t\t\tif (this._destroyed) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst msgData = message.data ?? message;\n\t\t\t\tconst orderData = new Uint32Array(msgData.order);\n\t\t\t\tthis.jobsInFlight--;\n\t\t\t\tif (this.pendingSorted) {\n\t\t\t\t\t\tthis.releaseOrderData(this.pendingSorted.orderData);\n\t\t\t\t}\n\t\t\t\tthis.pendingSorted = {\n\t\t\t\t\t\tcount: msgData.count,\n\t\t\t\t\t\tversion: msgData.version,\n\t\t\t\t\t\torderData: orderData\n\t\t\t\t};\n\t\t}\n\t\tapplyPendingSorted() {\n\t\t\t\tif (this.pendingSorted) {\n\t\t\t\t\t\tconst { count, version, orderData } = this.pendingSorted;\n\t\t\t\t\t\tthis.pendingSorted = null;\n\t\t\t\t\t\tthis.fire('sorted', count, version, orderData);\n\t\t\t\t\t\tthis.releaseOrderData(orderData);\n\t\t\t\t}\n\t\t}\n\t\treleaseOrderData(orderData) {\n\t\t\t\tif (orderData.length === this.bufferLength) {\n\t\t\t\t\t\tthis.availableOrderData.push(orderData);\n\t\t\t\t}\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis._destroyed = true;\n\t\t\t\tthis.pendingSorted = null;\n\t\t\t\tthis.worker.terminate();\n\t\t\t\tthis.worker = null;\n\t\t}\n\t\tsetCenters(id, centers) {\n\t\t\t\tif (centers) {\n\t\t\t\t\t\tif (!this.centersSet.has(id)) {\n\t\t\t\t\t\t\t\tthis.centersSet.add(id);\n\t\t\t\t\t\t\t\tconst centersBuffer = centers.buffer.slice();\n\t\t\t\t\t\t\t\tthis.worker.postMessage({\n\t\t\t\t\t\t\t\t\t\tcommand: 'addCenters',\n\t\t\t\t\t\t\t\t\t\tid: id,\n\t\t\t\t\t\t\t\t\t\tcenters: centersBuffer\n\t\t\t\t\t\t\t\t}, [\n\t\t\t\t\t\t\t\t\t\tcentersBuffer\n\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tif (this.centersSet.has(id)) {\n\t\t\t\t\t\t\t\tthis.centersSet.delete(id);\n\t\t\t\t\t\t\t\tthis.worker.postMessage({\n\t\t\t\t\t\t\t\t\t\tcommand: 'removeCenters',\n\t\t\t\t\t\t\t\t\t\tid: id\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tupdateCentersForSplats(splats) {\n\t\t\t\tfor (const splat of splats){\n\t\t\t\t\t\tconst id = splat.resource.id;\n\t\t\t\t\t\t_neededIds.add(id);\n\t\t\t\t\t\tif (!this.centersSet.has(id)) {\n\t\t\t\t\t\t\t\tthis.setCenters(id, splat.resource.centers);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor (const id of this.centersSet){\n\t\t\t\t\t\tif (!_neededIds.has(id)) {\n\t\t\t\t\t\t\t\tthis.setCenters(id, null);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t_neededIds.clear();\n\t\t}\n\t\tsetSortParameters(payload) {\n\t\t\t\tthis.hasNewVersion = true;\n\t\t\t\tconst { textureSize } = payload;\n\t\t\t\tconst newLength = textureSize * textureSize;\n\t\t\t\tif (newLength !== this.bufferLength) {\n\t\t\t\t\t\tthis.bufferLength = newLength;\n\t\t\t\t\t\tthis.availableOrderData.length = 0;\n\t\t\t\t}\n\t\t\t\tthis.worker.postMessage(payload);\n\t\t}\n\t\tsetSortParams(params, radialSorting) {\n\t\t\t\tif (this.hasNewVersion || this.jobsInFlight === 0) {\n\t\t\t\t\t\tlet orderData = this.availableOrderData.pop();\n\t\t\t\t\t\tif (!orderData) {\n\t\t\t\t\t\t\t\torderData = new Uint32Array(this.bufferLength);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.jobsInFlight++;\n\t\t\t\t\t\tthis.hasNewVersion = false;\n\t\t\t\t\t\tthis.worker.postMessage({\n\t\t\t\t\t\t\t\tcommand: 'sort',\n\t\t\t\t\t\t\t\tsortParams: params,\n\t\t\t\t\t\t\t\tradialSorting: radialSorting,\n\t\t\t\t\t\t\t\torder: orderData.buffer\n\t\t\t\t\t\t}, [\n\t\t\t\t\t\t\t\torderData.buffer\n\t\t\t\t\t\t]);\n\t\t\t\t}\n\t\t}\n}\n\nclass GSplatRenderer {\n\t\tconstructor(device, node, cameraNode, layer, workBuffer){\n\t\t\t\tthis.instanceIndices = null;\n\t\t\t\tthis.instanceIndicesCount = 0;\n\t\t\t\tthis.viewportParams = [\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0\n\t\t\t\t];\n\t\t\t\tthis.originalBlendType = BLEND_ADDITIVE;\n\t\t\t\tthis.device = device;\n\t\t\t\tthis.node = node;\n\t\t\t\tthis.cameraNode = cameraNode;\n\t\t\t\tthis.layer = layer;\n\t\t\t\tthis.workBuffer = workBuffer;\n\t\t\t\tthis._material = new ShaderMaterial({\n\t\t\t\t\t\tuniqueName: 'UnifiedSplatMaterial',\n\t\t\t\t\t\tvertexGLSL: '#include \"gsplatVS\"',\n\t\t\t\t\t\tfragmentGLSL: '#include \"gsplatPS\"',\n\t\t\t\t\t\tvertexWGSL: '#include \"gsplatVS\"',\n\t\t\t\t\t\tfragmentWGSL: '#include \"gsplatPS\"',\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\tvertex_position: SEMANTIC_POSITION,\n\t\t\t\t\t\t\t\tvertex_id_attrib: SEMANTIC_ATTR13\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tthis.configureMaterial();\n\t\t\t\tthis.meshInstance = this.createMeshInstance();\n\t\t\t\tlayer.addMeshInstances([\n\t\t\t\t\t\tthis.meshInstance\n\t\t\t\t]);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.layer.removeMeshInstances([\n\t\t\t\t\t\tthis.meshInstance\n\t\t\t\t]);\n\t\t\t\tthis._material.destroy();\n\t\t\t\tthis.meshInstance.destroy();\n\t\t}\n\t\tget material() {\n\t\t\t\treturn this._material;\n\t\t}\n\t\tconfigureMaterial() {\n\t\t\t\tconst { device, workBuffer } = this;\n\t\t\t\tthis._material.setDefine('GSPLAT_WORKBUFFER_DATA', true);\n\t\t\t\tthis._material.setDefine('STORAGE_ORDER', device.isWebGPU);\n\t\t\t\tconst isColorUint = workBuffer.colorTextureFormat === PIXELFORMAT_RGBA16U;\n\t\t\t\tthis._material.setDefine('GSPLAT_COLOR_UINT', isColorUint);\n\t\t\t\tthis._material.setParameter('splatColor', workBuffer.colorTexture);\n\t\t\t\tthis._material.setParameter('splatTexture0', workBuffer.splatTexture0);\n\t\t\t\tthis._material.setParameter('splatTexture1', workBuffer.splatTexture1);\n\t\t\t\tthis._material.setDefine('SH_BANDS', '0');\n\t\t\t\tthis._material.setParameter('numSplats', 0);\n\t\t\t\tif (workBuffer.orderTexture) {\n\t\t\t\t\t\tthis._material.setParameter('splatOrder', workBuffer.orderTexture);\n\t\t\t\t}\n\t\t\t\tthis._material.setParameter('alphaClip', 0.3);\n\t\t\t\tthis._material.setDefine(`DITHER_${'NONE'}`, '');\n\t\t\t\tthis._material.cull = CULLFACE_NONE;\n\t\t\t\tthis._material.blendType = BLEND_PREMULTIPLIED;\n\t\t\t\tthis._material.depthWrite = false;\n\t\t\t\tthis._material.update();\n\t\t}\n\t\tupdate(count, textureSize) {\n\t\t\t\tthis.meshInstance.instancingCount = Math.ceil(count / GSplatResourceBase.instanceSize);\n\t\t\t\tthis._material.setParameter('numSplats', count);\n\t\t\t\tthis._material.setParameter('splatTextureSize', textureSize);\n\t\t\t\tthis.meshInstance.visible = count > 0;\n\t\t}\n\t\tframeUpdate(params) {\n\t\t\t\tif (this.device.isWebGPU) {\n\t\t\t\t\t\tthis._material.setParameter('splatOrder', this.workBuffer.orderBuffer);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._material.setParameter('splatOrder', this.workBuffer.orderTexture);\n\t\t\t\t}\n\t\t\t\tif (params.colorRamp) {\n\t\t\t\t\t\tthis._material.setParameter('colorRampIntensity', params.colorRampIntensity);\n\t\t\t\t}\n\t\t}\n\t\tupdateOverdrawMode(params) {\n\t\t\t\tconst overdrawEnabled = !!params.colorRamp;\n\t\t\t\tconst wasOverdrawEnabled = this._material.getDefine('GSPLAT_OVERDRAW');\n\t\t\t\tif (overdrawEnabled) {\n\t\t\t\t\t\tthis._material.setParameter('colorRamp', params.colorRamp);\n\t\t\t\t\t\tthis._material.setParameter('colorRampIntensity', params.colorRampIntensity);\n\t\t\t\t}\n\t\t\t\tif (overdrawEnabled !== wasOverdrawEnabled) {\n\t\t\t\t\t\tthis._material.setDefine('GSPLAT_OVERDRAW', overdrawEnabled);\n\t\t\t\t\t\tif (overdrawEnabled) {\n\t\t\t\t\t\t\t\tthis.originalBlendType = this._material.blendType;\n\t\t\t\t\t\t\t\tthis._material.blendType = BLEND_ADDITIVE;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._material.blendType = this.originalBlendType;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._material.update();\n\t\t\t\t}\n\t\t}\n\t\tsetMaxNumSplats(numSplats) {\n\t\t\t\tconst roundedNumSplats = math.roundUp(numSplats, GSplatResourceBase.instanceSize);\n\t\t\t\tif (this.instanceIndicesCount < roundedNumSplats) {\n\t\t\t\t\t\tthis.instanceIndicesCount = roundedNumSplats;\n\t\t\t\t\t\tthis.instanceIndices?.destroy();\n\t\t\t\t\t\tthis.instanceIndices = GSplatResourceBase.createInstanceIndices(this.device, numSplats);\n\t\t\t\t\t\tthis.meshInstance.setInstancing(this.instanceIndices, true);\n\t\t\t\t\t\tthis._material.setParameter('splatTextureSize', this.workBuffer.textureSize);\n\t\t\t\t}\n\t\t}\n\t\tcreateMeshInstance() {\n\t\t\t\tconst mesh = GSplatResourceBase.createMesh(this.device);\n\t\t\t\tconst textureSize = this.workBuffer.textureSize;\n\t\t\t\tconst instanceIndices = GSplatResourceBase.createInstanceIndices(this.device, textureSize * textureSize);\n\t\t\t\tconst meshInstance = new MeshInstance(mesh, this._material);\n\t\t\t\tmeshInstance.node = this.node;\n\t\t\t\tmeshInstance.setInstancing(instanceIndices, true);\n\t\t\t\tmeshInstance.instancingCount = 0;\n\t\t\t\tconst thisCamera = this.cameraNode.camera;\n\t\t\t\tmeshInstance.isVisibleFunc = (camera)=>{\n\t\t\t\t\t\tconst vis = thisCamera.camera === camera;\n\t\t\t\t\t\treturn vis;\n\t\t\t\t};\n\t\t\t\treturn meshInstance;\n\t\t}\n\t\tupdateViewport(cameraNode) {\n\t\t\t\tconst camera = cameraNode.camera;\n\t\t\t\tconst cameraRect = camera.rect;\n\t\t\t\tconst renderTarget = camera?.renderTarget;\n\t\t\t\tconst { width, height } = renderTarget ?? this.device;\n\t\t\t\tconst viewport = this.viewportParams;\n\t\t\t\tviewport[0] = width * cameraRect.z;\n\t\t\t\tviewport[1] = height * cameraRect.w;\n\t\t\t\tconst xr = camera?.camera?.xr;\n\t\t\t\tif (xr?.active && xr.views.list.length === 2) {\n\t\t\t\t\t\tviewport[0] *= 0.5;\n\t\t\t\t}\n\t\t\t\tthis._material.setParameter('viewport', viewport);\n\t\t}\n}\n\nclass GSplatPlacement {\n\t\tconstructor(resource, node, lodIndex = 0){\n\t\t\t\tthis.intervals = new Map();\n\t\t\t\tthis.lodIndex = 0;\n\t\t\t\tthis._lodDistances = null;\n\t\t\t\tthis._aabb = new BoundingBox();\n\t\t\t\tthis.resource = resource;\n\t\t\t\tthis.node = node;\n\t\t\t\tthis.lodIndex = lodIndex;\n\t\t}\n\t\tset aabb(aabb) {\n\t\t\t\tthis._aabb.copy(aabb);\n\t\t}\n\t\tget aabb() {\n\t\t\t\treturn this._aabb;\n\t\t}\n\t\tset lodDistances(distances) {\n\t\t\t\tconst isOctree = !!(this.resource && this.resource.octree);\n\t\t\t\tif (isOctree) {\n\t\t\t\t\t\tif (distances) {\n\t\t\t\t\t\t\t\tthis.resource.octree?.lodLevels ?? 1;\n\t\t\t\t\t\t\t\tthis._lodDistances = distances.slice();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._lodDistances = null;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget lodDistances() {\n\t\t\t\treturn this._lodDistances ? this._lodDistances.slice() : null;\n\t\t}\n}\n\nconst _invWorldMat = new Mat4();\nconst _localCameraPos = new Vec3();\nconst _localCameraFwd = new Vec3();\nconst _dirToNode = new Vec3();\nconst _tempCompletedUrls = [];\nnew BoundingBox();\n[\n\t\tnew Color(1, 0, 0),\n\t\tnew Color(0, 1, 0),\n\t\tnew Color(0, 0, 1),\n\t\tnew Color(1, 1, 0),\n\t\tnew Color(1, 0, 1)\n];\nclass GSplatOctreeInstance {\n\t\tget pendingLoadCount() {\n\t\t\t\tlet count = this.pending.size + this.prefetchPending.size;\n\t\t\t\tif (this.octree.environmentUrl && !this.environmentPlacement) {\n\t\t\t\t\t\tcount++;\n\t\t\t\t}\n\t\t\t\treturn count;\n\t\t}\n\t\tconstructor(octree, placement, assetLoader){\n\t\t\t\tthis.activePlacements = new Set();\n\t\t\t\tthis.dirtyModifiedPlacements = false;\n\t\t\t\tthis.pending = new Set();\n\t\t\t\tthis.pendingDecrements = new Map();\n\t\t\t\tthis.removedCandidates = new Set();\n\t\t\t\tthis.previousPosition = new Vec3();\n\t\t\t\tthis.needsLodUpdate = false;\n\t\t\t\tthis.prefetchPending = new Set();\n\t\t\t\tthis.pendingVisibleAdds = new Map();\n\t\t\t\tthis.environmentPlacement = null;\n\t\t\t\tthis.octree = octree;\n\t\t\t\tthis.placement = placement;\n\t\t\t\tthis.assetLoader = assetLoader;\n\t\t\t\tthis.nodeLods = new Int32Array(octree.nodes.length);\n\t\t\t\tthis.nodeLods.fill(-1);\n\t\t\t\tconst numFiles = octree.files.length;\n\t\t\t\tthis.filePlacements = new Array(numFiles).fill(null);\n\t\t\t\tif (octree.environmentUrl) {\n\t\t\t\t\t\toctree.incEnvironmentRefCount();\n\t\t\t\t\t\toctree.ensureEnvironmentResource(assetLoader);\n\t\t\t\t}\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.pending.clear();\n\t\t\t\tthis.pendingDecrements.clear();\n\t\t\t\tthis.filePlacements.length = 0;\n\t\t\t\tif (this.environmentPlacement) {\n\t\t\t\t\t\tthis.activePlacements.delete(this.environmentPlacement);\n\t\t\t\t\t\tthis.octree.decEnvironmentRefCount(this.assetLoader);\n\t\t\t\t\t\tthis.environmentPlacement = null;\n\t\t\t\t}\n\t\t}\n\t\tgetFileDecrements() {\n\t\t\t\tconst toRelease = [];\n\t\t\t\tfor(let i = 0; i < this.filePlacements.length; i++){\n\t\t\t\t\t\tif (this.filePlacements[i]) {\n\t\t\t\t\t\t\t\ttoRelease.push(i);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn toRelease;\n\t\t}\n\t\tcalculateNodeLod(localCameraPosition, localCameraForward, nodeIndex, maxLod, lodDistances, lodBehindPenalty) {\n\t\t\t\tconst node = this.octree.nodes[nodeIndex];\n\t\t\t\tnode.bounds.closestPoint(localCameraPosition, _dirToNode);\n\t\t\t\t_dirToNode.sub(localCameraPosition);\n\t\t\t\tlet distance = _dirToNode.length();\n\t\t\t\tif (lodBehindPenalty > 1 && distance > 0.01) {\n\t\t\t\t\t\tconst dotOverDistance = localCameraForward.dot(_dirToNode) / distance;\n\t\t\t\t\t\tif (dotOverDistance < 0) {\n\t\t\t\t\t\t\t\tconst t = -dotOverDistance;\n\t\t\t\t\t\t\t\tconst factor = 1 + t * (lodBehindPenalty - 1);\n\t\t\t\t\t\t\t\tdistance *= factor;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor(let lod = 0; lod < maxLod; lod++){\n\t\t\t\t\t\tif (distance < lodDistances[lod]) {\n\t\t\t\t\t\t\t\treturn lod;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn maxLod;\n\t\t}\n\t\tselectDesiredLodIndex(node, optimalLodIndex, maxLod, lodUnderfillLimit) {\n\t\t\t\tif (lodUnderfillLimit > 0) {\n\t\t\t\t\t\tconst allowedMaxCoarseLod = Math.min(maxLod, optimalLodIndex + lodUnderfillLimit);\n\t\t\t\t\t\tfor(let lod = optimalLodIndex; lod <= allowedMaxCoarseLod; lod++){\n\t\t\t\t\t\t\t\tconst fi = node.lods[lod].fileIndex;\n\t\t\t\t\t\t\t\tif (fi !== -1 && this.octree.getFileResource(fi)) {\n\t\t\t\t\t\t\t\t\t\treturn lod;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor(let lod = allowedMaxCoarseLod; lod >= optimalLodIndex; lod--){\n\t\t\t\t\t\t\t\tconst fi = node.lods[lod].fileIndex;\n\t\t\t\t\t\t\t\tif (fi !== -1) {\n\t\t\t\t\t\t\t\t\t\treturn lod;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn optimalLodIndex;\n\t\t}\n\t\tprefetchNextLod(node, desiredLodIndex, optimalLodIndex) {\n\t\t\t\tif (desiredLodIndex === -1 || optimalLodIndex === -1) return;\n\t\t\t\tif (desiredLodIndex === optimalLodIndex) {\n\t\t\t\t\t\tconst fi = node.lods[optimalLodIndex].fileIndex;\n\t\t\t\t\t\tif (fi !== -1) {\n\t\t\t\t\t\t\t\tthis.octree.ensureFileResource(fi, this.assetLoader);\n\t\t\t\t\t\t\t\tif (!this.octree.getFileResource(fi)) {\n\t\t\t\t\t\t\t\t\t\tthis.prefetchPending.add(fi);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst targetLod = Math.max(optimalLodIndex, desiredLodIndex - 1);\n\t\t\t\tfor(let lod = targetLod; lod >= optimalLodIndex; lod--){\n\t\t\t\t\t\tconst fi = node.lods[lod].fileIndex;\n\t\t\t\t\t\tif (fi !== -1) {\n\t\t\t\t\t\t\t\tthis.octree.ensureFileResource(fi, this.assetLoader);\n\t\t\t\t\t\t\t\tif (!this.octree.getFileResource(fi)) {\n\t\t\t\t\t\t\t\t\t\tthis.prefetchPending.add(fi);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tupdateLod(cameraNode, params) {\n\t\t\t\tconst worldCameraPosition = cameraNode.getPosition();\n\t\t\t\tconst octreeWorldTransform = this.placement.node.getWorldTransform();\n\t\t\t\t_invWorldMat.copy(octreeWorldTransform).invert();\n\t\t\t\tconst localCameraPosition = _invWorldMat.transformPoint(worldCameraPosition, _localCameraPos);\n\t\t\t\tconst worldCameraForward = cameraNode.forward;\n\t\t\t\tconst localCameraForward = _invWorldMat.transformVector(worldCameraForward, _localCameraFwd).normalize();\n\t\t\t\tconst maxLod = this.octree.lodLevels - 1;\n\t\t\t\tconst lodDistances = this.placement.lodDistances || [\n\t\t\t\t\t\t5,\n\t\t\t\t\t\t10,\n\t\t\t\t\t\t15,\n\t\t\t\t\t\t20,\n\t\t\t\t\t\t25,\n\t\t\t\t\t\t30,\n\t\t\t\t\t\t35,\n\t\t\t\t\t\t40,\n\t\t\t\t\t\t45,\n\t\t\t\t\t\t50,\n\t\t\t\t\t\t55,\n\t\t\t\t\t\t60\n\t\t\t\t];\n\t\t\t\tconst { lodBehindPenalty, lodRangeMin, lodRangeMax, lodUnderfillLimit = 0 } = params;\n\t\t\t\tconst rangeMin = Math.max(0, Math.min(lodRangeMin ?? 0, maxLod));\n\t\t\t\tconst rangeMax = Math.max(rangeMin, Math.min(lodRangeMax ?? maxLod, maxLod));\n\t\t\t\tconst nodes = this.octree.nodes;\n\t\t\t\tfor(let nodeIndex = 0; nodeIndex < nodes.length; nodeIndex++){\n\t\t\t\t\t\tconst node = nodes[nodeIndex];\n\t\t\t\t\t\tlet optimalLodIndex = this.calculateNodeLod(localCameraPosition, localCameraForward, nodeIndex, maxLod, lodDistances, lodBehindPenalty);\n\t\t\t\t\t\tif (optimalLodIndex < rangeMin) optimalLodIndex = rangeMin;\n\t\t\t\t\t\tif (optimalLodIndex > rangeMax) optimalLodIndex = rangeMax;\n\t\t\t\t\t\tconst currentLodIndex = this.nodeLods[nodeIndex];\n\t\t\t\t\t\tconst desiredLodIndex = this.selectDesiredLodIndex(node, optimalLodIndex, maxLod, lodUnderfillLimit);\n\t\t\t\t\t\tif (desiredLodIndex !== currentLodIndex) {\n\t\t\t\t\t\t\t\tconst currentFileIndex = currentLodIndex >= 0 ? node.lods[currentLodIndex].fileIndex : -1;\n\t\t\t\t\t\t\t\tconst desiredFileIndex = desiredLodIndex >= 0 ? node.lods[desiredLodIndex].fileIndex : -1;\n\t\t\t\t\t\t\t\tconst wasVisible = currentFileIndex !== -1;\n\t\t\t\t\t\t\t\tconst willBeVisible = desiredFileIndex !== -1;\n\t\t\t\t\t\t\t\tconst pendingEntry = this.pendingDecrements.get(nodeIndex);\n\t\t\t\t\t\t\t\tif (pendingEntry) {\n\t\t\t\t\t\t\t\t\t\tif (pendingEntry.newFileIndex !== desiredFileIndex) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst prevPendingPlacement = this.filePlacements[pendingEntry.newFileIndex];\n\t\t\t\t\t\t\t\t\t\t\t\tif (prevPendingPlacement) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.decrementFileRef(pendingEntry.newFileIndex, nodeIndex);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tif (wasVisible && willBeVisible) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.pendingDecrements.set(nodeIndex, {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\toldFileIndex: pendingEntry.oldFileIndex,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnewFileIndex: desiredFileIndex\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.pendingDecrements.delete(nodeIndex);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (!wasVisible && willBeVisible) {\n\t\t\t\t\t\t\t\t\t\tconst prevPendingFi = this.pendingVisibleAdds.get(nodeIndex);\n\t\t\t\t\t\t\t\t\t\tif (prevPendingFi !== undefined && prevPendingFi !== desiredFileIndex) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.decrementFileRef(prevPendingFi, nodeIndex);\n\t\t\t\t\t\t\t\t\t\t\t\tthis.pendingVisibleAdds.delete(nodeIndex);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tthis.incrementFileRef(desiredFileIndex, nodeIndex, desiredLodIndex);\n\t\t\t\t\t\t\t\t\t\tconst newPlacement = this.filePlacements[desiredFileIndex];\n\t\t\t\t\t\t\t\t\t\tif (newPlacement?.resource) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.nodeLods[nodeIndex] = desiredLodIndex;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.pendingVisibleAdds.delete(nodeIndex);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.pendingVisibleAdds.set(nodeIndex, desiredFileIndex);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else if (wasVisible && !willBeVisible) {\n\t\t\t\t\t\t\t\t\t\tconst pendingEntry2 = this.pendingDecrements.get(nodeIndex);\n\t\t\t\t\t\t\t\t\t\tif (pendingEntry2) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.decrementFileRef(pendingEntry2.newFileIndex, nodeIndex);\n\t\t\t\t\t\t\t\t\t\t\t\tthis.pendingDecrements.delete(nodeIndex);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tthis.decrementFileRef(currentFileIndex, nodeIndex);\n\t\t\t\t\t\t\t\t\t\tthis.nodeLods[nodeIndex] = -1;\n\t\t\t\t\t\t\t\t\t\tthis.pendingVisibleAdds.delete(nodeIndex);\n\t\t\t\t\t\t\t\t} else if (wasVisible && willBeVisible) {\n\t\t\t\t\t\t\t\t\t\tthis.incrementFileRef(desiredFileIndex, nodeIndex, desiredLodIndex);\n\t\t\t\t\t\t\t\t\t\tconst newPlacement = this.filePlacements[desiredFileIndex];\n\t\t\t\t\t\t\t\t\t\tif (newPlacement?.resource) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.decrementFileRef(currentFileIndex, nodeIndex);\n\t\t\t\t\t\t\t\t\t\t\t\tthis.pendingDecrements.delete(nodeIndex);\n\t\t\t\t\t\t\t\t\t\t\t\tthis.nodeLods[nodeIndex] = desiredLodIndex;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.pendingVisibleAdds.delete(nodeIndex);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.pendingDecrements.set(nodeIndex, {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\toldFileIndex: currentFileIndex,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnewFileIndex: desiredFileIndex\n\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t\tthis.pendingVisibleAdds.delete(nodeIndex);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.prefetchNextLod(node, desiredLodIndex, optimalLodIndex);\n\t\t\t\t}\n\t\t}\n\t\tincrementFileRef(fileIndex, nodeIndex, lodIndex) {\n\t\t\t\tif (fileIndex === -1) return;\n\t\t\t\tlet placement = this.filePlacements[fileIndex];\n\t\t\t\tif (!placement) {\n\t\t\t\t\t\tplacement = new GSplatPlacement(null, this.placement.node, lodIndex);\n\t\t\t\t\t\tthis.filePlacements[fileIndex] = placement;\n\t\t\t\t\t\tconst removeScheduled = this.removedCandidates.delete(fileIndex);\n\t\t\t\t\t\tif (!removeScheduled) {\n\t\t\t\t\t\t\t\tthis.octree.incRefCount(fileIndex);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!this.addFilePlacement(fileIndex)) {\n\t\t\t\t\t\t\t\tthis.octree.ensureFileResource(fileIndex, this.assetLoader);\n\t\t\t\t\t\t\t\tthis.pending.add(fileIndex);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst nodes = this.octree.nodes;\n\t\t\t\tconst node = nodes[nodeIndex];\n\t\t\t\tconst lod = node.lods[lodIndex];\n\t\t\t\tconst interval = new Vec2(lod.offset, lod.offset + lod.count - 1);\n\t\t\t\tplacement.intervals.set(nodeIndex, interval);\n\t\t\t\tthis.dirtyModifiedPlacements = true;\n\t\t}\n\t\tdecrementFileRef(fileIndex, nodeIndex) {\n\t\t\t\tif (fileIndex === -1) return;\n\t\t\t\tconst placement = this.filePlacements[fileIndex];\n\t\t\t\tif (!placement) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (placement) {\n\t\t\t\t\t\tplacement.intervals.delete(nodeIndex);\n\t\t\t\t\t\tthis.dirtyModifiedPlacements = true;\n\t\t\t\t\t\tif (placement.intervals.size === 0) {\n\t\t\t\t\t\t\t\tif (placement.resource) {\n\t\t\t\t\t\t\t\t\t\tthis.activePlacements.delete(placement);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.removedCandidates.add(fileIndex);\n\t\t\t\t\t\t\t\tthis.filePlacements[fileIndex] = null;\n\t\t\t\t\t\t\t\tthis.pending.delete(fileIndex);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\taddFilePlacement(fileIndex) {\n\t\t\t\tconst res = this.octree.getFileResource(fileIndex);\n\t\t\t\tif (res) {\n\t\t\t\t\t\tconst placement = this.filePlacements[fileIndex];\n\t\t\t\t\t\tif (placement) {\n\t\t\t\t\t\t\t\tplacement.resource = res;\n\t\t\t\t\t\t\t\tplacement.aabb.copy(res.aabb);\n\t\t\t\t\t\t\t\tthis.activePlacements.add(placement);\n\t\t\t\t\t\t\t\tthis.dirtyModifiedPlacements = true;\n\t\t\t\t\t\t\t\tthis.removedCandidates.delete(fileIndex);\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t}\n\t\ttestMoved(threshold) {\n\t\t\t\tconst position = this.placement.node.getPosition();\n\t\t\t\tconst length = position.distance(this.previousPosition);\n\t\t\t\tif (length > threshold) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t}\n\t\tupdateMoved() {\n\t\t\t\tthis.previousPosition.copy(this.placement.node.getPosition());\n\t\t}\n\t\tupdate(scene) {\n\t\t\t\tif (this.pending.size) {\n\t\t\t\t\t\tfor (const fileIndex of this.pending){\n\t\t\t\t\t\t\t\tthis.octree.ensureFileResource(fileIndex, this.assetLoader);\n\t\t\t\t\t\t\t\tif (this.addFilePlacement(fileIndex)) {\n\t\t\t\t\t\t\t\t\t\t_tempCompletedUrls.push(fileIndex);\n\t\t\t\t\t\t\t\t\t\tfor (const [nodeIndex, { oldFileIndex, newFileIndex }] of this.pendingDecrements){\n\t\t\t\t\t\t\t\t\t\t\t\tif (newFileIndex === fileIndex) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.decrementFileRef(oldFileIndex, nodeIndex);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.pendingDecrements.delete(nodeIndex);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlet newLodIndex = 0;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst nodeLods = this.octree.nodes[nodeIndex].lods;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor(let li = 0; li < nodeLods.length; li++){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (nodeLods[li].fileIndex === newFileIndex) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnewLodIndex = li;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.nodeLods[nodeIndex] = newLodIndex;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (_tempCompletedUrls.length > 0) {\n\t\t\t\t\t\t\t\tthis.needsLodUpdate = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor (const fileIndex of _tempCompletedUrls){\n\t\t\t\t\t\t\t\tthis.pending.delete(fileIndex);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t_tempCompletedUrls.length = 0;\n\t\t\t\t}\n\t\t\t\tthis.pollPrefetchCompletions();\n\t\t\t\tif (this.octree.environmentUrl && !this.environmentPlacement) {\n\t\t\t\t\t\tthis.octree.ensureEnvironmentResource(this.assetLoader);\n\t\t\t\t\t\tconst envResource = this.octree.environmentResource;\n\t\t\t\t\t\tif (envResource) {\n\t\t\t\t\t\t\t\tthis.environmentPlacement = new GSplatPlacement(envResource, this.placement.node, 0);\n\t\t\t\t\t\t\t\tthis.environmentPlacement.aabb.copy(envResource.aabb);\n\t\t\t\t\t\t\t\tthis.activePlacements.add(this.environmentPlacement);\n\t\t\t\t\t\t\t\tthis.dirtyModifiedPlacements = true;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst dirty = this.dirtyModifiedPlacements;\n\t\t\t\tthis.dirtyModifiedPlacements = false;\n\t\t\t\treturn dirty;\n\t\t}\n\t\tdebugRender(scene) {}\n\t\tconsumeNeedsLodUpdate() {\n\t\t\t\tconst v = this.needsLodUpdate;\n\t\t\t\tthis.needsLodUpdate = false;\n\t\t\t\treturn v;\n\t\t}\n\t\tpollPrefetchCompletions() {\n\t\t\t\tif (this.prefetchPending.size) {\n\t\t\t\t\t\tfor (const fileIndex of this.prefetchPending){\n\t\t\t\t\t\t\t\tthis.octree.ensureFileResource(fileIndex, this.assetLoader);\n\t\t\t\t\t\t\t\tif (this.octree.getFileResource(fileIndex)) {\n\t\t\t\t\t\t\t\t\t\t_tempCompletedUrls.push(fileIndex);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (_tempCompletedUrls.length > 0) {\n\t\t\t\t\t\t\t\tthis.needsLodUpdate = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor (const fileIndex of _tempCompletedUrls){\n\t\t\t\t\t\t\t\tthis.prefetchPending.delete(fileIndex);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t_tempCompletedUrls.length = 0;\n\t\t\t\t}\n\t\t}\n}\n\nconst tmpMin = new Vec3();\nconst tmpMax = new Vec3();\nclass GSplatOctreeNode {\n\t\tconstructor(lods, boundData){\n\t\t\t\tthis.bounds = new BoundingBox();\n\t\t\t\tthis.lods = lods;\n\t\t\t\ttmpMin.set(boundData.min[0], boundData.min[1], boundData.min[2]);\n\t\t\t\ttmpMax.set(boundData.max[0], boundData.max[1], boundData.max[2]);\n\t\t\t\tthis.bounds.setMinMax(tmpMin, tmpMax);\n\t\t}\n}\n\nconst _toDelete = [];\nclass GSplatOctree {\n\t\tconstructor(assetFileUrl, data){\n\t\t\t\tthis.fileResources = new Map();\n\t\t\t\tthis.cooldowns = new Map();\n\t\t\t\tthis.environmentUrl = null;\n\t\t\t\tthis.environmentResource = null;\n\t\t\t\tthis.environmentRefCount = 0;\n\t\t\t\tthis.lodLevels = data.lodLevels;\n\t\t\t\tthis.assetFileUrl = assetFileUrl;\n\t\t\t\tconst baseDir = path.getDirectory(assetFileUrl);\n\t\t\t\tthis.files = data.filenames.map((url)=>({\n\t\t\t\t\t\t\t\turl: path.isRelativePath(url) ? path.join(baseDir, url) : url,\n\t\t\t\t\t\t\t\tlodLevel: -1\n\t\t\t\t\t\t}));\n\t\t\t\tthis.fileRefCounts = new Int32Array(this.files.length);\n\t\t\t\tif (data.environment) {\n\t\t\t\t\t\tthis.environmentUrl = path.isRelativePath(data.environment) ? path.join(baseDir, data.environment) : data.environment;\n\t\t\t\t}\n\t\t\t\tconst leafNodes = [];\n\t\t\t\tthis._extractLeafNodes(data.tree, leafNodes);\n\t\t\t\tthis.nodes = leafNodes.map((nodeData)=>{\n\t\t\t\t\t\tconst lods = [];\n\t\t\t\t\t\tfor(let i = 0; i < this.lodLevels; i++){\n\t\t\t\t\t\t\t\tconst lodData = nodeData.lods[i.toString()];\n\t\t\t\t\t\t\t\tif (lodData) {\n\t\t\t\t\t\t\t\t\t\tlods.push({\n\t\t\t\t\t\t\t\t\t\t\t\tfile: this.files[lodData.file].url || '',\n\t\t\t\t\t\t\t\t\t\t\t\tfileIndex: lodData.file,\n\t\t\t\t\t\t\t\t\t\t\t\toffset: lodData.offset || 0,\n\t\t\t\t\t\t\t\t\t\t\t\tcount: lodData.count || 0\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tthis.files[lodData.file].lodLevel = i;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tlods.push({\n\t\t\t\t\t\t\t\t\t\t\t\tfile: '',\n\t\t\t\t\t\t\t\t\t\t\t\tfileIndex: -1,\n\t\t\t\t\t\t\t\t\t\t\t\toffset: 0,\n\t\t\t\t\t\t\t\t\t\t\t\tcount: 0\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn new GSplatOctreeNode(lods, nodeData.bound);\n\t\t\t\t});\n\t\t}\n\t\t_traceLodCounts() {}\n\t\t_extractLeafNodes(node, leafNodes) {\n\t\t\t\tif (node.lods) {\n\t\t\t\t\t\tleafNodes.push({\n\t\t\t\t\t\t\t\tlods: node.lods,\n\t\t\t\t\t\t\t\tbound: node.bound\n\t\t\t\t\t\t});\n\t\t\t\t} else if (node.children) {\n\t\t\t\t\t\tfor (const child of node.children){\n\t\t\t\t\t\t\t\tthis._extractLeafNodes(child, leafNodes);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tgetFileResource(fileIndex) {\n\t\t\t\treturn this.fileResources.get(fileIndex);\n\t\t}\n\t\tincRefCount(fileIndex) {\n\t\t\t\tconst count = this.fileRefCounts[fileIndex] + 1;\n\t\t\t\tthis.fileRefCounts[fileIndex] = count;\n\t\t\t\tthis.cooldowns.delete(fileIndex);\n\t\t}\n\t\tdecRefCount(fileIndex, cooldownTicks) {\n\t\t\t\tconst count = this.fileRefCounts[fileIndex] - 1;\n\t\t\t\tthis.fileRefCounts[fileIndex] = count;\n\t\t\t\tif (count === 0) {\n\t\t\t\t\t\tthis.cooldowns.set(fileIndex, cooldownTicks);\n\t\t\t\t}\n\t\t}\n\t\tunloadResource(fileIndex, assetLoader) {\n\t\t\t\tif (this.fileResources.has(fileIndex)) {\n\t\t\t\t\t\tconst fullUrl = this.files[fileIndex].url;\n\t\t\t\t\t\tassetLoader.unload(fullUrl);\n\t\t\t\t\t\tthis.fileResources.delete(fileIndex);\n\t\t\t\t\t\tthis._traceLodCounts();\n\t\t\t\t}\n\t\t}\n\t\tupdateCooldownTick(assetLoader) {\n\t\t\t\tif (this.cooldowns.size > 0) {\n\t\t\t\t\t\tthis.cooldowns.forEach((remaining, fileIndex)=>{\n\t\t\t\t\t\t\t\tif (remaining <= 1) {\n\t\t\t\t\t\t\t\t\t\tif (this.fileRefCounts[fileIndex] === 0) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.unloadResource(fileIndex, assetLoader);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t_toDelete.push(fileIndex);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis.cooldowns.set(fileIndex, remaining - 1);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t\t_toDelete.forEach((idx)=>this.cooldowns.delete(idx));\n\t\t\t\t\t\t_toDelete.length = 0;\n\t\t\t\t}\n\t\t}\n\t\tensureFileResource(fileIndex, assetLoader) {\n\t\t\t\tif (this.fileResources.has(fileIndex)) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst fullUrl = this.files[fileIndex].url;\n\t\t\t\tconst res = assetLoader.getResource(fullUrl);\n\t\t\t\tif (res) {\n\t\t\t\t\t\tthis.fileResources.set(fileIndex, res);\n\t\t\t\t\t\tif (this.fileRefCounts[fileIndex] === 0) {\n\t\t\t\t\t\t\t\tthis.cooldowns.set(fileIndex, assetLoader.cooldownTicks);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._traceLodCounts();\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tassetLoader.load(fullUrl);\n\t\t}\n\t\tincEnvironmentRefCount() {\n\t\t\t\tthis.environmentRefCount++;\n\t\t}\n\t\tdecEnvironmentRefCount(assetLoader) {\n\t\t\t\tthis.environmentRefCount--;\n\t\t\t\tif (this.environmentRefCount === 0) {\n\t\t\t\t\t\tthis.unloadEnvironmentResource(assetLoader);\n\t\t\t\t}\n\t\t}\n\t\tensureEnvironmentResource(assetLoader) {\n\t\t\t\tif (!this.environmentUrl) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this.environmentResource) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst res = assetLoader.getResource(this.environmentUrl);\n\t\t\t\tif (res) {\n\t\t\t\t\t\tthis.environmentResource = res;\n\t\t\t\t\t\tif (this.environmentRefCount === 0) {\n\t\t\t\t\t\t\t\tthis.unloadEnvironmentResource(assetLoader);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tassetLoader.load(this.environmentUrl);\n\t\t}\n\t\tunloadEnvironmentResource(assetLoader) {\n\t\t\t\tif (this.environmentResource && this.environmentUrl) {\n\t\t\t\t\t\tassetLoader.unload(this.environmentUrl);\n\t\t\t\t\t\tthis.environmentResource = null;\n\t\t\t\t}\n\t\t}\n}\n\nclass GSplatOctreeResource {\n\t\tconstructor(assetFileUrl, data){\n\t\t\t\tthis.aabb = new BoundingBox();\n\t\t\t\tthis.octree = new GSplatOctree(assetFileUrl, data);\n\t\t\t\tthis.aabb.setMinMax(new Vec3(data.tree.bound.min), new Vec3(data.tree.bound.max));\n\t\t}\n}\n\nclass GSplatWorldState {\n\t\tconstructor(device, version, splats){\n\t\t\t\tthis.version = 0;\n\t\t\t\tthis.sortParametersSet = false;\n\t\t\t\tthis.sortedBefore = false;\n\t\t\t\tthis.splats = [];\n\t\t\t\tthis.textureSize = 0;\n\t\t\t\tthis.totalUsedPixels = 0;\n\t\t\t\tthis.pendingReleases = [];\n\t\t\t\tthis.version = version;\n\t\t\t\tthis.splats = splats;\n\t\t\t\tthis.estimateTextureSize(this.splats, device.maxTextureSize);\n\t\t\t\tthis.assignLines(this.splats, this.textureSize);\n\t\t}\n\t\testimateTextureSize(splats, maxSize) {\n\t\t\t\tconst fits = (size)=>{\n\t\t\t\t\t\tlet rows = 0;\n\t\t\t\t\t\tfor (const splat of splats){\n\t\t\t\t\t\t\t\trows += Math.ceil(splat.activeSplats / size);\n\t\t\t\t\t\t\t\tif (rows > size) return false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn true;\n\t\t\t\t};\n\t\t\t\tlet low = 1;\n\t\t\t\tlet high = maxSize;\n\t\t\t\tlet bestSize = null;\n\t\t\t\twhile(low <= high){\n\t\t\t\t\t\tconst mid = Math.floor((low + high) / 2);\n\t\t\t\t\t\tif (fits(mid)) {\n\t\t\t\t\t\t\t\tbestSize = mid;\n\t\t\t\t\t\t\t\thigh = mid - 1;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tlow = mid + 1;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (bestSize === null) {\n\t\t\t\t\t\tthis.textureSize = 0;\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tthis.textureSize = bestSize;\n\t\t\t\treturn true;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.splats.forEach((splat)=>splat.destroy());\n\t\t\t\tthis.splats.length = 0;\n\t\t}\n\t\tassignLines(splats, size) {\n\t\t\t\tif (splats.length === 0) {\n\t\t\t\t\t\tthis.totalUsedPixels = 0;\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tlet start = 0;\n\t\t\t\tfor (const splat of splats){\n\t\t\t\t\t\tconst activeSplats = splat.activeSplats;\n\t\t\t\t\t\tconst numLines = Math.ceil(activeSplats / size);\n\t\t\t\t\t\tsplat.setLines(start, numLines, size, activeSplats);\n\t\t\t\t\t\tstart += numLines;\n\t\t\t\t}\n\t\t\t\tthis.totalUsedPixels = start * size;\n\t\t}\n}\n\nconst cameraPosition = new Vec3();\nconst cameraDirection = new Vec3();\nconst translation = new Vec3();\nconst invModelMat = new Mat4();\nconst tempNonOctreePlacements = new Set();\nconst tempOctreePlacements = new Set();\nconst _updatedSplats = [];\nconst _splatsNeedingColorUpdate = [];\nconst _cameraDeltas = {\n\t\trotationDelta: 0,\n\t\ttranslationDelta: 0\n};\nconst tempOctreesTicked = new Set();\nconst _lodColorsRaw = [\n\t\t[\n\t\t\t\t1,\n\t\t\t\t0,\n\t\t\t\t0\n\t\t],\n\t\t[\n\t\t\t\t0,\n\t\t\t\t1,\n\t\t\t\t0\n\t\t],\n\t\t[\n\t\t\t\t0,\n\t\t\t\t0,\n\t\t\t\t1\n\t\t],\n\t\t[\n\t\t\t\t1,\n\t\t\t\t1,\n\t\t\t\t0\n\t\t],\n\t\t[\n\t\t\t\t1,\n\t\t\t\t0,\n\t\t\t\t1\n\t\t]\n];\n[\n\t\tnew Color(1, 0, 0),\n\t\tnew Color(0, 1, 0),\n\t\tnew Color(0, 0, 1),\n\t\tnew Color(1, 1, 0),\n\t\tnew Color(1, 0, 1)\n];\nlet _randomColorRaw = null;\nclass GSplatManager {\n\t\tconstructor(device, director, layer, cameraNode){\n\t\t\t\tthis.node = new GraphNode('GSplatManager');\n\t\t\t\tthis.worldStates = new Map();\n\t\t\t\tthis.lastWorldStateVersion = 0;\n\t\t\t\tthis.sortedVersion = 0;\n\t\t\t\tthis.framesTillFullUpdate = 0;\n\t\t\t\tthis.lastLodCameraPos = new Vec3(Infinity, Infinity, Infinity);\n\t\t\t\tthis.lastLodCameraFwd = new Vec3(Infinity, Infinity, Infinity);\n\t\t\t\tthis.lastSortCameraPos = new Vec3(Infinity, Infinity, Infinity);\n\t\t\t\tthis.lastSortCameraFwd = new Vec3(Infinity, Infinity, Infinity);\n\t\t\t\tthis.sortNeeded = true;\n\t\t\t\tthis.lastColorUpdateCameraPos = new Vec3(Infinity, Infinity, Infinity);\n\t\t\t\tthis.lastColorUpdateCameraFwd = new Vec3(Infinity, Infinity, Infinity);\n\t\t\t\tthis.layerPlacements = [];\n\t\t\t\tthis.layerPlacementsDirty = false;\n\t\t\t\tthis.octreeInstances = new Map();\n\t\t\t\tthis.octreeInstancesToDestroy = [];\n\t\t\t\tthis.hasNewOctreeInstances = false;\n\t\t\t\tthis.device = device;\n\t\t\t\tthis.scene = director.scene;\n\t\t\t\tthis.director = director;\n\t\t\t\tthis.cameraNode = cameraNode;\n\t\t\t\tthis.workBuffer = new GSplatWorkBuffer(device);\n\t\t\t\tthis.renderer = new GSplatRenderer(device, this.node, this.cameraNode, layer, this.workBuffer);\n\t\t\t\tthis.sorter = this.createSorter();\n\t\t\t\tthis.cooldownTicks = this.director.assetLoader.cooldownTicks;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.workBuffer.destroy();\n\t\t\t\tthis.renderer.destroy();\n\t\t\t\tthis.sorter.destroy();\n\t\t}\n\t\tget material() {\n\t\t\t\treturn this.renderer.material;\n\t\t}\n\t\tcreateSorter() {\n\t\t\t\tconst sorter = new GSplatUnifiedSorter();\n\t\t\t\tsorter.on('sorted', (count, version, orderData)=>{\n\t\t\t\t\t\tthis.onSorted(count, version, orderData);\n\t\t\t\t});\n\t\t\t\treturn sorter;\n\t\t}\n\t\treconcile(placements) {\n\t\t\t\ttempNonOctreePlacements.clear();\n\t\t\t\tfor (const p of placements){\n\t\t\t\t\t\tif (p.resource instanceof GSplatOctreeResource) {\n\t\t\t\t\t\t\t\tif (!this.octreeInstances.has(p)) {\n\t\t\t\t\t\t\t\t\t\tthis.octreeInstances.set(p, new GSplatOctreeInstance(p.resource.octree, p, this.director.assetLoader));\n\t\t\t\t\t\t\t\t\t\tthis.hasNewOctreeInstances = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\ttempOctreePlacements.add(p);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ttempNonOctreePlacements.add(p);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor (const [placement, inst] of this.octreeInstances){\n\t\t\t\t\t\tif (!tempOctreePlacements.has(placement)) {\n\t\t\t\t\t\t\t\tthis.octreeInstances.delete(placement);\n\t\t\t\t\t\t\t\tthis.layerPlacementsDirty = true;\n\t\t\t\t\t\t\t\tthis.octreeInstancesToDestroy.push(inst);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.layerPlacementsDirty = this.layerPlacements.length !== tempNonOctreePlacements.size;\n\t\t\t\tif (!this.layerPlacementsDirty) {\n\t\t\t\t\t\tfor(let i = 0; i < this.layerPlacements.length; i++){\n\t\t\t\t\t\t\t\tconst existing = this.layerPlacements[i];\n\t\t\t\t\t\t\t\tif (!tempNonOctreePlacements.has(existing)) {\n\t\t\t\t\t\t\t\t\t\tthis.layerPlacementsDirty = true;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.layerPlacements.length = 0;\n\t\t\t\tfor (const p of tempNonOctreePlacements){\n\t\t\t\t\t\tthis.layerPlacements.push(p);\n\t\t\t\t}\n\t\t\t\ttempNonOctreePlacements.clear();\n\t\t\t\ttempOctreePlacements.clear();\n\t\t}\n\t\tupdateWorldState() {\n\t\t\t\tconst worldChanged = this.layerPlacementsDirty || this.worldStates.size === 0;\n\t\t\t\tif (worldChanged) {\n\t\t\t\t\t\tthis.lastWorldStateVersion++;\n\t\t\t\t\t\tconst splats = [];\n\t\t\t\t\t\tconst { colorUpdateAngle, colorUpdateDistance } = this.scene.gsplat;\n\t\t\t\t\t\tfor (const p of this.layerPlacements){\n\t\t\t\t\t\t\t\tconst splatInfo = new GSplatInfo(this.device, p.resource, p);\n\t\t\t\t\t\t\t\tsplatInfo.resetColorAccumulators(colorUpdateAngle, colorUpdateDistance);\n\t\t\t\t\t\t\t\tsplats.push(splatInfo);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor (const [, inst] of this.octreeInstances){\n\t\t\t\t\t\t\t\tinst.activePlacements.forEach((p)=>{\n\t\t\t\t\t\t\t\t\t\tif (p.resource) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst splatInfo = new GSplatInfo(this.device, p.resource, p);\n\t\t\t\t\t\t\t\t\t\t\t\tsplatInfo.resetColorAccumulators(colorUpdateAngle, colorUpdateDistance);\n\t\t\t\t\t\t\t\t\t\t\t\tsplats.push(splatInfo);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.sorter.updateCentersForSplats(splats);\n\t\t\t\t\t\tconst newState = new GSplatWorldState(this.device, this.lastWorldStateVersion, splats);\n\t\t\t\t\t\tfor (const [, inst] of this.octreeInstances){\n\t\t\t\t\t\t\t\tif (inst.removedCandidates && inst.removedCandidates.size) {\n\t\t\t\t\t\t\t\t\t\tfor (const fileIndex of inst.removedCandidates){\n\t\t\t\t\t\t\t\t\t\t\t\tnewState.pendingReleases.push([\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tinst.octree,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfileIndex\n\t\t\t\t\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tinst.removedCandidates.clear();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.octreeInstancesToDestroy.length) {\n\t\t\t\t\t\t\t\tfor (const inst of this.octreeInstancesToDestroy){\n\t\t\t\t\t\t\t\t\t\tconst toRelease = inst.getFileDecrements();\n\t\t\t\t\t\t\t\t\t\tfor (const fileIndex of toRelease){\n\t\t\t\t\t\t\t\t\t\t\t\tnewState.pendingReleases.push([\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tinst.octree,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfileIndex\n\t\t\t\t\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tinst.destroy();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.octreeInstancesToDestroy.length = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.worldStates.set(this.lastWorldStateVersion, newState);\n\t\t\t\t\t\tthis.layerPlacementsDirty = false;\n\t\t\t\t\t\tthis.sortNeeded = true;\n\t\t\t\t}\n\t\t}\n\t\tonSorted(count, version, orderData) {\n\t\t\t\tfor(let v = this.sortedVersion; v < version; v++){\n\t\t\t\t\t\tconst oldState = this.worldStates.get(v);\n\t\t\t\t\t\tif (oldState) {\n\t\t\t\t\t\t\t\tthis.worldStates.delete(v);\n\t\t\t\t\t\t\t\toldState.destroy();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.sortedVersion = version;\n\t\t\t\tconst worldState = this.worldStates.get(version);\n\t\t\t\tif (worldState) {\n\t\t\t\t\t\tif (!worldState.sortedBefore) {\n\t\t\t\t\t\t\t\tworldState.sortedBefore = true;\n\t\t\t\t\t\t\t\tconst textureSize = worldState.textureSize;\n\t\t\t\t\t\t\t\tif (textureSize !== this.workBuffer.textureSize) {\n\t\t\t\t\t\t\t\t\t\tthis.workBuffer.resize(textureSize);\n\t\t\t\t\t\t\t\t\t\tthis.renderer.setMaxNumSplats(textureSize * textureSize);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.workBuffer.render(worldState.splats, this.cameraNode, this.getDebugColors());\n\t\t\t\t\t\t\t\tconst { colorUpdateAngle, colorUpdateDistance } = this.scene.gsplat;\n\t\t\t\t\t\t\t\tworldState.splats.forEach((splat)=>{\n\t\t\t\t\t\t\t\t\t\tsplat.update();\n\t\t\t\t\t\t\t\t\t\tsplat.resetColorAccumulators(colorUpdateAngle, colorUpdateDistance);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tthis.updateColorCameraTracking();\n\t\t\t\t\t\t\t\tif (worldState.pendingReleases && worldState.pendingReleases.length) {\n\t\t\t\t\t\t\t\t\t\tfor (const [octree, fileIndex] of worldState.pendingReleases){\n\t\t\t\t\t\t\t\t\t\t\t\toctree.decRefCount(fileIndex, this.cooldownTicks);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tworldState.pendingReleases.length = 0;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.renderer.update(count, textureSize);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.workBuffer.setOrderData(orderData);\n\t\t\t\t\t\tthis.renderer.frameUpdate(this.scene.gsplat);\n\t\t\t\t}\n\t\t}\n\t\ttestCameraMovedForLod() {\n\t\t\t\tconst distanceThreshold = this.scene.gsplat.lodUpdateDistance;\n\t\t\t\tconst currentCameraPos = this.cameraNode.getPosition();\n\t\t\t\tconst cameraMoved = this.lastLodCameraPos.distance(currentCameraPos) > distanceThreshold;\n\t\t\t\tif (cameraMoved) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tlet cameraRotated = false;\n\t\t\t\tconst lodUpdateAngleDeg = this.scene.gsplat.lodUpdateAngle;\n\t\t\t\tif (lodUpdateAngleDeg > 0) {\n\t\t\t\t\t\tif (Number.isFinite(this.lastLodCameraFwd.x)) {\n\t\t\t\t\t\t\t\tconst currentCameraFwd = this.cameraNode.forward;\n\t\t\t\t\t\t\t\tconst dot = Math.min(1, Math.max(-1, this.lastLodCameraFwd.dot(currentCameraFwd)));\n\t\t\t\t\t\t\t\tconst angle = Math.acos(dot);\n\t\t\t\t\t\t\t\tconst rotThreshold = lodUpdateAngleDeg * math.DEG_TO_RAD;\n\t\t\t\t\t\t\t\tcameraRotated = angle > rotThreshold;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcameraRotated = true;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn cameraMoved || cameraRotated;\n\t\t}\n\t\ttestCameraMovedForSort() {\n\t\t\t\tconst epsilon = 0.001;\n\t\t\t\tif (this.scene.gsplat.radialSorting) {\n\t\t\t\t\t\tconst currentCameraPos = this.cameraNode.getPosition();\n\t\t\t\t\t\tconst distance = this.lastSortCameraPos.distance(currentCameraPos);\n\t\t\t\t\t\treturn distance > epsilon;\n\t\t\t\t}\n\t\t\t\tif (Number.isFinite(this.lastSortCameraFwd.x)) {\n\t\t\t\t\t\tconst currentCameraFwd = this.cameraNode.forward;\n\t\t\t\t\t\tconst dot = Math.min(1, Math.max(-1, this.lastSortCameraFwd.dot(currentCameraFwd)));\n\t\t\t\t\t\tconst angle = Math.acos(dot);\n\t\t\t\t\t\treturn angle > epsilon;\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t}\n\t\tupdateColorCameraTracking() {\n\t\t\t\tthis.lastColorUpdateCameraPos.copy(this.cameraNode.getPosition());\n\t\t\t\tthis.lastColorUpdateCameraFwd.copy(this.cameraNode.forward);\n\t\t}\n\t\tgetDebugColors() {\n\t\t\t\tif (this.scene.gsplat.colorizeColorUpdate) {\n\t\t\t\t\t\t_randomColorRaw ??= [];\n\t\t\t\t\t\tconst r = Math.random();\n\t\t\t\t\t\tconst g = Math.random();\n\t\t\t\t\t\tconst b = Math.random();\n\t\t\t\t\t\tfor(let i = 0; i < _lodColorsRaw.length; i++){\n\t\t\t\t\t\t\t\t_randomColorRaw[i] ??= [\n\t\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\t_randomColorRaw[i][0] = r;\n\t\t\t\t\t\t\t\t_randomColorRaw[i][1] = g;\n\t\t\t\t\t\t\t\t_randomColorRaw[i][2] = b;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn _randomColorRaw;\n\t\t\t\t} else if (this.scene.gsplat.colorizeLod) {\n\t\t\t\t\t\treturn _lodColorsRaw;\n\t\t\t\t}\n\t\t\t\treturn undefined;\n\t\t}\n\t\tcalculateColorCameraDeltas() {\n\t\t\t\t_cameraDeltas.rotationDelta = 0;\n\t\t\t\t_cameraDeltas.translationDelta = 0;\n\t\t\t\tif (isFinite(this.lastColorUpdateCameraPos.x)) {\n\t\t\t\t\t\tconst currentCameraFwd = this.cameraNode.forward;\n\t\t\t\t\t\tconst dot = Math.min(1, Math.max(-1, this.lastColorUpdateCameraFwd.dot(currentCameraFwd)));\n\t\t\t\t\t\t_cameraDeltas.rotationDelta = Math.acos(dot) * math.RAD_TO_DEG;\n\t\t\t\t\t\tconst currentCameraPos = this.cameraNode.getPosition();\n\t\t\t\t\t\t_cameraDeltas.translationDelta = this.lastColorUpdateCameraPos.distance(currentCameraPos);\n\t\t\t\t}\n\t\t\t\treturn _cameraDeltas;\n\t\t}\n\t\tfireFrameReadyEvent() {\n\t\t\t\tconst ready = this.sortedVersion === this.lastWorldStateVersion;\n\t\t\t\tlet loadingCount = 0;\n\t\t\t\tfor (const [, inst] of this.octreeInstances){\n\t\t\t\t\t\tloadingCount += inst.pendingLoadCount;\n\t\t\t\t}\n\t\t\t\tthis.director.eventHandler.fire('frame:ready', this.cameraNode.camera, this.renderer.layer, ready, loadingCount);\n\t\t}\n\t\tupdate() {\n\t\t\t\tthis.sorter.applyPendingSorted();\n\t\t\t\tthis.renderer.updateViewport(this.cameraNode);\n\t\t\t\tlet fullUpdate = false;\n\t\t\t\tthis.framesTillFullUpdate--;\n\t\t\t\tif (this.framesTillFullUpdate <= 0) {\n\t\t\t\t\t\tthis.framesTillFullUpdate = 10;\n\t\t\t\t\t\tif (this.sorter.jobsInFlight < 3) {\n\t\t\t\t\t\t\t\tfullUpdate = true;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst hasNewInstances = this.hasNewOctreeInstances && this.sorter.jobsInFlight < 3;\n\t\t\t\tif (hasNewInstances) this.hasNewOctreeInstances = false;\n\t\t\t\tlet anyInstanceNeedsLodUpdate = false;\n\t\t\t\tlet anyOctreeMoved = false;\n\t\t\t\tlet cameraMovedOrRotatedForLod = false;\n\t\t\t\tif (fullUpdate) {\n\t\t\t\t\t\tfor (const [, inst] of this.octreeInstances){\n\t\t\t\t\t\t\t\tconst isDirty = inst.update(this.scene);\n\t\t\t\t\t\t\t\tthis.layerPlacementsDirty ||= isDirty;\n\t\t\t\t\t\t\t\tconst instNeeds = inst.consumeNeedsLodUpdate();\n\t\t\t\t\t\t\t\tanyInstanceNeedsLodUpdate ||= instNeeds;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst threshold = this.scene.gsplat.lodUpdateDistance;\n\t\t\t\t\t\tfor (const [, inst] of this.octreeInstances){\n\t\t\t\t\t\t\t\tconst moved = inst.testMoved(threshold);\n\t\t\t\t\t\t\t\tanyOctreeMoved ||= moved;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcameraMovedOrRotatedForLod = this.testCameraMovedForLod();\n\t\t\t\t}\n\t\t\t\tif (this.testCameraMovedForSort()) {\n\t\t\t\t\t\tthis.sortNeeded = true;\n\t\t\t\t}\n\t\t\t\tif (this.scene.gsplat.dirty) {\n\t\t\t\t\t\tthis.layerPlacementsDirty = true;\n\t\t\t\t\t\tthis.renderer.updateOverdrawMode(this.scene.gsplat);\n\t\t\t\t}\n\t\t\t\tif (cameraMovedOrRotatedForLod || anyOctreeMoved || this.scene.gsplat.dirty || anyInstanceNeedsLodUpdate || hasNewInstances) {\n\t\t\t\t\t\tfor (const [, inst] of this.octreeInstances){\n\t\t\t\t\t\t\t\tinst.updateMoved();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.lastLodCameraPos.copy(this.cameraNode.getPosition());\n\t\t\t\t\t\tthis.lastLodCameraFwd.copy(this.cameraNode.forward);\n\t\t\t\t\t\tfor (const [, inst] of this.octreeInstances){\n\t\t\t\t\t\t\t\tinst.updateLod(this.cameraNode, this.scene.gsplat);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.updateWorldState();\n\t\t\t\tconst lastState = this.worldStates.get(this.lastWorldStateVersion);\n\t\t\t\tif (lastState) {\n\t\t\t\t\t\tif (!lastState.sortParametersSet) {\n\t\t\t\t\t\t\t\tlastState.sortParametersSet = true;\n\t\t\t\t\t\t\t\tconst payload = this.prepareSortParameters(lastState);\n\t\t\t\t\t\t\t\tthis.sorter.setSortParameters(payload);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.sortNeeded) {\n\t\t\t\t\t\t\t\tthis.sort(lastState);\n\t\t\t\t\t\t\t\tthis.sortNeeded = false;\n\t\t\t\t\t\t\t\tthis.lastSortCameraPos.copy(this.cameraNode.getPosition());\n\t\t\t\t\t\t\t\tthis.lastSortCameraFwd.copy(this.cameraNode.forward);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst sortedState = this.worldStates.get(this.sortedVersion);\n\t\t\t\tif (sortedState) {\n\t\t\t\t\t\tconst { colorUpdateAngle, colorUpdateDistance, colorUpdateDistanceLodScale, colorUpdateAngleLodScale } = this.scene.gsplat;\n\t\t\t\t\t\tconst { rotationDelta, translationDelta } = this.calculateColorCameraDeltas();\n\t\t\t\t\t\tsortedState.splats.forEach((splat)=>{\n\t\t\t\t\t\t\t\tif (splat.update()) {\n\t\t\t\t\t\t\t\t\t\t_updatedSplats.push(splat);\n\t\t\t\t\t\t\t\t\t\tsplat.resetColorAccumulators(colorUpdateAngle, colorUpdateDistance);\n\t\t\t\t\t\t\t\t\t\tthis.sortNeeded = true;\n\t\t\t\t\t\t\t\t} else if (splat.hasSphericalHarmonics) {\n\t\t\t\t\t\t\t\t\t\tsplat.colorAccumulatedRotation += rotationDelta;\n\t\t\t\t\t\t\t\t\t\tsplat.colorAccumulatedTranslation += translationDelta;\n\t\t\t\t\t\t\t\t\t\tconst lodIndex = splat.lodIndex ?? 0;\n\t\t\t\t\t\t\t\t\t\tconst distThreshold = colorUpdateDistance * Math.pow(colorUpdateDistanceLodScale, lodIndex);\n\t\t\t\t\t\t\t\t\t\tconst angleThreshold = colorUpdateAngle * Math.pow(colorUpdateAngleLodScale, lodIndex);\n\t\t\t\t\t\t\t\t\t\tif (splat.colorAccumulatedRotation >= angleThreshold || splat.colorAccumulatedTranslation >= distThreshold) {\n\t\t\t\t\t\t\t\t\t\t\t\t_splatsNeedingColorUpdate.push(splat);\n\t\t\t\t\t\t\t\t\t\t\t\tsplat.resetColorAccumulators(angleThreshold, distThreshold);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (_updatedSplats.length > 0) {\n\t\t\t\t\t\t\t\tthis.workBuffer.render(_updatedSplats, this.cameraNode, this.getDebugColors());\n\t\t\t\t\t\t\t\t_updatedSplats.length = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (_splatsNeedingColorUpdate.length > 0) {\n\t\t\t\t\t\t\t\tthis.workBuffer.renderColor(_splatsNeedingColorUpdate, this.cameraNode, this.getDebugColors());\n\t\t\t\t\t\t\t\t_splatsNeedingColorUpdate.length = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.updateColorCameraTracking();\n\t\t\t\t}\n\t\t\t\tif (this.octreeInstances.size) {\n\t\t\t\t\t\tfor (const [, inst] of this.octreeInstances){\n\t\t\t\t\t\t\t\tconst octree = inst.octree;\n\t\t\t\t\t\t\t\tif (!tempOctreesTicked.has(octree)) {\n\t\t\t\t\t\t\t\t\t\ttempOctreesTicked.add(octree);\n\t\t\t\t\t\t\t\t\t\toctree.updateCooldownTick(this.director.assetLoader);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttempOctreesTicked.clear();\n\t\t\t\t}\n\t\t\t\tthis.fireFrameReadyEvent();\n\t\t\t\tconst { textureSize } = this.workBuffer;\n\t\t\t\treturn textureSize * textureSize;\n\t\t}\n\t\tsort(lastState) {\n\t\t\t\tconst cameraNode = this.cameraNode;\n\t\t\t\tconst cameraMat = cameraNode.getWorldTransform();\n\t\t\t\tcameraMat.getTranslation(cameraPosition);\n\t\t\t\tcameraMat.getZ(cameraDirection).normalize();\n\t\t\t\tconst sorterRequest = [];\n\t\t\t\tlastState.splats.forEach((splat)=>{\n\t\t\t\t\t\tconst modelMat = splat.node.getWorldTransform();\n\t\t\t\t\t\tinvModelMat.copy(modelMat).invert();\n\t\t\t\t\t\tconst uniformScale = modelMat.getScale().x;\n\t\t\t\t\t\tconst transformedDirection = invModelMat.transformVector(cameraDirection).normalize();\n\t\t\t\t\t\tconst transformedPosition = invModelMat.transformPoint(cameraPosition);\n\t\t\t\t\t\tmodelMat.getTranslation(translation);\n\t\t\t\t\t\tconst offset = translation.sub(cameraPosition).dot(cameraDirection);\n\t\t\t\t\t\tconst aabbMin = splat.aabb.getMin();\n\t\t\t\t\t\tconst aabbMax = splat.aabb.getMax();\n\t\t\t\t\t\tsorterRequest.push({\n\t\t\t\t\t\t\t\ttransformedDirection,\n\t\t\t\t\t\t\t\ttransformedPosition,\n\t\t\t\t\t\t\t\toffset,\n\t\t\t\t\t\t\t\tscale: uniformScale,\n\t\t\t\t\t\t\t\tmodelMat: modelMat.data.slice(),\n\t\t\t\t\t\t\t\taabbMin: [\n\t\t\t\t\t\t\t\t\t\taabbMin.x,\n\t\t\t\t\t\t\t\t\t\taabbMin.y,\n\t\t\t\t\t\t\t\t\t\taabbMin.z\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\taabbMax: [\n\t\t\t\t\t\t\t\t\t\taabbMax.x,\n\t\t\t\t\t\t\t\t\t\taabbMax.y,\n\t\t\t\t\t\t\t\t\t\taabbMax.z\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tthis.sorter.setSortParams(sorterRequest, this.scene.gsplat.radialSorting);\n\t\t}\n\t\tprepareSortParameters(worldState) {\n\t\t\t\treturn {\n\t\t\t\t\t\tcommand: 'intervals',\n\t\t\t\t\t\ttextureSize: worldState.textureSize,\n\t\t\t\t\t\ttotalUsedPixels: worldState.totalUsedPixels,\n\t\t\t\t\t\tversion: worldState.version,\n\t\t\t\t\t\tids: worldState.splats.map((splat)=>splat.resource.id),\n\t\t\t\t\t\tlineStarts: worldState.splats.map((splat)=>splat.lineStart),\n\t\t\t\t\t\tpadding: worldState.splats.map((splat)=>splat.padding),\n\t\t\t\t\t\tintervals: worldState.splats.map((splat)=>splat.intervals)\n\t\t\t\t};\n\t\t}\n}\n\nclass GSplatLayerData {\n\t\tconstructor(device, director, layer, cameraNode){\n\t\t\t\tthis.gsplatManager = new GSplatManager(device, director, layer, cameraNode);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.gsplatManager.destroy();\n\t\t}\n}\nclass GSplatCameraData {\n\t\tdestroy() {\n\t\t\t\tthis.layersMap.forEach((layerData)=>layerData.destroy());\n\t\t\t\tthis.layersMap.clear();\n\t\t}\n\t\tremoveLayerData(layer) {\n\t\t\t\tconst layerData = this.layersMap.get(layer);\n\t\t\t\tif (layerData) {\n\t\t\t\t\t\tlayerData.destroy();\n\t\t\t\t\t\tthis.layersMap.delete(layer);\n\t\t\t\t}\n\t\t}\n\t\tgetLayerData(device, director, layer, cameraNode) {\n\t\t\t\tlet layerData = this.layersMap.get(layer);\n\t\t\t\tif (!layerData) {\n\t\t\t\t\t\tlayerData = new GSplatLayerData(device, director, layer, cameraNode);\n\t\t\t\t\t\tthis.layersMap.set(layer, layerData);\n\t\t\t\t\t\tconst material = layerData.gsplatManager.material;\n\t\t\t\t\t\tif (material && director.eventHandler) {\n\t\t\t\t\t\t\t\tdirector.eventHandler.fire('material:created', material, cameraNode.camera, layer);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn layerData;\n\t\t}\n\t\tconstructor(){\n\t\t\t\tthis.layersMap = new Map();\n\t\t}\n}\nclass GSplatDirector {\n\t\tconstructor(device, renderer, scene, assetLoader, eventHandler){\n\t\t\t\tthis.camerasMap = new Map();\n\t\t\t\tthis.device = device;\n\t\t\t\tthis.renderer = renderer;\n\t\t\t\tthis.assetLoader = assetLoader;\n\t\t\t\tthis.scene = scene;\n\t\t\t\tthis.eventHandler = eventHandler;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.camerasMap.forEach((cameraData)=>cameraData.destroy());\n\t\t\t\tthis.camerasMap.clear();\n\t\t}\n\t\tgetCameraData(camera) {\n\t\t\t\tlet cameraData = this.camerasMap.get(camera);\n\t\t\t\tif (!cameraData) {\n\t\t\t\t\t\tcameraData = new GSplatCameraData();\n\t\t\t\t\t\tthis.camerasMap.set(camera, cameraData);\n\t\t\t\t}\n\t\t\t\treturn cameraData;\n\t\t}\n\t\tupdate(comp) {\n\t\t\t\tthis.camerasMap.forEach((cameraData, camera)=>{\n\t\t\t\t\t\tif (!comp.camerasSet.has(camera)) {\n\t\t\t\t\t\t\t\tcameraData.destroy();\n\t\t\t\t\t\t\t\tthis.camerasMap.delete(camera);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcameraData.layersMap.forEach((layerData, layer)=>{\n\t\t\t\t\t\t\t\t\t\tif (!camera.layersSet.has(layer.id) || !layer.enabled) {\n\t\t\t\t\t\t\t\t\t\t\t\tlayerData.destroy();\n\t\t\t\t\t\t\t\t\t\t\t\tcameraData.layersMap.delete(layer);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tlet gsplatCount = 0;\n\t\t\t\tconst camerasComponents = comp.cameras;\n\t\t\t\tfor(let i = 0; i < camerasComponents.length; i++){\n\t\t\t\t\t\tconst camera = camerasComponents[i].camera;\n\t\t\t\t\t\tlet cameraData = this.camerasMap.get(camera);\n\t\t\t\t\t\tconst layerIds = camera.layers;\n\t\t\t\t\t\tfor(let j = 0; j < layerIds.length; j++){\n\t\t\t\t\t\t\t\tconst layer = comp.getLayerById(layerIds[j]);\n\t\t\t\t\t\t\t\tif (layer?.enabled) {\n\t\t\t\t\t\t\t\t\t\tif (layer.gsplatPlacementsDirty || !cameraData) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst placements = layer.gsplatPlacements;\n\t\t\t\t\t\t\t\t\t\t\t\tif (placements.length === 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (cameraData) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcameraData.removeLayerData(layer);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcameraData ??= this.getCameraData(camera);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst layerData = cameraData.getLayerData(this.device, this, layer, camera.node);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlayerData.gsplatManager.reconcile(placements);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (cameraData) {\n\t\t\t\t\t\t\t\tfor (const layerData of cameraData.layersMap.values()){\n\t\t\t\t\t\t\t\t\t\tgsplatCount += layerData.gsplatManager.update();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.renderer._gsplatCount = gsplatCount;\n\t\t\t\tthis.scene.gsplat.dirty = false;\n\t\t\t\tfor(let i = 0; i < comp.layerList.length; i++){\n\t\t\t\t\t\tcomp.layerList[i].gsplatPlacementsDirty = false;\n\t\t\t\t}\n\t\t}\n}\n\nclass GSplatComponent extends Component {\n\t\tconstructor(system, entity){\n\t\t\t\tsuper(system, entity), this._layers = [\n\t\t\t\t\t\tLAYERID_WORLD\n\t\t\t\t], this._instance = null, this._placement = null, this._materialTmp = null, this._highQualitySH = true, this._lodDistances = [\n\t\t\t\t\t\t5,\n\t\t\t\t\t\t10,\n\t\t\t\t\t\t15,\n\t\t\t\t\t\t20,\n\t\t\t\t\t\t25,\n\t\t\t\t\t\t30,\n\t\t\t\t\t\t35,\n\t\t\t\t\t\t40,\n\t\t\t\t\t\t45,\n\t\t\t\t\t\t50,\n\t\t\t\t\t\t55,\n\t\t\t\t\t\t60\n\t\t\t\t], this._customAabb = null, this._evtLayersChanged = null, this._evtLayerAdded = null, this._evtLayerRemoved = null, this._castShadows = false, this._unified = false;\n\t\t\t\tthis._assetReference = new AssetReference('asset', this, system.app.assets, {\n\t\t\t\t\t\tadd: this._onGSplatAssetAdded,\n\t\t\t\t\t\tload: this._onGSplatAssetLoad,\n\t\t\t\t\t\tremove: this._onGSplatAssetRemove,\n\t\t\t\t\t\tunload: this._onGSplatAssetUnload\n\t\t\t\t}, this);\n\t\t\t\tentity.on('remove', this.onRemoveChild, this);\n\t\t\t\tentity.on('removehierarchy', this.onRemoveChild, this);\n\t\t\t\tentity.on('insert', this.onInsertChild, this);\n\t\t\t\tentity.on('inserthierarchy', this.onInsertChild, this);\n\t\t}\n\t\tset customAabb(value) {\n\t\t\t\tthis._customAabb = value;\n\t\t\t\tthis._instance?.meshInstance?.setCustomAabb(this._customAabb);\n\t\t\t\tif (this._placement && this._customAabb) {\n\t\t\t\t\t\tthis._placement.aabb = this._customAabb;\n\t\t\t\t}\n\t\t}\n\t\tget customAabb() {\n\t\t\t\treturn this._customAabb;\n\t\t}\n\t\tset instance(value) {\n\t\t\t\tthis.destroyInstance();\n\t\t\t\tthis._instance = value;\n\t\t\t\tif (this._instance) {\n\t\t\t\t\t\tconst mi = this._instance.meshInstance;\n\t\t\t\t\t\tif (!mi.node) {\n\t\t\t\t\t\t\t\tmi.node = this.entity;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmi.castShadow = this._castShadows;\n\t\t\t\t\t\tmi.setCustomAabb(this._customAabb);\n\t\t\t\t\t\tif (this.enabled && this.entity.enabled) {\n\t\t\t\t\t\t\t\tthis.addToLayers();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget instance() {\n\t\t\t\treturn this._instance;\n\t\t}\n\t\tset material(value) {\n\t\t\t\tif (this.unified) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this._instance) {\n\t\t\t\t\t\tthis._instance.material = value;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._materialTmp = value;\n\t\t\t\t}\n\t\t}\n\t\tget material() {\n\t\t\t\tif (this.unified) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\treturn this._instance?.material ?? this._materialTmp ?? null;\n\t\t}\n\t\tset highQualitySH(value) {\n\t\t\t\tif (value !== this._highQualitySH) {\n\t\t\t\t\t\tthis._highQualitySH = value;\n\t\t\t\t\t\tthis._instance?.setHighQualitySH(value);\n\t\t\t\t}\n\t\t}\n\t\tget highQualitySH() {\n\t\t\t\treturn this._highQualitySH;\n\t\t}\n\t\tset castShadows(value) {\n\t\t\t\tif (this._castShadows !== value) {\n\t\t\t\t\t\tconst mi = this.instance?.meshInstance;\n\t\t\t\t\t\tif (mi) {\n\t\t\t\t\t\t\t\tconst layers = this.layers;\n\t\t\t\t\t\t\t\tconst scene = this.system.app.scene;\n\t\t\t\t\t\t\t\tif (this._castShadows && !value) {\n\t\t\t\t\t\t\t\t\t\tfor(let i = 0; i < layers.length; i++){\n\t\t\t\t\t\t\t\t\t\t\t\tconst layer = scene.layers.getLayerById(this.layers[i]);\n\t\t\t\t\t\t\t\t\t\t\t\tif (layer) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlayer.removeShadowCasters([\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tmi\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tmi.castShadow = value;\n\t\t\t\t\t\t\t\tif (!this._castShadows && value) {\n\t\t\t\t\t\t\t\t\t\tfor(let i = 0; i < layers.length; i++){\n\t\t\t\t\t\t\t\t\t\t\t\tconst layer = scene.layers.getLayerById(layers[i]);\n\t\t\t\t\t\t\t\t\t\t\t\tif (layer) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlayer.addShadowCasters([\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tmi\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._castShadows = value;\n\t\t\t\t}\n\t\t}\n\t\tget castShadows() {\n\t\t\t\treturn this._castShadows;\n\t\t}\n\t\tset lodDistances(value) {\n\t\t\t\tthis._lodDistances = Array.isArray(value) ? value.slice() : null;\n\t\t\t\tif (this._placement) {\n\t\t\t\t\t\tthis._placement.lodDistances = this._lodDistances;\n\t\t\t\t}\n\t\t}\n\t\tget lodDistances() {\n\t\t\t\treturn this._lodDistances ? this._lodDistances.slice() : null;\n\t\t}\n\t\tset unified(value) {\n\t\t\t\tif (this.enabled && this.entity.enabled) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._unified = value;\n\t\t\t\tthis._onGSplatAssetAdded();\n\t\t}\n\t\tget unified() {\n\t\t\t\treturn this._unified;\n\t\t}\n\t\tset layers(value) {\n\t\t\t\tthis.removeFromLayers();\n\t\t\t\tthis._layers.length = 0;\n\t\t\t\tfor(let i = 0; i < value.length; i++){\n\t\t\t\t\t\tthis._layers[i] = value[i];\n\t\t\t\t}\n\t\t\t\tif (!this.enabled || !this.entity.enabled) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.addToLayers();\n\t\t}\n\t\tget layers() {\n\t\t\t\treturn this._layers;\n\t\t}\n\t\tset asset(value) {\n\t\t\t\tconst id = value instanceof Asset ? value.id : value;\n\t\t\t\tif (this._assetReference.id === id) return;\n\t\t\t\tif (this._assetReference.asset && this._assetReference.asset.resource) {\n\t\t\t\t\t\tthis._onGSplatAssetRemove();\n\t\t\t\t}\n\t\t\t\tthis._assetReference.id = id;\n\t\t\t\tif (this._assetReference.asset) {\n\t\t\t\t\t\tthis._onGSplatAssetAdded();\n\t\t\t\t}\n\t\t}\n\t\tget asset() {\n\t\t\t\treturn this._assetReference.id;\n\t\t}\n\t\tdestroyInstance() {\n\t\t\t\tif (this._placement) {\n\t\t\t\t\t\tthis.removeFromLayers();\n\t\t\t\t\t\tthis._placement = null;\n\t\t\t\t}\n\t\t\t\tif (this._instance) {\n\t\t\t\t\t\tthis.removeFromLayers();\n\t\t\t\t\t\tthis._instance?.destroy();\n\t\t\t\t\t\tthis._instance = null;\n\t\t\t\t}\n\t\t}\n\t\taddToLayers() {\n\t\t\t\tif (this._placement) {\n\t\t\t\t\t\tconst layers = this.system.app.scene.layers;\n\t\t\t\t\t\tfor(let i = 0; i < this._layers.length; i++){\n\t\t\t\t\t\t\t\tlayers.getLayerById(this._layers[i])?.addGSplatPlacement(this._placement);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst meshInstance = this.instance?.meshInstance;\n\t\t\t\tif (meshInstance) {\n\t\t\t\t\t\tconst layers = this.system.app.scene.layers;\n\t\t\t\t\t\tfor(let i = 0; i < this._layers.length; i++){\n\t\t\t\t\t\t\t\tlayers.getLayerById(this._layers[i])?.addMeshInstances([\n\t\t\t\t\t\t\t\t\t\tmeshInstance\n\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tremoveFromLayers() {\n\t\t\t\tif (this._placement) {\n\t\t\t\t\t\tconst layers = this.system.app.scene.layers;\n\t\t\t\t\t\tfor(let i = 0; i < this._layers.length; i++){\n\t\t\t\t\t\t\t\tlayers.getLayerById(this._layers[i])?.removeGSplatPlacement(this._placement);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst meshInstance = this.instance?.meshInstance;\n\t\t\t\tif (meshInstance) {\n\t\t\t\t\t\tconst layers = this.system.app.scene.layers;\n\t\t\t\t\t\tfor(let i = 0; i < this._layers.length; i++){\n\t\t\t\t\t\t\t\tlayers.getLayerById(this._layers[i])?.removeMeshInstances([\n\t\t\t\t\t\t\t\t\t\tmeshInstance\n\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tonRemoveChild() {\n\t\t\t\tthis.removeFromLayers();\n\t\t}\n\t\tonInsertChild() {\n\t\t\t\tif (this.enabled && this.entity.enabled) {\n\t\t\t\t\t\tif (this._instance || this._placement) {\n\t\t\t\t\t\t\t\tthis.addToLayers();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tonRemove() {\n\t\t\t\tthis.destroyInstance();\n\t\t\t\tthis.asset = null;\n\t\t\t\tthis._assetReference.id = null;\n\t\t\t\tthis.entity.off('remove', this.onRemoveChild, this);\n\t\t\t\tthis.entity.off('insert', this.onInsertChild, this);\n\t\t}\n\t\tonLayersChanged(oldComp, newComp) {\n\t\t\t\tthis.addToLayers();\n\t\t\t\toldComp.off('add', this.onLayerAdded, this);\n\t\t\t\toldComp.off('remove', this.onLayerRemoved, this);\n\t\t\t\tnewComp.on('add', this.onLayerAdded, this);\n\t\t\t\tnewComp.on('remove', this.onLayerRemoved, this);\n\t\t}\n\t\tonLayerAdded(layer) {\n\t\t\t\tconst index = this.layers.indexOf(layer.id);\n\t\t\t\tif (index < 0) return;\n\t\t\t\tif (this._instance) {\n\t\t\t\t\t\tlayer.addMeshInstances(this._instance.meshInstance);\n\t\t\t\t}\n\t\t}\n\t\tonLayerRemoved(layer) {\n\t\t\t\tconst index = this.layers.indexOf(layer.id);\n\t\t\t\tif (index < 0) return;\n\t\t\t\tif (this._instance) {\n\t\t\t\t\t\tlayer.removeMeshInstances(this._instance.meshInstance);\n\t\t\t\t}\n\t\t}\n\t\tonEnable() {\n\t\t\t\tconst scene = this.system.app.scene;\n\t\t\t\tconst layers = scene.layers;\n\t\t\t\tthis._evtLayersChanged = scene.on('set:layers', this.onLayersChanged, this);\n\t\t\t\tif (layers) {\n\t\t\t\t\t\tthis._evtLayerAdded = layers.on('add', this.onLayerAdded, this);\n\t\t\t\t\t\tthis._evtLayerRemoved = layers.on('remove', this.onLayerRemoved, this);\n\t\t\t\t}\n\t\t\t\tif (this._instance || this._placement) {\n\t\t\t\t\t\tthis.addToLayers();\n\t\t\t\t} else if (this.asset) {\n\t\t\t\t\t\tthis._onGSplatAssetAdded();\n\t\t\t\t}\n\t\t}\n\t\tonDisable() {\n\t\t\t\tconst scene = this.system.app.scene;\n\t\t\t\tconst layers = scene.layers;\n\t\t\t\tthis._evtLayersChanged?.off();\n\t\t\t\tthis._evtLayersChanged = null;\n\t\t\t\tif (layers) {\n\t\t\t\t\t\tthis._evtLayerAdded?.off();\n\t\t\t\t\t\tthis._evtLayerAdded = null;\n\t\t\t\t\t\tthis._evtLayerRemoved?.off();\n\t\t\t\t\t\tthis._evtLayerRemoved = null;\n\t\t\t\t}\n\t\t\t\tthis.removeFromLayers();\n\t\t}\n\t\thide() {\n\t\t\t\tif (this._instance) {\n\t\t\t\t\t\tthis._instance.meshInstance.visible = false;\n\t\t\t\t}\n\t\t}\n\t\tshow() {\n\t\t\t\tif (this._instance) {\n\t\t\t\t\t\tthis._instance.meshInstance.visible = true;\n\t\t\t\t}\n\t\t}\n\t\t_onGSplatAssetAdded() {\n\t\t\t\tif (!this._assetReference.asset) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this._assetReference.asset.resource) {\n\t\t\t\t\t\tthis._onGSplatAssetLoad();\n\t\t\t\t} else if (this.enabled && this.entity.enabled) {\n\t\t\t\t\t\tthis.system.app.assets.load(this._assetReference.asset);\n\t\t\t\t}\n\t\t}\n\t\t_onGSplatAssetLoad() {\n\t\t\t\tthis.destroyInstance();\n\t\t\t\tconst asset = this._assetReference.asset;\n\t\t\t\tif (this.unified) {\n\t\t\t\t\t\tthis._placement = null;\n\t\t\t\t\t\tif (asset) {\n\t\t\t\t\t\t\t\tthis._placement = new GSplatPlacement(asset.resource, this.entity);\n\t\t\t\t\t\t\t\tthis._placement.lodDistances = this._lodDistances;\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tif (asset) {\n\t\t\t\t\t\t\t\tthis.instance = new GSplatInstance(asset.resource, {\n\t\t\t\t\t\t\t\t\t\tmaterial: this._materialTmp,\n\t\t\t\t\t\t\t\t\t\thighQualitySH: this._highQualitySH\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tthis._materialTmp = null;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (asset) {\n\t\t\t\t\t\tthis.customAabb = asset.resource.aabb.clone();\n\t\t\t\t}\n\t\t}\n\t\t_onGSplatAssetUnload() {\n\t\t\t\tthis.destroyInstance();\n\t\t}\n\t\t_onGSplatAssetRemove() {\n\t\t\t\tthis._onGSplatAssetUnload();\n\t\t}\n}\n\nclass GSplatComponentData {\n\t\tconstructor(){\n\t\t\t\tthis.enabled = true;\n\t\t}\n}\n\nclass GSplatAssetLoaderBase {\n\t\tload(url) {}\n\t\tunload(url) {}\n\t\tgetResource(url) {}\n\t\tconstructor(){\n\t\t\t\tthis.cooldownTicks = 100;\n\t\t}\n}\n\nclass GSplatAssetLoader extends GSplatAssetLoaderBase {\n\t\tconstructor(registry){\n\t\t\t\tsuper(), this._urlToAsset = new Map(), this.maxConcurrentLoads = 2, this.maxRetries = 2, this._currentlyLoading = new Set(), this._loadQueue = [], this._retryCount = new Map();\n\t\t\t\tthis._registry = registry;\n\t\t}\n\t\tload(url) {\n\t\t\t\tconst asset = this._urlToAsset.get(url);\n\t\t\t\tif (asset?.loaded || this._currentlyLoading.has(url)) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this._loadQueue.includes(url)) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this._currentlyLoading.size < this.maxConcurrentLoads) {\n\t\t\t\t\t\tthis._startLoading(url);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._loadQueue.push(url);\n\t\t\t\t}\n\t\t}\n\t\t_startLoading(url) {\n\t\t\t\tthis._currentlyLoading.add(url);\n\t\t\t\tlet asset = this._urlToAsset.get(url);\n\t\t\t\tif (!asset) {\n\t\t\t\t\t\tasset = this._registry.getByUrl(url);\n\t\t\t\t\t\tif (!asset) {\n\t\t\t\t\t\t\t\tasset = new Asset(url, 'gsplat', {\n\t\t\t\t\t\t\t\t\t\turl\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tthis._registry.add(asset);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._urlToAsset.set(url, asset);\n\t\t\t\t}\n\t\t\t\tasset.once('load', ()=>this._onAssetLoadSuccess(url, asset));\n\t\t\t\tasset.once('error', (err)=>this._onAssetLoadError(url, asset, err));\n\t\t\t\tif (!asset.loaded && !asset.loading) {\n\t\t\t\t\t\tthis._registry.load(asset);\n\t\t\t\t}\n\t\t}\n\t\t_onAssetLoadSuccess(url, asset) {\n\t\t\t\tthis._currentlyLoading.delete(url);\n\t\t\t\tthis._retryCount.delete(url);\n\t\t\t\tthis._processQueue();\n\t\t}\n\t\t_onAssetLoadError(url, asset, err) {\n\t\t\t\tconst retryCount = this._retryCount.get(url) || 0;\n\t\t\t\tif (retryCount < this.maxRetries) {\n\t\t\t\t\t\tthis._retryCount.set(url, retryCount + 1);\n\t\t\t\t\t\tasset.loaded = false;\n\t\t\t\t\t\tasset.loading = false;\n\t\t\t\t\t\tthis._registry.load(asset);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._currentlyLoading.delete(url);\n\t\t\t\t\t\tthis._retryCount.delete(url);\n\t\t\t\t\t\tthis._processQueue();\n\t\t\t\t}\n\t\t}\n\t\t_processQueue() {\n\t\t\t\twhile(this._currentlyLoading.size < this.maxConcurrentLoads && this._loadQueue.length > 0){\n\t\t\t\t\t\tconst url = this._loadQueue.shift();\n\t\t\t\t\t\tif (url) {\n\t\t\t\t\t\t\t\tthis._startLoading(url);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tunload(url) {\n\t\t\t\tthis._currentlyLoading.delete(url);\n\t\t\t\tconst queueIndex = this._loadQueue.indexOf(url);\n\t\t\t\tif (queueIndex !== -1) {\n\t\t\t\t\t\tthis._loadQueue.splice(queueIndex, 1);\n\t\t\t\t}\n\t\t\t\tthis._retryCount.delete(url);\n\t\t\t\tconst asset = this._urlToAsset.get(url);\n\t\t\t\tif (asset) {\n\t\t\t\t\t\tasset.off('load');\n\t\t\t\t\t\tasset.off('error');\n\t\t\t\t\t\tthis._registry.remove(asset);\n\t\t\t\t\t\tasset.unload();\n\t\t\t\t\t\tthis._urlToAsset.delete(url);\n\t\t\t\t}\n\t\t\t\tthis._processQueue();\n\t\t}\n\t\tgetResource(url) {\n\t\t\t\tconst asset = this._urlToAsset.get(url);\n\t\t\t\treturn asset?.resource;\n\t\t}\n}\n\nvar gsplatCenterVS$1 = `\nuniform mat4 matrix_model;\nuniform mat4 matrix_view;\n#ifndef GSPLAT_CENTER_NOPROJ\n\tuniform mat4 matrix_projection;\n#endif\nbool initCenter(vec3 modelCenter, out SplatCenter center) {\n\tmat4 modelView = matrix_view * matrix_model;\n\tvec4 centerView = modelView * vec4(modelCenter, 1.0);\n\t#ifndef GSPLAT_CENTER_NOPROJ\n\t\tif (centerView.z > 0.0) {\n\t\t\treturn false;\n\t\t}\n\t\tvec4 centerProj = matrix_projection * centerView;\n\t\t#if WEBGPU\n\t\t\tcenterProj.z = clamp(centerProj.z, 0, abs(centerProj.w));\n\t\t#else\n\t\t\tcenterProj.z = clamp(centerProj.z, -abs(centerProj.w), abs(centerProj.w));\n\t\t#endif\n\t\tcenter.proj = centerProj;\n\t\tcenter.projMat00 = matrix_projection[0][0];\n\t#endif\n\tcenter.view = centerView.xyz / centerView.w;\n\tcenter.modelView = modelView;\n\treturn true;\n}\n`;\n\nvar gsplatColorVS$1 = `\nuniform mediump sampler2D splatColor;\nvec4 readColor(in SplatSource source) {\n\treturn texelFetch(splatColor, source.uv, 0);\n}\n`;\n\nvar gsplatCommonVS$1 = `\n#include \"gsplatHelpersVS\"\n#include \"gsplatCustomizeVS\"\n#include \"gsplatStructsVS\"\n#include \"gsplatEvalSHVS\"\n#include \"gsplatQuatToMat3VS\"\n#include \"gsplatSourceFormatVS\"\n#include \"gsplatSourceVS\"\n#include \"gsplatCenterVS\"\n#include \"gsplatCornerVS\"\n#include \"gsplatOutputVS\"\nvoid clipCorner(inout SplatCorner corner, float alpha) {\n\tfloat clip = min(1.0, sqrt(-log(1.0 / (255.0 * alpha))) / 2.0);\n\tcorner.offset *= clip;\n\tcorner.uv *= clip;\n}\n`;\n\nvar gsplatCompressedDataVS$1 = `\n#include \"gsplatPackingPS\"\nuniform highp usampler2D packedTexture;\nuniform highp sampler2D chunkTexture;\nvec4 chunkDataA;\nvec4 chunkDataB;\nvec4 chunkDataC;\nvec4 chunkDataD;\nvec4 chunkDataE;\nuvec4 packedData;\nvec3 unpack111011(uint bits) {\n\treturn vec3(\n\t\tfloat(bits >> 21u) / 2047.0,\n\t\tfloat((bits >> 11u) & 0x3ffu) / 1023.0,\n\t\tfloat(bits & 0x7ffu) / 2047.0\n\t);\n}\nconst float norm = sqrt(2.0);\nvec4 unpackRotation(uint bits) {\n\tfloat a = (float((bits >> 20u) & 0x3ffu) / 1023.0 - 0.5) * norm;\n\tfloat b = (float((bits >> 10u) & 0x3ffu) / 1023.0 - 0.5) * norm;\n\tfloat c = (float(bits & 0x3ffu) / 1023.0 - 0.5) * norm;\n\tfloat m = sqrt(1.0 - (a * a + b * b + c * c));\n\tuint mode = bits >> 30u;\n\tif (mode == 0u) return vec4(m, a, b, c);\n\tif (mode == 1u) return vec4(a, m, b, c);\n\tif (mode == 2u) return vec4(a, b, m, c);\n\treturn vec4(a, b, c, m);\n}\nvec3 readCenter(SplatSource source) {\n\tuint w = uint(textureSize(chunkTexture, 0).x) / 5u;\n\tuint chunkId = source.id / 256u;\n\tivec2 chunkUV = ivec2((chunkId % w) * 5u, chunkId / w);\n\tchunkDataA = texelFetch(chunkTexture, chunkUV, 0);\n\tchunkDataB = texelFetch(chunkTexture, chunkUV + ivec2(1, 0), 0);\n\tchunkDataC = texelFetch(chunkTexture, chunkUV + ivec2(2, 0), 0);\n\tchunkDataD = texelFetch(chunkTexture, chunkUV + ivec2(3, 0), 0);\n\tchunkDataE = texelFetch(chunkTexture, chunkUV + ivec2(4, 0), 0);\n\tpackedData = texelFetch(packedTexture, source.uv, 0);\n\treturn mix(chunkDataA.xyz, vec3(chunkDataA.w, chunkDataB.xy), unpack111011(packedData.x));\n}\nvec4 readColor(in SplatSource source) {\n\tvec4 r = unpack8888(packedData.w);\n\treturn vec4(mix(chunkDataD.xyz, vec3(chunkDataD.w, chunkDataE.xy), r.rgb), r.w);\n}\nvec4 getRotation() {\n\treturn unpackRotation(packedData.y);\n}\nvec3 getScale() {\n\treturn exp(mix(vec3(chunkDataB.zw, chunkDataC.x), chunkDataC.yzw, unpack111011(packedData.z)));\n}\nvoid readCovariance(in SplatSource source, out vec3 covA, out vec3 covB) {\n\tmat3 rot = quatToMat3(getRotation());\n\tvec3 scale = getScale();\n\tmat3 M = transpose(mat3(\n\t\tscale.x * rot[0],\n\t\tscale.y * rot[1],\n\t\tscale.z * rot[2]\n\t));\n\tcovA = vec3(dot(M[0], M[0]), dot(M[0], M[1]), dot(M[0], M[2]));\n\tcovB = vec3(dot(M[1], M[1]), dot(M[1], M[2]), dot(M[2], M[2]));\n}\n`;\n\nvar gsplatCompressedSHVS$1 = `\n#if SH_BANDS > 0\nuniform highp usampler2D shTexture0;\nuniform highp usampler2D shTexture1;\nuniform highp usampler2D shTexture2;\nvec4 unpack8888s(in uint bits) {\n\treturn vec4((uvec4(bits) >> uvec4(0u, 8u, 16u, 24u)) & 0xffu) * (8.0 / 255.0) - 4.0;\n}\nvoid readSHData(in SplatSource source, out vec3 sh[15], out float scale) {\n\tuvec4 shData0 = texelFetch(shTexture0, source.uv, 0);\n\tuvec4 shData1 = texelFetch(shTexture1, source.uv, 0);\n\tuvec4 shData2 = texelFetch(shTexture2, source.uv, 0);\n\tvec4 r0 = unpack8888s(shData0.x);\n\tvec4 r1 = unpack8888s(shData0.y);\n\tvec4 r2 = unpack8888s(shData0.z);\n\tvec4 r3 = unpack8888s(shData0.w);\n\tvec4 g0 = unpack8888s(shData1.x);\n\tvec4 g1 = unpack8888s(shData1.y);\n\tvec4 g2 = unpack8888s(shData1.z);\n\tvec4 g3 = unpack8888s(shData1.w);\n\tvec4 b0 = unpack8888s(shData2.x);\n\tvec4 b1 = unpack8888s(shData2.y);\n\tvec4 b2 = unpack8888s(shData2.z);\n\tvec4 b3 = unpack8888s(shData2.w);\n\tsh[0] =  vec3(r0.x, g0.x, b0.x);\n\tsh[1] =  vec3(r0.y, g0.y, b0.y);\n\tsh[2] =  vec3(r0.z, g0.z, b0.z);\n\tsh[3] =  vec3(r0.w, g0.w, b0.w);\n\tsh[4] =  vec3(r1.x, g1.x, b1.x);\n\tsh[5] =  vec3(r1.y, g1.y, b1.y);\n\tsh[6] =  vec3(r1.z, g1.z, b1.z);\n\tsh[7] =  vec3(r1.w, g1.w, b1.w);\n\tsh[8] =  vec3(r2.x, g2.x, b2.x);\n\tsh[9] =  vec3(r2.y, g2.y, b2.y);\n\tsh[10] = vec3(r2.z, g2.z, b2.z);\n\tsh[11] = vec3(r2.w, g2.w, b2.w);\n\tsh[12] = vec3(r3.x, g3.x, b3.x);\n\tsh[13] = vec3(r3.y, g3.y, b3.y);\n\tsh[14] = vec3(r3.z, g3.z, b3.z);\n\tscale = 1.0;\n}\n#endif\n`;\n\nvar gsplatCustomizeVS$1 = `\nvoid modifyCenter(inout vec3 center) {\n}\nvoid modifyCovariance(vec3 originalCenter, vec3 modifiedCenter, inout vec3 covA, inout vec3 covB) {\n}\nvoid modifyColor(vec3 center, inout vec4 color) {\n}\n`;\n\nvar gsplatEvalSHVS$1 = `\n\t#if SH_BANDS == 1\n\t\t#define SH_COEFFS 3\n\t#elif SH_BANDS == 2\n\t\t#define SH_COEFFS 8\n\t#elif SH_BANDS == 3\n\t\t#define SH_COEFFS 15\n\t#else\n\t\t#define SH_COEFFS 0\n\t#endif\n\t#if SH_BANDS > 0\n\tconst float SH_C1 = 0.4886025119029199f;\n\t#if SH_BANDS > 1\n\t\tconst float SH_C2_0 = 1.0925484305920792f;\n\t\tconst float SH_C2_1 = -1.0925484305920792f;\n\t\tconst float SH_C2_2 = 0.31539156525252005f;\n\t\tconst float SH_C2_3 = -1.0925484305920792f;\n\t\tconst float SH_C2_4 = 0.5462742152960396f;\n\t#endif\n\t#if SH_BANDS > 2\n\t\tconst float SH_C3_0 = -0.5900435899266435f;\n\t\tconst float SH_C3_1 = 2.890611442640554f;\n\t\tconst float SH_C3_2 = -0.4570457994644658f;\n\t\tconst float SH_C3_3 = 0.3731763325901154f;\n\t\tconst float SH_C3_4 = -0.4570457994644658f;\n\t\tconst float SH_C3_5 = 1.445305721320277f;\n\t\tconst float SH_C3_6 = -0.5900435899266435f;\n\t#endif\n\tvec3 evalSH(in vec3 sh[SH_COEFFS], in vec3 dir) {\n\t\tfloat x = dir.x;\n\t\tfloat y = dir.y;\n\t\tfloat z = dir.z;\n\t\tvec3 result = SH_C1 * (-sh[0] * y + sh[1] * z - sh[2] * x);\n\t\t#if SH_BANDS > 1\n\t\t\tfloat xx = x * x;\n\t\t\tfloat yy = y * y;\n\t\t\tfloat zz = z * z;\n\t\t\tfloat xy = x * y;\n\t\t\tfloat yz = y * z;\n\t\t\tfloat xz = x * z;\n\t\t\tresult +=\n\t\t\t\tsh[3] * (SH_C2_0 * xy) +\n\t\t\t\tsh[4] * (SH_C2_1 * yz) +\n\t\t\t\tsh[5] * (SH_C2_2 * (2.0 * zz - xx - yy)) +\n\t\t\t\tsh[6] * (SH_C2_3 * xz) +\n\t\t\t\tsh[7] * (SH_C2_4 * (xx - yy));\n\t\t#endif\n\t\t#if SH_BANDS > 2\n\t\t\tresult +=\n\t\t\t\tsh[8]  * (SH_C3_0 * y * (3.0 * xx - yy)) +\n\t\t\t\tsh[9]  * (SH_C3_1 * xy * z) +\n\t\t\t\tsh[10] * (SH_C3_2 * y * (4.0 * zz - xx - yy)) +\n\t\t\t\tsh[11] * (SH_C3_3 * z * (2.0 * zz - 3.0 * xx - 3.0 * yy)) +\n\t\t\t\tsh[12] * (SH_C3_4 * x * (4.0 * zz - xx - yy)) +\n\t\t\t\tsh[13] * (SH_C3_5 * z * (xx - yy)) +\n\t\t\t\tsh[14] * (SH_C3_6 * x * (xx - 3.0 * yy));\n\t\t#endif\n\t\treturn result;\n\t}\n\t#endif\n`;\n\nvar gsplatHelpersVS$1 = `\nfloat gsplatExtractSize(vec3 covA, vec3 covB) {\n\tfloat tr = covA.x + covB.x + covB.z;\n\treturn sqrt(max(tr, 0.0) / 3.0);\n}\nvoid gsplatApplyUniformScale(inout vec3 covA, inout vec3 covB, float scale) {\n\tfloat s2 = scale * scale;\n\tcovA *= s2;\n\tcovB *= s2;\n}\nvoid gsplatMakeRound(inout vec3 covA, inout vec3 covB, float size) {\n\tfloat s2 = size * size;\n\tcovA = vec3(s2, 0.0, 0.0);\n\tcovB = vec3(s2, 0.0, s2);\n}\n`;\n\nvar gsplatQuatToMat3VS$1 = `\nmat3 quatToMat3(vec4 R) {\n\tvec4 R2 = R + R;\n\tfloat X = R2.x * R.w;\n\tvec4 Y  = R2.y * R;\n\tvec4 Z  = R2.z * R;\n\tfloat W = R2.w * R.w;\n\treturn mat3(\n\t\t1.0 - Z.z - W,\n\t\t\t  Y.z + X,\n\t\t\t  Y.w - Z.x,\n\t\t\t  Y.z - X,\n\t\t1.0 - Y.y - W,\n\t\t\t  Z.w + Y.x,\n\t\t\t  Y.w + Z.x,\n\t\t\t  Z.w - Y.x,\n\t\t1.0 - Y.y - Z.z\n\t);\n}\n`;\n\nvar gsplatSogsColorVS$1 = `\nuniform highp sampler2D packedSh0;\nuniform float sh0_mins;\nuniform float sh0_maxs;\nconst float SH_C0 = 0.28209479177387814;\nvec4 readColor(in SplatSource source) {\n\tvec3 clr = mix(vec3(sh0_mins), vec3(sh0_maxs), unpack111110(pack8888(texelFetch(packedSh0, source.uv, 0))));\n\tfloat alpha = float(packedSample.z & 0xffu) / 255.0;\n\treturn vec4(vec3(0.5) + clr.xyz * SH_C0, alpha);\n}\n`;\n\nvar gsplatSogsDataVS$1 = `\n#include \"gsplatPackingPS\"\nuniform highp usampler2D packedTexture;\nuniform vec3 means_mins;\nuniform vec3 means_maxs;\nuniform float scales_mins;\nuniform float scales_maxs;\nuvec4 packedSample;\nvec3 readCenter(SplatSource source) {\n\tpackedSample = texelFetch(packedTexture, source.uv, 0);\n\tvec3 l = unpack8888(packedSample.x).xyz;\n\tvec3 u = unpack8888(packedSample.y).xyz;\n\tvec3 n = (l + u * 256.0) / 257.0;\n\tvec3 v = mix(means_mins, means_maxs, n);\n\treturn sign(v) * (exp(abs(v)) - 1.0);\n}\nconst float norm = sqrt(2.0);\nvoid readCovariance(in SplatSource source, out vec3 covA, out vec3 covB) {\n\tvec3 qdata = unpack8888(packedSample.z).xyz;\n\tvec3 sdata = unpack101010(packedSample.w >> 2u);\n\tuint qmode = packedSample.w & 0x3u;\n\tvec3 abc = (qdata - 0.5) * norm;\n\tfloat d = sqrt(max(0.0, 1.0 - dot(abc, abc)));\n\tvec4 quat = (qmode == 0u) ? vec4(d, abc) :\n\t\t\t\t((qmode == 1u) ? vec4(abc.x, d, abc.yz) :\n\t\t\t\t((qmode == 2u) ? vec4(abc.xy, d, abc.z) : vec4(abc, d)));\n\tmat3 rot = quatToMat3(quat);\n\tvec3 scale = exp(mix(vec3(scales_mins), vec3(scales_maxs), sdata));\n\tmat3 M = transpose(mat3(\n\t\tscale.x * rot[0],\n\t\tscale.y * rot[1],\n\t\tscale.z * rot[2]\n\t));\n\tcovA = vec3(dot(M[0], M[0]), dot(M[0], M[1]), dot(M[0], M[2]));\n\tcovB = vec3(dot(M[1], M[1]), dot(M[1], M[2]), dot(M[2], M[2]));\n}\n`;\n\nvar gsplatSogsSHVS$1 = `\nuniform highp sampler2D packedShN;\nuniform float shN_mins;\nuniform float shN_maxs;\nvoid readSHData(in SplatSource source, out vec3 sh[SH_COEFFS], out float scale) {\n\tivec2 t = ivec2(packedSample.xy & 255u);\n\tint n = t.x + t.y * 256;\n\tint u = (n % 64) * SH_COEFFS;\n\tint v = n / 64;\n\tfor (int i = 0; i < SH_COEFFS; i++) {\n\t\tsh[i] = mix(vec3(shN_mins), vec3(shN_maxs), unpack111110(pack8888(texelFetch(packedShN, ivec2(u + i, v), 0))));\n\t}\n\tscale = 1.0;\n}\n`;\n\nvar gsplatSourceFormatVS$1 = `\n#if defined(GSPLAT_WORKBUFFER_DATA)\n\t#include \"gsplatWorkBufferVS\"\n#elif GSPLAT_COMPRESSED_DATA == true\n\t#include \"gsplatCompressedDataVS\"\n\t#if SH_COEFFS > 0\n\t\t#include \"gsplatCompressedSHVS\"\n\t#endif\n#elif GSPLAT_SOGS_DATA == true\n\t#include \"gsplatSogsDataVS\"\n\t#include \"gsplatSogsColorVS\"\n\t#if SH_COEFFS > 0\n\t\t#include \"gsplatSogsSHVS\"\n\t#endif\n#else\n\t#include \"gsplatDataVS\"\n\t#include \"gsplatColorVS\"\n\t#if SH_COEFFS > 0\n\t\t#include \"gsplatSHVS\"\n\t#endif\n#endif\n`;\n\nvar gsplatStructsVS$1 = `\nstruct SplatSource {\n\tuint order;\n\tuint id;\n\tivec2 uv;\n\tvec2 cornerUV;\n};\nstruct SplatCenter {\n\tvec3 view;\n\tvec4 proj;\n\tmat4 modelView;\n\tfloat projMat00;\n\tvec3 modelCenterOriginal;\n\tvec3 modelCenterModified;\n};\nstruct SplatCorner {\n\tvec2 offset;\n\tvec2 uv;\n\t#if GSPLAT_AA\n\t\tfloat aaFactor;\n\t#endif\n\tvec2 v;\n\tfloat dlen;\n};\n`;\n\nvar gsplatCornerVS$1 = `\nuniform vec2 viewport;\nuniform vec4 camera_params;\nbool initCornerCov(SplatSource source, SplatCenter center, out SplatCorner corner, vec3 covA, vec3 covB) {\n\tmat3 Vrk = mat3(\n\t\tcovA.x, covA.y, covA.z, \n\t\tcovA.y, covB.x, covB.y,\n\t\tcovA.z, covB.y, covB.z\n\t);\n\tfloat focal = viewport.x * center.projMat00;\n\tvec3 v = camera_params.w == 1.0 ? vec3(0.0, 0.0, 1.0) : center.view.xyz;\n\tfloat J1 = focal / v.z;\n\tvec2 J2 = -J1 / v.z * v.xy;\n\tmat3 J = mat3(\n\t\tJ1, 0.0, J2.x, \n\t\t0.0, J1, J2.y, \n\t\t0.0, 0.0, 0.0\n\t);\n\tmat3 W = transpose(mat3(center.modelView));\n\tmat3 T = W * J;\n\tmat3 cov = transpose(T) * Vrk * T;\n\t#if GSPLAT_AA\n\t\tfloat detOrig = cov[0][0] * cov[1][1] - cov[0][1] * cov[0][1];\n\t\tfloat detBlur = (cov[0][0] + 0.3) * (cov[1][1] + 0.3) - cov[0][1] * cov[0][1];\n\t\tcorner.aaFactor = sqrt(max(detOrig / detBlur, 0.0));\n\t#endif\n\tfloat diagonal1 = cov[0][0] + 0.3;\n\tfloat offDiagonal = cov[0][1];\n\tfloat diagonal2 = cov[1][1] + 0.3;\n\tfloat mid = 0.5 * (diagonal1 + diagonal2);\n\tfloat radius = length(vec2((diagonal1 - diagonal2) / 2.0, offDiagonal));\n\tfloat lambda1 = mid + radius;\n\tfloat lambda2 = max(mid - radius, 0.1);\n\tfloat vmin = min(1024.0, min(viewport.x, viewport.y));\n\tfloat l1 = 2.0 * min(sqrt(2.0 * lambda1), vmin);\n\tfloat l2 = 2.0 * min(sqrt(2.0 * lambda2), vmin);\n\tif (l1 < 2.0 && l2 < 2.0) {\n\t\treturn false;\n\t}\n\tvec2 c = center.proj.ww / viewport;\n\tif (any(greaterThan(abs(center.proj.xy) - vec2(max(l1, l2)) * c, center.proj.ww))) {\n\t\treturn false;\n\t}\n\tvec2 diagonalVector = normalize(vec2(offDiagonal, lambda1 - diagonal1));\n\tvec2 v1 = l1 * diagonalVector;\n\tvec2 v2 = l2 * vec2(diagonalVector.y, -diagonalVector.x);\n\tcorner.offset = (source.cornerUV.x * v1 + source.cornerUV.y * v2) * c;\n\tcorner.uv = source.cornerUV;\n\treturn true;\n}\nbool initCorner(SplatSource source, SplatCenter center, out SplatCorner corner) {\n\tvec3 covA, covB;\n\treadCovariance(source, covA, covB);\n\tmodifyCovariance(center.modelCenterOriginal, center.modelCenterModified, covA, covB);\n\treturn initCornerCov(source, center, corner, covA, covB);\n}\n`;\n\nvar gsplatDataVS$1 = `\nuniform highp usampler2D transformA;\nuniform highp sampler2D transformB;\nuint tAw;\nvec3 readCenter(SplatSource source) {\n\tuvec4 tA = texelFetch(transformA, source.uv, 0);\n\ttAw = tA.w;\n\treturn uintBitsToFloat(tA.xyz);\n}\nvec4 unpackRotation(vec3 packed) {\n\treturn vec4(packed.xyz, sqrt(max(0.0, 1.0 - dot(packed, packed))));\n}\nvoid readCovariance(in SplatSource source, out vec3 covA, out vec3 covB) {\n\tvec4 tB = texelFetch(transformB, source.uv, 0);\n\tmat3 rot = quatToMat3(unpackRotation(vec3(unpackHalf2x16(tAw), tB.w)).wxyz);\n\tvec3 scale = tB.xyz;\n\t\n\tmat3 M = transpose(mat3(\n\t\tscale.x * rot[0],\n\t\tscale.y * rot[1],\n\t\tscale.z * rot[2]\n\t));\n\tcovA = vec3(dot(M[0], M[0]), dot(M[0], M[1]), dot(M[0], M[2]));\n\tcovB = vec3(dot(M[1], M[1]), dot(M[1], M[2]), dot(M[2], M[2]));\n}\n`;\n\nvar gsplatOutputVS$1 = `\n#include \"tonemappingPS\"\n#include \"decodePS\"\n#include \"gammaPS\"\nvec3 prepareOutputFromGamma(vec3 gammaColor) {\n\t#if TONEMAP == NONE\n\t\t#if GAMMA == NONE\n\t\t\treturn decodeGamma(gammaColor);\n\t\t#else\n\t\t\treturn gammaColor;\n\t\t#endif\n\t#else\n\t\treturn gammaCorrectOutput(toneMap(decodeGamma(gammaColor)));\n\t#endif\n}\n`;\n\nvar gsplatPS$1 = `\n#ifndef DITHER_NONE\n\t#include \"bayerPS\"\n\t#include \"opacityDitherPS\"\n\tvarying float id;\n#endif\n#ifdef PICK_PASS\n\t#include \"pickPS\"\n#endif\n#if defined(SHADOW_PASS) || defined(PICK_PASS) || defined(PREPASS_PASS)\n\tuniform float alphaClip;\n#endif\n#ifdef PREPASS_PASS\n\tvarying float vLinearDepth;\n\t#include \"floatAsUintPS\"\n#endif\nvarying mediump vec2 gaussianUV;\nvarying mediump vec4 gaussianColor;\nconst float EXP4 = exp(-4.0);\nconst float INV_EXP4 = 1.0 / (1.0 - EXP4);\nfloat normExp(float x) {\n\treturn (exp(x * -4.0) - EXP4) * INV_EXP4;\n}\nvoid main(void) {\n\tmediump float A = dot(gaussianUV, gaussianUV);\n\tif (A > 1.0) {\n\t\tdiscard;\n\t}\n\tmediump float alpha = normExp(A) * gaussianColor.a;\n\t#if defined(SHADOW_PASS) || defined(PICK_PASS) || defined(PREPASS_PASS)\n\t\tif (alpha < alphaClip) {\n\t\t\tdiscard;\n\t\t}\n\t#endif\n\t#ifdef PICK_PASS\n\t\tgl_FragColor = getPickOutput();\n\t#elif SHADOW_PASS\n\t\tgl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);\n\t#elif PREPASS_PASS\n\t\tgl_FragColor = float2vec4(vLinearDepth);\n\t#else\n\t\tif (alpha < 1.0 / 255.0) {\n\t\t\tdiscard;\n\t\t}\n\t\t#ifndef DITHER_NONE\n\t\t\topacityDither(alpha, id * 0.013);\n\t\t#endif\n\t\tgl_FragColor = vec4(gaussianColor.xyz * alpha, alpha);\n\t#endif\n}\n`;\n\nvar gsplatSHVS$1 = `\n#if SH_BANDS > 0\nvec3 unpack111011s(uint bits) {\n\treturn vec3((uvec3(bits) >> uvec3(21u, 11u, 0u)) & uvec3(0x7ffu, 0x3ffu, 0x7ffu)) / vec3(2047.0, 1023.0, 2047.0) * 2.0 - 1.0;\n}\nvoid fetchScale(in uvec4 t, out float scale, out vec3 a, out vec3 b, out vec3 c) {\n\tscale = uintBitsToFloat(t.x);\n\ta = unpack111011s(t.y);\n\tb = unpack111011s(t.z);\n\tc = unpack111011s(t.w);\n}\nvoid fetch(in uvec4 t, out vec3 a, out vec3 b, out vec3 c, out vec3 d) {\n\ta = unpack111011s(t.x);\n\tb = unpack111011s(t.y);\n\tc = unpack111011s(t.z);\n\td = unpack111011s(t.w);\n}\nvoid fetch(in uint t, out vec3 a) {\n\ta = unpack111011s(t);\n}\n#if SH_BANDS == 1\n\tuniform highp usampler2D splatSH_1to3;\n\tvoid readSHData(in SplatSource source, out vec3 sh[3], out float scale) {\n\t\tfetchScale(texelFetch(splatSH_1to3, source.uv, 0), scale, sh[0], sh[1], sh[2]);\n\t}\n#elif SH_BANDS == 2\n\tuniform highp usampler2D splatSH_1to3;\n\tuniform highp usampler2D splatSH_4to7;\n\tuniform highp usampler2D splatSH_8to11;\n\tvoid readSHData(in SplatSource source, out vec3 sh[8], out float scale) {\n\t\tfetchScale(texelFetch(splatSH_1to3, source.uv, 0), scale, sh[0], sh[1], sh[2]);\n\t\tfetch(texelFetch(splatSH_4to7, source.uv, 0), sh[3], sh[4], sh[5], sh[6]);\n\t\tfetch(texelFetch(splatSH_8to11, source.uv, 0).x, sh[7]);\n\t}\n#else\n\tuniform highp usampler2D splatSH_1to3;\n\tuniform highp usampler2D splatSH_4to7;\n\tuniform highp usampler2D splatSH_8to11;\n\tuniform highp usampler2D splatSH_12to15;\n\tvoid readSHData(in SplatSource source, out vec3 sh[15], out float scale) {\n\t\tfetchScale(texelFetch(splatSH_1to3, source.uv, 0), scale, sh[0], sh[1], sh[2]);\n\t\tfetch(texelFetch(splatSH_4to7, source.uv, 0), sh[3], sh[4], sh[5], sh[6]);\n\t\tfetch(texelFetch(splatSH_8to11, source.uv, 0), sh[7], sh[8], sh[9], sh[10]);\n\t\tfetch(texelFetch(splatSH_12to15, source.uv, 0), sh[11], sh[12], sh[13], sh[14]);\n\t}\n#endif\n#endif\n`;\n\nvar gsplatSourceVS$1 = `\nattribute vec3 vertex_position;\nattribute uint vertex_id_attrib;\nuniform uint numSplats;\nuniform uint splatTextureSize;\nuniform highp usampler2D splatOrder;\nbool initSource(out SplatSource source) {\n\tsource.order = vertex_id_attrib + uint(vertex_position.z);\n\tif (source.order >= numSplats) {\n\t\treturn false;\n\t}\n\tivec2 orderUV = ivec2(source.order % splatTextureSize, source.order / splatTextureSize);\n\tsource.id = texelFetch(splatOrder, orderUV, 0).r;\n\tsource.uv = ivec2(source.id % splatTextureSize, source.id / splatTextureSize);\n\tsource.cornerUV = vertex_position.xy;\n\treturn true;\n}\n`;\n\nvar gsplatVS$1 = `\n#include \"gsplatCommonVS\"\nvarying mediump vec2 gaussianUV;\nvarying mediump vec4 gaussianColor;\n#ifndef DITHER_NONE\n\tvarying float id;\n#endif\nmediump vec4 discardVec = vec4(0.0, 0.0, 2.0, 1.0);\n#ifdef PREPASS_PASS\n\tvarying float vLinearDepth;\n#endif\n#ifdef GSPLAT_OVERDRAW\n\tuniform sampler2D colorRamp;\n\tuniform float colorRampIntensity;\n#endif\nvoid main(void) {\n\tSplatSource source;\n\tif (!initSource(source)) {\n\t\tgl_Position = discardVec;\n\t\treturn;\n\t}\n\t#ifdef GSPLAT_WORKBUFFER_DATA\n\t\tloadSplatTextures(source);\n\t#endif\n\tvec3 modelCenter = readCenter(source);\n\tSplatCenter center;\n\tcenter.modelCenterOriginal = modelCenter;\n\t\n\tmodifyCenter(modelCenter);\n\tcenter.modelCenterModified = modelCenter;\n\tif (!initCenter(modelCenter, center)) {\n\t\tgl_Position = discardVec;\n\t\treturn;\n\t}\n\tSplatCorner corner;\n\tif (!initCorner(source, center, corner)) {\n\t\tgl_Position = discardVec;\n\t\treturn;\n\t}\n\tvec4 clr = readColor(source);\n\t#if GSPLAT_AA\n\t\tclr.a *= corner.aaFactor;\n\t#endif\n\t#if SH_BANDS > 0\n\t\tvec3 dir = normalize(center.view * mat3(center.modelView));\n\t\tvec3 sh[SH_COEFFS];\n\t\tfloat scale;\n\t\treadSHData(source, sh, scale);\n\t\tclr.xyz += evalSH(sh, dir) * scale;\n\t#endif\n\tmodifyColor(modelCenter, clr);\n\tclipCorner(corner, clr.w);\n\tgl_Position = center.proj + vec4(corner.offset, 0, 0);\n\tgaussianUV = corner.uv;\n\t#ifdef GSPLAT_OVERDRAW\n\t\tfloat t = clamp(modelCenter.y / 20.0, 0.0, 1.0);\n\t\tvec3 rampColor = textureLod(colorRamp, vec2(t, 0.5), 0.0).rgb;\n\t\tclr.a *= (1.0 / 32.0) * colorRampIntensity;\n\t\tgaussianColor = vec4(rampColor, clr.a);\n\t#else\n\t\tgaussianColor = vec4(prepareOutputFromGamma(max(clr.xyz, 0.0)), clr.w);\n\t#endif\n\t#ifndef DITHER_NONE\n\t\tid = float(source.id);\n\t#endif\n\t#ifdef PREPASS_PASS\n\t\tvLinearDepth = -center.view.z;\n\t#endif\n}\n`;\n\nvar gsplatWorkBufferVS$1 = `\nuniform highp usampler2D splatTexture0;\nuniform highp usampler2D splatTexture1;\n#ifdef GSPLAT_COLOR_UINT\n\tuniform highp usampler2D splatColor;\n#else\n\tuniform mediump sampler2D splatColor;\n#endif\nuvec4 cachedSplatTexture0Data;\nuvec2 cachedSplatTexture1Data;\nvoid loadSplatTextures(SplatSource source) {\n\tcachedSplatTexture0Data = texelFetch(splatTexture0, source.uv, 0);\n\tcachedSplatTexture1Data = texelFetch(splatTexture1, source.uv, 0).xy;\n}\nvec3 readCenter(SplatSource source) {\n\treturn vec3(uintBitsToFloat(cachedSplatTexture0Data.r), uintBitsToFloat(cachedSplatTexture0Data.g), uintBitsToFloat(cachedSplatTexture0Data.b));\n}\nvoid readCovariance(in SplatSource source, out vec3 cov_A, out vec3 cov_B) {\n\tvec2 covAxy = unpackHalf2x16(cachedSplatTexture1Data.x);\n\tvec2 covBxy = unpackHalf2x16(cachedSplatTexture1Data.y);\n\tvec2 covAzBz = unpackHalf2x16(cachedSplatTexture0Data.a);\n\tcov_A = vec3(covAxy, covAzBz.x);\n\tcov_B = vec3(covBxy, covAzBz.y);\n}\nvec4 readColor(in SplatSource source) {\n\t#ifdef GSPLAT_COLOR_UINT\n\t\tuvec4 packed = texelFetch(splatColor, source.uv, 0);\n\t\tuint packed_rg = packed.r | (packed.g << 16u);\n\t\tuint packed_ba = packed.b | (packed.a << 16u);\n\t\treturn vec4(unpackHalf2x16(packed_rg), unpackHalf2x16(packed_ba));\n\t#else\n\t\treturn texelFetch(splatColor, source.uv, 0);\n\t#endif\n}\n`;\n\nconst gsplatChunksGLSL = {\n\t\tgsplatCenterVS: gsplatCenterVS$1,\n\t\tgsplatCornerVS: gsplatCornerVS$1,\n\t\tgsplatColorVS: gsplatColorVS$1,\n\t\tgsplatCommonVS: gsplatCommonVS$1,\n\t\tgsplatCompressedDataVS: gsplatCompressedDataVS$1,\n\t\tgsplatCompressedSHVS: gsplatCompressedSHVS$1,\n\t\tgsplatCustomizeVS: gsplatCustomizeVS$1,\n\t\tgsplatEvalSHVS: gsplatEvalSHVS$1,\n\t\tgsplatHelpersVS: gsplatHelpersVS$1,\n\t\tgsplatQuatToMat3VS: gsplatQuatToMat3VS$1,\n\t\tgsplatSogsColorVS: gsplatSogsColorVS$1,\n\t\tgsplatSogsDataVS: gsplatSogsDataVS$1,\n\t\tgsplatSogsSHVS: gsplatSogsSHVS$1,\n\t\tgsplatSourceFormatVS: gsplatSourceFormatVS$1,\n\t\tgsplatStructsVS: gsplatStructsVS$1,\n\t\tgsplatDataVS: gsplatDataVS$1,\n\t\tgsplatOutputVS: gsplatOutputVS$1,\n\t\tgsplatPS: gsplatPS$1,\n\t\tgsplatSHVS: gsplatSHVS$1,\n\t\tgsplatSourceVS: gsplatSourceVS$1,\n\t\tgsplatVS: gsplatVS$1,\n\t\tgsplatWorkBufferVS: gsplatWorkBufferVS$1,\n\t\tgsplatPackingPS: gsplatPackingPS$1\n};\n\nvar gsplatCenterVS = `\nuniform matrix_model: mat4x4f;\nuniform matrix_view: mat4x4f;\n#ifndef GSPLAT_CENTER_NOPROJ\n\tuniform matrix_projection: mat4x4f;\n#endif\nfn initCenter(modelCenter: vec3f, center: ptr<function, SplatCenter>) -> bool {\n\tlet modelView: mat4x4f = uniform.matrix_view * uniform.matrix_model;\n\tlet centerView: vec4f = modelView * vec4f(modelCenter, 1.0);\n\t#ifndef GSPLAT_CENTER_NOPROJ\n\t\tif (centerView.z > 0.0) {\n\t\t\treturn false;\n\t\t}\n\t\tvar centerProj: vec4f = uniform.matrix_projection * centerView;\n\t\tcenterProj.z = clamp(centerProj.z, 0.0, abs(centerProj.w));\n\t\tcenter.proj = centerProj;\n\t\tcenter.projMat00 = uniform.matrix_projection[0][0];\n\t#endif\n\tcenter.view = centerView.xyz / centerView.w;\n\tcenter.modelView = modelView;\n\treturn true;\n}\n`;\n\nvar gsplatColorVS = `\nvar splatColor: texture_2d<uff>;\nfn readColor(source: ptr<function, SplatSource>) -> vec4f {\n\treturn textureLoad(splatColor, source.uv, 0);\n}\n`;\n\nvar gsplatCommonVS = `\n#include \"gsplatHelpersVS\"\n#include \"gsplatCustomizeVS\"\n#include \"gsplatStructsVS\"\n#include \"gsplatEvalSHVS\"\n#include \"gsplatQuatToMat3VS\"\n#include \"gsplatSourceFormatVS\"\n#include \"gsplatSourceVS\"\n#include \"gsplatCenterVS\"\n#include \"gsplatCornerVS\"\n#include \"gsplatOutputVS\"\nfn clipCorner(corner: ptr<function, SplatCorner>, alpha: f32) {\n\tlet clip: f32 = min(1.0, sqrt(-log(1.0 / (255.0 * alpha))) / 2.0);\n\tcorner.offset = corner.offset * clip;\n\tcorner.uv = corner.uv * clip;\n}\n`;\n\nvar gsplatCompressedDataVS = `\n#include \"gsplatPackingPS\"\nvar packedTexture: texture_2d<u32>;\nvar chunkTexture: texture_2d<uff>;\nvar<private> chunkDataA: vec4f;\nvar<private> chunkDataB: vec4f;\nvar<private> chunkDataC: vec4f;\nvar<private> chunkDataD: vec4f;\nvar<private> chunkDataE: vec4f;\nvar<private> packedData: vec4u;\nfn unpack111011(bits: u32) -> vec3f {\n\treturn (vec3f((vec3<u32>(bits) >> vec3<u32>(21u, 11u, 0u)) & vec3<u32>(0x7ffu, 0x3ffu, 0x7ffu))) / vec3f(2047.0, 1023.0, 2047.0);\n}\nconst norm_const: f32 = sqrt(2.0);\nfn unpackRotation(bits: u32) -> vec4f {\n\tlet a = (f32((bits >> 20u) & 0x3ffu) / 1023.0 - 0.5) * norm_const;\n\tlet b = (f32((bits >> 10u) & 0x3ffu) / 1023.0 - 0.5) * norm_const;\n\tlet c = (f32(bits & 0x3ffu) / 1023.0 - 0.5) * norm_const;\n\tlet m = sqrt(1.0 - (a * a + b * b + c * c));\n\tlet mode = bits >> 30u;\n\tif (mode == 0u) { return vec4f(m, a, b, c); }\n\tif (mode == 1u) { return vec4f(a, m, b, c); }\n\tif (mode == 2u) { return vec4f(a, b, m, c); }\n\treturn vec4f(a, b, c, m);\n}\nfn readCenter(source: ptr<function, SplatSource>) -> vec3f {\n\tlet tex_size_u = textureDimensions(chunkTexture, 0);\n\tlet w: u32 = tex_size_u.x / 5u;\n\tlet chunkId: u32 = source.id / 256u;\n\tlet chunkUV: vec2<i32> = vec2<i32>(i32((chunkId % w) * 5u), i32(chunkId / w));\n\tchunkDataA = textureLoad(chunkTexture, chunkUV + vec2<i32>(0, 0), 0);\n\tchunkDataB = textureLoad(chunkTexture, chunkUV + vec2<i32>(1, 0), 0);\n\tchunkDataC = textureLoad(chunkTexture, chunkUV + vec2<i32>(2, 0), 0);\n\tchunkDataD = textureLoad(chunkTexture, chunkUV + vec2<i32>(3, 0), 0);\n\tchunkDataE = textureLoad(chunkTexture, chunkUV + vec2<i32>(4, 0), 0);\n\tpackedData = textureLoad(packedTexture, source.uv, 0);\n\treturn mix(chunkDataA.xyz, vec3f(chunkDataA.w, chunkDataB.xy), unpack111011(packedData.x));\n}\nfn readColor(source: ptr<function, SplatSource>) -> vec4f {\n\tlet r = unpack8888(packedData.w);\n\treturn vec4f(mix(chunkDataD.xyz, vec3f(chunkDataD.w, chunkDataE.xy), r.rgb), r.w);\n}\nfn getRotation() -> vec4f {\n\treturn unpackRotation(packedData.y);\n}\nfn getScale() -> vec3f {\n\treturn exp(mix(vec3f(chunkDataB.zw, chunkDataC.x), chunkDataC.yzw, unpack111011(packedData.z)));\n}\nfn readCovariance(source: ptr<function, SplatSource>, covA_ptr: ptr<function, vec3f>, covB_ptr: ptr<function, vec3f>) {\n\tlet rot = quatToMat3(getRotation());\n\tlet scale = getScale();\n\tlet M = transpose(mat3x3f(\n\t\tscale.x * rot[0],\n\t\tscale.y * rot[1],\n\t\tscale.z * rot[2]\n\t));\n\t*covA_ptr = vec3f(dot(M[0], M[0]), dot(M[0], M[1]), dot(M[0], M[2]));\n\t*covB_ptr = vec3f(dot(M[1], M[1]), dot(M[1], M[2]), dot(M[2], M[2]));\n}\n`;\n\nvar gsplatCompressedSHVS = `\n#if SH_BANDS > 0\nvar shTexture0: texture_2d<u32>;\nvar shTexture1: texture_2d<u32>;\nvar shTexture2: texture_2d<u32>;\nfn unpack8888s(bits: u32) -> vec4f {\n\tlet unpacked_u = (vec4<u32>(bits) >> vec4<u32>(0u, 8u, 16u, 24u)) & vec4<u32>(0xffu);\n\treturn vec4f(unpacked_u) * (8.0 / 255.0) - 4.0;\n}\nfn readSHData(source: ptr<function, SplatSource>, sh: ptr<function, array<vec3f, 15>>, scale: ptr<function, f32>) {\n\tlet shData0: vec4<u32> = textureLoad(shTexture0, source.uv, 0);\n\tlet shData1: vec4<u32> = textureLoad(shTexture1, source.uv, 0);\n\tlet shData2: vec4<u32> = textureLoad(shTexture2, source.uv, 0);\n\tlet r0 = unpack8888s(shData0.x);\n\tlet r1 = unpack8888s(shData0.y);\n\tlet r2 = unpack8888s(shData0.z);\n\tlet r3 = unpack8888s(shData0.w);\n\tlet g0 = unpack8888s(shData1.x);\n\tlet g1 = unpack8888s(shData1.y);\n\tlet g2 = unpack8888s(shData1.z);\n\tlet g3 = unpack8888s(shData1.w);\n\tlet b0 = unpack8888s(shData2.x);\n\tlet b1 = unpack8888s(shData2.y);\n\tlet b2 = unpack8888s(shData2.z);\n\tlet b3 = unpack8888s(shData2.w);\n\tsh[0] =  vec3f(r0.x, g0.x, b0.x);\n\tsh[1] =  vec3f(r0.y, g0.y, b0.y);\n\tsh[2] =  vec3f(r0.z, g0.z, b0.z);\n\tsh[3] =  vec3f(r0.w, g0.w, b0.w);\n\tsh[4] =  vec3f(r1.x, g1.x, b1.x);\n\tsh[5] =  vec3f(r1.y, g1.y, b1.y);\n\tsh[6] =  vec3f(r1.z, g1.z, b1.z);\n\tsh[7] =  vec3f(r1.w, g1.w, b1.w);\n\tsh[8] =  vec3f(r2.x, g2.x, b2.x);\n\tsh[9] =  vec3f(r2.y, g2.y, b2.y);\n\tsh[10] = vec3f(r2.z, g2.z, b2.z);\n\tsh[11] = vec3f(r2.w, g2.w, b2.w);\n\tsh[12] = vec3f(r3.x, g3.x, b3.x);\n\tsh[13] = vec3f(r3.y, g3.y, b3.y);\n\tsh[14] = vec3f(r3.z, g3.z, b3.z);\n\t*scale = 1.0;\n}\n#endif\n`;\n\nvar gsplatCustomizeVS = `\nfn modifyCenter(center: ptr<function, vec3f>) {\n}\nfn modifyCovariance(originalCenter: vec3f, modifiedCenter: vec3f, covA: ptr<function, vec3f>, covB: ptr<function, vec3f>) {\n}\nfn modifyColor(center: vec3f, color: ptr<function, vec4f>) {\n}\n`;\n\nvar gsplatEvalSHVS = `\n\t#if SH_BANDS == 1\n\t\tconst SH_COEFFS: i32 = 3;\n\t#elif SH_BANDS == 2\n\t\tconst SH_COEFFS: i32 = 8;\n\t#elif SH_BANDS == 3\n\t\tconst SH_COEFFS: i32 = 15;\n\t#else\n\t\tconst SH_COEFFS: i32 = 0;\n\t#endif\n\t#if SH_BANDS > 0\n\tconst SH_C1: f32 = 0.4886025119029199;\n\t#if SH_BANDS > 1\n\t\tconst SH_C2_0: f32 = 1.0925484305920792;\n\t\tconst SH_C2_1: f32 = -1.0925484305920792;\n\t\tconst SH_C2_2: f32 = 0.31539156525252005;\n\t\tconst SH_C2_3: f32 = -1.0925484305920792;\n\t\tconst SH_C2_4: f32 = 0.5462742152960396;\n\t#endif\n\t#if SH_BANDS > 2\n\t\tconst SH_C3_0: f32 = -0.5900435899266435;\n\t\tconst SH_C3_1: f32 = 2.890611442640554;\n\t\tconst SH_C3_2: f32 = -0.4570457994644658;\n\t\tconst SH_C3_3: f32 = 0.3731763325901154;\n\t\tconst SH_C3_4: f32 = -0.4570457994644658;\n\t\tconst SH_C3_5: f32 = 1.445305721320277;\n\t\tconst SH_C3_6: f32 = -0.5900435899266435;\n\t#endif\n\tfn evalSH(sh: ptr<function, array<vec3f, SH_COEFFS>>, dir: vec3f) -> vec3f {\n\t\tlet x = dir.x;\n\t\tlet y = dir.y;\n\t\tlet z = dir.z;\n\t\tvar result = SH_C1 * (-sh[0] * y + sh[1] * z - sh[2] * x);\n\t\t#if SH_BANDS > 1\n\t\t\tlet xx = x * x;\n\t\t\tlet yy = y * y;\n\t\t\tlet zz = z * z;\n\t\t\tlet xy = x * y;\n\t\t\tlet yz = y * z;\n\t\t\tlet xz = x * z;\n\t\t\tresult = result + (\n\t\t\t\tsh[3] * (SH_C2_0 * xy) +\n\t\t\t\tsh[4] * (SH_C2_1 * yz) +\n\t\t\t\tsh[5] * (SH_C2_2 * (2.0 * zz - xx - yy)) +\n\t\t\t\tsh[6] * (SH_C2_3 * xz) +\n\t\t\t\tsh[7] * (SH_C2_4 * (xx - yy))\n\t\t\t);\n\t\t#endif\n\t\t#if SH_BANDS > 2\n\t\t\tresult = result + (\n\t\t\t\tsh[8]  * (SH_C3_0 * y * (3.0 * xx - yy)) +\n\t\t\t\tsh[9]  * (SH_C3_1 * xy * z) +\n\t\t\t\tsh[10] * (SH_C3_2 * y * (4.0 * zz - xx - yy)) +\n\t\t\t\tsh[11] * (SH_C3_3 * z * (2.0 * zz - 3.0 * xx - 3.0 * yy)) +\n\t\t\t\tsh[12] * (SH_C3_4 * x * (4.0 * zz - xx - yy)) +\n\t\t\t\tsh[13] * (SH_C3_5 * z * (xx - yy)) +\n\t\t\t\tsh[14] * (SH_C3_6 * x * (xx - 3.0 * yy))\n\t\t\t);\n\t\t#endif\n\t\treturn result;\n\t}\n\t#endif\n`;\n\nvar gsplatHelpersVS = `\nfn gsplatExtractSize(covA: vec3f, covB: vec3f) -> f32 {\n\tlet tr = covA.x + covB.x + covB.z;\n\treturn sqrt(max(tr, 0.0) / 3.0);\n}\nfn gsplatApplyUniformScale(covA: ptr<function, vec3f>, covB: ptr<function, vec3f>, scale: f32) {\n\tlet s2 = scale * scale;\n\t*covA = *covA * s2;\n\t*covB = *covB * s2;\n}\nfn gsplatMakeRound(covA: ptr<function, vec3f>, covB: ptr<function, vec3f>, size: f32) {\n\tlet s2 = size * size;\n\t*covA = vec3f(s2, 0.0, 0.0);\n\t*covB = vec3f(s2, 0.0, s2);\n}\n`;\n\nvar gsplatQuatToMat3VS = `\nfn quatToMat3(R: vec4<f32>) -> mat3x3<f32> {\n\tlet R2: vec4<f32> = R + R;\n\tlet X: f32\t   = R2.x * R.w;\n\tlet Y: vec4<f32> = R2.y * R;\n\tlet Z: vec4<f32> = R2.z * R;\n\tlet W: f32\t   = R2.w * R.w;\n\treturn mat3x3<f32>(\n\t\t1.0 - Z.z - W,  Y.z + X,\t  Y.w - Z.x,\n\t\tY.z - X,\t\t1.0 - Y.y - W, Z.w + Y.x,\n\t\tY.w + Z.x,\t  Z.w - Y.x,\t 1.0 - Y.y - Z.z\n\t);\n}\n`;\n\nvar gsplatSogsColorVS = `\nvar packedSh0: texture_2d<f32>;\nuniform sh0_mins: f32;\nuniform sh0_maxs: f32;\nconst SH_C0: f32 = 0.28209479177387814;\nfn readColor(source: ptr<function, SplatSource>) -> vec4f {\n\tlet clr = mix(vec3f(uniform.sh0_mins), vec3f(uniform.sh0_maxs), unpack111110(pack8888(textureLoad(packedSh0, source.uv, 0))));\n\tlet alpha = f32(packedSample.z & 0xffu) / 255.0;\n\treturn vec4f(vec3f(0.5) + clr.xyz * SH_C0, alpha);\n}\n`;\n\nvar gsplatSogsDataVS = `\n#include \"gsplatPackingPS\"\nvar packedTexture: texture_2d<u32>;\nuniform means_mins: vec3f;\nuniform means_maxs: vec3f;\nuniform scales_mins: f32;\nuniform scales_maxs: f32;\nvar<private> packedSample: vec4<u32>;\nfn readCenter(source: ptr<function, SplatSource>) -> vec3f {\n\tpackedSample = textureLoad(packedTexture, source.uv, 0);\n\tlet l = unpack8888(packedSample.x).xyz;\n\tlet u = unpack8888(packedSample.y).xyz;\n\tlet n = (l + u * 256.0) / 257.0;\n\tlet v = mix(uniform.means_mins, uniform.means_maxs, n);\n\treturn sign(v) * (exp(abs(v)) - 1.0);\n}\nconst norm: f32 = sqrt(2.0);\nfn readCovariance(source: ptr<function, SplatSource>, covA_ptr: ptr<function, vec3f>, covB_ptr: ptr<function, vec3f>) {\n\tlet qdata = unpack8888(packedSample.z).xyz;\n\tlet sdata = unpack101010(packedSample.w >> 2u);\n\tlet qmode = packedSample.w & 0x3u;\n\tlet abc = (qdata - 0.5) * norm;\n\tlet d = sqrt(max(0.0, 1.0 - dot(abc, abc)));\n\tvar quat: vec4f;\n\tif (qmode == 0u) {\n\t\tquat = vec4f(d, abc);\n\t} else if (qmode == 1u) {\n\t\tquat = vec4f(abc.x, d, abc.y, abc.z);\n\t} else if (qmode == 2u) {\n\t\tquat = vec4f(abc.x, abc.y, d, abc.z);\n\t} else {\n\t\tquat = vec4f(abc.x, abc.y, abc.z, d);\n\t}\n\tlet rot = quatToMat3(quat);\n\tlet scale = exp(mix(vec3f(uniform.scales_mins), vec3f(uniform.scales_maxs), sdata));\n\tlet M = transpose(mat3x3f(\n\t\tscale.x * rot[0],\n\t\tscale.y * rot[1],\n\t\tscale.z * rot[2]\n\t));\n\t*covA_ptr = vec3f(dot(M[0], M[0]), dot(M[0], M[1]), dot(M[0], M[2]));\n\t*covB_ptr = vec3f(dot(M[1], M[1]), dot(M[1], M[2]), dot(M[2], M[2]));\n}\n`;\n\nvar gsplatSogsSHVS = `\nvar packedShN: texture_2d<f32>;\nuniform shN_mins: f32;\nuniform shN_maxs: f32;\nfn readSHData(source: ptr<function, SplatSource>, sh: ptr<function, array<vec3f, SH_COEFFS>>, scale: ptr<function, f32>) {\n\tlet t = vec2i(packedSample.xy & vec2u(255u));\n\tlet n = t.x + t.y * 256;\n\tlet u = (n % 64) * SH_COEFFS;\n\tlet v = n / 64;\n\tfor (var i: i32 = 0; i < SH_COEFFS; i = i + 1) {\n\t\tsh[i] = mix(vec3f(uniform.shN_mins), vec3f(uniform.shN_maxs), unpack111110(pack8888(textureLoad(packedShN, vec2i(u + i, v), 0))));\n\t}\n\t*scale = 1.0;\n}\n`;\n\nvar gsplatSourceFormatVS = `\n#if defined(GSPLAT_WORKBUFFER_DATA)\n\t#include \"gsplatWorkBufferVS\"\n#elif GSPLAT_COMPRESSED_DATA == true\n\t#include \"gsplatCompressedDataVS\"\n\t#if SH_BANDS > 0\n\t\t#include \"gsplatCompressedSHVS\"\n\t#endif\n#elif GSPLAT_SOGS_DATA\n\t#include \"gsplatSogsDataVS\"\n\t#include \"gsplatSogsColorVS\"\n\t#if SH_BANDS > 0\n\t\t#include \"gsplatSogsSHVS\"\n\t#endif\n#else\n\t#include \"gsplatDataVS\"\n\t#include \"gsplatColorVS\"\n\t#if SH_BANDS > 0\n\t\t#include \"gsplatSHVS\"\n\t#endif\n#endif\n`;\n\nvar gsplatStructsVS = `\nstruct SplatSource {\n\torder: u32,\n\tid: u32,\n\tuv: vec2<i32>,\n\tcornerUV: vec2f,\n}\nstruct SplatCenter {\n\tview: vec3f,\n\tproj: vec4f,\n\tmodelView: mat4x4f,\n\tprojMat00: f32,\n\tmodelCenterOriginal: vec3f,\n\tmodelCenterModified: vec3f,\n}\nstruct SplatCorner {\n\toffset: vec2f,\n\tuv: vec2f,\n\t#if GSPLAT_AA\n\t\taaFactor: f32,\n\t#endif\n}\n`;\n\nvar gsplatCornerVS = `\nuniform viewport: vec2f;\nuniform camera_params: vec4f;\nfn initCornerCov(source: ptr<function, SplatSource>, center: ptr<function, SplatCenter>, corner: ptr<function, SplatCorner>, covA: vec3f, covB: vec3f) -> bool {\n\tlet Vrk = mat3x3f(\n\t\tvec3f(covA.x, covA.y, covA.z),\n\t\tvec3f(covA.y, covB.x, covB.y),\n\t\tvec3f(covA.z, covB.y, covB.z)\n\t);\n\tlet focal = uniform.viewport.x * center.projMat00;\n\tlet v = select(center.view.xyz, vec3f(0.0, 0.0, 1.0), uniform.camera_params.w == 1.0);\n\tlet J1 = focal / v.z;\n\tlet J2 = -J1 / v.z * v.xy;\n\tlet J = mat3x3f(\n\t\tvec3f(J1, 0.0, J2.x),\n\t\tvec3f(0.0, J1, J2.y),\n\t\tvec3f(0.0, 0.0, 0.0)\n\t);\n\tlet W = transpose(mat3x3f(center.modelView[0].xyz, center.modelView[1].xyz, center.modelView[2].xyz));\n\tlet T = W * J;\n\tlet cov = transpose(T) * Vrk * T;\n\t#if GSPLAT_AA\n\t\tlet detOrig = cov[0][0] * cov[1][1] - cov[0][1] * cov[1][0];\n\t\tlet detBlur = (cov[0][0] + 0.3) * (cov[1][1] + 0.3) - cov[0][1] * cov[1][0];\n\t\tcorner.aaFactor = sqrt(detOrig / detBlur);\n\t#endif\n\tlet diagonal1 = cov[0][0] + 0.3;\n\tlet offDiagonal = cov[0][1];\n\tlet diagonal2 = cov[1][1] + 0.3;\n\tlet mid = 0.5 * (diagonal1 + diagonal2);\n\tlet radius = length(vec2f((diagonal1 - diagonal2) / 2.0, offDiagonal));\n\tlet lambda1 = mid + radius;\n\tlet lambda2 = max(mid - radius, 0.1);\n\tlet vmin = min(1024.0, min(uniform.viewport.x, uniform.viewport.y));\n\tlet l1 = 2.0 * min(sqrt(2.0 * lambda1), vmin);\n\tlet l2 = 2.0 * min(sqrt(2.0 * lambda2), vmin);\n\tif (l1 < 2.0 && l2 < 2.0) {\n\t\treturn false;\n\t}\n\tlet c = center.proj.ww / uniform.viewport;\n\tif (any((abs(center.proj.xy) - vec2f(max(l1, l2)) * c) > center.proj.ww)) {\n\t\treturn false;\n\t}\n\tlet diagonalVector = normalize(vec2f(offDiagonal, lambda1 - diagonal1));\n\tlet v1 = l1 * diagonalVector;\n\tlet v2 = l2 * vec2f(diagonalVector.y, -diagonalVector.x);\n\tcorner.offset = (source.cornerUV.x * v1 + source.cornerUV.y * v2) * c;\n\tcorner.uv = source.cornerUV;\n\treturn true;\n}\nfn initCorner(source: ptr<function, SplatSource>, center: ptr<function, SplatCenter>, corner: ptr<function, SplatCorner>) -> bool {\n\tvar covA: vec3f;\n\tvar covB: vec3f;\n\treadCovariance(source, &covA, &covB);\n\tmodifyCovariance(center.modelCenterOriginal, center.modelCenterModified, &covA, &covB);\n\treturn initCornerCov(source, center, corner, covA, covB);\n}\n`;\n\nvar gsplatDataVS = `\nvar transformA: texture_2d<u32>;\nvar transformB: texture_2d<uff>;\nvar<private> tAw: u32;\nfn readCenter(source: ptr<function, SplatSource>) -> vec3f {\n\tlet tA: vec4<u32> = textureLoad(transformA, source.uv, 0);\n\ttAw = tA.w;\n\treturn bitcast<vec3f>(tA.xyz);\n}\nfn unpackRotation(packed: vec3f) -> vec4f {\n\treturn vec4f(packed.xyz, sqrt(max(0.0, 1.0 - dot(packed, packed))));\n}\nfn readCovariance(source: ptr<function, SplatSource>, covA_ptr: ptr<function, vec3f>, covB_ptr: ptr<function, vec3f>) {\n\tlet tB: vec4f = textureLoad(transformB, source.uv, 0);\n\tlet rot: mat3x3f = quatToMat3(unpackRotation(vec3f(unpack2x16float(bitcast<u32>(tAw)), tB.w)).wxyz);\n\tlet scale: vec3f = tB.xyz;\n\tlet M = transpose(mat3x3f(\n\t\tscale.x * rot[0],\n\t\tscale.y * rot[1],\n\t\tscale.z * rot[2]\n\t));\n\t*covA_ptr = vec3f(dot(M[0], M[0]), dot(M[0], M[1]), dot(M[0], M[2]));\n\t*covB_ptr = vec3f(dot(M[1], M[1]), dot(M[1], M[2]), dot(M[2], M[2]));\n}\n`;\n\nvar gsplatOutputVS = `\n#include \"tonemappingPS\"\n#include \"decodePS\"\n#include \"gammaPS\"\nfn prepareOutputFromGamma(gammaColor: vec3f) -> vec3f {\n\t#if TONEMAP == NONE\n\t\t#if GAMMA == NONE\n\t\t\treturn decodeGamma3(gammaColor);\n\t\t#else \n\t\t\treturn gammaColor;\n\t\t#endif\n\t#else\n\t\treturn gammaCorrectOutput(toneMap(decodeGamma3(gammaColor)));\n\t#endif\n}\n`;\n\nvar gsplatPS = `\n#ifndef DITHER_NONE\n\t#include \"bayerPS\"\n\t#include \"opacityDitherPS\"\n\tvarying id: f32;\n#endif\n#ifdef PICK_PASS\n\t#include \"pickPS\"\n#endif\n#if defined(SHADOW_PASS) || defined(PICK_PASS) || defined(PREPASS_PASS)\n\tuniform alphaClip: f32;\n#endif\n#ifdef PREPASS_PASS\n\tvarying vLinearDepth: f32;\n\t#include \"floatAsUintPS\"\n#endif\nconst EXP4\t  = exp(-4.0);\nconst INV_EXP4  = 1.0 / (1.0 - EXP4);\nfn normExp(x: f32) -> f32 {\n\treturn (exp(x * -4.0) - EXP4) * INV_EXP4;\n}\nvarying gaussianUV: vec2f;\nvarying gaussianColor: vec4f;\n@fragment\nfn fragmentMain(input: FragmentInput) -> FragmentOutput {\n\tvar output: FragmentOutput;\n\tlet A: f32 = dot(gaussianUV, gaussianUV);\n\tif (A > 1.0) {\n\t\tdiscard;\n\t\treturn output;\n\t}\n\tvar alpha = normExp(A) * gaussianColor.a;\n\t#if defined(SHADOW_PASS) || defined(PICK_PASS) || defined(PREPASS_PASS)\n\t\tif (alpha < uniform.alphaClip) {\n\t\t\tdiscard;\n\t\t\treturn output;\n\t\t}\n\t#endif\n\t#ifdef PICK_PASS\n\t\toutput.color = getPickOutput();\n\t#elif SHADOW_PASS\n\t\toutput.color = vec4f(0.0, 0.0, 0.0, 1.0);\n\t#elif PREPASS_PASS\n\t\toutput.color = float2vec4(vLinearDepth);\n\t#else\n\t\tif (alpha < (1.0 / 255.0)) {\n\t\t\tdiscard;\n\t\t\treturn output;\n\t\t}\n\t\t#ifndef DITHER_NONE\n\t\t\topacityDither(&alpha, id * 0.013);\n\t\t#endif\n\t\toutput.color = vec4f(input.gaussianColor.xyz * alpha, alpha);\n\t#endif\n\treturn output;\n}`;\n\nvar gsplatSHVS = `\n#if SH_BANDS > 0\nfn unpack111011s(bits: u32) -> vec3f {\n\treturn (vec3f((vec3<u32>(bits) >> vec3<u32>(21u, 11u, 0u)) & vec3<u32>(0x7ffu, 0x3ffu, 0x7ffu)) / vec3f(2047.0, 1023.0, 2047.0)) * 2.0 - 1.0;\n}\nstruct ScaleAndSH {\n\tscale: f32,\n\ta: vec3f,\n\tb: vec3f,\n\tc: vec3f\n};\nfn fetchScale(t_in: vec4<u32>) -> ScaleAndSH {\n\tvar result: ScaleAndSH;\n\tresult.scale = bitcast<f32>(t_in.x);\n\tresult.a = unpack111011s(t_in.y);\n\tresult.b = unpack111011s(t_in.z);\n\tresult.c = unpack111011s(t_in.w);\n\treturn result;\n}\nstruct SH {\n\ta: vec3f,\n\tb: vec3f,\n\tc: vec3f,\n\td: vec3f\n};\nfn fetch4(t_in: vec4<u32>) -> SH {\n\tvar result: SH;\n\tresult.a = unpack111011s(t_in.x);\n\tresult.b = unpack111011s(t_in.y);\n\tresult.c = unpack111011s(t_in.z);\n\tresult.d = unpack111011s(t_in.w);\n\treturn result;\n}\nfn fetch1(t_in: u32) -> vec3f {\n\treturn unpack111011s(t_in);\n}\n#if SH_BANDS == 1\n\tvar splatSH_1to3: texture_2d<u32>;\n\tfn readSHData(source: ptr<function, SplatSource>, sh: ptr<function, array<vec3f, 3>>, scale: ptr<function, f32>) {\n\t\tlet result = fetchScale(textureLoad(splatSH_1to3, source.uv, 0));\n\t\t*scale = result.scale;\n\t\tsh[0] = result.a;\n\t\tsh[1] = result.b;\n\t\tsh[2] = result.c;\n\t}\n#elif SH_BANDS == 2\n\tvar splatSH_1to3: texture_2d<u32>;\n\tvar splatSH_4to7: texture_2d<u32>;\n\tvar splatSH_8to11: texture_2d<u32>;\n\tfn readSHData(source: ptr<function, SplatSource>, sh: ptr<function, array<vec3f, 8>>, scale: ptr<function, f32>) {\n\t\tlet first: ScaleAndSH = fetchScale(textureLoad(splatSH_1to3, source.uv, 0));\n\t\t*scale = first.scale;\n\t\tsh[0] = first.a;\n\t\tsh[1] = first.b;\n\t\tsh[2] = first.c;\n\t\tlet second: SH = fetch4(textureLoad(splatSH_4to7, source.uv, 0));\n\t\tsh[3] = second.a;\n\t\tsh[4] = second.b;\n\t\tsh[5] = second.c;\n\t\tsh[6] = second.d;\n\t\tsh[7] = fetch1(textureLoad(splatSH_8to11, source.uv, 0).x);\n\t}\n#else\n\tvar splatSH_1to3: texture_2d<u32>;\n\tvar splatSH_4to7: texture_2d<u32>;\n\tvar splatSH_8to11: texture_2d<u32>;\n\tvar splatSH_12to15: texture_2d<u32>;\n\tfn readSHData(source: ptr<function, SplatSource>, sh: ptr<function, array<vec3f, 15>>, scale: ptr<function, f32>) {\n\t\tlet first: ScaleAndSH = fetchScale(textureLoad(splatSH_1to3, source.uv, 0));\n\t\t*scale = first.scale;\n\t\tsh[0] = first.a;\n\t\tsh[1] = first.b;\n\t\tsh[2] = first.c;\n\t\tlet second: SH = fetch4(textureLoad(splatSH_4to7, source.uv, 0));\n\t\tsh[3] = second.a;\n\t\tsh[4] = second.b;\n\t\tsh[5] = second.c;\n\t\tsh[6] = second.d;\n\t\tlet third: SH = fetch4(textureLoad(splatSH_8to11, source.uv, 0));\n\t\tsh[7] = third.a;\n\t\tsh[8] = third.b;\n\t\tsh[9] = third.c;\n\t\tsh[10] = third.d;\n\t\tlet fourth: SH = fetch4(textureLoad(splatSH_12to15, source.uv, 0));\n\t\tsh[11] = fourth.a;\n\t\tsh[12] = fourth.b;\n\t\tsh[13] = fourth.c;\n\t\tsh[14] = fourth.d;\n\t}\n#endif\n#endif\n`;\n\nvar gsplatSourceVS = `\nattribute vertex_position: vec3f;\nattribute vertex_id_attrib: u32;\nuniform numSplats: u32;\nuniform splatTextureSize: u32;\n#ifdef STORAGE_ORDER\n\tvar<storage, read> splatOrder: array<u32>;\n#else\n\tvar splatOrder: texture_2d<u32>;\n#endif\nfn initSource(source: ptr<function, SplatSource>) -> bool {\n\tsource.order = vertex_id_attrib + u32(vertex_position.z);\n\tif (source.order >= uniform.numSplats) {\n\t\treturn false;\n\t}\n\t#ifdef STORAGE_ORDER\n\t\tsource.id = splatOrder[source.order];\n\t#else\n\t\tlet uv = vec2u(source.order % uniform.splatTextureSize, source.order / uniform.splatTextureSize);\n\t\tsource.id = textureLoad(splatOrder, vec2i(uv), 0).r;\n\t#endif\n\tsource.uv = vec2i(vec2u(source.id % uniform.splatTextureSize, source.id / uniform.splatTextureSize));\n\tsource.cornerUV = vertex_position.xy;\n\treturn true;\n}\n`;\n\nvar gsplatVS = `\n#include \"gsplatCommonVS\"\nvarying gaussianUV: vec2f;\nvarying gaussianColor: vec4f;\n#ifndef DITHER_NONE\n\tvarying id: f32;\n#endif\nconst discardVec: vec4f = vec4f(0.0, 0.0, 2.0, 1.0);\n#ifdef PREPASS_PASS\n\tvarying vLinearDepth: f32;\n#endif\n#ifdef GSPLAT_OVERDRAW\n\tuniform colorRampIntensity: f32;\n\tvar colorRamp: texture_2d<f32>;\n\tvar colorRampSampler: sampler;\n#endif\n@vertex\nfn vertexMain(input: VertexInput) -> VertexOutput {\n\tvar output: VertexOutput;\n\tvar source: SplatSource;\n\tif (!initSource(&source)) {\n\t\toutput.position = discardVec;\n\t\treturn output;\n\t}\n\t#ifdef GSPLAT_WORKBUFFER_DATA\n\t\tloadSplatTextures(&source);\n\t#endif\n\tvar modelCenter: vec3f = readCenter(&source);\n\tvar center: SplatCenter;\n\tcenter.modelCenterOriginal = modelCenter;\n\t\n\tmodifyCenter(&modelCenter);\n\tcenter.modelCenterModified = modelCenter;\n\tif (!initCenter(modelCenter, &center)) {\n\t\toutput.position = discardVec;\n\t\treturn output;\n\t}\n\tvar corner: SplatCorner;\n\tif (!initCorner(&source, &center, &corner)) {\n\t\toutput.position = discardVec;\n\t\treturn output;\n\t}\n\tvar clr: vec4f = readColor(&source);\n\t#if GSPLAT_AA\n\t\tclr.a = clr.a * corner.aaFactor;\n\t#endif\n\t#if SH_BANDS > 0\n\t\tlet modelView3x3 = mat3x3f(center.modelView[0].xyz, center.modelView[1].xyz, center.modelView[2].xyz);\n\t\tlet dir = normalize(center.view * modelView3x3);\n\t\tvar sh: array<vec3f, SH_COEFFS>;\n\t\tvar scale: f32;\n\t\treadSHData(&source, &sh, &scale);\n\t\tclr = vec4f(clr.xyz + evalSH(&sh, dir) * scale, clr.a);\n\t#endif\n\tmodifyColor(modelCenter, &clr);\n\tclipCorner(&corner, clr.w);\n\toutput.position = center.proj + vec4f(corner.offset, 0.0, 0.0);\n\toutput.gaussianUV = corner.uv;\n\t#ifdef GSPLAT_OVERDRAW\n\t\tlet t: f32 = clamp(originalCenter.y / 20.0, 0.0, 1.0);\n\t\tlet rampColor: vec3f = textureSampleLevel(colorRamp, colorRampSampler, vec2f(t, 0.5), 0.0).rgb;\n\t\tclr.a = clr.a * (1.0 / 32.0) * uniform.colorRampIntensity;\n\t\toutput.gaussianColor = vec4f(rampColor, clr.a);\n\t#else\n\t\toutput.gaussianColor = vec4f(prepareOutputFromGamma(max(clr.xyz, vec3f(0.0))), clr.w);\n\t#endif\n\t#ifndef DITHER_NONE\n\t\toutput.id = f32(source.id);\n\t#endif\n\t#ifdef PREPASS_PASS\n\t\toutput.vLinearDepth = -center.view.z;\n\t#endif\n\treturn output;\n}\n`;\n\nvar gsplatWorkBufferVS = `\nvar splatTexture0: texture_2d<u32>;\nvar splatTexture1: texture_2d<u32>;\nvar splatColor: texture_2d<uff>;\nvar<private> cachedSplatTexture0Data: vec4u;\nvar<private> cachedSplatTexture1Data: vec2u;\nfn loadSplatTextures(source: ptr<function, SplatSource>) {\n\tcachedSplatTexture0Data = textureLoad(splatTexture0, source.uv, 0);\n\tcachedSplatTexture1Data = textureLoad(splatTexture1, source.uv, 0).xy;\n}\nfn readCenter(source: ptr<function, SplatSource>) -> vec3f {\n\treturn vec3f(bitcast<f32>(cachedSplatTexture0Data.r), bitcast<f32>(cachedSplatTexture0Data.g), bitcast<f32>(cachedSplatTexture0Data.b));\n}\nfn readCovariance(source: ptr<function, SplatSource>, cov_A: ptr<function, vec3f>, cov_B: ptr<function, vec3f>) {\n\tlet covAxy = unpack2x16float(cachedSplatTexture1Data.x);\n\tlet covBxy = unpack2x16float(cachedSplatTexture1Data.y);\n\tlet covAzBz = unpack2x16float(cachedSplatTexture0Data.a);\n\t*cov_A = vec3f(covAxy, covAzBz.x);\n\t*cov_B = vec3f(covBxy, covAzBz.y);\n}\nfn readColor(source: ptr<function, SplatSource>) -> vec4f {\n\treturn textureLoad(splatColor, source.uv, 0);\n}   \n`;\n\nconst gsplatChunksWGSL = {\n\t\tgsplatCenterVS,\n\t\tgsplatCornerVS,\n\t\tgsplatColorVS,\n\t\tgsplatCommonVS,\n\t\tgsplatCompressedDataVS,\n\t\tgsplatCompressedSHVS,\n\t\tgsplatCustomizeVS,\n\t\tgsplatEvalSHVS,\n\t\tgsplatHelpersVS,\n\t\tgsplatSourceFormatVS,\n\t\tgsplatStructsVS,\n\t\tgsplatQuatToMat3VS,\n\t\tgsplatSogsColorVS,\n\t\tgsplatSogsDataVS,\n\t\tgsplatSogsSHVS,\n\t\tgsplatDataVS,\n\t\tgsplatOutputVS,\n\t\tgsplatPS,\n\t\tgsplatSHVS,\n\t\tgsplatSourceVS,\n\t\tgsplatVS,\n\t\tgsplatWorkBufferVS,\n\t\tgsplatPackingPS\n};\n\nconst _schema = [\n\t\t'enabled'\n];\nconst _properties = [\n\t\t'unified',\n\t\t'lodDistances',\n\t\t'castShadows',\n\t\t'material',\n\t\t'highQualitySH',\n\t\t'asset',\n\t\t'layers'\n];\nclass GSplatComponentSystem extends ComponentSystem {\n\t\tstatic{\n\t\t\t\tthis.EVENT_MATERIALCREATED = 'material:created';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_FRAMEREADY = 'frame:ready';\n\t\t}\n\t\tconstructor(app){\n\t\t\t\tsuper(app);\n\t\t\t\tthis.id = 'gsplat';\n\t\t\t\tthis.ComponentType = GSplatComponent;\n\t\t\t\tthis.DataType = GSplatComponentData;\n\t\t\t\tthis.schema = _schema;\n\t\t\t\tconst gsplatAssetLoader = new GSplatAssetLoader(app.assets);\n\t\t\t\tapp.renderer.gsplatDirector = new GSplatDirector(app.graphicsDevice, app.renderer, app.scene, gsplatAssetLoader, this);\n\t\t\t\tShaderChunks.get(app.graphicsDevice, SHADERLANGUAGE_GLSL).add(gsplatChunksGLSL);\n\t\t\t\tShaderChunks.get(app.graphicsDevice, SHADERLANGUAGE_WGSL).add(gsplatChunksWGSL);\n\t\t\t\tthis.on('beforeremove', this.onRemove, this);\n\t\t}\n\t\tinitializeComponentData(component, _data, properties) {\n\t\t\t\tif (_data.layers && _data.layers.length) {\n\t\t\t\t\t\t_data.layers = _data.layers.slice(0);\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < _properties.length; i++){\n\t\t\t\t\t\tif (_data.hasOwnProperty(_properties[i])) {\n\t\t\t\t\t\t\t\tcomponent[_properties[i]] = _data[_properties[i]];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (_data.aabbCenter && _data.aabbHalfExtents) {\n\t\t\t\t\t\tcomponent.customAabb = new BoundingBox(new Vec3(_data.aabbCenter), new Vec3(_data.aabbHalfExtents));\n\t\t\t\t}\n\t\t\t\tsuper.initializeComponentData(component, _data, _schema);\n\t\t}\n\t\tcloneComponent(entity, clone) {\n\t\t\t\tconst gSplatComponent = entity.gsplat;\n\t\t\t\tconst data = {};\n\t\t\t\t_properties.forEach((prop)=>{\n\t\t\t\t\t\tif (prop === 'material') {\n\t\t\t\t\t\t\t\tif (!gSplatComponent.unified) {\n\t\t\t\t\t\t\t\t\t\tconst srcMaterial = gSplatComponent[prop];\n\t\t\t\t\t\t\t\t\t\tif (srcMaterial) {\n\t\t\t\t\t\t\t\t\t\t\t\tdata[prop] = srcMaterial.clone();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tdata[prop] = gSplatComponent[prop];\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tdata.enabled = gSplatComponent.enabled;\n\t\t\t\tconst component = this.addComponent(clone, data);\n\t\t\t\tif (gSplatComponent.customAabb) {\n\t\t\t\t\t\tcomponent.customAabb = gSplatComponent.customAabb.clone();\n\t\t\t\t}\n\t\t\t\treturn component;\n\t\t}\n\t\tonRemove(entity, component) {\n\t\t\t\tcomponent.onRemove();\n\t\t}\n\t\tgetGSplatMaterial(camera, layer) {\n\t\t\t\tconst director = this.app.renderer.gsplatDirector;\n\t\t\t\tif (!director) return null;\n\t\t\t\tconst cameraData = director.camerasMap.get(camera);\n\t\t\t\tif (!cameraData) return null;\n\t\t\t\tconst layerData = cameraData.layersMap.get(layer);\n\t\t\t\treturn layerData?.gsplatManager?.material ?? null;\n\t\t}\n}\nComponent._buildAccessors(GSplatComponent.prototype, _schema);\n\nclass Render extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_SETMESHES = 'set:meshes';\n\t\t}\n\t\tset meshes(value) {\n\t\t\t\tthis.decRefMeshes();\n\t\t\t\tthis._meshes = value;\n\t\t\t\tthis.incRefMeshes();\n\t\t\t\tthis.fire('set:meshes', value);\n\t\t}\n\t\tget meshes() {\n\t\t\t\treturn this._meshes;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.meshes = null;\n\t\t}\n\t\tdecRefMeshes() {\n\t\t\t\tthis._meshes?.forEach((mesh, index)=>{\n\t\t\t\t\t\tif (mesh) {\n\t\t\t\t\t\t\t\tmesh.decRefCount();\n\t\t\t\t\t\t\t\tif (mesh.refCount < 1) {\n\t\t\t\t\t\t\t\t\t\tmesh.destroy();\n\t\t\t\t\t\t\t\t\t\tthis._meshes[index] = null;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\tincRefMeshes() {\n\t\t\t\tthis._meshes?.forEach((mesh)=>{\n\t\t\t\t\t\tmesh?.incRefCount();\n\t\t\t\t});\n\t\t}\n\t\tconstructor(...args){\n\t\t\t\tsuper(...args), this._meshes = null;\n\t\t}\n}\n\nfunction onContainerAssetLoaded(containerAsset) {\n\t\tconst renderAsset = this;\n\t\tif (!renderAsset.resource) return;\n\t\tconst containerResource = containerAsset.resource;\n\t\tconst render = containerResource.renders && containerResource.renders[renderAsset.data.renderIndex];\n\t\tif (render) {\n\t\t\t\trenderAsset.resource.meshes = render.resource.meshes;\n\t\t}\n}\nfunction onContainerAssetAdded(containerAsset) {\n\t\tconst renderAsset = this;\n\t\trenderAsset.registry.off(`load:${containerAsset.id}`, onContainerAssetLoaded, renderAsset);\n\t\trenderAsset.registry.on(`load:${containerAsset.id}`, onContainerAssetLoaded, renderAsset);\n\t\trenderAsset.registry.off(`remove:${containerAsset.id}`, onContainerAssetRemoved, renderAsset);\n\t\trenderAsset.registry.once(`remove:${containerAsset.id}`, onContainerAssetRemoved, renderAsset);\n\t\tif (!containerAsset.resource) {\n\t\t\t\trenderAsset.registry.load(containerAsset);\n\t\t} else {\n\t\t\t\tonContainerAssetLoaded.call(renderAsset, containerAsset);\n\t\t}\n}\nfunction onContainerAssetRemoved(containerAsset) {\n\t\tconst renderAsset = this;\n\t\trenderAsset.registry.off(`load:${containerAsset.id}`, onContainerAssetLoaded, renderAsset);\n\t\tif (renderAsset.resource) {\n\t\t\t\trenderAsset.resource.destroy();\n\t\t}\n}\nclass RenderHandler extends ResourceHandler {\n\t\tconstructor(app){\n\t\t\t\tsuper(app, 'render');\n\t\t\t\tthis._registry = app.assets;\n\t\t}\n\t\topen(url, data) {\n\t\t\t\treturn new Render();\n\t\t}\n\t\tpatch(asset, registry) {\n\t\t\t\tif (!asset.data.containerAsset) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst containerAsset = registry.get(asset.data.containerAsset);\n\t\t\t\tif (!containerAsset) {\n\t\t\t\t\t\tregistry.once(`add:${asset.data.containerAsset}`, onContainerAssetAdded, asset);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tonContainerAssetAdded.call(asset, containerAsset);\n\t\t}\n}\n\nclass AnimCurve {\n\t\tconstructor(paths, input, output, interpolation){\n\t\t\t\tthis._paths = paths;\n\t\t\t\tthis._input = input;\n\t\t\t\tthis._output = output;\n\t\t\t\tthis._interpolation = interpolation;\n\t\t}\n\t\tget paths() {\n\t\t\t\treturn this._paths;\n\t\t}\n\t\tget input() {\n\t\t\t\treturn this._input;\n\t\t}\n\t\tget output() {\n\t\t\t\treturn this._output;\n\t\t}\n\t\tget interpolation() {\n\t\t\t\treturn this._interpolation;\n\t\t}\n}\n\nclass AnimData {\n\t\tconstructor(components, data){\n\t\t\t\tthis._components = components;\n\t\t\t\tthis._data = data;\n\t\t}\n\t\tget components() {\n\t\t\t\treturn this._components;\n\t\t}\n\t\tget data() {\n\t\t\t\treturn this._data;\n\t\t}\n}\n\nfunction DracoWorker(jsUrl, wasmUrl) {\n\t\tlet draco;\n\t\tconst POSITION_ATTRIBUTE = 0;\n\t\tconst NORMAL_ATTRIBUTE = 1;\n\t\tconst wrap = (typedArray, dataType)=>{\n\t\t\t\tswitch(dataType){\n\t\t\t\t\t\tcase draco.DT_INT8:\n\t\t\t\t\t\t\t\treturn new Int8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength);\n\t\t\t\t\t\tcase draco.DT_INT16:\n\t\t\t\t\t\t\t\treturn new Int16Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength / 2);\n\t\t\t\t\t\tcase draco.DT_INT32:\n\t\t\t\t\t\t\t\treturn new Int32Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength / 4);\n\t\t\t\t\t\tcase draco.DT_UINT8:\n\t\t\t\t\t\t\t\treturn new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength);\n\t\t\t\t\t\tcase draco.DT_UINT16:\n\t\t\t\t\t\t\t\treturn new Uint16Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength / 2);\n\t\t\t\t\t\tcase draco.DT_UINT32:\n\t\t\t\t\t\t\t\treturn new Uint32Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength / 4);\n\t\t\t\t\t\tcase draco.DT_FLOAT32:\n\t\t\t\t\t\t\t\treturn new Float32Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength / 4);\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t};\n\t\tconst componentSizeInBytes = (dataType)=>{\n\t\t\t\tswitch(dataType){\n\t\t\t\t\t\tcase draco.DT_INT8:\n\t\t\t\t\t\t\t\treturn 1;\n\t\t\t\t\t\tcase draco.DT_INT16:\n\t\t\t\t\t\t\t\treturn 2;\n\t\t\t\t\t\tcase draco.DT_INT32:\n\t\t\t\t\t\t\t\treturn 4;\n\t\t\t\t\t\tcase draco.DT_UINT8:\n\t\t\t\t\t\t\t\treturn 1;\n\t\t\t\t\t\tcase draco.DT_UINT16:\n\t\t\t\t\t\t\t\treturn 2;\n\t\t\t\t\t\tcase draco.DT_UINT32:\n\t\t\t\t\t\t\t\treturn 4;\n\t\t\t\t\t\tcase draco.DT_FLOAT32:\n\t\t\t\t\t\t\t\treturn 4;\n\t\t\t\t}\n\t\t\t\treturn 1;\n\t\t};\n\t\tconst attributeSizeInBytes = (attribute)=>{\n\t\t\t\treturn attribute.num_components() * componentSizeInBytes(attribute.data_type());\n\t\t};\n\t\tconst attributeOrder = {\n\t\t\t\t0: 0,\n\t\t\t\t1: 1,\n\t\t\t\t5: 2,\n\t\t\t\t2: 3,\n\t\t\t\t7: 4,\n\t\t\t\t8: 5,\n\t\t\t\t4: 6,\n\t\t\t\t3: 7\n\t\t};\n\t\tconst generateNormals = (vertices, indices)=>{\n\t\t\t\tconst subtract = (dst, a, b)=>{\n\t\t\t\t\t\tdst[0] = a[0] - b[0];\n\t\t\t\t\t\tdst[1] = a[1] - b[1];\n\t\t\t\t\t\tdst[2] = a[2] - b[2];\n\t\t\t\t};\n\t\t\t\tconst cross = (dst, a, b)=>{\n\t\t\t\t\t\tdst[0] = a[1] * b[2] - b[1] * a[2];\n\t\t\t\t\t\tdst[1] = a[2] * b[0] - b[2] * a[0];\n\t\t\t\t\t\tdst[2] = a[0] * b[1] - b[0] * a[1];\n\t\t\t\t};\n\t\t\t\tconst normalize = (dst, offset)=>{\n\t\t\t\t\t\tconst a = dst[offset + 0];\n\t\t\t\t\t\tconst b = dst[offset + 1];\n\t\t\t\t\t\tconst c = dst[offset + 2];\n\t\t\t\t\t\tconst l = 1.0 / Math.sqrt(a * a + b * b + c * c);\n\t\t\t\t\t\tdst[offset + 0] *= l;\n\t\t\t\t\t\tdst[offset + 1] *= l;\n\t\t\t\t\t\tdst[offset + 2] *= l;\n\t\t\t\t};\n\t\t\t\tconst copy = (dst, src, srcOffset)=>{\n\t\t\t\t\t\tfor(let i = 0; i < 3; ++i){\n\t\t\t\t\t\t\t\tdst[i] = src[srcOffset + i];\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tconst numTriangles = indices.length / 3;\n\t\t\t\tconst numVertices = vertices.length / 3;\n\t\t\t\tconst result = new Float32Array(vertices.length);\n\t\t\t\tconst a = [\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0\n\t\t\t\t], b = [\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0\n\t\t\t\t], c = [\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0\n\t\t\t\t], t1 = [\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0\n\t\t\t\t], t2 = [\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0\n\t\t\t\t], n = [\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0\n\t\t\t\t];\n\t\t\t\tfor(let i = 0; i < numTriangles; ++i){\n\t\t\t\t\t\tconst v0 = indices[i * 3 + 0] * 3;\n\t\t\t\t\t\tconst v1 = indices[i * 3 + 1] * 3;\n\t\t\t\t\t\tconst v2 = indices[i * 3 + 2] * 3;\n\t\t\t\t\t\tcopy(a, vertices, v0);\n\t\t\t\t\t\tcopy(b, vertices, v1);\n\t\t\t\t\t\tcopy(c, vertices, v2);\n\t\t\t\t\t\tsubtract(t1, b, a);\n\t\t\t\t\t\tsubtract(t2, c, a);\n\t\t\t\t\t\tcross(n, t1, t2);\n\t\t\t\t\t\tnormalize(n, 0);\n\t\t\t\t\t\tfor(let j = 0; j < 3; ++j){\n\t\t\t\t\t\t\t\tresult[v0 + j] += n[j];\n\t\t\t\t\t\t\t\tresult[v1 + j] += n[j];\n\t\t\t\t\t\t\t\tresult[v2 + j] += n[j];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < numVertices; ++i){\n\t\t\t\t\t\tnormalize(result, i * 3);\n\t\t\t\t}\n\t\t\t\treturn new Uint8Array(result.buffer);\n\t\t};\n\t\tconst decodeMesh = (inputBuffer)=>{\n\t\t\t\tconst result = {};\n\t\t\t\tconst buffer = new draco.DecoderBuffer();\n\t\t\t\tbuffer.Init(inputBuffer, inputBuffer.length);\n\t\t\t\tconst decoder = new draco.Decoder();\n\t\t\t\tif (decoder.GetEncodedGeometryType(buffer) !== draco.TRIANGULAR_MESH) {\n\t\t\t\t\t\tresult.error = 'Failed to decode draco mesh: not a mesh';\n\t\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t\tconst mesh = new draco.Mesh();\n\t\t\t\tconst status = decoder.DecodeBufferToMesh(buffer, mesh);\n\t\t\t\tif (!status || !status.ok() || draco.getPointer(mesh) === 0) {\n\t\t\t\t\t\tresult.error = 'Failed to decode draco asset';\n\t\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t\tconst numIndices = mesh.num_faces() * 3;\n\t\t\t\tconst shortIndices = mesh.num_points() <= 65535;\n\t\t\t\tconst indicesSize = numIndices * (shortIndices ? 2 : 4);\n\t\t\t\tconst indicesPtr = draco._malloc(indicesSize);\n\t\t\t\tif (shortIndices) {\n\t\t\t\t\t\tdecoder.GetTrianglesUInt16Array(mesh, indicesSize, indicesPtr);\n\t\t\t\t\t\tresult.indices = new Uint16Array(draco.HEAPU16.buffer, indicesPtr, numIndices).slice().buffer;\n\t\t\t\t} else {\n\t\t\t\t\t\tdecoder.GetTrianglesUInt32Array(mesh, indicesSize, indicesPtr);\n\t\t\t\t\t\tresult.indices = new Uint32Array(draco.HEAPU32.buffer, indicesPtr, numIndices).slice().buffer;\n\t\t\t\t}\n\t\t\t\tdraco._free(indicesPtr);\n\t\t\t\tconst attributes = [];\n\t\t\t\tfor(let i = 0; i < mesh.num_attributes(); ++i){\n\t\t\t\t\t\tattributes.push(decoder.GetAttribute(mesh, i));\n\t\t\t\t}\n\t\t\t\tattributes.sort((a, b)=>{\n\t\t\t\t\t\treturn (attributeOrder[a.attribute_type()] ?? attributeOrder.length) - (attributeOrder[b.attribute_type()] ?? attributeOrder.length);\n\t\t\t\t});\n\t\t\t\tresult.attributes = attributes.map((a)=>a.unique_id());\n\t\t\t\tlet totalVertexSize = 0;\n\t\t\t\tconst offsets = attributes.map((a)=>{\n\t\t\t\t\t\tconst offset = totalVertexSize;\n\t\t\t\t\t\ttotalVertexSize += Math.ceil(attributeSizeInBytes(a) / 4) * 4;\n\t\t\t\t\t\treturn offset;\n\t\t\t\t});\n\t\t\t\tconst hasNormals = attributes.some((a)=>a.attribute_type() === NORMAL_ATTRIBUTE);\n\t\t\t\tconst normalOffset = offsets[1];\n\t\t\t\tif (!hasNormals) {\n\t\t\t\t\t\tfor(let i = 1; i < offsets.length; ++i){\n\t\t\t\t\t\t\t\toffsets[i] += 12;\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttotalVertexSize += 12;\n\t\t\t\t}\n\t\t\t\tresult.vertices = new ArrayBuffer(mesh.num_points() * totalVertexSize);\n\t\t\t\tconst dst = new Uint8Array(result.vertices);\n\t\t\t\tfor(let i = 0; i < mesh.num_attributes(); ++i){\n\t\t\t\t\t\tconst attribute = attributes[i];\n\t\t\t\t\t\tconst sizeInBytes = attributeSizeInBytes(attribute);\n\t\t\t\t\t\tconst ptrSize = mesh.num_points() * sizeInBytes;\n\t\t\t\t\t\tconst ptr = draco._malloc(ptrSize);\n\t\t\t\t\t\tdecoder.GetAttributeDataArrayForAllPoints(mesh, attribute, attribute.data_type(), ptrSize, ptr);\n\t\t\t\t\t\tconst src = new Uint8Array(draco.HEAPU8.buffer, ptr, ptrSize);\n\t\t\t\t\t\tfor(let j = 0; j < mesh.num_points(); ++j){\n\t\t\t\t\t\t\t\tfor(let c = 0; c < sizeInBytes; ++c){\n\t\t\t\t\t\t\t\t\t\tdst[j * totalVertexSize + offsets[i] + c] = src[j * sizeInBytes + c];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!hasNormals && attribute.attribute_type() === POSITION_ATTRIBUTE) {\n\t\t\t\t\t\t\t\tconst normals = generateNormals(wrap(src, attribute.data_type()), shortIndices ? new Uint16Array(result.indices) : new Uint32Array(result.indices));\n\t\t\t\t\t\t\t\tfor(let j = 0; j < mesh.num_points(); ++j){\n\t\t\t\t\t\t\t\t\t\tfor(let c = 0; c < 12; ++c){\n\t\t\t\t\t\t\t\t\t\t\t\tdst[j * totalVertexSize + normalOffset + c] = normals[j * 12 + c];\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdraco._free(ptr);\n\t\t\t\t}\n\t\t\t\tdraco.destroy(mesh);\n\t\t\t\tdraco.destroy(decoder);\n\t\t\t\tdraco.destroy(buffer);\n\t\t\t\treturn result;\n\t\t};\n\t\tconst decode = (data)=>{\n\t\t\t\tconst result = decodeMesh(new Uint8Array(data.buffer));\n\t\t\t\tself.postMessage({\n\t\t\t\t\t\tjobId: data.jobId,\n\t\t\t\t\t\terror: result.error,\n\t\t\t\t\t\tindices: result.indices,\n\t\t\t\t\t\tvertices: result.vertices,\n\t\t\t\t\t\tattributes: result.attributes\n\t\t\t\t}, [\n\t\t\t\t\t\tresult.indices,\n\t\t\t\t\t\tresult.vertices\n\t\t\t\t].filter((t)=>t != null));\n\t\t};\n\t\tconst workQueue = [];\n\t\tself.onmessage = (message)=>{\n\t\t\t\tconst data = message.data;\n\t\t\t\tswitch(data.type){\n\t\t\t\t\t\tcase 'init':\n\t\t\t\t\t\t\t\tself.DracoDecoderModule({\n\t\t\t\t\t\t\t\t\t\tinstantiateWasm: (imports, successCallback)=>{\n\t\t\t\t\t\t\t\t\t\t\t\tWebAssembly.instantiate(data.module, imports).then((result)=>successCallback(result)).catch((reason)=>console.error(`instantiate failed + ${reason}`));\n\t\t\t\t\t\t\t\t\t\t\t\treturn {};\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}).then((instance)=>{\n\t\t\t\t\t\t\t\t\t\tdraco = instance;\n\t\t\t\t\t\t\t\t\t\tworkQueue.forEach((data)=>decode(data));\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'decodeMesh':\n\t\t\t\t\t\t\t\tif (draco) {\n\t\t\t\t\t\t\t\t\t\tdecode(data);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tworkQueue.push(data);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t};\n}\n\nconst downloadMaxRetries = 3;\nclass JobQueue {\n\t\tconstructor(){\n\t\t\t\tthis.workers = [\n\t\t\t\t\t\t[],\n\t\t\t\t\t\t[],\n\t\t\t\t\t\t[]\n\t\t\t\t];\n\t\t\t\tthis.jobId = 0;\n\t\t\t\tthis.jobQueue = [];\n\t\t\t\tthis.jobCallbacks = new Map();\n\t\t\t\tthis.run = (worker, job)=>{\n\t\t\t\t\t\tworker.postMessage({\n\t\t\t\t\t\t\t\ttype: 'decodeMesh',\n\t\t\t\t\t\t\t\tjobId: job.jobId,\n\t\t\t\t\t\t\t\tbuffer: job.buffer\n\t\t\t\t\t\t}, [\n\t\t\t\t\t\t\t\tjob.buffer\n\t\t\t\t\t\t]);\n\t\t\t\t};\n\t\t}\n\t\tinit(workers) {\n\t\t\t\tworkers.forEach((worker)=>{\n\t\t\t\t\t\tworker.addEventListener('message', (message)=>{\n\t\t\t\t\t\t\t\tconst data = message.data;\n\t\t\t\t\t\t\t\tconst callback = this.jobCallbacks.get(data.jobId);\n\t\t\t\t\t\t\t\tif (callback) {\n\t\t\t\t\t\t\t\t\t\tcallback(data.error, {\n\t\t\t\t\t\t\t\t\t\t\t\tindices: data.indices,\n\t\t\t\t\t\t\t\t\t\t\t\tvertices: data.vertices,\n\t\t\t\t\t\t\t\t\t\t\t\tattributes: data.attributes\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.jobCallbacks.delete(data.jobId);\n\t\t\t\t\t\t\t\tif (this.jobQueue.length > 0) {\n\t\t\t\t\t\t\t\t\t\tconst job = this.jobQueue.shift();\n\t\t\t\t\t\t\t\t\t\tthis.run(worker, job);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tconst index2 = this.workers[2].indexOf(worker);\n\t\t\t\t\t\t\t\t\t\tif (index2 !== -1) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.workers[2].splice(index2, 1);\n\t\t\t\t\t\t\t\t\t\t\t\tthis.workers[1].push(worker);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tconst index1 = this.workers[1].indexOf(worker);\n\t\t\t\t\t\t\t\t\t\t\t\tif (index1 !== -1) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.workers[1].splice(index1, 1);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.workers[0].push(worker);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tthis.workers[0] = workers;\n\t\t\t\twhile(this.jobQueue.length && (this.workers[0].length || this.workers[1].length)){\n\t\t\t\t\t\tconst job = this.jobQueue.shift();\n\t\t\t\t\t\tif (this.workers[0].length > 0) {\n\t\t\t\t\t\t\t\tconst worker = this.workers[0].shift();\n\t\t\t\t\t\t\t\tthis.workers[1].push(worker);\n\t\t\t\t\t\t\t\tthis.run(worker, job);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst worker = this.workers[1].shift();\n\t\t\t\t\t\t\t\tthis.workers[2].push(worker);\n\t\t\t\t\t\t\t\tthis.run(worker, job);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tenqueueJob(buffer, callback) {\n\t\t\t\tconst job = {\n\t\t\t\t\t\tjobId: this.jobId++,\n\t\t\t\t\t\tbuffer: buffer\n\t\t\t\t};\n\t\t\t\tthis.jobCallbacks.set(job.jobId, callback);\n\t\t\t\tif (this.workers[0].length > 0) {\n\t\t\t\t\t\tconst worker = this.workers[0].shift();\n\t\t\t\t\t\tthis.workers[1].push(worker);\n\t\t\t\t\t\tthis.run(worker, job);\n\t\t\t\t} else if (this.workers[1].length > 0) {\n\t\t\t\t\t\tconst worker = this.workers[1].shift();\n\t\t\t\t\t\tthis.workers[2].push(worker);\n\t\t\t\t\t\tthis.run(worker, job);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.jobQueue.push(job);\n\t\t\t\t}\n\t\t}\n}\nconst downloadScript = (url)=>{\n\t\treturn new Promise((resolve, reject)=>{\n\t\t\t\tconst options = {\n\t\t\t\t\t\tcache: true,\n\t\t\t\t\t\tresponseType: 'text',\n\t\t\t\t\t\tretry: downloadMaxRetries > 0,\n\t\t\t\t\t\tmaxRetries: downloadMaxRetries\n\t\t\t\t};\n\t\t\t\thttp.get(url, options, (err, response)=>{\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tresolve(response);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t});\n};\nconst compileModule = (url)=>{\n\t\tconst compileManual = ()=>{\n\t\t\t\treturn fetch(url).then((result)=>result.arrayBuffer()).then((buffer)=>WebAssembly.compile(buffer));\n\t\t};\n\t\tconst compileStreaming = ()=>{\n\t\t\t\treturn WebAssembly.compileStreaming(fetch(url)).catch((err)=>{\n\t\t\t\t\t\treturn compileManual();\n\t\t\t\t});\n\t\t};\n\t\treturn WebAssembly.compileStreaming ? compileStreaming() : compileManual();\n};\nconst defaultNumWorkers$1 = 1;\nlet jobQueue;\nlet lazyConfig$1;\nconst initializeWorkers = (config)=>{\n\t\tif (jobQueue) {\n\t\t\t\treturn true;\n\t\t}\n\t\tif (!config) {\n\t\t\t\tif (lazyConfig$1) {\n\t\t\t\t\t\tconfig = lazyConfig$1;\n\t\t\t\t} else {\n\t\t\t\t\t\tconst moduleConfig = WasmModule.getConfig('DracoDecoderModule');\n\t\t\t\t\t\tif (moduleConfig) {\n\t\t\t\t\t\t\t\tconfig = {\n\t\t\t\t\t\t\t\t\t\tjsUrl: moduleConfig.glueUrl,\n\t\t\t\t\t\t\t\t\t\twasmUrl: moduleConfig.wasmUrl,\n\t\t\t\t\t\t\t\t\t\tnumWorkers: moduleConfig.numWorkers\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconfig = {\n\t\t\t\t\t\t\t\t\t\tjsUrl: 'draco.wasm.js',\n\t\t\t\t\t\t\t\t\t\twasmUrl: 'draco.wasm.wasm',\n\t\t\t\t\t\t\t\t\t\tnumWorkers: defaultNumWorkers$1\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tif (!config.jsUrl || !config.wasmUrl) {\n\t\t\t\treturn false;\n\t\t}\n\t\tjobQueue = new JobQueue();\n\t\tPromise.all([\n\t\t\t\tdownloadScript(config.jsUrl),\n\t\t\t\tcompileModule(config.wasmUrl)\n\t\t]).then(([dracoSource, dracoModule])=>{\n\t\t\t\tconst code = [\n\t\t\t\t\t\t'/* draco */',\n\t\t\t\t\t\tdracoSource,\n\t\t\t\t\t\t'/* worker */',\n\t\t\t\t\t\t`(\\n${DracoWorker.toString()}\\n)()\\n\\n`\n\t\t\t\t].join('\\n');\n\t\t\t\tconst blob = new Blob([\n\t\t\t\t\t\tcode\n\t\t\t\t], {\n\t\t\t\t\t\ttype: \"application/javascript\"\n\t\t\t\t});\n\t\t\t\tconst workerUrl = URL.createObjectURL(blob);\n\t\t\t\tconst numWorkers = Math.max(1, Math.min(16, config.numWorkers || defaultNumWorkers$1));\n\t\t\t\tconst workers = [];\n\t\t\t\tfor(let i = 0; i < numWorkers; ++i){\n\t\t\t\t\t\tconst worker = new Worker(workerUrl);\n\t\t\t\t\t\tworker.postMessage({\n\t\t\t\t\t\t\t\ttype: 'init',\n\t\t\t\t\t\t\t\tmodule: dracoModule\n\t\t\t\t\t\t});\n\t\t\t\t\t\tworkers.push(worker);\n\t\t\t\t}\n\t\t\t\tjobQueue.init(workers);\n\t\t});\n\t\treturn true;\n};\nconst dracoInitialize = (config)=>{\n\t\tif (config?.lazyInit) {\n\t\t\t\tlazyConfig$1 = config;\n\t\t} else {\n\t\t\t\tinitializeWorkers(config);\n\t\t}\n};\nconst dracoDecode = (buffer, callback)=>{\n\t\tif (!initializeWorkers()) {\n\t\t\t\treturn false;\n\t\t}\n\t\tjobQueue.enqueueJob(buffer, callback);\n\t\treturn true;\n};\n\nclass GlbResources {\n\t\tdestroy() {\n\t\t\t\tif (this.renders) {\n\t\t\t\t\t\tthis.renders.forEach((render)=>{\n\t\t\t\t\t\t\t\trender.meshes = null;\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t}\n}\nconst isDataURI = (uri)=>{\n\t\treturn /^data:[^\\n\\r,\\u2028\\u2029]*,.*$/i.test(uri);\n};\nconst getDataURIMimeType = (uri)=>{\n\t\treturn uri.substring(uri.indexOf(':') + 1, uri.indexOf(';'));\n};\nconst getNumComponents = (accessorType)=>{\n\t\tswitch(accessorType){\n\t\t\t\tcase 'SCALAR':\n\t\t\t\t\t\treturn 1;\n\t\t\t\tcase 'VEC2':\n\t\t\t\t\t\treturn 2;\n\t\t\t\tcase 'VEC3':\n\t\t\t\t\t\treturn 3;\n\t\t\t\tcase 'VEC4':\n\t\t\t\t\t\treturn 4;\n\t\t\t\tcase 'MAT2':\n\t\t\t\t\t\treturn 4;\n\t\t\t\tcase 'MAT3':\n\t\t\t\t\t\treturn 9;\n\t\t\t\tcase 'MAT4':\n\t\t\t\t\t\treturn 16;\n\t\t\t\tdefault:\n\t\t\t\t\t\treturn 3;\n\t\t}\n};\nconst getComponentType$1 = (componentType)=>{\n\t\tswitch(componentType){\n\t\t\t\tcase 5120:\n\t\t\t\t\t\treturn TYPE_INT8;\n\t\t\t\tcase 5121:\n\t\t\t\t\t\treturn TYPE_UINT8;\n\t\t\t\tcase 5122:\n\t\t\t\t\t\treturn TYPE_INT16;\n\t\t\t\tcase 5123:\n\t\t\t\t\t\treturn TYPE_UINT16;\n\t\t\t\tcase 5124:\n\t\t\t\t\t\treturn TYPE_INT32;\n\t\t\t\tcase 5125:\n\t\t\t\t\t\treturn TYPE_UINT32;\n\t\t\t\tcase 5126:\n\t\t\t\t\t\treturn TYPE_FLOAT32;\n\t\t\t\tdefault:\n\t\t\t\t\t\treturn 0;\n\t\t}\n};\nconst getComponentSizeInBytes = (componentType)=>{\n\t\tswitch(componentType){\n\t\t\t\tcase 5120:\n\t\t\t\t\t\treturn 1;\n\t\t\t\tcase 5121:\n\t\t\t\t\t\treturn 1;\n\t\t\t\tcase 5122:\n\t\t\t\t\t\treturn 2;\n\t\t\t\tcase 5123:\n\t\t\t\t\t\treturn 2;\n\t\t\t\tcase 5124:\n\t\t\t\t\t\treturn 4;\n\t\t\t\tcase 5125:\n\t\t\t\t\t\treturn 4;\n\t\t\t\tcase 5126:\n\t\t\t\t\t\treturn 4;\n\t\t\t\tdefault:\n\t\t\t\t\t\treturn 0;\n\t\t}\n};\nconst getComponentDataType = (componentType)=>{\n\t\tswitch(componentType){\n\t\t\t\tcase 5120:\n\t\t\t\t\t\treturn Int8Array;\n\t\t\t\tcase 5121:\n\t\t\t\t\t\treturn Uint8Array;\n\t\t\t\tcase 5122:\n\t\t\t\t\t\treturn Int16Array;\n\t\t\t\tcase 5123:\n\t\t\t\t\t\treturn Uint16Array;\n\t\t\t\tcase 5124:\n\t\t\t\t\t\treturn Int32Array;\n\t\t\t\tcase 5125:\n\t\t\t\t\t\treturn Uint32Array;\n\t\t\t\tcase 5126:\n\t\t\t\t\t\treturn Float32Array;\n\t\t\t\tdefault:\n\t\t\t\t\t\treturn null;\n\t\t}\n};\nconst gltfToEngineSemanticMap = {\n\t\t'POSITION': SEMANTIC_POSITION,\n\t\t'NORMAL': SEMANTIC_NORMAL,\n\t\t'TANGENT': SEMANTIC_TANGENT,\n\t\t'COLOR_0': SEMANTIC_COLOR,\n\t\t'JOINTS_0': SEMANTIC_BLENDINDICES,\n\t\t'WEIGHTS_0': SEMANTIC_BLENDWEIGHT,\n\t\t'TEXCOORD_0': SEMANTIC_TEXCOORD0,\n\t\t'TEXCOORD_1': SEMANTIC_TEXCOORD1,\n\t\t'TEXCOORD_2': SEMANTIC_TEXCOORD2,\n\t\t'TEXCOORD_3': SEMANTIC_TEXCOORD3,\n\t\t'TEXCOORD_4': SEMANTIC_TEXCOORD4,\n\t\t'TEXCOORD_5': SEMANTIC_TEXCOORD5,\n\t\t'TEXCOORD_6': SEMANTIC_TEXCOORD6,\n\t\t'TEXCOORD_7': SEMANTIC_TEXCOORD7\n};\nconst attributeOrder = {\n\t\t[SEMANTIC_POSITION]: 0,\n\t\t[SEMANTIC_NORMAL]: 1,\n\t\t[SEMANTIC_TANGENT]: 2,\n\t\t[SEMANTIC_COLOR]: 3,\n\t\t[SEMANTIC_BLENDINDICES]: 4,\n\t\t[SEMANTIC_BLENDWEIGHT]: 5,\n\t\t[SEMANTIC_TEXCOORD0]: 6,\n\t\t[SEMANTIC_TEXCOORD1]: 7,\n\t\t[SEMANTIC_TEXCOORD2]: 8,\n\t\t[SEMANTIC_TEXCOORD3]: 9,\n\t\t[SEMANTIC_TEXCOORD4]: 10,\n\t\t[SEMANTIC_TEXCOORD5]: 11,\n\t\t[SEMANTIC_TEXCOORD6]: 12,\n\t\t[SEMANTIC_TEXCOORD7]: 13\n};\nconst getDequantizeFunc = (srcType)=>{\n\t\tswitch(srcType){\n\t\t\t\tcase TYPE_INT8:\n\t\t\t\t\t\treturn (x)=>Math.max(x / 127.0, -1);\n\t\t\t\tcase TYPE_UINT8:\n\t\t\t\t\t\treturn (x)=>x / 255.0;\n\t\t\t\tcase TYPE_INT16:\n\t\t\t\t\t\treturn (x)=>Math.max(x / 32767.0, -1);\n\t\t\t\tcase TYPE_UINT16:\n\t\t\t\t\t\treturn (x)=>x / 65535.0;\n\t\t\t\tdefault:\n\t\t\t\t\t\treturn (x)=>x;\n\t\t}\n};\nconst dequantizeArray = (dstArray, srcArray, srcType)=>{\n\t\tconst convFunc = getDequantizeFunc(srcType);\n\t\tconst len = srcArray.length;\n\t\tfor(let i = 0; i < len; ++i){\n\t\t\t\tdstArray[i] = convFunc(srcArray[i]);\n\t\t}\n\t\treturn dstArray;\n};\nconst getAccessorData = (gltfAccessor, bufferViews, flatten = false)=>{\n\t\tconst numComponents = getNumComponents(gltfAccessor.type);\n\t\tconst dataType = getComponentDataType(gltfAccessor.componentType);\n\t\tif (!dataType) {\n\t\t\t\treturn null;\n\t\t}\n\t\tlet result;\n\t\tif (gltfAccessor.sparse) {\n\t\t\t\tconst sparse = gltfAccessor.sparse;\n\t\t\t\tconst indicesAccessor = {\n\t\t\t\t\t\tcount: sparse.count,\n\t\t\t\t\t\ttype: 'SCALAR'\n\t\t\t\t};\n\t\t\t\tconst indices = getAccessorData(Object.assign(indicesAccessor, sparse.indices), bufferViews, true);\n\t\t\t\tconst valuesAccessor = {\n\t\t\t\t\t\tcount: sparse.count,\n\t\t\t\t\t\ttype: gltfAccessor.type,\n\t\t\t\t\t\tcomponentType: gltfAccessor.componentType\n\t\t\t\t};\n\t\t\t\tconst values = getAccessorData(Object.assign(valuesAccessor, sparse.values), bufferViews, true);\n\t\t\t\tif (gltfAccessor.hasOwnProperty('bufferView')) {\n\t\t\t\t\t\tconst baseAccessor = {\n\t\t\t\t\t\t\t\tbufferView: gltfAccessor.bufferView,\n\t\t\t\t\t\t\t\tbyteOffset: gltfAccessor.byteOffset,\n\t\t\t\t\t\t\t\tcomponentType: gltfAccessor.componentType,\n\t\t\t\t\t\t\t\tcount: gltfAccessor.count,\n\t\t\t\t\t\t\t\ttype: gltfAccessor.type\n\t\t\t\t\t\t};\n\t\t\t\t\t\tresult = getAccessorData(baseAccessor, bufferViews, true).slice();\n\t\t\t\t} else {\n\t\t\t\t\t\tresult = new dataType(gltfAccessor.count * numComponents);\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < sparse.count; ++i){\n\t\t\t\t\t\tconst targetIndex = indices[i];\n\t\t\t\t\t\tfor(let j = 0; j < numComponents; ++j){\n\t\t\t\t\t\t\t\tresult[targetIndex * numComponents + j] = values[i * numComponents + j];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t} else {\n\t\t\t\tif (gltfAccessor.hasOwnProperty('bufferView')) {\n\t\t\t\t\t\tconst bufferView = bufferViews[gltfAccessor.bufferView];\n\t\t\t\t\t\tif (flatten && bufferView.hasOwnProperty('byteStride')) {\n\t\t\t\t\t\t\t\tconst bytesPerElement = numComponents * dataType.BYTES_PER_ELEMENT;\n\t\t\t\t\t\t\t\tconst storage = new ArrayBuffer(gltfAccessor.count * bytesPerElement);\n\t\t\t\t\t\t\t\tconst tmpArray = new Uint8Array(storage);\n\t\t\t\t\t\t\t\tlet dstOffset = 0;\n\t\t\t\t\t\t\t\tfor(let i = 0; i < gltfAccessor.count; ++i){\n\t\t\t\t\t\t\t\t\t\tlet srcOffset = (gltfAccessor.byteOffset || 0) + i * bufferView.byteStride;\n\t\t\t\t\t\t\t\t\t\tfor(let b = 0; b < bytesPerElement; ++b){\n\t\t\t\t\t\t\t\t\t\t\t\ttmpArray[dstOffset++] = bufferView[srcOffset++];\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tresult = new dataType(storage);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tresult = new dataType(bufferView.buffer, bufferView.byteOffset + (gltfAccessor.byteOffset || 0), gltfAccessor.count * numComponents);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tresult = new dataType(gltfAccessor.count * numComponents);\n\t\t\t\t}\n\t\t}\n\t\treturn result;\n};\nconst getAccessorDataFloat32 = (gltfAccessor, bufferViews)=>{\n\t\tconst data = getAccessorData(gltfAccessor, bufferViews, true);\n\t\tif (data instanceof Float32Array || !gltfAccessor.normalized) {\n\t\t\t\treturn data;\n\t\t}\n\t\tconst float32Data = new Float32Array(data.length);\n\t\tdequantizeArray(float32Data, data, getComponentType$1(gltfAccessor.componentType));\n\t\treturn float32Data;\n};\nconst getAccessorBoundingBox = (gltfAccessor)=>{\n\t\tlet min = gltfAccessor.min;\n\t\tlet max = gltfAccessor.max;\n\t\tif (!min || !max) {\n\t\t\t\treturn null;\n\t\t}\n\t\tif (gltfAccessor.normalized) {\n\t\t\t\tconst ctype = getComponentType$1(gltfAccessor.componentType);\n\t\t\t\tmin = dequantizeArray([], min, ctype);\n\t\t\t\tmax = dequantizeArray([], max, ctype);\n\t\t}\n\t\treturn new BoundingBox(new Vec3((max[0] + min[0]) * 0.5, (max[1] + min[1]) * 0.5, (max[2] + min[2]) * 0.5), new Vec3((max[0] - min[0]) * 0.5, (max[1] - min[1]) * 0.5, (max[2] - min[2]) * 0.5));\n};\nconst getPrimitiveType = (primitive)=>{\n\t\tif (!primitive.hasOwnProperty('mode')) {\n\t\t\t\treturn PRIMITIVE_TRIANGLES;\n\t\t}\n\t\tswitch(primitive.mode){\n\t\t\t\tcase 0:\n\t\t\t\t\t\treturn PRIMITIVE_POINTS;\n\t\t\t\tcase 1:\n\t\t\t\t\t\treturn PRIMITIVE_LINES;\n\t\t\t\tcase 2:\n\t\t\t\t\t\treturn PRIMITIVE_LINELOOP;\n\t\t\t\tcase 3:\n\t\t\t\t\t\treturn PRIMITIVE_LINESTRIP;\n\t\t\t\tcase 4:\n\t\t\t\t\t\treturn PRIMITIVE_TRIANGLES;\n\t\t\t\tcase 5:\n\t\t\t\t\t\treturn PRIMITIVE_TRISTRIP;\n\t\t\t\tcase 6:\n\t\t\t\t\t\treturn PRIMITIVE_TRIFAN;\n\t\t\t\tdefault:\n\t\t\t\t\t\treturn PRIMITIVE_TRIANGLES;\n\t\t}\n};\nconst generateIndices = (numVertices)=>{\n\t\tconst dummyIndices = new Uint16Array(numVertices);\n\t\tfor(let i = 0; i < numVertices; i++){\n\t\t\t\tdummyIndices[i] = i;\n\t\t}\n\t\treturn dummyIndices;\n};\nconst generateNormals = (sourceDesc, indices)=>{\n\t\tconst p = sourceDesc[SEMANTIC_POSITION];\n\t\tif (!p || p.components !== 3) {\n\t\t\t\treturn;\n\t\t}\n\t\tlet positions;\n\t\tif (p.size !== p.stride) {\n\t\t\t\tconst srcStride = p.stride / typedArrayTypesByteSize[p.type];\n\t\t\t\tconst src = new typedArrayTypes[p.type](p.buffer, p.offset, p.count * srcStride);\n\t\t\t\tpositions = new typedArrayTypes[p.type](p.count * 3);\n\t\t\t\tfor(let i = 0; i < p.count; ++i){\n\t\t\t\t\t\tpositions[i * 3 + 0] = src[i * srcStride + 0];\n\t\t\t\t\t\tpositions[i * 3 + 1] = src[i * srcStride + 1];\n\t\t\t\t\t\tpositions[i * 3 + 2] = src[i * srcStride + 2];\n\t\t\t\t}\n\t\t} else {\n\t\t\t\tpositions = new typedArrayTypes[p.type](p.buffer, p.offset, p.count * 3);\n\t\t}\n\t\tconst numVertices = p.count;\n\t\tif (!indices) {\n\t\t\t\tindices = generateIndices(numVertices);\n\t\t}\n\t\tconst normalsTemp = calculateNormals(positions, indices);\n\t\tconst normals = new Float32Array(normalsTemp.length);\n\t\tnormals.set(normalsTemp);\n\t\tsourceDesc[SEMANTIC_NORMAL] = {\n\t\t\t\tbuffer: normals.buffer,\n\t\t\t\tsize: 12,\n\t\t\t\toffset: 0,\n\t\t\t\tstride: 12,\n\t\t\t\tcount: numVertices,\n\t\t\t\tcomponents: 3,\n\t\t\t\ttype: TYPE_FLOAT32\n\t\t};\n};\nconst cloneTexture = (texture)=>{\n\t\tconst shallowCopyLevels = (texture)=>{\n\t\t\t\tconst result = [];\n\t\t\t\tfor(let mip = 0; mip < texture._levels.length; ++mip){\n\t\t\t\t\t\tlet level = [];\n\t\t\t\t\t\tif (texture.cubemap) {\n\t\t\t\t\t\t\t\tfor(let face = 0; face < 6; ++face){\n\t\t\t\t\t\t\t\t\t\tlevel.push(texture._levels[mip][face]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tlevel = texture._levels[mip];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tresult.push(level);\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t};\n\t\tconst result = new Texture(texture.device, texture);\n\t\tresult._levels = shallowCopyLevels(texture);\n\t\treturn result;\n};\nconst cloneTextureAsset = (src)=>{\n\t\tconst result = new Asset(`${src.name}_clone`, src.type, src.file, src.data, src.options);\n\t\tresult.loaded = true;\n\t\tresult.resource = cloneTexture(src.resource);\n\t\tsrc.registry.add(result);\n\t\treturn result;\n};\nconst createVertexBufferInternal = (device, sourceDesc)=>{\n\t\tconst positionDesc = sourceDesc[SEMANTIC_POSITION];\n\t\tif (!positionDesc) {\n\t\t\t\treturn null;\n\t\t}\n\t\tconst numVertices = positionDesc.count;\n\t\tconst vertexDesc = [];\n\t\tfor(const semantic in sourceDesc){\n\t\t\t\tif (sourceDesc.hasOwnProperty(semantic)) {\n\t\t\t\t\t\tconst element = {\n\t\t\t\t\t\t\t\tsemantic: semantic,\n\t\t\t\t\t\t\t\tcomponents: sourceDesc[semantic].components,\n\t\t\t\t\t\t\t\ttype: sourceDesc[semantic].type,\n\t\t\t\t\t\t\t\tnormalize: !!sourceDesc[semantic].normalize\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (!VertexFormat.isElementValid(device, element)) {\n\t\t\t\t\t\t\t\telement.components++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvertexDesc.push(element);\n\t\t\t\t}\n\t\t}\n\t\tvertexDesc.sort((lhs, rhs)=>{\n\t\t\t\treturn attributeOrder[lhs.semantic] - attributeOrder[rhs.semantic];\n\t\t});\n\t\tlet i, j, k;\n\t\tlet source, target, sourceOffset;\n\t\tconst vertexFormat = new VertexFormat(device, vertexDesc);\n\t\tlet isCorrectlyInterleaved = true;\n\t\tfor(i = 0; i < vertexFormat.elements.length; ++i){\n\t\t\t\ttarget = vertexFormat.elements[i];\n\t\t\t\tsource = sourceDesc[target.name];\n\t\t\t\tsourceOffset = source.offset - positionDesc.offset;\n\t\t\t\tif (source.buffer !== positionDesc.buffer || source.stride !== target.stride || source.size !== target.size || sourceOffset !== target.offset) {\n\t\t\t\t\t\tisCorrectlyInterleaved = false;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t}\n\t\tconst vertexBuffer = new VertexBuffer(device, vertexFormat, numVertices);\n\t\tconst vertexData = vertexBuffer.lock();\n\t\tconst targetArray = new Uint32Array(vertexData);\n\t\tlet sourceArray;\n\t\tif (isCorrectlyInterleaved) {\n\t\t\t\tsourceArray = new Uint32Array(positionDesc.buffer, positionDesc.offset, numVertices * vertexBuffer.format.size / 4);\n\t\t\t\ttargetArray.set(sourceArray);\n\t\t} else {\n\t\t\t\tlet targetStride, sourceStride;\n\t\t\t\tfor(i = 0; i < vertexBuffer.format.elements.length; ++i){\n\t\t\t\t\t\ttarget = vertexBuffer.format.elements[i];\n\t\t\t\t\t\ttargetStride = target.stride / 4;\n\t\t\t\t\t\tsource = sourceDesc[target.name];\n\t\t\t\t\t\tsourceStride = source.stride / 4;\n\t\t\t\t\t\tsourceArray = new Uint32Array(source.buffer, source.offset, (source.count - 1) * sourceStride + (source.size + 3) / 4);\n\t\t\t\t\t\tlet src = 0;\n\t\t\t\t\t\tlet dst = target.offset / 4;\n\t\t\t\t\t\tconst kend = Math.floor((source.size + 3) / 4);\n\t\t\t\t\t\tfor(j = 0; j < numVertices; ++j){\n\t\t\t\t\t\t\t\tfor(k = 0; k < kend; ++k){\n\t\t\t\t\t\t\t\t\t\ttargetArray[dst + k] = sourceArray[src + k];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tsrc += sourceStride;\n\t\t\t\t\t\t\t\tdst += targetStride;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tvertexBuffer.unlock();\n\t\treturn vertexBuffer;\n};\nconst createVertexBuffer = (device, attributes, indices, accessors, bufferViews, vertexBufferDict)=>{\n\t\tconst useAttributes = {};\n\t\tconst attribIds = [];\n\t\tfor(const attrib in attributes){\n\t\t\t\tif (attributes.hasOwnProperty(attrib) && gltfToEngineSemanticMap.hasOwnProperty(attrib)) {\n\t\t\t\t\t\tuseAttributes[attrib] = attributes[attrib];\n\t\t\t\t\t\tattribIds.push(`${attrib}:${attributes[attrib]}`);\n\t\t\t\t}\n\t\t}\n\t\tattribIds.sort();\n\t\tconst vbKey = attribIds.join();\n\t\tlet vb = vertexBufferDict[vbKey];\n\t\tif (!vb) {\n\t\t\t\tconst sourceDesc = {};\n\t\t\t\tfor(const attrib in useAttributes){\n\t\t\t\t\t\tconst accessor = accessors[attributes[attrib]];\n\t\t\t\t\t\tconst accessorData = getAccessorData(accessor, bufferViews);\n\t\t\t\t\t\tconst bufferView = bufferViews[accessor.bufferView];\n\t\t\t\t\t\tconst semantic = gltfToEngineSemanticMap[attrib];\n\t\t\t\t\t\tconst size = getNumComponents(accessor.type) * getComponentSizeInBytes(accessor.componentType);\n\t\t\t\t\t\tconst stride = bufferView && bufferView.hasOwnProperty('byteStride') ? bufferView.byteStride : size;\n\t\t\t\t\t\tsourceDesc[semantic] = {\n\t\t\t\t\t\t\t\tbuffer: accessorData.buffer,\n\t\t\t\t\t\t\t\tsize: size,\n\t\t\t\t\t\t\t\toffset: accessorData.byteOffset,\n\t\t\t\t\t\t\t\tstride: stride,\n\t\t\t\t\t\t\t\tcount: accessor.count,\n\t\t\t\t\t\t\t\tcomponents: getNumComponents(accessor.type),\n\t\t\t\t\t\t\t\ttype: getComponentType$1(accessor.componentType),\n\t\t\t\t\t\t\t\tnormalize: accessor.normalized\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tif (!sourceDesc.hasOwnProperty(SEMANTIC_NORMAL)) {\n\t\t\t\t\t\tgenerateNormals(sourceDesc, indices);\n\t\t\t\t}\n\t\t\t\tvb = createVertexBufferInternal(device, sourceDesc);\n\t\t\t\tvertexBufferDict[vbKey] = vb;\n\t\t}\n\t\treturn vb;\n};\nconst createSkin = (device, gltfSkin, accessors, bufferViews, nodes, glbSkins)=>{\n\t\tlet i, j, bindMatrix;\n\t\tconst joints = gltfSkin.joints;\n\t\tconst numJoints = joints.length;\n\t\tconst ibp = [];\n\t\tif (gltfSkin.hasOwnProperty('inverseBindMatrices')) {\n\t\t\t\tconst inverseBindMatrices = gltfSkin.inverseBindMatrices;\n\t\t\t\tconst ibmData = getAccessorData(accessors[inverseBindMatrices], bufferViews, true);\n\t\t\t\tconst ibmValues = [];\n\t\t\t\tfor(i = 0; i < numJoints; i++){\n\t\t\t\t\t\tfor(j = 0; j < 16; j++){\n\t\t\t\t\t\t\t\tibmValues[j] = ibmData[i * 16 + j];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbindMatrix = new Mat4();\n\t\t\t\t\t\tbindMatrix.set(ibmValues);\n\t\t\t\t\t\tibp.push(bindMatrix);\n\t\t\t\t}\n\t\t} else {\n\t\t\t\tfor(i = 0; i < numJoints; i++){\n\t\t\t\t\t\tbindMatrix = new Mat4();\n\t\t\t\t\t\tibp.push(bindMatrix);\n\t\t\t\t}\n\t\t}\n\t\tconst boneNames = [];\n\t\tfor(i = 0; i < numJoints; i++){\n\t\t\t\tboneNames[i] = nodes[joints[i]].name;\n\t\t}\n\t\tconst key = boneNames.join('#');\n\t\tlet skin = glbSkins.get(key);\n\t\tif (!skin) {\n\t\t\t\tskin = new Skin(device, ibp, boneNames);\n\t\t\t\tglbSkins.set(key, skin);\n\t\t}\n\t\treturn skin;\n};\nconst createDracoMesh = (device, primitive, accessors, bufferViews, meshVariants, meshDefaultMaterials, promises)=>{\n\t\tconst result = new Mesh(device);\n\t\tresult.aabb = getAccessorBoundingBox(accessors[primitive.attributes.POSITION]);\n\t\tconst vertexDesc = [];\n\t\tfor (const [name, index] of Object.entries(primitive.attributes)){\n\t\t\t\tconst accessor = accessors[index];\n\t\t\t\tconst semantic = gltfToEngineSemanticMap[name];\n\t\t\t\tconst componentType = getComponentType$1(accessor.componentType);\n\t\t\t\tvertexDesc.push({\n\t\t\t\t\t\tsemantic: semantic,\n\t\t\t\t\t\tcomponents: getNumComponents(accessor.type),\n\t\t\t\t\t\ttype: componentType,\n\t\t\t\t\t\tnormalize: accessor.normalized ?? (semantic === SEMANTIC_COLOR && (componentType === TYPE_UINT8 || componentType === TYPE_UINT16))\n\t\t\t\t});\n\t\t}\n\t\tpromises.push(new Promise((resolve, reject)=>{\n\t\t\t\tconst dracoExt = primitive.extensions.KHR_draco_mesh_compression;\n\t\t\t\tdracoDecode(bufferViews[dracoExt.bufferView].slice().buffer, (err, decompressedData)=>{\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\tconsole.log(err);\n\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst order = {};\n\t\t\t\t\t\t\t\tfor (const [name, index] of Object.entries(dracoExt.attributes)){\n\t\t\t\t\t\t\t\t\t\torder[gltfToEngineSemanticMap[name]] = decompressedData.attributes.indexOf(index);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tvertexDesc.sort((a, b)=>{\n\t\t\t\t\t\t\t\t\t\treturn order[a.semantic] - order[b.semantic];\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tif (!primitive.attributes?.NORMAL) {\n\t\t\t\t\t\t\t\t\t\tvertexDesc.splice(1, 0, {\n\t\t\t\t\t\t\t\t\t\t\t\tsemantic: 'NORMAL',\n\t\t\t\t\t\t\t\t\t\t\t\tcomponents: 3,\n\t\t\t\t\t\t\t\t\t\t\t\ttype: TYPE_FLOAT32\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst vertexFormat = new VertexFormat(device, vertexDesc);\n\t\t\t\t\t\t\t\tconst numVertices = decompressedData.vertices.byteLength / vertexFormat.size;\n\t\t\t\t\t\t\t\tconst indexFormat = numVertices <= 65535 ? INDEXFORMAT_UINT16 : INDEXFORMAT_UINT32;\n\t\t\t\t\t\t\t\tconst numIndices = decompressedData.indices.byteLength / (numVertices <= 65535 ? 2 : 4);\n\t\t\t\t\t\t\t\tconst vertexBuffer = new VertexBuffer(device, vertexFormat, numVertices, {\n\t\t\t\t\t\t\t\t\t\tdata: decompressedData.vertices\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tconst indexBuffer = new IndexBuffer(device, indexFormat, numIndices, BUFFER_STATIC, decompressedData.indices);\n\t\t\t\t\t\t\t\tresult.vertexBuffer = vertexBuffer;\n\t\t\t\t\t\t\t\tresult.indexBuffer[0] = indexBuffer;\n\t\t\t\t\t\t\t\tresult.primitive[0].type = getPrimitiveType(primitive);\n\t\t\t\t\t\t\t\tresult.primitive[0].base = 0;\n\t\t\t\t\t\t\t\tresult.primitive[0].count = indexBuffer ? numIndices : numVertices;\n\t\t\t\t\t\t\t\tresult.primitive[0].indexed = !!indexBuffer;\n\t\t\t\t\t\t\t\tresolve();\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}));\n\t\tif (primitive?.extensions?.KHR_materials_variants) {\n\t\t\t\tconst variants = primitive.extensions.KHR_materials_variants;\n\t\t\t\tconst tempMapping = {};\n\t\t\t\tvariants.mappings.forEach((mapping)=>{\n\t\t\t\t\t\tmapping.variants.forEach((variant)=>{\n\t\t\t\t\t\t\t\ttempMapping[variant] = mapping.material;\n\t\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tmeshVariants[result.id] = tempMapping;\n\t\t}\n\t\tmeshDefaultMaterials[result.id] = primitive.material;\n\t\treturn result;\n};\nconst createMesh$1 = (device, gltfMesh, accessors, bufferViews, vertexBufferDict, meshVariants, meshDefaultMaterials, assetOptions, promises)=>{\n\t\tconst meshes = [];\n\t\tgltfMesh.primitives.forEach((primitive)=>{\n\t\t\t\tif (primitive.extensions?.KHR_draco_mesh_compression) {\n\t\t\t\t\t\tmeshes.push(createDracoMesh(device, primitive, accessors, bufferViews, meshVariants, meshDefaultMaterials, promises));\n\t\t\t\t} else {\n\t\t\t\t\t\tlet indices = primitive.hasOwnProperty('indices') ? getAccessorData(accessors[primitive.indices], bufferViews, true) : null;\n\t\t\t\t\t\tconst vertexBuffer = createVertexBuffer(device, primitive.attributes, indices, accessors, bufferViews, vertexBufferDict);\n\t\t\t\t\t\tconst primitiveType = getPrimitiveType(primitive);\n\t\t\t\t\t\tconst mesh = new Mesh(device);\n\t\t\t\t\t\tmesh.vertexBuffer = vertexBuffer;\n\t\t\t\t\t\tmesh.primitive[0].type = primitiveType;\n\t\t\t\t\t\tmesh.primitive[0].base = 0;\n\t\t\t\t\t\tmesh.primitive[0].indexed = indices !== null;\n\t\t\t\t\t\tif (indices !== null) {\n\t\t\t\t\t\t\t\tlet indexFormat;\n\t\t\t\t\t\t\t\tif (indices instanceof Uint8Array) {\n\t\t\t\t\t\t\t\t\t\tindexFormat = INDEXFORMAT_UINT8;\n\t\t\t\t\t\t\t\t} else if (indices instanceof Uint16Array) {\n\t\t\t\t\t\t\t\t\t\tindexFormat = INDEXFORMAT_UINT16;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tindexFormat = INDEXFORMAT_UINT32;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (indexFormat === INDEXFORMAT_UINT8 && device.isWebGPU) {\n\t\t\t\t\t\t\t\t\t\tindexFormat = INDEXFORMAT_UINT16;\n\t\t\t\t\t\t\t\t\t\tindices = new Uint16Array(indices);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst indexBuffer = new IndexBuffer(device, indexFormat, indices.length, BUFFER_STATIC, indices);\n\t\t\t\t\t\t\t\tmesh.indexBuffer[0] = indexBuffer;\n\t\t\t\t\t\t\t\tmesh.primitive[0].count = indices.length;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tmesh.primitive[0].count = vertexBuffer.numVertices;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (primitive.hasOwnProperty('extensions') && primitive.extensions.hasOwnProperty('KHR_materials_variants')) {\n\t\t\t\t\t\t\t\tconst variants = primitive.extensions.KHR_materials_variants;\n\t\t\t\t\t\t\t\tconst tempMapping = {};\n\t\t\t\t\t\t\t\tvariants.mappings.forEach((mapping)=>{\n\t\t\t\t\t\t\t\t\t\tmapping.variants.forEach((variant)=>{\n\t\t\t\t\t\t\t\t\t\t\t\ttempMapping[variant] = mapping.material;\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tmeshVariants[mesh.id] = tempMapping;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmeshDefaultMaterials[mesh.id] = primitive.material;\n\t\t\t\t\t\tlet accessor = accessors[primitive.attributes.POSITION];\n\t\t\t\t\t\tmesh.aabb = getAccessorBoundingBox(accessor);\n\t\t\t\t\t\tif (primitive.hasOwnProperty('targets')) {\n\t\t\t\t\t\t\t\tconst targets = [];\n\t\t\t\t\t\t\t\tprimitive.targets.forEach((target, index)=>{\n\t\t\t\t\t\t\t\t\t\tconst options = {};\n\t\t\t\t\t\t\t\t\t\tif (target.hasOwnProperty('POSITION')) {\n\t\t\t\t\t\t\t\t\t\t\t\taccessor = accessors[target.POSITION];\n\t\t\t\t\t\t\t\t\t\t\t\toptions.deltaPositions = getAccessorDataFloat32(accessor, bufferViews);\n\t\t\t\t\t\t\t\t\t\t\t\toptions.aabb = getAccessorBoundingBox(accessor);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (target.hasOwnProperty('NORMAL')) {\n\t\t\t\t\t\t\t\t\t\t\t\taccessor = accessors[target.NORMAL];\n\t\t\t\t\t\t\t\t\t\t\t\toptions.deltaNormals = getAccessorDataFloat32(accessor, bufferViews);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (gltfMesh.hasOwnProperty('extras') && gltfMesh.extras.hasOwnProperty('targetNames')) {\n\t\t\t\t\t\t\t\t\t\t\t\toptions.name = gltfMesh.extras.targetNames[index];\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\toptions.name = index.toString(10);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (gltfMesh.hasOwnProperty('weights')) {\n\t\t\t\t\t\t\t\t\t\t\t\toptions.defaultWeight = gltfMesh.weights[index];\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\toptions.preserveData = assetOptions.morphPreserveData;\n\t\t\t\t\t\t\t\t\t\ttargets.push(new MorphTarget(options));\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tmesh.morph = new Morph(targets, device, {\n\t\t\t\t\t\t\t\t\t\tpreferHighPrecision: assetOptions.morphPreferHighPrecision\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmeshes.push(mesh);\n\t\t\t\t}\n\t\t});\n\t\treturn meshes;\n};\nconst extractTextureTransform = (source, material, maps)=>{\n\t\tlet map;\n\t\tconst texCoord = source.texCoord;\n\t\tif (texCoord) {\n\t\t\t\tfor(map = 0; map < maps.length; ++map){\n\t\t\t\t\t\tmaterial[`${maps[map]}MapUv`] = texCoord;\n\t\t\t\t}\n\t\t}\n\t\tconst zeros = [\n\t\t\t\t0,\n\t\t\t\t0\n\t\t];\n\t\tconst ones = [\n\t\t\t\t1,\n\t\t\t\t1\n\t\t];\n\t\tconst textureTransform = source.extensions?.KHR_texture_transform;\n\t\tif (textureTransform) {\n\t\t\t\tconst offset = textureTransform.offset || zeros;\n\t\t\t\tconst scale = textureTransform.scale || ones;\n\t\t\t\tconst rotation = textureTransform.rotation ? -textureTransform.rotation * math.RAD_TO_DEG : 0;\n\t\t\t\tconst tilingVec = new Vec2(scale[0], scale[1]);\n\t\t\t\tconst offsetVec = new Vec2(offset[0], 1.0 - scale[1] - offset[1]);\n\t\t\t\tfor(map = 0; map < maps.length; ++map){\n\t\t\t\t\t\tmaterial[`${maps[map]}MapTiling`] = tilingVec;\n\t\t\t\t\t\tmaterial[`${maps[map]}MapOffset`] = offsetVec;\n\t\t\t\t\t\tmaterial[`${maps[map]}MapRotation`] = rotation;\n\t\t\t\t}\n\t\t}\n};\nconst extensionPbrSpecGlossiness = (data, material, textures)=>{\n\t\tlet color, texture;\n\t\tif (data.hasOwnProperty('diffuseFactor')) {\n\t\t\t\tcolor = data.diffuseFactor;\n\t\t\t\tmaterial.diffuse.set(Math.pow(color[0], 1 / 2.2), Math.pow(color[1], 1 / 2.2), Math.pow(color[2], 1 / 2.2));\n\t\t\t\tmaterial.opacity = color[3];\n\t\t} else {\n\t\t\t\tmaterial.diffuse.set(1, 1, 1);\n\t\t\t\tmaterial.opacity = 1;\n\t\t}\n\t\tif (data.hasOwnProperty('diffuseTexture')) {\n\t\t\t\tconst diffuseTexture = data.diffuseTexture;\n\t\t\t\ttexture = textures[diffuseTexture.index];\n\t\t\t\tmaterial.diffuseMap = texture;\n\t\t\t\tmaterial.diffuseMapChannel = 'rgb';\n\t\t\t\tmaterial.opacityMap = texture;\n\t\t\t\tmaterial.opacityMapChannel = 'a';\n\t\t\t\textractTextureTransform(diffuseTexture, material, [\n\t\t\t\t\t\t'diffuse',\n\t\t\t\t\t\t'opacity'\n\t\t\t\t]);\n\t\t}\n\t\tmaterial.useMetalness = false;\n\t\tif (data.hasOwnProperty('specularFactor')) {\n\t\t\t\tcolor = data.specularFactor;\n\t\t\t\tmaterial.specular.set(Math.pow(color[0], 1 / 2.2), Math.pow(color[1], 1 / 2.2), Math.pow(color[2], 1 / 2.2));\n\t\t} else {\n\t\t\t\tmaterial.specular.set(1, 1, 1);\n\t\t}\n\t\tif (data.hasOwnProperty('glossinessFactor')) {\n\t\t\t\tmaterial.gloss = data.glossinessFactor;\n\t\t} else {\n\t\t\t\tmaterial.gloss = 1.0;\n\t\t}\n\t\tif (data.hasOwnProperty('specularGlossinessTexture')) {\n\t\t\t\tconst specularGlossinessTexture = data.specularGlossinessTexture;\n\t\t\t\tmaterial.specularMap = material.glossMap = textures[specularGlossinessTexture.index];\n\t\t\t\tmaterial.specularMapChannel = 'rgb';\n\t\t\t\tmaterial.glossMapChannel = 'a';\n\t\t\t\textractTextureTransform(specularGlossinessTexture, material, [\n\t\t\t\t\t\t'gloss',\n\t\t\t\t\t\t'metalness'\n\t\t\t\t]);\n\t\t}\n};\nconst extensionClearCoat = (data, material, textures)=>{\n\t\tif (data.hasOwnProperty('clearcoatFactor')) {\n\t\t\t\tmaterial.clearCoat = data.clearcoatFactor * 0.25;\n\t\t} else {\n\t\t\t\tmaterial.clearCoat = 0;\n\t\t}\n\t\tif (data.hasOwnProperty('clearcoatTexture')) {\n\t\t\t\tconst clearcoatTexture = data.clearcoatTexture;\n\t\t\t\tmaterial.clearCoatMap = textures[clearcoatTexture.index];\n\t\t\t\tmaterial.clearCoatMapChannel = 'r';\n\t\t\t\textractTextureTransform(clearcoatTexture, material, [\n\t\t\t\t\t\t'clearCoat'\n\t\t\t\t]);\n\t\t}\n\t\tif (data.hasOwnProperty('clearcoatRoughnessFactor')) {\n\t\t\t\tmaterial.clearCoatGloss = data.clearcoatRoughnessFactor;\n\t\t} else {\n\t\t\t\tmaterial.clearCoatGloss = 0;\n\t\t}\n\t\tif (data.hasOwnProperty('clearcoatRoughnessTexture')) {\n\t\t\t\tconst clearcoatRoughnessTexture = data.clearcoatRoughnessTexture;\n\t\t\t\tmaterial.clearCoatGlossMap = textures[clearcoatRoughnessTexture.index];\n\t\t\t\tmaterial.clearCoatGlossMapChannel = 'g';\n\t\t\t\textractTextureTransform(clearcoatRoughnessTexture, material, [\n\t\t\t\t\t\t'clearCoatGloss'\n\t\t\t\t]);\n\t\t}\n\t\tif (data.hasOwnProperty('clearcoatNormalTexture')) {\n\t\t\t\tconst clearcoatNormalTexture = data.clearcoatNormalTexture;\n\t\t\t\tmaterial.clearCoatNormalMap = textures[clearcoatNormalTexture.index];\n\t\t\t\textractTextureTransform(clearcoatNormalTexture, material, [\n\t\t\t\t\t\t'clearCoatNormal'\n\t\t\t\t]);\n\t\t\t\tif (clearcoatNormalTexture.hasOwnProperty('scale')) {\n\t\t\t\t\t\tmaterial.clearCoatBumpiness = clearcoatNormalTexture.scale;\n\t\t\t\t} else {\n\t\t\t\t\t\tmaterial.clearCoatBumpiness = 1;\n\t\t\t\t}\n\t\t}\n\t\tmaterial.clearCoatGlossInvert = true;\n};\nconst extensionUnlit = (data, material, textures)=>{\n\t\tmaterial.useLighting = false;\n\t\tmaterial.emissive.copy(material.diffuse);\n\t\tmaterial.emissiveMap = material.diffuseMap;\n\t\tmaterial.emissiveMapUv = material.diffuseMapUv;\n\t\tmaterial.emissiveMapTiling.copy(material.diffuseMapTiling);\n\t\tmaterial.emissiveMapOffset.copy(material.diffuseMapOffset);\n\t\tmaterial.emissiveMapRotation = material.diffuseMapRotation;\n\t\tmaterial.emissiveMapChannel = material.diffuseMapChannel;\n\t\tmaterial.emissiveVertexColor = material.diffuseVertexColor;\n\t\tmaterial.emissiveVertexColorChannel = material.diffuseVertexColorChannel;\n\t\tmaterial.useLighting = false;\n\t\tmaterial.useSkybox = false;\n\t\tmaterial.diffuse.set(1, 1, 1);\n\t\tmaterial.diffuseMap = null;\n\t\tmaterial.diffuseVertexColor = false;\n};\nconst extensionSpecular = (data, material, textures)=>{\n\t\tmaterial.useMetalnessSpecularColor = true;\n\t\tif (data.hasOwnProperty('specularColorTexture')) {\n\t\t\t\tmaterial.specularMap = textures[data.specularColorTexture.index];\n\t\t\t\tmaterial.specularMapChannel = 'rgb';\n\t\t\t\textractTextureTransform(data.specularColorTexture, material, [\n\t\t\t\t\t\t'specular'\n\t\t\t\t]);\n\t\t}\n\t\tif (data.hasOwnProperty('specularColorFactor')) {\n\t\t\t\tconst color = data.specularColorFactor;\n\t\t\t\tmaterial.specular.set(Math.pow(color[0], 1 / 2.2), Math.pow(color[1], 1 / 2.2), Math.pow(color[2], 1 / 2.2));\n\t\t} else {\n\t\t\t\tmaterial.specular.set(1, 1, 1);\n\t\t}\n\t\tif (data.hasOwnProperty('specularFactor')) {\n\t\t\t\tmaterial.specularityFactor = data.specularFactor;\n\t\t} else {\n\t\t\t\tmaterial.specularityFactor = 1;\n\t\t}\n\t\tif (data.hasOwnProperty('specularTexture')) {\n\t\t\t\tmaterial.specularityFactorMapChannel = 'a';\n\t\t\t\tmaterial.specularityFactorMap = textures[data.specularTexture.index];\n\t\t\t\textractTextureTransform(data.specularTexture, material, [\n\t\t\t\t\t\t'specularityFactor'\n\t\t\t\t]);\n\t\t}\n};\nconst extensionIor = (data, material, textures)=>{\n\t\tif (data.hasOwnProperty('ior')) {\n\t\t\t\tmaterial.refractionIndex = 1.0 / data.ior;\n\t\t}\n};\nconst extensionDispersion = (data, material, textures)=>{\n\t\tif (data.hasOwnProperty('dispersion')) {\n\t\t\t\tmaterial.dispersion = data.dispersion;\n\t\t}\n};\nconst extensionTransmission = (data, material, textures)=>{\n\t\tmaterial.blendType = BLEND_NORMAL;\n\t\tmaterial.useDynamicRefraction = true;\n\t\tif (data.hasOwnProperty('transmissionFactor')) {\n\t\t\t\tmaterial.refraction = data.transmissionFactor;\n\t\t}\n\t\tif (data.hasOwnProperty('transmissionTexture')) {\n\t\t\t\tmaterial.refractionMapChannel = 'r';\n\t\t\t\tmaterial.refractionMap = textures[data.transmissionTexture.index];\n\t\t\t\textractTextureTransform(data.transmissionTexture, material, [\n\t\t\t\t\t\t'refraction'\n\t\t\t\t]);\n\t\t}\n};\nconst extensionSheen = (data, material, textures)=>{\n\t\tmaterial.useSheen = true;\n\t\tif (data.hasOwnProperty('sheenColorFactor')) {\n\t\t\t\tconst color = data.sheenColorFactor;\n\t\t\t\tmaterial.sheen.set(Math.pow(color[0], 1 / 2.2), Math.pow(color[1], 1 / 2.2), Math.pow(color[2], 1 / 2.2));\n\t\t} else {\n\t\t\t\tmaterial.sheen.set(1, 1, 1);\n\t\t}\n\t\tif (data.hasOwnProperty('sheenColorTexture')) {\n\t\t\t\tmaterial.sheenMap = textures[data.sheenColorTexture.index];\n\t\t\t\textractTextureTransform(data.sheenColorTexture, material, [\n\t\t\t\t\t\t'sheen'\n\t\t\t\t]);\n\t\t}\n\t\tmaterial.sheenGloss = data.hasOwnProperty('sheenRoughnessFactor') ? data.sheenRoughnessFactor : 0.0;\n\t\tif (data.hasOwnProperty('sheenRoughnessTexture')) {\n\t\t\t\tmaterial.sheenGlossMap = textures[data.sheenRoughnessTexture.index];\n\t\t\t\tmaterial.sheenGlossMapChannel = 'a';\n\t\t\t\textractTextureTransform(data.sheenRoughnessTexture, material, [\n\t\t\t\t\t\t'sheenGloss'\n\t\t\t\t]);\n\t\t}\n\t\tmaterial.sheenGlossInvert = true;\n};\nconst extensionVolume = (data, material, textures)=>{\n\t\tmaterial.blendType = BLEND_NORMAL;\n\t\tmaterial.useDynamicRefraction = true;\n\t\tif (data.hasOwnProperty('thicknessFactor')) {\n\t\t\t\tmaterial.thickness = data.thicknessFactor;\n\t\t}\n\t\tif (data.hasOwnProperty('thicknessTexture')) {\n\t\t\t\tmaterial.thicknessMap = textures[data.thicknessTexture.index];\n\t\t\t\tmaterial.thicknessMapChannel = 'g';\n\t\t\t\textractTextureTransform(data.thicknessTexture, material, [\n\t\t\t\t\t\t'thickness'\n\t\t\t\t]);\n\t\t}\n\t\tif (data.hasOwnProperty('attenuationDistance')) {\n\t\t\t\tmaterial.attenuationDistance = data.attenuationDistance;\n\t\t}\n\t\tif (data.hasOwnProperty('attenuationColor')) {\n\t\t\t\tconst color = data.attenuationColor;\n\t\t\t\tmaterial.attenuation.set(Math.pow(color[0], 1 / 2.2), Math.pow(color[1], 1 / 2.2), Math.pow(color[2], 1 / 2.2));\n\t\t}\n};\nconst extensionEmissiveStrength = (data, material, textures)=>{\n\t\tif (data.hasOwnProperty('emissiveStrength')) {\n\t\t\t\tmaterial.emissiveIntensity = data.emissiveStrength;\n\t\t}\n};\nconst extensionIridescence = (data, material, textures)=>{\n\t\tmaterial.useIridescence = true;\n\t\tif (data.hasOwnProperty('iridescenceFactor')) {\n\t\t\t\tmaterial.iridescence = data.iridescenceFactor;\n\t\t}\n\t\tif (data.hasOwnProperty('iridescenceTexture')) {\n\t\t\t\tmaterial.iridescenceMapChannel = 'r';\n\t\t\t\tmaterial.iridescenceMap = textures[data.iridescenceTexture.index];\n\t\t\t\textractTextureTransform(data.iridescenceTexture, material, [\n\t\t\t\t\t\t'iridescence'\n\t\t\t\t]);\n\t\t}\n\t\tif (data.hasOwnProperty('iridescenceIor')) {\n\t\t\t\tmaterial.iridescenceRefractionIndex = data.iridescenceIor;\n\t\t}\n\t\tif (data.hasOwnProperty('iridescenceThicknessMinimum')) {\n\t\t\t\tmaterial.iridescenceThicknessMin = data.iridescenceThicknessMinimum;\n\t\t}\n\t\tif (data.hasOwnProperty('iridescenceThicknessMaximum')) {\n\t\t\t\tmaterial.iridescenceThicknessMax = data.iridescenceThicknessMaximum;\n\t\t}\n\t\tif (data.hasOwnProperty('iridescenceThicknessTexture')) {\n\t\t\t\tmaterial.iridescenceThicknessMapChannel = 'g';\n\t\t\t\tmaterial.iridescenceThicknessMap = textures[data.iridescenceThicknessTexture.index];\n\t\t\t\textractTextureTransform(data.iridescenceThicknessTexture, material, [\n\t\t\t\t\t\t'iridescenceThickness'\n\t\t\t\t]);\n\t\t}\n};\nconst extensionAnisotropy = (data, material, textures)=>{\n\t\tmaterial.enableGGXSpecular = true;\n\t\tif (data.hasOwnProperty('anisotropyStrength')) {\n\t\t\t\tmaterial.anisotropyIntensity = data.anisotropyStrength;\n\t\t} else {\n\t\t\t\tmaterial.anisotropyIntensity = 0;\n\t\t}\n\t\tif (data.hasOwnProperty('anisotropyTexture')) {\n\t\t\t\tconst anisotropyTexture = data.anisotropyTexture;\n\t\t\t\tmaterial.anisotropyMap = textures[anisotropyTexture.index];\n\t\t\t\textractTextureTransform(anisotropyTexture, material, [\n\t\t\t\t\t\t'anisotropy'\n\t\t\t\t]);\n\t\t}\n\t\tif (data.hasOwnProperty('anisotropyRotation')) {\n\t\t\t\tmaterial.anisotropyRotation = data.anisotropyRotation * math.RAD_TO_DEG;\n\t\t} else {\n\t\t\t\tmaterial.anisotropyRotation = 0;\n\t\t}\n};\nconst createMaterial = (gltfMaterial, textures)=>{\n\t\tconst material = new StandardMaterial();\n\t\tif (gltfMaterial.hasOwnProperty('name')) {\n\t\t\t\tmaterial.name = gltfMaterial.name;\n\t\t}\n\t\tmaterial.occludeSpecular = SPECOCC_AO;\n\t\tmaterial.diffuseVertexColor = true;\n\t\tmaterial.specularTint = true;\n\t\tmaterial.specularVertexColor = true;\n\t\tmaterial.specular.set(1, 1, 1);\n\t\tmaterial.gloss = 1;\n\t\tmaterial.glossInvert = true;\n\t\tmaterial.useMetalness = true;\n\t\tlet color, texture;\n\t\tif (gltfMaterial.hasOwnProperty('pbrMetallicRoughness')) {\n\t\t\t\tconst pbrData = gltfMaterial.pbrMetallicRoughness;\n\t\t\t\tif (pbrData.hasOwnProperty('baseColorFactor')) {\n\t\t\t\t\t\tcolor = pbrData.baseColorFactor;\n\t\t\t\t\t\tmaterial.diffuse.set(Math.pow(color[0], 1 / 2.2), Math.pow(color[1], 1 / 2.2), Math.pow(color[2], 1 / 2.2));\n\t\t\t\t\t\tmaterial.opacity = color[3];\n\t\t\t\t}\n\t\t\t\tif (pbrData.hasOwnProperty('baseColorTexture')) {\n\t\t\t\t\t\tconst baseColorTexture = pbrData.baseColorTexture;\n\t\t\t\t\t\ttexture = textures[baseColorTexture.index];\n\t\t\t\t\t\tmaterial.diffuseMap = texture;\n\t\t\t\t\t\tmaterial.diffuseMapChannel = 'rgb';\n\t\t\t\t\t\tmaterial.opacityMap = texture;\n\t\t\t\t\t\tmaterial.opacityMapChannel = 'a';\n\t\t\t\t\t\textractTextureTransform(baseColorTexture, material, [\n\t\t\t\t\t\t\t\t'diffuse',\n\t\t\t\t\t\t\t\t'opacity'\n\t\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t\tif (pbrData.hasOwnProperty('metallicFactor')) {\n\t\t\t\t\t\tmaterial.metalness = pbrData.metallicFactor;\n\t\t\t\t}\n\t\t\t\tif (pbrData.hasOwnProperty('roughnessFactor')) {\n\t\t\t\t\t\tmaterial.gloss = pbrData.roughnessFactor;\n\t\t\t\t}\n\t\t\t\tif (pbrData.hasOwnProperty('metallicRoughnessTexture')) {\n\t\t\t\t\t\tconst metallicRoughnessTexture = pbrData.metallicRoughnessTexture;\n\t\t\t\t\t\tmaterial.metalnessMap = material.glossMap = textures[metallicRoughnessTexture.index];\n\t\t\t\t\t\tmaterial.metalnessMapChannel = 'b';\n\t\t\t\t\t\tmaterial.glossMapChannel = 'g';\n\t\t\t\t\t\textractTextureTransform(metallicRoughnessTexture, material, [\n\t\t\t\t\t\t\t\t'gloss',\n\t\t\t\t\t\t\t\t'metalness'\n\t\t\t\t\t\t]);\n\t\t\t\t}\n\t\t}\n\t\tif (gltfMaterial.hasOwnProperty('normalTexture')) {\n\t\t\t\tconst normalTexture = gltfMaterial.normalTexture;\n\t\t\t\tmaterial.normalMap = textures[normalTexture.index];\n\t\t\t\textractTextureTransform(normalTexture, material, [\n\t\t\t\t\t\t'normal'\n\t\t\t\t]);\n\t\t\t\tif (normalTexture.hasOwnProperty('scale')) {\n\t\t\t\t\t\tmaterial.bumpiness = normalTexture.scale;\n\t\t\t\t}\n\t\t}\n\t\tif (gltfMaterial.hasOwnProperty('occlusionTexture')) {\n\t\t\t\tconst occlusionTexture = gltfMaterial.occlusionTexture;\n\t\t\t\tmaterial.aoMap = textures[occlusionTexture.index];\n\t\t\t\tmaterial.aoMapChannel = 'r';\n\t\t\t\textractTextureTransform(occlusionTexture, material, [\n\t\t\t\t\t\t'ao'\n\t\t\t\t]);\n\t\t}\n\t\tif (gltfMaterial.hasOwnProperty('emissiveFactor')) {\n\t\t\t\tcolor = gltfMaterial.emissiveFactor;\n\t\t\t\tmaterial.emissive.set(Math.pow(color[0], 1 / 2.2), Math.pow(color[1], 1 / 2.2), Math.pow(color[2], 1 / 2.2));\n\t\t}\n\t\tif (gltfMaterial.hasOwnProperty('emissiveTexture')) {\n\t\t\t\tconst emissiveTexture = gltfMaterial.emissiveTexture;\n\t\t\t\tmaterial.emissiveMap = textures[emissiveTexture.index];\n\t\t\t\textractTextureTransform(emissiveTexture, material, [\n\t\t\t\t\t\t'emissive'\n\t\t\t\t]);\n\t\t}\n\t\tif (gltfMaterial.hasOwnProperty('alphaMode')) {\n\t\t\t\tswitch(gltfMaterial.alphaMode){\n\t\t\t\t\t\tcase 'MASK':\n\t\t\t\t\t\t\t\tmaterial.blendType = BLEND_NONE;\n\t\t\t\t\t\t\t\tif (gltfMaterial.hasOwnProperty('alphaCutoff')) {\n\t\t\t\t\t\t\t\t\t\tmaterial.alphaTest = gltfMaterial.alphaCutoff;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tmaterial.alphaTest = 0.5;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'BLEND':\n\t\t\t\t\t\t\t\tmaterial.blendType = BLEND_NORMAL;\n\t\t\t\t\t\t\t\tmaterial.depthWrite = false;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\tcase 'OPAQUE':\n\t\t\t\t\t\t\t\tmaterial.blendType = BLEND_NONE;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t} else {\n\t\t\t\tmaterial.blendType = BLEND_NONE;\n\t\t}\n\t\tif (gltfMaterial.hasOwnProperty('doubleSided')) {\n\t\t\t\tmaterial.twoSidedLighting = gltfMaterial.doubleSided;\n\t\t\t\tmaterial.cull = gltfMaterial.doubleSided ? CULLFACE_NONE : CULLFACE_BACK;\n\t\t} else {\n\t\t\t\tmaterial.twoSidedLighting = false;\n\t\t\t\tmaterial.cull = CULLFACE_BACK;\n\t\t}\n\t\tconst extensions = {\n\t\t\t\t'KHR_materials_clearcoat': extensionClearCoat,\n\t\t\t\t'KHR_materials_emissive_strength': extensionEmissiveStrength,\n\t\t\t\t'KHR_materials_ior': extensionIor,\n\t\t\t\t'KHR_materials_dispersion': extensionDispersion,\n\t\t\t\t'KHR_materials_iridescence': extensionIridescence,\n\t\t\t\t'KHR_materials_pbrSpecularGlossiness': extensionPbrSpecGlossiness,\n\t\t\t\t'KHR_materials_sheen': extensionSheen,\n\t\t\t\t'KHR_materials_specular': extensionSpecular,\n\t\t\t\t'KHR_materials_transmission': extensionTransmission,\n\t\t\t\t'KHR_materials_unlit': extensionUnlit,\n\t\t\t\t'KHR_materials_volume': extensionVolume,\n\t\t\t\t'KHR_materials_anisotropy': extensionAnisotropy\n\t\t};\n\t\tif (gltfMaterial.hasOwnProperty('extensions')) {\n\t\t\t\tfor(const key in gltfMaterial.extensions){\n\t\t\t\t\t\tconst extensionFunc = extensions[key];\n\t\t\t\t\t\tif (extensionFunc !== undefined) {\n\t\t\t\t\t\t\t\textensionFunc(gltfMaterial.extensions[key], material, textures);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tmaterial.update();\n\t\treturn material;\n};\nconst createAnimation = (gltfAnimation, animationIndex, gltfAccessors, bufferViews, nodes, meshes, gltfNodes)=>{\n\t\tconst createAnimData = (gltfAccessor)=>{\n\t\t\t\treturn new AnimData(getNumComponents(gltfAccessor.type), getAccessorDataFloat32(gltfAccessor, bufferViews));\n\t\t};\n\t\tconst interpMap = {\n\t\t\t\t'STEP': INTERPOLATION_STEP,\n\t\t\t\t'LINEAR': INTERPOLATION_LINEAR,\n\t\t\t\t'CUBICSPLINE': INTERPOLATION_CUBIC\n\t\t};\n\t\tconst inputMap = {};\n\t\tconst outputMap = {};\n\t\tconst curveMap = {};\n\t\tlet outputCounter = 1;\n\t\tlet i;\n\t\tfor(i = 0; i < gltfAnimation.samplers.length; ++i){\n\t\t\t\tconst sampler = gltfAnimation.samplers[i];\n\t\t\t\tif (!inputMap.hasOwnProperty(sampler.input)) {\n\t\t\t\t\t\tinputMap[sampler.input] = createAnimData(gltfAccessors[sampler.input]);\n\t\t\t\t}\n\t\t\t\tif (!outputMap.hasOwnProperty(sampler.output)) {\n\t\t\t\t\t\toutputMap[sampler.output] = createAnimData(gltfAccessors[sampler.output]);\n\t\t\t\t}\n\t\t\t\tconst interpolation = sampler.hasOwnProperty('interpolation') && interpMap.hasOwnProperty(sampler.interpolation) ? interpMap[sampler.interpolation] : INTERPOLATION_LINEAR;\n\t\t\t\tconst curve = {\n\t\t\t\t\t\tpaths: [],\n\t\t\t\t\t\tinput: sampler.input,\n\t\t\t\t\t\toutput: sampler.output,\n\t\t\t\t\t\tinterpolation: interpolation\n\t\t\t\t};\n\t\t\t\tcurveMap[i] = curve;\n\t\t}\n\t\tconst quatArrays = [];\n\t\tconst transformSchema = {\n\t\t\t\t'translation': 'localPosition',\n\t\t\t\t'rotation': 'localRotation',\n\t\t\t\t'scale': 'localScale'\n\t\t};\n\t\tconst constructNodePath = (node)=>{\n\t\t\t\tconst path = [];\n\t\t\t\twhile(node){\n\t\t\t\t\t\tpath.unshift(node.name);\n\t\t\t\t\t\tnode = node.parent;\n\t\t\t\t}\n\t\t\t\treturn path;\n\t\t};\n\t\tconst createMorphTargetCurves = (curve, gltfNode, entityPath)=>{\n\t\t\t\tconst out = outputMap[curve.output];\n\t\t\t\tif (!out) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tlet targetNames;\n\t\t\t\tif (meshes && meshes[gltfNode.mesh]) {\n\t\t\t\t\t\tconst mesh = meshes[gltfNode.mesh];\n\t\t\t\t\t\tif (mesh.hasOwnProperty('extras') && mesh.extras.hasOwnProperty('targetNames')) {\n\t\t\t\t\t\t\t\ttargetNames = mesh.extras.targetNames;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst outData = out.data;\n\t\t\t\tconst morphTargetCount = outData.length / inputMap[curve.input].data.length;\n\t\t\t\tconst keyframeCount = outData.length / morphTargetCount;\n\t\t\t\tconst singleBufferSize = keyframeCount * 4;\n\t\t\t\tconst buffer = new ArrayBuffer(singleBufferSize * morphTargetCount);\n\t\t\t\tfor(let j = 0; j < morphTargetCount; j++){\n\t\t\t\t\t\tconst morphTargetOutput = new Float32Array(buffer, singleBufferSize * j, keyframeCount);\n\t\t\t\t\t\tfor(let k = 0; k < keyframeCount; k++){\n\t\t\t\t\t\t\t\tmorphTargetOutput[k] = outData[k * morphTargetCount + j];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst output = new AnimData(1, morphTargetOutput);\n\t\t\t\t\t\tconst weightName = targetNames?.[j] ? `name.${targetNames[j]}` : j;\n\t\t\t\t\t\toutputMap[-outputCounter] = output;\n\t\t\t\t\t\tconst morphCurve = {\n\t\t\t\t\t\t\t\tpaths: [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tentityPath: entityPath,\n\t\t\t\t\t\t\t\t\t\t\t\tcomponent: 'graph',\n\t\t\t\t\t\t\t\t\t\t\t\tpropertyPath: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t`weight.${weightName}`\n\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tinput: curve.input,\n\t\t\t\t\t\t\t\toutput: -outputCounter,\n\t\t\t\t\t\t\t\tinterpolation: curve.interpolation\n\t\t\t\t\t\t};\n\t\t\t\t\t\toutputCounter++;\n\t\t\t\t\t\tcurveMap[`morphCurve-${i}-${j}`] = morphCurve;\n\t\t\t\t}\n\t\t};\n\t\tfor(i = 0; i < gltfAnimation.channels.length; ++i){\n\t\t\t\tconst channel = gltfAnimation.channels[i];\n\t\t\t\tconst target = channel.target;\n\t\t\t\tconst curve = curveMap[channel.sampler];\n\t\t\t\tconst node = nodes[target.node];\n\t\t\t\tconst gltfNode = gltfNodes[target.node];\n\t\t\t\tconst entityPath = constructNodePath(node);\n\t\t\t\tif (target.path.startsWith('weights')) {\n\t\t\t\t\t\tcreateMorphTargetCurves(curve, gltfNode, entityPath);\n\t\t\t\t\t\tcurveMap[channel.sampler].morphCurve = true;\n\t\t\t\t} else {\n\t\t\t\t\t\tcurve.paths.push({\n\t\t\t\t\t\t\t\tentityPath: entityPath,\n\t\t\t\t\t\t\t\tcomponent: 'graph',\n\t\t\t\t\t\t\t\tpropertyPath: [\n\t\t\t\t\t\t\t\t\t\ttransformSchema[target.path]\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t}\n\t\tconst inputs = [];\n\t\tconst outputs = [];\n\t\tconst curves = [];\n\t\tfor(const inputKey in inputMap){\n\t\t\t\tinputs.push(inputMap[inputKey]);\n\t\t\t\tinputMap[inputKey] = inputs.length - 1;\n\t\t}\n\t\tfor(const outputKey in outputMap){\n\t\t\t\toutputs.push(outputMap[outputKey]);\n\t\t\t\toutputMap[outputKey] = outputs.length - 1;\n\t\t}\n\t\tfor(const curveKey in curveMap){\n\t\t\t\tconst curveData = curveMap[curveKey];\n\t\t\t\tif (curveData.morphCurve) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tcurves.push(new AnimCurve(curveData.paths, inputMap[curveData.input], outputMap[curveData.output], curveData.interpolation));\n\t\t\t\tif (curveData.paths.length > 0 && curveData.paths[0].propertyPath[0] === 'localRotation' && curveData.interpolation !== INTERPOLATION_CUBIC) {\n\t\t\t\t\t\tquatArrays.push(curves[curves.length - 1].output);\n\t\t\t\t}\n\t\t}\n\t\tquatArrays.sort();\n\t\tlet prevIndex = null;\n\t\tlet data;\n\t\tfor(i = 0; i < quatArrays.length; ++i){\n\t\t\t\tconst index = quatArrays[i];\n\t\t\t\tif (i === 0 || index !== prevIndex) {\n\t\t\t\t\t\tdata = outputs[index];\n\t\t\t\t\t\tif (data.components === 4) {\n\t\t\t\t\t\t\t\tconst d = data.data;\n\t\t\t\t\t\t\t\tconst len = d.length - 4;\n\t\t\t\t\t\t\t\tfor(let j = 0; j < len; j += 4){\n\t\t\t\t\t\t\t\t\t\tconst dp = d[j + 0] * d[j + 4] + d[j + 1] * d[j + 5] + d[j + 2] * d[j + 6] + d[j + 3] * d[j + 7];\n\t\t\t\t\t\t\t\t\t\tif (dp < 0) {\n\t\t\t\t\t\t\t\t\t\t\t\td[j + 4] *= -1;\n\t\t\t\t\t\t\t\t\t\t\t\td[j + 5] *= -1;\n\t\t\t\t\t\t\t\t\t\t\t\td[j + 6] *= -1;\n\t\t\t\t\t\t\t\t\t\t\t\td[j + 7] *= -1;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tprevIndex = index;\n\t\t\t\t}\n\t\t}\n\t\tlet duration = 0;\n\t\tfor(i = 0; i < inputs.length; i++){\n\t\t\t\tdata = inputs[i]._data;\n\t\t\t\tduration = Math.max(duration, data.length === 0 ? 0 : data[data.length - 1]);\n\t\t}\n\t\treturn new AnimTrack(gltfAnimation.hasOwnProperty('name') ? gltfAnimation.name : `animation_${animationIndex}`, duration, inputs, outputs, curves);\n};\nconst tempMat = new Mat4();\nconst tempVec = new Vec3();\nconst createNode = (gltfNode, nodeIndex, nodeInstancingMap)=>{\n\t\tconst entity = new GraphNode();\n\t\tif (gltfNode.hasOwnProperty('name') && gltfNode.name.length > 0) {\n\t\t\t\tentity.name = gltfNode.name;\n\t\t} else {\n\t\t\t\tentity.name = `node_${nodeIndex}`;\n\t\t}\n\t\tif (gltfNode.hasOwnProperty('matrix')) {\n\t\t\t\ttempMat.data.set(gltfNode.matrix);\n\t\t\t\ttempMat.getTranslation(tempVec);\n\t\t\t\tentity.setLocalPosition(tempVec);\n\t\t\t\ttempMat.getEulerAngles(tempVec);\n\t\t\t\tentity.setLocalEulerAngles(tempVec);\n\t\t\t\ttempMat.getScale(tempVec);\n\t\t\t\tentity.setLocalScale(tempVec);\n\t\t}\n\t\tif (gltfNode.hasOwnProperty('rotation')) {\n\t\t\t\tconst r = gltfNode.rotation;\n\t\t\t\tentity.setLocalRotation(r[0], r[1], r[2], r[3]);\n\t\t}\n\t\tif (gltfNode.hasOwnProperty('translation')) {\n\t\t\t\tconst t = gltfNode.translation;\n\t\t\t\tentity.setLocalPosition(t[0], t[1], t[2]);\n\t\t}\n\t\tif (gltfNode.hasOwnProperty('scale')) {\n\t\t\t\tconst s = gltfNode.scale;\n\t\t\t\tentity.setLocalScale(s[0], s[1], s[2]);\n\t\t}\n\t\tif (gltfNode.hasOwnProperty('extensions') && gltfNode.extensions.EXT_mesh_gpu_instancing) {\n\t\t\t\tnodeInstancingMap.set(gltfNode, {\n\t\t\t\t\t\text: gltfNode.extensions.EXT_mesh_gpu_instancing\n\t\t\t\t});\n\t\t}\n\t\treturn entity;\n};\nconst createCamera = (gltfCamera, node)=>{\n\t\tconst projection = gltfCamera.type === 'orthographic' ? PROJECTION_ORTHOGRAPHIC : PROJECTION_PERSPECTIVE;\n\t\tconst gltfProperties = projection === PROJECTION_ORTHOGRAPHIC ? gltfCamera.orthographic : gltfCamera.perspective;\n\t\tconst componentData = {\n\t\t\t\tenabled: false,\n\t\t\t\tprojection: projection,\n\t\t\t\tnearClip: gltfProperties.znear,\n\t\t\t\taspectRatioMode: ASPECT_AUTO\n\t\t};\n\t\tif (gltfProperties.zfar) {\n\t\t\t\tcomponentData.farClip = gltfProperties.zfar;\n\t\t}\n\t\tif (projection === PROJECTION_ORTHOGRAPHIC) {\n\t\t\t\tcomponentData.orthoHeight = 0.5 * gltfProperties.ymag;\n\t\t\t\tif (gltfProperties.ymag) {\n\t\t\t\t\t\tcomponentData.aspectRatioMode = ASPECT_MANUAL;\n\t\t\t\t\t\tcomponentData.aspectRatio = gltfProperties.xmag / gltfProperties.ymag;\n\t\t\t\t}\n\t\t} else {\n\t\t\t\tcomponentData.fov = gltfProperties.yfov * math.RAD_TO_DEG;\n\t\t\t\tif (gltfProperties.aspectRatio) {\n\t\t\t\t\t\tcomponentData.aspectRatioMode = ASPECT_MANUAL;\n\t\t\t\t\t\tcomponentData.aspectRatio = gltfProperties.aspectRatio;\n\t\t\t\t}\n\t\t}\n\t\tconst cameraEntity = new Entity(gltfCamera.name);\n\t\tcameraEntity.addComponent('camera', componentData);\n\t\treturn cameraEntity;\n};\nconst createLight = (gltfLight, node)=>{\n\t\tconst lightProps = {\n\t\t\t\tenabled: false,\n\t\t\t\ttype: gltfLight.type === 'point' ? 'omni' : gltfLight.type,\n\t\t\t\tcolor: gltfLight.hasOwnProperty('color') ? new Color(gltfLight.color) : Color.WHITE,\n\t\t\t\trange: gltfLight.hasOwnProperty('range') ? gltfLight.range : 9999,\n\t\t\t\tfalloffMode: LIGHTFALLOFF_INVERSESQUARED,\n\t\t\t\tintensity: gltfLight.hasOwnProperty('intensity') ? math.clamp(gltfLight.intensity, 0, 2) : 1\n\t\t};\n\t\tif (gltfLight.hasOwnProperty('spot')) {\n\t\t\t\tlightProps.innerConeAngle = gltfLight.spot.hasOwnProperty('innerConeAngle') ? gltfLight.spot.innerConeAngle * math.RAD_TO_DEG : 0;\n\t\t\t\tlightProps.outerConeAngle = gltfLight.spot.hasOwnProperty('outerConeAngle') ? gltfLight.spot.outerConeAngle * math.RAD_TO_DEG : Math.PI / 4;\n\t\t}\n\t\tif (gltfLight.hasOwnProperty('intensity')) {\n\t\t\t\tlightProps.luminance = gltfLight.intensity * Light.getLightUnitConversion(lightTypes[lightProps.type], lightProps.outerConeAngle, lightProps.innerConeAngle);\n\t\t}\n\t\tconst lightEntity = new Entity(node.name);\n\t\tlightEntity.rotateLocal(90, 0, 0);\n\t\tlightEntity.addComponent('light', lightProps);\n\t\treturn lightEntity;\n};\nconst createSkins = (device, gltf, nodes, bufferViews)=>{\n\t\tif (!gltf.hasOwnProperty('skins') || gltf.skins.length === 0) {\n\t\t\t\treturn [];\n\t\t}\n\t\tconst glbSkins = new Map();\n\t\treturn gltf.skins.map((gltfSkin)=>{\n\t\t\t\treturn createSkin(device, gltfSkin, gltf.accessors, bufferViews, nodes, glbSkins);\n\t\t});\n};\nconst createMeshes = (device, gltf, bufferViews, options)=>{\n\t\tconst vertexBufferDict = {};\n\t\tconst meshVariants = {};\n\t\tconst meshDefaultMaterials = {};\n\t\tconst promises = [];\n\t\tconst valid = !options.skipMeshes && gltf?.meshes?.length && gltf?.accessors?.length && gltf?.bufferViews?.length;\n\t\tconst meshes = valid ? gltf.meshes.map((gltfMesh)=>{\n\t\t\t\treturn createMesh$1(device, gltfMesh, gltf.accessors, bufferViews, vertexBufferDict, meshVariants, meshDefaultMaterials, options, promises);\n\t\t}) : [];\n\t\treturn {\n\t\t\t\tmeshes,\n\t\t\t\tmeshVariants,\n\t\t\t\tmeshDefaultMaterials,\n\t\t\t\tpromises\n\t\t};\n};\nconst createMaterials = (gltf, textures, options)=>{\n\t\tif (!gltf.hasOwnProperty('materials') || gltf.materials.length === 0) {\n\t\t\t\treturn [];\n\t\t}\n\t\tconst preprocess = options?.material?.preprocess;\n\t\tconst process = options?.material?.process ?? createMaterial;\n\t\tconst postprocess = options?.material?.postprocess;\n\t\treturn gltf.materials.map((gltfMaterial)=>{\n\t\t\t\tif (preprocess) {\n\t\t\t\t\t\tpreprocess(gltfMaterial);\n\t\t\t\t}\n\t\t\t\tconst material = process(gltfMaterial, textures);\n\t\t\t\tif (postprocess) {\n\t\t\t\t\t\tpostprocess(gltfMaterial, material);\n\t\t\t\t}\n\t\t\t\treturn material;\n\t\t});\n};\nconst createVariants = (gltf)=>{\n\t\tif (!gltf.hasOwnProperty('extensions') || !gltf.extensions.hasOwnProperty('KHR_materials_variants')) {\n\t\t\t\treturn null;\n\t\t}\n\t\tconst data = gltf.extensions.KHR_materials_variants.variants;\n\t\tconst variants = {};\n\t\tfor(let i = 0; i < data.length; i++){\n\t\t\t\tvariants[data[i].name] = i;\n\t\t}\n\t\treturn variants;\n};\nconst createAnimations = (gltf, nodes, bufferViews, options)=>{\n\t\tif (!gltf.hasOwnProperty('animations') || gltf.animations.length === 0) {\n\t\t\t\treturn [];\n\t\t}\n\t\tconst preprocess = options?.animation?.preprocess;\n\t\tconst postprocess = options?.animation?.postprocess;\n\t\treturn gltf.animations.map((gltfAnimation, index)=>{\n\t\t\t\tif (preprocess) {\n\t\t\t\t\t\tpreprocess(gltfAnimation);\n\t\t\t\t}\n\t\t\t\tconst animation = createAnimation(gltfAnimation, index, gltf.accessors, bufferViews, nodes, gltf.meshes, gltf.nodes);\n\t\t\t\tif (postprocess) {\n\t\t\t\t\t\tpostprocess(gltfAnimation, animation);\n\t\t\t\t}\n\t\t\t\treturn animation;\n\t\t});\n};\nconst createInstancing = (device, gltf, nodeInstancingMap, bufferViews)=>{\n\t\tconst accessors = gltf.accessors;\n\t\tnodeInstancingMap.forEach((data, entity)=>{\n\t\t\t\tconst attributes = data.ext.attributes;\n\t\t\t\tlet translations;\n\t\t\t\tif (attributes.hasOwnProperty('TRANSLATION')) {\n\t\t\t\t\t\tconst accessor = accessors[attributes.TRANSLATION];\n\t\t\t\t\t\ttranslations = getAccessorDataFloat32(accessor, bufferViews);\n\t\t\t\t}\n\t\t\t\tlet rotations;\n\t\t\t\tif (attributes.hasOwnProperty('ROTATION')) {\n\t\t\t\t\t\tconst accessor = accessors[attributes.ROTATION];\n\t\t\t\t\t\trotations = getAccessorDataFloat32(accessor, bufferViews);\n\t\t\t\t}\n\t\t\t\tlet scales;\n\t\t\t\tif (attributes.hasOwnProperty('SCALE')) {\n\t\t\t\t\t\tconst accessor = accessors[attributes.SCALE];\n\t\t\t\t\t\tscales = getAccessorDataFloat32(accessor, bufferViews);\n\t\t\t\t}\n\t\t\t\tconst instanceCount = (translations ? translations.length / 3 : 0) || (rotations ? rotations.length / 4 : 0) || (scales ? scales.length / 3 : 0);\n\t\t\t\tif (instanceCount) {\n\t\t\t\t\t\tconst matrices = new Float32Array(instanceCount * 16);\n\t\t\t\t\t\tconst pos = new Vec3();\n\t\t\t\t\t\tconst rot = new Quat();\n\t\t\t\t\t\tconst scl = new Vec3(1, 1, 1);\n\t\t\t\t\t\tconst matrix = new Mat4();\n\t\t\t\t\t\tlet matrixIndex = 0;\n\t\t\t\t\t\tfor(let i = 0; i < instanceCount; i++){\n\t\t\t\t\t\t\t\tconst i3 = i * 3;\n\t\t\t\t\t\t\t\tif (translations) {\n\t\t\t\t\t\t\t\t\t\tpos.set(translations[i3], translations[i3 + 1], translations[i3 + 2]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (rotations) {\n\t\t\t\t\t\t\t\t\t\tconst i4 = i * 4;\n\t\t\t\t\t\t\t\t\t\trot.set(rotations[i4], rotations[i4 + 1], rotations[i4 + 2], rotations[i4 + 3]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (scales) {\n\t\t\t\t\t\t\t\t\t\tscl.set(scales[i3], scales[i3 + 1], scales[i3 + 2]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tmatrix.setTRS(pos, rot, scl);\n\t\t\t\t\t\t\t\tfor(let m = 0; m < 16; m++){\n\t\t\t\t\t\t\t\t\t\tmatrices[matrixIndex++] = matrix.data[m];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdata.matrices = matrices;\n\t\t\t\t}\n\t\t});\n};\nconst createNodes = (gltf, options, nodeInstancingMap)=>{\n\t\tif (!gltf.hasOwnProperty('nodes') || gltf.nodes.length === 0) {\n\t\t\t\treturn [];\n\t\t}\n\t\tconst preprocess = options?.node?.preprocess;\n\t\tconst process = options?.node?.process ?? createNode;\n\t\tconst postprocess = options?.node?.postprocess;\n\t\tconst nodes = gltf.nodes.map((gltfNode, index)=>{\n\t\t\t\tif (preprocess) {\n\t\t\t\t\t\tpreprocess(gltfNode);\n\t\t\t\t}\n\t\t\t\tconst node = process(gltfNode, index, nodeInstancingMap);\n\t\t\t\tif (postprocess) {\n\t\t\t\t\t\tpostprocess(gltfNode, node);\n\t\t\t\t}\n\t\t\t\treturn node;\n\t\t});\n\t\tfor(let i = 0; i < gltf.nodes.length; ++i){\n\t\t\t\tconst gltfNode = gltf.nodes[i];\n\t\t\t\tif (gltfNode.hasOwnProperty('children')) {\n\t\t\t\t\t\tconst parent = nodes[i];\n\t\t\t\t\t\tconst uniqueNames = {};\n\t\t\t\t\t\tfor(let j = 0; j < gltfNode.children.length; ++j){\n\t\t\t\t\t\t\t\tconst child = nodes[gltfNode.children[j]];\n\t\t\t\t\t\t\t\tif (!child.parent) {\n\t\t\t\t\t\t\t\t\t\tif (uniqueNames.hasOwnProperty(child.name)) {\n\t\t\t\t\t\t\t\t\t\t\t\tchild.name += uniqueNames[child.name]++;\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tuniqueNames[child.name] = 1;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tparent.addChild(child);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\treturn nodes;\n};\nconst createScenes = (gltf, nodes)=>{\n\t\tconst scenes = [];\n\t\tconst count = gltf.scenes.length;\n\t\tif (count === 1 && gltf.scenes[0].nodes?.length === 1) {\n\t\t\t\tconst nodeIndex = gltf.scenes[0].nodes[0];\n\t\t\t\tscenes.push(nodes[nodeIndex]);\n\t\t} else {\n\t\t\t\tfor(let i = 0; i < count; i++){\n\t\t\t\t\t\tconst scene = gltf.scenes[i];\n\t\t\t\t\t\tif (scene.nodes) {\n\t\t\t\t\t\t\t\tconst sceneRoot = new GraphNode(scene.name);\n\t\t\t\t\t\t\t\tfor(let n = 0; n < scene.nodes.length; n++){\n\t\t\t\t\t\t\t\t\t\tconst childNode = nodes[scene.nodes[n]];\n\t\t\t\t\t\t\t\t\t\tsceneRoot.addChild(childNode);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tscenes.push(sceneRoot);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\treturn scenes;\n};\nconst createCameras = (gltf, nodes, options)=>{\n\t\tlet cameras = null;\n\t\tif (gltf.hasOwnProperty('nodes') && gltf.hasOwnProperty('cameras') && gltf.cameras.length > 0) {\n\t\t\t\tconst preprocess = options?.camera?.preprocess;\n\t\t\t\tconst process = options?.camera?.process ?? createCamera;\n\t\t\t\tconst postprocess = options?.camera?.postprocess;\n\t\t\t\tgltf.nodes.forEach((gltfNode, nodeIndex)=>{\n\t\t\t\t\t\tif (gltfNode.hasOwnProperty('camera')) {\n\t\t\t\t\t\t\t\tconst gltfCamera = gltf.cameras[gltfNode.camera];\n\t\t\t\t\t\t\t\tif (gltfCamera) {\n\t\t\t\t\t\t\t\t\t\tif (preprocess) {\n\t\t\t\t\t\t\t\t\t\t\t\tpreprocess(gltfCamera);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tconst camera = process(gltfCamera, nodes[nodeIndex]);\n\t\t\t\t\t\t\t\t\t\tif (postprocess) {\n\t\t\t\t\t\t\t\t\t\t\t\tpostprocess(gltfCamera, camera);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (camera) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (!cameras) cameras = new Map();\n\t\t\t\t\t\t\t\t\t\t\t\tcameras.set(gltfNode, camera);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\treturn cameras;\n};\nconst createLights = (gltf, nodes, options)=>{\n\t\tlet lights = null;\n\t\tif (gltf.hasOwnProperty('nodes') && gltf.hasOwnProperty('extensions') && gltf.extensions.hasOwnProperty('KHR_lights_punctual') && gltf.extensions.KHR_lights_punctual.hasOwnProperty('lights')) {\n\t\t\t\tconst gltfLights = gltf.extensions.KHR_lights_punctual.lights;\n\t\t\t\tif (gltfLights.length) {\n\t\t\t\t\t\tconst preprocess = options?.light?.preprocess;\n\t\t\t\t\t\tconst process = options?.light?.process ?? createLight;\n\t\t\t\t\t\tconst postprocess = options?.light?.postprocess;\n\t\t\t\t\t\tgltf.nodes.forEach((gltfNode, nodeIndex)=>{\n\t\t\t\t\t\t\t\tif (gltfNode.hasOwnProperty('extensions') && gltfNode.extensions.hasOwnProperty('KHR_lights_punctual') && gltfNode.extensions.KHR_lights_punctual.hasOwnProperty('light')) {\n\t\t\t\t\t\t\t\t\t\tconst lightIndex = gltfNode.extensions.KHR_lights_punctual.light;\n\t\t\t\t\t\t\t\t\t\tconst gltfLight = gltfLights[lightIndex];\n\t\t\t\t\t\t\t\t\t\tif (gltfLight) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (preprocess) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tpreprocess(gltfLight);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tconst light = process(gltfLight, nodes[nodeIndex]);\n\t\t\t\t\t\t\t\t\t\t\t\tif (postprocess) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tpostprocess(gltfLight, light);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tif (light) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (!lights) lights = new Map();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlights.set(gltfNode, light);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t}\n\t\treturn lights;\n};\nconst linkSkins = (gltf, renders, skins)=>{\n\t\tgltf.nodes.forEach((gltfNode)=>{\n\t\t\t\tif (gltfNode.hasOwnProperty('mesh') && gltfNode.hasOwnProperty('skin')) {\n\t\t\t\t\t\tconst meshGroup = renders[gltfNode.mesh].meshes;\n\t\t\t\t\t\tmeshGroup.forEach((mesh)=>{\n\t\t\t\t\t\t\t\tmesh.skin = skins[gltfNode.skin];\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t});\n};\nconst createResources = async (device, gltf, bufferViews, textures, options)=>{\n\t\tconst preprocess = options?.global?.preprocess;\n\t\tconst postprocess = options?.global?.postprocess;\n\t\tif (preprocess) {\n\t\t\t\tpreprocess(gltf);\n\t\t}\n\t\tif (gltf.asset && gltf.asset.generator === 'PlayCanvas') ;\n\t\tconst nodeInstancingMap = new Map();\n\t\tconst nodes = createNodes(gltf, options, nodeInstancingMap);\n\t\tconst scenes = createScenes(gltf, nodes);\n\t\tconst lights = createLights(gltf, nodes, options);\n\t\tconst cameras = createCameras(gltf, nodes, options);\n\t\tconst variants = createVariants(gltf);\n\t\tconst bufferViewData = await Promise.all(bufferViews);\n\t\tconst { meshes, meshVariants, meshDefaultMaterials, promises } = createMeshes(device, gltf, bufferViewData, options);\n\t\tconst animations = createAnimations(gltf, nodes, bufferViewData, options);\n\t\tcreateInstancing(device, gltf, nodeInstancingMap, bufferViewData);\n\t\tconst textureAssets = await Promise.all(textures);\n\t\tconst textureInstances = textureAssets.map((t)=>t.resource);\n\t\tconst materials = createMaterials(gltf, textureInstances, options);\n\t\tconst skins = createSkins(device, gltf, nodes, bufferViewData);\n\t\tconst renders = [];\n\t\tfor(let i = 0; i < meshes.length; i++){\n\t\t\t\trenders[i] = new Render();\n\t\t\t\trenders[i].meshes = meshes[i];\n\t\t}\n\t\tlinkSkins(gltf, renders, skins);\n\t\tconst result = new GlbResources();\n\t\tresult.gltf = gltf;\n\t\tresult.nodes = nodes;\n\t\tresult.scenes = scenes;\n\t\tresult.animations = animations;\n\t\tresult.textures = textureAssets;\n\t\tresult.materials = materials;\n\t\tresult.variants = variants;\n\t\tresult.meshVariants = meshVariants;\n\t\tresult.meshDefaultMaterials = meshDefaultMaterials;\n\t\tresult.renders = renders;\n\t\tresult.skins = skins;\n\t\tresult.lights = lights;\n\t\tresult.cameras = cameras;\n\t\tresult.nodeInstancingMap = nodeInstancingMap;\n\t\tif (postprocess) {\n\t\t\t\tpostprocess(gltf, result);\n\t\t}\n\t\tawait Promise.all(promises);\n\t\treturn result;\n};\nconst applySampler = (texture, gltfSampler)=>{\n\t\tconst getFilter = (filter, defaultValue)=>{\n\t\t\t\tswitch(filter){\n\t\t\t\t\t\tcase 9728:\n\t\t\t\t\t\t\t\treturn FILTER_NEAREST;\n\t\t\t\t\t\tcase 9729:\n\t\t\t\t\t\t\t\treturn FILTER_LINEAR;\n\t\t\t\t\t\tcase 9984:\n\t\t\t\t\t\t\t\treturn FILTER_NEAREST_MIPMAP_NEAREST;\n\t\t\t\t\t\tcase 9985:\n\t\t\t\t\t\t\t\treturn FILTER_LINEAR_MIPMAP_NEAREST;\n\t\t\t\t\t\tcase 9986:\n\t\t\t\t\t\t\t\treturn FILTER_NEAREST_MIPMAP_LINEAR;\n\t\t\t\t\t\tcase 9987:\n\t\t\t\t\t\t\t\treturn FILTER_LINEAR_MIPMAP_LINEAR;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\treturn defaultValue;\n\t\t\t\t}\n\t\t};\n\t\tconst getWrap = (wrap, defaultValue)=>{\n\t\t\t\tswitch(wrap){\n\t\t\t\t\t\tcase 33071:\n\t\t\t\t\t\t\t\treturn ADDRESS_CLAMP_TO_EDGE;\n\t\t\t\t\t\tcase 33648:\n\t\t\t\t\t\t\t\treturn ADDRESS_MIRRORED_REPEAT;\n\t\t\t\t\t\tcase 10497:\n\t\t\t\t\t\t\t\treturn ADDRESS_REPEAT;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\treturn defaultValue;\n\t\t\t\t}\n\t\t};\n\t\tif (texture) {\n\t\t\t\tgltfSampler = gltfSampler ?? {};\n\t\t\t\ttexture.minFilter = getFilter(gltfSampler.minFilter, FILTER_LINEAR_MIPMAP_LINEAR);\n\t\t\t\ttexture.magFilter = getFilter(gltfSampler.magFilter, FILTER_LINEAR);\n\t\t\t\ttexture.addressU = getWrap(gltfSampler.wrapS, ADDRESS_REPEAT);\n\t\t\t\ttexture.addressV = getWrap(gltfSampler.wrapT, ADDRESS_REPEAT);\n\t\t}\n};\nlet gltfTextureUniqueId = 0;\nconst getTextureSource = (gltfTexture)=>gltfTexture.extensions?.KHR_texture_basisu?.source ?? gltfTexture.extensions?.EXT_texture_webp?.source ?? gltfTexture.source;\nconst createImages = (gltf, bufferViews, urlBase, registry, options)=>{\n\t\tif (!gltf.images || gltf.images.length === 0) {\n\t\t\t\treturn [];\n\t\t}\n\t\tconst preprocess = options?.image?.preprocess;\n\t\tconst processAsync = options?.image?.processAsync;\n\t\tconst postprocess = options?.image?.postprocess;\n\t\tconst mimeTypeFileExtensions = {\n\t\t\t\t'image/png': 'png',\n\t\t\t\t'image/jpeg': 'jpg',\n\t\t\t\t'image/basis': 'basis',\n\t\t\t\t'image/ktx': 'ktx',\n\t\t\t\t'image/ktx2': 'ktx2',\n\t\t\t\t'image/vnd-ms.dds': 'dds'\n\t\t};\n\t\tconst getGammaTextures = (gltf)=>{\n\t\t\t\tconst set = new Set();\n\t\t\t\tif (gltf.hasOwnProperty('materials')) {\n\t\t\t\t\t\tgltf.materials.forEach((gltfMaterial)=>{\n\t\t\t\t\t\t\t\tif (gltfMaterial.hasOwnProperty('pbrMetallicRoughness')) {\n\t\t\t\t\t\t\t\t\t\tconst pbrData = gltfMaterial.pbrMetallicRoughness;\n\t\t\t\t\t\t\t\t\t\tif (pbrData.hasOwnProperty('baseColorTexture')) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst gltfTexture = gltf.textures[pbrData.baseColorTexture.index];\n\t\t\t\t\t\t\t\t\t\t\t\tset.add(getTextureSource(gltfTexture));\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (gltfMaterial.hasOwnProperty('emissiveTexture')) {\n\t\t\t\t\t\t\t\t\t\tconst gltfTexture = gltf.textures[gltfMaterial.emissiveTexture.index];\n\t\t\t\t\t\t\t\t\t\tset.add(getTextureSource(gltfTexture));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (gltfMaterial.hasOwnProperty('extensions')) {\n\t\t\t\t\t\t\t\t\t\tconst sheen = gltfMaterial.extensions.KHR_materials_sheen;\n\t\t\t\t\t\t\t\t\t\tif (sheen) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (sheen.hasOwnProperty('sheenColorTexture')) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst gltfTexture = gltf.textures[sheen.sheenColorTexture.index];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tset.add(getTextureSource(gltfTexture));\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tconst specularGlossiness = gltfMaterial.extensions.KHR_materials_pbrSpecularGlossiness;\n\t\t\t\t\t\t\t\t\t\tif (specularGlossiness) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (specularGlossiness.hasOwnProperty('specularGlossinessTexture')) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst gltfTexture = gltf.textures[specularGlossiness.specularGlossinessTexture.index];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tset.add(getTextureSource(gltfTexture));\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tconst specular = gltfMaterial.extensions.KHR_materials_specular;\n\t\t\t\t\t\t\t\t\t\tif (specular) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (specular.hasOwnProperty('specularColorTexture')) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst gltfTexture = gltf.textures[specular.specularColorTexture.index];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tset.add(getTextureSource(gltfTexture));\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn set;\n\t\t};\n\t\tconst loadTexture = (gltfImage, url, bufferView, mimeType, options, srgb)=>{\n\t\t\t\treturn new Promise((resolve, reject)=>{\n\t\t\t\t\t\tconst continuation = (bufferViewData)=>{\n\t\t\t\t\t\t\t\tconst name = `${gltfImage.name || 'gltf-texture'}-${gltfTextureUniqueId++}`;\n\t\t\t\t\t\t\t\tconst file = {\n\t\t\t\t\t\t\t\t\t\turl: url || name\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tif (bufferViewData) {\n\t\t\t\t\t\t\t\t\t\tfile.contents = bufferViewData.slice(0).buffer;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (mimeType) {\n\t\t\t\t\t\t\t\t\t\tconst extension = mimeTypeFileExtensions[mimeType];\n\t\t\t\t\t\t\t\t\t\tif (extension) {\n\t\t\t\t\t\t\t\t\t\t\t\tfile.filename = `${file.url}.${extension}`;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst data = {\n\t\t\t\t\t\t\t\t\t\tsrgb\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tconst asset = new Asset(name, 'texture', file, data, options);\n\t\t\t\t\t\t\t\tasset.on('load', (asset)=>resolve(asset));\n\t\t\t\t\t\t\t\tasset.on('error', (err)=>reject(err));\n\t\t\t\t\t\t\t\tregistry.add(asset);\n\t\t\t\t\t\t\t\tregistry.load(asset);\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (bufferView) {\n\t\t\t\t\t\t\t\tbufferView.then((bufferViewData)=>continuation(bufferViewData));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcontinuation(null);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t};\n\t\tconst gammaTextures = getGammaTextures(gltf);\n\t\treturn gltf.images.map((gltfImage, i)=>{\n\t\t\t\tif (preprocess) {\n\t\t\t\t\t\tpreprocess(gltfImage);\n\t\t\t\t}\n\t\t\t\tlet promise;\n\t\t\t\tif (processAsync) {\n\t\t\t\t\t\tpromise = new Promise((resolve, reject)=>{\n\t\t\t\t\t\t\t\tprocessAsync(gltfImage, (err, textureAsset)=>{\n\t\t\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tresolve(textureAsset);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t\tpromise = new Promise((resolve)=>{\n\t\t\t\t\t\t\t\tresolve(null);\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tpromise = promise.then((textureAsset)=>{\n\t\t\t\t\t\tconst srgb = gammaTextures.has(i);\n\t\t\t\t\t\tif (textureAsset) {\n\t\t\t\t\t\t\t\treturn textureAsset;\n\t\t\t\t\t\t} else if (gltfImage.hasOwnProperty('uri')) {\n\t\t\t\t\t\t\t\tif (isDataURI(gltfImage.uri)) {\n\t\t\t\t\t\t\t\t\t\treturn loadTexture(gltfImage, gltfImage.uri, null, getDataURIMimeType(gltfImage.uri), null, srgb);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn loadTexture(gltfImage, ABSOLUTE_URL.test(gltfImage.uri) ? gltfImage.uri : path.join(urlBase, gltfImage.uri), null, null, {\n\t\t\t\t\t\t\t\t\t\tcrossOrigin: 'anonymous'\n\t\t\t\t\t\t\t\t}, srgb);\n\t\t\t\t\t\t} else if (gltfImage.hasOwnProperty('bufferView') && gltfImage.hasOwnProperty('mimeType')) {\n\t\t\t\t\t\t\t\treturn loadTexture(gltfImage, null, bufferViews[gltfImage.bufferView], gltfImage.mimeType, null, srgb);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn Promise.reject(new Error(`Invalid image found in gltf (neither uri or bufferView found). index=${i}`));\n\t\t\t\t});\n\t\t\t\tif (postprocess) {\n\t\t\t\t\t\tpromise = promise.then((textureAsset)=>{\n\t\t\t\t\t\t\t\tpostprocess(gltfImage, textureAsset);\n\t\t\t\t\t\t\t\treturn textureAsset;\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn promise;\n\t\t});\n};\nconst createTextures = (gltf, images, options)=>{\n\t\tif (!gltf?.images?.length || !gltf?.textures?.length) {\n\t\t\t\treturn [];\n\t\t}\n\t\tconst preprocess = options?.texture?.preprocess;\n\t\tconst processAsync = options?.texture?.processAsync;\n\t\tconst postprocess = options?.texture?.postprocess;\n\t\tconst seenImages = new Set();\n\t\treturn gltf.textures.map((gltfTexture)=>{\n\t\t\t\tif (preprocess) {\n\t\t\t\t\t\tpreprocess(gltfTexture);\n\t\t\t\t}\n\t\t\t\tlet promise;\n\t\t\t\tif (processAsync) {\n\t\t\t\t\t\tpromise = new Promise((resolve, reject)=>{\n\t\t\t\t\t\t\t\tprocessAsync(gltfTexture, gltf.images, (err, gltfImageIndex)=>{\n\t\t\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tresolve(gltfImageIndex);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t\tpromise = new Promise((resolve)=>{\n\t\t\t\t\t\t\t\tresolve(null);\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tpromise = promise.then((gltfImageIndex)=>{\n\t\t\t\t\t\tgltfImageIndex = gltfImageIndex ?? getTextureSource(gltfTexture);\n\t\t\t\t\t\tconst cloneAsset = seenImages.has(gltfImageIndex);\n\t\t\t\t\t\tseenImages.add(gltfImageIndex);\n\t\t\t\t\t\treturn images[gltfImageIndex].then((imageAsset)=>{\n\t\t\t\t\t\t\t\tconst asset = cloneAsset ? cloneTextureAsset(imageAsset) : imageAsset;\n\t\t\t\t\t\t\t\tapplySampler(asset.resource, (gltf.samplers ?? [])[gltfTexture.sampler]);\n\t\t\t\t\t\t\t\treturn asset;\n\t\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tif (postprocess) {\n\t\t\t\t\t\tpromise = promise.then((textureAsset)=>{\n\t\t\t\t\t\t\t\tpostprocess(gltfTexture, textureAsset);\n\t\t\t\t\t\t\t\treturn textureAsset;\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn promise;\n\t\t});\n};\nconst loadBuffers = (gltf, binaryChunk, urlBase, options)=>{\n\t\tif (!gltf.buffers || gltf.buffers.length === 0) {\n\t\t\t\treturn [];\n\t\t}\n\t\tconst preprocess = options?.buffer?.preprocess;\n\t\tconst processAsync = options?.buffer?.processAsync;\n\t\tconst postprocess = options?.buffer?.postprocess;\n\t\treturn gltf.buffers.map((gltfBuffer, i)=>{\n\t\t\t\tif (preprocess) {\n\t\t\t\t\t\tpreprocess(gltfBuffer);\n\t\t\t\t}\n\t\t\t\tlet promise;\n\t\t\t\tif (processAsync) {\n\t\t\t\t\t\tpromise = new Promise((resolve, reject)=>{\n\t\t\t\t\t\t\t\tprocessAsync(gltfBuffer, (err, arrayBuffer)=>{\n\t\t\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tresolve(arrayBuffer);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t\tpromise = new Promise((resolve)=>{\n\t\t\t\t\t\t\t\tresolve(null);\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tpromise = promise.then((arrayBuffer)=>{\n\t\t\t\t\t\tif (arrayBuffer) {\n\t\t\t\t\t\t\t\treturn arrayBuffer;\n\t\t\t\t\t\t} else if (gltfBuffer.hasOwnProperty('uri')) {\n\t\t\t\t\t\t\t\tif (isDataURI(gltfBuffer.uri)) {\n\t\t\t\t\t\t\t\t\t\tconst byteString = atob(gltfBuffer.uri.split(',')[1]);\n\t\t\t\t\t\t\t\t\t\tconst binaryArray = new Uint8Array(byteString.length);\n\t\t\t\t\t\t\t\t\t\tfor(let j = 0; j < byteString.length; j++){\n\t\t\t\t\t\t\t\t\t\t\t\tbinaryArray[j] = byteString.charCodeAt(j);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\treturn binaryArray;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn new Promise((resolve, reject)=>{\n\t\t\t\t\t\t\t\t\t\thttp.get(ABSOLUTE_URL.test(gltfBuffer.uri) ? gltfBuffer.uri : path.join(urlBase, gltfBuffer.uri), {\n\t\t\t\t\t\t\t\t\t\t\t\tcache: true,\n\t\t\t\t\t\t\t\t\t\t\t\tresponseType: 'arraybuffer',\n\t\t\t\t\t\t\t\t\t\t\t\tretry: false\n\t\t\t\t\t\t\t\t\t\t}, (err, result)=>{\n\t\t\t\t\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tresolve(new Uint8Array(result));\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn binaryChunk;\n\t\t\t\t});\n\t\t\t\tif (postprocess) {\n\t\t\t\t\t\tpromise = promise.then((buffer)=>{\n\t\t\t\t\t\t\t\tpostprocess(gltf.buffers[i], buffer);\n\t\t\t\t\t\t\t\treturn buffer;\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn promise;\n\t\t});\n};\nconst parseGltf = (gltfChunk, callback)=>{\n\t\tconst decodeBinaryUtf8 = (array)=>{\n\t\t\t\tif (typeof TextDecoder !== 'undefined') {\n\t\t\t\t\t\treturn new TextDecoder().decode(array);\n\t\t\t\t}\n\t\t\t\tlet str = '';\n\t\t\t\tfor(let i = 0; i < array.length; i++){\n\t\t\t\t\t\tstr += String.fromCharCode(array[i]);\n\t\t\t\t}\n\t\t\t\treturn decodeURIComponent(escape(str));\n\t\t};\n\t\tconst gltf = JSON.parse(decodeBinaryUtf8(gltfChunk));\n\t\tif (gltf.asset && gltf.asset.version && parseFloat(gltf.asset.version) < 2) {\n\t\t\t\tcallback(`Invalid gltf version. Expected version 2.0 or above but found version '${gltf.asset.version}'.`);\n\t\t\t\treturn;\n\t\t}\n\t\tcallback(null, gltf);\n};\nconst parseGlb = (glbData, callback)=>{\n\t\tconst data = glbData instanceof ArrayBuffer ? new DataView(glbData) : new DataView(glbData.buffer, glbData.byteOffset, glbData.byteLength);\n\t\tconst magic = data.getUint32(0, true);\n\t\tconst version = data.getUint32(4, true);\n\t\tconst length = data.getUint32(8, true);\n\t\tif (magic !== 0x46546C67) {\n\t\t\t\tcallback(`Invalid magic number found in glb header. Expected 0x46546C67, found 0x${magic.toString(16)}`);\n\t\t\t\treturn;\n\t\t}\n\t\tif (version !== 2) {\n\t\t\t\tcallback(`Invalid version number found in glb header. Expected 2, found ${version}`);\n\t\t\t\treturn;\n\t\t}\n\t\tif (length <= 0 || length > data.byteLength) {\n\t\t\t\tcallback(`Invalid length found in glb header. Found ${length}`);\n\t\t\t\treturn;\n\t\t}\n\t\tconst chunks = [];\n\t\tlet offset = 12;\n\t\twhile(offset < length){\n\t\t\t\tconst chunkLength = data.getUint32(offset, true);\n\t\t\t\tif (offset + chunkLength + 8 > data.byteLength) {\n\t\t\t\t\t\tcallback(`Invalid chunk length found in glb. Found ${chunkLength}`);\n\t\t\t\t}\n\t\t\t\tconst chunkType = data.getUint32(offset + 4, true);\n\t\t\t\tconst chunkData = new Uint8Array(data.buffer, data.byteOffset + offset + 8, chunkLength);\n\t\t\t\tchunks.push({\n\t\t\t\t\t\tlength: chunkLength,\n\t\t\t\t\t\ttype: chunkType,\n\t\t\t\t\t\tdata: chunkData\n\t\t\t\t});\n\t\t\t\toffset += chunkLength + 8;\n\t\t}\n\t\tif (chunks.length !== 1 && chunks.length !== 2) {\n\t\t\t\tcallback('Invalid number of chunks found in glb file.');\n\t\t\t\treturn;\n\t\t}\n\t\tif (chunks[0].type !== 0x4E4F534A) {\n\t\t\t\tcallback(`Invalid chunk type found in glb file. Expected 0x4E4F534A, found 0x${chunks[0].type.toString(16)}`);\n\t\t\t\treturn;\n\t\t}\n\t\tif (chunks.length > 1 && chunks[1].type !== 0x004E4942) {\n\t\t\t\tcallback(`Invalid chunk type found in glb file. Expected 0x004E4942, found 0x${chunks[1].type.toString(16)}`);\n\t\t\t\treturn;\n\t\t}\n\t\tcallback(null, {\n\t\t\t\tgltfChunk: chunks[0].data,\n\t\t\t\tbinaryChunk: chunks.length === 2 ? chunks[1].data : null\n\t\t});\n};\nconst parseChunk = (filename, data, callback)=>{\n\t\tconst hasGlbHeader = ()=>{\n\t\t\t\tconst u8 = new Uint8Array(data);\n\t\t\t\treturn u8[0] === 103 && u8[1] === 108 && u8[2] === 84 && u8[3] === 70;\n\t\t};\n\t\tif (filename && filename.toLowerCase().endsWith('.glb') || hasGlbHeader()) {\n\t\t\t\tparseGlb(data, callback);\n\t\t} else {\n\t\t\t\tcallback(null, {\n\t\t\t\t\t\tgltfChunk: data,\n\t\t\t\t\t\tbinaryChunk: null\n\t\t\t\t});\n\t\t}\n};\nconst createBufferViews = (gltf, buffers, options)=>{\n\t\tconst result = [];\n\t\tconst preprocess = options?.bufferView?.preprocess;\n\t\tconst processAsync = options?.bufferView?.processAsync;\n\t\tconst postprocess = options?.bufferView?.postprocess;\n\t\tif (!gltf.bufferViews?.length) {\n\t\t\t\treturn result;\n\t\t}\n\t\tfor(let i = 0; i < gltf.bufferViews.length; ++i){\n\t\t\t\tconst gltfBufferView = gltf.bufferViews[i];\n\t\t\t\tif (preprocess) {\n\t\t\t\t\t\tpreprocess(gltfBufferView);\n\t\t\t\t}\n\t\t\t\tlet promise;\n\t\t\t\tif (processAsync) {\n\t\t\t\t\t\tpromise = new Promise((resolve, reject)=>{\n\t\t\t\t\t\t\t\tprocessAsync(gltfBufferView, buffers, (err, result)=>{\n\t\t\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tresolve(result);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t\tpromise = new Promise((resolve)=>{\n\t\t\t\t\t\t\t\tresolve(null);\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tpromise = promise.then((buffer)=>{\n\t\t\t\t\t\tif (buffer) {\n\t\t\t\t\t\t\t\treturn buffer;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn buffers[gltfBufferView.buffer].then((buffer)=>{\n\t\t\t\t\t\t\t\treturn new Uint8Array(buffer.buffer, buffer.byteOffset + (gltfBufferView.byteOffset || 0), gltfBufferView.byteLength);\n\t\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tif (gltfBufferView.hasOwnProperty('byteStride')) {\n\t\t\t\t\t\tpromise = promise.then((typedArray)=>{\n\t\t\t\t\t\t\t\ttypedArray.byteStride = gltfBufferView.byteStride;\n\t\t\t\t\t\t\t\treturn typedArray;\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif (postprocess) {\n\t\t\t\t\t\tpromise = promise.then((typedArray)=>{\n\t\t\t\t\t\t\t\tpostprocess(gltfBufferView, typedArray);\n\t\t\t\t\t\t\t\treturn typedArray;\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tresult.push(promise);\n\t\t}\n\t\treturn result;\n};\nclass GlbParser {\n\t\tstatic parse(filename, urlBase, data, device, registry, options, callback) {\n\t\t\t\tparseChunk(filename, data, (err, chunks)=>{\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\tcallback(err);\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tparseGltf(chunks.gltfChunk, (err, gltf)=>{\n\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\t\tcallback(err);\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst buffers = loadBuffers(gltf, chunks.binaryChunk, urlBase, options);\n\t\t\t\t\t\t\t\tconst bufferViews = createBufferViews(gltf, buffers, options);\n\t\t\t\t\t\t\t\tconst images = createImages(gltf, bufferViews, urlBase, registry, options);\n\t\t\t\t\t\t\t\tconst textures = createTextures(gltf, images, options);\n\t\t\t\t\t\t\t\tcreateResources(device, gltf, bufferViews, textures, options).then((result)=>callback(null, result)).catch((err)=>callback(err));\n\t\t\t\t\t\t});\n\t\t\t\t});\n\t\t}\n\t\tstatic createDefaultMaterial() {\n\t\t\t\treturn createMaterial({\n\t\t\t\t\t\tname: 'defaultGlbMaterial'\n\t\t\t\t}, []);\n\t\t}\n}\n\nclass AnimationHandler extends ResourceHandler {\n\t\tconstructor(app){\n\t\t\t\tsuper(app, 'animation');\n\t\t\t\tthis.device = app.graphicsDevice;\n\t\t\t\tthis.assets = app.assets;\n\t\t}\n\t\tload(url, callback, asset) {\n\t\t\t\tif (typeof url === 'string') {\n\t\t\t\t\t\turl = {\n\t\t\t\t\t\t\t\tload: url,\n\t\t\t\t\t\t\t\toriginal: url\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst options = {\n\t\t\t\t\t\tretry: this.maxRetries > 0,\n\t\t\t\t\t\tmaxRetries: this.maxRetries\n\t\t\t\t};\n\t\t\t\tif (url.load.startsWith('blob:') || url.load.startsWith('data:')) {\n\t\t\t\t\t\tif (path.getExtension(url.original).toLowerCase() === '.glb') {\n\t\t\t\t\t\t\t\toptions.responseType = Http.ResponseType.ARRAY_BUFFER;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\toptions.responseType = Http.ResponseType.JSON;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\thttp.get(url.load, options, (err, response)=>{\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\tcallback(`Error loading animation resource: ${url.original} [${err}]`);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (path.getExtension(url.original).toLowerCase() === '.glb') {\n\t\t\t\t\t\t\t\t\t\tGlbParser.parse('filename.glb', '', response, this.device, this.assets, asset?.options ?? {}, (err, parseResult)=>{\n\t\t\t\t\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcallback(err);\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst animations = parseResult.animations;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (asset?.data?.events) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor(let i = 0; i < animations.length; i++){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tanimations[i].events = new AnimEvents(Object.values(asset.data.events));\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tparseResult.destroy();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcallback(null, animations);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tcallback(null, this[`_parseAnimationV${response.animation.version}`](response));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\topen(url, data, asset) {\n\t\t\t\treturn data;\n\t\t}\n\t\t_parseAnimationV3(data) {\n\t\t\t\tconst animData = data.animation;\n\t\t\t\tconst anim = new Animation();\n\t\t\t\tanim.name = animData.name;\n\t\t\t\tanim.duration = animData.duration;\n\t\t\t\tfor(let i = 0; i < animData.nodes.length; i++){\n\t\t\t\t\t\tconst node = new AnimationNode();\n\t\t\t\t\t\tconst n = animData.nodes[i];\n\t\t\t\t\t\tnode._name = n.name;\n\t\t\t\t\t\tfor(let j = 0; j < n.keys.length; j++){\n\t\t\t\t\t\t\t\tconst k = n.keys[j];\n\t\t\t\t\t\t\t\tconst t = k.time;\n\t\t\t\t\t\t\t\tconst p = k.pos;\n\t\t\t\t\t\t\t\tconst r = k.rot;\n\t\t\t\t\t\t\t\tconst s = k.scale;\n\t\t\t\t\t\t\t\tconst pos = new Vec3(p[0], p[1], p[2]);\n\t\t\t\t\t\t\t\tconst rot = new Quat().setFromEulerAngles(r[0], r[1], r[2]);\n\t\t\t\t\t\t\t\tconst scl = new Vec3(s[0], s[1], s[2]);\n\t\t\t\t\t\t\t\tconst key = new AnimationKey(t, pos, rot, scl);\n\t\t\t\t\t\t\t\tnode._keys.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tanim.addNode(node);\n\t\t\t\t}\n\t\t\t\treturn anim;\n\t\t}\n\t\t_parseAnimationV4(data) {\n\t\t\t\tconst animData = data.animation;\n\t\t\t\tconst anim = new Animation();\n\t\t\t\tanim.name = animData.name;\n\t\t\t\tanim.duration = animData.duration;\n\t\t\t\tfor(let i = 0; i < animData.nodes.length; i++){\n\t\t\t\t\t\tconst node = new AnimationNode();\n\t\t\t\t\t\tconst n = animData.nodes[i];\n\t\t\t\t\t\tnode._name = n.name;\n\t\t\t\t\t\tconst defPos = n.defaults.p;\n\t\t\t\t\t\tconst defRot = n.defaults.r;\n\t\t\t\t\t\tconst defScl = n.defaults.s;\n\t\t\t\t\t\tfor(let j = 0; j < n.keys.length; j++){\n\t\t\t\t\t\t\t\tconst k = n.keys[j];\n\t\t\t\t\t\t\t\tconst t = k.t;\n\t\t\t\t\t\t\t\tconst p = defPos ? defPos : k.p;\n\t\t\t\t\t\t\t\tconst r = defRot ? defRot : k.r;\n\t\t\t\t\t\t\t\tconst s = defScl ? defScl : k.s;\n\t\t\t\t\t\t\t\tconst pos = new Vec3(p[0], p[1], p[2]);\n\t\t\t\t\t\t\t\tconst rot = new Quat().setFromEulerAngles(r[0], r[1], r[2]);\n\t\t\t\t\t\t\t\tconst scl = new Vec3(s[0], s[1], s[2]);\n\t\t\t\t\t\t\t\tconst key = new AnimationKey(t, pos, rot, scl);\n\t\t\t\t\t\t\t\tnode._keys.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tanim.addNode(node);\n\t\t\t\t}\n\t\t\t\treturn anim;\n\t\t}\n}\n\nclass AnimClipHandler extends ResourceHandler {\n\t\tconstructor(app){\n\t\t\t\tsuper(app, 'animclip');\n\t\t}\n\t\tload(url, callback) {\n\t\t\t\tif (typeof url === 'string') {\n\t\t\t\t\t\turl = {\n\t\t\t\t\t\t\t\tload: url,\n\t\t\t\t\t\t\t\toriginal: url\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst options = {\n\t\t\t\t\t\tretry: this.maxRetries > 0,\n\t\t\t\t\t\tmaxRetries: this.maxRetries\n\t\t\t\t};\n\t\t\t\tif (url.load.startsWith('blob:')) {\n\t\t\t\t\t\toptions.responseType = Http.ResponseType.JSON;\n\t\t\t\t}\n\t\t\t\thttp.get(url.load, options, (err, response)=>{\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\tcallback(`Error loading animation clip resource: ${url.original} [${err}]`);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcallback(null, response);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\topen(url, data) {\n\t\t\t\tconst name = data.name;\n\t\t\t\tconst duration = data.duration;\n\t\t\t\tconst inputs = data.inputs.map((input)=>{\n\t\t\t\t\t\treturn new AnimData(1, input);\n\t\t\t\t});\n\t\t\t\tconst outputs = data.outputs.map((output)=>{\n\t\t\t\t\t\treturn new AnimData(output.components, output.data);\n\t\t\t\t});\n\t\t\t\tconst curves = data.curves.map((curve)=>{\n\t\t\t\t\t\treturn new AnimCurve([\n\t\t\t\t\t\t\t\tcurve.path\n\t\t\t\t\t\t], curve.inputIndex, curve.outputIndex, curve.interpolation);\n\t\t\t\t});\n\t\t\t\treturn new AnimTrack(name, duration, inputs, outputs, curves);\n\t\t}\n}\n\nclass AnimStateGraphHandler extends ResourceHandler {\n\t\tconstructor(app){\n\t\t\t\tsuper(app, 'animstategraph');\n\t\t}\n\t\tload(url, callback) {\n\t\t\t\tif (typeof url === 'string') {\n\t\t\t\t\t\turl = {\n\t\t\t\t\t\t\t\tload: url,\n\t\t\t\t\t\t\t\toriginal: url\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst options = {\n\t\t\t\t\t\tretry: this.maxRetries > 0,\n\t\t\t\t\t\tmaxRetries: this.maxRetries\n\t\t\t\t};\n\t\t\t\tif (url.load.startsWith('blob:')) {\n\t\t\t\t\t\toptions.responseType = Http.ResponseType.JSON;\n\t\t\t\t}\n\t\t\t\thttp.get(url.load, options, (err, response)=>{\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\tcallback(`Error loading animation state graph resource: ${url.original} [${err}]`);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcallback(null, response);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\topen(url, data) {\n\t\t\t\treturn new AnimStateGraph(data);\n\t\t}\n}\n\nconst ie = function() {\n\t\tif (typeof window === 'undefined') {\n\t\t\t\treturn false;\n\t\t}\n\t\tconst ua = window.navigator.userAgent;\n\t\tconst msie = ua.indexOf('MSIE ');\n\t\tif (msie > 0) {\n\t\t\t\treturn parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);\n\t\t}\n\t\tconst trident = ua.indexOf('Trident/');\n\t\tif (trident > 0) {\n\t\t\t\tconst rv = ua.indexOf('rv:');\n\t\t\t\treturn parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);\n\t\t}\n\t\treturn false;\n}();\nconst supportedExtensions = [\n\t\t'.ogg',\n\t\t'.mp3',\n\t\t'.wav',\n\t\t'.mp4a',\n\t\t'.m4a',\n\t\t'.mp4',\n\t\t'.aac',\n\t\t'.opus'\n];\nclass AudioHandler extends ResourceHandler {\n\t\tconstructor(app){\n\t\t\t\tsuper(app, 'audio');\n\t\t\t\tthis.manager = app.soundManager;\n\t\t}\n\t\t_isSupported(url) {\n\t\t\t\tconst ext = path.getExtension(url);\n\t\t\t\treturn supportedExtensions.indexOf(ext) > -1;\n\t\t}\n\t\tload(url, callback) {\n\t\t\t\tif (typeof url === 'string') {\n\t\t\t\t\t\turl = {\n\t\t\t\t\t\t\t\tload: url,\n\t\t\t\t\t\t\t\toriginal: url\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst success = function(resource) {\n\t\t\t\t\t\tcallback(null, new Sound(resource));\n\t\t\t\t};\n\t\t\t\tconst error = function(err) {\n\t\t\t\t\t\tlet msg = `Error loading audio url: ${url.original}`;\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\tmsg += `: ${err.message || err}`;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconsole.warn(msg);\n\t\t\t\t\t\tcallback(msg);\n\t\t\t\t};\n\t\t\t\tif (this._createSound) {\n\t\t\t\t\t\tif (!this._isSupported(url.original)) {\n\t\t\t\t\t\t\t\terror(`Audio format for ${url.original} not supported`);\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._createSound(url.load, success, error);\n\t\t\t\t} else {\n\t\t\t\t\t\terror(null);\n\t\t\t\t}\n\t\t}\n\t\t_createSound(url, success, error) {\n\t\t\t\tif (hasAudioContext()) {\n\t\t\t\t\t\tconst manager = this.manager;\n\t\t\t\t\t\tif (!manager.context) {\n\t\t\t\t\t\t\t\terror('Audio manager has no audio context');\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst options = {\n\t\t\t\t\t\t\t\tretry: this.maxRetries > 0,\n\t\t\t\t\t\t\t\tmaxRetries: this.maxRetries\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (url.startsWith('blob:') || url.startsWith('data:')) {\n\t\t\t\t\t\t\t\toptions.responseType = Http.ResponseType.ARRAY_BUFFER;\n\t\t\t\t\t\t}\n\t\t\t\t\t\thttp.get(url, options, (err, response)=>{\n\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\t\terror(err);\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tmanager.context.decodeAudioData(response, success, error);\n\t\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t\tlet audio = null;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\taudio = new Audio();\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\terror('No support for Audio element');\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (ie) {\n\t\t\t\t\t\t\t\tdocument.body.appendChild(audio);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst onReady = function() {\n\t\t\t\t\t\t\t\taudio.removeEventListener('canplaythrough', onReady);\n\t\t\t\t\t\t\t\tif (ie) {\n\t\t\t\t\t\t\t\t\t\tdocument.body.removeChild(audio);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tsuccess(audio);\n\t\t\t\t\t\t};\n\t\t\t\t\t\taudio.onerror = function() {\n\t\t\t\t\t\t\t\taudio.onerror = null;\n\t\t\t\t\t\t\t\tif (ie) {\n\t\t\t\t\t\t\t\t\t\tdocument.body.removeChild(audio);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\terror();\n\t\t\t\t\t\t};\n\t\t\t\t\t\taudio.addEventListener('canplaythrough', onReady);\n\t\t\t\t\t\taudio.src = url;\n\t\t\t\t}\n\t\t}\n}\n\nclass BinaryHandler extends ResourceHandler {\n\t\tconstructor(app){\n\t\t\t\tsuper(app, 'binary');\n\t\t}\n\t\tload(url, callback) {\n\t\t\t\tif (typeof url === 'string') {\n\t\t\t\t\t\turl = {\n\t\t\t\t\t\t\t\tload: url,\n\t\t\t\t\t\t\t\toriginal: url\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\thttp.get(url.load, {\n\t\t\t\t\t\tresponseType: Http.ResponseType.ARRAY_BUFFER,\n\t\t\t\t\t\tretry: this.maxRetries > 0,\n\t\t\t\t\t\tmaxRetries: this.maxRetries\n\t\t\t\t}, (err, response)=>{\n\t\t\t\t\t\tif (!err) {\n\t\t\t\t\t\t\t\tcallback(null, response);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcallback(`Error loading binary resource: ${url.original} [${err}]`);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\topenBinary(data) {\n\t\t\t\treturn data.buffer;\n\t\t}\n}\n\nclass GlbContainerResource {\n\t\tconstructor(data, asset, assets, defaultMaterial){\n\t\t\t\tconst createAsset = function(type, resource, index) {\n\t\t\t\t\t\tconst subAsset = GlbContainerResource.createAsset(asset.name, type, resource, index);\n\t\t\t\t\t\tassets.add(subAsset);\n\t\t\t\t\t\treturn subAsset;\n\t\t\t\t};\n\t\t\t\tconst renders = [];\n\t\t\t\tfor(let i = 0; i < data.renders.length; ++i){\n\t\t\t\t\t\trenders.push(createAsset('render', data.renders[i], i));\n\t\t\t\t}\n\t\t\t\tconst materials = [];\n\t\t\t\tfor(let i = 0; i < data.materials.length; ++i){\n\t\t\t\t\t\tmaterials.push(createAsset('material', data.materials[i], i));\n\t\t\t\t}\n\t\t\t\tconst animations = [];\n\t\t\t\tfor(let i = 0; i < data.animations.length; ++i){\n\t\t\t\t\t\tanimations.push(createAsset('animation', data.animations[i], i));\n\t\t\t\t}\n\t\t\t\tthis.data = data;\n\t\t\t\tthis._model = null;\n\t\t\t\tthis._assetName = asset.name;\n\t\t\t\tthis._assets = assets;\n\t\t\t\tthis._defaultMaterial = defaultMaterial;\n\t\t\t\tthis.renders = renders;\n\t\t\t\tthis.materials = materials;\n\t\t\t\tthis.textures = data.textures;\n\t\t\t\tthis.animations = animations;\n\t\t}\n\t\tget model() {\n\t\t\t\tif (!this._model) {\n\t\t\t\t\t\tconst model = GlbContainerResource.createModel(this.data, this._defaultMaterial);\n\t\t\t\t\t\tconst modelAsset = GlbContainerResource.createAsset(this._assetName, 'model', model, 0);\n\t\t\t\t\t\tthis._assets.add(modelAsset);\n\t\t\t\t\t\tthis._model = modelAsset;\n\t\t\t\t}\n\t\t\t\treturn this._model;\n\t\t}\n\t\tstatic createAsset(assetName, type, resource, index) {\n\t\t\t\tconst subAsset = new Asset(`${assetName}/${type}/${index}`, type, {\n\t\t\t\t\t\turl: ''\n\t\t\t\t});\n\t\t\t\tsubAsset.resource = resource;\n\t\t\t\tsubAsset.loaded = true;\n\t\t\t\treturn subAsset;\n\t\t}\n\t\tinstantiateModelEntity(options) {\n\t\t\t\tconst entity = new Entity(undefined, this._assets._loader._app);\n\t\t\t\tentity.addComponent('model', Object.assign({\n\t\t\t\t\t\ttype: 'asset',\n\t\t\t\t\t\tasset: this.model\n\t\t\t\t}, options));\n\t\t\t\treturn entity;\n\t\t}\n\t\tinstantiateRenderEntity(options) {\n\t\t\t\tconst defaultMaterial = this._defaultMaterial;\n\t\t\t\tconst skinnedMeshInstances = [];\n\t\t\t\tconst createMeshInstance = function(root, entity, mesh, materials, meshDefaultMaterials, skins, gltfNode, nodeInstancingMap) {\n\t\t\t\t\t\tconst materialIndex = meshDefaultMaterials[mesh.id];\n\t\t\t\t\t\tconst material = materialIndex === undefined ? defaultMaterial : materials[materialIndex];\n\t\t\t\t\t\tconst meshInstance = new MeshInstance(mesh, material);\n\t\t\t\t\t\tif (mesh.morph) {\n\t\t\t\t\t\t\t\tmeshInstance.morphInstance = new MorphInstance(mesh.morph);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (gltfNode.hasOwnProperty('skin')) {\n\t\t\t\t\t\t\t\tskinnedMeshInstances.push({\n\t\t\t\t\t\t\t\t\t\tmeshInstance: meshInstance,\n\t\t\t\t\t\t\t\t\t\trootBone: root,\n\t\t\t\t\t\t\t\t\t\tentity: entity\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst instData = nodeInstancingMap.get(gltfNode);\n\t\t\t\t\t\tif (instData) {\n\t\t\t\t\t\t\t\tconst matrices = instData.matrices;\n\t\t\t\t\t\t\t\tconst vbFormat = VertexFormat.getDefaultInstancingFormat(mesh.device);\n\t\t\t\t\t\t\t\tconst vb = new VertexBuffer(mesh.device, vbFormat, matrices.length / 16, {\n\t\t\t\t\t\t\t\t\t\tdata: matrices\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tmeshInstance.setInstancing(vb);\n\t\t\t\t\t\t\t\tmeshInstance.instancingData._destroyVertexBuffer = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn meshInstance;\n\t\t\t\t};\n\t\t\t\tconst cloneHierarchy = (root, node, glb)=>{\n\t\t\t\t\t\tconst entity = new Entity(undefined, this._assets._loader._app);\n\t\t\t\t\t\tnode._cloneInternal(entity);\n\t\t\t\t\t\tif (!root) root = entity;\n\t\t\t\t\t\tlet attachedMi = null;\n\t\t\t\t\t\tlet renderAsset = null;\n\t\t\t\t\t\tfor(let i = 0; i < glb.nodes.length; i++){\n\t\t\t\t\t\t\t\tconst glbNode = glb.nodes[i];\n\t\t\t\t\t\t\t\tif (glbNode === node) {\n\t\t\t\t\t\t\t\t\t\tconst gltfNode = glb.gltf.nodes[i];\n\t\t\t\t\t\t\t\t\t\tif (gltfNode.hasOwnProperty('mesh')) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst meshGroup = glb.renders[gltfNode.mesh].meshes;\n\t\t\t\t\t\t\t\t\t\t\t\trenderAsset = this.renders[gltfNode.mesh];\n\t\t\t\t\t\t\t\t\t\t\t\tfor(let mi = 0; mi < meshGroup.length; mi++){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst mesh = meshGroup[mi];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (mesh) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst cloneMi = createMeshInstance(root, entity, mesh, glb.materials, glb.meshDefaultMaterials, glb.skins, gltfNode, glb.nodeInstancingMap);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (!attachedMi) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tattachedMi = [];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tattachedMi.push(cloneMi);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (glb.lights) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst lightEntity = glb.lights.get(gltfNode);\n\t\t\t\t\t\t\t\t\t\t\t\tif (lightEntity) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tentity.addChild(lightEntity.clone());\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (glb.cameras) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst cameraEntity = glb.cameras.get(gltfNode);\n\t\t\t\t\t\t\t\t\t\t\t\tif (cameraEntity) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcameraEntity.camera.system.cloneComponent(cameraEntity, entity);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (attachedMi) {\n\t\t\t\t\t\t\t\tentity.addComponent('render', Object.assign({\n\t\t\t\t\t\t\t\t\t\ttype: 'asset',\n\t\t\t\t\t\t\t\t\t\tmeshInstances: attachedMi\n\t\t\t\t\t\t\t\t}, options));\n\t\t\t\t\t\t\t\tentity.render.assignAsset(renderAsset);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst children = node.children;\n\t\t\t\t\t\tfor(let i = 0; i < children.length; i++){\n\t\t\t\t\t\t\t\tconst childClone = cloneHierarchy(root, children[i], glb);\n\t\t\t\t\t\t\t\tentity.addChild(childClone);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn entity;\n\t\t\t\t};\n\t\t\t\tconst sceneClones = [];\n\t\t\t\tfor (const scene of this.data.scenes){\n\t\t\t\t\t\tsceneClones.push(cloneHierarchy(null, scene, this.data));\n\t\t\t\t}\n\t\t\t\tskinnedMeshInstances.forEach((data)=>{\n\t\t\t\t\t\tdata.meshInstance.skinInstance = SkinInstanceCache.createCachedSkinInstance(data.meshInstance.mesh.skin, data.rootBone, data.entity);\n\t\t\t\t\t\tdata.meshInstance.node.render.rootBone = data.rootBone;\n\t\t\t\t});\n\t\t\t\treturn GlbContainerResource.createSceneHierarchy(sceneClones, Entity);\n\t\t}\n\t\tgetMaterialVariants() {\n\t\t\t\treturn this.data.variants ? Object.keys(this.data.variants) : [];\n\t\t}\n\t\tapplyMaterialVariant(entity, name) {\n\t\t\t\tconst variant = name ? this.data.variants[name] : null;\n\t\t\t\tif (variant === undefined) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst renders = entity.findComponents('render');\n\t\t\t\tfor(let i = 0; i < renders.length; i++){\n\t\t\t\t\t\tconst renderComponent = renders[i];\n\t\t\t\t\t\tthis._applyMaterialVariant(variant, renderComponent.meshInstances);\n\t\t\t\t}\n\t\t}\n\t\tapplyMaterialVariantInstances(instances, name) {\n\t\t\t\tconst variant = name ? this.data.variants[name] : null;\n\t\t\t\tif (variant === undefined) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._applyMaterialVariant(variant, instances);\n\t\t}\n\t\t_applyMaterialVariant(variant, instances) {\n\t\t\t\tinstances.forEach((instance)=>{\n\t\t\t\t\t\tif (variant === null) {\n\t\t\t\t\t\t\t\tinstance.material = this._defaultMaterial;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst meshVariants = this.data.meshVariants[instance.mesh.id];\n\t\t\t\t\t\t\t\tif (meshVariants) {\n\t\t\t\t\t\t\t\t\t\tinstance.material = this.data.materials[meshVariants[variant]];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\tstatic createSceneHierarchy(sceneNodes, nodeType) {\n\t\t\t\tlet root = null;\n\t\t\t\tif (sceneNodes.length === 1) {\n\t\t\t\t\t\troot = sceneNodes[0];\n\t\t\t\t} else {\n\t\t\t\t\t\troot = new nodeType('SceneGroup');\n\t\t\t\t\t\tfor (const scene of sceneNodes){\n\t\t\t\t\t\t\t\troot.addChild(scene);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn root;\n\t\t}\n\t\tstatic createModel(glb, defaultMaterial) {\n\t\t\t\tconst createMeshInstance = function(model, mesh, skins, skinInstances, materials, node, gltfNode) {\n\t\t\t\t\t\tconst materialIndex = glb.meshDefaultMaterials[mesh.id];\n\t\t\t\t\t\tconst material = materialIndex === undefined ? defaultMaterial : materials[materialIndex];\n\t\t\t\t\t\tconst meshInstance = new MeshInstance(mesh, material, node);\n\t\t\t\t\t\tif (mesh.morph) {\n\t\t\t\t\t\t\t\tconst morphInstance = new MorphInstance(mesh.morph);\n\t\t\t\t\t\t\t\tmeshInstance.morphInstance = morphInstance;\n\t\t\t\t\t\t\t\tmodel.morphInstances.push(morphInstance);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (gltfNode.hasOwnProperty('skin')) {\n\t\t\t\t\t\t\t\tconst skinIndex = gltfNode.skin;\n\t\t\t\t\t\t\t\tconst skin = skins[skinIndex];\n\t\t\t\t\t\t\t\tmesh.skin = skin;\n\t\t\t\t\t\t\t\tconst skinInstance = skinInstances[skinIndex];\n\t\t\t\t\t\t\t\tmeshInstance.skinInstance = skinInstance;\n\t\t\t\t\t\t\t\tmodel.skinInstances.push(skinInstance);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmodel.meshInstances.push(meshInstance);\n\t\t\t\t};\n\t\t\t\tconst model = new Model();\n\t\t\t\tconst skinInstances = [];\n\t\t\t\tfor (const skin of glb.skins){\n\t\t\t\t\t\tconst skinInstance = new SkinInstance(skin);\n\t\t\t\t\t\tskinInstance.bones = skin.bones;\n\t\t\t\t\t\tskinInstances.push(skinInstance);\n\t\t\t\t}\n\t\t\t\tmodel.graph = GlbContainerResource.createSceneHierarchy(glb.scenes, GraphNode);\n\t\t\t\tfor(let i = 0; i < glb.nodes.length; i++){\n\t\t\t\t\t\tconst node = glb.nodes[i];\n\t\t\t\t\t\tif (node.root === model.graph) {\n\t\t\t\t\t\t\t\tconst gltfNode = glb.gltf.nodes[i];\n\t\t\t\t\t\t\t\tif (gltfNode.hasOwnProperty('mesh')) {\n\t\t\t\t\t\t\t\t\t\tconst meshGroup = glb.renders[gltfNode.mesh].meshes;\n\t\t\t\t\t\t\t\t\t\tfor(let mi = 0; mi < meshGroup.length; mi++){\n\t\t\t\t\t\t\t\t\t\t\t\tconst mesh = meshGroup[mi];\n\t\t\t\t\t\t\t\t\t\t\t\tif (mesh) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcreateMeshInstance(model, mesh, glb.skins, skinInstances, glb.materials, node, gltfNode);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn model;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tconst registry = this._assets;\n\t\t\t\tconst destroyAsset = function(asset) {\n\t\t\t\t\t\tregistry.remove(asset);\n\t\t\t\t\t\tasset.unload();\n\t\t\t\t};\n\t\t\t\tconst destroyAssets = function(assets) {\n\t\t\t\t\t\tassets.forEach((asset)=>{\n\t\t\t\t\t\t\t\tdestroyAsset(asset);\n\t\t\t\t\t\t});\n\t\t\t\t};\n\t\t\t\tif (this.animations) {\n\t\t\t\t\t\tdestroyAssets(this.animations);\n\t\t\t\t\t\tthis.animations = null;\n\t\t\t\t}\n\t\t\t\tif (this.textures) {\n\t\t\t\t\t\tdestroyAssets(this.textures);\n\t\t\t\t\t\tthis.textures = null;\n\t\t\t\t}\n\t\t\t\tif (this.materials) {\n\t\t\t\t\t\tdestroyAssets(this.materials);\n\t\t\t\t\t\tthis.materials = null;\n\t\t\t\t}\n\t\t\t\tif (this.renders) {\n\t\t\t\t\t\tdestroyAssets(this.renders);\n\t\t\t\t\t\tthis.renders = null;\n\t\t\t\t}\n\t\t\t\tif (this._model) {\n\t\t\t\t\t\tdestroyAsset(this._model);\n\t\t\t\t\t\tthis._model = null;\n\t\t\t\t}\n\t\t\t\tthis.data = null;\n\t\t\t\tthis.assets = null;\n\t\t}\n}\n\nclass GlbContainerParser {\n\t\tconstructor(device, assets, maxRetries){\n\t\t\t\tthis._device = device;\n\t\t\t\tthis._assets = assets;\n\t\t\t\tthis._defaultMaterial = GlbParser.createDefaultMaterial();\n\t\t\t\tthis.maxRetries = maxRetries;\n\t\t}\n\t\t_getUrlWithoutParams(url) {\n\t\t\t\treturn url.indexOf('?') >= 0 ? url.split('?')[0] : url;\n\t\t}\n\t\tload(url, callback, asset) {\n\t\t\t\tAsset.fetchArrayBuffer(url.load, (err, result)=>{\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\tcallback(err);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tGlbParser.parse(this._getUrlWithoutParams(url.original), path.extractPath(url.load), result, this._device, asset.registry, asset.options, (err, result)=>{\n\t\t\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\t\t\t\tcallback(err);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tcallback(null, new GlbContainerResource(result, asset, this._assets, this._defaultMaterial));\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t}, asset, this.maxRetries);\n\t\t}\n\t\topen(url, data, asset) {\n\t\t\t\treturn data;\n\t\t}\n\t\tpatch(asset, assets) {}\n}\n\nclass ContainerResource {\n\t\tinstantiateModelEntity(options) {\n\t\t\t\treturn null;\n\t\t}\n\t\tinstantiateRenderEntity(options) {\n\t\t\t\treturn null;\n\t\t}\n\t\tgetMaterialVariants() {\n\t\t\t\treturn null;\n\t\t}\n\t\tapplyMaterialVariant(entity, name) {}\n\t\tapplyMaterialVariantInstances(instances, name) {}\n}\nclass ContainerHandler extends ResourceHandler {\n\t\tconstructor(app){\n\t\t\t\tsuper(app, 'container');\n\t\t\t\tthis.glbContainerParser = new GlbContainerParser(app.graphicsDevice, app.assets, 0);\n\t\t\t\tthis.parsers = {};\n\t\t}\n\t\tset maxRetries(value) {\n\t\t\t\tthis.glbContainerParser.maxRetries = value;\n\t\t\t\tfor(const parser in this.parsers){\n\t\t\t\t\t\tif (this.parsers.hasOwnProperty(parser)) {\n\t\t\t\t\t\t\t\tthis.parsers[parser].maxRetries = value;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget maxRetries() {\n\t\t\t\treturn this.glbContainerParser.maxRetries;\n\t\t}\n\t\t_getUrlWithoutParams(url) {\n\t\t\t\treturn url.indexOf('?') >= 0 ? url.split('?')[0] : url;\n\t\t}\n\t\t_getParser(url) {\n\t\t\t\tconst ext = url ? path.getExtension(this._getUrlWithoutParams(url)).toLowerCase().replace('.', '') : null;\n\t\t\t\treturn this.parsers[ext] || this.glbContainerParser;\n\t\t}\n\t\tload(url, callback, asset) {\n\t\t\t\tif (typeof url === 'string') {\n\t\t\t\t\t\turl = {\n\t\t\t\t\t\t\t\tload: url,\n\t\t\t\t\t\t\t\toriginal: url\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tthis._getParser(url.original).load(url, callback, asset);\n\t\t}\n\t\topen(url, data, asset) {\n\t\t\t\treturn this._getParser(url).open(url, data, asset);\n\t\t}\n}\n\nclass CssHandler extends ResourceHandler {\n\t\tconstructor(app){\n\t\t\t\tsuper(app, 'css'), this.decoder = null;\n\t\t}\n\t\tload(url, callback) {\n\t\t\t\tif (typeof url === 'string') {\n\t\t\t\t\t\turl = {\n\t\t\t\t\t\t\t\tload: url,\n\t\t\t\t\t\t\t\toriginal: url\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\thttp.get(url.load, {\n\t\t\t\t\t\tretry: this.maxRetries > 0,\n\t\t\t\t\t\tmaxRetries: this.maxRetries\n\t\t\t\t}, (err, response)=>{\n\t\t\t\t\t\tif (!err) {\n\t\t\t\t\t\t\t\tcallback(null, response);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcallback(`Error loading css resource: ${url.original} [${err}]`);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\topenBinary(data) {\n\t\t\t\tthis.decoder ??= new TextDecoder('utf-8');\n\t\t\t\treturn this.decoder.decode(data);\n\t\t}\n}\n\nclass CubemapHandler extends ResourceHandler {\n\t\tconstructor(app){\n\t\t\t\tsuper(app, 'cubemap');\n\t\t\t\tthis._device = app.graphicsDevice;\n\t\t\t\tthis._registry = app.assets;\n\t\t\t\tthis._loader = app.loader;\n\t\t}\n\t\tload(url, callback, asset) {\n\t\t\t\tthis.loadAssets(asset, callback);\n\t\t}\n\t\topen(url, data, asset) {\n\t\t\t\treturn asset ? asset.resource : null;\n\t\t}\n\t\tpatch(asset, registry) {\n\t\t\t\tthis.loadAssets(asset, (err, result)=>{\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\tregistry.fire('error', asset);\n\t\t\t\t\t\t\t\tregistry.fire(`error:${asset.id}`, err, asset);\n\t\t\t\t\t\t\t\tasset.fire('error', asset);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\tgetAssetIds(cubemapAsset) {\n\t\t\t\tconst result = [];\n\t\t\t\tresult[0] = cubemapAsset.file;\n\t\t\t\tif ((cubemapAsset.loadFaces || !cubemapAsset.file) && cubemapAsset.data && cubemapAsset.data.textures) {\n\t\t\t\t\t\tfor(let i = 0; i < 6; ++i){\n\t\t\t\t\t\t\t\tresult[i + 1] = cubemapAsset.data.textures[i];\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tresult[1] = result[2] = result[3] = result[4] = result[5] = result[6] = null;\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t}\n\t\tcompareAssetIds(assetIdA, assetIdB) {\n\t\t\t\tif (assetIdA && assetIdB) {\n\t\t\t\t\t\tif (parseInt(assetIdA, 10) === assetIdA || typeof assetIdA === 'string') {\n\t\t\t\t\t\t\t\treturn assetIdA === assetIdB;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn assetIdA.url === assetIdB.url;\n\t\t\t\t}\n\t\t\t\treturn assetIdA !== null === (assetIdB !== null);\n\t\t}\n\t\tupdate(cubemapAsset, assetIds, assets) {\n\t\t\t\tconst assetData = cubemapAsset.data || {};\n\t\t\t\tconst oldAssets = cubemapAsset._handlerState.assets;\n\t\t\t\tconst oldResources = cubemapAsset._resources;\n\t\t\t\tlet tex, mip, i;\n\t\t\t\tconst resources = [\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\tnull\n\t\t\t\t];\n\t\t\t\tconst getType = function() {\n\t\t\t\t\t\tif (assetData.hasOwnProperty('type')) {\n\t\t\t\t\t\t\t\treturn assetData.type;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (assetData.hasOwnProperty('rgbm')) {\n\t\t\t\t\t\t\t\treturn assetData.rgbm ? TEXTURETYPE_RGBM : TEXTURETYPE_DEFAULT;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn null;\n\t\t\t\t};\n\t\t\t\tif (!cubemapAsset.loaded || assets[0] !== oldAssets[0]) {\n\t\t\t\t\t\tif (assets[0]) {\n\t\t\t\t\t\t\t\ttex = assets[0].resource;\n\t\t\t\t\t\t\t\tif (tex.cubemap) {\n\t\t\t\t\t\t\t\t\t\tfor(i = 0; i < 6; ++i){\n\t\t\t\t\t\t\t\t\t\t\t\tresources[i + 1] = new Texture(this._device, {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tname: `${cubemapAsset.name}_prelitCubemap${tex.width >> i}`,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcubemap: true,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype: getType() || tex.type,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\twidth: tex.width >> i,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\theight: tex.height >> i,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tformat: tex.format,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlevels: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttex._levels[i]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmipmaps: i === 0\n\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tresources[1] = tex;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tresources[1] = oldResources[1] || null;\n\t\t\t\t\t\tresources[2] = oldResources[2] || null;\n\t\t\t\t\t\tresources[3] = oldResources[3] || null;\n\t\t\t\t\t\tresources[4] = oldResources[4] || null;\n\t\t\t\t\t\tresources[5] = oldResources[5] || null;\n\t\t\t\t\t\tresources[6] = oldResources[6] || null;\n\t\t\t\t}\n\t\t\t\tconst faceAssets = assets.slice(1);\n\t\t\t\tif (!cubemapAsset.loaded || !this.cmpArrays(faceAssets, oldAssets.slice(1))) {\n\t\t\t\t\t\tif (faceAssets.indexOf(null) === -1) {\n\t\t\t\t\t\t\t\tconst faceTextures = faceAssets.map((asset)=>{\n\t\t\t\t\t\t\t\t\t\treturn asset.resource;\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tconst faceLevels = [];\n\t\t\t\t\t\t\t\tfor(mip = 0; mip < faceTextures[0]._levels.length; ++mip){\n\t\t\t\t\t\t\t\t\t\tfaceLevels.push(faceTextures.map((faceTexture)=>{\n\t\t\t\t\t\t\t\t\t\t\t\treturn faceTexture._levels[mip];\n\t\t\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst format = faceTextures[0].format;\n\t\t\t\t\t\t\t\tconst faces = new Texture(this._device, {\n\t\t\t\t\t\t\t\t\t\tname: `${cubemapAsset.name}_faces`,\n\t\t\t\t\t\t\t\t\t\tcubemap: true,\n\t\t\t\t\t\t\t\t\t\ttype: getType() || faceTextures[0].type,\n\t\t\t\t\t\t\t\t\t\twidth: faceTextures[0].width,\n\t\t\t\t\t\t\t\t\t\theight: faceTextures[0].height,\n\t\t\t\t\t\t\t\t\t\tformat: format === PIXELFORMAT_RGB8 ? PIXELFORMAT_RGBA8 : format,\n\t\t\t\t\t\t\t\t\t\tmipmaps: assetData.mipmaps ?? true,\n\t\t\t\t\t\t\t\t\t\tlevels: faceLevels,\n\t\t\t\t\t\t\t\t\t\tminFilter: assetData.hasOwnProperty('minFilter') ? assetData.minFilter : faceTextures[0].minFilter,\n\t\t\t\t\t\t\t\t\t\tmagFilter: assetData.hasOwnProperty('magFilter') ? assetData.magFilter : faceTextures[0].magFilter,\n\t\t\t\t\t\t\t\t\t\tanisotropy: assetData.hasOwnProperty('anisotropy') ? assetData.anisotropy : 1,\n\t\t\t\t\t\t\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\t\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tresources[0] = faces;\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tresources[0] = oldResources[0] || null;\n\t\t\t\t}\n\t\t\t\tif (!this.cmpArrays(resources, oldResources)) {\n\t\t\t\t\t\tcubemapAsset.resources = resources;\n\t\t\t\t\t\tcubemapAsset._handlerState.assetIds = assetIds;\n\t\t\t\t\t\tcubemapAsset._handlerState.assets = assets;\n\t\t\t\t\t\tfor(i = 0; i < oldResources.length; ++i){\n\t\t\t\t\t\t\t\tif (oldResources[i] !== null && resources.indexOf(oldResources[i]) === -1) {\n\t\t\t\t\t\t\t\t\t\toldResources[i].destroy();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor(i = 0; i < oldAssets.length; ++i){\n\t\t\t\t\t\tif (oldAssets[i] !== null && assets.indexOf(oldAssets[i]) === -1) {\n\t\t\t\t\t\t\t\toldAssets[i].unload();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tcmpArrays(arr1, arr2) {\n\t\t\t\tif (arr1.length !== arr2.length) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < arr1.length; ++i){\n\t\t\t\t\t\tif (arr1[i] !== arr2[i]) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t}\n\t\tresolveId(value) {\n\t\t\t\tconst valueInt = parseInt(value, 10);\n\t\t\t\treturn valueInt === value || valueInt.toString() === value ? valueInt : value;\n\t\t}\n\t\tloadAssets(cubemapAsset, callback) {\n\t\t\t\tif (!cubemapAsset.hasOwnProperty('_handlerState')) {\n\t\t\t\t\t\tcubemapAsset._handlerState = {\n\t\t\t\t\t\t\t\tassetIds: [\n\t\t\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tassets: [\n\t\t\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst self = this;\n\t\t\t\tconst assetIds = self.getAssetIds(cubemapAsset);\n\t\t\t\tconst assets = [\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\tnull\n\t\t\t\t];\n\t\t\t\tconst loadedAssetIds = cubemapAsset._handlerState.assetIds;\n\t\t\t\tconst loadedAssets = cubemapAsset._handlerState.assets;\n\t\t\t\tconst registry = self._registry;\n\t\t\t\tlet awaiting = 7;\n\t\t\t\tconst onLoad = function(index, asset) {\n\t\t\t\t\t\tassets[index] = asset;\n\t\t\t\t\t\tawaiting--;\n\t\t\t\t\t\tif (awaiting === 0) {\n\t\t\t\t\t\t\t\tself.update(cubemapAsset, assetIds, assets);\n\t\t\t\t\t\t\t\tcallback(null, cubemapAsset.resources);\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tconst onError = function(index, err, asset) {\n\t\t\t\t\t\tcallback(err);\n\t\t\t\t};\n\t\t\t\tconst processTexAsset = function(index, texAsset) {\n\t\t\t\t\t\tif (texAsset.loaded) {\n\t\t\t\t\t\t\t\tonLoad(index, texAsset);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tregistry.once(`load:${texAsset.id}`, onLoad.bind(self, index));\n\t\t\t\t\t\t\t\tregistry.once(`error:${texAsset.id}`, onError.bind(self, index));\n\t\t\t\t\t\t\t\tif (!texAsset.loading) {\n\t\t\t\t\t\t\t\t\t\tregistry.load(texAsset);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tlet texAsset;\n\t\t\t\tfor(let i = 0; i < 7; ++i){\n\t\t\t\t\t\tconst assetId = this.resolveId(assetIds[i]);\n\t\t\t\t\t\tif (!assetId) {\n\t\t\t\t\t\t\t\tonLoad(i, null);\n\t\t\t\t\t\t} else if (self.compareAssetIds(assetId, loadedAssetIds[i])) {\n\t\t\t\t\t\t\t\tprocessTexAsset(i, loadedAssets[i]);\n\t\t\t\t\t\t} else if (parseInt(assetId, 10) === assetId) {\n\t\t\t\t\t\t\t\ttexAsset = registry.get(assetId);\n\t\t\t\t\t\t\t\tif (texAsset) {\n\t\t\t\t\t\t\t\t\t\tprocessTexAsset(i, texAsset);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tsetTimeout(((index, assetId_)=>{\n\t\t\t\t\t\t\t\t\t\t\t\tconst texAsset = registry.get(assetId_);\n\t\t\t\t\t\t\t\t\t\t\t\tif (texAsset) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tprocessTexAsset(index, texAsset);\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonError(index, `failed to find dependent cubemap asset=${assetId_}`);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}).bind(null, i, assetId));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst file = typeof assetId === 'string' ? {\n\t\t\t\t\t\t\t\t\t\turl: assetId,\n\t\t\t\t\t\t\t\t\t\tfilename: assetId\n\t\t\t\t\t\t\t\t} : assetId;\n\t\t\t\t\t\t\t\tconst data = file.url.search('.dds') === -1 ? {\n\t\t\t\t\t\t\t\t\t\ttype: 'rgbp',\n\t\t\t\t\t\t\t\t\t\taddressu: 'clamp',\n\t\t\t\t\t\t\t\t\t\taddressv: 'clamp',\n\t\t\t\t\t\t\t\t\t\tmipmaps: false\n\t\t\t\t\t\t\t\t} : null;\n\t\t\t\t\t\t\t\ttexAsset = new Asset(`${cubemapAsset.name}_part_${i}`, 'texture', file, data);\n\t\t\t\t\t\t\t\tregistry.add(texAsset);\n\t\t\t\t\t\t\t\tprocessTexAsset(i, texAsset);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n}\n\nclass FolderHandler extends ResourceHandler {\n\t\tconstructor(app){\n\t\t\t\tsuper(app, 'folder');\n\t\t}\n\t\tload(url, callback) {\n\t\t\t\tcallback(null, null);\n\t\t}\n}\n\nclass Font {\n\t\tconstructor(textures, data){\n\t\t\t\tthis.type = data ? data.type || FONT_MSDF : FONT_MSDF;\n\t\t\t\tthis.em = 1;\n\t\t\t\tthis.textures = textures;\n\t\t\t\tthis.intensity = 0.0;\n\t\t\t\tthis._data = null;\n\t\t\t\tthis.data = data;\n\t\t}\n\t\tset data(value) {\n\t\t\t\tthis._data = value;\n\t\t\t\tif (!value) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this._data.intensity !== undefined) {\n\t\t\t\t\t\tthis.intensity = this._data.intensity;\n\t\t\t\t}\n\t\t\t\tif (!this._data.info) {\n\t\t\t\t\t\tthis._data.info = {};\n\t\t\t\t}\n\t\t\t\tif (!this._data.version || this._data.version < 2) {\n\t\t\t\t\t\tthis._data.info.maps = [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\twidth: this._data.info.width,\n\t\t\t\t\t\t\t\t\t\theight: this._data.info.height\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t];\n\t\t\t\t\t\tif (this._data.chars) {\n\t\t\t\t\t\t\t\tfor(const key in this._data.chars){\n\t\t\t\t\t\t\t\t\t\tthis._data.chars[key].map = 0;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget data() {\n\t\t\t\treturn this._data;\n\t\t}\n}\n\nfunction upgradeDataSchema(data) {\n\t\tif (data.version < 3) {\n\t\t\t\tif (data.version < 2) {\n\t\t\t\t\t\tdata.info.maps = data.info.maps || [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\twidth: data.info.width,\n\t\t\t\t\t\t\t\t\t\theight: data.info.height\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t\tdata.chars = Object.keys(data.chars || {}).reduce((newChars, key)=>{\n\t\t\t\t\t\tconst existing = data.chars[key];\n\t\t\t\t\t\tconst newKey = existing.letter !== undefined ? existing.letter : string.fromCodePoint(key);\n\t\t\t\t\t\tif (data.version < 2) {\n\t\t\t\t\t\t\t\texisting.map = existing.map || 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnewChars[newKey] = existing;\n\t\t\t\t\t\treturn newChars;\n\t\t\t\t}, {});\n\t\t\t\tdata.version = 3;\n\t\t}\n\t\treturn data;\n}\nclass FontHandler extends ResourceHandler {\n\t\tconstructor(app){\n\t\t\t\tsuper(app, 'font');\n\t\t\t\tthis._loader = app.loader;\n\t\t\t\tthis.maxRetries = 0;\n\t\t}\n\t\tload(url, callback, asset) {\n\t\t\t\tif (typeof url === 'string') {\n\t\t\t\t\t\turl = {\n\t\t\t\t\t\t\t\tload: url,\n\t\t\t\t\t\t\t\toriginal: url\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst self = this;\n\t\t\t\tif (path.getExtension(url.original) === '.json') {\n\t\t\t\t\t\thttp.get(url.load, {\n\t\t\t\t\t\t\t\tretry: this.maxRetries > 0,\n\t\t\t\t\t\t\t\tmaxRetries: this.maxRetries\n\t\t\t\t\t\t}, (err, response)=>{\n\t\t\t\t\t\t\t\tif (!err) {\n\t\t\t\t\t\t\t\t\t\tconst data = upgradeDataSchema(response);\n\t\t\t\t\t\t\t\t\t\tself._loadTextures(url.load.replace('.json', '.png'), data, (err, textures)=>{\n\t\t\t\t\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcallback(err);\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcallback(null, {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdata: data,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttextures: textures\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tcallback(`Error loading font resource: ${url.original} [${err}]`);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t\tif (asset && asset.data) {\n\t\t\t\t\t\t\t\tasset.data = upgradeDataSchema(asset.data);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._loadTextures(url.load, asset && asset.data, callback);\n\t\t\t\t}\n\t\t}\n\t\t_loadTextures(url, data, callback) {\n\t\t\t\tconst numTextures = data.info.maps.length;\n\t\t\t\tlet numLoaded = 0;\n\t\t\t\tlet error = null;\n\t\t\t\tconst textures = new Array(numTextures);\n\t\t\t\tconst loader = this._loader;\n\t\t\t\tconst loadTexture = function(index) {\n\t\t\t\t\t\tconst onLoaded = function(err, texture) {\n\t\t\t\t\t\t\t\tif (error) return;\n\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\t\terror = err;\n\t\t\t\t\t\t\t\t\t\tcallback(err);\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\ttexture.upload();\n\t\t\t\t\t\t\t\ttextures[index] = texture;\n\t\t\t\t\t\t\t\tnumLoaded++;\n\t\t\t\t\t\t\t\tif (numLoaded === numTextures) {\n\t\t\t\t\t\t\t\t\t\tcallback(null, textures);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (index === 0) {\n\t\t\t\t\t\t\t\tloader.load(url, 'texture', onLoaded);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tloader.load(url.replace('.png', `${index}.png`), 'texture', onLoaded);\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tfor(let i = 0; i < numTextures; i++){\n\t\t\t\t\t\tloadTexture(i);\n\t\t\t\t}\n\t\t}\n\t\topen(url, data, asset) {\n\t\t\t\tlet font;\n\t\t\t\tif (data.textures) {\n\t\t\t\t\t\tfont = new Font(data.textures, data.data);\n\t\t\t\t} else {\n\t\t\t\t\t\tfont = new Font(data, null);\n\t\t\t\t}\n\t\t\t\treturn font;\n\t\t}\n\t\tpatch(asset, assets) {\n\t\t\t\tconst font = asset.resource;\n\t\t\t\tif (!font.data && asset.data) {\n\t\t\t\t\t\tfont.data = asset.data;\n\t\t\t\t} else if (!asset.data && font.data) {\n\t\t\t\t\t\tasset.data = font.data;\n\t\t\t\t}\n\t\t\t\tif (asset.data) {\n\t\t\t\t\t\tasset.data = upgradeDataSchema(asset.data);\n\t\t\t\t}\n\t\t}\n}\n\nconst SH_C0 = 0.28209479177387814;\nclass SplatCompressedIterator {\n\t\tconstructor(gsplatData, p, r, s, c, sh){\n\t\t\t\tconst unpackUnorm = (value, bits)=>{\n\t\t\t\t\t\tconst t = (1 << bits) - 1;\n\t\t\t\t\t\treturn (value & t) / t;\n\t\t\t\t};\n\t\t\t\tconst unpack111011 = (result, value)=>{\n\t\t\t\t\t\tresult.x = unpackUnorm(value >>> 21, 11);\n\t\t\t\t\t\tresult.y = unpackUnorm(value >>> 11, 10);\n\t\t\t\t\t\tresult.z = unpackUnorm(value, 11);\n\t\t\t\t};\n\t\t\t\tconst unpack8888 = (result, value)=>{\n\t\t\t\t\t\tresult.x = unpackUnorm(value >>> 24, 8);\n\t\t\t\t\t\tresult.y = unpackUnorm(value >>> 16, 8);\n\t\t\t\t\t\tresult.z = unpackUnorm(value >>> 8, 8);\n\t\t\t\t\t\tresult.w = unpackUnorm(value, 8);\n\t\t\t\t};\n\t\t\t\tconst unpackRot = (result, value)=>{\n\t\t\t\t\t\tconst norm = Math.SQRT2;\n\t\t\t\t\t\tconst a = (unpackUnorm(value >>> 20, 10) - 0.5) * norm;\n\t\t\t\t\t\tconst b = (unpackUnorm(value >>> 10, 10) - 0.5) * norm;\n\t\t\t\t\t\tconst c = (unpackUnorm(value, 10) - 0.5) * norm;\n\t\t\t\t\t\tconst m = Math.sqrt(1.0 - (a * a + b * b + c * c));\n\t\t\t\t\t\tswitch(value >>> 30){\n\t\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\t\t\tresult.set(a, b, c, m);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\t\t\tresult.set(m, b, c, a);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\t\t\tresult.set(b, m, c, a);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\t\t\tresult.set(b, c, m, a);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tconst lerp = (a, b, t)=>a * (1 - t) + b * t;\n\t\t\t\tconst { chunkData, chunkSize, vertexData, shData0, shData1, shData2, shBands } = gsplatData;\n\t\t\t\tconst shCoeffs = [\n\t\t\t\t\t\t3,\n\t\t\t\t\t\t8,\n\t\t\t\t\t\t15\n\t\t\t\t][shBands - 1];\n\t\t\t\tthis.read = (i)=>{\n\t\t\t\t\t\tconst ci = Math.floor(i / 256) * chunkSize;\n\t\t\t\t\t\tif (p) {\n\t\t\t\t\t\t\t\tunpack111011(p, vertexData[i * 4 + 0]);\n\t\t\t\t\t\t\t\tp.x = lerp(chunkData[ci + 0], chunkData[ci + 3], p.x);\n\t\t\t\t\t\t\t\tp.y = lerp(chunkData[ci + 1], chunkData[ci + 4], p.y);\n\t\t\t\t\t\t\t\tp.z = lerp(chunkData[ci + 2], chunkData[ci + 5], p.z);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (r) {\n\t\t\t\t\t\t\t\tunpackRot(r, vertexData[i * 4 + 1]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (s) {\n\t\t\t\t\t\t\t\tunpack111011(s, vertexData[i * 4 + 2]);\n\t\t\t\t\t\t\t\ts.x = lerp(chunkData[ci + 6], chunkData[ci + 9], s.x);\n\t\t\t\t\t\t\t\ts.y = lerp(chunkData[ci + 7], chunkData[ci + 10], s.y);\n\t\t\t\t\t\t\t\ts.z = lerp(chunkData[ci + 8], chunkData[ci + 11], s.z);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (c) {\n\t\t\t\t\t\t\t\tunpack8888(c, vertexData[i * 4 + 3]);\n\t\t\t\t\t\t\t\tif (chunkSize > 12) {\n\t\t\t\t\t\t\t\t\t\tc.x = lerp(chunkData[ci + 12], chunkData[ci + 15], c.x);\n\t\t\t\t\t\t\t\t\t\tc.y = lerp(chunkData[ci + 13], chunkData[ci + 16], c.y);\n\t\t\t\t\t\t\t\t\t\tc.z = lerp(chunkData[ci + 14], chunkData[ci + 17], c.z);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (sh && shBands > 0) {\n\t\t\t\t\t\t\t\tconst shData = [\n\t\t\t\t\t\t\t\t\t\tshData0,\n\t\t\t\t\t\t\t\t\t\tshData1,\n\t\t\t\t\t\t\t\t\t\tshData2\n\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\tfor(let j = 0; j < 3; ++j){\n\t\t\t\t\t\t\t\t\t\tfor(let k = 0; k < 15; ++k){\n\t\t\t\t\t\t\t\t\t\t\t\tsh[j * 15 + k] = k < shCoeffs ? shData[j][i * 16 + k] * (8 / 255) - 4 : 0;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t}\n}\nclass GSplatCompressedData {\n\t\tcreateIter(p, r, s, c, sh) {\n\t\t\t\treturn new SplatCompressedIterator(this, p, r, s, c, sh);\n\t\t}\n\t\tcalcAabb(result) {\n\t\t\t\tconst { chunkData, numChunks, chunkSize } = this;\n\t\t\t\tlet s = Math.exp(Math.max(chunkData[9], chunkData[10], chunkData[11]));\n\t\t\t\tlet mx = chunkData[0] - s;\n\t\t\t\tlet my = chunkData[1] - s;\n\t\t\t\tlet mz = chunkData[2] - s;\n\t\t\t\tlet Mx = chunkData[3] + s;\n\t\t\t\tlet My = chunkData[4] + s;\n\t\t\t\tlet Mz = chunkData[5] + s;\n\t\t\t\tfor(let i = 1; i < numChunks; ++i){\n\t\t\t\t\t\tconst off = i * chunkSize;\n\t\t\t\t\t\ts = Math.exp(Math.max(chunkData[off + 9], chunkData[off + 10], chunkData[off + 11]));\n\t\t\t\t\t\tmx = Math.min(mx, chunkData[off + 0] - s);\n\t\t\t\t\t\tmy = Math.min(my, chunkData[off + 1] - s);\n\t\t\t\t\t\tmz = Math.min(mz, chunkData[off + 2] - s);\n\t\t\t\t\t\tMx = Math.max(Mx, chunkData[off + 3] + s);\n\t\t\t\t\t\tMy = Math.max(My, chunkData[off + 4] + s);\n\t\t\t\t\t\tMz = Math.max(Mz, chunkData[off + 5] + s);\n\t\t\t\t}\n\t\t\t\tresult.center.set((mx + Mx) * 0.5, (my + My) * 0.5, (mz + Mz) * 0.5);\n\t\t\t\tresult.halfExtents.set((Mx - mx) * 0.5, (My - my) * 0.5, (Mz - mz) * 0.5);\n\t\t\t\treturn true;\n\t\t}\n\t\tgetCenters() {\n\t\t\t\tconst { vertexData, chunkData, numChunks, chunkSize } = this;\n\t\t\t\tconst result = new Float32Array(this.numSplats * 3);\n\t\t\t\tlet mx, my, mz, Mx, My, Mz;\n\t\t\t\tfor(let c = 0; c < numChunks; ++c){\n\t\t\t\t\t\tconst off = c * chunkSize;\n\t\t\t\t\t\tmx = chunkData[off + 0];\n\t\t\t\t\t\tmy = chunkData[off + 1];\n\t\t\t\t\t\tmz = chunkData[off + 2];\n\t\t\t\t\t\tMx = chunkData[off + 3];\n\t\t\t\t\t\tMy = chunkData[off + 4];\n\t\t\t\t\t\tMz = chunkData[off + 5];\n\t\t\t\t\t\tconst end = Math.min(this.numSplats, (c + 1) * 256);\n\t\t\t\t\t\tfor(let i = c * 256; i < end; ++i){\n\t\t\t\t\t\t\t\tconst p = vertexData[i * 4];\n\t\t\t\t\t\t\t\tconst px = (p >>> 21) / 2047;\n\t\t\t\t\t\t\t\tconst py = (p >>> 11 & 0x3ff) / 1023;\n\t\t\t\t\t\t\t\tconst pz = (p & 0x7ff) / 2047;\n\t\t\t\t\t\t\t\tresult[i * 3 + 0] = (1 - px) * mx + px * Mx;\n\t\t\t\t\t\t\t\tresult[i * 3 + 1] = (1 - py) * my + py * My;\n\t\t\t\t\t\t\t\tresult[i * 3 + 2] = (1 - pz) * mz + pz * Mz;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t}\n\t\tgetChunks(result) {\n\t\t\t\tconst { chunkData, numChunks, chunkSize } = this;\n\t\t\t\tlet mx, my, mz, Mx, My, Mz;\n\t\t\t\tfor(let c = 0; c < numChunks; ++c){\n\t\t\t\t\t\tconst off = c * chunkSize;\n\t\t\t\t\t\tmx = chunkData[off + 0];\n\t\t\t\t\t\tmy = chunkData[off + 1];\n\t\t\t\t\t\tmz = chunkData[off + 2];\n\t\t\t\t\t\tMx = chunkData[off + 3];\n\t\t\t\t\t\tMy = chunkData[off + 4];\n\t\t\t\t\t\tMz = chunkData[off + 5];\n\t\t\t\t\t\tresult[c * 6 + 0] = mx;\n\t\t\t\t\t\tresult[c * 6 + 1] = my;\n\t\t\t\t\t\tresult[c * 6 + 2] = mz;\n\t\t\t\t\t\tresult[c * 6 + 3] = Mx;\n\t\t\t\t\t\tresult[c * 6 + 4] = My;\n\t\t\t\t\t\tresult[c * 6 + 5] = Mz;\n\t\t\t\t}\n\t\t}\n\t\tcalcFocalPoint(result) {\n\t\t\t\tconst { chunkData, numChunks, chunkSize } = this;\n\t\t\t\tresult.x = 0;\n\t\t\t\tresult.y = 0;\n\t\t\t\tresult.z = 0;\n\t\t\t\tfor(let i = 0; i < numChunks; ++i){\n\t\t\t\t\t\tconst off = i * chunkSize;\n\t\t\t\t\t\tresult.x += chunkData[off + 0] + chunkData[off + 3];\n\t\t\t\t\t\tresult.y += chunkData[off + 1] + chunkData[off + 4];\n\t\t\t\t\t\tresult.z += chunkData[off + 2] + chunkData[off + 5];\n\t\t\t\t}\n\t\t\t\tresult.mulScalar(0.5 / numChunks);\n\t\t}\n\t\tget isCompressed() {\n\t\t\t\treturn true;\n\t\t}\n\t\tget numChunks() {\n\t\t\t\treturn Math.ceil(this.numSplats / 256);\n\t\t}\n\t\tget chunkSize() {\n\t\t\t\treturn this.chunkData.length / this.numChunks;\n\t\t}\n\t\tdecompress() {\n\t\t\t\tconst members = [\n\t\t\t\t\t\t'x',\n\t\t\t\t\t\t'y',\n\t\t\t\t\t\t'z',\n\t\t\t\t\t\t'f_dc_0',\n\t\t\t\t\t\t'f_dc_1',\n\t\t\t\t\t\t'f_dc_2',\n\t\t\t\t\t\t'opacity',\n\t\t\t\t\t\t'scale_0',\n\t\t\t\t\t\t'scale_1',\n\t\t\t\t\t\t'scale_2',\n\t\t\t\t\t\t'rot_0',\n\t\t\t\t\t\t'rot_1',\n\t\t\t\t\t\t'rot_2',\n\t\t\t\t\t\t'rot_3'\n\t\t\t\t];\n\t\t\t\tconst { shBands } = this;\n\t\t\t\tif (shBands > 0) {\n\t\t\t\t\t\tconst shMembers = [];\n\t\t\t\t\t\tfor(let i = 0; i < 45; ++i){\n\t\t\t\t\t\t\t\tshMembers.push(`f_rest_${i}`);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst location = Math.max(...[\n\t\t\t\t\t\t\t\t'f_dc_0',\n\t\t\t\t\t\t\t\t'f_dc_1',\n\t\t\t\t\t\t\t\t'f_dc_2'\n\t\t\t\t\t\t].map((name)=>members.indexOf(name)));\n\t\t\t\t\t\tmembers.splice(location + 1, 0, ...shMembers);\n\t\t\t\t}\n\t\t\t\tconst data = {};\n\t\t\t\tmembers.forEach((name)=>{\n\t\t\t\t\t\tdata[name] = new Float32Array(this.numSplats);\n\t\t\t\t});\n\t\t\t\tconst p = new Vec3();\n\t\t\t\tconst r = new Quat();\n\t\t\t\tconst s = new Vec3();\n\t\t\t\tconst c = new Vec4();\n\t\t\t\tconst sh = shBands > 0 ? new Float32Array(45) : null;\n\t\t\t\tconst iter = this.createIter(p, r, s, c, sh);\n\t\t\t\tfor(let i = 0; i < this.numSplats; ++i){\n\t\t\t\t\t\titer.read(i);\n\t\t\t\t\t\tdata.x[i] = p.x;\n\t\t\t\t\t\tdata.y[i] = p.y;\n\t\t\t\t\t\tdata.z[i] = p.z;\n\t\t\t\t\t\tdata.rot_1[i] = r.x;\n\t\t\t\t\t\tdata.rot_2[i] = r.y;\n\t\t\t\t\t\tdata.rot_3[i] = r.z;\n\t\t\t\t\t\tdata.rot_0[i] = r.w;\n\t\t\t\t\t\tdata.scale_0[i] = s.x;\n\t\t\t\t\t\tdata.scale_1[i] = s.y;\n\t\t\t\t\t\tdata.scale_2[i] = s.z;\n\t\t\t\t\t\tdata.f_dc_0[i] = (c.x - 0.5) / SH_C0;\n\t\t\t\t\t\tdata.f_dc_1[i] = (c.y - 0.5) / SH_C0;\n\t\t\t\t\t\tdata.f_dc_2[i] = (c.z - 0.5) / SH_C0;\n\t\t\t\t\t\tdata.opacity[i] = c.w <= 0 ? -40 : c.w >= 1 ? 40 : -Math.log(1 / c.w - 1);\n\t\t\t\t\t\tif (sh) {\n\t\t\t\t\t\t\t\tfor(let c = 0; c < 45; ++c){\n\t\t\t\t\t\t\t\t\t\tdata[`f_rest_${c}`][i] = sh[c];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn new GSplatData([\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: 'vertex',\n\t\t\t\t\t\t\t\tcount: this.numSplats,\n\t\t\t\t\t\t\t\tproperties: members.map((name)=>{\n\t\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\t\t\tname: name,\n\t\t\t\t\t\t\t\t\t\t\t\ttype: 'float',\n\t\t\t\t\t\t\t\t\t\t\t\tbyteSize: 4,\n\t\t\t\t\t\t\t\t\t\t\t\tstorage: data[name]\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\t\t\t\t], this.comments);\n\t\t}\n}\n\nconst strideCopy = (target, targetStride, src, srcStride, numEntries)=>{\n\t\tfor(let i = 0; i < numEntries; ++i){\n\t\t\t\tfor(let j = 0; j < srcStride; ++j){\n\t\t\t\t\t\ttarget[i * targetStride + j] = src[i * srcStride + j];\n\t\t\t\t}\n\t\t}\n};\nclass GSplatCompressedResource extends GSplatResourceBase {\n\t\tconstructor(device, gsplatData){\n\t\t\t\tsuper(device, gsplatData);\n\t\t\t\tconst { chunkData, chunkSize, numChunks, numSplats, vertexData, shBands } = gsplatData;\n\t\t\t\tthis.chunks = new Float32Array(numChunks * 6);\n\t\t\t\tgsplatData.getChunks(this.chunks);\n\t\t\t\tthis.packedTexture = this.createTexture('packedData', PIXELFORMAT_RGBA32U, this.evalTextureSize(numSplats), vertexData);\n\t\t\t\tconst chunkTextureSize = this.evalTextureSize(numChunks);\n\t\t\t\tchunkTextureSize.x *= 5;\n\t\t\t\tthis.chunkTexture = this.createTexture('chunkData', PIXELFORMAT_RGBA32F, chunkTextureSize);\n\t\t\t\tconst chunkTextureData = this.chunkTexture.lock();\n\t\t\t\tstrideCopy(chunkTextureData, 20, chunkData, chunkSize, numChunks);\n\t\t\t\tif (chunkSize === 12) {\n\t\t\t\t\t\tfor(let i = 0; i < numChunks; ++i){\n\t\t\t\t\t\t\t\tchunkTextureData[i * 20 + 15] = 1;\n\t\t\t\t\t\t\t\tchunkTextureData[i * 20 + 16] = 1;\n\t\t\t\t\t\t\t\tchunkTextureData[i * 20 + 17] = 1;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.chunkTexture.unlock();\n\t\t\t\tif (shBands > 0) {\n\t\t\t\t\t\tconst size = this.evalTextureSize(numSplats);\n\t\t\t\t\t\tthis.shTexture0 = this.createTexture('shTexture0', PIXELFORMAT_RGBA32U, size, new Uint32Array(gsplatData.shData0.buffer));\n\t\t\t\t\t\tthis.shTexture1 = this.createTexture('shTexture1', PIXELFORMAT_RGBA32U, size, new Uint32Array(gsplatData.shData1.buffer));\n\t\t\t\t\t\tthis.shTexture2 = this.createTexture('shTexture2', PIXELFORMAT_RGBA32U, size, new Uint32Array(gsplatData.shData2.buffer));\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.shTexture0 = null;\n\t\t\t\t\t\tthis.shTexture1 = null;\n\t\t\t\t\t\tthis.shTexture2 = null;\n\t\t\t\t}\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.packedTexture?.destroy();\n\t\t\t\tthis.chunkTexture?.destroy();\n\t\t\t\tthis.shTexture0?.destroy();\n\t\t\t\tthis.shTexture1?.destroy();\n\t\t\t\tthis.shTexture2?.destroy();\n\t\t\t\tsuper.destroy();\n\t\t}\n\t\tconfigureMaterialDefines(defines) {\n\t\t\t\tdefines.set('GSPLAT_COMPRESSED_DATA', true);\n\t\t\t\tdefines.set('SH_BANDS', this.shTexture0 ? 3 : 0);\n\t\t}\n\t\tconfigureMaterial(material) {\n\t\t\t\tthis.configureMaterialDefines(material.defines);\n\t\t\t\tmaterial.setParameter('packedTexture', this.packedTexture);\n\t\t\t\tmaterial.setParameter('chunkTexture', this.chunkTexture);\n\t\t\t\tif (this.shTexture0) {\n\t\t\t\t\t\tmaterial.setParameter('shTexture0', this.shTexture0);\n\t\t\t\t\t\tmaterial.setParameter('shTexture1', this.shTexture1);\n\t\t\t\t\t\tmaterial.setParameter('shTexture2', this.shTexture2);\n\t\t\t\t}\n\t\t}\n\t\tevalTextureSize(count) {\n\t\t\t\tconst width = Math.ceil(Math.sqrt(count));\n\t\t\t\tconst height = Math.ceil(count / width);\n\t\t\t\treturn new Vec2(width, height);\n\t\t}\n}\n\nconst magicBytes = new Uint8Array([\n\t\t112,\n\t\t108,\n\t\t121,\n\t\t10\n]);\nconst endHeaderBytes = new Uint8Array([\n\t\t10,\n\t\t101,\n\t\t110,\n\t\t100,\n\t\t95,\n\t\t104,\n\t\t101,\n\t\t97,\n\t\t100,\n\t\t101,\n\t\t114,\n\t\t10\n]);\nconst dataTypeMap = new Map([\n\t\t[\n\t\t\t\t'char',\n\t\t\t\tInt8Array\n\t\t],\n\t\t[\n\t\t\t\t'uchar',\n\t\t\t\tUint8Array\n\t\t],\n\t\t[\n\t\t\t\t'short',\n\t\t\t\tInt16Array\n\t\t],\n\t\t[\n\t\t\t\t'ushort',\n\t\t\t\tUint16Array\n\t\t],\n\t\t[\n\t\t\t\t'int',\n\t\t\t\tInt32Array\n\t\t],\n\t\t[\n\t\t\t\t'uint',\n\t\t\t\tUint32Array\n\t\t],\n\t\t[\n\t\t\t\t'float',\n\t\t\t\tFloat32Array\n\t\t],\n\t\t[\n\t\t\t\t'double',\n\t\t\t\tFloat64Array\n\t\t]\n]);\nclass StreamBuf {\n\t\tconstructor(reader, progressFunc){\n\t\t\t\tthis.head = 0;\n\t\t\t\tthis.tail = 0;\n\t\t\t\tthis.reader = reader;\n\t\t\t\tthis.progressFunc = progressFunc;\n\t\t}\n\t\tasync read() {\n\t\t\t\tconst { value, done } = await this.reader.read();\n\t\t\t\tif (done) {\n\t\t\t\t\t\tthrow new Error('Stream finished before end of header');\n\t\t\t\t}\n\t\t\t\tthis.push(value);\n\t\t\t\tthis.progressFunc?.(value.byteLength);\n\t\t}\n\t\tpush(data) {\n\t\t\t\tif (!this.data) {\n\t\t\t\t\t\tthis.data = data;\n\t\t\t\t\t\tthis.view = new DataView(this.data.buffer);\n\t\t\t\t\t\tthis.tail = data.length;\n\t\t\t\t} else {\n\t\t\t\t\t\tconst remaining = this.tail - this.head;\n\t\t\t\t\t\tconst newSize = remaining + data.length;\n\t\t\t\t\t\tif (this.data.length >= newSize) {\n\t\t\t\t\t\t\t\tif (this.head > 0) {\n\t\t\t\t\t\t\t\t\t\tthis.data.copyWithin(0, this.head, this.tail);\n\t\t\t\t\t\t\t\t\t\tthis.data.set(data, remaining);\n\t\t\t\t\t\t\t\t\t\tthis.head = 0;\n\t\t\t\t\t\t\t\t\t\tthis.tail = newSize;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis.data.set(data, this.tail);\n\t\t\t\t\t\t\t\t\t\tthis.tail += data.length;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst tmp = new Uint8Array(newSize);\n\t\t\t\t\t\t\t\tif (this.head > 0 || this.tail < this.data.length) {\n\t\t\t\t\t\t\t\t\t\ttmp.set(this.data.subarray(this.head, this.tail), 0);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\ttmp.set(this.data, 0);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\ttmp.set(data, remaining);\n\t\t\t\t\t\t\t\tthis.data = tmp;\n\t\t\t\t\t\t\t\tthis.view = new DataView(this.data.buffer);\n\t\t\t\t\t\t\t\tthis.head = 0;\n\t\t\t\t\t\t\t\tthis.tail = newSize;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tcompact() {\n\t\t\t\tif (this.head > 0) {\n\t\t\t\t\t\tthis.data.copyWithin(0, this.head, this.tail);\n\t\t\t\t\t\tthis.tail -= this.head;\n\t\t\t\t\t\tthis.head = 0;\n\t\t\t\t}\n\t\t}\n\t\tget remaining() {\n\t\t\t\treturn this.tail - this.head;\n\t\t}\n\t\tgetInt8() {\n\t\t\t\tconst result = this.view.getInt8(this.head);\n\t\t\t\tthis.head++;\n\t\t\t\treturn result;\n\t\t}\n\t\tgetUint8() {\n\t\t\t\tconst result = this.view.getUint8(this.head);\n\t\t\t\tthis.head++;\n\t\t\t\treturn result;\n\t\t}\n\t\tgetInt16() {\n\t\t\t\tconst result = this.view.getInt16(this.head, true);\n\t\t\t\tthis.head += 2;\n\t\t\t\treturn result;\n\t\t}\n\t\tgetUint16() {\n\t\t\t\tconst result = this.view.getUint16(this.head, true);\n\t\t\t\tthis.head += 2;\n\t\t\t\treturn result;\n\t\t}\n\t\tgetInt32() {\n\t\t\t\tconst result = this.view.getInt32(this.head, true);\n\t\t\t\tthis.head += 4;\n\t\t\t\treturn result;\n\t\t}\n\t\tgetUint32() {\n\t\t\t\tconst result = this.view.getUint32(this.head, true);\n\t\t\t\tthis.head += 4;\n\t\t\t\treturn result;\n\t\t}\n\t\tgetFloat32() {\n\t\t\t\tconst result = this.view.getFloat32(this.head, true);\n\t\t\t\tthis.head += 4;\n\t\t\t\treturn result;\n\t\t}\n\t\tgetFloat64() {\n\t\t\t\tconst result = this.view.getFloat64(this.head, true);\n\t\t\t\tthis.head += 8;\n\t\t\t\treturn result;\n\t\t}\n}\nconst parseHeader = (lines)=>{\n\t\tconst elements = [];\n\t\tconst comments = [];\n\t\tlet format;\n\t\tfor(let i = 1; i < lines.length; ++i){\n\t\t\t\tconst words = lines[i].split(' ');\n\t\t\t\tswitch(words[0]){\n\t\t\t\t\t\tcase 'comment':\n\t\t\t\t\t\t\t\tcomments.push(words.slice(1).join(' '));\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'format':\n\t\t\t\t\t\t\t\tformat = words[1];\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'element':\n\t\t\t\t\t\t\t\telements.push({\n\t\t\t\t\t\t\t\t\t\tname: words[1],\n\t\t\t\t\t\t\t\t\t\tcount: parseInt(words[2], 10),\n\t\t\t\t\t\t\t\t\t\tproperties: []\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'property':\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tif (!dataTypeMap.has(words[1])) {\n\t\t\t\t\t\t\t\t\t\t\t\tthrow new Error(`Unrecognized property data type '${words[1]}' in ply header`);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tconst element = elements[elements.length - 1];\n\t\t\t\t\t\t\t\t\t\telement.properties.push({\n\t\t\t\t\t\t\t\t\t\t\t\ttype: words[1],\n\t\t\t\t\t\t\t\t\t\t\t\tname: words[2],\n\t\t\t\t\t\t\t\t\t\t\t\tstorage: null,\n\t\t\t\t\t\t\t\t\t\t\t\tbyteSize: dataTypeMap.get(words[1]).BYTES_PER_ELEMENT\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tthrow new Error(`Unrecognized header value '${words[0]}' in ply header`);\n\t\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\t\telements,\n\t\t\t\tformat,\n\t\t\t\tcomments\n\t\t};\n};\nconst isCompressedPly = (elements)=>{\n\t\tconst chunkProperties = [\n\t\t\t\t'min_x',\n\t\t\t\t'min_y',\n\t\t\t\t'min_z',\n\t\t\t\t'max_x',\n\t\t\t\t'max_y',\n\t\t\t\t'max_z',\n\t\t\t\t'min_scale_x',\n\t\t\t\t'min_scale_y',\n\t\t\t\t'min_scale_z',\n\t\t\t\t'max_scale_x',\n\t\t\t\t'max_scale_y',\n\t\t\t\t'max_scale_z',\n\t\t\t\t'min_r',\n\t\t\t\t'min_g',\n\t\t\t\t'min_b',\n\t\t\t\t'max_r',\n\t\t\t\t'max_g',\n\t\t\t\t'max_b'\n\t\t];\n\t\tconst vertexProperties = [\n\t\t\t\t'packed_position',\n\t\t\t\t'packed_rotation',\n\t\t\t\t'packed_scale',\n\t\t\t\t'packed_color'\n\t\t];\n\t\tconst shProperties = new Array(45).fill('').map((_, i)=>`f_rest_${i}`);\n\t\tconst hasBaseElements = ()=>{\n\t\t\t\treturn elements[0].name === 'chunk' && elements[0].properties.every((p, i)=>p.name === chunkProperties[i] && p.type === 'float') && elements[1].name === 'vertex' && elements[1].properties.every((p, i)=>p.name === vertexProperties[i] && p.type === 'uint');\n\t\t};\n\t\tconst hasSHElements = ()=>{\n\t\t\t\treturn elements[2].name === 'sh' && [\n\t\t\t\t\t\t9,\n\t\t\t\t\t\t24,\n\t\t\t\t\t\t45\n\t\t\t\t].indexOf(elements[2].properties.length) !== -1 && elements[2].properties.every((p, i)=>p.name === shProperties[i] && p.type === 'uchar');\n\t\t};\n\t\treturn elements.length === 2 && hasBaseElements() || elements.length === 3 && hasBaseElements() && hasSHElements();\n};\nconst isFloatPly = (elements)=>{\n\t\treturn elements.length === 1 && elements[0].name === 'vertex' && elements[0].properties.every((p)=>p.type === 'float');\n};\nconst readCompressedPly = async (streamBuf, elements, comments)=>{\n\t\tconst result = new GSplatCompressedData();\n\t\tresult.comments = comments;\n\t\tconst numChunks = elements[0].count;\n\t\tconst numChunkProperties = elements[0].properties.length;\n\t\tconst numVertices = elements[1].count;\n\t\tconst evalStorageSize = (count)=>{\n\t\t\t\tconst width = Math.ceil(Math.sqrt(count));\n\t\t\t\tconst height = Math.ceil(count / width);\n\t\t\t\treturn width * height;\n\t\t};\n\t\tconst storageSize = evalStorageSize(numVertices);\n\t\tresult.numSplats = numVertices;\n\t\tresult.chunkData = new Float32Array(numChunks * numChunkProperties);\n\t\tresult.vertexData = new Uint32Array(storageSize * 4);\n\t\tconst read = async (buffer, length)=>{\n\t\t\t\tconst target = new Uint8Array(buffer);\n\t\t\t\tlet cursor = 0;\n\t\t\t\twhile(cursor < length){\n\t\t\t\t\t\twhile(streamBuf.remaining === 0){\n\t\t\t\t\t\t\t\tawait streamBuf.read();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst toCopy = Math.min(length - cursor, streamBuf.remaining);\n\t\t\t\t\t\tconst src = streamBuf.data;\n\t\t\t\t\t\tfor(let i = 0; i < toCopy; ++i){\n\t\t\t\t\t\t\t\ttarget[cursor++] = src[streamBuf.head++];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t};\n\t\tawait read(result.chunkData.buffer, numChunks * numChunkProperties * 4);\n\t\tawait read(result.vertexData.buffer, numVertices * 4 * 4);\n\t\tif (elements.length === 3) {\n\t\t\t\tconst texStorageSize = storageSize * 16;\n\t\t\t\tconst shData0 = new Uint8Array(texStorageSize);\n\t\t\t\tconst shData1 = new Uint8Array(texStorageSize);\n\t\t\t\tconst shData2 = new Uint8Array(texStorageSize);\n\t\t\t\tconst chunkSize = 1024;\n\t\t\t\tconst srcCoeffs = elements[2].properties.length / 3;\n\t\t\t\tconst tmpBuf = new Uint8Array(chunkSize * srcCoeffs * 3);\n\t\t\t\tfor(let i = 0; i < result.numSplats; i += chunkSize){\n\t\t\t\t\t\tconst toRead = Math.min(chunkSize, result.numSplats - i);\n\t\t\t\t\t\tawait read(tmpBuf.buffer, toRead * srcCoeffs * 3);\n\t\t\t\t\t\tfor(let j = 0; j < toRead; ++j){\n\t\t\t\t\t\t\t\tfor(let k = 0; k < 15; ++k){\n\t\t\t\t\t\t\t\t\t\tconst tidx = (i + j) * 16 + k;\n\t\t\t\t\t\t\t\t\t\tif (k < srcCoeffs) {\n\t\t\t\t\t\t\t\t\t\t\t\tshData0[tidx] = tmpBuf[(j * 3 + 0) * srcCoeffs + k];\n\t\t\t\t\t\t\t\t\t\t\t\tshData1[tidx] = tmpBuf[(j * 3 + 1) * srcCoeffs + k];\n\t\t\t\t\t\t\t\t\t\t\t\tshData2[tidx] = tmpBuf[(j * 3 + 2) * srcCoeffs + k];\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tshData0[tidx] = 127;\n\t\t\t\t\t\t\t\t\t\t\t\tshData1[tidx] = 127;\n\t\t\t\t\t\t\t\t\t\t\t\tshData2[tidx] = 127;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tresult.shData0 = shData0;\n\t\t\t\tresult.shData1 = shData1;\n\t\t\t\tresult.shData2 = shData2;\n\t\t\t\tresult.shBands = ({\n\t\t\t\t\t\t3: 1,\n\t\t\t\t\t\t8: 2,\n\t\t\t\t\t\t15: 3\n\t\t\t\t})[srcCoeffs];\n\t\t} else {\n\t\t\t\tresult.shBands = 0;\n\t\t}\n\t\treturn result;\n};\nconst readFloatPly = async (streamBuf, elements, comments)=>{\n\t\tconst element = elements[0];\n\t\tconst properties = element.properties;\n\t\tconst numProperties = properties.length;\n\t\tconst storage = properties.map((p)=>p.storage);\n\t\tconst inputSize = properties.reduce((a, p)=>a + p.byteSize, 0);\n\t\tlet vertexIdx = 0;\n\t\tlet floatData;\n\t\tconst checkFloatData = ()=>{\n\t\t\t\tconst buffer = streamBuf.data.buffer;\n\t\t\t\tif (floatData?.buffer !== buffer) {\n\t\t\t\t\t\tfloatData = new Float32Array(buffer, 0, buffer.byteLength / 4);\n\t\t\t\t}\n\t\t};\n\t\tcheckFloatData();\n\t\twhile(vertexIdx < element.count){\n\t\t\t\twhile(streamBuf.remaining < inputSize){\n\t\t\t\t\t\tawait streamBuf.read();\n\t\t\t\t\t\tcheckFloatData();\n\t\t\t\t}\n\t\t\t\tconst toRead = Math.min(element.count - vertexIdx, Math.floor(streamBuf.remaining / inputSize));\n\t\t\t\tfor(let j = 0; j < numProperties; ++j){\n\t\t\t\t\t\tconst s = storage[j];\n\t\t\t\t\t\tfor(let n = 0; n < toRead; ++n){\n\t\t\t\t\t\t\t\ts[n + vertexIdx] = floatData[n * numProperties + j];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tvertexIdx += toRead;\n\t\t\t\tstreamBuf.head += toRead * inputSize;\n\t\t}\n\t\treturn new GSplatData(elements, comments);\n};\nconst readGeneralPly = async (streamBuf, elements, comments)=>{\n\t\tfor(let i = 0; i < elements.length; ++i){\n\t\t\t\tconst element = elements[i];\n\t\t\t\tconst inputSize = element.properties.reduce((a, p)=>a + p.byteSize, 0);\n\t\t\t\tconst propertyParsingFunctions = element.properties.map((p)=>{\n\t\t\t\t\t\tif (p.storage) {\n\t\t\t\t\t\t\t\tswitch(p.type){\n\t\t\t\t\t\t\t\t\t\tcase 'char':\n\t\t\t\t\t\t\t\t\t\t\t\treturn (streamBuf, c)=>{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tp.storage[c] = streamBuf.getInt8();\n\t\t\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\tcase 'uchar':\n\t\t\t\t\t\t\t\t\t\t\t\treturn (streamBuf, c)=>{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tp.storage[c] = streamBuf.getUint8();\n\t\t\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\tcase 'short':\n\t\t\t\t\t\t\t\t\t\t\t\treturn (streamBuf, c)=>{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tp.storage[c] = streamBuf.getInt16();\n\t\t\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\tcase 'ushort':\n\t\t\t\t\t\t\t\t\t\t\t\treturn (streamBuf, c)=>{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tp.storage[c] = streamBuf.getUint16();\n\t\t\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\tcase 'int':\n\t\t\t\t\t\t\t\t\t\t\t\treturn (streamBuf, c)=>{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tp.storage[c] = streamBuf.getInt32();\n\t\t\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\tcase 'uint':\n\t\t\t\t\t\t\t\t\t\t\t\treturn (streamBuf, c)=>{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tp.storage[c] = streamBuf.getUint32();\n\t\t\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\tcase 'float':\n\t\t\t\t\t\t\t\t\t\t\t\treturn (streamBuf, c)=>{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tp.storage[c] = streamBuf.getFloat32();\n\t\t\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\tcase 'double':\n\t\t\t\t\t\t\t\t\t\t\t\treturn (streamBuf, c)=>{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tp.storage[c] = streamBuf.getFloat64();\n\t\t\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\t\t\tthrow new Error(`Unsupported property data type '${p.type}' in ply header`);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn (streamBuf)=>{\n\t\t\t\t\t\t\t\t\t\tstreamBuf.head += p.byteSize;\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tlet c = 0;\n\t\t\t\twhile(c < element.count){\n\t\t\t\t\t\twhile(streamBuf.remaining < inputSize){\n\t\t\t\t\t\t\t\tawait streamBuf.read();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst toRead = Math.min(element.count - c, Math.floor(streamBuf.remaining / inputSize));\n\t\t\t\t\t\tfor(let n = 0; n < toRead; ++n){\n\t\t\t\t\t\t\t\tfor(let j = 0; j < element.properties.length; ++j){\n\t\t\t\t\t\t\t\t\t\tpropertyParsingFunctions[j](streamBuf, c);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tc++;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\treturn new GSplatData(elements, comments);\n};\nconst readPly = async (reader, propertyFilter = null, progressFunc = null)=>{\n\t\tconst find = (buf, search)=>{\n\t\t\t\tconst endIndex = buf.length - search.length;\n\t\t\t\tlet i, j;\n\t\t\t\tfor(i = 0; i <= endIndex; ++i){\n\t\t\t\t\t\tfor(j = 0; j < search.length; ++j){\n\t\t\t\t\t\t\t\tif (buf[i + j] !== search[j]) {\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (j === search.length) {\n\t\t\t\t\t\t\t\treturn i;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn -1;\n\t\t};\n\t\tconst startsWith = (a, b)=>{\n\t\t\t\tif (a.length < b.length) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < b.length; ++i){\n\t\t\t\t\t\tif (a[i] !== b[i]) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t};\n\t\tconst streamBuf = new StreamBuf(reader, progressFunc);\n\t\tlet headerLength;\n\t\twhile(true){\n\t\t\t\tawait streamBuf.read();\n\t\t\t\tif (streamBuf.tail >= magicBytes.length && !startsWith(streamBuf.data, magicBytes)) {\n\t\t\t\t\t\tthrow new Error('Invalid ply header');\n\t\t\t\t}\n\t\t\t\theaderLength = find(streamBuf.data, endHeaderBytes);\n\t\t\t\tif (headerLength !== -1) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t}\n\t\tconst lines = new TextDecoder('ascii').decode(streamBuf.data.subarray(0, headerLength)).split('\\n');\n\t\tconst { elements, format, comments } = parseHeader(lines);\n\t\tif (format !== 'binary_little_endian') {\n\t\t\t\tthrow new Error('Unsupported ply format');\n\t\t}\n\t\tstreamBuf.head = headerLength + endHeaderBytes.length;\n\t\tstreamBuf.compact();\n\t\tconst readData = async ()=>{\n\t\t\t\tif (isCompressedPly(elements)) {\n\t\t\t\t\t\treturn await readCompressedPly(streamBuf, elements, comments);\n\t\t\t\t}\n\t\t\t\telements.forEach((e)=>{\n\t\t\t\t\t\te.properties.forEach((p)=>{\n\t\t\t\t\t\t\t\tconst storageType = dataTypeMap.get(p.type);\n\t\t\t\t\t\t\t\tif (storageType) {\n\t\t\t\t\t\t\t\t\t\tconst storage = !propertyFilter || propertyFilter(p.name) ? new storageType(e.count) : null;\n\t\t\t\t\t\t\t\t\t\tp.storage = storage;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tif (isFloatPly(elements)) {\n\t\t\t\t\t\treturn await readFloatPly(streamBuf, elements, comments);\n\t\t\t\t}\n\t\t\t\treturn await readGeneralPly(streamBuf, elements, comments);\n\t\t};\n\t\treturn await readData();\n};\nconst defaultElementFilter = (val)=>true;\nclass PlyParser {\n\t\tconstructor(app, maxRetries){\n\t\t\t\tthis.app = app;\n\t\t\t\tthis.maxRetries = maxRetries;\n\t\t}\n\t\tasync load(url, callback, asset) {\n\t\t\t\ttry {\n\t\t\t\t\t\tconst response = await (asset.file?.contents ?? fetch(url.load));\n\t\t\t\t\t\tif (!response || !response.body) {\n\t\t\t\t\t\t\t\tcallback('Error loading resource', null);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst totalLength = parseInt(response.headers.get('content-length') ?? '0', 10);\n\t\t\t\t\t\t\t\tlet totalReceived = 0;\n\t\t\t\t\t\t\t\tconst data = await readPly(response.body.getReader(), asset.data.elementFilter ?? defaultElementFilter, (bytes)=>{\n\t\t\t\t\t\t\t\t\t\ttotalReceived += bytes;\n\t\t\t\t\t\t\t\t\t\tif (asset) {\n\t\t\t\t\t\t\t\t\t\t\t\tasset.fire('progress', totalReceived, totalLength);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tasset.fire('load:data', data);\n\t\t\t\t\t\t\t\tif (!data.isCompressed) {\n\t\t\t\t\t\t\t\t\t\tif (asset.data.reorder ?? true) {\n\t\t\t\t\t\t\t\t\t\t\t\tdata.reorderData();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst resource = data.isCompressed && !asset.data.decompress ? new GSplatCompressedResource(this.app.graphicsDevice, data) : new GSplatResource(this.app.graphicsDevice, data.isCompressed ? data.decompress() : data);\n\t\t\t\t\t\t\t\tcallback(null, resource);\n\t\t\t\t\t\t}\n\t\t\t\t} catch (err) {\n\t\t\t\t\t\tcallback(err, null);\n\t\t\t\t}\n\t\t}\n\t\topen(url, data) {\n\t\t\t\treturn data;\n\t\t}\n}\n\nconst combineProgress = (target, assets)=>{\n\t\tconst map = new Map();\n\t\tconst fire = ()=>{\n\t\t\t\tlet loaded = 0;\n\t\t\t\tlet total = 0;\n\t\t\t\tmap.forEach((value)=>{\n\t\t\t\t\t\tloaded += value.loaded;\n\t\t\t\t\t\ttotal += value.total;\n\t\t\t\t});\n\t\t\t\ttarget.fire('progress', loaded, total);\n\t\t};\n\t\tassets.forEach((asset)=>{\n\t\t\t\tconst progress = (loaded, total)=>{\n\t\t\t\t\t\tmap.set(asset, {\n\t\t\t\t\t\t\t\tloaded,\n\t\t\t\t\t\t\t\ttotal\n\t\t\t\t\t\t});\n\t\t\t\t\t\tfire();\n\t\t\t\t};\n\t\t\t\tconst done = ()=>{\n\t\t\t\t\t\tasset.off('progress', progress);\n\t\t\t\t\t\tasset.off('load', done);\n\t\t\t\t\t\tasset.off('error', done);\n\t\t\t\t};\n\t\t\t\tasset.on('progress', progress);\n\t\t\t\tasset.on('load', done);\n\t\t\t\tasset.on('error', done);\n\t\t});\n};\nconst upgradeMeta = (meta)=>{\n\t\tconst result = {\n\t\t\t\tversion: 1,\n\t\t\t\tcount: meta.means.shape[0],\n\t\t\t\tmeans: {\n\t\t\t\t\t\tmins: meta.means.mins,\n\t\t\t\t\t\tmaxs: meta.means.maxs,\n\t\t\t\t\t\tfiles: meta.means.files\n\t\t\t\t},\n\t\t\t\tscales: {\n\t\t\t\t\t\tmins: meta.scales.mins,\n\t\t\t\t\t\tmaxs: meta.scales.maxs,\n\t\t\t\t\t\tfiles: meta.scales.files\n\t\t\t\t},\n\t\t\t\tquats: {\n\t\t\t\t\t\tfiles: meta.quats.files\n\t\t\t\t},\n\t\t\t\tsh0: {\n\t\t\t\t\t\tmins: meta.sh0.mins,\n\t\t\t\t\t\tmaxs: meta.sh0.maxs,\n\t\t\t\t\t\tfiles: meta.sh0.files\n\t\t\t\t}\n\t\t};\n\t\tif (meta.shN) {\n\t\t\t\tresult.shN = {\n\t\t\t\t\t\tmins: meta.shN.mins,\n\t\t\t\t\t\tmaxs: meta.shN.maxs,\n\t\t\t\t\t\tfiles: meta.shN.files\n\t\t\t\t};\n\t\t}\n\t\treturn result;\n};\nclass SogsParser {\n\t\tconstructor(app, maxRetries){\n\t\t\t\tthis.app = app;\n\t\t\t\tthis.maxRetries = maxRetries;\n\t\t}\n\t\tasync loadTextures(url, callback, asset, meta) {\n\t\t\t\tif (meta.version !== 2) {\n\t\t\t\t\t\tmeta = upgradeMeta(meta);\n\t\t\t\t}\n\t\t\t\tconst { assets } = this.app;\n\t\t\t\tconst subs = [\n\t\t\t\t\t\t'means',\n\t\t\t\t\t\t'quats',\n\t\t\t\t\t\t'scales',\n\t\t\t\t\t\t'sh0',\n\t\t\t\t\t\t'shN'\n\t\t\t\t];\n\t\t\t\tconst textures = {};\n\t\t\t\tconst promises = [];\n\t\t\t\tsubs.forEach((sub)=>{\n\t\t\t\t\t\tconst files = meta[sub]?.files ?? [];\n\t\t\t\t\t\ttextures[sub] = files.map((filename)=>{\n\t\t\t\t\t\t\t\tconst texture = new Asset(filename, 'texture', {\n\t\t\t\t\t\t\t\t\t\turl: asset.options?.mapUrl?.(filename) ?? new URL(filename, new URL(url.load, window.location.href).toString()).toString(),\n\t\t\t\t\t\t\t\t\t\tfilename\n\t\t\t\t\t\t\t\t}, {\n\t\t\t\t\t\t\t\t\t\tmipmaps: false\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tconst promise = new Promise((resolve, reject)=>{\n\t\t\t\t\t\t\t\t\t\ttexture.on('load', ()=>resolve(null));\n\t\t\t\t\t\t\t\t\t\ttexture.on('error', (err)=>reject(err));\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tassets.add(texture);\n\t\t\t\t\t\t\t\tpromises.push(promise);\n\t\t\t\t\t\t\t\treturn texture;\n\t\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tconst textureAssets = subs.map((sub)=>textures[sub]).flat();\n\t\t\t\tasset.once('unload', ()=>{\n\t\t\t\t\t\ttextureAssets.forEach((t)=>{\n\t\t\t\t\t\t\t\tassets.remove(t);\n\t\t\t\t\t\t\t\tt.unload();\n\t\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tcombineProgress(asset, textureAssets);\n\t\t\t\ttextureAssets.forEach((t)=>assets.load(t));\n\t\t\t\tawait Promise.allSettled(promises);\n\t\t\t\tconst data = new GSplatSogsData();\n\t\t\t\tdata.meta = meta;\n\t\t\t\tdata.numSplats = meta.count;\n\t\t\t\tdata.means_l = textures.means[0].resource;\n\t\t\t\tdata.means_u = textures.means[1].resource;\n\t\t\t\tdata.quats = textures.quats[0].resource;\n\t\t\t\tdata.scales = textures.scales[0].resource;\n\t\t\t\tdata.sh0 = textures.sh0[0].resource;\n\t\t\t\tdata.sh_centroids = textures.shN?.[0]?.resource;\n\t\t\t\tdata.sh_labels = textures.shN?.[1]?.resource;\n\t\t\t\tconst decompress = asset.data?.decompress;\n\t\t\t\tif (!decompress) {\n\t\t\t\t\t\tif (!this.app?.graphicsDevice || this.app?.graphicsDevice?._destroyed) return;\n\t\t\t\t\t\tawait data.prepareGpuData();\n\t\t\t\t}\n\t\t\t\tif (!this.app?.graphicsDevice || this.app?.graphicsDevice?._destroyed) return;\n\t\t\t\tconst resource = decompress ? new GSplatResource(this.app.graphicsDevice, await data.decompress()) : new GSplatSogsResource(this.app.graphicsDevice, data);\n\t\t\t\tcallback(null, resource);\n\t\t}\n\t\tload(url, callback, asset) {\n\t\t\t\tif (asset.data?.means) {\n\t\t\t\t\t\tthis.loadTextures(url, callback, asset, asset.data);\n\t\t\t\t} else {\n\t\t\t\t\t\tif (typeof url === 'string') {\n\t\t\t\t\t\t\t\turl = {\n\t\t\t\t\t\t\t\t\t\tload: url,\n\t\t\t\t\t\t\t\t\t\toriginal: url\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst options = {\n\t\t\t\t\t\t\t\tretry: this.maxRetries > 0,\n\t\t\t\t\t\t\t\tmaxRetries: this.maxRetries,\n\t\t\t\t\t\t\t\tresponseType: Http.ResponseType.JSON\n\t\t\t\t\t\t};\n\t\t\t\t\t\thttp.get(url.load, options, (err, meta)=>{\n\t\t\t\t\t\t\t\tif (!err) {\n\t\t\t\t\t\t\t\t\t\tthis.loadTextures(url, callback, asset, meta);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tcallback(`Error loading gsplat meta: ${url.original} [${err}]`);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t}\n}\n\nconst parseZipArchive = (data)=>{\n\t\tconst dataView = new DataView(data);\n\t\tconst u16 = (offset)=>dataView.getUint16(offset, true);\n\t\tconst u32 = (offset)=>dataView.getUint32(offset, true);\n\t\tconst extractEocd = (offset)=>{\n\t\t\t\treturn {\n\t\t\t\t\t\tmagic: u32(offset),\n\t\t\t\t\t\tnumFiles: u16(offset + 8),\n\t\t\t\t\t\tcdSizeBytes: u32(offset + 12),\n\t\t\t\t\t\tcdOffsetBytes: u32(offset + 16)\n\t\t\t\t};\n\t\t};\n\t\tconst extractCdr = (offset)=>{\n\t\t\t\tconst filenameLength = u16(offset + 28);\n\t\t\t\tconst extraFieldLength = u16(offset + 30);\n\t\t\t\tconst fileCommentLength = u16(offset + 32);\n\t\t\t\treturn {\n\t\t\t\t\t\tmagic: u32(offset),\n\t\t\t\t\t\tcompressionMethod: u16(offset + 10),\n\t\t\t\t\t\tcompressedSizeBytes: u32(offset + 20),\n\t\t\t\t\t\tuncompressedSizeBytes: u32(offset + 24),\n\t\t\t\t\t\tlfhOffsetBytes: u32(offset + 42),\n\t\t\t\t\t\tfilename: new TextDecoder().decode(new Uint8Array(data, offset + 46, filenameLength)),\n\t\t\t\t\t\trecordSizeBytes: 46 + filenameLength + extraFieldLength + fileCommentLength\n\t\t\t\t};\n\t\t};\n\t\tconst extractLfh = (offset)=>{\n\t\t\t\tconst filenameLength = u16(offset + 26);\n\t\t\t\tconst extraLength = u16(offset + 28);\n\t\t\t\treturn {\n\t\t\t\t\t\tmagic: u32(offset),\n\t\t\t\t\t\toffsetBytes: offset + 30 + filenameLength + extraLength\n\t\t\t\t};\n\t\t};\n\t\tconst eocd = extractEocd(dataView.byteLength - 22);\n\t\tif (eocd.magic !== 0x06054b50) {\n\t\t\t\tthrow new Error('Invalid zip file: EOCDR not found');\n\t\t}\n\t\tif (eocd.cdOffsetBytes === 0xffffffff || eocd.cdSizeBytes === 0xffffffff) {\n\t\t\t\tthrow new Error('Invalid zip file: Zip64 not supported');\n\t\t}\n\t\tconst result = [];\n\t\tlet offset = eocd.cdOffsetBytes;\n\t\tfor(let i = 0; i < eocd.numFiles; i++){\n\t\t\t\tconst cdr = extractCdr(offset);\n\t\t\t\tif (cdr.magic !== 0x02014b50) {\n\t\t\t\t\t\tthrow new Error('Invalid zip file: CDR not found');\n\t\t\t\t}\n\t\t\t\tconst lfh = extractLfh(cdr.lfhOffsetBytes);\n\t\t\t\tif (lfh.magic !== 0x04034b50) {\n\t\t\t\t\t\tthrow new Error('Invalid zip file: LFH not found');\n\t\t\t\t}\n\t\t\t\tresult.push({\n\t\t\t\t\t\tfilename: cdr.filename,\n\t\t\t\t\t\tcompression: {\n\t\t\t\t\t\t\t\t0: 'none',\n\t\t\t\t\t\t\t\t8: 'deflate'\n\t\t\t\t\t\t}[cdr.compressionMethod] ?? 'unknown',\n\t\t\t\t\t\tdata: new Uint8Array(data, lfh.offsetBytes, cdr.compressedSizeBytes)\n\t\t\t\t});\n\t\t\t\toffset += cdr.recordSizeBytes;\n\t\t}\n\t\treturn result;\n};\nconst inflate = async (compressed)=>{\n\t\tconst ds = new DecompressionStream('deflate-raw');\n\t\tconst out = new Blob([\n\t\t\t\tcompressed\n\t\t]).stream().pipeThrough(ds);\n\t\tconst ab = await new Response(out).arrayBuffer();\n\t\treturn new Uint8Array(ab);\n};\nconst downloadArrayBuffer = async (url, asset)=>{\n\t\tconst response = await (asset.file?.contents ?? fetch(url.load));\n\t\tif (!response) {\n\t\t\t\tthrow new Error('Error loading resource');\n\t\t}\n\t\tif (response instanceof Response) {\n\t\t\t\tif (!response.ok) {\n\t\t\t\t\t\tthrow new Error(`Error loading resource: ${response.status} ${response.statusText}`);\n\t\t\t\t}\n\t\t\t\tconst totalLength = parseInt(response.headers.get('content-length') ?? '0', 10);\n\t\t\t\tif (!response.body || !response.body.getReader) {\n\t\t\t\t\t\tconst buf = await response.arrayBuffer();\n\t\t\t\t\t\tasset.fire('progress', buf.byteLength, totalLength);\n\t\t\t\t\t\treturn buf;\n\t\t\t\t}\n\t\t\t\tconst reader = response.body.getReader();\n\t\t\t\tconst chunks = [];\n\t\t\t\tlet totalReceived = 0;\n\t\t\t\ttry {\n\t\t\t\t\t\twhile(true){\n\t\t\t\t\t\t\t\tconst { done, value } = await reader.read();\n\t\t\t\t\t\t\t\tif (done) {\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tchunks.push(value);\n\t\t\t\t\t\t\t\ttotalReceived += value.byteLength;\n\t\t\t\t\t\t\t\tasset.fire('progress', totalReceived, totalLength);\n\t\t\t\t\t\t}\n\t\t\t\t} finally{\n\t\t\t\t\t\treader.releaseLock();\n\t\t\t\t}\n\t\t\t\treturn new Blob(chunks).arrayBuffer();\n\t\t}\n\t\treturn response;\n};\nclass SogBundleParser {\n\t\tconstructor(app, maxRetries = 3){\n\t\t\t\tthis.app = app;\n\t\t\t\tthis.maxRetries = maxRetries;\n\t\t}\n\t\tasync load(url, callback, asset) {\n\t\t\t\ttry {\n\t\t\t\t\t\tconst arrayBuffer = await downloadArrayBuffer(url, asset);\n\t\t\t\t\t\tconst files = parseZipArchive(arrayBuffer);\n\t\t\t\t\t\tfor (const file of files){\n\t\t\t\t\t\t\t\tif (file.compression === 'deflate') {\n\t\t\t\t\t\t\t\t\t\tfile.data = await inflate(file.data);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst metaFile = files.find((f)=>f.filename === 'meta.json');\n\t\t\t\t\t\tif (!metaFile) {\n\t\t\t\t\t\t\t\tcallback('Error: meta.json not found');\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlet meta;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tmeta = JSON.parse(new TextDecoder().decode(metaFile.data));\n\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\t\tcallback(`Error parsing meta.json: ${err}`);\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst filenames = [\n\t\t\t\t\t\t\t\t'means',\n\t\t\t\t\t\t\t\t'scales',\n\t\t\t\t\t\t\t\t'quats',\n\t\t\t\t\t\t\t\t'sh0',\n\t\t\t\t\t\t\t\t'shN'\n\t\t\t\t\t\t].map((key)=>meta[key]?.files ?? []).flat();\n\t\t\t\t\t\tconst textures = {};\n\t\t\t\t\t\tconst promises = [];\n\t\t\t\t\t\tfor (const filename of filenames){\n\t\t\t\t\t\t\t\tconst file = files.find((f)=>f.filename === filename);\n\t\t\t\t\t\t\t\tlet texture;\n\t\t\t\t\t\t\t\tif (file) {\n\t\t\t\t\t\t\t\t\t\ttexture = new Asset(filename, 'texture', {\n\t\t\t\t\t\t\t\t\t\t\t\turl: `${url.load}/${filename}`,\n\t\t\t\t\t\t\t\t\t\t\t\tfilename,\n\t\t\t\t\t\t\t\t\t\t\t\tcontents: file.data\n\t\t\t\t\t\t\t\t\t\t}, {\n\t\t\t\t\t\t\t\t\t\t\t\tmipmaps: false\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tconst url = new URL(filename, new URL(filename, window.location.href).toString()).toString();\n\t\t\t\t\t\t\t\t\t\ttexture = new Asset(filename, 'texture', {\n\t\t\t\t\t\t\t\t\t\t\t\turl,\n\t\t\t\t\t\t\t\t\t\t\t\tfilename\n\t\t\t\t\t\t\t\t\t\t}, {\n\t\t\t\t\t\t\t\t\t\t\t\tmipmaps: false\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst promise = new Promise((resolve, reject)=>{\n\t\t\t\t\t\t\t\t\t\ttexture.on('load', ()=>resolve(null));\n\t\t\t\t\t\t\t\t\t\ttexture.on('error', (err)=>reject(err));\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tthis.app.assets.add(texture);\n\t\t\t\t\t\t\t\ttextures[filename] = texture;\n\t\t\t\t\t\t\t\tpromises.push(promise);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tObject.values(textures).forEach((t)=>this.app.assets.load(t));\n\t\t\t\t\t\tawait Promise.allSettled(promises);\n\t\t\t\t\t\tconst { assets } = this.app;\n\t\t\t\t\t\tasset.once('unload', ()=>{\n\t\t\t\t\t\t\t\tObject.values(textures).forEach((t)=>{\n\t\t\t\t\t\t\t\t\t\tassets.remove(t);\n\t\t\t\t\t\t\t\t\t\tt.unload();\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t\t\tconst data = new GSplatSogsData();\n\t\t\t\t\t\tdata.meta = meta;\n\t\t\t\t\t\tdata.numSplats = meta.count;\n\t\t\t\t\t\tdata.means_l = textures[meta.means.files[0]].resource;\n\t\t\t\t\t\tdata.means_u = textures[meta.means.files[1]].resource;\n\t\t\t\t\t\tdata.quats = textures[meta.quats.files[0]].resource;\n\t\t\t\t\t\tdata.scales = textures[meta.scales.files[0]].resource;\n\t\t\t\t\t\tdata.sh0 = textures[meta.sh0.files[0]].resource;\n\t\t\t\t\t\tdata.sh_centroids = textures[meta.shN?.files[0]]?.resource;\n\t\t\t\t\t\tdata.sh_labels = textures[meta.shN?.files[1]]?.resource;\n\t\t\t\t\t\tconst decompress = asset.data?.decompress;\n\t\t\t\t\t\tif (!decompress) {\n\t\t\t\t\t\t\t\tawait data.prepareGpuData();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst resource = decompress ? new GSplatResource(this.app.graphicsDevice, await data.decompress()) : new GSplatSogsResource(this.app.graphicsDevice, data);\n\t\t\t\t\t\tcallback(null, resource);\n\t\t\t\t} catch (err) {\n\t\t\t\t\t\tcallback(err);\n\t\t\t\t}\n\t\t}\n}\n\nclass GSplatOctreeParser {\n\t\tconstructor(app, maxRetries){\n\t\t\t\tthis.app = app;\n\t\t\t\tthis.maxRetries = maxRetries;\n\t\t}\n\t\tload(url, callback, asset) {\n\t\t\t\tif (typeof url === 'string') {\n\t\t\t\t\t\turl = {\n\t\t\t\t\t\t\t\tload: url,\n\t\t\t\t\t\t\t\toriginal: url\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst options = {\n\t\t\t\t\t\tretry: this.maxRetries > 0,\n\t\t\t\t\t\tmaxRetries: this.maxRetries,\n\t\t\t\t\t\tresponseType: Http.ResponseType.JSON\n\t\t\t\t};\n\t\t\t\thttp.get(url.load, options, (err, data)=>{\n\t\t\t\t\t\tif (!err) {\n\t\t\t\t\t\t\t\tconst resource = new GSplatOctreeResource(asset.file.url, data);\n\t\t\t\t\t\t\t\tcallback(null, resource);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcallback(`Error loading gsplat octree: ${url.original} [${err}]`);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n}\n\nclass GSplatHandler extends ResourceHandler {\n\t\tconstructor(app){\n\t\t\t\tsuper(app, 'gsplat');\n\t\t\t\tthis.parsers = {\n\t\t\t\t\t\tply: new PlyParser(app, 3),\n\t\t\t\t\t\tsog: new SogBundleParser(app),\n\t\t\t\t\t\tjson: new SogsParser(app, 3),\n\t\t\t\t\t\toctree: new GSplatOctreeParser(app, 3)\n\t\t\t\t};\n\t\t}\n\t\t_getUrlWithoutParams(url) {\n\t\t\t\treturn url.indexOf('?') >= 0 ? url.split('?')[0] : url;\n\t\t}\n\t\t_getParser(url) {\n\t\t\t\tconst basename = path.getBasename(this._getUrlWithoutParams(url)).toLowerCase();\n\t\t\t\tif (basename === 'lod-meta.json') {\n\t\t\t\t\t\treturn this.parsers.octree;\n\t\t\t\t}\n\t\t\t\tconst ext = path.getExtension(basename).replace('.', '');\n\t\t\t\treturn this.parsers[ext] || this.parsers.ply;\n\t\t}\n\t\tload(url, callback, asset) {\n\t\t\t\tif (typeof url === 'string') {\n\t\t\t\t\t\turl = {\n\t\t\t\t\t\t\t\tload: url,\n\t\t\t\t\t\t\t\toriginal: url\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tthis._getParser(url.original).load(url, callback, asset);\n\t\t}\n\t\topen(url, data, asset) {\n\t\t\t\treturn data;\n\t\t}\n}\n\nclass CompressUtils {\n\t\tstatic setCompressedPRS(entity, data, compressed) {\n\t\t\t\tconst a = compressed.singleVecs;\n\t\t\t\tlet b, i;\n\t\t\t\tconst v = data.___1;\n\t\t\t\tif (!v) {\n\t\t\t\t\t\tb = compressed.tripleVecs;\n\t\t\t\t\t\ti = data.___2;\n\t\t\t\t}\n\t\t\t\tlet n = v ? v[0] : b[i];\n\t\t\t\tentity.setLocalPosition(a[n], a[n + 1], a[n + 2]);\n\t\t\t\tn = v ? v[1] : b[i + 1];\n\t\t\t\tentity.setLocalEulerAngles(a[n], a[n + 1], a[n + 2]);\n\t\t\t\tn = v ? v[2] : b[i + 2];\n\t\t\t\tentity.setLocalScale(a[n], a[n + 1], a[n + 2]);\n\t\t}\n\t\tstatic oneCharToKey(s, data) {\n\t\t\t\tconst i = s.charCodeAt(0) - data.fieldFirstCode;\n\t\t\t\treturn data.fieldArray[i];\n\t\t}\n\t\tstatic multCharToKey(s, data) {\n\t\t\t\tlet ind = 0;\n\t\t\t\tfor(let i = 0; i < s.length; i++){\n\t\t\t\t\t\tind = ind * data.fieldCodeBase + s.charCodeAt(i) - data.fieldFirstCode;\n\t\t\t\t}\n\t\t\t\treturn data.fieldArray[ind];\n\t\t}\n}\n\nclass Decompress {\n\t\tconstructor(node, data){\n\t\t\t\tthis._node = node;\n\t\t\t\tthis._data = data;\n\t\t}\n\t\trun() {\n\t\t\t\tconst type = Object.prototype.toString.call(this._node);\n\t\t\t\tif (type === '[object Object]') {\n\t\t\t\t\t\tthis._handleMap();\n\t\t\t\t} else if (type === '[object Array]') {\n\t\t\t\t\t\tthis._handleArray();\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._result = this._node;\n\t\t\t\t}\n\t\t\t\treturn this._result;\n\t\t}\n\t\t_handleMap() {\n\t\t\t\tthis._result = {};\n\t\t\t\tconst a = Object.keys(this._node);\n\t\t\t\ta.forEach(this._handleKey, this);\n\t\t}\n\t\t_handleKey(origKey) {\n\t\t\t\tlet newKey = origKey;\n\t\t\t\tconst len = origKey.length;\n\t\t\t\tif (len === 1) {\n\t\t\t\t\t\tnewKey = CompressUtils.oneCharToKey(origKey, this._data);\n\t\t\t\t} else if (len === 2) {\n\t\t\t\t\t\tnewKey = CompressUtils.multCharToKey(origKey, this._data);\n\t\t\t\t}\n\t\t\t\tthis._result[newKey] = new Decompress(this._node[origKey], this._data).run();\n\t\t}\n\t\t_handleArray() {\n\t\t\t\tthis._result = [];\n\t\t\t\tthis._node.forEach(this._handleArElt, this);\n\t\t}\n\t\t_handleArElt(elt) {\n\t\t\t\tconst v = new Decompress(elt, this._data).run();\n\t\t\t\tthis._result.push(v);\n\t\t}\n}\n\nclass SceneParser {\n\t\tconstructor(app, isTemplate){\n\t\t\t\tthis._app = app;\n\t\t\t\tthis._isTemplate = isTemplate;\n\t\t}\n\t\tparse(data) {\n\t\t\t\tconst entities = {};\n\t\t\t\tlet parent = null;\n\t\t\t\tconst compressed = data.compressedFormat;\n\t\t\t\tif (compressed && !data.entDecompressed) {\n\t\t\t\t\t\tdata.entDecompressed = true;\n\t\t\t\t\t\tdata.entities = new Decompress(data.entities, compressed).run();\n\t\t\t\t}\n\t\t\t\tfor(const id in data.entities){\n\t\t\t\t\t\tconst curData = data.entities[id];\n\t\t\t\t\t\tconst curEnt = this._createEntity(curData, compressed);\n\t\t\t\t\t\tentities[id] = curEnt;\n\t\t\t\t\t\tif (curData.parent === null) {\n\t\t\t\t\t\t\t\tparent = curEnt;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor(const id in data.entities){\n\t\t\t\t\t\tconst curEnt = entities[id];\n\t\t\t\t\t\tconst children = data.entities[id].children;\n\t\t\t\t\t\tconst len = children.length;\n\t\t\t\t\t\tfor(let i = 0; i < len; i++){\n\t\t\t\t\t\t\t\tconst childEnt = entities[children[i]];\n\t\t\t\t\t\t\t\tif (childEnt) {\n\t\t\t\t\t\t\t\t\t\tcurEnt.addChild(childEnt);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._openComponentData(parent, data.entities);\n\t\t\t\treturn parent;\n\t\t}\n\t\t_createEntity(data, compressed) {\n\t\t\t\tconst entity = new Entity(data.name, this._app);\n\t\t\t\tentity.setGuid(data.resource_id);\n\t\t\t\tthis._setPosRotScale(entity, data, compressed);\n\t\t\t\tentity._enabled = data.enabled ?? true;\n\t\t\t\tif (this._isTemplate) {\n\t\t\t\t\t\tentity._template = true;\n\t\t\t\t} else {\n\t\t\t\t\t\tentity._enabledInHierarchy = entity._enabled;\n\t\t\t\t}\n\t\t\t\tentity.template = data.template;\n\t\t\t\tif (data.tags) {\n\t\t\t\t\t\tfor(let i = 0; i < data.tags.length; i++){\n\t\t\t\t\t\t\t\tentity.tags.add(data.tags[i]);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn entity;\n\t\t}\n\t\t_setPosRotScale(entity, data, compressed) {\n\t\t\t\tif (compressed) {\n\t\t\t\t\t\tCompressUtils.setCompressedPRS(entity, data, compressed);\n\t\t\t\t} else {\n\t\t\t\t\t\tconst p = data.position;\n\t\t\t\t\t\tconst r = data.rotation;\n\t\t\t\t\t\tconst s = data.scale;\n\t\t\t\t\t\tentity.setLocalPosition(p[0], p[1], p[2]);\n\t\t\t\t\t\tentity.setLocalEulerAngles(r[0], r[1], r[2]);\n\t\t\t\t\t\tentity.setLocalScale(s[0], s[1], s[2]);\n\t\t\t\t}\n\t\t}\n\t\t_openComponentData(entity, entities) {\n\t\t\t\tconst systemsList = this._app.systems.list;\n\t\t\t\tlet len = systemsList.length;\n\t\t\t\tconst entityData = entities[entity.getGuid()];\n\t\t\t\tfor(let i = 0; i < len; i++){\n\t\t\t\t\t\tconst system = systemsList[i];\n\t\t\t\t\t\tconst componentData = entityData.components[system.id];\n\t\t\t\t\t\tif (componentData) {\n\t\t\t\t\t\t\t\tsystem.addComponent(entity, componentData);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tlen = entityData.children.length;\n\t\t\t\tconst children = entity._children;\n\t\t\t\tfor(let i = 0; i < len; i++){\n\t\t\t\t\t\tif (children[i]) {\n\t\t\t\t\t\t\t\tchildren[i] = this._openComponentData(children[i], entities);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn entity;\n\t\t}\n}\n\nclass SceneUtils {\n\t\tstatic load(url, maxRetries, callback) {\n\t\t\t\tif (typeof url === 'string') {\n\t\t\t\t\t\turl = {\n\t\t\t\t\t\t\t\tload: url,\n\t\t\t\t\t\t\t\toriginal: url\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\thttp.get(url.load, {\n\t\t\t\t\t\tretry: maxRetries > 0,\n\t\t\t\t\t\tmaxRetries: maxRetries\n\t\t\t\t}, (err, response)=>{\n\t\t\t\t\t\tif (!err) {\n\t\t\t\t\t\t\t\tcallback(err, response);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tlet errMsg = `Error while loading scene JSON ${url.original}`;\n\t\t\t\t\t\t\t\tif (err.message) {\n\t\t\t\t\t\t\t\t\t\terrMsg += `: ${err.message}`;\n\t\t\t\t\t\t\t\t\t\tif (err.stack) {\n\t\t\t\t\t\t\t\t\t\t\t\terrMsg += `\\n${err.stack}`;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\terrMsg += `: ${err}`;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcallback(errMsg);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n}\n\nclass HierarchyHandler extends ResourceHandler {\n\t\tconstructor(app){\n\t\t\t\tsuper(app, 'hierarchy');\n\t\t}\n\t\tload(url, callback) {\n\t\t\t\tSceneUtils.load(url, this.maxRetries, callback);\n\t\t}\n\t\topen(url, data) {\n\t\t\t\tthis._app.systems.script.preloading = true;\n\t\t\t\tconst parser = new SceneParser(this._app, false);\n\t\t\t\tconst parent = parser.parse(data);\n\t\t\t\tthis._app.systems.script.preloading = false;\n\t\t\t\treturn parent;\n\t\t}\n}\n\nclass HtmlHandler extends ResourceHandler {\n\t\tconstructor(app){\n\t\t\t\tsuper(app, 'html'), this.decoder = null;\n\t\t}\n\t\tload(url, callback) {\n\t\t\t\tif (typeof url === 'string') {\n\t\t\t\t\t\turl = {\n\t\t\t\t\t\t\t\tload: url,\n\t\t\t\t\t\t\t\toriginal: url\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\thttp.get(url.load, {\n\t\t\t\t\t\tretry: this.maxRetries > 0,\n\t\t\t\t\t\tmaxRetries: this.maxRetries\n\t\t\t\t}, (err, response)=>{\n\t\t\t\t\t\tif (!err) {\n\t\t\t\t\t\t\t\tcallback(null, response);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcallback(`Error loading html resource: ${url.original} [${err}]`);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\topenBinary(data) {\n\t\t\t\tthis.decoder ??= new TextDecoder('utf-8');\n\t\t\t\treturn this.decoder.decode(data);\n\t\t}\n}\n\nclass JsonHandler extends ResourceHandler {\n\t\tconstructor(app){\n\t\t\t\tsuper(app, 'json'), this.decoder = null;\n\t\t}\n\t\tload(url, callback) {\n\t\t\t\tif (typeof url === 'string') {\n\t\t\t\t\t\turl = {\n\t\t\t\t\t\t\t\tload: url,\n\t\t\t\t\t\t\t\toriginal: url\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst options = {\n\t\t\t\t\t\tretry: this.maxRetries > 0,\n\t\t\t\t\t\tmaxRetries: this.maxRetries\n\t\t\t\t};\n\t\t\t\tif (url.load.startsWith('blob:')) {\n\t\t\t\t\t\toptions.responseType = Http.ResponseType.JSON;\n\t\t\t\t}\n\t\t\t\thttp.get(url.load, options, (err, response)=>{\n\t\t\t\t\t\tif (!err) {\n\t\t\t\t\t\t\t\tcallback(null, response);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcallback(`Error loading JSON resource: ${url.original} [${err}]`);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\topenBinary(data) {\n\t\t\t\tthis.decoder ??= new TextDecoder('utf-8');\n\t\t\t\treturn JSON.parse(this.decoder.decode(data));\n\t\t}\n}\n\nclass StandardMaterialValidator {\n\t\tconstructor(){\n\t\t\t\tthis.removeInvalid = true;\n\t\t\t\tthis.valid = true;\n\t\t\t\tthis.enumValidators = {\n\t\t\t\t\t\toccludeSpecular: this._createEnumValidator([\n\t\t\t\t\t\t\t\tSPECOCC_NONE,\n\t\t\t\t\t\t\t\tSPECOCC_AO,\n\t\t\t\t\t\t\t\tSPECOCC_GLOSSDEPENDENT\n\t\t\t\t\t\t]),\n\t\t\t\t\t\tcull: this._createEnumValidator([\n\t\t\t\t\t\t\t\tCULLFACE_NONE,\n\t\t\t\t\t\t\t\tCULLFACE_BACK,\n\t\t\t\t\t\t\t\tCULLFACE_FRONT,\n\t\t\t\t\t\t\t\tCULLFACE_FRONTANDBACK\n\t\t\t\t\t\t]),\n\t\t\t\t\t\tblendType: this._createEnumValidator([\n\t\t\t\t\t\t\t\tBLEND_SUBTRACTIVE,\n\t\t\t\t\t\t\t\tBLEND_ADDITIVE,\n\t\t\t\t\t\t\t\tBLEND_NORMAL,\n\t\t\t\t\t\t\t\tBLEND_NONE,\n\t\t\t\t\t\t\t\tBLEND_PREMULTIPLIED,\n\t\t\t\t\t\t\t\tBLEND_MULTIPLICATIVE,\n\t\t\t\t\t\t\t\tBLEND_ADDITIVEALPHA,\n\t\t\t\t\t\t\t\tBLEND_MULTIPLICATIVE2X,\n\t\t\t\t\t\t\t\tBLEND_SCREEN,\n\t\t\t\t\t\t\t\tBLEND_MIN,\n\t\t\t\t\t\t\t\tBLEND_MAX\n\t\t\t\t\t\t]),\n\t\t\t\t\t\tdepthFunc: this._createEnumValidator([\n\t\t\t\t\t\t\t\tFUNC_NEVER,\n\t\t\t\t\t\t\t\tFUNC_LESS,\n\t\t\t\t\t\t\t\tFUNC_EQUAL,\n\t\t\t\t\t\t\t\tFUNC_LESSEQUAL,\n\t\t\t\t\t\t\t\tFUNC_GREATER,\n\t\t\t\t\t\t\t\tFUNC_NOTEQUAL,\n\t\t\t\t\t\t\t\tFUNC_GREATEREQUAL,\n\t\t\t\t\t\t\t\tFUNC_ALWAYS\n\t\t\t\t\t\t])\n\t\t\t\t};\n\t\t}\n\t\tsetInvalid(key, data) {\n\t\t\t\tthis.valid = false;\n\t\t\t\tif (this.removeInvalid) {\n\t\t\t\t\t\tdelete data[key];\n\t\t\t\t}\n\t\t}\n\t\tvalidate(data) {\n\t\t\t\tconst TYPES = standardMaterialParameterTypes;\n\t\t\t\tconst REMOVED = standardMaterialRemovedParameters;\n\t\t\t\tconst pathMapping = data.mappingFormat === 'path';\n\t\t\t\tfor(const key in data){\n\t\t\t\t\t\tconst type = TYPES[key];\n\t\t\t\t\t\tif (!type) {\n\t\t\t\t\t\t\t\tif (REMOVED[key]) {\n\t\t\t\t\t\t\t\t\t\tdelete data[key];\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis.valid = false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (type.startsWith('enum')) {\n\t\t\t\t\t\t\t\tconst enumType = type.split(':')[1];\n\t\t\t\t\t\t\t\tif (this.enumValidators[enumType]) {\n\t\t\t\t\t\t\t\t\t\tif (!this.enumValidators[enumType](data[key])) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.setInvalid(key, data);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (type === 'number') {\n\t\t\t\t\t\t\t\tif (typeof data[key] !== 'number') {\n\t\t\t\t\t\t\t\t\t\tthis.setInvalid(key, data);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (type === 'boolean') {\n\t\t\t\t\t\t\t\tif (typeof data[key] !== 'boolean') {\n\t\t\t\t\t\t\t\t\t\tthis.setInvalid(key, data);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (type === 'string') {\n\t\t\t\t\t\t\t\tif (typeof data[key] !== 'string') {\n\t\t\t\t\t\t\t\t\t\tthis.setInvalid(key, data);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (type === 'vec2') {\n\t\t\t\t\t\t\t\tif (!(data[key] instanceof Array && data[key].length === 2)) {\n\t\t\t\t\t\t\t\t\t\tthis.setInvalid(key, data);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (type === 'rgb') {\n\t\t\t\t\t\t\t\tif (!(data[key] instanceof Array && data[key].length === 3)) {\n\t\t\t\t\t\t\t\t\t\tthis.setInvalid(key, data);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (type === 'texture') {\n\t\t\t\t\t\t\t\tif (!pathMapping) {\n\t\t\t\t\t\t\t\t\t\tif (!(typeof data[key] === 'number' || data[key] === null)) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (!(data[key] instanceof Texture)) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.setInvalid(key, data);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tif (!(typeof data[key] === 'string' || data[key] === null)) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (!(data[key] instanceof Texture)) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.setInvalid(key, data);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (type === 'boundingbox') {\n\t\t\t\t\t\t\t\tif (!(data[key].center && data[key].center instanceof Array && data[key].center.length === 3)) {\n\t\t\t\t\t\t\t\t\t\tthis.setInvalid(key, data);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (!(data[key].halfExtents && data[key].halfExtents instanceof Array && data[key].halfExtents.length === 3)) {\n\t\t\t\t\t\t\t\t\t\tthis.setInvalid(key, data);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (type === 'cubemap') {\n\t\t\t\t\t\t\t\tif (!(typeof data[key] === 'number' || data[key] === null || data[key] === undefined)) {\n\t\t\t\t\t\t\t\t\t\tif (!(data[key] instanceof Texture && data[key].cubemap)) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.setInvalid(key, data);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (type === 'chunks') {\n\t\t\t\t\t\t\t\tconst chunkNames = Object.keys(data[key]);\n\t\t\t\t\t\t\t\tfor(let i = 0; i < chunkNames.length; i++){\n\t\t\t\t\t\t\t\t\t\tif (typeof data[key][chunkNames[i]] !== 'string') {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.setInvalid(chunkNames[i], data[key]);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconsole.error(`Unknown material type: ${type}`);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tdata.validated = true;\n\t\t\t\treturn this.valid;\n\t\t}\n\t\t_createEnumValidator(values) {\n\t\t\t\treturn function(value) {\n\t\t\t\t\t\treturn values.indexOf(value) >= 0;\n\t\t\t\t};\n\t\t}\n}\n\nclass JsonStandardMaterialParser {\n\t\tconstructor(){\n\t\t\t\tthis._validator = null;\n\t\t}\n\t\tparse(input) {\n\t\t\t\tconst migrated = this.migrate(input);\n\t\t\t\tconst validated = this._validate(migrated);\n\t\t\t\tconst material = new StandardMaterial();\n\t\t\t\tthis.initialize(material, validated);\n\t\t\t\treturn material;\n\t\t}\n\t\tinitialize(material, data) {\n\t\t\t\tif (!data.validated) {\n\t\t\t\t\t\tdata = this._validate(data);\n\t\t\t\t}\n\t\t\t\tif (data.chunks) {\n\t\t\t\t\t\tif (data.chunks && Object.keys(data.chunks).length > 0) {\n\t\t\t\t\t\t\t\tconst dstMap = material.shaderChunks.glsl;\n\t\t\t\t\t\t\t\tObject.entries(data.chunks).forEach(([key, value])=>dstMap.set(key, value));\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor(const key in data){\n\t\t\t\t\t\tconst type = standardMaterialParameterTypes[key];\n\t\t\t\t\t\tconst value = data[key];\n\t\t\t\t\t\tif (type === 'vec2') {\n\t\t\t\t\t\t\t\tmaterial[key] = new Vec2(value[0], value[1]);\n\t\t\t\t\t\t} else if (type === 'rgb') {\n\t\t\t\t\t\t\t\tmaterial[key] = new Color(value[0], value[1], value[2]);\n\t\t\t\t\t\t} else if (type === 'texture') {\n\t\t\t\t\t\t\t\tif (value instanceof Texture) {\n\t\t\t\t\t\t\t\t\t\tmaterial[key] = value;\n\t\t\t\t\t\t\t\t} else if (!(material[key] instanceof Texture && typeof value === 'number' && value > 0)) {\n\t\t\t\t\t\t\t\t\t\tmaterial[key] = null;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (type === 'cubemap') {\n\t\t\t\t\t\t\t\tif (value instanceof Texture) {\n\t\t\t\t\t\t\t\t\t\tmaterial[key] = value;\n\t\t\t\t\t\t\t\t} else if (!(material[key] instanceof Texture && typeof value === 'number' && value > 0)) {\n\t\t\t\t\t\t\t\t\t\tmaterial[key] = null;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (key === 'cubeMap' && !value) {\n\t\t\t\t\t\t\t\t\t\tmaterial.prefilteredCubemaps = null;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (type === 'boundingbox') {\n\t\t\t\t\t\t\t\tconst center = new Vec3(value.center[0], value.center[1], value.center[2]);\n\t\t\t\t\t\t\t\tconst halfExtents = new Vec3(value.halfExtents[0], value.halfExtents[1], value.halfExtents[2]);\n\t\t\t\t\t\t\t\tmaterial[key] = new BoundingBox(center, halfExtents);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tmaterial[key] = data[key];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tmaterial.update();\n\t\t}\n\t\tmigrate(data) {\n\t\t\t\tif (data.shader) delete data.shader;\n\t\t\t\tif (data.mapping_format) {\n\t\t\t\t\t\tdata.mappingFormat = data.mapping_format;\n\t\t\t\t\t\tdelete data.mapping_format;\n\t\t\t\t}\n\t\t\t\tlet i;\n\t\t\t\tconst RENAMED_PROPERTIES = [\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t'bumpMapFactor',\n\t\t\t\t\t\t\t\t'bumpiness'\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t'aoUvSet',\n\t\t\t\t\t\t\t\t'aoMapUv'\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t'aoMapVertexColor',\n\t\t\t\t\t\t\t\t'aoVertexColor'\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t'diffuseMapVertexColor',\n\t\t\t\t\t\t\t\t'diffuseVertexColor'\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t'emissiveMapVertexColor',\n\t\t\t\t\t\t\t\t'emissiveVertexColor'\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t'specularMapVertexColor',\n\t\t\t\t\t\t\t\t'specularVertexColor'\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t'metalnessMapVertexColor',\n\t\t\t\t\t\t\t\t'metalnessVertexColor'\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t'opacityMapVertexColor',\n\t\t\t\t\t\t\t\t'opacityVertexColor'\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t'glossMapVertexColor',\n\t\t\t\t\t\t\t\t'glossVertexColor'\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t'lightMapVertexColor',\n\t\t\t\t\t\t\t\t'lightVertexColor'\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t'specularMapTint',\n\t\t\t\t\t\t\t\t'specularTint'\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t'metalnessMapTint',\n\t\t\t\t\t\t\t\t'metalnessTint'\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t'clearCoatGlossiness',\n\t\t\t\t\t\t\t\t'clearCoatGloss'\n\t\t\t\t\t\t]\n\t\t\t\t];\n\t\t\t\tfor(i = 0; i < RENAMED_PROPERTIES.length; i++){\n\t\t\t\t\t\tconst _old = RENAMED_PROPERTIES[i][0];\n\t\t\t\t\t\tconst _new = RENAMED_PROPERTIES[i][1];\n\t\t\t\t\t\tif (data[_old] !== undefined) {\n\t\t\t\t\t\t\t\tif (data[_new] === undefined) {\n\t\t\t\t\t\t\t\t\t\tdata[_new] = data[_old];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tdelete data[_old];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst DEPRECATED_PROPERTIES = [\n\t\t\t\t\t\t'fresnelFactor',\n\t\t\t\t\t\t'shadowSampleType'\n\t\t\t\t];\n\t\t\t\tfor(i = 0; i < DEPRECATED_PROPERTIES.length; i++){\n\t\t\t\t\t\tconst name = DEPRECATED_PROPERTIES[i];\n\t\t\t\t\t\tif (data.hasOwnProperty(name)) {\n\t\t\t\t\t\t\t\tdelete data[name];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn data;\n\t\t}\n\t\t_validate(data) {\n\t\t\t\tif (!data.validated) {\n\t\t\t\t\t\tif (!this._validator) {\n\t\t\t\t\t\t\t\tthis._validator = new StandardMaterialValidator();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._validator.validate(data);\n\t\t\t\t}\n\t\t\t\treturn data;\n\t\t}\n}\n\nconst PLACEHOLDER_MAP = {\n\t\taoMap: 'white',\n\t\taoDetailMap: 'white',\n\t\tdiffuseMap: 'gray',\n\t\tdiffuseDetailMap: 'gray',\n\t\tspecularMap: 'gray',\n\t\tspecularityFactorMap: 'white',\n\t\tmetalnessMap: 'black',\n\t\tglossMap: 'gray',\n\t\tsheenMap: 'black',\n\t\tsheenGlossMap: 'gray',\n\t\tclearCoatMap: 'black',\n\t\tclearCoatGlossMap: 'gray',\n\t\tclearCoatNormalMap: 'normal',\n\t\trefractionMap: 'white',\n\t\temissiveMap: 'gray',\n\t\tnormalMap: 'normal',\n\t\tnormalDetailMap: 'normal',\n\t\theightMap: 'gray',\n\t\topacityMap: 'gray',\n\t\tsphereMap: 'gray',\n\t\tlightMap: 'white',\n\t\tthicknessMap: 'black',\n\t\tiridescenceMap: 'black',\n\t\tiridescenceThicknessMap: 'black',\n\t\tenvAtlas: 'black',\n\t\tanisotropyMap: 'black'\n};\nclass MaterialHandler extends ResourceHandler {\n\t\tconstructor(app){\n\t\t\t\tsuper(app, 'material');\n\t\t\t\tthis._assets = app.assets;\n\t\t\t\tthis._device = app.graphicsDevice;\n\t\t\t\tthis._parser = new JsonStandardMaterialParser();\n\t\t}\n\t\tload(url, callback) {\n\t\t\t\tif (typeof url === 'string') {\n\t\t\t\t\t\turl = {\n\t\t\t\t\t\t\t\tload: url,\n\t\t\t\t\t\t\t\toriginal: url\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\thttp.get(url.load, {\n\t\t\t\t\t\tretry: this.maxRetries > 0,\n\t\t\t\t\t\tmaxRetries: this.maxRetries\n\t\t\t\t}, (err, response)=>{\n\t\t\t\t\t\tif (!err) {\n\t\t\t\t\t\t\t\tif (callback) {\n\t\t\t\t\t\t\t\t\t\tresponse._engine = true;\n\t\t\t\t\t\t\t\t\t\tcallback(null, response);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (callback) {\n\t\t\t\t\t\t\t\t\t\tcallback(`Error loading material: ${url.original} [${err}]`);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\topen(url, data) {\n\t\t\t\tconst material = this._parser.parse(data);\n\t\t\t\tif (data._engine) {\n\t\t\t\t\t\tmaterial._data = data;\n\t\t\t\t\t\tdelete data._engine;\n\t\t\t\t}\n\t\t\t\treturn material;\n\t\t}\n\t\tpatch(asset, assets) {\n\t\t\t\tif (asset.resource._data) {\n\t\t\t\t\t\tasset._data = asset.resource._data;\n\t\t\t\t\t\tdelete asset.resource._data;\n\t\t\t\t}\n\t\t\t\tasset.data.name = asset.name;\n\t\t\t\tasset.resource.name = asset.name;\n\t\t\t\tthis._bindAndAssignAssets(asset, assets);\n\t\t\t\tasset.off('unload', this._onAssetUnload, this);\n\t\t\t\tasset.on('unload', this._onAssetUnload, this);\n\t\t}\n\t\t_onAssetUnload(asset) {\n\t\t\t\tdelete asset.data.parameters;\n\t\t\t\tdelete asset.data.chunks;\n\t\t\t\tdelete asset.data.name;\n\t\t}\n\t\t_assignTexture(parameterName, materialAsset, texture) {\n\t\t\t\tmaterialAsset.resource[parameterName] = texture;\n\t\t}\n\t\t_getPlaceholderTexture(parameterName) {\n\t\t\t\tconst placeholder = PLACEHOLDER_MAP[parameterName];\n\t\t\t\treturn getBuiltInTexture(this._device, placeholder);\n\t\t}\n\t\t_assignPlaceholderTexture(parameterName, materialAsset) {\n\t\t\t\tmaterialAsset.resource[parameterName] = this._getPlaceholderTexture(parameterName);\n\t\t}\n\t\t_onTextureLoad(parameterName, materialAsset, textureAsset) {\n\t\t\t\tthis._assignTexture(parameterName, materialAsset, textureAsset.resource);\n\t\t\t\tmaterialAsset.resource.update();\n\t\t}\n\t\t_onTextureAdd(parameterName, materialAsset, textureAsset) {\n\t\t\t\tthis._assets.load(textureAsset);\n\t\t}\n\t\t_onTextureRemoveOrUnload(parameterName, materialAsset, textureAsset) {\n\t\t\t\tconst material = materialAsset.resource;\n\t\t\t\tif (material) {\n\t\t\t\t\t\tif (materialAsset.resource[parameterName] === textureAsset.resource) {\n\t\t\t\t\t\t\t\tthis._assignPlaceholderTexture(parameterName, materialAsset);\n\t\t\t\t\t\t\t\tmaterial.update();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_assignCubemap(parameterName, materialAsset, textures) {\n\t\t\t\tmaterialAsset.resource[parameterName] = textures[0];\n\t\t\t\tif (parameterName === 'cubeMap') {\n\t\t\t\t\t\tconst prefiltered = textures.slice(1);\n\t\t\t\t\t\tif (prefiltered.every((t)=>t)) {\n\t\t\t\t\t\t\t\tmaterialAsset.resource.prefilteredCubemaps = prefiltered;\n\t\t\t\t\t\t} else if (prefiltered[0]) {\n\t\t\t\t\t\t\t\tmaterialAsset.resource.envAtlas = prefiltered[0];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_onCubemapLoad(parameterName, materialAsset, cubemapAsset) {\n\t\t\t\tthis._assignCubemap(parameterName, materialAsset, cubemapAsset.resources);\n\t\t\t\tthis._parser.initialize(materialAsset.resource, materialAsset.data);\n\t\t}\n\t\t_onCubemapAdd(parameterName, materialAsset, cubemapAsset) {\n\t\t\t\tthis._assets.load(cubemapAsset);\n\t\t}\n\t\t_onCubemapRemoveOrUnload(parameterName, materialAsset, cubemapAsset) {\n\t\t\t\tconst material = materialAsset.resource;\n\t\t\t\tif (materialAsset.data.prefilteredCubeMap128 === cubemapAsset.resources[1]) {\n\t\t\t\t\t\tthis._assignCubemap(parameterName, materialAsset, [\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t]);\n\t\t\t\t\t\tmaterial.update();\n\t\t\t\t}\n\t\t}\n\t\t_bindAndAssignAssets(materialAsset, assets) {\n\t\t\t\tconst data = this._parser.migrate(materialAsset.data);\n\t\t\t\tconst material = materialAsset.resource;\n\t\t\t\tconst pathMapping = data.mappingFormat === 'path';\n\t\t\t\tconst TEXTURES = standardMaterialTextureParameters;\n\t\t\t\tlet i, name, assetReference;\n\t\t\t\tfor(i = 0; i < TEXTURES.length; i++){\n\t\t\t\t\t\tname = TEXTURES[i];\n\t\t\t\t\t\tassetReference = material._assetReferences[name];\n\t\t\t\t\t\tconst dataAssetId = data[name];\n\t\t\t\t\t\tconst materialTexture = material[name];\n\t\t\t\t\t\tconst isPlaceHolderTexture = materialTexture === this._getPlaceholderTexture(name);\n\t\t\t\t\t\tconst dataValidated = data.validated;\n\t\t\t\t\t\tif (dataAssetId && (!materialTexture || !dataValidated || isPlaceHolderTexture)) {\n\t\t\t\t\t\t\t\tif (!assetReference) {\n\t\t\t\t\t\t\t\t\t\tassetReference = new AssetReference(name, materialAsset, assets, {\n\t\t\t\t\t\t\t\t\t\t\t\tload: this._onTextureLoad,\n\t\t\t\t\t\t\t\t\t\t\t\tadd: this._onTextureAdd,\n\t\t\t\t\t\t\t\t\t\t\t\tremove: this._onTextureRemoveOrUnload,\n\t\t\t\t\t\t\t\t\t\t\t\tunload: this._onTextureRemoveOrUnload\n\t\t\t\t\t\t\t\t\t\t}, this);\n\t\t\t\t\t\t\t\t\t\tmaterial._assetReferences[name] = assetReference;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (pathMapping) {\n\t\t\t\t\t\t\t\t\t\tassetReference.url = materialAsset.getAbsoluteUrl(dataAssetId);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tassetReference.id = dataAssetId;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (assetReference.asset) {\n\t\t\t\t\t\t\t\t\t\tif (assetReference.asset.resource) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._assignTexture(name, materialAsset, assetReference.asset.resource);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._assignPlaceholderTexture(name, materialAsset);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tassets.load(assetReference.asset);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (assetReference) {\n\t\t\t\t\t\t\t\t\t\tif (pathMapping) {\n\t\t\t\t\t\t\t\t\t\t\t\tassetReference.url = null;\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tassetReference.id = null;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst CUBEMAPS = standardMaterialCubemapParameters;\n\t\t\t\tfor(i = 0; i < CUBEMAPS.length; i++){\n\t\t\t\t\t\tname = CUBEMAPS[i];\n\t\t\t\t\t\tassetReference = material._assetReferences[name];\n\t\t\t\t\t\tif (data[name] && !materialAsset.data.prefilteredCubeMap128) {\n\t\t\t\t\t\t\t\tif (!assetReference) {\n\t\t\t\t\t\t\t\t\t\tassetReference = new AssetReference(name, materialAsset, assets, {\n\t\t\t\t\t\t\t\t\t\t\t\tload: this._onCubemapLoad,\n\t\t\t\t\t\t\t\t\t\t\t\tadd: this._onCubemapAdd,\n\t\t\t\t\t\t\t\t\t\t\t\tremove: this._onCubemapRemoveOrUnload,\n\t\t\t\t\t\t\t\t\t\t\t\tunload: this._onCubemapRemoveOrUnload\n\t\t\t\t\t\t\t\t\t\t}, this);\n\t\t\t\t\t\t\t\t\t\tmaterial._assetReferences[name] = assetReference;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (pathMapping) {\n\t\t\t\t\t\t\t\t\t\tassetReference.url = data[name];\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tassetReference.id = data[name];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (assetReference.asset) {\n\t\t\t\t\t\t\t\t\t\tif (assetReference.asset.loaded) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._assignCubemap(name, materialAsset, assetReference.asset.resources);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tassets.load(assetReference.asset);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._parser.initialize(material, data);\n\t\t}\n}\n\nclass GlbModelParser {\n\t\tconstructor(modelHandler){\n\t\t\t\tthis._device = modelHandler.device;\n\t\t\t\tthis._defaultMaterial = modelHandler.defaultMaterial;\n\t\t\t\tthis._assets = modelHandler.assets;\n\t\t}\n\t\tparse(data, callback, asset) {\n\t\t\t\tGlbParser.parse('filename.glb', '', data, this._device, this._assets, asset?.options ?? {}, (err, result)=>{\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\tcallback(err);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst model = GlbContainerResource.createModel(result, this._defaultMaterial);\n\t\t\t\t\t\t\t\tresult.destroy();\n\t\t\t\t\t\t\t\tcallback(null, model);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n}\n\nconst JSON_PRIMITIVE_TYPE = {\n\t\t'points': PRIMITIVE_POINTS,\n\t\t'lines': PRIMITIVE_LINES,\n\t\t'lineloop': PRIMITIVE_LINELOOP,\n\t\t'linestrip': PRIMITIVE_LINESTRIP,\n\t\t'triangles': PRIMITIVE_TRIANGLES,\n\t\t'trianglestrip': PRIMITIVE_TRISTRIP,\n\t\t'trianglefan': PRIMITIVE_TRIFAN\n};\nconst JSON_VERTEX_ELEMENT_TYPE = {\n\t\t'int8': TYPE_INT8,\n\t\t'uint8': TYPE_UINT8,\n\t\t'int16': TYPE_INT16,\n\t\t'uint16': TYPE_UINT16,\n\t\t'int32': TYPE_INT32,\n\t\t'uint32': TYPE_UINT32,\n\t\t'float32': TYPE_FLOAT32\n};\nclass JsonModelParser {\n\t\tconstructor(modelHandler){\n\t\t\t\tthis._device = modelHandler.device;\n\t\t\t\tthis._defaultMaterial = modelHandler.defaultMaterial;\n\t\t}\n\t\tparse(data, callback) {\n\t\t\t\tconst modelData = data.model;\n\t\t\t\tif (!modelData) {\n\t\t\t\t\t\tcallback(null, null);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (modelData.version <= 1) {\n\t\t\t\t\t\tcallback('JsonModelParser#parse: Trying to parse unsupported model format.');\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst nodes = this._parseNodes(data);\n\t\t\t\tconst skins = this._parseSkins(data, nodes);\n\t\t\t\tconst vertexBuffers = this._parseVertexBuffers(data);\n\t\t\t\tconst indices = this._parseIndexBuffers(data, vertexBuffers);\n\t\t\t\tconst morphs = this._parseMorphs(data, nodes, vertexBuffers);\n\t\t\t\tconst meshes = this._parseMeshes(data, skins.skins, morphs.morphs, vertexBuffers, indices.buffer, indices.data);\n\t\t\t\tconst meshInstances = this._parseMeshInstances(data, nodes, meshes, skins.skins, skins.instances, morphs.morphs, morphs.instances);\n\t\t\t\tconst model = new Model();\n\t\t\t\tmodel.graph = nodes[0];\n\t\t\t\tmodel.meshInstances = meshInstances;\n\t\t\t\tmodel.skinInstances = skins.instances;\n\t\t\t\tmodel.morphInstances = morphs.instances;\n\t\t\t\tmodel.getGraph().syncHierarchy();\n\t\t\t\tcallback(null, model);\n\t\t}\n\t\t_parseNodes(data) {\n\t\t\t\tconst modelData = data.model;\n\t\t\t\tconst nodes = [];\n\t\t\t\tlet i;\n\t\t\t\tfor(i = 0; i < modelData.nodes.length; i++){\n\t\t\t\t\t\tconst nodeData = modelData.nodes[i];\n\t\t\t\t\t\tconst node = new GraphNode(nodeData.name);\n\t\t\t\t\t\tnode.setLocalPosition(nodeData.position[0], nodeData.position[1], nodeData.position[2]);\n\t\t\t\t\t\tnode.setLocalEulerAngles(nodeData.rotation[0], nodeData.rotation[1], nodeData.rotation[2]);\n\t\t\t\t\t\tnode.setLocalScale(nodeData.scale[0], nodeData.scale[1], nodeData.scale[2]);\n\t\t\t\t\t\tnode.scaleCompensation = !!nodeData.scaleCompensation;\n\t\t\t\t\t\tnodes.push(node);\n\t\t\t\t}\n\t\t\t\tfor(i = 1; i < modelData.parents.length; i++){\n\t\t\t\t\t\tnodes[modelData.parents[i]].addChild(nodes[i]);\n\t\t\t\t}\n\t\t\t\treturn nodes;\n\t\t}\n\t\t_parseSkins(data, nodes) {\n\t\t\t\tconst modelData = data.model;\n\t\t\t\tconst skins = [];\n\t\t\t\tconst skinInstances = [];\n\t\t\t\tlet i, j;\n\t\t\t\tfor(i = 0; i < modelData.skins.length; i++){\n\t\t\t\t\t\tconst skinData = modelData.skins[i];\n\t\t\t\t\t\tconst inverseBindMatrices = [];\n\t\t\t\t\t\tfor(j = 0; j < skinData.inverseBindMatrices.length; j++){\n\t\t\t\t\t\t\t\tconst ibm = skinData.inverseBindMatrices[j];\n\t\t\t\t\t\t\t\tinverseBindMatrices[j] = new Mat4().set(ibm);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst skin = new Skin(this._device, inverseBindMatrices, skinData.boneNames);\n\t\t\t\t\t\tskins.push(skin);\n\t\t\t\t\t\tconst skinInstance = new SkinInstance(skin);\n\t\t\t\t\t\tconst bones = [];\n\t\t\t\t\t\tfor(j = 0; j < skin.boneNames.length; j++){\n\t\t\t\t\t\t\t\tconst boneName = skin.boneNames[j];\n\t\t\t\t\t\t\t\tconst bone = nodes[0].findByName(boneName);\n\t\t\t\t\t\t\t\tbones.push(bone);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tskinInstance.bones = bones;\n\t\t\t\t\t\tskinInstances.push(skinInstance);\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\t\tskins: skins,\n\t\t\t\t\t\tinstances: skinInstances\n\t\t\t\t};\n\t\t}\n\t\t_getMorphVertexCount(modelData, morphIndex, vertexBuffers) {\n\t\t\t\tfor(let i = 0; i < modelData.meshes.length; i++){\n\t\t\t\t\t\tconst meshData = modelData.meshes[i];\n\t\t\t\t\t\tif (meshData.morph === morphIndex) {\n\t\t\t\t\t\t\t\tconst vertexBuffer = vertexBuffers[meshData.vertices];\n\t\t\t\t\t\t\t\treturn vertexBuffer.numVertices;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn undefined;\n\t\t}\n\t\t_parseMorphs(data, nodes, vertexBuffers) {\n\t\t\t\tconst modelData = data.model;\n\t\t\t\tconst morphs = [];\n\t\t\t\tconst morphInstances = [];\n\t\t\t\tlet i, j, vertexCount;\n\t\t\t\tlet targets, morphTarget, morphTargetArray;\n\t\t\t\tif (modelData.morphs) {\n\t\t\t\t\t\tconst sparseToFull = function(data, indices, totalCount) {\n\t\t\t\t\t\t\t\tconst full = new Float32Array(totalCount * 3);\n\t\t\t\t\t\t\t\tfor(let s = 0; s < indices.length; s++){\n\t\t\t\t\t\t\t\t\t\tconst dstIndex = indices[s] * 3;\n\t\t\t\t\t\t\t\t\t\tfull[dstIndex] = data[s * 3];\n\t\t\t\t\t\t\t\t\t\tfull[dstIndex + 1] = data[s * 3 + 1];\n\t\t\t\t\t\t\t\t\t\tfull[dstIndex + 2] = data[s * 3 + 2];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn full;\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor(i = 0; i < modelData.morphs.length; i++){\n\t\t\t\t\t\t\t\ttargets = modelData.morphs[i].targets;\n\t\t\t\t\t\t\t\tmorphTargetArray = [];\n\t\t\t\t\t\t\t\tvertexCount = this._getMorphVertexCount(modelData, i, vertexBuffers);\n\t\t\t\t\t\t\t\tfor(j = 0; j < targets.length; j++){\n\t\t\t\t\t\t\t\t\t\tconst targetAabb = targets[j].aabb;\n\t\t\t\t\t\t\t\t\t\tconst min = targetAabb.min;\n\t\t\t\t\t\t\t\t\t\tconst max = targetAabb.max;\n\t\t\t\t\t\t\t\t\t\tconst aabb = new BoundingBox(new Vec3((max[0] + min[0]) * 0.5, (max[1] + min[1]) * 0.5, (max[2] + min[2]) * 0.5), new Vec3((max[0] - min[0]) * 0.5, (max[1] - min[1]) * 0.5, (max[2] - min[2]) * 0.5));\n\t\t\t\t\t\t\t\t\t\tconst indices = targets[j].indices;\n\t\t\t\t\t\t\t\t\t\tlet deltaPositions = targets[j].deltaPositions;\n\t\t\t\t\t\t\t\t\t\tlet deltaNormals = targets[j].deltaNormals;\n\t\t\t\t\t\t\t\t\t\tif (indices) {\n\t\t\t\t\t\t\t\t\t\t\t\tdeltaPositions = sparseToFull(deltaPositions, indices, vertexCount);\n\t\t\t\t\t\t\t\t\t\t\t\tdeltaNormals = sparseToFull(deltaNormals, indices, vertexCount);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tmorphTarget = new MorphTarget({\n\t\t\t\t\t\t\t\t\t\t\t\tdeltaPositions: deltaPositions,\n\t\t\t\t\t\t\t\t\t\t\t\tdeltaNormals: deltaNormals,\n\t\t\t\t\t\t\t\t\t\t\t\tname: targets[j].name,\n\t\t\t\t\t\t\t\t\t\t\t\taabb: aabb\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tmorphTargetArray.push(morphTarget);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst morph = new Morph(morphTargetArray, this._device);\n\t\t\t\t\t\t\t\tmorphs.push(morph);\n\t\t\t\t\t\t\t\tconst morphInstance = new MorphInstance(morph);\n\t\t\t\t\t\t\t\tmorphInstances.push(morphInstance);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\t\tmorphs: morphs,\n\t\t\t\t\t\tinstances: morphInstances\n\t\t\t\t};\n\t\t}\n\t\t_parseVertexBuffers(data) {\n\t\t\t\tconst modelData = data.model;\n\t\t\t\tconst vertexBuffers = [];\n\t\t\t\tconst attributeMap = {\n\t\t\t\t\t\tposition: SEMANTIC_POSITION,\n\t\t\t\t\t\tnormal: SEMANTIC_NORMAL,\n\t\t\t\t\t\ttangent: SEMANTIC_TANGENT,\n\t\t\t\t\t\tblendWeight: SEMANTIC_BLENDWEIGHT,\n\t\t\t\t\t\tblendIndices: SEMANTIC_BLENDINDICES,\n\t\t\t\t\t\tcolor: SEMANTIC_COLOR,\n\t\t\t\t\t\ttexCoord0: SEMANTIC_TEXCOORD0,\n\t\t\t\t\t\ttexCoord1: SEMANTIC_TEXCOORD1,\n\t\t\t\t\t\ttexCoord2: SEMANTIC_TEXCOORD2,\n\t\t\t\t\t\ttexCoord3: SEMANTIC_TEXCOORD3,\n\t\t\t\t\t\ttexCoord4: SEMANTIC_TEXCOORD4,\n\t\t\t\t\t\ttexCoord5: SEMANTIC_TEXCOORD5,\n\t\t\t\t\t\ttexCoord6: SEMANTIC_TEXCOORD6,\n\t\t\t\t\t\ttexCoord7: SEMANTIC_TEXCOORD7\n\t\t\t\t};\n\t\t\t\tfor(let i = 0; i < modelData.vertices.length; i++){\n\t\t\t\t\t\tconst vertexData = modelData.vertices[i];\n\t\t\t\t\t\tconst formatDesc = [];\n\t\t\t\t\t\tfor(const attributeName in vertexData){\n\t\t\t\t\t\t\t\tconst attribute = vertexData[attributeName];\n\t\t\t\t\t\t\t\tformatDesc.push({\n\t\t\t\t\t\t\t\t\t\tsemantic: attributeMap[attributeName],\n\t\t\t\t\t\t\t\t\t\tcomponents: attribute.components,\n\t\t\t\t\t\t\t\t\t\ttype: JSON_VERTEX_ELEMENT_TYPE[attribute.type],\n\t\t\t\t\t\t\t\t\t\tnormalize: attributeMap[attributeName] === SEMANTIC_COLOR\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst vertexFormat = new VertexFormat(this._device, formatDesc);\n\t\t\t\t\t\tconst numVertices = vertexData.position.data.length / vertexData.position.components;\n\t\t\t\t\t\tconst vertexBuffer = new VertexBuffer(this._device, vertexFormat, numVertices);\n\t\t\t\t\t\tconst iterator = new VertexIterator(vertexBuffer);\n\t\t\t\t\t\tfor(let j = 0; j < numVertices; j++){\n\t\t\t\t\t\t\t\tfor(const attributeName in vertexData){\n\t\t\t\t\t\t\t\t\t\tconst attribute = vertexData[attributeName];\n\t\t\t\t\t\t\t\t\t\tswitch(attribute.components){\n\t\t\t\t\t\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\titerator.element[attributeMap[attributeName]].set(attribute.data[j]);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\titerator.element[attributeMap[attributeName]].set(attribute.data[j * 2], 1.0 - attribute.data[j * 2 + 1]);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\titerator.element[attributeMap[attributeName]].set(attribute.data[j * 3], attribute.data[j * 3 + 1], attribute.data[j * 3 + 2]);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\titerator.element[attributeMap[attributeName]].set(attribute.data[j * 4], attribute.data[j * 4 + 1], attribute.data[j * 4 + 2], attribute.data[j * 4 + 3]);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\titerator.next();\n\t\t\t\t\t\t}\n\t\t\t\t\t\titerator.end();\n\t\t\t\t\t\tvertexBuffers.push(vertexBuffer);\n\t\t\t\t}\n\t\t\t\treturn vertexBuffers;\n\t\t}\n\t\t_parseIndexBuffers(data, vertexBuffers) {\n\t\t\t\tconst modelData = data.model;\n\t\t\t\tlet indexBuffer = null;\n\t\t\t\tlet indexData = null;\n\t\t\t\tlet i;\n\t\t\t\tlet numIndices = 0;\n\t\t\t\tfor(i = 0; i < modelData.meshes.length; i++){\n\t\t\t\t\t\tconst meshData = modelData.meshes[i];\n\t\t\t\t\t\tif (meshData.indices !== undefined) {\n\t\t\t\t\t\t\t\tnumIndices += meshData.indices.length;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tlet maxVerts = 0;\n\t\t\t\tfor(i = 0; i < vertexBuffers.length; i++){\n\t\t\t\t\t\tmaxVerts = Math.max(maxVerts, vertexBuffers[i].numVertices);\n\t\t\t\t}\n\t\t\t\tif (numIndices > 0) {\n\t\t\t\t\t\tif (maxVerts > 0xFFFF) {\n\t\t\t\t\t\t\t\tindexBuffer = new IndexBuffer(this._device, INDEXFORMAT_UINT32, numIndices);\n\t\t\t\t\t\t\t\tindexData = new Uint32Array(indexBuffer.lock());\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tindexBuffer = new IndexBuffer(this._device, INDEXFORMAT_UINT16, numIndices);\n\t\t\t\t\t\t\t\tindexData = new Uint16Array(indexBuffer.lock());\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\t\tbuffer: indexBuffer,\n\t\t\t\t\t\tdata: indexData\n\t\t\t\t};\n\t\t}\n\t\t_parseMeshes(data, skins, morphs, vertexBuffers, indexBuffer, indexData) {\n\t\t\t\tconst modelData = data.model;\n\t\t\t\tconst meshes = [];\n\t\t\t\tlet indexBase = 0;\n\t\t\t\tfor(let i = 0; i < modelData.meshes.length; i++){\n\t\t\t\t\t\tconst meshData = modelData.meshes[i];\n\t\t\t\t\t\tconst meshAabb = meshData.aabb;\n\t\t\t\t\t\tconst min = meshAabb.min;\n\t\t\t\t\t\tconst max = meshAabb.max;\n\t\t\t\t\t\tconst aabb = new BoundingBox(new Vec3((max[0] + min[0]) * 0.5, (max[1] + min[1]) * 0.5, (max[2] + min[2]) * 0.5), new Vec3((max[0] - min[0]) * 0.5, (max[1] - min[1]) * 0.5, (max[2] - min[2]) * 0.5));\n\t\t\t\t\t\tconst indexed = meshData.indices !== undefined;\n\t\t\t\t\t\tconst mesh = new Mesh(this._device);\n\t\t\t\t\t\tmesh.vertexBuffer = vertexBuffers[meshData.vertices];\n\t\t\t\t\t\tmesh.indexBuffer[0] = indexed ? indexBuffer : null;\n\t\t\t\t\t\tmesh.primitive[0].type = JSON_PRIMITIVE_TYPE[meshData.type];\n\t\t\t\t\t\tmesh.primitive[0].base = indexed ? meshData.base + indexBase : meshData.base;\n\t\t\t\t\t\tmesh.primitive[0].count = meshData.count;\n\t\t\t\t\t\tmesh.primitive[0].indexed = indexed;\n\t\t\t\t\t\tmesh.skin = meshData.skin !== undefined ? skins[meshData.skin] : null;\n\t\t\t\t\t\tmesh.morph = meshData.morph !== undefined ? morphs[meshData.morph] : null;\n\t\t\t\t\t\tmesh.aabb = aabb;\n\t\t\t\t\t\tif (indexed) {\n\t\t\t\t\t\t\t\tindexData.set(meshData.indices, indexBase);\n\t\t\t\t\t\t\t\tindexBase += meshData.indices.length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmeshes.push(mesh);\n\t\t\t\t}\n\t\t\t\tif (indexBuffer !== null) {\n\t\t\t\t\t\tindexBuffer.unlock();\n\t\t\t\t}\n\t\t\t\treturn meshes;\n\t\t}\n\t\t_parseMeshInstances(data, nodes, meshes, skins, skinInstances, morphs, morphInstances) {\n\t\t\t\tconst modelData = data.model;\n\t\t\t\tconst meshInstances = [];\n\t\t\t\tlet i;\n\t\t\t\tfor(i = 0; i < modelData.meshInstances.length; i++){\n\t\t\t\t\t\tconst meshInstanceData = modelData.meshInstances[i];\n\t\t\t\t\t\tconst node = nodes[meshInstanceData.node];\n\t\t\t\t\t\tconst mesh = meshes[meshInstanceData.mesh];\n\t\t\t\t\t\tconst meshInstance = new MeshInstance(mesh, this._defaultMaterial, node);\n\t\t\t\t\t\tif (mesh.skin) {\n\t\t\t\t\t\t\t\tconst skinIndex = skins.indexOf(mesh.skin);\n\t\t\t\t\t\t\t\tmeshInstance.skinInstance = skinInstances[skinIndex];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (mesh.morph) {\n\t\t\t\t\t\t\t\tconst morphIndex = morphs.indexOf(mesh.morph);\n\t\t\t\t\t\t\t\tmeshInstance.morphInstance = morphInstances[morphIndex];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmeshInstances.push(meshInstance);\n\t\t\t\t}\n\t\t\t\treturn meshInstances;\n\t\t}\n}\n\nclass ModelHandler extends ResourceHandler {\n\t\tconstructor(app){\n\t\t\t\tsuper(app, 'model');\n\t\t\t\tthis._parsers = [];\n\t\t\t\tthis.device = app.graphicsDevice;\n\t\t\t\tthis.assets = app.assets;\n\t\t\t\tthis.defaultMaterial = getDefaultMaterial(this.device);\n\t\t\t\tthis.addParser(new JsonModelParser(this), (url, data)=>{\n\t\t\t\t\t\treturn path.getExtension(url) === '.json';\n\t\t\t\t});\n\t\t\t\tthis.addParser(new GlbModelParser(this), (url, data)=>{\n\t\t\t\t\t\treturn path.getExtension(url) === '.glb';\n\t\t\t\t});\n\t\t}\n\t\tload(url, callback, asset) {\n\t\t\t\tif (typeof url === 'string') {\n\t\t\t\t\t\turl = {\n\t\t\t\t\t\t\t\tload: url,\n\t\t\t\t\t\t\t\toriginal: url\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst options = {\n\t\t\t\t\t\tretry: this.maxRetries > 0,\n\t\t\t\t\t\tmaxRetries: this.maxRetries\n\t\t\t\t};\n\t\t\t\tif (url.load.startsWith('blob:') || url.load.startsWith('data:')) {\n\t\t\t\t\t\tif (path.getExtension(url.original).toLowerCase() === '.glb') {\n\t\t\t\t\t\t\t\toptions.responseType = Http.ResponseType.ARRAY_BUFFER;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\toptions.responseType = Http.ResponseType.JSON;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\thttp.get(url.load, options, (err, response)=>{\n\t\t\t\t\t\tif (!callback) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!err) {\n\t\t\t\t\t\t\t\tfor(let i = 0; i < this._parsers.length; i++){\n\t\t\t\t\t\t\t\t\t\tconst p = this._parsers[i];\n\t\t\t\t\t\t\t\t\t\tif (p.decider(url.original, response)) {\n\t\t\t\t\t\t\t\t\t\t\t\tp.parser.parse(response, (err, parseResult)=>{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcallback(err);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcallback(null, parseResult);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}, asset);\n\t\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcallback('No parsers found');\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcallback(`Error loading model: ${url.original} [${err}]`);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\topen(url, data) {\n\t\t\t\treturn data;\n\t\t}\n\t\tpatch(asset, assets) {\n\t\t\t\tif (!asset.resource) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst data = asset.data;\n\t\t\t\tconst self = this;\n\t\t\t\tasset.resource.meshInstances.forEach((meshInstance, i)=>{\n\t\t\t\t\t\tif (data.mapping) {\n\t\t\t\t\t\t\t\tconst handleMaterial = function(asset) {\n\t\t\t\t\t\t\t\t\t\tif (asset.resource) {\n\t\t\t\t\t\t\t\t\t\t\t\tmeshInstance.material = asset.resource;\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tasset.once('load', handleMaterial);\n\t\t\t\t\t\t\t\t\t\t\t\tassets.load(asset);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tasset.once('remove', (asset)=>{\n\t\t\t\t\t\t\t\t\t\t\t\tif (meshInstance.material === asset.resource) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmeshInstance.material = self.defaultMaterial;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tif (!data.mapping[i]) {\n\t\t\t\t\t\t\t\t\t\tmeshInstance.material = self.defaultMaterial;\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst id = data.mapping[i].material;\n\t\t\t\t\t\t\t\tconst url = data.mapping[i].path;\n\t\t\t\t\t\t\t\tlet material;\n\t\t\t\t\t\t\t\tif (id !== undefined) {\n\t\t\t\t\t\t\t\t\t\tif (!id) {\n\t\t\t\t\t\t\t\t\t\t\t\tmeshInstance.material = self.defaultMaterial;\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tmaterial = assets.get(id);\n\t\t\t\t\t\t\t\t\t\t\t\tif (material) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\thandleMaterial(material);\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tassets.once(`add:${id}`, handleMaterial);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else if (url) {\n\t\t\t\t\t\t\t\t\t\tconst path = asset.getAbsoluteUrl(data.mapping[i].path);\n\t\t\t\t\t\t\t\t\t\tmaterial = assets.getByUrl(path);\n\t\t\t\t\t\t\t\t\t\tif (material) {\n\t\t\t\t\t\t\t\t\t\t\t\thandleMaterial(material);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tassets.once(`add:url:${path}`, handleMaterial);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\taddParser(parser, decider) {\n\t\t\t\tthis._parsers.push({\n\t\t\t\t\t\tparser: parser,\n\t\t\t\t\t\tdecider: decider\n\t\t\t\t});\n\t\t}\n}\n\nclass SceneHandler extends ResourceHandler {\n\t\tconstructor(app){\n\t\t\t\tsuper(app, 'scene');\n\t\t}\n\t\tload(url, callback) {\n\t\t\t\tSceneUtils.load(url, this.maxRetries, callback);\n\t\t}\n\t\topen(url, data) {\n\t\t\t\tthis._app.systems.script.preloading = true;\n\t\t\t\tconst parser = new SceneParser(this._app, false);\n\t\t\t\tconst parent = parser.parse(data);\n\t\t\t\tconst scene = this._app.scene;\n\t\t\t\tscene.root = parent;\n\t\t\t\tthis._app.applySceneSettings(data.settings);\n\t\t\t\tthis._app.systems.script.preloading = false;\n\t\t\t\treturn scene;\n\t\t}\n}\n\nclass ScriptTypes {\n\t\tstatic{\n\t\t\t\tthis._types = [];\n\t\t}\n\t\tstatic push(Type) {\n\t\t\t\tScriptTypes._types.push(Type);\n\t\t}\n}\n\nconst reservedScriptNames = new Set([\n\t\t'system',\n\t\t'entity',\n\t\t'create',\n\t\t'destroy',\n\t\t'swap',\n\t\t'move',\n\t\t'data',\n\t\t\"scripts\",\n\t\t\"_scripts\",\n\t\t\"_scriptsIndex\",\n\t\t\"_scriptsData\",\n\t\t'enabled',\n\t\t'_oldState',\n\t\t'onEnable',\n\t\t'onDisable',\n\t\t'onPostStateChange',\n\t\t'_onSetEnabled',\n\t\t'_checkState',\n\t\t'_onBeforeRemove',\n\t\t'_onInitializeAttributes',\n\t\t'_onInitialize',\n\t\t'_onPostInitialize',\n\t\t'_onUpdate',\n\t\t'_onPostUpdate',\n\t\t'_callbacks',\n\t\t'_callbackActive',\n\t\t'has',\n\t\t'get',\n\t\t'on',\n\t\t'off',\n\t\t'fire',\n\t\t'once',\n\t\t'hasEvent'\n]);\nfunction getReservedScriptNames() {\n\t\treturn reservedScriptNames;\n}\nfunction createScript(name, app) {\n\t\tif (reservedScriptNames.has(name)) {\n\t\t\t\tthrow new Error(`Script name '${name}' is reserved, please rename the script`);\n\t\t}\n\t\tconst scriptType = function(args) {\n\t\t\t\tEventHandler.prototype.initEventHandler.call(this);\n\t\t\t\tScriptType.prototype.initScriptType.call(this, args);\n\t\t};\n\t\tscriptType.prototype = Object.create(ScriptType.prototype);\n\t\tscriptType.prototype.constructor = scriptType;\n\t\tscriptType.extend = ScriptType.extend;\n\t\tscriptType.attributes = new ScriptAttributes(scriptType);\n\t\tregisterScript(scriptType, name, app);\n\t\treturn scriptType;\n}\nconst reservedAttributes = {};\nScriptAttributes.reservedNames.forEach((value, value2, set)=>{\n\t\treservedAttributes[value] = 1;\n});\ncreateScript.reservedAttributes = reservedAttributes;\nfunction registerScript(script, name, app) {\n\t\tif (typeof script !== 'function') {\n\t\t\t\tthrow new Error(`script class: '${script}' must be a constructor function (i.e. class).`);\n\t\t}\n\t\tif (!(script.prototype instanceof Script)) {\n\t\t\t\tthrow new Error(`script class: '${ScriptType.__getScriptName(script)}' does not extend pc.Script.`);\n\t\t}\n\t\tname = name || script.__name || ScriptType.__getScriptName(script);\n\t\tif (reservedScriptNames.has(name)) {\n\t\t\t\tthrow new Error(`script name: '${name}' is reserved, please change script name`);\n\t\t}\n\t\tscript.__name = name;\n\t\tconst registry = app ? app.scripts : AppBase.getApplication().scripts;\n\t\tregistry.add(script);\n\t\tScriptTypes.push(script);\n}\n\nconst toLowerCamelCase = (str)=>str[0].toLowerCase() + str.substring(1);\nclass ScriptHandler extends ResourceHandler {\n\t\tconstructor(app){\n\t\t\t\tsuper(app, \"script\");\n\t\t\t\tthis._scripts = {};\n\t\t\t\tthis._cache = {};\n\t\t}\n\t\tclearCache() {\n\t\t\t\tfor(const key in this._cache){\n\t\t\t\t\t\tconst element = this._cache[key];\n\t\t\t\t\t\tconst parent = element.parentNode;\n\t\t\t\t\t\tif (parent) {\n\t\t\t\t\t\t\t\tparent.removeChild(element);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._cache = {};\n\t\t}\n\t\tload(url, callback) {\n\t\t\t\tif (typeof url === 'string') {\n\t\t\t\t\t\turl = {\n\t\t\t\t\t\t\t\tload: url,\n\t\t\t\t\t\t\t\toriginal: url\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst self = this;\n\t\t\t\tscript.app = this._app;\n\t\t\t\tconst onScriptLoad = (url.load, (err, url, extra)=>{\n\t\t\t\t\t\tif (!err) {\n\t\t\t\t\t\t\t\tconst obj = {};\n\t\t\t\t\t\t\t\tfor(let i = 0; i < ScriptTypes._types.length; i++){\n\t\t\t\t\t\t\t\t\t\tobj[ScriptTypes._types[i].name] = ScriptTypes._types[i];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tScriptTypes._types.length = 0;\n\t\t\t\t\t\t\t\tcallback(null, obj, extra);\n\t\t\t\t\t\t\t\tconst urlWithoutEndHash = url.split('&hash=')[0];\n\t\t\t\t\t\t\t\tdelete self._loader._cache[ResourceLoader.makeKey(urlWithoutEndHash, \"script\")];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcallback(err);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tconst [basePath] = url.load.split('?');\n\t\t\t\tconst isEsmScript = basePath.endsWith('.mjs');\n\t\t\t\tif (isEsmScript) {\n\t\t\t\t\t\tthis._loadModule(basePath, onScriptLoad);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._loadScript(url.load, onScriptLoad);\n\t\t\t\t}\n\t\t}\n\t\topen(url, data) {\n\t\t\t\treturn data;\n\t\t}\n\t\tpatch(asset, assets) {}\n\t\t_loadScript(url, callback) {\n\t\t\t\tconst head = document.head;\n\t\t\t\tconst element = document.createElement(\"script\");\n\t\t\t\tthis._cache[url] = element;\n\t\t\t\telement.async = false;\n\t\t\t\telement.addEventListener('error', (e)=>{\n\t\t\t\t\t\tcallback(`Script: ${e.target.src} failed to load`);\n\t\t\t\t}, false);\n\t\t\t\tlet done = false;\n\t\t\t\telement.onload = element.onreadystatechange = function() {\n\t\t\t\t\t\tif (!done && (!this.readyState || this.readyState === 'loaded' || this.readyState === 'complete')) {\n\t\t\t\t\t\t\t\tdone = true;\n\t\t\t\t\t\t\t\tcallback(null, url, element);\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\telement.src = url;\n\t\t\t\thead.appendChild(element);\n\t\t}\n\t\t_loadModule(url, callback) {\n\t\t\t\tconst isBrowserWithOrigin = platform.browser && window.location.origin !== 'null';\n\t\t\t\tconst baseUrl = isBrowserWithOrigin ? window.location.origin + window.location.pathname : import.meta.url;\n\t\t\t\tconst importUrl = new URL(url, baseUrl);\n\t\t\t\timport(/* @vite-ignore */ /* webpackIgnore: true */ importUrl.toString()).then((module)=>{\n\t\t\t\t\t\tconst filename = importUrl.pathname.split('/').pop();\n\t\t\t\t\t\tconst scriptSchema = this._app.assets.find(filename, \"script\")?.data?.scripts;\n\t\t\t\t\t\tfor(const key in module){\n\t\t\t\t\t\t\t\tconst scriptClass = module[key];\n\t\t\t\t\t\t\t\tconst extendsScriptType = scriptClass.prototype instanceof Script;\n\t\t\t\t\t\t\t\tif (extendsScriptType) {\n\t\t\t\t\t\t\t\t\t\tconst lowerCamelCaseName = toLowerCamelCase(scriptClass.name);\n\t\t\t\t\t\t\t\t\t\tif (!scriptClass.scriptName) ;\n\t\t\t\t\t\t\t\t\t\tconst scriptName = scriptClass.scriptName ?? lowerCamelCaseName;\n\t\t\t\t\t\t\t\t\t\tregisterScript(scriptClass, scriptName);\n\t\t\t\t\t\t\t\t\t\tif (scriptSchema) this._app.scripts.addSchema(scriptName, scriptSchema[scriptName]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcallback(null, url, null);\n\t\t\t\t}).catch((err)=>{\n\t\t\t\t\t\tcallback(err);\n\t\t\t\t});\n\t\t}\n}\n\nclass ShaderHandler extends ResourceHandler {\n\t\tconstructor(app){\n\t\t\t\tsuper(app, 'shader'), this.decoder = null;\n\t\t}\n\t\tload(url, callback) {\n\t\t\t\tif (typeof url === 'string') {\n\t\t\t\t\t\turl = {\n\t\t\t\t\t\t\t\tload: url,\n\t\t\t\t\t\t\t\toriginal: url\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\thttp.get(url.load, {\n\t\t\t\t\t\tretry: this.maxRetries > 0,\n\t\t\t\t\t\tmaxRetries: this.maxRetries\n\t\t\t\t}, (err, response)=>{\n\t\t\t\t\t\tif (!err) {\n\t\t\t\t\t\t\t\tcallback(null, response);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcallback(`Error loading shader resource: ${url.original} [${err}]`);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\topenBinary(data) {\n\t\t\t\tthis.decoder ??= new TextDecoder('utf-8');\n\t\t\t\treturn this.decoder.decode(data);\n\t\t}\n}\n\nfunction onTextureAtlasLoaded(atlasAsset) {\n\t\tconst spriteAsset = this;\n\t\tif (spriteAsset.resource) {\n\t\t\t\tspriteAsset.resource.atlas = atlasAsset.resource;\n\t\t}\n}\nfunction onTextureAtlasAdded(atlasAsset) {\n\t\tconst spriteAsset = this;\n\t\tspriteAsset.registry.load(atlasAsset);\n}\nclass SpriteHandler extends ResourceHandler {\n\t\tconstructor(app){\n\t\t\t\tsuper(app, 'sprite');\n\t\t\t\tthis._assets = app.assets;\n\t\t\t\tthis._device = app.graphicsDevice;\n\t\t}\n\t\tload(url, callback) {\n\t\t\t\tif (typeof url === 'string') {\n\t\t\t\t\t\turl = {\n\t\t\t\t\t\t\t\tload: url,\n\t\t\t\t\t\t\t\toriginal: url\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tif (path.getExtension(url.original) === '.json') {\n\t\t\t\t\t\thttp.get(url.load, {\n\t\t\t\t\t\t\t\tretry: this.maxRetries > 0,\n\t\t\t\t\t\t\t\tmaxRetries: this.maxRetries\n\t\t\t\t\t\t}, (err, response)=>{\n\t\t\t\t\t\t\t\tif (!err) {\n\t\t\t\t\t\t\t\t\t\tcallback(null, response);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tcallback(err);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t}\n\t\topen(url, data) {\n\t\t\t\tconst sprite = new Sprite(this._device);\n\t\t\t\tif (url) {\n\t\t\t\t\t\tsprite.__data = data;\n\t\t\t\t}\n\t\t\t\treturn sprite;\n\t\t}\n\t\tpatch(asset, assets) {\n\t\t\t\tconst sprite = asset.resource;\n\t\t\t\tif (sprite.__data) {\n\t\t\t\t\t\tasset.data.pixelsPerUnit = sprite.__data.pixelsPerUnit;\n\t\t\t\t\t\tasset.data.renderMode = sprite.__data.renderMode;\n\t\t\t\t\t\tasset.data.frameKeys = sprite.__data.frameKeys;\n\t\t\t\t\t\tif (sprite.__data.textureAtlasAsset) {\n\t\t\t\t\t\t\t\tconst atlas = assets.getByUrl(sprite.__data.textureAtlasAsset);\n\t\t\t\t\t\t\t\tif (atlas) {\n\t\t\t\t\t\t\t\t\t\tasset.data.textureAtlasAsset = atlas.id;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tconsole.warn(`Could not find textureatlas with url: ${sprite.__data.textureAtlasAsset}`);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tsprite.startUpdate();\n\t\t\t\tsprite.renderMode = asset.data.renderMode;\n\t\t\t\tsprite.pixelsPerUnit = asset.data.pixelsPerUnit;\n\t\t\t\tsprite.frameKeys = asset.data.frameKeys;\n\t\t\t\tthis._updateAtlas(asset);\n\t\t\t\tsprite.endUpdate();\n\t\t\t\tasset.off('change', this._onAssetChange, this);\n\t\t\t\tasset.on('change', this._onAssetChange, this);\n\t\t}\n\t\t_updateAtlas(asset) {\n\t\t\t\tconst sprite = asset.resource;\n\t\t\t\tif (!asset.data.textureAtlasAsset) {\n\t\t\t\t\t\tsprite.atlas = null;\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._assets.off(`load:${asset.data.textureAtlasAsset}`, onTextureAtlasLoaded, asset);\n\t\t\t\tthis._assets.on(`load:${asset.data.textureAtlasAsset}`, onTextureAtlasLoaded, asset);\n\t\t\t\tconst atlasAsset = this._assets.get(asset.data.textureAtlasAsset);\n\t\t\t\tif (atlasAsset && atlasAsset.resource) {\n\t\t\t\t\t\tsprite.atlas = atlasAsset.resource;\n\t\t\t\t} else {\n\t\t\t\t\t\tif (!atlasAsset) {\n\t\t\t\t\t\t\t\tthis._assets.off(`add:${asset.data.textureAtlasAsset}`, onTextureAtlasAdded, asset);\n\t\t\t\t\t\t\t\tthis._assets.on(`add:${asset.data.textureAtlasAsset}`, onTextureAtlasAdded, asset);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._assets.load(atlasAsset);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_onAssetChange(asset, attribute, value, oldValue) {\n\t\t\t\tif (attribute === 'data') {\n\t\t\t\t\t\tif (value && value.textureAtlasAsset && oldValue && value.textureAtlasAsset !== oldValue.textureAtlasAsset) {\n\t\t\t\t\t\t\t\tthis._assets.off(`load:${oldValue.textureAtlasAsset}`, onTextureAtlasLoaded, asset);\n\t\t\t\t\t\t\t\tthis._assets.off(`add:${oldValue.textureAtlasAsset}`, onTextureAtlasAdded, asset);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n}\n\nclass Template {\n\t\tconstructor(app, data){\n\t\t\t\tthis._templateRoot = null;\n\t\t\t\tthis._app = app;\n\t\t\t\tthis._data = data;\n\t\t}\n\t\tinstantiate() {\n\t\t\t\tif (!this._templateRoot) {\n\t\t\t\t\t\tthis._parseTemplate();\n\t\t\t\t}\n\t\t\t\treturn this._templateRoot.clone();\n\t\t}\n\t\t_parseTemplate() {\n\t\t\t\tconst parser = new SceneParser(this._app, true);\n\t\t\t\tthis._templateRoot = parser.parse(this._data);\n\t\t}\n\t\tset data(value) {\n\t\t\t\tthis._data = value;\n\t\t\t\tthis._templateRoot = null;\n\t\t}\n\t\tget data() {\n\t\t\t\treturn this._data;\n\t\t}\n}\n\nclass TemplateHandler extends ResourceHandler {\n\t\tconstructor(app){\n\t\t\t\tsuper(app, 'template'), this.decoder = null;\n\t\t}\n\t\tload(url, callback) {\n\t\t\t\tif (typeof url === 'string') {\n\t\t\t\t\t\turl = {\n\t\t\t\t\t\t\t\tload: url,\n\t\t\t\t\t\t\t\toriginal: url\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst options = {\n\t\t\t\t\t\tretry: this.maxRetries > 0,\n\t\t\t\t\t\tmaxRetries: this.maxRetries\n\t\t\t\t};\n\t\t\t\thttp.get(url.load, options, (err, response)=>{\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\tcallback(`Error requesting template: ${url.original}`);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcallback(err, response);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\topen(url, data) {\n\t\t\t\treturn new Template(this._app, data);\n\t\t}\n\t\topenBinary(data) {\n\t\t\t\tthis.decoder ??= new TextDecoder('utf-8');\n\t\t\t\treturn new Template(this._app, JSON.parse(this.decoder.decode(data)));\n\t\t}\n\t\tpatch(asset, registry) {\n\t\t\t\tif (!asset || !asset.resource || !asset.data || !asset.data.entities) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst template = asset.resource;\n\t\t\t\ttemplate.data = asset.data;\n\t\t}\n}\n\nclass TextHandler extends ResourceHandler {\n\t\tconstructor(app){\n\t\t\t\tsuper(app, 'text'), this.decoder = null;\n\t\t}\n\t\tload(url, callback) {\n\t\t\t\tif (typeof url === 'string') {\n\t\t\t\t\t\turl = {\n\t\t\t\t\t\t\t\tload: url,\n\t\t\t\t\t\t\t\toriginal: url\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\thttp.get(url.load, {\n\t\t\t\t\t\tretry: this.maxRetries > 0,\n\t\t\t\t\t\tmaxRetries: this.maxRetries\n\t\t\t\t}, (err, response)=>{\n\t\t\t\t\t\tif (!err) {\n\t\t\t\t\t\t\t\tcallback(null, response);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcallback(`Error loading text resource: ${url.original} [${err}]`);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\topenBinary(data) {\n\t\t\t\tthis.decoder ??= new TextDecoder('utf-8');\n\t\t\t\treturn this.decoder.decode(data);\n\t\t}\n}\n\nconst JSON_ADDRESS_MODE$1 = {\n\t\t'repeat': ADDRESS_REPEAT,\n\t\t'clamp': ADDRESS_CLAMP_TO_EDGE,\n\t\t'mirror': ADDRESS_MIRRORED_REPEAT\n};\nconst JSON_FILTER_MODE$1 = {\n\t\t'nearest': FILTER_NEAREST,\n\t\t'linear': FILTER_LINEAR,\n\t\t'nearest_mip_nearest': FILTER_NEAREST_MIPMAP_NEAREST,\n\t\t'linear_mip_nearest': FILTER_LINEAR_MIPMAP_NEAREST,\n\t\t'nearest_mip_linear': FILTER_NEAREST_MIPMAP_LINEAR,\n\t\t'linear_mip_linear': FILTER_LINEAR_MIPMAP_LINEAR\n};\nconst regexFrame = /^data\\.frames\\.(\\d+)$/;\nclass TextureAtlasHandler extends ResourceHandler {\n\t\tconstructor(app){\n\t\t\t\tsuper(app, 'textureatlas');\n\t\t\t\tthis._loader = app.loader;\n\t\t}\n\t\tload(url, callback) {\n\t\t\t\tif (typeof url === 'string') {\n\t\t\t\t\t\turl = {\n\t\t\t\t\t\t\t\tload: url,\n\t\t\t\t\t\t\t\toriginal: url\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst self = this;\n\t\t\t\tconst handler = this._loader.getHandler('texture');\n\t\t\t\tif (path.getExtension(url.original) === '.json') {\n\t\t\t\t\t\thttp.get(url.load, {\n\t\t\t\t\t\t\t\tretry: this.maxRetries > 0,\n\t\t\t\t\t\t\t\tmaxRetries: this.maxRetries\n\t\t\t\t\t\t}, (err, response)=>{\n\t\t\t\t\t\t\t\tif (!err) {\n\t\t\t\t\t\t\t\t\t\tconst textureUrl = url.original.replace('.json', '.png');\n\t\t\t\t\t\t\t\t\t\tself._loader.load(textureUrl, 'texture', (err, texture)=>{\n\t\t\t\t\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcallback(err);\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcallback(null, {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdata: response,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttexture: texture\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tcallback(err);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t\thandler.load(url, callback);\n\t\t\t\t}\n\t\t}\n\t\topen(url, data, asset) {\n\t\t\t\tconst resource = new TextureAtlas();\n\t\t\t\tif (data.texture && data.data) {\n\t\t\t\t\t\tresource.texture = data.texture;\n\t\t\t\t\t\tresource.__data = data.data;\n\t\t\t\t} else {\n\t\t\t\t\t\tconst handler = this._loader.getHandler('texture');\n\t\t\t\t\t\tconst texture = handler.open(url, data, asset);\n\t\t\t\t\t\tif (!texture) return null;\n\t\t\t\t\t\tresource.texture = texture;\n\t\t\t\t}\n\t\t\t\treturn resource;\n\t\t}\n\t\tpatch(asset, assets) {\n\t\t\t\tif (!asset.resource) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (asset.resource.__data) {\n\t\t\t\t\t\tif (asset.resource.__data.minfilter !== undefined) asset.data.minfilter = asset.resource.__data.minfilter;\n\t\t\t\t\t\tif (asset.resource.__data.magfilter !== undefined) asset.data.magfilter = asset.resource.__data.magfilter;\n\t\t\t\t\t\tif (asset.resource.__data.addressu !== undefined) asset.data.addressu = asset.resource.__data.addressu;\n\t\t\t\t\t\tif (asset.resource.__data.addressv !== undefined) asset.data.addressv = asset.resource.__data.addressv;\n\t\t\t\t\t\tif (asset.resource.__data.mipmaps !== undefined) asset.data.mipmaps = asset.resource.__data.mipmaps;\n\t\t\t\t\t\tif (asset.resource.__data.anisotropy !== undefined) asset.data.anisotropy = asset.resource.__data.anisotropy;\n\t\t\t\t\t\tif (asset.resource.__data.rgbm !== undefined) asset.data.rgbm = !!asset.resource.__data.rgbm;\n\t\t\t\t\t\tasset.data.frames = asset.resource.__data.frames;\n\t\t\t\t\t\tdelete asset.resource.__data;\n\t\t\t\t}\n\t\t\t\tconst texture = asset.resource.texture;\n\t\t\t\tif (texture) {\n\t\t\t\t\t\ttexture.name = asset.name;\n\t\t\t\t\t\tif (asset.data.hasOwnProperty('minfilter') && texture.minFilter !== JSON_FILTER_MODE$1[asset.data.minfilter]) {\n\t\t\t\t\t\t\t\ttexture.minFilter = JSON_FILTER_MODE$1[asset.data.minfilter];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (asset.data.hasOwnProperty('magfilter') && texture.magFilter !== JSON_FILTER_MODE$1[asset.data.magfilter]) {\n\t\t\t\t\t\t\t\ttexture.magFilter = JSON_FILTER_MODE$1[asset.data.magfilter];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (asset.data.hasOwnProperty('addressu') && texture.addressU !== JSON_ADDRESS_MODE$1[asset.data.addressu]) {\n\t\t\t\t\t\t\t\ttexture.addressU = JSON_ADDRESS_MODE$1[asset.data.addressu];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (asset.data.hasOwnProperty('addressv') && texture.addressV !== JSON_ADDRESS_MODE$1[asset.data.addressv]) {\n\t\t\t\t\t\t\t\ttexture.addressV = JSON_ADDRESS_MODE$1[asset.data.addressv];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (asset.data.hasOwnProperty('mipmaps') && texture.mipmaps !== asset.data.mipmaps) {\n\t\t\t\t\t\t\t\ttexture.mipmaps = asset.data.mipmaps;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (asset.data.hasOwnProperty('anisotropy') && texture.anisotropy !== asset.data.anisotropy) {\n\t\t\t\t\t\t\t\ttexture.anisotropy = asset.data.anisotropy;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (asset.data.hasOwnProperty('rgbm')) {\n\t\t\t\t\t\t\t\tconst type = asset.data.rgbm ? TEXTURETYPE_RGBM : TEXTURETYPE_DEFAULT;\n\t\t\t\t\t\t\t\tif (texture.type !== type) {\n\t\t\t\t\t\t\t\t\t\ttexture.type = type;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tasset.resource.texture = texture;\n\t\t\t\tconst frames = {};\n\t\t\t\tfor(const key in asset.data.frames){\n\t\t\t\t\t\tconst frame = asset.data.frames[key];\n\t\t\t\t\t\tframes[key] = {\n\t\t\t\t\t\t\t\trect: new Vec4(frame.rect),\n\t\t\t\t\t\t\t\tpivot: new Vec2(frame.pivot),\n\t\t\t\t\t\t\t\tborder: new Vec4(frame.border)\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tasset.resource.frames = frames;\n\t\t\t\tasset.off('change', this._onAssetChange, this);\n\t\t\t\tasset.on('change', this._onAssetChange, this);\n\t\t}\n\t\t_onAssetChange(asset, attribute, value) {\n\t\t\t\tlet frame;\n\t\t\t\tif (attribute === 'data' || attribute === 'data.frames') {\n\t\t\t\t\t\tconst frames = {};\n\t\t\t\t\t\tfor(const key in value.frames){\n\t\t\t\t\t\t\t\tframe = value.frames[key];\n\t\t\t\t\t\t\t\tframes[key] = {\n\t\t\t\t\t\t\t\t\t\trect: new Vec4(frame.rect),\n\t\t\t\t\t\t\t\t\t\tpivot: new Vec2(frame.pivot),\n\t\t\t\t\t\t\t\t\t\tborder: new Vec4(frame.border)\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t\tasset.resource.frames = frames;\n\t\t\t\t} else {\n\t\t\t\t\t\tconst match = attribute.match(regexFrame);\n\t\t\t\t\t\tif (match) {\n\t\t\t\t\t\t\t\tconst frameKey = match[1];\n\t\t\t\t\t\t\t\tif (value) {\n\t\t\t\t\t\t\t\t\t\tif (!asset.resource.frames[frameKey]) {\n\t\t\t\t\t\t\t\t\t\t\t\tasset.resource.frames[frameKey] = {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\trect: new Vec4(value.rect),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tpivot: new Vec2(value.pivot),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tborder: new Vec4(value.border)\n\t\t\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tframe = asset.resource.frames[frameKey];\n\t\t\t\t\t\t\t\t\t\t\t\tframe.rect.set(value.rect[0], value.rect[1], value.rect[2], value.rect[3]);\n\t\t\t\t\t\t\t\t\t\t\t\tframe.pivot.set(value.pivot[0], value.pivot[1]);\n\t\t\t\t\t\t\t\t\t\t\t\tframe.border.set(value.border[0], value.border[1], value.border[2], value.border[3]);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tasset.resource.fire('set:frame', frameKey, asset.resource.frames[frameKey]);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tif (asset.resource.frames[frameKey]) {\n\t\t\t\t\t\t\t\t\t\t\t\tdelete asset.resource.frames[frameKey];\n\t\t\t\t\t\t\t\t\t\t\t\tasset.resource.fire('remove:frame', frameKey);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n}\n\nfunction BasisWorker() {\n\t\tconst BASIS_FORMAT = {\n\t\t\t\tcTFETC1: 0,\n\t\t\t\tcTFETC2: 1,\n\t\t\t\tcTFBC1: 2,\n\t\t\t\tcTFBC3: 3,\n\t\t\t\tcTFPVRTC1_4_RGB: 8,\n\t\t\t\tcTFPVRTC1_4_RGBA: 9,\n\t\t\t\tcTFASTC_4x4: 10,\n\t\t\t\tcTFATC_RGB: 11,\n\t\t\t\tcTFATC_RGBA_INTERPOLATED_ALPHA: 12,\n\t\t\t\tcTFRGBA32: 13,\n\t\t\t\tcTFRGB565: 14,\n\t\t\t\tcTFRGBA4444: 16\n\t\t};\n\t\tconst opaqueMapping = {\n\t\t\t\tastc: BASIS_FORMAT.cTFASTC_4x4,\n\t\t\t\tdxt: BASIS_FORMAT.cTFBC1,\n\t\t\t\tetc1: BASIS_FORMAT.cTFETC1,\n\t\t\t\tetc2: BASIS_FORMAT.cTFETC1,\n\t\t\t\tpvr: BASIS_FORMAT.cTFPVRTC1_4_RGB,\n\t\t\t\tatc: BASIS_FORMAT.cTFATC_RGB,\n\t\t\t\tnone: BASIS_FORMAT.cTFRGB565\n\t\t};\n\t\tconst alphaMapping = {\n\t\t\t\tastc: BASIS_FORMAT.cTFASTC_4x4,\n\t\t\t\tdxt: BASIS_FORMAT.cTFBC3,\n\t\t\t\tetc1: BASIS_FORMAT.cTFRGBA4444,\n\t\t\t\tetc2: BASIS_FORMAT.cTFETC2,\n\t\t\t\tpvr: BASIS_FORMAT.cTFPVRTC1_4_RGBA,\n\t\t\t\tatc: BASIS_FORMAT.cTFATC_RGBA_INTERPOLATED_ALPHA,\n\t\t\t\tnone: BASIS_FORMAT.cTFRGBA4444\n\t\t};\n\t\tconst PIXEL_FORMAT = {\n\t\t\t\tETC1: 21,\n\t\t\t\tETC2_RGB: 22,\n\t\t\t\tETC2_RGBA: 23,\n\t\t\t\tDXT1: 8,\n\t\t\t\tDXT5: 10,\n\t\t\t\tPVRTC_4BPP_RGB_1: 26,\n\t\t\t\tPVRTC_4BPP_RGBA_1: 27,\n\t\t\t\tASTC_4x4: 28,\n\t\t\t\tATC_RGB: 29,\n\t\t\t\tATC_RGBA: 30,\n\t\t\t\tR8_G8_B8_A8: 7,\n\t\t\t\tR5_G6_B5: 3,\n\t\t\t\tR4_G4_B4_A4: 5\n\t\t};\n\t\tconst basisToEngineMapping = (basisFormat, deviceDetails)=>{\n\t\t\t\tswitch(basisFormat){\n\t\t\t\t\t\tcase BASIS_FORMAT.cTFETC1:\n\t\t\t\t\t\t\t\treturn deviceDetails.formats.etc2 ? PIXEL_FORMAT.ETC2_RGB : PIXEL_FORMAT.ETC1;\n\t\t\t\t\t\tcase BASIS_FORMAT.cTFETC2:\n\t\t\t\t\t\t\t\treturn PIXEL_FORMAT.ETC2_RGBA;\n\t\t\t\t\t\tcase BASIS_FORMAT.cTFBC1:\n\t\t\t\t\t\t\t\treturn PIXEL_FORMAT.DXT1;\n\t\t\t\t\t\tcase BASIS_FORMAT.cTFBC3:\n\t\t\t\t\t\t\t\treturn PIXEL_FORMAT.DXT5;\n\t\t\t\t\t\tcase BASIS_FORMAT.cTFPVRTC1_4_RGB:\n\t\t\t\t\t\t\t\treturn PIXEL_FORMAT.PVRTC_4BPP_RGB_1;\n\t\t\t\t\t\tcase BASIS_FORMAT.cTFPVRTC1_4_RGBA:\n\t\t\t\t\t\t\t\treturn PIXEL_FORMAT.PVRTC_4BPP_RGBA_1;\n\t\t\t\t\t\tcase BASIS_FORMAT.cTFASTC_4x4:\n\t\t\t\t\t\t\t\treturn PIXEL_FORMAT.ASTC_4x4;\n\t\t\t\t\t\tcase BASIS_FORMAT.cTFATC_RGB:\n\t\t\t\t\t\t\t\treturn PIXEL_FORMAT.ATC_RGB;\n\t\t\t\t\t\tcase BASIS_FORMAT.cTFATC_RGBA_INTERPOLATED_ALPHA:\n\t\t\t\t\t\t\t\treturn PIXEL_FORMAT.ATC_RGBA;\n\t\t\t\t\t\tcase BASIS_FORMAT.cTFRGBA32:\n\t\t\t\t\t\t\t\treturn PIXEL_FORMAT.R8_G8_B8_A8;\n\t\t\t\t\t\tcase BASIS_FORMAT.cTFRGB565:\n\t\t\t\t\t\t\t\treturn PIXEL_FORMAT.R5_G6_B5;\n\t\t\t\t\t\tcase BASIS_FORMAT.cTFRGBA4444:\n\t\t\t\t\t\t\t\treturn PIXEL_FORMAT.R4_G4_B4_A4;\n\t\t\t\t}\n\t\t};\n\t\tconst unswizzleGGGR = (data)=>{\n\t\t\t\tconst genB = function(R, G) {\n\t\t\t\t\t\tconst r = R * (2.0 / 255.0) - 1.0;\n\t\t\t\t\t\tconst g = G * (2.0 / 255.0) - 1.0;\n\t\t\t\t\t\tconst b = Math.sqrt(1.0 - Math.min(1.0, r * r + g * g));\n\t\t\t\t\t\treturn Math.max(0, Math.min(255, Math.floor((b + 1.0) * 0.5 * 255.0)));\n\t\t\t\t};\n\t\t\t\tfor(let offset = 0; offset < data.length; offset += 4){\n\t\t\t\t\t\tconst R = data[offset + 3];\n\t\t\t\t\t\tconst G = data[offset + 1];\n\t\t\t\t\t\tdata[offset + 0] = R;\n\t\t\t\t\t\tdata[offset + 2] = genB(R, G);\n\t\t\t\t\t\tdata[offset + 3] = 255;\n\t\t\t\t}\n\t\t\t\treturn data;\n\t\t};\n\t\tconst pack565 = (data)=>{\n\t\t\t\tconst result = new Uint16Array(data.length / 4);\n\t\t\t\tfor(let offset = 0; offset < data.length; offset += 4){\n\t\t\t\t\t\tconst R = data[offset + 0];\n\t\t\t\t\t\tconst G = data[offset + 1];\n\t\t\t\t\t\tconst B = data[offset + 2];\n\t\t\t\t\t\tresult[offset / 4] = (R & 0xf8) << 8 | (G & 0xfc) << 3 | B >> 3;\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t};\n\t\tconst isPOT = (width, height)=>{\n\t\t\t\treturn (width & width - 1) === 0 && (height & height - 1) === 0;\n\t\t};\n\t\tconst performanceNow = ()=>{\n\t\t\t\treturn typeof performance !== 'undefined' ? performance.now() : 0;\n\t\t};\n\t\tlet basis;\n\t\tlet rgbPriority;\n\t\tlet rgbaPriority;\n\t\tconst chooseTargetFormat = (deviceDetails, hasAlpha, isUASTC)=>{\n\t\t\t\tif (isUASTC) {\n\t\t\t\t\t\tif (deviceDetails.formats.astc) {\n\t\t\t\t\t\t\t\treturn 'astc';\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tif (hasAlpha) {\n\t\t\t\t\t\t\t\tif (deviceDetails.formats.etc2) {\n\t\t\t\t\t\t\t\t\t\treturn 'etc2';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (deviceDetails.formats.etc2) {\n\t\t\t\t\t\t\t\t\t\treturn 'etc2';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (deviceDetails.formats.etc1) {\n\t\t\t\t\t\t\t\t\t\treturn 'etc1';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst testInOrder = (priority)=>{\n\t\t\t\t\t\tfor(let i = 0; i < priority.length; ++i){\n\t\t\t\t\t\t\t\tconst format = priority[i];\n\t\t\t\t\t\t\t\tif (deviceDetails.formats[format]) {\n\t\t\t\t\t\t\t\t\t\treturn format;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn 'none';\n\t\t\t\t};\n\t\t\t\treturn testInOrder(hasAlpha ? rgbaPriority : rgbPriority);\n\t\t};\n\t\tconst dimensionsValid = (width, height, format)=>{\n\t\t\t\tswitch(format){\n\t\t\t\t\t\tcase BASIS_FORMAT.cTFETC1:\n\t\t\t\t\t\tcase BASIS_FORMAT.cTFETC2:\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\tcase BASIS_FORMAT.cTFBC1:\n\t\t\t\t\t\tcase BASIS_FORMAT.cTFBC3:\n\t\t\t\t\t\t\t\treturn (width & 0x3) === 0 && (height & 0x3) === 0;\n\t\t\t\t\t\tcase BASIS_FORMAT.cTFPVRTC1_4_RGB:\n\t\t\t\t\t\tcase BASIS_FORMAT.cTFPVRTC1_4_RGBA:\n\t\t\t\t\t\t\t\treturn isPOT(width, height);\n\t\t\t\t\t\tcase BASIS_FORMAT.cTFASTC_4x4:\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\tcase BASIS_FORMAT.cTFATC_RGB:\n\t\t\t\t\t\tcase BASIS_FORMAT.cTFATC_RGBA_INTERPOLATED_ALPHA:\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t};\n\t\tconst transcodeKTX2 = (url, data, options)=>{\n\t\t\t\tif (!basis.KTX2File) {\n\t\t\t\t\t\tthrow new Error('Basis transcoder module does not include support for KTX2.');\n\t\t\t\t}\n\t\t\t\tconst funcStart = performanceNow();\n\t\t\t\tconst basisFile = new basis.KTX2File(new Uint8Array(data));\n\t\t\t\tconst width = basisFile.getWidth();\n\t\t\t\tconst height = basisFile.getHeight();\n\t\t\t\tconst levels = basisFile.getLevels();\n\t\t\t\tconst hasAlpha = !!basisFile.getHasAlpha();\n\t\t\t\tconst isUASTC = basisFile.isUASTC && basisFile.isUASTC();\n\t\t\t\tif (!width || !height || !levels) {\n\t\t\t\t\t\tbasisFile.close();\n\t\t\t\t\t\tbasisFile.delete();\n\t\t\t\t\t\tthrow new Error(`Invalid image dimensions url=${url} width=${width} height=${height} levels=${levels}`);\n\t\t\t\t}\n\t\t\t\tconst format = chooseTargetFormat(options.deviceDetails, hasAlpha, isUASTC);\n\t\t\t\tconst unswizzle = !!options.isGGGR && format === 'pvr';\n\t\t\t\tlet basisFormat;\n\t\t\t\tif (unswizzle) {\n\t\t\t\t\t\tbasisFormat = BASIS_FORMAT.cTFRGBA32;\n\t\t\t\t} else {\n\t\t\t\t\t\tbasisFormat = hasAlpha ? alphaMapping[format] : opaqueMapping[format];\n\t\t\t\t\t\tif (!dimensionsValid(width, height, basisFormat)) {\n\t\t\t\t\t\t\t\tbasisFormat = hasAlpha ? BASIS_FORMAT.cTFRGBA32 : BASIS_FORMAT.cTFRGB565;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!basisFile.startTranscoding()) {\n\t\t\t\t\t\tbasisFile.close();\n\t\t\t\t\t\tbasisFile.delete();\n\t\t\t\t\t\tthrow new Error(`Failed to start transcoding url=${url}`);\n\t\t\t\t}\n\t\t\t\tlet i;\n\t\t\t\tconst levelData = [];\n\t\t\t\tfor(let mip = 0; mip < levels; ++mip){\n\t\t\t\t\t\tconst dstSize = basisFile.getImageTranscodedSizeInBytes(mip, 0, 0, basisFormat);\n\t\t\t\t\t\tconst dst = new Uint8Array(dstSize);\n\t\t\t\t\t\tif (!basisFile.transcodeImage(dst, mip, 0, 0, basisFormat, 0, -1, -1)) {\n\t\t\t\t\t\t\t\tbasisFile.close();\n\t\t\t\t\t\t\t\tbasisFile.delete();\n\t\t\t\t\t\t\t\tthrow new Error(`Failed to transcode image url=${url}`);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst is16BitFormat = basisFormat === BASIS_FORMAT.cTFRGB565 || basisFormat === BASIS_FORMAT.cTFRGBA4444;\n\t\t\t\t\t\tlevelData.push(is16BitFormat ? new Uint16Array(dst.buffer) : dst);\n\t\t\t\t}\n\t\t\t\tbasisFile.close();\n\t\t\t\tbasisFile.delete();\n\t\t\t\tif (unswizzle) {\n\t\t\t\t\t\tbasisFormat = BASIS_FORMAT.cTFRGB565;\n\t\t\t\t\t\tfor(i = 0; i < levelData.length; ++i){\n\t\t\t\t\t\t\t\tlevelData[i] = pack565(unswizzleGGGR(levelData[i]));\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\t\tformat: basisToEngineMapping(basisFormat, options.deviceDetails),\n\t\t\t\t\t\twidth: width,\n\t\t\t\t\t\theight: height,\n\t\t\t\t\t\tlevels: levelData,\n\t\t\t\t\t\tcubemap: false,\n\t\t\t\t\t\ttranscodeTime: performanceNow() - funcStart,\n\t\t\t\t\t\turl: url,\n\t\t\t\t\t\tunswizzledGGGR: unswizzle\n\t\t\t\t};\n\t\t};\n\t\tconst transcodeBasis = (url, data, options)=>{\n\t\t\t\tconst funcStart = performanceNow();\n\t\t\t\tconst basisFile = new basis.BasisFile(new Uint8Array(data));\n\t\t\t\tconst width = basisFile.getImageWidth(0, 0);\n\t\t\t\tconst height = basisFile.getImageHeight(0, 0);\n\t\t\t\tconst images = basisFile.getNumImages();\n\t\t\t\tconst levels = basisFile.getNumLevels(0);\n\t\t\t\tconst hasAlpha = !!basisFile.getHasAlpha();\n\t\t\t\tconst isUASTC = basisFile.isUASTC && basisFile.isUASTC();\n\t\t\t\tif (!width || !height || !images || !levels) {\n\t\t\t\t\t\tbasisFile.close();\n\t\t\t\t\t\tbasisFile.delete();\n\t\t\t\t\t\tthrow new Error(`Invalid image dimensions url=${url} width=${width} height=${height} images=${images} levels=${levels}`);\n\t\t\t\t}\n\t\t\t\tconst format = chooseTargetFormat(options.deviceDetails, hasAlpha, isUASTC);\n\t\t\t\tconst unswizzle = !!options.isGGGR && format === 'pvr';\n\t\t\t\tlet basisFormat;\n\t\t\t\tif (unswizzle) {\n\t\t\t\t\t\tbasisFormat = BASIS_FORMAT.cTFRGBA32;\n\t\t\t\t} else {\n\t\t\t\t\t\tbasisFormat = hasAlpha ? alphaMapping[format] : opaqueMapping[format];\n\t\t\t\t\t\tif (!dimensionsValid(width, height, basisFormat)) {\n\t\t\t\t\t\t\t\tbasisFormat = hasAlpha ? BASIS_FORMAT.cTFRGBA32 : BASIS_FORMAT.cTFRGB565;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!basisFile.startTranscoding()) {\n\t\t\t\t\t\tbasisFile.close();\n\t\t\t\t\t\tbasisFile.delete();\n\t\t\t\t\t\tthrow new Error(`Failed to start transcoding url=${url}`);\n\t\t\t\t}\n\t\t\t\tlet i;\n\t\t\t\tconst levelData = [];\n\t\t\t\tfor(let mip = 0; mip < levels; ++mip){\n\t\t\t\t\t\tconst dstSize = basisFile.getImageTranscodedSizeInBytes(0, mip, basisFormat);\n\t\t\t\t\t\tconst dst = new Uint8Array(dstSize);\n\t\t\t\t\t\tif (!basisFile.transcodeImage(dst, 0, mip, basisFormat, 0, 0)) {\n\t\t\t\t\t\t\t\tif (mip === levels - 1 && dstSize === levelData[mip - 1].buffer.byteLength) {\n\t\t\t\t\t\t\t\t\t\tdst.set(new Uint8Array(levelData[mip - 1].buffer));\n\t\t\t\t\t\t\t\t\t\tconsole.warn(`Failed to transcode last mipmap level, using previous level instead url=${url}`);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tbasisFile.close();\n\t\t\t\t\t\t\t\t\t\tbasisFile.delete();\n\t\t\t\t\t\t\t\t\t\tthrow new Error(`Failed to transcode image url=${url}`);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst is16BitFormat = basisFormat === BASIS_FORMAT.cTFRGB565 || basisFormat === BASIS_FORMAT.cTFRGBA4444;\n\t\t\t\t\t\tlevelData.push(is16BitFormat ? new Uint16Array(dst.buffer) : dst);\n\t\t\t\t}\n\t\t\t\tbasisFile.close();\n\t\t\t\tbasisFile.delete();\n\t\t\t\tif (unswizzle) {\n\t\t\t\t\t\tbasisFormat = BASIS_FORMAT.cTFRGB565;\n\t\t\t\t\t\tfor(i = 0; i < levelData.length; ++i){\n\t\t\t\t\t\t\t\tlevelData[i] = pack565(unswizzleGGGR(levelData[i]));\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\t\tformat: basisToEngineMapping(basisFormat, options.deviceDetails),\n\t\t\t\t\t\twidth: width,\n\t\t\t\t\t\theight: height,\n\t\t\t\t\t\tlevels: levelData,\n\t\t\t\t\t\tcubemap: false,\n\t\t\t\t\t\ttranscodeTime: performanceNow() - funcStart,\n\t\t\t\t\t\turl: url,\n\t\t\t\t\t\tunswizzledGGGR: unswizzle\n\t\t\t\t};\n\t\t};\n\t\tconst transcode = (url, data, options)=>{\n\t\t\t\treturn options.isKTX2 ? transcodeKTX2(url, data, options) : transcodeBasis(url, data, options);\n\t\t};\n\t\tconst workerTranscode = (url, data, options)=>{\n\t\t\t\ttry {\n\t\t\t\t\t\tconst result = transcode(url, data, options);\n\t\t\t\t\t\tresult.levels = result.levels.map((v)=>v.buffer);\n\t\t\t\t\t\tself.postMessage({\n\t\t\t\t\t\t\t\turl: url,\n\t\t\t\t\t\t\t\tdata: result\n\t\t\t\t\t\t}, result.levels);\n\t\t\t\t} catch (err) {\n\t\t\t\t\t\tself.postMessage({\n\t\t\t\t\t\t\t\turl: url,\n\t\t\t\t\t\t\t\terr: err\n\t\t\t\t\t\t}, null);\n\t\t\t\t}\n\t\t};\n\t\tconst workerInit = (config, callback)=>{\n\t\t\t\tconst instantiateWasmFunc = (imports, successCallback)=>{\n\t\t\t\t\t\tWebAssembly.instantiate(config.module, imports).then((result)=>{\n\t\t\t\t\t\t\t\tsuccessCallback(result);\n\t\t\t\t\t\t}).catch((reason)=>{\n\t\t\t\t\t\t\t\tconsole.error(`instantiate failed + ${reason}`);\n\t\t\t\t\t\t});\n\t\t\t\t\t\treturn {};\n\t\t\t\t};\n\t\t\t\tself.BASIS(config.module ? {\n\t\t\t\t\t\tinstantiateWasm: instantiateWasmFunc\n\t\t\t\t} : null).then((instance)=>{\n\t\t\t\t\t\tinstance.initializeBasis();\n\t\t\t\t\t\tbasis = instance;\n\t\t\t\t\t\trgbPriority = config.rgbPriority;\n\t\t\t\t\t\trgbaPriority = config.rgbaPriority;\n\t\t\t\t\t\tcallback(null);\n\t\t\t\t});\n\t\t};\n\t\tconst queue = [];\n\t\tself.onmessage = (message)=>{\n\t\t\t\tconst data = message.data;\n\t\t\t\tswitch(data.type){\n\t\t\t\t\t\tcase 'init':\n\t\t\t\t\t\t\t\tworkerInit(data.config, ()=>{\n\t\t\t\t\t\t\t\t\t\tfor(let i = 0; i < queue.length; ++i){\n\t\t\t\t\t\t\t\t\t\t\t\tworkerTranscode(queue[i].url, queue[i].data, queue[i].options);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tqueue.length = 0;\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'transcode':\n\t\t\t\t\t\t\t\tif (basis) {\n\t\t\t\t\t\t\t\t\t\tworkerTranscode(data.url, data.data, data.options);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tqueue.push(data);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t};\n}\n\nconst getCompressionFormats = (device)=>{\n\t\treturn {\n\t\t\t\tastc: !!device.extCompressedTextureASTC,\n\t\t\t\tatc: !!device.extCompressedTextureATC,\n\t\t\t\tdxt: !!device.extCompressedTextureS3TC,\n\t\t\t\tetc1: !!device.extCompressedTextureETC1,\n\t\t\t\tetc2: !!device.extCompressedTextureETC,\n\t\t\t\tpvr: !!device.extCompressedTexturePVRTC\n\t\t};\n};\nconst prepareWorkerModules = (config, callback)=>{\n\t\tconst getWorkerBlob = (basisCode)=>{\n\t\t\t\tconst code = [\n\t\t\t\t\t\t'/* basis */',\n\t\t\t\t\t\tbasisCode,\n\t\t\t\t\t\t'',\n\t\t\t\t\t\t`(${BasisWorker.toString()})()\\n\\n`\n\t\t\t\t].join('\\n');\n\t\t\t\treturn new Blob([\n\t\t\t\t\t\tcode\n\t\t\t\t], {\n\t\t\t\t\t\ttype: \"application/javascript\"\n\t\t\t\t});\n\t\t};\n\t\tconst wasmSupported = ()=>{\n\t\t\t\ttry {\n\t\t\t\t\t\tif (typeof WebAssembly === 'object' && typeof WebAssembly.instantiate === 'function') {\n\t\t\t\t\t\t\t\tconst module = new WebAssembly.Module(Uint8Array.of(0x0, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00));\n\t\t\t\t\t\t\t\tif (module instanceof WebAssembly.Module) {\n\t\t\t\t\t\t\t\t\t\treturn new WebAssembly.Instance(module) instanceof WebAssembly.Instance;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t} catch (e) {}\n\t\t\t\treturn false;\n\t\t};\n\t\tconst sendResponse = (basisCode, module)=>{\n\t\t\t\tcallback(null, {\n\t\t\t\t\t\tworkerUrl: URL.createObjectURL(getWorkerBlob(basisCode)),\n\t\t\t\t\t\tmodule: module,\n\t\t\t\t\t\trgbPriority: config.rgbPriority,\n\t\t\t\t\t\trgbaPriority: config.rgbaPriority\n\t\t\t\t});\n\t\t};\n\t\tconst options = {\n\t\t\t\tcache: true,\n\t\t\t\tresponseType: 'text',\n\t\t\t\tretry: config.maxRetries > 0,\n\t\t\t\tmaxRetries: config.maxRetries\n\t\t};\n\t\tif (config.glueUrl && config.wasmUrl && wasmSupported()) {\n\t\t\t\tlet basisCode = null;\n\t\t\t\tlet module = null;\n\t\t\t\thttp.get(config.glueUrl, options, (err, response)=>{\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\tcallback(err);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (module) {\n\t\t\t\t\t\t\t\t\t\tsendResponse(response, module);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tbasisCode = response;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tconst fetchPromise = fetch(config.wasmUrl);\n\t\t\t\tconst compileManual = ()=>{\n\t\t\t\t\t\tfetchPromise.then((result)=>result.arrayBuffer()).then((buffer)=>WebAssembly.compile(buffer)).then((module_)=>{\n\t\t\t\t\t\t\t\tif (basisCode) {\n\t\t\t\t\t\t\t\t\t\tsendResponse(basisCode, module_);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tmodule = module_;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}).catch((err)=>{\n\t\t\t\t\t\t\t\tcallback(err, null);\n\t\t\t\t\t\t});\n\t\t\t\t};\n\t\t\t\tif (WebAssembly.compileStreaming) {\n\t\t\t\t\t\tWebAssembly.compileStreaming(fetchPromise).then((module_)=>{\n\t\t\t\t\t\t\t\tif (basisCode) {\n\t\t\t\t\t\t\t\t\t\tsendResponse(basisCode, module_);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tmodule = module_;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}).catch((err)=>{\n\t\t\t\t\t\t\t\tcompileManual();\n\t\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t\tcompileManual();\n\t\t\t\t}\n\t\t} else {\n\t\t\t\thttp.get(config.fallbackUrl, options, (err, response)=>{\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\tcallback(err, null);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tsendResponse(response, null);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n};\nclass BasisQueue {\n\t\tconstructor(){\n\t\t\t\tthis.callbacks = {};\n\t\t\t\tthis.queue = [];\n\t\t\t\tthis.clients = [];\n\t\t}\n\t\tenqueueJob(url, data, callback, options) {\n\t\t\t\tif (this.callbacks.hasOwnProperty(url)) {\n\t\t\t\t\t\tthis.callbacks[url].push(callback);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.callbacks[url] = [\n\t\t\t\t\t\t\t\tcallback\n\t\t\t\t\t\t];\n\t\t\t\t\t\tconst job = {\n\t\t\t\t\t\t\t\turl: url,\n\t\t\t\t\t\t\t\tdata: data,\n\t\t\t\t\t\t\t\toptions: options\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (this.clients.length > 0) {\n\t\t\t\t\t\t\t\tthis.clients.shift().run(job);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.queue.push(job);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tenqueueClient(client) {\n\t\t\t\tif (this.queue.length > 0) {\n\t\t\t\t\t\tclient.run(this.queue.shift());\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.clients.push(client);\n\t\t\t\t}\n\t\t}\n\t\thandleResponse(url, err, data) {\n\t\t\t\tconst callback = this.callbacks[url];\n\t\t\t\tif (err) {\n\t\t\t\t\t\tfor(let i = 0; i < callback.length; ++i){\n\t\t\t\t\t\t\t\tcallback[i](err);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tif (data.format === PIXELFORMAT_RGB565 || data.format === PIXELFORMAT_RGBA4) {\n\t\t\t\t\t\t\t\tdata.levels = data.levels.map((v)=>{\n\t\t\t\t\t\t\t\t\t\treturn new Uint16Array(v);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tdata.levels = data.levels.map((v)=>{\n\t\t\t\t\t\t\t\t\t\treturn new Uint8Array(v);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor(let i = 0; i < callback.length; ++i){\n\t\t\t\t\t\t\t\tcallback[i](null, data);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tdelete this.callbacks[url];\n\t\t}\n}\nclass BasisClient {\n\t\tconstructor(queue, config, eager){\n\t\t\t\tthis.queue = queue;\n\t\t\t\tthis.worker = new Worker(config.workerUrl);\n\t\t\t\tthis.worker.addEventListener('message', (message)=>{\n\t\t\t\t\t\tconst data = message.data;\n\t\t\t\t\t\tthis.queue.handleResponse(data.url, data.err, data.data);\n\t\t\t\t\t\tif (!this.eager) {\n\t\t\t\t\t\t\t\tthis.queue.enqueueClient(this);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tthis.worker.postMessage({\n\t\t\t\t\t\ttype: 'init',\n\t\t\t\t\t\tconfig: config\n\t\t\t\t});\n\t\t\t\tthis.eager = eager;\n\t\t}\n\t\trun(job) {\n\t\t\t\tconst transfer = [];\n\t\t\t\tif (job.data instanceof ArrayBuffer) {\n\t\t\t\t\t\ttransfer.push(job.data);\n\t\t\t\t}\n\t\t\t\tthis.worker.postMessage({\n\t\t\t\t\t\ttype: 'transcode',\n\t\t\t\t\t\turl: job.url,\n\t\t\t\t\t\tformat: job.format,\n\t\t\t\t\t\tdata: job.data,\n\t\t\t\t\t\toptions: job.options\n\t\t\t\t}, transfer);\n\t\t\t\tif (this.eager) {\n\t\t\t\t\t\tthis.queue.enqueueClient(this);\n\t\t\t\t}\n\t\t}\n}\nconst defaultNumWorkers = 1;\nconst defaultRgbPriority = [\n\t\t'etc2',\n\t\t'etc1',\n\t\t'astc',\n\t\t'dxt',\n\t\t'pvr',\n\t\t'atc'\n];\nconst defaultRgbaPriority = [\n\t\t'astc',\n\t\t'dxt',\n\t\t'etc2',\n\t\t'pvr',\n\t\t'atc'\n];\nconst defaultMaxRetries = 5;\nconst queue = new BasisQueue();\nlet lazyConfig = null;\nlet initializing = false;\nfunction basisInitialize(config) {\n\t\tif (initializing) {\n\t\t\t\treturn;\n\t\t}\n\t\tif (!config) {\n\t\t\t\tconfig = lazyConfig || {};\n\t\t} else if (config.lazyInit) {\n\t\t\t\tlazyConfig = config;\n\t\t\t\treturn;\n\t\t}\n\t\tif (!config.glueUrl || !config.wasmUrl || !config.fallbackUrl) {\n\t\t\t\tconst moduleConfig = WasmModule.getConfig('BASIS');\n\t\t\t\tif (moduleConfig) {\n\t\t\t\t\t\tconfig = {\n\t\t\t\t\t\t\t\tglueUrl: moduleConfig.glueUrl,\n\t\t\t\t\t\t\t\twasmUrl: moduleConfig.wasmUrl,\n\t\t\t\t\t\t\t\tfallbackUrl: moduleConfig.fallbackUrl,\n\t\t\t\t\t\t\t\tnumWorkers: moduleConfig.numWorkers\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t}\n\t\tif (config.glueUrl || config.wasmUrl || config.fallbackUrl) {\n\t\t\t\tinitializing = true;\n\t\t\t\tconst numWorkers = Math.max(1, Math.min(16, config.numWorkers || defaultNumWorkers));\n\t\t\t\tconst eagerWorkers = config.numWorkers === 1 || (config.hasOwnProperty('eagerWorkers') ? config.eagerWorkers : true);\n\t\t\t\tconfig.rgbPriority = config.rgbPriority || defaultRgbPriority;\n\t\t\t\tconfig.rgbaPriority = config.rgbaPriority || defaultRgbaPriority;\n\t\t\t\tconfig.maxRetries = config.hasOwnProperty('maxRetries') ? config.maxRetries : defaultMaxRetries;\n\t\t\t\tprepareWorkerModules(config, (err, clientConfig)=>{\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\tconsole.error(`failed to initialize basis worker: ${err}`);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tfor(let i = 0; i < numWorkers; ++i){\n\t\t\t\t\t\t\t\t\t\tqueue.enqueueClient(new BasisClient(queue, clientConfig, eagerWorkers));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n}\nlet deviceDetails = null;\nfunction basisTranscode(device, url, data, callback, options) {\n\t\tbasisInitialize();\n\t\tif (!deviceDetails) {\n\t\t\t\tdeviceDetails = {\n\t\t\t\t\t\tformats: getCompressionFormats(device)\n\t\t\t\t};\n\t\t}\n\t\tqueue.enqueueJob(url, data, callback, {\n\t\t\t\tdeviceDetails: deviceDetails,\n\t\t\t\tisGGGR: !!options?.isGGGR,\n\t\t\t\tisKTX2: !!options?.isKTX2\n\t\t});\n\t\treturn initializing;\n}\n\nclass TextureParser {\n\t\tload(url, callback, asset) {\n\t\t\t\tthrow new Error('not implemented');\n\t\t}\n\t\topen(url, data, device) {\n\t\t\t\tthrow new Error('not implemented');\n\t\t}\n}\n\nclass BasisParser extends TextureParser {\n\t\tconstructor(registry, device){\n\t\t\t\tsuper();\n\t\t\t\tthis.device = device;\n\t\t\t\tthis.maxRetries = 0;\n\t\t}\n\t\tload(url, callback, asset) {\n\t\t\t\tconst device = this.device;\n\t\t\t\tconst transcode = (data)=>{\n\t\t\t\t\t\tconst basisModuleFound = basisTranscode(device, url.load, data, callback, {\n\t\t\t\t\t\t\t\tisGGGR: (asset?.file?.variants?.basis?.opt & 8) !== 0\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (!basisModuleFound) {\n\t\t\t\t\t\t\t\tcallback(`Basis module not found. Asset [${asset.name}](${asset.getFileUrl()}) basis texture variant will not be loaded.`);\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tAsset.fetchArrayBuffer(url.load, (err, result)=>{\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\tcallback(err);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ttranscode(result);\n\t\t\t\t\t\t}\n\t\t\t\t}, asset, this.maxRetries);\n\t\t}\n\t\topen(url, data, device, textureOptions = {}) {\n\t\t\t\tconst format = textureOptions.srgb ? pixelFormatLinearToGamma(data.format) : data.format;\n\t\t\t\tconst texture = new Texture(device, {\n\t\t\t\t\t\tname: url,\n\t\t\t\t\t\taddressU: data.cubemap ? ADDRESS_CLAMP_TO_EDGE : ADDRESS_REPEAT,\n\t\t\t\t\t\taddressV: data.cubemap ? ADDRESS_CLAMP_TO_EDGE : ADDRESS_REPEAT,\n\t\t\t\t\t\twidth: data.width,\n\t\t\t\t\t\theight: data.height,\n\t\t\t\t\t\tformat: format,\n\t\t\t\t\t\tcubemap: data.cubemap,\n\t\t\t\t\t\tlevels: data.levels,\n\t\t\t\t\t\t...textureOptions\n\t\t\t\t});\n\t\t\t\ttexture.upload();\n\t\t\t\treturn texture;\n\t\t}\n}\n\nclass ImgParser extends TextureParser {\n\t\tconstructor(registry, device){\n\t\t\t\tsuper();\n\t\t\t\tthis.crossOrigin = registry.prefix ? 'anonymous' : null;\n\t\t\t\tthis.maxRetries = 0;\n\t\t\t\tthis.device = device;\n\t\t}\n\t\tload(url, callback, asset) {\n\t\t\t\tconst hasContents = !!asset?.file?.contents;\n\t\t\t\tif (hasContents) {\n\t\t\t\t\t\tif (this.device.supportsImageBitmap) {\n\t\t\t\t\t\t\t\tthis._loadImageBitmapFromBlob(new Blob([\n\t\t\t\t\t\t\t\t\t\tasset.file.contents\n\t\t\t\t\t\t\t\t]), callback);\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\turl = {\n\t\t\t\t\t\t\t\tload: URL.createObjectURL(new Blob([\n\t\t\t\t\t\t\t\t\t\tasset.file.contents\n\t\t\t\t\t\t\t\t])),\n\t\t\t\t\t\t\t\toriginal: url.original\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst handler = (err, result)=>{\n\t\t\t\t\t\tif (hasContents) {\n\t\t\t\t\t\t\t\tURL.revokeObjectURL(url.load);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcallback(err, result);\n\t\t\t\t};\n\t\t\t\tlet crossOrigin;\n\t\t\t\tif (asset && asset.options && asset.options.hasOwnProperty('crossOrigin')) {\n\t\t\t\t\t\tcrossOrigin = asset.options.crossOrigin;\n\t\t\t\t} else if (ABSOLUTE_URL.test(url.load)) {\n\t\t\t\t\t\tcrossOrigin = this.crossOrigin;\n\t\t\t\t}\n\t\t\t\tif (this.device.supportsImageBitmap) {\n\t\t\t\t\t\tthis._loadImageBitmap(url.load, url.original, crossOrigin, handler, asset);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._loadImage(url.load, url.original, crossOrigin, handler, asset);\n\t\t\t\t}\n\t\t}\n\t\topen(url, data, device, textureOptions = {}) {\n\t\t\t\tconst texture = new Texture(device, {\n\t\t\t\t\t\tname: url,\n\t\t\t\t\t\twidth: data.width,\n\t\t\t\t\t\theight: data.height,\n\t\t\t\t\t\tformat: textureOptions.srgb ? PIXELFORMAT_SRGBA8 : PIXELFORMAT_RGBA8,\n\t\t\t\t\t\t...textureOptions\n\t\t\t\t});\n\t\t\t\ttexture.setSource(data);\n\t\t\t\treturn texture;\n\t\t}\n\t\t_loadImage(url, originalUrl, crossOrigin, callback, asset) {\n\t\t\t\tconst image = new Image();\n\t\t\t\tif (crossOrigin) {\n\t\t\t\t\t\timage.crossOrigin = crossOrigin;\n\t\t\t\t}\n\t\t\t\tlet retries = 0;\n\t\t\t\tconst maxRetries = this.maxRetries;\n\t\t\t\tlet retryTimeout;\n\t\t\t\tconst dummySize = 1024 * 1024;\n\t\t\t\tasset?.fire('progress', 0, dummySize);\n\t\t\t\timage.onload = function() {\n\t\t\t\t\t\tasset?.fire('progress', dummySize, dummySize);\n\t\t\t\t\t\tcallback(null, image);\n\t\t\t\t};\n\t\t\t\timage.onerror = function() {\n\t\t\t\t\t\tif (retryTimeout) return;\n\t\t\t\t\t\tif (maxRetries > 0 && ++retries <= maxRetries) {\n\t\t\t\t\t\t\t\tconst retryDelay = Math.pow(2, retries) * 100;\n\t\t\t\t\t\t\t\tconsole.log(`Error loading Texture from: '${originalUrl}' - Retrying in ${retryDelay}ms...`);\n\t\t\t\t\t\t\t\tconst idx = url.indexOf('?');\n\t\t\t\t\t\t\t\tconst separator = idx >= 0 ? '&' : '?';\n\t\t\t\t\t\t\t\tretryTimeout = setTimeout(()=>{\n\t\t\t\t\t\t\t\t\t\timage.src = `${url + separator}retry=${Date.now()}`;\n\t\t\t\t\t\t\t\t\t\tretryTimeout = null;\n\t\t\t\t\t\t\t\t}, retryDelay);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcallback(`Error loading Texture from: '${originalUrl}'`);\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\timage.src = url;\n\t\t}\n\t\t_loadImageBitmap(url, originalUrl, crossOrigin, callback, asset) {\n\t\t\t\tconst options = {\n\t\t\t\t\t\tcache: true,\n\t\t\t\t\t\tresponseType: 'blob',\n\t\t\t\t\t\tretry: this.maxRetries > 0,\n\t\t\t\t\t\tmaxRetries: this.maxRetries,\n\t\t\t\t\t\tprogress: asset\n\t\t\t\t};\n\t\t\t\thttp.get(url, options, (err, blob)=>{\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\tcallback(err);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._loadImageBitmapFromBlob(blob, callback);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\t_loadImageBitmapFromBlob(blob, callback) {\n\t\t\t\tcreateImageBitmap(blob, {\n\t\t\t\t\t\tpremultiplyAlpha: 'none',\n\t\t\t\t\t\tcolorSpaceConversion: 'none'\n\t\t\t\t}).then((imageBitmap)=>callback(null, imageBitmap)).catch((e)=>callback(e));\n\t\t}\n}\n\nconst IDENTIFIER = [\n\t\t0x58544BAB,\n\t\t0xBB313120,\n\t\t0x0A1A0A0D\n];\nconst KNOWN_FORMATS = {\n\t\t0x83F0: PIXELFORMAT_DXT1,\n\t\t0x83F2: PIXELFORMAT_DXT3,\n\t\t0x83F3: PIXELFORMAT_DXT5,\n\t\t0x8D64: PIXELFORMAT_ETC1,\n\t\t0x9274: PIXELFORMAT_ETC2_RGB,\n\t\t0x9278: PIXELFORMAT_ETC2_RGBA,\n\t\t0x8C00: PIXELFORMAT_PVRTC_4BPP_RGB_1,\n\t\t0x8C01: PIXELFORMAT_PVRTC_2BPP_RGB_1,\n\t\t0x8C02: PIXELFORMAT_PVRTC_4BPP_RGBA_1,\n\t\t0x8C03: PIXELFORMAT_PVRTC_2BPP_RGBA_1,\n\t\t0x8051: PIXELFORMAT_RGB8,\n\t\t0x8058: PIXELFORMAT_RGBA8,\n\t\t0x8C41: PIXELFORMAT_SRGB8,\n\t\t0x8C43: PIXELFORMAT_SRGBA8,\n\t\t0x8C3A: PIXELFORMAT_111110F,\n\t\t0x881B: PIXELFORMAT_RGB16F,\n\t\t0x881A: PIXELFORMAT_RGBA16F\n};\nfunction createContainer(pixelFormat, buffer, byteOffset, byteSize) {\n\t\treturn pixelFormat === PIXELFORMAT_111110F ? new Uint32Array(buffer, byteOffset, byteSize / 4) : new Uint8Array(buffer, byteOffset, byteSize);\n}\nclass KtxParser extends TextureParser {\n\t\tconstructor(registry){\n\t\t\t\tsuper();\n\t\t\t\tthis.maxRetries = 0;\n\t\t}\n\t\tload(url, callback, asset) {\n\t\t\t\tAsset.fetchArrayBuffer(url.load, callback, asset, this.maxRetries);\n\t\t}\n\t\topen(url, data, device, textureOptions = {}) {\n\t\t\t\tconst textureData = this.parse(data);\n\t\t\t\tif (!textureData) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tconst format = textureOptions.srgb ? pixelFormatLinearToGamma(textureData.format) : textureData.format;\n\t\t\t\tconst texture = new Texture(device, {\n\t\t\t\t\t\tname: url,\n\t\t\t\t\t\taddressU: textureData.cubemap ? ADDRESS_CLAMP_TO_EDGE : ADDRESS_REPEAT,\n\t\t\t\t\t\taddressV: textureData.cubemap ? ADDRESS_CLAMP_TO_EDGE : ADDRESS_REPEAT,\n\t\t\t\t\t\twidth: textureData.width,\n\t\t\t\t\t\theight: textureData.height,\n\t\t\t\t\t\tformat: format,\n\t\t\t\t\t\tcubemap: textureData.cubemap,\n\t\t\t\t\t\tlevels: textureData.levels,\n\t\t\t\t\t\t...textureOptions\n\t\t\t\t});\n\t\t\t\ttexture.upload();\n\t\t\t\treturn texture;\n\t\t}\n\t\tparse(data) {\n\t\t\t\tconst dataU32 = new Uint32Array(data);\n\t\t\t\tif (IDENTIFIER[0] !== dataU32[0] || IDENTIFIER[1] !== dataU32[1] || IDENTIFIER[2] !== dataU32[2]) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tconst header = {\n\t\t\t\t\t\tendianness: dataU32[3],\n\t\t\t\t\t\tglType: dataU32[4],\n\t\t\t\t\t\tglTypeSize: dataU32[5],\n\t\t\t\t\t\tglFormat: dataU32[6],\n\t\t\t\t\t\tglInternalFormat: dataU32[7],\n\t\t\t\t\t\tglBaseInternalFormat: dataU32[8],\n\t\t\t\t\t\tpixelWidth: dataU32[9],\n\t\t\t\t\t\tpixelHeight: dataU32[10],\n\t\t\t\t\t\tpixelDepth: dataU32[11],\n\t\t\t\t\t\tnumberOfArrayElements: dataU32[12],\n\t\t\t\t\t\tnumberOfFaces: dataU32[13],\n\t\t\t\t\t\tnumberOfMipmapLevels: dataU32[14],\n\t\t\t\t\t\tbytesOfKeyValueData: dataU32[15]\n\t\t\t\t};\n\t\t\t\tif (header.pixelDepth > 1) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tif (header.numberOfArrayElements !== 0) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tconst format = KNOWN_FORMATS[header.glInternalFormat];\n\t\t\t\tif (format === undefined) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tlet offset = 16 + header.bytesOfKeyValueData / 4;\n\t\t\t\tconst isCubemap = header.numberOfFaces > 1;\n\t\t\t\tconst levels = [];\n\t\t\t\tfor(let mipmapLevel = 0; mipmapLevel < (header.numberOfMipmapLevels || 1); mipmapLevel++){\n\t\t\t\t\t\tconst imageSizeInBytes = dataU32[offset++];\n\t\t\t\t\t\tif (isCubemap) {\n\t\t\t\t\t\t\t\tlevels.push([]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst target = isCubemap ? levels[mipmapLevel] : levels;\n\t\t\t\t\t\tfor(let face = 0; face < (isCubemap ? 6 : 1); ++face){\n\t\t\t\t\t\t\t\ttarget.push(createContainer(format, data, offset * 4, imageSizeInBytes));\n\t\t\t\t\t\t\t\toffset += imageSizeInBytes + 3 >> 2;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\t\tformat: format,\n\t\t\t\t\t\twidth: header.pixelWidth,\n\t\t\t\t\t\theight: header.pixelHeight,\n\t\t\t\t\t\tlevels: levels,\n\t\t\t\t\t\tcubemap: isCubemap\n\t\t\t\t};\n\t\t}\n}\n\nconst KHRConstants = {\n\t\tKHR_DF_MODEL_UASTC: 166\n};\nclass Ktx2Parser extends TextureParser {\n\t\tconstructor(registry, device){\n\t\t\t\tsuper();\n\t\t\t\tthis.maxRetries = 0;\n\t\t\t\tthis.device = device;\n\t\t}\n\t\tload(url, callback, asset) {\n\t\t\t\tAsset.fetchArrayBuffer(url.load, (err, result)=>{\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\tcallback(err, result);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.parse(result, url, callback, asset);\n\t\t\t\t\t\t}\n\t\t\t\t}, asset, this.maxRetries);\n\t\t}\n\t\topen(url, data, device, textureOptions = {}) {\n\t\t\t\tconst format = textureOptions.srgb ? pixelFormatLinearToGamma(data.format) : data.format;\n\t\t\t\tconst texture = new Texture(device, {\n\t\t\t\t\t\tname: url,\n\t\t\t\t\t\taddressU: data.cubemap ? ADDRESS_CLAMP_TO_EDGE : ADDRESS_REPEAT,\n\t\t\t\t\t\taddressV: data.cubemap ? ADDRESS_CLAMP_TO_EDGE : ADDRESS_REPEAT,\n\t\t\t\t\t\twidth: data.width,\n\t\t\t\t\t\theight: data.height,\n\t\t\t\t\t\tformat: format,\n\t\t\t\t\t\tcubemap: data.cubemap,\n\t\t\t\t\t\tlevels: data.levels,\n\t\t\t\t\t\t...textureOptions\n\t\t\t\t});\n\t\t\t\ttexture.upload();\n\t\t\t\treturn texture;\n\t\t}\n\t\tparse(arraybuffer, url, callback, asset) {\n\t\t\t\tconst rs = new ReadStream(arraybuffer);\n\t\t\t\tconst magic = [\n\t\t\t\t\t\trs.readU32be(),\n\t\t\t\t\t\trs.readU32be(),\n\t\t\t\t\t\trs.readU32be()\n\t\t\t\t];\n\t\t\t\tif (magic[0] !== 0xAB4B5458 || magic[1] !== 0x203230BB || magic[2] !== 0x0D0A1A0A) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tconst header = {\n\t\t\t\t\t\tvkFormat: rs.readU32(),\n\t\t\t\t\t\ttypeSize: rs.readU32(),\n\t\t\t\t\t\tpixelWidth: rs.readU32(),\n\t\t\t\t\t\tpixelHeight: rs.readU32(),\n\t\t\t\t\t\tpixelDepth: rs.readU32(),\n\t\t\t\t\t\tlayerCount: rs.readU32(),\n\t\t\t\t\t\tfaceCount: rs.readU32(),\n\t\t\t\t\t\tlevelCount: rs.readU32(),\n\t\t\t\t\t\tsupercompressionScheme: rs.readU32()\n\t\t\t\t};\n\t\t\t\tconst index = {\n\t\t\t\t\t\tdfdByteOffset: rs.readU32(),\n\t\t\t\t\t\tdfdByteLength: rs.readU32(),\n\t\t\t\t\t\tkvdByteOffset: rs.readU32(),\n\t\t\t\t\t\tkvdByteLength: rs.readU32(),\n\t\t\t\t\t\tsgdByteOffset: rs.readU64(),\n\t\t\t\t\t\tsgdByteLength: rs.readU64()\n\t\t\t\t};\n\t\t\t\tconst levels = [];\n\t\t\t\tfor(let i = 0; i < Math.max(1, header.levelCount); ++i){\n\t\t\t\t\t\tlevels.push({\n\t\t\t\t\t\t\t\tbyteOffset: rs.readU64(),\n\t\t\t\t\t\t\t\tbyteLength: rs.readU64(),\n\t\t\t\t\t\t\t\tuncompressedByteLength: rs.readU64()\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tconst dfdTotalSize = rs.readU32();\n\t\t\t\tif (dfdTotalSize !== index.kvdByteOffset - index.dfdByteOffset) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\trs.skip(8);\n\t\t\t\tconst colorModel = rs.readU8();\n\t\t\t\trs.skip(index.dfdByteLength - 9);\n\t\t\t\trs.skip(index.kvdByteLength);\n\t\t\t\tif (header.supercompressionScheme === 1 || colorModel === KHRConstants.KHR_DF_MODEL_UASTC) {\n\t\t\t\t\t\tconst basisModuleFound = basisTranscode(this.device, url.load, arraybuffer, callback, {\n\t\t\t\t\t\t\t\tisGGGR: (asset?.file?.variants?.basis?.opt & 8) !== 0,\n\t\t\t\t\t\t\t\tisKTX2: true\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (!basisModuleFound) {\n\t\t\t\t\t\t\t\tcallback(`Basis module not found. Asset [${asset.name}](${asset.getFileUrl()}) basis texture variant will not be loaded.`);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tcallback('unsupported KTX2 pixel format');\n\t\t\t\t}\n\t\t}\n}\n\nclass DdsParser extends TextureParser {\n\t\tconstructor(registry){\n\t\t\t\tsuper();\n\t\t\t\tthis.maxRetries = 0;\n\t\t}\n\t\tload(url, callback, asset) {\n\t\t\t\tAsset.fetchArrayBuffer(url.load, callback, asset, this.maxRetries);\n\t\t}\n\t\topen(url, data, device, textureOptions = {}) {\n\t\t\t\tconst header = new Uint32Array(data, 0, 128 / 4);\n\t\t\t\tconst width = header[4];\n\t\t\t\tconst height = header[3];\n\t\t\t\tconst mips = Math.max(header[7], 1);\n\t\t\t\tconst isFourCc = header[20] === 4;\n\t\t\t\tconst fcc = header[21];\n\t\t\t\tconst bpp = header[22];\n\t\t\t\tconst isCubemap = header[28] === 65024;\n\t\t\t\tconst FCC_DXT1 = 827611204;\n\t\t\t\tconst FCC_DXT5 = 894720068;\n\t\t\t\tconst FCC_FP16 = 113;\n\t\t\t\tconst FCC_FP32 = 116;\n\t\t\t\tconst FCC_ETC1 = 826496069;\n\t\t\t\tconst FCC_PVRTC_2BPP_RGB_1 = 825438800;\n\t\t\t\tconst FCC_PVRTC_2BPP_RGBA_1 = 825504336;\n\t\t\t\tconst FCC_PVRTC_4BPP_RGB_1 = 825439312;\n\t\t\t\tconst FCC_PVRTC_4BPP_RGBA_1 = 825504848;\n\t\t\t\tlet compressed = false;\n\t\t\t\tlet etc1 = false;\n\t\t\t\tlet pvrtc2 = false;\n\t\t\t\tlet pvrtc4 = false;\n\t\t\t\tlet format = null;\n\t\t\t\tlet componentSize = 1;\n\t\t\t\tlet texture;\n\t\t\t\tif (isFourCc) {\n\t\t\t\t\t\tif (fcc === FCC_DXT1) {\n\t\t\t\t\t\t\t\tformat = PIXELFORMAT_DXT1;\n\t\t\t\t\t\t\t\tcompressed = true;\n\t\t\t\t\t\t} else if (fcc === FCC_DXT5) {\n\t\t\t\t\t\t\t\tformat = PIXELFORMAT_DXT5;\n\t\t\t\t\t\t\t\tcompressed = true;\n\t\t\t\t\t\t} else if (fcc === FCC_FP16) {\n\t\t\t\t\t\t\t\tformat = PIXELFORMAT_RGBA16F;\n\t\t\t\t\t\t\t\tcomponentSize = 2;\n\t\t\t\t\t\t} else if (fcc === FCC_FP32) {\n\t\t\t\t\t\t\t\tformat = PIXELFORMAT_RGBA32F;\n\t\t\t\t\t\t\t\tcomponentSize = 4;\n\t\t\t\t\t\t} else if (fcc === FCC_ETC1) {\n\t\t\t\t\t\t\t\tformat = PIXELFORMAT_ETC1;\n\t\t\t\t\t\t\t\tcompressed = true;\n\t\t\t\t\t\t\t\tetc1 = true;\n\t\t\t\t\t\t} else if (fcc === FCC_PVRTC_2BPP_RGB_1 || fcc === FCC_PVRTC_2BPP_RGBA_1) {\n\t\t\t\t\t\t\t\tformat = fcc === FCC_PVRTC_2BPP_RGB_1 ? PIXELFORMAT_PVRTC_2BPP_RGB_1 : PIXELFORMAT_PVRTC_2BPP_RGBA_1;\n\t\t\t\t\t\t\t\tcompressed = true;\n\t\t\t\t\t\t\t\tpvrtc2 = true;\n\t\t\t\t\t\t} else if (fcc === FCC_PVRTC_4BPP_RGB_1 || fcc === FCC_PVRTC_4BPP_RGBA_1) {\n\t\t\t\t\t\t\t\tformat = fcc === FCC_PVRTC_4BPP_RGB_1 ? PIXELFORMAT_PVRTC_4BPP_RGB_1 : PIXELFORMAT_PVRTC_4BPP_RGBA_1;\n\t\t\t\t\t\t\t\tcompressed = true;\n\t\t\t\t\t\t\t\tpvrtc4 = true;\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tif (bpp === 32) {\n\t\t\t\t\t\t\t\tformat = PIXELFORMAT_RGBA8;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!format) {\n\t\t\t\t\t\ttexture = new Texture(device, {\n\t\t\t\t\t\t\t\twidth: 4,\n\t\t\t\t\t\t\t\theight: 4,\n\t\t\t\t\t\t\t\tformat: PIXELFORMAT_RGB8,\n\t\t\t\t\t\t\t\tname: 'dds-legacy-empty'\n\t\t\t\t\t\t});\n\t\t\t\t\t\treturn texture;\n\t\t\t\t}\n\t\t\t\ttexture = new Texture(device, {\n\t\t\t\t\t\tname: url,\n\t\t\t\t\t\taddressU: isCubemap ? ADDRESS_CLAMP_TO_EDGE : ADDRESS_REPEAT,\n\t\t\t\t\t\taddressV: isCubemap ? ADDRESS_CLAMP_TO_EDGE : ADDRESS_REPEAT,\n\t\t\t\t\t\twidth: width,\n\t\t\t\t\t\theight: height,\n\t\t\t\t\t\tformat: format,\n\t\t\t\t\t\tcubemap: isCubemap,\n\t\t\t\t\t\tmipmaps: mips > 1,\n\t\t\t\t\t\t...textureOptions\n\t\t\t\t});\n\t\t\t\tlet offset = 128;\n\t\t\t\tconst faces = isCubemap ? 6 : 1;\n\t\t\t\tlet mipSize;\n\t\t\t\tconst DXT_BLOCK_WIDTH = 4;\n\t\t\t\tconst DXT_BLOCK_HEIGHT = 4;\n\t\t\t\tconst blockSize = fcc === FCC_DXT1 ? 8 : 16;\n\t\t\t\tlet numBlocksAcross, numBlocksDown, numBlocks;\n\t\t\t\tfor(let face = 0; face < faces; face++){\n\t\t\t\t\t\tlet mipWidth = width;\n\t\t\t\t\t\tlet mipHeight = height;\n\t\t\t\t\t\tfor(let i = 0; i < mips; i++){\n\t\t\t\t\t\t\t\tif (compressed) {\n\t\t\t\t\t\t\t\t\t\tif (etc1) {\n\t\t\t\t\t\t\t\t\t\t\t\tmipSize = Math.floor((mipWidth + 3) / 4) * Math.floor((mipHeight + 3) / 4) * 8;\n\t\t\t\t\t\t\t\t\t\t} else if (pvrtc2) {\n\t\t\t\t\t\t\t\t\t\t\t\tmipSize = Math.max(mipWidth, 16) * Math.max(mipHeight, 8) / 4;\n\t\t\t\t\t\t\t\t\t\t} else if (pvrtc4) {\n\t\t\t\t\t\t\t\t\t\t\t\tmipSize = Math.max(mipWidth, 8) * Math.max(mipHeight, 8) / 2;\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tnumBlocksAcross = Math.floor((mipWidth + DXT_BLOCK_WIDTH - 1) / DXT_BLOCK_WIDTH);\n\t\t\t\t\t\t\t\t\t\t\t\tnumBlocksDown = Math.floor((mipHeight + DXT_BLOCK_HEIGHT - 1) / DXT_BLOCK_HEIGHT);\n\t\t\t\t\t\t\t\t\t\t\t\tnumBlocks = numBlocksAcross * numBlocksDown;\n\t\t\t\t\t\t\t\t\t\t\t\tmipSize = numBlocks * blockSize;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tmipSize = mipWidth * mipHeight * 4;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst mipBuff = format === PIXELFORMAT_RGBA32F ? new Float32Array(data, offset, mipSize) : format === PIXELFORMAT_RGBA16F ? new Uint16Array(data, offset, mipSize) : new Uint8Array(data, offset, mipSize);\n\t\t\t\t\t\t\t\tif (!isCubemap) {\n\t\t\t\t\t\t\t\t\t\ttexture._levels[i] = mipBuff;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tif (!texture._levels[i]) texture._levels[i] = [];\n\t\t\t\t\t\t\t\t\t\ttexture._levels[i][face] = mipBuff;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\toffset += mipSize * componentSize;\n\t\t\t\t\t\t\t\tmipWidth = Math.max(mipWidth * 0.5, 1);\n\t\t\t\t\t\t\t\tmipHeight = Math.max(mipHeight * 0.5, 1);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ttexture.upload();\n\t\t\t\treturn texture;\n\t\t}\n}\n\nclass HdrParser extends TextureParser {\n\t\tconstructor(registry){\n\t\t\t\tsuper();\n\t\t\t\tthis.maxRetries = 0;\n\t\t}\n\t\tload(url, callback, asset) {\n\t\t\t\tAsset.fetchArrayBuffer(url.load, callback, asset, this.maxRetries);\n\t\t\t\tif (asset.data && !asset.data.type) {\n\t\t\t\t\t\tasset.data.type = TEXTURETYPE_RGBE;\n\t\t\t\t}\n\t\t}\n\t\topen(url, data, device, textureOptions = {}) {\n\t\t\t\tconst textureData = this.parse(data);\n\t\t\t\tif (!textureData) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tconst texture = new Texture(device, {\n\t\t\t\t\t\tname: url,\n\t\t\t\t\t\taddressU: ADDRESS_REPEAT,\n\t\t\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\tminFilter: FILTER_NEAREST,\n\t\t\t\t\t\tmagFilter: FILTER_NEAREST,\n\t\t\t\t\t\twidth: textureData.width,\n\t\t\t\t\t\theight: textureData.height,\n\t\t\t\t\t\tlevels: textureData.levels,\n\t\t\t\t\t\tformat: PIXELFORMAT_RGBA8,\n\t\t\t\t\t\ttype: TEXTURETYPE_RGBE,\n\t\t\t\t\t\tmipmaps: false,\n\t\t\t\t\t\t...textureOptions\n\t\t\t\t});\n\t\t\t\ttexture.upload();\n\t\t\t\treturn texture;\n\t\t}\n\t\tparse(data) {\n\t\t\t\tconst readStream = new ReadStream(data);\n\t\t\t\tconst magic = readStream.readLine();\n\t\t\t\tif (!magic.startsWith('#?RADIANCE')) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tconst variables = {};\n\t\t\t\twhile(true){\n\t\t\t\t\t\tconst line = readStream.readLine();\n\t\t\t\t\t\tif (line.length === 0) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst parts = line.split('=');\n\t\t\t\t\t\t\t\tif (parts.length === 2) {\n\t\t\t\t\t\t\t\t\t\tvariables[parts[0]] = parts[1];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!variables.hasOwnProperty('FORMAT')) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tconst resolution = readStream.readLine().split(' ');\n\t\t\t\tif (resolution.length !== 4) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tconst height = parseInt(resolution[1], 10);\n\t\t\t\tconst width = parseInt(resolution[3], 10);\n\t\t\t\tconst pixels = this._readPixels(readStream, width, height, resolution[0] === '-Y');\n\t\t\t\tif (!pixels) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\t\twidth: width,\n\t\t\t\t\t\theight: height,\n\t\t\t\t\t\tlevels: [\n\t\t\t\t\t\t\t\tpixels\n\t\t\t\t\t\t]\n\t\t\t\t};\n\t\t}\n\t\t_readPixels(readStream, width, height, flipY) {\n\t\t\t\tif (width < 8 || width > 0x7fff) {\n\t\t\t\t\t\treturn this._readPixelsFlat(readStream, width, height);\n\t\t\t\t}\n\t\t\t\tconst rgbe = [\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0\n\t\t\t\t];\n\t\t\t\treadStream.readArray(rgbe);\n\t\t\t\tif (rgbe[0] !== 2 || rgbe[1] !== 2 || (rgbe[2] & 0x80) !== 0) {\n\t\t\t\t\t\treadStream.skip(-4);\n\t\t\t\t\t\treturn this._readPixelsFlat(readStream, width, height);\n\t\t\t\t}\n\t\t\t\tconst buffer = new ArrayBuffer(width * height * 4);\n\t\t\t\tconst view = new Uint8Array(buffer);\n\t\t\t\tlet scanstart = flipY ? 0 : width * 4 * (height - 1);\n\t\t\t\tlet x, y, i, channel, count, value;\n\t\t\t\tfor(y = 0; y < height; ++y){\n\t\t\t\t\t\tif (y) {\n\t\t\t\t\t\t\t\treadStream.readArray(rgbe);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ((rgbe[2] << 8) + rgbe[3] !== width) {\n\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor(channel = 0; channel < 4; ++channel){\n\t\t\t\t\t\t\t\tx = 0;\n\t\t\t\t\t\t\t\twhile(x < width){\n\t\t\t\t\t\t\t\t\t\tcount = readStream.readU8();\n\t\t\t\t\t\t\t\t\t\tif (count > 128) {\n\t\t\t\t\t\t\t\t\t\t\t\tcount -= 128;\n\t\t\t\t\t\t\t\t\t\t\t\tif (x + count > width) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tvalue = readStream.readU8();\n\t\t\t\t\t\t\t\t\t\t\t\tfor(i = 0; i < count; ++i){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tview[scanstart + channel + 4 * x++] = value;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tif (count === 0 || x + count > width) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tfor(i = 0; i < count; ++i){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tview[scanstart + channel + 4 * x++] = readStream.readU8();\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tscanstart += width * 4 * (flipY ? 1 : -1);\n\t\t\t\t}\n\t\t\t\treturn view;\n\t\t}\n\t\t_readPixelsFlat(readStream, width, height) {\n\t\t\t\treturn readStream.remainingBytes === width * height * 4 ? new Uint8Array(readStream.arraybuffer, readStream.offset) : null;\n\t\t}\n}\n\nconst JSON_ADDRESS_MODE = {\n\t\t'repeat': ADDRESS_REPEAT,\n\t\t'clamp': ADDRESS_CLAMP_TO_EDGE,\n\t\t'mirror': ADDRESS_MIRRORED_REPEAT\n};\nconst JSON_FILTER_MODE = {\n\t\t'nearest': FILTER_NEAREST,\n\t\t'linear': FILTER_LINEAR,\n\t\t'nearest_mip_nearest': FILTER_NEAREST_MIPMAP_NEAREST,\n\t\t'linear_mip_nearest': FILTER_LINEAR_MIPMAP_NEAREST,\n\t\t'nearest_mip_linear': FILTER_NEAREST_MIPMAP_LINEAR,\n\t\t'linear_mip_linear': FILTER_LINEAR_MIPMAP_LINEAR\n};\nconst JSON_TEXTURE_TYPE = {\n\t\t'default': TEXTURETYPE_DEFAULT,\n\t\t'rgbm': TEXTURETYPE_RGBM,\n\t\t'rgbe': TEXTURETYPE_RGBE,\n\t\t'rgbp': TEXTURETYPE_RGBP,\n\t\t'swizzleGGGR': TEXTURETYPE_SWIZZLEGGGR\n};\nconst _completePartialMipmapChain = function(texture) {\n\t\tconst requiredMipLevels = TextureUtils.calcMipLevelsCount(texture._width, texture._height);\n\t\tconst isHtmlElement = function(object) {\n\t\t\t\treturn object instanceof HTMLCanvasElement || object instanceof HTMLImageElement || object instanceof HTMLVideoElement;\n\t\t};\n\t\tif (!(texture._format === PIXELFORMAT_RGBA8 || texture._format === PIXELFORMAT_RGBA32F) || texture._volume || texture._compressed || texture._levels.length === 1 || texture._levels.length === requiredMipLevels || isHtmlElement(texture._cubemap ? texture._levels[0][0] : texture._levels[0])) {\n\t\t\t\treturn;\n\t\t}\n\t\tconst downsample = function(width, height, data) {\n\t\t\t\tconst sampledWidth = Math.max(1, width >> 1);\n\t\t\t\tconst sampledHeight = Math.max(1, height >> 1);\n\t\t\t\tconst sampledData = new data.constructor(sampledWidth * sampledHeight * 4);\n\t\t\t\tconst xs = Math.floor(width / sampledWidth);\n\t\t\t\tconst ys = Math.floor(height / sampledHeight);\n\t\t\t\tconst xsys = xs * ys;\n\t\t\t\tfor(let y = 0; y < sampledHeight; ++y){\n\t\t\t\t\t\tfor(let x = 0; x < sampledWidth; ++x){\n\t\t\t\t\t\t\t\tfor(let e = 0; e < 4; ++e){\n\t\t\t\t\t\t\t\t\t\tlet sum = 0;\n\t\t\t\t\t\t\t\t\t\tfor(let sy = 0; sy < ys; ++sy){\n\t\t\t\t\t\t\t\t\t\t\t\tfor(let sx = 0; sx < xs; ++sx){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsum += data[(x * xs + sx + (y * ys + sy) * width) * 4 + e];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tsampledData[(x + y * sampledWidth) * 4 + e] = sum / xsys;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn sampledData;\n\t\t};\n\t\tfor(let level = texture._levels.length; level < requiredMipLevels; ++level){\n\t\t\t\tconst width = Math.max(1, texture._width >> level - 1);\n\t\t\t\tconst height = Math.max(1, texture._height >> level - 1);\n\t\t\t\tif (texture._cubemap) {\n\t\t\t\t\t\tconst mips = [];\n\t\t\t\t\t\tfor(let face = 0; face < 6; ++face){\n\t\t\t\t\t\t\t\tmips.push(downsample(width, height, texture._levels[level - 1][face]));\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttexture._levels.push(mips);\n\t\t\t\t} else {\n\t\t\t\t\t\ttexture._levels.push(downsample(width, height, texture._levels[level - 1]));\n\t\t\t\t}\n\t\t}\n\t\ttexture._levelsUpdated = texture._cubemap ? [\n\t\t\t\t[\n\t\t\t\t\t\ttrue,\n\t\t\t\t\t\ttrue,\n\t\t\t\t\t\ttrue,\n\t\t\t\t\t\ttrue,\n\t\t\t\t\t\ttrue,\n\t\t\t\t\t\ttrue\n\t\t\t\t]\n\t\t] : [\n\t\t\t\ttrue\n\t\t];\n};\nclass TextureHandler extends ResourceHandler {\n\t\tconstructor(app){\n\t\t\t\tsuper(app, 'texture');\n\t\t\t\tconst assets = app.assets;\n\t\t\t\tconst device = app.graphicsDevice;\n\t\t\t\tthis._device = device;\n\t\t\t\tthis._assets = assets;\n\t\t\t\tthis.imgParser = new ImgParser(assets, device);\n\t\t\t\tthis.parsers = {\n\t\t\t\t\t\tdds: new DdsParser(assets),\n\t\t\t\t\t\tktx: new KtxParser(assets),\n\t\t\t\t\t\tktx2: new Ktx2Parser(assets, device),\n\t\t\t\t\t\tbasis: new BasisParser(assets, device),\n\t\t\t\t\t\thdr: new HdrParser(assets)\n\t\t\t\t};\n\t\t}\n\t\tset crossOrigin(value) {\n\t\t\t\tthis.imgParser.crossOrigin = value;\n\t\t}\n\t\tget crossOrigin() {\n\t\t\t\treturn this.imgParser.crossOrigin;\n\t\t}\n\t\tset maxRetries(value) {\n\t\t\t\tthis.imgParser.maxRetries = value;\n\t\t\t\tfor(const parser in this.parsers){\n\t\t\t\t\t\tif (this.parsers.hasOwnProperty(parser)) {\n\t\t\t\t\t\t\t\tthis.parsers[parser].maxRetries = value;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget maxRetries() {\n\t\t\t\treturn this.imgParser.maxRetries;\n\t\t}\n\t\t_getUrlWithoutParams(url) {\n\t\t\t\treturn url.indexOf('?') >= 0 ? url.split('?')[0] : url;\n\t\t}\n\t\t_getParser(url) {\n\t\t\t\tconst ext = path.getExtension(this._getUrlWithoutParams(url)).toLowerCase().replace('.', '');\n\t\t\t\treturn this.parsers[ext] || this.imgParser;\n\t\t}\n\t\t_getTextureOptions(asset) {\n\t\t\t\tconst options = {};\n\t\t\t\tif (asset) {\n\t\t\t\t\t\tif (asset.name?.length > 0) {\n\t\t\t\t\t\t\t\toptions.name = asset.name;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst assetData = asset.data;\n\t\t\t\t\t\tif (assetData.hasOwnProperty('minfilter')) {\n\t\t\t\t\t\t\t\toptions.minFilter = JSON_FILTER_MODE[assetData.minfilter];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (assetData.hasOwnProperty('magfilter')) {\n\t\t\t\t\t\t\t\toptions.magFilter = JSON_FILTER_MODE[assetData.magfilter];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (assetData.hasOwnProperty('addressu')) {\n\t\t\t\t\t\t\t\toptions.addressU = JSON_ADDRESS_MODE[assetData.addressu];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (assetData.hasOwnProperty('addressv')) {\n\t\t\t\t\t\t\t\toptions.addressV = JSON_ADDRESS_MODE[assetData.addressv];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (assetData.hasOwnProperty('mipmaps')) {\n\t\t\t\t\t\t\t\toptions.mipmaps = assetData.mipmaps;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (assetData.hasOwnProperty('anisotropy')) {\n\t\t\t\t\t\t\t\toptions.anisotropy = assetData.anisotropy;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (assetData.hasOwnProperty('flipY')) {\n\t\t\t\t\t\t\t\toptions.flipY = !!assetData.flipY;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (assetData.hasOwnProperty('srgb')) {\n\t\t\t\t\t\t\t\toptions.srgb = !!assetData.srgb;\n\t\t\t\t\t\t}\n\t\t\t\t\t\toptions.type = TEXTURETYPE_DEFAULT;\n\t\t\t\t\t\tif (assetData.hasOwnProperty('type')) {\n\t\t\t\t\t\t\t\toptions.type = JSON_TEXTURE_TYPE[assetData.type];\n\t\t\t\t\t\t} else if (assetData.hasOwnProperty('rgbm') && assetData.rgbm) {\n\t\t\t\t\t\t\t\toptions.type = TEXTURETYPE_RGBM;\n\t\t\t\t\t\t} else if (asset.file && (asset.file.opt & 8) !== 0) {\n\t\t\t\t\t\t\t\toptions.type = TEXTURETYPE_SWIZZLEGGGR;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn options;\n\t\t}\n\t\tload(url, callback, asset) {\n\t\t\t\tif (typeof url === 'string') {\n\t\t\t\t\t\turl = {\n\t\t\t\t\t\t\t\tload: url,\n\t\t\t\t\t\t\t\toriginal: url\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tthis._getParser(url.original).load(url, callback, asset);\n\t\t}\n\t\topen(url, data, asset) {\n\t\t\t\tif (!url) {\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t\tconst textureOptions = this._getTextureOptions(asset);\n\t\t\t\tlet texture = this._getParser(url).open(url, data, this._device, textureOptions);\n\t\t\t\tif (texture === null) {\n\t\t\t\t\t\ttexture = new Texture(this._device, {\n\t\t\t\t\t\t\t\twidth: 4,\n\t\t\t\t\t\t\t\theight: 4,\n\t\t\t\t\t\t\t\tformat: PIXELFORMAT_RGB8\n\t\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t\t_completePartialMipmapChain(texture);\n\t\t\t\t\t\tif (data.unswizzledGGGR) {\n\t\t\t\t\t\t\t\tasset.file.variants.basis.opt &= -9;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn texture;\n\t\t}\n\t\tpatch(asset, assets) {\n\t\t\t\tconst texture = asset.resource;\n\t\t\t\tif (!texture) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst options = this._getTextureOptions(asset);\n\t\t\t\tfor (const key of Object.keys(options)){\n\t\t\t\t\t\ttexture[key] = options[key];\n\t\t\t\t}\n\t\t}\n}\n\nconst XRTYPE_INLINE = 'inline';\nconst XRTYPE_VR = 'immersive-vr';\nconst XRTYPE_AR = 'immersive-ar';\nconst XRSPACE_VIEWER = 'viewer';\nconst XRSPACE_LOCAL = 'local';\nconst XRSPACE_LOCALFLOOR = 'local-floor';\nconst XRSPACE_BOUNDEDFLOOR = 'bounded-floor';\nconst XRSPACE_UNBOUNDED = 'unbounded';\nconst XRTARGETRAY_GAZE = 'gaze';\nconst XRTARGETRAY_SCREEN = 'screen';\nconst XRTARGETRAY_POINTER = 'tracked-pointer';\nconst XREYE_NONE = 'none';\nconst XREYE_LEFT = 'left';\nconst XREYE_RIGHT = 'right';\nconst XRHAND_NONE = 'none';\nconst XRHAND_LEFT = 'left';\nconst XRHAND_RIGHT = 'right';\nconst XRTRACKABLE_POINT = 'point';\nconst XRTRACKABLE_PLANE = 'plane';\nconst XRTRACKABLE_MESH = 'mesh';\nconst XRDEPTHSENSINGUSAGE_CPU = 'cpu-optimized';\nconst XRDEPTHSENSINGUSAGE_GPU = 'gpu-optimized';\nconst XRDEPTHSENSINGFORMAT_L8A8 = 'luminance-alpha';\nconst XRDEPTHSENSINGFORMAT_R16U = 'unsigned-short';\nconst XRDEPTHSENSINGFORMAT_F32 = 'float32';\n\nclass XrDomOverlay {\n\t\tconstructor(manager){\n\t\t\t\tthis._supported = platform.browser && !!window.XRDOMOverlayState;\n\t\t\t\tthis._root = null;\n\t\t\t\tthis._manager = manager;\n\t\t}\n\t\tget supported() {\n\t\t\t\treturn this._supported;\n\t\t}\n\t\tget available() {\n\t\t\t\treturn this._supported && this._manager.active && this._manager._session.domOverlayState !== null;\n\t\t}\n\t\tget state() {\n\t\t\t\tif (!this._supported || !this._manager.active || !this._manager._session.domOverlayState) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\treturn this._manager._session.domOverlayState.type;\n\t\t}\n\t\tset root(value) {\n\t\t\t\tif (!this._supported || this._manager.active) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._root = value;\n\t\t}\n\t\tget root() {\n\t\t\t\treturn this._root;\n\t\t}\n}\n\nconst poolVec3 = [];\nconst poolQuat = [];\nclass XrHitTestSource extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_REMOVE = 'remove';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_RESULT = 'result';\n\t\t}\n\t\tconstructor(manager, xrHitTestSource, transient, inputSource = null){\n\t\t\t\tsuper();\n\t\t\t\tthis.manager = manager;\n\t\t\t\tthis._xrHitTestSource = xrHitTestSource;\n\t\t\t\tthis._transient = transient;\n\t\t\t\tthis._inputSource = inputSource;\n\t\t}\n\t\tremove() {\n\t\t\t\tif (!this._xrHitTestSource) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst sources = this.manager.hitTest.sources;\n\t\t\t\tconst ind = sources.indexOf(this);\n\t\t\t\tif (ind !== -1) sources.splice(ind, 1);\n\t\t\t\tthis.onStop();\n\t\t}\n\t\tonStop() {\n\t\t\t\tthis._xrHitTestSource.cancel();\n\t\t\t\tthis._xrHitTestSource = null;\n\t\t\t\tthis.fire('remove');\n\t\t\t\tthis.manager.hitTest.fire('remove', this);\n\t\t}\n\t\tupdate(frame) {\n\t\t\t\tif (this._transient) {\n\t\t\t\t\t\tconst transientResults = frame.getHitTestResultsForTransientInput(this._xrHitTestSource);\n\t\t\t\t\t\tfor(let i = 0; i < transientResults.length; i++){\n\t\t\t\t\t\t\t\tconst transientResult = transientResults[i];\n\t\t\t\t\t\t\t\tif (!transientResult.results.length) {\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tlet inputSource;\n\t\t\t\t\t\t\t\tif (transientResult.inputSource) {\n\t\t\t\t\t\t\t\t\t\tinputSource = this.manager.input._getByInputSource(transientResult.inputSource);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.updateHitResults(transientResult.results, inputSource);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tconst results = frame.getHitTestResults(this._xrHitTestSource);\n\t\t\t\t\t\tif (!results.length) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.updateHitResults(results);\n\t\t\t\t}\n\t\t}\n\t\tupdateHitResults(results, inputSource) {\n\t\t\t\tif (this._inputSource && this._inputSource !== inputSource) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst origin = poolVec3.pop() ?? new Vec3();\n\t\t\t\tif (inputSource) {\n\t\t\t\t\t\torigin.copy(inputSource.getOrigin());\n\t\t\t\t} else {\n\t\t\t\t\t\torigin.copy(this.manager.camera.getPosition());\n\t\t\t\t}\n\t\t\t\tlet candidateDistance = Infinity;\n\t\t\t\tlet candidateHitTestResult = null;\n\t\t\t\tconst position = poolVec3.pop() ?? new Vec3();\n\t\t\t\tconst rotation = poolQuat.pop() ?? new Quat();\n\t\t\t\tfor(let i = 0; i < results.length; i++){\n\t\t\t\t\t\tconst pose = results[i].getPose(this.manager._referenceSpace);\n\t\t\t\t\t\tconst distance = origin.distance(pose.transform.position);\n\t\t\t\t\t\tif (distance >= candidateDistance) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcandidateDistance = distance;\n\t\t\t\t\t\tcandidateHitTestResult = results[i];\n\t\t\t\t\t\tposition.copy(pose.transform.position);\n\t\t\t\t\t\trotation.copy(pose.transform.orientation);\n\t\t\t\t}\n\t\t\t\tthis.fire('result', position, rotation, inputSource || this._inputSource, candidateHitTestResult);\n\t\t\t\tthis.manager.hitTest.fire('result', this, position, rotation, inputSource || this._inputSource, candidateHitTestResult);\n\t\t\t\tpoolVec3.push(origin);\n\t\t\t\tpoolVec3.push(position);\n\t\t\t\tpoolQuat.push(rotation);\n\t\t}\n}\n\nclass XrHitTest extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_AVAILABLE = 'available';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_UNAVAILABLE = 'unavailable';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_ADD = 'add';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_REMOVE = 'remove';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_RESULT = 'result';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_ERROR = 'error';\n\t\t}\n\t\tconstructor(manager){\n\t\t\t\tsuper(), this._supported = platform.browser && !!(window.XRSession && window.XRSession.prototype.requestHitTestSource), this._available = false, this._checkingAvailability = false, this.sources = [];\n\t\t\t\tthis.manager = manager;\n\t\t\t\tif (this._supported) {\n\t\t\t\t\t\tthis.manager.on('start', this._onSessionStart, this);\n\t\t\t\t\t\tthis.manager.on('end', this._onSessionEnd, this);\n\t\t\t\t}\n\t\t}\n\t\t_onSessionStart() {\n\t\t\t\tif (this.manager.session.enabledFeatures) {\n\t\t\t\t\t\tconst available = this.manager.session.enabledFeatures.indexOf('hit-test') !== -1;\n\t\t\t\t\t\tif (!available) return;\n\t\t\t\t\t\tthis._available = available;\n\t\t\t\t\t\tthis.fire('available');\n\t\t\t\t} else if (!this._checkingAvailability) {\n\t\t\t\t\t\tthis._checkingAvailability = true;\n\t\t\t\t\t\tthis.manager.session.requestReferenceSpace(XRSPACE_VIEWER).then((referenceSpace)=>{\n\t\t\t\t\t\t\t\tthis.manager.session.requestHitTestSource({\n\t\t\t\t\t\t\t\t\t\tspace: referenceSpace\n\t\t\t\t\t\t\t\t}).then((hitTestSource)=>{\n\t\t\t\t\t\t\t\t\t\thitTestSource.cancel();\n\t\t\t\t\t\t\t\t\t\tif (this.manager.active) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._available = true;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.fire('available');\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}).catch(()=>{});\n\t\t\t\t\t\t}).catch(()=>{});\n\t\t\t\t}\n\t\t}\n\t\t_onSessionEnd() {\n\t\t\t\tif (!this._available) return;\n\t\t\t\tthis._available = false;\n\t\t\t\tfor(let i = 0; i < this.sources.length; i++){\n\t\t\t\t\t\tthis.sources[i].onStop();\n\t\t\t\t}\n\t\t\t\tthis.sources = [];\n\t\t\t\tthis.fire('unavailable');\n\t\t}\n\t\tstart(options = {}) {\n\t\t\t\tif (!this._supported) {\n\t\t\t\t\t\toptions.callback?.(new Error('XR HitTest is not supported'), null);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (!this._available) {\n\t\t\t\t\t\toptions.callback?.(new Error('XR HitTest is not available'), null);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (!options.profile && !options.spaceType) {\n\t\t\t\t\t\toptions.spaceType = XRSPACE_VIEWER;\n\t\t\t\t}\n\t\t\t\tlet xrRay;\n\t\t\t\tconst offsetRay = options.offsetRay;\n\t\t\t\tif (offsetRay) {\n\t\t\t\t\t\tconst origin = new DOMPoint(offsetRay.origin.x, offsetRay.origin.y, offsetRay.origin.z, 1.0);\n\t\t\t\t\t\tconst direction = new DOMPoint(offsetRay.direction.x, offsetRay.direction.y, offsetRay.direction.z, 0.0);\n\t\t\t\t\t\txrRay = new XRRay(origin, direction);\n\t\t\t\t}\n\t\t\t\tconst callback = options.callback;\n\t\t\t\tif (options.spaceType) {\n\t\t\t\t\t\tthis.manager.session.requestReferenceSpace(options.spaceType).then((referenceSpace)=>{\n\t\t\t\t\t\t\t\tif (!this.manager.session) {\n\t\t\t\t\t\t\t\t\t\tconst err = new Error('XR Session is not started (2)');\n\t\t\t\t\t\t\t\t\t\tif (callback) callback(err);\n\t\t\t\t\t\t\t\t\t\tthis.fire('error', err);\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.manager.session.requestHitTestSource({\n\t\t\t\t\t\t\t\t\t\tspace: referenceSpace,\n\t\t\t\t\t\t\t\t\t\tentityTypes: options.entityTypes || undefined,\n\t\t\t\t\t\t\t\t\t\toffsetRay: xrRay\n\t\t\t\t\t\t\t\t}).then((xrHitTestSource)=>{\n\t\t\t\t\t\t\t\t\t\tthis._onHitTestSource(xrHitTestSource, false, options.inputSource, callback);\n\t\t\t\t\t\t\t\t}).catch((ex)=>{\n\t\t\t\t\t\t\t\t\t\tif (callback) callback(ex);\n\t\t\t\t\t\t\t\t\t\tthis.fire('error', ex);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}).catch((ex)=>{\n\t\t\t\t\t\t\t\tif (callback) callback(ex);\n\t\t\t\t\t\t\t\tthis.fire('error', ex);\n\t\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.manager.session.requestHitTestSourceForTransientInput({\n\t\t\t\t\t\t\t\tprofile: options.profile,\n\t\t\t\t\t\t\t\tentityTypes: options.entityTypes || undefined,\n\t\t\t\t\t\t\t\toffsetRay: xrRay\n\t\t\t\t\t\t}).then((xrHitTestSource)=>{\n\t\t\t\t\t\t\t\tthis._onHitTestSource(xrHitTestSource, true, options.inputSource, callback);\n\t\t\t\t\t\t}).catch((ex)=>{\n\t\t\t\t\t\t\t\tif (callback) callback(ex);\n\t\t\t\t\t\t\t\tthis.fire('error', ex);\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t}\n\t\t_onHitTestSource(xrHitTestSource, transient, inputSource, callback) {\n\t\t\t\tif (!this.manager.session) {\n\t\t\t\t\t\txrHitTestSource.cancel();\n\t\t\t\t\t\tconst err = new Error('XR Session is not started (3)');\n\t\t\t\t\t\tif (callback) callback(err);\n\t\t\t\t\t\tthis.fire('error', err);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst hitTestSource = new XrHitTestSource(this.manager, xrHitTestSource, transient, inputSource ?? null);\n\t\t\t\tthis.sources.push(hitTestSource);\n\t\t\t\tif (callback) callback(null, hitTestSource);\n\t\t\t\tthis.fire('add', hitTestSource);\n\t\t}\n\t\tupdate(frame) {\n\t\t\t\tif (!this._available) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < this.sources.length; i++){\n\t\t\t\t\t\tthis.sources[i].update(frame);\n\t\t\t\t}\n\t\t}\n\t\tget supported() {\n\t\t\t\treturn this._supported;\n\t\t}\n\t\tget available() {\n\t\t\t\treturn this._available;\n\t\t}\n}\n\nclass XrTrackedImage extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_TRACKED = 'tracked';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_UNTRACKED = 'untracked';\n\t\t}\n\t\tconstructor(image, width){\n\t\t\t\tsuper(), this._bitmap = null, this._measuredWidth = 0, this._trackable = false, this._tracking = false, this._emulated = false, this._pose = null, this._position = new Vec3(), this._rotation = new Quat();\n\t\t\t\tthis._image = image;\n\t\t\t\tthis._width = width;\n\t\t}\n\t\tget image() {\n\t\t\t\treturn this._image;\n\t\t}\n\t\tset width(value) {\n\t\t\t\tthis._width = value;\n\t\t}\n\t\tget width() {\n\t\t\t\treturn this._width;\n\t\t}\n\t\tget trackable() {\n\t\t\t\treturn this._trackable;\n\t\t}\n\t\tget tracking() {\n\t\t\t\treturn this._tracking;\n\t\t}\n\t\tget emulated() {\n\t\t\t\treturn this._emulated;\n\t\t}\n\t\tprepare() {\n\t\t\t\tif (this._bitmap) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\timage: this._bitmap,\n\t\t\t\t\t\t\t\twidthInMeters: this._width\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\treturn createImageBitmap(this._image).then((bitmap)=>{\n\t\t\t\t\t\tthis._bitmap = bitmap;\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\timage: this._bitmap,\n\t\t\t\t\t\t\t\twidthInMeters: this._width\n\t\t\t\t\t\t};\n\t\t\t\t});\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis._image = null;\n\t\t\t\tthis._pose = null;\n\t\t\t\tif (this._bitmap) {\n\t\t\t\t\t\tthis._bitmap.close();\n\t\t\t\t\t\tthis._bitmap = null;\n\t\t\t\t}\n\t\t}\n\t\tgetPosition() {\n\t\t\t\tif (this._pose) this._position.copy(this._pose.transform.position);\n\t\t\t\treturn this._position;\n\t\t}\n\t\tgetRotation() {\n\t\t\t\tif (this._pose) this._rotation.copy(this._pose.transform.orientation);\n\t\t\t\treturn this._rotation;\n\t\t}\n}\n\nclass XrImageTracking extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_ERROR = 'error';\n\t\t}\n\t\tconstructor(manager){\n\t\t\t\tsuper(), this._supported = platform.browser && !!window.XRImageTrackingResult, this._available = false, this._images = [];\n\t\t\t\tthis._manager = manager;\n\t\t\t\tif (this._supported) {\n\t\t\t\t\t\tthis._manager.on('start', this._onSessionStart, this);\n\t\t\t\t\t\tthis._manager.on('end', this._onSessionEnd, this);\n\t\t\t\t}\n\t\t}\n\t\tadd(image, width) {\n\t\t\t\tif (!this._supported || this._manager.active) return null;\n\t\t\t\tconst trackedImage = new XrTrackedImage(image, width);\n\t\t\t\tthis._images.push(trackedImage);\n\t\t\t\treturn trackedImage;\n\t\t}\n\t\tremove(trackedImage) {\n\t\t\t\tif (this._manager.active) return;\n\t\t\t\tconst ind = this._images.indexOf(trackedImage);\n\t\t\t\tif (ind !== -1) {\n\t\t\t\t\t\ttrackedImage.destroy();\n\t\t\t\t\t\tthis._images.splice(ind, 1);\n\t\t\t\t}\n\t\t}\n\t\t_onSessionStart() {\n\t\t\t\tthis._manager.session.getTrackedImageScores().then((images)=>{\n\t\t\t\t\t\tthis._available = true;\n\t\t\t\t\t\tfor(let i = 0; i < images.length; i++){\n\t\t\t\t\t\t\t\tthis._images[i]._trackable = images[i] === 'trackable';\n\t\t\t\t\t\t}\n\t\t\t\t}).catch((err)=>{\n\t\t\t\t\t\tthis._available = false;\n\t\t\t\t\t\tthis.fire('error', err);\n\t\t\t\t});\n\t\t}\n\t\t_onSessionEnd() {\n\t\t\t\tthis._available = false;\n\t\t\t\tfor(let i = 0; i < this._images.length; i++){\n\t\t\t\t\t\tconst image = this._images[i];\n\t\t\t\t\t\timage._pose = null;\n\t\t\t\t\t\timage._measuredWidth = 0;\n\t\t\t\t\t\tif (image._tracking) {\n\t\t\t\t\t\t\t\timage._tracking = false;\n\t\t\t\t\t\t\t\timage.fire('untracked');\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tprepareImages(callback) {\n\t\t\t\tif (this._images.length) {\n\t\t\t\t\t\tPromise.all(this._images.map((trackedImage)=>{\n\t\t\t\t\t\t\t\treturn trackedImage.prepare();\n\t\t\t\t\t\t})).then((bitmaps)=>{\n\t\t\t\t\t\t\t\tcallback(null, bitmaps);\n\t\t\t\t\t\t}).catch((err)=>{\n\t\t\t\t\t\t\t\tcallback(err, null);\n\t\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t\tcallback(null, null);\n\t\t\t\t}\n\t\t}\n\t\tupdate(frame) {\n\t\t\t\tif (!this._available) return;\n\t\t\t\tconst results = frame.getImageTrackingResults();\n\t\t\t\tconst index = {};\n\t\t\t\tfor(let i = 0; i < results.length; i++){\n\t\t\t\t\t\tindex[results[i].index] = results[i];\n\t\t\t\t\t\tconst trackedImage = this._images[results[i].index];\n\t\t\t\t\t\ttrackedImage._emulated = results[i].trackingState === 'emulated';\n\t\t\t\t\t\ttrackedImage._measuredWidth = results[i].measuredWidthInMeters;\n\t\t\t\t\t\ttrackedImage._pose = frame.getPose(results[i].imageSpace, this._manager._referenceSpace);\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < this._images.length; i++){\n\t\t\t\t\t\tif (this._images[i]._tracking && !index[i]) {\n\t\t\t\t\t\t\t\tthis._images[i]._tracking = false;\n\t\t\t\t\t\t\t\tthis._images[i].fire('untracked');\n\t\t\t\t\t\t} else if (!this._images[i]._tracking && index[i]) {\n\t\t\t\t\t\t\t\tthis._images[i]._tracking = true;\n\t\t\t\t\t\t\t\tthis._images[i].fire('tracked');\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget supported() {\n\t\t\t\treturn this._supported;\n\t\t}\n\t\tget available() {\n\t\t\t\treturn this._available;\n\t\t}\n\t\tget images() {\n\t\t\t\treturn this._images;\n\t\t}\n}\n\nclass XrFinger {\n\t\tconstructor(index, hand){\n\t\t\t\tthis._joints = [];\n\t\t\t\tthis._tip = null;\n\t\t\t\tthis._index = index;\n\t\t\t\tthis._hand = hand;\n\t\t\t\tthis._hand._fingers.push(this);\n\t\t}\n\t\tget index() {\n\t\t\t\treturn this._index;\n\t\t}\n\t\tget hand() {\n\t\t\t\treturn this._hand;\n\t\t}\n\t\tget joints() {\n\t\t\t\treturn this._joints;\n\t\t}\n\t\tget tip() {\n\t\t\t\treturn this._tip;\n\t\t}\n}\n\nconst tipJointIds = platform.browser && window.XRHand ? [\n\t\t'thumb-tip',\n\t\t'index-finger-tip',\n\t\t'middle-finger-tip',\n\t\t'ring-finger-tip',\n\t\t'pinky-finger-tip'\n] : [];\nconst tipJointIdsIndex = {};\nfor(let i = 0; i < tipJointIds.length; i++){\n\t\ttipJointIdsIndex[tipJointIds[i]] = true;\n}\nclass XrJoint {\n\t\tconstructor(index, id, hand, finger = null){\n\t\t\t\tthis._radius = null;\n\t\t\t\tthis._localTransform = new Mat4();\n\t\t\t\tthis._worldTransform = new Mat4();\n\t\t\t\tthis._localPosition = new Vec3();\n\t\t\t\tthis._localRotation = new Quat();\n\t\t\t\tthis._position = new Vec3();\n\t\t\t\tthis._rotation = new Quat();\n\t\t\t\tthis._dirtyLocal = true;\n\t\t\t\tthis._index = index;\n\t\t\t\tthis._id = id;\n\t\t\t\tthis._hand = hand;\n\t\t\t\tthis._finger = finger;\n\t\t\t\tthis._wrist = id === 'wrist';\n\t\t\t\tthis._tip = this._finger && !!tipJointIdsIndex[id];\n\t\t}\n\t\tupdate(pose) {\n\t\t\t\tthis._dirtyLocal = true;\n\t\t\t\tthis._radius = pose.radius;\n\t\t\t\tthis._localPosition.copy(pose.transform.position);\n\t\t\t\tthis._localRotation.copy(pose.transform.orientation);\n\t\t}\n\t\t_updateTransforms() {\n\t\t\t\tif (this._dirtyLocal) {\n\t\t\t\t\t\tthis._dirtyLocal = false;\n\t\t\t\t\t\tthis._localTransform.setTRS(this._localPosition, this._localRotation, Vec3.ONE);\n\t\t\t\t}\n\t\t\t\tconst manager = this._hand._manager;\n\t\t\t\tconst parent = manager.camera.parent;\n\t\t\t\tif (parent) {\n\t\t\t\t\t\tthis._worldTransform.mul2(parent.getWorldTransform(), this._localTransform);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._worldTransform.copy(this._localTransform);\n\t\t\t\t}\n\t\t}\n\t\tgetPosition() {\n\t\t\t\tthis._updateTransforms();\n\t\t\t\tthis._worldTransform.getTranslation(this._position);\n\t\t\t\treturn this._position;\n\t\t}\n\t\tgetRotation() {\n\t\t\t\tthis._updateTransforms();\n\t\t\t\tthis._rotation.setFromMat4(this._worldTransform);\n\t\t\t\treturn this._rotation;\n\t\t}\n\t\tget id() {\n\t\t\t\treturn this._id;\n\t\t}\n\t\tget index() {\n\t\t\t\treturn this._index;\n\t\t}\n\t\tget hand() {\n\t\t\t\treturn this._hand;\n\t\t}\n\t\tget finger() {\n\t\t\t\treturn this._finger;\n\t\t}\n\t\tget wrist() {\n\t\t\t\treturn this._wrist;\n\t\t}\n\t\tget tip() {\n\t\t\t\treturn this._tip;\n\t\t}\n\t\tget radius() {\n\t\t\t\treturn this._radius || 0.005;\n\t\t}\n}\n\nlet fingerJointIds = [];\nconst vecA$1 = new Vec3();\nconst vecB$1 = new Vec3();\nconst vecC = new Vec3();\nif (platform.browser && window.XRHand) {\n\t\tfingerJointIds = [\n\t\t\t\t[\n\t\t\t\t\t\t'thumb-metacarpal',\n\t\t\t\t\t\t'thumb-phalanx-proximal',\n\t\t\t\t\t\t'thumb-phalanx-distal',\n\t\t\t\t\t\t'thumb-tip'\n\t\t\t\t],\n\t\t\t\t[\n\t\t\t\t\t\t'index-finger-metacarpal',\n\t\t\t\t\t\t'index-finger-phalanx-proximal',\n\t\t\t\t\t\t'index-finger-phalanx-intermediate',\n\t\t\t\t\t\t'index-finger-phalanx-distal',\n\t\t\t\t\t\t'index-finger-tip'\n\t\t\t\t],\n\t\t\t\t[\n\t\t\t\t\t\t'middle-finger-metacarpal',\n\t\t\t\t\t\t'middle-finger-phalanx-proximal',\n\t\t\t\t\t\t'middle-finger-phalanx-intermediate',\n\t\t\t\t\t\t'middle-finger-phalanx-distal',\n\t\t\t\t\t\t'middle-finger-tip'\n\t\t\t\t],\n\t\t\t\t[\n\t\t\t\t\t\t'ring-finger-metacarpal',\n\t\t\t\t\t\t'ring-finger-phalanx-proximal',\n\t\t\t\t\t\t'ring-finger-phalanx-intermediate',\n\t\t\t\t\t\t'ring-finger-phalanx-distal',\n\t\t\t\t\t\t'ring-finger-tip'\n\t\t\t\t],\n\t\t\t\t[\n\t\t\t\t\t\t'pinky-finger-metacarpal',\n\t\t\t\t\t\t'pinky-finger-phalanx-proximal',\n\t\t\t\t\t\t'pinky-finger-phalanx-intermediate',\n\t\t\t\t\t\t'pinky-finger-phalanx-distal',\n\t\t\t\t\t\t'pinky-finger-tip'\n\t\t\t\t]\n\t\t];\n}\nclass XrHand extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_TRACKING = 'tracking';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_TRACKINGLOST = 'trackinglost';\n\t\t}\n\t\tconstructor(inputSource){\n\t\t\t\tsuper(), this._tracking = false, this._fingers = [], this._joints = [], this._jointsById = {}, this._tips = [], this._wrist = null;\n\t\t\t\tconst xrHand = inputSource._xrInputSource.hand;\n\t\t\t\tthis._manager = inputSource._manager;\n\t\t\t\tthis._inputSource = inputSource;\n\t\t\t\tif (xrHand.get('wrist')) {\n\t\t\t\t\t\tconst joint = new XrJoint(0, 'wrist', this, null);\n\t\t\t\t\t\tthis._wrist = joint;\n\t\t\t\t\t\tthis._joints.push(joint);\n\t\t\t\t\t\tthis._jointsById.wrist = joint;\n\t\t\t\t}\n\t\t\t\tfor(let f = 0; f < fingerJointIds.length; f++){\n\t\t\t\t\t\tconst finger = new XrFinger(f, this);\n\t\t\t\t\t\tfor(let j = 0; j < fingerJointIds[f].length; j++){\n\t\t\t\t\t\t\t\tconst jointId = fingerJointIds[f][j];\n\t\t\t\t\t\t\t\tif (!xrHand.get(jointId)) continue;\n\t\t\t\t\t\t\t\tconst joint = new XrJoint(j, jointId, this, finger);\n\t\t\t\t\t\t\t\tthis._joints.push(joint);\n\t\t\t\t\t\t\t\tthis._jointsById[jointId] = joint;\n\t\t\t\t\t\t\t\tif (joint.tip) {\n\t\t\t\t\t\t\t\t\t\tthis._tips.push(joint);\n\t\t\t\t\t\t\t\t\t\tfinger._tip = joint;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tfinger._joints.push(joint);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tupdate(frame) {\n\t\t\t\tconst xrInputSource = this._inputSource._xrInputSource;\n\t\t\t\tfor(let j = 0; j < this._joints.length; j++){\n\t\t\t\t\t\tconst joint = this._joints[j];\n\t\t\t\t\t\tconst jointSpace = xrInputSource.hand.get(joint._id);\n\t\t\t\t\t\tif (jointSpace) {\n\t\t\t\t\t\t\t\tlet pose;\n\t\t\t\t\t\t\t\tif (frame.session.visibilityState !== 'hidden') {\n\t\t\t\t\t\t\t\t\t\tpose = frame.getJointPose(jointSpace, this._manager._referenceSpace);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (pose) {\n\t\t\t\t\t\t\t\t\t\tjoint.update(pose);\n\t\t\t\t\t\t\t\t\t\tif (joint.wrist && !this._tracking) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._tracking = true;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.fire('tracking');\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else if (joint.wrist) {\n\t\t\t\t\t\t\t\t\t\tif (this._tracking) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._tracking = false;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.fire('trackinglost');\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst j1 = this._jointsById['thumb-metacarpal'];\n\t\t\t\tconst j4 = this._jointsById['thumb-tip'];\n\t\t\t\tconst j6 = this._jointsById['index-finger-phalanx-proximal'];\n\t\t\t\tconst j9 = this._jointsById['index-finger-tip'];\n\t\t\t\tconst j16 = this._jointsById['ring-finger-phalanx-proximal'];\n\t\t\t\tconst j21 = this._jointsById['pinky-finger-phalanx-proximal'];\n\t\t\t\tif (j1 && j4 && j6 && j9 && j16 && j21) {\n\t\t\t\t\t\tthis._inputSource._dirtyRay = true;\n\t\t\t\t\t\tthis._inputSource._rayLocal.origin.lerp(j4._localPosition, j9._localPosition, 0.5);\n\t\t\t\t\t\tlet jointL = j1;\n\t\t\t\t\t\tlet jointR = j21;\n\t\t\t\t\t\tif (this._inputSource.handedness === XRHAND_LEFT) {\n\t\t\t\t\t\t\t\tconst t = jointL;\n\t\t\t\t\t\t\t\tjointL = jointR;\n\t\t\t\t\t\t\t\tjointR = t;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvecA$1.sub2(jointL._localPosition, this._wrist._localPosition);\n\t\t\t\t\t\tvecB$1.sub2(jointR._localPosition, this._wrist._localPosition);\n\t\t\t\t\t\tvecC.cross(vecA$1, vecB$1).normalize();\n\t\t\t\t\t\tvecA$1.lerp(j6._localPosition, j16._localPosition, 0.5);\n\t\t\t\t\t\tvecA$1.sub(this._wrist._localPosition).normalize();\n\t\t\t\t\t\tthis._inputSource._rayLocal.direction.lerp(vecC, vecA$1, 0.5).normalize();\n\t\t\t\t}\n\t\t\t\tconst squeezing = this._fingerIsClosed(1) && this._fingerIsClosed(2) && this._fingerIsClosed(3) && this._fingerIsClosed(4);\n\t\t\t\tif (squeezing) {\n\t\t\t\t\t\tif (!this._inputSource._squeezing) {\n\t\t\t\t\t\t\t\tthis._inputSource._squeezing = true;\n\t\t\t\t\t\t\t\tthis._inputSource.fire('squeezestart');\n\t\t\t\t\t\t\t\tthis._manager.input.fire('squeezestart', this._inputSource);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tif (this._inputSource._squeezing) {\n\t\t\t\t\t\t\t\tthis._inputSource._squeezing = false;\n\t\t\t\t\t\t\t\tthis._inputSource.fire('squeeze');\n\t\t\t\t\t\t\t\tthis._manager.input.fire('squeeze', this._inputSource);\n\t\t\t\t\t\t\t\tthis._inputSource.fire('squeezeend');\n\t\t\t\t\t\t\t\tthis._manager.input.fire('squeezeend', this._inputSource);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_fingerIsClosed(index) {\n\t\t\t\tconst finger = this._fingers[index];\n\t\t\t\tvecA$1.sub2(finger.joints[0]._localPosition, finger.joints[1]._localPosition).normalize();\n\t\t\t\tvecB$1.sub2(finger.joints[2]._localPosition, finger.joints[3]._localPosition).normalize();\n\t\t\t\treturn vecA$1.dot(vecB$1) < -0.8;\n\t\t}\n\t\tgetJointById(id) {\n\t\t\t\treturn this._jointsById[id] || null;\n\t\t}\n\t\tget fingers() {\n\t\t\t\treturn this._fingers;\n\t\t}\n\t\tget joints() {\n\t\t\t\treturn this._joints;\n\t\t}\n\t\tget tips() {\n\t\t\t\treturn this._tips;\n\t\t}\n\t\tget wrist() {\n\t\t\t\treturn this._wrist;\n\t\t}\n\t\tget tracking() {\n\t\t\t\treturn this._tracking;\n\t\t}\n}\n\nconst vec3A$1 = new Vec3();\nconst quat = new Quat();\nlet ids$1 = 0;\nclass XrInputSource extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_REMOVE = 'remove';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_SELECT = 'select';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_SELECTSTART = 'selectstart';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_SELECTEND = 'selectend';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_SQUEEZE = 'squeeze';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_SQUEEZESTART = 'squeezestart';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_SQUEEZEEND = 'squeezeend';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_HITTESTADD = 'hittest:add';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_HITTESTREMOVE = 'hittest:remove';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_HITTESTRESULT = 'hittest:result';\n\t\t}\n\t\tconstructor(manager, xrInputSource){\n\t\t\t\tsuper(), this._ray = new Ray(), this._rayLocal = new Ray(), this._grip = false, this._hand = null, this._velocitiesAvailable = false, this._velocitiesTimestamp = now(), this._localTransform = null, this._worldTransform = null, this._position = new Vec3(), this._rotation = new Quat(), this._localPosition = null, this._localPositionLast = null, this._localRotation = null, this._linearVelocity = null, this._dirtyLocal = true, this._dirtyRay = false, this._selecting = false, this._squeezing = false, this._elementInput = true, this._elementEntity = null, this._hitTestSources = [];\n\t\t\t\tthis._id = ++ids$1;\n\t\t\t\tthis._manager = manager;\n\t\t\t\tthis._xrInputSource = xrInputSource;\n\t\t\t\tif (xrInputSource.hand) {\n\t\t\t\t\t\tthis._hand = new XrHand(this);\n\t\t\t\t}\n\t\t}\n\t\tget id() {\n\t\t\t\treturn this._id;\n\t\t}\n\t\tget inputSource() {\n\t\t\t\treturn this._xrInputSource;\n\t\t}\n\t\tget targetRayMode() {\n\t\t\t\treturn this._xrInputSource.targetRayMode;\n\t\t}\n\t\tget handedness() {\n\t\t\t\treturn this._xrInputSource.handedness;\n\t\t}\n\t\tget profiles() {\n\t\t\t\treturn this._xrInputSource.profiles;\n\t\t}\n\t\tget grip() {\n\t\t\t\treturn this._grip;\n\t\t}\n\t\tget hand() {\n\t\t\t\treturn this._hand;\n\t\t}\n\t\tget gamepad() {\n\t\t\t\treturn this._xrInputSource.gamepad || null;\n\t\t}\n\t\tget selecting() {\n\t\t\t\treturn this._selecting;\n\t\t}\n\t\tget squeezing() {\n\t\t\t\treturn this._squeezing;\n\t\t}\n\t\tset elementInput(value) {\n\t\t\t\tif (this._elementInput === value) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._elementInput = value;\n\t\t\t\tif (!this._elementInput) {\n\t\t\t\t\t\tthis._elementEntity = null;\n\t\t\t\t}\n\t\t}\n\t\tget elementInput() {\n\t\t\t\treturn this._elementInput;\n\t\t}\n\t\tget elementEntity() {\n\t\t\t\treturn this._elementEntity;\n\t\t}\n\t\tget hitTestSources() {\n\t\t\t\treturn this._hitTestSources;\n\t\t}\n\t\tupdate(frame) {\n\t\t\t\tif (this._hand) {\n\t\t\t\t\t\tthis._hand.update(frame);\n\t\t\t\t} else {\n\t\t\t\t\t\tconst gripSpace = this._xrInputSource.gripSpace;\n\t\t\t\t\t\tif (gripSpace) {\n\t\t\t\t\t\t\t\tconst gripPose = frame.getPose(gripSpace, this._manager._referenceSpace);\n\t\t\t\t\t\t\t\tif (gripPose) {\n\t\t\t\t\t\t\t\t\t\tif (!this._grip) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._grip = true;\n\t\t\t\t\t\t\t\t\t\t\t\tthis._localTransform = new Mat4();\n\t\t\t\t\t\t\t\t\t\t\t\tthis._worldTransform = new Mat4();\n\t\t\t\t\t\t\t\t\t\t\t\tthis._localPositionLast = new Vec3();\n\t\t\t\t\t\t\t\t\t\t\t\tthis._localPosition = new Vec3();\n\t\t\t\t\t\t\t\t\t\t\t\tthis._localRotation = new Quat();\n\t\t\t\t\t\t\t\t\t\t\t\tthis._linearVelocity = new Vec3();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tconst timestamp = now();\n\t\t\t\t\t\t\t\t\t\tconst dt = (timestamp - this._velocitiesTimestamp) / 1000;\n\t\t\t\t\t\t\t\t\t\tthis._velocitiesTimestamp = timestamp;\n\t\t\t\t\t\t\t\t\t\tthis._dirtyLocal = true;\n\t\t\t\t\t\t\t\t\t\tthis._localPositionLast.copy(this._localPosition);\n\t\t\t\t\t\t\t\t\t\tthis._localPosition.copy(gripPose.transform.position);\n\t\t\t\t\t\t\t\t\t\tthis._localRotation.copy(gripPose.transform.orientation);\n\t\t\t\t\t\t\t\t\t\tthis._velocitiesAvailable = true;\n\t\t\t\t\t\t\t\t\t\tif (this._manager.input.velocitiesSupported && gripPose.linearVelocity) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._linearVelocity.copy(gripPose.linearVelocity);\n\t\t\t\t\t\t\t\t\t\t} else if (dt > 0) {\n\t\t\t\t\t\t\t\t\t\t\t\tvec3A$1.sub2(this._localPosition, this._localPositionLast).divScalar(dt);\n\t\t\t\t\t\t\t\t\t\t\t\tthis._linearVelocity.lerp(this._linearVelocity, vec3A$1, 0.15);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis._velocitiesAvailable = false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst targetRayPose = frame.getPose(this._xrInputSource.targetRaySpace, this._manager._referenceSpace);\n\t\t\t\t\t\tif (targetRayPose) {\n\t\t\t\t\t\t\t\tthis._dirtyRay = true;\n\t\t\t\t\t\t\t\tthis._rayLocal.origin.copy(targetRayPose.transform.position);\n\t\t\t\t\t\t\t\tthis._rayLocal.direction.set(0, 0, -1);\n\t\t\t\t\t\t\t\tquat.copy(targetRayPose.transform.orientation);\n\t\t\t\t\t\t\t\tquat.transformVector(this._rayLocal.direction, this._rayLocal.direction);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_updateTransforms() {\n\t\t\t\tif (this._dirtyLocal) {\n\t\t\t\t\t\tthis._dirtyLocal = false;\n\t\t\t\t\t\tthis._localTransform.setTRS(this._localPosition, this._localRotation, Vec3.ONE);\n\t\t\t\t}\n\t\t\t\tconst parent = this._manager.camera.parent;\n\t\t\t\tif (parent) {\n\t\t\t\t\t\tthis._worldTransform.mul2(parent.getWorldTransform(), this._localTransform);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._worldTransform.copy(this._localTransform);\n\t\t\t\t}\n\t\t}\n\t\t_updateRayTransforms() {\n\t\t\t\tconst dirty = this._dirtyRay;\n\t\t\t\tthis._dirtyRay = false;\n\t\t\t\tconst parent = this._manager.camera.parent;\n\t\t\t\tif (parent) {\n\t\t\t\t\t\tconst parentTransform = this._manager.camera.parent.getWorldTransform();\n\t\t\t\t\t\tparentTransform.getTranslation(this._position);\n\t\t\t\t\t\tthis._rotation.setFromMat4(parentTransform);\n\t\t\t\t\t\tthis._rotation.transformVector(this._rayLocal.origin, this._ray.origin);\n\t\t\t\t\t\tthis._ray.origin.add(this._position);\n\t\t\t\t\t\tthis._rotation.transformVector(this._rayLocal.direction, this._ray.direction);\n\t\t\t\t} else if (dirty) {\n\t\t\t\t\t\tthis._ray.origin.copy(this._rayLocal.origin);\n\t\t\t\t\t\tthis._ray.direction.copy(this._rayLocal.direction);\n\t\t\t\t}\n\t\t}\n\t\tgetPosition() {\n\t\t\t\tif (!this._position) return null;\n\t\t\t\tthis._updateTransforms();\n\t\t\t\tthis._worldTransform.getTranslation(this._position);\n\t\t\t\treturn this._position;\n\t\t}\n\t\tgetLocalPosition() {\n\t\t\t\treturn this._localPosition;\n\t\t}\n\t\tgetRotation() {\n\t\t\t\tif (!this._rotation) return null;\n\t\t\t\tthis._updateTransforms();\n\t\t\t\tthis._rotation.setFromMat4(this._worldTransform);\n\t\t\t\treturn this._rotation;\n\t\t}\n\t\tgetLocalRotation() {\n\t\t\t\treturn this._localRotation;\n\t\t}\n\t\tgetLinearVelocity() {\n\t\t\t\tif (!this._velocitiesAvailable) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\treturn this._linearVelocity;\n\t\t}\n\t\tgetOrigin() {\n\t\t\t\tthis._updateRayTransforms();\n\t\t\t\treturn this._ray.origin;\n\t\t}\n\t\tgetDirection() {\n\t\t\t\tthis._updateRayTransforms();\n\t\t\t\treturn this._ray.direction;\n\t\t}\n\t\thitTestStart(options = {}) {\n\t\t\t\toptions.inputSource = this;\n\t\t\t\toptions.profile = this._xrInputSource.profiles[0];\n\t\t\t\tconst callback = options.callback;\n\t\t\t\toptions.callback = (err, hitTestSource)=>{\n\t\t\t\t\t\tif (hitTestSource) this.onHitTestSourceAdd(hitTestSource);\n\t\t\t\t\t\tif (callback) callback(err, hitTestSource);\n\t\t\t\t};\n\t\t\t\tthis._manager.hitTest.start(options);\n\t\t}\n\t\tonHitTestSourceAdd(hitTestSource) {\n\t\t\t\tthis._hitTestSources.push(hitTestSource);\n\t\t\t\tthis.fire('hittest:add', hitTestSource);\n\t\t\t\thitTestSource.on('result', (position, rotation, inputSource, hitTestResult)=>{\n\t\t\t\t\t\tif (inputSource !== this) return;\n\t\t\t\t\t\tthis.fire('hittest:result', hitTestSource, position, rotation, hitTestResult);\n\t\t\t\t});\n\t\t\t\thitTestSource.once('remove', ()=>{\n\t\t\t\t\t\tthis.onHitTestSourceRemove(hitTestSource);\n\t\t\t\t\t\tthis.fire('hittest:remove', hitTestSource);\n\t\t\t\t});\n\t\t}\n\t\tonHitTestSourceRemove(hitTestSource) {\n\t\t\t\tconst ind = this._hitTestSources.indexOf(hitTestSource);\n\t\t\t\tif (ind !== -1) this._hitTestSources.splice(ind, 1);\n\t\t}\n}\n\nclass XrInput extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_ADD = 'add';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_REMOVE = 'remove';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_SELECT = 'select';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_SELECTSTART = 'selectstart';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_SELECTEND = 'selectend';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_SQUEEZE = 'squeeze';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_SQUEEZESTART = 'squeezestart';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_SQUEEZEEND = 'squeezeend';\n\t\t}\n\t\tconstructor(manager){\n\t\t\t\tsuper(), this._inputSources = [], this.velocitiesSupported = false;\n\t\t\t\tthis.manager = manager;\n\t\t\t\tthis.velocitiesSupported = !!(platform.browser && window.XRPose?.prototype?.hasOwnProperty('linearVelocity'));\n\t\t\t\tthis._onInputSourcesChangeEvt = (evt)=>{\n\t\t\t\t\t\tthis._onInputSourcesChange(evt);\n\t\t\t\t};\n\t\t\t\tthis.manager.on('start', this._onSessionStart, this);\n\t\t\t\tthis.manager.on('end', this._onSessionEnd, this);\n\t\t}\n\t\t_onSessionStart() {\n\t\t\t\tconst session = this.manager.session;\n\t\t\t\tsession.addEventListener('inputsourceschange', this._onInputSourcesChangeEvt);\n\t\t\t\tsession.addEventListener('select', (evt)=>{\n\t\t\t\t\t\tconst inputSource = this._getByInputSource(evt.inputSource);\n\t\t\t\t\t\tinputSource.update(evt.frame);\n\t\t\t\t\t\tinputSource.fire('select', evt);\n\t\t\t\t\t\tthis.fire('select', inputSource, evt);\n\t\t\t\t});\n\t\t\t\tsession.addEventListener('selectstart', (evt)=>{\n\t\t\t\t\t\tconst inputSource = this._getByInputSource(evt.inputSource);\n\t\t\t\t\t\tinputSource.update(evt.frame);\n\t\t\t\t\t\tinputSource._selecting = true;\n\t\t\t\t\t\tinputSource.fire('selectstart', evt);\n\t\t\t\t\t\tthis.fire('selectstart', inputSource, evt);\n\t\t\t\t});\n\t\t\t\tsession.addEventListener('selectend', (evt)=>{\n\t\t\t\t\t\tconst inputSource = this._getByInputSource(evt.inputSource);\n\t\t\t\t\t\tinputSource.update(evt.frame);\n\t\t\t\t\t\tinputSource._selecting = false;\n\t\t\t\t\t\tinputSource.fire('selectend', evt);\n\t\t\t\t\t\tthis.fire('selectend', inputSource, evt);\n\t\t\t\t});\n\t\t\t\tsession.addEventListener('squeeze', (evt)=>{\n\t\t\t\t\t\tconst inputSource = this._getByInputSource(evt.inputSource);\n\t\t\t\t\t\tinputSource.update(evt.frame);\n\t\t\t\t\t\tinputSource.fire('squeeze', evt);\n\t\t\t\t\t\tthis.fire('squeeze', inputSource, evt);\n\t\t\t\t});\n\t\t\t\tsession.addEventListener('squeezestart', (evt)=>{\n\t\t\t\t\t\tconst inputSource = this._getByInputSource(evt.inputSource);\n\t\t\t\t\t\tinputSource.update(evt.frame);\n\t\t\t\t\t\tinputSource._squeezing = true;\n\t\t\t\t\t\tinputSource.fire('squeezestart', evt);\n\t\t\t\t\t\tthis.fire('squeezestart', inputSource, evt);\n\t\t\t\t});\n\t\t\t\tsession.addEventListener('squeezeend', (evt)=>{\n\t\t\t\t\t\tconst inputSource = this._getByInputSource(evt.inputSource);\n\t\t\t\t\t\tinputSource.update(evt.frame);\n\t\t\t\t\t\tinputSource._squeezing = false;\n\t\t\t\t\t\tinputSource.fire('squeezeend', evt);\n\t\t\t\t\t\tthis.fire('squeezeend', inputSource, evt);\n\t\t\t\t});\n\t\t\t\tconst inputSources = session.inputSources;\n\t\t\t\tfor(let i = 0; i < inputSources.length; i++){\n\t\t\t\t\t\tthis._addInputSource(inputSources[i]);\n\t\t\t\t}\n\t\t}\n\t\t_onSessionEnd() {\n\t\t\t\tlet i = this._inputSources.length;\n\t\t\t\twhile(i--){\n\t\t\t\t\t\tconst inputSource = this._inputSources[i];\n\t\t\t\t\t\tthis._inputSources.splice(i, 1);\n\t\t\t\t\t\tinputSource.fire('remove');\n\t\t\t\t\t\tthis.fire('remove', inputSource);\n\t\t\t\t}\n\t\t\t\tconst session = this.manager.session;\n\t\t\t\tsession.removeEventListener('inputsourceschange', this._onInputSourcesChangeEvt);\n\t\t}\n\t\t_onInputSourcesChange(evt) {\n\t\t\t\tfor(let i = 0; i < evt.removed.length; i++){\n\t\t\t\t\t\tthis._removeInputSource(evt.removed[i]);\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < evt.added.length; i++){\n\t\t\t\t\t\tthis._addInputSource(evt.added[i]);\n\t\t\t\t}\n\t\t}\n\t\t_getByInputSource(xrInputSource) {\n\t\t\t\tfor(let i = 0; i < this._inputSources.length; i++){\n\t\t\t\t\t\tif (this._inputSources[i].inputSource === xrInputSource) {\n\t\t\t\t\t\t\t\treturn this._inputSources[i];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\t_addInputSource(xrInputSource) {\n\t\t\t\tif (this._getByInputSource(xrInputSource)) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst inputSource = new XrInputSource(this.manager, xrInputSource);\n\t\t\t\tthis._inputSources.push(inputSource);\n\t\t\t\tthis.fire('add', inputSource);\n\t\t}\n\t\t_removeInputSource(xrInputSource) {\n\t\t\t\tfor(let i = 0; i < this._inputSources.length; i++){\n\t\t\t\t\t\tif (this._inputSources[i].inputSource !== xrInputSource) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst inputSource = this._inputSources[i];\n\t\t\t\t\t\tthis._inputSources.splice(i, 1);\n\t\t\t\t\t\tlet h = inputSource.hitTestSources.length;\n\t\t\t\t\t\twhile(h--){\n\t\t\t\t\t\t\t\tinputSource.hitTestSources[h].remove();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tinputSource.fire('remove');\n\t\t\t\t\t\tthis.fire('remove', inputSource);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t}\n\t\tupdate(frame) {\n\t\t\t\tfor(let i = 0; i < this._inputSources.length; i++){\n\t\t\t\t\t\tthis._inputSources[i].update(frame);\n\t\t\t\t}\n\t\t}\n\t\tget inputSources() {\n\t\t\t\treturn this._inputSources;\n\t\t}\n}\n\nconst vec3A = new Vec3();\nconst vec3B = new Vec3();\nconst mat4A = new Mat4();\nconst mat4B = new Mat4();\nclass XrLightEstimation extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_AVAILABLE = 'available';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_ERROR = 'error';\n\t\t}\n\t\tconstructor(manager){\n\t\t\t\tsuper(), this._supported = false, this._available = false, this._lightProbeRequested = false, this._lightProbe = null, this._intensity = 0, this._rotation = new Quat(), this._color = new Color(), this._sphericalHarmonics = new Float32Array(27);\n\t\t\t\tthis._manager = manager;\n\t\t\t\tthis._manager.on('start', this._onSessionStart, this);\n\t\t\t\tthis._manager.on('end', this._onSessionEnd, this);\n\t\t}\n\t\t_onSessionStart() {\n\t\t\t\tconst supported = !!this._manager.session.requestLightProbe;\n\t\t\t\tif (!supported) return;\n\t\t\t\tthis._supported = true;\n\t\t}\n\t\t_onSessionEnd() {\n\t\t\t\tthis._supported = false;\n\t\t\t\tthis._available = false;\n\t\t\t\tthis._lightProbeRequested = false;\n\t\t\t\tthis._lightProbe = null;\n\t\t}\n\t\tstart() {\n\t\t\t\tlet err;\n\t\t\t\tif (!this._manager.session) {\n\t\t\t\t\t\terr = new Error('XR session is not running');\n\t\t\t\t}\n\t\t\t\tif (!err && this._manager.type !== XRTYPE_AR) {\n\t\t\t\t\t\terr = new Error('XR session type is not AR');\n\t\t\t\t}\n\t\t\t\tif (!err && !this._supported) {\n\t\t\t\t\t\terr = new Error('light-estimation is not supported');\n\t\t\t\t}\n\t\t\t\tif (!err && this._lightProbe || this._lightProbeRequested) {\n\t\t\t\t\t\terr = new Error('light estimation is already requested');\n\t\t\t\t}\n\t\t\t\tif (err) {\n\t\t\t\t\t\tthis.fire('error', err);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._lightProbeRequested = true;\n\t\t\t\tthis._manager.session.requestLightProbe().then((lightProbe)=>{\n\t\t\t\t\t\tconst wasRequested = this._lightProbeRequested;\n\t\t\t\t\t\tthis._lightProbeRequested = false;\n\t\t\t\t\t\tif (this._manager.active) {\n\t\t\t\t\t\t\t\tif (wasRequested) {\n\t\t\t\t\t\t\t\t\t\tthis._lightProbe = lightProbe;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.fire('error', new Error('XR session is not active'));\n\t\t\t\t\t\t}\n\t\t\t\t}).catch((ex)=>{\n\t\t\t\t\t\tthis._lightProbeRequested = false;\n\t\t\t\t\t\tthis.fire('error', ex);\n\t\t\t\t});\n\t\t}\n\t\tend() {\n\t\t\t\tthis._lightProbeRequested = false;\n\t\t\t\tthis._lightProbe = null;\n\t\t\t\tthis._available = false;\n\t\t}\n\t\tupdate(frame) {\n\t\t\t\tif (!this._lightProbe) return;\n\t\t\t\tconst lightEstimate = frame.getLightEstimate(this._lightProbe);\n\t\t\t\tif (!lightEstimate) return;\n\t\t\t\tif (!this._available) {\n\t\t\t\t\t\tthis._available = true;\n\t\t\t\t\t\tthis.fire('available');\n\t\t\t\t}\n\t\t\t\tconst pli = lightEstimate.primaryLightIntensity;\n\t\t\t\tthis._intensity = Math.max(1.0, Math.max(pli.x, Math.max(pli.y, pli.z)));\n\t\t\t\tvec3A.copy(pli).mulScalar(1 / this._intensity);\n\t\t\t\tthis._color.set(vec3A.x, vec3A.y, vec3A.z);\n\t\t\t\tvec3A.set(0, 0, 0);\n\t\t\t\tvec3B.copy(lightEstimate.primaryLightDirection);\n\t\t\t\tmat4A.setLookAt(vec3B, vec3A, Vec3.UP);\n\t\t\t\tmat4B.setFromAxisAngle(Vec3.RIGHT, 90);\n\t\t\t\tmat4A.mul(mat4B);\n\t\t\t\tthis._rotation.setFromMat4(mat4A);\n\t\t\t\tthis._sphericalHarmonics.set(lightEstimate.sphericalHarmonicsCoefficients);\n\t\t}\n\t\tget supported() {\n\t\t\t\treturn this._supported;\n\t\t}\n\t\tget available() {\n\t\t\t\treturn this._available;\n\t\t}\n\t\tget intensity() {\n\t\t\t\treturn this._available ? this._intensity : null;\n\t\t}\n\t\tget color() {\n\t\t\t\treturn this._available ? this._color : null;\n\t\t}\n\t\tget rotation() {\n\t\t\t\treturn this._available ? this._rotation : null;\n\t\t}\n\t\tget sphericalHarmonics() {\n\t\t\t\treturn this._available ? this._sphericalHarmonics : null;\n\t\t}\n}\n\nlet ids = 0;\nclass XrPlane extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_REMOVE = 'remove';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_CHANGE = 'change';\n\t\t}\n\t\tconstructor(planeDetection, xrPlane){\n\t\t\t\tsuper(), this._position = new Vec3(), this._rotation = new Quat();\n\t\t\t\tthis._id = ++ids;\n\t\t\t\tthis._planeDetection = planeDetection;\n\t\t\t\tthis._xrPlane = xrPlane;\n\t\t\t\tthis._lastChangedTime = xrPlane.lastChangedTime;\n\t\t\t\tthis._orientation = xrPlane.orientation;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tif (!this._xrPlane) return;\n\t\t\t\tthis._xrPlane = null;\n\t\t\t\tthis.fire('remove');\n\t\t}\n\t\tupdate(frame) {\n\t\t\t\tconst manager = this._planeDetection._manager;\n\t\t\t\tconst pose = frame.getPose(this._xrPlane.planeSpace, manager._referenceSpace);\n\t\t\t\tif (pose) {\n\t\t\t\t\t\tthis._position.copy(pose.transform.position);\n\t\t\t\t\t\tthis._rotation.copy(pose.transform.orientation);\n\t\t\t\t}\n\t\t\t\tif (this._lastChangedTime !== this._xrPlane.lastChangedTime) {\n\t\t\t\t\t\tthis._lastChangedTime = this._xrPlane.lastChangedTime;\n\t\t\t\t\t\tthis.fire('change');\n\t\t\t\t}\n\t\t}\n\t\tgetPosition() {\n\t\t\t\treturn this._position;\n\t\t}\n\t\tgetRotation() {\n\t\t\t\treturn this._rotation;\n\t\t}\n\t\tget id() {\n\t\t\t\treturn this._id;\n\t\t}\n\t\tget orientation() {\n\t\t\t\treturn this._orientation;\n\t\t}\n\t\tget points() {\n\t\t\t\treturn this._xrPlane.polygon;\n\t\t}\n\t\tget label() {\n\t\t\t\treturn this._xrPlane.semanticLabel || '';\n\t\t}\n}\n\nclass XrPlaneDetection extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_AVAILABLE = 'available';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_UNAVAILABLE = 'unavailable';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_ADD = 'add';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_REMOVE = 'remove';\n\t\t}\n\t\tconstructor(manager){\n\t\t\t\tsuper(), this._supported = platform.browser && !!window.XRPlane, this._available = false, this._planesIndex = new Map(), this._planes = [];\n\t\t\t\tthis._manager = manager;\n\t\t\t\tif (this._supported) {\n\t\t\t\t\t\tthis._manager.on('start', this._onSessionStart, this);\n\t\t\t\t\t\tthis._manager.on('end', this._onSessionEnd, this);\n\t\t\t\t}\n\t\t}\n\t\t_onSessionStart() {\n\t\t\t\tif (this._manager.session.enabledFeatures) {\n\t\t\t\t\t\tconst available = this._manager.session.enabledFeatures.indexOf('plane-detection') !== -1;\n\t\t\t\t\t\tif (available) {\n\t\t\t\t\t\t\t\tthis._available = true;\n\t\t\t\t\t\t\t\tthis.fire('available');\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_onSessionEnd() {\n\t\t\t\tfor(let i = 0; i < this._planes.length; i++){\n\t\t\t\t\t\tthis._planes[i].destroy();\n\t\t\t\t\t\tthis.fire('remove', this._planes[i]);\n\t\t\t\t}\n\t\t\t\tthis._planesIndex.clear();\n\t\t\t\tthis._planes.length = 0;\n\t\t\t\tif (this._available) {\n\t\t\t\t\t\tthis._available = false;\n\t\t\t\t\t\tthis.fire('unavailable');\n\t\t\t\t}\n\t\t}\n\t\tupdate(frame) {\n\t\t\t\tif (!this._available) {\n\t\t\t\t\t\tif (!this._manager.session.enabledFeatures && frame.detectedPlanes.size) {\n\t\t\t\t\t\t\t\tthis._available = true;\n\t\t\t\t\t\t\t\tthis.fire('available');\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst detectedPlanes = frame.detectedPlanes;\n\t\t\t\tfor (const [xrPlane, plane] of this._planesIndex){\n\t\t\t\t\t\tif (detectedPlanes.has(xrPlane)) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._planesIndex.delete(xrPlane);\n\t\t\t\t\t\tthis._planes.splice(this._planes.indexOf(plane), 1);\n\t\t\t\t\t\tplane.destroy();\n\t\t\t\t\t\tthis.fire('remove', plane);\n\t\t\t\t}\n\t\t\t\tfor (const xrPlane of detectedPlanes){\n\t\t\t\t\t\tlet plane = this._planesIndex.get(xrPlane);\n\t\t\t\t\t\tif (!plane) {\n\t\t\t\t\t\t\t\tplane = new XrPlane(this, xrPlane);\n\t\t\t\t\t\t\t\tthis._planesIndex.set(xrPlane, plane);\n\t\t\t\t\t\t\t\tthis._planes.push(plane);\n\t\t\t\t\t\t\t\tplane.update(frame);\n\t\t\t\t\t\t\t\tthis.fire('add', plane);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tplane.update(frame);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget supported() {\n\t\t\t\treturn this._supported;\n\t\t}\n\t\tget available() {\n\t\t\t\treturn this._available;\n\t\t}\n\t\tget planes() {\n\t\t\t\treturn this._planes;\n\t\t}\n}\n\nclass XrAnchor extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_DESTROY = 'destroy';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_CHANGE = 'change';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_PERSIST = 'persist';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_FORGET = 'forget';\n\t\t}\n\t\tconstructor(anchors, xrAnchor, uuid = null){\n\t\t\t\tsuper(), this._position = new Vec3(), this._rotation = new Quat(), this._uuid = null, this._uuidRequests = null;\n\t\t\t\tthis._anchors = anchors;\n\t\t\t\tthis._xrAnchor = xrAnchor;\n\t\t\t\tthis._uuid = uuid;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tif (!this._xrAnchor) return;\n\t\t\t\tconst xrAnchor = this._xrAnchor;\n\t\t\t\tthis._xrAnchor.delete();\n\t\t\t\tthis._xrAnchor = null;\n\t\t\t\tthis.fire('destroy', xrAnchor, this);\n\t\t}\n\t\tupdate(frame) {\n\t\t\t\tif (!this._xrAnchor) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst pose = frame.getPose(this._xrAnchor.anchorSpace, this._anchors.manager._referenceSpace);\n\t\t\t\tif (pose) {\n\t\t\t\t\t\tif (this._position.equals(pose.transform.position) && this._rotation.equals(pose.transform.orientation)) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._position.copy(pose.transform.position);\n\t\t\t\t\t\tthis._rotation.copy(pose.transform.orientation);\n\t\t\t\t\t\tthis.fire('change');\n\t\t\t\t}\n\t\t}\n\t\tgetPosition() {\n\t\t\t\treturn this._position;\n\t\t}\n\t\tgetRotation() {\n\t\t\t\treturn this._rotation;\n\t\t}\n\t\tpersist(callback) {\n\t\t\t\tif (!this._anchors.persistence) {\n\t\t\t\t\t\tcallback?.(new Error('Persistent Anchors are not supported'), null);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this._uuid) {\n\t\t\t\t\t\tcallback?.(null, this._uuid);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this._uuidRequests) {\n\t\t\t\t\t\tif (callback) this._uuidRequests.push(callback);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._uuidRequests = [];\n\t\t\t\tthis._xrAnchor.requestPersistentHandle().then((uuid)=>{\n\t\t\t\t\t\tthis._uuid = uuid;\n\t\t\t\t\t\tthis._anchors._indexByUuid.set(this._uuid, this);\n\t\t\t\t\t\tcallback?.(null, uuid);\n\t\t\t\t\t\tfor (const uuidRequest of this._uuidRequests){\n\t\t\t\t\t\t\t\tuuidRequest(null, uuid);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._uuidRequests = null;\n\t\t\t\t\t\tthis.fire('persist', uuid);\n\t\t\t\t}).catch((ex)=>{\n\t\t\t\t\t\tcallback?.(ex, null);\n\t\t\t\t\t\tfor (const uuidRequest of this._uuidRequests){\n\t\t\t\t\t\t\t\tuuidRequest(ex, null);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._uuidRequests = null;\n\t\t\t\t});\n\t\t}\n\t\tforget(callback) {\n\t\t\t\tif (!this._uuid) {\n\t\t\t\t\t\tcallback?.(new Error('Anchor is not persistent'));\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._anchors.forget(this._uuid, (ex)=>{\n\t\t\t\t\t\tthis._uuid = null;\n\t\t\t\t\t\tcallback?.(ex);\n\t\t\t\t\t\tthis.fire('forget');\n\t\t\t\t});\n\t\t}\n\t\tget uuid() {\n\t\t\t\treturn this._uuid;\n\t\t}\n\t\tget persistent() {\n\t\t\t\treturn !!this._uuid;\n\t\t}\n}\n\nclass XrAnchors extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_AVAILABLE = 'available';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_UNAVAILABLE = 'unavailable';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_ERROR = 'error';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_ADD = 'add';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_DESTROY = 'destroy';\n\t\t}\n\t\tconstructor(manager){\n\t\t\t\tsuper(), this._supported = platform.browser && !!window.XRAnchor, this._available = false, this._checkingAvailability = false, this._persistence = platform.browser && !!window?.XRSession?.prototype.restorePersistentAnchor, this._creationQueue = [], this._index = new Map(), this._indexByUuid = new Map(), this._list = [], this._callbacksAnchors = new Map();\n\t\t\t\tthis.manager = manager;\n\t\t\t\tif (this._supported) {\n\t\t\t\t\t\tthis.manager.on('start', this._onSessionStart, this);\n\t\t\t\t\t\tthis.manager.on('end', this._onSessionEnd, this);\n\t\t\t\t}\n\t\t}\n\t\t_onSessionStart() {\n\t\t\t\tconst available = this.manager.session.enabledFeatures?.indexOf('anchors') >= 0;\n\t\t\t\tif (!available) return;\n\t\t\t\tthis._available = available;\n\t\t\t\tthis.fire('available');\n\t\t}\n\t\t_onSessionEnd() {\n\t\t\t\tif (!this._available) return;\n\t\t\t\tthis._available = false;\n\t\t\t\tfor(let i = 0; i < this._creationQueue.length; i++){\n\t\t\t\t\t\tif (!this._creationQueue[i].callback) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._creationQueue[i].callback(new Error('session ended'), null);\n\t\t\t\t}\n\t\t\t\tthis._creationQueue.length = 0;\n\t\t\t\tthis._index.clear();\n\t\t\t\tthis._indexByUuid.clear();\n\t\t\t\tlet i = this._list.length;\n\t\t\t\twhile(i--){\n\t\t\t\t\t\tthis._list[i].destroy();\n\t\t\t\t}\n\t\t\t\tthis._list.length = 0;\n\t\t\t\tthis.fire('unavailable');\n\t\t}\n\t\t_createAnchor(xrAnchor, uuid = null) {\n\t\t\t\tconst anchor = new XrAnchor(this, xrAnchor, uuid);\n\t\t\t\tthis._index.set(xrAnchor, anchor);\n\t\t\t\tif (uuid) this._indexByUuid.set(uuid, anchor);\n\t\t\t\tthis._list.push(anchor);\n\t\t\t\tanchor.once('destroy', this._onAnchorDestroy, this);\n\t\t\t\treturn anchor;\n\t\t}\n\t\t_onAnchorDestroy(xrAnchor, anchor) {\n\t\t\t\tthis._index.delete(xrAnchor);\n\t\t\t\tif (anchor.uuid) this._indexByUuid.delete(anchor.uuid);\n\t\t\t\tconst ind = this._list.indexOf(anchor);\n\t\t\t\tif (ind !== -1) this._list.splice(ind, 1);\n\t\t\t\tthis.fire('destroy', anchor);\n\t\t}\n\t\tcreate(position, rotation, callback) {\n\t\t\t\tif (!this._available) {\n\t\t\t\t\t\tcallback?.(new Error('Anchors API is not available'), null);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (window.XRHitTestResult && position instanceof XRHitTestResult) {\n\t\t\t\t\t\tconst hitResult = position;\n\t\t\t\t\t\tcallback = rotation;\n\t\t\t\t\t\tif (!this._supported) {\n\t\t\t\t\t\t\t\tcallback?.(new Error('Anchors API is not supported'), null);\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!hitResult.createAnchor) {\n\t\t\t\t\t\t\t\tcallback?.(new Error('Creating Anchor from Hit Test is not supported'), null);\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\thitResult.createAnchor().then((xrAnchor)=>{\n\t\t\t\t\t\t\t\tconst anchor = this._createAnchor(xrAnchor);\n\t\t\t\t\t\t\t\tcallback?.(null, anchor);\n\t\t\t\t\t\t\t\tthis.fire('add', anchor);\n\t\t\t\t\t\t}).catch((ex)=>{\n\t\t\t\t\t\t\t\tcallback?.(ex, null);\n\t\t\t\t\t\t\t\tthis.fire('error', ex);\n\t\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._creationQueue.push({\n\t\t\t\t\t\t\t\ttransform: new XRRigidTransform(position, rotation),\n\t\t\t\t\t\t\t\tcallback: callback\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t}\n\t\trestore(uuid, callback) {\n\t\t\t\tif (!this._available) {\n\t\t\t\t\t\tcallback?.(new Error('Anchors API is not available'), null);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (!this._persistence) {\n\t\t\t\t\t\tcallback?.(new Error('Anchor Persistence is not supported'), null);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (!this.manager.active) {\n\t\t\t\t\t\tcallback?.(new Error('WebXR session is not active'), null);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.manager.session.restorePersistentAnchor(uuid).then((xrAnchor)=>{\n\t\t\t\t\t\tconst anchor = this._createAnchor(xrAnchor, uuid);\n\t\t\t\t\t\tcallback?.(null, anchor);\n\t\t\t\t\t\tthis.fire('add', anchor);\n\t\t\t\t}).catch((ex)=>{\n\t\t\t\t\t\tcallback?.(ex, null);\n\t\t\t\t\t\tthis.fire('error', ex);\n\t\t\t\t});\n\t\t}\n\t\tforget(uuid, callback) {\n\t\t\t\tif (!this._available) {\n\t\t\t\t\t\tcallback?.(new Error('Anchors API is not available'));\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (!this._persistence) {\n\t\t\t\t\t\tcallback?.(new Error('Anchor Persistence is not supported'));\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (!this.manager.active) {\n\t\t\t\t\t\tcallback?.(new Error('WebXR session is not active'));\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.manager.session.deletePersistentAnchor(uuid).then(()=>{\n\t\t\t\t\t\tcallback?.(null);\n\t\t\t\t}).catch((ex)=>{\n\t\t\t\t\t\tcallback?.(ex);\n\t\t\t\t\t\tthis.fire('error', ex);\n\t\t\t\t});\n\t\t}\n\t\tupdate(frame) {\n\t\t\t\tif (!this._available) {\n\t\t\t\t\t\tif (!this.manager.session.enabledFeatures && !this._checkingAvailability) {\n\t\t\t\t\t\t\t\tthis._checkingAvailability = true;\n\t\t\t\t\t\t\t\tframe.createAnchor(new XRRigidTransform(), this.manager._referenceSpace).then((xrAnchor)=>{\n\t\t\t\t\t\t\t\t\t\txrAnchor.delete();\n\t\t\t\t\t\t\t\t\t\tif (this.manager.active) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._available = true;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.fire('available');\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}).catch(()=>{});\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this._creationQueue.length) {\n\t\t\t\t\t\tfor(let i = 0; i < this._creationQueue.length; i++){\n\t\t\t\t\t\t\t\tconst request = this._creationQueue[i];\n\t\t\t\t\t\t\t\tframe.createAnchor(request.transform, this.manager._referenceSpace).then((xrAnchor)=>{\n\t\t\t\t\t\t\t\t\t\tif (request.callback) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._callbacksAnchors.set(xrAnchor, request.callback);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}).catch((ex)=>{\n\t\t\t\t\t\t\t\t\t\tif (request.callback) {\n\t\t\t\t\t\t\t\t\t\t\t\trequest.callback(ex, null);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tthis.fire('error', ex);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._creationQueue.length = 0;\n\t\t\t\t}\n\t\t\t\tfor (const [xrAnchor, anchor] of this._index){\n\t\t\t\t\t\tif (frame.trackedAnchors.has(xrAnchor)) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._index.delete(xrAnchor);\n\t\t\t\t\t\tanchor.destroy();\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < this._list.length; i++){\n\t\t\t\t\t\tthis._list[i].update(frame);\n\t\t\t\t}\n\t\t\t\tfor (const xrAnchor of frame.trackedAnchors){\n\t\t\t\t\t\tif (this._index.has(xrAnchor)) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tconst tmp = xrAnchor.anchorSpace;\n\t\t\t\t\t\t} catch (ex) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst anchor = this._createAnchor(xrAnchor);\n\t\t\t\t\t\tanchor.update(frame);\n\t\t\t\t\t\tconst callback = this._callbacksAnchors.get(xrAnchor);\n\t\t\t\t\t\tif (callback) {\n\t\t\t\t\t\t\t\tthis._callbacksAnchors.delete(xrAnchor);\n\t\t\t\t\t\t\t\tcallback(null, anchor);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.fire('add', anchor);\n\t\t\t\t}\n\t\t}\n\t\tget supported() {\n\t\t\t\treturn this._supported;\n\t\t}\n\t\tget available() {\n\t\t\t\treturn this._available;\n\t\t}\n\t\tget persistence() {\n\t\t\t\treturn this._persistence;\n\t\t}\n\t\tget uuids() {\n\t\t\t\tif (!this._available) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tif (!this._persistence) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tif (!this.manager.active) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\treturn this.manager.session.persistentAnchors;\n\t\t}\n\t\tget list() {\n\t\t\t\treturn this._list;\n\t\t}\n}\n\nclass XrMesh extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_REMOVE = 'remove';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_CHANGE = 'change';\n\t\t}\n\t\tconstructor(meshDetection, xrMesh){\n\t\t\t\tsuper(), this._lastChanged = 0, this._position = new Vec3(), this._rotation = new Quat();\n\t\t\t\tthis._meshDetection = meshDetection;\n\t\t\t\tthis._xrMesh = xrMesh;\n\t\t\t\tthis._lastChanged = this._xrMesh.lastChangedTime;\n\t\t}\n\t\tget xrMesh() {\n\t\t\t\treturn this._xrMesh;\n\t\t}\n\t\tget label() {\n\t\t\t\treturn this._xrMesh.semanticLabel || '';\n\t\t}\n\t\tget vertices() {\n\t\t\t\treturn this._xrMesh.vertices;\n\t\t}\n\t\tget indices() {\n\t\t\t\treturn this._xrMesh.indices;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tif (!this._xrMesh) return;\n\t\t\t\tthis._xrMesh = null;\n\t\t\t\tthis.fire('remove');\n\t\t}\n\t\tupdate(frame) {\n\t\t\t\tconst manager = this._meshDetection._manager;\n\t\t\t\tconst pose = frame.getPose(this._xrMesh.meshSpace, manager._referenceSpace);\n\t\t\t\tif (pose) {\n\t\t\t\t\t\tthis._position.copy(pose.transform.position);\n\t\t\t\t\t\tthis._rotation.copy(pose.transform.orientation);\n\t\t\t\t}\n\t\t\t\tif (this._lastChanged !== this._xrMesh.lastChangedTime) {\n\t\t\t\t\t\tthis._lastChanged = this._xrMesh.lastChangedTime;\n\t\t\t\t\t\tthis.fire('change');\n\t\t\t\t}\n\t\t}\n\t\tgetPosition() {\n\t\t\t\treturn this._position;\n\t\t}\n\t\tgetRotation() {\n\t\t\t\treturn this._rotation;\n\t\t}\n}\n\nclass XrMeshDetection extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_AVAILABLE = 'available';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_UNAVAILABLE = 'unavailable';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_ADD = 'add';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_REMOVE = 'remove';\n\t\t}\n\t\tconstructor(manager){\n\t\t\t\tsuper(), this._supported = platform.browser && !!window.XRMesh, this._available = false, this._index = new Map(), this._list = [];\n\t\t\t\tthis._manager = manager;\n\t\t\t\tif (this._supported) {\n\t\t\t\t\t\tthis._manager.on('start', this._onSessionStart, this);\n\t\t\t\t\t\tthis._manager.on('end', this._onSessionEnd, this);\n\t\t\t\t}\n\t\t}\n\t\tupdate(frame) {\n\t\t\t\tif (!this._available) {\n\t\t\t\t\t\tif (!this._manager.session.enabledFeatures && frame.detectedMeshes.size) {\n\t\t\t\t\t\t\t\tthis._available = true;\n\t\t\t\t\t\t\t\tthis.fire('available');\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor (const xrMesh of frame.detectedMeshes){\n\t\t\t\t\t\tlet mesh = this._index.get(xrMesh);\n\t\t\t\t\t\tif (!mesh) {\n\t\t\t\t\t\t\t\tmesh = new XrMesh(this, xrMesh);\n\t\t\t\t\t\t\t\tthis._index.set(xrMesh, mesh);\n\t\t\t\t\t\t\t\tthis._list.push(mesh);\n\t\t\t\t\t\t\t\tmesh.update(frame);\n\t\t\t\t\t\t\t\tthis.fire('add', mesh);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tmesh.update(frame);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor (const mesh of this._index.values()){\n\t\t\t\t\t\tif (frame.detectedMeshes.has(mesh.xrMesh)) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._removeMesh(mesh);\n\t\t\t\t}\n\t\t}\n\t\t_removeMesh(mesh) {\n\t\t\t\tthis._index.delete(mesh.xrMesh);\n\t\t\t\tthis._list.splice(this._list.indexOf(mesh), 1);\n\t\t\t\tmesh.destroy();\n\t\t\t\tthis.fire('remove', mesh);\n\t\t}\n\t\t_onSessionStart() {\n\t\t\t\tif (this._manager.session.enabledFeatures) {\n\t\t\t\t\t\tconst available = this._manager.session.enabledFeatures.indexOf('mesh-detection') !== -1;\n\t\t\t\t\t\tif (!available) return;\n\t\t\t\t\t\tthis._available = available;\n\t\t\t\t\t\tthis.fire('available');\n\t\t\t\t}\n\t\t}\n\t\t_onSessionEnd() {\n\t\t\t\tif (!this._available) return;\n\t\t\t\tthis._available = false;\n\t\t\t\tfor (const mesh of this._index.values()){\n\t\t\t\t\t\tthis._removeMesh(mesh);\n\t\t\t\t}\n\t\t\t\tthis.fire('unavailable');\n\t\t}\n\t\tget supported() {\n\t\t\t\treturn this._supported;\n\t\t}\n\t\tget available() {\n\t\t\t\treturn this._available;\n\t\t}\n\t\tget meshes() {\n\t\t\t\treturn this._list;\n\t\t}\n}\n\nclass XrView extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_DEPTHRESIZE = 'depth:resize';\n\t\t}\n\t\tconstructor(manager, xrView, viewsCount){\n\t\t\t\tsuper(), this._positionData = new Float32Array(3), this._viewport = new Vec4(), this._projMat = new Mat4(), this._projViewOffMat = new Mat4(), this._viewMat = new Mat4(), this._viewOffMat = new Mat4(), this._viewMat3 = new Mat3(), this._viewInvMat = new Mat4(), this._viewInvOffMat = new Mat4(), this._xrCamera = null, this._textureColor = null, this._textureDepth = null, this._depthInfo = null, this._emptyDepthBuffer = new Uint8Array(32), this._depthMatrix = new Mat4();\n\t\t\t\tthis._manager = manager;\n\t\t\t\tthis._xrView = xrView;\n\t\t\t\tconst device = this._manager.app.graphicsDevice;\n\t\t\t\tif (this._manager.views.supportedColor) {\n\t\t\t\t\t\tthis._xrCamera = this._xrView.camera;\n\t\t\t\t\t\tif (this._manager.views.availableColor && this._xrCamera) {\n\t\t\t\t\t\t\t\tthis._textureColor = new Texture(device, {\n\t\t\t\t\t\t\t\t\t\tformat: PIXELFORMAT_RGB8,\n\t\t\t\t\t\t\t\t\t\tmipmaps: false,\n\t\t\t\t\t\t\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\t\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\t\t\t\t\tminFilter: FILTER_LINEAR,\n\t\t\t\t\t\t\t\t\t\tmagFilter: FILTER_LINEAR,\n\t\t\t\t\t\t\t\t\t\twidth: this._xrCamera.width,\n\t\t\t\t\t\t\t\t\t\theight: this._xrCamera.height,\n\t\t\t\t\t\t\t\t\t\tname: `XrView-${this._xrView.eye}-Color`\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this._manager.views.supportedDepth && this._manager.views.availableDepth) {\n\t\t\t\t\t\tconst filtering = this._manager.views.depthGpuOptimized ? FILTER_NEAREST : FILTER_LINEAR;\n\t\t\t\t\t\tthis._textureDepth = new Texture(device, {\n\t\t\t\t\t\t\t\tformat: this._manager.views.depthPixelFormat,\n\t\t\t\t\t\t\t\tarrayLength: viewsCount === 1 ? 0 : viewsCount,\n\t\t\t\t\t\t\t\tmipmaps: false,\n\t\t\t\t\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\t\t\tminFilter: filtering,\n\t\t\t\t\t\t\t\tmagFilter: filtering,\n\t\t\t\t\t\t\t\twidth: 4,\n\t\t\t\t\t\t\t\theight: 4,\n\t\t\t\t\t\t\t\tname: `XrView-${this._xrView.eye}-Depth`\n\t\t\t\t\t\t});\n\t\t\t\t\t\tfor(let i = 0; i < this._textureDepth._levels.length; i++){\n\t\t\t\t\t\t\t\tthis._textureDepth._levels[i] = this._emptyDepthBuffer;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._textureDepth.upload();\n\t\t\t\t}\n\t\t\t\tif (this._textureColor || this._textureDepth) {\n\t\t\t\t\t\tdevice.on('devicelost', this._onDeviceLost, this);\n\t\t\t\t}\n\t\t}\n\t\tget textureColor() {\n\t\t\t\treturn this._textureColor;\n\t\t}\n\t\tget textureDepth() {\n\t\t\t\treturn this._textureDepth;\n\t\t}\n\t\tget depthUvMatrix() {\n\t\t\t\treturn this._depthMatrix;\n\t\t}\n\t\tget depthValueToMeters() {\n\t\t\t\treturn this._depthInfo?.rawValueToMeters || 0;\n\t\t}\n\t\tget eye() {\n\t\t\t\treturn this._xrView.eye;\n\t\t}\n\t\tget viewport() {\n\t\t\t\treturn this._viewport;\n\t\t}\n\t\tget projMat() {\n\t\t\t\treturn this._projMat;\n\t\t}\n\t\tget projViewOffMat() {\n\t\t\t\treturn this._projViewOffMat;\n\t\t}\n\t\tget viewOffMat() {\n\t\t\t\treturn this._viewOffMat;\n\t\t}\n\t\tget viewInvOffMat() {\n\t\t\t\treturn this._viewInvOffMat;\n\t\t}\n\t\tget viewMat3() {\n\t\t\t\treturn this._viewMat3;\n\t\t}\n\t\tget positionData() {\n\t\t\t\treturn this._positionData;\n\t\t}\n\t\tupdate(frame, xrView) {\n\t\t\t\tthis._xrView = xrView;\n\t\t\t\tif (this._manager.views.availableColor) {\n\t\t\t\t\t\tthis._xrCamera = this._xrView.camera;\n\t\t\t\t}\n\t\t\t\tconst layer = frame.session.renderState.baseLayer;\n\t\t\t\tconst viewport = layer.getViewport(this._xrView);\n\t\t\t\tthis._viewport.x = viewport.x;\n\t\t\t\tthis._viewport.y = viewport.y;\n\t\t\t\tthis._viewport.z = viewport.width;\n\t\t\t\tthis._viewport.w = viewport.height;\n\t\t\t\tthis._projMat.set(this._xrView.projectionMatrix);\n\t\t\t\tthis._viewMat.set(this._xrView.transform.inverse.matrix);\n\t\t\t\tthis._viewInvMat.set(this._xrView.transform.matrix);\n\t\t\t\tthis._updateTextureColor();\n\t\t\t\tthis._updateDepth(frame);\n\t\t}\n\t\t_updateTextureColor() {\n\t\t\t\tif (!this._manager.views.availableColor || !this._xrCamera || !this._textureColor) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst binding = this._manager.webglBinding;\n\t\t\t\tif (!binding) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst texture = binding.getCameraImage(this._xrCamera);\n\t\t\t\tif (!texture) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst device = this._manager.app.graphicsDevice;\n\t\t\t\tconst gl = device.gl;\n\t\t\t\tif (!this._frameBufferSource) {\n\t\t\t\t\t\tthis._frameBufferSource = gl.createFramebuffer();\n\t\t\t\t\t\tthis._frameBuffer = gl.createFramebuffer();\n\t\t\t\t} else {\n\t\t\t\t\t\tconst attachmentBaseConstant = gl.COLOR_ATTACHMENT0;\n\t\t\t\t\t\tconst width = this._xrCamera.width;\n\t\t\t\t\t\tconst height = this._xrCamera.height;\n\t\t\t\t\t\tdevice.setFramebuffer(this._frameBufferSource);\n\t\t\t\t\t\tgl.framebufferTexture2D(gl.FRAMEBUFFER, attachmentBaseConstant, gl.TEXTURE_2D, texture, 0);\n\t\t\t\t\t\tdevice.setFramebuffer(this._frameBuffer);\n\t\t\t\t\t\tgl.framebufferTexture2D(gl.FRAMEBUFFER, attachmentBaseConstant, gl.TEXTURE_2D, this._textureColor.impl._glTexture, 0);\n\t\t\t\t\t\tgl.bindFramebuffer(gl.READ_FRAMEBUFFER, this._frameBufferSource);\n\t\t\t\t\t\tgl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, this._frameBuffer);\n\t\t\t\t\t\tgl.blitFramebuffer(0, height, width, 0, 0, 0, width, height, gl.COLOR_BUFFER_BIT, gl.NEAREST);\n\t\t\t\t}\n\t\t}\n\t\t_updateDepth(frame) {\n\t\t\t\tif (!this._manager.views.availableDepth || !this._textureDepth) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst gpu = this._manager.views.depthGpuOptimized;\n\t\t\t\tconst infoSource = gpu ? this._manager.webglBinding : frame;\n\t\t\t\tif (!infoSource) {\n\t\t\t\t\t\tthis._depthInfo = null;\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst depthInfo = infoSource.getDepthInformation(this._xrView);\n\t\t\t\tif (!depthInfo) {\n\t\t\t\t\t\tthis._depthInfo = null;\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tlet matrixDirty = !this._depthInfo !== !depthInfo;\n\t\t\t\tthis._depthInfo = depthInfo;\n\t\t\t\tconst width = this._depthInfo?.width || 4;\n\t\t\t\tconst height = this._depthInfo?.height || 4;\n\t\t\t\tlet resized = false;\n\t\t\t\tif (this._textureDepth.width !== width || this._textureDepth.height !== height) {\n\t\t\t\t\t\tthis._textureDepth._width = width;\n\t\t\t\t\t\tthis._textureDepth._height = height;\n\t\t\t\t\t\tmatrixDirty = true;\n\t\t\t\t\t\tresized = true;\n\t\t\t\t}\n\t\t\t\tif (matrixDirty) {\n\t\t\t\t\t\tif (this._depthInfo) {\n\t\t\t\t\t\t\t\tthis._depthMatrix.data.set(this._depthInfo.normDepthBufferFromNormView.matrix);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._depthMatrix.setIdentity();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this._depthInfo) {\n\t\t\t\t\t\tif (gpu) {\n\t\t\t\t\t\t\t\tif (this._depthInfo.texture) {\n\t\t\t\t\t\t\t\t\t\tconst gl = this._manager.app.graphicsDevice.gl;\n\t\t\t\t\t\t\t\t\t\tthis._textureDepth.impl._glTexture = this._depthInfo.texture;\n\t\t\t\t\t\t\t\t\t\tif (this._depthInfo.textureType === 'texture-array') {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._textureDepth.impl._glTarget = gl.TEXTURE_2D_ARRAY;\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._textureDepth.impl._glTarget = gl.TEXTURE_2D;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tswitch(this._manager.views.depthPixelFormat){\n\t\t\t\t\t\t\t\t\t\t\t\tcase PIXELFORMAT_R32F:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis._textureDepth.impl._glInternalFormat = gl.R32F;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis._textureDepth.impl._glPixelType = gl.FLOAT;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis._textureDepth.impl._glFormat = gl.RED;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t\t\tcase PIXELFORMAT_DEPTH:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis._textureDepth.impl._glInternalFormat = gl.DEPTH_COMPONENT16;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis._textureDepth.impl._glPixelType = gl.UNSIGNED_SHORT;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis._textureDepth.impl._glFormat = gl.DEPTH_COMPONENT;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tthis._textureDepth.impl._glCreated = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._textureDepth._levels[0] = new Uint8Array(this._depthInfo.data);\n\t\t\t\t\t\t\t\tthis._textureDepth.upload();\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._textureDepth._levels[0] = this._emptyDepthBuffer;\n\t\t\t\t\t\tthis._textureDepth.upload();\n\t\t\t\t}\n\t\t\t\tif (resized) this.fire('depth:resize', width, height);\n\t\t}\n\t\tupdateTransforms(transform) {\n\t\t\t\tif (transform) {\n\t\t\t\t\t\tthis._viewInvOffMat.mul2(transform, this._viewInvMat);\n\t\t\t\t\t\tthis.viewOffMat.copy(this._viewInvOffMat).invert();\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._viewInvOffMat.copy(this._viewInvMat);\n\t\t\t\t\t\tthis.viewOffMat.copy(this._viewMat);\n\t\t\t\t}\n\t\t\t\tthis._viewMat3.setFromMat4(this._viewOffMat);\n\t\t\t\tthis._projViewOffMat.mul2(this._projMat, this._viewOffMat);\n\t\t\t\tthis._positionData[0] = this._viewInvOffMat.data[12];\n\t\t\t\tthis._positionData[1] = this._viewInvOffMat.data[13];\n\t\t\t\tthis._positionData[2] = this._viewInvOffMat.data[14];\n\t\t}\n\t\t_onDeviceLost() {\n\t\t\t\tthis._frameBufferSource = null;\n\t\t\t\tthis._frameBuffer = null;\n\t\t\t\tthis._depthInfo = null;\n\t\t}\n\t\tgetDepth(u, v) {\n\t\t\t\tif (this._manager.views.depthGpuOptimized) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\treturn this._depthInfo?.getDepthInMeters(u, v) ?? null;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis._depthInfo = null;\n\t\t\t\tif (this._textureColor) {\n\t\t\t\t\t\tthis._textureColor.destroy();\n\t\t\t\t\t\tthis._textureColor = null;\n\t\t\t\t}\n\t\t\t\tif (this._textureDepth) {\n\t\t\t\t\t\tthis._textureDepth.destroy();\n\t\t\t\t\t\tthis._textureDepth = null;\n\t\t\t\t}\n\t\t\t\tif (this._frameBufferSource) {\n\t\t\t\t\t\tconst gl = this._manager.app.graphicsDevice.gl;\n\t\t\t\t\t\tgl.deleteFramebuffer(this._frameBufferSource);\n\t\t\t\t\t\tthis._frameBufferSource = null;\n\t\t\t\t\t\tgl.deleteFramebuffer(this._frameBuffer);\n\t\t\t\t\t\tthis._frameBuffer = null;\n\t\t\t\t}\n\t\t}\n}\n\nclass XrViews extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_ADD = 'add';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_REMOVE = 'remove';\n\t\t}\n\t\tconstructor(manager){\n\t\t\t\tsuper(), this._index = new Map(), this._indexTmp = new Map(), this._list = [], this._supportedColor = platform.browser && !!window.XRCamera && !!window.XRWebGLBinding, this._supportedDepth = platform.browser && !!window.XRDepthInformation, this._availableColor = false, this._availableDepth = false, this._depthUsage = '', this._depthFormat = '', this._depthFormats = {\n\t\t\t\t\t\t[XRDEPTHSENSINGFORMAT_L8A8]: PIXELFORMAT_LA8,\n\t\t\t\t\t\t[XRDEPTHSENSINGFORMAT_R16U]: PIXELFORMAT_DEPTH,\n\t\t\t\t\t\t[XRDEPTHSENSINGFORMAT_F32]: PIXELFORMAT_R32F\n\t\t\t\t};\n\t\t\t\tthis._manager = manager;\n\t\t\t\tthis._manager.on('start', this._onSessionStart, this);\n\t\t\t\tthis._manager.on('end', this._onSessionEnd, this);\n\t\t}\n\t\tget list() {\n\t\t\t\treturn this._list;\n\t\t}\n\t\tget supportedColor() {\n\t\t\t\treturn this._supportedColor;\n\t\t}\n\t\tget supportedDepth() {\n\t\t\t\treturn this._supportedDepth;\n\t\t}\n\t\tget availableColor() {\n\t\t\t\treturn this._availableColor;\n\t\t}\n\t\tget availableDepth() {\n\t\t\t\treturn this._availableDepth;\n\t\t}\n\t\tget depthUsage() {\n\t\t\t\treturn this._depthUsage;\n\t\t}\n\t\tget depthGpuOptimized() {\n\t\t\t\treturn this._depthUsage === XRDEPTHSENSINGUSAGE_GPU;\n\t\t}\n\t\tget depthFormat() {\n\t\t\t\treturn this._depthFormat;\n\t\t}\n\t\tget depthPixelFormat() {\n\t\t\t\treturn this._depthFormats[this._depthFormat] ?? null;\n\t\t}\n\t\tupdate(frame, xrViews) {\n\t\t\t\tfor(let i = 0; i < xrViews.length; i++){\n\t\t\t\t\t\tthis._indexTmp.set(xrViews[i].eye, xrViews[i]);\n\t\t\t\t}\n\t\t\t\tfor (const [eye, xrView] of this._indexTmp){\n\t\t\t\t\t\tlet view = this._index.get(eye);\n\t\t\t\t\t\tif (!view) {\n\t\t\t\t\t\t\t\tview = new XrView(this._manager, xrView, xrViews.length);\n\t\t\t\t\t\t\t\tthis._index.set(eye, view);\n\t\t\t\t\t\t\t\tthis._list.push(view);\n\t\t\t\t\t\t\t\tview.update(frame, xrView);\n\t\t\t\t\t\t\t\tthis.fire('add', view);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tview.update(frame, xrView);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor (const [eye, view] of this._index){\n\t\t\t\t\t\tif (this._indexTmp.has(eye)) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tview.destroy();\n\t\t\t\t\t\tthis._index.delete(eye);\n\t\t\t\t\t\tconst ind = this._list.indexOf(view);\n\t\t\t\t\t\tif (ind !== -1) this._list.splice(ind, 1);\n\t\t\t\t\t\tthis.fire('remove', view);\n\t\t\t\t}\n\t\t\t\tthis._indexTmp.clear();\n\t\t}\n\t\tget(eye) {\n\t\t\t\treturn this._index.get(eye) || null;\n\t\t}\n\t\t_onSessionStart() {\n\t\t\t\tif (this._manager.type !== XRTYPE_AR) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (!this._manager.session.enabledFeatures) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._availableColor = this._manager.session.enabledFeatures.indexOf('camera-access') !== -1;\n\t\t\t\tthis._availableDepth = this._manager.session.enabledFeatures.indexOf('depth-sensing') !== -1;\n\t\t\t\tif (this._availableDepth) {\n\t\t\t\t\t\tconst session = this._manager.session;\n\t\t\t\t\t\tthis._depthUsage = session.depthUsage;\n\t\t\t\t\t\tthis._depthFormat = session.depthDataFormat;\n\t\t\t\t}\n\t\t}\n\t\t_onSessionEnd() {\n\t\t\t\tfor (const view of this._index.values()){\n\t\t\t\t\t\tview.destroy();\n\t\t\t\t}\n\t\t\t\tthis._index.clear();\n\t\t\t\tthis._availableColor = false;\n\t\t\t\tthis._availableDepth = false;\n\t\t\t\tthis._depthUsage = '';\n\t\t\t\tthis._depthFormat = '';\n\t\t\t\tthis._list.length = 0;\n\t\t}\n}\n\nclass XrManager extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_AVAILABLE = 'available';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_START = 'start';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_END = 'end';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_UPDATE = 'update';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_ERROR = 'error';\n\t\t}\n\t\tconstructor(app){\n\t\t\t\tsuper(), this._supported = platform.browser && !!navigator.xr, this._available = {}, this._type = null, this._spaceType = null, this._session = null, this._baseLayer = null, this.webglBinding = null, this._referenceSpace = null, this._camera = null, this._localPosition = new Vec3(), this._localRotation = new Quat(), this._depthNear = 0.1, this._depthFar = 1000, this._supportedFrameRates = null, this._width = 0, this._height = 0, this._framebufferScaleFactor = 1.0;\n\t\t\t\tthis.app = app;\n\t\t\t\tthis._available[XRTYPE_INLINE] = false;\n\t\t\t\tthis._available[XRTYPE_VR] = false;\n\t\t\t\tthis._available[XRTYPE_AR] = false;\n\t\t\t\tthis.views = new XrViews(this);\n\t\t\t\tthis.domOverlay = new XrDomOverlay(this);\n\t\t\t\tthis.hitTest = new XrHitTest(this);\n\t\t\t\tthis.imageTracking = new XrImageTracking(this);\n\t\t\t\tthis.planeDetection = new XrPlaneDetection(this);\n\t\t\t\tthis.meshDetection = new XrMeshDetection(this);\n\t\t\t\tthis.input = new XrInput(this);\n\t\t\t\tthis.lightEstimation = new XrLightEstimation(this);\n\t\t\t\tthis.anchors = new XrAnchors(this);\n\t\t\t\tthis.views = new XrViews(this);\n\t\t\t\tif (this._supported) {\n\t\t\t\t\t\tnavigator.xr.addEventListener('devicechange', ()=>{\n\t\t\t\t\t\t\t\tthis._deviceAvailabilityCheck();\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis._deviceAvailabilityCheck();\n\t\t\t\t\t\tthis.app.graphicsDevice.on('devicelost', this._onDeviceLost, this);\n\t\t\t\t\t\tthis.app.graphicsDevice.on('devicerestored', this._onDeviceRestored, this);\n\t\t\t\t}\n\t\t}\n\t\tdestroy() {}\n\t\tstart(camera, type, spaceType, options) {\n\t\t\t\tlet callback = options;\n\t\t\t\tif (typeof options === 'object') {\n\t\t\t\t\t\tcallback = options.callback;\n\t\t\t\t}\n\t\t\t\tif (!this._available[type]) {\n\t\t\t\t\t\tif (callback) callback(new Error('XR is not available'));\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this._session) {\n\t\t\t\t\t\tif (callback) callback(new Error('XR session is already started'));\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._camera = camera;\n\t\t\t\tthis._camera.camera.xr = this;\n\t\t\t\tthis._type = type;\n\t\t\t\tthis._spaceType = spaceType;\n\t\t\t\tthis._framebufferScaleFactor = options?.framebufferScaleFactor ?? 1.0;\n\t\t\t\tthis._setClipPlanes(camera.nearClip, camera.farClip);\n\t\t\t\tconst opts = {\n\t\t\t\t\t\trequiredFeatures: [\n\t\t\t\t\t\t\t\tspaceType\n\t\t\t\t\t\t],\n\t\t\t\t\t\toptionalFeatures: []\n\t\t\t\t};\n\t\t\t\tconst device = this.app.graphicsDevice;\n\t\t\t\tif (device?.isWebGPU) {\n\t\t\t\t\t\topts.requiredFeatures.push('webgpu');\n\t\t\t\t}\n\t\t\t\tconst webgl = device?.isWebGL2;\n\t\t\t\tif (type === XRTYPE_AR) {\n\t\t\t\t\t\topts.optionalFeatures.push('light-estimation');\n\t\t\t\t\t\topts.optionalFeatures.push('hit-test');\n\t\t\t\t\t\tif (options) {\n\t\t\t\t\t\t\t\tif (options.imageTracking && this.imageTracking.supported) {\n\t\t\t\t\t\t\t\t\t\topts.optionalFeatures.push('image-tracking');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (options.planeDetection) {\n\t\t\t\t\t\t\t\t\t\topts.optionalFeatures.push('plane-detection');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (options.meshDetection) {\n\t\t\t\t\t\t\t\t\t\topts.optionalFeatures.push('mesh-detection');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.domOverlay.supported && this.domOverlay.root) {\n\t\t\t\t\t\t\t\topts.optionalFeatures.push('dom-overlay');\n\t\t\t\t\t\t\t\topts.domOverlay = {\n\t\t\t\t\t\t\t\t\t\troot: this.domOverlay.root\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (options && options.anchors && this.anchors.supported) {\n\t\t\t\t\t\t\t\topts.optionalFeatures.push('anchors');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (options && options.depthSensing && this.views.supportedDepth) {\n\t\t\t\t\t\t\t\topts.optionalFeatures.push('depth-sensing');\n\t\t\t\t\t\t\t\tconst usagePreference = [];\n\t\t\t\t\t\t\t\tconst dataFormatPreference = [];\n\t\t\t\t\t\t\t\tusagePreference.push(XRDEPTHSENSINGUSAGE_GPU, XRDEPTHSENSINGUSAGE_CPU);\n\t\t\t\t\t\t\t\tdataFormatPreference.push(XRDEPTHSENSINGFORMAT_F32, XRDEPTHSENSINGFORMAT_L8A8, XRDEPTHSENSINGFORMAT_R16U);\n\t\t\t\t\t\t\t\tif (options.depthSensing.usagePreference) {\n\t\t\t\t\t\t\t\t\t\tconst ind = usagePreference.indexOf(options.depthSensing.usagePreference);\n\t\t\t\t\t\t\t\t\t\tif (ind !== -1) usagePreference.splice(ind, 1);\n\t\t\t\t\t\t\t\t\t\tusagePreference.unshift(options.depthSensing.usagePreference);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (options.depthSensing.dataFormatPreference) {\n\t\t\t\t\t\t\t\t\t\tconst ind = dataFormatPreference.indexOf(options.depthSensing.dataFormatPreference);\n\t\t\t\t\t\t\t\t\t\tif (ind !== -1) dataFormatPreference.splice(ind, 1);\n\t\t\t\t\t\t\t\t\t\tdataFormatPreference.unshift(options.depthSensing.dataFormatPreference);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\topts.depthSensing = {\n\t\t\t\t\t\t\t\t\t\tusagePreference: usagePreference,\n\t\t\t\t\t\t\t\t\t\tdataFormatPreference: dataFormatPreference\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (webgl && options && options.cameraColor && this.views.supportedColor) {\n\t\t\t\t\t\t\t\topts.optionalFeatures.push('camera-access');\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\topts.optionalFeatures.push('hand-tracking');\n\t\t\t\tif (options && options.optionalFeatures) {\n\t\t\t\t\t\topts.optionalFeatures = opts.optionalFeatures.concat(options.optionalFeatures);\n\t\t\t\t}\n\t\t\t\tif (this.imageTracking.supported && this.imageTracking.images.length) {\n\t\t\t\t\t\tthis.imageTracking.prepareImages((err, trackedImages)=>{\n\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\t\tif (callback) callback(err);\n\t\t\t\t\t\t\t\t\t\tthis.fire('error', err);\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (trackedImages !== null) {\n\t\t\t\t\t\t\t\t\t\topts.trackedImages = trackedImages;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis._onStartOptionsReady(type, spaceType, opts, callback);\n\t\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._onStartOptionsReady(type, spaceType, opts, callback);\n\t\t\t\t}\n\t\t}\n\t\t_onStartOptionsReady(type, spaceType, options, callback) {\n\t\t\t\tnavigator.xr.requestSession(type, options).then((session)=>{\n\t\t\t\t\t\tthis._onSessionStart(session, spaceType, callback);\n\t\t\t\t}).catch((ex)=>{\n\t\t\t\t\t\tthis._camera.camera.xr = null;\n\t\t\t\t\t\tthis._camera = null;\n\t\t\t\t\t\tthis._type = null;\n\t\t\t\t\t\tthis._spaceType = null;\n\t\t\t\t\t\tif (callback) callback(ex);\n\t\t\t\t\t\tthis.fire('error', ex);\n\t\t\t\t});\n\t\t}\n\t\tend(callback) {\n\t\t\t\tif (!this._session) {\n\t\t\t\t\t\tif (callback) callback(new Error('XR Session is not initialized'));\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.webglBinding = null;\n\t\t\t\tif (callback) this.once('end', callback);\n\t\t\t\tthis._session.end();\n\t\t}\n\t\tisAvailable(type) {\n\t\t\t\treturn this._available[type];\n\t\t}\n\t\t_deviceAvailabilityCheck() {\n\t\t\t\tfor(const key in this._available){\n\t\t\t\t\t\tthis._sessionSupportCheck(key);\n\t\t\t\t}\n\t\t}\n\t\tinitiateRoomCapture(callback) {\n\t\t\t\tif (!this._session) {\n\t\t\t\t\t\tcallback(new Error('Session is not active'));\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (!this._session.initiateRoomCapture) {\n\t\t\t\t\t\tcallback(new Error('Session does not support manual room capture'));\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._session.initiateRoomCapture().then(()=>{\n\t\t\t\t\t\tif (callback) callback(null);\n\t\t\t\t}).catch((err)=>{\n\t\t\t\t\t\tif (callback) callback(err);\n\t\t\t\t});\n\t\t}\n\t\tupdateTargetFrameRate(frameRate, callback) {\n\t\t\t\tif (!this._session?.updateTargetFrameRate) {\n\t\t\t\t\t\tcallback?.(new Error('unable to update frameRate'));\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._session.updateTargetFrameRate(frameRate).then(()=>{\n\t\t\t\t\t\tcallback?.();\n\t\t\t\t}).catch((err)=>{\n\t\t\t\t\t\tcallback?.(err);\n\t\t\t\t});\n\t\t}\n\t\t_sessionSupportCheck(type) {\n\t\t\t\tnavigator.xr.isSessionSupported(type).then((available)=>{\n\t\t\t\t\t\tif (this._available[type] === available) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._available[type] = available;\n\t\t\t\t\t\tthis.fire('available', type, available);\n\t\t\t\t\t\tthis.fire(`available:${type}`, available);\n\t\t\t\t}).catch((ex)=>{\n\t\t\t\t\t\tthis.fire('error', ex);\n\t\t\t\t});\n\t\t}\n\t\t_onSessionStart(session, spaceType, callback) {\n\t\t\t\tlet failed = false;\n\t\t\t\tthis._session = session;\n\t\t\t\tconst onVisibilityChange = ()=>{\n\t\t\t\t\t\tthis.fire('visibility:change', session.visibilityState);\n\t\t\t\t};\n\t\t\t\tconst onClipPlanesChange = ()=>{\n\t\t\t\t\t\tthis._setClipPlanes(this._camera.nearClip, this._camera.farClip);\n\t\t\t\t};\n\t\t\t\tconst onEnd = ()=>{\n\t\t\t\t\t\tif (this._camera) {\n\t\t\t\t\t\t\t\tthis._camera.off('set_nearClip', onClipPlanesChange);\n\t\t\t\t\t\t\t\tthis._camera.off('set_farClip', onClipPlanesChange);\n\t\t\t\t\t\t\t\tthis._camera.camera.xr = null;\n\t\t\t\t\t\t\t\tthis._camera = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsession.removeEventListener('end', onEnd);\n\t\t\t\t\t\tsession.removeEventListener('visibilitychange', onVisibilityChange);\n\t\t\t\t\t\tif (!failed) this.fire('end');\n\t\t\t\t\t\tthis._session = null;\n\t\t\t\t\t\tthis._referenceSpace = null;\n\t\t\t\t\t\tthis._width = 0;\n\t\t\t\t\t\tthis._height = 0;\n\t\t\t\t\t\tthis._type = null;\n\t\t\t\t\t\tthis._spaceType = null;\n\t\t\t\t\t\tif (this.app.systems) {\n\t\t\t\t\t\t\t\tthis.app.tick();\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tsession.addEventListener('end', onEnd);\n\t\t\t\tsession.addEventListener('visibilitychange', onVisibilityChange);\n\t\t\t\tthis._camera.on('set_nearClip', onClipPlanesChange);\n\t\t\t\tthis._camera.on('set_farClip', onClipPlanesChange);\n\t\t\t\tthis._createBaseLayer();\n\t\t\t\tif (this.session.supportedFrameRates) {\n\t\t\t\t\t\tthis._supportedFrameRates = Array.from(this.session.supportedFrameRates);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._supportedFrameRates = null;\n\t\t\t\t}\n\t\t\t\tthis._session.addEventListener('frameratechange', ()=>{\n\t\t\t\t\t\tthis.fire('frameratechange', this._session?.frameRate);\n\t\t\t\t});\n\t\t\t\tsession.requestReferenceSpace(spaceType).then((referenceSpace)=>{\n\t\t\t\t\t\tthis._referenceSpace = referenceSpace;\n\t\t\t\t\t\tthis.app.tick();\n\t\t\t\t\t\tif (callback) callback(null);\n\t\t\t\t\t\tthis.fire('start');\n\t\t\t\t}).catch((ex)=>{\n\t\t\t\t\t\tfailed = true;\n\t\t\t\t\t\tsession.end();\n\t\t\t\t\t\tif (callback) callback(ex);\n\t\t\t\t\t\tthis.fire('error', ex);\n\t\t\t\t});\n\t\t}\n\t\t_setClipPlanes(near, far) {\n\t\t\t\tif (this._depthNear === near && this._depthFar === far) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._depthNear = near;\n\t\t\t\tthis._depthFar = far;\n\t\t\t\tif (!this._session) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._session.updateRenderState({\n\t\t\t\t\t\tdepthNear: this._depthNear,\n\t\t\t\t\t\tdepthFar: this._depthFar\n\t\t\t\t});\n\t\t}\n\t\t_createBaseLayer() {\n\t\t\t\tconst device = this.app.graphicsDevice;\n\t\t\t\tconst framebufferScaleFactor = device.maxPixelRatio / window.devicePixelRatio * this._framebufferScaleFactor;\n\t\t\t\tthis._baseLayer = new XRWebGLLayer(this._session, device.gl, {\n\t\t\t\t\t\talpha: true,\n\t\t\t\t\t\tdepth: true,\n\t\t\t\t\t\tstencil: true,\n\t\t\t\t\t\tframebufferScaleFactor: framebufferScaleFactor,\n\t\t\t\t\t\tantialias: false\n\t\t\t\t});\n\t\t\t\tif (device?.isWebGL2 && window.XRWebGLBinding) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tthis.webglBinding = new XRWebGLBinding(this._session, device.gl);\n\t\t\t\t\t\t} catch (ex) {\n\t\t\t\t\t\t\t\tthis.fire('error', ex);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._session.updateRenderState({\n\t\t\t\t\t\tbaseLayer: this._baseLayer,\n\t\t\t\t\t\tdepthNear: this._depthNear,\n\t\t\t\t\t\tdepthFar: this._depthFar\n\t\t\t\t});\n\t\t}\n\t\t_onDeviceLost() {\n\t\t\t\tif (!this._session) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this.webglBinding) {\n\t\t\t\t\t\tthis.webglBinding = null;\n\t\t\t\t}\n\t\t\t\tthis._baseLayer = null;\n\t\t\t\tthis._session.updateRenderState({\n\t\t\t\t\t\tbaseLayer: this._baseLayer,\n\t\t\t\t\t\tdepthNear: this._depthNear,\n\t\t\t\t\t\tdepthFar: this._depthFar\n\t\t\t\t});\n\t\t}\n\t\t_onDeviceRestored() {\n\t\t\t\tif (!this._session) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tsetTimeout(()=>{\n\t\t\t\t\t\tthis.app.graphicsDevice.gl.makeXRCompatible().then(()=>{\n\t\t\t\t\t\t\t\tthis._createBaseLayer();\n\t\t\t\t\t\t}).catch((ex)=>{\n\t\t\t\t\t\t\t\tthis.fire('error', ex);\n\t\t\t\t\t\t});\n\t\t\t\t}, 0);\n\t\t}\n\t\tupdate(frame) {\n\t\t\t\tif (!this._session) return false;\n\t\t\t\tconst width = frame.session.renderState.baseLayer.framebufferWidth;\n\t\t\t\tconst height = frame.session.renderState.baseLayer.framebufferHeight;\n\t\t\t\tif (this._width !== width || this._height !== height) {\n\t\t\t\t\t\tthis._width = width;\n\t\t\t\t\t\tthis._height = height;\n\t\t\t\t\t\tthis.app.graphicsDevice.setResolution(width, height);\n\t\t\t\t}\n\t\t\t\tconst pose = frame.getViewerPose(this._referenceSpace);\n\t\t\t\tif (!pose) return false;\n\t\t\t\tconst lengthOld = this.views.list.length;\n\t\t\t\tthis.views.update(frame, pose.views);\n\t\t\t\tconst posePosition = pose.transform.position;\n\t\t\t\tconst poseOrientation = pose.transform.orientation;\n\t\t\t\tthis._localPosition.set(posePosition.x, posePosition.y, posePosition.z);\n\t\t\t\tthis._localRotation.set(poseOrientation.x, poseOrientation.y, poseOrientation.z, poseOrientation.w);\n\t\t\t\tif (lengthOld === 0 && this.views.list.length > 0) {\n\t\t\t\t\t\tconst viewProjMat = new Mat4();\n\t\t\t\t\t\tconst view = this.views.list[0];\n\t\t\t\t\t\tviewProjMat.copy(view.projMat);\n\t\t\t\t\t\tconst data = viewProjMat.data;\n\t\t\t\t\t\tconst fov = 2.0 * Math.atan(1.0 / data[5]) * 180.0 / Math.PI;\n\t\t\t\t\t\tconst aspectRatio = data[5] / data[0];\n\t\t\t\t\t\tconst farClip = data[14] / (data[10] + 1);\n\t\t\t\t\t\tconst nearClip = data[14] / (data[10] - 1);\n\t\t\t\t\t\tconst horizontalFov = false;\n\t\t\t\t\t\tconst camera = this._camera.camera;\n\t\t\t\t\t\tcamera.setXrProperties({\n\t\t\t\t\t\t\t\taspectRatio,\n\t\t\t\t\t\t\t\tfarClip,\n\t\t\t\t\t\t\t\tfov,\n\t\t\t\t\t\t\t\thorizontalFov,\n\t\t\t\t\t\t\t\tnearClip\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tthis._camera.camera._node.setLocalPosition(this._localPosition);\n\t\t\t\tthis._camera.camera._node.setLocalRotation(this._localRotation);\n\t\t\t\tthis.input.update(frame);\n\t\t\t\tif (this._type === XRTYPE_AR) {\n\t\t\t\t\t\tif (this.hitTest.supported) {\n\t\t\t\t\t\t\t\tthis.hitTest.update(frame);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.lightEstimation.supported) {\n\t\t\t\t\t\t\t\tthis.lightEstimation.update(frame);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.imageTracking.supported) {\n\t\t\t\t\t\t\t\tthis.imageTracking.update(frame);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.anchors.supported) {\n\t\t\t\t\t\t\t\tthis.anchors.update(frame);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.planeDetection.supported) {\n\t\t\t\t\t\t\t\tthis.planeDetection.update(frame);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.meshDetection.supported) {\n\t\t\t\t\t\t\t\tthis.meshDetection.update(frame);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.fire('update', frame);\n\t\t\t\treturn true;\n\t\t}\n\t\tget supported() {\n\t\t\t\treturn this._supported;\n\t\t}\n\t\tget active() {\n\t\t\t\treturn !!this._session;\n\t\t}\n\t\tget type() {\n\t\t\t\treturn this._type;\n\t\t}\n\t\tget spaceType() {\n\t\t\t\treturn this._spaceType;\n\t\t}\n\t\tget session() {\n\t\t\t\treturn this._session;\n\t\t}\n\t\tget frameRate() {\n\t\t\t\treturn this._session?.frameRate ?? null;\n\t\t}\n\t\tget supportedFrameRates() {\n\t\t\t\treturn this._supportedFrameRates;\n\t\t}\n\t\tget framebufferScaleFactor() {\n\t\t\t\treturn this._framebufferScaleFactor;\n\t\t}\n\t\tset fixedFoveation(value) {\n\t\t\t\tif ((this._baseLayer?.fixedFoveation ?? null) !== null) {\n\t\t\t\t\t\tif (this.app.graphicsDevice.samples > 1) ;\n\t\t\t\t\t\tthis._baseLayer.fixedFoveation = value;\n\t\t\t\t}\n\t\t}\n\t\tget fixedFoveation() {\n\t\t\t\treturn this._baseLayer?.fixedFoveation ?? null;\n\t\t}\n\t\tget camera() {\n\t\t\t\treturn this._camera ? this._camera.entity : null;\n\t\t}\n\t\tget visibilityState() {\n\t\t\t\tif (!this._session) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\treturn this._session.visibilityState;\n\t\t}\n}\n\nclass Application extends AppBase {\n\t\tconstructor(canvas, options = {}){\n\t\t\t\tsuper(canvas);\n\t\t\t\tconst appOptions = new AppOptions();\n\t\t\t\tappOptions.graphicsDevice = options.graphicsDevice ?? this.createDevice(canvas, options);\n\t\t\t\tthis.addComponentSystems(appOptions);\n\t\t\t\tthis.addResourceHandles(appOptions);\n\t\t\t\tappOptions.elementInput = options.elementInput;\n\t\t\t\tappOptions.keyboard = options.keyboard;\n\t\t\t\tappOptions.mouse = options.mouse;\n\t\t\t\tappOptions.touch = options.touch;\n\t\t\t\tappOptions.gamepads = options.gamepads;\n\t\t\t\tappOptions.scriptPrefix = options.scriptPrefix;\n\t\t\t\tappOptions.assetPrefix = options.assetPrefix;\n\t\t\t\tappOptions.scriptsOrder = options.scriptsOrder;\n\t\t\t\tappOptions.soundManager = new SoundManager();\n\t\t\t\tappOptions.lightmapper = Lightmapper;\n\t\t\t\tappOptions.batchManager = BatchManager;\n\t\t\t\tappOptions.xr = XrManager;\n\t\t\t\tthis.init(appOptions);\n\t\t}\n\t\tcreateDevice(canvas, options) {\n\t\t\t\tif (!options.graphicsDeviceOptions) {\n\t\t\t\t\t\toptions.graphicsDeviceOptions = {};\n\t\t\t\t}\n\t\t\t\tif (platform.browser && !!navigator.xr) {\n\t\t\t\t\t\toptions.graphicsDeviceOptions.xrCompatible = true;\n\t\t\t\t}\n\t\t\t\toptions.graphicsDeviceOptions.alpha = options.graphicsDeviceOptions.alpha || false;\n\t\t\t\treturn new WebglGraphicsDevice(canvas, options.graphicsDeviceOptions);\n\t\t}\n\t\taddComponentSystems(appOptions) {\n\t\t\t\tappOptions.componentSystems = [\n\t\t\t\t\t\tRigidBodyComponentSystem,\n\t\t\t\t\t\tCollisionComponentSystem,\n\t\t\t\t\t\tJointComponentSystem,\n\t\t\t\t\t\tAnimationComponentSystem,\n\t\t\t\t\t\tAnimComponentSystem,\n\t\t\t\t\t\tModelComponentSystem,\n\t\t\t\t\t\tRenderComponentSystem,\n\t\t\t\t\t\tCameraComponentSystem,\n\t\t\t\t\t\tLightComponentSystem,\n\t\t\t\t\t\tScriptComponentSystem,\n\t\t\t\t\t\tSoundComponentSystem,\n\t\t\t\t\t\tAudioListenerComponentSystem,\n\t\t\t\t\t\tParticleSystemComponentSystem,\n\t\t\t\t\t\tScreenComponentSystem,\n\t\t\t\t\t\tElementComponentSystem,\n\t\t\t\t\t\tButtonComponentSystem,\n\t\t\t\t\t\tScrollViewComponentSystem,\n\t\t\t\t\t\tScrollbarComponentSystem,\n\t\t\t\t\t\tSpriteComponentSystem,\n\t\t\t\t\t\tLayoutGroupComponentSystem,\n\t\t\t\t\t\tLayoutChildComponentSystem,\n\t\t\t\t\t\tZoneComponentSystem,\n\t\t\t\t\t\tGSplatComponentSystem\n\t\t\t\t];\n\t\t}\n\t\taddResourceHandles(appOptions) {\n\t\t\t\tappOptions.resourceHandlers = [\n\t\t\t\t\t\tRenderHandler,\n\t\t\t\t\t\tAnimationHandler,\n\t\t\t\t\t\tAnimClipHandler,\n\t\t\t\t\t\tAnimStateGraphHandler,\n\t\t\t\t\t\tModelHandler,\n\t\t\t\t\t\tMaterialHandler,\n\t\t\t\t\t\tTextureHandler,\n\t\t\t\t\t\tTextHandler,\n\t\t\t\t\t\tJsonHandler,\n\t\t\t\t\t\tAudioHandler,\n\t\t\t\t\t\tScriptHandler,\n\t\t\t\t\t\tSceneHandler,\n\t\t\t\t\t\tCubemapHandler,\n\t\t\t\t\t\tHtmlHandler,\n\t\t\t\t\t\tCssHandler,\n\t\t\t\t\t\tShaderHandler,\n\t\t\t\t\t\tHierarchyHandler,\n\t\t\t\t\t\tFolderHandler,\n\t\t\t\t\t\tFontHandler,\n\t\t\t\t\t\tBinaryHandler,\n\t\t\t\t\t\tTextureAtlasHandler,\n\t\t\t\t\t\tSpriteHandler,\n\t\t\t\t\t\tTemplateHandler,\n\t\t\t\t\t\tContainerHandler,\n\t\t\t\t\t\tGSplatHandler\n\t\t\t\t];\n\t\t}\n}\n\nclass AssetListLoader extends EventHandler {\n\t\tconstructor(assetList, assetRegistry){\n\t\t\t\tsuper(), this._assets = new Set(), this._loadingAssets = new Set(), this._waitingAssets = new Set(), this._loading = false, this._loaded = false, this._failed = [];\n\t\t\t\tthis._registry = assetRegistry;\n\t\t\t\tassetList.forEach((a)=>{\n\t\t\t\t\t\tif (a instanceof Asset) {\n\t\t\t\t\t\t\t\tif (!a.registry) {\n\t\t\t\t\t\t\t\t\t\ta.registry = assetRegistry;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis._assets.add(a);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst asset = assetRegistry.get(a);\n\t\t\t\t\t\t\t\tif (asset) {\n\t\t\t\t\t\t\t\t\t\tthis._assets.add(asset);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis._waitForAsset(a);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis._registry.off('load', this._onLoad);\n\t\t\t\tthis._registry.off('error', this._onError);\n\t\t\t\tthis._waitingAssets.forEach((id)=>{\n\t\t\t\t\t\tthis._registry.off(`add:${id}`, this._onAddAsset);\n\t\t\t\t});\n\t\t\t\tthis.off('progress');\n\t\t\t\tthis.off('load');\n\t\t}\n\t\t_assetHasDependencies(asset) {\n\t\t\t\treturn asset.type === 'model' && asset.file?.url && asset.file.url && asset.file.url.match(/.json$/g);\n\t\t}\n\t\tload(done, scope) {\n\t\t\t\tif (this._loading) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._loading = true;\n\t\t\t\tthis._callback = done;\n\t\t\t\tthis._scope = scope;\n\t\t\t\tthis._registry.on('load', this._onLoad, this);\n\t\t\t\tthis._registry.on('error', this._onError, this);\n\t\t\t\tlet loadingAssets = false;\n\t\t\t\tthis._assets.forEach((asset)=>{\n\t\t\t\t\t\tif (!asset.loaded) {\n\t\t\t\t\t\t\t\tloadingAssets = true;\n\t\t\t\t\t\t\t\tif (this._assetHasDependencies(asset)) {\n\t\t\t\t\t\t\t\t\t\tthis._registry.loadFromUrl(asset.file.url, asset.type, (err, loadedAsset)=>{\n\t\t\t\t\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis._onError(err, asset);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tthis._onLoad(asset);\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis._loadingAssets.add(asset);\n\t\t\t\t\t\t\t\tthis._registry.add(asset);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tthis._loadingAssets.forEach((asset)=>{\n\t\t\t\t\t\tif (!this._assetHasDependencies(asset)) {\n\t\t\t\t\t\t\t\tthis._registry.load(asset);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif (!loadingAssets && this._waitingAssets.size === 0) {\n\t\t\t\t\t\tthis._loadingComplete();\n\t\t\t\t}\n\t\t}\n\t\tready(done, scope = this) {\n\t\t\t\tif (this._loaded) {\n\t\t\t\t\t\tdone.call(scope, Array.from(this._assets));\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.once('load', (assets)=>{\n\t\t\t\t\t\t\t\tdone.call(scope, assets);\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t}\n\t\t_loadingComplete() {\n\t\t\t\tif (this._loaded) return;\n\t\t\t\tthis._loaded = true;\n\t\t\t\tthis._registry.off('load', this._onLoad, this);\n\t\t\t\tthis._registry.off('error', this._onError, this);\n\t\t\t\tif (this._failed.length) {\n\t\t\t\t\t\tif (this._callback) {\n\t\t\t\t\t\t\t\tthis._callback.call(this._scope, 'Failed to load some assets', this._failed);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.fire('error', this._failed);\n\t\t\t\t} else {\n\t\t\t\t\t\tif (this._callback) {\n\t\t\t\t\t\t\t\tthis._callback.call(this._scope);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.fire('load', Array.from(this._assets));\n\t\t\t\t}\n\t\t}\n\t\t_onLoad(asset) {\n\t\t\t\tif (this._loadingAssets.has(asset)) {\n\t\t\t\t\t\tthis.fire('progress', asset);\n\t\t\t\t\t\tthis._loadingAssets.delete(asset);\n\t\t\t\t}\n\t\t\t\tif (this._loadingAssets.size === 0) {\n\t\t\t\t\t\tsetTimeout(()=>{\n\t\t\t\t\t\t\t\tthis._loadingComplete();\n\t\t\t\t\t\t}, 0);\n\t\t\t\t}\n\t\t}\n\t\t_onError(err, asset) {\n\t\t\t\tif (this._loadingAssets.has(asset)) {\n\t\t\t\t\t\tthis._failed.push(asset);\n\t\t\t\t\t\tthis._loadingAssets.delete(asset);\n\t\t\t\t}\n\t\t\t\tif (this._loadingAssets.size === 0) {\n\t\t\t\t\t\tsetTimeout(()=>{\n\t\t\t\t\t\t\t\tthis._loadingComplete();\n\t\t\t\t\t\t}, 0);\n\t\t\t\t}\n\t\t}\n\t\t_onAddAsset(asset) {\n\t\t\t\tthis._waitingAssets.delete(asset);\n\t\t\t\tthis._assets.add(asset);\n\t\t\t\tif (!asset.loaded) {\n\t\t\t\t\t\tthis._loadingAssets.add(asset);\n\t\t\t\t\t\tthis._registry.load(asset);\n\t\t\t\t}\n\t\t}\n\t\t_waitForAsset(assetId) {\n\t\t\t\tthis._waitingAssets.add(assetId);\n\t\t\t\tthis._registry.once(`add:${assetId}`, this._onAddAsset, this);\n\t\t}\n}\n\nconst MAX_TEXTURE_SIZE = 4096;\nconst DEFAULT_TEXTURE_SIZE = 512;\nclass Atlas {\n\t\tconstructor(device, width, height, name){\n\t\t\t\tthis.canvas = document.createElement('canvas');\n\t\t\t\tthis.canvas.width = width;\n\t\t\t\tthis.canvas.height = height;\n\t\t\t\tthis.texture = new Texture(device, {\n\t\t\t\t\t\tname: name,\n\t\t\t\t\t\tformat: PIXELFORMAT_SRGBA8,\n\t\t\t\t\t\twidth: width,\n\t\t\t\t\t\theight: height,\n\t\t\t\t\t\tmipmaps: true,\n\t\t\t\t\t\tminFilter: FILTER_LINEAR_MIPMAP_LINEAR,\n\t\t\t\t\t\tmagFilter: FILTER_LINEAR,\n\t\t\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\tlevels: [\n\t\t\t\t\t\t\t\tthis.canvas\n\t\t\t\t\t\t]\n\t\t\t\t});\n\t\t\t\tthis.ctx = this.canvas.getContext('2d', {\n\t\t\t\t\t\talpha: true\n\t\t\t\t});\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.texture.destroy();\n\t\t}\n\t\tclear(clearColor) {\n\t\t\t\tconst { width, height } = this.canvas;\n\t\t\t\tthis.ctx.clearRect(0, 0, width, height);\n\t\t\t\tthis.ctx.fillStyle = clearColor;\n\t\t\t\tthis.ctx.fillRect(0, 0, width, height);\n\t\t}\n}\nclass CanvasFont extends EventHandler {\n\t\tconstructor(app, options = {}){\n\t\t\t\tsuper();\n\t\t\t\tthis.type = 'bitmap';\n\t\t\t\tthis.app = app;\n\t\t\t\tthis.intensity = 0;\n\t\t\t\tthis.fontWeight = options.fontWeight || 'normal';\n\t\t\t\tthis.fontSize = parseInt(options.fontSize, 10);\n\t\t\t\tthis.glyphSize = this.fontSize;\n\t\t\t\tthis.fontName = options.fontName || 'Arial';\n\t\t\t\tthis.color = options.color || new Color(1, 1, 1);\n\t\t\t\tthis.padding = options.padding || 0;\n\t\t\t\tthis.width = Math.min(MAX_TEXTURE_SIZE, options.width || DEFAULT_TEXTURE_SIZE);\n\t\t\t\tthis.height = Math.min(MAX_TEXTURE_SIZE, options.height || DEFAULT_TEXTURE_SIZE);\n\t\t\t\tthis.atlases = [];\n\t\t\t\tthis.chars = '';\n\t\t\t\tthis.data = {};\n\t\t}\n\t\tcreateTextures(text) {\n\t\t\t\tconst _chars = this._normalizeCharsSet(text);\n\t\t\t\tif (_chars.length !== this.chars.length) {\n\t\t\t\t\t\tthis._renderAtlas(_chars);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < _chars.length; i++){\n\t\t\t\t\t\tif (_chars[i] !== this.chars[i]) {\n\t\t\t\t\t\t\t\tthis._renderAtlas(_chars);\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tupdateTextures(text) {\n\t\t\t\tconst _chars = this._normalizeCharsSet(text);\n\t\t\t\tconst newCharsSet = [];\n\t\t\t\tfor(let i = 0; i < _chars.length; i++){\n\t\t\t\t\t\tconst char = _chars[i];\n\t\t\t\t\t\tif (!this.data.chars[char]) {\n\t\t\t\t\t\t\t\tnewCharsSet.push(char);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (newCharsSet.length > 0) {\n\t\t\t\t\t\tthis._renderAtlas(this.chars.concat(newCharsSet));\n\t\t\t\t}\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.atlases.forEach((atlas)=>atlas.destroy());\n\t\t\t\tthis.chars = null;\n\t\t\t\tthis.color = null;\n\t\t\t\tthis.data = null;\n\t\t\t\tthis.fontName = null;\n\t\t\t\tthis.fontSize = null;\n\t\t\t\tthis.glyphSize = null;\n\t\t\t\tthis.intensity = null;\n\t\t\t\tthis.atlases = null;\n\t\t\t\tthis.type = null;\n\t\t\t\tthis.fontWeight = null;\n\t\t}\n\t\t_colorToRgbString(color, alpha) {\n\t\t\t\tlet str;\n\t\t\t\tconst r = Math.round(255 * color.r);\n\t\t\t\tconst g = Math.round(255 * color.g);\n\t\t\t\tconst b = Math.round(255 * color.b);\n\t\t\t\tif (alpha) {\n\t\t\t\t\t\tstr = `rgba(${r}, ${g}, ${b}, ${color.a})`;\n\t\t\t\t} else {\n\t\t\t\t\t\tstr = `rgb(${r}, ${g}, ${b})`;\n\t\t\t\t}\n\t\t\t\treturn str;\n\t\t}\n\t\trenderCharacter(context, char, x, y, color) {\n\t\t\t\tcontext.fillStyle = color;\n\t\t\t\tcontext.fillText(char, x, y);\n\t\t}\n\t\t_getAtlas(index) {\n\t\t\t\tif (index >= this.atlases.length) {\n\t\t\t\t\t\tthis.atlases[index] = new Atlas(this.app.graphicsDevice, this.width, this.height, `font-atlas-${this.fontName}-${index}`);\n\t\t\t\t}\n\t\t\t\treturn this.atlases[index];\n\t\t}\n\t\t_renderAtlas(charsArray) {\n\t\t\t\tthis.chars = charsArray;\n\t\t\t\tconst w = this.width;\n\t\t\t\tconst h = this.height;\n\t\t\t\tconst color = this._colorToRgbString(this.color, false);\n\t\t\t\tconst a = this.color.a;\n\t\t\t\tthis.color.a = 1 / 255;\n\t\t\t\tconst transparent = this._colorToRgbString(this.color, true);\n\t\t\t\tthis.color.a = a;\n\t\t\t\tconst TEXT_ALIGN = 'center';\n\t\t\t\tconst TEXT_BASELINE = 'alphabetic';\n\t\t\t\tlet atlasIndex = 0;\n\t\t\t\tlet atlas = this._getAtlas(atlasIndex++);\n\t\t\t\tatlas.clear(transparent);\n\t\t\t\tthis.data = this._createJson(this.chars, this.fontName, w, h);\n\t\t\t\tconst symbols = string.getSymbols(this.chars.join(''));\n\t\t\t\tlet maxHeight = 0;\n\t\t\t\tlet maxDescent = 0;\n\t\t\t\tconst metrics = {};\n\t\t\t\tfor(let i = 0; i < symbols.length; i++){\n\t\t\t\t\t\tconst ch = symbols[i];\n\t\t\t\t\t\tmetrics[ch] = this._getTextMetrics(ch);\n\t\t\t\t\t\tmaxHeight = Math.max(maxHeight, metrics[ch].height);\n\t\t\t\t\t\tmaxDescent = Math.max(maxDescent, metrics[ch].descent);\n\t\t\t\t}\n\t\t\t\tthis.glyphSize = Math.max(this.glyphSize, maxHeight);\n\t\t\t\tconst sx = this.glyphSize + this.padding * 2;\n\t\t\t\tconst sy = this.glyphSize + this.padding * 2;\n\t\t\t\tconst _xOffset = this.glyphSize / 2 + this.padding;\n\t\t\t\tconst _yOffset = sy - maxDescent - this.padding;\n\t\t\t\tlet _x = 0;\n\t\t\t\tlet _y = 0;\n\t\t\t\tfor(let i = 0; i < symbols.length; i++){\n\t\t\t\t\t\tconst ch = symbols[i];\n\t\t\t\t\t\tconst code = string.getCodePoint(symbols[i]);\n\t\t\t\t\t\tlet fs = this.fontSize;\n\t\t\t\t\t\tatlas.ctx.font = `${this.fontWeight} ${fs.toString()}px ${this.fontName}`;\n\t\t\t\t\t\tatlas.ctx.textAlign = TEXT_ALIGN;\n\t\t\t\t\t\tatlas.ctx.textBaseline = TEXT_BASELINE;\n\t\t\t\t\t\tlet width = atlas.ctx.measureText(ch).width;\n\t\t\t\t\t\tif (width > fs) {\n\t\t\t\t\t\t\t\tfs = this.fontSize * this.fontSize / width;\n\t\t\t\t\t\t\t\tatlas.ctx.font = `${this.fontWeight} ${fs.toString()}px ${this.fontName}`;\n\t\t\t\t\t\t\t\twidth = this.fontSize;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.renderCharacter(atlas.ctx, ch, _x + _xOffset, _y + _yOffset, color);\n\t\t\t\t\t\tconst xoffset = this.padding + (this.glyphSize - width) / 2;\n\t\t\t\t\t\tconst yoffset = -this.padding + metrics[ch].descent - maxDescent;\n\t\t\t\t\t\tconst xadvance = width;\n\t\t\t\t\t\tthis._addChar(this.data, ch, code, _x, _y, sx, sy, xoffset, yoffset, xadvance, atlasIndex - 1, w, h);\n\t\t\t\t\t\t_x += sx;\n\t\t\t\t\t\tif (_x + sx > w) {\n\t\t\t\t\t\t\t\t_x = 0;\n\t\t\t\t\t\t\t\t_y += sy;\n\t\t\t\t\t\t\t\tif (_y + sy > h) {\n\t\t\t\t\t\t\t\t\t\tatlas = this._getAtlas(atlasIndex++);\n\t\t\t\t\t\t\t\t\t\tatlas.clear(transparent);\n\t\t\t\t\t\t\t\t\t\t_y = 0;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.atlases.splice(atlasIndex).forEach((atlas)=>atlas.destroy());\n\t\t\t\tthis.atlases.forEach((atlas)=>atlas.texture.upload());\n\t\t\t\tthis.fire('render');\n\t\t}\n\t\t_createJson(chars, fontName, width, height) {\n\t\t\t\tconst base = {\n\t\t\t\t\t\t'version': 3,\n\t\t\t\t\t\t'intensity': this.intensity,\n\t\t\t\t\t\t'info': {\n\t\t\t\t\t\t\t\t'face': fontName,\n\t\t\t\t\t\t\t\t'width': width,\n\t\t\t\t\t\t\t\t'height': height,\n\t\t\t\t\t\t\t\t'maps': [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t'width': width,\n\t\t\t\t\t\t\t\t\t\t\t\t'height': height\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'chars': {}\n\t\t\t\t};\n\t\t\t\treturn base;\n\t\t}\n\t\t_addChar(json, char, charCode, x, y, w, h, xoffset, yoffset, xadvance, mapNum, mapW, mapH) {\n\t\t\t\tif (json.info.maps.length < mapNum + 1) {\n\t\t\t\t\t\tjson.info.maps.push({\n\t\t\t\t\t\t\t\t'width': mapW,\n\t\t\t\t\t\t\t\t'height': mapH\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tconst scale = this.fontSize / 32;\n\t\t\t\tjson.chars[char] = {\n\t\t\t\t\t\t'id': charCode,\n\t\t\t\t\t\t'letter': char,\n\t\t\t\t\t\t'x': x,\n\t\t\t\t\t\t'y': y,\n\t\t\t\t\t\t'width': w,\n\t\t\t\t\t\t'height': h,\n\t\t\t\t\t\t'xadvance': xadvance / scale,\n\t\t\t\t\t\t'xoffset': xoffset / scale,\n\t\t\t\t\t\t'yoffset': (yoffset + this.padding) / scale,\n\t\t\t\t\t\t'scale': scale,\n\t\t\t\t\t\t'range': 1,\n\t\t\t\t\t\t'map': mapNum,\n\t\t\t\t\t\t'bounds': [\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tw / scale,\n\t\t\t\t\t\t\t\th / scale\n\t\t\t\t\t\t]\n\t\t\t\t};\n\t\t}\n\t\t_normalizeCharsSet(text) {\n\t\t\t\tconst unicodeConverterFunc = this.app.systems.element.getUnicodeConverter();\n\t\t\t\tif (unicodeConverterFunc) {\n\t\t\t\t\t\ttext = unicodeConverterFunc(text);\n\t\t\t\t}\n\t\t\t\tconst set = {};\n\t\t\t\tconst symbols = string.getSymbols(text);\n\t\t\t\tfor(let i = 0; i < symbols.length; i++){\n\t\t\t\t\t\tconst ch = symbols[i];\n\t\t\t\t\t\tif (set[ch]) continue;\n\t\t\t\t\t\tset[ch] = ch;\n\t\t\t\t}\n\t\t\t\tconst chars = Object.keys(set);\n\t\t\t\treturn chars.sort();\n\t\t}\n\t\t_getTextMetrics(text) {\n\t\t\t\tconst textSpan = document.createElement('span');\n\t\t\t\ttextSpan.id = 'content-span';\n\t\t\t\ttextSpan.innerHTML = text;\n\t\t\t\tconst block = document.createElement('div');\n\t\t\t\tblock.id = 'content-block';\n\t\t\t\tblock.style.display = 'inline-block';\n\t\t\t\tblock.style.width = '1px';\n\t\t\t\tblock.style.height = '0px';\n\t\t\t\tconst div = document.createElement('div');\n\t\t\t\tdiv.appendChild(textSpan);\n\t\t\t\tdiv.appendChild(block);\n\t\t\t\tdiv.style.font = `${this.fontSize}px ${this.fontName}`;\n\t\t\t\tconst body = document.body;\n\t\t\t\tbody.appendChild(div);\n\t\t\t\tlet ascent = -1;\n\t\t\t\tlet descent = -1;\n\t\t\t\tlet height = -1;\n\t\t\t\ttry {\n\t\t\t\t\t\tblock.style['vertical-align'] = 'baseline';\n\t\t\t\t\t\tascent = block.offsetTop - textSpan.offsetTop;\n\t\t\t\t\t\tblock.style['vertical-align'] = 'bottom';\n\t\t\t\t\t\theight = block.offsetTop - textSpan.offsetTop;\n\t\t\t\t\t\tdescent = height - ascent;\n\t\t\t\t} finally{\n\t\t\t\t\t\tdocument.body.removeChild(div);\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\t\tascent: ascent,\n\t\t\t\t\t\tdescent: descent,\n\t\t\t\t\t\theight: height\n\t\t\t\t};\n\t\t}\n\t\tget textures() {\n\t\t\t\treturn this.atlases.map((atlas)=>atlas.texture);\n\t\t}\n}\n\nconst tempMeshInstances$1 = [];\nconst lights = [\n\t\t[],\n\t\t[],\n\t\t[]\n];\nclass RenderPassPicker extends RenderPass {\n\t\tconstructor(device, renderer){\n\t\t\t\tsuper(device), this.viewBindGroups = [];\n\t\t\t\tthis.renderer = renderer;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.viewBindGroups.forEach((bg)=>{\n\t\t\t\t\t\tbg.defaultUniformBuffer.destroy();\n\t\t\t\t\t\tbg.destroy();\n\t\t\t\t});\n\t\t\t\tthis.viewBindGroups.length = 0;\n\t\t}\n\t\tupdate(camera, scene, layers, mapping) {\n\t\t\t\tthis.camera = camera;\n\t\t\t\tthis.scene = scene;\n\t\t\t\tthis.layers = layers;\n\t\t\t\tthis.mapping = mapping;\n\t\t\t\tif (scene.clusteredLightingEnabled) {\n\t\t\t\t\t\tthis.emptyWorldClusters = this.renderer.worldClustersAllocator.empty;\n\t\t\t\t}\n\t\t}\n\t\texecute() {\n\t\t\t\tconst device = this.device;\n\t\t\t\tconst { renderer, camera, scene, layers, mapping, renderTarget } = this;\n\t\t\t\tconst srcLayers = scene.layers.layerList;\n\t\t\t\tconst subLayerEnabled = scene.layers.subLayerEnabled;\n\t\t\t\tconst isTransparent = scene.layers.subLayerList;\n\t\t\t\tfor(let i = 0; i < srcLayers.length; i++){\n\t\t\t\t\t\tconst srcLayer = srcLayers[i];\n\t\t\t\t\t\tif (layers && layers.indexOf(srcLayer) < 0) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (srcLayer.enabled && subLayerEnabled[i]) {\n\t\t\t\t\t\t\t\tif (srcLayer.camerasSet.has(camera.camera)) {\n\t\t\t\t\t\t\t\t\t\tconst transparent = isTransparent[i];\n\t\t\t\t\t\t\t\t\t\tif (srcLayer._clearDepthBuffer) {\n\t\t\t\t\t\t\t\t\t\t\t\trenderer.clear(camera.camera, false, true, false);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tconst meshInstances = srcLayer.meshInstances;\n\t\t\t\t\t\t\t\t\t\tfor(let j = 0; j < meshInstances.length; j++){\n\t\t\t\t\t\t\t\t\t\t\t\tconst meshInstance = meshInstances[j];\n\t\t\t\t\t\t\t\t\t\t\t\tif (meshInstance.pick && meshInstance.transparent === transparent) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttempMeshInstances$1.push(meshInstance);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmapping.set(meshInstance.id, meshInstance);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (tempMeshInstances$1.length > 0) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst clusteredLightingEnabled = scene.clusteredLightingEnabled;\n\t\t\t\t\t\t\t\t\t\t\t\tif (clusteredLightingEnabled) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst lightClusters = this.emptyWorldClusters;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlightClusters.activate();\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\trenderer.setCameraUniforms(camera.camera, renderTarget);\n\t\t\t\t\t\t\t\t\t\t\t\tif (device.supportsUniformBuffers) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\trenderer.setupViewUniformBuffers(this.viewBindGroups, renderer.viewUniformFormat, renderer.viewBindGroupFormat, null);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\trenderer.renderForward(camera.camera, renderTarget, tempMeshInstances$1, lights, SHADER_PICK, (meshInstance)=>{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdevice.setBlendState(BlendState.NOBLEND);\n\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t\ttempMeshInstances$1.length = 0;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n}\n\nconst tempSet = new Set();\nconst _rect = new Vec4();\nclass Picker {\n\t\tconstructor(app, width, height){\n\t\t\t\tthis.renderTarget = null;\n\t\t\t\tthis.mapping = new Map();\n\t\t\t\tthis.deviceValid = true;\n\t\t\t\tthis.renderer = app.renderer;\n\t\t\t\tthis.device = app.graphicsDevice;\n\t\t\t\tthis.renderPass = new RenderPassPicker(this.device, app.renderer);\n\t\t\t\tthis.width = 0;\n\t\t\t\tthis.height = 0;\n\t\t\t\tthis.resize(width, height);\n\t\t\t\tthis.device.on('destroy', ()=>{\n\t\t\t\t\t\tthis.deviceValid = false;\n\t\t\t\t});\n\t\t}\n\t\tgetSelection(x, y, width = 1, height = 1) {\n\t\t\t\tconst device = this.device;\n\t\t\t\tif (device.isWebGPU) {\n\t\t\t\t\t\treturn [];\n\t\t\t\t}\n\t\t\t\ty = this.renderTarget.height - (y + height);\n\t\t\t\tconst rect = this.sanitizeRect(x, y, width, height);\n\t\t\t\tdevice.setRenderTarget(this.renderTarget);\n\t\t\t\tdevice.updateBegin();\n\t\t\t\tconst pixels = new Uint8Array(4 * rect.z * rect.w);\n\t\t\t\tdevice.readPixels(rect.x, rect.y, rect.z, rect.w, pixels);\n\t\t\t\tdevice.updateEnd();\n\t\t\t\treturn this.decodePixels(pixels, this.mapping);\n\t\t}\n\t\tgetSelectionAsync(x, y, width = 1, height = 1) {\n\t\t\t\tif (this.device?.isWebGL2) {\n\t\t\t\t\t\ty = this.renderTarget.height - (y + height);\n\t\t\t\t}\n\t\t\t\tconst rect = this.sanitizeRect(x, y, width, height);\n\t\t\t\treturn this.renderTarget.colorBuffer.read(rect.x, rect.y, rect.z, rect.w, {\n\t\t\t\t\t\trenderTarget: this.renderTarget,\n\t\t\t\t\t\timmediate: true\n\t\t\t\t}).then((pixels)=>{\n\t\t\t\t\t\treturn this.decodePixels(pixels, this.mapping);\n\t\t\t\t});\n\t\t}\n\t\tsanitizeRect(x, y, width, height) {\n\t\t\t\tconst maxWidth = this.renderTarget.width;\n\t\t\t\tconst maxHeight = this.renderTarget.height;\n\t\t\t\tx = math.clamp(Math.floor(x), 0, maxWidth - 1);\n\t\t\t\ty = math.clamp(Math.floor(y), 0, maxHeight - 1);\n\t\t\t\twidth = Math.floor(Math.max(width, 1));\n\t\t\t\twidth = Math.min(width, maxWidth - x);\n\t\t\t\theight = Math.floor(Math.max(height, 1));\n\t\t\t\theight = Math.min(height, maxHeight - y);\n\t\t\t\treturn _rect.set(x, y, width, height);\n\t\t}\n\t\tdecodePixels(pixels, mapping) {\n\t\t\t\tconst selection = [];\n\t\t\t\tif (this.deviceValid) {\n\t\t\t\t\t\tconst count = pixels.length;\n\t\t\t\t\t\tfor(let i = 0; i < count; i += 4){\n\t\t\t\t\t\t\t\tconst r = pixels[i + 0];\n\t\t\t\t\t\t\t\tconst g = pixels[i + 1];\n\t\t\t\t\t\t\t\tconst b = pixels[i + 2];\n\t\t\t\t\t\t\t\tconst a = pixels[i + 3];\n\t\t\t\t\t\t\t\tconst index = (a << 24 | r << 16 | g << 8 | b) >>> 0;\n\t\t\t\t\t\t\t\tif (index !== 0xFFFFFFFF) {\n\t\t\t\t\t\t\t\t\t\ttempSet.add(mapping.get(index));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttempSet.forEach((meshInstance)=>{\n\t\t\t\t\t\t\t\tif (meshInstance) {\n\t\t\t\t\t\t\t\t\t\tselection.push(meshInstance);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t\ttempSet.clear();\n\t\t\t\t}\n\t\t\t\treturn selection;\n\t\t}\n\t\tallocateRenderTarget() {\n\t\t\t\tconst colorBuffer = new Texture(this.device, {\n\t\t\t\t\t\tformat: PIXELFORMAT_RGBA8,\n\t\t\t\t\t\twidth: this.width,\n\t\t\t\t\t\theight: this.height,\n\t\t\t\t\t\tmipmaps: false,\n\t\t\t\t\t\tminFilter: FILTER_NEAREST,\n\t\t\t\t\t\tmagFilter: FILTER_NEAREST,\n\t\t\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\tname: 'pick'\n\t\t\t\t});\n\t\t\t\tthis.renderTarget = new RenderTarget({\n\t\t\t\t\t\tcolorBuffer: colorBuffer,\n\t\t\t\t\t\tdepth: true\n\t\t\t\t});\n\t\t}\n\t\treleaseRenderTarget() {\n\t\t\t\tif (this.renderTarget) {\n\t\t\t\t\t\tthis.renderTarget.destroyTextureBuffers();\n\t\t\t\t\t\tthis.renderTarget.destroy();\n\t\t\t\t\t\tthis.renderTarget = null;\n\t\t\t\t}\n\t\t}\n\t\tprepare(camera, scene, layers) {\n\t\t\t\tif (layers instanceof Layer) {\n\t\t\t\t\t\tlayers = [\n\t\t\t\t\t\t\t\tlayers\n\t\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t\tif (!this.renderTarget || this.width !== this.renderTarget.width || this.height !== this.renderTarget.height) {\n\t\t\t\t\t\tthis.releaseRenderTarget();\n\t\t\t\t\t\tthis.allocateRenderTarget();\n\t\t\t\t}\n\t\t\t\tthis.mapping.clear();\n\t\t\t\tconst renderPass = this.renderPass;\n\t\t\t\trenderPass.init(this.renderTarget);\n\t\t\t\trenderPass.colorOps.clearValue = Color.WHITE;\n\t\t\t\trenderPass.colorOps.clear = true;\n\t\t\t\trenderPass.depthStencilOps.clearDepth = true;\n\t\t\t\trenderPass.update(camera, scene, layers, this.mapping);\n\t\t\t\trenderPass.render();\n\t\t}\n\t\tresize(width, height) {\n\t\t\t\tthis.width = Math.floor(width);\n\t\t\t\tthis.height = Math.floor(height);\n\t\t}\n}\n\nclass SceneSettingsHandler extends ResourceHandler {\n\t\tconstructor(app){\n\t\t\t\tsuper(app, 'scenesettings');\n\t\t}\n\t\tload(url, callback) {\n\t\t\t\tSceneUtils.load(url, this.maxRetries, callback);\n\t\t}\n\t\topen(url, data) {\n\t\t\t\treturn data.settings;\n\t\t}\n}\n\nlet targetX, targetY;\nconst vecA = new Vec3();\nconst vecB = new Vec3();\nconst rayA = new Ray();\nconst rayB = new Ray();\nconst rayC = new Ray();\nrayA.end = new Vec3();\nrayB.end = new Vec3();\nrayC.end = new Vec3();\nconst _pq = new Vec3();\nconst _pa = new Vec3();\nconst _pb = new Vec3();\nconst _pc = new Vec3();\nconst _pd = new Vec3();\nconst _m = new Vec3();\nconst _au = new Vec3();\nconst _bv = new Vec3();\nconst _cw = new Vec3();\nconst _ir = new Vec3();\nconst _sct = new Vec3();\nconst _accumulatedScale = new Vec3();\nconst _paddingTop = new Vec3();\nconst _paddingBottom = new Vec3();\nconst _paddingLeft = new Vec3();\nconst _paddingRight = new Vec3();\nconst _cornerBottomLeft = new Vec3();\nconst _cornerBottomRight = new Vec3();\nconst _cornerTopRight = new Vec3();\nconst _cornerTopLeft = new Vec3();\nconst ZERO_VEC4 = new Vec4();\nfunction scalarTriple(p1, p2, p3) {\n\t\treturn _sct.cross(p1, p2).dot(p3);\n}\nfunction intersectLineQuad(p, q, corners) {\n\t\t_pq.sub2(q, p);\n\t\t_pa.sub2(corners[0], p);\n\t\t_pb.sub2(corners[1], p);\n\t\t_pc.sub2(corners[2], p);\n\t\t_m.cross(_pc, _pq);\n\t\tlet v = _pa.dot(_m);\n\t\tlet u;\n\t\tlet w;\n\t\tif (v >= 0) {\n\t\t\t\tu = -_pb.dot(_m);\n\t\t\t\tif (u < 0) {\n\t\t\t\t\t\treturn -1;\n\t\t\t\t}\n\t\t\t\tw = scalarTriple(_pq, _pb, _pa);\n\t\t\t\tif (w < 0) {\n\t\t\t\t\t\treturn -1;\n\t\t\t\t}\n\t\t\t\tconst denom = 1.0 / (u + v + w);\n\t\t\t\t_au.copy(corners[0]).mulScalar(u * denom);\n\t\t\t\t_bv.copy(corners[1]).mulScalar(v * denom);\n\t\t\t\t_cw.copy(corners[2]).mulScalar(w * denom);\n\t\t\t\t_ir.copy(_au).add(_bv).add(_cw);\n\t\t} else {\n\t\t\t\t_pd.sub2(corners[3], p);\n\t\t\t\tu = _pd.dot(_m);\n\t\t\t\tif (u < 0) {\n\t\t\t\t\t\treturn -1;\n\t\t\t\t}\n\t\t\t\tw = scalarTriple(_pq, _pa, _pd);\n\t\t\t\tif (w < 0) {\n\t\t\t\t\t\treturn -1;\n\t\t\t\t}\n\t\t\t\tv = -v;\n\t\t\t\tconst denom = 1.0 / (u + v + w);\n\t\t\t\t_au.copy(corners[0]).mulScalar(u * denom);\n\t\t\t\t_bv.copy(corners[3]).mulScalar(v * denom);\n\t\t\t\t_cw.copy(corners[2]).mulScalar(w * denom);\n\t\t\t\t_ir.copy(_au).add(_bv).add(_cw);\n\t\t}\n\t\tif (_pq.sub2(corners[0], corners[2]).lengthSq() < 0.0001 * 0.0001) return -1;\n\t\tif (_pq.sub2(corners[1], corners[3]).lengthSq() < 0.0001 * 0.0001) return -1;\n\t\treturn _ir.sub(p).lengthSq();\n}\nclass ElementInputEvent {\n\t\tconstructor(event, element, camera){\n\t\t\t\tthis.event = event;\n\t\t\t\tthis.element = element;\n\t\t\t\tthis.camera = camera;\n\t\t\t\tthis._stopPropagation = false;\n\t\t}\n\t\tstopPropagation() {\n\t\t\t\tthis._stopPropagation = true;\n\t\t\t\tif (this.event) {\n\t\t\t\t\t\tthis.event.stopImmediatePropagation();\n\t\t\t\t\t\tthis.event.stopPropagation();\n\t\t\t\t}\n\t\t}\n}\nclass ElementMouseEvent extends ElementInputEvent {\n\t\tconstructor(event, element, camera, x, y, lastX, lastY){\n\t\t\t\tsuper(event, element, camera);\n\t\t\t\tthis.x = x;\n\t\t\t\tthis.y = y;\n\t\t\t\tthis.ctrlKey = event.ctrlKey || false;\n\t\t\t\tthis.altKey = event.altKey || false;\n\t\t\t\tthis.shiftKey = event.shiftKey || false;\n\t\t\t\tthis.metaKey = event.metaKey || false;\n\t\t\t\tthis.button = event.button;\n\t\t\t\tif (Mouse.isPointerLocked()) {\n\t\t\t\t\t\tthis.dx = event.movementX || event.webkitMovementX || event.mozMovementX || 0;\n\t\t\t\t\t\tthis.dy = event.movementY || event.webkitMovementY || event.mozMovementY || 0;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.dx = x - lastX;\n\t\t\t\t\t\tthis.dy = y - lastY;\n\t\t\t\t}\n\t\t\t\tthis.wheelDelta = 0;\n\t\t\t\tif (event.type === 'wheel') {\n\t\t\t\t\t\tif (event.deltaY > 0) {\n\t\t\t\t\t\t\t\tthis.wheelDelta = 1;\n\t\t\t\t\t\t} else if (event.deltaY < 0) {\n\t\t\t\t\t\t\t\tthis.wheelDelta = -1;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n}\nclass ElementTouchEvent extends ElementInputEvent {\n\t\tconstructor(event, element, camera, x, y, touch){\n\t\t\t\tsuper(event, element, camera);\n\t\t\t\tthis.touches = event.touches;\n\t\t\t\tthis.changedTouches = event.changedTouches;\n\t\t\t\tthis.x = x;\n\t\t\t\tthis.y = y;\n\t\t\t\tthis.touch = touch;\n\t\t}\n}\nclass ElementSelectEvent extends ElementInputEvent {\n\t\tconstructor(event, element, camera, inputSource){\n\t\t\t\tsuper(event, element, camera);\n\t\t\t\tthis.inputSource = inputSource;\n\t\t}\n}\nclass ElementInput {\n\t\tconstructor(domElement, options){\n\t\t\t\tthis._app = null;\n\t\t\t\tthis._attached = false;\n\t\t\t\tthis._target = null;\n\t\t\t\tthis._enabled = true;\n\t\t\t\tthis._lastX = 0;\n\t\t\t\tthis._lastY = 0;\n\t\t\t\tthis._upHandler = this._handleUp.bind(this);\n\t\t\t\tthis._downHandler = this._handleDown.bind(this);\n\t\t\t\tthis._moveHandler = this._handleMove.bind(this);\n\t\t\t\tthis._wheelHandler = this._handleWheel.bind(this);\n\t\t\t\tthis._touchstartHandler = this._handleTouchStart.bind(this);\n\t\t\t\tthis._touchendHandler = this._handleTouchEnd.bind(this);\n\t\t\t\tthis._touchcancelHandler = this._touchendHandler;\n\t\t\t\tthis._touchmoveHandler = this._handleTouchMove.bind(this);\n\t\t\t\tthis._sortHandler = this._sortElements.bind(this);\n\t\t\t\tthis._elements = [];\n\t\t\t\tthis._hoveredElement = null;\n\t\t\t\tthis._pressedElement = null;\n\t\t\t\tthis._touchedElements = {};\n\t\t\t\tthis._touchesForWhichTouchLeaveHasFired = {};\n\t\t\t\tthis._selectedElements = {};\n\t\t\t\tthis._selectedPressedElements = {};\n\t\t\t\tthis._useMouse = !options || options.useMouse !== false;\n\t\t\t\tthis._useTouch = !options || options.useTouch !== false;\n\t\t\t\tthis._useXr = !options || options.useXr !== false;\n\t\t\t\tthis._selectEventsAttached = false;\n\t\t\t\tif (platform.touch) {\n\t\t\t\t\t\tthis._clickedEntities = {};\n\t\t\t\t}\n\t\t\t\tthis.attach(domElement);\n\t\t}\n\t\tset enabled(value) {\n\t\t\t\tthis._enabled = value;\n\t\t}\n\t\tget enabled() {\n\t\t\t\treturn this._enabled;\n\t\t}\n\t\tset app(value) {\n\t\t\t\tthis._app = value;\n\t\t}\n\t\tget app() {\n\t\t\t\treturn this._app || getApplication();\n\t\t}\n\t\tattach(domElement) {\n\t\t\t\tif (this._attached) {\n\t\t\t\t\t\tthis._attached = false;\n\t\t\t\t\t\tthis.detach();\n\t\t\t\t}\n\t\t\t\tthis._target = domElement;\n\t\t\t\tthis._attached = true;\n\t\t\t\tconst opts = platform.passiveEvents ? {\n\t\t\t\t\t\tpassive: true\n\t\t\t\t} : false;\n\t\t\t\tif (this._useMouse) {\n\t\t\t\t\t\twindow.addEventListener('mouseup', this._upHandler, opts);\n\t\t\t\t\t\twindow.addEventListener('mousedown', this._downHandler, opts);\n\t\t\t\t\t\twindow.addEventListener('mousemove', this._moveHandler, opts);\n\t\t\t\t\t\twindow.addEventListener('wheel', this._wheelHandler, opts);\n\t\t\t\t}\n\t\t\t\tif (this._useTouch && platform.touch) {\n\t\t\t\t\t\tthis._target.addEventListener('touchstart', this._touchstartHandler, opts);\n\t\t\t\t\t\tthis._target.addEventListener('touchend', this._touchendHandler, false);\n\t\t\t\t\t\tthis._target.addEventListener('touchmove', this._touchmoveHandler, false);\n\t\t\t\t\t\tthis._target.addEventListener('touchcancel', this._touchcancelHandler, false);\n\t\t\t\t}\n\t\t\t\tthis.attachSelectEvents();\n\t\t}\n\t\tattachSelectEvents() {\n\t\t\t\tif (!this._selectEventsAttached && this._useXr && this.app && this.app.xr && this.app.xr.supported) {\n\t\t\t\t\t\tif (!this._clickedEntities) {\n\t\t\t\t\t\t\t\tthis._clickedEntities = {};\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._selectEventsAttached = true;\n\t\t\t\t\t\tthis.app.xr.on('start', this._onXrStart, this);\n\t\t\t\t}\n\t\t}\n\t\tdetach() {\n\t\t\t\tif (!this._attached) return;\n\t\t\t\tthis._attached = false;\n\t\t\t\tconst opts = platform.passiveEvents ? {\n\t\t\t\t\t\tpassive: true\n\t\t\t\t} : false;\n\t\t\t\tif (this._useMouse) {\n\t\t\t\t\t\twindow.removeEventListener('mouseup', this._upHandler, opts);\n\t\t\t\t\t\twindow.removeEventListener('mousedown', this._downHandler, opts);\n\t\t\t\t\t\twindow.removeEventListener('mousemove', this._moveHandler, opts);\n\t\t\t\t\t\twindow.removeEventListener('wheel', this._wheelHandler, opts);\n\t\t\t\t}\n\t\t\t\tif (this._useTouch) {\n\t\t\t\t\t\tthis._target.removeEventListener('touchstart', this._touchstartHandler, opts);\n\t\t\t\t\t\tthis._target.removeEventListener('touchend', this._touchendHandler, false);\n\t\t\t\t\t\tthis._target.removeEventListener('touchmove', this._touchmoveHandler, false);\n\t\t\t\t\t\tthis._target.removeEventListener('touchcancel', this._touchcancelHandler, false);\n\t\t\t\t}\n\t\t\t\tif (this._selectEventsAttached) {\n\t\t\t\t\t\tthis._selectEventsAttached = false;\n\t\t\t\t\t\tthis.app.xr.off('start', this._onXrStart, this);\n\t\t\t\t\t\tthis.app.xr.off('end', this._onXrEnd, this);\n\t\t\t\t\t\tthis.app.xr.off('update', this._onXrUpdate, this);\n\t\t\t\t\t\tthis.app.xr.input.off('selectstart', this._onSelectStart, this);\n\t\t\t\t\t\tthis.app.xr.input.off('selectend', this._onSelectEnd, this);\n\t\t\t\t\t\tthis.app.xr.input.off('remove', this._onXrInputRemove, this);\n\t\t\t\t}\n\t\t\t\tthis._target = null;\n\t\t}\n\t\taddElement(element) {\n\t\t\t\tif (this._elements.indexOf(element) === -1) {\n\t\t\t\t\t\tthis._elements.push(element);\n\t\t\t\t}\n\t\t}\n\t\tremoveElement(element) {\n\t\t\t\tconst idx = this._elements.indexOf(element);\n\t\t\t\tif (idx !== -1) {\n\t\t\t\t\t\tthis._elements.splice(idx, 1);\n\t\t\t\t}\n\t\t}\n\t\t_handleUp(event) {\n\t\t\t\tif (!this._enabled) return;\n\t\t\t\tif (Mouse.isPointerLocked()) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._calcMouseCoords(event);\n\t\t\t\tthis._onElementMouseEvent('mouseup', event);\n\t\t}\n\t\t_handleDown(event) {\n\t\t\t\tif (!this._enabled) return;\n\t\t\t\tif (Mouse.isPointerLocked()) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._calcMouseCoords(event);\n\t\t\t\tthis._onElementMouseEvent('mousedown', event);\n\t\t}\n\t\t_handleMove(event) {\n\t\t\t\tif (!this._enabled) return;\n\t\t\t\tthis._calcMouseCoords(event);\n\t\t\t\tthis._onElementMouseEvent('mousemove', event);\n\t\t\t\tthis._lastX = targetX;\n\t\t\t\tthis._lastY = targetY;\n\t\t}\n\t\t_handleWheel(event) {\n\t\t\t\tif (!this._enabled) return;\n\t\t\t\tthis._calcMouseCoords(event);\n\t\t\t\tthis._onElementMouseEvent('mousewheel', event);\n\t\t}\n\t\t_determineTouchedElements(event) {\n\t\t\t\tconst touchedElements = {};\n\t\t\t\tconst cameras = this.app.systems.camera.cameras;\n\t\t\t\tfor(let i = cameras.length - 1; i >= 0; i--){\n\t\t\t\t\t\tconst camera = cameras[i];\n\t\t\t\t\t\tlet done = 0;\n\t\t\t\t\t\tconst len = event.changedTouches.length;\n\t\t\t\t\t\tfor(let j = 0; j < len; j++){\n\t\t\t\t\t\t\t\tif (touchedElements[event.changedTouches[j].identifier]) {\n\t\t\t\t\t\t\t\t\t\tdone++;\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst coords = getTouchTargetCoords(event.changedTouches[j]);\n\t\t\t\t\t\t\t\tconst element = this._getTargetElementByCoords(camera, coords.x, coords.y);\n\t\t\t\t\t\t\t\tif (element) {\n\t\t\t\t\t\t\t\t\t\tdone++;\n\t\t\t\t\t\t\t\t\t\ttouchedElements[event.changedTouches[j].identifier] = {\n\t\t\t\t\t\t\t\t\t\t\t\telement: element,\n\t\t\t\t\t\t\t\t\t\t\t\tcamera: camera,\n\t\t\t\t\t\t\t\t\t\t\t\tx: coords.x,\n\t\t\t\t\t\t\t\t\t\t\t\ty: coords.y\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (done === len) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn touchedElements;\n\t\t}\n\t\t_handleTouchStart(event) {\n\t\t\t\tif (!this._enabled) return;\n\t\t\t\tconst newTouchedElements = this._determineTouchedElements(event);\n\t\t\t\tfor(let i = 0, len = event.changedTouches.length; i < len; i++){\n\t\t\t\t\t\tconst touch = event.changedTouches[i];\n\t\t\t\t\t\tconst newTouchInfo = newTouchedElements[touch.identifier];\n\t\t\t\t\t\tconst oldTouchInfo = this._touchedElements[touch.identifier];\n\t\t\t\t\t\tif (newTouchInfo && (!oldTouchInfo || newTouchInfo.element !== oldTouchInfo.element)) {\n\t\t\t\t\t\t\t\tthis._fireEvent(event.type, new ElementTouchEvent(event, newTouchInfo.element, newTouchInfo.camera, newTouchInfo.x, newTouchInfo.y, touch));\n\t\t\t\t\t\t\t\tthis._touchesForWhichTouchLeaveHasFired[touch.identifier] = false;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor(const touchId in newTouchedElements){\n\t\t\t\t\t\tthis._touchedElements[touchId] = newTouchedElements[touchId];\n\t\t\t\t}\n\t\t}\n\t\t_handleTouchEnd(event) {\n\t\t\t\tif (!this._enabled) return;\n\t\t\t\tconst cameras = this.app.systems.camera.cameras;\n\t\t\t\tfor(const key in this._clickedEntities){\n\t\t\t\t\t\tdelete this._clickedEntities[key];\n\t\t\t\t}\n\t\t\t\tfor(let i = 0, len = event.changedTouches.length; i < len; i++){\n\t\t\t\t\t\tconst touch = event.changedTouches[i];\n\t\t\t\t\t\tconst touchInfo = this._touchedElements[touch.identifier];\n\t\t\t\t\t\tif (!touchInfo) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst element = touchInfo.element;\n\t\t\t\t\t\tconst camera = touchInfo.camera;\n\t\t\t\t\t\tconst x = touchInfo.x;\n\t\t\t\t\t\tconst y = touchInfo.y;\n\t\t\t\t\t\tdelete this._touchedElements[touch.identifier];\n\t\t\t\t\t\tdelete this._touchesForWhichTouchLeaveHasFired[touch.identifier];\n\t\t\t\t\t\tconst coords = getTouchTargetCoords(touch);\n\t\t\t\t\t\tfor(let c = cameras.length - 1; c >= 0; c--){\n\t\t\t\t\t\t\t\tconst hovered = this._getTargetElementByCoords(cameras[c], coords.x, coords.y);\n\t\t\t\t\t\t\t\tif (hovered === element) {\n\t\t\t\t\t\t\t\t\t\tif (!this._clickedEntities[element.entity.getGuid()]) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._fireEvent('click', new ElementTouchEvent(event, element, camera, x, y, touch));\n\t\t\t\t\t\t\t\t\t\t\t\tthis._clickedEntities[element.entity.getGuid()] = Date.now();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._fireEvent(event.type, new ElementTouchEvent(event, element, camera, x, y, touch));\n\t\t\t\t}\n\t\t}\n\t\t_handleTouchMove(event) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tif (!this._enabled) return;\n\t\t\t\tconst newTouchedElements = this._determineTouchedElements(event);\n\t\t\t\tfor(let i = 0, len = event.changedTouches.length; i < len; i++){\n\t\t\t\t\t\tconst touch = event.changedTouches[i];\n\t\t\t\t\t\tconst newTouchInfo = newTouchedElements[touch.identifier];\n\t\t\t\t\t\tconst oldTouchInfo = this._touchedElements[touch.identifier];\n\t\t\t\t\t\tif (oldTouchInfo) {\n\t\t\t\t\t\t\t\tconst coords = getTouchTargetCoords(touch);\n\t\t\t\t\t\t\t\tif ((!newTouchInfo || newTouchInfo.element !== oldTouchInfo.element) && !this._touchesForWhichTouchLeaveHasFired[touch.identifier]) {\n\t\t\t\t\t\t\t\t\t\tthis._fireEvent('touchleave', new ElementTouchEvent(event, oldTouchInfo.element, oldTouchInfo.camera, coords.x, coords.y, touch));\n\t\t\t\t\t\t\t\t\t\tthis._touchesForWhichTouchLeaveHasFired[touch.identifier] = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis._fireEvent('touchmove', new ElementTouchEvent(event, oldTouchInfo.element, oldTouchInfo.camera, coords.x, coords.y, touch));\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_onElementMouseEvent(eventType, event) {\n\t\t\t\tlet element = null;\n\t\t\t\tconst lastHovered = this._hoveredElement;\n\t\t\t\tthis._hoveredElement = null;\n\t\t\t\tconst cameras = this.app.systems.camera.cameras;\n\t\t\t\tlet camera;\n\t\t\t\tfor(let i = cameras.length - 1; i >= 0; i--){\n\t\t\t\t\t\tcamera = cameras[i];\n\t\t\t\t\t\telement = this._getTargetElementByCoords(camera, targetX, targetY);\n\t\t\t\t\t\tif (element) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._hoveredElement = element;\n\t\t\t\tif ((eventType === 'mousemove' || eventType === 'mouseup') && this._pressedElement) {\n\t\t\t\t\t\tthis._fireEvent(eventType, new ElementMouseEvent(event, this._pressedElement, camera, targetX, targetY, this._lastX, this._lastY));\n\t\t\t\t} else if (element) {\n\t\t\t\t\t\tthis._fireEvent(eventType, new ElementMouseEvent(event, element, camera, targetX, targetY, this._lastX, this._lastY));\n\t\t\t\t\t\tif (eventType === 'mousedown') {\n\t\t\t\t\t\t\t\tthis._pressedElement = element;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (lastHovered !== this._hoveredElement) {\n\t\t\t\t\t\tif (lastHovered) {\n\t\t\t\t\t\t\t\tthis._fireEvent('mouseleave', new ElementMouseEvent(event, lastHovered, camera, targetX, targetY, this._lastX, this._lastY));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this._hoveredElement) {\n\t\t\t\t\t\t\t\tthis._fireEvent('mouseenter', new ElementMouseEvent(event, this._hoveredElement, camera, targetX, targetY, this._lastX, this._lastY));\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (eventType === 'mouseup' && this._pressedElement) {\n\t\t\t\t\t\tif (this._pressedElement === this._hoveredElement) {\n\t\t\t\t\t\t\t\tconst guid = this._hoveredElement.entity.getGuid();\n\t\t\t\t\t\t\t\tlet fireClick = !this._clickedEntities;\n\t\t\t\t\t\t\t\tif (this._clickedEntities) {\n\t\t\t\t\t\t\t\t\t\tconst lastTouchUp = this._clickedEntities[guid] || 0;\n\t\t\t\t\t\t\t\t\t\tconst dt = Date.now() - lastTouchUp;\n\t\t\t\t\t\t\t\t\t\tfireClick = dt > 300;\n\t\t\t\t\t\t\t\t\t\tdelete this._clickedEntities[guid];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (fireClick) {\n\t\t\t\t\t\t\t\t\t\tthis._fireEvent('click', new ElementMouseEvent(event, this._hoveredElement, camera, targetX, targetY, this._lastX, this._lastY));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._pressedElement = null;\n\t\t\t\t}\n\t\t}\n\t\t_onXrStart() {\n\t\t\t\tthis.app.xr.on('end', this._onXrEnd, this);\n\t\t\t\tthis.app.xr.on('update', this._onXrUpdate, this);\n\t\t\t\tthis.app.xr.input.on('selectstart', this._onSelectStart, this);\n\t\t\t\tthis.app.xr.input.on('selectend', this._onSelectEnd, this);\n\t\t\t\tthis.app.xr.input.on('remove', this._onXrInputRemove, this);\n\t\t}\n\t\t_onXrEnd() {\n\t\t\t\tthis.app.xr.off('update', this._onXrUpdate, this);\n\t\t\t\tthis.app.xr.input.off('selectstart', this._onSelectStart, this);\n\t\t\t\tthis.app.xr.input.off('selectend', this._onSelectEnd, this);\n\t\t\t\tthis.app.xr.input.off('remove', this._onXrInputRemove, this);\n\t\t}\n\t\t_onXrUpdate() {\n\t\t\t\tif (!this._enabled) return;\n\t\t\t\tconst inputSources = this.app.xr.input.inputSources;\n\t\t\t\tfor(let i = 0; i < inputSources.length; i++){\n\t\t\t\t\t\tthis._onElementSelectEvent('selectmove', inputSources[i], null);\n\t\t\t\t}\n\t\t}\n\t\t_onXrInputRemove(inputSource) {\n\t\t\t\tconst hovered = this._selectedElements[inputSource.id];\n\t\t\t\tif (hovered) {\n\t\t\t\t\t\tinputSource._elementEntity = null;\n\t\t\t\t\t\tthis._fireEvent('selectleave', new ElementSelectEvent(null, hovered, null, inputSource));\n\t\t\t\t}\n\t\t\t\tdelete this._selectedElements[inputSource.id];\n\t\t\t\tdelete this._selectedPressedElements[inputSource.id];\n\t\t}\n\t\t_onSelectStart(inputSource, event) {\n\t\t\t\tif (!this._enabled) return;\n\t\t\t\tthis._onElementSelectEvent('selectstart', inputSource, event);\n\t\t}\n\t\t_onSelectEnd(inputSource, event) {\n\t\t\t\tif (!this._enabled) return;\n\t\t\t\tthis._onElementSelectEvent('selectend', inputSource, event);\n\t\t}\n\t\t_onElementSelectEvent(eventType, inputSource, event) {\n\t\t\t\tlet element;\n\t\t\t\tconst hoveredBefore = this._selectedElements[inputSource.id];\n\t\t\t\tlet hoveredNow;\n\t\t\t\tconst cameras = this.app.systems.camera.cameras;\n\t\t\t\tlet camera;\n\t\t\t\tif (inputSource.elementInput) {\n\t\t\t\t\t\trayC.set(inputSource.getOrigin(), inputSource.getDirection());\n\t\t\t\t\t\tfor(let i = cameras.length - 1; i >= 0; i--){\n\t\t\t\t\t\t\t\tcamera = cameras[i];\n\t\t\t\t\t\t\t\telement = this._getTargetElementByRay(rayC, camera);\n\t\t\t\t\t\t\t\tif (element) {\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tinputSource._elementEntity = element || null;\n\t\t\t\tif (element) {\n\t\t\t\t\t\tthis._selectedElements[inputSource.id] = element;\n\t\t\t\t\t\thoveredNow = element;\n\t\t\t\t} else {\n\t\t\t\t\t\tdelete this._selectedElements[inputSource.id];\n\t\t\t\t}\n\t\t\t\tif (hoveredBefore !== hoveredNow) {\n\t\t\t\t\t\tif (hoveredBefore) this._fireEvent('selectleave', new ElementSelectEvent(event, hoveredBefore, camera, inputSource));\n\t\t\t\t\t\tif (hoveredNow) this._fireEvent('selectenter', new ElementSelectEvent(event, hoveredNow, camera, inputSource));\n\t\t\t\t}\n\t\t\t\tconst pressed = this._selectedPressedElements[inputSource.id];\n\t\t\t\tif (eventType === 'selectmove' && pressed) {\n\t\t\t\t\t\tthis._fireEvent('selectmove', new ElementSelectEvent(event, pressed, camera, inputSource));\n\t\t\t\t}\n\t\t\t\tif (eventType === 'selectstart') {\n\t\t\t\t\t\tthis._selectedPressedElements[inputSource.id] = hoveredNow;\n\t\t\t\t\t\tif (hoveredNow) this._fireEvent('selectstart', new ElementSelectEvent(event, hoveredNow, camera, inputSource));\n\t\t\t\t}\n\t\t\t\tif (!inputSource.elementInput && pressed) {\n\t\t\t\t\t\tdelete this._selectedPressedElements[inputSource.id];\n\t\t\t\t\t\tif (hoveredBefore) {\n\t\t\t\t\t\t\t\tthis._fireEvent('selectend', new ElementSelectEvent(event, pressed, camera, inputSource));\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (eventType === 'selectend' && inputSource.elementInput) {\n\t\t\t\t\t\tdelete this._selectedPressedElements[inputSource.id];\n\t\t\t\t\t\tif (pressed) {\n\t\t\t\t\t\t\t\tthis._fireEvent('selectend', new ElementSelectEvent(event, pressed, camera, inputSource));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (pressed && pressed === hoveredBefore) {\n\t\t\t\t\t\t\t\tthis._fireEvent('click', new ElementSelectEvent(event, pressed, camera, inputSource));\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_fireEvent(name, evt) {\n\t\t\t\tlet element = evt.element;\n\t\t\t\twhile(true){\n\t\t\t\t\t\telement.fire(name, evt);\n\t\t\t\t\t\tif (evt._stopPropagation) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!element.entity.parent) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telement = element.entity.parent.element;\n\t\t\t\t\t\tif (!element) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_calcMouseCoords(event) {\n\t\t\t\tconst rect = this._target.getBoundingClientRect();\n\t\t\t\tconst left = Math.floor(rect.left);\n\t\t\t\tconst top = Math.floor(rect.top);\n\t\t\t\ttargetX = event.clientX - left;\n\t\t\t\ttargetY = event.clientY - top;\n\t\t}\n\t\t_sortElements(a, b) {\n\t\t\t\tconst layerOrder = this.app.scene.layers.sortTransparentLayers(a.layers, b.layers);\n\t\t\t\tif (layerOrder !== 0) return layerOrder;\n\t\t\t\tif (a.screen && !b.screen) {\n\t\t\t\t\t\treturn -1;\n\t\t\t\t}\n\t\t\t\tif (!a.screen && b.screen) {\n\t\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t\tif (!a.screen && !b.screen) {\n\t\t\t\t\t\treturn 0;\n\t\t\t\t}\n\t\t\t\tif (a.screen.screen.screenSpace && !b.screen.screen.screenSpace) {\n\t\t\t\t\t\treturn -1;\n\t\t\t\t}\n\t\t\t\tif (b.screen.screen.screenSpace && !a.screen.screen.screenSpace) {\n\t\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t\treturn b.drawOrder - a.drawOrder;\n\t\t}\n\t\t_getTargetElementByCoords(camera, x, y) {\n\t\t\t\tconst rayScreen = this._calculateRayScreen(x, y, camera, rayA) ? rayA : null;\n\t\t\t\tconst ray3d = this._calculateRay3d(x, y, camera, rayB) ? rayB : null;\n\t\t\t\treturn this._getTargetElement(camera, rayScreen, ray3d);\n\t\t}\n\t\t_getTargetElementByRay(ray, camera) {\n\t\t\t\trayA.origin.copy(ray.origin);\n\t\t\t\trayA.direction.copy(ray.direction);\n\t\t\t\trayA.end.copy(rayA.direction).mulScalar(camera.farClip * 2).add(rayA.origin);\n\t\t\t\tconst ray3d = rayA;\n\t\t\t\tconst screenPos = camera.worldToScreen(ray3d.origin, vecA);\n\t\t\t\tconst rayScreen = this._calculateRayScreen(screenPos.x, screenPos.y, camera, rayB) ? rayB : null;\n\t\t\t\treturn this._getTargetElement(camera, rayScreen, ray3d);\n\t\t}\n\t\t_getTargetElement(camera, rayScreen, ray3d) {\n\t\t\t\tlet result = null;\n\t\t\t\tlet closestDistance3d = Infinity;\n\t\t\t\tthis._elements.sort(this._sortHandler);\n\t\t\t\tfor(let i = 0, len = this._elements.length; i < len; i++){\n\t\t\t\t\t\tconst element = this._elements[i];\n\t\t\t\t\t\tif (!element.layers.some((v)=>camera.layersSet.has(v))) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (element.screen && element.screen.screen.screenSpace) {\n\t\t\t\t\t\t\t\tif (!rayScreen) {\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst currentDistance = this._checkElement(rayScreen, element, true);\n\t\t\t\t\t\t\t\tif (currentDistance >= 0) {\n\t\t\t\t\t\t\t\t\t\tresult = element;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (!ray3d) {\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst currentDistance = this._checkElement(ray3d, element, false);\n\t\t\t\t\t\t\t\tif (currentDistance >= 0) {\n\t\t\t\t\t\t\t\t\t\tif (currentDistance < closestDistance3d) {\n\t\t\t\t\t\t\t\t\t\t\t\tresult = element;\n\t\t\t\t\t\t\t\t\t\t\t\tclosestDistance3d = currentDistance;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (element.screen) {\n\t\t\t\t\t\t\t\t\t\t\t\tresult = element;\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t}\n\t\t_calculateRayScreen(x, y, camera, ray) {\n\t\t\t\tconst sw = this.app.graphicsDevice.width;\n\t\t\t\tconst sh = this.app.graphicsDevice.height;\n\t\t\t\tconst cameraWidth = camera.rect.z * sw;\n\t\t\t\tconst cameraHeight = camera.rect.w * sh;\n\t\t\t\tconst cameraLeft = camera.rect.x * sw;\n\t\t\t\tconst cameraRight = cameraLeft + cameraWidth;\n\t\t\t\tconst cameraBottom = (1 - camera.rect.y) * sh;\n\t\t\t\tconst cameraTop = cameraBottom - cameraHeight;\n\t\t\t\tlet _x = x * sw / this._target.clientWidth;\n\t\t\t\tlet _y = y * sh / this._target.clientHeight;\n\t\t\t\tif (_x >= cameraLeft && _x <= cameraRight && _y <= cameraBottom && _y >= cameraTop) {\n\t\t\t\t\t\t_x = sw * (_x - cameraLeft) / cameraWidth;\n\t\t\t\t\t\t_y = sh * (_y - cameraTop) / cameraHeight;\n\t\t\t\t\t\t_y = sh - _y;\n\t\t\t\t\t\tray.origin.set(_x, _y, 1);\n\t\t\t\t\t\tray.direction.set(0, 0, -1);\n\t\t\t\t\t\tray.end.copy(ray.direction).mulScalar(2).add(ray.origin);\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t}\n\t\t_calculateRay3d(x, y, camera, ray) {\n\t\t\t\tconst sw = this._target.clientWidth;\n\t\t\t\tconst sh = this._target.clientHeight;\n\t\t\t\tconst cameraWidth = camera.rect.z * sw;\n\t\t\t\tconst cameraHeight = camera.rect.w * sh;\n\t\t\t\tconst cameraLeft = camera.rect.x * sw;\n\t\t\t\tconst cameraRight = cameraLeft + cameraWidth;\n\t\t\t\tconst cameraBottom = (1 - camera.rect.y) * sh;\n\t\t\t\tconst cameraTop = cameraBottom - cameraHeight;\n\t\t\t\tlet _x = x;\n\t\t\t\tlet _y = y;\n\t\t\t\tif (x >= cameraLeft && x <= cameraRight && y <= cameraBottom && _y >= cameraTop) {\n\t\t\t\t\t\t_x = sw * (_x - cameraLeft) / cameraWidth;\n\t\t\t\t\t\t_y = sh * (_y - cameraTop) / cameraHeight;\n\t\t\t\t\t\tcamera.screenToWorld(_x, _y, camera.nearClip, vecA);\n\t\t\t\t\t\tcamera.screenToWorld(_x, _y, camera.farClip, vecB);\n\t\t\t\t\t\tray.origin.copy(vecA);\n\t\t\t\t\t\tray.direction.set(0, 0, -1);\n\t\t\t\t\t\tray.end.copy(vecB);\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t}\n\t\t_checkElement(ray, element, screen) {\n\t\t\t\tif (element.maskedBy) {\n\t\t\t\t\t\tif (this._checkElement(ray, element.maskedBy.element, screen) < 0) {\n\t\t\t\t\t\t\t\treturn -1;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tlet scale;\n\t\t\t\tif (screen) {\n\t\t\t\t\t\tscale = ElementInput.calculateScaleToScreen(element);\n\t\t\t\t} else {\n\t\t\t\t\t\tscale = ElementInput.calculateScaleToWorld(element);\n\t\t\t\t}\n\t\t\t\tconst corners = ElementInput.buildHitCorners(element, screen ? element.screenCorners : element.worldCorners, scale);\n\t\t\t\treturn intersectLineQuad(ray.origin, ray.end, corners);\n\t\t}\n\t\tstatic buildHitCorners(element, screenOrWorldCorners, scale) {\n\t\t\t\tlet hitCorners = screenOrWorldCorners;\n\t\t\t\tconst button = element.entity && element.entity.button;\n\t\t\t\tif (button) {\n\t\t\t\t\t\tconst hitPadding = element.entity.button.hitPadding || ZERO_VEC4;\n\t\t\t\t\t\t_paddingTop.copy(element.entity.up);\n\t\t\t\t\t\t_paddingBottom.copy(_paddingTop).mulScalar(-1);\n\t\t\t\t\t\t_paddingRight.copy(element.entity.right);\n\t\t\t\t\t\t_paddingLeft.copy(_paddingRight).mulScalar(-1);\n\t\t\t\t\t\t_paddingTop.mulScalar(hitPadding.w * scale.y);\n\t\t\t\t\t\t_paddingBottom.mulScalar(hitPadding.y * scale.y);\n\t\t\t\t\t\t_paddingRight.mulScalar(hitPadding.z * scale.x);\n\t\t\t\t\t\t_paddingLeft.mulScalar(hitPadding.x * scale.x);\n\t\t\t\t\t\t_cornerBottomLeft.copy(hitCorners[0]).add(_paddingBottom).add(_paddingLeft);\n\t\t\t\t\t\t_cornerBottomRight.copy(hitCorners[1]).add(_paddingBottom).add(_paddingRight);\n\t\t\t\t\t\t_cornerTopRight.copy(hitCorners[2]).add(_paddingTop).add(_paddingRight);\n\t\t\t\t\t\t_cornerTopLeft.copy(hitCorners[3]).add(_paddingTop).add(_paddingLeft);\n\t\t\t\t\t\thitCorners = [\n\t\t\t\t\t\t\t\t_cornerBottomLeft,\n\t\t\t\t\t\t\t\t_cornerBottomRight,\n\t\t\t\t\t\t\t\t_cornerTopRight,\n\t\t\t\t\t\t\t\t_cornerTopLeft\n\t\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t\tif (scale.x < 0) {\n\t\t\t\t\t\tconst left = hitCorners[2].x;\n\t\t\t\t\t\tconst right = hitCorners[0].x;\n\t\t\t\t\t\thitCorners[0].x = left;\n\t\t\t\t\t\thitCorners[1].x = right;\n\t\t\t\t\t\thitCorners[2].x = right;\n\t\t\t\t\t\thitCorners[3].x = left;\n\t\t\t\t}\n\t\t\t\tif (scale.y < 0) {\n\t\t\t\t\t\tconst bottom = hitCorners[2].y;\n\t\t\t\t\t\tconst top = hitCorners[0].y;\n\t\t\t\t\t\thitCorners[0].y = bottom;\n\t\t\t\t\t\thitCorners[1].y = bottom;\n\t\t\t\t\t\thitCorners[2].y = top;\n\t\t\t\t\t\thitCorners[3].y = top;\n\t\t\t\t}\n\t\t\t\tif (scale.z < 0) {\n\t\t\t\t\t\tconst x = hitCorners[2].x;\n\t\t\t\t\t\tconst y = hitCorners[2].y;\n\t\t\t\t\t\tconst z = hitCorners[2].z;\n\t\t\t\t\t\thitCorners[2].x = hitCorners[0].x;\n\t\t\t\t\t\thitCorners[2].y = hitCorners[0].y;\n\t\t\t\t\t\thitCorners[2].z = hitCorners[0].z;\n\t\t\t\t\t\thitCorners[0].x = x;\n\t\t\t\t\t\thitCorners[0].y = y;\n\t\t\t\t\t\thitCorners[0].z = z;\n\t\t\t\t}\n\t\t\t\treturn hitCorners;\n\t\t}\n\t\tstatic calculateScaleToScreen(element) {\n\t\t\t\tlet current = element.entity;\n\t\t\t\tconst screenScale = element.screen.screen.scale;\n\t\t\t\t_accumulatedScale.set(screenScale, screenScale, screenScale);\n\t\t\t\twhile(current && !current.screen){\n\t\t\t\t\t\t_accumulatedScale.mul(current.getLocalScale());\n\t\t\t\t\t\tcurrent = current.parent;\n\t\t\t\t}\n\t\t\t\treturn _accumulatedScale;\n\t\t}\n\t\tstatic calculateScaleToWorld(element) {\n\t\t\t\tlet current = element.entity;\n\t\t\t\t_accumulatedScale.set(1, 1, 1);\n\t\t\t\twhile(current){\n\t\t\t\t\t\t_accumulatedScale.mul(current.getLocalScale());\n\t\t\t\t\t\tcurrent = current.parent;\n\t\t\t\t}\n\t\t\t\treturn _accumulatedScale;\n\t\t}\n}\n\nVec2.prototype.scale = Vec2.prototype.mulScalar;\nVec3.prototype.scale = Vec3.prototype.mulScalar;\nVec4.prototype.scale = Vec4.prototype.mulScalar;\nconst PIXELFORMAT_L8_A8 = PIXELFORMAT_LA8;\nconst PIXELFORMAT_R5_G6_B5 = PIXELFORMAT_RGB565;\nconst PIXELFORMAT_R5_G5_B5_A1 = PIXELFORMAT_RGBA5551;\nconst PIXELFORMAT_R4_G4_B4_A4 = PIXELFORMAT_RGBA4;\nconst PIXELFORMAT_R8_G8_B8 = PIXELFORMAT_RGB8;\nconst PIXELFORMAT_R8_G8_B8_A8 = PIXELFORMAT_RGBA8;\nconst PIXELFORMAT_SRGB = PIXELFORMAT_SRGB8;\nconst PIXELFORMAT_SRGBA = PIXELFORMAT_SRGBA8;\nconst BLENDMODE_CONSTANT_COLOR = BLENDMODE_CONSTANT;\nconst BLENDMODE_ONE_MINUS_CONSTANT_COLOR = BLENDMODE_ONE_MINUS_CONSTANT;\nconst BLENDMODE_CONSTANT_ALPHA = BLENDMODE_CONSTANT;\nconst BLENDMODE_ONE_MINUS_CONSTANT_ALPHA = BLENDMODE_ONE_MINUS_CONSTANT;\nconst CHUNKAPI_1_51 = '1.51';\nconst CHUNKAPI_1_55 = '1.55';\nconst CHUNKAPI_1_56 = '1.56';\nconst CHUNKAPI_1_57 = '1.57';\nconst CHUNKAPI_1_58 = '1.58';\nconst CHUNKAPI_1_60 = '1.60';\nconst CHUNKAPI_1_62 = '1.62';\nconst CHUNKAPI_1_65 = '1.65';\nconst CHUNKAPI_1_70 = '1.70';\nconst CHUNKAPI_2_1 = '2.1';\nconst CHUNKAPI_2_3 = '2.3';\nconst CHUNKAPI_2_5 = '2.5';\nconst CHUNKAPI_2_6 = '2.6';\nconst CHUNKAPI_2_7 = '2.7';\nconst CHUNKAPI_2_8 = '2.8';\nconst _viewport = new Vec4();\nfunction createSphere(device, opts) {\n\t\treturn Mesh.fromGeometry(device, new SphereGeometry(opts));\n}\nfunction createPlane(device, opts) {\n\t\treturn Mesh.fromGeometry(device, new PlaneGeometry(opts));\n}\nfunction createBox(device, opts) {\n\t\treturn Mesh.fromGeometry(device, new BoxGeometry(opts));\n}\nfunction createTorus(device, opts) {\n\t\treturn Mesh.fromGeometry(device, new TorusGeometry(opts));\n}\nfunction createCapsule(device, opts) {\n\t\treturn Mesh.fromGeometry(device, new CapsuleGeometry(opts));\n}\nfunction createCone(device, opts) {\n\t\treturn Mesh.fromGeometry(device, new ConeGeometry(opts));\n}\nfunction createCylinder(device, opts) {\n\t\treturn Mesh.fromGeometry(device, new CylinderGeometry(opts));\n}\nfunction createMesh(device, positions, opts = {}) {\n\t\tconst geom = new Geometry();\n\t\tgeom.positions = positions;\n\t\tgeom.normals = opts.normals;\n\t\tgeom.tangents = opts.tangents;\n\t\tgeom.colors = opts.colors;\n\t\tgeom.uvs = opts.uvs;\n\t\tgeom.uvs1 = opts.uvs1;\n\t\tgeom.blendIndices = opts.blendIndices;\n\t\tgeom.blendWeights = opts.blendWeights;\n\t\tgeom.indices = opts.indices;\n\t\treturn Mesh.fromGeometry(device, geom, opts);\n}\nfunction drawFullscreenQuad(device, target, vertexBuffer, shader, rect) {\n\t\tlet viewport;\n\t\tif (rect) {\n\t\t\t\tconst w = target ? target.width : device.width;\n\t\t\t\tconst h = target ? target.height : device.height;\n\t\t\t\tviewport = _viewport.set(rect.x * w, rect.y * h, rect.z * w, rect.w * h);\n\t\t}\n\t\tdrawQuadWithShader(device, target, shader, viewport);\n}\nObject.defineProperties(RenderTarget.prototype, {\n\t\t_glFrameBuffer: {\n\t\t\t\tget: function() {\n\t\t\t\t\t\treturn this.impl._glFrameBuffer;\n\t\t\t\t},\n\t\t\t\tset: function(rgbm) {}\n\t\t}\n});\nObject.defineProperty(VertexFormat, 'defaultInstancingFormat', {\n\t\tget: function() {\n\t\t\t\treturn null;\n\t\t}\n});\nObject.defineProperties(Texture.prototype, {\n\t\trgbm: {\n\t\t\t\tget: function() {\n\t\t\t\t\t\treturn this.type === TEXTURETYPE_RGBM;\n\t\t\t\t},\n\t\t\t\tset: function(rgbm) {\n\t\t\t\t\t\tthis.type = rgbm ? TEXTURETYPE_RGBM : TEXTURETYPE_DEFAULT;\n\t\t\t\t}\n\t\t},\n\t\tswizzleGGGR: {\n\t\t\t\tget: function() {\n\t\t\t\t\t\treturn this.type === TEXTURETYPE_SWIZZLEGGGR;\n\t\t\t\t},\n\t\t\t\tset: function(swizzleGGGR) {\n\t\t\t\t\t\tthis.type = swizzleGGGR ? TEXTURETYPE_SWIZZLEGGGR : TEXTURETYPE_DEFAULT;\n\t\t\t\t}\n\t\t},\n\t\t_glTexture: {\n\t\t\t\tget: function() {\n\t\t\t\t\t\treturn this.impl._glTexture;\n\t\t\t\t}\n\t\t}\n});\nObject.defineProperty(GraphicsDevice.prototype, 'boneLimit', {\n\t\tget: function() {\n\t\t\t\treturn 1024;\n\t\t}\n});\nObject.defineProperty(GraphicsDevice.prototype, 'webgl2', {\n\t\tget: function() {\n\t\t\t\treturn this.isWebGL2;\n\t\t}\n});\nObject.defineProperty(GraphicsDevice.prototype, 'textureFloatHighPrecision', {\n\t\tget: function() {\n\t\t\t\treturn true;\n\t\t}\n});\nObject.defineProperty(GraphicsDevice.prototype, 'extBlendMinmax', {\n\t\tget: function() {\n\t\t\t\treturn true;\n\t\t}\n});\nObject.defineProperty(GraphicsDevice.prototype, 'extTextureHalfFloat', {\n\t\tget: function() {\n\t\t\t\treturn true;\n\t\t}\n});\nObject.defineProperty(GraphicsDevice.prototype, 'extTextureLod', {\n\t\tget: function() {\n\t\t\t\treturn true;\n\t\t}\n});\nObject.defineProperty(GraphicsDevice.prototype, 'textureHalfFloatFilterable', {\n\t\tget: function() {\n\t\t\t\treturn true;\n\t\t}\n});\nObject.defineProperty(GraphicsDevice.prototype, 'supportsMrt', {\n\t\tget: function() {\n\t\t\t\treturn true;\n\t\t}\n});\nObject.defineProperty(GraphicsDevice.prototype, 'supportsVolumeTextures', {\n\t\tget: function() {\n\t\t\t\treturn true;\n\t\t}\n});\nObject.defineProperty(GraphicsDevice.prototype, 'supportsInstancing', {\n\t\tget: function() {\n\t\t\t\treturn true;\n\t\t}\n});\nObject.defineProperty(GraphicsDevice.prototype, 'textureHalfFloatUpdatable', {\n\t\tget: function() {\n\t\t\t\treturn true;\n\t\t}\n});\nObject.defineProperty(GraphicsDevice.prototype, 'extTextureFloat', {\n\t\tget: function() {\n\t\t\t\treturn true;\n\t\t}\n});\nObject.defineProperty(GraphicsDevice.prototype, 'extStandardDerivatives', {\n\t\tget: function() {\n\t\t\t\treturn true;\n\t\t}\n});\nBlendState.DEFAULT = Object.freeze(new BlendState());\nconst _tempBlendState = new BlendState();\nconst _tempDepthState = new DepthState();\nGraphicsDevice.prototype.setBlendFunction = function(blendSrc, blendDst) {\n\t\tconst currentBlendState = this.blendState;\n\t\t_tempBlendState.copy(currentBlendState);\n\t\t_tempBlendState.setColorBlend(currentBlendState.colorOp, blendSrc, blendDst);\n\t\t_tempBlendState.setAlphaBlend(currentBlendState.alphaOp, blendSrc, blendDst);\n\t\tthis.setBlendState(_tempBlendState);\n};\nGraphicsDevice.prototype.setBlendFunctionSeparate = function(blendSrc, blendDst, blendSrcAlpha, blendDstAlpha) {\n\t\tconst currentBlendState = this.blendState;\n\t\t_tempBlendState.copy(currentBlendState);\n\t\t_tempBlendState.setColorBlend(currentBlendState.colorOp, blendSrc, blendDst);\n\t\t_tempBlendState.setAlphaBlend(currentBlendState.alphaOp, blendSrcAlpha, blendDstAlpha);\n\t\tthis.setBlendState(_tempBlendState);\n};\nGraphicsDevice.prototype.setBlendEquation = function(blendEquation) {\n\t\tconst currentBlendState = this.blendState;\n\t\t_tempBlendState.copy(currentBlendState);\n\t\t_tempBlendState.setColorBlend(blendEquation, currentBlendState.colorSrcFactor, currentBlendState.colorDstFactor);\n\t\t_tempBlendState.setAlphaBlend(blendEquation, currentBlendState.alphaSrcFactor, currentBlendState.alphaDstFactor);\n\t\tthis.setBlendState(_tempBlendState);\n};\nGraphicsDevice.prototype.setBlendEquationSeparate = function(blendEquation, blendAlphaEquation) {\n\t\tconst currentBlendState = this.blendState;\n\t\t_tempBlendState.copy(currentBlendState);\n\t\t_tempBlendState.setColorBlend(blendEquation, currentBlendState.colorSrcFactor, currentBlendState.colorDstFactor);\n\t\t_tempBlendState.setAlphaBlend(blendAlphaEquation, currentBlendState.alphaSrcFactor, currentBlendState.alphaDstFactor);\n\t\tthis.setBlendState(_tempBlendState);\n};\nGraphicsDevice.prototype.setColorWrite = function(redWrite, greenWrite, blueWrite, alphaWrite) {\n\t\tconst currentBlendState = this.blendState;\n\t\t_tempBlendState.copy(currentBlendState);\n\t\t_tempBlendState.setColorWrite(redWrite, greenWrite, blueWrite, alphaWrite);\n\t\tthis.setBlendState(_tempBlendState);\n};\nGraphicsDevice.prototype.getBlending = function() {\n\t\treturn this.blendState.blend;\n};\nGraphicsDevice.prototype.setBlending = function(blending) {\n\t\t_tempBlendState.copy(this.blendState);\n\t\t_tempBlendState.blend = blending;\n\t\tthis.setBlendState(_tempBlendState);\n};\nGraphicsDevice.prototype.setDepthWrite = function(write) {\n\t\t_tempDepthState.copy(this.depthState);\n\t\t_tempDepthState.write = write;\n\t\tthis.setDepthState(_tempDepthState);\n};\nGraphicsDevice.prototype.setDepthFunc = function(func) {\n\t\t_tempDepthState.copy(this.depthState);\n\t\t_tempDepthState.func = func;\n\t\tthis.setDepthState(_tempDepthState);\n};\nGraphicsDevice.prototype.setDepthTest = function(test) {\n\t\t_tempDepthState.copy(this.depthState);\n\t\t_tempDepthState.test = test;\n\t\tthis.setDepthState(_tempDepthState);\n};\nGraphicsDevice.prototype.getCullMode = function() {\n\t\treturn this.cullMode;\n};\nconst Key = AnimationKey;\nconst Node = AnimationNode;\nconst LitOptions = LitShaderOptions;\nconst shaderChunks = new Proxy({}, {\n\t\tget (target, prop) {\n\t\t\t\treturn ShaderChunks.get(getApplication().graphicsDevice, SHADERLANGUAGE_GLSL).get(prop);\n\t\t},\n\t\tset (target, prop, value) {\n\t\t\t\tShaderChunks.get(getApplication().graphicsDevice, SHADERLANGUAGE_GLSL).set(prop, value);\n\t\t\t\treturn true;\n\t\t}\n});\nObject.defineProperty(Scene.prototype, 'defaultMaterial', {\n\t\tget: function() {\n\t\t\t\treturn getDefaultMaterial(getApplication().graphicsDevice);\n\t\t}\n});\nObject.defineProperty(Scene.prototype, 'fogColor', {\n\t\tset: function(value) {\n\t\t\t\tthis.fog.color = value;\n\t\t},\n\t\tget: function() {\n\t\t\t\treturn this.fog.color;\n\t\t}\n});\nObject.defineProperty(Scene.prototype, 'fogEnd', {\n\t\tset: function(value) {\n\t\t\t\tthis.fog.end = value;\n\t\t},\n\t\tget: function() {\n\t\t\t\treturn this.fog.end;\n\t\t}\n});\nObject.defineProperty(Scene.prototype, 'fogStart', {\n\t\tset: function(value) {\n\t\t\t\tthis.fog.start = value;\n\t\t},\n\t\tget: function() {\n\t\t\t\treturn this.fog.start;\n\t\t}\n});\nObject.defineProperty(Scene.prototype, 'fogDensity', {\n\t\tset: function(value) {\n\t\t\t\tthis.fog.density = value;\n\t\t},\n\t\tget: function() {\n\t\t\t\treturn this.fog.density;\n\t\t}\n});\nObject.defineProperty(Scene.prototype, 'toneMapping', {\n\t\tset: function(value) {},\n\t\tget: function() {\n\t\t\t\treturn undefined;\n\t\t}\n});\nObject.defineProperty(Scene.prototype, 'gammaCorrection', {\n\t\tset: function(value) {},\n\t\tget: function() {\n\t\t\t\treturn undefined;\n\t\t}\n});\nObject.defineProperty(Scene.prototype, 'rendering', {\n\t\tset: function(value) {},\n\t\tget: function() {\n\t\t\t\treturn undefined;\n\t\t}\n});\nObject.defineProperty(LayerComposition.prototype, '_meshInstances', {\n\t\tget: function() {\n\t\t\t\treturn null;\n\t\t}\n});\nObject.defineProperty(Scene.prototype, 'drawCalls', {\n\t\tget: function() {\n\t\t\t\treturn null;\n\t\t}\n});\n[\n\t\t'128',\n\t\t'64',\n\t\t'32',\n\t\t'16',\n\t\t'8',\n\t\t'4'\n].forEach((size, index)=>{\n\t\tObject.defineProperty(Scene.prototype, `skyboxPrefiltered${size}`, {\n\t\t\t\tget: function() {\n\t\t\t\t\t\treturn this._prefilteredCubemaps[index];\n\t\t\t\t},\n\t\t\t\tset: function(value) {\n\t\t\t\t\t\tthis._prefilteredCubemaps[index] = value;\n\t\t\t\t\t\tthis.updateShaders = true;\n\t\t\t\t}\n\t\t});\n});\nObject.defineProperty(Scene.prototype, 'models', {\n\t\tget: function() {\n\t\t\t\tif (!this._models) {\n\t\t\t\t\t\tthis._models = [];\n\t\t\t\t}\n\t\t\t\treturn this._models;\n\t\t}\n});\nfunction _removedClassProperty(targetClass, name, comment = '') {\n\t\tObject.defineProperty(targetClass.prototype, name, {\n\t\t\t\tset: function(value) {},\n\t\t\t\tget: function() {\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t});\n}\n_removedClassProperty(Layer, 'renderTarget');\n_removedClassProperty(Layer, 'onPreCull');\n_removedClassProperty(Layer, 'onPreRender');\n_removedClassProperty(Layer, 'onPreRenderOpaque');\n_removedClassProperty(Layer, 'onPreRenderTransparent');\n_removedClassProperty(Layer, 'onPostCull');\n_removedClassProperty(Layer, 'onPostRender');\n_removedClassProperty(Layer, 'onPostRenderOpaque');\n_removedClassProperty(Layer, 'onPostRenderTransparent');\n_removedClassProperty(Layer, 'onDrawCall');\n_removedClassProperty(Layer, 'layerReference');\n_removedClassProperty(CameraComponent, 'onPreCull', 'Use Scene#EVENT_PRECULL event instead.');\n_removedClassProperty(CameraComponent, 'onPostCull', 'Use Scene#EVENT_POSTCULL event instead.');\n_removedClassProperty(CameraComponent, 'onPreRender', 'Use Scene#EVENT_PRERENDER event instead.');\n_removedClassProperty(CameraComponent, 'onPostRender', 'Use Scene#EVENT_POSTRENDER event instead.');\n_removedClassProperty(CameraComponent, 'onPreRenderLayer', 'Use Scene#EVENT_PRERENDER_LAYER event instead.');\n_removedClassProperty(CameraComponent, 'onPostRenderLayer', 'Use Scene#EVENT_POSTRENDER_LAYER event instead.');\nForwardRenderer.prototype.renderComposition = function(comp) {\n\t\tgetApplication().renderComposition(comp);\n};\nMeshInstance.prototype.syncAabb = function() {};\nMorph.prototype.getTarget = function(index) {\n\t\treturn this.targets[index];\n};\nGraphNode.prototype.getChildren = function() {\n\t\treturn this.children;\n};\nGraphNode.prototype.getName = function() {\n\t\treturn this.name;\n};\nGraphNode.prototype.getPath = function() {\n\t\treturn this.path;\n};\nGraphNode.prototype.getRoot = function() {\n\t\treturn this.root;\n};\nGraphNode.prototype.getParent = function() {\n\t\treturn this.parent;\n};\nGraphNode.prototype.setName = function(name) {\n\t\tthis.name = name;\n};\nObject.defineProperty(Material.prototype, 'shader', {\n\t\tset: function(value) {},\n\t\tget: function() {\n\t\t\t\treturn null;\n\t\t}\n});\nObject.defineProperty(Material.prototype, 'blend', {\n\t\tset: function(value) {\n\t\t\t\tthis.blendState.blend = value;\n\t\t},\n\t\tget: function() {\n\t\t\t\treturn this.blendState.blend;\n\t\t}\n});\nObject.defineProperty(StandardMaterial.prototype, 'shininess', {\n\t\tget: function() {\n\t\t\t\treturn this.gloss * 100;\n\t\t},\n\t\tset: function(value) {\n\t\t\t\tthis.gloss = value * 0.01;\n\t\t}\n});\nObject.defineProperty(StandardMaterial.prototype, 'useGammaTonemap', {\n\t\tget: function() {\n\t\t\t\treturn this.useTonemap;\n\t\t},\n\t\tset: function(value) {\n\t\t\t\tthis.useTonemap = value;\n\t\t}\n});\nObject.defineProperty(StandardMaterial.prototype, 'anisotropy', {\n\t\tget: function() {\n\t\t\t\tconst sign = Math.sign(Math.cos(this.anisotropyRotation * math.DEG_TO_RAD * 2));\n\t\t\t\treturn this.anisotropyIntensity * sign;\n\t\t},\n\t\tset: function(value) {\n\t\t\t\tthis.anisotropyIntensity = Math.abs(value);\n\t\t\t\tif (value >= 0) {\n\t\t\t\t\t\tthis.anisotropyRotation = 0;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.anisotropyRotation = 90;\n\t\t\t\t}\n\t\t}\n});\nfunction _defineAlias(newName, oldName) {\n\t\tObject.defineProperty(StandardMaterial.prototype, oldName, {\n\t\t\t\tget: function() {\n\t\t\t\t\t\treturn this[newName];\n\t\t\t\t},\n\t\t\t\tset: function(value) {\n\t\t\t\t\t\tthis[newName] = value;\n\t\t\t\t}\n\t\t});\n}\nfunction _deprecateTint(name) {\n\t\tObject.defineProperty(StandardMaterial.prototype, name, {\n\t\t\t\tget: function() {\n\t\t\t\t\t\treturn true;\n\t\t\t\t},\n\t\t\t\tset: function(value) {}\n\t\t});\n}\n_deprecateTint('sheenTint');\n_deprecateTint('diffuseTint');\n_deprecateTint('emissiveTint');\n_deprecateTint('ambientTint');\n_defineAlias('specularTint', 'specularMapTint');\n_defineAlias('aoVertexColor', 'aoMapVertexColor');\n_defineAlias('diffuseVertexColor', 'diffuseMapVertexColor');\n_defineAlias('specularVertexColor', 'specularMapVertexColor');\n_defineAlias('emissiveVertexColor', 'emissiveMapVertexColor');\n_defineAlias('metalnessVertexColor', 'metalnessMapVertexColor');\n_defineAlias('glossVertexColor', 'glossMapVertexColor');\n_defineAlias('opacityVertexColor', 'opacityMapVertexColor');\n_defineAlias('lightVertexColor', 'lightMapVertexColor');\n_defineAlias('sheenGloss', 'sheenGlossiess');\n_defineAlias('clearCoatGloss', 'clearCostGlossiness');\nfunction _defineOption(name, newName) {\n\t\tif (name !== 'pass') {\n\t\t\t\tObject.defineProperty(StandardMaterialOptions.prototype, name, {\n\t\t\t\t\t\tget: function() {\n\t\t\t\t\t\t\t\treturn this.litOptions[newName || name];\n\t\t\t\t\t\t},\n\t\t\t\t\t\tset: function(value) {\n\t\t\t\t\t\t\t\tthis.litOptions[newName || name] = value;\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n}\n_defineOption('refraction', 'useRefraction');\nconst tempOptions = new LitShaderOptions();\nconst litOptionProperties = Object.getOwnPropertyNames(tempOptions);\nfor(const litOption in litOptionProperties){\n\t\t_defineOption(litOptionProperties[litOption]);\n}\nAssetRegistry.prototype.getAssetById = function(id) {\n\t\treturn this.get(id);\n};\nObject.defineProperty(XrInputSource.prototype, 'ray', {\n\t\tget: function() {\n\t\t\t\treturn this._rayLocal;\n\t\t}\n});\nObject.defineProperty(XrInputSource.prototype, 'position', {\n\t\tget: function() {\n\t\t\t\treturn this._localPosition;\n\t\t}\n});\nObject.defineProperty(XrInputSource.prototype, 'rotation', {\n\t\tget: function() {\n\t\t\t\treturn this._localRotation;\n\t\t}\n});\nconst EVENT_KEYDOWN = 'keydown';\nconst EVENT_KEYUP = 'keyup';\nconst EVENT_MOUSEDOWN = 'mousedown';\nconst EVENT_MOUSEMOVE = 'mousemove';\nconst EVENT_MOUSEUP = 'mouseup';\nconst EVENT_MOUSEWHEEL = 'mousewheel';\nconst EVENT_TOUCHSTART = 'touchstart';\nconst EVENT_TOUCHEND = 'touchend';\nconst EVENT_TOUCHMOVE = 'touchmove';\nconst EVENT_TOUCHCANCEL = 'touchcancel';\nconst EVENT_GAMEPADCONNECTED = 'gamepadconnected';\nconst EVENT_GAMEPADDISCONNECTED = 'gamepaddisconnected';\nconst EVENT_SELECT = 'select';\nconst EVENT_SELECTSTART = 'selectstart';\nconst EVENT_SELECTEND = 'selectend';\nObject.defineProperty(ElementInput.prototype, 'wheel', {\n\t\tget: function() {\n\t\t\t\treturn this.wheelDelta * -2;\n\t\t}\n});\nObject.defineProperty(MouseEvent.prototype, 'wheel', {\n\t\tget: function() {\n\t\t\t\treturn this.wheelDelta * -2;\n\t\t}\n});\nconst RIGIDBODY_TYPE_STATIC = BODYTYPE_STATIC;\nconst RIGIDBODY_TYPE_DYNAMIC = BODYTYPE_DYNAMIC;\nconst RIGIDBODY_TYPE_KINEMATIC = BODYTYPE_KINEMATIC;\nconst RIGIDBODY_CF_STATIC_OBJECT = BODYFLAG_STATIC_OBJECT;\nconst RIGIDBODY_CF_KINEMATIC_OBJECT = BODYFLAG_KINEMATIC_OBJECT;\nconst RIGIDBODY_CF_NORESPONSE_OBJECT = BODYFLAG_NORESPONSE_OBJECT;\nconst RIGIDBODY_ACTIVE_TAG = BODYSTATE_ACTIVE_TAG;\nconst RIGIDBODY_ISLAND_SLEEPING = BODYSTATE_ISLAND_SLEEPING;\nconst RIGIDBODY_WANTS_DEACTIVATION = BODYSTATE_WANTS_DEACTIVATION;\nconst RIGIDBODY_DISABLE_DEACTIVATION = BODYSTATE_DISABLE_DEACTIVATION;\nconst RIGIDBODY_DISABLE_SIMULATION = BODYSTATE_DISABLE_SIMULATION;\nAppBase.prototype.isFullscreen = function() {\n\t\treturn !!document.fullscreenElement;\n};\nAppBase.prototype.enableFullscreen = function(element, success, error) {\n\t\telement = element || this.graphicsDevice.canvas;\n\t\tconst s = function() {\n\t\t\t\tsuccess();\n\t\t\t\tdocument.removeEventListener('fullscreenchange', s);\n\t\t};\n\t\tconst e = function() {\n\t\t\t\terror();\n\t\t\t\tdocument.removeEventListener('fullscreenerror', e);\n\t\t};\n\t\tif (success) {\n\t\t\t\tdocument.addEventListener('fullscreenchange', s, false);\n\t\t}\n\t\tif (error) {\n\t\t\t\tdocument.addEventListener('fullscreenerror', e, false);\n\t\t}\n\t\tif (element.requestFullscreen) {\n\t\t\t\telement.requestFullscreen(Element.ALLOW_KEYBOARD_INPUT);\n\t\t} else {\n\t\t\t\terror();\n\t\t}\n};\nAppBase.prototype.disableFullscreen = function(success) {\n\t\tconst s = function() {\n\t\t\t\tsuccess();\n\t\t\t\tdocument.removeEventListener('fullscreenchange', s);\n\t\t};\n\t\tif (success) {\n\t\t\t\tdocument.addEventListener('fullscreenchange', s, false);\n\t\t}\n\t\tdocument.exitFullscreen();\n};\nAppBase.prototype.getSceneUrl = function(name) {\n\t\tconst entry = this.scenes.find(name);\n\t\tif (entry) {\n\t\t\t\treturn entry.url;\n\t\t}\n\t\treturn null;\n};\nAppBase.prototype.loadScene = function(url, callback) {\n\t\tthis.scenes.loadScene(url, callback);\n};\nAppBase.prototype.loadSceneHierarchy = function(url, callback) {\n\t\tthis.scenes.loadSceneHierarchy(url, callback);\n};\nAppBase.prototype.loadSceneSettings = function(url, callback) {\n\t\tthis.scenes.loadSceneSettings(url, callback);\n};\nModelComponent.prototype.setVisible = function(visible) {\n\t\tthis.enabled = visible;\n};\nObject.defineProperty(RigidBodyComponent.prototype, 'bodyType', {\n\t\tget: function() {\n\t\t\t\treturn this.type;\n\t\t},\n\t\tset: function(type) {\n\t\t\t\tthis.type = type;\n\t\t}\n});\nRigidBodyComponent.prototype.syncBodyToEntity = function() {\n\t\tthis._updateDynamic();\n};\nRigidBodyComponentSystem.prototype.setGravity = function() {\n\t\tif (arguments.length === 1) {\n\t\t\t\tthis.gravity.copy(arguments[0]);\n\t\t} else {\n\t\t\t\tthis.gravity.set(arguments[0], arguments[1], arguments[2]);\n\t\t}\n};\n\nclass CpuTimer {\n\t\tconstructor(app){\n\t\t\t\tthis._frameIndex = 0;\n\t\t\t\tthis._frameTimings = [];\n\t\t\t\tthis._timings = [];\n\t\t\t\tthis._prevTimings = [];\n\t\t\t\tthis.unitsName = 'ms';\n\t\t\t\tthis.decimalPlaces = 1;\n\t\t\t\tthis.enabled = true;\n\t\t\t\tapp.on('frameupdate', this.begin.bind(this, 'update'));\n\t\t\t\tapp.on('framerender', this.mark.bind(this, 'render'));\n\t\t\t\tapp.on('frameend', this.mark.bind(this, 'other'));\n\t\t}\n\t\tbegin(name) {\n\t\t\t\tif (!this.enabled) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this._frameIndex < this._frameTimings.length) {\n\t\t\t\t\t\tthis._frameTimings.splice(this._frameIndex);\n\t\t\t\t}\n\t\t\t\tconst tmp = this._prevTimings;\n\t\t\t\tthis._prevTimings = this._timings;\n\t\t\t\tthis._timings = this._frameTimings;\n\t\t\t\tthis._frameTimings = tmp;\n\t\t\t\tthis._frameIndex = 0;\n\t\t\t\tthis.mark(name);\n\t\t}\n\t\tmark(name) {\n\t\t\t\tif (!this.enabled) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst timestamp = now();\n\t\t\t\tif (this._frameIndex > 0) {\n\t\t\t\t\t\tconst prev = this._frameTimings[this._frameIndex - 1];\n\t\t\t\t\t\tprev[1] = timestamp - prev[1];\n\t\t\t\t} else if (this._timings.length > 0) {\n\t\t\t\t\t\tconst prev = this._timings[this._timings.length - 1];\n\t\t\t\t\t\tprev[1] = timestamp - prev[1];\n\t\t\t\t}\n\t\t\t\tif (this._frameIndex >= this._frameTimings.length) {\n\t\t\t\t\t\tthis._frameTimings.push([\n\t\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\t\ttimestamp\n\t\t\t\t\t\t]);\n\t\t\t\t} else {\n\t\t\t\t\t\tconst timing = this._frameTimings[this._frameIndex];\n\t\t\t\t\t\ttiming[0] = name;\n\t\t\t\t\t\ttiming[1] = timestamp;\n\t\t\t\t}\n\t\t\t\tthis._frameIndex++;\n\t\t}\n\t\tget timings() {\n\t\t\t\treturn this._timings.slice(0, -1).map((v)=>v[1]);\n\t\t}\n}\n\nclass GpuTimer {\n\t\tconstructor(device){\n\t\t\t\tthis.device = device;\n\t\t\t\tif (device.gpuProfiler) {\n\t\t\t\t\t\tdevice.gpuProfiler.enabled = true;\n\t\t\t\t}\n\t\t\t\tthis.enabled = true;\n\t\t\t\tthis.unitsName = 'ms';\n\t\t\t\tthis.decimalPlaces = 1;\n\t\t\t\tthis._timings = [];\n\t\t}\n\t\tget timings() {\n\t\t\t\tthis._timings[0] = this.device.gpuProfiler?._frameTime ?? 0;\n\t\t\t\treturn this._timings;\n\t\t}\n}\n\nclass StatsTimer {\n\t\tconstructor(app, statNames, decimalPlaces, unitsName, multiplier){\n\t\t\t\tthis.app = app;\n\t\t\t\tthis.values = [];\n\t\t\t\tthis.statNames = statNames;\n\t\t\t\tif (this.statNames.length > 3) {\n\t\t\t\t\t\tthis.statNames.length = 3;\n\t\t\t\t}\n\t\t\t\tthis.unitsName = unitsName;\n\t\t\t\tthis.decimalPlaces = decimalPlaces;\n\t\t\t\tthis.multiplier = multiplier || 1;\n\t\t\t\tconst resolve = (path, obj)=>{\n\t\t\t\t\t\treturn path.split('.').reduce((prev, curr)=>{\n\t\t\t\t\t\t\t\treturn prev ? prev[curr] : null;\n\t\t\t\t\t\t}, obj || this);\n\t\t\t\t};\n\t\t\t\tapp.on('frameupdate', (ms)=>{\n\t\t\t\t\t\tfor(let i = 0; i < this.statNames.length; i++){\n\t\t\t\t\t\t\t\tthis.values[i] = resolve(this.statNames[i], this.app.stats) * this.multiplier;\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\tget timings() {\n\t\t\t\treturn this.values;\n\t\t}\n}\n\nclass Graph {\n\t\tconstructor(name, app, watermark, textRefreshRate, timer){\n\t\t\t\tthis.app = app;\n\t\t\t\tthis.name = name;\n\t\t\t\tthis.device = app.graphicsDevice;\n\t\t\t\tthis.timer = timer;\n\t\t\t\tthis.watermark = watermark;\n\t\t\t\tthis.enabled = false;\n\t\t\t\tthis.textRefreshRate = textRefreshRate;\n\t\t\t\tthis.avgTotal = 0;\n\t\t\t\tthis.avgTimer = 0;\n\t\t\t\tthis.avgCount = 0;\n\t\t\t\tthis.timingText = '';\n\t\t\t\tthis.texture = null;\n\t\t\t\tthis.yOffset = 0;\n\t\t\t\tthis.cursor = 0;\n\t\t\t\tthis.sample = new Uint8ClampedArray(4);\n\t\t\t\tthis.sample.set([\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t255\n\t\t\t\t]);\n\t\t\t\tthis.counter = 0;\n\t\t\t\tthis.app.on('frameupdate', this.update, this);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.app.off('frameupdate', this.update, this);\n\t\t}\n\t\tloseContext() {\n\t\t\t\tif (this.timer && typeof this.timer.loseContext === 'function') {\n\t\t\t\t\t\tthis.timer.loseContext();\n\t\t\t\t}\n\t\t}\n\t\tupdate(ms) {\n\t\t\t\tconst timings = this.timer.timings;\n\t\t\t\tconst total = timings.reduce((a, v)=>a + v, 0);\n\t\t\t\tthis.avgTotal += total;\n\t\t\t\tthis.avgTimer += ms;\n\t\t\t\tthis.avgCount++;\n\t\t\t\tif (this.avgTimer > this.textRefreshRate) {\n\t\t\t\t\t\tthis.timingText = (this.avgTotal / this.avgCount).toFixed(this.timer.decimalPlaces);\n\t\t\t\t\t\tthis.avgTimer = 0;\n\t\t\t\t\t\tthis.avgTotal = 0;\n\t\t\t\t\t\tthis.avgCount = 0;\n\t\t\t\t}\n\t\t\t\tif (this.enabled) {\n\t\t\t\t\t\tlet value = 0;\n\t\t\t\t\t\tconst range = 1.5 * this.watermark;\n\t\t\t\t\t\tfor(let i = 0; i < timings.length; ++i){\n\t\t\t\t\t\t\t\tvalue += Math.floor(timings[i] / range * 255);\n\t\t\t\t\t\t\t\tthis.sample[i] = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.sample[3] = this.watermark / range * 255;\n\t\t\t\t\t\tconst data = this.texture.lock();\n\t\t\t\t\t\tdata.set(this.sample, (this.cursor + this.yOffset * this.texture.width) * 4);\n\t\t\t\t\t\tthis.texture.unlock();\n\t\t\t\t\t\tthis.cursor++;\n\t\t\t\t\t\tif (this.cursor === this.texture.width) {\n\t\t\t\t\t\t\t\tthis.cursor = 0;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\trender(render2d, x, y, w, h) {\n\t\t\t\trender2d.quad(x + w, y, -w, h, this.enabled ? this.cursor : 0, this.enabled ? 0.5 + this.yOffset : this.texture.height - 1, -w, 0, this.texture, 0);\n\t\t}\n}\n\nclass WordAtlas {\n\t\tconstructor(device, words){\n\t\t\t\tconst initContext = (context)=>{\n\t\t\t\t\t\tcontext.font = '10px \"Lucida Console\", Monaco, monospace';\n\t\t\t\t\t\tcontext.textAlign = 'left';\n\t\t\t\t\t\tcontext.textBaseline = 'alphabetic';\n\t\t\t\t};\n\t\t\t\tconst isNumber = (word)=>{\n\t\t\t\t\t\treturn word === '.' || word.length === 1 && word.charCodeAt(0) >= 48 && word.charCodeAt(0) <= 57;\n\t\t\t\t};\n\t\t\t\tconst canvas = document.createElement('canvas');\n\t\t\t\tconst context = canvas.getContext('2d', {\n\t\t\t\t\t\talpha: true\n\t\t\t\t});\n\t\t\t\tinitContext(context);\n\t\t\t\tconst placements = new Map();\n\t\t\t\tconst padding = 5;\n\t\t\t\tconst width = 512;\n\t\t\t\tlet x = padding;\n\t\t\t\tlet y = padding;\n\t\t\t\twords.forEach((word)=>{\n\t\t\t\t\t\tconst measurement = context.measureText(word);\n\t\t\t\t\t\tconst l = Math.ceil(-measurement.actualBoundingBoxLeft);\n\t\t\t\t\t\tconst r = Math.ceil(measurement.actualBoundingBoxRight);\n\t\t\t\t\t\tconst a = Math.ceil(measurement.actualBoundingBoxAscent);\n\t\t\t\t\t\tconst d = Math.ceil(measurement.actualBoundingBoxDescent);\n\t\t\t\t\t\tconst w = l + r;\n\t\t\t\t\t\tconst h = a + d;\n\t\t\t\t\t\tif (x + w + padding >= width) {\n\t\t\t\t\t\t\t\tx = padding;\n\t\t\t\t\t\t\t\ty += 16;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tplacements.set(word, {\n\t\t\t\t\t\t\t\tl,\n\t\t\t\t\t\t\t\tr,\n\t\t\t\t\t\t\t\ta,\n\t\t\t\t\t\t\t\td,\n\t\t\t\t\t\t\t\tw,\n\t\t\t\t\t\t\t\th,\n\t\t\t\t\t\t\t\tx: x,\n\t\t\t\t\t\t\t\ty: y\n\t\t\t\t\t\t});\n\t\t\t\t\t\tx += w + padding;\n\t\t\t\t});\n\t\t\t\tcanvas.width = 512;\n\t\t\t\tcanvas.height = math.nextPowerOfTwo(y + 16 + padding);\n\t\t\t\tinitContext(context);\n\t\t\t\tcontext.fillStyle = 'rgb(0, 0, 0)';\n\t\t\t\tcontext.fillRect(0, 0, canvas.width, canvas.height);\n\t\t\t\tplacements.forEach((m, word)=>{\n\t\t\t\t\t\tcontext.fillStyle = isNumber(word) ? 'rgb(255, 255, 255)' : 'rgb(170, 170, 170)';\n\t\t\t\t\t\tcontext.fillText(word, m.x - m.l, m.y + m.a);\n\t\t\t\t});\n\t\t\t\tthis.placements = placements;\n\t\t\t\tconst data = context.getImageData(0, 0, canvas.width, canvas.height).data;\n\t\t\t\tfor(let i = 0; i < data.length; i += 4){\n\t\t\t\t\t\tdata[i + 3] = data[i + 0];\n\t\t\t\t\t\tdata[i + 0] = 255;\n\t\t\t\t\t\tdata[i + 1] = 255;\n\t\t\t\t\t\tdata[i + 2] = 255;\n\t\t\t\t}\n\t\t\t\tthis.texture = new Texture(device, {\n\t\t\t\t\t\tname: 'mini-stats-word-atlas',\n\t\t\t\t\t\twidth: canvas.width,\n\t\t\t\t\t\theight: canvas.height,\n\t\t\t\t\t\tmipmaps: false,\n\t\t\t\t\t\tminFilter: FILTER_NEAREST,\n\t\t\t\t\t\tmagFilter: FILTER_NEAREST,\n\t\t\t\t\t\tlevels: [\n\t\t\t\t\t\t\t\tdata\n\t\t\t\t\t\t]\n\t\t\t\t});\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.texture.destroy();\n\t\t\t\tthis.texture = null;\n\t\t}\n\t\trender(render2d, word, x, y) {\n\t\t\t\tconst p = this.placements.get(word);\n\t\t\t\tif (p) {\n\t\t\t\t\t\tconst padding = 1;\n\t\t\t\t\t\trender2d.quad(x + p.l - padding, y - p.d + padding, p.w + padding * 2, p.h + padding * 2, p.x - padding, this.texture.height - p.y - p.h - padding, undefined, undefined, this.texture, 1);\n\t\t\t\t\t\treturn p.w;\n\t\t\t\t}\n\t\t\t\treturn 0;\n\t\t}\n}\n\nconst vertexShaderGLSL = `\n\tattribute vec3 vertex_position;\n\tattribute vec4 vertex_texCoord0;\n\tvarying vec4 uv0;\n\tvarying float wordFlag;\n\tvoid main(void) {\n\t\tgl_Position = vec4(vertex_position.xy * 2.0 - 1.0, 0.5, 1.0);\n\t\tuv0 = vertex_texCoord0;\n\t\twordFlag = vertex_position.z;\n\t}\n`;\nconst vertexShaderWGSL = `\n\tattribute vertex_position: vec3f;\n\tattribute vertex_texCoord0: vec4f;\n\tvarying uv0: vec4f;\n\tvarying wordFlag: f32;\n\t@vertex fn vertexMain(input : VertexInput) -> VertexOutput {\n\t\tvar output : VertexOutput;\n\t\toutput.position = vec4(input.vertex_position.xy * 2.0 - 1.0, 0.5, 1.0);\n\t\toutput.uv0 = input.vertex_texCoord0;\n\t\toutput.wordFlag = input.vertex_position.z;\n\t\treturn output;\n\t}\n`;\nconst fragmentShaderGLSL = `\n\tvarying vec4 uv0;\n\tvarying float wordFlag;\n\tuniform vec4 clr;\n\tuniform sampler2D graphTex;\n\tuniform sampler2D wordsTex;\n\tvoid main (void) {\n\t\tvec4 graphSample = texture2D(graphTex, uv0.xy);\n\t\tvec4 graph;\n\t\tif (uv0.w < graphSample.r)\n\t\t\tgraph = vec4(0.7, 0.2, 0.2, 1.0);\n\t\telse if (uv0.w < graphSample.g)\n\t\t\tgraph = vec4(0.2, 0.7, 0.2, 1.0);\n\t\telse if (uv0.w < graphSample.b)\n\t\t\tgraph = vec4(0.2, 0.2, 0.7, 1.0);\n\t\telse\n\t\t\tgraph = vec4(0.0, 0.0, 0.0, 1.0 - 0.25 * sin(uv0.w * 3.14159));\n\t\tvec4 words = texture2D(wordsTex, vec2(uv0.x, 1.0 - uv0.y));\n\t\tgl_FragColor = mix(graph, words, wordFlag) * clr;\n\t}\n`;\nconst fragmentShaderWGSL = `\n\tvarying uv0: vec4f;\n\tvarying wordFlag: f32;\n\tuniform clr: vec4f;\n\tvar graphTex : texture_2d<f32>;\n\tvar graphTex_sampler : sampler;\n\tvar wordsTex : texture_2d<f32>;\n\tvar wordsTex_sampler : sampler;\n\t@fragment fn fragmentMain(input : FragmentInput) -> FragmentOutput {\n\t\tvar uv0: vec4f = input.uv0;\n\t\tvar graphSample: vec4f = textureSample(graphTex, graphTex_sampler, uv0.xy);\n\t\tvar graph: vec4f;\n\t\tif (uv0.w < graphSample.r) {\n\t\t\tgraph = vec4f(0.7, 0.2, 0.2, 1.0);\n\t\t} else if (uv0.w < graphSample.g) {\n\t\t\tgraph = vec4f(0.2, 0.7, 0.2, 1.0);\n\t\t} else if (uv0.w < graphSample.b) {\n\t\t\tgraph = vec4f(0.2, 0.2, 0.7, 1.0);\n\t\t} else {\n\t\t\tgraph = vec4f(0.0, 0.0, 0.0, 1.0 - 0.25 * sin(uv0.w * 3.14159));\n\t\t}\n\t\tvar words: vec4f = textureSample(wordsTex, wordsTex_sampler, vec2f(uv0.x, 1.0 - uv0.y));\n\t\tvar output: FragmentOutput;\n\t\toutput.color = mix(graph, words, input.wordFlag) * uniform.clr;\n\t\treturn output;\n\t}\n`;\nclass Render2d {\n\t\tconstructor(device, maxQuads = 512){\n\t\t\t\tconst format = new VertexFormat(device, [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tsemantic: SEMANTIC_POSITION,\n\t\t\t\t\t\t\t\tcomponents: 3,\n\t\t\t\t\t\t\t\ttype: TYPE_FLOAT32\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tsemantic: SEMANTIC_TEXCOORD0,\n\t\t\t\t\t\t\t\tcomponents: 4,\n\t\t\t\t\t\t\t\ttype: TYPE_FLOAT32\n\t\t\t\t\t\t}\n\t\t\t\t]);\n\t\t\t\tconst indices = new Uint16Array(maxQuads * 6);\n\t\t\t\tfor(let i = 0; i < maxQuads; ++i){\n\t\t\t\t\t\tindices[i * 6 + 0] = i * 4;\n\t\t\t\t\t\tindices[i * 6 + 1] = i * 4 + 1;\n\t\t\t\t\t\tindices[i * 6 + 2] = i * 4 + 2;\n\t\t\t\t\t\tindices[i * 6 + 3] = i * 4;\n\t\t\t\t\t\tindices[i * 6 + 4] = i * 4 + 2;\n\t\t\t\t\t\tindices[i * 6 + 5] = i * 4 + 3;\n\t\t\t\t}\n\t\t\t\tthis.device = device;\n\t\t\t\tthis.buffer = new VertexBuffer(device, format, maxQuads * 4, {\n\t\t\t\t\t\tusage: BUFFER_STREAM\n\t\t\t\t});\n\t\t\t\tthis.data = new Float32Array(this.buffer.numBytes / 4);\n\t\t\t\tthis.indexBuffer = new IndexBuffer(device, INDEXFORMAT_UINT16, maxQuads * 6, BUFFER_STATIC, indices);\n\t\t\t\tthis.prim = {\n\t\t\t\t\t\ttype: PRIMITIVE_TRIANGLES,\n\t\t\t\t\t\tindexed: true,\n\t\t\t\t\t\tbase: 0,\n\t\t\t\t\t\tbaseVertex: 0,\n\t\t\t\t\t\tcount: 0\n\t\t\t\t};\n\t\t\t\tthis.quads = 0;\n\t\t\t\tthis.mesh = new Mesh(device);\n\t\t\t\tthis.mesh.vertexBuffer = this.buffer;\n\t\t\t\tthis.mesh.indexBuffer[0] = this.indexBuffer;\n\t\t\t\tthis.mesh.primitive = [\n\t\t\t\t\t\tthis.prim\n\t\t\t\t];\n\t\t\t\tconst material = new ShaderMaterial({\n\t\t\t\t\t\tuniqueName: 'MiniStats',\n\t\t\t\t\t\tvertexGLSL: vertexShaderGLSL,\n\t\t\t\t\t\tfragmentGLSL: fragmentShaderGLSL,\n\t\t\t\t\t\tvertexWGSL: vertexShaderWGSL,\n\t\t\t\t\t\tfragmentWGSL: fragmentShaderWGSL,\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\tvertex_position: SEMANTIC_POSITION,\n\t\t\t\t\t\t\t\tvertex_texCoord0: SEMANTIC_TEXCOORD0\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tthis.material = material;\n\t\t\t\tmaterial.cull = CULLFACE_NONE;\n\t\t\t\tmaterial.depthState = DepthState.NODEPTH;\n\t\t\t\tmaterial.blendState = new BlendState(true, BLENDEQUATION_ADD, BLENDMODE_SRC_ALPHA, BLENDMODE_ONE_MINUS_SRC_ALPHA, BLENDEQUATION_ADD, BLENDMODE_ONE, BLENDMODE_ONE);\n\t\t\t\tmaterial.update();\n\t\t\t\tthis.meshInstance = new MeshInstance(this.mesh, material, new GraphNode('MiniStatsMesh'));\n\t\t\t\tthis.uniforms = {\n\t\t\t\t\t\tclr: new Float32Array(4)\n\t\t\t\t};\n\t\t\t\tthis.targetSize = {\n\t\t\t\t\t\twidth: device.width,\n\t\t\t\t\t\theight: device.height\n\t\t\t\t};\n\t\t}\n\t\tquad(x, y, w, h, u, v, uw, uh, texture, wordFlag = 0) {\n\t\t\t\tconst rw = this.targetSize.width;\n\t\t\t\tconst rh = this.targetSize.height;\n\t\t\t\tconst x0 = x / rw;\n\t\t\t\tconst y0 = y / rh;\n\t\t\t\tconst x1 = (x + w) / rw;\n\t\t\t\tconst y1 = (y + h) / rh;\n\t\t\t\tconst tw = texture.width;\n\t\t\t\tconst th = texture.height;\n\t\t\t\tconst u0 = u / tw;\n\t\t\t\tconst v0 = v / th;\n\t\t\t\tconst u1 = (u + (uw ?? w)) / tw;\n\t\t\t\tconst v1 = (v + (uh ?? h)) / th;\n\t\t\t\tthis.data.set([\n\t\t\t\t\t\tx0,\n\t\t\t\t\t\ty0,\n\t\t\t\t\t\twordFlag,\n\t\t\t\t\t\tu0,\n\t\t\t\t\t\tv0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\tx1,\n\t\t\t\t\t\ty0,\n\t\t\t\t\t\twordFlag,\n\t\t\t\t\t\tu1,\n\t\t\t\t\t\tv0,\n\t\t\t\t\t\t1,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\tx1,\n\t\t\t\t\t\ty1,\n\t\t\t\t\t\twordFlag,\n\t\t\t\t\t\tu1,\n\t\t\t\t\t\tv1,\n\t\t\t\t\t\t1,\n\t\t\t\t\t\t1,\n\t\t\t\t\t\tx0,\n\t\t\t\t\t\ty1,\n\t\t\t\t\t\twordFlag,\n\t\t\t\t\t\tu0,\n\t\t\t\t\t\tv1,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t1\n\t\t\t\t], 4 * 7 * this.quads);\n\t\t\t\tthis.quads++;\n\t\t\t\tthis.prim.count += 6;\n\t\t}\n\t\tstartFrame() {\n\t\t\t\tthis.quads = 0;\n\t\t\t\tthis.prim.count = 0;\n\t\t\t\tthis.targetSize.width = this.device.canvas.scrollWidth;\n\t\t\t\tthis.targetSize.height = this.device.canvas.scrollHeight;\n\t\t}\n\t\trender(app, layer, graphTexture, wordsTexture, clr, height) {\n\t\t\t\tthis.buffer.setData(this.data.buffer);\n\t\t\t\tthis.uniforms.clr.set(clr, 0);\n\t\t\t\tthis.material.setParameter('clr', this.uniforms.clr);\n\t\t\t\tthis.material.setParameter('graphTex', graphTexture);\n\t\t\t\tthis.material.setParameter('wordsTex', wordsTexture);\n\t\t\t\tapp.drawMeshInstance(this.meshInstance, layer);\n\t\t}\n}\n\nclass MiniStats {\n\t\tconstructor(app, options){\n\t\t\t\tconst device = app.graphicsDevice;\n\t\t\t\toptions = options || MiniStats.getDefaultOptions();\n\t\t\t\tthis.initGraphs(app, device, options);\n\t\t\t\tconst words = new Set([\n\t\t\t\t\t\t'',\n\t\t\t\t\t\t'ms',\n\t\t\t\t\t\t'0',\n\t\t\t\t\t\t'1',\n\t\t\t\t\t\t'2',\n\t\t\t\t\t\t'3',\n\t\t\t\t\t\t'4',\n\t\t\t\t\t\t'5',\n\t\t\t\t\t\t'6',\n\t\t\t\t\t\t'7',\n\t\t\t\t\t\t'8',\n\t\t\t\t\t\t'9',\n\t\t\t\t\t\t'.',\n\t\t\t\t\t\t'-'\n\t\t\t\t].concat(this.graphs.map((graph)=>graph.name)).concat(options.stats ? options.stats.map((stat)=>stat.unitsName) : []).filter((item)=>!!item));\n\t\t\t\tthis.wordAtlas = new WordAtlas(device, words);\n\t\t\t\tthis.sizes = options.sizes;\n\t\t\t\tthis._activeSizeIndex = options.startSizeIndex;\n\t\t\t\tconst div = document.createElement('div');\n\t\t\t\tdiv.setAttribute('id', 'mini-stats');\n\t\t\t\tdiv.style.cssText = 'position:fixed;bottom:0;left:0;background:transparent;';\n\t\t\t\tdocument.body.appendChild(div);\n\t\t\t\tdiv.addEventListener('mouseenter', (event)=>{\n\t\t\t\t\t\tthis.opacity = 1.0;\n\t\t\t\t});\n\t\t\t\tdiv.addEventListener('mouseleave', (event)=>{\n\t\t\t\t\t\tthis.opacity = 0.7;\n\t\t\t\t});\n\t\t\t\tdiv.addEventListener('click', (event)=>{\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tif (this._enabled) {\n\t\t\t\t\t\t\t\tthis.activeSizeIndex = (this.activeSizeIndex + 1) % this.sizes.length;\n\t\t\t\t\t\t\t\tthis.resize(this.sizes[this.activeSizeIndex].width, this.sizes[this.activeSizeIndex].height, this.sizes[this.activeSizeIndex].graphs);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tdevice.on('resizecanvas', this.updateDiv, this);\n\t\t\t\tdevice.on('losecontext', this.loseContext, this);\n\t\t\t\tapp.on('postrender', this.postRender, this);\n\t\t\t\tthis.app = app;\n\t\t\t\tthis.drawLayer = app.scene.layers.getLayerById(LAYERID_UI);\n\t\t\t\tthis.device = device;\n\t\t\t\tthis.render2d = new Render2d(device);\n\t\t\t\tthis.div = div;\n\t\t\t\tthis.width = 0;\n\t\t\t\tthis.height = 0;\n\t\t\t\tthis.gspacing = 2;\n\t\t\t\tthis.clr = [\n\t\t\t\t\t\t1,\n\t\t\t\t\t\t1,\n\t\t\t\t\t\t1,\n\t\t\t\t\t\t0.5\n\t\t\t\t];\n\t\t\t\tthis._enabled = true;\n\t\t\t\tthis.activeSizeIndex = this._activeSizeIndex;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.device.off('resizecanvas', this.updateDiv, this);\n\t\t\t\tthis.device.off('losecontext', this.loseContext, this);\n\t\t\t\tthis.app.off('postrender', this.postRender, this);\n\t\t\t\tthis.graphs.forEach((graph)=>graph.destroy());\n\t\t\t\tthis.wordAtlas.destroy();\n\t\t\t\tthis.texture.destroy();\n\t\t\t\tthis.div.remove();\n\t\t}\n\t\tstatic getDefaultOptions() {\n\t\t\t\treturn {\n\t\t\t\t\t\tsizes: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\twidth: 100,\n\t\t\t\t\t\t\t\t\t\theight: 16,\n\t\t\t\t\t\t\t\t\t\tspacing: 0,\n\t\t\t\t\t\t\t\t\t\tgraphs: false\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\twidth: 128,\n\t\t\t\t\t\t\t\t\t\theight: 32,\n\t\t\t\t\t\t\t\t\t\tspacing: 2,\n\t\t\t\t\t\t\t\t\t\tgraphs: true\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\twidth: 256,\n\t\t\t\t\t\t\t\t\t\theight: 64,\n\t\t\t\t\t\t\t\t\t\tspacing: 2,\n\t\t\t\t\t\t\t\t\t\tgraphs: true\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t],\n\t\t\t\t\t\tstartSizeIndex: 0,\n\t\t\t\t\t\ttextRefreshRate: 500,\n\t\t\t\t\t\tcpu: {\n\t\t\t\t\t\t\t\tenabled: true,\n\t\t\t\t\t\t\t\twatermark: 33\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgpu: {\n\t\t\t\t\t\t\t\tenabled: true,\n\t\t\t\t\t\t\t\twatermark: 33\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstats: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tname: 'Frame',\n\t\t\t\t\t\t\t\t\t\tstats: [\n\t\t\t\t\t\t\t\t\t\t\t\t'frame.ms'\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\tdecimalPlaces: 1,\n\t\t\t\t\t\t\t\t\t\tunitsName: 'ms',\n\t\t\t\t\t\t\t\t\t\twatermark: 33\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tname: 'DrawCalls',\n\t\t\t\t\t\t\t\t\t\tstats: [\n\t\t\t\t\t\t\t\t\t\t\t\t'drawCalls.total'\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\twatermark: 1000\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]\n\t\t\t\t};\n\t\t}\n\t\tset activeSizeIndex(value) {\n\t\t\t\tthis._activeSizeIndex = value;\n\t\t\t\tthis.gspacing = this.sizes[value].spacing;\n\t\t\t\tthis.resize(this.sizes[value].width, this.sizes[value].height, this.sizes[value].graphs);\n\t\t}\n\t\tget activeSizeIndex() {\n\t\t\t\treturn this._activeSizeIndex;\n\t\t}\n\t\tset opacity(value) {\n\t\t\t\tthis.clr[3] = value;\n\t\t}\n\t\tget opacity() {\n\t\t\t\treturn this.clr[3];\n\t\t}\n\t\tget overallHeight() {\n\t\t\t\tconst graphs = this.graphs;\n\t\t\t\tconst spacing = this.gspacing;\n\t\t\t\treturn this.height * graphs.length + spacing * (graphs.length - 1);\n\t\t}\n\t\tset enabled(value) {\n\t\t\t\tif (value !== this._enabled) {\n\t\t\t\t\t\tthis._enabled = value;\n\t\t\t\t\t\tfor(let i = 0; i < this.graphs.length; ++i){\n\t\t\t\t\t\t\t\tthis.graphs[i].enabled = value;\n\t\t\t\t\t\t\t\tthis.graphs[i].timer.enabled = value;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget enabled() {\n\t\t\t\treturn this._enabled;\n\t\t}\n\t\tinitGraphs(app, device, options) {\n\t\t\t\tthis.graphs = [];\n\t\t\t\tif (options.cpu.enabled) {\n\t\t\t\t\t\tconst timer = new CpuTimer(app);\n\t\t\t\t\t\tconst graph = new Graph('CPU', app, options.cpu.watermark, options.textRefreshRate, timer);\n\t\t\t\t\t\tthis.graphs.push(graph);\n\t\t\t\t}\n\t\t\t\tif (options.gpu.enabled) {\n\t\t\t\t\t\tconst timer = new GpuTimer(device);\n\t\t\t\t\t\tconst graph = new Graph('GPU', app, options.gpu.watermark, options.textRefreshRate, timer);\n\t\t\t\t\t\tthis.graphs.push(graph);\n\t\t\t\t}\n\t\t\t\tif (options.stats) {\n\t\t\t\t\t\toptions.stats.forEach((entry)=>{\n\t\t\t\t\t\t\t\tconst timer = new StatsTimer(app, entry.stats, entry.decimalPlaces, entry.unitsName, entry.multiplier);\n\t\t\t\t\t\t\t\tconst graph = new Graph(entry.name, app, entry.watermark, options.textRefreshRate, timer);\n\t\t\t\t\t\t\t\tthis.graphs.push(graph);\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tconst maxWidth = options.sizes.reduce((max, v)=>{\n\t\t\t\t\t\treturn v.width > max ? v.width : max;\n\t\t\t\t}, 0);\n\t\t\t\tthis.texture = new Texture(device, {\n\t\t\t\t\t\tname: 'mini-stats-graph-texture',\n\t\t\t\t\t\twidth: math.nextPowerOfTwo(maxWidth),\n\t\t\t\t\t\theight: math.nextPowerOfTwo(this.graphs.length),\n\t\t\t\t\t\tmipmaps: false,\n\t\t\t\t\t\tminFilter: FILTER_NEAREST,\n\t\t\t\t\t\tmagFilter: FILTER_NEAREST,\n\t\t\t\t\t\taddressU: ADDRESS_REPEAT,\n\t\t\t\t\t\taddressV: ADDRESS_REPEAT\n\t\t\t\t});\n\t\t\t\tthis.graphs.forEach((graph, i)=>{\n\t\t\t\t\t\tgraph.texture = this.texture;\n\t\t\t\t\t\tgraph.yOffset = i;\n\t\t\t\t});\n\t\t}\n\t\trender() {\n\t\t\t\tconst graphs = this.graphs;\n\t\t\t\tconst wordAtlas = this.wordAtlas;\n\t\t\t\tconst render2d = this.render2d;\n\t\t\t\tconst width = this.width;\n\t\t\t\tconst height = this.height;\n\t\t\t\tconst gspacing = this.gspacing;\n\t\t\t\trender2d.startFrame();\n\t\t\t\tfor(let i = 0; i < graphs.length; ++i){\n\t\t\t\t\t\tconst graph = graphs[i];\n\t\t\t\t\t\tlet y = i * (height + gspacing);\n\t\t\t\t\t\tgraph.render(render2d, 0, y, width, height);\n\t\t\t\t\t\tlet x = 1;\n\t\t\t\t\t\ty += height - 13;\n\t\t\t\t\t\tx += wordAtlas.render(render2d, graph.name, x, y) + 10;\n\t\t\t\t\t\tconst timingText = graph.timingText;\n\t\t\t\t\t\tfor(let j = 0; j < timingText.length; ++j){\n\t\t\t\t\t\t\t\tx += wordAtlas.render(render2d, timingText[j], x, y);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (graph.timer.unitsName) {\n\t\t\t\t\t\t\t\tx += 3;\n\t\t\t\t\t\t\t\twordAtlas.render(render2d, graph.timer.unitsName, x, y);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\trender2d.render(this.app, this.drawLayer, this.texture, this.wordAtlas.texture, this.clr, height);\n\t\t}\n\t\tresize(width, height, showGraphs) {\n\t\t\t\tconst graphs = this.graphs;\n\t\t\t\tfor(let i = 0; i < graphs.length; ++i){\n\t\t\t\t\t\tgraphs[i].enabled = showGraphs;\n\t\t\t\t}\n\t\t\t\tthis.width = width;\n\t\t\t\tthis.height = height;\n\t\t\t\tthis.updateDiv();\n\t\t}\n\t\tupdateDiv() {\n\t\t\t\tconst rect = this.device.canvas.getBoundingClientRect();\n\t\t\t\tthis.div.style.left = `${rect.left}px`;\n\t\t\t\tthis.div.style.bottom = `${window.innerHeight - rect.bottom}px`;\n\t\t\t\tthis.div.style.width = `${this.width}px`;\n\t\t\t\tthis.div.style.height = `${this.overallHeight}px`;\n\t\t}\n\t\tloseContext() {\n\t\t\t\tthis.graphs.forEach((graph)=>graph.loseContext());\n\t\t}\n\t\tpostRender() {\n\t\t\t\tif (this._enabled) {\n\t\t\t\t\t\tthis.render();\n\t\t\t\t}\n\t\t}\n}\n\nconst shaderOutlineExtendPS = `\n\tvarying vec2 vUv0;\n\tuniform vec2 uOffset;\n\tuniform float uSrcMultiplier;\n\tuniform sampler2D source;\n\tvoid main(void)\n\t{\n\t\tvec4 pixel;\n\t\tvec4 texel = texture2D(source, vUv0);\n\t\tvec4 firstTexel = texel;\n\t\tfloat diff = texel.a * uSrcMultiplier;\n\t\tpixel = texture2D(source, vUv0 + uOffset * -2.0);\n\t\ttexel = max(texel, pixel);\n\t\tdiff = max(diff, length(firstTexel.rgb - pixel.rgb));\n\t\tpixel = texture2D(source, vUv0 + uOffset * -1.0);\n\t\ttexel = max(texel, pixel);\n\t\tdiff = max(diff, length(firstTexel.rgb - pixel.rgb));\n\t\tpixel = texture2D(source, vUv0 + uOffset * 1.0);\n\t\ttexel = max(texel, pixel);\n\t\tdiff = max(diff, length(firstTexel.rgb - pixel.rgb));\n\t\tpixel = texture2D(source, vUv0 + uOffset * 2.0);\n\t\ttexel = max(texel, pixel);\n\t\tdiff = max(diff, length(firstTexel.rgb - pixel.rgb));\n\t   gl_FragColor = vec4(texel.rgb, min(diff, 1.0));\n\t}\n`;\nconst _tempFloatArray = new Float32Array(2);\nconst _tempColor = new Color();\nclass OutlineRenderer {\n\t\tconstructor(app, renderingLayer, priority = -1){\n\t\t\t\tthis.app = app;\n\t\t\t\tthis.renderingLayer = renderingLayer ?? app.scene.layers.getLayerByName('Immediate');\n\t\t\t\tthis.rt = this.createRenderTarget('OutlineTexture', 1, 1, true);\n\t\t\t\tthis.outlineCameraEntity = new Entity('OutlineCamera');\n\t\t\t\tthis.outlineCameraEntity.addComponent('camera', {\n\t\t\t\t\t\tlayers: [\n\t\t\t\t\t\t\t\tthis.renderingLayer.id\n\t\t\t\t\t\t],\n\t\t\t\t\t\tpriority: priority,\n\t\t\t\t\t\tclearColor: new Color(0, 0, 0, 0),\n\t\t\t\t\t\trenderTarget: this.rt\n\t\t\t\t});\n\t\t\t\tthis.outlineShaderPass = this.outlineCameraEntity.camera.setShaderPass('OutlineShaderPass');\n\t\t\t\tthis.postRender = (cameraComponent)=>{\n\t\t\t\t\t\tif (this.outlineCameraEntity.camera === cameraComponent) {\n\t\t\t\t\t\t\t\tthis.onPostRender();\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tapp.scene.on('postrender', this.postRender);\n\t\t\t\tthis.app.root.addChild(this.outlineCameraEntity);\n\t\t\t\tthis.tempRt = this.createRenderTarget('OutlineTempTexture', 1, 1, false);\n\t\t\t\tthis.blendState = new BlendState(true, BLENDEQUATION_ADD, BLENDMODE_SRC_ALPHA, BLENDMODE_ONE_MINUS_SRC_ALPHA);\n\t\t\t\tconst device = this.app.graphicsDevice;\n\t\t\t\tthis.shaderExtend = ShaderUtils.createShader(device, {\n\t\t\t\t\t\tuniqueName: 'OutlineExtendShader',\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\tvertex_position: SEMANTIC_POSITION\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvertexGLSL: ShaderChunks.get(device, SHADERLANGUAGE_GLSL).get('fullscreenQuadVS'),\n\t\t\t\t\t\tfragmentGLSL: shaderOutlineExtendPS\n\t\t\t\t});\n\t\t\t\tthis.shaderBlend = ShaderUtils.createShader(device, {\n\t\t\t\t\t\tuniqueName: 'OutlineBlendShader',\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\tvertex_position: SEMANTIC_POSITION\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvertexChunk: 'fullscreenQuadVS',\n\t\t\t\t\t\tfragmentChunk: 'outputTex2DPS'\n\t\t\t\t});\n\t\t\t\tthis.quadRenderer = new QuadRender(this.shaderBlend);\n\t\t\t\tthis.whiteTex = new Texture(device, {\n\t\t\t\t\t\tname: 'OutlineWhiteTexture',\n\t\t\t\t\t\twidth: 1,\n\t\t\t\t\t\theight: 1,\n\t\t\t\t\t\tformat: PIXELFORMAT_SRGBA8,\n\t\t\t\t\t\tmipmaps: false\n\t\t\t\t});\n\t\t\t\tconst pixels = this.whiteTex.lock();\n\t\t\t\tpixels.set(new Uint8Array([\n\t\t\t\t\t\t255,\n\t\t\t\t\t\t255,\n\t\t\t\t\t\t255,\n\t\t\t\t\t\t255\n\t\t\t\t]));\n\t\t\t\tthis.whiteTex.unlock();\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.whiteTex.destroy();\n\t\t\t\tthis.whiteTex = null;\n\t\t\t\tthis.outlineCameraEntity.destroy();\n\t\t\t\tthis.outlineCameraEntity = null;\n\t\t\t\tthis.rt.destroyTextureBuffers();\n\t\t\t\tthis.rt.destroy();\n\t\t\t\tthis.rt = null;\n\t\t\t\tthis.tempRt.destroyTextureBuffers();\n\t\t\t\tthis.tempRt.destroy();\n\t\t\t\tthis.tempRt = null;\n\t\t\t\tthis.app.scene.off('postrender', this.postRender);\n\t\t\t\tthis.quadRenderer?.destroy();\n\t\t\t\tthis.quadRenderer = null;\n\t\t}\n\t\tgetMeshInstances(entity, recursive) {\n\t\t\t\tconst meshInstances = [];\n\t\t\t\tif (entity) {\n\t\t\t\t\t\tconst renders = recursive ? entity.findComponents('render') : entity.render ? [\n\t\t\t\t\t\t\t\tentity.render\n\t\t\t\t\t\t] : [];\n\t\t\t\t\t\trenders.forEach((render)=>{\n\t\t\t\t\t\t\t\tif (render.meshInstances) {\n\t\t\t\t\t\t\t\t\t\tmeshInstances.push(...render.meshInstances);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t\tconst models = recursive ? entity.findComponents('model') : entity.model ? [\n\t\t\t\t\t\t\t\tentity.model\n\t\t\t\t\t\t] : [];\n\t\t\t\t\t\tmodels.forEach((model)=>{\n\t\t\t\t\t\t\t\tif (model.meshInstances) {\n\t\t\t\t\t\t\t\t\t\tmeshInstances.push(...model.meshInstances);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn meshInstances;\n\t\t}\n\t\taddEntity(entity, color, recursive = true) {\n\t\t\t\tconst meshInstances = this.getMeshInstances(entity, recursive);\n\t\t\t\tmeshInstances.forEach((meshInstance)=>{\n\t\t\t\t\t\tif (meshInstance.material instanceof StandardMaterial) {\n\t\t\t\t\t\t\t\tconst outlineShaderPass = this.outlineShaderPass;\n\t\t\t\t\t\t\t\tmeshInstance.material.onUpdateShader = (options)=>{\n\t\t\t\t\t\t\t\t\t\tif (options.pass === outlineShaderPass) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst opts = new StandardMaterialOptions();\n\t\t\t\t\t\t\t\t\t\t\t\topts.defines = options.defines;\n\t\t\t\t\t\t\t\t\t\t\t\topts.opacityMap = options.opacityMap;\n\t\t\t\t\t\t\t\t\t\t\t\topts.opacityMapUv = options.opacityMapUv;\n\t\t\t\t\t\t\t\t\t\t\t\topts.opacityMapChannel = options.opacityMapChannel;\n\t\t\t\t\t\t\t\t\t\t\t\topts.opacityMapTransform = options.opacityMapTransform;\n\t\t\t\t\t\t\t\t\t\t\t\topts.opacityVertexColor = options.opacityVertexColor;\n\t\t\t\t\t\t\t\t\t\t\t\topts.opacityVertexColorChannel = options.opacityVertexColorChannel;\n\t\t\t\t\t\t\t\t\t\t\t\topts.litOptions.vertexColors = options.litOptions.vertexColors;\n\t\t\t\t\t\t\t\t\t\t\t\topts.litOptions.alphaTest = options.litOptions.alphaTest;\n\t\t\t\t\t\t\t\t\t\t\t\topts.litOptions.skin = options.litOptions.skin;\n\t\t\t\t\t\t\t\t\t\t\t\topts.litOptions.batch = options.litOptions.batch;\n\t\t\t\t\t\t\t\t\t\t\t\topts.litOptions.useInstancing = options.litOptions.useInstancing;\n\t\t\t\t\t\t\t\t\t\t\t\topts.litOptions.useMorphPosition = options.litOptions.useMorphPosition;\n\t\t\t\t\t\t\t\t\t\t\t\topts.litOptions.useMorphNormal = options.litOptions.useMorphNormal;\n\t\t\t\t\t\t\t\t\t\t\t\topts.litOptions.useMorphTextureBasedInt = options.litOptions.useMorphTextureBasedInt;\n\t\t\t\t\t\t\t\t\t\t\t\topts.litOptions.opacityFadesSpecular = options.litOptions.opacityFadesSpecular;\n\t\t\t\t\t\t\t\t\t\t\t\treturn opts;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\treturn options;\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t_tempColor.linear(color);\n\t\t\t\t\t\t\t\tconst colArray = new Float32Array([\n\t\t\t\t\t\t\t\t\t\t_tempColor.r,\n\t\t\t\t\t\t\t\t\t\t_tempColor.g,\n\t\t\t\t\t\t\t\t\t\t_tempColor.b\n\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t\t\tmeshInstance.setParameter('material_emissive', colArray, 1 << this.outlineShaderPass);\n\t\t\t\t\t\t\t\tmeshInstance.setParameter('texture_emissiveMap', this.whiteTex, 1 << this.outlineShaderPass);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tthis.renderingLayer.addMeshInstances(meshInstances, true);\n\t\t}\n\t\tremoveEntity(entity, recursive = true) {\n\t\t\t\tconst meshInstances = this.getMeshInstances(entity, recursive);\n\t\t\t\tthis.renderingLayer.removeMeshInstances(meshInstances);\n\t\t\t\tmeshInstances.forEach((meshInstance)=>{\n\t\t\t\t\t\tif (meshInstance.material instanceof StandardMaterial) {\n\t\t\t\t\t\t\t\tmeshInstance.material.onUpdateShader = null;\n\t\t\t\t\t\t\t\tmeshInstance.deleteParameter('material_emissive');\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\tremoveAllEntities() {\n\t\t\t\tthis.renderingLayer.clearMeshInstances();\n\t\t}\n\t\tblendOutlines() {\n\t\t\t\tconst device = this.app.graphicsDevice;\n\t\t\t\tdevice.scope.resolve('source').setValue(this.rt.colorBuffer);\n\t\t\t\tdevice.setDepthState(DepthState.NODEPTH);\n\t\t\t\tdevice.setCullMode(CULLFACE_NONE);\n\t\t\t\tdevice.setBlendState(this.blendState);\n\t\t\t\tthis.quadRenderer.render();\n\t\t}\n\t\tonPostRender() {\n\t\t\t\tconst device = this.app.graphicsDevice;\n\t\t\t\tconst uOffset = device.scope.resolve('uOffset');\n\t\t\t\tconst uColorBuffer = device.scope.resolve('source');\n\t\t\t\tconst uSrcMultiplier = device.scope.resolve('uSrcMultiplier');\n\t\t\t\tconst { rt, tempRt, shaderExtend } = this;\n\t\t\t\tconst { width, height } = rt;\n\t\t\t\t_tempFloatArray[0] = 1.0 / width / 2.0;\n\t\t\t\t_tempFloatArray[1] = 0;\n\t\t\t\tuOffset.setValue(_tempFloatArray);\n\t\t\t\tuColorBuffer.setValue(rt.colorBuffer);\n\t\t\t\tuSrcMultiplier.setValue(0.0);\n\t\t\t\tdrawQuadWithShader(device, tempRt, shaderExtend);\n\t\t\t\t_tempFloatArray[0] = 0;\n\t\t\t\t_tempFloatArray[1] = 1.0 / height / 2.0;\n\t\t\t\tuOffset.setValue(_tempFloatArray);\n\t\t\t\tuColorBuffer.setValue(tempRt.colorBuffer);\n\t\t\t\tuSrcMultiplier.setValue(1.0);\n\t\t\t\tdrawQuadWithShader(device, rt, shaderExtend);\n\t\t}\n\t\tcreateRenderTarget(name, width, height, depth) {\n\t\t\t\tconst texture = new Texture(this.app.graphicsDevice, {\n\t\t\t\t\t\tname: name,\n\t\t\t\t\t\twidth: width,\n\t\t\t\t\t\theight: height,\n\t\t\t\t\t\tformat: PIXELFORMAT_SRGBA8,\n\t\t\t\t\t\tmipmaps: false,\n\t\t\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\tminFilter: FILTER_LINEAR_MIPMAP_LINEAR,\n\t\t\t\t\t\tmagFilter: FILTER_LINEAR\n\t\t\t\t});\n\t\t\t\treturn new RenderTarget({\n\t\t\t\t\t\tcolorBuffer: texture,\n\t\t\t\t\t\tdepth: depth,\n\t\t\t\t\t\tflipY: this.app.graphicsDevice.isWebGPU\n\t\t\t\t});\n\t\t}\n\t\tupdateRenderTarget(sceneCamera) {\n\t\t\t\tconst width = sceneCamera.renderTarget?.width ?? this.app.graphicsDevice.width;\n\t\t\t\tconst height = sceneCamera.renderTarget?.height ?? this.app.graphicsDevice.height;\n\t\t\t\tconst outlineCamera = this.outlineCameraEntity.camera;\n\t\t\t\tif (!outlineCamera.renderTarget || outlineCamera.renderTarget.width !== width || outlineCamera.renderTarget.height !== height) {\n\t\t\t\t\t\tthis.rt.resize(width, height);\n\t\t\t\t\t\tthis.tempRt.resize(width, height);\n\t\t\t\t}\n\t\t}\n\t\tframeUpdate(sceneCameraEntity, blendLayer, blendLayerTransparent) {\n\t\t\t\tconst sceneCamera = sceneCameraEntity.camera;\n\t\t\t\tthis.updateRenderTarget(sceneCamera);\n\t\t\t\tconst evt = this.app.scene.on('prerender:layer', (cameraComponent, layer, transparent)=>{\n\t\t\t\t\t\tif (sceneCamera === cameraComponent && transparent === blendLayerTransparent && layer === blendLayer) {\n\t\t\t\t\t\t\t\tthis.blendOutlines();\n\t\t\t\t\t\t\t\tevt.off();\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tthis.outlineCameraEntity.setLocalPosition(sceneCameraEntity.getPosition());\n\t\t\t\tthis.outlineCameraEntity.setLocalRotation(sceneCameraEntity.getRotation());\n\t\t\t\tconst outlineCamera = this.outlineCameraEntity.camera;\n\t\t\t\toutlineCamera.projection = sceneCamera.projection;\n\t\t\t\toutlineCamera.horizontalFov = sceneCamera.horizontalFov;\n\t\t\t\toutlineCamera.fov = sceneCamera.fov;\n\t\t\t\toutlineCamera.orthoHeight = sceneCamera.orthoHeight;\n\t\t\t\toutlineCamera.nearClip = sceneCamera.nearClip;\n\t\t\t\toutlineCamera.farClip = sceneCamera.farClip;\n\t\t}\n}\n\nclass CoreExporter {\n\t\tconstructor(){}\n\t\ttextureToCanvas(texture, options = {}) {\n\t\t\t\tconst image = texture.getSource();\n\t\t\t\tif (typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement || typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement || typeof OffscreenCanvas !== 'undefined' && image instanceof OffscreenCanvas || typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap) {\n\t\t\t\t\t\tconst { width, height } = this.calcTextureSize(image.width, image.height, options.maxTextureSize);\n\t\t\t\t\t\tconst canvas = document.createElement('canvas');\n\t\t\t\t\t\tcanvas.width = width;\n\t\t\t\t\t\tcanvas.height = height;\n\t\t\t\t\t\tconst context = canvas.getContext('2d');\n\t\t\t\t\t\tif (context === null) {\n\t\t\t\t\t\t\t\treturn Promise.resolve(undefined);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcontext.drawImage(image, 0, 0, canvas.width, canvas.height);\n\t\t\t\t\t\tif (options.color) {\n\t\t\t\t\t\t\t\tconst { r, g, b } = options.color;\n\t\t\t\t\t\t\t\tconst imagedata = context.getImageData(0, 0, width, height);\n\t\t\t\t\t\t\t\tconst data = imagedata.data;\n\t\t\t\t\t\t\t\tfor(let i = 0; i < data.length; i += 4){\n\t\t\t\t\t\t\t\t\t\tdata[i + 0] = data[i + 0] * r;\n\t\t\t\t\t\t\t\t\t\tdata[i + 1] = data[i + 1] * g;\n\t\t\t\t\t\t\t\t\t\tdata[i + 2] = data[i + 2] * b;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcontext.putImageData(imagedata, 0, 0);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn Promise.resolve(canvas);\n\t\t\t\t}\n\t\t\t\tconst device = texture.device;\n\t\t\t\tconst { width, height } = this.calcTextureSize(texture.width, texture.height, options.maxTextureSize);\n\t\t\t\tconst format = isCompressedPixelFormat(texture.format) ? PIXELFORMAT_RGBA8 : texture.format;\n\t\t\t\tconst dstTexture = new Texture(device, {\n\t\t\t\t\t\tname: 'ExtractedTexture',\n\t\t\t\t\t\twidth,\n\t\t\t\t\t\theight,\n\t\t\t\t\t\tformat: format,\n\t\t\t\t\t\tcubemap: false,\n\t\t\t\t\t\tmipmaps: false,\n\t\t\t\t\t\tminFilter: FILTER_LINEAR,\n\t\t\t\t\t\tmagFilter: FILTER_LINEAR,\n\t\t\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE\n\t\t\t\t});\n\t\t\t\tconst renderTarget = new RenderTarget({\n\t\t\t\t\t\tcolorBuffer: dstTexture,\n\t\t\t\t\t\tdepth: false\n\t\t\t\t});\n\t\t\t\tconst shader = ShaderUtils.createShader(device, {\n\t\t\t\t\t\tuniqueName: 'ShaderCoreExporterBlit',\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\tvertex_position: SEMANTIC_POSITION\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvertexChunk: 'fullscreenQuadVS',\n\t\t\t\t\t\tfragmentChunk: 'outputTex2DPS'\n\t\t\t\t});\n\t\t\t\tdevice.scope.resolve('source').setValue(texture);\n\t\t\t\tdevice.setBlendState(BlendState.NOBLEND);\n\t\t\t\tdrawQuadWithShader(device, renderTarget, shader);\n\t\t\t\treturn dstTexture.read(0, 0, width, height, {\n\t\t\t\t\t\trenderTarget: renderTarget,\n\t\t\t\t\t\timmediate: true\n\t\t\t\t}).then((textureData)=>{\n\t\t\t\t\t\tdstTexture.destroy();\n\t\t\t\t\t\trenderTarget.destroy();\n\t\t\t\t\t\tconst pixels = new Uint8ClampedArray(width * height * 4);\n\t\t\t\t\t\tpixels.set(textureData);\n\t\t\t\t\t\tconst newImage = new ImageData(pixels, width, height);\n\t\t\t\t\t\tconst canvas = document.createElement('canvas');\n\t\t\t\t\t\tcanvas.width = width;\n\t\t\t\t\t\tcanvas.height = height;\n\t\t\t\t\t\tconst newContext = canvas.getContext('2d');\n\t\t\t\t\t\tif (!newContext) {\n\t\t\t\t\t\t\t\treturn Promise.resolve(undefined);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnewContext.putImageData(newImage, 0, 0);\n\t\t\t\t\t\treturn Promise.resolve(canvas);\n\t\t\t\t});\n\t\t}\n\t\tcalcTextureSize(width, height, maxTextureSize) {\n\t\t\t\tif (maxTextureSize) {\n\t\t\t\t\t\tconst scale = Math.min(maxTextureSize / Math.max(width, height), 1);\n\t\t\t\t\t\twidth = Math.round(width * scale);\n\t\t\t\t\t\theight = Math.round(height * scale);\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\t\twidth,\n\t\t\t\t\t\theight\n\t\t\t\t};\n\t\t}\n}\n\nvar u8 = Uint8Array, u16 = Uint16Array, i32 = Int32Array;\nvar fleb = new u8([\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t1,\n\t\t1,\n\t\t1,\n\t\t1,\n\t\t2,\n\t\t2,\n\t\t2,\n\t\t2,\n\t\t3,\n\t\t3,\n\t\t3,\n\t\t3,\n\t\t4,\n\t\t4,\n\t\t4,\n\t\t4,\n\t\t5,\n\t\t5,\n\t\t5,\n\t\t5,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0\n]);\nvar fdeb = new u8([\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t1,\n\t\t1,\n\t\t2,\n\t\t2,\n\t\t3,\n\t\t3,\n\t\t4,\n\t\t4,\n\t\t5,\n\t\t5,\n\t\t6,\n\t\t6,\n\t\t7,\n\t\t7,\n\t\t8,\n\t\t8,\n\t\t9,\n\t\t9,\n\t\t10,\n\t\t10,\n\t\t11,\n\t\t11,\n\t\t12,\n\t\t12,\n\t\t13,\n\t\t13,\n\t\t0,\n\t\t0\n]);\nvar clim = new u8([\n\t\t16,\n\t\t17,\n\t\t18,\n\t\t0,\n\t\t8,\n\t\t7,\n\t\t9,\n\t\t6,\n\t\t10,\n\t\t5,\n\t\t11,\n\t\t4,\n\t\t12,\n\t\t3,\n\t\t13,\n\t\t2,\n\t\t14,\n\t\t1,\n\t\t15\n]);\nvar freb = function(eb, start) {\n\t\tvar b = new u16(31);\n\t\tfor(var i = 0; i < 31; ++i){\n\t\t\t\tb[i] = start += 1 << eb[i - 1];\n\t\t}\n\t\tvar r = new i32(b[30]);\n\t\tfor(var i = 1; i < 30; ++i){\n\t\t\t\tfor(var j = b[i]; j < b[i + 1]; ++j){\n\t\t\t\t\t\tr[j] = j - b[i] << 5 | i;\n\t\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\t\tb: b,\n\t\t\t\tr: r\n\t\t};\n};\nvar _a = freb(fleb, 2), fl = _a.b, revfl = _a.r;\nfl[28] = 258, revfl[258] = 28;\nvar _b = freb(fdeb, 0), revfd = _b.r;\nvar rev = new u16(32768);\nfor(var i = 0; i < 32768; ++i){\n\t\tvar x = (i & 0xAAAA) >> 1 | (i & 0x5555) << 1;\n\t\tx = (x & 0xCCCC) >> 2 | (x & 0x3333) << 2;\n\t\tx = (x & 0xF0F0) >> 4 | (x & 0x0F0F) << 4;\n\t\trev[i] = ((x & 0xFF00) >> 8 | (x & 0x00FF) << 8) >> 1;\n}\nvar hMap = function(cd, mb, r) {\n\t\tvar s = cd.length;\n\t\tvar i = 0;\n\t\tvar l = new u16(mb);\n\t\tfor(; i < s; ++i){\n\t\t\t\tif (cd[i]) ++l[cd[i] - 1];\n\t\t}\n\t\tvar le = new u16(mb);\n\t\tfor(i = 1; i < mb; ++i){\n\t\t\t\tle[i] = le[i - 1] + l[i - 1] << 1;\n\t\t}\n\t\tvar co;\n\t\tif (r) {\n\t\t\t\tco = new u16(1 << mb);\n\t\t\t\tvar rvb = 15 - mb;\n\t\t\t\tfor(i = 0; i < s; ++i){\n\t\t\t\t\t\tif (cd[i]) {\n\t\t\t\t\t\t\t\tvar sv = i << 4 | cd[i];\n\t\t\t\t\t\t\t\tvar r_1 = mb - cd[i];\n\t\t\t\t\t\t\t\tvar v = le[cd[i] - 1]++ << r_1;\n\t\t\t\t\t\t\t\tfor(var m = v | (1 << r_1) - 1; v <= m; ++v){\n\t\t\t\t\t\t\t\t\t\tco[rev[v] >> rvb] = sv;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t} else {\n\t\t\t\tco = new u16(s);\n\t\t\t\tfor(i = 0; i < s; ++i){\n\t\t\t\t\t\tif (cd[i]) {\n\t\t\t\t\t\t\t\tco[i] = rev[le[cd[i] - 1]++] >> 15 - cd[i];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\treturn co;\n};\nvar flt = new u8(288);\nfor(var i = 0; i < 144; ++i)flt[i] = 8;\nfor(var i = 144; i < 256; ++i)flt[i] = 9;\nfor(var i = 256; i < 280; ++i)flt[i] = 7;\nfor(var i = 280; i < 288; ++i)flt[i] = 8;\nvar fdt = new u8(32);\nfor(var i = 0; i < 32; ++i)fdt[i] = 5;\nvar flm = hMap(flt, 9, 0); hMap(flt, 9, 1);\nvar fdm = hMap(fdt, 5, 0); hMap(fdt, 5, 1);\nvar shft = function(p) {\n\t\treturn (p + 7) / 8 | 0;\n};\nvar slc = function(v, s, e) {\n\t\tif (e == null || e > v.length) e = v.length;\n\t\treturn new u8(v.subarray(s, e));\n};\nvar ec = [\n\t\t'unexpected EOF',\n\t\t'invalid block type',\n\t\t'invalid length/literal',\n\t\t'invalid distance',\n\t\t'stream finished',\n\t\t'no stream handler',\n\t\t,\n\t\t'no callback',\n\t\t'invalid UTF-8 data',\n\t\t'extra field too long',\n\t\t'date not in range 1980-2099',\n\t\t'filename too long',\n\t\t'stream finishing',\n\t\t'invalid zip data'\n];\nvar err = function(ind, msg, nt) {\n\t\tvar e = new Error(msg || ec[ind]);\n\t\te.code = ind;\n\t\tif (Error.captureStackTrace) Error.captureStackTrace(e, err);\n\t\tif (!nt) throw e;\n\t\treturn e;\n};\nvar wbits = function(d, p, v) {\n\t\tv <<= p & 7;\n\t\tvar o = p / 8 | 0;\n\t\td[o] |= v;\n\t\td[o + 1] |= v >> 8;\n};\nvar wbits16 = function(d, p, v) {\n\t\tv <<= p & 7;\n\t\tvar o = p / 8 | 0;\n\t\td[o] |= v;\n\t\td[o + 1] |= v >> 8;\n\t\td[o + 2] |= v >> 16;\n};\nvar hTree = function(d, mb) {\n\t\tvar t = [];\n\t\tfor(var i = 0; i < d.length; ++i){\n\t\t\t\tif (d[i]) t.push({\n\t\t\t\t\t\ts: i,\n\t\t\t\t\t\tf: d[i]\n\t\t\t\t});\n\t\t}\n\t\tvar s = t.length;\n\t\tvar t2 = t.slice();\n\t\tif (!s) return {\n\t\t\t\tt: et,\n\t\t\t\tl: 0\n\t\t};\n\t\tif (s == 1) {\n\t\t\t\tvar v = new u8(t[0].s + 1);\n\t\t\t\tv[t[0].s] = 1;\n\t\t\t\treturn {\n\t\t\t\t\t\tt: v,\n\t\t\t\t\t\tl: 1\n\t\t\t\t};\n\t\t}\n\t\tt.sort(function(a, b) {\n\t\t\t\treturn a.f - b.f;\n\t\t});\n\t\tt.push({\n\t\t\t\ts: -1,\n\t\t\t\tf: 25001\n\t\t});\n\t\tvar l = t[0], r = t[1], i0 = 0, i1 = 1, i2 = 2;\n\t\tt[0] = {\n\t\t\t\ts: -1,\n\t\t\t\tf: l.f + r.f,\n\t\t\t\tl: l,\n\t\t\t\tr: r\n\t\t};\n\t\twhile(i1 != s - 1){\n\t\t\t\tl = t[t[i0].f < t[i2].f ? i0++ : i2++];\n\t\t\t\tr = t[i0 != i1 && t[i0].f < t[i2].f ? i0++ : i2++];\n\t\t\t\tt[i1++] = {\n\t\t\t\t\t\ts: -1,\n\t\t\t\t\t\tf: l.f + r.f,\n\t\t\t\t\t\tl: l,\n\t\t\t\t\t\tr: r\n\t\t\t\t};\n\t\t}\n\t\tvar maxSym = t2[0].s;\n\t\tfor(var i = 1; i < s; ++i){\n\t\t\t\tif (t2[i].s > maxSym) maxSym = t2[i].s;\n\t\t}\n\t\tvar tr = new u16(maxSym + 1);\n\t\tvar mbt = ln(t[i1 - 1], tr, 0);\n\t\tif (mbt > mb) {\n\t\t\t\tvar i = 0, dt = 0;\n\t\t\t\tvar lft = mbt - mb, cst = 1 << lft;\n\t\t\t\tt2.sort(function(a, b) {\n\t\t\t\t\t\treturn tr[b.s] - tr[a.s] || a.f - b.f;\n\t\t\t\t});\n\t\t\t\tfor(; i < s; ++i){\n\t\t\t\t\t\tvar i2_1 = t2[i].s;\n\t\t\t\t\t\tif (tr[i2_1] > mb) {\n\t\t\t\t\t\t\t\tdt += cst - (1 << mbt - tr[i2_1]);\n\t\t\t\t\t\t\t\ttr[i2_1] = mb;\n\t\t\t\t\t\t} else break;\n\t\t\t\t}\n\t\t\t\tdt >>= lft;\n\t\t\t\twhile(dt > 0){\n\t\t\t\t\t\tvar i2_2 = t2[i].s;\n\t\t\t\t\t\tif (tr[i2_2] < mb) dt -= 1 << mb - tr[i2_2]++ - 1;\n\t\t\t\t\t\telse ++i;\n\t\t\t\t}\n\t\t\t\tfor(; i >= 0 && dt; --i){\n\t\t\t\t\t\tvar i2_3 = t2[i].s;\n\t\t\t\t\t\tif (tr[i2_3] == mb) {\n\t\t\t\t\t\t\t\t--tr[i2_3];\n\t\t\t\t\t\t\t\t++dt;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tmbt = mb;\n\t\t}\n\t\treturn {\n\t\t\t\tt: new u8(tr),\n\t\t\t\tl: mbt\n\t\t};\n};\nvar ln = function(n, l, d) {\n\t\treturn n.s == -1 ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1)) : l[n.s] = d;\n};\nvar lc = function(c) {\n\t\tvar s = c.length;\n\t\twhile(s && !c[--s]);\n\t\tvar cl = new u16(++s);\n\t\tvar cli = 0, cln = c[0], cls = 1;\n\t\tvar w = function(v) {\n\t\t\t\tcl[cli++] = v;\n\t\t};\n\t\tfor(var i = 1; i <= s; ++i){\n\t\t\t\tif (c[i] == cln && i != s) ++cls;\n\t\t\t\telse {\n\t\t\t\t\t\tif (!cln && cls > 2) {\n\t\t\t\t\t\t\t\tfor(; cls > 138; cls -= 138)w(32754);\n\t\t\t\t\t\t\t\tif (cls > 2) {\n\t\t\t\t\t\t\t\t\t\tw(cls > 10 ? cls - 11 << 5 | 28690 : cls - 3 << 5 | 12305);\n\t\t\t\t\t\t\t\t\t\tcls = 0;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (cls > 3) {\n\t\t\t\t\t\t\t\tw(cln), --cls;\n\t\t\t\t\t\t\t\tfor(; cls > 6; cls -= 6)w(8304);\n\t\t\t\t\t\t\t\tif (cls > 2) w(cls - 3 << 5 | 8208), cls = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\twhile(cls--)w(cln);\n\t\t\t\t\t\tcls = 1;\n\t\t\t\t\t\tcln = c[i];\n\t\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\t\tc: cl.subarray(0, cli),\n\t\t\t\tn: s\n\t\t};\n};\nvar clen = function(cf, cl) {\n\t\tvar l = 0;\n\t\tfor(var i = 0; i < cl.length; ++i)l += cf[i] * cl[i];\n\t\treturn l;\n};\nvar wfblk = function(out, pos, dat) {\n\t\tvar s = dat.length;\n\t\tvar o = shft(pos + 2);\n\t\tout[o] = s & 255;\n\t\tout[o + 1] = s >> 8;\n\t\tout[o + 2] = out[o] ^ 255;\n\t\tout[o + 3] = out[o + 1] ^ 255;\n\t\tfor(var i = 0; i < s; ++i)out[o + i + 4] = dat[i];\n\t\treturn (o + 4 + s) * 8;\n};\nvar wblk = function(dat, out, final, syms, lf, df, eb, li, bs, bl, p) {\n\t\twbits(out, p++, final);\n\t\t++lf[256];\n\t\tvar _a = hTree(lf, 15), dlt = _a.t, mlb = _a.l;\n\t\tvar _b = hTree(df, 15), ddt = _b.t, mdb = _b.l;\n\t\tvar _c = lc(dlt), lclt = _c.c, nlc = _c.n;\n\t\tvar _d = lc(ddt), lcdt = _d.c, ndc = _d.n;\n\t\tvar lcfreq = new u16(19);\n\t\tfor(var i = 0; i < lclt.length; ++i)++lcfreq[lclt[i] & 31];\n\t\tfor(var i = 0; i < lcdt.length; ++i)++lcfreq[lcdt[i] & 31];\n\t\tvar _e = hTree(lcfreq, 7), lct = _e.t, mlcb = _e.l;\n\t\tvar nlcc = 19;\n\t\tfor(; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc);\n\t\tvar flen = bl + 5 << 3;\n\t\tvar ftlen = clen(lf, flt) + clen(df, fdt) + eb;\n\t\tvar dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + 2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18];\n\t\tif (bs >= 0 && flen <= ftlen && flen <= dtlen) return wfblk(out, p, dat.subarray(bs, bs + bl));\n\t\tvar lm, ll, dm, dl;\n\t\twbits(out, p, 1 + (dtlen < ftlen)), p += 2;\n\t\tif (dtlen < ftlen) {\n\t\t\t\tlm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt;\n\t\t\t\tvar llm = hMap(lct, mlcb, 0);\n\t\t\t\twbits(out, p, nlc - 257);\n\t\t\t\twbits(out, p + 5, ndc - 1);\n\t\t\t\twbits(out, p + 10, nlcc - 4);\n\t\t\t\tp += 14;\n\t\t\t\tfor(var i = 0; i < nlcc; ++i)wbits(out, p + 3 * i, lct[clim[i]]);\n\t\t\t\tp += 3 * nlcc;\n\t\t\t\tvar lcts = [\n\t\t\t\t\t\tlclt,\n\t\t\t\t\t\tlcdt\n\t\t\t\t];\n\t\t\t\tfor(var it = 0; it < 2; ++it){\n\t\t\t\t\t\tvar clct = lcts[it];\n\t\t\t\t\t\tfor(var i = 0; i < clct.length; ++i){\n\t\t\t\t\t\t\t\tvar len = clct[i] & 31;\n\t\t\t\t\t\t\t\twbits(out, p, llm[len]), p += lct[len];\n\t\t\t\t\t\t\t\tif (len > 15) wbits(out, p, clct[i] >> 5 & 127), p += clct[i] >> 12;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t} else {\n\t\t\t\tlm = flm, ll = flt, dm = fdm, dl = fdt;\n\t\t}\n\t\tfor(var i = 0; i < li; ++i){\n\t\t\t\tvar sym = syms[i];\n\t\t\t\tif (sym > 255) {\n\t\t\t\t\t\tvar len = sym >> 18 & 31;\n\t\t\t\t\t\twbits16(out, p, lm[len + 257]), p += ll[len + 257];\n\t\t\t\t\t\tif (len > 7) wbits(out, p, sym >> 23 & 31), p += fleb[len];\n\t\t\t\t\t\tvar dst = sym & 31;\n\t\t\t\t\t\twbits16(out, p, dm[dst]), p += dl[dst];\n\t\t\t\t\t\tif (dst > 3) wbits16(out, p, sym >> 5 & 8191), p += fdeb[dst];\n\t\t\t\t} else {\n\t\t\t\t\t\twbits16(out, p, lm[sym]), p += ll[sym];\n\t\t\t\t}\n\t\t}\n\t\twbits16(out, p, lm[256]);\n\t\treturn p + ll[256];\n};\nvar deo = new i32([\n\t\t65540,\n\t\t131080,\n\t\t131088,\n\t\t131104,\n\t\t262176,\n\t\t1048704,\n\t\t1048832,\n\t\t2114560,\n\t\t2117632\n]);\nvar et = new u8(0);\nvar dflt = function(dat, lvl, plvl, pre, post, st) {\n\t\tvar s = st.z || dat.length;\n\t\tvar o = new u8(pre + s + 5 * (1 + Math.ceil(s / 7000)) + post);\n\t\tvar w = o.subarray(pre, o.length - post);\n\t\tvar lst = st.l;\n\t\tvar pos = (st.r || 0) & 7;\n\t\tif (lvl) {\n\t\t\t\tif (pos) w[0] = st.r >> 3;\n\t\t\t\tvar opt = deo[lvl - 1];\n\t\t\t\tvar n = opt >> 13, c = opt & 8191;\n\t\t\t\tvar msk_1 = (1 << plvl) - 1;\n\t\t\t\tvar prev = st.p || new u16(32768), head = st.h || new u16(msk_1 + 1);\n\t\t\t\tvar bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1;\n\t\t\t\tvar hsh = function(i) {\n\t\t\t\t\t\treturn (dat[i] ^ dat[i + 1] << bs1_1 ^ dat[i + 2] << bs2_1) & msk_1;\n\t\t\t\t};\n\t\t\t\tvar syms = new i32(25000);\n\t\t\t\tvar lf = new u16(288), df = new u16(32);\n\t\t\t\tvar lc_1 = 0, eb = 0, i = st.i || 0, li = 0, wi = st.w || 0, bs = 0;\n\t\t\t\tfor(; i + 2 < s; ++i){\n\t\t\t\t\t\tvar hv = hsh(i);\n\t\t\t\t\t\tvar imod = i & 32767, pimod = head[hv];\n\t\t\t\t\t\tprev[imod] = pimod;\n\t\t\t\t\t\thead[hv] = imod;\n\t\t\t\t\t\tif (wi <= i) {\n\t\t\t\t\t\t\t\tvar rem = s - i;\n\t\t\t\t\t\t\t\tif ((lc_1 > 7000 || li > 24576) && (rem > 423 || !lst)) {\n\t\t\t\t\t\t\t\t\t\tpos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos);\n\t\t\t\t\t\t\t\t\t\tli = lc_1 = eb = 0, bs = i;\n\t\t\t\t\t\t\t\t\t\tfor(var j = 0; j < 286; ++j)lf[j] = 0;\n\t\t\t\t\t\t\t\t\t\tfor(var j = 0; j < 30; ++j)df[j] = 0;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tvar l = 2, d = 0, ch_1 = c, dif = imod - pimod & 32767;\n\t\t\t\t\t\t\t\tif (rem > 2 && hv == hsh(i - dif)) {\n\t\t\t\t\t\t\t\t\t\tvar maxn = Math.min(n, rem) - 1;\n\t\t\t\t\t\t\t\t\t\tvar maxd = Math.min(32767, i);\n\t\t\t\t\t\t\t\t\t\tvar ml = Math.min(258, rem);\n\t\t\t\t\t\t\t\t\t\twhile(dif <= maxd && --ch_1 && imod != pimod){\n\t\t\t\t\t\t\t\t\t\t\t\tif (dat[i + l] == dat[i + l - dif]) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tvar nl = 0;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor(; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (nl > l) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tl = nl, d = dif;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (nl > maxn) break;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvar mmd = Math.min(dif, nl - 2);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvar md = 0;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor(var j = 0; j < mmd; ++j){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvar ti = i - dif + j & 32767;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvar pti = prev[ti];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvar cd = ti - pti & 32767;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (cd > md) md = cd, pimod = ti;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\timod = pimod, pimod = prev[imod];\n\t\t\t\t\t\t\t\t\t\t\t\tdif += imod - pimod & 32767;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (d) {\n\t\t\t\t\t\t\t\t\t\tsyms[li++] = 268435456 | revfl[l] << 18 | revfd[d];\n\t\t\t\t\t\t\t\t\t\tvar lin = revfl[l] & 31, din = revfd[d] & 31;\n\t\t\t\t\t\t\t\t\t\teb += fleb[lin] + fdeb[din];\n\t\t\t\t\t\t\t\t\t\t++lf[257 + lin];\n\t\t\t\t\t\t\t\t\t\t++df[din];\n\t\t\t\t\t\t\t\t\t\twi = i + l;\n\t\t\t\t\t\t\t\t\t\t++lc_1;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tsyms[li++] = dat[i];\n\t\t\t\t\t\t\t\t\t\t++lf[dat[i]];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor(i = Math.max(i, wi); i < s; ++i){\n\t\t\t\t\t\tsyms[li++] = dat[i];\n\t\t\t\t\t\t++lf[dat[i]];\n\t\t\t\t}\n\t\t\t\tpos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos);\n\t\t\t\tif (!lst) {\n\t\t\t\t\t\tst.r = pos & 7 | w[pos / 8 | 0] << 3;\n\t\t\t\t\t\tpos -= 7;\n\t\t\t\t\t\tst.h = head, st.p = prev, st.i = i, st.w = wi;\n\t\t\t\t}\n\t\t} else {\n\t\t\t\tfor(var i = st.w || 0; i < s + lst; i += 65535){\n\t\t\t\t\t\tvar e = i + 65535;\n\t\t\t\t\t\tif (e >= s) {\n\t\t\t\t\t\t\t\tw[pos / 8 | 0] = lst;\n\t\t\t\t\t\t\t\te = s;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpos = wfblk(w, pos + 1, dat.subarray(i, e));\n\t\t\t\t}\n\t\t\t\tst.i = s;\n\t\t}\n\t\treturn slc(o, 0, pre + shft(pos) + post);\n};\nvar crct = function() {\n\t\tvar t = new Int32Array(256);\n\t\tfor(var i = 0; i < 256; ++i){\n\t\t\t\tvar c = i, k = 9;\n\t\t\t\twhile(--k)c = (c & 1 && -306674912) ^ c >>> 1;\n\t\t\t\tt[i] = c;\n\t\t}\n\t\treturn t;\n}();\nvar crc = function() {\n\t\tvar c = -1;\n\t\treturn {\n\t\t\t\tp: function(d) {\n\t\t\t\t\t\tvar cr = c;\n\t\t\t\t\t\tfor(var i = 0; i < d.length; ++i)cr = crct[cr & 255 ^ d[i]] ^ cr >>> 8;\n\t\t\t\t\t\tc = cr;\n\t\t\t\t},\n\t\t\t\td: function() {\n\t\t\t\t\t\treturn ~c;\n\t\t\t\t}\n\t\t};\n};\nvar dopt = function(dat, opt, pre, post, st) {\n\t\tif (!st) {\n\t\t\t\tst = {\n\t\t\t\t\t\tl: 1\n\t\t\t\t};\n\t\t\t\tif (opt.dictionary) {\n\t\t\t\t\t\tvar dict = opt.dictionary.subarray(-32768);\n\t\t\t\t\t\tvar newDat = new u8(dict.length + dat.length);\n\t\t\t\t\t\tnewDat.set(dict);\n\t\t\t\t\t\tnewDat.set(dat, dict.length);\n\t\t\t\t\t\tdat = newDat;\n\t\t\t\t\t\tst.w = dict.length;\n\t\t\t\t}\n\t\t}\n\t\treturn dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? st.l ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : 20 : 12 + opt.mem, pre, post, st);\n};\nvar mrg = function(a, b) {\n\t\tvar o = {};\n\t\tfor(var k in a)o[k] = a[k];\n\t\tfor(var k in b)o[k] = b[k];\n\t\treturn o;\n};\nvar wbytes = function(d, b, v) {\n\t\tfor(; v; ++b)d[b] = v, v >>>= 8;\n};\nfunction deflateSync(data, opts) {\n\t\treturn dopt(data, opts || {}, 0, 0);\n}\nvar fltn = function(d, p, t, o) {\n\t\tfor(var k in d){\n\t\t\t\tvar val = d[k], n = p + k, op = o;\n\t\t\t\tif (Array.isArray(val)) op = mrg(o, val[1]), val = val[0];\n\t\t\t\tif (val instanceof u8) t[n] = [\n\t\t\t\t\t\tval,\n\t\t\t\t\t\top\n\t\t\t\t];\n\t\t\t\telse {\n\t\t\t\t\t\tt[n += '/'] = [\n\t\t\t\t\t\t\t\tnew u8(0),\n\t\t\t\t\t\t\t\top\n\t\t\t\t\t\t];\n\t\t\t\t\t\tfltn(val, n, t, o);\n\t\t\t\t}\n\t\t}\n};\nvar te = typeof TextEncoder != 'undefined' && new TextEncoder();\nvar td = typeof TextDecoder != 'undefined' && new TextDecoder();\nvar tds = 0;\ntry {\n\t\ttd.decode(et, {\n\t\t\t\tstream: true\n\t\t});\n\t\ttds = 1;\n} catch (e) {}\nfunction strToU8(str, latin1) {\n\t\tvar i; \n\t\tif (te) return te.encode(str);\n\t\tvar l = str.length;\n\t\tvar ar = new u8(str.length + (str.length >> 1));\n\t\tvar ai = 0;\n\t\tvar w = function(v) {\n\t\t\t\tar[ai++] = v;\n\t\t};\n\t\tfor(var i = 0; i < l; ++i){\n\t\t\t\tif (ai + 5 > ar.length) {\n\t\t\t\t\t\tvar n = new u8(ai + 8 + (l - i << 1));\n\t\t\t\t\t\tn.set(ar);\n\t\t\t\t\t\tar = n;\n\t\t\t\t}\n\t\t\t\tvar c = str.charCodeAt(i);\n\t\t\t\tif (c < 128 || latin1) w(c);\n\t\t\t\telse if (c < 2048) w(192 | c >> 6), w(128 | c & 63);\n\t\t\t\telse if (c > 55295 && c < 57344) c = 65536 + (c & 1023 << 10) | str.charCodeAt(++i) & 1023, w(240 | c >> 18), w(128 | c >> 12 & 63), w(128 | c >> 6 & 63), w(128 | c & 63);\n\t\t\t\telse w(224 | c >> 12), w(128 | c >> 6 & 63), w(128 | c & 63);\n\t\t}\n\t\treturn slc(ar, 0, ai);\n}\nvar exfl = function(ex) {\n\t\tvar le = 0;\n\t\tif (ex) {\n\t\t\t\tfor(var k in ex){\n\t\t\t\t\t\tvar l = ex[k].length;\n\t\t\t\t\t\tif (l > 65535) err(9);\n\t\t\t\t\t\tle += l + 4;\n\t\t\t\t}\n\t\t}\n\t\treturn le;\n};\nvar wzh = function(d, b, f, fn, u, c, ce, co) {\n\t\tvar fl = fn.length, ex = f.extra, col = co && co.length;\n\t\tvar exl = exfl(ex);\n\t\twbytes(d, b, ce != null ? 0x2014B50 : 0x4034B50), b += 4;\n\t\tif (ce != null) d[b++] = 20, d[b++] = f.os;\n\t\td[b] = 20, b += 2;\n\t\td[b++] = f.flag << 1 | (c < 0 && 8), d[b++] = u && 8;\n\t\td[b++] = f.compression & 255, d[b++] = f.compression >> 8;\n\t\tvar dt = new Date(f.mtime == null ? Date.now() : f.mtime), y = dt.getFullYear() - 1980;\n\t\tif (y < 0 || y > 119) err(10);\n\t\twbytes(d, b, y << 25 | dt.getMonth() + 1 << 21 | dt.getDate() << 16 | dt.getHours() << 11 | dt.getMinutes() << 5 | dt.getSeconds() >> 1), b += 4;\n\t\tif (c != -1) {\n\t\t\t\twbytes(d, b, f.crc);\n\t\t\t\twbytes(d, b + 4, c < 0 ? -c - 2 : c);\n\t\t\t\twbytes(d, b + 8, f.size);\n\t\t}\n\t\twbytes(d, b + 12, fl);\n\t\twbytes(d, b + 14, exl), b += 16;\n\t\tif (ce != null) {\n\t\t\t\twbytes(d, b, col);\n\t\t\t\twbytes(d, b + 6, f.attrs);\n\t\t\t\twbytes(d, b + 10, ce), b += 14;\n\t\t}\n\t\td.set(fn, b);\n\t\tb += fl;\n\t\tif (exl) {\n\t\t\t\tfor(var k in ex){\n\t\t\t\t\t\tvar exf = ex[k], l = exf.length;\n\t\t\t\t\t\twbytes(d, b, +k);\n\t\t\t\t\t\twbytes(d, b + 2, l);\n\t\t\t\t\t\td.set(exf, b + 4), b += 4 + l;\n\t\t\t\t}\n\t\t}\n\t\tif (col) d.set(co, b), b += col;\n\t\treturn b;\n};\nvar wzf = function(o, b, c, d, e) {\n\t\twbytes(o, b, 0x6054B50);\n\t\twbytes(o, b + 8, c);\n\t\twbytes(o, b + 10, c);\n\t\twbytes(o, b + 12, d);\n\t\twbytes(o, b + 16, e);\n};\nfunction zipSync(data, opts) {\n\t\tif (!opts) opts = {};\n\t\tvar r = {};\n\t\tvar files = [];\n\t\tfltn(data, '', r, opts);\n\t\tvar o = 0;\n\t\tvar tot = 0;\n\t\tfor(var fn in r){\n\t\t\t\tvar _a = r[fn], file = _a[0], p = _a[1];\n\t\t\t\tvar compression = p.level == 0 ? 0 : 8;\n\t\t\t\tvar f = strToU8(fn), s = f.length;\n\t\t\t\tvar com = p.comment, m = com && strToU8(com), ms = m && m.length;\n\t\t\t\tvar exl = exfl(p.extra);\n\t\t\t\tif (s > 65535) err(11);\n\t\t\t\tvar d = compression ? deflateSync(file, p) : file, l = d.length;\n\t\t\t\tvar c = crc();\n\t\t\t\tc.p(file);\n\t\t\t\tfiles.push(mrg(p, {\n\t\t\t\t\t\tsize: file.length,\n\t\t\t\t\t\tcrc: c.d(),\n\t\t\t\t\t\tc: d,\n\t\t\t\t\t\tf: f,\n\t\t\t\t\t\tm: m,\n\t\t\t\t\t\tu: s != fn.length || m && com.length != ms,\n\t\t\t\t\t\to: o,\n\t\t\t\t\t\tcompression: compression\n\t\t\t\t}));\n\t\t\t\to += 30 + s + exl + l;\n\t\t\t\ttot += 76 + 2 * (s + exl) + (ms || 0) + l;\n\t\t}\n\t\tvar out = new u8(tot + 22), oe = o, cdl = tot - o;\n\t\tfor(var i = 0; i < files.length; ++i){\n\t\t\t\tvar f = files[i];\n\t\t\t\twzh(out, f.o, f, f.f, f.u, f.c.length);\n\t\t\t\tvar badd = 30 + f.f.length + exfl(f.extra);\n\t\t\t\tout.set(f.c, f.o + badd);\n\t\t\t\twzh(out, o, f, f.f, f.u, f.c.length, f.o, f.m), o += 16 + badd + (f.m ? f.m.length : 0);\n\t\t}\n\t\twzf(out, o, files.length, cdl, oe);\n\t\treturn out;\n}\n\nconst ROOT_FILE_NAME = 'root';\nconst header = `#usda 1.0\n(\n\t\tcustomLayerData = {\n\t\t\t\tstring creator = \"PlayCanvas UsdzExporter\"\n\t\t}\n\t\tmetersPerUnit = 1\n\t\tupAxis = \"Y\"\n)\n`;\nconst materialListTemplate = (materials)=>`\ndef \"Materials\"\n{\n\t\t${materials.join('\\n')}\n}\n`;\nconst meshTemplate = (faceVertexCounts, indices, normals, positions, uv0, uv1)=>`\ndef \"Mesh\"\n{\n\t\tdef Mesh \"Mesh\"\n\t\t{\n\t\t\t\tint[] faceVertexCounts = [${faceVertexCounts}]\n\t\t\t\tint[] faceVertexIndices = [${indices}]\n\t\t\t\tnormal3f[] normals = [${normals}] (\n\t\t\t\t\t\tinterpolation = \"vertex\"\n\t\t\t\t)\n\t\t\t\tpoint3f[] points = [${positions}]\n\t\t\t\ttexCoord2f[] primvars:st = [${uv0}] (\n\t\t\t\t\t\tinterpolation = \"vertex\"\n\t\t\t\t)\n\t\t\t\ttexCoord2f[] primvars:st1 = [${uv1}] (\n\t\t\t\t\t\tinterpolation = \"vertex\"\n\t\t\t\t)\n\t\t\t\tuniform token subdivisionScheme = \"none\"\n\t\t}\n}\n`;\nconst meshInstanceTemplate = (nodeName, meshRefPath, worldMatrix, materialRefPath)=>`\ndef Xform \"${nodeName}\" (\n\t\tprepend references = ${meshRefPath}\n)\n{\n\t\tmatrix4d xformOp:transform = ${worldMatrix}\n\t\tuniform token[] xformOpOrder = [\"xformOp:transform\"]\n\n\t\trel material:binding = ${materialRefPath}\n}\n`;\nconst materialValueTemplate = (type, name, value)=>`                    ${type} inputs:${name} = ${value}`;\nclass UsdzExporter extends CoreExporter {\n\t\tinit() {\n\t\t\t\tthis.meshMap = new Map();\n\t\t\t\tthis.textureMap = new Map();\n\t\t\t\tthis.materialMap = new Map();\n\t\t\t\tthis.materials = [];\n\t\t\t\tthis.files = {};\n\t\t\t\tthis.nodeNames = new Set();\n\t\t}\n\t\tdone() {\n\t\t\t\tthis.meshMap = null;\n\t\t\t\tthis.textureMap = null;\n\t\t\t\tthis.materialMap = null;\n\t\t\t\tthis.materials = null;\n\t\t\t\tthis.files = null;\n\t\t\t\tthis.nodeNames = null;\n\t\t}\n\t\tbuild(entity, options = {}) {\n\t\t\t\tthis.init();\n\t\t\t\tthis.addFile(null, ROOT_FILE_NAME);\n\t\t\t\tconst allMeshInstances = [];\n\t\t\t\tif (entity) {\n\t\t\t\t\t\tconst renders = entity.findComponents('render');\n\t\t\t\t\t\trenders.forEach((render)=>{\n\t\t\t\t\t\t\t\tallMeshInstances.push(...render.meshInstances);\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tlet rootContent = '';\n\t\t\t\tallMeshInstances.forEach((meshInstance)=>{\n\t\t\t\t\t\trootContent += this.buildMeshInstance(meshInstance);\n\t\t\t\t});\n\t\t\t\trootContent += materialListTemplate(this.materials);\n\t\t\t\tthis.addFile(null, ROOT_FILE_NAME, '', rootContent);\n\t\t\t\tconst textureOptions = {\n\t\t\t\t\t\tmaxTextureSize: options.maxTextureSize\n\t\t\t\t};\n\t\t\t\tconst textureArray = Array.from(this.textureMap.keys());\n\t\t\t\tconst promises = [];\n\t\t\t\tfor(let i = 0; i < textureArray.length; i++){\n\t\t\t\t\t\tconst mimeType = 'image/png' ;\n\t\t\t\t\t\tconst texture = textureArray[i];\n\t\t\t\t\t\tconst texturePromise = this.textureToCanvas(texture, textureOptions).then((canvas)=>{\n\t\t\t\t\t\t\t\tif (canvas) {\n\t\t\t\t\t\t\t\t\t\treturn new Promise((resolve)=>canvas.toBlob(resolve, mimeType, 1)).then((blob)=>blob.arrayBuffer());\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconsole.warn(`Export of texture ${texture.name} is not currently supported.`);\n\t\t\t\t\t\t\t\treturn new Promise((resolve)=>resolve(null));\n\t\t\t\t\t\t});\n\t\t\t\t\t\tpromises.push(texturePromise);\n\t\t\t\t}\n\t\t\t\tconst finalData = Promise.all(promises).then((values)=>{\n\t\t\t\t\t\tvalues.forEach((textureArrayBuffer, index)=>{\n\t\t\t\t\t\t\t\tconst texture = textureArray[index];\n\t\t\t\t\t\t\t\tconst ids = this.getTextureFileIds(texture);\n\t\t\t\t\t\t\t\tthis.files[ids.fileName] = new Uint8Array(textureArrayBuffer);\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis.alignFiles();\n\t\t\t\t\t\tconst arraybuffer = zipSync(this.files, {\n\t\t\t\t\t\t\t\tlevel: 0\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis.done();\n\t\t\t\t\t\treturn arraybuffer;\n\t\t\t\t});\n\t\t\t\treturn finalData;\n\t\t}\n\t\talignFiles() {\n\t\t\t\tlet offset = 0;\n\t\t\t\tfor(const filename in this.files){\n\t\t\t\t\t\tconst file = this.files[filename];\n\t\t\t\t\t\tconst headerSize = 34 + filename.length;\n\t\t\t\t\t\toffset += headerSize;\n\t\t\t\t\t\tconst offsetMod64 = offset & 63;\n\t\t\t\t\t\tif (offsetMod64 !== 4) {\n\t\t\t\t\t\t\t\tconst padLength = 64 - offsetMod64;\n\t\t\t\t\t\t\t\tconst padding = new Uint8Array(padLength);\n\t\t\t\t\t\t\t\tthis.files[filename] = [\n\t\t\t\t\t\t\t\t\t\tfile,\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\textra: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t12345: padding\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t}\n\t\t\t\t\t\toffset = file.length;\n\t\t\t\t}\n\t\t}\n\t\tgetFileIds(category, name, ref, extension = 'usda') {\n\t\t\t\tconst fileName = `${category ? `${category}/` : ''}${name}.${extension}`;\n\t\t\t\tconst refName = `@./${fileName}@</${ref}>`;\n\t\t\t\treturn {\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tfileName,\n\t\t\t\t\t\trefName\n\t\t\t\t};\n\t\t}\n\t\tgetTextureFileIds(texture) {\n\t\t\t\treturn this.getFileIds('texture', `Texture_${texture.id}`, 'Texture', 'png');\n\t\t}\n\t\taddFile(category, uniqueId, refName = '', content = '') {\n\t\t\t\tlet contentU8 = null;\n\t\t\t\tif (content) {\n\t\t\t\t\t\tcontent = `${header}\\n${content}`;\n\t\t\t\t\t\tcontentU8 = strToU8(content);\n\t\t\t\t}\n\t\t\t\tconst ids = this.getFileIds(category, uniqueId, refName);\n\t\t\t\tthis.files[ids.fileName] = contentU8;\n\t\t\t\treturn ids.refName;\n\t\t}\n\t\tgetMaterialRef(material) {\n\t\t\t\tlet materialRef = this.materialMap.get(material);\n\t\t\t\tif (!materialRef) {\n\t\t\t\t\t\tmaterialRef = this.buildMaterial(material);\n\t\t\t\t\t\tthis.materialMap.set(material, materialRef);\n\t\t\t\t}\n\t\t\t\treturn materialRef;\n\t\t}\n\t\tgetMeshRef(mesh) {\n\t\t\t\tlet meshRef = this.meshMap.get(mesh);\n\t\t\t\tif (!meshRef) {\n\t\t\t\t\t\tmeshRef = this.buildMesh(mesh);\n\t\t\t\t\t\tthis.meshMap.set(mesh, meshRef);\n\t\t\t\t}\n\t\t\t\treturn meshRef;\n\t\t}\n\t\tbuildArray2(array) {\n\t\t\t\tconst components = [];\n\t\t\t\tconst count = array.length;\n\t\t\t\tfor(let i = 0; i < count; i += 2){\n\t\t\t\t\t\tcomponents.push(`(${array[i]}, ${1 - array[i + 1]})`);\n\t\t\t\t}\n\t\t\t\treturn components.join(', ');\n\t\t}\n\t\tbuildArray3(array) {\n\t\t\t\tconst components = [];\n\t\t\t\tconst count = array.length;\n\t\t\t\tfor(let i = 0; i < count; i += 3){\n\t\t\t\t\t\tcomponents.push(`(${array[i]}, ${array[i + 1]}, ${array[i + 2]})`);\n\t\t\t\t}\n\t\t\t\treturn components.join(', ');\n\t\t}\n\t\tbuildMat4(mat) {\n\t\t\t\tconst data = mat.data;\n\t\t\t\tconst vectors = [];\n\t\t\t\tfor(let i = 0; i < 16; i += 4){\n\t\t\t\t\t\tvectors.push(`(${data[i]}, ${data[i + 1]}, ${data[i + 2]}, ${data[i + 3]})`);\n\t\t\t\t}\n\t\t\t\treturn `( ${vectors.join(', ')} )`;\n\t\t}\n\t\tbuildMaterial(material) {\n\t\t\t\tconst materialName = `Material_${material.id}`;\n\t\t\t\tconst materialPath = `/Materials/${materialName}`;\n\t\t\t\tconst materialPropertyPath = (property)=>`<${materialPath}${property}>`;\n\t\t\t\tconst buildTexture = (texture, textureIds, mapType, uvChannel, tiling, offset, rotation, tintColor)=>{\n\t\t\t\t\t\treturn `\n\t\t\t\t\t\t\t\tdef Shader \"Transform2d_${mapType}\" (\n\t\t\t\t\t\t\t\t\t\tsdrMetadata = {\n\t\t\t\t\t\t\t\t\t\t\t\tstring role = \"math\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tuniform token info:id = \"UsdTransform2d\"\n\t\t\t\t\t\t\t\t\t\tfloat2 inputs:in.connect = ${materialPropertyPath(`/uvReader_${uvChannel}.outputs:result`)}\n\t\t\t\t\t\t\t\t\t\tfloat inputs:rotation = ${rotation}\n\t\t\t\t\t\t\t\t\t\tfloat2 inputs:scale = (${tiling.x}, ${tiling.y})\n\t\t\t\t\t\t\t\t\t\tfloat2 inputs:translation = (${offset.x}, ${offset.y})\n\t\t\t\t\t\t\t\t\t\tfloat2 outputs:result\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tdef Shader \"Texture_${texture.id}_${mapType}\"\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tuniform token info:id = \"UsdUVTexture\"\n\t\t\t\t\t\t\t\t\t\tasset inputs:file = @${textureIds.fileName}@\n\t\t\t\t\t\t\t\t\t\tfloat2 inputs:st.connect = ${materialPropertyPath(`/Transform2d_${mapType}.outputs:result`)}\n\t\t\t\t\t\t\t\t\t\ttoken inputs:wrapS = \"repeat\"\n\t\t\t\t\t\t\t\t\t\ttoken inputs:wrapT = \"repeat\"\n\t\t\t\t\t\t\t\t\t\tfloat4 inputs:scale = (${tintColor.r}, ${tintColor.g}, ${tintColor.b}, ${tintColor.a})\n\t\t\t\t\t\t\t\t\t\tfloat outputs:r\n\t\t\t\t\t\t\t\t\t\tfloat outputs:g\n\t\t\t\t\t\t\t\t\t\tfloat outputs:b\n\t\t\t\t\t\t\t\t\t\tfloat3 outputs:rgb\n\t\t\t\t\t\t\t\t\t\tfloat outputs:a\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t`;\n\t\t\t\t};\n\t\t\t\tconst inputs = [];\n\t\t\t\tconst samplers = [];\n\t\t\t\tconst addTexture = (textureSlot, uniform, propType, propName, valueName, handleOpacity = false, tintTexture = false)=>{\n\t\t\t\t\t\tconst texture = material[textureSlot];\n\t\t\t\t\t\tif (texture) {\n\t\t\t\t\t\t\t\tconst textureIds = this.getTextureFileIds(texture);\n\t\t\t\t\t\t\t\tthis.textureMap.set(texture, textureIds.refName);\n\t\t\t\t\t\t\t\tconst channel = material[`${textureSlot}Channel`] || 'rgb';\n\t\t\t\t\t\t\t\tconst textureValue = materialPropertyPath(`/${textureIds.name}_${valueName}.outputs:${channel}`);\n\t\t\t\t\t\t\t\tinputs.push(materialValueTemplate(propType, `${propName}.connect`, textureValue));\n\t\t\t\t\t\t\t\tif (handleOpacity) {\n\t\t\t\t\t\t\t\t\t\tif (material.alphaTest > 0.0) ;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst tiling = material[`${textureSlot}Tiling`];\n\t\t\t\t\t\t\t\tconst offset = material[`${textureSlot}Offset`];\n\t\t\t\t\t\t\t\tconst rotation = material[`${textureSlot}Rotation`];\n\t\t\t\t\t\t\t\tconst uvChannel = material[`${textureSlot}Uv`] === 1 ? 'st1' : 'st';\n\t\t\t\t\t\t\t\tconst tintColor = tintTexture && uniform ? uniform : Color.WHITE;\n\t\t\t\t\t\t\t\tsamplers.push(buildTexture(texture, textureIds, valueName, uvChannel, tiling, offset, rotation, tintColor));\n\t\t\t\t\t\t} else if (uniform) {\n\t\t\t\t\t\t\t\tconst value = propType === 'float' ? `${uniform}` : `(${uniform.r}, ${uniform.g}, ${uniform.b})`;\n\t\t\t\t\t\t\t\tinputs.push(materialValueTemplate(propType, propName, value));\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\taddTexture('diffuseMap', material.diffuse, 'color3f', 'diffuseColor', 'diffuse', false, true);\n\t\t\t\tif (material.transparent || material.alphaTest > 0.0) {\n\t\t\t\t\t\taddTexture('opacityMap', material.opacity, 'float', 'opacity', 'opacity', true);\n\t\t\t\t}\n\t\t\t\taddTexture('normalMap', null, 'normal3f', 'normal', 'normal');\n\t\t\t\taddTexture('emissiveMap', material.emissive, 'color3f', 'emissiveColor', 'emissive', false, true);\n\t\t\t\taddTexture('aoMap', null, 'float', 'occlusion', 'occlusion');\n\t\t\t\taddTexture('metalnessMap', material.metalness, 'float', 'metallic', 'metallic');\n\t\t\t\taddTexture('glossMap', material.gloss, 'float', 'roughness', 'roughness');\n\t\t\t\tconst materialObject = `\n\t\t\t\t\t\tdef Material \"${materialName}\"\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdef Shader \"PreviewSurface\"\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tuniform token info:id = \"UsdPreviewSurface\"\n${inputs.join('\\n')}\n\t\t\t\t\t\t\t\t\t\tint inputs:useSpecularWorkflow = 0\n\t\t\t\t\t\t\t\t\t\ttoken outputs:surface\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\ttoken outputs:surface.connect = ${materialPropertyPath('/PreviewSurface.outputs:surface')}\n\n\t\t\t\t\t\t\t\tdef Shader \"uvReader_st\"\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tuniform token info:id = \"UsdPrimvarReader_float2\"\n\t\t\t\t\t\t\t\t\t\ttoken inputs:varname = \"st\"\n\t\t\t\t\t\t\t\t\t\tfloat2 inputs:fallback = (0.0, 0.0)\n\t\t\t\t\t\t\t\t\t\tfloat2 outputs:result\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tdef Shader \"uvReader_st1\"\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tuniform token info:id = \"UsdPrimvarReader_float2\"\n\t\t\t\t\t\t\t\t\t\ttoken inputs:varname = \"st1\"\n\t\t\t\t\t\t\t\t\t\tfloat2 inputs:fallback = (0.0, 0.0)\n\t\t\t\t\t\t\t\t\t\tfloat2 outputs:result\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t${samplers.join('\\n')}\n\t\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t\tthis.materials.push(materialObject);\n\t\t\t\treturn materialPropertyPath('');\n\t\t}\n\t\tbuildMesh(mesh) {\n\t\t\t\tlet positions = [];\n\t\t\t\tconst indices = [];\n\t\t\t\tlet normals = [];\n\t\t\t\tlet uv0 = [];\n\t\t\t\tlet uv1 = [];\n\t\t\t\tmesh.getVertexStream(SEMANTIC_POSITION, positions);\n\t\t\t\tmesh.getVertexStream(SEMANTIC_NORMAL, normals);\n\t\t\t\tmesh.getVertexStream(SEMANTIC_TEXCOORD0, uv0);\n\t\t\t\tmesh.getVertexStream(SEMANTIC_TEXCOORD1, uv1);\n\t\t\t\tmesh.getIndices(indices);\n\t\t\t\tconst indicesCount = indices.length || positions.length;\n\t\t\t\tconst faceVertexCounts = Array(indicesCount / 3).fill(3).join(', ');\n\t\t\t\tif (!indices.length) {\n\t\t\t\t\t\tfor(let i = 0; i < indicesCount; i++){\n\t\t\t\t\t\t\t\tindices[i] = i;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst numVerts = positions.length / 3;\n\t\t\t\tnormals = normals.length ? normals : Array(numVerts * 3).fill(0);\n\t\t\t\tuv0 = uv0.length ? uv0 : Array(numVerts * 2).fill(0);\n\t\t\t\tuv1 = uv1.length ? uv1 : Array(numVerts * 2).fill(0);\n\t\t\t\tpositions = this.buildArray3(positions);\n\t\t\t\tnormals = this.buildArray3(normals);\n\t\t\t\tuv0 = this.buildArray2(uv0);\n\t\t\t\tuv1 = this.buildArray2(uv1);\n\t\t\t\tconst meshObject = meshTemplate(faceVertexCounts, indices, normals, positions, uv0, uv1);\n\t\t\t\tconst refPath = this.addFile('mesh', `Mesh_${mesh.id}`, 'Mesh', meshObject);\n\t\t\t\treturn refPath;\n\t\t}\n\t\tbuildMeshInstance(meshInstance) {\n\t\t\t\tconst meshRefPath = this.getMeshRef(meshInstance.mesh);\n\t\t\t\tconst materialRefPath = this.getMaterialRef(meshInstance.material);\n\t\t\t\tconst worldMatrix = this.buildMat4(meshInstance.node.getWorldTransform());\n\t\t\t\tconst name = meshInstance.node.name.replace(/[^a-z0-9]/gi, '_');\n\t\t\t\tlet nodeName = name;\n\t\t\t\twhile(this.nodeNames.has(nodeName)){\n\t\t\t\t\t\tnodeName = `${name}_${Math.random().toString(36).slice(2, 7)}`;\n\t\t\t\t}\n\t\t\t\tthis.nodeNames.add(nodeName);\n\t\t\t\treturn meshInstanceTemplate(nodeName, meshRefPath, worldMatrix, materialRefPath);\n\t\t}\n}\n\nconst ARRAY_BUFFER = 34962;\nconst ELEMENT_ARRAY_BUFFER = 34963;\nconst getIndexComponentType = (indexFormat)=>{\n\t\tswitch(indexFormat){\n\t\t\t\tcase INDEXFORMAT_UINT8:\n\t\t\t\t\t\treturn 5121;\n\t\t\t\tcase INDEXFORMAT_UINT16:\n\t\t\t\t\t\treturn 5123;\n\t\t\t\tcase INDEXFORMAT_UINT32:\n\t\t\t\t\t\treturn 5125;\n\t\t}\n\t\treturn 0;\n};\nconst getComponentType = (dataType)=>{\n\t\tswitch(dataType){\n\t\t\t\tcase TYPE_INT8:\n\t\t\t\t\t\treturn 5120;\n\t\t\t\tcase TYPE_UINT8:\n\t\t\t\t\t\treturn 5121;\n\t\t\t\tcase TYPE_INT16:\n\t\t\t\t\t\treturn 5122;\n\t\t\t\tcase TYPE_UINT16:\n\t\t\t\t\t\treturn 5123;\n\t\t\t\tcase TYPE_INT32:\n\t\t\t\t\t\treturn 5124;\n\t\t\t\tcase TYPE_UINT32:\n\t\t\t\t\t\treturn 5125;\n\t\t\t\tcase TYPE_FLOAT32:\n\t\t\t\t\t\treturn 5126;\n\t\t}\n\t\treturn 0;\n};\nconst getAccessorType = (componentCount)=>{\n\t\tswitch(componentCount){\n\t\t\t\tcase 1:\n\t\t\t\t\t\treturn 'SCALAR';\n\t\t\t\tcase 2:\n\t\t\t\t\t\treturn 'VEC2';\n\t\t\t\tcase 3:\n\t\t\t\t\t\treturn 'VEC3';\n\t\t\t\tcase 4:\n\t\t\t\t\t\treturn 'VEC4';\n\t\t}\n\t\treturn 0;\n};\nconst getSemantic = (engineSemantic)=>{\n\t\tswitch(engineSemantic){\n\t\t\t\tcase SEMANTIC_POSITION:\n\t\t\t\t\t\treturn 'POSITION';\n\t\t\t\tcase SEMANTIC_NORMAL:\n\t\t\t\t\t\treturn 'NORMAL';\n\t\t\t\tcase SEMANTIC_TANGENT:\n\t\t\t\t\t\treturn 'TANGENT';\n\t\t\t\tcase SEMANTIC_COLOR:\n\t\t\t\t\t\treturn 'COLOR_0';\n\t\t\t\tcase SEMANTIC_BLENDINDICES:\n\t\t\t\t\t\treturn 'JOINTS_0';\n\t\t\t\tcase SEMANTIC_BLENDWEIGHT:\n\t\t\t\t\t\treturn 'WEIGHTS_0';\n\t\t\t\tcase SEMANTIC_TEXCOORD0:\n\t\t\t\t\t\treturn 'TEXCOORD_0';\n\t\t\t\tcase SEMANTIC_TEXCOORD1:\n\t\t\t\t\t\treturn 'TEXCOORD_1';\n\t\t\t\tcase SEMANTIC_TEXCOORD2:\n\t\t\t\t\t\treturn 'TEXCOORD_2';\n\t\t\t\tcase SEMANTIC_TEXCOORD3:\n\t\t\t\t\t\treturn 'TEXCOORD_3';\n\t\t\t\tcase SEMANTIC_TEXCOORD4:\n\t\t\t\t\t\treturn 'TEXCOORD_4';\n\t\t\t\tcase SEMANTIC_TEXCOORD5:\n\t\t\t\t\t\treturn 'TEXCOORD_5';\n\t\t\t\tcase SEMANTIC_TEXCOORD6:\n\t\t\t\t\t\treturn 'TEXCOORD_6';\n\t\t\t\tcase SEMANTIC_TEXCOORD7:\n\t\t\t\t\t\treturn 'TEXCOORD_7';\n\t\t}\n\t\treturn '';\n};\nconst getFilter = function(filter) {\n\t\tswitch(filter){\n\t\t\t\tcase FILTER_NEAREST:\n\t\t\t\t\t\treturn 9728;\n\t\t\t\tcase FILTER_LINEAR:\n\t\t\t\t\t\treturn 9729;\n\t\t\t\tcase FILTER_NEAREST_MIPMAP_NEAREST:\n\t\t\t\t\t\treturn 9984;\n\t\t\t\tcase FILTER_LINEAR_MIPMAP_NEAREST:\n\t\t\t\t\t\treturn 9985;\n\t\t\t\tcase FILTER_NEAREST_MIPMAP_LINEAR:\n\t\t\t\t\t\treturn 9986;\n\t\t\t\tcase FILTER_LINEAR_MIPMAP_LINEAR:\n\t\t\t\t\t\treturn 9987;\n\t\t}\n\t\treturn 0;\n};\nconst getWrap = function(wrap) {\n\t\tswitch(wrap){\n\t\t\t\tcase ADDRESS_CLAMP_TO_EDGE:\n\t\t\t\t\t\treturn 33071;\n\t\t\t\tcase ADDRESS_MIRRORED_REPEAT:\n\t\t\t\t\t\treturn 33648;\n\t\t\t\tcase ADDRESS_REPEAT:\n\t\t\t\t\t\treturn 10497;\n\t\t}\n\t\treturn 0;\n};\nfunction isCanvasTransparent(canvas) {\n\t\tconst context = canvas.getContext('2d');\n\t\tconst pixelData = context.getImageData(0, 0, canvas.width, canvas.height).data;\n\t\tfor(let i = 3; i < pixelData.length; i += 4){\n\t\t\t\tif (pixelData[i] < 255) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t}\n\t\treturn false;\n}\nconst textureSemantics = [\n\t\t'diffuseMap',\n\t\t'colorMap',\n\t\t'normalMap',\n\t\t'metalnessMap',\n\t\t'emissiveMap'\n];\nclass GltfExporter extends CoreExporter {\n\t\tcollectResources(root) {\n\t\t\t\tconst resources = {\n\t\t\t\t\t\tbuffers: [],\n\t\t\t\t\t\tcameras: [],\n\t\t\t\t\t\tentities: [],\n\t\t\t\t\t\tmaterials: [],\n\t\t\t\t\t\tskins: [],\n\t\t\t\t\t\ttextures: [],\n\t\t\t\t\t\tentityMeshInstances: [],\n\t\t\t\t\t\tbufferViewMap: new Map(),\n\t\t\t\t\t\tcompressableTexture: new Set()\n\t\t\t\t};\n\t\t\t\tconst { materials, buffers, entityMeshInstances, textures } = resources;\n\t\t\t\troot.forEach((entity)=>{\n\t\t\t\t\t\tresources.entities.push(entity);\n\t\t\t\t});\n\t\t\t\tconst collectMeshInstances = (meshInstances)=>{\n\t\t\t\t\t\tmeshInstances.forEach((meshInstance)=>{\n\t\t\t\t\t\t\t\tconst material = meshInstance.material;\n\t\t\t\t\t\t\t\tif (materials.indexOf(material) < 0) {\n\t\t\t\t\t\t\t\t\t\tresources.materials.push(material);\n\t\t\t\t\t\t\t\t\t\ttextureSemantics.forEach((semantic)=>{\n\t\t\t\t\t\t\t\t\t\t\t\tconst texture = material[semantic];\n\t\t\t\t\t\t\t\t\t\t\t\tif (texture && textures.indexOf(texture) < 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (semantic !== 'normalMap') {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tresources.compressableTexture.add(texture);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttextures.push(texture);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst node = meshInstance.node;\n\t\t\t\t\t\t\t\tlet nodeMeshInstances = entityMeshInstances.find((e)=>e.node === node);\n\t\t\t\t\t\t\t\tif (!nodeMeshInstances) {\n\t\t\t\t\t\t\t\t\t\tnodeMeshInstances = {\n\t\t\t\t\t\t\t\t\t\t\t\tnode: node,\n\t\t\t\t\t\t\t\t\t\t\t\tmeshInstances: []\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\tentityMeshInstances.push(nodeMeshInstances);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tnodeMeshInstances.meshInstances.push(meshInstance);\n\t\t\t\t\t\t\t\tconst mesh = meshInstance.mesh;\n\t\t\t\t\t\t\t\tconst vertexBuffer = mesh.vertexBuffer;\n\t\t\t\t\t\t\t\tif (buffers.indexOf(vertexBuffer) < 0) {\n\t\t\t\t\t\t\t\t\t\tbuffers.unshift(vertexBuffer);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst indexBuffer = mesh.indexBuffer[0];\n\t\t\t\t\t\t\t\tif (buffers.indexOf(indexBuffer) < 0) {\n\t\t\t\t\t\t\t\t\t\tbuffers.push(indexBuffer);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (mesh.skin && resources.skins.indexOf(mesh.skin) < 0) {\n\t\t\t\t\t\t\t\t\t\tresources.skins.push(mesh.skin);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t};\n\t\t\t\tresources.entities.forEach((entity)=>{\n\t\t\t\t\t\tif (entity.camera) {\n\t\t\t\t\t\t\t\tresources.cameras.push(entity.camera);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (entity.render && entity.render.enabled) {\n\t\t\t\t\t\t\t\tcollectMeshInstances(entity.render.meshInstances);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (entity.model && entity.model.enabled && entity.model.meshInstances) {\n\t\t\t\t\t\t\t\tcollectMeshInstances(entity.model.meshInstances);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn resources;\n\t\t}\n\t\twriteBufferViews(resources, json) {\n\t\t\t\tjson.bufferViews = [];\n\t\t\t\tfor (const buffer of resources.buffers){\n\t\t\t\t\t\tGltfExporter.writeBufferView(resources, json, buffer);\n\t\t\t\t}\n\t\t}\n\t\tstatic writeBufferView(resources, json, buffer) {\n\t\t\t\tjson.buffers = json.buffers ?? [];\n\t\t\t\tjson.buffers[0] = json.buffers[0] ?? {\n\t\t\t\t\t\tbyteLength: 0\n\t\t\t\t};\n\t\t\t\tconst bufferInfo = json.buffers[0];\n\t\t\t\tbufferInfo.byteLength = math.roundUp(bufferInfo.byteLength, 4);\n\t\t\t\tconst offset = bufferInfo.byteLength;\n\t\t\t\tconst addBufferView = (target, byteLength, byteOffset, byteStride)=>{\n\t\t\t\t\t\tconst bufferView = {\n\t\t\t\t\t\t\t\tbuffer: 0,\n\t\t\t\t\t\t\t\tbyteLength: byteLength,\n\t\t\t\t\t\t\t\tbyteOffset: byteOffset\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (target === ARRAY_BUFFER || target === ELEMENT_ARRAY_BUFFER) {\n\t\t\t\t\t\t\t\tbufferView.target = target;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (byteStride !== undefined) {\n\t\t\t\t\t\t\t\tbufferView.byteStride = byteStride;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn json.bufferViews.push(bufferView) - 1;\n\t\t\t\t};\n\t\t\t\tlet arrayBuffer;\n\t\t\t\tif (buffer instanceof VertexBuffer) {\n\t\t\t\t\t\tarrayBuffer = buffer.lock();\n\t\t\t\t\t\tconst format = buffer.getFormat();\n\t\t\t\t\t\tif (format.interleaved) {\n\t\t\t\t\t\t\t\tconst bufferViewIndex = addBufferView(ARRAY_BUFFER, arrayBuffer.byteLength, offset, format.size);\n\t\t\t\t\t\t\t\tresources.bufferViewMap.set(buffer, [\n\t\t\t\t\t\t\t\t\t\tbufferViewIndex\n\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst bufferViewIndices = [];\n\t\t\t\t\t\t\t\tfor (const element of format.elements){\n\t\t\t\t\t\t\t\t\t\tconst bufferViewIndex = addBufferView(ARRAY_BUFFER, element.size * format.vertexCount, offset + element.offset, element.size);\n\t\t\t\t\t\t\t\t\t\tbufferViewIndices.push(bufferViewIndex);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tresources.bufferViewMap.set(buffer, bufferViewIndices);\n\t\t\t\t\t\t}\n\t\t\t\t} else if (buffer instanceof IndexBuffer) {\n\t\t\t\t\t\tarrayBuffer = buffer.lock();\n\t\t\t\t\t\tconst bufferViewIndex = addBufferView(ELEMENT_ARRAY_BUFFER, arrayBuffer.byteLength, offset);\n\t\t\t\t\t\tresources.bufferViewMap.set(buffer, [\n\t\t\t\t\t\t\t\tbufferViewIndex\n\t\t\t\t\t\t]);\n\t\t\t\t} else {\n\t\t\t\t\t\tarrayBuffer = buffer;\n\t\t\t\t\t\tconst bufferViewIndex = addBufferView(undefined, arrayBuffer.byteLength, offset);\n\t\t\t\t\t\tresources.bufferViewMap.set(buffer, [\n\t\t\t\t\t\t\t\tbufferViewIndex\n\t\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t\tbufferInfo.byteLength += arrayBuffer.byteLength;\n\t\t}\n\t\twriteCameras(resources, json) {\n\t\t\t\tif (resources.cameras.length > 0) {\n\t\t\t\t\t\tjson.cameras = resources.cameras.map((cam)=>{\n\t\t\t\t\t\t\t\tconst projection = cam.projection;\n\t\t\t\t\t\t\t\tconst nearClip = cam.nearClip;\n\t\t\t\t\t\t\t\tconst farClip = cam.farClip;\n\t\t\t\t\t\t\t\tconst camera = {};\n\t\t\t\t\t\t\t\tif (projection === PROJECTION_ORTHOGRAPHIC) {\n\t\t\t\t\t\t\t\t\t\tcamera.type = 'orthographic';\n\t\t\t\t\t\t\t\t\t\tcamera.orthographic = {\n\t\t\t\t\t\t\t\t\t\t\t\txmag: 1,\n\t\t\t\t\t\t\t\t\t\t\t\tymag: 1,\n\t\t\t\t\t\t\t\t\t\t\t\tznear: nearClip,\n\t\t\t\t\t\t\t\t\t\t\t\tzfar: farClip\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tconst fov = cam.fov;\n\t\t\t\t\t\t\t\t\t\tcamera.type = 'perspective';\n\t\t\t\t\t\t\t\t\t\tcamera.perspective = {\n\t\t\t\t\t\t\t\t\t\t\t\tyfov: fov * math.DEG_TO_RAD,\n\t\t\t\t\t\t\t\t\t\t\t\tznear: nearClip,\n\t\t\t\t\t\t\t\t\t\t\t\tzfar: farClip\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn camera;\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t}\n\t\tattachTexture(resources, material, destination, name, textureSemantic, json) {\n\t\t\t\tconst texture = material[textureSemantic];\n\t\t\t\tif (texture) {\n\t\t\t\t\t\tconst textureIndex = resources.textures.indexOf(texture);\n\t\t\t\t\t\tif (textureIndex < 0) console.warn(`Texture ${texture.name} wasn't collected.`);\n\t\t\t\t\t\tdestination[name] = {\n\t\t\t\t\t\t\t\tindex: textureIndex\n\t\t\t\t\t\t};\n\t\t\t\t\t\tconst scale = material[`${textureSemantic}Tiling`];\n\t\t\t\t\t\tconst offset = material[`${textureSemantic}Offset`];\n\t\t\t\t\t\tconst rotation = material[`${textureSemantic}Rotation`];\n\t\t\t\t\t\tif (scale && !scale.equals(Vec2.ONE) || offset && !offset.equals(Vec2.ZERO) || rotation !== 0) {\n\t\t\t\t\t\t\t\tdestination[name].extensions = {\n\t\t\t\t\t\t\t\t\t\tKHR_texture_transform: {}\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tjson.extensionsUsed = json.extensionsUsed ?? [];\n\t\t\t\t\t\t\t\tif (json.extensionsUsed.indexOf('KHR_texture_transform') < 0) {\n\t\t\t\t\t\t\t\t\t\tjson.extensionsUsed.push('KHR_texture_transform');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tjson.extensionsRequired = json.extensionsRequired ?? [];\n\t\t\t\t\t\t\t\tif (json.extensionsRequired.indexOf('KHR_texture_transform') < 0) {\n\t\t\t\t\t\t\t\t\t\tjson.extensionsRequired.push('KHR_texture_transform');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (scale && !scale.equals(Vec2.ONE)) {\n\t\t\t\t\t\t\t\t\t\tdestination[name].extensions.KHR_texture_transform.scale = [\n\t\t\t\t\t\t\t\t\t\t\t\tscale.x,\n\t\t\t\t\t\t\t\t\t\t\t\tscale.y\n\t\t\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (offset && !offset.equals(Vec2.ZERO)) {\n\t\t\t\t\t\t\t\t\t\tdestination[name].extensions.KHR_texture_transform.offset = [\n\t\t\t\t\t\t\t\t\t\t\t\toffset.x,\n\t\t\t\t\t\t\t\t\t\t\t\toffset.y - 1 + scale.y\n\t\t\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (rotation !== 0) {\n\t\t\t\t\t\t\t\t\t\tdestination[name].extensions.KHR_texture_transform.rotation = rotation * math.DEG_TO_RAD;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\twriteStandardMaterial(resources, mat, output, json) {\n\t\t\t\tconst { diffuse, emissive, opacity, metalness, gloss, glossInvert } = mat;\n\t\t\t\tconst pbr = output.pbrMetallicRoughness;\n\t\t\t\tif (!diffuse.equals(Color.WHITE) || opacity !== 1) {\n\t\t\t\t\t\tpbr.baseColorFactor = [\n\t\t\t\t\t\t\t\tdiffuse.r,\n\t\t\t\t\t\t\t\tdiffuse.g,\n\t\t\t\t\t\t\t\tdiffuse.b,\n\t\t\t\t\t\t\t\topacity\n\t\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t\tif (metalness !== 1) {\n\t\t\t\t\t\tpbr.metallicFactor = metalness;\n\t\t\t\t}\n\t\t\t\tconst roughness = glossInvert ? gloss : 1 - gloss;\n\t\t\t\tif (roughness !== 1) {\n\t\t\t\t\t\tpbr.roughnessFactor = roughness;\n\t\t\t\t}\n\t\t\t\tthis.attachTexture(resources, mat, pbr, 'baseColorTexture', 'diffuseMap', json);\n\t\t\t\tthis.attachTexture(resources, mat, pbr, 'metallicRoughnessTexture', 'metalnessMap', json);\n\t\t\t\tif (!emissive.equals(Color.BLACK)) {\n\t\t\t\t\t\toutput.emissiveFactor = [\n\t\t\t\t\t\t\t\temissive.r,\n\t\t\t\t\t\t\t\temissive.g,\n\t\t\t\t\t\t\t\temissive.b\n\t\t\t\t\t\t];\n\t\t\t\t}\n\t\t}\n\t\twriteMaterials(resources, json) {\n\t\t\t\tif (resources.materials.length > 0) {\n\t\t\t\t\t\tjson.materials = resources.materials.map((mat)=>{\n\t\t\t\t\t\t\t\tconst { name, blendType, cull, alphaTest } = mat;\n\t\t\t\t\t\t\t\tconst material = {\n\t\t\t\t\t\t\t\t\t\tpbrMetallicRoughness: {}\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tif (name && name.length > 0) {\n\t\t\t\t\t\t\t\t\t\tmaterial.name = name;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (mat instanceof StandardMaterial) {\n\t\t\t\t\t\t\t\t\t\tthis.writeStandardMaterial(resources, mat, material, json);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (blendType === BLEND_NORMAL) {\n\t\t\t\t\t\t\t\t\t\tmaterial.alphaMode = 'BLEND';\n\t\t\t\t\t\t\t\t} else if (blendType === BLEND_NONE) {\n\t\t\t\t\t\t\t\t\t\tif (alphaTest !== 0) {\n\t\t\t\t\t\t\t\t\t\t\t\tmaterial.alphaMode = 'MASK';\n\t\t\t\t\t\t\t\t\t\t\t\tmaterial.alphaCutoff = alphaTest;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (cull === CULLFACE_NONE) {\n\t\t\t\t\t\t\t\t\t\tmaterial.doubleSided = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.attachTexture(resources, mat, material, 'normalTexture', 'normalMap', json);\n\t\t\t\t\t\t\t\tthis.attachTexture(resources, mat, material, 'occlusionTexture', 'aoMap', json);\n\t\t\t\t\t\t\t\tthis.attachTexture(resources, mat, material, 'emissiveTexture', 'emissiveMap', json);\n\t\t\t\t\t\t\t\treturn material;\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t}\n\t\twriteNodes(resources, json) {\n\t\t\t\tif (resources.entities.length > 0) {\n\t\t\t\t\t\tjson.nodes = resources.entities.map((entity)=>{\n\t\t\t\t\t\t\t\tconst name = entity.name;\n\t\t\t\t\t\t\t\tconst t = entity.getLocalPosition();\n\t\t\t\t\t\t\t\tconst r = entity.getLocalRotation();\n\t\t\t\t\t\t\t\tconst s = entity.getLocalScale();\n\t\t\t\t\t\t\t\tconst node = {};\n\t\t\t\t\t\t\t\tif (name && name.length > 0) {\n\t\t\t\t\t\t\t\t\t\tnode.name = name;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (!t.equals(Vec3.ZERO)) {\n\t\t\t\t\t\t\t\t\t\tnode.translation = [\n\t\t\t\t\t\t\t\t\t\t\t\tt.x,\n\t\t\t\t\t\t\t\t\t\t\t\tt.y,\n\t\t\t\t\t\t\t\t\t\t\t\tt.z\n\t\t\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (!r.equals(Quat.IDENTITY)) {\n\t\t\t\t\t\t\t\t\t\tnode.rotation = [\n\t\t\t\t\t\t\t\t\t\t\t\tr.x,\n\t\t\t\t\t\t\t\t\t\t\t\tr.y,\n\t\t\t\t\t\t\t\t\t\t\t\tr.z,\n\t\t\t\t\t\t\t\t\t\t\t\tr.w\n\t\t\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (!s.equals(Vec3.ONE)) {\n\t\t\t\t\t\t\t\t\t\tnode.scale = [\n\t\t\t\t\t\t\t\t\t\t\t\ts.x,\n\t\t\t\t\t\t\t\t\t\t\t\ts.y,\n\t\t\t\t\t\t\t\t\t\t\t\ts.z\n\t\t\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (entity.camera && entity.camera.enabled) {\n\t\t\t\t\t\t\t\t\t\tnode.camera = resources.cameras.indexOf(entity.camera);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst entityMeshInstance = resources.entityMeshInstances.find((e)=>e.node === entity);\n\t\t\t\t\t\t\t\tif (entityMeshInstance) {\n\t\t\t\t\t\t\t\t\t\tnode.mesh = resources.entityMeshInstances.indexOf(entityMeshInstance);\n\t\t\t\t\t\t\t\t\t\tconst meshInstance = entityMeshInstance.meshInstances[0];\n\t\t\t\t\t\t\t\t\t\tif (meshInstance && meshInstance.mesh.skin) {\n\t\t\t\t\t\t\t\t\t\t\t\tnode.skin = resources.skins.indexOf(meshInstance.mesh.skin);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (entity.children.length > 0) {\n\t\t\t\t\t\t\t\t\t\tnode.children = [];\n\t\t\t\t\t\t\t\t\t\tentity.children.forEach((child)=>{\n\t\t\t\t\t\t\t\t\t\t\t\tnode.children.push(resources.entities.indexOf(child));\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn node;\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t}\n\t\twriteMeshes(resources, json, options) {\n\t\t\t\tif (resources.entityMeshInstances.length > 0) {\n\t\t\t\t\t\tjson.accessors = [];\n\t\t\t\t\t\tjson.meshes = [];\n\t\t\t\t\t\tresources.entityMeshInstances.forEach((entityMeshInstances)=>{\n\t\t\t\t\t\t\t\tconst mesh = {\n\t\t\t\t\t\t\t\t\t\tprimitives: []\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tconst meshInstances = entityMeshInstances.meshInstances;\n\t\t\t\t\t\t\t\tmeshInstances.forEach((meshInstance)=>{\n\t\t\t\t\t\t\t\t\t\tconst primitive = GltfExporter.createPrimitive(resources, json, meshInstance.mesh, options);\n\t\t\t\t\t\t\t\t\t\tprimitive.material = resources.materials.indexOf(meshInstance.material);\n\t\t\t\t\t\t\t\t\t\tmesh.primitives.push(primitive);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tjson.meshes.push(mesh);\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t}\n\t\tstatic createPrimitive(resources, json, mesh, options = {}) {\n\t\t\t\tconst primitive = {\n\t\t\t\t\t\tattributes: {}\n\t\t\t\t};\n\t\t\t\tconst { vertexBuffer } = mesh;\n\t\t\t\tconst { format } = vertexBuffer;\n\t\t\t\tconst { interleaved, elements } = format;\n\t\t\t\tconst numVertices = vertexBuffer.getNumVertices();\n\t\t\t\telements.forEach((element, elementIndex)=>{\n\t\t\t\t\t\tconst semantic = getSemantic(element.name);\n\t\t\t\t\t\tif (options.stripUnusedAttributes) {\n\t\t\t\t\t\t\t\tlet isUsed = true;\n\t\t\t\t\t\t\t\tif (semantic.startsWith('TEXCOORD_')) {\n\t\t\t\t\t\t\t\t\t\tconst texCoordIndex = parseInt(semantic.split('_')[1], 10);\n\t\t\t\t\t\t\t\t\t\tisUsed = resources.materials.some((material)=>{\n\t\t\t\t\t\t\t\t\t\t\t\treturn textureSemantics.some((texSemantic)=>{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst texture = material[texSemantic];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn texture && (texCoordIndex === 0 || material[`${texSemantic}Tiling`]?.uv === texCoordIndex);\n\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (semantic === 'COLOR_0') {\n\t\t\t\t\t\t\t\t\t\tisUsed = resources.materials.some((material)=>material.vertexColors);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (semantic === 'TANGENT') {\n\t\t\t\t\t\t\t\t\t\tisUsed = resources.materials.some((material)=>material.normalMap);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (semantic === 'JOINTS_0' || semantic === 'WEIGHTS_0') {\n\t\t\t\t\t\t\t\t\t\tisUsed = resources.entityMeshInstances.some((emi)=>emi.meshInstances.some((mi)=>mi.mesh.skin));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (!isUsed) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlet bufferView = resources.bufferViewMap.get(vertexBuffer);\n\t\t\t\t\t\tif (!bufferView) {\n\t\t\t\t\t\t\t\tGltfExporter.writeBufferView(resources, json, vertexBuffer);\n\t\t\t\t\t\t\t\tresources.buffers.push(vertexBuffer);\n\t\t\t\t\t\t\t\tbufferView = resources.bufferViewMap.get(vertexBuffer);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst viewIndex = bufferView[interleaved ? 0 : elementIndex];\n\t\t\t\t\t\tconst accessor = {\n\t\t\t\t\t\t\t\tbufferView: viewIndex,\n\t\t\t\t\t\t\t\tbyteOffset: interleaved ? element.offset : 0,\n\t\t\t\t\t\t\t\tcomponentType: getComponentType(element.dataType),\n\t\t\t\t\t\t\t\ttype: getAccessorType(element.numComponents),\n\t\t\t\t\t\t\t\tcount: numVertices\n\t\t\t\t\t\t};\n\t\t\t\t\t\tconst idx = json.accessors.push(accessor) - 1;\n\t\t\t\t\t\tprimitive.attributes[semantic] = idx;\n\t\t\t\t\t\tif (element.name === SEMANTIC_POSITION) {\n\t\t\t\t\t\t\t\tconst positions = [];\n\t\t\t\t\t\t\t\tmesh.getPositions(positions);\n\t\t\t\t\t\t\t\tconst min = new Vec3();\n\t\t\t\t\t\t\t\tconst max = new Vec3();\n\t\t\t\t\t\t\t\tBoundingBox.computeMinMax(positions, min, max);\n\t\t\t\t\t\t\t\taccessor.min = [\n\t\t\t\t\t\t\t\t\t\tmin.x,\n\t\t\t\t\t\t\t\t\t\tmin.y,\n\t\t\t\t\t\t\t\t\t\tmin.z\n\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\taccessor.max = [\n\t\t\t\t\t\t\t\t\t\tmax.x,\n\t\t\t\t\t\t\t\t\t\tmax.y,\n\t\t\t\t\t\t\t\t\t\tmax.z\n\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tconst indexBuffer = mesh.indexBuffer[0];\n\t\t\t\tif (indexBuffer) {\n\t\t\t\t\t\tlet bufferView = resources.bufferViewMap.get(indexBuffer);\n\t\t\t\t\t\tif (!bufferView) {\n\t\t\t\t\t\t\t\tGltfExporter.writeBufferView(resources, json, indexBuffer);\n\t\t\t\t\t\t\t\tresources.buffers.push(indexBuffer);\n\t\t\t\t\t\t\t\tbufferView = resources.bufferViewMap.get(indexBuffer);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst viewIndex = bufferView[0];\n\t\t\t\t\t\tconst accessor = {\n\t\t\t\t\t\t\t\tbufferView: viewIndex,\n\t\t\t\t\t\t\t\tcomponentType: getIndexComponentType(indexBuffer.getFormat()),\n\t\t\t\t\t\t\t\tcount: indexBuffer.getNumIndices(),\n\t\t\t\t\t\t\t\ttype: 'SCALAR'\n\t\t\t\t\t\t};\n\t\t\t\t\t\tconst idx = json.accessors.push(accessor) - 1;\n\t\t\t\t\t\tprimitive.indices = idx;\n\t\t\t\t}\n\t\t\t\treturn primitive;\n\t\t}\n\t\twriteSkins(resources, json) {\n\t\t\t\tif (resources.skins.length > 0) {\n\t\t\t\t\t\tjson.skins = resources.skins.map((skin)=>{\n\t\t\t\t\t\t\t\tconst matrices = new Float32Array(skin.inverseBindPose.length * 16);\n\t\t\t\t\t\t\t\tfor(let i = 0; i < skin.inverseBindPose.length; i++){\n\t\t\t\t\t\t\t\t\t\tconst ibm = skin.inverseBindPose[i];\n\t\t\t\t\t\t\t\t\t\tmatrices.set(ibm.data, i * 16);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst matrixBuffer = matrices.buffer;\n\t\t\t\t\t\t\t\tGltfExporter.writeBufferView(resources, json, matrixBuffer);\n\t\t\t\t\t\t\t\tresources.buffers.push(matrixBuffer);\n\t\t\t\t\t\t\t\tconst bufferView = resources.bufferViewMap.get(matrixBuffer);\n\t\t\t\t\t\t\t\tconst accessor = {\n\t\t\t\t\t\t\t\t\t\tbufferView: bufferView[0],\n\t\t\t\t\t\t\t\t\t\tcomponentType: getComponentType(TYPE_FLOAT32),\n\t\t\t\t\t\t\t\t\t\tcount: skin.inverseBindPose.length,\n\t\t\t\t\t\t\t\t\t\ttype: 'MAT4'\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tconst accessorIndex = json.accessors.push(accessor) - 1;\n\t\t\t\t\t\t\t\tconst joints = skin.boneNames.map((boneName)=>{\n\t\t\t\t\t\t\t\t\t\tconst node = resources.entities.find((entity)=>entity.name === boneName);\n\t\t\t\t\t\t\t\t\t\treturn resources.entities.indexOf(node);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\tinverseBindMatrices: accessorIndex,\n\t\t\t\t\t\t\t\t\t\tjoints: joints\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t}\n\t\tconvertTextures(srcTextures, options) {\n\t\t\t\tconst textureOptions = {\n\t\t\t\t\t\tmaxTextureSize: options.maxTextureSize\n\t\t\t\t};\n\t\t\t\tconst promises = [];\n\t\t\t\tsrcTextures.forEach((srcTexture)=>{\n\t\t\t\t\t\tconst promise = this.textureToCanvas(srcTexture, textureOptions);\n\t\t\t\t\t\tpromise.then((canvas)=>{\n\t\t\t\t\t\t\t\treturn new Promise((resolve)=>resolve(canvas));\n\t\t\t\t\t\t});\n\t\t\t\t\t\tpromises.push(promise);\n\t\t\t\t});\n\t\t\t\treturn promises;\n\t\t}\n\t\twriteTextures(resources, textureCanvases, json, options) {\n\t\t\t\tconst textures = resources.textures;\n\t\t\t\tconst promises = [];\n\t\t\t\tfor(let i = 0; i < textureCanvases.length; i++){\n\t\t\t\t\t\tconst texture = textures[i];\n\t\t\t\t\t\tconst canvas = textureCanvases[i];\n\t\t\t\t\t\tconst isRGBA = isCanvasTransparent(canvas) || !resources.compressableTexture.has(texture);\n\t\t\t\t\t\tconst mimeType = isRGBA ? 'image/png' : 'image/jpeg';\n\t\t\t\t\t\tpromises.push(this.getBlob(canvas, mimeType).then((blob)=>{\n\t\t\t\t\t\t\t\tconst reader = new FileReader();\n\t\t\t\t\t\t\t\treader.readAsArrayBuffer(blob);\n\t\t\t\t\t\t\t\treturn new Promise((resolve)=>{\n\t\t\t\t\t\t\t\t\t\treader.onloadend = ()=>{\n\t\t\t\t\t\t\t\t\t\t\t\tresolve(reader);\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}).then((reader)=>{\n\t\t\t\t\t\t\t\tconst buffer = this.getPaddedArrayBuffer(reader.result);\n\t\t\t\t\t\t\t\tGltfExporter.writeBufferView(resources, json, buffer);\n\t\t\t\t\t\t\t\tresources.buffers.push(buffer);\n\t\t\t\t\t\t\t\tconst bufferView = resources.bufferViewMap.get(buffer);\n\t\t\t\t\t\t\t\tjson.images[i] = {\n\t\t\t\t\t\t\t\t\t\tmimeType: mimeType,\n\t\t\t\t\t\t\t\t\t\tbufferView: bufferView[0]\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tjson.samplers[i] = {\n\t\t\t\t\t\t\t\t\t\tminFilter: getFilter(texture.minFilter),\n\t\t\t\t\t\t\t\t\t\tmagFilter: getFilter(texture.magFilter),\n\t\t\t\t\t\t\t\t\t\twrapS: getWrap(texture.addressU),\n\t\t\t\t\t\t\t\t\t\twrapT: getWrap(texture.addressV)\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tjson.textures[i] = {\n\t\t\t\t\t\t\t\t\t\tsampler: i,\n\t\t\t\t\t\t\t\t\t\tsource: i\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}));\n\t\t\t\t}\n\t\t\t\treturn Promise.all(promises);\n\t\t}\n\t\tgetBlob(canvas, mimeType) {\n\t\t\t\tif (canvas.toBlob !== undefined) {\n\t\t\t\t\t\treturn new Promise((resolve)=>{\n\t\t\t\t\t\t\t\tcanvas.toBlob(resolve, mimeType);\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tlet quality = 1.0;\n\t\t\t\tif (mimeType === 'image/jpeg') {\n\t\t\t\t\t\tquality = 0.92;\n\t\t\t\t}\n\t\t\t\treturn canvas.convertToBlob({\n\t\t\t\t\t\ttype: mimeType,\n\t\t\t\t\t\tquality: quality\n\t\t\t\t});\n\t\t}\n\t\tgetPaddedArrayBuffer(arrayBuffer, paddingByte = 0) {\n\t\t\t\tconst paddedLength = math.roundUp(arrayBuffer.byteLength, 4);\n\t\t\t\tif (paddedLength !== arrayBuffer.byteLength) {\n\t\t\t\t\t\tconst array = new Uint8Array(paddedLength);\n\t\t\t\t\t\tarray.set(new Uint8Array(arrayBuffer));\n\t\t\t\t\t\tif (paddingByte !== 0) {\n\t\t\t\t\t\t\t\tfor(let i = arrayBuffer.byteLength; i < paddedLength; i++){\n\t\t\t\t\t\t\t\t\t\tarray[i] = paddingByte;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn array.buffer;\n\t\t\t\t}\n\t\t\t\treturn arrayBuffer;\n\t\t}\n\t\tbuildJson(resources, options) {\n\t\t\t\tconst promises = this.convertTextures(resources.textures, options);\n\t\t\t\treturn Promise.all(promises).then(async (textureCanvases)=>{\n\t\t\t\t\t\tconst json = {\n\t\t\t\t\t\t\t\tasset: {\n\t\t\t\t\t\t\t\t\t\tversion: '2.0',\n\t\t\t\t\t\t\t\t\t\tgenerator: 'PlayCanvas GltfExporter'\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tscenes: [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tnodes: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\timages: [],\n\t\t\t\t\t\t\t\tsamplers: [],\n\t\t\t\t\t\t\t\ttextures: [],\n\t\t\t\t\t\t\t\tscene: 0\n\t\t\t\t\t\t};\n\t\t\t\t\t\tthis.writeBufferViews(resources, json);\n\t\t\t\t\t\tthis.writeCameras(resources, json);\n\t\t\t\t\t\tthis.writeMeshes(resources, json, options);\n\t\t\t\t\t\tthis.writeMaterials(resources, json);\n\t\t\t\t\t\tthis.writeNodes(resources, json, options);\n\t\t\t\t\t\tthis.writeSkins(resources, json);\n\t\t\t\t\t\tawait this.writeTextures(resources, textureCanvases, json, options);\n\t\t\t\t\t\tif (!json.images.length) delete json.images;\n\t\t\t\t\t\tif (!json.samplers.length) delete json.samplers;\n\t\t\t\t\t\tif (!json.textures.length) delete json.textures;\n\t\t\t\t\t\treturn json;\n\t\t\t\t});\n\t\t}\n\t\tbuild(entity, options = {}) {\n\t\t\t\tconst resources = this.collectResources(entity);\n\t\t\t\treturn this.buildJson(resources, options).then((json)=>{\n\t\t\t\t\t\tconst encoder = new TextEncoder();\n\t\t\t\t\t\tconst jsonData = encoder.encode(JSON.stringify(json));\n\t\t\t\t\t\tconst headerLength = 12;\n\t\t\t\t\t\tconst jsonHeaderLength = 8;\n\t\t\t\t\t\tconst jsonDataLength = jsonData.length;\n\t\t\t\t\t\tconst jsonPaddingLength = 4 - (jsonDataLength & 3) & 3;\n\t\t\t\t\t\tconst binaryHeaderLength = 8;\n\t\t\t\t\t\tconst binaryDataLength = json.buffers.reduce((total, buffer)=>math.roundUp(total + buffer.byteLength, 4), 0);\n\t\t\t\t\t\tlet totalLength = headerLength + jsonHeaderLength + jsonDataLength + jsonPaddingLength;\n\t\t\t\t\t\tif (binaryDataLength > 0) {\n\t\t\t\t\t\t\t\ttotalLength += binaryHeaderLength + binaryDataLength;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst glbBuffer = new ArrayBuffer(totalLength);\n\t\t\t\t\t\tconst glbView = new DataView(glbBuffer);\n\t\t\t\t\t\tglbView.setUint32(0, 0x46546C67, true);\n\t\t\t\t\t\tglbView.setUint32(4, 2, true);\n\t\t\t\t\t\tglbView.setUint32(8, totalLength, true);\n\t\t\t\t\t\tglbView.setUint32(12, jsonDataLength + jsonPaddingLength, true);\n\t\t\t\t\t\tglbView.setUint32(16, 0x4E4F534A, true);\n\t\t\t\t\t\tlet offset = headerLength + jsonHeaderLength;\n\t\t\t\t\t\tnew Uint8Array(glbBuffer, offset, jsonDataLength).set(jsonData);\n\t\t\t\t\t\toffset += jsonDataLength;\n\t\t\t\t\t\tfor(let i = 0; i < jsonPaddingLength; i++){\n\t\t\t\t\t\t\t\tglbView.setUint8(offset + i, 0x20);\n\t\t\t\t\t\t}\n\t\t\t\t\t\toffset += jsonPaddingLength;\n\t\t\t\t\t\tif (binaryDataLength > 0) {\n\t\t\t\t\t\t\t\tglbView.setUint32(offset, binaryDataLength, true);\n\t\t\t\t\t\t\t\tglbView.setUint32(offset + 4, 0x004E4942, true);\n\t\t\t\t\t\t\t\toffset += binaryHeaderLength;\n\t\t\t\t\t\t\t\tresources.buffers.forEach((buffer)=>{\n\t\t\t\t\t\t\t\t\t\tlet src;\n\t\t\t\t\t\t\t\t\t\tconst bufferViewId = resources.bufferViewMap.get(buffer)[0];\n\t\t\t\t\t\t\t\t\t\tconst bufferOffset = json.bufferViews[bufferViewId].byteOffset;\n\t\t\t\t\t\t\t\t\t\tif (buffer instanceof ArrayBuffer) {\n\t\t\t\t\t\t\t\t\t\t\t\tsrc = new Uint8Array(buffer);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tconst srcBuffer = buffer.lock();\n\t\t\t\t\t\t\t\t\t\t\t\tif (srcBuffer instanceof ArrayBuffer) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsrc = new Uint8Array(srcBuffer);\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsrc = new Uint8Array(srcBuffer.buffer, srcBuffer.byteOffset, srcBuffer.byteLength);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tconst dst = new Uint8Array(glbBuffer, offset + bufferOffset, src.byteLength);\n\t\t\t\t\t\t\t\t\t\tdst.set(src);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn Promise.resolve(glbBuffer);\n\t\t\t\t});\n\t\t}\n}\n\nconst SSAOTYPE_NONE = 'none';\nconst SSAOTYPE_LIGHTING = 'lighting';\nconst SSAOTYPE_COMBINE = 'combine';\n\nvar glslDownsamplePS = `\nuniform sampler2D sourceTexture;\nuniform vec2 sourceInvResolution;\nvarying vec2 uv0;\n#ifdef PREMULTIPLY\n\tuniform sampler2D premultiplyTexture;\n#endif\nvoid main()\n{\n\tvec3 e = texture2D (sourceTexture, uv0).rgb;\n\t#ifdef BOXFILTER\n\t\tvec3 value = e;\n\t\t#ifdef PREMULTIPLY\n\t\t\tfloat premultiply = texture2D(premultiplyTexture, uv0).{PREMULTIPLY_SRC_CHANNEL};\n\t\t\tvalue *= vec3(premultiply);\n\t\t#endif\n\t#else\n\t\tfloat x = sourceInvResolution.x;\n\t\tfloat y = sourceInvResolution.y;\n\t\tvec3 a = texture2D(sourceTexture, vec2 (uv0.x - 2.0 * x, uv0.y + 2.0 * y)).rgb;\n\t\tvec3 b = texture2D(sourceTexture, vec2 (uv0.x,\t\t   uv0.y + 2.0 * y)).rgb;\n\t\tvec3 c = texture2D(sourceTexture, vec2 (uv0.x + 2.0 * x, uv0.y + 2.0 * y)).rgb;\n\t\tvec3 d = texture2D(sourceTexture, vec2 (uv0.x - 2.0 * x, uv0.y)).rgb;\n\t\tvec3 f = texture2D(sourceTexture, vec2 (uv0.x + 2.0 * x, uv0.y)).rgb;\n\t\tvec3 g = texture2D(sourceTexture, vec2 (uv0.x - 2.0 * x, uv0.y - 2.0 * y)).rgb;\n\t\tvec3 h = texture2D(sourceTexture, vec2 (uv0.x,\t\t   uv0.y - 2.0 * y)).rgb;\n\t\tvec3 i = texture2D(sourceTexture, vec2 (uv0.x + 2.0 * x, uv0.y - 2.0 * y)).rgb;\n\t\tvec3 j = texture2D(sourceTexture, vec2 (uv0.x - x, uv0.y + y)).rgb;\n\t\tvec3 k = texture2D(sourceTexture, vec2 (uv0.x + x, uv0.y + y)).rgb;\n\t\tvec3 l = texture2D(sourceTexture, vec2 (uv0.x - x, uv0.y - y)).rgb;\n\t\tvec3 m = texture2D(sourceTexture, vec2 (uv0.x + x, uv0.y - y)).rgb;\n\t\tvec3 value = e * 0.125;\n\t\tvalue += (a + c + g + i) * 0.03125;\n\t\tvalue += (b + d + f + h) * 0.0625;\n\t\tvalue += (j + k + l + m) * 0.125;\n\t#endif\n\t#ifdef REMOVE_INVALID\n\t\tvalue = max(value, vec3(0.0));\n\t#endif\n\tgl_FragColor = vec4(value, 1.0);\n}\n`;\n\nvar wgslDownsamplePS = `\nvar sourceTexture: texture_2d<f32>;\nvar sourceTextureSampler: sampler;\nuniform sourceInvResolution: vec2f;\nvarying uv0: vec2f;\n#ifdef PREMULTIPLY\n\tvar premultiplyTexture: texture_2d<f32>;\n\tvar premultiplyTextureSampler: sampler;\n#endif\n@fragment\nfn fragmentMain(input: FragmentInput) -> FragmentOutput {\n\tvar output: FragmentOutput;\n\tlet e: vec3f = textureSample(sourceTexture, sourceTextureSampler, input.uv0).rgb;\n\t#ifdef BOXFILTER\n\t\tvar value: vec3f = e;\n\t\t#ifdef PREMULTIPLY\n\t\t\tlet premultiply: f32 = textureSample(premultiplyTexture, premultiplyTextureSampler, input.uv0).{PREMULTIPLY_SRC_CHANNEL};\n\t\t\tvalue = value * vec3f(premultiply);\n\t\t#endif\n\t#else\n\t\tlet x: f32 = uniform.sourceInvResolution.x;\n\t\tlet y: f32 = uniform.sourceInvResolution.y;\n\t\tlet a: vec3f = textureSample(sourceTexture, sourceTextureSampler, vec2f(input.uv0.x - 2.0 * x, input.uv0.y + 2.0 * y)).rgb;\n\t\tlet b: vec3f = textureSample(sourceTexture, sourceTextureSampler, vec2f(input.uv0.x,\t\t   input.uv0.y + 2.0 * y)).rgb;\n\t\tlet c: vec3f = textureSample(sourceTexture, sourceTextureSampler, vec2f(input.uv0.x + 2.0 * x, input.uv0.y + 2.0 * y)).rgb;\n\t\tlet d: vec3f = textureSample(sourceTexture, sourceTextureSampler, vec2f(input.uv0.x - 2.0 * x, input.uv0.y)).rgb;\n\t\tlet f: vec3f = textureSample(sourceTexture, sourceTextureSampler, vec2f(input.uv0.x + 2.0 * x, input.uv0.y)).rgb;\n\t\tlet g: vec3f = textureSample(sourceTexture, sourceTextureSampler, vec2f(input.uv0.x - 2.0 * x, input.uv0.y - 2.0 * y)).rgb;\n\t\tlet h: vec3f = textureSample(sourceTexture, sourceTextureSampler, vec2f(input.uv0.x,\t\t   input.uv0.y - 2.0 * y)).rgb;\n\t\tlet i: vec3f = textureSample(sourceTexture, sourceTextureSampler, vec2f(input.uv0.x + 2.0 * x, input.uv0.y - 2.0 * y)).rgb;\n\t\tlet j: vec3f = textureSample(sourceTexture, sourceTextureSampler, vec2f(input.uv0.x - x, input.uv0.y + y)).rgb;\n\t\tlet k: vec3f = textureSample(sourceTexture, sourceTextureSampler, vec2f(input.uv0.x + x, input.uv0.y + y)).rgb;\n\t\tlet l: vec3f = textureSample(sourceTexture, sourceTextureSampler, vec2f(input.uv0.x - x, input.uv0.y - y)).rgb;\n\t\tlet m: vec3f = textureSample(sourceTexture, sourceTextureSampler, vec2f(input.uv0.x + x, input.uv0.y - y)).rgb;\n\t\tvar value: vec3f = e * 0.125;\n\t\tvalue = value + (a + c + g + i) * 0.03125;\n\t\tvalue = value + (b + d + f + h) * 0.0625;\n\t\tvalue = value + (j + k + l + m) * 0.125;\n\t#endif\n\t#ifdef REMOVE_INVALID\n\t\tvalue = max(value, vec3f(0.0));\n\t#endif\n\toutput.color = vec4f(value, 1.0);\n\treturn output;\n}\n`;\n\nclass RenderPassDownsample extends RenderPassShaderQuad {\n\t\tconstructor(device, sourceTexture, options = {}){\n\t\t\t\tsuper(device);\n\t\t\t\tthis.sourceTexture = sourceTexture;\n\t\t\t\tthis.premultiplyTexture = options.premultiplyTexture;\n\t\t\t\tShaderChunks.get(device, SHADERLANGUAGE_GLSL).set('downsamplePS', glslDownsamplePS);\n\t\t\t\tShaderChunks.get(device, SHADERLANGUAGE_WGSL).set('downsamplePS', wgslDownsamplePS);\n\t\t\t\tconst boxFilter = options.boxFilter ?? false;\n\t\t\t\tconst key = `${boxFilter ? 'Box' : ''}-${options.premultiplyTexture ? 'Premultiply' : ''}-${options.premultiplySrcChannel ?? ''}-${options.removeInvalid ? 'RemoveInvalid' : ''}`;\n\t\t\t\tconst defines = new Map();\n\t\t\t\tif (boxFilter) defines.set('BOXFILTER', '');\n\t\t\t\tif (options.premultiplyTexture) defines.set('PREMULTIPLY', '');\n\t\t\t\tif (options.removeInvalid) defines.set('REMOVE_INVALID', '');\n\t\t\t\tdefines.set('{PREMULTIPLY_SRC_CHANNEL}', options.premultiplySrcChannel ?? 'x');\n\t\t\t\tthis.shader = ShaderUtils.createShader(device, {\n\t\t\t\t\t\tuniqueName: `DownSampleShader:${key}`,\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\taPosition: SEMANTIC_POSITION\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvertexChunk: 'quadVS',\n\t\t\t\t\t\tfragmentChunk: 'downsamplePS',\n\t\t\t\t\t\tfragmentDefines: defines\n\t\t\t\t});\n\t\t\t\tthis.sourceTextureId = device.scope.resolve('sourceTexture');\n\t\t\t\tthis.premultiplyTextureId = device.scope.resolve('premultiplyTexture');\n\t\t\t\tthis.sourceInvResolutionId = device.scope.resolve('sourceInvResolution');\n\t\t\t\tthis.sourceInvResolutionValue = new Float32Array(2);\n\t\t}\n\t\tsetSourceTexture(value) {\n\t\t\t\tthis._sourceTexture = value;\n\t\t\t\tthis.options.resizeSource = value;\n\t\t}\n\t\texecute() {\n\t\t\t\tthis.sourceTextureId.setValue(this.sourceTexture);\n\t\t\t\tif (this.premultiplyTexture) {\n\t\t\t\t\t\tthis.premultiplyTextureId.setValue(this.premultiplyTexture);\n\t\t\t\t}\n\t\t\t\tthis.sourceInvResolutionValue[0] = 1.0 / this.sourceTexture.width;\n\t\t\t\tthis.sourceInvResolutionValue[1] = 1.0 / this.sourceTexture.height;\n\t\t\t\tthis.sourceInvResolutionId.setValue(this.sourceInvResolutionValue);\n\t\t\t\tsuper.execute();\n\t\t}\n}\n\nvar glslUpsamplePS = `\n\tuniform sampler2D sourceTexture;\n\tuniform vec2 sourceInvResolution;\n\tvarying vec2 uv0;\n\tvoid main()\n\t{\n\t\tfloat x = sourceInvResolution.x;\n\t\tfloat y = sourceInvResolution.y;\n\t\tvec3 a = texture2D (sourceTexture, vec2 (uv0.x - x, uv0.y + y)).rgb;\n\t\tvec3 b = texture2D (sourceTexture, vec2 (uv0.x,\t uv0.y + y)).rgb;\n\t\tvec3 c = texture2D (sourceTexture, vec2 (uv0.x + x, uv0.y + y)).rgb;\n\t\tvec3 d = texture2D (sourceTexture, vec2 (uv0.x - x, uv0.y)).rgb;\n\t\tvec3 e = texture2D (sourceTexture, vec2 (uv0.x,\t uv0.y)).rgb;\n\t\tvec3 f = texture2D (sourceTexture, vec2 (uv0.x + x, uv0.y)).rgb;\n\t\tvec3 g = texture2D (sourceTexture, vec2 (uv0.x - x, uv0.y - y)).rgb;\n\t\tvec3 h = texture2D (sourceTexture, vec2 (uv0.x,\t uv0.y - y)).rgb;\n\t\tvec3 i = texture2D (sourceTexture, vec2 (uv0.x + x, uv0.y - y)).rgb;\n\t\tvec3 value = e * 4.0;\n\t\tvalue += (b + d + f + h) * 2.0;\n\t\tvalue += (a + c + g + i);\n\t\tvalue *= 1.0 / 16.0;\n\t\tgl_FragColor = vec4(value, 1.0);\n\t}\n`;\n\nvar wgslUpsamplePS = `\n\tvar sourceTexture: texture_2d<f32>;\n\tvar sourceTextureSampler: sampler;\n\tuniform sourceInvResolution: vec2f;\n\tvarying uv0: vec2f;\n\t@fragment\n\tfn fragmentMain(input: FragmentInput) -> FragmentOutput {\n\t\tvar output: FragmentOutput;\n\t\tlet x: f32 = uniform.sourceInvResolution.x;\n\t\tlet y: f32 = uniform.sourceInvResolution.y;\n\t\tlet a: vec3f = textureSample(sourceTexture, sourceTextureSampler, vec2f(input.uv0.x - x, input.uv0.y + y)).rgb;\n\t\tlet b: vec3f = textureSample(sourceTexture, sourceTextureSampler, vec2f(input.uv0.x,\t input.uv0.y + y)).rgb;\n\t\tlet c: vec3f = textureSample(sourceTexture, sourceTextureSampler, vec2f(input.uv0.x + x, input.uv0.y + y)).rgb;\n\t\tlet d: vec3f = textureSample(sourceTexture, sourceTextureSampler, vec2f(input.uv0.x - x, input.uv0.y)).rgb;\n\t\tlet e: vec3f = textureSample(sourceTexture, sourceTextureSampler, vec2f(input.uv0.x,\t input.uv0.y)).rgb;\n\t\tlet f: vec3f = textureSample(sourceTexture, sourceTextureSampler, vec2f(input.uv0.x + x, input.uv0.y)).rgb;\n\t\tlet g: vec3f = textureSample(sourceTexture, sourceTextureSampler, vec2f(input.uv0.x - x, input.uv0.y - y)).rgb;\n\t\tlet h: vec3f = textureSample(sourceTexture, sourceTextureSampler, vec2f(input.uv0.x,\t input.uv0.y - y)).rgb;\n\t\tlet i: vec3f = textureSample(sourceTexture, sourceTextureSampler, vec2f(input.uv0.x + x, input.uv0.y - y)).rgb;\n\t\tvar value: vec3f = e * 4.0;\n\t\tvalue = value + (b + d + f + h) * 2.0;\n\t\tvalue = value + (a + c + g + i);\n\t\tvalue = value * (1.0 / 16.0);\n\t\toutput.color = vec4f(value, 1.0);\n\t\treturn output;\n\t}\n`;\n\nclass RenderPassUpsample extends RenderPassShaderQuad {\n\t\tconstructor(device, sourceTexture){\n\t\t\t\tsuper(device);\n\t\t\t\tthis.sourceTexture = sourceTexture;\n\t\t\t\tShaderChunks.get(device, SHADERLANGUAGE_GLSL).set('upsamplePS', glslUpsamplePS);\n\t\t\t\tShaderChunks.get(device, SHADERLANGUAGE_WGSL).set('upsamplePS', wgslUpsamplePS);\n\t\t\t\tthis.shader = ShaderUtils.createShader(device, {\n\t\t\t\t\t\tuniqueName: 'UpSampleShader',\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\taPosition: SEMANTIC_POSITION\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvertexChunk: 'quadVS',\n\t\t\t\t\t\tfragmentChunk: 'upsamplePS'\n\t\t\t\t});\n\t\t\t\tthis.sourceTextureId = device.scope.resolve('sourceTexture');\n\t\t\t\tthis.sourceInvResolutionId = device.scope.resolve('sourceInvResolution');\n\t\t\t\tthis.sourceInvResolutionValue = new Float32Array(2);\n\t\t}\n\t\texecute() {\n\t\t\t\tthis.sourceTextureId.setValue(this.sourceTexture);\n\t\t\t\tthis.sourceInvResolutionValue[0] = 1.0 / this.sourceTexture.width;\n\t\t\t\tthis.sourceInvResolutionValue[1] = 1.0 / this.sourceTexture.height;\n\t\t\t\tthis.sourceInvResolutionId.setValue(this.sourceInvResolutionValue);\n\t\t\t\tsuper.execute();\n\t\t}\n}\n\nclass RenderPassBloom extends RenderPass {\n\t\tconstructor(device, sourceTexture, format){\n\t\t\t\tsuper(device), this.blurLevel = 16, this.renderTargets = [];\n\t\t\t\tthis._sourceTexture = sourceTexture;\n\t\t\t\tthis.textureFormat = format;\n\t\t\t\tthis.bloomRenderTarget = this.createRenderTarget(0);\n\t\t\t\tthis.bloomTexture = this.bloomRenderTarget.colorBuffer;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.destroyRenderPasses();\n\t\t\t\tthis.destroyRenderTargets();\n\t\t}\n\t\tdestroyRenderTargets(startIndex = 0) {\n\t\t\t\tfor(let i = startIndex; i < this.renderTargets.length; i++){\n\t\t\t\t\t\tconst rt = this.renderTargets[i];\n\t\t\t\t\t\trt.destroyTextureBuffers();\n\t\t\t\t\t\trt.destroy();\n\t\t\t\t}\n\t\t\t\tthis.renderTargets.length = 0;\n\t\t}\n\t\tdestroyRenderPasses() {\n\t\t\t\tfor(let i = 0; i < this.beforePasses.length; i++){\n\t\t\t\t\t\tthis.beforePasses[i].destroy();\n\t\t\t\t}\n\t\t\t\tthis.beforePasses.length = 0;\n\t\t}\n\t\tcreateRenderTarget(index) {\n\t\t\t\treturn new RenderTarget({\n\t\t\t\t\t\tdepth: false,\n\t\t\t\t\t\tcolorBuffer: new Texture(this.device, {\n\t\t\t\t\t\t\t\tname: `BloomTexture${index}`,\n\t\t\t\t\t\t\t\twidth: 1,\n\t\t\t\t\t\t\t\theight: 1,\n\t\t\t\t\t\t\t\tformat: this.textureFormat,\n\t\t\t\t\t\t\t\tmipmaps: false,\n\t\t\t\t\t\t\t\tminFilter: FILTER_LINEAR,\n\t\t\t\t\t\t\t\tmagFilter: FILTER_LINEAR,\n\t\t\t\t\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE\n\t\t\t\t\t\t})\n\t\t\t\t});\n\t\t}\n\t\tcreateRenderTargets(count) {\n\t\t\t\tfor(let i = 0; i < count; i++){\n\t\t\t\t\t\tconst rt = i === 0 ? this.bloomRenderTarget : this.createRenderTarget(i);\n\t\t\t\t\t\tthis.renderTargets.push(rt);\n\t\t\t\t}\n\t\t}\n\t\tcalcMipLevels(width, height, minSize) {\n\t\t\t\tconst min = Math.min(width, height);\n\t\t\t\treturn Math.floor(Math.log2(min) - Math.log2(minSize));\n\t\t}\n\t\tcreateRenderPasses(numPasses) {\n\t\t\t\tconst device = this.device;\n\t\t\t\tlet passSourceTexture = this._sourceTexture;\n\t\t\t\tfor(let i = 0; i < numPasses; i++){\n\t\t\t\t\t\tconst pass = new RenderPassDownsample(device, passSourceTexture);\n\t\t\t\t\t\tconst rt = this.renderTargets[i];\n\t\t\t\t\t\tpass.init(rt, {\n\t\t\t\t\t\t\t\tresizeSource: passSourceTexture,\n\t\t\t\t\t\t\t\tscaleX: 0.5,\n\t\t\t\t\t\t\t\tscaleY: 0.5\n\t\t\t\t\t\t});\n\t\t\t\t\t\tpass.setClearColor(Color.BLACK);\n\t\t\t\t\t\tthis.beforePasses.push(pass);\n\t\t\t\t\t\tpassSourceTexture = rt.colorBuffer;\n\t\t\t\t}\n\t\t\t\tpassSourceTexture = this.renderTargets[numPasses - 1].colorBuffer;\n\t\t\t\tfor(let i = numPasses - 2; i >= 0; i--){\n\t\t\t\t\t\tconst pass = new RenderPassUpsample(device, passSourceTexture);\n\t\t\t\t\t\tconst rt = this.renderTargets[i];\n\t\t\t\t\t\tpass.init(rt);\n\t\t\t\t\t\tpass.blendState = BlendState.ADDBLEND;\n\t\t\t\t\t\tthis.beforePasses.push(pass);\n\t\t\t\t\t\tpassSourceTexture = rt.colorBuffer;\n\t\t\t\t}\n\t\t}\n\t\tonDisable() {\n\t\t\t\tthis.renderTargets[0]?.resize(1, 1);\n\t\t\t\tthis.destroyRenderPasses();\n\t\t\t\tthis.destroyRenderTargets(1);\n\t\t}\n\t\tframeUpdate() {\n\t\t\t\tsuper.frameUpdate();\n\t\t\t\tconst maxNumPasses = this.calcMipLevels(this._sourceTexture.width, this._sourceTexture.height, 1);\n\t\t\t\tconst numPasses = math.clamp(maxNumPasses, 1, this.blurLevel);\n\t\t\t\tif (this.renderTargets.length !== numPasses) {\n\t\t\t\t\t\tthis.destroyRenderPasses();\n\t\t\t\t\t\tthis.destroyRenderTargets(1);\n\t\t\t\t\t\tthis.createRenderTargets(numPasses);\n\t\t\t\t\t\tthis.createRenderPasses(numPasses);\n\t\t\t\t}\n\t\t}\n}\n\nvar composePS$1 = `\n\t#include \"tonemappingPS\"\n\t#include \"gammaPS\"\n\tvarying vec2 uv0;\n\tuniform sampler2D sceneTexture;\n\tuniform vec2 sceneTextureInvRes;\n\t#include \"composeBloomPS\"\n\t#include \"composeDofPS\"\n\t#include \"composeSsaoPS\"\n\t#include \"composeGradingPS\"\n\t#include \"composeVignettePS\"\n\t#include \"composeFringingPS\"\n\t#include \"composeCasPS\"\n\t#include \"composeColorLutPS\"\n\t#include \"composeDeclarationsPS\"\n\tvoid main() {\n\t\t#include \"composeMainStartPS\"\n\t\tvec2 uv = uv0;\n\t\t#ifdef TAA\n\t\t#ifdef WEBGPU\n\t\t\tuv.y = 1.0 - uv.y;\n\t\t#endif\n\t\t#endif\n\t\tvec4 scene = texture2DLod(sceneTexture, uv, 0.0);\n\t\tvec3 result = scene.rgb;\n\t\t#ifdef CAS\n\t\t\tresult = applyCas(result, uv, sharpness);\n\t\t#endif\n\t\t#ifdef DOF\n\t\t\tresult = applyDof(result, uv0);\n\t\t#endif\n\t\t#ifdef SSAO_TEXTURE\n\t\t\tresult = applySsao(result, uv0);\n\t\t#endif\n\t\t#ifdef FRINGING\n\t\t\tresult = applyFringing(result, uv);\n\t\t#endif\n\t\t#ifdef BLOOM\n\t\t\tresult = applyBloom(result, uv0);\n\t\t#endif\n\t\t#ifdef GRADING\n\t\t\tresult = applyGrading(result);\n\t\t#endif\n\t\tresult = toneMap(max(vec3(0.0), result));\n\t\t#ifdef COLOR_LUT\n\t\t\tresult = applyColorLUT(result);\n\t\t#endif\n\t\t#ifdef VIGNETTE\n\t\t\tresult = applyVignette(result, uv);\n\t\t#endif\n\t\t#include \"composeMainEndPS\"\n\t\t#ifdef DEBUG_COMPOSE\n\t\t\t#if DEBUG_COMPOSE == scene\n\t\t\t\tresult = scene.rgb;\n\t\t\t#elif defined(BLOOM) && DEBUG_COMPOSE == bloom\n\t\t\t\tresult = dBloom * bloomIntensity;\n\t\t\t#elif defined(DOF) && DEBUG_COMPOSE == dofcoc\n\t\t\t\tresult = vec3(dCoc, 0.0);\n\t\t\t#elif defined(DOF) && DEBUG_COMPOSE == dofblur\n\t\t\t\tresult = dBlur;\n\t\t\t#elif defined(SSAO_TEXTURE) && DEBUG_COMPOSE == ssao\n\t\t\t\tresult = vec3(dSsao);\n\t\t\t#elif defined(VIGNETTE) && DEBUG_COMPOSE == vignette\n\t\t\t\tresult = vec3(dVignette);\n\t\t\t#endif\n\t\t#endif\n\t\tresult = gammaCorrectOutput(result);\n\t\tgl_FragColor = vec4(result, scene.a);\n\t}\n`;\n\nvar composeBloomPS$1 = `\n\t#ifdef BLOOM\n\t\tuniform sampler2D bloomTexture;\n\t\tuniform float bloomIntensity;\n\t\t\n\t\tvec3 dBloom;\n\t\t\n\t\tvec3 applyBloom(vec3 color, vec2 uv) {\n\t\t\tdBloom = texture2DLod(bloomTexture, uv, 0.0).rgb;\n\t\t\treturn color + dBloom * bloomIntensity;\n\t\t}\n\t#endif\n`;\n\nvar composeDofPS$1 = `\n\t#ifdef DOF\n\t\tuniform sampler2D cocTexture;\n\t\tuniform sampler2D blurTexture;\n\t\t\n\t\tvec2 dCoc;\n\t\tvec3 dBlur;\n\t\tvec3 getDofBlur(vec2 uv) {\n\t\t\tdCoc = texture2DLod(cocTexture, uv, 0.0).rg;\n\t\t\t#if DOF_UPSCALE\n\t\t\t\tvec2 blurTexelSize = 1.0 / vec2(textureSize(blurTexture, 0));\n\t\t\t\tvec3 bilinearBlur = vec3(0.0);\n\t\t\t\tfloat totalWeight = 0.0;\n\t\t\t\tfor (int i = -1; i <= 1; i++) {\n\t\t\t\t\tfor (int j = -1; j <= 1; j++) {\n\t\t\t\t\t\tvec2 offset = vec2(i, j) * blurTexelSize;\n\t\t\t\t\t\tvec2 cocSample = texture2DLod(cocTexture, uv + offset, 0.0).rg;\n\t\t\t\t\t\tvec3 blurSample = texture2DLod(blurTexture, uv + offset, 0.0).rgb;\n\t\t\t\t\t\tfloat cocWeight = clamp(cocSample.r + cocSample.g, 0.0, 1.0);\n\t\t\t\t\t\tbilinearBlur += blurSample * cocWeight;\n\t\t\t\t\t\ttotalWeight += cocWeight;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (totalWeight > 0.0) {\n\t\t\t\t\tbilinearBlur /= totalWeight;\n\t\t\t\t}\n\t\t\t\tdBlur = bilinearBlur;\n\t\t\t\treturn bilinearBlur;\n\t\t\t#else\n\t\t\t\tdBlur = texture2DLod(blurTexture, uv, 0.0).rgb;\n\t\t\t\treturn dBlur;\n\t\t\t#endif\n\t\t}\n\t\tvec3 applyDof(vec3 color, vec2 uv) {\n\t\t\tvec3 blur = getDofBlur(uv);\n\t\t\treturn mix(color, blur, dCoc.r + dCoc.g);\n\t\t}\n\t#endif\n`;\n\nvar composeSsaoPS$1 = `\n\t#ifdef SSAO\n\t\t#define SSAO_TEXTURE\n\t#endif\n\t#if DEBUG_COMPOSE == ssao\n\t\t#define SSAO_TEXTURE\n\t#endif\n\t#ifdef SSAO_TEXTURE\n\t\tuniform sampler2D ssaoTexture;\n\t\t\n\t\tfloat dSsao;\n\t\t\n\t\tvec3 applySsao(vec3 color, vec2 uv) {\n\t\t\tdSsao = texture2DLod(ssaoTexture, uv, 0.0).r;\n\t\t\t\n\t\t\t#ifdef SSAO\n\t\t\t\treturn color * dSsao;\n\t\t\t#else\n\t\t\t\treturn color;\n\t\t\t#endif\n\t\t}\n\t#endif\n`;\n\nvar composeGradingPS$1 = `\n\t#ifdef GRADING\n\t\tuniform vec3 brightnessContrastSaturation;\n\t\tuniform vec3 tint;\n\t\tvec3 colorGradingHDR(vec3 color, float brt, float sat, float con) {\n\t\t\tcolor *= tint;\n\t\t\tcolor = color * brt;\n\t\t\tfloat grey = dot(color, vec3(0.3, 0.59, 0.11));\n\t\t\tgrey = grey / max(1.0, max(color.r, max(color.g, color.b)));\n\t\t\tcolor = mix(vec3(grey), color, sat);\n\t\t\treturn mix(vec3(0.5), color, con);\n\t\t}\n\t\tvec3 applyGrading(vec3 color) {\n\t\t\treturn colorGradingHDR(color, \n\t\t\t\tbrightnessContrastSaturation.x, \n\t\t\t\tbrightnessContrastSaturation.z, \n\t\t\t\tbrightnessContrastSaturation.y);\n\t\t}\n\t#endif\n`;\n\nvar composeVignettePS$1 = `\n\t#ifdef VIGNETTE\n\t\tuniform vec4 vignetterParams;\n\t\t\n\t\tfloat dVignette;\n\t\t\n\t\tfloat calcVignette(vec2 uv) {\n\t\t\tfloat inner = vignetterParams.x;\n\t\t\tfloat outer = vignetterParams.y;\n\t\t\tfloat curvature = vignetterParams.z;\n\t\t\tfloat intensity = vignetterParams.w;\n\t\t\tvec2 curve = pow(abs(uv * 2.0 -1.0), vec2(1.0 / curvature));\n\t\t\tfloat edge = pow(length(curve), curvature);\n\t\t\tdVignette = 1.0 - intensity * smoothstep(inner, outer, edge);\n\t\t\treturn dVignette;\n\t\t}\n\t\tvec3 applyVignette(vec3 color, vec2 uv) {\n\t\t\treturn color * calcVignette(uv);\n\t\t}\n\t#endif\n`;\n\nvar composeFringingPS$1 = `\n\t#ifdef FRINGING\n\t\tuniform float fringingIntensity;\n\t\tvec3 applyFringing(vec3 color, vec2 uv) {\n\t\t\tvec2 centerDistance = uv - 0.5;\n\t\t\tvec2 offset = fringingIntensity * pow(centerDistance, vec2(2.0, 2.0));\n\t\t\tcolor.r = texture2D(sceneTexture, uv - offset).r;\n\t\t\tcolor.b = texture2D(sceneTexture, uv + offset).b;\n\t\t\treturn color;\n\t\t}\n\t#endif\n`;\n\nvar composeCasPS$1 = `\n\t#ifdef CAS\n\t\tuniform float sharpness;\n\t\tfloat maxComponent(float x, float y, float z) { return max(x, max(y, z)); }\n\t\tvec3 toSDR(vec3 c) { return c / (1.0 + maxComponent(c.r, c.g, c.b)); }\n\t\tvec3 toHDR(vec3 c) { return c / (1.0 - maxComponent(c.r, c.g, c.b)); }\n\t\tvec3 applyCas(vec3 color, vec2 uv, float sharpness) {\n\t\t\tfloat x = sceneTextureInvRes.x;\n\t\t\tfloat y = sceneTextureInvRes.y;\n\t\t\tvec3 a = toSDR(texture2DLod(sceneTexture, uv + vec2(0.0, -y), 0.0).rgb);\n\t\t\tvec3 b = toSDR(texture2DLod(sceneTexture, uv + vec2(-x, 0.0), 0.0).rgb);\n\t\t\tvec3 c = toSDR(color.rgb);\n\t\t\tvec3 d = toSDR(texture2DLod(sceneTexture, uv + vec2(x, 0.0), 0.0).rgb);\n\t\t\tvec3 e = toSDR(texture2DLod(sceneTexture, uv + vec2(0.0, y), 0.0).rgb);\n\t\t\tfloat min_g = min(a.g, min(b.g, min(c.g, min(d.g, e.g))));\n\t\t\tfloat max_g = max(a.g, max(b.g, max(c.g, max(d.g, e.g))));\n\t\t\tfloat sharpening_amount = sqrt(min(1.0 - max_g, min_g) / max_g);\n\t\t\tfloat w = sharpening_amount * sharpness;\n\t\t\tvec3 res = (w * (a + b + d + e) + c) / (4.0 * w + 1.0);\n\t\t\tres = max(res, 0.0);\n\t\t\treturn toHDR(res);\n\t\t}\n\t#endif\n`;\n\nvar composeColorLutPS$1 = `\n\t#ifdef COLOR_LUT\n\t\tuniform sampler2D colorLUT;\n\t\tuniform vec4 colorLUTParams;\n\t\tvec3 applyColorLUT(vec3 color) {\n\t\t\tvec3 c = clamp(color, 0.0, 1.0);\n\t\t\tfloat width = colorLUTParams.x;\n\t\t\tfloat height = colorLUTParams.y;\n\t\t\tfloat maxColor = colorLUTParams.z;\n\t\t\tfloat cell = c.b * maxColor;\n\t\t\tfloat cell_l = floor(cell);\n\t\t\tfloat cell_h = ceil(cell);\n\t\t\tfloat half_px_x = 0.5 / width;\n\t\t\tfloat half_px_y = 0.5 / height;\n\t\t\tfloat r_offset = half_px_x + c.r / height * (maxColor / height);\n\t\t\tfloat g_offset = half_px_y + c.g * (maxColor / height);\n\t\t\tvec2 uv_l = vec2(cell_l / height + r_offset, g_offset);\n\t\t\tvec2 uv_h = vec2(cell_h / height + r_offset, g_offset);\n\t\t\tvec3 color_l = texture2DLod(colorLUT, uv_l, 0.0).rgb;\n\t\t\tvec3 color_h = texture2DLod(colorLUT, uv_h, 0.0).rgb;\n\t\t\tvec3 lutColor = mix(color_l, color_h, fract(cell));\n\t\t\treturn mix(color, lutColor, colorLUTParams.w);\n\t\t}\n\t#endif\n`;\n\nconst composeChunksGLSL = {\n\t\tcomposePS: composePS$1,\n\t\tcomposeBloomPS: composeBloomPS$1,\n\t\tcomposeDofPS: composeDofPS$1,\n\t\tcomposeSsaoPS: composeSsaoPS$1,\n\t\tcomposeGradingPS: composeGradingPS$1,\n\t\tcomposeVignettePS: composeVignettePS$1,\n\t\tcomposeFringingPS: composeFringingPS$1,\n\t\tcomposeCasPS: composeCasPS$1,\n\t\tcomposeColorLutPS: composeColorLutPS$1,\n\t\tcomposeDeclarationsPS: '',\n\t\tcomposeMainStartPS: '',\n\t\tcomposeMainEndPS: ''\n};\n\nvar composePS = `\n\t#include \"tonemappingPS\"\n\t#include \"gammaPS\"\n\tvarying uv0: vec2f;\n\tvar sceneTexture: texture_2d<f32>;\n\tvar sceneTextureSampler: sampler;\n\tuniform sceneTextureInvRes: vec2f;\n\t#include \"composeBloomPS\"\n\t#include \"composeDofPS\"\n\t#include \"composeSsaoPS\"\n\t#include \"composeGradingPS\"\n\t#include \"composeVignettePS\"\n\t#include \"composeFringingPS\"\n\t#include \"composeCasPS\"\n\t#include \"composeColorLutPS\"\n\t#include \"composeDeclarationsPS\"\n\t@fragment\n\tfn fragmentMain(input: FragmentInput) -> FragmentOutput {\n\t\t#include \"composeMainStartPS\"\n\t\tvar output: FragmentOutput;\n\t\tvar uv = uv0;\n\t\t#ifdef TAA\n\t\t\tuv.y = 1.0 - uv.y;\n\t\t#endif\n\t\tlet scene = textureSampleLevel(sceneTexture, sceneTextureSampler, uv, 0.0);\n\t\tvar result = scene.rgb;\n\t\t#ifdef CAS\n\t\t\tresult = applyCas(result, uv, uniform.sharpness);\n\t\t#endif\n\t\t#ifdef DOF\n\t\t\tresult = applyDof(result, uv0);\n\t\t#endif\n\t\t#ifdef SSAO_TEXTURE\n\t\t\tresult = applySsao(result, uv0);\n\t\t#endif\n\t\t#ifdef FRINGING\n\t\t\tresult = applyFringing(result, uv);\n\t\t#endif\n\t\t#ifdef BLOOM\n\t\t\tresult = applyBloom(result, uv0);\n\t\t#endif\n\t\t#ifdef GRADING\n\t\t\tresult = applyGrading(result);\n\t\t#endif\n\t\tresult = toneMap(max(vec3f(0.0), result));\n\t\t#ifdef COLOR_LUT\n\t\t\tresult = applyColorLUT(result);\n\t\t#endif\n\t\t#ifdef VIGNETTE\n\t\t\tresult = applyVignette(result, uv);\n\t\t#endif\n\t\t#include \"composeMainEndPS\"\n\t\t#ifdef DEBUG_COMPOSE\n\t\t\t#if DEBUG_COMPOSE == scene\n\t\t\t\tresult = scene.rgb;\n\t\t\t#elif defined(BLOOM) && DEBUG_COMPOSE == bloom\n\t\t\t\tresult = dBloom * uniform.bloomIntensity;\n\t\t\t#elif defined(DOF) && DEBUG_COMPOSE == dofcoc\n\t\t\t\tresult = vec3f(dCoc, 0.0);\n\t\t\t#elif defined(DOF) && DEBUG_COMPOSE == dofblur\n\t\t\t\tresult = dBlur;\n\t\t\t#elif defined(SSAO_TEXTURE) && DEBUG_COMPOSE == ssao\n\t\t\t\tresult = vec3f(dSsao);\n\t\t\t#elif defined(VIGNETTE) && DEBUG_COMPOSE == vignette\n\t\t\t\tresult = vec3f(dVignette);\n\t\t\t#endif\n\t\t#endif\n\t\tresult = gammaCorrectOutput(result);\n\t\toutput.color = vec4f(result, scene.a);\n\t\treturn output;\n\t}\n`;\n\nvar composeBloomPS = `\n\t#ifdef BLOOM\n\t\tvar bloomTexture: texture_2d<f32>;\n\t\tvar bloomTextureSampler: sampler;\n\t\tuniform bloomIntensity: f32;\n\t\t\n\t\tvar<private> dBloom: vec3f;\n\t\t\n\t\tfn applyBloom(color: vec3f, uv: vec2f) -> vec3f {\n\t\t\tdBloom = textureSampleLevel(bloomTexture, bloomTextureSampler, uv, 0.0).rgb;\n\t\t\treturn color + dBloom * uniform.bloomIntensity;\n\t\t}\n\t#endif\n`;\n\nvar composeDofPS = `\n\t#ifdef DOF\n\t\tvar cocTexture: texture_2d<f32>;\n\t\tvar cocTextureSampler: sampler;\n\t\tvar blurTexture: texture_2d<f32>;\n\t\tvar blurTextureSampler: sampler;\n\t\t\n\t\tvar<private> dCoc: vec2f;\n\t\tvar<private> dBlur: vec3f;\n\t\tfn getDofBlur(uv: vec2f) -> vec3f {\n\t\t\tdCoc = textureSampleLevel(cocTexture, cocTextureSampler, uv, 0.0).rg;\n\t\t\t#if DOF_UPSCALE\n\t\t\t\tlet blurTexelSize = 1.0 / vec2f(textureDimensions(blurTexture, 0));\n\t\t\t\tvar bilinearBlur = vec3f(0.0);\n\t\t\t\tvar totalWeight = 0.0;\n\t\t\t\tfor (var i = -1; i <= 1; i++) {\n\t\t\t\t\tfor (var j = -1; j <= 1; j++) {\n\t\t\t\t\t\tlet offset = vec2f(f32(i), f32(j)) * blurTexelSize;\n\t\t\t\t\t\tlet cocSample = textureSampleLevel(cocTexture, cocTextureSampler, uv + offset, 0.0).rg;\n\t\t\t\t\t\tlet blurSample = textureSampleLevel(blurTexture, blurTextureSampler, uv + offset, 0.0).rgb;\n\t\t\t\t\t\tlet cocWeight = clamp(cocSample.r + cocSample.g, 0.0, 1.0);\n\t\t\t\t\t\tbilinearBlur += blurSample * cocWeight;\n\t\t\t\t\t\ttotalWeight += cocWeight;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (totalWeight > 0.0) {\n\t\t\t\t\tbilinearBlur /= totalWeight;\n\t\t\t\t}\n\t\t\t\tdBlur = bilinearBlur;\n\t\t\t\treturn bilinearBlur;\n\t\t\t#else\n\t\t\t\tdBlur = textureSampleLevel(blurTexture, blurTextureSampler, uv, 0.0).rgb;\n\t\t\t\treturn dBlur;\n\t\t\t#endif\n\t\t}\n\t\tfn applyDof(color: vec3f, uv: vec2f) -> vec3f {\n\t\t\tlet blur = getDofBlur(uv);\n\t\t\treturn mix(color, blur, dCoc.r + dCoc.g);\n\t\t}\n\t#endif\n`;\n\nvar composeSsaoPS = `\n\t#ifdef SSAO\n\t\t#define SSAO_TEXTURE\n\t#endif\n\t#if DEBUG_COMPOSE == ssao\n\t\t#define SSAO_TEXTURE\n\t#endif\n\t#ifdef SSAO_TEXTURE\n\t\tvar ssaoTexture: texture_2d<f32>;\n\t\tvar ssaoTextureSampler: sampler;\n\t\t\n\t\tvar<private> dSsao: f32;\n\t\t\n\t\tfn applySsao(color: vec3f, uv: vec2f) -> vec3f {\n\t\t\tdSsao = textureSampleLevel(ssaoTexture, ssaoTextureSampler, uv, 0.0).r;\n\t\t\t\n\t\t\t#ifdef SSAO\n\t\t\t\treturn color * dSsao;\n\t\t\t#else\n\t\t\t\treturn color;\n\t\t\t#endif\n\t\t}\n\t#endif\n`;\n\nvar composeGradingPS = `\n\t#ifdef GRADING\n\t\tuniform brightnessContrastSaturation: vec3f;\n\t\tuniform tint: vec3f;\n\t\tfn colorGradingHDR(color: vec3f, brt: f32, sat: f32, con: f32) -> vec3f {\n\t\t\tvar colorOut = color * uniform.tint;\n\t\t\tcolorOut = colorOut * brt;\n\t\t\tlet grey = dot(colorOut, vec3f(0.3, 0.59, 0.11));\n\t\t\tlet normalizedGrey = grey / max(1.0, max(colorOut.r, max(colorOut.g, colorOut.b)));\n\t\t\tcolorOut = mix(vec3f(normalizedGrey), colorOut, sat);\n\t\t\treturn mix(vec3f(0.5), colorOut, con);\n\t\t}\n\t\tfn applyGrading(color: vec3f) -> vec3f {\n\t\t\treturn colorGradingHDR(color, \n\t\t\t\tuniform.brightnessContrastSaturation.x, \n\t\t\t\tuniform.brightnessContrastSaturation.z, \n\t\t\t\tuniform.brightnessContrastSaturation.y);\n\t\t}\n\t#endif\n`;\n\nvar composeVignettePS = `\n\t#ifdef VIGNETTE\n\t\tuniform vignetterParams: vec4f;\n\t\t\n\t\tvar<private> dVignette: f32;\n\t\t\n\t\tfn calcVignette(uv: vec2f) -> f32 {\n\t\t\tlet inner = uniform.vignetterParams.x;\n\t\t\tlet outer = uniform.vignetterParams.y;\n\t\t\tlet curvature = uniform.vignetterParams.z;\n\t\t\tlet intensity = uniform.vignetterParams.w;\n\t\t\tlet curve = pow(abs(uv * 2.0 - 1.0), vec2f(1.0 / curvature));\n\t\t\tlet edge = pow(length(curve), curvature);\n\t\t\tdVignette = 1.0 - intensity * smoothstep(inner, outer, edge);\n\t\t\treturn dVignette;\n\t\t}\n\t\tfn applyVignette(color: vec3f, uv: vec2f) -> vec3f {\n\t\t\treturn color * calcVignette(uv);\n\t\t}\n\t#endif\n`;\n\nvar composeFringingPS = `\n\t#ifdef FRINGING\n\t\tuniform fringingIntensity: f32;\n\t\tfn applyFringing(color: vec3f, uv: vec2f) -> vec3f {\n\t\t\tlet centerDistance = uv - 0.5;\n\t\t\tlet offset = uniform.fringingIntensity * pow(centerDistance, vec2f(2.0));\n\t\t\tvar colorOut = color;\n\t\t\tcolorOut.r = textureSample(sceneTexture, sceneTextureSampler, uv - offset).r;\n\t\t\tcolorOut.b = textureSample(sceneTexture, sceneTextureSampler, uv + offset).b;\n\t\t\treturn colorOut;\n\t\t}\n\t#endif\n`;\n\nvar composeCasPS = `\n\t#ifdef CAS\n\t\tuniform sharpness: f32;\n\t\tfn maxComponent(x: f32, y: f32, z: f32) -> f32 { return max(x, max(y, z)); }\n\t\tfn toSDR(c: vec3f) -> vec3f { return c / (1.0 + maxComponent(c.r, c.g, c.b)); }\n\t\tfn toHDR(c: vec3f) -> vec3f { return c / (1.0 - maxComponent(c.r, c.g, c.b)); }\n\t\tfn applyCas(color: vec3f, uv: vec2f, sharpness: f32) -> vec3f {\n\t\t\tlet x = uniform.sceneTextureInvRes.x;\n\t\t\tlet y = uniform.sceneTextureInvRes.y;\n\t\t\tlet a = toSDR(textureSampleLevel(sceneTexture, sceneTextureSampler, uv + vec2f(0.0, -y), 0.0).rgb);\n\t\t\tlet b = toSDR(textureSampleLevel(sceneTexture, sceneTextureSampler, uv + vec2f(-x, 0.0), 0.0).rgb);\n\t\t\tlet c = toSDR(color.rgb);\n\t\t\tlet d = toSDR(textureSampleLevel(sceneTexture, sceneTextureSampler, uv + vec2f(x, 0.0), 0.0).rgb);\n\t\t\tlet e = toSDR(textureSampleLevel(sceneTexture, sceneTextureSampler, uv + vec2f(0.0, y), 0.0).rgb);\n\t\t\tlet min_g = min(a.g, min(b.g, min(c.g, min(d.g, e.g))));\n\t\t\tlet max_g = max(a.g, max(b.g, max(c.g, max(d.g, e.g))));\n\t\t\tlet sharpening_amount = sqrt(min(1.0 - max_g, min_g) / max_g);\n\t\t\tlet w = sharpening_amount * uniform.sharpness;\n\t\t\tvar res = (w * (a + b + d + e) + c) / (4.0 * w + 1.0);\n\t\t\tres = max(res, vec3f(0.0));\n\t\t\treturn toHDR(res);\n\t\t}\n\t#endif\n`;\n\nvar composeColorLutPS = `\n\t#ifdef COLOR_LUT\n\t\tvar colorLUT: texture_2d<f32>;\n\t\tvar colorLUTSampler: sampler;\n\t\tuniform colorLUTParams: vec4f;\n\t\tfn applyColorLUT(color: vec3f) -> vec3f {\n\t\t\tvar c: vec3f = clamp(color, vec3f(0.0), vec3f(1.0));\n\t\t\tlet width: f32 = uniform.colorLUTParams.x;\n\t\t\tlet height: f32 = uniform.colorLUTParams.y;\n\t\t\tlet maxColor: f32 = uniform.colorLUTParams.z;\n\t\t\tlet cell: f32 = c.b * maxColor;\n\t\t\tlet cell_l: f32 = floor(cell);\n\t\t\tlet cell_h: f32 = ceil(cell);\n\t\t\tlet half_px_x: f32 = 0.5 / width;\n\t\t\tlet half_px_y: f32 = 0.5 / height;\n\t\t\tlet r_offset: f32 = half_px_x + c.r / height * (maxColor / height);\n\t\t\tlet g_offset: f32 = half_px_y + c.g * (maxColor / height);\n\t\t\tlet uv_l: vec2f = vec2f(cell_l / height + r_offset, g_offset);\n\t\t\tlet uv_h: vec2f = vec2f(cell_h / height + r_offset, g_offset);\n\t\t\tlet color_l: vec3f = textureSampleLevel(colorLUT, colorLUTSampler, uv_l, 0.0).rgb;\n\t\t\tlet color_h: vec3f = textureSampleLevel(colorLUT, colorLUTSampler, uv_h, 0.0).rgb;\n\t\t\tlet lutColor: vec3f = mix(color_l, color_h, fract(cell));\n\t\t\treturn mix(color, lutColor, uniform.colorLUTParams.w);\n\t\t}\n\t#endif\n`;\n\nconst composeChunksWGSL = {\n\t\tcomposePS,\n\t\tcomposeBloomPS,\n\t\tcomposeDofPS,\n\t\tcomposeSsaoPS,\n\t\tcomposeGradingPS,\n\t\tcomposeVignettePS,\n\t\tcomposeFringingPS,\n\t\tcomposeCasPS,\n\t\tcomposeColorLutPS,\n\t\tcomposeDeclarationsPS: '',\n\t\tcomposeMainStartPS: '',\n\t\tcomposeMainEndPS: ''\n};\n\nclass RenderPassCompose extends RenderPassShaderQuad {\n\t\tconstructor(graphicsDevice){\n\t\t\t\tsuper(graphicsDevice), this.sceneTexture = null, this.bloomIntensity = 0.01, this._bloomTexture = null, this._cocTexture = null, this.blurTexture = null, this.blurTextureUpscale = false, this._ssaoTexture = null, this._toneMapping = TONEMAP_LINEAR, this._gradingEnabled = false, this.gradingSaturation = 1, this.gradingContrast = 1, this.gradingBrightness = 1, this.gradingTint = new Color(1, 1, 1, 1), this._shaderDirty = true, this._vignetteEnabled = false, this.vignetteInner = 0.5, this.vignetteOuter = 1.0, this.vignetteCurvature = 0.5, this.vignetteIntensity = 0.3, this._fringingEnabled = false, this.fringingIntensity = 10, this._taaEnabled = false, this._sharpness = 0.5, this._gammaCorrection = GAMMA_SRGB, this._colorLUT = null, this.colorLUTIntensity = 1, this._key = '', this._debug = null, this._customComposeChunks = new Map([\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t'composeDeclarationsPS',\n\t\t\t\t\t\t\t\t''\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t'composeMainStartPS',\n\t\t\t\t\t\t\t\t''\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t'composeMainEndPS',\n\t\t\t\t\t\t\t\t''\n\t\t\t\t\t\t]\n\t\t\t\t]);\n\t\t\t\tShaderChunks.get(graphicsDevice, SHADERLANGUAGE_GLSL).add(composeChunksGLSL, false);\n\t\t\t\tShaderChunks.get(graphicsDevice, SHADERLANGUAGE_WGSL).add(composeChunksWGSL, false);\n\t\t\t\tconst { scope } = graphicsDevice;\n\t\t\t\tthis.sceneTextureId = scope.resolve('sceneTexture');\n\t\t\t\tthis.bloomTextureId = scope.resolve('bloomTexture');\n\t\t\t\tthis.cocTextureId = scope.resolve('cocTexture');\n\t\t\t\tthis.ssaoTextureId = scope.resolve('ssaoTexture');\n\t\t\t\tthis.blurTextureId = scope.resolve('blurTexture');\n\t\t\t\tthis.bloomIntensityId = scope.resolve('bloomIntensity');\n\t\t\t\tthis.bcsId = scope.resolve('brightnessContrastSaturation');\n\t\t\t\tthis.tintId = scope.resolve('tint');\n\t\t\t\tthis.vignetterParamsId = scope.resolve('vignetterParams');\n\t\t\t\tthis.fringingIntensityId = scope.resolve('fringingIntensity');\n\t\t\t\tthis.sceneTextureInvResId = scope.resolve('sceneTextureInvRes');\n\t\t\t\tthis.sceneTextureInvResValue = new Float32Array(2);\n\t\t\t\tthis.sharpnessId = scope.resolve('sharpness');\n\t\t\t\tthis.colorLUTId = scope.resolve('colorLUT');\n\t\t\t\tthis.colorLUTParams = new Float32Array(4);\n\t\t\t\tthis.colorLUTParamsId = scope.resolve('colorLUTParams');\n\t\t}\n\t\tset debug(value) {\n\t\t\t\tif (this._debug !== value) {\n\t\t\t\t\t\tthis._debug = value;\n\t\t\t\t\t\tthis._shaderDirty = true;\n\t\t\t\t}\n\t\t}\n\t\tget debug() {\n\t\t\t\treturn this._debug;\n\t\t}\n\t\tset colorLUT(value) {\n\t\t\t\tif (this._colorLUT !== value) {\n\t\t\t\t\t\tthis._colorLUT = value;\n\t\t\t\t\t\tthis._shaderDirty = true;\n\t\t\t\t}\n\t\t}\n\t\tget colorLUT() {\n\t\t\t\treturn this._colorLUT;\n\t\t}\n\t\tset bloomTexture(value) {\n\t\t\t\tif (this._bloomTexture !== value) {\n\t\t\t\t\t\tthis._bloomTexture = value;\n\t\t\t\t\t\tthis._shaderDirty = true;\n\t\t\t\t}\n\t\t}\n\t\tget bloomTexture() {\n\t\t\t\treturn this._bloomTexture;\n\t\t}\n\t\tset cocTexture(value) {\n\t\t\t\tif (this._cocTexture !== value) {\n\t\t\t\t\t\tthis._cocTexture = value;\n\t\t\t\t\t\tthis._shaderDirty = true;\n\t\t\t\t}\n\t\t}\n\t\tget cocTexture() {\n\t\t\t\treturn this._cocTexture;\n\t\t}\n\t\tset ssaoTexture(value) {\n\t\t\t\tif (this._ssaoTexture !== value) {\n\t\t\t\t\t\tthis._ssaoTexture = value;\n\t\t\t\t\t\tthis._shaderDirty = true;\n\t\t\t\t}\n\t\t}\n\t\tget ssaoTexture() {\n\t\t\t\treturn this._ssaoTexture;\n\t\t}\n\t\tset taaEnabled(value) {\n\t\t\t\tif (this._taaEnabled !== value) {\n\t\t\t\t\t\tthis._taaEnabled = value;\n\t\t\t\t\t\tthis._shaderDirty = true;\n\t\t\t\t}\n\t\t}\n\t\tget taaEnabled() {\n\t\t\t\treturn this._taaEnabled;\n\t\t}\n\t\tset gradingEnabled(value) {\n\t\t\t\tif (this._gradingEnabled !== value) {\n\t\t\t\t\t\tthis._gradingEnabled = value;\n\t\t\t\t\t\tthis._shaderDirty = true;\n\t\t\t\t}\n\t\t}\n\t\tget gradingEnabled() {\n\t\t\t\treturn this._gradingEnabled;\n\t\t}\n\t\tset vignetteEnabled(value) {\n\t\t\t\tif (this._vignetteEnabled !== value) {\n\t\t\t\t\t\tthis._vignetteEnabled = value;\n\t\t\t\t\t\tthis._shaderDirty = true;\n\t\t\t\t}\n\t\t}\n\t\tget vignetteEnabled() {\n\t\t\t\treturn this._vignetteEnabled;\n\t\t}\n\t\tset fringingEnabled(value) {\n\t\t\t\tif (this._fringingEnabled !== value) {\n\t\t\t\t\t\tthis._fringingEnabled = value;\n\t\t\t\t\t\tthis._shaderDirty = true;\n\t\t\t\t}\n\t\t}\n\t\tget fringingEnabled() {\n\t\t\t\treturn this._fringingEnabled;\n\t\t}\n\t\tset toneMapping(value) {\n\t\t\t\tif (this._toneMapping !== value) {\n\t\t\t\t\t\tthis._toneMapping = value;\n\t\t\t\t\t\tthis._shaderDirty = true;\n\t\t\t\t}\n\t\t}\n\t\tget toneMapping() {\n\t\t\t\treturn this._toneMapping;\n\t\t}\n\t\tset sharpness(value) {\n\t\t\t\tif (this._sharpness !== value) {\n\t\t\t\t\t\tthis._sharpness = value;\n\t\t\t\t\t\tthis._shaderDirty = true;\n\t\t\t\t}\n\t\t}\n\t\tget sharpness() {\n\t\t\t\treturn this._sharpness;\n\t\t}\n\t\tget isSharpnessEnabled() {\n\t\t\t\treturn this._sharpness > 0;\n\t\t}\n\t\tpostInit() {\n\t\t\t\tthis.setClearColor(Color.BLACK);\n\t\t\t\tthis.setClearDepth(1.0);\n\t\t\t\tthis.setClearStencil(0);\n\t\t}\n\t\tframeUpdate() {\n\t\t\t\tconst rt = this.renderTarget ?? this.device.backBuffer;\n\t\t\t\tconst srgb = rt.isColorBufferSrgb(0);\n\t\t\t\tconst neededGammaCorrection = srgb ? GAMMA_NONE : GAMMA_SRGB;\n\t\t\t\tif (this._gammaCorrection !== neededGammaCorrection) {\n\t\t\t\t\t\tthis._gammaCorrection = neededGammaCorrection;\n\t\t\t\t\t\tthis._shaderDirty = true;\n\t\t\t\t}\n\t\t\t\tconst shaderChunks = ShaderChunks.get(this.device, this.device.isWebGPU ? SHADERLANGUAGE_WGSL : SHADERLANGUAGE_GLSL);\n\t\t\t\tfor (const [name, prevValue] of this._customComposeChunks.entries()){\n\t\t\t\t\t\tconst currentValue = shaderChunks.get(name);\n\t\t\t\t\t\tif (currentValue !== prevValue) {\n\t\t\t\t\t\t\t\tthis._customComposeChunks.set(name, currentValue);\n\t\t\t\t\t\t\t\tthis._shaderDirty = true;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this._shaderDirty) {\n\t\t\t\t\t\tthis._shaderDirty = false;\n\t\t\t\t\t\tconst gammaCorrectionName = gammaNames[this._gammaCorrection];\n\t\t\t\t\t\tconst customChunks = this._customComposeChunks;\n\t\t\t\t\t\tconst declHash = hashCode(customChunks.get('composeDeclarationsPS') ?? '');\n\t\t\t\t\t\tconst startHash = hashCode(customChunks.get('composeMainStartPS') ?? '');\n\t\t\t\t\t\tconst endHash = hashCode(customChunks.get('composeMainEndPS') ?? '');\n\t\t\t\t\t\tconst key = `${this.toneMapping}` + `-${gammaCorrectionName}` + `-${this.bloomTexture ? 'bloom' : 'nobloom'}` + `-${this.cocTexture ? 'dof' : 'nodof'}` + `-${this.blurTextureUpscale ? 'dofupscale' : ''}` + `-${this.ssaoTexture ? 'ssao' : 'nossao'}` + `-${this.gradingEnabled ? 'grading' : 'nograding'}` + `-${this.colorLUT ? 'colorlut' : 'nocolorlut'}` + `-${this.vignetteEnabled ? 'vignette' : 'novignette'}` + `-${this.fringingEnabled ? 'fringing' : 'nofringing'}` + `-${this.taaEnabled ? 'taa' : 'notaa'}` + `-${this.isSharpnessEnabled ? 'cas' : 'nocas'}` + `-${this._debug ?? ''}` + `-decl${declHash}-start${startHash}-end${endHash}`;\n\t\t\t\t\t\tif (this._key !== key) {\n\t\t\t\t\t\t\t\tthis._key = key;\n\t\t\t\t\t\t\t\tconst defines = new Map();\n\t\t\t\t\t\t\t\tdefines.set('TONEMAP', tonemapNames[this.toneMapping]);\n\t\t\t\t\t\t\t\tdefines.set('GAMMA', gammaCorrectionName);\n\t\t\t\t\t\t\t\tif (this.bloomTexture) defines.set('BLOOM', true);\n\t\t\t\t\t\t\t\tif (this.cocTexture) defines.set('DOF', true);\n\t\t\t\t\t\t\t\tif (this.blurTextureUpscale) defines.set('DOF_UPSCALE', true);\n\t\t\t\t\t\t\t\tif (this.ssaoTexture) defines.set('SSAO', true);\n\t\t\t\t\t\t\t\tif (this.gradingEnabled) defines.set('GRADING', true);\n\t\t\t\t\t\t\t\tif (this.colorLUT) defines.set('COLOR_LUT', true);\n\t\t\t\t\t\t\t\tif (this.vignetteEnabled) defines.set('VIGNETTE', true);\n\t\t\t\t\t\t\t\tif (this.fringingEnabled) defines.set('FRINGING', true);\n\t\t\t\t\t\t\t\tif (this.taaEnabled) defines.set('TAA', true);\n\t\t\t\t\t\t\t\tif (this.isSharpnessEnabled) defines.set('CAS', true);\n\t\t\t\t\t\t\t\tif (this._debug) defines.set('DEBUG_COMPOSE', this._debug);\n\t\t\t\t\t\t\t\tconst includes = new Map(shaderChunks);\n\t\t\t\t\t\t\t\tthis.shader = ShaderUtils.createShader(this.device, {\n\t\t\t\t\t\t\t\t\t\tuniqueName: `ComposeShader-${key}`,\n\t\t\t\t\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\t\t\t\t\taPosition: SEMANTIC_POSITION\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tvertexChunk: 'quadVS',\n\t\t\t\t\t\t\t\t\t\tfragmentChunk: 'composePS',\n\t\t\t\t\t\t\t\t\t\tfragmentDefines: defines,\n\t\t\t\t\t\t\t\t\t\tfragmentIncludes: includes\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\texecute() {\n\t\t\t\tconst sceneTex = this.sceneTexture;\n\t\t\t\tthis.sceneTextureId.setValue(sceneTex);\n\t\t\t\tthis.sceneTextureInvResValue[0] = 1.0 / sceneTex.width;\n\t\t\t\tthis.sceneTextureInvResValue[1] = 1.0 / sceneTex.height;\n\t\t\t\tthis.sceneTextureInvResId.setValue(this.sceneTextureInvResValue);\n\t\t\t\tif (this._bloomTexture) {\n\t\t\t\t\t\tthis.bloomTextureId.setValue(this._bloomTexture);\n\t\t\t\t\t\tthis.bloomIntensityId.setValue(this.bloomIntensity);\n\t\t\t\t}\n\t\t\t\tif (this._cocTexture) {\n\t\t\t\t\t\tthis.cocTextureId.setValue(this._cocTexture);\n\t\t\t\t\t\tthis.blurTextureId.setValue(this.blurTexture);\n\t\t\t\t}\n\t\t\t\tif (this._ssaoTexture) {\n\t\t\t\t\t\tthis.ssaoTextureId.setValue(this._ssaoTexture);\n\t\t\t\t}\n\t\t\t\tif (this._gradingEnabled) {\n\t\t\t\t\t\tthis.bcsId.setValue([\n\t\t\t\t\t\t\t\tthis.gradingBrightness,\n\t\t\t\t\t\t\t\tthis.gradingContrast,\n\t\t\t\t\t\t\t\tthis.gradingSaturation\n\t\t\t\t\t\t]);\n\t\t\t\t\t\tthis.tintId.setValue([\n\t\t\t\t\t\t\t\tthis.gradingTint.r,\n\t\t\t\t\t\t\t\tthis.gradingTint.g,\n\t\t\t\t\t\t\t\tthis.gradingTint.b\n\t\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t\tconst lutTexture = this._colorLUT;\n\t\t\t\tif (lutTexture) {\n\t\t\t\t\t\tthis.colorLUTParams[0] = lutTexture.width;\n\t\t\t\t\t\tthis.colorLUTParams[1] = lutTexture.height;\n\t\t\t\t\t\tthis.colorLUTParams[2] = lutTexture.height - 1.0;\n\t\t\t\t\t\tthis.colorLUTParams[3] = this.colorLUTIntensity;\n\t\t\t\t\t\tthis.colorLUTParamsId.setValue(this.colorLUTParams);\n\t\t\t\t\t\tthis.colorLUTId.setValue(lutTexture);\n\t\t\t\t}\n\t\t\t\tif (this._vignetteEnabled) {\n\t\t\t\t\t\tthis.vignetterParamsId.setValue([\n\t\t\t\t\t\t\t\tthis.vignetteInner,\n\t\t\t\t\t\t\t\tthis.vignetteOuter,\n\t\t\t\t\t\t\t\tthis.vignetteCurvature,\n\t\t\t\t\t\t\t\tthis.vignetteIntensity\n\t\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t\tif (this._fringingEnabled) {\n\t\t\t\t\t\tthis.fringingIntensityId.setValue(this.fringingIntensity / 1024);\n\t\t\t\t}\n\t\t\t\tif (this.isSharpnessEnabled) {\n\t\t\t\t\t\tthis.sharpnessId.setValue(math.lerp(-0.125, -0.2, this.sharpness));\n\t\t\t\t}\n\t\t\t\tsuper.execute();\n\t\t}\n}\n\nvar glslSampleCatmullRomPS = `\nvec4 SampleTextureCatmullRom(TEXTURE_ACCEPT(tex), vec2 uv, vec2 texSize) {\n\tvec2 samplePos = uv * texSize;\n\tvec2 texPos1 = floor(samplePos - 0.5) + 0.5;\n\tvec2 f = samplePos - texPos1;\n\tvec2 w0 = f * (-0.5 + f * (1.0 - 0.5 * f));\n\tvec2 w1 = 1.0 + f * f * (-2.5 + 1.5 * f);\n\tvec2 w2 = f * (0.5 + f * (2.0 - 1.5 * f));\n\tvec2 w3 = f * f * (-0.5 + 0.5 * f);\n\tvec2 w12 = w1 + w2;\n\tvec2 offset12 = w2 / (w1 + w2);\n\tvec2 texPos0 = (texPos1 - 1.0) / texSize;\n\tvec2 texPos3 = (texPos1 + 2.0) / texSize;\n\tvec2 texPos12 = (texPos1 + offset12) / texSize;\n\tvec4 result = vec4(0.0);\n\tresult += texture2DLod(tex, vec2(texPos0.x, texPos0.y), 0.0) * w0.x * w0.y;\n\tresult += texture2DLod(tex, vec2(texPos12.x, texPos0.y), 0.0) * w12.x * w0.y;\n\tresult += texture2DLod(tex, vec2(texPos3.x, texPos0.y), 0.0) * w3.x * w0.y;\n\tresult += texture2DLod(tex, vec2(texPos0.x, texPos12.y), 0.0) * w0.x * w12.y;\n\tresult += texture2DLod(tex, vec2(texPos12.x, texPos12.y), 0.0) * w12.x * w12.y;\n\tresult += texture2DLod(tex, vec2(texPos3.x, texPos12.y), 0.0) * w3.x * w12.y;\n\tresult += texture2DLod(tex, vec2(texPos0.x, texPos3.y), 0.0) * w0.x * w3.y;\n\tresult += texture2DLod(tex, vec2(texPos12.x, texPos3.y), 0.0) * w12.x * w3.y;\n\tresult += texture2DLod(tex, vec2(texPos3.x, texPos3.y), 0.0) * w3.x * w3.y;\n\treturn result;\n}\n`;\n\nvar wgslSampleCatmullRomPS = `\nfn SampleTextureCatmullRom(tex: texture_2d<f32>, texSampler: sampler, uv: vec2f, texSize: vec2f) -> vec4f {\n\tlet samplePos: vec2f = uv * texSize;\n\tlet texPos1: vec2f = floor(samplePos - 0.5) + 0.5;\n\tlet f: vec2f = samplePos - texPos1;\n\tlet w0: vec2f = f * (-0.5 + f * (1.0 - 0.5 * f));\n\tlet w1: vec2f = 1.0 + f * f * (-2.5 + 1.5 * f);\n\tlet w2: vec2f = f * (0.5 + f * (2.0 - 1.5 * f));\n\tlet w3: vec2f = f * f * (-0.5 + 0.5 * f);\n\tlet w12: vec2f = w1 + w2;\n\tlet offset12: vec2f = w2 / w12;\n\tlet texPos0: vec2f = (texPos1 - 1.0) / texSize;\n\tlet texPos3: vec2f = (texPos1 + 2.0) / texSize;\n\tlet texPos12: vec2f = (texPos1 + offset12) / texSize;\n\tvar result: vec4f = vec4f(0.0);\n\tresult = result + textureSampleLevel(tex, texSampler, vec2f(texPos0.x, texPos0.y), 0.0) * w0.x * w0.y;\n\tresult = result + textureSampleLevel(tex, texSampler, vec2f(texPos12.x, texPos0.y), 0.0) * w12.x * w0.y;\n\tresult = result + textureSampleLevel(tex, texSampler, vec2f(texPos3.x, texPos0.y), 0.0) * w3.x * w0.y;\n\tresult = result + textureSampleLevel(tex, texSampler, vec2f(texPos0.x, texPos12.y), 0.0) * w0.x * w12.y;\n\tresult = result + textureSampleLevel(tex, texSampler, vec2f(texPos12.x, texPos12.y), 0.0) * w12.x * w12.y;\n\tresult = result + textureSampleLevel(tex, texSampler, vec2f(texPos3.x, texPos12.y), 0.0) * w3.x * w12.y;\n\tresult = result + textureSampleLevel(tex, texSampler, vec2f(texPos0.x, texPos3.y), 0.0) * w0.x * w3.y;\n\tresult = result + textureSampleLevel(tex, texSampler, vec2f(texPos12.x, texPos3.y), 0.0) * w12.x * w3.y;\n\tresult = result + textureSampleLevel(tex, texSampler, vec2f(texPos3.x, texPos3.y), 0.0) * w3.x * w3.y;\n\treturn result;\n}\n`;\n\nvar glsltaaResolvePS = `\n\t#include  \"sampleCatmullRomPS\"\n\t#include  \"screenDepthPS\"\n\tuniform sampler2D sourceTexture;\n\tuniform sampler2D historyTexture;\n\tuniform mat4 matrix_viewProjectionPrevious;\n\tuniform mat4 matrix_viewProjectionInverse;\n\tuniform vec4 jitters;\n\tuniform vec2 textureSize;\n\tvarying vec2 uv0;\n\tvec2 reproject(vec2 uv, float depth) {\n\t\t#ifndef WEBGPU\n\t\t\tdepth = depth * 2.0 - 1.0;\n\t\t#endif\n\t\tvec4 ndc = vec4(uv * 2.0 - 1.0, depth, 1.0);\n\t\tndc.xy -= jitters.xy;\n\t\tvec4 worldPosition = matrix_viewProjectionInverse * ndc;\n\t\tworldPosition /= worldPosition.w;\n\t\tvec4 screenPrevious = matrix_viewProjectionPrevious * worldPosition;\n\t\treturn (screenPrevious.xy / screenPrevious.w) * 0.5 + 0.5;\n\t}\n\tvec4 colorClamp(vec2 uv, vec4 historyColor) {\n\t\tvec3 minColor = vec3(9999.0);\n\t\tvec3 maxColor = vec3(-9999.0);\n\t\tfor(float x = -1.0; x <= 1.0; ++x) {\n\t\t\tfor(float y = -1.0; y <= 1.0; ++y) {\n\t\t\t\tvec3 color = texture2D(sourceTexture, uv + vec2(x, y) / textureSize).rgb;\n\t\t\t\tminColor = min(minColor, color);\n\t\t\t\tmaxColor = max(maxColor, color);\n\t\t\t}\n\t\t}\n\t\tvec3 clamped = clamp(historyColor.rgb, minColor, maxColor);\n\t\treturn vec4(clamped, historyColor.a);\n\t}\n\tvoid main()\n\t{\n\t\tvec2 uv = uv0;\n\t\t#ifdef WEBGPU\n\t\t\tuv.y = 1.0 - uv.y;\n\t\t#endif\n\t\tvec4 srcColor = texture2D(sourceTexture, uv);\n\t\tfloat linearDepth = getLinearScreenDepth(uv0);\n\t\tfloat depth = delinearizeDepth(linearDepth);\n\t\tvec2 historyUv = reproject(uv0, depth);\n\t\t#ifdef QUALITY_HIGH\n\t\t\tvec4 historyColor = SampleTextureCatmullRom(TEXTURE_PASS(historyTexture), historyUv, textureSize);\n\t\t#else\n\t\t\tvec4 historyColor = texture2D(historyTexture, historyUv);\n\t\t#endif\n\t\tvec4 historyColorClamped = colorClamp(uv, historyColor);\n\t\tfloat mixFactor = (historyUv.x < 0.0 || historyUv.x > 1.0 || historyUv.y < 0.0 || historyUv.y > 1.0) ?\n\t\t\t1.0 : 0.05;\n\t\tgl_FragColor = mix(historyColorClamped, srcColor, mixFactor);\n\t}\n`;\n\nvar wgsltaaResolvePS = `\n\t#include \"sampleCatmullRomPS\"\n\t#include \"screenDepthPS\"\n\tvar sourceTexture: texture_2d<f32>;\n\tvar sourceTextureSampler: sampler;\n\tvar historyTexture: texture_2d<f32>;\n\tvar historyTextureSampler: sampler;\n\tuniform matrix_viewProjectionPrevious: mat4x4f;\n\tuniform matrix_viewProjectionInverse: mat4x4f;\n\tuniform jitters: vec4f;\n\tuniform textureSize: vec2f;\n\tvarying uv0: vec2f;\n\tfn reproject(uv: vec2f, depth: f32) -> vec2f {\n\t\tvar ndc = vec4f(uv * 2.0 - 1.0, depth, 1.0);\n\t\tndc = vec4f(ndc.xy - uniform.jitters.xy, ndc.zw);\n\t\tvar worldPosition = uniform.matrix_viewProjectionInverse * ndc;\n\t\tworldPosition = worldPosition / worldPosition.w;\n\t\tlet screenPrevious = uniform.matrix_viewProjectionPrevious * worldPosition;\n\t\treturn (screenPrevious.xy / screenPrevious.w) * 0.5 + 0.5;\n\t}\n\tfn colorClamp(uv: vec2f, historyColor: vec4f) -> vec4f {\n\t\tvar minColor = vec3f(9999.0);\n\t\tvar maxColor = vec3f(-9999.0);\n\t\tfor (var ix: i32 = -1; ix <= 1; ix = ix + 1) {\n\t\t\tfor (var iy: i32 = -1; iy <= 1; iy = iy + 1) {\n\t\t\t\tlet color_sample = textureSample(sourceTexture, sourceTextureSampler, uv + vec2f(f32(ix), f32(iy)) / uniform.textureSize).rgb;\n\t\t\t\tminColor = min(minColor, color_sample);\n\t\t\t\tmaxColor = max(maxColor, color_sample);\n\t\t\t}\n\t\t}\n\t\tlet clamped = clamp(historyColor.rgb, minColor, maxColor);\n\t\treturn vec4f(clamped, historyColor.a);\n\t}\n\t@fragment\n\tfn fragmentMain(input: FragmentInput) -> FragmentOutput {\n\t\tvar output: FragmentOutput;\n\t\tvar uv = input.uv0;\n\t\tuv.y = 1.0 - uv.y;\n\t\tlet srcColor = textureSample(sourceTexture, sourceTextureSampler, uv);\n\t\tlet linearDepth = getLinearScreenDepth(uv0);\n\t\tlet depth = delinearizeDepth(linearDepth);\n\t\tlet historyUv = reproject(uv0, depth);\n\t\t#ifdef QUALITY_HIGH\n\t\t\tvar historyColor: vec4f = SampleTextureCatmullRom(historyTexture, historyTextureSampler, historyUv, uniform.textureSize);\n\t\t#else\n\t\t\tvar historyColor: vec4f = textureSample(historyTexture, historyTextureSampler, historyUv);\n\t\t#endif\n\t\tlet historyColorClamped = colorClamp(uv, historyColor);\n\t\tlet mixFactor_condition = historyUv.x < 0.0 || historyUv.x > 1.0 || historyUv.y < 0.0 || historyUv.y > 1.0;\n\t\tlet mixFactor = select(0.05, 1.0, mixFactor_condition);\n\t\toutput.color = mix(historyColorClamped, srcColor, mixFactor);\n\t\treturn output;\n\t}\n`;\n\nclass RenderPassTAA extends RenderPassShaderQuad {\n\t\tconstructor(device, sourceTexture, cameraComponent){\n\t\t\t\tsuper(device), this.historyIndex = 0, this.historyTexture = null, this.historyTextures = [], this.historyRenderTargets = [];\n\t\t\t\tthis.sourceTexture = sourceTexture;\n\t\t\t\tthis.cameraComponent = cameraComponent;\n\t\t\t\tShaderChunks.get(device, SHADERLANGUAGE_GLSL).set('sampleCatmullRomPS', glslSampleCatmullRomPS);\n\t\t\t\tShaderChunks.get(device, SHADERLANGUAGE_WGSL).set('sampleCatmullRomPS', wgslSampleCatmullRomPS);\n\t\t\t\tShaderChunks.get(device, SHADERLANGUAGE_GLSL).set('taaResolvePS', glsltaaResolvePS);\n\t\t\t\tShaderChunks.get(device, SHADERLANGUAGE_WGSL).set('taaResolvePS', wgsltaaResolvePS);\n\t\t\t\tconst defines = new Map();\n\t\t\t\tdefines.set('QUALITY_HIGH', true);\n\t\t\t\tShaderUtils.addScreenDepthChunkDefines(device, cameraComponent.shaderParams, defines);\n\t\t\t\tthis.shader = ShaderUtils.createShader(device, {\n\t\t\t\t\t\tuniqueName: 'TaaResolveShader',\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\taPosition: SEMANTIC_POSITION\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvertexChunk: 'quadVS',\n\t\t\t\t\t\tfragmentChunk: 'taaResolvePS',\n\t\t\t\t\t\tfragmentDefines: defines\n\t\t\t\t});\n\t\t\t\tconst { scope } = device;\n\t\t\t\tthis.sourceTextureId = scope.resolve('sourceTexture');\n\t\t\t\tthis.textureSizeId = scope.resolve('textureSize');\n\t\t\t\tthis.textureSize = new Float32Array(2);\n\t\t\t\tthis.historyTextureId = scope.resolve('historyTexture');\n\t\t\t\tthis.viewProjPrevId = scope.resolve('matrix_viewProjectionPrevious');\n\t\t\t\tthis.viewProjInvId = scope.resolve('matrix_viewProjectionInverse');\n\t\t\t\tthis.jittersId = scope.resolve('jitters');\n\t\t\t\tthis.cameraParams = new Float32Array(4);\n\t\t\t\tthis.cameraParamsId = scope.resolve('camera_params');\n\t\t\t\tthis.setup();\n\t\t}\n\t\tdestroy() {\n\t\t\t\tif (this.renderTarget) {\n\t\t\t\t\t\tthis.renderTarget.destroyTextureBuffers();\n\t\t\t\t\t\tthis.renderTarget.destroy();\n\t\t\t\t\t\tthis.renderTarget = null;\n\t\t\t\t}\n\t\t}\n\t\tsetup() {\n\t\t\t\tfor(let i = 0; i < 2; ++i){\n\t\t\t\t\t\tthis.historyTextures[i] = new Texture(this.device, {\n\t\t\t\t\t\t\t\tname: `TAA-History-${i}`,\n\t\t\t\t\t\t\t\twidth: 4,\n\t\t\t\t\t\t\t\theight: 4,\n\t\t\t\t\t\t\t\tformat: this.sourceTexture.format,\n\t\t\t\t\t\t\t\tmipmaps: false,\n\t\t\t\t\t\t\t\tminFilter: FILTER_LINEAR,\n\t\t\t\t\t\t\t\tmagFilter: FILTER_LINEAR,\n\t\t\t\t\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis.historyRenderTargets[i] = new RenderTarget({\n\t\t\t\t\t\t\t\tcolorBuffer: this.historyTextures[i],\n\t\t\t\t\t\t\t\tdepth: false\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tthis.historyTexture = this.historyTextures[0];\n\t\t\t\tthis.init(this.historyRenderTargets[0], {\n\t\t\t\t\t\tresizeSource: this.sourceTexture\n\t\t\t\t});\n\t\t}\n\t\tbefore() {\n\t\t\t\tthis.sourceTextureId.setValue(this.sourceTexture);\n\t\t\t\tthis.historyTextureId.setValue(this.historyTextures[1 - this.historyIndex]);\n\t\t\t\tthis.textureSize[0] = this.sourceTexture.width;\n\t\t\t\tthis.textureSize[1] = this.sourceTexture.height;\n\t\t\t\tthis.textureSizeId.setValue(this.textureSize);\n\t\t\t\tconst camera = this.cameraComponent.camera;\n\t\t\t\tthis.viewProjPrevId.setValue(camera._viewProjPrevious.data);\n\t\t\t\tthis.viewProjInvId.setValue(camera._viewProjInverse.data);\n\t\t\t\tthis.jittersId.setValue(camera._jitters);\n\t\t\t\tconst f = camera._farClip;\n\t\t\t\tthis.cameraParams[0] = 1 / f;\n\t\t\t\tthis.cameraParams[1] = f;\n\t\t\t\tthis.cameraParams[2] = camera._nearClip;\n\t\t\t\tthis.cameraParams[3] = camera.projection === PROJECTION_ORTHOGRAPHIC ? 1 : 0;\n\t\t\t\tthis.cameraParamsId.setValue(this.cameraParams);\n\t\t}\n\t\tupdate() {\n\t\t\t\tthis.historyIndex = 1 - this.historyIndex;\n\t\t\t\tthis.historyTexture = this.historyTextures[this.historyIndex];\n\t\t\t\tthis.renderTarget = this.historyRenderTargets[this.historyIndex];\n\t\t\t\treturn this.historyTexture;\n\t\t}\n}\n\nvar glslCocPS = `\n\t#include \"screenDepthPS\"\n\tvarying vec2 uv0;\n\tuniform vec3 params;\n\tvoid main()\n\t{\n\t\tfloat depth = getLinearScreenDepth(uv0);\n\t\tfloat focusDistance = params.x;\n\t\tfloat focusRange = params.y;\n\t\tfloat invRange = params.z;\n\t\tfloat farRange = focusDistance + focusRange * 0.5;\n\t\t\n\t\tfloat cocFar = min((depth - farRange) * invRange, 1.0);\n\t\t#ifdef NEAR_BLUR\n\t\t\tfloat nearRange = focusDistance - focusRange * 0.5;\n\t\t\tfloat cocNear = min((nearRange - depth) * invRange, 1.0);\n\t\t#else\n\t\t\tfloat cocNear = 0.0;\n\t\t#endif\n\t\tgl_FragColor = vec4(cocFar, cocNear, 0.0, 0.0);\n\t}\n`;\n\nvar wgslCocPS = `\n#include \"screenDepthPS\"\nvarying uv0: vec2f;\nuniform params: vec3f;\n@fragment\nfn fragmentMain(input: FragmentInput) -> FragmentOutput {\n\tvar output: FragmentOutput;\n\tlet depth: f32 = getLinearScreenDepth(uv0);\n\tlet focusDistance: f32 = uniform.params.x;\n\tlet focusRange: f32 = uniform.params.y;\n\tlet invRange: f32 = uniform.params.z;\n\tlet farRange: f32 = focusDistance + focusRange * 0.5;\n\tlet cocFar: f32 = min((depth - farRange) * invRange, 1.0);\n\t#ifdef NEAR_BLUR\n\t\tlet nearRange: f32 = focusDistance - focusRange * 0.5;\n\t\tvar cocNear: f32 = min((nearRange - depth) * invRange, 1.0);\n\t#else\n\t\tvar cocNear: f32 = 0.0;\n\t#endif\n\toutput.color = vec4f(cocFar, cocNear, 0.0, 0.0);\n\treturn output;\n}\n`;\n\nclass RenderPassCoC extends RenderPassShaderQuad {\n\t\tconstructor(device, cameraComponent, nearBlur){\n\t\t\t\tsuper(device);\n\t\t\t\tthis.cameraComponent = cameraComponent;\n\t\t\t\tShaderChunks.get(device, SHADERLANGUAGE_GLSL).set('cocPS', glslCocPS);\n\t\t\t\tShaderChunks.get(device, SHADERLANGUAGE_WGSL).set('cocPS', wgslCocPS);\n\t\t\t\tconst defines = new Map();\n\t\t\t\tif (nearBlur) defines.set('NEAR_BLUR', '');\n\t\t\t\tShaderUtils.addScreenDepthChunkDefines(device, cameraComponent.shaderParams, defines);\n\t\t\t\tthis.shader = ShaderUtils.createShader(device, {\n\t\t\t\t\t\tuniqueName: `CocShader-${nearBlur}`,\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\taPosition: SEMANTIC_POSITION\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvertexChunk: 'quadVS',\n\t\t\t\t\t\tfragmentChunk: 'cocPS',\n\t\t\t\t\t\tfragmentDefines: defines\n\t\t\t\t});\n\t\t\t\tthis.paramsId = device.scope.resolve('params');\n\t\t\t\tthis.paramsValue = new Float32Array(3);\n\t\t\t\tthis.cameraParams = new Float32Array(4);\n\t\t\t\tthis.cameraParamsId = device.scope.resolve('camera_params');\n\t\t}\n\t\texecute() {\n\t\t\t\tconst { paramsValue, focusRange } = this;\n\t\t\t\tparamsValue[0] = this.focusDistance + 0.001;\n\t\t\t\tparamsValue[1] = focusRange;\n\t\t\t\tparamsValue[2] = 1 / focusRange;\n\t\t\t\tthis.paramsId.setValue(paramsValue);\n\t\t\t\tconst camera = this.cameraComponent.camera;\n\t\t\t\tconst f = camera._farClip;\n\t\t\t\tthis.cameraParams[0] = 1 / f;\n\t\t\t\tthis.cameraParams[1] = f;\n\t\t\t\tthis.cameraParams[2] = camera._nearClip;\n\t\t\t\tthis.cameraParams[3] = camera.projection === PROJECTION_ORTHOGRAPHIC ? 1 : 0;\n\t\t\t\tthis.cameraParamsId.setValue(this.cameraParams);\n\t\t\t\tsuper.execute();\n\t\t}\n}\n\nvar glsldofBlurPS = `\n\t#if defined(NEAR_BLUR)\n\t\tuniform sampler2D nearTexture;\n\t#endif\n\tuniform sampler2D farTexture;\n\tuniform sampler2D cocTexture;\n\tuniform vec2 kernel[{KERNEL_COUNT}];\n\tuniform float blurRadiusNear;\n\tuniform float blurRadiusFar;\n\tvarying vec2 uv0;\n\tvoid main()\n\t{\n\t\tvec2 coc = texture2D(cocTexture, uv0).rg;\n\t\tfloat cocFar = coc.r;\n\t\tvec3 sum = vec3(0.0, 0.0, 0.0);\n\t\t#if defined(NEAR_BLUR)\n\t\t\tfloat cocNear = coc.g;\n\t\t\tif (cocNear > 0.0001) {\n\t\t\t\tivec2 nearTextureSize = textureSize(nearTexture, 0);\n\t\t\t\tvec2 step = cocNear * blurRadiusNear / vec2(nearTextureSize);\n\t\t\t\tfor (int i = 0; i < {KERNEL_COUNT}; i++) {\n\t\t\t\t\tvec2 uv = uv0 + step * kernel[i];\n\t\t\t\t\tvec3 tap = texture2DLod(nearTexture, uv, 0.0).rgb;\n\t\t\t\t\tsum += tap.rgb;\n\t\t\t\t}\n\t\t\t\tsum *= float({INV_KERNEL_COUNT});\n\t\t\t} else\n\t\t#endif\n\t\t\t\n\t\t\tif (cocFar > 0.0001) {\n\t\t\tivec2 farTextureSize = textureSize(farTexture, 0);\n\t\t\tvec2 step = cocFar * blurRadiusFar / vec2(farTextureSize);\n\t\t\tfloat sumCoC = 0.0; \n\t\t\tfor (int i = 0; i < {KERNEL_COUNT}; i++) {\n\t\t\t\tvec2 uv = uv0 + step * kernel[i];\n\t\t\t\tvec3 tap = texture2DLod(farTexture, uv, 0.0).rgb;\n\t\t\t\tfloat cocThis = texture2DLod(cocTexture, uv, 0.0).r;\n\t\t\t\ttap *= cocThis;\n\t\t\t\tsumCoC += cocThis;\n\t\t\t\tsum += tap;\n\t\t\t}\n\t\t\tif (sumCoC > 0.0)\n\t\t\t\tsum /= sumCoC;\n\t\t\tsum /= cocFar;\n\t\t}\n\t\tpcFragColor0 = vec4(sum, 1.0);\n\t}\n`;\n\nvar wgsldofBlurPS = `\n#if defined(NEAR_BLUR)\n\tvar nearTexture: texture_2d<f32>;\n\tvar nearTextureSampler: sampler;\n#endif\nvar farTexture: texture_2d<f32>;\nvar farTextureSampler: sampler;\nvar cocTexture: texture_2d<f32>;\nvar cocTextureSampler: sampler;\nuniform kernel: array<vec2f, {KERNEL_COUNT}>;\nuniform blurRadiusNear: f32;\nuniform blurRadiusFar: f32;\nvarying uv0: vec2f;\n@fragment\nfn fragmentMain(input: FragmentInput) -> FragmentOutput {\n\tvar output: FragmentOutput;\n\tlet coc: vec2f = textureSample(cocTexture, cocTextureSampler, input.uv0).rg;\n\tlet cocFar: f32 = coc.r;\n\tvar sum: vec3f = vec3f(0.0, 0.0, 0.0);\n\t#if defined(NEAR_BLUR)\n\t\tlet cocNear: f32 = coc.g;\n\t\tif (cocNear > 0.0001) {\n\t\t\tlet nearTextureSize: vec2f = vec2f(textureDimensions(nearTexture, 0));\n\t\t\tlet step: vec2f = cocNear * uniform.blurRadiusNear / nearTextureSize;\n\t\t\tfor (var i: i32 = 0; i < {KERNEL_COUNT}; i = i + 1) {\n\t\t\t\tlet uv: vec2f = uv0 + step * uniform.kernel[i].element;\n\t\t\t\tlet tap: vec3f = textureSampleLevel(nearTexture, nearTextureSampler, uv, 0.0).rgb;\n\t\t\t\tsum = sum + tap;\n\t\t\t}\n\t\t\tsum = sum * f32({INV_KERNEL_COUNT});\n\t\t} else\n\t#endif\n\t\tif (cocFar > 0.0001) {\n\t\t\tlet farTextureSize: vec2f = vec2f(textureDimensions(farTexture, 0));\n\t\t\tlet step: vec2f = cocFar * uniform.blurRadiusFar / farTextureSize;\n\t\t\tvar sumCoC: f32 = 0.0;\n\t\t\tfor (var i: i32 = 0; i < {KERNEL_COUNT}; i = i + 1) {\n\t\t\t\tlet uv: vec2f = uv0 + step * uniform.kernel[i].element;\n\t\t\t\tvar tap: vec3f = textureSampleLevel(farTexture, farTextureSampler, uv, 0.0).rgb;\n\t\t\t\tlet cocThis: f32 = textureSampleLevel(cocTexture, cocTextureSampler, uv, 0.0).r;\n\t\t\t\ttap = tap * cocThis;\n\t\t\t\tsumCoC = sumCoC + cocThis;\n\t\t\t\tsum = sum + tap;\n\t\t\t}\n\t\t\tif (sumCoC > 0.0) {\n\t\t\t\tsum = sum / sumCoC;\n\t\t\t}\n\t\t\tsum = sum / cocFar;\n\t\t}\n\toutput.color = vec4f(sum, 1.0);\n\treturn output;\n}\n`;\n\nclass RenderPassDofBlur extends RenderPassShaderQuad {\n\t\tconstructor(device, nearTexture, farTexture, cocTexture){\n\t\t\t\tsuper(device), this.blurRadiusNear = 1, this.blurRadiusFar = 1, this._blurRings = 3, this._blurRingPoints = 3;\n\t\t\t\tthis.nearTexture = nearTexture;\n\t\t\t\tthis.farTexture = farTexture;\n\t\t\t\tthis.cocTexture = cocTexture;\n\t\t\t\tShaderChunks.get(device, SHADERLANGUAGE_GLSL).set('dofBlurPS', glsldofBlurPS);\n\t\t\t\tShaderChunks.get(device, SHADERLANGUAGE_WGSL).set('dofBlurPS', wgsldofBlurPS);\n\t\t\t\tconst { scope } = device;\n\t\t\t\tthis.kernelId = scope.resolve('kernel[0]');\n\t\t\t\tthis.kernelCountId = scope.resolve('kernelCount');\n\t\t\t\tthis.blurRadiusNearId = scope.resolve('blurRadiusNear');\n\t\t\t\tthis.blurRadiusFarId = scope.resolve('blurRadiusFar');\n\t\t\t\tthis.nearTextureId = scope.resolve('nearTexture');\n\t\t\t\tthis.farTextureId = scope.resolve('farTexture');\n\t\t\t\tthis.cocTextureId = scope.resolve('cocTexture');\n\t\t}\n\t\tset blurRings(value) {\n\t\t\t\tif (this._blurRings !== value) {\n\t\t\t\t\t\tthis._blurRings = value;\n\t\t\t\t\t\tthis.shader = null;\n\t\t\t\t}\n\t\t}\n\t\tget blurRings() {\n\t\t\t\treturn this._blurRings;\n\t\t}\n\t\tset blurRingPoints(value) {\n\t\t\t\tif (this._blurRingPoints !== value) {\n\t\t\t\t\t\tthis._blurRingPoints = value;\n\t\t\t\t\t\tthis.shader = null;\n\t\t\t\t}\n\t\t}\n\t\tget blurRingPoints() {\n\t\t\t\treturn this._blurRingPoints;\n\t\t}\n\t\tcreateShader() {\n\t\t\t\tthis.kernel = new Float32Array(Kernel.concentric(this.blurRings, this.blurRingPoints));\n\t\t\t\tconst kernelCount = this.kernel.length >> 1;\n\t\t\t\tconst nearBlur = this.nearTexture !== null;\n\t\t\t\tconst defines = new Map();\n\t\t\t\tdefines.set('{KERNEL_COUNT}', kernelCount);\n\t\t\t\tdefines.set('{INV_KERNEL_COUNT}', 1.0 / kernelCount);\n\t\t\t\tif (nearBlur) defines.set('NEAR_BLUR', '');\n\t\t\t\tthis.shader = ShaderUtils.createShader(this.device, {\n\t\t\t\t\t\tuniqueName: `DofBlurShader-${kernelCount}-${nearBlur ? 'nearBlur' : 'noNearBlur'}`,\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\taPosition: SEMANTIC_POSITION\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvertexChunk: 'quadVS',\n\t\t\t\t\t\tfragmentChunk: 'dofBlurPS',\n\t\t\t\t\t\tfragmentDefines: defines\n\t\t\t\t});\n\t\t}\n\t\texecute() {\n\t\t\t\tif (!this.shader) {\n\t\t\t\t\t\tthis.createShader();\n\t\t\t\t}\n\t\t\t\tthis.nearTextureId.setValue(this.nearTexture);\n\t\t\t\tthis.farTextureId.setValue(this.farTexture);\n\t\t\t\tthis.cocTextureId.setValue(this.cocTexture);\n\t\t\t\tthis.kernelId.setValue(this.kernel);\n\t\t\t\tthis.kernelCountId.setValue(this.kernel.length >> 1);\n\t\t\t\tthis.blurRadiusNearId.setValue(this.blurRadiusNear);\n\t\t\t\tthis.blurRadiusFarId.setValue(this.blurRadiusFar);\n\t\t\t\tsuper.execute();\n\t\t}\n}\n\nclass RenderPassDof extends RenderPass {\n\t\tconstructor(device, cameraComponent, sceneTexture, sceneTextureHalf, highQuality, nearBlur){\n\t\t\t\tsuper(device), this.focusDistance = 100, this.focusRange = 50, this.blurRadius = 1, this.blurRings = 3, this.blurRingPoints = 3, this.highQuality = true, this.cocTexture = null, this.blurTexture = null, this.cocPass = null, this.farPass = null, this.blurPass = null;\n\t\t\t\tthis.highQuality = highQuality;\n\t\t\t\tthis.cocPass = this.setupCocPass(device, cameraComponent, sceneTexture, nearBlur);\n\t\t\t\tthis.beforePasses.push(this.cocPass);\n\t\t\t\tconst sourceTexture = highQuality ? sceneTexture : sceneTextureHalf;\n\t\t\t\tthis.farPass = this.setupFarPass(device, sourceTexture, 0.5);\n\t\t\t\tthis.beforePasses.push(this.farPass);\n\t\t\t\tthis.blurPass = this.setupBlurPass(device, sceneTextureHalf, nearBlur, highQuality ? 2 : 0.5);\n\t\t\t\tthis.beforePasses.push(this.blurPass);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.destroyRenderPasses();\n\t\t\t\tthis.cocPass = null;\n\t\t\t\tthis.farPass = null;\n\t\t\t\tthis.blurPass = null;\n\t\t\t\tthis.destroyRT(this.cocRT);\n\t\t\t\tthis.destroyRT(this.farRt);\n\t\t\t\tthis.destroyRT(this.blurRt);\n\t\t\t\tthis.cocRT = null;\n\t\t\t\tthis.farRt = null;\n\t\t\t\tthis.blurRt = null;\n\t\t}\n\t\tdestroyRenderPasses() {\n\t\t\t\tfor(let i = 0; i < this.beforePasses.length; i++){\n\t\t\t\t\t\tthis.beforePasses[i].destroy();\n\t\t\t\t}\n\t\t\t\tthis.beforePasses.length = 0;\n\t\t}\n\t\tdestroyRT(rt) {\n\t\t\t\tif (rt) {\n\t\t\t\t\t\trt.destroyTextureBuffers();\n\t\t\t\t\t\trt.destroy();\n\t\t\t\t}\n\t\t}\n\t\tsetupCocPass(device, cameraComponent, sourceTexture, nearBlur) {\n\t\t\t\tconst format = nearBlur ? PIXELFORMAT_RG8 : PIXELFORMAT_R8;\n\t\t\t\tthis.cocRT = this.createRenderTarget('CoCTexture', format);\n\t\t\t\tthis.cocTexture = this.cocRT.colorBuffer;\n\t\t\t\tconst cocPass = new RenderPassCoC(device, cameraComponent, nearBlur);\n\t\t\t\tcocPass.init(this.cocRT, {\n\t\t\t\t\t\tresizeSource: sourceTexture\n\t\t\t\t});\n\t\t\t\tcocPass.setClearColor(Color.BLACK);\n\t\t\t\treturn cocPass;\n\t\t}\n\t\tsetupFarPass(device, sourceTexture, scale) {\n\t\t\t\tthis.farRt = this.createRenderTarget('FarDofTexture', sourceTexture.format);\n\t\t\t\tconst farPass = new RenderPassDownsample(device, sourceTexture, {\n\t\t\t\t\t\tboxFilter: true,\n\t\t\t\t\t\tpremultiplyTexture: this.cocTexture,\n\t\t\t\t\t\tpremultiplySrcChannel: 'r'\n\t\t\t\t});\n\t\t\t\tfarPass.init(this.farRt, {\n\t\t\t\t\t\tresizeSource: sourceTexture,\n\t\t\t\t\t\tscaleX: scale,\n\t\t\t\t\t\tscaleY: scale\n\t\t\t\t});\n\t\t\t\tfarPass.setClearColor(Color.BLACK);\n\t\t\t\treturn farPass;\n\t\t}\n\t\tsetupBlurPass(device, nearTexture, nearBlur, scale) {\n\t\t\t\tconst farTexture = this.farRt?.colorBuffer;\n\t\t\t\tthis.blurRt = this.createRenderTarget('DofBlurTexture', nearTexture.format);\n\t\t\t\tthis.blurTexture = this.blurRt.colorBuffer;\n\t\t\t\tconst blurPass = new RenderPassDofBlur(device, nearBlur ? nearTexture : null, farTexture, this.cocTexture);\n\t\t\t\tblurPass.init(this.blurRt, {\n\t\t\t\t\t\tresizeSource: nearTexture,\n\t\t\t\t\t\tscaleX: scale,\n\t\t\t\t\t\tscaleY: scale\n\t\t\t\t});\n\t\t\t\tblurPass.setClearColor(Color.BLACK);\n\t\t\t\treturn blurPass;\n\t\t}\n\t\tcreateTexture(name, format) {\n\t\t\t\treturn new Texture(this.device, {\n\t\t\t\t\t\tname: name,\n\t\t\t\t\t\twidth: 1,\n\t\t\t\t\t\theight: 1,\n\t\t\t\t\t\tformat: format,\n\t\t\t\t\t\tmipmaps: false,\n\t\t\t\t\t\tminFilter: FILTER_LINEAR,\n\t\t\t\t\t\tmagFilter: FILTER_LINEAR,\n\t\t\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE\n\t\t\t\t});\n\t\t}\n\t\tcreateRenderTarget(name, format) {\n\t\t\t\treturn new RenderTarget({\n\t\t\t\t\t\tcolorBuffer: this.createTexture(name, format),\n\t\t\t\t\t\tdepth: false,\n\t\t\t\t\t\tstencil: false\n\t\t\t\t});\n\t\t}\n\t\tframeUpdate() {\n\t\t\t\tsuper.frameUpdate();\n\t\t\t\tthis.cocPass.focusDistance = this.focusDistance;\n\t\t\t\tthis.cocPass.focusRange = this.focusRange;\n\t\t\t\tthis.blurPass.blurRadiusNear = this.blurRadius;\n\t\t\t\tthis.blurPass.blurRadiusFar = this.blurRadius * (this.highQuality ? 1 : 0.5);\n\t\t\t\tthis.blurPass.blurRings = this.blurRings;\n\t\t\t\tthis.blurPass.blurRingPoints = this.blurRingPoints;\n\t\t}\n}\n\nconst tempMeshInstances = [];\nconst DEPTH_UNIFORM_NAME = 'uSceneDepthMap';\nclass RenderPassPrepass extends RenderPass {\n\t\tconstructor(device, scene, renderer, camera, options){\n\t\t\t\tsuper(device), this.viewBindGroups = [], this.linearDepthClearValue = new Color(0, 0, 0, 0);\n\t\t\t\tthis.scene = scene;\n\t\t\t\tthis.renderer = renderer;\n\t\t\t\tthis.camera = camera;\n\t\t\t\tthis.setupRenderTarget(options);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tsuper.destroy();\n\t\t\t\tthis.renderTarget?.destroy();\n\t\t\t\tthis.renderTarget = null;\n\t\t\t\tthis.linearDepthTexture?.destroy();\n\t\t\t\tthis.linearDepthTexture = null;\n\t\t\t\tthis.viewBindGroups.forEach((bg)=>{\n\t\t\t\t\t\tbg.defaultUniformBuffer.destroy();\n\t\t\t\t\t\tbg.destroy();\n\t\t\t\t});\n\t\t\t\tthis.viewBindGroups.length = 0;\n\t\t}\n\t\tsetupRenderTarget(options) {\n\t\t\t\tconst { device } = this;\n\t\t\t\tthis.linearDepthFormat = device.textureFloatRenderable ? PIXELFORMAT_R32F : PIXELFORMAT_RGBA8;\n\t\t\t\tthis.linearDepthTexture = new Texture(device, {\n\t\t\t\t\t\tname: 'SceneLinearDepthTexture',\n\t\t\t\t\t\twidth: 1,\n\t\t\t\t\t\theight: 1,\n\t\t\t\t\t\tformat: this.linearDepthFormat,\n\t\t\t\t\t\tmipmaps: false,\n\t\t\t\t\t\tminFilter: FILTER_NEAREST,\n\t\t\t\t\t\tmagFilter: FILTER_NEAREST,\n\t\t\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE\n\t\t\t\t});\n\t\t\t\tconst renderTarget = new RenderTarget({\n\t\t\t\t\t\tname: 'PrepassRT',\n\t\t\t\t\t\tcolorBuffer: this.linearDepthTexture,\n\t\t\t\t\t\tdepth: true,\n\t\t\t\t\t\tsamples: 1\n\t\t\t\t});\n\t\t\t\tthis.camera.shaderParams.sceneDepthMapLinear = true;\n\t\t\t\tthis.init(renderTarget, options);\n\t\t}\n\t\tafter() {\n\t\t\t\tthis.device.scope.resolve(DEPTH_UNIFORM_NAME).setValue(this.linearDepthTexture);\n\t\t}\n\t\texecute() {\n\t\t\t\tconst { renderer, scene, renderTarget } = this;\n\t\t\t\tconst camera = this.camera.camera;\n\t\t\t\tconst layers = scene.layers.layerList;\n\t\t\t\tconst subLayerEnabled = scene.layers.subLayerEnabled;\n\t\t\t\tconst isTransparent = scene.layers.subLayerList;\n\t\t\t\tfor(let i = 0; i < layers.length; i++){\n\t\t\t\t\t\tconst layer = layers[i];\n\t\t\t\t\t\tif (layer.id === LAYERID_DEPTH) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (layer.enabled && subLayerEnabled[i]) {\n\t\t\t\t\t\t\t\tif (layer.camerasSet.has(camera)) {\n\t\t\t\t\t\t\t\t\t\tconst culledInstances = layer.getCulledInstances(camera);\n\t\t\t\t\t\t\t\t\t\tconst meshInstances = isTransparent[i] ? culledInstances.transparent : culledInstances.opaque;\n\t\t\t\t\t\t\t\t\t\tfor(let j = 0; j < meshInstances.length; j++){\n\t\t\t\t\t\t\t\t\t\t\t\tconst meshInstance = meshInstances[j];\n\t\t\t\t\t\t\t\t\t\t\t\tif (meshInstance.material?.depthWrite) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttempMeshInstances.push(meshInstance);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\trenderer.renderForwardLayer(camera, renderTarget, null, undefined, SHADER_PREPASS, this.viewBindGroups, {\n\t\t\t\t\t\t\t\t\t\t\t\tmeshInstances: tempMeshInstances\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\ttempMeshInstances.length = 0;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tframeUpdate() {\n\t\t\t\tsuper.frameUpdate();\n\t\t\t\tconst { camera } = this;\n\t\t\t\tthis.setClearDepth(camera.clearDepthBuffer ? 1 : undefined);\n\t\t\t\tlet clearValue;\n\t\t\t\tif (camera.clearDepthBuffer) {\n\t\t\t\t\t\tconst farClip = camera.farClip - Number.MIN_VALUE;\n\t\t\t\t\t\tclearValue = this.linearDepthClearValue;\n\t\t\t\t\t\tif (this.linearDepthFormat === PIXELFORMAT_R32F) {\n\t\t\t\t\t\t\t\tclearValue.r = farClip;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tFloatPacking.float2RGBA8(farClip, clearValue);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.setClearColor(clearValue);\n\t\t}\n}\n\nvar glslDepthAwareBlurPS = `\n\t#include \"screenDepthPS\"\n\tvarying vec2 uv0;\n\tuniform sampler2D sourceTexture;\n\tuniform vec2 sourceInvResolution;\n\tuniform int filterSize;\n\tfloat random(const highp vec2 w) {\n\t\tconst vec3 m = vec3(0.06711056, 0.00583715, 52.9829189);\n\t\treturn fract(m.z * fract(dot(w, m.xy)));\n\t}\n\tmediump float bilateralWeight(in mediump float depth, in mediump float sampleDepth) {\n\t\tmediump float diff = (sampleDepth - depth);\n\t\treturn max(0.0, 1.0 - diff * diff);\n\t}\n\tvoid tap(inout float sum, inout float totalWeight, float weight, float depth, vec2 position) {\n\t\tmediump float color = texture2D(sourceTexture, position).r;\n\t\tmediump float textureDepth = -getLinearScreenDepth(position);\n\t\n\t\tmediump float bilateral = bilateralWeight(depth, textureDepth);\n\t\tbilateral *= weight;\n\t\tsum += color * bilateral;\n\t\ttotalWeight += bilateral;\n\t}\n\tvoid main() {\n\t\tmediump float depth = -getLinearScreenDepth(uv0);\n\t\tmediump float totalWeight = 1.0;\n\t\tmediump float color = texture2D(sourceTexture, uv0 ).r;\n\t\tmediump float sum = color * totalWeight;\n\t\tfor (mediump int i = -filterSize; i <= filterSize; i++) {\n\t\t\tmediump float weight = 1.0;\n\t\t\t#ifdef HORIZONTAL\n\t\t\t\tvec2 offset = vec2(i, 0) * sourceInvResolution;\n\t\t\t#else\n\t\t\t\tvec2 offset = vec2(0, i) * sourceInvResolution;\n\t\t\t#endif\n\t\t\ttap(sum, totalWeight, weight, depth, uv0 + offset);\n\t\t}\n\t\tmediump float ao = sum / totalWeight;\n\t\tgl_FragColor.r = ao;\n\t}\n`;\n\nvar wgslDepthAwareBlurPS = `\n#include \"screenDepthPS\"\nvarying uv0: vec2f;\nvar sourceTexture: texture_2d<f32>;\nvar sourceTextureSampler: sampler;\nuniform sourceInvResolution: vec2f;\nuniform filterSize: i32;\nfn random(w: vec2f) -> f32 {\n\tconst m: vec3f = vec3f(0.06711056, 0.00583715, 52.9829189);\n\treturn fract(m.z * fract(dot(w, m.xy)));\n}\nfn bilateralWeight(depth: f32, sampleDepth: f32) -> f32 {\n\tlet diff: f32 = (sampleDepth - depth);\n\treturn max(0.0, 1.0 - diff * diff);\n}\nfn tap(sum_ptr: ptr<function, f32>, totalWeight_ptr: ptr<function, f32>, weight: f32, depth: f32, position: vec2f) {\n\tlet color: f32 = textureSample(sourceTexture, sourceTextureSampler, position).r;\n\tlet textureDepth: f32 = -getLinearScreenDepth(position);\n\tlet bilateral: f32 = bilateralWeight(depth, textureDepth) * weight;\n\t*sum_ptr = *sum_ptr + color * bilateral;\n\t*totalWeight_ptr = *totalWeight_ptr + bilateral;\n}\n@fragment\nfn fragmentMain(input: FragmentInput) -> FragmentOutput {\n\tvar output: FragmentOutput;\n\tlet depth: f32 = -getLinearScreenDepth(input.uv0);\n\tvar totalWeight: f32 = 1.0;\n\tlet color: f32 = textureSample(sourceTexture, sourceTextureSampler, input.uv0 ).r;\n\tvar sum: f32 = color * totalWeight;\n\tfor (var i: i32 = -uniform.filterSize; i <= uniform.filterSize; i = i + 1) {\n\t\tlet weight: f32 = 1.0;\n\t\t#ifdef HORIZONTAL\n\t\t\tvar offset: vec2f = vec2f(f32(i), 0.0) * uniform.sourceInvResolution;\n\t\t#else\n\t\t\tvar offset: vec2f = vec2f(0.0, f32(i)) * uniform.sourceInvResolution;\n\t\t#endif\n\t\ttap(&sum, &totalWeight, weight, depth, input.uv0 + offset);\n\t}\n\tlet ao: f32 = sum / totalWeight;\n\toutput.color = vec4f(ao, ao, ao, 1.0);\n\treturn output;\n}\n`;\n\nclass RenderPassDepthAwareBlur extends RenderPassShaderQuad {\n\t\tconstructor(device, sourceTexture, cameraComponent, horizontal){\n\t\t\t\tsuper(device);\n\t\t\t\tthis.sourceTexture = sourceTexture;\n\t\t\t\tShaderChunks.get(device, SHADERLANGUAGE_GLSL).set('depthAwareBlurPS', glslDepthAwareBlurPS);\n\t\t\t\tShaderChunks.get(device, SHADERLANGUAGE_WGSL).set('depthAwareBlurPS', wgslDepthAwareBlurPS);\n\t\t\t\tconst defines = new Map();\n\t\t\t\tif (horizontal) defines.set('HORIZONTAL', '');\n\t\t\t\tShaderUtils.addScreenDepthChunkDefines(device, cameraComponent.shaderParams, defines);\n\t\t\t\tthis.shader = ShaderUtils.createShader(device, {\n\t\t\t\t\t\tuniqueName: `DepthAware${horizontal ? 'Horizontal' : 'Vertical'}BlurShader`,\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\taPosition: SEMANTIC_POSITION\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvertexChunk: 'quadVS',\n\t\t\t\t\t\tfragmentChunk: 'depthAwareBlurPS',\n\t\t\t\t\t\tfragmentDefines: defines\n\t\t\t\t});\n\t\t\t\tconst scope = this.device.scope;\n\t\t\t\tthis.sourceTextureId = scope.resolve('sourceTexture');\n\t\t\t\tthis.sourceInvResolutionId = scope.resolve('sourceInvResolution');\n\t\t\t\tthis.sourceInvResolutionValue = new Float32Array(2);\n\t\t\t\tthis.filterSizeId = scope.resolve('filterSize');\n\t\t}\n\t\texecute() {\n\t\t\t\tthis.filterSizeId.setValue(4);\n\t\t\t\tthis.sourceTextureId.setValue(this.sourceTexture);\n\t\t\t\tconst { width, height } = this.sourceTexture;\n\t\t\t\tthis.sourceInvResolutionValue[0] = 1.0 / width;\n\t\t\t\tthis.sourceInvResolutionValue[1] = 1.0 / height;\n\t\t\t\tthis.sourceInvResolutionId.setValue(this.sourceInvResolutionValue);\n\t\t\t\tsuper.execute();\n\t\t}\n}\n\nvar glslSsaoPS = `\n\t#include \"screenDepthPS\"\n\t\n\tvarying vec2 uv0;\n\tuniform vec2 uInvResolution;\n\tuniform float uAspect;\n\t#define saturate(x) clamp(x,0.0,1.0)\n\thighp float getWFromProjectionMatrix(const mat4 p, const vec3 v) {\n\t\treturn -v.z;\n\t}\n\thighp float getViewSpaceZFromW(const mat4 p, const float w) {\n\t\treturn -w;\n\t}\n\tconst float kLog2LodRate = 3.0;\n\tfloat random(const highp vec2 w) {\n\t\tconst vec3 m = vec3(0.06711056, 0.00583715, 52.9829189);\n\t\treturn fract(m.z * fract(dot(w, m.xy)));\n\t}\n\thighp vec2 getFragCoord() {\n\t\treturn gl_FragCoord.xy;\n\t}\n\thighp vec3 computeViewSpacePositionFromDepth(highp vec2 uv, highp float linearDepth) {\n\t\treturn vec3((0.5 - uv) * vec2(uAspect, 1.0) * linearDepth, linearDepth);\n\t}\n\thighp vec3 faceNormal(highp vec3 dpdx, highp vec3 dpdy) {\n\t\treturn normalize(cross(dpdx, dpdy));\n\t}\n\thighp vec3 computeViewSpaceNormal(const highp vec3 position) {\n\t\treturn faceNormal(dFdx(position), dFdy(position));\n\t}\n\thighp vec3 computeViewSpaceNormal(const highp vec3 position, const highp vec2 uv) {\n\t\thighp vec2 uvdx = uv + vec2(uInvResolution.x, 0.0);\n\t\thighp vec2 uvdy = uv + vec2(0.0, uInvResolution.y);\n\t\thighp vec3 px = computeViewSpacePositionFromDepth(uvdx, -getLinearScreenDepth(uvdx));\n\t\thighp vec3 py = computeViewSpacePositionFromDepth(uvdy, -getLinearScreenDepth(uvdy));\n\t\thighp vec3 dpdx = px - position;\n\t\thighp vec3 dpdy = py - position;\n\t\treturn faceNormal(dpdx, dpdy);\n\t}\n\tuniform vec2 uSampleCount;\n\tuniform float uSpiralTurns;\n\t#define PI (3.14159)\n\tmediump vec3 tapLocation(mediump float i, const mediump float noise) {\n\t\tmediump float offset = ((2.0 * PI) * 2.4) * noise;\n\t\tmediump float angle = ((i * uSampleCount.y) * uSpiralTurns) * (2.0 * PI) + offset;\n\t\tmediump float radius = (i + noise + 0.5) * uSampleCount.y;\n\t\treturn vec3(cos(angle), sin(angle), radius * radius);\n\t}\n\thighp vec2 startPosition(const float noise) {\n\t\tfloat angle = ((2.0 * PI) * 2.4) * noise;\n\t\treturn vec2(cos(angle), sin(angle));\n\t}\n\tuniform vec2 uAngleIncCosSin;\n\thighp mat2 tapAngleStep() {\n\t\thighp vec2 t = uAngleIncCosSin;\n\t\treturn mat2(t.x, t.y, -t.y, t.x);\n\t}\n\tmediump vec3 tapLocationFast(mediump float i, mediump vec2 p, const mediump float noise) {\n\t\tmediump float radius = (i + noise + 0.5) * uSampleCount.y;\n\t\treturn vec3(p, radius * radius);\n\t}\n\tuniform float uMaxLevel;\n\tuniform float uInvRadiusSquared;\n\tuniform float uMinHorizonAngleSineSquared;\n\tuniform float uBias;\n\tuniform float uPeak2;\n\tvoid computeAmbientOcclusionSAO(inout mediump float occlusion, mediump float i, mediump float ssDiskRadius,\n\t\t\tconst highp vec2 uv, const highp vec3 origin, const mediump vec3 normal,\n\t\t\tconst mediump vec2 tapPosition, const float noise) {\n\t\tmediump vec3 tap = tapLocationFast(i, tapPosition, noise);\n\t\tmediump float ssRadius = max(1.0, tap.z * ssDiskRadius);\n\t\tmediump vec2 uvSamplePos = uv + vec2(ssRadius * tap.xy) * uInvResolution;\n\t\tmediump float level = clamp(floor(log2(ssRadius)) - kLog2LodRate, 0.0, float(uMaxLevel));\n\t\thighp float occlusionDepth = -getLinearScreenDepth(uvSamplePos);\n\t\thighp vec3 p = computeViewSpacePositionFromDepth(uvSamplePos, occlusionDepth);\n\t\tvec3 v = p - origin;\n\t\tfloat vv = dot(v, v);\n\t\tfloat vn = dot(v, normal);\n\t\tmediump float w = max(0.0, 1.0 - vv * uInvRadiusSquared);\n\t\tw = w * w;\n\t\tw *= step(vv * uMinHorizonAngleSineSquared, vn * vn);\n\t\tocclusion += w * max(0.0, vn + origin.z * uBias) / (vv + uPeak2);\n\t}\n\tuniform float uProjectionScaleRadius;\n\tuniform float uIntensity;\n\tuniform float uRandomize;\n\tfloat scalableAmbientObscurance(highp vec2 uv, highp vec3 origin, vec3 normal) {\n\t\tfloat noise = random(getFragCoord()) + uRandomize;\n\t\thighp vec2 tapPosition = startPosition(noise);\n\t\thighp mat2 angleStep = tapAngleStep();\n\t\tfloat ssDiskRadius = -(uProjectionScaleRadius / origin.z);\n\t\tfloat occlusion = 0.0;\n\t\tfor (float i = 0.0; i < uSampleCount.x; i += 1.0) {\n\t\t\tcomputeAmbientOcclusionSAO(occlusion, i, ssDiskRadius, uv, origin, normal, tapPosition, noise);\n\t\t\ttapPosition = angleStep * tapPosition;\n\t\t}\n\t\treturn occlusion;\n\t}\n\tuniform float uPower;\n\tvoid main() {\n\t\thighp vec2 uv = uv0;\n\t\thighp float depth = -getLinearScreenDepth(uv0);\n\t\thighp vec3 origin = computeViewSpacePositionFromDepth(uv, depth);\n\t\tvec3 normal = computeViewSpaceNormal(origin, uv);\n\t\tfloat occlusion = 0.0;\n\t\tif (uIntensity > 0.0) {\n\t\t\tocclusion = scalableAmbientObscurance(uv, origin, normal);\n\t\t}\n\t\tfloat ao = max(0.0, 1.0 - occlusion * uIntensity);\n\t\tao = pow(ao, uPower);\n\t\tgl_FragColor = vec4(ao, ao, ao, 1.0);\n\t}\n`;\n\nvar wgslSsaoPS = `\n\t#include \"screenDepthPS\"\n\tvarying uv0: vec2f;\n\tuniform uInvResolution: vec2f;\n\tuniform uAspect: f32;\n\tfn getWFromProjectionMatrix(p: mat4x4f, v: vec3f) -> f32 {\n\t\treturn -v.z;\n\t}\n\tfn getViewSpaceZFromW(p: mat4x4f, w: f32) -> f32 {\n\t\treturn -w;\n\t}\n\tconst kLog2LodRate: f32 = 3.0;\n\tfn random(w: vec2f) -> f32 {\n\t\tconst m: vec3f = vec3f(0.06711056, 0.00583715, 52.9829189);\n\t\treturn fract(m.z * fract(dot(w, m.xy)));\n\t}\n\tfn getFragCoord() -> vec2f {\n\t\treturn pcPosition.xy;\n\t}\n\tfn computeViewSpacePositionFromDepth(uv: vec2f, linearDepth: f32) -> vec3f {\n\t\treturn vec3f((0.5 - uv) * vec2f(uniform.uAspect, 1.0) * linearDepth, linearDepth);\n\t}\n\tfn faceNormal(dpdx: vec3f, dpdy: vec3f) -> vec3f {\n\t\treturn normalize(cross(dpdx, dpdy));\n\t}\n\tfn computeViewSpaceNormalDeriv(position: vec3f) -> vec3f {\n\t\treturn faceNormal(dpdx(position), dpdy(position));\n\t}\n\tfn computeViewSpaceNormalDepth(position: vec3f, uv: vec2f) -> vec3f {\n\t\tlet uvdx: vec2f = uv + vec2f(uniform.uInvResolution.x, 0.0);\n\t\tlet uvdy: vec2f = uv + vec2f(0.0, uniform.uInvResolution.y);\n\t\tlet px: vec3f = computeViewSpacePositionFromDepth(uvdx, -getLinearScreenDepth(uvdx));\n\t\tlet py: vec3f = computeViewSpacePositionFromDepth(uvdy, -getLinearScreenDepth(uvdy));\n\t\tlet dpdx: vec3f = px - position;\n\t\tlet dpdy: vec3f = py - position;\n\t\treturn faceNormal(dpdx, dpdy);\n\t}\n\tuniform uSampleCount: vec2f;\n\tuniform uSpiralTurns: f32;\n\tconst PI: f32 = 3.14159;\n\tfn tapLocation(i: f32, noise: f32) -> vec3f {\n\t\tlet offset: f32 = ((2.0 * PI) * 2.4) * noise;\n\t\tlet angle: f32 = ((i * uniform.uSampleCount.y) * uniform.uSpiralTurns) * (2.0 * PI) + offset;\n\t\tlet radius: f32 = (i + noise + 0.5) * uniform.uSampleCount.y;\n\t\treturn vec3f(cos(angle), sin(angle), radius * radius);\n\t}\n\tfn startPosition(noise: f32) -> vec2f {\n\t\tlet angle: f32 = ((2.0 * PI) * 2.4) * noise;\n\t\treturn vec2f(cos(angle), sin(angle));\n\t}\n\tuniform uAngleIncCosSin: vec2f;\n\tfn tapAngleStep() -> mat2x2f {\n\t\tlet t: vec2f = uniform.uAngleIncCosSin;\n\t\treturn mat2x2f(vec2f(t.x, t.y), vec2f(-t.y, t.x));\n\t}\n\tfn tapLocationFast(i: f32, p: vec2f, noise_in: f32) -> vec3f {\n\t\tlet radius: f32 = (i + noise_in + 0.5) * uniform.uSampleCount.y;\n\t\treturn vec3f(p.x, p.y, radius * radius);\n\t}\n\tuniform uMaxLevel: f32;\n\tuniform uInvRadiusSquared: f32;\n\tuniform uMinHorizonAngleSineSquared: f32;\n\tuniform uBias: f32;\n\tuniform uPeak2: f32;\n\tfn computeAmbientOcclusionSAO(occlusion_ptr: ptr<function, f32>, i: f32, ssDiskRadius: f32,\n\t\t\tuv: vec2f, origin: vec3f, normal: vec3f,\n\t\t\ttapPosition: vec2f, noise: f32) {\n\t\tlet tap: vec3f = tapLocationFast(i, tapPosition, noise);\n\t\tlet ssRadius: f32 = max(1.0, tap.z * ssDiskRadius);\n\t\tlet uvSamplePos: vec2f = uv + (ssRadius * tap.xy) * uniform.uInvResolution;\n\t\tlet level: f32 = clamp(floor(log2(ssRadius)) - kLog2LodRate, 0.0, uniform.uMaxLevel);\n\t\tlet occlusionDepth: f32 = -getLinearScreenDepth(uvSamplePos);\n\t\tlet p: vec3f = computeViewSpacePositionFromDepth(uvSamplePos, occlusionDepth);\n\t\tlet v: vec3f = p - origin;\n\t\tlet vv: f32 = dot(v, v);\n\t\tlet vn: f32 = dot(v, normal);\n\t\tvar w_val: f32 = max(0.0, 1.0 - vv * uniform.uInvRadiusSquared);\n\t\tw_val = w_val * w_val;\n\t\tw_val = w_val * step(vv * uniform.uMinHorizonAngleSineSquared, vn * vn);\n\t\t*occlusion_ptr = *occlusion_ptr + w_val * max(0.0, vn + origin.z * uniform.uBias) / (vv + uniform.uPeak2);\n\t}\n\tuniform uProjectionScaleRadius: f32;\n\tuniform uIntensity: f32;\n\tuniform uRandomize: f32;\n\tfn scalableAmbientObscurance(uv: vec2f, origin: vec3f, normal: vec3f) -> f32 {\n\t\tlet noise: f32 = random(getFragCoord()) + uniform.uRandomize;\n\t\tvar tapPosition: vec2f = startPosition(noise);\n\t\tlet angleStep: mat2x2f = tapAngleStep();\n\t\tlet ssDiskRadius: f32 = -(uniform.uProjectionScaleRadius / origin.z);\n\t\tvar occlusion: f32 = 0.0;\n\t\tfor (var i: i32 = 0; i < i32(uniform.uSampleCount.x); i = i + 1) {\n\t\t\tcomputeAmbientOcclusionSAO(&occlusion, f32(i), ssDiskRadius, uv, origin, normal, tapPosition, noise);\n\t\t\ttapPosition = angleStep * tapPosition;\n\t\t}\n\t\treturn occlusion;\n\t}\n\tuniform uPower: f32;\n\t@fragment\n\tfn fragmentMain(input: FragmentInput) -> FragmentOutput {\n\t\tvar output: FragmentOutput;\n\t\tlet uv: vec2f = input.uv0;\n\t\tlet depth: f32 = -getLinearScreenDepth(input.uv0);\n\t\tlet origin: vec3f = computeViewSpacePositionFromDepth(uv, depth);\n\t\tlet normal: vec3f = computeViewSpaceNormalDepth(origin, uv);\n\t\tvar occlusion: f32 = 0.0;\n\t\tif (uniform.uIntensity > 0.0) {\n\t\t\tocclusion = scalableAmbientObscurance(uv, origin, normal);\n\t\t}\n\t\tvar ao: f32 = max(0.0, 1.0 - occlusion * uniform.uIntensity);\n\t\tao = pow(ao, uniform.uPower);\n\t\toutput.color = vec4f(ao, ao, ao, 1.0);\n\t\treturn output;\n\t}\n`;\n\nclass RenderPassSsao extends RenderPassShaderQuad {\n\t\tconstructor(device, sourceTexture, cameraComponent, blurEnabled){\n\t\t\t\tsuper(device), this.radius = 5, this.intensity = 1, this.power = 1, this.sampleCount = 10, this.minAngle = 5, this.randomize = false, this._scale = 1, this._blueNoise = new BlueNoise(19);\n\t\t\t\tthis.sourceTexture = sourceTexture;\n\t\t\t\tthis.cameraComponent = cameraComponent;\n\t\t\t\tShaderChunks.get(device, SHADERLANGUAGE_GLSL).set('ssaoPS', glslSsaoPS);\n\t\t\t\tShaderChunks.get(device, SHADERLANGUAGE_WGSL).set('ssaoPS', wgslSsaoPS);\n\t\t\t\tconst defines = new Map();\n\t\t\t\tShaderUtils.addScreenDepthChunkDefines(device, cameraComponent.shaderParams, defines);\n\t\t\t\tthis.shader = ShaderUtils.createShader(device, {\n\t\t\t\t\t\tuniqueName: 'SsaoShader',\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\taPosition: SEMANTIC_POSITION\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvertexChunk: 'quadVS',\n\t\t\t\t\t\tfragmentChunk: 'ssaoPS',\n\t\t\t\t\t\tfragmentDefines: defines\n\t\t\t\t});\n\t\t\t\tconst rt = this.createRenderTarget('SsaoFinalTexture');\n\t\t\t\tthis.ssaoTexture = rt.colorBuffer;\n\t\t\t\tthis.init(rt, {\n\t\t\t\t\t\tresizeSource: this.sourceTexture\n\t\t\t\t});\n\t\t\t\tconst clearColor = new Color(0, 0, 0, 0);\n\t\t\t\tthis.setClearColor(clearColor);\n\t\t\t\tif (blurEnabled) {\n\t\t\t\t\t\tconst blurRT = this.createRenderTarget('SsaoTempTexture');\n\t\t\t\t\t\tconst blurPassHorizontal = new RenderPassDepthAwareBlur(device, rt.colorBuffer, cameraComponent, true);\n\t\t\t\t\t\tblurPassHorizontal.init(blurRT, {\n\t\t\t\t\t\t\t\tresizeSource: rt.colorBuffer\n\t\t\t\t\t\t});\n\t\t\t\t\t\tblurPassHorizontal.setClearColor(clearColor);\n\t\t\t\t\t\tconst blurPassVertical = new RenderPassDepthAwareBlur(device, blurRT.colorBuffer, cameraComponent, false);\n\t\t\t\t\t\tblurPassVertical.init(rt, {\n\t\t\t\t\t\t\t\tresizeSource: rt.colorBuffer\n\t\t\t\t\t\t});\n\t\t\t\t\t\tblurPassVertical.setClearColor(clearColor);\n\t\t\t\t\t\tthis.afterPasses.push(blurPassHorizontal);\n\t\t\t\t\t\tthis.afterPasses.push(blurPassVertical);\n\t\t\t\t}\n\t\t\t\tthis.ssaoTextureId = device.scope.resolve('ssaoTexture');\n\t\t\t\tthis.ssaoTextureSizeInvId = device.scope.resolve('ssaoTextureSizeInv');\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.renderTarget?.destroyTextureBuffers();\n\t\t\t\tthis.renderTarget?.destroy();\n\t\t\t\tthis.renderTarget = null;\n\t\t\t\tif (this.afterPasses.length > 0) {\n\t\t\t\t\t\tconst blurRt = this.afterPasses[0].renderTarget;\n\t\t\t\t\t\tblurRt?.destroyTextureBuffers();\n\t\t\t\t\t\tblurRt?.destroy();\n\t\t\t\t}\n\t\t\t\tthis.afterPasses.forEach((pass)=>pass.destroy());\n\t\t\t\tthis.afterPasses.length = 0;\n\t\t\t\tsuper.destroy();\n\t\t}\n\t\tset scale(value) {\n\t\t\t\tthis._scale = value;\n\t\t\t\tthis.scaleX = value;\n\t\t\t\tthis.scaleY = value;\n\t\t}\n\t\tget scale() {\n\t\t\t\treturn this._scale;\n\t\t}\n\t\tcreateRenderTarget(name) {\n\t\t\t\treturn new RenderTarget({\n\t\t\t\t\t\tdepth: false,\n\t\t\t\t\t\tcolorBuffer: new Texture(this.device, {\n\t\t\t\t\t\t\t\tname: name,\n\t\t\t\t\t\t\t\twidth: 1,\n\t\t\t\t\t\t\t\theight: 1,\n\t\t\t\t\t\t\t\tformat: PIXELFORMAT_R8,\n\t\t\t\t\t\t\t\tmipmaps: false,\n\t\t\t\t\t\t\t\tminFilter: FILTER_NEAREST,\n\t\t\t\t\t\t\t\tmagFilter: FILTER_NEAREST,\n\t\t\t\t\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE\n\t\t\t\t\t\t})\n\t\t\t\t});\n\t\t}\n\t\texecute() {\n\t\t\t\tconst { device, sourceTexture, sampleCount, minAngle, scale } = this;\n\t\t\t\tconst { width, height } = this.renderTarget.colorBuffer;\n\t\t\t\tconst scope = device.scope;\n\t\t\t\tscope.resolve('uAspect').setValue(width / height);\n\t\t\t\tscope.resolve('uInvResolution').setValue([\n\t\t\t\t\t\t1.0 / width,\n\t\t\t\t\t\t1.0 / height\n\t\t\t\t]);\n\t\t\t\tscope.resolve('uSampleCount').setValue([\n\t\t\t\t\t\tsampleCount,\n\t\t\t\t\t\t1.0 / sampleCount\n\t\t\t\t]);\n\t\t\t\tconst minAngleSin = Math.sin(minAngle * math.DEG_TO_RAD);\n\t\t\t\tscope.resolve('uMinHorizonAngleSineSquared').setValue(minAngleSin * minAngleSin);\n\t\t\t\tconst spiralTurns = 10.0;\n\t\t\t\tconst step = 1.0 / (sampleCount - 0.5) * spiralTurns * 2.0 * 3.141;\n\t\t\t\tconst radius = this.radius / scale;\n\t\t\t\tconst bias = 0.001;\n\t\t\t\tconst peak = 0.1 * radius;\n\t\t\t\tconst intensity = 2 * (peak * 2.0 * 3.141) * this.intensity / sampleCount;\n\t\t\t\tconst projectionScale = 0.5 * sourceTexture.height;\n\t\t\t\tscope.resolve('uSpiralTurns').setValue(spiralTurns);\n\t\t\t\tscope.resolve('uAngleIncCosSin').setValue([\n\t\t\t\t\t\tMath.cos(step),\n\t\t\t\t\t\tMath.sin(step)\n\t\t\t\t]);\n\t\t\t\tscope.resolve('uMaxLevel').setValue(0.0);\n\t\t\t\tscope.resolve('uInvRadiusSquared').setValue(1.0 / (radius * radius));\n\t\t\t\tscope.resolve('uBias').setValue(bias);\n\t\t\t\tscope.resolve('uPeak2').setValue(peak * peak);\n\t\t\t\tscope.resolve('uIntensity').setValue(intensity);\n\t\t\t\tscope.resolve('uPower').setValue(this.power);\n\t\t\t\tscope.resolve('uProjectionScaleRadius').setValue(projectionScale * radius);\n\t\t\t\tscope.resolve('uRandomize').setValue(this.randomize ? this._blueNoise.value() : 0);\n\t\t\t\tsuper.execute();\n\t\t}\n\t\tafter() {\n\t\t\t\tthis.ssaoTextureId.setValue(this.ssaoTexture);\n\t\t\t\tconst srcTexture = this.sourceTexture;\n\t\t\t\tthis.ssaoTextureSizeInvId.setValue([\n\t\t\t\t\t\t1.0 / srcTexture.width,\n\t\t\t\t\t\t1.0 / srcTexture.height\n\t\t\t\t]);\n\t\t}\n}\n\nclass CameraFrameOptions {\n\t\tconstructor(){\n\t\t\t\tthis.stencil = false;\n\t\t\t\tthis.samples = 1;\n\t\t\t\tthis.sceneColorMap = false;\n\t\t\t\tthis.lastGrabLayerId = LAYERID_SKYBOX;\n\t\t\t\tthis.lastGrabLayerIsTransparent = false;\n\t\t\t\tthis.lastSceneLayerId = LAYERID_IMMEDIATE;\n\t\t\t\tthis.lastSceneLayerIsTransparent = true;\n\t\t\t\tthis.taaEnabled = false;\n\t\t\t\tthis.bloomEnabled = false;\n\t\t\t\tthis.ssaoType = SSAOTYPE_NONE;\n\t\t\t\tthis.ssaoBlurEnabled = true;\n\t\t\t\tthis.prepassEnabled = false;\n\t\t\t\tthis.dofEnabled = false;\n\t\t\t\tthis.dofNearBlur = false;\n\t\t\t\tthis.dofHighQuality = true;\n\t\t}\n}\nconst _defaultOptions = new CameraFrameOptions();\nclass RenderPassCameraFrame extends RenderPass {\n\t\tconstructor(app, cameraFrame, cameraComponent, options = {}){\n\t\t\t\tsuper(app.graphicsDevice), this._renderTargetScale = 1, this.layersDirty = false, this.rt = null;\n\t\t\t\tthis.app = app;\n\t\t\t\tthis.cameraComponent = cameraComponent;\n\t\t\t\tthis.cameraFrame = cameraFrame;\n\t\t\t\tthis.options = this.sanitizeOptions(options);\n\t\t\t\tthis.setupRenderPasses(this.options);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.reset();\n\t\t}\n\t\treset() {\n\t\t\t\tthis.sceneTexture = null;\n\t\t\t\tthis.sceneTextureHalf = null;\n\t\t\t\tif (this.rt) {\n\t\t\t\t\t\tthis.rt.destroyTextureBuffers();\n\t\t\t\t\t\tthis.rt.destroy();\n\t\t\t\t\t\tthis.rt = null;\n\t\t\t\t}\n\t\t\t\tif (this.rtHalf) {\n\t\t\t\t\t\tthis.rtHalf.destroyTextureBuffers();\n\t\t\t\t\t\tthis.rtHalf.destroy();\n\t\t\t\t\t\tthis.rtHalf = null;\n\t\t\t\t}\n\t\t\t\tthis.beforePasses.forEach((pass)=>pass.destroy());\n\t\t\t\tthis.beforePasses.length = 0;\n\t\t\t\tthis.prePass = null;\n\t\t\t\tthis.scenePass = null;\n\t\t\t\tthis.scenePassTransparent = null;\n\t\t\t\tthis.colorGrabPass = null;\n\t\t\t\tthis.composePass = null;\n\t\t\t\tthis.bloomPass = null;\n\t\t\t\tthis.ssaoPass = null;\n\t\t\t\tthis.taaPass = null;\n\t\t\t\tthis.afterPass = null;\n\t\t\t\tthis.scenePassHalf = null;\n\t\t\t\tthis.dofPass = null;\n\t\t}\n\t\tsanitizeOptions(options) {\n\t\t\t\toptions = Object.assign({}, _defaultOptions, options);\n\t\t\t\tif (options.taaEnabled || options.ssaoType !== SSAOTYPE_NONE || options.dofEnabled) {\n\t\t\t\t\t\toptions.prepassEnabled = true;\n\t\t\t\t}\n\t\t\t\treturn options;\n\t\t}\n\t\tset renderTargetScale(value) {\n\t\t\t\tthis._renderTargetScale = value;\n\t\t\t\tif (this.scenePass) {\n\t\t\t\t\t\tthis.scenePass.scaleX = value;\n\t\t\t\t\t\tthis.scenePass.scaleY = value;\n\t\t\t\t}\n\t\t}\n\t\tget renderTargetScale() {\n\t\t\t\treturn this._renderTargetScale;\n\t\t}\n\t\tneedsReset(options) {\n\t\t\t\tconst currentOptions = this.options;\n\t\t\t\tconst arraysNotEqual = (arr1, arr2)=>arr1 !== arr2 && (!(Array.isArray(arr1) && Array.isArray(arr2)) || arr1.length !== arr2.length || !arr1.every((value, index)=>value === arr2[index]));\n\t\t\t\treturn options.ssaoType !== currentOptions.ssaoType || options.ssaoBlurEnabled !== currentOptions.ssaoBlurEnabled || options.taaEnabled !== currentOptions.taaEnabled || options.samples !== currentOptions.samples || options.stencil !== currentOptions.stencil || options.bloomEnabled !== currentOptions.bloomEnabled || options.prepassEnabled !== currentOptions.prepassEnabled || options.sceneColorMap !== currentOptions.sceneColorMap || options.dofEnabled !== currentOptions.dofEnabled || options.dofNearBlur !== currentOptions.dofNearBlur || options.dofHighQuality !== currentOptions.dofHighQuality || arraysNotEqual(options.formats, currentOptions.formats);\n\t\t}\n\t\tupdate(options) {\n\t\t\t\toptions = this.sanitizeOptions(options);\n\t\t\t\tif (this.needsReset(options) || this.layersDirty) {\n\t\t\t\t\t\tthis.layersDirty = false;\n\t\t\t\t\t\tthis.reset();\n\t\t\t\t}\n\t\t\t\tthis.options = options;\n\t\t\t\tif (!this.sceneTexture) {\n\t\t\t\t\t\tthis.setupRenderPasses(this.options);\n\t\t\t\t}\n\t\t}\n\t\tcreateRenderTarget(name, depth, stencil, samples, flipY) {\n\t\t\t\tconst texture = new Texture(this.device, {\n\t\t\t\t\t\tname: name,\n\t\t\t\t\t\twidth: 4,\n\t\t\t\t\t\theight: 4,\n\t\t\t\t\t\tformat: this.hdrFormat,\n\t\t\t\t\t\tmipmaps: false,\n\t\t\t\t\t\tminFilter: FILTER_LINEAR,\n\t\t\t\t\t\tmagFilter: FILTER_LINEAR,\n\t\t\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE\n\t\t\t\t});\n\t\t\t\treturn new RenderTarget({\n\t\t\t\t\t\tcolorBuffer: texture,\n\t\t\t\t\t\tdepth: depth,\n\t\t\t\t\t\tstencil: stencil,\n\t\t\t\t\t\tsamples: samples,\n\t\t\t\t\t\tflipY: flipY\n\t\t\t\t});\n\t\t}\n\t\tsetupRenderPasses(options) {\n\t\t\t\tconst { device } = this;\n\t\t\t\tconst cameraComponent = this.cameraComponent;\n\t\t\t\tconst targetRenderTarget = cameraComponent.renderTarget;\n\t\t\t\tthis.hdrFormat = device.getRenderableHdrFormat(options.formats, true, options.samples) || PIXELFORMAT_RGBA8;\n\t\t\t\tthis._bloomEnabled = options.bloomEnabled && this.hdrFormat !== PIXELFORMAT_RGBA8;\n\t\t\t\tthis._sceneHalfEnabled = this._bloomEnabled || options.dofEnabled;\n\t\t\t\tcameraComponent.shaderParams.ssaoEnabled = options.ssaoType === SSAOTYPE_LIGHTING;\n\t\t\t\tconst flipY = !!targetRenderTarget?.flipY;\n\t\t\t\tthis.rt = this.createRenderTarget('SceneColor', true, options.stencil, options.samples, flipY);\n\t\t\t\tthis.sceneTexture = this.rt.colorBuffer;\n\t\t\t\tif (this._sceneHalfEnabled) {\n\t\t\t\t\t\tthis.rtHalf = this.createRenderTarget('SceneColorHalf', false, false, 1, flipY);\n\t\t\t\t\t\tthis.sceneTextureHalf = this.rtHalf.colorBuffer;\n\t\t\t\t}\n\t\t\t\tthis.sceneOptions = {\n\t\t\t\t\t\tresizeSource: targetRenderTarget,\n\t\t\t\t\t\tscaleX: this.renderTargetScale,\n\t\t\t\t\t\tscaleY: this.renderTargetScale\n\t\t\t\t};\n\t\t\t\tthis.createPasses(options);\n\t\t\t\tconst allPasses = this.collectPasses();\n\t\t\t\tthis.beforePasses = allPasses.filter((element)=>element !== undefined && element !== null);\n\t\t}\n\t\tcollectPasses() {\n\t\t\t\treturn [\n\t\t\t\t\t\tthis.prePass,\n\t\t\t\t\t\tthis.ssaoPass,\n\t\t\t\t\t\tthis.scenePass,\n\t\t\t\t\t\tthis.colorGrabPass,\n\t\t\t\t\t\tthis.scenePassTransparent,\n\t\t\t\t\t\tthis.taaPass,\n\t\t\t\t\t\tthis.scenePassHalf,\n\t\t\t\t\t\tthis.bloomPass,\n\t\t\t\t\t\tthis.dofPass,\n\t\t\t\t\t\tthis.composePass,\n\t\t\t\t\t\tthis.afterPass\n\t\t\t\t];\n\t\t}\n\t\tcreatePasses(options) {\n\t\t\t\tthis.setupScenePrepass(options);\n\t\t\t\tthis.setupSsaoPass(options);\n\t\t\t\tconst scenePassesInfo = this.setupScenePass(options);\n\t\t\t\tconst sceneTextureWithTaa = this.setupTaaPass(options);\n\t\t\t\tthis.setupSceneHalfPass(options, sceneTextureWithTaa);\n\t\t\t\tthis.setupBloomPass(options, this.sceneTextureHalf);\n\t\t\t\tthis.setupDofPass(options, this.sceneTexture, this.sceneTextureHalf);\n\t\t\t\tthis.setupComposePass(options);\n\t\t\t\tthis.setupAfterPass(options, scenePassesInfo);\n\t\t}\n\t\tsetupScenePrepass(options) {\n\t\t\t\tif (options.prepassEnabled) {\n\t\t\t\t\t\tconst { app, device, cameraComponent } = this;\n\t\t\t\t\t\tconst { scene, renderer } = app;\n\t\t\t\t\t\tthis.prePass = new RenderPassPrepass(device, scene, renderer, cameraComponent, this.sceneOptions);\n\t\t\t\t}\n\t\t}\n\t\tsetupScenePassSettings(pass) {\n\t\t\t\tpass.gammaCorrection = GAMMA_NONE;\n\t\t\t\tpass.toneMapping = TONEMAP_NONE;\n\t\t}\n\t\tsetupScenePass(options) {\n\t\t\t\tconst { app, device, cameraComponent } = this;\n\t\t\t\tconst { scene, renderer } = app;\n\t\t\t\tconst composition = scene.layers;\n\t\t\t\tthis.scenePass = new RenderPassForward(device, composition, scene, renderer);\n\t\t\t\tthis.setupScenePassSettings(this.scenePass);\n\t\t\t\tthis.scenePass.init(this.rt, this.sceneOptions);\n\t\t\t\tconst lastLayerId = options.sceneColorMap ? options.lastGrabLayerId : options.lastSceneLayerId;\n\t\t\t\tconst lastLayerIsTransparent = options.sceneColorMap ? options.lastGrabLayerIsTransparent : options.lastSceneLayerIsTransparent;\n\t\t\t\tconst ret = {\n\t\t\t\t\t\tlastAddedIndex: 0,\n\t\t\t\t\t\tclearRenderTarget: true\n\t\t\t\t};\n\t\t\t\tret.lastAddedIndex = this.scenePass.addLayers(composition, cameraComponent, ret.lastAddedIndex, ret.clearRenderTarget, lastLayerId, lastLayerIsTransparent);\n\t\t\t\tret.clearRenderTarget = false;\n\t\t\t\tif (options.sceneColorMap) {\n\t\t\t\t\t\tthis.colorGrabPass = new RenderPassColorGrab(device);\n\t\t\t\t\t\tthis.colorGrabPass.source = this.rt;\n\t\t\t\t\t\tthis.scenePassTransparent = new RenderPassForward(device, composition, scene, renderer);\n\t\t\t\t\t\tthis.setupScenePassSettings(this.scenePassTransparent);\n\t\t\t\t\t\tthis.scenePassTransparent.init(this.rt);\n\t\t\t\t\t\tret.lastAddedIndex = this.scenePassTransparent.addLayers(composition, cameraComponent, ret.lastAddedIndex, ret.clearRenderTarget, options.lastSceneLayerId, options.lastSceneLayerIsTransparent);\n\t\t\t\t\t\tif (!this.scenePassTransparent.rendersAnything) {\n\t\t\t\t\t\t\t\tthis.scenePassTransparent.destroy();\n\t\t\t\t\t\t\t\tthis.scenePassTransparent = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.scenePassTransparent) {\n\t\t\t\t\t\t\t\tif (options.prepassEnabled) {\n\t\t\t\t\t\t\t\t\t\tthis.scenePassTransparent.depthStencilOps.storeDepth = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn ret;\n\t\t}\n\t\tsetupSsaoPass(options) {\n\t\t\t\tconst { ssaoBlurEnabled, ssaoType } = options;\n\t\t\t\tconst { device, cameraComponent } = this;\n\t\t\t\tif (ssaoType !== SSAOTYPE_NONE) {\n\t\t\t\t\t\tthis.ssaoPass = new RenderPassSsao(device, this.sceneTexture, cameraComponent, ssaoBlurEnabled);\n\t\t\t\t}\n\t\t}\n\t\tsetupSceneHalfPass(options, sourceTexture) {\n\t\t\t\tif (this._sceneHalfEnabled) {\n\t\t\t\t\t\tthis.scenePassHalf = new RenderPassDownsample(this.device, this.sceneTexture, {\n\t\t\t\t\t\t\t\tboxFilter: true,\n\t\t\t\t\t\t\t\tremoveInvalid: true\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis.scenePassHalf.name = 'RenderPassSceneHalf';\n\t\t\t\t\t\tthis.scenePassHalf.init(this.rtHalf, {\n\t\t\t\t\t\t\t\tresizeSource: sourceTexture,\n\t\t\t\t\t\t\t\tscaleX: 0.5,\n\t\t\t\t\t\t\t\tscaleY: 0.5\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis.scenePassHalf.setClearColor(Color.BLACK);\n\t\t\t\t}\n\t\t}\n\t\tsetupBloomPass(options, inputTexture) {\n\t\t\t\tif (this._bloomEnabled) {\n\t\t\t\t\t\tthis.bloomPass = new RenderPassBloom(this.device, inputTexture, this.hdrFormat);\n\t\t\t\t}\n\t\t}\n\t\tsetupDofPass(options, inputTexture, inputTextureHalf) {\n\t\t\t\tif (options.dofEnabled) {\n\t\t\t\t\t\tthis.dofPass = new RenderPassDof(this.device, this.cameraComponent, inputTexture, inputTextureHalf, options.dofHighQuality, options.dofNearBlur);\n\t\t\t\t}\n\t\t}\n\t\tsetupTaaPass(options) {\n\t\t\t\tlet textureWithTaa = this.sceneTexture;\n\t\t\t\tif (options.taaEnabled) {\n\t\t\t\t\t\tthis.taaPass = new RenderPassTAA(this.device, this.sceneTexture, this.cameraComponent);\n\t\t\t\t\t\ttextureWithTaa = this.taaPass.historyTexture;\n\t\t\t\t}\n\t\t\t\treturn textureWithTaa;\n\t\t}\n\t\tsetupComposePass(options) {\n\t\t\t\tthis.composePass = new RenderPassCompose(this.device);\n\t\t\t\tthis.composePass.bloomTexture = this.bloomPass?.bloomTexture;\n\t\t\t\tthis.composePass.taaEnabled = options.taaEnabled;\n\t\t\t\tthis.composePass.cocTexture = this.dofPass?.cocTexture;\n\t\t\t\tthis.composePass.blurTexture = this.dofPass?.blurTexture;\n\t\t\t\tthis.composePass.blurTextureUpscale = !this.dofPass?.highQuality;\n\t\t\t\tconst cameraComponent = this.cameraComponent;\n\t\t\t\tconst targetRenderTarget = cameraComponent.renderTarget;\n\t\t\t\tthis.composePass.init(targetRenderTarget);\n\t\t\t\tthis.composePass.ssaoTexture = options.ssaoType === SSAOTYPE_COMBINE ? this.ssaoPass.ssaoTexture : null;\n\t\t}\n\t\tsetupAfterPass(options, scenePassesInfo) {\n\t\t\t\tconst { app, cameraComponent } = this;\n\t\t\t\tconst { scene, renderer } = app;\n\t\t\t\tconst composition = scene.layers;\n\t\t\t\tconst targetRenderTarget = cameraComponent.renderTarget;\n\t\t\t\tthis.afterPass = new RenderPassForward(this.device, composition, scene, renderer);\n\t\t\t\tthis.afterPass.init(targetRenderTarget);\n\t\t\t\tthis.afterPass.addLayers(composition, cameraComponent, scenePassesInfo.lastAddedIndex, scenePassesInfo.clearRenderTarget);\n\t\t}\n\t\tframeUpdate() {\n\t\t\t\tif (this.layersDirty) {\n\t\t\t\t\t\tthis.cameraFrame.update();\n\t\t\t\t}\n\t\t\t\tsuper.frameUpdate();\n\t\t\t\tconst sceneTexture = this.taaPass?.update() ?? this.rt.colorBuffer;\n\t\t\t\tthis.composePass.sceneTexture = sceneTexture;\n\t\t\t\tthis.scenePassHalf?.setSourceTexture(sceneTexture);\n\t\t}\n}\n\nclass CameraFrame {\n\t\tconstructor(app, cameraComponent){\n\t\t\t\tthis._enabled = true;\n\t\t\t\tthis.rendering = {\n\t\t\t\t\t\trenderFormats: [\n\t\t\t\t\t\t\t\tPIXELFORMAT_111110F,\n\t\t\t\t\t\t\t\tPIXELFORMAT_RGBA16F,\n\t\t\t\t\t\t\t\tPIXELFORMAT_RGBA32F\n\t\t\t\t\t\t],\n\t\t\t\t\t\tstencil: false,\n\t\t\t\t\t\trenderTargetScale: 1.0,\n\t\t\t\t\t\tsamples: 1,\n\t\t\t\t\t\tsceneColorMap: false,\n\t\t\t\t\t\tsceneDepthMap: false,\n\t\t\t\t\t\ttoneMapping: 0,\n\t\t\t\t\t\tsharpness: 0.0\n\t\t\t\t};\n\t\t\t\tthis.ssao = {\n\t\t\t\t\t\ttype: SSAOTYPE_NONE,\n\t\t\t\t\t\tblurEnabled: true,\n\t\t\t\t\t\trandomize: false,\n\t\t\t\t\t\tintensity: 0.5,\n\t\t\t\t\t\tradius: 30,\n\t\t\t\t\t\tsamples: 12,\n\t\t\t\t\t\tpower: 6,\n\t\t\t\t\t\tminAngle: 10,\n\t\t\t\t\t\tscale: 1\n\t\t\t\t};\n\t\t\t\tthis.bloom = {\n\t\t\t\t\t\tintensity: 0,\n\t\t\t\t\t\tblurLevel: 16\n\t\t\t\t};\n\t\t\t\tthis.grading = {\n\t\t\t\t\t\tenabled: false,\n\t\t\t\t\t\tbrightness: 1,\n\t\t\t\t\t\tcontrast: 1,\n\t\t\t\t\t\tsaturation: 1,\n\t\t\t\t\t\ttint: new Color(1, 1, 1, 1)\n\t\t\t\t};\n\t\t\t\tthis.colorLUT = {\n\t\t\t\t\t\ttexture: null,\n\t\t\t\t\t\tintensity: 1\n\t\t\t\t};\n\t\t\t\tthis.vignette = {\n\t\t\t\t\t\tintensity: 0,\n\t\t\t\t\t\tinner: 0.5,\n\t\t\t\t\t\touter: 1,\n\t\t\t\t\t\tcurvature: 0.5\n\t\t\t\t};\n\t\t\t\tthis.taa = {\n\t\t\t\t\t\tenabled: false,\n\t\t\t\t\t\tjitter: 1\n\t\t\t\t};\n\t\t\t\tthis.fringing = {\n\t\t\t\t\t\tintensity: 0\n\t\t\t\t};\n\t\t\t\tthis.dof = {\n\t\t\t\t\t\tenabled: false,\n\t\t\t\t\t\tnearBlur: false,\n\t\t\t\t\t\tfocusDistance: 100,\n\t\t\t\t\t\tfocusRange: 10,\n\t\t\t\t\t\tblurRadius: 3,\n\t\t\t\t\t\tblurRings: 4,\n\t\t\t\t\t\tblurRingPoints: 5,\n\t\t\t\t\t\thighQuality: true\n\t\t\t\t};\n\t\t\t\tthis.debug = null;\n\t\t\t\tthis.options = new CameraFrameOptions();\n\t\t\t\tthis.renderPassCamera = null;\n\t\t\t\tthis.app = app;\n\t\t\t\tthis.cameraComponent = cameraComponent;\n\t\t\t\tthis.updateOptions();\n\t\t\t\tthis.enable();\n\t\t\t\tthis.cameraLayersChanged = cameraComponent.on('set:layers', ()=>{\n\t\t\t\t\t\tif (this.renderPassCamera) this.renderPassCamera.layersDirty = true;\n\t\t\t\t});\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.disable();\n\t\t\t\tthis.cameraLayersChanged.off();\n\t\t}\n\t\tenable() {\n\t\t\t\tthis.renderPassCamera = this.createRenderPass();\n\t\t\t\tthis.cameraComponent.renderPasses = [\n\t\t\t\t\t\tthis.renderPassCamera\n\t\t\t\t];\n\t\t}\n\t\tdisable() {\n\t\t\t\tconst cameraComponent = this.cameraComponent;\n\t\t\t\tcameraComponent.renderPasses?.forEach((renderPass)=>{\n\t\t\t\t\t\trenderPass.destroy();\n\t\t\t\t});\n\t\t\t\tcameraComponent.renderPasses = [];\n\t\t\t\tcameraComponent.rendering = null;\n\t\t\t\tcameraComponent.jitter = 0;\n\t\t\t\tcameraComponent.shaderParams.ssaoEnabled = false;\n\t\t\t\tthis.renderPassCamera = null;\n\t\t}\n\t\tcreateRenderPass() {\n\t\t\t\treturn new RenderPassCameraFrame(this.app, this, this.cameraComponent, this.options);\n\t\t}\n\t\tset enabled(value) {\n\t\t\t\tif (this._enabled !== value) {\n\t\t\t\t\t\tif (value) {\n\t\t\t\t\t\t\t\tthis.enable();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.disable();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._enabled = value;\n\t\t\t\t}\n\t\t}\n\t\tget enabled() {\n\t\t\t\treturn this._enabled;\n\t\t}\n\t\tupdateOptions() {\n\t\t\t\tconst { options, rendering, bloom, taa, ssao } = this;\n\t\t\t\toptions.stencil = rendering.stencil;\n\t\t\t\toptions.samples = rendering.samples;\n\t\t\t\toptions.sceneColorMap = rendering.sceneColorMap;\n\t\t\t\toptions.prepassEnabled = rendering.sceneDepthMap;\n\t\t\t\toptions.bloomEnabled = bloom.intensity > 0;\n\t\t\t\toptions.taaEnabled = taa.enabled;\n\t\t\t\toptions.ssaoType = ssao.type;\n\t\t\t\toptions.ssaoBlurEnabled = ssao.blurEnabled;\n\t\t\t\toptions.formats = rendering.renderFormats.slice();\n\t\t\t\toptions.dofEnabled = this.dof.enabled;\n\t\t\t\toptions.dofNearBlur = this.dof.nearBlur;\n\t\t\t\toptions.dofHighQuality = this.dof.highQuality;\n\t\t}\n\t\tupdate() {\n\t\t\t\tif (!this._enabled) return;\n\t\t\t\tconst cameraComponent = this.cameraComponent;\n\t\t\t\tconst { options, renderPassCamera, rendering, bloom, grading, vignette, fringing, taa, ssao } = this;\n\t\t\t\tthis.updateOptions();\n\t\t\t\trenderPassCamera.update(options);\n\t\t\t\tconst { composePass, bloomPass, ssaoPass, dofPass } = renderPassCamera;\n\t\t\t\trenderPassCamera.renderTargetScale = math.clamp(rendering.renderTargetScale, 0.1, 1);\n\t\t\t\tcomposePass.toneMapping = rendering.toneMapping;\n\t\t\t\tcomposePass.sharpness = rendering.sharpness;\n\t\t\t\tif (options.bloomEnabled && bloomPass) {\n\t\t\t\t\t\tcomposePass.bloomIntensity = bloom.intensity;\n\t\t\t\t\t\tbloomPass.blurLevel = bloom.blurLevel;\n\t\t\t\t}\n\t\t\t\tif (options.dofEnabled) {\n\t\t\t\t\t\tdofPass.focusDistance = this.dof.focusDistance;\n\t\t\t\t\t\tdofPass.focusRange = this.dof.focusRange;\n\t\t\t\t\t\tdofPass.blurRadius = this.dof.blurRadius;\n\t\t\t\t\t\tdofPass.blurRings = this.dof.blurRings;\n\t\t\t\t\t\tdofPass.blurRingPoints = this.dof.blurRingPoints;\n\t\t\t\t}\n\t\t\t\tif (options.ssaoType !== SSAOTYPE_NONE) {\n\t\t\t\t\t\tssaoPass.intensity = ssao.intensity;\n\t\t\t\t\t\tssaoPass.power = ssao.power;\n\t\t\t\t\t\tssaoPass.radius = ssao.radius;\n\t\t\t\t\t\tssaoPass.sampleCount = ssao.samples;\n\t\t\t\t\t\tssaoPass.minAngle = ssao.minAngle;\n\t\t\t\t\t\tssaoPass.scale = ssao.scale;\n\t\t\t\t\t\tssaoPass.randomize = ssao.randomize;\n\t\t\t\t}\n\t\t\t\tcomposePass.gradingEnabled = grading.enabled;\n\t\t\t\tif (grading.enabled) {\n\t\t\t\t\t\tcomposePass.gradingSaturation = grading.saturation;\n\t\t\t\t\t\tcomposePass.gradingBrightness = grading.brightness;\n\t\t\t\t\t\tcomposePass.gradingContrast = grading.contrast;\n\t\t\t\t\t\tcomposePass.gradingTint = grading.tint;\n\t\t\t\t}\n\t\t\t\tcomposePass.colorLUT = this.colorLUT.texture;\n\t\t\t\tcomposePass.colorLUTIntensity = this.colorLUT.intensity;\n\t\t\t\tcomposePass.vignetteEnabled = vignette.intensity > 0;\n\t\t\t\tif (composePass.vignetteEnabled) {\n\t\t\t\t\t\tcomposePass.vignetteInner = vignette.inner;\n\t\t\t\t\t\tcomposePass.vignetteOuter = vignette.outer;\n\t\t\t\t\t\tcomposePass.vignetteCurvature = vignette.curvature;\n\t\t\t\t\t\tcomposePass.vignetteIntensity = vignette.intensity;\n\t\t\t\t}\n\t\t\t\tcomposePass.fringingEnabled = fringing.intensity > 0;\n\t\t\t\tif (composePass.fringingEnabled) {\n\t\t\t\t\t\tcomposePass.fringingIntensity = fringing.intensity;\n\t\t\t\t}\n\t\t\t\tcameraComponent.jitter = taa.enabled ? taa.jitter : 0;\n\t\t\t\tcomposePass.debug = this.debug;\n\t\t\t\tif (composePass.debug === 'ssao' && options.ssaoType === SSAOTYPE_NONE) composePass.debug = null;\n\t\t\t\tif (composePass.debug === 'vignette' && !composePass.vignetteEnabled) composePass.debug = null;\n\t\t}\n}\n\nconst tmpV1$5 = new Vec3();\nconst rotation$4 = new Quat();\nclass Pose {\n\t\tconstructor(position = Vec3.ZERO, angles = Vec3.ZERO, distance = 0){\n\t\t\t\tthis.position = new Vec3();\n\t\t\t\tthis.angles = new Vec3();\n\t\t\t\tthis.distance = 0;\n\t\t\t\tthis.pitchRange = new Vec2(-Infinity, Infinity);\n\t\t\t\tthis.yawRange = new Vec2(-Infinity, Infinity);\n\t\t\t\tthis.xRange = new Vec2(-Infinity, Infinity);\n\t\t\t\tthis.yRange = new Vec2(-Infinity, Infinity);\n\t\t\t\tthis.zRange = new Vec2(-Infinity, Infinity);\n\t\t\t\tthis.set(position, angles, distance);\n\t\t}\n\t\tcopy(other) {\n\t\t\t\treturn this.set(other.position, other.angles, other.distance);\n\t\t}\n\t\tclone() {\n\t\t\t\treturn new Pose(this.position.clone(), this.angles.clone(), this.distance);\n\t\t}\n\t\tequalsApprox(other, epsilon = 1e-6) {\n\t\t\t\treturn this.position.equalsApprox(other.position, epsilon) && this.angles.equalsApprox(other.angles, epsilon) && Math.abs(this.distance - other.distance) < epsilon;\n\t\t}\n\t\tlerp(lhs, rhs, alpha1, alpha2 = alpha1, alpha3 = alpha1) {\n\t\t\t\tthis.position.lerp(lhs.position, rhs.position, alpha1);\n\t\t\t\tthis.angles.x = math.lerpAngle(lhs.angles.x, rhs.angles.x, alpha2) % 360;\n\t\t\t\tthis.angles.y = math.lerpAngle(lhs.angles.y, rhs.angles.y, alpha2) % 360;\n\t\t\t\tthis.angles.z = math.lerpAngle(lhs.angles.z, rhs.angles.z, alpha2) % 360;\n\t\t\t\tthis.distance = math.lerp(lhs.distance, rhs.distance, alpha3);\n\t\t\t\treturn this;\n\t\t}\n\t\tmove(offset) {\n\t\t\t\tthis.position.add(offset);\n\t\t\t\tthis.position.x = math.clamp(this.position.x, this.xRange.x, this.xRange.y);\n\t\t\t\tthis.position.y = math.clamp(this.position.y, this.yRange.x, this.yRange.y);\n\t\t\t\tthis.position.z = math.clamp(this.position.z, this.zRange.x, this.zRange.y);\n\t\t\t\treturn this;\n\t\t}\n\t\trotate(euler) {\n\t\t\t\tthis.angles.add(euler);\n\t\t\t\tthis.angles.x %= 360;\n\t\t\t\tthis.angles.y %= 360;\n\t\t\t\tthis.angles.z %= 360;\n\t\t\t\tthis.angles.x = math.clamp(this.angles.x, this.pitchRange.x, this.pitchRange.y);\n\t\t\t\tthis.angles.y = math.clamp(this.angles.y, this.yawRange.x, this.yawRange.y);\n\t\t\t\treturn this;\n\t\t}\n\t\tset(position, angles, distance) {\n\t\t\t\tthis.position.copy(position);\n\t\t\t\tthis.angles.copy(angles);\n\t\t\t\tthis.distance = distance;\n\t\t\t\treturn this;\n\t\t}\n\t\tlook(from, to) {\n\t\t\t\tthis.position.copy(from);\n\t\t\t\tthis.distance = from.distance(to);\n\t\t\t\tconst dir = tmpV1$5.sub2(to, from).normalize();\n\t\t\t\tconst elev = Math.atan2(-dir.y, Math.sqrt(dir.x * dir.x + dir.z * dir.z)) * math.RAD_TO_DEG;\n\t\t\t\tconst azim = Math.atan2(-dir.x, -dir.z) * math.RAD_TO_DEG;\n\t\t\t\tthis.angles.set(-elev, azim, 0);\n\t\t\t\treturn this;\n\t\t}\n\t\tgetFocus(out) {\n\t\t\t\treturn rotation$4.setFromEulerAngles(this.angles).transformVector(Vec3.FORWARD, out).mulScalar(this.distance).add(this.position);\n\t\t}\n}\n\nclass InputDelta {\n\t\tconstructor(arg){\n\t\t\t\tif (Array.isArray(arg)) {\n\t\t\t\t\t\tthis._value = arg.slice();\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._value = new Array(+arg).fill(0);\n\t\t\t\t}\n\t\t}\n\t\tadd(other) {\n\t\t\t\tfor(let i = 0; i < this._value.length; i++){\n\t\t\t\t\t\tthis._value[i] += other._value[i] || 0;\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t}\n\t\tappend(offsets) {\n\t\t\t\tfor(let i = 0; i < this._value.length; i++){\n\t\t\t\t\t\tthis._value[i] += offsets[i] || 0;\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t}\n\t\tcopy(other) {\n\t\t\t\tfor(let i = 0; i < this._value.length; i++){\n\t\t\t\t\t\tthis._value[i] = other._value[i] || 0;\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t}\n\t\tlength() {\n\t\t\t\tlet sum = 0;\n\t\t\t\tfor (const value of this._value){\n\t\t\t\t\t\tsum += value * value;\n\t\t\t\t}\n\t\t\t\treturn Math.sqrt(sum);\n\t\t}\n\t\tread() {\n\t\t\t\tconst value = this._value.slice();\n\t\t\t\tthis._value.fill(0);\n\t\t\t\treturn value;\n\t\t}\n}\nclass InputFrame {\n\t\tconstructor(data){\n\t\t\t\tthis.deltas = {};\n\t\t\t\tfor(const name in data){\n\t\t\t\t\t\tthis.deltas[name] = new InputDelta(data[name]);\n\t\t\t\t}\n\t\t}\n\t\tread() {\n\t\t\t\tconst frame = {};\n\t\t\t\tfor(const name in this.deltas){\n\t\t\t\t\t\tframe[name] = this.deltas[name].read();\n\t\t\t\t}\n\t\t\t\treturn frame;\n\t\t}\n}\nclass InputSource extends InputFrame {\n\t\ton(event, callback) {\n\t\t\t\tthis._events.on(event, callback);\n\t\t}\n\t\toff(event, callback) {\n\t\t\t\tthis._events.off(event, callback);\n\t\t}\n\t\tfire(event, ...args) {\n\t\t\t\tthis._events.fire(event, ...args);\n\t\t}\n\t\tattach(element) {\n\t\t\t\tif (this._element) {\n\t\t\t\t\t\tthis.detach();\n\t\t\t\t}\n\t\t\t\tthis._element = element;\n\t\t}\n\t\tdetach() {\n\t\t\t\tif (!this._element) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._element = null;\n\t\t\t\tthis.read();\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.detach();\n\t\t\t\tthis._events.off();\n\t\t}\n\t\tconstructor(...args){\n\t\t\t\tsuper(...args), this._element = null, this._events = new EventHandler();\n\t\t}\n}\nclass InputConsumer {\n\t\tupdate(frame, dt) {\n\t\t\t\tframe.read();\n\t\t}\n}\nclass InputController extends InputConsumer {\n\t\tattach(pose, smooth = true) {}\n\t\tdetach() {}\n\t\tupdate(frame, dt) {\n\t\t\t\tsuper.update(frame, dt);\n\t\t\t\treturn this._pose;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.detach();\n\t\t}\n\t\tconstructor(...args){\n\t\t\t\tsuper(...args), this._pose = new Pose();\n\t\t}\n}\n\nconst DOUBLE_TAP_THRESHOLD = 250;\nconst DOUBLE_TAP_VARIANCE = 100;\n\nconst movementState = ()=>{\n\t\tconst state = new Map();\n\t\treturn {\n\t\t\t\tdown: (event)=>{\n\t\t\t\t\t\tstate.set(event.pointerId, [\n\t\t\t\t\t\t\t\tevent.screenX,\n\t\t\t\t\t\t\t\tevent.screenY\n\t\t\t\t\t\t]);\n\t\t\t\t},\n\t\t\t\tmove: (event)=>{\n\t\t\t\t\t\tif (!state.has(event.pointerId)) {\n\t\t\t\t\t\t\t\treturn [\n\t\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst prev = state.get(event.pointerId);\n\t\t\t\t\t\tconst mvX = event.screenX - prev[0];\n\t\t\t\t\t\tconst mvY = event.screenY - prev[1];\n\t\t\t\t\t\tprev[0] = event.screenX;\n\t\t\t\t\t\tprev[1] = event.screenY;\n\t\t\t\t\t\treturn [\n\t\t\t\t\t\t\t\tmvX,\n\t\t\t\t\t\t\t\tmvY\n\t\t\t\t\t\t];\n\t\t\t\t},\n\t\t\t\tup: (event)=>{\n\t\t\t\t\t\tstate.delete(event.pointerId);\n\t\t\t\t}\n\t\t};\n};\n\nconst v$1 = new Vec2();\nclass VirtualJoystick {\n\t\tconstructor({ range } = {}){\n\t\t\t\tthis._range = 70;\n\t\t\t\tthis._position = new Vec2();\n\t\t\t\tthis._value = new Vec2();\n\t\t\t\tthis._range = range ?? this._range;\n\t\t}\n\t\tget value() {\n\t\t\t\treturn this._value;\n\t\t}\n\t\tdown(x, y) {\n\t\t\t\tthis._position.set(x, y);\n\t\t\t\tthis._value.set(0, 0);\n\t\t\t\treturn [\n\t\t\t\t\t\tx,\n\t\t\t\t\t\ty,\n\t\t\t\t\t\tx,\n\t\t\t\t\t\ty\n\t\t\t\t];\n\t\t}\n\t\tmove(x, y) {\n\t\t\t\tv$1.set(x - this._position.x, y - this._position.y);\n\t\t\t\tif (v$1.length() > this._range) {\n\t\t\t\t\t\tv$1.normalize().mulScalar(this._range);\n\t\t\t\t}\n\t\t\t\tthis._value.set(math.clamp(v$1.x / this._range, -1, 1), math.clamp(v$1.y / this._range, -1, 1));\n\t\t\t\tconst { x: bx, y: by } = this._position;\n\t\t\t\treturn [\n\t\t\t\t\t\tbx,\n\t\t\t\t\t\tby,\n\t\t\t\t\t\tbx + v$1.x,\n\t\t\t\t\t\tby + v$1.y\n\t\t\t\t];\n\t\t}\n\t\tup() {\n\t\t\t\tthis._position.set(0, 0);\n\t\t\t\tthis._value.set(0, 0);\n\t\t\t\treturn [\n\t\t\t\t\t\t-1,\n\t\t\t\t\t\t-1,\n\t\t\t\t\t\t-1,\n\t\t\t\t\t\t-1\n\t\t\t\t];\n\t\t}\n}\n\nclass SingleGestureSource extends InputSource {\n\t\tconstructor(){\n\t\t\t\tsuper({\n\t\t\t\t\t\tinput: [\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t],\n\t\t\t\t\t\tdoubleTap: [\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t]\n\t\t\t\t}), this._movementState = movementState(), this._layout = 'joystick', this._pointerData = new Map(), this._lastPointer = {\n\t\t\t\t\t\tx: 0,\n\t\t\t\t\t\ty: 0,\n\t\t\t\t\t\ttime: 0\n\t\t\t\t};\n\t\t\t\tthis._joystick = new VirtualJoystick();\n\t\t\t\tthis._onPointerDown = this._onPointerDown.bind(this);\n\t\t\t\tthis._onPointerMove = this._onPointerMove.bind(this);\n\t\t\t\tthis._onPointerUp = this._onPointerUp.bind(this);\n\t\t}\n\t\tset layout(value) {\n\t\t\t\tif (this._layout === value) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._layout = value;\n\t\t\t\tthis.read();\n\t\t\t\tthis._pointerData.clear();\n\t\t}\n\t\tget layout() {\n\t\t\t\treturn this._layout;\n\t\t}\n\t\tget joystick() {\n\t\t\t\treturn this._joystick;\n\t\t}\n\t\t_onPointerDown(event) {\n\t\t\t\tconst { pointerType, pointerId, clientX, clientY } = event;\n\t\t\t\tthis._movementState.down(event);\n\t\t\t\tif (pointerType !== 'touch') {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._element?.setPointerCapture(pointerId);\n\t\t\t\tthis._pointerData.set(pointerId, {\n\t\t\t\t\t\tx: clientX,\n\t\t\t\t\t\ty: clientY\n\t\t\t\t});\n\t\t\t\tconst now = Date.now();\n\t\t\t\tconst sqrDist = (this._lastPointer.x - clientX) ** 2 + (this._lastPointer.y - clientY) ** 2;\n\t\t\t\tif (sqrDist < DOUBLE_TAP_VARIANCE && now - this._lastPointer.time < DOUBLE_TAP_THRESHOLD) {\n\t\t\t\t\t\tthis.deltas.doubleTap.append([\n\t\t\t\t\t\t\t\t1\n\t\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t\tthis._lastPointer.x = clientX;\n\t\t\t\tthis._lastPointer.y = clientY;\n\t\t\t\tthis._lastPointer.time = now;\n\t\t\t\tif (this._layout === 'joystick') {\n\t\t\t\t\t\tthis.fire('joystick:position', this._joystick.down(clientX, clientY));\n\t\t\t\t}\n\t\t}\n\t\t_onPointerMove(event) {\n\t\t\t\tconst { pointerType, pointerId, target, clientX, clientY } = event;\n\t\t\t\tconst [movementX, movementY] = this._movementState.move(event);\n\t\t\t\tif (pointerType !== 'touch') {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (target !== this._element) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst data = this._pointerData.get(pointerId);\n\t\t\t\tif (!data) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tdata.x = clientX;\n\t\t\t\tdata.y = clientY;\n\t\t\t\tif (this._layout === 'joystick') {\n\t\t\t\t\t\tthis.fire('joystick:position', this._joystick.move(clientX, clientY));\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.deltas.input.append([\n\t\t\t\t\t\t\t\tmovementX,\n\t\t\t\t\t\t\t\tmovementY\n\t\t\t\t\t\t]);\n\t\t\t\t}\n\t\t}\n\t\t_onPointerUp(event) {\n\t\t\t\tconst { pointerType, pointerId } = event;\n\t\t\t\tthis._movementState.up(event);\n\t\t\t\tif (pointerType !== 'touch') {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._element?.releasePointerCapture(pointerId);\n\t\t\t\tconst data = this._pointerData.get(pointerId);\n\t\t\t\tif (!data) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._pointerData.delete(pointerId);\n\t\t\t\tif (this._layout === 'joystick') {\n\t\t\t\t\t\tthis.fire('joystick:position', this._joystick.up());\n\t\t\t\t}\n\t\t}\n\t\tattach(element) {\n\t\t\t\tsuper.attach(element);\n\t\t\t\tthis._element = element;\n\t\t\t\tthis._element.addEventListener('pointerdown', this._onPointerDown);\n\t\t\t\tthis._element.addEventListener('pointermove', this._onPointerMove);\n\t\t\t\tthis._element.addEventListener('pointerup', this._onPointerUp);\n\t\t\t\tthis._element.addEventListener('pointercancel', this._onPointerUp);\n\t\t}\n\t\tdetach() {\n\t\t\t\tif (!this._element) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._element.removeEventListener('pointerdown', this._onPointerDown);\n\t\t\t\tthis._element.removeEventListener('pointermove', this._onPointerMove);\n\t\t\t\tthis._element.removeEventListener('pointerup', this._onPointerUp);\n\t\t\t\tthis._element.removeEventListener('pointercancel', this._onPointerUp);\n\t\t\t\tthis._pointerData.clear();\n\t\t\t\tsuper.detach();\n\t\t}\n\t\tread() {\n\t\t\t\tthis.deltas.input.append([\n\t\t\t\t\t\tthis._joystick.value.x,\n\t\t\t\t\t\tthis._joystick.value.y\n\t\t\t\t]);\n\t\t\t\treturn super.read();\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis._joystick.up();\n\t\t\t\tsuper.destroy();\n\t\t}\n}\n\nconst startsWith = (str, prefix)=>str.indexOf(prefix) === 0;\nconst endsWith = (str, suffix)=>str.indexOf(suffix, str.length - suffix.length) !== -1;\nclass DualGestureSource extends InputSource {\n\t\tconstructor(layout){\n\t\t\t\tsuper({\n\t\t\t\t\t\tleftInput: [\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t],\n\t\t\t\t\t\trightInput: [\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t],\n\t\t\t\t\t\tdoubleTap: [\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t]\n\t\t\t\t}), this._movementState = movementState(), this._layout = 'joystick-touch', this._pointerData = new Map(), this._lastPointer = {\n\t\t\t\t\t\tx: 0,\n\t\t\t\t\t\ty: 0,\n\t\t\t\t\t\ttime: 0\n\t\t\t\t};\n\t\t\t\tif (layout) {\n\t\t\t\t\t\tthis.layout = layout;\n\t\t\t\t}\n\t\t\t\tthis._leftJoystick = new VirtualJoystick();\n\t\t\t\tthis._rightJoystick = new VirtualJoystick();\n\t\t\t\tthis._onPointerDown = this._onPointerDown.bind(this);\n\t\t\t\tthis._onPointerMove = this._onPointerMove.bind(this);\n\t\t\t\tthis._onPointerUp = this._onPointerUp.bind(this);\n\t\t}\n\t\tset layout(value) {\n\t\t\t\tif (this._layout === value) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._layout = value;\n\t\t\t\tthis.read();\n\t\t\t\tthis._pointerData.clear();\n\t\t}\n\t\tget layout() {\n\t\t\t\treturn this._layout;\n\t\t}\n\t\tget leftJoystick() {\n\t\t\t\treturn this._leftJoystick;\n\t\t}\n\t\tget rightJoystick() {\n\t\t\t\treturn this._rightJoystick;\n\t\t}\n\t\t_onPointerDown(event) {\n\t\t\t\tconst { pointerType, pointerId, clientX, clientY } = event;\n\t\t\t\tthis._movementState.down(event);\n\t\t\t\tif (pointerType !== 'touch') {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._element?.setPointerCapture(pointerId);\n\t\t\t\tconst left = clientX < window.innerWidth * 0.5;\n\t\t\t\tthis._pointerData.set(pointerId, {\n\t\t\t\t\t\tx: clientX,\n\t\t\t\t\t\ty: clientY,\n\t\t\t\t\t\tleft\n\t\t\t\t});\n\t\t\t\tconst now = Date.now();\n\t\t\t\tconst sqrDist = (this._lastPointer.x - clientX) ** 2 + (this._lastPointer.y - clientY) ** 2;\n\t\t\t\tif (sqrDist < DOUBLE_TAP_VARIANCE && now - this._lastPointer.time < DOUBLE_TAP_THRESHOLD) {\n\t\t\t\t\t\tthis.deltas.doubleTap.append([\n\t\t\t\t\t\t\t\t1\n\t\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t\tthis._lastPointer.x = clientX;\n\t\t\t\tthis._lastPointer.y = clientY;\n\t\t\t\tthis._lastPointer.time = now;\n\t\t\t\tif (left && startsWith(this._layout, 'joystick')) {\n\t\t\t\t\t\tthis.fire('joystick:position:left', this._leftJoystick.down(clientX, clientY));\n\t\t\t\t}\n\t\t\t\tif (!left && endsWith(this._layout, 'joystick')) {\n\t\t\t\t\t\tthis.fire('joystick:position:right', this._rightJoystick.down(clientX, clientY));\n\t\t\t\t}\n\t\t}\n\t\t_onPointerMove(event) {\n\t\t\t\tconst { pointerType, pointerId, target, clientX, clientY } = event;\n\t\t\t\tconst [movementX, movementY] = this._movementState.move(event);\n\t\t\t\tif (pointerType !== 'touch') {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (target !== this._element) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst data = this._pointerData.get(pointerId);\n\t\t\t\tif (!data) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst { left } = data;\n\t\t\t\tdata.x = clientX;\n\t\t\t\tdata.y = clientY;\n\t\t\t\tif (left) {\n\t\t\t\t\t\tif (startsWith(this._layout, 'joystick')) {\n\t\t\t\t\t\t\t\tthis.fire('joystick:position:left', this._leftJoystick.move(clientX, clientY));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.deltas.leftInput.append([\n\t\t\t\t\t\t\t\t\t\tmovementX,\n\t\t\t\t\t\t\t\t\t\tmovementY\n\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tif (endsWith(this._layout, 'joystick')) {\n\t\t\t\t\t\t\t\tthis.fire('joystick:position:right', this._rightJoystick.move(clientX, clientY));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.deltas.rightInput.append([\n\t\t\t\t\t\t\t\t\t\tmovementX,\n\t\t\t\t\t\t\t\t\t\tmovementY\n\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_onPointerUp(event) {\n\t\t\t\tconst { pointerType, pointerId } = event;\n\t\t\t\tthis._movementState.up(event);\n\t\t\t\tif (pointerType !== 'touch') {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._element?.releasePointerCapture(pointerId);\n\t\t\t\tconst data = this._pointerData.get(pointerId);\n\t\t\t\tif (!data) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst { left } = data;\n\t\t\t\tthis._pointerData.delete(pointerId);\n\t\t\t\tif (left && startsWith(this._layout, 'joystick')) {\n\t\t\t\t\t\tthis.fire('joystick:position:left', this._leftJoystick.up());\n\t\t\t\t}\n\t\t\t\tif (!left && endsWith(this._layout, 'joystick')) {\n\t\t\t\t\t\tthis.fire('joystick:position:right', this._rightJoystick.up());\n\t\t\t\t}\n\t\t}\n\t\tattach(element) {\n\t\t\t\tsuper.attach(element);\n\t\t\t\tthis._element = element;\n\t\t\t\tthis._element.addEventListener('pointerdown', this._onPointerDown);\n\t\t\t\tthis._element.addEventListener('pointermove', this._onPointerMove);\n\t\t\t\tthis._element.addEventListener('pointerup', this._onPointerUp);\n\t\t\t\tthis._element.addEventListener('pointercancel', this._onPointerUp);\n\t\t}\n\t\tdetach() {\n\t\t\t\tif (!this._element) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._element.removeEventListener('pointerdown', this._onPointerDown);\n\t\t\t\tthis._element.removeEventListener('pointermove', this._onPointerMove);\n\t\t\t\tthis._element.removeEventListener('pointerup', this._onPointerUp);\n\t\t\t\tthis._element.removeEventListener('pointercancel', this._onPointerUp);\n\t\t\t\tthis._pointerData.clear();\n\t\t\t\tsuper.detach();\n\t\t}\n\t\tread() {\n\t\t\t\tthis.deltas.leftInput.append([\n\t\t\t\t\t\tthis._leftJoystick.value.x,\n\t\t\t\t\t\tthis._leftJoystick.value.y\n\t\t\t\t]);\n\t\t\t\tthis.deltas.rightInput.append([\n\t\t\t\t\t\tthis._rightJoystick.value.x,\n\t\t\t\t\t\tthis._rightJoystick.value.y\n\t\t\t\t]);\n\t\t\t\treturn super.read();\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis._leftJoystick.up();\n\t\t\t\tthis._rightJoystick.up();\n\t\t\t\tsuper.destroy();\n\t\t}\n}\n\nconst tmpVa = new Vec2();\nclass MultiTouchSource extends InputSource {\n\t\tconstructor(){\n\t\t\t\tsuper({\n\t\t\t\t\t\ttouch: [\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t],\n\t\t\t\t\t\tcount: [\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t],\n\t\t\t\t\t\tpinch: [\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t]\n\t\t\t\t}), this._movementState = movementState(), this._pointerEvents = new Map(), this._pointerPos = new Vec2(), this._pinchDist = -1;\n\t\t\t\tthis._onPointerDown = this._onPointerDown.bind(this);\n\t\t\t\tthis._onPointerMove = this._onPointerMove.bind(this);\n\t\t\t\tthis._onPointerUp = this._onPointerUp.bind(this);\n\t\t\t\tthis._onContextMenu = this._onContextMenu.bind(this);\n\t\t}\n\t\t_onPointerDown(event) {\n\t\t\t\tconst { pointerId, pointerType } = event;\n\t\t\t\tthis._movementState.down(event);\n\t\t\t\tif (pointerType !== 'touch') {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._element?.setPointerCapture(pointerId);\n\t\t\t\tthis._pointerEvents.set(pointerId, event);\n\t\t\t\tthis.deltas.count.append([\n\t\t\t\t\t\t1\n\t\t\t\t]);\n\t\t\t\tif (this._pointerEvents.size > 1) {\n\t\t\t\t\t\tthis._getMidPoint(this._pointerPos);\n\t\t\t\t\t\tthis._pinchDist = this._getPinchDist();\n\t\t\t\t}\n\t\t}\n\t\t_onPointerMove(event) {\n\t\t\t\tconst { pointerType, target, pointerId } = event;\n\t\t\t\tconst [movementX, movementY] = this._movementState.move(event);\n\t\t\t\tif (pointerType !== 'touch') {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (target !== this._element) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this._pointerEvents.size === 0) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._pointerEvents.set(pointerId, event);\n\t\t\t\tif (this._pointerEvents.size > 1) {\n\t\t\t\t\t\tconst mid = this._getMidPoint(tmpVa);\n\t\t\t\t\t\tthis.deltas.touch.append([\n\t\t\t\t\t\t\t\tmid.x - this._pointerPos.x,\n\t\t\t\t\t\t\t\tmid.y - this._pointerPos.y\n\t\t\t\t\t\t]);\n\t\t\t\t\t\tthis._pointerPos.copy(mid);\n\t\t\t\t\t\tconst pinchDist = this._getPinchDist();\n\t\t\t\t\t\tif (this._pinchDist > 0) {\n\t\t\t\t\t\t\t\tthis.deltas.pinch.append([\n\t\t\t\t\t\t\t\t\t\tthis._pinchDist - pinchDist\n\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._pinchDist = pinchDist;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.deltas.touch.append([\n\t\t\t\t\t\t\t\tmovementX,\n\t\t\t\t\t\t\t\tmovementY\n\t\t\t\t\t\t]);\n\t\t\t\t}\n\t\t}\n\t\t_onPointerUp(event) {\n\t\t\t\tconst { pointerType, pointerId } = event;\n\t\t\t\tthis._movementState.up(event);\n\t\t\t\tif (pointerType !== 'touch') {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._element?.releasePointerCapture(pointerId);\n\t\t\t\tthis._pointerEvents.delete(pointerId);\n\t\t\t\tthis.deltas.count.append([\n\t\t\t\t\t\t-1\n\t\t\t\t]);\n\t\t\t\tif (this._pointerEvents.size < 2) {\n\t\t\t\t\t\tthis._pinchDist = -1;\n\t\t\t\t}\n\t\t\t\tthis._pointerPos.set(0, 0);\n\t\t}\n\t\t_onContextMenu(event) {\n\t\t\t\tevent.preventDefault();\n\t\t}\n\t\t_getMidPoint(out) {\n\t\t\t\tif (this._pointerEvents.size < 2) {\n\t\t\t\t\t\treturn out.set(0, 0);\n\t\t\t\t}\n\t\t\t\tconst [a, b] = this._pointerEvents.values();\n\t\t\t\tconst dx = a.clientX - b.clientX;\n\t\t\t\tconst dy = a.clientY - b.clientY;\n\t\t\t\treturn out.set(b.clientX + dx * 0.5, b.clientY + dy * 0.5);\n\t\t}\n\t\t_getPinchDist() {\n\t\t\t\tif (this._pointerEvents.size < 2) {\n\t\t\t\t\t\treturn 0;\n\t\t\t\t}\n\t\t\t\tconst [a, b] = this._pointerEvents.values();\n\t\t\t\tconst dx = a.clientX - b.clientX;\n\t\t\t\tconst dy = a.clientY - b.clientY;\n\t\t\t\treturn Math.sqrt(dx * dx + dy * dy);\n\t\t}\n\t\tattach(element) {\n\t\t\t\tsuper.attach(element);\n\t\t\t\tthis._element = element;\n\t\t\t\tthis._element.addEventListener('pointerdown', this._onPointerDown);\n\t\t\t\tthis._element.addEventListener('pointermove', this._onPointerMove);\n\t\t\t\tthis._element.addEventListener('pointerup', this._onPointerUp);\n\t\t\t\tthis._element.addEventListener('pointercancel', this._onPointerUp);\n\t\t\t\tthis._element.addEventListener('contextmenu', this._onContextMenu);\n\t\t}\n\t\tdetach() {\n\t\t\t\tif (!this._element) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._element.removeEventListener('pointerdown', this._onPointerDown);\n\t\t\t\tthis._element.removeEventListener('pointermove', this._onPointerMove);\n\t\t\t\tthis._element.removeEventListener('pointerup', this._onPointerUp);\n\t\t\t\tthis._element.removeEventListener('pointercancel', this._onPointerUp);\n\t\t\t\tthis._element.removeEventListener('contextmenu', this._onContextMenu);\n\t\t\t\tthis._pointerEvents.clear();\n\t\t\t\tsuper.detach();\n\t\t}\n}\n\nconst PASSIVE = {\n\t\tpassive: false\n};\nconst KEY_CODES = {\n\t\tA: 0,\n\t\tB: 1,\n\t\tC: 2,\n\t\tD: 3,\n\t\tE: 4,\n\t\tF: 5,\n\t\tG: 6,\n\t\tH: 7,\n\t\tI: 8,\n\t\tJ: 9,\n\t\tK: 10,\n\t\tL: 11,\n\t\tM: 12,\n\t\tN: 13,\n\t\tO: 14,\n\t\tP: 15,\n\t\tQ: 16,\n\t\tR: 17,\n\t\tS: 18,\n\t\tT: 19,\n\t\tU: 20,\n\t\tV: 21,\n\t\tW: 22,\n\t\tX: 23,\n\t\tY: 24,\n\t\tZ: 25,\n\t\t'0': 26,\n\t\t'1': 27,\n\t\t'2': 28,\n\t\t'3': 29,\n\t\t'4': 30,\n\t\t'5': 31,\n\t\t'6': 32,\n\t\t'7': 33,\n\t\t'8': 34,\n\t\t'9': 35,\n\t\tUP: 36,\n\t\tDOWN: 37,\n\t\tLEFT: 38,\n\t\tRIGHT: 39,\n\t\tSPACE: 40,\n\t\tSHIFT: 41,\n\t\tCTRL: 42\n};\nconst KEY_COUNT = Object.keys(KEY_CODES).length;\nconst array = Array(KEY_COUNT).fill(0);\nclass KeyboardMouseSource extends InputSource {\n\t\tstatic{\n\t\t\t\tthis.keyCode = KEY_CODES;\n\t\t}\n\t\tconstructor({ pointerLock = false } = {}){\n\t\t\t\tsuper({\n\t\t\t\t\t\tkey: Array(KEY_COUNT).fill(0),\n\t\t\t\t\t\tbutton: [\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t],\n\t\t\t\t\t\tmouse: [\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t],\n\t\t\t\t\t\twheel: [\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t]\n\t\t\t\t}), this._movementState = movementState(), this._pointerId = -1, this._keyMap = new Map(), this._keyPrev = Array(KEY_COUNT).fill(0), this._keyNow = Array(KEY_COUNT).fill(0), this._button = Array(3).fill(0);\n\t\t\t\tthis._pointerLock = pointerLock ?? false;\n\t\t\t\tconst { keyCode } = KeyboardMouseSource;\n\t\t\t\tfor(let i = 0; i < 26; i++){\n\t\t\t\t\t\tconst code = `Key${String.fromCharCode('A'.charCodeAt(0) + i)}`;\n\t\t\t\t\t\tthis._keyMap.set(code, keyCode.A + i);\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < 10; i++){\n\t\t\t\t\t\tconst code = `Digit${i}`;\n\t\t\t\t\t\tthis._keyMap.set(code, keyCode['0'] + i);\n\t\t\t\t}\n\t\t\t\tthis._keyMap.set('ArrowUp', keyCode.UP);\n\t\t\t\tthis._keyMap.set('ArrowDown', keyCode.DOWN);\n\t\t\t\tthis._keyMap.set('ArrowLeft', keyCode.LEFT);\n\t\t\t\tthis._keyMap.set('ArrowRight', keyCode.RIGHT);\n\t\t\t\tthis._keyMap.set('Space', keyCode.SPACE);\n\t\t\t\tthis._keyMap.set('ShiftLeft', keyCode.SHIFT);\n\t\t\t\tthis._keyMap.set('ShiftRight', keyCode.SHIFT);\n\t\t\t\tthis._keyMap.set('ControlLeft', keyCode.CTRL);\n\t\t\t\tthis._keyMap.set('ControlRight', keyCode.CTRL);\n\t\t\t\tthis._onWheel = this._onWheel.bind(this);\n\t\t\t\tthis._onPointerDown = this._onPointerDown.bind(this);\n\t\t\t\tthis._onPointerMove = this._onPointerMove.bind(this);\n\t\t\t\tthis._onPointerUp = this._onPointerUp.bind(this);\n\t\t\t\tthis._onContextMenu = this._onContextMenu.bind(this);\n\t\t\t\tthis._onKeyDown = this._onKeyDown.bind(this);\n\t\t\t\tthis._onKeyUp = this._onKeyUp.bind(this);\n\t\t}\n\t\t_onWheel(event) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tthis.deltas.wheel.append([\n\t\t\t\t\t\tevent.deltaY\n\t\t\t\t]);\n\t\t}\n\t\t_onPointerDown(event) {\n\t\t\t\tthis._movementState.down(event);\n\t\t\t\tif (event.pointerType !== 'mouse') {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this._pointerLock) {\n\t\t\t\t\t\tif (document.pointerLockElement !== this._element) {\n\t\t\t\t\t\t\t\tthis._element?.requestPointerLock();\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._element?.setPointerCapture(event.pointerId);\n\t\t\t\t}\n\t\t\t\tthis._clearButtons();\n\t\t\t\tthis._button[event.button] = 1;\n\t\t\t\tthis.deltas.button.append(this._button);\n\t\t\t\tif (this._pointerId !== -1) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._pointerId = event.pointerId;\n\t\t}\n\t\t_onPointerMove(event) {\n\t\t\t\tconst [movementX, movementY] = this._pointerLock && document.pointerLockElement === this._element ? [\n\t\t\t\t\t\tevent.movementX,\n\t\t\t\t\t\tevent.movementY\n\t\t\t\t] : this._movementState.move(event);\n\t\t\t\tif (event.pointerType !== 'mouse') {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (event.target !== this._element) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this._pointerLock) {\n\t\t\t\t\t\tif (document.pointerLockElement !== this._element) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tif (this._pointerId !== event.pointerId) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.deltas.mouse.append([\n\t\t\t\t\t\tmovementX,\n\t\t\t\t\t\tmovementY\n\t\t\t\t]);\n\t\t}\n\t\t_onPointerUp(event) {\n\t\t\t\tthis._movementState.up(event);\n\t\t\t\tif (event.pointerType !== 'mouse') {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (!this._pointerLock) {\n\t\t\t\t\t\tthis._element?.releasePointerCapture(event.pointerId);\n\t\t\t\t}\n\t\t\t\tthis._clearButtons();\n\t\t\t\tthis.deltas.button.append(this._button);\n\t\t\t\tif (this._pointerId !== event.pointerId) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._pointerId = -1;\n\t\t}\n\t\t_onContextMenu(event) {\n\t\t\t\tevent.preventDefault();\n\t\t}\n\t\t_onKeyDown(event) {\n\t\t\t\tif (this._pointerLock && document.pointerLockElement !== this._element) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tthis._setKey(event.code, 1);\n\t\t}\n\t\t_onKeyUp(event) {\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tthis._setKey(event.code, 0);\n\t\t}\n\t\t_clearButtons() {\n\t\t\t\tfor(let i = 0; i < this._button.length; i++){\n\t\t\t\t\t\tif (this._button[i] === 1) {\n\t\t\t\t\t\t\t\tthis._button[i] = -1;\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._button[i] = 0;\n\t\t\t\t}\n\t\t}\n\t\t_setKey(code, value) {\n\t\t\t\tif (!this._keyMap.has(code)) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._keyNow[this._keyMap.get(code) ?? 0] = value;\n\t\t}\n\t\tattach(element) {\n\t\t\t\tsuper.attach(element);\n\t\t\t\tthis._element = element;\n\t\t\t\tthis._element.addEventListener('wheel', this._onWheel, PASSIVE);\n\t\t\t\tthis._element.addEventListener('pointerdown', this._onPointerDown);\n\t\t\t\tthis._element.addEventListener('pointermove', this._onPointerMove);\n\t\t\t\tthis._element.addEventListener('pointerup', this._onPointerUp);\n\t\t\t\tthis._element.addEventListener('pointercancel', this._onPointerUp);\n\t\t\t\tthis._element.addEventListener('pointerleave', this._onPointerUp);\n\t\t\t\tthis._element.addEventListener('contextmenu', this._onContextMenu);\n\t\t\t\twindow.addEventListener('keydown', this._onKeyDown, false);\n\t\t\t\twindow.addEventListener('keyup', this._onKeyUp, false);\n\t\t}\n\t\tdetach() {\n\t\t\t\tif (!this._element) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._element.removeEventListener('wheel', this._onWheel, PASSIVE);\n\t\t\t\tthis._element.removeEventListener('pointerdown', this._onPointerDown);\n\t\t\t\tthis._element.removeEventListener('pointermove', this._onPointerMove);\n\t\t\t\tthis._element.removeEventListener('pointerup', this._onPointerUp);\n\t\t\t\tthis._element.removeEventListener('pointercancel', this._onPointerUp);\n\t\t\t\tthis._element.removeEventListener('pointerleave', this._onPointerUp);\n\t\t\t\tthis._element.removeEventListener('contextmenu', this._onContextMenu);\n\t\t\t\twindow.removeEventListener('keydown', this._onKeyDown, false);\n\t\t\t\twindow.removeEventListener('keyup', this._onKeyUp, false);\n\t\t\t\tthis._keyNow.fill(0);\n\t\t\t\tthis._keyPrev.fill(0);\n\t\t\t\tsuper.detach();\n\t\t}\n\t\tread() {\n\t\t\t\tfor(let i = 0; i < array.length; i++){\n\t\t\t\t\t\tarray[i] = this._keyNow[i] - this._keyPrev[i];\n\t\t\t\t\t\tthis._keyPrev[i] = this._keyNow[i];\n\t\t\t\t}\n\t\t\t\tthis.deltas.key.append(array);\n\t\t\t\treturn super.read();\n\t\t}\n}\n\nconst BUTTON_CODES = {\n\t\tA: 0,\n\t\tB: 1,\n\t\tX: 2,\n\t\tY: 3,\n\t\tLB: 4,\n\t\tRB: 5,\n\t\tLT: 6,\n\t\tRT: 7,\n\t\tSELECT: 8,\n\t\tSTART: 9,\n\t\tLEFT_STICK: 10,\n\t\tRIGHT_STICK: 11\n};\nconst BUTTON_COUNT = Object.keys(BUTTON_CODES).length;\nclass GamepadSource extends InputSource {\n\t\tstatic{\n\t\t\t\tthis.buttonCode = BUTTON_CODES;\n\t\t}\n\t\tconstructor(){\n\t\t\t\tsuper({\n\t\t\t\t\t\tbuttons: Array(BUTTON_COUNT).fill(0),\n\t\t\t\t\t\tleftStick: [\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t],\n\t\t\t\t\t\trightStick: [\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t]\n\t\t\t\t}), this._buttonPrev = Array(BUTTON_COUNT).fill(0);\n\t\t}\n\t\tread() {\n\t\t\t\tconst gamepads = navigator.getGamepads();\n\t\t\t\tfor(let i = 0; i < gamepads.length; i++){\n\t\t\t\t\t\tconst gp = gamepads[i];\n\t\t\t\t\t\tif (!gp) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (gp.mapping !== 'standard') {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (gp.axes.length < 4) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (gp.buttons.length < BUTTON_COUNT) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst { buttons, axes } = gp;\n\t\t\t\t\t\tfor(let j = 0; j < this._buttonPrev.length; j++){\n\t\t\t\t\t\t\t\tconst state = +buttons[j].pressed;\n\t\t\t\t\t\t\t\tthis.deltas.buttons[j] = state - this._buttonPrev[j];\n\t\t\t\t\t\t\t\tthis._buttonPrev[j] = state;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.deltas.leftStick.append([\n\t\t\t\t\t\t\t\taxes[0],\n\t\t\t\t\t\t\t\taxes[1]\n\t\t\t\t\t\t]);\n\t\t\t\t\t\tthis.deltas.rightStick.append([\n\t\t\t\t\t\t\t\taxes[2],\n\t\t\t\t\t\t\t\taxes[3]\n\t\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t\treturn super.read();\n\t\t}\n}\n\nconst damp = (damping, dt)=>1 - Math.pow(damping, dt * 1000);\n\nconst offset$1 = new Vec3();\nconst angles$1 = new Vec3();\nconst forward = new Vec3();\nconst right = new Vec3();\nconst up = new Vec3();\nconst rotation$3 = new Quat();\nclass FlyController extends InputController {\n\t\tset pitchRange(value) {\n\t\t\t\tthis._targetPose.pitchRange.copy(value);\n\t\t\t\tthis._pose.copy(this._targetPose.rotate(Vec3.ZERO));\n\t\t}\n\t\tget pitchRange() {\n\t\t\t\treturn this._targetPose.pitchRange;\n\t\t}\n\t\tset yawRange(value) {\n\t\t\t\tthis._targetPose.yawRange.copy(value);\n\t\t\t\tthis._pose.copy(this._targetPose.rotate(Vec3.ZERO));\n\t\t}\n\t\tget yawRange() {\n\t\t\t\treturn this._targetPose.yawRange;\n\t\t}\n\t\tattach(pose, smooth = true) {\n\t\t\t\tthis._targetPose.copy(pose);\n\t\t\t\tif (!smooth) {\n\t\t\t\t\t\tthis._pose.copy(this._targetPose);\n\t\t\t\t}\n\t\t}\n\t\tdetach() {\n\t\t\t\tthis._targetPose.copy(this._pose);\n\t\t}\n\t\tupdate(frame, dt) {\n\t\t\t\tconst { move, rotate } = frame.read();\n\t\t\t\tthis._targetPose.rotate(angles$1.set(-rotate[1], -rotate[0], 0));\n\t\t\t\trotation$3.setFromEulerAngles(this._pose.angles);\n\t\t\t\trotation$3.transformVector(Vec3.FORWARD, forward);\n\t\t\t\trotation$3.transformVector(Vec3.RIGHT, right);\n\t\t\t\trotation$3.transformVector(Vec3.UP, up);\n\t\t\t\toffset$1.set(0, 0, 0);\n\t\t\t\toffset$1.add(forward.mulScalar(move[2]));\n\t\t\t\toffset$1.add(right.mulScalar(move[0]));\n\t\t\t\toffset$1.add(up.mulScalar(move[1]));\n\t\t\t\tthis._targetPose.move(offset$1);\n\t\t\t\treturn this._pose.lerp(this._pose, this._targetPose, damp(this.moveDamping, dt), damp(this.rotateDamping, dt));\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.detach();\n\t\t}\n\t\tconstructor(...args){\n\t\t\t\tsuper(...args), this._targetPose = new Pose(), this.rotateDamping = 0.98, this.moveDamping = 0.98;\n\t\t}\n}\n\nconst dir$2 = new Vec3();\nconst offset = new Vec3();\nconst angles = new Vec3();\nconst rotation$2 = new Quat();\nclass OrbitController extends InputController {\n\t\tset pitchRange(range) {\n\t\t\t\tthis._targetRootPose.pitchRange.copy(range);\n\t\t\t\tthis._rootPose.copy(this._targetRootPose.rotate(Vec3.ZERO));\n\t\t}\n\t\tget pitchRange() {\n\t\t\t\treturn this._targetRootPose.pitchRange;\n\t\t}\n\t\tset yawRange(range) {\n\t\t\t\tthis._targetRootPose.yawRange.copy(range);\n\t\t\t\tthis._rootPose.copy(this._targetRootPose.rotate(Vec3.ZERO));\n\t\t}\n\t\tget yawRange() {\n\t\t\t\treturn this._targetRootPose.yawRange;\n\t\t}\n\t\tset zoomRange(range) {\n\t\t\t\tthis._targetChildPose.zRange.copy(range);\n\t\t\t\tthis._childPose.copy(this._targetChildPose.move(Vec3.ZERO));\n\t\t}\n\t\tget zoomRange() {\n\t\t\t\treturn this._targetRootPose.zRange;\n\t\t}\n\t\tattach(pose, smooth = true) {\n\t\t\t\tthis._targetRootPose.set(pose.getFocus(dir$2), pose.angles, 0);\n\t\t\t\tthis._targetChildPose.position.set(0, 0, pose.distance);\n\t\t\t\tif (!smooth) {\n\t\t\t\t\t\tthis._rootPose.copy(this._targetRootPose);\n\t\t\t\t\t\tthis._childPose.copy(this._targetChildPose);\n\t\t\t\t}\n\t\t}\n\t\tdetach() {\n\t\t\t\tthis._targetRootPose.copy(this._rootPose);\n\t\t\t\tthis._targetChildPose.copy(this._childPose);\n\t\t}\n\t\tupdate(frame, dt) {\n\t\t\t\tconst { move, rotate } = frame.read();\n\t\t\t\toffset.set(move[0], move[1], 0);\n\t\t\t\trotation$2.setFromEulerAngles(this._rootPose.angles).transformVector(offset, offset);\n\t\t\t\tthis._targetRootPose.move(offset);\n\t\t\t\tconst { z: dist } = this._targetChildPose.position;\n\t\t\t\tthis._targetChildPose.move(offset.set(0, 0, dist * (1 + move[2]) - dist));\n\t\t\t\tthis._targetRootPose.rotate(angles.set(-rotate[1], -rotate[0], 0));\n\t\t\t\tthis._rootPose.lerp(this._rootPose, this._targetRootPose, damp(this.moveDamping, dt), damp(this.rotateDamping, dt), 1);\n\t\t\t\tthis._childPose.lerp(this._childPose, this._targetChildPose, damp(this.zoomDamping, dt), 1, 1);\n\t\t\t\trotation$2.setFromEulerAngles(this._rootPose.angles).transformVector(this._childPose.position, offset).add(this._rootPose.position);\n\t\t\t\treturn this._pose.set(offset, this._rootPose.angles, this._childPose.position.z);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.detach();\n\t\t}\n\t\tconstructor(...args){\n\t\t\t\tsuper(...args), this._targetRootPose = new Pose(), this._rootPose = new Pose(), this._targetChildPose = new Pose(), this._childPose = new Pose(), this.rotateDamping = 0.98, this.moveDamping = 0.98, this.zoomDamping = 0.98;\n\t\t}\n}\n\nconst EPSILON = 0.001;\nconst dir$1 = new Vec3();\nconst position$1 = new Vec3();\nconst rotation$1 = new Quat();\nclass FocusController extends InputController {\n\t\tattach(pose, smooth = true) {\n\t\t\t\tthis._targetRootPose.set(pose.getFocus(dir$1), pose.angles, 0);\n\t\t\t\tthis._targetChildPose.position.set(0, 0, pose.distance);\n\t\t\t\tif (!smooth) {\n\t\t\t\t\t\tthis._rootPose.copy(this._targetRootPose);\n\t\t\t\t\t\tthis._childPose.copy(this._targetChildPose);\n\t\t\t\t}\n\t\t}\n\t\tdetach() {\n\t\t\t\tthis._targetRootPose.copy(this._rootPose);\n\t\t\t\tthis._targetChildPose.copy(this._childPose);\n\t\t}\n\t\tcomplete() {\n\t\t\t\treturn this._targetRootPose.equalsApprox(this._rootPose, EPSILON) && this._targetChildPose.equalsApprox(this._childPose, EPSILON);\n\t\t}\n\t\tupdate(frame, dt) {\n\t\t\t\tframe.read();\n\t\t\t\tthis._rootPose.lerp(this._rootPose, this._targetRootPose, damp(this.focusDamping, dt), damp(this.focusDamping, dt), 1);\n\t\t\t\tthis._childPose.lerp(this._childPose, this._targetChildPose, damp(this.focusDamping, dt), 1, 1);\n\t\t\t\trotation$1.setFromEulerAngles(this._rootPose.angles).transformVector(this._childPose.position, position$1).add(this._rootPose.position);\n\t\t\t\treturn this._pose.set(position$1, this._rootPose.angles, this._childPose.position.length());\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.detach();\n\t\t}\n\t\tconstructor(...args){\n\t\t\t\tsuper(...args), this._targetRootPose = new Pose(), this._rootPose = new Pose(), this._targetChildPose = new Pose(), this._childPose = new Pose(), this.focusDamping = 0.98;\n\t\t}\n}\n\nconst GIZMOSPACE_LOCAL = 'local';\nconst GIZMOSPACE_WORLD = 'world';\nconst GIZMOAXIS_X = 'x';\nconst GIZMOAXIS_Y = 'y';\nconst GIZMOAXIS_Z = 'z';\nconst GIZMOAXIS_YZ = 'yz';\nconst GIZMOAXIS_XZ = 'xz';\nconst GIZMOAXIS_XY = 'xy';\nconst GIZMOAXIS_XYZ = 'xyz';\nconst GIZMOAXIS_FACE = 'face';\n\nconst v = new Vec3();\nconst position = new Vec3();\nconst dir = new Vec3();\nconst rotation = new Quat();\nconst m1 = new Mat4();\nconst m2 = new Mat4();\nconst ray$1 = new Ray();\nconst MIN_SCALE = 1e-4;\nconst PERS_SCALE_RATIO = 0.3;\nconst ORTHO_SCALE_RATIO = 0.32;\nconst UPDATE_EPSILON$2 = 1e-6;\nconst DIST_EPSILON = 1e-4;\nclass Gizmo extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_POINTERDOWN = 'pointer:down';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_POINTERMOVE = 'pointer:move';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_POINTERUP = 'pointer:up';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_POSITIONUPDATE = 'position:update';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_ROTATIONUPDATE = 'rotation:update';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_SCALEUPDATE = 'scale:update';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_NODESATTACH = 'nodes:attach';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_NODESDETACH = 'nodes:detach';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_RENDERUPDATE = 'render:update';\n\t\t}\n\t\tstatic createLayer(app, layerName = 'Gizmo', layerIndex = app.scene.layers.layerList.length) {\n\t\t\t\tconst layer = new Layer({\n\t\t\t\t\t\tname: layerName,\n\t\t\t\t\t\tclearDepthBuffer: true,\n\t\t\t\t\t\topaqueSortMode: SORTMODE_NONE,\n\t\t\t\t\t\ttransparentSortMode: SORTMODE_NONE\n\t\t\t\t});\n\t\t\t\tapp.scene.layers.insert(layer, layerIndex);\n\t\t\t\treturn layer;\n\t\t}\n\t\tconstructor(camera, layer, name = 'gizmo'){\n\t\t\t\tsuper(), this._size = 1, this._scale = 1, this._coordSpace = 'world', this._handles = [], this._mouseButtons = [\n\t\t\t\t\t\ttrue,\n\t\t\t\t\t\ttrue,\n\t\t\t\t\t\ttrue\n\t\t\t\t], this._renderUpdate = false, this.nodes = [], this.intersectShapes = [], this.preventDefault = true;\n\t\t\t\tthis._layer = layer;\n\t\t\t\tthis._camera = camera;\n\t\t\t\tthis._camera.layers = this._camera.layers.concat(this._layer.id);\n\t\t\t\tthis._app = this._camera.system.app;\n\t\t\t\tthis._device = this._app.graphicsDevice;\n\t\t\t\tthis.root = new Entity(name);\n\t\t\t\tthis._app.root.addChild(this.root);\n\t\t\t\tthis.root.enabled = false;\n\t\t\t\tthis._updateScale();\n\t\t\t\tthis._onPointerDown = this._onPointerDown.bind(this);\n\t\t\t\tthis._onPointerMove = this._onPointerMove.bind(this);\n\t\t\t\tthis._onPointerUp = this._onPointerUp.bind(this);\n\t\t\t\tthis._device.canvas.addEventListener('pointerdown', this._onPointerDown);\n\t\t\t\tthis._device.canvas.addEventListener('pointermove', this._onPointerMove);\n\t\t\t\tthis._device.canvas.addEventListener('pointerup', this._onPointerUp);\n\t\t\t\tthis._handles.push(this._app.on('prerender', ()=>this.prerender()));\n\t\t\t\tthis._handles.push(this._app.on('update', ()=>this.update()));\n\t\t\t\tthis._handles.push(this._app.on('destroy', ()=>this.destroy()));\n\t\t}\n\t\tset enabled(state) {\n\t\t\t\tconst cameraDist = this.root.getLocalPosition().distance(this.camera.entity.getPosition());\n\t\t\t\tconst enabled = state ? this.nodes.length > 0 && cameraDist > DIST_EPSILON : false;\n\t\t\t\tif (enabled !== this.root.enabled) {\n\t\t\t\t\t\tthis.root.enabled = enabled;\n\t\t\t\t\t\tthis._renderUpdate = true;\n\t\t\t\t}\n\t\t}\n\t\tget enabled() {\n\t\t\t\treturn this.root.enabled;\n\t\t}\n\t\tget mouseButtons() {\n\t\t\t\treturn this._mouseButtons;\n\t\t}\n\t\tset layer(layer) {\n\t\t\t\tif (this._layer === layer) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._camera.layers = this._camera.layers.filter((id)=>id !== this._layer.id);\n\t\t\t\tthis._layer = layer;\n\t\t\t\tthis._camera.layers = this._camera.layers.concat(this._layer.id);\n\t\t\t\tthis.enabled = true;\n\t\t}\n\t\tget layer() {\n\t\t\t\treturn this._layer;\n\t\t}\n\t\tset camera(camera) {\n\t\t\t\tif (this._camera === camera) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._camera.layers = this._camera.layers.filter((id)=>id !== this._layer.id);\n\t\t\t\tthis._camera = camera;\n\t\t\t\tthis._camera.layers = this._camera.layers.concat(this._layer.id);\n\t\t\t\tthis.enabled = true;\n\t\t}\n\t\tget camera() {\n\t\t\t\treturn this._camera;\n\t\t}\n\t\tset coordSpace(value) {\n\t\t\t\tthis._coordSpace = value ?? this._coordSpace;\n\t\t\t\tthis._updateRotation();\n\t\t}\n\t\tget coordSpace() {\n\t\t\t\treturn this._coordSpace;\n\t\t}\n\t\tset size(value) {\n\t\t\t\tthis._size = value;\n\t\t\t\tthis._updateScale();\n\t\t}\n\t\tget size() {\n\t\t\t\treturn this._size;\n\t\t}\n\t\tget facingDir() {\n\t\t\t\tif (this._camera.projection === PROJECTION_PERSPECTIVE) {\n\t\t\t\t\t\tconst gizmoPos = this.root.getLocalPosition();\n\t\t\t\t\t\tconst cameraPos = this._camera.entity.getPosition();\n\t\t\t\t\t\treturn dir.sub2(cameraPos, gizmoPos).normalize();\n\t\t\t\t}\n\t\t\t\treturn dir.copy(this._camera.entity.forward).mulScalar(-1);\n\t\t}\n\t\tget cameraDir() {\n\t\t\t\tconst cameraPos = this._camera.entity.getPosition();\n\t\t\t\tconst gizmoPos = this.root.getLocalPosition();\n\t\t\t\treturn dir.sub2(cameraPos, gizmoPos).normalize();\n\t\t}\n\t\t_onPointerDown(e) {\n\t\t\t\tif (!this.enabled || document.pointerLockElement) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (!this.mouseButtons[e.button]) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst selection = this._getSelection(e.offsetX, e.offsetY);\n\t\t\t\tif (selection[0]) {\n\t\t\t\t\t\tif (this.preventDefault) {\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t}\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\t\t\t\tconst { canvas } = this._device;\n\t\t\t\tcanvas.setPointerCapture(e.pointerId);\n\t\t\t\tthis.fire(Gizmo.EVENT_POINTERDOWN, e.offsetX, e.offsetY, selection[0]);\n\t\t}\n\t\t_onPointerMove(e) {\n\t\t\t\tif (!this.enabled || document.pointerLockElement) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst selection = this._getSelection(e.offsetX, e.offsetY);\n\t\t\t\tif (selection[0]) {\n\t\t\t\t\t\tif (this.preventDefault) {\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t}\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\t\t\t\tthis.fire(Gizmo.EVENT_POINTERMOVE, e.offsetX, e.offsetY, selection[0]);\n\t\t}\n\t\t_onPointerUp(e) {\n\t\t\t\tif (!this.enabled || document.pointerLockElement) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (!this.mouseButtons[e.button]) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst selection = this._getSelection(e.offsetX, e.offsetY);\n\t\t\t\tif (selection[0]) {\n\t\t\t\t\t\tif (this.preventDefault) {\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t}\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\t\t\t\tconst { canvas } = this._device;\n\t\t\t\tcanvas.releasePointerCapture(e.pointerId);\n\t\t\t\tthis.fire(Gizmo.EVENT_POINTERUP, e.offsetX, e.offsetY, selection[0]);\n\t\t}\n\t\t_updatePosition() {\n\t\t\t\tposition.set(0, 0, 0);\n\t\t\t\tif (this._coordSpace === 'local') {\n\t\t\t\t\t\tposition.copy(this.nodes[this.nodes.length - 1].getPosition());\n\t\t\t\t} else {\n\t\t\t\t\t\tfor(let i = 0; i < this.nodes.length; i++){\n\t\t\t\t\t\t\t\tconst node = this.nodes[i];\n\t\t\t\t\t\t\t\tposition.add(node.getPosition());\n\t\t\t\t\t\t}\n\t\t\t\t\t\tposition.mulScalar(1.0 / (this.nodes.length || 1));\n\t\t\t\t}\n\t\t\t\tif (position.equalsApprox(this.root.getLocalPosition(), UPDATE_EPSILON$2)) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.root.setLocalPosition(position);\n\t\t\t\tthis.fire(Gizmo.EVENT_POSITIONUPDATE, position);\n\t\t\t\tthis._renderUpdate = true;\n\t\t}\n\t\t_updateRotation() {\n\t\t\t\trotation.set(0, 0, 0, 1);\n\t\t\t\tif (this._coordSpace === 'local' && this.nodes.length !== 0) {\n\t\t\t\t\t\trotation.copy(this.nodes[this.nodes.length - 1].getRotation());\n\t\t\t\t}\n\t\t\t\tif (rotation.equalsApprox(this.root.getRotation(), UPDATE_EPSILON$2)) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.root.setRotation(rotation);\n\t\t\t\tthis.fire(Gizmo.EVENT_ROTATIONUPDATE, rotation.getEulerAngles());\n\t\t\t\tthis._renderUpdate = true;\n\t\t}\n\t\t_updateScale() {\n\t\t\t\tif (this._camera.projection === PROJECTION_PERSPECTIVE) {\n\t\t\t\t\t\tconst gizmoPos = this.root.getLocalPosition();\n\t\t\t\t\t\tconst cameraPos = this._camera.entity.getPosition();\n\t\t\t\t\t\tconst dist = v.sub2(gizmoPos, cameraPos).dot(this._camera.entity.forward);\n\t\t\t\t\t\tthis._scale = Math.tan(0.5 * this._camera.fov * math.DEG_TO_RAD) * dist * PERS_SCALE_RATIO;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._scale = this._camera.orthoHeight * ORTHO_SCALE_RATIO;\n\t\t\t\t}\n\t\t\t\tthis._scale = Math.max(this._scale * this._size, MIN_SCALE);\n\t\t\t\tif (Math.abs(this._scale - this.root.getLocalScale().x) < UPDATE_EPSILON$2) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.root.setLocalScale(this._scale, this._scale, this._scale);\n\t\t\t\tthis.fire(Gizmo.EVENT_SCALEUPDATE, this._scale);\n\t\t\t\tthis._renderUpdate = true;\n\t\t}\n\t\t_getSelection(x, y) {\n\t\t\t\tconst start = this._camera.screenToWorld(x, y, 0);\n\t\t\t\tconst end = this._camera.screenToWorld(x, y, this._camera.farClip - this._camera.nearClip);\n\t\t\t\tconst dir = v.copy(end).sub(start).normalize();\n\t\t\t\tconst selection = [];\n\t\t\t\tfor(let i = 0; i < this.intersectShapes.length; i++){\n\t\t\t\t\t\tconst shape = this.intersectShapes[i];\n\t\t\t\t\t\tif (shape.disabled || !shape.entity.enabled) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst parentTM = shape.entity.getWorldTransform();\n\t\t\t\t\t\tfor(let j = 0; j < shape.triData.length; j++){\n\t\t\t\t\t\t\t\tconst { tris, transform, priority } = shape.triData[j];\n\t\t\t\t\t\t\t\tconst triWTM = m1.copy(parentTM).mul(transform);\n\t\t\t\t\t\t\t\tconst invTriWTM = m2.copy(triWTM).invert();\n\t\t\t\t\t\t\t\tinvTriWTM.transformPoint(start, ray$1.origin);\n\t\t\t\t\t\t\t\tinvTriWTM.transformVector(dir, ray$1.direction);\n\t\t\t\t\t\t\t\tray$1.direction.normalize();\n\t\t\t\t\t\t\t\tfor(let k = 0; k < tris.length; k++){\n\t\t\t\t\t\t\t\t\t\tif (tris[k].intersectsRay(ray$1, v)) {\n\t\t\t\t\t\t\t\t\t\t\t\tselection.push({\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdist: triWTM.transformPoint(v).sub(start).length(),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmeshInstances: shape.meshInstances,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tpriority: priority\n\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (selection.length) {\n\t\t\t\t\t\tselection.sort((s0, s1)=>{\n\t\t\t\t\t\t\t\tif (s0.priority !== 0 && s1.priority !== 0) {\n\t\t\t\t\t\t\t\t\t\treturn s1.priority - s0.priority;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn s0.dist - s1.dist;\n\t\t\t\t\t\t});\n\t\t\t\t\t\treturn selection[0].meshInstances;\n\t\t\t\t}\n\t\t\t\treturn [];\n\t\t}\n\t\tattach(nodes = []) {\n\t\t\t\tif (Array.isArray(nodes)) {\n\t\t\t\t\t\tif (nodes.length === 0) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.nodes = nodes;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.nodes = [\n\t\t\t\t\t\t\t\tnodes\n\t\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t\tthis._updatePosition();\n\t\t\t\tthis._updateRotation();\n\t\t\t\tthis._updateScale();\n\t\t\t\tthis.fire(Gizmo.EVENT_NODESATTACH);\n\t\t\t\tthis.enabled = true;\n\t\t}\n\t\tdetach() {\n\t\t\t\tthis.enabled = false;\n\t\t\t\tthis.fire(Gizmo.EVENT_NODESDETACH);\n\t\t\t\tthis.nodes = [];\n\t\t}\n\t\tprerender() {}\n\t\tupdate() {\n\t\t\t\tif (this._renderUpdate) {\n\t\t\t\t\t\tthis._renderUpdate = false;\n\t\t\t\t\t\tthis.fire(Gizmo.EVENT_RENDERUPDATE);\n\t\t\t\t}\n\t\t\t\tif (!this.enabled) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._updatePosition();\n\t\t\t\tthis._updateRotation();\n\t\t\t\tthis._updateScale();\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.detach();\n\t\t\t\tthis._device.canvas.removeEventListener('pointerdown', this._onPointerDown);\n\t\t\t\tthis._device.canvas.removeEventListener('pointermove', this._onPointerMove);\n\t\t\t\tthis._device.canvas.removeEventListener('pointerup', this._onPointerUp);\n\t\t\t\tthis._handles.forEach((handle)=>handle.off());\n\t\t\t\tthis.root.destroy();\n\t\t}\n}\n\nconst COLOR_RED = Object.freeze(new Color(1, 0.3, 0.3));\nconst COLOR_GREEN = Object.freeze(new Color(0.3, 1, 0.3));\nconst COLOR_BLUE = Object.freeze(new Color(0.3, 0.3, 1));\nObject.freeze(new Color(1, 1, 0.5));\nconst COLOR_GRAY = Object.freeze(new Color(0.5, 0.5, 0.5, 0.5));\nconst color4from3 = (color, a)=>{\n\t\treturn new Color(color.r, color.g, color.b, a);\n};\n\nconst v1$3 = new Vec3();\nconst v2$3 = new Vec3();\nconst point$3 = new Vec3();\nconst ray = new Ray();\nconst plane = new Plane();\nconst color$1 = new Color();\nconst AXES$2 = [\n\t\t'x',\n\t\t'y',\n\t\t'z'\n];\nclass TransformGizmo extends Gizmo {\n\t\tstatic{\n\t\t\t\tthis.EVENT_TRANSFORMSTART = 'transform:start';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_TRANSFORMMOVE = 'transform:move';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_TRANSFORMEND = 'transform:end';\n\t\t}\n\t\tconstructor(camera, layer, name = 'gizmo:transform'){\n\t\t\t\tsuper(camera, layer, name), this._theme = {\n\t\t\t\t\t\tshapeBase: {\n\t\t\t\t\t\t\t\tx: COLOR_RED.clone(),\n\t\t\t\t\t\t\t\ty: COLOR_GREEN.clone(),\n\t\t\t\t\t\t\t\tz: COLOR_BLUE.clone(),\n\t\t\t\t\t\t\t\txyz: new Color(0.8, 0.8, 0.8, 1),\n\t\t\t\t\t\t\t\tf: new Color(0.8, 0.8, 0.8, 1)\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshapeHover: {\n\t\t\t\t\t\t\t\tx: new Color().lerp(COLOR_RED, Color.WHITE, 0.75),\n\t\t\t\t\t\t\t\ty: new Color().lerp(COLOR_GREEN, Color.WHITE, 0.75),\n\t\t\t\t\t\t\t\tz: new Color().lerp(COLOR_BLUE, Color.WHITE, 0.75),\n\t\t\t\t\t\t\t\txyz: Color.WHITE.clone(),\n\t\t\t\t\t\t\t\tf: Color.WHITE.clone()\n\t\t\t\t\t\t},\n\t\t\t\t\t\tguideBase: {\n\t\t\t\t\t\t\t\tx: COLOR_RED.clone(),\n\t\t\t\t\t\t\t\ty: COLOR_GREEN.clone(),\n\t\t\t\t\t\t\t\tz: COLOR_BLUE.clone()\n\t\t\t\t\t\t},\n\t\t\t\t\t\tguideOcclusion: 0.8,\n\t\t\t\t\t\tdisabled: COLOR_GRAY.clone()\n\t\t\t\t}, this._rootStartPos = new Vec3(), this._rootStartRot = new Quat(), this._shapes = {}, this._shapeMap = new Map(), this._hovering = new Set(), this._hoverAxis = '', this._hoverIsPlane = false, this._selectedAxis = '', this._selectedIsPlane = false, this._selectionStartPoint = new Vec3(), this.snap = false, this.snapIncrement = 1, this.dragMode = 'selected';\n\t\t\t\tthis.on(Gizmo.EVENT_POINTERDOWN, (x, y, meshInstance)=>{\n\t\t\t\t\t\tconst shape = this._shapeMap.get(meshInstance);\n\t\t\t\t\t\tif (shape?.disabled) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this._dragging) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!meshInstance) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._hoverAxis = '';\n\t\t\t\t\t\tthis._hoverIsPlane = false;\n\t\t\t\t\t\tthis._selectedAxis = this._getAxis(meshInstance);\n\t\t\t\t\t\tthis._selectedIsPlane = this._getIsPlane(meshInstance);\n\t\t\t\t\t\tthis._rootStartPos.copy(this.root.getLocalPosition());\n\t\t\t\t\t\tthis._rootStartRot.copy(this.root.getRotation());\n\t\t\t\t\t\tconst point = this._screenToPoint(x, y);\n\t\t\t\t\t\tthis._selectionStartPoint.copy(point);\n\t\t\t\t\t\tthis.fire(TransformGizmo.EVENT_TRANSFORMSTART, point, x, y);\n\t\t\t\t});\n\t\t\t\tthis.on(Gizmo.EVENT_POINTERMOVE, (x, y, meshInstance)=>{\n\t\t\t\t\t\tconst shape = this._shapeMap.get(meshInstance);\n\t\t\t\t\t\tif (shape?.disabled) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._hover(meshInstance);\n\t\t\t\t\t\tif (!this._dragging) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst point = this._screenToPoint(x, y);\n\t\t\t\t\t\tthis.fire(TransformGizmo.EVENT_TRANSFORMMOVE, point, x, y);\n\t\t\t\t});\n\t\t\t\tthis.on(Gizmo.EVENT_POINTERUP, (_x, _y, meshInstance)=>{\n\t\t\t\t\t\tthis._hover(meshInstance);\n\t\t\t\t\t\tif (!this._dragging) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (meshInstance) {\n\t\t\t\t\t\t\t\tthis._hoverAxis = this._selectedAxis;\n\t\t\t\t\t\t\t\tthis._hoverIsPlane = this._selectedIsPlane;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._selectedAxis = '';\n\t\t\t\t\t\tthis._selectedIsPlane = false;\n\t\t\t\t\t\tthis.fire(TransformGizmo.EVENT_TRANSFORMEND);\n\t\t\t\t});\n\t\t\t\tthis.on(Gizmo.EVENT_NODESDETACH, ()=>{\n\t\t\t\t\t\tthis._hoverAxis = '';\n\t\t\t\t\t\tthis._hoverIsPlane = false;\n\t\t\t\t\t\tthis._hover();\n\t\t\t\t\t\tthis.fire(Gizmo.EVENT_POINTERUP);\n\t\t\t\t});\n\t\t}\n\t\tget theme() {\n\t\t\t\treturn this._theme;\n\t\t}\n\t\tset xAxisColor(value) {\n\t\t\t\tthis.setTheme({\n\t\t\t\t\t\tshapeBase: {\n\t\t\t\t\t\t\t\tx: value\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshapeHover: {\n\t\t\t\t\t\t\t\tx: color4from3(value, this.colorAlpha)\n\t\t\t\t\t\t},\n\t\t\t\t\t\tguideBase: {\n\t\t\t\t\t\t\t\tx: value\n\t\t\t\t\t\t},\n\t\t\t\t\t\tguideOcclusion: 1\n\t\t\t\t});\n\t\t}\n\t\tget xAxisColor() {\n\t\t\t\treturn this._theme.shapeBase.x;\n\t\t}\n\t\tset yAxisColor(value) {\n\t\t\t\tthis.setTheme({\n\t\t\t\t\t\tshapeBase: {\n\t\t\t\t\t\t\t\ty: value\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshapeHover: {\n\t\t\t\t\t\t\t\ty: color4from3(value, this.colorAlpha)\n\t\t\t\t\t\t},\n\t\t\t\t\t\tguideBase: {\n\t\t\t\t\t\t\t\ty: value\n\t\t\t\t\t\t},\n\t\t\t\t\t\tguideOcclusion: 1\n\t\t\t\t});\n\t\t}\n\t\tget yAxisColor() {\n\t\t\t\treturn this._theme.shapeBase.y;\n\t\t}\n\t\tset zAxisColor(value) {\n\t\t\t\tthis.setTheme({\n\t\t\t\t\t\tshapeBase: {\n\t\t\t\t\t\t\t\tz: value\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshapeHover: {\n\t\t\t\t\t\t\t\tz: color4from3(value, this.colorAlpha)\n\t\t\t\t\t\t},\n\t\t\t\t\t\tguideBase: {\n\t\t\t\t\t\t\t\tz: value\n\t\t\t\t\t\t},\n\t\t\t\t\t\tguideOcclusion: 1\n\t\t\t\t});\n\t\t}\n\t\tget zAxisColor() {\n\t\t\t\treturn this._theme.shapeBase.z;\n\t\t}\n\t\tset colorAlpha(value) {\n\t\t\t\tthis.setTheme({\n\t\t\t\t\t\tshapeHover: {\n\t\t\t\t\t\t\t\tx: color4from3(this._theme.shapeHover.x, value),\n\t\t\t\t\t\t\t\ty: color4from3(this._theme.shapeHover.y, value),\n\t\t\t\t\t\t\t\tz: color4from3(this._theme.shapeHover.z, value),\n\t\t\t\t\t\t\t\txyz: color4from3(this._theme.shapeHover.xyz, value),\n\t\t\t\t\t\t\t\tf: color4from3(this._theme.shapeHover.f, value)\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\tget colorAlpha() {\n\t\t\t\treturn (this._theme.shapeHover.x.a + this._theme.shapeHover.y.a + this._theme.shapeHover.z.a + this._theme.shapeHover.xyz.a + this._theme.shapeHover.f.a) / 5;\n\t\t}\n\t\tget _dragging() {\n\t\t\t\treturn !this._hoverAxis && !!this._selectedAxis;\n\t\t}\n\t\t_getAxis(meshInstance) {\n\t\t\t\tif (!meshInstance) {\n\t\t\t\t\t\treturn '';\n\t\t\t\t}\n\t\t\t\treturn meshInstance.node.name.split(':')[1];\n\t\t}\n\t\t_getIsPlane(meshInstance) {\n\t\t\t\tif (!meshInstance) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn meshInstance.node.name.indexOf('plane') !== -1;\n\t\t}\n\t\t_hover(meshInstance) {\n\t\t\t\tif (this._dragging) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst remove = new Set(this._hovering);\n\t\t\t\tlet changed = false;\n\t\t\t\tconst add = (axis)=>{\n\t\t\t\t\t\tif (remove.has(axis)) {\n\t\t\t\t\t\t\t\tremove.delete(axis);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._hovering.add(axis);\n\t\t\t\t\t\t\t\tthis._shapes[axis]?.hover(true);\n\t\t\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tthis._hoverAxis = this._getAxis(meshInstance);\n\t\t\t\tthis._hoverIsPlane = this._getIsPlane(meshInstance);\n\t\t\t\tif (this._hoverAxis) {\n\t\t\t\t\t\tif (this._hoverAxis === 'xyz') {\n\t\t\t\t\t\t\t\tadd('x');\n\t\t\t\t\t\t\t\tadd('y');\n\t\t\t\t\t\t\t\tadd('z');\n\t\t\t\t\t\t\t\tadd('xyz');\n\t\t\t\t\t\t} else if (this._hoverIsPlane) {\n\t\t\t\t\t\t\t\tswitch(this._hoverAxis){\n\t\t\t\t\t\t\t\t\t\tcase 'x':\n\t\t\t\t\t\t\t\t\t\t\t\tadd('y');\n\t\t\t\t\t\t\t\t\t\t\t\tadd('z');\n\t\t\t\t\t\t\t\t\t\t\t\tadd('yz');\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\tcase 'y':\n\t\t\t\t\t\t\t\t\t\t\t\tadd('x');\n\t\t\t\t\t\t\t\t\t\t\t\tadd('z');\n\t\t\t\t\t\t\t\t\t\t\t\tadd('xz');\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\tcase 'z':\n\t\t\t\t\t\t\t\t\t\t\t\tadd('x');\n\t\t\t\t\t\t\t\t\t\t\t\tadd('y');\n\t\t\t\t\t\t\t\t\t\t\t\tadd('xy');\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tadd(this._hoverAxis);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor (const axis of remove){\n\t\t\t\t\t\tthis._hovering.delete(axis);\n\t\t\t\t\t\tthis._shapes[axis]?.hover(false);\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t\tif (changed) {\n\t\t\t\t\t\tthis._renderUpdate = true;\n\t\t\t\t}\n\t\t}\n\t\t_createRay(mouseWPos) {\n\t\t\t\tif (this._camera.projection === PROJECTION_PERSPECTIVE) {\n\t\t\t\t\t\tray.origin.copy(this._camera.entity.getPosition());\n\t\t\t\t\t\tray.direction.sub2(mouseWPos, ray.origin).normalize();\n\t\t\t\t\t\treturn ray;\n\t\t\t\t}\n\t\t\t\tconst orthoDepth = this._camera.farClip - this._camera.nearClip;\n\t\t\t\tray.origin.sub2(mouseWPos, v1$3.copy(this._camera.entity.forward).mulScalar(orthoDepth));\n\t\t\t\tray.direction.copy(this._camera.entity.forward);\n\t\t\t\treturn ray;\n\t\t}\n\t\t_createPlane(axis, isFacing, isLine) {\n\t\t\t\tconst facingDir = v1$3.copy(this.facingDir);\n\t\t\t\tconst normal = plane.normal.set(0, 0, 0);\n\t\t\t\tif (isFacing) {\n\t\t\t\t\t\tnormal.copy(this._camera.entity.forward).mulScalar(-1);\n\t\t\t\t} else {\n\t\t\t\t\t\tnormal[axis] = 1;\n\t\t\t\t\t\tthis._rootStartRot.transformVector(normal, normal);\n\t\t\t\t\t\tif (isLine) {\n\t\t\t\t\t\t\t\tv2$3.cross(normal, facingDir).normalize();\n\t\t\t\t\t\t\t\tnormal.cross(v2$3, normal).normalize();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn plane.setFromPointNormal(this._rootStartPos, normal);\n\t\t}\n\t\t_dirFromAxis(axis, dir) {\n\t\t\t\tif (axis === 'f') {\n\t\t\t\t\t\tdir.copy(this._camera.entity.forward).mulScalar(-1);\n\t\t\t\t} else {\n\t\t\t\t\t\tdir.set(0, 0, 0);\n\t\t\t\t\t\tdir[axis] = 1;\n\t\t\t\t}\n\t\t\t\treturn dir;\n\t\t}\n\t\t_projectToAxis(point, axis) {\n\t\t\t\tv1$3.set(0, 0, 0);\n\t\t\t\tv1$3[axis] = 1;\n\t\t\t\tpoint.copy(v1$3.mulScalar(v1$3.dot(point)));\n\t\t\t\tconst v = point[axis];\n\t\t\t\tpoint.set(0, 0, 0);\n\t\t\t\tpoint[axis] = v;\n\t\t}\n\t\t_screenToPoint(x, y, isFacing = false, isLine = false) {\n\t\t\t\tconst mouseWPos = this._camera.screenToWorld(x, y, 1);\n\t\t\t\tconst axis = this._selectedAxis;\n\t\t\t\tconst ray = this._createRay(mouseWPos);\n\t\t\t\tconst plane = this._createPlane(axis, isFacing, isLine);\n\t\t\t\tif (!plane.intersectsRay(ray, point$3)) {\n\t\t\t\t\t\treturn point$3;\n\t\t\t\t}\n\t\t\t\treturn point$3;\n\t\t}\n\t\t_drawGuideLines(pos, rot, activeAxis, activeIsPlane) {\n\t\t\t\tfor (const axis of AXES$2){\n\t\t\t\t\t\tif (activeAxis === 'xyz') {\n\t\t\t\t\t\t\t\tthis._drawSpanLine(pos, rot, axis);\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (activeIsPlane) {\n\t\t\t\t\t\t\t\tif (axis !== activeAxis) {\n\t\t\t\t\t\t\t\t\t\tthis._drawSpanLine(pos, rot, axis);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (axis === activeAxis) {\n\t\t\t\t\t\t\t\t\t\tthis._drawSpanLine(pos, rot, axis);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_drawSpanLine(pos, rot, axis) {\n\t\t\t\tconst dir = this._dirFromAxis(axis, v1$3);\n\t\t\t\tconst base = this._theme.guideBase[axis];\n\t\t\t\tconst from = v1$3.copy(dir).mulScalar(this._camera.farClip - this._camera.nearClip);\n\t\t\t\tconst to = v2$3.copy(from).mulScalar(-1);\n\t\t\t\trot.transformVector(from, from).add(pos);\n\t\t\t\trot.transformVector(to, to).add(pos);\n\t\t\t\tif (this._theme.guideOcclusion < 1) {\n\t\t\t\t\t\tconst occluded = color$1.copy(base);\n\t\t\t\t\t\toccluded.a *= 1 - this._theme.guideOcclusion;\n\t\t\t\t\t\tthis._app.drawLine(from, to, occluded, false, this._layer);\n\t\t\t\t}\n\t\t\t\tif (base.a !== 0) {\n\t\t\t\t\t\tthis._app.drawLine(from, to, base, true);\n\t\t\t\t}\n\t\t}\n\t\t_createTransform() {\n\t\t\t\tfor(const key in this._shapes){\n\t\t\t\t\t\tconst shape = this._shapes[key];\n\t\t\t\t\t\tthis.root.addChild(shape.entity);\n\t\t\t\t\t\tthis.intersectShapes.push(shape);\n\t\t\t\t\t\tfor(let i = 0; i < shape.meshInstances.length; i++){\n\t\t\t\t\t\t\t\tthis._shapeMap.set(shape.meshInstances[i], shape);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tenableShape(shapeAxis, enabled) {\n\t\t\t\tif (shapeAxis === 'face') {\n\t\t\t\t\t\tshapeAxis = 'f';\n\t\t\t\t}\n\t\t\t\tconst shape = this._shapes[shapeAxis];\n\t\t\t\tif (!shape) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tshape.disabled = !enabled;\n\t\t}\n\t\tisShapeEnabled(shapeAxis) {\n\t\t\t\tif (shapeAxis === 'face') {\n\t\t\t\t\t\tshapeAxis = 'f';\n\t\t\t\t}\n\t\t\t\tconst shape = this._shapes[shapeAxis];\n\t\t\t\tif (!shape) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn !shape.disabled;\n\t\t}\n\t\tsetTheme(partial) {\n\t\t\t\tconst theme = {\n\t\t\t\t\t\t...this._theme,\n\t\t\t\t\t\t...partial\n\t\t\t\t};\n\t\t\t\tif (typeof theme !== 'object' || typeof theme.shapeBase !== 'object' || typeof theme.shapeHover !== 'object' || typeof theme.guideBase !== 'object') {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tfor(const axis in theme.shapeBase){\n\t\t\t\t\t\tif (theme.shapeBase[axis] instanceof Color) {\n\t\t\t\t\t\t\t\tthis._theme.shapeBase[axis].copy(theme.shapeBase[axis]);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor(const axis in theme.shapeHover){\n\t\t\t\t\t\tif (theme.shapeHover[axis] instanceof Color) {\n\t\t\t\t\t\t\t\tthis._theme.shapeHover[axis].copy(theme.shapeHover[axis]);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor(const axis in theme.guideBase){\n\t\t\t\t\t\tif (theme.guideBase[axis] instanceof Color) {\n\t\t\t\t\t\t\t\tthis._theme.guideBase[axis].copy(theme.guideBase[axis]);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (typeof theme.guideOcclusion === 'number') {\n\t\t\t\t\t\tthis._theme.guideOcclusion = math.clamp(theme.guideOcclusion, 0, 1);\n\t\t\t\t}\n\t\t\t\tif (theme.disabled instanceof Color) {\n\t\t\t\t\t\tthis._theme.disabled.copy(theme.disabled);\n\t\t\t\t}\n\t\t\t\tfor(const name in this._shapes){\n\t\t\t\t\t\tthis._shapes[name].hover(!!this._hoverAxis);\n\t\t\t\t}\n\t\t}\n\t\tprerender() {\n\t\t\t\tsuper.prerender();\n\t\t\t\tif (!this.enabled) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst gizmoPos = this.root.getLocalPosition();\n\t\t\t\tconst gizmoRot = this.root.getRotation();\n\t\t\t\tconst activeAxis = this._hoverAxis || this._selectedAxis;\n\t\t\t\tconst activeIsPlane = this._hoverIsPlane || this._selectedIsPlane;\n\t\t\t\tthis._drawGuideLines(gizmoPos, gizmoRot, activeAxis, activeIsPlane);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tsuper.destroy();\n\t\t\t\tfor(const key in this._shapes){\n\t\t\t\t\t\tthis._shapes[key].destroy();\n\t\t\t\t}\n\t\t}\n}\n\nconst tmpV1$4 = new Vec3();\nconst tmpV2$3 = new Vec3();\nconst tmpV3$1 = new Vec3();\nclass TriData {\n\t\tconstructor(geometry, priority = 0){\n\t\t\t\tthis._priority = 0;\n\t\t\t\tthis._transform = new Mat4();\n\t\t\t\tthis.tris = [];\n\t\t\t\tthis.fromGeometry(geometry);\n\t\t\t\tthis._priority = priority;\n\t\t}\n\t\tget transform() {\n\t\t\t\treturn this._transform;\n\t\t}\n\t\tget priority() {\n\t\t\t\treturn this._priority;\n\t\t}\n\t\tsetTransform(pos = new Vec3(), rot = new Quat(), scale = new Vec3()) {\n\t\t\t\tthis.transform.setTRS(pos, rot, scale);\n\t\t}\n\t\tfromGeometry(geometry) {\n\t\t\t\tif (!geometry || !(geometry instanceof Geometry)) {\n\t\t\t\t\t\tthrow new Error('No geometry provided.');\n\t\t\t\t}\n\t\t\t\tconst positions = geometry.positions ?? [];\n\t\t\t\tconst indices = geometry.indices ?? [];\n\t\t\t\tthis.tris = [];\n\t\t\t\tfor(let k = 0; k < indices.length; k += 3){\n\t\t\t\t\t\tconst i1 = indices[k];\n\t\t\t\t\t\tconst i2 = indices[k + 1];\n\t\t\t\t\t\tconst i3 = indices[k + 2];\n\t\t\t\t\t\ttmpV1$4.set(positions[i1 * 3], positions[i1 * 3 + 1], positions[i1 * 3 + 2]);\n\t\t\t\t\t\ttmpV2$3.set(positions[i2 * 3], positions[i2 * 3 + 1], positions[i2 * 3 + 2]);\n\t\t\t\t\t\ttmpV3$1.set(positions[i3 * 3], positions[i3 * 3 + 1], positions[i3 * 3 + 2]);\n\t\t\t\t\t\tconst tri = new Tri(tmpV1$4, tmpV2$3, tmpV3$1);\n\t\t\t\t\t\tthis.tris.push(tri);\n\t\t\t\t}\n\t\t}\n}\n\nconst unlitShader = {\n\t\tuniqueName: 'gizmo-unlit',\n\t\tattributes: {\n\t\t\t\tvertex_position: SEMANTIC_POSITION\n\t\t},\n\t\tvertexGLSL: `\n\t\tattribute vec3 vertex_position;\n\t\n\t\tuniform mat4 matrix_model;\n\t\tuniform mat4 matrix_viewProjection;\n\t\n\t\tvoid main(void) {\n\t\t\tgl_Position = matrix_viewProjection * matrix_model * vec4(vertex_position, 1.0);\n\t\t\tgl_Position.z = clamp(gl_Position.z, -abs(gl_Position.w), abs(gl_Position.w));\n\t\t}\n\t`,\n\t\tfragmentGLSL: `\n\t\t#include \"gammaPS\"\n\t\n\t\tprecision highp float;\n\t\n\t\tuniform vec4 uColor;\n\t\tuniform float uDepth;\n\t\tvoid main(void) {\n\t\t\tif (uColor.a < 1.0 / 255.0) {\n\t\t\t\tdiscard;\n\t\t\t}\n\t\t\tgl_FragColor = vec4(gammaCorrectOutput(decodeGamma(uColor)), uColor.a);\n\t\t\t#if DEPTH_WRITE == 1\n\t\t\t\tgl_FragDepth = uDepth;\n\t\t\t#endif\n\t\t}\n\t`,\n\t\tvertexWGSL: `\n\t\tattribute vertex_position: vec3f;\n\t\tuniform matrix_model: mat4x4f;\n\t\tuniform matrix_viewProjection: mat4x4f;\n\t\t@vertex\n\t\tfn vertexMain(input: VertexInput) -> VertexOutput {\n\t\t\tvar output: VertexOutput;\n\t\t\tlet pos = vec4f(input.vertex_position, 1.0);\n\t\t\toutput.position = uniform.matrix_viewProjection * uniform.matrix_model * pos;\n\t\t\toutput.position.z = clamp(output.position.z, -abs(output.position.w), abs(output.position.w));\n\t\t\treturn output;\n\t\t}\n\t`,\n\t\tfragmentWGSL: `\n\t\t#include \"gammaPS\"\n\t\tuniform uColor: vec4f;\n\t\tuniform uDepth: f32;\n\t\t@fragment\n\t\tfn fragmentMain(input: FragmentInput) -> FragmentOutput {\n\t\t\tvar output: FragmentOutput;\n\t\t\tif (uniform.uColor.a < 1.0 / 255.0) {\n\t\t\t\tdiscard;\n\t\t\t}\n\t\t\toutput.color = vec4f(gammaCorrectOutput(decodeGamma(uniform.uColor)), uniform.uColor.a);\n\t\t\t#if DEPTH_WRITE == 1\n\t\t\t\toutput.fragDepth = uniform.uDepth;\n\t\t\t#endif\n\t\t\treturn output;\n\t\t}\n\t`\n};\n\nconst tmpG = new Geometry();\ntmpG.positions = [];\ntmpG.normals = [];\nclass Shape {\n\t\tconstructor(device, name, args){\n\t\t\t\tthis._position = new Vec3();\n\t\t\t\tthis._rotation = new Vec3();\n\t\t\t\tthis._scale = new Vec3(1, 1, 1);\n\t\t\t\tthis._layers = [];\n\t\t\t\tthis._material = new ShaderMaterial(unlitShader);\n\t\t\t\tthis._disabled = false;\n\t\t\t\tthis._visible = true;\n\t\t\t\tthis._defaultColor = Color.WHITE;\n\t\t\t\tthis._hoverColor = Color.BLACK;\n\t\t\t\tthis._disabledColor = COLOR_GRAY;\n\t\t\t\tthis._cull = CULLFACE_BACK;\n\t\t\t\tthis._depth = -1;\n\t\t\t\tthis.triData = [];\n\t\t\t\tthis.meshInstances = [];\n\t\t\t\tthis.device = device;\n\t\t\t\tthis.axis = args.axis ?? 'x';\n\t\t\t\tif (args.position instanceof Vec3) {\n\t\t\t\t\t\tthis._position.copy(args.position);\n\t\t\t\t}\n\t\t\t\tif (args.rotation instanceof Vec3) {\n\t\t\t\t\t\tthis._rotation.copy(args.rotation);\n\t\t\t\t}\n\t\t\t\tif (args.scale instanceof Vec3) {\n\t\t\t\t\t\tthis._scale.copy(args.scale);\n\t\t\t\t}\n\t\t\t\tthis._disabled = args.disabled ?? this._disabled;\n\t\t\t\tthis._visible = args.visible ?? this._visible;\n\t\t\t\tthis._layers = args.layers ?? this._layers;\n\t\t\t\tif (args.defaultColor instanceof Color) {\n\t\t\t\t\t\tthis._defaultColor = args.defaultColor;\n\t\t\t\t}\n\t\t\t\tif (args.hoverColor instanceof Color) {\n\t\t\t\t\t\tthis._hoverColor = args.hoverColor;\n\t\t\t\t}\n\t\t\t\tif (args.disabledColor instanceof Color) {\n\t\t\t\t\t\tthis._disabledColor = args.disabledColor;\n\t\t\t\t}\n\t\t\t\tthis._cull = args.cull ?? this._cull;\n\t\t\t\tthis._depth = args.depth ?? this._depth;\n\t\t\t\tthis.entity = new Entity(`${name}:${this.axis}`);\n\t\t\t\tthis.entity.setLocalPosition(this._position);\n\t\t\t\tthis.entity.setLocalEulerAngles(this._rotation);\n\t\t\t\tthis.entity.setLocalScale(this._scale);\n\t\t}\n\t\tset disabled(value) {\n\t\t\t\tthis._disabled = value ?? false;\n\t\t\t\tthis.hover(false);\n\t\t}\n\t\tget disabled() {\n\t\t\t\treturn this._disabled;\n\t\t}\n\t\tset visible(value) {\n\t\t\t\tif (value === this._visible) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < this.meshInstances.length; i++){\n\t\t\t\t\t\tthis.meshInstances[i].visible = value;\n\t\t\t\t}\n\t\t\t\tthis._visible = value;\n\t\t}\n\t\tget visible() {\n\t\t\t\treturn this._visible;\n\t\t}\n\t\t_createRenderComponent(entity, meshes) {\n\t\t\t\tconst color = this._disabled ? this._disabledColor : this._defaultColor;\n\t\t\t\tthis._material.setDefine('DEPTH_WRITE', this._depth > 0 ? '1' : '0');\n\t\t\t\tthis._material.setParameter('uDepth', this._depth);\n\t\t\t\tthis._material.setParameter('uColor', color.toArray());\n\t\t\t\tthis._material.cull = this._cull;\n\t\t\t\tthis._material.blendType = BLEND_NORMAL;\n\t\t\t\tthis._material.update();\n\t\t\t\tconst meshInstances = [];\n\t\t\t\tfor(let i = 0; i < meshes.length; i++){\n\t\t\t\t\t\tconst mi = new MeshInstance(meshes[i], this._material);\n\t\t\t\t\t\tmi.cull = false;\n\t\t\t\t\t\tmeshInstances.push(mi);\n\t\t\t\t\t\tthis.meshInstances.push(mi);\n\t\t\t\t}\n\t\t\t\tentity.addComponent('render', {\n\t\t\t\t\t\tmeshInstances: meshInstances,\n\t\t\t\t\t\tlayers: this._layers,\n\t\t\t\t\t\tcastShadows: false\n\t\t\t\t});\n\t\t}\n\t\t_update() {\n\t\t\t\tthis.entity.setLocalPosition(this._position);\n\t\t\t\tthis.entity.setLocalEulerAngles(this._rotation);\n\t\t\t\tthis.entity.setLocalScale(this._scale);\n\t\t}\n\t\thover(state) {\n\t\t\t\tconst color = this._disabled ? this._disabledColor : state ? this._hoverColor : this._defaultColor;\n\t\t\t\tthis._material.setParameter('uColor', color.toArray());\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.entity.destroy();\n\t\t}\n}\n\nconst UPDATE_EPSILON$1 = 1e-6;\nclass PlaneShape extends Shape {\n\t\tconstructor(device, args = {}){\n\t\t\t\tsuper(device, 'plane', args), this._cull = CULLFACE_NONE, this._size = 0.16, this._gap = 0, this._flipped = new Vec3();\n\t\t\t\tthis._size = args.size ?? this._size;\n\t\t\t\tthis._gap = args.gap ?? this._gap;\n\t\t\t\tthis.triData = [\n\t\t\t\t\t\tnew TriData(new PlaneGeometry())\n\t\t\t\t];\n\t\t\t\tthis._createRenderComponent(this.entity, [\n\t\t\t\t\t\tMesh.fromGeometry(this.device, new PlaneGeometry())\n\t\t\t\t]);\n\t\t\t\tthis._update();\n\t\t}\n\t\tset size(value) {\n\t\t\t\tthis._size = value ?? this._size;\n\t\t\t\tthis._update();\n\t\t}\n\t\tget size() {\n\t\t\t\treturn this._size;\n\t\t}\n\t\tset gap(value) {\n\t\t\t\tthis._gap = value ?? this._gap;\n\t\t\t\tthis._update();\n\t\t}\n\t\tget gap() {\n\t\t\t\treturn this._gap;\n\t\t}\n\t\tset flipped(value) {\n\t\t\t\tif (this._flipped.distance(value) < UPDATE_EPSILON$1) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._flipped.copy(value);\n\t\t\t\tthis._update();\n\t\t}\n\t\tget flipped() {\n\t\t\t\treturn this._flipped;\n\t\t}\n\t\t_update() {\n\t\t\t\tconst offset = this._size / 2 + this._gap;\n\t\t\t\tthis._position.set(this._flipped.x ? -offset : offset, this._flipped.y ? -offset : offset, this._flipped.z ? -offset : offset);\n\t\t\t\tthis._position[this.axis] = 0;\n\t\t\t\tthis.entity.setLocalPosition(this._position);\n\t\t\t\tthis.entity.setLocalEulerAngles(this._rotation);\n\t\t\t\tthis.entity.setLocalScale(this._size, this._size, this._size);\n\t\t}\n}\n\nconst tmpV1$3 = new Vec3();\nconst tmpV2$2 = new Vec3();\nconst tmpQ1$1 = new Quat();\nclass ArrowShape extends Shape {\n\t\tconstructor(device, args = {}){\n\t\t\t\tsuper(device, 'arrow', args), this._gap = 0, this._lineThickness = 0.02, this._lineLength = 0.5, this._arrowThickness = 0.12, this._arrowLength = 0.18, this._tolerance = 0.1;\n\t\t\t\tthis._gap = args.gap ?? this._gap;\n\t\t\t\tthis._lineThickness = args.lineThickness ?? this._lineThickness;\n\t\t\t\tthis._lineLength = args.lineLength ?? this._lineLength;\n\t\t\t\tthis._arrowThickness = args.arrowThickness ?? this._arrowThickness;\n\t\t\t\tthis._arrowLength = args.arrowLength ?? this._arrowLength;\n\t\t\t\tthis._tolerance = args.tolerance ?? this._tolerance;\n\t\t\t\tthis.triData = [\n\t\t\t\t\t\tnew TriData(new ConeGeometry()),\n\t\t\t\t\t\tnew TriData(new CylinderGeometry(), 1)\n\t\t\t\t];\n\t\t\t\tthis._head = new Entity(`head:${this.axis}`);\n\t\t\t\tthis.entity.addChild(this._head);\n\t\t\t\tthis._createRenderComponent(this._head, [\n\t\t\t\t\t\tMesh.fromGeometry(this.device, new ConeGeometry())\n\t\t\t\t]);\n\t\t\t\tthis._line = new Entity(`line:${this.axis}`);\n\t\t\t\tthis.entity.addChild(this._line);\n\t\t\t\tthis._createRenderComponent(this._line, [\n\t\t\t\t\t\tMesh.fromGeometry(this.device, new CylinderGeometry())\n\t\t\t\t]);\n\t\t\t\tthis._update();\n\t\t}\n\t\tset gap(value) {\n\t\t\t\tthis._gap = value ?? this._gap;\n\t\t\t\tthis._update();\n\t\t}\n\t\tget gap() {\n\t\t\t\treturn this._gap;\n\t\t}\n\t\tset lineThickness(value) {\n\t\t\t\tthis._lineThickness = value ?? this._lineThickness;\n\t\t\t\tthis._update();\n\t\t}\n\t\tget lineThickness() {\n\t\t\t\treturn this._lineThickness;\n\t\t}\n\t\tset lineLength(value) {\n\t\t\t\tthis._lineLength = value ?? this._lineLength;\n\t\t\t\tthis._update();\n\t\t}\n\t\tget lineLength() {\n\t\t\t\treturn this._lineLength;\n\t\t}\n\t\tset arrowThickness(value) {\n\t\t\t\tthis._arrowThickness = value ?? this._arrowThickness;\n\t\t\t\tthis._update();\n\t\t}\n\t\tget arrowThickness() {\n\t\t\t\treturn this._arrowThickness;\n\t\t}\n\t\tset arrowLength(value) {\n\t\t\t\tthis._arrowLength = value ?? this._arrowLength;\n\t\t\t\tthis._update();\n\t\t}\n\t\tget arrowLength() {\n\t\t\t\treturn this._arrowLength;\n\t\t}\n\t\tset tolerance(value) {\n\t\t\t\tthis._tolerance = value;\n\t\t\t\tthis._update();\n\t\t}\n\t\tget tolerance() {\n\t\t\t\treturn this._tolerance;\n\t\t}\n\t\t_update() {\n\t\t\t\ttmpV1$3.set(0, this._gap + this._arrowLength * 0.5 + this._lineLength, 0);\n\t\t\t\ttmpQ1$1.set(0, 0, 0, 1);\n\t\t\t\ttmpV2$2.set(this._arrowThickness, this._arrowLength, this._arrowThickness);\n\t\t\t\tthis.triData[0].setTransform(tmpV1$3, tmpQ1$1, tmpV2$2);\n\t\t\t\ttmpV1$3.set(0, this._gap + this._lineLength * 0.5, 0);\n\t\t\t\ttmpQ1$1.set(0, 0, 0, 1);\n\t\t\t\ttmpV2$2.set(this._lineThickness + this._tolerance, this._lineLength, this._lineThickness + this._tolerance);\n\t\t\t\tthis.triData[1].setTransform(tmpV1$3, tmpQ1$1, tmpV2$2);\n\t\t\t\tthis._head.setLocalPosition(0, this._gap + this._arrowLength * 0.5 + this._lineLength, 0);\n\t\t\t\tthis._head.setLocalScale(this._arrowThickness, this._arrowLength, this._arrowThickness);\n\t\t\t\tthis._line.setLocalPosition(0, this._gap + this._lineLength * 0.5, 0);\n\t\t\t\tthis._line.setLocalScale(this._lineThickness, this._lineLength, this._lineThickness);\n\t\t}\n}\n\nclass SphereShape extends Shape {\n\t\tconstructor(device, args = {}){\n\t\t\t\tsuper(device, 'sphereCenter', args), this._radius = 0.03;\n\t\t\t\tthis._radius = args.radius ?? this._radius;\n\t\t\t\tthis.triData = [\n\t\t\t\t\t\tnew TriData(new SphereGeometry(), 2)\n\t\t\t\t];\n\t\t\t\tthis._createRenderComponent(this.entity, [\n\t\t\t\t\t\tMesh.fromGeometry(this.device, new SphereGeometry({\n\t\t\t\t\t\t\t\tlatitudeBands: 32,\n\t\t\t\t\t\t\t\tlongitudeBands: 32\n\t\t\t\t\t\t}))\n\t\t\t\t]);\n\t\t\t\tthis._update();\n\t\t}\n\t\tset radius(value) {\n\t\t\t\tthis._radius = value ?? this._radius;\n\t\t\t\tthis._update();\n\t\t}\n\t\tget radius() {\n\t\t\t\treturn this._radius;\n\t\t}\n\t\t_update() {\n\t\t\t\tconst scale = this._radius * 2;\n\t\t\t\tthis.entity.setLocalScale(scale, scale, scale);\n\t\t}\n}\n\nconst v1$2 = new Vec3();\nconst v2$2 = new Vec3();\nconst point$2 = new Vec3();\nconst delta$1 = new Vec3();\nconst q$1 = new Quat();\nconst GLANCE_EPSILON$1 = 0.01;\nconst AXES$1 = [\n\t\t'x',\n\t\t'y',\n\t\t'z'\n];\nclass TranslateGizmo extends TransformGizmo {\n\t\tconstructor(camera, layer){\n\t\t\t\tsuper(camera, layer, 'gizmo:translate'), this._shapes = {\n\t\t\t\t\t\txyz: new SphereShape(this._device, {\n\t\t\t\t\t\t\t\taxis: 'xyz',\n\t\t\t\t\t\t\t\tlayers: [\n\t\t\t\t\t\t\t\t\t\tthis._layer.id\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tdefaultColor: this._theme.shapeBase.xyz,\n\t\t\t\t\t\t\t\thoverColor: this._theme.shapeHover.xyz,\n\t\t\t\t\t\t\t\tdisabledColor: this._theme.disabled\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tyz: new PlaneShape(this._device, {\n\t\t\t\t\t\t\t\taxis: 'x',\n\t\t\t\t\t\t\t\tlayers: [\n\t\t\t\t\t\t\t\t\t\tthis._layer.id\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\trotation: new Vec3(0, 0, -90),\n\t\t\t\t\t\t\t\tdefaultColor: this._theme.shapeBase.x,\n\t\t\t\t\t\t\t\thoverColor: this._theme.shapeHover.x,\n\t\t\t\t\t\t\t\tdisabledColor: this._theme.disabled,\n\t\t\t\t\t\t\t\tdepth: 1\n\t\t\t\t\t\t}),\n\t\t\t\t\t\txz: new PlaneShape(this._device, {\n\t\t\t\t\t\t\t\taxis: 'y',\n\t\t\t\t\t\t\t\tlayers: [\n\t\t\t\t\t\t\t\t\t\tthis._layer.id\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\trotation: new Vec3(0, 0, 0),\n\t\t\t\t\t\t\t\tdefaultColor: this._theme.shapeBase.y,\n\t\t\t\t\t\t\t\thoverColor: this._theme.shapeHover.y,\n\t\t\t\t\t\t\t\tdisabledColor: this._theme.disabled,\n\t\t\t\t\t\t\t\tdepth: 1\n\t\t\t\t\t\t}),\n\t\t\t\t\t\txy: new PlaneShape(this._device, {\n\t\t\t\t\t\t\t\taxis: 'z',\n\t\t\t\t\t\t\t\tlayers: [\n\t\t\t\t\t\t\t\t\t\tthis._layer.id\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\trotation: new Vec3(90, 0, 0),\n\t\t\t\t\t\t\t\tdefaultColor: this._theme.shapeBase.z,\n\t\t\t\t\t\t\t\thoverColor: this._theme.shapeHover.z,\n\t\t\t\t\t\t\t\tdisabledColor: this._theme.disabled,\n\t\t\t\t\t\t\t\tdepth: 1\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tx: new ArrowShape(this._device, {\n\t\t\t\t\t\t\t\taxis: 'x',\n\t\t\t\t\t\t\t\tlayers: [\n\t\t\t\t\t\t\t\t\t\tthis._layer.id\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\trotation: new Vec3(0, 0, -90),\n\t\t\t\t\t\t\t\tdefaultColor: this._theme.shapeBase.x,\n\t\t\t\t\t\t\t\thoverColor: this._theme.shapeHover.x,\n\t\t\t\t\t\t\t\tdisabledColor: this._theme.disabled\n\t\t\t\t\t\t}),\n\t\t\t\t\t\ty: new ArrowShape(this._device, {\n\t\t\t\t\t\t\t\taxis: 'y',\n\t\t\t\t\t\t\t\tlayers: [\n\t\t\t\t\t\t\t\t\t\tthis._layer.id\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\trotation: new Vec3(0, 0, 0),\n\t\t\t\t\t\t\t\tdefaultColor: this._theme.shapeBase.y,\n\t\t\t\t\t\t\t\thoverColor: this._theme.shapeHover.y,\n\t\t\t\t\t\t\t\tdisabledColor: this._theme.disabled\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tz: new ArrowShape(this._device, {\n\t\t\t\t\t\t\t\taxis: 'z',\n\t\t\t\t\t\t\t\tlayers: [\n\t\t\t\t\t\t\t\t\t\tthis._layer.id\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\trotation: new Vec3(90, 0, 0),\n\t\t\t\t\t\t\t\tdefaultColor: this._theme.shapeBase.z,\n\t\t\t\t\t\t\t\thoverColor: this._theme.shapeHover.z,\n\t\t\t\t\t\t\t\tdisabledColor: this._theme.disabled\n\t\t\t\t\t\t})\n\t\t\t\t}, this._nodeLocalPositions = new Map(), this._nodePositions = new Map(), this.snapIncrement = 1, this.flipPlanes = true;\n\t\t\t\tthis._createTransform();\n\t\t\t\tthis.on(TransformGizmo.EVENT_TRANSFORMSTART, ()=>{\n\t\t\t\t\t\tthis._storeNodePositions();\n\t\t\t\t\t\tthis._drag(true);\n\t\t\t\t});\n\t\t\t\tthis.on(TransformGizmo.EVENT_TRANSFORMMOVE, (point)=>{\n\t\t\t\t\t\tconst translateDelta = delta$1.copy(point).sub(this._selectionStartPoint);\n\t\t\t\t\t\tif (this.snap) {\n\t\t\t\t\t\t\t\ttranslateDelta.mulScalar(1 / this.snapIncrement);\n\t\t\t\t\t\t\t\ttranslateDelta.round();\n\t\t\t\t\t\t\t\ttranslateDelta.mulScalar(this.snapIncrement);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._setNodePositions(translateDelta);\n\t\t\t\t});\n\t\t\t\tthis.on(TransformGizmo.EVENT_TRANSFORMEND, ()=>{\n\t\t\t\t\t\tthis._drag(false);\n\t\t\t\t});\n\t\t\t\tthis.on(TransformGizmo.EVENT_NODESDETACH, ()=>{\n\t\t\t\t\t\tthis._nodeLocalPositions.clear();\n\t\t\t\t\t\tthis._nodePositions.clear();\n\t\t\t\t});\n\t\t}\n\t\tset axisGap(value) {\n\t\t\t\tthis._setArrowProp('gap', value);\n\t\t}\n\t\tget axisGap() {\n\t\t\t\treturn this._shapes.x.gap;\n\t\t}\n\t\tset axisLineThickness(value) {\n\t\t\t\tthis._setArrowProp('lineThickness', value);\n\t\t}\n\t\tget axisLineThickness() {\n\t\t\t\treturn this._shapes.x.lineThickness;\n\t\t}\n\t\tset axisLineLength(value) {\n\t\t\t\tthis._setArrowProp('lineLength', value);\n\t\t}\n\t\tget axisLineLength() {\n\t\t\t\treturn this._shapes.x.lineLength;\n\t\t}\n\t\tset axisLineTolerance(value) {\n\t\t\t\tthis._setArrowProp('tolerance', value);\n\t\t}\n\t\tget axisLineTolerance() {\n\t\t\t\treturn this._shapes.x.tolerance;\n\t\t}\n\t\tset axisArrowThickness(value) {\n\t\t\t\tthis._setArrowProp('arrowThickness', value);\n\t\t}\n\t\tget axisArrowThickness() {\n\t\t\t\treturn this._shapes.x.arrowThickness;\n\t\t}\n\t\tset axisArrowLength(value) {\n\t\t\t\tthis._setArrowProp('arrowLength', value);\n\t\t}\n\t\tget axisArrowLength() {\n\t\t\t\treturn this._shapes.x.arrowLength;\n\t\t}\n\t\tset axisPlaneSize(value) {\n\t\t\t\tthis._setPlaneProp('size', value);\n\t\t}\n\t\tget axisPlaneSize() {\n\t\t\t\treturn this._shapes.yz.size;\n\t\t}\n\t\tset axisPlaneGap(value) {\n\t\t\t\tthis._setPlaneProp('gap', value);\n\t\t}\n\t\tget axisPlaneGap() {\n\t\t\t\treturn this._shapes.yz.gap;\n\t\t}\n\t\tset axisCenterSize(value) {\n\t\t\t\tthis._shapes.xyz.radius = value;\n\t\t}\n\t\tget axisCenterSize() {\n\t\t\t\treturn this._shapes.xyz.radius;\n\t\t}\n\t\tset flipShapes(value) {\n\t\t\t\tthis.flipPlanes = value;\n\t\t}\n\t\tget flipShapes() {\n\t\t\t\treturn this.flipPlanes;\n\t\t}\n\t\t_setArrowProp(prop, value) {\n\t\t\t\tthis._shapes.x[prop] = value;\n\t\t\t\tthis._shapes.y[prop] = value;\n\t\t\t\tthis._shapes.z[prop] = value;\n\t\t}\n\t\t_setPlaneProp(prop, value) {\n\t\t\t\tthis._shapes.yz[prop] = value;\n\t\t\t\tthis._shapes.xz[prop] = value;\n\t\t\t\tthis._shapes.xy[prop] = value;\n\t\t}\n\t\t_shapesLookAtCamera() {\n\t\t\t\tconst cameraDir = this.cameraDir;\n\t\t\t\tlet changed = false;\n\t\t\t\tlet dot, enabled;\n\t\t\t\tdot = cameraDir.dot(this.root.right);\n\t\t\t\tenabled = 1 - Math.abs(dot) > GLANCE_EPSILON$1;\n\t\t\t\tif (this._shapes.x.entity.enabled !== enabled) {\n\t\t\t\t\t\tthis._shapes.x.entity.enabled = enabled;\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t\tdot = cameraDir.dot(this.root.up);\n\t\t\t\tenabled = 1 - Math.abs(dot) > GLANCE_EPSILON$1;\n\t\t\t\tif (this._shapes.y.entity.enabled !== enabled) {\n\t\t\t\t\t\tthis._shapes.y.entity.enabled = enabled;\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t\tdot = cameraDir.dot(this.root.forward);\n\t\t\t\tenabled = 1 - Math.abs(dot) > GLANCE_EPSILON$1;\n\t\t\t\tif (this._shapes.z.entity.enabled !== enabled) {\n\t\t\t\t\t\tthis._shapes.z.entity.enabled = enabled;\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t\tlet flipped;\n\t\t\t\tv1$2.cross(cameraDir, this.root.right);\n\t\t\t\tenabled = 1 - v1$2.length() > GLANCE_EPSILON$1;\n\t\t\t\tif (this._shapes.yz.entity.enabled !== enabled) {\n\t\t\t\t\t\tthis._shapes.yz.entity.enabled = enabled;\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t\tflipped = this.flipPlanes ? v2$2.set(0, +(v1$2.dot(this.root.forward) < 0), +(v1$2.dot(this.root.up) < 0)) : Vec3.ZERO;\n\t\t\t\tif (!this._shapes.yz.flipped.equals(flipped)) {\n\t\t\t\t\t\tthis._shapes.yz.flipped = flipped;\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t\tv1$2.cross(cameraDir, this.root.forward);\n\t\t\t\tenabled = 1 - v1$2.length() > GLANCE_EPSILON$1;\n\t\t\t\tif (this._shapes.xy.entity.enabled !== enabled) {\n\t\t\t\t\t\tthis._shapes.xy.entity.enabled = enabled;\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t\tflipped = this.flipPlanes ? v2$2.set(+(v1$2.dot(this.root.up) < 0), +(v1$2.dot(this.root.right) > 0), 0) : Vec3.ZERO;\n\t\t\t\tif (!this._shapes.xy.flipped.equals(flipped)) {\n\t\t\t\t\t\tthis._shapes.xy.flipped = flipped;\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t\tv1$2.cross(cameraDir, this.root.up);\n\t\t\t\tenabled = 1 - v1$2.length() > GLANCE_EPSILON$1;\n\t\t\t\tif (this._shapes.xz.entity.enabled !== enabled) {\n\t\t\t\t\t\tthis._shapes.xz.entity.enabled = enabled;\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t\tflipped = this.flipPlanes ? v2$2.set(+(v1$2.dot(this.root.forward) > 0), 0, +(v1$2.dot(this.root.right) > 0)) : Vec3.ZERO;\n\t\t\t\tif (!this._shapes.xz.flipped.equals(flipped)) {\n\t\t\t\t\t\tthis._shapes.xz.flipped = flipped;\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t\tif (changed) {\n\t\t\t\t\t\tthis._renderUpdate = true;\n\t\t\t\t}\n\t\t}\n\t\t_drag(state) {\n\t\t\t\tfor(const axis in this._shapes){\n\t\t\t\t\t\tconst shape = this._shapes[axis];\n\t\t\t\t\t\tswitch(this.dragMode){\n\t\t\t\t\t\t\t\tcase 'show':\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcase 'hide':\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tshape.visible = !state;\n\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcase 'selected':\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tif (this._selectedAxis === 'xyz') {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tshape.visible = state ? axis.length === 1 : true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tif (this._selectedIsPlane) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tshape.visible = state ? axis.length === 1 && !axis.includes(this._selectedAxis) : true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tshape.visible = state ? axis === this._selectedAxis : true;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._renderUpdate = true;\n\t\t}\n\t\t_storeNodePositions() {\n\t\t\t\tfor(let i = 0; i < this.nodes.length; i++){\n\t\t\t\t\t\tconst node = this.nodes[i];\n\t\t\t\t\t\tthis._nodeLocalPositions.set(node, node.getLocalPosition().clone());\n\t\t\t\t\t\tthis._nodePositions.set(node, node.getPosition().clone());\n\t\t\t\t}\n\t\t}\n\t\t_setNodePositions(translateDelta) {\n\t\t\t\tfor(let i = 0; i < this.nodes.length; i++){\n\t\t\t\t\t\tconst node = this.nodes[i];\n\t\t\t\t\t\tif (this._coordSpace === 'local') {\n\t\t\t\t\t\t\t\tconst pos = this._nodeLocalPositions.get(node);\n\t\t\t\t\t\t\t\tif (!pos) {\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tv1$2.copy(translateDelta);\n\t\t\t\t\t\t\t\tnode.parent?.getWorldTransform().getScale(v2$2);\n\t\t\t\t\t\t\t\tv2$2.x = 1 / v2$2.x;\n\t\t\t\t\t\t\t\tv2$2.y = 1 / v2$2.y;\n\t\t\t\t\t\t\t\tv2$2.z = 1 / v2$2.z;\n\t\t\t\t\t\t\t\tq$1.copy(node.getLocalRotation()).transformVector(v1$2, v1$2);\n\t\t\t\t\t\t\t\tv1$2.mul(v2$2);\n\t\t\t\t\t\t\t\tnode.setLocalPosition(v1$2.add(pos));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst pos = this._nodePositions.get(node);\n\t\t\t\t\t\t\t\tif (!pos) {\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tnode.setPosition(v1$2.copy(translateDelta).add(pos));\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._updatePosition();\n\t\t}\n\t\t_screenToPoint(x, y) {\n\t\t\t\tconst mouseWPos = this._camera.screenToWorld(x, y, 1);\n\t\t\t\tconst axis = this._selectedAxis;\n\t\t\t\tconst isPlane = this._selectedIsPlane;\n\t\t\t\tconst ray = this._createRay(mouseWPos);\n\t\t\t\tconst plane = this._createPlane(axis, axis === 'xyz', !isPlane);\n\t\t\t\tif (!plane.intersectsRay(ray, point$2)) {\n\t\t\t\t\t\treturn point$2;\n\t\t\t\t}\n\t\t\t\tq$1.copy(this._rootStartRot).invert().transformVector(point$2, point$2);\n\t\t\t\tif (!isPlane && axis !== 'xyz') {\n\t\t\t\t\t\tthis._projectToAxis(point$2, axis);\n\t\t\t\t}\n\t\t\t\treturn point$2;\n\t\t}\n\t\t_drawGuideLines(pos, rot, activeAxis, activeIsPlane) {\n\t\t\t\tfor (const axis of AXES$1){\n\t\t\t\t\t\tif (this._dragging || activeAxis === 'xyz') {\n\t\t\t\t\t\t\t\tthis._drawSpanLine(pos, rot, axis);\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (activeIsPlane) {\n\t\t\t\t\t\t\t\tif (axis !== activeAxis) {\n\t\t\t\t\t\t\t\t\t\tthis._drawSpanLine(pos, rot, axis);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (axis === activeAxis) {\n\t\t\t\t\t\t\t\t\t\tthis._drawSpanLine(pos, rot, axis);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tprerender() {\n\t\t\t\tsuper.prerender();\n\t\t\t\tif (!this.enabled) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._shapesLookAtCamera();\n\t\t}\n}\n\nconst TORUS_RENDER_SEGMENTS = 80;\nconst TORUS_INTERSECT_SEGMENTS = 20;\nclass ArcShape extends Shape {\n\t\tconstructor(device, args = {}){\n\t\t\t\tsuper(device, 'disk', args), this._tubeRadius = 0.01, this._ringRadius = 0.5, this._sectorAngle = 360, this._tolerance = 0.05;\n\t\t\t\tthis._tubeRadius = args.tubeRadius ?? this._tubeRadius;\n\t\t\t\tthis._ringRadius = args.ringRadius ?? this._ringRadius;\n\t\t\t\tthis._sectorAngle = args.sectorAngle ?? this._sectorAngle;\n\t\t\t\tthis._triDataCache = [\n\t\t\t\t\t\tnew TriData(this._createTorusGeometry(this._sectorAngle)),\n\t\t\t\t\t\tnew TriData(this._createTorusGeometry(360))\n\t\t\t\t];\n\t\t\t\tthis.triData = [\n\t\t\t\t\t\tthis._triDataCache[0]\n\t\t\t\t];\n\t\t\t\tthis._createRenderComponent(this.entity, [\n\t\t\t\t\t\tthis._createTorusMesh(this._sectorAngle),\n\t\t\t\t\t\tthis._createTorusMesh(360)\n\t\t\t\t]);\n\t\t\t\tthis.show('sector');\n\t\t\t\tthis._update();\n\t\t}\n\t\t_createTorusGeometry(sectorAngle) {\n\t\t\t\treturn new TorusGeometry({\n\t\t\t\t\t\ttubeRadius: this._tubeRadius + this._tolerance,\n\t\t\t\t\t\tringRadius: this._ringRadius,\n\t\t\t\t\t\tsectorAngle: sectorAngle,\n\t\t\t\t\t\tsegments: TORUS_INTERSECT_SEGMENTS\n\t\t\t\t});\n\t\t}\n\t\t_createTorusMesh(sectorAngle) {\n\t\t\t\tconst geom = new TorusGeometry({\n\t\t\t\t\t\ttubeRadius: this._tubeRadius,\n\t\t\t\t\t\tringRadius: this._ringRadius,\n\t\t\t\t\t\tsectorAngle: sectorAngle,\n\t\t\t\t\t\tsegments: TORUS_RENDER_SEGMENTS\n\t\t\t\t});\n\t\t\t\treturn Mesh.fromGeometry(this.device, geom);\n\t\t}\n\t\tset tubeRadius(value) {\n\t\t\t\tthis._tubeRadius = value ?? this._tubeRadius;\n\t\t\t\tthis._update();\n\t\t}\n\t\tget tubeRadius() {\n\t\t\t\treturn this._tubeRadius;\n\t\t}\n\t\tset ringRadius(value) {\n\t\t\t\tthis._ringRadius = value ?? this._ringRadius;\n\t\t\t\tthis._update();\n\t\t}\n\t\tget ringRadius() {\n\t\t\t\treturn this._ringRadius;\n\t\t}\n\t\tset tolerance(value) {\n\t\t\t\tthis._tolerance = value ?? this._tolerance;\n\t\t\t\tthis._update();\n\t\t}\n\t\tget tolerance() {\n\t\t\t\treturn this._tolerance;\n\t\t}\n\t\t_update() {\n\t\t\t\tthis._triDataCache[0].fromGeometry(this._createTorusGeometry(this._sectorAngle));\n\t\t\t\tthis._triDataCache[1].fromGeometry(this._createTorusGeometry(360));\n\t\t\t\tthis.meshInstances[0].mesh = this._createTorusMesh(this._sectorAngle);\n\t\t\t\tthis.meshInstances[1].mesh = this._createTorusMesh(360);\n\t\t}\n\t\tshow(state) {\n\t\t\t\tswitch(state){\n\t\t\t\t\t\tcase 'sector':\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tthis.triData[0] = this._triDataCache[0];\n\t\t\t\t\t\t\t\t\t\tthis.meshInstances[0].visible = true;\n\t\t\t\t\t\t\t\t\t\tthis.meshInstances[1].visible = false;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\tcase 'ring':\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tthis.triData[0] = this._triDataCache[1];\n\t\t\t\t\t\t\t\t\t\tthis.meshInstances[0].visible = false;\n\t\t\t\t\t\t\t\t\t\tthis.meshInstances[1].visible = true;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\tcase 'none':\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tthis.meshInstances[0].visible = false;\n\t\t\t\t\t\t\t\t\t\tthis.meshInstances[1].visible = false;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n}\n\nconst tmpV1$2 = new Vec3();\nclass MeshLine {\n\t\tconstructor(app, layer, args = {}){\n\t\t\t\tthis._thickness = 0.02;\n\t\t\t\tthis._material = new ShaderMaterial(unlitShader);\n\t\t\t\tthis.entity = new Entity('mesh-line');\n\t\t\t\tthis._thickness = args.thickness ?? this._thickness;\n\t\t\t\tthis._material.blendState = BlendState.ALPHABLEND;\n\t\t\t\tthis._material.setDefine('DEPTH_WRITE', '1');\n\t\t\t\tthis._material.setParameter('uDepth', 0);\n\t\t\t\tthis._material.update();\n\t\t\t\tconst mesh = Mesh.fromGeometry(app.graphicsDevice, new CylinderGeometry());\n\t\t\t\tconst meshInstance = new MeshInstance(mesh, this._material);\n\t\t\t\tthis.entity.addComponent('render', {\n\t\t\t\t\t\tmeshInstances: [\n\t\t\t\t\t\t\t\tmeshInstance\n\t\t\t\t\t\t],\n\t\t\t\t\t\tlayers: [\n\t\t\t\t\t\t\t\tlayer.id\n\t\t\t\t\t\t]\n\t\t\t\t});\n\t\t}\n\t\tset thickness(value) {\n\t\t\t\tthis._thickness = value ?? this._thickness;\n\t\t}\n\t\tget thickness() {\n\t\t\t\treturn this._thickness;\n\t\t}\n\t\tdraw(from, to, scale, color) {\n\t\t\t\tthis._material.setParameter('uColor', color.toArray());\n\t\t\t\tconst dir = tmpV1$2.sub2(to, from).normalize();\n\t\t\t\tconst elev = Math.atan2(-dir.y, Math.sqrt(dir.x * dir.x + dir.z * dir.z)) * math.RAD_TO_DEG;\n\t\t\t\tconst azim = Math.atan2(-dir.x, -dir.z) * math.RAD_TO_DEG;\n\t\t\t\tthis.entity.setLocalEulerAngles(-elev + 90, azim, 0);\n\t\t\t\tconst length = from.distance(to) * scale;\n\t\t\t\tthis.entity.setLocalPosition(dir.mulScalar(0.5 * length).add(from));\n\t\t\t\tthis.entity.setLocalScale(this._thickness * scale, length, this._thickness * scale);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis._material.destroy();\n\t\t\t\tthis.entity.destroy();\n\t\t}\n}\n\nconst point$1 = new Vec3();\nconst v1$1 = new Vec3();\nconst v2$1 = new Vec3();\nconst v3 = new Vec3();\nconst q1 = new Quat();\nconst q2 = new Quat();\nconst color = new Color();\nconst RING_FACING_EPSILON = 1e-4;\nconst UPDATE_EPSILON = 1e-6;\nconst AXES = [\n\t\t'x',\n\t\t'y',\n\t\t'z'\n];\nclass RotateGizmo extends TransformGizmo {\n\t\tconstructor(camera, layer){\n\t\t\t\tsuper(camera, layer, 'gizmo:rotate'), this._shapes = {\n\t\t\t\t\t\tz: new ArcShape(this._device, {\n\t\t\t\t\t\t\t\taxis: 'z',\n\t\t\t\t\t\t\t\tlayers: [\n\t\t\t\t\t\t\t\t\t\tthis._layer.id\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\trotation: new Vec3(90, 0, 90),\n\t\t\t\t\t\t\t\tdefaultColor: this._theme.shapeBase.z,\n\t\t\t\t\t\t\t\thoverColor: this._theme.shapeHover.z,\n\t\t\t\t\t\t\t\tdisabledColor: this._theme.disabled,\n\t\t\t\t\t\t\t\tsectorAngle: 180\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tx: new ArcShape(this._device, {\n\t\t\t\t\t\t\t\taxis: 'x',\n\t\t\t\t\t\t\t\tlayers: [\n\t\t\t\t\t\t\t\t\t\tthis._layer.id\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\trotation: new Vec3(0, 0, -90),\n\t\t\t\t\t\t\t\tdefaultColor: this._theme.shapeBase.x,\n\t\t\t\t\t\t\t\thoverColor: this._theme.shapeHover.x,\n\t\t\t\t\t\t\t\tdisabledColor: this._theme.disabled,\n\t\t\t\t\t\t\t\tsectorAngle: 180\n\t\t\t\t\t\t}),\n\t\t\t\t\t\ty: new ArcShape(this._device, {\n\t\t\t\t\t\t\t\taxis: 'y',\n\t\t\t\t\t\t\t\tlayers: [\n\t\t\t\t\t\t\t\t\t\tthis._layer.id\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\trotation: new Vec3(0, 0, 0),\n\t\t\t\t\t\t\t\tdefaultColor: this._theme.shapeBase.y,\n\t\t\t\t\t\t\t\thoverColor: this._theme.shapeHover.y,\n\t\t\t\t\t\t\t\tdisabledColor: this._theme.disabled,\n\t\t\t\t\t\t\t\tsectorAngle: 180\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tf: new ArcShape(this._device, {\n\t\t\t\t\t\t\t\taxis: 'f',\n\t\t\t\t\t\t\t\tlayers: [\n\t\t\t\t\t\t\t\t\t\tthis._layer.id\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tdefaultColor: this._theme.shapeBase.f,\n\t\t\t\t\t\t\t\thoverColor: this._theme.shapeHover.f,\n\t\t\t\t\t\t\t\tdisabledColor: this._theme.disabled,\n\t\t\t\t\t\t\t\tringRadius: 0.55\n\t\t\t\t\t\t}),\n\t\t\t\t\t\txyz: new SphereShape(this._device, {\n\t\t\t\t\t\t\t\taxis: 'xyz',\n\t\t\t\t\t\t\t\tlayers: [\n\t\t\t\t\t\t\t\t\t\tthis._layer.id\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tdefaultColor: this._theme.shapeBase.xyz,\n\t\t\t\t\t\t\t\thoverColor: this._theme.shapeHover.xyz,\n\t\t\t\t\t\t\t\tdisabledColor: this._theme.disabled,\n\t\t\t\t\t\t\t\tradius: 0.5\n\t\t\t\t\t\t})\n\t\t\t\t}, this._selectionStartAngle = 0, this._nodeLocalRotations = new Map(), this._nodeRotations = new Map(), this._nodeOffsets = new Map(), this._screenPos = new Vec2(), this._screenStartPos = new Vec2(), this._guideAngleStart = new Vec3(), this._guideAngleEnd = new Vec3(), this._facingDir = new Vec3(), this.snapIncrement = 5, this.rotationMode = 'absolute';\n\t\t\t\tthis.setTheme({\n\t\t\t\t\t\tshapeBase: {\n\t\t\t\t\t\t\t\txyz: new Color(0, 0, 0, 0)\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshapeHover: {\n\t\t\t\t\t\t\t\txyz: new Color(1, 1, 1, 0.2)\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tthis._createTransform();\n\t\t\t\tthis._guideAngleLines = [\n\t\t\t\t\t\tnew MeshLine(this._app, this._layer),\n\t\t\t\t\t\tnew MeshLine(this._app, this._layer)\n\t\t\t\t];\n\t\t\t\tthis._guideAngleLines.forEach((line)=>{\n\t\t\t\t\t\tthis._app.root.addChild(line.entity);\n\t\t\t\t\t\tline.entity.enabled = false;\n\t\t\t\t});\n\t\t\t\tthis.on(TransformGizmo.EVENT_TRANSFORMSTART, (point, x, y)=>{\n\t\t\t\t\t\tthis._screenPos.set(x, y);\n\t\t\t\t\t\tthis._screenStartPos.set(x, y);\n\t\t\t\t\t\tthis._selectionStartAngle = this._calculateArcAngle(point, x, y);\n\t\t\t\t\t\tthis._storeNodeRotations();\n\t\t\t\t\t\tthis._storeGuidePoints();\n\t\t\t\t\t\tthis._drag(true);\n\t\t\t\t\t\tthis._angleGuide(true);\n\t\t\t\t});\n\t\t\t\tthis.on(TransformGizmo.EVENT_TRANSFORMMOVE, (point, x, y)=>{\n\t\t\t\t\t\tconst axis = this._selectedAxis;\n\t\t\t\t\t\tif (!axis) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._screenPos.set(x, y);\n\t\t\t\t\t\tif (axis === 'xyz') {\n\t\t\t\t\t\t\t\tconst facingDir = v1$1.copy(this.facingDir);\n\t\t\t\t\t\t\t\tconst delta = v2$1.copy(point).sub(this._selectionStartPoint);\n\t\t\t\t\t\t\t\tconst angleAxis = v1$1.cross(facingDir, delta).normalize();\n\t\t\t\t\t\t\t\tconst angleDelta = this._screenPos.distance(this._screenStartPos);\n\t\t\t\t\t\t\t\tthis._setNodeRotations(axis, angleAxis, angleDelta);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tlet angleDelta = this._calculateArcAngle(point, x, y) - this._selectionStartAngle;\n\t\t\t\t\t\t\t\tif (this.snap) {\n\t\t\t\t\t\t\t\t\t\tangleDelta = Math.round(angleDelta / this.snapIncrement) * this.snapIncrement;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst angleAxis = this._dirFromAxis(axis, v1$1);\n\t\t\t\t\t\t\t\tthis._setNodeRotations(axis, angleAxis, angleDelta);\n\t\t\t\t\t\t\t\tthis._updateGuidePoints(angleDelta);\n\t\t\t\t\t\t\t\tthis._angleGuide(true);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tthis.on(TransformGizmo.EVENT_TRANSFORMEND, ()=>{\n\t\t\t\t\t\tthis._drag(false);\n\t\t\t\t\t\tthis._angleGuide(false);\n\t\t\t\t});\n\t\t\t\tthis.on(TransformGizmo.EVENT_NODESDETACH, ()=>{\n\t\t\t\t\t\tthis._nodeLocalRotations.clear();\n\t\t\t\t\t\tthis._nodeRotations.clear();\n\t\t\t\t\t\tthis._nodeOffsets.clear();\n\t\t\t\t});\n\t\t}\n\t\tset xyzTubeRadius(value) {\n\t\t\t\tthis._setDiskProp('tubeRadius', value);\n\t\t}\n\t\tget xyzTubeRadius() {\n\t\t\t\treturn this._shapes.x.tubeRadius;\n\t\t}\n\t\tset xyzRingRadius(value) {\n\t\t\t\tthis._setDiskProp('ringRadius', value);\n\t\t}\n\t\tget xyzRingRadius() {\n\t\t\t\treturn this._shapes.x.ringRadius;\n\t\t}\n\t\tset faceTubeRadius(value) {\n\t\t\t\tthis._shapes.f.tubeRadius = value;\n\t\t}\n\t\tget faceTubeRadius() {\n\t\t\t\treturn this._shapes.f.tubeRadius;\n\t\t}\n\t\tset faceRingRadius(value) {\n\t\t\t\tthis._shapes.f.ringRadius = value;\n\t\t}\n\t\tget faceRingRadius() {\n\t\t\t\treturn this._shapes.f.ringRadius;\n\t\t}\n\t\tset centerRadius(value) {\n\t\t\t\tthis._shapes.xyz.radius = value;\n\t\t}\n\t\tget centerRadius() {\n\t\t\t\treturn this._shapes.xyz.radius;\n\t\t}\n\t\tset ringTolerance(value) {\n\t\t\t\tthis._setDiskProp('tolerance', value);\n\t\t\t\tthis._shapes.f.tolerance = value;\n\t\t}\n\t\tget ringTolerance() {\n\t\t\t\treturn this._shapes.x.tolerance;\n\t\t}\n\t\tset angleGuideThickness(value) {\n\t\t\t\tthis._guideAngleLines[0].thickness = value;\n\t\t\t\tthis._guideAngleLines[1].thickness = value;\n\t\t}\n\t\tget angleGuideThickness() {\n\t\t\t\treturn this._guideAngleLines[0].thickness;\n\t\t}\n\t\tset orbitRotation(value) {\n\t\t\t\tthis.rotationMode = value ? 'orbit' : 'absolute';\n\t\t}\n\t\tget orbitRotation() {\n\t\t\t\treturn this.rotationMode === 'orbit';\n\t\t}\n\t\t_setDiskProp(prop, value) {\n\t\t\t\tthis._shapes.x[prop] = value;\n\t\t\t\tthis._shapes.y[prop] = value;\n\t\t\t\tthis._shapes.z[prop] = value;\n\t\t}\n\t\t_storeGuidePoints() {\n\t\t\t\tconst gizmoPos = this.root.getLocalPosition();\n\t\t\t\tconst axis = this._selectedAxis;\n\t\t\t\tconst isFacing = axis === 'f';\n\t\t\t\tconst scale = isFacing ? this.faceRingRadius : this.xyzRingRadius;\n\t\t\t\tthis._guideAngleStart.copy(this._selectionStartPoint).sub(gizmoPos).normalize();\n\t\t\t\tthis._guideAngleStart.mulScalar(scale);\n\t\t\t\tthis._guideAngleEnd.copy(this._guideAngleStart);\n\t\t}\n\t\t_updateGuidePoints(angleDelta) {\n\t\t\t\tconst axis = this._selectedAxis;\n\t\t\t\tconst isFacing = axis === 'f';\n\t\t\t\tif (isFacing) {\n\t\t\t\t\t\tv1$1.copy(this.facingDir);\n\t\t\t\t} else {\n\t\t\t\t\t\tv1$1.set(0, 0, 0);\n\t\t\t\t\t\tv1$1[axis] = 1;\n\t\t\t\t\t\tthis._rootStartRot.transformVector(v1$1, v1$1);\n\t\t\t\t}\n\t\t\t\tq1.setFromAxisAngle(v1$1, angleDelta);\n\t\t\t\tq1.transformVector(this._guideAngleStart, this._guideAngleEnd);\n\t\t\t\tthis._renderUpdate = true;\n\t\t}\n\t\t_angleGuide(state) {\n\t\t\t\tconst axis = this._selectedAxis;\n\t\t\t\tif (state && this.dragMode !== 'show' && axis !== 'xyz') {\n\t\t\t\t\t\tconst gizmoPos = this.root.getLocalPosition();\n\t\t\t\t\t\tconst baseColor = this._theme.shapeHover[axis];\n\t\t\t\t\t\tconst startColor = color.copy(baseColor);\n\t\t\t\t\t\tstartColor.a *= 0.3;\n\t\t\t\t\t\tthis._guideAngleLines[0].draw(gizmoPos, v1$1.copy(this._guideAngleStart).add(gizmoPos), this._scale, startColor);\n\t\t\t\t\t\tthis._guideAngleLines[1].draw(gizmoPos, v1$1.copy(this._guideAngleEnd).add(gizmoPos), this._scale, baseColor);\n\t\t\t\t\t\tthis._guideAngleLines[0].entity.enabled = true;\n\t\t\t\t\t\tthis._guideAngleLines[1].entity.enabled = true;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._guideAngleLines[0].entity.enabled = false;\n\t\t\t\t\t\tthis._guideAngleLines[1].entity.enabled = false;\n\t\t\t\t}\n\t\t}\n\t\t_shapesLookAtCamera() {\n\t\t\t\tif (this._camera.projection === PROJECTION_PERSPECTIVE) {\n\t\t\t\t\t\tconst dir = this._camera.entity.getPosition().sub(this.root.getPosition()).normalize();\n\t\t\t\t\t\tconst elev = Math.atan2(-dir.y, Math.sqrt(dir.x * dir.x + dir.z * dir.z)) * math.RAD_TO_DEG;\n\t\t\t\t\t\tconst azim = Math.atan2(-dir.x, -dir.z) * math.RAD_TO_DEG;\n\t\t\t\t\t\tthis._shapes.f.entity.setEulerAngles(-elev + 90, azim, 0);\n\t\t\t\t} else {\n\t\t\t\t\t\tq1.copy(this._camera.entity.getRotation()).getEulerAngles(v1$1);\n\t\t\t\t\t\tthis._shapes.f.entity.setEulerAngles(v1$1);\n\t\t\t\t\t\tthis._shapes.f.entity.rotateLocal(-90, 0, 0);\n\t\t\t\t}\n\t\t\t\tlet angle, dot, sector;\n\t\t\t\tconst facingDir = v1$1.copy(this.facingDir);\n\t\t\t\tq1.copy(this.root.getRotation()).invert().transformVector(facingDir, facingDir);\n\t\t\t\tangle = Math.atan2(facingDir.z, facingDir.y) * math.RAD_TO_DEG;\n\t\t\t\tthis._shapes.x.entity.setLocalEulerAngles(0, angle - 90, -90);\n\t\t\t\tangle = Math.atan2(facingDir.x, facingDir.z) * math.RAD_TO_DEG;\n\t\t\t\tthis._shapes.y.entity.setLocalEulerAngles(0, angle, 0);\n\t\t\t\tangle = Math.atan2(facingDir.y, facingDir.x) * math.RAD_TO_DEG;\n\t\t\t\tthis._shapes.z.entity.setLocalEulerAngles(90, 0, angle + 90);\n\t\t\t\tif (!this._dragging) {\n\t\t\t\t\t\tdot = facingDir.dot(this.root.right);\n\t\t\t\t\t\tsector = 1 - Math.abs(dot) > RING_FACING_EPSILON;\n\t\t\t\t\t\tthis._shapes.x.show(sector ? 'sector' : 'ring');\n\t\t\t\t\t\tdot = facingDir.dot(this.root.up);\n\t\t\t\t\t\tsector = 1 - Math.abs(dot) > RING_FACING_EPSILON;\n\t\t\t\t\t\tthis._shapes.y.show(sector ? 'sector' : 'ring');\n\t\t\t\t\t\tdot = facingDir.dot(this.root.forward);\n\t\t\t\t\t\tsector = 1 - Math.abs(dot) > RING_FACING_EPSILON;\n\t\t\t\t\t\tthis._shapes.z.show(sector ? 'sector' : 'ring');\n\t\t\t\t}\n\t\t\t\tif (!facingDir.equalsApprox(this._facingDir, UPDATE_EPSILON)) {\n\t\t\t\t\t\tthis._facingDir.copy(facingDir);\n\t\t\t\t\t\tthis._renderUpdate = true;\n\t\t\t\t}\n\t\t}\n\t\t_drag(state) {\n\t\t\t\tfor(const axis in this._shapes){\n\t\t\t\t\t\tconst shape = this._shapes[axis];\n\t\t\t\t\t\tif (!(shape instanceof ArcShape)) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tswitch(this.dragMode){\n\t\t\t\t\t\t\t\tcase 'show':\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcase 'hide':\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tshape.show(state ? axis === this._selectedAxis ? 'ring' : 'none' : 'sector');\n\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcase 'selected':\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tshape.show(state ? axis === this._selectedAxis ? 'ring' : 'sector' : 'sector');\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._renderUpdate = true;\n\t\t}\n\t\t_storeNodeRotations() {\n\t\t\t\tconst gizmoPos = this.root.getLocalPosition();\n\t\t\t\tfor(let i = 0; i < this.nodes.length; i++){\n\t\t\t\t\t\tconst node = this.nodes[i];\n\t\t\t\t\t\tthis._nodeLocalRotations.set(node, node.getLocalRotation().clone());\n\t\t\t\t\t\tthis._nodeRotations.set(node, node.getRotation().clone());\n\t\t\t\t\t\tthis._nodeOffsets.set(node, node.getPosition().clone().sub(gizmoPos));\n\t\t\t\t}\n\t\t}\n\t\t_setNodeRotations(axis, angleAxis, angleDelta) {\n\t\t\t\tconst gizmoPos = this.root.getLocalPosition();\n\t\t\t\tq1.setFromAxisAngle(angleAxis, angleDelta);\n\t\t\t\tfor(let i = 0; i < this.nodes.length; i++){\n\t\t\t\t\t\tconst node = this.nodes[i];\n\t\t\t\t\t\tif ((axis === 'x' || axis === 'y' || axis === 'z') && this._coordSpace === 'local') {\n\t\t\t\t\t\t\t\tconst rot = this._nodeLocalRotations.get(node);\n\t\t\t\t\t\t\t\tif (!rot) {\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tq2.copy(rot).mul(q1);\n\t\t\t\t\t\t\t\tnode.setLocalRotation(q2);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst rot = this._nodeRotations.get(node);\n\t\t\t\t\t\t\t\tif (!rot) {\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst offset = this._nodeOffsets.get(node);\n\t\t\t\t\t\t\t\tif (!offset) {\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tv1$1.copy(offset);\n\t\t\t\t\t\t\t\tq1.transformVector(v1$1, v1$1);\n\t\t\t\t\t\t\t\tq2.copy(q1).mul(rot);\n\t\t\t\t\t\t\t\tnode.setRotation(q2);\n\t\t\t\t\t\t\t\tnode.setPosition(v1$1.add(gizmoPos));\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this._coordSpace === 'local') {\n\t\t\t\t\t\tthis._updateRotation();\n\t\t\t\t}\n\t\t}\n\t\t_screenToPoint(x, y) {\n\t\t\t\tconst mouseWPos = this._camera.screenToWorld(x, y, 1);\n\t\t\t\tconst axis = this._selectedAxis;\n\t\t\t\tconst ray = this._createRay(mouseWPos);\n\t\t\t\tconst plane = this._createPlane(axis, axis === 'f' || axis === 'xyz', false);\n\t\t\t\tif (!plane.intersectsRay(ray, point$1)) {\n\t\t\t\t\t\tray.direction.mulScalar(-1);\n\t\t\t\t\t\tconst intersection = plane.intersectsRay(ray, point$1);\n\t\t\t\t\t\tray.direction.mulScalar(-1);\n\t\t\t\t\t\tif (!intersection) {\n\t\t\t\t\t\t\t\treturn point$1.copy(this.root.getLocalPosition());\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn point$1;\n\t\t}\n\t\t_calculateArcAngle(point, x, y) {\n\t\t\t\tconst gizmoPos = this.root.getLocalPosition();\n\t\t\t\tconst axis = this._selectedAxis;\n\t\t\t\tconst plane = this._createPlane(axis, axis === 'f', false);\n\t\t\t\tlet angle = 0;\n\t\t\t\tconst facingDir = this.facingDir;\n\t\t\t\tconst facingDot = plane.normal.dot(facingDir);\n\t\t\t\tswitch(this.rotationMode){\n\t\t\t\t\t\tcase 'absolute':\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tthis._camera.worldToScreen(gizmoPos, v2$1);\n\t\t\t\t\t\t\t\t\t\tif (axis === 'f' || facingDot > 1 - RING_FACING_EPSILON) {\n\t\t\t\t\t\t\t\t\t\t\t\tv1$1.set(this._screenStartPos.y >= v2$1.y ? 1 : -1, this._screenStartPos.x >= v2$1.x ? -1 : 1, 0).normalize();\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tconst projDir = v1$1.cross(plane.normal, facingDir).normalize();\n\t\t\t\t\t\t\t\t\t\t\t\tthis._camera.worldToScreen(projDir.add(gizmoPos), v3);\n\t\t\t\t\t\t\t\t\t\t\t\tv1$1.sub2(v3, v2$1).normalize();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tv2$1.set(x, y, 0);\n\t\t\t\t\t\t\t\t\t\tangle = v1$1.dot(v2$1);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\tcase 'orbit':\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tv1$1.sub2(point, gizmoPos);\n\t\t\t\t\t\t\t\t\t\tswitch(axis){\n\t\t\t\t\t\t\t\t\t\t\t\tcase 'x':\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tq1.copy(this._rootStartRot).invert().transformVector(v1$1, v1$1);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tangle = Math.atan2(v1$1.z, v1$1.y) * math.RAD_TO_DEG;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tcase 'y':\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tq1.copy(this._rootStartRot).invert().transformVector(v1$1, v1$1);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tangle = Math.atan2(v1$1.x, v1$1.z) * math.RAD_TO_DEG;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tcase 'z':\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tq1.copy(this._rootStartRot).invert().transformVector(v1$1, v1$1);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tangle = Math.atan2(v1$1.y, v1$1.x) * math.RAD_TO_DEG;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tcase 'f':\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tq1.copy(this._camera.entity.getRotation()).invert().transformVector(v1$1, v1$1);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tangle = Math.sign(facingDot) * Math.atan2(v1$1.y, v1$1.x) * math.RAD_TO_DEG;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tconst dir = v1$1.sub2(point, this._camera.entity.getPosition()).normalize();\n\t\t\t\t\t\t\t\t\t\tconst dot = dir.dot(this._camera.entity.forward);\n\t\t\t\t\t\t\t\t\t\tif (dot < 0) {\n\t\t\t\t\t\t\t\t\t\t\t\tangle += 180;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn angle;\n\t\t}\n\t\t_drawGuideLines(pos, rot, activeAxis, activeIsPlane) {\n\t\t\t\tfor (const axis of AXES){\n\t\t\t\t\t\tif (activeAxis === 'xyz') {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (activeIsPlane) {\n\t\t\t\t\t\t\t\tif (axis !== activeAxis) {\n\t\t\t\t\t\t\t\t\t\tthis._drawSpanLine(pos, rot, axis);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (axis === activeAxis) {\n\t\t\t\t\t\t\t\t\t\tthis._drawSpanLine(pos, rot, axis);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tprerender() {\n\t\t\t\tsuper.prerender();\n\t\t\t\tif (!this.enabled) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._shapesLookAtCamera();\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis._guideAngleLines.forEach((line)=>line.destroy());\n\t\t\t\tsuper.destroy();\n\t\t}\n}\n\nclass BoxShape extends Shape {\n\t\tconstructor(device, args = {}){\n\t\t\t\tsuper(device, 'boxCenter', args), this._size = 0.06;\n\t\t\t\tthis._size = args.size ?? this._size;\n\t\t\t\tthis.triData = [\n\t\t\t\t\t\tnew TriData(new BoxGeometry(), 2)\n\t\t\t\t];\n\t\t\t\tthis._createRenderComponent(this.entity, [\n\t\t\t\t\t\tMesh.fromGeometry(this.device, new BoxGeometry())\n\t\t\t\t]);\n\t\t\t\tthis._update();\n\t\t}\n\t\tset size(value) {\n\t\t\t\tthis._size = value ?? this._size;\n\t\t\t\tthis._update();\n\t\t}\n\t\tget size() {\n\t\t\t\treturn this._size;\n\t\t}\n\t\t_update() {\n\t\t\t\tthis.entity.setLocalScale(this._size, this._size, this._size);\n\t\t}\n}\n\nconst tmpV1$1 = new Vec3();\nconst tmpV2$1 = new Vec3();\nconst tmpQ1 = new Quat();\nclass BoxLineShape extends Shape {\n\t\tconstructor(device, args = {}){\n\t\t\t\tsuper(device, 'boxLine', args), this._gap = 0, this._lineThickness = 0.02, this._lineLength = 0.5, this._boxSize = 0.12, this._tolerance = 0.1, this._flipped = false;\n\t\t\t\tthis._gap = args.gap ?? this._gap;\n\t\t\t\tthis._lineThickness = args.lineThickness ?? this._lineThickness;\n\t\t\t\tthis._lineLength = args.lineLength ?? this._lineLength;\n\t\t\t\tthis._boxSize = args.boxSize ?? this._boxSize;\n\t\t\t\tthis._tolerance = args.tolerance ?? this._tolerance;\n\t\t\t\tthis.triData = [\n\t\t\t\t\t\tnew TriData(new BoxGeometry()),\n\t\t\t\t\t\tnew TriData(new CylinderGeometry(), 1)\n\t\t\t\t];\n\t\t\t\tthis._box = new Entity(`box:${this.axis}`);\n\t\t\t\tthis.entity.addChild(this._box);\n\t\t\t\tthis._createRenderComponent(this._box, [\n\t\t\t\t\t\tMesh.fromGeometry(this.device, new BoxGeometry())\n\t\t\t\t]);\n\t\t\t\tthis._line = new Entity(`line:${this.axis}`);\n\t\t\t\tthis.entity.addChild(this._line);\n\t\t\t\tthis._createRenderComponent(this._line, [\n\t\t\t\t\t\tMesh.fromGeometry(this.device, new CylinderGeometry())\n\t\t\t\t]);\n\t\t\t\tthis._update();\n\t\t}\n\t\tset gap(value) {\n\t\t\t\tthis._gap = value ?? this._gap;\n\t\t\t\tthis._update();\n\t\t}\n\t\tget gap() {\n\t\t\t\treturn this._gap;\n\t\t}\n\t\tset lineThickness(value) {\n\t\t\t\tthis._lineThickness = value ?? this._lineThickness;\n\t\t\t\tthis._update();\n\t\t}\n\t\tget lineThickness() {\n\t\t\t\treturn this._lineThickness;\n\t\t}\n\t\tset lineLength(value) {\n\t\t\t\tthis._lineLength = value ?? this._lineLength;\n\t\t\t\tthis._update();\n\t\t}\n\t\tget lineLength() {\n\t\t\t\treturn this._lineLength;\n\t\t}\n\t\tset boxSize(value) {\n\t\t\t\tthis._boxSize = value ?? this._boxSize;\n\t\t\t\tthis._update();\n\t\t}\n\t\tget boxSize() {\n\t\t\t\treturn this._boxSize;\n\t\t}\n\t\tset tolerance(value) {\n\t\t\t\tthis._tolerance = value;\n\t\t\t\tthis._update();\n\t\t}\n\t\tget tolerance() {\n\t\t\t\treturn this._tolerance;\n\t\t}\n\t\tset flipped(value) {\n\t\t\t\tif (this._flipped === value) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._flipped = value;\n\t\t\t\tif (this._rotation.equals(Vec3.ZERO)) {\n\t\t\t\t\t\ttmpV1$1.set(0, 0, this._flipped ? 180 : 0);\n\t\t\t\t} else {\n\t\t\t\t\t\ttmpV1$1.copy(this._rotation).mulScalar(this._flipped ? -1 : 1);\n\t\t\t\t}\n\t\t\t\tthis._line.enabled = !this._flipped;\n\t\t\t\tthis.entity.setLocalEulerAngles(tmpV1$1);\n\t\t}\n\t\tget flipped() {\n\t\t\t\treturn this._flipped;\n\t\t}\n\t\t_update() {\n\t\t\t\ttmpV1$1.set(0, this._gap + this._boxSize * 0.5 + this._lineLength, 0);\n\t\t\t\ttmpQ1.set(0, 0, 0, 1);\n\t\t\t\ttmpV2$1.set(this._boxSize, this._boxSize, this._boxSize);\n\t\t\t\tthis.triData[0].setTransform(tmpV1$1, tmpQ1, tmpV2$1);\n\t\t\t\ttmpV1$1.set(0, this._gap + this._lineLength * 0.5, 0);\n\t\t\t\ttmpQ1.set(0, 0, 0, 1);\n\t\t\t\ttmpV2$1.set(this._lineThickness + this._tolerance, this._lineLength, this._lineThickness + this._tolerance);\n\t\t\t\tthis.triData[1].setTransform(tmpV1$1, tmpQ1, tmpV2$1);\n\t\t\t\tthis._box.setLocalPosition(0, this._gap + this._boxSize * 0.5 + this._lineLength, 0);\n\t\t\t\tthis._box.setLocalScale(this._boxSize, this._boxSize, this._boxSize);\n\t\t\t\tthis._line.setLocalPosition(0, this._gap + this._lineLength * 0.5, 0);\n\t\t\t\tthis._line.setLocalScale(this._lineThickness, this._lineLength, this._lineThickness);\n\t\t}\n}\n\nconst v1 = new Vec3();\nconst v2 = new Vec3();\nconst point = new Vec3();\nconst delta = new Vec3();\nconst q = new Quat();\nconst GLANCE_EPSILON = 0.01;\nclass ScaleGizmo extends TransformGizmo {\n\t\tconstructor(camera, layer){\n\t\t\t\tsuper(camera, layer, 'gizmo:scale'), this._shapes = {\n\t\t\t\t\t\txyz: new BoxShape(this._device, {\n\t\t\t\t\t\t\t\taxis: 'xyz',\n\t\t\t\t\t\t\t\tlayers: [\n\t\t\t\t\t\t\t\t\t\tthis._layer.id\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tdefaultColor: this._theme.shapeBase.xyz,\n\t\t\t\t\t\t\t\thoverColor: this._theme.shapeHover.xyz,\n\t\t\t\t\t\t\t\tdisabledColor: this._theme.disabled\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tyz: new PlaneShape(this._device, {\n\t\t\t\t\t\t\t\taxis: 'x',\n\t\t\t\t\t\t\t\tlayers: [\n\t\t\t\t\t\t\t\t\t\tthis._layer.id\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\trotation: new Vec3(0, 0, -90),\n\t\t\t\t\t\t\t\tdefaultColor: this._theme.shapeBase.x,\n\t\t\t\t\t\t\t\thoverColor: this._theme.shapeHover.x,\n\t\t\t\t\t\t\t\tdisabledColor: this._theme.disabled,\n\t\t\t\t\t\t\t\tdepth: 1\n\t\t\t\t\t\t}),\n\t\t\t\t\t\txz: new PlaneShape(this._device, {\n\t\t\t\t\t\t\t\taxis: 'y',\n\t\t\t\t\t\t\t\tlayers: [\n\t\t\t\t\t\t\t\t\t\tthis._layer.id\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\trotation: new Vec3(0, 0, 0),\n\t\t\t\t\t\t\t\tdefaultColor: this._theme.shapeBase.y,\n\t\t\t\t\t\t\t\thoverColor: this._theme.shapeHover.y,\n\t\t\t\t\t\t\t\tdisabledColor: this._theme.disabled,\n\t\t\t\t\t\t\t\tdepth: 1\n\t\t\t\t\t\t}),\n\t\t\t\t\t\txy: new PlaneShape(this._device, {\n\t\t\t\t\t\t\t\taxis: 'z',\n\t\t\t\t\t\t\t\tlayers: [\n\t\t\t\t\t\t\t\t\t\tthis._layer.id\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\trotation: new Vec3(90, 0, 0),\n\t\t\t\t\t\t\t\tdefaultColor: this._theme.shapeBase.z,\n\t\t\t\t\t\t\t\thoverColor: this._theme.shapeHover.z,\n\t\t\t\t\t\t\t\tdisabledColor: this._theme.disabled,\n\t\t\t\t\t\t\t\tdepth: 1\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tx: new BoxLineShape(this._device, {\n\t\t\t\t\t\t\t\taxis: 'x',\n\t\t\t\t\t\t\t\tlayers: [\n\t\t\t\t\t\t\t\t\t\tthis._layer.id\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\trotation: new Vec3(0, 0, -90),\n\t\t\t\t\t\t\t\tdefaultColor: this._theme.shapeBase.x,\n\t\t\t\t\t\t\t\thoverColor: this._theme.shapeHover.x,\n\t\t\t\t\t\t\t\tdisabledColor: this._theme.disabled\n\t\t\t\t\t\t}),\n\t\t\t\t\t\ty: new BoxLineShape(this._device, {\n\t\t\t\t\t\t\t\taxis: 'y',\n\t\t\t\t\t\t\t\tlayers: [\n\t\t\t\t\t\t\t\t\t\tthis._layer.id\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\trotation: new Vec3(0, 0, 0),\n\t\t\t\t\t\t\t\tdefaultColor: this._theme.shapeBase.y,\n\t\t\t\t\t\t\t\thoverColor: this._theme.shapeHover.y,\n\t\t\t\t\t\t\t\tdisabledColor: this._theme.disabled\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tz: new BoxLineShape(this._device, {\n\t\t\t\t\t\t\t\taxis: 'z',\n\t\t\t\t\t\t\t\tlayers: [\n\t\t\t\t\t\t\t\t\t\tthis._layer.id\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\trotation: new Vec3(90, 0, 0),\n\t\t\t\t\t\t\t\tdefaultColor: this._theme.shapeBase.z,\n\t\t\t\t\t\t\t\thoverColor: this._theme.shapeHover.z,\n\t\t\t\t\t\t\t\tdisabledColor: this._theme.disabled\n\t\t\t\t\t\t})\n\t\t\t\t}, this._coordSpace = 'local', this._nodeScales = new Map(), this._uniform = false, this.snapIncrement = 1, this.flipPlanes = true, this.lowerBoundScale = new Vec3(-Infinity, -Infinity, -Infinity);\n\t\t\t\tthis._createTransform();\n\t\t\t\tthis.on(TransformGizmo.EVENT_TRANSFORMSTART, ()=>{\n\t\t\t\t\t\tthis._storeNodeScales();\n\t\t\t\t\t\tthis._drag(true);\n\t\t\t\t});\n\t\t\t\tthis.on(TransformGizmo.EVENT_TRANSFORMMOVE, (point)=>{\n\t\t\t\t\t\tconst scaleDelta = delta.copy(point).sub(this._selectionStartPoint);\n\t\t\t\t\t\tif (this.snap) {\n\t\t\t\t\t\t\t\tscaleDelta.mulScalar(1 / this.snapIncrement);\n\t\t\t\t\t\t\t\tscaleDelta.round();\n\t\t\t\t\t\t\t\tscaleDelta.mulScalar(this.snapIncrement);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tscaleDelta.mulScalar(1 / this._scale);\n\t\t\t\t\t\tthis._setNodeScales(scaleDelta.add(Vec3.ONE));\n\t\t\t\t});\n\t\t\t\tthis.on(TransformGizmo.EVENT_TRANSFORMEND, ()=>{\n\t\t\t\t\t\tthis._drag(false);\n\t\t\t\t});\n\t\t\t\tthis.on(TransformGizmo.EVENT_NODESDETACH, ()=>{\n\t\t\t\t\t\tthis._nodeScales.clear();\n\t\t\t\t});\n\t\t}\n\t\tset coordSpace(value) {}\n\t\tget coordSpace() {\n\t\t\t\treturn this._coordSpace;\n\t\t}\n\t\tset uniform(value) {\n\t\t\t\tthis._uniform = value ?? this._uniform;\n\t\t}\n\t\tget uniform() {\n\t\t\t\treturn this._uniform;\n\t\t}\n\t\tset axisGap(value) {\n\t\t\t\tthis._setArrowProp('gap', value);\n\t\t}\n\t\tget axisGap() {\n\t\t\t\treturn this._shapes.x.gap;\n\t\t}\n\t\tset axisLineThickness(value) {\n\t\t\t\tthis._setArrowProp('lineThickness', value);\n\t\t}\n\t\tget axisLineThickness() {\n\t\t\t\treturn this._shapes.x.lineThickness;\n\t\t}\n\t\tset axisLineLength(value) {\n\t\t\t\tthis._setArrowProp('lineLength', value);\n\t\t}\n\t\tget axisLineLength() {\n\t\t\t\treturn this._shapes.x.lineLength;\n\t\t}\n\t\tset axisLineTolerance(value) {\n\t\t\t\tthis._setArrowProp('tolerance', value);\n\t\t}\n\t\tget axisLineTolerance() {\n\t\t\t\treturn this._shapes.x.tolerance;\n\t\t}\n\t\tset axisBoxSize(value) {\n\t\t\t\tthis._setArrowProp('boxSize', value);\n\t\t}\n\t\tget axisBoxSize() {\n\t\t\t\treturn this._shapes.x.boxSize;\n\t\t}\n\t\tset axisPlaneSize(value) {\n\t\t\t\tthis._setPlaneProp('size', value);\n\t\t}\n\t\tget axisPlaneSize() {\n\t\t\t\treturn this._shapes.yz.size;\n\t\t}\n\t\tset axisPlaneGap(value) {\n\t\t\t\tthis._setPlaneProp('gap', value);\n\t\t}\n\t\tget axisPlaneGap() {\n\t\t\t\treturn this._shapes.yz.gap;\n\t\t}\n\t\tset axisCenterSize(value) {\n\t\t\t\tthis._shapes.xyz.size = value;\n\t\t}\n\t\tget axisCenterSize() {\n\t\t\t\treturn this._shapes.xyz.size;\n\t\t}\n\t\tset flipShapes(value) {\n\t\t\t\tthis.flipPlanes = value;\n\t\t}\n\t\tget flipShapes() {\n\t\t\t\treturn this.flipPlanes;\n\t\t}\n\t\t_setArrowProp(prop, value) {\n\t\t\t\tthis._shapes.x[prop] = value;\n\t\t\t\tthis._shapes.y[prop] = value;\n\t\t\t\tthis._shapes.z[prop] = value;\n\t\t}\n\t\t_setPlaneProp(prop, value) {\n\t\t\t\tthis._shapes.yz[prop] = value;\n\t\t\t\tthis._shapes.xz[prop] = value;\n\t\t\t\tthis._shapes.xy[prop] = value;\n\t\t}\n\t\t_shapesLookAtCamera() {\n\t\t\t\tconst cameraDir = this.cameraDir;\n\t\t\t\tlet changed = false;\n\t\t\t\tlet dot, enabled;\n\t\t\t\tdot = cameraDir.dot(this.root.right);\n\t\t\t\tenabled = 1 - Math.abs(dot) > GLANCE_EPSILON;\n\t\t\t\tif (this._shapes.x.entity.enabled !== enabled) {\n\t\t\t\t\t\tthis._shapes.x.entity.enabled = enabled;\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t\tdot = cameraDir.dot(this.root.up);\n\t\t\t\tenabled = 1 - Math.abs(dot) > GLANCE_EPSILON;\n\t\t\t\tif (this._shapes.y.entity.enabled !== enabled) {\n\t\t\t\t\t\tthis._shapes.y.entity.enabled = enabled;\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t\tdot = cameraDir.dot(this.root.forward);\n\t\t\t\tenabled = 1 - Math.abs(dot) > GLANCE_EPSILON;\n\t\t\t\tif (this._shapes.z.entity.enabled !== enabled) {\n\t\t\t\t\t\tthis._shapes.z.entity.enabled = enabled;\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t\tlet flipped;\n\t\t\t\tv1.cross(cameraDir, this.root.right);\n\t\t\t\tenabled = 1 - v1.length() > GLANCE_EPSILON;\n\t\t\t\tif (this._shapes.yz.entity.enabled !== enabled) {\n\t\t\t\t\t\tthis._shapes.yz.entity.enabled = enabled;\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t\tflipped = this.flipPlanes ? v2.set(0, +(v1.dot(this.root.forward) < 0), +(v1.dot(this.root.up) < 0)) : Vec3.ZERO;\n\t\t\t\tif (!this._shapes.yz.flipped.equals(flipped)) {\n\t\t\t\t\t\tthis._shapes.yz.flipped = flipped;\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t\tv1.cross(cameraDir, this.root.forward);\n\t\t\t\tenabled = 1 - v1.length() > GLANCE_EPSILON;\n\t\t\t\tif (this._shapes.xy.entity.enabled !== enabled) {\n\t\t\t\t\t\tthis._shapes.xy.entity.enabled = enabled;\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t\tflipped = this.flipPlanes ? v2.set(+(v1.dot(this.root.up) < 0), +(v1.dot(this.root.right) > 0), 0) : Vec3.ZERO;\n\t\t\t\tif (!this._shapes.xy.flipped.equals(flipped)) {\n\t\t\t\t\t\tthis._shapes.xy.flipped = flipped;\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t\tv1.cross(cameraDir, this.root.up);\n\t\t\t\tenabled = 1 - v1.length() > GLANCE_EPSILON;\n\t\t\t\tif (this._shapes.xz.entity.enabled !== enabled) {\n\t\t\t\t\t\tthis._shapes.xz.entity.enabled = enabled;\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t\tflipped = this.flipPlanes ? v2.set(+(v1.dot(this.root.forward) > 0), 0, +(v1.dot(this.root.right) > 0)) : Vec3.ZERO;\n\t\t\t\tif (!this._shapes.xz.flipped.equals(flipped)) {\n\t\t\t\t\t\tthis._shapes.xz.flipped = flipped;\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t\tif (changed) {\n\t\t\t\t\t\tthis._renderUpdate = true;\n\t\t\t\t}\n\t\t}\n\t\t_drag(state) {\n\t\t\t\tfor(const axis in this._shapes){\n\t\t\t\t\t\tconst shape = this._shapes[axis];\n\t\t\t\t\t\tswitch(this.dragMode){\n\t\t\t\t\t\t\t\tcase 'show':\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcase 'hide':\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tshape.visible = !state;\n\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcase 'selected':\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tif (this._selectedAxis === 'xyz') {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tshape.visible = state ? axis.length === 1 : true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tif (this._selectedIsPlane) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tshape.visible = state ? axis.length === 1 && !axis.includes(this._selectedAxis) : true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tshape.visible = state ? axis === this._selectedAxis : true;\n\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._renderUpdate = true;\n\t\t}\n\t\t_storeNodeScales() {\n\t\t\t\tfor(let i = 0; i < this.nodes.length; i++){\n\t\t\t\t\t\tconst node = this.nodes[i];\n\t\t\t\t\t\tthis._nodeScales.set(node, node.getLocalScale().clone());\n\t\t\t\t}\n\t\t}\n\t\t_setNodeScales(scaleDelta) {\n\t\t\t\tfor(let i = 0; i < this.nodes.length; i++){\n\t\t\t\t\t\tconst node = this.nodes[i];\n\t\t\t\t\t\tconst scale = this._nodeScales.get(node);\n\t\t\t\t\t\tif (!scale) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnode.setLocalScale(v1.copy(scale).mul(scaleDelta).max(this.lowerBoundScale));\n\t\t\t\t}\n\t\t}\n\t\t_screenToPoint(x, y) {\n\t\t\t\tconst gizmoPos = this.root.getLocalPosition();\n\t\t\t\tconst mouseWPos = this._camera.screenToWorld(x, y, 1);\n\t\t\t\tconst axis = this._selectedAxis;\n\t\t\t\tconst isPlane = this._selectedIsPlane;\n\t\t\t\tconst ray = this._createRay(mouseWPos);\n\t\t\t\tconst plane = this._createPlane(axis, axis === 'xyz', !isPlane);\n\t\t\t\tif (!plane.intersectsRay(ray, point)) {\n\t\t\t\t\t\treturn point;\n\t\t\t\t}\n\t\t\t\tif (axis === 'xyz') {\n\t\t\t\t\t\tconst projDir = v2.add2(this._camera.entity.up, this._camera.entity.right).normalize();\n\t\t\t\t\t\tconst dir = v1.sub2(point, gizmoPos);\n\t\t\t\t\t\tconst v = dir.length() * dir.normalize().dot(projDir);\n\t\t\t\t\t\tpoint.set(v, v, v);\n\t\t\t\t\t\treturn point;\n\t\t\t\t}\n\t\t\t\tq.copy(this._rootStartRot).invert().transformVector(point, point);\n\t\t\t\tif (!isPlane) {\n\t\t\t\t\t\tthis._projectToAxis(point, axis);\n\t\t\t\t}\n\t\t\t\tif (this._uniform && isPlane) {\n\t\t\t\t\t\tv1.set(1, 1, 1);\n\t\t\t\t\t\tv1[axis] = 0;\n\t\t\t\t\t\tpoint.copy(v1.mulScalar(v1.dot(point)));\n\t\t\t\t\t\tpoint[axis] = 0;\n\t\t\t\t}\n\t\t\t\treturn point;\n\t\t}\n\t\tprerender() {\n\t\t\t\tsuper.prerender();\n\t\t\t\tif (!this.enabled) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._shapesLookAtCamera();\n\t\t}\n}\n\nconst tmpV1 = new Vec3();\nconst tmpV2 = new Vec3();\nconst tmpV3 = new Vec3();\nconst tmpM1 = new Mat4();\nclass ViewCube extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_CAMERAALIGN = 'camera:align';\n\t\t}\n\t\tconstructor(anchor){\n\t\t\t\tsuper(), this._size = 0, this._anchor = new Vec4(1, 1, 1, 1), this._colorX = COLOR_RED.clone(), this._colorY = COLOR_GREEN.clone(), this._colorZ = COLOR_BLUE.clone(), this._colorNeg = new Color(0.3, 0.3, 0.3), this._radius = 10, this._textSize = 10, this._lineThickness = 2, this._lineLength = 40;\n\t\t\t\tthis.dom = document.createElement('div');\n\t\t\t\tthis.dom.id = 'view-cube-container';\n\t\t\t\tthis.dom.style.cssText = [\n\t\t\t\t\t\t'position: absolute',\n\t\t\t\t\t\t'margin: auto',\n\t\t\t\t\t\t'pointer-events: none'\n\t\t\t\t].join(';');\n\t\t\t\tdocument.body.appendChild(this.dom);\n\t\t\t\tthis.anchor = anchor ?? this._anchor;\n\t\t\t\tthis._svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n\t\t\t\tthis._svg.id = 'view-cube-svg';\n\t\t\t\tthis._group = document.createElementNS(this._svg.namespaceURI, 'g');\n\t\t\t\tthis._svg.appendChild(this._group);\n\t\t\t\tthis._resize();\n\t\t\t\tconst colX = this._colorX.toString(false);\n\t\t\t\tconst colY = this._colorY.toString(false);\n\t\t\t\tconst colZ = this._colorZ.toString(false);\n\t\t\t\tthis._shapes = {\n\t\t\t\t\t\tnx: this._circle(colX),\n\t\t\t\t\t\tny: this._circle(colY),\n\t\t\t\t\t\tnz: this._circle(colZ),\n\t\t\t\t\t\tpx: this._circle(colX, true, 'X'),\n\t\t\t\t\t\tpy: this._circle(colY, true, 'Y'),\n\t\t\t\t\t\tpz: this._circle(colZ, true, 'Z'),\n\t\t\t\t\t\txaxis: this._line(colX),\n\t\t\t\t\t\tyaxis: this._line(colY),\n\t\t\t\t\t\tzaxis: this._line(colZ)\n\t\t\t\t};\n\t\t\t\tthis._shapes.px.children[0].addEventListener('pointerdown', ()=>{\n\t\t\t\t\t\tthis.fire(ViewCube.EVENT_CAMERAALIGN, Vec3.RIGHT);\n\t\t\t\t});\n\t\t\t\tthis._shapes.py.children[0].addEventListener('pointerdown', ()=>{\n\t\t\t\t\t\tthis.fire(ViewCube.EVENT_CAMERAALIGN, Vec3.UP);\n\t\t\t\t});\n\t\t\t\tthis._shapes.pz.children[0].addEventListener('pointerdown', ()=>{\n\t\t\t\t\t\tthis.fire(ViewCube.EVENT_CAMERAALIGN, Vec3.BACK);\n\t\t\t\t});\n\t\t\t\tthis._shapes.nx.children[0].addEventListener('pointerdown', ()=>{\n\t\t\t\t\t\tthis.fire(ViewCube.EVENT_CAMERAALIGN, Vec3.LEFT);\n\t\t\t\t});\n\t\t\t\tthis._shapes.ny.children[0].addEventListener('pointerdown', ()=>{\n\t\t\t\t\t\tthis.fire(ViewCube.EVENT_CAMERAALIGN, Vec3.DOWN);\n\t\t\t\t});\n\t\t\t\tthis._shapes.nz.children[0].addEventListener('pointerdown', ()=>{\n\t\t\t\t\t\tthis.fire(ViewCube.EVENT_CAMERAALIGN, Vec3.FORWARD);\n\t\t\t\t});\n\t\t\t\tthis.dom.appendChild(this._svg);\n\t\t}\n\t\tset anchor(value) {\n\t\t\t\tthis._anchor.copy(value);\n\t\t\t\tthis.dom.style.top = this._anchor.x ? '0px' : 'auto';\n\t\t\t\tthis.dom.style.right = this._anchor.y ? '0px' : 'auto';\n\t\t\t\tthis.dom.style.bottom = this._anchor.z ? '0px' : 'auto';\n\t\t\t\tthis.dom.style.left = this._anchor.w ? '0px' : 'auto';\n\t\t}\n\t\tget anchor() {\n\t\t\t\treturn this._anchor;\n\t\t}\n\t\tset colorX(value) {\n\t\t\t\tthis._colorX.copy(value);\n\t\t\t\tthis._shapes.px.children[0].setAttribute('fill', this._colorX.toString(false));\n\t\t\t\tthis._shapes.px.children[0].setAttribute('stroke', this._colorX.toString(false));\n\t\t\t\tthis._shapes.nx.children[0].setAttribute('stroke', this._colorX.toString(false));\n\t\t\t\tthis._shapes.xaxis.setAttribute('stroke', this._colorX.toString(false));\n\t\t}\n\t\tget colorX() {\n\t\t\t\treturn this._colorX;\n\t\t}\n\t\tset colorY(value) {\n\t\t\t\tthis._colorY.copy(value);\n\t\t\t\tthis._shapes.py.children[0].setAttribute('fill', this._colorY.toString(false));\n\t\t\t\tthis._shapes.py.children[0].setAttribute('stroke', this._colorY.toString(false));\n\t\t\t\tthis._shapes.ny.children[0].setAttribute('stroke', this._colorY.toString(false));\n\t\t\t\tthis._shapes.yaxis.setAttribute('stroke', this._colorY.toString(false));\n\t\t}\n\t\tget colorY() {\n\t\t\t\treturn this._colorY;\n\t\t}\n\t\tset colorZ(value) {\n\t\t\t\tthis._colorZ.copy(value);\n\t\t\t\tthis._shapes.pz.children[0].setAttribute('fill', this._colorZ.toString(false));\n\t\t\t\tthis._shapes.pz.children[0].setAttribute('stroke', this._colorZ.toString(false));\n\t\t\t\tthis._shapes.nz.children[0].setAttribute('stroke', this._colorZ.toString(false));\n\t\t\t\tthis._shapes.zaxis.setAttribute('stroke', this._colorZ.toString(false));\n\t\t}\n\t\tget colorZ() {\n\t\t\t\treturn this._colorZ;\n\t\t}\n\t\tset colorNeg(value) {\n\t\t\t\tthis._colorNeg.copy(value);\n\t\t\t\tthis._shapes.px.children[0].setAttribute('fill', this._colorNeg.toString(false));\n\t\t\t\tthis._shapes.py.children[0].setAttribute('fill', this._colorNeg.toString(false));\n\t\t\t\tthis._shapes.pz.children[0].setAttribute('fill', this._colorNeg.toString(false));\n\t\t}\n\t\tget colorNeg() {\n\t\t\t\treturn this._colorNeg;\n\t\t}\n\t\tset radius(value) {\n\t\t\t\tthis._radius = value;\n\t\t\t\tthis._shapes.px.children[0].setAttribute('r', `${value}`);\n\t\t\t\tthis._shapes.py.children[0].setAttribute('r', `${value}`);\n\t\t\t\tthis._shapes.pz.children[0].setAttribute('r', `${value}`);\n\t\t\t\tthis._shapes.nx.children[0].setAttribute('r', `${value}`);\n\t\t\t\tthis._shapes.ny.children[0].setAttribute('r', `${value}`);\n\t\t\t\tthis._shapes.nz.children[0].setAttribute('r', `${value}`);\n\t\t\t\tthis._resize();\n\t\t}\n\t\tget radius() {\n\t\t\t\treturn this._radius;\n\t\t}\n\t\tset textSize(value) {\n\t\t\t\tthis._textSize = value;\n\t\t\t\tthis._shapes.px.children[1].setAttribute('font-size', `${value}`);\n\t\t\t\tthis._shapes.py.children[1].setAttribute('font-size', `${value}`);\n\t\t\t\tthis._shapes.pz.children[1].setAttribute('font-size', `${value}`);\n\t\t}\n\t\tget textSize() {\n\t\t\t\treturn this._textSize;\n\t\t}\n\t\tset lineThickness(value) {\n\t\t\t\tthis._lineThickness = value;\n\t\t\t\tthis._shapes.xaxis.setAttribute('stroke-width', `${value}`);\n\t\t\t\tthis._shapes.yaxis.setAttribute('stroke-width', `${value}`);\n\t\t\t\tthis._shapes.zaxis.setAttribute('stroke-width', `${value}`);\n\t\t\t\tthis._shapes.px.children[0].setAttribute('stroke-width', `${value}`);\n\t\t\t\tthis._shapes.py.children[0].setAttribute('stroke-width', `${value}`);\n\t\t\t\tthis._shapes.pz.children[0].setAttribute('stroke-width', `${value}`);\n\t\t\t\tthis._shapes.nx.children[0].setAttribute('stroke-width', `${value}`);\n\t\t\t\tthis._shapes.ny.children[0].setAttribute('stroke-width', `${value}`);\n\t\t\t\tthis._shapes.nz.children[0].setAttribute('stroke-width', `${value}`);\n\t\t\t\tthis._resize();\n\t\t}\n\t\tget lineThickness() {\n\t\t\t\treturn this._lineThickness;\n\t\t}\n\t\tset lineLength(value) {\n\t\t\t\tthis._lineLength = value;\n\t\t\t\tthis._resize();\n\t\t}\n\t\tget lineLength() {\n\t\t\t\treturn this._lineLength;\n\t\t}\n\t\t_resize() {\n\t\t\t\tthis._size = 2 * (this.lineLength + this.radius + this.lineThickness);\n\t\t\t\tthis.dom.style.width = `${this._size}px`;\n\t\t\t\tthis.dom.style.height = `${this._size}px`;\n\t\t\t\tthis._svg.setAttribute('width', `${this._size}`);\n\t\t\t\tthis._svg.setAttribute('height', `${this._size}`);\n\t\t\t\tthis._group.setAttribute('transform', `translate(${this._size * 0.5}, ${this._size * 0.5})`);\n\t\t}\n\t\t_transform(group, x, y) {\n\t\t\t\tgroup.setAttribute('transform', `translate(${x * this._lineLength}, ${y * this._lineLength})`);\n\t\t}\n\t\t_x2y2(line, x, y) {\n\t\t\t\tline.setAttribute('x2', `${x * this._lineLength}`);\n\t\t\t\tline.setAttribute('y2', `${y * this._lineLength}`);\n\t\t}\n\t\t_line(color) {\n\t\t\t\tconst result = document.createElementNS(this._svg.namespaceURI, 'line');\n\t\t\t\tresult.setAttribute('stroke', color);\n\t\t\t\tresult.setAttribute('stroke-width', `${this._lineThickness}`);\n\t\t\t\tthis._group.appendChild(result);\n\t\t\t\treturn result;\n\t\t}\n\t\t_circle(color, fill = false, text) {\n\t\t\t\tconst group = document.createElementNS(this._svg.namespaceURI, 'g');\n\t\t\t\tconst circle = document.createElementNS(this._svg.namespaceURI, 'circle');\n\t\t\t\tcircle.setAttribute('fill', fill ? color : this._colorNeg.toString(false));\n\t\t\t\tcircle.setAttribute('stroke', color);\n\t\t\t\tcircle.setAttribute('stroke-width', `${this._lineThickness}`);\n\t\t\t\tcircle.setAttribute('r', `${this._radius}`);\n\t\t\t\tcircle.setAttribute('cx', '0');\n\t\t\t\tcircle.setAttribute('cy', '0');\n\t\t\t\tcircle.setAttribute('pointer-events', 'all');\n\t\t\t\tgroup.appendChild(circle);\n\t\t\t\tif (text) {\n\t\t\t\t\t\tconst t = document.createElementNS(this._svg.namespaceURI, 'text');\n\t\t\t\t\t\tt.setAttribute('font-size', `${this._textSize}`);\n\t\t\t\t\t\tt.setAttribute('font-family', 'Arial');\n\t\t\t\t\t\tt.setAttribute('font-weight', 'bold');\n\t\t\t\t\t\tt.setAttribute('text-anchor', 'middle');\n\t\t\t\t\t\tt.setAttribute('alignment-baseline', 'central');\n\t\t\t\t\t\tt.textContent = text;\n\t\t\t\t\t\tgroup.appendChild(t);\n\t\t\t\t}\n\t\t\t\tgroup.setAttribute('cursor', 'pointer');\n\t\t\t\tthis._group.appendChild(group);\n\t\t\t\treturn group;\n\t\t}\n\t\tupdate(cameraMatrix) {\n\t\t\t\tif (!this._size) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\ttmpM1.invert(cameraMatrix);\n\t\t\t\ttmpM1.getX(tmpV1);\n\t\t\t\ttmpM1.getY(tmpV2);\n\t\t\t\ttmpM1.getZ(tmpV3);\n\t\t\t\tthis._transform(this._shapes.px, tmpV1.x, -tmpV1.y);\n\t\t\t\tthis._transform(this._shapes.nx, -tmpV1.x, tmpV1.y);\n\t\t\t\tthis._transform(this._shapes.py, tmpV2.x, -tmpV2.y);\n\t\t\t\tthis._transform(this._shapes.ny, -tmpV2.x, tmpV2.y);\n\t\t\t\tthis._transform(this._shapes.pz, tmpV3.x, -tmpV3.y);\n\t\t\t\tthis._transform(this._shapes.nz, -tmpV3.x, tmpV3.y);\n\t\t\t\tthis._x2y2(this._shapes.xaxis, tmpV1.x, -tmpV1.y);\n\t\t\t\tthis._x2y2(this._shapes.yaxis, tmpV2.x, -tmpV2.y);\n\t\t\t\tthis._x2y2(this._shapes.zaxis, tmpV3.x, -tmpV3.y);\n\t\t\t\tconst order = [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tn: [\n\t\t\t\t\t\t\t\t\t\t'xaxis',\n\t\t\t\t\t\t\t\t\t\t'px'\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tvalue: tmpV1.z\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tn: [\n\t\t\t\t\t\t\t\t\t\t'yaxis',\n\t\t\t\t\t\t\t\t\t\t'py'\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tvalue: tmpV2.z\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tn: [\n\t\t\t\t\t\t\t\t\t\t'zaxis',\n\t\t\t\t\t\t\t\t\t\t'pz'\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tvalue: tmpV3.z\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tn: [\n\t\t\t\t\t\t\t\t\t\t'nx'\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tvalue: -tmpV1.z\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tn: [\n\t\t\t\t\t\t\t\t\t\t'ny'\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tvalue: -tmpV2.z\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tn: [\n\t\t\t\t\t\t\t\t\t\t'nz'\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tvalue: -tmpV3.z\n\t\t\t\t\t\t}\n\t\t\t\t].sort((a, b)=>a.value - b.value);\n\t\t\t\tconst fragment = document.createDocumentFragment();\n\t\t\t\torder.forEach((o)=>{\n\t\t\t\t\t\to.n.forEach((n)=>{\n\t\t\t\t\t\t\t\tfragment.appendChild(this._shapes[n]);\n\t\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tthis._group.appendChild(fragment);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.dom.remove();\n\t\t\t\tthis.off();\n\t\t}\n}\n\nexport { ABSOLUTE_URL, ACTION_GAMEPAD, ACTION_KEYBOARD, ACTION_MOUSE, ADDRESS_CLAMP_TO_EDGE, ADDRESS_MIRRORED_REPEAT, ADDRESS_REPEAT, AMBIENTSRC_AMBIENTSH, AMBIENTSRC_CONSTANT, AMBIENTSRC_ENVALATLAS, ANIM_BLEND_1D, ANIM_BLEND_2D_CARTESIAN, ANIM_BLEND_2D_DIRECTIONAL, ANIM_BLEND_DIRECT, ANIM_CONTROL_STATES, ANIM_EQUAL_TO, ANIM_GREATER_THAN, ANIM_GREATER_THAN_EQUAL_TO, ANIM_INTERRUPTION_NEXT, ANIM_INTERRUPTION_NEXT_PREV, ANIM_INTERRUPTION_NONE, ANIM_INTERRUPTION_PREV, ANIM_INTERRUPTION_PREV_NEXT, ANIM_LAYER_ADDITIVE, ANIM_LAYER_OVERWRITE, ANIM_LESS_THAN, ANIM_LESS_THAN_EQUAL_TO, ANIM_NOT_EQUAL_TO, ANIM_PARAMETER_BOOLEAN, ANIM_PARAMETER_FLOAT, ANIM_PARAMETER_INTEGER, ANIM_PARAMETER_TRIGGER, ANIM_STATE_ANY, ANIM_STATE_END, ANIM_STATE_START, ASPECT_AUTO, ASPECT_MANUAL, ASSET_ANIMATION, ASSET_AUDIO, ASSET_CONTAINER, ASSET_CSS, ASSET_CUBEMAP, ASSET_HTML, ASSET_IMAGE, ASSET_JSON, ASSET_MATERIAL, ASSET_MODEL, ASSET_SCRIPT, ASSET_SHADER, ASSET_TEXT, ASSET_TEXTURE, ASSET_TEXTUREATLAS, AXIS_KEY, AXIS_MOUSE_X, AXIS_MOUSE_Y, AXIS_PAD_L_X, AXIS_PAD_L_Y, AXIS_PAD_R_X, AXIS_PAD_R_Y, AnimBinder, AnimClip, AnimClipHandler, AnimComponent, AnimComponentLayer, AnimComponentSystem, AnimController, AnimCurve, AnimData, AnimEvaluator, AnimEvents, AnimSnapshot, AnimStateGraph, AnimStateGraphHandler, AnimTarget, AnimTrack, Animation, AnimationComponent, AnimationComponentSystem, AnimationHandler, AnimationKey, AnimationNode, AppBase, AppOptions, Application, Asset, AssetListLoader, AssetReference, AssetRegistry, AudioHandler, AudioListenerComponent, AudioListenerComponentSystem, BAKE_COLOR, BAKE_COLORDIR, BINDGROUP_MESH, BINDGROUP_MESH_UB, BINDGROUP_VIEW, BLENDEQUATION_ADD, BLENDEQUATION_MAX, BLENDEQUATION_MIN, BLENDEQUATION_REVERSE_SUBTRACT, BLENDEQUATION_SUBTRACT, BLENDMODE_CONSTANT, BLENDMODE_CONSTANT_ALPHA, BLENDMODE_CONSTANT_COLOR, BLENDMODE_DST_ALPHA, BLENDMODE_DST_COLOR, BLENDMODE_ONE, BLENDMODE_ONE_MINUS_CONSTANT, BLENDMODE_ONE_MINUS_CONSTANT_ALPHA, BLENDMODE_ONE_MINUS_CONSTANT_COLOR, BLENDMODE_ONE_MINUS_DST_ALPHA, BLENDMODE_ONE_MINUS_DST_COLOR, BLENDMODE_ONE_MINUS_SRC_ALPHA, BLENDMODE_ONE_MINUS_SRC_COLOR, BLENDMODE_SRC_ALPHA, BLENDMODE_SRC_ALPHA_SATURATE, BLENDMODE_SRC_COLOR, BLENDMODE_ZERO, BLEND_ADDITIVE, BLEND_ADDITIVEALPHA, BLEND_MAX, BLEND_MIN, BLEND_MULTIPLICATIVE, BLEND_MULTIPLICATIVE2X, BLEND_NONE, BLEND_NORMAL, BLEND_PREMULTIPLIED, BLEND_SCREEN, BLEND_SUBTRACTIVE, BLUR_BOX, BLUR_GAUSSIAN, BODYFLAG_KINEMATIC_OBJECT, BODYFLAG_NORESPONSE_OBJECT, BODYFLAG_STATIC_OBJECT, BODYGROUP_DEFAULT, BODYGROUP_DYNAMIC, BODYGROUP_ENGINE_1, BODYGROUP_ENGINE_2, BODYGROUP_ENGINE_3, BODYGROUP_KINEMATIC, BODYGROUP_NONE, BODYGROUP_STATIC, BODYGROUP_TRIGGER, BODYGROUP_USER_1, BODYGROUP_USER_2, BODYGROUP_USER_3, BODYGROUP_USER_4, BODYGROUP_USER_5, BODYGROUP_USER_6, BODYGROUP_USER_7, BODYGROUP_USER_8, BODYMASK_ALL, BODYMASK_NONE, BODYMASK_NOT_STATIC, BODYMASK_NOT_STATIC_KINEMATIC, BODYMASK_STATIC, BODYSTATE_ACTIVE_TAG, BODYSTATE_DISABLE_DEACTIVATION, BODYSTATE_DISABLE_SIMULATION, BODYSTATE_ISLAND_SLEEPING, BODYSTATE_WANTS_DEACTIVATION, BODYTYPE_DYNAMIC, BODYTYPE_KINEMATIC, BODYTYPE_STATIC, BUFFERUSAGE_COPY_DST, BUFFERUSAGE_COPY_SRC, BUFFERUSAGE_INDEX, BUFFERUSAGE_INDIRECT, BUFFERUSAGE_READ, BUFFERUSAGE_STORAGE, BUFFERUSAGE_UNIFORM, BUFFERUSAGE_VERTEX, BUFFERUSAGE_WRITE, BUFFER_DYNAMIC, BUFFER_GPUDYNAMIC, BUFFER_STATIC, BUFFER_STREAM, BUTTON_TRANSITION_MODE_SPRITE_CHANGE, BUTTON_TRANSITION_MODE_TINT, Batch, BatchGroup, BatchManager, BinaryHandler, BindGroupFormat, BindStorageBufferFormat, BindStorageTextureFormat, BindTextureFormat, BindUniformBufferFormat, BlendState, BoundingBox, BoundingSphere, BoxGeometry, Bundle, BundleHandler, BundleRegistry, ButtonComponent, ButtonComponentSystem, CHUNKAPI_1_51, CHUNKAPI_1_55, CHUNKAPI_1_56, CHUNKAPI_1_57, CHUNKAPI_1_58, CHUNKAPI_1_60, CHUNKAPI_1_62, CHUNKAPI_1_65, CHUNKAPI_1_70, CHUNKAPI_2_1, CHUNKAPI_2_3, CHUNKAPI_2_5, CHUNKAPI_2_6, CHUNKAPI_2_7, CHUNKAPI_2_8, CLEARFLAG_COLOR, CLEARFLAG_DEPTH, CLEARFLAG_STENCIL, CUBEFACE_NEGX, CUBEFACE_NEGY, CUBEFACE_NEGZ, CUBEFACE_POSX, CUBEFACE_POSY, CUBEFACE_POSZ, CUBEPROJ_BOX, CUBEPROJ_NONE, CULLFACE_BACK, CULLFACE_FRONT, CULLFACE_FRONTANDBACK, CULLFACE_NONE, CURVE_LINEAR, CURVE_SMOOTHSTEP, CURVE_SPLINE, CURVE_STEP, Camera, CameraComponent, CameraComponentSystem, CameraFrame, CameraFrameOptions, CanvasFont, CapsuleGeometry, ChunkUtils, CollisionComponent, CollisionComponentSystem, Color, Component, ComponentSystem, ComponentSystemRegistry, Compute, ConeGeometry, ContactPoint, ContactResult, ContainerHandler, ContainerResource, Controller, CssHandler, CubemapHandler, Curve, CurveSet, CylinderGeometry, DETAILMODE_ADD, DETAILMODE_MAX, DETAILMODE_MIN, DETAILMODE_MUL, DETAILMODE_OVERLAY, DETAILMODE_SCREEN, DEVICETYPE_NULL, DEVICETYPE_WEBGL2, DEVICETYPE_WEBGPU, DISPLAYFORMAT_HDR, DISPLAYFORMAT_LDR, DISPLAYFORMAT_LDR_SRGB, DISTANCE_EXPONENTIAL, DISTANCE_INVERSE, DISTANCE_LINEAR, DITHER_BAYER8, DITHER_BLUENOISE, DITHER_IGNNOISE, DITHER_NONE, DefaultAnimBinder, DepthState, DomeGeometry, DrawCommands, DualGestureSource, ELEMENTTYPE_GROUP, ELEMENTTYPE_IMAGE, ELEMENTTYPE_TEXT, EMITTERSHAPE_BOX, EMITTERSHAPE_SPHERE, EVENT_CULL_END, EVENT_GAMEPADCONNECTED, EVENT_GAMEPADDISCONNECTED, EVENT_KEYDOWN, EVENT_KEYUP, EVENT_MOUSEDOWN, EVENT_MOUSEMOVE, EVENT_MOUSEUP, EVENT_MOUSEWHEEL, EVENT_POSTCULL, EVENT_POSTRENDER, EVENT_POSTRENDER_LAYER, EVENT_PRECULL, EVENT_PRERENDER, EVENT_PRERENDER_LAYER, EVENT_SELECT, EVENT_SELECTEND, EVENT_SELECTSTART, EVENT_TOUCHCANCEL, EVENT_TOUCHEND, EVENT_TOUCHMOVE, EVENT_TOUCHSTART, ElementComponent, ElementComponentSystem, ElementDragHelper, ElementInput, ElementInputEvent, ElementMouseEvent, ElementSelectEvent, ElementTouchEvent, Entity, EnvLighting, EventHandle, EventHandler, FILLMODE_FILL_WINDOW, FILLMODE_KEEP_ASPECT, FILLMODE_NONE, FILTER_LINEAR, FILTER_LINEAR_MIPMAP_LINEAR, FILTER_LINEAR_MIPMAP_NEAREST, FILTER_NEAREST, FILTER_NEAREST_MIPMAP_LINEAR, FILTER_NEAREST_MIPMAP_NEAREST, FITMODE_CONTAIN, FITMODE_COVER, FITMODE_STRETCH, FITTING_BOTH, FITTING_NONE, FITTING_SHRINK, FITTING_STRETCH, FOG_EXP, FOG_EXP2, FOG_LINEAR, FOG_NONE, FONT_BITMAP, FONT_MSDF, FRESNEL_NONE, FRESNEL_SCHLICK, FUNC_ALWAYS, FUNC_EQUAL, FUNC_GREATER, FUNC_GREATEREQUAL, FUNC_LESS, FUNC_LESSEQUAL, FUNC_NEVER, FUNC_NOTEQUAL, FloatPacking, FlyController, FocusController, FogParams, FolderHandler, Font, FontHandler, ForwardRenderer, Frustum, GAMMA_NONE, GAMMA_SRGB, GIZMOAXIS_FACE, GIZMOAXIS_X, GIZMOAXIS_XY, GIZMOAXIS_XYZ, GIZMOAXIS_XZ, GIZMOAXIS_Y, GIZMOAXIS_YZ, GIZMOAXIS_Z, GIZMOSPACE_LOCAL, GIZMOSPACE_WORLD, GSplatComponent, GSplatComponentSystem, GSplatData, GSplatHandler, GSplatInstance, GSplatResource, GSplatResourceBase, GSplatSogsData, GSplatSogsResource, GamePads, GamepadSource, Geometry, Gizmo, GltfExporter, GraphNode, GraphicsDevice, HierarchyHandler, HtmlHandler, Http, I18n, INDEXFORMAT_UINT16, INDEXFORMAT_UINT32, INDEXFORMAT_UINT8, INTERPOLATION_CUBIC, INTERPOLATION_LINEAR, INTERPOLATION_STEP, ImageElement, IndexBuffer, IndexedList, InputConsumer, InputController, InputDelta, InputFrame, InputSource, JointComponent, JointComponentSystem, JsonHandler, JsonStandardMaterialParser, KEY_0, KEY_1, KEY_2, KEY_3, KEY_4, KEY_5, KEY_6, KEY_7, KEY_8, KEY_9, KEY_A, KEY_ADD, KEY_ALT, KEY_B, KEY_BACKSPACE, KEY_BACK_SLASH, KEY_C, KEY_CAPS_LOCK, KEY_CLOSE_BRACKET, KEY_COMMA, KEY_CONTEXT_MENU, KEY_CONTROL, KEY_D, KEY_DECIMAL, KEY_DELETE, KEY_DIVIDE, KEY_DOWN, KEY_E, KEY_END, KEY_ENTER, KEY_EQUAL, KEY_ESCAPE, KEY_F, KEY_F1, KEY_F10, KEY_F11, KEY_F12, KEY_F2, KEY_F3, KEY_F4, KEY_F5, KEY_F6, KEY_F7, KEY_F8, KEY_F9, KEY_G, KEY_H, KEY_HOME, KEY_I, KEY_INSERT, KEY_J, KEY_K, KEY_L, KEY_LEFT, KEY_M, KEY_META, KEY_MULTIPLY, KEY_N, KEY_NUMPAD_0, KEY_NUMPAD_1, KEY_NUMPAD_2, KEY_NUMPAD_3, KEY_NUMPAD_4, KEY_NUMPAD_5, KEY_NUMPAD_6, KEY_NUMPAD_7, KEY_NUMPAD_8, KEY_NUMPAD_9, KEY_O, KEY_OPEN_BRACKET, KEY_P, KEY_PAGE_DOWN, KEY_PAGE_UP, KEY_PAUSE, KEY_PERIOD, KEY_PRINT_SCREEN, KEY_Q, KEY_R, KEY_RETURN, KEY_RIGHT, KEY_S, KEY_SEMICOLON, KEY_SEPARATOR, KEY_SHIFT, KEY_SLASH, KEY_SPACE, KEY_SUBTRACT, KEY_T, KEY_TAB, KEY_U, KEY_UP, KEY_V, KEY_W, KEY_WINDOWS, KEY_X, KEY_Y, KEY_Z, Kernel, Key, Keyboard, KeyboardEvent, KeyboardMouseSource, LAYERID_DEPTH, LAYERID_IMMEDIATE, LAYERID_SKYBOX, LAYERID_UI, LAYERID_WORLD, LAYER_GIZMO, LAYER_HUD, LAYER_WORLD, LIGHTFALLOFF_INVERSESQUARED, LIGHTFALLOFF_LINEAR, LIGHTSHAPE_DISK, LIGHTSHAPE_PUNCTUAL, LIGHTSHAPE_RECT, LIGHTSHAPE_SPHERE, LIGHTTYPE_COUNT, LIGHTTYPE_DIRECTIONAL, LIGHTTYPE_OMNI, LIGHTTYPE_POINT, LIGHTTYPE_SPOT, LIGHT_COLOR_DIVIDER, Layer, LayerComposition, LayoutCalculator, LayoutChildComponent, LayoutChildComponentSystem, LayoutGroupComponent, LayoutGroupComponentSystem, Light, LightComponent, LightComponentSystem, LightingParams, Lightmapper, LitMaterial, LitOptions, LitShaderOptions, LocalizedAsset, MASK_AFFECT_DYNAMIC, MASK_AFFECT_LIGHTMAPPED, MASK_BAKE, MOTION_FREE, MOTION_LIMITED, MOTION_LOCKED, MOUSEBUTTON_LEFT, MOUSEBUTTON_MIDDLE, MOUSEBUTTON_NONE, MOUSEBUTTON_RIGHT, Mat3, Mat4, Material, MaterialHandler, Mesh, MeshInstance, MiniStats, Model, ModelComponent, ModelComponentSystem, ModelHandler, Morph, MorphInstance, MorphTarget, Mouse, MouseEvent, MultiTouchSource, Node, NullGraphicsDevice, ORIENTATION_HORIZONTAL, ORIENTATION_VERTICAL, OrbitController, OrientedBox, OutlineRenderer, PAD_1, PAD_2, PAD_3, PAD_4, PAD_DOWN, PAD_FACE_1, PAD_FACE_2, PAD_FACE_3, PAD_FACE_4, PAD_LEFT, PAD_L_SHOULDER_1, PAD_L_SHOULDER_2, PAD_L_STICK_BUTTON, PAD_L_STICK_X, PAD_L_STICK_Y, PAD_RIGHT, PAD_R_SHOULDER_1, PAD_R_SHOULDER_2, PAD_R_STICK_BUTTON, PAD_R_STICK_X, PAD_R_STICK_Y, PAD_SELECT, PAD_START, PAD_UP, PAD_VENDOR, PARTICLEMODE_CPU, PARTICLEMODE_GPU, PARTICLEORIENTATION_EMITTER, PARTICLEORIENTATION_SCREEN, PARTICLEORIENTATION_WORLD, PARTICLESORT_DISTANCE, PARTICLESORT_NEWER_FIRST, PARTICLESORT_NONE, PARTICLESORT_OLDER_FIRST, PIXELFORMAT_111110F, PIXELFORMAT_A8, PIXELFORMAT_ASTC_4x4, PIXELFORMAT_ASTC_4x4_SRGB, PIXELFORMAT_ATC_RGB, PIXELFORMAT_ATC_RGBA, PIXELFORMAT_BC6F, PIXELFORMAT_BC6UF, PIXELFORMAT_BC7, PIXELFORMAT_BC7_SRGBA, PIXELFORMAT_BGRA8, PIXELFORMAT_DEPTH, PIXELFORMAT_DEPTH16, PIXELFORMAT_DEPTHSTENCIL, PIXELFORMAT_DXT1, PIXELFORMAT_DXT1_SRGB, PIXELFORMAT_DXT3, PIXELFORMAT_DXT3_SRGBA, PIXELFORMAT_DXT5, PIXELFORMAT_DXT5_SRGBA, PIXELFORMAT_ETC1, PIXELFORMAT_ETC2_RGB, PIXELFORMAT_ETC2_RGBA, PIXELFORMAT_ETC2_SRGB, PIXELFORMAT_ETC2_SRGBA, PIXELFORMAT_L8, PIXELFORMAT_L8_A8, PIXELFORMAT_LA8, PIXELFORMAT_PVRTC_2BPP_RGBA_1, PIXELFORMAT_PVRTC_2BPP_RGB_1, PIXELFORMAT_PVRTC_4BPP_RGBA_1, PIXELFORMAT_PVRTC_4BPP_RGB_1, PIXELFORMAT_R16F, PIXELFORMAT_R16I, PIXELFORMAT_R16U, PIXELFORMAT_R32F, PIXELFORMAT_R32I, PIXELFORMAT_R32U, PIXELFORMAT_R4_G4_B4_A4, PIXELFORMAT_R5_G5_B5_A1, PIXELFORMAT_R5_G6_B5, PIXELFORMAT_R8, PIXELFORMAT_R8I, PIXELFORMAT_R8U, PIXELFORMAT_R8_G8_B8, PIXELFORMAT_R8_G8_B8_A8, PIXELFORMAT_RG16F, PIXELFORMAT_RG16I, PIXELFORMAT_RG16U, PIXELFORMAT_RG32I, PIXELFORMAT_RG32U, PIXELFORMAT_RG8, PIXELFORMAT_RG8I, PIXELFORMAT_RG8U, PIXELFORMAT_RGB16F, PIXELFORMAT_RGB32F, PIXELFORMAT_RGB565, PIXELFORMAT_RGB8, PIXELFORMAT_RGBA16F, PIXELFORMAT_RGBA16I, PIXELFORMAT_RGBA16U, PIXELFORMAT_RGBA32F, PIXELFORMAT_RGBA32I, PIXELFORMAT_RGBA32U, PIXELFORMAT_RGBA4, PIXELFORMAT_RGBA5551, PIXELFORMAT_RGBA8, PIXELFORMAT_RGBA8I, PIXELFORMAT_RGBA8U, PIXELFORMAT_SBGRA8, PIXELFORMAT_SRGB, PIXELFORMAT_SRGB8, PIXELFORMAT_SRGBA, PIXELFORMAT_SRGBA8, PRIMITIVE_LINELOOP, PRIMITIVE_LINES, PRIMITIVE_LINESTRIP, PRIMITIVE_POINTS, PRIMITIVE_TRIANGLES, PRIMITIVE_TRIFAN, PRIMITIVE_TRISTRIP, PROJECTION_ORTHOGRAPHIC, PROJECTION_PERSPECTIVE, ParticleEmitter, ParticleSystemComponent, ParticleSystemComponentSystem, Picker, Plane, PlaneGeometry, Pose, PostEffect, PostEffectQueue, ProgramLibrary, QuadRender, Quat, REFLECTIONSRC_CUBEMAP, REFLECTIONSRC_ENVATLAS, REFLECTIONSRC_ENVATLASHQ, REFLECTIONSRC_NONE, REFLECTIONSRC_SPHEREMAP, RENDERSTYLE_POINTS, RENDERSTYLE_SOLID, RENDERSTYLE_WIREFRAME, RESOLUTION_AUTO, RESOLUTION_FIXED, RIGIDBODY_ACTIVE_TAG, RIGIDBODY_CF_KINEMATIC_OBJECT, RIGIDBODY_CF_NORESPONSE_OBJECT, RIGIDBODY_CF_STATIC_OBJECT, RIGIDBODY_DISABLE_DEACTIVATION, RIGIDBODY_DISABLE_SIMULATION, RIGIDBODY_ISLAND_SLEEPING, RIGIDBODY_TYPE_DYNAMIC, RIGIDBODY_TYPE_KINEMATIC, RIGIDBODY_TYPE_STATIC, RIGIDBODY_WANTS_DEACTIVATION, Ray, RaycastResult, ReadStream, RenderComponent, RenderComponentSystem, RenderHandler, RenderPass, RenderPassBloom, RenderPassCameraFrame, RenderPassColorGrab, RenderPassCompose, RenderPassDepthAwareBlur, RenderPassDof, RenderPassDownsample, RenderPassForward, RenderPassPrepass, RenderPassShaderQuad, RenderPassSsao, RenderPassTAA, RenderPassUpsample, RenderTarget, ResourceHandler, ResourceLoader, RigidBodyComponent, RigidBodyComponentSystem, RotateGizmo, SAMPLETYPE_DEPTH, SAMPLETYPE_FLOAT, SAMPLETYPE_INT, SAMPLETYPE_UINT, SAMPLETYPE_UNFILTERABLE_FLOAT, SCALEMODE_BLEND, SCALEMODE_NONE, SCROLLBAR_VISIBILITY_SHOW_ALWAYS, SCROLLBAR_VISIBILITY_SHOW_WHEN_REQUIRED, SCROLL_MODE_BOUNCE, SCROLL_MODE_CLAMP, SCROLL_MODE_INFINITE, SEMANTIC_ATTR0, SEMANTIC_ATTR1, SEMANTIC_ATTR10, SEMANTIC_ATTR11, SEMANTIC_ATTR12, SEMANTIC_ATTR13, SEMANTIC_ATTR14, SEMANTIC_ATTR15, SEMANTIC_ATTR2, SEMANTIC_ATTR3, SEMANTIC_ATTR4, SEMANTIC_ATTR5, SEMANTIC_ATTR6, SEMANTIC_ATTR7, SEMANTIC_ATTR8, SEMANTIC_ATTR9, SEMANTIC_BLENDINDICES, SEMANTIC_BLENDWEIGHT, SEMANTIC_COLOR, SEMANTIC_NORMAL, SEMANTIC_POSITION, SEMANTIC_TANGENT, SEMANTIC_TEXCOORD, SEMANTIC_TEXCOORD0, SEMANTIC_TEXCOORD1, SEMANTIC_TEXCOORD2, SEMANTIC_TEXCOORD3, SEMANTIC_TEXCOORD4, SEMANTIC_TEXCOORD5, SEMANTIC_TEXCOORD6, SEMANTIC_TEXCOORD7, SHADERDEF_BATCH, SHADERDEF_DIRLM, SHADERDEF_INSTANCING, SHADERDEF_LM, SHADERDEF_LMAMBIENT, SHADERDEF_MORPH_NORMAL, SHADERDEF_MORPH_POSITION, SHADERDEF_MORPH_TEXTURE_BASED_INT, SHADERDEF_NOSHADOW, SHADERDEF_SCREENSPACE, SHADERDEF_SKIN, SHADERDEF_TANGENTS, SHADERDEF_UV0, SHADERDEF_UV1, SHADERDEF_VCOLOR, SHADERLANGUAGE_GLSL, SHADERLANGUAGE_WGSL, SHADERPASS_ALBEDO, SHADERPASS_AO, SHADERPASS_EMISSION, SHADERPASS_FORWARD, SHADERPASS_GLOSS, SHADERPASS_LIGHTING, SHADERPASS_METALNESS, SHADERPASS_OPACITY, SHADERPASS_SPECULARITY, SHADERPASS_UV0, SHADERPASS_WORLDNORMAL, SHADERSTAGE_COMPUTE, SHADERSTAGE_FRAGMENT, SHADERSTAGE_VERTEX, SHADERTAG_MATERIAL, SHADER_FORWARD, SHADER_PICK, SHADER_PREPASS, SHADER_SHADOW, SHADOWUPDATE_NONE, SHADOWUPDATE_REALTIME, SHADOWUPDATE_THISFRAME, SHADOW_CASCADE_0, SHADOW_CASCADE_1, SHADOW_CASCADE_2, SHADOW_CASCADE_3, SHADOW_CASCADE_ALL, SHADOW_PCF1, SHADOW_PCF1_16F, SHADOW_PCF1_32F, SHADOW_PCF3, SHADOW_PCF3_16F, SHADOW_PCF3_32F, SHADOW_PCF5, SHADOW_PCF5_16F, SHADOW_PCF5_32F, SHADOW_PCSS_32F, SHADOW_VSM16, SHADOW_VSM32, SHADOW_VSM_16F, SHADOW_VSM_32F, SKYTYPE_BOX, SKYTYPE_DOME, SKYTYPE_INFINITE, SORTMODE_BACK2FRONT, SORTMODE_CUSTOM, SORTMODE_FRONT2BACK, SORTMODE_MANUAL, SORTMODE_MATERIALMESH, SORTMODE_NONE, SPECOCC_AO, SPECOCC_GLOSSDEPENDENT, SPECOCC_NONE, SPRITETYPE_ANIMATED, SPRITETYPE_SIMPLE, SPRITE_RENDERMODE_SIMPLE, SPRITE_RENDERMODE_SLICED, SPRITE_RENDERMODE_TILED, SSAOTYPE_COMBINE, SSAOTYPE_LIGHTING, SSAOTYPE_NONE, STENCILOP_DECREMENT, STENCILOP_DECREMENTWRAP, STENCILOP_INCREMENT, STENCILOP_INCREMENTWRAP, STENCILOP_INVERT, STENCILOP_KEEP, STENCILOP_REPLACE, STENCILOP_ZERO, ScaleGizmo, Scene, SceneHandler, SceneRegistry, SceneRegistryItem, SceneSettingsHandler, ScopeId, ScopeSpace, ScreenComponent, ScreenComponentSystem, Script, ScriptAttributes, ScriptComponent, ScriptComponentSystem, ScriptHandler, ScriptRegistry, ScriptType, ScrollViewComponent, ScrollViewComponentSystem, ScrollbarComponent, ScrollbarComponentSystem, Shader, ShaderChunks, ShaderHandler, ShaderMaterial, ShaderPass, ShaderUtils, SingleContactResult, SingleGestureSource, Skeleton, Skin, SkinBatchInstance, SkinInstance, Sky, SortedLoopArray, Sound, SoundComponent, SoundComponentSystem, SoundInstance, SoundInstance3d, SoundManager, SoundSlot, SphereGeometry, Sprite, SpriteAnimationClip, SpriteComponent, SpriteComponentSystem, SpriteHandler, StandardMaterial, StandardMaterialOptions, StencilParameters, StorageBuffer, TEXHINT_ASSET, TEXHINT_LIGHTMAP, TEXHINT_NONE, TEXHINT_SHADOWMAP, TEXPROPERTY_ADDRESS_U, TEXPROPERTY_ADDRESS_V, TEXPROPERTY_ADDRESS_W, TEXPROPERTY_ALL, TEXPROPERTY_ANISOTROPY, TEXPROPERTY_COMPARE_FUNC, TEXPROPERTY_COMPARE_ON_READ, TEXPROPERTY_MAG_FILTER, TEXPROPERTY_MIN_FILTER, TEXTUREDIMENSION_1D, TEXTUREDIMENSION_2D, TEXTUREDIMENSION_2D_ARRAY, TEXTUREDIMENSION_3D, TEXTUREDIMENSION_CUBE, TEXTUREDIMENSION_CUBE_ARRAY, TEXTURELOCK_NONE, TEXTURELOCK_READ, TEXTURELOCK_WRITE, TEXTUREPROJECTION_CUBE, TEXTUREPROJECTION_EQUIRECT, TEXTUREPROJECTION_NONE, TEXTUREPROJECTION_OCTAHEDRAL, TEXTURETYPE_DEFAULT, TEXTURETYPE_RGBE, TEXTURETYPE_RGBM, TEXTURETYPE_RGBP, TEXTURETYPE_SWIZZLEGGGR, TONEMAP_ACES, TONEMAP_ACES2, TONEMAP_FILMIC, TONEMAP_HEJL, TONEMAP_LINEAR, TONEMAP_NEUTRAL, TONEMAP_NONE, TRACEID_BINDGROUPFORMAT_ALLOC, TRACEID_BINDGROUP_ALLOC, TRACEID_COMPUTEPIPELINE_ALLOC, TRACEID_ELEMENT, TRACEID_GPU_TIMINGS, TRACEID_OCTREE_RESOURCES, TRACEID_PIPELINELAYOUT_ALLOC, TRACEID_RENDERPIPELINE_ALLOC, TRACEID_RENDER_ACTION, TRACEID_RENDER_FRAME, TRACEID_RENDER_FRAME_TIME, TRACEID_RENDER_PASS, TRACEID_RENDER_PASS_DETAIL, TRACEID_RENDER_QUEUE, TRACEID_RENDER_TARGET_ALLOC, TRACEID_SHADER_ALLOC, TRACEID_SHADER_COMPILE, TRACEID_TEXTURES, TRACEID_TEXTURE_ALLOC, TRACEID_VRAM_IB, TRACEID_VRAM_SB, TRACEID_VRAM_TEXTURE, TRACEID_VRAM_VB, TYPE_FLOAT16, TYPE_FLOAT32, TYPE_INT16, TYPE_INT32, TYPE_INT8, TYPE_UINT16, TYPE_UINT32, TYPE_UINT8, Tags, Template, TemplateHandler, TextElement, TextHandler, Texture, TextureAtlas, TextureAtlasHandler, TextureHandler, TextureUtils, TorusGeometry, Touch, TouchDevice, TouchEvent, Tracing, TransformFeedback, TransformGizmo, TranslateGizmo, Tri, UNIFORMTYPE_BOOL, UNIFORMTYPE_BOOLARRAY, UNIFORMTYPE_BVEC2, UNIFORMTYPE_BVEC2ARRAY, UNIFORMTYPE_BVEC3, UNIFORMTYPE_BVEC3ARRAY, UNIFORMTYPE_BVEC4, UNIFORMTYPE_BVEC4ARRAY, UNIFORMTYPE_FLOAT, UNIFORMTYPE_FLOATARRAY, UNIFORMTYPE_INT, UNIFORMTYPE_INTARRAY, UNIFORMTYPE_ITEXTURE2D, UNIFORMTYPE_ITEXTURE2D_ARRAY, UNIFORMTYPE_ITEXTURE3D, UNIFORMTYPE_ITEXTURECUBE, UNIFORMTYPE_IVEC2, UNIFORMTYPE_IVEC2ARRAY, UNIFORMTYPE_IVEC3, UNIFORMTYPE_IVEC3ARRAY, UNIFORMTYPE_IVEC4, UNIFORMTYPE_IVEC4ARRAY, UNIFORMTYPE_MAT2, UNIFORMTYPE_MAT3, UNIFORMTYPE_MAT4, UNIFORMTYPE_MAT4ARRAY, UNIFORMTYPE_TEXTURE2D, UNIFORMTYPE_TEXTURE2D_ARRAY, UNIFORMTYPE_TEXTURE2D_SHADOW, UNIFORMTYPE_TEXTURE3D, UNIFORMTYPE_TEXTURECUBE, UNIFORMTYPE_TEXTURECUBE_SHADOW, UNIFORMTYPE_UINT, UNIFORMTYPE_UINTARRAY, UNIFORMTYPE_UTEXTURE2D, UNIFORMTYPE_UTEXTURE2D_ARRAY, UNIFORMTYPE_UTEXTURE3D, UNIFORMTYPE_UTEXTURECUBE, UNIFORMTYPE_UVEC2, UNIFORMTYPE_UVEC2ARRAY, UNIFORMTYPE_UVEC3, UNIFORMTYPE_UVEC3ARRAY, UNIFORMTYPE_UVEC4, UNIFORMTYPE_UVEC4ARRAY, UNIFORMTYPE_VEC2, UNIFORMTYPE_VEC2ARRAY, UNIFORMTYPE_VEC3, UNIFORMTYPE_VEC3ARRAY, UNIFORMTYPE_VEC4, UNIFORMTYPE_VEC4ARRAY, UNIFORM_BUFFER_DEFAULT_SLOT_NAME, UNUSED_UNIFORM_NAME, URI, UniformBufferFormat, UniformFormat, UsdzExporter, VIEW_CENTER, VIEW_LEFT, VIEW_RIGHT, Vec2, Vec3, Vec4, VertexBuffer, VertexFormat, VertexIterator, ViewCube, WasmModule, WebglGraphicsDevice, WebgpuGraphicsDevice, WorldClusters, XRDEPTHSENSINGFORMAT_F32, XRDEPTHSENSINGFORMAT_L8A8, XRDEPTHSENSINGFORMAT_R16U, XRDEPTHSENSINGUSAGE_CPU, XRDEPTHSENSINGUSAGE_GPU, XREYE_LEFT, XREYE_NONE, XREYE_RIGHT, XRHAND_LEFT, XRHAND_NONE, XRHAND_RIGHT, XRPAD_A, XRPAD_B, XRPAD_SQUEEZE, XRPAD_STICK_BUTTON, XRPAD_STICK_X, XRPAD_STICK_Y, XRPAD_TOUCHPAD_BUTTON, XRPAD_TOUCHPAD_X, XRPAD_TOUCHPAD_Y, XRPAD_TRIGGER, XRSPACE_BOUNDEDFLOOR, XRSPACE_LOCAL, XRSPACE_LOCALFLOOR, XRSPACE_UNBOUNDED, XRSPACE_VIEWER, XRTARGETRAY_GAZE, XRTARGETRAY_POINTER, XRTARGETRAY_SCREEN, XRTRACKABLE_MESH, XRTRACKABLE_PLANE, XRTRACKABLE_POINT, XRTYPE_AR, XRTYPE_INLINE, XRTYPE_VR, XrAnchor, XrAnchors, XrDomOverlay, XrFinger, XrHand, XrHitTest, XrHitTestSource, XrImageTracking, XrInput, XrInputSource, XrJoint, XrLightEstimation, XrManager, XrMeshDetection, XrPlane, XrPlaneDetection, XrTrackedImage, XrView, XrViews, ZoneComponent, ZoneComponentSystem, ambientSrcNames, app, basisInitialize, bindGroupNames, blendNames, calculateNormals, calculateTangents, createBox, createCapsule, createCone, createCylinder, createGraphicsDevice, createMesh, createPlane, createScript, createShader, createShaderFromCode, createSphere, createTorus, createURI, cubemaProjectionNames, ditherNames, dracoInitialize, drawFullscreenQuad, drawQuadWithShader, extend, fresnelNames, gammaNames, getPixelFormatArrayType, getReservedScriptNames, getTouchTargetCoords, guid, http, indexFormatByteSize, isCompressedPixelFormat, isIntegerPixelFormat, isSrgbPixelFormat, lightFalloffNames, lightShapeNames, lightTypeNames, math, now, path, pixelFormatGammaToLinear, pixelFormatInfo, pixelFormatLinearToGamma, platform, primitiveGlslToWgslTypeMap, reflectionSrcNames, registerScript, reprojectTexture, requiresManualGamma, revision, script, semanticToLocation, shaderChunks, shadowTypeInfo, specularOcclusionNames, spriteRenderModeNames, string, tonemapNames, typedArrayIndexFormats, typedArrayIndexFormatsByteSize, typedArrayToType, typedArrayTypes, typedArrayTypesByteSize, uniformTypeToName, uniformTypeToNameMapWGSL, uniformTypeToNameWGSL, uniformTypeToStorage, version, vertexTypesNames };\n","import { WasmModule, basisInitialize, dracoInitialize } from 'playcanvas';\n\nexport const loadModules = function (modules, urlPrefix) {\n\n    return new Promise((resolve) => {\n\n        if (typeof modules === \"undefined\" || modules.length === 0) {\n\n            resolve();\n\n        } else {\n            let remaining = modules.length;\n            const moduleLoaded = () => {\n                if (--remaining === 0) {\n                    resolve();\n                }\n            };\n\n            modules.forEach(function (m) {\n                WasmModule.setConfig(m.moduleName, {\n                    glueUrl: urlPrefix + m.glueUrl,\n                    wasmUrl: urlPrefix + m.wasmUrl,\n                    fallbackUrl: urlPrefix + m.fallbackUrl\n                });\n\n                if (!m.hasOwnProperty('preload') || m.preload) {\n                    if (m.moduleName === 'BASIS') {\n                        // preload basis transcoder\n                        basisInitialize();\n                        moduleLoaded();\n                    } else if (m.moduleName === 'DracoDecoderModule') {\n                        // preload draco decoder\n                        if (dracoInitialize) {\n                            // 1.63 onwards\n                            dracoInitialize();\n                            moduleLoaded();\n                        } else {\n                            // 1.62 and earlier\n                            WasmModule.getInstance(m.moduleName, moduleLoaded);\n                        }\n                    } else {\n                        // load remaining modules in global scope\n                        WasmModule.getInstance(m.moduleName, moduleLoaded);\n                    }\n                } else {\n                    moduleLoaded();\n                }\n            });\n        }\n    });\n};\n","import { script } from 'playcanvas';\n\n \nexport const ASSET_PREFIX = \"https://s3-eu-west-1.amazonaws.com/apps.playcanvas.com/becf6b48/\";\nexport const SCRIPT_PREFIX = \"\";\nexport const SCENE_PATH = \"2164786.json\";\n\nexport const CONTEXT_OPTIONS = {\n    'antialias': false,\n    'alpha': false,\n    'preserveDrawingBuffer': true,\n    'deviceTypes': [`webgpu`, `webgl2`, `webgl1`],\n    'powerPreference': \"high-performance\"\n};\n\nexport const SCRIPTS = [ 212687319, 227656362, 212695978, 230074247, 212704391, 212707949, 212709366, 212709367, 212712427, 212712429, 212734547, 212712428, 213125779, 213148932, 213243630, 213245700, 213248729, 213351950, 213352870, 213687585, 213963594, 215409415, 217224861, 213148332, 226512314, 226519361, 226522908, 227656257, 227656275, 227656276, 227656285, 227713295, 230074250, 240163824, 240163847, 242330019, 242330020, 242330021, 249603605 ];\nexport const CONFIG_FILENAME = \"https://s3-eu-west-1.amazonaws.com/apps.playcanvas.com/becf6b48/config.json\";\nexport const INPUT_SETTINGS = {\n    useKeyboard: true,\n    useMouse: true,\n    useGamepads: false,\n    useTouch: true\n};\nexport const PRELOAD_MODULES = [\n    {'moduleName' : 'Ammo', 'glueUrl' : 'files/assets/242354336/1/ammo.wasm.js', 'wasmUrl' : 'files/assets/242354337/1/ammo.wasm.wasm', 'fallbackUrl' : 'files/assets/242354335/1/ammo.js', 'preload' : true},\n];\n    \nscript.legacy = false;\n","pc.script.createLoadingScreen(function (app) {\n    app.connected = false;\n\n    var showSplash = function () {\n        var wrapper = document.createElement(\"div\");\n        wrapper.id = \"application-splash-wrapper\";\n        document.body.appendChild(wrapper);\n\n        var loadGoogleFont = function () {\n            var link = document.createElement(\"link\");\n            link.href = \"https://fonts.googleapis.com/css2?family=Poppins:wght@300;500;700&display=swap\";\n            link.rel = \"stylesheet\";\n            document.head.appendChild(link);\n        };\n        loadGoogleFont();\n\n        var splash = document.createElement(\"div\");\n        splash.id = \"application-splash\";\n        wrapper.appendChild(splash);\n        splash.style.display = \"none\";\n\n        var logo = document.createElement(\"img\");\n        logo.src = \"https://static.wixstatic.com/media/4c61ee_5ec5e4401c704bb0b03ad84f6e84e3c2~mv2.png/v1/fill/w_884,h_517,al_c,q_90,enc_avif,quality_auto/preWatch_Labs_Logo_PNG.png\";\n        splash.appendChild(logo);\n        logo.onload = function () {\n            splash.style.display = \"block\";\n        };\n\n        var text = document.createElement(\"div\");\n        text.id = \"loading-text\";\n        text.innerHTML = \"Charging...\";\n\n        splash.appendChild(text);\n\n        var container = document.createElement(\"div\");\n        container.id = \"progress-bar-container\";\n        splash.appendChild(container);\n\n        var bar = document.createElement(\"div\");\n        bar.id = \"progress-bar\";\n        container.appendChild(bar);\n    };\n\n    var hideSplash = function () {\n        var splash = document.getElementById(\"application-splash-wrapper\");\n        if (splash && splash.parentElement) {\n            splash.parentElement.removeChild(splash);\n        }\n    };\n\n    var setProgress = function (value) {\n        var bar = document.getElementById(\"progress-bar\");\n        if (bar) {\n            value = Math.min(1, Math.max(0, value));\n            bar.style.width = value * 100 + \"%\";\n        }\n    };\n\n    var createCss = function () {\n        var css = [\n            \"body { background-color: #000000; }\",\n            \"#application-splash-wrapper { position: absolute; top: 0; left: 0; height: 100%; width: 100%; background-color: #000000; }\",\n            \"#application-splash { position: absolute; top: calc(50% - 128px); width: 350px; left: calc(50% - 175px); text-align: center; }\",\n            \"#application-splash img { width: 100%; }\",\n            \"#loading-text { margin: 15px 0; font-family: 'Poppins', sans-serif; font-size: 18px; color: #FFFFFF; text-align: center; }\",\n            \"#progress-bar-container { margin: 20px auto 0 auto; height: 2px; width: 100%; background-color: #252525; }\",\n            \"#progress-bar { width: 0%; height: 100%; background: linear-gradient(to right, #D3D3D3, #AAAAff); box-shadow: 0 0 10px rgba(255, 255, 255, .9), 0 0 25px rgba(255, 255, 255, 0.8), 0 0 50px rgba(255, 255, 255, 0.8); }\",\n            \"@media (max-width: 480px) { #application-splash { width: 170px; left: calc(50% - 85px); } }\"\n        ].join(\"\\n\");\n\n        var style = document.createElement(\"style\");\n        style.type = \"text/css\";\n        if (style.styleSheet) {\n            style.styleSheet.cssText = css;\n        } else {\n            style.appendChild(document.createTextNode(css));\n        }\n\n        document.head.appendChild(style);\n    };\n\n    function showAuthForm(supabaseScript) {\n        const form = document.querySelector(\"#auth-wrapper\");\n\n        form.onsubmit = async function (event) {\n            event.preventDefault();\n            const username = document.getElementById(\"username\").value;\n            const password = document.getElementById(\"password\").value;\n\n            const isValid = await supabaseScript.tryConnect(username, password);\n            if (isValid) {\n                form.style.display = \"none\";\n                app.connected = true;\n            } else {\n                alert(\"Invalid username or password. Please try again.\");\n            }\n        };\n    }\n\n    createCss();\n    showSplash();\n\n    app.on(\"supabase:ready\", function (supabaseScript) {\n        console.log(\"Supabase ready\");\n        hideSplash();\n        showAuthForm(supabaseScript);\n    });\n\n    app.on(\"preload:end\", function () {\n        app.off(\"preload:progress\");\n    });\n\n    app.on(\"preload:progress\", setProgress);\n});\n"],"names":["TRACEID_RENDER_FRAME","TRACEID_RENDER_FRAME_TIME","TRACEID_RENDER_PASS","TRACEID_RENDER_PASS_DETAIL","TRACEID_RENDER_ACTION","TRACEID_RENDER_TARGET_ALLOC","TRACEID_TEXTURE_ALLOC","TRACEID_SHADER_ALLOC","TRACEID_SHADER_COMPILE","TRACEID_VRAM_TEXTURE","TRACEID_VRAM_VB","TRACEID_VRAM_IB","TRACEID_VRAM_SB","TRACEID_BINDGROUP_ALLOC","TRACEID_BINDGROUPFORMAT_ALLOC","TRACEID_RENDERPIPELINE_ALLOC","TRACEID_COMPUTEPIPELINE_ALLOC","TRACEID_PIPELINELAYOUT_ALLOC","TRACEID_ELEMENT","TRACEID_TEXTURES","TRACEID_RENDER_QUEUE","TRACEID_OCTREE_RESOURCES","TRACEID_GPU_TIMINGS","version","revision","extend","target","ex","prop","copy","Array","isArray","guid","create","replace","c","r","Math","random","v","toString","path","delimiter","join","sections","result","i","length","one","two","normalize","pathname","lead","startsWith","trail","endsWith","parts","split","cleaned","slice","push","lastDelimiterIndex","lastIndexOf","substring","getBasename","getDirectory","getExtension","ext","pop","isRelativePath","charAt","match","extractPath","detectPassiveEvents","opts","Object","defineProperty","get","window","addEventListener","removeEventListener","e","ua","navigator","userAgent","environment","global","platformName","test","browserName","xbox","touch","maxTouchPoints","gamepads","getGamepads","webkitGetGamepads","workers","Worker","passiveEvents","platform","name","globalThis","self","browser","worker","desktop","includes","mobile","ios","android","ASCII_LOWERCASE","ASCII_UPPERCASE","ASCII_LETTERS","HIGH_SURROGATE_BEGIN","HIGH_SURROGATE_END","LOW_SURROGATE_BEGIN","LOW_SURROGATE_END","ZERO_WIDTH_JOINER","REGIONAL_INDICATOR_BEGIN","REGIONAL_INDICATOR_END","FITZPATRICK_MODIFIER_BEGIN","FITZPATRICK_MODIFIER_END","DIACRITICAL_MARKS_BEGIN","DIACRITICAL_MARKS_END","VARIATION_MODIFIER_BEGIN","VARIATION_MODIFIER_END","getCodePointData","string","size","first","charCodeAt","second","code","long","isCodeBetween","begin","end","codeData","numCharsToTakeForNextSymbol","index","format","s","args","getCodePoint","codePointData","getCodePoints","TypeError","arr","codePoint","getSymbols","output","take","ch","char","fromCodePoint","map","String","fromCharCode","EventHandle","off","_removed","handler","offByHandle","on","callback","scope","_addCallback","once","removed","value","toJSON","key","undefined","constructor","_once","EventHandler","initEventHandler","_callbacks","Map","_callbackActive","has","set","callbackActive","evt","callbacks","values","clear","delete","splice","handle","ind","indexOf","fire","arg1","arg2","arg3","arg4","arg5","arg6","arg7","arg8","callbacksInitial","call","existingCallback","hasEvent","IndexedList","item","_index","Error","location","_list","remove","idx","list","cachedResult","func","uninitToken","Impl","loadScript","url","document","createElement","setAttribute","onload","onerror","body","appendChild","loadWasm","moduleName","config","loadUrl","wasmSupported","glueUrl","wasmUrl","fallbackUrl","err","module","locateFile","onAbort","then","instance","getModule","modules","hasOwnProperty","initializing","initialize","errorHandler","console","error","forEach","WebAssembly","instantiate","Module","Uint8Array","of","Instance","WasmModule","setConfig","getConfig","getInstance","ReadStream","remainingBytes","dataView","byteLength","offset","reset","skip","bytes","align","_inc","amount","readChar","getUint8","readChars","numChars","readU8","readU16","getUint16","readU32","getUint32","readU64","readU32be","readArray","readLine","view","arraybuffer","DataView","SortedLoopArray","_binarySearch","left","right","items","search","_sortBy","middle","current","floor","_doSort","a","b","sortBy","insert","loopIndex","append","sort","_sortHandler","bind","Tags","add","changed","tags","_processArguments","_parent","query","_has","multiple","t","flat","tmp","parent","EVENT_ADD","EVENT_REMOVE","EVENT_CHANGE","now","performance","Date","createURI","options","authority","scheme","host","hostpath","fragment","re","URI","getQuery","queryParams","decodeURIComponent","queryParam","pair","setQuery","params","q","encodeURIComponent","uri","Tracing","channel","enabled","_traceChannels","Set","stack","CURVE_LINEAR","CURVE_SMOOTHSTEP","CURVE_SPLINE","CURVE_STEP","math","DEG_TO_RAD","PI","RAD_TO_DEG","clamp","min","max","intToBytes24","g","intToBytes32","bytesToInt24","bytesToInt32","lerp","alpha","lerpAngle","powerOfTwo","x","nextPowerOfTwo","val","nearestPowerOfTwo","pow","round","log2","diff","smoothstep","smootherstep","roundUp","numToRound","ceil","between","num","inclusive","Color","clone","cstr","rhs","equals","lhs","linear","src","gamma","mulScalar","scalar","fromString","hex","parseInt","fromArray","asArray","toFixed","aa","toArray","BLACK","freeze","BLUE","CYAN","GRAY","GREEN","MAGENTA","RED","WHITE","YELLOW","CurveEvaluator","evaluate","time","forceReset","_left","_right","_reset","type","_curve","_p0","_recip","_p1","_evaluateHermite","_m0","_m1","keys","len","Infinity","isFinite","_calcTangents","d","s1_","s2_","tension","s1","s2","a_","d_","p0","p1","m0","m1","t2","twot","omt","omt2","curve","Curve","_eval","closest","abs","quantize","precision","Float32Array","step","quantizeClamped","data","CurveSet","curves","_type","numCurves","ev","arg","floatView","int32View","Int32Array","buffer","FloatPacking","float2Half","bits","m","float2RGBA8","intBits","Kernel","concentric","numRings","numPoints","kernel","spacing","ring","radius","circumference","pointsPerRing","angleStep","point","angle","cos","y","sin","Vec3","z","add2","addScalar","addScaled","cross","lx","ly","lz","rx","ry","rz","distance","sqrt","div","div2","divScalar","dot","equalsApprox","epsilon","lengthSq","mul","mul2","invLength","project","a_dot_b","b_dot_b","sub","sub2","subScalar","ZERO","HALF","ONE","UP","DOWN","RIGHT","LEFT","FORWARD","BACK","Mat3","dst","getX","getY","getZ","l","isIdentity","setIdentity","transpose","setFromMat4","setFromQuat","qx","qy","qz","qw","w","x2","y2","z2","xx","xy","xz","yy","yz","zz","wx","wy","wz","invertMat4","a0","a1","a2","a4","a5","a6","a8","a9","a10","b11","b21","b31","b12","b22","b32","b13","b23","b33","det","invDet","transformVector","vec","res","IDENTITY","Vec2","rotate","degrees","atan2","angleTo","angleRad","Vec4","_halfSize$1","x$1","scale","Mat4","_getPerspectiveHalfSize","halfSize","fov","aspect","znear","fovIsHorizontal","tan","a00","a01","a02","a03","a11","a12","a13","a20","a21","a22","a23","a30","a31","a32","a33","b0","b1","b2","b3","mulAffine2","transformPoint","transformVec4","setLookAt","position","up","setFrustum","bottom","top","zfar","temp1","temp2","temp3","temp4","setPerspective","setOrtho","near","far","setFromAxisAngle","axis","tx","ty","setTranslate","setScale","setViewport","width","height","setReflection","normal","invert","b00","b01","b02","b03","b04","b05","b06","b07","b08","b09","b10","setTRS","sx","sy","sz","getTranslation","getScale","scaleSign","setFromEulerAngles","ey","ez","c1","c2","s3","c3","getEulerAngles","eulers","asin","halfPi","Quat","conjugate","other","getAxisAngle","rad","acos","q1x","q1y","q1z","q1w","q2x","q2y","q2z","q2w","sa","ca","halfToRad","cx","cy","cz","m00","m01","m02","m10","m11","m12","m20","m21","m22","setFromDirections","from","to","dotProduct","Number","EPSILON","slerp","lw","rw","cosHalfTheta","halfTheta","sinHalfTheta","ratioA","ratioB","ix","iy","iz","iw","tmpVecA$1","tmpVecB$1","tmpVecC","tmpVecD","tmpVecE","BoundingBox","tc","center","tcx","tcy","tcz","th","halfExtents","thx","thy","thz","tminx","tmaxx","tminy","tmaxy","tminz","tmaxz","oc","ocx","ocy","ocz","oh","ohx","ohy","ohz","ominx","omaxx","ominy","omaxy","ominz","omaxz","intersects","aMax","getMax","aMin","getMin","bMax","bMin","_intersectsRay","ray","tMin","origin","tMax","dir","direction","MAX_VALUE","realMin","realMax","minMax","maxMin","_fastIntersectsRay","prod","absDiff","absDir","rayDir","intersectsRay","setMinMax","_min","_max","containsPoint","h","closestPoint","setFromTransformedAabb","aabb","ignoreScale","ac","ar","mx0","mx1","mx2","my0","my1","my2","mz0","mz1","mz2","computeMinMax","vertices","numVerts","minx","miny","minz","maxx","maxy","maxz","n","compute","intersectsBoundingSphere","sphere","sq","_distanceToBoundingSphereSq","boxMin","boxMax","out","pn","_expand","expandMin","expandMax","tmpVecA","tmpVecB","BoundingSphere","lenSq","discr","totalRadius","Plane","intersectsLine","start","d0","d1","denominator","nx","ny","nz","setFromPointNormal","Frustum","planes","matrix","m03","m13","m23","m30","m31","m32","m33","p","containsSphere","Ray","tmpRay","tmpVec3$2","tmpSphere","tmpMat4$1","OrientedBox","worldTransform","_worldTransform","_modelTransform","_aabb","e1","e2","q$3","EPSILON$1","Tri","v0","v1","v2","f","u","ADDRESS_REPEAT","ADDRESS_CLAMP_TO_EDGE","ADDRESS_MIRRORED_REPEAT","BLENDMODE_ZERO","BLENDMODE_ONE","BLENDMODE_SRC_COLOR","BLENDMODE_ONE_MINUS_SRC_COLOR","BLENDMODE_DST_COLOR","BLENDMODE_ONE_MINUS_DST_COLOR","BLENDMODE_SRC_ALPHA","BLENDMODE_SRC_ALPHA_SATURATE","BLENDMODE_ONE_MINUS_SRC_ALPHA","BLENDMODE_DST_ALPHA","BLENDMODE_ONE_MINUS_DST_ALPHA","BLENDMODE_CONSTANT","BLENDMODE_ONE_MINUS_CONSTANT","BLENDEQUATION_ADD","BLENDEQUATION_SUBTRACT","BLENDEQUATION_REVERSE_SUBTRACT","BLENDEQUATION_MIN","BLENDEQUATION_MAX","BUFFERUSAGE_READ","BUFFERUSAGE_WRITE","BUFFERUSAGE_COPY_SRC","BUFFERUSAGE_COPY_DST","BUFFERUSAGE_INDEX","BUFFERUSAGE_VERTEX","BUFFERUSAGE_UNIFORM","BUFFERUSAGE_STORAGE","BUFFERUSAGE_INDIRECT","BUFFER_STATIC","BUFFER_DYNAMIC","BUFFER_STREAM","BUFFER_GPUDYNAMIC","CLEARFLAG_COLOR","CLEARFLAG_DEPTH","CLEARFLAG_STENCIL","CUBEFACE_POSX","CUBEFACE_NEGX","CUBEFACE_POSY","CUBEFACE_NEGY","CUBEFACE_POSZ","CUBEFACE_NEGZ","CULLFACE_NONE","CULLFACE_BACK","CULLFACE_FRONT","CULLFACE_FRONTANDBACK","FILTER_NEAREST","FILTER_LINEAR","FILTER_NEAREST_MIPMAP_NEAREST","FILTER_NEAREST_MIPMAP_LINEAR","FILTER_LINEAR_MIPMAP_NEAREST","FILTER_LINEAR_MIPMAP_LINEAR","FUNC_NEVER","FUNC_LESS","FUNC_EQUAL","FUNC_LESSEQUAL","FUNC_GREATER","FUNC_NOTEQUAL","FUNC_GREATEREQUAL","FUNC_ALWAYS","INDEXFORMAT_UINT8","INDEXFORMAT_UINT16","INDEXFORMAT_UINT32","indexFormatByteSize","PIXELFORMAT_A8","PIXELFORMAT_L8","PIXELFORMAT_LA8","PIXELFORMAT_RGB565","PIXELFORMAT_RGBA5551","PIXELFORMAT_RGBA4","PIXELFORMAT_RGB8","PIXELFORMAT_RGBA8","PIXELFORMAT_DXT1","PIXELFORMAT_DXT3","PIXELFORMAT_DXT5","PIXELFORMAT_RGB16F","PIXELFORMAT_RGBA16F","PIXELFORMAT_RGB32F","PIXELFORMAT_RGBA32F","PIXELFORMAT_R32F","PIXELFORMAT_DEPTH","PIXELFORMAT_DEPTHSTENCIL","PIXELFORMAT_111110F","PIXELFORMAT_SRGB8","PIXELFORMAT_SRGBA8","PIXELFORMAT_ETC1","PIXELFORMAT_ETC2_RGB","PIXELFORMAT_ETC2_RGBA","PIXELFORMAT_PVRTC_2BPP_RGB_1","PIXELFORMAT_PVRTC_2BPP_RGBA_1","PIXELFORMAT_PVRTC_4BPP_RGB_1","PIXELFORMAT_PVRTC_4BPP_RGBA_1","PIXELFORMAT_ASTC_4x4","PIXELFORMAT_ATC_RGB","PIXELFORMAT_ATC_RGBA","PIXELFORMAT_BGRA8","PIXELFORMAT_R8I","PIXELFORMAT_R8U","PIXELFORMAT_R16I","PIXELFORMAT_R16U","PIXELFORMAT_R32I","PIXELFORMAT_R32U","PIXELFORMAT_RG8I","PIXELFORMAT_RG8U","PIXELFORMAT_RG16I","PIXELFORMAT_RG16U","PIXELFORMAT_RG32I","PIXELFORMAT_RG32U","PIXELFORMAT_RGBA8I","PIXELFORMAT_RGBA8U","PIXELFORMAT_RGBA16I","PIXELFORMAT_RGBA16U","PIXELFORMAT_RGBA32I","PIXELFORMAT_RGBA32U","PIXELFORMAT_R16F","PIXELFORMAT_RG16F","PIXELFORMAT_R8","PIXELFORMAT_RG8","PIXELFORMAT_DXT1_SRGB","PIXELFORMAT_DXT3_SRGBA","PIXELFORMAT_DXT5_SRGBA","PIXELFORMAT_ETC2_SRGB","PIXELFORMAT_ETC2_SRGBA","PIXELFORMAT_ASTC_4x4_SRGB","PIXELFORMAT_SBGRA8","PIXELFORMAT_BC6F","PIXELFORMAT_BC6UF","PIXELFORMAT_BC7","PIXELFORMAT_BC7_SRGBA","PIXELFORMAT_DEPTH16","pixelFormatInfo","ldr","srgbFormat","srgb","blockSize","isInt","isCompressedPixelFormat","isSrgbPixelFormat","isIntegerPixelFormat","pixelFormatLinearToGamma","pixelFormatGammaToLinear","requiresManualGamma","info","getPixelFormatArrayType","Uint32Array","Int16Array","Uint16Array","Int8Array","PRIMITIVE_POINTS","PRIMITIVE_LINES","PRIMITIVE_LINELOOP","PRIMITIVE_LINESTRIP","PRIMITIVE_TRIANGLES","PRIMITIVE_TRISTRIP","PRIMITIVE_TRIFAN","SEMANTIC_POSITION","SEMANTIC_NORMAL","SEMANTIC_TANGENT","SEMANTIC_BLENDWEIGHT","SEMANTIC_BLENDINDICES","SEMANTIC_COLOR","SEMANTIC_TEXCOORD","SEMANTIC_TEXCOORD0","SEMANTIC_TEXCOORD1","SEMANTIC_TEXCOORD2","SEMANTIC_TEXCOORD3","SEMANTIC_TEXCOORD4","SEMANTIC_TEXCOORD5","SEMANTIC_TEXCOORD6","SEMANTIC_TEXCOORD7","SEMANTIC_ATTR0","SEMANTIC_ATTR1","SEMANTIC_ATTR2","SEMANTIC_ATTR3","SEMANTIC_ATTR4","SEMANTIC_ATTR5","SEMANTIC_ATTR6","SEMANTIC_ATTR7","SEMANTIC_ATTR8","SEMANTIC_ATTR9","SEMANTIC_ATTR10","SEMANTIC_ATTR11","SEMANTIC_ATTR12","SEMANTIC_ATTR13","SEMANTIC_ATTR14","SEMANTIC_ATTR15","SHADERTAG_MATERIAL","STENCILOP_KEEP","STENCILOP_ZERO","STENCILOP_REPLACE","STENCILOP_INCREMENT","STENCILOP_INCREMENTWRAP","STENCILOP_DECREMENT","STENCILOP_DECREMENTWRAP","STENCILOP_INVERT","TEXTURELOCK_NONE","TEXTURELOCK_READ","TEXTURELOCK_WRITE","TEXTURETYPE_DEFAULT","TEXTURETYPE_RGBM","TEXTURETYPE_RGBE","TEXTURETYPE_RGBP","TEXTURETYPE_SWIZZLEGGGR","TEXHINT_NONE","TEXHINT_SHADOWMAP","TEXHINT_ASSET","TEXHINT_LIGHTMAP","TEXTUREDIMENSION_1D","TEXTUREDIMENSION_2D","TEXTUREDIMENSION_2D_ARRAY","TEXTUREDIMENSION_CUBE","TEXTUREDIMENSION_CUBE_ARRAY","TEXTUREDIMENSION_3D","SAMPLETYPE_FLOAT","SAMPLETYPE_UNFILTERABLE_FLOAT","SAMPLETYPE_DEPTH","SAMPLETYPE_INT","SAMPLETYPE_UINT","TEXTUREPROJECTION_NONE","TEXTUREPROJECTION_CUBE","TEXTUREPROJECTION_EQUIRECT","TEXTUREPROJECTION_OCTAHEDRAL","SHADERLANGUAGE_GLSL","SHADERLANGUAGE_WGSL","TYPE_INT8","TYPE_UINT8","TYPE_INT16","TYPE_UINT16","TYPE_INT32","TYPE_UINT32","TYPE_FLOAT32","TYPE_FLOAT16","UNIFORMTYPE_BOOL","UNIFORMTYPE_INT","UNIFORMTYPE_FLOAT","UNIFORMTYPE_VEC2","UNIFORMTYPE_VEC3","UNIFORMTYPE_VEC4","UNIFORMTYPE_IVEC2","UNIFORMTYPE_IVEC3","UNIFORMTYPE_IVEC4","UNIFORMTYPE_BVEC2","UNIFORMTYPE_BVEC3","UNIFORMTYPE_BVEC4","UNIFORMTYPE_MAT2","UNIFORMTYPE_MAT3","UNIFORMTYPE_MAT4","UNIFORMTYPE_TEXTURE2D","UNIFORMTYPE_TEXTURECUBE","UNIFORMTYPE_FLOATARRAY","UNIFORMTYPE_TEXTURE2D_SHADOW","UNIFORMTYPE_TEXTURECUBE_SHADOW","UNIFORMTYPE_TEXTURE3D","UNIFORMTYPE_VEC2ARRAY","UNIFORMTYPE_VEC3ARRAY","UNIFORMTYPE_VEC4ARRAY","UNIFORMTYPE_MAT4ARRAY","UNIFORMTYPE_TEXTURE2D_ARRAY","UNIFORMTYPE_UINT","UNIFORMTYPE_UVEC2","UNIFORMTYPE_UVEC3","UNIFORMTYPE_UVEC4","UNIFORMTYPE_INTARRAY","UNIFORMTYPE_UINTARRAY","UNIFORMTYPE_BOOLARRAY","UNIFORMTYPE_IVEC2ARRAY","UNIFORMTYPE_UVEC2ARRAY","UNIFORMTYPE_BVEC2ARRAY","UNIFORMTYPE_IVEC3ARRAY","UNIFORMTYPE_UVEC3ARRAY","UNIFORMTYPE_BVEC3ARRAY","UNIFORMTYPE_IVEC4ARRAY","UNIFORMTYPE_UVEC4ARRAY","UNIFORMTYPE_BVEC4ARRAY","UNIFORMTYPE_ITEXTURE2D","UNIFORMTYPE_UTEXTURE2D","UNIFORMTYPE_ITEXTURECUBE","UNIFORMTYPE_UTEXTURECUBE","UNIFORMTYPE_ITEXTURE3D","UNIFORMTYPE_UTEXTURE3D","UNIFORMTYPE_ITEXTURE2D_ARRAY","UNIFORMTYPE_UTEXTURE2D_ARRAY","uniformTypeToName","uniformTypeToNameWGSL","uniformTypeToNameMapWGSL","names","uniformTypeToStorage","DEVICETYPE_WEBGL2","DEVICETYPE_WEBGPU","DEVICETYPE_NULL","SHADERSTAGE_VERTEX","SHADERSTAGE_FRAGMENT","SHADERSTAGE_COMPUTE","DISPLAYFORMAT_LDR","DISPLAYFORMAT_LDR_SRGB","DISPLAYFORMAT_HDR","TEXPROPERTY_MIN_FILTER","TEXPROPERTY_MAG_FILTER","TEXPROPERTY_ADDRESS_U","TEXPROPERTY_ADDRESS_V","TEXPROPERTY_ADDRESS_W","TEXPROPERTY_COMPARE_ON_READ","TEXPROPERTY_COMPARE_FUNC","TEXPROPERTY_ANISOTROPY","TEXPROPERTY_ALL","BINDGROUP_VIEW","BINDGROUP_MESH","BINDGROUP_MESH_UB","bindGroupNames","UNIFORM_BUFFER_DEFAULT_SLOT_NAME","UNUSED_UNIFORM_NAME","typedArrayTypes","typedArrayTypesByteSize","vertexTypesNames","typedArrayToType","typedArrayIndexFormats","typedArrayIndexFormatsByteSize","primitiveGlslToWgslTypeMap","semanticToLocation","id$d","BindBaseFormat","visibility","slot","scopeId","BindUniformBufferFormat","BindStorageBufferFormat","readOnly","BindTextureFormat","textureDimension","sampleType","hasSampler","samplerName","BindStorageTextureFormat","write","read","BindGroupFormat","destroy","impl","getTexture","textureFormatsMap","textureFormats","getStorageTexture","storageTextureFormatsMap","storageTextureFormats","loseContext","graphicsDevice","formats","uniformBufferFormats","storageBufferFormats","id","device","bufferFormatsMap","bf","tf","resolve","storageBufferFormatsMap","createBindGroupFormatImpl","DeviceCache","onCreate","_cache","TextureUtils","calcLevelDimension","dimension","mipLevel","calcMipLevelsCount","depth","calcLevelGpuSize","formatInfo","pixelSize","blockWidth","blockHeight","blockDepth","calcGpuSize","mipmaps","cubemap","id$c","Texture","textures","removeValue","adjustVramSizeTracking","_vram","_gpuSize","_levels","recreateImpl","upload","createTextureImpl","dirtyAll","_clearLevels","_cubemap","resize","_width","_height","_depth","_updateNumLevel","vram","tex","propertyChanged","flag","renderVersionDirty","renderVersion","maxLevels","requestedLevels","_numLevelsRequested","_numLevels","_mipmaps","lockedMode","_lockedMode","minFilter","_minFilter","_format","magFilter","_magFilter","addressU","_addressU","addressV","_addressV","addressW","_volume","_addressW","compareOnRead","_compareOnRead","compareFunc","_compareFunc","anisotropy","_anisotropy","isWebGPU","_needsMipmapsUpload","numLevels","storage","_storage","gpuSize","mips","pot","_compressed","array","_arrayLength","arrayLength","volume","_shadersDirty","currentSrgb","linearFormat","flipY","_flipY","_needsUpload","premultiplyAlpha","_premultiplyAlpha","encoding","_levelsUpdated","_mipmapsUploaded","lock","level","face","mode","_lockedLevel","levels","ArrayBuffer","setSource","source","invalid","_isBrowserInterface","HTMLVideoElement","videoWidth","videoHeight","_invalid","getSource","unlock","uploadImmediate","_integerFormat","projection","textureData","white","gray","black","pink","BuiltInTextures","texture","deviceCache$3","getBuiltInTexture","cache","pixels","id$b","DynamicBindGroup","offsets","BindGroup","defaultUniformBuffer","setUniformBuffer","uniformBuffer","uniformBuffers","dirty","setStorageBuffer","storageBuffer","storageBuffers","setTexture","renderVersionUpdated","setStorageTexture","storageTextures","updateUniformBuffers","update","textureFormat","storageTextureFormat","storageBufferFormat","uniformBufferOffsets","createBindGroupImpl","BitPacking","shift","mask","all","shifted","any","opMask","factorMask","colorOpShift","colorSrcFactorShift","colorDstFactorShift","alphaOpShift","alphaSrcFactorShift","alphaDstFactorShift","redWriteShift","greenWriteShift","blueWriteShift","alphaWriteShift","blendShift","allWriteMasks","allWriteShift","BlendState","blend","target0","setColorBlend","op","srcFactor","dstFactor","setAlphaBlend","setColorWrite","redWrite","greenWrite","blueWrite","alphaWrite","colorOp","colorSrcFactor","colorDstFactor","alphaOp","alphaSrcFactor","alphaDstFactor","allWrite","NOBLEND","NOWRITE","ALPHABLEND","ADDBLEND","StringIds","stringIds$4","funcMask","funcShift","writeShift","DepthState","updateKey","depthBias","_depthBias","depthBiasSlope","_depthBiasSlope","DEFAULT","NODEPTH","WRITEDEPTH","Version","globalId","idCounter","VersionedObject","increment","ScopeId","setValue","versionObject","getValue","ScopeSpace","variables","uniformName","uniform","id$a","VertexBuffer","buffers","initialized","vb","getFormat","getUsage","usage","getNumVertices","numVertices","setData","numBytes","createVertexBufferImpl","verticesByteSize","initialData","hashCode","str","hash","hash32Fnv1a","prime","stringIds$3","webgpuValidElementSizes","deviceCache$2","VertexFormat","elements","_elements","getDefaultInstancingFormat","semantic","components","isElementValid","elementDesc","elementSize","_evaluateHash","stringElementsBatch","stringElementsRender","dataType","numComponents","stride","asInt","stringElementBatch","stringElementRender","batchingString","batchingHash","shaderProcessingHashString","renderingHashString","renderingHash","description","vertexCount","hasUv0","hasUv1","hasColor","hasTangents","interleaved","instancing","reduce","total","desc","element","stringIds$2","StencilParameters","_func","_dirty","ref","_ref","fail","_fail","zfail","_zfail","zpass","_zpass","readMask","_readMask","writeMask","_writeMask","_evalKey","_key","GraphicsDevice","postInit","vertexFormat","positions","quadVertexBuffer","initCapsDefines","capsDefines","textureFloatFilterable","textureFloatRenderable","supportsMultiDraw","dynamicBuffers","gpuProfiler","_destroyed","onDestroyShader","shader","shaders","postDestroy","canvas","contextLost","backBufferSize","targets","restoreContext","initializeRenderState","initializeContextCaches","vertexBuffers","shaderValid","shaderAsyncCompile","renderTarget","blendState","depthState","cullMode","vx","vy","vw","vh","sw","sh","blendColor","setStencilState","stencilFront","stencilBack","setBlendState","setBlendColor","setDepthState","setCullMode","setRenderTarget","setVertexBuffer","vertexBuffer","clearVertexBuffer","getIndirectDrawSlot","count","indirectDrawBuffer","getRenderTarget","initRenderTarget","init","draw","primitive","indexBuffer","numInstances","drawCommands","last","_isImageBrowserInterface","_isImageCanvasInterface","_isImageVideoInterface","ImageBitmap","HTMLImageElement","HTMLCanvasElement","resizeCanvas","pixelRatio","_maxPixelRatio","devicePixelRatio","setResolution","EVENT_RESIZE","updateClientRect","clientRect","rect","getBoundingClientRect","fullscreen","maxPixelRatio","ratio","deviceType","_deviceType","startRenderPass","renderPass","endRenderPass","startComputePass","endComputePass","frameStart","renderPassIndex","frameEnd","mapsToClear","computeDispatch","computes","getRenderableHdrFormat","filterable","samples","textureRG11B10Renderable","textureHalfFloatRenderable","validateAttributes","vb0Format","vb1Format","backBuffer","backBufferAntialias","isWebGL2","isNull","isHdr","maxIndirectDrawCount","maxColorAttachments","maxSamples","supportsCompute","supportsStorageTextureRead","insideRenderPass","supportsUniformBuffers","supportsClipDistances","stencilEnabled","defaultClearOptions","color","stencil","flags","initOptions","antialias","powerPreference","displayFormat","ib","ub","sb","_shaderStats","vsCompiled","fsCompiled","linked","materialShaders","compileTime","_drawCallsPerFrame","_shaderSwitchesPerFrame","_primsPerFrame","_renderTargetCreationTime","textureBias","id$9","RenderTarget","_device","destroyFrameBuffers","destroyTextureBuffers","_depthBuffer","_colorBuffers","colorBuffer","_colorBuffer","evaluateDimensions","validateMrt","createRenderTargetImpl","_mipLevel","_samples","success","copyRenderTarget","_stencil","getColorBuffer","depthBuffer","_face","isColorBufferSrgb","backBufferFormat","colorBuffers","autoResolve","WebgpuBindGroup","bindGroup","createDescriptor","wgpu","createBindGroup","entries","persistent","allocation","gpuBuffer","binding","resource","byteSize","textureIndex","wgpuTexture","getView","sampler","getSampler","bufferIndex","wgpuBuffer","layout","bindGroupLayout","WebgpuUtils","shaderStage","stage","ret","GPUShaderStage","VERTEX","FRAGMENT","COMPUTE","gpuTextureFormats","samplerTypes","sampleTypes","stringIds$1","WebgpuBindGroupFormat","bindGroupFormat","bufferFormat","hasDynamicOffset","viewDimension","multisampled","gpuSampleType","gpuSamplerType","storageTexture","access","createBindGroupLayout","WebgpuBuffer","allocate","createBuffer","usageFlags","GPUBufferUsage","COPY_DST","srcOffset","byteOffset","srcData","queue","writeBuffer","immediate","readStorageBuffer","bufferOffset","dataOffset","writeStorageBuffer","clearStorageBuffer","WebgpuIndexBuffer","array$1","arr1","arr2","gpuVertexFormats","gpuVertexFormatsNormalized","WebgpuVertexBufferLayout","vertexFormat0","vertexFormat1","getKey","addFormat","stepMode","attributes","elementCount","formatTable","shaderLocation","arrayStride","WebgpuPipeline","getPipelineLayout","bindGroupFormats","bindGroupLayouts","pipelineLayout","createPipelineLayout","_primitiveTopology","_blendOperation","_blendFactor","_compareFunction","_cullModes","_stencilOps","_indexFormat","CacheEntry","WebgpuRenderPipeline","ibFormat","primitiveType","lookupHashes","cacheEntries","entry","hashes","pipeline","primitiveTopology","vertexBufferLayout","cacheEntry","getBlend","operation","getDepthStencil","depthStencil","depthAttachment","depthWriteEnabled","depthCompare","biasAllowed","depthBiasSlopeScale","stencilReadMas","stencilWriteMask","compare","failOp","passOp","depthFailOp","webgpuShader","vertex","getVertexShaderModule","entryPoint","vertexEntryPoint","topology","frontFace","multisample","stripIndexFormat","getFragmentShaderModule","fragmentEntryPoint","colorAttachments","GPUColorWrite","ALPHA","attachment","createRenderPipeline","WebgpuComputePipeline","getComputeShaderModule","computeEntryPoint","createComputePipeline","RefCountedObject","incRefCount","_refCount","decRefCount","refCount","Entry","obj","object","RefCountedKeyCache","release","MultisampledTextureCache","multisampledTextureCache","getMultisampledTextureCache","stringIds","ColorAttachment","multisampledBuffer","DepthAttachment","depthTextureInternal","depthTexture","multisampledDepthBuffer","multisampledDepthBufferKey","gpuFormat","hasStencil","WebgpuRenderTarget","assignedColorTexture","colorAttachment","rt","assignColorTexture","gpuTexture","createView","backBufferViewFormat","renderPassDescriptor","resolveTarget","setColorAttachment","initDepthStencil","isBackbuffer","initColor","isDefaultFramebuffer","renderingView","depthTextureDesc","sampleCount","GPUTextureUsage","RENDER_ATTACHMENT","TEXTURE_BINDING","COPY_SRC","createTexture","depthFormat","msTextures","msDepthTexture","multisampledDepthDesc","depthStencilAttachment","colorView","mipLevelCount","baseArrayLayer","arrayLayerCount","baseMipLevel","multisampledTextureDesc","multisampledColorBuffer","setupForRenderPass","colorOps","colorArrayOps","clearValue","clearValueLinear","loadOp","storeOp","store","depthClearValue","depthStencilOps","clearDepthValue","depthLoadOp","clearDepth","depthStoreOp","storeDepth","depthReadOnly","stencilClearValue","clearStencilValue","stencilLoadOp","clearStencil","stencilStoreOp","storeStencil","stencilReadOnly","uniformTypeToNumComponents","UniformFormat","isArrayType","calculateOffset","alignment","shortName","updateType","componentSize","UniformBufferFormat","uniforms","KEYWORD$2","KEYWORD_LINE$1","MARKER$1","ARRAY_IDENTIFIER","precisionQualifiers","shadowSamplers","textureDimensions","sampler2D","sampler3D","samplerCube","samplerCubeShadow","sampler2DShadow","sampler2DArray","sampler2DArrayShadow","isampler2D","usampler2D","isampler3D","usampler3D","isamplerCube","usamplerCube","isampler2DArray","usampler2DArray","textureDimensionInfo","UniformLine$1","UniformLine","line","words","trim","rest","exec","arraySize","isNaN","failed","isSampler","isSignedInt","isUnsignedInt","ShaderProcessorGLSL","run","shaderDefinition","varyingMap","vertexExtracted","extract","vshader","fragmentExtracted","fshader","attributesMap","attributesBlock","processAttributes","processingOptions","vertexVaryingsBlock","processVaryings","varyings","fragmentVaryingsBlock","outBlock","processOuts","outs","concatUniforms","concat","parsedUniforms","uniformsData","processUniforms","vBlock","fBlock","meshUniformBufferFormat","meshBindGroupFormat","replacement","keyword","lastIndex","lineMatch","cutOut","uniformLinesSamplers","uniformLinesNonSamplers","meshUniforms","hasUniform","uniformType","uniformFormat","hasTexture","uniformFormats","bindGroupIndex","getUniformShaderDeclaration","getTexturesShaderDeclaration","varyingLines","isVertex","block","splitToWords","outsLines","getTypeCount","lastChar","attributeLines","shaderDefinitionAttributes","copyCode","getVertexElement","attribNumElements","newName","isSignedType","bindIndex","typeString","textureType","sampleTypePrefix","namePostfix","extraCode","KEYWORD$1","KEYWORD_LINE","KEYWORD_RESOURCE","VARYING","MARKER","ENTRY_FUNCTION","textureBaseInfo","baseSampleType","getTextureInfo","baseType","componentType","baseInfo","finalSampleType","getTextureDeclarationType","baseTypeString","coreFormatString","wrappedArrayTypes","UNIFORM_ARRAY_REGEX","ubName","TEXTURE_REGEX","STORAGE_TEXTURE_REGEX","STORAGE_BUFFER_REGEX","EXTERNAL_TEXTURE_REGEX","SAMPLER_REGEX","ResourceLine","isTexture","isStorageTexture","isStorageBuffer","isExternalTexture","accessMode","samplerType","originalLine","matchedElements","textureMatch","storageTextureMatch","storageBufferMatch","externalTextureMatch","samplerMatch","WebgpuShaderProcessorWGSL","renameUniformAccess","parsedResources","mergeResources","resources","resourcesData","processResources","fOutput","generateFragmentOutputStruct","copyInputs","srcName","dstName","regex","RegExp","fragmentResources","existing","find","fragmentResource","getTextureShaderDeclaration","ubFormat","structName","textureTypeName","blockPrivates","blockCopy","fragmentGlobals","numRenderTargets","structCode","needsFragDepth","floatAttributeToInt","signed","longToShortMap","shortType","floatToIntShort","blockAttributes","originalType","inputName","braceIndex","beginning","lineToInject","WebgpuShader","_vertexCode","_fragmentCode","createShaderModule","shaderType","shaderModule","_computeCode","processGLSL","processed","definition","transpile","ready","processWGSL","originalSrc","glslang","twgsl","label","spirv","compileGLSL","wgsl","convertSpirV2WGSL","original","vertexCode","fragmentCode","shaderLanguage","cshader","computeUniformBufferFormats","computeBindGroupFormat","gpuAddressModes","gpuFilterModes","mip","dummyUse","thingOne","WebgpuTexture","depthOrArrayLayers","STORAGE_BINDING","viewDescr","samplers","textureDescr","defaultViewDimension","addressModeU","addressModeV","addressModeW","mipmapFilter","forceNearest","allLinear","maxAnisotropy","maxTextureAnisotropy","createSampler","uploadData","anyUploads","anyLevelMissing","requiredMipLevels","mipObject","faceSource","isExternalImage","uploadExternalImage","isView","uploadTypedArrayData","arraySource","mipmapRenderer","generate","image","OffscreenCanvas","premultipliedAlpha","copySize","submit","getContext","copyExternalImageToTexture","dest","dataLayout","bytesPerRow","rowsPerImage","blockDim","writeTexture","paddedBytesPerRow","stagingBuffer","createBufferImpl","commandEncoder","getCommandEncoder","copyTextureToBuffer","readBuffer","dstOffset","temp","subarray","WebgpuUniformBuffer","storageInt32","WebgpuVertexBuffer","KEYWORD","DEFINE","EXTENSION","UNDEF","IF","ENDIF","IDENTIFIER$1","DEFINED","DEFINED_PARENS","DEFINED_BEFORE_PAREN","COMPARISON","INVALID","INCLUDE","LOOP_INDEX","FRAGCOLOR","Preprocessor","sourceName","stripComments","trimEnd","defines","injectDefines","_preprocess","stripDefines","intDefines","isInteger","parseFloat","stripUnusedColorAttachments","RemoveEmptyLines","processArraySize","counts","matches","anySingleUse","some","lines","keepLines","originalSource","define","expression","identifierValue","identifier","keep","_keep","stripThisDefine","replacementDefine","undef","extension","iff","evaluated","anyKeep","endif","blockInfo","blockCode","endifCommand","include","countIdentifier","includeSource","countString","evaluateAtomicExpression","expr","definedMatch","exists","comparisonMatch","operator","processParentheses","wrapsEntire","foundParen","maxDepth","deepestStart","deepestEnd","inDefinedParen","beforeParen","subExpr","subError","correct","processedExpr","parenError","withoutDefined","orSegments","orSegment","andSegments","andResult","andSegment","gles3PS","gles3VS","webgpuPS$1","webgpuVS$1","webgpuPS","webgpuVS","sharedGLSL","sharedWGSL","_attrib2Semantic","vertex_position","vertex_normal","vertex_tangent","vertex_texCoord0","vertex_texCoord1","vertex_texCoord2","vertex_texCoord3","vertex_texCoord4","vertex_texCoord5","vertex_texCoord6","vertex_texCoord7","vertex_color","vertex_boneIndices","vertex_boneWeights","ShaderDefinitionUtils","createDefinition","normalizedOutputTypes","fragmentOutputTypes","getDefines","gpu","gl2","deviceIntro","attachmentsDefine","outType","getDefinesWgsl","glslOutType","wgslOutType","vertCode","fragCode","vertexDefinesCode","getDefinesCode","vertexDefines","fragmentDefinesCode","fragmentDefines","versionCode","precisionCode","getShaderNameCode","fragmentPreamble","vincludes","vertexIncludes","fincludes","fragmentIncludes","feedbackVaryings","useTransformFeedback","forcePrecision","maxPrecision","collectAttributes","vsCode","attribs","attrs","found","ignore","startOfLine","lineStartString","endOfLine","startOfAttribName","attribName","id$8","Shader","cincludes","createShaderImpl","UsedBuffer","DynamicBufferAllocation","DynamicBuffers","gpuBuffers","stagingBuffers","usedBuffers","activeBuffer","alloc","alignedStart","bufferAlignment","space","bufferSize","scheduleSubmit","_updateFunctions","storageFloat32","storageUint32","UniformBuffer","assignStorage","setUniform","updateFunction","startUpdate","dynamicBindGroup","oldGpuBuffer","getBindGroup","endUpdate","createUniformBufferImpl","base","baseVertex","indexed","WebgpuClearRenderer","defaultOptions","setBindGroup","emptyBindGroup","colorData","setShader","WebgpuMipmapRenderer","webgpuTexture","numFaces","srcViews","dstView","passEncoder","beginRenderPass","getBindGroupLayout","minSampler","setPipeline","DynamicBuffer","ubSize","bindGroupCache","WebgpuDynamicBuffer","onAvailable","mappedRange","getMappedRange","isStaging","MAP_WRITE","UNIFORM","mappedAtCreation","WebgpuDynamicBuffers","createCommandEncoder","usedBuffer","unmap","copyBufferToBuffer","cb","finish","addCommandBuffer","pendingStagingBuffers","onCommandBuffersSubmitted","mapAsync","GPUMapMode","WRITE","GpuProfiler","pastFrameAllocations","_enableRequest","processEnableRequest","_enabled","_frameTime","request","frameAllocations","report","timings","allocations","sum","getSlot","maxCount","slotCount","WebgpuQuerySet","querySet","queryBuffer","activeStagingBuffer","getStagingBuffer","MAP_READ","resolveQuerySet","bytesPerSlot","READ","srcTimings","BigInt64Array","isTimestamp","capacity","createQuerySet","QUERY_RESOLVE","STORAGE","WebgpuGpuProfiler","timestampQueriesSet","results","supportsTimestampQuery","WebgpuResolver","pipelineCache","getPipeline","createPipeline","resolveDepth","sourceTexture","destinationTexture","srcView","WebgpuCompute","updateBindGroup","dispatch","dispatchWorkgroups","computePipeline","id$7","StorageBuffer","srcBuffer","bufferUsage","addStorageUsage","WebgpuDrawCommands","gpuIndirect","gpuIndirectSigned","indexOrVertexCount","instanceCount","firstIndexOrVertex","firstInstance","o","used","WebgpuUploadStream","_onDeviceLost","availableStagingBuffers","minByteSize","pending","available","useSingleBuffer","uploadDirect","uploadStaging","BYTES_PER_ELEMENT","uploadStream","newBuffer","_uniqueLocations","_indirectEntryByteSize","WebgpuGraphicsDevice","clearRenderer","resolver","initDeviceCaps","limits","maxTextures","maxTextureSize","maxTextureDimension2D","maxCubeMapSize","maxVolumeSize","maxTextureDimension3D","fragmentUniformsCount","maxUniformBufferBindingSize","vertexUniformsCount","supportsAreaLights","supportsGpuParticles","supportsImageBitmap","wgslFeatures","wgslLanguageFeatures","initWebGpu","glslangUrl","twgslUrl","buildUrl","URL","srcPath","href","Promise","default","createDevice","adapterOptions","xrCompatible","gpuAdapter","requestAdapter","requiredFeatures","requireFeature","supported","features","feature","textureFloatBlendable","extCompressedTextureS3TC","extCompressedTextureS3TCSliced3D","extCompressedTextureETC","extCompressedTextureASTC","extCompressedTextureASTCSliced3D","supportsDepthClip","supportsDepth32Stencil","supportsIndirectFirstInstance","supportsShaderF16","supportsStorageRGBA8","adapterLimits","requiredLimits","limitName","deviceDescr","defaultQueue","requestDevice","lost","handleDeviceLost","gpuContext","canvasToneMapping","preferredCanvasFormat","getPreferredCanvasFormat","hdrMediaQuery","matchMedia","canvasConfig","colorSpace","alphaMode","toneMapping","viewFormats","configure","createBackbuffer","reason","setupPassEncoderDefaults","minUniformBufferOffsetAlignment","supportsStencil","outColorBuffer","getCurrentTexture","externalBackbuffer","wrt","_indirectDrawNextIndex","createIndexBufferImpl","createDrawCommandImpl","createUploadStreamImpl","createComputeImpl","allocateIndirectDrawBuffer","_indirectDrawBuffer","_indirectDrawBufferCount","nextIndex","submitVertexBuffer","vbBuffer","validateVBLocations","vb0","vb1","validateVB","vbSlot","renderPipeline","setIndexBuffer","indirectBuffer","drawsCount","indirectOffset","slotIndex","drawIndexedIndirect","drawIndirect","drawIndexed","asyncCompile","stencilRef","setStencilReference","setBlendConstant","setAlphaToCoverage","state","_uploadDirtyTextures","_needsMipmaps","setupTimeStampWrites","passDesc","timestampWrites","beginningOfPassWriteIndex","endOfPassWriteIndex","renderPassDesc","setScissor","destTexture","genMipmaps","computePassDesc","beginComputePass","applyParameters","countX","countY","countZ","endCommandEncoder","commandBuffer","front","commandBuffers","unshift","setScissorRect","clearBuffer","destBuffer","reject","copySrc","srcType","setTimeout","copyDst","copyTextureToTexture","sourceRT","WebglBuffer","bufferId","gl","deleteBuffer","glUsage","STATIC_DRAW","DYNAMIC_DRAW","STREAM_DRAW","DYNAMIC_COPY","bindBuffer","bufferData","bufferSubData","WebglVertexBuffer","unbindVertexArray","vao","ARRAY_BUFFER","WebglIndexBuffer","ELEMENT_ARRAY_BUFFER","glFormat","UNSIGNED_BYTE","UNSIGNED_SHORT","UNSIGNED_INT","WebglShaderInput","locationId","_vertexShaderBuiltins","CompiledShaderCache","deleteShader","_vertexShaderCache","_fragmentShaderCache","WebglShader","glProgram","deleteProgram","glVertexShader","glFragmentShader","compile","link","_compileShaderSource","isContextLost","createProgram","attachShader","outNames","attr","transformFeedbackVaryings","INTERLEAVED_ATTRIBS","loc","bindAttribLocation","linkProgram","isVertexShader","shaderDeviceCache","shaderCache","glShader","createShader","VERTEX_SHADER","FRAGMENT_SHADER","shaderSource","compileShader","finalize","linkStatus","getProgramParameter","LINK_STATUS","_isCompiled","message","getProgramInfoLog","numAttributes","ACTIVE_ATTRIBUTES","getActiveAttrib","getAttribLocation","_samplerTypes","numUniforms","ACTIVE_UNIFORMS","getActiveUniform","getUniformLocation","shaderInput","pcUniformType","getShaderParameter","COMPILE_STATUS","infoLog","getShaderInfoLog","_processError","isLinked","extParallelShaderCompile","COMPLETION_STATUS_KHR","linePrefix","compileDuration","WebglDrawCommands","glCounts","glOffsetsBytes","glInstanceCounts","indexSizeBytes","downsampleImage","srcW","srcH","dstW","dstH","context","drawImage","WebglTexture","_glTexture","textureUnits","textureUnit","j","deleteTexture","dirtyParameterFlags","_glTarget","TEXTURE_CUBE_MAP","TEXTURE_3D","TEXTURE_2D_ARRAY","TEXTURE_2D","_glFormat","_glInternalFormat","_glPixelType","LUMINANCE","LUMINANCE_ALPHA","R8","RG","RG8","RGB","RGB565","UNSIGNED_SHORT_5_6_5","RGBA","RGB5_A1","UNSIGNED_SHORT_5_5_5_1","RGBA4","UNSIGNED_SHORT_4_4_4_4","RGB8","RGBA8","COMPRESSED_RGB_S3TC_DXT1_EXT","COMPRESSED_RGBA_S3TC_DXT3_EXT","COMPRESSED_RGBA_S3TC_DXT5_EXT","extCompressedTextureETC1","COMPRESSED_RGB_ETC1_WEBGL","extCompressedTexturePVRTC","COMPRESSED_RGB_PVRTC_2BPPV1_IMG","COMPRESSED_RGBA_PVRTC_2BPPV1_IMG","COMPRESSED_RGB_PVRTC_4BPPV1_IMG","COMPRESSED_RGBA_PVRTC_4BPPV1_IMG","COMPRESSED_RGB8_ETC2","COMPRESSED_RGBA8_ETC2_EAC","COMPRESSED_RGBA_ASTC_4x4_KHR","extCompressedTextureATC","COMPRESSED_RGB_ATC_WEBGL","COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL","extTextureCompressionBPTC","COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT","COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT","COMPRESSED_RGBA_BPTC_UNORM_EXT","SRGB","extCompressedTextureS3TC_SRGB","COMPRESSED_SRGB_S3TC_DXT1_EXT","SRGB_ALPHA","COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT","COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT","COMPRESSED_SRGB8_ETC2","COMPRESSED_SRGB8_ALPHA8_ETC2_EAC","COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR","COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT","R16F","HALF_FLOAT","RG16F","RGB16F","RGBA16F","RGB32F","FLOAT","RGBA32F","R32F","DEPTH_COMPONENT","DEPTH_COMPONENT32F","DEPTH_COMPONENT16","DEPTH_STENCIL","DEPTH24_STENCIL8","UNSIGNED_INT_24_8","R11F_G11F_B10F","UNSIGNED_INT_10F_11F_11F_REV","SRGB8","SRGB8_ALPHA8","RED_INTEGER","R8I","BYTE","R8UI","R16I","SHORT","R16UI","R32I","INT","R32UI","RG_INTEGER","RG8I","RG8UI","RG16I","RG16UI","RG32I","RG32UI","RGBA_INTEGER","RGBA8I","RGBA8UI","RGBA16I","RGBA16UI","RGBA32I","RGBA32UI","_glCreated","resMult","texStorage3D","generateMipmap","setUnpackFlipY","setUnpackPremultiplyAlpha","texSubImage2D","TEXTURE_CUBE_MAP_POSITIVE_X","texImage2D","texData","compressedTexSubImage2D","compressedTexImage2D","compressedTexImage3D","texImage3D","compressedTexSubImage3D","texSubImage3D","readTextureAsync","writeTextureAsync","FramebufferPair","msaaFB","deleteRenderbuffer","resolveFB","WebglRenderTarget","_isInitialized","_glFrameBuffer","suppliedColorFramebuffer","deleteFramebuffer","_glDepthBuffer","_glResolveFrameBuffer","_glMsaaColorBuffers","colorMrtFramebuffers","framebuffer","_glMsaaDepthBuffer","msaaDepthBufferKey","createFramebuffer","setFramebuffer","colorBufferCount","attachmentBaseConstant","COLOR_ATTACHMENT0","maxRenderBufferSize","framebufferTexture2D","FRAMEBUFFER","drawBuffers","attachmentPoint","DEPTH_STENCIL_ATTACHMENT","DEPTH_ATTACHMENT","willRenderMsaa","createRenderbuffer","internalFormat","bindRenderbuffer","RENDERBUFFER","renderbufferStorage","framebufferRenderbuffer","renderbufferStorageMultisample","_createMsaaMrtFramebuffers","srcFramebuffer","dstFramebuffer","_checkFbo","status","checkFramebufferStatus","FRAMEBUFFER_INCOMPLETE_ATTACHMENT","FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT","FRAMEBUFFER_INCOMPLETE_DIMENSIONS","FRAMEBUFFER_UNSUPPORTED","internalResolve","bindFramebuffer","READ_FRAMEBUFFER","DRAW_FRAMEBUFFER","blitFramebuffer","NEAREST","fbPair","COLOR_BUFFER_BIT","DEPTH_BUFFER_BIT","WebglUploadStream","availablePBOs","pbo","pendingPBOs","sync","deleteSync","clientWaitSync","CONDITION_SATISFIED","ALREADY_SIGNALED","uploadPBO","startY","pboInfo","PIXEL_UNPACK_BUFFER","activeTexture","bindTexture","pixelStorei","UNPACK_ALIGNMENT","UNPACK_ROW_LENGTH","UNPACK_SKIP_ROWS","UNPACK_SKIP_PIXELS","fenceSync","SYNC_GPU_COMMANDS_COMPLETE","flush","FrameQueriesInfo","queries","deleteQuery","WebglGpuProfiler","freeQueries","frameQueries","previousFrameQueries","frameQueriesInfo","extDisjointTimerQuery","createQuery","beginQuery","TIME_ELAPSED_EXT","endQuery","frameGPUMarkerSlot","previousQueriesInfo","previousQueries","lastQuery","getQueryParameter","QUERY_RESULT_AVAILABLE","disjoint","getParameter","GPU_DISJOINT_EXT","duration","QUERY_RESULT","invalidateAttachments","WebglGraphicsDevice","feedback","deleteTransformFeedback","clearVertexArrayObjectCache","_contextLostHandler","_contextRestoredHandler","frameBuffer","updateBackbufferFormat","alphaBits","ALPHA_BITS","updateBackbuffer","resolutionChanged","_defaultFramebufferChanged","_defaultFramebuffer","getPrecision","getShaderPrecisionFormat","vertexShaderPrecisionHighpFloat","HIGH_FLOAT","vertexShaderPrecisionMediumpFloat","MEDIUM_FLOAT","fragmentShaderPrecisionHighpFloat","fragmentShaderPrecisionMediumpFloat","highpAvailable","mediumpAvailable","arguments","supportedExtensions","_extDisjointTimerQuery","initializeExtensions","getSupportedExtensions","extColorBufferFloat","extColorBufferHalfFloat","extDebugRendererInfo","extTextureFloatLinear","extFloatBlend","extTextureFilterAnisotropic","extMultiDraw","initializeCapabilities","contextAttribs","getContextAttributes","supportsMsaa","MAX_TEXTURE_SIZE","MAX_CUBE_MAP_TEXTURE_SIZE","MAX_RENDERBUFFER_SIZE","MAX_TEXTURE_IMAGE_UNITS","maxCombinedTextures","MAX_COMBINED_TEXTURE_IMAGE_UNITS","maxVertexTextures","MAX_VERTEX_TEXTURE_IMAGE_UNITS","MAX_VERTEX_UNIFORM_VECTORS","MAX_FRAGMENT_UNIFORM_VECTORS","MAX_COLOR_ATTACHMENTS","MAX_3D_TEXTURE_SIZE","unmaskedRenderer","UNMASKED_RENDERER_WEBGL","unmaskedVendor","UNMASKED_VENDOR_WEBGL","maliRendererRegex","samsungModelRegex","MAX_TEXTURE_MAX_ANISOTROPY_EXT","antialiasSupported","forceDisableMultisampling","MAX_SAMPLES","disable","BLEND","blendFunc","blendEquation","FUNC_ADD","colorMask","enable","CULL_FACE","cullFace","DEPTH_TEST","depthFunc","LEQUAL","depthMask","STENCIL_TEST","stencilFuncFront","stencilFuncBack","stencilRefFront","stencilRefBack","stencilMaskFront","stencilMaskBack","stencilFunc","ALWAYS","stencilFailFront","stencilFailBack","stencilZfailFront","stencilZfailBack","stencilZpassFront","stencilZpassBack","stencilWriteMaskFront","stencilWriteMaskBack","stencilOp","KEEP","stencilMask","alphaToCoverage","raster","SAMPLE_ALPHA_TO_COVERAGE","RASTERIZER_DISCARD","depthBiasEnabled","POLYGON_OFFSET_FILL","clearColor","hint","FRAGMENT_SHADER_DERIVATIVE_HINT","NICEST","SCISSOR_TEST","UNPACK_COLORSPACE_CONVERSION_WEBGL","NONE","unpackFlipY","UNPACK_FLIP_Y_WEBGL","unpackPremultiplyAlpha","UNPACK_PREMULTIPLY_ALPHA_WEBGL","initTextureUnits","_vaoMap","boundVao","activeFramebuffer","transformFeedbackBuffer","viewport","scissor","fb","prevRt","updateBegin","clearFlags","clearOptions","STENCIL_ATTACHMENT","fullSizeClearRect","invalidateFramebuffer","defaultFramebuffer","_tempEnableSafariTextureUnitWorkaround","unit","targetImpl","updateEnd","TEXTURE0","textureTarget","textureObject","targetToSlot","bindTextureOnUnit","setTextureParameters","filter","texParameteri","TEXTURE_MIN_FILTER","glFilter","TEXTURE_MAG_FILTER","TEXTURE_WRAP_S","glAddress","TEXTURE_WRAP_T","TEXTURE_WRAP_R","TEXTURE_COMPARE_MODE","COMPARE_REF_TO_TEXTURE","TEXTURE_COMPARE_FUNC","glComparison","texParameterf","TEXTURE_MAX_ANISOTROPY_EXT","createVertexArray","useCache","bindVertexArray","vertexAttribIPointer","glType","vertexAttribPointer","enableVertexAttribArray","vertexAttribDivisor","setBuffers","_multiDrawLoopFallback","drawElementsInstanced","drawElements","drawArraysInstanced","drawArrays","activateShader","samplerValue","uniform1i","numTextures","uniform1iv","uniformVersion","programVersion","commitFunction","bindBufferBase","TRANSFORM_FEEDBACK_BUFFER","beginTransformFeedback","POINTS","glPrimitive","multiDrawElementsInstancedWEBGL","multiDrawElementsWEBGL","multiDrawArraysInstancedWEBGL","multiDrawArraysWEBGL","bytesPerIndex","endTransformFeedback","glClearFlag","readPixels","clientWaitAsync","interval_ms","TIMEOUT_EXPIRED","WAIT_FAILED","readPixelsAsync","pixelType","buf","PIXEL_PACK_BUFFER","STREAM_READ","getBufferSubData","catch","setTransformFeedbackBuffer","createTransformFeedback","bindTransformFeedback","TRANSFORM_FEEDBACK","setRaster","setStencilTest","setStencilFunc","setStencilFuncFront","stencilFuncSeparate","FRONT","setStencilFuncBack","setStencilOperation","glStencilOp","setStencilOperationFront","stencilOpSeparate","stencilMaskSeparate","setStencilOperationBack","currentBlendState","glBlendEquation","blendEquationSeparate","blendFuncSeparate","glBlendFunctionColor","glBlendFunctionAlpha","currentDepthState","polygonOffset","glCull","useProgram","mapObj","deleteVertexArray","requestFullscreen","exitFullscreen","fullscreenElement","event","preventDefault","firefoxVersion","disableAntialias","isChrome","isSafari","isMac","appVersion","_tempMacChromeBlitFramebufferWorkaround","SAMPLER_2D","SAMPLER_CUBE","UNSIGNED_INT_SAMPLER_2D","INT_SAMPLER_2D","SAMPLER_2D_SHADOW","SAMPLER_CUBE_SHADOW","SAMPLER_3D","INT_SAMPLER_3D","UNSIGNED_INT_SAMPLER_3D","SAMPLER_2D_ARRAY","INT_SAMPLER_2D_ARRAY","UNSIGNED_INT_SAMPLER_2D_ARRAY","REPEAT","CLAMP_TO_EDGE","MIRRORED_REPEAT","FUNC_SUBTRACT","FUNC_REVERSE_SUBTRACT","MIN","MAX","SRC_COLOR","ONE_MINUS_SRC_COLOR","DST_COLOR","ONE_MINUS_DST_COLOR","SRC_ALPHA","SRC_ALPHA_SATURATE","ONE_MINUS_SRC_ALPHA","DST_ALPHA","ONE_MINUS_DST_ALPHA","CONSTANT_COLOR","ONE_MINUS_CONSTANT_COLOR","CONSTANT_ALPHA","ONE_MINUS_CONSTANT_ALPHA","NEVER","LESS","EQUAL","GREATER","NOTEQUAL","GEQUAL","REPLACE","INCR","INCR_WRAP","DECR","DECR_WRAP","INVERT","STENCIL_BUFFER_BIT","FRONT_AND_BACK","LINEAR","NEAREST_MIPMAP_NEAREST","NEAREST_MIPMAP_LINEAR","LINEAR_MIPMAP_NEAREST","LINEAR_MIPMAP_LINEAR","LINES","LINE_LOOP","LINE_STRIP","TRIANGLES","TRIANGLE_STRIP","TRIANGLE_FAN","BOOL","FLOAT_VEC2","FLOAT_VEC3","FLOAT_VEC4","INT_VEC2","INT_VEC3","INT_VEC4","BOOL_VEC2","BOOL_VEC3","BOOL_VEC4","FLOAT_MAT2","FLOAT_MAT3","FLOAT_MAT4","UNSIGNED_INT_VEC2","UNSIGNED_INT_VEC3","UNSIGNED_INT_VEC4","INT_SAMPLER_CUBE","scopeX","scopeY","scopeZ","scopeW","uniformValue","uniform1f","uniform2fv","uniform3fv","uniform4fv","uniform2iv","uniform3iv","uniform4iv","uniformMatrix2fv","uniformMatrix3fv","uniformMatrix4fv","uniform1fv","uniform1ui","uniform2uiv","uniform3uiv","uniform4uiv","uniform1uiv","constantTexSource","NullIndexBuffer","NullRenderTarget","NullShader","NullTexture","NullVertexBuffer","NullDrawCommands","NullGraphicsDevice","disableParticleSystem","createGraphicsDevice","deviceTypes","xr","deviceCreateFuncs","attempt","next","log","ComputeParameter","Compute","setParameter","param","parameters","deleteParameter","setupDispatch","DrawCommands","_maxCount","_count","id$6","IndexBuffer","getNumIndices","numIndices","_lockTypedArray","indices","writeData","readData","ColorAttachmentOps","DepthStencilAttachmentOps","RenderPass","_name","scaleX","_options","scaleY","allocateAttachments","numColorOps","intFormat","frameUpdate","resizeSource","before","execute","after","onEnable","onDisable","setClearColor","setClearDepth","depthValue","setClearStencil","stencilValue","render","realPass","executeEnabled","_skipStart","_skipEnd","requiresCubemaps","beforePasses","afterPasses","TransformFeedback","_destroyOutputBuffer","_outputBuffer","process","swap","oldRt","_inputBuffer","inputBuffer","outputBuffer","outVB","set1","set2","set3","set4","arraySet1","inputArray","inputIndex","arraySet2","arraySet3","arraySet4","arrayGet1","outputArray","outputIndex","arrayGet2","arrayGet3","arrayGet4","VertexIteratorAccessor","getToArray","setFromArray","vertexElement","VertexIterator","accessors","numAccessors","accessor","copyCount","vertexFormatSize","ACTION_MOUSE","ACTION_KEYBOARD","ACTION_GAMEPAD","AXIS_MOUSE_X","AXIS_MOUSE_Y","AXIS_PAD_L_X","AXIS_PAD_L_Y","AXIS_PAD_R_X","AXIS_PAD_R_Y","AXIS_KEY","KEY_BACKSPACE","KEY_TAB","KEY_RETURN","KEY_ENTER","KEY_SHIFT","KEY_CONTROL","KEY_ALT","KEY_PAUSE","KEY_CAPS_LOCK","KEY_ESCAPE","KEY_SPACE","KEY_PAGE_UP","KEY_PAGE_DOWN","KEY_END","KEY_HOME","KEY_LEFT","KEY_UP","KEY_RIGHT","KEY_DOWN","KEY_PRINT_SCREEN","KEY_INSERT","KEY_DELETE","KEY_0","KEY_1","KEY_2","KEY_3","KEY_4","KEY_5","KEY_6","KEY_7","KEY_8","KEY_9","KEY_SEMICOLON","KEY_EQUAL","KEY_A","KEY_B","KEY_C","KEY_D","KEY_E","KEY_F","KEY_G","KEY_H","KEY_I","KEY_J","KEY_K","KEY_L","KEY_M","KEY_N","KEY_O","KEY_P","KEY_Q","KEY_R","KEY_S","KEY_T","KEY_U","KEY_V","KEY_W","KEY_X","KEY_Y","KEY_Z","KEY_WINDOWS","KEY_CONTEXT_MENU","KEY_NUMPAD_0","KEY_NUMPAD_1","KEY_NUMPAD_2","KEY_NUMPAD_3","KEY_NUMPAD_4","KEY_NUMPAD_5","KEY_NUMPAD_6","KEY_NUMPAD_7","KEY_NUMPAD_8","KEY_NUMPAD_9","KEY_MULTIPLY","KEY_ADD","KEY_SEPARATOR","KEY_SUBTRACT","KEY_DECIMAL","KEY_DIVIDE","KEY_F1","KEY_F2","KEY_F3","KEY_F4","KEY_F5","KEY_F6","KEY_F7","KEY_F8","KEY_F9","KEY_F10","KEY_F11","KEY_F12","KEY_COMMA","KEY_PERIOD","KEY_SLASH","KEY_OPEN_BRACKET","KEY_BACK_SLASH","KEY_CLOSE_BRACKET","KEY_META","MOUSEBUTTON_NONE","MOUSEBUTTON_LEFT","MOUSEBUTTON_MIDDLE","MOUSEBUTTON_RIGHT","PAD_1","PAD_2","PAD_3","PAD_4","PAD_FACE_1","PAD_FACE_2","PAD_FACE_3","PAD_FACE_4","PAD_L_SHOULDER_1","PAD_R_SHOULDER_1","PAD_L_SHOULDER_2","PAD_R_SHOULDER_2","PAD_SELECT","PAD_START","PAD_L_STICK_BUTTON","PAD_R_STICK_BUTTON","PAD_UP","PAD_DOWN","PAD_LEFT","PAD_RIGHT","PAD_VENDOR","PAD_L_STICK_X","PAD_L_STICK_Y","PAD_R_STICK_X","PAD_R_STICK_Y","XRPAD_TOUCHPAD_X","XRPAD_TOUCHPAD_Y","XRPAD_STICK_X","XRPAD_STICK_Y","XRPAD_TOUCHPAD_BUTTON","XRPAD_TRIGGER","XRPAD_SQUEEZE","XRPAD_STICK_BUTTON","XRPAD_A","XRPAD_B","KeyboardEvent","keyboard","keyCode","_keyboardEvent","makeKeyboardEvent","toKeyCode","toUpperCase","_keyCodeToKeyIdentifier","Keyboard","attach","_element","detach","_keyDownHandler","_keyPressHandler","_keyUpHandler","_visibilityChangeHandler","_windowBlurHandler","toKeyIdentifier","_handleKeyDown","charCode","_keymap","stopPropagation","_handleKeyUp","_handleKeyPress","_handleVisibilityChange","visibilityState","_handleWindowBlur","_lastmap","isPressed","wasPressed","wasReleased","EVENT_KEYDOWN","EVENT_KEYUP","isMousePointerLocked","pointerLockElement","mozPointerLockElement","webkitPointerLockElement","MouseEvent","mouse","dx","dy","button","wheelDelta","ctrlKey","altKey","shiftKey","metaKey","coords","_getTargetCoords","deltaY","movementX","webkitMovementX","mozMovementX","movementY","webkitMovementY","mozMovementY","_lastX","_lastY","buttons","_buttons","Mouse","isPointerLocked","_target","_attached","passiveOptions","passive","_upHandler","_downHandler","_moveHandler","_wheelHandler","disableContextMenu","_contextMenuHandler","enableContextMenu","enablePointerLock","requestPointerLock","disablePointerLock","exitPointerLock","_lastbuttons","_handleUp","_handleDown","_handleMove","_handleWheel","clientX","clientWidth","clientY","clientHeight","EVENT_MOUSEMOVE","EVENT_MOUSEDOWN","EVENT_MOUSEUP","EVENT_MOUSEWHEEL","Controller","_keyboard","_mouse","_enableMouse","dt","_gamepads","_axesValues","_axes","appendAction","action_name","action","_actions","registerKeys","_enableKeyboard","registerMouse","registerPadButton","pad","registerAxis","controller","getAxis","positive","positiveKey","negativeKey","negative","actionName","dummyArray","MAPS_INDEXES","axes","MAPS","DEFAULT_DUAL","synthesizedButtons","PS3","mapping","DEFAULT_XR","PRODUCT_CODES","custom_maps","getMap","custom","product","raw","defaultmap","deadZone","sleep","ms","GamePadButton","pressed","touched","wasTouched","previous","dummyButton","GamePad","connected","_compileMapping","_compiledMapping","axesIndexes","buttonsIndexes","axesMap","buttonsMap","synthesizedButtonsMap","_previousAxes","gamepad","previousAxes","updateMap","resetMap","pulse","intensity","actuators","vibrationActuator","hapticActuators","startDelay","strongMagnitude","weakMagnitude","actuator","playEffect","getButton","isTouched","hand","GamePads","_previous","_ongamepadconnected","padIndex","findIndex","gp","_ongamepaddisconnected","poll","pads","padDevices","findByIndex","nPad","_ongamepadconnectedHandler","_ongamepaddisconnectedHandler","orderIndex","pulseAll","findById","gamepadsSupported","EVENT_GAMEPADCONNECTED","EVENT_GAMEPADDISCONNECTED","getTouchTargetCoords","totalOffsetX","totalOffsetY","HTMLElement","parentNode","offsetLeft","scrollLeft","offsetTop","scrollTop","offsetParent","pageX","pageY","Touch","TouchEvent","getTouchById","touches","changedTouches","TouchDevice","_startHandler","_endHandler","_cancelHandler","_handleTouchStart","_handleTouchEnd","_handleTouchMove","_handleTouchCancel","EVENT_TOUCHSTART","EVENT_TOUCHEND","EVENT_TOUCHMOVE","EVENT_TOUCHCANCEL","Http","progress","lengthComputable","loaded","endHandler","post","postdata","put","del","method","errored","retry","assign","retries","maxRetries","async","headers","Document","FormData","contentType","ContentType","FORM_URLENCODED","bFirstItem","encodedKey","encodedValue","JSON","stringify","timestamp","xhr","XMLHttpRequest","open","withCredentials","responseType","_guessResponseType","header","setRequestHeader","onreadystatechange","_onReadyStateChange","_onError","send","toLowerCase","binaryExtensions","ResponseType","DOCUMENT","TEXT","_isBinaryContentType","binTypes","BASIS","BIN","DDS","GLB","MP3","MP4","OGG","OPUS","WAV","_isBinaryResponseType","BLOB","readyState","responseURL","_onSuccess","response","getResponseHeader","parse","responseText","XML","responseXML","retrying","retryDelay","maxRetryDelay","AAC","GIF","JPEG","PNG","http","DISTANCE_LINEAR","DISTANCE_INVERSE","DISTANCE_EXPONENTIAL","Listener","getPosition","setPosition","listener","positionX","positionY","positionZ","setOrientation","orientation","forwardX","forwardY","forwardZ","upX","upY","upZ","getOrientation","_manager","manager","CONTEXT_STATE_RUNNING","USER_INPUT_EVENTS","SoundManager","suspended","_userSuspended","_context","AudioContext","_registerUnlockListeners","suspend","_suspend","resume","_resume","_removeUnlockListeners","close","createBufferSource","sampleRate","connect","destination","onended","disconnect","_unlockHandler","eventName","_unlockHandlerFunc","webkitAudioContext","Sound","audio","Audio","hasAudioContext","STATE_PLAYING","STATE_PAUSED","STATE_STOPPED","capTime","SoundInstance","currentTime","_state","_suspendInstanceEvents","stop","_startOffset","play","_currentTime","_updateCurrentTime","_duration","isPlaying","_sound","isPaused","isStopped","isSuspended","_suspended","loop","_loop","pitch","_currentOffset","_startedAt","_pitch","playbackRate","sound","_createSource","startTime","_startTime","gain","_onPlay","_onPlayCallback","_onPause","_onPauseCallback","_onResume","_onResumeCallback","_onStop","_onStopCallback","_onEnded","_suspendEndEvent","_onEndCallback","_onManagerVolumeChange","_onManagerSuspend","pause","_onManagerResume","_initializeNodes","createGain","_inputNode","_connectorNode","_playWhenLoaded","_waitingContextSuspension","_playAudioImmediate","_onManagerDestroy","wasPlaying","setExternalNodes","firstNode","lastNode","speakers","_firstNode","_lastNode","clearExternalNodes","getExternalNodes","_endedHandler","loopStart","loopEnd","onPlay","onPause","onResume","onStop","onEnd","_isReady","_loadedMetadataHandler","_onLoadedMetadata","_timeUpdateHandler","_onTimeUpdate","EVENT_PLAY","EVENT_PAUSE","EVENT_RESUME","EVENT_STOP","EVENT_END","prototype","paused","cloneNode","MAX_DISTANCE","SoundInstance3d","panner","createPanner","_position","velocity","_velocity","maxDistance","refDistance","rollOffFactor","rolloffFactor","distanceModel","fallOff","posOne","posTwo","lpos","factor","_maxDistance","_refDistance","_rollOffFactor","_distanceModel","BLEND_SUBTRACTIVE","BLEND_ADDITIVE","BLEND_NORMAL","BLEND_NONE","BLEND_PREMULTIPLIED","BLEND_MULTIPLICATIVE","BLEND_ADDITIVEALPHA","BLEND_MULTIPLICATIVE2X","BLEND_SCREEN","BLEND_MIN","BLEND_MAX","blendNames","FOG_NONE","FOG_LINEAR","FOG_EXP","FOG_EXP2","FRESNEL_NONE","FRESNEL_SCHLICK","fresnelNames","LAYER_HUD","LAYER_GIZMO","LAYER_WORLD","LAYERID_WORLD","LAYERID_DEPTH","LAYERID_SKYBOX","LAYERID_IMMEDIATE","LAYERID_UI","LIGHTTYPE_DIRECTIONAL","LIGHTTYPE_OMNI","LIGHTTYPE_POINT","LIGHTTYPE_SPOT","LIGHTTYPE_COUNT","lightTypeNames","LIGHT_COLOR_DIVIDER","LIGHTSHAPE_PUNCTUAL","LIGHTSHAPE_RECT","LIGHTSHAPE_DISK","LIGHTSHAPE_SPHERE","lightShapeNames","LIGHTFALLOFF_LINEAR","LIGHTFALLOFF_INVERSESQUARED","lightFalloffNames","SHADOW_PCF3_32F","SHADOW_PCF3","SHADOW_VSM_16F","SHADOW_VSM16","SHADOW_VSM_32F","SHADOW_VSM32","SHADOW_PCF5_32F","SHADOW_PCF5","SHADOW_PCF1_32F","SHADOW_PCF1","SHADOW_PCSS_32F","SHADOW_PCF1_16F","SHADOW_PCF3_16F","SHADOW_PCF5_16F","shadowTypeInfo","kind","pcf","vsm","pcss","SHADOW_CASCADE_0","SHADOW_CASCADE_1","SHADOW_CASCADE_2","SHADOW_CASCADE_3","SHADOW_CASCADE_ALL","BLUR_BOX","BLUR_GAUSSIAN","PARTICLESORT_NONE","PARTICLESORT_DISTANCE","PARTICLESORT_NEWER_FIRST","PARTICLESORT_OLDER_FIRST","PARTICLEMODE_GPU","PARTICLEMODE_CPU","EMITTERSHAPE_BOX","EMITTERSHAPE_SPHERE","PARTICLEORIENTATION_SCREEN","PARTICLEORIENTATION_WORLD","PARTICLEORIENTATION_EMITTER","PROJECTION_PERSPECTIVE","PROJECTION_ORTHOGRAPHIC","RENDERSTYLE_SOLID","RENDERSTYLE_WIREFRAME","RENDERSTYLE_POINTS","CUBEPROJ_NONE","CUBEPROJ_BOX","cubemaProjectionNames","DETAILMODE_MUL","DETAILMODE_ADD","DETAILMODE_SCREEN","DETAILMODE_OVERLAY","DETAILMODE_MIN","DETAILMODE_MAX","GAMMA_NONE","GAMMA_SRGB","gammaNames","TONEMAP_LINEAR","TONEMAP_FILMIC","TONEMAP_HEJL","TONEMAP_ACES","TONEMAP_ACES2","TONEMAP_NEUTRAL","TONEMAP_NONE","tonemapNames","SPECOCC_NONE","SPECOCC_AO","SPECOCC_GLOSSDEPENDENT","specularOcclusionNames","REFLECTIONSRC_NONE","REFLECTIONSRC_ENVATLAS","REFLECTIONSRC_ENVATLASHQ","REFLECTIONSRC_CUBEMAP","REFLECTIONSRC_SPHEREMAP","reflectionSrcNames","AMBIENTSRC_AMBIENTSH","AMBIENTSRC_ENVALATLAS","AMBIENTSRC_CONSTANT","ambientSrcNames","SHADERDEF_NOSHADOW","SHADERDEF_SKIN","SHADERDEF_UV0","SHADERDEF_UV1","SHADERDEF_VCOLOR","SHADERDEF_INSTANCING","SHADERDEF_LM","SHADERDEF_DIRLM","SHADERDEF_SCREENSPACE","SHADERDEF_TANGENTS","SHADERDEF_MORPH_POSITION","SHADERDEF_MORPH_NORMAL","SHADERDEF_LMAMBIENT","SHADERDEF_MORPH_TEXTURE_BASED_INT","SHADERDEF_BATCH","SHADOWUPDATE_NONE","SHADOWUPDATE_THISFRAME","SHADOWUPDATE_REALTIME","MASK_AFFECT_DYNAMIC","MASK_AFFECT_LIGHTMAPPED","MASK_BAKE","SHADER_FORWARD","SHADER_PREPASS","SHADER_SHADOW","SHADER_PICK","SHADERPASS_FORWARD","SHADERPASS_ALBEDO","SHADERPASS_WORLDNORMAL","SHADERPASS_OPACITY","SHADERPASS_SPECULARITY","SHADERPASS_GLOSS","SHADERPASS_METALNESS","SHADERPASS_AO","SHADERPASS_EMISSION","SHADERPASS_LIGHTING","SHADERPASS_UV0","SPRITE_RENDERMODE_SIMPLE","SPRITE_RENDERMODE_SLICED","SPRITE_RENDERMODE_TILED","spriteRenderModeNames","BAKE_COLOR","BAKE_COLORDIR","VIEW_CENTER","VIEW_LEFT","VIEW_RIGHT","SORTMODE_NONE","SORTMODE_MANUAL","SORTMODE_MATERIALMESH","SORTMODE_BACK2FRONT","SORTMODE_FRONT2BACK","SORTMODE_CUSTOM","ASPECT_AUTO","ASPECT_MANUAL","ORIENTATION_HORIZONTAL","ORIENTATION_VERTICAL","SKYTYPE_INFINITE","SKYTYPE_BOX","SKYTYPE_DOME","DITHER_NONE","DITHER_BAYER8","DITHER_BLUENOISE","DITHER_IGNNOISE","ditherNames","EVENT_PRERENDER","EVENT_POSTRENDER","EVENT_PRERENDER_LAYER","EVENT_POSTRENDER_LAYER","EVENT_PRECULL","EVENT_POSTCULL","EVENT_CULL_END","ShaderProcessorOptions","groupFormat","generateKey","viewUniformFormat","viewBindGroupFormat","programLibraryDeviceCache","getProgramLibrary","library","setProgramLibrary","ShaderGenerator","definesHash","sortedArray","shaderPassDeviceCache","ShaderPassInfo","buildShaderDefines","isShadow","isForward","ShaderPass","passesNamed","passesIndexed","getByIndex","getByName","ShaderChunkMap","markDirty","override","existed","_keyDirty","isDirty","resetDirty","k","_chunksCache","ShaderChunks","glsl","useWGSL","MapUtils","merge","maps","ShaderGeneratorPassThrough","createShaderDefinition","ShaderUtils","programLibrary","getCachedShader","uniqueName","vertexWGSL","vertexChunk","fragmentWGSL","fragmentChunk","chunksMap","vertexGLSL","fragmentGLSL","setCachedShader","getCoreDefines","material","cameraShaderParams","shaderPassInfo","pass","processShader","materialGenerator","libraryModuleName","register","variant","getProgram","unregister","addScreenDepthChunkDefines","sceneDepthMapLinear","vsName","fsName","shaderDefinitionOptions","createShaderFromCode","fsCode","_quadPrimitive","_tempViewport","_tempScissor","_dynamicBindGroup$1","QuadRender","RenderPassQuad","quad","scissorRect","_tempRect","drawQuadWithShader","Batch","scene","layers","meshInstance","removeFromLayers","addToLayers","layer","getLayerById","addMeshInstances","removeMeshInstances","updateBoundingBox","origMeshInstances","_aabbVer","model","meshInstances","dynamic","batchGroupId","BatchGroup","maxAabbSize","_ui","_sprite","_obj","sprite","MODEL","ELEMENT","SPRITE","RENDER","_invMatrix","SkinInstance","rootBone","_rootBone","numBones","numPixels","boneTexture","matrixPalette","entity","skin","bones","boneNames","boneName","bone","findByName","initSkin","inverseBindPose","matrices","uploadBones","_updateMatrices","rootNode","skinUpdateIndex","_skinUpdateIndex","getWorldTransform","updateMatrices","_updateBeforeCull","updateMatrixPalette","mp","pe","SkinBatchInstance","nodes","id$5","GeometryData","initDefaults","recreate","verticesUsage","indicesUsage","maxVertices","maxIndices","indexCount","vertexStreamsUpdated","indexStreamUpdated","vertexStreamDictionary","_changeVertexCount","DEFAULT_COMPONENTS_POSITION","DEFAULT_COMPONENTS_NORMAL","DEFAULT_COMPONENTS_UV","DEFAULT_COMPONENTS_COLORS","GeometryVertexStream","componentCount","dataTypeNormalize","Mesh","fromGeometry","geometry","mesh","normals","tangents","colors","uvs","uvs1","blendIndices","blendWeights","setPositions","setNormals","setVertexStream","setColors32","setUvs","setIndices","morph","_morph","_destroyIndexBuffer","_geometryData","_initBoneAabbs","morphTargets","boneAabb","boneUsed","boneMin","boneMax","maxMorphX","maxMorphY","maxMorphZ","iterator","posElement","weightsElement","indicesElement","boneWeight","boneIndex","minMorphX","minMorphY","minMorphZ","deltaPositions","dz","positionElement","_initGeometryData","verticesDynamic","indicesDynamic","getVertexStream","done","stream","setColors","getPositions","getNormals","getUvs","getColors","getIndices","streamIndices","il","destroyVB","destroyIB","_updateVertexBuffer","_updateIndexBuffer","updateRenderStates","_buildVertexFormat","vertexDesc","allocateVertexCount","_storageVertex","createFormat","_storageIndex","srcIndices","prepareRenderState","renderStyle","generateWireframe","indicesArrayType","tmpIndices","seen","i1","i2","safeNumVertices","wireBuffer","storageIndex","storageVertex","defaultMaterialDeviceCache","getDefaultMaterial","setDefaultMaterial","RefCountedCache","incRef","decRef","LightmapCache","id$4","_tmpAabb","_tempBoneAabb","_tempSphere","_meshSet","InstancingData","_destroyVertexBuffer","numObjects","ShaderInstance","getUniformBuffer","MeshInstance","drawBucket","bucket","_drawBucket","_renderStyle","_mesh","_updateAabb","_updateAabbFunc","localAabb","_customAabb","toWorldSpace","skinInstance","_morphInstance","_targets","node","_aabbMeshVer","morphAabb","clearShaders","_shaderCache","shaderInstance","getShaderInstance","shaderPass","lightHash","sortedLights","shaderDefs","_shaderDefs","mat","_material","variants","getShaderVariant","objDefs","prevMat","removeMeshInstanceRef","addMeshInstanceRef","transparent","_updateShaderDefs","calculateSortDistance","_calculateSortDistance","receiveShadow","_receiveShadow","batching","_skinInstance","_setupSkinUpdate","morphInstance","morphPositions","morphNormals","intRenderFormat","screenSpace","_screenSpace","_sortKeyForward","toggles","instancingCount","instancingData","setRealtimeLightmap","lightmapParamNames","destroyDrawCommands","cmd","_prepareRenderStyleForArray","_isVisible","camera","visible","isVisibleFunc","frustum","alphaTest","setInstancing","cull","setIndirect","_deleteDrawCommandsKey","setMultiDraw","indexFormat","cmds","getDrawCommands","getIndirectMetaData","prim","meshMetaData","ensureMaterial","clearParameters","getParameters","passFlags","old","setParameters","passFlag","paramName","parameter","setLightmapped","setCustomAabb","castShadow","shadowCascadeMask","drawOrder","visibleThisFrame","flipFacesFactor","gsplatInstance","indirectData","pick","_sortKeyShadow","_sortKeyDynamic","_layer","_triFanIndices","_triStripIndices","mat3","paramsIdentical","equalParamSets","params1","params2","getScaleSign","mi","BatchManager","_batchGroups","_batchList","_dirtyGroups","addGroup","_batchGroupCounter","group","removeGroup","newBatchList","destroyBatch","_removeModelsFromBatchGroup","markGroupDirty","getGroupByName","groups","getBatches","batch","_children","groupId","_extractRender","groupMeshInstances","_extractModel","removeModelFromLayers","_extractElement","valid","_text","_model","_image","_renderable","unmaskMeshInstance","_dirtifyMask","_onPrerender","_collectAndRemoveMeshInstances","groupIds","_meshInstance","_renderMode","_batchGroup","newDirtyGroups","lists","groupData","prepare","POSITIVE_INFINITY","translucent","halfMaxAabbSize","maxInstanceCount","maxNumVertices","testAabb","skipTranslucentAabb","sf","meshInstancesLeftA","meshInstancesLeftB","skipMesh","defs","vertCount","vertexFormatBatchingHash","collectBatchedMeshData","streams","batchNumVerts","batchNumIndices","elems","_init","vertexFormats","batchData","indexBase","indexBaseVertex","indexData","verticesOffset","indexOffset","transform","indexArrayType","typeArrayType","elementByteSize","totalComponents","m2","m4","m5","m6","m8","m9","m14","m3","m7","srcFormat","batchGroup","updateAll","clonedMeshInstances","batch2","root","_colorUniformName","RenderPassColorGrab","releaseRenderTarget","colorRenderTarget","shouldReallocate","targetRT","sourceFormat","targetFormat","allocateRenderTarget","sourceRenderTarget","sourceRt","_depthUniformName","RenderPassDepthGrab","depthRenderTarget","isDepth","destinationRt","useDepthBuffer","numSamples","CameraShaderParams","_hash","gammaCorrection","srgbRenderTarget","fog","ssaoEnabled","_defines","_definesDirty","_sceneDepthMapLinear","_fog","_toneMapping","shaderOutputGamma","_ssaoEnabled","_gammaCorrectionAssigned","_gammaCorrection","_srgbRenderTarget","gammaOutput","_deviceCoord","_halfSize","_point$1","_invViewProjMat","_frustumPoints","Camera","renderPassColorGrab","renderPassDepthGrab","renderPasses","_storeShaderMatrices","viewProjMat","jitterX","jitterY","_shaderMatricesVersion","_viewProjPrevious","_viewProjCurrent","_viewProjInverse","_jitters","_scissorRectClear","_rect","aspectRatio","newValue","_aspectRatio","_projMatDirty","active","_xrProperties","aspectRatioMode","_aspectRatioMode","calculateProjection","_calculateProjection","calculateTransform","_calculateTransform","_clearColor","clearColorBuffer","_clearColorBuffer","_clearDepth","clearDepthBuffer","_clearDepthBuffer","_clearStencil","clearStencilBuffer","_clearStencilBuffer","cullFaces","_cullFaces","farClip","_farClip","flipFaces","_flipFaces","_fov","frustumCulling","_frustumCulling","horizontalFov","_horizontalFov","_layers","_layersSet","layersSet","nearClip","_nearClip","_node","orthoHeight","_orthoHeight","_projection","projectionMatrix","_evaluateProjectionMatrix","_projMat","_renderTarget","_scissorRect","viewMatrix","_viewMatDirty","wtm","_viewMat","aperture","_aperture","sensitivity","_sensitivity","shutter","_shutter","_xr","jitter","_enableRenderPassColorGrab","_enableRenderPassDepthGrab","renderer","_updateViewProjMat","_viewProjMatDirty","_viewProjMat","worldToScreen","worldCoord","cw","screenCoord","vpm","rh","screenToWorld","range","invView","cameraPos","_projMatSkybox","getProjectionMatrixSkybox","getExposure","ev100","getScreenSize","viewAngle","sphereViewHeight","screenViewHeight","getFrustumCorners","points","setXrProperties","properties","fogParams","shaderParams","scaleCompensatePosTransform","scaleCompensatePos","scaleCompensateRot","scaleCompensateRot2","scaleCompensateScale","scaleCompensateScaleForParent","tmpMat4","tmpQuat","position$3","invParentWtm$1","rotation$5","invParentRot","up$1","createTest","Function","findNode","children","GraphNode","_up","forward","_forward","normalMatrix","normalMat","_normalMatrix","_dirtyNormal","_notifyHierarchyStateChanged","_enabledInHierarchy","graphDepth","_graphDepth","_onHierarchyStateChanged","_frozen","_unfreezeParentToRoot","_cloneInternal","localPosition","localRotation","localScale","localEulerAngles","rotation","eulerAngles","localTransform","_dirtyLocal","_dirtyWorld","scaleCompensation","child","findOne","findByTag","queryNode","checkNode","findByPath","imax","thisArg","isDescendantOf","isAncestorOf","getLocalEulerAngles","getLocalPosition","getLocalRotation","getLocalScale","getLocalTransform","getRotation","_scale","_sync","worldScaleSign","_worldScaleSign","removeChild","reparent","insertChild","addChild","setLocalEulerAngles","_dirtifyLocal","setLocalPosition","setLocalRotation","setLocalScale","_dirtifyWorld","_dirtifyWorldInternal","setRotation","parentRot","setPositionAndRotation","parentWtm","setEulerAngles","_prepareInsertChild","_onInsertChild","addChildAndSaveTransform","wPos","wRot","_fireOnHierarchy","nameHierarchy","enabledInHierarchy","_updateGraphDepth","parentWorldScale","parentToUseScaleFrom","tmatrix","syncHierarchy","lookAt","ux","uy","uz","translate","translateLocal","rot","rotateLocal","_viewMat$1","_viewportMatrix","LightCamera","lightType","pointLightRotations","evalSpotCookieMatrix","light","cookieCamera","_spotCookieCamera","_outerConeAngle","cookieNode","cookieMatrix","rectViewport","atlasViewport","tempVec3$1","tempAreaLightSizes","areaHalfAxisWidth","areaHalfAxisHeight","TextureIndexFloat","POSITION_RANGE","DIRECTION_FLAGS","COLOR_ANGLES_BIAS","PROJ_MAT_0","ATLAS_VIEWPORT","PROJ_MAT_1","PROJ_MAT_2","PROJ_MAT_3","AREA_DATA_WIDTH","AREA_DATA_HEIGHT","COUNT","enums","prefix","lightBufferDefines","LightsBuffer","lightsTexture","setBounds","delta","boundsMin","boundsDelta","uploadTextures","lightsFloat","updateUniforms","_lightsTextureId","getSpotDirection","spot","getLightAreaSizes","addLightData","lightIndex","isSpot","hasAtlasViewport","atlasViewportAllocated","isCookie","cookiesEnabled","_cookie","isArea","areaLightsEnabled","shape","castShadows","shadowsEnabled","pos","lightProjectionMatrix","lightRenderData","getRenderData","shadowMatrix","dataFloat","dataUint","lightsUint","dataFloatStart","attenuationEnd","clusteredData","biases","_getUniformBiasValues","biasHalf","bias","normalBiasHalf","normalBias","getClusteredFlags","matData","areaSizes","maxLights","pixelsPerLightFloat","invMaxColorValue","invMaxAttenuation","tempVec3","tempMin3","tempMax3","tempBox","ClusterLight","WorldClusters","maxCellLightCount","_maxCellLightCount","_cellsDirty","cells","_cells","_cellsLimit","lightsBuffer","releaseClusterTexture","clusterTexture","registerUniforms","_clusterSkipId","_clusterMaxCellsId","_clusterWorldTextureId","_clusterTextureSizeId","_clusterTextureSizeData","_clusterBoundsMinId","_clusterBoundsMinData","_clusterBoundsDeltaId","_clusterBoundsDeltaData","_clusterCellsCountByBoundsSizeId","_clusterCellsCountByBoundsSizeData","_clusterCellsDotId","_clusterCellsDotData","_clusterCellsMaxId","_clusterCellsMaxData","updateParams","lightingParams","maxLightsPerCell","updateCells","numCells","totalPixels","clusters","Uint8ClampedArray","_usedLights","evalLightCellMinMax","clusteredLight","collectLights","lights","usedLights","runtimeLight","zeroAngleSpotlight","getBoundingBox","evaluateBounds","boundsMax","updateClusters","fill","divX","divZ","limit","pixelsPerCellCount","xStart","xEnd","yStart","yEnd","zStart","zEnd","clusterIndex","activate","reportCount","base64String","initData","binaryString","atob","blueNoiseData","BlueNoise","_next","seed","vec4","lightCubeDir","LightCube","ambientLight","weight","_direction","_intensity","lightColor","_color","namePrefix","deviceCacheBlueNoise","getBlueNoiseTexture","ShadowMap","renderTargets","shadowMap","createCubemap","_shadowResolution","_shadowType","create2dMap","createAtlas","resolution","shadowType","shadowInfo","formatName","isPcss","cached","_tempArray","_tempArray2","_viewport$3","_scissor","Slot","lightId","LightTextureAtlas","destroyShadowAtlas","destroyCookieAtlas","shadowAtlas","cookieAtlas","cookieRenderTarget","allocateShadowAtlas","existingFormat","requiredFormat","scissorOffset","shadowAtlasResolution","scissorVec","allocateCookieAtlas","allocateUniforms","_shadowAtlasTextureId","_shadowAtlasParamsId","_shadowAtlasParams","_cookieAtlasTextureId","shadowBuffer","shadowEdgePixels","subdivide","numLights","atlasSplit","gridSize","arraysEqual","every","slots","splitCount","invSize","nextLevelSplit","invSizeNext","rectNext","localLights","needsShadowAtlas","needsCookieAtlas","processLights","lightShadow","lightCookie","cookie","maxScreenSize","cookieAtlasResolution","setupSlot","faceCount","numShadowFaces","smallSize","cubeSlotsOffsets","shadowViewport","shadowScissor","assignSlot","slotReassigned","atlasSlotUpdated","atlasVersion","atlasSlotIndex","assignCount","_shadowMap","previousSlot","usedCount","blendModes","alphaSrc","id$3","Material","hasShaderChunks","_shaderChunks","shaderChunks","getShaderChunks","chunks","shaderChunksVersion","_oldChunks","fromEntries","_depthState","slopeDepthBias","_blendState","_updateTransparency","blendType","blendMode","alphaDst","_updateMeshInstanceKeys","depthTest","depthWrite","_setParameterSimple","_dirtyShader","clearVariants","uniformObject","setDefine","modified","getDefine","defaultMaterial","userId","_shaderVersion","_scene","ShadowMapCache","shadowMaps","isCubeMap","RenderPassShadowLocalNonClustered","shadowRenderer","renderFace","applyVsm","renderVsm","shadowCamera","prepareFace","setupRenderPass","ShadowRendererLocal","comp","casters","isClustered","clusteredLightingEnabled","shadowCam","shadowCamNode","lightNode","tileSize","lightTextureAtlas","texelSize","filterSize","atan","updateCameraFrustum","cullShadowCasters","visibleCasters","prepareLights","shadowLights","needsShadowRendering","buildNonClusteredRenderPasses","frameGraph","addRenderPass","RenderPassShadowDirectional","allCascadesRendering","shadowUpdateOverrides","visibleSceneAabb","shadowCamView$1","aabbPoints","_depthRange","getDepthRange","cameraViewMatrix","aabbMin","aabbMax","ShadowRendererDirectional","nearDist","generateSplitDistances","shadowDistance","cascade","numCascades","cascades","frustumNearDist","_shadowCascadeDistances","frustumFarDist","frustumPoints","cameraWorldMat","dist","lightDir","sizeRatio","scaledUp","scaledRight","scaledDir","cascadeFlag","origNumVisibleCasters","numVisibleCasters","depthRange","projectionCompensation","farDist","fraction","linearDist","logDist","cascadeDistribution","getLightRenderPass","tempSet$1","shadowCamView","shadowCamViewProj","pixelOffset","blurScissorRect","viewportMatrix","gauss","sigma","exp","gaussWeights","kernelSize","halfWidth","ShadowRenderer","createShadowCamera","isVsm","isPcf","_cullShadowCastersInternal","layerList","_lightsSet","shadowCasters","sortCompareShader","drawCallA","drawCallB","keyA","keyB","setupRenderState","useShadowSampler","_isPcf","blendStateNoWrite","blendStateWrite","shadowDepthState","dispatchUniforms","dispatchViewPos","shadowMapLightRadiusId","_shadowMatrixPalette","getShadowPass","shadowPassInfo","shadowPassCache","shadowPassName","submitCasters","shadowPass","flipFactor","setBaseConstants","setSkinning","setupCullMode","shadowShader","setVertexBuffers","setMorphing","setMeshInstanceMatrices","setupMeshUniformBuffers","style","_shadowDrawCalls","_instancedDrawCalls","needs","shadowUpdateMode","_shadowMapUpdates","getLightRenderData","clearRenderTarget","renderTargetIndex","setCameraUniforms","setupViewUniformBuffers","viewBindGroups","setupViewport","clearView","_isVsm","_vsmBlurSize","applyVsmBlur","getVsmBlurShader","blurMode","blurVsmShader","blurShader","blurVsmWeights","origShadowMap","tempShadowMap","shadowMapCache","tempRt","vsmBlurMode","sourceId","pixelOffsetId","weightId","initViewBindGroupFormat","tempClusterArray","WorldClustersAllocator","_empty","_allocated","cluster","empty","_clusters","passCount","renderActions","ra","lightClusters","hasClusteredLights","getLightIdHash","existingRenderAction","lighting","renderAction","clusteredLightsSet","_viewport$2","_invViewProjMatrices","RenderPassCookieRenderer","_quadRenderer2D","_quadRendererCube","_evtDeviceRestored","onDeviceRestored","_forceCopy","filteredLights","_filteredLights","initInvViewProjMatrices","projMat","viewMat","quadRenderer2D","quadRendererCube","renderTargetWidth","_cubeSlotsOffsets","blitTextureId","invViewProjId","RenderPassShadowLocalClustered","shadowRendererLocal","RenderPassUpdateClustered","cookiesRenderPass","shadowRenderPass","worldClustersAllocator","viewInvMat","viewMat3","tempSphere$1","_flipYMat","_tempLightSet","_tempLayerSet","_dynamicBindGroup","_fixProjRangeMat","_haltonSequence","_tempProjMat0","_tempProjMat1","_tempProjMat2","_tempProjMat3","_tempProjMat4","_tempProjMat5","_tempSet","_tempMeshInstances","_tempMeshInstancesSkinned","Renderer","_shadowRendererLocal","_shadowRendererDirectional","_renderPassUpdateClustered","gsplatDirector","pixelWidth","pixelHeight","viewList","session","views","updateTransforms","projViewOffMat","projMatSkybox","targetWidth","targetHeight","blueNoiseJitterVersion","blueNoise","blueNoiseJitterVec","jitterVec","blueNoiseJitterData","blueNoiseJitterId","projId","projSkyboxId","viewInvId","viewId","viewId3","viewProjId","flipYId","tbnBasis","nearClipId","farClipId","cameraParams","cameraParamsId","exposureId","physicalUnits","exposure","setCamera","forceWrite","setDepthWrite","_clearOptions","drawCall","twoSidedLightingNegScaleFactorId","viewOffMat","opacityMap","opacityMapId","alphaTestId","updateCpuSkinMatrices","drawCalls","drawCallsCount","si","updateGpuSkinMatrices","updateMorphing","morphInst","updateGSplats","gpuUpdate","prepareRendering","vertexBufferIds","morphPositionTex","texturePositions","morphNormalTex","textureNormals","morphTexParams","_textureParams","_skinDrawCalls","boneTextureId","vp","viewPos","viewPosId","setupViewUniforms","viewInvOffMat","positionData","viewIndexId","viewCount","bg","viewBindGroup","meshBindGroup","meshUniformBuffer","setNormalMatrix","modelMatrix","modelMatrixId","normalMatrixId","culledInstances","opaque","doCull","processingMeshInstances","cameras","stats","_stats","_lights","cullLights","getBoundingSphere","usePhysicalUnits","screenSize","cullShadowmaps","cameraDirShadowLights","cameraComponent","lightList","cameraLayers","cameraLayer","layerDirLights","splitLights","cullComposition","numCameras","_camerasRendered","layerIds","getCulledInstances","updateLightTextureAtlas","updateShaders","onlyLitShaders","useLighting","emitter","updateFrameUniforms","blueNoiseTextureId","beginFrame","layerCount","meshInst","lightCount","updateLayerComposition","shaderVersion","_update","clustersDebugRendered","dirLightShadows","_skinTime","_morphTime","_cullTime","_shadowMapTime","_lightClustersTime","_layerCompositionUpdateTime","_numDrawCallsCulled","_lightClusters","_gsplatCount","lightCube","constantLightCube","RenderAction","setupClears","triggerPostprocess","firstCameraUse","lastCameraUse","useCameraPasses","RenderPassForward","rendersAnything","addRenderAction","addLayer","autoClears","firstRa","addLayers","composition","startIndex","firstLayerClears","lastLayerId","lastLayerIsTransparent","subLayerList","isTransparent","renderedByCamera","updateDirectionalShadows","cameraComp","shadowDirLights","updateClears","noDepthClear","layerComposition","isEnabled","renderRenderAction","firstRenderAction","originalGammaCorrection","originalToneMapping","renderForwardLayer","RenderPassPostprocessing","onPostprocessing","_noLights","tmpColor$1","_drawCallList","shaderInstances","isNewMaterial","lightMaskChanged","vogelDiskPrecalculationSamples","vogelSpherePrecalculationSamples","ForwardRenderer","dispatchGlobalLights","ambientUniform","ambientColor","ambientLuminance","ambientId","skyboxIntensityId","skyboxLuminance","skyboxIntensity","cubeMapRotationMatrixId","_skyboxRotationMat3","_resolveLight","lightColorId","lightDirId","lightShadowMapId","lightShadowMatrixId","lightShadowParamsId","lightShadowIntensity","lightShadowSearchAreaId","lightRadiusId","lightPos","lightPosId","lightWidth","lightWidthId","lightHeight","lightHeightId","lightInAngleId","lightOutAngleId","lightCookieId","lightCookieIntId","lightCookieMatrixId","lightCookieOffsetId","lightCameraParamsId","lightSoftShadowParamsId","shadowMatrixPaletteId","shadowCascadeDistancesId","shadowCascadeCountId","shadowCascadeBlendId","setLTCDirectionalLight","cnt","campos","hWidth","hHeight","dispatchDirectLights","dirs","directional","_colorLinear","cascadeBlend","shadowIntensity","_softShadowParams","shadowRT","penumbraSize","_shadowCameraParams","_shadowRenderParams","setLTCPositionalLight","dispatchOmniLight","omni","pixelsPerMeter","cookieIntensity","dispatchSpotLight","_innerConeAngleCos","_outerConeAngleCos","fovRatio","_cookieTransform","_cookieTransformUniform","_cookieOffsetUniform","_cookieOffset","dispatchLocalLights","usedDirLights","omnis","numOmnis","spts","numSpts","renderForwardPrepareMaterials","addCall","getLightHash","prevMaterial","prevObjDefs","prevLightMask","lightMask","_materialSwitches","renderForwardInternal","preparedCalls","drawCallback","preparedCallsCount","newMaterial","_forwardDrawCalls","renderForward","allDrawCalls","sortVisible","onPreRenderLayer","requiresLightCube","debugLayer","_activeCamera","setFogConstants","forwardDrawCalls","fogUniform","fogColor","fogColorId","fogStartId","fogEndId","fogDensityId","density","setSceneConstants","_screenSize","screenSizeId","pcssDiskSamplesId","pcssDiskSamples","pcssSphereSamplesId","pcssSphereSamples","buildFrameGraph","newStart","_renderActions","isDepthLayer","isGrabPass","renderSceneColorMap","renderSceneDepthMap","nextRenderAction","isNextLayerDepth","isNextLayerGrabPass","nextNeedDirShadows","isDepthOnly","addMainRenderPass","colorGrabPass","endIndex","_updateSkyMesh","_depthMapTime","_forwardTime","_sortTime","layerCounter","lightKeys","_tempMaterials","sortManual","sortMaterialMesh","sortBackToFront","sortFrontToBack","sortCallbacks","CulledInstances","Layer","_dirtyComposition","gsplatPlacementsDirty","incrementCounter","decrementCounter","_clusteredLightsSet","_refCounter","addGSplatPlacement","placement","gsplatPlacements","removeGSplatPlacement","skipShadowCasters","destMeshInstances","destMeshInstancesSet","meshInstancesSet","addShadowCasters","sceneShaderVer","removeShadowCasters","shadowCastersSet","clearMeshInstances","markLightsDirty","_lightHashDirty","_lightIdHashDirty","_splitLightsDirty","hasLight","addLight","removeLight","clearLights","removeLayer","_splitLights","evaluateLightHash","directionalLights","useIds","isLocalLight","_lightHash","_lightIdHash","addCamera","camerasSet","removeCamera","clearCameras","_calculateSortDistances","camPos","camFwd","px","py","pz","fx","fy","fz","zDist","meshPos","instances","_visibleInstances","sortMode","transparentSortMode","opaqueSortMode","cameraNode","sortPos","sortDir","customCalculateSortValues","customSortCallback","WeakMap","cmpPriority","priority","sortPriority","LayerComposition","destroyRenderActions","renderActionCount","addDummyRenderAction","cameraFirstRenderAction","cameraFirstRenderActionIndex","lastRenderAction","postProcessMarked","isLayerEnabled","subLayerEnabled","disablePostEffectsLayer","postEffectsEnabled","propagateRenderTarget","_logRenderActions","getNextRenderAction","renderActionIndex","needsCameraClear","needsLayerClear","fromCamera","thisCamera","_isLayerAdded","layerIdMap","_isSublayerAdded","layerTransparentIndexMap","layerOpaqueIndexMap","_opaqueOrder","_transparentOrder","_updateLayerMaps","_updateOpaqueOrder","_updateTransparentOrder","pushOpaque","insertOpaque","removeOpaque","pushTransparent","insertTransparent","removeTransparent","getOpaqueIndex","getTransparentIndex","layerNameMap","subLayerIndexMap","getLayerByName","_sortLayersDescending","layersA","layersB","order","topLayerA","topLayerB","sortTransparentLayers","sortOpaqueLayers","tmpVec","tmpBiases","tmpColor","chanId","lightTypes","directionalCascades","channelMap","id$2","LightRenderData","Light","_destroyShadowMap","releaseRenderData","_renderData","shadowSamples","shadowBlockerSamples","shadowBias","_shadowBias","_updateShadowBias","_cascadeBlend","_mask","updateClusteredFlags","stype","_shape","_usePhysicalUnits","_updateLinearColor","layersDirty","_castShadows","_shadowIntensity","bakeShadows","shadowResolution","vsmBlurSize","normalOffsetBias","_normalOffsetBias","falloffMode","_falloffMode","innerConeAngle","_innerConeAngle","updateClusterData","outerConeAngle","_updateOuterAngle","_penumbraSize","penumbraFalloff","radAngle","_outerConeAngleSin","affectSpecularity","_affectSpecularity","luminance","_luminance","_cookieMatrix","_atlasViewport","cookieFalloff","_cookieFalloff","cookieChannel","_cookieChannel","chr","addLen","cookieTransform","_cookieTransformSet","cookieOffset","_cookieOffsetSet","xformNew","rd","clusteredLighting","setColor","attenuationStart","vsmBias","getLightUnitConversion","outerAngle","innerAngle","falloffEnd","falloffStart","getColor","cosAngle","box","scl","colorLinear","isDynamic","isLightmapped","clusteredFlags","useCookie","updateColor","updateAngles","clusteredData16","cosThreshold","angleShrinkFactor","innerCos","outerCos","isStatic","bakeDir","bakeNumSamples","bakeArea","LightingParams","applySettings","lightingShadowsEnabled","lightingCookiesEnabled","lightingAreaLightsEnabled","lightingShadowAtlasResolution","lightingCookieAtlasResolution","lightingMaxLightsPerCell","lightingShadowType","lightingCells","_maxLightsPerCell","_cookieAtlasResolution","_maxTextureSize","_shadowAtlasResolution","_dirtyLightsFnc","_cookiesEnabled","_supportsAreaLights","_areaLightsEnabled","_shadowsEnabled","dirtyLightsFnc","MorphInstance","rtPositions","rtNormals","_getWeightIndex","_weightMap","getWeight","_weights","setWeight","_createShader","outputType","_updateTextureRenderTarget","activeCount","isPos","setAabbUniforms","morphTextureId","targetsTexturePositions","targetsTextureNormals","countId","morphFactor","_shaderMorphWeights","morphIndex","_shaderMorphIndex","_updateTextureMorph","zeroTextures","aabbSizeId","_aabbSize","_aabbNrmSize","aabbMinId","_aabbMin","_aabbNrmMin","weights","maxNumTargets","defaultWeight","createRT","textureVar","_createTexture","_renderTextureFormat","morphTextureWidth","morphTextureHeight","Model","getGraph","graph","setGraph","getCameras","setCameras","getLights","setLights","getMaterials","materials","srcNodes","cloneNodes","_duplicate","newNode","cloneGraph","cloneMeshInstances","cloneSkinInstances","cloneMorphInstances","skinInstances","cloneSkinInstance","morphInstances","cloneMorphInstance","nodeIndex","cloneMeshInstance","skinInstanceIndex","morphInstanceIndex","_shadersVersion","_immutable","Morph","targetAabb","_morphPositions","_morphNormals","_initTextureBased","_postInit","_findSparseSet","deltaArrays","ids","usedDataIndices","freeIndex","dataCount","vertexUsed","deltaInfos","deltaNormals","halfFloat","_textureFormat","texturesDataPositions","texturesDataNormals","textureDataSize","dstIndex","formatDesc","_updateMorphFlags","preferHighPrecision","renderableHalf","renderableFloat","MorphTarget","_defaultWeight","preserveData","nonUniformScale","uniformScale","particleTexChannels$1","rotMat","rotMatInv","randomPosTformed","randomPos","rndFactor3Vec","particlePosPrev","velocityVec","localVelocityVec","velocityVec2","localVelocityVec2","radialVelocityVec","particlePos","particleFinalPos","moveDirVec","tmpVec3$1","frac","saturate$1","glMod","encodeFloatRGBA","encX","encY","encZ","encW","encodeFloatRG","ParticleCPUUpdater","calcSpawnPosition","particleTex","spawnMatrix","extentsInnerRatioUniform","emitterPos","_emitter","rX","rY","rZ","rW","useCpu","numParticlesPot","emitterShape","edgeX","edgeY","edgeZ","sign","localSpace","spawnBoundsSphereInnerRatio","emitterRadius","emitterRadiusInner","particleRate","rate","rate2","startSpawnTime","pack8","packX","worldBounds","worldBoundsSize","packY","packZ","packA","startAngle","startAngle2","rg0","ba0","rg1","ba1","maxNegLife","lifetime","numParticles","maxPosLife","rgba3","vbToSort","isOnStop","fullMat","posCam","vertSize","useMesh","cf","cc","rotSpeed","rotSpeed2","scale2","alpha2","radialSpeed","radialSpeed2","precision1","vbCPU","numParticleVerts","rndFactor","particleLifetime","life","nlife","alphaDiv","respawn","particleEnabled","qRotSpeed","qRotSpeed2","qScale","qScale2","qAlpha","qAlpha2","qRadialSpeed","qRadialSpeed2","qLocalVelocity","qLocalVelocity2","qVelocity","qVelocity2","initialVelocity","wrap","wrapBounds","particleDistance","vbOffset","quadX","quadY","quadZ","alignToMotion","vbStride","vbOld","p2","spawnMatrix3","emitterMatrix3","emitterMatrix3Inv","ParticleGPUUpdater","_setInputBounds","inBoundsSizeUniform","prevWorldBoundsSize","constantInBoundsSize","inBoundsCenterUniform","prevWorldBoundsCenter","constantInBoundsCenter","randomize","frameRandomUniform","constantRadialSpeedDivMult","constantGraphSampleSize","constantGraphNumSamples","constantNumParticles","constantNumParticlesPot","constantInternalTex0","internalTex0","constantInternalTex1","internalTex1","constantInternalTex2","internalTex2","constantInternalTex3","internalTex3","emitterScale","worldBoundsMulUniform","worldBoundsMul","constantOutBoundsMul","worldBoundsAddUniform","worldBoundsAdd","constantOutBoundsAdd","maxVel","constantMaxVel","emitterMatrix","constantSpawnBounds","constantSpawnPosInnerRatio","constantSpawnBoundsSphere","constantSpawnBoundsSphereInnerRatio","constantInitialVelocity","emitterPosUniform","constantEmitterPos","constantFrameRandom","constantDelta","constantRate","constantRateDiv","constantStartAngle","constantStartAngle2","constantSeed","constantLifetime","emitterScaleUniform","constantEmitterScale","constantEmitterMatrix","constantEmitterMatrixInv","constantLocalVelocityDivMult","localVelocityUMax","constantVelocityDivMult","velocityUMax","constantRotSpeedDivMult","rotSpeedUMax","texIN","swapTex","particleTexOUT","particleTexIN","beenReset","particleTexStart","texOUT","constantParticleTexIN","rtParticleTexIN","rtParticleTexOUT","shaderParticleUpdateRespawn","shaderParticleUpdateNoRespawn","shaderParticleUpdateOnStop","gd","constantParticleTexOUT","constantFaceTangent","constantFaceBinorm","normalTypeNames","ShaderGeneratorParticle","createVertexDefines","vDefines","meshUv","animTex","soft","stretch","customFace","animTexLoop","particle_vertexData","particle_uv","particle_vertexData2","particle_vertexData3","particle_vertexData4","particle_vertexData5","createFragmentDefines","fDefines","halflambert","engineChunks","executionDefine","particle","ParticleMaterial","normalMap","halfLambert","depthSoftening","toneMap","noFog","inTools","_isAnimated","animLoop","particleVerts","pixelData","mult8Bit","mipFilter","saturate","default0Curve","default1Curve","default0Curve3","default1Curve3","particleTexHeight","particleTexChannels","tmpVec3","setPropertyTarget","setPropertyOptions","setProperty","pName","defaultVal","pack3NFloats","packed","packTextureXYZ_NXYZ","qXYZ","qXYZ2","packTextureRGBA","qRGB","qA","packTexture5Floats","qB","qC","qD","qE","packTexture2Floats","calcEndTime","interval","subGraph","A","B","maxUnsignedGraphValue","outUMax","chans","normalizeGraph","uMax","divGraphFrom2Curves","curve1","curve2","particleEmitterDeviceCache","ParticleEmitter","defaultParamTexture","centerPoint","dtex","xgrad","ygrad","onChangeCamera","resetMaterial","calculateBoundsMad","calculateWorldBounds","recalculateLocalBounds","emitterExtents","prevEmitterExtents","prevEmitterRadius","calculateLocalBounds","nodeWT","worldBoundsNoTrail","localBounds","worldBoundsTrail","simTimeTotal","timeToSwitchBounds","resetWorldBounds","maxR","maxScale","stepWeight","wVels","lVels","accumX","accumY","accumZ","accumR","accumW","rebuild","colorMap","spawnBounds","forceCpuParticles","wasVisible","_destroyResources","rebuildGraphs","iSort","_gpuUpdater","emitterExtentsInner","_cpuUpdater","shaderUniqueId","shaderOptions","numParticleIndices","_allocate","_createMaterial","_setMaterialTextures","resetTime","addTime","preWarm","prewarm","animNumFrames","animTilesX","animTilesY","localVelocityGraph","velocityGraph","qColor","colorGraph","rotationSpeedGraph","scaleGraph","alphaGraph","radialSpeedGraph","localVelocityGraph2","velocityGraph2","qColor2","colorGraph2","rotationSpeedGraph2","scaleGraph2","alphaGraph2","radialSpeedGraph2","colorUMax","scaleUMax","alphaUMax","radialSpeedUMax","qLocalVelocityDiv","qVelocityDiv","qColorDiv","qRotSpeedDiv","qScaleDiv","qAlphaDiv","qRadialSpeedDiv","umax","umax2","lumax","lumax2","rumax","rumax2","lmaxVel","maxRad","colorParam","animTilesParams","animParams","animIndexParams","wrapBoundsUniform","_compParticleFaceParams","tangent","binormal","particleNormal","emitterMat","getVertexInfo","psysVertCount","psysIndexCount","meshData","texCoordOffset","elem","vertID","vert","baseIndex","origLoop","lifetimeFraction","iterations","stepDelta","endTime","finishFrame","tilesParams","animStartFrame","animSpeed","animNumAnimations","animIndex","randomizeAnimIndex","onFinished","_addTimeTime","fixedTimeStep","maxSubSteps","simTime","GSplatParams","colorizeLod","_colorizeLod","lodBehindPenalty","_lodBehindPenalty","lodRangeMin","_lodRangeMin","lodRangeMax","_lodRangeMax","lodUnderfillLimit","_lodUnderfillLimit","colorRamp","_colorRamp","debugAabbs","radialSorting","debugNodeAabbs","lodUpdateDistance","lodUpdateAngle","colorRampIntensity","colorizeColorUpdate","colorUpdateDistance","colorUpdateAngle","colorUpdateDistanceLodScale","colorUpdateAngleLodScale","ShaderGeneratorShader","shaderDesc","vsHashGLSL","fsHashGLSL","vsHashWGSL","fsHashWGSL","chunksKey","useInstancing","useMorphPosition","useMorphNormal","useMorphTextureBasedInt","createAttributesDefinition","definitionOptions","srcAttributes","morph_vertex_id","createVertexDefinition","sharedIncludes","createFragmentDefinition","shaderGeneratorShader","ShaderMaterial","_shaderDesc","language","decodeTable","encodeTable","ChunkUtils","decodeFunc","encodeFunc","calculateNormals","triangleCount","p3","p1p2","p1p3","faceNormal","i3","invLen","calculateTangents","v3","w1","w2","w3","sdir","tdir","tan1","tan2","x1","y1","z1","t1","area","ndott","Geometry","primitiveUv1Padding$1","primitiveUv1PaddingScale$1","BoxGeometry","he","ws","widthSegments","ls","lengthSegments","hs","heightSegments","yOffset","minY","maxY","corners","faceAxes","faceNormals","sides","TOP","BOTTOM","vcounter","generateFace","side","uSegments","vSegments","SphereGeometry","latitudeBands","longitudeBands","lat","theta","sinTheta","cosTheta","lon","phi","sinPhi","cosPhi","DomeGeometry","bottomLimit","curvatureRadius","curvatureRadiusSq","SkyGeometry","dome","infinite","geom","SkyMesh","skyLayer","_depthWrite","aPosition","skyboxHighlightMultiplier","skyboxMip","Sky","skyType","skyMeshPosition","skyMeshRotation","skyMeshScale","skyCenter","_center","updateSkyMesh","skyMesh","_getSkyboxTex","resetSkyMesh","centerArray","projectedSkydomeCenterId","identityGraphNode","ImmediateBatch","addLines","destPos","destCol","col","addLinesArrays","onPreRender","visibleList","ImmediateBatches","getBatch","tempPoints","Immediate","createMaterial","materialDepth","_materialDepth","materialNoDepth","_materialNoDepth","batches","batchesMap","allBatches","getShaderDesc","shaderDescs","getTextureShaderDesc","getUnfilterableTextureShaderDesc","getDepthTextureShaderDesc","getQuadMesh","quadMesh","drawMesh","graphNode","getGraphNode","layerMeshInstances","drawWireAlignedBox","mulPoint","drawWireSphere","numSegments","sin0","cos0","sin1","cos1","batchLayer","updatedLayers","onPostRender","textureShader","depthTextureShader","cubeLocalPos","cubeWorldPos","_goldenAngle","circlePoint","circlePointDeterministic","spherePointDeterministic","radicalInverse","getProjectionName","packFloat32ToRGBA8","packSamples","hemisphereSamplePhong","dstVec","specularPower","hemisphereSampleLambert","hemisphereSampleGGX","D_GGX","NoH","linearRoughness","generatePhongSamples","H","generateLambertSamples","sourceTotalPixels","pixelsPerSample","pdf","requiredSamplesGGX","getRequiredSamplesGGX","table","generateGGXSamples","roughness","L","N","requiredSamples","createSamplesTex","packedSamples","SimpleCache","destroyContent","missFunc","samplesCache","deviceCache$1","getCachedTexture","getSamplesFnc","generateLambertSamplesTex","generatePhongSamplesTex","generateGGXSamplesTex","reprojectTexture","seamPixels","innerWidth","innerHeight","funcNames","distribution","processFunc","prefilterSamples","sourceFunc","targetFunc","shaderKey","constantSource","constantParams","uvModParam","samplesTex","calcLevels","supportsFloat16","supportsFloat32","lightingSourcePixelFormat","lightingPixelFormat","EnvLighting","generateSkyboxCubemap","generateLightingSource","generateAtlas","numReflectionSamples","numAmbientSamples","generatePrefilteredAtlas","sources","legacyAmbient","FogParams","Scene","defaultDrawLayer","ambientBakeNumSamples","_ambientBakeNumSamples","ambientBakeSpherePart","_ambientBakeSpherePart","_clusteredLightingEnabled","envAtlas","_envAtlas","_prefilteredCubemaps","_internalEnvAtlas","_resetSkyMesh","prev","sky","_sky","_lightingParams","gsplat","_gsplatParams","_fogParams","lightmapFilterRange","_lightmapFilterRange","lightmapFilterSmoothness","_lightmapFilterSmoothness","prefilteredCubemaps","cubemaps","complete","skybox","_skyboxCubeMap","_skyboxIntensity","_skyboxLuminance","_skyboxMip","_skyboxHighlightMultiplier","skyboxRotation","_skyboxRotation","_skyboxRotationMat4","_skyboxRotationShaderInclude","drawLine","drawLines","drawLineArrays","settings","physics","_gravity","gravity","global_ambient","fog_color","fog_start","fog_end","fog_density","lightmapSizeMultiplier","lightmapMaxResolution","lightmapMode","setting","skyboxMapping","setSkybox","lightmapPixelFormat","lightmapHDR","ambientBake","ambientBakeOcclusionBrightness","ambientBakeOcclusionContrast","lightmapFilterEnabled","forcePassThroughSpecular","dynamicLights","bakedLights","updateShadersTime","EVENT_SETLAYERS","EVENT_SETSKYBOX","Skin","ibp","spriteNormals","spriteIndices","Sprite","frameKeys","_frameKeys","_atlas","_updatingProperties","_meshesDirty","_createMeshes","atlas","_onSetFrames","_onFrameChanged","_onFrameRemoved","pixelsPerUnit","_pixelsPerUnit","renderMode","meshes","_meshes","createMeshFunc","_create9SliceMesh","_createSimpleMesh","frame","frames","texWidth","texHeight","hp","pivot","lu","bv","ru","tv","frameKey","TextureAtlas","_texture","_frames","setFrame","border","removeFrame","AnimationKey","AnimationNode","_keys","Animation","getNode","_nodeDict","addNode","_nodes","InterpolatedKey","getTarget","_targetNode","setTarget","_written","_keyFrames","_quat","_pos","Skeleton","animation","_animation","_time","numNodes","_interpolatedKeys","nodeName","_currKeyIndices","updateGraph","looping","interpKey","_interpolatedKeyDict","foundKey","currKeyIndex","k1","k2","skel1","skel2","key1","key2","dstKey","addInterpolatedKeys","_viewport$1","PostEffect","inputTarget","outputTarget","drawQuad","needsDepthBuffer","quadVertexShader","RenderPassShaderQuad","quadRender","_shader","LitShaderOptions","separateAmbient","nineSlicedMode","clusteredLightingCookiesEnabled","clusteredLightingShadowsEnabled","clusteredLightingShadowType","clusteredLightingAreaLightsEnabled","vertexColors","lightMapEnabled","dirLightMapEnabled","useHeights","useNormals","useClearCoatNormals","useAo","diffuseMapEnabled","pixelSnap","ambientSH","ssao","twoSidedLighting","occludeDirect","occludeSpecular","occludeSpecularFloat","useMsdf","msdfTextAttribute","opacityFadesSpecular","opacityDither","opacityShadowDither","cubeMapProjection","useSpecular","useSpecularityFactor","enableGGXSpecular","fresnelModel","useRefraction","useClearCoat","useSheen","useIridescence","useMetalness","useDynamicRefraction","dispersion","reflectionSource","reflectionEncoding","reflectionCubemapEncoding","ambientSource","ambientEncoding","useCubeMapRotation","lightMapWithoutAmbient","noShadow","lightMaskDynamic","userAttributes","linearDepth","shadowCatcher","LitMaterialOptions","litOptions","LitMaterialOptionsBuilder","renderParams","updateSharedOptions","updateMaterialOptions","updateEnvOptions","updateLightingOptions","occludeSpecularIntensity","hasSpecular","hasSpecularityFactor","ggxSpecular","hasRefraction","hasClearCoat","hasSheen","hasIrridescence","hasMetalness","dynamicRefraction","hasLighting","dirLightMap","hasHeights","hasNormals","hasClearCoatNormals","hasAo","hasDiffuseMap","useFog","useTonemap","useSkybox","hasSkybox","lightsFiltered","lType","builtinAttributes","LitShader","fDefineSet","condition","generateVertexShader","useUv","useUnmodifiedUv","mapTransforms","needsNormal","languageChunks","instance_line1","instance_line2","instance_line3","instance_line4","maxUvSets","numTransforms","transformDone","mapTransform","uv","checkId","varName","vertex_outlineParameters","vertex_shadowParameters","varyingsCode","_setupLightingDefines","hasAreaLights","clusteredShadowInfo","lightShape","prepareForwardPass","lightingUv","clusteredAreaLights","addAmbient","hasTBN","reflections","needsSceneColor","needsScreenSize","needsTransforms","prepareShadowPass","usePerspectiveDepth","generateFragmentShader","frontendDecl","frontendCode","allowWGSL","userChunks","userChunkMap","chunk","chunkName","LitOptionsUtils","generateLightsKey","dummyUvs","ShaderGeneratorLit","glslHash","shaderChunkGLSL","wgslHash","shaderChunkWGSL","loHash","uvOptions","dummy","usedUvs","litShader","tag","usedUvSets","lit","LitMaterial","StandardMaterialOptions","forceUv1","specularTint","metalnessTint","glossTint","emissiveEncoding","lightMapEncoding","packedNormal","normalDetailPackedNormal","clearCoatPackedNormal","glossInvert","sheenGlossInvert","clearCoatGlossInvert","useAO","_matTex2D","buildPropertiesList","ShaderGeneratorStandard","props","optionsContextMin","propsMin","optionsContext","_getUvSourceExpression","transformPropName","uVPropName","transformId","uvChannel","isMainPass","heightMap","_validateMapChunk","propName","_addMapDefines","mapPropName","propNameCaps","identifierPropName","channelPropName","vertexColorChannelPropName","tintPropName","vertexColorPropName","detailModePropName","invertName","tintOption","vertexColorOption","textureOption","textureIdentifier","detailModeOption","chunkCode","textureId","alias","textureDecode","_correctChannel","chan","createVertexShader","mapName","colorChannelName","channelName","transformName","uvName","uvSet","prepareFragmentDefines","lightMap","lightVertexColor","useSpecularColor","aoMap","aoVertexColor","isForwardPass","textureMapping","clearCoatNormalMap","baseName","diffuseDetail","diffuseDetailEncoding","diffuseEncoding","sheenEncoding","specularEncoding","aoDetail","standard","notWhite","notBlack","StandardMaterialOptionsBuilder","updateMinRef","stdMat","_updateSharedOptions","_updateMinOptions","_updateUVOptions","updateRef","_updateEnvOptions","_updateMaterialOptions","_updateLightOptions","minimalOptions","hasVcolor","_mapXForms","uniqueTextureMap","_updateTexOptions","diffuseMap","isOpacity","mname","vname","vcname","cname","tname","uname","iname","allow","mapId","_getMapTransformID","getUniform","isPrepass","specularMap","sphereMap","cubeMap","specular","specularityFactor","clearCoat","useMetalnessSpecularColor","specularVertexColor","specularityFactorTint","specularityFactorMap","isPackedNormalMap","equalish","metalness","diffuseDetailMap","emissiveMap","refractionTint","refraction","refractionIndexTint","refractionIndex","thicknessTint","thickness","sheenMap","aoMapUv","aoUvSet","aoDetailMap","normalDetail","normalDetailMap","diffuseDetailMode","aoDetailMode","clearCoatGloss","iorTint","iridescenceTint","iridescence","msdfMap","refractionMap","usingSceneEnv","lightMapChannel","lightMapUv","lightMapTransform","xform","xforms","_textureParameter","vertexColor","standardMaterialParameterTypes","mappingFormat","_engine","ambient","aoIntensity","diffuse","anisotropyIntensity","anisotropyRotation","shininess","gloss","clearCoatBumpiness","sheen","sheenGloss","emissive","emissiveIntensity","bumpiness","normalDetailMapBumpiness","heightMapFactor","alphaFade","opacity","reflectivity","attenuation","attenuationDistance","cubeMapProjectionBox","iridescenceThicknessTint","iridescenceThicknessMin","iridescenceThicknessMax","iridescenceRefractionIndex","standardMaterialTextureParameters","standardMaterialCubemapParameters","standardMaterialRemovedParameters","aoMapVertexColor","diffuseMapTint","diffuseMapVertexColor","emissiveMapTint","emissiveMapVertexColor","glossMapVertexColor","metalnessMapVertexColor","opacityMapVertexColor","specularAntialias","specularMapTint","specularMapVertexColor","ambientTint","emissiveTint","diffuseTint","sheenTint","conserveEnergy","useGamma","useGammaTonemap","sheenGlossTint","_props","_uniforms","_params","_tempColor$3","StandardMaterial","_uniformCache","_setParameter","_setParameters","_processParameters","paramsName","prevParams","_updateMap","_allocUniform","allocFunc","metalnessMap","updateEnvUniforms","hasLocalEnvOverride","shaderOptBuilder","onUpdateShader","asset","_assetReferences","_unbind","_activeParams","_activeLightingParams","TEXTURE_PARAMETERS","CUBEMAP_PARAMETERS","defineUniform","getUniformFunc","definePropInternal","constructorFunc","setterFunc","getterFunc","defineValueProp","internalName","dirtyShaderFunc","oldValue","defaultValue","defineAggProp","defineProp","_defineTex2D","mapTiling","mapOffset","mapRotation","tiling","cr","sr","uniform0","uniform1","_defineColor","_defineFloat","_defineObject","_defineFlag","_defineMaterialProps","bboxMin","minUniform","bboxMax","maxUniform","primitiveUv1Padding","primitiveUv1PaddingScale","ConeBaseGeometry","baseRadius","peakRadius","capSegments","roundedCaps","bottomToTop","norm","_v","third","fourth","capOffset","CapsuleGeometry","ConeGeometry","CylinderGeometry","PlaneGeometry","TorusGeometry","rc","tubeRadius","ringRadius","sectorAngle","segments","ProgramLibrary","clearCache","generator","_generators","isRegistered","generateShaderDefinition","def","definitionsCache","lcopy","storeNewProgram","_precached","processedCache","userMaterialId","generationKeyString","generationKey","processingKeyString","processingKey","totalKey","processedShader","generatedShaderDef","passName","opt","defaultMat","_getDefaultStdMatOptions","_programsCollection","dumpPrograms","text","display","click","_isClearingCache","removeFromCache","cachedShader","_defaultStdMatOptionMin","_defaultStdMatOption","precompile","standardMaterial","defaultCameraShaderParams","mat4$1","quat$2","aabb2","debugColor","SH_C0$2","SplatIterator","gsplatData","getProp","cg","sigmoid","calcSplatMat","GSplatData","calcSplatAabb","elementName","getElement","addProp","createIter","calcAabb","pred","mx","my","mz","Mx","My","Mz","numSplats","scaleVal","calcAabbExact","iter","getCenters","calcFocalPoint","renderWireframeBounds","worldMat","isCompressed","shBands","numProps","sizes","calcMortonOrder","calcMinMax","encodeMorton3","Part1By2","minX","maxX","minZ","maxZ","sizeX","sizeY","sizeZ","codes","reorder","getStorage","returnStorage","property","reorderData","comments","UploadStream","_deviceLostEvent","glslGsplatCopyToWorkBufferPS","wgslGsplatCopyToWorkBufferPS","_whiteColor","GSplatWorkBufferRenderPass","splats","colorsByLod","splatInfo","activeSplats","renderSplat","intervals","lineStart","intervalTexture","workBufferRenderInfo","getWorkBufferRenderInfo","workBuffer","colorTextureFormat","colorOnly","lodIndex","id$1","WorkBufferRenderInfo","clonedDefines","isColorUint","colorOutputType","GSplatWorkBuffer","colorRenderPass","colorTexture","splatTexture0","splatTexture1","orderTexture","orderBuffer","textureSize","_textureSize","setOrderData","newByteSize","renderColor","tempMap","GSplatResourceBase","instanceIndices","workBufferRenderInfos","useIntervals","configureMaterialDefines","configureMaterial","createMesh","splatInstanceSize","instanceSize","meshPositions","meshIndices","createInstanceIndices","splatCount","numSplatInstances","evalTextureSize","centers","getSHData","numCoeffs","GSplatResource","transformATexture","transformBTexture","sh1to3Texture","sh4to7Texture","sh8to11Texture","sh12to15Texture","updateColorData","SH_C0","updateTransformData","dataA","dataAFloat32","dataB","updateSHData","sh1to3Data","sh4to7Data","sh8to11Data","sh12to15Data","t11","t10","float32","uint32","gsplatSogsColorGLSL","gsplatSogsColorWGSL","resolve$1","CustomRenderPass","executeCallback","invModelMat$1","dir$3","GSplatResolveSH","modelMat","prevDir","updateMode","sh_centroids","meta","centroids","shN_mins","shN","mins","shN_maxs","maxs","SortWorker","myself","require","parentPort","cameraPosition","cameraDirection","forceUpdate","lastCameraPosition","lastCameraDirection","boundMin","boundMax","distances","countBuffer","numBins","binCount","binBase","binDivider","binarySearch","compare_fn","cmp","minDist","maxDist","compareBits","bucketCount","numChunks","binMin","binMax","binTotal","binRange","ii","bin","sortKey","destIndex","cameraDist","findZero","postMessage","msgData","chunksSrc","validX","validY","validZ","GSplatSorter","terminate","transfer","setMapping","messageHandler","newOrder","oldOrder","workerSource","eval","createObjectURL","Blob","glslGsplatSogsReorderPS","wgslGsplatSogsReorderPS","glslGsplatSogsReorderSh","gsplatPackingPS$1","wgslGsplatSogsReorderSH","gsplatPackingPS","glslSogsCentersPS","wgslSogsCentersPS","SH_C0$1","readImageDataAsync","GSplatSogsIterator","means","scales","sh0","means_l_data","means_l","means_u_data","means_u","quats_data","quats","scales_data","sh0_data","sh_labels_data","sh_labels","sh_centroids_data","SQRT2","coeffs","codebook","GSplatSogsData","_destroyGpuResources","packedTexture","packedSh0","packedShN","destroyed","_centers","isSogs","widths","decompress","members","shMembers","rot_1","rot_2","rot_3","rot_0","scale_0","scale_1","scale_2","f_dc_0","f_dc_1","f_dc_2","generateCenters","centersTexture","means_mins","means_maxs","u32","asFloat","packGpuMemory","scalesMins","scalesMaxs","sh0Mins","sh0Maxs","packShMemory","prepareGpuData","cameraPosition$1","cameraDirection$1","GSplatInstance","resolveSH","sorter","setMaterialOrderTexture","dither","updateViewport","cameraMat","invModelMat","setHighQualitySH","vertex_id_attrib","highQualitySH","GSplatSogsResource","FILLMODE_NONE","FILLMODE_FILL_WINDOW","FILLMODE_KEEP_ASPECT","RESOLUTION_AUTO","RESOLUTION_FIXED","currentApplication","getApplication","setApplication","app","_createdLoadingScreen","script","createLoadingScreen","FrameGraph","renderTargetMap","prevPass","firstPass","firstRT","secondPass","secondRT","lastCubeTexture","lastCubeRenderPass","thisTexture","AreaLightCacheEntry","texture0","texture1","deviceCache","AreaLightLuts","postfix","applyTextures","texture2","createPlaceholder","ltcMat1","ltcMat2","buildTexture","convertToHalfFloat","srcData1","srcData2","data1","data2","tex1","tex2","DEFAULT_LOCALE","DEFAULT_LOCALE_FALLBACKS","PLURALS","definePluralFn","locales","fn","getLang","locale","replaceLang","desiredLang","findAvailableLocale","desiredLocale","availableLocales","fallback","lang","mod10","mod100","DEFAULT_PLURAL_FN","getPluralFn","ABSOLUTE_URL","ASSET_ANIMATION","ASSET_AUDIO","ASSET_IMAGE","ASSET_JSON","ASSET_MODEL","ASSET_MATERIAL","ASSET_TEXT","ASSET_TEXTURE","ASSET_TEXTUREATLAS","ASSET_CUBEMAP","ASSET_SHADER","ASSET_CSS","ASSET_HTML","ASSET_SCRIPT","ASSET_CONTAINER","AssetFile","filename","contents","assetIdCounter","VARIANT_SUPPORT","pvr","dxt","etc2","etc1","basis","VARIANT_DEFAULT_PRIORITY","Asset","file","registry","_loader","_app","enableBundles","bundles","listBundlesForAsset","oldFile","_file","newFile","reload","_data","patch","_old","_resources","preload","_preload","loading","load","loadFaces","_loadFaces","getFileUrl","separator","getAbsoluteUrl","relativePath","getLocalizedAssetId","_i18n","addLocalizedAssetId","assetId","removeLocalizedAssetId","unload","urlObject","revokeObjectURL","fetchArrayBuffer","EVENT_LOAD","EVENT_UNLOAD","EVENT_ERROR","EVENT_PROGRESS","EVENT_ADDLOCALIZED","EVENT_REMOVELOCALIZED","TagsCache","addItem","removeItem","tagsRest","missingIndex","AssetRegistry","filters","assets","_assets","_idToAsset","_urlToAsset","_nameToAsset","_onNameChange","_tags","_onTagAdd","_onTagRemove","getByUrl","force","_fireLoad","_opened","assetIds","assetInBundle","_loaded","extra","getHandler","head","fileUrl","loadFromUrl","loadFromUrlAndFilename","loadFromUrlError","startLoad","loadedAsset","_loadTextures","_loadModel","modelAsset","continuation","basename","mappingUrl","_loadMaterials","onMaterialLoaded","materialAsset","onTextureLoaded","texParams","nameOld","findAll","loader","BundleRegistry","_onAssetAdd","_idToBundle","_onBundleLoadStart","_onBundleLoad","_onBundleError","_indexAssetInBundle","_assetToBundles","_indexAssetFileUrls","_unbindAssetEvents","bundle","urls","_getAssetFileUrls","_urlsToBundles","numFiles","_onAssetRemove","otherBundles","_fileRequests","requests","decodedUrl","_findLoadedOrLoadingBundleForUrl","candidate","hasUrl","urlIsLoadedOrLoading","ComponentSystemRegistry","system","Bundle","addFile","Untar","pump","bytesReceived","readFile","reader","headerRead","bytesRead","headerSize","decoder","TextDecoder","decode","fileName","fileSize","fileType","ustarFormat","bytesRemained","paddingSize","fetchPromise","assetsPrefix","getReader","ResourceHandler","_maxRetries","handlerType","BundleHandler","_fetchRetries","tryFetch","fetch","untar","ResourceLoader","addHandler","_handlers","removeHandler","makeKey","_loadNull","_requests","handleLoad","urlObj","_onFailure","openBinary","normalizedUrl","bundlesIgnore","bundlesFilter","fileUrlFromBundle","onLoad","warn","getFromCache","enableRetry","disableRetry","I18nParser","_validate","messages","I18n","idNum","_locale","_lang","_pluralFn","_translations","_findFallbackLocale","getText","translations","getPluralText","pluralFn","addData","parsed","_parser","_availableLangs","removeData","_onAssetLoad","_onAssetChange","_onAssetUnload","ScriptRegistry","addSchema","schema","_scriptSchemas","getSchema","scriptName","__name","_scripts","systems","_components","scriptInstances","scriptInstancesInitialized","component","_scriptsIndex","awaiting","_scriptsData","scriptInstance","preloading","scripts","initializeAttributes","_initialized","_postInitialized","postInitialize","nameOrType","scriptType","cmpStaticOrder","sortStaticOrder","_enableList","tmpPool","getTempArray","releaseTempArray","Entity","addComponent","removeComponent","findComponent","findComponents","findScript","findScripts","entities","getGuid","_guid","setGuid","_entityIndex","enableFirst","_beingEnabled","_onHierarchyStatePostChanged","_getSortedComponents","onPostStateChange","findByGuid","_destroying","duplicatedIdsMap","_cloneRecursively","resolveDuplicatedEntityReferenceProperties","needSort","cloneComponent","oldChild","newChild","_template","EVENT_DESTROY","oldSubtreeRoot","oldEntity","newEntity","componentName","entityProperties","getPropertiesOfType","propertyDescriptor","propertyName","oldEntityReferenceId","entityIsWithinOldSubtree","newEntityReferenceId","scrollview","scrollbar","anim","_new","SceneRegistryItem","_loading","_onLoadedCallbacks","SceneRegistry","_urlIndex","findByUrl","_loadSceneData","sceneItem","storeInCache","loadSceneData","unloadSceneData","_loadSceneHierarchy","onBeforeAddHierarchy","_preloadScripts","loadSceneHierarchy","loadSceneSettings","applySceneSettings","changeScene","loadScene","rigidbody","Ammo","ApplicationStats","lightmapper","batcher","_batcher","fps","updateStart","updateTime","renderStart","renderTime","physicsStart","physicsTime","cullTime","sortTime","skinTime","morphTime","instancingTime","triangles","gsplats","otherPrimitives","shadowMapUpdates","shadowMapTime","depthMapTime","forwardTime","lightClustersTime","_timeToCountFrames","_fpsAccum","shadow","misc","skinned","instanced","removedByInstancing","renderTargetCreationTime","particles","updatesPerFrame","_updatesPerFrame","frameTime","alphaTestPS$1","ambientPS$1","anisotropyPS$1","aoPS$1","aoDiffuseOccPS$1","aoSpecOccPS$1","bakeDirLmEndPS$1","bakeLmEndPS$1","basePS$1","baseNineSlicedPS$1","baseNineSlicedTiledPS$1","bayerPS$1","blurVSMPS$1","clearCoatPS$1","clearCoatGlossPS$1","clearCoatNormalPS$1","clusteredLightUtilsPS$1","clusteredLightCookiesPS$1","clusteredLightShadowsPS$1","clusteredLightPS$1","combinePS$1","cookieBlit2DPS$1","cookieBlitCubePS$1","cookieBlitVS$1","cookiePS","cubeMapProjectPS$1","cubeMapRotatePS$1","debugOutputPS$1","debugProcessFrontendPS$1","decodePS$1","detailModesPS$1","diffusePS$1","emissivePS$1","encodePS$1","endPS$1","envAtlasPS$1","envProcPS$1","falloffInvSquaredPS$1","falloffLinearPS$1","floatAsUintPS$1","fogPS$1","fresnelSchlickPS$1","fullscreenQuadVS$1","gammaPS$1","glossPS$1","quadVS$1","immediateLinePS$1","immediateLineVS$1","iridescenceDiffractionPS$1","iridescencePS$1","iridescenceThicknessPS$1","iorPS$1","lightDeclarationPS$1","lightDiffuseLambertPS$1","lightDirPointPS$1","lightEvaluationPS$1","lightFunctionLightPS$1","lightFunctionShadowPS$1","lightingPS$1","lightmapAddPS$1","lightmapPS$1","lightSpecularAnisoGGXPS$1","lightSpecularBlinnPS$1","lightSheenPS$1","linearizeDepthPS$1","litForwardBackendPS$1","litForwardDeclarationPS$1","litForwardMainPS$1","litForwardPostCodePS$1","litForwardPreCodePS$1","litMainPS$1","litMainVS$1","litOtherMainPS$1","litShaderArgsPS$1","litShaderCorePS$1","litShadowMainPS$1","ltcPS$1","metalnessPS$1","msdfPS$1","metalnessModulatePS$1","morphPS$1","morphVS$1","msdfVS$1","normalVS$1","normalCoreVS$1","normalMapPS$1","opacityPS$1","opacityDitherPS$1","outputPS$1","packHalfPS$1","outputAlphaPS$1","outputTex2DPS$1","sheenPS$1","sheenGlossPS$1","parallaxPS$1","pickPS$1","reflDirPS$1","reflDirAnisoPS$1","reflectionCCPS$1","reflectionCubePS$1","reflectionEnvHQPS$1","reflectionEnvPS$1","reflectionSpherePS$1","reflectionSheenPS$1","refractionCubePS$1","refractionDynamicPS$1","reprojectPS$1","reprojectVS$1","screenDepthPS$1","shadowCascadesPS$1","shadowEVSMPS$1","shadowPCF1PS$1","shadowPCF3PS$1","shadowPCF5PS$1","shadowPCSSPS","shadowSoftPS$1","skinBatchVS$1","skinVS$1","skyboxPS$1","skyboxVS$1","specularPS$1","sphericalPS$1","specularityFactorPS$1","spotPS$1","startNineSlicedPS$1","startNineSlicedTiledPS$1","stdDeclarationPS$1","stdFrontEndPS$1","TBNPS$1","thicknessPS$1","tonemappingPS$1","tonemappingAcesPS$1","tonemappingAces2PS$1","tonemappingFilmicPS$1","tonemappingHejlPS$1","tonemappingLinearPS$1","tonemappingNeutralPS$1","tonemappingNonePS$1","transformVS$1","transformCoreVS$1","transformInstancingVS$1","transmissionPS$1","twoSidedLightingPS$1","uv0VS$1","uv1VS$1","uvTransformVS$1","uvTransformUniformsPS$1","viewDirPS$1","shaderChunksGLSL","alphaTestPS","ambientPS","anisotropyPS","aoPS","aoDiffuseOccPS","aoSpecOccPS","bakeDirLmEndPS","bakeLmEndPS","basePS","baseNineSlicedPS","baseNineSlicedTiledPS","bayerPS","blurVSMPS","clearCoatPS","clearCoatGlossPS","clearCoatNormalPS","clusteredLightCookiesPS","clusteredLightShadowsPS","clusteredLightUtilsPS","clusteredLightPS","combinePS","cookieBlit2DPS","cookieBlitCubePS","cookieBlitVS","cubeMapProjectPS","cubeMapRotatePS","debugOutputPS","debugProcessFrontendPS","detailModesPS","diffusePS","decodePS","emissivePS","encodePS","endPS","envAtlasPS","envProcPS","falloffInvSquaredPS","falloffLinearPS","floatAsUintPS","fogPS","fresnelSchlickPS","frontendCodePS","frontendDeclPS","fullscreenQuadVS","gammaPS","glossPS","quadVS","immediateLinePS","immediateLineVS","iridescenceDiffractionPS","iridescencePS","iridescenceThicknessPS","iorPS","lightDeclarationPS","lightDiffuseLambertPS","lightDirPointPS","lightEvaluationPS","lightFunctionLightPS","lightFunctionShadowPS","lightingPS","lightmapAddPS","lightmapPS","lightSpecularAnisoGGXPS","lightSpecularBlinnPS","lightSheenPS","linearizeDepthPS","litForwardBackendPS","litForwardDeclarationPS","litForwardMainPS","litForwardPostCodePS","litForwardPreCodePS","litMainPS","litMainVS","litOtherMainPS","litShaderArgsPS","litShaderCorePS","litShadowMainPS","litUserDeclarationPS","litUserDeclarationVS","litUserCodePS","litUserCodeVS","litUserMainStartPS","litUserMainStartVS","litUserMainEndPS","litUserMainEndVS","ltcPS","metalnessPS","metalnessModulatePS","morphPS","morphVS","msdfPS","msdfVS","normalVS","normalCoreVS","normalMapPS","opacityPS","opacityDitherPS","outputPS","outputAlphaPS","packHalfPS","outputTex2DPS","sheenPS","sheenGlossPS","parallaxPS","pickPS","reflDirPS","reflDirAnisoPS","reflectionCCPS","reflectionCubePS","reflectionEnvHQPS","reflectionEnvPS","reflectionSpherePS","reflectionSheenPS","refractionCubePS","refractionDynamicPS","reprojectPS","reprojectVS","screenDepthPS","shadowCascadesPS","shadowEVSMPS","shadowPCF1PS","shadowPCF3PS","shadowPCF5PS","shadowSoftPS","skinBatchVS","skinVS","skyboxPS","skyboxVS","specularPS","sphericalPS","specularityFactorPS","spotPS","startNineSlicedPS","startNineSlicedTiledPS","stdDeclarationPS","stdFrontEndPS","TBNPS","thicknessPS","tonemappingPS","tonemappingAcesPS","tonemappingAces2PS","tonemappingFilmicPS","tonemappingHejlPS","tonemappingLinearPS","tonemappingNeutralPS","tonemappingNonePS","transformVS","transformCoreVS","transformInstancingVS","transmissionPS","twoSidedLightingPS","uv0VS","uv1VS","uvTransformVS","uvTransformUniformsPS","viewDirPS","indirectCoreCS","shaderChunksWGSL","AppBase","appOptions","assetPrefix","batchManager","componentSystems","elementInput","resourceHandlers","scriptsOrder","scriptPrefix","soundManager","_initDefaultMaterial","_initProgramLibrary","_soundManager","_registerSceneImmediate","defaultLayerWorld","defaultLayerDepth","defaultLayerSkybox","defaultLayerUi","defaultLayerImmediate","defaultLayerComposition","_firstBake","_firstBatch","attachSelectEvents","_scriptPrefix","resourceHandler","componentSystem","onVisibilityChange","hidden","_hiddenAttr","mozHidden","msHidden","webkitHidden","tick","makeTick","_applications","fillMode","_fillMode","resolutionMode","_resolutionMode","application_properties","scenes","_parseApplicationProperties","_parseScenes","_parseAssets","loadedCount","onAssetLoadOrError","sceneData","maxAssetRetries","useDevicePixelRatio","use_device_pixel_ratio","resolution_mode","fill_mode","setCanvasResolution","setCanvasFillMode","layerOrder","sublayer","batchGroups","grp","i18nAssets","i18n","_loadLibraries","libraries","onLibrariesLoaded","scriptsIndex","bundlesIndex","loadingType","_librariesLoaded","inputUpdate","_inTools","updateCanvasSize","renderComposition","_fillFrameStatsBasic","_fillFrameStats","prims","culled","_depthDrawCalls","_immediateRendered","isHidden","_allowResize","windowWidth","windowHeight","winR","onLibraryLoaded","setAreaLightLuts","_skyboxAsset","onSkyboxRemoved","onSkyboxChanged","bake","_processTimestamp","minPoint","maxPoint","drawMeshInstance","drawTexture","drawDepthTexture","_inFrameUpdate","_destroyRequested","canvasId","scriptHandler","cancelTick","frameRequestId","cancelAnimationFrame","getEntityFromIndex","timeScale","maxDeltaTime","autoRender","renderNextFrame","application","xrFrame","requestAnimationFrame","skipUpdate","renderState","baseLayer","AppOptions","tempSphere","BakeLight","restore","startBake","endBake","lightBounds","_tempPoint$1","BakeLightSimple","numVirtualLights","prepareVirtualLight","directionalSpreadAngle","linearIntensity","_tempPoint","BakeLightAmbient","fullIntensity","lightEntity","affectDynamic","affectLightmapped","BakeMeshNode","bounds","glslBilateralDeNoisePS","glslDilatePS","wgslBilateralDeNoisePS","wgslDilatePS","DENOISE_FILTER_SIZE","lightmapFiltersChunksGLSL","lightmapFiltersChunksWLSL","LightmapFilters","setSourceTexture","textureWidth","textureHeight","constantPixelOffset","prepareDenoise","filterRange","filterSmoothness","bakeHDR","shaderDenoise","sigmas","constantSigmas","constantKernel","bZnorm","evaluateDenoiseUniforms","getDenoise","getDilate","shaderDilate","normpdf","kSize","RenderPassLightmapper","receivers","worldClusters","lightArray","MAX_LIGHTMAP_SIZE","PASS_COLOR","PASS_DIR","tempVec$1","Lightmapper","blackTex","initBake","_initCalled","lightmapFilters","constantBakeDir","srcParams","finishBake","bakeNodes","destroyRT","ambientAOMaterial","createMaterialForPass","createMaterials","passMaterials","collectModels","allNodes","lightmapped","notInstancedMeshInstances","prepareShadowCasters","castShadowsLightmap","calculateLightmapSize","sizeMult","srcArea","_area","areaMult","computeNodeBounds","totalArea","lightmapSize","setLightmapping","startShaders","startFboTime","startCompileTime","bakeInternal","nowTime","totalRenderTime","shadersLinked","fboTime","lightmapCount","allocateTextures","bakeNode","prepareLightsToBake","allLights","bakeLights","sceneLights","bakeLight","restoreLights","setupScene","restoreScene","computeNodesBounds","computeBounds","backupMaterials","restoreMaterials","lightCameraPrepare","lightCameraPrepareAndCull","casterBounds","lightAffectsNode","frustumSize","nodeVisible","setupLightArray","renderShadowMap","shadowMapRendered","postprocessTextures","numDilates2x","dilateShader","denoiseShader","filterLightmap","nodeRT","lightmap","tempRT","tempTex","bilateralFilterEnabled","rcv","shadersUpdatedOn1stPass","isAmbientLight","isDirectional","virtualLightIndex","clusterLights","passMaterial","lastVirtualLightForPass","Component","_buildAccessors","descriptor","configurable","_accessorsBuilt","buildAccessors","onSetEnabled","record","ComponentSystem","ComponentType","componentData","DataType","initializeComponentData","convertValue","matchingProperties","INTERPOLATION_STEP","INTERPOLATION_LINEAR","INTERPOLATION_CUBIC","AnimCache","input","_len","_findKey","_t","_hermite","interpolation","idx0","idx1","hermite","AnimSnapshot","animTrack","_results","_inputs","_curves","outputs","_outputs","_output","AnimClip","track","_track","_snapshot","snapshot","alignCursorToCurrentTime","speed","signChanged","_speed","blendWeight","_blendWeight","blendOrder","_blendOrder","eventCursor","_eventCursor","eventCursorEnd","isReverse","events","nextEvent","nextEventAheadOfTime","nextEventBehindTime","resetEventCursor","moveEventCursor","clipFrameTime","frameEndTime","eventFrame","residual","fireNextEvent","_eventHandler","fireNextEventInFrame","frameStartTime","activeEventsForFrame","initialCursor","progressForTime","deltaTime","_playing","playing","eventHandler","ANIM_INTERRUPTION_NONE","ANIM_INTERRUPTION_PREV","ANIM_INTERRUPTION_NEXT","ANIM_INTERRUPTION_PREV_NEXT","ANIM_INTERRUPTION_NEXT_PREV","ANIM_GREATER_THAN","ANIM_LESS_THAN","ANIM_GREATER_THAN_EQUAL_TO","ANIM_LESS_THAN_EQUAL_TO","ANIM_EQUAL_TO","ANIM_NOT_EQUAL_TO","ANIM_PARAMETER_INTEGER","ANIM_PARAMETER_FLOAT","ANIM_PARAMETER_BOOLEAN","ANIM_PARAMETER_TRIGGER","ANIM_BLEND_1D","ANIM_BLEND_2D_DIRECTIONAL","ANIM_BLEND_2D_CARTESIAN","ANIM_BLEND_DIRECT","ANIM_STATE_START","ANIM_STATE_END","ANIM_STATE_ANY","ANIM_CONTROL_STATES","ANIM_LAYER_OVERWRITE","ANIM_LAYER_ADDITIVE","AnimBlend","blendVec","additive","it","blendQuat","stableSort","lessFunc","AnimTargetValue","_normalizeWeights","_component","normalizeWeights","updateWeights","totalWeight","_layerBlendType","setMask","updateValue","counter","IDENTITY_QUAT_ARR","valueType","baseValue","TYPE_QUAT","q1","aV1","q2","aV2","q3","aV","quatArr","vecArr","setter","unbind","TYPE_VEC3","AnimEvaluator","clips","_clips","addClip","clip","binder","_binder","inputs","paths","resolved","targetPath","blendCounter","animComponent","layerIndex","removeClip","unresolve","removeClips","updateClipTrack","rebind","findClip","assignMask","outputAnimation","usesLayerBlending","animTarget","AnimEvents","_events","AnimTrack","animEvents","_animEvents","_input","_interpolation","EMPTY","AnimBinder","joinPath","pathSegments","character","escape","splitPath","curr","encode","entityPath","propertyPath","AnimTarget","_set","_get","_targetPath","isTransform","_isTransform","isWeight","_isWeight","DefaultAnimBinder","_isPathActive","rootNodeNames","currEntityPath","_isPathInMask","createAnimTarget","valueCount","encodedPath","targetCache","handlers","nodeCounts","activeNodes","checkMaskValue","maskItem","flatten","findMeshInstances","weightName","textureName","textureAsset","AnimationComponent","animations","_animations","onSetAnimations","onAssetChanged","onAssetRemoved","animName","animationsIndex","currAnim","_stopCurrentAnimation","loadAnimationAssets","skeleton","animEvaluator","blendTime","prevAnim","_createAnimationController","blending","blendSpeed","fromSkel","toSkel","getAnimation","setModel","_resetAnimationController","modelComponent","animationNames","hasJson","hasGlb","onAssetReady","onAssetAdd","attribute","restarted","onBeforeRemove","AnimationComponentData","_schema$k","AnimationComponentSystem","clonedAnimations","clonedAnimationsIndex","onUpdate","AnimNode","_point","pointLength","_pointLength","_weight","normalizedWeight","_weightedSpeed","absoluteSpeed","weightedSpeed","_animTrack","AnimBlendTree","calculateWeights","syncAnimations","_syncAnimations","getChild","updateParameterValues","paramsEqual","_parameterValues","updatedParameter","_findParameter","_parameters","getNodeWeightedDuration","speedMultiplier","getNodeCount","createTree","findParameter","_pointCache","AnimBlendTree1D","weightedDurationSum","child2Distance","parameterDistance","AnimBlendTreeCartesian2D","pointDistanceCache","pointKey","weightSum","_p","pi","_pip","minj","pipj","AnimBlendTreeDirectional2D","pointCache","pLength","piLength","pjLength","weightedChildDuration","AnimBlendTreeDirect","AnimState","_createTree","_getNodeFromPath","currNode","_blendTree","addAnimation","pathString","indexOfAnimation","_animationList","_updateHasAnimations","_hasAnimations","hasAnimations","nodeCount","playable","trackClipName","trackClip","_controller","timelineDuration","blendTree","AnimTransition","_from","_to","_priority","conditions","_conditions","exitTime","_exitTime","transitionOffset","_transitionOffset","interruptionSource","_interruptionSource","hasExitTime","AnimController","_animEvaluator","activeState","stateName","_activeStateName","_findState","activeStateName","activeStateAnimations","previousState","_previousStateName","previousStateName","_stateNames","_states","activeStateProgress","_getActiveStateProgressForTime","_timeInState","activeStateDuration","_activeStateDurationDirty","maxDuration","activeClip","_activeStateDuration","activeStateCurrentTime","_timeInStateBefore","transitioning","_isTransitioning","transitionProgress","_currTransitionTime","_totalTransitionTime","states","_findTransitionsFromState","transitions","_findTransitionsFromStateCache","_transitions","transition","_findTransitionsBetweenStates","sourceStateName","destinationStateName","_findTransitionsBetweenStatesCache","_transitionHasConditionsMet","parameterName","predicate","_findTransition","_transitionInterruptionSource","progressBefore","startTransition","updateStateFromTransition","_consumeTrigger","_transitionPreviousStates","interpolatedTime","hasTransitionOffset","timeInState","timeInStateBefore","offsetTime","_transitionToState","newStateName","assignAnimation","_activate","removeNodeAnimations","stateWeight","activeClips","totalClips","consumeTrigger","v2$4","v3$1","v4","q$2","AnimComponentBinder","_packFloat","_packBoolean","_packVec2","_packVec3","_packVec4","_packColor","_packQuat","propertyComponent","_getEntityFromHierarchy","_createAnimTargetForProperty","entityHierarchy","currEntity","_resolvePath","resolveLeaf","steps","_setter","packFunc","setterFuncName","baseValues","objKey","propertyHierarchy","materialPropertyName","materialTexture","animDataType","animDataComponents","layerName","AnimComponentLayer","layerPlaying","dirtifyTargets","_blendType","_blendTime","_blendTimeElapsed","_startingWeight","_targetWeight","blendToWeight","nodePath","getAnimationAsset","animationAssets","AnimStateGraph","layerId","dataLayer","dataLayerTransition","conditionKeys","paramId","AnimComponent","stateGraphAsset","removeStateGraph","_stateGraphAsset","_onStateGraphAssetChangeEvent","_id","_asset","_stateGraph","loadStateGraph","_animationAssets","stateGraph","layerIndices","_layerIndices","prevAnimationAssets","prevMasks","_addLayer","animBinder","findAnimationLayer","_assignParameters","paramKeys","paramKey","containsBlendTree","setupAnimationAssets","stateKey","animationAsset","onAnimationAssetLoaded","targetKey","addAnimationState","getParameterValue","setParameterValue","getFloat","setFloat","getInteger","setInteger","getBoolean","setBoolean","getTrigger","setTrigger","singleFrame","_consumedTriggers","resetTrigger","trigger","oldAnim","AnimComponentData","_schema$j","AnimComponentSystem","complexProperties","masks","maskData","maskKey","decodeURI","onAnimationUpdate","pathArr","clonePath","AudioListenerComponent","setCurrentListener","audiolistener","AudioListenerComponentData","_schema$i","AudioListenerComponentSystem","BUTTON_TRANSITION_MODE_TINT","BUTTON_TRANSITION_MODE_SPRITE_CHANGE","ELEMENTTYPE_GROUP","ELEMENTTYPE_IMAGE","ELEMENTTYPE_TEXT","FITMODE_STRETCH","FITMODE_CONTAIN","FITMODE_COVER","VisualState","HOVER","PRESSED","INACTIVE","STATES_TO_TINT_NAMES","STATES_TO_SPRITE_ASSET_NAMES","STATES_TO_SPRITE_FRAME_NAMES","ButtonComponent","_setValue","imageEntity","_imageEntity","isString","_imageEntityUnsubscribe","_imageEntitySubscribe","hitPadding","transitionMode","hoverTint","pressedTint","inactiveTint","fadeDuration","hoverSpriteAsset","hoverSpriteFrame","pressedSpriteAsset","pressedSpriteFrame","inactiveSpriteAsset","inactiveSpriteFrame","_toggleLifecycleListeners","onOrOff","_onSetActive","_onSetTransitionMode","_onSetTransitionValue","_evtElementAdd","_onElementComponentAdd","_updateVisualState","_cancelTween","_resetToDefaultVisualState","_forceReapplyVisualState","_evtImageEntityElementAdd","_onImageElementGain","_onImageElementLose","_imageEntityElementSubscribe","_evtImageEntityElementRemove","_evtImageEntityElementColor","_onSetColor","_evtImageEntityElementOpacity","_onSetOpacity","_evtImageEntityElementSpriteAsset","_onSetSpriteAsset","_evtImageEntityElementSpriteFrame","_onSetSpriteFrame","_imageEntityElementUnsubscribe","_onElementComponentRemove","_toggleHitElementListeners","_storeDefaultVisualState","isAdding","_hasHitElementListeners","_onMouseEnter","_onMouseLeave","_onMouseDown","_onMouseUp","_onTouchStart","_onTouchEnd","_onTouchLeave","_onTouchCancel","_onSelectStart","_onSelectEnd","_onSelectEnter","_onSelectLeave","_onClick","_storeDefaultColor","_storeDefaultOpacity","_storeDefaultSpriteAsset","spriteAsset","_storeDefaultSpriteFrame","spriteFrame","_defaultTint","_defaultSpriteAsset","_defaultSpriteFrame","_isApplyingTint","_isApplyingSprite","_isHovering","_fireIfActive","_isPressed","_hoveringCounter","oldVisualState","_visualState","newVisualState","_determineVisualState","tintName","tintColor","_applyTint","spriteAssetName","spriteFrameName","_applySprite","_applyTintImmediately","_applyTintWithTween","color3","toColor3","_tweenInfo","lerpColor","_updateTintTween","elapsedTime","elapsedProportion","onRemove","oldButton","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_CLICK","EVENT_TOUCHLEAVE","EVENT_SELECTSTART","EVENT_SELECTEND","EVENT_SELECTENTER","EVENT_SELECTLEAVE","EVENT_HOVERSTART","EVENT_HOVEREND","EVENT_PRESSEDSTART","EVENT_PRESSEDEND","color4","ButtonComponentData","_schema$h","ButtonComponentSystem","_onRemoveComponent","_vec3$1","CollisionComponent","linearOffset","angularOffset","renderAsset","convexHull","checkVertexDuplicates","onSetType","changeType","onSetHalfExtents","recreatePhysicalShapes","onSetOffset","_hasOffset","onSetRadius","onSetHeight","onSetAxis","onSetAsset","onSetRenderAsset","onRenderAssetRemoved","onSetModel","implementations","doRecreatePhysicalShape","onSetRender","getCompoundChildShapeIndex","compound","shapes","getNumChildShapes","childShape","getChildShape","getPointer","_onInsert","_compoundParent","ancestor","collision","_updateCompound","_updateEachDescendantTransform","bodyComponent","getShapePosition","lo","getShapeRotation","enableSimulation","_getNodeTransform","addChildShape","disableSimulation","_removeCompoundChild","EVENT_CONTACT","EVENT_COLLISIONSTART","EVENT_COLLISIONEND","EVENT_TRIGGERENTER","EVENT_TRIGGERLEAVE","CollisionComponentData","BODYTYPE_STATIC","BODYTYPE_DYNAMIC","BODYTYPE_KINEMATIC","BODYFLAG_STATIC_OBJECT","BODYFLAG_KINEMATIC_OBJECT","BODYFLAG_NORESPONSE_OBJECT","BODYSTATE_ACTIVE_TAG","BODYSTATE_ISLAND_SLEEPING","BODYSTATE_WANTS_DEACTIVATION","BODYSTATE_DISABLE_DEACTIVATION","BODYSTATE_DISABLE_SIMULATION","BODYGROUP_NONE","BODYGROUP_DEFAULT","BODYGROUP_DYNAMIC","BODYGROUP_STATIC","BODYGROUP_KINEMATIC","BODYGROUP_ENGINE_1","BODYGROUP_TRIGGER","BODYGROUP_ENGINE_2","BODYGROUP_ENGINE_3","BODYGROUP_USER_1","BODYGROUP_USER_2","BODYGROUP_USER_3","BODYGROUP_USER_4","BODYGROUP_USER_5","BODYGROUP_USER_6","BODYGROUP_USER_7","BODYGROUP_USER_8","BODYMASK_NONE","BODYMASK_ALL","BODYMASK_STATIC","BODYMASK_NOT_STATIC","BODYMASK_NOT_STATIC_KINEMATIC","_ammoVec1$1","_ammoQuat$1","_ammoTransform$1","Trigger","mass","bodyPos","bodyRot","setOrigin","createBody","setRestitution","setFriction","setDamping","setLinearFactor","setAngularFactor","setCollisionFlags","getCollisionFlags","destroyBody","_getEntityTransform","updateTransform","setWorldTransform","_triggers","addBody","forceActivationState","removeBody","btVector3","btQuaternion","btTransform","mat4","quat$1","tempGraphNode","_schema$g","CollisionSystemImpl","beforeInitialize","afterInitialize","destroyShape","createPhysicalShape","firstCompoundChild","_addEachDescendant","updateCompoundChildTransform","beforeRemove","CollisionBoxSystemImpl","ammoHe","btBoxShape","CollisionSphereSystemImpl","btSphereShape","CollisionCapsuleSystemImpl","btCapsuleShapeX","btCapsuleShape","btCapsuleShapeZ","CollisionCylinderSystemImpl","btCylinderShapeX","btCylinderShape","btCylinderShapeZ","CollisionConeSystemImpl","btConeShapeX","btConeShape","btConeShapeZ","CollisionMeshSystemImpl","createAmmoHull","hull","btConvexHullShape","addPoint","recalcLocalAabb","setMargin","createAmmoMesh","checkDupes","triMesh","_triMeshCache","numTriangles","btTriangleMesh","vertexCache","indexedArray","getIndexedMeshArray","at","m_numTriangles","addVertex","findOrAddVertex","addIndex","triMeshShape","btBvhTriangleMeshShape","scaling","_getNodeScaling","setLocalScaling","btCompoundShape","entityTransform","loadAsset","previousPropertyValue","onAssetFullyReady","loadAndHandleAsset","containerAsset","worldScale","previousScale","getLocalScaling","numShapes","CollisionCompoundSystemImpl","_updateEachDescendant","CollisionComponentSystem","_createImplementation","_getImplementation","parentComponent","updateChildTransform","removeChildShape","removeChildShapeByIndex","onTransformChanged","previousType","newType","_calculateNodeRelativeTransform","relative","ammoQuat","getOrigin","ao","newOrigin","_tempColor$2","_vertexFormatDeviceCache","ImageRenderable","setMaterial","_entity","setMesh","forceUpdateAabb","addModelToLayers","setUnmaskDrawOrder","getLastChild","lastChild","getMaskOffset","setDrawOrder","setCull","visibleFn","_isScreenSpace","isVisibleForCamera","setScreenSpace","setLayer","setAabbFunc","_meshDirty","ImageElement","_defaultMesh","_onParentResizeOrPivotChange","_onScreenSpaceChange","_onScreenChange","_onDrawOrderChange","_onResolutionChange","_updateMesh","_updateMaterial","screen","_hasUserMaterial","_materialAsset","_system","defaultImageMaterials","_use9Slicing","nineSliced","nineTiled","getImageElementMaterial","_isScreenCulled","_createMesh","calculatedWidth","calculatedHeight","vertexData","fitMode","_targetAspectRatio","actualRatio","frameData","_spriteFrame","borderWidthScale","borderHeightScale","_innerOffset","_atlasRect","ppu","scaleMulX","scaleMulY","_outerScale","_innerOffsetUniform","_atlasRectUniform","_outerScaleUniform","vertexDataF32","atlasTextureWidth","atlasTextureHeight","_updateSprite","nineSlice","refreshMesh","_beingInitialized","_toggleMask","_onMaterialLoad","_onMaterialAdded","_bindMaterialAsset","_onMaterialChange","_onMaterialRemove","_unbindMaterialAsset","_onTextureAdded","_textureAsset","_bindTextureAsset","_onTextureLoad","_onTextureChange","_onTextureRemove","_unbindTextureAsset","_onSpriteAssetAdded","_spriteAsset","_bindSpriteAsset","_onSpriteAssetLoad","_onSpriteAssetChange","_onSpriteAssetRemove","_unbindSpriteAsset","textureAtlasAsset","_onTextureAtlasLoad","atlasAssetId","_bindSprite","_evtSetMeshes","_onSpriteMeshesChange","_onSpritePpuChange","_onAtlasTextureChange","_unbindSprite","atlasAsset","_setStencil","stencilParams","maskedBy","_maskRef","sp","_updateRenderableEmissive","_colorUniform","_removeMaterialAssetEvents","defaultScreenSpaceImageMaskMaterial","defaultImageMaskMaterial","defaultScreenSpaceImageMaterial","defaultImageMaterial","newAspectRatio","_prev","LocalizedAsset","defaultAsset","_defaultAsset","_unbindDefaultAsset","_bindDefaultAsset","_onSetLocale","localizedAsset","_localizedAsset","_onLocalizedAssetAdd","_unbindLocalizedAsset","_bindLocalizedAsset","autoLoad","_autoLoad","disableLocalization","_disableLocalization","_onDefaultAssetAdd","_onLocaleAdd","_onLocaleRemove","_onDefaultAssetRemove","_onLocalizedAssetLoad","_onLocalizedAssetChange","_onLocalizedAssetRemove","localizedAssetId","FONT_MSDF","FONT_BITMAP","EOF_TOKEN","ERROR_TOKEN","TEXT_TOKEN","OPEN_BRACKET_TOKEN","CLOSE_BRACKET_TOKEN","EQUALS_TOKEN","STRING_TOKEN","IDENTIFIER_TOKEN","WHITESPACE_TOKEN","WHITESPACE_CHARS","IDENTIFIER_REGEX","Scanner","token","_read","_last","_buf","_error","debugPrint","tokenStrings","_eof","_mode","_tag","_cur","_store","_whitespace","_string","_isIdentifierSymbol","_identifier","_symbols","symbols","Parser","_scanner","apply","_parseTag","combineTags","resolveMarkupTags","numSymbols","edges","tagStack","removeTags","addTags","edgeKeys","resolvedTags","edge","prevTag","resolvedTag","evaluateMarkup","parser","stripped_symbols","invalidTag","resolved_tags","Markup","MeshInfo","outlines","shadows","createTextMesh","meshInfo","LINE_BREAK_CHAR","WHITESPACE_CHAR","WORD_BOUNDARY_CHAR","ALPHANUMERIC_CHAR","CJK_CHAR","NO_LINE_BREAK_CJK_CHAR","CONTROL_CHARS","CONTROL_GLYPH_DATA","xadvance","xoffset","yoffset","colorTmp","vec2Tmp","_tempColor$1","TextElement","_setMaterial","_fontAsset","font","_onParentResize","_onPivotChange","_onLocaleSet","_onLocalizationData","_noResize","_font","_updateText","_drawOrder","_i18nKey","fontAsset","_resetLocalizedText","_setText","unicodeConverter","unicodeConverterFunc","getUnicodeConverter","_enableMarkup","_rtlReorder","rtlReorderFunc","getRtlReorder","_rtl","rtl","getColorThicknessHash","getColorOffsetHash","paletteMap","outlinePaletteMap","shadowPaletteMap","_colorPalette","_outlinePalette","_outlineColor","_outlineThickness","_shadowPalette","_shadowColor","_shadowOffset","_symbolColors","_symbolOutlineParams","_symbolShadowParams","outline","outlineHash","offsetX","offsetY","offX","offY","shadowHash","_updateMaterialEmissive","_updateMaterialOutline","_updateMaterialShadow","charactersPerTexture","_calculateCharsPerTexture","removedModel","screenCulled","_meshInfo","_removeMeshInstance","_setTextureParams","_getPxRange","_outlineColorUniform","_outlineThicknessScale","_shadowColorUniform","_shadowOffsetUniform","_shadowOffsetScale","_setMaskedBy","_updateMeshes","_rangeStart","_rangeEnd","_updateRenderRange","msdf","getTextElementMaterial","_isWordBoundary","_isValidNextChar","nextchar","_isNextCJKBoundary","_isNextCJKWholeWord","json","minFont","_minFontSize","_maxFontSize","maxFont","autoFit","_shouldAutoFit","_fontSize","MAGIC","_x","_y","_z","_xMinusTrailingWhitespace","wordStartX","wordStartIndex","lineStartIndex","numWordsThisLine","numCharsThisLine","numBreaksThisLine","splitHorizontalAnchors","anchor","maxLineWidth","autoWidth","_wrapLines","fontMinY","fontMaxY","breakLine","lineBreakIndex","lineBreakX","_lineWidths","sliceStart","sliceEnd","chars","_lineContents","_scaledLineHeight","retryUpdateMeshes","_lineHeight","_fontMinY","_fontMaxY","color_r","color_g","color_b","outline_color_rg","outline_color_ba","outline_thickness","shadow_color_rg","shadow_color_ba","shadow_offset_xy","isLineBreak","_maxLines","advance","quadsize","dataScale","kerning","kernTable","kernLeft","isWhitespace","meshInfoId","candidateLineWidth","_spacing","backtrack","backtrackStart","backtrackEnd","backChar","backCharData","backMeshInfo","fontSize","_shouldAutoFitWidth","_shouldAutoFitHeight","_getUv","colorIdx","outlineIdx","shadowIdx","_autoWidth","autoHeight","_autoHeight","ha","_alignment","va","prevQuad","hoffset","voffset","tmp0","tmp1","vertMax","_aabbDirty","_onFontRender","_onFontLoad","_onFontChange","_onFontRemove","_autoFitWidth","_autoFitHeight","symbolIndex","startChars","endChars","lineHeight","wrapLines","_originalFontSize","previousFontType","charId","newFontSize","rtlReorder","_unicodeConverter","outlineColor","outlineThickness","shadowColor","shadowOffset","minFontSize","maxFontSize","autoFitWidth","autoFitHeight","maxLines","enableMarkup","symbolColors","symbolOutlineParams","symbolShadowParams","rangeStart","rangeEnd","_currentMaterialType","_maskedMaterialSrc","position$2","invParentWtm","vecA$2","vecB$2","matA","matB","matC","matD","ElementComponent","_absLeft","_localAnchor","_margin","_absRight","_absTop","_absBottom","_hasSplitAnchorsX","_anchor","_hasSplitAnchorsY","_calculateLocalAnchors","_calculateSize","_anchorDirty","_batchGroupId","wt","wb","_setHeight","_calculatedHeight","_pivot","_setCalculatedWidth","_calculatedWidth","_setCalculatedHeight","canvasCorners","_canvasCornersDirty","_canvasCorners","screenCorners","_addedModels","wr","wl","_setWidth","margin","_maskedBy","prevX","prevY","_cornersDirty","_worldCornersDirty","_flagChildrenAsDirty","_screenCorners","parentBottomLeft","_screenTransform","textWidth","textHeight","useInput","_useInput","addElement","removeElement","_fitMode","worldCorners","_worldCorners","_screenMatrix","localPos","_dirtyBatch","_patch","_setPosition","_setLocalPosition","_unpatch","_screenToWorld","pvt","resx","resy","_anchorTransform","_sizeDirty","parentWorldTransform","_parentWorldTransform","depthOffset","pivotOffset","_parseUpToScreen","_updateScreen","_prerender","syncMask","_bindScreen","_bindElement","_unbindScreen","_unbindElement","previousScreen","syncDrawOrder","_updateMask","renderableElement","currentMask","_onScreenResize","_onScreenRemove","getOffsetPosition","onLayersChanged","oldComp","newComp","onLayerAdded","onLayerRemoved","_group","_evtLayersChanged","_evtLayerAdded","_evtLayerRemoved","propagateCalculatedWidth","propagateCalculatedHeight","newWidth","newHeight","updateMargins","_offsetReadAt","_maskOffset","mo","clipL","clipR","clipT","clipB","cameraWidth","cameraHeight","hitCorners","ElementComponentData","_schema$f","ElementComponentSystem","_defaultTexture","splitHorAnchors","splitVerAnchors","_marginChange","shouldForceSetAnchor","onAddComponent","onRemoveComponent","textAttibutes","_defaultTextMaterials","opacityMapChannel","emissiveVertexColor","_createBaseImageMaterial","nineSliceTiled","defaultScreenSpaceImageMask9SlicedMaterial","defaultScreenSpaceImageMask9TiledMaterial","defaultScreenSpaceImage9TiledMaterial","defaultScreenSpaceImage9SlicedMaterial","defaultImage9SlicedMaskMaterial","defaultImage9TiledMaskMaterial","defaultImage9SlicedMaterial","defaultImage9TiledMaterial","registerUnicodeConverter","registerRtlReorder","MOTION_FREE","MOTION_LIMITED","MOTION_LOCKED","properties$1","JointComponent","entityA","_destroyConstraint","_entityA","_createConstraint","entityB","_entityB","breakForce","_constraint","_breakForce","setBreakingImpulseThreshold","enableCollision","_enableCollision","angularLimitsX","_angularLimitsX","_updateAngularLimits","angularMotionX","_angularMotionX","angularLimitsY","_angularLimitsY","angularMotionY","_angularMotionY","angularLimitsZ","_angularLimitsZ","angularMotionZ","_angularMotionZ","linearLimitsX","_linearLimitsX","_updateLinearLimits","linearMotionX","_linearMotionX","linearLimitsY","_linearLimitsY","linearMotionY","_linearMotionY","linearLimitsZ","_linearLimitsZ","linearMotionZ","_linearMotionZ","_convertTransform","pcTransform","ammoTransform","ammoVec","constraint","setAngularLowerLimit","setAngularUpperLimit","setLinearLowerLimit","setLinearUpperLimit","bodyA","jointWtm","entityAWtm","invEntityAWtm","frameA","bodyB","entityBWtm","invEntityBWtm","frameB","btGeneric6DofSpringConstraint","enableSpring","setEquilibriumPoint","setStiffness","dynamicsWorld","addConstraint","removeConstraint","initFromData","_onSetEnabled","_onBeforeRemove","_linearSpringX","_linearStiffnessX","_linearDampingX","_linearEquilibriumX","_linearSpringY","_linearStiffnessY","_linearDampingY","_linearEquilibriumY","_linearSpringZ","_linearStiffnessZ","_linearDampingZ","_linearEquilibriumZ","_angularSpringX","_angularStiffnessX","_angularDampingX","_angularEquilibriumX","_angularSpringY","_angularStiffnessY","_angularDampingY","_angularEquilibriumY","_angularSpringZ","_angularEquilibriumZ","_angularDampingZ","_angularStiffnessZ","functionMap","Damping","Equilibrium","Spring","Stiffness","propInternal","JointComponentData","_schema$e","JointComponentSystem","LayoutChildComponent","minWidth","_minWidth","minHeight","_minHeight","maxWidth","_maxWidth","maxHeight","_maxHeight","fitWidthProportion","_fitWidthProportion","fitHeightProportion","_fitHeightProportion","excludeFromLayout","_excludeFromLayout","LayoutChildComponentData","_schema$d","LayoutChildComponentSystem","layoutChild","layoutchild","FITTING_NONE","FITTING_STRETCH","FITTING_SHRINK","FITTING_BOTH","AXIS_MAPPINGS","calculatedSize","minSize","maxSize","fitting","fittingProportion","OPPOSITE_ORIENTATION","PROPERTY_DEFAULTS","FITTING_ACTION","APPLY_STRETCHING","APPLY_SHRINKING","availableSpace","createCalculator","minExtentA","minExtentB","maxExtentA","calculateAll","allElements","layoutOptions","shouldIncludeInLayout","containerSize","padding","resetAnchors","reverseLinesIfRequired","splitLines","calculateSizesOnAxisB","calculateSizesOnAxisA","calculateBasePositions","applyAlignmentAndPadding","applySizesAndPositions","createLayoutInfo","layoutChildComponent","getElementSizeProperties","runningSize","allowOverrun","idealElementSize","reverseAxisA","reverseX","reverseY","reverseAxisB","lineIndex","reverse","sizesAllLines","sizesThisLine","idealRequiredSpace","calculateTotalSpace","fittingAction","determineFittingAction","stretchSizesToFitContainer","shrinkSizesToFitContainer","largestElementsForEachLine","largestSizesForEachLine","largestElement","largestSize","NEGATIVE_INFINITY","elementIndex","sizesThisElement","sizesForThisElement","currentSize","availableSize","elementFittingAction","fittingMode","totalSizes","sumValues","totalSpacing","ascendingMaxSizeOrder","getTraversalOrder","fittingProportions","getNormalizedValues","fittingProportionSums","createSumArray","remainingUndershoot","targetIncrease","calculateAdjustment","targetSize","actualSize","actualIncrease","appliedIncrease","descendingMinSizeOrder","inverseFittingProportions","invertNormalizedValues","inverseFittingProportionSums","remainingOvershoot","targetReduction","actualReduction","appliedReduction","remainingAdjustment","proportion","sumOfRemainingProportions","cursor","positionsAllLines","positionsThisLine","alignmentA","alignmentB","paddingA","paddingB","axisAOffset","axisBOffset","withinLineAxisBOffset","layoutWidth","layoutHeight","xOffset","sizeProperties","getProperty","accumulator","normalizedValues","numItems","invertedValues","numValues","orderBy","descending","assignIndex","itemA","itemB","getIndex","sumArray","CALCULATE_FNS","LayoutCalculator","calculateLayout","calculateFn","isEnabledAndHasEnabledElement","LayoutGroupComponent","_orientation","_scheduleReflow","_reverseX","_reverseY","_padding","widthFitting","_widthFitting","heightFitting","_heightFitting","_wrap","_isSelfOrChild","_listenForReflowEvents","onOff","_onElementOrLayoutComponentAdd","_onElementOrLayoutComponentRemove","_onChildInsert","_onChildRemove","_isPerformingReflow","scheduleReflow","reflow","container","containerWidth","containerHeight","layoutInfo","_layoutCalculator","LayoutGroupComponentData","_schema$c","MAX_ITERATIONS","LayoutGroupComponentSystem","layoutGroup","layoutgroup","_reflowQueue","_onPostUpdate","_processReflowQueue","iterationCount","componentA","componentB","PrimitivesCache","primData","_primitivesCache","getShapePrimitive","ModelComponent","customAabb","_bindModelAsset","_onModelAssetAdded","_unbindModelAsset","_clonedModel","_receiveShadows","_lightmapped","_mapping","_unsetMaterialEvents","receiveShadows","_castShadowsLightmap","_lightmapSizeMultiplier","_onMaterialAssetAdd","assetMapping","_loadAndSetMeshInstanceMaterial","_getMaterialAssetUrl","onRemoveChild","onInsertChild","_setMaterialEvent","_materialEvents","_getAssetByIdOrPath","idOrPath","isPath","isAsset","hide","show","_onMaterialAssetLoad","_onMaterialAssetUnload","_onMaterialAssetRemove","_onMaterialAssetChange","_onModelAssetLoad","_onModelAssetUnload","_onModelAssetChange","_onModelAssetRemove","ModelComponentData","_schema$b","ModelComponentSystem","aabbCenter","aabbHalfExtents","meshInstancesClone","SIMPLE_PROPERTIES","COMPLEX_PROPERTIES","GRAPH_PROPERTIES","ASSET_PROPERTIES","depthLayer","ParticleSystemComponent","autoPlay","colorMapAsset","normalMapAsset","meshAsset","addMeshInstanceToLayers","removeMeshInstanceFromLayers","onSetLayers","_bindColorMapAsset","_onColorMapAssetLoad","_onColorMapAssetUnload","_onColorMapAssetRemove","_onColorMapAssetChange","_unbindColorMapAsset","onSetColorMapAsset","_bindNormalMapAsset","_onNormalMapAssetLoad","_onNormalMapAssetUnload","_onNormalMapAssetRemove","_onNormalMapAssetChange","_unbindNormalMapAsset","onSetNormalMapAsset","_bindMeshAsset","_onMeshAssetLoad","_onMeshAssetUnload","_onMeshAssetRemove","_onMeshAssetChange","_unbindMeshAsset","_onMeshChanged","onSetMeshAsset","onSetMesh","_unbindRenderAsset","_bindRenderAsset","_onRenderChanged","_onRenderAssetLoad","_onRenderAssetUnload","_onRenderAssetRemove","_onRenderSetMeshes","onSetLoop","onSetBlendType","_requestDepth","_requestedDepth","_releaseDepth","onSetDepthSoftening","onSetSimpleProperty","onSetComplexProperty","onSetGraphProperty","unpause","setInTools","ParticleSystemComponentData","particlePS$1","particleVS$1","particleAnimFrameClampVS$1","particleAnimFrameLoopVS$1","particleAnimTexVS$1","particleInputFloatPS$1","particleInputRgba8PS$1","particleOutputFloatPS$1","particleOutputRgba8PS$1","particleUpdaterAABBPS$1","particleUpdaterEndPS$1","particleUpdaterInitPS$1","particleUpdaterNoRespawnPS$1","particleUpdaterOnStopPS$1","particleUpdaterRespawnPS$1","particleUpdaterSpherePS$1","particleUpdaterStartPS$1","particle_billboardVS$1","particle_blendAddPS$1","particle_blendMultiplyPS$1","particle_blendNormalPS$1","particle_cpuVS$1","particle_cpu_endVS$1","particle_customFaceVS$1","particle_endPS$1","particle_endVS$1","particle_halflambertPS$1","particle_initVS$1","particle_lambertPS$1","particle_lightingPS$1","particle_localShiftVS$1","particle_meshVS$1","particle_normalVS$1","particle_normalMapPS$1","particle_pointAlongVS$1","particle_simulationPS$1","particle_shaderPS$1","particle_shaderVS$1","particle_softPS$1","particle_softVS$1","particle_stretchVS$1","particle_TBNVS$1","particle_wrapVS$1","particleChunksGLSL","particlePS","particleVS","particleAnimFrameClampVS","particleAnimFrameLoopVS","particleAnimTexVS","particleInputFloatPS","particleInputRgba8PS","particleOutputFloatPS","particleOutputRgba8PS","particleUpdaterAABBPS","particleUpdaterEndPS","particleUpdaterInitPS","particleUpdaterNoRespawnPS","particleUpdaterOnStopPS","particleUpdaterRespawnPS","particleUpdaterSpherePS","particleUpdaterStartPS","particle_billboardVS","particle_blendAddPS","particle_blendMultiplyPS","particle_blendNormalPS","particle_cpuVS","particle_cpu_endVS","particle_customFaceVS","particle_endPS","particle_endVS","particle_halflambertPS","particle_initVS","particle_lambertPS","particle_lightingPS","particle_localShiftVS","particle_meshVS","particle_normalVS","particle_normalMapPS","particle_pointAlongVS","particle_simulationPS","particle_shaderPS","particle_shaderVS","particle_softPS","particle_softVS","particle_stretchVS","particle_TBNVS","particle_wrapVS","particleChunksWGSL","_schema$a","ParticleSystemComponentSystem","types","propertyTypes","particlesystem","sourceProp","numSteps","SkinInstanceCachedObject","SkinInstanceCache","createCachedSkinInstance","skinInst","getCachedSkinInstance","addCachedSkinInstance","cachedObjArray","_skinInstanceCache","cachedObj","removeCachedSkinInstance","cachedObjIndex","AssetReference","_registry","_bind","_url","_evtLoadById","_onLoad","_evtAddById","_onAdd","_evtRemoveById","_onRemove","_evtUnloadById","_onUnload","_evtLoadByUrl","_evtAddByUrl","_evtRemoveByUrl","_scope","RenderComponent","_meshInstances","destroyMeshInstances","_materialReferences","materialAssets","_onMaterialUnload","_assetReference","_onRenderAssetAdded","assignAsset","_clearSkinInstances","_cloneSkinInstances","_onSetMeshes","_cloneMeshes","_updateMainMaterial","oldRender","RenderComponentData","_schema$9","_properties$1","RenderComponentSystem","srcMeshInstances","ObjectPool","_resize","_pool","_constructor","freeAll","_ammoTransform","_ammoVec1","_ammoVec2","_ammoQuat","_quat1","_quat2","_vec3","RigidBodyComponent","onAppDestroy","angularDamping","damping","_angularDamping","_body","_linearDamping","angularFactor","_angularFactor","angularVelocity","setAngularVelocity","_angularVelocity","getAngularVelocity","_simulationEnabled","friction","_friction","linearDamping","linearFactor","_linearFactor","linearVelocity","setLinearVelocity","_linearVelocity","getLinearVelocity","_mass","getCollisionShape","calculateLocalInertia","setMassProps","updateInertiaTensor","restitution","_restitution","rollingFriction","_rollingFriction","setRollingFriction","setActivationState","isActive","_dynamic","syncEntityToBody","_kinematic","_compounds","applyForce","applyTorque","applyImpulse","applyTorqueImpulse","isStaticOrKinematic","isKinematic","motionState","getMotionState","_updateDynamic","invertedAo","entityRot","_updateKinematic","teleport","RigidBodyComponentData","ammoRayStart","ammoRayEnd","RaycastResult","hitFraction","SingleContactResult","contactPoint","impulse","localPointA","localPoint","localPointB","localPointOther","pointA","pointB","pointOther","ContactPoint","ContactResult","contacts","_schema$8","RigidBodyComponentSystem","collisionConfiguration","btDefaultCollisionConfiguration","dispatcher","btCollisionDispatcher","overlappingPairCache","btDbvtBroadphase","solver","btSequentialImpulseConstraintSolver","btDiscreteDynamicsWorld","setInternalTickCallback","checkForCollisionsPointer","addFunction","_checkForCollisions","contactPointPool","contactResultPool","singleContactResultPool","addRigidBody","removeRigidBody","localInertia","btDefaultMotionState","bodyInfo","btRigidBodyConstructionInfo","btRigidBody","raycastFirst","filterTags","filterCallback","raycastAll","rayCallback","ClosestRayResultCallback","filterCollisionGroup","set_m_collisionFilterGroup","filterCollisionMask","set_m_collisionFilterMask","rayTest","hasHit","collisionObj","get_m_collisionObject","castObject","get_m_hitPointWorld","get_m_hitNormalWorld","get_m_closestHitFraction","AllHitsRayResultCallback","collisionObjs","get_m_collisionObjects","hitFractions","get_m_hitFractions","numHits","_storeCollision","isNewCollision","collisions","others","frameCollisions","_createContactPointFromAmmo","get_m_localPointA","get_m_localPointB","positionWorldOnA","getPositionWorldOnA","positionWorldOnB","getPositionWorldOnB","normalWorldOnB","get_m_normalWorldOnB","contact","getAppliedImpulse","_createReverseContactPointFromAmmo","_createSingleContactResult","_createContactResult","_cleanOldCollisions","frameCollision","entityCollision","entityRigidbody","_hasContactEvent","world","timeStep","wrapPointer","btDynamicsWorld","getDispatcher","numManifolds","getNumManifolds","manifold","getManifoldByIndexInternal","body0","getBody0","body1","getBody1","wb0","wb1","e0","flags0","flags1","numContacts","getNumContacts","forwardContacts","reverseContacts","newCollision","e0Events","e1Events","e0BodyEvents","e1BodyEvents","globalEvents","btContactPoint","getContactPoint","reverseContactPoint","forwardResult","reverseResult","_gravityFloat32","getGravity","setGravity","triggers","compounds","kinematic","stepSimulation","SCALEMODE_NONE","SCALEMODE_BLEND","_transform","ScreenComponent","queueDrawOrderSync","_processDrawOrderSync","_recurseDrawOrderSync","prevDrawOrder","_calcProjectionMatrix","_resolution","_updateScale","_calcScale","referenceResolution","_scaleBlend","_onResize","_referenceResolution","_scaleMode","scaleMode","scaleBlend","ScreenComponentData","_schema$7","ScreenComponentSystem","_onUpdate","windowResolution","processDrawOrderSyncQueue","_drawOrderSyncQueue","_inputScreenPosition","_inputWorldPosition","_ray","_plane","_normal","_entityRotation","OPPOSITE_AXIS","ElementDragHelper","_onMouseDownOrTouchStart","_toggleDragListeners","isOn","_hasDragListeners","_onMove","_onMouseUpOrTouchEnd","_isDragging","_dragCamera","_calculateDragScale","currentMousePosition","_screenToLocal","_dragStartMousePosition","_dragStartHandlePosition","inputSource","getDirection","_determineInputPosition","_chooseRayOriginAndDirection","_dragScale","isWithin2DScreen","screenScale","dragScale","_deltaMousePosition","deltaMousePosition","_deltaHandlePosition","deltaHandlePosition","_axis","currentPosition","constrainedAxis","isDragging","EVENT_DRAGSTART","EVENT_DRAGEND","EVENT_DRAGMOVE","SCROLL_MODE_CLAMP","SCROLL_MODE_BOUNCE","SCROLL_MODE_INFINITE","SCROLLBAR_VISIBILITY_SHOW_ALWAYS","SCROLLBAR_VISIBILITY_SHOW_WHEN_REQUIRED","_tempScrollValue","ScrollViewComponent","horizontal","vertical","scrollMode","bounceAmount","dragThreshold","useMouseWheel","mouseWheelSensitivity","horizontalScrollbarVisibility","verticalScrollbarVisibility","viewportEntity","_viewportEntity","_viewportEntityUnsubscribe","_viewportEntitySubscribe","contentEntity","_contentEntity","_contentEntityUnsubscribe","_contentEntitySubscribe","horizontalScrollbarEntity","_horizontalScrollbarEntity","_horizontalScrollbarEntityUnsubscribe","_scrollbarEntities","_horizontalScrollbarEntitySubscribe","verticalScrollbarEntity","_verticalScrollbarEntity","_verticalScrollbarEntityUnsubscribe","_verticalScrollbarEntitySubscribe","scroll","_onSetScroll","_scroll","_onSetHorizontalScrollingEnabled","_onSetVerticalScrollingEnabled","_toggleElementListeners","_hasElementListeners","_syncAll","_onMouseWheel","_evtElementRemove","_evtViewportEntityElementAdd","_onViewportElementGain","_onViewportElementLose","_viewportEntityElementSubscribe","_evtViewportElementRemove","_evtViewportResize","_viewportEntityElementUnsubscribe","_evtContentEntityElementAdd","_onContentElementGain","_onContentElementLose","_contentEntityElementSubscribe","_evtContentElementRemove","_evtContentResize","_contentEntityElementUnsubscribe","_destroyDragHelper","_contentDragHelper","_onContentDragStart","_onContentDragEnd","_onContentDragMove","_prevContentSizes","_dragStartPosition","_prevContentDragPosition","_enableContentInput","_wasDragged","_setScrollFromContentPosition","_setVelocityFromContentPositionDelta","_disabledContentInput","_disableContentInput","_evtHorizontalScrollbarAdd","_onHorizontalScrollbarGain","_evtVerticalScrollbarAdd","_onVerticalScrollbarGain","_onHorizontalScrollbarLose","_onVerticalScrollbarLose","_onSetHorizontalScrollbarValue","scrollValueX","_scrollbarUpdateFlags","_onSetVerticalScrollbarValue","scrollValueY","_evtHorizontalScrollbarRemove","_evtHorizontalScrollbarValue","_syncScrollbarEnabledState","_syncScrollbarPosition","_evtVerticalScrollbarRemove","_evtVerticalScrollbarValue","resetVelocity","xChanged","_updateAxis","yChanged","scrollValue","hasChanged","_determineNewScrollValue","_syncContentPosition","_getScrollingEnabled","_getMaxScrollValue","_setVelocityFromOvershoot","_getAxis","_getSign","prevContentSize","currContentSize","_getContentSize","prevMaxOffset","_getMaxOffset","currMaxOffset","contentPosition","scrollbarEntity","handleSize","_getScrollbarHandleSize","isScrollingEnabled","requestedVisibility","_getScrollbarVisibility","_contentIsLargerThanViewport","_getViewportSize","_contentPositionToScrollValue","maxOffsetH","maxOffsetV","contentSize","viewportSize","overshoot","_toOvershoot","_getSize","_getCalculatedDimension","_updateVelocity","_hasOvershoot","maxScrollValue","overshootValue","overshootPixels","_applyScrollValueTension","log10","_setScrollbarComponentsEnabled","_setContentDraggingEnabled","wheelEvent","normalizedDeltaX","deltaX","normalizedDeltaY","scrollX","scrollY","_disabledContentInputEntities","_disableInput","oldScrollView","EVENT_SETSCROLL","DEFAULT_DRAG_THRESHOLD$1","ScrollViewComponentData","_schema$6","DEFAULT_DRAG_THRESHOLD","ScrollViewComponentSystem","ScrollbarComponent","handleEntity","_handleEntity","_handleEntityUnsubscribe","_handleEntitySubscribe","_onSetValue","_onSetHandleSize","_onSetOrientation","_evtHandleEntityElementAdd","_onHandleElementGain","_onHandleElementLose","_handleEntityElementSubscribe","handles","_evtHandleEntityChanges","_onSetHandleAlignment","_handleEntityElementUnsubscribe","_handleDragHelper","_onHandleDrag","_updateHandlePositionAndSize","_handlePositionToScrollValue","_getOppositeDimension","handleElement","_getHandlePosition","_getDimension","_getHandleLength","handlePosition","_getUsableTrackLength","_scrollValueToHandlePosition","_getTrackLength","_setHandleDraggingEnabled","oldScrollbar","EVENT_SETVALUE","ScrollbarComponentData","_schema$5","ScrollbarComponentSystem","_onAddComponent","instanceOptions","SoundSlot","overlap","isLoaded","_hasAsset","_createInstance","playWhenLoaded","resumed","stopped","_onAssetRemoved","_overlap","_onInstancePlayHandler","_onInstancePauseHandler","_onInstanceResumeHandler","_onInstanceStopHandler","_onInstanceEndHandler","positional","_onInstancePlay","_onInstancePause","_onInstanceResume","_onInstanceStop","_onInstanceEnd","updatePosition","oldAsset","_autoPlay","assetDuration","SoundComponent","_updateSoundInstances","isFactor","_slots","_positional","oldLength","playingBeforeDisable","_playingBeforeDisable","addSlot","removeSlot","_getSlotProperty","SoundComponentData","_schema$4","SoundComponentSystem","srcComponent","srcSlots","srcSlot","cloneData","SPRITETYPE_SIMPLE","SPRITETYPE_ANIMATED","SpriteAnimationClip","MIN_VALUE","_setFrame","_setTime","_frame","_paused","_onSpritePpuChanged","currentClip","_hideModel","_showModel","_showFrame","_destroy","EVENT_LOOP","PARAM_EMISSIVE_MAP","PARAM_OPACITY_MAP","PARAM_EMISSIVE","PARAM_OPACITY","PARAM_INNER_OFFSET","PARAM_OUTER_SCALE","PARAM_ATLAS_RECT","SpriteComponent","_currentClip","_defaultClip","_autoPlayClip","_tryAutoPlay","flipX","_flipX","_updateTransform","autoPlayClip","_addedModel","_onLayersChanged","_onLayerAdded","_onLayerRemoved","onDestroy","default9SlicedMaterialSlicedMode","default9SlicedMaterialTiledMode","posX","posY","SpriteComponentData","_schema$3","SpriteComponentSystem","_defaultMaterial","_default9SlicedMaterialSlicedMode","_default9SlicedMaterialTiledMode","ZoneComponent","_size","_checkState","_oldState","EVENT_ENABLE","EVENT_DISABLE","EVENT_STATE","ZoneComponentData","_schema$2","ZoneComponentSystem","zone","PostEffectEntry","effect","PostEffectQueue","_allocateColorBuffer","destinationRenderTarget","_createOffscreenTarget","useDepth","hdr","outputRt","effects","_resizeOffscreenTarget","_destroyOffscreenTarget","addEffect","isFirstEffect","newEntry","_sourceTarget","_newPostEffect","_requestDepthMap","removeEffect","_releaseDepthMap","_requestDepthMaps","_releaseDepthMaps","requestSceneDepthMap","_onCanvasResized","destTarget","resizeRenderTargets","desiredWidth","desiredHeight","onCameraRectChanged","depthTarget","CameraComponent","setShaderPass","_camera","getShaderPass","passes","dirtyLayerCompositionCameras","_disablePostEffectsLayer","oldLayers","postEffects","_postEffects","_sceneColorMapRequested","requestSceneColorMap","_renderSceneColorMap","_sceneDepthMapRequested","_renderSceneDepthMap","_enableDepthLayer","hasDepthLayer","layerComp","screenx","screeny","cameraz","onAppPrerender","addCameraToLayers","removeCameraFromLayers","calculateAspectRatio","startXr","spaceType","endXr","CameraComponentData","_schema$1","CameraComponentSystem","LightComponentData","cookieAsset","cookieAngle","cookieScale","LightComponent","refreshProperties","_cookieAssetId","onCookieAssetRemove","onCookieAssetAdd","_cookieAssetAdd","scx","scy","setFunc","skipEqualsCheck","addLightToLayers","removeLightFromLayers","onCookieAssetSet","forceLoad","_cookieAsset","onCookieAssetLoad","LightComponentSystem","vecLookup","rawToValue","field","vecType","CurveType","attributeToValue","assignAttributesToScript","attributeSchemaMap","attributeName","attributeSchema","dataToAssign","ScriptAttributes","reservedNames","__attributes","evtName","oldCopy","SCRIPT_INITIALIZE","SCRIPT_POST_INITIALIZE","SCRIPT_UPDATE","SCRIPT_POST_UPDATE","SCRIPT_SWAP","Script","_enabledOld","_scriptMethod","initScript","__destroyed","__scriptType","__executionOrder","EVENT_ATTR","__getScriptName","getScriptName","funcNameRegex","constructorFn","ScriptType","__attributesRaw","initScriptType","__initializeAttributes","methods","toLowerCamelCase$1","ScriptComponent","wasLooping","_beginLooping","_endLooping","_isLoopingThroughScripts","wasLoopingBefore","_removeDestroyedScripts","_addComponentToEnabled","_removeComponentFromEnabled","_destroyedScripts","_removeScriptInstance","_resetExecutionOrder","_onInitializeAttributes","_attributeDataMap","_onInitialize","_onPostInitialize","_updateList","_postUpdateList","_insertScriptInstance","scriptsLength","postUpdate","_resolveEntityScriptAttribute","useGuid","newAttributes","newGuidArray","scriptData","inferredScriptName","lowerInferredScriptName","onSwap","scriptInstanceOld","oldScriptComponent","newScriptComponent","newAttributesRaw","oldAttributes","newJsonValue","move","indOld","_executionOrder","EVENT_CREATE","EVENT_MOVE","ScriptComponentData","METHOD_INITIALIZE_ATTRIBUTES","METHOD_INITIALIZE","METHOD_POST_INITIALIZE","METHOD_UPDATE","METHOD_POST_UPDATE","executionOrderCounter","ScriptComponentSystem","MAX_SAFE_INTEGER","_enabledComponents","_callComponentMethod","gsplatIntervalTextureGLSL","gsplatIntervalTextureWGSL","GSplatIntervalTexture","intervalsDataTexture","getShader","totalIntervalSplats","numIntervals","dataTextureSize","intervalsData","runningSum","intervalSize","vecs","GSplatInfo","setLines","lineCount","updateIntervals","totalCount","currentStart","currentEnd","worldMatrix","worldMatrixChanged","previousWorldTransform","resetColorAccumulators","randomFactor","colorAccumulatedRotation","colorAccumulatedTranslation","hasSphericalHarmonics","UnifiedSortWorker","centersMap","centersData","_radialSort","weightTiers","weightByDistance","setupCameraRelativeBins","cameraBin","totalBudget","bitsPerBin","distFromCamera","accumulated","excess","evaluateSortKeysCommon","sortParams","processSplatFn","lineStarts","invBinRange","paramIdx","targetIndex","intervalsArray","intervalStart","intervalEnd","evaluateSortKeysLinear","transformedDirection","sdx","sdy","sdz","srcIndex","evaluateSortKeysRadial","transformedPosition","distSq","invertedDist","countingSort","computeEffectiveDistanceRangeLinear","pxMin","pyMin","pzMin","pxMax","pyMax","pzMax","dMin","dMax","eMin","eMax","localMin","localMax","computeEffectiveDistanceRangeRadial","totalUsedPixels","cameraOffsetFromRangeStart","cameraBinFloat","transferList","command","_neededIds","GSplatUnifiedSorter","onSorted","orderData","jobsInFlight","pendingSorted","releaseOrderData","applyPendingSorted","bufferLength","availableOrderData","setCenters","centersSet","centersBuffer","updateCentersForSplats","splat","setSortParameters","payload","hasNewVersion","newLength","setSortParams","GSplatRenderer","updateOverdrawMode","overdrawEnabled","wasOverdrawEnabled","originalBlendType","setMaxNumSplats","roundedNumSplats","instanceIndicesCount","createMeshInstance","vis","cameraRect","viewportParams","GSplatPlacement","lodDistances","isOctree","octree","lodLevels","_lodDistances","_invWorldMat","_localCameraPos","_localCameraFwd","_dirToNode","_tempCompletedUrls","GSplatOctreeInstance","pendingLoadCount","prefetchPending","environmentUrl","environmentPlacement","pendingDecrements","filePlacements","activePlacements","decEnvironmentRefCount","assetLoader","getFileDecrements","toRelease","calculateNodeLod","localCameraPosition","localCameraForward","maxLod","dotOverDistance","lod","selectDesiredLodIndex","optimalLodIndex","allowedMaxCoarseLod","fi","lods","fileIndex","getFileResource","prefetchNextLod","desiredLodIndex","ensureFileResource","targetLod","updateLod","worldCameraPosition","octreeWorldTransform","worldCameraForward","rangeMin","rangeMax","currentLodIndex","nodeLods","currentFileIndex","desiredFileIndex","willBeVisible","pendingEntry","newFileIndex","prevPendingPlacement","decrementFileRef","oldFileIndex","prevPendingFi","pendingVisibleAdds","incrementFileRef","newPlacement","pendingEntry2","removeScheduled","removedCandidates","addFilePlacement","dirtyModifiedPlacements","testMoved","threshold","previousPosition","updateMoved","newLodIndex","li","needsLodUpdate","pollPrefetchCompletions","ensureEnvironmentResource","envResource","environmentResource","debugRender","consumeNeedsLodUpdate","files","incEnvironmentRefCount","tmpMin","tmpMax","GSplatOctreeNode","boundData","_toDelete","GSplatOctree","_traceLodCounts","_extractLeafNodes","leafNodes","bound","fileResources","fileRefCounts","cooldowns","cooldownTicks","unloadResource","fullUrl","updateCooldownTick","remaining","getResource","environmentRefCount","unloadEnvironmentResource","assetFileUrl","baseDir","filenames","lodLevel","tree","nodeData","lodData","GSplatOctreeResource","GSplatWorldState","estimateTextureSize","fits","rows","low","high","bestSize","mid","assignLines","numLines","sortParametersSet","sortedBefore","pendingReleases","translation","tempNonOctreePlacements","tempOctreePlacements","_updatedSplats","_splatsNeedingColorUpdate","_cameraDeltas","rotationDelta","translationDelta","tempOctreesTicked","_lodColorsRaw","_randomColorRaw","GSplatManager","createSorter","reconcile","placements","octreeInstances","director","hasNewOctreeInstances","inst","layerPlacementsDirty","octreeInstancesToDestroy","layerPlacements","updateWorldState","worldChanged","worldStates","lastWorldStateVersion","newState","sortNeeded","sortedVersion","oldState","worldState","getDebugColors","updateColorCameraTracking","testCameraMovedForLod","distanceThreshold","currentCameraPos","cameraMoved","lastLodCameraPos","cameraRotated","lodUpdateAngleDeg","lastLodCameraFwd","currentCameraFwd","rotThreshold","testCameraMovedForSort","lastSortCameraPos","lastSortCameraFwd","lastColorUpdateCameraPos","lastColorUpdateCameraFwd","calculateColorCameraDeltas","fireFrameReadyEvent","loadingCount","fullUpdate","framesTillFullUpdate","hasNewInstances","anyInstanceNeedsLodUpdate","anyOctreeMoved","cameraMovedOrRotatedForLod","instNeeds","moved","lastState","prepareSortParameters","sortedState","distThreshold","angleThreshold","sorterRequest","GSplatLayerData","gsplatManager","GSplatCameraData","layersMap","layerData","removeLayerData","getLayerData","GSplatDirector","camerasMap","cameraData","getCameraData","gsplatCount","camerasComponents","GSplatComponent","_instance","_placement","destroyInstance","unified","_materialTmp","_highQualitySH","_unified","_onGSplatAssetAdded","_onGSplatAssetRemove","_onGSplatAssetLoad","_onGSplatAssetUnload","GSplatComponentData","GSplatAssetLoaderBase","GSplatAssetLoader","_currentlyLoading","_loadQueue","maxConcurrentLoads","_startLoading","_onAssetLoadSuccess","_onAssetLoadError","_retryCount","_processQueue","retryCount","queueIndex","gsplatCenterVS$1","gsplatColorVS$1","gsplatCommonVS$1","gsplatCompressedDataVS$1","gsplatCompressedSHVS$1","gsplatCustomizeVS$1","gsplatEvalSHVS$1","gsplatHelpersVS$1","gsplatQuatToMat3VS$1","gsplatSogsColorVS$1","gsplatSogsDataVS$1","gsplatSogsSHVS$1","gsplatSourceFormatVS$1","gsplatStructsVS$1","gsplatCornerVS$1","gsplatDataVS$1","gsplatOutputVS$1","gsplatPS$1","gsplatSHVS$1","gsplatSourceVS$1","gsplatVS$1","gsplatWorkBufferVS$1","gsplatChunksGLSL","gsplatCenterVS","gsplatCornerVS","gsplatColorVS","gsplatCommonVS","gsplatCompressedDataVS","gsplatCompressedSHVS","gsplatCustomizeVS","gsplatEvalSHVS","gsplatHelpersVS","gsplatQuatToMat3VS","gsplatSogsColorVS","gsplatSogsDataVS","gsplatSogsSHVS","gsplatSourceFormatVS","gsplatStructsVS","gsplatDataVS","gsplatOutputVS","gsplatPS","gsplatSHVS","gsplatSourceVS","gsplatVS","gsplatWorkBufferVS","gsplatChunksWGSL","_schema","_properties","GSplatComponentSystem","gSplatComponent","srcMaterial","getGSplatMaterial","gsplatAssetLoader","EVENT_MATERIALCREATED","EVENT_FRAMEREADY","Render","decRefMeshes","incRefMeshes","EVENT_SETMESHES","onContainerAssetLoaded","containerResource","renders","renderIndex","onContainerAssetAdded","onContainerAssetRemoved","RenderHandler","AnimCurve","_paths","AnimData","DracoWorker","jsUrl","draco","POSITION_ATTRIBUTE","NORMAL_ATTRIBUTE","typedArray","DT_INT8","DT_INT16","DT_INT32","DT_UINT8","DT_UINT16","DT_UINT32","DT_FLOAT32","componentSizeInBytes","attributeSizeInBytes","num_components","data_type","attributeOrder","generateNormals","subtract","decodeMesh","DecoderBuffer","Init","Decoder","GetEncodedGeometryType","TRIANGULAR_MESH","DecodeBufferToMesh","ok","num_faces","shortIndices","num_points","indicesSize","indicesPtr","_malloc","GetTrianglesUInt16Array","HEAPU16","GetTrianglesUInt32Array","HEAPU32","_free","num_attributes","GetAttribute","attribute_type","unique_id","totalVertexSize","normalOffset","sizeInBytes","ptrSize","ptr","GetAttributeDataArrayForAllPoints","HEAPU8","jobId","workQueue","onmessage","DracoDecoderModule","instantiateWasm","imports","successCallback","downloadMaxRetries","JobQueue","jobCallbacks","jobQueue","job","index2","index1","enqueueJob","downloadScript","compileModule","compileManual","arrayBuffer","compileStreaming","defaultNumWorkers$1","lazyConfig$1","initializeWorkers","moduleConfig","numWorkers","dracoSource","dracoModule","blob","workerUrl","dracoInitialize","lazyInit","dracoDecode","GlbResources","isDataURI","getDataURIMimeType","getNumComponents","accessorType","getComponentType$1","getComponentSizeInBytes","getComponentDataType","gltfToEngineSemanticMap","getDequantizeFunc","dequantizeArray","dstArray","srcArray","convFunc","getAccessorData","gltfAccessor","bufferViews","sparse","indicesAccessor","valuesAccessor","baseAccessor","bufferView","bytesPerElement","tmpArray","byteStride","getAccessorDataFloat32","normalized","float32Data","getAccessorBoundingBox","ctype","getPrimitiveType","generateIndices","dummyIndices","sourceDesc","srcStride","normalsTemp","cloneTexture","shallowCopyLevels","cloneTextureAsset","createVertexBufferInternal","positionDesc","sourceOffset","isCorrectlyInterleaved","targetArray","sourceArray","targetStride","sourceStride","kend","createVertexBuffer","vertexBufferDict","useAttributes","attribIds","attrib","vbKey","accessorData","createSkin","gltfSkin","glbSkins","bindMatrix","joints","numJoints","inverseBindMatrices","ibmData","ibmValues","createDracoMesh","meshVariants","meshDefaultMaterials","promises","POSITION","dracoExt","extensions","KHR_draco_mesh_compression","decompressedData","NORMAL","KHR_materials_variants","tempMapping","mappings","createMesh$1","gltfMesh","assetOptions","primitives","extras","targetNames","morphPreserveData","morphPreferHighPrecision","extractTextureTransform","texCoord","zeros","ones","textureTransform","KHR_texture_transform","tilingVec","offsetVec","extensionPbrSpecGlossiness","diffuseFactor","diffuseTexture","diffuseMapChannel","specularFactor","glossinessFactor","specularGlossinessTexture","glossMap","specularMapChannel","glossMapChannel","extensionClearCoat","clearcoatFactor","clearcoatTexture","clearCoatMap","clearCoatMapChannel","clearcoatRoughnessFactor","clearcoatRoughnessTexture","clearCoatGlossMap","clearCoatGlossMapChannel","clearcoatNormalTexture","extensionUnlit","emissiveMapUv","diffuseMapUv","emissiveMapTiling","diffuseMapTiling","emissiveMapOffset","diffuseMapOffset","emissiveMapRotation","diffuseMapRotation","emissiveMapChannel","diffuseVertexColor","emissiveVertexColorChannel","diffuseVertexColorChannel","extensionSpecular","specularColorTexture","specularColorFactor","specularityFactorMapChannel","specularTexture","extensionIor","ior","extensionDispersion","extensionTransmission","transmissionFactor","refractionMapChannel","transmissionTexture","extensionSheen","sheenColorFactor","sheenColorTexture","sheenRoughnessFactor","sheenGlossMap","sheenRoughnessTexture","sheenGlossMapChannel","extensionVolume","thicknessFactor","thicknessMap","thicknessTexture","thicknessMapChannel","attenuationColor","extensionEmissiveStrength","emissiveStrength","extensionIridescence","iridescenceFactor","iridescenceMapChannel","iridescenceMap","iridescenceTexture","iridescenceIor","iridescenceThicknessMinimum","iridescenceThicknessMaximum","iridescenceThicknessMapChannel","iridescenceThicknessMap","iridescenceThicknessTexture","extensionAnisotropy","anisotropyStrength","anisotropyTexture","anisotropyMap","gltfMaterial","pbrData","pbrMetallicRoughness","baseColorFactor","baseColorTexture","metallicFactor","roughnessFactor","metallicRoughnessTexture","metalnessMapChannel","normalTexture","occlusionTexture","aoMapChannel","emissiveFactor","emissiveTexture","alphaCutoff","doubleSided","extensionFunc","createAnimation","gltfAnimation","animationIndex","gltfAccessors","gltfNodes","createAnimData","interpMap","inputMap","outputMap","curveMap","outputCounter","quatArrays","transformSchema","constructNodePath","createMorphTargetCurves","gltfNode","outData","morphTargetCount","keyframeCount","singleBufferSize","morphTargetOutput","morphCurve","channels","inputKey","outputKey","curveKey","curveData","prevIndex","dp","tempMat","tempVec","createNode","nodeInstancingMap","EXT_mesh_gpu_instancing","createCamera","gltfCamera","gltfProperties","orthographic","perspective","ymag","xmag","yfov","cameraEntity","createLight","gltfLight","lightProps","createSkins","gltf","skins","createMeshes","skipMeshes","preprocess","postprocess","createVariants","createAnimations","createInstancing","TRANSLATION","rotations","ROTATION","SCALE","matrixIndex","i4","createNodes","uniqueNames","createScenes","sceneRoot","childNode","createCameras","createLights","KHR_lights_punctual","gltfLights","linkSkins","meshGroup","createResources","bufferViewData","textureAssets","textureInstances","applySampler","gltfSampler","getFilter","getWrap","wrapS","wrapT","gltfTextureUniqueId","getTextureSource","gltfTexture","KHR_texture_basisu","EXT_texture_webp","createImages","urlBase","images","processAsync","mimeTypeFileExtensions","getGammaTextures","KHR_materials_sheen","specularGlossiness","KHR_materials_pbrSpecularGlossiness","KHR_materials_specular","loadTexture","gltfImage","mimeType","gammaTextures","promise","crossOrigin","createTextures","seenImages","gltfImageIndex","cloneAsset","imageAsset","loadBuffers","binaryChunk","gltfBuffer","byteString","binaryArray","parseGltf","gltfChunk","decodeBinaryUtf8","parseGlb","glbData","magic","chunkLength","chunkType","chunkData","parseChunk","hasGlbHeader","u8","createBufferViews","gltfBufferView","GlbParser","createDefaultMaterial","AnimationHandler","parseResult","_parseAnimationV3","animData","_parseAnimationV4","defPos","defaults","defRot","defScl","AnimClipHandler","AnimStateGraphHandler","ie","msie","trident","rv","AudioHandler","_isSupported","msg","_createSound","decodeAudioData","onReady","BinaryHandler","GlbContainerResource","createModel","createAsset","_assetName","assetName","subAsset","instantiateModelEntity","instantiateRenderEntity","skinnedMeshInstances","materialIndex","instData","vbFormat","cloneHierarchy","glb","attachedMi","glbNode","cloneMi","childClone","sceneClones","createSceneHierarchy","getMaterialVariants","applyMaterialVariant","renderComponent","_applyMaterialVariant","applyMaterialVariantInstances","sceneNodes","nodeType","skinIndex","destroyAsset","destroyAssets","GlbContainerParser","_getUrlWithoutParams","ContainerResource","ContainerHandler","glbContainerParser","parsers","_getParser","CssHandler","CubemapHandler","loadAssets","getAssetIds","cubemapAsset","compareAssetIds","assetIdA","assetIdB","assetData","oldAssets","_handlerState","oldResources","getType","rgbm","faceAssets","cmpArrays","faceTextures","faceLevels","faceTexture","faces","resolveId","valueInt","loadedAssetIds","loadedAssets","onError","processTexAsset","texAsset","assetId_","addressu","addressv","FolderHandler","Font","em","upgradeDataSchema","newChars","newKey","letter","FontHandler","numLoaded","onLoaded","SplatCompressedIterator","unpackUnorm","unpack111011","unpack8888","unpackRot","chunkSize","shData0","shData1","shData2","shCoeffs","ci","shData","GSplatCompressedData","getChunks","strideCopy","numEntries","GSplatCompressedResource","chunkTexture","shTexture0","shTexture1","shTexture2","chunkTextureSize","chunkTextureData","magicBytes","endHeaderBytes","dataTypeMap","Float64Array","StreamBuf","progressFunc","tail","newSize","copyWithin","compact","getInt8","getInt16","getInt32","getFloat32","getFloat64","parseHeader","isCompressedPly","chunkProperties","vertexProperties","shProperties","_","hasBaseElements","hasSHElements","isFloatPly","readCompressedPly","streamBuf","numChunkProperties","evalStorageSize","storageSize","toCopy","texStorageSize","srcCoeffs","tmpBuf","toRead","tidx","readFloatPly","numProperties","inputSize","vertexIdx","floatData","checkFloatData","readGeneralPly","propertyParsingFunctions","readPly","propertyFilter","headerLength","storageType","defaultElementFilter","PlyParser","totalLength","totalReceived","elementFilter","combineProgress","upgradeMeta","SogsParser","loadTextures","subs","mapUrl","allSettled","parseZipArchive","u16","extractEocd","cdSizeBytes","cdOffsetBytes","extractCdr","filenameLength","extraFieldLength","fileCommentLength","compressionMethod","compressedSizeBytes","uncompressedSizeBytes","lfhOffsetBytes","recordSizeBytes","extractLfh","extraLength","offsetBytes","eocd","cdr","lfh","compression","inflate","compressed","ds","DecompressionStream","pipeThrough","ab","Response","downloadArrayBuffer","statusText","releaseLock","SogBundleParser","metaFile","GSplatOctreeParser","GSplatHandler","ply","sog","CompressUtils","setCompressedPRS","singleVecs","___1","tripleVecs","___2","oneCharToKey","fieldFirstCode","fieldArray","multCharToKey","fieldCodeBase","Decompress","_handleMap","_handleArray","_result","_handleKey","origKey","_handleArElt","elt","SceneParser","compressedFormat","entDecompressed","curData","curEnt","_createEntity","childEnt","_openComponentData","resource_id","_setPosRotScale","_isTemplate","template","systemsList","entityData","isTemplate","SceneUtils","errMsg","HierarchyHandler","HtmlHandler","JsonHandler","StandardMaterialValidator","setInvalid","removeInvalid","validate","TYPES","REMOVED","pathMapping","enumType","enumValidators","chunkNames","validated","_createEnumValidator","JsonStandardMaterialParser","migrated","migrate","dstMap","mapping_format","RENAMED_PROPERTIES","DEPRECATED_PROPERTIES","_validator","PLACEHOLDER_MAP","MaterialHandler","_bindAndAssignAssets","_assignTexture","_getPlaceholderTexture","placeholder","_assignPlaceholderTexture","_onTextureAdd","_onTextureRemoveOrUnload","_assignCubemap","prefiltered","_onCubemapLoad","_onCubemapAdd","_onCubemapRemoveOrUnload","prefilteredCubeMap128","TEXTURES","assetReference","dataAssetId","isPlaceHolderTexture","dataValidated","CUBEMAPS","GlbModelParser","modelHandler","JSON_PRIMITIVE_TYPE","JSON_VERTEX_ELEMENT_TYPE","JsonModelParser","modelData","_parseNodes","_parseSkins","_parseVertexBuffers","_parseIndexBuffers","morphs","_parseMorphs","_parseMeshes","_parseMeshInstances","parents","skinData","ibm","_getMorphVertexCount","morphTarget","morphTargetArray","sparseToFull","full","attributeMap","texCoord0","texCoord1","texCoord2","texCoord3","texCoord4","texCoord5","texCoord6","texCoord7","maxVerts","meshAabb","meshInstanceData","ModelHandler","_parsers","decider","handleMaterial","addParser","SceneHandler","ScriptTypes","Type","_types","reservedScriptNames","getReservedScriptNames","createScript","registerScript","reservedAttributes","value2","toLowerCamelCase","ScriptHandler","onScriptLoad","urlWithoutEndHash","basePath","isEsmScript","_loadModule","_loadScript","isBrowserWithOrigin","baseUrl","importUrl","__esmScriptDynamicImportRuntime__","scriptSchema","scriptClass","extendsScriptType","lowerCamelCaseName","ShaderHandler","onTextureAtlasLoaded","onTextureAtlasAdded","SpriteHandler","__data","_updateAtlas","Template","_templateRoot","_parseTemplate","TemplateHandler","TextHandler","JSON_ADDRESS_MODE$1","JSON_FILTER_MODE$1","regexFrame","TextureAtlasHandler","textureUrl","minfilter","magfilter","BasisWorker","BASIS_FORMAT","cTFETC1","cTFETC2","cTFBC1","cTFBC3","cTFPVRTC1_4_RGB","cTFPVRTC1_4_RGBA","cTFASTC_4x4","cTFATC_RGB","cTFATC_RGBA_INTERPOLATED_ALPHA","cTFRGBA32","cTFRGB565","cTFRGBA4444","opaqueMapping","astc","atc","none","alphaMapping","PIXEL_FORMAT","ETC1","ETC2_RGB","ETC2_RGBA","DXT1","DXT5","PVRTC_4BPP_RGB_1","PVRTC_4BPP_RGBA_1","ASTC_4x4","ATC_RGB","ATC_RGBA","R8_G8_B8_A8","R5_G6_B5","R4_G4_B4_A4","basisToEngineMapping","basisFormat","deviceDetails","unswizzleGGGR","genB","R","G","pack565","isPOT","performanceNow","rgbPriority","rgbaPriority","chooseTargetFormat","hasAlpha","isUASTC","testInOrder","dimensionsValid","transcodeKTX2","KTX2File","funcStart","basisFile","getWidth","getHeight","getLevels","getHasAlpha","unswizzle","isGGGR","startTranscoding","levelData","dstSize","getImageTranscodedSizeInBytes","transcodeImage","is16BitFormat","transcodeTime","unswizzledGGGR","transcodeBasis","BasisFile","getImageWidth","getImageHeight","getNumImages","getNumLevels","transcode","isKTX2","workerTranscode","workerInit","instantiateWasmFunc","initializeBasis","getCompressionFormats","prepareWorkerModules","getWorkerBlob","basisCode","sendResponse","module_","BasisQueue","clients","enqueueClient","client","handleResponse","BasisClient","eager","defaultNumWorkers","defaultRgbPriority","defaultRgbaPriority","defaultMaxRetries","lazyConfig","basisInitialize","eagerWorkers","clientConfig","basisTranscode","TextureParser","BasisParser","basisModuleFound","textureOptions","ImgParser","hasContents","_loadImageBitmapFromBlob","_loadImageBitmap","_loadImage","originalUrl","Image","retryTimeout","dummySize","createImageBitmap","colorSpaceConversion","imageBitmap","IDENTIFIER","KNOWN_FORMATS","createContainer","pixelFormat","KtxParser","dataU32","endianness","glTypeSize","glInternalFormat","glBaseInternalFormat","pixelDepth","numberOfArrayElements","numberOfFaces","numberOfMipmapLevels","bytesOfKeyValueData","isCubemap","mipmapLevel","imageSizeInBytes","KHRConstants","KHR_DF_MODEL_UASTC","Ktx2Parser","rs","vkFormat","typeSize","levelCount","supercompressionScheme","dfdByteOffset","dfdByteLength","kvdByteOffset","kvdByteLength","sgdByteOffset","sgdByteLength","uncompressedByteLength","dfdTotalSize","colorModel","DdsParser","isFourCc","fcc","bpp","FCC_DXT1","FCC_DXT5","FCC_FP16","FCC_FP32","FCC_ETC1","FCC_PVRTC_2BPP_RGB_1","FCC_PVRTC_2BPP_RGBA_1","FCC_PVRTC_4BPP_RGB_1","FCC_PVRTC_4BPP_RGBA_1","pvrtc2","pvrtc4","mipSize","DXT_BLOCK_WIDTH","DXT_BLOCK_HEIGHT","numBlocksAcross","numBlocksDown","numBlocks","mipWidth","mipHeight","mipBuff","HdrParser","readStream","_readPixels","_readPixelsFlat","rgbe","scanstart","JSON_ADDRESS_MODE","JSON_FILTER_MODE","JSON_TEXTURE_TYPE","_completePartialMipmapChain","isHtmlElement","downsample","sampledWidth","sampledHeight","sampledData","xs","ys","xsys","TextureHandler","imgParser","_getTextureOptions","dds","ktx","ktx2","XRTYPE_INLINE","XRTYPE_VR","XRTYPE_AR","XRSPACE_VIEWER","XRSPACE_LOCAL","XRSPACE_LOCALFLOOR","XRSPACE_BOUNDEDFLOOR","XRSPACE_UNBOUNDED","XRTARGETRAY_GAZE","XRTARGETRAY_SCREEN","XRTARGETRAY_POINTER","XREYE_NONE","XREYE_LEFT","XREYE_RIGHT","XRHAND_NONE","XRHAND_LEFT","XRHAND_RIGHT","XRTRACKABLE_POINT","XRTRACKABLE_PLANE","XRTRACKABLE_MESH","XRDEPTHSENSINGUSAGE_CPU","XRDEPTHSENSINGUSAGE_GPU","XRDEPTHSENSINGFORMAT_L8A8","XRDEPTHSENSINGFORMAT_R16U","XRDEPTHSENSINGFORMAT_F32","XrDomOverlay","_supported","_session","domOverlayState","_root","XRDOMOverlayState","poolVec3","poolQuat","XrHitTestSource","_xrHitTestSource","hitTest","cancel","_transient","transientResults","getHitTestResultsForTransientInput","transientResult","_getByInputSource","updateHitResults","getHitTestResults","_inputSource","candidateDistance","candidateHitTestResult","pose","getPose","_referenceSpace","xrHitTestSource","transient","EVENT_RESULT","XrHitTest","_onSessionStart","enabledFeatures","_available","_checkingAvailability","requestReferenceSpace","referenceSpace","requestHitTestSource","hitTestSource","_onSessionEnd","profile","xrRay","offsetRay","DOMPoint","XRRay","entityTypes","_onHitTestSource","requestHitTestSourceForTransientInput","XRSession","EVENT_AVAILABLE","EVENT_UNAVAILABLE","XrTrackedImage","trackable","_trackable","tracking","_tracking","emulated","_emulated","_bitmap","widthInMeters","bitmap","_pose","_rotation","_measuredWidth","EVENT_TRACKED","EVENT_UNTRACKED","XrImageTracking","trackedImage","_images","getTrackedImageScores","prepareImages","bitmaps","getImageTrackingResults","trackingState","measuredWidthInMeters","imageSpace","XRImageTrackingResult","XrFinger","_hand","_joints","tip","_tip","_fingers","tipJointIds","XRHand","tipJointIdsIndex","XrJoint","_radius","_localPosition","_localRotation","_updateTransforms","_localTransform","finger","_finger","wrist","_wrist","fingerJointIds","vecA$1","vecB$1","vecC","XrHand","xrInputSource","_xrInputSource","joint","jointSpace","getJointPose","j1","_jointsById","j4","j6","j9","j16","j21","_dirtyRay","_rayLocal","jointL","jointR","handedness","squeezing","_fingerIsClosed","_squeezing","getJointById","fingers","tips","_tips","xrHand","jointId","EVENT_TRACKING","EVENT_TRACKINGLOST","vec3A$1","quat","ids$1","XrInputSource","targetRayMode","profiles","grip","_grip","selecting","_selecting","_elementInput","_elementEntity","elementEntity","hitTestSources","_hitTestSources","gripSpace","gripPose","_localPositionLast","_velocitiesTimestamp","_velocitiesAvailable","velocitiesSupported","targetRayPose","targetRaySpace","_updateRayTransforms","parentTransform","hitTestStart","onHitTestSourceAdd","hitTestResult","onHitTestSourceRemove","EVENT_SELECT","EVENT_SQUEEZE","EVENT_SQUEEZESTART","EVENT_SQUEEZEEND","EVENT_HITTESTADD","EVENT_HITTESTREMOVE","EVENT_HITTESTRESULT","XrInput","_onInputSourcesChangeEvt","inputSources","_addInputSource","_inputSources","_onInputSourcesChange","_removeInputSource","added","XRPose","vec3A","vec3B","mat4A","mat4B","XrLightEstimation","requestLightProbe","_lightProbeRequested","_lightProbe","lightProbe","wasRequested","lightEstimate","getLightEstimate","pli","primaryLightIntensity","primaryLightDirection","_sphericalHarmonics","sphericalHarmonicsCoefficients","sphericalHarmonics","XrPlane","_xrPlane","_planeDetection","planeSpace","_lastChangedTime","lastChangedTime","polygon","semanticLabel","planeDetection","xrPlane","XrPlaneDetection","_planes","_planesIndex","detectedPlanes","plane","XRPlane","XrAnchor","_xrAnchor","xrAnchor","anchorSpace","_anchors","persist","persistence","_uuid","_uuidRequests","requestPersistentHandle","uuid","_indexByUuid","uuidRequest","forget","anchors","EVENT_PERSIST","EVENT_FORGET","XrAnchors","_creationQueue","_createAnchor","_onAnchorDestroy","XRHitTestResult","hitResult","createAnchor","XRRigidTransform","_persistence","restorePersistentAnchor","deletePersistentAnchor","_callbacksAnchors","trackedAnchors","uuids","persistentAnchors","XRAnchor","XrMesh","xrMesh","_xrMesh","_meshDetection","meshSpace","_lastChanged","meshDetection","XrMeshDetection","detectedMeshes","_removeMesh","XRMesh","XrView","textureColor","_textureColor","textureDepth","_textureDepth","depthUvMatrix","_depthMatrix","depthValueToMeters","_depthInfo","rawValueToMeters","eye","_xrView","_viewport","_projViewOffMat","_viewOffMat","_viewInvOffMat","_viewMat3","_positionData","xrView","availableColor","_xrCamera","getViewport","inverse","_viewInvMat","_updateTextureColor","_updateDepth","webglBinding","getCameraImage","_frameBufferSource","_frameBuffer","availableDepth","depthGpuOptimized","infoSource","depthInfo","getDepthInformation","matrixDirty","resized","normDepthBufferFromNormView","depthPixelFormat","_emptyDepthBuffer","getDepth","getDepthInMeters","viewsCount","supportedColor","supportedDepth","filtering","EVENT_DEPTHRESIZE","XrViews","_supportedColor","_supportedDepth","_availableColor","_availableDepth","depthUsage","_depthUsage","_depthFormat","_depthFormats","xrViews","_indexTmp","depthDataFormat","XRCamera","XRWebGLBinding","XRDepthInformation","XrManager","_spaceType","_framebufferScaleFactor","framebufferScaleFactor","_setClipPlanes","optionalFeatures","webgl","imageTracking","domOverlay","depthSensing","usagePreference","dataFormatPreference","cameraColor","trackedImages","_onStartOptionsReady","requestSession","isAvailable","_deviceAvailabilityCheck","_sessionSupportCheck","initiateRoomCapture","updateTargetFrameRate","frameRate","isSessionSupported","onClipPlanesChange","_createBaseLayer","supportedFrameRates","_supportedFrameRates","_depthNear","_depthFar","updateRenderState","depthNear","depthFar","_baseLayer","XRWebGLLayer","_onDeviceRestored","makeXRCompatible","framebufferWidth","framebufferHeight","getViewerPose","lengthOld","posePosition","poseOrientation","lightEstimation","fixedFoveation","EVENT_START","EVENT_UPDATE","Application","graphicsDeviceOptions","addComponentSystems","addResourceHandles","AssetListLoader","_waitingAssets","_onAddAsset","_assetHasDependencies","_callback","loadingAssets","_loadingAssets","_loadingComplete","_failed","_waitForAsset","assetList","assetRegistry","DEFAULT_TEXTURE_SIZE","Atlas","ctx","clearRect","fillStyle","fillRect","CanvasFont","_chars","_normalizeCharsSet","_renderAtlas","updateTextures","newCharsSet","atlases","fontName","glyphSize","fontWeight","_colorToRgbString","renderCharacter","fillText","_getAtlas","charsArray","TEXT_ALIGN","TEXT_BASELINE","atlasIndex","_createJson","maxDescent","metrics","_getTextMetrics","descent","_xOffset","_yOffset","fs","textAlign","textBaseline","measureText","_addChar","mapNum","mapW","mapH","textSpan","innerHTML","ascent","tempMeshInstances$1","RenderPassPicker","emptyWorldClusters","srcLayers","srcLayer","tempSet","Picker","getSelection","sanitizeRect","decodePixels","getSelectionAsync","selection","deviceValid","SceneSettingsHandler","targetX","targetY","vecA","vecB","rayA","rayB","rayC","_pq","_pa","_pb","_pc","_pd","_m","_au","_bv","_cw","_ir","_sct","_accumulatedScale","_paddingTop","_paddingBottom","_paddingLeft","_paddingRight","_cornerBottomLeft","_cornerBottomRight","_cornerTopRight","_cornerTopLeft","ZERO_VEC4","scalarTriple","intersectLineQuad","denom","ElementInputEvent","_stopPropagation","stopImmediatePropagation","ElementMouseEvent","lastX","lastY","ElementTouchEvent","ElementSelectEvent","ElementInput","domElement","_useMouse","_useTouch","_touchstartHandler","_touchendHandler","_touchmoveHandler","_touchcancelHandler","_selectEventsAttached","_useXr","_clickedEntities","_onXrStart","_onXrEnd","_onXrUpdate","_onXrInputRemove","_calcMouseCoords","_onElementMouseEvent","_determineTouchedElements","touchedElements","_getTargetElementByCoords","newTouchedElements","newTouchInfo","oldTouchInfo","_touchedElements","_fireEvent","_touchesForWhichTouchLeaveHasFired","touchId","touchInfo","hovered","eventType","lastHovered","_hoveredElement","_pressedElement","fireClick","lastTouchUp","_onElementSelectEvent","_selectedElements","_selectedPressedElements","hoveredBefore","hoveredNow","_getTargetElementByRay","_sortElements","rayScreen","_calculateRayScreen","ray3d","_calculateRay3d","_getTargetElement","screenPos","closestDistance3d","currentDistance","_checkElement","cameraLeft","cameraRight","cameraBottom","cameraTop","calculateScaleToScreen","calculateScaleToWorld","buildHitCorners","screenOrWorldCorners","useMouse","useTouch","useXr","PIXELFORMAT_L8_A8","PIXELFORMAT_R5_G6_B5","PIXELFORMAT_R5_G5_B5_A1","PIXELFORMAT_R4_G4_B4_A4","PIXELFORMAT_R8_G8_B8","PIXELFORMAT_R8_G8_B8_A8","PIXELFORMAT_SRGB","PIXELFORMAT_SRGBA","BLENDMODE_CONSTANT_COLOR","BLENDMODE_ONE_MINUS_CONSTANT_COLOR","BLENDMODE_CONSTANT_ALPHA","BLENDMODE_ONE_MINUS_CONSTANT_ALPHA","CHUNKAPI_1_51","CHUNKAPI_1_55","CHUNKAPI_1_56","CHUNKAPI_1_57","CHUNKAPI_1_58","CHUNKAPI_1_60","CHUNKAPI_1_62","CHUNKAPI_1_65","CHUNKAPI_1_70","CHUNKAPI_2_1","CHUNKAPI_2_3","CHUNKAPI_2_5","CHUNKAPI_2_6","CHUNKAPI_2_7","CHUNKAPI_2_8","createSphere","createPlane","createBox","createTorus","createCapsule","createCone","createCylinder","drawFullscreenQuad","defineProperties","swizzleGGGR","_tempBlendState","_tempDepthState","setBlendFunction","blendSrc","blendDst","setBlendFunctionSeparate","blendSrcAlpha","blendDstAlpha","setBlendEquation","setBlendEquationSeparate","blendAlphaEquation","getBlending","setBlending","setDepthFunc","setDepthTest","getCullMode","Key","Node","LitOptions","Proxy","_models","_removedClassProperty","targetClass","comment","syncAabb","getChildren","getName","getPath","getRoot","getParent","setName","_defineAlias","oldName","_deprecateTint","_defineOption","tempOptions","litOptionProperties","getOwnPropertyNames","litOption","getAssetById","RIGIDBODY_TYPE_STATIC","RIGIDBODY_TYPE_DYNAMIC","RIGIDBODY_TYPE_KINEMATIC","RIGIDBODY_CF_STATIC_OBJECT","RIGIDBODY_CF_KINEMATIC_OBJECT","RIGIDBODY_CF_NORESPONSE_OBJECT","RIGIDBODY_ACTIVE_TAG","RIGIDBODY_ISLAND_SLEEPING","RIGIDBODY_WANTS_DEACTIVATION","RIGIDBODY_DISABLE_DEACTIVATION","RIGIDBODY_DISABLE_SIMULATION","isFullscreen","enableFullscreen","Element","ALLOW_KEYBOARD_INPUT","disableFullscreen","getSceneUrl","setVisible","syncBodyToEntity","CpuTimer","_frameIndex","_frameTimings","_prevTimings","_timings","mark","timing","unitsName","decimalPlaces","GpuTimer","StatsTimer","statNames","multiplier","Graph","timer","avgTotal","avgTimer","avgCount","textRefreshRate","timingText","watermark","sample","render2d","WordAtlas","word","initContext","isNumber","measurement","actualBoundingBoxLeft","actualBoundingBoxRight","actualBoundingBoxAscent","actualBoundingBoxDescent","getImageData","vertexShaderGLSL","vertexShaderWGSL","fragmentShaderGLSL","fragmentShaderWGSL","Render2d","uw","uh","wordFlag","x0","y0","tw","u0","u1","quads","startFrame","scrollWidth","scrollHeight","graphTexture","wordsTexture","clr","maxQuads","MiniStats","updateDiv","postRender","graphs","wordAtlas","getDefaultOptions","startSizeIndex","cpu","activeSizeIndex","_activeSizeIndex","gspacing","overallHeight","initGraphs","drawLayer","showGraphs","stat","cssText","shaderOutlineExtendPS","_tempFloatArray","_tempColor","OutlineRenderer","whiteTex","outlineCameraEntity","quadRenderer","getMeshInstances","recursive","models","addEntity","outlineShaderPass","opacityMapUv","opacityMapTransform","opacityVertexColor","opacityVertexColorChannel","colArray","renderingLayer","removeEntity","removeAllEntities","blendOutlines","uOffset","uColorBuffer","uSrcMultiplier","shaderExtend","createRenderTarget","updateRenderTarget","sceneCamera","outlineCamera","sceneCameraEntity","blendLayer","blendLayerTransparent","shaderBlend","CoreExporter","textureToCanvas","calcTextureSize","imagedata","putImageData","dstTexture","newImage","ImageData","newContext","i32","fleb","fdeb","clim","freb","eb","_a","fl","revfl","_b","revfd","rev","hMap","cd","mb","le","co","rvb","sv","r_1","flt","fdt","flm","fdm","shft","slc","ec","nt","captureStackTrace","wbits","wbits16","hTree","et","i0","maxSym","tr","mbt","ln","lft","cst","i2_1","i2_2","i2_3","lc","cl","cli","cln","cls","clen","wfblk","dat","wblk","final","syms","lf","df","bs","bl","dlt","mlb","ddt","mdb","_c","lclt","nlc","_d","lcdt","ndc","lcfreq","_e","lct","mlcb","nlcc","flen","ftlen","dtlen","lm","ll","dm","dl","llm","lcts","clct","sym","deo","dflt","lvl","plvl","pre","st","lst","msk_1","bs1_1","bs2_1","hsh","lc_1","wi","hv","imod","pimod","rem","ch_1","dif","maxn","maxd","ml","nl","mmd","md","ti","pti","lin","din","crct","crc","dopt","dictionary","dict","newDat","mem","mrg","wbytes","deflateSync","fltn","te","TextEncoder","td","tds","strToU8","latin1","ai","exfl","wzh","ce","exl","os","mtime","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","exf","wzf","zipSync","tot","com","oe","cdl","badd","ROOT_FILE_NAME","materialListTemplate","meshTemplate","faceVertexCounts","uv0","uv1","meshInstanceTemplate","meshRefPath","materialRefPath","materialValueTemplate","UsdzExporter","meshMap","textureMap","materialMap","nodeNames","build","allMeshInstances","rootContent","buildMeshInstance","textureArray","texturePromise","toBlob","finalData","textureArrayBuffer","getTextureFileIds","alignFiles","offsetMod64","padLength","getFileIds","category","refName","uniqueId","content","contentU8","getMaterialRef","materialRef","buildMaterial","getMeshRef","meshRef","buildMesh","buildArray2","buildArray3","buildMat4","vectors","materialName","materialPath","materialPropertyPath","textureIds","mapType","addTexture","textureSlot","propType","valueName","handleOpacity","tintTexture","textureValue","materialObject","indicesCount","meshObject","refPath","getIndexComponentType","getComponentType","getAccessorType","getSemantic","engineSemantic","isCanvasTransparent","textureSemantics","GltfExporter","collectResources","entityMeshInstances","bufferViewMap","compressableTexture","collectMeshInstances","nodeMeshInstances","writeBufferViews","writeBufferView","bufferInfo","addBufferView","bufferViewIndex","bufferViewIndices","writeCameras","cam","attachTexture","textureSemantic","extensionsUsed","extensionsRequired","writeStandardMaterial","pbr","writeMaterials","writeNodes","entityMeshInstance","writeMeshes","createPrimitive","stripUnusedAttributes","isUsed","texCoordIndex","texSemantic","emi","viewIndex","writeSkins","matrixBuffer","accessorIndex","convertTextures","srcTextures","srcTexture","writeTextures","textureCanvases","isRGBA","getBlob","FileReader","readAsArrayBuffer","onloadend","getPaddedArrayBuffer","quality","convertToBlob","paddingByte","paddedLength","buildJson","encoder","jsonData","jsonHeaderLength","jsonDataLength","jsonPaddingLength","binaryHeaderLength","binaryDataLength","glbBuffer","glbView","setUint32","setUint8","bufferViewId","SSAOTYPE_NONE","SSAOTYPE_LIGHTING","SSAOTYPE_COMBINE","glslDownsamplePS","wgslDownsamplePS","RenderPassDownsample","_sourceTexture","sourceTextureId","premultiplyTexture","premultiplyTextureId","sourceInvResolutionValue","sourceInvResolutionId","boxFilter","premultiplySrcChannel","glslUpsamplePS","wgslUpsamplePS","RenderPassUpsample","RenderPassBloom","destroyRenderPasses","destroyRenderTargets","createRenderTargets","bloomRenderTarget","calcMipLevels","createRenderPasses","numPasses","passSourceTexture","maxNumPasses","blurLevel","bloomTexture","composePS$1","composeBloomPS$1","composeDofPS$1","composeSsaoPS$1","composeGradingPS$1","composeVignettePS$1","composeFringingPS$1","composeCasPS$1","composeColorLutPS$1","composeChunksGLSL","composePS","composeBloomPS","composeDofPS","composeSsaoPS","composeGradingPS","composeVignettePS","composeFringingPS","composeCasPS","composeColorLutPS","composeDeclarationsPS","composeMainStartPS","composeMainEndPS","composeChunksWGSL","RenderPassCompose","debug","_debug","_shaderDirty","colorLUT","_colorLUT","_bloomTexture","cocTexture","_cocTexture","ssaoTexture","_ssaoTexture","taaEnabled","_taaEnabled","gradingEnabled","_gradingEnabled","vignetteEnabled","_vignetteEnabled","fringingEnabled","_fringingEnabled","sharpness","_sharpness","isSharpnessEnabled","neededGammaCorrection","prevValue","_customComposeChunks","currentValue","gammaCorrectionName","customChunks","declHash","startHash","endHash","blurTextureUpscale","sceneTex","sceneTexture","sceneTextureId","sceneTextureInvResValue","sceneTextureInvResId","bloomTextureId","bloomIntensityId","bloomIntensity","cocTextureId","blurTextureId","blurTexture","ssaoTextureId","bcsId","gradingBrightness","gradingContrast","gradingSaturation","tintId","gradingTint","lutTexture","colorLUTParams","colorLUTIntensity","colorLUTParamsId","colorLUTId","vignetterParamsId","vignetteInner","vignetteOuter","vignetteCurvature","vignetteIntensity","fringingIntensityId","fringingIntensity","sharpnessId","glslSampleCatmullRomPS","wgslSampleCatmullRomPS","glsltaaResolvePS","wgsltaaResolvePS","RenderPassTAA","setup","historyTextures","historyRenderTargets","historyTexture","historyTextureId","historyIndex","textureSizeId","viewProjPrevId","viewProjInvId","jittersId","glslCocPS","wgslCocPS","RenderPassCoC","paramsValue","focusRange","focusDistance","paramsId","nearBlur","glsldofBlurPS","wgsldofBlurPS","RenderPassDofBlur","blurRings","_blurRings","blurRingPoints","_blurRingPoints","kernelCount","nearTexture","nearTextureId","farTextureId","farTexture","kernelId","kernelCountId","blurRadiusNearId","blurRadiusNear","blurRadiusFarId","blurRadiusFar","RenderPassDof","cocPass","farPass","blurPass","cocRT","farRt","blurRt","setupCocPass","setupFarPass","setupBlurPass","blurRadius","highQuality","sceneTextureHalf","tempMeshInstances","DEPTH_UNIFORM_NAME","RenderPassPrepass","linearDepthTexture","setupRenderTarget","linearDepthFormat","linearDepthClearValue","glslDepthAwareBlurPS","wgslDepthAwareBlurPS","RenderPassDepthAwareBlur","filterSizeId","glslSsaoPS","wgslSsaoPS","RenderPassSsao","minAngle","minAngleSin","spiralTurns","peak","projectionScale","power","_blueNoise","ssaoTextureSizeInvId","blurEnabled","blurRT","blurPassHorizontal","blurPassVertical","CameraFrameOptions","sceneColorMap","lastGrabLayerId","lastGrabLayerIsTransparent","lastSceneLayerId","lastSceneLayerIsTransparent","bloomEnabled","ssaoType","ssaoBlurEnabled","prepassEnabled","dofEnabled","dofNearBlur","dofHighQuality","_defaultOptions","RenderPassCameraFrame","rtHalf","prePass","scenePass","scenePassTransparent","composePass","bloomPass","ssaoPass","taaPass","afterPass","scenePassHalf","dofPass","sanitizeOptions","renderTargetScale","_renderTargetScale","needsReset","currentOptions","arraysNotEqual","setupRenderPasses","hdrFormat","targetRenderTarget","_bloomEnabled","_sceneHalfEnabled","sceneOptions","createPasses","allPasses","collectPasses","setupScenePrepass","setupSsaoPass","scenePassesInfo","setupScenePass","sceneTextureWithTaa","setupTaaPass","setupSceneHalfPass","setupBloomPass","setupDofPass","setupComposePass","setupAfterPass","setupScenePassSettings","lastAddedIndex","inputTexture","inputTextureHalf","textureWithTaa","cameraFrame","CameraFrame","cameraLayersChanged","renderPassCamera","createRenderPass","rendering","updateOptions","bloom","taa","sceneDepthMap","renderFormats","dof","grading","vignette","fringing","saturation","brightness","contrast","tint","inner","outer","curvature","tmpV1$5","rotation$4","Pose","angles","alpha1","alpha3","xRange","yRange","zRange","euler","pitchRange","yawRange","look","elev","azim","getFocus","InputDelta","_value","InputFrame","deltas","InputSource","InputConsumer","InputController","smooth","DOUBLE_TAP_THRESHOLD","DOUBLE_TAP_VARIANCE","movementState","down","pointerId","screenX","screenY","mvX","mvY","v$1","VirtualJoystick","_range","bx","by","SingleGestureSource","_layout","_pointerData","joystick","_joystick","_onPointerDown","pointerType","_movementState","setPointerCapture","sqrDist","_lastPointer","doubleTap","_onPointerMove","_onPointerUp","releasePointerCapture","suffix","DualGestureSource","leftJoystick","_leftJoystick","rightJoystick","_rightJoystick","leftInput","rightInput","tmpVa","MultiTouchSource","_pointerEvents","_getMidPoint","_pointerPos","_pinchDist","_getPinchDist","pinchDist","pinch","_onContextMenu","PASSIVE","KEY_CODES","C","D","E","F","I","J","K","M","O","P","Q","S","T","U","V","W","X","Y","Z","SPACE","SHIFT","CTRL","KEY_COUNT","KeyboardMouseSource","_onWheel","wheel","_pointerLock","_clearButtons","_button","_pointerId","_onKeyDown","_setKey","_onKeyUp","_keyMap","_keyNow","_keyPrev","pointerLock","BUTTON_CODES","LB","RB","LT","RT","SELECT","START","LEFT_STICK","RIGHT_STICK","BUTTON_COUNT","GamepadSource","_buttonPrev","leftStick","rightStick","buttonCode","damp","offset$1","angles$1","rotation$3","FlyController","_targetPose","moveDamping","rotateDamping","dir$2","rotation$2","OrbitController","_targetRootPose","_rootPose","zoomRange","_targetChildPose","_childPose","zoomDamping","dir$1","position$1","rotation$1","FocusController","focusDamping","GIZMOSPACE_LOCAL","GIZMOSPACE_WORLD","GIZMOAXIS_X","GIZMOAXIS_Y","GIZMOAXIS_Z","GIZMOAXIS_YZ","GIZMOAXIS_XZ","GIZMOAXIS_XY","GIZMOAXIS_XYZ","GIZMOAXIS_FACE","ray$1","MIN_SCALE","PERS_SCALE_RATIO","ORTHO_SCALE_RATIO","UPDATE_EPSILON$2","DIST_EPSILON","Gizmo","createLayer","_renderUpdate","mouseButtons","_mouseButtons","coordSpace","_coordSpace","_updateRotation","facingDir","gizmoPos","cameraDir","_getSelection","EVENT_POINTERDOWN","EVENT_POINTERMOVE","EVENT_POINTERUP","_updatePosition","EVENT_POSITIONUPDATE","EVENT_ROTATIONUPDATE","EVENT_SCALEUPDATE","intersectShapes","disabled","parentTM","triData","tris","triWTM","invTriWTM","s0","EVENT_NODESATTACH","EVENT_NODESDETACH","prerender","EVENT_RENDERUPDATE","_handles","COLOR_RED","COLOR_GREEN","COLOR_BLUE","COLOR_GRAY","color4from3","v1$3","v2$3","point$3","color$1","AXES$2","TransformGizmo","theme","_theme","xAxisColor","setTheme","shapeBase","shapeHover","colorAlpha","guideBase","guideOcclusion","yAxisColor","zAxisColor","xyz","_dragging","_hoverAxis","_selectedAxis","_getIsPlane","_hover","_hovering","_shapes","hover","_hoverIsPlane","_createRay","mouseWPos","orthoDepth","_createPlane","isFacing","isLine","_rootStartRot","_rootStartPos","_dirFromAxis","_projectToAxis","_screenToPoint","_drawGuideLines","activeAxis","activeIsPlane","_drawSpanLine","occluded","_createTransform","_shapeMap","enableShape","shapeAxis","isShapeEnabled","partial","gizmoRot","_selectedIsPlane","_selectionStartPoint","snap","snapIncrement","dragMode","EVENT_TRANSFORMSTART","EVENT_TRANSFORMMOVE","EVENT_TRANSFORMEND","tmpV1$4","tmpV2$3","tmpV3$1","TriData","setTransform","tri","unlitShader","tmpG","Shape","_disabled","_visible","_createRenderComponent","_disabledColor","_defaultColor","_cull","_hoverColor","defaultColor","hoverColor","disabledColor","UPDATE_EPSILON$1","PlaneShape","gap","_gap","flipped","_flipped","tmpV1$3","tmpV2$2","tmpQ1$1","ArrowShape","lineThickness","_lineThickness","lineLength","_lineLength","arrowThickness","_arrowThickness","arrowLength","_arrowLength","tolerance","_tolerance","_head","_line","SphereShape","v1$2","v2$2","point$2","delta$1","q$1","GLANCE_EPSILON$1","AXES$1","TranslateGizmo","axisGap","_setArrowProp","axisLineThickness","axisLineLength","axisLineTolerance","axisArrowThickness","axisArrowLength","axisPlaneSize","_setPlaneProp","axisPlaneGap","axisCenterSize","flipShapes","flipPlanes","_shapesLookAtCamera","_drag","_storeNodePositions","_nodeLocalPositions","_nodePositions","_setNodePositions","translateDelta","isPlane","TORUS_RENDER_SEGMENTS","TORUS_INTERSECT_SEGMENTS","ArcShape","_createTorusGeometry","_tubeRadius","_ringRadius","_createTorusMesh","_triDataCache","_sectorAngle","tmpV1$2","MeshLine","_thickness","point$1","v1$1","v2$1","RING_FACING_EPSILON","UPDATE_EPSILON","AXES","RotateGizmo","xyzTubeRadius","_setDiskProp","xyzRingRadius","faceTubeRadius","faceRingRadius","centerRadius","ringTolerance","angleGuideThickness","_guideAngleLines","orbitRotation","rotationMode","_storeGuidePoints","_guideAngleStart","_guideAngleEnd","_updateGuidePoints","angleDelta","_angleGuide","baseColor","startColor","sector","_facingDir","_storeNodeRotations","_nodeLocalRotations","_nodeRotations","_nodeOffsets","_setNodeRotations","angleAxis","intersection","_calculateArcAngle","facingDot","_screenStartPos","projDir","_selectionStartAngle","_screenPos","BoxShape","tmpV1$1","tmpV2$1","tmpQ1","BoxLineShape","boxSize","_boxSize","_box","GLANCE_EPSILON","ScaleGizmo","_uniform","axisBoxSize","_storeNodeScales","_nodeScales","_setNodeScales","scaleDelta","lowerBoundScale","tmpV1","tmpV2","tmpV3","tmpM1","ViewCube","dom","colorX","_colorX","xaxis","colorY","_colorY","yaxis","colorZ","_colorZ","zaxis","colorNeg","_colorNeg","textSize","_textSize","_svg","_x2y2","createElementNS","namespaceURI","_circle","circle","textContent","cameraMatrix","createDocumentFragment","colX","colY","colZ","EVENT_CAMERAALIGN","loadModules","urlPrefix","moduleLoaded","ASSET_PREFIX","SCRIPT_PREFIX","SCENE_PATH","CONTEXT_OPTIONS","SCRIPTS","CONFIG_FILENAME","INPUT_SETTINGS","useKeyboard","useGamepads","PRELOAD_MODULES","legacy","pc","showSplash","wrapper","loadGoogleFont","rel","splash","logo","bar","hideSplash","getElementById","parentElement","setProgress","createCss","css","styleSheet","createTextNode","showAuthForm","supabaseScript","form","querySelector","onsubmit","username","password","isValid","tryConnect","alert"],"mappings":"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R,CACD,CAAA,CACD,CACEq2B,iBACA,CAAA,CACEj4B,IAAM,CAAA,OAAA,CACN4B,KAAM,CACR,CAAA,CACD,CACD,CACE6zB,mBACA,CACEz1B,IAAAA,CAAM,QACN4B,CAAAA,IAAAA,CAAM,CACR,CACD,CAAA,CACD,CACE8zB,mBAAAA,CACA,CACE11B,IAAM,CAAA,SAAA,CACN4B,IAAM,CAAA,CACR,CACD,CAAA,CACD,CACE+zB,kBAAAA,CACA,CACE31B,IAAM,CAAA,QAAA,CACN4B,IAAM,CAAA,EACR,EACD,CACD,CACEg0B,mBACA,CAAA,CACE51B,KAAM,SACN4B,CAAAA,IAAAA,CAAM,EACR,CAAA,CACD,CACD,CACEi0B,gBAAAA,CACA,CACE71B,IAAAA,CAAM,OACN4B,IAAM,CAAA,CACR,CACD,CAAA,CACD,CACEk0B,iBACA,CAAA,CACE91B,IAAM,CAAA,OAAA,CACN4B,KAAM,CACR,CAAA,CACD,CACD,CACEm3B,mBACA,CAAA,CACE/4B,IAAM,CAAA,SAAA,CACN4B,KAAM,CACR,CAAA,CACD,CACD,CACEm0B,yBACA,CACE/1B,IAAAA,CAAM,cACN4B,CAAAA,IAAAA,CAAM,CACR,CACD,CAAA,CACD,CACEo0B,mBAAAA,CACA,CACEh2B,IAAM,CAAA,SAAA,CACN4B,IAAM,CAAA,CACR,EACD,CACD,CACEq0B,iBACA,CAAA,CACEj2B,KAAM,OACN4B,CAAAA,IAAAA,CAAM,CACNq3B,CAAAA,GAAAA,CAAK,KACLE,IAAM,CAAA,IACR,CACD,CAAA,CACD,CACEjD,kBAAAA,CACA,CACEl2B,IAAAA,CAAM,SACN4B,IAAM,CAAA,CAAA,CACNq3B,GAAK,CAAA,IAAA,CACLE,KAAM,IACR,CAAA,CACD,CACD,CACEtC,kBACA,CACE72B,IAAAA,CAAM,OACN4B,CAAAA,IAAAA,CAAM,EACNq3B,GAAK,CAAA,IACP,CACD,CAAA,CACD,CACEP,kBACA,CAAA,CACE14B,IAAM,CAAA,QAAA,CACN4B,KAAM,CACNq3B,CAAAA,GAAAA,CAAK,IACLE,CAAAA,IAAAA,CAAM,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AAA,CACA,EACA,CAAA,EAAA,CACA,GACA,EACA,CAAA,YAAA,CACA,YACA,CAAA,cAAA,CACA,eACA,YACA,CAAA,YAAA,CACA,iBACA,CAAA,iBAAA,CACD,CACD,MAAMC,qBAAAA,CAAwB,CAC5B,CACE,OACD,CACD,CACE,KACD,CAAA,CACD,CACE,KACD,CAAA,CACD,CACE,OAAA,CACA,YACD,CACD,CACE,OACA,CAAA,WAAA,CACD,CACD,CACE,OAAA,CACA,WACD,CAAA,CACD,CACE,OACA,CAAA,WAAA,CACD,CACD,CACE,QACA,WACD,CAAA,CACD,CACE,OAAA,CACA,YACD,CACD,CACE,YACD,CAAA,CACD,CACE,YAAA,CACD,CACD,CACE,aACD,CACD,CACE,SACA,CAAA,aAAA,CACD,CACD,CACE,SAAA,CACA,aACD,CAAA,CACD,CACE,SACA,CAAA,aAAA,CACD,CACD,CACE,kBACD,CACD,CACE,mBACD,CAAA,CACD,CACE,YACD,CAAA,CACD,CACE,kBAAA,CACD,CACD,CACE,oBAAA,CACD,CACD,CACE,kBACD,CACD,CACE,kBACD,CAAA,CACD,CACE,kBAAA,CACD,CACD,CACE,mBACD,CACD,CACE,oBACD,CAAA,CACD,CACE,uBACD,CAAA,CACD,CACE,KAAA,CACD,CACD,CACE,OAAA,CACA,WACD,CAAA,CACD,CACE,OACA,CAAA,WAAA,CACD,CACD,CACE,QACA,WACD,CAAA,CACD,CACE,YAAA,CACD,CACD,CACE,YAAA,CACD,CACD,CACE,cACD,CACD,CACE,cACA,CAAA,kBAAA,CACD,CACD,CACE,cACA,CAAA,kBAAA,CACD,CACD,CACE,cAAA,CACA,mBACD,CAAA,CACD,CACE,cACA,CAAA,kBAAA,CACD,CACD,CACE,eACA,kBACD,CAAA,CACD,CACE,cAAA,CACA,oBACD,CACD,CACE,cACA,CAAA,kBAAA,CACD,CACD,CACE,cAAA,CACA,kBACD,CAAA,CACD,CACE,cACA,CAAA,mBAAA,CACD,CACD,CACE,kBACD,CACD,CACE,iBACD,CAAA,CACD,CAC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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}