{"version":3,"file":"index.mjs","sources":["../playcanvas-stable.min.js","../__modules__.js","../__settings__.js","../__loading__.js"],"sourcesContent":["/**\n * @license\n * PlayCanvas Engine v2.14.3 revision 26ac50c (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_ASSETS = 'Assets';\nconst TRACEID_RENDER_QUEUE = 'RenderQueue';\nconst TRACEID_OCTREE_RESOURCES = 'OctreeResources';\nconst TRACEID_GPU_TIMINGS = 'GpuTimings';\n\nconst version = '2.14.3';\nconst revision = '26ac50c';\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\t\tget hasTranspilers() {\n\t\t\t\treturn this.glslang && this.twgsl;\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\tthis.setFramebuffer(renderTarget.impl._glFrameBuffer);\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 SHADER_DEPTH_PICK = 4;\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} else if (this.index === SHADER_DEPTH_PICK) {\n\t\t\t\t\t\tkeyword = 'PICK';\n\t\t\t\t\t\tthis.defines.set('DEPTH_PICK_PASS', '');\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\t\tadd('depth_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', '');\n\t\t\t\t\t\tif (this.shaderOutputGamma === GAMMA_SRGB) defines.set('SCENE_COLORMAP_GAMMA', '');\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 splatBudget(value) {}\n\t\tget splatBudget() {\n\t\t\t\treturn 0;\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\t\tthis.cooldownTicks = 100;\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.useVertexColorGamma = 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 || userChunks.useWGSL) ? SHADERLANGUAGE_WGSL : SHADERLANGUAGE_GLSL;\n\t\t\t\tif (device.isWebGPU && this.shaderLanguage === SHADERLANGUAGE_GLSL) {\n\t\t\t\t\t\tif (!device.hasTranspilers) ;\n\t\t\t\t}\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\t\tif (options.useVertexColorGamma) {\n\t\t\t\t\t\t\t\tvDefines.set('STD_VERTEX_COLOR_GAMMA', '');\n\t\t\t\t\t\t}\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.vertexColorGamma = false;\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(code, 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\t\toptions.litOptions.useVertexColorGamma = stdMat.vertexColorGamma;\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\tvertexColorGamma: 'boolean',\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_defineFlag('vertexColorGamma', 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._refCount = 0;\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\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\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.deviceRestoredEvent?.off();\n\t\t\t\tthis.deviceRestoredEvent = null;\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\treturn this._shBands;\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\tlet device = this.means_l.device;\n\t\t\t\tconst { height, width } = this.means_l;\n\t\t\t\tif (this.destroyed || !device || device._destroyed) return;\n\t\t\t\tconst shBandsWidths = {\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\tthis._shBands = shBandsWidths[this.sh_centroids?.width] ?? 0;\n\t\t\t\tconst urlSuffix = this.url ? `_${this.url}` : '';\n\t\t\t\tthis.packedTexture = new Texture(device, {\n\t\t\t\t\t\tname: `sogsPackedTexture${urlSuffix}`,\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${urlSuffix}`,\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${urlSuffix}`,\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\tif (!this.minimalMemory) {\n\t\t\t\t\t\tthis.deviceRestoredEvent = device.on('devicerestored', ()=>{\n\t\t\t\t\t\t\t\tthis.packGpuMemory();\n\t\t\t\t\t\t\t\tif (this.packedShN) {\n\t\t\t\t\t\t\t\t\t\tthis.packShMemory();\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[\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\tdevice = this.means_l?.device;\n\t\t\t\tif (this.destroyed || !device || device._destroyed) return;\n\t\t\t\tawait this.generateCenters();\n\t\t\t\tdevice = this.means_l?.device;\n\t\t\t\tif (this.destroyed || !device || device._destroyed) return;\n\t\t\t\tthis.packGpuMemory();\n\t\t\t\tif (this.packedShN) {\n\t\t\t\t\t\tdevice = this.means_l?.device;\n\t\t\t\t\t\tif (this.destroyed || !device || device._destroyed) return;\n\t\t\t\t\t\tthis.packShMemory();\n\t\t\t\t}\n\t\t\t\tif (this.minimalMemory) {\n\t\t\t\t\t\tthis.means_l?.destroy();\n\t\t\t\t\t\tthis.means_u?.destroy();\n\t\t\t\t\t\tthis.quats?.destroy();\n\t\t\t\t\t\tthis.scales?.destroy();\n\t\t\t\t\t\tthis.sh0?.destroy();\n\t\t\t\t\t\tthis.sh_centroids?.destroy();\n\t\t\t\t\t\tthis.sh_labels?.destroy();\n\t\t\t\t\t\tthis.means_l = null;\n\t\t\t\t\t\tthis.means_u = null;\n\t\t\t\t\t\tthis.quats = null;\n\t\t\t\t\t\tthis.scales = null;\n\t\t\t\t\t\tthis.sh0 = null;\n\t\t\t\t\t\tthis.sh_centroids = null;\n\t\t\t\t\t\tthis.sh_labels = null;\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.url = '';\n\t\t\t\tthis.minimalMemory = false;\n\t\t\t\tthis.deviceRestoredEvent = null;\n\t\t\t\tthis._centers = null;\n\t\t\t\tthis.destroyed = false;\n\t\t\t\tthis._shBands = 0;\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\tget loader() {\n\t\t\t\treturn this._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\tif (extra) {\n\t\t\t\t\t\t\t\t\t\t\t\thandler._cache[asset.id] = extra;\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_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\t\tlog() {}\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 *= 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 *= 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\"\n#ifdef VERTEX_COLOR\n\tvec3 decodeGamma(vec3 raw) {\n\t\treturn pow(raw, vec3(2.2));\n\t}\n\tvec4 gammaCorrectInput(vec4 color) {\n\t\treturn vec4(decodeGamma(color.xyz), color.w);\n\t}\n#endif\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\t#ifdef STD_VERTEX_COLOR_GAMMA\n\t\t\tvVertexColor = gammaCorrectInput(vertex_color);\n\t\t#else\n\t\t\tvVertexColor = vertex_color;\n\t\t#endif\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\tpcFragColor0 = getPickOutput();\n\t\t#ifdef DEPTH_PICK_PASS\n\t\t\tpcFragColor1 = getPickDepth();\n\t\t#endif\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#ifdef DEPTH_PICK_PASS\n\t#include \"floatAsUintPS\"\n\tvec4 getPickDepth() {\n\t\treturn float2uint(gl_FragCoord.z);\n\t}\n#endif\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\t#ifdef SCENE_COLORMAP_GAMMA\n\t\trefraction = decodeGamma(refraction);\n\t#endif\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 = vec3(1.0);\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 * 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 * 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#ifdef VERTEX_COLOR\n\tfn decodeGamma3(raw: vec3f) -> vec3f {\n\t\treturn pow(raw, vec3f(2.2));\n\t}\n\tfn gammaCorrectInputVec4(color: vec4f) -> vec4f {\n\t\treturn vec4f(decodeGamma3(color.xyz), color.w);\n\t}\n#endif\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\t#ifdef STD_VERTEX_COLOR_GAMMA\n\t\t\toutput.vVertexColor = gammaCorrectInputVec4(vertex_color);\n\t\t#else\n\t\t\toutput.vVertexColor = vertex_color;\n\t\t#endif\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\t#ifdef DEPTH_PICK_PASS\n\t\t\toutput.color1 = getPickDepth();\n\t\t#endif\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#ifdef DEPTH_PICK_PASS\n\t#include \"floatAsUintPS\"\n\tfn getPickDepth() -> vec4f {\n\t\treturn float2uint(pcPosition.z);\n\t}\n#endif\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\tvar refraction: vec3f = textureSampleLevel(uSceneColorMap, uSceneColorMapSampler, uv, refractionLod).rgb;\n\t#ifdef SCENE_COLORMAP_GAMMA\n\t\trefraction = decodeGamma3(refraction);\n\t#endif\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 = vec3f(1.0);\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.requestAnimationFrame();\n\t\t}\n\t\trequestAnimationFrame() {\n\t\t\t\tif (this.xr?.session) {\n\t\t\t\t\t\tthis.frameRequestId = this.xr.session.requestAnimationFrame(this.tick);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.frameRequestId = platform.browser || platform.worker ? requestAnimationFrame(this.tick) : null;\n\t\t\t\t}\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\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.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\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.scene.destroy();\n\t\t\t\tthis.scene = 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\tcancelAnimationFrame(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\tapplication.requestAnimationFrame();\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\tconst device = this.device;\n\t\t\t\tconst { renderer, camera, receivers, renderTarget, worldClusters, lightArray } = this;\n\t\t\t\tif (device.supportsUniformBuffers && !renderer.viewUniformFormat) {\n\t\t\t\t\t\trenderer.initViewBindGroupFormat(renderer.scene.clusteredLightingEnabled);\n\t\t\t\t}\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\tvalue = math.clamp(value, 0, 0x7F);\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 (!args) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (!args.type) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\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.splatBudget = 0;\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 NodeInfo {\n\t\treset() {\n\t\t\t\tthis.currentLod = -1;\n\t\t\t\tthis.optimalLod = -1;\n\t\t\t\tthis.importance = 0;\n\t\t}\n\t\tconstructor(){\n\t\t\t\tthis.currentLod = -1;\n\t\t\t\tthis.optimalLod = -1;\n\t\t\t\tthis.importance = 0;\n\t\t}\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(device, octree, placement){\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.splatBudget = 0;\n\t\t\t\tthis._nodeIndices = null;\n\t\t\t\tthis.environmentPlacement = null;\n\t\t\t\tthis._deviceLostEvent = null;\n\t\t\t\tthis.device = device;\n\t\t\t\tthis.octree = octree;\n\t\t\t\tthis.placement = placement;\n\t\t\t\tthis.nodeInfos = new Array(octree.nodes.length);\n\t\t\t\tfor(let i = 0; i < octree.nodes.length; i++){\n\t\t\t\t\t\tthis.nodeInfos[i] = new NodeInfo();\n\t\t\t\t}\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();\n\t\t\t\t}\n\t\t\t\tthis._deviceLostEvent = device.on('devicelost', this._onDeviceLost, this);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tif (this.octree && !this.octree.destroyed) {\n\t\t\t\t\t\tconst filesToDecRef = this.getFileDecrements();\n\t\t\t\t\t\tfor (const fileIndex of filesToDecRef){\n\t\t\t\t\t\t\t\tthis.octree.decRefCount(fileIndex, 0);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor (const fileIndex of this.pending){\n\t\t\t\t\t\t\t\tif (!this.filePlacements[fileIndex]) {\n\t\t\t\t\t\t\t\t\t\tthis.octree.unloadResource(fileIndex);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor (const fileIndex of this.prefetchPending){\n\t\t\t\t\t\t\t\tif (!this.filePlacements[fileIndex]) {\n\t\t\t\t\t\t\t\t\t\tthis.octree.unloadResource(fileIndex);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.environmentPlacement) {\n\t\t\t\t\t\t\t\tthis.octree.decEnvironmentRefCount();\n\t\t\t\t\t\t}\n\t\t\t\t}\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.environmentPlacement = null;\n\t\t\t\t}\n\t\t\t\tthis._deviceLostEvent?.off();\n\t\t\t\tthis._deviceLostEvent = null;\n\t\t}\n\t\t_onDeviceLost() {\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\tthis.octree.decRefCount(i, 0);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.filePlacements.fill(null);\n\t\t\t\tthis.activePlacements.clear();\n\t\t\t\tthis.pending.clear();\n\t\t\t\tthis.pendingDecrements.clear();\n\t\t\t\tthis.removedCandidates.clear();\n\t\t\t\tthis.prefetchPending.clear();\n\t\t\t\tthis.pendingVisibleAdds.clear();\n\t\t\t\tfor (const nodeInfo of this.nodeInfos){\n\t\t\t\t\t\tnodeInfo.reset();\n\t\t\t\t}\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.environmentPlacement = null;\n\t\t\t\t\t\tthis.octree.unloadEnvironmentResource();\n\t\t\t\t}\n\t\t\t\tthis.dirtyModifiedPlacements = true;\n\t\t\t\tthis.needsLodUpdate = true;\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);\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);\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 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 { lodRangeMin, lodRangeMax } = 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 totalOptimalSplats = this.evaluateNodeLods(cameraNode, maxLod, lodDistances, rangeMin, rangeMax, params);\n\t\t\t\tif (this.splatBudget > 0) {\n\t\t\t\t\t\tthis.enforceSplatBudget(totalOptimalSplats, this.splatBudget, rangeMin, rangeMax);\n\t\t\t\t}\n\t\t\t\tthis.applyLodChanges(maxLod, params);\n\t\t}\n\t\tevaluateNodeLods(cameraNode, maxLod, lodDistances, rangeMin, rangeMax, params) {\n\t\t\t\tconst { lodBehindPenalty } = 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 nodes = this.octree.nodes;\n\t\t\t\tconst nodeInfos = this.nodeInfos;\n\t\t\t\tlet totalSplats = 0;\n\t\t\t\tconst maxDistance = lodDistances[rangeMax] || 100;\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\tnode.bounds.closestPoint(localCameraPosition, _dirToNode);\n\t\t\t\t\t\t_dirToNode.sub(localCameraPosition);\n\t\t\t\t\t\tconst actualDistance = _dirToNode.length();\n\t\t\t\t\t\tlet penalizedDistance = actualDistance;\n\t\t\t\t\t\tlet importanceMultiplier = 1.0;\n\t\t\t\t\t\tif (lodBehindPenalty > 1 && actualDistance > 0.01) {\n\t\t\t\t\t\t\t\tconst dotOverDistance = localCameraForward.dot(_dirToNode) / actualDistance;\n\t\t\t\t\t\t\t\tif (dotOverDistance < 0) {\n\t\t\t\t\t\t\t\t\t\tconst t = -dotOverDistance;\n\t\t\t\t\t\t\t\t\t\tconst factor = 1 + t * (lodBehindPenalty - 1);\n\t\t\t\t\t\t\t\t\t\tpenalizedDistance = actualDistance * factor;\n\t\t\t\t\t\t\t\t\t\timportanceMultiplier = 1.0 / factor;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlet optimalLodIndex = maxLod;\n\t\t\t\t\t\tfor(let lod = 0; lod < maxLod; lod++){\n\t\t\t\t\t\t\t\tif (penalizedDistance < lodDistances[lod]) {\n\t\t\t\t\t\t\t\t\t\toptimalLodIndex = lod;\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 (optimalLodIndex < rangeMin) optimalLodIndex = rangeMin;\n\t\t\t\t\t\tif (optimalLodIndex > rangeMax) optimalLodIndex = rangeMax;\n\t\t\t\t\t\tconst normalizedDistance = Math.min(actualDistance / maxDistance, 1.0);\n\t\t\t\t\t\tconst importance = (1.0 - normalizedDistance) * importanceMultiplier;\n\t\t\t\t\t\tnodeInfos[nodeIndex].optimalLod = optimalLodIndex;\n\t\t\t\t\t\tnodeInfos[nodeIndex].importance = importance;\n\t\t\t\t\t\tconst lod = nodes[nodeIndex].lods[optimalLodIndex];\n\t\t\t\t\t\tif (lod && lod.count) {\n\t\t\t\t\t\t\t\ttotalSplats += lod.count;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn totalSplats;\n\t\t}\n\t\tenforceSplatBudget(totalSplats, splatBudget, rangeMin, rangeMax) {\n\t\t\t\tconst nodes = this.octree.nodes;\n\t\t\t\tconst nodeInfos = this.nodeInfos;\n\t\t\t\tif (!this._nodeIndices) {\n\t\t\t\t\t\tthis._nodeIndices = new Uint32Array(nodes.length);\n\t\t\t\t\t\tfor(let i = 0; i < nodes.length; i++){\n\t\t\t\t\t\t\t\tthis._nodeIndices[i] = i;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst nodeIndices = this._nodeIndices;\n\t\t\t\tnodeIndices.sort((a, b)=>nodeInfos[a].importance - nodeInfos[b].importance);\n\t\t\t\tlet currentSplats = totalSplats;\n\t\t\t\tif (currentSplats === splatBudget) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst isOverBudget = currentSplats > splatBudget;\n\t\t\t\tconst lodDelta = isOverBudget ? 1 : -1;\n\t\t\t\twhile(isOverBudget ? currentSplats > splatBudget : currentSplats < splatBudget){\n\t\t\t\t\t\tlet modified = false;\n\t\t\t\t\t\tif (isOverBudget) {\n\t\t\t\t\t\t\t\tfor(let i = 0; i < nodeIndices.length; i++){\n\t\t\t\t\t\t\t\t\t\tconst nodeIndex = nodeIndices[i];\n\t\t\t\t\t\t\t\t\t\tconst nodeInfo = nodeInfos[nodeIndex];\n\t\t\t\t\t\t\t\t\t\tconst node = nodes[nodeIndex];\n\t\t\t\t\t\t\t\t\t\tconst currentOptimalLod = nodeInfo.optimalLod;\n\t\t\t\t\t\t\t\t\t\tif (currentOptimalLod < rangeMax) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst currentLod = node.lods[currentOptimalLod];\n\t\t\t\t\t\t\t\t\t\t\t\tconst nextLod = node.lods[currentOptimalLod + 1];\n\t\t\t\t\t\t\t\t\t\t\t\tconst splatsSaved = currentLod.count - nextLod.count;\n\t\t\t\t\t\t\t\t\t\t\t\tnodeInfo.optimalLod += lodDelta;\n\t\t\t\t\t\t\t\t\t\t\t\tcurrentSplats -= splatsSaved;\n\t\t\t\t\t\t\t\t\t\t\t\tmodified = true;\n\t\t\t\t\t\t\t\t\t\t\t\tif (currentSplats <= splatBudget) {\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} else {\n\t\t\t\t\t\t\t\tfor(let i = nodeIndices.length - 1; i >= 0; i--){\n\t\t\t\t\t\t\t\t\t\tconst nodeIndex = nodeIndices[i];\n\t\t\t\t\t\t\t\t\t\tconst nodeInfo = nodeInfos[nodeIndex];\n\t\t\t\t\t\t\t\t\t\tconst node = nodes[nodeIndex];\n\t\t\t\t\t\t\t\t\t\tconst currentOptimalLod = nodeInfo.optimalLod;\n\t\t\t\t\t\t\t\t\t\tif (currentOptimalLod > rangeMin) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst currentLod = node.lods[currentOptimalLod];\n\t\t\t\t\t\t\t\t\t\t\t\tconst nextLod = node.lods[currentOptimalLod - 1];\n\t\t\t\t\t\t\t\t\t\t\t\tconst splatsAdded = nextLod.count - currentLod.count;\n\t\t\t\t\t\t\t\t\t\t\t\tif (currentSplats + splatsAdded <= splatBudget) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnodeInfo.optimalLod += lodDelta;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcurrentSplats += splatsAdded;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmodified = true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (currentSplats >= splatBudget) {\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}\n\t\t\t\t\t\tif (!modified) {\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\tapplyLodChanges(maxLod, params) {\n\t\t\t\tconst nodes = this.octree.nodes;\n\t\t\t\tconst { lodUnderfillLimit = 0 } = params;\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\tconst nodeInfo = this.nodeInfos[nodeIndex];\n\t\t\t\t\t\tconst optimalLodIndex = nodeInfo.optimalLod;\n\t\t\t\t\t\tconst currentLodIndex = nodeInfo.currentLod;\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\tnodeInfo.currentLod = 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\tnodeInfo.currentLod = -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\tnodeInfo.currentLod = 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);\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\tconst currentBudget = this.placement.splatBudget;\n\t\t\t\tif (currentBudget !== this.splatBudget) {\n\t\t\t\t\t\tthis.splatBudget = currentBudget;\n\t\t\t\t\t\tthis.needsLodUpdate = true;\n\t\t\t\t}\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);\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.nodeInfos[nodeIndex].currentLod = 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();\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);\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.assetLoader = null;\n\t\t\t\tthis.destroyed = false;\n\t\t\t\tthis.cooldownTicks = 100;\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\tdestroy() {\n\t\t\t\tthis.destroyed = true;\n\t\t\t\tthis.fileResources.clear();\n\t\t\t\tthis.cooldowns.clear();\n\t\t\t\tthis.assetLoader?.destroy();\n\t\t\t\tthis.assetLoader = null;\n\t\t\t\tthis.environmentResource = null;\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\tif (cooldownTicks === 0) {\n\t\t\t\t\t\t\t\tthis.unloadResource(fileIndex);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.cooldowns.set(fileIndex, cooldownTicks);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tunloadResource(fileIndex) {\n\t\t\t\tif (!this.assetLoader) {\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\tthis.assetLoader.unload(fullUrl);\n\t\t\t\tif (this.fileResources.has(fileIndex)) {\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(cooldownTicks) {\n\t\t\t\tthis.cooldownTicks = cooldownTicks;\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);\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) {\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 = this.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, this.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\tthis.assetLoader?.load(fullUrl);\n\t\t}\n\t\tincEnvironmentRefCount() {\n\t\t\t\tthis.environmentRefCount++;\n\t\t}\n\t\tdecEnvironmentRefCount() {\n\t\t\t\tthis.environmentRefCount--;\n\t\t\t\tif (this.environmentRefCount === 0) {\n\t\t\t\t\t\tthis.unloadEnvironmentResource();\n\t\t\t\t}\n\t\t}\n\t\tensureEnvironmentResource() {\n\t\t\t\tif (!this.assetLoader) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\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 = this.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();\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.assetLoader.load(this.environmentUrl);\n\t\t}\n\t\tunloadEnvironmentResource() {\n\t\t\t\tif (!this.assetLoader) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this.environmentResource && this.environmentUrl) {\n\t\t\t\t\t\tthis.assetLoader.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, assetLoader){\n\t\t\t\tthis.aabb = new BoundingBox();\n\t\t\t\tthis.octree = new GSplatOctree(assetFileUrl, data);\n\t\t\t\tthis.octree.assetLoader = assetLoader;\n\t\t\t\tthis.aabb.setMinMax(new Vec3(data.tree.bound.min), new Vec3(data.tree.bound.max));\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.octree?.destroy();\n\t\t\t\tthis.octree = null;\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\t\t[\n\t\t\t\t0,\n\t\t\t\t1,\n\t\t\t\t1\n\t\t],\n\t\t[\n\t\t\t\t1,\n\t\t\t\t0.5,\n\t\t\t\t0\n\t\t],\n\t\t[\n\t\t\t\t0.5,\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\t\tnew Color(0, 1, 1),\n\t\tnew Color(1, 0.5, 0),\n\t\tnew Color(0.5, 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}\n\t\tdestroy() {\n\t\t\t\tthis._destroyed = true;\n\t\t\t\tfor (const [, worldState] of this.worldStates){\n\t\t\t\t\t\tfor (const splat of worldState.splats){\n\t\t\t\t\t\t\t\tsplat.resource.decRefCount();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tworldState.destroy();\n\t\t\t\t}\n\t\t\t\tthis.worldStates.clear();\n\t\t\t\tfor (const [, instance] of this.octreeInstances){\n\t\t\t\t\t\tinstance.destroy();\n\t\t\t\t}\n\t\t\t\tthis.octreeInstances.clear();\n\t\t\t\tfor (const instance of this.octreeInstancesToDestroy){\n\t\t\t\t\t\tinstance.destroy();\n\t\t\t\t}\n\t\t\t\tthis.octreeInstancesToDestroy.length = 0;\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(this.device, p.resource.octree, p));\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 splat of newState.splats){\n\t\t\t\t\t\t\t\tsplat.resource.incRefCount();\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\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\tfor (const splat of oldState.splats){\n\t\t\t\t\t\t\t\t\t\tsplat.resource.decRefCount();\n\t\t\t\t\t\t\t\t}\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\tconst cooldownTicks = this.scene.gsplat.cooldownTicks;\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, 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\tconst cooldownTicks = this.scene.gsplat.cooldownTicks;\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(cooldownTicks);\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\nconst tempLayersToRemove = [];\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, 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.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\ttempLayersToRemove.push(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\t\tfor(let i = 0; i < tempLayersToRemove.length; i++){\n\t\t\t\t\t\t\t\t\t\tconst layer = tempLayersToRemove[i];\n\t\t\t\t\t\t\t\t\t\tconst layerData = cameraData.layersMap.get(layer);\n\t\t\t\t\t\t\t\t\t\tif (layerData) {\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\t\ttempLayersToRemove.length = 0;\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._splatBudget = 0, 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 splatBudget(value) {\n\t\t\t\tthis._splatBudget = value;\n\t\t\t\tif (this._placement) {\n\t\t\t\t\t\tthis._placement.splatBudget = this._splatBudget;\n\t\t\t\t}\n\t\t}\n\t\tget splatBudget() {\n\t\t\t\treturn this._splatBudget;\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\t\tthis._placement.splatBudget = this._splatBudget;\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.addToLayers();\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) {\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\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, inout 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\tpcFragColor0 = getPickOutput();\n\t\t#ifdef DEPTH_PICK_PASS\n\t\t\tpcFragColor1 = getPickDepth();\n\t\t#endif\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\t#ifdef DEPTH_PICK_PASS\n\t\t\toutput.color1 = getPickDepth();\n\t\t#endif\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\tapp.renderer.gsplatDirector = new GSplatDirector(app.graphicsDevice, app.renderer, app.scene, 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\t_shouldAbort(asset, unloaded) {\n\t\t\t\tif (unloaded || !this.app.assets.get(asset.id)) return true;\n\t\t\t\tif (!this.app?.graphicsDevice || this.app.graphicsDevice._destroyed) return true;\n\t\t\t\treturn false;\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\t\t\tcrossOrigin: 'anonymous'\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\tlet unloaded = false;\n\t\t\t\tasset.once('unload', ()=>{\n\t\t\t\t\t\tunloaded = true;\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\tif (this._shouldAbort(asset, unloaded)) {\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\t\tcallback(null, null);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst data = new GSplatSogsData();\n\t\t\t\tdata.url = url.original;\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\tconst minimalMemory = asset.options?.minimalMemory ?? false;\n\t\t\t\tdata.minimalMemory = minimalMemory;\n\t\t\t\tif (!decompress) {\n\t\t\t\t\t\tif (this._shouldAbort(asset, unloaded)) {\n\t\t\t\t\t\t\t\tdata.destroy();\n\t\t\t\t\t\t\t\tcallback(null, null);\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tawait data.prepareGpuData();\n\t\t\t\t}\n\t\t\t\tif (this._shouldAbort(asset, unloaded)) {\n\t\t\t\t\t\tdata.destroy();\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\tconst resource = decompress ? new GSplatResource(this.app.graphicsDevice, await data.decompress()) : new GSplatSogsResource(this.app.graphicsDevice, data);\n\t\t\t\tif (this._shouldAbort(asset, unloaded)) {\n\t\t\t\t\t\tresource.destroy();\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\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 (this._shouldAbort(asset, false)) {\n\t\t\t\t\t\t\t\t\t\tcallback(null, null);\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 (!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\t\t\t\tcrossOrigin: 'anonymous'\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\t\t\t\tcrossOrigin: 'anonymous'\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 decompress = asset.data?.decompress;\n\t\t\t\t\t\tconst minimalMemory = asset.options?.minimalMemory ?? false;\n\t\t\t\t\t\tconst data = new GSplatSogsData();\n\t\t\t\t\t\tdata.url = url.original;\n\t\t\t\t\t\tdata.minimalMemory = minimalMemory;\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\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 GSplatAssetLoaderBase {\n\t\tload(url) {}\n\t\tunload(url) {}\n\t\tgetResource(url) {}\n\t\tdestroy() {}\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(), this._destroyed = false;\n\t\t\t\tthis._registry = registry;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis._destroyed = true;\n\t\t\t\tfor (const asset of this._urlToAsset.values()){\n\t\t\t\t\t\tasset.fire('unload', 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}\n\t\t\t\tthis._urlToAsset.clear();\n\t\t\t\tthis._loadQueue.length = 0;\n\t\t\t\tthis._currentlyLoading.clear();\n\t\t\t\tthis._retryCount.clear();\n\t\t}\n\t\t_canLoad() {\n\t\t\t\treturn !!this._registry.loader?.getHandler('gsplat');\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 = new Asset(url, 'gsplat', {\n\t\t\t\t\t\t\t\turl\n\t\t\t\t\t\t}, {}, {\n\t\t\t\t\t\t\t\tminimalMemory: true\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis._registry.add(asset);\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\tif (this._destroyed || !this._urlToAsset.has(url)) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\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\tif (this._destroyed || !this._canLoad() || !this._urlToAsset.has(url)) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\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\tif (this._destroyed || !this._canLoad()) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\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.fire('unload', 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\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 assetLoader = new GSplatAssetLoader(this.app.assets);\n\t\t\t\t\t\t\t\tconst resource = new GSplatOctreeResource(asset.file.url, data, assetLoader);\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.requestAnimationFrame();\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.requestAnimationFrame();\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, depth) {\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\tthis.depth = depth;\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.initViewBindGroupFormat(clusteredLightingEnabled);\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\tconst shaderPass = this.depth ? SHADER_DEPTH_PICK : SHADER_PICK;\n\t\t\t\t\t\t\t\t\t\t\t\trenderer.renderForward(camera.camera, renderTarget, tempMeshInstances$1, lights, shaderPass, (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();\nconst _floatView = new Float32Array(1);\nconst _int32View = new Int32Array(_floatView.buffer);\nclass Picker {\n\t\tconstructor(app, width, height, depth = false){\n\t\t\t\tthis.renderTarget = null;\n\t\t\t\tthis.colorBuffer = null;\n\t\t\t\tthis.depthBuffer = null;\n\t\t\t\tthis.renderTargetDepth = null;\n\t\t\t\tthis.mapping = new Map();\n\t\t\t\tthis.deviceValid = true;\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.depth = depth;\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.allocateRenderTarget();\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\tdestroy() {\n\t\t\t\tthis.releaseRenderTarget();\n\t\t\t\tthis.renderPass?.destroy();\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.renderTarget || !this.renderTarget.colorBuffer) {\n\t\t\t\t\t\treturn Promise.resolve([]);\n\t\t\t\t}\n\t\t\t\treturn this._readTexture(this.renderTarget.colorBuffer, x, y, width, height, this.renderTarget).then((pixels)=>{\n\t\t\t\t\t\treturn this.decodePixels(pixels, this.mapping);\n\t\t\t\t});\n\t\t}\n\t\t_readTexture(texture, x, y, width, height, renderTarget) {\n\t\t\t\tif (this.device?.isWebGL2) {\n\t\t\t\t\t\ty = 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 texture.read(rect.x, rect.y, rect.z, rect.w, {\n\t\t\t\t\t\timmediate: true,\n\t\t\t\t\t\trenderTarget: renderTarget\n\t\t\t\t});\n\t\t}\n\t\tasync getWorldPointAsync(x, y) {\n\t\t\t\tconst camera = this.renderPass.camera;\n\t\t\t\tif (!camera) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tconst viewProjMat = new Mat4().mul2(camera.camera.projectionMatrix, camera.camera.viewMatrix);\n\t\t\t\tconst invViewProj = viewProjMat.invert();\n\t\t\t\tconst depth = await this.getPointDepthAsync(x, y);\n\t\t\t\tif (depth === null) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tconst deviceCoord = new Vec4(x / this.width * 2 - 1, (1 - y / this.height) * 2 - 1, depth * 2 - 1, 1.0);\n\t\t\t\tinvViewProj.transformVec4(deviceCoord, deviceCoord);\n\t\t\t\tdeviceCoord.mulScalar(1.0 / deviceCoord.w);\n\t\t\t\treturn new Vec3(deviceCoord.x, deviceCoord.y, deviceCoord.z);\n\t\t}\n\t\tasync getPointDepthAsync(x, y) {\n\t\t\t\tif (!this.depthBuffer) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tconst pixels = await this._readTexture(this.depthBuffer, x, y, 1, 1, this.renderTargetDepth);\n\t\t\t\tconst intBits = pixels[0] << 24 | pixels[1] << 16 | pixels[2] << 8 | pixels[3];\n\t\t\t\tif (intBits === 0xFFFFFFFF) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\t_int32View[0] = intBits;\n\t\t\t\treturn _floatView[0];\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\tcreateTexture(name) {\n\t\t\t\treturn 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: name\n\t\t\t\t});\n\t\t}\n\t\tallocateRenderTarget() {\n\t\t\t\tthis.colorBuffer = this.createTexture('pick');\n\t\t\t\tconst colorBuffers = [\n\t\t\t\t\t\tthis.colorBuffer\n\t\t\t\t];\n\t\t\t\tif (this.depth) {\n\t\t\t\t\t\tthis.depthBuffer = this.createTexture('pick-depth');\n\t\t\t\t\t\tcolorBuffers.push(this.depthBuffer);\n\t\t\t\t\t\tthis.renderTargetDepth = new RenderTarget({\n\t\t\t\t\t\t\t\tcolorBuffer: this.depthBuffer,\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.renderTarget = new RenderTarget({\n\t\t\t\t\t\tcolorBuffers: colorBuffers,\n\t\t\t\t\t\tdepth: true\n\t\t\t\t});\n\t\t}\n\t\treleaseRenderTarget() {\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\tthis.renderTargetDepth?.destroy();\n\t\t\t\tthis.renderTargetDepth = null;\n\t\t\t\tthis.colorBuffer = null;\n\t\t\t\tthis.depthBuffer = null;\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\tthis.renderTarget?.resize(this.width, this.height);\n\t\t\t\tthis.renderTargetDepth?.resize(this.width, this.height);\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.setClearColor(Color.WHITE);\n\t\t\t\trenderPass.depthStencilOps.clearDepth = true;\n\t\t\t\trenderPass.update(camera, scene, layers, this.mapping, this.depth);\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 shaderOutlineExtendWGSL = `\n\tvarying vUv0: vec2f;\n\tuniform uOffset: vec2f;\n\tuniform uSrcMultiplier: f32;\n\tvar source: texture_2d<f32>;\n\tvar sourceSampler: sampler;\n\t@fragment\n\tfn fragmentMain(input: FragmentInput) -> FragmentOutput {\n\t\tvar output: FragmentOutput;\n\t\t\n\t\tvar pixel: vec4f;\n\t\tvar texel = textureSample(source, sourceSampler, input.vUv0);\n\t\tlet firstTexel = texel;\n\t\tvar diff = texel.a * uniform.uSrcMultiplier;\n\t\tpixel = textureSample(source, sourceSampler, input.vUv0 + uniform.uOffset * -2.0);\n\t\ttexel = max(texel, pixel);\n\t\tdiff = max(diff, length(firstTexel.rgb - pixel.rgb));\n\t\tpixel = textureSample(source, sourceSampler, input.vUv0 + uniform.uOffset * -1.0);\n\t\ttexel = max(texel, pixel);\n\t\tdiff = max(diff, length(firstTexel.rgb - pixel.rgb));\n\t\tpixel = textureSample(source, sourceSampler, input.vUv0 + uniform.uOffset * 1.0);\n\t\ttexel = max(texel, pixel);\n\t\tdiff = max(diff, length(firstTexel.rgb - pixel.rgb));\n\t\tpixel = textureSample(source, sourceSampler, input.vUv0 + uniform.uOffset * 2.0);\n\t\ttexel = max(texel, pixel);\n\t\tdiff = max(diff, length(firstTexel.rgb - pixel.rgb));\n\t\toutput.color = vec4f(texel.rgb, min(diff, 1.0));\n\t\treturn output;\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\tvertexChunk: 'fullscreenQuadVS',\n\t\t\t\t\t\tfragmentGLSL: shaderOutlineExtendPS,\n\t\t\t\t\t\tfragmentWGSL: shaderOutlineExtendWGSL\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_DEPTH_PICK, 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_ASSETS, 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/e3f4bd58/\";\nexport const SCRIPT_PREFIX = \"\";\nexport const SCENE_PATH = \"2394371.json\";\n\nexport const CONTEXT_OPTIONS = {\n    'antialias': false,\n    'alpha': false,\n    'preserveDrawingBuffer': false,\n    'deviceTypes': [`webgl2`, `webgl1`],\n    'powerPreference': \"high-performance\"\n};\n\nexport const SCRIPTS = [ 269391347, 269391452 ];\nexport const CONFIG_FILENAME = \"https://s3-eu-west-1.amazonaws.com/apps.playcanvas.com/e3f4bd58/config.json\";\nexport const INPUT_SETTINGS = {\n    useKeyboard: true,\n    useMouse: true,\n    useGamepads: false,\n    useTouch: true\n};\nexport const PRELOAD_MODULES = [\n];\n    \nscript.legacy = false;\n","import { ASSET_PREFIX } from './__settings__.js';\n\npc.script.createLoadingScreen((app) => {\n    const createCss = () => {\n        const css = `\n            body {\n                background-color: #283538;\n            }\n\n            #application-splash-wrapper {\n                position: absolute;\n                top: 0;\n                left: 0;\n                height: 100%;\n                width: 100%;\n                background-color: #283538;\n            }\n\n            #application-splash {\n                position: absolute;\n                top: calc(50% - 28px);\n                width: 264px;\n                left: calc(50% - 132px);\n            }\n\n            #application-splash img {\n                width: 100%;\n            }\n\n            #progress-bar-container {\n                margin: 20px auto 0 auto;\n                height: 2px;\n                width: 100%;\n                background-color: #1d292c;\n            }\n\n            #progress-bar {\n                width: 0%;\n                height: 100%;\n                background-color: #f60;\n            }\n\n            @media (max-width: 480px) {\n                #application-splash {\n                    width: 170px;\n                    left: calc(50% - 85px);\n                }\n            }\n        `;\n\n        const style = document.createElement('style');\n        style.textContent = css;\n        document.head.appendChild(style);\n    };\n\n    const showSplash = () => {\n        const wrapper = document.createElement('div');\n        wrapper.id = 'application-splash-wrapper';\n        document.body.appendChild(wrapper);\n\n        const splash = document.createElement('div');\n        splash.id = 'application-splash';\n        wrapper.appendChild(splash);\n        splash.style.display = 'none';\n\n        const logo = document.createElement('img');\n        logo.src = `${ASSET_PREFIX}logo.png`;\n        splash.appendChild(logo);\n        logo.onload = () => {\n            splash.style.display = 'block';\n        };\n\n        const container = document.createElement('div');\n        container.id = 'progress-bar-container';\n        splash.appendChild(container);\n\n        const bar = document.createElement('div');\n        bar.id = 'progress-bar';\n        container.appendChild(bar);\n    };\n\n    const setProgress = (value) => {\n        const 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    const hideSplash = () => {\n        document.getElementById('application-splash-wrapper').remove();\n    };\n\n    createCss();\n    showSplash();\n\n    app.on('preload:end', () => {\n        app.off('preload:progress');\n    });\n    app.on('preload:progress', setProgress);\n    app.on('start', hideSplash);\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_ASSETS","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","srcPath","URL","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","hasTranspilers","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","SHADER_DEPTH_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","shaderOutputGamma","_fog","_toneMapping","_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","splatBudget","colorRamp","_colorRamp","debugAabbs","radialSorting","debugNodeAabbs","lodUpdateDistance","lodUpdateAngle","colorRampIntensity","colorizeColorUpdate","colorUpdateDistance","colorUpdateAngle","colorUpdateDistanceLodScale","colorUpdateAngleLodScale","cooldownTicks","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","useVertexColorGamma","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","vertexColorGamma","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","deviceRestoredEvent","destroyed","_centers","isSogs","_shBands","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","shBandsWidths","urlSuffix","minimalMemory","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","loader","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","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","requestAnimationFrame","frameRequestId","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","cancelAnimationFrame","getEntityFromIndex","timeScale","maxDeltaTime","autoRender","renderNextFrame","application","xrFrame","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","NodeInfo","currentLod","optimalLod","importance","GSplatOctreeInstance","pendingLoadCount","prefetchPending","environmentUrl","environmentPlacement","filesToDecRef","getFileDecrements","fileIndex","filePlacements","unloadResource","decEnvironmentRefCount","pendingDecrements","activePlacements","removedCandidates","pendingVisibleAdds","nodeInfo","nodeInfos","unloadEnvironmentResource","dirtyModifiedPlacements","needsLodUpdate","toRelease","calculateNodeLod","localCameraPosition","localCameraForward","maxLod","dotOverDistance","lod","selectDesiredLodIndex","optimalLodIndex","allowedMaxCoarseLod","fi","lods","getFileResource","prefetchNextLod","desiredLodIndex","ensureFileResource","targetLod","updateLod","rangeMin","rangeMax","totalOptimalSplats","evaluateNodeLods","enforceSplatBudget","applyLodChanges","worldCameraPosition","octreeWorldTransform","worldCameraForward","totalSplats","actualDistance","penalizedDistance","importanceMultiplier","normalizedDistance","_nodeIndices","nodeIndices","currentSplats","isOverBudget","lodDelta","currentOptimalLod","nextLod","splatsSaved","splatsAdded","currentLodIndex","currentFileIndex","desiredFileIndex","willBeVisible","pendingEntry","newFileIndex","prevPendingPlacement","decrementFileRef","oldFileIndex","prevPendingFi","incrementFileRef","newPlacement","pendingEntry2","removeScheduled","addFilePlacement","testMoved","threshold","previousPosition","updateMoved","currentBudget","newLodIndex","nodeLods","li","pollPrefetchCompletions","ensureEnvironmentResource","envResource","environmentResource","debugRender","consumeNeedsLodUpdate","files","incEnvironmentRefCount","tmpMin","tmpMax","GSplatOctreeNode","boundData","_toDelete","GSplatOctree","fileResources","cooldowns","assetLoader","_traceLodCounts","_extractLeafNodes","leafNodes","bound","fileRefCounts","fullUrl","updateCooldownTick","remaining","getResource","environmentRefCount","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","worldState","worldStates","octreeInstances","octreeInstancesToDestroy","createSorter","reconcile","placements","hasNewOctreeInstances","inst","layerPlacementsDirty","layerPlacements","updateWorldState","worldChanged","lastWorldStateVersion","newState","sortNeeded","sortedVersion","oldState","getDebugColors","updateColorCameraTracking","testCameraMovedForLod","distanceThreshold","currentCameraPos","cameraMoved","lastLodCameraPos","cameraRotated","lodUpdateAngleDeg","lastLodCameraFwd","currentCameraFwd","rotThreshold","testCameraMovedForSort","lastSortCameraPos","lastSortCameraFwd","lastColorUpdateCameraPos","lastColorUpdateCameraFwd","calculateColorCameraDeltas","fireFrameReadyEvent","loadingCount","director","fullUpdate","framesTillFullUpdate","hasNewInstances","anyInstanceNeedsLodUpdate","anyOctreeMoved","cameraMovedOrRotatedForLod","instNeeds","moved","lastState","prepareSortParameters","sortedState","distThreshold","angleThreshold","sorterRequest","tempLayersToRemove","GSplatLayerData","gsplatManager","GSplatCameraData","layersMap","layerData","removeLayerData","getLayerData","GSplatDirector","camerasMap","cameraData","getCameraData","gsplatCount","camerasComponents","GSplatComponent","_instance","_placement","destroyInstance","unified","_materialTmp","_highQualitySH","_splatBudget","_unified","_onGSplatAssetAdded","_onGSplatAssetRemove","_onGSplatAssetLoad","_onGSplatAssetUnload","GSplatComponentData","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","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","_shouldAbort","unloaded","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","GSplatAssetLoaderBase","GSplatAssetLoader","_loadQueue","_currentlyLoading","_retryCount","_canLoad","maxConcurrentLoads","_startLoading","_onAssetLoadSuccess","_onAssetLoadError","_processQueue","retryCount","queueIndex","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","_floatView","_int32View","Picker","getSelection","sanitizeRect","decodePixels","getSelectionAsync","_readTexture","getWorldPointAsync","invViewProj","getPointDepthAsync","deviceCoord","renderTargetDepth","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","shaderOutlineExtendWGSL","_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","createCss","css","showSplash","wrapper","splash","logo","bar","setProgress","getElementById","hideSplash"],"mappings":"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C,qBAAAA,CAAwB,CAC5B,CACE,MAAA,CACD,CACD,CACE,MACD,CACD,CACE,KACD,CAAA,CACD,CACE,OACA,CAAA,WAAA,CACD,CACD,CACE,QACA,WACD,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,YACD,CAAA,CACD,CACE,YAAA,CACD,CACD,CACE,YAAA,CACD,CACD,CACE,UACA,aACD,CAAA,CACD,CACE,SAAA,CACA,cACD,CACD,CACE,SACA,CAAA,aAAA,CACD,CACD,CACE,iBAAA,CACD,CACD,CACE,oBACD,CACD,CACE,YACD,CAAA,CACD,CACE,kBACD,CAAA,CACD,CACE,oBAAA,CACD,CACD,CACE,iBAAA,CACD,CACD,CACE,kBACD,CAAA,CACD,CACE,kBAAA,CACD,CACD,CACE,kBAAA,CACD,CACD,CACE,qBACD,CACD,CACE,uBACD,CAAA,CACD,CACE,KACD,CAAA,CACD,CACE,OAAA,CACA,YACD,CACD,CACE,OACA,CAAA,WAAA,CACD,CACD,CACE,OAAA,CACA,WACD,CAAA,CACD,CACE,YACD,CAAA,CACD,CACE,YAAA,CACD,CACD,CACE,aAAA,CACD,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,eACA,kBACD,CAAA,CACD,CACE,cAAA,CACA,mBACD,CACD,CACE,cACA,CAAA,mBAAA,CACD,CACD,CACE,iBAAA,CACD,CACD,CACE,kBACD,CACD,CACE,mBACD,CAAA,CACD,CACE,mBACD,CAAA,CACD,CACE,iBAAA,CACD,CACD,CACE,iBAAA,CACD,CACD,CACE,wBACD,CACD,CACE,uBACD,CAAA,CACF,CACD,MAAMC,w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AAAA,CAAiB,CAAC;;;;;;;;;;;;;;;AAetB,CAAC,CAED,IAAIC,eAAAA,CAAkB,CAAC;;;;;;AAMvB,CAAC,CAED,MAAMC,kBAAqB,CAAA,CACzB3C,WACAC,UACAC,CAAAA,wBAAAA,CACAC,uBACAC,CAAAA,iBAAAA,CACAC,qBACAC,oBACAC,CAAAA,qBAAAA,CACAC,qBACAC,CAAAA,qBAAAA,CACAC,qBACAC,qBACAC,CAAAA,0BAAAA,CACAC,uBACAC,CAAAA,wBAAAA,CACAC,wBACAC,sBACAC,CAAAA,oBAAAA,CACAC,mBACAC,CAAAA,wBAAAA,CACAC,uBACAC,cACAC,CAAAA,kBAAAA,CACAC,qBACAC,CAAAA,cAAAA,CACAC,eACAC,sBACAC,CAAAA,eAAAA,CACAC,kBACAC,CAAAA,mBAAAA,CACAC,sBACAC,eACAC,CAAAA,iBAAAA,CACAC,oBACAC,CAAAA,qBAAAA,CACAC,sBACAC,iBACAC,CAAAA,iBAAAA,CACAC,eACAC,CAAAA,eAAAA,CACAC,mBACAC,cACAC,CAAAA,eACF,CAEA,CAAA,MAAME,UAAY,CAChB,SAAA,CACA,UACA,CAAA,cAAA,CACA,WACA,MACA,CAAA,OAAA,CACA,YACA,CAAA,aAAA,CACA,OACA,SACA,CAAA,UAAA,CACA,aACA,CAAA,WAAA,CACA,aACA,OACA,CAAA,gBAAA,CACA,MACA,CAAA,WAAA,CACA,UACA,eACA,CAAA,cAAA,CACA,gBACA,CAAA,qBAAA,CACA,gBACA,oBACA,CAAA,iBAAA,CACA,MACA,CAAA,YAAA,CACA,YACA,CAAA,aAAA,CACA,eACA,CAAA,gBAAA,CACA,OACA,WACA,CAAA,aAAA,CACA,aACA,CAAA,gBAAA,CACA,qBACA,qBACA,CAAA,eAAA,CACA,gBACA,CAAA,oBAAA,CACA,sBACA,kBACA,CAAA,mBAAA,CACA,YACA,CAAA,aAAA,CACA,aACA,aACA,CAAA,YAAA,CACA,aACA,CAAA,UAAA,CACA,YACA,YACA,CAAA,YAAA,CACA,gBACA,CAAA,eAAA,CACA,oBACA,WACA,CAAA,oBAAA,CACA,WACA,CA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"}