@pacem/pacem 1.0.0-abel → 1.0.0-amaldi
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/browser/pacem-2d.js +3 -3
- package/dist/browser/pacem-2d.js.map +0 -5
- package/dist/browser/pacem-2d.min.js +3 -3
- package/dist/browser/pacem-2d.min.js.map +0 -5
- package/dist/browser/pacem-3d.js +341 -341
- package/dist/browser/pacem-3d.js.map +1 -6
- package/dist/browser/pacem-3d.min.js +3 -3
- package/dist/browser/pacem-3d.min.js.map +1 -6
- package/dist/browser/pacem-charts.js +3 -3
- package/dist/browser/pacem-charts.js.map +0 -5
- package/dist/browser/pacem-charts.min.js +3 -3
- package/dist/browser/pacem-charts.min.js.map +0 -5
- package/dist/browser/pacem-cms.js +107 -107
- package/dist/browser/pacem-cms.js.map +1 -6
- package/dist/browser/pacem-cms.min.js +3 -3
- package/dist/browser/pacem-cms.min.js.map +1 -6
- package/dist/browser/pacem-core.js +21 -7
- package/dist/browser/pacem-core.js.map +1 -6
- package/dist/browser/pacem-core.min.js +4 -4
- package/dist/browser/pacem-core.min.js.map +1 -6
- package/dist/browser/pacem-foundation.js +3 -3
- package/dist/browser/pacem-foundation.js.map +0 -5
- package/dist/browser/pacem-foundation.min.js +3 -3
- package/dist/browser/pacem-foundation.min.js.map +0 -5
- package/dist/browser/pacem-fx.js +19 -19
- package/dist/browser/pacem-fx.js.map +1 -6
- package/dist/browser/pacem-fx.min.js +3 -3
- package/dist/browser/pacem-fx.min.js.map +1 -6
- package/dist/browser/pacem-logging.js +3 -3
- package/dist/browser/pacem-logging.js.map +0 -5
- package/dist/browser/pacem-logging.min.js +3 -3
- package/dist/browser/pacem-logging.min.js.map +0 -5
- package/dist/browser/pacem-maps.js +3 -3
- package/dist/browser/pacem-maps.js.map +0 -5
- package/dist/browser/pacem-maps.min.js +3 -3
- package/dist/browser/pacem-maps.min.js.map +0 -5
- package/dist/browser/pacem-media.js +3 -3
- package/dist/browser/pacem-media.js.map +0 -5
- package/dist/browser/pacem-media.min.js +3 -3
- package/dist/browser/pacem-media.min.js.map +0 -5
- package/dist/browser/pacem-networking.js +3 -3
- package/dist/browser/pacem-networking.js.map +0 -5
- package/dist/browser/pacem-networking.min.js +3 -3
- package/dist/browser/pacem-networking.min.js.map +0 -5
- package/dist/browser/pacem-numerical.js +3 -3
- package/dist/browser/pacem-numerical.js.map +0 -5
- package/dist/browser/pacem-numerical.min.js +3 -3
- package/dist/browser/pacem-numerical.min.js.map +0 -5
- package/dist/browser/pacem-plus.js +77 -77
- package/dist/browser/pacem-plus.js.map +1 -6
- package/dist/browser/pacem-plus.min.js +3 -3
- package/dist/browser/pacem-plus.min.js.map +1 -6
- package/dist/browser/pacem-scaffolding.js +11 -8
- package/dist/browser/pacem-scaffolding.js.map +1 -6
- package/dist/browser/pacem-scaffolding.min.js +4 -4
- package/dist/browser/pacem-scaffolding.min.js.map +1 -6
- package/dist/browser/pacem-ui.js +37 -26
- package/dist/browser/pacem-ui.js.map +1 -6
- package/dist/browser/pacem-ui.min.js +4 -4
- package/dist/browser/pacem-ui.min.js.map +1 -6
- package/dist/bundle/pacem.min.mjs +40 -38
- package/dist/bundle/pacem.mjs +58 -32
- package/dist/bundle/pacem.mjs.map +2 -7
- package/dist/typings/index.d.ts +5 -3
- package/dist/vscode.html-custom.json +4834 -0
- package/package.json +9 -8
|
@@ -1,6 +1 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @pacem/pacem v1.0.0-abel (https://js.pacem.it)
|
|
3
|
-
* Copyright 2026 Pacem (https://pacem.it)
|
|
4
|
-
* Licensed under Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
{"version":3,"file":"pacem-3d.js","sources":["../esm/converters.js","../esm/constants.js","../esm/stage.js","../esm/types.js","../esm/detector.js","../esm/materials/material.js","../esm/materials/basic.js","../esm/materials/lambert.js","../esm/materials/line.js","../esm/materials/phong.js","../esm/materials/standard.js","../esm/primitives/primitive.js","../esm/decorators.js","../esm/geometry.js","../esm/primitives/box.js","../esm/primitives/cone.js","../esm/primitives/cylinder.js","../esm/primitives/line.js","../esm/primitives/plane.js","../esm/primitives/polyhedra.js","../esm/primitives/sphere.js","../esm/primitives/torus.js","../esm/adapters/shared.js","../esm/adapters/threejsadapter.js","../esm/adapters/webgpu/constants.js","../esm/adapters/webgpu/abstractions.js","../esm/adapters/webgpu/buffers.js","../esm/adapters/webgpu/wgsl/basic-material-fragment.js","../esm/adapters/webgpu/wgsl/line-material-fragment.js","../esm/adapters/webgpu/materials.js","../esm/adapters/webgpu/wgsl/shared.js","../esm/adapters/webgpu/wgsl/mesh-vertex.js","../esm/adapters/webgpu/wgsl/line-vertex.js","../esm/adapters/webgpu/wgsl/object-picking-fragment.js","../esm/adapters/webgpu/wgsl/texture-fragment.js","../esm/adapters/webgpu/wgsl/directional-light-fragment.js","../esm/adapters/webgpu/wgsl/omni-light-fragment.js","../esm/adapters/webgpu/wgsl/ambient-light-fragment.js","../esm/adapters/webgpu/cameras.js","../esm/adapters/webgpu/renderablebuffer.js","../esm/adapters/webgpu/pipelinefactory.js","../esm/adapters/webgpu/raycaster.js","../esm/adapters/webgpu/renderer.js","../esm/adapters/webgpu/webgpuadapter.js","../esm/adapters/webgpu/behaviors/orbit-camera.js","../esm/parsers/parser.js","../esm/index-iife.js"],"sourcesContent":["import { Utils } from '@pacem/pacem-core';\nimport { parseAsNumericalArray } from '@pacem/pacem-foundation';\nimport { Geometry } from '@pacem/pacem-numerical';\n//namespace Pacem.Drawing3D {\nexport const Point3DConverter = {\n convert: (attr) => Geometry.LinearAlgebra.Vector3D.parse(attr),\n convertBack: (prop) => `${prop.x || 0} ${prop.y || 0} ${prop.z || 0}`\n};\nexport const Point3DOrNumberConverter = {\n convert: (attr) => {\n const arr = parseAsNumericalArray(attr);\n const throwErr = () => { throw new Error(`Cannot parse \"${attr}\" as a valid Vector3D.`); };\n if (Utils.isNullOrEmpty(arr)) {\n throwErr();\n }\n if (arr.length === 3) {\n return Geometry.LinearAlgebra.Vector3D.from(...arr);\n }\n if (arr.length === 1) {\n const v = arr[0];\n return Geometry.LinearAlgebra.Vector3D.from(v, v, v);\n }\n throwErr();\n },\n convertBack: (prop) => `${prop.x || 0} ${prop.y || 0} ${prop.z || 0}`\n};\nexport const QuaternionConverter = {\n convert: (attr) => Geometry.LinearAlgebra.Quaternion.parse(attr),\n convertBack: (prop) => `${prop.x || 0} ${prop.y || 0} ${prop.z || 0} ${prop.w || 0}`\n};\nexport const BooleanOrNumberConverter = {\n convert: (attr) => {\n if (attr === 'true')\n return true;\n if (attr === 'false')\n return false;\n return parseAsNumericalArray(attr)[0];\n },\n convertBack: (prop) => prop.toString()\n};\n","export const TAG_MIDDLE_NAME = \"3d\";\nexport const DEG2RAD = Math.PI / 180;\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, P, PCSS, Defaults, ViewChild, Watch, PropertyConverters, Utils, Components, PropertyChangeEventName, Logging, Animations, UI } from '@pacem/pacem-core';\nimport { RenderableEvent, DragEvent, RenderableElement } from './types';\nimport { TAG_MIDDLE_NAME } from './constants';\n//namespace Pacem.Components.Drawing3D {\nlet Pacem3DElement = class Pacem3DElement extends Components.PacemItemsContainerElement {\n constructor() {\n super(...arguments);\n this._itemPropertyChangeHandler = (evt) => {\n const renderable = evt.target;\n // clear flags\n // TODO: be more precise\n this.adapter &&\n this.adapter.updateItem(this, renderable);\n renderable.flags.splice(0);\n };\n this._clickHandler = (evt) => {\n let me = this;\n if (!me.interactive || Utils.isNull(me._lastHitResult)) {\n return;\n }\n const type = evt.type.replace(/^mouse/, '');\n const hit = me._lastHitResult, object = hit.object, point = hit.point;\n this._itemDispatch(object, point, type, evt);\n };\n this._hitTestCallback = (result, evt) => {\n const me = this;\n // TODO: handle dragging\n if (result != me._lastHitResult) {\n if (result?.object != me._lastHitResult?.object) {\n const obj = result?.object, last = me._lastHitResult?.object, pt = result?.point;\n if (!Utils.isNull(last)) {\n this._itemDispatch(last, pt, 'out', evt);\n }\n if (!Utils.isNull(obj)) {\n this._itemDispatch(obj, pt, 'over', evt);\n }\n }\n me._lastHitResult = result;\n }\n };\n this._moveHandler = (evt) => {\n let me = this;\n if (!me.adapter || !me.interactive) {\n return;\n }\n const rect = me._resizer.currentSize;\n const callback = (r) => me._hitTestCallback(r, evt);\n const pixel = evt.type === 'mousemove' ? { x: evt.pageX - rect.left, y: evt.pageY - rect.top } : { x: -1, y: -1 };\n me.adapter.raycast(this, pixel, rect, callback);\n };\n this._resizeHandler = (evt) => {\n const oldSize = this.#size;\n const size = evt.detail;\n if (!Utils.isNull(oldSize) && oldSize.height === size.height && oldSize.width === size.width) {\n return;\n }\n this.#size = size;\n const adapter = this.adapter;\n if (!Utils.isNull(adapter)) {\n this.adapter.invalidateSize(this, size);\n this.dispatchEvent(new Components.ResizeEvent(size));\n }\n };\n //#endregion\n }\n validate(item) {\n return item instanceof RenderableElement;\n }\n get stage() {\n return this._container;\n }\n get scene() {\n return this.adapter && this.adapter.getScene(this);\n }\n register(item) {\n const retval = super.register(item);\n if (retval) {\n this._add(item);\n item.addEventListener(PropertyChangeEventName, this._itemPropertyChangeHandler, false);\n }\n return retval;\n }\n unregister(item) {\n const retval = super.unregister(item);\n if (retval) {\n item.removeEventListener(PropertyChangeEventName, this._itemPropertyChangeHandler, false);\n this._erase(item);\n }\n return retval;\n }\n _refreshDatasource(val = this.datasource) {\n this.adapter?.updateItem(this, undefined);\n }\n _buildUpDatasourceFromDOM(val = this.items) {\n if (!Utils.isNullOrEmpty(val)) {\n this.datasource = val.slice();\n }\n }\n _add(item) {\n this.adapter &&\n this.adapter.addItem(this, item);\n }\n _erase(item) {\n this.adapter &&\n this.adapter.removeItem(this, item);\n }\n _initializeAdapter(old, val) {\n return new Promise((resolve, reject) => {\n const items = this.datasource || [];\n if (!Utils.isNull(old)) {\n items.forEach(i => old.removeItem(this, i));\n }\n if (!Utils.isNull(this._container) && !Utils.isNull(val)) {\n val.initialize(this).then(_ => {\n (items || []).forEach(i => this._add(i));\n resolve();\n }, e => {\n this.log(Logging.LogLevel.Error, e?.toString());\n reject(e);\n });\n }\n else {\n resolve();\n }\n });\n }\n //#region lifecycle\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (first) {\n return;\n }\n switch (name) {\n case 'adapter':\n this._initializeAdapter(old, val);\n break;\n case 'items':\n this._buildUpDatasourceFromDOM(val);\n break;\n case 'transparent':\n this.adapter?.invalidateSize(this, this.size);\n break;\n case 'datasource':\n this._refreshDatasource(val);\n case 'disabled':\n case 'background':\n this.render();\n break;\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n // stage\n const container = this._container;\n // resizer\n const resizer = this._resizer;\n resizer.addEventListener('resize', this._resizeHandler, false);\n resizer.target = container;\n // adapter\n this._initializeAdapter(null, this.adapter).then(_ => {\n container.addEventListener('mousemove', this._moveHandler, false);\n container.addEventListener('click', this._clickHandler, false);\n container.addEventListener('mouseup', this._clickHandler, false);\n container.addEventListener('mousedown', this._clickHandler, false);\n container.addEventListener('mouseout', this._moveHandler, false);\n this._buildUpDatasourceFromDOM();\n this.render();\n });\n }\n _itemDispatch(target, point, type, offset) {\n if (!Utils.isNull(target)) {\n var dragArgs, originalEvent, evtType;\n if (offset instanceof Event) {\n originalEvent = offset;\n }\n else {\n dragArgs = { item: target, offset: offset };\n }\n if (typeof type === 'string') {\n evtType = type;\n }\n else {\n evtType = type.type;\n originalEvent = type.originalEvent;\n }\n const m = point;\n const evt = () => offset instanceof Event ? new RenderableEvent(evtType, target, originalEvent, m) : new DragEvent(evtType, { detail: dragArgs, cancelable: evtType === UI.DragDropEventType.Init || evtType === UI.DragDropEventType.Drag }, originalEvent, m), itemevt = offset instanceof Event ? new RenderableEvent('item' + evtType, target, originalEvent, m) : new DragEvent('item' + evtType, { detail: dragArgs, cancelable: evtType === UI.DragDropEventType.Init || evtType === UI.DragDropEventType.Drag }, originalEvent, m);\n var prevent = false;\n if (target instanceof EventTarget) {\n const evnt = evt();\n target.dispatchEvent(evnt);\n prevent = evnt.defaultPrevented;\n }\n target.stage.dispatchEvent(itemevt);\n // was the event (in one of its forms) rejected?\n return prevent || itemevt.defaultPrevented;\n }\n return false;\n }\n disconnectedCallback() {\n this.#handle?.stop();\n const resizer = this._resizer, container = this._container;\n if (!Utils.isNull(container)) {\n container.removeEventListener('click', this._clickHandler, false);\n container.removeEventListener('mouseup', this._clickHandler, false);\n container.removeEventListener('mousedown', this._clickHandler, false);\n container.removeEventListener('mousemove', this._moveHandler, false);\n container.removeEventListener('mouseout', this._moveHandler, false);\n }\n if (!Utils.isNull(resizer)) {\n resizer.removeEventListener('resize', this._resizeHandler, false);\n }\n super.disconnectedCallback();\n }\n #size;\n get size() {\n return this.#size;\n }\n render(item, deepUpdate, now = performance.now()) {\n if (!Utils.isNull(item)) {\n const adapter = this.adapter;\n if (!Utils.isNull(adapter)) {\n adapter.updateItem(this, item);\n }\n }\n else {\n this.#handle?.stop();\n this.#handle = Animations.Timer.run(_ => this._doRender());\n //this._doRender();\n }\n }\n #handle;\n _doRender() {\n if (!this.disabled && !Utils.isNull(this.adapter)) {\n const scene = this.adapter.getScene(this);\n let cancelable = new CustomEvent('prerender', { detail: { scene }, cancelable: true });\n this.dispatchEvent(cancelable);\n if (!cancelable.defaultPrevented) {\n this.adapter.render(this);\n this.dispatchEvent(new CustomEvent('render', { detail: { scene } }));\n }\n }\n }\n};\n__decorate([\n ViewChild(`.${PCSS}-3d`)\n], Pacem3DElement.prototype, \"_container\", void 0);\n__decorate([\n ViewChild(P + '-resize')\n], Pacem3DElement.prototype, \"_resizer\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], Pacem3DElement.prototype, \"interactive\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], Pacem3DElement.prototype, \"transparent\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], Pacem3DElement.prototype, \"background\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Element })\n], Pacem3DElement.prototype, \"adapter\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], Pacem3DElement.prototype, \"datasource\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], Pacem3DElement.prototype, \"orbit\", void 0);\nPacem3DElement = __decorate([\n CustomElement({\n tagName: P + '-' + TAG_MIDDLE_NAME, shadow: Defaults.USE_SHADOW_ROOT, template: `<${P}-resize watch-position=\"true\"></${P}-resize><div class=\"${PCSS}-3d\"></div><${P}-content></${P}-content>`\n })\n], Pacem3DElement);\nexport { Pacem3DElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Watch, PropertyConverters, CustomElement, PacemEventTarget, PropertyChangeEvent, CustomElementUtils, CustomUIEvent, P, Utils, Components } from '@pacem/pacem-core';\nimport { Geometry } from '@pacem/pacem-numerical';\nimport { Point3DConverter, Point3DOrNumberConverter, QuaternionConverter } from './converters';\nimport { Pacem3DElement } from './stage';\nimport { TAG_MIDDLE_NAME } from './constants';\nexport function isStage(object) {\n return !Utils.isNull(object) && 'render' in object && typeof object['render'] === 'function';\n}\nexport function isRenderable(object) {\n return isStage(object?.stage);\n}\nexport function isUi3DObject(object) {\n return 'transformMatrix' in object && isRenderable(object);\n}\nexport function isCamera(object) {\n return 'type' in object && 'up' in object && 'lookAt' in object && isRenderable(object);\n}\nexport function isPerspectiveCamera(object) {\n return isCamera(object) && 'type' in object && object.type === 'perspective';\n}\nexport function isOrthographicCamera(object) {\n return isCamera(object) && 'type' in object && object.type === 'orthographic';\n}\nexport function isLight(object) {\n return 'type' in object && (object.type === 'ambient' || object.type === 'omni' || object.type === 'direction' || object.type == 'spot') && isRenderable(object);\n}\nexport function isMesh(object) {\n return 'geometry' in object && isUi3DObject(object);\n}\nexport function isGeometry(object) {\n return 'positions' in object && Utils.isArray(object.positions);\n}\nexport function isMeshGeometry(object) {\n return ('triangleIndices' in object && Utils.isArray(object.triangleIndices)\n || 'normals' in object && Utils.isArray(object.normals)\n || 'textureCoordinates' in object && Utils.isArray(object.textureCoordinates)) && isGeometry(object);\n}\nexport function isGroup(object) {\n return 'childRenderables' in object && Utils.isArray(object['childRenderables']) && isUi3DObject(object);\n}\n/**\n * Sets the normals to a mesh geometry by computing each face's unit orthogonal vector.\n * @param geometry\n */\nexport function computeSharpVertexNormals(geometry) {\n const normals = [];\n if (!Utils.isNullOrEmpty(geometry)) {\n const indices = geometry.triangleIndices;\n if (indices.length % 3 !== 0) {\n throw new RangeError(`Invalid mesh geometry: ${indices.length} is not multiple of 3.`);\n }\n for (let j = 2; j < indices.length; j += 3) {\n const u = indices[j - 2], v = indices[j - 1], w = indices[j];\n const a = geometry.positions[u], b = geometry.positions[v], c = geometry.positions[w];\n const normal = computePlaneNormal(a, b, c);\n normals.push(normal, normal, normal);\n }\n }\n geometry.normals = normals;\n}\n/**\n * Computes the unit vector orthogonal to the plane identified by 3 points.\n * @param a\n * @param b\n * @param c\n */\nexport function computePlaneNormal(a, b, c) {\n // TODO: check input correctness (distinct points)\n const vAB = Geometry.LinearAlgebra.Vector3D.subtract(a, b), vAC = Geometry.LinearAlgebra.Vector3D.subtract(a, c);\n const orthogonal = Geometry.LinearAlgebra.Vector3D.cross(vAB, vAC);\n return Geometry.LinearAlgebra.Vector3D.unit(orthogonal);\n}\nexport class UI3DEvent extends CustomUIEvent {\n constructor(type, eventInit, originalEvent, point) {\n super(type, eventInit, originalEvent);\n this.#point = point;\n }\n #point;\n /** Gets the event's source position in 3d coordinates. */\n get point() {\n return this.#point;\n }\n}\nexport class DragEvent extends UI3DEvent {\n}\nexport class RenderableEvent extends UI3DEvent {\n constructor(type, args, originalEvent, p) {\n super(type, { detail: args, bubbles: true, cancelable: true }, originalEvent, p);\n }\n}\nexport var StalePropertyFlag;\n(function (StalePropertyFlag) {\n StalePropertyFlag[\"Position\"] = \"position\";\n StalePropertyFlag[\"Transform\"] = \"transform\";\n StalePropertyFlag[\"Geometry\"] = \"geometry\";\n StalePropertyFlag[\"Children\"] = \"children\";\n StalePropertyFlag[\"Material\"] = \"material\";\n StalePropertyFlag[\"Light\"] = \"light\";\n StalePropertyFlag[\"Camera\"] = \"camera\";\n StalePropertyFlag[\"Visibility\"] = \"visibility\";\n})(StalePropertyFlag || (StalePropertyFlag = {}));\nexport function isInteraction(object) {\n return typeof object === 'object' && 'time' in object && typeof object['time'] === 'number';\n}\n//namespace Pacem.Components.Drawing3D {\nconst Constants = {\n OBJECT_SELECTOR: P + '-' + TAG_MIDDLE_NAME + '-object',\n LIGHT_SELECTOR: P + '-' + TAG_MIDDLE_NAME + '-light',\n PERSPECTIVE_CAMERA_SELECTOR: P + '-' + TAG_MIDDLE_NAME + '-perspective-camera',\n ORTHO_CAMERA_SELECTOR: P + '-' + TAG_MIDDLE_NAME + '-orthographic-camera',\n LINE_SELECTOR: P + '-' + TAG_MIDDLE_NAME + '-line',\n MESH_SELECTOR: P + '-' + TAG_MIDDLE_NAME + '-mesh',\n GROUP_SELECTOR: P + '-' + TAG_MIDDLE_NAME + '-group',\n DEFAULT_COORDS: { x: 0, y: 0, z: 0 }\n};\nexport class RenderableElement extends Components.PacemCrossItemsContainerElement {\n constructor() {\n super(...arguments);\n this.position = Constants.DEFAULT_COORDS;\n this.#staleFlags = [];\n }\n validate(_) {\n // by default no children allowed (Group will except)\n return false;\n }\n findContainer() {\n // override\n return this.parent || this.stage;\n }\n get stage() {\n return this['_scene'] = this['_scene'] || CustomElementUtils.findAncestorOfType(this, Pacem3DElement);\n }\n get parent() {\n return this['_drawableParent'] = this['_drawableParent'] || CustomElementUtils.findAncestor(this, i => i instanceof RenderableElement);\n }\n disconnectedCallback() {\n delete this['_scene'];\n delete this['_drawableParent'];\n super.disconnectedCallback();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'hide':\n this.setAsDirty(StalePropertyFlag.Visibility);\n break;\n case 'items':\n this.setAsDirty(StalePropertyFlag.Children);\n break;\n case 'position':\n this.setAsDirty(StalePropertyFlag.Position);\n break;\n }\n }\n #staleFlags;\n get flags() {\n return this.#staleFlags;\n }\n /** Calls for a redraw of the current element in the next rendering process. */\n setAsDirty(...flags) {\n // set the flags that identify the stale part of the object to be updated.\n for (let flag of flags) {\n if (!this.flags.includes(flag)) {\n this.flags.push(flag);\n }\n }\n this.stage?.render(this);\n }\n}\n__decorate([\n Watch({ emit: false, converter: Point3DConverter })\n], RenderableElement.prototype, \"position\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.String })\n], RenderableElement.prototype, \"tag\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], RenderableElement.prototype, \"inert\", void 0);\nexport class Ui3DElement extends RenderableElement {\n // #endregion\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'transformMatrix':\n this.setAsDirty(StalePropertyFlag.Transform);\n break;\n case 'translateZ':\n case 'translateX':\n case 'translateY':\n this.offset = { x: this.translateX, y: this.translateY, z: this.translateZ };\n break;\n case 'scaleX':\n case 'scaleY':\n case 'scaleZ':\n this.scale = { x: this.scaleX, y: this.scaleY, z: this.scaleZ };\n break;\n case 'scale':\n case 'offset':\n case 'rotate':\n this._computeTransformMatrix();\n break;\n }\n }\n _computeTransformMatrix() {\n const MAT3D = Geometry.LinearAlgebra.Matrix3D, VEC3D = Geometry.LinearAlgebra.Vector3D, QUAT = Geometry.LinearAlgebra.Quaternion;\n // scale\n const scale = this.scale ?? VEC3D.from(1, 1, 1);\n let m = MAT3D.scale(MAT3D.identity(), scale);\n // rotate\n if (!Utils.isNull(this.rotate)) {\n const rot = QUAT.toRotationMatrix(this.rotate);\n m = MAT3D.multiply(m, rot);\n }\n // translate\n const offset = this.offset ?? VEC3D.from(0, 0, 0);\n m = MAT3D.translate(m, offset);\n this.transformMatrix = m;\n }\n}\n__decorate([\n Watch({ emit: false, converter: QuaternionConverter })\n], Ui3DElement.prototype, \"rotate\", void 0);\n__decorate([\n Watch({ emit: false, converter: Point3DOrNumberConverter })\n], Ui3DElement.prototype, \"scale\", void 0);\n__decorate([\n Watch({ emit: false, converter: Point3DOrNumberConverter })\n], Ui3DElement.prototype, \"offset\", void 0);\n__decorate([\n Watch({ emit: false })\n], Ui3DElement.prototype, \"transformMatrix\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], Ui3DElement.prototype, \"scaleX\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], Ui3DElement.prototype, \"scaleY\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], Ui3DElement.prototype, \"scaleZ\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], Ui3DElement.prototype, \"translateX\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], Ui3DElement.prototype, \"translateY\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], Ui3DElement.prototype, \"translateZ\", void 0);\nlet Pacem3DGroupElement = class Pacem3DGroupElement extends Ui3DElement {\n validate(child) {\n // overrides default denial\n return child instanceof RenderableElement;\n }\n #children = [];\n get childRenderables() {\n return this.#children;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'items':\n case 'datasource':\n this.#children = (val || []);\n this.setAsDirty(StalePropertyFlag.Children);\n break;\n }\n }\n};\n__decorate([\n Watch({ emit: false })\n], Pacem3DGroupElement.prototype, \"datasource\", void 0);\nPacem3DGroupElement = __decorate([\n CustomElement({ tagName: Constants.GROUP_SELECTOR })\n], Pacem3DGroupElement);\nexport { Pacem3DGroupElement };\nlet Pacem3DMeshElement = class Pacem3DMeshElement extends Ui3DElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'geometry':\n this.setAsDirty(StalePropertyFlag.Geometry);\n break;\n case 'material':\n case 'backMaterial':\n this.setAsDirty(StalePropertyFlag.Material);\n break;\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], Pacem3DMeshElement.prototype, \"geometry\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], Pacem3DMeshElement.prototype, \"material\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], Pacem3DMeshElement.prototype, \"backMaterial\", void 0);\nPacem3DMeshElement = __decorate([\n CustomElement({ tagName: Constants.MESH_SELECTOR })\n], Pacem3DMeshElement);\nexport { Pacem3DMeshElement };\nlet Pacem3DObjectElement = class Pacem3DObjectElement extends Ui3DElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'content' || name === 'type') {\n this.setAsDirty(StalePropertyFlag.Geometry, StalePropertyFlag.Material);\n }\n }\n};\n__decorate([\n Watch({ emit: false })\n], Pacem3DObjectElement.prototype, \"content\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], Pacem3DObjectElement.prototype, \"type\", void 0);\nPacem3DObjectElement = __decorate([\n CustomElement({ tagName: Constants.OBJECT_SELECTOR })\n], Pacem3DObjectElement);\nexport { Pacem3DObjectElement };\nlet Pacem3DLightElement = class Pacem3DLightElement extends RenderableElement {\n constructor() {\n super(...arguments);\n this.intensity = .85;\n this.target = Constants.DEFAULT_COORDS;\n this.color = '#fff';\n this.type = 'omni';\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'type':\n case 'color':\n case 'intensity':\n case 'target':\n this.setAsDirty(StalePropertyFlag.Light);\n break;\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], Pacem3DLightElement.prototype, \"intensity\", void 0);\n__decorate([\n Watch({ emit: false, converter: Point3DConverter })\n], Pacem3DLightElement.prototype, \"target\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], Pacem3DLightElement.prototype, \"color\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], Pacem3DLightElement.prototype, \"type\", void 0);\nPacem3DLightElement = __decorate([\n CustomElement({ tagName: Constants.LIGHT_SELECTOR })\n], Pacem3DLightElement);\nexport { Pacem3DLightElement };\nexport class Pacem3DCameraElement extends RenderableElement {\n constructor() {\n super(...arguments);\n this.near = 0.1;\n this.far = 1000.0;\n this.up = Geometry.LinearAlgebra.Vector3D.j();\n this.lookAt = Constants.DEFAULT_COORDS;\n }\n #sphere;\n _resetBoundingSphere() {\n const oldValue = this.#sphere;\n const eye = this.position, center = this.lookAt;\n const radius = Utils.isNullOrEmpty(eye) || Utils.isNullOrEmpty(center) ? 0\n : Geometry.LinearAlgebra.Vector3D.mag(Geometry.LinearAlgebra.Vector3D.subtract(eye, center));\n const currentValue = this.#sphere = { center, radius };\n this.dispatchEvent(new PropertyChangeEvent({ currentValue, propertyName: 'boundingSphere', oldValue }));\n }\n get boundingSphere() {\n return this.#sphere;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'lookAt':\n case 'position':\n this._resetBoundingSphere();\n case 'near':\n case 'far':\n case 'up':\n this.setAsDirty(StalePropertyFlag.Camera);\n break;\n }\n }\n}\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], Pacem3DCameraElement.prototype, \"near\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], Pacem3DCameraElement.prototype, \"far\", void 0);\n__decorate([\n Watch({ emit: false, converter: Point3DConverter })\n], Pacem3DCameraElement.prototype, \"up\", void 0);\n__decorate([\n Watch({ emit: false, converter: Point3DConverter })\n], Pacem3DCameraElement.prototype, \"lookAt\", void 0);\nlet Pacem3DPerspectiveCameraElement = class Pacem3DPerspectiveCameraElement extends Pacem3DCameraElement {\n constructor() {\n super(...arguments);\n this.fov = 45;\n this.aspect = 1;\n }\n get type() {\n return \"perspective\";\n }\n get aspectRatio() {\n return this.aspect;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'fov':\n case 'aspect':\n this.setAsDirty(StalePropertyFlag.Camera);\n break;\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], Pacem3DPerspectiveCameraElement.prototype, \"fov\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], Pacem3DPerspectiveCameraElement.prototype, \"aspect\", void 0);\nPacem3DPerspectiveCameraElement = __decorate([\n CustomElement({ tagName: Constants.PERSPECTIVE_CAMERA_SELECTOR })\n], Pacem3DPerspectiveCameraElement);\nexport { Pacem3DPerspectiveCameraElement };\nlet Pacem3DOrthographicCameraElement = class Pacem3DOrthographicCameraElement extends Pacem3DCameraElement {\n constructor() {\n super(...arguments);\n this.top = 1;\n this.left = -1;\n this.bottom = -1;\n this.right = 1;\n }\n get type() {\n return \"orthographic\";\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'top':\n case 'left':\n case 'bottom':\n case 'right':\n this.setAsDirty(StalePropertyFlag.Camera);\n break;\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], Pacem3DOrthographicCameraElement.prototype, \"top\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], Pacem3DOrthographicCameraElement.prototype, \"left\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], Pacem3DOrthographicCameraElement.prototype, \"bottom\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], Pacem3DOrthographicCameraElement.prototype, \"right\", void 0);\nPacem3DOrthographicCameraElement = __decorate([\n CustomElement({ tagName: Constants.ORTHO_CAMERA_SELECTOR })\n], Pacem3DOrthographicCameraElement);\nexport { Pacem3DOrthographicCameraElement };\nexport class Pacem3DAdapterElement extends PacemEventTarget {\n}\n","//namespace Pacem.Components.Drawing3D {\n/** @deprecated*/\nexport class Pacem3DDetector {\n constructor() {\n this._detected = {\n supported: false, info: {}\n };\n let cvs = document.createElement('canvas');\n let contextNames = ['webgl', 'experimental-webgl', 'moz-webgl', 'webkit-3d'];\n let ctx;\n let getParam = function (str) {\n if (!str)\n return undefined;\n return ctx.getParameter(str);\n };\n // addLine\n let addLine = (section, name, value) => {\n let detected = this._detected;\n var info = detected.info[section] = detected.info[section] || {};\n name = name.replace(/[^\\w]+/g, '');\n name = name.substring(0, 1).toLowerCase() + name.substring(1);\n info[name] = value;\n };\n if (navigator.userAgent.indexOf('MSIE') >= 0) {\n try {\n ctx = window['WebGLHelper'].CreateGLContext(cvs, 'canvas');\n }\n catch (e) { }\n }\n else {\n for (var i = 0; i < contextNames.length; i++) {\n try {\n ctx = cvs.getContext(contextNames[i]);\n if (ctx) {\n addLine('main', 'Context Name', contextNames[i]);\n break;\n }\n }\n catch (e) { }\n }\n }\n this._detected.supported = !!ctx;\n addLine('main', 'Platform', navigator.platform);\n addLine('main', 'Agent', navigator.userAgent);\n if (ctx) {\n addLine('main', 'Vendor', getParam(ctx.VENDOR));\n addLine('main', 'Version', getParam(ctx.VERSION));\n addLine('main', 'Renderer', getParam(ctx.RENDERER));\n addLine('main', 'Shading Language Version', getParam(ctx.SHADING_LANGUAGE_VERSION));\n addLine('bits', 'Rgba Bits', getParam(ctx.RED_BITS) + ', ' + getParam(ctx.GREEN_BITS) + ', ' + getParam(ctx.BLUE_BITS) + ', ' + getParam(ctx.ALPHA_BITS));\n addLine('bits', 'Depth Bits', getParam(ctx.DEPTH_BITS));\n addLine('shader', 'Max Vertex Attribs', getParam(ctx.MAX_VERTEX_ATTRIBS));\n addLine('shader', 'Max Vertex Texture Image Units', getParam(ctx.MAX_VERTEX_TEXTURE_IMAGE_UNITS));\n addLine('shader', 'Max Varying Vectors', getParam(ctx.MAX_VARYING_VECTORS));\n addLine('shader', 'Max Uniform Vectors', getParam(ctx.MAX_VERTEX_UNIFORM_VECTORS));\n addLine('tex', 'Max Combined Texture Image Units', getParam(ctx.MAX_COMBINED_TEXTURE_IMAGE_UNITS));\n addLine('tex', 'Max Texture Size', getParam(ctx.MAX_TEXTURE_SIZE));\n addLine('tex', 'Max Cube Map Texture Size', getParam(ctx.MAX_CUBE_MAP_TEXTURE_SIZE));\n addLine('tex', 'Num. Compressed Texture Formats', getParam(ctx.COMPRESSED_TEXTURE_FORMATS));\n addLine('misc', 'Max Render Buffer Size', getParam(ctx.MAX_RENDERBUFFER_SIZE));\n addLine('misc', 'Max Viewport Dimensions', getParam(ctx.MAX_VIEWPORT_DIMS));\n addLine('misc', 'Aliased Line Width Range', getParam(ctx.ALIASED_LINE_WIDTH_RANGE));\n addLine('misc', 'Aliased Point Size Range', getParam(ctx.ALIASED_POINT_SIZE_RANGE));\n addLine('misc', 'Supported Extensions', ctx.getSupportedExtensions() || []);\n }\n }\n get info() {\n return this._detected.info;\n }\n get supported() {\n return this._detected.supported;\n }\n}\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { PacemEventTarget, Utils, Watch, PropertyConverters, PCSS } from '@pacem/pacem-core';\nimport { Imaging } from '@pacem/pacem-foundation';\nimport { StalePropertyFlag } from '../types';\n//namespace Pacem.Drawing3D {\nexport var KnownShader;\n(function (KnownShader) {\n KnownShader[\"Basic\"] = \"basic\";\n KnownShader[\"Lambert\"] = \"lambert\";\n KnownShader[\"Phong\"] = \"phong\";\n KnownShader[\"Standard\"] = \"standard\";\n KnownShader[\"Line\"] = \"line\";\n KnownShader[\"Custom\"] = \"custom\";\n})(KnownShader || (KnownShader = {}));\nexport function isMaterial(obj) {\n return /*'color' in obj &&*/ 'shader' in obj;\n}\nexport function isBasicMaterial(obj) {\n return isMaterial(obj) && obj.shader === KnownShader.Basic;\n}\nexport function isLineMaterial(obj) {\n return isMaterial(obj) && obj.shader === KnownShader.Line;\n}\nexport function isLambertMaterial(obj) {\n return isMaterial(obj) && obj.shader === KnownShader.Lambert;\n}\nexport function isPhongMaterial(obj) {\n return isMaterial(obj) && obj.shader === KnownShader.Phong;\n}\nexport function isStandardMaterial(obj) {\n return isMaterial(obj) && obj.shader === KnownShader.Standard;\n}\nexport function isShaderMaterial(obj) {\n return isMaterial(obj) && obj.shader === KnownShader.Custom;\n}\n//namespace Pacem.Components.Drawing3D {\nexport class MaterialElement extends PacemEventTarget {\n constructor(shader) {\n super();\n this.#shader = shader;\n }\n #shader;\n get shader() {\n return this.#shader;\n }\n async _loadMap(url, old = this.material?.texture) {\n if (!Utils.isNull(old)) {\n old.close();\n }\n if (Utils.isNullOrEmpty(url)) {\n return null;\n }\n const blob = await Imaging.loadImage(url);\n if (Utils.isNull(blob)) {\n return null;\n }\n return await createImageBitmap(blob);\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'map':\n case 'opacity':\n case 'wireframe':\n case 'color':\n case 'hide':\n this.updateMaterial();\n break;\n }\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this.updateMaterial();\n }\n updateMaterial() {\n this.createMaterial().then(m => {\n this.material = Utils.extend(m, { flags: [StalePropertyFlag.Material] });\n });\n }\n async createMaterial() {\n return {\n opacity: this.opacity ?? 1.0,\n wireframe: this.wireframe ?? false,\n color: this.color || Utils.Css.getVariableValue(`--${PCSS}-color-primary`),\n visible: !(this.hide ?? false),\n map: this.map,\n texture: await this._loadMap(this.map),\n shader: this.shader,\n flags: [],\n };\n }\n}\n__decorate([\n Watch()\n], MaterialElement.prototype, \"material\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], MaterialElement.prototype, \"opacity\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], MaterialElement.prototype, \"wireframe\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], MaterialElement.prototype, \"color\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], MaterialElement.prototype, \"hide\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], MaterialElement.prototype, \"map\", void 0);\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, P } from '@pacem/pacem-core';\nimport { KnownShader, MaterialElement } from './material';\nimport { TAG_MIDDLE_NAME } from '../constants';\n//namespace Pacem.Components.Drawing3D {\nlet BasicMaterialElement = class BasicMaterialElement extends MaterialElement {\n constructor() {\n super(KnownShader.Basic);\n }\n};\nBasicMaterialElement = __decorate([\n CustomElement({ tagName: `${P}-${TAG_MIDDLE_NAME}-material-basic` })\n], BasicMaterialElement);\nexport { BasicMaterialElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, P, Watch, PropertyConverters, Utils } from '@pacem/pacem-core';\nimport { TAG_MIDDLE_NAME } from '../constants';\nimport { KnownShader, MaterialElement } from './material';\n//namespace Pacem.Components.Drawing3D {\nlet LambertMaterialElement = class LambertMaterialElement extends MaterialElement {\n constructor() {\n super(KnownShader.Lambert);\n }\n async createMaterial() {\n return Utils.extend({\n emissiveColor: this.emissiveColor || '#000',\n reflectivity: this.reflectivity ?? 0,\n refractionRatio: this.refractionRatio ?? 0\n }, await super.createMaterial());\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'emissiveColor':\n case 'reflectivity':\n case 'refractionRatio':\n this.updateMaterial();\n break;\n }\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], LambertMaterialElement.prototype, \"emissiveColor\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], LambertMaterialElement.prototype, \"reflectivity\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], LambertMaterialElement.prototype, \"refractionRatio\", void 0);\nLambertMaterialElement = __decorate([\n CustomElement({ tagName: `${P}-${TAG_MIDDLE_NAME}-material-lambert` })\n], LambertMaterialElement);\nexport { LambertMaterialElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, P, Watch, PropertyConverters, Utils } from '@pacem/pacem-core';\nimport { TAG_MIDDLE_NAME } from '../constants';\nimport { KnownShader, MaterialElement } from './material';\n//namespace Pacem.Components.Drawing3D {\nlet LineMaterialElement = class LineMaterialElement extends MaterialElement {\n constructor() {\n super(KnownShader.Line);\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'lineWidth':\n case 'lineJoin':\n case 'lineCap':\n case 'dashArray':\n this.updateMaterial();\n break;\n }\n }\n }\n async createMaterial() {\n return Utils.extend({\n lineWidth: this.lineWidth ?? 1,\n lineJoin: this.lineJoin ?? 'round',\n lineCap: this.lineCap ?? 'round',\n dashArray: this.dashArray,\n }, await super.createMaterial());\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], LineMaterialElement.prototype, \"lineWidth\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], LineMaterialElement.prototype, \"lineJoin\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], LineMaterialElement.prototype, \"lineCap\", void 0);\n__decorate([\n Watch({\n emit: false, converter: {\n convert: (attr) => attr?.split(',').map(i => parseInt(i)).filter(i => !Number.isNaN(i)),\n convertBack: (prop) => prop?.join(',')\n }\n })\n], LineMaterialElement.prototype, \"dashArray\", void 0);\nLineMaterialElement = __decorate([\n CustomElement({ tagName: `${P}-${TAG_MIDDLE_NAME}-material-line` })\n], LineMaterialElement);\nexport { LineMaterialElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, P, Watch, PropertyConverters, Utils } from '@pacem/pacem-core';\nimport { TAG_MIDDLE_NAME } from '../constants';\nimport { KnownShader, MaterialElement } from './material';\n//namespace Pacem.Components.Drawing3D {\nlet PhongMaterialElement = class PhongMaterialElement extends MaterialElement {\n constructor() {\n super(KnownShader.Phong);\n }\n async createMaterial() {\n return Utils.extend({\n emissiveColor: this.emissiveColor || '#000',\n reflectivity: this.reflectivity ?? 0,\n refractionRatio: this.refractionRatio ?? 0,\n specularColor: this.specularColor || '#000',\n shininess: this.shininess ?? 0,\n flatShading: this.flatShading ?? true\n }, await super.createMaterial());\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'emissiveColor':\n case 'reflectivity':\n case 'refractionRatio':\n case 'specularColor':\n case 'shininess':\n case 'flatShading':\n this.updateMaterial();\n break;\n }\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PhongMaterialElement.prototype, \"emissiveColor\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PhongMaterialElement.prototype, \"reflectivity\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PhongMaterialElement.prototype, \"refractionRatio\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PhongMaterialElement.prototype, \"specularColor\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PhongMaterialElement.prototype, \"shininess\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PhongMaterialElement.prototype, \"flatShading\", void 0);\nPhongMaterialElement = __decorate([\n CustomElement({ tagName: `${P}-${TAG_MIDDLE_NAME}-material-phong` })\n], PhongMaterialElement);\nexport { PhongMaterialElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, P, Watch, PropertyConverters, Utils } from '@pacem/pacem-core';\nimport { TAG_MIDDLE_NAME } from '../constants';\nimport { KnownShader, MaterialElement } from './material';\n//namespace Pacem.Components.Drawing3D {\nlet StandardMaterialElement = class StandardMaterialElement extends MaterialElement {\n constructor() {\n super(KnownShader.Standard);\n }\n async createMaterial() {\n return Utils.extend({\n emissiveColor: this.emissiveColor || '#000',\n refractionRatio: this.refractionRatio ?? 0,\n metalness: this.metalness ?? 0,\n roughness: this.roughness ?? 0,\n flatShading: this.flatShading ?? false\n }, await super.createMaterial());\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'emissiveColor':\n case 'roughness':\n case 'metalness':\n case 'refractionRatio':\n case 'flatShading':\n this.updateMaterial();\n break;\n }\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], StandardMaterialElement.prototype, \"emissiveColor\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], StandardMaterialElement.prototype, \"refractionRatio\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], StandardMaterialElement.prototype, \"roughness\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], StandardMaterialElement.prototype, \"metalness\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], StandardMaterialElement.prototype, \"flatShading\", void 0);\nStandardMaterialElement = __decorate([\n CustomElement({ tagName: `${P}-${TAG_MIDDLE_NAME}-material-standard` })\n], StandardMaterialElement);\nexport { StandardMaterialElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { PacemEventTarget, Watch, PropertyConverters, Utils } from '@pacem/pacem-core';\n//namespace Pacem.Components.Drawing3D {\nexport class Pacem3DPrimitiveElement extends PacemEventTarget {\n viewActivatedCallback() {\n super.viewActivatedCallback();\n if (Utils.isNull(this.geometry)) {\n this.geometry = this.createDefaultGeometry();\n }\n }\n}\n__decorate([\n Watch({ converter: PropertyConverters.Json })\n], Pacem3DPrimitiveElement.prototype, \"geometry\", void 0);\n","import { Utils } from '@pacem/pacem-core';\n//namespace Pacem.Drawing3D {\nexport function NotifyChange(callback) {\n return (target, prop, descriptor) => {\n const backingField = `_${prop}_${Utils.uniqueCode()}_backingField`;\n function getter() {\n return this[backingField];\n }\n function setter(val) {\n if (val !== this[backingField]) {\n const old = this[backingField];\n this[backingField] = val;\n callback.call(this, prop, old, val);\n }\n }\n //if (delete target[prop]) {\n Object.defineProperty(target, prop, {\n get: function () {\n return getter.call(this);\n },\n set: function (val) {\n setter.call(this, val);\n },\n enumerable: true,\n configurable: false\n });\n //}\n };\n}\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Utils } from '@pacem/pacem-core';\nimport { StalePropertyFlag } from './types';\nimport { NotifyChange } from './decorators';\nexport class NodeGeometry {\n constructor(positions = []) {\n this.positions = positions;\n }\n static barycenter(positions) {\n var bary = { x: 0, y: 0, z: 0 };\n if (!Utils.isNullOrEmpty(positions)) {\n var count = positions.length;\n for (var i = 0; i < positions.length; i++) {\n var pt = positions[i];\n bary.x += pt.x;\n bary.y += pt.y;\n bary.z += pt.z;\n }\n var countDbl = 1.0 * count;\n bary.x /= countDbl;\n bary.y /= countDbl;\n bary.z /= countDbl;\n }\n return bary;\n }\n static boundingBox(positions) {\n const output = {\n minX: +Infinity, minY: +Infinity, minZ: +Infinity,\n maxX: -Infinity, maxY: -Infinity, maxZ: -Infinity\n };\n if (!Utils.isNullOrEmpty(positions)) {\n for (var i = 0; i < positions.length; i++) {\n var pt = positions[i];\n output.minX = Math.min(output.minX, pt.x);\n output.minY = Math.min(output.minY, pt.y);\n output.minZ = Math.min(output.minZ, pt.z);\n output.maxX = Math.max(output.maxX, pt.x);\n output.maxY = Math.max(output.maxY, pt.y);\n output.maxZ = Math.max(output.maxZ, pt.z);\n }\n }\n return output;\n }\n setAsDirty() {\n setSelfAsDirty.call(this);\n }\n}\nfunction setSelfAsDirty() {\n const me = this;\n me.flags = [/* no further specifications, other than 'geometry' */ StalePropertyFlag.Geometry];\n}\nexport class LineGeometry extends NodeGeometry {\n}\n__decorate([\n NotifyChange(setSelfAsDirty)\n], LineGeometry.prototype, \"positions\", void 0);\nexport class MeshGeometry extends NodeGeometry {\n #boundingBox;\n #boundingSphere;\n #barycenter;\n get barycenter() {\n return this.#barycenter ??= NodeGeometry.barycenter(this.positions);\n }\n set barycenter(point) {\n this.#barycenter = point;\n }\n get boundingBox() {\n return this.#boundingBox ??= NodeGeometry.boundingBox(this.positions);\n }\n set boundingBox(bbox) {\n this.#boundingBox = bbox;\n }\n get boundingSphere() {\n return this.#boundingSphere;\n }\n set boundingSphere(sphere) {\n this.#boundingSphere = sphere;\n }\n constructor(positions, triangleIndices, textureCoordinates = [], normals = []) {\n super(positions);\n this.triangleIndices = triangleIndices;\n this.textureCoordinates = textureCoordinates;\n this.normals = normals;\n }\n}\n__decorate([\n NotifyChange(setSelfAsDirty)\n], MeshGeometry.prototype, \"positions\", void 0);\n__decorate([\n NotifyChange(setSelfAsDirty)\n], MeshGeometry.prototype, \"triangleIndices\", void 0);\n__decorate([\n NotifyChange(setSelfAsDirty)\n], MeshGeometry.prototype, \"textureCoordinates\", void 0);\n__decorate([\n NotifyChange(setSelfAsDirty)\n], MeshGeometry.prototype, \"normals\", void 0);\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar PacemBoxElement_1;\nimport { CustomElement, P, Watch, PropertyConverters } from '@pacem/pacem-core';\nimport { computeSharpVertexNormals } from '../types';\nimport { MeshGeometry } from '../geometry';\nimport { Pacem3DPrimitiveElement } from './primitive';\nimport { TAG_MIDDLE_NAME } from '../constants';\n//namespace Pacem.Components.Drawing3D {\nlet PacemBoxElement = PacemBoxElement_1 = class PacemBoxElement extends Pacem3DPrimitiveElement {\n static createMeshGeometry(width, height, depth, widthSegments, heightSegments, depthSegments) {\n const w = width || 1, h = height || 1, d = depth || 1, sw = widthSegments || 1, sh = heightSegments || 1, sd = depthSegments || 1;\n const positions = [];\n const uv = [];\n const indices = [];\n // populationg positions\n for (var j = 0; j <= sh; j++) {\n var y = h / 2.0 - h * (1.0 * j) / (1.0 * sh); // ??\n for (var k = 0; k <= sd; k++) {\n var z = -d / 2.0 + d * (1.0 * k) / (1.0 * sd);\n for (var i = 0; i <= sw; i++) {\n var x = -w / 2.0 + w * (1.0 * i) / (1.0 * sw);\n // add only surface nodes\n if (i == 0 || i == sw || k == 0 || k == sd || j == 0 || j == sh)\n positions.push({ x, y, z });\n }\n }\n }\n var getPosIndex = function (x, y, z) {\n var epsilon = .00001;\n for (var i = 0; i < positions.length; i++) {\n var pt = positions[i];\n if (Math.abs(pt.x - x) < epsilon && Math.abs(pt.y - y) < epsilon && Math.abs(pt.z - z) < epsilon)\n return i;\n }\n return -1;\n };\n var appendFace = function (c_1, c_2, c_3, c_4, u, v, u_next, v_next) {\n indices.push(c_1);\n indices.push(c_2);\n indices.push(c_3);\n indices.push(c_1);\n indices.push(c_3);\n indices.push(c_4);\n uv.push({ x: u, y: v_next });\n uv.push({ x: u_next, y: v_next });\n uv.push({ x: u_next, y: v });\n uv.push({ x: u, y: v_next });\n uv.push({ x: u_next, y: v });\n uv.push({ x: u, y: v });\n };\n // top face (1)\n for (var k = 0; k < sd; k++) {\n var y = h / 2.0;\n var z = -d / 2.0 + d * (1.0 * k) / (1.0 * sd);\n var z_next = -d / 2.0 + d * (1.0 * (k + 1)) / (1.0 * sd);\n for (var i = 0; i < sw; i++) {\n var x = -w / 2.0 + (1.0 * i) * w / (1.0 * sw);\n var x_next = -w / 2.0 + (1.0 * (i + 1)) * w / (1.0 * sw);\n // coord-indices + tex-coords\n var c_1 = getPosIndex(x, y, z_next);\n var c_2 = getPosIndex(x_next, y, z_next);\n var c_3 = getPosIndex(x_next, y, z);\n var c_4 = getPosIndex(x, y, z);\n var u_next = (1.0 * (i + 1)) / (1.0 * sw);\n var u = (1.0 * i) / (1.0 * sw);\n var v_next = 1.0 - (1.0 * (k + 1)) / (1.0 * sd);\n var v = 1.0 - (1.0 * k) / (1.0 * sd);\n appendFace(c_1, c_2, c_3, c_4, u, v, u_next, v_next);\n }\n }\n // back face (2)\n for (var j = 0; j < sh; j++) {\n var y = h / 2.0 - (1.0 * j) * h / (1.0 * sh);\n var y_next = h / 2.0 - (j + 1.0) * h / (1.0 * sh);\n var z = -d / 2.0;\n for (var i = 0; i < sw; i++) {\n var x = w / 2.0 - 1.0 * i * w / (1.0 * sw);\n var x_next = w / 2.0 - (i + 1.0) * w / (1.0 * sw);\n // coord-indices + tex-coords\n var c_1 = getPosIndex(x, y_next, z);\n var c_2 = getPosIndex(x_next, y_next, z);\n var c_3 = getPosIndex(x_next, y, z);\n var c_4 = getPosIndex(x, y, z);\n var u_next = (i + 1.0) / (1.0 * sw);\n var u = (1.0 * i) / (1.0 * sw);\n var v_next = 1.0 - (j + 1.0) / (1.0 * sh);\n var v = 1.0 - 1.0 * j / (1.0 * sh);\n appendFace(c_1, c_2, c_3, c_4, u, v, u_next, v_next);\n }\n }\n // left face (3)\n for (var j = 0; j < sh; j++) {\n var y = h / 2.0 - (1.0 * j) * h / (1.0 * sh);\n var y_next = h / 2.0 - (j + 1.0) * h / (1.0 * sh);\n var x = -w / 2.0;\n for (var k = 0; k < sd; k++) {\n var z = -d / 2.0 + k * d / (1.0 * sd);\n var z_next = -d / 2.0 + (k + 1.0) * d / (1.0 * sd);\n // coord-indices + tex-coords\n var c_1 = getPosIndex(x, y_next, z);\n var c_2 = getPosIndex(x, y_next, z_next);\n var c_3 = getPosIndex(x, y, z_next);\n var c_4 = getPosIndex(x, y, z);\n var u_next = (k + 1.0) / (1.0 * sd);\n var u = (1.0 * k) / (1.0 * sd);\n var v_next = 1.0 - (j + 1.0) / (1.0 * sh);\n var v = 1.0 - j / (1.0 * sh);\n appendFace(c_1, c_2, c_3, c_4, u, v, u_next, v_next);\n }\n }\n // front face (4)\n for (var j = 0; j < sh; j++) {\n var y = h / 2.0 - j * h / (1.0 * sh);\n var y_next = h / 2.0 - (j + 1.0) * h / (1.0 * sh);\n var z = d / 2.0;\n for (var i = 0; i < sw; i++) {\n var x = -w / 2.0 + i * w / (1.0 * sw);\n var x_next = -w / 2.0 + (i + 1.0) * w / (1.0 * sw);\n // coord-indices + tex-coords\n var c_1 = getPosIndex(x, y_next, z);\n var c_2 = getPosIndex(x_next, y_next, z);\n var c_3 = getPosIndex(x_next, y, z);\n var c_4 = getPosIndex(x, y, z);\n var u_next = (i + 1.0) / (1.0 * sw);\n var u = (1.0 * i) / (1.0 * sw);\n var v_next = 1.0 - (j + 1.0) / (1.0 * sh);\n var v = 1.0 - (1.0 * j) / (1.0 * sh);\n appendFace(c_1, c_2, c_3, c_4, u, v, u_next, v_next);\n }\n }\n // right face (5)\n for (var j = 0; j < sh; j++) {\n var y = h / 2.0 - j * h / (1.0 * sh);\n var y_next = h / 2.0 - (j + 1.0) * h / (1.0 * sh);\n var x = w / 2.0;\n for (var k = 0; k < sd; k++) {\n var z = d / 2.0 - k * d / (1.0 * sd);\n var z_next = d / 2.0 - (k + 1.0) * d / (1.0 * sd);\n // coord-indices + tex-coords\n var c_1 = getPosIndex(x, y_next, z);\n var c_2 = getPosIndex(x, y_next, z_next);\n var c_3 = getPosIndex(x, y, z_next);\n var c_4 = getPosIndex(x, y, z);\n var u_next = (k + 1.0) / (1.0 * sd);\n var u = (1.0 * k) / (1.0 * sd);\n var v_next = 1.0 - (j + 1.0) / (1.0 * sh);\n var v = 1.0 - (1.0 * j) / (1.0 * sh);\n appendFace(c_1, c_2, c_3, c_4, u, v, u_next, v_next);\n }\n }\n // bottom face (6)\n for (var k = 0; k < sd; k++) {\n var y = -h / 2.0;\n var z = d / 2.0 - d * k / (1.0 * sd);\n var z_next = d / 2.0 - d * (k + 1.0) / (1.0 * sd);\n for (var i = 0; i < sw; i++) {\n var x = -w / 2.0 + i * w / (1.0 * sw);\n var x_next = -w / 2.0 + (i + 1.0) * w / (1.0 * sw);\n // coord-indices + tex-coords\n var c_1 = getPosIndex(x, y, z_next);\n var c_2 = getPosIndex(x_next, y, z_next);\n var c_3 = getPosIndex(x_next, y, z);\n var c_4 = getPosIndex(x, y, z);\n var u_next = (i + 1.0) / (1.0 * sw);\n var u = (1.0 * i) / (1.0 * sw);\n var v_next = 1.0 - (k + 1.0) / (1.0 * sd);\n var v = 1.0 - (1.0 * k) / (1.0 * sd);\n appendFace(c_1, c_2, c_3, c_4, u, v, u_next, v_next);\n }\n }\n const geom = new MeshGeometry(positions, indices, uv);\n geom.key = `box_${width}x${height}x${depth}_w${widthSegments}_h${heightSegments}_d${depthSegments}`;\n computeSharpVertexNormals(geom);\n const center = { x: 0, y: 0, z: 0 };\n const w2 = width / 2, h2 = height / 2, d2 = depth / 2;\n //\n geom.barycenter = center;\n geom.boundingBox = { maxX: w2, maxY: h2, maxZ: d2, minX: -w2, minY: -h2, minZ: -d2 };\n geom.boundingSphere = { center, radius: Math.sqrt(Math.pow(w2, 2) + Math.pow(h2, 2) + Math.pow(d2, 2)) };\n //\n return geom;\n }\n createDefaultGeometry() {\n return PacemBoxElement_1.createMeshGeometry();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'width':\n case 'height':\n case 'depth':\n case 'widthSegments':\n case 'heightSegments':\n case 'depthSegments':\n this.geometry = PacemBoxElement_1.createMeshGeometry(this.width, this.height, this.depth, this.widthSegments, this.heightSegments, this.depthSegments);\n break;\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemBoxElement.prototype, \"width\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemBoxElement.prototype, \"height\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemBoxElement.prototype, \"depth\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemBoxElement.prototype, \"widthSegments\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemBoxElement.prototype, \"heightSegments\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemBoxElement.prototype, \"depthSegments\", void 0);\nPacemBoxElement = PacemBoxElement_1 = __decorate([\n CustomElement({ tagName: P + '-' + TAG_MIDDLE_NAME + '-primitive-box' })\n], PacemBoxElement);\nexport { PacemBoxElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar PacemConeElement_1;\nimport { CustomElement, P, Watch, PropertyConverters } from '@pacem/pacem-core';\nimport { computeSharpVertexNormals } from '../types';\nimport { MeshGeometry } from '../geometry';\nimport { Pacem3DPrimitiveElement } from './primitive';\nimport { TAG_MIDDLE_NAME, DEG2RAD } from '../constants';\n//namespace Pacem.Components.Drawing3D {\nlet PacemConeElement = PacemConeElement_1 = class PacemConeElement extends Pacem3DPrimitiveElement {\n static createMeshGeometry(radius = 1, height = 1, sides = 18, heightSegments = 5, capSegments = 1) {\n const r = radius;\n const nodes = [], uv = [], indices = [];\n const theta = DEG2RAD * (360.0 / sides);\n const slope = r / height;\n const fY = height / heightSegments;\n const fU = 1.0 / sides;\n // top vertex\n nodes.push({ x: .0, y: height, z: .0 });\n // ======================================\n // side loops\n for (let j = 1; j <= heightSegments; j++) {\n const y = height - fY * j;\n const v = y / height;\n const rj = (height - y) * slope;\n // for loops other than tip loop\n const y_prev = y + fY;\n const v_prev = y_prev / height;\n for (let i = 0; i < sides; i++) {\n const angle = theta * i;\n const x = Math.cos(angle) * rj, z = -Math.sin(angle) * rj;\n nodes.push({ x, y, z });\n const index = 1 + sides * (j - 1) + i;\n const index_prev = i == 0 ? index + sides - 1 : index - 1;\n const u = i * fU;\n const u_prev = i == 0 ? (1 - fU) : fU * (i - 1);\n if (j == 1) {\n // tip loop\n // 1 triangle\n indices.push(0, index_prev, index);\n uv.push({ x: u, y: 1 }, { x: u_prev, y: v }, { x: u, y: v });\n continue;\n }\n const prevLoopIndex = 1 + sides * (j - 2) + i;\n const prevLoopIndex_prev = i == 0 ? prevLoopIndex + sides - 1 : prevLoopIndex - 1;\n // quad\n const A = prevLoopIndex_prev;\n const B = index_prev;\n const C = index;\n const D = prevLoopIndex;\n indices.push(C, A, B);\n indices.push(C, D, A);\n const uvA = { x: u_prev, y: v_prev };\n const uvB = { x: u_prev, y: v };\n const uvC = { x: u, y: v };\n const uvD = { x: u, y: v_prev };\n uv.push(uvC, uvA, uvB);\n uv.push(uvC, uvD, uvA);\n }\n }\n // bottom cap\n const startCapIndex = 1 + (heightSegments - 1) * sides;\n // bottom vertex (pivot)\n nodes.push({ x: .0, y: 0, z: .0 });\n const bottomIndex = startCapIndex + sides;\n // ======================================\n for (let j = 1; j <= capSegments; j++) {\n const rj_norm = j / capSegments;\n const rj = radius * rj_norm;\n // for loops other than bottom vertex loop\n const rj_norm_prev = (j - 1) / capSegments;\n for (let i = 0; i < sides; i++) {\n const angle = theta * i, cos = Math.cos(angle), sin = Math.sin(angle);\n const angle_prev = angle - theta, cos_prev = Math.cos(angle_prev), sin_prev = Math.sin(angle_prev);\n const u = .5 * (1 + cos * rj_norm), v = .5 * (1 + sin * rj_norm);\n const u_prev = .5 * (1 + cos_prev * rj_norm), v_prev = .5 * (1 + sin_prev * rj_norm);\n let index, index_prev;\n if (j != capSegments) {\n const x = Math.cos(angle) * rj, z = -Math.sin(angle) * rj;\n nodes.push({ x, y: 0, z });\n index = bottomIndex + 1 + (j - 1) * sides + i;\n index_prev = i == 0 ? index + sides - 1 : index - 1;\n }\n else {\n index = startCapIndex + i;\n index_prev = i == 0 ? startCapIndex + sides - 1 : index - 1;\n }\n if (j == 1) {\n // bottom vertex loop\n // 1 triangle\n indices.push(bottomIndex, index, index_prev);\n uv.push({ x: .5, y: .5 }, { x: u, y: v }, { x: u_prev, y: v_prev });\n continue;\n }\n const prevLoopU = .5 * (1 + cos * rj_norm_prev), prevLoopV = .5 * (1 + sin * rj_norm_prev);\n const prevLoopU_prev = .5 * (1 + cos_prev * rj_norm_prev), prevLoopV_prev = .5 * (1 + sin_prev * rj_norm_prev);\n const prevLoopIndex = bottomIndex + 1 + (j - 2) * sides + i;\n const prevLoopIndex_prev = i == 0 ? prevLoopIndex + sides - 1 : prevLoopIndex - 1;\n // quad\n const A = prevLoopIndex_prev;\n const B = index_prev;\n const C = index;\n const D = prevLoopIndex;\n indices.push(A, D, B);\n indices.push(B, D, C);\n const uvA = { x: prevLoopU_prev, y: prevLoopV_prev };\n const uvB = { x: u_prev, y: v_prev };\n const uvC = { x: u, y: v };\n const uvD = { x: prevLoopU, y: prevLoopV };\n uv.push(uvA, uvD, uvB);\n uv.push(uvB, uvD, uvC);\n }\n }\n // put the whole thing together\n const geom = new MeshGeometry(nodes, indices, uv);\n geom.key = `cone_${radius}x${height}_s${sides}_h${heightSegments}_c${capSegments}`;\n computeSharpVertexNormals(geom);\n // TODO: barycenter, boundingBox, boundingSphere\n return geom;\n }\n createDefaultGeometry() {\n return PacemConeElement_1.createMeshGeometry();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'radius':\n case 'height':\n case 'sides':\n case 'heightSegments':\n case 'capSegments':\n this.geometry = PacemConeElement_1.createMeshGeometry(this.radius, this.height, this.sides, this.heightSegments, this.capSegments);\n break;\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemConeElement.prototype, \"radius\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemConeElement.prototype, \"height\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemConeElement.prototype, \"sides\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemConeElement.prototype, \"heightSegments\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemConeElement.prototype, \"capSegments\", void 0);\nPacemConeElement = PacemConeElement_1 = __decorate([\n CustomElement({ tagName: P + '-' + TAG_MIDDLE_NAME + '-primitive-cone' })\n], PacemConeElement);\nexport { PacemConeElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar PacemCylinderElement_1;\nimport { CustomElement, P, Watch, PropertyConverters } from '@pacem/pacem-core';\nimport { computeSharpVertexNormals } from '../types';\nimport { MeshGeometry } from '../geometry';\nimport { Pacem3DPrimitiveElement } from './primitive';\nimport { TAG_MIDDLE_NAME, DEG2RAD } from '../constants';\n//namespace Pacem.Components.Drawing3D {\nlet PacemCylinderElement = PacemCylinderElement_1 = class PacemCylinderElement extends Pacem3DPrimitiveElement {\n static createMeshGeometry(radius = 1, height = 1, sides = 18, heightSegments = 5, capSegments = 1) {\n const r = radius;\n const nodes = [], uv = [], indices = [];\n const theta = DEG2RAD * (360.0 / sides);\n // top & bottom vertices (pivot @(0,0,0))\n nodes.push({ x: .0, y: height, z: .0 });\n nodes.push({ x: .0, y: .0, z: .0 });\n // ======================================\n // cap loops\n const capRadius = r / capSegments;\n for (let j = 1; j <= capSegments; j++) {\n //int j_prev = j - 1;\n var rho = capRadius * j;\n for (var i = 0; i < sides; i++) {\n const startIndex = 2 + 2 * sides * (j - 1);\n const A = i == 0 ? startIndex + 2 * (sides - 1) : startIndex + 2 * (i - 1);\n const B = startIndex + 2 * i;\n const u = Math.cos(theta * i);\n const v = -Math.sin(theta * i);\n const u_prev = Math.cos(theta * (i - 1.0));\n const v_prev = -Math.sin(theta * (i - 1.0));\n const x = rho * u;\n const z = rho * v;\n const topPoint = { x, y: height, z };\n const bottomPoint = { x, y: .0, z };\n //\n nodes.push(topPoint);\n nodes.push(bottomPoint);\n // coordinates & texture\n const factor = .5 * rho / r;\n const uB = u * factor;\n const vB = v * factor;\n const uA = u_prev * factor;\n const vA = v_prev * factor;\n if (j == 1) {\n const faceIndicesTop = [0 /* top vertex*/, A, B];\n const faceIndicesBottom = [1 /* bottom vertex*/, B + 1, A + 1];\n // texture\n const uvTop = [\n { x: .5, y: .5 },\n { x: .5 + uA, y: .5 - vA },\n { x: 0.5 + uB, y: .5 - vB }\n ];\n const uvBottom = [\n { x: .5, y: .5 },\n { x: 0.5 + uB, y: .5 + vB },\n { x: .5 + uA, y: .5 + vA }\n ];\n // faces\n indices.push(...faceIndicesTop);\n indices.push(...faceIndicesBottom);\n // texture\n for (let i = 0; i < uvTop.length; i++)\n uv.push(uvTop[i]);\n for (let i = 0; i < uvBottom.length; i++)\n uv.push(uvBottom[i]);\n }\n else {\n const startIndexPrevLoop = 2 + 2 * sides * (j - 2);\n const D = i == 0 ? startIndexPrevLoop + 2 * (sides - 1) : startIndexPrevLoop + 2 * (i - 1);\n const C = startIndexPrevLoop + 2 * i;\n // coordinates & texture\n const factor0 = .5 * ((j - 1.0) / capSegments);\n const uC = u * factor0;\n const vC = v * factor0;\n const uD = u_prev * factor0;\n const vD = v_prev * factor0;\n const uvA = { x: .5 + uA, y: .5 - vA };\n const uvB = { x: .5 + uB, y: .5 - vB };\n const uvC = { x: .5 + uC, y: .5 - vC };\n const uvD = { x: .5 + uD, y: .5 - vD };\n const uvA2 = { x: .5 + uA, y: .5 + vA };\n const uvB2 = { x: .5 + uB, y: .5 + vB };\n const uvC2 = { x: .5 + uC, y: .5 + vC };\n const uvD2 = { x: .5 + uD, y: .5 + vD };\n // top\n indices.push(A);\n indices.push(B);\n indices.push(D);\n indices.push(D);\n indices.push(B);\n indices.push(C);\n // bottom\n indices.push(C + 1);\n indices.push(B + 1);\n indices.push(A + 1);\n indices.push(C + 1);\n indices.push(A + 1);\n indices.push(D + 1);\n // textures top\n uv.push(uvA);\n uv.push(uvB);\n uv.push(uvD);\n uv.push(uvD);\n uv.push(uvB);\n uv.push(uvC);\n // texture bottom\n uv.push(uvC2);\n uv.push(uvB2);\n uv.push(uvA2);\n uv.push(uvC2);\n uv.push(uvA2);\n uv.push(uvD2);\n }\n }\n }\n // ======================================\n // side loops\n const sideStartIndex = 2 + 2 * sides * (capSegments);\n const capLastIndex = 2 + 2 * sides * (capSegments - 1);\n const fU = 1.0 / sides;\n const fV = 1.0 / heightSegments;\n for (let j = 1; j <= heightSegments; j++) {\n for (let i = 0; i < sides; i++) {\n if (j != heightSegments) {\n var x = r * Math.cos(theta * i);\n var z = -r * Math.sin(theta * i);\n var y = (height * j) / heightSegments;\n //\n nodes.push({ x, y, z });\n }\n const i_prev = i == 0 ? sides - 1 : i - 1;\n const A = j == 1 ? capLastIndex + 2 * i_prev + 1 : sideStartIndex + sides * (j - 2) + i_prev;\n const B = j == 1 ? capLastIndex + 2 * i + 1 : sideStartIndex + sides * (j - 2) + i;\n const C = j == heightSegments ? capLastIndex + 2 * i : sideStartIndex + sides * (j - 1) + i;\n const D = j == heightSegments ? capLastIndex + 2 * i_prev : sideStartIndex + sides * (j - 1) + i_prev;\n const u_prev = i_prev * fU;\n const v_prev = (j - 1) * fV;\n const u = i == 0 ? 1.0 : i * fU;\n const v = j * fV;\n const uvA = { x: u_prev, y: v_prev };\n const uvB = { x: u, y: v_prev };\n const uvC = { x: u, y: v };\n const uvD = { x: u_prev, y: v };\n indices.push(A);\n indices.push(B);\n indices.push(C);\n indices.push(A);\n indices.push(C);\n indices.push(D);\n //\n uv.push(uvA);\n uv.push(uvB);\n uv.push(uvC);\n uv.push(uvA);\n uv.push(uvC);\n uv.push(uvD);\n }\n }\n // put the whole thing together\n const geom = new MeshGeometry(nodes, indices, uv);\n geom.key = `cylinder_${radius}x${height}_s${sides}_h${heightSegments}_c${capSegments}`;\n computeSharpVertexNormals(geom);\n // TODO: barycenter, boundingBox, boundingSphere\n return geom;\n }\n createDefaultGeometry() {\n return PacemCylinderElement_1.createMeshGeometry();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'radius':\n case 'height':\n case 'sides':\n case 'heightSegments':\n case 'capSegments':\n this.geometry = PacemCylinderElement_1.createMeshGeometry(this.radius, this.height, this.sides, this.heightSegments, this.capSegments);\n break;\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemCylinderElement.prototype, \"radius\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemCylinderElement.prototype, \"height\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemCylinderElement.prototype, \"sides\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemCylinderElement.prototype, \"heightSegments\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemCylinderElement.prototype, \"capSegments\", void 0);\nPacemCylinderElement = PacemCylinderElement_1 = __decorate([\n CustomElement({ tagName: P + '-' + TAG_MIDDLE_NAME + '-primitive-cylinder' })\n], PacemCylinderElement);\nexport { PacemCylinderElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar PacemLineElement_1;\nimport { CustomElement, P, Watch, PropertyConverters } from '@pacem/pacem-core';\nimport { LineGeometry } from '../geometry';\nimport { Pacem3DPrimitiveElement } from './primitive';\nimport { TAG_MIDDLE_NAME } from '../constants';\n//namespace Pacem.Components.Drawing3D {\nconst DEFAULT_LINE = [{ x: 0, y: 0, z: 0 }, { x: 0, y: 1, z: 0 }];\nlet PacemLineElement = PacemLineElement_1 = class PacemLineElement extends Pacem3DPrimitiveElement {\n static createLineGeometry(positions) {\n return new LineGeometry(positions || DEFAULT_LINE);\n }\n createDefaultGeometry() {\n return PacemLineElement_1.createLineGeometry();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'positions':\n this.geometry = PacemLineElement_1.createLineGeometry(val);\n break;\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemLineElement.prototype, \"positions\", void 0);\nPacemLineElement = PacemLineElement_1 = __decorate([\n CustomElement({ tagName: P + '-' + TAG_MIDDLE_NAME + '-primitive-line' })\n], PacemLineElement);\nexport { PacemLineElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar PacemPlaneElement_1;\nimport { CustomElement, P, Watch, PropertyConverters } from '@pacem/pacem-core';\nimport { Geometry } from '@pacem/pacem-numerical';\nimport { MeshGeometry } from '../geometry';\nimport { Pacem3DPrimitiveElement } from './primitive';\nimport { TAG_MIDDLE_NAME } from '../constants';\n//namespace Pacem.Components.Drawing3D {\nlet PacemPlaneElement = PacemPlaneElement_1 = class PacemPlaneElement extends Pacem3DPrimitiveElement {\n static createMeshGeometry(width, length, widthSegments, lengthSegments) {\n width ||= 1.0;\n length ||= 1.0;\n widthSegments ||= 4;\n lengthSegments ||= 4;\n const halfWidth = width * .5, halfLength = length * .5;\n const nodes = [];\n const uv = [];\n const indices = [];\n const normals = [], normal = Geometry.LinearAlgebra.Vector3D.from(0, 0, 1);\n for (let j = 0; j <= lengthSegments; j++) {\n for (let i = 0; i <= widthSegments; i++) {\n const x = -halfWidth + i * width / (1.0 * widthSegments);\n const y = .0;\n const z = -halfLength + j * length / (1.0 * lengthSegments);\n nodes.push({ x, y, z });\n if (j < lengthSegments && i < widthSegments) {\n const rowPoints = widthSegments + 1;\n // const colPoints = lengthSegments + 1;\n const u_next = (i + 1.0) / (1.0 * widthSegments);\n const u = (1.0 * i) / (1.0 * widthSegments);\n const v_next = 1.0 - (j + 1.0) / (1.0 * lengthSegments);\n const v = 1.0 - (1.0 * j) / (1.0 * lengthSegments);\n indices.push((j + 1) * rowPoints + i);\n indices.push((j + 1) * rowPoints + i + 1);\n indices.push(j * rowPoints + i + 1);\n indices.push((j + 1) * rowPoints + i);\n indices.push(j * rowPoints + i + 1);\n indices.push(j * rowPoints + i);\n uv.push({ x: u, y: v_next });\n uv.push({ x: u_next, y: v_next });\n uv.push({ x: u_next, y: v });\n uv.push({ x: u, y: v_next });\n uv.push({ x: u_next, y: v });\n uv.push({ x: u, y: v });\n normals.push(normal, normal, normal, normal, normal, normal);\n }\n }\n }\n const geom = new MeshGeometry(nodes, indices, uv, normals);\n geom.key = `plane_${width}x${length}_w${widthSegments}_l${lengthSegments}`;\n // TODO: barycenter, boundingBox, boundingSphere\n return geom;\n }\n createDefaultGeometry() {\n return PacemPlaneElement_1.createMeshGeometry();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'width':\n case 'length':\n case 'widthSegments':\n case 'lengthSegments':\n this.geometry = PacemPlaneElement_1.createMeshGeometry(this.width, this.length, this.widthSegments, this.lengthSegments);\n break;\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemPlaneElement.prototype, \"width\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemPlaneElement.prototype, \"length\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemPlaneElement.prototype, \"widthSegments\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemPlaneElement.prototype, \"lengthSegments\", void 0);\nPacemPlaneElement = PacemPlaneElement_1 = __decorate([\n CustomElement({ tagName: P + '-' + TAG_MIDDLE_NAME + '-primitive-plane' })\n], PacemPlaneElement);\nexport { PacemPlaneElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar PacemTetrahedronElement_1, PacemOctahedronElement_1, PacemHexahedronElement_1, PacemIcosahedronElement_1, PacemDodecahedronElement_1;\nimport { CustomElement, P, Watch, PropertyConverters } from '@pacem/pacem-core';\nimport { computeSharpVertexNormals } from '../types';\nimport { Geometry } from '@pacem/pacem-numerical';\nimport { MeshGeometry } from '../geometry';\nimport { Pacem3DPrimitiveElement } from './primitive';\nimport { PacemBoxElement } from './box';\nimport { TAG_MIDDLE_NAME } from '../constants';\n//namespace Pacem.Components.Drawing3D {\nconst _utils = {\n parseFloats: function (input) {\n const pattern = /([\\d.-]+)/i;\n var match = pattern.exec(input);\n const ret = [];\n while (match != null) {\n const g = match[0];\n const j = parseFloat(g);\n ret.push(j);\n input = input.replace(g, '');\n match = pattern.exec(input);\n }\n return ret;\n }\n};\nconst Point3D = Geometry.LinearAlgebra.Vector3D;\nexport class PolyhedronElement extends Pacem3DPrimitiveElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'radius') {\n this._assignMeshGeometry(val);\n }\n }\n _assignMeshGeometry(radius) {\n this.geometry = this.createMeshGeometry(radius > .0 ? radius : 1.0);\n }\n createDefaultGeometry() {\n return this.createMeshGeometry(1.0);\n }\n}\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PolyhedronElement.prototype, \"radius\", void 0);\n// #region Tetrahedron\nlet PacemTetrahedronElement = PacemTetrahedronElement_1 = class PacemTetrahedronElement extends PolyhedronElement {\n static createMeshGeometry(radius) {\n radius ||= 1.0;\n const nodesCoordsString = \"0 0.5774 -0.8165, 0 0.5774 0.8165, 0.8165 -0.5774 0, -0.8165 -0.5774 0\";\n const nodesToParse = nodesCoordsString.split(',');\n const nodes = [];\n for (let i = 0; i < nodesToParse.length; i++) {\n const nodeToParse = nodesToParse[i];\n const pt3D = _utils.parseFloats(nodeToParse);\n nodes.push({ x: pt3D[0] * radius, y: pt3D[1] * radius, z: pt3D[2] * radius });\n }\n const indices = [1, 2, 0, 2, 3, 0, 3, 1, 0, 3, 2, 1];\n const textureCoordsString = \"0.5 0.9995, 0.5 0.0004995, 0.0004995 0.5, 0.9995 0.5, 0.5 0.0004995, 0.9995 0.5, 0.5 0.9995, 0.0004995 0.5, 0.9995 0.5, 0.5 0.9995, 0.0004995 0.5, 0.5 0.0004995\";\n const pointsToParse = textureCoordsString.split(',');\n const texIndices = [4, 5, 6, 7, 8, 9, 10, 11, 0, 3, 2, 1];\n const uv = [];\n for (let i = 0; i < texIndices.length; i++) {\n const ndx = texIndices[i];\n const uvCoords = _utils.parseFloats(pointsToParse[ndx]);\n uv.push({ x: uvCoords[0], y: uvCoords[1] });\n }\n const geom = new MeshGeometry(nodes, indices, uv);\n geom.key = `tetrahedron_${radius}`;\n computeSharpVertexNormals(geom);\n // TODO: barycenter, boundingBox, boundingSphere\n geom.boundingSphere = { center: Point3D.zero(), radius };\n return geom;\n }\n createMeshGeometry(radius = this.radius) {\n return PacemTetrahedronElement_1.createMeshGeometry(radius);\n }\n};\nPacemTetrahedronElement = PacemTetrahedronElement_1 = __decorate([\n CustomElement({ tagName: P + '-' + TAG_MIDDLE_NAME + '-primitive-tetrahedron' })\n], PacemTetrahedronElement);\nexport { PacemTetrahedronElement };\n// #endregion\n// #region Octahedron\nlet PacemOctahedronElement = PacemOctahedronElement_1 = class PacemOctahedronElement extends PolyhedronElement {\n static createMeshGeometry(radius) {\n radius ||= 1.0;\n // -------------------------------------------------------------------------------------------------\n const nodesCoordsString = \"0 0.7071 -0.7071, 0 0.7071 0.7071, 1 0 0, 0 -0.7071 -0.7071, -1 0 0, 0 -0.7071 0.7071\";\n const indices = [1, 2, 0, 2, 3, 0, 3, 4, 0, 4, 1, 0, 4, 5, 1, 5, 2, 1, 2, 5, 3, 4, 3, 5];\n const textureCoordsString = \"0.5 0.9995, 0.5 0.9995, 0.0004995 0.5, 0.5 0.9995, 0.9995 0.5, 0.5 0.0004995, 0.5 0.0004995, 0.9995 0.5, 0.5 0.9995, 0.0004995 0.5, 0.5 0.0004995, 0.5 0.9995, 0.5 0.0004995, 0.9995 0.5, 0.5 0.9995, 0.0004995 0.5, 0.5 0.0004995, 0.0004995 0.5, 0.5 0.0004995, 0.5 0.9995, 0.5 0.0004995, 0.9995 0.5, 0.5 0.0004995, 0.5 0.9995\";\n const texIndices = [6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 0, 17, 18, 19, 20, 21, 1, 2, 22, 23, 4, 3, 5];\n // -------------------------------------------------------------------------------------------------\n const nodesToParse = nodesCoordsString.split(',');\n const nodes = [];\n for (let i = 0; i < nodesToParse.length; i++) {\n const nodeToParse = nodesToParse[i];\n const pt3D = _utils.parseFloats(nodeToParse);\n nodes.push({ x: pt3D[0] * radius, y: pt3D[1] * radius, z: pt3D[2] * radius });\n }\n const pointsToParse = textureCoordsString.split(',');\n const uv = [];\n for (let i = 0; i < texIndices.length; i++) {\n const ndx = texIndices[i];\n const uvCoords = _utils.parseFloats(pointsToParse[ndx]);\n uv.push({ x: uvCoords[0], y: uvCoords[1] });\n }\n const geom = new MeshGeometry(nodes, indices, uv);\n geom.key = `octahedron_${radius}`;\n computeSharpVertexNormals(geom);\n // TODO: barycenter, boundingBox, boundingSphere\n geom.boundingSphere = { center: Point3D.zero(), radius };\n return geom;\n }\n createMeshGeometry(radius = this.radius) {\n return PacemOctahedronElement_1.createMeshGeometry(radius);\n }\n};\nPacemOctahedronElement = PacemOctahedronElement_1 = __decorate([\n CustomElement({ tagName: P + '-' + TAG_MIDDLE_NAME + '-primitive-octahedron' })\n], PacemOctahedronElement);\nexport { PacemOctahedronElement };\n// #endregion\n// #region Hexahedron\nlet PacemHexahedronElement = PacemHexahedronElement_1 = class PacemHexahedronElement extends PolyhedronElement {\n static createMeshGeometry(radius) {\n radius ||= 1.0;\n const inv_sqrt3 = 1.0 / Math.sqrt(3.0);\n const w = 2.0 * radius * inv_sqrt3;\n const geom = PacemBoxElement.createMeshGeometry(w, w, w);\n geom.key = `hexahedron_${radius}`;\n return geom;\n }\n createMeshGeometry(radius = this.radius) {\n return PacemHexahedronElement_1.createMeshGeometry(radius);\n }\n};\nPacemHexahedronElement = PacemHexahedronElement_1 = __decorate([\n CustomElement({ tagName: P + '-' + TAG_MIDDLE_NAME + '-primitive-hexahedron' })\n], PacemHexahedronElement);\nexport { PacemHexahedronElement };\n// #endregion\n// #region Icosahedron\nlet PacemIcosahedronElement = PacemIcosahedronElement_1 = class PacemIcosahedronElement extends PolyhedronElement {\n static createMeshGeometry(radius) {\n radius ||= 1.0;\n const nodesCoordsString = \"0 0.850651 -0.525731, 0 0.850651 0.525731, 0.850651 0.525731 0, 0.525731 0 -0.850651, -0.525731 0 -0.850651, -0.850651 0.525731 0, -0.525731 0 0.850651, 0.525731 0 0.850651, 0.850651 -0.525731 0, 0 -0.850651 0.525731, 0 -0.850651 -0.525731, -0.850651 -0.525731 0\";\n const indices = [1, 2, 0, 2, 3, 0, 3, 4, 0, 4, 5, 0, 5, 1, 0,\n 5, 6, 1, 6, 7, 1, 7, 2, 1, 2, 8, 3,\n 2, 7, 8, 6, 9, 7, 9, 8, 7, 8, 10, 3,\n 8, 9, 10, 6, 11, 9, 11, 10, 9, 10, 4, 3,\n 10, 11, 4, 6, 5, 11, 5, 4, 11];\n const textureCoordsString = \"0.5 0.808708, 0.5 0.999501, 0.5 0.808708, 0.191292 0.5, \" +\n \"0.000499547 0.5, 0.5 0.808708, 0.9995 0.5, 0.808708 0.5,\" +\n \"0.000499487 0.5, 0.5 0.191292, 0.5 0.000499487, 0.5 0.191292,\" +\n \"0.5 0.191292, 0.999501 0.5, 0.5 0.808708, 0.5 0.808708,\" +\n \"0.9995 0.5, 0.808708 0.999501, 0.191292 0.5, 0.808708 0.5,\" +\n \"0.5 0.999501, 0.808708 0.5, 0.999501 0.808708, 0.5 0.999501,\" +\n \"0.000499487 0.5, 0.5 0.191292, 0.5 0.808708, 0.9995 0.5,\" +\n \"0.808708 0.999501, 0.191292 0.5, 0.808708 0.5, 0.5 0.999501,\" +\n \"0.808708 0.5, 0.999501 0.808708, 0.5 0.808708, 0.5 0.191292,\" +\n \"0.9995 0.5, 0.000499547 0.5, 0.5 0.191292, 0.191292 0.5,\" +\n \"0.5 0.000499487, 0.808708 0.5, 0.5 0.000499487, 0.999501 0.191292,\" +\n \"0.5 0.191292, 0.808708 0.000499487, 0.9995 0.5, 0.5 0.191292,\" +\n \"0.5 0.808708, 0.9995 0.5, 0.5 0.191292, 0.808708 0.000499487,\" +\n \"0.999501 0.5, 0.5 0.808708, 0.5 0.000499487, 0.808708 0.5,\" +\n \"0.999501 0.191292, 0.808708 0.5, 0.5 0.808708, 0.5 0.191292\";\n const texIndices = [12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,\n 24, 25, 0, 26, 27, 28, 29, 30, 31, 32, 33, 1,\n 34, 35, 36, 2, 37, 38, 39, 40, 41, 42, 43, 7,\n 44, 45, 46, 8, 47, 48, 49, 50, 51, 52, 53, 9,\n 54, 55, 3, 10, 56, 57, 6, 58, 59, 5, 4, 11];\n // -------------------------------------------------------------------------------------------------\n const nodesToParse = nodesCoordsString.split(',');\n const nodes = [];\n for (let i = 0; i < nodesToParse.length; i++) {\n const nodeToParse = nodesToParse[i];\n const pt3D = _utils.parseFloats(nodeToParse);\n nodes.push({ x: pt3D[0] * radius, y: pt3D[1] * radius, z: pt3D[2] * radius });\n }\n const pointsToParse = textureCoordsString.split(',');\n const uv = [];\n for (let i = 0; i < texIndices.length; i++) {\n const ndx = texIndices[i];\n const uvCoords = _utils.parseFloats(pointsToParse[ndx]);\n uv.push({ x: uvCoords[0], y: uvCoords[1] });\n }\n const geom = new MeshGeometry(nodes, indices, uv);\n geom.key = `icosahedron_${radius}`;\n computeSharpVertexNormals(geom);\n // TODO: barycenter, boundingBox, boundingSphere\n geom.boundingSphere = { center: Point3D.zero(), radius };\n return geom;\n }\n createMeshGeometry(radius = this.radius) {\n return PacemIcosahedronElement_1.createMeshGeometry(radius);\n }\n};\nPacemIcosahedronElement = PacemIcosahedronElement_1 = __decorate([\n CustomElement({ tagName: P + '-' + TAG_MIDDLE_NAME + '-primitive-icosahedron' })\n], PacemIcosahedronElement);\nexport { PacemIcosahedronElement };\n// #endregion\n// #region Dodecahedron\nlet PacemDodecahedronElement = PacemDodecahedronElement_1 = class PacemDodecahedronElement extends PolyhedronElement {\n static createMeshGeometry(radius) {\n radius ||= 1.0;\n const n1 = Point3D.from(0.356822 * radius, 0.934172 * radius, 0 * radius);\n const n2 = Point3D.from(-0.356822 * radius, 0.934172 * radius, 0 * radius);\n const n3 = Point3D.from(0.57735 * radius, 0.57735 * radius, -0.57735 * radius);\n const n4 = Point3D.from(0 * radius, 0.356822 * radius, -0.934172 * radius);\n const n5 = Point3D.from(-0.57735 * radius, 0.57735 * radius, -0.57735 * radius);\n const n6 = Point3D.from(-0.57735 * radius, 0.57735 * radius, 0.57735 * radius);\n const n7 = Point3D.from(0 * radius, 0.356822 * radius, 0.934172 * radius);\n const n8 = Point3D.from(0.57735 * radius, 0.57735 * radius, 0.57735 * radius);\n const n9 = Point3D.from(0.934172 * radius, 0 * radius, -0.356822 * radius);\n const n10 = Point3D.from(0.934172 * radius, 0 * radius, 0.356822 * radius);\n const n11 = Point3D.from(0 * radius, -0.356822 * radius, 0.934172 * radius);\n const n12 = Point3D.from(0.57735 * radius, -0.57735 * radius, 0.57735 * radius);\n const n13 = Point3D.from(0.57735 * radius, -0.57735 * radius, -0.57735 * radius);\n const n14 = Point3D.from(0.356822 * radius, -0.934172 * radius, 0 * radius);\n const n15 = Point3D.from(-0.57735 * radius, -0.57735 * radius, 0.57735 * radius);\n const n16 = Point3D.from(-0.356822 * radius, -0.934172 * radius, 0 * radius);\n const n17 = Point3D.from(0 * radius, -0.356822 * radius, -0.934172 * radius);\n const n18 = Point3D.from(-0.57735 * radius, -0.57735 * radius, -0.57735 * radius);\n const n19 = Point3D.from(-0.934172 * radius, 0 * radius, 0.356822 * radius);\n const n20 = Point3D.from(-0.934172 * radius, 0 * radius, -0.356822 * radius);\n const positions = [\n n1,\n n2,\n n3,\n n4,\n n5,\n n6,\n n7,\n n8,\n n9,\n n10,\n n11,\n n12,\n n13,\n n14,\n n15,\n n16,\n n17,\n n18,\n n19,\n n20\n ];\n const indices = [0, 2, 3, 0, 3, 4, 0, 4, 1, 1, 5, 6, 1, 6, 7,\n 1, 7, 0, 7, 9, 8, 7, 8, 2, 7, 2, 0,\n 7, 6, 10, 7, 10, 11, 7, 11, 9, 11, 13, 12,\n 11, 12, 8, 11, 8, 9, 11, 10, 14, 11, 14, 15,\n 11, 15, 13, 15, 17, 16, 15, 16, 12, 15, 12, 13,\n 15, 14, 18, 15, 18, 19, 15, 19, 17, 19, 4, 3,\n 19, 3, 16, 19, 16, 17, 19, 18, 5, 19, 5, 1,\n 19, 1, 4, 18, 14, 10, 18, 10, 6, 18, 6, 5,\n 3, 2, 8, 3, 8, 12, 3, 12, 16];\n const textureCoordsString = `0.5 0.999501, 0.5 0.999501, 0.191292 0.808708, 0.5 0.690792,\n 0.191292 0.808708, 0.191292 0.808708, 0.5 0.690792,\n 0.808708 0.808708, 0.000499517 0.5, 0.309208 0.5, 0.5 0.309208,\n 0.191292 0.191292, 0.191292 0.191292, 0.309208 0.5,\n 0.191292 0.191292, 0.5 0.000499517, 0.5 0.309208, 0.808708 0.191292,\n 0.000499517 0.5, 0.309208 0.5, 0.690792 0.5, 0.808708 0.808708,\n 0.5 0.999501, 0.690792 0.5, 0.5 0.999501, 0.191292 0.808708,\n 0.690792 0.5, 0.191292 0.808708, 0.309208 0.5, 0.309208 0.5,\n 0.191292 0.191292, 0.5 0.000499517, 0.309208 0.5, 0.5 0.000499517,\n 0.808708 0.191292, 0.309208 0.5, 0.808708 0.191292,\n 0.690792 0.5, 0.191292 0.808708, 0.309208 0.5, 0.690792 0.5,\n 0.191292 0.808708, 0.690792 0.5, 0.808708 0.808708,\n 0.191292 0.808708, 0.808708 0.808708, 0.808708 0.808708,\n 0.5 0.690792, 0.5 0.309208, 0.808708 0.808708, 0.5 0.309208,\n 0.808708 0.191292, 0.808708 0.191292, 0.9995 0.5, 0.191292 0.191292,\n 0.5 0.000499517, 0.808708 0.191292, 0.191292 0.191292,\n 0.808708 0.191292, 0.690792 0.5, 0.191292 0.191292,\n 0.690792 0.5, 0.191292 0.191292, 0.5 0.000499517, 0.808708 0.191292,\n 0.191292 0.191292, 0.808708 0.191292, 0.690792 0.5,\n 0.690792 0.5, 0.309208 0.5, 0.690792 0.5, 0.808708 0.808708,\n 0.5 0.999501, 0.690792 0.5, 0.5 0.999501, 0.191292 0.808708,\n 0.690792 0.5, 0.191292 0.808708, 0.5 0.000499517, 0.808708 0.191292,\n 0.690792 0.5, 0.5 0.000499517, 0.690792 0.5, 0.309208 0.5,\n 0.309208 0.5, 0.191292 0.191292, 0.9995 0.5, 0.808708 0.808708,\n 0.5 0.690792, 0.9995 0.5, 0.5 0.690792, 0.5 0.309208,\n 0.9995 0.5, 0.5 0.309208, 0.309208 0.5, 0.690792 0.5,\n 0.808708 0.808708, 0.309208 0.5, 0.808708 0.808708,\n 0.5 0.999501, 0.000499517 0.5, 0.5 0.309208, 0.000499517 0.5,\n 0.5 0.690792, 0.5 0.690792, 0.000499517 0.5, 0.5 0.690792,\n 0.191292 0.191292`;\n const texIndices = [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,\n 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,\n 44, 45, 0, 46, 47, 48, 49, 50, 51, 7, 52, 53,\n 54, 55, 56, 57, 58, 59, 60, 61, 9, 62, 63, 64,\n 65, 66, 67, 11, 68, 69, 70, 71, 72, 73, 74, 75,\n 76, 77, 13, 78, 79, 80, 81, 82, 83, 15, 84, 85,\n 86, 87, 88, 89, 90, 91, 92, 93, 17, 94, 95, 96,\n 97, 98, 99, 19, 1, 4, 100, 14, 101, 102, 10, 103,\n 18, 6, 5, 104, 2, 105, 106, 8, 107, 3, 12, 16];\n // -------------------------------------------------------------------------------------------------\n const pointsToParse = textureCoordsString.split(',');\n const uv = [];\n for (let i = 0; i < texIndices.length; i++) {\n const ndx = texIndices[i];\n const uvCoords = _utils.parseFloats(pointsToParse[ndx]);\n uv.push({ x: uvCoords[0], y: uvCoords[1] });\n }\n const geom = new MeshGeometry(positions, indices, uv);\n geom.key = `dodecahedron_${radius}`;\n computeSharpVertexNormals(geom);\n // TODO: barycenter, boundingBox, boundingSphere\n geom.boundingSphere = { center: Point3D.zero(), radius };\n return geom;\n }\n createMeshGeometry(radius = this.radius) {\n return PacemDodecahedronElement_1.createMeshGeometry(radius);\n }\n};\nPacemDodecahedronElement = PacemDodecahedronElement_1 = __decorate([\n CustomElement({ tagName: P + '-' + TAG_MIDDLE_NAME + '-primitive-dodecahedron' })\n], PacemDodecahedronElement);\nexport { PacemDodecahedronElement };\n// #endregion\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar PacemSphereElement_1;\nimport { CustomElement, P, Watch, PropertyConverters } from '@pacem/pacem-core';\nimport { computeSharpVertexNormals } from '../types';\nimport { MeshGeometry } from '../geometry';\nimport { Pacem3DPrimitiveElement } from './primitive';\nimport { TAG_MIDDLE_NAME, DEG2RAD } from '../constants';\n//namespace Pacem.Components.Drawing3D {\nlet PacemSphereElement = PacemSphereElement_1 = class PacemSphereElement extends Pacem3DPrimitiveElement {\n static createMeshGeometry(radius = 1, segs = 8) {\n //\n const nodes = [];\n const uv = [];\n const indices = [];\n //\n const r = radius, tessellation = segs;\n const theta = DEG2RAD * (360.0 / tessellation);\n const segments = tessellation % 2 == 0 ? tessellation / 2 : (tessellation - 1) / 2;\n // top vertex\n nodes.push({ x: .0, y: r, z: .0 });\n for (let j = 1; j < segments; j++) {\n // loop \"latitude\"\n const angle1 = theta * j;\n const cos_angle1 = Math.cos(angle1);\n const sin_angle1 = Math.sin(angle1);\n const v = 1.0 - 1.0 * j / segments;\n for (let i = 0; i < tessellation; i++) {\n // loop \"longitude\"\n const angle2 = theta * i - Math.PI / 2.0;\n const cos_angle2 = Math.cos(angle2);\n const sin_angle2 = Math.sin(angle2);\n const x = r * sin_angle1 * cos_angle2;\n const y = r * cos_angle1;\n const z = r * sin_angle1 * sin_angle2;\n nodes.push({ x, y, z });\n // coordinates & texture\n const i_prev = i == 0 ? tessellation - 1 : i - 1;\n const u = i == 0 ? .0 : 1.0 - 1.0 * i / tessellation;\n const u_prev = 1.0 - 1.0 * i_prev / tessellation;\n // triangles\n if (j == 1) {\n indices.push(1 + i);\n indices.push(1 + i_prev);\n indices.push(0);\n //\n uv.push({ x: u, y: v });\n uv.push({ x: u_prev, y: v });\n uv.push({ x: .5, y: 1.0 });\n }\n else {\n indices.push((j - 1) * tessellation + i + 1);\n indices.push((j - 1) * tessellation + i_prev + 1);\n indices.push((j - 2) * tessellation + i_prev + 1);\n indices.push((j - 1) * tessellation + i + 1);\n indices.push((j - 2) * tessellation + i_prev + 1);\n indices.push((j - 2) * tessellation + i + 1);\n //\n const v_prev = 1.0 - (j - 1.0) / segments;\n //var faceUV = [];\n uv.push({ x: u, y: v });\n uv.push({ x: u_prev, y: v });\n uv.push({ x: u_prev, y: v_prev });\n uv.push({ x: u, y: v });\n uv.push({ x: u_prev, y: v_prev });\n uv.push({ x: u, y: v_prev });\n }\n }\n }\n // bottom vertex\n nodes.push({ x: .0, y: -r, z: .0 });\n const last = nodes.length - 1;\n for (let i = 0; i < tessellation; i++) {\n const j = segments - 2;\n const i_prev = i == 0 ? tessellation - 1 : i - 1;\n const u = i == 0 ? .0 : 1.0 - 1.0 * i / tessellation;\n const u_prev = 1.0 - 1.0 * i_prev / tessellation;\n const v = 1.0 - (j + 1.0) / segments;\n // triangles\n indices.push(last);\n indices.push(j * tessellation + 1 + i_prev);\n indices.push(j * tessellation + 1 + i);\n uv.push({ x: .5, y: 0 });\n uv.push({ x: u_prev, y: v });\n uv.push({ x: u, y: v });\n }\n const geom = new MeshGeometry(nodes, indices, uv);\n geom.key = `sphere_${radius}_s${segs}`;\n computeSharpVertexNormals(geom);\n return geom;\n }\n createDefaultGeometry() {\n return PacemSphereElement_1.createMeshGeometry();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'radius':\n case 'segments':\n this.geometry = PacemSphereElement_1.createMeshGeometry(this.radius, this.segments);\n break;\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemSphereElement.prototype, \"radius\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemSphereElement.prototype, \"segments\", void 0);\nPacemSphereElement = PacemSphereElement_1 = __decorate([\n CustomElement({ tagName: P + '-' + TAG_MIDDLE_NAME + '-primitive-sphere' })\n], PacemSphereElement);\nexport { PacemSphereElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar PacemTorusElement_1;\nimport { CustomElement, P, Watch, PropertyConverters } from '@pacem/pacem-core';\nimport { computeSharpVertexNormals } from '../types';\nimport { MeshGeometry } from '../geometry';\nimport { Pacem3DPrimitiveElement } from './primitive';\nimport { TAG_MIDDLE_NAME, DEG2RAD } from '../constants';\n//namespace Pacem.Components.Drawing3D {\nlet PacemTorusElement = PacemTorusElement_1 = class PacemTorusElement extends Pacem3DPrimitiveElement {\n static createMeshGeometry(radius = 1, innerRadius = .25, segments = 24, sides = 12) {\n //\n const nodes = [];\n const uv = [];\n const coords = [];\n const theta = DEG2RAD * (360.0 / segments);\n const phi = DEG2RAD * (360.0 / sides);\n const r1 = radius;\n const r2 = innerRadius;\n for (let j = 0; j < segments; j++) {\n // Math.PI/2 adjustement (useful for UV mapping)\n const angle1 = theta * j - Math.PI / 2.0;\n const sin_angle1 = Math.sin(angle1);\n const cos_angle1 = Math.cos(angle1);\n for (let i = 0; i < sides; i++) {\n // Math.PI adjustement (useful for UV mapping)\n const angle2 = phi * i + Math.PI;\n const cos_angle2 = Math.cos(angle2);\n const x = r1 * cos_angle1 + r2 * cos_angle2 * cos_angle1;\n const y = r2 * Math.sin(angle2);\n const z = r1 * sin_angle1 + r2 * cos_angle2 * sin_angle1;\n nodes.push({ x, y, z });\n const prev_j = j > 0 ? j - 1 : segments - 1;\n const prev_i = i > 0 ? i - 1 : sides - 1;\n const u = j == 0 ? .0 : 1.0 - 1.0 * j / segments;\n const v = i > 0 ? 1.0 * i / sides : 1.0;\n const u_prev = j > 0 ? 1.0 - (j - 1.0) / segments : 1.0 / segments;\n const v_prev = i > 0 ? (i - 1.0) / sides : 1.0 - 1.0 / sides;\n // triangles <=> Int32Collection\n // <=> PointCollection\n coords.push(j * sides + prev_i);\n coords.push(prev_j * sides + prev_i);\n coords.push(prev_j * sides + i);\n coords.push(j * sides + prev_i);\n coords.push(prev_j * sides + i);\n coords.push(j * sides + i);\n //\n uv.push({ x: u, y: v_prev });\n uv.push({ x: u_prev, y: v_prev });\n uv.push({ x: u_prev, y: v });\n uv.push({ x: u, y: v_prev });\n uv.push({ x: u_prev, y: v });\n uv.push({ x: u, y: v });\n }\n }\n const geom = new MeshGeometry(nodes, coords, uv);\n geom.key = `torus_${radius}x${innerRadius}_t${segments}_s${sides}`;\n computeSharpVertexNormals(geom);\n return geom;\n }\n createDefaultGeometry() {\n return PacemTorusElement_1.createMeshGeometry();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'radius':\n case 'innerRadius':\n case 'segments':\n case 'sides':\n this.geometry = PacemTorusElement_1.createMeshGeometry(this.radius, this.innerRadius, this.segments, this.sides);\n break;\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemTorusElement.prototype, \"radius\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemTorusElement.prototype, \"innerRadius\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemTorusElement.prototype, \"segments\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemTorusElement.prototype, \"sides\", void 0);\nPacemTorusElement = PacemTorusElement_1 = __decorate([\n CustomElement({ tagName: P + '-' + TAG_MIDDLE_NAME + '-primitive-torus' })\n], PacemTorusElement);\nexport { PacemTorusElement };\n","import { CustomEventUtils, Utils } from '@pacem/pacem-core';\nimport { Point } from '@pacem/pacem-foundation';\nimport { isCamera } from '../types';\nfunction _clipPoint(evt, rect) {\n let x, y;\n if (Point.isPoint(evt)) {\n x = evt.x;\n y = evt.y;\n }\n else {\n const { page } = CustomEventUtils.getEventCoordinates(evt);\n const p = { x: page.x - rect.x, y: page.y - rect.y };\n x = p.x;\n y = p.y;\n }\n const clipX = x / rect.width * 2 - 1;\n const clipY = y / rect.height * -2 + 1;\n return { x: clipX, y: clipY };\n}\nexport class AdapterUtils {\n static isMeshGeometry(obj) {\n return 'positions' in obj && Utils.isArray(obj.positions)\n && 'triangleIndices' in obj && Utils.isArray(obj.triangleIndices);\n }\n static isVector3D(obj) {\n return 'x' in obj && typeof obj.x === 'number'\n && 'y' in obj && typeof obj.y === 'number'\n && 'z' in obj && typeof obj.z === 'number';\n }\n static isRgba(obj) {\n return 'r' in obj && typeof obj.r === 'number'\n && 'g' in obj && typeof obj.g === 'number'\n && 'b' in obj && typeof obj.b === 'number';\n }\n static flattenVectorArray(array) {\n const retval = [];\n for (let v of array) {\n if (AdapterUtils.isVector3D(v)) {\n retval.push(v.x, v.y, v.z);\n }\n else if (AdapterUtils.isRgba(v)) {\n retval.push(v.r, v.g, v.b, v.a ?? 1);\n }\n else {\n retval.push(v.x, v.y);\n }\n }\n return retval;\n }\n static findCamera(items) {\n return (items || []).find(r => isCamera(r) && !r.hide);\n }\n clipPixel(evt, viewport) {\n if (viewport instanceof HTMLElement) {\n viewport = Utils.offsetRect(viewport);\n }\n return _clipPoint(evt, viewport);\n }\n}\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, P, Watch, PropertyConverters, Utils, CustomElementUtils } from '@pacem/pacem-core';\nimport { Colors } from '@pacem/pacem-foundation';\nimport { Geometry } from '@pacem/pacem-numerical';\nimport { StalePropertyFlag, isMesh, isUi3DObject, Pacem3DAdapterElement, Pacem3DObjectElement, Pacem3DGroupElement, Pacem3DLightElement, Pacem3DCameraElement, Pacem3DPerspectiveCameraElement, Pacem3DOrthographicCameraElement, Pacem3DMeshElement } from '../types';\nimport { MeshGeometry, LineGeometry } from '../geometry';\nimport { AdapterUtils } from './shared';\nimport { isStandardMaterial, isPhongMaterial, isLambertMaterial, isLineMaterial, isMaterial } from '../materials/material';\n//namespace Pacem.Components.Drawing3D {\nfunction isMeshGeometry(obj) {\n return AdapterUtils.isMeshGeometry(obj);\n}\nfunction isVector3D(obj) {\n return AdapterUtils.isVector3D(obj);\n}\nfunction flattenVectorArray(array) {\n return AdapterUtils.flattenVectorArray(array);\n}\nconst threeJsVersion = '0.152.2', lastOrbitCtrlJsVersion = '0.147.0';\n;\nconst consts = {\n VERSION: threeJsVersion,\n API_URI: `https://unpkg.com/three@${threeJsVersion}/build/three.min.js`,\n ORBIT_URI: `https://unpkg.com/three@${lastOrbitCtrlJsVersion}/examples/js/controls/OrbitControls.js`,\n LOADERS: [\n //`https://unpkg.com/three@${threeJsVersion}/examples/js/loaders/OBJLoader.js`,\n //`https://unpkg.com/three@${threeJsVersion}/examples/js/loaders/MTLLoader.js`,\n ],\n DEFAULT_MATERIAL: function () {\n return new THREE.MeshStandardMaterial({ color: '#069', flatShading: true });\n }\n};\nfunction matrix3DToMatrix4(m) {\n const matrix = new THREE.Matrix4();\n matrix.set(m.m11, m.m12, m.m13, m.m14, m.m21, m.m22, m.m23, m.m24, m.m31, m.m32, m.m33, m.m34, m.offsetX, m.offsetY, m.offsetZ, m.m44);\n return matrix;\n}\n// as of https://codepen.io/discoverthreejs/full/vwVeZB\nfunction fitCameraToSelection(camera, controls /* OrbitControls */, selection, fitOffset = 1.333) {\n const box = new THREE.Box3();\n for (const object of selection) {\n box.expandByObject(object);\n }\n const size = box.getSize(new THREE.Vector3());\n const center = box.getCenter(new THREE.Vector3());\n const maxSize = Math.max(size.x, size.y, size.z);\n const fitHeightDistance = maxSize / (2 * Math.atan(Math.PI * camera.fov / 360));\n const fitWidthDistance = fitHeightDistance / camera.aspect;\n const distance = fitOffset * Math.max(fitHeightDistance, fitWidthDistance);\n const hasControls = !Utils.isNull(controls);\n var direction;\n if (hasControls) {\n direction = controls.target.clone()\n .sub(camera.position)\n .normalize()\n .multiplyScalar(distance);\n controls.maxDistance = distance * 10;\n controls.target.copy(center);\n }\n camera.near = distance / 100;\n camera.far = distance * 100;\n camera.updateProjectionMatrix();\n if (hasControls) {\n camera.position.copy(controls.target).sub(direction);\n controls.update();\n }\n}\nfunction flattenMatrix3D(m) {\n return [\n // right way to translate the matrix3D to matrix4\n m.m11, m.m21, m.m31, m.offsetX,\n m.m12, m.m22, m.m32, m.offsetY,\n m.m13, m.m23, m.m33, m.offsetZ,\n m.m14, m.m24, m.m34, m.m44,\n ];\n}\nfunction nodeGeometryToBufferGeometry(mesh) {\n const geometry = new THREE.BufferGeometry();\n const vertices = flattenVectorArray(mesh.positions);\n geometry.setAttribute('position', new THREE.Float32BufferAttribute(vertices, 3));\n if (mesh instanceof MeshGeometry) {\n if (!Utils.isNullOrEmpty(mesh.triangleIndices)) {\n geometry.setIndex(mesh.triangleIndices);\n }\n const vertices = flattenVectorArray(mesh.positions);\n geometry.setAttribute('position', new THREE.Float32BufferAttribute(vertices, 3));\n const uvs = flattenVectorArray(mesh.textureCoordinates);\n geometry.setAttribute('uv', new THREE.Float32BufferAttribute(uvs, 2));\n if (Utils.isNullOrEmpty(mesh.normals)) {\n geometry.computeVertexNormals();\n }\n else {\n const normals = flattenVectorArray(mesh.normals);\n geometry.setAttribute('normal', new THREE.Float32BufferAttribute(normals, 3));\n }\n }\n return geometry;\n}\nfunction lightToLight(item) {\n var light;\n switch (item.type) {\n case 'spot':\n const spotLight = new THREE.SpotLight();\n spotLight.target.position.set(item.target.x, item.target.y, item.target.z);\n light = spotLight;\n break;\n default:\n light = new THREE.PointLight();\n break;\n }\n return light;\n}\nfunction materialToMaterial(material) {\n if (Utils.isNull(material)) {\n return null;\n }\n const lineBase = {\n color: typeof material.color === 'string' ? material.color : Colors.stringify(material.color),\n opacity: material.opacity ?? 1,\n transparent: true,\n wireframe: material.wireframe ?? false,\n visible: material.visible ?? true\n };\n const base = Utils.extend({}, lineBase, { wireframe: material.wireframe ?? false });\n const mipMapMaterial = (m) => {\n if (material.map) {\n m['map'] = new THREE.TextureLoader().load(material.map, _ => {\n // console.log('texture loaded!');\n m.needsUpdate = true;\n });\n }\n return m;\n };\n if (isStandardMaterial(material)) {\n const std = mipMapMaterial(new THREE.MeshStandardMaterial(Utils.extend(base, {\n roughness: material.roughness,\n metalness: material.metalness,\n emissive: material.emissiveColor,\n flatShading: material.flatShading,\n refractionRatio: material.refractionRatio,\n })));\n return std;\n }\n else if (isPhongMaterial(material)) {\n const phong = mipMapMaterial(new THREE.MeshPhongMaterial(Utils.extend(base, {\n shininess: material.shininess,\n emissive: material.emissiveColor,\n flatShading: material.flatShading,\n specular: material.specularColor,\n reflectivity: material.reflectivity,\n refractionRatio: material.refractionRatio,\n })));\n return phong;\n }\n else if (isLambertMaterial(material)) {\n const lambert = mipMapMaterial(new THREE.MeshLambertMaterial(Utils.extend(base, {\n emissive: material.emissiveColor,\n reflectivity: material.reflectivity,\n refractionRatio: material.refractionRatio,\n })));\n return lambert;\n }\n else if (isLineMaterial(material)) {\n const dash = material.dashArray && material.dashArray[0] || null, gap = material.dashArray && material.dashArray.length > 1 && material.dashArray[1] || dash;\n const lineMatOptions = Utils.extend(lineBase, {\n linecap: material.lineCap ?? 'round',\n linejoin: material.lineJoin ?? 'round',\n linewidth: material.lineWidth ?? 1\n });\n return Utils.isNullOrEmpty(material.dashArray) ?\n new THREE.LineBasicMaterial(lineMatOptions)\n : new THREE.LineDashedMaterial(Utils.extend({ dashSize: dash, gapSize: gap }, lineMatOptions));\n }\n else if (isMaterial(material)) {\n const basic = mipMapMaterial(new THREE.MeshBasicMaterial(base));\n return basic;\n }\n else {\n return null;\n }\n}\nfunction materialToMaterials(frontMaterial, backMaterial, multiAllowed) {\n // material\n const multi = multiAllowed;\n // composite\n const materials = [];\n // front mat\n const material = materialToMaterial(frontMaterial);\n if (!Utils.isNull(material)) {\n material.side = THREE.FrontSide;\n materials.push(material);\n }\n // back mat\n if (!Utils.isNull(backMaterial)) {\n if (backMaterial == frontMaterial) {\n material.side = THREE.DoubleSide;\n }\n else {\n // multi-material\n const backsideMaterial = materialToMaterial(backMaterial);\n if (!Utils.isNull(backsideMaterial)) {\n backsideMaterial.side = THREE.BackSide;\n materials.push(backsideMaterial);\n }\n }\n }\n return multi && materials.length > 1 ? materials : material;\n}\nfunction load(item) {\n if (!Utils.isNullOrEmpty(item.content)) {\n const type = item.type?.toLowerCase();\n switch (type) {\n case 'obj':\n const obj = new THREE['OBJLoader']();\n return obj.parse(item.content);\n default:\n const loader = new THREE.ObjectLoader();\n return loader.parse(item.content);\n }\n }\n else {\n throw new Error('Missing content.');\n }\n}\nfunction meshType(geometry) {\n return geometry instanceof LineGeometry ? THREE.Line : THREE.Mesh;\n}\nfunction build(mesh) {\n if (Utils.isNullOrEmpty(mesh.geometry)) {\n return null;\n }\n const ctor = meshType(mesh.geometry);\n return new ctor();\n}\nfunction isTHREEAvailable() {\n return 'THREE' in window;\n}\nasync function whenTHREEAvailable(...args) {\n const start = Date.now();\n var initialized = false;\n do {\n initialized = isTHREEAvailable();\n for (let pred of args) {\n initialized &&= pred();\n }\n if (!initialized) {\n await new Promise(resolve => setTimeout(resolve, 500));\n }\n } while (!initialized && (Date.now() - start) < 30000);\n if (!initialized) {\n throw new Error('The wait for THREE adapter initialization timed out.');\n }\n}\nlet Pacem3DThreeAdapterElement = class Pacem3DThreeAdapterElement extends Pacem3DAdapterElement {\n constructor() {\n super(...arguments);\n this._renderer = null;\n this._camera = null;\n this._scene = null;\n this._orbitCtrls = null;\n this._objects = new WeakMap();\n this._dict = {};\n this._orbitControlsDelegate = (_) => {\n };\n this._ensureAndRefresh = (item, object3D, parent) => {\n object3D.matrixAutoUpdate = false;\n // choose whether to render the object or not\n if (object3D.visible = !item.hide) {\n // the modeling part\n // 1. pacem 3d mesh\n if (isMesh(item)) {\n let mesh3D = object3D;\n if (item.flags.indexOf(StalePropertyFlag.Geometry) >= 0) {\n mesh3D.geometry.dispose();\n // swap Line <-> Mesh according to the geometry\n const mesh3D2 = build(item);\n if (mesh3D2.constructor.name !== mesh3D.constructor.name) {\n parent.remove(object3D);\n delete this._dict[object3D.id];\n object3D = mesh3D = mesh3D2;\n }\n // /swap\n mesh3D.geometry = nodeGeometryToBufferGeometry(item.geometry);\n }\n if (item.flags.indexOf(StalePropertyFlag.Material) >= 0) {\n if (Utils.isArray(mesh3D.material)) {\n for (let m of mesh3D.material) {\n m.dispose();\n }\n }\n else {\n mesh3D.material.dispose();\n }\n mesh3D.material = materialToMaterials(item.material) || consts.DEFAULT_MATERIAL();\n }\n }\n // 2. 3d 'native' object\n else if (item instanceof Pacem3DObjectElement\n && (item.flags.indexOf(StalePropertyFlag.Material) >= 0 || item.flags.indexOf(StalePropertyFlag.Geometry) >= 0)) {\n // swap reference\n object3D.parent && object3D.parent.remove(object3D);\n object3D = load(item);\n }\n // 3. grouping object\n else if (item instanceof Pacem3DGroupElement) {\n if (item.flags.indexOf(StalePropertyFlag.Children) >= 0) {\n // remove all children\n for (let j = object3D.children.length - 1; j >= 0; j--) {\n const child = object3D.children[j];\n object3D.remove(child);\n }\n // re-create\n for (let child of item.items) {\n this._addOrUpdateItem(child, object3D);\n }\n }\n }\n // 4. light\n else if (item instanceof Pacem3DLightElement) {\n const light = object3D;\n if (item.flags.indexOf(StalePropertyFlag.Light) >= 0) {\n light.color = new THREE.Color(item.color);\n light.intensity = item.intensity;\n }\n }\n // the configuring part\n let posv = item.position; // || new THREE.Vector3(0, 0, 0);\n if (isUi3DObject(item)\n && !Utils.isNull(item.transformMatrix)\n && (item.flags.indexOf(StalePropertyFlag.Position) >= 0 || item.flags.indexOf(StalePropertyFlag.Transform) >= 0)) {\n const positionMatrix = Geometry.LinearAlgebra.Matrix3D.from(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, posv.x, posv.y, posv.z, 1);\n // item.transformMatrix is a local matrix thus\n // prepend in the multiplication (i.e. FIRST apply transform THEN apply positioning)\n const transformMatrix = Geometry.LinearAlgebra.Matrix3D.multiply(item.transformMatrix, positionMatrix);\n THREE.Matrix4.prototype.set.apply(object3D.matrix, flattenMatrix3D(transformMatrix));\n //object3D.updateMatrix();\n }\n else if (item.flags.indexOf(StalePropertyFlag.Position) >= 0) {\n object3D.position.set(posv.x, posv.y, posv.z);\n object3D.updateMatrix();\n }\n }\n object3D.userData = item.tag;\n if (Utils.isNull(parent.getObjectById(object3D.id))) {\n parent.add(object3D);\n this._dict[object3D.id] = item;\n }\n // clear flags\n item.flags.splice(0);\n return object3D;\n };\n //#endregion\n }\n _assertMonoStage(scene) {\n if (scene != this._3d && !Utils.isNull(this._3d)) {\n throw new Error('Stage mismatch.');\n }\n }\n dispose(scene) {\n // do nothing\n }\n snapshot(scene, background, type, quality) {\n if (scene != this._3d) {\n return Promise.resolve(null);\n }\n const jpeg = !Utils.isNullOrEmpty(background), mime = type ?? (jpeg ? 'image/jpeg' : null), compression = quality ?? (jpeg ? .9 : null);\n return new Promise((resolve, _) => {\n this.render();\n Utils.snapshotElement(this._stage, background, mime, compression).then(resolve);\n });\n }\n project(scene, point3D) {\n this._assertMonoStage(scene);\n // check feasibility\n if (Utils.isNull(this._camera) || Utils.isNull(this._stage))\n return null;\n //\n const stage = this._stage;\n const vector = new THREE.Vector3(point3D.x, point3D.y, point3D.z);\n const width = stage.width, height = stage.height;\n const widthHalf = width / 2, heightHalf = height / 2;\n const point = vector.project(this._camera);\n const x = (point.x * widthHalf) + widthHalf;\n const y = -(point.y * heightHalf) + heightHalf;\n return { x: x, y: y };\n }\n zoomFit(scene, ...items) {\n this._assertMonoStage(scene);\n return new Promise((resolve, reject) => {\n const camera = this._camera;\n const map = this._objects;\n const targets = items.filter(o => map.has(o)).map(o => map.get(o));\n if (Utils.isNull(camera) || Utils.isNullOrEmpty(targets)) {\n resolve();\n }\n fitCameraToSelection(camera, this._orbitCtrls, targets);\n resolve();\n });\n }\n getScene(scene) {\n this._assertMonoStage(scene);\n return this._scene;\n }\n raycast(scene, point, size, callback) {\n this._assertMonoStage(scene);\n if (isTHREEAvailable() && !Utils.isNull(this._camera)) {\n const camera = this._camera;\n const vector = new THREE.Vector2((point.x / size.width) * 2 - 1, -(point.y / size.height) * 2 + 1);\n const raycaster = new THREE.Raycaster();\n raycaster.setFromCamera(vector, camera);\n const intersects = raycaster.intersectObjects(this._scene.children, true);\n let obj;\n let intersection;\n let j = 0;\n while (intersects.length > j && (intersection = intersects[j++]) && (obj = intersection.object)) {\n const item = this._dict[obj.id];\n if (item.inert) {\n continue;\n }\n const v = intersection.point, x = v.x, y = v.y, z = v.z, point = { x, y, z };\n callback({ object: this._dict[obj.id], point });\n return;\n }\n }\n callback(null);\n }\n // #region ABSTRACT IMPLEMENTATION\n async initialize(container) {\n if (!Utils.isNull(this._stage)) {\n return this._stage;\n }\n this._3d = container;\n const wrapper = container.stage;\n const stage = this._stage = document.createElement('canvas');\n wrapper.innerHTML = '';\n wrapper.appendChild(stage);\n if (!isTHREEAvailable()) {\n await CustomElementUtils.importjs(consts.API_URI);\n await whenTHREEAvailable();\n await Promise.all([CustomElementUtils.importjs(consts.ORBIT_URI)]\n .concat(consts.LOADERS.map(js => CustomElementUtils.importjs(js))));\n }\n // here comes THREE.js\n this._scene = new THREE.Scene();\n // this._scene.add(new THREE.Mesh(new THREE.PlaneGeometry(1, 1, 1, 1), consts.DEFAULT_MATERIAL()));\n this.invalidateSize(container);\n let w = this._stage.width, h = this._stage.height;\n //if (!ctrl.renderer)\n let parameters = {\n canvas: stage, antialias: true, stencil: false, alpha: container.transparent ?? true //, clearAlpha: 1\n };\n this._renderer = new THREE.WebGLRenderer(parameters);\n this._renderer.setSize(w, h);\n if (container.background && !container.transparent) {\n let clr = container.background;\n if (typeof clr === 'string') {\n clr = Colors.parse(clr);\n }\n const theejsClr = new THREE.Color(clr.r, clr.g, clr.b);\n this._renderer.setClearColor(theejsClr, clr.a);\n }\n this.orbit = container.orbit;\n return stage;\n }\n _setCamera(cam) {\n this._camera = cam;\n this.invalidateSize(this._3d);\n this._disposeOrbitControls();\n // re-init\n if (this.orbit) {\n this._initOrbitControls();\n }\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'orbit') {\n if (val === true)\n this._initOrbitControls();\n else\n this._disposeOrbitControls();\n }\n }\n _initOrbitControls() {\n const cam = this._camera;\n if (Utils.isNull(this._3d) || Utils.isNull(cam)) {\n return;\n }\n const controls = this._orbitCtrls = new THREE['OrbitControls'](cam, this._3d.stage);\n controls.addEventListener('change', this._orbitControlsDelegate);\n }\n _disposeOrbitControls() {\n const controls = this._orbitCtrls;\n if (Utils.isNull(controls)) {\n return;\n }\n controls.removeEventListener('change', this._orbitControlsDelegate);\n controls.dispose();\n }\n _updateRenderer(container, renderer = this._renderer) {\n if (!container.transparent) {\n if (container.background) {\n let clr = container.background;\n if (typeof clr === 'string') {\n clr = Colors.parse(clr);\n }\n const theejsClr = new THREE.Color(clr.r, clr.g, clr.b);\n renderer.setClearColor(theejsClr, clr.a);\n }\n else {\n renderer.setClearColor(null);\n }\n }\n else {\n renderer.setClearAlpha(0);\n }\n }\n invalidateSize(scene, size = scene.size) {\n this._assertMonoStage(scene);\n if (!isTHREEAvailable() || Utils.isNull(size)) {\n return;\n }\n let w = size.width;\n let h = size.height;\n this._stage.width = w;\n this._stage.height = h;\n let camera = this._camera;\n if (camera instanceof THREE.PerspectiveCamera) {\n camera.aspect = w / h;\n camera.updateProjectionMatrix();\n }\n if (this._renderer) {\n this._renderer.setSize(w, h);\n this._updateRenderer(scene);\n }\n }\n removeItem(scene, item) {\n this._assertMonoStage(scene);\n const bag = this._objects;\n const obj3d = bag.get(item);\n if (!Utils.isNull(obj3d)) {\n this._scene.remove(obj3d);\n delete this._dict[obj3d.id];\n bag.delete(item);\n }\n }\n updateItem(scene, item) {\n this._assertMonoStage(scene);\n const bag = this._objects;\n if (!Utils.isNull(item.parent) && bag.has(item.parent)) {\n const parent3d = bag.get(item.parent);\n this._addOrUpdateItem(item, parent3d);\n }\n else {\n this._addOrUpdateItem(item);\n }\n }\n addItem(scene, item) {\n this._assertMonoStage(scene);\n this._addOrUpdateItem(item);\n }\n _addOrUpdateItem(item, parent = this._scene) {\n if (!isTHREEAvailable() || Utils.isNull(parent)) {\n return;\n }\n if (item instanceof Pacem3DCameraElement) {\n if (item instanceof Pacem3DPerspectiveCameraElement) {\n var pcam;\n if (this._camera instanceof THREE.PerspectiveCamera) {\n var pcam = this._camera;\n }\n else {\n pcam = new THREE.PerspectiveCamera();\n }\n const lookAtVector = new THREE.Vector3(item.lookAt.x, item.lookAt.y, item.lookAt.z);\n pcam.lookAt(lookAtVector);\n pcam.position.set(item.position.x, item.position.y, item.position.z);\n pcam.fov = item.fov;\n pcam.aspect = item.aspect;\n pcam.near = item.near;\n pcam.far = item.far;\n //\n this._setCamera(pcam);\n //\n const orbit = this._orbitCtrls;\n if (!Utils.isNull(orbit) && orbit.object === pcam) {\n orbit.target = lookAtVector;\n orbit.update();\n }\n }\n else if (item instanceof Pacem3DOrthographicCameraElement) {\n // bunch of duplicated code\n // no need to refactor since it's a deprecating branch of development\n var ocam;\n if (this._camera instanceof THREE.OrthographicCamera) {\n var ocam = this._camera;\n }\n else {\n ocam = new THREE.OrthographicCamera();\n }\n const lookAtVector = new THREE.Vector3(item.lookAt.x, item.lookAt.y, item.lookAt.z);\n ocam.lookAt(lookAtVector);\n ocam.position.set(item.position.x, item.position.y, item.position.z);\n ocam.left = item.left;\n ocam.right = item.right;\n ocam.top = item.top;\n ocam.bottom = item.bottom;\n ocam.near = item.near;\n ocam.far = item.far;\n //\n this._setCamera(ocam);\n //\n const orbit = this._orbitCtrls;\n if (!Utils.isNull(orbit) && orbit.object === ocam) {\n orbit.target = lookAtVector;\n orbit.update();\n }\n }\n else {\n // cam not supported\n throw new Error(`Camera ${item} not supported.`);\n }\n }\n else {\n if (!this._objects.has(item)) {\n // adding\n const then = (object3D) => {\n // clear flags\n // item.flags.splice(0);\n if (object3D) {\n object3D = this._ensureAndRefresh(item, object3D, parent);\n this._objects.set(item, object3D);\n }\n else {\n // object not built\n // throw?\n }\n };\n // TODO: switch to interface matching\n if (item instanceof Pacem3DObjectElement) {\n const mesh = load(item);\n then(mesh);\n }\n else if (item instanceof Pacem3DMeshElement) {\n // beware! a change in the geometry could cause a change in the object3D type\n const mesh = build(item);\n then(mesh);\n }\n else if (item instanceof Pacem3DLightElement) {\n const light = lightToLight(item);\n then(light);\n }\n else if (item instanceof Pacem3DGroupElement) {\n const group = new THREE.Group();\n then(group);\n }\n }\n else {\n // updating\n const obj = this._objects.get(item);\n const objOut = this._ensureAndRefresh(item, obj, parent);\n if (objOut != obj) {\n this._objects.set(item, objOut);\n }\n }\n }\n }\n render() {\n if (this._camera) {\n this._renderer.render(this._scene, this._camera);\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], Pacem3DThreeAdapterElement.prototype, \"orbit\", void 0);\nPacem3DThreeAdapterElement = __decorate([\n CustomElement({ tagName: P + '-3d-three-adapter' })\n], Pacem3DThreeAdapterElement);\nexport { Pacem3DThreeAdapterElement };\n","//namespace Pacem.Drawing3D.WebGPU {\nexport const LABEL_PREFIX = 'pacem-3d-';\nexport const U32_MAX = 4_294_967_295;\n// #region vertex state\nexport const VERTEX_BUFFER_INDEX_MESH_POSITION = 0;\nexport const VERTEX_BUFFER_INDEX_MESH_NORMAL = 1;\nexport const VERTEX_BUFFER_INDEX_MESH_UV = 2;\nexport const VERTEX_OUTPUT_LOCATION_NORMAL = 0;\nexport const VERTEX_OUTPUT_LOCATION_VERTEX = 1;\nexport const VERTEX_OUTPUT_LOCATION_UV = 2;\nexport const VERTEX_OUTPUT_LOCATION_INDEX = 3;\nexport const VERTEX_OUTPUT_LOCATION_RAY = 4;\nexport const VERTEX_OUTPUT_LOCATION_INSTANCE = 5;\nexport const UNIFORM_GROUP_INDEX_TRANSFORM = 1;\nexport const UNIFORM_GROUP_INDEX_CAMERA = 0;\nexport const UNIFORM_GROUP_INDEX_INTERACTION = UNIFORM_GROUP_INDEX_CAMERA; // put it in camera same binding group\nexport const STORAGE_GROUP_INDEX_LINE = 2;\nexport const UNIFORM_GROUP_INDEX_COLORPICKING = 2;\nexport const UNIFORM_BINDING_INDEX_TRANSFORM = 0;\nexport const UNIFORM_BINDING_INDEX_CAMERA = 0;\nexport const UNIFORM_BINDING_INDEX_INTERACTION = 1;\n// #endregion\n// #region fragment state\nexport const MATERIAL_GROUP_INDEX = 2;\nexport const UNIFORM_GROUP_INDEX_LIGHTING = MATERIAL_GROUP_INDEX + 1;\nexport const STORAGE_MATERIAL_INDEX = 0;\nexport const SAMPLER_BINDING_INDEX = 1;\nexport const TEXTURE_BINDING_INDEX = 2;\nexport const MATERIAL_REFERENCE = 'material';\nexport const VERTEX_COLOR_REFERENCE = 'color';\nexport const AMBIENT_COLOR_REFERENCE = 'ambient';\nexport const LIGHTING_COLOR_REFERENCE = 'lighting';\n// #endregion\n// #region WGSL\nexport const WGSL_VERTEXINPUT_STRUCT_NAME = 'VertexInput';\nexport const WGSL_VERTEXOUTPUT_STRUCT_NAME = 'VertexOutput';\nexport const WGSL_INTERACTIONDATA_STRUCT_NAME = 'InteractionData';\n// #endregion\n// Kinda polyfill for WebGPU constants, as TypeScript 6.0 does include WebGPU types but does NOT include these constants for magic numbers:\nexport var GPUBufferUsage;\n(function (GPUBufferUsage) {\n GPUBufferUsage[GPUBufferUsage[\"COPY_SRC\"] = 4] = \"COPY_SRC\";\n GPUBufferUsage[GPUBufferUsage[\"COPY_DST\"] = 8] = \"COPY_DST\";\n GPUBufferUsage[GPUBufferUsage[\"INDEX\"] = 16] = \"INDEX\";\n GPUBufferUsage[GPUBufferUsage[\"INDIRECT\"] = 256] = \"INDIRECT\";\n GPUBufferUsage[GPUBufferUsage[\"MAP_READ\"] = 1] = \"MAP_READ\";\n GPUBufferUsage[GPUBufferUsage[\"MAP_WRITE\"] = 2] = \"MAP_WRITE\";\n GPUBufferUsage[GPUBufferUsage[\"QUERY_RESOLVE\"] = 512] = \"QUERY_RESOLVE\";\n GPUBufferUsage[GPUBufferUsage[\"STORAGE\"] = 128] = \"STORAGE\";\n GPUBufferUsage[GPUBufferUsage[\"UNIFORM\"] = 64] = \"UNIFORM\";\n GPUBufferUsage[GPUBufferUsage[\"VERTEX\"] = 32] = \"VERTEX\";\n})(GPUBufferUsage || (GPUBufferUsage = {}));\nexport var GPUTextureUsage;\n(function (GPUTextureUsage) {\n GPUTextureUsage[GPUTextureUsage[\"COPY_SRC\"] = 1] = \"COPY_SRC\";\n GPUTextureUsage[GPUTextureUsage[\"COPY_DST\"] = 2] = \"COPY_DST\";\n GPUTextureUsage[GPUTextureUsage[\"RENDER_ATTACHMENT\"] = 16] = \"RENDER_ATTACHMENT\";\n GPUTextureUsage[GPUTextureUsage[\"STORAGE_BINDING\"] = 8] = \"STORAGE_BINDING\";\n GPUTextureUsage[GPUTextureUsage[\"TEXTURE_BINDING\"] = 4] = \"TEXTURE_BINDING\";\n})(GPUTextureUsage || (GPUTextureUsage = {}));\nexport var GPUShaderStage;\n(function (GPUShaderStage) {\n GPUShaderStage[GPUShaderStage[\"VERTEX\"] = 1] = \"VERTEX\";\n GPUShaderStage[GPUShaderStage[\"FRAGMENT\"] = 2] = \"FRAGMENT\";\n GPUShaderStage[GPUShaderStage[\"COMPUTE\"] = 4] = \"COMPUTE\";\n})(GPUShaderStage || (GPUShaderStage = {}));\nexport var GPUMapMode;\n(function (GPUMapMode) {\n GPUMapMode[GPUMapMode[\"READ\"] = 1] = \"READ\";\n GPUMapMode[GPUMapMode[\"WRITE\"] = 2] = \"WRITE\";\n})(GPUMapMode || (GPUMapMode = {}));\n","export var WGSLBindingType;\n(function (WGSLBindingType) {\n WGSLBindingType[\"Mesh\"] = \"mesh\";\n WGSLBindingType[\"Camera\"] = \"camera\";\n WGSLBindingType[\"Texture\"] = \"texture\";\n WGSLBindingType[\"Light\"] = \"light\";\n WGSLBindingType[\"Interaction\"] = \"interaction\";\n})(WGSLBindingType || (WGSLBindingType = {}));\n","import { GPUBufferUsage } from './constants';\n//namespace Pacem.Drawing3D.WebGPU {\nexport class Buffers {\n static create(device, data, label = '') {\n const buffer = device.createBuffer({\n size: data.byteLength, label,\n usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,\n mappedAtCreation: true\n });\n new Float32Array(buffer.getMappedRange()).set(data);\n buffer.unmap();\n return buffer;\n }\n static createUniform(device, data, label = '') {\n return device.createBuffer({\n size: data.byteLength, label,\n usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,\n });\n }\n static createStorage(device, data, label = '') {\n return device.createBuffer({\n size: data.byteLength, label,\n usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST,\n });\n }\n static createIndexed(device, data, label = '') {\n const buffer = device.createBuffer({\n size: data.byteLength, label,\n usage: GPUBufferUsage.INDEX | GPUBufferUsage.COPY_DST,\n mappedAtCreation: true\n });\n new Uint16Array(buffer.getMappedRange()).set(data);\n buffer.unmap();\n return buffer;\n }\n}\nexport class BufferLayouts {\n static createVertex(shaderLocationStart = 0, size = 3, ...sizes) {\n const attributes = [];\n let fullSize = 0, index = 0;\n for (let sz of [size].concat(sizes)) {\n attributes.push({\n shaderLocation: shaderLocationStart + index,\n offset: fullSize * Float32Array.BYTES_PER_ELEMENT,\n format: `float32x${sz}`,\n });\n fullSize += sz;\n index++;\n }\n return {\n arrayStride: fullSize /* x, y, z */ * Float32Array.BYTES_PER_ELEMENT,\n attributes,\n stepMode: 'vertex'\n };\n }\n}\n","import { Utils } from '@pacem/pacem-core';\nimport { VERTEX_OUTPUT_LOCATION_NORMAL, VERTEX_OUTPUT_LOCATION_VERTEX, VERTEX_OUTPUT_LOCATION_UV, VERTEX_OUTPUT_LOCATION_INDEX, VERTEX_OUTPUT_LOCATION_RAY, VERTEX_OUTPUT_LOCATION_INSTANCE, MATERIAL_GROUP_INDEX, STORAGE_MATERIAL_INDEX, VERTEX_COLOR_REFERENCE, LIGHTING_COLOR_REFERENCE, AMBIENT_COLOR_REFERENCE } from '../constants';\nconst DefaultBasicMaterialFragmentOptions = {\n outputNormalLocation: VERTEX_OUTPUT_LOCATION_NORMAL,\n outputVertexLocation: VERTEX_OUTPUT_LOCATION_VERTEX,\n outputUvLocation: VERTEX_OUTPUT_LOCATION_UV,\n outputVertexIndexLocation: VERTEX_OUTPUT_LOCATION_INDEX,\n outputRayIndexLocation: VERTEX_OUTPUT_LOCATION_RAY,\n outputInstanceIndexLocation: VERTEX_OUTPUT_LOCATION_INSTANCE,\n storageMaterialGroupIndex: MATERIAL_GROUP_INDEX,\n storageMaterialBindingIndex: STORAGE_MATERIAL_INDEX,\n};\nfunction adaptWGSLStringArray(array = []) {\n return array.join('\\r\\n');\n}\nfunction adaptWGSLModifierStringArray(array = []) {\n let output = '';\n for (let modifier of array) {\n const trimmed = modifier.trim();\n if (trimmed.endsWith(';')) {\n output += (trimmed + '\\r\\n\\t');\n }\n else {\n output += `${VERTEX_COLOR_REFERENCE} = ${trimmed};\\r\\n\\t`;\n }\n }\n return output;\n}\nexport function getBasicMaterialFragmentWgsl(extensions = {}, options = DefaultBasicMaterialFragmentOptions) {\n const opts = Utils.extend({}, DefaultBasicMaterialFragmentOptions, options);\n const definitions = adaptWGSLStringArray(extensions.definitions), bindings = adaptWGSLStringArray(extensions.bindings), modifiers = adaptWGSLModifierStringArray(extensions.modifiers);\n const color = VERTEX_COLOR_REFERENCE, lighting = LIGHTING_COLOR_REFERENCE, ambient = AMBIENT_COLOR_REFERENCE;\n return `// definitions\n\n${definitions}\n\n// bindings\n@group(${opts.storageMaterialGroupIndex}) @binding(${opts.storageMaterialBindingIndex}) var<storage, read> diffuseColor: vec4f;\n${bindings}\n\nconst empty = vec4f(0,0,0,0);\nconst white = vec4f(1,1,1,1);\n\n@fragment fn main (\n @builtin(position) position: vec4f, // clip-space position\n @location(${opts.outputNormalLocation}) normal: vec3f, // world-space normal\n @location(${opts.outputVertexLocation}) vertex: vec3f, // world-space position\n @location(${opts.outputUvLocation}) uv: vec2f,\n @location(${opts.outputVertexIndexLocation}) @interpolate(flat) index: u32, // vertex index,\n @location(${opts.outputRayIndexLocation}) ray: vec3f, // ray (eye-to-vertex) vector\n @location(${opts.outputInstanceIndexLocation}) @interpolate(flat) instance : u32, // instance index\n) -> @location(0) vec4f {\n var ${color} = diffuseColor;\n var ${ambient}: vec4f = empty;\n var ${lighting}: vec4f = empty;\n\n // modifiers\n ${modifiers}\n\n ${lighting} = select(white, ${lighting}, ${lighting}.a > 0);\n return ${color} * ${lighting} + ${ambient};\n}`;\n}\n","import { Utils } from '@pacem/pacem-core';\nimport { STORAGE_GROUP_INDEX_LINE, STORAGE_MATERIAL_INDEX } from '../constants';\nconst DefaultLineMaterialFragmentOptions = {\n outputInstanceIndexLocation: 0,\n outputVertexIndexLocation: 1,\n storageMaterialGroupIndex: STORAGE_GROUP_INDEX_LINE + 1,\n storageMaterialBindingIndex: STORAGE_MATERIAL_INDEX,\n};\nfunction adaptWGSLStringArray(array = []) {\n return array.join('\\r\\n');\n}\nfunction adaptWGSLModifierStringArray(array = []) {\n let output = '';\n for (let modifier of array) {\n const trimmed = modifier.trim();\n if (trimmed.endsWith(';')) {\n output += (trimmed + '\\r\\n');\n }\n else {\n output += `output = ${trimmed};\\r\\n`;\n }\n }\n return output;\n}\nexport function getLineMaterialFragmentWgsl(extensions = {}, options = DefaultLineMaterialFragmentOptions) {\n const opts = Utils.extend({}, DefaultLineMaterialFragmentOptions, options);\n const definitions = adaptWGSLStringArray(extensions.definitions), bindings = adaptWGSLStringArray(extensions.bindings), modifiers = adaptWGSLModifierStringArray(extensions.modifiers);\n return `// definitions\n${definitions}\n\n// bindings\n@group(${options.storageMaterialGroupIndex}) @binding(${options.storageMaterialBindingIndex}) var<storage, read> vertexColors: array<vec4f>;\n${bindings}\n\nfn getVertexColor(index: u32) -> vec4f {\n let numColors = arrayLength(&vertexColors);\n let vertexColorIndex = index % numColors;\n return vertexColors[vertexColorIndex];\n}\n\n@fragment fn main (\n @builtin(position) position: vec4f, // clip-space position\n @location(${opts.outputInstanceIndexLocation}) @interpolate(flat) instance: u32, // instance index\n @location(${opts.outputVertexIndexLocation}) @interpolate(flat) index: u32 // vertex index\n) -> @location(0) vec4f {\n var output = getVertexColor(index);\n\n // modifiers\n ${modifiers}\n\n return output;\n}`;\n}\n","import { Utils } from '@pacem/pacem-core';\nimport { Colors } from '@pacem/pacem-foundation';\nimport { isBasicMaterial, isLineMaterial, KnownShader } from '../../materials/material';\nimport { Buffers } from './buffers';\nimport { GPUTextureUsage } from './constants';\nimport { getBasicMaterialFragmentWgsl } from './wgsl/basic-material-fragment';\nimport { getLineMaterialFragmentWgsl } from './wgsl/line-material-fragment';\nimport { LABEL_PREFIX } from './constants';\n//namespace Pacem.Drawing3D.WebGPU {\nexport class Materials {\n static create(material) {\n if (isBasicMaterial(material)) {\n return new BasicMaterial(material);\n }\n if (isLineMaterial(material)) {\n return new LineMaterial(material);\n }\n throw new TypeError(`Material type '${material.shader}' not supported.`);\n }\n}\nconst EmptyMaterialWGSLDelegates = {\n// empty delegates\n};\nclass MaterialBase {\n constructor(material) {\n if (Utils.isNull(this.#material = material)) {\n throw new ReferenceError(\"Null material provided.\");\n }\n }\n #material;\n get material() { return this.#material; }\n get wgsl() {\n return EmptyMaterialWGSLDelegates;\n }\n buffer({ device }, label = LABEL_PREFIX + 'material-' + this.shader + '-buffer') {\n const { r, g, b, a } = this._diffuseColor();\n const materialValue = new Float32Array([r, g, b, a]);\n return { buffer: Buffers.createStorage(device, materialValue, label), value: materialValue, version: performance.now() };\n }\n _diffuseColor() {\n const { visible, opacity, color } = this.material;\n if (!(visible ?? true)) {\n return { r: 0, g: 0, b: 0, a: 0 };\n }\n const retval = typeof color === 'string' ? Colors.parse(color) : (color ?? { r: 1, g: 1, b: 1, a: 1 });\n if (opacity >= 0 && opacity <= 1) {\n return Utils.extend(retval, { a: retval.a * opacity });\n }\n return retval;\n }\n}\nexport class BasicMaterial extends MaterialBase {\n get shader() {\n return KnownShader.Basic;\n }\n constructor(material) {\n super(material);\n if (material.shader != this.shader) {\n throw new TypeError(\"Basic material expected.\");\n }\n }\n texture({ device }, key = 'texture') {\n const material = this.material;\n if (key === 'texture' && !Utils.isNull(material.texture)) {\n const texBmp = material.texture;\n const texture = device.createTexture({\n format: 'rgba8unorm',\n usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.COPY_DST,\n size: [texBmp.width, texBmp.height],\n });\n return { texture, source: texBmp };\n }\n return null;\n }\n // TODO: put it in the material instance/interface\n static { this.fragment = getBasicMaterialFragmentWgsl; }\n}\nexport class LineMaterial extends MaterialBase {\n get shader() {\n return KnownShader.Line;\n }\n constructor(material) {\n super(material);\n if (material.shader != this.shader) {\n throw new TypeError(\"Line material expected.\");\n }\n }\n buffer(ctx, key) {\n switch (key) {\n case 'line':\n const { device, canvas } = ctx;\n const lineMaterial = this.material;\n const lineValue = new Float32Array([canvas.clientWidth, canvas.clientHeight, lineMaterial.lineWidth / 2]);\n return { buffer: Buffers.createUniform(device, lineValue, LABEL_PREFIX + 'line-' + this.shader + '-buffer'), value: lineValue, version: performance.now() };\n default:\n return super.buffer(ctx);\n }\n }\n texture(_) {\n return null;\n }\n static { this.fragment = getLineMaterialFragmentWgsl; }\n}\n","import { WGSL_VERTEXINPUT_STRUCT_NAME, WGSL_VERTEXOUTPUT_STRUCT_NAME, WGSL_INTERACTIONDATA_STRUCT_NAME } from '../constants';\n//namespace Pacem.Drawing3D.WebGPU {\nconst defaultVertexGeometryModifierArgs = ['input', 'data'];\n//const defaultVertexGeometryModifier: VertexInputModifierDelegate = (...defaultVertexGeometryModifierArgs) => {\n// const [inputRef, dataRef] = defaultVertexGeometryModifierArgs;\n// return `fn echo(${inputRef}: ${WGSL_VERTEXINPUT_STRUCT_NAME}, ${dataRef}: ${WGSL_INTERACTIONDATA_STRUCT_NAME}) -> ${WGSL_VERTEXINPUT_STRUCT_NAME} { return ${inputRef}; }`;\n//};\nexport function extractMeshVertexModifierFunctionComponents(wgsl) {\n if (typeof wgsl !== 'string') {\n wgsl = wgsl(...defaultVertexGeometryModifierArgs);\n }\n // regex that remove all the wgsl comments and extract the function name, arguments and body\n const regex = new RegExp(`fn\\\\s+(\\\\w+)\\\\s*\\\\(([^)]*)\\\\)\\\\s*->\\\\s*(${WGSL_VERTEXINPUT_STRUCT_NAME}|${WGSL_VERTEXOUTPUT_STRUCT_NAME})\\\\s*{((.|\\\\n)+)}\\\\s*$`);\n const match = wgsl.match(regex);\n if (match) {\n const name = match[1];\n const args = match[2].split(',').map(arg => {\n const kvp = arg.split(':');\n return { name: kvp[0].trim(), type: kvp[1].trim() };\n });\n if (args.length !== 2\n || args[0].type !== match[3] // the first argument type must match the function return type\n || args[1].type !== WGSL_INTERACTIONDATA_STRUCT_NAME) {\n throw new Error(`Invalid modifier function. Invalid signature types (arg1: ${args[0]?.type}, arg2: ${args[1]?.type})`);\n }\n const body = match[4].trim();\n return { name, args: args.map(i => i.name), body };\n }\n else {\n throw new Error(`Invalid modifier function. Must be a valid WGSL function with the signature: fn name(arg1: ${WGSL_VERTEXINPUT_STRUCT_NAME}|${WGSL_VERTEXOUTPUT_STRUCT_NAME}, arg2: ${WGSL_INTERACTIONDATA_STRUCT_NAME}) -> ${WGSL_VERTEXINPUT_STRUCT_NAME}|${WGSL_VERTEXOUTPUT_STRUCT_NAME}`);\n }\n}\n","import { Utils } from '@pacem/pacem-core';\nimport { VERTEX_OUTPUT_LOCATION_NORMAL, VERTEX_OUTPUT_LOCATION_VERTEX, VERTEX_OUTPUT_LOCATION_UV, VERTEX_OUTPUT_LOCATION_INDEX, VERTEX_OUTPUT_LOCATION_RAY, VERTEX_OUTPUT_LOCATION_INSTANCE, VERTEX_BUFFER_INDEX_MESH_POSITION, VERTEX_BUFFER_INDEX_MESH_NORMAL, VERTEX_BUFFER_INDEX_MESH_UV, UNIFORM_BINDING_INDEX_CAMERA, UNIFORM_GROUP_INDEX_CAMERA, UNIFORM_BINDING_INDEX_TRANSFORM, UNIFORM_GROUP_INDEX_TRANSFORM, UNIFORM_BINDING_INDEX_INTERACTION, UNIFORM_GROUP_INDEX_INTERACTION, WGSL_VERTEXINPUT_STRUCT_NAME, WGSL_VERTEXOUTPUT_STRUCT_NAME, WGSL_INTERACTIONDATA_STRUCT_NAME } from '../constants';\nimport { extractMeshVertexModifierFunctionComponents } from './shared';\nconst DefaultMeshVertexOptions = {\n outputNormalLocation: VERTEX_OUTPUT_LOCATION_NORMAL,\n outputVertexLocation: VERTEX_OUTPUT_LOCATION_VERTEX,\n outputUvLocation: VERTEX_OUTPUT_LOCATION_UV,\n outputVertexIndexLocation: VERTEX_OUTPUT_LOCATION_INDEX,\n outputInstanceIndexLocation: VERTEX_OUTPUT_LOCATION_INSTANCE,\n outputRayLocation: VERTEX_OUTPUT_LOCATION_RAY,\n inputPositionLocation: VERTEX_BUFFER_INDEX_MESH_POSITION,\n inputNormalLocation: VERTEX_BUFFER_INDEX_MESH_NORMAL,\n inputUvLocation: VERTEX_BUFFER_INDEX_MESH_UV,\n uniformViewBindingIndex: UNIFORM_BINDING_INDEX_CAMERA,\n uniformViewGroupIndex: UNIFORM_GROUP_INDEX_CAMERA,\n uniformWorldBindingIndex: UNIFORM_BINDING_INDEX_TRANSFORM,\n uniformWorldGroupIndex: UNIFORM_GROUP_INDEX_TRANSFORM,\n uniformInteractionBindingIndex: UNIFORM_BINDING_INDEX_INTERACTION,\n uniformInteractionGroupIndex: UNIFORM_GROUP_INDEX_INTERACTION,\n};\nexport function getMeshVertexWgsl(options = DefaultMeshVertexOptions) {\n if (options != DefaultMeshVertexOptions) {\n options = Utils.extend({}, DefaultMeshVertexOptions, options);\n }\n // vertex input modifier?\n const modifierInput = options.inputModifier;\n let modifyInstructionInput = 'vertexInput', modifierFnInput = '';\n if (!Utils.isNullOrEmpty(modifierInput)) {\n const { name: modifierName, args: [arg0, arg1], body: modifierBody } = extractMeshVertexModifierFunctionComponents(modifierInput);\n modifyInstructionInput = `${modifierName}(vertexInput, interaction)`;\n modifierFnInput = `fn ${modifierName} (${arg0}: ${WGSL_VERTEXINPUT_STRUCT_NAME}, ${arg1}: ${WGSL_INTERACTIONDATA_STRUCT_NAME}) -> ${WGSL_VERTEXINPUT_STRUCT_NAME} {\n ${modifierBody}\n}`;\n }\n // vertex output modifier?\n const modifierOutput = options.outputModifier;\n let modifyInstructionOutput = 'output', modifierFnOutput = '';\n if (!Utils.isNullOrEmpty(modifierOutput)) {\n const { name: modifierName, args: [arg0, arg1], body: modifierBody } = extractMeshVertexModifierFunctionComponents(modifierOutput);\n modifyInstructionOutput = `${modifierName}(output, interaction)`;\n modifierFnOutput = `fn ${modifierName} (${arg0}: ${WGSL_VERTEXINPUT_STRUCT_NAME}, ${arg1}: ${WGSL_INTERACTIONDATA_STRUCT_NAME}) -> ${WGSL_VERTEXOUTPUT_STRUCT_NAME} {\n ${modifierBody}\n}`;\n }\n const opts = Utils.extend({}, DefaultMeshVertexOptions, options);\n return `struct ${WGSL_VERTEXOUTPUT_STRUCT_NAME} {\n @builtin(position) position : vec4f, // clip space position\n @location(${opts.outputNormalLocation}) normal: vec3f, // world space normal\n @location(${opts.outputVertexLocation}) vertex : vec3f, // world space position\n @location(${opts.outputUvLocation}) uv : vec2f, // texture coordinates\n @location(${opts.outputVertexIndexLocation}) @interpolate(flat) index : u32, // vertex index\n @location(${opts.outputRayLocation}) ray : vec3f, // eye-to-point vector in world space\n @location(${opts.outputInstanceIndexLocation}) @interpolate(flat) instance : u32, // instance index\n}\n\nstruct ${WGSL_VERTEXINPUT_STRUCT_NAME} {\n @location(${opts.inputPositionLocation}) position: vec3f,\n @location(${opts.inputNormalLocation}) normal: vec3f,\n @location(${opts.inputUvLocation}) uv: vec2f,\n @builtin(vertex_index) index: u32,\n @builtin(instance_index) instance: u32,\n}\n\nstruct Transforms {\n world: mat4x4f,\n normal: mat3x3f,\n}\n\nstruct Camera {\n view: mat4x4f,\n projection: mat4x4f,\n position: vec3f,\n}\n\nstruct ${WGSL_INTERACTIONDATA_STRUCT_NAME} {\n // mouse coordinatges in NDC space ([-1,1], [-1,1])\n cursor: vec2f,\n // canvas size in pixels\n resolution: vec2f,\n // some phase timer (e.g. time since mouse down, or time since last click, etc.)\n time: f32,\n}\n\n${modifierFnInput}\n\n${modifierFnOutput}\n\n@group(${opts.uniformWorldGroupIndex}) @binding(${opts.uniformWorldBindingIndex}) var<uniform> transforms: Transforms;\n@group(${opts.uniformViewGroupIndex}) @binding(${opts.uniformViewBindingIndex}) var<uniform> camera: Camera;\n@group(${opts.uniformInteractionGroupIndex}) @binding(${opts.uniformInteractionBindingIndex}) var<uniform> interaction: ${WGSL_INTERACTIONDATA_STRUCT_NAME};\n\n@vertex fn main(vertexInput: ${WGSL_VERTEXINPUT_STRUCT_NAME}) -> ${WGSL_VERTEXOUTPUT_STRUCT_NAME} {\n let input = ${modifyInstructionInput};\n let position4 = vec4f(input.position, 1.0);\n let worldTransform = transforms.world;\n let viewProjectionTransform = camera.projection;\n let worldViewProjectionTransform = viewProjectionTransform * worldTransform;\n let worldPosition = (worldTransform * position4).xyz;\n let output = ${WGSL_VERTEXOUTPUT_STRUCT_NAME}(\n worldViewProjectionTransform * position4,\n transforms.normal * input.normal,\n worldPosition,\n input.uv,\n input.index,\n normalize(worldPosition - camera.position),\n input.instance\n );\n return ${modifyInstructionOutput};\n}`;\n}\n","import { Utils } from '@pacem/pacem-core';\nimport { VERTEX_BUFFER_INDEX_MESH_POSITION, UNIFORM_GROUP_INDEX_CAMERA, UNIFORM_BINDING_INDEX_CAMERA, UNIFORM_GROUP_INDEX_TRANSFORM, UNIFORM_BINDING_INDEX_TRANSFORM, STORAGE_GROUP_INDEX_LINE, WGSL_VERTEXOUTPUT_STRUCT_NAME } from '../constants';\nconst DefaultLineVertexOptions = {\n inputPositionLocation: VERTEX_BUFFER_INDEX_MESH_POSITION,\n outputInstanceIndexLocation: 0,\n outputVertexIndexLocation: 1,\n storagePositionsGroupIndex: STORAGE_GROUP_INDEX_LINE,\n storagePositionsBindingIndex: 0,\n uniformDimensionsGroupIndex: STORAGE_GROUP_INDEX_LINE,\n uniformDimensionsBindingIndex: 1,\n uniformViewGroupIndex: UNIFORM_GROUP_INDEX_CAMERA,\n uniformViewBindingIndex: UNIFORM_BINDING_INDEX_CAMERA,\n uniformWorldGroupIndex: UNIFORM_GROUP_INDEX_TRANSFORM,\n uniformWorldBindingIndex: UNIFORM_BINDING_INDEX_TRANSFORM,\n};\nfunction getVertexOutputStructDefinition(opts) {\n return `struct ${WGSL_VERTEXOUTPUT_STRUCT_NAME} {\n @builtin(position) position : vec4f, // clip space position\n @location(${opts.outputInstanceIndexLocation}) @interpolate(flat) instance : u32, // instance index\n @location(${opts.outputVertexIndexLocation}) @interpolate(flat) index : u32, // vertex index\n}`;\n}\nexport function getDefaultLineVertexWgsl(options = DefaultLineVertexOptions) {\n const opts = Utils.extend({}, DefaultLineVertexOptions, options);\n return `${getVertexOutputStructDefinition(opts)}\n\nstruct Transforms {\n world: mat4x4f,\n normal: mat3x3f,\n}\n\nstruct Camera {\n view: mat4x4f,\n projection: mat4x4f,\n position: vec3f\n}\n\n@group(${opts.uniformWorldGroupIndex}) @binding(${opts.uniformWorldBindingIndex}) var<uniform> transforms: Transforms;\n@group(${opts.uniformViewGroupIndex}) @binding(${opts.uniformViewBindingIndex}) var<uniform> camera: Camera;\n@group(${opts.storagePositionsGroupIndex}) @binding(${opts.storagePositionsBindingIndex}) var<storage, read> positions: array<f32>;\n\n@vertex fn main(@builtin(instance_index) instance: u32,\n @builtin(vertex_index) index: u32) -> ${WGSL_VERTEXOUTPUT_STRUCT_NAME} {\n\n let x = positions[3u * index + 0u];\n let y = positions[3u * index + 1u];\n let z = positions[3u * index + 2u];\n let position4 = vec4f(x, y, z, 1.0);\n let worldTransform = transforms.world;\n let viewProjectionTransform = camera.projection;\n let worldViewProjectionTransform = viewProjectionTransform * worldTransform;\n let worldPosition = (worldTransform * position4).xyz;\n return ${WGSL_VERTEXOUTPUT_STRUCT_NAME}(\n worldViewProjectionTransform * position4,\n instance,\n index);\n}`;\n}\nexport function getFatLineVertexWgsl(options = DefaultLineVertexOptions) {\n const opts = Utils.extend({}, DefaultLineVertexOptions, options);\n return `${getVertexOutputStructDefinition(opts)}\n\nstruct Transforms {\n world: mat4x4f,\n normal: mat3x3f,\n}\n\nstruct Camera {\n view: mat4x4f,\n projection: mat4x4f,\n position: vec3f\n}\n\nstruct Pixels {\n viewportWidth: f32,\n viewportHeight: f32,\n halfLineWidth: f32\n}\n\n@group(${opts.uniformWorldGroupIndex}) @binding(${opts.uniformWorldBindingIndex}) var<uniform> transforms: Transforms;\n@group(${opts.uniformViewGroupIndex}) @binding(${opts.uniformViewBindingIndex}) var<uniform> camera: Camera;\n@group(${opts.storagePositionsGroupIndex}) @binding(${opts.storagePositionsBindingIndex}) var<storage, read> positions: array<f32>;\n@group(${opts.uniformDimensionsGroupIndex}) @binding(${opts.uniformDimensionsBindingIndex}) var<uniform> dimensions: Pixels;\n\nfn computeClipPosition(index: u32) -> vec4f {\n let x = positions[3u * index + 0u];\n let y = positions[3u * index + 1u];\n let z = positions[3u * index + 2u];\n let position4 = vec4f(x, y, z, 1.0);\n let worldTransform = transforms.world;\n let viewProjectionTransform = camera.projection;\n let worldViewProjectionTransform = viewProjectionTransform * worldTransform;\n return worldViewProjectionTransform * position4;\n}\n\nfn computeOffsetPosition(p0: vec4f, p1: vec4f, index: u32) -> vec4f {\n\n let viewportSize = vec2f(dimensions.viewportWidth, dimensions.viewportHeight);\n let normalizedSize = normalize(viewportSize);\n let halfThickness = dimensions.halfLineWidth / dimensions.viewportWidth;\n let p0ndc = p0.xyz / p0.w;\n let p1ndc = p1.xyz / p1.w;\n let dir = normalize((p1ndc - p0ndc).xy);\n let offsetX = halfThickness * 2.0 / normalizedSize.x;\n let offsetY = halfThickness * 2.0 / normalizedSize.y;\n\n // perp\n let perp0 = vec2f(-dir.y * offsetX, dir.x * offsetY);\n let perp1 = perp0;\n\n /*\n\n position0-0 -----*----- position0-1\n |\\\\ |\n | \\\\ |\n | \\\\ |\n | \\\\ |\n | \\\\ |\n | \\\\ |\n | \\\\ |\n | \\\\|\n position1-0 -----*----- position1-1\n\n indexes:\n ------------\n p0-0 -> 0, 3\n p0-1 -> 5\n p1-0 -> 1\n p1-1 -> 2, 4\n */\n\n var outPos: vec2f;\n var w = p0.w;\n var z = p0.z;\n if (index == 0 || index == 3){\n outPos = p0ndc.xy - perp0;\n }\n else if (index == 1){\n outPos = p1ndc.xy - perp1;\n w = p1.w;\n z = p1.z;\n }\n else if (index == 5){\n outPos = p0ndc.xy + perp0;\n }\n else { //if (index == 2 || index == 4)\n outPos = p1ndc.xy + perp1;\n w = p1.w;\n z = p1.z;\n }\n\n // return vec4f(outPos , 0, 1.0);\n return vec4f(outPos * w, z, w);\n}\n\n@vertex fn main(@builtin(instance_index) instance: u32,\n @builtin(vertex_index) index: u32) -> ${WGSL_VERTEXOUTPUT_STRUCT_NAME} {\n\n // vertex index starting at 1\n let position0 = computeClipPosition(instance);\n let position1 = computeClipPosition(instance + 1);\n\n // apply offset\n let position = computeOffsetPosition(position0, position1, index);\n\n return ${WGSL_VERTEXOUTPUT_STRUCT_NAME}(\n position,\n instance,\n index\n );\n}`;\n}\n","import { UNIFORM_GROUP_INDEX_COLORPICKING } from '../constants';\n//namespace Pacem.Drawing3D.WebGPU {\n/**\n * Generate a WGSL piece of code that eases 3D picking using color strategy.\n */\nexport function getColorPickingFragmentWgsl(groupIndex = UNIFORM_GROUP_INDEX_COLORPICKING) {\n return `struct ColorPicker {\n id: u32,\n };\n\n @group(${groupIndex}) @binding(0) var<uniform> colorPicker: ColorPicker;\n\n @fragment\n fn main(@builtin(position) position: vec4f) -> @location(0) u32 {\n return colorPicker.id;\n }\n `;\n}\n","import { Utils } from '@pacem/pacem-core';\nimport { SAMPLER_BINDING_INDEX } from '../constants';\nconst DefaultTextureMapReferences = {\n uv: 'uv',\n};\nexport function textureMap(references = DefaultTextureMapReferences, group, binding = SAMPLER_BINDING_INDEX) {\n const key = Utils.uniqueCode();\n const samplerReference = `sampler_${key}`;\n const texReference = `tex_${key}`;\n const ref = Utils.extend({}, DefaultTextureMapReferences, references);\n const inputColor = ref.inputColor, outputColors = ref.outputColors;\n if (Utils.isNullOrEmpty(inputColor)) {\n throw new Error('Must provide either input and output vertex color parameter names.');\n }\n const modifiers = outputColors ?\n outputColors.map((name, index) => index === 0 ? `${name} = textureSample(${texReference}, ${samplerReference}, ${ref.uv}) * ${inputColor};` : `${name} = ${outputColors[0]};`)\n : [`textureSample(${texReference}, ${samplerReference}, ${ref.uv}) * ${inputColor}`];\n return {\n // type definitions\n //definition: '',\n // bindings\n bindings: [`@group(${group}) @binding(${binding}) var ${samplerReference}: sampler;`,\n `@group(${group}) @binding(${binding + 1}) var ${texReference}: texture_2d<f32>;`],\n // modifiers\n modifiers\n };\n}\n","import { Utils } from '@pacem/pacem-core';\nconst DefaultDirectionalLightReferences = {\n normal: 'normal', inputColor: 'white'\n};\nexport function directionalLight(references, group, binding) {\n const key = Utils.uniqueCode();\n const lightReference = `directional_${key}`;\n const ref = Utils.extend({}, DefaultDirectionalLightReferences, references);\n const inputColor = ref.inputColor, outputColor = ref.outputColor, normal = ref.normal ?? 'normal';\n if (Utils.isNullOrEmpty(inputColor)) {\n throw new Error('Must provide input vertex color parameter name.');\n }\n return {\n // type definitions\n definitions: [`struct DirectionalLight {\n color: vec4f,\n direction: vec3f,\n intensity: f32\n}`, `fn computeDirectional(normal: vec3f, color: vec4f, light: DirectionalLight) -> vec4f {\n let n = normalize(normal);\n let d = normalize(light.direction);\n let factor = light.intensity * .5 * (1.0 + dot(n, -d));\n let output = color.rgb * light.color.rgb * factor;\n return vec4f(output, color.a);\n}`],\n // bindings\n bindings: [`@group(${group}) @binding(${binding}) var<uniform> ${lightReference}: DirectionalLight;`],\n // modifiers\n modifiers: outputColor ? [`${outputColor} += computeDirectional(${normal}, ${inputColor}, ${lightReference});`] : [`computeDirectional(${normal}, ${inputColor}, ${lightReference})`]\n };\n}\n","import { Utils } from '@pacem/pacem-core';\nconst DefaultOmniLightReferences = {\n normal: 'normal', position: 'vertex', ray: 'ray', inputColor: 'white', specularColor: 'empty', shininess: '0'\n};\nexport function omniLight(references, group, binding) {\n const key = Utils.uniqueCode();\n const lightReference = `omni_${key}`;\n const ref = Utils.extend({}, DefaultOmniLightReferences, references);\n const inputColor = ref.inputColor, outputColor = ref.outputColor, normal = ref.normal, ray = ref.ray, vertex = ref.position, shininess = ref.shininess, specularColor = ref.specularColor;\n if (Utils.isNullOrEmpty(inputColor)) {\n throw new Error('Must provide input vertex color parameter name.');\n }\n return {\n // type definitions\n definitions: [`struct OmniLight {\n color: vec4f,\n position: vec3f,\n intensity: f32\n}`, `fn computeOmni(position: vec3f, normal: vec3f, ray: vec3f, color: vec4f, specularColor: vec4f, shininess: f32, light: OmniLight) -> vec4f {\n\n // color\n let n = normalize(normal);\n let d = normalize(position - light.position);\n let factor = light.intensity * .5 * (1.0 + dot(n, -d));\n\n // specular\n let r = normalize(ray);\n let halfVector = normalize(d + r);\n let specular = specularColor.rgb * shininess * dot(n, -halfVector);\n\n let output = color.rgb * light.color.rgb * factor + specular;\n return vec4f(output, color.a);\n}`],\n // bindings\n bindings: [`@group(${group}) @binding(${binding}) var<uniform> ${lightReference}: OmniLight;`],\n // modifiers\n modifiers: outputColor ? [`${outputColor} += computeOmni(${vertex}, ${normal}, ${ray}, ${inputColor}, ${specularColor}, ${shininess}, ${lightReference});`] : [`computeOmni(${vertex}, ${normal}, ${ray}, ${inputColor}, ${specularColor}, ${shininess}, ${lightReference})`]\n };\n}\n","import { Utils } from '@pacem/pacem-core';\nexport function ambientLight(references, group, binding) {\n const key = Utils.uniqueCode();\n const lightReference = `ambient_${key}`;\n const inputColor = references.inputColor, outputColor = references.outputColor;\n if (Utils.isNullOrEmpty(inputColor) || Utils.isNullOrEmpty(outputColor)) {\n throw new Error('Must provide either input and output vertex color parameter names.');\n }\n return {\n // type definitions\n definitions: [`struct AmbientLight {\n color: vec4f,\n intensity: f32\n}`, `fn computeAmbient(color: vec4f, light: AmbientLight) -> vec4f {\n return vec4f(light.intensity * color.rgb * light.color.rgb, color.a);\n}`],\n // bindings\n bindings: [`@group(${group}) @binding(${binding}) var<uniform> ${lightReference}: AmbientLight;`],\n // modifiers\n modifiers: [`${outputColor} = computeAmbient(${inputColor}, ${lightReference});`]\n };\n}\n","import { Geometry } from '@pacem/pacem-numerical';\nimport { isPerspectiveCamera, isOrthographicCamera } from '../../types';\n//namespace Pacem.Drawing3D.WebGPU {\nconst Vector3D = Geometry.LinearAlgebra.Vector3D;\nconst Matrix3D = Geometry.LinearAlgebra.Matrix3D;\nconst DEFAULT_SIZE = { width: 1, height: 1 };\nexport class Cameras {\n /**\n * Creates a new webgpu {@link Camera} given a canonic one.\n * @param camera\n * @returns\n */\n static create(camera) {\n if (isPerspectiveCamera(camera)) {\n return new PerspectiveCamera(camera);\n }\n if (isOrthographicCamera(camera)) {\n return new OrthographicCamera(camera);\n }\n throw new TypeError(`Camera type '${camera['type']}' not supported.`);\n }\n}\n/**\n * Camera orientation 4x4 matrix.\n * @param eye\n * @param target\n * @param up\n * @returns\n */\nfunction view(eye, target, up) {\n const z = /* inverse forward is eye -> target */ Vector3D.subtract(target, eye);\n const x = Vector3D.cross(up, z);\n const y = Vector3D.cross(z, x);\n Vector3D.normalize(x);\n Vector3D.normalize(z);\n Vector3D.normalize(y);\n const offsetX = -Vector3D.dot(x, eye);\n const offsetY = -Vector3D.dot(y, eye);\n const offsetZ = -Vector3D.dot(z, eye);\n return Matrix3D.from(x.x, y.x, z.x, 0, x.y, y.y, z.y, 0, x.z, y.z, z.z, 0, offsetX, offsetY, offsetZ, 1);\n}\nfunction assertNearFarCorrectness(near, far) {\n if (near <= 0) {\n throw new RangeError(\"Near plane distance must be positive.\");\n }\n if (far <= near) {\n throw new RangeError(\"Far plane distance must be greater than near plane distance.\");\n }\n}\n/**\n * Perspective transformation 4x4 matrix.\n * @param fovY Vertical field of view (in radians)\n * @param aspectRatio Frustum aspect ratio\n * @param near Clipping plane near distance (not z coordinate)\n * @param far Clipping plane far distance (not z coordinate)\n * @returns\n */\nfunction perspective(fovY = 120, aspectRatio = 1, near = 0.1, far = 1000) {\n assertNearFarCorrectness(near, far);\n const scale = Math.tan(.5 * Math.PI * (1 - fovY / 180));\n const m11 = scale / aspectRatio;\n const finitelyFar = Number.isFinite(far);\n const m33 = finitelyFar ? (far / (near - far)) : -1;\n const offsetZ = finitelyFar ? (far * near / (near - far)) : -near;\n return Matrix3D.from(m11, 0, 0, 0, 0, scale, 0, 0, 0, 0, m33, -1, 0, 0, offsetZ, 0);\n}\n/**\n * Othographic transformation 4x4 matrix.\n * @param left Viewport's left side\n * @param right Viewport's right side\n * @param top Viewport's top side\n * @param bottom Viewport's bottom side\n * @param near Clipping plane near distance\n * @param far Clipping plane far distance\n */\nfunction orthographic(left, right, top, bottom, near = .1, far = 1000) {\n assertNearFarCorrectness(near, far);\n return Matrix3D.from(2 / (right - left), 0, 0, 0, 0, 2 / (top - bottom), 0, 0, 0, 0, 1 / (near - far), 0, (left + right) / (left - right), (top + bottom) / (bottom - top), near / (near - far), 1);\n}\nexport class OrthographicCamera {\n constructor(_camera) {\n this._camera = _camera;\n }\n static view(camera) {\n return view(camera.position, camera.lookAt, camera.up);\n }\n static projection(camera, size = DEFAULT_SIZE) {\n const eye = camera.position, target = camera.lookAt;\n const z = Vector3D.subtract(target, eye);\n Vector3D.normalize(z);\n const zoom = Vector3D.dot(z, eye);\n const { height, width } = size;\n const ratio = width / height;\n const factor = .5 * zoom;\n const w = factor * ratio, h = factor;\n const top = camera.top * h, bottom = camera.bottom * h;\n const right = camera.right * w, left = camera.left * w;\n return orthographic(left, right, top, bottom, camera.near, camera.far);\n }\n view() {\n return OrthographicCamera.view(this._camera);\n }\n projection(size) {\n return OrthographicCamera.projection(this._camera, size);\n }\n}\nexport class PerspectiveCamera {\n constructor(_camera) {\n this._camera = _camera;\n }\n static view(camera) {\n return view(camera.position, camera.lookAt, camera.up);\n }\n static projection(camera, size = DEFAULT_SIZE) {\n const aspectRatio = (size.width / size.height) / camera.aspectRatio;\n return perspective(camera.fov, aspectRatio, camera.near, camera.far);\n }\n view() {\n return PerspectiveCamera.view(this._camera);\n }\n projection(size) {\n return PerspectiveCamera.projection(this._camera, size);\n }\n}\n","import { Utils } from '@pacem/pacem-core';\nimport { Colors } from '@pacem/pacem-foundation';\nimport { Geometry } from '@pacem/pacem-numerical';\nimport { StalePropertyFlag, isGroup, isMesh, isCamera, isLight, isGeometry, isInteraction, isMeshGeometry } from '../../types';\nimport { KnownShader, isMaterial } from '../../materials/material';\nimport { AdapterUtils } from '../shared';\nimport { U32_MAX, LABEL_PREFIX } from './constants';\nimport { Buffers } from './buffers';\nimport { Cameras } from './cameras';\nimport { Materials } from './materials';\n//namespace Pacem.Drawing3D.WebGPU {\nconst Vector3D = Geometry.LinearAlgebra.Vector3D;\nconst Matrix3D = Geometry.LinearAlgebra.Matrix3D;\nfunction throwBufferRequestError(key, type) {\n if (typeof type === 'function') {\n type = type.name;\n }\n throw new RangeError(`Buffer '${key}' not available for ${type}.`);\n}\nfunction createRenderableBuffer(item, parent, ...args) {\n item.stage ??= parent?.item.stage;\n if (isGroup(item)) {\n item.key ??= 'group_' + Utils.uniqueCode();\n return new RenderableGroupBuffer(item, parent, ...args);\n }\n if (isMesh(item)) {\n item.key ??= 'mesh_' + Utils.uniqueCode();\n return new RenderableMeshBuffer(item, parent, ...args);\n }\n if (isCamera(item)) {\n item.key ??= 'camera_' + Utils.uniqueCode();\n return new RenderableCameraBuffer(item /*, parent*/);\n }\n if (isLight(item)) {\n item.key ??= 'light_' + item.type + '_' + Utils.uniqueCode();\n return new RenderableLightBuffer(item /*, parent*/);\n }\n throw new Error(`Renderable is not supported.`);\n}\nexport class RenderLooper {\n constructor(_set) {\n this._set = _set;\n }\n /** @internal */\n get items() {\n return this._set;\n }\n loop(render) {\n const { meshes, cameras, groups, lights } = this._set;\n const camera = cameras[0];\n let cameraDone = false, lightsDone = false;\n for (let mesh of meshes) {\n if (mesh.disposed) {\n continue;\n }\n // execute\n const rendered = render(mesh, camera, lights);\n if (!rendered) {\n continue;\n }\n // seal buffers\n RenderableBuffers.clearFlags(mesh);\n if (!cameraDone) {\n RenderableBuffers.clearFlags(camera);\n cameraDone = true;\n }\n if (!lightsDone) {\n lights.forEach(light => RenderableBuffers.clearFlags(light));\n lightsDone = true;\n }\n }\n for (let group of groups) {\n // seal group buffers\n RenderableBuffers.clearFlags(group);\n }\n }\n}\nexport class ManagedBuffers {\n static create(item) {\n if (isGeometry(item)) {\n item.key ??= 'geometry_' + Utils.uniqueCode();\n return new GeometryBuffer(item);\n }\n if (isMaterial(item)) {\n return new MaterialBuffer(item);\n }\n if (isInteraction(item)) {\n return new InteractionBuffer(item);\n }\n throw new Error(`Object is not supported.`);\n }\n}\nexport class RenderableBuffers {\n static create(item, ...args) {\n return createRenderableBuffer(item, null, ...args);\n }\n static clearFlags(buffer, includeParent = false) {\n buffer.item.flags.splice(0);\n if (includeParent) {\n const bufferBase = buffer;\n if (!Utils.isNull(bufferBase.parent)) {\n RenderableBuffers.clearFlags(bufferBase.parent, true);\n }\n }\n }\n static allFlags(buffer) {\n const bufferBase = buffer;\n const parentBufferBase = bufferBase.parent;\n const parentFlags = Utils.isNull(parentBufferBase) ? [] : RenderableBuffers.allFlags(parentBufferBase);\n return bufferBase.item.flags.union(parentFlags);\n }\n}\nclass ManagedBufferBase {\n #item;\n constructor(item) {\n this.#item = item;\n }\n get item() {\n return this.#item;\n }\n #lock = false;\n lock() {\n this.#lock = true;\n }\n unlock() {\n this.#lock = false;\n const garbage = this.#garbage;\n while (garbage.length > 0) {\n const obj = garbage.shift();\n this._destroyUnsafe(obj);\n }\n }\n #garbage = [];\n _destroyUnsafe(obj) {\n if ('texture' in obj) {\n obj.texture.destroy();\n }\n else if ('buffer' in obj) {\n obj.buffer.destroy();\n }\n }\n destroySafely(...objects) {\n for (let obj of Array.from(objects).concat(...this.#garbage.splice(0))) {\n if (!obj) {\n continue;\n }\n if (this.#lock) {\n this.#garbage.push(obj);\n }\n else {\n this._destroyUnsafe(obj);\n }\n }\n }\n #disposed = false;\n destroy() {\n this.dispose();\n this.#disposed = true;\n }\n get disposed() {\n return this.#disposed;\n }\n}\nclass RenderableBufferBase extends ManagedBufferBase {\n constructor(item, parentBuffer) {\n super(item);\n this.#parent = parentBuffer;\n this.#u32id = Utils.uniqueId() % U32_MAX;\n }\n #u32id;\n #parent;\n #u32idBuffer = new Map();\n get parent() {\n return this.#parent;\n }\n get id() {\n return this.#u32id;\n }\n allFlags() {\n const parent = this.parent;\n // TODO: this one line is a perf hog!\n return this.item.flags.union(parent?.allFlags() ?? []);\n }\n buildParentWorldTransform() {\n let worldMatrix = Matrix3D.identity();\n let step = this;\n while (!Utils.isNull(step.parent)) {\n const parentItem = step.parent.item;\n const parentItemMatrix = Matrix3D.translate(parentItem.transformMatrix ?? Matrix3D.identity(), parentItem.position ?? Vector3D.zero());\n worldMatrix = Matrix3D.multiply(worldMatrix, parentItemMatrix);\n step = step.parent;\n }\n return worldMatrix;\n }\n buildWorldTransform() {\n const itemMatrix = Matrix3D.translate(this.item.transformMatrix ?? Matrix3D.identity(), this.item.position ?? Vector3D.zero());\n const parentWorldMatrix = this.buildParentWorldTransform();\n return Matrix3D.multiply(itemMatrix, parentWorldMatrix);\n }\n #versions = new Map();\n version(key) {\n return this.#versions.get(key) ?? 0;\n }\n buffer(context, key) {\n if (key === 'u32id') {\n const u32idBuffer = this.#u32idBuffer;\n const { pipeline, device } = context;\n if (u32idBuffer.has(pipeline)) {\n return Utils.extend({ fresh: false }, u32idBuffer.get(pipeline));\n }\n const u32idBufferValue = new Uint32Array([this.id]);\n const u32idBufferBuffer = Buffers.createUniform(device, u32idBufferValue, LABEL_PREFIX + 'u32id-buffer');\n const retval = Utils.extend({ buffer: u32idBufferBuffer, value: u32idBufferValue, version: performance.now() }, { fresh: true });\n this.#u32idBuffer.set(pipeline, retval);\n return retval;\n }\n const retval = this.specificBuffer(context, key);\n this.#versions.set(key, retval.version);\n return retval;\n }\n}\nconst DefaultMaterial = { shader: KnownShader.Basic, color: '#c0c0c0', flags: [] };\n// #region GROUP\nclass RenderableGroupBuffer extends RenderableBufferBase {\n #children;\n constructor(group, parent, ...args) {\n super(group, parent);\n this.#children = group.childRenderables.map(i => createRenderableBuffer(i, this, ...args));\n }\n get children() {\n return this.#children;\n }\n specificBuffer(ctx, key) {\n return null;\n }\n texture(_) {\n throw new Error(\"Method not implemented.\");\n }\n dispose() {\n this.#children.forEach(i => i.destroy());\n //this.#children = null;\n }\n}\n// #endregion\n// #region CAMERA\nclass RenderableCameraBuffer extends RenderableBufferBase {\n #viewBag = new Map();\n #view;\n constructor(camera) {\n super(camera);\n }\n texture(_) {\n throw new Error(\"Method not implemented.\");\n }\n specificBuffer(context, key) {\n //const camera = this.item;\n let fresh = false;\n if (this.allFlags().length > 0 || Utils.isNull(this.#view)) {\n fresh = true;\n this.#viewBag.clear();\n this._rebuildMatrices(context);\n }\n const { pipeline } = context;\n if (!this.#viewBag.has(pipeline)) {\n fresh = true;\n this.#viewBag.set(pipeline, this.#view);\n }\n RenderableBuffers.clearFlags(this);\n switch (key) {\n case 'cameraViewTransform':\n return Utils.extend(this.#view, { fresh });\n default:\n throwBufferRequestError(key, RenderableCameraBuffer);\n }\n }\n _rebuildMatrices({ device, canvas }) {\n // this._destroyView();\n const cam = this.item;\n const camera = Cameras.create(cam);\n const { x, y, z } = cam.position;\n const view = camera.view();\n const projection = camera.projection(canvas);\n const viewProjection = Matrix3D.multiply(view, projection);\n const viewValue = new Float32Array(16 + 16 + 4);\n viewValue.set(Matrix3D.toArray(view), 0);\n viewValue.set(Matrix3D.toArray(viewProjection), 16);\n viewValue.set([x, y, z], 32);\n // reuse GPUBuffer (always same size)\n if (Utils.isNull(this.#view)) {\n const viewBuffer = Buffers.createUniform(device, viewValue, LABEL_PREFIX + 'view-buffer');\n this.#view = { buffer: viewBuffer, value: viewValue, version: performance.now().roundoff() };\n }\n else {\n this.#view.value = viewValue;\n this.#view.version = performance.now().roundoff();\n }\n }\n _destroyView() {\n this.#viewBag.clear();\n const view = this.#view;\n this.#view = null;\n this.destroySafely(view);\n }\n dispose() {\n this._destroyView();\n }\n}\n// #endregion\n// #region GEOMETRY\nclass GeometryBuffer extends ManagedBufferBase {\n #bufferBag = {};\n #freshness = { positions: true, normals: true, uv: true, packed: true };\n #geometryBuffers;\n constructor(geometry) {\n super(geometry);\n geometry.flags ??= [];\n }\n buffer(context, key) {\n const flags = this.item.flags ?? [];\n if (Utils.isNull(this.#geometryBuffers) || flags.includes(StalePropertyFlag.Geometry)) {\n flags.splice(0);\n this.#bufferBag = /* reset */ {};\n this._rebuildGeometryBuffers(context);\n }\n const freshness = this.#freshness;\n const geom = this.#geometryBuffers;\n const { pipeline } = context;\n const bag = (this.#bufferBag[key] ??= new Map());\n const newInPipeline = !bag.has(pipeline);\n const ensureInBag = (buffer) => {\n if (newInPipeline) {\n bag.set(pipeline, buffer);\n }\n return buffer;\n };\n switch (key) {\n case 'geometryPositions':\n const { positions } = geom, posFresh = freshness.positions;\n freshness.positions = false;\n return Utils.extend(ensureInBag(positions), { fresh: posFresh || newInPipeline });\n case 'geometryNormals':\n const { normals } = geom, normFresh = freshness.normals;\n freshness.normals = false;\n return Utils.extend(ensureInBag(normals), { fresh: normFresh || newInPipeline });\n case 'geometryTexCoords':\n const { uv } = geom, uvFresh = freshness.uv;\n freshness.uv = false;\n return Utils.extend({ fresh: uvFresh || newInPipeline }, ensureInBag(uv));\n case 'geometry':\n // alltogether\n const { packed } = geom, geomFresh = freshness.packed;\n freshness.packed = false;\n return Utils.extend(ensureInBag(packed), { fresh: geomFresh || newInPipeline });\n default:\n throwBufferRequestError(key, GeometryBuffer);\n }\n }\n texture(_) {\n throw new Error(\"Method not implemented.\");\n }\n _rebuildGeometryBuffers({ device }) {\n this._destroyBuffers();\n const version = performance.now();\n const geometry = this.item, key = geometry.key;\n if (isMeshGeometry(geometry)) {\n const meshGeometry = geometry;\n // flatten positions...\n const hasTriangleIndices = !Utils.isNullOrEmpty(meshGeometry.triangleIndices);\n const flatPositions = hasTriangleIndices ?\n meshGeometry.triangleIndices.map(index => meshGeometry.positions[index])\n : meshGeometry.positions;\n const length2 = flatPositions.length * 2, length3 = length2 + flatPositions.length;\n const positionsValue = new Float32Array(length3);\n const normalsValue = new Float32Array(length3);\n const uvValue = new Float32Array(length2);\n const geomValue = new Float32Array(2 * length3 + length2);\n for (let j = 0; j < flatPositions.length; j++) {\n const offset2 = 2 * j;\n const offset3 = 3 * j;\n const { x, y, z } = flatPositions[j];\n const { x: nx, y: ny, z: nz } = meshGeometry.normals[j];\n const { x: u, y: v } = meshGeometry.textureCoordinates[j];\n positionsValue.set([x, y, z], offset3);\n normalsValue.set([nx, ny, nz], offset3);\n uvValue.set([u, v], offset2);\n geomValue.set([x, y, z, nx, ny, nz, u, v], offset3 * 2 + offset2);\n }\n const positions = Buffers.create(device, positionsValue, LABEL_PREFIX + 'meshgeometry-' + key + '-positions-buffer');\n const normals = Buffers.create(device, normalsValue, LABEL_PREFIX + 'meshgeometry-' + key + '-normals-buffer');\n const uv = Buffers.create(device, uvValue, LABEL_PREFIX + 'meshgeometry-' + key + '-uvmap-buffer');\n const geom = Buffers.create(device, geomValue, LABEL_PREFIX + 'meshgeometry-' + key + '-buffer');\n this.#geometryBuffers = {\n packed: { buffer: geom, value: geomValue, version },\n positions: { buffer: positions, value: positionsValue, version },\n normals: { buffer: normals, value: normalsValue, version },\n uv: { buffer: uv, value: uvValue, version },\n };\n this.#freshness = { positions: true, normals: true, uv: true, packed: true };\n }\n else {\n const positionsValue = new Float32Array(AdapterUtils.flattenVectorArray(geometry.positions));\n const positions = Buffers.createStorage(device, positionsValue, LABEL_PREFIX + 'nodegeometry-' + key + '-positions-buffer');\n this.#geometryBuffers = {\n positions: { buffer: positions, value: positionsValue, version },\n packed: { buffer: positions, value: positionsValue, version }\n };\n this.#freshness = { positions: true, packed: true };\n }\n }\n _destroyBuffers() {\n this.#bufferBag = {};\n const obsolete = this.#geometryBuffers;\n if (!Utils.isNull(obsolete)) {\n this.destroySafely(obsolete.positions, obsolete.normals, obsolete.uv);\n }\n }\n dispose() {\n this._destroyBuffers();\n }\n}\n// #endregion\n// #region MATERIAL\nclass MaterialBuffer extends ManagedBufferBase {\n #bufferBag = {};\n #textureBag = {};\n #wgpuMaterial;\n #buffers = new Map();\n #textures = new Map();\n constructor(material) {\n super(material);\n material.flags ??= [];\n if (material.flags.indexOf(StalePropertyFlag.Material) === -1) {\n material.flags.push(StalePropertyFlag.Material);\n }\n }\n buffer(context, key) {\n const flags = this.item.flags ?? [];\n let fresh = Utils.isNull(this.#wgpuMaterial);\n if (flags.includes(StalePropertyFlag.Material)) {\n this.#bufferBag = /* reset */ {};\n flags.splice(0);\n fresh = true;\n this.#textures.clear();\n this._resetMaterialBuffers();\n }\n const { pipeline } = context;\n const bag = (this.#bufferBag[key] ??= new Map());\n switch (key) {\n case 'material':\n case 'line':\n const buffer = this._ensureMaterialBuffer(context, key);\n if (buffer) {\n if (!bag.has(pipeline)) {\n fresh = true;\n bag.set(pipeline, buffer);\n }\n return Utils.extend(buffer, { fresh });\n }\n return null;\n default:\n throwBufferRequestError(key, MaterialBuffer);\n }\n }\n _ensureMaterialBuffer(ctx, key = 'material') {\n const set = this.#buffers;\n let retval = set.get(key);\n if (retval) {\n return retval;\n }\n if (set.has(key)) {\n return null;\n }\n retval = this.#wgpuMaterial?.buffer(ctx, key);\n if (retval) {\n set.set(key, retval);\n }\n return retval;\n }\n _resetMaterialBuffers() {\n this.#wgpuMaterial = Materials.create(this.item);\n this._destroyBuffers();\n }\n texture(ctx, key = 'texture') {\n const set = this.#textures;\n let retval = set.get(key), fresh = false;\n if (!retval) {\n retval = this.#wgpuMaterial?.texture(ctx, key);\n if (!retval) {\n return null;\n }\n set.set(key, retval);\n fresh = true;\n //\n this.#textureBag = /* reset */ {};\n }\n const { pipeline } = ctx;\n const bag = (this.#textureBag[key] ??= new Map());\n if (!bag.has(pipeline)) {\n fresh = true;\n bag.set(pipeline, retval);\n }\n return Utils.extend(retval, { fresh });\n }\n dispose() {\n this._destroyBuffers();\n }\n _destroyBuffers() {\n // memoizers\n this.#bufferBag = {};\n this.#textureBag = {};\n // buffers\n const buffers = this.#buffers.values();\n this.#buffers.clear(); // clear before destroying\n this.destroySafely(...buffers);\n // textures\n const textures = this.#textures.values();\n this.#textures.clear(); // clear before destroying\n textures.forEach(t => t.texture.destroy());\n }\n}\n// #endregion\n// #region INTERACTION\nclass InteractionBuffer extends ManagedBufferBase {\n #fields = {\n time: 0, cursor: { x: 0, y: 0 }, resolution: { width: 0, height: 0 }\n };\n #buffer;\n #bufferBag = new Map();\n constructor(data) {\n super(data);\n Utils.extend(this.#fields, data);\n }\n buffer(context, key) {\n switch (key) {\n // altogether\n case 'interaction':\n return this._ensureInteractionBuffer(context);\n default:\n throwBufferRequestError(key, InteractionBuffer);\n }\n }\n texture(_) {\n throw new Error(\"Method not implemented.\");\n }\n _ensureInteractionBuffer(ctx, key = 'interaction') {\n const fields = this.#fields, item = this.item;\n let fresh = (!this.#buffer\n || item.time !== fields.time\n || item.resolution?.width !== fields.resolution.width\n || item.resolution?.height !== fields.resolution.height);\n if (!fresh && !Utils.isNull(item.cursor)) {\n fresh = item.cursor.x !== fields.cursor.x\n || item.cursor.y !== fields.cursor.y;\n }\n if (fresh) {\n // [4bytes cursor.x, 4bytes cursor.y, 4bytes resolution.width, 4bytes resolution.height, 4bytes time] = 20 bytes total]\n const value = new Float32Array([item.cursor?.x ?? 0, item.cursor?.y ?? 0, item.resolution.width, item.resolution.height, item.time, /* padding */ .0]);\n const buffer = Buffers.createUniform(ctx.device, value, LABEL_PREFIX + 'interaction-buffer');\n this.#buffer = { buffer, value, version: performance.now() };\n this.#bufferBag.clear();\n }\n const { pipeline } = ctx;\n const bag = this.#bufferBag;\n if (!bag.has(pipeline)) {\n fresh = true;\n bag.set(pipeline, this.#buffer);\n }\n return Utils.extend(this.#buffer, { fresh });\n }\n _destroyBuffers() {\n // memoizer\n this.#bufferBag.clear();\n // buffer itself\n const obsolete = this.#buffer;\n if (!Utils.isNull(obsolete)) {\n this.destroySafely(obsolete);\n }\n }\n dispose() {\n this._destroyBuffers();\n }\n}\n// #endregion\n// #region MESH\nclass RenderableMeshBuffer extends RenderableBufferBase {\n #geometryBuffers;\n #geometryBuffer;\n #materialBuffers;\n #materialBuffer;\n #worldTransform;\n #freshness = {\n geometry: true, material: true, transform: true\n };\n #worldTransformBufferBag = new Map();\n constructor(mesh, parent, geometries, materials) {\n super(mesh, parent);\n mesh.flags ??= [];\n if (mesh.flags.indexOf(StalePropertyFlag.Geometry) === -1) {\n mesh.flags.push(StalePropertyFlag.Geometry);\n }\n if (mesh.flags.indexOf(StalePropertyFlag.Material) === -1) {\n mesh.flags.push(StalePropertyFlag.Material);\n }\n if (mesh.flags.indexOf(StalePropertyFlag.Position) === -1 && mesh.flags.indexOf(StalePropertyFlag.Transform) === -1) {\n mesh.flags.push(StalePropertyFlag.Transform);\n }\n this.#geometryBuffers = geometries;\n this.#materialBuffers = materials;\n }\n texture(ctx, key) {\n const material = this.#materialBuffer;\n return material?.texture(ctx, key);\n }\n specificBuffer(context, key) {\n const freshness = this.#freshness;\n const flags = this.allFlags();\n if (Utils.isNull(this.#worldTransform) || flags.includes(StalePropertyFlag.Position) || flags.includes(StalePropertyFlag.Transform)) {\n this.#worldTransformBufferBag.clear();\n // world transform bind group buffer\n freshness.transform = true;\n this._rebuildWorldMatrices(context);\n }\n if (Utils.isNull(this.#geometryBuffer) || flags.includes(StalePropertyFlag.Geometry)) {\n // vertex buffers\n freshness.geometry = true;\n this._ensureGeometryBuffer();\n }\n if (Utils.isNull(this.#materialBuffer) || flags.includes(StalePropertyFlag.Material)) {\n freshness.material = true;\n this._ensureMaterialBuffer();\n }\n RenderableBuffers.clearFlags(this);\n const geom = this.#geometryBuffer;\n const mater = this.#materialBuffer;\n switch (key) {\n case 'geometryPositions':\n case 'geometryNormals':\n case 'geometryTexCoords':\n case 'geometry':\n return geom.buffer(context, key);\n case 'material':\n case 'line':\n return mater.buffer(context, key);\n case 'objectWorldTransform':\n const mat = this.#worldTransform, wFresh = freshness.transform;\n freshness.transform = false;\n const bag = this.#worldTransformBufferBag, { pipeline } = context;\n const newInPipeline = !bag.has(pipeline);\n if (newInPipeline) {\n bag.set(pipeline, mat);\n }\n return Utils.extend(mat, { fresh: wFresh || newInPipeline });\n default:\n throwBufferRequestError(key, RenderableMeshBuffer);\n }\n }\n _ensureGeometryBuffer() {\n const current = this.#geometryBuffer;\n const cache = this.#geometryBuffers;\n const mesh = this.item;\n const geom = mesh.geometry;\n // no cache provided? destroy and rebuild\n if (Utils.isNull(cache)) {\n current?.destroy();\n this.#geometryBuffer = new GeometryBuffer(geom);\n }\n else {\n let buffer = cache?.get(geom);\n if (buffer?.disposed !== false) {\n buffer = new GeometryBuffer(geom);\n cache.set(geom, buffer);\n }\n this.#geometryBuffer = buffer;\n }\n }\n _ensureMaterialBuffer() {\n const current = this.#materialBuffer;\n const cache = this.#materialBuffers;\n const mesh = this.item;\n const material = mesh.material ?? DefaultMaterial;\n // no cache provided? destroy and rebuild\n if (Utils.isNull(cache)) {\n current?.destroy();\n this.#materialBuffer = new MaterialBuffer(material);\n }\n else {\n let buffer = cache?.get(material);\n if (buffer?.disposed !== false) {\n buffer = new MaterialBuffer(material);\n cache.set(material, buffer);\n }\n this.#materialBuffer = buffer;\n }\n }\n _rebuildWorldMatrices({ device }) {\n //this.destroySafely(this.#worldTransform);\n const item = this.item;\n const matrix = this.buildWorldTransform();\n const normal = Matrix3D.transpose(Matrix3D.invert(matrix));\n const value = new Float32Array(28);\n value.set(Matrix3D.toArray(matrix), 0);\n value.set([normal.m11, normal.m12, normal.m13, 0, normal.m21, normal.m22, normal.m23, 0, normal.m31, normal.m32, normal.m33, 0], 16);\n //const current = this.#worldTransform;\n // reuse GPUBuffer (always same size)\n if (Utils.isNull(this.#worldTransform)) {\n const buffer = Buffers.createUniform(device, value, LABEL_PREFIX + 'mesh-' + item.key + '-worldmatrix-buffer');\n this.#worldTransform = { buffer, value, version: performance.now().roundoff() };\n }\n else {\n this.#worldTransform.value = value;\n this.#worldTransform.version = performance.now().roundoff();\n }\n //if (!Utils.isNull(current)) {\n // this.destroySafely(current);\n //}\n }\n dispose() {\n // memoizer\n this.#worldTransformBufferBag.clear();\n const world = this.#worldTransform;\n this.#worldTransform = null;\n this.destroySafely(world);\n const material = this.#materialBuffer;\n this.#materialBuffer = null;\n material?.destroy();\n const geometry = this.#geometryBuffer;\n this.#geometryBuffer = null;\n geometry?.destroy();\n }\n}\n// #endregion\n// #region LIGHTS\nclass RenderableLightBuffer extends RenderableBufferBase {\n #buffer;\n #bufferBag = new Map();\n constructor(light) {\n super(light);\n light.flags.push(StalePropertyFlag.Light);\n }\n /**\n * Ambient light buffer building\n * @param param0\n */\n _rebuildAmbientLightBuffer({ device }) {\n const light = this.item;\n // sizes/offsets\n const szColor = 4, szIntensity = 1, offsetColor = 0, offsetIntensity = 4;\n const szTotal = 24; // offsetIntensity + szIntensity;\n const values = new Float32Array(szTotal);\n // color\n const { r, g, b, a } = Colors.parse(light.color ?? '#fff');\n values.set([r, g, b, a], offsetColor);\n // intensity\n values.set([light.intensity], offsetIntensity);\n this.#buffer = { value: values, buffer: Buffers.createUniform(device, values, LABEL_PREFIX + 'ambient-light-buffer'), version: performance.now() };\n }\n /**\n * Directional light buffer building\n * @param param0\n */\n _rebuildDirectionalLightBuffer({ device }) {\n const light = this.item;\n // sizes/offsets\n const szIntensity = 1, szColor = 4, szDirection = 3, offsetColor = 0, offsetDirection = 4, // see: https://www.w3.org/TR/WGSL/#memory-layouts\n offsetIntensity = 7;\n const szTotal = offsetIntensity + szIntensity;\n const values = new Float32Array(szTotal);\n // color\n const { r, g, b, a } = Colors.parse(light.color ?? '#fff');\n values.set([r, g, b, a], offsetColor);\n // intensity\n values.set([light.intensity], offsetIntensity);\n // direction\n const direction = Vector3D.subtract(light.position, light.target);\n values.set([direction.x, direction.y, direction.z], offsetDirection);\n this.#buffer = { value: values, buffer: Buffers.createUniform(device, values, LABEL_PREFIX + 'directional-light-buffer'), version: performance.now() };\n }\n /**\n * Omni light buffer building\n * @param param0\n */\n _rebuildOmniLightBuffer({ device }) {\n const light = this.item;\n // sizes/offsets\n const szIntensity = 1, szColor = 4, szPosition = 3, offsetColor = 0, offsetPosition = 4, // see: https://www.w3.org/TR/WGSL/#memory-layouts\n offsetIntensity = 7;\n const szTotal = offsetIntensity + szIntensity;\n const values = new Float32Array(szTotal);\n // color\n const { r, g, b, a } = Colors.parse(light.color ?? '#fff');\n values.set([r, g, b, a], offsetColor);\n // intensity\n values.set([light.intensity], offsetIntensity);\n // position\n values.set([light.position.x, light.position.y, light.position.z], offsetPosition);\n this.#buffer = { value: values, buffer: Buffers.createUniform(device, values, LABEL_PREFIX + 'omni-light-buffer'), version: performance.now() };\n }\n _rebuildLight(context) {\n this.destroySafely(this.#buffer);\n const light = this.item;\n switch (light.type) {\n case 'direction':\n this._rebuildDirectionalLightBuffer(context);\n break;\n case 'omni':\n this._rebuildOmniLightBuffer(context);\n break;\n case 'ambient':\n this._rebuildAmbientLightBuffer(context);\n break;\n default:\n throw new Error(`Light '${light.type}' is not supported.`);\n }\n }\n texture(_) {\n throw new Error(\"Method not implemented.\");\n }\n specificBuffer(context, key) {\n const bag = this.#bufferBag;\n let fresh = Utils.isNull(this.#buffer) || this.allFlags().length > 0;\n if (fresh) {\n bag.clear();\n this._rebuildLight(context);\n }\n RenderableBuffers.clearFlags(this);\n const { pipeline } = context;\n if (!bag.has(pipeline)) {\n fresh = true;\n bag.set(pipeline, this.#buffer);\n }\n if (key === 'light') {\n return Utils.extend(this.#buffer, { fresh });\n }\n throwBufferRequestError(key, RenderableLightBuffer);\n }\n dispose() {\n this.#bufferBag.clear();\n const buffer = this.#buffer;\n this.#buffer = null;\n this.destroySafely(buffer);\n }\n}\n// #endregion\n","import { Utils } from '@pacem/pacem-core';\nimport { isMesh, isCamera, isLight, isMeshGeometry } from '../../types';\nimport { KnownShader, isLineMaterial } from '../../materials/material';\nimport { WGSLBindingType } from './abstractions';\nimport { LABEL_PREFIX, MATERIAL_GROUP_INDEX, UNIFORM_GROUP_INDEX_LIGHTING, UNIFORM_GROUP_INDEX_CAMERA, UNIFORM_BINDING_INDEX_CAMERA, UNIFORM_GROUP_INDEX_TRANSFORM, UNIFORM_BINDING_INDEX_TRANSFORM, UNIFORM_GROUP_INDEX_INTERACTION, UNIFORM_BINDING_INDEX_INTERACTION, STORAGE_MATERIAL_INDEX, STORAGE_GROUP_INDEX_LINE, SAMPLER_BINDING_INDEX, TEXTURE_BINDING_INDEX, VERTEX_BUFFER_INDEX_MESH_POSITION, VERTEX_BUFFER_INDEX_MESH_NORMAL, VERTEX_BUFFER_INDEX_MESH_UV, VERTEX_COLOR_REFERENCE, LIGHTING_COLOR_REFERENCE, AMBIENT_COLOR_REFERENCE, UNIFORM_GROUP_INDEX_COLORPICKING, GPUShaderStage } from './constants';\nimport { BufferLayouts } from './buffers';\nimport { BasicMaterial, LineMaterial } from './materials';\nimport { getMeshVertexWgsl } from './wgsl/mesh-vertex';\nimport { getDefaultLineVertexWgsl, getFatLineVertexWgsl } from './wgsl/line-vertex';\nimport { getColorPickingFragmentWgsl } from './wgsl/object-picking-fragment';\nimport { textureMap } from './wgsl/texture-fragment';\nimport { directionalLight } from './wgsl/directional-light-fragment';\nimport { omniLight } from './wgsl/omni-light-fragment';\nimport { ambientLight } from './wgsl/ambient-light-fragment';\nimport { RenderableBuffers } from './renderablebuffer';\n//namespace Pacem.Drawing3D.WebGPU {\n// #region constants\nconst labelPrefix = LABEL_PREFIX;\nconst DefaultPipelineOptions = {\n multisample: true,\n packedVertices: true,\n primitive: {\n topology: 'triangle-list',\n frontFace: 'ccw',\n cullMode: 'back'\n }\n};\nconst EMPTY_BIND_DELEGATE = (_) => { };\nexport class RenderPipelines {\n static { this._memoizer = new WeakMap(); }\n static dispose(ctx) {\n const memoizer = this._memoizer;\n const cache = memoizer.get(ctx);\n if (!Utils.isNull(cache)) {\n cache.clear();\n memoizer.delete(ctx);\n }\n }\n static createColorPicking(ctx, items) {\n const renderPipeline = RenderPipelines.create(ctx, items);\n if (renderPipeline instanceof MeshRenderPipelineClass\n || renderPipeline instanceof LineRenderPipelineClass) {\n return {\n frame: renderPipeline.raycast\n };\n }\n return null;\n }\n static create(ctx, [mesh, camera, ...lights], pipelineOptions) {\n const memoizer = RenderPipelines._memoizer;\n let cache = memoizer.get(ctx);\n if (Utils.isNull(cache)) {\n memoizer.set(ctx, cache = new Map());\n }\n //const camera = items.find(i => isCamera(i.item));\n //const lights = items.filter(i => isLight(i.item));\n //// find main object\n //const mesh = items.find(i => isMesh(i.item));\n if (!Utils.isNull(mesh)) {\n if (isMesh(mesh.item)) {\n const isMesh = isMeshGeometry(mesh.item.geometry);\n const isLine = !isMesh && isLineMaterial(mesh.item.material);\n if (!isMesh && !isLine) {\n throw new Error('Pipeline not implemented, given the provided mesh argument.');\n }\n const builder = isMesh ? new MeshWGSLBuilder(mesh, camera, ...lights)\n : new LineWGSLBuilder(mesh, camera);\n // cache peek for sudden return\n const key = builder.key + (pipelineOptions?.modifiers?.version ?? '');\n const found = cache.get(key);\n if (found) {\n return found;\n }\n const pipeline = isMesh ? new MeshRenderPipelineClass(ctx, builder)\n : new LineRenderPipelineClass(ctx, builder);\n // no cache -> build it\n pipeline.build(pipelineOptions);\n const retval = pipeline;\n Utils.extend(retval, {\n id: key + '-' + ctx.canvas.width + 'x' + ctx.canvas.height + '-' + Utils.Dates.now().toISOString()\n });\n cache.set(key, retval);\n return retval;\n }\n else {\n throw new ReferenceError('Pipeline not implemented, given thst the first argument is not a mesh.');\n }\n }\n else {\n throw new Error('Pipeline not implemented, given the provided arguments.');\n }\n }\n}\nclass RenderPipelineCache {\n constructor() {\n this.#cache = new Map();\n }\n #cache;\n ensureBindGroup({ device }, item, buffers, refresh, layout, label, callback = () => { }) {\n const cache = this.#cache;\n const key = typeof item === 'string' ? item : item.key;\n let set = cache.get(key);\n if (Utils.isNull(set)) {\n cache.set(key, set = new Map());\n }\n if (refresh || !set.has(label)) {\n const entries = buffers.map((item, index) => {\n const entry = {\n binding: index,\n resource: {\n buffer: item\n }\n };\n return entry;\n });\n const descriptor = {\n label,\n layout,\n entries\n };\n // custom config happens here\n callback(descriptor);\n const retval = device.createBindGroup(descriptor);\n set.set(label, retval);\n return retval;\n }\n else {\n return set.get(label);\n }\n }\n}\nclass MeshWGSLBuilder {\n #lights = [];\n #mesh;\n #camera;\n #bindgroups = new Map();\n #key = { shader: 'basic', lights: '' };\n constructor(...objects) {\n this.add(...objects);\n }\n reset() {\n this.#lights.splice(0);\n this.#mesh = null;\n this.#bindgroups.clear();\n this.#key = { shader: 'basic', lights: '' };\n }\n add(...objects) {\n for (let obj of objects ?? []) {\n if (isMesh(obj.item)) {\n if (Utils.isNull(this.#mesh)) {\n this.#mesh = obj;\n const material = obj.item.material ?? { shader: KnownShader.Basic };\n this.#key.shader = material.shader + '-' + (material.map ? 'map' : 'nomap');\n }\n else {\n throw new Error('Mesh already added.');\n }\n }\n else if (isLight(obj.item)) {\n const lights = this.#lights;\n lights.push(obj);\n this.#key.lights += ('-' + obj.item.type);\n }\n else if (isCamera(obj.item)) {\n this.#camera ??= obj;\n }\n else {\n throw new Error('Unknown object type.');\n }\n }\n // add interaction\n }\n build(modifiers) {\n const data = this._computeBasicData();\n const key = this.key, vertex = this.vertex({ inputModifier: modifiers?.vertexInput, outputModifier: modifiers?.vertexOutput }), fragment = this.fragment(data, { modifier: modifiers?.fragment }), bindings = (...args) => MeshWGSLBuilder.prototype.bindgroup.apply(this, args);\n const metadata = {\n lightCount: this.#lights.length,\n mapCount: this.#mesh.item.material?.map ? 1 : 0\n };\n return {\n vertex,\n fragment,\n key,\n bindings,\n metadata\n };\n }\n get key() {\n const { shader, lights } = this.#key;\n // TODO: consider backMap\n return `mesh-` + shader + lights;\n //return `mesh-${shader}${(hasTexture ? '-map' : '-nomap')}`;\n }\n bindgroup(type, key, index) {\n const set = this.#bindgroups;\n const arr = set.get(type);\n if (Utils.isNull(arr)) {\n return null;\n }\n if (Utils.isNullOrEmpty(key)) {\n return arr;\n }\n const filteredArr = arr.filter(i => i.key === key);\n if (isNaN(index)) {\n return filteredArr;\n }\n if (index >= 0 && index < arr.length) {\n return filteredArr[index];\n }\n return filteredArr;\n }\n vertex(options) {\n return getMeshVertexWgsl(options);\n }\n _computeBasicData() {\n const mesh = this.#mesh.item, lights = this.#lights, material = mesh.material, hasTexture = !Utils.isNull(material?.texture), hasLighting = !Utils.isNullOrEmpty(lights);\n const shader = Utils.isNull(mesh) ? KnownShader.Basic : (mesh.material?.shader ?? KnownShader.Basic);\n const materialBindGroupIndex = MATERIAL_GROUP_INDEX, lightingBindGroupIndex = UNIFORM_GROUP_INDEX_LIGHTING;\n return {\n hasTexture, hasLighting, shader,\n materialBindGroupIndex,\n lightingBindGroupIndex,\n };\n }\n _computeBindGroupsAndReferences(data = this._computeBasicData()) {\n const { hasTexture, materialBindGroupIndex, lightingBindGroupIndex } = data;\n const bindgroups = this.#bindgroups, lights = this.#lights;\n // build bindings\n // mesh + material\n const worldTransform = { key: 'objectWorldTransform', group: UNIFORM_GROUP_INDEX_TRANSFORM, binding: UNIFORM_BINDING_INDEX_TRANSFORM, type: 'buffer' };\n const material = { key: 'material', group: materialBindGroupIndex, binding: STORAGE_MATERIAL_INDEX, type: 'buffer' };\n if (hasTexture) {\n bindgroups.set(WGSLBindingType.Mesh, [worldTransform, material, { key: 'texture', group: materialBindGroupIndex, type: 'texture' }]);\n }\n else {\n bindgroups.set(WGSLBindingType.Mesh, [worldTransform, material]);\n }\n // camera\n bindgroups.set(WGSLBindingType.Camera, [\n { key: 'cameraViewTransform', group: UNIFORM_GROUP_INDEX_CAMERA, binding: UNIFORM_BINDING_INDEX_CAMERA, type: 'buffer' }\n ]);\n // lights\n const lArr = lights.map((_, ndx) => {\n return { key: 'light', group: lightingBindGroupIndex, binding: ndx, type: 'buffer' };\n });\n lArr.push(...lArr);\n // interaction\n bindgroups.set(WGSLBindingType.Interaction, [{ key: 'interaction', group: UNIFORM_GROUP_INDEX_INTERACTION, type: 'buffer', binding: UNIFORM_BINDING_INDEX_INTERACTION }]);\n }\n fragment(data = this._computeBasicData(), options) {\n this._computeBindGroupsAndReferences(data);\n const extra = {\n definitions: [], bindings: [], modifiers: []\n };\n const merge = (x) => {\n for (let definition of x.definitions ?? []) {\n if (extra.definitions.indexOf(definition) === -1) {\n extra.definitions.push(definition);\n }\n }\n if (!Utils.isNullOrEmpty(x.bindings)) {\n extra.bindings.push(...x.bindings);\n }\n if (!Utils.isNullOrEmpty(x.modifiers)) {\n extra.modifiers.push(...x.modifiers);\n }\n };\n /* TODO: consider injecting customizations (options.modifier) into `WGSLFragmentExtra`*/\n switch (data.shader) {\n case KnownShader.Basic:\n // texture\n if (data.hasTexture) {\n const materialGroupIndex = data.materialBindGroupIndex;\n const wgslTex = textureMap({ inputColor: VERTEX_COLOR_REFERENCE, outputColors: [VERTEX_COLOR_REFERENCE], uv: 'uv' }, materialGroupIndex);\n merge(wgslTex);\n }\n // lights\n let lightIndex = 0;\n const lights = this.#lights;\n for (let lightBuffer of lights) {\n const light = lightBuffer.item; // TODO: consider implementing Pacem.Drawing3D.WebGPU.Light interface (as of Materials)\n switch (light.type) {\n case 'direction':\n const dirLightExtra = directionalLight({ outputColor: LIGHTING_COLOR_REFERENCE, normal: 'normal' }, data.lightingBindGroupIndex, lightIndex);\n merge(dirLightExtra);\n break;\n case 'omni':\n const omniLightExtra = omniLight({ outputColor: LIGHTING_COLOR_REFERENCE, normal: 'normal', position: 'vertex', /*specularColor: MATERIAL_REFERENCE + '.specularColor', shininess: MATERIAL_REFERENCE + '.shininess'*/ }, data.lightingBindGroupIndex, lightIndex);\n merge(omniLightExtra);\n break;\n case 'ambient':\n const ambLightExtra = ambientLight({ inputColor: VERTEX_COLOR_REFERENCE, outputColor: AMBIENT_COLOR_REFERENCE }, data.lightingBindGroupIndex, lightIndex);\n merge(ambLightExtra);\n break;\n }\n lightIndex++;\n }\n return BasicMaterial.fragment(extra, options);\n }\n }\n}\nconst PipelineUtils = {\n writeBufferConditionally: (device, buffer) => {\n if (!buffer.fresh) {\n return;\n }\n device.queue.writeBuffer(buffer.buffer, 0, buffer.value);\n }\n};\nclass MeshRenderPipelineClass {\n constructor(_context, _builder, _cache = new RenderPipelineCache()) {\n this._context = _context;\n this._builder = _builder;\n this._cache = _cache;\n // #region fields and utils\n this._ensureU32idBindGroup = (item, buffer, refresh) => {\n return this._cache.ensureBindGroup(this._context, item, [buffer], refresh, this._pickBindGroupLayout, labelPrefix + 'mesh-colorpick-bind-group');\n };\n this._ensureMaterialBindGroup = (item, buffer, texture, refresh, layoutIndex = MATERIAL_GROUP_INDEX) => {\n const layout = this._bindGroupLayouts[layoutIndex], label = labelPrefix + 'material-bind-group';\n if (layout.label !== (labelPrefix + 'material-bind-group-layout')) {\n throw new Error('BindGroupLayout mismatch!');\n }\n return this._cache.ensureBindGroup(this._context, item, [buffer], refresh, layout, label, (descriptor) => {\n const { device } = this.context;\n const entries = descriptor.entries /* entries are build as array in the method */;\n if (texture) {\n entries.push({\n binding: SAMPLER_BINDING_INDEX, resource: device.createSampler({\n addressModeU: 'repeat',\n addressModeV: 'repeat',\n magFilter: 'linear',\n minFilter: 'linear',\n })\n }, {\n binding: TEXTURE_BINDING_INDEX, resource: texture.createView()\n });\n }\n });\n };\n this._ensureWorldTransformBindGroup = (item, buffer, refresh, layoutIndex = UNIFORM_GROUP_INDEX_TRANSFORM, raycasting = false) => {\n const layout = this._bindGroupLayouts[layoutIndex];\n if (layout.label !== (labelPrefix + 'mesh-transforms-bind-group-layout')) {\n throw new Error('BindGroupLayout mismatch!');\n }\n const key = item.key + '-' + (raycasting ? 1 : 0);\n const label = `${labelPrefix}${raycasting ? 'colorpick' : 'mesh'}-transforms-bind-group`;\n return this._cache.ensureBindGroup(this._context, key, [buffer], refresh, layout, label);\n };\n this._ensureCameraProjectionAndInteractionDataBindGroup = (item, viewBuffer, interactionBuffer, refresh, layoutIndex = UNIFORM_GROUP_INDEX_CAMERA, raycasting = false) => {\n const layout = this._bindGroupLayouts[layoutIndex];\n const key = item.key + '-' + (raycasting ? 1 : 0);\n const label = `${labelPrefix}${raycasting ? 'colorpick' : 'mesh'}-view-bind-group`;\n return this._cache.ensureBindGroup(this._context, key, [viewBuffer, interactionBuffer], refresh, layout, label);\n };\n this._ensureLightingBindGroup = (lights, refresh, layoutIndex = UNIFORM_GROUP_INDEX_LIGHTING) => {\n const layout = this._bindGroupLayouts[layoutIndex];\n const key = lights.map(l => l.id).join(':');\n const buffers = lights.map(l => l.buffer.buffer);\n return this._cache.ensureBindGroup(this._context, key, buffers, refresh, layout, labelPrefix + 'mesh-lighting-bind-group');\n };\n this._bindGroupLayouts = [];\n this._bindVertex = EMPTY_BIND_DELEGATE;\n this._bindPicker = EMPTY_BIND_DELEGATE;\n this._bindWorldTransform = EMPTY_BIND_DELEGATE;\n this._bindRaycastWorldTransform = EMPTY_BIND_DELEGATE;\n this._bindCameraProjectionAndInteractionData = EMPTY_BIND_DELEGATE;\n this._bindRaycastCameraProjectionAndInteractionData = EMPTY_BIND_DELEGATE;\n this._bindLighting = EMPTY_BIND_DELEGATE;\n this._bindMaterial = EMPTY_BIND_DELEGATE;\n // #endregion\n // #region implementation\n this.set = (pass) => {\n throw new Error('Deprecated.');\n };\n this.bind = (pass, ...buffers) => {\n throw new Error('Deprecated.');\n };\n this.draw = (pass, ...buffers) => {\n throw new Error('Deprecated.');\n };\n this.frame = (pass, interactionBuffer, meshBuffer, cameraBuffer, ...lightBuffers) => {\n // set\n pass.setPipeline(this._pipeline);\n try {\n // bind\n this._bindVertex(pass, meshBuffer);\n this._bindWorldTransform(pass, meshBuffer);\n this._bindMaterial(pass, meshBuffer);\n this._bindCameraProjectionAndInteractionData(pass, cameraBuffer, interactionBuffer);\n this._bindLighting(pass, ...lightBuffers);\n // draw\n const mesh = meshBuffer.item, geometry = mesh.geometry;\n pass.draw(geometry.triangleIndices?.length || geometry.positions.length);\n }\n catch (e) {\n console.error('Pacem.Drawing3D.FrameException', e);\n }\n };\n this.raycast = (pass, interactionBuffer, meshBuffer, cameraBuffer) => {\n // set\n pass.setPipeline(this._pickPipeline);\n try {\n // bind\n this._bindVertex(pass, meshBuffer);\n this._bindRaycastWorldTransform(pass, meshBuffer);\n this._bindRaycastCameraProjectionAndInteractionData(pass, cameraBuffer, interactionBuffer);\n this._bindPicker(pass, meshBuffer);\n // draw\n const mesh = meshBuffer.item, geometry = mesh.geometry;\n pass.draw(geometry.triangleIndices.length);\n }\n catch (e) { }\n };\n this._key = _builder.key;\n }\n get context() {\n return this._context;\n }\n get key() {\n return this._key;\n }\n build(pipelineOptions) {\n const options = Utils.extend({}, DefaultPipelineOptions, pipelineOptions ?? {});\n const builder = this._builder, wgsl = builder.build(options.modifiers);\n const ctx = Utils.extend({ pipeline: this }, this._context);\n const device = ctx.device;\n // #region VERTEX\n // build vertex state\n const vertex = {\n module: device.createShaderModule({ code: wgsl.vertex }),\n buffers: options.packedVertices ?\n [\n // packed\n BufferLayouts.createVertex(VERTEX_BUFFER_INDEX_MESH_POSITION, 3, 3, 2),\n ]\n : [\n // position\n BufferLayouts.createVertex(VERTEX_BUFFER_INDEX_MESH_POSITION, 3),\n // normal\n BufferLayouts.createVertex(VERTEX_BUFFER_INDEX_MESH_NORMAL, 3),\n // uv\n BufferLayouts.createVertex(VERTEX_BUFFER_INDEX_MESH_UV, 2)\n ]\n };\n // bind group layouts\n const viewBindGroupLayout = device.createBindGroupLayout({\n entries: [\n // camera matrices\n {\n binding: UNIFORM_BINDING_INDEX_CAMERA,\n visibility: GPUShaderStage.VERTEX | GPUShaderStage.FRAGMENT,\n buffer: {\n type: 'uniform'\n }\n },\n // interaction\n {\n binding: UNIFORM_BINDING_INDEX_INTERACTION,\n visibility: GPUShaderStage.VERTEX | GPUShaderStage.FRAGMENT,\n buffer: {\n type: 'uniform'\n }\n }\n ], label: labelPrefix + 'mesh-view-bind-group-layout'\n });\n const worldBindGroupLayout = device.createBindGroupLayout({\n entries: [\n {\n // world- and normalMatrix entry\n binding: UNIFORM_BINDING_INDEX_TRANSFORM,\n visibility: GPUShaderStage.VERTEX,\n buffer: {\n type: 'uniform'\n }\n }\n ], label: labelPrefix + 'mesh-transforms-bind-group-layout'\n });\n const bindGroupLayouts = [viewBindGroupLayout, worldBindGroupLayout];\n // #endregion\n // #region FRAGMENT\n // TODO: https://stackoverflow.com/questions/50720534/implementing-depth-testing-for-semi-transparent-objects\n // Weighted Blended Order-Independent Transparency https://jcgt.org/published/0002/02/09/\n // a-buffer: https://webgpu.github.io/webgpu-samples/?sample=a-buffer#composite.wgsl\n const fragment = {\n module: device.createShaderModule({\n code: wgsl.fragment\n }), targets: [\n {\n format: ctx.format,\n blend: {\n color: {\n srcFactor: 'src-alpha',\n dstFactor: 'one-minus-src-alpha'\n },\n alpha: {},\n }\n }\n ]\n };\n // material\n // material / material\n const materialGroupIndex = bindGroupLayouts.length;\n const materialBindGroupLayoutDescriptorEntries = [{\n // vertex colors entry\n binding: STORAGE_MATERIAL_INDEX,\n visibility: GPUShaderStage.FRAGMENT,\n buffer: {\n type: 'read-only-storage'\n }\n }];\n // material / texture\n const { mapCount } = wgsl.metadata, hasTex = mapCount > 0;\n if (hasTex) {\n materialBindGroupLayoutDescriptorEntries.push({ visibility: GPUShaderStage.FRAGMENT, binding: SAMPLER_BINDING_INDEX, sampler: {} }, ...Array(mapCount).keys().map(index => { return { visibility: GPUShaderStage.FRAGMENT, binding: SAMPLER_BINDING_INDEX + 1 + index, texture: {} }; }));\n }\n else {\n }\n const materialBindGroupLayoutDescriptor = {\n label: labelPrefix + 'material-bind-group-layout',\n entries: materialBindGroupLayoutDescriptorEntries\n };\n const materialBindGroupLayout = device.createBindGroupLayout(materialBindGroupLayoutDescriptor);\n bindGroupLayouts.push(materialBindGroupLayout);\n // lighting\n const lightingGroupIndex = bindGroupLayouts.length;\n const { lightCount } = wgsl.metadata, hasLighting = lightCount > 0;\n if (hasLighting) {\n const lightingBindGroupLayout = device.createBindGroupLayout({\n entries: [...Array(lightCount).keys()].map((_, index) => {\n return {\n visibility: GPUShaderStage.FRAGMENT, binding: index, buffer: {\n type: 'uniform'\n }\n };\n }),\n label: labelPrefix + 'lighting-bind-group-layout'\n });\n bindGroupLayouts.push(lightingBindGroupLayout);\n }\n // #endregion\n // #region PIPELINE\n // full pipeline descriptor\n const descriptor = {\n label: labelPrefix + 'mesh-render-pipeline',\n vertex,\n fragment,\n // pipeline-layout\n layout: device.createPipelineLayout({\n label: labelPrefix + 'mesh-render-pipeline-layout',\n bindGroupLayouts: (this._bindGroupLayouts = bindGroupLayouts)\n }),\n primitive: options.primitive\n };\n if (options.multisample) {\n descriptor.multisample = { count: 4 };\n descriptor.depthStencil = {\n depthCompare: 'less',\n format: 'depth24plus',\n depthWriteEnabled: true\n };\n }\n this._pipeline = device.createRenderPipeline(descriptor);\n // raycast pipeline descriptor\n const pickFragGroupLayout = this._pickBindGroupLayout = device.createBindGroupLayout({\n label: labelPrefix + 'mesh-colorpick-bind-group-layout',\n entries: [\n {\n visibility: GPUShaderStage.FRAGMENT,\n binding: 0,\n buffer: { type: 'uniform' }\n }\n ]\n });\n const pickDescriptor = {\n label: labelPrefix + 'mesh-colorpick-pipeline',\n vertex,\n fragment: {\n module: device.createShaderModule({\n code: getColorPickingFragmentWgsl(UNIFORM_GROUP_INDEX_COLORPICKING)\n }), targets: [\n { format: 'r32uint' }\n ]\n },\n layout: device.createPipelineLayout({\n label: labelPrefix + 'mesh-colorpick-pipeline-layout',\n bindGroupLayouts: [viewBindGroupLayout, worldBindGroupLayout, pickFragGroupLayout]\n }),\n primitive: options.primitive,\n depthStencil: {\n depthWriteEnabled: true,\n depthCompare: 'less',\n format: 'depth24plus',\n },\n };\n this._pickPipeline = device.createRenderPipeline(pickDescriptor);\n // #endregion\n // vertex buffers\n const bindVertexSplit = (pass, ...buffers) => {\n const meshBuffer = buffers.at(0);\n if (Utils.isNull(meshBuffer)) {\n throw new ReferenceError(`Null ${RenderableBuffers.name} bringing vertex buffers was provided.`);\n }\n const { buffer: positions } = meshBuffer.buffer(ctx, 'geometryPositions');\n const { buffer: normals } = meshBuffer.buffer(ctx, 'geometryNormals');\n const { buffer: uv } = meshBuffer.buffer(ctx, 'geometryTexCoords');\n pass.setVertexBuffer(VERTEX_BUFFER_INDEX_MESH_POSITION, positions);\n pass.setVertexBuffer(VERTEX_BUFFER_INDEX_MESH_NORMAL, normals);\n pass.setVertexBuffer(VERTEX_BUFFER_INDEX_MESH_UV, uv);\n };\n const bindVertexPacked = (pass, ...buffers) => {\n const meshBuffer = buffers.at(0);\n if (Utils.isNull(meshBuffer)) {\n throw new ReferenceError(`Null ${RenderableBuffers.name} bringing vertex buffers was provided.`);\n }\n const { buffer } = meshBuffer.buffer(ctx, 'geometry');\n pass.setVertexBuffer(VERTEX_BUFFER_INDEX_MESH_POSITION, buffer);\n };\n this._bindVertex = options.packedVertices ? bindVertexPacked : bindVertexSplit;\n // world transform\n const bindWorldTransform = (pass, meshBuffer, raycasting) => {\n if (Utils.isNull(meshBuffer)) {\n throw new ReferenceError(`Null ${RenderableBuffers.name} bringing world transform buffer was provided.`);\n }\n const worldTransform = meshBuffer.buffer(ctx, 'objectWorldTransform'), worldTransformBuffer = worldTransform.buffer;\n // writes only if buffer is fresh\n PipelineUtils.writeBufferConditionally(device, worldTransform);\n const { group } = wgsl.bindings(WGSLBindingType.Mesh, 'objectWorldTransform', 0);\n const bindGroup = this._ensureWorldTransformBindGroup(meshBuffer.item, worldTransformBuffer, worldTransform.fresh /*false*/ /* persist the same bindGroup, given the constant size */, group, raycasting);\n pass.setBindGroup(group, bindGroup);\n };\n this._bindWorldTransform = (pass, ...buffers) => {\n const meshBuffer = buffers.at(0);\n bindWorldTransform(pass, meshBuffer, false);\n };\n this._bindRaycastWorldTransform = (pass, ...buffers) => {\n const meshBuffer = buffers.at(0);\n bindWorldTransform(pass, meshBuffer, true);\n };\n // camera matrices and interaction data\n const bindCameraProjectionAndInteractionData = (pass, cameraBuffer, interactionBuffer, raycasting) => {\n if (Utils.isNull(cameraBuffer)) {\n throw new ReferenceError(`Null ${RenderableBuffers.name} bringing view projection buffers was provided.`);\n }\n // camera view\n const viewTransformBuffer = cameraBuffer.buffer(ctx, 'cameraViewTransform'), viewTransformBufferBuffer = viewTransformBuffer.buffer;\n // writes only if buffer is fresh\n PipelineUtils.writeBufferConditionally(device, viewTransformBuffer);\n // interaction\n if (Utils.isNull(interactionBuffer)) {\n throw new ReferenceError(`Null ${RenderableBuffers.name} bringing interaction buffers was provided.`);\n }\n const interactionDataBuffer = interactionBuffer.buffer(ctx, 'interaction'), interactionDataBufferBuffer = interactionDataBuffer.buffer;\n // writes only if buffer is fresh\n PipelineUtils.writeBufferConditionally(device, interactionDataBuffer);\n const { group } = wgsl.bindings(WGSLBindingType.Camera, 'cameraViewTransform', 0);\n const { group: interactionGroup } = wgsl.bindings(WGSLBindingType.Interaction, 'interaction', 0);\n if (group !== interactionGroup) {\n throw new ReferenceError(`Layout bind group mismatch: ${group} vs ${interactionGroup}.`);\n }\n const bindGroup = this._ensureCameraProjectionAndInteractionDataBindGroup(cameraBuffer.item, viewTransformBufferBuffer, interactionDataBufferBuffer, \n // since fresh could mean also \"camera switched\" (e.g. from ortho to perspective and then back to ortho) there's risk\n // to target destroyed buffers, this refresh the bind group if either buffer is fresh.\n // Possibilities for fine-tuning in future.\n viewTransformBuffer.fresh || interactionDataBuffer.fresh, group, raycasting);\n pass.setBindGroup(group, bindGroup);\n };\n this._bindCameraProjectionAndInteractionData = (pass, ...buffers) => {\n const cameraBuffer = buffers.at(0);\n const interactionBuffer = buffers.at(1);\n bindCameraProjectionAndInteractionData(pass, cameraBuffer, interactionBuffer, false);\n };\n this._bindRaycastCameraProjectionAndInteractionData = (pass, ...buffers) => {\n const cameraBuffer = buffers.at(0);\n const interactionBuffer = buffers.at(1);\n bindCameraProjectionAndInteractionData(pass, cameraBuffer, interactionBuffer, true);\n };\n // vertexColors and textures\n this._bindMaterial = (pass, ...buffers) => {\n const meshBuffer = buffers.at(0);\n if (Utils.isNull(meshBuffer)) {\n throw new ReferenceError(`Null ${RenderableBuffers.name} bringing vertex colors was provided.`);\n }\n const vertexColorsBuffer = meshBuffer.buffer(ctx, 'material'), vertexColorsBufferBuffer = vertexColorsBuffer.buffer;\n // writes only if buffer is fresh\n PipelineUtils.writeBufferConditionally(device, vertexColorsBuffer);\n let tex = meshBuffer.texture(ctx);\n const texBmp = tex?.texture;\n const bindGroup = this._ensureMaterialBindGroup(meshBuffer.item, vertexColorsBufferBuffer, texBmp, vertexColorsBuffer.fresh, materialGroupIndex);\n pass.setBindGroup(materialGroupIndex, bindGroup);\n if (hasTex) {\n device.queue.copyExternalImageToTexture({ source: tex.source, flipY: true }, { texture: texBmp }, { width: texBmp.width, height: texBmp.height });\n }\n };\n // lights\n this._bindLighting = (pass, ...buffers) => {\n if (hasLighting) {\n const lightArray = Array.from(buffers);\n const lightBuffers = lightArray.map(l => { return { buffer: l.buffer(ctx, 'light'), id: l.item.key }; });\n const refresh = lightBuffers.some(b => b.buffer.fresh);\n const bindGroup = this._ensureLightingBindGroup(lightBuffers, refresh, lightingGroupIndex);\n for (let lightBuffer of lightBuffers) {\n // writes only if buffer is fresh\n PipelineUtils.writeBufferConditionally(device, lightBuffer.buffer);\n }\n pass.setBindGroup(lightingGroupIndex, bindGroup);\n }\n };\n // picker\n this._bindPicker = (pass, ...buffers) => {\n const meshBuffer = buffers.at(0);\n if (Utils.isNull(meshBuffer)) {\n throw new ReferenceError(`Null ${RenderableBuffers.name} bringing world transform buffer was provided.`);\n }\n const u32id = meshBuffer.buffer(ctx, 'u32id'), u32idBuffer = u32id.buffer;\n // writes only if buffer is fresh\n PipelineUtils.writeBufferConditionally(device, u32id);\n const group = UNIFORM_GROUP_INDEX_COLORPICKING;\n const refresh = u32id.fresh;\n const bindGroup = this._ensureU32idBindGroup(meshBuffer.item, u32idBuffer, refresh /* reuse u32id.fresh*/);\n pass.setBindGroup(group, bindGroup);\n };\n }\n}\nclass LineWGSLBuilder {\n #line;\n #camera;\n #bindgroups = new Map();\n constructor(...objects) {\n this.add(...objects);\n }\n reset() {\n this.#line = null;\n this.#bindgroups.clear();\n }\n add(...objects) {\n for (let obj of objects ?? []) {\n if (isMesh(obj.item)) {\n if (Utils.isNull(this.#line)) {\n this.#line = obj;\n }\n else {\n throw new Error('Line already added.');\n }\n }\n else if (isCamera(obj.item)) {\n this.#camera ??= obj;\n }\n else if (isLight(obj.item)) {\n // ignore\n }\n else {\n throw new Error('Unknown object type.');\n }\n }\n }\n build() {\n const data = this._computeBasicData();\n const key = this.key, vertex = this.vertex(data), fragment = this.fragment(data), bindings = (...args) => LineWGSLBuilder.prototype.bindgroup.apply(this, args);\n return {\n vertex,\n fragment,\n key,\n bindings,\n metadata: { thickness: data.thickness, dashPattern: data.dashPattern }\n };\n }\n get key() {\n const fat = (this.#line?.item).material?.lineWidth > 1;\n return KnownShader.Line + (fat ? '-fat' : '');\n }\n bindgroup(type, key, index) {\n const set = this.#bindgroups;\n const arr = set.get(type);\n if (Utils.isNull(arr)) {\n return null;\n }\n if (Utils.isNullOrEmpty(key)) {\n return arr;\n }\n const filteredArr = arr.filter(i => i.key === key);\n if (isNaN(index)) {\n return filteredArr;\n }\n if (index >= 0 && index < arr.length) {\n return filteredArr[index];\n }\n return filteredArr;\n }\n vertex(data = this._computeBasicData()) {\n return data.thickness > 1 ? getFatLineVertexWgsl() : getDefaultLineVertexWgsl();\n }\n _computeBasicData() {\n const mesh = this.#line.item;\n const shader = Utils.isNull(mesh) ? KnownShader.Line : (mesh.material?.shader ?? KnownShader.Line);\n const material = mesh.material;\n const thickness = material?.lineWidth ?? 1;\n const dashPattern = material?.dashArray;\n return {\n shader,\n thickness, dashPattern,\n };\n }\n _computeBindGroupsAndReferences(data = this._computeBasicData()) {\n const bindgroups = this.#bindgroups;\n // build bindings\n // mesh + material\n const worldTransform = { key: 'objectWorldTransform', group: UNIFORM_GROUP_INDEX_TRANSFORM, binding: UNIFORM_BINDING_INDEX_TRANSFORM, type: 'buffer' };\n const material = { key: 'material', group: STORAGE_GROUP_INDEX_LINE + 1, binding: STORAGE_MATERIAL_INDEX, type: 'buffer' };\n const geometryPositions = { key: 'geometryPositions', group: STORAGE_GROUP_INDEX_LINE, binding: 0, type: 'buffer' };\n const line = { key: 'line', group: STORAGE_GROUP_INDEX_LINE, binding: 1, type: 'buffer' };\n bindgroups.set(WGSLBindingType.Mesh, [worldTransform, material, geometryPositions, line]);\n // camera\n bindgroups.set(WGSLBindingType.Camera, [\n { key: 'cameraViewTransform', group: UNIFORM_GROUP_INDEX_CAMERA, binding: UNIFORM_BINDING_INDEX_CAMERA, type: 'buffer' }\n ]);\n }\n fragment(data = this._computeBasicData()) {\n this._computeBindGroupsAndReferences(data);\n const extra = {\n definitions: [], bindings: [], modifiers: []\n };\n switch (data.shader) {\n case KnownShader.Line:\n return LineMaterial.fragment(extra);\n }\n }\n}\nclass LineRenderPipelineClass {\n #context;\n constructor(context, _lineBuilder, _cache = new RenderPipelineCache()) {\n this._lineBuilder = _lineBuilder;\n this._cache = _cache;\n // #region fields and utils\n this._ensureLineU32idBindGroup = (item, buffer, refresh) => {\n const ctx = this.context;\n return this._cache.ensureBindGroup(ctx, item, [buffer], refresh, this._pickLineBindGroupLayout, labelPrefix + 'line-colorpick-bind-group');\n };\n this._ensureLineMaterialBindGroup = (item, buffer, refresh, layoutIndex = MATERIAL_GROUP_INDEX) => {\n const layout = this._bindLineGroupLayouts[layoutIndex];\n if (layout.label !== (labelPrefix + 'line-material-bind-group-layout')) {\n throw new Error('BindGroupLayout mismatch!');\n }\n const ctx = this.context;\n return this._cache.ensureBindGroup(ctx, item, [buffer], refresh, layout, labelPrefix + 'line-material-bind-group');\n };\n this._ensureLinePositionsBindGroup = (item, buffers, refresh, layoutIndex) => {\n const layout = this._bindLineGroupLayouts[layoutIndex];\n if (layout.label !== (labelPrefix + 'line-positions-bind-group-layout')) {\n throw new Error('BindGroupLayout mismatch!');\n }\n const ctx = this.context;\n return this._cache.ensureBindGroup(ctx, item, buffers, refresh, layout, labelPrefix + 'line-positions-bind-group');\n };\n this._ensureLineWorldTransformBindGroup = (item, buffer, refresh, layoutIndex = UNIFORM_GROUP_INDEX_TRANSFORM, raycasting = false) => {\n const layout = this._bindLineGroupLayouts[layoutIndex];\n if (layout.label !== (labelPrefix + 'line-transforms-bind-group-layout')) {\n throw new Error('BindGroupLayout mismatch!');\n }\n const key = item.key + '-line-' + (raycasting ? 1 : 0);\n const label = `${labelPrefix}${raycasting ? 'colorpick' : ''}-line-transforms-bind-group`;\n const ctx = this.context;\n return this._cache.ensureBindGroup(ctx, key, [buffer], refresh, layout, label);\n };\n this._ensureLineCameraProjectionBindGroup = (item, viewBuffer, refresh, layoutIndex = UNIFORM_GROUP_INDEX_CAMERA, raycasting = false) => {\n const layout = this._bindLineGroupLayouts[layoutIndex];\n const key = item.key + '-line-' + (raycasting ? 1 : 0);\n const label = `${labelPrefix}${raycasting ? 'colorpick' : ''}-line-view-bind-group`;\n const ctx = this.context;\n return this._cache.ensureBindGroup(ctx, key, [viewBuffer], refresh, layout, label);\n };\n this._bindLineGroupLayouts = [];\n this._bindLinePositions = EMPTY_BIND_DELEGATE;\n this._bindLinePicker = EMPTY_BIND_DELEGATE;\n this._bindLineWorldTransform = EMPTY_BIND_DELEGATE;\n this._bindLineRaycastWorldTransform = EMPTY_BIND_DELEGATE;\n this._bindLineCameraProjection = EMPTY_BIND_DELEGATE;\n this._bindLineRaycastCameraProjection = EMPTY_BIND_DELEGATE;\n this._bindLineMaterial = EMPTY_BIND_DELEGATE;\n this._drawLine = EMPTY_BIND_DELEGATE;\n // #endregion\n // #region implementation\n this.set = (pass) => {\n throw new Error('Deprecated.');\n };\n this.bind = (pass, ...buffers) => {\n throw new Error('Deprecated.');\n };\n this.draw = (pass, ...buffers) => {\n throw new Error('Deprecated.');\n };\n this.frame = (pass, meshBuffer, cameraBuffer) => {\n // set\n pass.setPipeline(this._linePipeline);\n try {\n // bind\n this._bindLineWorldTransform(pass, meshBuffer);\n this._bindLineCameraProjection(pass, cameraBuffer);\n this._bindLinePositions(pass, meshBuffer);\n this._bindLineMaterial(pass, meshBuffer);\n // draw\n this._drawLine(pass, meshBuffer);\n }\n catch (e) {\n console.error('Pacem.Drawing3D.FrameException', e);\n }\n };\n this.raycast = (pass, meshBuffer, cameraBuffer) => {\n // set\n pass.setPipeline(this._pickLinePipeline);\n try {\n // bind\n this._bindLineRaycastWorldTransform(pass, meshBuffer);\n this._bindLineRaycastCameraProjection(pass, cameraBuffer);\n this._bindLinePositions(pass, meshBuffer);\n this._bindLinePicker(pass, meshBuffer);\n // draw\n this._drawLine(pass, meshBuffer);\n }\n catch (e) { }\n };\n this.#context = context;\n this._lineKey = _lineBuilder.key;\n }\n get context() {\n return this.#context;\n }\n get key() {\n return this._lineKey;\n }\n build(pipelineOptions) {\n const options = Utils.extend({}, DefaultPipelineOptions, pipelineOptions ?? {});\n const builder = this._lineBuilder, wgsl = builder.build();\n const ctx = Utils.extend({ pipeline: this }, this.#context);\n const device = ctx.device;\n // TODO: switch topology based on this flag\n const fatLines = wgsl.metadata.thickness > 1;\n // #region VERTEX\n // build vertex state\n const vertex = {\n module: device.createShaderModule({ code: wgsl.vertex }),\n buffers: []\n };\n // bind group layouts\n const worldBindGroupLayout = device.createBindGroupLayout({\n entries: [\n {\n // world- and normalMatrix entry\n binding: UNIFORM_BINDING_INDEX_TRANSFORM,\n visibility: GPUShaderStage.VERTEX,\n buffer: {\n type: 'uniform'\n }\n }\n ], label: labelPrefix + 'line-transforms-bind-group-layout'\n });\n const viewBindGroupLayout = device.createBindGroupLayout({\n entries: [\n // camera matrices\n {\n binding: UNIFORM_BINDING_INDEX_CAMERA,\n visibility: GPUShaderStage.VERTEX,\n buffer: {\n type: 'uniform'\n }\n }\n ], label: labelPrefix + 'line-view-bind-group-layout'\n });\n const lineEntries = [\n // positions array\n {\n binding: 0,\n visibility: GPUShaderStage.VERTEX,\n buffer: {\n type: 'read-only-storage'\n }\n }\n ];\n if (fatLines) {\n lineEntries.push(\n // line properties (width, dash-array, lineCap, ...)\n {\n binding: 1,\n visibility: GPUShaderStage.VERTEX,\n buffer: {\n type: 'uniform'\n }\n });\n }\n const lineBindGroupLayout = device.createBindGroupLayout({\n entries: lineEntries, label: labelPrefix + 'line-positions-bind-group-layout'\n });\n const vertexBindGroupLayouts = [worldBindGroupLayout, viewBindGroupLayout, lineBindGroupLayout];\n const raycastLayoutIndex = vertexBindGroupLayouts.length;\n const bindGroupLayouts = vertexBindGroupLayouts.slice();\n // #endregion\n // #region FRAGMENT\n const fragment = {\n module: device.createShaderModule({\n code: wgsl.fragment\n }), targets: [\n {\n format: ctx.format,\n blend: {\n color: {\n srcFactor: 'src-alpha',\n dstFactor: 'one-minus-src-alpha'\n },\n alpha: {},\n }\n }\n ]\n };\n // material\n // material / material\n const materialGroupIndex = bindGroupLayouts.length;\n const materialBindGroupLayoutDescriptorEntries = [{\n // vertex colors entry\n binding: STORAGE_MATERIAL_INDEX,\n visibility: GPUShaderStage.FRAGMENT,\n buffer: {\n type: 'read-only-storage'\n }\n }];\n const materialBindGroupLayoutDescriptor = {\n label: labelPrefix + 'line-material-bind-group-layout',\n entries: materialBindGroupLayoutDescriptorEntries\n };\n const materialBindGroupLayout = device.createBindGroupLayout(materialBindGroupLayoutDescriptor);\n bindGroupLayouts.push(materialBindGroupLayout);\n // #endregion\n // #region PIPELINE\n const topology = fatLines ? options.primitive.topology : 'line-list';\n // full pipeline descriptor\n const descriptor = {\n label: labelPrefix + 'line-render-pipeline',\n vertex,\n fragment,\n // pipeline-layout\n layout: device.createPipelineLayout({\n label: labelPrefix + 'line-render-pipeline-layout',\n bindGroupLayouts: (this._bindLineGroupLayouts = bindGroupLayouts)\n }),\n primitive: Utils.extend({}, options.primitive, { topology }),\n };\n if (options.multisample) {\n descriptor.multisample = { count: 4 };\n descriptor.depthStencil = {\n depthCompare: 'less',\n format: 'depth24plus',\n depthWriteEnabled: true\n };\n }\n this._linePipeline = device.createRenderPipeline(descriptor);\n // raycast pipeline descriptor\n const pickFragGroupLayout = this._pickLineBindGroupLayout = device.createBindGroupLayout({\n label: labelPrefix + 'line-colorpick-bind-group-layout',\n entries: [\n {\n visibility: GPUShaderStage.FRAGMENT,\n binding: 0,\n buffer: { type: 'uniform' }\n }\n ]\n });\n const pickDescriptor = {\n label: labelPrefix + 'line-colorpick-pipeline',\n vertex,\n fragment: {\n module: device.createShaderModule({\n code: getColorPickingFragmentWgsl(raycastLayoutIndex)\n }), targets: [\n { format: 'r32uint' }\n ]\n },\n layout: device.createPipelineLayout({\n label: labelPrefix + 'line-colorpick-pipeline-layout',\n bindGroupLayouts: vertexBindGroupLayouts.concat(pickFragGroupLayout)\n }),\n primitive: Utils.extend({}, options.primitive, { topology }),\n depthStencil: {\n depthWriteEnabled: true,\n depthCompare: 'less',\n format: 'depth24plus',\n },\n };\n this._pickLinePipeline = device.createRenderPipeline(pickDescriptor);\n // #endregion\n // world transform\n const bindLineWorldTransform = (pass, meshBuffer, raycasting) => {\n if (Utils.isNull(meshBuffer)) {\n throw new ReferenceError(`Null ${RenderableBuffers.name} bringing world transform buffer was provided.`);\n }\n const worldTransform = meshBuffer.buffer(ctx, 'objectWorldTransform'), worldTransformBuffer = worldTransform.buffer;\n // writes only if buffer is fresh\n PipelineUtils.writeBufferConditionally(device, worldTransform);\n const { group } = wgsl.bindings(WGSLBindingType.Mesh, 'objectWorldTransform', 0);\n const bindGroup = this._ensureLineWorldTransformBindGroup(meshBuffer.item, worldTransformBuffer, \n /*worldTransform.fresh*/ false /* persist the same bindGroup, given the constant size */, group, raycasting);\n pass.setBindGroup(group, bindGroup);\n };\n this._bindLineWorldTransform = (pass, ...buffers) => {\n const meshBuffer = buffers.at(0);\n bindLineWorldTransform(pass, meshBuffer, false);\n };\n this._bindLineRaycastWorldTransform = (pass, ...buffers) => {\n const meshBuffer = buffers.at(0);\n bindLineWorldTransform(pass, meshBuffer, true);\n };\n // camera matrices\n const bindLineCameraProjection = (pass, cameraBuffer, raycasting) => {\n if (Utils.isNull(cameraBuffer)) {\n throw new ReferenceError(`Null ${RenderableBuffers.name} bringing view projection buffers was provided.`);\n }\n const viewTransformBuffer = cameraBuffer.buffer(ctx, 'cameraViewTransform'), viewTransformBufferBuffer = viewTransformBuffer.buffer;\n // writes only if buffer is fresh\n PipelineUtils.writeBufferConditionally(device, viewTransformBuffer);\n const { group } = wgsl.bindings(WGSLBindingType.Camera, 'cameraViewTransform', 0);\n const bindGroup = this._ensureLineCameraProjectionBindGroup(cameraBuffer.item, viewTransformBufferBuffer, \n /*viewTransformBuffer.fresh*/ false, group, raycasting);\n pass.setBindGroup(group, bindGroup);\n };\n this._bindLineCameraProjection = (pass, ...buffers) => {\n const cameraBuffer = buffers.at(0);\n bindLineCameraProjection(pass, cameraBuffer, false);\n };\n this._bindLineRaycastCameraProjection = (pass, ...buffers) => {\n const cameraBuffer = buffers.at(0);\n bindLineCameraProjection(pass, cameraBuffer, true);\n };\n // positions storage\n this._bindLinePositions = (pass, ...buffers) => {\n const meshBuffer = buffers.at(0);\n if (Utils.isNull(meshBuffer)) {\n throw new ReferenceError(`Null ${RenderableBuffers.name} bringing vertex buffers was provided as index 0.`);\n }\n // storage buffer\n const positionsBuffer = /* should have a storage buffer here */ meshBuffer.buffer(ctx, 'geometryPositions'), positionsBufferBuffer = positionsBuffer.buffer;\n let refresh = positionsBuffer.fresh;\n const buffersInput = [positionsBufferBuffer];\n // writes only if buffer is fresh\n PipelineUtils.writeBufferConditionally(device, positionsBuffer);\n if (fatLines) {\n const lineBuffer = meshBuffer.buffer(ctx, 'line'), lineBufferBuffer = lineBuffer.buffer;\n refresh ||= lineBuffer.fresh;\n buffersInput.push(lineBufferBuffer);\n // writes only if buffer is fresh\n PipelineUtils.writeBufferConditionally(device, lineBuffer);\n }\n const { group: groupIndex } = wgsl.bindings(WGSLBindingType.Mesh, 'line' /* or 'geometryPositions' */, 0);\n const bindGroup = this._ensureLinePositionsBindGroup(meshBuffer.item, buffersInput, refresh, groupIndex);\n pass.setBindGroup(groupIndex, bindGroup);\n };\n // vertexColors\n this._bindLineMaterial = (pass, ...buffers) => {\n const meshBuffer = buffers.at(0);\n if (Utils.isNull(meshBuffer)) {\n throw new ReferenceError(`Null ${RenderableBuffers.name} bringing vertex colors was provided.`);\n }\n const vertexColorsBuffer = meshBuffer.buffer(ctx, 'material'), vertexColorsBufferBuffer = vertexColorsBuffer.buffer;\n // writes only if buffer is fresh\n PipelineUtils.writeBufferConditionally(device, vertexColorsBuffer);\n const bindGroup = this._ensureLineMaterialBindGroup(meshBuffer.item, vertexColorsBufferBuffer, vertexColorsBuffer.fresh, materialGroupIndex);\n pass.setBindGroup(materialGroupIndex, bindGroup);\n };\n // picker\n this._bindLinePicker = (pass, ...buffers) => {\n const meshBuffer = buffers.at(0);\n if (Utils.isNull(meshBuffer)) {\n throw new ReferenceError(`Null ${RenderableBuffers.name} bringing world transform buffer was provided.`);\n }\n const u32id = meshBuffer.buffer(ctx, 'u32id'), u32idBuffer = u32id.buffer, u32idArray = u32id.value;\n // writes only if buffer is fresh\n PipelineUtils.writeBufferConditionally(device, u32id);\n const bindGroup = this._ensureLineU32idBindGroup(meshBuffer.item, u32idBuffer, /* reuse */ false /*u32id.fresh*/);\n pass.setBindGroup(raycastLayoutIndex, bindGroup);\n };\n this._drawLine = (pass, ...buffers) => {\n const meshBuffer = buffers.at(0);\n const mesh = meshBuffer.item, geometry = mesh.geometry /* as NodeGeometry*/;\n if (fatLines) {\n pass.draw(6, geometry.positions.length - 1, 0, 0);\n }\n else {\n pass.draw(geometry.positions.length);\n }\n };\n }\n}\n// #endregion\n","import { Utils } from '@pacem/pacem-core';\nimport { LABEL_PREFIX, GPUTextureUsage, GPUBufferUsage, GPUMapMode } from './constants';\nimport { RenderPipelines } from './pipelinefactory';\n//namespace Pacem.Drawing3D.WebGPU {\nexport class Raycasters {\n // learn from:\n // https://webglfundamentals.org/webgl/lessons/webgl-qna-how-to-get-the-3d-coordinates-of-a-mouse-click.html\n // https://github.com/mrdoob/three.js/blob/master/src/core/Raycaster.js\n // https://shi-yan.github.io/webgpuunleashed/Control/object_picking.html\n // https://gist.github.com/greggman/57c3c0d3cf1db14f1baad2d9b0094397 (color picking)\n static { this._memoizer = new WeakMap(); }\n static dispose(ctx) {\n const memoizer = this._memoizer;\n if (memoizer.has(ctx)) {\n const cache = memoizer.get(ctx);\n for (let raycaster of cache.values()) {\n raycaster.destroy();\n }\n cache.clear();\n memoizer.delete(ctx);\n }\n }\n /** Creates a raycaster that uses color picking as a strategy to hit-test objects. */\n static createColorPicking(ctx) {\n const memoizer = this._memoizer;\n if (!memoizer.has(ctx)) {\n memoizer.set(ctx, new Map());\n }\n const cache = memoizer.get(ctx);\n const key = 'colorpick';\n if (cache.has(key)) {\n return cache.get(key);\n }\n const retval = new ColorPickingRaycaster(ctx);\n cache.set(key, retval);\n return retval;\n }\n}\nconst NUM_PIXELS = 1;\nclass ColorPickingRaycaster {\n constructor(_context) {\n this._context = _context;\n this._objects = new Map();\n this.frame = (interaction, ...buffers) => {\n if (Utils.isNull(this._encoder)) {\n throw new Error('Null encoder. Maybe you missed to call the \\'begin\\' method first.');\n }\n const objects = Array.from(buffers);\n const pipeline = RenderPipelines.createColorPicking(this._context, objects);\n pipeline?.frame(this._pass, interaction, ...buffers);\n for (let buffer of objects) {\n const item = buffer.item;\n if (item.inert) {\n continue;\n }\n //buffer.lock();\n this._objects.set(buffer.id, buffer);\n }\n };\n this.end = (pixel) => {\n if (!Utils.isNull(this._handle)) {\n return this._handle;\n }\n const pass = this._pass;\n const commandEncoder = this._encoder;\n const { device } = this._context;\n const { render } = this._textures;\n const pickTexture = render.texture;\n const pickBuffer = this._ensureBuffer();\n pass.end();\n commandEncoder.copyTextureToBuffer({\n texture: pickTexture,\n // mipLevel: 0,\n origin: {\n x: pixel.x,\n y: pixel.y,\n }\n }, {\n buffer: pickBuffer,\n bytesPerRow: ((NUM_PIXELS * 4 + 255) | 0) * 256,\n rowsPerImage: 1,\n }, {\n width: NUM_PIXELS,\n // height: 1,\n // depth: 1,\n });\n device.queue.submit([commandEncoder.finish()]);\n // remove\n this._encoder = null;\n const _this = this;\n const objects = _this._objects;\n const resetHandle = () => {\n _this._handle = null;\n };\n return this._handle = new Promise((resolve, _) => {\n pickBuffer.mapAsync(GPUMapMode.READ, 0, 4 * NUM_PIXELS).then(_ => {\n const ids = new Uint32Array(pickBuffer.getMappedRange(0, 4 * NUM_PIXELS));\n const id = ids[0];\n pickBuffer.unmap();\n // remove promise reference\n resetHandle();\n const buffer = objects.get(id);\n if (!buffer) {\n resolve([]);\n }\n else {\n resolve([buffer.item]);\n }\n // cleanup\n //pickBuffer.destroy();\n //pickTexture.destroy();\n //objects.values().forEach(b => b.unlock());\n });\n });\n };\n }\n _createTexture(format) {\n const { device, canvas } = this._context;\n const width = Math.min(device.limits.maxTextureDimension2D, canvas.clientWidth), height = Math.min(device.limits.maxTextureDimension2D, canvas.clientHeight);\n return device.createTexture({\n size: [width, height, 1],\n format,\n usage: GPUTextureUsage.COPY_SRC | GPUTextureUsage.RENDER_ATTACHMENT\n });\n }\n _ensureBuffer() {\n const buffer = this._buffer;\n if (!Utils.isNull(buffer)) {\n return buffer;\n }\n const { device } = this._context;\n return this._buffer = device.createBuffer({\n label: LABEL_PREFIX + 'colorpick-output-buffer',\n size: NUM_PIXELS * 4,\n usage: GPUBufferUsage.MAP_READ | GPUBufferUsage.COPY_DST,\n });\n }\n _ensureTextures() {\n const textures = this._textures;\n if (!Utils.isNull(textures)) {\n return textures;\n }\n const renderTex = this._createTexture('r32uint'), depthTex = this._createTexture('depth24plus');\n const render = { texture: renderTex, view: renderTex.createView() };\n const depth = { texture: depthTex, view: depthTex.createView() };\n return this._textures = { render, depth };\n }\n ;\n _destroyTexture(texture) {\n if (Utils.isNull(texture)) {\n return;\n }\n texture.texture?.destroy();\n }\n destroy() {\n const textures = this._textures, buffer = this._buffer;\n if (!Utils.isNullOrEmpty(textures)) {\n const { render, depth } = textures;\n this._destroyTexture(render);\n this._destroyTexture(depth);\n this._textures = null;\n }\n if (!Utils.isNull(buffer)) {\n buffer.destroy();\n this._buffer = null;\n }\n }\n begin() {\n const { device } = this._context;\n this._encoder = device.createCommandEncoder({ label: LABEL_PREFIX + 'colorpick-raycaster' });\n const { render, depth } = this._ensureTextures();\n const passDescriptor = {\n label: LABEL_PREFIX + 'colorpick-raycaster-pass',\n colorAttachments: [\n {\n view: render.view,\n clearValue: { r: 0, g: 0, b: 0, a: 0 },\n loadOp: 'clear',\n storeOp: 'store',\n },\n ],\n depthStencilAttachment: {\n view: depth.view, // Assigned later\n depthClearValue: 1,\n depthLoadOp: 'clear',\n depthStoreOp: 'store',\n },\n };\n this._pass = this._encoder.beginRenderPass(passDescriptor);\n this._objects.clear();\n }\n}\n","import { Utils, P, Logging } from '@pacem/pacem-core';\nimport { Colors } from '@pacem/pacem-foundation';\nimport { Geometry } from '@pacem/pacem-numerical';\nimport { StalePropertyFlag, isMesh, isCamera, isLight, isGroup } from '../../types';\nimport { AdapterUtils } from '../shared';\nimport { LABEL_PREFIX, GPUTextureUsage } from './constants';\nimport { RenderPipelines } from './pipelinefactory';\nimport { Raycasters } from './raycaster';\nimport { RenderableBuffers, RenderLooper, ManagedBuffers } from './renderablebuffer';\n//namespace Pacem.Drawing3D.WebGPU {\nconst Vector3D = Geometry.LinearAlgebra.Vector3D;\nexport var WebGPUIssueCause;\n(function (WebGPUIssueCause) {\n WebGPUIssueCause[WebGPUIssueCause[\"NotSupported\"] = 0] = \"NotSupported\";\n WebGPUIssueCause[WebGPUIssueCause[\"Disabled\"] = 1] = \"Disabled\";\n})(WebGPUIssueCause || (WebGPUIssueCause = {}));\nexport class Renderers {\n static create(stage, config) {\n return new Promise((resolve, reject) => {\n if (!navigator.gpu) {\n const message = \"WebGPU not supported.\";\n const issue = { message, cause: WebGPUIssueCause.NotSupported };\n reject(issue);\n }\n else {\n const retval = new RendererClass(stage);\n retval.init(config).then(_ => resolve(retval), error => {\n const message = typeof error === 'string' ? error : error.message;\n const issue = { message, cause: WebGPUIssueCause.Disabled };\n reject(issue);\n });\n }\n });\n }\n}\nfunction getDefaultCamera(stage) {\n return {\n bottom: -1, top: 1, left: -1, right: 1, near: .1, far: 200, lookAt: Vector3D.from(0, 0, 0), up: Vector3D.j(), position: Vector3D.from(0, 0, 1), type: \"orthographic\",\n flags: [], stage\n };\n}\nfunction destroyTextures(...textures) {\n for (let tex of textures || []) {\n tex?.destroy();\n }\n}\nclass RendererClass {\n #stage;\n #canvas;\n #context;\n #renderables;\n #geometries;\n #materials;\n #looper;\n #textures;\n #config;\n #disabled;\n // interaction buffer\n #interactionBuffer;\n // interaction buffer underlying data\n #interaction;\n constructor(stage) {\n this.#renderables = new WeakMap();\n this.#geometries = new WeakMap();\n this.#materials = new WeakMap();\n this.#config = { enableValidation: false };\n this.#disabled = false;\n this._logError = (evt) => {\n const stage = this.#stage, logger = stage.logger;\n if (!Utils.isNull(logger)) {\n const error = 'error' in evt ? evt.error : evt;\n logger.log(Logging.LogLevel.Error, error.message, 'WebGPU');\n }\n };\n this.#rebuildingContext = true;\n /** Whether the renderer is affected by vertex or fragment modifiers.\n * When true, the renderer must provide updated time, cursor position and canvas size to the pipeline's bind groups.\n */\n this.#hasModifiers = false;\n const wrapper = (this.#stage = stage).stage;\n const canvas = document.createElement('canvas');\n canvas.id = P + '_3d_stage_' + Utils.uniqueCode();\n // cleanup\n wrapper.innerHTML = '';\n wrapper.appendChild(this.#canvas = canvas);\n // interaction stuff\n this.#interactionBuffer = ManagedBuffers.create(this.#interaction = {\n time: performance.now(), cursor: { x: 0, y: 0 }, resolution: { width: 0, height: 0 }\n });\n }\n _buildPassDescriptor({ multisample, format }) {\n const { context, device } = this.#context;\n const canvasTexture = context.getCurrentTexture();\n let textures = this.#textures;\n if (Utils.isNull(textures)) {\n textures = {};\n if (multisample) {\n const renderTex = device.createTexture({\n label: LABEL_PREFIX + 'render-texture',\n format: format ?? canvasTexture.format,\n usage: GPUTextureUsage.RENDER_ATTACHMENT,\n size: [canvasTexture.width, canvasTexture.height],\n sampleCount: 4,\n });\n textures.render = {\n texture: renderTex, view: renderTex.createView({ label: LABEL_PREFIX + 'render-texture-view' })\n };\n const depthTex = device.createTexture({\n label: LABEL_PREFIX + 'depth-texture',\n format: 'depth24plus',\n usage: GPUTextureUsage.RENDER_ATTACHMENT,\n size: [canvasTexture.width, canvasTexture.height],\n sampleCount: 4,\n });\n textures.depth = {\n texture: depthTex, view: depthTex.createView({ label: LABEL_PREFIX + 'depth-texture-view' })\n };\n }\n this.#textures = textures;\n }\n const { transparent, background } = this.#stage;\n const backColor = transparent ? { r: 0, g: 0, b: 0, a: 0 } : background ? (typeof background === 'string' ? Colors.parse(background) : background) : { r: 0, g: 0, b: 0, a: 1 };\n const bgColor = AdapterUtils.flattenVectorArray([backColor]);\n const canvasTexView = canvasTexture.createView({ label: LABEL_PREFIX + 'canvas-texture-view' });\n const colorAttachment = {\n view: canvasTexView,\n clearValue: bgColor,\n loadOp: 'clear',\n storeOp: 'store',\n };\n const passDescriptor = {\n colorAttachments: [colorAttachment]\n };\n if (multisample) {\n const renderTexView = textures.render.view;\n const depthTexView = textures.depth.view;\n passDescriptor.depthStencilAttachment = {\n view: depthTexView,\n depthClearValue: 1,\n depthLoadOp: 'clear',\n depthStoreOp: 'store',\n stencilClearValue: 0,\n stencilReadOnly: true,\n };\n // override\n colorAttachment.view = renderTexView;\n colorAttachment.resolveTarget = canvasTexView;\n }\n return passDescriptor;\n }\n ;\n _buildContext(canvas = this.#canvas, size = this.#stage.size) {\n size ??= canvas;\n let w = size.width;\n let h = size.height;\n const devicePixelRatio = 1; // window.devicePixelRatio;\n canvas.width = w * devicePixelRatio;\n canvas.height = h * devicePixelRatio;\n const context = canvas.getContext('webgpu');\n const textureFormat = navigator.gpu.getPreferredCanvasFormat();\n return { context, textureFormat };\n }\n _buildUpContext(device, adapter, context, format) {\n const { transparent } = this.#stage;\n context.configure({\n alphaMode: transparent ? 'premultiplied' : 'opaque',\n device,\n format,\n });\n this.#context = { device, adapter, canvas: this.#canvas, context, format };\n this.#rebuildingContext = false;\n }\n async init(config) {\n this.#config = config;\n const adapter = await navigator.gpu.requestAdapter();\n if (Utils.isNull(adapter)) {\n throw new Error('WebGPU adapter unavalable or disabled.');\n }\n const device = await adapter.requestDevice();\n if (Utils.isNull(adapter)) {\n throw new Error('WebGPU device unavalable or disabled.');\n }\n device.addEventListener('uncapturederror', this._logError);\n // set flag for shader modifiers presence, this will be used to determine whether to update the interaction buffer on each render call\n this.#hasModifiers = !Utils.isNull(config.modifiers?.version) && !Utils.isNull(config.modifiers)\n && (!Utils.isNull(config.modifiers.vertexInput) || !Utils.isNull(config.modifiers.vertexOutput) || !Utils.isNull(config.modifiers.fragment));\n const { context, textureFormat: format } = this._buildContext();\n this._buildUpContext(device, adapter, context, format);\n }\n #rebuildingContext;\n /** Whether the renderer is affected by vertex or fragment modifiers.\n * When true, the renderer must provide updated time, cursor position and canvas size to the pipeline's bind groups.\n */\n #hasModifiers;\n /**\n * Render procedure.\n */\n render(interaction) {\n if (this.#rebuildingContext || Utils.isNull(this.#looper) || !(this.#canvas.width > 0) || !(this.#canvas.height > 0)) {\n return;\n }\n const context = this.#context, device = context.device, \n // looper\n looper = this.#looper;\n // enable validation scope? (perf hog)\n const validationScope = this.#config?.enableValidation ?? false;\n if (this.#hasModifiers) {\n // update underlying interaction data, this will trigger buffer update\n Utils.extend(this.#interaction, interaction);\n }\n const multisample = true;\n const passDescriptor = this._buildPassDescriptor({ multisample });\n // rendering zone\n const commandEncoder = device.createCommandEncoder({ label: LABEL_PREFIX + 'renderer' });\n const pass = commandEncoder.beginRenderPass(passDescriptor);\n // loop\n looper.loop((mesh, camera, lights) => {\n if (mesh.item.hide) {\n // this code branching is NOT NEEDED ANYMORE,\n // remove it safely\n return false;\n }\n if (validationScope) {\n device.pushErrorScope('validation');\n }\n const renderables = [mesh, camera, ...lights];\n // inject here (pipeline options) any global rendering data (time, cursor, etc.) that may be needed by the shader modifiers\n const pipeline = RenderPipelines.create(context, renderables, { multisample: true, modifiers: this.#config.modifiers });\n // render\n pipeline.frame(pass, this.#interactionBuffer, ...renderables);\n if (validationScope) {\n device.popErrorScope().then(error => {\n if (error) {\n this._logError(error);\n }\n });\n }\n return true;\n });\n pass.end();\n device.queue.submit([commandEncoder.finish()]);\n }\n set disabled(v) {\n this.#disabled = v;\n }\n get disabled() {\n return this.#disabled;\n }\n raycast(pixel) {\n if (this.#rebuildingContext || Utils.isNull(this.#looper)) {\n return Promise.resolve([]);\n }\n const context = this.#context, device = context.device, looper = this.#looper;\n // enable validation scope? (perf hog)\n const validationScope = this.#config?.enableValidation ?? false;\n // rendering zone\n const raycaster = Raycasters.createColorPicking(context);\n raycaster.begin();\n // loop\n looper.loop((mesh, camera) => {\n if (mesh.item.hide) {\n // TODO: remove unwraps and move to nested loops\n // in order to centralize hidden renderable skip logic\n return false;\n }\n if (validationScope) {\n device.pushErrorScope('validation');\n }\n raycaster.frame(this.#interactionBuffer, mesh, camera);\n if (validationScope) {\n device.popErrorScope().then(error => {\n if (error) {\n this._logError(error);\n }\n });\n }\n return true;\n });\n return raycaster.end(pixel);\n }\n _disposeRenderableJustInCase(item) {\n const store = this.#renderables;\n if (store.has(item)) {\n store.get(item)?.destroy();\n store.delete(item);\n }\n }\n _createOrYieldRenderable(item, geometries = this.#geometries, materials = this.#materials) {\n item.stage ??= this.#stage;\n const store = this.#renderables;\n let found = store.get(item);\n if (Utils.isNull(found)) {\n store.set(item, found = RenderableBuffers.create(item, geometries));\n }\n return found;\n }\n _createOrYieldGeometry(item) {\n const store = this.#geometries;\n let found = store.get(item);\n if (Utils.isNull(found)) {\n store.set(item, found = ManagedBuffers.create(item));\n }\n return found;\n }\n _createOrYieldMaterial(item) {\n const store = this.#materials;\n let found = store.get(item);\n if (Utils.isNull(found)) {\n store.set(item, found = ManagedBuffers.create(item));\n }\n return found;\n }\n _unwrapBuffers(grp, accumulator) {\n accumulator ??= { meshes: [], lights: [], cameras: [], groups: [] };\n for (let itemBuffer of grp.children) {\n itemBuffer.item.stage ??= this.#stage;\n if (isMesh(itemBuffer.item)) {\n accumulator.meshes.push(itemBuffer);\n }\n if (isCamera(itemBuffer.item)) {\n accumulator.cameras.push(itemBuffer);\n }\n if (isLight(itemBuffer.item)) {\n accumulator.lights.push(itemBuffer);\n }\n if (isGroup(itemBuffer.item)) {\n accumulator.groups.push(itemBuffer);\n this._unwrapBuffers(itemBuffer, accumulator);\n }\n }\n return accumulator;\n }\n ;\n _update(array) {\n const groupBuffers = [];\n const meshBuffers = [];\n const lightBuffers = [];\n const factory = i => this._createOrYieldRenderable(i);\n let camera;\n for (let item of array) {\n if (item.hide) {\n // remove stored renderable just in case\n this._disposeRenderableJustInCase(item);\n continue;\n }\n // ensure stage\n item.stage ??= this.#stage;\n // groups\n if (isGroup(item)) {\n const g = item;\n if (g.flags.includes(StalePropertyFlag.Children)) {\n this.#renderables.delete(g);\n }\n groupBuffers.push(factory(g));\n }\n // meshes\n if (isMesh(item) && item.geometry) {\n // build pipelines based on provided element wrappers (cached buffers)\n this._createOrYieldGeometry(item.geometry);\n if (!Utils.isNull(item.material)) {\n this._createOrYieldMaterial(item.material);\n }\n meshBuffers.push(factory(item));\n }\n // lights\n if (isLight(item)) {\n lightBuffers.push(factory(item));\n }\n if (isCamera(item)) {\n // pick the first only\n camera ??= item;\n }\n }\n // find first active camera\n camera ??= getDefaultCamera(this.#stage);\n const cameraBuffer = factory(camera);\n let accumulator = {\n meshes: meshBuffers, lights: lightBuffers, cameras: [cameraBuffer], groups: groupBuffers\n };\n for (let groupBuffer of groupBuffers) {\n accumulator = this._unwrapBuffers(groupBuffer, accumulator);\n }\n // destroy leftovers\n this.#looper?.items.meshes.forEach(buffer => {\n if (!meshBuffers.includes(buffer)) {\n buffer.destroy();\n }\n });\n this.#looper = new RenderLooper(accumulator);\n }\n update(...items) {\n this._update(Array.from(items));\n }\n dispose() {\n this.#looper = null;\n if (this._disposeContext()) {\n const { device } = this.#context;\n device.removeEventListener('uncapturederror', this._logError);\n device.destroy;\n }\n }\n _disposeContext() {\n const ctx = this.#context;\n if (Utils.isNull(ctx)) {\n return false;\n }\n // dispose associated raycasters, if any\n Raycasters.dispose(ctx);\n // dispose associated pipelines, if any\n RenderPipelines.dispose(ctx);\n // dispose textures\n const textures = this.#textures;\n this.#textures = null;\n if (!Utils.isNull(textures)) {\n const { render, depth } = textures;\n destroyTextures(render?.texture, depth?.texture);\n }\n // dispose context\n ctx.context.unconfigure();\n return true;\n }\n resize(size) {\n this.#rebuildingContext = true;\n if (this._disposeContext()) {\n const { device, adapter } = this.#context;\n const { context, textureFormat: format } = this._buildContext(this.canvas, size);\n this._buildUpContext(device, adapter, context, format);\n // interaction\n if (this.#hasModifiers) {\n Utils.extend(this.#interaction, { resolution: size });\n }\n }\n }\n get canvas() {\n return this.#canvas;\n }\n}\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElementUtils, CustomElement, P, Watch, PropertyConverters, PropertyChangeEvent, PropertyChangeEventName, Debounce, Utils, Logging, Components } from '@pacem/pacem-core';\nimport { Strings } from '@pacem/pacem-foundation';\nimport { Pacem3DAdapterElement, StalePropertyFlag } from '../../types';\nimport { Renderers, WebGPUIssueCause } from './renderer';\n//namespace Pacem.Components.Drawing3D {\nconst WEBGPU_RAYCAST_CALLBACK_PROP = 'WebGPURaycastCallback';\nconst WEBGPU_RAYCAST_PIXEL_PROP = 'WebGPURaycastPixel';\nconst GETVAL = CustomElementUtils.getAttachedPropertyValue, SETVAL = CustomElementUtils.setAttachedPropertyValue, DELVAL = CustomElementUtils.deleteAttachedPropertyValue;\nlet Pacem3DWgslScriptElement = class Pacem3DWgslScriptElement extends Components.PacemItemElement {\n findContainer() {\n return CustomElementUtils.findAncestor(this, n => n instanceof Pacem3DWebgpuAdapterElement);\n }\n #version = '';\n get version() {\n return this.#version;\n }\n #observer = new MutationObserver(() => {\n this.wgsl = this.textContent;\n });\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this.wgsl = this.textContent;\n this.#observer.observe(this, { characterData: true });\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'wgsl') {\n this._computeVersion(val);\n }\n }\n _computeVersion(wgsl = this.wgsl) {\n Strings.hash(wgsl).then(v => {\n if (v !== this.#version) {\n const old = this.#version;\n const val = v;\n this.#version = val;\n const evt = new PropertyChangeEvent({ propertyName: 'version', oldValue: old, currentValue: val, firstChange: Utils.isNullOrEmpty(old) });\n this.dispatchEvent(evt);\n }\n });\n }\n disconnectedCallback() {\n this.#observer.disconnect();\n super.disconnectedCallback();\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], Pacem3DWgslScriptElement.prototype, \"type\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], Pacem3DWgslScriptElement.prototype, \"wgsl\", void 0);\nPacem3DWgslScriptElement = __decorate([\n CustomElement({ tagName: P + '-3d-wgsl-script' })\n], Pacem3DWgslScriptElement);\nexport { Pacem3DWgslScriptElement };\nlet Pacem3DWebgpuAdapterElement = class Pacem3DWebgpuAdapterElement extends Pacem3DAdapterElement {\n constructor() {\n super(...arguments);\n this.#items = [];\n this._scriptVersionChangeHandler = (evt) => {\n const { propertyName: name } = evt.detail;\n if (name === 'version') {\n this._parseWgslModifiers(evt.detail.currentValue);\n }\n };\n this.#scenes = new Set();\n this.#renderers = new Map();\n this.#supported = true;\n this.#active = true;\n this.#sceneToUpdate = new WeakMap();\n }\n invalidateSize(stage, size = stage.size) {\n const renderer = this._ensureRenderer(stage);\n renderer?.resize(size);\n }\n #items;\n get items() {\n return this.#items;\n }\n register(item) {\n const items = this.#items;\n if (item instanceof Pacem3DWgslScriptElement && !items.includes(item)) {\n item.addEventListener(PropertyChangeEventName, this._scriptVersionChangeHandler, false);\n items.push(item);\n this._parseWgslModifiers(this.modifiers?.version);\n return true;\n }\n return false;\n }\n unregister(item) {\n const items = this.#items;\n const ndx = items.indexOf(item);\n if (ndx >= 0) {\n item.removeEventListener(PropertyChangeEventName, this._scriptVersionChangeHandler, false);\n items.splice(ndx, 1);\n this._parseWgslModifiers(this.modifiers?.version);\n return true;\n }\n return false;\n }\n #scenes;\n #renderers;\n #supported;\n #active;\n get supported() {\n return this.#supported;\n }\n get active() {\n return this.#active;\n }\n _webGPUNotSupported(issue) {\n if (this.#supported && issue.cause === WebGPUIssueCause.NotSupported) {\n this.#supported = false;\n this.dispatchEvent(new PropertyChangeEvent({ propertyName: 'supported', oldValue: null, currentValue: false }));\n }\n if (this.#active) {\n this.#active = false;\n this.dispatchEvent(new PropertyChangeEvent({ propertyName: 'active', oldValue: null, currentValue: false }));\n }\n }\n initialize(scene) {\n const set = this.#renderers;\n const scenes = this.#scenes;\n if (!scenes.has(scene)) {\n scenes.add(scene);\n }\n return Renderers.create(scene, { enableValidation: this.enableValidation ?? false, modifiers: this.modifiers })\n .then(renderer => {\n set.get(scene)?.update( /* empty */);\n // update dictionary with the actual renderer\n set.set(scene, renderer);\n // assign datasource immediately\n this._updatePipeline(scene);\n return renderer.canvas;\n }, (issue) => {\n this.log(Logging.LogLevel.Error, issue.message);\n this._webGPUNotSupported(issue);\n return null;\n });\n }\n _parseWgslModifiers(val) {\n const scripts = this.#items, vertexGeometryScript = scripts.find(a => a.type == 'vertex-input'), vertexOutputScript = scripts.find(a => a.type == 'vertex-output'), fragmentScript = scripts.find(a => a.type == 'fragment');\n const vertexInput = vertexGeometryScript?.wgsl, vertexOutput = vertexOutputScript?.wgsl, fragment = fragmentScript?.wgsl;\n this.modifiers = { vertexInput, vertexOutput, fragment, version: val };\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (first) {\n return;\n }\n switch (name) {\n case 'modifiers':\n case 'enableValidation':\n // reinitialize\n this._reinitialize();\n break;\n }\n }\n disconnectedCallback() {\n const set = this.#renderers;\n for (let [_, renderer] of set) {\n renderer?.dispose();\n }\n set.clear();\n this.#scenes.clear();\n super.disconnectedCallback();\n }\n dispose(scene) {\n const renderers = this.#renderers, scenes = this.#scenes;\n ;\n if (renderers.has(scene)) {\n renderers.get(scene)?.dispose();\n renderers.delete(scene);\n }\n if (scenes.has(scene)) {\n scenes.delete(scene);\n }\n }\n _reinitialize() {\n for (let scene of this.#scenes.values()) {\n // rebuild renderer with new config in association to scene\n this.initialize(scene);\n }\n }\n _ensureRenderer(scene) {\n const set = this.#renderers;\n return set.get(scene);\n }\n _updatePipeline(scene) {\n const renderer = this._ensureRenderer(scene);\n renderer?.update(...scene.datasource);\n }\n #sceneToUpdate;\n /**\n * Called when scene datasource changes.\n * @param scene\n */\n render(scene) {\n // do not render hidden stages\n const width = scene.size?.width, height = scene.size?.height;\n if (!(width > 0) || !(height > 0)) {\n return;\n }\n // retrieve stage renderer\n const renderer = this._ensureRenderer(scene);\n if (Utils.isNull(renderer)) {\n return;\n }\n if (this.#sceneToUpdate.has(scene)) {\n this.#sceneToUpdate.delete(scene);\n this._itemsChangedExec(scene);\n }\n // draw\n const pixel = GETVAL(scene, WEBGPU_RAYCAST_PIXEL_PROP);\n renderer.render({ cursor: pixel, time: performance.now(), resolution: { width, height } });\n // raycast, just in case\n if (!scene.interactive) {\n return;\n }\n const callback = GETVAL(scene, WEBGPU_RAYCAST_CALLBACK_PROP);\n if (Utils.isNullOrEmpty(callback)) {\n return;\n }\n if (Utils.isNullOrEmpty(pixel)) {\n callback(null);\n return;\n }\n // draw again\n renderer.raycast(pixel).then(array => {\n if (Utils.isNullOrEmpty(array)) {\n callback(null);\n }\n else {\n const retval = {\n object: array[0], point: null\n };\n callback(retval);\n }\n });\n }\n snapshot(scene, background, type, quality) {\n const renderers = this.#renderers;\n if (!renderers.has(scene)) {\n return Promise.resolve(null);\n }\n const { canvas } = renderers.get(scene);\n const jpeg = !Utils.isNullOrEmpty(background), mime = type ?? (jpeg ? 'image/jpeg' : null), compression = quality ?? (jpeg ? .9 : null);\n return new Promise((resolve, _) => {\n this.render(scene);\n Utils.snapshotElement(canvas, background, mime, compression).then(resolve);\n });\n }\n raycast(stage, point, size, callback) {\n SETVAL(stage, WEBGPU_RAYCAST_CALLBACK_PROP, callback);\n if (point.x < 0 || point.y < 0 || point.x >= size.width || point.y >= size.height) {\n DELVAL(stage, WEBGPU_RAYCAST_PIXEL_PROP);\n }\n else {\n SETVAL(stage, WEBGPU_RAYCAST_PIXEL_PROP, point);\n }\n }\n _itemsChangedExec(stage) {\n this._updatePipeline(stage);\n }\n _itemsChanged(stage, _) {\n this.#sceneToUpdate.set(stage, true);\n }\n addItem(stage, item) {\n this._itemsChanged(stage, item);\n }\n removeItem(stage, item) {\n this._itemsChanged(stage, item);\n }\n updateItem(stage, item) {\n // if 'hide' property has changed or 'children' property (for groups)\n // then there's need to regenerate the tree view (camera switch, more/less meshes, ...)\n if (Utils.isNull(item)\n || item.flags.indexOf(StalePropertyFlag.Visibility) >= 0\n || item.flags.indexOf(StalePropertyFlag.Children) >= 0) {\n this._itemsChanged(stage, item);\n }\n }\n zoomFit(stage, ...items) {\n // TODO: implement on the renderer side\n return Promise.resolve();\n }\n project(stage, point3D) {\n // TODO: implement on the renderer side\n return { x: 0, y: 0 };\n }\n getScene(stage) {\n // no 3rd-party/proprietary scene objects to provide.\n return stage;\n }\n};\n__decorate([\n Debounce(100)\n], Pacem3DWebgpuAdapterElement.prototype, \"_parseWgslModifiers\", null);\n__decorate([\n Watch({ emit: false })\n], Pacem3DWebgpuAdapterElement.prototype, \"modifiers\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], Pacem3DWebgpuAdapterElement.prototype, \"enableValidation\", void 0);\nPacem3DWebgpuAdapterElement = __decorate([\n CustomElement({ tagName: P + '-3d-webgpu-adapter' })\n], Pacem3DWebgpuAdapterElement);\nexport { Pacem3DWebgpuAdapterElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, P, Watch, PropertyConverters, Utils, CustomEventUtils, avoidHandler, Behaviors, PropertyChangeEventName } from '@pacem/pacem-core';\nimport { Geometry } from '@pacem/pacem-numerical';\nimport { isCamera, StalePropertyFlag } from '../../../types';\nimport { TAG_MIDDLE_NAME } from '../../../constants';\nimport { BooleanOrNumberConverter } from '../../../converters';\n//namespace Pacem.Components.Drawing3D {\nconst Vector3D = Geometry.LinearAlgebra.Vector3D;\nconst Matrix3D = Geometry.LinearAlgebra.Matrix3D;\nconst Quaternion = Geometry.LinearAlgebra.Quaternion;\nconst Spherical = Geometry.LinearAlgebra.Spherical;\nfunction findCameraStage(element) {\n if (isCamera(element)) {\n return element.stage;\n }\n return null;\n}\nconst ROTATION_FACTOR = 1, ZOOM_FACTOR = 1, FRICTION_FACTOR = .05, EPSILON = 0.001;\nconst DEFAULT_CONFIGURATION = {\n maxAzimuth: 180, minAzimuth: -180, inertia: false, maxPolar: Infinity, minPolar: -Infinity,\n zoom: { enabled: true }, pan: { enabled: true, button: 2 }, rotation: { enabled: true, button: 0 }\n};\nexport class OrbitCameraBehavior {\n constructor(item, _config) {\n this._config = _config;\n /** State of the current configuration, obtained from the interaction inputs. */\n this._input = {\n /** Zoom/scale */\n rho: 0,\n /** Azimuth (rotation around x axis in webgpu) */\n theta: 0,\n /** Polar (rotation around y axis in webgpu) */\n phi: 0,\n /** pan/offset x*/\n x: 0,\n /** pan/offset y*/\n y: 0,\n };\n /** Sibling state of {@link _input} that comes helpful when inertia is involved. */\n this._progress = {\n rho: 0,\n theta: 0,\n phi: 0,\n x: 0,\n y: 0,\n };\n this._startHandler = (evt) => {\n const { rotation, pan } = this._config;\n const isMouse = evt.pointerType === 'mouse';\n const rotating = rotation.enabled && isMouse && evt.button === rotation.button && CustomEventUtils.matchModifiers(evt, rotation.modifiers);\n const panning = pan.enabled && isMouse && evt.button === pan.button && CustomEventUtils.matchModifiers(evt, pan.modifiers);\n if (!rotating && !panning) {\n return;\n }\n this.#rotating = rotating;\n if (this.#panning = panning) {\n // build current state from the current camera configuration\n this._currentState = OrbitCameraBehavior._buildState(this._camera);\n // reset pan offsets\n Utils.extend(this._input, Vector3D.zero());\n this._progress.x = this._progress.y = 0;\n }\n avoidHandler(evt);\n window.addEventListener('pointerup', this._endHandler, false);\n window.addEventListener('pointermove', this._moveHandler, false);\n window.addEventListener('contextmenu', this._avoidHandler, false);\n };\n this._avoidHandler = (evt) => avoidHandler(evt);\n this._endHandler = (evt) => {\n avoidHandler(evt);\n // delay the listener removals a bit (~frame)\n window.setTimeout(() => {\n window.removeEventListener('pointerup', this._endHandler);\n window.removeEventListener('pointermove', this._moveHandler);\n window.removeEventListener('contextmenu', this._avoidHandler);\n }, 20);\n };\n this._zoomHandler = (evt) => {\n const { zoom } = this._config;\n const zooming = zoom.enabled && CustomEventUtils.matchModifiers(evt, zoom.modifiers);\n if (!zooming) {\n return;\n }\n avoidHandler(evt);\n const coords = this._input;\n coords.rho -= Math.sign(evt.deltaY);\n };\n this._moveHandler = (evt) => {\n avoidHandler(evt);\n const { height, width } = this._scene.size;\n const coords = this._input;\n const size = Math.min(height, width);\n if (this.#rotating) {\n // rotation\n const f0 = -ROTATION_FACTOR * 360 / size;\n const { phi, theta } = coords;\n const { maxPolar, minPolar, maxAzimuth, minAzimuth } = this._config;\n coords.phi = (phi + evt.movementX * f0).clamp(minPolar, maxPolar);\n coords.theta = (theta + evt.movementY * f0).clamp(minAzimuth, maxAzimuth);\n }\n else if (this.#panning) {\n // pan\n const f0 = this._currentState.radius / size;\n coords.x += -evt.movementX * f0;\n coords.y += evt.movementY * f0;\n }\n };\n this._renderHandler = (_) => {\n this._update();\n };\n const scene = this._scene = (this._camera = item).stage;\n this._initialState = this._currentState = OrbitCameraBehavior._buildState(item);\n const canvas = this._canvas = scene.stage;\n canvas.addEventListener('pointerdown', this._startHandler, false);\n canvas.addEventListener('wheel', this._zoomHandler, { passive: false });\n scene.addEventListener('render', this._renderHandler, false);\n }\n static _buildState(camera) {\n const vector = Vector3D.subtract(camera.position, camera.lookAt);\n const radius = Vector3D.mag(vector);\n return { target: camera.lookAt, versor: Vector3D.unit(vector), up: camera.up, radius, position: camera.position };\n }\n /**\n * Tries to attach a new {@link OrbitCameraBehavior} to the provided element, if the element is a proper renderable and it is ready.\n * @param element\n * @returns\n */\n static tryAttach(element, config) {\n config ??= DEFAULT_CONFIGURATION;\n const canvas = findCameraStage(element)?.stage;\n if (!Utils.isNull(canvas)) {\n const { position, lookAt } = element;\n if (Utils.isNull(position) || Utils.isNull(lookAt) || Vector3D.areClose(position, lookAt)) {\n return null;\n }\n return new OrbitCameraBehavior(element, config);\n }\n else {\n return null;\n }\n }\n get configuration() {\n return this._config;\n }\n set configuration(v) {\n this._config = v;\n }\n #panning;\n #rotating;\n _getSafeAzimuth({ theta }) {\n return OrbitCameraBehavior._modAngle(theta);\n }\n _getSafePolar({ phi }) {\n return OrbitCameraBehavior._modAngle(phi);\n }\n static _modAngle(deg) {\n while (deg < 0) {\n deg += 360;\n }\n return deg % 360;\n }\n static _getViewXYZ(state) {\n const { versor, up: initUp } = state;\n const right = Vector3D.cross(versor, initUp);\n const up = Vector3D.cross(right, versor);\n Vector3D.normalize(right);\n Vector3D.normalize(up);\n return { right, up, versor };\n }\n #updating;\n _update() {\n if (this.#updating) {\n return;\n }\n this.#updating = true;\n const camera = this._camera;\n const { radius, versor, target: initTarget, up: initUp } = this._initialState;\n const { target: trackedLookAt } = this._currentState;\n const { theta, phi, rho, x, y } = this._input;\n const progress = this._progress;\n const { theta: theta_, phi: phi_, rho: rho_, x: x_, y: y_ } = progress;\n const rotated = Math.abs(phi_ - phi) > EPSILON || Math.abs(theta_ - theta) > EPSILON, zoomed = Math.abs(rho_ - rho) > EPSILON, panned = Math.abs(x - x_) > EPSILON || Math.abs(y - y_) > EPSILON;\n if (zoomed || rotated || panned) {\n const inertia = typeof this._config.inertia === 'boolean' ? (this._config.inertia ? FRICTION_FACTOR : 0) : this._config.inertia;\n const inertiaSpecified = inertia > 0 && inertia < 1;\n const { right, up } = OrbitCameraBehavior._getViewXYZ(this._initialState);\n // setup position\n let newPosition = initTarget;\n let newUp = initUp;\n let newLookAt = trackedLookAt;\n //if (zoomed) { 2\n let rho0 = rho_;\n if (inertiaSpecified) {\n rho0 += (rho - rho_) * inertia;\n }\n else {\n rho0 = rho;\n }\n progress.rho = rho0;\n const scale = Math.pow(.95, rho0 * ZOOM_FACTOR);\n const zoom = Vector3D.scale(versor, -scale * radius);\n newPosition = Vector3D.add(newPosition, zoom);\n //}\n //if (rotated) { 3\n let phi0 = phi_;\n let theta0 = theta_;\n if (inertiaSpecified) {\n phi0 += (phi - phi_) * inertia;\n theta0 += (theta - theta_) * inertia;\n }\n else {\n phi0 = phi;\n theta0 = theta;\n }\n const PHI = this._getSafePolar({ phi: progress.phi = phi0 });\n const THETA = this._getSafeAzimuth({ theta: progress.theta = theta0 });\n // pivot of the rotation matrix should be the center of the bounding sphere\n const pivot = Vector3D.negate(initTarget);\n let m = Matrix3D.translate(Matrix3D.identity(), pivot);\n const qy = Quaternion.fromAxisAngle(up, PHI);\n const qx = Quaternion.fromAxisAngle(right, THETA);\n const rot = Matrix3D.multiply(Quaternion.toRotationMatrix(qx), Quaternion.toRotationMatrix(qy));\n m = Matrix3D.multiply(m, rot);\n m = Matrix3D.translate(m, Vector3D.negate(pivot));\n newPosition = Matrix3D.transform(newPosition, m);\n newUp = Matrix3D.transform(newUp, Matrix3D.clone(m, m0 => { m0.offsetX = m0.offsetY = m0.offsetZ = 0; }));\n //}\n //if (panned){ 1\n const x1 = x_, y1 = y_;\n let x0 = x1, y0 = y1;\n if (inertiaSpecified) {\n x0 += (x - x1) * inertia;\n y0 += (y - y1) * inertia;\n }\n else {\n x0 = x;\n y0 = y;\n }\n progress.x = x0;\n progress.y = y0;\n const { right: currentRight, up: currentUp } = OrbitCameraBehavior._getViewXYZ(this._currentState);\n const r = Vector3D.scale(currentRight, x0), u = Vector3D.scale(currentUp, y0);\n const offset = Vector3D.add(r, u);\n newLookAt = Vector3D.add(trackedLookAt, offset);\n camera.lookAt = newLookAt;\n camera.position = newPosition; // Vector3D.add(newPosition, Vector3D.subtract(initTarget, newLookAt));\n camera.up = newUp;\n // notify something has changed about the target renderable\n camera.flags.push(StalePropertyFlag.Camera);\n }\n this.#updating = false;\n }\n /** Detaches and removes handlers and resources. */\n dispose() {\n const canvas = this._canvas, scene = this._scene;\n if (!Utils.isNull(canvas)) {\n canvas.removeEventListener('pointerdown', this._startHandler);\n canvas.removeEventListener('wheel', this._zoomHandler);\n }\n scene.removeEventListener('render', this._renderHandler, false);\n }\n}\nlet PacemOrbitCameraBehaviorElement = class PacemOrbitCameraBehaviorElement extends Behaviors.PacemBehavior {\n constructor() {\n super(...arguments);\n this.#map = new Map();\n this._readyHandler = (evt) => {\n if (evt.detail.propertyName === 'isReady' && evt.detail.currentValue === true) {\n const element = evt.currentTarget;\n element.removeEventListener(PropertyChangeEventName, this._readyHandler);\n this._decorateCore(element);\n }\n };\n }\n #map;\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'maxAzimuth':\n case 'minAzimuth':\n case 'inertia':\n case 'zoomControl':\n case 'panControl':\n case 'rotationControl':\n const config = this._buildConfig();\n const items = this.#map;\n for (let tr of items.values()) {\n tr.configuration = config;\n }\n break;\n }\n }\n disconnectedCallback() {\n const items = this.#map;\n for (let tr of items.values()) {\n tr.dispose();\n }\n items.clear();\n super.disconnectedCallback();\n }\n _buildConfig() {\n return Utils.extend({}, DEFAULT_CONFIGURATION, {\n maxAzimuth: this.maxAzimuth ?? Infinity,\n minAzimuth: this.minAzimuth ?? -Infinity,\n minPolar: this.minPolar ?? -Infinity,\n maxPolar: this.maxPolar ?? Infinity,\n inertia: this.inertia ?? false,\n zoom: this.zoomControl ?? DEFAULT_CONFIGURATION.zoom,\n pan: this.panControl ?? DEFAULT_CONFIGURATION.pan,\n rotation: this.rotationControl ?? DEFAULT_CONFIGURATION.rotation,\n });\n }\n _decorateCore(element) {\n const behavior = OrbitCameraBehavior.tryAttach(element, this._buildConfig());\n if (!Utils.isNull(behavior)) {\n this.#map.set(element, behavior);\n }\n }\n decorate(element) {\n if (element.isConnected) {\n this._decorateCore(element);\n }\n else {\n element.addEventListener(PropertyChangeEventName, this._readyHandler, false);\n }\n }\n undecorate(element) {\n const map = this.#map;\n if (map.has(element)) {\n map.get(element).dispose();\n map.delete(element);\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemOrbitCameraBehaviorElement.prototype, \"maxAzimuth\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemOrbitCameraBehaviorElement.prototype, \"maxPolar\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemOrbitCameraBehaviorElement.prototype, \"minAzimuth\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemOrbitCameraBehaviorElement.prototype, \"minPolar\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemOrbitCameraBehaviorElement.prototype, \"zoomControl\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemOrbitCameraBehaviorElement.prototype, \"rotationControl\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemOrbitCameraBehaviorElement.prototype, \"panControl\", void 0);\n__decorate([\n Watch({ emit: false, converter: BooleanOrNumberConverter })\n], PacemOrbitCameraBehaviorElement.prototype, \"inertia\", void 0);\nPacemOrbitCameraBehaviorElement = __decorate([\n CustomElement({ tagName: P + '-' + TAG_MIDDLE_NAME + '-orbit-camera' })\n], PacemOrbitCameraBehaviorElement);\nexport { PacemOrbitCameraBehaviorElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Transformer } from '@pacem/pacem-core';\nimport { Point } from '@pacem/pacem-foundation';\nimport { MeshGeometry } from '../geometry';\nimport { Point3DConverter } from '../converters';\n//namespace Pacem.Drawing3D {\nclass OBJParser {\n static parse(content) {\n // vertices\n const vertices = [];\n const vParser = /^v((\\s+-?[\\d\\.]+){3})/gm;\n let arr = vParser.exec(content);\n while (arr && arr.length) {\n vertices.push(Point3DConverter.convert(arr[1]));\n arr = vParser.exec(content);\n }\n // uvmap\n const vt = [];\n const tParser = /^vt((\\s+-?[\\d\\.]+){2})/gm;\n arr = tParser.exec(content);\n while (arr && arr.length) {\n vt.push(Point.parse(arr[1]));\n arr = tParser.exec(content);\n }\n // normals\n const vn = [];\n const nParser = /^vn((\\s+-?[\\d\\.]+){3})/gm;\n arr = nParser.exec(content);\n while (arr && arr.length) {\n vn.push(Point3DConverter.convert(arr[1]));\n arr = nParser.exec(content);\n }\n const normals = [];\n const uv = [];\n const positions = [];\n const fParser = /^f((\\s+([\\d]+\\/[\\d]+\\/[\\d]+)){3,})/gm;\n arr = fParser.exec(content);\n while (arr && arr.length) {\n const fjParser = /([\\d]+)\\/([\\d]+)\\/([\\d]+)/g;\n const face = arr[1];\n let jArr = fjParser.exec(face);\n let jIndex = 0;\n var vIndex0, tIndex0, nIndex0;\n var vIndex, tIndex, nIndex;\n while (jArr && jArr.length) {\n if (jIndex > 2) {\n // 4+ vertex-face\n // but mesh only allows triangluar faces\n // re-add(0)\n positions.push(vIndex0);\n uv.push(vt[tIndex0]);\n normals.push(vn[nIndex0]);\n // re-add(last)\n positions.push(vIndex);\n uv.push(vt[tIndex]);\n normals.push(vn[nIndex]);\n }\n // OBJ indexes are 1-based\n vIndex = parseInt(jArr[1]) - 1;\n tIndex = parseInt(jArr[2]) - 1;\n nIndex = parseInt(jArr[3]) - 1;\n positions.push(vIndex);\n uv.push(vt[tIndex]);\n normals.push(vn[nIndex]);\n if (jIndex === 0) {\n vIndex0 = vIndex;\n tIndex0 = tIndex;\n nIndex0 = nIndex;\n }\n jIndex++;\n jArr = fjParser.exec(face);\n }\n // loop\n arr = fParser.exec(content);\n }\n // faces\n return new MeshGeometry(vertices, positions, uv, normals);\n }\n}\nclass Parser3D {\n static parseGeometry(content, type) {\n switch (type.toLowerCase()) {\n case 'obj':\n return OBJParser.parse(content);\n default:\n throw new Error(`Type '${type}' is not supported.`);\n }\n }\n}\n__decorate([\n Transformer('parse3D')\n], Parser3D, \"parseGeometry\", null);\n","import { DeepMerger } from '@pacem/pacem-foundation';\nimport * as Output from './index';\nDeepMerger.merge(Output);\n"],"names":["Geometry","parseAsNumericalArray","Utils","__decorate","this","Components","PropertyChangeEventName","Logging","UI","Animations","ViewChild","PCSS","P","Watch","PropertyConverters","CustomElement","Defaults","CustomUIEvent","CustomElementUtils","PropertyChangeEvent","PacemEventTarget","Imaging","Point","CustomEventUtils","Colors","adaptWGSLStringArray","adaptWGSLModifierStringArray","Vector3D","Matrix3D","Strings","Debounce","avoidHandler","Behaviors","Transformer","DeepMerger"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pacem-3d.js","sources":["../esm/converters.js","../esm/constants.js","../esm/stage.js","../esm/types.js","../esm/detector.js","../esm/materials/material.js","../esm/materials/basic.js","../esm/materials/lambert.js","../esm/materials/line.js","../esm/materials/phong.js","../esm/materials/standard.js","../esm/primitives/primitive.js","../esm/decorators.js","../esm/geometry.js","../esm/primitives/box.js","../esm/primitives/cone.js","../esm/primitives/cylinder.js","../esm/primitives/line.js","../esm/primitives/plane.js","../esm/primitives/polyhedra.js","../esm/primitives/sphere.js","../esm/primitives/torus.js","../esm/adapters/shared.js","../esm/adapters/threejsadapter.js","../esm/adapters/webgpu/constants.js","../esm/adapters/webgpu/abstractions.js","../esm/adapters/webgpu/buffers.js","../esm/adapters/webgpu/wgsl/basic-material-fragment.js","../esm/adapters/webgpu/wgsl/line-material-fragment.js","../esm/adapters/webgpu/materials.js","../esm/adapters/webgpu/wgsl/shared.js","../esm/adapters/webgpu/wgsl/mesh-vertex.js","../esm/adapters/webgpu/wgsl/line-vertex.js","../esm/adapters/webgpu/wgsl/object-picking-fragment.js","../esm/adapters/webgpu/wgsl/texture-fragment.js","../esm/adapters/webgpu/wgsl/directional-light-fragment.js","../esm/adapters/webgpu/wgsl/omni-light-fragment.js","../esm/adapters/webgpu/wgsl/ambient-light-fragment.js","../esm/adapters/webgpu/cameras.js","../esm/adapters/webgpu/renderablebuffer.js","../esm/adapters/webgpu/pipelinefactory.js","../esm/adapters/webgpu/raycaster.js","../esm/adapters/webgpu/renderer.js","../esm/adapters/webgpu/webgpuadapter.js","../esm/adapters/webgpu/behaviors/orbit-camera.js","../esm/parsers/parser.js","../esm/index-iife.js"],"sourcesContent":["import { Utils } from '@pacem/pacem-core';\nimport { parseAsNumericalArray } from '@pacem/pacem-foundation';\nimport { Geometry } from '@pacem/pacem-numerical';\n//namespace Pacem.Drawing3D {\nexport const Point3DConverter = {\n convert: (attr) => Geometry.LinearAlgebra.Vector3D.parse(attr),\n convertBack: (prop) => `${prop.x || 0} ${prop.y || 0} ${prop.z || 0}`\n};\nexport const Point3DOrNumberConverter = {\n convert: (attr) => {\n const arr = parseAsNumericalArray(attr);\n const throwErr = () => { throw new Error(`Cannot parse \"${attr}\" as a valid Vector3D.`); };\n if (Utils.isNullOrEmpty(arr)) {\n throwErr();\n }\n if (arr.length === 3) {\n return Geometry.LinearAlgebra.Vector3D.from(...arr);\n }\n if (arr.length === 1) {\n const v = arr[0];\n return Geometry.LinearAlgebra.Vector3D.from(v, v, v);\n }\n throwErr();\n },\n convertBack: (prop) => `${prop.x || 0} ${prop.y || 0} ${prop.z || 0}`\n};\nexport const QuaternionConverter = {\n convert: (attr) => Geometry.LinearAlgebra.Quaternion.parse(attr),\n convertBack: (prop) => `${prop.x || 0} ${prop.y || 0} ${prop.z || 0} ${prop.w || 0}`\n};\nexport const BooleanOrNumberConverter = {\n convert: (attr) => {\n if (attr === 'true')\n return true;\n if (attr === 'false')\n return false;\n return parseAsNumericalArray(attr)[0];\n },\n convertBack: (prop) => prop.toString()\n};\n","export const TAG_MIDDLE_NAME = \"3d\";\nexport const DEG2RAD = Math.PI / 180;\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, P, PCSS, Defaults, ViewChild, Watch, PropertyConverters, Utils, Components, PropertyChangeEventName, Logging, Animations, UI } from '@pacem/pacem-core';\nimport { RenderableEvent, DragEvent, RenderableElement } from './types';\nimport { TAG_MIDDLE_NAME } from './constants';\n//namespace Pacem.Components.Drawing3D {\nlet Pacem3DElement = class Pacem3DElement extends Components.PacemItemsContainerElement {\n constructor() {\n super(...arguments);\n this._itemPropertyChangeHandler = (evt) => {\n const renderable = evt.target;\n // clear flags\n // TODO: be more precise\n this.adapter &&\n this.adapter.updateItem(this, renderable);\n renderable.flags.splice(0);\n };\n this._clickHandler = (evt) => {\n let me = this;\n if (!me.interactive || Utils.isNull(me._lastHitResult)) {\n return;\n }\n const type = evt.type.replace(/^mouse/, '');\n const hit = me._lastHitResult, object = hit.object, point = hit.point;\n this._itemDispatch(object, point, type, evt);\n };\n this._hitTestCallback = (result, evt) => {\n const me = this;\n // TODO: handle dragging\n if (result != me._lastHitResult) {\n if (result?.object != me._lastHitResult?.object) {\n const obj = result?.object, last = me._lastHitResult?.object, pt = result?.point;\n if (!Utils.isNull(last)) {\n this._itemDispatch(last, pt, 'out', evt);\n }\n if (!Utils.isNull(obj)) {\n this._itemDispatch(obj, pt, 'over', evt);\n }\n }\n me._lastHitResult = result;\n }\n };\n this._moveHandler = (evt) => {\n let me = this;\n if (!me.adapter || !me.interactive) {\n return;\n }\n const rect = me._resizer.currentSize;\n const callback = (r) => me._hitTestCallback(r, evt);\n const pixel = evt.type === 'mousemove' ? { x: evt.pageX - rect.left, y: evt.pageY - rect.top } : { x: -1, y: -1 };\n me.adapter.raycast(this, pixel, rect, callback);\n };\n this._resizeHandler = (evt) => {\n const oldSize = this.#size;\n const size = evt.detail;\n if (!Utils.isNull(oldSize) && oldSize.height === size.height && oldSize.width === size.width) {\n return;\n }\n this.#size = size;\n const adapter = this.adapter;\n if (!Utils.isNull(adapter)) {\n this.adapter.invalidateSize(this, size);\n this.dispatchEvent(new Components.ResizeEvent(size));\n }\n };\n //#endregion\n }\n validate(item) {\n return item instanceof RenderableElement;\n }\n get stage() {\n return this._container;\n }\n get scene() {\n return this.adapter && this.adapter.getScene(this);\n }\n register(item) {\n const retval = super.register(item);\n if (retval) {\n this._add(item);\n item.addEventListener(PropertyChangeEventName, this._itemPropertyChangeHandler, false);\n }\n return retval;\n }\n unregister(item) {\n const retval = super.unregister(item);\n if (retval) {\n item.removeEventListener(PropertyChangeEventName, this._itemPropertyChangeHandler, false);\n this._erase(item);\n }\n return retval;\n }\n _refreshDatasource(val = this.datasource) {\n this.adapter?.updateItem(this, undefined);\n }\n _buildUpDatasourceFromDOM(val = this.items) {\n if (!Utils.isNullOrEmpty(val)) {\n this.datasource = val.slice();\n }\n }\n _add(item) {\n this.adapter &&\n this.adapter.addItem(this, item);\n }\n _erase(item) {\n this.adapter &&\n this.adapter.removeItem(this, item);\n }\n _initializeAdapter(old, val) {\n return new Promise((resolve, reject) => {\n const items = this.datasource || [];\n if (!Utils.isNull(old)) {\n items.forEach(i => old.removeItem(this, i));\n }\n if (!Utils.isNull(this._container) && !Utils.isNull(val)) {\n val.initialize(this).then(_ => {\n (items || []).forEach(i => this._add(i));\n resolve();\n }, e => {\n this.log(Logging.LogLevel.Error, e?.toString());\n reject(e);\n });\n }\n else {\n resolve();\n }\n });\n }\n //#region lifecycle\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (first) {\n return;\n }\n switch (name) {\n case 'adapter':\n this._initializeAdapter(old, val);\n break;\n case 'items':\n this._buildUpDatasourceFromDOM(val);\n break;\n case 'transparent':\n this.adapter?.invalidateSize(this, this.size);\n break;\n case 'datasource':\n this._refreshDatasource(val);\n case 'disabled':\n case 'background':\n this.render();\n break;\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n // stage\n const container = this._container;\n // resizer\n const resizer = this._resizer;\n resizer.addEventListener('resize', this._resizeHandler, false);\n resizer.target = container;\n // adapter\n this._initializeAdapter(null, this.adapter).then(_ => {\n container.addEventListener('mousemove', this._moveHandler, false);\n container.addEventListener('click', this._clickHandler, false);\n container.addEventListener('mouseup', this._clickHandler, false);\n container.addEventListener('mousedown', this._clickHandler, false);\n container.addEventListener('mouseout', this._moveHandler, false);\n this._buildUpDatasourceFromDOM();\n this.render();\n });\n }\n _itemDispatch(target, point, type, offset) {\n if (!Utils.isNull(target)) {\n var dragArgs, originalEvent, evtType;\n if (offset instanceof Event) {\n originalEvent = offset;\n }\n else {\n dragArgs = { item: target, offset: offset };\n }\n if (typeof type === 'string') {\n evtType = type;\n }\n else {\n evtType = type.type;\n originalEvent = type.originalEvent;\n }\n const m = point;\n const evt = () => offset instanceof Event ? new RenderableEvent(evtType, target, originalEvent, m) : new DragEvent(evtType, { detail: dragArgs, cancelable: evtType === UI.DragDropEventType.Init || evtType === UI.DragDropEventType.Drag }, originalEvent, m), itemevt = offset instanceof Event ? new RenderableEvent('item' + evtType, target, originalEvent, m) : new DragEvent('item' + evtType, { detail: dragArgs, cancelable: evtType === UI.DragDropEventType.Init || evtType === UI.DragDropEventType.Drag }, originalEvent, m);\n var prevent = false;\n if (target instanceof EventTarget) {\n const evnt = evt();\n target.dispatchEvent(evnt);\n prevent = evnt.defaultPrevented;\n }\n target.stage.dispatchEvent(itemevt);\n // was the event (in one of its forms) rejected?\n return prevent || itemevt.defaultPrevented;\n }\n return false;\n }\n disconnectedCallback() {\n this.#handle?.stop();\n const resizer = this._resizer, container = this._container;\n if (!Utils.isNull(container)) {\n container.removeEventListener('click', this._clickHandler, false);\n container.removeEventListener('mouseup', this._clickHandler, false);\n container.removeEventListener('mousedown', this._clickHandler, false);\n container.removeEventListener('mousemove', this._moveHandler, false);\n container.removeEventListener('mouseout', this._moveHandler, false);\n }\n if (!Utils.isNull(resizer)) {\n resizer.removeEventListener('resize', this._resizeHandler, false);\n }\n super.disconnectedCallback();\n }\n #size;\n get size() {\n return this.#size;\n }\n render(item, deepUpdate, now = performance.now()) {\n if (!Utils.isNull(item)) {\n const adapter = this.adapter;\n if (!Utils.isNull(adapter)) {\n adapter.updateItem(this, item);\n }\n }\n else {\n this.#handle?.stop();\n this.#handle = Animations.Timer.run(_ => this._doRender());\n //this._doRender();\n }\n }\n #handle;\n _doRender() {\n if (!this.disabled && !Utils.isNull(this.adapter)) {\n const scene = this.adapter.getScene(this);\n let cancelable = new CustomEvent('prerender', { detail: { scene }, cancelable: true });\n this.dispatchEvent(cancelable);\n if (!cancelable.defaultPrevented) {\n this.adapter.render(this);\n this.dispatchEvent(new CustomEvent('render', { detail: { scene } }));\n }\n }\n }\n};\n__decorate([\n ViewChild(`.${PCSS}-3d`)\n], Pacem3DElement.prototype, \"_container\", void 0);\n__decorate([\n ViewChild(P + '-resize')\n], Pacem3DElement.prototype, \"_resizer\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], Pacem3DElement.prototype, \"interactive\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], Pacem3DElement.prototype, \"transparent\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], Pacem3DElement.prototype, \"background\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Element })\n], Pacem3DElement.prototype, \"adapter\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], Pacem3DElement.prototype, \"datasource\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], Pacem3DElement.prototype, \"orbit\", void 0);\nPacem3DElement = __decorate([\n CustomElement({\n tagName: P + '-' + TAG_MIDDLE_NAME, shadow: Defaults.USE_SHADOW_ROOT, template: `<${P}-resize watch-position=\"true\"></${P}-resize><div class=\"${PCSS}-3d\"></div><${P}-content></${P}-content>`\n })\n], Pacem3DElement);\nexport { Pacem3DElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Watch, PropertyConverters, CustomElement, PacemEventTarget, PropertyChangeEvent, CustomElementUtils, CustomUIEvent, P, Utils, Components } from '@pacem/pacem-core';\nimport { Geometry } from '@pacem/pacem-numerical';\nimport { Point3DConverter, Point3DOrNumberConverter, QuaternionConverter } from './converters';\nimport { Pacem3DElement } from './stage';\nimport { TAG_MIDDLE_NAME } from './constants';\nexport function isStage(object) {\n return !Utils.isNull(object) && 'render' in object && typeof object['render'] === 'function';\n}\nexport function isRenderable(object) {\n return isStage(object?.stage);\n}\nexport function isUi3DObject(object) {\n return 'transformMatrix' in object && isRenderable(object);\n}\nexport function isCamera(object) {\n return 'type' in object && 'up' in object && 'lookAt' in object && isRenderable(object);\n}\nexport function isPerspectiveCamera(object) {\n return isCamera(object) && 'type' in object && object.type === 'perspective';\n}\nexport function isOrthographicCamera(object) {\n return isCamera(object) && 'type' in object && object.type === 'orthographic';\n}\nexport function isLight(object) {\n return 'type' in object && (object.type === 'ambient' || object.type === 'omni' || object.type === 'direction' || object.type == 'spot') && isRenderable(object);\n}\nexport function isMesh(object) {\n return 'geometry' in object && isUi3DObject(object);\n}\nexport function isGeometry(object) {\n return 'positions' in object && Utils.isArray(object.positions);\n}\nexport function isMeshGeometry(object) {\n return ('triangleIndices' in object && Utils.isArray(object.triangleIndices)\n || 'normals' in object && Utils.isArray(object.normals)\n || 'textureCoordinates' in object && Utils.isArray(object.textureCoordinates)) && isGeometry(object);\n}\nexport function isGroup(object) {\n return 'childRenderables' in object && Utils.isArray(object['childRenderables']) && isUi3DObject(object);\n}\n/**\n * Sets the normals to a mesh geometry by computing each face's unit orthogonal vector.\n * @param geometry\n */\nexport function computeSharpVertexNormals(geometry) {\n const normals = [];\n if (!Utils.isNullOrEmpty(geometry)) {\n const indices = geometry.triangleIndices;\n if (indices.length % 3 !== 0) {\n throw new RangeError(`Invalid mesh geometry: ${indices.length} is not multiple of 3.`);\n }\n for (let j = 2; j < indices.length; j += 3) {\n const u = indices[j - 2], v = indices[j - 1], w = indices[j];\n const a = geometry.positions[u], b = geometry.positions[v], c = geometry.positions[w];\n const normal = computePlaneNormal(a, b, c);\n normals.push(normal, normal, normal);\n }\n }\n geometry.normals = normals;\n}\n/**\n * Computes the unit vector orthogonal to the plane identified by 3 points.\n * @param a\n * @param b\n * @param c\n */\nexport function computePlaneNormal(a, b, c) {\n // TODO: check input correctness (distinct points)\n const vAB = Geometry.LinearAlgebra.Vector3D.subtract(a, b), vAC = Geometry.LinearAlgebra.Vector3D.subtract(a, c);\n const orthogonal = Geometry.LinearAlgebra.Vector3D.cross(vAB, vAC);\n return Geometry.LinearAlgebra.Vector3D.unit(orthogonal);\n}\nexport class UI3DEvent extends CustomUIEvent {\n constructor(type, eventInit, originalEvent, point) {\n super(type, eventInit, originalEvent);\n this.#point = point;\n }\n #point;\n /** Gets the event's source position in 3d coordinates. */\n get point() {\n return this.#point;\n }\n}\nexport class DragEvent extends UI3DEvent {\n}\nexport class RenderableEvent extends UI3DEvent {\n constructor(type, args, originalEvent, p) {\n super(type, { detail: args, bubbles: true, cancelable: true }, originalEvent, p);\n }\n}\nexport var StalePropertyFlag;\n(function (StalePropertyFlag) {\n StalePropertyFlag[\"Position\"] = \"position\";\n StalePropertyFlag[\"Transform\"] = \"transform\";\n StalePropertyFlag[\"Geometry\"] = \"geometry\";\n StalePropertyFlag[\"Children\"] = \"children\";\n StalePropertyFlag[\"Material\"] = \"material\";\n StalePropertyFlag[\"Light\"] = \"light\";\n StalePropertyFlag[\"Camera\"] = \"camera\";\n StalePropertyFlag[\"Visibility\"] = \"visibility\";\n})(StalePropertyFlag || (StalePropertyFlag = {}));\nexport function isInteraction(object) {\n return typeof object === 'object' && 'time' in object && typeof object['time'] === 'number';\n}\n//namespace Pacem.Components.Drawing3D {\nconst Constants = {\n OBJECT_SELECTOR: P + '-' + TAG_MIDDLE_NAME + '-object',\n LIGHT_SELECTOR: P + '-' + TAG_MIDDLE_NAME + '-light',\n PERSPECTIVE_CAMERA_SELECTOR: P + '-' + TAG_MIDDLE_NAME + '-perspective-camera',\n ORTHO_CAMERA_SELECTOR: P + '-' + TAG_MIDDLE_NAME + '-orthographic-camera',\n LINE_SELECTOR: P + '-' + TAG_MIDDLE_NAME + '-line',\n MESH_SELECTOR: P + '-' + TAG_MIDDLE_NAME + '-mesh',\n GROUP_SELECTOR: P + '-' + TAG_MIDDLE_NAME + '-group',\n DEFAULT_COORDS: { x: 0, y: 0, z: 0 }\n};\nexport class RenderableElement extends Components.PacemCrossItemsContainerElement {\n constructor() {\n super(...arguments);\n this.position = Constants.DEFAULT_COORDS;\n this.#staleFlags = [];\n }\n validate(_) {\n // by default no children allowed (Group will except)\n return false;\n }\n findContainer() {\n // override\n return this.parent || this.stage;\n }\n get stage() {\n return this['_scene'] = this['_scene'] || CustomElementUtils.findAncestorOfType(this, Pacem3DElement);\n }\n get parent() {\n return this['_drawableParent'] = this['_drawableParent'] || CustomElementUtils.findAncestor(this, i => i instanceof RenderableElement);\n }\n disconnectedCallback() {\n delete this['_scene'];\n delete this['_drawableParent'];\n super.disconnectedCallback();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'hide':\n this.setAsDirty(StalePropertyFlag.Visibility);\n break;\n case 'items':\n this.setAsDirty(StalePropertyFlag.Children);\n break;\n case 'position':\n this.setAsDirty(StalePropertyFlag.Position);\n break;\n }\n }\n #staleFlags;\n get flags() {\n return this.#staleFlags;\n }\n /** Calls for a redraw of the current element in the next rendering process. */\n setAsDirty(...flags) {\n // set the flags that identify the stale part of the object to be updated.\n for (let flag of flags) {\n if (!this.flags.includes(flag)) {\n this.flags.push(flag);\n }\n }\n this.stage?.render(this);\n }\n}\n__decorate([\n Watch({ emit: false, converter: Point3DConverter })\n], RenderableElement.prototype, \"position\", void 0);\n__decorate([\n Watch({ emit: false, reflectBack: true, converter: PropertyConverters.String })\n], RenderableElement.prototype, \"tag\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], RenderableElement.prototype, \"inert\", void 0);\nexport class Ui3DElement extends RenderableElement {\n // #endregion\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'transformMatrix':\n this.setAsDirty(StalePropertyFlag.Transform);\n break;\n case 'translateZ':\n case 'translateX':\n case 'translateY':\n this.offset = { x: this.translateX, y: this.translateY, z: this.translateZ };\n break;\n case 'scaleX':\n case 'scaleY':\n case 'scaleZ':\n this.scale = { x: this.scaleX, y: this.scaleY, z: this.scaleZ };\n break;\n case 'scale':\n case 'offset':\n case 'rotate':\n this._computeTransformMatrix();\n break;\n }\n }\n _computeTransformMatrix() {\n const MAT3D = Geometry.LinearAlgebra.Matrix3D, VEC3D = Geometry.LinearAlgebra.Vector3D, QUAT = Geometry.LinearAlgebra.Quaternion;\n // scale\n const scale = this.scale ?? VEC3D.from(1, 1, 1);\n let m = MAT3D.scale(MAT3D.identity(), scale);\n // rotate\n if (!Utils.isNull(this.rotate)) {\n const rot = QUAT.toRotationMatrix(this.rotate);\n m = MAT3D.multiply(m, rot);\n }\n // translate\n const offset = this.offset ?? VEC3D.from(0, 0, 0);\n m = MAT3D.translate(m, offset);\n this.transformMatrix = m;\n }\n}\n__decorate([\n Watch({ emit: false, converter: QuaternionConverter })\n], Ui3DElement.prototype, \"rotate\", void 0);\n__decorate([\n Watch({ emit: false, converter: Point3DOrNumberConverter })\n], Ui3DElement.prototype, \"scale\", void 0);\n__decorate([\n Watch({ emit: false, converter: Point3DOrNumberConverter })\n], Ui3DElement.prototype, \"offset\", void 0);\n__decorate([\n Watch({ emit: false })\n], Ui3DElement.prototype, \"transformMatrix\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], Ui3DElement.prototype, \"scaleX\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], Ui3DElement.prototype, \"scaleY\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], Ui3DElement.prototype, \"scaleZ\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], Ui3DElement.prototype, \"translateX\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], Ui3DElement.prototype, \"translateY\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], Ui3DElement.prototype, \"translateZ\", void 0);\nlet Pacem3DGroupElement = class Pacem3DGroupElement extends Ui3DElement {\n validate(child) {\n // overrides default denial\n return child instanceof RenderableElement;\n }\n #children = [];\n get childRenderables() {\n return this.#children;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'items':\n case 'datasource':\n this.#children = (val || []);\n this.setAsDirty(StalePropertyFlag.Children);\n break;\n }\n }\n};\n__decorate([\n Watch({ emit: false })\n], Pacem3DGroupElement.prototype, \"datasource\", void 0);\nPacem3DGroupElement = __decorate([\n CustomElement({ tagName: Constants.GROUP_SELECTOR })\n], Pacem3DGroupElement);\nexport { Pacem3DGroupElement };\nlet Pacem3DMeshElement = class Pacem3DMeshElement extends Ui3DElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'geometry':\n this.setAsDirty(StalePropertyFlag.Geometry);\n break;\n case 'material':\n case 'backMaterial':\n this.setAsDirty(StalePropertyFlag.Material);\n break;\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], Pacem3DMeshElement.prototype, \"geometry\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], Pacem3DMeshElement.prototype, \"material\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], Pacem3DMeshElement.prototype, \"backMaterial\", void 0);\nPacem3DMeshElement = __decorate([\n CustomElement({ tagName: Constants.MESH_SELECTOR })\n], Pacem3DMeshElement);\nexport { Pacem3DMeshElement };\nlet Pacem3DObjectElement = class Pacem3DObjectElement extends Ui3DElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'content' || name === 'type') {\n this.setAsDirty(StalePropertyFlag.Geometry, StalePropertyFlag.Material);\n }\n }\n};\n__decorate([\n Watch({ emit: false })\n], Pacem3DObjectElement.prototype, \"content\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], Pacem3DObjectElement.prototype, \"type\", void 0);\nPacem3DObjectElement = __decorate([\n CustomElement({ tagName: Constants.OBJECT_SELECTOR })\n], Pacem3DObjectElement);\nexport { Pacem3DObjectElement };\nlet Pacem3DLightElement = class Pacem3DLightElement extends RenderableElement {\n constructor() {\n super(...arguments);\n this.intensity = .85;\n this.target = Constants.DEFAULT_COORDS;\n this.color = '#fff';\n this.type = 'omni';\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'type':\n case 'color':\n case 'intensity':\n case 'target':\n this.setAsDirty(StalePropertyFlag.Light);\n break;\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], Pacem3DLightElement.prototype, \"intensity\", void 0);\n__decorate([\n Watch({ emit: false, converter: Point3DConverter })\n], Pacem3DLightElement.prototype, \"target\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], Pacem3DLightElement.prototype, \"color\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], Pacem3DLightElement.prototype, \"type\", void 0);\nPacem3DLightElement = __decorate([\n CustomElement({ tagName: Constants.LIGHT_SELECTOR })\n], Pacem3DLightElement);\nexport { Pacem3DLightElement };\nexport class Pacem3DCameraElement extends RenderableElement {\n constructor() {\n super(...arguments);\n this.near = 0.1;\n this.far = 1000.0;\n this.up = Geometry.LinearAlgebra.Vector3D.j();\n this.lookAt = Constants.DEFAULT_COORDS;\n }\n #sphere;\n _resetBoundingSphere() {\n const oldValue = this.#sphere;\n const eye = this.position, center = this.lookAt;\n const radius = Utils.isNullOrEmpty(eye) || Utils.isNullOrEmpty(center) ? 0\n : Geometry.LinearAlgebra.Vector3D.mag(Geometry.LinearAlgebra.Vector3D.subtract(eye, center));\n const currentValue = this.#sphere = { center, radius };\n this.dispatchEvent(new PropertyChangeEvent({ currentValue, propertyName: 'boundingSphere', oldValue }));\n }\n get boundingSphere() {\n return this.#sphere;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'lookAt':\n case 'position':\n this._resetBoundingSphere();\n case 'near':\n case 'far':\n case 'up':\n this.setAsDirty(StalePropertyFlag.Camera);\n break;\n }\n }\n}\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], Pacem3DCameraElement.prototype, \"near\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], Pacem3DCameraElement.prototype, \"far\", void 0);\n__decorate([\n Watch({ emit: false, converter: Point3DConverter })\n], Pacem3DCameraElement.prototype, \"up\", void 0);\n__decorate([\n Watch({ emit: false, converter: Point3DConverter })\n], Pacem3DCameraElement.prototype, \"lookAt\", void 0);\nlet Pacem3DPerspectiveCameraElement = class Pacem3DPerspectiveCameraElement extends Pacem3DCameraElement {\n constructor() {\n super(...arguments);\n this.fov = 45;\n this.aspect = 1;\n }\n get type() {\n return \"perspective\";\n }\n get aspectRatio() {\n return this.aspect;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'fov':\n case 'aspect':\n this.setAsDirty(StalePropertyFlag.Camera);\n break;\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], Pacem3DPerspectiveCameraElement.prototype, \"fov\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], Pacem3DPerspectiveCameraElement.prototype, \"aspect\", void 0);\nPacem3DPerspectiveCameraElement = __decorate([\n CustomElement({ tagName: Constants.PERSPECTIVE_CAMERA_SELECTOR })\n], Pacem3DPerspectiveCameraElement);\nexport { Pacem3DPerspectiveCameraElement };\nlet Pacem3DOrthographicCameraElement = class Pacem3DOrthographicCameraElement extends Pacem3DCameraElement {\n constructor() {\n super(...arguments);\n this.top = 1;\n this.left = -1;\n this.bottom = -1;\n this.right = 1;\n }\n get type() {\n return \"orthographic\";\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'top':\n case 'left':\n case 'bottom':\n case 'right':\n this.setAsDirty(StalePropertyFlag.Camera);\n break;\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], Pacem3DOrthographicCameraElement.prototype, \"top\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], Pacem3DOrthographicCameraElement.prototype, \"left\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], Pacem3DOrthographicCameraElement.prototype, \"bottom\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], Pacem3DOrthographicCameraElement.prototype, \"right\", void 0);\nPacem3DOrthographicCameraElement = __decorate([\n CustomElement({ tagName: Constants.ORTHO_CAMERA_SELECTOR })\n], Pacem3DOrthographicCameraElement);\nexport { Pacem3DOrthographicCameraElement };\nexport class Pacem3DAdapterElement extends PacemEventTarget {\n}\n","//namespace Pacem.Components.Drawing3D {\n/** @deprecated*/\nexport class Pacem3DDetector {\n constructor() {\n this._detected = {\n supported: false, info: {}\n };\n let cvs = document.createElement('canvas');\n let contextNames = ['webgl', 'experimental-webgl', 'moz-webgl', 'webkit-3d'];\n let ctx;\n let getParam = function (str) {\n if (!str)\n return undefined;\n return ctx.getParameter(str);\n };\n // addLine\n let addLine = (section, name, value) => {\n let detected = this._detected;\n var info = detected.info[section] = detected.info[section] || {};\n name = name.replace(/[^\\w]+/g, '');\n name = name.substring(0, 1).toLowerCase() + name.substring(1);\n info[name] = value;\n };\n if (navigator.userAgent.indexOf('MSIE') >= 0) {\n try {\n ctx = window['WebGLHelper'].CreateGLContext(cvs, 'canvas');\n }\n catch (e) { }\n }\n else {\n for (var i = 0; i < contextNames.length; i++) {\n try {\n ctx = cvs.getContext(contextNames[i]);\n if (ctx) {\n addLine('main', 'Context Name', contextNames[i]);\n break;\n }\n }\n catch (e) { }\n }\n }\n this._detected.supported = !!ctx;\n addLine('main', 'Platform', navigator.platform);\n addLine('main', 'Agent', navigator.userAgent);\n if (ctx) {\n addLine('main', 'Vendor', getParam(ctx.VENDOR));\n addLine('main', 'Version', getParam(ctx.VERSION));\n addLine('main', 'Renderer', getParam(ctx.RENDERER));\n addLine('main', 'Shading Language Version', getParam(ctx.SHADING_LANGUAGE_VERSION));\n addLine('bits', 'Rgba Bits', getParam(ctx.RED_BITS) + ', ' + getParam(ctx.GREEN_BITS) + ', ' + getParam(ctx.BLUE_BITS) + ', ' + getParam(ctx.ALPHA_BITS));\n addLine('bits', 'Depth Bits', getParam(ctx.DEPTH_BITS));\n addLine('shader', 'Max Vertex Attribs', getParam(ctx.MAX_VERTEX_ATTRIBS));\n addLine('shader', 'Max Vertex Texture Image Units', getParam(ctx.MAX_VERTEX_TEXTURE_IMAGE_UNITS));\n addLine('shader', 'Max Varying Vectors', getParam(ctx.MAX_VARYING_VECTORS));\n addLine('shader', 'Max Uniform Vectors', getParam(ctx.MAX_VERTEX_UNIFORM_VECTORS));\n addLine('tex', 'Max Combined Texture Image Units', getParam(ctx.MAX_COMBINED_TEXTURE_IMAGE_UNITS));\n addLine('tex', 'Max Texture Size', getParam(ctx.MAX_TEXTURE_SIZE));\n addLine('tex', 'Max Cube Map Texture Size', getParam(ctx.MAX_CUBE_MAP_TEXTURE_SIZE));\n addLine('tex', 'Num. Compressed Texture Formats', getParam(ctx.COMPRESSED_TEXTURE_FORMATS));\n addLine('misc', 'Max Render Buffer Size', getParam(ctx.MAX_RENDERBUFFER_SIZE));\n addLine('misc', 'Max Viewport Dimensions', getParam(ctx.MAX_VIEWPORT_DIMS));\n addLine('misc', 'Aliased Line Width Range', getParam(ctx.ALIASED_LINE_WIDTH_RANGE));\n addLine('misc', 'Aliased Point Size Range', getParam(ctx.ALIASED_POINT_SIZE_RANGE));\n addLine('misc', 'Supported Extensions', ctx.getSupportedExtensions() || []);\n }\n }\n get info() {\n return this._detected.info;\n }\n get supported() {\n return this._detected.supported;\n }\n}\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { PacemEventTarget, Utils, Watch, PropertyConverters, PCSS } from '@pacem/pacem-core';\nimport { Imaging } from '@pacem/pacem-foundation';\nimport { StalePropertyFlag } from '../types';\n//namespace Pacem.Drawing3D {\nexport var KnownShader;\n(function (KnownShader) {\n KnownShader[\"Basic\"] = \"basic\";\n KnownShader[\"Lambert\"] = \"lambert\";\n KnownShader[\"Phong\"] = \"phong\";\n KnownShader[\"Standard\"] = \"standard\";\n KnownShader[\"Line\"] = \"line\";\n KnownShader[\"Custom\"] = \"custom\";\n})(KnownShader || (KnownShader = {}));\nexport function isMaterial(obj) {\n return /*'color' in obj &&*/ 'shader' in obj;\n}\nexport function isBasicMaterial(obj) {\n return isMaterial(obj) && obj.shader === KnownShader.Basic;\n}\nexport function isLineMaterial(obj) {\n return isMaterial(obj) && obj.shader === KnownShader.Line;\n}\nexport function isLambertMaterial(obj) {\n return isMaterial(obj) && obj.shader === KnownShader.Lambert;\n}\nexport function isPhongMaterial(obj) {\n return isMaterial(obj) && obj.shader === KnownShader.Phong;\n}\nexport function isStandardMaterial(obj) {\n return isMaterial(obj) && obj.shader === KnownShader.Standard;\n}\nexport function isShaderMaterial(obj) {\n return isMaterial(obj) && obj.shader === KnownShader.Custom;\n}\n//namespace Pacem.Components.Drawing3D {\nexport class MaterialElement extends PacemEventTarget {\n constructor(shader) {\n super();\n this.#shader = shader;\n }\n #shader;\n get shader() {\n return this.#shader;\n }\n async _loadMap(url, old = this.material?.texture) {\n if (!Utils.isNull(old)) {\n old.close();\n }\n if (Utils.isNullOrEmpty(url)) {\n return null;\n }\n const blob = await Imaging.loadImage(url);\n if (Utils.isNull(blob)) {\n return null;\n }\n return await createImageBitmap(blob);\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'map':\n case 'opacity':\n case 'wireframe':\n case 'color':\n case 'hide':\n this.updateMaterial();\n break;\n }\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this.updateMaterial();\n }\n updateMaterial() {\n this.createMaterial().then(m => {\n this.material = Utils.extend(m, { flags: [StalePropertyFlag.Material] });\n });\n }\n async createMaterial() {\n return {\n opacity: this.opacity ?? 1.0,\n wireframe: this.wireframe ?? false,\n color: this.color || Utils.Css.getVariableValue(`--${PCSS}-color-primary`),\n visible: !(this.hide ?? false),\n map: this.map,\n texture: await this._loadMap(this.map),\n shader: this.shader,\n flags: [],\n };\n }\n}\n__decorate([\n Watch()\n], MaterialElement.prototype, \"material\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], MaterialElement.prototype, \"opacity\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], MaterialElement.prototype, \"wireframe\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], MaterialElement.prototype, \"color\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], MaterialElement.prototype, \"hide\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], MaterialElement.prototype, \"map\", void 0);\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, P } from '@pacem/pacem-core';\nimport { KnownShader, MaterialElement } from './material';\nimport { TAG_MIDDLE_NAME } from '../constants';\n//namespace Pacem.Components.Drawing3D {\nlet BasicMaterialElement = class BasicMaterialElement extends MaterialElement {\n constructor() {\n super(KnownShader.Basic);\n }\n};\nBasicMaterialElement = __decorate([\n CustomElement({ tagName: `${P}-${TAG_MIDDLE_NAME}-material-basic` })\n], BasicMaterialElement);\nexport { BasicMaterialElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, P, Watch, PropertyConverters, Utils } from '@pacem/pacem-core';\nimport { TAG_MIDDLE_NAME } from '../constants';\nimport { KnownShader, MaterialElement } from './material';\n//namespace Pacem.Components.Drawing3D {\nlet LambertMaterialElement = class LambertMaterialElement extends MaterialElement {\n constructor() {\n super(KnownShader.Lambert);\n }\n async createMaterial() {\n return Utils.extend({\n emissiveColor: this.emissiveColor || '#000',\n reflectivity: this.reflectivity ?? 0,\n refractionRatio: this.refractionRatio ?? 0\n }, await super.createMaterial());\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'emissiveColor':\n case 'reflectivity':\n case 'refractionRatio':\n this.updateMaterial();\n break;\n }\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], LambertMaterialElement.prototype, \"emissiveColor\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], LambertMaterialElement.prototype, \"reflectivity\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], LambertMaterialElement.prototype, \"refractionRatio\", void 0);\nLambertMaterialElement = __decorate([\n CustomElement({ tagName: `${P}-${TAG_MIDDLE_NAME}-material-lambert` })\n], LambertMaterialElement);\nexport { LambertMaterialElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, P, Watch, PropertyConverters, Utils } from '@pacem/pacem-core';\nimport { TAG_MIDDLE_NAME } from '../constants';\nimport { KnownShader, MaterialElement } from './material';\n//namespace Pacem.Components.Drawing3D {\nlet LineMaterialElement = class LineMaterialElement extends MaterialElement {\n constructor() {\n super(KnownShader.Line);\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'lineWidth':\n case 'lineJoin':\n case 'lineCap':\n case 'dashArray':\n this.updateMaterial();\n break;\n }\n }\n }\n async createMaterial() {\n return Utils.extend({\n lineWidth: this.lineWidth ?? 1,\n lineJoin: this.lineJoin ?? 'round',\n lineCap: this.lineCap ?? 'round',\n dashArray: this.dashArray,\n }, await super.createMaterial());\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], LineMaterialElement.prototype, \"lineWidth\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], LineMaterialElement.prototype, \"lineJoin\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], LineMaterialElement.prototype, \"lineCap\", void 0);\n__decorate([\n Watch({\n emit: false, converter: {\n convert: (attr) => attr?.split(',').map(i => parseInt(i)).filter(i => !Number.isNaN(i)),\n convertBack: (prop) => prop?.join(',')\n }\n })\n], LineMaterialElement.prototype, \"dashArray\", void 0);\nLineMaterialElement = __decorate([\n CustomElement({ tagName: `${P}-${TAG_MIDDLE_NAME}-material-line` })\n], LineMaterialElement);\nexport { LineMaterialElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, P, Watch, PropertyConverters, Utils } from '@pacem/pacem-core';\nimport { TAG_MIDDLE_NAME } from '../constants';\nimport { KnownShader, MaterialElement } from './material';\n//namespace Pacem.Components.Drawing3D {\nlet PhongMaterialElement = class PhongMaterialElement extends MaterialElement {\n constructor() {\n super(KnownShader.Phong);\n }\n async createMaterial() {\n return Utils.extend({\n emissiveColor: this.emissiveColor || '#000',\n reflectivity: this.reflectivity ?? 0,\n refractionRatio: this.refractionRatio ?? 0,\n specularColor: this.specularColor || '#000',\n shininess: this.shininess ?? 0,\n flatShading: this.flatShading ?? true\n }, await super.createMaterial());\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'emissiveColor':\n case 'reflectivity':\n case 'refractionRatio':\n case 'specularColor':\n case 'shininess':\n case 'flatShading':\n this.updateMaterial();\n break;\n }\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PhongMaterialElement.prototype, \"emissiveColor\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PhongMaterialElement.prototype, \"reflectivity\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PhongMaterialElement.prototype, \"refractionRatio\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PhongMaterialElement.prototype, \"specularColor\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PhongMaterialElement.prototype, \"shininess\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PhongMaterialElement.prototype, \"flatShading\", void 0);\nPhongMaterialElement = __decorate([\n CustomElement({ tagName: `${P}-${TAG_MIDDLE_NAME}-material-phong` })\n], PhongMaterialElement);\nexport { PhongMaterialElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, P, Watch, PropertyConverters, Utils } from '@pacem/pacem-core';\nimport { TAG_MIDDLE_NAME } from '../constants';\nimport { KnownShader, MaterialElement } from './material';\n//namespace Pacem.Components.Drawing3D {\nlet StandardMaterialElement = class StandardMaterialElement extends MaterialElement {\n constructor() {\n super(KnownShader.Standard);\n }\n async createMaterial() {\n return Utils.extend({\n emissiveColor: this.emissiveColor || '#000',\n refractionRatio: this.refractionRatio ?? 0,\n metalness: this.metalness ?? 0,\n roughness: this.roughness ?? 0,\n flatShading: this.flatShading ?? false\n }, await super.createMaterial());\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'emissiveColor':\n case 'roughness':\n case 'metalness':\n case 'refractionRatio':\n case 'flatShading':\n this.updateMaterial();\n break;\n }\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], StandardMaterialElement.prototype, \"emissiveColor\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], StandardMaterialElement.prototype, \"refractionRatio\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], StandardMaterialElement.prototype, \"roughness\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], StandardMaterialElement.prototype, \"metalness\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], StandardMaterialElement.prototype, \"flatShading\", void 0);\nStandardMaterialElement = __decorate([\n CustomElement({ tagName: `${P}-${TAG_MIDDLE_NAME}-material-standard` })\n], StandardMaterialElement);\nexport { StandardMaterialElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { PacemEventTarget, Watch, PropertyConverters, Utils } from '@pacem/pacem-core';\n//namespace Pacem.Components.Drawing3D {\nexport class Pacem3DPrimitiveElement extends PacemEventTarget {\n viewActivatedCallback() {\n super.viewActivatedCallback();\n if (Utils.isNull(this.geometry)) {\n this.geometry = this.createDefaultGeometry();\n }\n }\n}\n__decorate([\n Watch({ converter: PropertyConverters.Json })\n], Pacem3DPrimitiveElement.prototype, \"geometry\", void 0);\n","import { Utils } from '@pacem/pacem-core';\n//namespace Pacem.Drawing3D {\nexport function NotifyChange(callback) {\n return (target, prop, descriptor) => {\n const backingField = `_${prop}_${Utils.uniqueCode()}_backingField`;\n function getter() {\n return this[backingField];\n }\n function setter(val) {\n if (val !== this[backingField]) {\n const old = this[backingField];\n this[backingField] = val;\n callback.call(this, prop, old, val);\n }\n }\n //if (delete target[prop]) {\n Object.defineProperty(target, prop, {\n get: function () {\n return getter.call(this);\n },\n set: function (val) {\n setter.call(this, val);\n },\n enumerable: true,\n configurable: false\n });\n //}\n };\n}\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Utils } from '@pacem/pacem-core';\nimport { StalePropertyFlag } from './types';\nimport { NotifyChange } from './decorators';\nexport class NodeGeometry {\n constructor(positions = []) {\n this.positions = positions;\n }\n static barycenter(positions) {\n var bary = { x: 0, y: 0, z: 0 };\n if (!Utils.isNullOrEmpty(positions)) {\n var count = positions.length;\n for (var i = 0; i < positions.length; i++) {\n var pt = positions[i];\n bary.x += pt.x;\n bary.y += pt.y;\n bary.z += pt.z;\n }\n var countDbl = 1.0 * count;\n bary.x /= countDbl;\n bary.y /= countDbl;\n bary.z /= countDbl;\n }\n return bary;\n }\n static boundingBox(positions) {\n const output = {\n minX: +Infinity, minY: +Infinity, minZ: +Infinity,\n maxX: -Infinity, maxY: -Infinity, maxZ: -Infinity\n };\n if (!Utils.isNullOrEmpty(positions)) {\n for (var i = 0; i < positions.length; i++) {\n var pt = positions[i];\n output.minX = Math.min(output.minX, pt.x);\n output.minY = Math.min(output.minY, pt.y);\n output.minZ = Math.min(output.minZ, pt.z);\n output.maxX = Math.max(output.maxX, pt.x);\n output.maxY = Math.max(output.maxY, pt.y);\n output.maxZ = Math.max(output.maxZ, pt.z);\n }\n }\n return output;\n }\n setAsDirty() {\n setSelfAsDirty.call(this);\n }\n}\nfunction setSelfAsDirty() {\n const me = this;\n me.flags = [/* no further specifications, other than 'geometry' */ StalePropertyFlag.Geometry];\n}\nexport class LineGeometry extends NodeGeometry {\n}\n__decorate([\n NotifyChange(setSelfAsDirty)\n], LineGeometry.prototype, \"positions\", void 0);\nexport class MeshGeometry extends NodeGeometry {\n #boundingBox;\n #boundingSphere;\n #barycenter;\n get barycenter() {\n return this.#barycenter ??= NodeGeometry.barycenter(this.positions);\n }\n set barycenter(point) {\n this.#barycenter = point;\n }\n get boundingBox() {\n return this.#boundingBox ??= NodeGeometry.boundingBox(this.positions);\n }\n set boundingBox(bbox) {\n this.#boundingBox = bbox;\n }\n get boundingSphere() {\n return this.#boundingSphere;\n }\n set boundingSphere(sphere) {\n this.#boundingSphere = sphere;\n }\n constructor(positions, triangleIndices, textureCoordinates = [], normals = []) {\n super(positions);\n this.triangleIndices = triangleIndices;\n this.textureCoordinates = textureCoordinates;\n this.normals = normals;\n }\n}\n__decorate([\n NotifyChange(setSelfAsDirty)\n], MeshGeometry.prototype, \"positions\", void 0);\n__decorate([\n NotifyChange(setSelfAsDirty)\n], MeshGeometry.prototype, \"triangleIndices\", void 0);\n__decorate([\n NotifyChange(setSelfAsDirty)\n], MeshGeometry.prototype, \"textureCoordinates\", void 0);\n__decorate([\n NotifyChange(setSelfAsDirty)\n], MeshGeometry.prototype, \"normals\", void 0);\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar PacemBoxElement_1;\nimport { CustomElement, P, Watch, PropertyConverters } from '@pacem/pacem-core';\nimport { computeSharpVertexNormals } from '../types';\nimport { MeshGeometry } from '../geometry';\nimport { Pacem3DPrimitiveElement } from './primitive';\nimport { TAG_MIDDLE_NAME } from '../constants';\n//namespace Pacem.Components.Drawing3D {\nlet PacemBoxElement = PacemBoxElement_1 = class PacemBoxElement extends Pacem3DPrimitiveElement {\n static createMeshGeometry(width, height, depth, widthSegments, heightSegments, depthSegments) {\n const w = width || 1, h = height || 1, d = depth || 1, sw = widthSegments || 1, sh = heightSegments || 1, sd = depthSegments || 1;\n const positions = [];\n const uv = [];\n const indices = [];\n // populationg positions\n for (var j = 0; j <= sh; j++) {\n var y = h / 2.0 - h * (1.0 * j) / (1.0 * sh); // ??\n for (var k = 0; k <= sd; k++) {\n var z = -d / 2.0 + d * (1.0 * k) / (1.0 * sd);\n for (var i = 0; i <= sw; i++) {\n var x = -w / 2.0 + w * (1.0 * i) / (1.0 * sw);\n // add only surface nodes\n if (i == 0 || i == sw || k == 0 || k == sd || j == 0 || j == sh)\n positions.push({ x, y, z });\n }\n }\n }\n var getPosIndex = function (x, y, z) {\n var epsilon = .00001;\n for (var i = 0; i < positions.length; i++) {\n var pt = positions[i];\n if (Math.abs(pt.x - x) < epsilon && Math.abs(pt.y - y) < epsilon && Math.abs(pt.z - z) < epsilon)\n return i;\n }\n return -1;\n };\n var appendFace = function (c_1, c_2, c_3, c_4, u, v, u_next, v_next) {\n indices.push(c_1);\n indices.push(c_2);\n indices.push(c_3);\n indices.push(c_1);\n indices.push(c_3);\n indices.push(c_4);\n uv.push({ x: u, y: v_next });\n uv.push({ x: u_next, y: v_next });\n uv.push({ x: u_next, y: v });\n uv.push({ x: u, y: v_next });\n uv.push({ x: u_next, y: v });\n uv.push({ x: u, y: v });\n };\n // top face (1)\n for (var k = 0; k < sd; k++) {\n var y = h / 2.0;\n var z = -d / 2.0 + d * (1.0 * k) / (1.0 * sd);\n var z_next = -d / 2.0 + d * (1.0 * (k + 1)) / (1.0 * sd);\n for (var i = 0; i < sw; i++) {\n var x = -w / 2.0 + (1.0 * i) * w / (1.0 * sw);\n var x_next = -w / 2.0 + (1.0 * (i + 1)) * w / (1.0 * sw);\n // coord-indices + tex-coords\n var c_1 = getPosIndex(x, y, z_next);\n var c_2 = getPosIndex(x_next, y, z_next);\n var c_3 = getPosIndex(x_next, y, z);\n var c_4 = getPosIndex(x, y, z);\n var u_next = (1.0 * (i + 1)) / (1.0 * sw);\n var u = (1.0 * i) / (1.0 * sw);\n var v_next = 1.0 - (1.0 * (k + 1)) / (1.0 * sd);\n var v = 1.0 - (1.0 * k) / (1.0 * sd);\n appendFace(c_1, c_2, c_3, c_4, u, v, u_next, v_next);\n }\n }\n // back face (2)\n for (var j = 0; j < sh; j++) {\n var y = h / 2.0 - (1.0 * j) * h / (1.0 * sh);\n var y_next = h / 2.0 - (j + 1.0) * h / (1.0 * sh);\n var z = -d / 2.0;\n for (var i = 0; i < sw; i++) {\n var x = w / 2.0 - 1.0 * i * w / (1.0 * sw);\n var x_next = w / 2.0 - (i + 1.0) * w / (1.0 * sw);\n // coord-indices + tex-coords\n var c_1 = getPosIndex(x, y_next, z);\n var c_2 = getPosIndex(x_next, y_next, z);\n var c_3 = getPosIndex(x_next, y, z);\n var c_4 = getPosIndex(x, y, z);\n var u_next = (i + 1.0) / (1.0 * sw);\n var u = (1.0 * i) / (1.0 * sw);\n var v_next = 1.0 - (j + 1.0) / (1.0 * sh);\n var v = 1.0 - 1.0 * j / (1.0 * sh);\n appendFace(c_1, c_2, c_3, c_4, u, v, u_next, v_next);\n }\n }\n // left face (3)\n for (var j = 0; j < sh; j++) {\n var y = h / 2.0 - (1.0 * j) * h / (1.0 * sh);\n var y_next = h / 2.0 - (j + 1.0) * h / (1.0 * sh);\n var x = -w / 2.0;\n for (var k = 0; k < sd; k++) {\n var z = -d / 2.0 + k * d / (1.0 * sd);\n var z_next = -d / 2.0 + (k + 1.0) * d / (1.0 * sd);\n // coord-indices + tex-coords\n var c_1 = getPosIndex(x, y_next, z);\n var c_2 = getPosIndex(x, y_next, z_next);\n var c_3 = getPosIndex(x, y, z_next);\n var c_4 = getPosIndex(x, y, z);\n var u_next = (k + 1.0) / (1.0 * sd);\n var u = (1.0 * k) / (1.0 * sd);\n var v_next = 1.0 - (j + 1.0) / (1.0 * sh);\n var v = 1.0 - j / (1.0 * sh);\n appendFace(c_1, c_2, c_3, c_4, u, v, u_next, v_next);\n }\n }\n // front face (4)\n for (var j = 0; j < sh; j++) {\n var y = h / 2.0 - j * h / (1.0 * sh);\n var y_next = h / 2.0 - (j + 1.0) * h / (1.0 * sh);\n var z = d / 2.0;\n for (var i = 0; i < sw; i++) {\n var x = -w / 2.0 + i * w / (1.0 * sw);\n var x_next = -w / 2.0 + (i + 1.0) * w / (1.0 * sw);\n // coord-indices + tex-coords\n var c_1 = getPosIndex(x, y_next, z);\n var c_2 = getPosIndex(x_next, y_next, z);\n var c_3 = getPosIndex(x_next, y, z);\n var c_4 = getPosIndex(x, y, z);\n var u_next = (i + 1.0) / (1.0 * sw);\n var u = (1.0 * i) / (1.0 * sw);\n var v_next = 1.0 - (j + 1.0) / (1.0 * sh);\n var v = 1.0 - (1.0 * j) / (1.0 * sh);\n appendFace(c_1, c_2, c_3, c_4, u, v, u_next, v_next);\n }\n }\n // right face (5)\n for (var j = 0; j < sh; j++) {\n var y = h / 2.0 - j * h / (1.0 * sh);\n var y_next = h / 2.0 - (j + 1.0) * h / (1.0 * sh);\n var x = w / 2.0;\n for (var k = 0; k < sd; k++) {\n var z = d / 2.0 - k * d / (1.0 * sd);\n var z_next = d / 2.0 - (k + 1.0) * d / (1.0 * sd);\n // coord-indices + tex-coords\n var c_1 = getPosIndex(x, y_next, z);\n var c_2 = getPosIndex(x, y_next, z_next);\n var c_3 = getPosIndex(x, y, z_next);\n var c_4 = getPosIndex(x, y, z);\n var u_next = (k + 1.0) / (1.0 * sd);\n var u = (1.0 * k) / (1.0 * sd);\n var v_next = 1.0 - (j + 1.0) / (1.0 * sh);\n var v = 1.0 - (1.0 * j) / (1.0 * sh);\n appendFace(c_1, c_2, c_3, c_4, u, v, u_next, v_next);\n }\n }\n // bottom face (6)\n for (var k = 0; k < sd; k++) {\n var y = -h / 2.0;\n var z = d / 2.0 - d * k / (1.0 * sd);\n var z_next = d / 2.0 - d * (k + 1.0) / (1.0 * sd);\n for (var i = 0; i < sw; i++) {\n var x = -w / 2.0 + i * w / (1.0 * sw);\n var x_next = -w / 2.0 + (i + 1.0) * w / (1.0 * sw);\n // coord-indices + tex-coords\n var c_1 = getPosIndex(x, y, z_next);\n var c_2 = getPosIndex(x_next, y, z_next);\n var c_3 = getPosIndex(x_next, y, z);\n var c_4 = getPosIndex(x, y, z);\n var u_next = (i + 1.0) / (1.0 * sw);\n var u = (1.0 * i) / (1.0 * sw);\n var v_next = 1.0 - (k + 1.0) / (1.0 * sd);\n var v = 1.0 - (1.0 * k) / (1.0 * sd);\n appendFace(c_1, c_2, c_3, c_4, u, v, u_next, v_next);\n }\n }\n const geom = new MeshGeometry(positions, indices, uv);\n geom.key = `box_${width}x${height}x${depth}_w${widthSegments}_h${heightSegments}_d${depthSegments}`;\n computeSharpVertexNormals(geom);\n const center = { x: 0, y: 0, z: 0 };\n const w2 = width / 2, h2 = height / 2, d2 = depth / 2;\n //\n geom.barycenter = center;\n geom.boundingBox = { maxX: w2, maxY: h2, maxZ: d2, minX: -w2, minY: -h2, minZ: -d2 };\n geom.boundingSphere = { center, radius: Math.sqrt(Math.pow(w2, 2) + Math.pow(h2, 2) + Math.pow(d2, 2)) };\n //\n return geom;\n }\n createDefaultGeometry() {\n return PacemBoxElement_1.createMeshGeometry();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'width':\n case 'height':\n case 'depth':\n case 'widthSegments':\n case 'heightSegments':\n case 'depthSegments':\n this.geometry = PacemBoxElement_1.createMeshGeometry(this.width, this.height, this.depth, this.widthSegments, this.heightSegments, this.depthSegments);\n break;\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemBoxElement.prototype, \"width\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemBoxElement.prototype, \"height\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemBoxElement.prototype, \"depth\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemBoxElement.prototype, \"widthSegments\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemBoxElement.prototype, \"heightSegments\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemBoxElement.prototype, \"depthSegments\", void 0);\nPacemBoxElement = PacemBoxElement_1 = __decorate([\n CustomElement({ tagName: P + '-' + TAG_MIDDLE_NAME + '-primitive-box' })\n], PacemBoxElement);\nexport { PacemBoxElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar PacemConeElement_1;\nimport { CustomElement, P, Watch, PropertyConverters } from '@pacem/pacem-core';\nimport { computeSharpVertexNormals } from '../types';\nimport { MeshGeometry } from '../geometry';\nimport { Pacem3DPrimitiveElement } from './primitive';\nimport { TAG_MIDDLE_NAME, DEG2RAD } from '../constants';\n//namespace Pacem.Components.Drawing3D {\nlet PacemConeElement = PacemConeElement_1 = class PacemConeElement extends Pacem3DPrimitiveElement {\n static createMeshGeometry(radius = 1, height = 1, sides = 18, heightSegments = 5, capSegments = 1) {\n const r = radius;\n const nodes = [], uv = [], indices = [];\n const theta = DEG2RAD * (360.0 / sides);\n const slope = r / height;\n const fY = height / heightSegments;\n const fU = 1.0 / sides;\n // top vertex\n nodes.push({ x: .0, y: height, z: .0 });\n // ======================================\n // side loops\n for (let j = 1; j <= heightSegments; j++) {\n const y = height - fY * j;\n const v = y / height;\n const rj = (height - y) * slope;\n // for loops other than tip loop\n const y_prev = y + fY;\n const v_prev = y_prev / height;\n for (let i = 0; i < sides; i++) {\n const angle = theta * i;\n const x = Math.cos(angle) * rj, z = -Math.sin(angle) * rj;\n nodes.push({ x, y, z });\n const index = 1 + sides * (j - 1) + i;\n const index_prev = i == 0 ? index + sides - 1 : index - 1;\n const u = i * fU;\n const u_prev = i == 0 ? (1 - fU) : fU * (i - 1);\n if (j == 1) {\n // tip loop\n // 1 triangle\n indices.push(0, index_prev, index);\n uv.push({ x: u, y: 1 }, { x: u_prev, y: v }, { x: u, y: v });\n continue;\n }\n const prevLoopIndex = 1 + sides * (j - 2) + i;\n const prevLoopIndex_prev = i == 0 ? prevLoopIndex + sides - 1 : prevLoopIndex - 1;\n // quad\n const A = prevLoopIndex_prev;\n const B = index_prev;\n const C = index;\n const D = prevLoopIndex;\n indices.push(C, A, B);\n indices.push(C, D, A);\n const uvA = { x: u_prev, y: v_prev };\n const uvB = { x: u_prev, y: v };\n const uvC = { x: u, y: v };\n const uvD = { x: u, y: v_prev };\n uv.push(uvC, uvA, uvB);\n uv.push(uvC, uvD, uvA);\n }\n }\n // bottom cap\n const startCapIndex = 1 + (heightSegments - 1) * sides;\n // bottom vertex (pivot)\n nodes.push({ x: .0, y: 0, z: .0 });\n const bottomIndex = startCapIndex + sides;\n // ======================================\n for (let j = 1; j <= capSegments; j++) {\n const rj_norm = j / capSegments;\n const rj = radius * rj_norm;\n // for loops other than bottom vertex loop\n const rj_norm_prev = (j - 1) / capSegments;\n for (let i = 0; i < sides; i++) {\n const angle = theta * i, cos = Math.cos(angle), sin = Math.sin(angle);\n const angle_prev = angle - theta, cos_prev = Math.cos(angle_prev), sin_prev = Math.sin(angle_prev);\n const u = .5 * (1 + cos * rj_norm), v = .5 * (1 + sin * rj_norm);\n const u_prev = .5 * (1 + cos_prev * rj_norm), v_prev = .5 * (1 + sin_prev * rj_norm);\n let index, index_prev;\n if (j != capSegments) {\n const x = Math.cos(angle) * rj, z = -Math.sin(angle) * rj;\n nodes.push({ x, y: 0, z });\n index = bottomIndex + 1 + (j - 1) * sides + i;\n index_prev = i == 0 ? index + sides - 1 : index - 1;\n }\n else {\n index = startCapIndex + i;\n index_prev = i == 0 ? startCapIndex + sides - 1 : index - 1;\n }\n if (j == 1) {\n // bottom vertex loop\n // 1 triangle\n indices.push(bottomIndex, index, index_prev);\n uv.push({ x: .5, y: .5 }, { x: u, y: v }, { x: u_prev, y: v_prev });\n continue;\n }\n const prevLoopU = .5 * (1 + cos * rj_norm_prev), prevLoopV = .5 * (1 + sin * rj_norm_prev);\n const prevLoopU_prev = .5 * (1 + cos_prev * rj_norm_prev), prevLoopV_prev = .5 * (1 + sin_prev * rj_norm_prev);\n const prevLoopIndex = bottomIndex + 1 + (j - 2) * sides + i;\n const prevLoopIndex_prev = i == 0 ? prevLoopIndex + sides - 1 : prevLoopIndex - 1;\n // quad\n const A = prevLoopIndex_prev;\n const B = index_prev;\n const C = index;\n const D = prevLoopIndex;\n indices.push(A, D, B);\n indices.push(B, D, C);\n const uvA = { x: prevLoopU_prev, y: prevLoopV_prev };\n const uvB = { x: u_prev, y: v_prev };\n const uvC = { x: u, y: v };\n const uvD = { x: prevLoopU, y: prevLoopV };\n uv.push(uvA, uvD, uvB);\n uv.push(uvB, uvD, uvC);\n }\n }\n // put the whole thing together\n const geom = new MeshGeometry(nodes, indices, uv);\n geom.key = `cone_${radius}x${height}_s${sides}_h${heightSegments}_c${capSegments}`;\n computeSharpVertexNormals(geom);\n // TODO: barycenter, boundingBox, boundingSphere\n return geom;\n }\n createDefaultGeometry() {\n return PacemConeElement_1.createMeshGeometry();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'radius':\n case 'height':\n case 'sides':\n case 'heightSegments':\n case 'capSegments':\n this.geometry = PacemConeElement_1.createMeshGeometry(this.radius, this.height, this.sides, this.heightSegments, this.capSegments);\n break;\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemConeElement.prototype, \"radius\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemConeElement.prototype, \"height\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemConeElement.prototype, \"sides\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemConeElement.prototype, \"heightSegments\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemConeElement.prototype, \"capSegments\", void 0);\nPacemConeElement = PacemConeElement_1 = __decorate([\n CustomElement({ tagName: P + '-' + TAG_MIDDLE_NAME + '-primitive-cone' })\n], PacemConeElement);\nexport { PacemConeElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar PacemCylinderElement_1;\nimport { CustomElement, P, Watch, PropertyConverters } from '@pacem/pacem-core';\nimport { computeSharpVertexNormals } from '../types';\nimport { MeshGeometry } from '../geometry';\nimport { Pacem3DPrimitiveElement } from './primitive';\nimport { TAG_MIDDLE_NAME, DEG2RAD } from '../constants';\n//namespace Pacem.Components.Drawing3D {\nlet PacemCylinderElement = PacemCylinderElement_1 = class PacemCylinderElement extends Pacem3DPrimitiveElement {\n static createMeshGeometry(radius = 1, height = 1, sides = 18, heightSegments = 5, capSegments = 1) {\n const r = radius;\n const nodes = [], uv = [], indices = [];\n const theta = DEG2RAD * (360.0 / sides);\n // top & bottom vertices (pivot @(0,0,0))\n nodes.push({ x: .0, y: height, z: .0 });\n nodes.push({ x: .0, y: .0, z: .0 });\n // ======================================\n // cap loops\n const capRadius = r / capSegments;\n for (let j = 1; j <= capSegments; j++) {\n //int j_prev = j - 1;\n var rho = capRadius * j;\n for (var i = 0; i < sides; i++) {\n const startIndex = 2 + 2 * sides * (j - 1);\n const A = i == 0 ? startIndex + 2 * (sides - 1) : startIndex + 2 * (i - 1);\n const B = startIndex + 2 * i;\n const u = Math.cos(theta * i);\n const v = -Math.sin(theta * i);\n const u_prev = Math.cos(theta * (i - 1.0));\n const v_prev = -Math.sin(theta * (i - 1.0));\n const x = rho * u;\n const z = rho * v;\n const topPoint = { x, y: height, z };\n const bottomPoint = { x, y: .0, z };\n //\n nodes.push(topPoint);\n nodes.push(bottomPoint);\n // coordinates & texture\n const factor = .5 * rho / r;\n const uB = u * factor;\n const vB = v * factor;\n const uA = u_prev * factor;\n const vA = v_prev * factor;\n if (j == 1) {\n const faceIndicesTop = [0 /* top vertex*/, A, B];\n const faceIndicesBottom = [1 /* bottom vertex*/, B + 1, A + 1];\n // texture\n const uvTop = [\n { x: .5, y: .5 },\n { x: .5 + uA, y: .5 - vA },\n { x: 0.5 + uB, y: .5 - vB }\n ];\n const uvBottom = [\n { x: .5, y: .5 },\n { x: 0.5 + uB, y: .5 + vB },\n { x: .5 + uA, y: .5 + vA }\n ];\n // faces\n indices.push(...faceIndicesTop);\n indices.push(...faceIndicesBottom);\n // texture\n for (let i = 0; i < uvTop.length; i++)\n uv.push(uvTop[i]);\n for (let i = 0; i < uvBottom.length; i++)\n uv.push(uvBottom[i]);\n }\n else {\n const startIndexPrevLoop = 2 + 2 * sides * (j - 2);\n const D = i == 0 ? startIndexPrevLoop + 2 * (sides - 1) : startIndexPrevLoop + 2 * (i - 1);\n const C = startIndexPrevLoop + 2 * i;\n // coordinates & texture\n const factor0 = .5 * ((j - 1.0) / capSegments);\n const uC = u * factor0;\n const vC = v * factor0;\n const uD = u_prev * factor0;\n const vD = v_prev * factor0;\n const uvA = { x: .5 + uA, y: .5 - vA };\n const uvB = { x: .5 + uB, y: .5 - vB };\n const uvC = { x: .5 + uC, y: .5 - vC };\n const uvD = { x: .5 + uD, y: .5 - vD };\n const uvA2 = { x: .5 + uA, y: .5 + vA };\n const uvB2 = { x: .5 + uB, y: .5 + vB };\n const uvC2 = { x: .5 + uC, y: .5 + vC };\n const uvD2 = { x: .5 + uD, y: .5 + vD };\n // top\n indices.push(A);\n indices.push(B);\n indices.push(D);\n indices.push(D);\n indices.push(B);\n indices.push(C);\n // bottom\n indices.push(C + 1);\n indices.push(B + 1);\n indices.push(A + 1);\n indices.push(C + 1);\n indices.push(A + 1);\n indices.push(D + 1);\n // textures top\n uv.push(uvA);\n uv.push(uvB);\n uv.push(uvD);\n uv.push(uvD);\n uv.push(uvB);\n uv.push(uvC);\n // texture bottom\n uv.push(uvC2);\n uv.push(uvB2);\n uv.push(uvA2);\n uv.push(uvC2);\n uv.push(uvA2);\n uv.push(uvD2);\n }\n }\n }\n // ======================================\n // side loops\n const sideStartIndex = 2 + 2 * sides * (capSegments);\n const capLastIndex = 2 + 2 * sides * (capSegments - 1);\n const fU = 1.0 / sides;\n const fV = 1.0 / heightSegments;\n for (let j = 1; j <= heightSegments; j++) {\n for (let i = 0; i < sides; i++) {\n if (j != heightSegments) {\n var x = r * Math.cos(theta * i);\n var z = -r * Math.sin(theta * i);\n var y = (height * j) / heightSegments;\n //\n nodes.push({ x, y, z });\n }\n const i_prev = i == 0 ? sides - 1 : i - 1;\n const A = j == 1 ? capLastIndex + 2 * i_prev + 1 : sideStartIndex + sides * (j - 2) + i_prev;\n const B = j == 1 ? capLastIndex + 2 * i + 1 : sideStartIndex + sides * (j - 2) + i;\n const C = j == heightSegments ? capLastIndex + 2 * i : sideStartIndex + sides * (j - 1) + i;\n const D = j == heightSegments ? capLastIndex + 2 * i_prev : sideStartIndex + sides * (j - 1) + i_prev;\n const u_prev = i_prev * fU;\n const v_prev = (j - 1) * fV;\n const u = i == 0 ? 1.0 : i * fU;\n const v = j * fV;\n const uvA = { x: u_prev, y: v_prev };\n const uvB = { x: u, y: v_prev };\n const uvC = { x: u, y: v };\n const uvD = { x: u_prev, y: v };\n indices.push(A);\n indices.push(B);\n indices.push(C);\n indices.push(A);\n indices.push(C);\n indices.push(D);\n //\n uv.push(uvA);\n uv.push(uvB);\n uv.push(uvC);\n uv.push(uvA);\n uv.push(uvC);\n uv.push(uvD);\n }\n }\n // put the whole thing together\n const geom = new MeshGeometry(nodes, indices, uv);\n geom.key = `cylinder_${radius}x${height}_s${sides}_h${heightSegments}_c${capSegments}`;\n computeSharpVertexNormals(geom);\n // TODO: barycenter, boundingBox, boundingSphere\n return geom;\n }\n createDefaultGeometry() {\n return PacemCylinderElement_1.createMeshGeometry();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'radius':\n case 'height':\n case 'sides':\n case 'heightSegments':\n case 'capSegments':\n this.geometry = PacemCylinderElement_1.createMeshGeometry(this.radius, this.height, this.sides, this.heightSegments, this.capSegments);\n break;\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemCylinderElement.prototype, \"radius\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemCylinderElement.prototype, \"height\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemCylinderElement.prototype, \"sides\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemCylinderElement.prototype, \"heightSegments\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemCylinderElement.prototype, \"capSegments\", void 0);\nPacemCylinderElement = PacemCylinderElement_1 = __decorate([\n CustomElement({ tagName: P + '-' + TAG_MIDDLE_NAME + '-primitive-cylinder' })\n], PacemCylinderElement);\nexport { PacemCylinderElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar PacemLineElement_1;\nimport { CustomElement, P, Watch, PropertyConverters } from '@pacem/pacem-core';\nimport { LineGeometry } from '../geometry';\nimport { Pacem3DPrimitiveElement } from './primitive';\nimport { TAG_MIDDLE_NAME } from '../constants';\n//namespace Pacem.Components.Drawing3D {\nconst DEFAULT_LINE = [{ x: 0, y: 0, z: 0 }, { x: 0, y: 1, z: 0 }];\nlet PacemLineElement = PacemLineElement_1 = class PacemLineElement extends Pacem3DPrimitiveElement {\n static createLineGeometry(positions) {\n return new LineGeometry(positions || DEFAULT_LINE);\n }\n createDefaultGeometry() {\n return PacemLineElement_1.createLineGeometry();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'positions':\n this.geometry = PacemLineElement_1.createLineGeometry(val);\n break;\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemLineElement.prototype, \"positions\", void 0);\nPacemLineElement = PacemLineElement_1 = __decorate([\n CustomElement({ tagName: P + '-' + TAG_MIDDLE_NAME + '-primitive-line' })\n], PacemLineElement);\nexport { PacemLineElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar PacemPlaneElement_1;\nimport { CustomElement, P, Watch, PropertyConverters } from '@pacem/pacem-core';\nimport { Geometry } from '@pacem/pacem-numerical';\nimport { MeshGeometry } from '../geometry';\nimport { Pacem3DPrimitiveElement } from './primitive';\nimport { TAG_MIDDLE_NAME } from '../constants';\n//namespace Pacem.Components.Drawing3D {\nlet PacemPlaneElement = PacemPlaneElement_1 = class PacemPlaneElement extends Pacem3DPrimitiveElement {\n static createMeshGeometry(width, length, widthSegments, lengthSegments) {\n width ||= 1.0;\n length ||= 1.0;\n widthSegments ||= 4;\n lengthSegments ||= 4;\n const halfWidth = width * .5, halfLength = length * .5;\n const nodes = [];\n const uv = [];\n const indices = [];\n const normals = [], normal = Geometry.LinearAlgebra.Vector3D.from(0, 0, 1);\n for (let j = 0; j <= lengthSegments; j++) {\n for (let i = 0; i <= widthSegments; i++) {\n const x = -halfWidth + i * width / (1.0 * widthSegments);\n const y = .0;\n const z = -halfLength + j * length / (1.0 * lengthSegments);\n nodes.push({ x, y, z });\n if (j < lengthSegments && i < widthSegments) {\n const rowPoints = widthSegments + 1;\n // const colPoints = lengthSegments + 1;\n const u_next = (i + 1.0) / (1.0 * widthSegments);\n const u = (1.0 * i) / (1.0 * widthSegments);\n const v_next = 1.0 - (j + 1.0) / (1.0 * lengthSegments);\n const v = 1.0 - (1.0 * j) / (1.0 * lengthSegments);\n indices.push((j + 1) * rowPoints + i);\n indices.push((j + 1) * rowPoints + i + 1);\n indices.push(j * rowPoints + i + 1);\n indices.push((j + 1) * rowPoints + i);\n indices.push(j * rowPoints + i + 1);\n indices.push(j * rowPoints + i);\n uv.push({ x: u, y: v_next });\n uv.push({ x: u_next, y: v_next });\n uv.push({ x: u_next, y: v });\n uv.push({ x: u, y: v_next });\n uv.push({ x: u_next, y: v });\n uv.push({ x: u, y: v });\n normals.push(normal, normal, normal, normal, normal, normal);\n }\n }\n }\n const geom = new MeshGeometry(nodes, indices, uv, normals);\n geom.key = `plane_${width}x${length}_w${widthSegments}_l${lengthSegments}`;\n // TODO: barycenter, boundingBox, boundingSphere\n return geom;\n }\n createDefaultGeometry() {\n return PacemPlaneElement_1.createMeshGeometry();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'width':\n case 'length':\n case 'widthSegments':\n case 'lengthSegments':\n this.geometry = PacemPlaneElement_1.createMeshGeometry(this.width, this.length, this.widthSegments, this.lengthSegments);\n break;\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemPlaneElement.prototype, \"width\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemPlaneElement.prototype, \"length\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemPlaneElement.prototype, \"widthSegments\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemPlaneElement.prototype, \"lengthSegments\", void 0);\nPacemPlaneElement = PacemPlaneElement_1 = __decorate([\n CustomElement({ tagName: P + '-' + TAG_MIDDLE_NAME + '-primitive-plane' })\n], PacemPlaneElement);\nexport { PacemPlaneElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar PacemTetrahedronElement_1, PacemOctahedronElement_1, PacemHexahedronElement_1, PacemIcosahedronElement_1, PacemDodecahedronElement_1;\nimport { CustomElement, P, Watch, PropertyConverters } from '@pacem/pacem-core';\nimport { computeSharpVertexNormals } from '../types';\nimport { Geometry } from '@pacem/pacem-numerical';\nimport { MeshGeometry } from '../geometry';\nimport { Pacem3DPrimitiveElement } from './primitive';\nimport { PacemBoxElement } from './box';\nimport { TAG_MIDDLE_NAME } from '../constants';\n//namespace Pacem.Components.Drawing3D {\nconst _utils = {\n parseFloats: function (input) {\n const pattern = /([\\d.-]+)/i;\n var match = pattern.exec(input);\n const ret = [];\n while (match != null) {\n const g = match[0];\n const j = parseFloat(g);\n ret.push(j);\n input = input.replace(g, '');\n match = pattern.exec(input);\n }\n return ret;\n }\n};\nconst Point3D = Geometry.LinearAlgebra.Vector3D;\nexport class PolyhedronElement extends Pacem3DPrimitiveElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'radius') {\n this._assignMeshGeometry(val);\n }\n }\n _assignMeshGeometry(radius) {\n this.geometry = this.createMeshGeometry(radius > .0 ? radius : 1.0);\n }\n createDefaultGeometry() {\n return this.createMeshGeometry(1.0);\n }\n}\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PolyhedronElement.prototype, \"radius\", void 0);\n// #region Tetrahedron\nlet PacemTetrahedronElement = PacemTetrahedronElement_1 = class PacemTetrahedronElement extends PolyhedronElement {\n static createMeshGeometry(radius) {\n radius ||= 1.0;\n const nodesCoordsString = \"0 0.5774 -0.8165, 0 0.5774 0.8165, 0.8165 -0.5774 0, -0.8165 -0.5774 0\";\n const nodesToParse = nodesCoordsString.split(',');\n const nodes = [];\n for (let i = 0; i < nodesToParse.length; i++) {\n const nodeToParse = nodesToParse[i];\n const pt3D = _utils.parseFloats(nodeToParse);\n nodes.push({ x: pt3D[0] * radius, y: pt3D[1] * radius, z: pt3D[2] * radius });\n }\n const indices = [1, 2, 0, 2, 3, 0, 3, 1, 0, 3, 2, 1];\n const textureCoordsString = \"0.5 0.9995, 0.5 0.0004995, 0.0004995 0.5, 0.9995 0.5, 0.5 0.0004995, 0.9995 0.5, 0.5 0.9995, 0.0004995 0.5, 0.9995 0.5, 0.5 0.9995, 0.0004995 0.5, 0.5 0.0004995\";\n const pointsToParse = textureCoordsString.split(',');\n const texIndices = [4, 5, 6, 7, 8, 9, 10, 11, 0, 3, 2, 1];\n const uv = [];\n for (let i = 0; i < texIndices.length; i++) {\n const ndx = texIndices[i];\n const uvCoords = _utils.parseFloats(pointsToParse[ndx]);\n uv.push({ x: uvCoords[0], y: uvCoords[1] });\n }\n const geom = new MeshGeometry(nodes, indices, uv);\n geom.key = `tetrahedron_${radius}`;\n computeSharpVertexNormals(geom);\n // TODO: barycenter, boundingBox, boundingSphere\n geom.boundingSphere = { center: Point3D.zero(), radius };\n return geom;\n }\n createMeshGeometry(radius = this.radius) {\n return PacemTetrahedronElement_1.createMeshGeometry(radius);\n }\n};\nPacemTetrahedronElement = PacemTetrahedronElement_1 = __decorate([\n CustomElement({ tagName: P + '-' + TAG_MIDDLE_NAME + '-primitive-tetrahedron' })\n], PacemTetrahedronElement);\nexport { PacemTetrahedronElement };\n// #endregion\n// #region Octahedron\nlet PacemOctahedronElement = PacemOctahedronElement_1 = class PacemOctahedronElement extends PolyhedronElement {\n static createMeshGeometry(radius) {\n radius ||= 1.0;\n // -------------------------------------------------------------------------------------------------\n const nodesCoordsString = \"0 0.7071 -0.7071, 0 0.7071 0.7071, 1 0 0, 0 -0.7071 -0.7071, -1 0 0, 0 -0.7071 0.7071\";\n const indices = [1, 2, 0, 2, 3, 0, 3, 4, 0, 4, 1, 0, 4, 5, 1, 5, 2, 1, 2, 5, 3, 4, 3, 5];\n const textureCoordsString = \"0.5 0.9995, 0.5 0.9995, 0.0004995 0.5, 0.5 0.9995, 0.9995 0.5, 0.5 0.0004995, 0.5 0.0004995, 0.9995 0.5, 0.5 0.9995, 0.0004995 0.5, 0.5 0.0004995, 0.5 0.9995, 0.5 0.0004995, 0.9995 0.5, 0.5 0.9995, 0.0004995 0.5, 0.5 0.0004995, 0.0004995 0.5, 0.5 0.0004995, 0.5 0.9995, 0.5 0.0004995, 0.9995 0.5, 0.5 0.0004995, 0.5 0.9995\";\n const texIndices = [6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 0, 17, 18, 19, 20, 21, 1, 2, 22, 23, 4, 3, 5];\n // -------------------------------------------------------------------------------------------------\n const nodesToParse = nodesCoordsString.split(',');\n const nodes = [];\n for (let i = 0; i < nodesToParse.length; i++) {\n const nodeToParse = nodesToParse[i];\n const pt3D = _utils.parseFloats(nodeToParse);\n nodes.push({ x: pt3D[0] * radius, y: pt3D[1] * radius, z: pt3D[2] * radius });\n }\n const pointsToParse = textureCoordsString.split(',');\n const uv = [];\n for (let i = 0; i < texIndices.length; i++) {\n const ndx = texIndices[i];\n const uvCoords = _utils.parseFloats(pointsToParse[ndx]);\n uv.push({ x: uvCoords[0], y: uvCoords[1] });\n }\n const geom = new MeshGeometry(nodes, indices, uv);\n geom.key = `octahedron_${radius}`;\n computeSharpVertexNormals(geom);\n // TODO: barycenter, boundingBox, boundingSphere\n geom.boundingSphere = { center: Point3D.zero(), radius };\n return geom;\n }\n createMeshGeometry(radius = this.radius) {\n return PacemOctahedronElement_1.createMeshGeometry(radius);\n }\n};\nPacemOctahedronElement = PacemOctahedronElement_1 = __decorate([\n CustomElement({ tagName: P + '-' + TAG_MIDDLE_NAME + '-primitive-octahedron' })\n], PacemOctahedronElement);\nexport { PacemOctahedronElement };\n// #endregion\n// #region Hexahedron\nlet PacemHexahedronElement = PacemHexahedronElement_1 = class PacemHexahedronElement extends PolyhedronElement {\n static createMeshGeometry(radius) {\n radius ||= 1.0;\n const inv_sqrt3 = 1.0 / Math.sqrt(3.0);\n const w = 2.0 * radius * inv_sqrt3;\n const geom = PacemBoxElement.createMeshGeometry(w, w, w);\n geom.key = `hexahedron_${radius}`;\n return geom;\n }\n createMeshGeometry(radius = this.radius) {\n return PacemHexahedronElement_1.createMeshGeometry(radius);\n }\n};\nPacemHexahedronElement = PacemHexahedronElement_1 = __decorate([\n CustomElement({ tagName: P + '-' + TAG_MIDDLE_NAME + '-primitive-hexahedron' })\n], PacemHexahedronElement);\nexport { PacemHexahedronElement };\n// #endregion\n// #region Icosahedron\nlet PacemIcosahedronElement = PacemIcosahedronElement_1 = class PacemIcosahedronElement extends PolyhedronElement {\n static createMeshGeometry(radius) {\n radius ||= 1.0;\n const nodesCoordsString = \"0 0.850651 -0.525731, 0 0.850651 0.525731, 0.850651 0.525731 0, 0.525731 0 -0.850651, -0.525731 0 -0.850651, -0.850651 0.525731 0, -0.525731 0 0.850651, 0.525731 0 0.850651, 0.850651 -0.525731 0, 0 -0.850651 0.525731, 0 -0.850651 -0.525731, -0.850651 -0.525731 0\";\n const indices = [1, 2, 0, 2, 3, 0, 3, 4, 0, 4, 5, 0, 5, 1, 0,\n 5, 6, 1, 6, 7, 1, 7, 2, 1, 2, 8, 3,\n 2, 7, 8, 6, 9, 7, 9, 8, 7, 8, 10, 3,\n 8, 9, 10, 6, 11, 9, 11, 10, 9, 10, 4, 3,\n 10, 11, 4, 6, 5, 11, 5, 4, 11];\n const textureCoordsString = \"0.5 0.808708, 0.5 0.999501, 0.5 0.808708, 0.191292 0.5, \" +\n \"0.000499547 0.5, 0.5 0.808708, 0.9995 0.5, 0.808708 0.5,\" +\n \"0.000499487 0.5, 0.5 0.191292, 0.5 0.000499487, 0.5 0.191292,\" +\n \"0.5 0.191292, 0.999501 0.5, 0.5 0.808708, 0.5 0.808708,\" +\n \"0.9995 0.5, 0.808708 0.999501, 0.191292 0.5, 0.808708 0.5,\" +\n \"0.5 0.999501, 0.808708 0.5, 0.999501 0.808708, 0.5 0.999501,\" +\n \"0.000499487 0.5, 0.5 0.191292, 0.5 0.808708, 0.9995 0.5,\" +\n \"0.808708 0.999501, 0.191292 0.5, 0.808708 0.5, 0.5 0.999501,\" +\n \"0.808708 0.5, 0.999501 0.808708, 0.5 0.808708, 0.5 0.191292,\" +\n \"0.9995 0.5, 0.000499547 0.5, 0.5 0.191292, 0.191292 0.5,\" +\n \"0.5 0.000499487, 0.808708 0.5, 0.5 0.000499487, 0.999501 0.191292,\" +\n \"0.5 0.191292, 0.808708 0.000499487, 0.9995 0.5, 0.5 0.191292,\" +\n \"0.5 0.808708, 0.9995 0.5, 0.5 0.191292, 0.808708 0.000499487,\" +\n \"0.999501 0.5, 0.5 0.808708, 0.5 0.000499487, 0.808708 0.5,\" +\n \"0.999501 0.191292, 0.808708 0.5, 0.5 0.808708, 0.5 0.191292\";\n const texIndices = [12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,\n 24, 25, 0, 26, 27, 28, 29, 30, 31, 32, 33, 1,\n 34, 35, 36, 2, 37, 38, 39, 40, 41, 42, 43, 7,\n 44, 45, 46, 8, 47, 48, 49, 50, 51, 52, 53, 9,\n 54, 55, 3, 10, 56, 57, 6, 58, 59, 5, 4, 11];\n // -------------------------------------------------------------------------------------------------\n const nodesToParse = nodesCoordsString.split(',');\n const nodes = [];\n for (let i = 0; i < nodesToParse.length; i++) {\n const nodeToParse = nodesToParse[i];\n const pt3D = _utils.parseFloats(nodeToParse);\n nodes.push({ x: pt3D[0] * radius, y: pt3D[1] * radius, z: pt3D[2] * radius });\n }\n const pointsToParse = textureCoordsString.split(',');\n const uv = [];\n for (let i = 0; i < texIndices.length; i++) {\n const ndx = texIndices[i];\n const uvCoords = _utils.parseFloats(pointsToParse[ndx]);\n uv.push({ x: uvCoords[0], y: uvCoords[1] });\n }\n const geom = new MeshGeometry(nodes, indices, uv);\n geom.key = `icosahedron_${radius}`;\n computeSharpVertexNormals(geom);\n // TODO: barycenter, boundingBox, boundingSphere\n geom.boundingSphere = { center: Point3D.zero(), radius };\n return geom;\n }\n createMeshGeometry(radius = this.radius) {\n return PacemIcosahedronElement_1.createMeshGeometry(radius);\n }\n};\nPacemIcosahedronElement = PacemIcosahedronElement_1 = __decorate([\n CustomElement({ tagName: P + '-' + TAG_MIDDLE_NAME + '-primitive-icosahedron' })\n], PacemIcosahedronElement);\nexport { PacemIcosahedronElement };\n// #endregion\n// #region Dodecahedron\nlet PacemDodecahedronElement = PacemDodecahedronElement_1 = class PacemDodecahedronElement extends PolyhedronElement {\n static createMeshGeometry(radius) {\n radius ||= 1.0;\n const n1 = Point3D.from(0.356822 * radius, 0.934172 * radius, 0 * radius);\n const n2 = Point3D.from(-0.356822 * radius, 0.934172 * radius, 0 * radius);\n const n3 = Point3D.from(0.57735 * radius, 0.57735 * radius, -0.57735 * radius);\n const n4 = Point3D.from(0 * radius, 0.356822 * radius, -0.934172 * radius);\n const n5 = Point3D.from(-0.57735 * radius, 0.57735 * radius, -0.57735 * radius);\n const n6 = Point3D.from(-0.57735 * radius, 0.57735 * radius, 0.57735 * radius);\n const n7 = Point3D.from(0 * radius, 0.356822 * radius, 0.934172 * radius);\n const n8 = Point3D.from(0.57735 * radius, 0.57735 * radius, 0.57735 * radius);\n const n9 = Point3D.from(0.934172 * radius, 0 * radius, -0.356822 * radius);\n const n10 = Point3D.from(0.934172 * radius, 0 * radius, 0.356822 * radius);\n const n11 = Point3D.from(0 * radius, -0.356822 * radius, 0.934172 * radius);\n const n12 = Point3D.from(0.57735 * radius, -0.57735 * radius, 0.57735 * radius);\n const n13 = Point3D.from(0.57735 * radius, -0.57735 * radius, -0.57735 * radius);\n const n14 = Point3D.from(0.356822 * radius, -0.934172 * radius, 0 * radius);\n const n15 = Point3D.from(-0.57735 * radius, -0.57735 * radius, 0.57735 * radius);\n const n16 = Point3D.from(-0.356822 * radius, -0.934172 * radius, 0 * radius);\n const n17 = Point3D.from(0 * radius, -0.356822 * radius, -0.934172 * radius);\n const n18 = Point3D.from(-0.57735 * radius, -0.57735 * radius, -0.57735 * radius);\n const n19 = Point3D.from(-0.934172 * radius, 0 * radius, 0.356822 * radius);\n const n20 = Point3D.from(-0.934172 * radius, 0 * radius, -0.356822 * radius);\n const positions = [\n n1,\n n2,\n n3,\n n4,\n n5,\n n6,\n n7,\n n8,\n n9,\n n10,\n n11,\n n12,\n n13,\n n14,\n n15,\n n16,\n n17,\n n18,\n n19,\n n20\n ];\n const indices = [0, 2, 3, 0, 3, 4, 0, 4, 1, 1, 5, 6, 1, 6, 7,\n 1, 7, 0, 7, 9, 8, 7, 8, 2, 7, 2, 0,\n 7, 6, 10, 7, 10, 11, 7, 11, 9, 11, 13, 12,\n 11, 12, 8, 11, 8, 9, 11, 10, 14, 11, 14, 15,\n 11, 15, 13, 15, 17, 16, 15, 16, 12, 15, 12, 13,\n 15, 14, 18, 15, 18, 19, 15, 19, 17, 19, 4, 3,\n 19, 3, 16, 19, 16, 17, 19, 18, 5, 19, 5, 1,\n 19, 1, 4, 18, 14, 10, 18, 10, 6, 18, 6, 5,\n 3, 2, 8, 3, 8, 12, 3, 12, 16];\n const textureCoordsString = `0.5 0.999501, 0.5 0.999501, 0.191292 0.808708, 0.5 0.690792,\r\n 0.191292 0.808708, 0.191292 0.808708, 0.5 0.690792,\r\n 0.808708 0.808708, 0.000499517 0.5, 0.309208 0.5, 0.5 0.309208,\r\n 0.191292 0.191292, 0.191292 0.191292, 0.309208 0.5,\r\n 0.191292 0.191292, 0.5 0.000499517, 0.5 0.309208, 0.808708 0.191292,\r\n 0.000499517 0.5, 0.309208 0.5, 0.690792 0.5, 0.808708 0.808708,\r\n 0.5 0.999501, 0.690792 0.5, 0.5 0.999501, 0.191292 0.808708,\r\n 0.690792 0.5, 0.191292 0.808708, 0.309208 0.5, 0.309208 0.5,\r\n 0.191292 0.191292, 0.5 0.000499517, 0.309208 0.5, 0.5 0.000499517,\r\n 0.808708 0.191292, 0.309208 0.5, 0.808708 0.191292,\r\n 0.690792 0.5, 0.191292 0.808708, 0.309208 0.5, 0.690792 0.5,\r\n 0.191292 0.808708, 0.690792 0.5, 0.808708 0.808708,\r\n 0.191292 0.808708, 0.808708 0.808708, 0.808708 0.808708,\r\n 0.5 0.690792, 0.5 0.309208, 0.808708 0.808708, 0.5 0.309208,\r\n 0.808708 0.191292, 0.808708 0.191292, 0.9995 0.5, 0.191292 0.191292,\r\n 0.5 0.000499517, 0.808708 0.191292, 0.191292 0.191292,\r\n 0.808708 0.191292, 0.690792 0.5, 0.191292 0.191292,\r\n 0.690792 0.5, 0.191292 0.191292, 0.5 0.000499517, 0.808708 0.191292,\r\n 0.191292 0.191292, 0.808708 0.191292, 0.690792 0.5,\r\n 0.690792 0.5, 0.309208 0.5, 0.690792 0.5, 0.808708 0.808708,\r\n 0.5 0.999501, 0.690792 0.5, 0.5 0.999501, 0.191292 0.808708,\r\n 0.690792 0.5, 0.191292 0.808708, 0.5 0.000499517, 0.808708 0.191292,\r\n 0.690792 0.5, 0.5 0.000499517, 0.690792 0.5, 0.309208 0.5,\r\n 0.309208 0.5, 0.191292 0.191292, 0.9995 0.5, 0.808708 0.808708,\r\n 0.5 0.690792, 0.9995 0.5, 0.5 0.690792, 0.5 0.309208,\r\n 0.9995 0.5, 0.5 0.309208, 0.309208 0.5, 0.690792 0.5,\r\n 0.808708 0.808708, 0.309208 0.5, 0.808708 0.808708,\r\n 0.5 0.999501, 0.000499517 0.5, 0.5 0.309208, 0.000499517 0.5,\r\n 0.5 0.690792, 0.5 0.690792, 0.000499517 0.5, 0.5 0.690792,\r\n 0.191292 0.191292`;\n const texIndices = [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,\n 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,\n 44, 45, 0, 46, 47, 48, 49, 50, 51, 7, 52, 53,\n 54, 55, 56, 57, 58, 59, 60, 61, 9, 62, 63, 64,\n 65, 66, 67, 11, 68, 69, 70, 71, 72, 73, 74, 75,\n 76, 77, 13, 78, 79, 80, 81, 82, 83, 15, 84, 85,\n 86, 87, 88, 89, 90, 91, 92, 93, 17, 94, 95, 96,\n 97, 98, 99, 19, 1, 4, 100, 14, 101, 102, 10, 103,\n 18, 6, 5, 104, 2, 105, 106, 8, 107, 3, 12, 16];\n // -------------------------------------------------------------------------------------------------\n const pointsToParse = textureCoordsString.split(',');\n const uv = [];\n for (let i = 0; i < texIndices.length; i++) {\n const ndx = texIndices[i];\n const uvCoords = _utils.parseFloats(pointsToParse[ndx]);\n uv.push({ x: uvCoords[0], y: uvCoords[1] });\n }\n const geom = new MeshGeometry(positions, indices, uv);\n geom.key = `dodecahedron_${radius}`;\n computeSharpVertexNormals(geom);\n // TODO: barycenter, boundingBox, boundingSphere\n geom.boundingSphere = { center: Point3D.zero(), radius };\n return geom;\n }\n createMeshGeometry(radius = this.radius) {\n return PacemDodecahedronElement_1.createMeshGeometry(radius);\n }\n};\nPacemDodecahedronElement = PacemDodecahedronElement_1 = __decorate([\n CustomElement({ tagName: P + '-' + TAG_MIDDLE_NAME + '-primitive-dodecahedron' })\n], PacemDodecahedronElement);\nexport { PacemDodecahedronElement };\n// #endregion\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar PacemSphereElement_1;\nimport { CustomElement, P, Watch, PropertyConverters } from '@pacem/pacem-core';\nimport { computeSharpVertexNormals } from '../types';\nimport { MeshGeometry } from '../geometry';\nimport { Pacem3DPrimitiveElement } from './primitive';\nimport { TAG_MIDDLE_NAME, DEG2RAD } from '../constants';\n//namespace Pacem.Components.Drawing3D {\nlet PacemSphereElement = PacemSphereElement_1 = class PacemSphereElement extends Pacem3DPrimitiveElement {\n static createMeshGeometry(radius = 1, segs = 8) {\n //\n const nodes = [];\n const uv = [];\n const indices = [];\n //\n const r = radius, tessellation = segs;\n const theta = DEG2RAD * (360.0 / tessellation);\n const segments = tessellation % 2 == 0 ? tessellation / 2 : (tessellation - 1) / 2;\n // top vertex\n nodes.push({ x: .0, y: r, z: .0 });\n for (let j = 1; j < segments; j++) {\n // loop \"latitude\"\n const angle1 = theta * j;\n const cos_angle1 = Math.cos(angle1);\n const sin_angle1 = Math.sin(angle1);\n const v = 1.0 - 1.0 * j / segments;\n for (let i = 0; i < tessellation; i++) {\n // loop \"longitude\"\n const angle2 = theta * i - Math.PI / 2.0;\n const cos_angle2 = Math.cos(angle2);\n const sin_angle2 = Math.sin(angle2);\n const x = r * sin_angle1 * cos_angle2;\n const y = r * cos_angle1;\n const z = r * sin_angle1 * sin_angle2;\n nodes.push({ x, y, z });\n // coordinates & texture\n const i_prev = i == 0 ? tessellation - 1 : i - 1;\n const u = i == 0 ? .0 : 1.0 - 1.0 * i / tessellation;\n const u_prev = 1.0 - 1.0 * i_prev / tessellation;\n // triangles\n if (j == 1) {\n indices.push(1 + i);\n indices.push(1 + i_prev);\n indices.push(0);\n //\n uv.push({ x: u, y: v });\n uv.push({ x: u_prev, y: v });\n uv.push({ x: .5, y: 1.0 });\n }\n else {\n indices.push((j - 1) * tessellation + i + 1);\n indices.push((j - 1) * tessellation + i_prev + 1);\n indices.push((j - 2) * tessellation + i_prev + 1);\n indices.push((j - 1) * tessellation + i + 1);\n indices.push((j - 2) * tessellation + i_prev + 1);\n indices.push((j - 2) * tessellation + i + 1);\n //\n const v_prev = 1.0 - (j - 1.0) / segments;\n //var faceUV = [];\n uv.push({ x: u, y: v });\n uv.push({ x: u_prev, y: v });\n uv.push({ x: u_prev, y: v_prev });\n uv.push({ x: u, y: v });\n uv.push({ x: u_prev, y: v_prev });\n uv.push({ x: u, y: v_prev });\n }\n }\n }\n // bottom vertex\n nodes.push({ x: .0, y: -r, z: .0 });\n const last = nodes.length - 1;\n for (let i = 0; i < tessellation; i++) {\n const j = segments - 2;\n const i_prev = i == 0 ? tessellation - 1 : i - 1;\n const u = i == 0 ? .0 : 1.0 - 1.0 * i / tessellation;\n const u_prev = 1.0 - 1.0 * i_prev / tessellation;\n const v = 1.0 - (j + 1.0) / segments;\n // triangles\n indices.push(last);\n indices.push(j * tessellation + 1 + i_prev);\n indices.push(j * tessellation + 1 + i);\n uv.push({ x: .5, y: 0 });\n uv.push({ x: u_prev, y: v });\n uv.push({ x: u, y: v });\n }\n const geom = new MeshGeometry(nodes, indices, uv);\n geom.key = `sphere_${radius}_s${segs}`;\n computeSharpVertexNormals(geom);\n return geom;\n }\n createDefaultGeometry() {\n return PacemSphereElement_1.createMeshGeometry();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'radius':\n case 'segments':\n this.geometry = PacemSphereElement_1.createMeshGeometry(this.radius, this.segments);\n break;\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemSphereElement.prototype, \"radius\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemSphereElement.prototype, \"segments\", void 0);\nPacemSphereElement = PacemSphereElement_1 = __decorate([\n CustomElement({ tagName: P + '-' + TAG_MIDDLE_NAME + '-primitive-sphere' })\n], PacemSphereElement);\nexport { PacemSphereElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar PacemTorusElement_1;\nimport { CustomElement, P, Watch, PropertyConverters } from '@pacem/pacem-core';\nimport { computeSharpVertexNormals } from '../types';\nimport { MeshGeometry } from '../geometry';\nimport { Pacem3DPrimitiveElement } from './primitive';\nimport { TAG_MIDDLE_NAME, DEG2RAD } from '../constants';\n//namespace Pacem.Components.Drawing3D {\nlet PacemTorusElement = PacemTorusElement_1 = class PacemTorusElement extends Pacem3DPrimitiveElement {\n static createMeshGeometry(radius = 1, innerRadius = .25, segments = 24, sides = 12) {\n //\n const nodes = [];\n const uv = [];\n const coords = [];\n const theta = DEG2RAD * (360.0 / segments);\n const phi = DEG2RAD * (360.0 / sides);\n const r1 = radius;\n const r2 = innerRadius;\n for (let j = 0; j < segments; j++) {\n // Math.PI/2 adjustement (useful for UV mapping)\n const angle1 = theta * j - Math.PI / 2.0;\n const sin_angle1 = Math.sin(angle1);\n const cos_angle1 = Math.cos(angle1);\n for (let i = 0; i < sides; i++) {\n // Math.PI adjustement (useful for UV mapping)\n const angle2 = phi * i + Math.PI;\n const cos_angle2 = Math.cos(angle2);\n const x = r1 * cos_angle1 + r2 * cos_angle2 * cos_angle1;\n const y = r2 * Math.sin(angle2);\n const z = r1 * sin_angle1 + r2 * cos_angle2 * sin_angle1;\n nodes.push({ x, y, z });\n const prev_j = j > 0 ? j - 1 : segments - 1;\n const prev_i = i > 0 ? i - 1 : sides - 1;\n const u = j == 0 ? .0 : 1.0 - 1.0 * j / segments;\n const v = i > 0 ? 1.0 * i / sides : 1.0;\n const u_prev = j > 0 ? 1.0 - (j - 1.0) / segments : 1.0 / segments;\n const v_prev = i > 0 ? (i - 1.0) / sides : 1.0 - 1.0 / sides;\n // triangles <=> Int32Collection\n // <=> PointCollection\n coords.push(j * sides + prev_i);\n coords.push(prev_j * sides + prev_i);\n coords.push(prev_j * sides + i);\n coords.push(j * sides + prev_i);\n coords.push(prev_j * sides + i);\n coords.push(j * sides + i);\n //\n uv.push({ x: u, y: v_prev });\n uv.push({ x: u_prev, y: v_prev });\n uv.push({ x: u_prev, y: v });\n uv.push({ x: u, y: v_prev });\n uv.push({ x: u_prev, y: v });\n uv.push({ x: u, y: v });\n }\n }\n const geom = new MeshGeometry(nodes, coords, uv);\n geom.key = `torus_${radius}x${innerRadius}_t${segments}_s${sides}`;\n computeSharpVertexNormals(geom);\n return geom;\n }\n createDefaultGeometry() {\n return PacemTorusElement_1.createMeshGeometry();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'radius':\n case 'innerRadius':\n case 'segments':\n case 'sides':\n this.geometry = PacemTorusElement_1.createMeshGeometry(this.radius, this.innerRadius, this.segments, this.sides);\n break;\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemTorusElement.prototype, \"radius\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemTorusElement.prototype, \"innerRadius\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemTorusElement.prototype, \"segments\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemTorusElement.prototype, \"sides\", void 0);\nPacemTorusElement = PacemTorusElement_1 = __decorate([\n CustomElement({ tagName: P + '-' + TAG_MIDDLE_NAME + '-primitive-torus' })\n], PacemTorusElement);\nexport { PacemTorusElement };\n","import { CustomEventUtils, Utils } from '@pacem/pacem-core';\nimport { Point } from '@pacem/pacem-foundation';\nimport { isCamera } from '../types';\nfunction _clipPoint(evt, rect) {\n let x, y;\n if (Point.isPoint(evt)) {\n x = evt.x;\n y = evt.y;\n }\n else {\n const { page } = CustomEventUtils.getEventCoordinates(evt);\n const p = { x: page.x - rect.x, y: page.y - rect.y };\n x = p.x;\n y = p.y;\n }\n const clipX = x / rect.width * 2 - 1;\n const clipY = y / rect.height * -2 + 1;\n return { x: clipX, y: clipY };\n}\nexport class AdapterUtils {\n static isMeshGeometry(obj) {\n return 'positions' in obj && Utils.isArray(obj.positions)\n && 'triangleIndices' in obj && Utils.isArray(obj.triangleIndices);\n }\n static isVector3D(obj) {\n return 'x' in obj && typeof obj.x === 'number'\n && 'y' in obj && typeof obj.y === 'number'\n && 'z' in obj && typeof obj.z === 'number';\n }\n static isRgba(obj) {\n return 'r' in obj && typeof obj.r === 'number'\n && 'g' in obj && typeof obj.g === 'number'\n && 'b' in obj && typeof obj.b === 'number';\n }\n static flattenVectorArray(array) {\n const retval = [];\n for (let v of array) {\n if (AdapterUtils.isVector3D(v)) {\n retval.push(v.x, v.y, v.z);\n }\n else if (AdapterUtils.isRgba(v)) {\n retval.push(v.r, v.g, v.b, v.a ?? 1);\n }\n else {\n retval.push(v.x, v.y);\n }\n }\n return retval;\n }\n static findCamera(items) {\n return (items || []).find(r => isCamera(r) && !r.hide);\n }\n clipPixel(evt, viewport) {\n if (viewport instanceof HTMLElement) {\n viewport = Utils.offsetRect(viewport);\n }\n return _clipPoint(evt, viewport);\n }\n}\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, P, Watch, PropertyConverters, Utils, CustomElementUtils } from '@pacem/pacem-core';\nimport { Colors } from '@pacem/pacem-foundation';\nimport { Geometry } from '@pacem/pacem-numerical';\nimport { StalePropertyFlag, isMesh, isUi3DObject, Pacem3DAdapterElement, Pacem3DObjectElement, Pacem3DGroupElement, Pacem3DLightElement, Pacem3DCameraElement, Pacem3DPerspectiveCameraElement, Pacem3DOrthographicCameraElement, Pacem3DMeshElement } from '../types';\nimport { MeshGeometry, LineGeometry } from '../geometry';\nimport { AdapterUtils } from './shared';\nimport { isStandardMaterial, isPhongMaterial, isLambertMaterial, isLineMaterial, isMaterial } from '../materials/material';\n//namespace Pacem.Components.Drawing3D {\nfunction isMeshGeometry(obj) {\n return AdapterUtils.isMeshGeometry(obj);\n}\nfunction isVector3D(obj) {\n return AdapterUtils.isVector3D(obj);\n}\nfunction flattenVectorArray(array) {\n return AdapterUtils.flattenVectorArray(array);\n}\nconst threeJsVersion = '0.152.2', lastOrbitCtrlJsVersion = '0.147.0';\n;\nconst consts = {\n VERSION: threeJsVersion,\n API_URI: `https://unpkg.com/three@${threeJsVersion}/build/three.min.js`,\n ORBIT_URI: `https://unpkg.com/three@${lastOrbitCtrlJsVersion}/examples/js/controls/OrbitControls.js`,\n LOADERS: [\n //`https://unpkg.com/three@${threeJsVersion}/examples/js/loaders/OBJLoader.js`,\n //`https://unpkg.com/three@${threeJsVersion}/examples/js/loaders/MTLLoader.js`,\n ],\n DEFAULT_MATERIAL: function () {\n return new THREE.MeshStandardMaterial({ color: '#069', flatShading: true });\n }\n};\nfunction matrix3DToMatrix4(m) {\n const matrix = new THREE.Matrix4();\n matrix.set(m.m11, m.m12, m.m13, m.m14, m.m21, m.m22, m.m23, m.m24, m.m31, m.m32, m.m33, m.m34, m.offsetX, m.offsetY, m.offsetZ, m.m44);\n return matrix;\n}\n// as of https://codepen.io/discoverthreejs/full/vwVeZB\nfunction fitCameraToSelection(camera, controls /* OrbitControls */, selection, fitOffset = 1.333) {\n const box = new THREE.Box3();\n for (const object of selection) {\n box.expandByObject(object);\n }\n const size = box.getSize(new THREE.Vector3());\n const center = box.getCenter(new THREE.Vector3());\n const maxSize = Math.max(size.x, size.y, size.z);\n const fitHeightDistance = maxSize / (2 * Math.atan(Math.PI * camera.fov / 360));\n const fitWidthDistance = fitHeightDistance / camera.aspect;\n const distance = fitOffset * Math.max(fitHeightDistance, fitWidthDistance);\n const hasControls = !Utils.isNull(controls);\n var direction;\n if (hasControls) {\n direction = controls.target.clone()\n .sub(camera.position)\n .normalize()\n .multiplyScalar(distance);\n controls.maxDistance = distance * 10;\n controls.target.copy(center);\n }\n camera.near = distance / 100;\n camera.far = distance * 100;\n camera.updateProjectionMatrix();\n if (hasControls) {\n camera.position.copy(controls.target).sub(direction);\n controls.update();\n }\n}\nfunction flattenMatrix3D(m) {\n return [\n // right way to translate the matrix3D to matrix4\n m.m11, m.m21, m.m31, m.offsetX,\n m.m12, m.m22, m.m32, m.offsetY,\n m.m13, m.m23, m.m33, m.offsetZ,\n m.m14, m.m24, m.m34, m.m44,\n ];\n}\nfunction nodeGeometryToBufferGeometry(mesh) {\n const geometry = new THREE.BufferGeometry();\n const vertices = flattenVectorArray(mesh.positions);\n geometry.setAttribute('position', new THREE.Float32BufferAttribute(vertices, 3));\n if (mesh instanceof MeshGeometry) {\n if (!Utils.isNullOrEmpty(mesh.triangleIndices)) {\n geometry.setIndex(mesh.triangleIndices);\n }\n const vertices = flattenVectorArray(mesh.positions);\n geometry.setAttribute('position', new THREE.Float32BufferAttribute(vertices, 3));\n const uvs = flattenVectorArray(mesh.textureCoordinates);\n geometry.setAttribute('uv', new THREE.Float32BufferAttribute(uvs, 2));\n if (Utils.isNullOrEmpty(mesh.normals)) {\n geometry.computeVertexNormals();\n }\n else {\n const normals = flattenVectorArray(mesh.normals);\n geometry.setAttribute('normal', new THREE.Float32BufferAttribute(normals, 3));\n }\n }\n return geometry;\n}\nfunction lightToLight(item) {\n var light;\n switch (item.type) {\n case 'spot':\n const spotLight = new THREE.SpotLight();\n spotLight.target.position.set(item.target.x, item.target.y, item.target.z);\n light = spotLight;\n break;\n default:\n light = new THREE.PointLight();\n break;\n }\n return light;\n}\nfunction materialToMaterial(material) {\n if (Utils.isNull(material)) {\n return null;\n }\n const lineBase = {\n color: typeof material.color === 'string' ? material.color : Colors.stringify(material.color),\n opacity: material.opacity ?? 1,\n transparent: true,\n wireframe: material.wireframe ?? false,\n visible: material.visible ?? true\n };\n const base = Utils.extend({}, lineBase, { wireframe: material.wireframe ?? false });\n const mipMapMaterial = (m) => {\n if (material.map) {\n m['map'] = new THREE.TextureLoader().load(material.map, _ => {\n // console.log('texture loaded!');\n m.needsUpdate = true;\n });\n }\n return m;\n };\n if (isStandardMaterial(material)) {\n const std = mipMapMaterial(new THREE.MeshStandardMaterial(Utils.extend(base, {\n roughness: material.roughness,\n metalness: material.metalness,\n emissive: material.emissiveColor,\n flatShading: material.flatShading,\n refractionRatio: material.refractionRatio,\n })));\n return std;\n }\n else if (isPhongMaterial(material)) {\n const phong = mipMapMaterial(new THREE.MeshPhongMaterial(Utils.extend(base, {\n shininess: material.shininess,\n emissive: material.emissiveColor,\n flatShading: material.flatShading,\n specular: material.specularColor,\n reflectivity: material.reflectivity,\n refractionRatio: material.refractionRatio,\n })));\n return phong;\n }\n else if (isLambertMaterial(material)) {\n const lambert = mipMapMaterial(new THREE.MeshLambertMaterial(Utils.extend(base, {\n emissive: material.emissiveColor,\n reflectivity: material.reflectivity,\n refractionRatio: material.refractionRatio,\n })));\n return lambert;\n }\n else if (isLineMaterial(material)) {\n const dash = material.dashArray && material.dashArray[0] || null, gap = material.dashArray && material.dashArray.length > 1 && material.dashArray[1] || dash;\n const lineMatOptions = Utils.extend(lineBase, {\n linecap: material.lineCap ?? 'round',\n linejoin: material.lineJoin ?? 'round',\n linewidth: material.lineWidth ?? 1\n });\n return Utils.isNullOrEmpty(material.dashArray) ?\n new THREE.LineBasicMaterial(lineMatOptions)\n : new THREE.LineDashedMaterial(Utils.extend({ dashSize: dash, gapSize: gap }, lineMatOptions));\n }\n else if (isMaterial(material)) {\n const basic = mipMapMaterial(new THREE.MeshBasicMaterial(base));\n return basic;\n }\n else {\n return null;\n }\n}\nfunction materialToMaterials(frontMaterial, backMaterial, multiAllowed) {\n // material\n const multi = multiAllowed;\n // composite\n const materials = [];\n // front mat\n const material = materialToMaterial(frontMaterial);\n if (!Utils.isNull(material)) {\n material.side = THREE.FrontSide;\n materials.push(material);\n }\n // back mat\n if (!Utils.isNull(backMaterial)) {\n if (backMaterial == frontMaterial) {\n material.side = THREE.DoubleSide;\n }\n else {\n // multi-material\n const backsideMaterial = materialToMaterial(backMaterial);\n if (!Utils.isNull(backsideMaterial)) {\n backsideMaterial.side = THREE.BackSide;\n materials.push(backsideMaterial);\n }\n }\n }\n return multi && materials.length > 1 ? materials : material;\n}\nfunction load(item) {\n if (!Utils.isNullOrEmpty(item.content)) {\n const type = item.type?.toLowerCase();\n switch (type) {\n case 'obj':\n const obj = new THREE['OBJLoader']();\n return obj.parse(item.content);\n default:\n const loader = new THREE.ObjectLoader();\n return loader.parse(item.content);\n }\n }\n else {\n throw new Error('Missing content.');\n }\n}\nfunction meshType(geometry) {\n return geometry instanceof LineGeometry ? THREE.Line : THREE.Mesh;\n}\nfunction build(mesh) {\n if (Utils.isNullOrEmpty(mesh.geometry)) {\n return null;\n }\n const ctor = meshType(mesh.geometry);\n return new ctor();\n}\nfunction isTHREEAvailable() {\n return 'THREE' in window;\n}\nasync function whenTHREEAvailable(...args) {\n const start = Date.now();\n var initialized = false;\n do {\n initialized = isTHREEAvailable();\n for (let pred of args) {\n initialized &&= pred();\n }\n if (!initialized) {\n await new Promise(resolve => setTimeout(resolve, 500));\n }\n } while (!initialized && (Date.now() - start) < 30000);\n if (!initialized) {\n throw new Error('The wait for THREE adapter initialization timed out.');\n }\n}\nlet Pacem3DThreeAdapterElement = class Pacem3DThreeAdapterElement extends Pacem3DAdapterElement {\n constructor() {\n super(...arguments);\n this._renderer = null;\n this._camera = null;\n this._scene = null;\n this._orbitCtrls = null;\n this._objects = new WeakMap();\n this._dict = {};\n this._orbitControlsDelegate = (_) => {\n };\n this._ensureAndRefresh = (item, object3D, parent) => {\n object3D.matrixAutoUpdate = false;\n // choose whether to render the object or not\n if (object3D.visible = !item.hide) {\n // the modeling part\n // 1. pacem 3d mesh\n if (isMesh(item)) {\n let mesh3D = object3D;\n if (item.flags.indexOf(StalePropertyFlag.Geometry) >= 0) {\n mesh3D.geometry.dispose();\n // swap Line <-> Mesh according to the geometry\n const mesh3D2 = build(item);\n if (mesh3D2.constructor.name !== mesh3D.constructor.name) {\n parent.remove(object3D);\n delete this._dict[object3D.id];\n object3D = mesh3D = mesh3D2;\n }\n // /swap\n mesh3D.geometry = nodeGeometryToBufferGeometry(item.geometry);\n }\n if (item.flags.indexOf(StalePropertyFlag.Material) >= 0) {\n if (Utils.isArray(mesh3D.material)) {\n for (let m of mesh3D.material) {\n m.dispose();\n }\n }\n else {\n mesh3D.material.dispose();\n }\n mesh3D.material = materialToMaterials(item.material) || consts.DEFAULT_MATERIAL();\n }\n }\n // 2. 3d 'native' object\n else if (item instanceof Pacem3DObjectElement\n && (item.flags.indexOf(StalePropertyFlag.Material) >= 0 || item.flags.indexOf(StalePropertyFlag.Geometry) >= 0)) {\n // swap reference\n object3D.parent && object3D.parent.remove(object3D);\n object3D = load(item);\n }\n // 3. grouping object\n else if (item instanceof Pacem3DGroupElement) {\n if (item.flags.indexOf(StalePropertyFlag.Children) >= 0) {\n // remove all children\n for (let j = object3D.children.length - 1; j >= 0; j--) {\n const child = object3D.children[j];\n object3D.remove(child);\n }\n // re-create\n for (let child of item.items) {\n this._addOrUpdateItem(child, object3D);\n }\n }\n }\n // 4. light\n else if (item instanceof Pacem3DLightElement) {\n const light = object3D;\n if (item.flags.indexOf(StalePropertyFlag.Light) >= 0) {\n light.color = new THREE.Color(item.color);\n light.intensity = item.intensity;\n }\n }\n // the configuring part\n let posv = item.position; // || new THREE.Vector3(0, 0, 0);\n if (isUi3DObject(item)\n && !Utils.isNull(item.transformMatrix)\n && (item.flags.indexOf(StalePropertyFlag.Position) >= 0 || item.flags.indexOf(StalePropertyFlag.Transform) >= 0)) {\n const positionMatrix = Geometry.LinearAlgebra.Matrix3D.from(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, posv.x, posv.y, posv.z, 1);\n // item.transformMatrix is a local matrix thus\n // prepend in the multiplication (i.e. FIRST apply transform THEN apply positioning)\n const transformMatrix = Geometry.LinearAlgebra.Matrix3D.multiply(item.transformMatrix, positionMatrix);\n THREE.Matrix4.prototype.set.apply(object3D.matrix, flattenMatrix3D(transformMatrix));\n //object3D.updateMatrix();\n }\n else if (item.flags.indexOf(StalePropertyFlag.Position) >= 0) {\n object3D.position.set(posv.x, posv.y, posv.z);\n object3D.updateMatrix();\n }\n }\n object3D.userData = item.tag;\n if (Utils.isNull(parent.getObjectById(object3D.id))) {\n parent.add(object3D);\n this._dict[object3D.id] = item;\n }\n // clear flags\n item.flags.splice(0);\n return object3D;\n };\n //#endregion\n }\n _assertMonoStage(scene) {\n if (scene != this._3d && !Utils.isNull(this._3d)) {\n throw new Error('Stage mismatch.');\n }\n }\n dispose(scene) {\n // do nothing\n }\n snapshot(scene, background, type, quality) {\n if (scene != this._3d) {\n return Promise.resolve(null);\n }\n const jpeg = !Utils.isNullOrEmpty(background), mime = type ?? (jpeg ? 'image/jpeg' : null), compression = quality ?? (jpeg ? .9 : null);\n return new Promise((resolve, _) => {\n this.render();\n Utils.snapshotElement(this._stage, background, mime, compression).then(resolve);\n });\n }\n project(scene, point3D) {\n this._assertMonoStage(scene);\n // check feasibility\n if (Utils.isNull(this._camera) || Utils.isNull(this._stage))\n return null;\n //\n const stage = this._stage;\n const vector = new THREE.Vector3(point3D.x, point3D.y, point3D.z);\n const width = stage.width, height = stage.height;\n const widthHalf = width / 2, heightHalf = height / 2;\n const point = vector.project(this._camera);\n const x = (point.x * widthHalf) + widthHalf;\n const y = -(point.y * heightHalf) + heightHalf;\n return { x: x, y: y };\n }\n zoomFit(scene, ...items) {\n this._assertMonoStage(scene);\n return new Promise((resolve, reject) => {\n const camera = this._camera;\n const map = this._objects;\n const targets = items.filter(o => map.has(o)).map(o => map.get(o));\n if (Utils.isNull(camera) || Utils.isNullOrEmpty(targets)) {\n resolve();\n }\n fitCameraToSelection(camera, this._orbitCtrls, targets);\n resolve();\n });\n }\n getScene(scene) {\n this._assertMonoStage(scene);\n return this._scene;\n }\n raycast(scene, point, size, callback) {\n this._assertMonoStage(scene);\n if (isTHREEAvailable() && !Utils.isNull(this._camera)) {\n const camera = this._camera;\n const vector = new THREE.Vector2((point.x / size.width) * 2 - 1, -(point.y / size.height) * 2 + 1);\n const raycaster = new THREE.Raycaster();\n raycaster.setFromCamera(vector, camera);\n const intersects = raycaster.intersectObjects(this._scene.children, true);\n let obj;\n let intersection;\n let j = 0;\n while (intersects.length > j && (intersection = intersects[j++]) && (obj = intersection.object)) {\n const item = this._dict[obj.id];\n if (item.inert) {\n continue;\n }\n const v = intersection.point, x = v.x, y = v.y, z = v.z, point = { x, y, z };\n callback({ object: this._dict[obj.id], point });\n return;\n }\n }\n callback(null);\n }\n // #region ABSTRACT IMPLEMENTATION\n async initialize(container) {\n if (!Utils.isNull(this._stage)) {\n return this._stage;\n }\n this._3d = container;\n const wrapper = container.stage;\n const stage = this._stage = document.createElement('canvas');\n wrapper.innerHTML = '';\n wrapper.appendChild(stage);\n if (!isTHREEAvailable()) {\n await CustomElementUtils.importjs(consts.API_URI);\n await whenTHREEAvailable();\n await Promise.all([CustomElementUtils.importjs(consts.ORBIT_URI)]\n .concat(consts.LOADERS.map(js => CustomElementUtils.importjs(js))));\n }\n // here comes THREE.js\n this._scene = new THREE.Scene();\n // this._scene.add(new THREE.Mesh(new THREE.PlaneGeometry(1, 1, 1, 1), consts.DEFAULT_MATERIAL()));\n this.invalidateSize(container);\n let w = this._stage.width, h = this._stage.height;\n //if (!ctrl.renderer)\n let parameters = {\n canvas: stage, antialias: true, stencil: false, alpha: container.transparent ?? true //, clearAlpha: 1\n };\n this._renderer = new THREE.WebGLRenderer(parameters);\n this._renderer.setSize(w, h);\n if (container.background && !container.transparent) {\n let clr = container.background;\n if (typeof clr === 'string') {\n clr = Colors.parse(clr);\n }\n const theejsClr = new THREE.Color(clr.r, clr.g, clr.b);\n this._renderer.setClearColor(theejsClr, clr.a);\n }\n this.orbit = container.orbit;\n return stage;\n }\n _setCamera(cam) {\n this._camera = cam;\n this.invalidateSize(this._3d);\n this._disposeOrbitControls();\n // re-init\n if (this.orbit) {\n this._initOrbitControls();\n }\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'orbit') {\n if (val === true)\n this._initOrbitControls();\n else\n this._disposeOrbitControls();\n }\n }\n _initOrbitControls() {\n const cam = this._camera;\n if (Utils.isNull(this._3d) || Utils.isNull(cam)) {\n return;\n }\n const controls = this._orbitCtrls = new THREE['OrbitControls'](cam, this._3d.stage);\n controls.addEventListener('change', this._orbitControlsDelegate);\n }\n _disposeOrbitControls() {\n const controls = this._orbitCtrls;\n if (Utils.isNull(controls)) {\n return;\n }\n controls.removeEventListener('change', this._orbitControlsDelegate);\n controls.dispose();\n }\n _updateRenderer(container, renderer = this._renderer) {\n if (!container.transparent) {\n if (container.background) {\n let clr = container.background;\n if (typeof clr === 'string') {\n clr = Colors.parse(clr);\n }\n const theejsClr = new THREE.Color(clr.r, clr.g, clr.b);\n renderer.setClearColor(theejsClr, clr.a);\n }\n else {\n renderer.setClearColor(null);\n }\n }\n else {\n renderer.setClearAlpha(0);\n }\n }\n invalidateSize(scene, size = scene.size) {\n this._assertMonoStage(scene);\n if (!isTHREEAvailable() || Utils.isNull(size)) {\n return;\n }\n let w = size.width;\n let h = size.height;\n this._stage.width = w;\n this._stage.height = h;\n let camera = this._camera;\n if (camera instanceof THREE.PerspectiveCamera) {\n camera.aspect = w / h;\n camera.updateProjectionMatrix();\n }\n if (this._renderer) {\n this._renderer.setSize(w, h);\n this._updateRenderer(scene);\n }\n }\n removeItem(scene, item) {\n this._assertMonoStage(scene);\n const bag = this._objects;\n const obj3d = bag.get(item);\n if (!Utils.isNull(obj3d)) {\n this._scene.remove(obj3d);\n delete this._dict[obj3d.id];\n bag.delete(item);\n }\n }\n updateItem(scene, item) {\n this._assertMonoStage(scene);\n const bag = this._objects;\n if (!Utils.isNull(item.parent) && bag.has(item.parent)) {\n const parent3d = bag.get(item.parent);\n this._addOrUpdateItem(item, parent3d);\n }\n else {\n this._addOrUpdateItem(item);\n }\n }\n addItem(scene, item) {\n this._assertMonoStage(scene);\n this._addOrUpdateItem(item);\n }\n _addOrUpdateItem(item, parent = this._scene) {\n if (!isTHREEAvailable() || Utils.isNull(parent)) {\n return;\n }\n if (item instanceof Pacem3DCameraElement) {\n if (item instanceof Pacem3DPerspectiveCameraElement) {\n var pcam;\n if (this._camera instanceof THREE.PerspectiveCamera) {\n var pcam = this._camera;\n }\n else {\n pcam = new THREE.PerspectiveCamera();\n }\n const lookAtVector = new THREE.Vector3(item.lookAt.x, item.lookAt.y, item.lookAt.z);\n pcam.lookAt(lookAtVector);\n pcam.position.set(item.position.x, item.position.y, item.position.z);\n pcam.fov = item.fov;\n pcam.aspect = item.aspect;\n pcam.near = item.near;\n pcam.far = item.far;\n //\n this._setCamera(pcam);\n //\n const orbit = this._orbitCtrls;\n if (!Utils.isNull(orbit) && orbit.object === pcam) {\n orbit.target = lookAtVector;\n orbit.update();\n }\n }\n else if (item instanceof Pacem3DOrthographicCameraElement) {\n // bunch of duplicated code\n // no need to refactor since it's a deprecating branch of development\n var ocam;\n if (this._camera instanceof THREE.OrthographicCamera) {\n var ocam = this._camera;\n }\n else {\n ocam = new THREE.OrthographicCamera();\n }\n const lookAtVector = new THREE.Vector3(item.lookAt.x, item.lookAt.y, item.lookAt.z);\n ocam.lookAt(lookAtVector);\n ocam.position.set(item.position.x, item.position.y, item.position.z);\n ocam.left = item.left;\n ocam.right = item.right;\n ocam.top = item.top;\n ocam.bottom = item.bottom;\n ocam.near = item.near;\n ocam.far = item.far;\n //\n this._setCamera(ocam);\n //\n const orbit = this._orbitCtrls;\n if (!Utils.isNull(orbit) && orbit.object === ocam) {\n orbit.target = lookAtVector;\n orbit.update();\n }\n }\n else {\n // cam not supported\n throw new Error(`Camera ${item} not supported.`);\n }\n }\n else {\n if (!this._objects.has(item)) {\n // adding\n const then = (object3D) => {\n // clear flags\n // item.flags.splice(0);\n if (object3D) {\n object3D = this._ensureAndRefresh(item, object3D, parent);\n this._objects.set(item, object3D);\n }\n else {\n // object not built\n // throw?\n }\n };\n // TODO: switch to interface matching\n if (item instanceof Pacem3DObjectElement) {\n const mesh = load(item);\n then(mesh);\n }\n else if (item instanceof Pacem3DMeshElement) {\n // beware! a change in the geometry could cause a change in the object3D type\n const mesh = build(item);\n then(mesh);\n }\n else if (item instanceof Pacem3DLightElement) {\n const light = lightToLight(item);\n then(light);\n }\n else if (item instanceof Pacem3DGroupElement) {\n const group = new THREE.Group();\n then(group);\n }\n }\n else {\n // updating\n const obj = this._objects.get(item);\n const objOut = this._ensureAndRefresh(item, obj, parent);\n if (objOut != obj) {\n this._objects.set(item, objOut);\n }\n }\n }\n }\n render() {\n if (this._camera) {\n this._renderer.render(this._scene, this._camera);\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], Pacem3DThreeAdapterElement.prototype, \"orbit\", void 0);\nPacem3DThreeAdapterElement = __decorate([\n CustomElement({ tagName: P + '-3d-three-adapter' })\n], Pacem3DThreeAdapterElement);\nexport { Pacem3DThreeAdapterElement };\n","//namespace Pacem.Drawing3D.WebGPU {\nexport const LABEL_PREFIX = 'pacem-3d-';\nexport const U32_MAX = 4_294_967_295;\n// #region vertex state\nexport const VERTEX_BUFFER_INDEX_MESH_POSITION = 0;\nexport const VERTEX_BUFFER_INDEX_MESH_NORMAL = 1;\nexport const VERTEX_BUFFER_INDEX_MESH_UV = 2;\nexport const VERTEX_OUTPUT_LOCATION_NORMAL = 0;\nexport const VERTEX_OUTPUT_LOCATION_VERTEX = 1;\nexport const VERTEX_OUTPUT_LOCATION_UV = 2;\nexport const VERTEX_OUTPUT_LOCATION_INDEX = 3;\nexport const VERTEX_OUTPUT_LOCATION_RAY = 4;\nexport const VERTEX_OUTPUT_LOCATION_INSTANCE = 5;\nexport const UNIFORM_GROUP_INDEX_TRANSFORM = 1;\nexport const UNIFORM_GROUP_INDEX_CAMERA = 0;\nexport const UNIFORM_GROUP_INDEX_INTERACTION = UNIFORM_GROUP_INDEX_CAMERA; // put it in camera same binding group\nexport const STORAGE_GROUP_INDEX_LINE = 2;\nexport const UNIFORM_GROUP_INDEX_COLORPICKING = 2;\nexport const UNIFORM_BINDING_INDEX_TRANSFORM = 0;\nexport const UNIFORM_BINDING_INDEX_CAMERA = 0;\nexport const UNIFORM_BINDING_INDEX_INTERACTION = 1;\n// #endregion\n// #region fragment state\nexport const MATERIAL_GROUP_INDEX = 2;\nexport const UNIFORM_GROUP_INDEX_LIGHTING = MATERIAL_GROUP_INDEX + 1;\nexport const STORAGE_MATERIAL_INDEX = 0;\nexport const SAMPLER_BINDING_INDEX = 1;\nexport const TEXTURE_BINDING_INDEX = 2;\nexport const MATERIAL_REFERENCE = 'material';\nexport const VERTEX_COLOR_REFERENCE = 'color';\nexport const AMBIENT_COLOR_REFERENCE = 'ambient';\nexport const LIGHTING_COLOR_REFERENCE = 'lighting';\n// #endregion\n// #region WGSL\nexport const WGSL_VERTEXINPUT_STRUCT_NAME = 'VertexInput';\nexport const WGSL_VERTEXOUTPUT_STRUCT_NAME = 'VertexOutput';\nexport const WGSL_INTERACTIONDATA_STRUCT_NAME = 'InteractionData';\n// #endregion\n// Kinda polyfill for WebGPU constants, as TypeScript 6.0 does include WebGPU types but does NOT include these constants for magic numbers:\nexport var GPUBufferUsage;\n(function (GPUBufferUsage) {\n GPUBufferUsage[GPUBufferUsage[\"COPY_SRC\"] = 4] = \"COPY_SRC\";\n GPUBufferUsage[GPUBufferUsage[\"COPY_DST\"] = 8] = \"COPY_DST\";\n GPUBufferUsage[GPUBufferUsage[\"INDEX\"] = 16] = \"INDEX\";\n GPUBufferUsage[GPUBufferUsage[\"INDIRECT\"] = 256] = \"INDIRECT\";\n GPUBufferUsage[GPUBufferUsage[\"MAP_READ\"] = 1] = \"MAP_READ\";\n GPUBufferUsage[GPUBufferUsage[\"MAP_WRITE\"] = 2] = \"MAP_WRITE\";\n GPUBufferUsage[GPUBufferUsage[\"QUERY_RESOLVE\"] = 512] = \"QUERY_RESOLVE\";\n GPUBufferUsage[GPUBufferUsage[\"STORAGE\"] = 128] = \"STORAGE\";\n GPUBufferUsage[GPUBufferUsage[\"UNIFORM\"] = 64] = \"UNIFORM\";\n GPUBufferUsage[GPUBufferUsage[\"VERTEX\"] = 32] = \"VERTEX\";\n})(GPUBufferUsage || (GPUBufferUsage = {}));\nexport var GPUTextureUsage;\n(function (GPUTextureUsage) {\n GPUTextureUsage[GPUTextureUsage[\"COPY_SRC\"] = 1] = \"COPY_SRC\";\n GPUTextureUsage[GPUTextureUsage[\"COPY_DST\"] = 2] = \"COPY_DST\";\n GPUTextureUsage[GPUTextureUsage[\"RENDER_ATTACHMENT\"] = 16] = \"RENDER_ATTACHMENT\";\n GPUTextureUsage[GPUTextureUsage[\"STORAGE_BINDING\"] = 8] = \"STORAGE_BINDING\";\n GPUTextureUsage[GPUTextureUsage[\"TEXTURE_BINDING\"] = 4] = \"TEXTURE_BINDING\";\n})(GPUTextureUsage || (GPUTextureUsage = {}));\nexport var GPUShaderStage;\n(function (GPUShaderStage) {\n GPUShaderStage[GPUShaderStage[\"VERTEX\"] = 1] = \"VERTEX\";\n GPUShaderStage[GPUShaderStage[\"FRAGMENT\"] = 2] = \"FRAGMENT\";\n GPUShaderStage[GPUShaderStage[\"COMPUTE\"] = 4] = \"COMPUTE\";\n})(GPUShaderStage || (GPUShaderStage = {}));\nexport var GPUMapMode;\n(function (GPUMapMode) {\n GPUMapMode[GPUMapMode[\"READ\"] = 1] = \"READ\";\n GPUMapMode[GPUMapMode[\"WRITE\"] = 2] = \"WRITE\";\n})(GPUMapMode || (GPUMapMode = {}));\n","export var WGSLBindingType;\n(function (WGSLBindingType) {\n WGSLBindingType[\"Mesh\"] = \"mesh\";\n WGSLBindingType[\"Camera\"] = \"camera\";\n WGSLBindingType[\"Texture\"] = \"texture\";\n WGSLBindingType[\"Light\"] = \"light\";\n WGSLBindingType[\"Interaction\"] = \"interaction\";\n})(WGSLBindingType || (WGSLBindingType = {}));\n","import { GPUBufferUsage } from './constants';\n//namespace Pacem.Drawing3D.WebGPU {\nexport class Buffers {\n static create(device, data, label = '') {\n const buffer = device.createBuffer({\n size: data.byteLength, label,\n usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,\n mappedAtCreation: true\n });\n new Float32Array(buffer.getMappedRange()).set(data);\n buffer.unmap();\n return buffer;\n }\n static createUniform(device, data, label = '') {\n return device.createBuffer({\n size: data.byteLength, label,\n usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,\n });\n }\n static createStorage(device, data, label = '') {\n return device.createBuffer({\n size: data.byteLength, label,\n usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST,\n });\n }\n static createIndexed(device, data, label = '') {\n const buffer = device.createBuffer({\n size: data.byteLength, label,\n usage: GPUBufferUsage.INDEX | GPUBufferUsage.COPY_DST,\n mappedAtCreation: true\n });\n new Uint16Array(buffer.getMappedRange()).set(data);\n buffer.unmap();\n return buffer;\n }\n}\nexport class BufferLayouts {\n static createVertex(shaderLocationStart = 0, size = 3, ...sizes) {\n const attributes = [];\n let fullSize = 0, index = 0;\n for (let sz of [size].concat(sizes)) {\n attributes.push({\n shaderLocation: shaderLocationStart + index,\n offset: fullSize * Float32Array.BYTES_PER_ELEMENT,\n format: `float32x${sz}`,\n });\n fullSize += sz;\n index++;\n }\n return {\n arrayStride: fullSize /* x, y, z */ * Float32Array.BYTES_PER_ELEMENT,\n attributes,\n stepMode: 'vertex'\n };\n }\n}\n","import { Utils } from '@pacem/pacem-core';\nimport { VERTEX_OUTPUT_LOCATION_NORMAL, VERTEX_OUTPUT_LOCATION_VERTEX, VERTEX_OUTPUT_LOCATION_UV, VERTEX_OUTPUT_LOCATION_INDEX, VERTEX_OUTPUT_LOCATION_RAY, VERTEX_OUTPUT_LOCATION_INSTANCE, MATERIAL_GROUP_INDEX, STORAGE_MATERIAL_INDEX, VERTEX_COLOR_REFERENCE, LIGHTING_COLOR_REFERENCE, AMBIENT_COLOR_REFERENCE } from '../constants';\nconst DefaultBasicMaterialFragmentOptions = {\n outputNormalLocation: VERTEX_OUTPUT_LOCATION_NORMAL,\n outputVertexLocation: VERTEX_OUTPUT_LOCATION_VERTEX,\n outputUvLocation: VERTEX_OUTPUT_LOCATION_UV,\n outputVertexIndexLocation: VERTEX_OUTPUT_LOCATION_INDEX,\n outputRayIndexLocation: VERTEX_OUTPUT_LOCATION_RAY,\n outputInstanceIndexLocation: VERTEX_OUTPUT_LOCATION_INSTANCE,\n storageMaterialGroupIndex: MATERIAL_GROUP_INDEX,\n storageMaterialBindingIndex: STORAGE_MATERIAL_INDEX,\n};\nfunction adaptWGSLStringArray(array = []) {\n return array.join('\\r\\n');\n}\nfunction adaptWGSLModifierStringArray(array = []) {\n let output = '';\n for (let modifier of array) {\n const trimmed = modifier.trim();\n if (trimmed.endsWith(';')) {\n output += (trimmed + '\\r\\n\\t');\n }\n else {\n output += `${VERTEX_COLOR_REFERENCE} = ${trimmed};\\r\\n\\t`;\n }\n }\n return output;\n}\nexport function getBasicMaterialFragmentWgsl(extensions = {}, options = DefaultBasicMaterialFragmentOptions) {\n const opts = Utils.extend({}, DefaultBasicMaterialFragmentOptions, options);\n const definitions = adaptWGSLStringArray(extensions.definitions), bindings = adaptWGSLStringArray(extensions.bindings), modifiers = adaptWGSLModifierStringArray(extensions.modifiers);\n const color = VERTEX_COLOR_REFERENCE, lighting = LIGHTING_COLOR_REFERENCE, ambient = AMBIENT_COLOR_REFERENCE;\n return `// definitions\r\n\r\n${definitions}\r\n\r\n// bindings\r\n@group(${opts.storageMaterialGroupIndex}) @binding(${opts.storageMaterialBindingIndex}) var<storage, read> diffuseColor: vec4f;\r\n${bindings}\r\n\r\nconst empty = vec4f(0,0,0,0);\r\nconst white = vec4f(1,1,1,1);\r\n\r\n@fragment fn main (\r\n @builtin(position) position: vec4f, // clip-space position\r\n @location(${opts.outputNormalLocation}) normal: vec3f, // world-space normal\r\n @location(${opts.outputVertexLocation}) vertex: vec3f, // world-space position\r\n @location(${opts.outputUvLocation}) uv: vec2f,\r\n @location(${opts.outputVertexIndexLocation}) @interpolate(flat) index: u32, // vertex index,\r\n @location(${opts.outputRayIndexLocation}) ray: vec3f, // ray (eye-to-vertex) vector\r\n @location(${opts.outputInstanceIndexLocation}) @interpolate(flat) instance : u32, // instance index\r\n) -> @location(0) vec4f {\r\n var ${color} = diffuseColor;\r\n var ${ambient}: vec4f = empty;\r\n var ${lighting}: vec4f = empty;\r\n\r\n // modifiers\r\n ${modifiers}\r\n\r\n ${lighting} = select(white, ${lighting}, ${lighting}.a > 0);\r\n return ${color} * ${lighting} + ${ambient};\r\n}`;\n}\n","import { Utils } from '@pacem/pacem-core';\nimport { STORAGE_GROUP_INDEX_LINE, STORAGE_MATERIAL_INDEX } from '../constants';\nconst DefaultLineMaterialFragmentOptions = {\n outputInstanceIndexLocation: 0,\n outputVertexIndexLocation: 1,\n storageMaterialGroupIndex: STORAGE_GROUP_INDEX_LINE + 1,\n storageMaterialBindingIndex: STORAGE_MATERIAL_INDEX,\n};\nfunction adaptWGSLStringArray(array = []) {\n return array.join('\\r\\n');\n}\nfunction adaptWGSLModifierStringArray(array = []) {\n let output = '';\n for (let modifier of array) {\n const trimmed = modifier.trim();\n if (trimmed.endsWith(';')) {\n output += (trimmed + '\\r\\n');\n }\n else {\n output += `output = ${trimmed};\\r\\n`;\n }\n }\n return output;\n}\nexport function getLineMaterialFragmentWgsl(extensions = {}, options = DefaultLineMaterialFragmentOptions) {\n const opts = Utils.extend({}, DefaultLineMaterialFragmentOptions, options);\n const definitions = adaptWGSLStringArray(extensions.definitions), bindings = adaptWGSLStringArray(extensions.bindings), modifiers = adaptWGSLModifierStringArray(extensions.modifiers);\n return `// definitions\r\n${definitions}\r\n\r\n// bindings\r\n@group(${options.storageMaterialGroupIndex}) @binding(${options.storageMaterialBindingIndex}) var<storage, read> vertexColors: array<vec4f>;\r\n${bindings}\r\n\r\nfn getVertexColor(index: u32) -> vec4f {\r\n let numColors = arrayLength(&vertexColors);\r\n let vertexColorIndex = index % numColors;\r\n return vertexColors[vertexColorIndex];\r\n}\r\n\r\n@fragment fn main (\r\n @builtin(position) position: vec4f, // clip-space position\r\n @location(${opts.outputInstanceIndexLocation}) @interpolate(flat) instance: u32, // instance index\r\n @location(${opts.outputVertexIndexLocation}) @interpolate(flat) index: u32 // vertex index\r\n) -> @location(0) vec4f {\r\n var output = getVertexColor(index);\r\n\r\n // modifiers\r\n ${modifiers}\r\n\r\n return output;\r\n}`;\n}\n","import { Utils } from '@pacem/pacem-core';\nimport { Colors } from '@pacem/pacem-foundation';\nimport { isBasicMaterial, isLineMaterial, KnownShader } from '../../materials/material';\nimport { Buffers } from './buffers';\nimport { GPUTextureUsage } from './constants';\nimport { getBasicMaterialFragmentWgsl } from './wgsl/basic-material-fragment';\nimport { getLineMaterialFragmentWgsl } from './wgsl/line-material-fragment';\nimport { LABEL_PREFIX } from './constants';\n//namespace Pacem.Drawing3D.WebGPU {\nexport class Materials {\n static create(material) {\n if (isBasicMaterial(material)) {\n return new BasicMaterial(material);\n }\n if (isLineMaterial(material)) {\n return new LineMaterial(material);\n }\n throw new TypeError(`Material type '${material.shader}' not supported.`);\n }\n}\nconst EmptyMaterialWGSLDelegates = {\n// empty delegates\n};\nclass MaterialBase {\n constructor(material) {\n if (Utils.isNull(this.#material = material)) {\n throw new ReferenceError(\"Null material provided.\");\n }\n }\n #material;\n get material() { return this.#material; }\n get wgsl() {\n return EmptyMaterialWGSLDelegates;\n }\n buffer({ device }, label = LABEL_PREFIX + 'material-' + this.shader + '-buffer') {\n const { r, g, b, a } = this._diffuseColor();\n const materialValue = new Float32Array([r, g, b, a]);\n return { buffer: Buffers.createStorage(device, materialValue, label), value: materialValue, version: performance.now() };\n }\n _diffuseColor() {\n const { visible, opacity, color } = this.material;\n if (!(visible ?? true)) {\n return { r: 0, g: 0, b: 0, a: 0 };\n }\n const retval = typeof color === 'string' ? Colors.parse(color) : (color ?? { r: 1, g: 1, b: 1, a: 1 });\n if (opacity >= 0 && opacity <= 1) {\n return Utils.extend(retval, { a: retval.a * opacity });\n }\n return retval;\n }\n}\nexport class BasicMaterial extends MaterialBase {\n get shader() {\n return KnownShader.Basic;\n }\n constructor(material) {\n super(material);\n if (material.shader != this.shader) {\n throw new TypeError(\"Basic material expected.\");\n }\n }\n texture({ device }, key = 'texture') {\n const material = this.material;\n if (key === 'texture' && !Utils.isNull(material.texture)) {\n const texBmp = material.texture;\n const texture = device.createTexture({\n format: 'rgba8unorm',\n usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.COPY_DST,\n size: [texBmp.width, texBmp.height],\n });\n return { texture, source: texBmp };\n }\n return null;\n }\n // TODO: put it in the material instance/interface\n static { this.fragment = getBasicMaterialFragmentWgsl; }\n}\nexport class LineMaterial extends MaterialBase {\n get shader() {\n return KnownShader.Line;\n }\n constructor(material) {\n super(material);\n if (material.shader != this.shader) {\n throw new TypeError(\"Line material expected.\");\n }\n }\n buffer(ctx, key) {\n switch (key) {\n case 'line':\n const { device, canvas } = ctx;\n const lineMaterial = this.material;\n const lineValue = new Float32Array([canvas.clientWidth, canvas.clientHeight, lineMaterial.lineWidth / 2]);\n return { buffer: Buffers.createUniform(device, lineValue, LABEL_PREFIX + 'line-' + this.shader + '-buffer'), value: lineValue, version: performance.now() };\n default:\n return super.buffer(ctx);\n }\n }\n texture(_) {\n return null;\n }\n static { this.fragment = getLineMaterialFragmentWgsl; }\n}\n","import { WGSL_VERTEXINPUT_STRUCT_NAME, WGSL_VERTEXOUTPUT_STRUCT_NAME, WGSL_INTERACTIONDATA_STRUCT_NAME } from '../constants';\n//namespace Pacem.Drawing3D.WebGPU {\nconst defaultVertexGeometryModifierArgs = ['input', 'data'];\n//const defaultVertexGeometryModifier: VertexInputModifierDelegate = (...defaultVertexGeometryModifierArgs) => {\n// const [inputRef, dataRef] = defaultVertexGeometryModifierArgs;\n// return `fn echo(${inputRef}: ${WGSL_VERTEXINPUT_STRUCT_NAME}, ${dataRef}: ${WGSL_INTERACTIONDATA_STRUCT_NAME}) -> ${WGSL_VERTEXINPUT_STRUCT_NAME} { return ${inputRef}; }`;\n//};\nexport function extractMeshVertexModifierFunctionComponents(wgsl) {\n if (typeof wgsl !== 'string') {\n wgsl = wgsl(...defaultVertexGeometryModifierArgs);\n }\n // regex that remove all the wgsl comments and extract the function name, arguments and body\n const regex = new RegExp(`fn\\\\s+(\\\\w+)\\\\s*\\\\(([^)]*)\\\\)\\\\s*->\\\\s*(${WGSL_VERTEXINPUT_STRUCT_NAME}|${WGSL_VERTEXOUTPUT_STRUCT_NAME})\\\\s*{((.|\\\\n)+)}\\\\s*$`);\n const match = wgsl.match(regex);\n if (match) {\n const name = match[1];\n const args = match[2].split(',').map(arg => {\n const kvp = arg.split(':');\n return { name: kvp[0].trim(), type: kvp[1].trim() };\n });\n if (args.length !== 2\n || args[0].type !== match[3] // the first argument type must match the function return type\n || args[1].type !== WGSL_INTERACTIONDATA_STRUCT_NAME) {\n throw new Error(`Invalid modifier function. Invalid signature types (arg1: ${args[0]?.type}, arg2: ${args[1]?.type})`);\n }\n const body = match[4].trim();\n return { name, args: args.map(i => i.name), body };\n }\n else {\n throw new Error(`Invalid modifier function. Must be a valid WGSL function with the signature: fn name(arg1: ${WGSL_VERTEXINPUT_STRUCT_NAME}|${WGSL_VERTEXOUTPUT_STRUCT_NAME}, arg2: ${WGSL_INTERACTIONDATA_STRUCT_NAME}) -> ${WGSL_VERTEXINPUT_STRUCT_NAME}|${WGSL_VERTEXOUTPUT_STRUCT_NAME}`);\n }\n}\n","import { Utils } from '@pacem/pacem-core';\nimport { VERTEX_OUTPUT_LOCATION_NORMAL, VERTEX_OUTPUT_LOCATION_VERTEX, VERTEX_OUTPUT_LOCATION_UV, VERTEX_OUTPUT_LOCATION_INDEX, VERTEX_OUTPUT_LOCATION_RAY, VERTEX_OUTPUT_LOCATION_INSTANCE, VERTEX_BUFFER_INDEX_MESH_POSITION, VERTEX_BUFFER_INDEX_MESH_NORMAL, VERTEX_BUFFER_INDEX_MESH_UV, UNIFORM_BINDING_INDEX_CAMERA, UNIFORM_GROUP_INDEX_CAMERA, UNIFORM_BINDING_INDEX_TRANSFORM, UNIFORM_GROUP_INDEX_TRANSFORM, UNIFORM_BINDING_INDEX_INTERACTION, UNIFORM_GROUP_INDEX_INTERACTION, WGSL_VERTEXINPUT_STRUCT_NAME, WGSL_VERTEXOUTPUT_STRUCT_NAME, WGSL_INTERACTIONDATA_STRUCT_NAME } from '../constants';\nimport { extractMeshVertexModifierFunctionComponents } from './shared';\nconst DefaultMeshVertexOptions = {\n outputNormalLocation: VERTEX_OUTPUT_LOCATION_NORMAL,\n outputVertexLocation: VERTEX_OUTPUT_LOCATION_VERTEX,\n outputUvLocation: VERTEX_OUTPUT_LOCATION_UV,\n outputVertexIndexLocation: VERTEX_OUTPUT_LOCATION_INDEX,\n outputInstanceIndexLocation: VERTEX_OUTPUT_LOCATION_INSTANCE,\n outputRayLocation: VERTEX_OUTPUT_LOCATION_RAY,\n inputPositionLocation: VERTEX_BUFFER_INDEX_MESH_POSITION,\n inputNormalLocation: VERTEX_BUFFER_INDEX_MESH_NORMAL,\n inputUvLocation: VERTEX_BUFFER_INDEX_MESH_UV,\n uniformViewBindingIndex: UNIFORM_BINDING_INDEX_CAMERA,\n uniformViewGroupIndex: UNIFORM_GROUP_INDEX_CAMERA,\n uniformWorldBindingIndex: UNIFORM_BINDING_INDEX_TRANSFORM,\n uniformWorldGroupIndex: UNIFORM_GROUP_INDEX_TRANSFORM,\n uniformInteractionBindingIndex: UNIFORM_BINDING_INDEX_INTERACTION,\n uniformInteractionGroupIndex: UNIFORM_GROUP_INDEX_INTERACTION,\n};\nexport function getMeshVertexWgsl(options = DefaultMeshVertexOptions) {\n if (options != DefaultMeshVertexOptions) {\n options = Utils.extend({}, DefaultMeshVertexOptions, options);\n }\n // vertex input modifier?\n const modifierInput = options.inputModifier;\n let modifyInstructionInput = 'vertexInput', modifierFnInput = '';\n if (!Utils.isNullOrEmpty(modifierInput)) {\n const { name: modifierName, args: [arg0, arg1], body: modifierBody } = extractMeshVertexModifierFunctionComponents(modifierInput);\n modifyInstructionInput = `${modifierName}(vertexInput, interaction)`;\n modifierFnInput = `fn ${modifierName} (${arg0}: ${WGSL_VERTEXINPUT_STRUCT_NAME}, ${arg1}: ${WGSL_INTERACTIONDATA_STRUCT_NAME}) -> ${WGSL_VERTEXINPUT_STRUCT_NAME} {\r\n ${modifierBody}\r\n}`;\n }\n // vertex output modifier?\n const modifierOutput = options.outputModifier;\n let modifyInstructionOutput = 'output', modifierFnOutput = '';\n if (!Utils.isNullOrEmpty(modifierOutput)) {\n const { name: modifierName, args: [arg0, arg1], body: modifierBody } = extractMeshVertexModifierFunctionComponents(modifierOutput);\n modifyInstructionOutput = `${modifierName}(output, interaction)`;\n modifierFnOutput = `fn ${modifierName} (${arg0}: ${WGSL_VERTEXINPUT_STRUCT_NAME}, ${arg1}: ${WGSL_INTERACTIONDATA_STRUCT_NAME}) -> ${WGSL_VERTEXOUTPUT_STRUCT_NAME} {\r\n ${modifierBody}\r\n}`;\n }\n const opts = Utils.extend({}, DefaultMeshVertexOptions, options);\n return `struct ${WGSL_VERTEXOUTPUT_STRUCT_NAME} {\r\n @builtin(position) position : vec4f, // clip space position\r\n @location(${opts.outputNormalLocation}) normal: vec3f, // world space normal\r\n @location(${opts.outputVertexLocation}) vertex : vec3f, // world space position\r\n @location(${opts.outputUvLocation}) uv : vec2f, // texture coordinates\r\n @location(${opts.outputVertexIndexLocation}) @interpolate(flat) index : u32, // vertex index\r\n @location(${opts.outputRayLocation}) ray : vec3f, // eye-to-point vector in world space\r\n @location(${opts.outputInstanceIndexLocation}) @interpolate(flat) instance : u32, // instance index\r\n}\r\n\r\nstruct ${WGSL_VERTEXINPUT_STRUCT_NAME} {\r\n @location(${opts.inputPositionLocation}) position: vec3f,\r\n @location(${opts.inputNormalLocation}) normal: vec3f,\r\n @location(${opts.inputUvLocation}) uv: vec2f,\r\n @builtin(vertex_index) index: u32,\r\n @builtin(instance_index) instance: u32,\r\n}\r\n\r\nstruct Transforms {\r\n world: mat4x4f,\r\n normal: mat3x3f,\r\n}\r\n\r\nstruct Camera {\r\n view: mat4x4f,\r\n projection: mat4x4f,\r\n position: vec3f,\r\n}\r\n\r\nstruct ${WGSL_INTERACTIONDATA_STRUCT_NAME} {\r\n // mouse coordinatges in NDC space ([-1,1], [-1,1])\r\n cursor: vec2f,\r\n // canvas size in pixels\r\n resolution: vec2f,\r\n // some phase timer (e.g. time since mouse down, or time since last click, etc.)\r\n time: f32,\r\n}\r\n\r\n${modifierFnInput}\r\n\r\n${modifierFnOutput}\r\n\r\n@group(${opts.uniformWorldGroupIndex}) @binding(${opts.uniformWorldBindingIndex}) var<uniform> transforms: Transforms;\r\n@group(${opts.uniformViewGroupIndex}) @binding(${opts.uniformViewBindingIndex}) var<uniform> camera: Camera;\r\n@group(${opts.uniformInteractionGroupIndex}) @binding(${opts.uniformInteractionBindingIndex}) var<uniform> interaction: ${WGSL_INTERACTIONDATA_STRUCT_NAME};\r\n\r\n@vertex fn main(vertexInput: ${WGSL_VERTEXINPUT_STRUCT_NAME}) -> ${WGSL_VERTEXOUTPUT_STRUCT_NAME} {\r\n let input = ${modifyInstructionInput};\r\n let position4 = vec4f(input.position, 1.0);\r\n let worldTransform = transforms.world;\r\n let viewProjectionTransform = camera.projection;\r\n let worldViewProjectionTransform = viewProjectionTransform * worldTransform;\r\n let worldPosition = (worldTransform * position4).xyz;\r\n let output = ${WGSL_VERTEXOUTPUT_STRUCT_NAME}(\r\n worldViewProjectionTransform * position4,\r\n transforms.normal * input.normal,\r\n worldPosition,\r\n input.uv,\r\n input.index,\r\n normalize(worldPosition - camera.position),\r\n input.instance\r\n );\r\n return ${modifyInstructionOutput};\r\n}`;\n}\n","import { Utils } from '@pacem/pacem-core';\nimport { VERTEX_BUFFER_INDEX_MESH_POSITION, UNIFORM_GROUP_INDEX_CAMERA, UNIFORM_BINDING_INDEX_CAMERA, UNIFORM_GROUP_INDEX_TRANSFORM, UNIFORM_BINDING_INDEX_TRANSFORM, STORAGE_GROUP_INDEX_LINE, WGSL_VERTEXOUTPUT_STRUCT_NAME } from '../constants';\nconst DefaultLineVertexOptions = {\n inputPositionLocation: VERTEX_BUFFER_INDEX_MESH_POSITION,\n outputInstanceIndexLocation: 0,\n outputVertexIndexLocation: 1,\n storagePositionsGroupIndex: STORAGE_GROUP_INDEX_LINE,\n storagePositionsBindingIndex: 0,\n uniformDimensionsGroupIndex: STORAGE_GROUP_INDEX_LINE,\n uniformDimensionsBindingIndex: 1,\n uniformViewGroupIndex: UNIFORM_GROUP_INDEX_CAMERA,\n uniformViewBindingIndex: UNIFORM_BINDING_INDEX_CAMERA,\n uniformWorldGroupIndex: UNIFORM_GROUP_INDEX_TRANSFORM,\n uniformWorldBindingIndex: UNIFORM_BINDING_INDEX_TRANSFORM,\n};\nfunction getVertexOutputStructDefinition(opts) {\n return `struct ${WGSL_VERTEXOUTPUT_STRUCT_NAME} {\r\n @builtin(position) position : vec4f, // clip space position\r\n @location(${opts.outputInstanceIndexLocation}) @interpolate(flat) instance : u32, // instance index\r\n @location(${opts.outputVertexIndexLocation}) @interpolate(flat) index : u32, // vertex index\r\n}`;\n}\nexport function getDefaultLineVertexWgsl(options = DefaultLineVertexOptions) {\n const opts = Utils.extend({}, DefaultLineVertexOptions, options);\n return `${getVertexOutputStructDefinition(opts)}\r\n\r\nstruct Transforms {\r\n world: mat4x4f,\r\n normal: mat3x3f,\r\n}\r\n\r\nstruct Camera {\r\n view: mat4x4f,\r\n projection: mat4x4f,\r\n position: vec3f\r\n}\r\n\r\n@group(${opts.uniformWorldGroupIndex}) @binding(${opts.uniformWorldBindingIndex}) var<uniform> transforms: Transforms;\r\n@group(${opts.uniformViewGroupIndex}) @binding(${opts.uniformViewBindingIndex}) var<uniform> camera: Camera;\r\n@group(${opts.storagePositionsGroupIndex}) @binding(${opts.storagePositionsBindingIndex}) var<storage, read> positions: array<f32>;\r\n\r\n@vertex fn main(@builtin(instance_index) instance: u32,\r\n @builtin(vertex_index) index: u32) -> ${WGSL_VERTEXOUTPUT_STRUCT_NAME} {\r\n\r\n let x = positions[3u * index + 0u];\r\n let y = positions[3u * index + 1u];\r\n let z = positions[3u * index + 2u];\r\n let position4 = vec4f(x, y, z, 1.0);\r\n let worldTransform = transforms.world;\r\n let viewProjectionTransform = camera.projection;\r\n let worldViewProjectionTransform = viewProjectionTransform * worldTransform;\r\n let worldPosition = (worldTransform * position4).xyz;\r\n return ${WGSL_VERTEXOUTPUT_STRUCT_NAME}(\r\n worldViewProjectionTransform * position4,\r\n instance,\r\n index);\r\n}`;\n}\nexport function getFatLineVertexWgsl(options = DefaultLineVertexOptions) {\n const opts = Utils.extend({}, DefaultLineVertexOptions, options);\n return `${getVertexOutputStructDefinition(opts)}\r\n\r\nstruct Transforms {\r\n world: mat4x4f,\r\n normal: mat3x3f,\r\n}\r\n\r\nstruct Camera {\r\n view: mat4x4f,\r\n projection: mat4x4f,\r\n position: vec3f\r\n}\r\n\r\nstruct Pixels {\r\n viewportWidth: f32,\r\n viewportHeight: f32,\r\n halfLineWidth: f32\r\n}\r\n\r\n@group(${opts.uniformWorldGroupIndex}) @binding(${opts.uniformWorldBindingIndex}) var<uniform> transforms: Transforms;\r\n@group(${opts.uniformViewGroupIndex}) @binding(${opts.uniformViewBindingIndex}) var<uniform> camera: Camera;\r\n@group(${opts.storagePositionsGroupIndex}) @binding(${opts.storagePositionsBindingIndex}) var<storage, read> positions: array<f32>;\r\n@group(${opts.uniformDimensionsGroupIndex}) @binding(${opts.uniformDimensionsBindingIndex}) var<uniform> dimensions: Pixels;\r\n\r\nfn computeClipPosition(index: u32) -> vec4f {\r\n let x = positions[3u * index + 0u];\r\n let y = positions[3u * index + 1u];\r\n let z = positions[3u * index + 2u];\r\n let position4 = vec4f(x, y, z, 1.0);\r\n let worldTransform = transforms.world;\r\n let viewProjectionTransform = camera.projection;\r\n let worldViewProjectionTransform = viewProjectionTransform * worldTransform;\r\n return worldViewProjectionTransform * position4;\r\n}\r\n\r\nfn computeOffsetPosition(p0: vec4f, p1: vec4f, index: u32) -> vec4f {\r\n\r\n let viewportSize = vec2f(dimensions.viewportWidth, dimensions.viewportHeight);\r\n let normalizedSize = normalize(viewportSize);\r\n let halfThickness = dimensions.halfLineWidth / dimensions.viewportWidth;\r\n let p0ndc = p0.xyz / p0.w;\r\n let p1ndc = p1.xyz / p1.w;\r\n let dir = normalize((p1ndc - p0ndc).xy);\r\n let offsetX = halfThickness * 2.0 / normalizedSize.x;\r\n let offsetY = halfThickness * 2.0 / normalizedSize.y;\r\n\r\n // perp\r\n let perp0 = vec2f(-dir.y * offsetX, dir.x * offsetY);\r\n let perp1 = perp0;\r\n\r\n /*\r\n\r\n position0-0 -----*----- position0-1\r\n |\\\\ |\r\n | \\\\ |\r\n | \\\\ |\r\n | \\\\ |\r\n | \\\\ |\r\n | \\\\ |\r\n | \\\\ |\r\n | \\\\|\r\n position1-0 -----*----- position1-1\r\n\r\n indexes:\r\n ------------\r\n p0-0 -> 0, 3\r\n p0-1 -> 5\r\n p1-0 -> 1\r\n p1-1 -> 2, 4\r\n */\r\n\r\n var outPos: vec2f;\r\n var w = p0.w;\r\n var z = p0.z;\r\n if (index == 0 || index == 3){\r\n outPos = p0ndc.xy - perp0;\r\n }\r\n else if (index == 1){\r\n outPos = p1ndc.xy - perp1;\r\n w = p1.w;\r\n z = p1.z;\r\n }\r\n else if (index == 5){\r\n outPos = p0ndc.xy + perp0;\r\n }\r\n else { //if (index == 2 || index == 4)\r\n outPos = p1ndc.xy + perp1;\r\n w = p1.w;\r\n z = p1.z;\r\n }\r\n\r\n // return vec4f(outPos , 0, 1.0);\r\n return vec4f(outPos * w, z, w);\r\n}\r\n\r\n@vertex fn main(@builtin(instance_index) instance: u32,\r\n @builtin(vertex_index) index: u32) -> ${WGSL_VERTEXOUTPUT_STRUCT_NAME} {\r\n\r\n // vertex index starting at 1\r\n let position0 = computeClipPosition(instance);\r\n let position1 = computeClipPosition(instance + 1);\r\n\r\n // apply offset\r\n let position = computeOffsetPosition(position0, position1, index);\r\n\r\n return ${WGSL_VERTEXOUTPUT_STRUCT_NAME}(\r\n position,\r\n instance,\r\n index\r\n );\r\n}`;\n}\n","import { UNIFORM_GROUP_INDEX_COLORPICKING } from '../constants';\n//namespace Pacem.Drawing3D.WebGPU {\n/**\n * Generate a WGSL piece of code that eases 3D picking using color strategy.\n */\nexport function getColorPickingFragmentWgsl(groupIndex = UNIFORM_GROUP_INDEX_COLORPICKING) {\n return `struct ColorPicker {\r\n id: u32,\r\n };\r\n\r\n @group(${groupIndex}) @binding(0) var<uniform> colorPicker: ColorPicker;\r\n\r\n @fragment\r\n fn main(@builtin(position) position: vec4f) -> @location(0) u32 {\r\n return colorPicker.id;\r\n }\r\n `;\n}\n","import { Utils } from '@pacem/pacem-core';\nimport { SAMPLER_BINDING_INDEX } from '../constants';\nconst DefaultTextureMapReferences = {\n uv: 'uv',\n};\nexport function textureMap(references = DefaultTextureMapReferences, group, binding = SAMPLER_BINDING_INDEX) {\n const key = Utils.uniqueCode();\n const samplerReference = `sampler_${key}`;\n const texReference = `tex_${key}`;\n const ref = Utils.extend({}, DefaultTextureMapReferences, references);\n const inputColor = ref.inputColor, outputColors = ref.outputColors;\n if (Utils.isNullOrEmpty(inputColor)) {\n throw new Error('Must provide either input and output vertex color parameter names.');\n }\n const modifiers = outputColors ?\n outputColors.map((name, index) => index === 0 ? `${name} = textureSample(${texReference}, ${samplerReference}, ${ref.uv}) * ${inputColor};` : `${name} = ${outputColors[0]};`)\n : [`textureSample(${texReference}, ${samplerReference}, ${ref.uv}) * ${inputColor}`];\n return {\n // type definitions\n //definition: '',\n // bindings\n bindings: [`@group(${group}) @binding(${binding}) var ${samplerReference}: sampler;`,\n `@group(${group}) @binding(${binding + 1}) var ${texReference}: texture_2d<f32>;`],\n // modifiers\n modifiers\n };\n}\n","import { Utils } from '@pacem/pacem-core';\nconst DefaultDirectionalLightReferences = {\n normal: 'normal', inputColor: 'white'\n};\nexport function directionalLight(references, group, binding) {\n const key = Utils.uniqueCode();\n const lightReference = `directional_${key}`;\n const ref = Utils.extend({}, DefaultDirectionalLightReferences, references);\n const inputColor = ref.inputColor, outputColor = ref.outputColor, normal = ref.normal ?? 'normal';\n if (Utils.isNullOrEmpty(inputColor)) {\n throw new Error('Must provide input vertex color parameter name.');\n }\n return {\n // type definitions\n definitions: [`struct DirectionalLight {\r\n color: vec4f,\r\n direction: vec3f,\r\n intensity: f32\r\n}`, `fn computeDirectional(normal: vec3f, color: vec4f, light: DirectionalLight) -> vec4f {\r\n let n = normalize(normal);\r\n let d = normalize(light.direction);\r\n let factor = light.intensity * .5 * (1.0 + dot(n, -d));\r\n let output = color.rgb * light.color.rgb * factor;\r\n return vec4f(output, color.a);\r\n}`],\n // bindings\n bindings: [`@group(${group}) @binding(${binding}) var<uniform> ${lightReference}: DirectionalLight;`],\n // modifiers\n modifiers: outputColor ? [`${outputColor} += computeDirectional(${normal}, ${inputColor}, ${lightReference});`] : [`computeDirectional(${normal}, ${inputColor}, ${lightReference})`]\n };\n}\n","import { Utils } from '@pacem/pacem-core';\nconst DefaultOmniLightReferences = {\n normal: 'normal', position: 'vertex', ray: 'ray', inputColor: 'white', specularColor: 'empty', shininess: '0'\n};\nexport function omniLight(references, group, binding) {\n const key = Utils.uniqueCode();\n const lightReference = `omni_${key}`;\n const ref = Utils.extend({}, DefaultOmniLightReferences, references);\n const inputColor = ref.inputColor, outputColor = ref.outputColor, normal = ref.normal, ray = ref.ray, vertex = ref.position, shininess = ref.shininess, specularColor = ref.specularColor;\n if (Utils.isNullOrEmpty(inputColor)) {\n throw new Error('Must provide input vertex color parameter name.');\n }\n return {\n // type definitions\n definitions: [`struct OmniLight {\r\n color: vec4f,\r\n position: vec3f,\r\n intensity: f32\r\n}`, `fn computeOmni(position: vec3f, normal: vec3f, ray: vec3f, color: vec4f, specularColor: vec4f, shininess: f32, light: OmniLight) -> vec4f {\r\n\r\n // color\r\n let n = normalize(normal);\r\n let d = normalize(position - light.position);\r\n let factor = light.intensity * .5 * (1.0 + dot(n, -d));\r\n\r\n // specular\r\n let r = normalize(ray);\r\n let halfVector = normalize(d + r);\r\n let specular = specularColor.rgb * shininess * dot(n, -halfVector);\r\n\r\n let output = color.rgb * light.color.rgb * factor + specular;\r\n return vec4f(output, color.a);\r\n}`],\n // bindings\n bindings: [`@group(${group}) @binding(${binding}) var<uniform> ${lightReference}: OmniLight;`],\n // modifiers\n modifiers: outputColor ? [`${outputColor} += computeOmni(${vertex}, ${normal}, ${ray}, ${inputColor}, ${specularColor}, ${shininess}, ${lightReference});`] : [`computeOmni(${vertex}, ${normal}, ${ray}, ${inputColor}, ${specularColor}, ${shininess}, ${lightReference})`]\n };\n}\n","import { Utils } from '@pacem/pacem-core';\nexport function ambientLight(references, group, binding) {\n const key = Utils.uniqueCode();\n const lightReference = `ambient_${key}`;\n const inputColor = references.inputColor, outputColor = references.outputColor;\n if (Utils.isNullOrEmpty(inputColor) || Utils.isNullOrEmpty(outputColor)) {\n throw new Error('Must provide either input and output vertex color parameter names.');\n }\n return {\n // type definitions\n definitions: [`struct AmbientLight {\r\n color: vec4f,\r\n intensity: f32\r\n}`, `fn computeAmbient(color: vec4f, light: AmbientLight) -> vec4f {\r\n return vec4f(light.intensity * color.rgb * light.color.rgb, color.a);\r\n}`],\n // bindings\n bindings: [`@group(${group}) @binding(${binding}) var<uniform> ${lightReference}: AmbientLight;`],\n // modifiers\n modifiers: [`${outputColor} = computeAmbient(${inputColor}, ${lightReference});`]\n };\n}\n","import { Geometry } from '@pacem/pacem-numerical';\nimport { isPerspectiveCamera, isOrthographicCamera } from '../../types';\n//namespace Pacem.Drawing3D.WebGPU {\nconst Vector3D = Geometry.LinearAlgebra.Vector3D;\nconst Matrix3D = Geometry.LinearAlgebra.Matrix3D;\nconst DEFAULT_SIZE = { width: 1, height: 1 };\nexport class Cameras {\n /**\n * Creates a new webgpu {@link Camera} given a canonic one.\n * @param camera\n * @returns\n */\n static create(camera) {\n if (isPerspectiveCamera(camera)) {\n return new PerspectiveCamera(camera);\n }\n if (isOrthographicCamera(camera)) {\n return new OrthographicCamera(camera);\n }\n throw new TypeError(`Camera type '${camera['type']}' not supported.`);\n }\n}\n/**\n * Camera orientation 4x4 matrix.\n * @param eye\n * @param target\n * @param up\n * @returns\n */\nfunction view(eye, target, up) {\n const z = /* inverse forward is eye -> target */ Vector3D.subtract(target, eye);\n const x = Vector3D.cross(up, z);\n const y = Vector3D.cross(z, x);\n Vector3D.normalize(x);\n Vector3D.normalize(z);\n Vector3D.normalize(y);\n const offsetX = -Vector3D.dot(x, eye);\n const offsetY = -Vector3D.dot(y, eye);\n const offsetZ = -Vector3D.dot(z, eye);\n return Matrix3D.from(x.x, y.x, z.x, 0, x.y, y.y, z.y, 0, x.z, y.z, z.z, 0, offsetX, offsetY, offsetZ, 1);\n}\nfunction assertNearFarCorrectness(near, far) {\n if (near <= 0) {\n throw new RangeError(\"Near plane distance must be positive.\");\n }\n if (far <= near) {\n throw new RangeError(\"Far plane distance must be greater than near plane distance.\");\n }\n}\n/**\n * Perspective transformation 4x4 matrix.\n * @param fovY Vertical field of view (in radians)\n * @param aspectRatio Frustum aspect ratio\n * @param near Clipping plane near distance (not z coordinate)\n * @param far Clipping plane far distance (not z coordinate)\n * @returns\n */\nfunction perspective(fovY = 120, aspectRatio = 1, near = 0.1, far = 1000) {\n assertNearFarCorrectness(near, far);\n const scale = Math.tan(.5 * Math.PI * (1 - fovY / 180));\n const m11 = scale / aspectRatio;\n const finitelyFar = Number.isFinite(far);\n const m33 = finitelyFar ? (far / (near - far)) : -1;\n const offsetZ = finitelyFar ? (far * near / (near - far)) : -near;\n return Matrix3D.from(m11, 0, 0, 0, 0, scale, 0, 0, 0, 0, m33, -1, 0, 0, offsetZ, 0);\n}\n/**\n * Othographic transformation 4x4 matrix.\n * @param left Viewport's left side\n * @param right Viewport's right side\n * @param top Viewport's top side\n * @param bottom Viewport's bottom side\n * @param near Clipping plane near distance\n * @param far Clipping plane far distance\n */\nfunction orthographic(left, right, top, bottom, near = .1, far = 1000) {\n assertNearFarCorrectness(near, far);\n return Matrix3D.from(2 / (right - left), 0, 0, 0, 0, 2 / (top - bottom), 0, 0, 0, 0, 1 / (near - far), 0, (left + right) / (left - right), (top + bottom) / (bottom - top), near / (near - far), 1);\n}\nexport class OrthographicCamera {\n constructor(_camera) {\n this._camera = _camera;\n }\n static view(camera) {\n return view(camera.position, camera.lookAt, camera.up);\n }\n static projection(camera, size = DEFAULT_SIZE) {\n const eye = camera.position, target = camera.lookAt;\n const z = Vector3D.subtract(target, eye);\n Vector3D.normalize(z);\n const zoom = Vector3D.dot(z, eye);\n const { height, width } = size;\n const ratio = width / height;\n const factor = .5 * zoom;\n const w = factor * ratio, h = factor;\n const top = camera.top * h, bottom = camera.bottom * h;\n const right = camera.right * w, left = camera.left * w;\n return orthographic(left, right, top, bottom, camera.near, camera.far);\n }\n view() {\n return OrthographicCamera.view(this._camera);\n }\n projection(size) {\n return OrthographicCamera.projection(this._camera, size);\n }\n}\nexport class PerspectiveCamera {\n constructor(_camera) {\n this._camera = _camera;\n }\n static view(camera) {\n return view(camera.position, camera.lookAt, camera.up);\n }\n static projection(camera, size = DEFAULT_SIZE) {\n const aspectRatio = (size.width / size.height) / camera.aspectRatio;\n return perspective(camera.fov, aspectRatio, camera.near, camera.far);\n }\n view() {\n return PerspectiveCamera.view(this._camera);\n }\n projection(size) {\n return PerspectiveCamera.projection(this._camera, size);\n }\n}\n","import { Utils } from '@pacem/pacem-core';\nimport { Colors } from '@pacem/pacem-foundation';\nimport { Geometry } from '@pacem/pacem-numerical';\nimport { StalePropertyFlag, isGroup, isMesh, isCamera, isLight, isGeometry, isInteraction, isMeshGeometry } from '../../types';\nimport { KnownShader, isMaterial } from '../../materials/material';\nimport { AdapterUtils } from '../shared';\nimport { U32_MAX, LABEL_PREFIX } from './constants';\nimport { Buffers } from './buffers';\nimport { Cameras } from './cameras';\nimport { Materials } from './materials';\n//namespace Pacem.Drawing3D.WebGPU {\nconst Vector3D = Geometry.LinearAlgebra.Vector3D;\nconst Matrix3D = Geometry.LinearAlgebra.Matrix3D;\nfunction throwBufferRequestError(key, type) {\n if (typeof type === 'function') {\n type = type.name;\n }\n throw new RangeError(`Buffer '${key}' not available for ${type}.`);\n}\nfunction createRenderableBuffer(item, parent, ...args) {\n item.stage ??= parent?.item.stage;\n if (isGroup(item)) {\n item.key ??= 'group_' + Utils.uniqueCode();\n return new RenderableGroupBuffer(item, parent, ...args);\n }\n if (isMesh(item)) {\n item.key ??= 'mesh_' + Utils.uniqueCode();\n return new RenderableMeshBuffer(item, parent, ...args);\n }\n if (isCamera(item)) {\n item.key ??= 'camera_' + Utils.uniqueCode();\n return new RenderableCameraBuffer(item /*, parent*/);\n }\n if (isLight(item)) {\n item.key ??= 'light_' + item.type + '_' + Utils.uniqueCode();\n return new RenderableLightBuffer(item /*, parent*/);\n }\n throw new Error(`Renderable is not supported.`);\n}\nexport class RenderLooper {\n constructor(_set) {\n this._set = _set;\n }\n /** @internal */\n get items() {\n return this._set;\n }\n loop(render) {\n const { meshes, cameras, groups, lights } = this._set;\n const camera = cameras[0];\n let cameraDone = false, lightsDone = false;\n for (let mesh of meshes) {\n if (mesh.disposed) {\n continue;\n }\n // execute\n const rendered = render(mesh, camera, lights);\n if (!rendered) {\n continue;\n }\n // seal buffers\n RenderableBuffers.clearFlags(mesh);\n if (!cameraDone) {\n RenderableBuffers.clearFlags(camera);\n cameraDone = true;\n }\n if (!lightsDone) {\n lights.forEach(light => RenderableBuffers.clearFlags(light));\n lightsDone = true;\n }\n }\n for (let group of groups) {\n // seal group buffers\n RenderableBuffers.clearFlags(group);\n }\n }\n}\nexport class ManagedBuffers {\n static create(item) {\n if (isGeometry(item)) {\n item.key ??= 'geometry_' + Utils.uniqueCode();\n return new GeometryBuffer(item);\n }\n if (isMaterial(item)) {\n return new MaterialBuffer(item);\n }\n if (isInteraction(item)) {\n return new InteractionBuffer(item);\n }\n throw new Error(`Object is not supported.`);\n }\n}\nexport class RenderableBuffers {\n static create(item, ...args) {\n return createRenderableBuffer(item, null, ...args);\n }\n static clearFlags(buffer, includeParent = false) {\n buffer.item.flags.splice(0);\n if (includeParent) {\n const bufferBase = buffer;\n if (!Utils.isNull(bufferBase.parent)) {\n RenderableBuffers.clearFlags(bufferBase.parent, true);\n }\n }\n }\n static allFlags(buffer) {\n const bufferBase = buffer;\n const parentBufferBase = bufferBase.parent;\n const parentFlags = Utils.isNull(parentBufferBase) ? [] : RenderableBuffers.allFlags(parentBufferBase);\n return bufferBase.item.flags.union(parentFlags);\n }\n}\nclass ManagedBufferBase {\n #item;\n constructor(item) {\n this.#item = item;\n }\n get item() {\n return this.#item;\n }\n #lock = false;\n lock() {\n this.#lock = true;\n }\n unlock() {\n this.#lock = false;\n const garbage = this.#garbage;\n while (garbage.length > 0) {\n const obj = garbage.shift();\n this._destroyUnsafe(obj);\n }\n }\n #garbage = [];\n _destroyUnsafe(obj) {\n if ('texture' in obj) {\n obj.texture.destroy();\n }\n else if ('buffer' in obj) {\n obj.buffer.destroy();\n }\n }\n destroySafely(...objects) {\n for (let obj of Array.from(objects).concat(...this.#garbage.splice(0))) {\n if (!obj) {\n continue;\n }\n if (this.#lock) {\n this.#garbage.push(obj);\n }\n else {\n this._destroyUnsafe(obj);\n }\n }\n }\n #disposed = false;\n destroy() {\n this.dispose();\n this.#disposed = true;\n }\n get disposed() {\n return this.#disposed;\n }\n}\nclass RenderableBufferBase extends ManagedBufferBase {\n constructor(item, parentBuffer) {\n super(item);\n this.#parent = parentBuffer;\n this.#u32id = Utils.uniqueId() % U32_MAX;\n }\n #u32id;\n #parent;\n #u32idBuffer = new Map();\n get parent() {\n return this.#parent;\n }\n get id() {\n return this.#u32id;\n }\n allFlags() {\n const parent = this.parent;\n // TODO: this one line is a perf hog!\n return this.item.flags.union(parent?.allFlags() ?? []);\n }\n buildParentWorldTransform() {\n let worldMatrix = Matrix3D.identity();\n let step = this;\n while (!Utils.isNull(step.parent)) {\n const parentItem = step.parent.item;\n const parentItemMatrix = Matrix3D.translate(parentItem.transformMatrix ?? Matrix3D.identity(), parentItem.position ?? Vector3D.zero());\n worldMatrix = Matrix3D.multiply(worldMatrix, parentItemMatrix);\n step = step.parent;\n }\n return worldMatrix;\n }\n buildWorldTransform() {\n const itemMatrix = Matrix3D.translate(this.item.transformMatrix ?? Matrix3D.identity(), this.item.position ?? Vector3D.zero());\n const parentWorldMatrix = this.buildParentWorldTransform();\n return Matrix3D.multiply(itemMatrix, parentWorldMatrix);\n }\n #versions = new Map();\n version(key) {\n return this.#versions.get(key) ?? 0;\n }\n buffer(context, key) {\n if (key === 'u32id') {\n const u32idBuffer = this.#u32idBuffer;\n const { pipeline, device } = context;\n if (u32idBuffer.has(pipeline)) {\n return Utils.extend({ fresh: false }, u32idBuffer.get(pipeline));\n }\n const u32idBufferValue = new Uint32Array([this.id]);\n const u32idBufferBuffer = Buffers.createUniform(device, u32idBufferValue, LABEL_PREFIX + 'u32id-buffer');\n const retval = Utils.extend({ buffer: u32idBufferBuffer, value: u32idBufferValue, version: performance.now() }, { fresh: true });\n this.#u32idBuffer.set(pipeline, retval);\n return retval;\n }\n const retval = this.specificBuffer(context, key);\n this.#versions.set(key, retval.version);\n return retval;\n }\n}\nconst DefaultMaterial = { shader: KnownShader.Basic, color: '#c0c0c0', flags: [] };\n// #region GROUP\nclass RenderableGroupBuffer extends RenderableBufferBase {\n #children;\n constructor(group, parent, ...args) {\n super(group, parent);\n this.#children = group.childRenderables.map(i => createRenderableBuffer(i, this, ...args));\n }\n get children() {\n return this.#children;\n }\n specificBuffer(ctx, key) {\n return null;\n }\n texture(_) {\n throw new Error(\"Method not implemented.\");\n }\n dispose() {\n this.#children.forEach(i => i.destroy());\n //this.#children = null;\n }\n}\n// #endregion\n// #region CAMERA\nclass RenderableCameraBuffer extends RenderableBufferBase {\n #viewBag = new Map();\n #view;\n constructor(camera) {\n super(camera);\n }\n texture(_) {\n throw new Error(\"Method not implemented.\");\n }\n specificBuffer(context, key) {\n //const camera = this.item;\n let fresh = false;\n if (this.allFlags().length > 0 || Utils.isNull(this.#view)) {\n fresh = true;\n this.#viewBag.clear();\n this._rebuildMatrices(context);\n }\n const { pipeline } = context;\n if (!this.#viewBag.has(pipeline)) {\n fresh = true;\n this.#viewBag.set(pipeline, this.#view);\n }\n RenderableBuffers.clearFlags(this);\n switch (key) {\n case 'cameraViewTransform':\n return Utils.extend(this.#view, { fresh });\n default:\n throwBufferRequestError(key, RenderableCameraBuffer);\n }\n }\n _rebuildMatrices({ device, canvas }) {\n // this._destroyView();\n const cam = this.item;\n const camera = Cameras.create(cam);\n const { x, y, z } = cam.position;\n const view = camera.view();\n const projection = camera.projection(canvas);\n const viewProjection = Matrix3D.multiply(view, projection);\n const viewValue = new Float32Array(16 + 16 + 4);\n viewValue.set(Matrix3D.toArray(view), 0);\n viewValue.set(Matrix3D.toArray(viewProjection), 16);\n viewValue.set([x, y, z], 32);\n // reuse GPUBuffer (always same size)\n if (Utils.isNull(this.#view)) {\n const viewBuffer = Buffers.createUniform(device, viewValue, LABEL_PREFIX + 'view-buffer');\n this.#view = { buffer: viewBuffer, value: viewValue, version: performance.now().roundoff() };\n }\n else {\n this.#view.value = viewValue;\n this.#view.version = performance.now().roundoff();\n }\n }\n _destroyView() {\n this.#viewBag.clear();\n const view = this.#view;\n this.#view = null;\n this.destroySafely(view);\n }\n dispose() {\n this._destroyView();\n }\n}\n// #endregion\n// #region GEOMETRY\nclass GeometryBuffer extends ManagedBufferBase {\n #bufferBag = {};\n #freshness = { positions: true, normals: true, uv: true, packed: true };\n #geometryBuffers;\n constructor(geometry) {\n super(geometry);\n geometry.flags ??= [];\n }\n buffer(context, key) {\n const flags = this.item.flags ?? [];\n if (Utils.isNull(this.#geometryBuffers) || flags.includes(StalePropertyFlag.Geometry)) {\n flags.splice(0);\n this.#bufferBag = /* reset */ {};\n this._rebuildGeometryBuffers(context);\n }\n const freshness = this.#freshness;\n const geom = this.#geometryBuffers;\n const { pipeline } = context;\n const bag = (this.#bufferBag[key] ??= new Map());\n const newInPipeline = !bag.has(pipeline);\n const ensureInBag = (buffer) => {\n if (newInPipeline) {\n bag.set(pipeline, buffer);\n }\n return buffer;\n };\n switch (key) {\n case 'geometryPositions':\n const { positions } = geom, posFresh = freshness.positions;\n freshness.positions = false;\n return Utils.extend(ensureInBag(positions), { fresh: posFresh || newInPipeline });\n case 'geometryNormals':\n const { normals } = geom, normFresh = freshness.normals;\n freshness.normals = false;\n return Utils.extend(ensureInBag(normals), { fresh: normFresh || newInPipeline });\n case 'geometryTexCoords':\n const { uv } = geom, uvFresh = freshness.uv;\n freshness.uv = false;\n return Utils.extend({ fresh: uvFresh || newInPipeline }, ensureInBag(uv));\n case 'geometry':\n // alltogether\n const { packed } = geom, geomFresh = freshness.packed;\n freshness.packed = false;\n return Utils.extend(ensureInBag(packed), { fresh: geomFresh || newInPipeline });\n default:\n throwBufferRequestError(key, GeometryBuffer);\n }\n }\n texture(_) {\n throw new Error(\"Method not implemented.\");\n }\n _rebuildGeometryBuffers({ device }) {\n this._destroyBuffers();\n const version = performance.now();\n const geometry = this.item, key = geometry.key;\n if (isMeshGeometry(geometry)) {\n const meshGeometry = geometry;\n // flatten positions...\n const hasTriangleIndices = !Utils.isNullOrEmpty(meshGeometry.triangleIndices);\n const flatPositions = hasTriangleIndices ?\n meshGeometry.triangleIndices.map(index => meshGeometry.positions[index])\n : meshGeometry.positions;\n const length2 = flatPositions.length * 2, length3 = length2 + flatPositions.length;\n const positionsValue = new Float32Array(length3);\n const normalsValue = new Float32Array(length3);\n const uvValue = new Float32Array(length2);\n const geomValue = new Float32Array(2 * length3 + length2);\n for (let j = 0; j < flatPositions.length; j++) {\n const offset2 = 2 * j;\n const offset3 = 3 * j;\n const { x, y, z } = flatPositions[j];\n const { x: nx, y: ny, z: nz } = meshGeometry.normals[j];\n const { x: u, y: v } = meshGeometry.textureCoordinates[j];\n positionsValue.set([x, y, z], offset3);\n normalsValue.set([nx, ny, nz], offset3);\n uvValue.set([u, v], offset2);\n geomValue.set([x, y, z, nx, ny, nz, u, v], offset3 * 2 + offset2);\n }\n const positions = Buffers.create(device, positionsValue, LABEL_PREFIX + 'meshgeometry-' + key + '-positions-buffer');\n const normals = Buffers.create(device, normalsValue, LABEL_PREFIX + 'meshgeometry-' + key + '-normals-buffer');\n const uv = Buffers.create(device, uvValue, LABEL_PREFIX + 'meshgeometry-' + key + '-uvmap-buffer');\n const geom = Buffers.create(device, geomValue, LABEL_PREFIX + 'meshgeometry-' + key + '-buffer');\n this.#geometryBuffers = {\n packed: { buffer: geom, value: geomValue, version },\n positions: { buffer: positions, value: positionsValue, version },\n normals: { buffer: normals, value: normalsValue, version },\n uv: { buffer: uv, value: uvValue, version },\n };\n this.#freshness = { positions: true, normals: true, uv: true, packed: true };\n }\n else {\n const positionsValue = new Float32Array(AdapterUtils.flattenVectorArray(geometry.positions));\n const positions = Buffers.createStorage(device, positionsValue, LABEL_PREFIX + 'nodegeometry-' + key + '-positions-buffer');\n this.#geometryBuffers = {\n positions: { buffer: positions, value: positionsValue, version },\n packed: { buffer: positions, value: positionsValue, version }\n };\n this.#freshness = { positions: true, packed: true };\n }\n }\n _destroyBuffers() {\n this.#bufferBag = {};\n const obsolete = this.#geometryBuffers;\n if (!Utils.isNull(obsolete)) {\n this.destroySafely(obsolete.positions, obsolete.normals, obsolete.uv);\n }\n }\n dispose() {\n this._destroyBuffers();\n }\n}\n// #endregion\n// #region MATERIAL\nclass MaterialBuffer extends ManagedBufferBase {\n #bufferBag = {};\n #textureBag = {};\n #wgpuMaterial;\n #buffers = new Map();\n #textures = new Map();\n constructor(material) {\n super(material);\n material.flags ??= [];\n if (material.flags.indexOf(StalePropertyFlag.Material) === -1) {\n material.flags.push(StalePropertyFlag.Material);\n }\n }\n buffer(context, key) {\n const flags = this.item.flags ?? [];\n let fresh = Utils.isNull(this.#wgpuMaterial);\n if (flags.includes(StalePropertyFlag.Material)) {\n this.#bufferBag = /* reset */ {};\n flags.splice(0);\n fresh = true;\n this.#textures.clear();\n this._resetMaterialBuffers();\n }\n const { pipeline } = context;\n const bag = (this.#bufferBag[key] ??= new Map());\n switch (key) {\n case 'material':\n case 'line':\n const buffer = this._ensureMaterialBuffer(context, key);\n if (buffer) {\n if (!bag.has(pipeline)) {\n fresh = true;\n bag.set(pipeline, buffer);\n }\n return Utils.extend(buffer, { fresh });\n }\n return null;\n default:\n throwBufferRequestError(key, MaterialBuffer);\n }\n }\n _ensureMaterialBuffer(ctx, key = 'material') {\n const set = this.#buffers;\n let retval = set.get(key);\n if (retval) {\n return retval;\n }\n if (set.has(key)) {\n return null;\n }\n retval = this.#wgpuMaterial?.buffer(ctx, key);\n if (retval) {\n set.set(key, retval);\n }\n return retval;\n }\n _resetMaterialBuffers() {\n this.#wgpuMaterial = Materials.create(this.item);\n this._destroyBuffers();\n }\n texture(ctx, key = 'texture') {\n const set = this.#textures;\n let retval = set.get(key), fresh = false;\n if (!retval) {\n retval = this.#wgpuMaterial?.texture(ctx, key);\n if (!retval) {\n return null;\n }\n set.set(key, retval);\n fresh = true;\n //\n this.#textureBag = /* reset */ {};\n }\n const { pipeline } = ctx;\n const bag = (this.#textureBag[key] ??= new Map());\n if (!bag.has(pipeline)) {\n fresh = true;\n bag.set(pipeline, retval);\n }\n return Utils.extend(retval, { fresh });\n }\n dispose() {\n this._destroyBuffers();\n }\n _destroyBuffers() {\n // memoizers\n this.#bufferBag = {};\n this.#textureBag = {};\n // buffers\n const buffers = this.#buffers.values();\n this.#buffers.clear(); // clear before destroying\n this.destroySafely(...buffers);\n // textures\n const textures = this.#textures.values();\n this.#textures.clear(); // clear before destroying\n textures.forEach(t => t.texture.destroy());\n }\n}\n// #endregion\n// #region INTERACTION\nclass InteractionBuffer extends ManagedBufferBase {\n #fields = {\n time: 0, cursor: { x: 0, y: 0 }, resolution: { width: 0, height: 0 }\n };\n #buffer;\n #bufferBag = new Map();\n constructor(data) {\n super(data);\n Utils.extend(this.#fields, data);\n }\n buffer(context, key) {\n switch (key) {\n // altogether\n case 'interaction':\n return this._ensureInteractionBuffer(context);\n default:\n throwBufferRequestError(key, InteractionBuffer);\n }\n }\n texture(_) {\n throw new Error(\"Method not implemented.\");\n }\n _ensureInteractionBuffer(ctx, key = 'interaction') {\n const fields = this.#fields, item = this.item;\n let fresh = (!this.#buffer\n || item.time !== fields.time\n || item.resolution?.width !== fields.resolution.width\n || item.resolution?.height !== fields.resolution.height);\n if (!fresh && !Utils.isNull(item.cursor)) {\n fresh = item.cursor.x !== fields.cursor.x\n || item.cursor.y !== fields.cursor.y;\n }\n if (fresh) {\n // [4bytes cursor.x, 4bytes cursor.y, 4bytes resolution.width, 4bytes resolution.height, 4bytes time] = 20 bytes total]\n const value = new Float32Array([item.cursor?.x ?? 0, item.cursor?.y ?? 0, item.resolution.width, item.resolution.height, item.time, /* padding */ .0]);\n const buffer = Buffers.createUniform(ctx.device, value, LABEL_PREFIX + 'interaction-buffer');\n this.#buffer = { buffer, value, version: performance.now() };\n this.#bufferBag.clear();\n }\n const { pipeline } = ctx;\n const bag = this.#bufferBag;\n if (!bag.has(pipeline)) {\n fresh = true;\n bag.set(pipeline, this.#buffer);\n }\n return Utils.extend(this.#buffer, { fresh });\n }\n _destroyBuffers() {\n // memoizer\n this.#bufferBag.clear();\n // buffer itself\n const obsolete = this.#buffer;\n if (!Utils.isNull(obsolete)) {\n this.destroySafely(obsolete);\n }\n }\n dispose() {\n this._destroyBuffers();\n }\n}\n// #endregion\n// #region MESH\nclass RenderableMeshBuffer extends RenderableBufferBase {\n #geometryBuffers;\n #geometryBuffer;\n #materialBuffers;\n #materialBuffer;\n #worldTransform;\n #freshness = {\n geometry: true, material: true, transform: true\n };\n #worldTransformBufferBag = new Map();\n constructor(mesh, parent, geometries, materials) {\n super(mesh, parent);\n mesh.flags ??= [];\n if (mesh.flags.indexOf(StalePropertyFlag.Geometry) === -1) {\n mesh.flags.push(StalePropertyFlag.Geometry);\n }\n if (mesh.flags.indexOf(StalePropertyFlag.Material) === -1) {\n mesh.flags.push(StalePropertyFlag.Material);\n }\n if (mesh.flags.indexOf(StalePropertyFlag.Position) === -1 && mesh.flags.indexOf(StalePropertyFlag.Transform) === -1) {\n mesh.flags.push(StalePropertyFlag.Transform);\n }\n this.#geometryBuffers = geometries;\n this.#materialBuffers = materials;\n }\n texture(ctx, key) {\n const material = this.#materialBuffer;\n return material?.texture(ctx, key);\n }\n specificBuffer(context, key) {\n const freshness = this.#freshness;\n const flags = this.allFlags();\n if (Utils.isNull(this.#worldTransform) || flags.includes(StalePropertyFlag.Position) || flags.includes(StalePropertyFlag.Transform)) {\n this.#worldTransformBufferBag.clear();\n // world transform bind group buffer\n freshness.transform = true;\n this._rebuildWorldMatrices(context);\n }\n if (Utils.isNull(this.#geometryBuffer) || flags.includes(StalePropertyFlag.Geometry)) {\n // vertex buffers\n freshness.geometry = true;\n this._ensureGeometryBuffer();\n }\n if (Utils.isNull(this.#materialBuffer) || flags.includes(StalePropertyFlag.Material)) {\n freshness.material = true;\n this._ensureMaterialBuffer();\n }\n RenderableBuffers.clearFlags(this);\n const geom = this.#geometryBuffer;\n const mater = this.#materialBuffer;\n switch (key) {\n case 'geometryPositions':\n case 'geometryNormals':\n case 'geometryTexCoords':\n case 'geometry':\n return geom.buffer(context, key);\n case 'material':\n case 'line':\n return mater.buffer(context, key);\n case 'objectWorldTransform':\n const mat = this.#worldTransform, wFresh = freshness.transform;\n freshness.transform = false;\n const bag = this.#worldTransformBufferBag, { pipeline } = context;\n const newInPipeline = !bag.has(pipeline);\n if (newInPipeline) {\n bag.set(pipeline, mat);\n }\n return Utils.extend(mat, { fresh: wFresh || newInPipeline });\n default:\n throwBufferRequestError(key, RenderableMeshBuffer);\n }\n }\n _ensureGeometryBuffer() {\n const current = this.#geometryBuffer;\n const cache = this.#geometryBuffers;\n const mesh = this.item;\n const geom = mesh.geometry;\n // no cache provided? destroy and rebuild\n if (Utils.isNull(cache)) {\n current?.destroy();\n this.#geometryBuffer = new GeometryBuffer(geom);\n }\n else {\n let buffer = cache?.get(geom);\n if (buffer?.disposed !== false) {\n buffer = new GeometryBuffer(geom);\n cache.set(geom, buffer);\n }\n this.#geometryBuffer = buffer;\n }\n }\n _ensureMaterialBuffer() {\n const current = this.#materialBuffer;\n const cache = this.#materialBuffers;\n const mesh = this.item;\n const material = mesh.material ?? DefaultMaterial;\n // no cache provided? destroy and rebuild\n if (Utils.isNull(cache)) {\n current?.destroy();\n this.#materialBuffer = new MaterialBuffer(material);\n }\n else {\n let buffer = cache?.get(material);\n if (buffer?.disposed !== false) {\n buffer = new MaterialBuffer(material);\n cache.set(material, buffer);\n }\n this.#materialBuffer = buffer;\n }\n }\n _rebuildWorldMatrices({ device }) {\n //this.destroySafely(this.#worldTransform);\n const item = this.item;\n const matrix = this.buildWorldTransform();\n const normal = Matrix3D.transpose(Matrix3D.invert(matrix));\n const value = new Float32Array(28);\n value.set(Matrix3D.toArray(matrix), 0);\n value.set([normal.m11, normal.m12, normal.m13, 0, normal.m21, normal.m22, normal.m23, 0, normal.m31, normal.m32, normal.m33, 0], 16);\n //const current = this.#worldTransform;\n // reuse GPUBuffer (always same size)\n if (Utils.isNull(this.#worldTransform)) {\n const buffer = Buffers.createUniform(device, value, LABEL_PREFIX + 'mesh-' + item.key + '-worldmatrix-buffer');\n this.#worldTransform = { buffer, value, version: performance.now().roundoff() };\n }\n else {\n this.#worldTransform.value = value;\n this.#worldTransform.version = performance.now().roundoff();\n }\n //if (!Utils.isNull(current)) {\n // this.destroySafely(current);\n //}\n }\n dispose() {\n // memoizer\n this.#worldTransformBufferBag.clear();\n const world = this.#worldTransform;\n this.#worldTransform = null;\n this.destroySafely(world);\n const material = this.#materialBuffer;\n this.#materialBuffer = null;\n material?.destroy();\n const geometry = this.#geometryBuffer;\n this.#geometryBuffer = null;\n geometry?.destroy();\n }\n}\n// #endregion\n// #region LIGHTS\nclass RenderableLightBuffer extends RenderableBufferBase {\n #buffer;\n #bufferBag = new Map();\n constructor(light) {\n super(light);\n light.flags.push(StalePropertyFlag.Light);\n }\n /**\n * Ambient light buffer building\n * @param param0\n */\n _rebuildAmbientLightBuffer({ device }) {\n const light = this.item;\n // sizes/offsets\n const szColor = 4, szIntensity = 1, offsetColor = 0, offsetIntensity = 4;\n const szTotal = 24; // offsetIntensity + szIntensity;\n const values = new Float32Array(szTotal);\n // color\n const { r, g, b, a } = Colors.parse(light.color ?? '#fff');\n values.set([r, g, b, a], offsetColor);\n // intensity\n values.set([light.intensity], offsetIntensity);\n this.#buffer = { value: values, buffer: Buffers.createUniform(device, values, LABEL_PREFIX + 'ambient-light-buffer'), version: performance.now() };\n }\n /**\n * Directional light buffer building\n * @param param0\n */\n _rebuildDirectionalLightBuffer({ device }) {\n const light = this.item;\n // sizes/offsets\n const szIntensity = 1, szColor = 4, szDirection = 3, offsetColor = 0, offsetDirection = 4, // see: https://www.w3.org/TR/WGSL/#memory-layouts\n offsetIntensity = 7;\n const szTotal = offsetIntensity + szIntensity;\n const values = new Float32Array(szTotal);\n // color\n const { r, g, b, a } = Colors.parse(light.color ?? '#fff');\n values.set([r, g, b, a], offsetColor);\n // intensity\n values.set([light.intensity], offsetIntensity);\n // direction\n const direction = Vector3D.subtract(light.position, light.target);\n values.set([direction.x, direction.y, direction.z], offsetDirection);\n this.#buffer = { value: values, buffer: Buffers.createUniform(device, values, LABEL_PREFIX + 'directional-light-buffer'), version: performance.now() };\n }\n /**\n * Omni light buffer building\n * @param param0\n */\n _rebuildOmniLightBuffer({ device }) {\n const light = this.item;\n // sizes/offsets\n const szIntensity = 1, szColor = 4, szPosition = 3, offsetColor = 0, offsetPosition = 4, // see: https://www.w3.org/TR/WGSL/#memory-layouts\n offsetIntensity = 7;\n const szTotal = offsetIntensity + szIntensity;\n const values = new Float32Array(szTotal);\n // color\n const { r, g, b, a } = Colors.parse(light.color ?? '#fff');\n values.set([r, g, b, a], offsetColor);\n // intensity\n values.set([light.intensity], offsetIntensity);\n // position\n values.set([light.position.x, light.position.y, light.position.z], offsetPosition);\n this.#buffer = { value: values, buffer: Buffers.createUniform(device, values, LABEL_PREFIX + 'omni-light-buffer'), version: performance.now() };\n }\n _rebuildLight(context) {\n this.destroySafely(this.#buffer);\n const light = this.item;\n switch (light.type) {\n case 'direction':\n this._rebuildDirectionalLightBuffer(context);\n break;\n case 'omni':\n this._rebuildOmniLightBuffer(context);\n break;\n case 'ambient':\n this._rebuildAmbientLightBuffer(context);\n break;\n default:\n throw new Error(`Light '${light.type}' is not supported.`);\n }\n }\n texture(_) {\n throw new Error(\"Method not implemented.\");\n }\n specificBuffer(context, key) {\n const bag = this.#bufferBag;\n let fresh = Utils.isNull(this.#buffer) || this.allFlags().length > 0;\n if (fresh) {\n bag.clear();\n this._rebuildLight(context);\n }\n RenderableBuffers.clearFlags(this);\n const { pipeline } = context;\n if (!bag.has(pipeline)) {\n fresh = true;\n bag.set(pipeline, this.#buffer);\n }\n if (key === 'light') {\n return Utils.extend(this.#buffer, { fresh });\n }\n throwBufferRequestError(key, RenderableLightBuffer);\n }\n dispose() {\n this.#bufferBag.clear();\n const buffer = this.#buffer;\n this.#buffer = null;\n this.destroySafely(buffer);\n }\n}\n// #endregion\n","import { Utils } from '@pacem/pacem-core';\nimport { isMesh, isCamera, isLight, isMeshGeometry } from '../../types';\nimport { KnownShader, isLineMaterial } from '../../materials/material';\nimport { WGSLBindingType } from './abstractions';\nimport { LABEL_PREFIX, MATERIAL_GROUP_INDEX, UNIFORM_GROUP_INDEX_LIGHTING, UNIFORM_GROUP_INDEX_CAMERA, UNIFORM_BINDING_INDEX_CAMERA, UNIFORM_GROUP_INDEX_TRANSFORM, UNIFORM_BINDING_INDEX_TRANSFORM, UNIFORM_GROUP_INDEX_INTERACTION, UNIFORM_BINDING_INDEX_INTERACTION, STORAGE_MATERIAL_INDEX, STORAGE_GROUP_INDEX_LINE, SAMPLER_BINDING_INDEX, TEXTURE_BINDING_INDEX, VERTEX_BUFFER_INDEX_MESH_POSITION, VERTEX_BUFFER_INDEX_MESH_NORMAL, VERTEX_BUFFER_INDEX_MESH_UV, VERTEX_COLOR_REFERENCE, LIGHTING_COLOR_REFERENCE, AMBIENT_COLOR_REFERENCE, UNIFORM_GROUP_INDEX_COLORPICKING, GPUShaderStage } from './constants';\nimport { BufferLayouts } from './buffers';\nimport { BasicMaterial, LineMaterial } from './materials';\nimport { getMeshVertexWgsl } from './wgsl/mesh-vertex';\nimport { getDefaultLineVertexWgsl, getFatLineVertexWgsl } from './wgsl/line-vertex';\nimport { getColorPickingFragmentWgsl } from './wgsl/object-picking-fragment';\nimport { textureMap } from './wgsl/texture-fragment';\nimport { directionalLight } from './wgsl/directional-light-fragment';\nimport { omniLight } from './wgsl/omni-light-fragment';\nimport { ambientLight } from './wgsl/ambient-light-fragment';\nimport { RenderableBuffers } from './renderablebuffer';\n//namespace Pacem.Drawing3D.WebGPU {\n// #region constants\nconst labelPrefix = LABEL_PREFIX;\nconst DefaultPipelineOptions = {\n multisample: true,\n packedVertices: true,\n primitive: {\n topology: 'triangle-list',\n frontFace: 'ccw',\n cullMode: 'back'\n }\n};\nconst EMPTY_BIND_DELEGATE = (_) => { };\nexport class RenderPipelines {\n static { this._memoizer = new WeakMap(); }\n static dispose(ctx) {\n const memoizer = this._memoizer;\n const cache = memoizer.get(ctx);\n if (!Utils.isNull(cache)) {\n cache.clear();\n memoizer.delete(ctx);\n }\n }\n static createColorPicking(ctx, items) {\n const renderPipeline = RenderPipelines.create(ctx, items);\n if (renderPipeline instanceof MeshRenderPipelineClass\n || renderPipeline instanceof LineRenderPipelineClass) {\n return {\n frame: renderPipeline.raycast\n };\n }\n return null;\n }\n static create(ctx, [mesh, camera, ...lights], pipelineOptions) {\n const memoizer = RenderPipelines._memoizer;\n let cache = memoizer.get(ctx);\n if (Utils.isNull(cache)) {\n memoizer.set(ctx, cache = new Map());\n }\n //const camera = items.find(i => isCamera(i.item));\n //const lights = items.filter(i => isLight(i.item));\n //// find main object\n //const mesh = items.find(i => isMesh(i.item));\n if (!Utils.isNull(mesh)) {\n if (isMesh(mesh.item)) {\n const isMesh = isMeshGeometry(mesh.item.geometry);\n const isLine = !isMesh && isLineMaterial(mesh.item.material);\n if (!isMesh && !isLine) {\n throw new Error('Pipeline not implemented, given the provided mesh argument.');\n }\n const builder = isMesh ? new MeshWGSLBuilder(mesh, camera, ...lights)\n : new LineWGSLBuilder(mesh, camera);\n // cache peek for sudden return\n const key = builder.key + (pipelineOptions?.modifiers?.version ?? '');\n const found = cache.get(key);\n if (found) {\n return found;\n }\n const pipeline = isMesh ? new MeshRenderPipelineClass(ctx, builder)\n : new LineRenderPipelineClass(ctx, builder);\n // no cache -> build it\n pipeline.build(pipelineOptions);\n const retval = pipeline;\n Utils.extend(retval, {\n id: key + '-' + ctx.canvas.width + 'x' + ctx.canvas.height + '-' + Utils.Dates.now().toISOString()\n });\n cache.set(key, retval);\n return retval;\n }\n else {\n throw new ReferenceError('Pipeline not implemented, given thst the first argument is not a mesh.');\n }\n }\n else {\n throw new Error('Pipeline not implemented, given the provided arguments.');\n }\n }\n}\nclass RenderPipelineCache {\n constructor() {\n this.#cache = new Map();\n }\n #cache;\n ensureBindGroup({ device }, item, buffers, refresh, layout, label, callback = () => { }) {\n const cache = this.#cache;\n const key = typeof item === 'string' ? item : item.key;\n let set = cache.get(key);\n if (Utils.isNull(set)) {\n cache.set(key, set = new Map());\n }\n if (refresh || !set.has(label)) {\n const entries = buffers.map((item, index) => {\n const entry = {\n binding: index,\n resource: {\n buffer: item\n }\n };\n return entry;\n });\n const descriptor = {\n label,\n layout,\n entries\n };\n // custom config happens here\n callback(descriptor);\n const retval = device.createBindGroup(descriptor);\n set.set(label, retval);\n return retval;\n }\n else {\n return set.get(label);\n }\n }\n}\nclass MeshWGSLBuilder {\n #lights = [];\n #mesh;\n #camera;\n #bindgroups = new Map();\n #key = { shader: 'basic', lights: '' };\n constructor(...objects) {\n this.add(...objects);\n }\n reset() {\n this.#lights.splice(0);\n this.#mesh = null;\n this.#bindgroups.clear();\n this.#key = { shader: 'basic', lights: '' };\n }\n add(...objects) {\n for (let obj of objects ?? []) {\n if (isMesh(obj.item)) {\n if (Utils.isNull(this.#mesh)) {\n this.#mesh = obj;\n const material = obj.item.material ?? { shader: KnownShader.Basic };\n this.#key.shader = material.shader + '-' + (material.map ? 'map' : 'nomap');\n }\n else {\n throw new Error('Mesh already added.');\n }\n }\n else if (isLight(obj.item)) {\n const lights = this.#lights;\n lights.push(obj);\n this.#key.lights += ('-' + obj.item.type);\n }\n else if (isCamera(obj.item)) {\n this.#camera ??= obj;\n }\n else {\n throw new Error('Unknown object type.');\n }\n }\n // add interaction\n }\n build(modifiers) {\n const data = this._computeBasicData();\n const key = this.key, vertex = this.vertex({ inputModifier: modifiers?.vertexInput, outputModifier: modifiers?.vertexOutput }), fragment = this.fragment(data, { modifier: modifiers?.fragment }), bindings = (...args) => MeshWGSLBuilder.prototype.bindgroup.apply(this, args);\n const metadata = {\n lightCount: this.#lights.length,\n mapCount: this.#mesh.item.material?.map ? 1 : 0\n };\n return {\n vertex,\n fragment,\n key,\n bindings,\n metadata\n };\n }\n get key() {\n const { shader, lights } = this.#key;\n // TODO: consider backMap\n return `mesh-` + shader + lights;\n //return `mesh-${shader}${(hasTexture ? '-map' : '-nomap')}`;\n }\n bindgroup(type, key, index) {\n const set = this.#bindgroups;\n const arr = set.get(type);\n if (Utils.isNull(arr)) {\n return null;\n }\n if (Utils.isNullOrEmpty(key)) {\n return arr;\n }\n const filteredArr = arr.filter(i => i.key === key);\n if (isNaN(index)) {\n return filteredArr;\n }\n if (index >= 0 && index < arr.length) {\n return filteredArr[index];\n }\n return filteredArr;\n }\n vertex(options) {\n return getMeshVertexWgsl(options);\n }\n _computeBasicData() {\n const mesh = this.#mesh.item, lights = this.#lights, material = mesh.material, hasTexture = !Utils.isNull(material?.texture), hasLighting = !Utils.isNullOrEmpty(lights);\n const shader = Utils.isNull(mesh) ? KnownShader.Basic : (mesh.material?.shader ?? KnownShader.Basic);\n const materialBindGroupIndex = MATERIAL_GROUP_INDEX, lightingBindGroupIndex = UNIFORM_GROUP_INDEX_LIGHTING;\n return {\n hasTexture, hasLighting, shader,\n materialBindGroupIndex,\n lightingBindGroupIndex,\n };\n }\n _computeBindGroupsAndReferences(data = this._computeBasicData()) {\n const { hasTexture, materialBindGroupIndex, lightingBindGroupIndex } = data;\n const bindgroups = this.#bindgroups, lights = this.#lights;\n // build bindings\n // mesh + material\n const worldTransform = { key: 'objectWorldTransform', group: UNIFORM_GROUP_INDEX_TRANSFORM, binding: UNIFORM_BINDING_INDEX_TRANSFORM, type: 'buffer' };\n const material = { key: 'material', group: materialBindGroupIndex, binding: STORAGE_MATERIAL_INDEX, type: 'buffer' };\n if (hasTexture) {\n bindgroups.set(WGSLBindingType.Mesh, [worldTransform, material, { key: 'texture', group: materialBindGroupIndex, type: 'texture' }]);\n }\n else {\n bindgroups.set(WGSLBindingType.Mesh, [worldTransform, material]);\n }\n // camera\n bindgroups.set(WGSLBindingType.Camera, [\n { key: 'cameraViewTransform', group: UNIFORM_GROUP_INDEX_CAMERA, binding: UNIFORM_BINDING_INDEX_CAMERA, type: 'buffer' }\n ]);\n // lights\n const lArr = lights.map((_, ndx) => {\n return { key: 'light', group: lightingBindGroupIndex, binding: ndx, type: 'buffer' };\n });\n lArr.push(...lArr);\n // interaction\n bindgroups.set(WGSLBindingType.Interaction, [{ key: 'interaction', group: UNIFORM_GROUP_INDEX_INTERACTION, type: 'buffer', binding: UNIFORM_BINDING_INDEX_INTERACTION }]);\n }\n fragment(data = this._computeBasicData(), options) {\n this._computeBindGroupsAndReferences(data);\n const extra = {\n definitions: [], bindings: [], modifiers: []\n };\n const merge = (x) => {\n for (let definition of x.definitions ?? []) {\n if (extra.definitions.indexOf(definition) === -1) {\n extra.definitions.push(definition);\n }\n }\n if (!Utils.isNullOrEmpty(x.bindings)) {\n extra.bindings.push(...x.bindings);\n }\n if (!Utils.isNullOrEmpty(x.modifiers)) {\n extra.modifiers.push(...x.modifiers);\n }\n };\n /* TODO: consider injecting customizations (options.modifier) into `WGSLFragmentExtra`*/\n switch (data.shader) {\n case KnownShader.Basic:\n // texture\n if (data.hasTexture) {\n const materialGroupIndex = data.materialBindGroupIndex;\n const wgslTex = textureMap({ inputColor: VERTEX_COLOR_REFERENCE, outputColors: [VERTEX_COLOR_REFERENCE], uv: 'uv' }, materialGroupIndex);\n merge(wgslTex);\n }\n // lights\n let lightIndex = 0;\n const lights = this.#lights;\n for (let lightBuffer of lights) {\n const light = lightBuffer.item; // TODO: consider implementing Pacem.Drawing3D.WebGPU.Light interface (as of Materials)\n switch (light.type) {\n case 'direction':\n const dirLightExtra = directionalLight({ outputColor: LIGHTING_COLOR_REFERENCE, normal: 'normal' }, data.lightingBindGroupIndex, lightIndex);\n merge(dirLightExtra);\n break;\n case 'omni':\n const omniLightExtra = omniLight({ outputColor: LIGHTING_COLOR_REFERENCE, normal: 'normal', position: 'vertex', /*specularColor: MATERIAL_REFERENCE + '.specularColor', shininess: MATERIAL_REFERENCE + '.shininess'*/ }, data.lightingBindGroupIndex, lightIndex);\n merge(omniLightExtra);\n break;\n case 'ambient':\n const ambLightExtra = ambientLight({ inputColor: VERTEX_COLOR_REFERENCE, outputColor: AMBIENT_COLOR_REFERENCE }, data.lightingBindGroupIndex, lightIndex);\n merge(ambLightExtra);\n break;\n }\n lightIndex++;\n }\n return BasicMaterial.fragment(extra, options);\n }\n }\n}\nconst PipelineUtils = {\n writeBufferConditionally: (device, buffer) => {\n if (!buffer.fresh) {\n return;\n }\n device.queue.writeBuffer(buffer.buffer, 0, buffer.value);\n }\n};\nclass MeshRenderPipelineClass {\n constructor(_context, _builder, _cache = new RenderPipelineCache()) {\n this._context = _context;\n this._builder = _builder;\n this._cache = _cache;\n // #region fields and utils\n this._ensureU32idBindGroup = (item, buffer, refresh) => {\n return this._cache.ensureBindGroup(this._context, item, [buffer], refresh, this._pickBindGroupLayout, labelPrefix + 'mesh-colorpick-bind-group');\n };\n this._ensureMaterialBindGroup = (item, buffer, texture, refresh, layoutIndex = MATERIAL_GROUP_INDEX) => {\n const layout = this._bindGroupLayouts[layoutIndex], label = labelPrefix + 'material-bind-group';\n if (layout.label !== (labelPrefix + 'material-bind-group-layout')) {\n throw new Error('BindGroupLayout mismatch!');\n }\n return this._cache.ensureBindGroup(this._context, item, [buffer], refresh, layout, label, (descriptor) => {\n const { device } = this.context;\n const entries = descriptor.entries /* entries are build as array in the method */;\n if (texture) {\n entries.push({\n binding: SAMPLER_BINDING_INDEX, resource: device.createSampler({\n addressModeU: 'repeat',\n addressModeV: 'repeat',\n magFilter: 'linear',\n minFilter: 'linear',\n })\n }, {\n binding: TEXTURE_BINDING_INDEX, resource: texture.createView()\n });\n }\n });\n };\n this._ensureWorldTransformBindGroup = (item, buffer, refresh, layoutIndex = UNIFORM_GROUP_INDEX_TRANSFORM, raycasting = false) => {\n const layout = this._bindGroupLayouts[layoutIndex];\n if (layout.label !== (labelPrefix + 'mesh-transforms-bind-group-layout')) {\n throw new Error('BindGroupLayout mismatch!');\n }\n const key = item.key + '-' + (raycasting ? 1 : 0);\n const label = `${labelPrefix}${raycasting ? 'colorpick' : 'mesh'}-transforms-bind-group`;\n return this._cache.ensureBindGroup(this._context, key, [buffer], refresh, layout, label);\n };\n this._ensureCameraProjectionAndInteractionDataBindGroup = (item, viewBuffer, interactionBuffer, refresh, layoutIndex = UNIFORM_GROUP_INDEX_CAMERA, raycasting = false) => {\n const layout = this._bindGroupLayouts[layoutIndex];\n const key = item.key + '-' + (raycasting ? 1 : 0);\n const label = `${labelPrefix}${raycasting ? 'colorpick' : 'mesh'}-view-bind-group`;\n return this._cache.ensureBindGroup(this._context, key, [viewBuffer, interactionBuffer], refresh, layout, label);\n };\n this._ensureLightingBindGroup = (lights, refresh, layoutIndex = UNIFORM_GROUP_INDEX_LIGHTING) => {\n const layout = this._bindGroupLayouts[layoutIndex];\n const key = lights.map(l => l.id).join(':');\n const buffers = lights.map(l => l.buffer.buffer);\n return this._cache.ensureBindGroup(this._context, key, buffers, refresh, layout, labelPrefix + 'mesh-lighting-bind-group');\n };\n this._bindGroupLayouts = [];\n this._bindVertex = EMPTY_BIND_DELEGATE;\n this._bindPicker = EMPTY_BIND_DELEGATE;\n this._bindWorldTransform = EMPTY_BIND_DELEGATE;\n this._bindRaycastWorldTransform = EMPTY_BIND_DELEGATE;\n this._bindCameraProjectionAndInteractionData = EMPTY_BIND_DELEGATE;\n this._bindRaycastCameraProjectionAndInteractionData = EMPTY_BIND_DELEGATE;\n this._bindLighting = EMPTY_BIND_DELEGATE;\n this._bindMaterial = EMPTY_BIND_DELEGATE;\n // #endregion\n // #region implementation\n this.set = (pass) => {\n throw new Error('Deprecated.');\n };\n this.bind = (pass, ...buffers) => {\n throw new Error('Deprecated.');\n };\n this.draw = (pass, ...buffers) => {\n throw new Error('Deprecated.');\n };\n this.frame = (pass, interactionBuffer, meshBuffer, cameraBuffer, ...lightBuffers) => {\n // set\n pass.setPipeline(this._pipeline);\n try {\n // bind\n this._bindVertex(pass, meshBuffer);\n this._bindWorldTransform(pass, meshBuffer);\n this._bindMaterial(pass, meshBuffer);\n this._bindCameraProjectionAndInteractionData(pass, cameraBuffer, interactionBuffer);\n this._bindLighting(pass, ...lightBuffers);\n // draw\n const mesh = meshBuffer.item, geometry = mesh.geometry;\n pass.draw(geometry.triangleIndices?.length || geometry.positions.length);\n }\n catch (e) {\n console.error('Pacem.Drawing3D.FrameException', e);\n }\n };\n this.raycast = (pass, interactionBuffer, meshBuffer, cameraBuffer) => {\n // set\n pass.setPipeline(this._pickPipeline);\n try {\n // bind\n this._bindVertex(pass, meshBuffer);\n this._bindRaycastWorldTransform(pass, meshBuffer);\n this._bindRaycastCameraProjectionAndInteractionData(pass, cameraBuffer, interactionBuffer);\n this._bindPicker(pass, meshBuffer);\n // draw\n const mesh = meshBuffer.item, geometry = mesh.geometry;\n pass.draw(geometry.triangleIndices.length);\n }\n catch (e) { }\n };\n this._key = _builder.key;\n }\n get context() {\n return this._context;\n }\n get key() {\n return this._key;\n }\n build(pipelineOptions) {\n const options = Utils.extend({}, DefaultPipelineOptions, pipelineOptions ?? {});\n const builder = this._builder, wgsl = builder.build(options.modifiers);\n const ctx = Utils.extend({ pipeline: this }, this._context);\n const device = ctx.device;\n // #region VERTEX\n // build vertex state\n const vertex = {\n module: device.createShaderModule({ code: wgsl.vertex }),\n buffers: options.packedVertices ?\n [\n // packed\n BufferLayouts.createVertex(VERTEX_BUFFER_INDEX_MESH_POSITION, 3, 3, 2),\n ]\n : [\n // position\n BufferLayouts.createVertex(VERTEX_BUFFER_INDEX_MESH_POSITION, 3),\n // normal\n BufferLayouts.createVertex(VERTEX_BUFFER_INDEX_MESH_NORMAL, 3),\n // uv\n BufferLayouts.createVertex(VERTEX_BUFFER_INDEX_MESH_UV, 2)\n ]\n };\n // bind group layouts\n const viewBindGroupLayout = device.createBindGroupLayout({\n entries: [\n // camera matrices\n {\n binding: UNIFORM_BINDING_INDEX_CAMERA,\n visibility: GPUShaderStage.VERTEX | GPUShaderStage.FRAGMENT,\n buffer: {\n type: 'uniform'\n }\n },\n // interaction\n {\n binding: UNIFORM_BINDING_INDEX_INTERACTION,\n visibility: GPUShaderStage.VERTEX | GPUShaderStage.FRAGMENT,\n buffer: {\n type: 'uniform'\n }\n }\n ], label: labelPrefix + 'mesh-view-bind-group-layout'\n });\n const worldBindGroupLayout = device.createBindGroupLayout({\n entries: [\n {\n // world- and normalMatrix entry\n binding: UNIFORM_BINDING_INDEX_TRANSFORM,\n visibility: GPUShaderStage.VERTEX,\n buffer: {\n type: 'uniform'\n }\n }\n ], label: labelPrefix + 'mesh-transforms-bind-group-layout'\n });\n const bindGroupLayouts = [viewBindGroupLayout, worldBindGroupLayout];\n // #endregion\n // #region FRAGMENT\n // TODO: https://stackoverflow.com/questions/50720534/implementing-depth-testing-for-semi-transparent-objects\n // Weighted Blended Order-Independent Transparency https://jcgt.org/published/0002/02/09/\n // a-buffer: https://webgpu.github.io/webgpu-samples/?sample=a-buffer#composite.wgsl\n const fragment = {\n module: device.createShaderModule({\n code: wgsl.fragment\n }), targets: [\n {\n format: ctx.format,\n blend: {\n color: {\n srcFactor: 'src-alpha',\n dstFactor: 'one-minus-src-alpha'\n },\n alpha: {},\n }\n }\n ]\n };\n // material\n // material / material\n const materialGroupIndex = bindGroupLayouts.length;\n const materialBindGroupLayoutDescriptorEntries = [{\n // vertex colors entry\n binding: STORAGE_MATERIAL_INDEX,\n visibility: GPUShaderStage.FRAGMENT,\n buffer: {\n type: 'read-only-storage'\n }\n }];\n // material / texture\n const { mapCount } = wgsl.metadata, hasTex = mapCount > 0;\n if (hasTex) {\n materialBindGroupLayoutDescriptorEntries.push({ visibility: GPUShaderStage.FRAGMENT, binding: SAMPLER_BINDING_INDEX, sampler: {} }, ...Array(mapCount).keys().map(index => { return { visibility: GPUShaderStage.FRAGMENT, binding: SAMPLER_BINDING_INDEX + 1 + index, texture: {} }; }));\n }\n else {\n }\n const materialBindGroupLayoutDescriptor = {\n label: labelPrefix + 'material-bind-group-layout',\n entries: materialBindGroupLayoutDescriptorEntries\n };\n const materialBindGroupLayout = device.createBindGroupLayout(materialBindGroupLayoutDescriptor);\n bindGroupLayouts.push(materialBindGroupLayout);\n // lighting\n const lightingGroupIndex = bindGroupLayouts.length;\n const { lightCount } = wgsl.metadata, hasLighting = lightCount > 0;\n if (hasLighting) {\n const lightingBindGroupLayout = device.createBindGroupLayout({\n entries: [...Array(lightCount).keys()].map((_, index) => {\n return {\n visibility: GPUShaderStage.FRAGMENT, binding: index, buffer: {\n type: 'uniform'\n }\n };\n }),\n label: labelPrefix + 'lighting-bind-group-layout'\n });\n bindGroupLayouts.push(lightingBindGroupLayout);\n }\n // #endregion\n // #region PIPELINE\n // full pipeline descriptor\n const descriptor = {\n label: labelPrefix + 'mesh-render-pipeline',\n vertex,\n fragment,\n // pipeline-layout\n layout: device.createPipelineLayout({\n label: labelPrefix + 'mesh-render-pipeline-layout',\n bindGroupLayouts: (this._bindGroupLayouts = bindGroupLayouts)\n }),\n primitive: options.primitive\n };\n if (options.multisample) {\n descriptor.multisample = { count: 4 };\n descriptor.depthStencil = {\n depthCompare: 'less',\n format: 'depth24plus',\n depthWriteEnabled: true\n };\n }\n this._pipeline = device.createRenderPipeline(descriptor);\n // raycast pipeline descriptor\n const pickFragGroupLayout = this._pickBindGroupLayout = device.createBindGroupLayout({\n label: labelPrefix + 'mesh-colorpick-bind-group-layout',\n entries: [\n {\n visibility: GPUShaderStage.FRAGMENT,\n binding: 0,\n buffer: { type: 'uniform' }\n }\n ]\n });\n const pickDescriptor = {\n label: labelPrefix + 'mesh-colorpick-pipeline',\n vertex,\n fragment: {\n module: device.createShaderModule({\n code: getColorPickingFragmentWgsl(UNIFORM_GROUP_INDEX_COLORPICKING)\n }), targets: [\n { format: 'r32uint' }\n ]\n },\n layout: device.createPipelineLayout({\n label: labelPrefix + 'mesh-colorpick-pipeline-layout',\n bindGroupLayouts: [viewBindGroupLayout, worldBindGroupLayout, pickFragGroupLayout]\n }),\n primitive: options.primitive,\n depthStencil: {\n depthWriteEnabled: true,\n depthCompare: 'less',\n format: 'depth24plus',\n },\n };\n this._pickPipeline = device.createRenderPipeline(pickDescriptor);\n // #endregion\n // vertex buffers\n const bindVertexSplit = (pass, ...buffers) => {\n const meshBuffer = buffers.at(0);\n if (Utils.isNull(meshBuffer)) {\n throw new ReferenceError(`Null ${RenderableBuffers.name} bringing vertex buffers was provided.`);\n }\n const { buffer: positions } = meshBuffer.buffer(ctx, 'geometryPositions');\n const { buffer: normals } = meshBuffer.buffer(ctx, 'geometryNormals');\n const { buffer: uv } = meshBuffer.buffer(ctx, 'geometryTexCoords');\n pass.setVertexBuffer(VERTEX_BUFFER_INDEX_MESH_POSITION, positions);\n pass.setVertexBuffer(VERTEX_BUFFER_INDEX_MESH_NORMAL, normals);\n pass.setVertexBuffer(VERTEX_BUFFER_INDEX_MESH_UV, uv);\n };\n const bindVertexPacked = (pass, ...buffers) => {\n const meshBuffer = buffers.at(0);\n if (Utils.isNull(meshBuffer)) {\n throw new ReferenceError(`Null ${RenderableBuffers.name} bringing vertex buffers was provided.`);\n }\n const { buffer } = meshBuffer.buffer(ctx, 'geometry');\n pass.setVertexBuffer(VERTEX_BUFFER_INDEX_MESH_POSITION, buffer);\n };\n this._bindVertex = options.packedVertices ? bindVertexPacked : bindVertexSplit;\n // world transform\n const bindWorldTransform = (pass, meshBuffer, raycasting) => {\n if (Utils.isNull(meshBuffer)) {\n throw new ReferenceError(`Null ${RenderableBuffers.name} bringing world transform buffer was provided.`);\n }\n const worldTransform = meshBuffer.buffer(ctx, 'objectWorldTransform'), worldTransformBuffer = worldTransform.buffer;\n // writes only if buffer is fresh\n PipelineUtils.writeBufferConditionally(device, worldTransform);\n const { group } = wgsl.bindings(WGSLBindingType.Mesh, 'objectWorldTransform', 0);\n const bindGroup = this._ensureWorldTransformBindGroup(meshBuffer.item, worldTransformBuffer, worldTransform.fresh /*false*/ /* persist the same bindGroup, given the constant size */, group, raycasting);\n pass.setBindGroup(group, bindGroup);\n };\n this._bindWorldTransform = (pass, ...buffers) => {\n const meshBuffer = buffers.at(0);\n bindWorldTransform(pass, meshBuffer, false);\n };\n this._bindRaycastWorldTransform = (pass, ...buffers) => {\n const meshBuffer = buffers.at(0);\n bindWorldTransform(pass, meshBuffer, true);\n };\n // camera matrices and interaction data\n const bindCameraProjectionAndInteractionData = (pass, cameraBuffer, interactionBuffer, raycasting) => {\n if (Utils.isNull(cameraBuffer)) {\n throw new ReferenceError(`Null ${RenderableBuffers.name} bringing view projection buffers was provided.`);\n }\n // camera view\n const viewTransformBuffer = cameraBuffer.buffer(ctx, 'cameraViewTransform'), viewTransformBufferBuffer = viewTransformBuffer.buffer;\n // writes only if buffer is fresh\n PipelineUtils.writeBufferConditionally(device, viewTransformBuffer);\n // interaction\n if (Utils.isNull(interactionBuffer)) {\n throw new ReferenceError(`Null ${RenderableBuffers.name} bringing interaction buffers was provided.`);\n }\n const interactionDataBuffer = interactionBuffer.buffer(ctx, 'interaction'), interactionDataBufferBuffer = interactionDataBuffer.buffer;\n // writes only if buffer is fresh\n PipelineUtils.writeBufferConditionally(device, interactionDataBuffer);\n const { group } = wgsl.bindings(WGSLBindingType.Camera, 'cameraViewTransform', 0);\n const { group: interactionGroup } = wgsl.bindings(WGSLBindingType.Interaction, 'interaction', 0);\n if (group !== interactionGroup) {\n throw new ReferenceError(`Layout bind group mismatch: ${group} vs ${interactionGroup}.`);\n }\n const bindGroup = this._ensureCameraProjectionAndInteractionDataBindGroup(cameraBuffer.item, viewTransformBufferBuffer, interactionDataBufferBuffer, \n // since fresh could mean also \"camera switched\" (e.g. from ortho to perspective and then back to ortho) there's risk\n // to target destroyed buffers, this refresh the bind group if either buffer is fresh.\n // Possibilities for fine-tuning in future.\n viewTransformBuffer.fresh || interactionDataBuffer.fresh, group, raycasting);\n pass.setBindGroup(group, bindGroup);\n };\n this._bindCameraProjectionAndInteractionData = (pass, ...buffers) => {\n const cameraBuffer = buffers.at(0);\n const interactionBuffer = buffers.at(1);\n bindCameraProjectionAndInteractionData(pass, cameraBuffer, interactionBuffer, false);\n };\n this._bindRaycastCameraProjectionAndInteractionData = (pass, ...buffers) => {\n const cameraBuffer = buffers.at(0);\n const interactionBuffer = buffers.at(1);\n bindCameraProjectionAndInteractionData(pass, cameraBuffer, interactionBuffer, true);\n };\n // vertexColors and textures\n this._bindMaterial = (pass, ...buffers) => {\n const meshBuffer = buffers.at(0);\n if (Utils.isNull(meshBuffer)) {\n throw new ReferenceError(`Null ${RenderableBuffers.name} bringing vertex colors was provided.`);\n }\n const vertexColorsBuffer = meshBuffer.buffer(ctx, 'material'), vertexColorsBufferBuffer = vertexColorsBuffer.buffer;\n // writes only if buffer is fresh\n PipelineUtils.writeBufferConditionally(device, vertexColorsBuffer);\n let tex = meshBuffer.texture(ctx);\n const texBmp = tex?.texture;\n const bindGroup = this._ensureMaterialBindGroup(meshBuffer.item, vertexColorsBufferBuffer, texBmp, vertexColorsBuffer.fresh, materialGroupIndex);\n pass.setBindGroup(materialGroupIndex, bindGroup);\n if (hasTex) {\n device.queue.copyExternalImageToTexture({ source: tex.source, flipY: true }, { texture: texBmp }, { width: texBmp.width, height: texBmp.height });\n }\n };\n // lights\n this._bindLighting = (pass, ...buffers) => {\n if (hasLighting) {\n const lightArray = Array.from(buffers);\n const lightBuffers = lightArray.map(l => { return { buffer: l.buffer(ctx, 'light'), id: l.item.key }; });\n const refresh = lightBuffers.some(b => b.buffer.fresh);\n const bindGroup = this._ensureLightingBindGroup(lightBuffers, refresh, lightingGroupIndex);\n for (let lightBuffer of lightBuffers) {\n // writes only if buffer is fresh\n PipelineUtils.writeBufferConditionally(device, lightBuffer.buffer);\n }\n pass.setBindGroup(lightingGroupIndex, bindGroup);\n }\n };\n // picker\n this._bindPicker = (pass, ...buffers) => {\n const meshBuffer = buffers.at(0);\n if (Utils.isNull(meshBuffer)) {\n throw new ReferenceError(`Null ${RenderableBuffers.name} bringing world transform buffer was provided.`);\n }\n const u32id = meshBuffer.buffer(ctx, 'u32id'), u32idBuffer = u32id.buffer;\n // writes only if buffer is fresh\n PipelineUtils.writeBufferConditionally(device, u32id);\n const group = UNIFORM_GROUP_INDEX_COLORPICKING;\n const refresh = u32id.fresh;\n const bindGroup = this._ensureU32idBindGroup(meshBuffer.item, u32idBuffer, refresh /* reuse u32id.fresh*/);\n pass.setBindGroup(group, bindGroup);\n };\n }\n}\nclass LineWGSLBuilder {\n #line;\n #camera;\n #bindgroups = new Map();\n constructor(...objects) {\n this.add(...objects);\n }\n reset() {\n this.#line = null;\n this.#bindgroups.clear();\n }\n add(...objects) {\n for (let obj of objects ?? []) {\n if (isMesh(obj.item)) {\n if (Utils.isNull(this.#line)) {\n this.#line = obj;\n }\n else {\n throw new Error('Line already added.');\n }\n }\n else if (isCamera(obj.item)) {\n this.#camera ??= obj;\n }\n else if (isLight(obj.item)) {\n // ignore\n }\n else {\n throw new Error('Unknown object type.');\n }\n }\n }\n build() {\n const data = this._computeBasicData();\n const key = this.key, vertex = this.vertex(data), fragment = this.fragment(data), bindings = (...args) => LineWGSLBuilder.prototype.bindgroup.apply(this, args);\n return {\n vertex,\n fragment,\n key,\n bindings,\n metadata: { thickness: data.thickness, dashPattern: data.dashPattern }\n };\n }\n get key() {\n const fat = (this.#line?.item).material?.lineWidth > 1;\n return KnownShader.Line + (fat ? '-fat' : '');\n }\n bindgroup(type, key, index) {\n const set = this.#bindgroups;\n const arr = set.get(type);\n if (Utils.isNull(arr)) {\n return null;\n }\n if (Utils.isNullOrEmpty(key)) {\n return arr;\n }\n const filteredArr = arr.filter(i => i.key === key);\n if (isNaN(index)) {\n return filteredArr;\n }\n if (index >= 0 && index < arr.length) {\n return filteredArr[index];\n }\n return filteredArr;\n }\n vertex(data = this._computeBasicData()) {\n return data.thickness > 1 ? getFatLineVertexWgsl() : getDefaultLineVertexWgsl();\n }\n _computeBasicData() {\n const mesh = this.#line.item;\n const shader = Utils.isNull(mesh) ? KnownShader.Line : (mesh.material?.shader ?? KnownShader.Line);\n const material = mesh.material;\n const thickness = material?.lineWidth ?? 1;\n const dashPattern = material?.dashArray;\n return {\n shader,\n thickness, dashPattern,\n };\n }\n _computeBindGroupsAndReferences(data = this._computeBasicData()) {\n const bindgroups = this.#bindgroups;\n // build bindings\n // mesh + material\n const worldTransform = { key: 'objectWorldTransform', group: UNIFORM_GROUP_INDEX_TRANSFORM, binding: UNIFORM_BINDING_INDEX_TRANSFORM, type: 'buffer' };\n const material = { key: 'material', group: STORAGE_GROUP_INDEX_LINE + 1, binding: STORAGE_MATERIAL_INDEX, type: 'buffer' };\n const geometryPositions = { key: 'geometryPositions', group: STORAGE_GROUP_INDEX_LINE, binding: 0, type: 'buffer' };\n const line = { key: 'line', group: STORAGE_GROUP_INDEX_LINE, binding: 1, type: 'buffer' };\n bindgroups.set(WGSLBindingType.Mesh, [worldTransform, material, geometryPositions, line]);\n // camera\n bindgroups.set(WGSLBindingType.Camera, [\n { key: 'cameraViewTransform', group: UNIFORM_GROUP_INDEX_CAMERA, binding: UNIFORM_BINDING_INDEX_CAMERA, type: 'buffer' }\n ]);\n }\n fragment(data = this._computeBasicData()) {\n this._computeBindGroupsAndReferences(data);\n const extra = {\n definitions: [], bindings: [], modifiers: []\n };\n switch (data.shader) {\n case KnownShader.Line:\n return LineMaterial.fragment(extra);\n }\n }\n}\nclass LineRenderPipelineClass {\n #context;\n constructor(context, _lineBuilder, _cache = new RenderPipelineCache()) {\n this._lineBuilder = _lineBuilder;\n this._cache = _cache;\n // #region fields and utils\n this._ensureLineU32idBindGroup = (item, buffer, refresh) => {\n const ctx = this.context;\n return this._cache.ensureBindGroup(ctx, item, [buffer], refresh, this._pickLineBindGroupLayout, labelPrefix + 'line-colorpick-bind-group');\n };\n this._ensureLineMaterialBindGroup = (item, buffer, refresh, layoutIndex = MATERIAL_GROUP_INDEX) => {\n const layout = this._bindLineGroupLayouts[layoutIndex];\n if (layout.label !== (labelPrefix + 'line-material-bind-group-layout')) {\n throw new Error('BindGroupLayout mismatch!');\n }\n const ctx = this.context;\n return this._cache.ensureBindGroup(ctx, item, [buffer], refresh, layout, labelPrefix + 'line-material-bind-group');\n };\n this._ensureLinePositionsBindGroup = (item, buffers, refresh, layoutIndex) => {\n const layout = this._bindLineGroupLayouts[layoutIndex];\n if (layout.label !== (labelPrefix + 'line-positions-bind-group-layout')) {\n throw new Error('BindGroupLayout mismatch!');\n }\n const ctx = this.context;\n return this._cache.ensureBindGroup(ctx, item, buffers, refresh, layout, labelPrefix + 'line-positions-bind-group');\n };\n this._ensureLineWorldTransformBindGroup = (item, buffer, refresh, layoutIndex = UNIFORM_GROUP_INDEX_TRANSFORM, raycasting = false) => {\n const layout = this._bindLineGroupLayouts[layoutIndex];\n if (layout.label !== (labelPrefix + 'line-transforms-bind-group-layout')) {\n throw new Error('BindGroupLayout mismatch!');\n }\n const key = item.key + '-line-' + (raycasting ? 1 : 0);\n const label = `${labelPrefix}${raycasting ? 'colorpick' : ''}-line-transforms-bind-group`;\n const ctx = this.context;\n return this._cache.ensureBindGroup(ctx, key, [buffer], refresh, layout, label);\n };\n this._ensureLineCameraProjectionBindGroup = (item, viewBuffer, refresh, layoutIndex = UNIFORM_GROUP_INDEX_CAMERA, raycasting = false) => {\n const layout = this._bindLineGroupLayouts[layoutIndex];\n const key = item.key + '-line-' + (raycasting ? 1 : 0);\n const label = `${labelPrefix}${raycasting ? 'colorpick' : ''}-line-view-bind-group`;\n const ctx = this.context;\n return this._cache.ensureBindGroup(ctx, key, [viewBuffer], refresh, layout, label);\n };\n this._bindLineGroupLayouts = [];\n this._bindLinePositions = EMPTY_BIND_DELEGATE;\n this._bindLinePicker = EMPTY_BIND_DELEGATE;\n this._bindLineWorldTransform = EMPTY_BIND_DELEGATE;\n this._bindLineRaycastWorldTransform = EMPTY_BIND_DELEGATE;\n this._bindLineCameraProjection = EMPTY_BIND_DELEGATE;\n this._bindLineRaycastCameraProjection = EMPTY_BIND_DELEGATE;\n this._bindLineMaterial = EMPTY_BIND_DELEGATE;\n this._drawLine = EMPTY_BIND_DELEGATE;\n // #endregion\n // #region implementation\n this.set = (pass) => {\n throw new Error('Deprecated.');\n };\n this.bind = (pass, ...buffers) => {\n throw new Error('Deprecated.');\n };\n this.draw = (pass, ...buffers) => {\n throw new Error('Deprecated.');\n };\n this.frame = (pass, meshBuffer, cameraBuffer) => {\n // set\n pass.setPipeline(this._linePipeline);\n try {\n // bind\n this._bindLineWorldTransform(pass, meshBuffer);\n this._bindLineCameraProjection(pass, cameraBuffer);\n this._bindLinePositions(pass, meshBuffer);\n this._bindLineMaterial(pass, meshBuffer);\n // draw\n this._drawLine(pass, meshBuffer);\n }\n catch (e) {\n console.error('Pacem.Drawing3D.FrameException', e);\n }\n };\n this.raycast = (pass, meshBuffer, cameraBuffer) => {\n // set\n pass.setPipeline(this._pickLinePipeline);\n try {\n // bind\n this._bindLineRaycastWorldTransform(pass, meshBuffer);\n this._bindLineRaycastCameraProjection(pass, cameraBuffer);\n this._bindLinePositions(pass, meshBuffer);\n this._bindLinePicker(pass, meshBuffer);\n // draw\n this._drawLine(pass, meshBuffer);\n }\n catch (e) { }\n };\n this.#context = context;\n this._lineKey = _lineBuilder.key;\n }\n get context() {\n return this.#context;\n }\n get key() {\n return this._lineKey;\n }\n build(pipelineOptions) {\n const options = Utils.extend({}, DefaultPipelineOptions, pipelineOptions ?? {});\n const builder = this._lineBuilder, wgsl = builder.build();\n const ctx = Utils.extend({ pipeline: this }, this.#context);\n const device = ctx.device;\n // TODO: switch topology based on this flag\n const fatLines = wgsl.metadata.thickness > 1;\n // #region VERTEX\n // build vertex state\n const vertex = {\n module: device.createShaderModule({ code: wgsl.vertex }),\n buffers: []\n };\n // bind group layouts\n const worldBindGroupLayout = device.createBindGroupLayout({\n entries: [\n {\n // world- and normalMatrix entry\n binding: UNIFORM_BINDING_INDEX_TRANSFORM,\n visibility: GPUShaderStage.VERTEX,\n buffer: {\n type: 'uniform'\n }\n }\n ], label: labelPrefix + 'line-transforms-bind-group-layout'\n });\n const viewBindGroupLayout = device.createBindGroupLayout({\n entries: [\n // camera matrices\n {\n binding: UNIFORM_BINDING_INDEX_CAMERA,\n visibility: GPUShaderStage.VERTEX,\n buffer: {\n type: 'uniform'\n }\n }\n ], label: labelPrefix + 'line-view-bind-group-layout'\n });\n const lineEntries = [\n // positions array\n {\n binding: 0,\n visibility: GPUShaderStage.VERTEX,\n buffer: {\n type: 'read-only-storage'\n }\n }\n ];\n if (fatLines) {\n lineEntries.push(\n // line properties (width, dash-array, lineCap, ...)\n {\n binding: 1,\n visibility: GPUShaderStage.VERTEX,\n buffer: {\n type: 'uniform'\n }\n });\n }\n const lineBindGroupLayout = device.createBindGroupLayout({\n entries: lineEntries, label: labelPrefix + 'line-positions-bind-group-layout'\n });\n const vertexBindGroupLayouts = [worldBindGroupLayout, viewBindGroupLayout, lineBindGroupLayout];\n const raycastLayoutIndex = vertexBindGroupLayouts.length;\n const bindGroupLayouts = vertexBindGroupLayouts.slice();\n // #endregion\n // #region FRAGMENT\n const fragment = {\n module: device.createShaderModule({\n code: wgsl.fragment\n }), targets: [\n {\n format: ctx.format,\n blend: {\n color: {\n srcFactor: 'src-alpha',\n dstFactor: 'one-minus-src-alpha'\n },\n alpha: {},\n }\n }\n ]\n };\n // material\n // material / material\n const materialGroupIndex = bindGroupLayouts.length;\n const materialBindGroupLayoutDescriptorEntries = [{\n // vertex colors entry\n binding: STORAGE_MATERIAL_INDEX,\n visibility: GPUShaderStage.FRAGMENT,\n buffer: {\n type: 'read-only-storage'\n }\n }];\n const materialBindGroupLayoutDescriptor = {\n label: labelPrefix + 'line-material-bind-group-layout',\n entries: materialBindGroupLayoutDescriptorEntries\n };\n const materialBindGroupLayout = device.createBindGroupLayout(materialBindGroupLayoutDescriptor);\n bindGroupLayouts.push(materialBindGroupLayout);\n // #endregion\n // #region PIPELINE\n const topology = fatLines ? options.primitive.topology : 'line-list';\n // full pipeline descriptor\n const descriptor = {\n label: labelPrefix + 'line-render-pipeline',\n vertex,\n fragment,\n // pipeline-layout\n layout: device.createPipelineLayout({\n label: labelPrefix + 'line-render-pipeline-layout',\n bindGroupLayouts: (this._bindLineGroupLayouts = bindGroupLayouts)\n }),\n primitive: Utils.extend({}, options.primitive, { topology }),\n };\n if (options.multisample) {\n descriptor.multisample = { count: 4 };\n descriptor.depthStencil = {\n depthCompare: 'less',\n format: 'depth24plus',\n depthWriteEnabled: true\n };\n }\n this._linePipeline = device.createRenderPipeline(descriptor);\n // raycast pipeline descriptor\n const pickFragGroupLayout = this._pickLineBindGroupLayout = device.createBindGroupLayout({\n label: labelPrefix + 'line-colorpick-bind-group-layout',\n entries: [\n {\n visibility: GPUShaderStage.FRAGMENT,\n binding: 0,\n buffer: { type: 'uniform' }\n }\n ]\n });\n const pickDescriptor = {\n label: labelPrefix + 'line-colorpick-pipeline',\n vertex,\n fragment: {\n module: device.createShaderModule({\n code: getColorPickingFragmentWgsl(raycastLayoutIndex)\n }), targets: [\n { format: 'r32uint' }\n ]\n },\n layout: device.createPipelineLayout({\n label: labelPrefix + 'line-colorpick-pipeline-layout',\n bindGroupLayouts: vertexBindGroupLayouts.concat(pickFragGroupLayout)\n }),\n primitive: Utils.extend({}, options.primitive, { topology }),\n depthStencil: {\n depthWriteEnabled: true,\n depthCompare: 'less',\n format: 'depth24plus',\n },\n };\n this._pickLinePipeline = device.createRenderPipeline(pickDescriptor);\n // #endregion\n // world transform\n const bindLineWorldTransform = (pass, meshBuffer, raycasting) => {\n if (Utils.isNull(meshBuffer)) {\n throw new ReferenceError(`Null ${RenderableBuffers.name} bringing world transform buffer was provided.`);\n }\n const worldTransform = meshBuffer.buffer(ctx, 'objectWorldTransform'), worldTransformBuffer = worldTransform.buffer;\n // writes only if buffer is fresh\n PipelineUtils.writeBufferConditionally(device, worldTransform);\n const { group } = wgsl.bindings(WGSLBindingType.Mesh, 'objectWorldTransform', 0);\n const bindGroup = this._ensureLineWorldTransformBindGroup(meshBuffer.item, worldTransformBuffer, \n /*worldTransform.fresh*/ false /* persist the same bindGroup, given the constant size */, group, raycasting);\n pass.setBindGroup(group, bindGroup);\n };\n this._bindLineWorldTransform = (pass, ...buffers) => {\n const meshBuffer = buffers.at(0);\n bindLineWorldTransform(pass, meshBuffer, false);\n };\n this._bindLineRaycastWorldTransform = (pass, ...buffers) => {\n const meshBuffer = buffers.at(0);\n bindLineWorldTransform(pass, meshBuffer, true);\n };\n // camera matrices\n const bindLineCameraProjection = (pass, cameraBuffer, raycasting) => {\n if (Utils.isNull(cameraBuffer)) {\n throw new ReferenceError(`Null ${RenderableBuffers.name} bringing view projection buffers was provided.`);\n }\n const viewTransformBuffer = cameraBuffer.buffer(ctx, 'cameraViewTransform'), viewTransformBufferBuffer = viewTransformBuffer.buffer;\n // writes only if buffer is fresh\n PipelineUtils.writeBufferConditionally(device, viewTransformBuffer);\n const { group } = wgsl.bindings(WGSLBindingType.Camera, 'cameraViewTransform', 0);\n const bindGroup = this._ensureLineCameraProjectionBindGroup(cameraBuffer.item, viewTransformBufferBuffer, \n /*viewTransformBuffer.fresh*/ false, group, raycasting);\n pass.setBindGroup(group, bindGroup);\n };\n this._bindLineCameraProjection = (pass, ...buffers) => {\n const cameraBuffer = buffers.at(0);\n bindLineCameraProjection(pass, cameraBuffer, false);\n };\n this._bindLineRaycastCameraProjection = (pass, ...buffers) => {\n const cameraBuffer = buffers.at(0);\n bindLineCameraProjection(pass, cameraBuffer, true);\n };\n // positions storage\n this._bindLinePositions = (pass, ...buffers) => {\n const meshBuffer = buffers.at(0);\n if (Utils.isNull(meshBuffer)) {\n throw new ReferenceError(`Null ${RenderableBuffers.name} bringing vertex buffers was provided as index 0.`);\n }\n // storage buffer\n const positionsBuffer = /* should have a storage buffer here */ meshBuffer.buffer(ctx, 'geometryPositions'), positionsBufferBuffer = positionsBuffer.buffer;\n let refresh = positionsBuffer.fresh;\n const buffersInput = [positionsBufferBuffer];\n // writes only if buffer is fresh\n PipelineUtils.writeBufferConditionally(device, positionsBuffer);\n if (fatLines) {\n const lineBuffer = meshBuffer.buffer(ctx, 'line'), lineBufferBuffer = lineBuffer.buffer;\n refresh ||= lineBuffer.fresh;\n buffersInput.push(lineBufferBuffer);\n // writes only if buffer is fresh\n PipelineUtils.writeBufferConditionally(device, lineBuffer);\n }\n const { group: groupIndex } = wgsl.bindings(WGSLBindingType.Mesh, 'line' /* or 'geometryPositions' */, 0);\n const bindGroup = this._ensureLinePositionsBindGroup(meshBuffer.item, buffersInput, refresh, groupIndex);\n pass.setBindGroup(groupIndex, bindGroup);\n };\n // vertexColors\n this._bindLineMaterial = (pass, ...buffers) => {\n const meshBuffer = buffers.at(0);\n if (Utils.isNull(meshBuffer)) {\n throw new ReferenceError(`Null ${RenderableBuffers.name} bringing vertex colors was provided.`);\n }\n const vertexColorsBuffer = meshBuffer.buffer(ctx, 'material'), vertexColorsBufferBuffer = vertexColorsBuffer.buffer;\n // writes only if buffer is fresh\n PipelineUtils.writeBufferConditionally(device, vertexColorsBuffer);\n const bindGroup = this._ensureLineMaterialBindGroup(meshBuffer.item, vertexColorsBufferBuffer, vertexColorsBuffer.fresh, materialGroupIndex);\n pass.setBindGroup(materialGroupIndex, bindGroup);\n };\n // picker\n this._bindLinePicker = (pass, ...buffers) => {\n const meshBuffer = buffers.at(0);\n if (Utils.isNull(meshBuffer)) {\n throw new ReferenceError(`Null ${RenderableBuffers.name} bringing world transform buffer was provided.`);\n }\n const u32id = meshBuffer.buffer(ctx, 'u32id'), u32idBuffer = u32id.buffer, u32idArray = u32id.value;\n // writes only if buffer is fresh\n PipelineUtils.writeBufferConditionally(device, u32id);\n const bindGroup = this._ensureLineU32idBindGroup(meshBuffer.item, u32idBuffer, /* reuse */ false /*u32id.fresh*/);\n pass.setBindGroup(raycastLayoutIndex, bindGroup);\n };\n this._drawLine = (pass, ...buffers) => {\n const meshBuffer = buffers.at(0);\n const mesh = meshBuffer.item, geometry = mesh.geometry /* as NodeGeometry*/;\n if (fatLines) {\n pass.draw(6, geometry.positions.length - 1, 0, 0);\n }\n else {\n pass.draw(geometry.positions.length);\n }\n };\n }\n}\n// #endregion\n","import { Utils } from '@pacem/pacem-core';\nimport { LABEL_PREFIX, GPUTextureUsage, GPUBufferUsage, GPUMapMode } from './constants';\nimport { RenderPipelines } from './pipelinefactory';\n//namespace Pacem.Drawing3D.WebGPU {\nexport class Raycasters {\n // learn from:\n // https://webglfundamentals.org/webgl/lessons/webgl-qna-how-to-get-the-3d-coordinates-of-a-mouse-click.html\n // https://github.com/mrdoob/three.js/blob/master/src/core/Raycaster.js\n // https://shi-yan.github.io/webgpuunleashed/Control/object_picking.html\n // https://gist.github.com/greggman/57c3c0d3cf1db14f1baad2d9b0094397 (color picking)\n static { this._memoizer = new WeakMap(); }\n static dispose(ctx) {\n const memoizer = this._memoizer;\n if (memoizer.has(ctx)) {\n const cache = memoizer.get(ctx);\n for (let raycaster of cache.values()) {\n raycaster.destroy();\n }\n cache.clear();\n memoizer.delete(ctx);\n }\n }\n /** Creates a raycaster that uses color picking as a strategy to hit-test objects. */\n static createColorPicking(ctx) {\n const memoizer = this._memoizer;\n if (!memoizer.has(ctx)) {\n memoizer.set(ctx, new Map());\n }\n const cache = memoizer.get(ctx);\n const key = 'colorpick';\n if (cache.has(key)) {\n return cache.get(key);\n }\n const retval = new ColorPickingRaycaster(ctx);\n cache.set(key, retval);\n return retval;\n }\n}\nconst NUM_PIXELS = 1;\nclass ColorPickingRaycaster {\n constructor(_context) {\n this._context = _context;\n this._objects = new Map();\n this.frame = (interaction, ...buffers) => {\n if (Utils.isNull(this._encoder)) {\n throw new Error('Null encoder. Maybe you missed to call the \\'begin\\' method first.');\n }\n const objects = Array.from(buffers);\n const pipeline = RenderPipelines.createColorPicking(this._context, objects);\n pipeline?.frame(this._pass, interaction, ...buffers);\n for (let buffer of objects) {\n const item = buffer.item;\n if (item.inert) {\n continue;\n }\n //buffer.lock();\n this._objects.set(buffer.id, buffer);\n }\n };\n this.end = (pixel) => {\n if (!Utils.isNull(this._handle)) {\n return this._handle;\n }\n const pass = this._pass;\n const commandEncoder = this._encoder;\n const { device } = this._context;\n const { render } = this._textures;\n const pickTexture = render.texture;\n const pickBuffer = this._ensureBuffer();\n pass.end();\n commandEncoder.copyTextureToBuffer({\n texture: pickTexture,\n // mipLevel: 0,\n origin: {\n x: pixel.x,\n y: pixel.y,\n }\n }, {\n buffer: pickBuffer,\n bytesPerRow: ((NUM_PIXELS * 4 + 255) | 0) * 256,\n rowsPerImage: 1,\n }, {\n width: NUM_PIXELS,\n // height: 1,\n // depth: 1,\n });\n device.queue.submit([commandEncoder.finish()]);\n // remove\n this._encoder = null;\n const _this = this;\n const objects = _this._objects;\n const resetHandle = () => {\n _this._handle = null;\n };\n return this._handle = new Promise((resolve, _) => {\n pickBuffer.mapAsync(GPUMapMode.READ, 0, 4 * NUM_PIXELS).then(_ => {\n const ids = new Uint32Array(pickBuffer.getMappedRange(0, 4 * NUM_PIXELS));\n const id = ids[0];\n pickBuffer.unmap();\n // remove promise reference\n resetHandle();\n const buffer = objects.get(id);\n if (!buffer) {\n resolve([]);\n }\n else {\n resolve([buffer.item]);\n }\n // cleanup\n //pickBuffer.destroy();\n //pickTexture.destroy();\n //objects.values().forEach(b => b.unlock());\n });\n });\n };\n }\n _createTexture(format) {\n const { device, canvas } = this._context;\n const width = Math.min(device.limits.maxTextureDimension2D, canvas.clientWidth), height = Math.min(device.limits.maxTextureDimension2D, canvas.clientHeight);\n return device.createTexture({\n size: [width, height, 1],\n format,\n usage: GPUTextureUsage.COPY_SRC | GPUTextureUsage.RENDER_ATTACHMENT\n });\n }\n _ensureBuffer() {\n const buffer = this._buffer;\n if (!Utils.isNull(buffer)) {\n return buffer;\n }\n const { device } = this._context;\n return this._buffer = device.createBuffer({\n label: LABEL_PREFIX + 'colorpick-output-buffer',\n size: NUM_PIXELS * 4,\n usage: GPUBufferUsage.MAP_READ | GPUBufferUsage.COPY_DST,\n });\n }\n _ensureTextures() {\n const textures = this._textures;\n if (!Utils.isNull(textures)) {\n return textures;\n }\n const renderTex = this._createTexture('r32uint'), depthTex = this._createTexture('depth24plus');\n const render = { texture: renderTex, view: renderTex.createView() };\n const depth = { texture: depthTex, view: depthTex.createView() };\n return this._textures = { render, depth };\n }\n ;\n _destroyTexture(texture) {\n if (Utils.isNull(texture)) {\n return;\n }\n texture.texture?.destroy();\n }\n destroy() {\n const textures = this._textures, buffer = this._buffer;\n if (!Utils.isNullOrEmpty(textures)) {\n const { render, depth } = textures;\n this._destroyTexture(render);\n this._destroyTexture(depth);\n this._textures = null;\n }\n if (!Utils.isNull(buffer)) {\n buffer.destroy();\n this._buffer = null;\n }\n }\n begin() {\n const { device } = this._context;\n this._encoder = device.createCommandEncoder({ label: LABEL_PREFIX + 'colorpick-raycaster' });\n const { render, depth } = this._ensureTextures();\n const passDescriptor = {\n label: LABEL_PREFIX + 'colorpick-raycaster-pass',\n colorAttachments: [\n {\n view: render.view,\n clearValue: { r: 0, g: 0, b: 0, a: 0 },\n loadOp: 'clear',\n storeOp: 'store',\n },\n ],\n depthStencilAttachment: {\n view: depth.view, // Assigned later\n depthClearValue: 1,\n depthLoadOp: 'clear',\n depthStoreOp: 'store',\n },\n };\n this._pass = this._encoder.beginRenderPass(passDescriptor);\n this._objects.clear();\n }\n}\n","import { Utils, P, Logging } from '@pacem/pacem-core';\nimport { Colors } from '@pacem/pacem-foundation';\nimport { Geometry } from '@pacem/pacem-numerical';\nimport { StalePropertyFlag, isMesh, isCamera, isLight, isGroup } from '../../types';\nimport { AdapterUtils } from '../shared';\nimport { LABEL_PREFIX, GPUTextureUsage } from './constants';\nimport { RenderPipelines } from './pipelinefactory';\nimport { Raycasters } from './raycaster';\nimport { RenderableBuffers, RenderLooper, ManagedBuffers } from './renderablebuffer';\n//namespace Pacem.Drawing3D.WebGPU {\nconst Vector3D = Geometry.LinearAlgebra.Vector3D;\nexport var WebGPUIssueCause;\n(function (WebGPUIssueCause) {\n WebGPUIssueCause[WebGPUIssueCause[\"NotSupported\"] = 0] = \"NotSupported\";\n WebGPUIssueCause[WebGPUIssueCause[\"Disabled\"] = 1] = \"Disabled\";\n})(WebGPUIssueCause || (WebGPUIssueCause = {}));\nexport class Renderers {\n static create(stage, config) {\n return new Promise((resolve, reject) => {\n if (!navigator.gpu) {\n const message = \"WebGPU not supported.\";\n const issue = { message, cause: WebGPUIssueCause.NotSupported };\n reject(issue);\n }\n else {\n const retval = new RendererClass(stage);\n retval.init(config).then(_ => resolve(retval), error => {\n const message = typeof error === 'string' ? error : error.message;\n const issue = { message, cause: WebGPUIssueCause.Disabled };\n reject(issue);\n });\n }\n });\n }\n}\nfunction getDefaultCamera(stage) {\n return {\n bottom: -1, top: 1, left: -1, right: 1, near: .1, far: 200, lookAt: Vector3D.from(0, 0, 0), up: Vector3D.j(), position: Vector3D.from(0, 0, 1), type: \"orthographic\",\n flags: [], stage\n };\n}\nfunction destroyTextures(...textures) {\n for (let tex of textures || []) {\n tex?.destroy();\n }\n}\nclass RendererClass {\n #stage;\n #canvas;\n #context;\n #renderables;\n #geometries;\n #materials;\n #looper;\n #textures;\n #config;\n #disabled;\n // interaction buffer\n #interactionBuffer;\n // interaction buffer underlying data\n #interaction;\n constructor(stage) {\n this.#renderables = new WeakMap();\n this.#geometries = new WeakMap();\n this.#materials = new WeakMap();\n this.#config = { enableValidation: false };\n this.#disabled = false;\n this._logError = (evt) => {\n const stage = this.#stage, logger = stage.logger;\n if (!Utils.isNull(logger)) {\n const error = 'error' in evt ? evt.error : evt;\n logger.log(Logging.LogLevel.Error, error.message, 'WebGPU');\n }\n };\n this.#rebuildingContext = true;\n /** Whether the renderer is affected by vertex or fragment modifiers.\n * When true, the renderer must provide updated time, cursor position and canvas size to the pipeline's bind groups.\n */\n this.#hasModifiers = false;\n const wrapper = (this.#stage = stage).stage;\n const canvas = document.createElement('canvas');\n canvas.id = P + '_3d_stage_' + Utils.uniqueCode();\n // cleanup\n wrapper.innerHTML = '';\n wrapper.appendChild(this.#canvas = canvas);\n // interaction stuff\n this.#interactionBuffer = ManagedBuffers.create(this.#interaction = {\n time: performance.now(), cursor: { x: 0, y: 0 }, resolution: { width: 0, height: 0 }\n });\n }\n _buildPassDescriptor({ multisample, format }) {\n const { context, device } = this.#context;\n const canvasTexture = context.getCurrentTexture();\n let textures = this.#textures;\n if (Utils.isNull(textures)) {\n textures = {};\n if (multisample) {\n const renderTex = device.createTexture({\n label: LABEL_PREFIX + 'render-texture',\n format: format ?? canvasTexture.format,\n usage: GPUTextureUsage.RENDER_ATTACHMENT,\n size: [canvasTexture.width, canvasTexture.height],\n sampleCount: 4,\n });\n textures.render = {\n texture: renderTex, view: renderTex.createView({ label: LABEL_PREFIX + 'render-texture-view' })\n };\n const depthTex = device.createTexture({\n label: LABEL_PREFIX + 'depth-texture',\n format: 'depth24plus',\n usage: GPUTextureUsage.RENDER_ATTACHMENT,\n size: [canvasTexture.width, canvasTexture.height],\n sampleCount: 4,\n });\n textures.depth = {\n texture: depthTex, view: depthTex.createView({ label: LABEL_PREFIX + 'depth-texture-view' })\n };\n }\n this.#textures = textures;\n }\n const { transparent, background } = this.#stage;\n const backColor = transparent ? { r: 0, g: 0, b: 0, a: 0 } : background ? (typeof background === 'string' ? Colors.parse(background) : background) : { r: 0, g: 0, b: 0, a: 1 };\n const bgColor = AdapterUtils.flattenVectorArray([backColor]);\n const canvasTexView = canvasTexture.createView({ label: LABEL_PREFIX + 'canvas-texture-view' });\n const colorAttachment = {\n view: canvasTexView,\n clearValue: bgColor,\n loadOp: 'clear',\n storeOp: 'store',\n };\n const passDescriptor = {\n colorAttachments: [colorAttachment]\n };\n if (multisample) {\n const renderTexView = textures.render.view;\n const depthTexView = textures.depth.view;\n passDescriptor.depthStencilAttachment = {\n view: depthTexView,\n depthClearValue: 1,\n depthLoadOp: 'clear',\n depthStoreOp: 'store',\n stencilClearValue: 0,\n stencilReadOnly: true,\n };\n // override\n colorAttachment.view = renderTexView;\n colorAttachment.resolveTarget = canvasTexView;\n }\n return passDescriptor;\n }\n ;\n _buildContext(canvas = this.#canvas, size = this.#stage.size) {\n size ??= canvas;\n let w = size.width;\n let h = size.height;\n const devicePixelRatio = 1; // window.devicePixelRatio;\n canvas.width = w * devicePixelRatio;\n canvas.height = h * devicePixelRatio;\n const context = canvas.getContext('webgpu');\n const textureFormat = navigator.gpu.getPreferredCanvasFormat();\n return { context, textureFormat };\n }\n _buildUpContext(device, adapter, context, format) {\n const { transparent } = this.#stage;\n context.configure({\n alphaMode: transparent ? 'premultiplied' : 'opaque',\n device,\n format,\n });\n this.#context = { device, adapter, canvas: this.#canvas, context, format };\n this.#rebuildingContext = false;\n }\n async init(config) {\n this.#config = config;\n const adapter = await navigator.gpu.requestAdapter();\n if (Utils.isNull(adapter)) {\n throw new Error('WebGPU adapter unavalable or disabled.');\n }\n const device = await adapter.requestDevice();\n if (Utils.isNull(adapter)) {\n throw new Error('WebGPU device unavalable or disabled.');\n }\n device.addEventListener('uncapturederror', this._logError);\n // set flag for shader modifiers presence, this will be used to determine whether to update the interaction buffer on each render call\n this.#hasModifiers = !Utils.isNull(config.modifiers?.version) && !Utils.isNull(config.modifiers)\n && (!Utils.isNull(config.modifiers.vertexInput) || !Utils.isNull(config.modifiers.vertexOutput) || !Utils.isNull(config.modifiers.fragment));\n const { context, textureFormat: format } = this._buildContext();\n this._buildUpContext(device, adapter, context, format);\n }\n #rebuildingContext;\n /** Whether the renderer is affected by vertex or fragment modifiers.\n * When true, the renderer must provide updated time, cursor position and canvas size to the pipeline's bind groups.\n */\n #hasModifiers;\n /**\n * Render procedure.\n */\n render(interaction) {\n if (this.#rebuildingContext || Utils.isNull(this.#looper) || !(this.#canvas.width > 0) || !(this.#canvas.height > 0)) {\n return;\n }\n const context = this.#context, device = context.device, \n // looper\n looper = this.#looper;\n // enable validation scope? (perf hog)\n const validationScope = this.#config?.enableValidation ?? false;\n if (this.#hasModifiers) {\n // update underlying interaction data, this will trigger buffer update\n Utils.extend(this.#interaction, interaction);\n }\n const multisample = true;\n const passDescriptor = this._buildPassDescriptor({ multisample });\n // rendering zone\n const commandEncoder = device.createCommandEncoder({ label: LABEL_PREFIX + 'renderer' });\n const pass = commandEncoder.beginRenderPass(passDescriptor);\n // loop\n looper.loop((mesh, camera, lights) => {\n if (mesh.item.hide) {\n // this code branching is NOT NEEDED ANYMORE,\n // remove it safely\n return false;\n }\n if (validationScope) {\n device.pushErrorScope('validation');\n }\n const renderables = [mesh, camera, ...lights];\n // inject here (pipeline options) any global rendering data (time, cursor, etc.) that may be needed by the shader modifiers\n const pipeline = RenderPipelines.create(context, renderables, { multisample: true, modifiers: this.#config.modifiers });\n // render\n pipeline.frame(pass, this.#interactionBuffer, ...renderables);\n if (validationScope) {\n device.popErrorScope().then(error => {\n if (error) {\n this._logError(error);\n }\n });\n }\n return true;\n });\n pass.end();\n device.queue.submit([commandEncoder.finish()]);\n }\n set disabled(v) {\n this.#disabled = v;\n }\n get disabled() {\n return this.#disabled;\n }\n raycast(pixel) {\n if (this.#rebuildingContext || Utils.isNull(this.#looper)) {\n return Promise.resolve([]);\n }\n const context = this.#context, device = context.device, looper = this.#looper;\n // enable validation scope? (perf hog)\n const validationScope = this.#config?.enableValidation ?? false;\n // rendering zone\n const raycaster = Raycasters.createColorPicking(context);\n raycaster.begin();\n // loop\n looper.loop((mesh, camera) => {\n if (mesh.item.hide) {\n // TODO: remove unwraps and move to nested loops\n // in order to centralize hidden renderable skip logic\n return false;\n }\n if (validationScope) {\n device.pushErrorScope('validation');\n }\n raycaster.frame(this.#interactionBuffer, mesh, camera);\n if (validationScope) {\n device.popErrorScope().then(error => {\n if (error) {\n this._logError(error);\n }\n });\n }\n return true;\n });\n return raycaster.end(pixel);\n }\n _disposeRenderableJustInCase(item) {\n const store = this.#renderables;\n if (store.has(item)) {\n store.get(item)?.destroy();\n store.delete(item);\n }\n }\n _createOrYieldRenderable(item, geometries = this.#geometries, materials = this.#materials) {\n item.stage ??= this.#stage;\n const store = this.#renderables;\n let found = store.get(item);\n if (Utils.isNull(found)) {\n store.set(item, found = RenderableBuffers.create(item, geometries));\n }\n return found;\n }\n _createOrYieldGeometry(item) {\n const store = this.#geometries;\n let found = store.get(item);\n if (Utils.isNull(found)) {\n store.set(item, found = ManagedBuffers.create(item));\n }\n return found;\n }\n _createOrYieldMaterial(item) {\n const store = this.#materials;\n let found = store.get(item);\n if (Utils.isNull(found)) {\n store.set(item, found = ManagedBuffers.create(item));\n }\n return found;\n }\n _unwrapBuffers(grp, accumulator) {\n accumulator ??= { meshes: [], lights: [], cameras: [], groups: [] };\n for (let itemBuffer of grp.children) {\n itemBuffer.item.stage ??= this.#stage;\n if (isMesh(itemBuffer.item)) {\n accumulator.meshes.push(itemBuffer);\n }\n if (isCamera(itemBuffer.item)) {\n accumulator.cameras.push(itemBuffer);\n }\n if (isLight(itemBuffer.item)) {\n accumulator.lights.push(itemBuffer);\n }\n if (isGroup(itemBuffer.item)) {\n accumulator.groups.push(itemBuffer);\n this._unwrapBuffers(itemBuffer, accumulator);\n }\n }\n return accumulator;\n }\n ;\n _update(array) {\n const groupBuffers = [];\n const meshBuffers = [];\n const lightBuffers = [];\n const factory = i => this._createOrYieldRenderable(i);\n let camera;\n for (let item of array) {\n if (item.hide) {\n // remove stored renderable just in case\n this._disposeRenderableJustInCase(item);\n continue;\n }\n // ensure stage\n item.stage ??= this.#stage;\n // groups\n if (isGroup(item)) {\n const g = item;\n if (g.flags.includes(StalePropertyFlag.Children)) {\n this.#renderables.delete(g);\n }\n groupBuffers.push(factory(g));\n }\n // meshes\n if (isMesh(item) && item.geometry) {\n // build pipelines based on provided element wrappers (cached buffers)\n this._createOrYieldGeometry(item.geometry);\n if (!Utils.isNull(item.material)) {\n this._createOrYieldMaterial(item.material);\n }\n meshBuffers.push(factory(item));\n }\n // lights\n if (isLight(item)) {\n lightBuffers.push(factory(item));\n }\n if (isCamera(item)) {\n // pick the first only\n camera ??= item;\n }\n }\n // find first active camera\n camera ??= getDefaultCamera(this.#stage);\n const cameraBuffer = factory(camera);\n let accumulator = {\n meshes: meshBuffers, lights: lightBuffers, cameras: [cameraBuffer], groups: groupBuffers\n };\n for (let groupBuffer of groupBuffers) {\n accumulator = this._unwrapBuffers(groupBuffer, accumulator);\n }\n // destroy leftovers\n this.#looper?.items.meshes.forEach(buffer => {\n if (!meshBuffers.includes(buffer)) {\n buffer.destroy();\n }\n });\n this.#looper = new RenderLooper(accumulator);\n }\n update(...items) {\n this._update(Array.from(items));\n }\n dispose() {\n this.#looper = null;\n if (this._disposeContext()) {\n const { device } = this.#context;\n device.removeEventListener('uncapturederror', this._logError);\n device.destroy;\n }\n }\n _disposeContext() {\n const ctx = this.#context;\n if (Utils.isNull(ctx)) {\n return false;\n }\n // dispose associated raycasters, if any\n Raycasters.dispose(ctx);\n // dispose associated pipelines, if any\n RenderPipelines.dispose(ctx);\n // dispose textures\n const textures = this.#textures;\n this.#textures = null;\n if (!Utils.isNull(textures)) {\n const { render, depth } = textures;\n destroyTextures(render?.texture, depth?.texture);\n }\n // dispose context\n ctx.context.unconfigure();\n return true;\n }\n resize(size) {\n this.#rebuildingContext = true;\n if (this._disposeContext()) {\n const { device, adapter } = this.#context;\n const { context, textureFormat: format } = this._buildContext(this.canvas, size);\n this._buildUpContext(device, adapter, context, format);\n // interaction\n if (this.#hasModifiers) {\n Utils.extend(this.#interaction, { resolution: size });\n }\n }\n }\n get canvas() {\n return this.#canvas;\n }\n}\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElementUtils, CustomElement, P, Watch, PropertyConverters, PropertyChangeEvent, PropertyChangeEventName, Debounce, Utils, Logging, Components } from '@pacem/pacem-core';\nimport { Strings } from '@pacem/pacem-foundation';\nimport { Pacem3DAdapterElement, StalePropertyFlag } from '../../types';\nimport { Renderers, WebGPUIssueCause } from './renderer';\n//namespace Pacem.Components.Drawing3D {\nconst WEBGPU_RAYCAST_CALLBACK_PROP = 'WebGPURaycastCallback';\nconst WEBGPU_RAYCAST_PIXEL_PROP = 'WebGPURaycastPixel';\nconst GETVAL = CustomElementUtils.getAttachedPropertyValue, SETVAL = CustomElementUtils.setAttachedPropertyValue, DELVAL = CustomElementUtils.deleteAttachedPropertyValue;\nlet Pacem3DWgslScriptElement = class Pacem3DWgslScriptElement extends Components.PacemItemElement {\n findContainer() {\n return CustomElementUtils.findAncestor(this, n => n instanceof Pacem3DWebgpuAdapterElement);\n }\n #version = '';\n get version() {\n return this.#version;\n }\n #observer = new MutationObserver(() => {\n this.wgsl = this.textContent;\n });\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this.wgsl = this.textContent;\n this.#observer.observe(this, { characterData: true });\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'wgsl') {\n this._computeVersion(val);\n }\n }\n _computeVersion(wgsl = this.wgsl) {\n Strings.hash(wgsl).then(v => {\n if (v !== this.#version) {\n const old = this.#version;\n const val = v;\n this.#version = val;\n const evt = new PropertyChangeEvent({ propertyName: 'version', oldValue: old, currentValue: val, firstChange: Utils.isNullOrEmpty(old) });\n this.dispatchEvent(evt);\n }\n });\n }\n disconnectedCallback() {\n this.#observer.disconnect();\n super.disconnectedCallback();\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], Pacem3DWgslScriptElement.prototype, \"type\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], Pacem3DWgslScriptElement.prototype, \"wgsl\", void 0);\nPacem3DWgslScriptElement = __decorate([\n CustomElement({ tagName: P + '-3d-wgsl-script' })\n], Pacem3DWgslScriptElement);\nexport { Pacem3DWgslScriptElement };\nlet Pacem3DWebgpuAdapterElement = class Pacem3DWebgpuAdapterElement extends Pacem3DAdapterElement {\n constructor() {\n super(...arguments);\n this.#items = [];\n this._scriptVersionChangeHandler = (evt) => {\n const { propertyName: name } = evt.detail;\n if (name === 'version') {\n this._parseWgslModifiers(evt.detail.currentValue);\n }\n };\n this.#scenes = new Set();\n this.#renderers = new Map();\n this.#supported = true;\n this.#active = true;\n this.#sceneToUpdate = new WeakMap();\n }\n invalidateSize(stage, size = stage.size) {\n const renderer = this._ensureRenderer(stage);\n renderer?.resize(size);\n }\n #items;\n get items() {\n return this.#items;\n }\n register(item) {\n const items = this.#items;\n if (item instanceof Pacem3DWgslScriptElement && !items.includes(item)) {\n item.addEventListener(PropertyChangeEventName, this._scriptVersionChangeHandler, false);\n items.push(item);\n this._parseWgslModifiers(this.modifiers?.version);\n return true;\n }\n return false;\n }\n unregister(item) {\n const items = this.#items;\n const ndx = items.indexOf(item);\n if (ndx >= 0) {\n item.removeEventListener(PropertyChangeEventName, this._scriptVersionChangeHandler, false);\n items.splice(ndx, 1);\n this._parseWgslModifiers(this.modifiers?.version);\n return true;\n }\n return false;\n }\n #scenes;\n #renderers;\n #supported;\n #active;\n get supported() {\n return this.#supported;\n }\n get active() {\n return this.#active;\n }\n _webGPUNotSupported(issue) {\n if (this.#supported && issue.cause === WebGPUIssueCause.NotSupported) {\n this.#supported = false;\n this.dispatchEvent(new PropertyChangeEvent({ propertyName: 'supported', oldValue: null, currentValue: false }));\n }\n if (this.#active) {\n this.#active = false;\n this.dispatchEvent(new PropertyChangeEvent({ propertyName: 'active', oldValue: null, currentValue: false }));\n }\n }\n initialize(scene) {\n const set = this.#renderers;\n const scenes = this.#scenes;\n if (!scenes.has(scene)) {\n scenes.add(scene);\n }\n return Renderers.create(scene, { enableValidation: this.enableValidation ?? false, modifiers: this.modifiers })\n .then(renderer => {\n set.get(scene)?.update( /* empty */);\n // update dictionary with the actual renderer\n set.set(scene, renderer);\n // assign datasource immediately\n this._updatePipeline(scene);\n return renderer.canvas;\n }, (issue) => {\n this.log(Logging.LogLevel.Error, issue.message);\n this._webGPUNotSupported(issue);\n return null;\n });\n }\n _parseWgslModifiers(val) {\n const scripts = this.#items, vertexGeometryScript = scripts.find(a => a.type == 'vertex-input'), vertexOutputScript = scripts.find(a => a.type == 'vertex-output'), fragmentScript = scripts.find(a => a.type == 'fragment');\n const vertexInput = vertexGeometryScript?.wgsl, vertexOutput = vertexOutputScript?.wgsl, fragment = fragmentScript?.wgsl;\n this.modifiers = { vertexInput, vertexOutput, fragment, version: val };\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (first) {\n return;\n }\n switch (name) {\n case 'modifiers':\n case 'enableValidation':\n // reinitialize\n this._reinitialize();\n break;\n }\n }\n disconnectedCallback() {\n const set = this.#renderers;\n for (let [_, renderer] of set) {\n renderer?.dispose();\n }\n set.clear();\n this.#scenes.clear();\n super.disconnectedCallback();\n }\n dispose(scene) {\n const renderers = this.#renderers, scenes = this.#scenes;\n ;\n if (renderers.has(scene)) {\n renderers.get(scene)?.dispose();\n renderers.delete(scene);\n }\n if (scenes.has(scene)) {\n scenes.delete(scene);\n }\n }\n _reinitialize() {\n for (let scene of this.#scenes.values()) {\n // rebuild renderer with new config in association to scene\n this.initialize(scene);\n }\n }\n _ensureRenderer(scene) {\n const set = this.#renderers;\n return set.get(scene);\n }\n _updatePipeline(scene) {\n const renderer = this._ensureRenderer(scene);\n renderer?.update(...scene.datasource);\n }\n #sceneToUpdate;\n /**\n * Called when scene datasource changes.\n * @param scene\n */\n render(scene) {\n // do not render hidden stages\n const width = scene.size?.width, height = scene.size?.height;\n if (!(width > 0) || !(height > 0)) {\n return;\n }\n // retrieve stage renderer\n const renderer = this._ensureRenderer(scene);\n if (Utils.isNull(renderer)) {\n return;\n }\n if (this.#sceneToUpdate.has(scene)) {\n this.#sceneToUpdate.delete(scene);\n this._itemsChangedExec(scene);\n }\n // draw\n const pixel = GETVAL(scene, WEBGPU_RAYCAST_PIXEL_PROP);\n renderer.render({ cursor: pixel, time: performance.now(), resolution: { width, height } });\n // raycast, just in case\n if (!scene.interactive) {\n return;\n }\n const callback = GETVAL(scene, WEBGPU_RAYCAST_CALLBACK_PROP);\n if (Utils.isNullOrEmpty(callback)) {\n return;\n }\n if (Utils.isNullOrEmpty(pixel)) {\n callback(null);\n return;\n }\n // draw again\n renderer.raycast(pixel).then(array => {\n if (Utils.isNullOrEmpty(array)) {\n callback(null);\n }\n else {\n const retval = {\n object: array[0], point: null\n };\n callback(retval);\n }\n });\n }\n snapshot(scene, background, type, quality) {\n const renderers = this.#renderers;\n if (!renderers.has(scene)) {\n return Promise.resolve(null);\n }\n const { canvas } = renderers.get(scene);\n const jpeg = !Utils.isNullOrEmpty(background), mime = type ?? (jpeg ? 'image/jpeg' : null), compression = quality ?? (jpeg ? .9 : null);\n return new Promise((resolve, _) => {\n this.render(scene);\n Utils.snapshotElement(canvas, background, mime, compression).then(resolve);\n });\n }\n raycast(stage, point, size, callback) {\n SETVAL(stage, WEBGPU_RAYCAST_CALLBACK_PROP, callback);\n if (point.x < 0 || point.y < 0 || point.x >= size.width || point.y >= size.height) {\n DELVAL(stage, WEBGPU_RAYCAST_PIXEL_PROP);\n }\n else {\n SETVAL(stage, WEBGPU_RAYCAST_PIXEL_PROP, point);\n }\n }\n _itemsChangedExec(stage) {\n this._updatePipeline(stage);\n }\n _itemsChanged(stage, _) {\n this.#sceneToUpdate.set(stage, true);\n }\n addItem(stage, item) {\n this._itemsChanged(stage, item);\n }\n removeItem(stage, item) {\n this._itemsChanged(stage, item);\n }\n updateItem(stage, item) {\n // if 'hide' property has changed or 'children' property (for groups)\n // then there's need to regenerate the tree view (camera switch, more/less meshes, ...)\n if (Utils.isNull(item)\n || item.flags.indexOf(StalePropertyFlag.Visibility) >= 0\n || item.flags.indexOf(StalePropertyFlag.Children) >= 0) {\n this._itemsChanged(stage, item);\n }\n }\n zoomFit(stage, ...items) {\n // TODO: implement on the renderer side\n return Promise.resolve();\n }\n project(stage, point3D) {\n // TODO: implement on the renderer side\n return { x: 0, y: 0 };\n }\n getScene(stage) {\n // no 3rd-party/proprietary scene objects to provide.\n return stage;\n }\n};\n__decorate([\n Debounce(100)\n], Pacem3DWebgpuAdapterElement.prototype, \"_parseWgslModifiers\", null);\n__decorate([\n Watch({ emit: false })\n], Pacem3DWebgpuAdapterElement.prototype, \"modifiers\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], Pacem3DWebgpuAdapterElement.prototype, \"enableValidation\", void 0);\nPacem3DWebgpuAdapterElement = __decorate([\n CustomElement({ tagName: P + '-3d-webgpu-adapter' })\n], Pacem3DWebgpuAdapterElement);\nexport { Pacem3DWebgpuAdapterElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, P, Watch, PropertyConverters, Utils, CustomEventUtils, avoidHandler, Behaviors, PropertyChangeEventName } from '@pacem/pacem-core';\nimport { Geometry } from '@pacem/pacem-numerical';\nimport { isCamera, StalePropertyFlag } from '../../../types';\nimport { TAG_MIDDLE_NAME } from '../../../constants';\nimport { BooleanOrNumberConverter } from '../../../converters';\n//namespace Pacem.Components.Drawing3D {\nconst Vector3D = Geometry.LinearAlgebra.Vector3D;\nconst Matrix3D = Geometry.LinearAlgebra.Matrix3D;\nconst Quaternion = Geometry.LinearAlgebra.Quaternion;\nconst Spherical = Geometry.LinearAlgebra.Spherical;\nfunction findCameraStage(element) {\n if (isCamera(element)) {\n return element.stage;\n }\n return null;\n}\nconst ROTATION_FACTOR = 1, ZOOM_FACTOR = 1, FRICTION_FACTOR = .05, EPSILON = 0.001;\nconst DEFAULT_CONFIGURATION = {\n maxAzimuth: 180, minAzimuth: -180, inertia: false, maxPolar: Infinity, minPolar: -Infinity,\n zoom: { enabled: true }, pan: { enabled: true, button: 2 }, rotation: { enabled: true, button: 0 }\n};\nexport class OrbitCameraBehavior {\n constructor(item, _config) {\n this._config = _config;\n /** State of the current configuration, obtained from the interaction inputs. */\n this._input = {\n /** Zoom/scale */\n rho: 0,\n /** Azimuth (rotation around x axis in webgpu) */\n theta: 0,\n /** Polar (rotation around y axis in webgpu) */\n phi: 0,\n /** pan/offset x*/\n x: 0,\n /** pan/offset y*/\n y: 0,\n };\n /** Sibling state of {@link _input} that comes helpful when inertia is involved. */\n this._progress = {\n rho: 0,\n theta: 0,\n phi: 0,\n x: 0,\n y: 0,\n };\n this._startHandler = (evt) => {\n const { rotation, pan } = this._config;\n const isMouse = evt.pointerType === 'mouse';\n const rotating = rotation.enabled && isMouse && evt.button === rotation.button && CustomEventUtils.matchModifiers(evt, rotation.modifiers);\n const panning = pan.enabled && isMouse && evt.button === pan.button && CustomEventUtils.matchModifiers(evt, pan.modifiers);\n if (!rotating && !panning) {\n return;\n }\n this.#rotating = rotating;\n if (this.#panning = panning) {\n // build current state from the current camera configuration\n this._currentState = OrbitCameraBehavior._buildState(this._camera);\n // reset pan offsets\n Utils.extend(this._input, Vector3D.zero());\n this._progress.x = this._progress.y = 0;\n }\n avoidHandler(evt);\n window.addEventListener('pointerup', this._endHandler, false);\n window.addEventListener('pointermove', this._moveHandler, false);\n window.addEventListener('contextmenu', this._avoidHandler, false);\n };\n this._avoidHandler = (evt) => avoidHandler(evt);\n this._endHandler = (evt) => {\n avoidHandler(evt);\n // delay the listener removals a bit (~frame)\n window.setTimeout(() => {\n window.removeEventListener('pointerup', this._endHandler);\n window.removeEventListener('pointermove', this._moveHandler);\n window.removeEventListener('contextmenu', this._avoidHandler);\n }, 20);\n };\n this._zoomHandler = (evt) => {\n const { zoom } = this._config;\n const zooming = zoom.enabled && CustomEventUtils.matchModifiers(evt, zoom.modifiers);\n if (!zooming) {\n return;\n }\n avoidHandler(evt);\n const coords = this._input;\n coords.rho -= Math.sign(evt.deltaY);\n };\n this._moveHandler = (evt) => {\n avoidHandler(evt);\n const { height, width } = this._scene.size;\n const coords = this._input;\n const size = Math.min(height, width);\n if (this.#rotating) {\n // rotation\n const f0 = -ROTATION_FACTOR * 360 / size;\n const { phi, theta } = coords;\n const { maxPolar, minPolar, maxAzimuth, minAzimuth } = this._config;\n coords.phi = (phi + evt.movementX * f0).clamp(minPolar, maxPolar);\n coords.theta = (theta + evt.movementY * f0).clamp(minAzimuth, maxAzimuth);\n }\n else if (this.#panning) {\n // pan\n const f0 = this._currentState.radius / size;\n coords.x += -evt.movementX * f0;\n coords.y += evt.movementY * f0;\n }\n };\n this._renderHandler = (_) => {\n this._update();\n };\n const scene = this._scene = (this._camera = item).stage;\n this._initialState = this._currentState = OrbitCameraBehavior._buildState(item);\n const canvas = this._canvas = scene.stage;\n canvas.addEventListener('pointerdown', this._startHandler, false);\n canvas.addEventListener('wheel', this._zoomHandler, { passive: false });\n scene.addEventListener('render', this._renderHandler, false);\n }\n static _buildState(camera) {\n const vector = Vector3D.subtract(camera.position, camera.lookAt);\n const radius = Vector3D.mag(vector);\n return { target: camera.lookAt, versor: Vector3D.unit(vector), up: camera.up, radius, position: camera.position };\n }\n /**\n * Tries to attach a new {@link OrbitCameraBehavior} to the provided element, if the element is a proper renderable and it is ready.\n * @param element\n * @returns\n */\n static tryAttach(element, config) {\n config ??= DEFAULT_CONFIGURATION;\n const canvas = findCameraStage(element)?.stage;\n if (!Utils.isNull(canvas)) {\n const { position, lookAt } = element;\n if (Utils.isNull(position) || Utils.isNull(lookAt) || Vector3D.areClose(position, lookAt)) {\n return null;\n }\n return new OrbitCameraBehavior(element, config);\n }\n else {\n return null;\n }\n }\n get configuration() {\n return this._config;\n }\n set configuration(v) {\n this._config = v;\n }\n #panning;\n #rotating;\n _getSafeAzimuth({ theta }) {\n return OrbitCameraBehavior._modAngle(theta);\n }\n _getSafePolar({ phi }) {\n return OrbitCameraBehavior._modAngle(phi);\n }\n static _modAngle(deg) {\n while (deg < 0) {\n deg += 360;\n }\n return deg % 360;\n }\n static _getViewXYZ(state) {\n const { versor, up: initUp } = state;\n const right = Vector3D.cross(versor, initUp);\n const up = Vector3D.cross(right, versor);\n Vector3D.normalize(right);\n Vector3D.normalize(up);\n return { right, up, versor };\n }\n #updating;\n _update() {\n if (this.#updating) {\n return;\n }\n this.#updating = true;\n const camera = this._camera;\n const { radius, versor, target: initTarget, up: initUp } = this._initialState;\n const { target: trackedLookAt } = this._currentState;\n const { theta, phi, rho, x, y } = this._input;\n const progress = this._progress;\n const { theta: theta_, phi: phi_, rho: rho_, x: x_, y: y_ } = progress;\n const rotated = Math.abs(phi_ - phi) > EPSILON || Math.abs(theta_ - theta) > EPSILON, zoomed = Math.abs(rho_ - rho) > EPSILON, panned = Math.abs(x - x_) > EPSILON || Math.abs(y - y_) > EPSILON;\n if (zoomed || rotated || panned) {\n const inertia = typeof this._config.inertia === 'boolean' ? (this._config.inertia ? FRICTION_FACTOR : 0) : this._config.inertia;\n const inertiaSpecified = inertia > 0 && inertia < 1;\n const { right, up } = OrbitCameraBehavior._getViewXYZ(this._initialState);\n // setup position\n let newPosition = initTarget;\n let newUp = initUp;\n let newLookAt = trackedLookAt;\n //if (zoomed) { 2\n let rho0 = rho_;\n if (inertiaSpecified) {\n rho0 += (rho - rho_) * inertia;\n }\n else {\n rho0 = rho;\n }\n progress.rho = rho0;\n const scale = Math.pow(.95, rho0 * ZOOM_FACTOR);\n const zoom = Vector3D.scale(versor, -scale * radius);\n newPosition = Vector3D.add(newPosition, zoom);\n //}\n //if (rotated) { 3\n let phi0 = phi_;\n let theta0 = theta_;\n if (inertiaSpecified) {\n phi0 += (phi - phi_) * inertia;\n theta0 += (theta - theta_) * inertia;\n }\n else {\n phi0 = phi;\n theta0 = theta;\n }\n const PHI = this._getSafePolar({ phi: progress.phi = phi0 });\n const THETA = this._getSafeAzimuth({ theta: progress.theta = theta0 });\n // pivot of the rotation matrix should be the center of the bounding sphere\n const pivot = Vector3D.negate(initTarget);\n let m = Matrix3D.translate(Matrix3D.identity(), pivot);\n const qy = Quaternion.fromAxisAngle(up, PHI);\n const qx = Quaternion.fromAxisAngle(right, THETA);\n const rot = Matrix3D.multiply(Quaternion.toRotationMatrix(qx), Quaternion.toRotationMatrix(qy));\n m = Matrix3D.multiply(m, rot);\n m = Matrix3D.translate(m, Vector3D.negate(pivot));\n newPosition = Matrix3D.transform(newPosition, m);\n newUp = Matrix3D.transform(newUp, Matrix3D.clone(m, m0 => { m0.offsetX = m0.offsetY = m0.offsetZ = 0; }));\n //}\n //if (panned){ 1\n const x1 = x_, y1 = y_;\n let x0 = x1, y0 = y1;\n if (inertiaSpecified) {\n x0 += (x - x1) * inertia;\n y0 += (y - y1) * inertia;\n }\n else {\n x0 = x;\n y0 = y;\n }\n progress.x = x0;\n progress.y = y0;\n const { right: currentRight, up: currentUp } = OrbitCameraBehavior._getViewXYZ(this._currentState);\n const r = Vector3D.scale(currentRight, x0), u = Vector3D.scale(currentUp, y0);\n const offset = Vector3D.add(r, u);\n newLookAt = Vector3D.add(trackedLookAt, offset);\n camera.lookAt = newLookAt;\n camera.position = newPosition; // Vector3D.add(newPosition, Vector3D.subtract(initTarget, newLookAt));\n camera.up = newUp;\n // notify something has changed about the target renderable\n camera.flags.push(StalePropertyFlag.Camera);\n }\n this.#updating = false;\n }\n /** Detaches and removes handlers and resources. */\n dispose() {\n const canvas = this._canvas, scene = this._scene;\n if (!Utils.isNull(canvas)) {\n canvas.removeEventListener('pointerdown', this._startHandler);\n canvas.removeEventListener('wheel', this._zoomHandler);\n }\n scene.removeEventListener('render', this._renderHandler, false);\n }\n}\nlet PacemOrbitCameraBehaviorElement = class PacemOrbitCameraBehaviorElement extends Behaviors.PacemBehavior {\n constructor() {\n super(...arguments);\n this.#map = new Map();\n this._readyHandler = (evt) => {\n if (evt.detail.propertyName === 'isReady' && evt.detail.currentValue === true) {\n const element = evt.currentTarget;\n element.removeEventListener(PropertyChangeEventName, this._readyHandler);\n this._decorateCore(element);\n }\n };\n }\n #map;\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'maxAzimuth':\n case 'minAzimuth':\n case 'inertia':\n case 'zoomControl':\n case 'panControl':\n case 'rotationControl':\n const config = this._buildConfig();\n const items = this.#map;\n for (let tr of items.values()) {\n tr.configuration = config;\n }\n break;\n }\n }\n disconnectedCallback() {\n const items = this.#map;\n for (let tr of items.values()) {\n tr.dispose();\n }\n items.clear();\n super.disconnectedCallback();\n }\n _buildConfig() {\n return Utils.extend({}, DEFAULT_CONFIGURATION, {\n maxAzimuth: this.maxAzimuth ?? Infinity,\n minAzimuth: this.minAzimuth ?? -Infinity,\n minPolar: this.minPolar ?? -Infinity,\n maxPolar: this.maxPolar ?? Infinity,\n inertia: this.inertia ?? false,\n zoom: this.zoomControl ?? DEFAULT_CONFIGURATION.zoom,\n pan: this.panControl ?? DEFAULT_CONFIGURATION.pan,\n rotation: this.rotationControl ?? DEFAULT_CONFIGURATION.rotation,\n });\n }\n _decorateCore(element) {\n const behavior = OrbitCameraBehavior.tryAttach(element, this._buildConfig());\n if (!Utils.isNull(behavior)) {\n this.#map.set(element, behavior);\n }\n }\n decorate(element) {\n if (element.isConnected) {\n this._decorateCore(element);\n }\n else {\n element.addEventListener(PropertyChangeEventName, this._readyHandler, false);\n }\n }\n undecorate(element) {\n const map = this.#map;\n if (map.has(element)) {\n map.get(element).dispose();\n map.delete(element);\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemOrbitCameraBehaviorElement.prototype, \"maxAzimuth\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemOrbitCameraBehaviorElement.prototype, \"maxPolar\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemOrbitCameraBehaviorElement.prototype, \"minAzimuth\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemOrbitCameraBehaviorElement.prototype, \"minPolar\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemOrbitCameraBehaviorElement.prototype, \"zoomControl\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemOrbitCameraBehaviorElement.prototype, \"rotationControl\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemOrbitCameraBehaviorElement.prototype, \"panControl\", void 0);\n__decorate([\n Watch({ emit: false, converter: BooleanOrNumberConverter })\n], PacemOrbitCameraBehaviorElement.prototype, \"inertia\", void 0);\nPacemOrbitCameraBehaviorElement = __decorate([\n CustomElement({ tagName: P + '-' + TAG_MIDDLE_NAME + '-orbit-camera' })\n], PacemOrbitCameraBehaviorElement);\nexport { PacemOrbitCameraBehaviorElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Transformer } from '@pacem/pacem-core';\nimport { Point } from '@pacem/pacem-foundation';\nimport { MeshGeometry } from '../geometry';\nimport { Point3DConverter } from '../converters';\n//namespace Pacem.Drawing3D {\nclass OBJParser {\n static parse(content) {\n // vertices\n const vertices = [];\n const vParser = /^v((\\s+-?[\\d\\.]+){3})/gm;\n let arr = vParser.exec(content);\n while (arr && arr.length) {\n vertices.push(Point3DConverter.convert(arr[1]));\n arr = vParser.exec(content);\n }\n // uvmap\n const vt = [];\n const tParser = /^vt((\\s+-?[\\d\\.]+){2})/gm;\n arr = tParser.exec(content);\n while (arr && arr.length) {\n vt.push(Point.parse(arr[1]));\n arr = tParser.exec(content);\n }\n // normals\n const vn = [];\n const nParser = /^vn((\\s+-?[\\d\\.]+){3})/gm;\n arr = nParser.exec(content);\n while (arr && arr.length) {\n vn.push(Point3DConverter.convert(arr[1]));\n arr = nParser.exec(content);\n }\n const normals = [];\n const uv = [];\n const positions = [];\n const fParser = /^f((\\s+([\\d]+\\/[\\d]+\\/[\\d]+)){3,})/gm;\n arr = fParser.exec(content);\n while (arr && arr.length) {\n const fjParser = /([\\d]+)\\/([\\d]+)\\/([\\d]+)/g;\n const face = arr[1];\n let jArr = fjParser.exec(face);\n let jIndex = 0;\n var vIndex0, tIndex0, nIndex0;\n var vIndex, tIndex, nIndex;\n while (jArr && jArr.length) {\n if (jIndex > 2) {\n // 4+ vertex-face\n // but mesh only allows triangluar faces\n // re-add(0)\n positions.push(vIndex0);\n uv.push(vt[tIndex0]);\n normals.push(vn[nIndex0]);\n // re-add(last)\n positions.push(vIndex);\n uv.push(vt[tIndex]);\n normals.push(vn[nIndex]);\n }\n // OBJ indexes are 1-based\n vIndex = parseInt(jArr[1]) - 1;\n tIndex = parseInt(jArr[2]) - 1;\n nIndex = parseInt(jArr[3]) - 1;\n positions.push(vIndex);\n uv.push(vt[tIndex]);\n normals.push(vn[nIndex]);\n if (jIndex === 0) {\n vIndex0 = vIndex;\n tIndex0 = tIndex;\n nIndex0 = nIndex;\n }\n jIndex++;\n jArr = fjParser.exec(face);\n }\n // loop\n arr = fParser.exec(content);\n }\n // faces\n return new MeshGeometry(vertices, positions, uv, normals);\n }\n}\nclass Parser3D {\n static parseGeometry(content, type) {\n switch (type.toLowerCase()) {\n case 'obj':\n return OBJParser.parse(content);\n default:\n throw new Error(`Type '${type}' is not supported.`);\n }\n }\n}\n__decorate([\n Transformer('parse3D')\n], Parser3D, \"parseGeometry\", null);\n","import { DeepMerger } from '@pacem/pacem-foundation';\nimport * as Output from './index';\nDeepMerger.merge(Output);\n"],"names":["Geometry","parseAsNumericalArray","Utils","__decorate","this","Components","PropertyChangeEventName","Logging","UI","Animations","ViewChild","PCSS","P","Watch","PropertyConverters","CustomElement","Defaults","CustomUIEvent","CustomElementUtils","PropertyChangeEvent","PacemEventTarget","Imaging","Point","CustomEventUtils","Colors","adaptWGSLStringArray","adaptWGSLModifierStringArray","Vector3D","Matrix3D","Strings","Debounce","avoidHandler","Behaviors","Transformer","DeepMerger"],"mappings":"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"}
|