angular-three-soba 2.2.0 → 2.2.1
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/abstractions/lib/catmull-rom-line.d.ts +117 -117
- package/abstractions/lib/edges.d.ts +126 -126
- package/abstractions/lib/grid.d.ts +15 -15
- package/abstractions/lib/line.d.ts +9 -8
- package/abstractions/lib/prism-geometry.d.ts +2 -2
- package/abstractions/lib/rounded-box.d.ts +3 -3
- package/abstractions/lib/text-3d.d.ts +22 -22
- package/abstractions/lib/text.d.ts +0 -1
- package/cameras/lib/cube-camera.d.ts +2 -2
- package/cameras/lib/orthographic-camera.d.ts +7 -8
- package/cameras/lib/perspective-camera.d.ts +2 -3
- package/controls/lib/camera-controls.d.ts +1 -1
- package/controls/lib/orbit-controls.d.ts +1 -1
- package/esm2022/abstractions/lib/billboard.mjs +3 -3
- package/esm2022/abstractions/lib/catmull-rom-line.mjs +3 -3
- package/esm2022/abstractions/lib/cubic-bezier-line.mjs +3 -3
- package/esm2022/abstractions/lib/edges.mjs +30 -34
- package/esm2022/abstractions/lib/gradient-texture.mjs +3 -3
- package/esm2022/abstractions/lib/grid.mjs +3 -3
- package/esm2022/abstractions/lib/helper.mjs +18 -20
- package/esm2022/abstractions/lib/line.mjs +25 -28
- package/esm2022/abstractions/lib/prism-geometry.mjs +3 -3
- package/esm2022/abstractions/lib/quadratic-bezier-line.mjs +3 -3
- package/esm2022/abstractions/lib/rounded-box.mjs +11 -17
- package/esm2022/abstractions/lib/text-3d.mjs +14 -17
- package/esm2022/abstractions/lib/text.mjs +11 -16
- package/esm2022/cameras/lib/camera-content.mjs +3 -3
- package/esm2022/cameras/lib/cube-camera.mjs +18 -27
- package/esm2022/cameras/lib/orthographic-camera.mjs +20 -20
- package/esm2022/cameras/lib/perspective-camera.mjs +21 -21
- package/esm2022/controls/lib/camera-controls.mjs +3 -3
- package/esm2022/controls/lib/orbit-controls.mjs +3 -3
- package/esm2022/controls/lib/scroll-controls.mjs +124 -130
- package/esm2022/gizmos/lib/gizmo-helper/gizmo-helper.mjs +6 -6
- package/esm2022/gizmos/lib/gizmo-helper/gizmo-viewcube.mjs +12 -12
- package/esm2022/gizmos/lib/gizmo-helper/gizmo-viewport.mjs +9 -9
- package/esm2022/gizmos/lib/pivot-controls/axis-arrow.mjs +6 -4
- package/esm2022/gizmos/lib/pivot-controls/axis-rotator.mjs +3 -3
- package/esm2022/gizmos/lib/pivot-controls/pivot-controls.mjs +44 -47
- package/esm2022/gizmos/lib/pivot-controls/plane-slider.mjs +3 -3
- package/esm2022/gizmos/lib/pivot-controls/scaling-sphere.mjs +3 -3
- package/esm2022/gizmos/lib/transform-controls.mjs +3 -3
- package/esm2022/loaders/lib/loader.mjs +3 -3
- package/esm2022/materials/lib/custom-shader-material.mjs +8 -12
- package/esm2022/materials/lib/mesh-distort-material.mjs +3 -3
- package/esm2022/materials/lib/mesh-reflector-material.mjs +11 -15
- package/esm2022/materials/lib/mesh-refraction-material.mjs +26 -30
- package/esm2022/materials/lib/mesh-transmission-material.mjs +3 -3
- package/esm2022/materials/lib/mesh-wobble-material.mjs +3 -3
- package/esm2022/materials/lib/point-material.mjs +3 -3
- package/esm2022/misc/lib/bake-shadows.mjs +8 -10
- package/esm2022/misc/lib/computed-attribute.mjs +15 -19
- package/esm2022/misc/lib/decal.mjs +56 -53
- package/esm2022/misc/lib/fbo.mjs +10 -10
- package/esm2022/misc/lib/html/html-content.mjs +62 -67
- package/esm2022/misc/lib/html/html.mjs +3 -3
- package/esm2022/misc/lib/intersect.mjs +6 -9
- package/esm2022/misc/lib/sampler.mjs +48 -42
- package/esm2022/performances/lib/adaptive-dpr.mjs +29 -35
- package/esm2022/performances/lib/adaptive-events.mjs +12 -16
- package/esm2022/performances/lib/detailed.mjs +14 -18
- package/esm2022/performances/lib/instances/instances.mjs +16 -22
- package/esm2022/performances/lib/points/points.mjs +19 -25
- package/esm2022/performances/lib/segments/segments.mjs +11 -14
- package/esm2022/shaders/lib/mesh-refraction-material.mjs +1 -1
- package/esm2022/staging/index.mjs +3 -2
- package/esm2022/staging/lib/accumulative-shadows.mjs +19 -21
- package/esm2022/staging/lib/backdrop.mjs +19 -23
- package/esm2022/staging/lib/bb-anchor.mjs +3 -3
- package/esm2022/staging/lib/bounds.mjs +39 -43
- package/esm2022/staging/lib/camera-shake.mjs +14 -18
- package/esm2022/staging/lib/caustics.mjs +24 -28
- package/esm2022/staging/lib/center.mjs +28 -32
- package/esm2022/staging/lib/contact-shadows.mjs +3 -3
- package/esm2022/staging/lib/environment/environment.mjs +338 -0
- package/esm2022/staging/lib/environment/inject-environment.mjs +184 -0
- package/esm2022/staging/lib/float.mjs +3 -3
- package/esm2022/staging/lib/lightformer.mjs +18 -22
- package/esm2022/staging/lib/mask.mjs +8 -12
- package/esm2022/staging/lib/matcap-texture.mjs +9 -11
- package/esm2022/staging/lib/normal-texture.mjs +9 -11
- package/esm2022/staging/lib/randomized-lights.mjs +9 -13
- package/esm2022/staging/lib/render-texture.mjs +19 -20
- package/esm2022/staging/lib/sky.mjs +3 -3
- package/esm2022/staging/lib/spot-light.mjs +32 -40
- package/esm2022/staging/lib/stage.mjs +13 -17
- package/esm2022/stats/lib/stats.mjs +21 -27
- package/fesm2022/angular-three-soba-abstractions.mjs +119 -138
- package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
- package/fesm2022/angular-three-soba-cameras.mjs +57 -64
- package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
- package/fesm2022/angular-three-soba-controls.mjs +129 -135
- package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
- package/fesm2022/angular-three-soba-gizmos.mjs +87 -88
- package/fesm2022/angular-three-soba-gizmos.mjs.map +1 -1
- package/fesm2022/angular-three-soba-loaders.mjs +3 -3
- package/fesm2022/angular-three-soba-materials.mjs +52 -62
- package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
- package/fesm2022/angular-three-soba-misc.mjs +194 -195
- package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
- package/fesm2022/angular-three-soba-performances.mjs +90 -114
- package/fesm2022/angular-three-soba-performances.mjs.map +1 -1
- package/fesm2022/angular-three-soba-shaders.mjs.map +1 -1
- package/fesm2022/angular-three-soba-staging.mjs +427 -430
- package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
- package/fesm2022/angular-three-soba-stats.mjs +20 -26
- package/fesm2022/angular-three-soba-stats.mjs.map +1 -1
- package/gizmos/lib/gizmo-helper/gizmo-viewport.d.ts +1 -1
- package/gizmos/lib/pivot-controls/pivot-controls.d.ts +1 -1
- package/gizmos/lib/transform-controls.d.ts +2 -2
- package/materials/lib/custom-shader-material.d.ts +3 -3
- package/materials/lib/mesh-refraction-material.d.ts +2 -2
- package/materials/lib/mesh-transmission-material.d.ts +1 -1
- package/misc/lib/computed-attribute.d.ts +6 -6
- package/misc/lib/decal.d.ts +4 -4
- package/misc/lib/html/html-content.d.ts +6 -6
- package/misc/lib/sampler.d.ts +2 -4
- package/package.json +8 -8
- package/performances/lib/instances/instances.d.ts +11 -11
- package/performances/lib/points/points.d.ts +19 -19
- package/performances/lib/segments/segments.d.ts +4 -4
- package/shaders/lib/mesh-refraction-material.d.ts +2 -5
- package/staging/index.d.ts +2 -1
- package/staging/lib/accumulative-shadows.d.ts +1 -1
- package/staging/lib/camera-shake.d.ts +0 -1
- package/staging/lib/caustics.d.ts +1 -1
- package/staging/lib/contact-shadows.d.ts +1 -1
- package/staging/lib/{environment.d.ts → environment/environment.d.ts} +20 -49
- package/staging/lib/environment/inject-environment.d.ts +33 -0
- package/staging/lib/lightformer.d.ts +1 -1
- package/staging/lib/matcap-texture.d.ts +0 -1
- package/staging/lib/normal-texture.d.ts +0 -1
- package/staging/lib/render-texture.d.ts +1 -1
- package/staging/lib/sky.d.ts +1 -1
- package/staging/lib/spot-light.d.ts +2 -2
- package/staging/lib/stage.d.ts +2 -1
- package/esm2022/staging/lib/environment.mjs +0 -481
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"angular-three-soba-performances.mjs","sources":["../../../../libs/soba/performances/src/lib/adaptive-dpr.ts","../../../../libs/soba/performances/src/lib/adaptive-events.ts","../../../../libs/soba/performances/src/lib/detailed.ts","../../../../libs/soba/performances/src/lib/instances/position-mesh.ts","../../../../libs/soba/performances/src/lib/instances/instances.ts","../../../../libs/soba/performances/src/lib/points/position-point.ts","../../../../libs/soba/performances/src/lib/points/points.ts","../../../../libs/soba/performances/src/lib/segments/segment-object.ts","../../../../libs/soba/performances/src/lib/segments/segments.ts","../../../../libs/soba/performances/src/angular-three-soba-performances.ts"],"sourcesContent":["import { afterNextRender, Directive, input, untracked } from '@angular/core';\nimport { injectStore } from 'angular-three';\nimport { injectAutoEffect } from 'ngxtension/auto-effect';\n\n@Directive({ selector: 'ngts-adaptive-dpr', standalone: true })\nexport class NgtsAdaptiveDpr {\n\tpixelated = input(false);\n\n\tconstructor() {\n\t\tconst store = injectStore();\n\t\tconst gl = store.select('gl');\n\t\tconst active = store.select('internal', 'active');\n\t\tconst current = store.select('performance', 'current');\n\t\tconst initialDpr = store.select('viewport', 'initialDpr');\n\t\tconst setDpr = store.select('setDpr');\n\n\t\tconst autoEffect = injectAutoEffect();\n\n\t\tafterNextRender(() => {\n\t\t\tautoEffect(() => {\n\t\t\t\tconst domElement = untracked(gl).domElement;\n\t\t\t\treturn () => {\n\t\t\t\t\tconst [_active, _setDpr, _initialDpr, pixelated] = [\n\t\t\t\t\t\tuntracked(active),\n\t\t\t\t\t\tuntracked(setDpr),\n\t\t\t\t\t\tuntracked(initialDpr),\n\t\t\t\t\t\tuntracked(this.pixelated),\n\t\t\t\t\t];\n\n\t\t\t\t\tif (_active) _setDpr(_initialDpr);\n\t\t\t\t\tif (pixelated && domElement) domElement.style.imageRendering = 'auto';\n\t\t\t\t};\n\t\t\t});\n\n\t\t\tautoEffect(() => {\n\t\t\t\tconst [_current, pixelated, domElement, _setDpr, _initialDpr] = [\n\t\t\t\t\tcurrent(),\n\t\t\t\t\tuntracked(this.pixelated),\n\t\t\t\t\tuntracked(gl).domElement,\n\t\t\t\t\tuntracked(setDpr),\n\t\t\t\t\tuntracked(initialDpr),\n\t\t\t\t];\n\n\t\t\t\t_setDpr(_current * _initialDpr);\n\t\t\t\tif (pixelated && domElement) domElement.style.imageRendering = _current === 1 ? 'auto' : 'pixelated';\n\t\t\t});\n\t\t});\n\t}\n}\n","import { afterNextRender, Directive } from '@angular/core';\nimport { injectStore } from 'angular-three';\nimport { injectAutoEffect } from 'ngxtension/auto-effect';\n\n@Directive({ standalone: true, selector: 'ngts-adaptive-events' })\nexport class NgtsAdaptiveEvents {\n\tconstructor() {\n\t\tconst autoEffect = injectAutoEffect();\n\t\tconst store = injectStore();\n\t\tconst current = store.select('performance', 'current');\n\n\t\tafterNextRender(() => {\n\t\t\tautoEffect(() => {\n\t\t\t\tconst enabled = store.snapshot.events.enabled;\n\t\t\t\treturn () => store.snapshot.setEvents({ enabled });\n\t\t\t});\n\n\t\t\tautoEffect(() => {\n\t\t\t\tconst _current = current();\n\t\t\t\treturn () => store.snapshot.setEvents({ enabled: _current === 1 });\n\t\t\t});\n\t\t});\n\t}\n}\n","import {\n\tafterNextRender,\n\tChangeDetectionStrategy,\n\tComponent,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tElementRef,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { extend, getLocalState, injectBeforeRender, NgtLOD, omit, pick } from 'angular-three';\nimport { injectAutoEffect } from 'ngxtension/auto-effect';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { LOD } from 'three';\n\nexport interface NgtsDetailedOptions extends Partial<NgtLOD> {\n\thysteresis: number;\n}\n\nconst defaultOptions: NgtsDetailedOptions = {\n\thysteresis: 0,\n};\n\n@Component({\n\tselector: 'ngts-detailed',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-lOD #lod [parameters]=\"parameters()\">\n\t\t\t<ng-content />\n\t\t</ngt-lOD>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsDetailed {\n\tdistances = input.required<number[]>();\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = omit(this.options, ['hysteresis']);\n\n\tlodRef = viewChild.required<ElementRef<LOD>>('lod');\n\tprivate hysteresis = pick(this.options, 'hysteresis');\n\n\tconstructor() {\n\t\textend({ LOD });\n\n\t\tconst autoEffect = injectAutoEffect();\n\n\t\tafterNextRender(() => {\n\t\t\tautoEffect(() => {\n\t\t\t\tconst lod = this.lodRef().nativeElement;\n\t\t\t\tconst localState = getLocalState(lod);\n\t\t\t\tif (!localState) return;\n\t\t\t\tconst [, distances, hysteresis] = [localState.objects(), this.distances(), this.hysteresis()];\n\t\t\t\tlod.levels.length = 0;\n\t\t\t\tlod.children.forEach((object, index) => {\n\t\t\t\t\tlod.levels.push({ object, distance: distances[index], hysteresis });\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\n\t\tinjectBeforeRender(({ camera }) => {\n\t\t\tthis.lodRef().nativeElement.update(camera);\n\t\t});\n\t}\n}\n","import { ElementRef } from '@angular/core';\nimport { NgtObject3DNode, resolveRef } from 'angular-three';\nimport {\n\tBufferGeometry,\n\tColor,\n\tGroup,\n\tInstancedMesh,\n\tIntersection,\n\tMaterial,\n\tMatrix4,\n\tMesh,\n\tMeshBasicMaterial,\n\tRaycaster,\n} from 'three';\n\nexport type NgtPositionMesh = NgtObject3DNode<PositionMesh, typeof PositionMesh>;\n\nconst _instanceLocalMatrix = new Matrix4();\nconst _instanceWorldMatrix = new Matrix4();\nconst _instanceIntersects: Intersection[] = [];\nconst _mesh = new Mesh<BufferGeometry, MeshBasicMaterial>();\n\nexport class PositionMesh extends Group {\n\tcolor: Color;\n\tinstance: ElementRef<InstancedMesh> | InstancedMesh | null | undefined;\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.color = new Color('white');\n\t\tthis.instance = undefined;\n\t}\n\n\t// This will allow the virtual instance have bounds\n\tget geometry() {\n\t\treturn resolveRef(this.instance)?.geometry;\n\t}\n\n\t// And this will allow the virtual instance to receive events\n\toverride raycast(raycaster: Raycaster, intersects: Intersection[]) {\n\t\tconst parent = resolveRef(this.instance);\n\t\tif (!parent) return;\n\t\tif (!parent.geometry || !parent.material) return;\n\t\t_mesh.geometry = parent.geometry;\n\t\tconst matrixWorld = parent.matrixWorld;\n\t\tconst instanceId = parent.userData['instances'].indexOf(this);\n\t\t// If the instance wasn't found or exceeds the parents draw range, bail out\n\t\tif (instanceId === -1 || instanceId > parent.count) return;\n\t\t// calculate the world matrix for each instance\n\t\tparent.getMatrixAt(instanceId, _instanceLocalMatrix);\n\t\t_instanceWorldMatrix.multiplyMatrices(matrixWorld, _instanceLocalMatrix);\n\t\t// the mesh represents this single instance\n\t\t_mesh.matrixWorld = _instanceWorldMatrix;\n\t\t// raycast side according to instance material\n\t\tif (parent.material instanceof Material) _mesh.material.side = parent.material.side;\n\t\telse _mesh.material.side = parent.material[0].side;\n\t\t_mesh.raycast(raycaster, _instanceIntersects);\n\t\t// process the result of raycast\n\t\tfor (let i = 0, l = _instanceIntersects.length; i < l; i++) {\n\t\t\tconst intersect = _instanceIntersects[i];\n\t\t\tintersect.instanceId = instanceId;\n\t\t\tintersect.object = this;\n\t\t\tintersects.push(intersect);\n\t\t}\n\t\t_instanceIntersects.length = 0;\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @extends ngt-group\n\t\t * @rawOptions instance|color\n\t\t */\n\t\t'ngt-position-mesh': NgtPositionMesh;\n\t}\n}\n","import {\n\tafterNextRender,\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tElementRef,\n\tinject,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport {\n\tcheckUpdate,\n\textend,\n\tinjectBeforeRender,\n\tNgtArgs,\n\tNgtInstancedMesh,\n\tomit,\n\tpick,\n\tresolveRef,\n} from 'angular-three';\nimport { setUpdateRange } from 'angular-three-soba/misc';\nimport { injectAutoEffect } from 'ngxtension/auto-effect';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { DynamicDrawUsage, InstancedBufferAttribute, InstancedMesh, Matrix4, Quaternion, Vector3 } from 'three';\nimport { NgtPositionMesh, PositionMesh } from './position-mesh';\n\nconst parentMatrix = new Matrix4();\nconst instanceMatrix = new Matrix4();\nconst tempMatrix = new Matrix4();\nconst translation = new Vector3();\nconst rotation = new Quaternion();\nconst scale = new Vector3();\n\n@Component({\n\tselector: 'ngts-instance',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-position-mesh #positionMesh [instance]=\"instances.instancedMeshRef()\" [parameters]=\"options()\">\n\t\t\t<ng-content />\n\t\t</ngt-position-mesh>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsInstance {\n\toptions = input({} as Partial<NgtPositionMesh>);\n\n\tinstances = inject(NgtsInstances);\n\n\tpositionMeshRef = viewChild.required<ElementRef<PositionMesh>>('positionMesh');\n\n\tconstructor() {\n\t\textend({ PositionMesh });\n\n\t\tconst autoEffect = injectAutoEffect();\n\n\t\tafterNextRender(() => {\n\t\t\tautoEffect(() => {\n\t\t\t\treturn this.instances.subscribe(this.positionMeshRef().nativeElement);\n\t\t\t});\n\t\t});\n\t}\n}\n\nexport interface NgtsInstancesOptions extends Partial<NgtInstancedMesh> {\n\trange?: number;\n\tlimit: number;\n\tframes: number;\n}\n\nconst defaultOptions: NgtsInstancesOptions = {\n\tlimit: 1000,\n\tframes: Infinity,\n};\n\n@Component({\n\tselector: 'ngts-instances',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-instanced-mesh\n\t\t\t#instancedMesh\n\t\t\t[userData]=\"{ instances }\"\n\t\t\t[matrixAutoUpdate]=\"false\"\n\t\t\t[raycast]=\"null\"\n\t\t\t[parameters]=\"parameters()\"\n\t\t>\n\t\t\t<ngt-instanced-buffer-attribute\n\t\t\t\tattach=\"instanceMatrix\"\n\t\t\t\t[usage]=\"DynamicDrawUsage\"\n\t\t\t\t[count]=\"buffers().matrices.length / 16\"\n\t\t\t\t[array]=\"buffers().matrices\"\n\t\t\t\t[itemSize]=\"16\"\n\t\t\t/>\n\t\t\t<ngt-instanced-buffer-attribute\n\t\t\t\tattach=\"instanceColor\"\n\t\t\t\t[usage]=\"DynamicDrawUsage\"\n\t\t\t\t[count]=\"buffers().colors.length / 3\"\n\t\t\t\t[array]=\"buffers().colors\"\n\t\t\t\t[itemSize]=\"3\"\n\t\t\t/>\n\t\t\t<ng-content />\n\t\t</ngt-instanced-mesh>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsInstances {\n\tprotected readonly DynamicDrawUsage = DynamicDrawUsage;\n\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = omit(this.options, ['limit', 'frames', 'range']);\n\n\tinstancedMeshRef = viewChild.required<ElementRef<InstancedMesh>>('instancedMesh');\n\n\tlimit = pick(this.options, 'limit');\n\n\tbuffers = computed(() => {\n\t\tconst limit = this.limit();\n\t\tconst matrices = new Float32Array(limit * 16);\n\n\t\tfor (let i = 0; i < limit; i++) {\n\t\t\ttempMatrix.identity().toArray(matrices, i * 16);\n\t\t}\n\n\t\tconst colors = new Float32Array([...Array.from({ length: limit * 3 }, () => 1)]);\n\t\treturn { matrices, colors };\n\t});\n\n\tinstances: Array<ElementRef<PositionMesh> | PositionMesh> = [];\n\n\tconstructor() {\n\t\textend({ InstancedMesh, InstancedBufferAttribute });\n\n\t\tconst autoEffect = injectAutoEffect();\n\n\t\tafterNextRender(() => {\n\t\t\tautoEffect(() => {\n\t\t\t\tconst instancedMesh = this.instancedMeshRef()?.nativeElement;\n\t\t\t\tif (!instancedMesh) return;\n\t\t\t\tcheckUpdate(instancedMesh.instanceMatrix);\n\t\t\t});\n\t\t});\n\n\t\tlet iterations = 0;\n\t\tlet count = 0;\n\n\t\tinjectBeforeRender(() => {\n\t\t\tconst instancedMesh = this.instancedMeshRef()?.nativeElement;\n\t\t\tif (!instancedMesh) return;\n\t\t\tconst { frames, limit, range } = this.options();\n\t\t\tconst { matrices, colors } = this.buffers();\n\t\t\tif (frames === Infinity || iterations < frames) {\n\t\t\t\tinstancedMesh.updateMatrix();\n\t\t\t\tinstancedMesh.updateMatrixWorld();\n\t\t\t\tparentMatrix.copy(instancedMesh.matrixWorld).invert();\n\n\t\t\t\tcount = Math.min(limit, range !== undefined ? range : limit, this.instances.length);\n\t\t\t\tinstancedMesh.count = count;\n\t\t\t\tsetUpdateRange(instancedMesh.instanceMatrix, { offset: 0, count: count * 16 });\n\t\t\t\tif (instancedMesh.instanceColor) {\n\t\t\t\t\tsetUpdateRange(instancedMesh.instanceColor, { offset: 0, count: count * 3 });\n\t\t\t\t}\n\n\t\t\t\tfor (let i = 0; i < this.instances.length; i++) {\n\t\t\t\t\tconst instance = resolveRef(this.instances[i]);\n\t\t\t\t\tif (instance) {\n\t\t\t\t\t\t// Multiply the inverse of the InstancedMesh world matrix or else\n\t\t\t\t\t\t// Instances will be double-transformed if <Instances> isn't at identity\n\t\t\t\t\t\tinstance.matrixWorld.decompose(translation, rotation, scale);\n\t\t\t\t\t\tinstanceMatrix.compose(translation, rotation, scale).premultiply(parentMatrix);\n\t\t\t\t\t\tinstanceMatrix.toArray(matrices, i * 16);\n\t\t\t\t\t\tcheckUpdate(instancedMesh.instanceMatrix);\n\t\t\t\t\t\tinstance.color.toArray(colors, i * 3);\n\t\t\t\t\t\tcheckUpdate(instancedMesh.instanceColor);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\titerations++;\n\t\t\t}\n\t\t});\n\t}\n\n\tsubscribe(ref: ElementRef<PositionMesh> | PositionMesh) {\n\t\tthis.instances.push(ref);\n\t\treturn () => {\n\t\t\tthis.instances = this.instances.filter((i) => i !== ref);\n\t\t};\n\t}\n}\n","import { ElementRef } from '@angular/core';\nimport { NgtObject3DNode, resolveRef } from 'angular-three';\nimport { Color, Group, Intersection, Matrix4, Points, Ray, Raycaster, Sphere, Vector3 } from 'three';\n\nexport type NgtPositionPoint = NgtObject3DNode<PositionPoint, typeof PositionPoint>;\n\nconst _inverseMatrix = new Matrix4();\nconst _ray = new Ray();\nconst _sphere = new Sphere();\nconst _position = new Vector3();\n\nexport class PositionPoint extends Group {\n\tsize: number;\n\tcolor: Color;\n\tinstance: ElementRef<Points> | Points | null | undefined;\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.size = 0;\n\t\tthis.color = new Color('white');\n\t\tthis.instance = undefined;\n\t}\n\n\t// This will allow the virtual instance have bounds\n\tget geometry() {\n\t\treturn resolveRef(this.instance)?.geometry;\n\t}\n\n\toverride raycast(raycaster: Raycaster, intersects: Intersection[]) {\n\t\tconst parent = resolveRef(this.instance);\n\t\tif (!parent || !parent.geometry) return;\n\t\tconst instanceId = parent.userData['instances'].indexOf(this);\n\t\t// If the instance wasn't found or exceeds the parents draw range, bail out\n\t\tif (instanceId === -1 || instanceId > parent.geometry.drawRange.count) return;\n\n\t\tconst threshold = raycaster.params.Points?.threshold ?? 1;\n\t\t_sphere.set(this.getWorldPosition(_position), threshold);\n\t\tif (raycaster.ray.intersectsSphere(_sphere) === false) return;\n\n\t\t_inverseMatrix.copy(parent.matrixWorld).invert();\n\t\t_ray.copy(raycaster.ray).applyMatrix4(_inverseMatrix);\n\n\t\tconst localThreshold = threshold / ((this.scale.x + this.scale.y + this.scale.z) / 3);\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\t\tconst rayPointDistanceSq = _ray.distanceSqToPoint(this.position);\n\n\t\tif (rayPointDistanceSq < localThresholdSq) {\n\t\t\tconst intersectPoint = new Vector3();\n\t\t\t_ray.closestPointToPoint(this.position, intersectPoint);\n\t\t\tintersectPoint.applyMatrix4(this.matrixWorld);\n\t\t\tconst distance = raycaster.ray.origin.distanceTo(intersectPoint);\n\t\t\tif (distance < raycaster.near || distance > raycaster.far) return;\n\t\t\tintersects.push({\n\t\t\t\tdistance: distance,\n\t\t\t\tdistanceToRay: Math.sqrt(rayPointDistanceSq),\n\t\t\t\tpoint: intersectPoint,\n\t\t\t\tindex: instanceId,\n\t\t\t\tface: null,\n\t\t\t\tobject: this,\n\t\t\t});\n\t\t}\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @extends ngt-group\n\t\t * @rawOptions instance|color|size\n\t\t */\n\t\t'ngt-position-point': NgtPositionPoint;\n\t}\n}\n","import {\n\tafterNextRender,\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tElementRef,\n\tinject,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { checkUpdate, extend, injectBeforeRender, NgtPoints, omit, pick, resolveRef } from 'angular-three';\nimport { injectAutoEffect } from 'ngxtension/auto-effect';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { BufferAttribute, BufferGeometry, DynamicDrawUsage, Matrix4, Points, Vector3 } from 'three';\nimport { NgtPositionPoint, PositionPoint } from './position-point';\n\n@Component({\n\tselector: 'ngts-point',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-position-point #positionPoint [parameters]=\"options()\" [instance]=\"points.pointsRef()\">\n\t\t\t<ng-content />\n\t\t</ngt-position-point>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsPoint {\n\toptions = input({} as Partial<NgtPositionPoint>);\n\n\tpositionPointRef = viewChild.required<ElementRef<PositionPoint>>('positionPoint');\n\n\tpoints = inject(NgtsPointsInstances);\n\n\tconstructor() {\n\t\textend({ PositionPoint });\n\n\t\tconst autoEffect = injectAutoEffect();\n\n\t\tafterNextRender(() => {\n\t\t\tautoEffect(() => {\n\t\t\t\treturn this.points.subscribe(this.positionPointRef().nativeElement);\n\t\t\t});\n\t\t});\n\t}\n}\n\n@Component({\n\tselector: 'ngts-points-buffer',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-points #points [parameters]=\"options()\">\n\t\t\t<ngt-buffer-geometry>\n\t\t\t\t<ngt-buffer-attribute\n\t\t\t\t\tattach=\"attributes.position\"\n\t\t\t\t\t[count]=\"positions().length / stride()\"\n\t\t\t\t\t[array]=\"positions()\"\n\t\t\t\t\t[itemSize]=\"stride()\"\n\t\t\t\t\t[usage]=\"DynamicDrawUsage\"\n\t\t\t\t/>\n\t\t\t\t@if (colors(); as colors) {\n\t\t\t\t\t<ngt-buffer-attribute\n\t\t\t\t\t\tattach=\"attributes.color\"\n\t\t\t\t\t\t[count]=\"colors.length / stride()\"\n\t\t\t\t\t\t[array]=\"colors\"\n\t\t\t\t\t\t[itemSize]=\"3\"\n\t\t\t\t\t\t[usage]=\"DynamicDrawUsage\"\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t\t@if (sizes(); as sizes) {\n\t\t\t\t\t<ngt-buffer-attribute\n\t\t\t\t\t\tattach=\"attributes.size\"\n\t\t\t\t\t\t[count]=\"sizes.length / stride()\"\n\t\t\t\t\t\t[array]=\"sizes\"\n\t\t\t\t\t\t[itemSize]=\"1\"\n\t\t\t\t\t\t[usage]=\"DynamicDrawUsage\"\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t</ngt-buffer-geometry>\n\t\t\t<ng-content />\n\t\t</ngt-points>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsPointsBuffer {\n\tpositions = input.required<Float32Array>();\n\tcolors = input<Float32Array>();\n\tsizes = input<Float32Array>();\n\tstride = input<2 | 3>(3);\n\toptions = input({} as Partial<NgtPositionPoint>);\n\n\tpointsRef = viewChild.required<ElementRef<Points>>('points');\n\n\tconstructor() {\n\t\textend({ Points, BufferAttribute, BufferGeometry });\n\n\t\tinjectBeforeRender(() => {\n\t\t\tconst points = this.pointsRef()?.nativeElement;\n\t\t\tif (!points) return;\n\n\t\t\tconst attributes = points.geometry.attributes;\n\t\t\tcheckUpdate(attributes['position']);\n\t\t\tif (this.colors()) checkUpdate(attributes['color']);\n\t\t\tif (this.sizes()) checkUpdate(attributes['size']);\n\t\t});\n\t}\n\n\tprotected readonly DynamicDrawUsage = DynamicDrawUsage;\n}\n\nconst parentMatrix = new Matrix4();\nconst position = new Vector3();\n\nexport interface NgtsPointsInstancesOptions extends Partial<NgtPoints> {\n\trange?: number;\n\tlimit: number;\n}\n\nconst defaultInstancesOptions: NgtsPointsInstancesOptions = { limit: 1000 };\n\n@Component({\n\tselector: 'ngts-points-instances',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-points\n\t\t\t#points\n\t\t\t[userData]=\"{ instances: positionPoints }\"\n\t\t\t[matrixAutoUpdate]=\"false\"\n\t\t\t[raycast]=\"null\"\n\t\t\t[parameters]=\"parameters()\"\n\t\t>\n\t\t\t<ngt-buffer-geometry>\n\t\t\t\t<ngt-buffer-attribute\n\t\t\t\t\tattach=\"attributes.position\"\n\t\t\t\t\t[count]=\"buffers().positions.length / 3\"\n\t\t\t\t\t[array]=\"buffers().positions\"\n\t\t\t\t\t[itemSize]=\"3\"\n\t\t\t\t\t[usage]=\"DynamicDrawUsage\"\n\t\t\t\t/>\n\t\t\t\t<ngt-buffer-attribute\n\t\t\t\t\tattach=\"attributes.color\"\n\t\t\t\t\t[count]=\"buffers().colors.length / 3\"\n\t\t\t\t\t[array]=\"buffers().colors\"\n\t\t\t\t\t[itemSize]=\"3\"\n\t\t\t\t\t[usage]=\"DynamicDrawUsage\"\n\t\t\t\t/>\n\t\t\t\t<ngt-buffer-attribute\n\t\t\t\t\tattach=\"attributes.size\"\n\t\t\t\t\t[count]=\"buffers().sizes.length\"\n\t\t\t\t\t[array]=\"buffers().sizes\"\n\t\t\t\t\t[itemSize]=\"1\"\n\t\t\t\t\t[usage]=\"DynamicDrawUsage\"\n\t\t\t\t/>\n\t\t\t</ngt-buffer-geometry>\n\t\t\t<ng-content />\n\t\t</ngt-points>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsPointsInstances {\n\toptions = input(defaultInstancesOptions, { transform: mergeInputs(defaultInstancesOptions) });\n\tparameters = omit(this.options, ['limit', 'range']);\n\n\tpointsRef = viewChild.required<ElementRef<Points>>('points');\n\n\tprivate limit = pick(this.options, 'limit');\n\n\tbuffers = computed(() => {\n\t\tconst limit = this.limit();\n\n\t\treturn {\n\t\t\tpositions: new Float32Array(limit * 3),\n\t\t\tcolors: Float32Array.from({ length: limit * 3 }, () => 1),\n\t\t\tsizes: Float32Array.from({ length: limit }, () => 1),\n\t\t};\n\t});\n\n\tpositionPoints: Array<ElementRef<PositionPoint> | PositionPoint> = [];\n\n\tconstructor() {\n\t\textend({ Points, BufferAttribute, BufferGeometry });\n\t\tconst autoEffect = injectAutoEffect();\n\n\t\tafterNextRender(() => {\n\t\t\tautoEffect(() => {\n\t\t\t\tconst points = this.pointsRef()?.nativeElement;\n\t\t\t\tif (!points) return;\n\t\t\t\tcheckUpdate(points.geometry.attributes['position']);\n\t\t\t});\n\t\t});\n\n\t\tinjectBeforeRender(() => {\n\t\t\tconst points = this.pointsRef()?.nativeElement;\n\t\t\tif (!points) return;\n\n\t\t\tconst { limit, range } = this.options();\n\t\t\tconst { positions, sizes, colors } = this.buffers();\n\n\t\t\tpoints.updateMatrix();\n\t\t\tpoints.updateMatrixWorld();\n\t\t\tparentMatrix.copy(points.matrixWorld).invert();\n\n\t\t\tpoints.geometry.drawRange.count = Math.min(\n\t\t\t\tlimit,\n\t\t\t\trange !== undefined ? range : limit,\n\t\t\t\tthis.positionPoints.length,\n\t\t\t);\n\n\t\t\tfor (let i = 0; i < this.positionPoints.length; i++) {\n\t\t\t\tconst positionPoint = resolveRef(this.positionPoints[i]);\n\t\t\t\tif (positionPoint) {\n\t\t\t\t\tpositionPoint.getWorldPosition(position).applyMatrix4(parentMatrix);\n\t\t\t\t\tposition.toArray(positions, i * 3);\n\t\t\t\t\tcheckUpdate(points.geometry.attributes['position']);\n\n\t\t\t\t\tpositionPoint.matrixWorldNeedsUpdate = true;\n\t\t\t\t\tpositionPoint.color.toArray(colors, i * 3);\n\t\t\t\t\tcheckUpdate(points.geometry.attributes['color']);\n\n\t\t\t\t\tsizes.set([positionPoint.size], i);\n\t\t\t\t\tcheckUpdate(points.geometry.attributes['size']);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tsubscribe(ref: ElementRef<PositionPoint> | PositionPoint) {\n\t\tthis.positionPoints.push(ref);\n\t\treturn () => {\n\t\t\tthis.positionPoints = this.positionPoints.filter((p) => p !== ref);\n\t\t};\n\t}\n\n\tprotected readonly DynamicDrawUsage = DynamicDrawUsage;\n}\n","import { NgtNode } from 'angular-three';\nimport { Color, Vector3 } from 'three';\n\nexport type NgtSegmentObject = NgtNode<SegmentObject, typeof SegmentObject>;\n\nexport class SegmentObject {\n\tcolor: Color;\n\tstart: Vector3;\n\tend: Vector3;\n\n\tconstructor() {\n\t\tthis.color = new Color('white');\n\t\tthis.start = new Vector3(0, 0, 0);\n\t\tthis.end = new Vector3(0, 0, 0);\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @rawOptions start|color|end\n\t\t */\n\t\t'ngt-segment-object': NgtSegmentObject;\n\t}\n}\n","import {\n\tafterNextRender,\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tElementRef,\n\tinject,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { extend, injectBeforeRender, NgtArgs, NgtVector3, omit, pick, resolveRef, vector3 } from 'angular-three';\nimport { injectAutoEffect } from 'ngxtension/auto-effect';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { ColorRepresentation, Vector2 } from 'three';\nimport { Line2, LineMaterial, LineMaterialParameters, LineSegmentsGeometry } from 'three-stdlib';\nimport { SegmentObject } from './segment-object';\n\n@Component({\n\tselector: 'ngts-segment',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-segment-object #segment [color]=\"color()\" [start]=\"normalizedStart()\" [end]=\"normalizedEnd()\" />\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsSegment {\n\tstart = input.required<NgtVector3>();\n\tend = input.required<NgtVector3>();\n\tcolor = input<ColorRepresentation>();\n\n\tnormalizedStart = vector3(this.start);\n\tnormalizedEnd = vector3(this.end);\n\n\tsegmentRef = viewChild.required<ElementRef<SegmentObject>>('segment');\n\n\tsegments = inject(NgtsSegments);\n\n\tconstructor() {\n\t\textend({ SegmentObject });\n\t\tconst autoEffect = injectAutoEffect();\n\n\t\tafterNextRender(() => {\n\t\t\tautoEffect(() => {\n\t\t\t\treturn this.segments.subscribe(this.segmentRef());\n\t\t\t});\n\t\t});\n\t}\n}\n\nexport interface NgtsSegmentsOptions extends LineMaterialParameters {\n\tlimit: number;\n\tlineWidth: number;\n}\n\nconst defaultSegmentsOptions: NgtsSegmentsOptions = {\n\tlimit: 1000,\n\tlineWidth: 1.0,\n};\n\n@Component({\n\tselector: 'ngts-segments',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-primitive #line *args=\"[line]\">\n\t\t\t<ngt-primitive *args=\"[geometry]\" attach=\"geometry\" />\n\t\t\t<ngt-primitive *args=\"[material]\" attach=\"material\" [parameters]=\"materialParameters()\" />\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsSegments {\n\toptions = input(defaultSegmentsOptions, { transform: mergeInputs(defaultSegmentsOptions) });\n\tparameters = omit(this.options, ['limit', 'lineWidth']);\n\n\tprivate lineWidth = pick(this.options, 'lineWidth');\n\tprivate limit = pick(this.options, 'limit');\n\n\tlineRef = viewChild<ElementRef<Line2>>('line');\n\n\tsegments: Array<ElementRef<SegmentObject> | SegmentObject> = [];\n\n\tline = new Line2();\n\tmaterial = new LineMaterial();\n\tgeometry = new LineSegmentsGeometry();\n\tresolution = new Vector2(512, 512);\n\n\tmaterialParameters = computed(() => ({\n\t\tvertexColors: true,\n\t\tresolution: this.resolution,\n\t\tlinewidth: this.lineWidth(),\n\t\t...this.parameters(),\n\t}));\n\n\tpositions = computed(() => {\n\t\tconst limit = this.limit();\n\t\treturn Array.from({ length: limit * 6 }, () => 0);\n\t});\n\tcolors = computed(() => {\n\t\tconst limit = this.limit();\n\t\treturn Array.from({ length: limit * 6 }, () => 0);\n\t});\n\n\tconstructor() {\n\t\tinjectBeforeRender(() => {\n\t\t\tconst [limit, positions, colors] = [this.limit(), this.positions(), this.colors()];\n\n\t\t\tfor (let i = 0; i < limit; i++) {\n\t\t\t\tconst segment = resolveRef(this.segments[i]);\n\t\t\t\tif (segment) {\n\t\t\t\t\tpositions[i * 6 + 0] = segment.start.x;\n\t\t\t\t\tpositions[i * 6 + 1] = segment.start.y;\n\t\t\t\t\tpositions[i * 6 + 2] = segment.start.z;\n\n\t\t\t\t\tpositions[i * 6 + 3] = segment.end.x;\n\t\t\t\t\tpositions[i * 6 + 4] = segment.end.y;\n\t\t\t\t\tpositions[i * 6 + 5] = segment.end.z;\n\n\t\t\t\t\tcolors[i * 6 + 0] = segment.color.r;\n\t\t\t\t\tcolors[i * 6 + 1] = segment.color.g;\n\t\t\t\t\tcolors[i * 6 + 2] = segment.color.b;\n\n\t\t\t\t\tcolors[i * 6 + 3] = segment.color.r;\n\t\t\t\t\tcolors[i * 6 + 4] = segment.color.g;\n\t\t\t\t\tcolors[i * 6 + 5] = segment.color.b;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.geometry.setColors(colors);\n\t\t\tthis.geometry.setPositions(positions);\n\t\t\tthis.line.computeLineDistances();\n\t\t});\n\t}\n\n\tsubscribe(ref: ElementRef<SegmentObject> | SegmentObject) {\n\t\tthis.segments.push(ref);\n\t\treturn () => {\n\t\t\tthis.segments = this.segments.filter((i) => i !== ref);\n\t\t};\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["defaultOptions","parentMatrix"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"angular-three-soba-performances.mjs","sources":["../../../../libs/soba/performances/src/lib/adaptive-dpr.ts","../../../../libs/soba/performances/src/lib/adaptive-events.ts","../../../../libs/soba/performances/src/lib/detailed.ts","../../../../libs/soba/performances/src/lib/instances/position-mesh.ts","../../../../libs/soba/performances/src/lib/instances/instances.ts","../../../../libs/soba/performances/src/lib/points/position-point.ts","../../../../libs/soba/performances/src/lib/points/points.ts","../../../../libs/soba/performances/src/lib/segments/segment-object.ts","../../../../libs/soba/performances/src/lib/segments/segments.ts","../../../../libs/soba/performances/src/angular-three-soba-performances.ts"],"sourcesContent":["import { DestroyRef, Directive, effect, inject, input, untracked } from '@angular/core';\nimport { injectStore } from 'angular-three';\n\n@Directive({ selector: 'ngts-adaptive-dpr', standalone: true })\nexport class NgtsAdaptiveDpr {\n\tpixelated = input(false);\n\n\tconstructor() {\n\t\tconst store = injectStore();\n\t\tconst gl = store.select('gl');\n\t\tconst active = store.select('internal', 'active');\n\t\tconst current = store.select('performance', 'current');\n\t\tconst initialDpr = store.select('viewport', 'initialDpr');\n\t\tconst setDpr = store.select('setDpr');\n\n\t\teffect(() => {\n\t\t\tconst [_current, pixelated, domElement, _setDpr, _initialDpr] = [\n\t\t\t\tcurrent(),\n\t\t\t\tuntracked(this.pixelated),\n\t\t\t\tuntracked(gl).domElement,\n\t\t\t\tuntracked(setDpr),\n\t\t\t\tuntracked(initialDpr),\n\t\t\t];\n\n\t\t\t_setDpr(_current * _initialDpr);\n\t\t\tif (pixelated && domElement) domElement.style.imageRendering = _current === 1 ? 'auto' : 'pixelated';\n\t\t});\n\n\t\tinject(DestroyRef).onDestroy(() => {\n\t\t\tconst [domElement, _active, _setDpr, _initialDpr, pixelated] = [\n\t\t\t\tuntracked(gl).domElement,\n\t\t\t\tuntracked(active),\n\t\t\t\tuntracked(setDpr),\n\t\t\t\tuntracked(initialDpr),\n\t\t\t\tuntracked(this.pixelated),\n\t\t\t];\n\n\t\t\tif (_active) _setDpr(_initialDpr);\n\t\t\tif (pixelated && domElement) domElement.style.imageRendering = 'auto';\n\t\t});\n\t}\n}\n","import { DestroyRef, Directive, effect, inject } from '@angular/core';\nimport { injectStore } from 'angular-three';\n\n@Directive({ standalone: true, selector: 'ngts-adaptive-events' })\nexport class NgtsAdaptiveEvents {\n\tconstructor() {\n\t\tconst store = injectStore();\n\t\tconst current = store.select('performance', 'current');\n\t\tconst currentEnabled = store.snapshot.events.enabled;\n\n\t\teffect((onCleanup) => {\n\t\t\tconst _current = current();\n\t\t\tonCleanup(() => store.snapshot.setEvents({ enabled: _current === 1 }));\n\t\t});\n\n\t\tinject(DestroyRef).onDestroy(() => {\n\t\t\tstore.snapshot.setEvents({ enabled: currentEnabled });\n\t\t});\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { extend, getLocalState, injectBeforeRender, NgtLOD, omit, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { LOD } from 'three';\n\nexport interface NgtsDetailedOptions extends Partial<NgtLOD> {\n\thysteresis: number;\n}\n\nconst defaultOptions: NgtsDetailedOptions = {\n\thysteresis: 0,\n};\n\n@Component({\n\tselector: 'ngts-detailed',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-lOD #lod [parameters]=\"parameters()\">\n\t\t\t<ng-content />\n\t\t</ngt-lOD>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsDetailed {\n\tdistances = input.required<number[]>();\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = omit(this.options, ['hysteresis']);\n\n\tlodRef = viewChild.required<ElementRef<LOD>>('lod');\n\tprivate hysteresis = pick(this.options, 'hysteresis');\n\n\tconstructor() {\n\t\textend({ LOD });\n\n\t\teffect(() => {\n\t\t\tconst lod = this.lodRef().nativeElement;\n\t\t\tconst localState = getLocalState(lod);\n\t\t\tif (!localState) return;\n\t\t\tconst [, distances, hysteresis] = [localState.objects(), this.distances(), this.hysteresis()];\n\t\t\tlod.levels.length = 0;\n\t\t\tlod.children.forEach((object, index) => {\n\t\t\t\tlod.levels.push({ object, distance: distances[index], hysteresis });\n\t\t\t});\n\t\t});\n\n\t\tinjectBeforeRender(({ camera }) => {\n\t\t\tthis.lodRef().nativeElement.update(camera);\n\t\t});\n\t}\n}\n","import { ElementRef } from '@angular/core';\nimport { NgtObject3DNode, resolveRef } from 'angular-three';\nimport {\n\tBufferGeometry,\n\tColor,\n\tGroup,\n\tInstancedMesh,\n\tIntersection,\n\tMaterial,\n\tMatrix4,\n\tMesh,\n\tMeshBasicMaterial,\n\tRaycaster,\n} from 'three';\n\nexport type NgtPositionMesh = NgtObject3DNode<PositionMesh, typeof PositionMesh>;\n\nconst _instanceLocalMatrix = new Matrix4();\nconst _instanceWorldMatrix = new Matrix4();\nconst _instanceIntersects: Intersection[] = [];\nconst _mesh = new Mesh<BufferGeometry, MeshBasicMaterial>();\n\nexport class PositionMesh extends Group {\n\tcolor: Color;\n\tinstance: ElementRef<InstancedMesh> | InstancedMesh | null | undefined;\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.color = new Color('white');\n\t\tthis.instance = undefined;\n\t}\n\n\t// This will allow the virtual instance have bounds\n\tget geometry() {\n\t\treturn resolveRef(this.instance)?.geometry;\n\t}\n\n\t// And this will allow the virtual instance to receive events\n\toverride raycast(raycaster: Raycaster, intersects: Intersection[]) {\n\t\tconst parent = resolveRef(this.instance);\n\t\tif (!parent) return;\n\t\tif (!parent.geometry || !parent.material) return;\n\t\t_mesh.geometry = parent.geometry;\n\t\tconst matrixWorld = parent.matrixWorld;\n\t\tconst instanceId = parent.userData['instances'].indexOf(this);\n\t\t// If the instance wasn't found or exceeds the parents draw range, bail out\n\t\tif (instanceId === -1 || instanceId > parent.count) return;\n\t\t// calculate the world matrix for each instance\n\t\tparent.getMatrixAt(instanceId, _instanceLocalMatrix);\n\t\t_instanceWorldMatrix.multiplyMatrices(matrixWorld, _instanceLocalMatrix);\n\t\t// the mesh represents this single instance\n\t\t_mesh.matrixWorld = _instanceWorldMatrix;\n\t\t// raycast side according to instance material\n\t\tif (parent.material instanceof Material) _mesh.material.side = parent.material.side;\n\t\telse _mesh.material.side = parent.material[0].side;\n\t\t_mesh.raycast(raycaster, _instanceIntersects);\n\t\t// process the result of raycast\n\t\tfor (let i = 0, l = _instanceIntersects.length; i < l; i++) {\n\t\t\tconst intersect = _instanceIntersects[i];\n\t\t\tintersect.instanceId = instanceId;\n\t\t\tintersect.object = this;\n\t\t\tintersects.push(intersect);\n\t\t}\n\t\t_instanceIntersects.length = 0;\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @extends ngt-group\n\t\t * @rawOptions instance|color\n\t\t */\n\t\t'ngt-position-mesh': NgtPositionMesh;\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinject,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport {\n\tcheckUpdate,\n\textend,\n\tinjectBeforeRender,\n\tNgtArgs,\n\tNgtInstancedMesh,\n\tomit,\n\tpick,\n\tresolveRef,\n} from 'angular-three';\nimport { setUpdateRange } from 'angular-three-soba/misc';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { DynamicDrawUsage, InstancedBufferAttribute, InstancedMesh, Matrix4, Quaternion, Vector3 } from 'three';\nimport { NgtPositionMesh, PositionMesh } from './position-mesh';\n\nconst parentMatrix = new Matrix4();\nconst instanceMatrix = new Matrix4();\nconst tempMatrix = new Matrix4();\nconst translation = new Vector3();\nconst rotation = new Quaternion();\nconst scale = new Vector3();\n\n@Component({\n\tselector: 'ngts-instance',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-position-mesh #positionMesh [instance]=\"instances.instancedMeshRef()\" [parameters]=\"options()\">\n\t\t\t<ng-content />\n\t\t</ngt-position-mesh>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsInstance {\n\toptions = input({} as Partial<NgtPositionMesh>);\n\n\tinstances = inject(NgtsInstances);\n\n\tpositionMeshRef = viewChild.required<ElementRef<PositionMesh>>('positionMesh');\n\n\tconstructor() {\n\t\textend({ PositionMesh });\n\n\t\teffect((onCleanup) => {\n\t\t\tconst cleanup = this.instances.subscribe(this.positionMeshRef().nativeElement);\n\t\t\tonCleanup(() => cleanup());\n\t\t});\n\t}\n}\n\nexport interface NgtsInstancesOptions extends Partial<NgtInstancedMesh> {\n\trange?: number;\n\tlimit: number;\n\tframes: number;\n}\n\nconst defaultOptions: NgtsInstancesOptions = {\n\tlimit: 1000,\n\tframes: Infinity,\n};\n\n@Component({\n\tselector: 'ngts-instances',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-instanced-mesh\n\t\t\t#instancedMesh\n\t\t\t[userData]=\"{ instances }\"\n\t\t\t[matrixAutoUpdate]=\"false\"\n\t\t\t[raycast]=\"null\"\n\t\t\t[parameters]=\"parameters()\"\n\t\t>\n\t\t\t<ngt-instanced-buffer-attribute\n\t\t\t\tattach=\"instanceMatrix\"\n\t\t\t\t[usage]=\"DynamicDrawUsage\"\n\t\t\t\t[count]=\"buffers().matrices.length / 16\"\n\t\t\t\t[array]=\"buffers().matrices\"\n\t\t\t\t[itemSize]=\"16\"\n\t\t\t/>\n\t\t\t<ngt-instanced-buffer-attribute\n\t\t\t\tattach=\"instanceColor\"\n\t\t\t\t[usage]=\"DynamicDrawUsage\"\n\t\t\t\t[count]=\"buffers().colors.length / 3\"\n\t\t\t\t[array]=\"buffers().colors\"\n\t\t\t\t[itemSize]=\"3\"\n\t\t\t/>\n\t\t\t<ng-content />\n\t\t</ngt-instanced-mesh>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsInstances {\n\tprotected readonly DynamicDrawUsage = DynamicDrawUsage;\n\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, ['limit', 'frames', 'range']);\n\n\tinstancedMeshRef = viewChild.required<ElementRef<InstancedMesh>>('instancedMesh');\n\n\tprivate limit = pick(this.options, 'limit');\n\n\tprotected buffers = computed(() => {\n\t\tconst limit = this.limit();\n\t\tconst matrices = new Float32Array(limit * 16);\n\n\t\tfor (let i = 0; i < limit; i++) {\n\t\t\ttempMatrix.identity().toArray(matrices, i * 16);\n\t\t}\n\n\t\tconst colors = new Float32Array([...Array.from({ length: limit * 3 }, () => 1)]);\n\t\treturn { matrices, colors };\n\t});\n\n\tinstances: Array<ElementRef<PositionMesh> | PositionMesh> = [];\n\n\tconstructor() {\n\t\textend({ InstancedMesh, InstancedBufferAttribute });\n\n\t\teffect(() => {\n\t\t\tconst instancedMesh = this.instancedMeshRef()?.nativeElement;\n\t\t\tif (!instancedMesh) return;\n\t\t\tcheckUpdate(instancedMesh.instanceMatrix);\n\t\t});\n\n\t\tlet iterations = 0;\n\t\tlet count = 0;\n\n\t\tinjectBeforeRender(() => {\n\t\t\tconst instancedMesh = this.instancedMeshRef()?.nativeElement;\n\t\t\tif (!instancedMesh) return;\n\t\t\tconst { frames, limit, range } = this.options();\n\t\t\tconst { matrices, colors } = this.buffers();\n\t\t\tif (frames === Infinity || iterations < frames) {\n\t\t\t\tinstancedMesh.updateMatrix();\n\t\t\t\tinstancedMesh.updateMatrixWorld();\n\t\t\t\tparentMatrix.copy(instancedMesh.matrixWorld).invert();\n\n\t\t\t\tcount = Math.min(limit, range !== undefined ? range : limit, this.instances.length);\n\t\t\t\tinstancedMesh.count = count;\n\t\t\t\tsetUpdateRange(instancedMesh.instanceMatrix, { offset: 0, count: count * 16 });\n\t\t\t\tif (instancedMesh.instanceColor) {\n\t\t\t\t\tsetUpdateRange(instancedMesh.instanceColor, { offset: 0, count: count * 3 });\n\t\t\t\t}\n\n\t\t\t\tfor (let i = 0; i < this.instances.length; i++) {\n\t\t\t\t\tconst instance = resolveRef(this.instances[i]);\n\t\t\t\t\tif (instance) {\n\t\t\t\t\t\t// Multiply the inverse of the InstancedMesh world matrix or else\n\t\t\t\t\t\t// Instances will be double-transformed if <Instances> isn't at identity\n\t\t\t\t\t\tinstance.matrixWorld.decompose(translation, rotation, scale);\n\t\t\t\t\t\tinstanceMatrix.compose(translation, rotation, scale).premultiply(parentMatrix);\n\t\t\t\t\t\tinstanceMatrix.toArray(matrices, i * 16);\n\t\t\t\t\t\tcheckUpdate(instancedMesh.instanceMatrix);\n\t\t\t\t\t\tinstance.color.toArray(colors, i * 3);\n\t\t\t\t\t\tcheckUpdate(instancedMesh.instanceColor);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\titerations++;\n\t\t\t}\n\t\t});\n\t}\n\n\tsubscribe(ref: ElementRef<PositionMesh> | PositionMesh) {\n\t\tthis.instances.push(ref);\n\t\treturn () => {\n\t\t\tthis.instances = this.instances.filter((i) => i !== ref);\n\t\t};\n\t}\n}\n","import { ElementRef } from '@angular/core';\nimport { NgtObject3DNode, resolveRef } from 'angular-three';\nimport { Color, Group, Intersection, Matrix4, Points, Ray, Raycaster, Sphere, Vector3 } from 'three';\n\nexport type NgtPositionPoint = NgtObject3DNode<PositionPoint, typeof PositionPoint>;\n\nconst _inverseMatrix = new Matrix4();\nconst _ray = new Ray();\nconst _sphere = new Sphere();\nconst _position = new Vector3();\n\nexport class PositionPoint extends Group {\n\tsize: number;\n\tcolor: Color;\n\tinstance: ElementRef<Points> | Points | null | undefined;\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.size = 0;\n\t\tthis.color = new Color('white');\n\t\tthis.instance = undefined;\n\t}\n\n\t// This will allow the virtual instance have bounds\n\tget geometry() {\n\t\treturn resolveRef(this.instance)?.geometry;\n\t}\n\n\toverride raycast(raycaster: Raycaster, intersects: Intersection[]) {\n\t\tconst parent = resolveRef(this.instance);\n\t\tif (!parent || !parent.geometry) return;\n\t\tconst instanceId = parent.userData['instances'].indexOf(this);\n\t\t// If the instance wasn't found or exceeds the parents draw range, bail out\n\t\tif (instanceId === -1 || instanceId > parent.geometry.drawRange.count) return;\n\n\t\tconst threshold = raycaster.params.Points?.threshold ?? 1;\n\t\t_sphere.set(this.getWorldPosition(_position), threshold);\n\t\tif (raycaster.ray.intersectsSphere(_sphere) === false) return;\n\n\t\t_inverseMatrix.copy(parent.matrixWorld).invert();\n\t\t_ray.copy(raycaster.ray).applyMatrix4(_inverseMatrix);\n\n\t\tconst localThreshold = threshold / ((this.scale.x + this.scale.y + this.scale.z) / 3);\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\t\tconst rayPointDistanceSq = _ray.distanceSqToPoint(this.position);\n\n\t\tif (rayPointDistanceSq < localThresholdSq) {\n\t\t\tconst intersectPoint = new Vector3();\n\t\t\t_ray.closestPointToPoint(this.position, intersectPoint);\n\t\t\tintersectPoint.applyMatrix4(this.matrixWorld);\n\t\t\tconst distance = raycaster.ray.origin.distanceTo(intersectPoint);\n\t\t\tif (distance < raycaster.near || distance > raycaster.far) return;\n\t\t\tintersects.push({\n\t\t\t\tdistance: distance,\n\t\t\t\tdistanceToRay: Math.sqrt(rayPointDistanceSq),\n\t\t\t\tpoint: intersectPoint,\n\t\t\t\tindex: instanceId,\n\t\t\t\tface: null,\n\t\t\t\tobject: this,\n\t\t\t});\n\t\t}\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @extends ngt-group\n\t\t * @rawOptions instance|color|size\n\t\t */\n\t\t'ngt-position-point': NgtPositionPoint;\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinject,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { checkUpdate, extend, injectBeforeRender, NgtPoints, omit, pick, resolveRef } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { BufferAttribute, BufferGeometry, DynamicDrawUsage, Matrix4, Points, Vector3 } from 'three';\nimport { NgtPositionPoint, PositionPoint } from './position-point';\n\n@Component({\n\tselector: 'ngts-point',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-position-point #positionPoint [parameters]=\"options()\" [instance]=\"points.pointsRef()\">\n\t\t\t<ng-content />\n\t\t</ngt-position-point>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsPoint {\n\toptions = input({} as Partial<NgtPositionPoint>);\n\n\tpositionPointRef = viewChild.required<ElementRef<PositionPoint>>('positionPoint');\n\n\tpoints = inject(NgtsPointsInstances);\n\n\tconstructor() {\n\t\textend({ PositionPoint });\n\n\t\teffect((onCleanup) => {\n\t\t\tconst cleanUp = this.points.subscribe(this.positionPointRef().nativeElement);\n\t\t\tonCleanup(() => cleanUp());\n\t\t});\n\t}\n}\n\n@Component({\n\tselector: 'ngts-points-buffer',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-points #points [parameters]=\"options()\">\n\t\t\t<ngt-buffer-geometry>\n\t\t\t\t<ngt-buffer-attribute\n\t\t\t\t\tattach=\"attributes.position\"\n\t\t\t\t\t[count]=\"positions().length / stride()\"\n\t\t\t\t\t[array]=\"positions()\"\n\t\t\t\t\t[itemSize]=\"stride()\"\n\t\t\t\t\t[usage]=\"DynamicDrawUsage\"\n\t\t\t\t/>\n\t\t\t\t@if (colors(); as colors) {\n\t\t\t\t\t<ngt-buffer-attribute\n\t\t\t\t\t\tattach=\"attributes.color\"\n\t\t\t\t\t\t[count]=\"colors.length / stride()\"\n\t\t\t\t\t\t[array]=\"colors\"\n\t\t\t\t\t\t[itemSize]=\"3\"\n\t\t\t\t\t\t[usage]=\"DynamicDrawUsage\"\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t\t@if (sizes(); as sizes) {\n\t\t\t\t\t<ngt-buffer-attribute\n\t\t\t\t\t\tattach=\"attributes.size\"\n\t\t\t\t\t\t[count]=\"sizes.length / stride()\"\n\t\t\t\t\t\t[array]=\"sizes\"\n\t\t\t\t\t\t[itemSize]=\"1\"\n\t\t\t\t\t\t[usage]=\"DynamicDrawUsage\"\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t</ngt-buffer-geometry>\n\t\t\t<ng-content />\n\t\t</ngt-points>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsPointsBuffer {\n\tpositions = input.required<Float32Array>();\n\tcolors = input<Float32Array>();\n\tsizes = input<Float32Array>();\n\tstride = input<2 | 3>(3);\n\toptions = input({} as Partial<NgtPositionPoint>);\n\n\tpointsRef = viewChild.required<ElementRef<Points>>('points');\n\n\tconstructor() {\n\t\textend({ Points, BufferAttribute, BufferGeometry });\n\n\t\tinjectBeforeRender(() => {\n\t\t\tconst points = this.pointsRef()?.nativeElement;\n\t\t\tif (!points) return;\n\n\t\t\tconst attributes = points.geometry.attributes;\n\t\t\tcheckUpdate(attributes['position']);\n\t\t\tif (this.colors()) checkUpdate(attributes['color']);\n\t\t\tif (this.sizes()) checkUpdate(attributes['size']);\n\t\t});\n\t}\n\n\tprotected readonly DynamicDrawUsage = DynamicDrawUsage;\n}\n\nconst parentMatrix = new Matrix4();\nconst position = new Vector3();\n\nexport interface NgtsPointsInstancesOptions extends Partial<NgtPoints> {\n\trange?: number;\n\tlimit: number;\n}\n\nconst defaultInstancesOptions: NgtsPointsInstancesOptions = { limit: 1000 };\n\n@Component({\n\tselector: 'ngts-points-instances',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-points\n\t\t\t#points\n\t\t\t[userData]=\"{ instances: positionPoints }\"\n\t\t\t[matrixAutoUpdate]=\"false\"\n\t\t\t[raycast]=\"null\"\n\t\t\t[parameters]=\"parameters()\"\n\t\t>\n\t\t\t<ngt-buffer-geometry>\n\t\t\t\t<ngt-buffer-attribute\n\t\t\t\t\tattach=\"attributes.position\"\n\t\t\t\t\t[count]=\"buffers().positions.length / 3\"\n\t\t\t\t\t[array]=\"buffers().positions\"\n\t\t\t\t\t[itemSize]=\"3\"\n\t\t\t\t\t[usage]=\"DynamicDrawUsage\"\n\t\t\t\t/>\n\t\t\t\t<ngt-buffer-attribute\n\t\t\t\t\tattach=\"attributes.color\"\n\t\t\t\t\t[count]=\"buffers().colors.length / 3\"\n\t\t\t\t\t[array]=\"buffers().colors\"\n\t\t\t\t\t[itemSize]=\"3\"\n\t\t\t\t\t[usage]=\"DynamicDrawUsage\"\n\t\t\t\t/>\n\t\t\t\t<ngt-buffer-attribute\n\t\t\t\t\tattach=\"attributes.size\"\n\t\t\t\t\t[count]=\"buffers().sizes.length\"\n\t\t\t\t\t[array]=\"buffers().sizes\"\n\t\t\t\t\t[itemSize]=\"1\"\n\t\t\t\t\t[usage]=\"DynamicDrawUsage\"\n\t\t\t\t/>\n\t\t\t</ngt-buffer-geometry>\n\t\t\t<ng-content />\n\t\t</ngt-points>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsPointsInstances {\n\toptions = input(defaultInstancesOptions, { transform: mergeInputs(defaultInstancesOptions) });\n\tparameters = omit(this.options, ['limit', 'range']);\n\n\tpointsRef = viewChild.required<ElementRef<Points>>('points');\n\n\tprivate limit = pick(this.options, 'limit');\n\n\tbuffers = computed(() => {\n\t\tconst limit = this.limit();\n\n\t\treturn {\n\t\t\tpositions: new Float32Array(limit * 3),\n\t\t\tcolors: Float32Array.from({ length: limit * 3 }, () => 1),\n\t\t\tsizes: Float32Array.from({ length: limit }, () => 1),\n\t\t};\n\t});\n\n\tpositionPoints: Array<ElementRef<PositionPoint> | PositionPoint> = [];\n\n\tconstructor() {\n\t\textend({ Points, BufferAttribute, BufferGeometry });\n\n\t\teffect(() => {\n\t\t\tconst points = this.pointsRef()?.nativeElement;\n\t\t\tif (!points) return;\n\t\t\tcheckUpdate(points.geometry.attributes['position']);\n\t\t});\n\n\t\tinjectBeforeRender(() => {\n\t\t\tconst points = this.pointsRef()?.nativeElement;\n\t\t\tif (!points) return;\n\n\t\t\tconst { limit, range } = this.options();\n\t\t\tconst { positions, sizes, colors } = this.buffers();\n\n\t\t\tpoints.updateMatrix();\n\t\t\tpoints.updateMatrixWorld();\n\t\t\tparentMatrix.copy(points.matrixWorld).invert();\n\n\t\t\tpoints.geometry.drawRange.count = Math.min(\n\t\t\t\tlimit,\n\t\t\t\trange !== undefined ? range : limit,\n\t\t\t\tthis.positionPoints.length,\n\t\t\t);\n\n\t\t\tfor (let i = 0; i < this.positionPoints.length; i++) {\n\t\t\t\tconst positionPoint = resolveRef(this.positionPoints[i]);\n\t\t\t\tif (positionPoint) {\n\t\t\t\t\tpositionPoint.getWorldPosition(position).applyMatrix4(parentMatrix);\n\t\t\t\t\tposition.toArray(positions, i * 3);\n\t\t\t\t\tcheckUpdate(points.geometry.attributes['position']);\n\n\t\t\t\t\tpositionPoint.matrixWorldNeedsUpdate = true;\n\t\t\t\t\tpositionPoint.color.toArray(colors, i * 3);\n\t\t\t\t\tcheckUpdate(points.geometry.attributes['color']);\n\n\t\t\t\t\tsizes.set([positionPoint.size], i);\n\t\t\t\t\tcheckUpdate(points.geometry.attributes['size']);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tsubscribe(ref: ElementRef<PositionPoint> | PositionPoint) {\n\t\tthis.positionPoints.push(ref);\n\t\treturn () => {\n\t\t\tthis.positionPoints = this.positionPoints.filter((p) => p !== ref);\n\t\t};\n\t}\n\n\tprotected readonly DynamicDrawUsage = DynamicDrawUsage;\n}\n","import { NgtNode } from 'angular-three';\nimport { Color, Vector3 } from 'three';\n\nexport type NgtSegmentObject = NgtNode<SegmentObject, typeof SegmentObject>;\n\nexport class SegmentObject {\n\tcolor: Color;\n\tstart: Vector3;\n\tend: Vector3;\n\n\tconstructor() {\n\t\tthis.color = new Color('white');\n\t\tthis.start = new Vector3(0, 0, 0);\n\t\tthis.end = new Vector3(0, 0, 0);\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @rawOptions start|color|end\n\t\t */\n\t\t'ngt-segment-object': NgtSegmentObject;\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinject,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { extend, injectBeforeRender, NgtArgs, NgtVector3, omit, pick, resolveRef, vector3 } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { ColorRepresentation, Vector2 } from 'three';\nimport { Line2, LineMaterial, LineMaterialParameters, LineSegmentsGeometry } from 'three-stdlib';\nimport { SegmentObject } from './segment-object';\n\n@Component({\n\tselector: 'ngts-segment',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-segment-object #segment [color]=\"color()\" [start]=\"normalizedStart()\" [end]=\"normalizedEnd()\" />\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsSegment {\n\tstart = input.required<NgtVector3>();\n\tend = input.required<NgtVector3>();\n\tcolor = input<ColorRepresentation>();\n\n\tnormalizedStart = vector3(this.start);\n\tnormalizedEnd = vector3(this.end);\n\n\tsegmentRef = viewChild.required<ElementRef<SegmentObject>>('segment');\n\n\tsegments = inject(NgtsSegments);\n\n\tconstructor() {\n\t\textend({ SegmentObject });\n\n\t\teffect((onCleanup) => {\n\t\t\tconst cleanUp = this.segments.subscribe(this.segmentRef());\n\t\t\tonCleanup(() => cleanUp());\n\t\t});\n\t}\n}\n\nexport interface NgtsSegmentsOptions extends LineMaterialParameters {\n\tlimit: number;\n\tlineWidth: number;\n}\n\nconst defaultSegmentsOptions: NgtsSegmentsOptions = {\n\tlimit: 1000,\n\tlineWidth: 1.0,\n};\n\n@Component({\n\tselector: 'ngts-segments',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-primitive #line *args=\"[line]\">\n\t\t\t<ngt-primitive *args=\"[geometry]\" attach=\"geometry\" />\n\t\t\t<ngt-primitive *args=\"[material]\" attach=\"material\" [parameters]=\"materialParameters()\" />\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsSegments {\n\toptions = input(defaultSegmentsOptions, { transform: mergeInputs(defaultSegmentsOptions) });\n\tparameters = omit(this.options, ['limit', 'lineWidth']);\n\n\tprivate lineWidth = pick(this.options, 'lineWidth');\n\tprivate limit = pick(this.options, 'limit');\n\n\tlineRef = viewChild<ElementRef<Line2>>('line');\n\n\tsegments: Array<ElementRef<SegmentObject> | SegmentObject> = [];\n\n\tline = new Line2();\n\tmaterial = new LineMaterial();\n\tgeometry = new LineSegmentsGeometry();\n\tresolution = new Vector2(512, 512);\n\n\tmaterialParameters = computed(() => ({\n\t\tvertexColors: true,\n\t\tresolution: this.resolution,\n\t\tlinewidth: this.lineWidth(),\n\t\t...this.parameters(),\n\t}));\n\n\tpositions = computed(() => {\n\t\tconst limit = this.limit();\n\t\treturn Array.from({ length: limit * 6 }, () => 0);\n\t});\n\tcolors = computed(() => {\n\t\tconst limit = this.limit();\n\t\treturn Array.from({ length: limit * 6 }, () => 0);\n\t});\n\n\tconstructor() {\n\t\tinjectBeforeRender(() => {\n\t\t\tconst [limit, positions, colors] = [this.limit(), this.positions(), this.colors()];\n\n\t\t\tfor (let i = 0; i < limit; i++) {\n\t\t\t\tconst segment = resolveRef(this.segments[i]);\n\t\t\t\tif (segment) {\n\t\t\t\t\tpositions[i * 6 + 0] = segment.start.x;\n\t\t\t\t\tpositions[i * 6 + 1] = segment.start.y;\n\t\t\t\t\tpositions[i * 6 + 2] = segment.start.z;\n\n\t\t\t\t\tpositions[i * 6 + 3] = segment.end.x;\n\t\t\t\t\tpositions[i * 6 + 4] = segment.end.y;\n\t\t\t\t\tpositions[i * 6 + 5] = segment.end.z;\n\n\t\t\t\t\tcolors[i * 6 + 0] = segment.color.r;\n\t\t\t\t\tcolors[i * 6 + 1] = segment.color.g;\n\t\t\t\t\tcolors[i * 6 + 2] = segment.color.b;\n\n\t\t\t\t\tcolors[i * 6 + 3] = segment.color.r;\n\t\t\t\t\tcolors[i * 6 + 4] = segment.color.g;\n\t\t\t\t\tcolors[i * 6 + 5] = segment.color.b;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.geometry.setColors(colors);\n\t\t\tthis.geometry.setPositions(positions);\n\t\t\tthis.line.computeLineDistances();\n\t\t});\n\t}\n\n\tsubscribe(ref: ElementRef<SegmentObject> | SegmentObject) {\n\t\tthis.segments.push(ref);\n\t\treturn () => {\n\t\t\tthis.segments = this.segments.filter((i) => i !== ref);\n\t\t};\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["defaultOptions","parentMatrix"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"angular-three-soba-shaders.mjs","sources":["../../../../libs/soba/shaders/src/lib/grid-material.ts","../../../../libs/soba/shaders/src/lib/mesh-refraction-material.ts","../../../../libs/soba/shaders/src/lib/point-material.ts","../../../../libs/soba/shaders/src/angular-three-soba-shaders.ts"],"sourcesContent":["import { NgtMaterial } from 'angular-three';\nimport { getVersion } from 'angular-three-soba/misc';\nimport { shaderMaterial } from 'angular-three-soba/vanilla-exports';\nimport { Color, ColorRepresentation, Side, Vector3 } from 'three';\n\nexport interface GridMaterialOptions {\n\t/** Cell size, default: 0.5 */\n\tcellSize: number;\n\t/** Cell thickness, default: 0.5 */\n\tcellThickness: number;\n\t/** Cell color, default: black */\n\tcellColor: ColorRepresentation;\n\t/** Section size, default: 1 */\n\tsectionSize: number;\n\t/** Section thickness, default: 1 */\n\tsectionThickness: number;\n\t/** Section color, default: #2080ff */\n\tsectionColor: ColorRepresentation;\n\t/** Follow camera, default: false */\n\tfollowCamera: boolean;\n\t/** Display the grid infinitely, default: false */\n\tinfiniteGrid: boolean;\n\t/** Fade distance, default: 100 */\n\tfadeDistance: number;\n\t/** Fade strength, default: 1 */\n\tfadeStrength: number;\n\t/** Fade from camera (1) or origin (0), or somewhere in between, default: camera */\n\tfadeFrom: number;\n\t/** Material side, default: THREE.BackSide */\n\tside: Side;\n}\n\nexport const GridMaterial = shaderMaterial(\n\t{\n\t\tcellSize: 0.5,\n\t\tsectionSize: 1,\n\t\tfadeDistance: 100,\n\t\tfadeStrength: 1,\n\t\tfadeFrom: 1,\n\t\tcellThickness: 0.5,\n\t\tsectionThickness: 1,\n\t\tcellColor: new Color(),\n\t\tsectionColor: new Color(),\n\t\tinfiniteGrid: false,\n\t\tfollowCamera: false,\n\t\tworldCamProjPosition: new Vector3(),\n\t\tworldPlanePosition: new Vector3(),\n\t},\n\t/* language=glsl glsl */ `\n varying vec3 localPosition;\n varying vec4 worldPosition;\n\n uniform vec3 worldCamProjPosition;\n uniform vec3 worldPlanePosition;\n uniform float fadeDistance;\n uniform bool infiniteGrid;\n uniform bool followCamera;\n\n void main() {\n localPosition = position.xzy;\n if (infiniteGrid) localPosition *= 1.0 + fadeDistance;\n\n worldPosition = modelMatrix * vec4(localPosition, 1.0);\n if (followCamera) {\n worldPosition.xyz += (worldCamProjPosition - worldPlanePosition);\n localPosition = (inverse(modelMatrix) * worldPosition).xyz;\n }\n\n gl_Position = projectionMatrix * viewMatrix * worldPosition;\n }\n `,\n\t/* language=glsl glsl */ `\n varying vec3 localPosition;\n varying vec4 worldPosition;\n\n uniform vec3 worldCamProjPosition;\n uniform float cellSize;\n uniform float sectionSize;\n uniform vec3 cellColor;\n uniform vec3 sectionColor;\n uniform float fadeDistance;\n uniform float fadeStrength;\n uniform float fadeFrom;\n uniform float cellThickness;\n uniform float sectionThickness;\n\n float getGrid(float size, float thickness) {\n vec2 r = localPosition.xz / size;\n vec2 grid = abs(fract(r - 0.5) - 0.5) / fwidth(r);\n float line = min(grid.x, grid.y) + 1.0 - thickness;\n return 1.0 - min(line, 1.0);\n }\n\n void main() {\n float g1 = getGrid(cellSize, cellThickness);\n float g2 = getGrid(sectionSize, sectionThickness);\n\n vec3 from = worldCamProjPosition*vec3(fadeFrom);\n float dist = distance(from, worldPosition.xyz);\n float d = 1.0 - min(dist / fadeDistance, 1.0);\n vec3 color = mix(cellColor, sectionColor, min(1.0, sectionThickness * g2));\n\n gl_FragColor = vec4(color, (g1 + g2) * pow(d, fadeStrength));\n gl_FragColor.a = mix(0.75 * gl_FragColor.a, gl_FragColor.a, g2);\n if (gl_FragColor.a <= 0.0) discard;\n\n #include <tonemapping_fragment>\n #include <${getVersion() >= 154 ? 'colorspace_fragment' : 'encodings_fragment'}>\n }\n `,\n);\n\nexport type NgtGridMaterial = NgtMaterial<InstanceType<typeof GridMaterial>, [GridMaterialOptions]>;\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @extends ngt-shader-material\n\t\t * @options GridMaterialOptions\n\t\t */\n\t\t'ngt-grid-material': NgtGridMaterial;\n\t}\n}\n","import { getVersion } from 'angular-three-soba/misc';\nimport { shaderMaterial } from 'angular-three-soba/vanilla-exports';\nimport * as THREE from 'three';\nimport { MeshBVHUniformStruct, shaderIntersectFunction, shaderStructs } from 'three-mesh-bvh';\n\ndeclare module 'three-mesh-bvh' {\n\tconst shaderIntersectFunction: string;\n}\n\nexport const MeshRefractionMaterial = shaderMaterial(\n\t{\n\t\tenvMap: null,\n\t\tbounces: 3,\n\t\tior: 2.4,\n\t\tcorrectMips: true,\n\t\taberrationStrength: 0.01,\n\t\tfresnel: 0,\n\t\t// @ts-expect-error - UniformValue from pmndrs/vanilla does not include MeshBVHUniformStruct\n\t\tbvh: new MeshBVHUniformStruct(),\n\t\tcolor: new THREE.Color('white'),\n\t\topacity: 1,\n\t\tresolution: new THREE.Vector2(),\n\t\tviewMatrixInverse: new THREE.Matrix4(),\n\t\tprojectionMatrixInverse: new THREE.Matrix4(),\n\t},\n\t/* language=glsl glsl */ `\n uniform mat4 viewMatrixInverse;\n\n varying vec3 vWorldPosition;\n varying vec3 vNormal;\n varying mat4 vModelMatrixInverse;\n\n #include <color_pars_vertex>\n\n void main() {\n #include <color_vertex>\n\n vec4 transformedNormal = vec4(normal, 0.0);\n vec4 transformedPosition = vec4(position, 1.0);\n #ifdef USE_INSTANCING\n transformedNormal = instanceMatrix * transformedNormal;\n transformedPosition = instanceMatrix * transformedPosition;\n #endif\n\n #ifdef USE_INSTANCING\n vModelMatrixInverse = inverse(modelMatrix * instanceMatrix);\n #else\n vModelMatrixInverse = inverse(modelMatrix);\n #endif\n\n vWorldPosition = (modelMatrix * transformedPosition).xyz;\n vNormal = normalize((viewMatrixInverse * vec4(normalMatrix * transformedNormal.xyz, 0.0)).xyz);\n gl_Position = projectionMatrix * viewMatrix * modelMatrix * transformedPosition;\n }`,\n\t/* language=glsl glsl */ `\n #define ENVMAP_TYPE_CUBE_UV\n precision highp isampler2D;\n precision highp usampler2D;\n varying vec3 vWorldPosition;\n varying vec3 vNormal;\n varying mat4 vModelMatrixInverse;\n\n #include <color_pars_fragment>\n\n #ifdef ENVMAP_TYPE_CUBEM\n uniform samplerCube envMap;\n #else\n uniform sampler2D envMap;\n #endif\n\n uniform float bounces;\n ${shaderStructs}\n ${shaderIntersectFunction}\n uniform BVH bvh;\n uniform float ior;\n uniform bool correctMips;\n uniform vec2 resolution;\n uniform float fresnel;\n uniform mat4 modelMatrix;\n uniform mat4 projectionMatrixInverse;\n uniform mat4 viewMatrixInverse;\n uniform float aberrationStrength;\n uniform vec3 color;\n uniform float opacity;\n\n float fresnelFunc(vec3 viewDirection, vec3 worldNormal) {\n return pow( 1.0 + dot( viewDirection, worldNormal), 10.0 );\n }\n\n vec3 totalInternalReflection(vec3 ro, vec3 rd, vec3 normal, float ior, mat4 modelMatrixInverse) {\n vec3 rayOrigin = ro;\n vec3 rayDirection = rd;\n rayDirection = refract(rayDirection, normal, 1.0 / ior);\n rayOrigin = vWorldPosition + rayDirection * 0.001;\n rayOrigin = (modelMatrixInverse * vec4(rayOrigin, 1.0)).xyz;\n rayDirection = normalize((modelMatrixInverse * vec4(rayDirection, 0.0)).xyz);\n for(float i = 0.0; i < bounces; i++) {\n uvec4 faceIndices = uvec4( 0u );\n vec3 faceNormal = vec3( 0.0, 0.0, 1.0 );\n vec3 barycoord = vec3( 0.0 );\n float side = 1.0;\n float dist = 0.0;\n bvhIntersectFirstHit( bvh, rayOrigin, rayDirection, faceIndices, faceNormal, barycoord, side, dist );\n vec3 hitPos = rayOrigin + rayDirection * max(dist - 0.001, 0.0);\n vec3 tempDir = refract(rayDirection, faceNormal, ior);\n if (length(tempDir) != 0.0) {\n rayDirection = tempDir;\n break;\n }\n rayDirection = reflect(rayDirection, faceNormal);\n rayOrigin = hitPos + rayDirection * 0.01;\n }\n rayDirection = normalize((modelMatrix * vec4(rayDirection, 0.0)).xyz);\n return rayDirection;\n }\n\n #include <common>\n #include <cube_uv_reflection_fragment>\n\n #ifdef ENVMAP_TYPE_CUBEM\n vec4 textureGradient(samplerCube envMap, vec3 rayDirection, vec3 directionCamPerfect) {\n return textureGrad(envMap, rayDirection, dFdx(correctMips ? directionCamPerfect: rayDirection), dFdy(correctMips ? directionCamPerfect: rayDirection));\n }\n #else\n vec4 textureGradient(sampler2D envMap, vec3 rayDirection, vec3 directionCamPerfect) {\n vec2 uvv = equirectUv( rayDirection );\n vec2 smoothUv = equirectUv( directionCamPerfect );\n return textureGrad(envMap, uvv, dFdx(correctMips ? smoothUv : uvv), dFdy(correctMips ? smoothUv : uvv));\n }\n #endif\n\n void main() {\n vec2 uv = gl_FragCoord.xy / resolution;\n vec3 directionCamPerfect = (projectionMatrixInverse * vec4(uv * 2.0 - 1.0, 0.0, 1.0)).xyz;\n directionCamPerfect = (viewMatrixInverse * vec4(directionCamPerfect, 0.0)).xyz;\n directionCamPerfect = normalize(directionCamPerfect);\n vec3 normal = vNormal;\n vec3 rayOrigin = cameraPosition;\n vec3 rayDirection = normalize(vWorldPosition - cameraPosition);\n\n vec4 diffuseColor = vec4(color, opacity);\n #include <color_fragment>\n\n #ifdef CHROMATIC_ABERRATIONS\n vec3 rayDirectionG = totalInternalReflection(rayOrigin, rayDirection, normal, max(ior, 1.0), vModelMatrixInverse);\n #ifdef FAST_CHROMA\n vec3 rayDirectionR = normalize(rayDirectionG + 1.0 * vec3(aberrationStrength / 2.0));\n vec3 rayDirectionB = normalize(rayDirectionG - 1.0 * vec3(aberrationStrength / 2.0));\n #else\n vec3 rayDirectionR = totalInternalReflection(rayOrigin, rayDirection, normal, max(ior * (1.0 - aberrationStrength), 1.0), vModelMatrixInverse);\n vec3 rayDirectionB = totalInternalReflection(rayOrigin, rayDirection, normal, max(ior * (1.0 + aberrationStrength), 1.0), vModelMatrixInverse);\n #endif\n float finalColorR = textureGradient(envMap, rayDirectionR, directionCamPerfect).r;\n float finalColorG = textureGradient(envMap, rayDirectionG, directionCamPerfect).g;\n float finalColorB = textureGradient(envMap, rayDirectionB, directionCamPerfect).b;\n diffuseColor.rgb *= vec3(finalColorR, finalColorG, finalColorB);\n #else\n rayDirection = totalInternalReflection(rayOrigin, rayDirection, normal, max(ior, 1.0), vModelMatrixInverse);\n diffuseColor.rgb *= textureGradient(envMap, rayDirection, directionCamPerfect).rgb;\n #endif\n\n vec3 viewDirection = normalize(vWorldPosition - cameraPosition);\n float nFresnel = fresnelFunc(viewDirection, normal) * fresnel;\n gl_FragColor = vec4(mix(diffuseColor.rgb, vec3(1.0), nFresnel), diffuseColor.a);\n\n #include <tonemapping_fragment>\n #include <${getVersion() >= 154 ? 'colorspace_fragment' : 'encodings_fragment'}>\n }`,\n);\n","import { NgtMaterial } from 'angular-three';\nimport { getVersion } from 'angular-three-soba/misc';\nimport { PointsMaterial, PointsMaterialParameters } from 'three';\n\nconst opaque_fragment = getVersion() >= 154 ? 'opaque_fragment' : 'output_fragment';\n\nexport class PointMaterial extends PointsMaterial {\n\tconstructor(props: PointsMaterialParameters) {\n\t\tsuper(props);\n\t\tthis.onBeforeCompile = (shader, renderer) => {\n\t\t\tconst { isWebGL2 } = renderer.capabilities;\n\t\t\tshader.fragmentShader = shader.fragmentShader.replace(\n\t\t\t\t`#include <${opaque_fragment}>`,\n\t\t\t\t`\n ${\n\t\t\t\t\t!isWebGL2\n\t\t\t\t\t\t? `#extension GL_OES_standard_derivatives : enable\\n#include <${opaque_fragment}>`\n\t\t\t\t\t\t: `#include <${opaque_fragment}>`\n\t\t\t\t}\n vec2 cxy = 2.0 * gl_PointCoord - 1.0;\n float r = dot(cxy, cxy);\n float delta = fwidth(r);\n float mask = 1.0 - smoothstep(1.0 - delta, 1.0 + delta, r);\n gl_FragColor = vec4(gl_FragColor.rgb, mask * gl_FragColor.a );\n #include <tonemapping_fragment>\n #include <${getVersion() >= 154 ? 'colorspace_fragment' : 'encodings_fragment'}>\n `,\n\t\t\t);\n\t\t};\n\t}\n}\n\nexport type NgtPointMaterial = NgtMaterial<PointMaterial, [PointsMaterialParameters]>;\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @extends ngt-points-material\n\t\t */\n\t\t'ngt-point-material': NgtPointMaterial;\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAgCO,MAAM,YAAY,GAAG,cAAc,CACzC;AACC,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,WAAW,EAAE,CAAC;AACd,IAAA,YAAY,EAAE,GAAG;AACjB,IAAA,YAAY,EAAE,CAAC;AACf,IAAA,QAAQ,EAAE,CAAC;AACX,IAAA,aAAa,EAAE,GAAG;AAClB,IAAA,gBAAgB,EAAE,CAAC;IACnB,SAAS,EAAE,IAAI,KAAK,EAAE;IACtB,YAAY,EAAE,IAAI,KAAK,EAAE;AACzB,IAAA,YAAY,EAAE,KAAK;AACnB,IAAA,YAAY,EAAE,KAAK;IACnB,oBAAoB,EAAE,IAAI,OAAO,EAAE;IACnC,kBAAkB,EAAE,IAAI,OAAO,EAAE;AACjC,CAAA;AACD,yBAAyB,CAAA;;;;;;;;;;;;;;;;;;;;;;AAsBvB,EAAA,CAAA;AACF,yBAAyB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAoCR,UAAU,EAAE,IAAI,GAAG,GAAG,qBAAqB,GAAG,oBAAoB,CAAA;;AAEjF,EAAA,CAAA;;ACpGI,MAAM,sBAAsB,GAAG,cAAc,CACnD;AACC,IAAA,MAAM,EAAE,IAAI;AACZ,IAAA,OAAO,EAAE,CAAC;AACV,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,WAAW,EAAE,IAAI;AACjB,IAAA,kBAAkB,EAAE,IAAI;AACxB,IAAA,OAAO,EAAE,CAAC;;IAEV,GAAG,EAAE,IAAI,oBAAoB,EAAE;AAC/B,IAAA,KAAK,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;AAC/B,IAAA,OAAO,EAAE,CAAC;AACV,IAAA,UAAU,EAAE,IAAI,KAAK,CAAC,OAAO,EAAE;AAC/B,IAAA,iBAAiB,EAAE,IAAI,KAAK,CAAC,OAAO,EAAE;AACtC,IAAA,uBAAuB,EAAE,IAAI,KAAK,CAAC,OAAO,EAAE;AAC5C,CAAA;AACD,yBAAyB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BtB,GAAA,CAAA;AACH,yBAAyB,CAAA;;;;;;;;;;;;;;;;;IAiBtB,aAAa,CAAA;IACb,uBAAuB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBA8FX,UAAU,EAAE,IAAI,GAAG,GAAG,qBAAqB,GAAG,oBAAoB,CAAA;AAC9E,GAAA,CAAA;;ACnKJ,MAAM,eAAe,GAAG,UAAU,EAAE,IAAI,GAAG,GAAG,iBAAiB,GAAG,iBAAiB,CAAC;AAE9E,MAAO,aAAc,SAAQ,cAAc,CAAA;AAChD,IAAA,WAAA,CAAY,KAA+B,EAAA;QAC1C,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,eAAe,GAAG,CAAC,MAAM,EAAE,QAAQ,KAAI;AAC3C,YAAA,MAAM,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC,YAAY,CAAC;AAC3C,YAAA,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC,OAAO,CACpD,CAAA,UAAA,EAAa,eAAe,CAAA,CAAA,CAAG,EAC/B,CAAA;AAEC,QAAA,EAAA,CAAC,QAAQ;kBACN,CAA8D,2DAAA,EAAA,eAAe,CAAG,CAAA,CAAA;kBAChF,CAAa,UAAA,EAAA,eAAe,CAChC,CAAA,CAAA,CAAA;;;;;;;kBAOc,UAAU,EAAE,IAAI,GAAG,GAAG,qBAAqB,GAAG,oBAAoB,CAAA;AAC7E,MAAA,CAAA,CACH,CAAC;AACH,SAAC,CAAC;KACF;AACD;;AC9BD;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"angular-three-soba-shaders.mjs","sources":["../../../../libs/soba/shaders/src/lib/grid-material.ts","../../../../libs/soba/shaders/src/lib/mesh-refraction-material.ts","../../../../libs/soba/shaders/src/lib/point-material.ts","../../../../libs/soba/shaders/src/angular-three-soba-shaders.ts"],"sourcesContent":["import { NgtMaterial } from 'angular-three';\nimport { getVersion } from 'angular-three-soba/misc';\nimport { shaderMaterial } from 'angular-three-soba/vanilla-exports';\nimport { Color, ColorRepresentation, Side, Vector3 } from 'three';\n\nexport interface GridMaterialOptions {\n\t/** Cell size, default: 0.5 */\n\tcellSize: number;\n\t/** Cell thickness, default: 0.5 */\n\tcellThickness: number;\n\t/** Cell color, default: black */\n\tcellColor: ColorRepresentation;\n\t/** Section size, default: 1 */\n\tsectionSize: number;\n\t/** Section thickness, default: 1 */\n\tsectionThickness: number;\n\t/** Section color, default: #2080ff */\n\tsectionColor: ColorRepresentation;\n\t/** Follow camera, default: false */\n\tfollowCamera: boolean;\n\t/** Display the grid infinitely, default: false */\n\tinfiniteGrid: boolean;\n\t/** Fade distance, default: 100 */\n\tfadeDistance: number;\n\t/** Fade strength, default: 1 */\n\tfadeStrength: number;\n\t/** Fade from camera (1) or origin (0), or somewhere in between, default: camera */\n\tfadeFrom: number;\n\t/** Material side, default: THREE.BackSide */\n\tside: Side;\n}\n\nexport const GridMaterial = shaderMaterial(\n\t{\n\t\tcellSize: 0.5,\n\t\tsectionSize: 1,\n\t\tfadeDistance: 100,\n\t\tfadeStrength: 1,\n\t\tfadeFrom: 1,\n\t\tcellThickness: 0.5,\n\t\tsectionThickness: 1,\n\t\tcellColor: new Color(),\n\t\tsectionColor: new Color(),\n\t\tinfiniteGrid: false,\n\t\tfollowCamera: false,\n\t\tworldCamProjPosition: new Vector3(),\n\t\tworldPlanePosition: new Vector3(),\n\t},\n\t/* language=glsl glsl */ `\n varying vec3 localPosition;\n varying vec4 worldPosition;\n\n uniform vec3 worldCamProjPosition;\n uniform vec3 worldPlanePosition;\n uniform float fadeDistance;\n uniform bool infiniteGrid;\n uniform bool followCamera;\n\n void main() {\n localPosition = position.xzy;\n if (infiniteGrid) localPosition *= 1.0 + fadeDistance;\n\n worldPosition = modelMatrix * vec4(localPosition, 1.0);\n if (followCamera) {\n worldPosition.xyz += (worldCamProjPosition - worldPlanePosition);\n localPosition = (inverse(modelMatrix) * worldPosition).xyz;\n }\n\n gl_Position = projectionMatrix * viewMatrix * worldPosition;\n }\n `,\n\t/* language=glsl glsl */ `\n varying vec3 localPosition;\n varying vec4 worldPosition;\n\n uniform vec3 worldCamProjPosition;\n uniform float cellSize;\n uniform float sectionSize;\n uniform vec3 cellColor;\n uniform vec3 sectionColor;\n uniform float fadeDistance;\n uniform float fadeStrength;\n uniform float fadeFrom;\n uniform float cellThickness;\n uniform float sectionThickness;\n\n float getGrid(float size, float thickness) {\n vec2 r = localPosition.xz / size;\n vec2 grid = abs(fract(r - 0.5) - 0.5) / fwidth(r);\n float line = min(grid.x, grid.y) + 1.0 - thickness;\n return 1.0 - min(line, 1.0);\n }\n\n void main() {\n float g1 = getGrid(cellSize, cellThickness);\n float g2 = getGrid(sectionSize, sectionThickness);\n\n vec3 from = worldCamProjPosition*vec3(fadeFrom);\n float dist = distance(from, worldPosition.xyz);\n float d = 1.0 - min(dist / fadeDistance, 1.0);\n vec3 color = mix(cellColor, sectionColor, min(1.0, sectionThickness * g2));\n\n gl_FragColor = vec4(color, (g1 + g2) * pow(d, fadeStrength));\n gl_FragColor.a = mix(0.75 * gl_FragColor.a, gl_FragColor.a, g2);\n if (gl_FragColor.a <= 0.0) discard;\n\n #include <tonemapping_fragment>\n #include <${getVersion() >= 154 ? 'colorspace_fragment' : 'encodings_fragment'}>\n }\n `,\n);\n\nexport type NgtGridMaterial = NgtMaterial<InstanceType<typeof GridMaterial>, [GridMaterialOptions]>;\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @extends ngt-shader-material\n\t\t * @options GridMaterialOptions\n\t\t */\n\t\t'ngt-grid-material': NgtGridMaterial;\n\t}\n}\n","import { getVersion } from 'angular-three-soba/misc';\nimport { shaderMaterial } from 'angular-three-soba/vanilla-exports';\nimport * as THREE from 'three';\nimport { MeshBVHUniformStruct, shaderIntersectFunction, shaderStructs } from 'three-mesh-bvh';\n\nexport const MeshRefractionMaterial = shaderMaterial(\n\t{\n\t\tenvMap: null,\n\t\tbounces: 3,\n\t\tior: 2.4,\n\t\tcorrectMips: true,\n\t\taberrationStrength: 0.01,\n\t\tfresnel: 0,\n\t\t// @ts-expect-error - UniformValue from pmndrs/vanilla does not include MeshBVHUniformStruct\n\t\tbvh: new MeshBVHUniformStruct(),\n\t\tcolor: new THREE.Color('white'),\n\t\topacity: 1,\n\t\tresolution: new THREE.Vector2(),\n\t\tviewMatrixInverse: new THREE.Matrix4(),\n\t\tprojectionMatrixInverse: new THREE.Matrix4(),\n\t},\n\t/* language=glsl glsl */ `\n uniform mat4 viewMatrixInverse;\n\n varying vec3 vWorldPosition;\n varying vec3 vNormal;\n varying mat4 vModelMatrixInverse;\n\n #include <color_pars_vertex>\n\n void main() {\n #include <color_vertex>\n\n vec4 transformedNormal = vec4(normal, 0.0);\n vec4 transformedPosition = vec4(position, 1.0);\n #ifdef USE_INSTANCING\n transformedNormal = instanceMatrix * transformedNormal;\n transformedPosition = instanceMatrix * transformedPosition;\n #endif\n\n #ifdef USE_INSTANCING\n vModelMatrixInverse = inverse(modelMatrix * instanceMatrix);\n #else\n vModelMatrixInverse = inverse(modelMatrix);\n #endif\n\n vWorldPosition = (modelMatrix * transformedPosition).xyz;\n vNormal = normalize((viewMatrixInverse * vec4(normalMatrix * transformedNormal.xyz, 0.0)).xyz);\n gl_Position = projectionMatrix * viewMatrix * modelMatrix * transformedPosition;\n }`,\n\t/* language=glsl glsl */ `\n #define ENVMAP_TYPE_CUBE_UV\n precision highp isampler2D;\n precision highp usampler2D;\n varying vec3 vWorldPosition;\n varying vec3 vNormal;\n varying mat4 vModelMatrixInverse;\n\n #include <color_pars_fragment>\n\n #ifdef ENVMAP_TYPE_CUBEM\n uniform samplerCube envMap;\n #else\n uniform sampler2D envMap;\n #endif\n\n uniform float bounces;\n ${shaderStructs}\n ${shaderIntersectFunction}\n uniform BVH bvh;\n uniform float ior;\n uniform bool correctMips;\n uniform vec2 resolution;\n uniform float fresnel;\n uniform mat4 modelMatrix;\n uniform mat4 projectionMatrixInverse;\n uniform mat4 viewMatrixInverse;\n uniform float aberrationStrength;\n uniform vec3 color;\n uniform float opacity;\n\n float fresnelFunc(vec3 viewDirection, vec3 worldNormal) {\n return pow( 1.0 + dot( viewDirection, worldNormal), 10.0 );\n }\n\n vec3 totalInternalReflection(vec3 ro, vec3 rd, vec3 normal, float ior, mat4 modelMatrixInverse) {\n vec3 rayOrigin = ro;\n vec3 rayDirection = rd;\n rayDirection = refract(rayDirection, normal, 1.0 / ior);\n rayOrigin = vWorldPosition + rayDirection * 0.001;\n rayOrigin = (modelMatrixInverse * vec4(rayOrigin, 1.0)).xyz;\n rayDirection = normalize((modelMatrixInverse * vec4(rayDirection, 0.0)).xyz);\n for(float i = 0.0; i < bounces; i++) {\n uvec4 faceIndices = uvec4( 0u );\n vec3 faceNormal = vec3( 0.0, 0.0, 1.0 );\n vec3 barycoord = vec3( 0.0 );\n float side = 1.0;\n float dist = 0.0;\n bvhIntersectFirstHit( bvh, rayOrigin, rayDirection, faceIndices, faceNormal, barycoord, side, dist );\n vec3 hitPos = rayOrigin + rayDirection * max(dist - 0.001, 0.0);\n vec3 tempDir = refract(rayDirection, faceNormal, ior);\n if (length(tempDir) != 0.0) {\n rayDirection = tempDir;\n break;\n }\n rayDirection = reflect(rayDirection, faceNormal);\n rayOrigin = hitPos + rayDirection * 0.01;\n }\n rayDirection = normalize((modelMatrix * vec4(rayDirection, 0.0)).xyz);\n return rayDirection;\n }\n\n #include <common>\n #include <cube_uv_reflection_fragment>\n\n #ifdef ENVMAP_TYPE_CUBEM\n vec4 textureGradient(samplerCube envMap, vec3 rayDirection, vec3 directionCamPerfect) {\n return textureGrad(envMap, rayDirection, dFdx(correctMips ? directionCamPerfect: rayDirection), dFdy(correctMips ? directionCamPerfect: rayDirection));\n }\n #else\n vec4 textureGradient(sampler2D envMap, vec3 rayDirection, vec3 directionCamPerfect) {\n vec2 uvv = equirectUv( rayDirection );\n vec2 smoothUv = equirectUv( directionCamPerfect );\n return textureGrad(envMap, uvv, dFdx(correctMips ? smoothUv : uvv), dFdy(correctMips ? smoothUv : uvv));\n }\n #endif\n\n void main() {\n vec2 uv = gl_FragCoord.xy / resolution;\n vec3 directionCamPerfect = (projectionMatrixInverse * vec4(uv * 2.0 - 1.0, 0.0, 1.0)).xyz;\n directionCamPerfect = (viewMatrixInverse * vec4(directionCamPerfect, 0.0)).xyz;\n directionCamPerfect = normalize(directionCamPerfect);\n vec3 normal = vNormal;\n vec3 rayOrigin = cameraPosition;\n vec3 rayDirection = normalize(vWorldPosition - cameraPosition);\n\n vec4 diffuseColor = vec4(color, opacity);\n #include <color_fragment>\n\n #ifdef CHROMATIC_ABERRATIONS\n vec3 rayDirectionG = totalInternalReflection(rayOrigin, rayDirection, normal, max(ior, 1.0), vModelMatrixInverse);\n #ifdef FAST_CHROMA\n vec3 rayDirectionR = normalize(rayDirectionG + 1.0 * vec3(aberrationStrength / 2.0));\n vec3 rayDirectionB = normalize(rayDirectionG - 1.0 * vec3(aberrationStrength / 2.0));\n #else\n vec3 rayDirectionR = totalInternalReflection(rayOrigin, rayDirection, normal, max(ior * (1.0 - aberrationStrength), 1.0), vModelMatrixInverse);\n vec3 rayDirectionB = totalInternalReflection(rayOrigin, rayDirection, normal, max(ior * (1.0 + aberrationStrength), 1.0), vModelMatrixInverse);\n #endif\n float finalColorR = textureGradient(envMap, rayDirectionR, directionCamPerfect).r;\n float finalColorG = textureGradient(envMap, rayDirectionG, directionCamPerfect).g;\n float finalColorB = textureGradient(envMap, rayDirectionB, directionCamPerfect).b;\n diffuseColor.rgb *= vec3(finalColorR, finalColorG, finalColorB);\n #else\n rayDirection = totalInternalReflection(rayOrigin, rayDirection, normal, max(ior, 1.0), vModelMatrixInverse);\n diffuseColor.rgb *= textureGradient(envMap, rayDirection, directionCamPerfect).rgb;\n #endif\n\n vec3 viewDirection = normalize(vWorldPosition - cameraPosition);\n float nFresnel = fresnelFunc(viewDirection, normal) * fresnel;\n gl_FragColor = vec4(mix(diffuseColor.rgb, vec3(1.0), nFresnel), diffuseColor.a);\n\n #include <tonemapping_fragment>\n #include <${getVersion() >= 154 ? 'colorspace_fragment' : 'encodings_fragment'}>\n }`,\n);\n","import { NgtMaterial } from 'angular-three';\nimport { getVersion } from 'angular-three-soba/misc';\nimport { PointsMaterial, PointsMaterialParameters } from 'three';\n\nconst opaque_fragment = getVersion() >= 154 ? 'opaque_fragment' : 'output_fragment';\n\nexport class PointMaterial extends PointsMaterial {\n\tconstructor(props: PointsMaterialParameters) {\n\t\tsuper(props);\n\t\tthis.onBeforeCompile = (shader, renderer) => {\n\t\t\tconst { isWebGL2 } = renderer.capabilities;\n\t\t\tshader.fragmentShader = shader.fragmentShader.replace(\n\t\t\t\t`#include <${opaque_fragment}>`,\n\t\t\t\t`\n ${\n\t\t\t\t\t!isWebGL2\n\t\t\t\t\t\t? `#extension GL_OES_standard_derivatives : enable\\n#include <${opaque_fragment}>`\n\t\t\t\t\t\t: `#include <${opaque_fragment}>`\n\t\t\t\t}\n vec2 cxy = 2.0 * gl_PointCoord - 1.0;\n float r = dot(cxy, cxy);\n float delta = fwidth(r);\n float mask = 1.0 - smoothstep(1.0 - delta, 1.0 + delta, r);\n gl_FragColor = vec4(gl_FragColor.rgb, mask * gl_FragColor.a );\n #include <tonemapping_fragment>\n #include <${getVersion() >= 154 ? 'colorspace_fragment' : 'encodings_fragment'}>\n `,\n\t\t\t);\n\t\t};\n\t}\n}\n\nexport type NgtPointMaterial = NgtMaterial<PointMaterial, [PointsMaterialParameters]>;\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @extends ngt-points-material\n\t\t */\n\t\t'ngt-point-material': NgtPointMaterial;\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAgCO,MAAM,YAAY,GAAG,cAAc,CACzC;AACC,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,WAAW,EAAE,CAAC;AACd,IAAA,YAAY,EAAE,GAAG;AACjB,IAAA,YAAY,EAAE,CAAC;AACf,IAAA,QAAQ,EAAE,CAAC;AACX,IAAA,aAAa,EAAE,GAAG;AAClB,IAAA,gBAAgB,EAAE,CAAC;IACnB,SAAS,EAAE,IAAI,KAAK,EAAE;IACtB,YAAY,EAAE,IAAI,KAAK,EAAE;AACzB,IAAA,YAAY,EAAE,KAAK;AACnB,IAAA,YAAY,EAAE,KAAK;IACnB,oBAAoB,EAAE,IAAI,OAAO,EAAE;IACnC,kBAAkB,EAAE,IAAI,OAAO,EAAE;AACjC,CAAA;AACD,yBAAyB,CAAA;;;;;;;;;;;;;;;;;;;;;;AAsBvB,EAAA,CAAA;AACF,yBAAyB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAoCR,UAAU,EAAE,IAAI,GAAG,GAAG,qBAAqB,GAAG,oBAAoB,CAAA;;AAEjF,EAAA,CAAA;;ACxGI,MAAM,sBAAsB,GAAG,cAAc,CACnD;AACC,IAAA,MAAM,EAAE,IAAI;AACZ,IAAA,OAAO,EAAE,CAAC;AACV,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,WAAW,EAAE,IAAI;AACjB,IAAA,kBAAkB,EAAE,IAAI;AACxB,IAAA,OAAO,EAAE,CAAC;;IAEV,GAAG,EAAE,IAAI,oBAAoB,EAAE;AAC/B,IAAA,KAAK,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;AAC/B,IAAA,OAAO,EAAE,CAAC;AACV,IAAA,UAAU,EAAE,IAAI,KAAK,CAAC,OAAO,EAAE;AAC/B,IAAA,iBAAiB,EAAE,IAAI,KAAK,CAAC,OAAO,EAAE;AACtC,IAAA,uBAAuB,EAAE,IAAI,KAAK,CAAC,OAAO,EAAE;AAC5C,CAAA;AACD,yBAAyB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BtB,GAAA,CAAA;AACH,yBAAyB,CAAA;;;;;;;;;;;;;;;;;IAiBtB,aAAa,CAAA;IACb,uBAAuB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBA8FX,UAAU,EAAE,IAAI,GAAG,GAAG,qBAAqB,GAAG,oBAAoB,CAAA;AAC9E,GAAA,CAAA;;AC/JJ,MAAM,eAAe,GAAG,UAAU,EAAE,IAAI,GAAG,GAAG,iBAAiB,GAAG,iBAAiB,CAAC;AAE9E,MAAO,aAAc,SAAQ,cAAc,CAAA;AAChD,IAAA,WAAA,CAAY,KAA+B,EAAA;QAC1C,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,eAAe,GAAG,CAAC,MAAM,EAAE,QAAQ,KAAI;AAC3C,YAAA,MAAM,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC,YAAY,CAAC;AAC3C,YAAA,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC,OAAO,CACpD,CAAA,UAAA,EAAa,eAAe,CAAA,CAAA,CAAG,EAC/B,CAAA;AAEC,QAAA,EAAA,CAAC,QAAQ;kBACN,CAA8D,2DAAA,EAAA,eAAe,CAAG,CAAA,CAAA;kBAChF,CAAa,UAAA,EAAA,eAAe,CAChC,CAAA,CAAA,CAAA;;;;;;;kBAOc,UAAU,EAAE,IAAI,GAAG,GAAG,qBAAqB,GAAG,oBAAoB,CAAA;AAC7E,MAAA,CAAA,CACH,CAAC;AACH,SAAC,CAAC;KACF;AACD;;AC9BD;;AAEG;;;;"}
|