angular-three-soba 4.0.0-next.9 → 4.0.0-next.91
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/README.md +1 -1
- package/abstractions/lib/catmull-rom-line.d.ts +16 -15
- package/abstractions/lib/edges.d.ts +17 -15
- package/abstractions/lib/text-3d.d.ts +1 -1
- package/abstractions/lib/text.d.ts +5 -1
- package/cameras/lib/camera-content.d.ts +1 -2
- package/cameras/lib/cube-camera.d.ts +2 -2
- package/cameras/lib/orthographic-camera.d.ts +6 -5
- package/cameras/lib/perspective-camera.d.ts +2 -5
- package/controls/README.md +28 -28
- package/controls/index.d.ts +1 -0
- package/controls/lib/camera-controls.d.ts +1 -1
- package/controls/lib/orbit-controls.d.ts +11 -6
- package/controls/lib/trackball-controls.d.ts +27 -0
- package/fesm2022/angular-three-soba-abstractions.mjs +87 -47
- package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
- package/fesm2022/angular-three-soba-cameras.mjs +61 -37
- package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
- package/fesm2022/angular-three-soba-controls.mjs +128 -36
- package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
- package/fesm2022/angular-three-soba-gizmos.mjs +124 -86
- 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 +82 -86
- package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
- package/fesm2022/angular-three-soba-misc.mjs +55 -48
- package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
- package/fesm2022/angular-three-soba-performances.mjs +152 -35
- 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 +183 -144
- package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
- package/fesm2022/angular-three-soba-stats.mjs +3 -3
- package/gizmos/lib/gizmo-helper/gizmo-helper.d.ts +4 -3
- package/loaders/README.md +39 -39
- package/materials/lib/mesh-transmission-material.d.ts +4 -4
- package/misc/README.md +16 -16
- package/misc/lib/deprecated.d.ts +0 -6
- package/misc/lib/depth-buffer.d.ts +1 -1
- package/misc/lib/fbo.d.ts +1 -3
- package/misc/lib/html/html-content.d.ts +2 -2
- package/misc/lib/html/html.d.ts +4 -4
- package/package.json +6 -6
- package/performances/index.d.ts +1 -0
- package/performances/lib/adaptive-dpr.d.ts +1 -1
- package/performances/lib/bvh.d.ts +49 -0
- package/shaders/lib/mesh-refraction-material.d.ts +2 -2
- package/staging/lib/caustics.d.ts +3 -3
- package/staging/lib/environment/inject-environment.d.ts +1 -2
- package/staging/lib/render-texture.d.ts +5 -4
- package/staging/lib/stage.d.ts +12 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"angular-three-soba-staging.mjs","sources":["../../../../libs/soba/staging/src/lib/accumulative-shadows.ts","../../../../libs/soba/staging/src/lib/backdrop.ts","../../../../libs/soba/staging/src/lib/bb-anchor.ts","../../../../libs/soba/staging/src/lib/bounds.ts","../../../../libs/soba/staging/src/lib/camera-shake.ts","../../../../libs/soba/staging/src/lib/caustics.ts","../../../../libs/soba/staging/src/lib/center.ts","../../../../libs/soba/staging/src/lib/contact-shadows.ts","../../../../libs/soba/staging/src/lib/environment/inject-environment.ts","../../../../libs/soba/staging/src/lib/environment/environment.ts","../../../../libs/soba/staging/src/lib/float.ts","../../../../libs/soba/staging/src/lib/lightformer.ts","../../../../libs/soba/staging/src/lib/mask.ts","../../../../libs/soba/staging/src/lib/matcap-texture.ts","../../../../libs/soba/staging/src/lib/normal-texture.ts","../../../../libs/soba/staging/src/lib/randomized-lights.ts","../../../../libs/soba/staging/src/lib/render-texture.ts","../../../../libs/soba/staging/src/lib/sky.ts","../../../../libs/soba/staging/src/lib/spot-light.ts","../../../../libs/soba/staging/src/lib/stage.ts","../../../../libs/soba/staging/src/angular-three-soba-staging.ts"],"sourcesContent":["import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tDestroyRef,\n\tElementRef,\n\tcomputed,\n\teffect,\n\tinject,\n\tinput,\n\tuntracked,\n\tviewChild,\n} from '@angular/core';\nimport { NgtThreeElements, extend, getInstanceState, injectBeforeRender, injectStore, omit, pick } from 'angular-three';\nimport { ProgressiveLightMap, SoftShadowMaterial } from 'angular-three-soba/vanilla-exports';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { Group, Mesh, PlaneGeometry } from 'three';\n\nexport interface NgtsAccumulativeShadowsOptions extends Partial<NgtThreeElements['ngt-group']> {\n\t/** How many frames it can render, more yields cleaner results but takes more time, 40 */\n\tframes: number;\n\t/** If frames === Infinity blend controls the refresh ratio, 100 */\n\tblend: number;\n\t/** Can limit the amount of frames rendered if frames === Infinity, usually to get some performance back once a movable scene has settled, Infinity */\n\tlimit: number;\n\t/** Scale of the plane, */\n\tscale: number;\n\t/** Temporal accumulates shadows over time which is more performant but has a visual regression over instant results, false */\n\ttemporal?: boolean;\n\t/** Opacity of the plane, 1 */\n\topacity: number;\n\t/** Discards alpha pixels, 0.65 */\n\talphaTest: number;\n\t/** Shadow color, black */\n\tcolor: string;\n\t/** Colorblend, how much colors turn to black, 0 is black, 2 */\n\tcolorBlend: number;\n\t/** Buffer resolution, 1024 */\n\tresolution: number;\n\t/** Texture tonemapping */\n\ttoneMapped: boolean;\n}\n\nconst defaultOptions: NgtsAccumulativeShadowsOptions = {\n\ttemporal: false,\n\tframes: 40,\n\tlimit: Infinity,\n\tblend: 20,\n\tscale: 10,\n\topacity: 1,\n\talphaTest: 0.75,\n\tcolor: 'black',\n\tcolorBlend: 2,\n\tresolution: 1024,\n\ttoneMapped: true,\n};\n\n@Component({\n\tselector: 'ngts-accumulative-shadows',\n\ttemplate: `\n\t\t<ngt-group [parameters]=\"parameters()\">\n\t\t\t<ngt-group #lights [traverse]=\"nullTraversal\">\n\t\t\t\t<ng-content />\n\t\t\t</ngt-group>\n\n\t\t\t<ngt-mesh #plane [scale]=\"scale()\" [rotation]=\"[-Math.PI / 2, 0, 0]\" [receiveShadow]=\"true\">\n\t\t\t\t<ngt-plane-geometry />\n\t\t\t\t<ngt-soft-shadow-material\n\t\t\t\t\t[depthWrite]=\"false\"\n\t\t\t\t\t[toneMapped]=\"toneMapped()\"\n\t\t\t\t\t[color]=\"color()\"\n\t\t\t\t\t[blend]=\"colorBlend()\"\n\t\t\t\t\t[map]=\"map()\"\n\t\t\t\t\t[transparent]=\"true\"\n\t\t\t\t/>\n\t\t\t</ngt-mesh>\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsAccumulativeShadows {\n\tnullTraversal = () => null;\n\tMath = Math;\n\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = omit(this.options, [\n\t\t'temporal',\n\t\t'frames',\n\t\t'limit',\n\t\t'blend',\n\t\t'scale',\n\t\t'opacity',\n\t\t'alphaTest',\n\t\t'color',\n\t\t'colorBlend',\n\t\t'resolution',\n\t\t'toneMapped',\n\t]);\n\n\tlightsRef = viewChild.required<ElementRef<THREE.Group>>('lights');\n\tplaneRef =\n\t\tviewChild.required<ElementRef<THREE.Mesh<THREE.PlaneGeometry, InstanceType<typeof SoftShadowMaterial>>>>('plane');\n\n\tprivate store = injectStore();\n\n\tprivate opacity = pick(this.options, 'opacity');\n\tprivate alphaTest = pick(this.options, 'alphaTest');\n\tprivate limit = pick(this.options, 'limit');\n\tprivate resolution = pick(this.options, 'resolution');\n\n\tprivate previousPLM: ProgressiveLightMap | undefined;\n\tprivate pLM = computed(() => {\n\t\tif (this.previousPLM) {\n\t\t\tthis.previousPLM.clear();\n\t\t}\n\t\treturn (this.previousPLM = new ProgressiveLightMap(this.store.gl(), this.store.scene(), this.resolution()));\n\t});\n\n\tprotected scale = pick(this.options, 'scale');\n\tprotected toneMapped = pick(this.options, 'toneMapped');\n\tprotected color = pick(this.options, 'color');\n\tprotected colorBlend = pick(this.options, 'colorBlend');\n\tprotected map = computed(() => this.pLM().progressiveLightMap2.texture);\n\n\tlightsMap = new Map<string, () => void>();\n\tprivate temporal = computed(() => !!this.options().temporal);\n\tprivate frames = computed(() => Math.max(2, this.options().frames));\n\tprivate blend = computed(() =>\n\t\tMath.max(2, this.options().frames === Infinity ? this.options().blend : this.options().frames),\n\t);\n\tprivate count = 0;\n\n\tconstructor() {\n\t\textend({ Group, SoftShadowMaterial, Mesh, PlaneGeometry });\n\n\t\teffect(() => {\n\t\t\tthis.pLM().configure(this.planeRef().nativeElement);\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst sceneInstanceState = getInstanceState(this.store.scene());\n\t\t\tif (!sceneInstanceState) return;\n\n\t\t\t// track deps\n\t\t\tthis.planeRef();\n\t\t\tthis.options();\n\t\t\tsceneInstanceState.objects();\n\n\t\t\t// Reset internals, buffers, ...\n\t\t\tthis.reset();\n\t\t\t// Update lightmap\n\t\t\tif (!this.temporal() && this.frames() !== Infinity) this.update(this.blend());\n\t\t});\n\n\t\tinjectBeforeRender(() => {\n\t\t\tconst [frames, temporal, invalidate, limit] = [\n\t\t\t\tthis.frames(),\n\t\t\t\t!!this.temporal(),\n\t\t\t\tthis.store.snapshot.invalidate,\n\t\t\t\tthis.limit(),\n\t\t\t];\n\t\t\tif ((temporal || frames === Infinity) && this.count < frames && this.count < limit) {\n\t\t\t\tinvalidate();\n\t\t\t\tthis.update();\n\t\t\t\tthis.count++;\n\t\t\t}\n\t\t});\n\n\t\tinject(DestroyRef).onDestroy(() => {\n\t\t\tthis.previousPLM?.clear();\n\t\t});\n\t}\n\n\tgetMesh() {\n\t\treturn this.planeRef().nativeElement;\n\t}\n\n\treset() {\n\t\t// Clear buffers, reset opacities, set frame count to 0\n\t\tuntracked(this.pLM).clear();\n\t\tconst material = untracked(this.planeRef).nativeElement.material;\n\t\tmaterial.opacity = 0;\n\t\tmaterial.alphaTest = 0;\n\t\tthis.count = 0;\n\t}\n\n\tupdate(frames = 1) {\n\t\t// Adapt the opacity-blend ratio to the number of frames\n\t\tconst material = this.planeRef().nativeElement.material;\n\t\tif (!this.temporal()) {\n\t\t\tmaterial.opacity = this.opacity();\n\t\t\tmaterial.alphaTest = this.alphaTest();\n\t\t} else {\n\t\t\tmaterial.opacity = Math.min(this.opacity(), material.opacity + this.opacity() / this.blend());\n\t\t\tmaterial.alphaTest = Math.min(this.alphaTest(), material.alphaTest + this.alphaTest() / this.blend());\n\t\t}\n\n\t\t// Switch accumulative lights on\n\t\tthis.lightsRef().nativeElement.visible = true;\n\t\t// Collect scene lights and meshes\n\t\tthis.pLM().prepare();\n\n\t\t// Update the lightmap and the accumulative lights\n\t\tfor (let i = 0; i < frames; i++) {\n\t\t\tthis.lightsMap.forEach((lightUpdate) => lightUpdate());\n\t\t\tthis.pLM().update(this.store.camera(), this.blend());\n\t\t}\n\t\t// Switch lights off\n\t\tthis.lightsRef().nativeElement.visible = false;\n\t\t// Restore lights and meshes\n\t\tthis.pLM().finish();\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 { checkUpdate, extend, NgtArgs, NgtThreeElements, omit, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { Group, Mesh, PlaneGeometry } from 'three';\n\nfunction easeInExpo(x: number) {\n\treturn x === 0 ? 0 : Math.pow(2, 10 * x - 10);\n}\n\nexport interface NgtsBackdropOptions extends Partial<NgtThreeElements['ngt-group']> {\n\tfloor: number;\n\tsegments: number;\n\treceiveShadow?: boolean;\n}\n\nconst defaultOptions: NgtsBackdropOptions = {\n\tfloor: 0.25,\n\tsegments: 20,\n};\n\n@Component({\n\tselector: 'ngts-backdrop',\n\ttemplate: `\n\t\t<ngt-group #group [parameters]=\"parameters()\">\n\t\t\t<ngt-mesh [receiveShadow]=\"receiveShadow()\" [rotation]=\"[-Math.PI / 2, 0, Math.PI / 2]\">\n\t\t\t\t<ngt-plane-geometry #plane *args=\"[1, 1, segments(), segments()]\" />\n\t\t\t\t<ng-content />\n\t\t\t</ngt-mesh>\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsBackdrop {\n\tprotected readonly Math = Math;\n\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, ['floor', 'segments', 'receiveShadow']);\n\n\tgroupRef = viewChild.required<ElementRef<THREE.Group>>('group');\n\tplaneRef = viewChild<ElementRef<THREE.PlaneGeometry>>('plane');\n\n\tprotected receiveShadow = pick(this.options, 'receiveShadow');\n\tprotected segments = pick(this.options, 'segments');\n\tprivate floor = pick(this.options, 'floor');\n\n\tconstructor() {\n\t\textend({ Group, Mesh, PlaneGeometry });\n\n\t\teffect(() => {\n\t\t\tconst plane = this.planeRef()?.nativeElement;\n\t\t\tif (!plane) return;\n\n\t\t\tconst [segments, floor] = [this.segments(), this.floor()];\n\n\t\t\tlet i = 0;\n\t\t\tconst offset = segments / segments / 2;\n\t\t\tconst position = plane.attributes['position'] as THREE.BufferAttribute;\n\t\t\tfor (let x = 0; x < segments + 1; x++) {\n\t\t\t\tfor (let y = 0; y < segments + 1; y++) {\n\t\t\t\t\tposition.setXYZ(\n\t\t\t\t\t\ti++,\n\t\t\t\t\t\tx / segments - offset + (x === 0 ? -floor : 0),\n\t\t\t\t\t\ty / segments - offset,\n\t\t\t\t\t\teaseInExpo(x / segments),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcheckUpdate(position);\n\t\t\tplane.computeVertexNormals();\n\t\t});\n\t}\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\teffect,\n\tinput,\n\tsignal,\n\tviewChild,\n} from '@angular/core';\nimport {\n\tNgtThreeElements,\n\tNgtVector3,\n\textend,\n\tgetInstanceState,\n\tinjectBeforeRender,\n\tomit,\n\tvector3,\n} from 'angular-three';\nimport * as THREE from 'three';\nimport { Group } from 'three';\n\nconst boundingBox = new THREE.Box3();\nconst boundingBoxSize = new THREE.Vector3();\n\nexport interface NgtsBBAnchorOptions extends Partial<NgtThreeElements['ngt-group']> {\n\tanchor: NgtVector3;\n}\n\n@Component({\n\tselector: 'ngts-bb-anchor',\n\ttemplate: `\n\t\t<ngt-group #bbAnchor [parameters]=\"parameters()\">\n\t\t\t<ng-content />\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsBBAnchor {\n\toptions = input.required<NgtsBBAnchorOptions>();\n\tparameters = omit(this.options, ['anchor']);\n\n\tbbAnchorRef = viewChild.required<ElementRef<THREE.Group>>('bbAnchor');\n\n\tprivate parent = signal<THREE.Object3D | null>(null);\n\tprivate anchor = vector3(this.options, 'anchor');\n\n\tconstructor() {\n\t\textend({ Group });\n\n\t\t// Reattach group created by this component to the parent's parent,\n\t\t// so it becomes a sibling of its initial parent.\n\t\t// We do that so the children have no impact on a bounding box of a parent.\n\t\teffect(() => {\n\t\t\tconst bbAnchorInstanceState = getInstanceState(this.bbAnchorRef().nativeElement);\n\t\t\tconst bbAnchorParent = bbAnchorInstanceState?.parent();\n\t\t\tif (bbAnchorParent && 'parent' in bbAnchorParent) {\n\t\t\t\tthis.parent.set(bbAnchorParent as unknown as THREE.Object3D);\n\t\t\t\tbbAnchorParent['parent'].add(this.bbAnchorRef().nativeElement);\n\t\t\t}\n\t\t});\n\n\t\tinjectBeforeRender(() => {\n\t\t\tconst parent = this.parent();\n\t\t\tif (parent) {\n\t\t\t\tboundingBox.setFromObject(parent);\n\t\t\t\tboundingBox.getSize(boundingBoxSize);\n\n\t\t\t\tconst anchor = this.anchor();\n\t\t\t\tconst bbAnchor = this.bbAnchorRef().nativeElement;\n\n\t\t\t\tbbAnchor.position.set(\n\t\t\t\t\tparent.position.x + (boundingBoxSize.x * anchor.x) / 2,\n\t\t\t\t\tparent.position.y + (boundingBoxSize.y * anchor.y) / 2,\n\t\t\t\t\tparent.position.z + (boundingBoxSize.z * anchor.z) / 2,\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinput,\n\tuntracked,\n\tviewChild,\n} from '@angular/core';\nimport { extend, injectBeforeRender, injectStore, is, NgtThreeElements, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { Group } from 'three';\n\ninterface ControlsProto {\n\tupdate(): void;\n\n\ttarget: THREE.Vector3;\n\tmaxDistance: number;\n\taddEventListener: (event: string, callback: (event: any) => void) => void;\n\tremoveEventListener: (event: string, callback: (event: any) => void) => void;\n}\n\nenum AnimationState {\n\tNONE = 0,\n\tSTART = 1,\n\tACTIVE = 2,\n}\n\nfunction interpolateFuncDefault(t: number) {\n\t// Imitates the previously used THREE.MathUtils.damp\n\treturn 1 - Math.exp(-5 * t) + 0.007 * t;\n}\n\nexport interface NgtsBoundsOptions extends Partial<NgtThreeElements['ngt-group']> {\n\tmaxDuration: number;\n\tmargin: number;\n\tobserve: boolean;\n\tfit: boolean;\n\tclip: boolean;\n\tinterpolateFunc: (t: number) => number;\n}\n\nconst defaultOptions: NgtsBoundsOptions = {\n\tmaxDuration: 1.0,\n\tmargin: 1.2,\n\tinterpolateFunc: interpolateFuncDefault,\n\tclip: false,\n\tfit: false,\n\tobserve: false,\n};\n\n@Component({\n\tselector: 'ngts-bounds',\n\ttemplate: `\n\t\t<ngt-group #group>\n\t\t\t<ng-content />\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsBounds {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\n\tgroupRef = viewChild.required<ElementRef<THREE.Group>>('group');\n\n\tprivate store = injectStore();\n\t// private camera = this.store.select('camera');\n\t// private invalidate = this.store.select('invalidate');\n\t// private size = this.store.select('size');\n\t// private controls = this.store.select('controls') as unknown as Signal<ControlsProto>;\n\n\tprivate clipOption = pick(this.options, 'clip');\n\tprivate fitOption = pick(this.options, 'fit');\n\tprivate observe = pick(this.options, 'observe');\n\n\tprivate origin = {\n\t\tcamPos: new THREE.Vector3(),\n\t\tcamRot: new THREE.Quaternion(),\n\t\tcamZoom: 1,\n\t};\n\tprivate goal = {\n\t\tcamPos: undefined as THREE.Vector3 | undefined,\n\t\tcamRot: undefined as THREE.Quaternion | undefined,\n\t\tcamZoom: undefined as number | undefined,\n\t\tcamUp: undefined as THREE.Vector3 | undefined,\n\t\ttarget: undefined as THREE.Vector3 | undefined,\n\t};\n\tprivate animationState = AnimationState.NONE;\n\n\t// represent animation state from 0 to 1\n\tprivate t = 0;\n\tprivate box = new THREE.Box3();\n\n\tconstructor() {\n\t\textend({ Group });\n\n\t\teffect((onCleanup) => {\n\t\t\tconst [controls, camera] = [this.store.controls() as unknown as ControlsProto, this.store.snapshot.camera];\n\t\t\tif (!controls) return;\n\n\t\t\tconst callback = () => {\n\t\t\t\tif (this.goal.target && this.animationState !== AnimationState.NONE) {\n\t\t\t\t\tconst front = new THREE.Vector3().setFromMatrixColumn(camera.matrix, 2);\n\t\t\t\t\tconst d0 = this.origin.camPos.distanceTo(controls.target);\n\t\t\t\t\tconst d1 = (this.goal.camPos || this.origin.camPos).distanceTo(this.goal.target);\n\t\t\t\t\tconst d = (1 - this.t) * d0 + this.t * d1;\n\n\t\t\t\t\tcontrols.target.copy(camera.position).addScaledVector(front, -d);\n\t\t\t\t\tcontrols.update();\n\t\t\t\t}\n\n\t\t\t\tthis.animationState = AnimationState.NONE;\n\t\t\t};\n\n\t\t\tcontrols.addEventListener('start', callback);\n\t\t\tonCleanup(() => controls.removeEventListener('start', callback));\n\t\t});\n\n\t\tlet count = 0;\n\t\teffect(() => {\n\t\t\tconst [clip, fit, observe] = [\n\t\t\t\tthis.clipOption(),\n\t\t\t\tthis.fitOption(),\n\t\t\t\tthis.observe(),\n\t\t\t\tthis.store.size(),\n\t\t\t\tthis.store.camera(),\n\t\t\t\t// TODO: (chau) for some reason, if this effect tracks controls changes, the initial bounds doesn't target properly\n\t\t\t\tthis.store.controls(),\n\t\t\t];\n\n\t\t\tif (observe || count++ === 0) {\n\t\t\t\tthis.refresh();\n\t\t\t\tif (fit) this.reset().fit();\n\t\t\t\tif (clip) this.clip();\n\t\t\t}\n\t\t});\n\n\t\tinjectBeforeRender(({ delta }) => {\n\t\t\t// This [additional animation step START] is needed to guarantee that delta used in animation isn't absurdly high (2-3 seconds) which is actually possible if rendering happens on demand...\n\t\t\tif (this.animationState === AnimationState.START) {\n\t\t\t\tthis.animationState = AnimationState.ACTIVE;\n\t\t\t\tthis.store.snapshot.invalidate();\n\t\t\t} else if (this.animationState === AnimationState.ACTIVE) {\n\t\t\t\tconst [{ maxDuration, interpolateFunc }, camera, controls, invalidate] = [\n\t\t\t\t\tthis.options(),\n\t\t\t\t\tthis.store.snapshot.camera,\n\t\t\t\t\tthis.store.snapshot.controls as unknown as ControlsProto,\n\t\t\t\t\tthis.store.snapshot.invalidate,\n\t\t\t\t];\n\t\t\t\tthis.t += delta / maxDuration;\n\n\t\t\t\tif (this.t >= 1) {\n\t\t\t\t\tthis.goal.camPos && camera.position.copy(this.goal.camPos);\n\t\t\t\t\tthis.goal.camRot && camera.quaternion.copy(this.goal.camRot);\n\t\t\t\t\tthis.goal.camUp && camera.up.copy(this.goal.camUp);\n\t\t\t\t\tthis.goal.camZoom && is.orthographicCamera(camera) && (camera.zoom = this.goal.camZoom);\n\n\t\t\t\t\tcamera.updateMatrixWorld();\n\t\t\t\t\tcamera.updateProjectionMatrix();\n\n\t\t\t\t\tif (controls && this.goal.target) {\n\t\t\t\t\t\tcontrols.target.copy(this.goal.target);\n\t\t\t\t\t\tcontrols.update();\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.animationState = AnimationState.NONE;\n\t\t\t\t} else {\n\t\t\t\t\tconst k = interpolateFunc(this.t);\n\n\t\t\t\t\tthis.goal.camPos && camera.position.lerpVectors(this.origin.camPos, this.goal.camPos, k);\n\t\t\t\t\tthis.goal.camRot && camera.quaternion.slerpQuaternions(this.origin.camRot, this.goal.camRot, k);\n\t\t\t\t\tthis.goal.camUp && camera.up.set(0, 1, 0).applyQuaternion(camera.quaternion);\n\t\t\t\t\tthis.goal.camZoom &&\n\t\t\t\t\t\tis.orthographicCamera(camera) &&\n\t\t\t\t\t\t(camera.zoom = (1 - k) * this.origin.camZoom + k * this.goal.camZoom);\n\n\t\t\t\t\tcamera.updateMatrixWorld();\n\t\t\t\t\tcamera.updateProjectionMatrix();\n\t\t\t\t}\n\n\t\t\t\tinvalidate();\n\t\t\t}\n\t\t});\n\t}\n\n\tgetSize() {\n\t\tconst [camera, { margin }] = [this.store.snapshot.camera, untracked(this.options)];\n\n\t\tconst boxSize = this.box.getSize(new THREE.Vector3());\n\t\tconst center = this.box.getCenter(new THREE.Vector3());\n\t\tconst maxSize = Math.max(boxSize.x, boxSize.y, boxSize.z);\n\t\tconst fitHeightDistance = is.orthographicCamera(camera)\n\t\t\t? maxSize * 4\n\t\t\t: maxSize / (2 * Math.atan((Math.PI * camera.fov) / 360));\n\t\tconst fitWidthDistance = is.orthographicCamera(camera) ? maxSize * 4 : fitHeightDistance / camera.aspect;\n\t\tconst distance = margin * Math.max(fitHeightDistance, fitWidthDistance);\n\n\t\treturn { box: this.box, size: boxSize, center, distance };\n\t}\n\n\trefresh(object?: THREE.Object3D | THREE.Box3) {\n\t\tconst [group, camera] = [untracked(this.groupRef).nativeElement, this.store.snapshot.camera];\n\n\t\tif (is.three<THREE.Box3>(object, 'isBox3')) this.box.copy(object);\n\t\telse {\n\t\t\tconst target = object || group;\n\t\t\tif (!target) return this;\n\t\t\ttarget.updateWorldMatrix(true, true);\n\t\t\tthis.box.setFromObject(target);\n\t\t}\n\t\tif (this.box.isEmpty()) {\n\t\t\tconst max = camera.position.length() || 10;\n\t\t\tthis.box.setFromCenterAndSize(new THREE.Vector3(), new THREE.Vector3(max, max, max));\n\t\t}\n\n\t\tthis.origin.camPos.copy(camera.position);\n\t\tthis.origin.camRot.copy(camera.quaternion);\n\t\tis.orthographicCamera(camera) && (this.origin.camZoom = camera.zoom);\n\n\t\tthis.goal.camPos = undefined;\n\t\tthis.goal.camRot = undefined;\n\t\tthis.goal.camZoom = undefined;\n\t\tthis.goal.camUp = undefined;\n\t\tthis.goal.target = undefined;\n\n\t\treturn this;\n\t}\n\n\treset() {\n\t\tconst [camera] = [this.store.snapshot.camera];\n\t\tconst { center, distance } = this.getSize();\n\n\t\tconst direction = camera.position.clone().sub(center).normalize();\n\t\tthis.goal.camPos = center.clone().addScaledVector(direction, distance);\n\t\tthis.goal.target = center.clone();\n\t\tconst mCamRot = new THREE.Matrix4().lookAt(this.goal.camPos, this.goal.target, camera.up);\n\t\tthis.goal.camRot = new THREE.Quaternion().setFromRotationMatrix(mCamRot);\n\n\t\tthis.animationState = AnimationState.START;\n\t\tthis.t = 0;\n\n\t\treturn this;\n\t}\n\n\tmoveTo(position: THREE.Vector3 | [number, number, number]) {\n\t\tthis.goal.camPos = Array.isArray(position) ? new THREE.Vector3(...position) : position.clone();\n\n\t\tthis.animationState = AnimationState.START;\n\t\tthis.t = 0;\n\n\t\treturn this;\n\t}\n\n\tlookAt({\n\t\ttarget,\n\t\tup,\n\t}: {\n\t\ttarget: THREE.Vector3 | [number, number, number];\n\t\tup?: THREE.Vector3 | [number, number, number];\n\t}) {\n\t\tconst [camera] = [this.store.snapshot.camera];\n\n\t\tthis.goal.target = Array.isArray(target) ? new THREE.Vector3(...target) : target.clone();\n\t\tif (up) {\n\t\t\tthis.goal.camUp = Array.isArray(up) ? new THREE.Vector3(...up) : up.clone();\n\t\t} else {\n\t\t\tthis.goal.camUp = camera.up.clone();\n\t\t}\n\t\tconst mCamRot = new THREE.Matrix4().lookAt(this.goal.camPos || camera.position, this.goal.target, this.goal.camUp);\n\t\tthis.goal.camRot = new THREE.Quaternion().setFromRotationMatrix(mCamRot);\n\n\t\tthis.animationState = AnimationState.START;\n\t\tthis.t = 0;\n\n\t\treturn this;\n\t}\n\n\tfit() {\n\t\tconst [camera, controls, { margin }] = [\n\t\t\tthis.store.snapshot.camera,\n\t\t\tthis.store.snapshot.controls as unknown as ControlsProto,\n\t\t\tuntracked(this.options),\n\t\t];\n\n\t\tif (!is.orthographicCamera(camera)) {\n\t\t\t// For non-orthographic cameras, fit should behave exactly like reset\n\t\t\treturn this.reset();\n\t\t}\n\n\t\t// For orthographic cameras, fit should only modify the zoom value\n\t\tlet maxHeight = 0;\n\t\tlet maxWidth = 0;\n\t\tconst vertices = [\n\t\t\tnew THREE.Vector3(this.box.min.x, this.box.min.y, this.box.min.z),\n\t\t\tnew THREE.Vector3(this.box.min.x, this.box.max.y, this.box.min.z),\n\t\t\tnew THREE.Vector3(this.box.min.x, this.box.min.y, this.box.max.z),\n\t\t\tnew THREE.Vector3(this.box.min.x, this.box.max.y, this.box.max.z),\n\t\t\tnew THREE.Vector3(this.box.max.x, this.box.max.y, this.box.max.z),\n\t\t\tnew THREE.Vector3(this.box.max.x, this.box.max.y, this.box.min.z),\n\t\t\tnew THREE.Vector3(this.box.max.x, this.box.min.y, this.box.max.z),\n\t\t\tnew THREE.Vector3(this.box.max.x, this.box.min.y, this.box.min.z),\n\t\t];\n\n\t\t// Transform the center and each corner to camera space\n\t\tconst pos = this.goal.camPos || camera.position;\n\t\tconst target = this.goal.target || controls.target;\n\t\tconst up = this.goal.camUp || camera.up;\n\t\tconst mCamWInv = target\n\t\t\t? new THREE.Matrix4().lookAt(pos, target, up).setPosition(pos).invert()\n\t\t\t: camera.matrixWorldInverse;\n\t\tfor (const v of vertices) {\n\t\t\tv.applyMatrix4(mCamWInv);\n\t\t\tmaxHeight = Math.max(maxHeight, Math.abs(v.y));\n\t\t\tmaxWidth = Math.max(maxWidth, Math.abs(v.x));\n\t\t}\n\t\tmaxHeight *= 2;\n\t\tmaxWidth *= 2;\n\t\tconst zoomForHeight = (camera.top - camera.bottom) / maxHeight;\n\t\tconst zoomForWidth = (camera.right - camera.left) / maxWidth;\n\n\t\tthis.goal.camZoom = Math.min(zoomForHeight, zoomForWidth) / margin;\n\n\t\tthis.animationState = AnimationState.START;\n\t\tthis.t = 0;\n\n\t\treturn this;\n\t}\n\n\tclip() {\n\t\tconst [camera, controls, invalidate] = [\n\t\t\tthis.store.snapshot.camera,\n\t\t\tthis.store.snapshot.controls as unknown as ControlsProto,\n\t\t\tthis.store.snapshot.invalidate,\n\t\t];\n\t\tconst { distance } = this.getSize();\n\n\t\tcamera.near = distance / 100;\n\t\tcamera.far = distance * 100;\n\t\tcamera.updateProjectionMatrix();\n\n\t\tif (controls) {\n\t\t\tcontrols.maxDistance = distance * 10;\n\t\t\tcontrols.update();\n\t\t}\n\n\t\tinvalidate();\n\n\t\treturn this;\n\t}\n}\n","import { Directive, effect, input, untracked } from '@angular/core';\nimport { injectBeforeRender, injectStore } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { SimplexNoise } from 'three-stdlib';\n\ninterface ControlsProto {\n\tupdate(): void;\n\ttarget: THREE.Vector3;\n\taddEventListener: (event: string, callback: (event: any) => void) => void;\n\tremoveEventListener: (event: string, callback: (event: any) => void) => void;\n}\n\nexport interface NgtsCameraShakeOptions {\n\tintensity: number;\n\tdecay?: boolean;\n\tdecayRate: number;\n\tmaxYaw: number;\n\tmaxPitch: number;\n\tmaxRoll: number;\n\tyawFrequency: number;\n\tpitchFrequency: number;\n\trollFrequency: number;\n}\n\nconst defaultOptions: NgtsCameraShakeOptions = {\n\tintensity: 1,\n\tdecayRate: 0.65,\n\tmaxYaw: 0.1,\n\tmaxPitch: 0.1,\n\tmaxRoll: 0.1,\n\tyawFrequency: 0.1,\n\tpitchFrequency: 0.1,\n\trollFrequency: 0.1,\n};\n\n@Directive({ selector: 'ngts-camera-shake' })\nexport class NgtsCameraShake {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\n\tprivate store = injectStore();\n\n\tprivate initialRotation = this.store.snapshot.camera.rotation.clone();\n\tprivate intensityOption = untracked(this.options).intensity;\n\n\tget intensity() {\n\t\treturn this.intensityOption;\n\t}\n\n\tset intensity(val: number) {\n\t\tthis.intensityOption = Math.min(1, Math.max(0, val));\n\t}\n\n\tprivate yawNoise = new SimplexNoise();\n\tprivate pitchNoise = new SimplexNoise();\n\tprivate rollNoise = new SimplexNoise();\n\n\tconstructor() {\n\t\teffect((onCleanup) => {\n\t\t\tconst defaultControls = this.store.controls() as unknown as ControlsProto;\n\t\t\tif (!defaultControls) return;\n\t\t\tconst camera = this.store.camera();\n\n\t\t\tconst callback = () => void (this.initialRotation = camera.rotation.clone());\n\t\t\tdefaultControls.addEventListener('change', callback);\n\t\t\tcallback();\n\n\t\t\tonCleanup(() => void defaultControls.removeEventListener('change', callback));\n\t\t});\n\n\t\tinjectBeforeRender(({ delta, clock }) => {\n\t\t\tconst [{ maxYaw, yawFrequency, maxPitch, pitchFrequency, maxRoll, rollFrequency, decay, decayRate }, camera] = [\n\t\t\t\tthis.options(),\n\t\t\t\tthis.store.snapshot.camera,\n\t\t\t];\n\t\t\tconst shake = Math.pow(this.intensity, 2);\n\t\t\tconst yaw = maxYaw * shake * this.yawNoise.noise(clock.elapsedTime * yawFrequency, 1);\n\t\t\tconst pitch = maxPitch * shake * this.pitchNoise.noise(clock.elapsedTime * pitchFrequency, 1);\n\t\t\tconst roll = maxRoll * shake * this.rollNoise.noise(clock.elapsedTime * rollFrequency, 1);\n\n\t\t\tcamera.rotation.set(this.initialRotation.x + pitch, this.initialRotation.y + yaw, this.initialRotation.z + roll);\n\n\t\t\tif (decay && this.intensity > 0) {\n\t\t\t\tthis.intensity -= decayRate * delta;\n\t\t\t}\n\t\t});\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { extend, getInstanceState, injectBeforeRender, NgtThreeElements, omit, pick, resolveRef } from 'angular-three';\nimport { injectHelper, NgtsEdges } from 'angular-three-soba/abstractions';\nimport { injectFBO } from 'angular-three-soba/misc';\nimport { CausticsProjectionMaterial, createCausticsUpdate } from 'angular-three-soba/vanilla-exports';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { Group, LineBasicMaterial, Mesh, OrthographicCamera, PlaneGeometry, Scene } from 'three';\n\nconst NORMAL_OPTIONS = {\n\tdepth: true,\n\tminFilter: THREE.LinearFilter,\n\tmagFilter: THREE.LinearFilter,\n\ttype: THREE.UnsignedByteType,\n};\n\nconst CAUSTIC_OPTIONS = {\n\tminFilter: THREE.LinearMipmapLinearFilter,\n\tmagFilter: THREE.LinearFilter,\n\ttype: THREE.FloatType,\n\tgenerateMipmaps: true,\n};\n\nexport interface NgtsCausticsOptions extends Partial<NgtThreeElements['ngt-group']> {\n\t/** How many frames it will render, set it to Infinity for runtime, default: 1 */\n\tframes: number;\n\t/** Enables visual cues to help you stage your scene, default: false */\n\tdebug: boolean;\n\t/** Will display caustics only and skip the models, default: false */\n\tcausticsOnly: boolean;\n\t/** Will include back faces and enable the backsideIOR prop, default: false */\n\tbackside: boolean;\n\t/** The IOR refraction index, default: 1.1 */\n\tior: number;\n\t/** The IOR refraction index for back faces (only available when backside is enabled), default: 1.1 */\n\tbacksideIOR: number;\n\t/** The texel size, default: 0.3125 */\n\tworldRadius: number;\n\t/** Intensity of the prjected caustics, default: 0.05 */\n\tintensity: number;\n\t/** Caustics color, default: white */\n\tcolor: THREE.ColorRepresentation;\n\t/** Buffer resolution, default: 2048 */\n\tresolution: number;\n\t/** Camera position, it will point towards the contents bounds center, default: [5, 5, 5] */\n\tlightSource: [x: number, y: number, z: number] | ElementRef<THREE.Object3D> | THREE.Object3D;\n}\n\nconst defaultOptions: NgtsCausticsOptions = {\n\tframes: 1,\n\tdebug: false,\n\tcausticsOnly: false,\n\tbackside: false,\n\tior: 1.1,\n\tbacksideIOR: 1.1,\n\tworldRadius: 0.3125,\n\tintensity: 0.05,\n\tcolor: 'white',\n\tresolution: 2024,\n\tlightSource: [5, 5, 5],\n};\n\n@Component({\n\tselector: 'ngts-caustics',\n\ttemplate: `\n\t\t<ngt-group #group [parameters]=\"parameters()\">\n\t\t\t<ngt-scene #scene>\n\t\t\t\t<ngt-orthographic-camera #camera [up]=\"[0, 1, 0]\" />\n\t\t\t\t<ng-content />\n\t\t\t</ngt-scene>\n\n\t\t\t<ngt-mesh #plane [renderOrder]=\"2\" [rotation]=\"[-Math.PI / 2, 0, 0]\">\n\t\t\t\t<ngt-plane-geometry />\n\t\t\t\t<ngt-caustics-projection-material\n\t\t\t\t\ttransparent\n\t\t\t\t\t[color]=\"color()\"\n\t\t\t\t\t[causticsTexture]=\"causticsTarget().texture\"\n\t\t\t\t\t[causticsTextureB]=\"causticsTargetB().texture\"\n\t\t\t\t\t[blending]=\"CustomBlending\"\n\t\t\t\t\t[blendSrc]=\"OneFactor\"\n\t\t\t\t\t[blendDst]=\"SrcAlphaFactor\"\n\t\t\t\t\t[depthWrite]=\"false\"\n\t\t\t\t/>\n\n\t\t\t\t@if (debug()) {\n\t\t\t\t\t<ngts-edges>\n\t\t\t\t\t\t<ngt-line-basic-material color=\"#ffff00\" [toneMapped]=\"false\" />\n\t\t\t\t\t</ngts-edges>\n\t\t\t\t}\n\t\t\t</ngt-mesh>\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtsEdges],\n})\nexport class NgtsCaustics {\n\tprotected readonly Math = Math;\n\tprotected readonly CustomBlending = THREE.CustomBlending;\n\tprotected readonly OneFactor = THREE.OneFactor;\n\tprotected readonly SrcAlphaFactor = THREE.SrcAlphaFactor;\n\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, [\n\t\t'frames',\n\t\t'debug',\n\t\t'causticsOnly',\n\t\t'backside',\n\t\t'ior',\n\t\t'backsideIOR',\n\t\t'worldRadius',\n\t\t'intensity',\n\t\t'color',\n\t\t'resolution',\n\t\t'lightSource',\n\t]);\n\n\tprotected debug = pick(this.options, 'debug');\n\tprotected color = pick(this.options, 'color');\n\tprivate resolution = pick(this.options, 'resolution');\n\n\tgroupRef = viewChild.required<ElementRef<THREE.Group>>('group');\n\tprivate sceneRef = viewChild.required<ElementRef<THREE.Scene>>('scene');\n\tprivate cameraRef = viewChild.required<ElementRef<THREE.OrthographicCamera>>('camera');\n\tprivate planeRef =\n\t\tviewChild.required<ElementRef<THREE.Mesh<THREE.PlaneGeometry, InstanceType<typeof CausticsProjectionMaterial>>>>(\n\t\t\t'plane',\n\t\t);\n\n\tprivate normalTargetParams = computed(() => ({\n\t\twidth: this.resolution(),\n\t\theight: this.resolution(),\n\t\tsettings: NORMAL_OPTIONS,\n\t}));\n\n\t// Buffers for front and back faces\n\tprivate normalTarget = injectFBO(this.normalTargetParams);\n\tprivate normalTargetB = injectFBO(this.normalTargetParams);\n\n\tprivate causticsTargetParams = computed(() => ({\n\t\twidth: this.resolution(),\n\t\theight: this.resolution(),\n\t\tsettings: CAUSTIC_OPTIONS,\n\t}));\n\tcausticsTarget = injectFBO(this.causticsTargetParams);\n\tcausticsTargetB = injectFBO(this.causticsTargetParams);\n\n\tprivate cameraHelper = injectHelper(\n\t\t() => (this.debug() ? this.cameraRef().nativeElement : null),\n\t\t() => THREE.CameraHelper,\n\t);\n\n\tconstructor() {\n\t\textend({ CausticsProjectionMaterial, Group, Scene, Mesh, PlaneGeometry, LineBasicMaterial, OrthographicCamera });\n\n\t\teffect(() => {\n\t\t\t// track all changes\n\t\t\tconst [group, scene, plane] = [\n\t\t\t\tthis.groupRef().nativeElement,\n\t\t\t\tthis.sceneRef().nativeElement,\n\t\t\t\tthis.planeRef().nativeElement,\n\t\t\t\tthis.options(),\n\t\t\t];\n\t\t\tconst groupInstanceState = getInstanceState(group);\n\t\t\tconst sceneInstanceState = getInstanceState(scene);\n\t\t\tconst planeInstanceState = getInstanceState(plane);\n\n\t\t\tif (!groupInstanceState || !sceneInstanceState || !planeInstanceState) return;\n\n\t\t\tgroupInstanceState.objects();\n\t\t\tsceneInstanceState.objects();\n\t\t\tplaneInstanceState.objects();\n\t\t\tplaneInstanceState.nonObjects();\n\n\t\t\tgroup.updateWorldMatrix(false, true);\n\t\t});\n\n\t\tconst update = createCausticsUpdate(() => {\n\t\t\tconst { lightSource, ...rest } = this.options();\n\n\t\t\treturn {\n\t\t\t\tparams: Object.assign(rest, {\n\t\t\t\t\tlightSource: Array.isArray(lightSource) ? new THREE.Vector3(...lightSource) : resolveRef(lightSource),\n\t\t\t\t}),\n\t\t\t\tnormalTarget: this.normalTarget(),\n\t\t\t\tnormalTargetB: this.normalTargetB(),\n\t\t\t\tcausticsTarget: this.causticsTarget(),\n\t\t\t\tcausticsTargetB: this.causticsTargetB(),\n\t\t\t\tcamera: this.cameraRef().nativeElement,\n\t\t\t\tscene: this.sceneRef().nativeElement,\n\t\t\t\tgroup: this.groupRef().nativeElement,\n\t\t\t\tplane: this.planeRef().nativeElement,\n\t\t\t\thelper: this.cameraHelper(),\n\t\t\t};\n\t\t});\n\n\t\tinjectBeforeRender(({ gl }) => update(gl));\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinput,\n\toutput,\n\tviewChild,\n} from '@angular/core';\nimport { extend, getInstanceState, NgtThreeElements, omit, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { Group } from 'three';\n\nexport interface NgtsCenterState {\n\t/** The next parent above <Center> */\n\tparent: THREE.Object3D;\n\t/** The outmost container group of the <Center> component */\n\tcontainer: THREE.Object3D;\n\twidth: number;\n\theight: number;\n\tdepth: number;\n\tboundingBox: THREE.Box3;\n\tboundingSphere: THREE.Sphere;\n\tcenter: THREE.Vector3;\n\tverticalAlignment: number;\n\thorizontalAlignment: number;\n\tdepthAlignment: number;\n}\n\nexport interface NgtsCenterOptions {\n\ttop?: boolean;\n\tright?: boolean;\n\tbottom?: boolean;\n\tleft?: boolean;\n\tfront?: boolean;\n\tback?: boolean;\n\t/** Disable all axes */\n\tdisable?: boolean;\n\t/** Disable x-axis centering */\n\tdisableX?: boolean;\n\t/** Disable y-axis centering */\n\tdisableY?: boolean;\n\t/** Disable z-axis centering */\n\tdisableZ?: boolean;\n\t/** See https://threejs.org/docs/index.html?q=box3#api/en/math/Box3.setFromObject */\n\tprecise: boolean;\n\t/** Optional cacheKey to keep the component from recalculating on every render */\n\tcacheKey: any;\n}\n\nconst defaultOptions: Partial<NgtThreeElements['ngt-group']> & NgtsCenterOptions = {\n\tprecise: true,\n\tcacheKey: 0,\n};\n\n@Component({\n\tselector: 'ngts-center',\n\ttemplate: `\n\t\t<ngt-group #group [parameters]=\"parameters()\">\n\t\t\t<ngt-group #outer>\n\t\t\t\t<ngt-group #inner>\n\t\t\t\t\t<ng-content />\n\t\t\t\t</ngt-group>\n\t\t\t</ngt-group>\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsCenter {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, [\n\t\t'top',\n\t\t'right',\n\t\t'bottom',\n\t\t'left',\n\t\t'front',\n\t\t'back',\n\t\t'disable',\n\t\t'disableX',\n\t\t'disableY',\n\t\t'disableZ',\n\t\t'precise',\n\t\t'cacheKey',\n\t]);\n\n\tcentered = output<NgtsCenterState>();\n\n\tgroupRef = viewChild.required<ElementRef<THREE.Group>>('group');\n\tprivate outerRef = viewChild.required<ElementRef<THREE.Group>>('outer');\n\tprivate innerRef = viewChild.required<ElementRef<THREE.Group>>('inner');\n\n\tcenterOptions = pick(this.options, [\n\t\t'top',\n\t\t'right',\n\t\t'bottom',\n\t\t'left',\n\t\t'front',\n\t\t'back',\n\t\t'disable',\n\t\t'disableX',\n\t\t'disableY',\n\t\t'disableZ',\n\t\t'precise',\n\t\t'cacheKey',\n\t]);\n\n\tconstructor() {\n\t\textend({ Group });\n\n\t\teffect(() => {\n\t\t\tconst inner = this.innerRef().nativeElement;\n\t\t\tconst innerInstanceState = getInstanceState(inner);\n\t\t\tif (!innerInstanceState) return;\n\n\t\t\tconst children = [...innerInstanceState.objects(), ...innerInstanceState.nonObjects()];\n\t\t\tif (!children?.length) return;\n\n\t\t\tconst [{ precise, top, bottom, right, left, front, back, disable, disableZ, disableY, disableX }, group, outer] =\n\t\t\t\t[this.centerOptions(), this.groupRef().nativeElement, this.outerRef().nativeElement];\n\n\t\t\touter.matrixWorld.identity();\n\t\t\tconst box3 = new THREE.Box3().setFromObject(inner, precise);\n\t\t\tconst center = new THREE.Vector3();\n\t\t\tconst sphere = new THREE.Sphere();\n\n\t\t\tconst width = box3.max.x - box3.min.x;\n\t\t\tconst height = box3.max.y - box3.min.y;\n\t\t\tconst depth = box3.max.z - box3.min.z;\n\n\t\t\tbox3.getCenter(center);\n\t\t\tbox3.getBoundingSphere(sphere);\n\n\t\t\tconst vAlign = top ? height / 2 : bottom ? -height / 2 : 0;\n\t\t\tconst hAlign = left ? -width / 2 : right ? width / 2 : 0;\n\t\t\tconst dAlign = front ? depth / 2 : back ? -depth / 2 : 0;\n\n\t\t\touter.position.set(\n\t\t\t\tdisable || disableX ? 0 : -center.x + hAlign,\n\t\t\t\tdisable || disableY ? 0 : -center.y + vAlign,\n\t\t\t\tdisable || disableZ ? 0 : -center.z + dAlign,\n\t\t\t);\n\n\t\t\tthis.centered.emit({\n\t\t\t\tparent: group.parent!,\n\t\t\t\tcontainer: group,\n\t\t\t\twidth,\n\t\t\t\theight,\n\t\t\t\tdepth,\n\t\t\t\tboundingBox: box3,\n\t\t\t\tboundingSphere: sphere,\n\t\t\t\tcenter,\n\t\t\t\tverticalAlignment: vAlign,\n\t\t\t\thorizontalAlignment: hAlign,\n\t\t\t\tdepthAlignment: dAlign,\n\t\t\t});\n\t\t});\n\t}\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\tcomputed,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { NgtArgs, NgtThreeElements, extend, injectBeforeRender, injectStore, omit, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { Group, Mesh, MeshBasicMaterial, OrthographicCamera } from 'three';\nimport { HorizontalBlurShader, VerticalBlurShader } from 'three-stdlib';\n\nexport interface NgtsContactShadowsOptions extends Partial<Omit<NgtThreeElements['ngt-group'], 'scale'>> {\n\topacity: number;\n\twidth: number;\n\theight: number;\n\tblur: number;\n\tnear: number;\n\tfar: number;\n\tsmooth: boolean;\n\tresolution: number;\n\tframes: number;\n\tscale: number | [x: number, y: number];\n\tcolor: THREE.ColorRepresentation;\n\tdepthWrite: boolean;\n}\n\nconst defaultOptions: NgtsContactShadowsOptions = {\n\tscale: 10,\n\tframes: Infinity,\n\topacity: 1,\n\twidth: 1,\n\theight: 1,\n\tblur: 1,\n\tnear: 0,\n\tfar: 10,\n\tresolution: 512,\n\tsmooth: true,\n\tcolor: '#000000',\n\tdepthWrite: false,\n};\n\n@Component({\n\tselector: 'ngts-contact-shadows',\n\ttemplate: `\n\t\t<ngt-group #contactShadows [rotation]=\"[Math.PI / 2, 0, 0]\" [parameters]=\"parameters()\">\n\t\t\t<ngt-mesh\n\t\t\t\t[scale]=\"[1, -1, 1]\"\n\t\t\t\t[rotation]=\"[-Math.PI / 2, 0, 0]\"\n\t\t\t\t[renderOrder]=\"renderOrder() ?? 0\"\n\t\t\t\t[geometry]=\"planeGeometry()\"\n\t\t\t>\n\t\t\t\t<ngt-mesh-basic-material transparent [opacity]=\"opacity()\" [depthWrite]=\"depthWrite()\" [map]=\"texture()\" />\n\t\t\t</ngt-mesh>\n\t\t\t<ngt-orthographic-camera *args=\"cameraArgs()\" #shadowsCamera />\n\t\t</ngt-group>\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsContactShadows {\n\tprotected readonly Math = Math;\n\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, [\n\t\t'scale',\n\t\t'frames',\n\t\t'opacity',\n\t\t'width',\n\t\t'height',\n\t\t'blur',\n\t\t'near',\n\t\t'far',\n\t\t'resolution',\n\t\t'smooth',\n\t\t'color',\n\t\t'depthWrite',\n\t\t'renderOrder',\n\t]);\n\n\tcontactShadowsRef = viewChild.required<ElementRef<THREE.Group>>('contactShadows');\n\tprivate shadowsCameraRef = viewChild<ElementRef<THREE.OrthographicCamera>>('shadowsCamera');\n\n\tprivate store = injectStore();\n\n\tprivate width = pick(this.options, 'width');\n\tprivate height = pick(this.options, 'height');\n\tprivate scale = pick(this.options, 'scale');\n\n\tprivate scaledWidth = computed(() => {\n\t\tconst [width, scale] = [this.width(), this.scale()];\n\t\treturn width * (Array.isArray(scale) ? scale[0] : scale);\n\t});\n\n\tprivate scaledHeight = computed(() => {\n\t\tconst [height, scale] = [this.height(), this.scale()];\n\t\treturn height * (Array.isArray(scale) ? scale[1] : scale);\n\t});\n\n\tprivate resolution = pick(this.options, 'resolution');\n\tprivate color = pick(this.options, 'color');\n\tprivate near = pick(this.options, 'near');\n\tprivate far = pick(this.options, 'far');\n\tprivate smooth = pick(this.options, 'smooth');\n\tprivate frames = pick(this.options, 'frames');\n\tprivate blur = pick(this.options, 'blur');\n\n\tprivate renderTarget = computed(() => this.createRenderTarget(this.resolution()));\n\tprivate renderTargetBlur = computed(() => this.createRenderTarget(this.resolution()));\n\n\tprotected planeGeometry = computed(() =>\n\t\tnew THREE.PlaneGeometry(this.scaledWidth(), this.scaledHeight()).rotateX(Math.PI / 2),\n\t);\n\tprivate blurPlane = computed(() => new THREE.Mesh(this.planeGeometry()));\n\tprivate depthMaterial = computed(() => {\n\t\tconst color = new THREE.Color(this.color());\n\t\tconst material = new THREE.MeshDepthMaterial();\n\t\tmaterial.depthTest = material.depthWrite = false;\n\t\tmaterial.onBeforeCompile = (shader) => {\n\t\t\tshader.uniforms = { ...shader.uniforms, ucolor: { value: color } };\n\t\t\tshader.fragmentShader = shader.fragmentShader.replace(\n\t\t\t\t`void main() {`, //\n\t\t\t\t`uniform vec3 ucolor;\n void main() {\n `,\n\t\t\t);\n\t\t\tshader.fragmentShader = shader.fragmentShader.replace(\n\t\t\t\t'vec4( vec3( 1.0 - fragCoordZ ), opacity );',\n\t\t\t\t// Colorize the shadow, multiply by the falloff so that the center can remain darker\n\t\t\t\t'vec4( ucolor * fragCoordZ * 2.0, ( 1.0 - fragCoordZ ) * 1.0 );',\n\t\t\t);\n\t\t};\n\t\treturn material;\n\t});\n\n\tprivate horizontalBlurMaterial = new THREE.ShaderMaterial({ ...HorizontalBlurShader, depthTest: false });\n\tprivate verticalBlurMaterial = new THREE.ShaderMaterial({ ...VerticalBlurShader, depthTest: false });\n\n\tprotected renderOrder = pick(this.options, 'renderOrder');\n\tprotected opacity = pick(this.options, 'opacity');\n\tprotected depthWrite = pick(this.options, 'depthWrite');\n\tprotected texture = pick(this.renderTarget, 'texture');\n\tprotected cameraArgs = computed(() => {\n\t\tconst [width, height, near, far] = [this.scaledWidth(), this.scaledHeight(), this.near(), this.far()];\n\t\treturn [-width / 2, width / 2, height / 2, -height / 2, near, far];\n\t});\n\n\tconstructor() {\n\t\textend({ Group, Mesh, MeshBasicMaterial, OrthographicCamera });\n\n\t\tlet count = 0;\n\t\tinjectBeforeRender(() => {\n\t\t\tconst shadowsCamera = this.shadowsCameraRef()?.nativeElement;\n\t\t\tif (!shadowsCamera) return;\n\n\t\t\tconst frames = this.frames();\n\t\t\tif (frames === Infinity || count < frames) {\n\t\t\t\tthis.renderShadows();\n\t\t\t\tcount++;\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate renderShadows() {\n\t\tconst shadowsCamera = this.shadowsCameraRef()?.nativeElement;\n\t\tif (!shadowsCamera) return;\n\n\t\tconst [blur, smooth, gl, scene, contactShadows, depthMaterial, renderTarget] = [\n\t\t\tthis.blur(),\n\t\t\tthis.smooth(),\n\t\t\tthis.store.snapshot.gl,\n\t\t\tthis.store.snapshot.scene,\n\t\t\tthis.contactShadowsRef().nativeElement,\n\t\t\tthis.depthMaterial(),\n\t\t\tthis.renderTarget(),\n\t\t];\n\n\t\tconst initialBackground = scene.background;\n\t\tconst initialOverrideMaterial = scene.overrideMaterial;\n\t\tconst initialClearAlpha = gl.getClearAlpha();\n\n\t\tcontactShadows.visible = false;\n\t\tscene.background = null;\n\t\tscene.overrideMaterial = depthMaterial;\n\t\tgl.setClearAlpha(0);\n\n\t\t// render to the render target to get the depths\n\t\tgl.setRenderTarget(renderTarget);\n\t\tgl.render(scene, shadowsCamera);\n\n\t\tthis.blurShadows(blur);\n\t\tif (smooth) this.blurShadows(blur * 0.4);\n\n\t\t// reset\n\t\tgl.setRenderTarget(null);\n\n\t\tcontactShadows.visible = true;\n\t\tscene.overrideMaterial = initialOverrideMaterial;\n\t\tscene.background = initialBackground;\n\t\tgl.setClearAlpha(initialClearAlpha);\n\t}\n\n\tprivate blurShadows(blur: number) {\n\t\tconst shadowsCamera = this.shadowsCameraRef()?.nativeElement;\n\t\tif (!shadowsCamera) return;\n\n\t\tconst [blurPlane, horizontalBlurMaterial, verticalBlurMaterial, renderTargetBlur, renderTarget, gl] = [\n\t\t\tthis.blurPlane(),\n\t\t\tthis.horizontalBlurMaterial,\n\t\t\tthis.verticalBlurMaterial,\n\t\t\tthis.renderTargetBlur(),\n\t\t\tthis.renderTarget(),\n\t\t\tthis.store.snapshot.gl,\n\t\t];\n\n\t\tblurPlane.visible = true;\n\t\tblurPlane.material = horizontalBlurMaterial;\n\t\thorizontalBlurMaterial.uniforms['tDiffuse'].value = renderTarget.texture;\n\t\thorizontalBlurMaterial.uniforms['h'].value = blur / 256;\n\t\tgl.setRenderTarget(renderTargetBlur);\n\t\tgl.render(blurPlane, shadowsCamera);\n\n\t\tblurPlane.material = verticalBlurMaterial;\n\t\tverticalBlurMaterial.uniforms['tDiffuse'].value = renderTargetBlur.texture;\n\t\tverticalBlurMaterial.uniforms['v'].value = blur / 256;\n\t\tgl.setRenderTarget(renderTarget);\n\t\tgl.render(blurPlane, shadowsCamera);\n\t\tblurPlane.visible = false;\n\t}\n\n\tprivate createRenderTarget(resolution: number) {\n\t\tconst renderTarget = new THREE.WebGLRenderTarget(resolution, resolution);\n\t\trenderTarget.texture.generateMipmaps = false;\n\t\treturn renderTarget;\n\t}\n}\n","import { computed, effect, Injector, signal, untracked } from '@angular/core';\nimport { GainMapLoader, HDRJPGLoader } from '@monogrid/gainmap-js';\nimport { injectLoader, injectStore, is, pick } from 'angular-three';\nimport { LinearEncoding, sRGBEncoding, TextureEncoding } from 'angular-three-soba/misc';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport * as THREE from 'three';\nimport { EXRLoader, RGBELoader } from 'three-stdlib';\n\nexport const ENVIRONMENT_PRESETS = {\n\tapartment: 'lebombo_1k.hdr',\n\tcity: 'potsdamer_platz_1k.hdr',\n\tdawn: 'kiara_1_dawn_1k.hdr',\n\tforest: 'forest_slope_1k.hdr',\n\tlobby: 'st_fagans_interior_1k.hdr',\n\tnight: 'dikhololo_night_1k.hdr',\n\tpark: 'rooitou_park_1k.hdr',\n\tstudio: 'studio_small_03_1k.hdr',\n\tsunset: 'venice_sunset_1k.hdr',\n\twarehouse: 'empty_warehouse_01_1k.hdr',\n};\n\nexport type NgtsEnvironmentPresets = keyof typeof ENVIRONMENT_PRESETS;\n\nconst CUBEMAP_ROOT = 'https://raw.githack.com/pmndrs/drei-assets/456060a26bbeb8fdf79326f224b6d99b8bcce736/hdri/';\n\nexport interface NgtsInjectEnvironmentOptions {\n\tfiles: string | string[];\n\tpath: string;\n\tpreset?: NgtsEnvironmentPresets;\n\textensions?: (loader: THREE.Loader) => void;\n\tencoding?: TextureEncoding;\n}\n\nconst defaultFiles = ['/px.png', '/nx.png', '/py.png', '/ny.png', '/pz.png', '/nz.png'];\n\nexport function injectEnvironment(\n\toptions: () => Partial<NgtsInjectEnvironmentOptions> = () => ({}),\n\t{ injector }: { injector?: Injector } = {},\n) {\n\treturn assertInjector(injectEnvironment, injector, () => {\n\t\tconst adjustedOptions = computed(() => {\n\t\t\tconst { preset, extensions, encoding, ...rest } = options();\n\t\t\tlet { files, path } = rest;\n\n\t\t\tif (files == null) {\n\t\t\t\tfiles = defaultFiles;\n\t\t\t}\n\n\t\t\tif (path == null) {\n\t\t\t\tpath = '';\n\t\t\t}\n\n\t\t\tif (preset) {\n\t\t\t\tvalidatePreset(preset);\n\t\t\t\tfiles = ENVIRONMENT_PRESETS[preset];\n\t\t\t\tpath = CUBEMAP_ROOT;\n\t\t\t}\n\n\t\t\treturn { files, preset, encoding, path, extensions };\n\t\t});\n\n\t\tconst files = pick(adjustedOptions, 'files');\n\t\tconst multiFile = computed(() => Array.isArray(files()));\n\t\tconst resultOptions = computed(() => getExtension(files()));\n\t\tconst extension = pick(resultOptions, 'extension');\n\t\tconst loader = computed(() => getLoader(extension()));\n\n\t\tconst store = injectStore();\n\n\t\tconst texture = signal<THREE.Texture | THREE.CubeTexture | null>(null);\n\n\t\teffect(() => {\n\t\t\tconst [_extension, _multiFile, _files] = [untracked(extension), untracked(multiFile), files()];\n\n\t\t\tif (_extension !== 'webp' && _extension !== 'jpg' && _extension !== 'jpeg') return;\n\n\t\t\tstore.gl().domElement.addEventListener(\n\t\t\t\t'webglcontextlost',\n\t\t\t\t() => {\n\t\t\t\t\t// @ts-expect-error - files is correctly passed\n\t\t\t\t\tinjectLoader.clear(multiFile ? [_files] : _files);\n\t\t\t\t},\n\t\t\t\t{ once: true },\n\t\t\t);\n\t\t});\n\n\t\tconst result = injectLoader(\n\t\t\tloader,\n\t\t\t// @ts-expect-error - ensure the files is an array\n\t\t\t() => {\n\t\t\t\tconst { files } = adjustedOptions();\n\t\t\t\treturn Array.isArray(files) ? [files] : files;\n\t\t\t},\n\t\t\t{\n\t\t\t\textensions: (loader) => {\n\t\t\t\t\tconst { extensions, path } = adjustedOptions();\n\t\t\t\t\tconst { extension } = resultOptions();\n\t\t\t\t\tif (extension === 'webp' || extension === 'jpg' || extension === 'jpeg') {\n\t\t\t\t\t\t// @ts-expect-error - Gainmap requires a renderer\n\t\t\t\t\t\tloader.setRenderer(store.gl());\n\t\t\t\t\t}\n\n\t\t\t\t\tloader.setPath?.(path);\n\t\t\t\t\tif (extensions) extensions(loader);\n\t\t\t\t},\n\t\t\t},\n\t\t);\n\n\t\teffect(() => {\n\t\t\tconst loaderResult = result();\n\t\t\tif (!loaderResult) return;\n\n\t\t\tconst { extension, isCubeMap } = untracked(resultOptions);\n\t\t\tconst _multiFile = untracked(multiFile);\n\t\t\tconst { encoding } = untracked(adjustedOptions);\n\n\t\t\t// @ts-expect-error - ensure textureResult is a Texture or CubeTexture\n\t\t\tlet textureResult = (_multiFile ? loaderResult[0] : loaderResult) as Texture | CubeTexture;\n\n\t\t\t// NOTE: racing condition, we can skip this\n\t\t\t// we just said above that if multiFile is false, it is a single Texture\n\t\t\tif (\n\t\t\t\t!_multiFile &&\n\t\t\t\tArray.isArray(textureResult) &&\n\t\t\t\tis.three<THREE.CubeTexture>(textureResult[0], 'isCubeTexture')\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t!is.three<THREE.CubeTexture>(textureResult, 'isCubeTexture') &&\n\t\t\t\t(extension === 'jpg' || extension === 'jpeg' || extension === 'webp')\n\t\t\t) {\n\t\t\t\ttextureResult = (textureResult as any).renderTarget?.texture;\n\t\t\t}\n\n\t\t\ttextureResult.mapping = isCubeMap ? THREE.CubeReflectionMapping : THREE.EquirectangularReflectionMapping;\n\n\t\t\tif ('colorSpace' in textureResult)\n\t\t\t\t(textureResult as any).colorSpace = encoding ?? (isCubeMap ? 'srgb' : 'srgb-linear');\n\t\t\telse (textureResult as any).encoding = encoding ?? (isCubeMap ? sRGBEncoding : LinearEncoding);\n\n\t\t\ttexture.set(textureResult);\n\t\t});\n\n\t\treturn texture.asReadonly();\n\t});\n}\n\ninjectEnvironment.preload = (options: () => Partial<NgtsInjectEnvironmentOptions> = () => ({})) => {\n\tconst _options = options();\n\tlet { files, path } = _options;\n\tconst { preset, extensions } = _options;\n\n\tif (files == null) {\n\t\tfiles = defaultFiles;\n\t}\n\n\tif (path == null) {\n\t\tpath = '';\n\t}\n\n\tif (preset) {\n\t\tvalidatePreset(preset);\n\t\tfiles = ENVIRONMENT_PRESETS[preset];\n\t\tpath = CUBEMAP_ROOT;\n\t}\n\n\tconst { extension } = getExtension(files);\n\n\tif (extension === 'webp' || extension === 'jpg' || extension === 'jpeg') {\n\t\tthrow new Error('injectEnvironment: Preloading gainmaps is not supported');\n\t}\n\n\tconst loader = getLoader(extension);\n\tif (!loader) throw new Error('injectEnvironment: Unrecognized file extension: ' + files);\n\n\tinjectLoader.preload(\n\t\t() => loader,\n\t\t// @ts-expect-error - files is correctly passed\n\t\t() => (Array.isArray(files) ? [files] : files),\n\t\t(loader) => {\n\t\t\tloader.setPath?.(path);\n\t\t\tif (extensions) extensions(loader);\n\t\t},\n\t);\n};\n\ninjectEnvironment.clear = (clearOptions: { files?: string | string[]; preset?: NgtsEnvironmentPresets }) => {\n\tconst options = { files: defaultFiles, ...clearOptions };\n\tlet { files } = options;\n\tconst preset = options.preset;\n\n\tif (preset) {\n\t\tvalidatePreset(preset);\n\t\tfiles = ENVIRONMENT_PRESETS[preset];\n\t}\n\n\tinjectLoader.clear(files);\n};\n\nfunction validatePreset(preset: string) {\n\tif (!(preset in ENVIRONMENT_PRESETS))\n\t\tthrow new Error('Preset must be one of: ' + Object.keys(ENVIRONMENT_PRESETS).join(', '));\n}\n\nfunction getExtension(files: string | string[]) {\n\tconst isCubeMap = Array.isArray(files) && files.length === 6;\n\tconst isGainmap = Array.isArray(files) && files.length === 3 && files.some((file) => file.endsWith('json'));\n\tconst firstEntry = Array.isArray(files) ? files[0] : files;\n\n\t// Everything else\n\tconst extension: string | false | undefined = isCubeMap\n\t\t? 'cube'\n\t\t: isGainmap\n\t\t\t? 'webp'\n\t\t\t: firstEntry.startsWith('data:application/exr')\n\t\t\t\t? 'exr'\n\t\t\t\t: firstEntry.startsWith('data:application/hdr')\n\t\t\t\t\t? 'hdr'\n\t\t\t\t\t: firstEntry.startsWith('data:image/jpeg')\n\t\t\t\t\t\t? 'jpg'\n\t\t\t\t\t\t: firstEntry.split('.').pop()?.split('?')?.shift()?.toLowerCase();\n\n\treturn { extension, isCubeMap, isGainmap };\n}\n\nfunction getLoader(extension: string | undefined) {\n\tconst loader =\n\t\textension === 'cube'\n\t\t\t? THREE.CubeTextureLoader\n\t\t\t: extension === 'hdr'\n\t\t\t\t? RGBELoader\n\t\t\t\t: extension === 'exr'\n\t\t\t\t\t? EXRLoader\n\t\t\t\t\t: extension === 'jpg' || extension === 'jpeg'\n\t\t\t\t\t\t? (HDRJPGLoader as unknown as typeof THREE.Loader)\n\t\t\t\t\t\t: extension === 'webp'\n\t\t\t\t\t\t\t? (GainMapLoader as unknown as typeof THREE.Loader)\n\t\t\t\t\t\t\t: null;\n\n\tif (!loader) {\n\t\tthrow new Error('injectEnvironment: Unrecognized file extension: ' + extension);\n\t}\n\n\treturn loader as typeof THREE.Loader;\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tcontentChild,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tDestroyRef,\n\tDirective,\n\teffect,\n\tEffectRef,\n\tElementRef,\n\tinject,\n\tInjector,\n\tinput,\n\toutput,\n\tTemplateRef,\n\tviewChild,\n} from '@angular/core';\nimport {\n\tapplyProps,\n\textend,\n\tinjectBeforeRender,\n\tinjectStore,\n\tis,\n\tNgtArgs,\n\tNgtEuler,\n\tNgtPortal,\n\tNgtPortalContent,\n\tpick,\n} from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { CubeCamera } from 'three';\nimport { GroundProjectedEnv } from 'three-stdlib';\nimport { injectEnvironment, NgtsEnvironmentPresets, NgtsInjectEnvironmentOptions } from './inject-environment';\n\nfunction resolveScene(scene: THREE.Scene | ElementRef<THREE.Scene>) {\n\treturn is.ref(scene) ? scene.nativeElement : scene;\n}\n\nfunction setEnvProps(\n\tbackground: boolean | 'only',\n\tscene: THREE.Scene | ElementRef<THREE.Scene> | undefined,\n\tdefaultScene: THREE.Scene,\n\ttexture: THREE.Texture,\n\tsceneProps: Partial<NgtsEnvironmentOptions> = {},\n) {\n\tsceneProps.backgroundBlurriness ??= sceneProps.blur ?? 0;\n\tsceneProps.backgroundIntensity ??= 1;\n\tsceneProps.backgroundRotation ??= [0, 0, 0];\n\tsceneProps.environmentIntensity ??= 1;\n\tsceneProps.environmentRotation ??= [0, 0, 0];\n\n\tconst target = resolveScene(scene || defaultScene);\n\tconst oldbg = target.background;\n\tconst oldenv = target.environment;\n\tconst oldSceneProps = {\n\t\tbackgroundBlurriness: target.backgroundBlurriness,\n\t\tbackgroundIntensity: target.backgroundIntensity,\n\t\tbackgroundRotation: target.backgroundRotation?.clone?.() ?? [0, 0, 0],\n\t\tenvironmentIntensity: target.environmentIntensity,\n\t\tenvironmentRotation: target.environmentRotation?.clone?.() ?? [0, 0, 0],\n\t};\n\n\tif (background !== 'only') target.environment = texture;\n\tif (background) target.background = texture;\n\tapplyProps(target, sceneProps);\n\n\treturn () => {\n\t\tif (background !== 'only') target.environment = oldenv;\n\t\tif (background) target.background = oldbg;\n\t\tapplyProps(target, oldSceneProps);\n\t};\n}\n\nexport interface NgtsEnvironmentOptions extends Partial<NgtsInjectEnvironmentOptions> {\n\tframes?: number;\n\tnear?: number;\n\tfar?: number;\n\tresolution?: number;\n\tbackground?: boolean | 'only';\n\n\t/** deprecated, use backgroundBlurriness */\n\tblur?: number;\n\tbackgroundBlurriness?: number;\n\tbackgroundIntensity?: number;\n\tbackgroundRotation?: NgtEuler;\n\tenvironmentIntensity?: number;\n\tenvironmentRotation?: NgtEuler;\n\n\tmap?: THREE.Texture;\n\tpreset?: NgtsEnvironmentPresets;\n\tscene?: THREE.Scene | ElementRef<THREE.Scene>;\n\tground?: boolean | { radius?: number; height?: number; scale?: number };\n}\n\nconst defaultBackground: NgtsEnvironmentOptions = {\n\tbackground: false,\n};\n\n@Directive({ selector: 'ngts-environment-map' })\nexport class NgtsEnvironmentMap {\n\toptions = input(defaultBackground, { transform: mergeInputs(defaultBackground) });\n\tenvSet = output<void>();\n\n\tconstructor() {\n\t\tconst store = injectStore();\n\n\t\tconst _map = pick(this.options, 'map');\n\t\tconst _envConfig = computed(() => {\n\t\t\tconst {\n\t\t\t\tbackground = false,\n\t\t\t\tscene,\n\t\t\t\tblur,\n\t\t\t\tbackgroundBlurriness,\n\t\t\t\tbackgroundIntensity,\n\t\t\t\tbackgroundRotation,\n\t\t\t\tenvironmentIntensity,\n\t\t\t\tenvironmentRotation,\n\t\t\t} = this.options();\n\n\t\t\treturn {\n\t\t\t\tbackground,\n\t\t\t\tscene,\n\t\t\t\tblur,\n\t\t\t\tbackgroundBlurriness,\n\t\t\t\tbackgroundIntensity,\n\t\t\t\tbackgroundRotation,\n\t\t\t\tenvironmentIntensity,\n\t\t\t\tenvironmentRotation,\n\t\t\t};\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst map = _map();\n\t\t\tif (!map) return;\n\t\t\tconst { background = false, scene, ...config } = _envConfig();\n\t\t\tconst cleanup = setEnvProps(background, scene, store.scene(), map, config);\n\t\t\tthis.envSet.emit();\n\t\t\tonCleanup(() => cleanup());\n\t\t});\n\t}\n}\n\n@Directive({ selector: 'ngts-environment-cube' })\nexport class NgtsEnvironmentCube {\n\toptions = input(defaultBackground, { transform: mergeInputs(defaultBackground) });\n\tenvSet = output<void>();\n\n\tprivate store = injectStore();\n\n\tprivate envConfig = computed(() => {\n\t\tconst {\n\t\t\tbackground = false,\n\t\t\tscene,\n\t\t\tblur,\n\t\t\tbackgroundBlurriness,\n\t\t\tbackgroundIntensity,\n\t\t\tbackgroundRotation,\n\t\t\tenvironmentIntensity,\n\t\t\tenvironmentRotation,\n\t\t} = this.options();\n\n\t\treturn {\n\t\t\tbackground,\n\t\t\tscene,\n\t\t\tblur,\n\t\t\tbackgroundBlurriness,\n\t\t\tbackgroundIntensity,\n\t\t\tbackgroundRotation,\n\t\t\tenvironmentIntensity,\n\t\t\tenvironmentRotation,\n\t\t};\n\t});\n\n\tconstructor() {\n\t\tconst _texture = injectEnvironment(this.options);\n\n\t\teffect((onCleanup) => {\n\t\t\tconst texture = _texture();\n\t\t\tif (!texture) return;\n\t\t\tconst { background = false, scene, ...config } = this.envConfig();\n\t\t\tconst cleanup = setEnvProps(background, scene, this.store.scene(), texture, config);\n\t\t\tthis.envSet.emit();\n\t\t\tonCleanup(() => cleanup());\n\t\t});\n\n\t\tinject(DestroyRef).onDestroy(() => {\n\t\t\t_texture()?.dispose();\n\t\t});\n\t}\n}\n\n@Component({\n\tselector: 'ngts-environment-portal',\n\ttemplate: `\n\t\t<ngt-portal [container]=\"virtualScene\">\n\t\t\t<ng-template portalContent let-injector=\"injector\">\n\t\t\t\t<ng-container\n\t\t\t\t\t[ngTemplateOutlet]=\"content()\"\n\t\t\t\t\t[ngTemplateOutletInjector]=\"injector\"\n\t\t\t\t\t[ngTemplateOutletContext]=\"{ injector, container: virtualScene }\"\n\t\t\t\t/>\n\n\t\t\t\t<ngt-cube-camera #cubeCamera *args=\"cameraArgs()\" />\n\n\t\t\t\t@if (files() || preset()) {\n\t\t\t\t\t<ngts-environment-cube [options]=\"envCubeOptions()\" (envSet)=\"onEnvSet()\" />\n\t\t\t\t} @else if (map()) {\n\t\t\t\t\t<ngts-environment-map [options]=\"envMapOptions()\" (envSet)=\"onEnvSet()\" />\n\t\t\t\t}\n\t\t\t</ng-template>\n\t\t</ngt-portal>\n\t`,\n\timports: [NgtsEnvironmentCube, NgtsEnvironmentMap, NgtArgs, NgtPortal, NgtPortalContent, NgTemplateOutlet],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsEnvironmentPortal {\n\tprivate defaultOptions: NgtsEnvironmentOptions = {\n\t\tnear: 1,\n\t\tfar: 1000,\n\t\tresolution: 256,\n\t\tframes: 1,\n\t\tbackground: false,\n\t};\n\toptions = input(this.defaultOptions, { transform: mergeInputs(this.defaultOptions) });\n\tcontent = input.required<TemplateRef<unknown>>();\n\tenvSet = output<void>();\n\n\tprivate injector = inject(Injector);\n\tprivate store = injectStore();\n\n\tprivate cameraRef = viewChild<ElementRef<THREE.CubeCamera>>('cubeCamera');\n\n\tprotected map = pick(this.options, 'map');\n\tprotected files = pick(this.options, 'files');\n\tprotected preset = pick(this.options, 'preset');\n\tprivate extensions = pick(this.options, 'extensions');\n\tprivate path = pick(this.options, 'path');\n\n\tprotected envMapOptions = computed(() => ({ background: true, map: this.map(), extensions: this.extensions() }));\n\tprotected envCubeOptions = computed(() => ({\n\t\tbackground: true,\n\t\tfiles: this.files(),\n\t\tpreset: this.preset(),\n\t\textensions: this.extensions(),\n\t\tpath: this.path(),\n\t}));\n\n\tprivate near = pick(this.options, 'near');\n\tprivate far = pick(this.options, 'far');\n\tprivate resolution = pick(this.options, 'resolution');\n\tprivate fbo = computed(() => {\n\t\tconst fbo = new THREE.WebGLCubeRenderTarget(this.resolution());\n\t\tfbo.texture.type = THREE.HalfFloatType;\n\t\treturn fbo;\n\t});\n\n\tprotected cameraArgs = computed(() => [this.near(), this.far(), this.fbo()]);\n\tprotected virtualScene = new THREE.Scene();\n\n\tprivate setEnvEffectRef?: EffectRef;\n\n\tconstructor() {\n\t\textend({ CubeCamera });\n\n\t\teffect((onCleanup) => {\n\t\t\tconst [files, preset, map] = [this.files(), this.preset(), this.map()];\n\t\t\t// NOTE: when there's none of this, we don't render cube or map so we need to setEnv here\n\t\t\tif (!!files || !!preset || !!map) return;\n\t\t\tconst cleanup = this.setPortalEnv();\n\t\t\tonCleanup(() => cleanup?.());\n\t\t});\n\n\t\tlet count = 1;\n\t\tinjectBeforeRender(() => {\n\t\t\tconst frames = this.options().frames;\n\t\t\tif (frames === Infinity || (frames != null && count < frames)) {\n\t\t\t\tconst camera = this.cameraRef()?.nativeElement;\n\t\t\t\tif (camera) {\n\t\t\t\t\tcamera.update(this.store.snapshot.gl, this.virtualScene);\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tinject(DestroyRef).onDestroy(() => {\n\t\t\tif (this.setEnvEffectRef) this.setEnvEffectRef.destroy();\n\t\t});\n\t}\n\n\t// NOTE: we use onEnvSet here to ensure that EnvironmentCube or EnvironmentMap sets the env before the portal\n\tonEnvSet() {\n\t\tif (this.setEnvEffectRef) this.setEnvEffectRef.destroy();\n\t\tthis.setEnvEffectRef = effect(\n\t\t\t(onCleanup) => {\n\t\t\t\tconst cleanup = this.setPortalEnv();\n\t\t\t\tonCleanup(() => cleanup?.());\n\t\t\t},\n\t\t\t{ manualCleanup: true, injector: this.injector },\n\t\t);\n\t}\n\n\tprivate setPortalEnv() {\n\t\tconst camera = this.cameraRef();\n\t\tif (!camera?.nativeElement) return;\n\n\t\tconst [\n\t\t\t{\n\t\t\t\tframes,\n\t\t\t\tbackground = false,\n\t\t\t\tscene,\n\t\t\t\tblur,\n\t\t\t\tbackgroundBlurriness,\n\t\t\t\tbackgroundIntensity,\n\t\t\t\tbackgroundRotation,\n\t\t\t\tenvironmentIntensity,\n\t\t\t\tenvironmentRotation,\n\t\t\t},\n\t\t\tgl,\n\t\t\tfbo,\n\t\t\tdefaultScene,\n\t\t] = [this.options(), this.store.gl(), this.fbo(), this.store.scene()];\n\n\t\tif (frames === 1) camera.nativeElement.update(gl, this.virtualScene);\n\t\tconst cleanup = setEnvProps(background, scene, defaultScene, fbo.texture, {\n\t\t\tblur,\n\t\t\tbackgroundBlurriness,\n\t\t\tbackgroundIntensity,\n\t\t\tbackgroundRotation,\n\t\t\tenvironmentIntensity,\n\t\t\tenvironmentRotation,\n\t\t});\n\t\tthis.envSet.emit();\n\t\treturn cleanup;\n\t}\n}\n\n@Component({\n\tselector: 'ngts-environment-ground',\n\ttemplate: `\n\t\t<ngts-environment-map [options]=\"envMapOptions()\" (envSet)=\"envSet.emit()\" />\n\t\t<ngt-ground-projected-env *args=\"args()\" [scale]=\"scale()\" [height]=\"height()\" [radius]=\"radius()\" />\n\t`,\n\timports: [NgtsEnvironmentMap, NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsEnvironmentGround {\n\toptions = input({} as NgtsEnvironmentOptions);\n\tenvSet = output<void>();\n\n\tprivate defaultTexture = injectEnvironment(this.options);\n\n\tprotected height = computed(() => (this.options().ground as any)?.height);\n\tprotected radius = computed(() => (this.options().ground as any)?.radius);\n\tprotected scale = computed(() => (this.options().ground as any)?.scale ?? 1000);\n\tprotected args = computed(() => [this.options().map || this.defaultTexture()]);\n\tprotected envMapOptions = computed(() => {\n\t\tconst { map: _, ...options } = this.options();\n\t\tconst [map] = this.args();\n\t\treturn Object.assign(options, { map }) as NgtsEnvironmentOptions;\n\t});\n\n\tconstructor() {\n\t\textend({ GroundProjectedEnv });\n\t}\n}\n\n@Component({\n\tselector: 'ngts-environment',\n\ttemplate: `\n\t\t@let _options = options();\n\t\t@let _content = content();\n\n\t\t@if (_options.ground) {\n\t\t\t<ngts-environment-ground [options]=\"_options\" (envSet)=\"envSet.emit()\" />\n\t\t} @else if (_options.map) {\n\t\t\t<ngts-environment-map [options]=\"_options\" (envSet)=\"envSet.emit()\" />\n\t\t} @else if (_content) {\n\t\t\t<ngts-environment-portal [options]=\"_options\" [content]=\"_content\" (envSet)=\"envSet.emit()\" />\n\t\t} @else {\n\t\t\t<ngts-environment-cube [options]=\"_options\" (envSet)=\"envSet.emit()\" />\n\t\t}\n\t`,\n\timports: [NgtsEnvironmentCube, NgtsEnvironmentMap, NgtsEnvironmentPortal, NgtsEnvironmentGround],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsEnvironment {\n\toptions = input({} as NgtsEnvironmentOptions);\n\tcontent = contentChild(TemplateRef);\n\tenvSet = output<void>();\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tElementRef,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { extend, injectBeforeRender, NgtThreeElements, omit } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { Group } from 'three';\n\nexport interface NgtsFloatOptions extends Partial<NgtThreeElements['ngt-group']> {\n\tenabled: boolean;\n\tspeed: number;\n\trotationIntensity: number;\n\tfloatIntensity: number;\n\tfloatingRange: [number?, number?];\n\tautoInvalidate: boolean;\n}\n\nconst defaultOptions: NgtsFloatOptions = {\n\tenabled: true,\n\tspeed: 1,\n\trotationIntensity: 1,\n\tfloatIntensity: 1,\n\tfloatingRange: [-0.1, 0.1],\n\tautoInvalidate: false,\n};\n\n@Component({\n\tselector: 'ngts-float',\n\ttemplate: `\n\t\t<ngt-group [parameters]=\"parameters()\">\n\t\t\t<ngt-group #float [matrixAutoUpdate]=\"false\">\n\t\t\t\t<ng-content />\n\t\t\t</ngt-group>\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsFloat {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, [\n\t\t'enabled',\n\t\t'speed',\n\t\t'rotationIntensity',\n\t\t'floatIntensity',\n\t\t'floatingRange',\n\t\t'autoInvalidate',\n\t]);\n\n\tfloatRef = viewChild.required<ElementRef<THREE.Group>>('float');\n\n\tconstructor() {\n\t\textend({ Group });\n\n\t\tconst offset = Math.random() * 10000;\n\t\tinjectBeforeRender(({ clock, invalidate }) => {\n\t\t\tconst [{ enabled, speed, rotationIntensity, floatingRange, floatIntensity, autoInvalidate }] = [this.options()];\n\t\t\tif (!enabled || speed === 0) return;\n\n\t\t\tif (autoInvalidate) invalidate();\n\n\t\t\tconst container = this.floatRef().nativeElement;\n\n\t\t\tconst offsetTime = offset + clock.getElapsedTime();\n\t\t\tcontainer.rotation.x = (Math.cos((offsetTime / 4) * speed) / 8) * rotationIntensity;\n\t\t\tcontainer.rotation.y = (Math.sin((offsetTime / 4) * speed) / 8) * rotationIntensity;\n\t\t\tcontainer.rotation.z = (Math.sin((offsetTime / 4) * speed) / 20) * rotationIntensity;\n\n\t\t\tlet yPosition = Math.sin((offsetTime / 4) * speed) / 10;\n\t\t\tyPosition = THREE.MathUtils.mapLinear(yPosition, -0.1, 0.1, floatingRange[0] ?? -0.1, floatingRange[1] ?? 0.1);\n\t\t\tcontainer.position.y = yPosition * floatIntensity;\n\t\t\tcontainer.updateMatrix();\n\t\t});\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { applyProps, extend, NgtArgs, NgtThreeElements, NgtVector3, omit, pick, vector3 } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { Mesh, MeshBasicMaterial, PlaneGeometry, RingGeometry } from 'three';\n\nexport interface NgtsLightformerOptions {\n\tmap?: THREE.Texture;\n\ttoneMapped: boolean;\n\tcolor: string;\n\tform: 'circle' | 'ring' | 'rect';\n\tscale: number | [number, number, number] | [number, number];\n\tintensity: number;\n\ttarget?: NgtVector3;\n}\n\nconst defaultOptions: Partial<Omit<NgtThreeElements['ngt-mesh'], 'scale'>> & NgtsLightformerOptions = {\n\ttoneMapped: false,\n\tcolor: 'white',\n\tform: 'rect',\n\tscale: 1,\n\tintensity: 1,\n};\n\n@Component({\n\tselector: 'ngts-lightformer',\n\ttemplate: `\n\t\t<ngt-mesh #mesh [scale]=\"fixedScale()\" [parameters]=\"parameters()\">\n\t\t\t<ng-content select=\"[data-lightformer-geometry]\">\n\t\t\t\t@switch (form()) {\n\t\t\t\t\t@case ('circle') {\n\t\t\t\t\t\t<ngt-ring-geometry *args=\"[0, 1, 64]\" />\n\t\t\t\t\t}\n\t\t\t\t\t@case ('ring') {\n\t\t\t\t\t\t<ngt-ring-geometry *args=\"[0.5, 1, 64]\" />\n\t\t\t\t\t}\n\t\t\t\t\t@case ('rect') {\n\t\t\t\t\t\t<ngt-plane-geometry />\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t</ng-content>\n\t\t\t<ng-content select=\"[data-lightformer-material]\">\n\t\t\t\t<ngt-mesh-basic-material #defaultMaterial [toneMapped]=\"toneMapped()\" [map]=\"map()\" [side]=\"side\" />\n\t\t\t</ng-content>\n\n\t\t\t<ng-content />\n\t\t</ngt-mesh>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsLightformer {\n\tprotected readonly side = THREE.DoubleSide;\n\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, ['map', 'toneMapped', 'color', 'form', 'scale', 'intensity', 'target']);\n\n\tprivate intensity = pick(this.options, 'intensity');\n\tprivate color = pick(this.options, 'color');\n\tprivate target = vector3(this.options, 'target', true);\n\tprivate scale = pick(this.options, 'scale');\n\tprotected fixedScale = computed(() => {\n\t\tconst scale = this.scale();\n\t\treturn Array.isArray(scale) && scale.length === 2 ? [scale[0], scale[1], 1] : scale;\n\t});\n\tprotected form = pick(this.options, 'form');\n\tprotected toneMapped = pick(this.options, 'toneMapped');\n\tprotected map = pick(this.options, 'map');\n\n\tmeshRef = viewChild.required<ElementRef<THREE.Mesh>>('mesh');\n\tprivate defaultMaterialRef = viewChild<ElementRef<THREE.MeshBasicMaterial>>('defaultMaterial');\n\n\tconstructor() {\n\t\textend({ Mesh, MeshBasicMaterial, RingGeometry, PlaneGeometry });\n\n\t\teffect(() => {\n\t\t\tconst material = this.defaultMaterialRef()?.nativeElement;\n\t\t\tif (!material) return;\n\n\t\t\tapplyProps(material, { color: this.color() });\n\t\t\tmaterial.color.multiplyScalar(this.intensity());\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst target = this.target();\n\t\t\tif (!target) return;\n\n\t\t\tconst mesh = this.meshRef().nativeElement;\n\t\t\tmesh.lookAt(target);\n\t\t});\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinput,\n\tnumberAttribute,\n\tviewChild,\n} from '@angular/core';\nimport { extend, NgtThreeElements, omit, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { Mesh } from 'three';\n\nexport interface NgtsMaskOptions extends Partial<NgtThreeElements['ngt-mesh']> {\n\tcolorWrite: boolean;\n\tdepthWrite: boolean;\n}\n\nconst defaultOptions: NgtsMaskOptions = {\n\tcolorWrite: false,\n\tdepthWrite: false,\n};\n\n@Component({\n\tselector: 'ngts-mask',\n\ttemplate: `\n\t\t<ngt-mesh #mesh [renderOrder]=\"-id()\" [parameters]=\"parameters()\">\n\t\t\t<ng-content />\n\t\t</ngt-mesh>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsMask {\n\tid = input(1, { transform: numberAttribute });\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\n\tprotected parameters = omit(this.options, ['colorWrite', 'depthWrite']);\n\n\tmeshRef = viewChild.required<ElementRef<THREE.Mesh<THREE.BufferGeometry, THREE.Material>>>('mesh');\n\n\tprivate colorWrite = pick(this.options, 'colorWrite');\n\tprivate depthWrite = pick(this.options, 'depthWrite');\n\tprivate spread = computed(() => {\n\t\tconst [id, colorWrite, depthWrite] = [this.id(), this.colorWrite(), this.depthWrite()];\n\t\treturn {\n\t\t\tcolorWrite,\n\t\t\tdepthWrite,\n\t\t\tstencilWrite: true,\n\t\t\tstencilRef: id,\n\t\t\tstencilFunc: THREE.AlwaysStencilFunc,\n\t\t\tstencilFail: THREE.ReplaceStencilOp,\n\t\t\tstencilZFail: THREE.ReplaceStencilOp,\n\t\t\tstencilZPass: THREE.ReplaceStencilOp,\n\t\t};\n\t});\n\n\tconstructor() {\n\t\textend({ Mesh });\n\n\t\teffect(() => {\n\t\t\tconst [mesh, spread] = [this.meshRef().nativeElement, this.spread()];\n\t\t\tObject.assign(mesh.material, spread);\n\t\t});\n\t}\n}\n\nexport function mask(id: () => number, inverse: () => boolean = () => false) {\n\treturn computed(() => {\n\t\tconst [_id, _inverse] = [id(), inverse()];\n\t\treturn {\n\t\t\tstencilWrite: true,\n\t\t\tstencilRef: _id,\n\t\t\tstencilFunc: _inverse ? THREE.NotEqualStencilFunc : THREE.EqualStencilFunc,\n\t\t\tstencilFail: THREE.KeepStencilOp,\n\t\t\tstencilZFail: THREE.KeepStencilOp,\n\t\t\tstencilZPass: THREE.KeepStencilOp,\n\t\t};\n\t});\n}\n","import {\n\tDestroyRef,\n\tDirective,\n\tEmbeddedViewRef,\n\tInjector,\n\tSignal,\n\tTemplateRef,\n\tViewContainerRef,\n\tcomputed,\n\teffect,\n\tinject,\n\tinput,\n\toutput,\n\tsignal,\n} from '@angular/core';\nimport { injectTexture } from 'angular-three-soba/loaders';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport * as THREE from 'three';\n\nfunction getFormatString(format: number) {\n\tswitch (format) {\n\t\tcase 64:\n\t\t\treturn '-64px';\n\t\tcase 128:\n\t\t\treturn '-128px';\n\t\tcase 256:\n\t\t\treturn '-256px';\n\t\tcase 512:\n\t\t\treturn '-512px';\n\t\tdefault:\n\t\t\treturn '';\n\t}\n}\n\nconst LIST_URL = 'https://cdn.jsdelivr.net/gh/pmndrs/drei-assets@master/matcaps.json';\nconst MATCAP_ROOT = 'https://rawcdn.githack.com/emmelleppi/matcaps/9b36ccaaf0a24881a39062d05566c9e92be4aa0d';\n\nexport function injectMatcapTexture(\n\tid: () => number | string = () => 0,\n\t{\n\t\tformat = () => 1024,\n\t\tonLoad,\n\t\tinjector,\n\t}: { format?: () => number; onLoad?: (texture: THREE.Texture[]) => void; injector?: Injector } = {},\n) {\n\treturn assertInjector(injectMatcapTexture, injector, () => {\n\t\tconst matcapList = signal<Record<string, string>>({});\n\n\t\tfetch(LIST_URL)\n\t\t\t.then((res) => res.json())\n\t\t\t.then((list) => {\n\t\t\t\tmatcapList.set(list);\n\t\t\t});\n\n\t\tconst DEFAULT_MATCAP = computed(() => matcapList()[0]);\n\t\tconst numTot = computed(() => Object.keys(matcapList()).length);\n\n\t\tconst fileHash = computed(() => {\n\t\t\tconst idValue = id();\n\t\t\tif (typeof idValue === 'string') {\n\t\t\t\treturn idValue;\n\t\t\t}\n\n\t\t\tif (typeof idValue === 'number') {\n\t\t\t\treturn matcapList()[idValue];\n\t\t\t}\n\n\t\t\treturn null;\n\t\t});\n\n\t\tconst fileName = computed(() => `${fileHash() || DEFAULT_MATCAP()}${getFormatString(format())}.png`);\n\t\tconst url = computed(() => `${MATCAP_ROOT}/${format()}/${fileName()}`);\n\n\t\tconst matcapTexture = injectTexture(url, { onLoad });\n\n\t\treturn { url, texture: matcapTexture, numTot };\n\t});\n}\n\nexport interface NgtsMatcapTextureOptions {\n\tid?: number | string;\n\tformat?: number;\n}\n\n@Directive({ selector: 'ng-template[matcapTexture]' })\nexport class NgtsMatcapTexture {\n\tmatcapTexture = input<NgtsMatcapTextureOptions>();\n\tmatcapTextureLoaded = output<THREE.Texture[]>();\n\n\tprivate template = inject(TemplateRef);\n\tprivate vcr = inject(ViewContainerRef);\n\n\tprivate id = computed(() => this.matcapTexture()?.id ?? 0);\n\tprivate format = computed(() => this.matcapTexture()?.format ?? 1024);\n\n\tprivate ref?: EmbeddedViewRef<{ $implicit: Signal<THREE.Texture | null> }>;\n\n\tconstructor() {\n\t\tconst { texture } = injectMatcapTexture(this.id, {\n\t\t\tformat: this.format,\n\t\t\tonLoad: this.matcapTextureLoaded.emit.bind(this.matcapTextureLoaded),\n\t\t});\n\n\t\teffect(() => {\n\t\t\tthis.ref = this.vcr.createEmbeddedView(this.template, { $implicit: texture });\n\t\t\tthis.ref.detectChanges();\n\t\t});\n\n\t\tinject(DestroyRef).onDestroy(() => {\n\t\t\tthis.ref?.destroy();\n\t\t});\n\t}\n\n\tstatic ngTemplateContextGuard(\n\t\t_: NgtsMatcapTexture,\n\t\tctx: unknown,\n\t): ctx is { $implicit: Signal<THREE.Texture | null> } {\n\t\treturn true;\n\t}\n}\n","import {\n\tDestroyRef,\n\tDirective,\n\tEmbeddedViewRef,\n\tInjector,\n\tSignal,\n\tTemplateRef,\n\tViewContainerRef,\n\tcomputed,\n\teffect,\n\tinject,\n\tinput,\n\toutput,\n\tsignal,\n} from '@angular/core';\nimport { injectTexture } from 'angular-three-soba/loaders';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport * as THREE from 'three';\n\nconst NORMAL_ROOT = 'https://rawcdn.githack.com/pmndrs/drei-assets/7a3104997e1576f83472829815b00880d88b32fb';\nconst LIST_URL = 'https://cdn.jsdelivr.net/gh/pmndrs/drei-assets@master/normals/normals.json';\n\ninterface NgtsNormalTextureSettings {\n\trepeat?: number[];\n\tanisotropy?: number;\n\toffset?: number[];\n}\n\nexport function injectNormalTexture(\n\tid: () => string | number = () => 0,\n\t{\n\t\tsettings = () => ({}),\n\t\tonLoad,\n\t\tinjector,\n\t}: { settings?: () => NgtsNormalTextureSettings; onLoad?: (texture: THREE.Texture[]) => void; injector?: Injector },\n) {\n\treturn assertInjector(injectNormalTexture, injector, () => {\n\t\tconst normalList = signal<Record<string, string>>({});\n\n\t\tfetch(LIST_URL)\n\t\t\t.then((res) => res.json())\n\t\t\t.then((list) => {\n\t\t\t\tnormalList.set(list);\n\t\t\t});\n\n\t\tconst DEFAULT_NORMAL = computed(() => normalList()[0]);\n\t\tconst numTot = computed(() => Object.keys(normalList()).length);\n\n\t\tconst fileHash = computed(() => {\n\t\t\tconst idValue = id();\n\t\t\tif (typeof idValue === 'string') {\n\t\t\t\treturn idValue;\n\t\t\t}\n\n\t\t\tif (typeof idValue === 'number') {\n\t\t\t\treturn normalList()[idValue];\n\t\t\t}\n\n\t\t\treturn null;\n\t\t});\n\n\t\tconst imageName = computed(() => fileHash() || DEFAULT_NORMAL());\n\t\tconst url = computed(() => `${NORMAL_ROOT}/normals/${imageName()}`);\n\n\t\tconst normalTexture = injectTexture(url, { onLoad });\n\n\t\teffect(() => {\n\t\t\tconst texture = normalTexture();\n\t\t\tif (!texture) return;\n\n\t\t\tconst { anisotropy = 1, repeat = [1, 1], offset = [0, 0] } = settings();\n\t\t\ttexture.wrapS = texture.wrapT = THREE.RepeatWrapping;\n\t\t\ttexture.repeat = new THREE.Vector2(repeat[0], repeat[1]);\n\t\t\ttexture.offset = new THREE.Vector2(offset[0], offset[1]);\n\t\t\ttexture.anisotropy = anisotropy;\n\t\t});\n\n\t\treturn { url, texture: normalTexture, numTot };\n\t});\n}\n\nexport interface NgtsNormalTextureOptions extends NgtsNormalTextureSettings {\n\tid?: number | string;\n}\n\n@Directive({ selector: 'ng-template[normalTexture]' })\nexport class NgtsNormalTexture {\n\tnormalTexture = input<NgtsNormalTextureOptions>();\n\tnormalTextureLoaded = output<THREE.Texture[]>();\n\n\tprivate template = inject(TemplateRef);\n\tprivate vcr = inject(ViewContainerRef);\n\n\tprivate id = computed(() => this.normalTexture()?.id ?? 0);\n\tprivate settings = computed(() => {\n\t\tconst { id: _, ...settings } = this.normalTexture() || {};\n\t\treturn settings;\n\t});\n\n\tprivate ref?: EmbeddedViewRef<{ $implicit: Signal<THREE.Texture | null> }>;\n\n\tconstructor() {\n\t\tconst { texture } = injectNormalTexture(this.id, {\n\t\t\tsettings: this.settings,\n\t\t\tonLoad: this.normalTextureLoaded.emit.bind(this.normalTextureLoaded),\n\t\t});\n\n\t\teffect(() => {\n\t\t\tthis.ref = this.vcr.createEmbeddedView(this.template, { $implicit: texture });\n\t\t\tthis.ref.detectChanges();\n\t\t});\n\n\t\tinject(DestroyRef).onDestroy(() => {\n\t\t\tthis.ref?.destroy();\n\t\t});\n\t}\n\n\tstatic ngTemplateContextGuard(\n\t\t_: NgtsNormalTexture,\n\t\tctx: unknown,\n\t): ctx is { $implicit: Signal<THREE.Texture | null> } {\n\t\treturn true;\n\t}\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\tcomputed,\n\teffect,\n\tinject,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { NgtArgs, NgtThreeElements, extend, omit, pick } from 'angular-three';\nimport { getVersion } from 'angular-three-soba/misc';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { DirectionalLight, Group, OrthographicCamera, Vector2 } from 'three';\nimport { NgtsAccumulativeShadows } from './accumulative-shadows';\n\nexport interface NgtsRandomizedLightsOptions extends Partial<NgtThreeElements['ngt-group']> {\n\t/** How many frames it will jiggle the lights, 1.\n\t * Frames is context aware, if a provider like AccumulativeShadows exists, frames will be taken from there! */\n\tframes: number;\n\t/** Light position, [0, 0, 0] */\n\tposition: [x: number, y: number, z: number];\n\t/** Radius of the jiggle, higher values make softer light, 5 */\n\tradius: number;\n\t/** Amount of lights, 8 */\n\tamount: number;\n\t/** Light intensity, 1 */\n\tintensity: number;\n\t/** Ambient occlusion, lower values mean less AO, hight more, you can mix AO and directional light, 0.5 */\n\tambient: number;\n\t/** If the lights cast shadows, this is true by default */\n\tcastShadow: boolean;\n\t/** Default shadow bias, 0 */\n\tbias: number;\n\t/** Default map size, 512 */\n\tmapSize: number;\n\t/** Default size of the shadow camera, 10 */\n\tsize: number;\n\t/** Default shadow camera near, 0.5 */\n\tnear: number;\n\t/** Default shadow camera far, 500 */\n\tfar: number;\n}\n\nconst defaultOptions: NgtsRandomizedLightsOptions = {\n\tcastShadow: true,\n\tbias: 0.001,\n\tmapSize: 512,\n\tsize: 5,\n\tnear: 0.5,\n\tfar: 500,\n\tframes: 1,\n\tposition: [0, 0, 0],\n\tradius: 1,\n\tamount: 8,\n\tintensity: getVersion() >= 155 ? Math.PI : 1,\n\tambient: 0.5,\n};\n\n@Component({\n\tselector: 'ngts-randomized-lights',\n\ttemplate: `\n\t\t<ngt-group #lights [parameters]=\"parameters()\">\n\t\t\t@for (i of count(); track $index) {\n\t\t\t\t<ngt-directional-light [castShadow]=\"castShadow()\" [intensity]=\"intensity() / amount()\">\n\t\t\t\t\t<ngt-value [rawValue]=\"bias()\" attach=\"shadow.bias\" />\n\t\t\t\t\t<ngt-vector2 *args=\"shadowMapSize()\" attach=\"shadow.mapSize\" />\n\t\t\t\t\t<ngt-orthographic-camera *args=\"cameraArgs()\" attach=\"shadow.camera\" />\n\t\t\t\t</ngt-directional-light>\n\t\t\t}\n\t\t</ngt-group>\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsRandomizedLights {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, Object.keys(defaultOptions) as Array<keyof NgtsRandomizedLightsOptions>);\n\n\tlightsRef = viewChild.required<ElementRef<THREE.Group>>('lights');\n\n\tprivate accumulativeShadows = inject(NgtsAccumulativeShadows);\n\n\tprotected castShadow = pick(this.options, 'castShadow');\n\tprotected bias = pick(this.options, 'bias');\n\tprotected intensity = pick(this.options, 'intensity');\n\tprotected amount = pick(this.options, 'amount');\n\n\tprivate mapSize = pick(this.options, 'mapSize');\n\tprotected shadowMapSize = computed(() => [this.mapSize(), this.mapSize()]);\n\n\tprivate position = pick(this.options, 'position');\n\tprivate length = computed(() => new THREE.Vector3(...this.position()).length());\n\n\tprotected count = computed(() => Array.from({ length: this.amount() }, (_, index) => index));\n\n\tprivate size = pick(this.options, 'size');\n\tprivate near = pick(this.options, 'near');\n\tprivate far = pick(this.options, 'far');\n\tprotected cameraArgs = computed(() => [\n\t\t-this.size(),\n\t\tthis.size(),\n\t\tthis.size(),\n\t\t-this.size(),\n\t\tthis.near(),\n\t\tthis.far(),\n\t]);\n\n\tconstructor() {\n\t\textend({ Group, DirectionalLight, OrthographicCamera, Vector2 });\n\n\t\teffect((onCleanup) => {\n\t\t\tconst lights = this.lightsRef().nativeElement;\n\t\t\tthis.accumulativeShadows.lightsMap.set(lights.uuid, this.update.bind(this));\n\t\t\tonCleanup(() => this.accumulativeShadows.lightsMap.delete(lights.uuid));\n\t\t});\n\t}\n\n\tupdate() {\n\t\tlet light: THREE.Object3D | undefined;\n\t\tconst lights = this.lightsRef().nativeElement;\n\t\tif (lights) {\n\t\t\tconst [{ ambient, radius, position }, length] = [this.options(), this.length()];\n\n\t\t\tfor (let i = 0; i < lights.children.length; i++) {\n\t\t\t\tlight = lights.children[i];\n\t\t\t\tif (Math.random() > ambient) {\n\t\t\t\t\tlight.position.set(\n\t\t\t\t\t\tposition[0] + THREE.MathUtils.randFloatSpread(radius),\n\t\t\t\t\t\tposition[1] + THREE.MathUtils.randFloatSpread(radius),\n\t\t\t\t\t\tposition[2] + THREE.MathUtils.randFloatSpread(radius),\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tconst lambda = Math.acos(2 * Math.random() - 1) - Math.PI / 2.0;\n\t\t\t\t\tconst phi = 2 * Math.PI * Math.random();\n\t\t\t\t\tlight.position.set(\n\t\t\t\t\t\tMath.cos(lambda) * Math.cos(phi) * length,\n\t\t\t\t\t\tMath.abs(Math.cos(lambda) * Math.sin(phi) * length),\n\t\t\t\t\t\tMath.sin(lambda) * length,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tDirective,\n\tInjector,\n\tTemplateRef,\n\tcomputed,\n\tcontentChild,\n\teffect,\n\tinput,\n} from '@angular/core';\nimport {\n\tNgtArgs,\n\tNgtAttachable,\n\tNgtComputeFunction,\n\tNgtPortal,\n\tNgtPortalContent,\n\tNgtThreeElements,\n\textend,\n\tgetInstanceState,\n\tinjectStore,\n\tis,\n\tomit,\n\tpick,\n} from 'angular-three';\nimport { injectFBO } from 'angular-three-soba/misc';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { Group } from 'three';\n\nexport interface NgtsRenderTextureOptions extends Partial<Omit<NgtThreeElements['ngt-texture'], 'attach'>> {\n\t/** Optional width of the texture, defaults to viewport bounds */\n\twidth?: number;\n\t/** Optional height of the texture, defaults to viewport bounds */\n\theight?: number;\n\t/** Optional fbo samples */\n\tsamples: number;\n\t/** Optional stencil buffer, defaults to false */\n\tstencilBuffer: boolean;\n\t/** Optional depth buffer, defaults to true */\n\tdepthBuffer: boolean;\n\t/** Optional generate mipmaps, defaults to false */\n\tgenerateMipmaps: boolean;\n\t/** Optional render priority, defaults to 0 */\n\trenderPriority: number;\n\t/** Optional event priority, defaults to 0 */\n\teventPriority: number;\n\t/** Optional frame count, defaults to Infinity. If you set it to 1, it would only render a single frame, etc */\n\tframes: number;\n\t/** Optional event compute, defaults to undefined */\n\tcompute?: (event: any, state: any, previous: any) => false | undefined;\n}\n\n@Directive({ selector: '[renderTextureContainer]' })\nexport class NgtsRenderTextureContainer {\n\tfbo = input.required<THREE.WebGLRenderTarget>();\n\trenderPriority = input.required<number>();\n\tframes = input.required<number>();\n\n\tprivate store = injectStore();\n\n\tconstructor() {\n\t\teffect((onCleanup) => {\n\t\t\tconst [renderPriority, { internal }] = [this.renderPriority(), this.store()];\n\n\t\t\tlet count = 0;\n\t\t\tlet oldAutoClear: boolean;\n\t\t\tlet oldXrEnabled: boolean;\n\t\t\tlet oldRenderTarget: THREE.WebGLRenderTarget | null;\n\t\t\tlet oldIsPresenting: boolean;\n\n\t\t\tconst cleanup = internal.subscribe(\n\t\t\t\t({ gl, scene, camera }) => {\n\t\t\t\t\tconst [fbo, frames] = [this.fbo(), this.frames()];\n\t\t\t\t\t// NOTE: render the frames ^ 2\n\t\t\t\t\t// due to some race condition, we want to render double the frames here.\n\t\t\t\t\tif (frames === Infinity || count < frames * frames) {\n\t\t\t\t\t\toldAutoClear = gl.autoClear;\n\t\t\t\t\t\toldXrEnabled = gl.xr.enabled;\n\t\t\t\t\t\toldRenderTarget = gl.getRenderTarget();\n\t\t\t\t\t\toldIsPresenting = gl.xr.isPresenting;\n\t\t\t\t\t\tgl.autoClear = true;\n\t\t\t\t\t\tgl.xr.enabled = false;\n\t\t\t\t\t\tgl.xr.isPresenting = false;\n\t\t\t\t\t\tgl.setRenderTarget(fbo);\n\t\t\t\t\t\tgl.render(scene, camera);\n\t\t\t\t\t\tgl.setRenderTarget(oldRenderTarget);\n\t\t\t\t\t\tgl.autoClear = oldAutoClear;\n\t\t\t\t\t\tgl.xr.enabled = oldXrEnabled;\n\t\t\t\t\t\tgl.xr.isPresenting = oldIsPresenting;\n\t\t\t\t\t\tcount++;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\trenderPriority,\n\t\t\t\tthis.store,\n\t\t\t);\n\n\t\t\tonCleanup(() => {\n\t\t\t\tcleanup();\n\t\t\t});\n\t\t});\n\t}\n}\n\nconst defaultOptions: NgtsRenderTextureOptions = {\n\tsamples: 8,\n\trenderPriority: 0,\n\teventPriority: 0,\n\tframes: Infinity,\n\tstencilBuffer: false,\n\tdepthBuffer: true,\n\tgenerateMipmaps: false,\n};\n\n@Directive({ selector: 'ng-template[renderTextureContent]' })\nexport class NgtsRenderTextureContent {\n\tstatic ngTemplateContextGuard(\n\t\t_: NgtsRenderTextureContent,\n\t\tctx: unknown,\n\t): ctx is { container: THREE.Object3D; injector: Injector } {\n\t\treturn true;\n\t}\n}\n\nlet incrementId = 0;\n\n@Component({\n\tselector: 'ngts-render-texture',\n\ttemplate: `\n\t\t<ngt-portal [container]=\"virtualScene\" [state]=\"{ events: { compute: compute(), priority: eventPriority() } }\">\n\t\t\t<ng-template portalContent let-injector=\"injector\">\n\t\t\t\t<ng-container\n\t\t\t\t\trenderTextureContainer\n\t\t\t\t\t[fbo]=\"fbo()\"\n\t\t\t\t\t[renderPriority]=\"renderPriority()\"\n\t\t\t\t\t[frames]=\"frames()\"\n\t\t\t\t\t[ngTemplateOutlet]=\"content()\"\n\t\t\t\t\t[ngTemplateOutletInjector]=\"injector\"\n\t\t\t\t\t[ngTemplateOutletContext]=\"{ container: virtualScene, injector }\"\n\t\t\t\t>\n\t\t\t\t\t<ngt-group (pointerover)=\"(undefined)\" />\n\t\t\t\t</ng-container>\n\t\t\t</ng-template>\n\t\t</ngt-portal>\n\n\t\t<ngt-primitive *args=\"[fbo().texture]\" [attach]=\"attach()\" [parameters]=\"parameters()\" />\n\t`,\n\timports: [NgtPortal, NgtsRenderTextureContainer, NgtPortalContent, NgtArgs, NgTemplateOutlet],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsRenderTexture {\n\tattach = input<NgtAttachable>('map');\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, [\n\t\t'samples',\n\t\t'renderPriority',\n\t\t'eventPriority',\n\t\t'frames',\n\t\t'stencilBuffer',\n\t\t'depthBuffer',\n\t\t'generateMipmaps',\n\t\t'compute',\n\t\t'width',\n\t\t'height',\n\t]);\n\n\tcontent = contentChild.required(NgtsRenderTextureContent, { read: TemplateRef });\n\n\tprivate store = injectStore();\n\n\tprivate width = pick(this.options, 'width');\n\tprivate height = pick(this.options, 'height');\n\tprivate samples = pick(this.options, 'samples');\n\tprivate stencilBuffer = pick(this.options, 'stencilBuffer');\n\tprivate depthBuffer = pick(this.options, 'depthBuffer');\n\tprivate generateMipmaps = pick(this.options, 'generateMipmaps');\n\tprivate computeFn = pick(this.options, 'compute');\n\n\tprivate fboParams = computed(() => ({\n\t\twidth: (this.width() || this.store.size.width()) * this.store.viewport.dpr(),\n\t\theight: (this.height() || this.store.size.height()) * this.store.viewport.dpr(),\n\t\tsettings: {\n\t\t\tsamples: this.samples(),\n\t\t\tdepthBuffer: this.depthBuffer(),\n\t\t\tstencilBuffer: this.stencilBuffer(),\n\t\t\tgenerateMipmaps: this.generateMipmaps(),\n\t\t},\n\t}));\n\n\tprotected renderPriority = pick(this.options, 'renderPriority');\n\tprotected frames = pick(this.options, 'frames');\n\tprotected fbo = injectFBO(this.fboParams);\n\tprotected virtualScene = (() => {\n\t\tconst scene = new THREE.Scene();\n\t\tscene.name = `ngts-render-texture-virtual-scene-${incrementId++}`;\n\t\treturn scene;\n\t})();\n\tprotected eventPriority = pick(this.options, 'eventPriority');\n\tprotected compute = computed(() => this.computeFn() || this.uvCompute);\n\n\tprivate uvCompute: NgtComputeFunction = (event, root, previous) => {\n\t\tconst fbo = this.fbo();\n\t\tif (!fbo) return;\n\t\tconst state = root.snapshot;\n\t\tconst previousState = previous?.snapshot;\n\n\t\t// Since this is only a texture it does not have an easy way to obtain the parent, which we\n\t\t// need to transform event coordinates to local coordinates. We use ngt internals to find the\n\t\t// next Object3D.\n\t\tlet parent = getInstanceState(fbo.texture)?.parent();\n\t\twhile (parent && !is.three<THREE.Object3D>(parent, 'isObject3D')) {\n\t\t\tparent = getInstanceState(parent)?.parent();\n\t\t}\n\n\t\tif (!parent) return;\n\t\t// First we call the previous state-onion-layers compute, this is what makes it possible to nest portals\n\t\tif (previousState && !previousState.raycaster.camera) {\n\t\t\tpreviousState.events.compute?.(event, previous, previous.snapshot.previousRoot);\n\t\t}\n\t\t// We run a quick check against the parent, if it isn't hit there's no need to raycast at all\n\t\tconst [intersection] = previousState?.raycaster.intersectObject(parent) || [];\n\t\tif (!intersection) return;\n\t\t// We take that hits uv coords, set up this layers raycaster, et voilà, we have raycasting on arbitrary surfaces\n\t\tconst uv = intersection.uv;\n\t\tif (!uv) return;\n\t\tstate.raycaster.setFromCamera(state.pointer.set(uv.x * 2 - 1, uv.y * 2 - 1), state.camera);\n\t};\n\n\tconstructor() {\n\t\textend({ Group });\n\t}\n}\n","import { ChangeDetectionStrategy, Component, computed, CUSTOM_ELEMENTS_SCHEMA, input } from '@angular/core';\nimport { NgtArgs, NgtThreeElements, NgtVector3, omit, pick, vector3 } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { Sky } from 'three-stdlib';\n\nexport function calcPosFromAngles(inclination: number, azimuth: number, vector: THREE.Vector3 = new THREE.Vector3()) {\n\tconst theta = Math.PI * (inclination - 0.5);\n\tconst phi = 2 * Math.PI * (azimuth - 0.5);\n\n\tvector.x = Math.cos(phi);\n\tvector.y = Math.sin(theta);\n\tvector.z = Math.sin(phi);\n\n\treturn vector;\n}\n\nexport interface NgtsSkyOptions extends Partial<Omit<NgtThreeElements['ngt-mesh'], 'scale'>> {\n\tdistance: number;\n\tinclination: number;\n\tazimuth: number;\n\tmieCoefficient: number;\n\tmieDirectionalG: number;\n\trayleigh: number;\n\tturbidity: number;\n\tsunPosition?: NgtVector3;\n}\n\nconst defaultOptions: NgtsSkyOptions = {\n\tdistance: 1000,\n\tinclination: 0.6,\n\tazimuth: 0.1,\n\tmieCoefficient: 0.005,\n\tmieDirectionalG: 0.8,\n\trayleigh: 0.5,\n\tturbidity: 10,\n};\n\n@Component({\n\tselector: 'ngts-sky',\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[sky]\" [parameters]=\"parameters()\" [scale]=\"scale()\">\n\t\t\t<ngt-value attach=\"material.uniforms.mieCoefficient.value\" [rawValue]=\"mieCoefficient()\" />\n\t\t\t<ngt-value attach=\"material.uniforms.mieDirectionalG.value\" [rawValue]=\"mieDirectionalG()\" />\n\t\t\t<ngt-value attach=\"material.uniforms.rayleigh.value\" [rawValue]=\"rayleigh()\" />\n\t\t\t<ngt-value attach=\"material.uniforms.sunPosition.value\" [rawValue]=\"calculatedSunPosition()\" />\n\t\t\t<ngt-value attach=\"material.uniforms.turbidity.value\" [rawValue]=\"turbidity()\" />\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 NgtsSky {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, [\n\t\t'distance',\n\t\t'inclination',\n\t\t'azimuth',\n\t\t'sunPosition',\n\t\t'turbidity',\n\t\t'mieCoefficient',\n\t\t'mieDirectionalG',\n\t\t'sunPosition',\n\t]);\n\n\tprivate distance = pick(this.options, 'distance');\n\tprotected turbidity = pick(this.options, 'turbidity');\n\tprotected mieCoefficient = pick(this.options, 'mieCoefficient');\n\tprotected mieDirectionalG = pick(this.options, 'mieDirectionalG');\n\tprotected rayleigh = pick(this.options, 'rayleigh');\n\n\tprotected scale = computed(() => new THREE.Vector3().setScalar(this.distance()));\n\n\tprivate inclination = pick(this.options, 'inclination');\n\tprivate azimuth = pick(this.options, 'azimuth');\n\tprivate sunPosition = vector3(this.options, 'sunPosition', true);\n\tprotected calculatedSunPosition = computed(() => {\n\t\tconst sunPosition = this.sunPosition();\n\t\tif (sunPosition) return sunPosition;\n\t\treturn calcPosFromAngles(this.inclination(), this.azimuth());\n\t});\n\n\tprotected sky = new Sky();\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinject,\n\tInjector,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { extend, injectBeforeRender, injectStore, is, NgtArgs, NgtThreeElements, omit, pick } from 'angular-three';\nimport { NgtsHelper } from 'angular-three-soba/abstractions';\nimport { SpotLightMaterial } from 'angular-three-soba/vanilla-exports';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { Group, Mesh, MeshBasicMaterial, PlaneGeometry, RepeatWrapping, SpotLight } from 'three';\nimport { FullScreenQuad } from 'three-stdlib';\n\nexport interface NgtsSpotLightOptions extends Partial<NgtThreeElements['ngt-spot-light']> {\n\tdepthBuffer?: THREE.DepthTexture;\n\tattenuation?: number;\n\tanglePower?: number;\n\tradiusTop?: number;\n\tradiusBottom?: number;\n\topacity?: number;\n\tcolor?: THREE.ColorRepresentation;\n\tvolumetric?: boolean;\n\tdebug?: boolean;\n}\n\nexport type NgtsVolumetricMeshOptions = Omit<NgtsSpotLightOptions, 'volumetric'>;\n\nconst defaultVolumetricMeshOptions: NgtsVolumetricMeshOptions = {\n\topacity: 1,\n\tdistance: 5,\n\tangle: 0.15,\n\tattenuation: 5,\n\tanglePower: 5,\n\tcolor: 'white',\n};\n\n@Component({\n\tselector: 'ngts-volumetric-mesh',\n\ttemplate: `\n\t\t<ngt-mesh #mesh [geometry]=\"geometry()\" [raycast]=\"null\">\n\t\t\t<ngt-primitive *args=\"[material]\" attach=\"material\">\n\t\t\t\t<ngt-value attach=\"uniforms.opacity.value\" [rawValue]=\"opacity()\" />\n\t\t\t\t<ngt-value attach=\"uniforms.lightColor.value\" [rawValue]=\"color()\" />\n\t\t\t\t<ngt-value attach=\"uniforms.attenuation.value\" [rawValue]=\"attenuation()\" />\n\t\t\t\t<ngt-value attach=\"uniforms.anglePower.value\" [rawValue]=\"anglePower()\" />\n\t\t\t\t<ngt-value attach=\"uniforms.depth.value\" [rawValue]=\"depthBuffer()\" />\n\t\t\t\t<ngt-value attach=\"uniforms.cameraNear.value\" [rawValue]=\"camera.near()\" />\n\t\t\t\t<ngt-value attach=\"uniforms.cameraFar.value\" [rawValue]=\"camera.far()\" />\n\t\t\t\t<ngt-value\n\t\t\t\t\tattach=\"uniforms.resolution.value\"\n\t\t\t\t\t[rawValue]=\"depthBuffer() ? [size.width() * dpr(), size.height() * dpr()] : [0, 0]\"\n\t\t\t\t/>\n\t\t\t</ngt-primitive>\n\t\t</ngt-mesh>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsVolumetricMesh {\n\toptions = input(defaultVolumetricMeshOptions, { transform: mergeInputs(defaultVolumetricMeshOptions) });\n\n\tmeshRef = viewChild.required<ElementRef<THREE.Mesh>>('mesh');\n\n\tprivate store = injectStore();\n\tprotected size = this.store.size;\n\tprotected dpr = this.store.viewport.dpr;\n\tprotected camera = this.store.camera;\n\n\tprivate radiusTop = pick(this.options, 'radiusTop');\n\tprivate radiusBottom = pick(this.options, 'radiusBottom');\n\tprivate angle = pick(this.options, 'angle');\n\tprivate distance = pick(this.options, 'distance');\n\n\tprivate normalizedRadiusTop = computed(() => (this.radiusTop() === undefined ? 0.1 : this.radiusTop()));\n\tprivate normalizedRadiusBottom = computed(() =>\n\t\tthis.radiusBottom() === undefined ? this.angle()! * 7 : this.radiusBottom(),\n\t);\n\n\tprotected material = new SpotLightMaterial();\n\tprotected opacity = pick(this.options, 'opacity');\n\tprotected color = pick(this.options, 'color');\n\tprotected attenuation = pick(this.options, 'attenuation');\n\tprotected anglePower = pick(this.options, 'anglePower');\n\tprotected depthBuffer = pick(this.options, 'depthBuffer');\n\n\tprotected geometry = computed(() => {\n\t\tconst geometry = new THREE.CylinderGeometry(\n\t\t\tthis.normalizedRadiusTop(),\n\t\t\tthis.normalizedRadiusBottom(),\n\t\t\tthis.distance(),\n\t\t\t128,\n\t\t\t64,\n\t\t\ttrue,\n\t\t);\n\t\tgeometry.applyMatrix4(new THREE.Matrix4().makeTranslation(0, -this.distance()! / 2, 0));\n\t\tgeometry.applyMatrix4(new THREE.Matrix4().makeRotationX(-Math.PI / 2));\n\t\treturn geometry;\n\t});\n\n\tconstructor() {\n\t\textend({ Mesh });\n\n\t\tconst vec = new THREE.Vector3();\n\n\t\tinjectBeforeRender(() => {\n\t\t\tconst mesh = this.meshRef().nativeElement;\n\t\t\tconst material = this.material;\n\n\t\t\tmaterial.uniforms['spotPosition'].value.copy(mesh.getWorldPosition(vec));\n\t\t\tif (mesh.parent) {\n\t\t\t\tmesh.lookAt((mesh.parent as any).target.getWorldPosition(vec));\n\t\t\t}\n\t\t});\n\t}\n}\n\nfunction injectSpotLightCommon(\n\tspotLight: () => ElementRef<THREE.SpotLight> | null,\n\tmesh: () => ElementRef<Mesh> | null,\n\twidth: () => number,\n\theight: () => number,\n\tdistance: () => number,\n\tinjector?: Injector,\n) {\n\tassertInjector(injectSpotLightCommon, injector, () => {\n\t\tconst pos = new THREE.Vector3();\n\t\tconst dir = new THREE.Vector3();\n\n\t\teffect(() => {\n\t\t\tconst [_spotLight, _width, _height] = [spotLight()?.nativeElement, width(), height()];\n\t\t\tif (!_spotLight) return;\n\t\t\tif (is.three<THREE.SpotLight>(_spotLight, 'isSpotLight')) {\n\t\t\t\t_spotLight.shadow.mapSize.set(_width, _height);\n\t\t\t\tif (_spotLight.shadow.map) {\n\t\t\t\t\t_spotLight.shadow.map.setSize(_width, _height);\n\t\t\t\t}\n\t\t\t\t_spotLight.shadow.needsUpdate = true;\n\t\t\t} else {\n\t\t\t\tthrow new Error('NgtsSpotLightShadow must be a child of a NgtsSpotLight');\n\t\t\t}\n\t\t});\n\n\t\tinjectBeforeRender(() => {\n\t\t\tconst [_spotLight, _mesh] = [spotLight()?.nativeElement, mesh()?.nativeElement];\n\t\t\tif (!_spotLight || !_mesh) return;\n\n\t\t\tconst A = _spotLight.position;\n\t\t\tconst B = _spotLight.target.position;\n\n\t\t\tdir.copy(B).sub(A);\n\t\t\tconst len = dir.length();\n\t\t\tdir.normalize().multiplyScalar(len * distance());\n\t\t\tpos.copy(A).add(dir);\n\n\t\t\t_mesh.position.copy(pos);\n\t\t\t_mesh.lookAt(_spotLight.target.position);\n\t\t});\n\t});\n}\n\ninterface NgtsShadowMeshOptions {\n\tdistance: number;\n\talphaTest: number;\n\tscale: number;\n\twidth: number;\n\theight: number;\n\tmap?: THREE.Texture;\n}\n\nconst defaultSpotLightShadowOptions: NgtsShadowMeshOptions = {\n\tdistance: 0.4,\n\talphaTest: 0.5,\n\tscale: 1,\n\twidth: 512,\n\theight: 512,\n};\n\n@Component({\n\tselector: 'ngts-spot-light-shadow-shader',\n\ttemplate: `\n\t\t<ngt-mesh #mesh [scale]=\"scale()\" castShadow>\n\t\t\t<ngt-plane-geometry />\n\t\t\t<ngt-mesh-basic-material\n\t\t\t\ttransparent\n\t\t\t\t[side]=\"DoubleSide\"\n\t\t\t\t[alphaTest]=\"alphaTest()\"\n\t\t\t\t[alphaMap]=\"texture()\"\n\t\t\t\t[opacity]=\"debug() ? 1 : 0\"\n\t\t\t>\n\t\t\t\t<ng-content />\n\t\t\t</ngt-mesh-basic-material>\n\t\t</ngt-mesh>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsSpotLightShadowShader {\n\tprotected readonly DoubleSide = THREE.DoubleSide;\n\n\tshader = input.required<string>();\n\toptions = input(defaultSpotLightShadowOptions, { transform: mergeInputs(defaultSpotLightShadowOptions) });\n\n\tmeshRef = viewChild.required<ElementRef<Mesh>>('mesh');\n\n\tprivate spotLight = inject(NgtsSpotLight);\n\tprotected debug = this.spotLight.debug;\n\n\tprotected scale = pick(this.options, 'scale');\n\tprotected alphaTest = pick(this.options, 'alphaTest');\n\n\tprivate width = pick(this.options, 'width');\n\tprivate height = pick(this.options, 'height');\n\tprivate map = pick(this.options, 'map');\n\tprivate distance = pick(this.options, 'distance');\n\n\tprivate renderTarget = computed(() => {\n\t\treturn new THREE.WebGLRenderTarget(this.width(), this.height(), {\n\t\t\tformat: THREE.RGBAFormat,\n\t\t\tstencilBuffer: false,\n\t\t\t// depthTexture: null!\n\t\t});\n\t});\n\n\tprotected texture = computed(() => {\n\t\tconst renderTarget = this.renderTarget();\n\t\trenderTarget.texture.wrapT = renderTarget.texture.wrapS = THREE.RepeatWrapping;\n\t\treturn renderTarget.texture;\n\t});\n\n\tprivate fsQuad = computed(() => {\n\t\treturn new FullScreenQuad(\n\t\t\tnew THREE.ShaderMaterial({\n\t\t\t\tuniforms: this.uniforms,\n\t\t\t\tvertexShader: /* language=glsl glsl */ `\n varying vec2 vUv;\n\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n `,\n\t\t\t\tfragmentShader: this.shader(),\n\t\t\t}),\n\t\t);\n\t});\n\n\tprivate uniforms = {\n\t\tuShadowMap: { value: undefined as THREE.Texture | undefined },\n\t\tuTime: { value: 0 },\n\t};\n\n\tconstructor() {\n\t\textend({ Mesh, PlaneGeometry, MeshBasicMaterial });\n\n\t\tinjectSpotLightCommon(this.spotLight.spotLightRef, this.meshRef, this.width, this.height, this.distance);\n\n\t\teffect(() => {\n\t\t\tthis.uniforms.uShadowMap.value = this.map();\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst fsQuad = this.fsQuad();\n\t\t\tonCleanup(() => {\n\t\t\t\tfsQuad.material.dispose();\n\t\t\t\tfsQuad.dispose();\n\t\t\t});\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst renderTarget = this.renderTarget();\n\t\t\tonCleanup(() => {\n\t\t\t\trenderTarget.dispose();\n\t\t\t});\n\t\t});\n\n\t\tinjectBeforeRender(({ gl, delta }) => {\n\t\t\tthis.uniforms.uTime.value += delta;\n\n\t\t\tgl.setRenderTarget(this.renderTarget());\n\t\t\tthis.fsQuad().render(gl);\n\t\t\tgl.setRenderTarget(null);\n\t\t});\n\t}\n}\n\n@Component({\n\tselector: 'ngts-spot-light-shadow-no-shader',\n\ttemplate: `\n\t\t<ngt-mesh #mesh [scale]=\"scale()\" castShadow>\n\t\t\t<ngt-plane-geometry />\n\t\t\t<ngt-mesh-basic-material\n\t\t\t\ttransparent\n\t\t\t\t[side]=\"DoubleSide\"\n\t\t\t\t[alphaTest]=\"alphaTest()\"\n\t\t\t\t[alphaMap]=\"map()\"\n\t\t\t\t[opacity]=\"debug() ? 1 : 0\"\n\t\t\t>\n\t\t\t\t<ng-content />\n\t\t\t</ngt-mesh-basic-material>\n\t\t</ngt-mesh>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsSpotLightShadowNoShader {\n\tprotected readonly DoubleSide = THREE.DoubleSide;\n\n\toptions = input(defaultSpotLightShadowOptions, { transform: mergeInputs(defaultSpotLightShadowOptions) });\n\n\tmeshRef = viewChild.required<ElementRef<THREE.Mesh>>('mesh');\n\n\tprivate spotLight = inject(NgtsSpotLight);\n\tprotected debug = this.spotLight.debug;\n\n\tprotected alphaTest = pick(this.options, 'alphaTest');\n\tprotected scale = pick(this.options, 'scale');\n\tprotected map = computed(() => {\n\t\tconst map = this.options().map;\n\t\tif (map) {\n\t\t\tmap.wrapS = map.wrapT = RepeatWrapping;\n\t\t}\n\t\treturn map;\n\t});\n\n\tprivate width = pick(this.options, 'width');\n\tprivate height = pick(this.options, 'height');\n\tprivate distance = pick(this.options, 'distance');\n\n\tconstructor() {\n\t\textend({ Mesh, PlaneGeometry, MeshBasicMaterial });\n\n\t\tinjectSpotLightCommon(this.spotLight.spotLightRef, this.meshRef, this.width, this.height, this.distance);\n\t}\n}\n\n@Component({\n\tselector: 'ngts-spot-light-shadow',\n\ttemplate: `\n\t\t@if (shader(); as shader) {\n\t\t\t<ngts-spot-light-shadow-shader [shader]=\"shader\" [options]=\"options()\" />\n\t\t} @else {\n\t\t\t<ngts-spot-light-shadow-no-shader [options]=\"options()\" />\n\t\t}\n\t`,\n\timports: [NgtsSpotLightShadowShader, NgtsSpotLightShadowNoShader],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsSpotLightShadow {\n\tshader = input<string>();\n\toptions = input(defaultSpotLightShadowOptions, { transform: mergeInputs(defaultSpotLightShadowOptions) });\n}\n\nconst defaultOptions: NgtsSpotLightOptions = {\n\topacity: 1,\n\tcolor: 'white',\n\tdistance: 5,\n\tangle: 0.15,\n\tattenuation: 5,\n\tanglePower: 5,\n\tvolumetric: true,\n\tdebug: false,\n};\n\n@Component({\n\tselector: 'ngts-spot-light',\n\ttemplate: `\n\t\t<ngt-group>\n\t\t\t<ngt-spot-light\n\t\t\t\t#spotLight\n\t\t\t\t[angle]=\"angle()\"\n\t\t\t\t[color]=\"color()\"\n\t\t\t\t[distance]=\"distance()\"\n\t\t\t\tcastShadow\n\t\t\t\t[parameters]=\"parameters()\"\n\t\t\t>\n\t\t\t\t@if (volumetric()) {\n\t\t\t\t\t<ngts-volumetric-mesh [options]=\"volumetricOptions()\" />\n\t\t\t\t}\n\n\t\t\t\t@if (debug()) {\n\t\t\t\t\t<ngts-helper [type]=\"SpotLightHelper\" />\n\t\t\t\t}\n\t\t\t</ngt-spot-light>\n\t\t\t<ng-content />\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtsVolumetricMesh, NgtsHelper],\n})\nexport class NgtsSpotLight {\n\tprotected readonly SpotLightHelper = THREE.SpotLightHelper;\n\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, [\n\t\t'opacity',\n\t\t'radiusTop',\n\t\t'radiusBottom',\n\t\t'depthBuffer',\n\t\t'color',\n\t\t'distance',\n\t\t'angle',\n\t\t'attenuation',\n\t\t'anglePower',\n\t\t'volumetric',\n\t\t'debug',\n\t]);\n\tprotected volumetricOptions = pick(this.options, [\n\t\t'opacity',\n\t\t'radiusTop',\n\t\t'radiusBottom',\n\t\t'depthBuffer',\n\t\t'color',\n\t\t'distance',\n\t\t'angle',\n\t\t'attenuation',\n\t\t'anglePower',\n\t\t'debug',\n\t]);\n\n\tspotLightRef = viewChild.required<ElementRef<THREE.SpotLight>>('spotLight');\n\n\tdebug = pick(this.options, 'debug');\n\tprotected angle = pick(this.options, 'angle');\n\tprotected color = pick(this.options, 'color');\n\tprotected distance = pick(this.options, 'distance');\n\tprotected volumetric = pick(this.options, 'volumetric');\n\n\tconstructor() {\n\t\textend({ Group, SpotLight });\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tDirective,\n\teffect,\n\tinject,\n\tinput,\n\toutput,\n\tsignal,\n} from '@angular/core';\nimport { extend, NgtArgs, NgtThreeElements, omit, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { AmbientLight, Group, PointLight, SpotLight, Vector2 } from 'three';\nimport { NgtsAccumulativeShadows, NgtsAccumulativeShadowsOptions } from './accumulative-shadows';\nimport { NgtsBounds } from './bounds';\nimport { NgtsCenter, NgtsCenterOptions, NgtsCenterState } from './center';\nimport { NgtsContactShadows, NgtsContactShadowsOptions } from './contact-shadows';\nimport { NgtsEnvironment, NgtsEnvironmentOptions } from './environment/environment';\nimport { NgtsEnvironmentPresets } from './environment/inject-environment';\nimport { NgtsRandomizedLights, NgtsRandomizedLightsOptions } from './randomized-lights';\n\nconst presets = {\n\trembrandt: { main: [1, 2, 1], fill: [-2, -0.5, -2] },\n\tportrait: { main: [-1, 2, 0.5], fill: [-1, 0.5, -1.5] },\n\tupfront: { main: [0, 2, 1], fill: [-1, 0.5, -1.5] },\n\tsoft: { main: [-2, 4, 4], fill: [-1, 0.5, -1.5] },\n} as const;\n\ntype NgtsStageShadowsOptions = Partial<NgtsAccumulativeShadowsOptions> &\n\tPartial<NgtsRandomizedLightsOptions> &\n\tPartial<NgtsContactShadowsOptions> & {\n\t\ttype: 'contact' | 'accumulative';\n\t\t/** Shadow plane offset, default: 0 */\n\t\toffset: number;\n\t\t/** Shadow bias, default: -0.0001 */\n\t\tbias: number;\n\t\t/** Shadow normal bias, default: 0 */\n\t\tnormalBias: number;\n\t\t/** Shadow map size, default: 1024 */\n\t\tsize: number;\n\t};\n\nexport interface NgtsStageOptions extends Partial<NgtThreeElements['ngt-group']> {\n\t/** Lighting setup, default: \"rembrandt\" */\n\tpreset:\n\t\t| 'rembrandt'\n\t\t| 'portrait'\n\t\t| 'upfront'\n\t\t| 'soft'\n\t\t| { main: [x: number, y: number, z: number]; fill: [x: number, y: number, z: number] };\n\t/** Controls the ground shadows, default: \"contact\" */\n\tshadows: boolean | 'contact' | 'accumulative' | NgtsStageShadowsOptions;\n\t/** Optionally wraps and thereby centers the models using <Bounds>, can also be a margin, default: true */\n\tadjustCamera: boolean | number;\n\t/** The default environment, default: \"city\" */\n\tenvironment: NgtsEnvironmentPresets | Partial<NgtsEnvironmentOptions> | null;\n\t/** The lighting intensity, default: 0.5 */\n\tintensity: number;\n\t/** To adjust centering, default: undefined */\n\tcenter?: Partial<NgtsCenterOptions>;\n}\n\nconst defaultOptions: NgtsStageOptions = {\n\tpreset: 'rembrandt',\n\tshadows: 'contact',\n\tadjustCamera: true,\n\tenvironment: 'city',\n\tintensity: 0.5,\n};\n\n@Directive({ selector: 'ngts-stage-refit' })\nexport class NgtsStageRefit {\n\tradius = input.required<number>();\n\tadjustCamera = input.required<boolean>();\n\n\tconstructor() {\n\t\tconst bounds = inject(NgtsBounds);\n\n\t\teffect(() => {\n\t\t\tconst [, adjustCamera] = [this.radius(), this.adjustCamera()];\n\t\t\tif (adjustCamera) bounds.refresh().clip().fit();\n\t\t});\n\t}\n}\n\n@Component({\n\tselector: 'ngts-stage',\n\ttemplate: `\n\t\t<ngt-ambient-light [intensity]=\"intensity() / 3\" />\n\t\t<ngt-spot-light\n\t\t\t[penumbra]=\"1\"\n\t\t\t[position]=\"[config().main[0] * radius(), config().main[1] * radius(), config().main[2] * radius()]\"\n\t\t\t[intensity]=\"intensity() * 2\"\n\t\t\t[castShadow]=\"!!shadows()\"\n\t\t>\n\t\t\t<ngt-value [rawValue]=\"shadowBias()\" attach=\"shadow.bias\" />\n\t\t\t<ngt-value [rawValue]=\"normalBias()\" attach=\"shadow.normalBias\" />\n\t\t\t<ngt-vector2 *args=\"[shadowSize(), shadowSize()]\" attach=\"shadow.mapSize\" />\n\t\t</ngt-spot-light>\n\t\t<ngt-point-light\n\t\t\t[position]=\"[config().fill[0] * radius(), config().fill[1] * radius(), config().fill[2] * radius()]\"\n\t\t\t[intensity]=\"intensity()\"\n\t\t/>\n\n\t\t<ngts-bounds [options]=\"boundsOptions()\">\n\t\t\t<ngts-stage-refit [radius]=\"radius()\" [adjustCamera]=\"!!adjustCamera()\" />\n\t\t\t<ngts-center [options]=\"centerOptions()\" (centered)=\"onCenter($event)\">\n\t\t\t\t<ng-content />\n\t\t\t</ngts-center>\n\t\t</ngts-bounds>\n\n\t\t<ngt-group [position]=\"[0, -height() / 2 - shadowOffset() / 2, 0]\">\n\t\t\t@if (contactShadow()) {\n\t\t\t\t<ngts-contact-shadows [options]=\"shadowOptions()\" />\n\t\t\t}\n\n\t\t\t@if (accumulativeShadow()) {\n\t\t\t\t<ngts-accumulative-shadows [options]=\"shadowOptions()\">\n\t\t\t\t\t<ngts-randomized-lights [options]=\"randomizedLightsOptions()\" />\n\t\t\t\t</ngts-accumulative-shadows>\n\t\t\t}\n\t\t</ngt-group>\n\n\t\t@if (environment()) {\n\t\t\t<ngts-environment [options]=\"environmentOptions()\" />\n\t\t}\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [\n\t\tNgtArgs,\n\t\tNgtsBounds,\n\t\tNgtsStageRefit,\n\t\tNgtsCenter,\n\t\tNgtsContactShadows,\n\t\tNgtsAccumulativeShadows,\n\t\tNgtsEnvironment,\n\t\tNgtsRandomizedLights,\n\t],\n})\nexport class NgtsStage {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprivate parameters = omit(this.options, ['preset', 'shadows', 'adjustCamera', 'environment', 'intensity', 'center']);\n\n\tcentered = output<NgtsCenterState>();\n\n\tprivate dims = signal({ radius: 0, width: 0, height: 0, depth: 0 });\n\tprotected radius = pick(this.dims, 'radius');\n\tprotected height = pick(this.dims, 'height');\n\n\tprivate center = pick(this.options, 'center');\n\tprotected adjustCamera = pick(this.options, 'adjustCamera');\n\tprivate margin = computed(() => Number(this.adjustCamera()));\n\tprotected intensity = pick(this.options, 'intensity');\n\tprotected shadows = pick(this.options, 'shadows');\n\tprotected environment = pick(this.options, 'environment');\n\tprivate preset = pick(this.options, 'preset');\n\n\tprotected config = computed(() => {\n\t\tconst preset = this.preset();\n\t\treturn typeof preset === 'string' ? presets[preset] : preset;\n\t});\n\n\tprotected shadowBias = computed(() => (this.shadows() as NgtsStageShadowsOptions).bias ?? -0.0001);\n\tprotected normalBias = computed(() => (this.shadows() as NgtsStageShadowsOptions).normalBias ?? 0);\n\tprotected shadowSize = computed(() => (this.shadows() as NgtsStageShadowsOptions).size ?? 1024);\n\tprotected shadowOffset = computed(() => (this.shadows() as NgtsStageShadowsOptions).offset ?? 0);\n\tprotected contactShadow = computed(\n\t\t() => this.shadows() === 'contact' || (this.shadows() as NgtsStageShadowsOptions)?.type === 'contact',\n\t);\n\tprotected accumulativeShadow = computed(\n\t\t() => this.shadows() === 'accumulative' || (this.shadows() as NgtsStageShadowsOptions)?.type === 'accumulative',\n\t);\n\tprotected shadowOptions = computed(() => {\n\t\tconst shadows = this.shadows() as NgtsStageShadowsOptions;\n\n\t\tif (this.contactShadow()) {\n\t\t\treturn { scale: this.radius() * 4, far: this.radius(), blur: 2, ...shadows };\n\t\t}\n\n\t\tif (this.accumulativeShadow()) {\n\t\t\treturn { temporal: true, frames: 100, alphaTest: 0.9, toneMapped: true, scale: this.radius() * 4, ...shadows };\n\t\t}\n\n\t\treturn typeof shadows === 'object' ? shadows : {};\n\t});\n\tprotected randomizedLightsOptions = computed(() => {\n\t\tif (!this.accumulativeShadow()) return {};\n\t\tconst shadows = this.shadows() as NgtsStageShadowsOptions;\n\t\treturn {\n\t\t\tamount: shadows.amount ?? 8,\n\t\t\tradius: shadows.radius ?? this.radius(),\n\t\t\tambient: shadows.ambient ?? 0.5,\n\t\t\tintensity: shadows.intensity ?? 1,\n\t\t\tposition: [\n\t\t\t\tthis.config().main[0] * this.radius(),\n\t\t\t\tthis.config().main[1] * this.radius(),\n\t\t\t\tthis.config().main[2] * this.radius(),\n\t\t\t],\n\t\t\tsize: this.radius() * 4,\n\t\t\tbias: -this.shadowBias(),\n\t\t\tmapSize: this.shadowSize(),\n\t\t} as Partial<NgtsRandomizedLightsOptions>;\n\t});\n\tprotected environmentOptions = computed(() => {\n\t\tconst environment = this.environment();\n\t\treturn !environment ? {} : typeof environment === 'string' ? { preset: environment } : environment;\n\t});\n\n\tprotected boundsOptions = computed(() => ({\n\t\tfit: !!this.adjustCamera(),\n\t\tclip: !!this.adjustCamera(),\n\t\tmargin: this.margin(),\n\t\tobserve: true,\n\t\t...this.parameters(),\n\t}));\n\tprotected centerOptions = computed(\n\t\t() =>\n\t\t\t({\n\t\t\t\t...(this.center() || {}),\n\t\t\t\tposition: [0, this.shadowOffset() / 2, 0],\n\t\t\t}) as Partial<NgtsCenterOptions>,\n\t);\n\n\tconstructor() {\n\t\textend({ AmbientLight, SpotLight, PointLight, Group, Vector2 });\n\t}\n\n\tonCenter($event: NgtsCenterState) {\n\t\tconst { width, height, depth, boundingSphere } = $event;\n\t\tthis.dims.set({ radius: boundingSphere.radius, width, height, depth });\n\t\tthis.centered.emit($event);\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["defaultOptions","LIST_URL"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"angular-three-soba-staging.mjs","sources":["../../../../libs/soba/staging/src/lib/accumulative-shadows.ts","../../../../libs/soba/staging/src/lib/backdrop.ts","../../../../libs/soba/staging/src/lib/bb-anchor.ts","../../../../libs/soba/staging/src/lib/bounds.ts","../../../../libs/soba/staging/src/lib/camera-shake.ts","../../../../libs/soba/staging/src/lib/caustics.ts","../../../../libs/soba/staging/src/lib/center.ts","../../../../libs/soba/staging/src/lib/contact-shadows.ts","../../../../libs/soba/staging/src/lib/environment/inject-environment.ts","../../../../libs/soba/staging/src/lib/environment/environment.ts","../../../../libs/soba/staging/src/lib/float.ts","../../../../libs/soba/staging/src/lib/lightformer.ts","../../../../libs/soba/staging/src/lib/mask.ts","../../../../libs/soba/staging/src/lib/matcap-texture.ts","../../../../libs/soba/staging/src/lib/normal-texture.ts","../../../../libs/soba/staging/src/lib/randomized-lights.ts","../../../../libs/soba/staging/src/lib/render-texture.ts","../../../../libs/soba/staging/src/lib/sky.ts","../../../../libs/soba/staging/src/lib/spot-light.ts","../../../../libs/soba/staging/src/lib/stage.ts","../../../../libs/soba/staging/src/angular-three-soba-staging.ts"],"sourcesContent":["import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tDestroyRef,\n\tElementRef,\n\tcomputed,\n\teffect,\n\tinject,\n\tinput,\n\tuntracked,\n\tviewChild,\n} from '@angular/core';\nimport { NgtThreeElements, extend, getInstanceState, injectBeforeRender, injectStore, omit, pick } from 'angular-three';\nimport { ProgressiveLightMap, SoftShadowMaterial } from 'angular-three-soba/vanilla-exports';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { Group, Mesh, PlaneGeometry } from 'three';\n\nexport interface NgtsAccumulativeShadowsOptions extends Partial<NgtThreeElements['ngt-group']> {\n\t/** How many frames it can render, more yields cleaner results but takes more time, 40 */\n\tframes: number;\n\t/** If frames === Infinity blend controls the refresh ratio, 100 */\n\tblend: number;\n\t/** Can limit the amount of frames rendered if frames === Infinity, usually to get some performance back once a movable scene has settled, Infinity */\n\tlimit: number;\n\t/** Scale of the plane, */\n\tscale: number;\n\t/** Temporal accumulates shadows over time which is more performant but has a visual regression over instant results, false */\n\ttemporal?: boolean;\n\t/** Opacity of the plane, 1 */\n\topacity: number;\n\t/** Discards alpha pixels, 0.65 */\n\talphaTest: number;\n\t/** Shadow color, black */\n\tcolor: string;\n\t/** Colorblend, how much colors turn to black, 0 is black, 2 */\n\tcolorBlend: number;\n\t/** Buffer resolution, 1024 */\n\tresolution: number;\n\t/** Texture tonemapping */\n\ttoneMapped: boolean;\n}\n\nconst defaultOptions: NgtsAccumulativeShadowsOptions = {\n\ttemporal: false,\n\tframes: 40,\n\tlimit: Infinity,\n\tblend: 20,\n\tscale: 10,\n\topacity: 1,\n\talphaTest: 0.75,\n\tcolor: 'black',\n\tcolorBlend: 2,\n\tresolution: 1024,\n\ttoneMapped: true,\n};\n\n@Component({\n\tselector: 'ngts-accumulative-shadows',\n\ttemplate: `\n\t\t<ngt-group [parameters]=\"parameters()\">\n\t\t\t<ngt-group #lights [traverse]=\"nullTraversal\">\n\t\t\t\t<ng-content />\n\t\t\t</ngt-group>\n\n\t\t\t<ngt-mesh #plane [scale]=\"scale()\" [rotation]=\"[-Math.PI / 2, 0, 0]\" receiveShadow>\n\t\t\t\t<ngt-plane-geometry />\n\t\t\t\t<ngt-soft-shadow-material\n\t\t\t\t\t[depthWrite]=\"false\"\n\t\t\t\t\t[toneMapped]=\"toneMapped()\"\n\t\t\t\t\t[color]=\"color()\"\n\t\t\t\t\t[blend]=\"colorBlend()\"\n\t\t\t\t\t[map]=\"map()\"\n\t\t\t\t\ttransparent\n\t\t\t\t/>\n\t\t\t</ngt-mesh>\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsAccumulativeShadows {\n\tnullTraversal = () => null;\n\tMath = Math;\n\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = omit(this.options, [\n\t\t'temporal',\n\t\t'frames',\n\t\t'limit',\n\t\t'blend',\n\t\t'scale',\n\t\t'opacity',\n\t\t'alphaTest',\n\t\t'color',\n\t\t'colorBlend',\n\t\t'resolution',\n\t\t'toneMapped',\n\t]);\n\n\tlightsRef = viewChild.required<ElementRef<THREE.Group>>('lights');\n\tplaneRef =\n\t\tviewChild.required<ElementRef<THREE.Mesh<THREE.PlaneGeometry, InstanceType<typeof SoftShadowMaterial>>>>(\n\t\t\t'plane',\n\t\t);\n\n\tprivate store = injectStore();\n\n\tprivate opacity = pick(this.options, 'opacity');\n\tprivate alphaTest = pick(this.options, 'alphaTest');\n\tprivate limit = pick(this.options, 'limit');\n\tprivate resolution = pick(this.options, 'resolution');\n\n\tprivate previousPLM: ProgressiveLightMap | undefined;\n\tprivate pLM = computed(() => {\n\t\tif (this.previousPLM) {\n\t\t\tthis.previousPLM.clear();\n\t\t}\n\t\treturn (this.previousPLM = new ProgressiveLightMap(this.store.gl(), this.store.scene(), this.resolution()));\n\t});\n\n\tprotected scale = pick(this.options, 'scale');\n\tprotected toneMapped = pick(this.options, 'toneMapped');\n\tprotected color = pick(this.options, 'color');\n\tprotected colorBlend = pick(this.options, 'colorBlend');\n\tprotected map = computed(() => this.pLM().progressiveLightMap2.texture);\n\n\tlightsMap = new Map<string, () => void>();\n\tprivate temporal = computed(() => !!this.options().temporal);\n\tprivate frames = computed(() => Math.max(2, this.options().frames));\n\tprivate blend = computed(() =>\n\t\tMath.max(2, this.options().frames === Infinity ? this.options().blend : this.options().frames),\n\t);\n\tprivate count = 0;\n\n\tconstructor() {\n\t\textend({ Group, SoftShadowMaterial, Mesh, PlaneGeometry });\n\n\t\teffect(() => {\n\t\t\tthis.pLM().configure(this.planeRef().nativeElement);\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst sceneInstanceState = getInstanceState(this.store.scene());\n\t\t\tif (!sceneInstanceState) return;\n\n\t\t\t// track deps\n\t\t\tthis.planeRef();\n\t\t\tthis.options();\n\t\t\tsceneInstanceState.objects();\n\n\t\t\t// Reset internals, buffers, ...\n\t\t\tthis.reset();\n\t\t\t// Update lightmap\n\n\t\t\t// TODO: (chau) this is a hack. not sure why a timeout is needed here. if not PLM.update\n\t\t\t// is erroring out on some scenes.\n\t\t\tlet timeout: ReturnType<typeof setTimeout>;\n\n\t\t\tif (!this.temporal() && this.frames() !== Infinity) {\n\t\t\t\tconst blend = this.blend();\n\t\t\t\ttimeout = setTimeout(() => this.update(blend));\n\t\t\t}\n\n\t\t\tonCleanup(() => {\n\t\t\t\tif (timeout) clearTimeout(timeout);\n\t\t\t});\n\t\t});\n\n\t\tinjectBeforeRender(() => {\n\t\t\tconst [frames, temporal, invalidate, limit] = [\n\t\t\t\tthis.frames(),\n\t\t\t\t!!this.temporal(),\n\t\t\t\tthis.store.snapshot.invalidate,\n\t\t\t\tthis.limit(),\n\t\t\t];\n\t\t\tif ((temporal || frames === Infinity) && this.count < frames && this.count < limit) {\n\t\t\t\tinvalidate();\n\t\t\t\tthis.update();\n\t\t\t\tthis.count++;\n\t\t\t}\n\t\t});\n\n\t\tinject(DestroyRef).onDestroy(() => {\n\t\t\tthis.previousPLM?.clear();\n\t\t});\n\t}\n\n\tgetMesh() {\n\t\treturn this.planeRef().nativeElement;\n\t}\n\n\treset() {\n\t\t// Clear buffers, reset opacities, set frame count to 0\n\t\tuntracked(this.pLM).clear();\n\t\tconst material = untracked(this.planeRef).nativeElement.material;\n\t\tmaterial.opacity = 0;\n\t\tmaterial.alphaTest = 0;\n\t\tthis.count = 0;\n\t}\n\n\tupdate(frames = 1) {\n\t\t// Adapt the opacity-blend ratio to the number of frames\n\t\tconst material = this.planeRef().nativeElement.material;\n\t\tif (!this.temporal()) {\n\t\t\tmaterial.opacity = this.opacity();\n\t\t\tmaterial.alphaTest = this.alphaTest();\n\t\t} else {\n\t\t\tmaterial.opacity = Math.min(this.opacity(), material.opacity + this.opacity() / this.blend());\n\t\t\tmaterial.alphaTest = Math.min(this.alphaTest(), material.alphaTest + this.alphaTest() / this.blend());\n\t\t}\n\n\t\t// Switch accumulative lights on\n\t\tthis.lightsRef().nativeElement.visible = true;\n\t\t// Collect scene lights and meshes\n\t\tthis.pLM().prepare();\n\n\t\t// Update the lightmap and the accumulative lights\n\t\tfor (let i = 0; i < frames; i++) {\n\t\t\tthis.lightsMap.forEach((lightUpdate) => lightUpdate());\n\t\t\tthis.pLM().update(this.store.snapshot.camera, this.blend());\n\t\t}\n\t\t// Switch lights off\n\t\tthis.lightsRef().nativeElement.visible = false;\n\t\t// Restore lights and meshes\n\t\tthis.pLM().finish();\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 { checkUpdate, extend, NgtArgs, NgtThreeElements, omit, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { Group, Mesh, PlaneGeometry } from 'three';\n\nfunction easeInExpo(x: number) {\n\treturn x === 0 ? 0 : Math.pow(2, 10 * x - 10);\n}\n\nexport interface NgtsBackdropOptions extends Partial<NgtThreeElements['ngt-group']> {\n\tfloor: number;\n\tsegments: number;\n\treceiveShadow?: boolean;\n}\n\nconst defaultOptions: NgtsBackdropOptions = {\n\tfloor: 0.25,\n\tsegments: 20,\n};\n\n@Component({\n\tselector: 'ngts-backdrop',\n\ttemplate: `\n\t\t<ngt-group #group [parameters]=\"parameters()\">\n\t\t\t<ngt-mesh [receiveShadow]=\"receiveShadow()\" [rotation]=\"[-Math.PI / 2, 0, Math.PI / 2]\">\n\t\t\t\t<ngt-plane-geometry #plane *args=\"[1, 1, segments(), segments()]\" />\n\t\t\t\t<ng-content />\n\t\t\t</ngt-mesh>\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsBackdrop {\n\tprotected readonly Math = Math;\n\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, ['floor', 'segments', 'receiveShadow']);\n\n\tgroupRef = viewChild.required<ElementRef<THREE.Group>>('group');\n\tplaneRef = viewChild<ElementRef<THREE.PlaneGeometry>>('plane');\n\n\tprotected receiveShadow = pick(this.options, 'receiveShadow');\n\tprotected segments = pick(this.options, 'segments');\n\tprivate floor = pick(this.options, 'floor');\n\n\tconstructor() {\n\t\textend({ Group, Mesh, PlaneGeometry });\n\n\t\teffect(() => {\n\t\t\tconst plane = this.planeRef()?.nativeElement;\n\t\t\tif (!plane) return;\n\n\t\t\tconst [segments, floor] = [this.segments(), this.floor()];\n\n\t\t\tlet i = 0;\n\t\t\tconst offset = segments / segments / 2;\n\t\t\tconst position = plane.attributes['position'] as THREE.BufferAttribute;\n\t\t\tfor (let x = 0; x < segments + 1; x++) {\n\t\t\t\tfor (let y = 0; y < segments + 1; y++) {\n\t\t\t\t\tposition.setXYZ(\n\t\t\t\t\t\ti++,\n\t\t\t\t\t\tx / segments - offset + (x === 0 ? -floor : 0),\n\t\t\t\t\t\ty / segments - offset,\n\t\t\t\t\t\teaseInExpo(x / segments),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcheckUpdate(position);\n\t\t\tplane.computeVertexNormals();\n\t\t});\n\t}\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\teffect,\n\tinput,\n\tsignal,\n\tviewChild,\n} from '@angular/core';\nimport {\n\tNgtThreeElements,\n\tNgtVector3,\n\textend,\n\tgetInstanceState,\n\tinjectBeforeRender,\n\tomit,\n\tvector3,\n} from 'angular-three';\nimport * as THREE from 'three';\nimport { Group } from 'three';\n\nconst boundingBox = new THREE.Box3();\nconst boundingBoxSize = new THREE.Vector3();\n\nexport interface NgtsBBAnchorOptions extends Partial<NgtThreeElements['ngt-group']> {\n\tanchor: NgtVector3;\n}\n\n@Component({\n\tselector: 'ngts-bb-anchor',\n\ttemplate: `\n\t\t<ngt-group #bbAnchor [parameters]=\"parameters()\">\n\t\t\t<ng-content />\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsBBAnchor {\n\toptions = input.required<NgtsBBAnchorOptions>();\n\tparameters = omit(this.options, ['anchor']);\n\n\tbbAnchorRef = viewChild.required<ElementRef<THREE.Group>>('bbAnchor');\n\n\tprivate parent = signal<THREE.Object3D | null>(null);\n\tprivate anchor = vector3(this.options, 'anchor');\n\n\tconstructor() {\n\t\textend({ Group });\n\n\t\t// Reattach group created by this component to the parent's parent,\n\t\t// so it becomes a sibling of its initial parent.\n\t\t// We do that so the children have no impact on a bounding box of a parent.\n\t\teffect(() => {\n\t\t\tconst bbAnchorInstanceState = getInstanceState(this.bbAnchorRef().nativeElement);\n\t\t\tconst bbAnchorParent = bbAnchorInstanceState?.parent();\n\t\t\tif (bbAnchorParent && 'parent' in bbAnchorParent) {\n\t\t\t\tthis.parent.set(bbAnchorParent as unknown as THREE.Object3D);\n\t\t\t\tbbAnchorParent['parent'].add(this.bbAnchorRef().nativeElement);\n\t\t\t}\n\t\t});\n\n\t\tinjectBeforeRender(() => {\n\t\t\tconst parent = this.parent();\n\t\t\tif (parent) {\n\t\t\t\tboundingBox.setFromObject(parent);\n\t\t\t\tboundingBox.getSize(boundingBoxSize);\n\n\t\t\t\tconst anchor = this.anchor();\n\t\t\t\tconst bbAnchor = this.bbAnchorRef().nativeElement;\n\n\t\t\t\tbbAnchor.position.set(\n\t\t\t\t\tparent.position.x + (boundingBoxSize.x * anchor.x) / 2,\n\t\t\t\t\tparent.position.y + (boundingBoxSize.y * anchor.y) / 2,\n\t\t\t\t\tparent.position.z + (boundingBoxSize.z * anchor.z) / 2,\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinput,\n\tuntracked,\n\tviewChild,\n} from '@angular/core';\nimport { extend, injectBeforeRender, injectStore, is, NgtThreeElements, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { Group } from 'three';\n\ninterface ControlsProto {\n\tupdate(): void;\n\n\ttarget: THREE.Vector3;\n\tmaxDistance: number;\n\taddEventListener: (event: string, callback: (event: any) => void) => void;\n\tremoveEventListener: (event: string, callback: (event: any) => void) => void;\n}\n\nenum AnimationState {\n\tNONE = 0,\n\tSTART = 1,\n\tACTIVE = 2,\n}\n\nfunction interpolateFuncDefault(t: number) {\n\t// Imitates the previously used THREE.MathUtils.damp\n\treturn 1 - Math.exp(-5 * t) + 0.007 * t;\n}\n\nexport interface NgtsBoundsOptions extends Partial<NgtThreeElements['ngt-group']> {\n\tmaxDuration: number;\n\tmargin: number;\n\tobserve: boolean;\n\tfit: boolean;\n\tclip: boolean;\n\tinterpolateFunc: (t: number) => number;\n}\n\nconst defaultOptions: NgtsBoundsOptions = {\n\tmaxDuration: 1.0,\n\tmargin: 1.2,\n\tinterpolateFunc: interpolateFuncDefault,\n\tclip: false,\n\tfit: false,\n\tobserve: false,\n};\n\n@Component({\n\tselector: 'ngts-bounds',\n\ttemplate: `\n\t\t<ngt-group #group>\n\t\t\t<ng-content />\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsBounds {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\n\tgroupRef = viewChild.required<ElementRef<THREE.Group>>('group');\n\n\tprivate store = injectStore();\n\n\tprivate clipOption = pick(this.options, 'clip');\n\tprivate fitOption = pick(this.options, 'fit');\n\tprivate observe = pick(this.options, 'observe');\n\n\tprivate origin = {\n\t\tcamPos: new THREE.Vector3(),\n\t\tcamRot: new THREE.Quaternion(),\n\t\tcamZoom: 1,\n\t};\n\tprivate goal = {\n\t\tcamPos: undefined as THREE.Vector3 | undefined,\n\t\tcamRot: undefined as THREE.Quaternion | undefined,\n\t\tcamZoom: undefined as number | undefined,\n\t\tcamUp: undefined as THREE.Vector3 | undefined,\n\t\ttarget: undefined as THREE.Vector3 | undefined,\n\t};\n\tprivate animationState = AnimationState.NONE;\n\n\t// represent animation state from 0 to 1\n\tprivate t = 0;\n\tprivate box = new THREE.Box3();\n\n\tconstructor() {\n\t\textend({ Group });\n\n\t\teffect((onCleanup) => {\n\t\t\tconst [controls, camera] = [this.store.controls() as unknown as ControlsProto, this.store.snapshot.camera];\n\t\t\tif (!controls) return;\n\n\t\t\tconst callback = () => {\n\t\t\t\tif (this.goal.target && this.animationState !== AnimationState.NONE) {\n\t\t\t\t\tconst front = new THREE.Vector3().setFromMatrixColumn(camera.matrix, 2);\n\t\t\t\t\tconst d0 = this.origin.camPos.distanceTo(controls.target);\n\t\t\t\t\tconst d1 = (this.goal.camPos || this.origin.camPos).distanceTo(this.goal.target);\n\t\t\t\t\tconst d = (1 - this.t) * d0 + this.t * d1;\n\n\t\t\t\t\tcontrols.target.copy(camera.position).addScaledVector(front, -d);\n\t\t\t\t\tcontrols.update();\n\t\t\t\t}\n\n\t\t\t\tthis.animationState = AnimationState.NONE;\n\t\t\t};\n\n\t\t\tcontrols.addEventListener('start', callback);\n\t\t\tonCleanup(() => controls.removeEventListener('start', callback));\n\t\t});\n\n\t\tlet count = 0;\n\t\teffect(() => {\n\t\t\tconst [clip, fit, observe] = [\n\t\t\t\tthis.clipOption(),\n\t\t\t\tthis.fitOption(),\n\t\t\t\tthis.observe(),\n\t\t\t\tthis.store.size(),\n\t\t\t\tthis.store.camera(),\n\t\t\t\tthis.store.controls(),\n\t\t\t];\n\n\t\t\tif (observe || count++ === 0) {\n\t\t\t\tthis.refresh();\n\t\t\t\tif (fit) this.reset().fit();\n\t\t\t\tif (clip) this.clip();\n\t\t\t}\n\t\t});\n\n\t\tinjectBeforeRender(({ delta }) => {\n\t\t\t// This [additional animation step START] is needed to guarantee that delta used in animation isn't absurdly high (2-3 seconds) which is actually possible if rendering happens on demand...\n\t\t\tif (this.animationState === AnimationState.START) {\n\t\t\t\tthis.animationState = AnimationState.ACTIVE;\n\t\t\t\tthis.store.snapshot.invalidate();\n\t\t\t} else if (this.animationState === AnimationState.ACTIVE) {\n\t\t\t\tconst [{ maxDuration, interpolateFunc }, camera, controls, invalidate] = [\n\t\t\t\t\tthis.options(),\n\t\t\t\t\tthis.store.snapshot.camera,\n\t\t\t\t\tthis.store.snapshot.controls as unknown as ControlsProto,\n\t\t\t\t\tthis.store.snapshot.invalidate,\n\t\t\t\t];\n\t\t\t\tthis.t += delta / maxDuration;\n\n\t\t\t\tif (this.t >= 1) {\n\t\t\t\t\tthis.goal.camPos && camera.position.copy(this.goal.camPos);\n\t\t\t\t\tthis.goal.camRot && camera.quaternion.copy(this.goal.camRot);\n\t\t\t\t\tthis.goal.camUp && camera.up.copy(this.goal.camUp);\n\t\t\t\t\tthis.goal.camZoom && is.orthographicCamera(camera) && (camera.zoom = this.goal.camZoom);\n\n\t\t\t\t\tcamera.updateMatrixWorld();\n\t\t\t\t\tcamera.updateProjectionMatrix();\n\n\t\t\t\t\tif (controls && this.goal.target) {\n\t\t\t\t\t\tcontrols.target.copy(this.goal.target);\n\t\t\t\t\t\tcontrols.update();\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.animationState = AnimationState.NONE;\n\t\t\t\t} else {\n\t\t\t\t\tconst k = interpolateFunc(this.t);\n\n\t\t\t\t\tthis.goal.camPos && camera.position.lerpVectors(this.origin.camPos, this.goal.camPos, k);\n\t\t\t\t\tthis.goal.camRot && camera.quaternion.slerpQuaternions(this.origin.camRot, this.goal.camRot, k);\n\t\t\t\t\tthis.goal.camUp && camera.up.set(0, 1, 0).applyQuaternion(camera.quaternion);\n\t\t\t\t\tthis.goal.camZoom &&\n\t\t\t\t\t\tis.orthographicCamera(camera) &&\n\t\t\t\t\t\t(camera.zoom = (1 - k) * this.origin.camZoom + k * this.goal.camZoom);\n\n\t\t\t\t\tcamera.updateMatrixWorld();\n\t\t\t\t\tcamera.updateProjectionMatrix();\n\t\t\t\t}\n\n\t\t\t\tinvalidate();\n\t\t\t}\n\t\t});\n\t}\n\n\tgetSize() {\n\t\tconst [camera, { margin }] = [this.store.snapshot.camera, untracked(this.options)];\n\n\t\tconst boxSize = this.box.getSize(new THREE.Vector3());\n\t\tconst center = this.box.getCenter(new THREE.Vector3());\n\t\tconst maxSize = Math.max(boxSize.x, boxSize.y, boxSize.z);\n\t\tconst fitHeightDistance = is.orthographicCamera(camera)\n\t\t\t? maxSize * 4\n\t\t\t: maxSize / (2 * Math.atan((Math.PI * camera.fov) / 360));\n\t\tconst fitWidthDistance = is.orthographicCamera(camera) ? maxSize * 4 : fitHeightDistance / camera.aspect;\n\t\tconst distance = margin * Math.max(fitHeightDistance, fitWidthDistance);\n\n\t\treturn { box: this.box, size: boxSize, center, distance };\n\t}\n\n\trefresh(object?: THREE.Object3D | THREE.Box3) {\n\t\tconst [group, camera] = [untracked(this.groupRef).nativeElement, this.store.snapshot.camera];\n\n\t\tif (is.three<THREE.Box3>(object, 'isBox3')) this.box.copy(object);\n\t\telse {\n\t\t\tconst target = object || group;\n\t\t\tif (!target) return this;\n\t\t\ttarget.updateWorldMatrix(true, true);\n\t\t\tthis.box.setFromObject(target);\n\t\t}\n\t\tif (this.box.isEmpty()) {\n\t\t\tconst max = camera.position.length() || 10;\n\t\t\tthis.box.setFromCenterAndSize(new THREE.Vector3(), new THREE.Vector3(max, max, max));\n\t\t}\n\n\t\tthis.origin.camPos.copy(camera.position);\n\t\tthis.origin.camRot.copy(camera.quaternion);\n\t\tis.orthographicCamera(camera) && (this.origin.camZoom = camera.zoom);\n\n\t\tthis.goal.camPos = undefined;\n\t\tthis.goal.camRot = undefined;\n\t\tthis.goal.camZoom = undefined;\n\t\tthis.goal.camUp = undefined;\n\t\tthis.goal.target = undefined;\n\n\t\treturn this;\n\t}\n\n\treset() {\n\t\tconst [camera] = [this.store.snapshot.camera];\n\t\tconst { center, distance } = this.getSize();\n\n\t\tconst direction = camera.position.clone().sub(center).normalize();\n\t\tthis.goal.camPos = center.clone().addScaledVector(direction, distance);\n\t\tthis.goal.target = center.clone();\n\t\tconst mCamRot = new THREE.Matrix4().lookAt(this.goal.camPos, this.goal.target, camera.up);\n\t\tthis.goal.camRot = new THREE.Quaternion().setFromRotationMatrix(mCamRot);\n\n\t\tthis.animationState = AnimationState.START;\n\t\tthis.t = 0;\n\n\t\treturn this;\n\t}\n\n\tmoveTo(position: THREE.Vector3 | [number, number, number]) {\n\t\tthis.goal.camPos = Array.isArray(position) ? new THREE.Vector3(...position) : position.clone();\n\n\t\tthis.animationState = AnimationState.START;\n\t\tthis.t = 0;\n\n\t\treturn this;\n\t}\n\n\tlookAt({\n\t\ttarget,\n\t\tup,\n\t}: {\n\t\ttarget: THREE.Vector3 | [number, number, number];\n\t\tup?: THREE.Vector3 | [number, number, number];\n\t}) {\n\t\tconst [camera] = [this.store.snapshot.camera];\n\n\t\tthis.goal.target = Array.isArray(target) ? new THREE.Vector3(...target) : target.clone();\n\t\tif (up) {\n\t\t\tthis.goal.camUp = Array.isArray(up) ? new THREE.Vector3(...up) : up.clone();\n\t\t} else {\n\t\t\tthis.goal.camUp = camera.up.clone();\n\t\t}\n\t\tconst mCamRot = new THREE.Matrix4().lookAt(\n\t\t\tthis.goal.camPos || camera.position,\n\t\t\tthis.goal.target,\n\t\t\tthis.goal.camUp,\n\t\t);\n\t\tthis.goal.camRot = new THREE.Quaternion().setFromRotationMatrix(mCamRot);\n\n\t\tthis.animationState = AnimationState.START;\n\t\tthis.t = 0;\n\n\t\treturn this;\n\t}\n\n\tfit() {\n\t\tconst [camera, controls, { margin }] = [\n\t\t\tthis.store.snapshot.camera,\n\t\t\tthis.store.snapshot.controls as unknown as ControlsProto,\n\t\t\tuntracked(this.options),\n\t\t];\n\n\t\tif (!is.orthographicCamera(camera)) {\n\t\t\t// For non-orthographic cameras, fit should behave exactly like reset\n\t\t\treturn this.reset();\n\t\t}\n\n\t\t// For orthographic cameras, fit should only modify the zoom value\n\t\tlet maxHeight = 0;\n\t\tlet maxWidth = 0;\n\t\tconst vertices = [\n\t\t\tnew THREE.Vector3(this.box.min.x, this.box.min.y, this.box.min.z),\n\t\t\tnew THREE.Vector3(this.box.min.x, this.box.max.y, this.box.min.z),\n\t\t\tnew THREE.Vector3(this.box.min.x, this.box.min.y, this.box.max.z),\n\t\t\tnew THREE.Vector3(this.box.min.x, this.box.max.y, this.box.max.z),\n\t\t\tnew THREE.Vector3(this.box.max.x, this.box.max.y, this.box.max.z),\n\t\t\tnew THREE.Vector3(this.box.max.x, this.box.max.y, this.box.min.z),\n\t\t\tnew THREE.Vector3(this.box.max.x, this.box.min.y, this.box.max.z),\n\t\t\tnew THREE.Vector3(this.box.max.x, this.box.min.y, this.box.min.z),\n\t\t];\n\n\t\t// Transform the center and each corner to camera space\n\t\tconst pos = this.goal.camPos || camera.position;\n\t\tconst target = this.goal.target || controls.target;\n\t\tconst up = this.goal.camUp || camera.up;\n\t\tconst mCamWInv = target\n\t\t\t? new THREE.Matrix4().lookAt(pos, target, up).setPosition(pos).invert()\n\t\t\t: camera.matrixWorldInverse;\n\t\tfor (const v of vertices) {\n\t\t\tv.applyMatrix4(mCamWInv);\n\t\t\tmaxHeight = Math.max(maxHeight, Math.abs(v.y));\n\t\t\tmaxWidth = Math.max(maxWidth, Math.abs(v.x));\n\t\t}\n\t\tmaxHeight *= 2;\n\t\tmaxWidth *= 2;\n\t\tconst zoomForHeight = (camera.top - camera.bottom) / maxHeight;\n\t\tconst zoomForWidth = (camera.right - camera.left) / maxWidth;\n\n\t\tthis.goal.camZoom = Math.min(zoomForHeight, zoomForWidth) / margin;\n\n\t\tthis.animationState = AnimationState.START;\n\t\tthis.t = 0;\n\n\t\treturn this;\n\t}\n\n\tclip() {\n\t\tconst [camera, controls, invalidate] = [\n\t\t\tthis.store.snapshot.camera,\n\t\t\tthis.store.snapshot.controls as unknown as ControlsProto,\n\t\t\tthis.store.snapshot.invalidate,\n\t\t];\n\t\tconst { distance } = this.getSize();\n\n\t\tcamera.near = distance / 100;\n\t\tcamera.far = distance * 100;\n\t\tcamera.updateProjectionMatrix();\n\n\t\tif (controls) {\n\t\t\tcontrols.maxDistance = distance * 10;\n\t\t\tcontrols.update();\n\t\t}\n\n\t\tinvalidate();\n\n\t\treturn this;\n\t}\n}\n","import { Directive, effect, input, untracked } from '@angular/core';\nimport { injectBeforeRender, injectStore } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { SimplexNoise } from 'three-stdlib';\n\ninterface ControlsProto {\n\tupdate(): void;\n\ttarget: THREE.Vector3;\n\taddEventListener: (event: string, callback: (event: any) => void) => void;\n\tremoveEventListener: (event: string, callback: (event: any) => void) => void;\n}\n\nexport interface NgtsCameraShakeOptions {\n\tintensity: number;\n\tdecay?: boolean;\n\tdecayRate: number;\n\tmaxYaw: number;\n\tmaxPitch: number;\n\tmaxRoll: number;\n\tyawFrequency: number;\n\tpitchFrequency: number;\n\trollFrequency: number;\n}\n\nconst defaultOptions: NgtsCameraShakeOptions = {\n\tintensity: 1,\n\tdecayRate: 0.65,\n\tmaxYaw: 0.1,\n\tmaxPitch: 0.1,\n\tmaxRoll: 0.1,\n\tyawFrequency: 0.1,\n\tpitchFrequency: 0.1,\n\trollFrequency: 0.1,\n};\n\n@Directive({ selector: 'ngts-camera-shake' })\nexport class NgtsCameraShake {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\n\tprivate store = injectStore();\n\n\tprivate initialRotation = this.store.snapshot.camera.rotation.clone();\n\tprivate intensityOption = untracked(this.options).intensity;\n\n\tget intensity() {\n\t\treturn this.intensityOption;\n\t}\n\n\tset intensity(val: number) {\n\t\tthis.intensityOption = Math.min(1, Math.max(0, val));\n\t}\n\n\tprivate yawNoise = new SimplexNoise();\n\tprivate pitchNoise = new SimplexNoise();\n\tprivate rollNoise = new SimplexNoise();\n\n\tconstructor() {\n\t\teffect((onCleanup) => {\n\t\t\tconst defaultControls = this.store.controls() as unknown as ControlsProto;\n\t\t\tif (!defaultControls) return;\n\t\t\tconst camera = this.store.camera();\n\n\t\t\tconst callback = () => void (this.initialRotation = camera.rotation.clone());\n\t\t\tdefaultControls.addEventListener('change', callback);\n\t\t\tcallback();\n\n\t\t\tonCleanup(() => void defaultControls.removeEventListener('change', callback));\n\t\t});\n\n\t\tinjectBeforeRender(({ delta, clock }) => {\n\t\t\tconst [\n\t\t\t\t{ maxYaw, yawFrequency, maxPitch, pitchFrequency, maxRoll, rollFrequency, decay, decayRate },\n\t\t\t\tcamera,\n\t\t\t] = [this.options(), this.store.snapshot.camera];\n\t\t\tconst shake = Math.pow(this.intensity, 2);\n\t\t\tconst yaw = maxYaw * shake * this.yawNoise.noise(clock.elapsedTime * yawFrequency, 1);\n\t\t\tconst pitch = maxPitch * shake * this.pitchNoise.noise(clock.elapsedTime * pitchFrequency, 1);\n\t\t\tconst roll = maxRoll * shake * this.rollNoise.noise(clock.elapsedTime * rollFrequency, 1);\n\n\t\t\tcamera.rotation.set(\n\t\t\t\tthis.initialRotation.x + pitch,\n\t\t\t\tthis.initialRotation.y + yaw,\n\t\t\t\tthis.initialRotation.z + roll,\n\t\t\t);\n\n\t\t\tif (decay && this.intensity > 0) {\n\t\t\t\tthis.intensity -= decayRate * delta;\n\t\t\t}\n\t\t});\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { extend, getInstanceState, injectBeforeRender, NgtThreeElements, omit, pick, resolveRef } from 'angular-three';\nimport { injectHelper, NgtsEdges } from 'angular-three-soba/abstractions';\nimport { injectFBO } from 'angular-three-soba/misc';\nimport { CausticsProjectionMaterial, createCausticsUpdate } from 'angular-three-soba/vanilla-exports';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { Group, LineBasicMaterial, Mesh, OrthographicCamera, PlaneGeometry, Scene } from 'three';\n\nconst NORMAL_OPTIONS = {\n\tdepth: true,\n\tminFilter: THREE.LinearFilter,\n\tmagFilter: THREE.LinearFilter,\n\ttype: THREE.UnsignedByteType,\n};\n\nconst CAUSTIC_OPTIONS = {\n\tminFilter: THREE.LinearMipmapLinearFilter,\n\tmagFilter: THREE.LinearFilter,\n\ttype: THREE.FloatType,\n\tgenerateMipmaps: true,\n};\n\nexport interface NgtsCausticsOptions extends Partial<NgtThreeElements['ngt-group']> {\n\t/** How many frames it will render, set it to Infinity for runtime, default: 1 */\n\tframes: number;\n\t/** Enables visual cues to help you stage your scene, default: false */\n\tdebug: boolean;\n\t/** Will display caustics only and skip the models, default: false */\n\tcausticsOnly: boolean;\n\t/** Will include back faces and enable the backsideIOR prop, default: false */\n\tbackside: boolean;\n\t/** The IOR refraction index, default: 1.1 */\n\tior: number;\n\t/** The IOR refraction index for back faces (only available when backside is enabled), default: 1.1 */\n\tbacksideIOR: number;\n\t/** The texel size, default: 0.3125 */\n\tworldRadius: number;\n\t/** Intensity of the prjected caustics, default: 0.05 */\n\tintensity: number;\n\t/** Caustics color, default: white */\n\tcolor: THREE.ColorRepresentation;\n\t/** Buffer resolution, default: 2048 */\n\tresolution: number;\n\t/** Camera position, it will point towards the contents bounds center, default: [5, 5, 5] */\n\tlightSource:\n\t\t| [x: number, y: number, z: number]\n\t\t| ElementRef<THREE.Object3D | NgtThreeElements['ngt-object3D']>\n\t\t| THREE.Object3D\n\t\t| NgtThreeElements['ngt-object3D'];\n}\n\nconst defaultOptions: NgtsCausticsOptions = {\n\tframes: 1,\n\tdebug: false,\n\tcausticsOnly: false,\n\tbackside: false,\n\tior: 1.1,\n\tbacksideIOR: 1.1,\n\tworldRadius: 0.3125,\n\tintensity: 0.05,\n\tcolor: 'white',\n\tresolution: 2024,\n\tlightSource: [5, 5, 5],\n};\n\n@Component({\n\tselector: 'ngts-caustics',\n\ttemplate: `\n\t\t<ngt-group #group [parameters]=\"parameters()\">\n\t\t\t<ngt-scene #scene>\n\t\t\t\t<ngt-orthographic-camera #camera [up]=\"[0, 1, 0]\" />\n\t\t\t\t<ng-content />\n\t\t\t</ngt-scene>\n\n\t\t\t<ngt-mesh #plane [renderOrder]=\"2\" [rotation]=\"[-Math.PI / 2, 0, 0]\">\n\t\t\t\t<ngt-plane-geometry />\n\t\t\t\t<ngt-caustics-projection-material\n\t\t\t\t\ttransparent\n\t\t\t\t\t[color]=\"color()\"\n\t\t\t\t\t[causticsTexture]=\"causticsTarget.texture\"\n\t\t\t\t\t[causticsTextureB]=\"causticsTargetB.texture\"\n\t\t\t\t\t[blending]=\"CustomBlending\"\n\t\t\t\t\t[blendSrc]=\"OneFactor\"\n\t\t\t\t\t[blendDst]=\"SrcAlphaFactor\"\n\t\t\t\t\t[depthWrite]=\"false\"\n\t\t\t\t/>\n\n\t\t\t\t@if (debug()) {\n\t\t\t\t\t<ngts-edges>\n\t\t\t\t\t\t<ngt-line-basic-material color=\"#ffff00\" [toneMapped]=\"false\" />\n\t\t\t\t\t</ngts-edges>\n\t\t\t\t}\n\t\t\t</ngt-mesh>\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtsEdges],\n})\nexport class NgtsCaustics {\n\tprotected readonly Math = Math;\n\tprotected readonly CustomBlending = THREE.CustomBlending;\n\tprotected readonly OneFactor = THREE.OneFactor;\n\tprotected readonly SrcAlphaFactor = THREE.SrcAlphaFactor;\n\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, [\n\t\t'frames',\n\t\t'debug',\n\t\t'causticsOnly',\n\t\t'backside',\n\t\t'ior',\n\t\t'backsideIOR',\n\t\t'worldRadius',\n\t\t'intensity',\n\t\t'color',\n\t\t'resolution',\n\t\t'lightSource',\n\t]);\n\n\tprotected debug = pick(this.options, 'debug');\n\tprotected color = pick(this.options, 'color');\n\tprivate resolution = pick(this.options, 'resolution');\n\n\tgroupRef = viewChild.required<ElementRef<THREE.Group>>('group');\n\tprivate sceneRef = viewChild.required<ElementRef<THREE.Scene>>('scene');\n\tprivate cameraRef = viewChild.required<ElementRef<THREE.OrthographicCamera>>('camera');\n\tprivate planeRef =\n\t\tviewChild.required<\n\t\t\tElementRef<THREE.Mesh<THREE.PlaneGeometry, InstanceType<typeof CausticsProjectionMaterial>>>\n\t\t>('plane');\n\n\tprivate normalTargetParams = computed(() => ({\n\t\twidth: this.resolution(),\n\t\theight: this.resolution(),\n\t\tsettings: NORMAL_OPTIONS,\n\t}));\n\n\t// Buffers for front and back faces\n\tprivate normalTarget = injectFBO(this.normalTargetParams);\n\tprivate normalTargetB = injectFBO(this.normalTargetParams);\n\n\tprivate causticsTargetParams = computed(() => ({\n\t\twidth: this.resolution(),\n\t\theight: this.resolution(),\n\t\tsettings: CAUSTIC_OPTIONS,\n\t}));\n\tprotected causticsTarget = injectFBO(this.causticsTargetParams);\n\tprotected causticsTargetB = injectFBO(this.causticsTargetParams);\n\n\tprivate cameraHelper = injectHelper(\n\t\t() => (this.debug() ? this.cameraRef().nativeElement : null),\n\t\t() => THREE.CameraHelper,\n\t);\n\n\tconstructor() {\n\t\textend({\n\t\t\tCausticsProjectionMaterial,\n\t\t\tGroup,\n\t\t\tScene,\n\t\t\tMesh,\n\t\t\tPlaneGeometry,\n\t\t\tLineBasicMaterial,\n\t\t\tOrthographicCamera,\n\t\t});\n\n\t\teffect(() => {\n\t\t\t// track all changes\n\t\t\tconst [group, scene, plane] = [\n\t\t\t\tthis.groupRef().nativeElement,\n\t\t\t\tthis.sceneRef().nativeElement,\n\t\t\t\tthis.planeRef().nativeElement,\n\t\t\t\tthis.options(),\n\t\t\t];\n\t\t\tconst groupInstanceState = getInstanceState(group);\n\t\t\tconst sceneInstanceState = getInstanceState(scene);\n\t\t\tconst planeInstanceState = getInstanceState(plane);\n\n\t\t\tif (!groupInstanceState || !sceneInstanceState || !planeInstanceState) return;\n\n\t\t\tgroupInstanceState.objects();\n\t\t\tsceneInstanceState.objects();\n\t\t\tplaneInstanceState.objects();\n\t\t\tplaneInstanceState.nonObjects();\n\n\t\t\tgroup.updateWorldMatrix(false, true);\n\t\t});\n\n\t\tconst update = createCausticsUpdate(() => {\n\t\t\tconst { lightSource, ...rest } = this.options();\n\n\t\t\treturn {\n\t\t\t\tparams: Object.assign(rest, {\n\t\t\t\t\tlightSource: Array.isArray(lightSource)\n\t\t\t\t\t\t? new THREE.Vector3(...lightSource)\n\t\t\t\t\t\t: (resolveRef(lightSource) as THREE.Object3D),\n\t\t\t\t}),\n\t\t\t\tnormalTarget: this.normalTarget,\n\t\t\t\tnormalTargetB: this.normalTargetB,\n\t\t\t\tcausticsTarget: this.causticsTarget,\n\t\t\t\tcausticsTargetB: this.causticsTargetB,\n\t\t\t\tcamera: this.cameraRef().nativeElement,\n\t\t\t\tscene: this.sceneRef().nativeElement,\n\t\t\t\tgroup: this.groupRef().nativeElement,\n\t\t\t\tplane: this.planeRef().nativeElement,\n\t\t\t\thelper: this.cameraHelper(),\n\t\t\t};\n\t\t});\n\n\t\tinjectBeforeRender(({ gl }) => update(gl));\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinput,\n\toutput,\n\tviewChild,\n} from '@angular/core';\nimport { extend, getInstanceState, NgtThreeElements, omit, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { Group } from 'three';\n\nexport interface NgtsCenterState {\n\t/** The next parent above <Center> */\n\tparent: THREE.Object3D;\n\t/** The outmost container group of the <Center> component */\n\tcontainer: THREE.Object3D;\n\twidth: number;\n\theight: number;\n\tdepth: number;\n\tboundingBox: THREE.Box3;\n\tboundingSphere: THREE.Sphere;\n\tcenter: THREE.Vector3;\n\tverticalAlignment: number;\n\thorizontalAlignment: number;\n\tdepthAlignment: number;\n}\n\nexport interface NgtsCenterOptions {\n\ttop?: boolean;\n\tright?: boolean;\n\tbottom?: boolean;\n\tleft?: boolean;\n\tfront?: boolean;\n\tback?: boolean;\n\t/** Disable all axes */\n\tdisable?: boolean;\n\t/** Disable x-axis centering */\n\tdisableX?: boolean;\n\t/** Disable y-axis centering */\n\tdisableY?: boolean;\n\t/** Disable z-axis centering */\n\tdisableZ?: boolean;\n\t/** See https://threejs.org/docs/index.html?q=box3#api/en/math/Box3.setFromObject */\n\tprecise: boolean;\n\t/** Optional cacheKey to keep the component from recalculating on every render */\n\tcacheKey: any;\n}\n\nconst defaultOptions: Partial<NgtThreeElements['ngt-group']> & NgtsCenterOptions = {\n\tprecise: true,\n\tcacheKey: 0,\n};\n\n@Component({\n\tselector: 'ngts-center',\n\ttemplate: `\n\t\t<ngt-group #group [parameters]=\"parameters()\">\n\t\t\t<ngt-group #outer>\n\t\t\t\t<ngt-group #inner>\n\t\t\t\t\t<ng-content />\n\t\t\t\t</ngt-group>\n\t\t\t</ngt-group>\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsCenter {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, [\n\t\t'top',\n\t\t'right',\n\t\t'bottom',\n\t\t'left',\n\t\t'front',\n\t\t'back',\n\t\t'disable',\n\t\t'disableX',\n\t\t'disableY',\n\t\t'disableZ',\n\t\t'precise',\n\t\t'cacheKey',\n\t]);\n\n\tcentered = output<NgtsCenterState>();\n\n\tgroupRef = viewChild.required<ElementRef<THREE.Group>>('group');\n\tprivate outerRef = viewChild.required<ElementRef<THREE.Group>>('outer');\n\tprivate innerRef = viewChild.required<ElementRef<THREE.Group>>('inner');\n\n\tcenterOptions = pick(this.options, [\n\t\t'top',\n\t\t'right',\n\t\t'bottom',\n\t\t'left',\n\t\t'front',\n\t\t'back',\n\t\t'disable',\n\t\t'disableX',\n\t\t'disableY',\n\t\t'disableZ',\n\t\t'precise',\n\t\t'cacheKey',\n\t]);\n\n\tconstructor() {\n\t\textend({ Group });\n\n\t\teffect(() => {\n\t\t\tconst inner = this.innerRef().nativeElement;\n\t\t\tconst innerInstanceState = getInstanceState(inner);\n\t\t\tif (!innerInstanceState) return;\n\n\t\t\tconst children = [...innerInstanceState.objects(), ...innerInstanceState.nonObjects()];\n\t\t\tif (!children?.length) return;\n\n\t\t\tconst [\n\t\t\t\t{ precise, top, bottom, right, left, front, back, disable, disableZ, disableY, disableX },\n\t\t\t\tgroup,\n\t\t\t\touter,\n\t\t\t] = [this.centerOptions(), this.groupRef().nativeElement, this.outerRef().nativeElement];\n\n\t\t\touter.matrixWorld.identity();\n\t\t\tconst box3 = new THREE.Box3().setFromObject(inner, precise);\n\t\t\tconst center = new THREE.Vector3();\n\t\t\tconst sphere = new THREE.Sphere();\n\n\t\t\tconst width = box3.max.x - box3.min.x;\n\t\t\tconst height = box3.max.y - box3.min.y;\n\t\t\tconst depth = box3.max.z - box3.min.z;\n\n\t\t\tbox3.getCenter(center);\n\t\t\tbox3.getBoundingSphere(sphere);\n\n\t\t\tconst vAlign = top ? height / 2 : bottom ? -height / 2 : 0;\n\t\t\tconst hAlign = left ? -width / 2 : right ? width / 2 : 0;\n\t\t\tconst dAlign = front ? depth / 2 : back ? -depth / 2 : 0;\n\n\t\t\touter.position.set(\n\t\t\t\tdisable || disableX ? 0 : -center.x + hAlign,\n\t\t\t\tdisable || disableY ? 0 : -center.y + vAlign,\n\t\t\t\tdisable || disableZ ? 0 : -center.z + dAlign,\n\t\t\t);\n\n\t\t\tthis.centered.emit({\n\t\t\t\tparent: group.parent!,\n\t\t\t\tcontainer: group,\n\t\t\t\twidth,\n\t\t\t\theight,\n\t\t\t\tdepth,\n\t\t\t\tboundingBox: box3,\n\t\t\t\tboundingSphere: sphere,\n\t\t\t\tcenter,\n\t\t\t\tverticalAlignment: vAlign,\n\t\t\t\thorizontalAlignment: hAlign,\n\t\t\t\tdepthAlignment: dAlign,\n\t\t\t});\n\t\t});\n\t}\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\tcomputed,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { NgtArgs, NgtThreeElements, extend, injectBeforeRender, injectStore, omit, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { Group, Mesh, MeshBasicMaterial, OrthographicCamera } from 'three';\nimport { HorizontalBlurShader, VerticalBlurShader } from 'three-stdlib';\n\nexport interface NgtsContactShadowsOptions extends Partial<Omit<NgtThreeElements['ngt-group'], 'scale'>> {\n\topacity: number;\n\twidth: number;\n\theight: number;\n\tblur: number;\n\tnear: number;\n\tfar: number;\n\tsmooth: boolean;\n\tresolution: number;\n\tframes: number;\n\tscale: number | [x: number, y: number];\n\tcolor: THREE.ColorRepresentation;\n\tdepthWrite: boolean;\n}\n\nconst defaultOptions: NgtsContactShadowsOptions = {\n\tscale: 10,\n\tframes: Infinity,\n\topacity: 1,\n\twidth: 1,\n\theight: 1,\n\tblur: 1,\n\tnear: 0,\n\tfar: 10,\n\tresolution: 512,\n\tsmooth: true,\n\tcolor: '#000000',\n\tdepthWrite: false,\n};\n\n@Component({\n\tselector: 'ngts-contact-shadows',\n\ttemplate: `\n\t\t<ngt-group #contactShadows [rotation]=\"[Math.PI / 2, 0, 0]\" [parameters]=\"parameters()\">\n\t\t\t<ngt-mesh\n\t\t\t\t[scale]=\"[1, -1, 1]\"\n\t\t\t\t[rotation]=\"[-Math.PI / 2, 0, 0]\"\n\t\t\t\t[renderOrder]=\"renderOrder() ?? 0\"\n\t\t\t\t[geometry]=\"planeGeometry()\"\n\t\t\t>\n\t\t\t\t<ngt-mesh-basic-material\n\t\t\t\t\ttransparent\n\t\t\t\t\t[opacity]=\"opacity()\"\n\t\t\t\t\t[depthWrite]=\"depthWrite()\"\n\t\t\t\t\t[map]=\"texture()\"\n\t\t\t\t/>\n\t\t\t</ngt-mesh>\n\t\t\t<ngt-orthographic-camera *args=\"cameraArgs()\" #shadowsCamera />\n\t\t</ngt-group>\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsContactShadows {\n\tprotected readonly Math = Math;\n\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, [\n\t\t'scale',\n\t\t'frames',\n\t\t'opacity',\n\t\t'width',\n\t\t'height',\n\t\t'blur',\n\t\t'near',\n\t\t'far',\n\t\t'resolution',\n\t\t'smooth',\n\t\t'color',\n\t\t'depthWrite',\n\t\t'renderOrder',\n\t]);\n\n\tcontactShadowsRef = viewChild.required<ElementRef<THREE.Group>>('contactShadows');\n\tprivate shadowsCameraRef = viewChild<ElementRef<THREE.OrthographicCamera>>('shadowsCamera');\n\n\tprivate store = injectStore();\n\n\tprivate width = pick(this.options, 'width');\n\tprivate height = pick(this.options, 'height');\n\tprivate scale = pick(this.options, 'scale');\n\n\tprivate scaledWidth = computed(() => {\n\t\tconst [width, scale] = [this.width(), this.scale()];\n\t\treturn width * (Array.isArray(scale) ? scale[0] : scale);\n\t});\n\n\tprivate scaledHeight = computed(() => {\n\t\tconst [height, scale] = [this.height(), this.scale()];\n\t\treturn height * (Array.isArray(scale) ? scale[1] : scale);\n\t});\n\n\tprivate resolution = pick(this.options, 'resolution');\n\tprivate color = pick(this.options, 'color');\n\tprivate near = pick(this.options, 'near');\n\tprivate far = pick(this.options, 'far');\n\tprivate smooth = pick(this.options, 'smooth');\n\tprivate frames = pick(this.options, 'frames');\n\tprivate blur = pick(this.options, 'blur');\n\n\tprivate renderTarget = computed(() => this.createRenderTarget(this.resolution()));\n\tprivate renderTargetBlur = computed(() => this.createRenderTarget(this.resolution()));\n\n\tprotected planeGeometry = computed(() =>\n\t\tnew THREE.PlaneGeometry(this.scaledWidth(), this.scaledHeight()).rotateX(Math.PI / 2),\n\t);\n\tprivate blurPlane = computed(() => new THREE.Mesh(this.planeGeometry()));\n\tprivate depthMaterial = computed(() => {\n\t\tconst color = new THREE.Color(this.color());\n\t\tconst material = new THREE.MeshDepthMaterial();\n\t\tmaterial.depthTest = material.depthWrite = false;\n\t\tmaterial.onBeforeCompile = (shader) => {\n\t\t\tshader.uniforms = { ...shader.uniforms, ucolor: { value: color } };\n\t\t\tshader.fragmentShader = shader.fragmentShader.replace(\n\t\t\t\t`void main() {`, //\n\t\t\t\t`uniform vec3 ucolor;\n void main() {\n `,\n\t\t\t);\n\t\t\tshader.fragmentShader = shader.fragmentShader.replace(\n\t\t\t\t'vec4( vec3( 1.0 - fragCoordZ ), opacity );',\n\t\t\t\t// Colorize the shadow, multiply by the falloff so that the center can remain darker\n\t\t\t\t'vec4( ucolor * fragCoordZ * 2.0, ( 1.0 - fragCoordZ ) * 1.0 );',\n\t\t\t);\n\t\t};\n\t\treturn material;\n\t});\n\n\tprivate horizontalBlurMaterial = new THREE.ShaderMaterial({ ...HorizontalBlurShader, depthTest: false });\n\tprivate verticalBlurMaterial = new THREE.ShaderMaterial({ ...VerticalBlurShader, depthTest: false });\n\n\tprotected renderOrder = pick(this.options, 'renderOrder');\n\tprotected opacity = pick(this.options, 'opacity');\n\tprotected depthWrite = pick(this.options, 'depthWrite');\n\tprotected texture = pick(this.renderTarget, 'texture');\n\tprotected cameraArgs = computed(() => {\n\t\tconst [width, height, near, far] = [this.scaledWidth(), this.scaledHeight(), this.near(), this.far()];\n\t\treturn [-width / 2, width / 2, height / 2, -height / 2, near, far];\n\t});\n\n\tconstructor() {\n\t\textend({ Group, Mesh, MeshBasicMaterial, OrthographicCamera });\n\n\t\tlet count = 0;\n\t\tinjectBeforeRender(() => {\n\t\t\tconst shadowsCamera = this.shadowsCameraRef()?.nativeElement;\n\t\t\tif (!shadowsCamera) return;\n\n\t\t\tconst frames = this.frames();\n\t\t\tif (frames === Infinity || count < frames) {\n\t\t\t\tthis.renderShadows();\n\t\t\t\tcount++;\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate renderShadows() {\n\t\tconst shadowsCamera = this.shadowsCameraRef()?.nativeElement;\n\t\tif (!shadowsCamera) return;\n\n\t\tconst [blur, smooth, gl, scene, contactShadows, depthMaterial, renderTarget] = [\n\t\t\tthis.blur(),\n\t\t\tthis.smooth(),\n\t\t\tthis.store.snapshot.gl,\n\t\t\tthis.store.snapshot.scene,\n\t\t\tthis.contactShadowsRef().nativeElement,\n\t\t\tthis.depthMaterial(),\n\t\t\tthis.renderTarget(),\n\t\t];\n\n\t\tconst initialBackground = scene.background;\n\t\tconst initialOverrideMaterial = scene.overrideMaterial;\n\t\tconst initialClearAlpha = gl.getClearAlpha();\n\n\t\tcontactShadows.visible = false;\n\t\tscene.background = null;\n\t\tscene.overrideMaterial = depthMaterial;\n\t\tgl.setClearAlpha(0);\n\n\t\t// render to the render target to get the depths\n\t\tgl.setRenderTarget(renderTarget);\n\t\tgl.render(scene, shadowsCamera);\n\n\t\tthis.blurShadows(blur);\n\t\tif (smooth) this.blurShadows(blur * 0.4);\n\n\t\t// reset\n\t\tgl.setRenderTarget(null);\n\n\t\tcontactShadows.visible = true;\n\t\tscene.overrideMaterial = initialOverrideMaterial;\n\t\tscene.background = initialBackground;\n\t\tgl.setClearAlpha(initialClearAlpha);\n\t}\n\n\tprivate blurShadows(blur: number) {\n\t\tconst shadowsCamera = this.shadowsCameraRef()?.nativeElement;\n\t\tif (!shadowsCamera) return;\n\n\t\tconst [blurPlane, horizontalBlurMaterial, verticalBlurMaterial, renderTargetBlur, renderTarget, gl] = [\n\t\t\tthis.blurPlane(),\n\t\t\tthis.horizontalBlurMaterial,\n\t\t\tthis.verticalBlurMaterial,\n\t\t\tthis.renderTargetBlur(),\n\t\t\tthis.renderTarget(),\n\t\t\tthis.store.snapshot.gl,\n\t\t];\n\n\t\tblurPlane.visible = true;\n\t\tblurPlane.material = horizontalBlurMaterial;\n\t\thorizontalBlurMaterial.uniforms['tDiffuse'].value = renderTarget.texture;\n\t\thorizontalBlurMaterial.uniforms['h'].value = blur / 256;\n\t\tgl.setRenderTarget(renderTargetBlur);\n\t\tgl.render(blurPlane, shadowsCamera);\n\n\t\tblurPlane.material = verticalBlurMaterial;\n\t\tverticalBlurMaterial.uniforms['tDiffuse'].value = renderTargetBlur.texture;\n\t\tverticalBlurMaterial.uniforms['v'].value = blur / 256;\n\t\tgl.setRenderTarget(renderTarget);\n\t\tgl.render(blurPlane, shadowsCamera);\n\t\tblurPlane.visible = false;\n\t}\n\n\tprivate createRenderTarget(resolution: number) {\n\t\tconst renderTarget = new THREE.WebGLRenderTarget(resolution, resolution);\n\t\trenderTarget.texture.generateMipmaps = false;\n\t\treturn renderTarget;\n\t}\n}\n","import { computed, effect, Injector, signal, untracked } from '@angular/core';\nimport { GainMapLoader, HDRJPGLoader } from '@monogrid/gainmap-js';\nimport { injectLoader, injectStore, is, pick } from 'angular-three';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport * as THREE from 'three';\nimport { EXRLoader, RGBELoader } from 'three-stdlib';\n\nexport const ENVIRONMENT_PRESETS = {\n\tapartment: 'lebombo_1k.hdr',\n\tcity: 'potsdamer_platz_1k.hdr',\n\tdawn: 'kiara_1_dawn_1k.hdr',\n\tforest: 'forest_slope_1k.hdr',\n\tlobby: 'st_fagans_interior_1k.hdr',\n\tnight: 'dikhololo_night_1k.hdr',\n\tpark: 'rooitou_park_1k.hdr',\n\tstudio: 'studio_small_03_1k.hdr',\n\tsunset: 'venice_sunset_1k.hdr',\n\twarehouse: 'empty_warehouse_01_1k.hdr',\n};\n\nexport type NgtsEnvironmentPresets = keyof typeof ENVIRONMENT_PRESETS;\n\nconst CUBEMAP_ROOT = 'https://raw.githack.com/pmndrs/drei-assets/456060a26bbeb8fdf79326f224b6d99b8bcce736/hdri/';\n\nexport interface NgtsInjectEnvironmentOptions {\n\tfiles: string | string[];\n\tpath: string;\n\tpreset?: NgtsEnvironmentPresets;\n\textensions?: (loader: THREE.Loader) => void;\n\tcolorSpace?: THREE.ColorSpace;\n}\n\nconst defaultFiles = ['/px.png', '/nx.png', '/py.png', '/ny.png', '/pz.png', '/nz.png'];\n\nexport function injectEnvironment(\n\toptions: () => Partial<NgtsInjectEnvironmentOptions> = () => ({}),\n\t{ injector }: { injector?: Injector } = {},\n) {\n\treturn assertInjector(injectEnvironment, injector, () => {\n\t\tconst adjustedOptions = computed(() => {\n\t\t\tconst { preset, extensions, colorSpace, ...rest } = options();\n\t\t\tlet { files, path } = rest;\n\n\t\t\tif (files == null) {\n\t\t\t\tfiles = defaultFiles;\n\t\t\t}\n\n\t\t\tif (path == null) {\n\t\t\t\tpath = '';\n\t\t\t}\n\n\t\t\tif (preset) {\n\t\t\t\tvalidatePreset(preset);\n\t\t\t\tfiles = ENVIRONMENT_PRESETS[preset];\n\t\t\t\tpath = CUBEMAP_ROOT;\n\t\t\t}\n\n\t\t\treturn { files, preset, colorSpace, path, extensions };\n\t\t});\n\n\t\tconst files = pick(adjustedOptions, 'files');\n\t\tconst multiFile = computed(() => Array.isArray(files()));\n\t\tconst resultOptions = computed(() => getExtension(files()));\n\t\tconst extension = pick(resultOptions, 'extension');\n\t\tconst loader = computed(() => getLoader(extension()));\n\n\t\tconst store = injectStore();\n\n\t\tconst texture = signal<THREE.Texture | THREE.CubeTexture | null>(null);\n\n\t\teffect(() => {\n\t\t\tconst [_extension, _multiFile, _files] = [untracked(extension), untracked(multiFile), files()];\n\n\t\t\tif (_extension !== 'webp' && _extension !== 'jpg' && _extension !== 'jpeg') return;\n\n\t\t\tstore.gl().domElement.addEventListener(\n\t\t\t\t'webglcontextlost',\n\t\t\t\t() => {\n\t\t\t\t\t// @ts-expect-error - files is correctly passed\n\t\t\t\t\tinjectLoader.clear(multiFile ? [_files] : _files);\n\t\t\t\t},\n\t\t\t\t{ once: true },\n\t\t\t);\n\t\t});\n\n\t\tconst result = injectLoader(\n\t\t\tloader,\n\t\t\t// @ts-expect-error - ensure the files is an array\n\t\t\t() => {\n\t\t\t\tconst { files } = adjustedOptions();\n\t\t\t\treturn Array.isArray(files) ? [files] : files;\n\t\t\t},\n\t\t\t{\n\t\t\t\textensions: (loader) => {\n\t\t\t\t\tconst { extensions, path } = adjustedOptions();\n\t\t\t\t\tconst { extension } = resultOptions();\n\t\t\t\t\tif (extension === 'webp' || extension === 'jpg' || extension === 'jpeg') {\n\t\t\t\t\t\t// @ts-expect-error - Gainmap requires a renderer\n\t\t\t\t\t\tloader.setRenderer(store.gl());\n\t\t\t\t\t}\n\n\t\t\t\t\tloader.setPath?.(path);\n\t\t\t\t\tif (extensions) extensions(loader);\n\t\t\t\t},\n\t\t\t},\n\t\t);\n\n\t\teffect(() => {\n\t\t\tconst loaderResult = result();\n\t\t\tif (!loaderResult) return;\n\n\t\t\tconst { extension, isCubeMap } = untracked(resultOptions);\n\t\t\tconst _multiFile = untracked(multiFile);\n\t\t\tconst { colorSpace } = untracked(adjustedOptions);\n\n\t\t\t// @ts-expect-error - ensure textureResult is a Texture or CubeTexture\n\t\t\tlet textureResult = (_multiFile ? loaderResult[0] : loaderResult) as Texture | CubeTexture;\n\n\t\t\t// NOTE: racing condition, we can skip this\n\t\t\t// we just said above that if multiFile is false, it is a single Texture\n\t\t\tif (\n\t\t\t\t!_multiFile &&\n\t\t\t\tArray.isArray(textureResult) &&\n\t\t\t\tis.three<THREE.CubeTexture>(textureResult[0], 'isCubeTexture')\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t!is.three<THREE.CubeTexture>(textureResult, 'isCubeTexture') &&\n\t\t\t\t(extension === 'jpg' || extension === 'jpeg' || extension === 'webp')\n\t\t\t) {\n\t\t\t\ttextureResult = (textureResult as any).renderTarget?.texture;\n\t\t\t}\n\n\t\t\ttextureResult.mapping = isCubeMap ? THREE.CubeReflectionMapping : THREE.EquirectangularReflectionMapping;\n\t\t\ttextureResult.colorSpace = colorSpace ?? (isCubeMap ? 'srgb' : 'srgb-linear');\n\n\t\t\ttexture.set(textureResult);\n\t\t});\n\n\t\treturn texture.asReadonly();\n\t});\n}\n\ninjectEnvironment.preload = (options: () => Partial<NgtsInjectEnvironmentOptions> = () => ({})) => {\n\tconst _options = options();\n\tlet { files, path } = _options;\n\tconst { preset, extensions } = _options;\n\n\tif (files == null) {\n\t\tfiles = defaultFiles;\n\t}\n\n\tif (path == null) {\n\t\tpath = '';\n\t}\n\n\tif (preset) {\n\t\tvalidatePreset(preset);\n\t\tfiles = ENVIRONMENT_PRESETS[preset];\n\t\tpath = CUBEMAP_ROOT;\n\t}\n\n\tconst { extension } = getExtension(files);\n\n\tif (extension === 'webp' || extension === 'jpg' || extension === 'jpeg') {\n\t\tthrow new Error('injectEnvironment: Preloading gainmaps is not supported');\n\t}\n\n\tconst loader = getLoader(extension);\n\tif (!loader) throw new Error('injectEnvironment: Unrecognized file extension: ' + files);\n\n\tinjectLoader.preload(\n\t\t() => loader,\n\t\t// @ts-expect-error - files is correctly passed\n\t\t() => (Array.isArray(files) ? [files] : files),\n\t\t(loader) => {\n\t\t\tloader.setPath?.(path);\n\t\t\tif (extensions) extensions(loader);\n\t\t},\n\t);\n};\n\ninjectEnvironment.clear = (clearOptions: { files?: string | string[]; preset?: NgtsEnvironmentPresets }) => {\n\tconst options = { files: defaultFiles, ...clearOptions };\n\tlet { files } = options;\n\tconst preset = options.preset;\n\n\tif (preset) {\n\t\tvalidatePreset(preset);\n\t\tfiles = ENVIRONMENT_PRESETS[preset];\n\t}\n\n\tinjectLoader.clear(files);\n};\n\nfunction validatePreset(preset: string) {\n\tif (!(preset in ENVIRONMENT_PRESETS))\n\t\tthrow new Error('Preset must be one of: ' + Object.keys(ENVIRONMENT_PRESETS).join(', '));\n}\n\nfunction getExtension(files: string | string[]) {\n\tconst isCubeMap = Array.isArray(files) && files.length === 6;\n\tconst isGainmap = Array.isArray(files) && files.length === 3 && files.some((file) => file.endsWith('json'));\n\tconst firstEntry = Array.isArray(files) ? files[0] : files;\n\n\t// Everything else\n\tconst extension: string | false | undefined = isCubeMap\n\t\t? 'cube'\n\t\t: isGainmap\n\t\t\t? 'webp'\n\t\t\t: firstEntry.startsWith('data:application/exr')\n\t\t\t\t? 'exr'\n\t\t\t\t: firstEntry.startsWith('data:application/hdr')\n\t\t\t\t\t? 'hdr'\n\t\t\t\t\t: firstEntry.startsWith('data:image/jpeg')\n\t\t\t\t\t\t? 'jpg'\n\t\t\t\t\t\t: firstEntry.split('.').pop()?.split('?')?.shift()?.toLowerCase();\n\n\treturn { extension, isCubeMap, isGainmap };\n}\n\nfunction getLoader(extension: string | undefined) {\n\tconst loader =\n\t\textension === 'cube'\n\t\t\t? THREE.CubeTextureLoader\n\t\t\t: extension === 'hdr'\n\t\t\t\t? RGBELoader\n\t\t\t\t: extension === 'exr'\n\t\t\t\t\t? EXRLoader\n\t\t\t\t\t: extension === 'jpg' || extension === 'jpeg'\n\t\t\t\t\t\t? (HDRJPGLoader as unknown as typeof THREE.Loader)\n\t\t\t\t\t\t: extension === 'webp'\n\t\t\t\t\t\t\t? (GainMapLoader as unknown as typeof THREE.Loader)\n\t\t\t\t\t\t\t: null;\n\n\tif (!loader) {\n\t\tthrow new Error('injectEnvironment: Unrecognized file extension: ' + extension);\n\t}\n\n\treturn loader as typeof THREE.Loader;\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tcontentChild,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tDestroyRef,\n\tDirective,\n\teffect,\n\tEffectRef,\n\tElementRef,\n\tinject,\n\tInjector,\n\tinput,\n\toutput,\n\tTemplateRef,\n\tviewChild,\n} from '@angular/core';\nimport {\n\tapplyProps,\n\textend,\n\tinjectBeforeRender,\n\tinjectStore,\n\tis,\n\tNgtArgs,\n\tNgtEuler,\n\tNgtPortal,\n\tpick,\n} from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { CubeCamera } from 'three';\nimport { GroundProjectedEnv } from 'three-stdlib';\nimport { injectEnvironment, NgtsEnvironmentPresets, NgtsInjectEnvironmentOptions } from './inject-environment';\n\nfunction resolveScene(scene: THREE.Scene | ElementRef<THREE.Scene>) {\n\treturn is.ref(scene) ? scene.nativeElement : scene;\n}\n\nfunction setEnvProps(\n\tbackground: boolean | 'only',\n\tscene: THREE.Scene | ElementRef<THREE.Scene> | undefined,\n\tdefaultScene: THREE.Scene,\n\ttexture: THREE.Texture,\n\tsceneProps: Partial<NgtsEnvironmentOptions> = {},\n) {\n\tsceneProps.backgroundBlurriness ??= sceneProps.blur ?? 0;\n\tsceneProps.backgroundIntensity ??= 1;\n\tsceneProps.backgroundRotation ??= [0, 0, 0];\n\tsceneProps.environmentIntensity ??= 1;\n\tsceneProps.environmentRotation ??= [0, 0, 0];\n\n\tconst target = resolveScene(scene || defaultScene);\n\tconst oldbg = target.background;\n\tconst oldenv = target.environment;\n\tconst oldSceneProps = {\n\t\tbackgroundBlurriness: target.backgroundBlurriness,\n\t\tbackgroundIntensity: target.backgroundIntensity,\n\t\tbackgroundRotation: target.backgroundRotation?.clone?.() ?? [0, 0, 0],\n\t\tenvironmentIntensity: target.environmentIntensity,\n\t\tenvironmentRotation: target.environmentRotation?.clone?.() ?? [0, 0, 0],\n\t};\n\n\tif (background !== 'only') target.environment = texture;\n\tif (background) target.background = texture;\n\tapplyProps(target, sceneProps);\n\n\treturn () => {\n\t\tif (background !== 'only') target.environment = oldenv;\n\t\tif (background) target.background = oldbg;\n\t\tapplyProps(target, oldSceneProps);\n\t};\n}\n\nexport interface NgtsEnvironmentOptions extends Partial<NgtsInjectEnvironmentOptions> {\n\tframes?: number;\n\tnear?: number;\n\tfar?: number;\n\tresolution?: number;\n\tbackground?: boolean | 'only';\n\n\t/** deprecated, use backgroundBlurriness */\n\tblur?: number;\n\tbackgroundBlurriness?: number;\n\tbackgroundIntensity?: number;\n\tbackgroundRotation?: NgtEuler;\n\tenvironmentIntensity?: number;\n\tenvironmentRotation?: NgtEuler;\n\n\tmap?: THREE.Texture;\n\tpreset?: NgtsEnvironmentPresets;\n\tscene?: THREE.Scene | ElementRef<THREE.Scene>;\n\tground?: boolean | { radius?: number; height?: number; scale?: number };\n}\n\nconst defaultBackground: NgtsEnvironmentOptions = {\n\tbackground: false,\n};\n\n@Directive({ selector: 'ngts-environment-map' })\nexport class NgtsEnvironmentMap {\n\toptions = input(defaultBackground, { transform: mergeInputs(defaultBackground) });\n\tenvSet = output<void>();\n\n\tconstructor() {\n\t\tconst store = injectStore();\n\n\t\tconst _map = pick(this.options, 'map');\n\t\tconst _envConfig = computed(() => {\n\t\t\tconst {\n\t\t\t\tbackground = false,\n\t\t\t\tscene,\n\t\t\t\tblur,\n\t\t\t\tbackgroundBlurriness,\n\t\t\t\tbackgroundIntensity,\n\t\t\t\tbackgroundRotation,\n\t\t\t\tenvironmentIntensity,\n\t\t\t\tenvironmentRotation,\n\t\t\t} = this.options();\n\n\t\t\treturn {\n\t\t\t\tbackground,\n\t\t\t\tscene,\n\t\t\t\tblur,\n\t\t\t\tbackgroundBlurriness,\n\t\t\t\tbackgroundIntensity,\n\t\t\t\tbackgroundRotation,\n\t\t\t\tenvironmentIntensity,\n\t\t\t\tenvironmentRotation,\n\t\t\t};\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst map = _map();\n\t\t\tif (!map) return;\n\t\t\tconst { background = false, scene, ...config } = _envConfig();\n\t\t\tconst cleanup = setEnvProps(background, scene, store.scene(), map, config);\n\t\t\tthis.envSet.emit();\n\t\t\tonCleanup(() => cleanup());\n\t\t});\n\t}\n}\n\n@Directive({ selector: 'ngts-environment-cube' })\nexport class NgtsEnvironmentCube {\n\toptions = input(defaultBackground, { transform: mergeInputs(defaultBackground) });\n\tenvSet = output<void>();\n\n\tprivate store = injectStore();\n\n\tprivate envConfig = computed(() => {\n\t\tconst {\n\t\t\tbackground = false,\n\t\t\tscene,\n\t\t\tblur,\n\t\t\tbackgroundBlurriness,\n\t\t\tbackgroundIntensity,\n\t\t\tbackgroundRotation,\n\t\t\tenvironmentIntensity,\n\t\t\tenvironmentRotation,\n\t\t} = this.options();\n\n\t\treturn {\n\t\t\tbackground,\n\t\t\tscene,\n\t\t\tblur,\n\t\t\tbackgroundBlurriness,\n\t\t\tbackgroundIntensity,\n\t\t\tbackgroundRotation,\n\t\t\tenvironmentIntensity,\n\t\t\tenvironmentRotation,\n\t\t};\n\t});\n\n\tconstructor() {\n\t\tconst _texture = injectEnvironment(this.options);\n\n\t\teffect((onCleanup) => {\n\t\t\tconst texture = _texture();\n\t\t\tif (!texture) return;\n\n\t\t\tconst { background = false, scene, ...config } = this.envConfig();\n\t\t\tconst cleanup = setEnvProps(background, scene, this.store.scene(), texture, config);\n\t\t\tthis.envSet.emit();\n\t\t\tonCleanup(() => cleanup());\n\t\t});\n\n\t\tinject(DestroyRef).onDestroy(() => {\n\t\t\t_texture()?.dispose();\n\t\t});\n\t}\n}\n\n@Component({\n\tselector: 'ngts-environment-portal',\n\ttemplate: `\n\t\t<ngt-portal [container]=\"virtualScene\">\n\t\t\t<ng-template portalContent let-injector=\"injector\">\n\t\t\t\t<ng-container\n\t\t\t\t\t[ngTemplateOutlet]=\"content()\"\n\t\t\t\t\t[ngTemplateOutletInjector]=\"injector\"\n\t\t\t\t\t[ngTemplateOutletContext]=\"{ injector, container: virtualScene }\"\n\t\t\t\t/>\n\n\t\t\t\t<ngt-cube-camera #cubeCamera *args=\"cameraArgs()\" />\n\n\t\t\t\t@if (files() || preset()) {\n\t\t\t\t\t<ngts-environment-cube [options]=\"envCubeOptions()\" (envSet)=\"onEnvSet()\" />\n\t\t\t\t} @else if (map()) {\n\t\t\t\t\t<ngts-environment-map [options]=\"envMapOptions()\" (envSet)=\"onEnvSet()\" />\n\t\t\t\t}\n\t\t\t</ng-template>\n\t\t</ngt-portal>\n\t`,\n\timports: [NgtsEnvironmentCube, NgtsEnvironmentMap, NgtArgs, NgtPortal, NgTemplateOutlet],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsEnvironmentPortal {\n\tprivate defaultOptions: NgtsEnvironmentOptions = {\n\t\tnear: 1,\n\t\tfar: 1000,\n\t\tresolution: 256,\n\t\tframes: 1,\n\t\tbackground: false,\n\t};\n\toptions = input(this.defaultOptions, { transform: mergeInputs(this.defaultOptions) });\n\tcontent = input.required<TemplateRef<unknown>>();\n\tenvSet = output<void>();\n\n\tprivate injector = inject(Injector);\n\tprivate store = injectStore();\n\n\tprivate cameraRef = viewChild<ElementRef<THREE.CubeCamera>>('cubeCamera');\n\n\tprotected map = pick(this.options, 'map');\n\tprotected files = pick(this.options, 'files');\n\tprotected preset = pick(this.options, 'preset');\n\tprivate extensions = pick(this.options, 'extensions');\n\tprivate path = pick(this.options, 'path');\n\n\tprotected envMapOptions = computed(() => ({ background: true, map: this.map(), extensions: this.extensions() }));\n\tprotected envCubeOptions = computed(() => ({\n\t\tbackground: true,\n\t\tfiles: this.files(),\n\t\tpreset: this.preset(),\n\t\textensions: this.extensions(),\n\t\tpath: this.path(),\n\t}));\n\n\tprivate near = pick(this.options, 'near');\n\tprivate far = pick(this.options, 'far');\n\tprivate resolution = pick(this.options, 'resolution');\n\tprivate fbo = computed(() => {\n\t\tconst fbo = new THREE.WebGLCubeRenderTarget(this.resolution());\n\t\tfbo.texture.type = THREE.HalfFloatType;\n\t\treturn fbo;\n\t});\n\n\tprotected cameraArgs = computed(() => [this.near(), this.far(), this.fbo()]);\n\tprotected virtualScene = new THREE.Scene();\n\n\tprivate setEnvEffectRef?: EffectRef;\n\n\tconstructor() {\n\t\textend({ CubeCamera });\n\n\t\teffect((onCleanup) => {\n\t\t\tconst [files, preset, map] = [this.files(), this.preset(), this.map()];\n\t\t\t// NOTE: when there's none of this, we don't render cube or map so we need to setEnv here\n\t\t\tif (!!files || !!preset || !!map) return;\n\t\t\tconst cleanup = this.setPortalEnv();\n\t\t\tonCleanup(() => cleanup?.());\n\t\t});\n\n\t\tlet count = 1;\n\t\tinjectBeforeRender(() => {\n\t\t\tconst frames = this.options().frames;\n\t\t\tif (frames === Infinity || (frames != null && count < frames)) {\n\t\t\t\tconst camera = this.cameraRef()?.nativeElement;\n\t\t\t\tif (camera) {\n\t\t\t\t\tcamera.update(this.store.snapshot.gl, this.virtualScene);\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tinject(DestroyRef).onDestroy(() => {\n\t\t\tif (this.setEnvEffectRef) this.setEnvEffectRef.destroy();\n\t\t});\n\t}\n\n\t// NOTE: we use onEnvSet here to ensure that EnvironmentCube or EnvironmentMap sets the env before the portal\n\tonEnvSet() {\n\t\tif (this.setEnvEffectRef) this.setEnvEffectRef.destroy();\n\t\tthis.setEnvEffectRef = effect(\n\t\t\t(onCleanup) => {\n\t\t\t\tconst cleanup = this.setPortalEnv();\n\t\t\t\tonCleanup(() => cleanup?.());\n\t\t\t},\n\t\t\t{ manualCleanup: true, injector: this.injector },\n\t\t);\n\t}\n\n\tprivate setPortalEnv() {\n\t\tconst camera = this.cameraRef();\n\t\tif (!camera?.nativeElement) return;\n\n\t\tconst [\n\t\t\t{\n\t\t\t\tframes,\n\t\t\t\tbackground = false,\n\t\t\t\tscene,\n\t\t\t\tblur,\n\t\t\t\tbackgroundBlurriness,\n\t\t\t\tbackgroundIntensity,\n\t\t\t\tbackgroundRotation,\n\t\t\t\tenvironmentIntensity,\n\t\t\t\tenvironmentRotation,\n\t\t\t},\n\t\t\tgl,\n\t\t\tfbo,\n\t\t\tdefaultScene,\n\t\t] = [this.options(), this.store.gl(), this.fbo(), this.store.scene()];\n\n\t\tif (frames === 1) camera.nativeElement.update(gl, this.virtualScene);\n\t\tconst cleanup = setEnvProps(background, scene, defaultScene, fbo.texture, {\n\t\t\tblur,\n\t\t\tbackgroundBlurriness,\n\t\t\tbackgroundIntensity,\n\t\t\tbackgroundRotation,\n\t\t\tenvironmentIntensity,\n\t\t\tenvironmentRotation,\n\t\t});\n\t\tthis.envSet.emit();\n\t\treturn cleanup;\n\t}\n}\n\n@Component({\n\tselector: 'ngts-environment-ground',\n\ttemplate: `\n\t\t<ngts-environment-map [options]=\"envMapOptions()\" (envSet)=\"envSet.emit()\" />\n\t\t<ngt-ground-projected-env *args=\"args()\" [scale]=\"scale()\" [height]=\"height()\" [radius]=\"radius()\" />\n\t`,\n\timports: [NgtsEnvironmentMap, NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsEnvironmentGround {\n\toptions = input({} as NgtsEnvironmentOptions);\n\tenvSet = output<void>();\n\n\tprivate defaultTexture = injectEnvironment(this.options);\n\n\tprotected height = computed(() => (this.options().ground as any)?.height);\n\tprotected radius = computed(() => (this.options().ground as any)?.radius);\n\tprotected scale = computed(() => (this.options().ground as any)?.scale ?? 1000);\n\tprotected args = computed(() => [this.options().map || this.defaultTexture()]);\n\tprotected envMapOptions = computed(() => {\n\t\tconst { map: _, ...options } = this.options();\n\t\tconst [map] = this.args();\n\t\treturn Object.assign(options, { map }) as NgtsEnvironmentOptions;\n\t});\n\n\tconstructor() {\n\t\textend({ GroundProjectedEnv });\n\n\t\tinject(DestroyRef).onDestroy(() => {\n\t\t\tthis.defaultTexture()?.dispose();\n\t\t});\n\t}\n}\n\n@Component({\n\tselector: 'ngts-environment',\n\ttemplate: `\n\t\t@let _options = options();\n\t\t@let _content = content();\n\n\t\t@if (_options.ground) {\n\t\t\t<ngts-environment-ground [options]=\"_options\" (envSet)=\"envSet.emit()\" />\n\t\t} @else if (_options.map) {\n\t\t\t<ngts-environment-map [options]=\"_options\" (envSet)=\"envSet.emit()\" />\n\t\t} @else if (_content) {\n\t\t\t<ngts-environment-portal [options]=\"_options\" [content]=\"_content\" (envSet)=\"envSet.emit()\" />\n\t\t} @else {\n\t\t\t<ngts-environment-cube [options]=\"_options\" (envSet)=\"envSet.emit()\" />\n\t\t}\n\t`,\n\timports: [NgtsEnvironmentCube, NgtsEnvironmentMap, NgtsEnvironmentPortal, NgtsEnvironmentGround],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsEnvironment {\n\toptions = input({} as NgtsEnvironmentOptions);\n\tcontent = contentChild(TemplateRef);\n\tenvSet = output<void>();\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tElementRef,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { extend, injectBeforeRender, NgtThreeElements, omit } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { Group } from 'three';\n\nexport interface NgtsFloatOptions extends Partial<NgtThreeElements['ngt-group']> {\n\tenabled: boolean;\n\tspeed: number;\n\trotationIntensity: number;\n\tfloatIntensity: number;\n\tfloatingRange: [number?, number?];\n\tautoInvalidate: boolean;\n}\n\nconst defaultOptions: NgtsFloatOptions = {\n\tenabled: true,\n\tspeed: 1,\n\trotationIntensity: 1,\n\tfloatIntensity: 1,\n\tfloatingRange: [-0.1, 0.1],\n\tautoInvalidate: false,\n};\n\n@Component({\n\tselector: 'ngts-float',\n\ttemplate: `\n\t\t<ngt-group [parameters]=\"parameters()\">\n\t\t\t<ngt-group #float [matrixAutoUpdate]=\"false\">\n\t\t\t\t<ng-content />\n\t\t\t</ngt-group>\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsFloat {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, [\n\t\t'enabled',\n\t\t'speed',\n\t\t'rotationIntensity',\n\t\t'floatIntensity',\n\t\t'floatingRange',\n\t\t'autoInvalidate',\n\t]);\n\n\tfloatRef = viewChild.required<ElementRef<THREE.Group>>('float');\n\n\tconstructor() {\n\t\textend({ Group });\n\n\t\tconst offset = Math.random() * 10000;\n\t\tinjectBeforeRender(({ clock, invalidate }) => {\n\t\t\tconst [{ enabled, speed, rotationIntensity, floatingRange, floatIntensity, autoInvalidate }] = [\n\t\t\t\tthis.options(),\n\t\t\t];\n\t\t\tif (!enabled || speed === 0) return;\n\n\t\t\tif (autoInvalidate) invalidate();\n\n\t\t\tconst container = this.floatRef().nativeElement;\n\n\t\t\tconst offsetTime = offset + clock.elapsedTime;\n\t\t\tcontainer.rotation.x = (Math.cos((offsetTime / 4) * speed) / 8) * rotationIntensity;\n\t\t\tcontainer.rotation.y = (Math.sin((offsetTime / 4) * speed) / 8) * rotationIntensity;\n\t\t\tcontainer.rotation.z = (Math.sin((offsetTime / 4) * speed) / 20) * rotationIntensity;\n\n\t\t\tlet yPosition = Math.sin((offsetTime / 4) * speed) / 10;\n\t\t\tyPosition = THREE.MathUtils.mapLinear(\n\t\t\t\tyPosition,\n\t\t\t\t-0.1,\n\t\t\t\t0.1,\n\t\t\t\tfloatingRange[0] ?? -0.1,\n\t\t\t\tfloatingRange[1] ?? 0.1,\n\t\t\t);\n\t\t\tcontainer.position.y = yPosition * floatIntensity;\n\t\t\tcontainer.updateMatrix();\n\t\t});\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { applyProps, extend, NgtArgs, NgtThreeElements, NgtVector3, omit, pick, vector3 } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { Mesh, MeshBasicMaterial, PlaneGeometry, RingGeometry } from 'three';\n\nexport interface NgtsLightformerOptions {\n\tmap?: THREE.Texture;\n\ttoneMapped: boolean;\n\tcolor: string;\n\tform: 'circle' | 'ring' | 'rect';\n\tscale: number | [number, number, number] | [number, number];\n\tintensity: number;\n\ttarget?: NgtVector3;\n}\n\nconst defaultOptions: Partial<Omit<NgtThreeElements['ngt-mesh'], 'scale'>> & NgtsLightformerOptions = {\n\ttoneMapped: false,\n\tcolor: 'white',\n\tform: 'rect',\n\tscale: 1,\n\tintensity: 1,\n};\n\n@Component({\n\tselector: 'ngts-lightformer',\n\ttemplate: `\n\t\t<ngt-mesh #mesh [scale]=\"fixedScale()\" [parameters]=\"parameters()\">\n\t\t\t<ng-content select=\"[data-lightformer-geometry]\">\n\t\t\t\t@switch (form()) {\n\t\t\t\t\t@case ('circle') {\n\t\t\t\t\t\t<ngt-ring-geometry *args=\"[0, 1, 64]\" />\n\t\t\t\t\t}\n\t\t\t\t\t@case ('ring') {\n\t\t\t\t\t\t<ngt-ring-geometry *args=\"[0.5, 1, 64]\" />\n\t\t\t\t\t}\n\t\t\t\t\t@case ('rect') {\n\t\t\t\t\t\t<ngt-plane-geometry />\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t</ng-content>\n\t\t\t<ng-content select=\"[data-lightformer-material]\">\n\t\t\t\t<ngt-mesh-basic-material #defaultMaterial [toneMapped]=\"toneMapped()\" [map]=\"map()\" [side]=\"side\" />\n\t\t\t</ng-content>\n\n\t\t\t<ng-content />\n\t\t</ngt-mesh>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsLightformer {\n\tprotected readonly side = THREE.DoubleSide;\n\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, ['map', 'toneMapped', 'color', 'form', 'scale', 'intensity', 'target']);\n\n\tprivate intensity = pick(this.options, 'intensity');\n\tprivate color = pick(this.options, 'color');\n\tprivate target = vector3(this.options, 'target', true);\n\tprivate scale = pick(this.options, 'scale');\n\tprotected fixedScale = computed(() => {\n\t\tconst scale = this.scale();\n\t\treturn Array.isArray(scale) && scale.length === 2 ? [scale[0], scale[1], 1] : scale;\n\t});\n\tprotected form = pick(this.options, 'form');\n\tprotected toneMapped = pick(this.options, 'toneMapped');\n\tprotected map = pick(this.options, 'map');\n\n\tmeshRef = viewChild.required<ElementRef<THREE.Mesh>>('mesh');\n\tprivate defaultMaterialRef = viewChild<ElementRef<THREE.MeshBasicMaterial>>('defaultMaterial');\n\n\tconstructor() {\n\t\textend({ Mesh, MeshBasicMaterial, RingGeometry, PlaneGeometry });\n\n\t\teffect(() => {\n\t\t\tconst material = this.defaultMaterialRef()?.nativeElement;\n\t\t\tif (!material) return;\n\n\t\t\tapplyProps(material, { color: this.color() });\n\t\t\tmaterial.color.multiplyScalar(this.intensity());\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst target = this.target();\n\t\t\tif (!target) return;\n\n\t\t\tconst mesh = this.meshRef().nativeElement;\n\t\t\tmesh.lookAt(target);\n\t\t});\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinput,\n\tnumberAttribute,\n\tviewChild,\n} from '@angular/core';\nimport { extend, NgtThreeElements, omit, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { Mesh } from 'three';\n\nexport interface NgtsMaskOptions extends Partial<NgtThreeElements['ngt-mesh']> {\n\tcolorWrite: boolean;\n\tdepthWrite: boolean;\n}\n\nconst defaultOptions: NgtsMaskOptions = {\n\tcolorWrite: false,\n\tdepthWrite: false,\n};\n\n@Component({\n\tselector: 'ngts-mask',\n\ttemplate: `\n\t\t<ngt-mesh #mesh [renderOrder]=\"-id()\" [parameters]=\"parameters()\">\n\t\t\t<ng-content />\n\t\t</ngt-mesh>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsMask {\n\tid = input(1, { transform: numberAttribute });\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\n\tprotected parameters = omit(this.options, ['colorWrite', 'depthWrite']);\n\n\tmeshRef = viewChild.required<ElementRef<THREE.Mesh<THREE.BufferGeometry, THREE.Material>>>('mesh');\n\n\tprivate colorWrite = pick(this.options, 'colorWrite');\n\tprivate depthWrite = pick(this.options, 'depthWrite');\n\tprivate spread = computed(() => {\n\t\tconst [id, colorWrite, depthWrite] = [this.id(), this.colorWrite(), this.depthWrite()];\n\t\treturn {\n\t\t\tcolorWrite,\n\t\t\tdepthWrite,\n\t\t\tstencilWrite: true,\n\t\t\tstencilRef: id,\n\t\t\tstencilFunc: THREE.AlwaysStencilFunc,\n\t\t\tstencilFail: THREE.ReplaceStencilOp,\n\t\t\tstencilZFail: THREE.ReplaceStencilOp,\n\t\t\tstencilZPass: THREE.ReplaceStencilOp,\n\t\t};\n\t});\n\n\tconstructor() {\n\t\textend({ Mesh });\n\n\t\teffect(() => {\n\t\t\tconst [mesh, spread] = [this.meshRef().nativeElement, this.spread()];\n\t\t\tObject.assign(mesh.material, spread);\n\t\t});\n\t}\n}\n\nexport function mask(id: () => number, inverse: () => boolean = () => false) {\n\treturn computed(() => {\n\t\tconst [_id, _inverse] = [id(), inverse()];\n\t\treturn {\n\t\t\tstencilWrite: true,\n\t\t\tstencilRef: _id,\n\t\t\tstencilFunc: _inverse ? THREE.NotEqualStencilFunc : THREE.EqualStencilFunc,\n\t\t\tstencilFail: THREE.KeepStencilOp,\n\t\t\tstencilZFail: THREE.KeepStencilOp,\n\t\t\tstencilZPass: THREE.KeepStencilOp,\n\t\t};\n\t});\n}\n","import {\n\tDestroyRef,\n\tDirective,\n\tEmbeddedViewRef,\n\tInjector,\n\tSignal,\n\tTemplateRef,\n\tViewContainerRef,\n\tcomputed,\n\teffect,\n\tinject,\n\tinput,\n\toutput,\n\tsignal,\n} from '@angular/core';\nimport { injectTexture } from 'angular-three-soba/loaders';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport * as THREE from 'three';\n\nfunction getFormatString(format: number) {\n\tswitch (format) {\n\t\tcase 64:\n\t\t\treturn '-64px';\n\t\tcase 128:\n\t\t\treturn '-128px';\n\t\tcase 256:\n\t\t\treturn '-256px';\n\t\tcase 512:\n\t\t\treturn '-512px';\n\t\tdefault:\n\t\t\treturn '';\n\t}\n}\n\nconst LIST_URL = 'https://cdn.jsdelivr.net/gh/pmndrs/drei-assets@master/matcaps.json';\nconst MATCAP_ROOT = 'https://rawcdn.githack.com/emmelleppi/matcaps/9b36ccaaf0a24881a39062d05566c9e92be4aa0d';\n\nexport function injectMatcapTexture(\n\tid: () => number | string = () => 0,\n\t{\n\t\tformat = () => 1024,\n\t\tonLoad,\n\t\tinjector,\n\t}: { format?: () => number; onLoad?: (texture: THREE.Texture[]) => void; injector?: Injector } = {},\n) {\n\treturn assertInjector(injectMatcapTexture, injector, () => {\n\t\tconst matcapList = signal<Record<string, string>>({});\n\n\t\tfetch(LIST_URL)\n\t\t\t.then((res) => res.json())\n\t\t\t.then((list) => {\n\t\t\t\tmatcapList.set(list);\n\t\t\t});\n\n\t\tconst DEFAULT_MATCAP = computed(() => matcapList()[0]);\n\t\tconst numTot = computed(() => Object.keys(matcapList()).length);\n\n\t\tconst fileHash = computed(() => {\n\t\t\tconst idValue = id();\n\t\t\tif (typeof idValue === 'string') {\n\t\t\t\treturn idValue;\n\t\t\t}\n\n\t\t\tif (typeof idValue === 'number') {\n\t\t\t\treturn matcapList()[idValue];\n\t\t\t}\n\n\t\t\treturn null;\n\t\t});\n\n\t\tconst fileName = computed(() => `${fileHash() || DEFAULT_MATCAP()}${getFormatString(format())}.png`);\n\t\tconst url = computed(() => `${MATCAP_ROOT}/${format()}/${fileName()}`);\n\n\t\tconst matcapTexture = injectTexture(url, { onLoad });\n\n\t\treturn { url, texture: matcapTexture, numTot };\n\t});\n}\n\nexport interface NgtsMatcapTextureOptions {\n\tid?: number | string;\n\tformat?: number;\n}\n\n@Directive({ selector: 'ng-template[matcapTexture]' })\nexport class NgtsMatcapTexture {\n\tmatcapTexture = input<NgtsMatcapTextureOptions>();\n\tmatcapTextureLoaded = output<THREE.Texture[]>();\n\n\tprivate template = inject(TemplateRef);\n\tprivate vcr = inject(ViewContainerRef);\n\n\tprivate id = computed(() => this.matcapTexture()?.id ?? 0);\n\tprivate format = computed(() => this.matcapTexture()?.format ?? 1024);\n\n\tprivate ref?: EmbeddedViewRef<{ $implicit: Signal<THREE.Texture | null> }>;\n\n\tconstructor() {\n\t\tconst { texture } = injectMatcapTexture(this.id, {\n\t\t\tformat: this.format,\n\t\t\tonLoad: this.matcapTextureLoaded.emit.bind(this.matcapTextureLoaded),\n\t\t});\n\n\t\teffect(() => {\n\t\t\tthis.ref = this.vcr.createEmbeddedView(this.template, { $implicit: texture });\n\t\t\tthis.ref.detectChanges();\n\t\t});\n\n\t\tinject(DestroyRef).onDestroy(() => {\n\t\t\tthis.ref?.destroy();\n\t\t});\n\t}\n\n\tstatic ngTemplateContextGuard(\n\t\t_: NgtsMatcapTexture,\n\t\tctx: unknown,\n\t): ctx is { $implicit: Signal<THREE.Texture | null> } {\n\t\treturn true;\n\t}\n}\n","import {\n\tDestroyRef,\n\tDirective,\n\tEmbeddedViewRef,\n\tInjector,\n\tSignal,\n\tTemplateRef,\n\tViewContainerRef,\n\tcomputed,\n\teffect,\n\tinject,\n\tinput,\n\toutput,\n\tsignal,\n} from '@angular/core';\nimport { injectTexture } from 'angular-three-soba/loaders';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport * as THREE from 'three';\n\nconst NORMAL_ROOT = 'https://rawcdn.githack.com/pmndrs/drei-assets/7a3104997e1576f83472829815b00880d88b32fb';\nconst LIST_URL = 'https://cdn.jsdelivr.net/gh/pmndrs/drei-assets@master/normals/normals.json';\n\ninterface NgtsNormalTextureSettings {\n\trepeat?: number[];\n\tanisotropy?: number;\n\toffset?: number[];\n}\n\nexport function injectNormalTexture(\n\tid: () => string | number = () => 0,\n\t{\n\t\tsettings = () => ({}),\n\t\tonLoad,\n\t\tinjector,\n\t}: { settings?: () => NgtsNormalTextureSettings; onLoad?: (texture: THREE.Texture[]) => void; injector?: Injector },\n) {\n\treturn assertInjector(injectNormalTexture, injector, () => {\n\t\tconst normalList = signal<Record<string, string>>({});\n\n\t\tfetch(LIST_URL)\n\t\t\t.then((res) => res.json())\n\t\t\t.then((list) => {\n\t\t\t\tnormalList.set(list);\n\t\t\t});\n\n\t\tconst DEFAULT_NORMAL = computed(() => normalList()[0]);\n\t\tconst numTot = computed(() => Object.keys(normalList()).length);\n\n\t\tconst fileHash = computed(() => {\n\t\t\tconst idValue = id();\n\t\t\tif (typeof idValue === 'string') {\n\t\t\t\treturn idValue;\n\t\t\t}\n\n\t\t\tif (typeof idValue === 'number') {\n\t\t\t\treturn normalList()[idValue];\n\t\t\t}\n\n\t\t\treturn null;\n\t\t});\n\n\t\tconst imageName = computed(() => fileHash() || DEFAULT_NORMAL());\n\t\tconst url = computed(() => `${NORMAL_ROOT}/normals/${imageName()}`);\n\n\t\tconst normalTexture = injectTexture(url, { onLoad });\n\n\t\teffect(() => {\n\t\t\tconst texture = normalTexture();\n\t\t\tif (!texture) return;\n\n\t\t\tconst { anisotropy = 1, repeat = [1, 1], offset = [0, 0] } = settings();\n\t\t\ttexture.wrapS = texture.wrapT = THREE.RepeatWrapping;\n\t\t\ttexture.repeat = new THREE.Vector2(repeat[0], repeat[1]);\n\t\t\ttexture.offset = new THREE.Vector2(offset[0], offset[1]);\n\t\t\ttexture.anisotropy = anisotropy;\n\t\t});\n\n\t\treturn { url, texture: normalTexture, numTot };\n\t});\n}\n\nexport interface NgtsNormalTextureOptions extends NgtsNormalTextureSettings {\n\tid?: number | string;\n}\n\n@Directive({ selector: 'ng-template[normalTexture]' })\nexport class NgtsNormalTexture {\n\tnormalTexture = input<NgtsNormalTextureOptions>();\n\tnormalTextureLoaded = output<THREE.Texture[]>();\n\n\tprivate template = inject(TemplateRef);\n\tprivate vcr = inject(ViewContainerRef);\n\n\tprivate id = computed(() => this.normalTexture()?.id ?? 0);\n\tprivate settings = computed(() => {\n\t\tconst { id: _, ...settings } = this.normalTexture() || {};\n\t\treturn settings;\n\t});\n\n\tprivate ref?: EmbeddedViewRef<{ $implicit: Signal<THREE.Texture | null> }>;\n\n\tconstructor() {\n\t\tconst { texture } = injectNormalTexture(this.id, {\n\t\t\tsettings: this.settings,\n\t\t\tonLoad: this.normalTextureLoaded.emit.bind(this.normalTextureLoaded),\n\t\t});\n\n\t\teffect(() => {\n\t\t\tthis.ref = this.vcr.createEmbeddedView(this.template, { $implicit: texture });\n\t\t\tthis.ref.detectChanges();\n\t\t});\n\n\t\tinject(DestroyRef).onDestroy(() => {\n\t\t\tthis.ref?.destroy();\n\t\t});\n\t}\n\n\tstatic ngTemplateContextGuard(\n\t\t_: NgtsNormalTexture,\n\t\tctx: unknown,\n\t): ctx is { $implicit: Signal<THREE.Texture | null> } {\n\t\treturn true;\n\t}\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\tcomputed,\n\teffect,\n\tinject,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { NgtArgs, NgtThreeElements, extend, omit, pick } from 'angular-three';\nimport { getVersion } from 'angular-three-soba/misc';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { DirectionalLight, Group, OrthographicCamera, Vector2 } from 'three';\nimport { NgtsAccumulativeShadows } from './accumulative-shadows';\n\nexport interface NgtsRandomizedLightsOptions extends Partial<NgtThreeElements['ngt-group']> {\n\t/** How many frames it will jiggle the lights, 1.\n\t * Frames is context aware, if a provider like AccumulativeShadows exists, frames will be taken from there! */\n\tframes: number;\n\t/** Light position, [0, 0, 0] */\n\tposition: [x: number, y: number, z: number];\n\t/** Radius of the jiggle, higher values make softer light, 5 */\n\tradius: number;\n\t/** Amount of lights, 8 */\n\tamount: number;\n\t/** Light intensity, 1 */\n\tintensity: number;\n\t/** Ambient occlusion, lower values mean less AO, hight more, you can mix AO and directional light, 0.5 */\n\tambient: number;\n\t/** If the lights cast shadows, this is true by default */\n\tcastShadow: boolean;\n\t/** Default shadow bias, 0 */\n\tbias: number;\n\t/** Default map size, 512 */\n\tmapSize: number;\n\t/** Default size of the shadow camera, 10 */\n\tsize: number;\n\t/** Default shadow camera near, 0.5 */\n\tnear: number;\n\t/** Default shadow camera far, 500 */\n\tfar: number;\n}\n\nconst defaultOptions: NgtsRandomizedLightsOptions = {\n\tcastShadow: true,\n\tbias: 0.001,\n\tmapSize: 512,\n\tsize: 5,\n\tnear: 0.5,\n\tfar: 500,\n\tframes: 1,\n\tposition: [0, 0, 0],\n\tradius: 1,\n\tamount: 8,\n\tintensity: getVersion() >= 155 ? Math.PI : 1,\n\tambient: 0.5,\n};\n\n@Component({\n\tselector: 'ngts-randomized-lights',\n\ttemplate: `\n\t\t<ngt-group #lights [parameters]=\"parameters()\">\n\t\t\t@for (i of count(); track $index) {\n\t\t\t\t<ngt-directional-light [castShadow]=\"castShadow()\" [intensity]=\"intensity() / amount()\">\n\t\t\t\t\t<ngt-value [rawValue]=\"bias()\" attach=\"shadow.bias\" />\n\t\t\t\t\t<ngt-vector2 *args=\"shadowMapSize()\" attach=\"shadow.mapSize\" />\n\t\t\t\t\t<ngt-orthographic-camera *args=\"cameraArgs()\" attach=\"shadow.camera\" />\n\t\t\t\t</ngt-directional-light>\n\t\t\t}\n\t\t</ngt-group>\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsRandomizedLights {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, Object.keys(defaultOptions) as Array<keyof NgtsRandomizedLightsOptions>);\n\n\tlightsRef = viewChild.required<ElementRef<THREE.Group>>('lights');\n\n\tprivate accumulativeShadows = inject(NgtsAccumulativeShadows);\n\n\tprotected castShadow = pick(this.options, 'castShadow');\n\tprotected bias = pick(this.options, 'bias');\n\tprotected intensity = pick(this.options, 'intensity');\n\tprotected amount = pick(this.options, 'amount');\n\n\tprivate mapSize = pick(this.options, 'mapSize');\n\tprotected shadowMapSize = computed(() => [this.mapSize(), this.mapSize()]);\n\n\tprivate position = pick(this.options, 'position');\n\tprivate length = computed(() => new THREE.Vector3(...this.position()).length());\n\n\tprotected count = computed(() => Array.from({ length: this.amount() }, (_, index) => index));\n\n\tprivate size = pick(this.options, 'size');\n\tprivate near = pick(this.options, 'near');\n\tprivate far = pick(this.options, 'far');\n\tprotected cameraArgs = computed(() => [\n\t\t-this.size(),\n\t\tthis.size(),\n\t\tthis.size(),\n\t\t-this.size(),\n\t\tthis.near(),\n\t\tthis.far(),\n\t]);\n\n\tconstructor() {\n\t\textend({ Group, DirectionalLight, OrthographicCamera, Vector2 });\n\n\t\teffect((onCleanup) => {\n\t\t\tconst lights = this.lightsRef().nativeElement;\n\t\t\tthis.accumulativeShadows.lightsMap.set(lights.uuid, this.update.bind(this));\n\t\t\tonCleanup(() => this.accumulativeShadows.lightsMap.delete(lights.uuid));\n\t\t});\n\t}\n\n\tupdate() {\n\t\tlet light: THREE.Object3D | undefined;\n\t\tconst lights = this.lightsRef().nativeElement;\n\t\tif (lights) {\n\t\t\tconst [{ ambient, radius, position }, length] = [this.options(), this.length()];\n\n\t\t\tfor (let i = 0; i < lights.children.length; i++) {\n\t\t\t\tlight = lights.children[i];\n\t\t\t\tif (Math.random() > ambient) {\n\t\t\t\t\tlight.position.set(\n\t\t\t\t\t\tposition[0] + THREE.MathUtils.randFloatSpread(radius),\n\t\t\t\t\t\tposition[1] + THREE.MathUtils.randFloatSpread(radius),\n\t\t\t\t\t\tposition[2] + THREE.MathUtils.randFloatSpread(radius),\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tconst lambda = Math.acos(2 * Math.random() - 1) - Math.PI / 2.0;\n\t\t\t\t\tconst phi = 2 * Math.PI * Math.random();\n\t\t\t\t\tlight.position.set(\n\t\t\t\t\t\tMath.cos(lambda) * Math.cos(phi) * length,\n\t\t\t\t\t\tMath.abs(Math.cos(lambda) * Math.sin(phi) * length),\n\t\t\t\t\t\tMath.sin(lambda) * length,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tDirective,\n\tInjector,\n\tTemplateRef,\n\tcomputed,\n\tcontentChild,\n\teffect,\n\tinput,\n} from '@angular/core';\nimport {\n\tNgtArgs,\n\tNgtAttachable,\n\tNgtComputeFunction,\n\tNgtPortal,\n\tNgtThreeElements,\n\textend,\n\tgetInstanceState,\n\tinjectStore,\n\tis,\n\tomit,\n\tpick,\n} from 'angular-three';\nimport { injectFBO } from 'angular-three-soba/misc';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { Group } from 'three';\n\nexport interface NgtsRenderTextureOptions extends Partial<Omit<NgtThreeElements['ngt-texture'], 'attach'>> {\n\t/** Optional width of the texture, defaults to viewport bounds */\n\twidth?: number;\n\t/** Optional height of the texture, defaults to viewport bounds */\n\theight?: number;\n\t/** Optional fbo samples */\n\tsamples: number;\n\t/** Optional stencil buffer, defaults to false */\n\tstencilBuffer: boolean;\n\t/** Optional depth buffer, defaults to true */\n\tdepthBuffer: boolean;\n\t/** Optional generate mipmaps, defaults to false */\n\tgenerateMipmaps: boolean;\n\t/** Optional render priority, defaults to 0 */\n\trenderPriority: number;\n\t/** Optional event priority, defaults to 0 */\n\teventPriority: number;\n\t/** Optional frame count, defaults to Infinity. If you set it to 1, it would only render a single frame, etc */\n\tframes: number;\n\t/** Optional event compute, defaults to undefined */\n\tcompute?: (event: any, state: any, previous: any) => false | undefined;\n}\n\n@Directive({ selector: '[renderTextureContainer]' })\nexport class NgtsRenderTextureContainer {\n\tfbo = input.required<THREE.WebGLRenderTarget>();\n\trenderPriority = input.required<number>();\n\tframes = input.required<number>();\n\n\tprivate store = injectStore();\n\n\tconstructor() {\n\t\teffect((onCleanup) => {\n\t\t\tconst [renderPriority, { internal }] = [this.renderPriority(), this.store()];\n\n\t\t\tlet count = 0;\n\t\t\tlet oldAutoClear: boolean;\n\t\t\tlet oldXrEnabled: boolean;\n\t\t\tlet oldRenderTarget: THREE.WebGLRenderTarget | null;\n\t\t\tlet oldIsPresenting: boolean;\n\n\t\t\tconst cleanup = internal.subscribe(\n\t\t\t\t({ gl, scene, camera }) => {\n\t\t\t\t\tconst [fbo, frames] = [this.fbo(), this.frames()];\n\t\t\t\t\t// NOTE: render the frames ^ 2\n\t\t\t\t\t// due to some race condition, we want to render double the frames here.\n\t\t\t\t\tif (frames === Infinity || count < frames * frames) {\n\t\t\t\t\t\toldAutoClear = gl.autoClear;\n\t\t\t\t\t\toldXrEnabled = gl.xr.enabled;\n\t\t\t\t\t\toldRenderTarget = gl.getRenderTarget();\n\t\t\t\t\t\toldIsPresenting = gl.xr.isPresenting;\n\t\t\t\t\t\tgl.autoClear = true;\n\t\t\t\t\t\tgl.xr.enabled = false;\n\t\t\t\t\t\tgl.xr.isPresenting = false;\n\t\t\t\t\t\tgl.setRenderTarget(fbo);\n\t\t\t\t\t\tgl.render(scene, camera);\n\t\t\t\t\t\tgl.setRenderTarget(oldRenderTarget);\n\t\t\t\t\t\tgl.autoClear = oldAutoClear;\n\t\t\t\t\t\tgl.xr.enabled = oldXrEnabled;\n\t\t\t\t\t\tgl.xr.isPresenting = oldIsPresenting;\n\t\t\t\t\t\tcount++;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\trenderPriority,\n\t\t\t\tthis.store,\n\t\t\t);\n\n\t\t\tonCleanup(() => {\n\t\t\t\tcleanup();\n\t\t\t});\n\t\t});\n\t}\n}\n\nconst defaultOptions: NgtsRenderTextureOptions = {\n\tsamples: 8,\n\trenderPriority: 0,\n\teventPriority: 0,\n\tframes: Infinity,\n\tstencilBuffer: false,\n\tdepthBuffer: true,\n\tgenerateMipmaps: false,\n};\n\n@Directive({ selector: 'ng-template[renderTextureContent]' })\nexport class NgtsRenderTextureContent {\n\tstatic ngTemplateContextGuard(\n\t\t_: NgtsRenderTextureContent,\n\t\tctx: unknown,\n\t): ctx is { container: THREE.Object3D; injector: Injector } {\n\t\treturn true;\n\t}\n}\n\nlet incrementId = 0;\n\n@Component({\n\tselector: 'ngts-render-texture',\n\ttemplate: `\n\t\t<ngt-portal [container]=\"virtualScene\" [state]=\"{ events: { compute: compute(), priority: eventPriority() } }\">\n\t\t\t<ng-template portalContent let-injector=\"injector\">\n\t\t\t\t<ng-container\n\t\t\t\t\trenderTextureContainer\n\t\t\t\t\t[fbo]=\"fbo\"\n\t\t\t\t\t[renderPriority]=\"renderPriority()\"\n\t\t\t\t\t[frames]=\"frames()\"\n\t\t\t\t\t[ngTemplateOutlet]=\"content()\"\n\t\t\t\t\t[ngTemplateOutletInjector]=\"injector\"\n\t\t\t\t\t[ngTemplateOutletContext]=\"{ container: virtualScene, injector }\"\n\t\t\t\t>\n\t\t\t\t\t<ngt-group (pointerover)=\"(undefined)\" />\n\t\t\t\t</ng-container>\n\t\t\t</ng-template>\n\t\t</ngt-portal>\n\n\t\t<ngt-primitive *args=\"[fbo.texture]\" [attach]=\"attach()\" [parameters]=\"parameters()\" />\n\t`,\n\timports: [NgtPortal, NgtsRenderTextureContainer, NgtArgs, NgTemplateOutlet],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsRenderTextureImpl {\n\tattach = input<NgtAttachable>('map');\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, [\n\t\t'samples',\n\t\t'renderPriority',\n\t\t'eventPriority',\n\t\t'frames',\n\t\t'stencilBuffer',\n\t\t'depthBuffer',\n\t\t'generateMipmaps',\n\t\t'compute',\n\t\t'width',\n\t\t'height',\n\t]);\n\n\tcontent = contentChild.required(NgtsRenderTextureContent, { read: TemplateRef });\n\n\tprivate store = injectStore();\n\n\tprivate width = pick(this.options, 'width');\n\tprivate height = pick(this.options, 'height');\n\tprivate samples = pick(this.options, 'samples');\n\tprivate stencilBuffer = pick(this.options, 'stencilBuffer');\n\tprivate depthBuffer = pick(this.options, 'depthBuffer');\n\tprivate generateMipmaps = pick(this.options, 'generateMipmaps');\n\tprivate computeFn = pick(this.options, 'compute');\n\n\tprivate fboParams = computed(() => ({\n\t\twidth: (this.width() || this.store.size.width()) * this.store.viewport.dpr(),\n\t\theight: (this.height() || this.store.size.height()) * this.store.viewport.dpr(),\n\t\tsettings: {\n\t\t\tsamples: this.samples(),\n\t\t\tdepthBuffer: this.depthBuffer(),\n\t\t\tstencilBuffer: this.stencilBuffer(),\n\t\t\tgenerateMipmaps: this.generateMipmaps(),\n\t\t},\n\t}));\n\n\tprotected renderPriority = pick(this.options, 'renderPriority');\n\tprotected frames = pick(this.options, 'frames');\n\tprotected fbo = injectFBO(this.fboParams);\n\tprotected virtualScene = (() => {\n\t\tconst scene = new THREE.Scene();\n\t\tscene.name = `ngts-render-texture-virtual-scene-${incrementId++}`;\n\t\treturn scene;\n\t})();\n\tprotected eventPriority = pick(this.options, 'eventPriority');\n\tprotected compute = computed(() => this.computeFn() || this.uvCompute);\n\n\tprivate uvCompute: NgtComputeFunction = (event, root, previous) => {\n\t\tconst fbo = this.fbo;\n\t\tif (!fbo) return;\n\t\tconst state = root.snapshot;\n\t\tconst previousState = previous?.snapshot;\n\n\t\t// Since this is only a texture it does not have an easy way to obtain the parent, which we\n\t\t// need to transform event coordinates to local coordinates. We use ngt internals to find the\n\t\t// next Object3D.\n\t\tlet parent = getInstanceState(fbo.texture)?.parent();\n\t\twhile (parent && !is.three<THREE.Object3D>(parent, 'isObject3D')) {\n\t\t\tparent = getInstanceState(parent)?.parent();\n\t\t}\n\n\t\tif (!parent) return;\n\t\t// First we call the previous state-onion-layers compute, this is what makes it possible to nest portals\n\t\tif (previousState && !previousState.raycaster.camera) {\n\t\t\tpreviousState.events.compute?.(event, previous, previous.snapshot.previousRoot);\n\t\t}\n\t\t// We run a quick check against the parent, if it isn't hit there's no need to raycast at all\n\t\tconst [intersection] = previousState?.raycaster.intersectObject(parent) || [];\n\t\tif (!intersection) return;\n\t\t// We take that hits uv coords, set up this layers raycaster, et voilà, we have raycasting on arbitrary surfaces\n\t\tconst uv = intersection.uv;\n\t\tif (!uv) return;\n\t\tstate.raycaster.setFromCamera(state.pointer.set(uv.x * 2 - 1, uv.y * 2 - 1), state.camera);\n\t};\n\n\tconstructor() {\n\t\textend({ Group });\n\t}\n}\n\nexport const NgtsRenderTexture = [NgtsRenderTextureImpl, NgtsRenderTextureContent] as const;\n","import { ChangeDetectionStrategy, Component, computed, CUSTOM_ELEMENTS_SCHEMA, input } from '@angular/core';\nimport { NgtArgs, NgtThreeElements, NgtVector3, omit, pick, vector3 } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { Sky } from 'three-stdlib';\n\nexport function calcPosFromAngles(inclination: number, azimuth: number, vector: THREE.Vector3 = new THREE.Vector3()) {\n\tconst theta = Math.PI * (inclination - 0.5);\n\tconst phi = 2 * Math.PI * (azimuth - 0.5);\n\n\tvector.x = Math.cos(phi);\n\tvector.y = Math.sin(theta);\n\tvector.z = Math.sin(phi);\n\n\treturn vector;\n}\n\nexport interface NgtsSkyOptions extends Partial<Omit<NgtThreeElements['ngt-mesh'], 'scale'>> {\n\tdistance: number;\n\tinclination: number;\n\tazimuth: number;\n\tmieCoefficient: number;\n\tmieDirectionalG: number;\n\trayleigh: number;\n\tturbidity: number;\n\tsunPosition?: NgtVector3;\n}\n\nconst defaultOptions: NgtsSkyOptions = {\n\tdistance: 1000,\n\tinclination: 0.6,\n\tazimuth: 0.1,\n\tmieCoefficient: 0.005,\n\tmieDirectionalG: 0.8,\n\trayleigh: 0.5,\n\tturbidity: 10,\n};\n\n@Component({\n\tselector: 'ngts-sky',\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[sky]\" [parameters]=\"parameters()\" [scale]=\"scale()\">\n\t\t\t<ngt-value attach=\"material.uniforms.mieCoefficient.value\" [rawValue]=\"mieCoefficient()\" />\n\t\t\t<ngt-value attach=\"material.uniforms.mieDirectionalG.value\" [rawValue]=\"mieDirectionalG()\" />\n\t\t\t<ngt-value attach=\"material.uniforms.rayleigh.value\" [rawValue]=\"rayleigh()\" />\n\t\t\t<ngt-value attach=\"material.uniforms.sunPosition.value\" [rawValue]=\"calculatedSunPosition()\" />\n\t\t\t<ngt-value attach=\"material.uniforms.turbidity.value\" [rawValue]=\"turbidity()\" />\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 NgtsSky {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, [\n\t\t'distance',\n\t\t'inclination',\n\t\t'azimuth',\n\t\t'sunPosition',\n\t\t'turbidity',\n\t\t'mieCoefficient',\n\t\t'mieDirectionalG',\n\t\t'sunPosition',\n\t]);\n\n\tprivate distance = pick(this.options, 'distance');\n\tprotected turbidity = pick(this.options, 'turbidity');\n\tprotected mieCoefficient = pick(this.options, 'mieCoefficient');\n\tprotected mieDirectionalG = pick(this.options, 'mieDirectionalG');\n\tprotected rayleigh = pick(this.options, 'rayleigh');\n\n\tprotected scale = computed(() => new THREE.Vector3().setScalar(this.distance()));\n\n\tprivate inclination = pick(this.options, 'inclination');\n\tprivate azimuth = pick(this.options, 'azimuth');\n\tprivate sunPosition = vector3(this.options, 'sunPosition', true);\n\tprotected calculatedSunPosition = computed(() => {\n\t\tconst sunPosition = this.sunPosition();\n\t\tif (sunPosition) return sunPosition;\n\t\treturn calcPosFromAngles(this.inclination(), this.azimuth());\n\t});\n\n\tprotected sky = new Sky();\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinject,\n\tInjector,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { extend, injectBeforeRender, injectStore, is, NgtArgs, NgtThreeElements, omit, pick } from 'angular-three';\nimport { NgtsHelper } from 'angular-three-soba/abstractions';\nimport { SpotLightMaterial } from 'angular-three-soba/vanilla-exports';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { Group, Mesh, MeshBasicMaterial, PlaneGeometry, RepeatWrapping, SpotLight } from 'three';\nimport { FullScreenQuad } from 'three-stdlib';\n\nexport interface NgtsSpotLightOptions extends Partial<NgtThreeElements['ngt-spot-light']> {\n\tdepthBuffer?: THREE.DepthTexture;\n\tattenuation?: number;\n\tanglePower?: number;\n\tradiusTop?: number;\n\tradiusBottom?: number;\n\topacity?: number;\n\tcolor?: THREE.ColorRepresentation;\n\tvolumetric?: boolean;\n\tdebug?: boolean;\n}\n\nexport type NgtsVolumetricMeshOptions = Omit<NgtsSpotLightOptions, 'volumetric'>;\n\nconst defaultVolumetricMeshOptions: NgtsVolumetricMeshOptions = {\n\topacity: 1,\n\tdistance: 5,\n\tangle: 0.15,\n\tattenuation: 5,\n\tanglePower: 5,\n\tcolor: 'white',\n};\n\n@Component({\n\tselector: 'ngts-volumetric-mesh',\n\ttemplate: `\n\t\t<ngt-mesh #mesh [geometry]=\"geometry()\" [raycast]=\"null\">\n\t\t\t<ngt-primitive *args=\"[material]\" attach=\"material\">\n\t\t\t\t<ngt-value attach=\"uniforms.opacity.value\" [rawValue]=\"opacity()\" />\n\t\t\t\t<ngt-value attach=\"uniforms.lightColor.value\" [rawValue]=\"color()\" />\n\t\t\t\t<ngt-value attach=\"uniforms.attenuation.value\" [rawValue]=\"attenuation()\" />\n\t\t\t\t<ngt-value attach=\"uniforms.anglePower.value\" [rawValue]=\"anglePower()\" />\n\t\t\t\t<ngt-value attach=\"uniforms.depth.value\" [rawValue]=\"depthBuffer()\" />\n\t\t\t\t<ngt-value attach=\"uniforms.cameraNear.value\" [rawValue]=\"camera.near()\" />\n\t\t\t\t<ngt-value attach=\"uniforms.cameraFar.value\" [rawValue]=\"camera.far()\" />\n\t\t\t\t<ngt-value\n\t\t\t\t\tattach=\"uniforms.resolution.value\"\n\t\t\t\t\t[rawValue]=\"depthBuffer() ? [size.width() * dpr(), size.height() * dpr()] : [0, 0]\"\n\t\t\t\t/>\n\t\t\t</ngt-primitive>\n\t\t</ngt-mesh>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsVolumetricMesh {\n\toptions = input(defaultVolumetricMeshOptions, { transform: mergeInputs(defaultVolumetricMeshOptions) });\n\n\tmeshRef = viewChild.required<ElementRef<THREE.Mesh>>('mesh');\n\n\tprivate store = injectStore();\n\tprotected size = this.store.size;\n\tprotected dpr = this.store.viewport.dpr;\n\tprotected camera = this.store.camera;\n\n\tprivate radiusTop = pick(this.options, 'radiusTop');\n\tprivate radiusBottom = pick(this.options, 'radiusBottom');\n\tprivate angle = pick(this.options, 'angle');\n\tprivate distance = pick(this.options, 'distance');\n\n\tprivate normalizedRadiusTop = computed(() => (this.radiusTop() === undefined ? 0.1 : this.radiusTop()));\n\tprivate normalizedRadiusBottom = computed(() =>\n\t\tthis.radiusBottom() === undefined ? this.angle()! * 7 : this.radiusBottom(),\n\t);\n\n\tprotected material = new SpotLightMaterial();\n\tprotected opacity = pick(this.options, 'opacity');\n\tprotected color = pick(this.options, 'color');\n\tprotected attenuation = pick(this.options, 'attenuation');\n\tprotected anglePower = pick(this.options, 'anglePower');\n\tprotected depthBuffer = pick(this.options, 'depthBuffer');\n\n\tprotected geometry = computed(() => {\n\t\tconst geometry = new THREE.CylinderGeometry(\n\t\t\tthis.normalizedRadiusTop(),\n\t\t\tthis.normalizedRadiusBottom(),\n\t\t\tthis.distance(),\n\t\t\t128,\n\t\t\t64,\n\t\t\ttrue,\n\t\t);\n\t\tgeometry.applyMatrix4(new THREE.Matrix4().makeTranslation(0, -this.distance()! / 2, 0));\n\t\tgeometry.applyMatrix4(new THREE.Matrix4().makeRotationX(-Math.PI / 2));\n\t\treturn geometry;\n\t});\n\n\tconstructor() {\n\t\textend({ Mesh });\n\n\t\tconst vec = new THREE.Vector3();\n\n\t\tinjectBeforeRender(() => {\n\t\t\tconst mesh = this.meshRef().nativeElement;\n\t\t\tconst material = this.material;\n\n\t\t\tmaterial.uniforms['spotPosition'].value.copy(mesh.getWorldPosition(vec));\n\t\t\tif (mesh.parent) {\n\t\t\t\tmesh.lookAt((mesh.parent as any).target.getWorldPosition(vec));\n\t\t\t}\n\t\t});\n\t}\n}\n\nfunction injectSpotLightCommon(\n\tspotLight: () => ElementRef<THREE.SpotLight> | null,\n\tmesh: () => ElementRef<Mesh> | null,\n\twidth: () => number,\n\theight: () => number,\n\tdistance: () => number,\n\tinjector?: Injector,\n) {\n\tassertInjector(injectSpotLightCommon, injector, () => {\n\t\tconst pos = new THREE.Vector3();\n\t\tconst dir = new THREE.Vector3();\n\n\t\teffect(() => {\n\t\t\tconst [_spotLight, _width, _height] = [spotLight()?.nativeElement, width(), height()];\n\t\t\tif (!_spotLight) return;\n\t\t\tif (is.three<THREE.SpotLight>(_spotLight, 'isSpotLight')) {\n\t\t\t\t_spotLight.shadow.mapSize.set(_width, _height);\n\t\t\t\tif (_spotLight.shadow.map) {\n\t\t\t\t\t_spotLight.shadow.map.setSize(_width, _height);\n\t\t\t\t}\n\t\t\t\t_spotLight.shadow.needsUpdate = true;\n\t\t\t} else {\n\t\t\t\tthrow new Error('NgtsSpotLightShadow must be a child of a NgtsSpotLight');\n\t\t\t}\n\t\t});\n\n\t\tinjectBeforeRender(() => {\n\t\t\tconst [_spotLight, _mesh] = [spotLight()?.nativeElement, mesh()?.nativeElement];\n\t\t\tif (!_spotLight || !_mesh) return;\n\n\t\t\tconst A = _spotLight.position;\n\t\t\tconst B = _spotLight.target.position;\n\n\t\t\tdir.copy(B).sub(A);\n\t\t\tconst len = dir.length();\n\t\t\tdir.normalize().multiplyScalar(len * distance());\n\t\t\tpos.copy(A).add(dir);\n\n\t\t\t_mesh.position.copy(pos);\n\t\t\t_mesh.lookAt(_spotLight.target.position);\n\t\t});\n\t});\n}\n\ninterface NgtsShadowMeshOptions {\n\tdistance: number;\n\talphaTest: number;\n\tscale: number;\n\twidth: number;\n\theight: number;\n\tmap?: THREE.Texture;\n}\n\nconst defaultSpotLightShadowOptions: NgtsShadowMeshOptions = {\n\tdistance: 0.4,\n\talphaTest: 0.5,\n\tscale: 1,\n\twidth: 512,\n\theight: 512,\n};\n\n@Component({\n\tselector: 'ngts-spot-light-shadow-shader',\n\ttemplate: `\n\t\t<ngt-mesh #mesh [scale]=\"scale()\" castShadow>\n\t\t\t<ngt-plane-geometry />\n\t\t\t<ngt-mesh-basic-material\n\t\t\t\ttransparent\n\t\t\t\t[side]=\"DoubleSide\"\n\t\t\t\t[alphaTest]=\"alphaTest()\"\n\t\t\t\t[alphaMap]=\"texture()\"\n\t\t\t\t[opacity]=\"debug() ? 1 : 0\"\n\t\t\t>\n\t\t\t\t<ng-content />\n\t\t\t</ngt-mesh-basic-material>\n\t\t</ngt-mesh>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsSpotLightShadowShader {\n\tprotected readonly DoubleSide = THREE.DoubleSide;\n\n\tshader = input.required<string>();\n\toptions = input(defaultSpotLightShadowOptions, { transform: mergeInputs(defaultSpotLightShadowOptions) });\n\n\tmeshRef = viewChild.required<ElementRef<Mesh>>('mesh');\n\n\tprivate spotLight = inject(NgtsSpotLight);\n\tprotected debug = this.spotLight.debug;\n\n\tprotected scale = pick(this.options, 'scale');\n\tprotected alphaTest = pick(this.options, 'alphaTest');\n\n\tprivate width = pick(this.options, 'width');\n\tprivate height = pick(this.options, 'height');\n\tprivate map = pick(this.options, 'map');\n\tprivate distance = pick(this.options, 'distance');\n\n\tprivate renderTarget = computed(() => {\n\t\treturn new THREE.WebGLRenderTarget(this.width(), this.height(), {\n\t\t\tformat: THREE.RGBAFormat,\n\t\t\tstencilBuffer: false,\n\t\t\t// depthTexture: null!\n\t\t});\n\t});\n\n\tprotected texture = computed(() => {\n\t\tconst renderTarget = this.renderTarget();\n\t\trenderTarget.texture.wrapT = renderTarget.texture.wrapS = THREE.RepeatWrapping;\n\t\treturn renderTarget.texture;\n\t});\n\n\tprivate fsQuad = computed(() => {\n\t\treturn new FullScreenQuad(\n\t\t\tnew THREE.ShaderMaterial({\n\t\t\t\tuniforms: this.uniforms,\n\t\t\t\tvertexShader: /* language=glsl glsl */ `\n varying vec2 vUv;\n\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n `,\n\t\t\t\tfragmentShader: this.shader(),\n\t\t\t}),\n\t\t);\n\t});\n\n\tprivate uniforms = {\n\t\tuShadowMap: { value: undefined as THREE.Texture | undefined },\n\t\tuTime: { value: 0 },\n\t};\n\n\tconstructor() {\n\t\textend({ Mesh, PlaneGeometry, MeshBasicMaterial });\n\n\t\tinjectSpotLightCommon(this.spotLight.spotLightRef, this.meshRef, this.width, this.height, this.distance);\n\n\t\teffect(() => {\n\t\t\tthis.uniforms.uShadowMap.value = this.map();\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst fsQuad = this.fsQuad();\n\t\t\tonCleanup(() => {\n\t\t\t\tfsQuad.material.dispose();\n\t\t\t\tfsQuad.dispose();\n\t\t\t});\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst renderTarget = this.renderTarget();\n\t\t\tonCleanup(() => {\n\t\t\t\trenderTarget.dispose();\n\t\t\t});\n\t\t});\n\n\t\tinjectBeforeRender(({ gl, delta }) => {\n\t\t\tthis.uniforms.uTime.value += delta;\n\n\t\t\tgl.setRenderTarget(this.renderTarget());\n\t\t\tthis.fsQuad().render(gl);\n\t\t\tgl.setRenderTarget(null);\n\t\t});\n\t}\n}\n\n@Component({\n\tselector: 'ngts-spot-light-shadow-no-shader',\n\ttemplate: `\n\t\t<ngt-mesh #mesh [scale]=\"scale()\" castShadow>\n\t\t\t<ngt-plane-geometry />\n\t\t\t<ngt-mesh-basic-material\n\t\t\t\ttransparent\n\t\t\t\t[side]=\"DoubleSide\"\n\t\t\t\t[alphaTest]=\"alphaTest()\"\n\t\t\t\t[alphaMap]=\"map()\"\n\t\t\t\t[opacity]=\"debug() ? 1 : 0\"\n\t\t\t>\n\t\t\t\t<ng-content />\n\t\t\t</ngt-mesh-basic-material>\n\t\t</ngt-mesh>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsSpotLightShadowNoShader {\n\tprotected readonly DoubleSide = THREE.DoubleSide;\n\n\toptions = input(defaultSpotLightShadowOptions, { transform: mergeInputs(defaultSpotLightShadowOptions) });\n\n\tmeshRef = viewChild.required<ElementRef<THREE.Mesh>>('mesh');\n\n\tprivate spotLight = inject(NgtsSpotLight);\n\tprotected debug = this.spotLight.debug;\n\n\tprotected alphaTest = pick(this.options, 'alphaTest');\n\tprotected scale = pick(this.options, 'scale');\n\tprotected map = computed(() => {\n\t\tconst map = this.options().map;\n\t\tif (map) {\n\t\t\tmap.wrapS = map.wrapT = RepeatWrapping;\n\t\t}\n\t\treturn map;\n\t});\n\n\tprivate width = pick(this.options, 'width');\n\tprivate height = pick(this.options, 'height');\n\tprivate distance = pick(this.options, 'distance');\n\n\tconstructor() {\n\t\textend({ Mesh, PlaneGeometry, MeshBasicMaterial });\n\n\t\tinjectSpotLightCommon(this.spotLight.spotLightRef, this.meshRef, this.width, this.height, this.distance);\n\t}\n}\n\n@Component({\n\tselector: 'ngts-spot-light-shadow',\n\ttemplate: `\n\t\t@if (shader(); as shader) {\n\t\t\t<ngts-spot-light-shadow-shader [shader]=\"shader\" [options]=\"options()\" />\n\t\t} @else {\n\t\t\t<ngts-spot-light-shadow-no-shader [options]=\"options()\" />\n\t\t}\n\t`,\n\timports: [NgtsSpotLightShadowShader, NgtsSpotLightShadowNoShader],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsSpotLightShadow {\n\tshader = input<string>();\n\toptions = input(defaultSpotLightShadowOptions, { transform: mergeInputs(defaultSpotLightShadowOptions) });\n}\n\nconst defaultOptions: NgtsSpotLightOptions = {\n\topacity: 1,\n\tcolor: 'white',\n\tdistance: 5,\n\tangle: 0.15,\n\tattenuation: 5,\n\tanglePower: 5,\n\tvolumetric: true,\n\tdebug: false,\n};\n\n@Component({\n\tselector: 'ngts-spot-light',\n\ttemplate: `\n\t\t<ngt-group>\n\t\t\t<ngt-spot-light\n\t\t\t\t#spotLight\n\t\t\t\t[angle]=\"angle()\"\n\t\t\t\t[color]=\"color()\"\n\t\t\t\t[distance]=\"distance()\"\n\t\t\t\tcastShadow\n\t\t\t\t[parameters]=\"parameters()\"\n\t\t\t>\n\t\t\t\t@if (volumetric()) {\n\t\t\t\t\t<ngts-volumetric-mesh [options]=\"volumetricOptions()\" />\n\t\t\t\t}\n\n\t\t\t\t@if (debug()) {\n\t\t\t\t\t<ngts-helper [type]=\"SpotLightHelper\" />\n\t\t\t\t}\n\t\t\t</ngt-spot-light>\n\t\t\t<ng-content />\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtsVolumetricMesh, NgtsHelper],\n})\nexport class NgtsSpotLight {\n\tprotected readonly SpotLightHelper = THREE.SpotLightHelper;\n\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, [\n\t\t'opacity',\n\t\t'radiusTop',\n\t\t'radiusBottom',\n\t\t'depthBuffer',\n\t\t'color',\n\t\t'distance',\n\t\t'angle',\n\t\t'attenuation',\n\t\t'anglePower',\n\t\t'volumetric',\n\t\t'debug',\n\t]);\n\tprotected volumetricOptions = pick(this.options, [\n\t\t'opacity',\n\t\t'radiusTop',\n\t\t'radiusBottom',\n\t\t'depthBuffer',\n\t\t'color',\n\t\t'distance',\n\t\t'angle',\n\t\t'attenuation',\n\t\t'anglePower',\n\t\t'debug',\n\t]);\n\n\tspotLightRef = viewChild.required<ElementRef<THREE.SpotLight>>('spotLight');\n\n\tdebug = pick(this.options, 'debug');\n\tprotected angle = pick(this.options, 'angle');\n\tprotected color = pick(this.options, 'color');\n\tprotected distance = pick(this.options, 'distance');\n\tprotected volumetric = pick(this.options, 'volumetric');\n\n\tconstructor() {\n\t\textend({ Group, SpotLight });\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tDirective,\n\teffect,\n\tinject,\n\tinput,\n\toutput,\n\tsignal,\n} from '@angular/core';\nimport { extend, NgtArgs, NgtThreeElements, omit, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { AmbientLight, Group, PointLight, SpotLight, Vector2 } from 'three';\nimport { NgtsAccumulativeShadows, NgtsAccumulativeShadowsOptions } from './accumulative-shadows';\nimport { NgtsBounds } from './bounds';\nimport { NgtsCenter, NgtsCenterOptions, NgtsCenterState } from './center';\nimport { NgtsContactShadows, NgtsContactShadowsOptions } from './contact-shadows';\nimport { NgtsEnvironment, NgtsEnvironmentOptions } from './environment/environment';\nimport { NgtsEnvironmentPresets } from './environment/inject-environment';\nimport { NgtsRandomizedLights, NgtsRandomizedLightsOptions } from './randomized-lights';\n\nconst presets = {\n\trembrandt: { main: [1, 2, 1], fill: [-2, -0.5, -2] },\n\tportrait: { main: [-1, 2, 0.5], fill: [-1, 0.5, -1.5] },\n\tupfront: { main: [0, 2, 1], fill: [-1, 0.5, -1.5] },\n\tsoft: { main: [-2, 4, 4], fill: [-1, 0.5, -1.5] },\n} as const;\n\ntype NgtsStageShadowsOptions = Partial<NgtsAccumulativeShadowsOptions> &\n\tPartial<NgtsRandomizedLightsOptions> &\n\tPartial<NgtsContactShadowsOptions> & {\n\t\ttype: 'contact' | 'accumulative';\n\t\t/** Shadow plane offset, default: 0 */\n\t\toffset: number;\n\t\t/** Shadow bias, default: -0.0001 */\n\t\tbias: number;\n\t\t/** Shadow normal bias, default: 0 */\n\t\tnormalBias: number;\n\t\t/** Shadow map size, default: 1024 */\n\t\tsize: number;\n\t};\n\nexport interface NgtsStageOptions extends Partial<NgtThreeElements['ngt-group']> {\n\t/** Lighting setup, default: \"rembrandt\" */\n\tpreset:\n\t\t| 'rembrandt'\n\t\t| 'portrait'\n\t\t| 'upfront'\n\t\t| 'soft'\n\t\t| { main: [x: number, y: number, z: number]; fill: [x: number, y: number, z: number] };\n\t/** Controls the ground shadows, default: \"contact\" */\n\tshadows: boolean | 'contact' | 'accumulative' | NgtsStageShadowsOptions;\n\t/** Optionally wraps and thereby centers the models using <Bounds>, can also be a margin, default: true */\n\tadjustCamera: boolean | number;\n\t/** The default environment, default: \"city\" */\n\tenvironment: NgtsEnvironmentPresets | Partial<NgtsEnvironmentOptions> | null;\n\t/** The lighting intensity, default: 0.5 */\n\tintensity: number;\n\t/** To adjust centering, default: undefined */\n\tcenter?: Partial<NgtsCenterOptions>;\n}\n\nconst defaultOptions: NgtsStageOptions = {\n\tpreset: 'rembrandt',\n\tshadows: 'contact',\n\tadjustCamera: true,\n\tenvironment: 'city',\n\tintensity: 0.5,\n};\n\n@Directive({ selector: 'ngts-stage-refit' })\nexport class NgtsStageRefit {\n\tradius = input.required<number>();\n\tadjustCamera = input.required<boolean>();\n\n\tconstructor() {\n\t\tconst bounds = inject(NgtsBounds);\n\n\t\teffect(() => {\n\t\t\tconst [, adjustCamera] = [this.radius(), this.adjustCamera()];\n\t\t\tif (adjustCamera) bounds.refresh().clip().fit();\n\t\t});\n\t}\n}\n\n@Component({\n\tselector: 'ngts-stage',\n\ttemplate: `\n\t\t<ngt-ambient-light [intensity]=\"intensity() / 3\" />\n\t\t<ngt-spot-light\n\t\t\t[penumbra]=\"1\"\n\t\t\t[position]=\"[config().main[0] * radius(), config().main[1] * radius(), config().main[2] * radius()]\"\n\t\t\t[intensity]=\"intensity() * 2\"\n\t\t\t[castShadow]=\"!!shadows()\"\n\t\t>\n\t\t\t<ngt-value [rawValue]=\"shadowBias()\" attach=\"shadow.bias\" />\n\t\t\t<ngt-value [rawValue]=\"normalBias()\" attach=\"shadow.normalBias\" />\n\t\t\t<ngt-vector2 *args=\"[shadowSize(), shadowSize()]\" attach=\"shadow.mapSize\" />\n\t\t</ngt-spot-light>\n\t\t<ngt-point-light\n\t\t\t[position]=\"[config().fill[0] * radius(), config().fill[1] * radius(), config().fill[2] * radius()]\"\n\t\t\t[intensity]=\"intensity()\"\n\t\t/>\n\n\t\t<ngts-bounds [options]=\"boundsOptions()\">\n\t\t\t<ngts-stage-refit [radius]=\"radius()\" [adjustCamera]=\"!!adjustCamera()\" />\n\t\t\t<ngts-center [options]=\"centerOptions()\" (centered)=\"onCenter($event)\">\n\t\t\t\t<ng-content />\n\t\t\t</ngts-center>\n\t\t</ngts-bounds>\n\n\t\t<ngt-group [position]=\"[0, -height() / 2 - shadowOffset() / 2, 0]\">\n\t\t\t@if (contactShadow()) {\n\t\t\t\t<ngts-contact-shadows [options]=\"shadowOptions()\" />\n\t\t\t}\n\n\t\t\t@if (accumulativeShadow()) {\n\t\t\t\t<ngts-accumulative-shadows [options]=\"shadowOptions()\">\n\t\t\t\t\t<ngts-randomized-lights [options]=\"randomizedLightsOptions()\" />\n\t\t\t\t</ngts-accumulative-shadows>\n\t\t\t}\n\t\t</ngt-group>\n\n\t\t@if (environment()) {\n\t\t\t<ngts-environment [options]=\"environmentOptions()\" />\n\t\t}\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [\n\t\tNgtArgs,\n\t\tNgtsBounds,\n\t\tNgtsStageRefit,\n\t\tNgtsCenter,\n\t\tNgtsContactShadows,\n\t\tNgtsAccumulativeShadows,\n\t\tNgtsEnvironment,\n\t\tNgtsRandomizedLights,\n\t],\n})\nexport class NgtsStage {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprivate parameters = omit(this.options, [\n\t\t'preset',\n\t\t'shadows',\n\t\t'adjustCamera',\n\t\t'environment',\n\t\t'intensity',\n\t\t'center',\n\t]);\n\n\tcentered = output<NgtsCenterState>();\n\n\tprivate dims = signal({ radius: 0, width: 0, height: 0, depth: 0 });\n\tprotected radius = pick(this.dims, 'radius');\n\tprotected height = pick(this.dims, 'height');\n\n\tprivate center = pick(this.options, 'center');\n\tprotected adjustCamera = pick(this.options, 'adjustCamera');\n\tprivate margin = computed(() => Number(this.adjustCamera()));\n\tprotected intensity = pick(this.options, 'intensity');\n\tprotected shadows = pick(this.options, 'shadows');\n\tprotected environment = pick(this.options, 'environment');\n\tprivate preset = pick(this.options, 'preset');\n\n\tprotected config = computed(() => {\n\t\tconst preset = this.preset();\n\t\treturn typeof preset === 'string' ? presets[preset] : preset;\n\t});\n\n\tprotected shadowBias = computed(() => (this.shadows() as NgtsStageShadowsOptions).bias ?? -0.0001);\n\tprotected normalBias = computed(() => (this.shadows() as NgtsStageShadowsOptions).normalBias ?? 0);\n\tprotected shadowSize = computed(() => (this.shadows() as NgtsStageShadowsOptions).size ?? 1024);\n\tprotected shadowOffset = computed(() => (this.shadows() as NgtsStageShadowsOptions).offset ?? 0);\n\tprotected contactShadow = computed(\n\t\t() => this.shadows() === 'contact' || (this.shadows() as NgtsStageShadowsOptions)?.type === 'contact',\n\t);\n\tprotected accumulativeShadow = computed(\n\t\t() => this.shadows() === 'accumulative' || (this.shadows() as NgtsStageShadowsOptions)?.type === 'accumulative',\n\t);\n\tprotected shadowOptions = computed(() => {\n\t\tconst shadows = this.shadows() as NgtsStageShadowsOptions;\n\n\t\tif (this.contactShadow()) {\n\t\t\treturn { scale: this.radius() * 4, far: this.radius(), blur: 2, ...shadows };\n\t\t}\n\n\t\tif (this.accumulativeShadow()) {\n\t\t\treturn {\n\t\t\t\ttemporal: true,\n\t\t\t\tframes: 100,\n\t\t\t\talphaTest: 0.9,\n\t\t\t\ttoneMapped: true,\n\t\t\t\tscale: this.radius() * 4,\n\t\t\t\t...shadows,\n\t\t\t};\n\t\t}\n\n\t\treturn typeof shadows === 'object' ? shadows : {};\n\t});\n\tprotected randomizedLightsOptions = computed(() => {\n\t\tif (!this.accumulativeShadow()) return {};\n\t\tconst shadows = this.shadows() as NgtsStageShadowsOptions;\n\t\treturn {\n\t\t\tamount: shadows.amount ?? 8,\n\t\t\tradius: shadows.radius ?? this.radius(),\n\t\t\tambient: shadows.ambient ?? 0.5,\n\t\t\tintensity: shadows.intensity ?? 1,\n\t\t\tposition: [\n\t\t\t\tthis.config().main[0] * this.radius(),\n\t\t\t\tthis.config().main[1] * this.radius(),\n\t\t\t\tthis.config().main[2] * this.radius(),\n\t\t\t],\n\t\t\tsize: this.radius() * 4,\n\t\t\tbias: -this.shadowBias(),\n\t\t\tmapSize: this.shadowSize(),\n\t\t} as Partial<NgtsRandomizedLightsOptions>;\n\t});\n\tprotected environmentOptions = computed(() => {\n\t\tconst environment = this.environment();\n\t\treturn !environment ? {} : typeof environment === 'string' ? { preset: environment } : environment;\n\t});\n\n\tprotected boundsOptions = computed(() => ({\n\t\tfit: !!this.adjustCamera(),\n\t\tclip: !!this.adjustCamera(),\n\t\tmargin: this.margin(),\n\t\tobserve: true,\n\t\t...this.parameters(),\n\t}));\n\tprotected centerOptions = computed(\n\t\t() =>\n\t\t\t({\n\t\t\t\t...(this.center() || {}),\n\t\t\t\tposition: [0, this.shadowOffset() / 2, 0],\n\t\t\t}) as Partial<NgtsCenterOptions>,\n\t);\n\n\tconstructor() {\n\t\textend({ AmbientLight, SpotLight, PointLight, Group, Vector2 });\n\t}\n\n\tonCenter($event: NgtsCenterState) {\n\t\tconst { width, height, depth, boundingSphere } = $event;\n\t\tthis.dims.set({ radius: boundingSphere.radius, width, height, depth });\n\t\tthis.centered.emit($event);\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["defaultOptions","LIST_URL"],"mappings":"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"}
|