holostaff-widget 3.0.0 → 3.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{BufferResource-DeLlYxf8.js → BufferResource-6mO-PO_c.js} +4 -4
- package/dist/{BufferResource-DeLlYxf8.js.map → BufferResource-6mO-PO_c.js.map} +1 -1
- package/dist/{CanvasRenderer-BgLtSh22.js → CanvasRenderer-BL1L0Zug.js} +5 -5
- package/dist/{CanvasRenderer-BgLtSh22.js.map → CanvasRenderer-BL1L0Zug.js.map} +1 -1
- package/dist/{Geometry-Bdq2tsB3.js → Geometry-B-K9I6MO.js} +2 -2
- package/dist/{Geometry-Bdq2tsB3.js.map → Geometry-B-K9I6MO.js.map} +1 -1
- package/dist/{RenderTargetSystem-BCBByEgg.js → RenderTargetSystem-CahYKOD4.js} +3 -3
- package/dist/{RenderTargetSystem-BCBByEgg.js.map → RenderTargetSystem-CahYKOD4.js.map} +1 -1
- package/dist/{WebGLRenderer-3x7mgYt9.js → WebGLRenderer-Ci14rIHw.js} +5 -5
- package/dist/{WebGLRenderer-3x7mgYt9.js.map → WebGLRenderer-Ci14rIHw.js.map} +1 -1
- package/dist/{WebGPURenderer-CdbjQMqs.js → WebGPURenderer-SF1OSYpo.js} +6 -6
- package/dist/{WebGPURenderer-CdbjQMqs.js.map → WebGPURenderer-SF1OSYpo.js.map} +1 -1
- package/dist/{browserAll-DejMU3y7.js → browserAll-B97ymwYI.js} +3 -3
- package/dist/{browserAll-DejMU3y7.js.map → browserAll-B97ymwYI.js.map} +1 -1
- package/dist/{getTextureBatchBindGroup-CHJWR-eE.js → getTextureBatchBindGroup-BPB_9pp9.js} +3 -3
- package/dist/{getTextureBatchBindGroup-CHJWR-eE.js.map → getTextureBatchBindGroup-BPB_9pp9.js.map} +1 -1
- package/dist/hs-widget.es.js +1 -1
- package/dist/hs-widget.umd.js +60 -60
- package/dist/hs-widget.umd.js.map +1 -1
- package/dist/{index-C1ZbqCjI.js → index-qJyFW51-.js} +511 -502
- package/dist/index-qJyFW51-.js.map +1 -0
- package/dist/{webworkerAll-D5g5Ds7S.js → webworkerAll-DYG_wBG4.js} +3 -3
- package/dist/{webworkerAll-D5g5Ds7S.js.map → webworkerAll-DYG_wBG4.js.map} +1 -1
- package/package.json +1 -1
- package/dist/index-C1ZbqCjI.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { D as rt, a as y, E as N, B as nt } from "./index-
|
|
1
|
+
import { D as rt, a as y, E as N, B as nt } from "./index-qJyFW51-.js";
|
|
2
2
|
const P = /* @__PURE__ */ Object.create(null), Y = /* @__PURE__ */ Object.create(null);
|
|
3
3
|
function L(s, t) {
|
|
4
4
|
let e = Y[s];
|
|
@@ -1014,4 +1014,4 @@ export {
|
|
|
1014
1014
|
pt as g,
|
|
1015
1015
|
A as h
|
|
1016
1016
|
};
|
|
1017
|
-
//# sourceMappingURL=Geometry-
|
|
1017
|
+
//# sourceMappingURL=Geometry-B-K9I6MO.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Geometry-Bdq2tsB3.js","sources":["../node_modules/pixi.js/lib/rendering/renderers/shared/utils/createIdFromString.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/getTestContext.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/getMaxFragmentPrecision.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/preprocessors/addProgramDefines.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/preprocessors/ensurePrecision.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/preprocessors/insertVersion.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/preprocessors/setProgramName.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/preprocessors/stripVersion.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/GlProgram.mjs","../node_modules/pixi.js/lib/rendering/renderers/shared/geometry/utils/getAttributeInfoFromFormat.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/shader/utils/extractAttributesFromGpuProgram.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/shader/utils/extractStructAndGroups.mjs","../node_modules/pixi.js/lib/rendering/renderers/shared/shader/const.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/shader/utils/generateGpuLayoutGroups.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/shader/utils/generateLayoutHash.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/shader/utils/removeStructAndGroupDuplicates.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/shader/GpuProgram.mjs","../node_modules/pixi.js/lib/rendering/renderers/shared/shader/types.mjs","../node_modules/pixi.js/lib/rendering/renderers/shared/shader/utils/getDefaultUniformValue.mjs","../node_modules/pixi.js/lib/rendering/renderers/shared/shader/UniformGroup.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/shader/BindGroup.mjs","../node_modules/pixi.js/lib/rendering/renderers/types.mjs","../node_modules/pixi.js/lib/rendering/renderers/shared/shader/Shader.mjs","../node_modules/pixi.js/lib/rendering/renderers/shared/state/State.mjs","../node_modules/pixi.js/lib/filters/Filter.mjs","../node_modules/pixi.js/lib/rendering/renderers/shared/buffer/const.mjs","../node_modules/pixi.js/lib/rendering/renderers/shared/buffer/Buffer.mjs","../node_modules/pixi.js/lib/rendering/renderers/shared/geometry/utils/ensureIsBuffer.mjs","../node_modules/pixi.js/lib/rendering/renderers/shared/geometry/utils/getGeometryBounds.mjs","../node_modules/pixi.js/lib/rendering/renderers/shared/geometry/Geometry.mjs"],"sourcesContent":["\"use strict\";\nconst idCounts = /* @__PURE__ */ Object.create(null);\nconst idHash = /* @__PURE__ */ Object.create(null);\nfunction createIdFromString(value, groupId) {\n let id = idHash[value];\n if (id === void 0) {\n if (idCounts[groupId] === void 0) {\n idCounts[groupId] = 1;\n }\n idHash[value] = id = idCounts[groupId]++;\n }\n return id;\n}\n\nexport { createIdFromString };\n//# sourceMappingURL=createIdFromString.mjs.map\n","import { DOMAdapter } from '../../../../../environment/adapter.mjs';\n\n\"use strict\";\nlet context;\nfunction getTestContext() {\n if (!context || context?.isContextLost()) {\n const canvas = DOMAdapter.get().createCanvas();\n context = canvas.getContext(\"webgl\", {});\n }\n return context;\n}\n\nexport { getTestContext };\n//# sourceMappingURL=getTestContext.mjs.map\n","import { getTestContext } from './getTestContext.mjs';\n\n\"use strict\";\nlet maxFragmentPrecision;\nfunction getMaxFragmentPrecision() {\n if (!maxFragmentPrecision) {\n maxFragmentPrecision = \"mediump\";\n const gl = getTestContext();\n if (gl) {\n if (gl.getShaderPrecisionFormat) {\n const shaderFragment = gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_FLOAT);\n maxFragmentPrecision = shaderFragment.precision ? \"highp\" : \"mediump\";\n }\n }\n }\n return maxFragmentPrecision;\n}\n\nexport { getMaxFragmentPrecision };\n//# sourceMappingURL=getMaxFragmentPrecision.mjs.map\n","\"use strict\";\nfunction addProgramDefines(src, isES300, isFragment) {\n if (isES300) return src;\n if (isFragment) {\n src = src.replace(\"out vec4 finalColor;\", \"\");\n return `\n\n #ifdef GL_ES // This checks if it is WebGL1\n #define in varying\n #define finalColor gl_FragColor\n #define texture texture2D\n #endif\n ${src}\n `;\n }\n return `\n\n #ifdef GL_ES // This checks if it is WebGL1\n #define in attribute\n #define out varying\n #endif\n ${src}\n `;\n}\n\nexport { addProgramDefines };\n//# sourceMappingURL=addProgramDefines.mjs.map\n","\"use strict\";\nfunction ensurePrecision(src, options, isFragment) {\n const maxSupportedPrecision = isFragment ? options.maxSupportedFragmentPrecision : options.maxSupportedVertexPrecision;\n if (src.substring(0, 9) !== \"precision\") {\n let precision = isFragment ? options.requestedFragmentPrecision : options.requestedVertexPrecision;\n if (precision === \"highp\" && maxSupportedPrecision !== \"highp\") {\n precision = \"mediump\";\n }\n return `precision ${precision} float;\n${src}`;\n } else if (maxSupportedPrecision !== \"highp\" && src.substring(0, 15) === \"precision highp\") {\n return src.replace(\"precision highp\", \"precision mediump\");\n }\n return src;\n}\n\nexport { ensurePrecision };\n//# sourceMappingURL=ensurePrecision.mjs.map\n","\"use strict\";\nfunction insertVersion(src, isES300) {\n if (!isES300) return src;\n return `#version 300 es\n${src}`;\n}\n\nexport { insertVersion };\n//# sourceMappingURL=insertVersion.mjs.map\n","\"use strict\";\nconst fragmentNameCache = {};\nconst VertexNameCache = {};\nfunction setProgramName(src, { name = `pixi-program` }, isFragment = true) {\n name = name.replace(/\\s+/g, \"-\");\n name += isFragment ? \"-fragment\" : \"-vertex\";\n const nameCache = isFragment ? fragmentNameCache : VertexNameCache;\n if (nameCache[name]) {\n nameCache[name]++;\n name += `-${nameCache[name]}`;\n } else {\n nameCache[name] = 1;\n }\n if (src.indexOf(\"#define SHADER_NAME\") !== -1) return src;\n const shaderName = `#define SHADER_NAME ${name}`;\n return `${shaderName}\n${src}`;\n}\n\nexport { setProgramName };\n//# sourceMappingURL=setProgramName.mjs.map\n","\"use strict\";\nfunction stripVersion(src, isES300) {\n if (!isES300) return src;\n return src.replace(\"#version 300 es\", \"\");\n}\n\nexport { stripVersion };\n//# sourceMappingURL=stripVersion.mjs.map\n","import { createIdFromString } from '../../shared/utils/createIdFromString.mjs';\nimport { getMaxFragmentPrecision } from './program/getMaxFragmentPrecision.mjs';\nimport { addProgramDefines } from './program/preprocessors/addProgramDefines.mjs';\nimport { ensurePrecision } from './program/preprocessors/ensurePrecision.mjs';\nimport { insertVersion } from './program/preprocessors/insertVersion.mjs';\nimport { setProgramName } from './program/preprocessors/setProgramName.mjs';\nimport { stripVersion } from './program/preprocessors/stripVersion.mjs';\n\n\"use strict\";\nconst processes = {\n // strips any version headers..\n stripVersion,\n // adds precision string if not already present\n ensurePrecision,\n // add some defines if WebGL1 to make it more compatible with WebGL2 shaders\n addProgramDefines,\n // add the program name to the shader\n setProgramName,\n // add the version string to the shader header\n insertVersion\n};\nconst programCache = /* @__PURE__ */ Object.create(null);\nconst _GlProgram = class _GlProgram {\n /**\n * Creates a shiny new GlProgram. Used by WebGL renderer.\n * @param options - The options for the program.\n */\n constructor(options) {\n options = { ..._GlProgram.defaultOptions, ...options };\n const isES300 = options.fragment.indexOf(\"#version 300 es\") !== -1;\n const preprocessorOptions = {\n stripVersion: isES300,\n ensurePrecision: {\n requestedFragmentPrecision: options.preferredFragmentPrecision,\n requestedVertexPrecision: options.preferredVertexPrecision,\n maxSupportedVertexPrecision: \"highp\",\n maxSupportedFragmentPrecision: getMaxFragmentPrecision()\n },\n setProgramName: {\n name: options.name\n },\n addProgramDefines: isES300,\n insertVersion: isES300\n };\n let fragment = options.fragment;\n let vertex = options.vertex;\n Object.keys(processes).forEach((processKey) => {\n const processOptions = preprocessorOptions[processKey];\n fragment = processes[processKey](fragment, processOptions, true);\n vertex = processes[processKey](vertex, processOptions, false);\n });\n this.fragment = fragment;\n this.vertex = vertex;\n this.transformFeedbackVaryings = options.transformFeedbackVaryings;\n this._key = createIdFromString(`${this.vertex}:${this.fragment}`, \"gl-program\");\n }\n /** destroys the program */\n destroy() {\n this.fragment = null;\n this.vertex = null;\n this._attributeData = null;\n this._uniformData = null;\n this._uniformBlockData = null;\n this.transformFeedbackVaryings = null;\n programCache[this._cacheKey] = null;\n }\n /**\n * Helper function that creates a program for a given source.\n * It will check the program cache if the program has already been created.\n * If it has that one will be returned, if not a new one will be created and cached.\n * @param options - The options for the program.\n * @returns A program using the same source\n */\n static from(options) {\n const key = `${options.vertex}:${options.fragment}`;\n if (!programCache[key]) {\n programCache[key] = new _GlProgram(options);\n programCache[key]._cacheKey = key;\n }\n return programCache[key];\n }\n};\n/** The default options used by the program. */\n_GlProgram.defaultOptions = {\n preferredVertexPrecision: \"highp\",\n preferredFragmentPrecision: \"mediump\"\n};\nlet GlProgram = _GlProgram;\n\nexport { GlProgram };\n//# sourceMappingURL=GlProgram.mjs.map\n","\"use strict\";\nconst attributeFormatData = {\n uint8x2: { size: 2, stride: 2, normalised: false },\n uint8x4: { size: 4, stride: 4, normalised: false },\n sint8x2: { size: 2, stride: 2, normalised: false },\n sint8x4: { size: 4, stride: 4, normalised: false },\n unorm8x2: { size: 2, stride: 2, normalised: true },\n unorm8x4: { size: 4, stride: 4, normalised: true },\n snorm8x2: { size: 2, stride: 2, normalised: true },\n snorm8x4: { size: 4, stride: 4, normalised: true },\n uint16x2: { size: 2, stride: 4, normalised: false },\n uint16x4: { size: 4, stride: 8, normalised: false },\n sint16x2: { size: 2, stride: 4, normalised: false },\n sint16x4: { size: 4, stride: 8, normalised: false },\n unorm16x2: { size: 2, stride: 4, normalised: true },\n unorm16x4: { size: 4, stride: 8, normalised: true },\n snorm16x2: { size: 2, stride: 4, normalised: true },\n snorm16x4: { size: 4, stride: 8, normalised: true },\n float16x2: { size: 2, stride: 4, normalised: false },\n float16x4: { size: 4, stride: 8, normalised: false },\n float32: { size: 1, stride: 4, normalised: false },\n float32x2: { size: 2, stride: 8, normalised: false },\n float32x3: { size: 3, stride: 12, normalised: false },\n float32x4: { size: 4, stride: 16, normalised: false },\n uint32: { size: 1, stride: 4, normalised: false },\n uint32x2: { size: 2, stride: 8, normalised: false },\n uint32x3: { size: 3, stride: 12, normalised: false },\n uint32x4: { size: 4, stride: 16, normalised: false },\n sint32: { size: 1, stride: 4, normalised: false },\n sint32x2: { size: 2, stride: 8, normalised: false },\n sint32x3: { size: 3, stride: 12, normalised: false },\n sint32x4: { size: 4, stride: 16, normalised: false }\n};\nfunction getAttributeInfoFromFormat(format) {\n return attributeFormatData[format] ?? attributeFormatData.float32;\n}\n\nexport { getAttributeInfoFromFormat };\n//# sourceMappingURL=getAttributeInfoFromFormat.mjs.map\n","import { getAttributeInfoFromFormat } from '../../../shared/geometry/utils/getAttributeInfoFromFormat.mjs';\n\n\"use strict\";\nconst WGSL_TO_VERTEX_TYPES = {\n f32: \"float32\",\n \"vec2<f32>\": \"float32x2\",\n \"vec3<f32>\": \"float32x3\",\n \"vec4<f32>\": \"float32x4\",\n vec2f: \"float32x2\",\n vec3f: \"float32x3\",\n vec4f: \"float32x4\",\n i32: \"sint32\",\n \"vec2<i32>\": \"sint32x2\",\n \"vec3<i32>\": \"sint32x3\",\n \"vec4<i32>\": \"sint32x4\",\n vec2i: \"sint32x2\",\n vec3i: \"sint32x3\",\n vec4i: \"sint32x4\",\n u32: \"uint32\",\n \"vec2<u32>\": \"uint32x2\",\n \"vec3<u32>\": \"uint32x3\",\n \"vec4<u32>\": \"uint32x4\",\n vec2u: \"uint32x2\",\n vec3u: \"uint32x3\",\n vec4u: \"uint32x4\",\n bool: \"uint32\",\n \"vec2<bool>\": \"uint32x2\",\n \"vec3<bool>\": \"uint32x3\",\n \"vec4<bool>\": \"uint32x4\"\n};\nconst LOCATION_REGEX = /@location\\((\\d+)\\)\\s+([a-zA-Z0-9_]+)\\s*:\\s*([a-zA-Z0-9_<>]+)(?:,|\\s|\\)|$)/g;\nfunction parseLocations(str, results) {\n let match;\n while ((match = LOCATION_REGEX.exec(str)) !== null) {\n const format = WGSL_TO_VERTEX_TYPES[match[3]] ?? \"float32\";\n results[match[2]] = {\n location: parseInt(match[1], 10),\n format,\n stride: getAttributeInfoFromFormat(format).stride,\n offset: 0,\n instance: false,\n start: 0\n };\n }\n LOCATION_REGEX.lastIndex = 0;\n}\nfunction stripComments(source) {\n return source.replace(/\\/\\/.*$/gm, \"\").replace(/\\/\\*[\\s\\S]*?\\*\\//g, \"\");\n}\nfunction extractAttributesFromGpuProgram({ source, entryPoint }) {\n const results = {};\n const cleanSource = stripComments(source);\n const mainVertStart = cleanSource.indexOf(`fn ${entryPoint}(`);\n if (mainVertStart === -1) {\n return results;\n }\n const arrowFunctionStart = cleanSource.indexOf(\"->\", mainVertStart);\n if (arrowFunctionStart === -1) {\n return results;\n }\n const functionArgsSubstring = cleanSource.substring(mainVertStart, arrowFunctionStart);\n parseLocations(functionArgsSubstring, results);\n if (Object.keys(results).length === 0) {\n const structMatch = functionArgsSubstring.match(/\\(\\s*\\w+\\s*:\\s*(\\w+)/);\n if (structMatch) {\n const structName = structMatch[1];\n const structRegex = new RegExp(`struct\\\\s+${structName}\\\\s*\\\\{([^}]+)\\\\}`, \"s\");\n const structBody = cleanSource.match(structRegex);\n if (structBody) {\n parseLocations(structBody[1], results);\n }\n }\n }\n return results;\n}\n\nexport { extractAttributesFromGpuProgram };\n//# sourceMappingURL=extractAttributesFromGpuProgram.mjs.map\n","\"use strict\";\nfunction extractStructAndGroups(wgsl) {\n const linePattern = /(^|[^/])@(group|binding)\\(\\d+\\)[^;]+;/g;\n const groupPattern = /@group\\((\\d+)\\)/;\n const bindingPattern = /@binding\\((\\d+)\\)/;\n const namePattern = /var(<[^>]+>)? (\\w+)/;\n const typePattern = /:\\s*([\\w<>]+)/;\n const structPattern = /struct\\s+(\\w+)\\s*{([^}]+)}/g;\n const structMemberPattern = /(\\w+)\\s*:\\s*([\\w\\<\\>]+)/g;\n const structName = /struct\\s+(\\w+)/;\n const groups = wgsl.match(linePattern)?.map((item) => ({\n group: parseInt(item.match(groupPattern)[1], 10),\n binding: parseInt(item.match(bindingPattern)[1], 10),\n name: item.match(namePattern)[2],\n isUniform: item.match(namePattern)[1] === \"<uniform>\",\n type: item.match(typePattern)[1]\n }));\n if (!groups) {\n return {\n groups: [],\n structs: []\n };\n }\n const structs = wgsl.match(structPattern)?.map((struct) => {\n const name = struct.match(structName)[1];\n const members = struct.match(structMemberPattern).reduce((acc, member) => {\n const [name2, type] = member.split(\":\");\n acc[name2.trim()] = type.trim();\n return acc;\n }, {});\n if (!members) {\n return null;\n }\n return { name, members };\n }).filter(({ name }) => groups.some(\n (group) => (\n // Handle both direct type matches and generic types like array<StructName>\n group.type === name || group.type.includes(`<${name}>`)\n )\n )) ?? [];\n return {\n groups,\n structs\n };\n}\n\nexport { extractStructAndGroups };\n//# sourceMappingURL=extractStructAndGroups.mjs.map\n","\"use strict\";\nvar ShaderStage = /* @__PURE__ */ ((ShaderStage2) => {\n ShaderStage2[ShaderStage2[\"VERTEX\"] = 1] = \"VERTEX\";\n ShaderStage2[ShaderStage2[\"FRAGMENT\"] = 2] = \"FRAGMENT\";\n ShaderStage2[ShaderStage2[\"COMPUTE\"] = 4] = \"COMPUTE\";\n return ShaderStage2;\n})(ShaderStage || {});\n\nexport { ShaderStage };\n//# sourceMappingURL=const.mjs.map\n","import { ShaderStage } from '../../../shared/shader/const.mjs';\n\n\"use strict\";\nfunction generateGpuLayoutGroups({ groups }) {\n const layout = [];\n for (let i = 0; i < groups.length; i++) {\n const group = groups[i];\n if (!layout[group.group]) {\n layout[group.group] = [];\n }\n if (group.isUniform) {\n layout[group.group].push({\n binding: group.binding,\n visibility: ShaderStage.VERTEX | ShaderStage.FRAGMENT,\n buffer: {\n type: \"uniform\"\n }\n });\n } else if (group.type === \"sampler\") {\n layout[group.group].push({\n binding: group.binding,\n visibility: ShaderStage.FRAGMENT,\n sampler: {\n type: \"filtering\"\n }\n });\n } else if (group.type === \"texture_2d\" || group.type.startsWith(\"texture_2d<\")) {\n layout[group.group].push({\n binding: group.binding,\n visibility: ShaderStage.FRAGMENT,\n texture: {\n sampleType: \"float\",\n viewDimension: \"2d\",\n multisampled: false\n }\n });\n } else if (group.type === \"texture_2d_array\" || group.type.startsWith(\"texture_2d_array<\")) {\n layout[group.group].push({\n binding: group.binding,\n visibility: ShaderStage.FRAGMENT,\n texture: {\n sampleType: \"float\",\n viewDimension: \"2d-array\",\n multisampled: false\n }\n });\n } else if (group.type === \"texture_cube\" || group.type.startsWith(\"texture_cube<\")) {\n layout[group.group].push({\n binding: group.binding,\n visibility: ShaderStage.FRAGMENT,\n texture: {\n sampleType: \"float\",\n viewDimension: \"cube\",\n multisampled: false\n }\n });\n }\n }\n for (let i = 0; i < layout.length; i++) {\n layout[i] || (layout[i] = []);\n }\n return layout;\n}\n\nexport { generateGpuLayoutGroups };\n//# sourceMappingURL=generateGpuLayoutGroups.mjs.map\n","\"use strict\";\nfunction generateLayoutHash({ groups }) {\n const layout = [];\n for (let i = 0; i < groups.length; i++) {\n const group = groups[i];\n if (!layout[group.group]) {\n layout[group.group] = {};\n }\n layout[group.group][group.name] = group.binding;\n }\n return layout;\n}\n\nexport { generateLayoutHash };\n//# sourceMappingURL=generateLayoutHash.mjs.map\n","\"use strict\";\nfunction removeStructAndGroupDuplicates(vertexStructsAndGroups, fragmentStructsAndGroups) {\n const structNameSet = /* @__PURE__ */ new Set();\n const dupeGroupKeySet = /* @__PURE__ */ new Set();\n const structs = [...vertexStructsAndGroups.structs, ...fragmentStructsAndGroups.structs].filter((struct) => {\n if (structNameSet.has(struct.name)) {\n return false;\n }\n structNameSet.add(struct.name);\n return true;\n });\n const groups = [...vertexStructsAndGroups.groups, ...fragmentStructsAndGroups.groups].filter((group) => {\n const key = `${group.name}-${group.binding}`;\n if (dupeGroupKeySet.has(key)) {\n return false;\n }\n dupeGroupKeySet.add(key);\n return true;\n });\n return { structs, groups };\n}\n\nexport { removeStructAndGroupDuplicates };\n//# sourceMappingURL=removeStructAndGroupDuplicates.mjs.map\n","import { createIdFromString } from '../../shared/utils/createIdFromString.mjs';\nimport { extractAttributesFromGpuProgram } from './utils/extractAttributesFromGpuProgram.mjs';\nimport { extractStructAndGroups } from './utils/extractStructAndGroups.mjs';\nimport { generateGpuLayoutGroups } from './utils/generateGpuLayoutGroups.mjs';\nimport { generateLayoutHash } from './utils/generateLayoutHash.mjs';\nimport { removeStructAndGroupDuplicates } from './utils/removeStructAndGroupDuplicates.mjs';\n\n\"use strict\";\nconst programCache = /* @__PURE__ */ Object.create(null);\nclass GpuProgram {\n /**\n * Create a new GpuProgram\n * @param options - The options for the gpu program\n */\n constructor(options) {\n /** @internal */\n this._layoutKey = 0;\n /** @internal */\n this._attributeLocationsKey = 0;\n const { fragment, vertex, layout, gpuLayout, name } = options;\n this.name = name;\n this.fragment = fragment;\n this.vertex = vertex;\n if (fragment.source === vertex.source) {\n const structsAndGroups = extractStructAndGroups(fragment.source);\n this.structsAndGroups = structsAndGroups;\n } else {\n const vertexStructsAndGroups = extractStructAndGroups(vertex.source);\n const fragmentStructsAndGroups = extractStructAndGroups(fragment.source);\n this.structsAndGroups = removeStructAndGroupDuplicates(vertexStructsAndGroups, fragmentStructsAndGroups);\n }\n this.layout = layout ?? generateLayoutHash(this.structsAndGroups);\n this.gpuLayout = gpuLayout ?? generateGpuLayoutGroups(this.structsAndGroups);\n this.autoAssignGlobalUniforms = !!(this.layout[0]?.globalUniforms !== void 0);\n this.autoAssignLocalUniforms = !!(this.layout[1]?.localUniforms !== void 0);\n this._generateProgramKey();\n }\n // TODO maker this pure\n _generateProgramKey() {\n const { vertex, fragment } = this;\n const bigKey = vertex.source + fragment.source + vertex.entryPoint + fragment.entryPoint;\n this._layoutKey = createIdFromString(bigKey, \"program\");\n }\n get attributeData() {\n this._attributeData ?? (this._attributeData = extractAttributesFromGpuProgram(this.vertex));\n return this._attributeData;\n }\n /** destroys the program */\n destroy() {\n this.gpuLayout = null;\n this.layout = null;\n this.structsAndGroups = null;\n this.fragment = null;\n this.vertex = null;\n programCache[this._cacheKey] = null;\n }\n /**\n * Helper function that creates a program for a given source.\n * It will check the program cache if the program has already been created.\n * If it has that one will be returned, if not a new one will be created and cached.\n * @param options - The options for the program.\n * @returns A program using the same source\n */\n static from(options) {\n const key = `${options.vertex.source}:${options.fragment.source}:${options.fragment.entryPoint}:${options.vertex.entryPoint}`;\n if (!programCache[key]) {\n programCache[key] = new GpuProgram(options);\n programCache[key]._cacheKey = key;\n }\n return programCache[key];\n }\n}\n\nexport { GpuProgram };\n//# sourceMappingURL=GpuProgram.mjs.map\n","\"use strict\";\nconst UNIFORM_TYPES_VALUES = [\n \"f32\",\n \"i32\",\n \"vec2<f32>\",\n \"vec3<f32>\",\n \"vec4<f32>\",\n \"mat2x2<f32>\",\n \"mat3x3<f32>\",\n \"mat4x4<f32>\",\n \"mat3x2<f32>\",\n \"mat4x2<f32>\",\n \"mat2x3<f32>\",\n \"mat4x3<f32>\",\n \"mat2x4<f32>\",\n \"mat3x4<f32>\",\n \"vec2<i32>\",\n \"vec3<i32>\",\n \"vec4<i32>\"\n];\nconst UNIFORM_TYPES_MAP = UNIFORM_TYPES_VALUES.reduce((acc, type) => {\n acc[type] = true;\n return acc;\n}, {});\n\nexport { UNIFORM_TYPES_MAP, UNIFORM_TYPES_VALUES };\n//# sourceMappingURL=types.mjs.map\n","\"use strict\";\nfunction getDefaultUniformValue(type, size) {\n switch (type) {\n case \"f32\":\n return 0;\n case \"vec2<f32>\":\n return new Float32Array(2 * size);\n case \"vec3<f32>\":\n return new Float32Array(3 * size);\n case \"vec4<f32>\":\n return new Float32Array(4 * size);\n case \"mat2x2<f32>\":\n return new Float32Array([\n 1,\n 0,\n 0,\n 1\n ]);\n case \"mat3x3<f32>\":\n return new Float32Array([\n 1,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 1\n ]);\n case \"mat4x4<f32>\":\n return new Float32Array([\n 1,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 1\n ]);\n }\n return null;\n}\n\nexport { getDefaultUniformValue };\n//# sourceMappingURL=getDefaultUniformValue.mjs.map\n","import { uid } from '../../../../utils/data/uid.mjs';\nimport { createIdFromString } from '../utils/createIdFromString.mjs';\nimport { UNIFORM_TYPES_MAP, UNIFORM_TYPES_VALUES } from './types.mjs';\nimport { getDefaultUniformValue } from './utils/getDefaultUniformValue.mjs';\n\n\"use strict\";\nconst _UniformGroup = class _UniformGroup {\n /**\n * Create a new Uniform group\n * @param uniformStructures - The structures of the uniform group\n * @param options - The optional parameters of this uniform group\n */\n constructor(uniformStructures, options) {\n /**\n * used internally to know if a uniform group was used in the last render pass\n * @internal\n */\n this._touched = 0;\n /** a unique id for this uniform group used through the renderer */\n this.uid = uid(\"uniform\");\n /**\n * a resource type, used to identify how to handle it when its in a bind group / shader resource\n * @internal\n */\n this._resourceType = \"uniformGroup\";\n /**\n * the resource id used internally by the renderer to build bind group keys\n * @internal\n */\n this._resourceId = uid(\"resource\");\n /** used ito identify if this is a uniform group */\n this.isUniformGroup = true;\n /**\n * used to flag if this Uniform groups data is different from what it has stored in its buffer / on the GPU\n * @internal\n */\n this._dirtyId = 0;\n // implementing the interface - UniformGroup are not destroyed\n this.destroyed = false;\n options = { ..._UniformGroup.defaultOptions, ...options };\n this.uniformStructures = uniformStructures;\n const uniforms = {};\n for (const i in uniformStructures) {\n const uniformData = uniformStructures[i];\n uniformData.name = i;\n uniformData.size = uniformData.size ?? 1;\n if (!UNIFORM_TYPES_MAP[uniformData.type]) {\n const arrayMatch = uniformData.type.match(/^array<(\\w+(?:<\\w+>)?),\\s*(\\d+)>$/);\n if (arrayMatch) {\n const [, innerType, size] = arrayMatch;\n throw new Error(\n `Uniform type ${uniformData.type} is not supported. Use type: '${innerType}', size: ${size} instead.`\n );\n }\n throw new Error(`Uniform type ${uniformData.type} is not supported. Supported uniform types are: ${UNIFORM_TYPES_VALUES.join(\", \")}`);\n }\n uniformData.value ?? (uniformData.value = getDefaultUniformValue(uniformData.type, uniformData.size));\n uniforms[i] = uniformData.value;\n }\n this.uniforms = uniforms;\n this._dirtyId = 1;\n this.ubo = options.ubo;\n this.isStatic = options.isStatic;\n this._signature = createIdFromString(Object.keys(uniforms).map(\n (i) => `${i}-${uniformStructures[i].type}`\n ).join(\"-\"), \"uniform-group\");\n }\n /** Call this if you want the uniform groups data to be uploaded to the GPU only useful if `isStatic` is true. */\n update() {\n this._dirtyId++;\n }\n};\n/** The default options used by the uniform group. */\n_UniformGroup.defaultOptions = {\n /** if true the UniformGroup is handled as an Uniform buffer object. */\n ubo: false,\n /** if true, then you are responsible for when the data is uploaded to the GPU by calling `update()` */\n isStatic: false\n};\nlet UniformGroup = _UniformGroup;\n\nexport { UniformGroup };\n//# sourceMappingURL=UniformGroup.mjs.map\n","\"use strict\";\nclass BindGroup {\n /**\n * Create a new instance eof the Bind Group.\n * @param resources - The resources that are bound together for use by a shader.\n */\n constructor(resources) {\n /** The resources that are bound together for use by a shader. */\n this.resources = /* @__PURE__ */ Object.create(null);\n this._dirty = true;\n let index = 0;\n for (const i in resources) {\n const resource = resources[i];\n this.setResource(resource, index++);\n }\n this._updateKey();\n }\n /**\n * Updates the key if its flagged as dirty. This is used internally to\n * match this bind group to a WebGPU BindGroup.\n * @internal\n */\n _updateKey() {\n if (!this._dirty) return;\n this._dirty = false;\n const keyParts = [];\n let index = 0;\n for (const i in this.resources) {\n keyParts[index++] = this.resources[i]._resourceId;\n }\n this._key = keyParts.join(\"|\");\n }\n /**\n * Set a resource at a given index. this function will\n * ensure that listeners will be removed from the current resource\n * and added to the new resource.\n * @param resource - The resource to set.\n * @param index - The index to set the resource at.\n */\n setResource(resource, index) {\n const currentResource = this.resources[index];\n if (resource === currentResource) return;\n currentResource?.off?.(\"change\", this.onResourceChange, this);\n resource.on?.(\"change\", this.onResourceChange, this);\n this.resources[index] = resource;\n this._dirty = true;\n }\n /**\n * Returns the resource at the current specified index.\n * @param index - The index of the resource to get.\n * @returns - The resource at the specified index.\n */\n getResource(index) {\n return this.resources[index];\n }\n /**\n * Used internally to 'touch' each resource, to ensure that the GC\n * knows that all resources in this bind group are still being used.\n * @param now - The current time in milliseconds.\n * @param tick - The current tick.\n * @internal\n */\n _touch(now, tick) {\n const resources = this.resources;\n for (const i in resources) {\n resources[i]._gcLastUsed = now;\n resources[i]._touched = tick;\n }\n }\n /** Destroys this bind group and removes all listeners. */\n destroy() {\n const resources = this.resources;\n for (const i in resources) {\n const resource = resources[i];\n resource?.off?.(\"change\", this.onResourceChange, this);\n }\n this.resources = null;\n }\n onResourceChange(resource) {\n this._dirty = true;\n if (resource.destroyed) {\n this.destroy();\n } else {\n this._updateKey();\n }\n }\n}\n\nexport { BindGroup };\n//# sourceMappingURL=BindGroup.mjs.map\n","\"use strict\";\nvar RendererType = /* @__PURE__ */ ((RendererType2) => {\n RendererType2[RendererType2[\"WEBGL\"] = 1] = \"WEBGL\";\n RendererType2[RendererType2[\"WEBGPU\"] = 2] = \"WEBGPU\";\n RendererType2[RendererType2[\"CANVAS\"] = 4] = \"CANVAS\";\n RendererType2[RendererType2[\"BOTH\"] = 3] = \"BOTH\";\n return RendererType2;\n})(RendererType || {});\n\nexport { RendererType };\n//# sourceMappingURL=types.mjs.map\n","import EventEmitter from 'eventemitter3';\nimport { uid } from '../../../../utils/data/uid.mjs';\nimport { GlProgram } from '../../gl/shader/GlProgram.mjs';\nimport { BindGroup } from '../../gpu/shader/BindGroup.mjs';\nimport { GpuProgram } from '../../gpu/shader/GpuProgram.mjs';\nimport { RendererType } from '../../types.mjs';\nimport { UniformGroup } from './UniformGroup.mjs';\n\n\"use strict\";\nclass Shader extends EventEmitter {\n constructor(options) {\n super();\n /** A unique identifier for the shader */\n this.uid = uid(\"shader\");\n /**\n * A record of the uniform groups and resources used by the shader.\n * This is used by WebGL renderer to sync uniform data.\n * @internal\n */\n this._uniformBindMap = /* @__PURE__ */ Object.create(null);\n this._ownedBindGroups = [];\n /** @internal */\n this._destroyed = false;\n let {\n gpuProgram,\n glProgram,\n groups,\n resources,\n compatibleRenderers,\n groupMap\n } = options;\n this.gpuProgram = gpuProgram;\n this.glProgram = glProgram;\n if (compatibleRenderers === void 0) {\n compatibleRenderers = 0;\n if (gpuProgram) compatibleRenderers |= RendererType.WEBGPU;\n if (glProgram) compatibleRenderers |= RendererType.WEBGL;\n }\n this.compatibleRenderers = compatibleRenderers;\n const nameHash = {};\n if (!resources && !groups) {\n resources = {};\n }\n if (resources && groups) {\n throw new Error(\"[Shader] Cannot have both resources and groups\");\n } else if (!gpuProgram && groups && !groupMap) {\n throw new Error(\"[Shader] No group map or WebGPU shader provided - consider using resources instead.\");\n } else if (!gpuProgram && groups && groupMap) {\n for (const i in groupMap) {\n for (const j in groupMap[i]) {\n const uniformName = groupMap[i][j];\n nameHash[uniformName] = {\n group: i,\n binding: j,\n name: uniformName\n };\n }\n }\n } else if (gpuProgram && groups && !groupMap) {\n const groupData = gpuProgram.structsAndGroups.groups;\n groupMap = {};\n groupData.forEach((data) => {\n groupMap[data.group] = groupMap[data.group] || {};\n groupMap[data.group][data.binding] = data.name;\n nameHash[data.name] = data;\n });\n } else if (resources) {\n groups = {};\n groupMap = {};\n if (gpuProgram) {\n const groupData = gpuProgram.structsAndGroups.groups;\n groupData.forEach((data) => {\n groupMap[data.group] = groupMap[data.group] || {};\n groupMap[data.group][data.binding] = data.name;\n nameHash[data.name] = data;\n });\n }\n let bindTick = 0;\n for (const i in resources) {\n if (nameHash[i]) continue;\n if (!groups[99]) {\n groups[99] = new BindGroup();\n this._ownedBindGroups.push(groups[99]);\n }\n nameHash[i] = { group: 99, binding: bindTick, name: i };\n groupMap[99] = groupMap[99] || {};\n groupMap[99][bindTick] = i;\n bindTick++;\n }\n for (const i in resources) {\n const name = i;\n let value = resources[i];\n if (!value.source && !value._resourceType) {\n value = new UniformGroup(value);\n }\n const data = nameHash[name];\n if (data) {\n if (!groups[data.group]) {\n groups[data.group] = new BindGroup();\n this._ownedBindGroups.push(groups[data.group]);\n }\n groups[data.group].setResource(value, data.binding);\n }\n }\n }\n this.groups = groups;\n this._uniformBindMap = groupMap;\n this.resources = this._buildResourceAccessor(groups, nameHash);\n }\n /**\n * Sometimes a resource group will be provided later (for example global uniforms)\n * In such cases, this method can be used to let the shader know about the group.\n * @param name - the name of the resource group\n * @param groupIndex - the index of the group (should match the webGPU shader group location)\n * @param bindIndex - the index of the bind point (should match the webGPU shader bind point)\n */\n addResource(name, groupIndex, bindIndex) {\n var _a, _b;\n (_a = this._uniformBindMap)[groupIndex] || (_a[groupIndex] = {});\n (_b = this._uniformBindMap[groupIndex])[bindIndex] || (_b[bindIndex] = name);\n if (!this.groups[groupIndex]) {\n this.groups[groupIndex] = new BindGroup();\n this._ownedBindGroups.push(this.groups[groupIndex]);\n }\n }\n _buildResourceAccessor(groups, nameHash) {\n const uniformsOut = {};\n for (const i in nameHash) {\n const data = nameHash[i];\n Object.defineProperty(uniformsOut, data.name, {\n get() {\n return groups[data.group].getResource(data.binding);\n },\n set(value) {\n groups[data.group].setResource(value, data.binding);\n }\n });\n }\n return uniformsOut;\n }\n /**\n * Use to destroy the shader when its not longer needed.\n * It will destroy the resources and remove listeners.\n * @param destroyPrograms - if the programs should be destroyed as well.\n * Make sure its not being used by other shaders!\n */\n destroy(destroyPrograms = false) {\n if (this._destroyed) return;\n this._destroyed = true;\n this.emit(\"destroy\", this);\n if (destroyPrograms) {\n this.gpuProgram?.destroy();\n this.glProgram?.destroy();\n }\n this.gpuProgram = null;\n this.glProgram = null;\n this.removeAllListeners();\n this._uniformBindMap = null;\n this._ownedBindGroups.forEach((bindGroup) => {\n bindGroup.destroy();\n });\n this._ownedBindGroups = null;\n this.resources = null;\n this.groups = null;\n }\n static from(options) {\n const { gpu, gl, ...rest } = options;\n let gpuProgram;\n let glProgram;\n if (gpu) {\n gpuProgram = GpuProgram.from(gpu);\n }\n if (gl) {\n glProgram = GlProgram.from(gl);\n }\n return new Shader({\n gpuProgram,\n glProgram,\n ...rest\n });\n }\n}\n\nexport { Shader };\n//# sourceMappingURL=Shader.mjs.map\n","\"use strict\";\nconst blendModeIds = {\n normal: 0,\n add: 1,\n multiply: 2,\n screen: 3,\n overlay: 4,\n erase: 5,\n \"normal-npm\": 6,\n \"add-npm\": 7,\n \"screen-npm\": 8,\n min: 9,\n max: 10\n};\nconst BLEND = 0;\nconst OFFSET = 1;\nconst CULLING = 2;\nconst DEPTH_TEST = 3;\nconst WINDING = 4;\nconst DEPTH_MASK = 5;\nconst _State = class _State {\n constructor() {\n this.data = 0;\n this.blendMode = \"normal\";\n this.polygonOffset = 0;\n this.blend = true;\n this.depthMask = true;\n }\n /**\n * Activates blending of the computed fragment color values.\n * @default true\n */\n get blend() {\n return !!(this.data & 1 << BLEND);\n }\n set blend(value) {\n if (!!(this.data & 1 << BLEND) !== value) {\n this.data ^= 1 << BLEND;\n }\n }\n /**\n * Activates adding an offset to depth values of polygon's fragments\n * @default false\n */\n get offsets() {\n return !!(this.data & 1 << OFFSET);\n }\n set offsets(value) {\n if (!!(this.data & 1 << OFFSET) !== value) {\n this.data ^= 1 << OFFSET;\n }\n }\n /** The culling settings for this state none - No culling back - Back face culling front - Front face culling */\n set cullMode(value) {\n if (value === \"none\") {\n this.culling = false;\n return;\n }\n this.culling = true;\n this.clockwiseFrontFace = value === \"front\";\n }\n get cullMode() {\n if (!this.culling) {\n return \"none\";\n }\n return this.clockwiseFrontFace ? \"front\" : \"back\";\n }\n /**\n * Activates culling of polygons.\n * @default false\n */\n get culling() {\n return !!(this.data & 1 << CULLING);\n }\n set culling(value) {\n if (!!(this.data & 1 << CULLING) !== value) {\n this.data ^= 1 << CULLING;\n }\n }\n /**\n * Activates depth comparisons and updates to the depth buffer.\n * @default false\n */\n get depthTest() {\n return !!(this.data & 1 << DEPTH_TEST);\n }\n set depthTest(value) {\n if (!!(this.data & 1 << DEPTH_TEST) !== value) {\n this.data ^= 1 << DEPTH_TEST;\n }\n }\n /**\n * Enables or disables writing to the depth buffer.\n * @default true\n */\n get depthMask() {\n return !!(this.data & 1 << DEPTH_MASK);\n }\n set depthMask(value) {\n if (!!(this.data & 1 << DEPTH_MASK) !== value) {\n this.data ^= 1 << DEPTH_MASK;\n }\n }\n /**\n * Specifies whether or not front or back-facing polygons can be culled.\n * @default false\n */\n get clockwiseFrontFace() {\n return !!(this.data & 1 << WINDING);\n }\n set clockwiseFrontFace(value) {\n if (!!(this.data & 1 << WINDING) !== value) {\n this.data ^= 1 << WINDING;\n }\n }\n /**\n * The blend mode to be applied when this state is set. Apply a value of `normal` to reset the blend mode.\n * Setting this mode to anything other than NO_BLEND will automatically switch blending on.\n * @default 'normal'\n */\n get blendMode() {\n return this._blendMode;\n }\n set blendMode(value) {\n this.blend = value !== \"none\";\n this._blendMode = value;\n this._blendModeId = blendModeIds[value] || 0;\n }\n /**\n * The polygon offset. Setting this property to anything other than 0 will automatically enable polygon offset fill.\n * @default 0\n */\n get polygonOffset() {\n return this._polygonOffset;\n }\n set polygonOffset(value) {\n this.offsets = !!value;\n this._polygonOffset = value;\n }\n toString() {\n return `[pixi.js/core:State blendMode=${this.blendMode} clockwiseFrontFace=${this.clockwiseFrontFace} culling=${this.culling} depthMask=${this.depthMask} polygonOffset=${this.polygonOffset}]`;\n }\n /**\n * A quickly getting an instance of a State that is configured for 2d rendering.\n * @returns a new State with values set for 2d rendering\n */\n static for2d() {\n const state = new _State();\n state.depthTest = false;\n state.blend = true;\n return state;\n }\n};\n_State.default2d = _State.for2d();\nlet State = _State;\n\nexport { State };\n//# sourceMappingURL=State.mjs.map\n","import { GlProgram } from '../rendering/renderers/gl/shader/GlProgram.mjs';\nimport { GpuProgram } from '../rendering/renderers/gpu/shader/GpuProgram.mjs';\nimport { Shader } from '../rendering/renderers/shared/shader/Shader.mjs';\nimport { State } from '../rendering/renderers/shared/state/State.mjs';\n\n\"use strict\";\nconst _Filter = class _Filter extends Shader {\n /**\n * @param options - The optional parameters of this filter.\n */\n constructor(options) {\n options = { ..._Filter.defaultOptions, ...options };\n super(options);\n /** If enabled is true the filter is applied, if false it will not. */\n this.enabled = true;\n /**\n * The gpu state the filter requires to render.\n * @internal\n */\n this._state = State.for2d();\n this.blendMode = options.blendMode;\n this.padding = options.padding;\n if (typeof options.antialias === \"boolean\") {\n this.antialias = options.antialias ? \"on\" : \"off\";\n } else {\n this.antialias = options.antialias;\n }\n this.resolution = options.resolution;\n this.blendRequired = options.blendRequired;\n this.clipToViewport = options.clipToViewport;\n this.addResource(\"uTexture\", 0, 1);\n if (options.blendRequired) {\n this.addResource(\"uBackTexture\", 0, 3);\n }\n }\n /**\n * Applies the filter\n * @param filterManager - The renderer to retrieve the filter from\n * @param input - The input render target.\n * @param output - The target to output to.\n * @param clearMode - Should the output be cleared before rendering to it\n */\n apply(filterManager, input, output, clearMode) {\n filterManager.applyFilter(this, input, output, clearMode);\n }\n /**\n * Get the blend mode of the filter.\n * @default \"normal\"\n */\n get blendMode() {\n return this._state.blendMode;\n }\n /** Sets the blend mode of the filter. */\n set blendMode(value) {\n this._state.blendMode = value;\n }\n /**\n * A short hand function to create a filter based of a vertex and fragment shader src.\n * @param options\n * @returns A shiny new PixiJS filter!\n */\n static from(options) {\n const { gpu, gl, ...rest } = options;\n let gpuProgram;\n let glProgram;\n if (gpu) {\n gpuProgram = GpuProgram.from(gpu);\n }\n if (gl) {\n glProgram = GlProgram.from(gl);\n }\n return new _Filter({\n gpuProgram,\n glProgram,\n ...rest\n });\n }\n};\n/** The default filter settings */\n_Filter.defaultOptions = {\n blendMode: \"normal\",\n resolution: 1,\n padding: 0,\n antialias: \"off\",\n blendRequired: false,\n clipToViewport: true\n};\nlet Filter = _Filter;\n\nexport { Filter };\n//# sourceMappingURL=Filter.mjs.map\n","\"use strict\";\nvar BufferUsage = /* @__PURE__ */ ((BufferUsage2) => {\n BufferUsage2[BufferUsage2[\"MAP_READ\"] = 1] = \"MAP_READ\";\n BufferUsage2[BufferUsage2[\"MAP_WRITE\"] = 2] = \"MAP_WRITE\";\n BufferUsage2[BufferUsage2[\"COPY_SRC\"] = 4] = \"COPY_SRC\";\n BufferUsage2[BufferUsage2[\"COPY_DST\"] = 8] = \"COPY_DST\";\n BufferUsage2[BufferUsage2[\"INDEX\"] = 16] = \"INDEX\";\n BufferUsage2[BufferUsage2[\"VERTEX\"] = 32] = \"VERTEX\";\n BufferUsage2[BufferUsage2[\"UNIFORM\"] = 64] = \"UNIFORM\";\n BufferUsage2[BufferUsage2[\"STORAGE\"] = 128] = \"STORAGE\";\n BufferUsage2[BufferUsage2[\"INDIRECT\"] = 256] = \"INDIRECT\";\n BufferUsage2[BufferUsage2[\"QUERY_RESOLVE\"] = 512] = \"QUERY_RESOLVE\";\n BufferUsage2[BufferUsage2[\"STATIC\"] = 1024] = \"STATIC\";\n return BufferUsage2;\n})(BufferUsage || {});\n\nexport { BufferUsage };\n//# sourceMappingURL=const.mjs.map\n","import EventEmitter from 'eventemitter3';\nimport { uid } from '../../../../utils/data/uid.mjs';\nimport { BufferUsage } from './const.mjs';\n\n\"use strict\";\nclass Buffer extends EventEmitter {\n /**\n * Creates a new Buffer with the given options\n * @param options - the options for the buffer\n */\n constructor(options) {\n let { data, size } = options;\n const { usage, label, shrinkToFit } = options;\n super();\n /**\n * emits when the underlying buffer has changed shape (i.e. resized)\n * letting the renderer know that it needs to discard the old buffer on the GPU and create a new one\n * @event change\n */\n /**\n * emits when the underlying buffer data has been updated. letting the renderer know\n * that it needs to update the buffer on the GPU\n * @event update\n */\n /**\n * emits when the buffer is destroyed. letting the renderer know that it needs to destroy the buffer on the GPU\n * @event destroy\n */\n /** @internal */\n this._gpuData = /* @__PURE__ */ Object.create(null);\n /** @internal */\n this._gcLastUsed = -1;\n /** If set to true, the buffer will be garbage collected automatically when it is not used. */\n this.autoGarbageCollect = true;\n /** a unique id for this uniform group used through the renderer */\n this.uid = uid(\"buffer\");\n /**\n * a resource type, used to identify how to handle it when its in a bind group / shader resource\n * @internal\n */\n this._resourceType = \"buffer\";\n /**\n * the resource id used internally by the renderer to build bind group keys\n * @internal\n */\n this._resourceId = uid(\"resource\");\n /**\n * used internally to know if a uniform group was used in the last render pass\n * @internal\n */\n this._touched = 0;\n /** @internal */\n this._updateID = 1;\n this._dataInt32 = null;\n /**\n * should the GPU buffer be shrunk when the data becomes smaller?\n * changing this will cause the buffer to be destroyed and a new one created on the GPU\n * this can be expensive, especially if the buffer is already big enough!\n * setting this to false will prevent the buffer from being shrunk. This will yield better performance\n * if you are constantly setting data that is changing size often.\n * @default true\n */\n this.shrinkToFit = true;\n /**\n * Has the buffer been destroyed?\n * @readonly\n */\n this.destroyed = false;\n if (data instanceof Array) {\n data = new Float32Array(data);\n }\n this._data = data;\n size ?? (size = data?.byteLength);\n const mappedAtCreation = !!data;\n this.descriptor = {\n size,\n usage,\n mappedAtCreation,\n label\n };\n this.shrinkToFit = shrinkToFit ?? true;\n }\n /** the data in the buffer */\n get data() {\n return this._data;\n }\n set data(value) {\n this.setDataWithSize(value, value.length, true);\n }\n get dataInt32() {\n if (!this._dataInt32) {\n this._dataInt32 = new Int32Array(this.data.buffer);\n }\n return this._dataInt32;\n }\n /** whether the buffer is static or not */\n get static() {\n return !!(this.descriptor.usage & BufferUsage.STATIC);\n }\n set static(value) {\n if (value) {\n this.descriptor.usage |= BufferUsage.STATIC;\n } else {\n this.descriptor.usage &= ~BufferUsage.STATIC;\n }\n }\n /**\n * Sets the data in the buffer to the given value. This will immediately update the buffer on the GPU.\n * If you only want to update a subset of the buffer, you can pass in the size of the data.\n * @param value - the data to set\n * @param size - the size of the data in bytes\n * @param syncGPU - should the buffer be updated on the GPU immediately?\n */\n setDataWithSize(value, size, syncGPU) {\n this._updateID++;\n this._updateSize = size * value.BYTES_PER_ELEMENT;\n if (this._data === value) {\n if (syncGPU) this.emit(\"update\", this);\n return;\n }\n const oldData = this._data;\n this._data = value;\n this._dataInt32 = null;\n if (!oldData || oldData.length !== value.length) {\n if (!this.shrinkToFit && oldData && value.byteLength < oldData.byteLength) {\n if (syncGPU) this.emit(\"update\", this);\n } else {\n this.descriptor.size = value.byteLength;\n this._resourceId = uid(\"resource\");\n this.emit(\"change\", this);\n }\n return;\n }\n if (syncGPU) this.emit(\"update\", this);\n }\n /**\n * updates the buffer on the GPU to reflect the data in the buffer.\n * By default it will update the entire buffer. If you only want to update a subset of the buffer,\n * you can pass in the size of the buffer to update.\n * @param sizeInBytes - the new size of the buffer in bytes\n */\n update(sizeInBytes) {\n this._updateSize = sizeInBytes ?? this._updateSize;\n this._updateID++;\n this.emit(\"update\", this);\n }\n /** Unloads the buffer from the GPU */\n unload() {\n this.emit(\"unload\", this);\n for (const key in this._gpuData) {\n this._gpuData[key]?.destroy();\n }\n this._gpuData = /* @__PURE__ */ Object.create(null);\n }\n /** Destroys the buffer */\n destroy() {\n this.destroyed = true;\n this.unload();\n this.emit(\"destroy\", this);\n this.emit(\"change\", this);\n this._data = null;\n this.descriptor = null;\n this.removeAllListeners();\n }\n}\n\nexport { Buffer };\n//# sourceMappingURL=Buffer.mjs.map\n","import { Buffer } from '../../buffer/Buffer.mjs';\nimport { BufferUsage } from '../../buffer/const.mjs';\n\n\"use strict\";\nfunction ensureIsBuffer(buffer, index) {\n if (!(buffer instanceof Buffer)) {\n let usage = index ? BufferUsage.INDEX : BufferUsage.VERTEX;\n if (buffer instanceof Array) {\n if (index) {\n buffer = new Uint32Array(buffer);\n usage = BufferUsage.INDEX | BufferUsage.COPY_DST;\n } else {\n buffer = new Float32Array(buffer);\n usage = BufferUsage.VERTEX | BufferUsage.COPY_DST;\n }\n }\n buffer = new Buffer({\n data: buffer,\n label: index ? \"index-mesh-buffer\" : \"vertex-mesh-buffer\",\n usage\n });\n }\n return buffer;\n}\n\nexport { ensureIsBuffer };\n//# sourceMappingURL=ensureIsBuffer.mjs.map\n","\"use strict\";\nfunction getGeometryBounds(geometry, attributeId, bounds) {\n const attribute = geometry.getAttribute(attributeId);\n if (!attribute) {\n bounds.minX = 0;\n bounds.minY = 0;\n bounds.maxX = 0;\n bounds.maxY = 0;\n return bounds;\n }\n const data = attribute.buffer.data;\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n const byteSize = data.BYTES_PER_ELEMENT;\n const offset = (attribute.offset || 0) / byteSize;\n const stride = (attribute.stride || 2 * 4) / byteSize;\n for (let i = offset; i < data.length; i += stride) {\n const x = data[i];\n const y = data[i + 1];\n if (x > maxX) maxX = x;\n if (y > maxY) maxY = y;\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n }\n bounds.minX = minX;\n bounds.minY = minY;\n bounds.maxX = maxX;\n bounds.maxY = maxY;\n return bounds;\n}\n\nexport { getGeometryBounds };\n//# sourceMappingURL=getGeometryBounds.mjs.map\n","import EventEmitter from 'eventemitter3';\nimport { Bounds } from '../../../../scene/container/bounds/Bounds.mjs';\nimport { uid } from '../../../../utils/data/uid.mjs';\nimport { Buffer } from '../buffer/Buffer.mjs';\nimport { ensureIsBuffer } from './utils/ensureIsBuffer.mjs';\nimport { getGeometryBounds } from './utils/getGeometryBounds.mjs';\n\n\"use strict\";\nfunction ensureIsAttribute(attribute) {\n if (attribute instanceof Buffer || Array.isArray(attribute) || attribute.BYTES_PER_ELEMENT) {\n attribute = {\n buffer: attribute\n };\n }\n attribute.buffer = ensureIsBuffer(attribute.buffer, false);\n return attribute;\n}\nclass Geometry extends EventEmitter {\n /**\n * Create a new instance of a geometry\n * @param options - The options for the geometry.\n */\n constructor(options = {}) {\n super();\n /** @internal */\n this._gpuData = /* @__PURE__ */ Object.create(null);\n /** If set to true, the resource will be garbage collected automatically when it is not used. */\n this.autoGarbageCollect = true;\n /** @internal */\n this._gcLastUsed = -1;\n /** The unique id of the geometry. */\n this.uid = uid(\"geometry\");\n /**\n * the layout key will be generated by WebGPU all geometries that have the same structure\n * will have the same layout key. This is used to cache the pipeline layout\n * @internal\n */\n this._layoutKey = 0;\n /** the instance count of the geometry to draw */\n this.instanceCount = 1;\n this._bounds = new Bounds();\n this._boundsDirty = true;\n const { attributes, indexBuffer, topology } = options;\n this.buffers = [];\n this.attributes = {};\n if (attributes) {\n for (const i in attributes) {\n this.addAttribute(i, attributes[i]);\n }\n }\n this.instanceCount = options.instanceCount ?? 1;\n if (indexBuffer) {\n this.addIndex(indexBuffer);\n }\n this.topology = topology || \"triangle-list\";\n }\n onBufferUpdate() {\n this._boundsDirty = true;\n this.emit(\"update\", this);\n }\n /**\n * Returns the requested attribute.\n * @param id - The name of the attribute required\n * @returns - The attribute requested.\n */\n getAttribute(id) {\n return this.attributes[id];\n }\n /**\n * Returns the index buffer\n * @returns - The index buffer.\n */\n getIndex() {\n return this.indexBuffer;\n }\n /**\n * Returns the requested buffer.\n * @param id - The name of the buffer required.\n * @returns - The buffer requested.\n */\n getBuffer(id) {\n return this.getAttribute(id).buffer;\n }\n /**\n * Used to figure out how many vertices there are in this geometry\n * @returns the number of vertices in the geometry\n */\n getSize() {\n for (const i in this.attributes) {\n const attribute = this.attributes[i];\n const buffer = attribute.buffer;\n return buffer.data.length / (attribute.stride / 4 || attribute.size);\n }\n return 0;\n }\n /**\n * Adds an attribute to the geometry.\n * @param name - The name of the attribute to add.\n * @param attributeOption - The attribute option to add.\n */\n addAttribute(name, attributeOption) {\n const attribute = ensureIsAttribute(attributeOption);\n const bufferIndex = this.buffers.indexOf(attribute.buffer);\n if (bufferIndex === -1) {\n this.buffers.push(attribute.buffer);\n attribute.buffer.on(\"update\", this.onBufferUpdate, this);\n attribute.buffer.on(\"change\", this.onBufferUpdate, this);\n }\n this.attributes[name] = attribute;\n }\n /**\n * Adds an index buffer to the geometry.\n * @param indexBuffer - The index buffer to add. Can be a Buffer, TypedArray, or an array of numbers.\n */\n addIndex(indexBuffer) {\n this.indexBuffer = ensureIsBuffer(indexBuffer, true);\n this.buffers.push(this.indexBuffer);\n }\n /** Returns the bounds of the geometry. */\n get bounds() {\n if (!this._boundsDirty) return this._bounds;\n this._boundsDirty = false;\n return getGeometryBounds(this, \"aPosition\", this._bounds);\n }\n /** Unloads the geometry from the GPU. */\n unload() {\n this.emit(\"unload\", this);\n for (const key in this._gpuData) {\n this._gpuData[key]?.destroy();\n }\n this._gpuData = /* @__PURE__ */ Object.create(null);\n }\n /**\n * destroys the geometry.\n * @param destroyBuffers - destroy the buffers associated with this geometry\n */\n destroy(destroyBuffers = false) {\n this.emit(\"destroy\", this);\n this.removeAllListeners();\n if (destroyBuffers) {\n this.buffers.forEach((buffer) => buffer.destroy());\n }\n this.unload();\n this.indexBuffer?.destroy();\n this.attributes = null;\n this.buffers = null;\n this.indexBuffer = null;\n this._bounds = null;\n }\n}\n\nexport { Geometry };\n//# sourceMappingURL=Geometry.mjs.map\n"],"names":["idCounts","idHash","createIdFromString","value","groupId","id","context","getTestContext","DOMAdapter","maxFragmentPrecision","getMaxFragmentPrecision","gl","addProgramDefines","src","isES300","isFragment","ensurePrecision","options","maxSupportedPrecision","precision","insertVersion","fragmentNameCache","VertexNameCache","setProgramName","name","nameCache","stripVersion","processes","programCache","_GlProgram","preprocessorOptions","fragment","vertex","processKey","processOptions","key","GlProgram","attributeFormatData","getAttributeInfoFromFormat","format","WGSL_TO_VERTEX_TYPES","LOCATION_REGEX","parseLocations","str","results","match","stripComments","source","extractAttributesFromGpuProgram","entryPoint","cleanSource","mainVertStart","arrowFunctionStart","functionArgsSubstring","structMatch","structName","structRegex","structBody","extractStructAndGroups","wgsl","linePattern","groupPattern","bindingPattern","namePattern","typePattern","structPattern","structMemberPattern","groups","_a","item","structs","_b","struct","members","acc","member","name2","type","group","ShaderStage","ShaderStage2","generateGpuLayoutGroups","layout","i","generateLayoutHash","removeStructAndGroupDuplicates","vertexStructsAndGroups","fragmentStructsAndGroups","structNameSet","dupeGroupKeySet","GpuProgram","gpuLayout","structsAndGroups","bigKey","UNIFORM_TYPES_VALUES","UNIFORM_TYPES_MAP","getDefaultUniformValue","size","_UniformGroup","uniformStructures","uid","uniforms","uniformData","arrayMatch","innerType","UniformGroup","BindGroup","resources","index","resource","keyParts","currentResource","now","tick","RendererType","RendererType2","Shader","EventEmitter","gpuProgram","glProgram","compatibleRenderers","groupMap","nameHash","j","uniformName","groupData","data","bindTick","groupIndex","bindIndex","uniformsOut","destroyPrograms","bindGroup","gpu","rest","blendModeIds","BLEND","OFFSET","CULLING","DEPTH_TEST","WINDING","DEPTH_MASK","_State","state","State","_Filter","filterManager","input","output","clearMode","Filter","BufferUsage","BufferUsage2","usage","label","shrinkToFit","mappedAtCreation","syncGPU","oldData","sizeInBytes","ensureIsBuffer","buffer","Buffer","getGeometryBounds","geometry","attributeId","bounds","attribute","minX","minY","maxX","maxY","byteSize","offset","stride","x","y","ensureIsAttribute","Geometry","Bounds","attributes","indexBuffer","topology","attributeOption","destroyBuffers"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29]}
|
|
1
|
+
{"version":3,"file":"Geometry-B-K9I6MO.js","sources":["../node_modules/pixi.js/lib/rendering/renderers/shared/utils/createIdFromString.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/getTestContext.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/getMaxFragmentPrecision.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/preprocessors/addProgramDefines.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/preprocessors/ensurePrecision.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/preprocessors/insertVersion.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/preprocessors/setProgramName.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/preprocessors/stripVersion.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/GlProgram.mjs","../node_modules/pixi.js/lib/rendering/renderers/shared/geometry/utils/getAttributeInfoFromFormat.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/shader/utils/extractAttributesFromGpuProgram.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/shader/utils/extractStructAndGroups.mjs","../node_modules/pixi.js/lib/rendering/renderers/shared/shader/const.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/shader/utils/generateGpuLayoutGroups.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/shader/utils/generateLayoutHash.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/shader/utils/removeStructAndGroupDuplicates.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/shader/GpuProgram.mjs","../node_modules/pixi.js/lib/rendering/renderers/shared/shader/types.mjs","../node_modules/pixi.js/lib/rendering/renderers/shared/shader/utils/getDefaultUniformValue.mjs","../node_modules/pixi.js/lib/rendering/renderers/shared/shader/UniformGroup.mjs","../node_modules/pixi.js/lib/rendering/renderers/gpu/shader/BindGroup.mjs","../node_modules/pixi.js/lib/rendering/renderers/types.mjs","../node_modules/pixi.js/lib/rendering/renderers/shared/shader/Shader.mjs","../node_modules/pixi.js/lib/rendering/renderers/shared/state/State.mjs","../node_modules/pixi.js/lib/filters/Filter.mjs","../node_modules/pixi.js/lib/rendering/renderers/shared/buffer/const.mjs","../node_modules/pixi.js/lib/rendering/renderers/shared/buffer/Buffer.mjs","../node_modules/pixi.js/lib/rendering/renderers/shared/geometry/utils/ensureIsBuffer.mjs","../node_modules/pixi.js/lib/rendering/renderers/shared/geometry/utils/getGeometryBounds.mjs","../node_modules/pixi.js/lib/rendering/renderers/shared/geometry/Geometry.mjs"],"sourcesContent":["\"use strict\";\nconst idCounts = /* @__PURE__ */ Object.create(null);\nconst idHash = /* @__PURE__ */ Object.create(null);\nfunction createIdFromString(value, groupId) {\n let id = idHash[value];\n if (id === void 0) {\n if (idCounts[groupId] === void 0) {\n idCounts[groupId] = 1;\n }\n idHash[value] = id = idCounts[groupId]++;\n }\n return id;\n}\n\nexport { createIdFromString };\n//# sourceMappingURL=createIdFromString.mjs.map\n","import { DOMAdapter } from '../../../../../environment/adapter.mjs';\n\n\"use strict\";\nlet context;\nfunction getTestContext() {\n if (!context || context?.isContextLost()) {\n const canvas = DOMAdapter.get().createCanvas();\n context = canvas.getContext(\"webgl\", {});\n }\n return context;\n}\n\nexport { getTestContext };\n//# sourceMappingURL=getTestContext.mjs.map\n","import { getTestContext } from './getTestContext.mjs';\n\n\"use strict\";\nlet maxFragmentPrecision;\nfunction getMaxFragmentPrecision() {\n if (!maxFragmentPrecision) {\n maxFragmentPrecision = \"mediump\";\n const gl = getTestContext();\n if (gl) {\n if (gl.getShaderPrecisionFormat) {\n const shaderFragment = gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_FLOAT);\n maxFragmentPrecision = shaderFragment.precision ? \"highp\" : \"mediump\";\n }\n }\n }\n return maxFragmentPrecision;\n}\n\nexport { getMaxFragmentPrecision };\n//# sourceMappingURL=getMaxFragmentPrecision.mjs.map\n","\"use strict\";\nfunction addProgramDefines(src, isES300, isFragment) {\n if (isES300) return src;\n if (isFragment) {\n src = src.replace(\"out vec4 finalColor;\", \"\");\n return `\n\n #ifdef GL_ES // This checks if it is WebGL1\n #define in varying\n #define finalColor gl_FragColor\n #define texture texture2D\n #endif\n ${src}\n `;\n }\n return `\n\n #ifdef GL_ES // This checks if it is WebGL1\n #define in attribute\n #define out varying\n #endif\n ${src}\n `;\n}\n\nexport { addProgramDefines };\n//# sourceMappingURL=addProgramDefines.mjs.map\n","\"use strict\";\nfunction ensurePrecision(src, options, isFragment) {\n const maxSupportedPrecision = isFragment ? options.maxSupportedFragmentPrecision : options.maxSupportedVertexPrecision;\n if (src.substring(0, 9) !== \"precision\") {\n let precision = isFragment ? options.requestedFragmentPrecision : options.requestedVertexPrecision;\n if (precision === \"highp\" && maxSupportedPrecision !== \"highp\") {\n precision = \"mediump\";\n }\n return `precision ${precision} float;\n${src}`;\n } else if (maxSupportedPrecision !== \"highp\" && src.substring(0, 15) === \"precision highp\") {\n return src.replace(\"precision highp\", \"precision mediump\");\n }\n return src;\n}\n\nexport { ensurePrecision };\n//# sourceMappingURL=ensurePrecision.mjs.map\n","\"use strict\";\nfunction insertVersion(src, isES300) {\n if (!isES300) return src;\n return `#version 300 es\n${src}`;\n}\n\nexport { insertVersion };\n//# sourceMappingURL=insertVersion.mjs.map\n","\"use strict\";\nconst fragmentNameCache = {};\nconst VertexNameCache = {};\nfunction setProgramName(src, { name = `pixi-program` }, isFragment = true) {\n name = name.replace(/\\s+/g, \"-\");\n name += isFragment ? \"-fragment\" : \"-vertex\";\n const nameCache = isFragment ? fragmentNameCache : VertexNameCache;\n if (nameCache[name]) {\n nameCache[name]++;\n name += `-${nameCache[name]}`;\n } else {\n nameCache[name] = 1;\n }\n if (src.indexOf(\"#define SHADER_NAME\") !== -1) return src;\n const shaderName = `#define SHADER_NAME ${name}`;\n return `${shaderName}\n${src}`;\n}\n\nexport { setProgramName };\n//# sourceMappingURL=setProgramName.mjs.map\n","\"use strict\";\nfunction stripVersion(src, isES300) {\n if (!isES300) return src;\n return src.replace(\"#version 300 es\", \"\");\n}\n\nexport { stripVersion };\n//# sourceMappingURL=stripVersion.mjs.map\n","import { createIdFromString } from '../../shared/utils/createIdFromString.mjs';\nimport { getMaxFragmentPrecision } from './program/getMaxFragmentPrecision.mjs';\nimport { addProgramDefines } from './program/preprocessors/addProgramDefines.mjs';\nimport { ensurePrecision } from './program/preprocessors/ensurePrecision.mjs';\nimport { insertVersion } from './program/preprocessors/insertVersion.mjs';\nimport { setProgramName } from './program/preprocessors/setProgramName.mjs';\nimport { stripVersion } from './program/preprocessors/stripVersion.mjs';\n\n\"use strict\";\nconst processes = {\n // strips any version headers..\n stripVersion,\n // adds precision string if not already present\n ensurePrecision,\n // add some defines if WebGL1 to make it more compatible with WebGL2 shaders\n addProgramDefines,\n // add the program name to the shader\n setProgramName,\n // add the version string to the shader header\n insertVersion\n};\nconst programCache = /* @__PURE__ */ Object.create(null);\nconst _GlProgram = class _GlProgram {\n /**\n * Creates a shiny new GlProgram. Used by WebGL renderer.\n * @param options - The options for the program.\n */\n constructor(options) {\n options = { ..._GlProgram.defaultOptions, ...options };\n const isES300 = options.fragment.indexOf(\"#version 300 es\") !== -1;\n const preprocessorOptions = {\n stripVersion: isES300,\n ensurePrecision: {\n requestedFragmentPrecision: options.preferredFragmentPrecision,\n requestedVertexPrecision: options.preferredVertexPrecision,\n maxSupportedVertexPrecision: \"highp\",\n maxSupportedFragmentPrecision: getMaxFragmentPrecision()\n },\n setProgramName: {\n name: options.name\n },\n addProgramDefines: isES300,\n insertVersion: isES300\n };\n let fragment = options.fragment;\n let vertex = options.vertex;\n Object.keys(processes).forEach((processKey) => {\n const processOptions = preprocessorOptions[processKey];\n fragment = processes[processKey](fragment, processOptions, true);\n vertex = processes[processKey](vertex, processOptions, false);\n });\n this.fragment = fragment;\n this.vertex = vertex;\n this.transformFeedbackVaryings = options.transformFeedbackVaryings;\n this._key = createIdFromString(`${this.vertex}:${this.fragment}`, \"gl-program\");\n }\n /** destroys the program */\n destroy() {\n this.fragment = null;\n this.vertex = null;\n this._attributeData = null;\n this._uniformData = null;\n this._uniformBlockData = null;\n this.transformFeedbackVaryings = null;\n programCache[this._cacheKey] = null;\n }\n /**\n * Helper function that creates a program for a given source.\n * It will check the program cache if the program has already been created.\n * If it has that one will be returned, if not a new one will be created and cached.\n * @param options - The options for the program.\n * @returns A program using the same source\n */\n static from(options) {\n const key = `${options.vertex}:${options.fragment}`;\n if (!programCache[key]) {\n programCache[key] = new _GlProgram(options);\n programCache[key]._cacheKey = key;\n }\n return programCache[key];\n }\n};\n/** The default options used by the program. */\n_GlProgram.defaultOptions = {\n preferredVertexPrecision: \"highp\",\n preferredFragmentPrecision: \"mediump\"\n};\nlet GlProgram = _GlProgram;\n\nexport { GlProgram };\n//# sourceMappingURL=GlProgram.mjs.map\n","\"use strict\";\nconst attributeFormatData = {\n uint8x2: { size: 2, stride: 2, normalised: false },\n uint8x4: { size: 4, stride: 4, normalised: false },\n sint8x2: { size: 2, stride: 2, normalised: false },\n sint8x4: { size: 4, stride: 4, normalised: false },\n unorm8x2: { size: 2, stride: 2, normalised: true },\n unorm8x4: { size: 4, stride: 4, normalised: true },\n snorm8x2: { size: 2, stride: 2, normalised: true },\n snorm8x4: { size: 4, stride: 4, normalised: true },\n uint16x2: { size: 2, stride: 4, normalised: false },\n uint16x4: { size: 4, stride: 8, normalised: false },\n sint16x2: { size: 2, stride: 4, normalised: false },\n sint16x4: { size: 4, stride: 8, normalised: false },\n unorm16x2: { size: 2, stride: 4, normalised: true },\n unorm16x4: { size: 4, stride: 8, normalised: true },\n snorm16x2: { size: 2, stride: 4, normalised: true },\n snorm16x4: { size: 4, stride: 8, normalised: true },\n float16x2: { size: 2, stride: 4, normalised: false },\n float16x4: { size: 4, stride: 8, normalised: false },\n float32: { size: 1, stride: 4, normalised: false },\n float32x2: { size: 2, stride: 8, normalised: false },\n float32x3: { size: 3, stride: 12, normalised: false },\n float32x4: { size: 4, stride: 16, normalised: false },\n uint32: { size: 1, stride: 4, normalised: false },\n uint32x2: { size: 2, stride: 8, normalised: false },\n uint32x3: { size: 3, stride: 12, normalised: false },\n uint32x4: { size: 4, stride: 16, normalised: false },\n sint32: { size: 1, stride: 4, normalised: false },\n sint32x2: { size: 2, stride: 8, normalised: false },\n sint32x3: { size: 3, stride: 12, normalised: false },\n sint32x4: { size: 4, stride: 16, normalised: false }\n};\nfunction getAttributeInfoFromFormat(format) {\n return attributeFormatData[format] ?? attributeFormatData.float32;\n}\n\nexport { getAttributeInfoFromFormat };\n//# sourceMappingURL=getAttributeInfoFromFormat.mjs.map\n","import { getAttributeInfoFromFormat } from '../../../shared/geometry/utils/getAttributeInfoFromFormat.mjs';\n\n\"use strict\";\nconst WGSL_TO_VERTEX_TYPES = {\n f32: \"float32\",\n \"vec2<f32>\": \"float32x2\",\n \"vec3<f32>\": \"float32x3\",\n \"vec4<f32>\": \"float32x4\",\n vec2f: \"float32x2\",\n vec3f: \"float32x3\",\n vec4f: \"float32x4\",\n i32: \"sint32\",\n \"vec2<i32>\": \"sint32x2\",\n \"vec3<i32>\": \"sint32x3\",\n \"vec4<i32>\": \"sint32x4\",\n vec2i: \"sint32x2\",\n vec3i: \"sint32x3\",\n vec4i: \"sint32x4\",\n u32: \"uint32\",\n \"vec2<u32>\": \"uint32x2\",\n \"vec3<u32>\": \"uint32x3\",\n \"vec4<u32>\": \"uint32x4\",\n vec2u: \"uint32x2\",\n vec3u: \"uint32x3\",\n vec4u: \"uint32x4\",\n bool: \"uint32\",\n \"vec2<bool>\": \"uint32x2\",\n \"vec3<bool>\": \"uint32x3\",\n \"vec4<bool>\": \"uint32x4\"\n};\nconst LOCATION_REGEX = /@location\\((\\d+)\\)\\s+([a-zA-Z0-9_]+)\\s*:\\s*([a-zA-Z0-9_<>]+)(?:,|\\s|\\)|$)/g;\nfunction parseLocations(str, results) {\n let match;\n while ((match = LOCATION_REGEX.exec(str)) !== null) {\n const format = WGSL_TO_VERTEX_TYPES[match[3]] ?? \"float32\";\n results[match[2]] = {\n location: parseInt(match[1], 10),\n format,\n stride: getAttributeInfoFromFormat(format).stride,\n offset: 0,\n instance: false,\n start: 0\n };\n }\n LOCATION_REGEX.lastIndex = 0;\n}\nfunction stripComments(source) {\n return source.replace(/\\/\\/.*$/gm, \"\").replace(/\\/\\*[\\s\\S]*?\\*\\//g, \"\");\n}\nfunction extractAttributesFromGpuProgram({ source, entryPoint }) {\n const results = {};\n const cleanSource = stripComments(source);\n const mainVertStart = cleanSource.indexOf(`fn ${entryPoint}(`);\n if (mainVertStart === -1) {\n return results;\n }\n const arrowFunctionStart = cleanSource.indexOf(\"->\", mainVertStart);\n if (arrowFunctionStart === -1) {\n return results;\n }\n const functionArgsSubstring = cleanSource.substring(mainVertStart, arrowFunctionStart);\n parseLocations(functionArgsSubstring, results);\n if (Object.keys(results).length === 0) {\n const structMatch = functionArgsSubstring.match(/\\(\\s*\\w+\\s*:\\s*(\\w+)/);\n if (structMatch) {\n const structName = structMatch[1];\n const structRegex = new RegExp(`struct\\\\s+${structName}\\\\s*\\\\{([^}]+)\\\\}`, \"s\");\n const structBody = cleanSource.match(structRegex);\n if (structBody) {\n parseLocations(structBody[1], results);\n }\n }\n }\n return results;\n}\n\nexport { extractAttributesFromGpuProgram };\n//# sourceMappingURL=extractAttributesFromGpuProgram.mjs.map\n","\"use strict\";\nfunction extractStructAndGroups(wgsl) {\n const linePattern = /(^|[^/])@(group|binding)\\(\\d+\\)[^;]+;/g;\n const groupPattern = /@group\\((\\d+)\\)/;\n const bindingPattern = /@binding\\((\\d+)\\)/;\n const namePattern = /var(<[^>]+>)? (\\w+)/;\n const typePattern = /:\\s*([\\w<>]+)/;\n const structPattern = /struct\\s+(\\w+)\\s*{([^}]+)}/g;\n const structMemberPattern = /(\\w+)\\s*:\\s*([\\w\\<\\>]+)/g;\n const structName = /struct\\s+(\\w+)/;\n const groups = wgsl.match(linePattern)?.map((item) => ({\n group: parseInt(item.match(groupPattern)[1], 10),\n binding: parseInt(item.match(bindingPattern)[1], 10),\n name: item.match(namePattern)[2],\n isUniform: item.match(namePattern)[1] === \"<uniform>\",\n type: item.match(typePattern)[1]\n }));\n if (!groups) {\n return {\n groups: [],\n structs: []\n };\n }\n const structs = wgsl.match(structPattern)?.map((struct) => {\n const name = struct.match(structName)[1];\n const members = struct.match(structMemberPattern).reduce((acc, member) => {\n const [name2, type] = member.split(\":\");\n acc[name2.trim()] = type.trim();\n return acc;\n }, {});\n if (!members) {\n return null;\n }\n return { name, members };\n }).filter(({ name }) => groups.some(\n (group) => (\n // Handle both direct type matches and generic types like array<StructName>\n group.type === name || group.type.includes(`<${name}>`)\n )\n )) ?? [];\n return {\n groups,\n structs\n };\n}\n\nexport { extractStructAndGroups };\n//# sourceMappingURL=extractStructAndGroups.mjs.map\n","\"use strict\";\nvar ShaderStage = /* @__PURE__ */ ((ShaderStage2) => {\n ShaderStage2[ShaderStage2[\"VERTEX\"] = 1] = \"VERTEX\";\n ShaderStage2[ShaderStage2[\"FRAGMENT\"] = 2] = \"FRAGMENT\";\n ShaderStage2[ShaderStage2[\"COMPUTE\"] = 4] = \"COMPUTE\";\n return ShaderStage2;\n})(ShaderStage || {});\n\nexport { ShaderStage };\n//# sourceMappingURL=const.mjs.map\n","import { ShaderStage } from '../../../shared/shader/const.mjs';\n\n\"use strict\";\nfunction generateGpuLayoutGroups({ groups }) {\n const layout = [];\n for (let i = 0; i < groups.length; i++) {\n const group = groups[i];\n if (!layout[group.group]) {\n layout[group.group] = [];\n }\n if (group.isUniform) {\n layout[group.group].push({\n binding: group.binding,\n visibility: ShaderStage.VERTEX | ShaderStage.FRAGMENT,\n buffer: {\n type: \"uniform\"\n }\n });\n } else if (group.type === \"sampler\") {\n layout[group.group].push({\n binding: group.binding,\n visibility: ShaderStage.FRAGMENT,\n sampler: {\n type: \"filtering\"\n }\n });\n } else if (group.type === \"texture_2d\" || group.type.startsWith(\"texture_2d<\")) {\n layout[group.group].push({\n binding: group.binding,\n visibility: ShaderStage.FRAGMENT,\n texture: {\n sampleType: \"float\",\n viewDimension: \"2d\",\n multisampled: false\n }\n });\n } else if (group.type === \"texture_2d_array\" || group.type.startsWith(\"texture_2d_array<\")) {\n layout[group.group].push({\n binding: group.binding,\n visibility: ShaderStage.FRAGMENT,\n texture: {\n sampleType: \"float\",\n viewDimension: \"2d-array\",\n multisampled: false\n }\n });\n } else if (group.type === \"texture_cube\" || group.type.startsWith(\"texture_cube<\")) {\n layout[group.group].push({\n binding: group.binding,\n visibility: ShaderStage.FRAGMENT,\n texture: {\n sampleType: \"float\",\n viewDimension: \"cube\",\n multisampled: false\n }\n });\n }\n }\n for (let i = 0; i < layout.length; i++) {\n layout[i] || (layout[i] = []);\n }\n return layout;\n}\n\nexport { generateGpuLayoutGroups };\n//# sourceMappingURL=generateGpuLayoutGroups.mjs.map\n","\"use strict\";\nfunction generateLayoutHash({ groups }) {\n const layout = [];\n for (let i = 0; i < groups.length; i++) {\n const group = groups[i];\n if (!layout[group.group]) {\n layout[group.group] = {};\n }\n layout[group.group][group.name] = group.binding;\n }\n return layout;\n}\n\nexport { generateLayoutHash };\n//# sourceMappingURL=generateLayoutHash.mjs.map\n","\"use strict\";\nfunction removeStructAndGroupDuplicates(vertexStructsAndGroups, fragmentStructsAndGroups) {\n const structNameSet = /* @__PURE__ */ new Set();\n const dupeGroupKeySet = /* @__PURE__ */ new Set();\n const structs = [...vertexStructsAndGroups.structs, ...fragmentStructsAndGroups.structs].filter((struct) => {\n if (structNameSet.has(struct.name)) {\n return false;\n }\n structNameSet.add(struct.name);\n return true;\n });\n const groups = [...vertexStructsAndGroups.groups, ...fragmentStructsAndGroups.groups].filter((group) => {\n const key = `${group.name}-${group.binding}`;\n if (dupeGroupKeySet.has(key)) {\n return false;\n }\n dupeGroupKeySet.add(key);\n return true;\n });\n return { structs, groups };\n}\n\nexport { removeStructAndGroupDuplicates };\n//# sourceMappingURL=removeStructAndGroupDuplicates.mjs.map\n","import { createIdFromString } from '../../shared/utils/createIdFromString.mjs';\nimport { extractAttributesFromGpuProgram } from './utils/extractAttributesFromGpuProgram.mjs';\nimport { extractStructAndGroups } from './utils/extractStructAndGroups.mjs';\nimport { generateGpuLayoutGroups } from './utils/generateGpuLayoutGroups.mjs';\nimport { generateLayoutHash } from './utils/generateLayoutHash.mjs';\nimport { removeStructAndGroupDuplicates } from './utils/removeStructAndGroupDuplicates.mjs';\n\n\"use strict\";\nconst programCache = /* @__PURE__ */ Object.create(null);\nclass GpuProgram {\n /**\n * Create a new GpuProgram\n * @param options - The options for the gpu program\n */\n constructor(options) {\n /** @internal */\n this._layoutKey = 0;\n /** @internal */\n this._attributeLocationsKey = 0;\n const { fragment, vertex, layout, gpuLayout, name } = options;\n this.name = name;\n this.fragment = fragment;\n this.vertex = vertex;\n if (fragment.source === vertex.source) {\n const structsAndGroups = extractStructAndGroups(fragment.source);\n this.structsAndGroups = structsAndGroups;\n } else {\n const vertexStructsAndGroups = extractStructAndGroups(vertex.source);\n const fragmentStructsAndGroups = extractStructAndGroups(fragment.source);\n this.structsAndGroups = removeStructAndGroupDuplicates(vertexStructsAndGroups, fragmentStructsAndGroups);\n }\n this.layout = layout ?? generateLayoutHash(this.structsAndGroups);\n this.gpuLayout = gpuLayout ?? generateGpuLayoutGroups(this.structsAndGroups);\n this.autoAssignGlobalUniforms = !!(this.layout[0]?.globalUniforms !== void 0);\n this.autoAssignLocalUniforms = !!(this.layout[1]?.localUniforms !== void 0);\n this._generateProgramKey();\n }\n // TODO maker this pure\n _generateProgramKey() {\n const { vertex, fragment } = this;\n const bigKey = vertex.source + fragment.source + vertex.entryPoint + fragment.entryPoint;\n this._layoutKey = createIdFromString(bigKey, \"program\");\n }\n get attributeData() {\n this._attributeData ?? (this._attributeData = extractAttributesFromGpuProgram(this.vertex));\n return this._attributeData;\n }\n /** destroys the program */\n destroy() {\n this.gpuLayout = null;\n this.layout = null;\n this.structsAndGroups = null;\n this.fragment = null;\n this.vertex = null;\n programCache[this._cacheKey] = null;\n }\n /**\n * Helper function that creates a program for a given source.\n * It will check the program cache if the program has already been created.\n * If it has that one will be returned, if not a new one will be created and cached.\n * @param options - The options for the program.\n * @returns A program using the same source\n */\n static from(options) {\n const key = `${options.vertex.source}:${options.fragment.source}:${options.fragment.entryPoint}:${options.vertex.entryPoint}`;\n if (!programCache[key]) {\n programCache[key] = new GpuProgram(options);\n programCache[key]._cacheKey = key;\n }\n return programCache[key];\n }\n}\n\nexport { GpuProgram };\n//# sourceMappingURL=GpuProgram.mjs.map\n","\"use strict\";\nconst UNIFORM_TYPES_VALUES = [\n \"f32\",\n \"i32\",\n \"vec2<f32>\",\n \"vec3<f32>\",\n \"vec4<f32>\",\n \"mat2x2<f32>\",\n \"mat3x3<f32>\",\n \"mat4x4<f32>\",\n \"mat3x2<f32>\",\n \"mat4x2<f32>\",\n \"mat2x3<f32>\",\n \"mat4x3<f32>\",\n \"mat2x4<f32>\",\n \"mat3x4<f32>\",\n \"vec2<i32>\",\n \"vec3<i32>\",\n \"vec4<i32>\"\n];\nconst UNIFORM_TYPES_MAP = UNIFORM_TYPES_VALUES.reduce((acc, type) => {\n acc[type] = true;\n return acc;\n}, {});\n\nexport { UNIFORM_TYPES_MAP, UNIFORM_TYPES_VALUES };\n//# sourceMappingURL=types.mjs.map\n","\"use strict\";\nfunction getDefaultUniformValue(type, size) {\n switch (type) {\n case \"f32\":\n return 0;\n case \"vec2<f32>\":\n return new Float32Array(2 * size);\n case \"vec3<f32>\":\n return new Float32Array(3 * size);\n case \"vec4<f32>\":\n return new Float32Array(4 * size);\n case \"mat2x2<f32>\":\n return new Float32Array([\n 1,\n 0,\n 0,\n 1\n ]);\n case \"mat3x3<f32>\":\n return new Float32Array([\n 1,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 1\n ]);\n case \"mat4x4<f32>\":\n return new Float32Array([\n 1,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 1\n ]);\n }\n return null;\n}\n\nexport { getDefaultUniformValue };\n//# sourceMappingURL=getDefaultUniformValue.mjs.map\n","import { uid } from '../../../../utils/data/uid.mjs';\nimport { createIdFromString } from '../utils/createIdFromString.mjs';\nimport { UNIFORM_TYPES_MAP, UNIFORM_TYPES_VALUES } from './types.mjs';\nimport { getDefaultUniformValue } from './utils/getDefaultUniformValue.mjs';\n\n\"use strict\";\nconst _UniformGroup = class _UniformGroup {\n /**\n * Create a new Uniform group\n * @param uniformStructures - The structures of the uniform group\n * @param options - The optional parameters of this uniform group\n */\n constructor(uniformStructures, options) {\n /**\n * used internally to know if a uniform group was used in the last render pass\n * @internal\n */\n this._touched = 0;\n /** a unique id for this uniform group used through the renderer */\n this.uid = uid(\"uniform\");\n /**\n * a resource type, used to identify how to handle it when its in a bind group / shader resource\n * @internal\n */\n this._resourceType = \"uniformGroup\";\n /**\n * the resource id used internally by the renderer to build bind group keys\n * @internal\n */\n this._resourceId = uid(\"resource\");\n /** used ito identify if this is a uniform group */\n this.isUniformGroup = true;\n /**\n * used to flag if this Uniform groups data is different from what it has stored in its buffer / on the GPU\n * @internal\n */\n this._dirtyId = 0;\n // implementing the interface - UniformGroup are not destroyed\n this.destroyed = false;\n options = { ..._UniformGroup.defaultOptions, ...options };\n this.uniformStructures = uniformStructures;\n const uniforms = {};\n for (const i in uniformStructures) {\n const uniformData = uniformStructures[i];\n uniformData.name = i;\n uniformData.size = uniformData.size ?? 1;\n if (!UNIFORM_TYPES_MAP[uniformData.type]) {\n const arrayMatch = uniformData.type.match(/^array<(\\w+(?:<\\w+>)?),\\s*(\\d+)>$/);\n if (arrayMatch) {\n const [, innerType, size] = arrayMatch;\n throw new Error(\n `Uniform type ${uniformData.type} is not supported. Use type: '${innerType}', size: ${size} instead.`\n );\n }\n throw new Error(`Uniform type ${uniformData.type} is not supported. Supported uniform types are: ${UNIFORM_TYPES_VALUES.join(\", \")}`);\n }\n uniformData.value ?? (uniformData.value = getDefaultUniformValue(uniformData.type, uniformData.size));\n uniforms[i] = uniformData.value;\n }\n this.uniforms = uniforms;\n this._dirtyId = 1;\n this.ubo = options.ubo;\n this.isStatic = options.isStatic;\n this._signature = createIdFromString(Object.keys(uniforms).map(\n (i) => `${i}-${uniformStructures[i].type}`\n ).join(\"-\"), \"uniform-group\");\n }\n /** Call this if you want the uniform groups data to be uploaded to the GPU only useful if `isStatic` is true. */\n update() {\n this._dirtyId++;\n }\n};\n/** The default options used by the uniform group. */\n_UniformGroup.defaultOptions = {\n /** if true the UniformGroup is handled as an Uniform buffer object. */\n ubo: false,\n /** if true, then you are responsible for when the data is uploaded to the GPU by calling `update()` */\n isStatic: false\n};\nlet UniformGroup = _UniformGroup;\n\nexport { UniformGroup };\n//# sourceMappingURL=UniformGroup.mjs.map\n","\"use strict\";\nclass BindGroup {\n /**\n * Create a new instance eof the Bind Group.\n * @param resources - The resources that are bound together for use by a shader.\n */\n constructor(resources) {\n /** The resources that are bound together for use by a shader. */\n this.resources = /* @__PURE__ */ Object.create(null);\n this._dirty = true;\n let index = 0;\n for (const i in resources) {\n const resource = resources[i];\n this.setResource(resource, index++);\n }\n this._updateKey();\n }\n /**\n * Updates the key if its flagged as dirty. This is used internally to\n * match this bind group to a WebGPU BindGroup.\n * @internal\n */\n _updateKey() {\n if (!this._dirty) return;\n this._dirty = false;\n const keyParts = [];\n let index = 0;\n for (const i in this.resources) {\n keyParts[index++] = this.resources[i]._resourceId;\n }\n this._key = keyParts.join(\"|\");\n }\n /**\n * Set a resource at a given index. this function will\n * ensure that listeners will be removed from the current resource\n * and added to the new resource.\n * @param resource - The resource to set.\n * @param index - The index to set the resource at.\n */\n setResource(resource, index) {\n const currentResource = this.resources[index];\n if (resource === currentResource) return;\n currentResource?.off?.(\"change\", this.onResourceChange, this);\n resource.on?.(\"change\", this.onResourceChange, this);\n this.resources[index] = resource;\n this._dirty = true;\n }\n /**\n * Returns the resource at the current specified index.\n * @param index - The index of the resource to get.\n * @returns - The resource at the specified index.\n */\n getResource(index) {\n return this.resources[index];\n }\n /**\n * Used internally to 'touch' each resource, to ensure that the GC\n * knows that all resources in this bind group are still being used.\n * @param now - The current time in milliseconds.\n * @param tick - The current tick.\n * @internal\n */\n _touch(now, tick) {\n const resources = this.resources;\n for (const i in resources) {\n resources[i]._gcLastUsed = now;\n resources[i]._touched = tick;\n }\n }\n /** Destroys this bind group and removes all listeners. */\n destroy() {\n const resources = this.resources;\n for (const i in resources) {\n const resource = resources[i];\n resource?.off?.(\"change\", this.onResourceChange, this);\n }\n this.resources = null;\n }\n onResourceChange(resource) {\n this._dirty = true;\n if (resource.destroyed) {\n this.destroy();\n } else {\n this._updateKey();\n }\n }\n}\n\nexport { BindGroup };\n//# sourceMappingURL=BindGroup.mjs.map\n","\"use strict\";\nvar RendererType = /* @__PURE__ */ ((RendererType2) => {\n RendererType2[RendererType2[\"WEBGL\"] = 1] = \"WEBGL\";\n RendererType2[RendererType2[\"WEBGPU\"] = 2] = \"WEBGPU\";\n RendererType2[RendererType2[\"CANVAS\"] = 4] = \"CANVAS\";\n RendererType2[RendererType2[\"BOTH\"] = 3] = \"BOTH\";\n return RendererType2;\n})(RendererType || {});\n\nexport { RendererType };\n//# sourceMappingURL=types.mjs.map\n","import EventEmitter from 'eventemitter3';\nimport { uid } from '../../../../utils/data/uid.mjs';\nimport { GlProgram } from '../../gl/shader/GlProgram.mjs';\nimport { BindGroup } from '../../gpu/shader/BindGroup.mjs';\nimport { GpuProgram } from '../../gpu/shader/GpuProgram.mjs';\nimport { RendererType } from '../../types.mjs';\nimport { UniformGroup } from './UniformGroup.mjs';\n\n\"use strict\";\nclass Shader extends EventEmitter {\n constructor(options) {\n super();\n /** A unique identifier for the shader */\n this.uid = uid(\"shader\");\n /**\n * A record of the uniform groups and resources used by the shader.\n * This is used by WebGL renderer to sync uniform data.\n * @internal\n */\n this._uniformBindMap = /* @__PURE__ */ Object.create(null);\n this._ownedBindGroups = [];\n /** @internal */\n this._destroyed = false;\n let {\n gpuProgram,\n glProgram,\n groups,\n resources,\n compatibleRenderers,\n groupMap\n } = options;\n this.gpuProgram = gpuProgram;\n this.glProgram = glProgram;\n if (compatibleRenderers === void 0) {\n compatibleRenderers = 0;\n if (gpuProgram) compatibleRenderers |= RendererType.WEBGPU;\n if (glProgram) compatibleRenderers |= RendererType.WEBGL;\n }\n this.compatibleRenderers = compatibleRenderers;\n const nameHash = {};\n if (!resources && !groups) {\n resources = {};\n }\n if (resources && groups) {\n throw new Error(\"[Shader] Cannot have both resources and groups\");\n } else if (!gpuProgram && groups && !groupMap) {\n throw new Error(\"[Shader] No group map or WebGPU shader provided - consider using resources instead.\");\n } else if (!gpuProgram && groups && groupMap) {\n for (const i in groupMap) {\n for (const j in groupMap[i]) {\n const uniformName = groupMap[i][j];\n nameHash[uniformName] = {\n group: i,\n binding: j,\n name: uniformName\n };\n }\n }\n } else if (gpuProgram && groups && !groupMap) {\n const groupData = gpuProgram.structsAndGroups.groups;\n groupMap = {};\n groupData.forEach((data) => {\n groupMap[data.group] = groupMap[data.group] || {};\n groupMap[data.group][data.binding] = data.name;\n nameHash[data.name] = data;\n });\n } else if (resources) {\n groups = {};\n groupMap = {};\n if (gpuProgram) {\n const groupData = gpuProgram.structsAndGroups.groups;\n groupData.forEach((data) => {\n groupMap[data.group] = groupMap[data.group] || {};\n groupMap[data.group][data.binding] = data.name;\n nameHash[data.name] = data;\n });\n }\n let bindTick = 0;\n for (const i in resources) {\n if (nameHash[i]) continue;\n if (!groups[99]) {\n groups[99] = new BindGroup();\n this._ownedBindGroups.push(groups[99]);\n }\n nameHash[i] = { group: 99, binding: bindTick, name: i };\n groupMap[99] = groupMap[99] || {};\n groupMap[99][bindTick] = i;\n bindTick++;\n }\n for (const i in resources) {\n const name = i;\n let value = resources[i];\n if (!value.source && !value._resourceType) {\n value = new UniformGroup(value);\n }\n const data = nameHash[name];\n if (data) {\n if (!groups[data.group]) {\n groups[data.group] = new BindGroup();\n this._ownedBindGroups.push(groups[data.group]);\n }\n groups[data.group].setResource(value, data.binding);\n }\n }\n }\n this.groups = groups;\n this._uniformBindMap = groupMap;\n this.resources = this._buildResourceAccessor(groups, nameHash);\n }\n /**\n * Sometimes a resource group will be provided later (for example global uniforms)\n * In such cases, this method can be used to let the shader know about the group.\n * @param name - the name of the resource group\n * @param groupIndex - the index of the group (should match the webGPU shader group location)\n * @param bindIndex - the index of the bind point (should match the webGPU shader bind point)\n */\n addResource(name, groupIndex, bindIndex) {\n var _a, _b;\n (_a = this._uniformBindMap)[groupIndex] || (_a[groupIndex] = {});\n (_b = this._uniformBindMap[groupIndex])[bindIndex] || (_b[bindIndex] = name);\n if (!this.groups[groupIndex]) {\n this.groups[groupIndex] = new BindGroup();\n this._ownedBindGroups.push(this.groups[groupIndex]);\n }\n }\n _buildResourceAccessor(groups, nameHash) {\n const uniformsOut = {};\n for (const i in nameHash) {\n const data = nameHash[i];\n Object.defineProperty(uniformsOut, data.name, {\n get() {\n return groups[data.group].getResource(data.binding);\n },\n set(value) {\n groups[data.group].setResource(value, data.binding);\n }\n });\n }\n return uniformsOut;\n }\n /**\n * Use to destroy the shader when its not longer needed.\n * It will destroy the resources and remove listeners.\n * @param destroyPrograms - if the programs should be destroyed as well.\n * Make sure its not being used by other shaders!\n */\n destroy(destroyPrograms = false) {\n if (this._destroyed) return;\n this._destroyed = true;\n this.emit(\"destroy\", this);\n if (destroyPrograms) {\n this.gpuProgram?.destroy();\n this.glProgram?.destroy();\n }\n this.gpuProgram = null;\n this.glProgram = null;\n this.removeAllListeners();\n this._uniformBindMap = null;\n this._ownedBindGroups.forEach((bindGroup) => {\n bindGroup.destroy();\n });\n this._ownedBindGroups = null;\n this.resources = null;\n this.groups = null;\n }\n static from(options) {\n const { gpu, gl, ...rest } = options;\n let gpuProgram;\n let glProgram;\n if (gpu) {\n gpuProgram = GpuProgram.from(gpu);\n }\n if (gl) {\n glProgram = GlProgram.from(gl);\n }\n return new Shader({\n gpuProgram,\n glProgram,\n ...rest\n });\n }\n}\n\nexport { Shader };\n//# sourceMappingURL=Shader.mjs.map\n","\"use strict\";\nconst blendModeIds = {\n normal: 0,\n add: 1,\n multiply: 2,\n screen: 3,\n overlay: 4,\n erase: 5,\n \"normal-npm\": 6,\n \"add-npm\": 7,\n \"screen-npm\": 8,\n min: 9,\n max: 10\n};\nconst BLEND = 0;\nconst OFFSET = 1;\nconst CULLING = 2;\nconst DEPTH_TEST = 3;\nconst WINDING = 4;\nconst DEPTH_MASK = 5;\nconst _State = class _State {\n constructor() {\n this.data = 0;\n this.blendMode = \"normal\";\n this.polygonOffset = 0;\n this.blend = true;\n this.depthMask = true;\n }\n /**\n * Activates blending of the computed fragment color values.\n * @default true\n */\n get blend() {\n return !!(this.data & 1 << BLEND);\n }\n set blend(value) {\n if (!!(this.data & 1 << BLEND) !== value) {\n this.data ^= 1 << BLEND;\n }\n }\n /**\n * Activates adding an offset to depth values of polygon's fragments\n * @default false\n */\n get offsets() {\n return !!(this.data & 1 << OFFSET);\n }\n set offsets(value) {\n if (!!(this.data & 1 << OFFSET) !== value) {\n this.data ^= 1 << OFFSET;\n }\n }\n /** The culling settings for this state none - No culling back - Back face culling front - Front face culling */\n set cullMode(value) {\n if (value === \"none\") {\n this.culling = false;\n return;\n }\n this.culling = true;\n this.clockwiseFrontFace = value === \"front\";\n }\n get cullMode() {\n if (!this.culling) {\n return \"none\";\n }\n return this.clockwiseFrontFace ? \"front\" : \"back\";\n }\n /**\n * Activates culling of polygons.\n * @default false\n */\n get culling() {\n return !!(this.data & 1 << CULLING);\n }\n set culling(value) {\n if (!!(this.data & 1 << CULLING) !== value) {\n this.data ^= 1 << CULLING;\n }\n }\n /**\n * Activates depth comparisons and updates to the depth buffer.\n * @default false\n */\n get depthTest() {\n return !!(this.data & 1 << DEPTH_TEST);\n }\n set depthTest(value) {\n if (!!(this.data & 1 << DEPTH_TEST) !== value) {\n this.data ^= 1 << DEPTH_TEST;\n }\n }\n /**\n * Enables or disables writing to the depth buffer.\n * @default true\n */\n get depthMask() {\n return !!(this.data & 1 << DEPTH_MASK);\n }\n set depthMask(value) {\n if (!!(this.data & 1 << DEPTH_MASK) !== value) {\n this.data ^= 1 << DEPTH_MASK;\n }\n }\n /**\n * Specifies whether or not front or back-facing polygons can be culled.\n * @default false\n */\n get clockwiseFrontFace() {\n return !!(this.data & 1 << WINDING);\n }\n set clockwiseFrontFace(value) {\n if (!!(this.data & 1 << WINDING) !== value) {\n this.data ^= 1 << WINDING;\n }\n }\n /**\n * The blend mode to be applied when this state is set. Apply a value of `normal` to reset the blend mode.\n * Setting this mode to anything other than NO_BLEND will automatically switch blending on.\n * @default 'normal'\n */\n get blendMode() {\n return this._blendMode;\n }\n set blendMode(value) {\n this.blend = value !== \"none\";\n this._blendMode = value;\n this._blendModeId = blendModeIds[value] || 0;\n }\n /**\n * The polygon offset. Setting this property to anything other than 0 will automatically enable polygon offset fill.\n * @default 0\n */\n get polygonOffset() {\n return this._polygonOffset;\n }\n set polygonOffset(value) {\n this.offsets = !!value;\n this._polygonOffset = value;\n }\n toString() {\n return `[pixi.js/core:State blendMode=${this.blendMode} clockwiseFrontFace=${this.clockwiseFrontFace} culling=${this.culling} depthMask=${this.depthMask} polygonOffset=${this.polygonOffset}]`;\n }\n /**\n * A quickly getting an instance of a State that is configured for 2d rendering.\n * @returns a new State with values set for 2d rendering\n */\n static for2d() {\n const state = new _State();\n state.depthTest = false;\n state.blend = true;\n return state;\n }\n};\n_State.default2d = _State.for2d();\nlet State = _State;\n\nexport { State };\n//# sourceMappingURL=State.mjs.map\n","import { GlProgram } from '../rendering/renderers/gl/shader/GlProgram.mjs';\nimport { GpuProgram } from '../rendering/renderers/gpu/shader/GpuProgram.mjs';\nimport { Shader } from '../rendering/renderers/shared/shader/Shader.mjs';\nimport { State } from '../rendering/renderers/shared/state/State.mjs';\n\n\"use strict\";\nconst _Filter = class _Filter extends Shader {\n /**\n * @param options - The optional parameters of this filter.\n */\n constructor(options) {\n options = { ..._Filter.defaultOptions, ...options };\n super(options);\n /** If enabled is true the filter is applied, if false it will not. */\n this.enabled = true;\n /**\n * The gpu state the filter requires to render.\n * @internal\n */\n this._state = State.for2d();\n this.blendMode = options.blendMode;\n this.padding = options.padding;\n if (typeof options.antialias === \"boolean\") {\n this.antialias = options.antialias ? \"on\" : \"off\";\n } else {\n this.antialias = options.antialias;\n }\n this.resolution = options.resolution;\n this.blendRequired = options.blendRequired;\n this.clipToViewport = options.clipToViewport;\n this.addResource(\"uTexture\", 0, 1);\n if (options.blendRequired) {\n this.addResource(\"uBackTexture\", 0, 3);\n }\n }\n /**\n * Applies the filter\n * @param filterManager - The renderer to retrieve the filter from\n * @param input - The input render target.\n * @param output - The target to output to.\n * @param clearMode - Should the output be cleared before rendering to it\n */\n apply(filterManager, input, output, clearMode) {\n filterManager.applyFilter(this, input, output, clearMode);\n }\n /**\n * Get the blend mode of the filter.\n * @default \"normal\"\n */\n get blendMode() {\n return this._state.blendMode;\n }\n /** Sets the blend mode of the filter. */\n set blendMode(value) {\n this._state.blendMode = value;\n }\n /**\n * A short hand function to create a filter based of a vertex and fragment shader src.\n * @param options\n * @returns A shiny new PixiJS filter!\n */\n static from(options) {\n const { gpu, gl, ...rest } = options;\n let gpuProgram;\n let glProgram;\n if (gpu) {\n gpuProgram = GpuProgram.from(gpu);\n }\n if (gl) {\n glProgram = GlProgram.from(gl);\n }\n return new _Filter({\n gpuProgram,\n glProgram,\n ...rest\n });\n }\n};\n/** The default filter settings */\n_Filter.defaultOptions = {\n blendMode: \"normal\",\n resolution: 1,\n padding: 0,\n antialias: \"off\",\n blendRequired: false,\n clipToViewport: true\n};\nlet Filter = _Filter;\n\nexport { Filter };\n//# sourceMappingURL=Filter.mjs.map\n","\"use strict\";\nvar BufferUsage = /* @__PURE__ */ ((BufferUsage2) => {\n BufferUsage2[BufferUsage2[\"MAP_READ\"] = 1] = \"MAP_READ\";\n BufferUsage2[BufferUsage2[\"MAP_WRITE\"] = 2] = \"MAP_WRITE\";\n BufferUsage2[BufferUsage2[\"COPY_SRC\"] = 4] = \"COPY_SRC\";\n BufferUsage2[BufferUsage2[\"COPY_DST\"] = 8] = \"COPY_DST\";\n BufferUsage2[BufferUsage2[\"INDEX\"] = 16] = \"INDEX\";\n BufferUsage2[BufferUsage2[\"VERTEX\"] = 32] = \"VERTEX\";\n BufferUsage2[BufferUsage2[\"UNIFORM\"] = 64] = \"UNIFORM\";\n BufferUsage2[BufferUsage2[\"STORAGE\"] = 128] = \"STORAGE\";\n BufferUsage2[BufferUsage2[\"INDIRECT\"] = 256] = \"INDIRECT\";\n BufferUsage2[BufferUsage2[\"QUERY_RESOLVE\"] = 512] = \"QUERY_RESOLVE\";\n BufferUsage2[BufferUsage2[\"STATIC\"] = 1024] = \"STATIC\";\n return BufferUsage2;\n})(BufferUsage || {});\n\nexport { BufferUsage };\n//# sourceMappingURL=const.mjs.map\n","import EventEmitter from 'eventemitter3';\nimport { uid } from '../../../../utils/data/uid.mjs';\nimport { BufferUsage } from './const.mjs';\n\n\"use strict\";\nclass Buffer extends EventEmitter {\n /**\n * Creates a new Buffer with the given options\n * @param options - the options for the buffer\n */\n constructor(options) {\n let { data, size } = options;\n const { usage, label, shrinkToFit } = options;\n super();\n /**\n * emits when the underlying buffer has changed shape (i.e. resized)\n * letting the renderer know that it needs to discard the old buffer on the GPU and create a new one\n * @event change\n */\n /**\n * emits when the underlying buffer data has been updated. letting the renderer know\n * that it needs to update the buffer on the GPU\n * @event update\n */\n /**\n * emits when the buffer is destroyed. letting the renderer know that it needs to destroy the buffer on the GPU\n * @event destroy\n */\n /** @internal */\n this._gpuData = /* @__PURE__ */ Object.create(null);\n /** @internal */\n this._gcLastUsed = -1;\n /** If set to true, the buffer will be garbage collected automatically when it is not used. */\n this.autoGarbageCollect = true;\n /** a unique id for this uniform group used through the renderer */\n this.uid = uid(\"buffer\");\n /**\n * a resource type, used to identify how to handle it when its in a bind group / shader resource\n * @internal\n */\n this._resourceType = \"buffer\";\n /**\n * the resource id used internally by the renderer to build bind group keys\n * @internal\n */\n this._resourceId = uid(\"resource\");\n /**\n * used internally to know if a uniform group was used in the last render pass\n * @internal\n */\n this._touched = 0;\n /** @internal */\n this._updateID = 1;\n this._dataInt32 = null;\n /**\n * should the GPU buffer be shrunk when the data becomes smaller?\n * changing this will cause the buffer to be destroyed and a new one created on the GPU\n * this can be expensive, especially if the buffer is already big enough!\n * setting this to false will prevent the buffer from being shrunk. This will yield better performance\n * if you are constantly setting data that is changing size often.\n * @default true\n */\n this.shrinkToFit = true;\n /**\n * Has the buffer been destroyed?\n * @readonly\n */\n this.destroyed = false;\n if (data instanceof Array) {\n data = new Float32Array(data);\n }\n this._data = data;\n size ?? (size = data?.byteLength);\n const mappedAtCreation = !!data;\n this.descriptor = {\n size,\n usage,\n mappedAtCreation,\n label\n };\n this.shrinkToFit = shrinkToFit ?? true;\n }\n /** the data in the buffer */\n get data() {\n return this._data;\n }\n set data(value) {\n this.setDataWithSize(value, value.length, true);\n }\n get dataInt32() {\n if (!this._dataInt32) {\n this._dataInt32 = new Int32Array(this.data.buffer);\n }\n return this._dataInt32;\n }\n /** whether the buffer is static or not */\n get static() {\n return !!(this.descriptor.usage & BufferUsage.STATIC);\n }\n set static(value) {\n if (value) {\n this.descriptor.usage |= BufferUsage.STATIC;\n } else {\n this.descriptor.usage &= ~BufferUsage.STATIC;\n }\n }\n /**\n * Sets the data in the buffer to the given value. This will immediately update the buffer on the GPU.\n * If you only want to update a subset of the buffer, you can pass in the size of the data.\n * @param value - the data to set\n * @param size - the size of the data in bytes\n * @param syncGPU - should the buffer be updated on the GPU immediately?\n */\n setDataWithSize(value, size, syncGPU) {\n this._updateID++;\n this._updateSize = size * value.BYTES_PER_ELEMENT;\n if (this._data === value) {\n if (syncGPU) this.emit(\"update\", this);\n return;\n }\n const oldData = this._data;\n this._data = value;\n this._dataInt32 = null;\n if (!oldData || oldData.length !== value.length) {\n if (!this.shrinkToFit && oldData && value.byteLength < oldData.byteLength) {\n if (syncGPU) this.emit(\"update\", this);\n } else {\n this.descriptor.size = value.byteLength;\n this._resourceId = uid(\"resource\");\n this.emit(\"change\", this);\n }\n return;\n }\n if (syncGPU) this.emit(\"update\", this);\n }\n /**\n * updates the buffer on the GPU to reflect the data in the buffer.\n * By default it will update the entire buffer. If you only want to update a subset of the buffer,\n * you can pass in the size of the buffer to update.\n * @param sizeInBytes - the new size of the buffer in bytes\n */\n update(sizeInBytes) {\n this._updateSize = sizeInBytes ?? this._updateSize;\n this._updateID++;\n this.emit(\"update\", this);\n }\n /** Unloads the buffer from the GPU */\n unload() {\n this.emit(\"unload\", this);\n for (const key in this._gpuData) {\n this._gpuData[key]?.destroy();\n }\n this._gpuData = /* @__PURE__ */ Object.create(null);\n }\n /** Destroys the buffer */\n destroy() {\n this.destroyed = true;\n this.unload();\n this.emit(\"destroy\", this);\n this.emit(\"change\", this);\n this._data = null;\n this.descriptor = null;\n this.removeAllListeners();\n }\n}\n\nexport { Buffer };\n//# sourceMappingURL=Buffer.mjs.map\n","import { Buffer } from '../../buffer/Buffer.mjs';\nimport { BufferUsage } from '../../buffer/const.mjs';\n\n\"use strict\";\nfunction ensureIsBuffer(buffer, index) {\n if (!(buffer instanceof Buffer)) {\n let usage = index ? BufferUsage.INDEX : BufferUsage.VERTEX;\n if (buffer instanceof Array) {\n if (index) {\n buffer = new Uint32Array(buffer);\n usage = BufferUsage.INDEX | BufferUsage.COPY_DST;\n } else {\n buffer = new Float32Array(buffer);\n usage = BufferUsage.VERTEX | BufferUsage.COPY_DST;\n }\n }\n buffer = new Buffer({\n data: buffer,\n label: index ? \"index-mesh-buffer\" : \"vertex-mesh-buffer\",\n usage\n });\n }\n return buffer;\n}\n\nexport { ensureIsBuffer };\n//# sourceMappingURL=ensureIsBuffer.mjs.map\n","\"use strict\";\nfunction getGeometryBounds(geometry, attributeId, bounds) {\n const attribute = geometry.getAttribute(attributeId);\n if (!attribute) {\n bounds.minX = 0;\n bounds.minY = 0;\n bounds.maxX = 0;\n bounds.maxY = 0;\n return bounds;\n }\n const data = attribute.buffer.data;\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n const byteSize = data.BYTES_PER_ELEMENT;\n const offset = (attribute.offset || 0) / byteSize;\n const stride = (attribute.stride || 2 * 4) / byteSize;\n for (let i = offset; i < data.length; i += stride) {\n const x = data[i];\n const y = data[i + 1];\n if (x > maxX) maxX = x;\n if (y > maxY) maxY = y;\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n }\n bounds.minX = minX;\n bounds.minY = minY;\n bounds.maxX = maxX;\n bounds.maxY = maxY;\n return bounds;\n}\n\nexport { getGeometryBounds };\n//# sourceMappingURL=getGeometryBounds.mjs.map\n","import EventEmitter from 'eventemitter3';\nimport { Bounds } from '../../../../scene/container/bounds/Bounds.mjs';\nimport { uid } from '../../../../utils/data/uid.mjs';\nimport { Buffer } from '../buffer/Buffer.mjs';\nimport { ensureIsBuffer } from './utils/ensureIsBuffer.mjs';\nimport { getGeometryBounds } from './utils/getGeometryBounds.mjs';\n\n\"use strict\";\nfunction ensureIsAttribute(attribute) {\n if (attribute instanceof Buffer || Array.isArray(attribute) || attribute.BYTES_PER_ELEMENT) {\n attribute = {\n buffer: attribute\n };\n }\n attribute.buffer = ensureIsBuffer(attribute.buffer, false);\n return attribute;\n}\nclass Geometry extends EventEmitter {\n /**\n * Create a new instance of a geometry\n * @param options - The options for the geometry.\n */\n constructor(options = {}) {\n super();\n /** @internal */\n this._gpuData = /* @__PURE__ */ Object.create(null);\n /** If set to true, the resource will be garbage collected automatically when it is not used. */\n this.autoGarbageCollect = true;\n /** @internal */\n this._gcLastUsed = -1;\n /** The unique id of the geometry. */\n this.uid = uid(\"geometry\");\n /**\n * the layout key will be generated by WebGPU all geometries that have the same structure\n * will have the same layout key. This is used to cache the pipeline layout\n * @internal\n */\n this._layoutKey = 0;\n /** the instance count of the geometry to draw */\n this.instanceCount = 1;\n this._bounds = new Bounds();\n this._boundsDirty = true;\n const { attributes, indexBuffer, topology } = options;\n this.buffers = [];\n this.attributes = {};\n if (attributes) {\n for (const i in attributes) {\n this.addAttribute(i, attributes[i]);\n }\n }\n this.instanceCount = options.instanceCount ?? 1;\n if (indexBuffer) {\n this.addIndex(indexBuffer);\n }\n this.topology = topology || \"triangle-list\";\n }\n onBufferUpdate() {\n this._boundsDirty = true;\n this.emit(\"update\", this);\n }\n /**\n * Returns the requested attribute.\n * @param id - The name of the attribute required\n * @returns - The attribute requested.\n */\n getAttribute(id) {\n return this.attributes[id];\n }\n /**\n * Returns the index buffer\n * @returns - The index buffer.\n */\n getIndex() {\n return this.indexBuffer;\n }\n /**\n * Returns the requested buffer.\n * @param id - The name of the buffer required.\n * @returns - The buffer requested.\n */\n getBuffer(id) {\n return this.getAttribute(id).buffer;\n }\n /**\n * Used to figure out how many vertices there are in this geometry\n * @returns the number of vertices in the geometry\n */\n getSize() {\n for (const i in this.attributes) {\n const attribute = this.attributes[i];\n const buffer = attribute.buffer;\n return buffer.data.length / (attribute.stride / 4 || attribute.size);\n }\n return 0;\n }\n /**\n * Adds an attribute to the geometry.\n * @param name - The name of the attribute to add.\n * @param attributeOption - The attribute option to add.\n */\n addAttribute(name, attributeOption) {\n const attribute = ensureIsAttribute(attributeOption);\n const bufferIndex = this.buffers.indexOf(attribute.buffer);\n if (bufferIndex === -1) {\n this.buffers.push(attribute.buffer);\n attribute.buffer.on(\"update\", this.onBufferUpdate, this);\n attribute.buffer.on(\"change\", this.onBufferUpdate, this);\n }\n this.attributes[name] = attribute;\n }\n /**\n * Adds an index buffer to the geometry.\n * @param indexBuffer - The index buffer to add. Can be a Buffer, TypedArray, or an array of numbers.\n */\n addIndex(indexBuffer) {\n this.indexBuffer = ensureIsBuffer(indexBuffer, true);\n this.buffers.push(this.indexBuffer);\n }\n /** Returns the bounds of the geometry. */\n get bounds() {\n if (!this._boundsDirty) return this._bounds;\n this._boundsDirty = false;\n return getGeometryBounds(this, \"aPosition\", this._bounds);\n }\n /** Unloads the geometry from the GPU. */\n unload() {\n this.emit(\"unload\", this);\n for (const key in this._gpuData) {\n this._gpuData[key]?.destroy();\n }\n this._gpuData = /* @__PURE__ */ Object.create(null);\n }\n /**\n * destroys the geometry.\n * @param destroyBuffers - destroy the buffers associated with this geometry\n */\n destroy(destroyBuffers = false) {\n this.emit(\"destroy\", this);\n this.removeAllListeners();\n if (destroyBuffers) {\n this.buffers.forEach((buffer) => buffer.destroy());\n }\n this.unload();\n this.indexBuffer?.destroy();\n this.attributes = null;\n this.buffers = null;\n this.indexBuffer = null;\n this._bounds = null;\n }\n}\n\nexport { Geometry };\n//# sourceMappingURL=Geometry.mjs.map\n"],"names":["idCounts","idHash","createIdFromString","value","groupId","id","context","getTestContext","DOMAdapter","maxFragmentPrecision","getMaxFragmentPrecision","gl","addProgramDefines","src","isES300","isFragment","ensurePrecision","options","maxSupportedPrecision","precision","insertVersion","fragmentNameCache","VertexNameCache","setProgramName","name","nameCache","stripVersion","processes","programCache","_GlProgram","preprocessorOptions","fragment","vertex","processKey","processOptions","key","GlProgram","attributeFormatData","getAttributeInfoFromFormat","format","WGSL_TO_VERTEX_TYPES","LOCATION_REGEX","parseLocations","str","results","match","stripComments","source","extractAttributesFromGpuProgram","entryPoint","cleanSource","mainVertStart","arrowFunctionStart","functionArgsSubstring","structMatch","structName","structRegex","structBody","extractStructAndGroups","wgsl","linePattern","groupPattern","bindingPattern","namePattern","typePattern","structPattern","structMemberPattern","groups","_a","item","structs","_b","struct","members","acc","member","name2","type","group","ShaderStage","ShaderStage2","generateGpuLayoutGroups","layout","i","generateLayoutHash","removeStructAndGroupDuplicates","vertexStructsAndGroups","fragmentStructsAndGroups","structNameSet","dupeGroupKeySet","GpuProgram","gpuLayout","structsAndGroups","bigKey","UNIFORM_TYPES_VALUES","UNIFORM_TYPES_MAP","getDefaultUniformValue","size","_UniformGroup","uniformStructures","uid","uniforms","uniformData","arrayMatch","innerType","UniformGroup","BindGroup","resources","index","resource","keyParts","currentResource","now","tick","RendererType","RendererType2","Shader","EventEmitter","gpuProgram","glProgram","compatibleRenderers","groupMap","nameHash","j","uniformName","groupData","data","bindTick","groupIndex","bindIndex","uniformsOut","destroyPrograms","bindGroup","gpu","rest","blendModeIds","BLEND","OFFSET","CULLING","DEPTH_TEST","WINDING","DEPTH_MASK","_State","state","State","_Filter","filterManager","input","output","clearMode","Filter","BufferUsage","BufferUsage2","usage","label","shrinkToFit","mappedAtCreation","syncGPU","oldData","sizeInBytes","ensureIsBuffer","buffer","Buffer","getGeometryBounds","geometry","attributeId","bounds","attribute","minX","minY","maxX","maxY","byteSize","offset","stride","x","y","ensureIsAttribute","Geometry","Bounds","attributes","indexBuffer","topology","attributeOption","destroyBuffers"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { a as ze, i as T, G as He, w as te, c as u, t as Ct, M, e as re, l as V, x as St, B as se, y as G, F as Ve, S as kt, T as S, d as Q, z as xe, H as Fe, J as Le, K as We, L as Oe, C as F, N as wt, k as Y, D as ne, g as I, R as L, O as Mt, P as Bt, b as ge, Q as _e, f as X, p as Rt, W as Pt, X as At } from "./index-
|
|
2
|
-
import { f as Ut, e as Gt, a as be, b as z, G as $e, h as je, U as ie, d as It, F as Dt, S as Et, R as ae, B as zt } from "./Geometry-
|
|
1
|
+
import { a as ze, i as T, G as He, w as te, c as u, t as Ct, M, e as re, l as V, x as St, B as se, y as G, F as Ve, S as kt, T as S, d as Q, z as xe, H as Fe, J as Le, K as We, L as Oe, C as F, N as wt, k as Y, D as ne, g as I, R as L, O as Mt, P as Bt, b as ge, Q as _e, f as X, p as Rt, W as Pt, X as At } from "./index-qJyFW51-.js";
|
|
2
|
+
import { f as Ut, e as Gt, a as be, b as z, G as $e, h as je, U as ie, d as It, F as Dt, S as Et, R as ae, B as zt } from "./Geometry-B-K9I6MO.js";
|
|
3
3
|
class ve {
|
|
4
4
|
constructor(e) {
|
|
5
5
|
typeof e == "number" ? this.rawBinaryData = new ArrayBuffer(e) : e instanceof Uint8Array ? this.rawBinaryData = e.buffer : this.rawBinaryData = e, this.uint32View = new Uint32Array(this.rawBinaryData), this.float32View = new Float32Array(this.rawBinaryData), this.size = this.rawBinaryData.byteLength;
|
|
@@ -3540,4 +3540,4 @@ export {
|
|
|
3540
3540
|
at as p,
|
|
3541
3541
|
_r as r
|
|
3542
3542
|
};
|
|
3543
|
-
//# sourceMappingURL=RenderTargetSystem-
|
|
3543
|
+
//# sourceMappingURL=RenderTargetSystem-CahYKOD4.js.map
|