angular-three-soba 2.0.0-beta.6 → 2.0.0-beta.7

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.
@@ -1 +1 @@
1
- {"version":3,"file":"angular-three-soba-staging.mjs","sources":["../../../../libs/soba/staging/src/accumulative-shadows/progressive-light-map.ts","../../../../libs/soba/staging/src/accumulative-shadows/accumulative-shadows.ts","../../../../libs/soba/staging/src/accumulative-shadows/randomized-lights.ts","../../../../libs/soba/staging/src/bounds/bounds.ts","../../../../libs/soba/staging/src/camera-shake/camera-shake.ts","../../../../libs/soba/staging/src/caustics/caustisc.ts","../../../../libs/soba/staging/src/center/center.ts","../../../../libs/soba/staging/src/cloud/cloud.ts","../../../../libs/soba/staging/src/contact-shadows/contact-shadows.ts","../../../../libs/soba/staging/src/environment/assets.ts","../../../../libs/soba/staging/src/environment/environment-input.ts","../../../../libs/soba/staging/src/environment/utils.ts","../../../../libs/soba/staging/src/environment/environment-cube.ts","../../../../libs/soba/staging/src/environment/environment-map.ts","../../../../libs/soba/staging/src/environment/environment-ground.ts","../../../../libs/soba/staging/src/environment/environment-portal.ts","../../../../libs/soba/staging/src/environment/environment.ts","../../../../libs/soba/staging/src/float/float.ts","../../../../libs/soba/staging/src/sky/sky.ts","../../../../libs/soba/staging/src/sparkles/sparkles.ts","../../../../libs/soba/staging/src/spot-light/spot-light-input.ts","../../../../libs/soba/staging/src/spot-light/volumetric-mesh.ts","../../../../libs/soba/staging/src/spot-light/spot-light.ts","../../../../libs/soba/staging/src/spot-light/spot-light-shadow-mesh-input.ts","../../../../libs/soba/staging/src/spot-light/spot-light-shadow-mesh.ts","../../../../libs/soba/staging/src/stage/stage.ts","../../../../libs/soba/staging/src/stars/stars.ts","../../../../libs/soba/staging/src/angular-three-soba-staging.ts"],"sourcesContent":["import { DiscardMaterial } from 'angular-three-soba/shaders';\nimport * as THREE from 'three';\n\nfunction isLight(object: any): object is THREE.Light {\n return object.isLight;\n}\n\nfunction isGeometry(object: any): object is THREE.Mesh {\n return !!object.geometry;\n}\n\n// Based on \"Progressive Light Map Accumulator\", by [zalo](https://github.com/zalo/)\nexport class ProgressiveLightMap {\n renderer: THREE.WebGLRenderer;\n res: number;\n scene: THREE.Scene;\n object: THREE.Mesh | null;\n buffer1Active: boolean;\n progressiveLightMap1: THREE.WebGLRenderTarget;\n progressiveLightMap2: THREE.WebGLRenderTarget;\n discardMat: THREE.ShaderMaterial;\n targetMat: THREE.MeshLambertMaterial;\n previousShadowMap: { value: THREE.Texture };\n averagingWindow: { value: number };\n clearColor: THREE.Color;\n clearAlpha: number;\n lights: { object: THREE.Light; intensity: number }[];\n meshes: { object: THREE.Mesh; material: THREE.Material | THREE.Material[] }[];\n\n constructor(renderer: THREE.WebGLRenderer, scene: THREE.Scene, res: number = 1024) {\n this.renderer = renderer;\n this.res = res;\n this.scene = scene;\n this.buffer1Active = false;\n this.lights = [];\n this.meshes = [];\n this.object = null;\n this.clearColor = new THREE.Color();\n this.clearAlpha = 0;\n\n // Create the Progressive LightMap Texture\n const format = /(Android|iPad|iPhone|iPod)/g.test(navigator.userAgent) ? THREE.HalfFloatType : THREE.FloatType;\n this.progressiveLightMap1 = new THREE.WebGLRenderTarget(this.res, this.res, {\n type: format,\n });\n this.progressiveLightMap2 = new THREE.WebGLRenderTarget(this.res, this.res, {\n type: format,\n });\n\n // Inject some spicy new logic into a standard phong material\n this.discardMat = new DiscardMaterial();\n this.targetMat = new THREE.MeshLambertMaterial({ fog: false });\n this.previousShadowMap = { value: this.progressiveLightMap1.texture };\n this.averagingWindow = { value: 100 };\n this.targetMat.onBeforeCompile = (shader) => {\n // Vertex Shader: Set Vertex Positions to the Unwrapped UV Positions\n shader.vertexShader =\n 'varying vec2 vUv;\\n' +\n shader.vertexShader.slice(0, -1) +\n 'vUv = uv; gl_Position = vec4((uv - 0.5) * 2.0, 1.0, 1.0); }';\n\n // Fragment Shader: Set Pixels to average in the Previous frame's Shadows\n const bodyStart = shader.fragmentShader.indexOf('void main() {');\n shader.fragmentShader =\n 'varying vec2 vUv;\\n' +\n shader.fragmentShader.slice(0, bodyStart) +\n 'uniform sampler2D previousShadowMap;\\n\tuniform float averagingWindow;\\n' +\n shader.fragmentShader.slice(bodyStart - 1, -1) +\n `\\nvec3 texelOld = texture2D(previousShadowMap, vUv).rgb;\n gl_FragColor.rgb = mix(texelOld, gl_FragColor.rgb, 1.0/ averagingWindow);\n }`;\n\n // Set the Previous Frame's Texture Buffer and Averaging Window\n // Set the Previous Frame's Texture Buffer and Averaging Window\n shader.uniforms['previousShadowMap'] = this.previousShadowMap;\n shader.uniforms['averagingWindow'] = this.averagingWindow;\n };\n }\n\n clear() {\n this.renderer.getClearColor(this.clearColor);\n this.clearAlpha = this.renderer.getClearAlpha();\n this.renderer.setClearColor('black', 1);\n this.renderer.setRenderTarget(this.progressiveLightMap1);\n this.renderer.clear();\n this.renderer.setRenderTarget(this.progressiveLightMap2);\n this.renderer.clear();\n this.renderer.setRenderTarget(null);\n this.renderer.setClearColor(this.clearColor, this.clearAlpha);\n\n this.lights = [];\n this.meshes = [];\n this.scene.traverse((object) => {\n if (isGeometry(object)) {\n this.meshes.push({ object, material: object.material });\n } else if (isLight(object)) {\n this.lights.push({ object, intensity: object.intensity });\n }\n });\n }\n\n prepare() {\n this.lights.forEach((light) => (light.object.intensity = 0));\n this.meshes.forEach((mesh) => (mesh.object.material = this.discardMat));\n }\n\n finish() {\n this.lights.forEach((light) => (light.object.intensity = light.intensity));\n this.meshes.forEach((mesh) => (mesh.object.material = mesh.material));\n }\n\n configure(object: THREE.Mesh) {\n this.object = object;\n }\n\n update(camera: THREE.Camera, blendWindow = 100) {\n if (!this.object) return;\n // Set each object's material to the UV Unwrapped Surface Mapping Version\n this.averagingWindow.value = blendWindow;\n this.object.material = this.targetMat;\n // Ping-pong two surface buffers for reading/writing\n const activeMap = this.buffer1Active ? this.progressiveLightMap1 : this.progressiveLightMap2;\n const inactiveMap = this.buffer1Active ? this.progressiveLightMap2 : this.progressiveLightMap1;\n // Render the object's surface maps\n const oldBg = this.scene.background;\n this.scene.background = null;\n this.renderer.setRenderTarget(activeMap);\n this.previousShadowMap.value = inactiveMap.texture;\n this.buffer1Active = !this.buffer1Active;\n this.renderer.render(this.scene, camera);\n this.renderer.setRenderTarget(null);\n this.scene.background = oldBg;\n }\n}\n","import {\n CUSTOM_ELEMENTS_SCHEMA,\n Component,\n InjectionToken,\n Input,\n Signal,\n computed,\n effect,\n inject,\n untracked,\n} from '@angular/core';\nimport {\n NgtSignalStore,\n NgtStore,\n extend,\n getLocalState,\n injectBeforeRender,\n injectNgtRef,\n requestAnimationFrameInInjectionContext,\n type NgtGroup,\n} from 'angular-three';\nimport { SoftShadowMaterial, SoftShadowMaterialInputs } from 'angular-three-soba/shaders';\nimport { Group, Mesh, PlaneGeometry } from 'three';\nimport { ProgressiveLightMap } from './progressive-light-map';\n\nextend({ SoftShadowMaterial, Group, Mesh, PlaneGeometry });\n\nexport interface NgtsAccumulativeShadowsState {\n /** How many frames it can render, more yields cleaner results but takes more time, 40 */\n frames: number;\n /** If frames === Infinity blend controls the refresh ratio, 100 */\n blend: number;\n /** Can limit the amount of frames rendered if frames === Infinity, usually to get some performance back once a movable scene has settled, Infinity */\n limit: number;\n /** Scale of the plane, */\n scale: number;\n /** Temporal accumulates shadows over time which is more performant but has a visual regression over instant results, false */\n temporal: boolean;\n /** Opacity of the plane, 1 */\n opacity: number;\n /** Discards alpha pixels, 0.65 */\n alphaTest: number;\n /** Shadow color, black */\n color: string;\n /** Colorblend, how much colors turn to black, 0 is black, 2 */\n colorBlend: number;\n /** Buffer resolution, 1024 */\n resolution: number;\n /** Texture tonemapping */\n toneMapped: boolean;\n}\n\nexport type NgtsAccumulativeShadowsLightApi = { update: () => void };\n\nexport interface NgtsAccumulativeShadowsApi {\n lights: Map<string, Signal<NgtsAccumulativeShadowsLightApi>>;\n temporal: boolean;\n frames: number;\n blend: number;\n count: number;\n getMesh: () => THREE.Mesh<THREE.PlaneGeometry, SoftShadowMaterialInputs & THREE.ShaderMaterial>;\n reset: () => void;\n update: (frames?: number) => void;\n}\n\nexport const NGTS_ACCUMULATIVE_SHADOWS_API = new InjectionToken<Signal<NgtsAccumulativeShadowsApi>>(\n 'NgtsAccumulativeShadows API'\n);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ngts-accumulative-shadows': NgtGroup & NgtsAccumulativeShadowsState;\n }\n}\n\n@Component({\n selector: 'ngts-accumulative-shadows',\n standalone: true,\n template: `\n <ngt-group ngtCompound>\n <ngt-group [ref]=\"accumulativeShadowsRef\" [traverse]=\"nullTraverse\">\n <ng-content />\n </ngt-group>\n <ngt-mesh\n [ref]=\"meshRef\"\n [receiveShadow]=\"true\"\n [scale]=\"accumulativeShadowsScale()\"\n [rotation]=\"[-Math.PI / 2, 0, 0]\"\n >\n <ngt-plane-geometry />\n <ngt-soft-shadow-material\n [transparent]=\"true\"\n [depthWrite]=\"false\"\n [toneMapped]=\"accumulativeShadowsToneMapped()\"\n [color]=\"accumulativeShadowsColor()\"\n [blend]=\"accumulativeShadowsColorBlend()\"\n [map]=\"pLM().progressiveLightMap2.texture\"\n />\n </ngt-mesh>\n </ngt-group>\n `,\n providers: [\n {\n provide: NGTS_ACCUMULATIVE_SHADOWS_API,\n useFactory: (shadows: NgtsAccumulativeShadows) => shadows.api,\n deps: [NgtsAccumulativeShadows],\n },\n ],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsAccumulativeShadows extends NgtSignalStore<NgtsAccumulativeShadowsState> {\n readonly nullTraverse = () => null;\n readonly Math = Math;\n\n /** How many frames it can render, more yields cleaner results but takes more time, 40 */\n @Input() set frames(frames: number) {\n this.set({ frames });\n }\n\n /** If frames === Infinity blend controls the refresh ratio, 100 */\n @Input() set blend(blend: number) {\n this.set({ blend });\n }\n\n /** Can limit the amount of frames rendered if frames === Infinity, usually to get some performance back once a movable scene has settled, Infinity */\n @Input() set limit(limit: number) {\n this.set({ limit });\n }\n\n /** Scale of the plane, */\n @Input() set scale(scale: number) {\n this.set({ scale });\n }\n\n /** Temporal accumulates shadows over time which is more performant but has a visual regression over instant results, false */\n @Input() set temporal(temporal: boolean) {\n this.set({ temporal });\n }\n\n /** Opacity of the plane, 1 */\n @Input() set opacity(opacity: number) {\n this.set({ opacity });\n }\n\n /** Discards alpha pixels, 0.65 */\n @Input() set alphaTest(alphaTest: number) {\n this.set({ alphaTest });\n }\n\n /** Shadow color, black */\n @Input() set color(color: string) {\n this.set({ color });\n }\n\n /** Colorblend, how much colors turn to black, 0 is black, 2 */\n @Input() set colorBlend(colorBlend: number) {\n this.set({ colorBlend });\n }\n\n /** Buffer resolution, 1024 */\n @Input() set resolution(resolution: number) {\n this.set({ resolution });\n }\n\n /** Texture tonemapping */\n @Input() set toneMapped(toneMapped: boolean) {\n this.set({ toneMapped });\n }\n\n readonly #store = inject(NgtStore);\n readonly #gl = this.#store.select('gl');\n readonly #scene = this.#store.select('scene');\n readonly #camera = this.#store.select('camera');\n\n readonly #resolution = this.select('resolution');\n readonly #temporal = this.select('temporal');\n readonly #blend = this.select('blend');\n readonly #frames = this.select('frames');\n readonly #opacity = this.select('opacity');\n readonly #alphaTest = this.select('alphaTest');\n\n readonly accumulativeShadowsScale = this.select('scale');\n readonly accumulativeShadowsToneMapped = this.select('toneMapped');\n readonly accumulativeShadowsColor = this.select('color');\n readonly accumulativeShadowsColorBlend = this.select('colorBlend');\n\n readonly meshRef = injectNgtRef<THREE.Mesh<THREE.PlaneGeometry, SoftShadowMaterialInputs & THREE.ShaderMaterial>>();\n readonly accumulativeShadowsRef = injectNgtRef<THREE.Group>();\n\n readonly pLM = computed(\n () => new ProgressiveLightMap(untracked(this.#gl), untracked(this.#scene), this.#resolution())\n );\n\n readonly api = computed(() => {\n const pLM = this.pLM();\n const alphaTest = this.#alphaTest();\n const opacity = this.#opacity();\n const camera = this.#camera();\n\n return {\n lights: new Map(),\n temporal: this.#temporal(),\n frames: Math.max(2, this.#frames()),\n blend: Math.max(2, this.#frames() === Infinity ? this.#blend() : this.#frames()),\n count: 0,\n getMesh: () => this.meshRef.nativeElement,\n reset: () => {\n if (!this.meshRef.nativeElement) return;\n // Clear buffers, reset opacities, set frame count to 0\n pLM.clear();\n const material = this.meshRef.nativeElement.material;\n material.opacity = 0;\n material.alphaTest = 0;\n this.api().count = 0;\n },\n update: (frames = 1) => {\n if (!this.meshRef.nativeElement) return;\n // Adapt the opacity-blend ratio to the number of frames\n const material = this.meshRef.nativeElement.material;\n if (!this.api().temporal) {\n material.opacity = opacity;\n material.alphaTest = alphaTest;\n } else {\n material.opacity = Math.min(opacity, material.opacity + opacity / this.api().blend);\n material.alphaTest = Math.min(alphaTest, material.alphaTest + alphaTest / this.api().blend);\n }\n\n // Switch accumulative lights on\n this.accumulativeShadowsRef.nativeElement.visible = true;\n // Collect scene lights and meshes\n pLM.prepare();\n\n // Update the lightmap and the accumulative lights\n for (let i = 0; i < frames; i++) {\n this.api().lights.forEach((light) => light().update());\n pLM.update(camera, this.api().blend);\n }\n // Switch lights off\n this.accumulativeShadowsRef.nativeElement.visible = false;\n // Restore lights and meshes\n pLM.finish();\n },\n };\n });\n\n constructor() {\n super({\n frames: 40,\n limit: Infinity,\n blend: 20,\n scale: 10,\n opacity: 1,\n alphaTest: 0.75,\n color: 'black',\n colorBlend: 2,\n resolution: 1024,\n toneMapped: true,\n temporal: false,\n });\n requestAnimationFrameInInjectionContext(() => {\n this.#configure();\n this.#resetAndUpdate();\n });\n injectBeforeRender(this.#onBeforeRender.bind(this));\n }\n\n #onBeforeRender() {\n const invalidate = this.#store.get('invalidate');\n const limit = this.get('limit');\n const api = this.api();\n if ((api.temporal || api.frames === Infinity) && api.count < api.frames && api.count < limit) {\n invalidate();\n api.update();\n api.count++;\n }\n }\n\n #configure() {\n const trigger = computed(() => ({ pLM: this.pLM(), mesh: this.meshRef.nativeElement }));\n effect(() => {\n const { pLM, mesh } = trigger();\n if (!mesh) return;\n pLM.configure(mesh);\n });\n }\n\n #resetAndUpdate() {\n const trigger = computed(() => ({\n state: this.state(),\n objects: getLocalState(this.#store.get('scene')).objects(),\n mesh: this.meshRef.nativeElement,\n }));\n\n effect(() => {\n const { mesh } = trigger();\n if (!mesh) return;\n const api = untracked(this.api);\n // Reset internals, buffers, ...\n api.reset();\n // Update lightmap\n if (!api.temporal && api.frames !== Infinity) api.update(api.blend);\n });\n }\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, Component, Input, computed, effect, inject } from '@angular/core';\nimport {\n NgtArgs,\n NgtRepeat,\n NgtSignalStore,\n extend,\n injectNgtRef,\n requestAnimationFrameInInjectionContext,\n type NgtGroup,\n} from 'angular-three';\nimport * as THREE from 'three';\nimport { DirectionalLight, Group, OrthographicCamera, Vector2 } from 'three';\nimport { NGTS_ACCUMULATIVE_SHADOWS_API } from './accumulative-shadows';\n\nextend({ Group, DirectionalLight, OrthographicCamera, Vector2 });\n\nexport interface NgtsRandomizedLightsState {\n /** How many frames it will jiggle the lights, 1.\n * Frames is context aware, if a provider like AccumulativeShadows exists, frames will be taken from there! */\n frames: number;\n /** Light position, [0, 0, 0] */\n position: [x: number, y: number, z: number];\n /** Radius of the jiggle, higher values make softer light, 5 */\n radius: number;\n /** Amount of lights, 8 */\n amount: number;\n /** Light intensity, 1 */\n intensity: number;\n /** Ambient occlusion, lower values mean less AO, hight more, you can mix AO and directional light, 0.5 */\n ambient: number;\n /** If the lights cast shadows, this is true by default */\n castShadow: boolean;\n /** Default shadow bias, 0 */\n bias: number;\n /** Default map size, 512 */\n mapSize: number;\n /** Default size of the shadow camera, 10 */\n size: number;\n /** Default shadow camera near, 0.5 */\n near: number;\n /** Default shadow camera far, 500 */\n far: number;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ngts-randomized-lights': NgtGroup & NgtsRandomizedLightsState;\n }\n}\n\n@Component({\n selector: 'ngts-randomized-lights',\n standalone: true,\n template: `\n <ngt-group ngtCompound [ref]=\"lightsRef\">\n <ngt-directional-light\n *ngFor=\"let i; repeat: lightsAmount()\"\n [castShadow]=\"lightsCastShadow()\"\n [intensity]=\"lightsIntensity() / lightsAmount()\"\n >\n <ngt-value [rawValue]=\"lightsBias()\" attach=\"shadow.bias\" />\n <ngt-vector2 *args=\"shadowMapSize()\" attach=\"shadow.mapSize\" />\n <ngt-orthographic-camera *args=\"cameraArgs()\" attach=\"shadow.camera\" />\n </ngt-directional-light>\n </ngt-group>\n `,\n imports: [NgtArgs, NgtRepeat],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsRandomizedLights extends NgtSignalStore<NgtsRandomizedLightsState> {\n @Input() lightsRef = injectNgtRef<THREE.Group>();\n /** How many frames it will jiggle the lights, 1.\n * Frames is context aware, if a provider like AccumulativeShadows exists, frames will be taken from there! */\n @Input() set frames(frames: number) {\n this.set({ frames });\n }\n\n /** Light position, [0, 0, 0] */\n @Input() set position(position: [x: number, y: number, z: number]) {\n this.set({ position });\n }\n\n /** Radius of the jiggle, higher values make softer light, 5 */\n @Input() set radius(radius: number) {\n this.set({ radius });\n }\n\n /** Amount of lights, 8 */\n @Input() set amount(amount: number) {\n this.set({ amount });\n }\n\n /** Light intensity, 1 */\n @Input() set intensity(intensity: number) {\n this.set({ intensity });\n }\n\n /** Ambient occlusion, lower values mean less AO, hight more, you can mix AO and directional light, 0.5 */\n @Input() set ambient(ambient: number) {\n this.set({ ambient });\n }\n\n /** If the lights cast shadows, this is true by default */\n @Input() set castShadow(castShadow: boolean) {\n this.set({ castShadow });\n }\n\n /** Default shadow bias, 0 */\n @Input() set bias(bias: number) {\n this.set({ bias });\n }\n\n /** Default map size, 512 */\n @Input() set mapSize(mapSize: number) {\n this.set({ mapSize });\n }\n\n /** Default size of the shadow camera, 10 */\n @Input() set size(size: number) {\n this.set({ size });\n }\n\n /** Default shadow camera near, 0.5 */\n @Input() set near(near: number) {\n this.set({ near });\n }\n\n /** Default shadow camera far, 500 */\n @Input() set far(far: number) {\n this.set({ far });\n }\n\n readonly #parent = inject(NGTS_ACCUMULATIVE_SHADOWS_API);\n\n readonly #size = this.select('size');\n readonly #near = this.select('near');\n readonly #far = this.select('far');\n readonly #mapSize = this.select('mapSize');\n readonly #ambient = this.select('ambient');\n readonly #position = this.select('position');\n readonly #radius = this.select('radius');\n\n readonly lightsAmount = this.select('amount');\n readonly lightsCastShadow = this.select('castShadow');\n readonly lightsIntensity = this.select('intensity');\n readonly lightsBias = this.select('bias');\n\n readonly shadowMapSize = computed(() => [this.#mapSize(), this.#mapSize()]);\n readonly cameraArgs = computed(() => [\n -this.#size(),\n this.#size(),\n this.#size(),\n -this.#size(),\n this.#near(),\n this.#far(),\n ]);\n\n readonly length = computed(() => new THREE.Vector3(...this.#position()).length());\n\n readonly api = computed(() => {\n const radius = this.#radius();\n const position = this.#position();\n const ambient = this.#ambient();\n const length = this.length();\n const lights = this.lightsRef.nativeElement;\n\n const update = () => {\n let light: THREE.DirectionalLight | undefined;\n if (lights) {\n for (let l = 0; l < lights.children.length; l++) {\n light = lights.children[l] as THREE.DirectionalLight;\n if (Math.random() > ambient) {\n light.position.set(\n position[0] + THREE.MathUtils.randFloatSpread(radius),\n position[1] + THREE.MathUtils.randFloatSpread(radius),\n position[2] + THREE.MathUtils.randFloatSpread(radius)\n );\n } else {\n const lambda = Math.acos(2 * Math.random() - 1) - Math.PI / 2.0;\n const phi = 2 * Math.PI * Math.random();\n light.position.set(\n Math.cos(lambda) * Math.cos(phi) * length,\n Math.abs(Math.cos(lambda) * Math.sin(phi) * length),\n Math.sin(lambda) * length\n );\n }\n }\n }\n };\n\n return { update };\n });\n\n constructor() {\n super({\n castShadow: true,\n bias: 0.001,\n mapSize: 512,\n size: 5,\n near: 0.5,\n far: 500,\n frames: 1,\n position: [0, 0, 0],\n radius: 1,\n amount: 8,\n intensity: 1,\n ambient: 0.5,\n });\n requestAnimationFrameInInjectionContext(() => {\n this.#updateLightsMap();\n });\n }\n\n #updateLightsMap() {\n effect((onCleanup) => {\n const lights = this.lightsRef.nativeElement;\n if (!lights) return;\n const parent = this.#parent();\n if (parent) {\n parent.lights.set(lights.uuid, this.api);\n onCleanup(() => parent.lights.delete(lights.uuid));\n }\n });\n }\n}\n","import {\n Component,\n computed,\n CUSTOM_ELEMENTS_SCHEMA,\n effect,\n EventEmitter,\n inject,\n InjectionToken,\n Input,\n Output,\n Signal,\n untracked,\n} from '@angular/core';\nimport {\n extend,\n injectBeforeRender,\n injectNgtRef,\n is,\n NgtSignalStore,\n NgtStore,\n requestAnimationFrameInInjectionContext,\n type NgtRenderState,\n} from 'angular-three';\nimport * as THREE from 'three';\nimport { Group } from 'three';\n\nexport type NgtsBoundsSize = {\n box: THREE.Box3;\n size: THREE.Vector3;\n center: THREE.Vector3;\n distance: number;\n};\n\nexport type NgtsBoundsApi = {\n getSize: () => NgtsBoundsSize;\n refresh: (object?: THREE.Object3D | THREE.Box3) => NgtsBoundsApi;\n clip: () => NgtsBoundsApi;\n fit: () => NgtsBoundsApi;\n to: ({\n position,\n target,\n }: {\n position: [number, number, number];\n target?: [number, number, number];\n }) => NgtsBoundsApi;\n};\n\ntype ControlsProto = {\n update(): void;\n target: THREE.Vector3;\n maxDistance: number;\n addEventListener: (event: string, callback: (event: any) => void) => void;\n removeEventListener: (event: string, callback: (event: any) => void) => void;\n};\n\nconst isBox3 = (def: unknown): def is THREE.Box3 => !!def && (def as THREE.Box3).isBox3;\n\nfunction equals(a: THREE.Vector3, b: THREE.Vector3, eps: number) {\n return Math.abs(a.x - b.x) < eps && Math.abs(a.y - b.y) < eps && Math.abs(a.z - b.z) < eps;\n}\n\nfunction damp(v: THREE.Vector3, t: THREE.Vector3, lambda: number, delta: number) {\n v.x = THREE.MathUtils.damp(v.x, t.x, lambda, delta);\n v.y = THREE.MathUtils.damp(v.y, t.y, lambda, delta);\n v.z = THREE.MathUtils.damp(v.z, t.z, lambda, delta);\n}\n\nexport const NGTS_BOUNDS_API = new InjectionToken<Signal<NgtsBoundsApi>>('NgtsBounds API');\n\nexport interface NgtsBoundsState {\n damping: number;\n fit: boolean;\n clip: boolean;\n observe: boolean;\n margin: number;\n eps: number;\n}\n\nextend({ Group });\n\n@Component({\n selector: 'ngts-bounds',\n standalone: true,\n template: `\n <ngt-group ngtCompound [ref]=\"boundsRef\">\n <ng-content />\n </ngt-group>\n `,\n providers: [{ provide: NGTS_BOUNDS_API, useFactory: (bounds: NgtsBounds) => bounds.api, deps: [NgtsBounds] }],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsBounds extends NgtSignalStore<NgtsBoundsState> {\n @Input() boundsRef = injectNgtRef<Group>();\n\n @Input() set damping(damping: number) {\n this.set({ damping });\n }\n\n @Input() set fit(fit: boolean) {\n this.set({ fit });\n }\n\n @Input() set clip(clip: boolean) {\n this.set({ clip });\n }\n\n @Input() set observe(observe: boolean) {\n this.set({ observe });\n }\n\n @Input() set margin(margin: number) {\n this.set({ margin });\n }\n\n @Input() set eps(eps: number) {\n this.set({ eps });\n }\n\n @Output() fitted = new EventEmitter<NgtsBoundsSize>();\n\n readonly #store = inject(NgtStore);\n readonly #controls = this.#store.select('controls');\n readonly #camera = this.#store.select('camera');\n readonly #invalidate = this.#store.select('invalidate');\n readonly #size = this.#store.select('size');\n\n readonly #current = { animating: false, focus: new THREE.Vector3(), camera: new THREE.Vector3(), zoom: 1 };\n readonly #goal = { focus: new THREE.Vector3(), camera: new THREE.Vector3(), zoom: 1 };\n\n readonly #box = new THREE.Box3();\n\n readonly #margin = this.select('margin');\n readonly #damping = this.select('damping');\n readonly #fit = this.select('fit');\n readonly #clip = this.select('clip');\n readonly #observe = this.select('observe');\n\n #count = 0;\n\n readonly api = computed(() => {\n const margin = this.#margin();\n const damping = this.#damping();\n\n const camera = this.#camera();\n const controls = this.#controls() as unknown as ControlsProto;\n const invalidate = this.#invalidate();\n\n const current = this.#current;\n const goal = this.#goal;\n\n const box = this.#box;\n const ref = () => this.boundsRef.untracked;\n const fitted = this.fitted;\n\n function getSize() {\n const size = box.getSize(new THREE.Vector3());\n const center = box.getCenter(new THREE.Vector3());\n const maxSize = Math.max(size.x, size.y, size.z);\n const fitHeightDistance = is.orthographicCamera(camera)\n ? maxSize * 4\n : maxSize / (2 * Math.atan((Math.PI * camera.fov) / 360));\n const fitWidthDistance = is.orthographicCamera(camera) ? maxSize * 4 : fitHeightDistance / camera.aspect;\n const distance = margin * Math.max(fitHeightDistance, fitWidthDistance);\n return { box, size, center, distance };\n }\n\n return {\n getSize,\n refresh(object?: THREE.Object3D | THREE.Box3) {\n if (isBox3(object)) box.copy(object);\n else {\n const target = object || ref();\n if (target) {\n target.updateWorldMatrix(true, true);\n box.setFromObject(target);\n }\n }\n if (box.isEmpty()) {\n const max = camera.position.length() || 10;\n box.setFromCenterAndSize(new THREE.Vector3(), new THREE.Vector3(max, max, max));\n }\n\n if (controls?.constructor.name === 'OrthographicTrackballControls') {\n // Put camera on a sphere along which it should move\n const { distance } = getSize();\n const direction = camera.position.clone().sub(controls.target).normalize().multiplyScalar(distance);\n const newPos = controls.target.clone().add(direction);\n camera.position.copy(newPos);\n }\n\n return this;\n },\n\n clip() {\n const { distance } = getSize();\n if (controls) controls.maxDistance = distance * 10;\n camera.near = distance / 100;\n camera.far = distance * 100;\n camera.updateProjectionMatrix();\n if (controls) controls.update();\n invalidate();\n return this;\n },\n to({ position, target }: { position: [number, number, number]; target?: [number, number, number] }) {\n current.camera.copy(camera.position);\n const { center } = getSize();\n goal.camera.set(...position);\n\n if (target) {\n goal.focus.set(...target);\n } else {\n goal.focus.copy(center);\n }\n\n if (damping) {\n current.animating = true;\n } else {\n camera.position.set(...position);\n }\n\n return this;\n },\n fit() {\n current.camera.copy(camera.position);\n if (controls) current.focus.copy(controls.target);\n\n const { center, distance } = getSize();\n const direction = center.clone().sub(camera.position).normalize().multiplyScalar(distance);\n\n goal.camera.copy(center).sub(direction);\n goal.focus.copy(center);\n\n if (is.orthographicCamera(camera)) {\n current.zoom = camera.zoom;\n\n let maxHeight = 0,\n maxWidth = 0;\n const vertices = [\n new THREE.Vector3(box.min.x, box.min.y, box.min.z),\n new THREE.Vector3(box.min.x, box.max.y, box.min.z),\n new THREE.Vector3(box.min.x, box.min.y, box.max.z),\n new THREE.Vector3(box.min.x, box.max.y, box.max.z),\n new THREE.Vector3(box.max.x, box.max.y, box.max.z),\n new THREE.Vector3(box.max.x, box.max.y, box.min.z),\n new THREE.Vector3(box.max.x, box.min.y, box.max.z),\n new THREE.Vector3(box.max.x, box.min.y, box.min.z),\n ];\n // Transform the center and each corner to camera space\n center.applyMatrix4(camera.matrixWorldInverse);\n for (const v of vertices) {\n v.applyMatrix4(camera.matrixWorldInverse);\n maxHeight = Math.max(maxHeight, Math.abs(v.y - center.y));\n maxWidth = Math.max(maxWidth, Math.abs(v.x - center.x));\n }\n maxHeight *= 2;\n maxWidth *= 2;\n const zoomForHeight = (camera.top - camera.bottom) / maxHeight;\n const zoomForWidth = (camera.right - camera.left) / maxWidth;\n goal.zoom = Math.min(zoomForHeight, zoomForWidth) / margin;\n if (!damping) {\n camera.zoom = goal.zoom;\n camera.updateProjectionMatrix();\n }\n }\n\n if (damping) {\n current.animating = true;\n } else {\n camera.position.copy(goal.camera);\n camera.lookAt(goal.focus);\n if (controls) {\n controls.target.copy(goal.focus);\n controls.update();\n }\n }\n if (fitted.observed) fitted.emit(this.getSize());\n invalidate();\n return this;\n },\n };\n });\n\n constructor() {\n super({ damping: 6, fit: false, clip: false, observe: false, margin: 1.2, eps: 0.01 });\n this.#preventDragHijacking();\n requestAnimationFrameInInjectionContext(() => {\n this.#scalePointer();\n injectBeforeRender(this.#onBeforeRender.bind(this));\n });\n }\n\n #scalePointer() {\n const trigger = computed(() => ({\n size: this.#size(),\n fit: this.#fit(),\n clip: this.#clip(),\n observe: this.#observe(),\n camera: this.#camera(),\n controls: this.#controls(),\n }));\n effect(() => {\n const { observe, fit, clip } = trigger();\n const api = untracked(this.api);\n if (observe || this.#count++ === 0) {\n api.refresh();\n if (fit) api.fit();\n if (clip) api.clip();\n }\n });\n }\n\n #onBeforeRender({ delta }: NgtRenderState) {\n const { damping, eps } = this.get();\n const invalidate = this.#invalidate();\n const camera = this.#camera();\n const controls = this.#controls() as unknown as ControlsProto;\n\n if (this.#current.animating) {\n damp(this.#current.focus, this.#goal.focus, damping, delta);\n damp(this.#current.camera, this.#goal.camera, damping, delta);\n this.#current.zoom = THREE.MathUtils.damp(this.#current.zoom, this.#goal.zoom, damping, delta);\n camera.position.copy(this.#current.camera);\n\n if (is.orthographicCamera(camera)) {\n camera.zoom = this.#current.zoom;\n camera.updateProjectionMatrix();\n }\n\n if (!controls) {\n camera.lookAt(this.#current.focus);\n } else {\n controls.target.copy(this.#current.focus);\n controls.update();\n }\n\n invalidate();\n if (is.orthographicCamera(camera) && !(Math.abs(this.#current.zoom - this.#goal.zoom) < eps)) return;\n if (!is.orthographicCamera(camera) && !equals(this.#current.camera, this.#goal.camera, eps)) return;\n if (controls && !equals(this.#current.focus, this.#goal.focus, eps)) return;\n this.#current.animating = false;\n }\n }\n\n #preventDragHijacking() {\n effect((onCleanup) => {\n const controls = this.#controls() as unknown as ControlsProto;\n if (controls) {\n const callback = () => (this.#current.animating = false);\n controls.addEventListener('start', callback);\n onCleanup(() => controls.removeEventListener('start', callback));\n }\n });\n }\n}\n","import { computed, Directive, effect, inject, Input, OnInit } from '@angular/core';\nimport { injectBeforeRender, NgtSignalStore, NgtStore } from 'angular-three';\nimport { SimplexNoise } from 'three-stdlib';\n\nexport interface NgtsCameraShakeState {\n intensity: number;\n decay: boolean;\n decayRate: number;\n maxYaw: number;\n maxPitch: number;\n maxRoll: number;\n yawFrequency: number;\n pitchFrequency: number;\n rollFrequency: number;\n}\n\n@Directive({ selector: 'ngts-camera-shake', standalone: true })\nexport class NgtsCameraShake extends NgtSignalStore<NgtsCameraShakeState> implements OnInit {\n readonly #store = inject(NgtStore);\n\n #initialRotation = this.#store.get('camera').rotation.clone();\n\n readonly #yawNoise = new SimplexNoise();\n readonly #rollNoise = new SimplexNoise();\n readonly #pitchNoise = new SimplexNoise();\n\n @Input() set intensity(intensity: number) {\n this.set({ intensity });\n }\n\n @Input() set decay(decay: boolean) {\n this.set({ decay });\n }\n\n @Input() set decayRate(decayRate: number) {\n this.set({ decayRate });\n }\n\n @Input() set maxYaw(maxYaw: number) {\n this.set({ maxYaw });\n }\n\n @Input() set maxPitch(maxPitch: number) {\n this.set({ maxPitch });\n }\n\n @Input() set maxRoll(maxRoll: number) {\n this.set({ maxRoll });\n }\n\n @Input() set yawFrequency(yawFrequency: number) {\n this.set({ yawFrequency });\n }\n\n @Input() set pitchFrequency(pitchFrequency: number) {\n this.set({ pitchFrequency });\n }\n\n @Input() set rollFrequency(rollFrequency: number) {\n this.set({ rollFrequency });\n }\n\n constructor() {\n super({\n intensity: 1,\n decayRate: 0.65,\n maxYaw: 0.1,\n maxPitch: 0.1,\n maxRoll: 0.1,\n yawFrequency: 0.1,\n pitchFrequency: 0.1,\n rollFrequency: 0.1,\n });\n\n injectBeforeRender(({ clock, delta, camera }) => {\n const {\n intensity,\n maxYaw,\n maxPitch,\n maxRoll,\n yawFrequency,\n pitchFrequency,\n rollFrequency,\n decay,\n decayRate,\n } = this.get();\n\n const shake = Math.pow(intensity, 2);\n const yaw = maxYaw * shake * this.#yawNoise.noise(clock.elapsedTime * yawFrequency, 1);\n const pitch = maxPitch * shake * this.#pitchNoise.noise(clock.elapsedTime * pitchFrequency, 1);\n const roll = maxRoll * shake * this.#rollNoise.noise(clock.elapsedTime * rollFrequency, 1);\n\n camera.rotation.set(\n this.#initialRotation.x + pitch,\n this.#initialRotation.y + yaw,\n this.#initialRotation.z + roll\n );\n\n if (decay && intensity > 0) {\n this.set({ intensity: intensity - decayRate * delta });\n this.#constraintIntensity();\n }\n });\n\n this.#setChangeEvent();\n }\n\n ngOnInit(): void {}\n\n #setChangeEvent() {\n const camera = this.#store.select('camera');\n const controls = this.#store.select('controls');\n const trigger = computed(() => ({ camera: camera(), controls: controls() }));\n effect((onCleanup) => {\n const { camera, controls } = trigger();\n if (controls) {\n const callback = () => void (this.#initialRotation = camera.rotation.clone());\n controls.addEventListener('change', callback);\n callback();\n onCleanup(() => void controls.removeEventListener('change', callback));\n }\n });\n }\n\n getIntensity() {\n return this.get('intensity');\n }\n\n setIntensity(intensity: number) {\n this.set({ intensity });\n this.#constraintIntensity();\n }\n\n #constraintIntensity() {\n const intensity = this.get('intensity');\n if (intensity < 0 || intensity > 1) {\n this.set({ intensity: intensity < 0 ? 0 : 1 });\n }\n }\n}\n","import { NgIf } from '@angular/common';\nimport { Component, computed, CUSTOM_ELEMENTS_SCHEMA, effect, ElementRef, inject, Input } from '@angular/core';\nimport { extend, injectNgtRef, NgtSignalStore, NgtStore, requestAnimationFrameInInjectionContext } from 'angular-three';\nimport { NgtsEdges } from 'angular-three-soba/abstractions';\nimport { injectNgtsFBO } from 'angular-three-soba/misc';\nimport { CausticsMaterial, CausticsProjectionMaterial } from 'angular-three-soba/shaders';\nimport * as THREE from 'three';\nimport { Group, LineBasicMaterial, Mesh, OrthographicCamera, PlaneGeometry, Scene } from 'three';\nimport { FullScreenQuad } from 'three-stdlib';\n\nextend({ Group, Scene, Mesh, PlaneGeometry, OrthographicCamera, CausticsProjectionMaterial, LineBasicMaterial });\n\nconst NORMALPROPS = {\n depth: true,\n minFilter: THREE.LinearFilter,\n magFilter: THREE.LinearFilter,\n encoding: THREE.LinearEncoding,\n type: THREE.UnsignedByteType,\n};\n\nconst CAUSTICPROPS = {\n minFilter: THREE.LinearMipmapLinearFilter,\n magFilter: THREE.LinearFilter,\n encoding: THREE.LinearEncoding,\n format: THREE.RGBAFormat,\n type: THREE.FloatType,\n generateMipmaps: true,\n};\n\ntype CausticsMaterialType = THREE.ShaderMaterial & {\n cameraMatrixWorld?: THREE.Matrix4;\n cameraProjectionMatrixInv?: THREE.Matrix4;\n lightPlaneNormal?: THREE.Vector3;\n lightPlaneConstant?: number;\n normalTexture?: THREE.Texture | null;\n depthTexture?: THREE.Texture | null;\n lightDir?: THREE.Vector3;\n near?: number;\n far?: number;\n modelMatrix?: THREE.Matrix4;\n worldRadius?: number;\n ior?: number;\n bounces?: number;\n resolution?: number;\n size?: number;\n intensity?: number;\n};\n\ntype CausticsProjectionMaterialType = THREE.MeshNormalMaterial & {\n viewMatrix: { value?: THREE.Matrix4 };\n color?: THREE.Color;\n causticsTexture?: THREE.Texture;\n causticsTextureB?: THREE.Texture;\n lightProjMatrix?: THREE.Matrix4;\n lightViewMatrix?: THREE.Matrix4;\n};\n\nfunction createNormalMaterial(side: THREE.Side = THREE.FrontSide) {\n const viewMatrix = { value: new THREE.Matrix4() };\n return Object.assign(new THREE.MeshNormalMaterial({ side }), {\n viewMatrix,\n onBeforeCompile: (shader: any) => {\n shader.uniforms.viewMatrix = viewMatrix;\n shader.fragmentShader =\n `vec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\n return normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\n }\\n` +\n shader.fragmentShader.replace(\n '#include <normal_fragment_maps>',\n `#include <normal_fragment_maps>\n normal = inverseTransformDirection( normal, viewMatrix );\\n`\n );\n },\n });\n}\n\nexport interface NgtsCausticsState {\n /** How many frames it will render, set it to Infinity for runtime, default: 1 */\n frames: number;\n /** Enables visual cues to help you stage your scene, default: false */\n debug: boolean;\n /** Will display caustics only and skip the models, default: false */\n causticsOnly: boolean;\n /** Will include back faces and enable the backsideIOR prop, default: false */\n backside: boolean;\n /** The IOR refraction index, default: 1.1 */\n ior: number;\n /** The IOR refraction index for back faces (only available when backside is enabled), default: 1.1 */\n backsideIOR: number;\n /** The texel size, default: 0.3125 */\n worldRadius: number;\n /** Intensity of the prjected caustics, default: 0.05 */\n intensity: number;\n /** Caustics color, default: white */\n color: THREE.ColorRepresentation;\n /** Buffer resolution, default: 2048 */\n resolution: number;\n /** Camera position, it will point towards the contents bounds center, default: [5, 5, 5] */\n lightSource: [x: number, y: number, z: number] | ElementRef<THREE.Object3D>;\n}\n\n@Component({\n selector: 'ngts-caustics',\n standalone: true,\n template: `\n <ngt-group [ref]=\"causticsRef\" ngtCompound>\n <ngt-scene [ref]=\"sceneRef\">\n <ngt-orthographic-camera [ref]=\"cameraRef\" [up]=\"[0, 1, 0]\" />\n <ng-content />\n </ngt-scene>\n <ngt-mesh [renderOrder]=\"2\" [ref]=\"planeRef\" [rotation]=\"[-Math.PI / 2, 0, 0]\">\n <ngt-plane-geometry />\n <ngt-caustics-projection-material\n *ngIf=\"causticsTargetFbo() && causticsTargetBFbo()\"\n [transparent]=\"true\"\n [color]=\"causticsColor()\"\n [causticsTexture]=\"causticsTargetFbo().texture\"\n [causticsTextureB]=\"causticsTargetBFbo().texture\"\n [blending]=\"CustomBlending\"\n [blendSrc]=\"OneFactor\"\n [blendDst]=\"SrcAlphaFactor\"\n [depthWrite]=\"false\"\n />\n\n <ngts-edges *ngIf=\"causticsDebug()\" [withChildren]=\"true\">\n <ngt-line-basic-material color=\"#ffff00\" [toneMapped]=\"false\" />\n </ngts-edges>\n </ngt-mesh>\n </ngt-group>\n `,\n imports: [NgIf, NgtsEdges],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsCaustics extends NgtSignalStore<NgtsCausticsState> {\n readonly CustomBlending = THREE.CustomBlending;\n readonly OneFactor = THREE.OneFactor;\n readonly SrcAlphaFactor = THREE.SrcAlphaFactor;\n readonly Math = Math;\n\n readonly planeRef = injectNgtRef<THREE.Mesh>();\n readonly sceneRef = injectNgtRef<THREE.Scene>();\n readonly cameraRef = injectNgtRef<THREE.OrthographicCamera>();\n\n @Input() causticsRef = injectNgtRef<THREE.Group>();\n\n /** How many frames it will render, set it to Infinity for runtime, default: 1 */\n @Input() set frames(frames: number) {\n this.set({ frames });\n }\n /** Enables visual cues to help you stage your scene, default: false */\n @Input() set debug(debug: boolean) {\n this.set({ debug });\n }\n /** Will display caustics only and skip the models, default: false */\n @Input() set causticsOnly(causticsOnly: boolean) {\n this.set({ causticsOnly });\n }\n /** Will include back faces and enable the backsideIOR prop, default: false */\n @Input() set backside(backside: boolean) {\n this.set({ backside });\n }\n /** The IOR refraction index, default: 1.1 */\n @Input() set ior(ior: number) {\n this.set({ ior });\n }\n /** The IOR refraction index for back faces (only available when backside is enabled), default: 1.1 */\n @Input() set backsideIOR(backsideIOR: number) {\n this.set({ backsideIOR });\n }\n /** The texel size, default: 0.3125 */\n @Input() set worldRadius(worldRadius: number) {\n this.set({ worldRadius });\n }\n /** Intensity of the prjected caustics, default: 0.05 */\n @Input() set intensity(intensity: number) {\n this.set({ intensity });\n }\n /** Caustics color, default: white */\n @Input() set color(color: THREE.ColorRepresentation) {\n this.set({ color });\n }\n /** Buffer resolution, default: 2048 */\n @Input() set resolution(resolution: number) {\n this.set({ resolution });\n }\n /** Camera position, it will point towards the contents bounds center, default: [5, 5, 5] */\n @Input() set lightSource(lightSource: [x: number, y: number, z: number] | ElementRef<THREE.Object3D>) {\n this.set({ lightSource });\n }\n\n readonly causticsColor = this.select('color');\n readonly causticsDebug = this.select('debug');\n\n readonly #resolution = this.select('resolution');\n\n readonly #normalTargetSettings = computed(() => ({\n width: this.#resolution(),\n height: this.#resolution(),\n settings: NORMALPROPS,\n }));\n\n readonly #causticsTargetSettings = computed(() => ({\n width: this.#resolution(),\n height: this.#resolution(),\n settings: CAUSTICPROPS,\n }));\n\n readonly normalTargetFbo = injectNgtsFBO(this.#normalTargetSettings);\n readonly normalTargetBFbo = injectNgtsFBO(this.#normalTargetSettings);\n readonly causticsTargetFbo = injectNgtsFBO(this.#causticsTargetSettings);\n readonly causticsTargetBFbo = injectNgtsFBO(this.#causticsTargetSettings);\n\n readonly #store = inject(NgtStore);\n\n constructor() {\n super({\n frames: 1,\n ior: 1.1,\n color: 'white',\n causticsOnly: false,\n backside: false,\n backsideIOR: 1.1,\n worldRadius: 0.3125,\n intensity: 0.05,\n resolution: 2024,\n lightSource: [5, 5, 5],\n });\n requestAnimationFrameInInjectionContext(() => {\n this.#updateWorldMatrix();\n this.#setBeforeRender();\n });\n }\n\n #updateWorldMatrix() {\n const trigger = computed(() => ({\n sceneChildren: this.sceneRef.children()(),\n caustics: this.causticsRef.nativeElement,\n causticsChildren: this.causticsRef.children()(),\n state: this.state(),\n }));\n\n effect(() => {\n const { caustics } = trigger();\n if (!caustics) return;\n caustics.updateWorldMatrix(false, true);\n });\n }\n\n #setBeforeRender() {\n const causticsMaterial = new CausticsMaterial() as CausticsMaterialType;\n const causticsQuad = new FullScreenQuad(causticsMaterial);\n\n const normalMaterial = createNormalMaterial();\n const normalMaterialB = createNormalMaterial(THREE.BackSide);\n\n const trigger = computed(() => ({\n scene: this.sceneRef.nativeElement,\n sceneChildren: this.sceneRef.children()(),\n caustics: this.causticsRef.nativeElement,\n camera: this.cameraRef.nativeElement,\n normalTarget: this.normalTargetFbo(),\n normalTargetB: this.normalTargetBFbo(),\n causticsTarget: this.causticsTargetFbo(),\n causticsTargetB: this.causticsTargetBFbo(),\n plane: this.planeRef.nativeElement,\n planeChildren: this.planeRef.children('both')(),\n }));\n\n effect((onCleanup) => {\n const {\n caustics,\n sceneChildren,\n scene,\n camera,\n plane,\n normalTarget,\n normalTargetB,\n causticsTarget,\n causticsTargetB,\n } = trigger();\n if (!caustics) return;\n caustics.updateWorldMatrix(false, true);\n\n if (sceneChildren.length > 1) {\n const v = new THREE.Vector3();\n const lpF = new THREE.Frustum();\n const lpM = new THREE.Matrix4();\n const lpP = new THREE.Plane();\n\n const lightDir = new THREE.Vector3();\n const lightDirInv = new THREE.Vector3();\n const bounds = new THREE.Box3();\n const focusPos = new THREE.Vector3();\n\n let count = 0;\n const sub = this.#store.get('internal').subscribe(({ gl }) => {\n const {\n frames,\n lightSource,\n resolution,\n worldRadius,\n intensity,\n backside,\n backsideIOR,\n ior,\n causticsOnly,\n } = this.get();\n\n if (frames === Infinity || count++ < frames) {\n if (Array.isArray(lightSource)) lightDir.fromArray(lightSource).normalize();\n else\n lightDir.copy(\n caustics.worldToLocal(lightSource.nativeElement.getWorldPosition(v)).normalize()\n );\n\n lightDirInv.copy(lightDir).multiplyScalar(-1);\n\n let boundsVertices: THREE.Vector3[] = [];\n scene.parent?.matrixWorld.identity();\n bounds.setFromObject(scene, true);\n boundsVertices.push(new THREE.Vector3(bounds.min.x, bounds.min.y, bounds.min.z));\n boundsVertices.push(new THREE.Vector3(bounds.min.x, bounds.min.y, bounds.max.z));\n boundsVertices.push(new THREE.Vector3(bounds.min.x, bounds.max.y, bounds.min.z));\n boundsVertices.push(new THREE.Vector3(bounds.min.x, bounds.max.y, bounds.max.z));\n boundsVertices.push(new THREE.Vector3(bounds.max.x, bounds.min.y, bounds.min.z));\n boundsVertices.push(new THREE.Vector3(bounds.max.x, bounds.min.y, bounds.max.z));\n boundsVertices.push(new THREE.Vector3(bounds.max.x, bounds.max.y, bounds.min.z));\n boundsVertices.push(new THREE.Vector3(bounds.max.x, bounds.max.y, bounds.max.z));\n\n const worldVerts = boundsVertices.map((v) => v.clone());\n\n bounds.getCenter(focusPos);\n boundsVertices = boundsVertices.map((v) => v.clone().sub(focusPos));\n const lightPlane = lpP.set(lightDirInv, 0);\n const projectedVerts = boundsVertices.map((v) =>\n lightPlane.projectPoint(v, new THREE.Vector3())\n );\n\n const centralVert = projectedVerts\n .reduce((a, b) => a.add(b), v.set(0, 0, 0))\n .divideScalar(projectedVerts.length);\n const radius = projectedVerts\n .map((v) => v.distanceTo(centralVert))\n .reduce((a, b) => Math.max(a, b));\n const dirLength = boundsVertices.map((x) => x.dot(lightDir)).reduce((a, b) => Math.max(a, b));\n\n // Shadows\n camera.position.copy(lightDir.clone().multiplyScalar(dirLength).add(focusPos));\n camera.lookAt(scene.localToWorld(focusPos.clone()));\n const dirMatrix = lpM.lookAt(camera.position, focusPos, v.set(0, 1, 0));\n camera.left = -radius;\n camera.right = radius;\n camera.top = radius;\n camera.bottom = -radius;\n const yOffset = v.set(0, radius, 0).applyMatrix4(dirMatrix);\n const yTime = (camera.position.y + yOffset.y) / lightDir.y;\n camera.near = 0.1;\n camera.far = yTime;\n camera.updateProjectionMatrix();\n camera.updateMatrixWorld();\n\n // Now find size of ground plane\n const groundProjectedCoords = worldVerts.map((v) =>\n v.add(lightDir.clone().multiplyScalar(-v.y / lightDir.y))\n );\n const centerPos = groundProjectedCoords\n .reduce((a, b) => a.add(b), v.set(0, 0, 0))\n .divideScalar(groundProjectedCoords.length);\n const maxSize =\n 2 *\n groundProjectedCoords\n .map((v) => Math.hypot(v.x - centerPos.x, v.z - centerPos.z))\n .reduce((a, b) => Math.max(a, b));\n plane.scale.setScalar(maxSize);\n plane.position.copy(centerPos);\n\n // if (debug) helper.current?.update();\n\n // Inject uniforms\n normalMaterialB.viewMatrix.value = normalMaterial.viewMatrix.value = camera.matrixWorldInverse;\n\n const dirLightNearPlane = lpF.setFromProjectionMatrix(\n lpM.multiplyMatrices(camera.projectionMatrix, camera.matrixWorldInverse)\n ).planes[4];\n\n causticsMaterial.cameraMatrixWorld = camera.matrixWorld;\n causticsMaterial.cameraProjectionMatrixInv = camera.projectionMatrixInverse;\n causticsMaterial.lightDir = lightDirInv;\n\n causticsMaterial.lightPlaneNormal = dirLightNearPlane.normal;\n causticsMaterial.lightPlaneConstant = dirLightNearPlane.constant;\n\n causticsMaterial.near = camera.near;\n causticsMaterial.far = camera.far;\n causticsMaterial.resolution = resolution;\n causticsMaterial.size = radius;\n causticsMaterial.intensity = intensity;\n causticsMaterial.worldRadius = worldRadius;\n\n // Switch the scene on\n scene.visible = true;\n\n // Render front face normals\n gl.setRenderTarget(normalTarget);\n gl.clear();\n scene.overrideMaterial = normalMaterial;\n gl.render(scene, camera);\n\n // Render back face normals, if enabled\n gl.setRenderTarget(normalTargetB);\n gl.clear();\n if (backside) {\n scene.overrideMaterial = normalMaterialB;\n gl.render(scene, camera);\n }\n\n // Remove the override material\n scene.overrideMaterial = null;\n\n // Render front face caustics\n causticsMaterial.ior = ior;\n (plane.material as CausticsProjectionMaterialType).lightProjMatrix = camera.projectionMatrix;\n (plane.material as CausticsProjectionMaterialType).lightViewMatrix = camera.matrixWorldInverse;\n causticsMaterial.normalTexture = normalTarget.texture;\n causticsMaterial.depthTexture = normalTarget.depthTexture;\n gl.setRenderTarget(causticsTarget);\n gl.clear();\n causticsQuad.render(gl);\n\n // Render back face caustics, if enabled\n causticsMaterial.ior = backsideIOR;\n causticsMaterial.normalTexture = normalTargetB.texture;\n causticsMaterial.depthTexture = normalTargetB.depthTexture;\n gl.setRenderTarget(causticsTargetB);\n gl.clear();\n if (backside) causticsQuad.render(gl);\n\n // Reset render target\n gl.setRenderTarget(null);\n\n // Switch the scene off if caustics is all that's wanted\n if (causticsOnly) scene.visible = false;\n }\n });\n\n onCleanup(() => sub());\n }\n });\n }\n}\n","import { Component, computed, CUSTOM_ELEMENTS_SCHEMA, effect, EventEmitter, Input, Output } from '@angular/core';\nimport {\n extend,\n injectNgtRef,\n NgtSignalStore,\n requestAnimationFrameInInjectionContext,\n type NgtGroup,\n} from 'angular-three';\nimport { Box3, Group, Sphere, Vector3 } from 'three';\n\nexport type NgtsCenterState = {\n top?: boolean;\n right?: boolean;\n bottom?: boolean;\n left?: boolean;\n front?: boolean;\n back?: boolean;\n /** Disable all axes */\n disable?: boolean;\n /** Disable x-axis centering */\n disableX?: boolean;\n /** Disable y-axis centering */\n disableY?: boolean;\n /** Disable z-axis centering */\n disableZ?: boolean;\n /** See https://threejs.org/docs/index.html?q=box3#api/en/math/Box3.setFromObject */\n precise: boolean;\n};\n\nextend({ Group });\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ngts-center': NgtsCenterState & NgtGroup;\n }\n}\n\n@Component({\n selector: 'ngts-center',\n standalone: true,\n template: `\n <ngt-group ngtCompound [ref]=\"centerRef\">\n <ngt-group [ref]=\"outerRef\">\n <ngt-group [ref]=\"innerRef\">\n <ng-content />\n </ngt-group>\n </ngt-group>\n </ngt-group>\n `,\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsCenter extends NgtSignalStore<NgtsCenterState> {\n @Input() centerRef = injectNgtRef<Group>();\n\n readonly outerRef = injectNgtRef<Group>();\n readonly innerRef = injectNgtRef<Group>();\n\n @Input() set top(top: boolean) {\n this.set({ top });\n }\n\n @Input() set right(right: boolean) {\n this.set({ right });\n }\n\n @Input() set bottom(bottom: boolean) {\n this.set({ bottom });\n }\n\n @Input() set left(left: boolean) {\n this.set({ left });\n }\n\n @Input() set front(front: boolean) {\n this.set({ front });\n }\n\n @Input() set back(back: boolean) {\n this.set({ back });\n }\n\n @Input() set disableX(disableX: boolean) {\n this.set({ disableX });\n }\n\n @Input() set disableY(disableY: boolean) {\n this.set({ disableY });\n }\n\n @Input() set disableZ(disableZ: boolean) {\n this.set({ disableZ });\n }\n\n @Input() set disable(disable: boolean) {\n this.set({ disable });\n }\n\n @Input() set precise(precise: boolean) {\n this.set({ precise });\n }\n\n @Output() centered = new EventEmitter<{\n /** The next parent above <Center> */\n parent: THREE.Object3D;\n /** The outmost container group of the <Center> component */\n container: THREE.Object3D;\n width: number;\n height: number;\n depth: number;\n boundingBox: THREE.Box3;\n boundingSphere: THREE.Sphere;\n center: THREE.Vector3;\n verticalAlignment: number;\n horizontalAlignment: number;\n depthAlignment: number;\n }>();\n\n constructor() {\n super({ precise: true });\n requestAnimationFrameInInjectionContext(() => {\n this.#setPosition();\n });\n }\n\n #setPosition() {\n const trigger = computed(() => {\n const center = this.centerRef.nativeElement;\n const outer = this.outerRef.nativeElement;\n const inner = this.innerRef.nativeElement;\n const innerChildren = this.innerRef.children();\n return { center, outer, inner, innerChildren: innerChildren() };\n });\n\n effect(\n () => {\n const { center: centerGroup, outer, inner } = trigger();\n if (!outer || !inner) return;\n const { precise, top, left, front, disable, disableX, disableY, disableZ, back, bottom, right } =\n this.get();\n outer.matrixWorld.identity();\n const box3 = new Box3().setFromObject(inner, precise);\n const center = new Vector3();\n const sphere = new Sphere();\n const width = box3.max.x - box3.min.x;\n const height = box3.max.y - box3.min.y;\n const depth = box3.max.z - box3.min.z;\n\n box3.getCenter(center);\n box3.getBoundingSphere(sphere);\n\n const vAlign = top ? height / 2 : bottom ? -height / 2 : 0;\n const hAlign = left ? -width / 2 : right ? width / 2 : 0;\n const dAlign = front ? depth / 2 : back ? -depth / 2 : 0;\n\n outer.position.set(\n disable || disableX ? 0 : -center.x + hAlign,\n disable || disableY ? 0 : -center.y + vAlign,\n disable || disableZ ? 0 : -center.z + dAlign\n );\n\n if (this.centered.observed) {\n this.centered.emit({\n parent: centerGroup.parent!,\n container: centerGroup,\n width,\n height,\n depth,\n boundingBox: box3,\n boundingSphere: sphere,\n center: center,\n verticalAlignment: vAlign,\n horizontalAlignment: hAlign,\n depthAlignment: dAlign,\n });\n }\n },\n { allowSignalWrites: true }\n );\n }\n}\n","import { NgFor, NgIf } from '@angular/common';\nimport { CUSTOM_ELEMENTS_SCHEMA, Component, Input, computed, inject } from '@angular/core';\nimport {\n NgtSignalStore,\n NgtStore,\n extend,\n injectNgtRef,\n type NgtBeforeRenderEvent,\n type NgtGroup,\n} from 'angular-three';\nimport { NgtsBillboard } from 'angular-three-soba/abstractions';\nimport { injectNgtsTextureLoader } from 'angular-three-soba/loaders';\nimport { Group, Mesh, MeshStandardMaterial, PlaneGeometry } from 'three';\n\nconst CLOUD_URL = 'https://rawcdn.githack.com/pmndrs/drei-assets/9225a9f1fbd449d9411125c2f419b843d0308c9f/cloud.png';\n(injectNgtsTextureLoader as any).preload(() => CLOUD_URL);\n\nextend({ Group, Mesh, PlaneGeometry, MeshStandardMaterial });\n\nexport interface NgtsCloudState {\n opacity: number;\n speed: number;\n width: number;\n depth: number;\n segments: number;\n texture: string;\n color: THREE.ColorRepresentation;\n depthTest: boolean;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ngts-cloud': NgtsCloudState & NgtGroup;\n }\n}\n\n@Component({\n selector: 'ngts-cloud',\n standalone: true,\n template: `\n <ngt-group ngtCompound [ref]=\"groupRef\">\n <ngt-group\n [position]=\"[0, 0, (cloudSegments() / 2) * cloudDepth()]\"\n (beforeRender)=\"onBeforeRender($event)\"\n >\n <ngts-billboard\n *ngFor=\"let cloud of clouds(); let i = index\"\n [position]=\"[cloud.x, cloud.y, -i * cloudDepth()]\"\n >\n <ngt-mesh [scale]=\"cloud.scale\" [rotation]=\"[0, 0, 0]\">\n <ngt-plane-geometry />\n <!-- we use ngIf here for texture because by the time ngt-value is initialized -->\n <!-- [map] has not been resolved yet. we ngIf it so that texture is available before hand -->\n <ngt-mesh-standard-material\n *ngIf=\"cloudTexture() as cloudTexture\"\n [transparent]=\"true\"\n [map]=\"cloudTexture\"\n [depthTest]=\"cloudDepthTest()\"\n [opacity]=\"(cloud.scale / 6) * cloud.density * cloudOpacity()\"\n [color]=\"cloudColor()\"\n >\n <ngt-value [rawValue]=\"encoding()\" attach=\"map.encoding\" />\n </ngt-mesh-standard-material>\n </ngt-mesh>\n </ngts-billboard>\n </ngt-group>\n </ngt-group>\n `,\n imports: [NgFor, NgtsBillboard, NgIf],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsCloud extends NgtSignalStore<NgtsCloudState> {\n @Input() groupRef = injectNgtRef<Group>();\n\n @Input() set opacity(opacity: number) {\n this.set({ opacity });\n }\n\n @Input() set speed(speed: number) {\n this.set({ speed });\n }\n\n @Input() set width(width: number) {\n this.set({ width });\n }\n\n @Input() set depth(depth: number) {\n this.set({ depth });\n }\n\n @Input() set segments(segments: number) {\n this.set({ segments });\n }\n\n @Input() set texture(texture: string) {\n this.set({ texture });\n }\n\n @Input() set color(color: THREE.ColorRepresentation) {\n this.set({ color });\n }\n\n @Input() set depthTest(depthTest: boolean) {\n this.set({ depthTest });\n }\n\n readonly #store = inject(NgtStore);\n\n readonly #width = this.select('width');\n readonly #speed = this.select('speed');\n\n readonly cloudSegments = this.select('segments');\n readonly cloudDepth = this.select('depth');\n readonly cloudDepthTest = this.select('depthTest');\n readonly cloudOpacity = this.select('opacity');\n readonly cloudColor = this.select('color');\n readonly encoding = this.#store.select('gl', 'outputEncoding');\n\n readonly cloudTexture = injectNgtsTextureLoader(this.select('texture'));\n readonly clouds = computed(() =>\n [...new Array(this.cloudSegments())].map((_, index) => ({\n x: this.#width() / 2 - Math.random() * this.#width(),\n y: this.#width() / 2 - Math.random() * this.#width(),\n scale: 0.4 + Math.sin(((index + 1) / this.cloudSegments()) * Math.PI) * ((0.2 + Math.random()) * 10),\n density: Math.max(0.2, Math.random()),\n rotation: Math.max(0.002, 0.005 * Math.random()) * this.#speed(),\n }))\n );\n\n constructor() {\n super({\n opacity: 0.5,\n speed: 0.4,\n width: 10,\n depth: 1.5,\n segments: 20,\n texture: CLOUD_URL,\n color: '#ffffff',\n depthTest: true,\n });\n }\n\n onBeforeRender({ state, object }: NgtBeforeRenderEvent<Group>) {\n const clouds = this.clouds();\n object.children.forEach((cloud, index) => {\n cloud.children[0].rotation.z += clouds[index].rotation;\n cloud.children[0].scale.setScalar(\n clouds[index].scale + (((1 + Math.sin(state.clock.getElapsedTime() / 10)) / 2) * index) / 10\n );\n });\n }\n}\n","import { Component, computed, CUSTOM_ELEMENTS_SCHEMA, inject, Input } from '@angular/core';\nimport {\n extend,\n injectBeforeRender,\n injectNgtRef,\n NgtArgs,\n NgtSignalStore,\n NgtStore,\n type NgtGroup,\n type NgtRenderState,\n} from 'angular-three';\nimport * as THREE from 'three';\nimport { Group, Mesh, MeshBasicMaterial, OrthographicCamera } from 'three';\nimport { HorizontalBlurShader, VerticalBlurShader } from 'three-stdlib';\n\nextend({ Group, Mesh, MeshBasicMaterial, OrthographicCamera });\n\nexport interface NgtsContactShadowsState {\n opacity: number;\n width: number;\n height: number;\n blur: number;\n far: number;\n smooth: boolean;\n resolution: number;\n frames: number;\n scale: number | [x: number, y: number];\n color: THREE.ColorRepresentation;\n depthWrite: boolean;\n renderOrder: number;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ngts-contact-shadows': NgtsContactShadowsState & NgtGroup;\n }\n}\n\n@Component({\n selector: 'ngts-contact-shadows',\n standalone: true,\n template: `\n <ngt-group ngtCompound [ref]=\"contactShadowsRef\" [rotation]=\"[Math.PI / 2, 0, 0]\">\n <ngt-mesh\n [renderOrder]=\"shadowRenderOrder() ?? 0\"\n [geometry]=\"contactShadows().planeGeometry\"\n [scale]=\"[1, -1, 1]\"\n [rotation]=\"[-Math.PI / 2, 0, 0]\"\n >\n <ngt-mesh-basic-material\n [map]=\"contactShadows().renderTarget.texture\"\n [transparent]=\"true\"\n [opacity]=\"shadowOpacity() ?? 1\"\n [depthWrite]=\"shadowDepthWrite() ?? false\"\n >\n <ngt-value [rawValue]=\"encoding()\" attach=\"map.encoding\" />\n </ngt-mesh-basic-material>\n </ngt-mesh>\n <ngt-orthographic-camera *args=\"cameraArgs()\" [ref]=\"shadowCameraRef\" />\n </ngt-group>\n `,\n imports: [NgtArgs],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsContactShadows extends NgtSignalStore<NgtsContactShadowsState> {\n @Input() contactShadowsRef = injectNgtRef<Group>();\n\n @Input() set opacity(opacity: number) {\n this.set({ opacity });\n }\n\n @Input() set width(width: number) {\n this.set({ width });\n }\n\n @Input() set height(height: number) {\n this.set({ height });\n }\n\n @Input() set blur(blur: number) {\n this.set({ blur });\n }\n\n @Input() set far(far: number) {\n this.set({ far });\n }\n\n @Input() set smooth(smooth: boolean) {\n this.set({ smooth });\n }\n\n @Input() set resolution(resolution: number) {\n this.set({ resolution });\n }\n\n @Input() set frames(frames: number) {\n this.set({ frames });\n }\n\n @Input() set scale(scale: number | [x: number, y: number]) {\n this.set({ scale });\n }\n\n @Input() set color(color: THREE.ColorRepresentation) {\n this.set({ color });\n }\n\n @Input() set depthWrite(depthWrite: boolean) {\n this.set({ depthWrite });\n }\n\n @Input() set renderOrder(renderOrder: number) {\n this.set({ renderOrder });\n }\n\n readonly Math = Math;\n readonly #store = inject(NgtStore);\n\n readonly shadowCameraRef = injectNgtRef<OrthographicCamera>();\n\n readonly #scale = this.select('scale');\n readonly #width = this.select('width');\n readonly #height = this.select('height');\n readonly #far = this.select('far');\n readonly #resolution = this.select('resolution');\n readonly #color = this.select('color');\n\n readonly #scaledWidth = computed(() => {\n const scale = this.#scale();\n return this.#width() * (Array.isArray(scale) ? scale[0] : scale || 1);\n });\n readonly #scaledHeight = computed(() => {\n const scale = this.#scale();\n return this.#height() * (Array.isArray(scale) ? scale[1] : scale || 1);\n });\n\n readonly encoding = this.#store.select('gl', 'outputEncoding');\n readonly shadowRenderOrder = this.select('renderOrder');\n readonly shadowOpacity = this.select('opacity');\n readonly shadowDepthWrite = this.select('depthWrite');\n\n readonly cameraArgs = computed(() => {\n const width = this.#scaledWidth();\n const height = this.#scaledHeight();\n return [-width / 2, width / 2, height / 2, -height / 2, 0, this.#far()];\n });\n readonly contactShadows = computed(() => {\n const color = this.#color();\n const resolution = this.#resolution();\n const renderTarget = new THREE.WebGLRenderTarget(resolution, resolution);\n const renderTargetBlur = new THREE.WebGLRenderTarget(resolution, resolution);\n renderTargetBlur.texture.generateMipmaps = renderTarget.texture.generateMipmaps = false;\n const planeGeometry = new THREE.PlaneGeometry(this.#scaledWidth(), this.#scaledHeight()).rotateX(Math.PI / 2);\n const blurPlane = new Mesh(planeGeometry);\n const depthMaterial = new THREE.MeshDepthMaterial();\n depthMaterial.depthTest = depthMaterial.depthWrite = false;\n depthMaterial.onBeforeCompile = (shader) => {\n shader.uniforms = {\n ...shader.uniforms,\n ucolor: { value: new THREE.Color(color) },\n };\n shader.fragmentShader = shader.fragmentShader.replace(\n `void main() {`, //\n `uniform vec3 ucolor;\n void main() {\n `\n );\n shader.fragmentShader = shader.fragmentShader.replace(\n 'vec4( vec3( 1.0 - fragCoordZ ), opacity );',\n // Colorize the shadow, multiply by the falloff so that the center can remain darker\n 'vec4( ucolor * fragCoordZ * 2.0, ( 1.0 - fragCoordZ ) * 1.0 );'\n );\n };\n\n const horizontalBlurMaterial = new THREE.ShaderMaterial(HorizontalBlurShader);\n const verticalBlurMaterial = new THREE.ShaderMaterial(VerticalBlurShader);\n verticalBlurMaterial.depthTest = horizontalBlurMaterial.depthTest = false;\n\n return {\n renderTarget,\n planeGeometry,\n depthMaterial,\n blurPlane,\n horizontalBlurMaterial,\n verticalBlurMaterial,\n renderTargetBlur,\n };\n });\n\n constructor() {\n super({\n scale: 10,\n frames: Infinity,\n opacity: 1,\n width: 1,\n height: 1,\n blur: 1,\n far: 10,\n resolution: 512,\n smooth: true,\n color: '#000000',\n depthWrite: false,\n renderOrder: 0,\n });\n injectBeforeRender(this.#onBeforeRender.bind(this, 0));\n }\n\n #onBeforeRender(count: number, { scene, gl }: NgtRenderState) {\n const { frames = Infinity, blur = 1, smooth = true } = this.get();\n const { depthMaterial, renderTarget } = this.contactShadows();\n const shadowCamera = this.shadowCameraRef.nativeElement;\n if (shadowCamera && (frames === Infinity || count < frames)) {\n const initialBackground = scene.background;\n scene.background = null;\n const initialOverrideMaterial = scene.overrideMaterial;\n scene.overrideMaterial = depthMaterial;\n gl.setRenderTarget(renderTarget);\n gl.render(scene, shadowCamera);\n scene.overrideMaterial = initialOverrideMaterial;\n\n this.#blurShadows(blur);\n if (smooth) this.#blurShadows(blur * 0.4);\n\n gl.setRenderTarget(null);\n scene.background = initialBackground;\n count++;\n }\n }\n\n #blurShadows(blur: number) {\n const { blurPlane, horizontalBlurMaterial, verticalBlurMaterial, renderTargetBlur, renderTarget } =\n this.contactShadows();\n const gl = this.#store.get('gl');\n const shadowCamera = this.shadowCameraRef.nativeElement;\n\n blurPlane.visible = true;\n\n blurPlane.material = horizontalBlurMaterial;\n horizontalBlurMaterial.uniforms['tDiffuse'].value = renderTarget.texture;\n horizontalBlurMaterial.uniforms['h'].value = (blur * 1) / 256;\n\n gl.setRenderTarget(renderTargetBlur);\n gl.render(blurPlane, shadowCamera);\n\n blurPlane.material = verticalBlurMaterial;\n verticalBlurMaterial.uniforms['tDiffuse'].value = renderTargetBlur.texture;\n verticalBlurMaterial.uniforms['v'].value = (blur * 1) / 256;\n\n gl.setRenderTarget(renderTarget);\n gl.render(blurPlane, shadowCamera);\n\n blurPlane.visible = false;\n }\n}\n","export const ngtsEnvironmentPresetsObj = {\n sunset: 'venice/venice_sunset_1k.hdr',\n dawn: 'kiara/kiara_1_dawn_1k.hdr',\n night: 'dikhololo/dikhololo_night_1k.hdr',\n warehouse: 'empty-wharehouse/empty_warehouse_01_1k.hdr',\n forest: 'forrest-slope/forest_slope_1k.hdr',\n apartment: 'lebombo/lebombo_1k.hdr',\n studio: 'studio-small-3/studio_small_03_1k.hdr',\n city: 'potsdamer-platz/potsdamer_platz_1k.hdr',\n park: 'rooitou/rooitou_park_1k.hdr',\n lobby: 'st-fagans/st_fagans_interior_1k.hdr',\n};\n\nexport type NgtsEnvironmentPresetsType = keyof typeof ngtsEnvironmentPresetsObj;\n","import { Directive, ElementRef, Input, computed } from '@angular/core';\nimport { NgtSignalStore } from 'angular-three';\nimport { Loader, Scene, Texture, TextureEncoding } from 'three';\nimport { NgtsEnvironmentPresetsType } from './assets';\n\nexport interface NgtsEnvironmentInputState {\n frames?: number;\n near?: number;\n far?: number;\n resolution?: number;\n background?: boolean | 'only';\n blur?: number;\n map?: Texture;\n files?: string | string[];\n path?: string;\n preset?: NgtsEnvironmentPresetsType;\n scene?: Scene | ElementRef<Scene>;\n extensions?: (loader: Loader) => void;\n ground?: boolean | { radius?: number; height?: number; scale?: number };\n encoding?: TextureEncoding;\n}\n\n@Directive()\nexport abstract class NgtsEnvironmentInput extends NgtSignalStore<NgtsEnvironmentInputState> {\n @Input() set frames(frames: NgtsEnvironmentInputState['frames']) {\n this.set({ frames });\n }\n\n @Input() set near(near: NgtsEnvironmentInputState['near']) {\n this.set({ near });\n }\n\n @Input() set far(far: NgtsEnvironmentInputState['far']) {\n this.set({ far });\n }\n\n @Input() set resolution(resolution: NgtsEnvironmentInputState['resolution']) {\n this.set({ resolution });\n }\n\n @Input() set background(background: NgtsEnvironmentInputState['background']) {\n this.set({ background });\n }\n\n @Input() set blur(blur: NgtsEnvironmentInputState['blur']) {\n this.set({ blur });\n }\n\n @Input() set map(map: NgtsEnvironmentInputState['map']) {\n this.set({ map });\n }\n\n @Input() set files(files: NgtsEnvironmentInputState['files']) {\n this.set({ files });\n }\n\n @Input() set path(path: NgtsEnvironmentInputState['path']) {\n this.set({ path });\n }\n\n @Input() set preset(preset: NgtsEnvironmentInputState['preset']) {\n this.set({ preset });\n }\n\n @Input() set scene(scene: NgtsEnvironmentInputState['scene']) {\n this.set({ scene });\n }\n\n @Input() set extensions(extensions: NgtsEnvironmentInputState['extensions']) {\n this.set({ extensions });\n }\n\n @Input() set ground(ground: NgtsEnvironmentInputState['ground']) {\n this.set({ ground });\n }\n\n @Input() set encoding(encoding: NgtsEnvironmentInputState['encoding']) {\n this.set({ encoding });\n }\n\n readonly environmentFrames = this.select('frames');\n readonly environmentNear = this.select('near');\n readonly environmentFar = this.select('far');\n readonly environmentResolution = this.select('resolution');\n readonly environmentBackground = this.select('background');\n readonly environmentBlur = this.select('blur');\n readonly environmentMap = this.select('map');\n readonly environmentFiles = this.select('files');\n readonly environmentPath = this.select('path');\n readonly environmentPreset = this.select('preset');\n readonly environmentScene = this.select('scene');\n readonly environmentExtensions = this.select('extensions');\n readonly environmentGround = this.select('ground');\n readonly environmentEncoding = this.select('encoding');\n\n readonly environmentParams = computed(() => ({\n files: this.environmentFiles(),\n path: this.environmentPath(),\n preset: this.environmentPreset(),\n extensions: this.environmentExtensions(),\n encoding: this.environmentEncoding(),\n }));\n}\n","import {\n ChangeDetectorRef,\n DestroyRef,\n ElementRef,\n Injector,\n computed,\n effect,\n inject,\n runInInjectionContext,\n} from '@angular/core';\nimport { assertInjectionContext, injectNgtLoader, injectNgtRef, is, safeDetectChanges } from 'angular-three';\nimport {\n CubeReflectionMapping,\n CubeTexture,\n CubeTextureLoader,\n EquirectangularReflectionMapping,\n LinearEncoding,\n sRGBEncoding,\n} from 'three';\nimport { RGBELoader } from 'three-stdlib';\nimport { ngtsEnvironmentPresetsObj } from './assets';\nimport { type NgtsEnvironmentInput } from './environment-input';\n\nfunction resolveScene(scene: THREE.Scene | ElementRef<THREE.Scene>) {\n return is.ref(scene) ? scene.nativeElement : scene;\n}\n\nexport function setEnvProps(\n background: boolean | 'only',\n scene: THREE.Scene | ElementRef<THREE.Scene> | undefined,\n defaultScene: THREE.Scene,\n texture: THREE.Texture,\n blur = 0\n) {\n const target = resolveScene(scene || defaultScene);\n const oldbg = target.background;\n const oldenv = target.environment;\n const oldBlur = target.backgroundBlurriness || 0;\n\n if (background !== 'only') target.environment = texture;\n if (background) target.background = texture;\n if (background && target.backgroundBlurriness !== undefined) target.backgroundBlurriness = blur;\n\n return () => {\n if (background !== 'only') target.environment = oldenv;\n if (background) target.background = oldbg;\n if (background && target.backgroundBlurriness !== undefined) target.backgroundBlurriness = oldBlur;\n };\n}\n\ntype NgtsInjectEnvironmentParams = Partial<\n Pick<NgtsEnvironmentInput, 'files' | 'path' | 'preset' | 'extensions' | 'encoding'>\n>;\n\nconst CUBEMAP_ROOT = 'https://market-assets.fra1.cdn.digitaloceanspaces.com/market-assets/hdris/';\nexport function injectNgtsEnvironment(paramsFactory: () => Partial<NgtsInjectEnvironmentParams>, injector?: Injector) {\n injector = assertInjectionContext(injectNgtsEnvironment, injector);\n return runInInjectionContext(injector, () => {\n const cdr = inject(ChangeDetectorRef);\n const textureRef = injectNgtRef<THREE.Texture | CubeTexture>();\n\n inject(DestroyRef).onDestroy(() => {\n textureRef.untracked.dispose();\n });\n\n const params = computed(() => {\n let { files, preset, encoding, path, extensions } = paramsFactory() as NgtsInjectEnvironmentParams;\n\n if (files == null) {\n files = ['/px.png', '/nx.png', '/py.png', '/ny.png', '/pz.png', '/nz.png'];\n }\n\n if (path == null) {\n path = '';\n }\n\n if (preset) {\n if (!(preset in ngtsEnvironmentPresetsObj))\n throw new Error('Preset must be one of: ' + Object.keys(ngtsEnvironmentPresetsObj).join(', '));\n files = ngtsEnvironmentPresetsObj[preset];\n path = CUBEMAP_ROOT;\n }\n\n return { files, preset, encoding, path, extensions } as NgtsInjectEnvironmentParams;\n });\n\n const loaderResult = injectNgtLoader(\n // @ts-expect-error\n () => {\n const { files } = params();\n return Array.isArray(files) ? CubeTextureLoader : RGBELoader;\n },\n () => {\n const { files } = params();\n return Array.isArray(files) ? [files] : files;\n },\n {\n extensions: (loader) => {\n const { path, extensions } = params();\n loader.setPath(path);\n if (extensions) extensions(loader);\n },\n }\n );\n\n effect(\n () => {\n const result = loaderResult();\n if (!result) return;\n const { files, encoding } = params();\n const texture: THREE.Texture | THREE.CubeTexture = Array.isArray(files) ? result[0] : result;\n texture.mapping = Array.isArray(files) ? CubeReflectionMapping : EquirectangularReflectionMapping;\n texture.encoding = encoding ?? Array.isArray(files) ? sRGBEncoding : LinearEncoding;\n\n textureRef.nativeElement = texture;\n safeDetectChanges(cdr);\n },\n { allowSignalWrites: true }\n );\n\n return textureRef;\n });\n}\n","import { Directive, Input, computed, effect, inject } from '@angular/core';\nimport { NgtStore, requestAnimationFrameInInjectionContext } from 'angular-three';\nimport { NgtsEnvironmentInput } from './environment-input';\nimport { injectNgtsEnvironment, setEnvProps } from './utils';\n\n@Directive({\n selector: 'ngts-environment-cube',\n standalone: true,\n})\nexport class NgtsEnvironmentCube {\n protected readonly environmentInput = inject(NgtsEnvironmentInput);\n readonly #store = inject(NgtStore);\n readonly textureRef = injectNgtsEnvironment(this.environmentInput.environmentParams);\n\n @Input() set background(background: boolean) {\n this.environmentInput.set({ background });\n }\n\n constructor() {\n this.environmentInput.patch({ background: false });\n requestAnimationFrameInInjectionContext(() => {\n this.#setEnvProps();\n });\n }\n\n #setEnvProps() {\n const scene = this.#store.select('scene');\n const trigger = computed(() => ({\n defaultScene: scene(),\n scene: this.environmentInput.environmentScene(),\n background: this.environmentInput.environmentBackground(),\n blur: this.environmentInput.environmentBlur(),\n texture: this.textureRef.nativeElement,\n }));\n\n effect((onCleanup) => {\n const { background, defaultScene, scene, blur, texture } = trigger();\n if (!texture) return;\n onCleanup(setEnvProps(background!, scene, defaultScene, texture, blur));\n });\n }\n}\n","import { Directive, Input, computed, effect, inject } from '@angular/core';\nimport { NgtStore, requestAnimationFrameInInjectionContext } from 'angular-three';\nimport { NgtsEnvironmentInput } from './environment-input';\nimport { setEnvProps } from './utils';\n\n@Directive({\n selector: 'ngts-environment-map',\n standalone: true,\n})\nexport class NgtsEnvironmentMap {\n protected readonly environmentInput = inject(NgtsEnvironmentInput);\n readonly #store = inject(NgtStore);\n\n @Input() set map(map: THREE.Texture) {\n this.environmentInput.set({ map });\n }\n\n @Input() set background(background: boolean) {\n this.environmentInput.set({ background });\n }\n\n constructor() {\n this.environmentInput.patch({ background: false });\n requestAnimationFrameInInjectionContext(() => {\n this.#setEnvProps();\n });\n }\n\n #setEnvProps() {\n const scene = this.#store.select('scene');\n const trigger = computed(() => ({\n defaultScene: scene(),\n scene: this.environmentInput.environmentScene(),\n background: this.environmentInput.environmentBackground(),\n blur: this.environmentInput.environmentBlur(),\n texture: this.environmentInput.environmentMap(),\n }));\n\n effect((onCleanup) => {\n const { background, defaultScene, scene, blur, texture } = trigger();\n if (!texture) return;\n onCleanup(setEnvProps(background!, scene, defaultScene, texture, blur));\n });\n }\n}\n","import { Component, computed, CUSTOM_ELEMENTS_SCHEMA, inject } from '@angular/core';\nimport { extend, NgtArgs } from 'angular-three';\nimport { GroundProjectedEnv } from 'three-stdlib';\nimport { NgtsEnvironmentInput } from './environment-input';\nimport { NgtsEnvironmentMap } from './environment-map';\nimport { injectNgtsEnvironment } from './utils';\n\nextend({ GroundProjectedEnv });\n\n@Component({\n selector: 'ngts-environment-ground',\n standalone: true,\n template: `\n <ngts-environment-map [map]=\"texture()\" [background]=\"!!environmentInput.environmentBackground()\" />\n <ngt-ground-projected-env *args=\"groundArgs()\" [scale]=\"scale()\" [height]=\"height()\" [radius]=\"radius()\" />\n `,\n imports: [NgtsEnvironmentMap, NgtArgs],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsEnvironmentGround {\n protected readonly environmentInput = inject(NgtsEnvironmentInput);\n readonly #defaultTexture = injectNgtsEnvironment(this.environmentInput.environmentParams);\n\n readonly texture = computed(() => {\n const defaultTexture = this.#defaultTexture.nativeElement;\n return this.environmentInput.environmentMap() || defaultTexture;\n });\n\n readonly groundArgs = computed(() => (this.texture() ? [this.texture()] : []));\n readonly height = computed(() => (this.environmentInput.environmentGround() as any)?.height);\n readonly radius = computed(() => (this.environmentInput.environmentGround() as any)?.radius);\n readonly scale = computed(() => (this.environmentInput.environmentGround() as any)?.scale ?? 1000);\n}\n","import { NgIf } from '@angular/common';\nimport { Component, computed, CUSTOM_ELEMENTS_SCHEMA, effect, inject } from '@angular/core';\nimport {\n extend,\n injectBeforeRender,\n injectNgtRef,\n NgtArgs,\n NgtPortal,\n NgtPortalContent,\n NgtRenderState,\n NgtStore,\n prepare,\n requestAnimationFrameInInjectionContext,\n} from 'angular-three';\nimport * as THREE from 'three';\nimport { CubeCamera } from 'three';\nimport { NgtsEnvironmentCube } from './environment-cube';\nimport { NgtsEnvironmentInput } from './environment-input';\nimport { NgtsEnvironmentMap } from './environment-map';\nimport { setEnvProps } from './utils';\n\nextend({ CubeCamera });\n\n@Component({\n selector: 'ngts-environment-portal',\n standalone: true,\n template: `\n <ngt-portal [container]=\"virtualSceneRef\">\n <ng-template ngtPortalContent>\n <ng-content />\n <ngt-cube-camera *args=\"cameraArgs()\" [ref]=\"cubeCameraRef\" />\n <ng-container\n *ngIf=\"\n environmentInput.environmentFiles() || environmentInput.environmentPreset();\n else environmentMap\n \"\n >\n <ngts-environment-cube [background]=\"true\" />\n </ng-container>\n <ng-template #environmentMap>\n <ngts-environment-map\n *ngIf=\"environmentInput.environmentMap() as map\"\n [background]=\"true\"\n [map]=\"map\"\n />\n </ng-template>\n </ng-template>\n </ngt-portal>\n `,\n imports: [NgtPortal, NgtPortalContent, NgtsEnvironmentMap, NgtsEnvironmentCube, NgIf, NgtArgs],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsEnvironmentPortal {\n protected readonly environmentInput = inject(NgtsEnvironmentInput);\n readonly #store = inject(NgtStore);\n\n readonly virtualSceneRef = injectNgtRef<THREE.Scene>(prepare(new THREE.Scene()));\n readonly cubeCameraRef = injectNgtRef<THREE.CubeCamera>();\n\n readonly #fbo = computed(() => {\n const fbo = new THREE.WebGLCubeRenderTarget(this.environmentInput.environmentResolution());\n fbo.texture.type = THREE.HalfFloatType;\n return fbo;\n });\n readonly cameraArgs = computed(() => [\n this.environmentInput.environmentNear()!,\n this.environmentInput.environmentFar()!,\n this.#fbo(),\n ]);\n\n constructor() {\n this.environmentInput.patch({\n near: 1,\n far: 1000,\n resolution: 256,\n frames: 1,\n background: false,\n preset: undefined,\n });\n requestAnimationFrameInInjectionContext(() => {\n this.#setEnvProps();\n });\n injectBeforeRender(this.#onBeforeRender.bind(this, 1));\n }\n\n #setEnvProps() {\n const gl = this.#store.select('gl');\n const scene = this.#store.select('scene');\n\n const trigger = computed(() => ({\n gl: gl(),\n defaultScene: scene(),\n fbo: this.#fbo(),\n scene: this.environmentInput.environmentScene(),\n background: this.environmentInput.environmentBackground(),\n frames: this.environmentInput.environmentFrames(),\n blur: this.environmentInput.environmentBlur(),\n virtualScene: this.virtualSceneRef.nativeElement,\n cubeCamera: this.cubeCameraRef.nativeElement,\n }));\n\n effect((onCleanup) => {\n const { virtualScene, blur, frames, background, scene, fbo, defaultScene, gl, cubeCamera } = trigger();\n if (!cubeCamera || !virtualScene) return;\n if (frames === 1) cubeCamera.update(gl, virtualScene);\n onCleanup(setEnvProps(background!, scene, defaultScene, fbo.texture, blur));\n });\n }\n\n #onBeforeRender(count: number, { gl }: NgtRenderState) {\n const { frames } = this.environmentInput.get();\n if (frames === Infinity || count < frames!) {\n const camera = this.cubeCameraRef.nativeElement;\n const virtualScene = this.virtualSceneRef.nativeElement;\n if (camera && virtualScene) {\n camera.update(gl, virtualScene);\n count++;\n }\n }\n }\n}\n","import { NgIf, NgTemplateOutlet } from '@angular/common';\nimport { CUSTOM_ELEMENTS_SCHEMA, Component, ContentChild, Directive, TemplateRef } from '@angular/core';\nimport { NgtsEnvironmentCube } from './environment-cube';\nimport { NgtsEnvironmentGround } from './environment-ground';\nimport { NgtsEnvironmentInput } from './environment-input';\nimport { NgtsEnvironmentMap } from './environment-map';\nimport { NgtsEnvironmentPortal } from './environment-portal';\n\n@Directive({ selector: 'ng-template[ngtsEnvironmentContent]', standalone: true })\nexport class NgtsEnvironmentContent {}\n\n@Component({\n selector: 'ngts-environment',\n standalone: true,\n template: `\n <ngts-environment-ground *ngIf=\"environmentGround(); else noGround\" />\n <ng-template #noGround>\n <ngts-environment-map\n *ngIf=\"environmentMap() as map; else noMap\"\n [map]=\"map\"\n [background]=\"!!environmentBackground()\"\n />\n <ng-template #noMap>\n <ngts-environment-portal *ngIf=\"content; else noPortal\">\n <ng-container *ngTemplateOutlet=\"content\" />\n </ngts-environment-portal>\n <ng-template #noPortal>\n <ngts-environment-cube [background]=\"!!environmentBackground()\" />\n </ng-template>\n </ng-template>\n </ng-template>\n `,\n imports: [\n NgtsEnvironmentMap,\n NgtsEnvironmentGround,\n NgtsEnvironmentCube,\n NgtsEnvironmentPortal,\n NgIf,\n NgTemplateOutlet,\n ],\n providers: [{ provide: NgtsEnvironmentInput, useExisting: NgtsEnvironment }],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsEnvironment extends NgtsEnvironmentInput {\n @ContentChild(NgtsEnvironmentContent, { read: TemplateRef }) content?: TemplateRef<unknown>;\n}\n","import { Component, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';\nimport { extend, injectBeforeRender, injectNgtRef, NgtRenderState, NgtSignalStore, type NgtGroup } from 'angular-three';\nimport * as THREE from 'three';\nimport { Group } from 'three';\n\nextend({ Group });\n\nexport type NgtsFloatState = {\n enabled: boolean;\n speed: number;\n floatIntensity: number;\n rotationIntensity: number;\n floatingRange: [number?, number?];\n};\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ngts-float': NgtsFloatState & NgtGroup;\n }\n}\n\n@Component({\n selector: 'ngts-float',\n standalone: true,\n template: `\n <ngt-group ngtCompound>\n <ngt-group [ref]=\"floatRef\">\n <ng-content />\n </ngt-group>\n </ngt-group>\n `,\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsFloat extends NgtSignalStore<NgtsFloatState> {\n readonly #offset = Math.random() * 10000;\n\n @Input() floatRef = injectNgtRef<THREE.Group>();\n\n @Input() set enabled(enabled: boolean) {\n this.set({ enabled });\n }\n\n @Input() set speed(speed: number) {\n this.set({ speed });\n }\n\n @Input() set rotationIntensity(rotationIntensity: number) {\n this.set({ rotationIntensity });\n }\n\n @Input() set floatIntensity(floatIntensity: number) {\n this.set({ floatIntensity });\n }\n\n @Input() set floatingRange(floatingRange: [number?, number?]) {\n this.set({ floatingRange });\n }\n\n constructor() {\n super({ speed: 1, rotationIntensity: 1, floatIntensity: 1, floatingRange: [-0.1, 0.1], enabled: true });\n injectBeforeRender(this.#onBeforeRender.bind(this));\n }\n\n #onBeforeRender({ clock }: NgtRenderState) {\n const float = this.floatRef.untracked;\n if (!float) return;\n const { enabled, speed, floatingRange, floatIntensity, rotationIntensity } = this.get();\n if (!enabled || speed === 0) return;\n\n const t = this.#offset + clock.getElapsedTime();\n float.rotation.x = (Math.cos((t / 4) * speed) / 8) * rotationIntensity;\n float.rotation.y = (Math.sin((t / 4) * speed) / 8) * rotationIntensity;\n float.rotation.z = (Math.sin((t / 4) * speed) / 20) * rotationIntensity;\n let yPosition = Math.sin((t / 4) * speed) / 10;\n yPosition = THREE.MathUtils.mapLinear(yPosition, -0.1, 0.1, floatingRange[0] ?? -0.1, floatingRange[1] ?? 0.1);\n float.position.y = yPosition * floatIntensity;\n }\n}\n","import { Component, computed, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';\nimport { injectNgtRef, NgtArgs, NgtSignalStore } from 'angular-three';\nimport * as THREE from 'three';\nimport { Sky } from 'three-stdlib';\n\nfunction calcPosFromAngles(inclination: number, azimuth: number, vector = new THREE.Vector3()) {\n const theta = Math.PI * (inclination - 0.5);\n const phi = 2 * Math.PI * (azimuth - 0.5);\n\n vector.x = Math.cos(phi);\n vector.y = Math.sin(theta);\n vector.z = Math.sin(phi);\n\n return vector;\n}\n\nexport interface NgtsSkyState {\n distance: number;\n sunPosition: THREE.Vector3 | Parameters<THREE.Vector3['set']>;\n inclination: number;\n azimuth: number;\n mieCoefficient: number;\n mieDirectionalG: number;\n rayleigh: number;\n turbidity: number;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ngts-sky': NgtsSkyState & Sky;\n }\n}\n\n@Component({\n selector: 'ngts-sky',\n standalone: true,\n template: `\n <ngt-primitive ngtCompound *args=\"[sky]\" [ref]=\"skyRef\" [scale]=\"scale()\">\n <ngt-value [rawValue]=\"skyMieCoefficient()\" attach=\"material.uniforms.mieCoefficient.value\" />\n <ngt-value [rawValue]=\"skyMieDirectionalG()\" attach=\"material.uniforms.mieDirectionalG.value\" />\n <ngt-value [rawValue]=\"skyRayleigh()\" attach=\"material.uniforms.rayleigh.value\" />\n <ngt-value [rawValue]=\"calculatedSunPosition()\" attach=\"material.uniforms.sunPosition.value\" />\n <ngt-value [rawValue]=\"skyTurbidity()\" attach=\"material.uniforms.turbidity.value\" />\n </ngt-primitive>\n `,\n imports: [NgtArgs],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsSky extends NgtSignalStore<NgtsSkyState> {\n @Input() skyRef = injectNgtRef<Sky>();\n\n @Input() set distance(distance: number) {\n this.set({ distance });\n }\n\n @Input() set sunPosition(sunPosition: THREE.Vector3 | Parameters<THREE.Vector3['set']>) {\n this.set({ sunPosition });\n }\n\n @Input() set inclination(inclination: number) {\n this.set({ inclination });\n }\n\n @Input() set azimuth(azimuth: number) {\n this.set({ azimuth });\n }\n\n @Input() set mieCoefficient(mieCoefficient: number) {\n this.set({ mieCoefficient });\n }\n\n @Input() set mieDirectionalG(mieDirectionalG: number) {\n this.set({ mieDirectionalG });\n }\n\n @Input() set rayleigh(rayleigh: number) {\n this.set({ rayleigh });\n }\n\n @Input() set turbidity(turbidity: number) {\n this.set({ turbidity });\n }\n\n readonly #inclination = this.select('inclination');\n readonly #azimuth = this.select('azimuth');\n readonly #sunPosition = this.select('sunPosition');\n readonly #distance = this.select('distance');\n\n readonly sky = new Sky();\n\n readonly skyMieCoefficient = this.select('mieCoefficient');\n readonly skyMieDirectionalG = this.select('mieDirectionalG');\n readonly skyRayleigh = this.select('rayleigh');\n readonly skyTurbidity = this.select('turbidity');\n\n readonly calculatedSunPosition = computed(\n () => this.#sunPosition() || calcPosFromAngles(this.#inclination(), this.#azimuth())\n );\n readonly scale = computed(() => new THREE.Vector3().setScalar(this.#distance()));\n\n constructor() {\n super({\n inclination: 0.6,\n azimuth: 0.1,\n distance: 1000,\n mieCoefficient: 0.005,\n mieDirectionalG: 0.8,\n rayleigh: 0.5,\n turbidity: 10,\n });\n }\n}\n","import { Component, computed, CUSTOM_ELEMENTS_SCHEMA, inject, Input, isSignal, Signal } from '@angular/core';\nimport {\n extend,\n injectBeforeRender,\n injectNgtRef,\n NgtArgs,\n NgtSignalStore,\n NgtStore,\n type NgtRenderState,\n} from 'angular-three';\nimport { SparklesMaterial } from 'angular-three-soba/shaders';\nimport * as THREE from 'three';\nimport { BufferAttribute, BufferGeometry, Color, MathUtils, Points, Vector2, Vector3, Vector4 } from 'three';\n\nextend({ SparklesMaterial, Points, BufferGeometry, BufferAttribute });\n\nconst isFloat32Array = (def: any): def is Float32Array => def && (def as Float32Array).constructor === Float32Array;\nconst expandColor = (v: THREE.Color) => [v.r, v.g, v.b];\nconst isVector = (v: any): v is THREE.Vector2 | THREE.Vector3 | THREE.Vector4 =>\n v instanceof Vector2 || v instanceof Vector3 || v instanceof Vector4;\nconst normalizeVector = (v: any): number[] => {\n if (Array.isArray(v)) return v;\n else if (isVector(v)) return v.toArray();\n return [v, v, v] as number[];\n};\n\nfunction usePropAsIsOrAsAttribute<T = any>(count: number, prop?: T | Float32Array, setDefault?: (v: T) => number) {\n if (prop !== undefined) {\n if (isFloat32Array(prop)) {\n return prop as Float32Array;\n } else {\n if (prop instanceof Color) {\n const a = Array.from({ length: count * 3 }, () => expandColor(prop)).flat();\n return Float32Array.from(a);\n } else if (isVector(prop) || Array.isArray(prop)) {\n const a = Array.from({ length: count * 3 }, () => normalizeVector(prop)).flat();\n return Float32Array.from(a);\n }\n return Float32Array.from({ length: count }, () => prop as unknown as number);\n }\n }\n return Float32Array.from({ length: count }, setDefault!);\n}\n\nexport interface NgtsSparklesState {\n /** Number of particles (default: 100) */\n count: number;\n /** Speed of particles (default: 1) */\n speed: number | Float32Array;\n /** Opacity of particles (default: 1) */\n opacity: number | Float32Array;\n /** Color of particles (default: 100) */\n color?: THREE.ColorRepresentation | Float32Array;\n /** Size of particles (default: randomized between 0 and 1) */\n size?: number | Float32Array;\n /** The space the particles occupy (default: 1) */\n scale: number | [number, number, number] | THREE.Vector3;\n /** Movement factor (default: 1) */\n noise: number | [number, number, number] | THREE.Vector3 | Float32Array;\n}\n\n@Component({\n selector: 'ngts-sparkles',\n standalone: true,\n template: `\n <ngt-points ngtCompount [ref]=\"pointsRef\">\n <ngt-buffer-geometry>\n <ngt-buffer-attribute *args=\"[positions(), 3]\" attach=\"attributes.position\" />\n <ngt-buffer-attribute *args=\"[sizes(), 1]\" attach=\"attributes.size\" />\n <ngt-buffer-attribute *args=\"[opacities(), 1]\" attach=\"attributes.opacity\" />\n <ngt-buffer-attribute *args=\"[speeds(), 1]\" attach=\"attributes.speed\" />\n <ngt-buffer-attribute *args=\"[colors(), 3]\" attach=\"attributes.color\" />\n <ngt-buffer-attribute *args=\"[noises(), 3]\" attach=\"attributes.noise\" />\n </ngt-buffer-geometry>\n <ngt-sparkles-material [ref]=\"materialRef\" [transparent]=\"true\" [depthWrite]=\"false\" [pixelRatio]=\"dpr()\" />\n </ngt-points>\n `,\n imports: [NgtArgs],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsSparkles extends NgtSignalStore<NgtsSparklesState> {\n @Input() pointsRef = injectNgtRef<Points>();\n\n /** Number of particles (default: 100) */\n @Input() set count(count: number) {\n this.set({ count });\n }\n\n /** Speed of particles (default: 1) */\n @Input() set speed(speed: number | Float32Array) {\n this.set({ speed });\n }\n\n /** Opacity of particles (default: 1) */\n @Input() set opacity(opacity: number | Float32Array) {\n this.set({ opacity });\n }\n\n /** Color of particles (default: 100) */\n @Input() set color(color: THREE.ColorRepresentation | Float32Array) {\n this.set({ color });\n }\n\n /** Size of particles (default: randomized between 0 and 1) */\n @Input() set size(size: number | Float32Array) {\n this.set({ size });\n }\n\n /** The space the particles occupy (default: 1) */\n @Input() set scale(scale: number | [number, number, number] | THREE.Vector3) {\n this.set({ scale });\n }\n\n /** Movement factor (default: 1) */\n @Input() set noise(noise: number | [number, number, number] | THREE.Vector3 | Float32Array) {\n this.set({ noise });\n }\n\n readonly #store = inject(NgtStore);\n\n readonly #count = this.select('count');\n readonly #scale = this.select('scale');\n readonly #color = this.select('color');\n\n readonly materialRef = injectNgtRef<InstanceType<typeof SparklesMaterial>>();\n\n readonly dpr = this.#store.select('viewport', 'dpr');\n readonly positions = computed(() =>\n Float32Array.from(\n Array.from({ length: this.#count() }, () =>\n normalizeVector(this.#scale()).map(MathUtils.randFloatSpread)\n ).flat()\n )\n );\n\n readonly sizes = this.#getComputed('size', this.#count, Math.random);\n readonly opacities = this.#getComputed('opacity', this.#count);\n readonly speeds = this.#getComputed('speed', this.#count);\n readonly noises = this.#getComputed('noise', () => this.#count() * 3);\n readonly colors = this.#getComputed(\n computed(() => {\n const color = this.#color();\n return !isFloat32Array(color) ? new THREE.Color(color) : color;\n }),\n () => (this.#color() === undefined ? this.#count() * 3 : this.#count()),\n () => 1\n );\n\n #getComputed<TKey extends keyof NgtsSparklesState>(\n nameOrComputed: TKey | Signal<NgtsSparklesState[TKey]>,\n count: () => number,\n setDefault?: (value: NgtsSparklesState[TKey]) => number\n ) {\n const value =\n typeof nameOrComputed !== 'string' && isSignal(nameOrComputed)\n ? nameOrComputed\n : this.select(nameOrComputed);\n return computed(() => usePropAsIsOrAsAttribute(count(), value(), setDefault));\n }\n\n constructor() {\n super({\n noise: 1,\n count: 100,\n speed: 1,\n opacity: 1,\n scale: 1,\n });\n injectBeforeRender(this.#onBeforeRender.bind(this));\n }\n\n #onBeforeRender({ clock }: NgtRenderState) {\n if (!this.materialRef.nativeElement) return;\n this.materialRef.nativeElement.uniforms['time'].value = clock.elapsedTime;\n }\n}\n","import { Directive, Input } from '@angular/core';\nimport { NgtSignalStore } from 'angular-three';\n\nexport interface NgtsSpotLightInputState {\n depthBuffer?: THREE.DepthTexture;\n angle: number;\n distance: number;\n attenuation: number;\n anglePower: number;\n radiusTop: number;\n radiusBottom: number;\n opacity: number;\n color: string | number;\n debug: boolean;\n}\n\n@Directive()\nexport abstract class NgtsSpotLightInput extends NgtSignalStore<NgtsSpotLightInputState> {\n @Input() set depthBuffer(depthBuffer: THREE.DepthTexture) {\n this.set({ depthBuffer });\n }\n\n @Input() set angle(angle: number) {\n this.set({ angle });\n }\n\n @Input() set distance(distance: number) {\n this.set({ distance });\n }\n\n @Input() set attenuation(attenuation: number) {\n this.set({ attenuation });\n }\n\n @Input() set anglePower(anglePower: number) {\n this.set({ anglePower });\n }\n\n @Input() set radiusTop(radiusTop: number) {\n this.set({ radiusTop });\n }\n\n @Input() set radiusBottom(radiusBottom: number) {\n this.set({ radiusBottom });\n }\n\n @Input() set opacity(opacity: number) {\n this.set({ opacity });\n }\n\n @Input() set color(color: string | number) {\n this.set({ color });\n }\n\n @Input() set debug(debug: boolean) {\n this.set({ debug });\n }\n\n readonly lightDebug = this.select('debug');\n readonly lightColor = this.select('color');\n readonly lightOpacity = this.select('opacity');\n readonly lightRadiusBottom = this.select('radiusBottom');\n readonly lightRadiusTop = this.select('radiusTop');\n readonly lightAnglePower = this.select('anglePower');\n readonly lightAttenuation = this.select('attenuation');\n readonly lightDistance = this.select('distance');\n readonly lightAngle = this.select('angle');\n readonly lightDepthBuffer = this.select('depthBuffer');\n}\n","import { Component, computed, CUSTOM_ELEMENTS_SCHEMA, inject } from '@angular/core';\nimport { extend, injectBeforeRender, injectNgtRef, NgtArgs, NgtStore } from 'angular-three';\nimport { SpotLightMaterial } from 'angular-three-soba/shaders';\nimport * as THREE from 'three';\nimport { Mesh } from 'three';\nimport { NgtsSpotLightInput } from './spot-light-input';\n\nextend({ Mesh });\n\n@Component({\n selector: 'ngts-volumetric-mesh',\n standalone: true,\n template: `\n <ngt-mesh [ref]=\"mesh\" [geometry]=\"geometry()\" [raycast]=\"nullRaycast\">\n <ngt-primitive *args=\"[material]\" attach=\"material\">\n <ngt-value [rawValue]=\"spotLightInput.lightOpacity()\" attach=\"uniforms.opacity.value\" />\n <ngt-value [rawValue]=\"spotLightInput.lightColor()\" attach=\"uniforms.lightColor.value\" />\n <ngt-value [rawValue]=\"spotLightInput.lightAttenuation()\" attach=\"uniforms.attenuation.value\" />\n <ngt-value [rawValue]=\"spotLightInput.lightAnglePower()\" attach=\"uniforms.anglePower.value\" />\n <ngt-value [rawvalue]=\"spotLightInput.lightDepthBuffer()\" attach=\"uniforms.depth.value\" />\n <ngt-value [rawvalue]=\"near()\" attach=\"uniforms.cameraNear.value\" />\n <ngt-value [rawvalue]=\"far()\" attach=\"uniforms.cameraFar.value\" />\n <ngt-value [rawvalue]=\"resolution()\" attach=\"uniforms.resolution.value\" />\n </ngt-primitive>\n </ngt-mesh>\n `,\n imports: [NgtArgs],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsVolumetricMesh {\n protected readonly spotLightInput = inject(NgtsSpotLightInput);\n readonly mesh = injectNgtRef<THREE.Mesh>();\n readonly material = new SpotLightMaterial();\n readonly nullRaycast = () => null;\n\n readonly #vec = new THREE.Vector3();\n readonly #store = inject(NgtStore);\n readonly #camera = this.#store.select('camera');\n readonly #size = this.#store.select('size');\n readonly #dpr = this.#store.select('viewport', 'dpr');\n\n readonly #normalizedRadiusTop = computed(() =>\n this.spotLightInput.lightRadiusTop() === undefined ? 0.1 : this.spotLightInput.lightRadiusTop()\n );\n readonly #normalizedRadiusBottom = computed(() =>\n this.spotLightInput.lightRadiusBottom() === undefined\n ? this.spotLightInput.lightAngle() * 7\n : this.spotLightInput.lightRadiusBottom()\n );\n readonly geometry = computed(() => {\n const distance = this.spotLightInput.lightDistance();\n const radiusTop = this.#normalizedRadiusTop();\n const radiusBottom = this.#normalizedRadiusBottom();\n\n const geometry = new THREE.CylinderGeometry(radiusTop, radiusBottom, distance, 128, 64, true);\n geometry.applyMatrix4(new THREE.Matrix4().makeTranslation(0, -distance / 2, 0));\n geometry.applyMatrix4(new THREE.Matrix4().makeRotationX(-Math.PI / 2));\n return geometry;\n });\n readonly near = computed(() => this.#camera().near);\n readonly far = computed(() => this.#camera().far);\n readonly resolution = computed(() =>\n this.spotLightInput.lightDepthBuffer()\n ? [this.#size().width * this.#dpr(), this.#size().height * this.#dpr()]\n : [0, 0]\n );\n\n constructor() {\n this.spotLightInput.patch({\n opacity: 1,\n color: 'white',\n distance: 5,\n angle: 0.15,\n attenuation: 5,\n anglePower: 5,\n });\n injectBeforeRender(() => {\n const mesh = this.mesh.nativeElement;\n if (!mesh) return;\n this.material.uniforms['spotPosition'].value.copy(mesh.getWorldPosition(this.#vec));\n mesh.lookAt((mesh.parent as THREE.SpotLight).target.getWorldPosition(this.#vec));\n });\n }\n}\n","import { NgIf } from '@angular/common';\nimport { CUSTOM_ELEMENTS_SCHEMA, Component, InjectionToken, Input } from '@angular/core';\nimport { NgtArgs, NgtInjectedRef, extend, injectNgtRef } from 'angular-three';\nimport { Group, SpotLight, SpotLightHelper } from 'three';\nimport { NgtsSpotLightInput } from './spot-light-input';\nimport { NgtsVolumetricMesh } from './volumetric-mesh';\n\nextend({ SpotLight, SpotLightHelper, Group });\n\ndeclare module './spot-light-input' {\n interface NgtsSpotLightInputState {\n volumetric: boolean;\n }\n}\n\nexport type NgtsSpotLightApi = {\n spotLight: NgtInjectedRef<THREE.SpotLight>;\n debug: () => boolean;\n};\n\nexport const NGTS_SPOT_LIGHT_API = new InjectionToken<NgtsSpotLightApi>('NgtsSpotLight API');\n\nfunction spotLightApiFactory(spotLight: NgtsSpotLight): NgtsSpotLightApi {\n return {\n spotLight: spotLight.spotLightRef,\n debug: spotLight.lightDebug,\n };\n}\n\n@Component({\n selector: 'ngts-spot-light',\n standalone: true,\n template: `\n <ngt-group>\n <ng-container *ngIf=\"lightDebug() && spotLightRef.nativeElement\">\n <ngt-spot-light-helper *args=\"[spotLightRef.nativeElement]\" />\n </ng-container>\n <ngt-spot-light\n [ref]=\"spotLightRef\"\n [color]=\"lightColor()\"\n [distance]=\"lightDistance()\"\n [angle]=\"lightAngle()\"\n [castShadow]=\"true\"\n ngtCompound\n >\n <ngts-volumetric-mesh *ngIf=\"showVolumetric()\" />\n </ngt-spot-light>\n <ng-content />\n </ngt-group>\n `,\n providers: [\n { provide: NGTS_SPOT_LIGHT_API, useFactory: spotLightApiFactory, deps: [NgtsSpotLight] },\n { provide: NgtsSpotLightInput, useExisting: NgtsSpotLight },\n ],\n imports: [NgIf, NgtArgs, NgtsVolumetricMesh],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsSpotLight extends NgtsSpotLightInput {\n @Input() spotLightRef = injectNgtRef<THREE.SpotLight>();\n\n @Input() set volumetric(volumetric: boolean) {\n this.set({ volumetric });\n }\n\n readonly showVolumetric = this.select('volumetric');\n\n constructor() {\n super();\n this.set({\n opacity: 1,\n color: 'white',\n distance: 5,\n angle: 0.15,\n attenuation: 5,\n anglePower: 5,\n volumetric: true,\n debug: false,\n });\n }\n}\n","import { Directive, Input } from '@angular/core';\nimport { NgtSignalStore } from 'angular-three';\n\nexport interface NgtsSpotLightShadowMeshInputState {\n distance: number;\n alphaTest: number;\n scale: number;\n map: THREE.Texture;\n shader: string;\n width: number;\n height: number;\n}\n\n@Directive()\nexport abstract class NgtsSpotLightShadowMeshInput extends NgtSignalStore<NgtsSpotLightShadowMeshInputState> {\n @Input() set distance(distance: number) {\n this.set({ distance });\n }\n\n @Input() set alphaTest(alphaTest: number) {\n this.set({ alphaTest });\n }\n\n @Input() set scale(scale: number) {\n this.set({ scale });\n }\n\n @Input() set map(map: THREE.Texture) {\n this.set({ map });\n }\n\n @Input() set shader(shader: string) {\n this.set({ shader });\n }\n\n @Input() set width(width: number) {\n this.set({ width });\n }\n\n @Input() set height(height: number) {\n this.set({ height });\n }\n\n readonly shadowMeshDistance = this.select('distance');\n readonly shadowMeshAlphaTest = this.select('alphaTest');\n readonly shadowMeshScale = this.select('scale');\n readonly shadowMeshMap = this.select('map');\n readonly shadowMeshShader = this.select('shader');\n readonly shadowMeshWidth = this.select('width');\n readonly shadowMeshHeight = this.select('height');\n}\n","import { NgIf } from '@angular/common';\nimport {\n CUSTOM_ELEMENTS_SCHEMA,\n Component,\n Injector,\n computed,\n effect,\n inject,\n runInInjectionContext,\n} from '@angular/core';\nimport {\n NgtInjectedRef,\n assertInjectionContext,\n checkUpdate,\n extend,\n injectBeforeRender,\n injectNgtRef,\n requestAnimationFrameInInjectionContext,\n} from 'angular-three';\nimport * as THREE from 'three';\nimport { Mesh, MeshBasicMaterial, PlaneGeometry } from 'three';\nimport { FullScreenQuad } from 'three-stdlib';\nimport { NGTS_SPOT_LIGHT_API } from './spot-light';\nimport { NgtsSpotLightShadowMeshInput } from './spot-light-shadow-mesh-input';\n\nconst isSpotLight = (child: THREE.Object3D | null): child is THREE.SpotLight => {\n return (child as THREE.SpotLight)?.isSpotLight;\n};\n\nfunction injectShadowMeshCommon(\n spotLightRef: NgtInjectedRef<THREE.SpotLight>,\n meshRef: NgtInjectedRef<THREE.Mesh>,\n width: () => number,\n height: () => number,\n distance: () => number,\n injector?: Injector\n) {\n injector = assertInjectionContext(injectShadowMeshCommon, injector);\n runInInjectionContext(injector, () => {\n const pos = new THREE.Vector3();\n const dir = new THREE.Vector3();\n\n requestAnimationFrameInInjectionContext(() => {\n effect(() => {\n const spotLight = spotLightRef.nativeElement;\n if (!spotLight) return;\n if (isSpotLight(spotLight)) {\n spotLight.shadow.mapSize.set(width(), height());\n if (spotLight.shadow.map) {\n spotLight.shadow.map.setSize(width(), height());\n }\n spotLight.shadow.needsUpdate = true;\n } else {\n throw new Error('<ngts-spot-light-shadow> must be a child of a <ngts-spot-light>');\n }\n });\n });\n\n injectBeforeRender(() => {\n const spotLight = spotLightRef.nativeElement;\n const mesh = meshRef.nativeElement;\n\n if (!spotLight) return;\n\n const A = spotLight.position;\n const B = spotLight.target.position;\n\n dir.copy(B).sub(A);\n const len = dir.length();\n dir.normalize().multiplyScalar(len * distance());\n pos.copy(A).add(dir);\n\n if (mesh) {\n mesh.position.copy(pos);\n mesh.lookAt(spotLight.target.position);\n }\n });\n });\n}\n\nextend({ Mesh, PlaneGeometry, MeshBasicMaterial });\n\n@Component({\n selector: 'ngts-spot-light-shadow-mesh-no-shader',\n standalone: true,\n template: `\n <ngt-mesh [ref]=\"meshRef\" [scale]=\"shadowMeshInput.shadowMeshScale()\" [castShadow]=\"true\">\n <ngt-plane-geometry />\n <ngt-mesh-basic-material\n [transparent]=\"true\"\n [side]=\"DoubleSide\"\n [alphaTest]=\"shadowMeshInput.shadowMeshAlphaTest()\"\n [alphaMap]=\"shadowMeshInput.shadowMeshMap()\"\n [opacity]=\"debug() ? 1 : 0\"\n >\n <ng-content />\n </ngt-mesh-basic-material>\n </ngt-mesh>\n `,\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsSpotLightShadowMeshNoShader {\n protected readonly shadowMeshInput = inject(NgtsSpotLightShadowMeshInput);\n readonly #spotLightApi = inject(NGTS_SPOT_LIGHT_API);\n\n readonly meshRef = injectNgtRef<THREE.Mesh>();\n readonly DoubleSide = THREE.DoubleSide;\n\n readonly debug = this.#spotLightApi.debug;\n\n constructor() {\n this.shadowMeshInput.patch({ distance: 0.4, alphaTest: 0.5, width: 512, height: 512, scale: 1 });\n\n requestAnimationFrameInInjectionContext(() => {\n effect(() => {\n const map = this.shadowMeshInput.shadowMeshMap();\n if (map) {\n map.wrapS = map.wrapT = THREE.RepeatWrapping;\n checkUpdate(map);\n }\n });\n });\n\n injectShadowMeshCommon(\n this.#spotLightApi.spotLight,\n this.meshRef,\n this.shadowMeshInput.shadowMeshWidth,\n this.shadowMeshInput.shadowMeshHeight,\n this.shadowMeshInput.shadowMeshDistance\n );\n }\n}\n\n@Component({\n selector: 'ngts-spot-light-shadow-mesh-shader',\n standalone: true,\n template: `\n <ngt-mesh [ref]=\"meshRef\" [scale]=\"shadowMeshInput.shadowMeshScale()\" [castShadow]=\"true\">\n <ngt-plane-geometry />\n <ngt-mesh-basic-material\n [transparent]=\"true\"\n [side]=\"DoubleSide\"\n [alphaTest]=\"shadowMeshInput.shadowMeshAlphaTest()\"\n [alphaMap]=\"renderTarget().texture\"\n [opacity]=\"debug() ? 1 : 0\"\n >\n <ngt-value [rawValue]=\"RepeatWrapping\" attach=\"alphaMap.wrapS\" />\n <ngt-value [rawValue]=\"RepeatWrapping\" attach=\"alphaMap.wrapT\" />\n <ng-content />\n </ngt-mesh-basic-material>\n </ngt-mesh>\n `,\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsSpotLightShadowMeshShader {\n protected readonly shadowMeshInput = inject(NgtsSpotLightShadowMeshInput);\n readonly meshRef = injectNgtRef<THREE.Mesh>();\n readonly #spotLightApi = inject(NGTS_SPOT_LIGHT_API);\n\n readonly DoubleSide = THREE.DoubleSide;\n readonly RepeatWrapping = THREE.RepeatWrapping;\n\n readonly debug = this.#spotLightApi.debug;\n readonly renderTarget = computed(() => {\n const width = this.shadowMeshInput.shadowMeshWidth();\n const height = this.shadowMeshInput.shadowMeshHeight();\n\n return new THREE.WebGLRenderTarget(width, height, {\n format: THREE.RGBAFormat,\n encoding: THREE.LinearEncoding,\n stencilBuffer: false,\n // depthTexture: null!\n });\n });\n readonly uniforms = {\n uShadowMap: { value: this.shadowMeshInput.shadowMeshMap() },\n uTime: { value: 0 },\n };\n\n readonly #fsQuad = computed(() => {\n const shader = this.shadowMeshInput.shadowMeshShader();\n if (!shader) return null;\n return new FullScreenQuad(\n new THREE.ShaderMaterial({\n uniforms: this.uniforms,\n vertexShader: /* glsl */ `\n varying vec2 vUv;\n\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n `,\n fragmentShader: shader,\n })\n );\n });\n\n constructor() {\n this.shadowMeshInput.patch({ distance: 0.4, alphaTest: 0.5, width: 512, height: 512, scale: 4 });\n\n injectShadowMeshCommon(\n this.#spotLightApi.spotLight,\n this.meshRef,\n this.shadowMeshInput.shadowMeshWidth,\n this.shadowMeshInput.shadowMeshHeight,\n this.shadowMeshInput.shadowMeshDistance\n );\n\n injectBeforeRender(({ delta, gl }) => {\n this.uniforms.uTime.value += delta;\n const fsQuad = this.#fsQuad();\n const renderTarget = this.renderTarget();\n if (fsQuad && renderTarget) {\n gl.setRenderTarget(renderTarget);\n fsQuad.render(gl);\n gl.setRenderTarget(null);\n }\n });\n\n requestAnimationFrameInInjectionContext(() => {\n effect(() => {\n const map = this.shadowMeshInput.shadowMeshMap();\n if (map) {\n this.uniforms.uShadowMap.value = map;\n }\n });\n\n effect((onCleanup) => {\n const fsQuad = this.#fsQuad();\n onCleanup(() => {\n if (fsQuad) {\n fsQuad.dispose();\n fsQuad.material.dispose();\n }\n });\n });\n\n effect((onCleanup) => {\n const renderTarget = this.renderTarget();\n onCleanup(() => {\n renderTarget.dispose();\n });\n });\n });\n }\n}\n\n@Component({\n selector: 'ngts-spot-light-shadow',\n standalone: true,\n template: `\n <ngts-spot-light-shadow-mesh-shader *ngIf=\"shadowMeshShader(); else noShader\" />\n <ng-template #noShader>\n <ngts-spot-light-shadow-mesh-no-shader />\n </ng-template>\n `,\n imports: [NgtsSpotLightShadowMeshShader, NgtsSpotLightShadowMeshNoShader, NgIf],\n providers: [{ provide: NgtsSpotLightShadowMeshInput, useExisting: NgtsSpotLightShadow }],\n})\nexport class NgtsSpotLightShadow extends NgtsSpotLightShadowMeshInput {}\n","import { NgIf } from '@angular/common';\nimport {\n ChangeDetectorRef,\n Component,\n computed,\n CUSTOM_ELEMENTS_SCHEMA,\n Directive,\n EventEmitter,\n inject,\n Input,\n OnChanges,\n Output,\n signal,\n} from '@angular/core';\nimport { extend, NgtArgs, NgtSignalStore, safeDetectChanges } from 'angular-three';\nimport { AmbientLight, Group, PointLight, SpotLight, Vector2 } from 'three';\nimport { NgtsAccumulativeShadows } from '../accumulative-shadows/accumulative-shadows';\nimport { NgtsRandomizedLights } from '../accumulative-shadows/randomized-lights';\nimport { NGTS_BOUNDS_API, NgtsBounds } from '../bounds/bounds';\nimport { NgtsCenter } from '../center/center';\nimport { NgtsContactShadows } from '../contact-shadows/contact-shadows';\nimport { NgtsEnvironmentPresetsType } from '../environment/assets';\nimport { NgtsEnvironment } from '../environment/environment';\nimport { NgtsEnvironmentInput } from '../environment/environment-input';\n\nconst presets = {\n rembrandt: {\n main: [1, 2, 1],\n fill: [-2, -0.5, -2],\n },\n portrait: {\n main: [-1, 2, 0.5],\n fill: [-1, 0.5, -1.5],\n },\n upfront: {\n main: [0, 2, 1],\n fill: [-1, 0.5, -1.5],\n },\n soft: {\n main: [-2, 4, 4],\n fill: [-1, 0.5, -1.5],\n },\n};\n\ntype NgtsStageShadows = Partial<NgtsAccumulativeShadows> &\n Partial<NgtsRandomizedLights> &\n Partial<NgtsContactShadows> & {\n type: 'contact' | 'accumulative';\n /** Shadow plane offset, default: 0 */\n offset?: number;\n /** Shadow bias, default: -0.0001 */\n bias?: number;\n /** Shadow normal bias, default: 0 */\n normalBias?: number;\n /** Shadow map size, default: 1024 */\n size?: number;\n };\n\ninterface NgtsStageProps {\n /** Lighting setup, default: \"rembrandt\" */\n preset:\n | 'rembrandt'\n | 'portrait'\n | 'upfront'\n | 'soft'\n | { main: [x: number, y: number, z: number]; fill: [x: number, y: number, z: number] };\n /** Controls the ground shadows, default: \"contact\" */\n shadows: boolean | 'contact' | 'accumulative' | NgtsStageShadows;\n /** Optionally wraps and thereby centers the models using <Bounds>, can also be a margin, default: true */\n adjustCamera: boolean | number;\n /** The default environment, default: \"city\" */\n environment: NgtsEnvironmentPresetsType | Partial<NgtsEnvironmentInput>;\n /** The lighting intensity, default: 0.5 */\n intensity: number;\n /** To adjust centering, default: undefined */\n center?: Partial<NgtsCenter>;\n}\n\n@Directive({ selector: 'ngts-stage-refit', standalone: true })\nexport class NgtsStageRefit implements OnChanges {\n readonly #boundsApi = inject(NGTS_BOUNDS_API);\n\n @Input() radius = 0;\n @Input() adjustCamera = true;\n\n ngOnChanges() {\n if (this.adjustCamera) {\n this.#boundsApi().refresh().clip().fit();\n }\n }\n}\n\nextend({ AmbientLight, SpotLight, Vector2, PointLight, Group });\n\n@Component({\n selector: 'ngts-stage',\n standalone: true,\n template: `\n <ngt-ambient-light [intensity]=\"stageIntensity() / 3\" />\n <ngt-spot-light\n [penumbra]=\"1\"\n [position]=\"spotLightPosition()\"\n [intensity]=\"stageIntensity() * 2\"\n [castShadow]=\"!!stageShadows()\"\n >\n <ngt-value [rawValue]=\"shadowsInfo().shadowBias\" attach=\"shadow.bias\" />\n <ngt-value [rawValue]=\"shadowsInfo().normalBias\" attach=\"shadow.normalBias\" />\n <ngt-vector2 *args=\"[shadowsInfo().shadowSize, shadowsInfo().shadowSize]\" attach=\"shadow.mapSize\" />\n </ngt-spot-light>\n <ngt-point-light [position]=\"pointLightPosition()\" [intensity]=\"stageIntensity()\" />\n\n <ngts-bounds\n [fit]=\"!!stageAdjustCamera()\"\n [clip]=\"!!stageAdjustCamera()\"\n [margin]=\"Number(stageAdjustCamera())\"\n [observe]=\"true\"\n >\n <ngts-stage-refit [radius]=\"boundingState().radius\" [adjustCamera]=\"!!stageAdjustCamera()\" />\n <ngts-center\n [position]=\"[0, shadowsInfo().shadowOffset / 2, 0]\"\n [top]=\"!!stageCenter()?.top\"\n [right]=\"!!stageCenter()?.right\"\n [bottom]=\"!!stageCenter()?.bottom\"\n [left]=\"!!stageCenter()?.left\"\n [front]=\"!!stageCenter()?.front\"\n [back]=\"!!stageCenter()?.back\"\n [disableX]=\"!!stageCenter()?.disableX\"\n [disableY]=\"!!stageCenter()?.disableY\"\n [disableZ]=\"!!stageCenter()?.disableZ\"\n [precise]=\"!!stageCenter()?.precise\"\n (centered)=\"onCentered($event)\"\n >\n <ng-content />\n </ngts-center>\n </ngts-bounds>\n <ngt-group [position]=\"[0, -boundingState().height / 2 - shadowsInfo().shadowOffset / 2, 0]\">\n <ngts-contact-shadows\n *ngIf=\"shadowsInfo().contactShadow\"\n [scale]=\"boundingState().radius * 4\"\n [far]=\"boundingState().radius\"\n [blur]=\"2\"\n [opacity]=\"shadowsInfo().opacity\"\n [width]=\"shadowsInfo().width\"\n [height]=\"shadowsInfo().height\"\n [smooth]=\"shadowsInfo().smooth\"\n [resolution]=\"shadowsInfo().resolution\"\n [frames]=\"shadowsInfo().frames\"\n [scale]=\"shadowsInfo().scale\"\n [color]=\"shadowsInfo().color\"\n [depthWrite]=\"shadowsInfo().depthWrite\"\n [renderOrder]=\"shadowsInfo().renderOrder\"\n />\n <ngts-accumulative-shadows\n *ngIf=\"shadowsInfo().accumulativeShadow\"\n [temporal]=\"true\"\n [frames]=\"100\"\n [alphaTest]=\"0.9\"\n [toneMapped]=\"true\"\n [scale]=\"boundingState().radius * 4\"\n [opacity]=\"shadowsInfo().opacity\"\n [alphaTest]=\"shadowsInfo().alphaTest\"\n [color]=\"shadowsInfo().color\"\n [colorBlend]=\"shadowsInfo().colorBlend\"\n [resolution]=\"shadowsInfo().resolution\"\n >\n <ngts-randomized-lights\n [amount]=\"shadowsInfo().amount ?? 8\"\n [radius]=\"shadowsInfo().radius ?? boundingState().radius\"\n [ambient]=\"shadowsInfo().ambient ?? 0.5\"\n [intensity]=\"shadowsInfo().intensity ?? 1\"\n [position]=\"spotLightPosition()\"\n [size]=\"boundingState().radius * 4\"\n [bias]=\"-shadowsInfo().shadowBias\"\n [mapSize]=\"shadowsInfo().shadowSize\"\n />\n </ngts-accumulative-shadows>\n </ngt-group>\n <ngts-environment\n *ngIf=\"environmentInfo() as environmentInfo\"\n [frames]=\"environmentInfo.frames\"\n [near]=\"environmentInfo.near\"\n [far]=\"environmentInfo.far\"\n [resolution]=\"environmentInfo.resolution\"\n [background]=\"environmentInfo.background\"\n [blur]=\"environmentInfo.blur\"\n [map]=\"environmentInfo.map\"\n [files]=\"environmentInfo.files\"\n [path]=\"environmentInfo.path\"\n [preset]=\"environmentInfo.preset\"\n [scene]=\"environmentInfo.scene\"\n [extensions]=\"environmentInfo.extensions\"\n [ground]=\"environmentInfo.ground\"\n [encoding]=\"environmentInfo.encoding\"\n />\n `,\n imports: [\n NgtArgs,\n NgtsBounds,\n NgtsStageRefit,\n NgtsCenter,\n NgIf,\n NgtsContactShadows,\n NgtsAccumulativeShadows,\n NgtsRandomizedLights,\n NgtsEnvironment,\n ],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsStage extends NgtSignalStore<NgtsStageProps> {\n readonly #cdr = inject(ChangeDetectorRef);\n readonly Number = Number;\n\n @Input() set preset(preset: NgtsStageProps['preset']) {\n this.set({ preset });\n }\n\n @Input() set shadows(shadows: NgtsStageProps['shadows']) {\n this.set({ shadows });\n }\n\n @Input() set adjustCamera(adjustCamera: NgtsStageProps['adjustCamera']) {\n this.set({ adjustCamera });\n }\n\n @Input() set environment(environment: NgtsStageProps['environment']) {\n this.set({ environment });\n }\n\n @Input() set intensity(intensity: NgtsStageProps['intensity']) {\n this.set({ intensity });\n }\n\n @Input() set center(center: NgtsStageProps['center']) {\n this.set({ center });\n }\n\n @Output() centered = new EventEmitter() as NgtsCenter['centered'];\n\n readonly boundingState = signal({ radius: 0, width: 0, height: 0, depth: 0 });\n\n readonly #preset = this.select('preset');\n readonly #environment = this.select('environment');\n\n readonly stageShadows = this.select('shadows');\n readonly stageIntensity = this.select('intensity');\n readonly stageAdjustCamera = this.select('adjustCamera');\n readonly stageCenter = this.select('center');\n\n readonly config = computed(() => {\n const preset = this.#preset();\n return typeof preset === 'string' ? presets[preset] : preset;\n });\n\n readonly shadowsInfo = computed<any>(() => {\n const shadows = this.stageShadows();\n const restProps = typeof shadows === 'string' ? {} : (shadows as NgtsStageShadows) || {};\n return {\n contactShadow: shadows === 'contact' || (shadows as NgtsStageShadows)?.type === 'contact',\n accumulativeShadow: shadows === 'accumulative' || (shadows as NgtsStageShadows)?.type === 'accumulative',\n shadowBias: (shadows as NgtsStageShadows)?.bias ?? -0.0001,\n normalBias: (shadows as NgtsStageShadows)?.normalBias ?? 0,\n shadowSize: (shadows as NgtsStageShadows)?.size ?? 1024,\n shadowOffset: (shadows as NgtsStageShadows)?.offset ?? 0,\n ...restProps,\n };\n });\n\n readonly spotLightPosition = computed<[number, number, number]>(() => {\n const config = this.config();\n if (!config) return [0, 0, 0];\n const radius = this.boundingState().radius;\n return [config.main[0] * radius, config.main[1] * radius, config.main[2] * radius];\n });\n\n readonly pointLightPosition = computed(() => {\n const config = this.config();\n if (!config) return [0, 0, 0];\n const radius = this.boundingState().radius;\n return [config.fill[0] * radius, config.fill[1] * radius, config.fill[2] * radius];\n });\n\n readonly environmentInfo = computed(() => {\n const environment = this.#environment();\n if (!environment) return null;\n if (typeof environment === 'string') return { preset: environment };\n return environment;\n });\n\n constructor() {\n super({\n adjustCamera: true,\n intensity: 0.5,\n shadows: 'contact',\n environment: 'city',\n preset: 'rembrandt',\n });\n }\n\n onCentered(props: {\n /** The next parent above <Center> */\n parent: THREE.Object3D;\n /** The outmost container group of the <Center> component */\n container: THREE.Object3D;\n width: number;\n height: number;\n depth: number;\n boundingBox: THREE.Box3;\n boundingSphere: THREE.Sphere;\n center: THREE.Vector3;\n verticalAlignment: number;\n horizontalAlignment: number;\n depthAlignment: number;\n }) {\n const { boundingSphere, width, height, depth } = props;\n this.boundingState.set({ radius: boundingSphere.radius, width, height, depth });\n safeDetectChanges(this.#cdr);\n if (this.centered.observed) this.centered.emit(props);\n }\n}\n","import { Component, computed, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';\nimport { extend, injectBeforeRender, injectNgtRef, NgtArgs, NgtSignalStore, type NgtRenderState } from 'angular-three';\nimport { StarFieldMaterial } from 'angular-three-soba/shaders';\nimport * as THREE from 'three';\nimport { BufferAttribute, BufferGeometry, Points } from 'three';\n\nextend({ Points, BufferGeometry, BufferAttribute });\n\nconst genStar = (r: number) => {\n return new THREE.Vector3().setFromSpherical(\n new THREE.Spherical(r, Math.acos(1 - Math.random() * 2), Math.random() * 2 * Math.PI)\n );\n};\n\nexport interface NgtsStarsState {\n radius: number;\n depth: number;\n count: number;\n factor: number;\n saturation: number;\n fade: boolean;\n speed: number;\n}\n\n@Component({\n selector: 'ngts-stars',\n standalone: true,\n template: `\n <ngt-points [ref]=\"starsRef\">\n <ngt-buffer-geometry>\n <ngt-buffer-attribute attach=\"attributes.position\" *args=\"[bufferAttributes().positions, 3]\" />\n <ngt-buffer-attribute attach=\"attributes.color\" *args=\"[bufferAttributes().colors, 3]\" />\n <ngt-buffer-attribute attach=\"attributes.size\" *args=\"[bufferAttributes().sizes, 1]\" />\n </ngt-buffer-geometry>\n <ngt-primitive\n *args=\"[material]\"\n attach=\"material\"\n [blending]=\"AdditiveBlending\"\n [depthWrite]=\"false\"\n [transparent]=\"true\"\n [vertexColors]=\"true\"\n >\n <ngt-value attach=\"uniforms.fade.value\" [rawValue]=\"fade()\" />\n </ngt-primitive>\n </ngt-points>\n `,\n imports: [NgtArgs],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsStars extends NgtSignalStore<NgtsStarsState> {\n readonly AdditiveBlending = THREE.AdditiveBlending;\n readonly material = new StarFieldMaterial();\n\n @Input() starsRef = injectNgtRef<Points>();\n\n @Input() set radius(radius: number) {\n this.set({ radius });\n }\n\n @Input() set depth(depth: number) {\n this.set({ depth });\n }\n\n @Input() set count(count: number) {\n this.set({ count });\n }\n\n @Input() set factor(factor: number) {\n this.set({ factor });\n }\n\n @Input() set saturation(saturation: number) {\n this.set({ saturation });\n }\n\n @Input('fade') set starsFade(fade: boolean) {\n this.set({ fade });\n }\n\n @Input() set speed(speed: number) {\n this.set({ speed });\n }\n\n readonly #count = this.select('count');\n readonly #depth = this.select('depth');\n readonly #factor = this.select('factor');\n readonly #radius = this.select('radius');\n readonly #saturation = this.select('saturation');\n\n readonly fade = this.select('fade');\n readonly bufferAttributes = computed(() => {\n const positions: number[] = [];\n const colors: number[] = [];\n const sizes = Array.from({ length: this.#count() }, () => (0.5 + 0.5 * Math.random()) * this.#factor());\n const color = new THREE.Color();\n let r = this.#radius() + this.#depth();\n const increment = this.#depth() / this.#count();\n for (let i = 0; i < this.#count(); i++) {\n r -= increment * Math.random();\n positions.push(...genStar(r).toArray());\n color.setHSL(i / this.#count(), this.#saturation(), 0.9);\n colors.push(color.r, color.g, color.b);\n }\n return {\n positions: new Float32Array(positions),\n colors: new Float32Array(colors),\n sizes: new Float32Array(sizes),\n };\n });\n\n constructor() {\n super({\n radius: 100,\n depth: 50,\n count: 5000,\n saturation: 0,\n factor: 4,\n fade: false,\n speed: 1,\n });\n injectBeforeRender(this.#onBeforeRender.bind(this));\n }\n\n #onBeforeRender({ clock }: NgtRenderState) {\n this.material.uniforms['time'].value = clock.getElapsedTime() * this.get('speed');\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"angular-three-soba-staging.mjs","sources":["../../../../libs/soba/staging/src/accumulative-shadows/progressive-light-map.ts","../../../../libs/soba/staging/src/accumulative-shadows/accumulative-shadows.ts","../../../../libs/soba/staging/src/accumulative-shadows/randomized-lights.ts","../../../../libs/soba/staging/src/bounds/bounds.ts","../../../../libs/soba/staging/src/camera-shake/camera-shake.ts","../../../../libs/soba/staging/src/caustics/caustisc.ts","../../../../libs/soba/staging/src/center/center.ts","../../../../libs/soba/staging/src/cloud/cloud.ts","../../../../libs/soba/staging/src/contact-shadows/contact-shadows.ts","../../../../libs/soba/staging/src/environment/assets.ts","../../../../libs/soba/staging/src/environment/environment-input.ts","../../../../libs/soba/staging/src/environment/utils.ts","../../../../libs/soba/staging/src/environment/environment-cube.ts","../../../../libs/soba/staging/src/environment/environment-map.ts","../../../../libs/soba/staging/src/environment/environment-ground.ts","../../../../libs/soba/staging/src/environment/environment-portal.ts","../../../../libs/soba/staging/src/environment/environment.ts","../../../../libs/soba/staging/src/float/float.ts","../../../../libs/soba/staging/src/sky/sky.ts","../../../../libs/soba/staging/src/sparkles/sparkles.ts","../../../../libs/soba/staging/src/spot-light/spot-light-input.ts","../../../../libs/soba/staging/src/spot-light/volumetric-mesh.ts","../../../../libs/soba/staging/src/spot-light/spot-light.ts","../../../../libs/soba/staging/src/spot-light/spot-light-shadow-mesh-input.ts","../../../../libs/soba/staging/src/spot-light/spot-light-shadow-mesh.ts","../../../../libs/soba/staging/src/stage/stage.ts","../../../../libs/soba/staging/src/stars/stars.ts","../../../../libs/soba/staging/src/angular-three-soba-staging.ts"],"sourcesContent":["import { DiscardMaterial } from 'angular-three-soba/shaders';\nimport * as THREE from 'three';\n\nfunction isLight(object: any): object is THREE.Light {\n return object.isLight;\n}\n\nfunction isGeometry(object: any): object is THREE.Mesh {\n return !!object.geometry;\n}\n\n// Based on \"Progressive Light Map Accumulator\", by [zalo](https://github.com/zalo/)\nexport class ProgressiveLightMap {\n renderer: THREE.WebGLRenderer;\n res: number;\n scene: THREE.Scene;\n object: THREE.Mesh | null;\n buffer1Active: boolean;\n progressiveLightMap1: THREE.WebGLRenderTarget;\n progressiveLightMap2: THREE.WebGLRenderTarget;\n discardMat: THREE.ShaderMaterial;\n targetMat: THREE.MeshLambertMaterial;\n previousShadowMap: { value: THREE.Texture };\n averagingWindow: { value: number };\n clearColor: THREE.Color;\n clearAlpha: number;\n lights: { object: THREE.Light; intensity: number }[];\n meshes: { object: THREE.Mesh; material: THREE.Material | THREE.Material[] }[];\n\n constructor(renderer: THREE.WebGLRenderer, scene: THREE.Scene, res: number = 1024) {\n this.renderer = renderer;\n this.res = res;\n this.scene = scene;\n this.buffer1Active = false;\n this.lights = [];\n this.meshes = [];\n this.object = null;\n this.clearColor = new THREE.Color();\n this.clearAlpha = 0;\n\n // Create the Progressive LightMap Texture\n const format = /(Android|iPad|iPhone|iPod)/g.test(navigator.userAgent) ? THREE.HalfFloatType : THREE.FloatType;\n this.progressiveLightMap1 = new THREE.WebGLRenderTarget(this.res, this.res, {\n type: format,\n });\n this.progressiveLightMap2 = new THREE.WebGLRenderTarget(this.res, this.res, {\n type: format,\n });\n\n // Inject some spicy new logic into a standard phong material\n this.discardMat = new DiscardMaterial();\n this.targetMat = new THREE.MeshLambertMaterial({ fog: false });\n this.previousShadowMap = { value: this.progressiveLightMap1.texture };\n this.averagingWindow = { value: 100 };\n this.targetMat.onBeforeCompile = (shader) => {\n // Vertex Shader: Set Vertex Positions to the Unwrapped UV Positions\n shader.vertexShader =\n 'varying vec2 vUv;\\n' +\n shader.vertexShader.slice(0, -1) +\n 'vUv = uv; gl_Position = vec4((uv - 0.5) * 2.0, 1.0, 1.0); }';\n\n // Fragment Shader: Set Pixels to average in the Previous frame's Shadows\n const bodyStart = shader.fragmentShader.indexOf('void main() {');\n shader.fragmentShader =\n 'varying vec2 vUv;\\n' +\n shader.fragmentShader.slice(0, bodyStart) +\n 'uniform sampler2D previousShadowMap;\\n\tuniform float averagingWindow;\\n' +\n shader.fragmentShader.slice(bodyStart - 1, -1) +\n `\\nvec3 texelOld = texture2D(previousShadowMap, vUv).rgb;\n gl_FragColor.rgb = mix(texelOld, gl_FragColor.rgb, 1.0/ averagingWindow);\n }`;\n\n // Set the Previous Frame's Texture Buffer and Averaging Window\n // Set the Previous Frame's Texture Buffer and Averaging Window\n shader.uniforms['previousShadowMap'] = this.previousShadowMap;\n shader.uniforms['averagingWindow'] = this.averagingWindow;\n };\n }\n\n clear() {\n this.renderer.getClearColor(this.clearColor);\n this.clearAlpha = this.renderer.getClearAlpha();\n this.renderer.setClearColor('black', 1);\n this.renderer.setRenderTarget(this.progressiveLightMap1);\n this.renderer.clear();\n this.renderer.setRenderTarget(this.progressiveLightMap2);\n this.renderer.clear();\n this.renderer.setRenderTarget(null);\n this.renderer.setClearColor(this.clearColor, this.clearAlpha);\n\n this.lights = [];\n this.meshes = [];\n this.scene.traverse((object) => {\n if (isGeometry(object)) {\n this.meshes.push({ object, material: object.material });\n } else if (isLight(object)) {\n this.lights.push({ object, intensity: object.intensity });\n }\n });\n }\n\n prepare() {\n this.lights.forEach((light) => (light.object.intensity = 0));\n this.meshes.forEach((mesh) => (mesh.object.material = this.discardMat));\n }\n\n finish() {\n this.lights.forEach((light) => (light.object.intensity = light.intensity));\n this.meshes.forEach((mesh) => (mesh.object.material = mesh.material));\n }\n\n configure(object: THREE.Mesh) {\n this.object = object;\n }\n\n update(camera: THREE.Camera, blendWindow = 100) {\n if (!this.object) return;\n // Set each object's material to the UV Unwrapped Surface Mapping Version\n this.averagingWindow.value = blendWindow;\n this.object.material = this.targetMat;\n // Ping-pong two surface buffers for reading/writing\n const activeMap = this.buffer1Active ? this.progressiveLightMap1 : this.progressiveLightMap2;\n const inactiveMap = this.buffer1Active ? this.progressiveLightMap2 : this.progressiveLightMap1;\n // Render the object's surface maps\n const oldBg = this.scene.background;\n this.scene.background = null;\n this.renderer.setRenderTarget(activeMap);\n this.previousShadowMap.value = inactiveMap.texture;\n this.buffer1Active = !this.buffer1Active;\n this.renderer.render(this.scene, camera);\n this.renderer.setRenderTarget(null);\n this.scene.background = oldBg;\n }\n}\n","import {\n CUSTOM_ELEMENTS_SCHEMA,\n Component,\n InjectionToken,\n Input,\n Signal,\n computed,\n effect,\n inject,\n untracked,\n} from '@angular/core';\nimport {\n NgtSignalStore,\n NgtStore,\n extend,\n getLocalState,\n injectBeforeRender,\n injectNgtRef,\n requestAnimationFrameInInjectionContext,\n type NgtGroup,\n} from 'angular-three';\nimport { SoftShadowMaterial, SoftShadowMaterialInputs } from 'angular-three-soba/shaders';\nimport { Group, Mesh, PlaneGeometry } from 'three';\nimport { ProgressiveLightMap } from './progressive-light-map';\n\nextend({ SoftShadowMaterial, Group, Mesh, PlaneGeometry });\n\nexport interface NgtsAccumulativeShadowsState {\n /** How many frames it can render, more yields cleaner results but takes more time, 40 */\n frames: number;\n /** If frames === Infinity blend controls the refresh ratio, 100 */\n blend: number;\n /** Can limit the amount of frames rendered if frames === Infinity, usually to get some performance back once a movable scene has settled, Infinity */\n limit: number;\n /** Scale of the plane, */\n scale: number;\n /** Temporal accumulates shadows over time which is more performant but has a visual regression over instant results, false */\n temporal: boolean;\n /** Opacity of the plane, 1 */\n opacity: number;\n /** Discards alpha pixels, 0.65 */\n alphaTest: number;\n /** Shadow color, black */\n color: string;\n /** Colorblend, how much colors turn to black, 0 is black, 2 */\n colorBlend: number;\n /** Buffer resolution, 1024 */\n resolution: number;\n /** Texture tonemapping */\n toneMapped: boolean;\n}\n\nexport type NgtsAccumulativeShadowsLightApi = { update: () => void };\n\nexport interface NgtsAccumulativeShadowsApi {\n lights: Map<string, Signal<NgtsAccumulativeShadowsLightApi>>;\n temporal: boolean;\n frames: number;\n blend: number;\n count: number;\n getMesh: () => THREE.Mesh<THREE.PlaneGeometry, SoftShadowMaterialInputs & THREE.ShaderMaterial>;\n reset: () => void;\n update: (frames?: number) => void;\n}\n\nexport const NGTS_ACCUMULATIVE_SHADOWS_API = new InjectionToken<Signal<NgtsAccumulativeShadowsApi>>(\n 'NgtsAccumulativeShadows API'\n);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ngts-accumulative-shadows': NgtGroup & NgtsAccumulativeShadowsState;\n }\n}\n\n@Component({\n selector: 'ngts-accumulative-shadows',\n standalone: true,\n template: `\n <ngt-group ngtCompound>\n <ngt-group [ref]=\"accumulativeShadowsRef\" [traverse]=\"nullTraverse\">\n <ng-content />\n </ngt-group>\n <ngt-mesh\n [ref]=\"meshRef\"\n [receiveShadow]=\"true\"\n [scale]=\"accumulativeShadowsScale()\"\n [rotation]=\"[-Math.PI / 2, 0, 0]\"\n >\n <ngt-plane-geometry />\n <ngt-soft-shadow-material\n [transparent]=\"true\"\n [depthWrite]=\"false\"\n [toneMapped]=\"accumulativeShadowsToneMapped()\"\n [color]=\"accumulativeShadowsColor()\"\n [blend]=\"accumulativeShadowsColorBlend()\"\n [map]=\"pLM().progressiveLightMap2.texture\"\n />\n </ngt-mesh>\n </ngt-group>\n `,\n providers: [\n {\n provide: NGTS_ACCUMULATIVE_SHADOWS_API,\n useFactory: (shadows: NgtsAccumulativeShadows) => shadows.api,\n deps: [NgtsAccumulativeShadows],\n },\n ],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsAccumulativeShadows extends NgtSignalStore<NgtsAccumulativeShadowsState> {\n readonly nullTraverse = () => null;\n readonly Math = Math;\n\n /** How many frames it can render, more yields cleaner results but takes more time, 40 */\n @Input() set frames(frames: number) {\n this.set({ frames });\n }\n\n /** If frames === Infinity blend controls the refresh ratio, 100 */\n @Input() set blend(blend: number) {\n this.set({ blend });\n }\n\n /** Can limit the amount of frames rendered if frames === Infinity, usually to get some performance back once a movable scene has settled, Infinity */\n @Input() set limit(limit: number) {\n this.set({ limit });\n }\n\n /** Scale of the plane, */\n @Input() set scale(scale: number) {\n this.set({ scale });\n }\n\n /** Temporal accumulates shadows over time which is more performant but has a visual regression over instant results, false */\n @Input() set temporal(temporal: boolean) {\n this.set({ temporal });\n }\n\n /** Opacity of the plane, 1 */\n @Input() set opacity(opacity: number) {\n this.set({ opacity });\n }\n\n /** Discards alpha pixels, 0.65 */\n @Input() set alphaTest(alphaTest: number) {\n this.set({ alphaTest });\n }\n\n /** Shadow color, black */\n @Input() set color(color: string) {\n this.set({ color });\n }\n\n /** Colorblend, how much colors turn to black, 0 is black, 2 */\n @Input() set colorBlend(colorBlend: number) {\n this.set({ colorBlend });\n }\n\n /** Buffer resolution, 1024 */\n @Input() set resolution(resolution: number) {\n this.set({ resolution });\n }\n\n /** Texture tonemapping */\n @Input() set toneMapped(toneMapped: boolean) {\n this.set({ toneMapped });\n }\n\n readonly #store = inject(NgtStore);\n readonly #gl = this.#store.select('gl');\n readonly #scene = this.#store.select('scene');\n readonly #camera = this.#store.select('camera');\n\n readonly #resolution = this.select('resolution');\n readonly #temporal = this.select('temporal');\n readonly #blend = this.select('blend');\n readonly #frames = this.select('frames');\n readonly #opacity = this.select('opacity');\n readonly #alphaTest = this.select('alphaTest');\n\n readonly accumulativeShadowsScale = this.select('scale');\n readonly accumulativeShadowsToneMapped = this.select('toneMapped');\n readonly accumulativeShadowsColor = this.select('color');\n readonly accumulativeShadowsColorBlend = this.select('colorBlend');\n\n readonly meshRef = injectNgtRef<THREE.Mesh<THREE.PlaneGeometry, SoftShadowMaterialInputs & THREE.ShaderMaterial>>();\n readonly accumulativeShadowsRef = injectNgtRef<THREE.Group>();\n\n readonly pLM = computed(\n () => new ProgressiveLightMap(untracked(this.#gl), untracked(this.#scene), this.#resolution())\n );\n\n readonly api = computed(() => {\n const pLM = this.pLM();\n const alphaTest = this.#alphaTest();\n const opacity = this.#opacity();\n const camera = this.#camera();\n\n return {\n lights: new Map(),\n temporal: this.#temporal(),\n frames: Math.max(2, this.#frames()),\n blend: Math.max(2, this.#frames() === Infinity ? this.#blend() : this.#frames()),\n count: 0,\n getMesh: () => this.meshRef.nativeElement,\n reset: () => {\n if (!this.meshRef.nativeElement) return;\n // Clear buffers, reset opacities, set frame count to 0\n pLM.clear();\n const material = this.meshRef.nativeElement.material;\n material.opacity = 0;\n material.alphaTest = 0;\n this.api().count = 0;\n },\n update: (frames = 1) => {\n if (!this.meshRef.nativeElement) return;\n // Adapt the opacity-blend ratio to the number of frames\n const material = this.meshRef.nativeElement.material;\n if (!this.api().temporal) {\n material.opacity = opacity;\n material.alphaTest = alphaTest;\n } else {\n material.opacity = Math.min(opacity, material.opacity + opacity / this.api().blend);\n material.alphaTest = Math.min(alphaTest, material.alphaTest + alphaTest / this.api().blend);\n }\n\n // Switch accumulative lights on\n this.accumulativeShadowsRef.nativeElement.visible = true;\n // Collect scene lights and meshes\n pLM.prepare();\n\n // Update the lightmap and the accumulative lights\n for (let i = 0; i < frames; i++) {\n this.api().lights.forEach((light) => light().update());\n pLM.update(camera, this.api().blend);\n }\n // Switch lights off\n this.accumulativeShadowsRef.nativeElement.visible = false;\n // Restore lights and meshes\n pLM.finish();\n },\n };\n });\n\n constructor() {\n super({\n frames: 40,\n limit: Infinity,\n blend: 20,\n scale: 10,\n opacity: 1,\n alphaTest: 0.75,\n color: 'black',\n colorBlend: 2,\n resolution: 1024,\n toneMapped: true,\n temporal: false,\n });\n requestAnimationFrameInInjectionContext(() => {\n this.#configure();\n this.#resetAndUpdate();\n });\n injectBeforeRender(this.#onBeforeRender.bind(this));\n }\n\n #onBeforeRender() {\n const invalidate = this.#store.get('invalidate');\n const limit = this.get('limit');\n const api = this.api();\n if ((api.temporal || api.frames === Infinity) && api.count < api.frames && api.count < limit) {\n invalidate();\n api.update();\n api.count++;\n }\n }\n\n #configure() {\n const trigger = computed(() => ({ pLM: this.pLM(), mesh: this.meshRef.nativeElement }));\n effect(() => {\n const { pLM, mesh } = trigger();\n if (!mesh) return;\n pLM.configure(mesh);\n });\n }\n\n #resetAndUpdate() {\n const trigger = computed(() => ({\n state: this.state(),\n objects: getLocalState(this.#store.get('scene')).objects(),\n mesh: this.meshRef.nativeElement,\n }));\n\n effect(() => {\n const { mesh } = trigger();\n if (!mesh) return;\n const api = untracked(this.api);\n // Reset internals, buffers, ...\n api.reset();\n // Update lightmap\n if (!api.temporal && api.frames !== Infinity) api.update(api.blend);\n });\n }\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, Component, Input, computed, effect, inject } from '@angular/core';\nimport {\n NgtArgs,\n NgtRepeat,\n NgtSignalStore,\n extend,\n injectNgtRef,\n requestAnimationFrameInInjectionContext,\n type NgtGroup,\n} from 'angular-three';\nimport * as THREE from 'three';\nimport { DirectionalLight, Group, OrthographicCamera, Vector2 } from 'three';\nimport { NGTS_ACCUMULATIVE_SHADOWS_API } from './accumulative-shadows';\n\nextend({ Group, DirectionalLight, OrthographicCamera, Vector2 });\n\nexport interface NgtsRandomizedLightsState {\n /** How many frames it will jiggle the lights, 1.\n * Frames is context aware, if a provider like AccumulativeShadows exists, frames will be taken from there! */\n frames: number;\n /** Light position, [0, 0, 0] */\n position: [x: number, y: number, z: number];\n /** Radius of the jiggle, higher values make softer light, 5 */\n radius: number;\n /** Amount of lights, 8 */\n amount: number;\n /** Light intensity, 1 */\n intensity: number;\n /** Ambient occlusion, lower values mean less AO, hight more, you can mix AO and directional light, 0.5 */\n ambient: number;\n /** If the lights cast shadows, this is true by default */\n castShadow: boolean;\n /** Default shadow bias, 0 */\n bias: number;\n /** Default map size, 512 */\n mapSize: number;\n /** Default size of the shadow camera, 10 */\n size: number;\n /** Default shadow camera near, 0.5 */\n near: number;\n /** Default shadow camera far, 500 */\n far: number;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ngts-randomized-lights': NgtGroup & NgtsRandomizedLightsState;\n }\n}\n\n@Component({\n selector: 'ngts-randomized-lights',\n standalone: true,\n template: `\n <ngt-group ngtCompound [ref]=\"lightsRef\">\n <ngt-directional-light\n *ngFor=\"let i; repeat: lightsAmount()\"\n [castShadow]=\"lightsCastShadow()\"\n [intensity]=\"lightsIntensity() / lightsAmount()\"\n >\n <ngt-value [rawValue]=\"lightsBias()\" attach=\"shadow.bias\" />\n <ngt-vector2 *args=\"shadowMapSize()\" attach=\"shadow.mapSize\" />\n <ngt-orthographic-camera *args=\"cameraArgs()\" attach=\"shadow.camera\" />\n </ngt-directional-light>\n </ngt-group>\n `,\n imports: [NgtArgs, NgtRepeat],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsRandomizedLights extends NgtSignalStore<NgtsRandomizedLightsState> {\n @Input() lightsRef = injectNgtRef<THREE.Group>();\n /** How many frames it will jiggle the lights, 1.\n * Frames is context aware, if a provider like AccumulativeShadows exists, frames will be taken from there! */\n @Input() set frames(frames: number) {\n this.set({ frames });\n }\n\n /** Light position, [0, 0, 0] */\n @Input() set position(position: [x: number, y: number, z: number]) {\n this.set({ position });\n }\n\n /** Radius of the jiggle, higher values make softer light, 5 */\n @Input() set radius(radius: number) {\n this.set({ radius });\n }\n\n /** Amount of lights, 8 */\n @Input() set amount(amount: number) {\n this.set({ amount });\n }\n\n /** Light intensity, 1 */\n @Input() set intensity(intensity: number) {\n this.set({ intensity });\n }\n\n /** Ambient occlusion, lower values mean less AO, hight more, you can mix AO and directional light, 0.5 */\n @Input() set ambient(ambient: number) {\n this.set({ ambient });\n }\n\n /** If the lights cast shadows, this is true by default */\n @Input() set castShadow(castShadow: boolean) {\n this.set({ castShadow });\n }\n\n /** Default shadow bias, 0 */\n @Input() set bias(bias: number) {\n this.set({ bias });\n }\n\n /** Default map size, 512 */\n @Input() set mapSize(mapSize: number) {\n this.set({ mapSize });\n }\n\n /** Default size of the shadow camera, 10 */\n @Input() set size(size: number) {\n this.set({ size });\n }\n\n /** Default shadow camera near, 0.5 */\n @Input() set near(near: number) {\n this.set({ near });\n }\n\n /** Default shadow camera far, 500 */\n @Input() set far(far: number) {\n this.set({ far });\n }\n\n readonly #parent = inject(NGTS_ACCUMULATIVE_SHADOWS_API);\n\n readonly #size = this.select('size');\n readonly #near = this.select('near');\n readonly #far = this.select('far');\n readonly #mapSize = this.select('mapSize');\n readonly #ambient = this.select('ambient');\n readonly #position = this.select('position');\n readonly #radius = this.select('radius');\n\n readonly lightsAmount = this.select('amount');\n readonly lightsCastShadow = this.select('castShadow');\n readonly lightsIntensity = this.select('intensity');\n readonly lightsBias = this.select('bias');\n\n readonly shadowMapSize = computed(() => [this.#mapSize(), this.#mapSize()]);\n readonly cameraArgs = computed(() => [\n -this.#size(),\n this.#size(),\n this.#size(),\n -this.#size(),\n this.#near(),\n this.#far(),\n ]);\n\n readonly length = computed(() => new THREE.Vector3(...this.#position()).length());\n\n readonly api = computed(() => {\n const radius = this.#radius();\n const position = this.#position();\n const ambient = this.#ambient();\n const length = this.length();\n const lights = this.lightsRef.nativeElement;\n\n const update = () => {\n let light: THREE.DirectionalLight | undefined;\n if (lights) {\n for (let l = 0; l < lights.children.length; l++) {\n light = lights.children[l] as THREE.DirectionalLight;\n if (Math.random() > ambient) {\n light.position.set(\n position[0] + THREE.MathUtils.randFloatSpread(radius),\n position[1] + THREE.MathUtils.randFloatSpread(radius),\n position[2] + THREE.MathUtils.randFloatSpread(radius)\n );\n } else {\n const lambda = Math.acos(2 * Math.random() - 1) - Math.PI / 2.0;\n const phi = 2 * Math.PI * Math.random();\n light.position.set(\n Math.cos(lambda) * Math.cos(phi) * length,\n Math.abs(Math.cos(lambda) * Math.sin(phi) * length),\n Math.sin(lambda) * length\n );\n }\n }\n }\n };\n\n return { update };\n });\n\n constructor() {\n super({\n castShadow: true,\n bias: 0.001,\n mapSize: 512,\n size: 5,\n near: 0.5,\n far: 500,\n frames: 1,\n position: [0, 0, 0],\n radius: 1,\n amount: 8,\n intensity: 1,\n ambient: 0.5,\n });\n requestAnimationFrameInInjectionContext(() => {\n this.#updateLightsMap();\n });\n }\n\n #updateLightsMap() {\n effect((onCleanup) => {\n const lights = this.lightsRef.nativeElement;\n if (!lights) return;\n const parent = this.#parent();\n if (parent) {\n parent.lights.set(lights.uuid, this.api);\n onCleanup(() => parent.lights.delete(lights.uuid));\n }\n });\n }\n}\n","import {\n Component,\n computed,\n CUSTOM_ELEMENTS_SCHEMA,\n effect,\n EventEmitter,\n inject,\n InjectionToken,\n Input,\n Output,\n Signal,\n untracked,\n} from '@angular/core';\nimport {\n extend,\n injectBeforeRender,\n injectNgtRef,\n is,\n NgtSignalStore,\n NgtStore,\n requestAnimationFrameInInjectionContext,\n type NgtRenderState,\n} from 'angular-three';\nimport * as THREE from 'three';\nimport { Group } from 'three';\n\nexport type NgtsBoundsSize = {\n box: THREE.Box3;\n size: THREE.Vector3;\n center: THREE.Vector3;\n distance: number;\n};\n\nexport type NgtsBoundsApi = {\n getSize: () => NgtsBoundsSize;\n refresh: (object?: THREE.Object3D | THREE.Box3) => NgtsBoundsApi;\n clip: () => NgtsBoundsApi;\n fit: () => NgtsBoundsApi;\n to: ({\n position,\n target,\n }: {\n position: [number, number, number];\n target?: [number, number, number];\n }) => NgtsBoundsApi;\n};\n\ntype ControlsProto = {\n update(): void;\n target: THREE.Vector3;\n maxDistance: number;\n addEventListener: (event: string, callback: (event: any) => void) => void;\n removeEventListener: (event: string, callback: (event: any) => void) => void;\n};\n\nconst isBox3 = (def: unknown): def is THREE.Box3 => !!def && (def as THREE.Box3).isBox3;\n\nfunction equals(a: THREE.Vector3, b: THREE.Vector3, eps: number) {\n return Math.abs(a.x - b.x) < eps && Math.abs(a.y - b.y) < eps && Math.abs(a.z - b.z) < eps;\n}\n\nfunction damp(v: THREE.Vector3, t: THREE.Vector3, lambda: number, delta: number) {\n v.x = THREE.MathUtils.damp(v.x, t.x, lambda, delta);\n v.y = THREE.MathUtils.damp(v.y, t.y, lambda, delta);\n v.z = THREE.MathUtils.damp(v.z, t.z, lambda, delta);\n}\n\nexport const NGTS_BOUNDS_API = new InjectionToken<Signal<NgtsBoundsApi>>('NgtsBounds API');\n\nexport interface NgtsBoundsState {\n damping: number;\n fit: boolean;\n clip: boolean;\n observe: boolean;\n margin: number;\n eps: number;\n}\n\nextend({ Group });\n\n@Component({\n selector: 'ngts-bounds',\n standalone: true,\n template: `\n <ngt-group ngtCompound [ref]=\"boundsRef\">\n <ng-content />\n </ngt-group>\n `,\n providers: [{ provide: NGTS_BOUNDS_API, useFactory: (bounds: NgtsBounds) => bounds.api, deps: [NgtsBounds] }],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsBounds extends NgtSignalStore<NgtsBoundsState> {\n @Input() boundsRef = injectNgtRef<Group>();\n\n @Input() set damping(damping: number) {\n this.set({ damping });\n }\n\n @Input() set fit(fit: boolean) {\n this.set({ fit });\n }\n\n @Input() set clip(clip: boolean) {\n this.set({ clip });\n }\n\n @Input() set observe(observe: boolean) {\n this.set({ observe });\n }\n\n @Input() set margin(margin: number) {\n this.set({ margin });\n }\n\n @Input() set eps(eps: number) {\n this.set({ eps });\n }\n\n @Output() fitted = new EventEmitter<NgtsBoundsSize>();\n\n readonly #store = inject(NgtStore);\n readonly #controls = this.#store.select('controls');\n readonly #camera = this.#store.select('camera');\n readonly #invalidate = this.#store.select('invalidate');\n readonly #size = this.#store.select('size');\n\n readonly #current = { animating: false, focus: new THREE.Vector3(), camera: new THREE.Vector3(), zoom: 1 };\n readonly #goal = { focus: new THREE.Vector3(), camera: new THREE.Vector3(), zoom: 1 };\n\n readonly #box = new THREE.Box3();\n\n readonly #margin = this.select('margin');\n readonly #damping = this.select('damping');\n readonly #fit = this.select('fit');\n readonly #clip = this.select('clip');\n readonly #observe = this.select('observe');\n\n #count = 0;\n\n readonly api = computed(() => {\n const margin = this.#margin();\n const damping = this.#damping();\n\n const camera = this.#camera();\n const controls = this.#controls() as unknown as ControlsProto;\n const invalidate = this.#invalidate();\n\n const current = this.#current;\n const goal = this.#goal;\n\n const box = this.#box;\n const ref = () => this.boundsRef.untracked;\n const fitted = this.fitted;\n\n function getSize() {\n const size = box.getSize(new THREE.Vector3());\n const center = box.getCenter(new THREE.Vector3());\n const maxSize = Math.max(size.x, size.y, size.z);\n const fitHeightDistance = is.orthographicCamera(camera)\n ? maxSize * 4\n : maxSize / (2 * Math.atan((Math.PI * camera.fov) / 360));\n const fitWidthDistance = is.orthographicCamera(camera) ? maxSize * 4 : fitHeightDistance / camera.aspect;\n const distance = margin * Math.max(fitHeightDistance, fitWidthDistance);\n return { box, size, center, distance };\n }\n\n return {\n getSize,\n refresh(object?: THREE.Object3D | THREE.Box3) {\n if (isBox3(object)) box.copy(object);\n else {\n const target = object || ref();\n if (target) {\n target.updateWorldMatrix(true, true);\n box.setFromObject(target);\n }\n }\n if (box.isEmpty()) {\n const max = camera.position.length() || 10;\n box.setFromCenterAndSize(new THREE.Vector3(), new THREE.Vector3(max, max, max));\n }\n\n if (controls?.constructor.name === 'OrthographicTrackballControls') {\n // Put camera on a sphere along which it should move\n const { distance } = getSize();\n const direction = camera.position.clone().sub(controls.target).normalize().multiplyScalar(distance);\n const newPos = controls.target.clone().add(direction);\n camera.position.copy(newPos);\n }\n\n return this;\n },\n\n clip() {\n const { distance } = getSize();\n if (controls) controls.maxDistance = distance * 10;\n camera.near = distance / 100;\n camera.far = distance * 100;\n camera.updateProjectionMatrix();\n if (controls) controls.update();\n invalidate();\n return this;\n },\n to({ position, target }: { position: [number, number, number]; target?: [number, number, number] }) {\n current.camera.copy(camera.position);\n const { center } = getSize();\n goal.camera.set(...position);\n\n if (target) {\n goal.focus.set(...target);\n } else {\n goal.focus.copy(center);\n }\n\n if (damping) {\n current.animating = true;\n } else {\n camera.position.set(...position);\n }\n\n return this;\n },\n fit() {\n current.camera.copy(camera.position);\n if (controls) current.focus.copy(controls.target);\n\n const { center, distance } = getSize();\n const direction = center.clone().sub(camera.position).normalize().multiplyScalar(distance);\n\n goal.camera.copy(center).sub(direction);\n goal.focus.copy(center);\n\n if (is.orthographicCamera(camera)) {\n current.zoom = camera.zoom;\n\n let maxHeight = 0,\n maxWidth = 0;\n const vertices = [\n new THREE.Vector3(box.min.x, box.min.y, box.min.z),\n new THREE.Vector3(box.min.x, box.max.y, box.min.z),\n new THREE.Vector3(box.min.x, box.min.y, box.max.z),\n new THREE.Vector3(box.min.x, box.max.y, box.max.z),\n new THREE.Vector3(box.max.x, box.max.y, box.max.z),\n new THREE.Vector3(box.max.x, box.max.y, box.min.z),\n new THREE.Vector3(box.max.x, box.min.y, box.max.z),\n new THREE.Vector3(box.max.x, box.min.y, box.min.z),\n ];\n // Transform the center and each corner to camera space\n center.applyMatrix4(camera.matrixWorldInverse);\n for (const v of vertices) {\n v.applyMatrix4(camera.matrixWorldInverse);\n maxHeight = Math.max(maxHeight, Math.abs(v.y - center.y));\n maxWidth = Math.max(maxWidth, Math.abs(v.x - center.x));\n }\n maxHeight *= 2;\n maxWidth *= 2;\n const zoomForHeight = (camera.top - camera.bottom) / maxHeight;\n const zoomForWidth = (camera.right - camera.left) / maxWidth;\n goal.zoom = Math.min(zoomForHeight, zoomForWidth) / margin;\n if (!damping) {\n camera.zoom = goal.zoom;\n camera.updateProjectionMatrix();\n }\n }\n\n if (damping) {\n current.animating = true;\n } else {\n camera.position.copy(goal.camera);\n camera.lookAt(goal.focus);\n if (controls) {\n controls.target.copy(goal.focus);\n controls.update();\n }\n }\n if (fitted.observed) fitted.emit(this.getSize());\n invalidate();\n return this;\n },\n };\n });\n\n constructor() {\n super({ damping: 6, fit: false, clip: false, observe: false, margin: 1.2, eps: 0.01 });\n this.#preventDragHijacking();\n requestAnimationFrameInInjectionContext(() => {\n this.#scalePointer();\n injectBeforeRender(this.#onBeforeRender.bind(this));\n });\n }\n\n #scalePointer() {\n const trigger = computed(() => ({\n size: this.#size(),\n fit: this.#fit(),\n clip: this.#clip(),\n observe: this.#observe(),\n camera: this.#camera(),\n controls: this.#controls(),\n }));\n effect(() => {\n const { observe, fit, clip } = trigger();\n const api = untracked(this.api);\n if (observe || this.#count++ === 0) {\n api.refresh();\n if (fit) api.fit();\n if (clip) api.clip();\n }\n });\n }\n\n #onBeforeRender({ delta }: NgtRenderState) {\n const { damping, eps } = this.get();\n const invalidate = this.#invalidate();\n const camera = this.#camera();\n const controls = this.#controls() as unknown as ControlsProto;\n\n if (this.#current.animating) {\n damp(this.#current.focus, this.#goal.focus, damping, delta);\n damp(this.#current.camera, this.#goal.camera, damping, delta);\n this.#current.zoom = THREE.MathUtils.damp(this.#current.zoom, this.#goal.zoom, damping, delta);\n camera.position.copy(this.#current.camera);\n\n if (is.orthographicCamera(camera)) {\n camera.zoom = this.#current.zoom;\n camera.updateProjectionMatrix();\n }\n\n if (!controls) {\n camera.lookAt(this.#current.focus);\n } else {\n controls.target.copy(this.#current.focus);\n controls.update();\n }\n\n invalidate();\n if (is.orthographicCamera(camera) && !(Math.abs(this.#current.zoom - this.#goal.zoom) < eps)) return;\n if (!is.orthographicCamera(camera) && !equals(this.#current.camera, this.#goal.camera, eps)) return;\n if (controls && !equals(this.#current.focus, this.#goal.focus, eps)) return;\n this.#current.animating = false;\n }\n }\n\n #preventDragHijacking() {\n effect((onCleanup) => {\n const controls = this.#controls() as unknown as ControlsProto;\n if (controls) {\n const callback = () => (this.#current.animating = false);\n controls.addEventListener('start', callback);\n onCleanup(() => controls.removeEventListener('start', callback));\n }\n });\n }\n}\n","import { computed, Directive, effect, inject, Input, OnInit } from '@angular/core';\nimport { injectBeforeRender, NgtSignalStore, NgtStore } from 'angular-three';\nimport { SimplexNoise } from 'three-stdlib';\n\nexport interface NgtsCameraShakeState {\n intensity: number;\n decay: boolean;\n decayRate: number;\n maxYaw: number;\n maxPitch: number;\n maxRoll: number;\n yawFrequency: number;\n pitchFrequency: number;\n rollFrequency: number;\n}\n\n@Directive({ selector: 'ngts-camera-shake', standalone: true })\nexport class NgtsCameraShake extends NgtSignalStore<NgtsCameraShakeState> implements OnInit {\n readonly #store = inject(NgtStore);\n\n #initialRotation = this.#store.get('camera').rotation.clone();\n\n readonly #yawNoise = new SimplexNoise();\n readonly #rollNoise = new SimplexNoise();\n readonly #pitchNoise = new SimplexNoise();\n\n @Input() set intensity(intensity: number) {\n this.set({ intensity });\n }\n\n @Input() set decay(decay: boolean) {\n this.set({ decay });\n }\n\n @Input() set decayRate(decayRate: number) {\n this.set({ decayRate });\n }\n\n @Input() set maxYaw(maxYaw: number) {\n this.set({ maxYaw });\n }\n\n @Input() set maxPitch(maxPitch: number) {\n this.set({ maxPitch });\n }\n\n @Input() set maxRoll(maxRoll: number) {\n this.set({ maxRoll });\n }\n\n @Input() set yawFrequency(yawFrequency: number) {\n this.set({ yawFrequency });\n }\n\n @Input() set pitchFrequency(pitchFrequency: number) {\n this.set({ pitchFrequency });\n }\n\n @Input() set rollFrequency(rollFrequency: number) {\n this.set({ rollFrequency });\n }\n\n constructor() {\n super({\n intensity: 1,\n decayRate: 0.65,\n maxYaw: 0.1,\n maxPitch: 0.1,\n maxRoll: 0.1,\n yawFrequency: 0.1,\n pitchFrequency: 0.1,\n rollFrequency: 0.1,\n });\n\n injectBeforeRender(({ clock, delta, camera }) => {\n const {\n intensity,\n maxYaw,\n maxPitch,\n maxRoll,\n yawFrequency,\n pitchFrequency,\n rollFrequency,\n decay,\n decayRate,\n } = this.get();\n\n const shake = Math.pow(intensity, 2);\n const yaw = maxYaw * shake * this.#yawNoise.noise(clock.elapsedTime * yawFrequency, 1);\n const pitch = maxPitch * shake * this.#pitchNoise.noise(clock.elapsedTime * pitchFrequency, 1);\n const roll = maxRoll * shake * this.#rollNoise.noise(clock.elapsedTime * rollFrequency, 1);\n\n camera.rotation.set(\n this.#initialRotation.x + pitch,\n this.#initialRotation.y + yaw,\n this.#initialRotation.z + roll\n );\n\n if (decay && intensity > 0) {\n this.set({ intensity: intensity - decayRate * delta });\n this.#constraintIntensity();\n }\n });\n\n this.#setChangeEvent();\n }\n\n ngOnInit(): void {}\n\n #setChangeEvent() {\n const camera = this.#store.select('camera');\n const controls = this.#store.select('controls');\n const trigger = computed(() => ({ camera: camera(), controls: controls() }));\n effect((onCleanup) => {\n const { camera, controls } = trigger();\n if (controls) {\n const callback = () => void (this.#initialRotation = camera.rotation.clone());\n controls.addEventListener('change', callback);\n callback();\n onCleanup(() => void controls.removeEventListener('change', callback));\n }\n });\n }\n\n getIntensity() {\n return this.get('intensity');\n }\n\n setIntensity(intensity: number) {\n this.set({ intensity });\n this.#constraintIntensity();\n }\n\n #constraintIntensity() {\n const intensity = this.get('intensity');\n if (intensity < 0 || intensity > 1) {\n this.set({ intensity: intensity < 0 ? 0 : 1 });\n }\n }\n}\n","import { NgIf } from '@angular/common';\nimport { Component, computed, CUSTOM_ELEMENTS_SCHEMA, effect, ElementRef, inject, Input } from '@angular/core';\nimport { extend, injectNgtRef, NgtSignalStore, NgtStore, requestAnimationFrameInInjectionContext } from 'angular-three';\nimport { NgtsEdges } from 'angular-three-soba/abstractions';\nimport { injectNgtsFBO } from 'angular-three-soba/misc';\nimport { CausticsMaterial, CausticsProjectionMaterial } from 'angular-three-soba/shaders';\nimport * as THREE from 'three';\nimport { Group, LineBasicMaterial, Mesh, OrthographicCamera, PlaneGeometry, Scene } from 'three';\nimport { FullScreenQuad } from 'three-stdlib';\n\nextend({ Group, Scene, Mesh, PlaneGeometry, OrthographicCamera, CausticsProjectionMaterial, LineBasicMaterial });\n\nconst NORMALPROPS = {\n depth: true,\n minFilter: THREE.LinearFilter,\n magFilter: THREE.LinearFilter,\n encoding: THREE.LinearEncoding,\n type: THREE.UnsignedByteType,\n};\n\nconst CAUSTICPROPS = {\n minFilter: THREE.LinearMipmapLinearFilter,\n magFilter: THREE.LinearFilter,\n encoding: THREE.LinearEncoding,\n format: THREE.RGBAFormat,\n type: THREE.FloatType,\n generateMipmaps: true,\n};\n\ntype CausticsMaterialType = THREE.ShaderMaterial & {\n cameraMatrixWorld?: THREE.Matrix4;\n cameraProjectionMatrixInv?: THREE.Matrix4;\n lightPlaneNormal?: THREE.Vector3;\n lightPlaneConstant?: number;\n normalTexture?: THREE.Texture | null;\n depthTexture?: THREE.Texture | null;\n lightDir?: THREE.Vector3;\n near?: number;\n far?: number;\n modelMatrix?: THREE.Matrix4;\n worldRadius?: number;\n ior?: number;\n bounces?: number;\n resolution?: number;\n size?: number;\n intensity?: number;\n};\n\ntype CausticsProjectionMaterialType = THREE.MeshNormalMaterial & {\n viewMatrix: { value?: THREE.Matrix4 };\n color?: THREE.Color;\n causticsTexture?: THREE.Texture;\n causticsTextureB?: THREE.Texture;\n lightProjMatrix?: THREE.Matrix4;\n lightViewMatrix?: THREE.Matrix4;\n};\n\nfunction createNormalMaterial(side: THREE.Side = THREE.FrontSide) {\n const viewMatrix = { value: new THREE.Matrix4() };\n return Object.assign(new THREE.MeshNormalMaterial({ side }), {\n viewMatrix,\n onBeforeCompile: (shader: any) => {\n shader.uniforms.viewMatrix = viewMatrix;\n shader.fragmentShader =\n `vec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\n return normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\n }\\n` +\n shader.fragmentShader.replace(\n '#include <normal_fragment_maps>',\n `#include <normal_fragment_maps>\n normal = inverseTransformDirection( normal, viewMatrix );\\n`\n );\n },\n });\n}\n\nexport interface NgtsCausticsState {\n /** How many frames it will render, set it to Infinity for runtime, default: 1 */\n frames: number;\n /** Enables visual cues to help you stage your scene, default: false */\n debug: boolean;\n /** Will display caustics only and skip the models, default: false */\n causticsOnly: boolean;\n /** Will include back faces and enable the backsideIOR prop, default: false */\n backside: boolean;\n /** The IOR refraction index, default: 1.1 */\n ior: number;\n /** The IOR refraction index for back faces (only available when backside is enabled), default: 1.1 */\n backsideIOR: number;\n /** The texel size, default: 0.3125 */\n worldRadius: number;\n /** Intensity of the prjected caustics, default: 0.05 */\n intensity: number;\n /** Caustics color, default: white */\n color: THREE.ColorRepresentation;\n /** Buffer resolution, default: 2048 */\n resolution: number;\n /** Camera position, it will point towards the contents bounds center, default: [5, 5, 5] */\n lightSource: [x: number, y: number, z: number] | ElementRef<THREE.Object3D>;\n}\n\n@Component({\n selector: 'ngts-caustics',\n standalone: true,\n template: `\n <ngt-group [ref]=\"causticsRef\" ngtCompound>\n <ngt-scene [ref]=\"sceneRef\">\n <ngt-orthographic-camera [ref]=\"cameraRef\" [up]=\"[0, 1, 0]\" />\n <ng-content />\n </ngt-scene>\n <ngt-mesh [renderOrder]=\"2\" [ref]=\"planeRef\" [rotation]=\"[-Math.PI / 2, 0, 0]\">\n <ngt-plane-geometry />\n <ngt-caustics-projection-material\n *ngIf=\"causticsTargetFbo() && causticsTargetBFbo()\"\n [transparent]=\"true\"\n [color]=\"causticsColor()\"\n [causticsTexture]=\"causticsTargetFbo().texture\"\n [causticsTextureB]=\"causticsTargetBFbo().texture\"\n [blending]=\"CustomBlending\"\n [blendSrc]=\"OneFactor\"\n [blendDst]=\"SrcAlphaFactor\"\n [depthWrite]=\"false\"\n />\n\n <ngts-edges *ngIf=\"causticsDebug()\" [withChildren]=\"true\">\n <ngt-line-basic-material color=\"#ffff00\" [toneMapped]=\"false\" />\n </ngts-edges>\n </ngt-mesh>\n </ngt-group>\n `,\n imports: [NgIf, NgtsEdges],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsCaustics extends NgtSignalStore<NgtsCausticsState> {\n readonly CustomBlending = THREE.CustomBlending;\n readonly OneFactor = THREE.OneFactor;\n readonly SrcAlphaFactor = THREE.SrcAlphaFactor;\n readonly Math = Math;\n\n readonly planeRef = injectNgtRef<THREE.Mesh>();\n readonly sceneRef = injectNgtRef<THREE.Scene>();\n readonly cameraRef = injectNgtRef<THREE.OrthographicCamera>();\n\n @Input() causticsRef = injectNgtRef<THREE.Group>();\n\n /** How many frames it will render, set it to Infinity for runtime, default: 1 */\n @Input() set frames(frames: number) {\n this.set({ frames });\n }\n /** Enables visual cues to help you stage your scene, default: false */\n @Input() set debug(debug: boolean) {\n this.set({ debug });\n }\n /** Will display caustics only and skip the models, default: false */\n @Input() set causticsOnly(causticsOnly: boolean) {\n this.set({ causticsOnly });\n }\n /** Will include back faces and enable the backsideIOR prop, default: false */\n @Input() set backside(backside: boolean) {\n this.set({ backside });\n }\n /** The IOR refraction index, default: 1.1 */\n @Input() set ior(ior: number) {\n this.set({ ior });\n }\n /** The IOR refraction index for back faces (only available when backside is enabled), default: 1.1 */\n @Input() set backsideIOR(backsideIOR: number) {\n this.set({ backsideIOR });\n }\n /** The texel size, default: 0.3125 */\n @Input() set worldRadius(worldRadius: number) {\n this.set({ worldRadius });\n }\n /** Intensity of the prjected caustics, default: 0.05 */\n @Input() set intensity(intensity: number) {\n this.set({ intensity });\n }\n /** Caustics color, default: white */\n @Input() set color(color: THREE.ColorRepresentation) {\n this.set({ color });\n }\n /** Buffer resolution, default: 2048 */\n @Input() set resolution(resolution: number) {\n this.set({ resolution });\n }\n /** Camera position, it will point towards the contents bounds center, default: [5, 5, 5] */\n @Input() set lightSource(lightSource: [x: number, y: number, z: number] | ElementRef<THREE.Object3D>) {\n this.set({ lightSource });\n }\n\n readonly causticsColor = this.select('color');\n readonly causticsDebug = this.select('debug');\n\n readonly #resolution = this.select('resolution');\n\n readonly #normalTargetSettings = computed(() => ({\n width: this.#resolution(),\n height: this.#resolution(),\n settings: NORMALPROPS,\n }));\n\n readonly #causticsTargetSettings = computed(() => ({\n width: this.#resolution(),\n height: this.#resolution(),\n settings: CAUSTICPROPS,\n }));\n\n readonly normalTargetFbo = injectNgtsFBO(this.#normalTargetSettings);\n readonly normalTargetBFbo = injectNgtsFBO(this.#normalTargetSettings);\n readonly causticsTargetFbo = injectNgtsFBO(this.#causticsTargetSettings);\n readonly causticsTargetBFbo = injectNgtsFBO(this.#causticsTargetSettings);\n\n readonly #store = inject(NgtStore);\n\n constructor() {\n super({\n frames: 1,\n ior: 1.1,\n color: 'white',\n causticsOnly: false,\n backside: false,\n backsideIOR: 1.1,\n worldRadius: 0.3125,\n intensity: 0.05,\n resolution: 2024,\n lightSource: [5, 5, 5],\n });\n requestAnimationFrameInInjectionContext(() => {\n this.#updateWorldMatrix();\n this.#setBeforeRender();\n });\n }\n\n #updateWorldMatrix() {\n const trigger = computed(() => ({\n sceneChildren: this.sceneRef.children()(),\n caustics: this.causticsRef.nativeElement,\n causticsChildren: this.causticsRef.children()(),\n state: this.state(),\n }));\n\n effect(() => {\n const { caustics } = trigger();\n if (!caustics) return;\n caustics.updateWorldMatrix(false, true);\n });\n }\n\n #setBeforeRender() {\n const causticsMaterial = new CausticsMaterial() as CausticsMaterialType;\n const causticsQuad = new FullScreenQuad(causticsMaterial);\n\n const normalMaterial = createNormalMaterial();\n const normalMaterialB = createNormalMaterial(THREE.BackSide);\n\n const trigger = computed(() => ({\n scene: this.sceneRef.nativeElement,\n sceneChildren: this.sceneRef.children()(),\n caustics: this.causticsRef.nativeElement,\n camera: this.cameraRef.nativeElement,\n normalTarget: this.normalTargetFbo(),\n normalTargetB: this.normalTargetBFbo(),\n causticsTarget: this.causticsTargetFbo(),\n causticsTargetB: this.causticsTargetBFbo(),\n plane: this.planeRef.nativeElement,\n planeChildren: this.planeRef.children('both')(),\n }));\n\n effect((onCleanup) => {\n const {\n caustics,\n sceneChildren,\n scene,\n camera,\n plane,\n normalTarget,\n normalTargetB,\n causticsTarget,\n causticsTargetB,\n } = trigger();\n if (!caustics) return;\n caustics.updateWorldMatrix(false, true);\n\n if (sceneChildren.length > 1) {\n const v = new THREE.Vector3();\n const lpF = new THREE.Frustum();\n const lpM = new THREE.Matrix4();\n const lpP = new THREE.Plane();\n\n const lightDir = new THREE.Vector3();\n const lightDirInv = new THREE.Vector3();\n const bounds = new THREE.Box3();\n const focusPos = new THREE.Vector3();\n\n let count = 0;\n const sub = this.#store.get('internal').subscribe(({ gl }) => {\n const {\n frames,\n lightSource,\n resolution,\n worldRadius,\n intensity,\n backside,\n backsideIOR,\n ior,\n causticsOnly,\n } = this.get();\n\n if (frames === Infinity || count++ < frames) {\n if (Array.isArray(lightSource)) lightDir.fromArray(lightSource).normalize();\n else\n lightDir.copy(\n caustics.worldToLocal(lightSource.nativeElement.getWorldPosition(v)).normalize()\n );\n\n lightDirInv.copy(lightDir).multiplyScalar(-1);\n\n let boundsVertices: THREE.Vector3[] = [];\n scene.parent?.matrixWorld.identity();\n bounds.setFromObject(scene, true);\n boundsVertices.push(new THREE.Vector3(bounds.min.x, bounds.min.y, bounds.min.z));\n boundsVertices.push(new THREE.Vector3(bounds.min.x, bounds.min.y, bounds.max.z));\n boundsVertices.push(new THREE.Vector3(bounds.min.x, bounds.max.y, bounds.min.z));\n boundsVertices.push(new THREE.Vector3(bounds.min.x, bounds.max.y, bounds.max.z));\n boundsVertices.push(new THREE.Vector3(bounds.max.x, bounds.min.y, bounds.min.z));\n boundsVertices.push(new THREE.Vector3(bounds.max.x, bounds.min.y, bounds.max.z));\n boundsVertices.push(new THREE.Vector3(bounds.max.x, bounds.max.y, bounds.min.z));\n boundsVertices.push(new THREE.Vector3(bounds.max.x, bounds.max.y, bounds.max.z));\n\n const worldVerts = boundsVertices.map((v) => v.clone());\n\n bounds.getCenter(focusPos);\n boundsVertices = boundsVertices.map((v) => v.clone().sub(focusPos));\n const lightPlane = lpP.set(lightDirInv, 0);\n const projectedVerts = boundsVertices.map((v) =>\n lightPlane.projectPoint(v, new THREE.Vector3())\n );\n\n const centralVert = projectedVerts\n .reduce((a, b) => a.add(b), v.set(0, 0, 0))\n .divideScalar(projectedVerts.length);\n const radius = projectedVerts\n .map((v) => v.distanceTo(centralVert))\n .reduce((a, b) => Math.max(a, b));\n const dirLength = boundsVertices.map((x) => x.dot(lightDir)).reduce((a, b) => Math.max(a, b));\n\n // Shadows\n camera.position.copy(lightDir.clone().multiplyScalar(dirLength).add(focusPos));\n camera.lookAt(scene.localToWorld(focusPos.clone()));\n const dirMatrix = lpM.lookAt(camera.position, focusPos, v.set(0, 1, 0));\n camera.left = -radius;\n camera.right = radius;\n camera.top = radius;\n camera.bottom = -radius;\n const yOffset = v.set(0, radius, 0).applyMatrix4(dirMatrix);\n const yTime = (camera.position.y + yOffset.y) / lightDir.y;\n camera.near = 0.1;\n camera.far = yTime;\n camera.updateProjectionMatrix();\n camera.updateMatrixWorld();\n\n // Now find size of ground plane\n const groundProjectedCoords = worldVerts.map((v) =>\n v.add(lightDir.clone().multiplyScalar(-v.y / lightDir.y))\n );\n const centerPos = groundProjectedCoords\n .reduce((a, b) => a.add(b), v.set(0, 0, 0))\n .divideScalar(groundProjectedCoords.length);\n const maxSize =\n 2 *\n groundProjectedCoords\n .map((v) => Math.hypot(v.x - centerPos.x, v.z - centerPos.z))\n .reduce((a, b) => Math.max(a, b));\n plane.scale.setScalar(maxSize);\n plane.position.copy(centerPos);\n\n // if (debug) helper.current?.update();\n\n // Inject uniforms\n normalMaterialB.viewMatrix.value = normalMaterial.viewMatrix.value = camera.matrixWorldInverse;\n\n const dirLightNearPlane = lpF.setFromProjectionMatrix(\n lpM.multiplyMatrices(camera.projectionMatrix, camera.matrixWorldInverse)\n ).planes[4];\n\n causticsMaterial.cameraMatrixWorld = camera.matrixWorld;\n causticsMaterial.cameraProjectionMatrixInv = camera.projectionMatrixInverse;\n causticsMaterial.lightDir = lightDirInv;\n\n causticsMaterial.lightPlaneNormal = dirLightNearPlane.normal;\n causticsMaterial.lightPlaneConstant = dirLightNearPlane.constant;\n\n causticsMaterial.near = camera.near;\n causticsMaterial.far = camera.far;\n causticsMaterial.resolution = resolution;\n causticsMaterial.size = radius;\n causticsMaterial.intensity = intensity;\n causticsMaterial.worldRadius = worldRadius;\n\n // Switch the scene on\n scene.visible = true;\n\n // Render front face normals\n gl.setRenderTarget(normalTarget);\n gl.clear();\n scene.overrideMaterial = normalMaterial;\n gl.render(scene, camera);\n\n // Render back face normals, if enabled\n gl.setRenderTarget(normalTargetB);\n gl.clear();\n if (backside) {\n scene.overrideMaterial = normalMaterialB;\n gl.render(scene, camera);\n }\n\n // Remove the override material\n scene.overrideMaterial = null;\n\n // Render front face caustics\n causticsMaterial.ior = ior;\n (plane.material as CausticsProjectionMaterialType).lightProjMatrix = camera.projectionMatrix;\n (plane.material as CausticsProjectionMaterialType).lightViewMatrix = camera.matrixWorldInverse;\n causticsMaterial.normalTexture = normalTarget.texture;\n causticsMaterial.depthTexture = normalTarget.depthTexture;\n gl.setRenderTarget(causticsTarget);\n gl.clear();\n causticsQuad.render(gl);\n\n // Render back face caustics, if enabled\n causticsMaterial.ior = backsideIOR;\n causticsMaterial.normalTexture = normalTargetB.texture;\n causticsMaterial.depthTexture = normalTargetB.depthTexture;\n gl.setRenderTarget(causticsTargetB);\n gl.clear();\n if (backside) causticsQuad.render(gl);\n\n // Reset render target\n gl.setRenderTarget(null);\n\n // Switch the scene off if caustics is all that's wanted\n if (causticsOnly) scene.visible = false;\n }\n });\n\n onCleanup(() => sub());\n }\n });\n }\n}\n","import { Component, computed, CUSTOM_ELEMENTS_SCHEMA, effect, EventEmitter, Input, Output } from '@angular/core';\nimport {\n extend,\n injectNgtRef,\n NgtSignalStore,\n requestAnimationFrameInInjectionContext,\n type NgtGroup,\n} from 'angular-three';\nimport { Box3, Group, Sphere, Vector3 } from 'three';\n\nexport type NgtsCenterState = {\n top?: boolean;\n right?: boolean;\n bottom?: boolean;\n left?: boolean;\n front?: boolean;\n back?: boolean;\n /** Disable all axes */\n disable?: boolean;\n /** Disable x-axis centering */\n disableX?: boolean;\n /** Disable y-axis centering */\n disableY?: boolean;\n /** Disable z-axis centering */\n disableZ?: boolean;\n /** See https://threejs.org/docs/index.html?q=box3#api/en/math/Box3.setFromObject */\n precise: boolean;\n};\n\nextend({ Group });\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ngts-center': NgtsCenterState & NgtGroup;\n }\n}\n\n@Component({\n selector: 'ngts-center',\n standalone: true,\n template: `\n <ngt-group ngtCompound [ref]=\"centerRef\">\n <ngt-group [ref]=\"outerRef\">\n <ngt-group [ref]=\"innerRef\">\n <ng-content />\n </ngt-group>\n </ngt-group>\n </ngt-group>\n `,\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsCenter extends NgtSignalStore<NgtsCenterState> {\n @Input() centerRef = injectNgtRef<Group>();\n\n readonly outerRef = injectNgtRef<Group>();\n readonly innerRef = injectNgtRef<Group>();\n\n @Input() set top(top: boolean) {\n this.set({ top });\n }\n\n @Input() set right(right: boolean) {\n this.set({ right });\n }\n\n @Input() set bottom(bottom: boolean) {\n this.set({ bottom });\n }\n\n @Input() set left(left: boolean) {\n this.set({ left });\n }\n\n @Input() set front(front: boolean) {\n this.set({ front });\n }\n\n @Input() set back(back: boolean) {\n this.set({ back });\n }\n\n @Input() set disableX(disableX: boolean) {\n this.set({ disableX });\n }\n\n @Input() set disableY(disableY: boolean) {\n this.set({ disableY });\n }\n\n @Input() set disableZ(disableZ: boolean) {\n this.set({ disableZ });\n }\n\n @Input() set disable(disable: boolean) {\n this.set({ disable });\n }\n\n @Input() set precise(precise: boolean) {\n this.set({ precise });\n }\n\n @Output() centered = new EventEmitter<{\n /** The next parent above <Center> */\n parent: THREE.Object3D;\n /** The outmost container group of the <Center> component */\n container: THREE.Object3D;\n width: number;\n height: number;\n depth: number;\n boundingBox: THREE.Box3;\n boundingSphere: THREE.Sphere;\n center: THREE.Vector3;\n verticalAlignment: number;\n horizontalAlignment: number;\n depthAlignment: number;\n }>();\n\n constructor() {\n super({ precise: true });\n requestAnimationFrameInInjectionContext(() => {\n this.#setPosition();\n });\n }\n\n #setPosition() {\n const trigger = computed(() => {\n const center = this.centerRef.nativeElement;\n const outer = this.outerRef.nativeElement;\n const inner = this.innerRef.nativeElement;\n const innerChildren = this.innerRef.children();\n return { center, outer, inner, innerChildren: innerChildren() };\n });\n\n effect(\n () => {\n const { center: centerGroup, outer, inner } = trigger();\n if (!outer || !inner) return;\n const { precise, top, left, front, disable, disableX, disableY, disableZ, back, bottom, right } =\n this.get();\n outer.matrixWorld.identity();\n const box3 = new Box3().setFromObject(inner, precise);\n const center = new Vector3();\n const sphere = new Sphere();\n const width = box3.max.x - box3.min.x;\n const height = box3.max.y - box3.min.y;\n const depth = box3.max.z - box3.min.z;\n\n box3.getCenter(center);\n box3.getBoundingSphere(sphere);\n\n const vAlign = top ? height / 2 : bottom ? -height / 2 : 0;\n const hAlign = left ? -width / 2 : right ? width / 2 : 0;\n const dAlign = front ? depth / 2 : back ? -depth / 2 : 0;\n\n outer.position.set(\n disable || disableX ? 0 : -center.x + hAlign,\n disable || disableY ? 0 : -center.y + vAlign,\n disable || disableZ ? 0 : -center.z + dAlign\n );\n\n if (this.centered.observed) {\n this.centered.emit({\n parent: centerGroup.parent!,\n container: centerGroup,\n width,\n height,\n depth,\n boundingBox: box3,\n boundingSphere: sphere,\n center: center,\n verticalAlignment: vAlign,\n horizontalAlignment: hAlign,\n depthAlignment: dAlign,\n });\n }\n },\n { allowSignalWrites: true }\n );\n }\n}\n","import { NgFor, NgIf } from '@angular/common';\nimport { CUSTOM_ELEMENTS_SCHEMA, Component, Input, computed, inject } from '@angular/core';\nimport {\n NgtSignalStore,\n NgtStore,\n extend,\n injectNgtRef,\n type NgtBeforeRenderEvent,\n type NgtGroup,\n} from 'angular-three';\nimport { NgtsBillboard } from 'angular-three-soba/abstractions';\nimport { injectNgtsTextureLoader } from 'angular-three-soba/loaders';\nimport { Group, Mesh, MeshStandardMaterial, PlaneGeometry } from 'three';\n\nconst CLOUD_URL = 'https://rawcdn.githack.com/pmndrs/drei-assets/9225a9f1fbd449d9411125c2f419b843d0308c9f/cloud.png';\n(injectNgtsTextureLoader as any).preload(() => CLOUD_URL);\n\nextend({ Group, Mesh, PlaneGeometry, MeshStandardMaterial });\n\nexport interface NgtsCloudState {\n opacity: number;\n speed: number;\n width: number;\n depth: number;\n segments: number;\n texture: string;\n color: THREE.ColorRepresentation;\n depthTest: boolean;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ngts-cloud': NgtsCloudState & NgtGroup;\n }\n}\n\n@Component({\n selector: 'ngts-cloud',\n standalone: true,\n template: `\n <ngt-group ngtCompound [ref]=\"groupRef\">\n <ngt-group\n [position]=\"[0, 0, (cloudSegments() / 2) * cloudDepth()]\"\n (beforeRender)=\"onBeforeRender($event)\"\n >\n <ngts-billboard\n *ngFor=\"let cloud of clouds(); let i = index\"\n [position]=\"[cloud.x, cloud.y, -i * cloudDepth()]\"\n >\n <ngt-mesh [scale]=\"cloud.scale\" [rotation]=\"[0, 0, 0]\">\n <ngt-plane-geometry />\n <!-- we use ngIf here for texture because by the time ngt-value is initialized -->\n <!-- [map] has not been resolved yet. we ngIf it so that texture is available before hand -->\n <ngt-mesh-standard-material\n *ngIf=\"cloudTexture() as cloudTexture\"\n [transparent]=\"true\"\n [map]=\"cloudTexture\"\n [depthTest]=\"cloudDepthTest()\"\n [opacity]=\"(cloud.scale / 6) * cloud.density * cloudOpacity()\"\n [color]=\"cloudColor()\"\n >\n <ngt-value [rawValue]=\"encoding()\" attach=\"map.encoding\" />\n </ngt-mesh-standard-material>\n </ngt-mesh>\n </ngts-billboard>\n </ngt-group>\n </ngt-group>\n `,\n imports: [NgFor, NgtsBillboard, NgIf],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsCloud extends NgtSignalStore<NgtsCloudState> {\n @Input() groupRef = injectNgtRef<Group>();\n\n @Input() set opacity(opacity: number) {\n this.set({ opacity });\n }\n\n @Input() set speed(speed: number) {\n this.set({ speed });\n }\n\n @Input() set width(width: number) {\n this.set({ width });\n }\n\n @Input() set depth(depth: number) {\n this.set({ depth });\n }\n\n @Input() set segments(segments: number) {\n this.set({ segments });\n }\n\n @Input() set texture(texture: string) {\n this.set({ texture });\n }\n\n @Input() set color(color: THREE.ColorRepresentation) {\n this.set({ color });\n }\n\n @Input() set depthTest(depthTest: boolean) {\n this.set({ depthTest });\n }\n\n readonly #store = inject(NgtStore);\n\n readonly #width = this.select('width');\n readonly #speed = this.select('speed');\n\n readonly cloudSegments = this.select('segments');\n readonly cloudDepth = this.select('depth');\n readonly cloudDepthTest = this.select('depthTest');\n readonly cloudOpacity = this.select('opacity');\n readonly cloudColor = this.select('color');\n readonly encoding = this.#store.select('gl', 'outputEncoding');\n\n readonly cloudTexture = injectNgtsTextureLoader(this.select('texture'));\n readonly clouds = computed(() =>\n [...new Array(this.cloudSegments())].map((_, index) => ({\n x: this.#width() / 2 - Math.random() * this.#width(),\n y: this.#width() / 2 - Math.random() * this.#width(),\n scale: 0.4 + Math.sin(((index + 1) / this.cloudSegments()) * Math.PI) * ((0.2 + Math.random()) * 10),\n density: Math.max(0.2, Math.random()),\n rotation: Math.max(0.002, 0.005 * Math.random()) * this.#speed(),\n }))\n );\n\n constructor() {\n super({\n opacity: 0.5,\n speed: 0.4,\n width: 10,\n depth: 1.5,\n segments: 20,\n texture: CLOUD_URL,\n color: '#ffffff',\n depthTest: true,\n });\n }\n\n onBeforeRender({ state, object }: NgtBeforeRenderEvent<Group>) {\n const clouds = this.clouds();\n object.children.forEach((cloud, index) => {\n cloud.children[0].rotation.z += clouds[index].rotation;\n cloud.children[0].scale.setScalar(\n clouds[index].scale + (((1 + Math.sin(state.clock.getElapsedTime() / 10)) / 2) * index) / 10\n );\n });\n }\n}\n","import { Component, computed, CUSTOM_ELEMENTS_SCHEMA, inject, Input } from '@angular/core';\nimport {\n extend,\n injectBeforeRender,\n injectNgtRef,\n NgtArgs,\n NgtSignalStore,\n NgtStore,\n type NgtGroup,\n type NgtRenderState,\n} from 'angular-three';\nimport * as THREE from 'three';\nimport { Group, Mesh, MeshBasicMaterial, OrthographicCamera } from 'three';\nimport { HorizontalBlurShader, VerticalBlurShader } from 'three-stdlib';\n\nextend({ Group, Mesh, MeshBasicMaterial, OrthographicCamera });\n\nexport interface NgtsContactShadowsState {\n opacity: number;\n width: number;\n height: number;\n blur: number;\n far: number;\n smooth: boolean;\n resolution: number;\n frames: number;\n scale: number | [x: number, y: number];\n color: THREE.ColorRepresentation;\n depthWrite: boolean;\n renderOrder: number;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ngts-contact-shadows': NgtsContactShadowsState & NgtGroup;\n }\n}\n\n@Component({\n selector: 'ngts-contact-shadows',\n standalone: true,\n template: `\n <ngt-group ngtCompound [ref]=\"contactShadowsRef\" [rotation]=\"[Math.PI / 2, 0, 0]\">\n <ngt-mesh\n [renderOrder]=\"shadowRenderOrder() ?? 0\"\n [geometry]=\"contactShadows().planeGeometry\"\n [scale]=\"[1, -1, 1]\"\n [rotation]=\"[-Math.PI / 2, 0, 0]\"\n >\n <ngt-mesh-basic-material\n [map]=\"contactShadows().renderTarget.texture\"\n [transparent]=\"true\"\n [opacity]=\"shadowOpacity() ?? 1\"\n [depthWrite]=\"shadowDepthWrite() ?? false\"\n >\n <ngt-value [rawValue]=\"encoding()\" attach=\"map.encoding\" />\n </ngt-mesh-basic-material>\n </ngt-mesh>\n <ngt-orthographic-camera *args=\"cameraArgs()\" [ref]=\"shadowCameraRef\" />\n </ngt-group>\n `,\n imports: [NgtArgs],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsContactShadows extends NgtSignalStore<NgtsContactShadowsState> {\n @Input() contactShadowsRef = injectNgtRef<Group>();\n\n @Input() set opacity(opacity: number) {\n this.set({ opacity });\n }\n\n @Input() set width(width: number) {\n this.set({ width });\n }\n\n @Input() set height(height: number) {\n this.set({ height });\n }\n\n @Input() set blur(blur: number) {\n this.set({ blur });\n }\n\n @Input() set far(far: number) {\n this.set({ far });\n }\n\n @Input() set smooth(smooth: boolean) {\n this.set({ smooth });\n }\n\n @Input() set resolution(resolution: number) {\n this.set({ resolution });\n }\n\n @Input() set frames(frames: number) {\n this.set({ frames });\n }\n\n @Input() set scale(scale: number | [x: number, y: number]) {\n this.set({ scale });\n }\n\n @Input() set color(color: THREE.ColorRepresentation) {\n this.set({ color });\n }\n\n @Input() set depthWrite(depthWrite: boolean) {\n this.set({ depthWrite });\n }\n\n @Input() set renderOrder(renderOrder: number) {\n this.set({ renderOrder });\n }\n\n readonly Math = Math;\n readonly #store = inject(NgtStore);\n\n readonly shadowCameraRef = injectNgtRef<OrthographicCamera>();\n\n readonly #scale = this.select('scale');\n readonly #width = this.select('width');\n readonly #height = this.select('height');\n readonly #far = this.select('far');\n readonly #resolution = this.select('resolution');\n readonly #color = this.select('color');\n\n readonly #scaledWidth = computed(() => {\n const scale = this.#scale();\n return this.#width() * (Array.isArray(scale) ? scale[0] : scale || 1);\n });\n readonly #scaledHeight = computed(() => {\n const scale = this.#scale();\n return this.#height() * (Array.isArray(scale) ? scale[1] : scale || 1);\n });\n\n readonly encoding = this.#store.select('gl', 'outputEncoding');\n readonly shadowRenderOrder = this.select('renderOrder');\n readonly shadowOpacity = this.select('opacity');\n readonly shadowDepthWrite = this.select('depthWrite');\n\n readonly cameraArgs = computed(() => {\n const width = this.#scaledWidth();\n const height = this.#scaledHeight();\n return [-width / 2, width / 2, height / 2, -height / 2, 0, this.#far()];\n });\n readonly contactShadows = computed(() => {\n const color = this.#color();\n const resolution = this.#resolution();\n const renderTarget = new THREE.WebGLRenderTarget(resolution, resolution);\n const renderTargetBlur = new THREE.WebGLRenderTarget(resolution, resolution);\n renderTargetBlur.texture.generateMipmaps = renderTarget.texture.generateMipmaps = false;\n const planeGeometry = new THREE.PlaneGeometry(this.#scaledWidth(), this.#scaledHeight()).rotateX(Math.PI / 2);\n const blurPlane = new Mesh(planeGeometry);\n const depthMaterial = new THREE.MeshDepthMaterial();\n depthMaterial.depthTest = depthMaterial.depthWrite = false;\n depthMaterial.onBeforeCompile = (shader) => {\n shader.uniforms = {\n ...shader.uniforms,\n ucolor: { value: new THREE.Color(color) },\n };\n shader.fragmentShader = shader.fragmentShader.replace(\n `void main() {`, //\n `uniform vec3 ucolor;\n void main() {\n `\n );\n shader.fragmentShader = shader.fragmentShader.replace(\n 'vec4( vec3( 1.0 - fragCoordZ ), opacity );',\n // Colorize the shadow, multiply by the falloff so that the center can remain darker\n 'vec4( ucolor * fragCoordZ * 2.0, ( 1.0 - fragCoordZ ) * 1.0 );'\n );\n };\n\n const horizontalBlurMaterial = new THREE.ShaderMaterial(HorizontalBlurShader);\n const verticalBlurMaterial = new THREE.ShaderMaterial(VerticalBlurShader);\n verticalBlurMaterial.depthTest = horizontalBlurMaterial.depthTest = false;\n\n return {\n renderTarget,\n planeGeometry,\n depthMaterial,\n blurPlane,\n horizontalBlurMaterial,\n verticalBlurMaterial,\n renderTargetBlur,\n };\n });\n\n constructor() {\n super({\n scale: 10,\n frames: Infinity,\n opacity: 1,\n width: 1,\n height: 1,\n blur: 1,\n far: 10,\n resolution: 512,\n smooth: true,\n color: '#000000',\n depthWrite: false,\n renderOrder: 0,\n });\n injectBeforeRender(this.#onBeforeRender.bind(this, 0));\n }\n\n #onBeforeRender(count: number, { scene, gl }: NgtRenderState) {\n const { frames = Infinity, blur = 1, smooth = true } = this.get();\n const { depthMaterial, renderTarget } = this.contactShadows();\n const shadowCamera = this.shadowCameraRef.nativeElement;\n if (shadowCamera && (frames === Infinity || count < frames)) {\n const initialBackground = scene.background;\n scene.background = null;\n const initialOverrideMaterial = scene.overrideMaterial;\n scene.overrideMaterial = depthMaterial;\n gl.setRenderTarget(renderTarget);\n gl.render(scene, shadowCamera);\n scene.overrideMaterial = initialOverrideMaterial;\n\n this.#blurShadows(blur);\n if (smooth) this.#blurShadows(blur * 0.4);\n\n gl.setRenderTarget(null);\n scene.background = initialBackground;\n count++;\n }\n }\n\n #blurShadows(blur: number) {\n const { blurPlane, horizontalBlurMaterial, verticalBlurMaterial, renderTargetBlur, renderTarget } =\n this.contactShadows();\n const gl = this.#store.get('gl');\n const shadowCamera = this.shadowCameraRef.nativeElement;\n\n blurPlane.visible = true;\n\n blurPlane.material = horizontalBlurMaterial;\n horizontalBlurMaterial.uniforms['tDiffuse'].value = renderTarget.texture;\n horizontalBlurMaterial.uniforms['h'].value = (blur * 1) / 256;\n\n gl.setRenderTarget(renderTargetBlur);\n gl.render(blurPlane, shadowCamera);\n\n blurPlane.material = verticalBlurMaterial;\n verticalBlurMaterial.uniforms['tDiffuse'].value = renderTargetBlur.texture;\n verticalBlurMaterial.uniforms['v'].value = (blur * 1) / 256;\n\n gl.setRenderTarget(renderTarget);\n gl.render(blurPlane, shadowCamera);\n\n blurPlane.visible = false;\n }\n}\n","export const ngtsEnvironmentPresetsObj = {\n sunset: 'venice/venice_sunset_1k.hdr',\n dawn: 'kiara/kiara_1_dawn_1k.hdr',\n night: 'dikhololo/dikhololo_night_1k.hdr',\n warehouse: 'empty-wharehouse/empty_warehouse_01_1k.hdr',\n forest: 'forrest-slope/forest_slope_1k.hdr',\n apartment: 'lebombo/lebombo_1k.hdr',\n studio: 'studio-small-3/studio_small_03_1k.hdr',\n city: 'potsdamer-platz/potsdamer_platz_1k.hdr',\n park: 'rooitou/rooitou_park_1k.hdr',\n lobby: 'st-fagans/st_fagans_interior_1k.hdr',\n};\n\nexport type NgtsEnvironmentPresetsType = keyof typeof ngtsEnvironmentPresetsObj;\n","import { Directive, ElementRef, Input, computed } from '@angular/core';\nimport { NgtSignalStore } from 'angular-three';\nimport { Loader, Scene, Texture, TextureEncoding } from 'three';\nimport { NgtsEnvironmentPresetsType } from './assets';\n\nexport interface NgtsEnvironmentInputState {\n frames?: number;\n near?: number;\n far?: number;\n resolution?: number;\n background?: boolean | 'only';\n blur?: number;\n map?: Texture;\n files?: string | string[];\n path?: string;\n preset?: NgtsEnvironmentPresetsType;\n scene?: Scene | ElementRef<Scene>;\n extensions?: (loader: Loader) => void;\n ground?: boolean | { radius?: number; height?: number; scale?: number };\n encoding?: TextureEncoding;\n}\n\n@Directive()\nexport abstract class NgtsEnvironmentInput extends NgtSignalStore<NgtsEnvironmentInputState> {\n @Input() set frames(frames: NgtsEnvironmentInputState['frames']) {\n this.set({ frames });\n }\n\n @Input() set near(near: NgtsEnvironmentInputState['near']) {\n this.set({ near });\n }\n\n @Input() set far(far: NgtsEnvironmentInputState['far']) {\n this.set({ far });\n }\n\n @Input() set resolution(resolution: NgtsEnvironmentInputState['resolution']) {\n this.set({ resolution });\n }\n\n @Input() set background(background: NgtsEnvironmentInputState['background']) {\n this.set({ background });\n }\n\n @Input() set blur(blur: NgtsEnvironmentInputState['blur']) {\n this.set({ blur });\n }\n\n @Input() set map(map: NgtsEnvironmentInputState['map']) {\n this.set({ map });\n }\n\n @Input() set files(files: NgtsEnvironmentInputState['files']) {\n this.set({ files });\n }\n\n @Input() set path(path: NgtsEnvironmentInputState['path']) {\n this.set({ path });\n }\n\n @Input() set preset(preset: NgtsEnvironmentInputState['preset']) {\n this.set({ preset });\n }\n\n @Input() set scene(scene: NgtsEnvironmentInputState['scene']) {\n this.set({ scene });\n }\n\n @Input() set extensions(extensions: NgtsEnvironmentInputState['extensions']) {\n this.set({ extensions });\n }\n\n @Input() set ground(ground: NgtsEnvironmentInputState['ground']) {\n this.set({ ground });\n }\n\n @Input() set encoding(encoding: NgtsEnvironmentInputState['encoding']) {\n this.set({ encoding });\n }\n\n readonly environmentFrames = this.select('frames');\n readonly environmentNear = this.select('near');\n readonly environmentFar = this.select('far');\n readonly environmentResolution = this.select('resolution');\n readonly environmentBackground = this.select('background');\n readonly environmentBlur = this.select('blur');\n readonly environmentMap = this.select('map');\n readonly environmentFiles = this.select('files');\n readonly environmentPath = this.select('path');\n readonly environmentPreset = this.select('preset');\n readonly environmentScene = this.select('scene');\n readonly environmentExtensions = this.select('extensions');\n readonly environmentGround = this.select('ground');\n readonly environmentEncoding = this.select('encoding');\n\n readonly environmentParams = computed(() => ({\n files: this.environmentFiles(),\n path: this.environmentPath(),\n preset: this.environmentPreset(),\n extensions: this.environmentExtensions(),\n encoding: this.environmentEncoding(),\n }));\n}\n","import {\n ChangeDetectorRef,\n DestroyRef,\n ElementRef,\n Injector,\n computed,\n effect,\n inject,\n runInInjectionContext,\n} from '@angular/core';\nimport { assertInjectionContext, injectNgtLoader, injectNgtRef, is, safeDetectChanges } from 'angular-three';\nimport {\n CubeReflectionMapping,\n CubeTexture,\n CubeTextureLoader,\n EquirectangularReflectionMapping,\n LinearEncoding,\n sRGBEncoding,\n} from 'three';\nimport { RGBELoader } from 'three-stdlib';\nimport { ngtsEnvironmentPresetsObj } from './assets';\nimport { type NgtsEnvironmentInput } from './environment-input';\n\nfunction resolveScene(scene: THREE.Scene | ElementRef<THREE.Scene>) {\n return is.ref(scene) ? scene.nativeElement : scene;\n}\n\nexport function setEnvProps(\n background: boolean | 'only',\n scene: THREE.Scene | ElementRef<THREE.Scene> | undefined,\n defaultScene: THREE.Scene,\n texture: THREE.Texture,\n blur = 0\n) {\n const target = resolveScene(scene || defaultScene);\n const oldbg = target.background;\n const oldenv = target.environment;\n const oldBlur = target.backgroundBlurriness || 0;\n\n if (background !== 'only') target.environment = texture;\n if (background) target.background = texture;\n if (background && target.backgroundBlurriness !== undefined) target.backgroundBlurriness = blur;\n\n return () => {\n if (background !== 'only') target.environment = oldenv;\n if (background) target.background = oldbg;\n if (background && target.backgroundBlurriness !== undefined) target.backgroundBlurriness = oldBlur;\n };\n}\n\ntype NgtsInjectEnvironmentParams = Partial<\n Pick<NgtsEnvironmentInput, 'files' | 'path' | 'preset' | 'extensions' | 'encoding'>\n>;\n\nconst CUBEMAP_ROOT = 'https://market-assets.fra1.cdn.digitaloceanspaces.com/market-assets/hdris/';\nexport function injectNgtsEnvironment(paramsFactory: () => Partial<NgtsInjectEnvironmentParams>, injector?: Injector) {\n injector = assertInjectionContext(injectNgtsEnvironment, injector);\n const textureRef = injectNgtRef<THREE.Texture | CubeTexture>();\n return runInInjectionContext(injector, () => {\n const cdr = inject(ChangeDetectorRef);\n\n inject(DestroyRef).onDestroy(() => {\n textureRef.untracked.dispose();\n });\n\n const params = computed(() => {\n let { files, preset, encoding, path, extensions } = paramsFactory() as NgtsInjectEnvironmentParams;\n\n if (files == null) {\n files = ['/px.png', '/nx.png', '/py.png', '/ny.png', '/pz.png', '/nz.png'];\n }\n\n if (path == null) {\n path = '';\n }\n\n if (preset) {\n if (!(preset in ngtsEnvironmentPresetsObj))\n throw new Error('Preset must be one of: ' + Object.keys(ngtsEnvironmentPresetsObj).join(', '));\n files = ngtsEnvironmentPresetsObj[preset];\n path = CUBEMAP_ROOT;\n }\n\n return { files, preset, encoding, path, extensions } as NgtsInjectEnvironmentParams;\n });\n\n const loaderResult = injectNgtLoader(\n // @ts-expect-error\n () => {\n const { files } = params();\n return Array.isArray(files) ? CubeTextureLoader : RGBELoader;\n },\n () => {\n const { files } = params();\n return Array.isArray(files) ? [files] : files;\n },\n {\n extensions: (loader) => {\n const { path, extensions } = params();\n loader.setPath(path);\n if (extensions) extensions(loader);\n },\n }\n );\n\n effect(\n () => {\n const result = loaderResult();\n if (!result) return;\n const { files, encoding } = params();\n const texture: THREE.Texture | THREE.CubeTexture = Array.isArray(files) ? result[0] : result;\n texture.mapping = Array.isArray(files) ? CubeReflectionMapping : EquirectangularReflectionMapping;\n texture.encoding = encoding ?? Array.isArray(files) ? sRGBEncoding : LinearEncoding;\n\n textureRef.nativeElement = texture;\n safeDetectChanges(cdr);\n },\n { allowSignalWrites: true }\n );\n\n return textureRef;\n });\n}\n","import { Directive, Input, computed, effect, inject } from '@angular/core';\nimport { NgtStore, requestAnimationFrameInInjectionContext } from 'angular-three';\nimport { NgtsEnvironmentInput } from './environment-input';\nimport { injectNgtsEnvironment, setEnvProps } from './utils';\n\n@Directive({\n selector: 'ngts-environment-cube',\n standalone: true,\n})\nexport class NgtsEnvironmentCube {\n protected readonly environmentInput = inject(NgtsEnvironmentInput);\n readonly #store = inject(NgtStore);\n readonly textureRef = injectNgtsEnvironment(this.environmentInput.environmentParams);\n\n @Input() set background(background: boolean) {\n this.environmentInput.set({ background });\n }\n\n constructor() {\n this.environmentInput.patch({ background: false });\n requestAnimationFrameInInjectionContext(() => {\n this.#setEnvProps();\n });\n }\n\n #setEnvProps() {\n const scene = this.#store.select('scene');\n const trigger = computed(() => ({\n defaultScene: scene(),\n scene: this.environmentInput.environmentScene(),\n background: this.environmentInput.environmentBackground(),\n blur: this.environmentInput.environmentBlur(),\n texture: this.textureRef.nativeElement,\n }));\n\n effect((onCleanup) => {\n const { background, defaultScene, scene, blur, texture } = trigger();\n if (!texture) return;\n onCleanup(setEnvProps(background!, scene, defaultScene, texture, blur));\n });\n }\n}\n","import { Directive, Input, computed, effect, inject } from '@angular/core';\nimport { NgtStore, requestAnimationFrameInInjectionContext } from 'angular-three';\nimport { NgtsEnvironmentInput } from './environment-input';\nimport { setEnvProps } from './utils';\n\n@Directive({\n selector: 'ngts-environment-map',\n standalone: true,\n})\nexport class NgtsEnvironmentMap {\n protected readonly environmentInput = inject(NgtsEnvironmentInput);\n readonly #store = inject(NgtStore);\n\n @Input() set map(map: THREE.Texture) {\n this.environmentInput.set({ map });\n }\n\n @Input() set background(background: boolean) {\n this.environmentInput.set({ background });\n }\n\n constructor() {\n this.environmentInput.patch({ background: false });\n requestAnimationFrameInInjectionContext(() => {\n this.#setEnvProps();\n });\n }\n\n #setEnvProps() {\n const scene = this.#store.select('scene');\n const trigger = computed(() => ({\n defaultScene: scene(),\n scene: this.environmentInput.environmentScene(),\n background: this.environmentInput.environmentBackground(),\n blur: this.environmentInput.environmentBlur(),\n texture: this.environmentInput.environmentMap(),\n }));\n\n effect((onCleanup) => {\n const { background, defaultScene, scene, blur, texture } = trigger();\n if (!texture) return;\n onCleanup(setEnvProps(background!, scene, defaultScene, texture, blur));\n });\n }\n}\n","import { Component, computed, CUSTOM_ELEMENTS_SCHEMA, inject } from '@angular/core';\nimport { extend, NgtArgs } from 'angular-three';\nimport { GroundProjectedEnv } from 'three-stdlib';\nimport { NgtsEnvironmentInput } from './environment-input';\nimport { NgtsEnvironmentMap } from './environment-map';\nimport { injectNgtsEnvironment } from './utils';\n\nextend({ GroundProjectedEnv });\n\n@Component({\n selector: 'ngts-environment-ground',\n standalone: true,\n template: `\n <ngts-environment-map [map]=\"texture()\" [background]=\"!!environmentInput.environmentBackground()\" />\n <ngt-ground-projected-env *args=\"groundArgs()\" [scale]=\"scale()\" [height]=\"height()\" [radius]=\"radius()\" />\n `,\n imports: [NgtsEnvironmentMap, NgtArgs],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsEnvironmentGround {\n protected readonly environmentInput = inject(NgtsEnvironmentInput);\n readonly #defaultTexture = injectNgtsEnvironment(this.environmentInput.environmentParams);\n\n readonly texture = computed(\n () => {\n const defaultTexture = this.#defaultTexture.nativeElement;\n return this.environmentInput.environmentMap() || defaultTexture;\n },\n { equal: Object.is }\n );\n\n readonly groundArgs = computed(() => (this.texture() ? [this.texture()] : []));\n readonly height = computed(() => (this.environmentInput.environmentGround() as any)?.height);\n readonly radius = computed(() => (this.environmentInput.environmentGround() as any)?.radius);\n readonly scale = computed(() => (this.environmentInput.environmentGround() as any)?.scale ?? 1000);\n}\n","import { NgIf } from '@angular/common';\nimport { Component, computed, CUSTOM_ELEMENTS_SCHEMA, effect, inject } from '@angular/core';\nimport {\n extend,\n injectBeforeRender,\n injectNgtRef,\n NgtArgs,\n NgtPortal,\n NgtPortalContent,\n NgtRenderState,\n NgtStore,\n prepare,\n requestAnimationFrameInInjectionContext,\n} from 'angular-three';\nimport * as THREE from 'three';\nimport { CubeCamera } from 'three';\nimport { NgtsEnvironmentCube } from './environment-cube';\nimport { NgtsEnvironmentInput } from './environment-input';\nimport { NgtsEnvironmentMap } from './environment-map';\nimport { setEnvProps } from './utils';\n\nextend({ CubeCamera });\n\n@Component({\n selector: 'ngts-environment-portal',\n standalone: true,\n template: `\n <ngt-portal [container]=\"virtualSceneRef\">\n <ng-template ngtPortalContent>\n <ng-content />\n <ngt-cube-camera *args=\"cameraArgs()\" [ref]=\"cubeCameraRef\" />\n <ng-container\n *ngIf=\"\n environmentInput.environmentFiles() || environmentInput.environmentPreset();\n else environmentMap\n \"\n >\n <ngts-environment-cube [background]=\"true\" />\n </ng-container>\n <ng-template #environmentMap>\n <ngts-environment-map\n *ngIf=\"environmentInput.environmentMap() as map\"\n [background]=\"true\"\n [map]=\"map\"\n />\n </ng-template>\n </ng-template>\n </ngt-portal>\n `,\n imports: [NgtPortal, NgtPortalContent, NgtsEnvironmentMap, NgtsEnvironmentCube, NgIf, NgtArgs],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsEnvironmentPortal {\n protected readonly environmentInput = inject(NgtsEnvironmentInput);\n readonly #store = inject(NgtStore);\n\n readonly virtualSceneRef = injectNgtRef<THREE.Scene>(prepare(new THREE.Scene()));\n readonly cubeCameraRef = injectNgtRef<THREE.CubeCamera>();\n\n readonly #fbo = computed(() => {\n const fbo = new THREE.WebGLCubeRenderTarget(this.environmentInput.environmentResolution());\n fbo.texture.type = THREE.HalfFloatType;\n return fbo;\n });\n readonly cameraArgs = computed(() => [\n this.environmentInput.environmentNear()!,\n this.environmentInput.environmentFar()!,\n this.#fbo(),\n ]);\n\n constructor() {\n this.environmentInput.patch({\n near: 1,\n far: 1000,\n resolution: 256,\n frames: 1,\n background: false,\n preset: undefined,\n });\n requestAnimationFrameInInjectionContext(() => {\n this.#setEnvProps();\n });\n injectBeforeRender(this.#onBeforeRender.bind(this, 1));\n }\n\n #setEnvProps() {\n const gl = this.#store.select('gl');\n const scene = this.#store.select('scene');\n\n const trigger = computed(() => ({\n gl: gl(),\n defaultScene: scene(),\n fbo: this.#fbo(),\n scene: this.environmentInput.environmentScene(),\n background: this.environmentInput.environmentBackground(),\n frames: this.environmentInput.environmentFrames(),\n blur: this.environmentInput.environmentBlur(),\n virtualScene: this.virtualSceneRef.nativeElement,\n cubeCamera: this.cubeCameraRef.nativeElement,\n }));\n\n effect((onCleanup) => {\n const { virtualScene, blur, frames, background, scene, fbo, defaultScene, gl, cubeCamera } = trigger();\n if (!cubeCamera || !virtualScene) return;\n if (frames === 1) cubeCamera.update(gl, virtualScene);\n onCleanup(setEnvProps(background!, scene, defaultScene, fbo.texture, blur));\n });\n }\n\n #onBeforeRender(count: number, { gl }: NgtRenderState) {\n const { frames } = this.environmentInput.get();\n if (frames === Infinity || count < frames!) {\n const camera = this.cubeCameraRef.nativeElement;\n const virtualScene = this.virtualSceneRef.nativeElement;\n if (camera && virtualScene) {\n camera.update(gl, virtualScene);\n count++;\n }\n }\n }\n}\n","import { NgIf, NgTemplateOutlet } from '@angular/common';\nimport { CUSTOM_ELEMENTS_SCHEMA, Component, ContentChild, Directive, TemplateRef } from '@angular/core';\nimport { NgtsEnvironmentCube } from './environment-cube';\nimport { NgtsEnvironmentGround } from './environment-ground';\nimport { NgtsEnvironmentInput } from './environment-input';\nimport { NgtsEnvironmentMap } from './environment-map';\nimport { NgtsEnvironmentPortal } from './environment-portal';\n\n@Directive({ selector: 'ng-template[ngtsEnvironmentContent]', standalone: true })\nexport class NgtsEnvironmentContent {}\n\n@Component({\n selector: 'ngts-environment',\n standalone: true,\n template: `\n <ngts-environment-ground *ngIf=\"environmentGround(); else noGround\" />\n <ng-template #noGround>\n <ngts-environment-map\n *ngIf=\"environmentMap() as map; else noMap\"\n [map]=\"map\"\n [background]=\"!!environmentBackground()\"\n />\n <ng-template #noMap>\n <ngts-environment-portal *ngIf=\"content; else noPortal\">\n <ng-container *ngTemplateOutlet=\"content\" />\n </ngts-environment-portal>\n <ng-template #noPortal>\n <ngts-environment-cube [background]=\"!!environmentBackground()\" />\n </ng-template>\n </ng-template>\n </ng-template>\n `,\n imports: [\n NgtsEnvironmentMap,\n NgtsEnvironmentGround,\n NgtsEnvironmentCube,\n NgtsEnvironmentPortal,\n NgIf,\n NgTemplateOutlet,\n ],\n providers: [{ provide: NgtsEnvironmentInput, useExisting: NgtsEnvironment }],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsEnvironment extends NgtsEnvironmentInput {\n @ContentChild(NgtsEnvironmentContent, { read: TemplateRef }) content?: TemplateRef<unknown>;\n}\n","import { Component, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';\nimport { extend, injectBeforeRender, injectNgtRef, NgtRenderState, NgtSignalStore, type NgtGroup } from 'angular-three';\nimport * as THREE from 'three';\nimport { Group } from 'three';\n\nextend({ Group });\n\nexport type NgtsFloatState = {\n enabled: boolean;\n speed: number;\n floatIntensity: number;\n rotationIntensity: number;\n floatingRange: [number?, number?];\n};\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ngts-float': NgtsFloatState & NgtGroup;\n }\n}\n\n@Component({\n selector: 'ngts-float',\n standalone: true,\n template: `\n <ngt-group ngtCompound>\n <ngt-group [ref]=\"floatRef\">\n <ng-content />\n </ngt-group>\n </ngt-group>\n `,\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsFloat extends NgtSignalStore<NgtsFloatState> {\n readonly #offset = Math.random() * 10000;\n\n @Input() floatRef = injectNgtRef<THREE.Group>();\n\n @Input() set enabled(enabled: boolean) {\n this.set({ enabled });\n }\n\n @Input() set speed(speed: number) {\n this.set({ speed });\n }\n\n @Input() set rotationIntensity(rotationIntensity: number) {\n this.set({ rotationIntensity });\n }\n\n @Input() set floatIntensity(floatIntensity: number) {\n this.set({ floatIntensity });\n }\n\n @Input() set floatingRange(floatingRange: [number?, number?]) {\n this.set({ floatingRange });\n }\n\n constructor() {\n super({ speed: 1, rotationIntensity: 1, floatIntensity: 1, floatingRange: [-0.1, 0.1], enabled: true });\n injectBeforeRender(this.#onBeforeRender.bind(this));\n }\n\n #onBeforeRender({ clock }: NgtRenderState) {\n const float = this.floatRef.untracked;\n if (!float) return;\n const { enabled, speed, floatingRange, floatIntensity, rotationIntensity } = this.get();\n if (!enabled || speed === 0) return;\n\n const t = this.#offset + clock.getElapsedTime();\n float.rotation.x = (Math.cos((t / 4) * speed) / 8) * rotationIntensity;\n float.rotation.y = (Math.sin((t / 4) * speed) / 8) * rotationIntensity;\n float.rotation.z = (Math.sin((t / 4) * speed) / 20) * rotationIntensity;\n let yPosition = Math.sin((t / 4) * speed) / 10;\n yPosition = THREE.MathUtils.mapLinear(yPosition, -0.1, 0.1, floatingRange[0] ?? -0.1, floatingRange[1] ?? 0.1);\n float.position.y = yPosition * floatIntensity;\n }\n}\n","import { Component, computed, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';\nimport { injectNgtRef, NgtArgs, NgtSignalStore } from 'angular-three';\nimport * as THREE from 'three';\nimport { Sky } from 'three-stdlib';\n\nfunction calcPosFromAngles(inclination: number, azimuth: number, vector = new THREE.Vector3()) {\n const theta = Math.PI * (inclination - 0.5);\n const phi = 2 * Math.PI * (azimuth - 0.5);\n\n vector.x = Math.cos(phi);\n vector.y = Math.sin(theta);\n vector.z = Math.sin(phi);\n\n return vector;\n}\n\nexport interface NgtsSkyState {\n distance: number;\n sunPosition: THREE.Vector3 | Parameters<THREE.Vector3['set']>;\n inclination: number;\n azimuth: number;\n mieCoefficient: number;\n mieDirectionalG: number;\n rayleigh: number;\n turbidity: number;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ngts-sky': NgtsSkyState & Sky;\n }\n}\n\n@Component({\n selector: 'ngts-sky',\n standalone: true,\n template: `\n <ngt-primitive ngtCompound *args=\"[sky]\" [ref]=\"skyRef\" [scale]=\"scale()\">\n <ngt-value [rawValue]=\"skyMieCoefficient()\" attach=\"material.uniforms.mieCoefficient.value\" />\n <ngt-value [rawValue]=\"skyMieDirectionalG()\" attach=\"material.uniforms.mieDirectionalG.value\" />\n <ngt-value [rawValue]=\"skyRayleigh()\" attach=\"material.uniforms.rayleigh.value\" />\n <ngt-value [rawValue]=\"calculatedSunPosition()\" attach=\"material.uniforms.sunPosition.value\" />\n <ngt-value [rawValue]=\"skyTurbidity()\" attach=\"material.uniforms.turbidity.value\" />\n </ngt-primitive>\n `,\n imports: [NgtArgs],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsSky extends NgtSignalStore<NgtsSkyState> {\n @Input() skyRef = injectNgtRef<Sky>();\n\n @Input() set distance(distance: number) {\n this.set({ distance });\n }\n\n @Input() set sunPosition(sunPosition: THREE.Vector3 | Parameters<THREE.Vector3['set']>) {\n this.set({ sunPosition });\n }\n\n @Input() set inclination(inclination: number) {\n this.set({ inclination });\n }\n\n @Input() set azimuth(azimuth: number) {\n this.set({ azimuth });\n }\n\n @Input() set mieCoefficient(mieCoefficient: number) {\n this.set({ mieCoefficient });\n }\n\n @Input() set mieDirectionalG(mieDirectionalG: number) {\n this.set({ mieDirectionalG });\n }\n\n @Input() set rayleigh(rayleigh: number) {\n this.set({ rayleigh });\n }\n\n @Input() set turbidity(turbidity: number) {\n this.set({ turbidity });\n }\n\n readonly #inclination = this.select('inclination');\n readonly #azimuth = this.select('azimuth');\n readonly #sunPosition = this.select('sunPosition');\n readonly #distance = this.select('distance');\n\n readonly sky = new Sky();\n\n readonly skyMieCoefficient = this.select('mieCoefficient');\n readonly skyMieDirectionalG = this.select('mieDirectionalG');\n readonly skyRayleigh = this.select('rayleigh');\n readonly skyTurbidity = this.select('turbidity');\n\n readonly calculatedSunPosition = computed(\n () => this.#sunPosition() || calcPosFromAngles(this.#inclination(), this.#azimuth())\n );\n readonly scale = computed(() => new THREE.Vector3().setScalar(this.#distance()));\n\n constructor() {\n super({\n inclination: 0.6,\n azimuth: 0.1,\n distance: 1000,\n mieCoefficient: 0.005,\n mieDirectionalG: 0.8,\n rayleigh: 0.5,\n turbidity: 10,\n });\n }\n}\n","import { Component, computed, CUSTOM_ELEMENTS_SCHEMA, inject, Input, isSignal, Signal } from '@angular/core';\nimport {\n extend,\n injectBeforeRender,\n injectNgtRef,\n NgtArgs,\n NgtSignalStore,\n NgtStore,\n type NgtRenderState,\n} from 'angular-three';\nimport { SparklesMaterial } from 'angular-three-soba/shaders';\nimport * as THREE from 'three';\nimport { BufferAttribute, BufferGeometry, Color, MathUtils, Points, Vector2, Vector3, Vector4 } from 'three';\n\nextend({ SparklesMaterial, Points, BufferGeometry, BufferAttribute });\n\nconst isFloat32Array = (def: any): def is Float32Array => def && (def as Float32Array).constructor === Float32Array;\nconst expandColor = (v: THREE.Color) => [v.r, v.g, v.b];\nconst isVector = (v: any): v is THREE.Vector2 | THREE.Vector3 | THREE.Vector4 =>\n v instanceof Vector2 || v instanceof Vector3 || v instanceof Vector4;\nconst normalizeVector = (v: any): number[] => {\n if (Array.isArray(v)) return v;\n else if (isVector(v)) return v.toArray();\n return [v, v, v] as number[];\n};\n\nfunction usePropAsIsOrAsAttribute<T = any>(count: number, prop?: T | Float32Array, setDefault?: (v: T) => number) {\n if (prop !== undefined) {\n if (isFloat32Array(prop)) {\n return prop as Float32Array;\n } else {\n if (prop instanceof Color) {\n const a = Array.from({ length: count * 3 }, () => expandColor(prop)).flat();\n return Float32Array.from(a);\n } else if (isVector(prop) || Array.isArray(prop)) {\n const a = Array.from({ length: count * 3 }, () => normalizeVector(prop)).flat();\n return Float32Array.from(a);\n }\n return Float32Array.from({ length: count }, () => prop as unknown as number);\n }\n }\n return Float32Array.from({ length: count }, setDefault!);\n}\n\nexport interface NgtsSparklesState {\n /** Number of particles (default: 100) */\n count: number;\n /** Speed of particles (default: 1) */\n speed: number | Float32Array;\n /** Opacity of particles (default: 1) */\n opacity: number | Float32Array;\n /** Color of particles (default: 100) */\n color?: THREE.ColorRepresentation | Float32Array;\n /** Size of particles (default: randomized between 0 and 1) */\n size?: number | Float32Array;\n /** The space the particles occupy (default: 1) */\n scale: number | [number, number, number] | THREE.Vector3;\n /** Movement factor (default: 1) */\n noise: number | [number, number, number] | THREE.Vector3 | Float32Array;\n}\n\n@Component({\n selector: 'ngts-sparkles',\n standalone: true,\n template: `\n <ngt-points ngtCompount [ref]=\"pointsRef\">\n <ngt-buffer-geometry>\n <ngt-buffer-attribute *args=\"[positions(), 3]\" attach=\"attributes.position\" />\n <ngt-buffer-attribute *args=\"[sizes(), 1]\" attach=\"attributes.size\" />\n <ngt-buffer-attribute *args=\"[opacities(), 1]\" attach=\"attributes.opacity\" />\n <ngt-buffer-attribute *args=\"[speeds(), 1]\" attach=\"attributes.speed\" />\n <ngt-buffer-attribute *args=\"[colors(), 3]\" attach=\"attributes.color\" />\n <ngt-buffer-attribute *args=\"[noises(), 3]\" attach=\"attributes.noise\" />\n </ngt-buffer-geometry>\n <ngt-sparkles-material [ref]=\"materialRef\" [transparent]=\"true\" [depthWrite]=\"false\" [pixelRatio]=\"dpr()\" />\n </ngt-points>\n `,\n imports: [NgtArgs],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsSparkles extends NgtSignalStore<NgtsSparklesState> {\n @Input() pointsRef = injectNgtRef<Points>();\n\n /** Number of particles (default: 100) */\n @Input() set count(count: number) {\n this.set({ count });\n }\n\n /** Speed of particles (default: 1) */\n @Input() set speed(speed: number | Float32Array) {\n this.set({ speed });\n }\n\n /** Opacity of particles (default: 1) */\n @Input() set opacity(opacity: number | Float32Array) {\n this.set({ opacity });\n }\n\n /** Color of particles (default: 100) */\n @Input() set color(color: THREE.ColorRepresentation | Float32Array) {\n this.set({ color });\n }\n\n /** Size of particles (default: randomized between 0 and 1) */\n @Input() set size(size: number | Float32Array) {\n this.set({ size });\n }\n\n /** The space the particles occupy (default: 1) */\n @Input() set scale(scale: number | [number, number, number] | THREE.Vector3) {\n this.set({ scale });\n }\n\n /** Movement factor (default: 1) */\n @Input() set noise(noise: number | [number, number, number] | THREE.Vector3 | Float32Array) {\n this.set({ noise });\n }\n\n readonly #store = inject(NgtStore);\n\n readonly #count = this.select('count');\n readonly #scale = this.select('scale');\n readonly #color = this.select('color');\n\n readonly materialRef = injectNgtRef<InstanceType<typeof SparklesMaterial>>();\n\n readonly dpr = this.#store.select('viewport', 'dpr');\n readonly positions = computed(() =>\n Float32Array.from(\n Array.from({ length: this.#count() }, () =>\n normalizeVector(this.#scale()).map(MathUtils.randFloatSpread)\n ).flat()\n )\n );\n\n readonly sizes = this.#getComputed('size', this.#count, Math.random);\n readonly opacities = this.#getComputed('opacity', this.#count);\n readonly speeds = this.#getComputed('speed', this.#count);\n readonly noises = this.#getComputed('noise', () => this.#count() * 3);\n readonly colors = this.#getComputed(\n computed(() => {\n const color = this.#color();\n return !isFloat32Array(color) ? new THREE.Color(color) : color;\n }),\n () => (this.#color() === undefined ? this.#count() * 3 : this.#count()),\n () => 1\n );\n\n #getComputed<TKey extends keyof NgtsSparklesState>(\n nameOrComputed: TKey | Signal<NgtsSparklesState[TKey]>,\n count: () => number,\n setDefault?: (value: NgtsSparklesState[TKey]) => number\n ) {\n const value =\n typeof nameOrComputed !== 'string' && isSignal(nameOrComputed)\n ? nameOrComputed\n : this.select(nameOrComputed);\n return computed(() => usePropAsIsOrAsAttribute(count(), value(), setDefault));\n }\n\n constructor() {\n super({\n noise: 1,\n count: 100,\n speed: 1,\n opacity: 1,\n scale: 1,\n });\n injectBeforeRender(this.#onBeforeRender.bind(this));\n }\n\n #onBeforeRender({ clock }: NgtRenderState) {\n if (!this.materialRef.nativeElement) return;\n this.materialRef.nativeElement.uniforms['time'].value = clock.elapsedTime;\n }\n}\n","import { Directive, Input } from '@angular/core';\nimport { NgtSignalStore } from 'angular-three';\n\nexport interface NgtsSpotLightInputState {\n depthBuffer?: THREE.DepthTexture;\n angle: number;\n distance: number;\n attenuation: number;\n anglePower: number;\n radiusTop: number;\n radiusBottom: number;\n opacity: number;\n color: string | number;\n debug: boolean;\n}\n\n@Directive()\nexport abstract class NgtsSpotLightInput extends NgtSignalStore<NgtsSpotLightInputState> {\n @Input() set depthBuffer(depthBuffer: THREE.DepthTexture) {\n this.set({ depthBuffer });\n }\n\n @Input() set angle(angle: number) {\n this.set({ angle });\n }\n\n @Input() set distance(distance: number) {\n this.set({ distance });\n }\n\n @Input() set attenuation(attenuation: number) {\n this.set({ attenuation });\n }\n\n @Input() set anglePower(anglePower: number) {\n this.set({ anglePower });\n }\n\n @Input() set radiusTop(radiusTop: number) {\n this.set({ radiusTop });\n }\n\n @Input() set radiusBottom(radiusBottom: number) {\n this.set({ radiusBottom });\n }\n\n @Input() set opacity(opacity: number) {\n this.set({ opacity });\n }\n\n @Input() set color(color: string | number) {\n this.set({ color });\n }\n\n @Input() set debug(debug: boolean) {\n this.set({ debug });\n }\n\n readonly lightDebug = this.select('debug');\n readonly lightColor = this.select('color');\n readonly lightOpacity = this.select('opacity');\n readonly lightRadiusBottom = this.select('radiusBottom');\n readonly lightRadiusTop = this.select('radiusTop');\n readonly lightAnglePower = this.select('anglePower');\n readonly lightAttenuation = this.select('attenuation');\n readonly lightDistance = this.select('distance');\n readonly lightAngle = this.select('angle');\n readonly lightDepthBuffer = this.select('depthBuffer');\n}\n","import { Component, computed, CUSTOM_ELEMENTS_SCHEMA, inject } from '@angular/core';\nimport { extend, injectBeforeRender, injectNgtRef, NgtArgs, NgtStore } from 'angular-three';\nimport { SpotLightMaterial } from 'angular-three-soba/shaders';\nimport * as THREE from 'three';\nimport { Mesh } from 'three';\nimport { NgtsSpotLightInput } from './spot-light-input';\n\nextend({ Mesh });\n\n@Component({\n selector: 'ngts-volumetric-mesh',\n standalone: true,\n template: `\n <ngt-mesh [ref]=\"mesh\" [geometry]=\"geometry()\" [raycast]=\"nullRaycast\">\n <ngt-primitive *args=\"[material]\" attach=\"material\">\n <ngt-value [rawValue]=\"spotLightInput.lightOpacity()\" attach=\"uniforms.opacity.value\" />\n <ngt-value [rawValue]=\"spotLightInput.lightColor()\" attach=\"uniforms.lightColor.value\" />\n <ngt-value [rawValue]=\"spotLightInput.lightAttenuation()\" attach=\"uniforms.attenuation.value\" />\n <ngt-value [rawValue]=\"spotLightInput.lightAnglePower()\" attach=\"uniforms.anglePower.value\" />\n <ngt-value [rawvalue]=\"spotLightInput.lightDepthBuffer()\" attach=\"uniforms.depth.value\" />\n <ngt-value [rawvalue]=\"near()\" attach=\"uniforms.cameraNear.value\" />\n <ngt-value [rawvalue]=\"far()\" attach=\"uniforms.cameraFar.value\" />\n <ngt-value [rawvalue]=\"resolution()\" attach=\"uniforms.resolution.value\" />\n </ngt-primitive>\n </ngt-mesh>\n `,\n imports: [NgtArgs],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsVolumetricMesh {\n protected readonly spotLightInput = inject(NgtsSpotLightInput);\n readonly mesh = injectNgtRef<THREE.Mesh>();\n readonly material = new SpotLightMaterial();\n readonly nullRaycast = () => null;\n\n readonly #vec = new THREE.Vector3();\n readonly #store = inject(NgtStore);\n readonly #camera = this.#store.select('camera');\n readonly #size = this.#store.select('size');\n readonly #dpr = this.#store.select('viewport', 'dpr');\n\n readonly #normalizedRadiusTop = computed(() =>\n this.spotLightInput.lightRadiusTop() === undefined ? 0.1 : this.spotLightInput.lightRadiusTop()\n );\n readonly #normalizedRadiusBottom = computed(() =>\n this.spotLightInput.lightRadiusBottom() === undefined\n ? this.spotLightInput.lightAngle() * 7\n : this.spotLightInput.lightRadiusBottom()\n );\n readonly geometry = computed(() => {\n const distance = this.spotLightInput.lightDistance();\n const radiusTop = this.#normalizedRadiusTop();\n const radiusBottom = this.#normalizedRadiusBottom();\n\n const geometry = new THREE.CylinderGeometry(radiusTop, radiusBottom, distance, 128, 64, true);\n geometry.applyMatrix4(new THREE.Matrix4().makeTranslation(0, -distance / 2, 0));\n geometry.applyMatrix4(new THREE.Matrix4().makeRotationX(-Math.PI / 2));\n return geometry;\n });\n readonly near = computed(() => this.#camera().near);\n readonly far = computed(() => this.#camera().far);\n readonly resolution = computed(() =>\n this.spotLightInput.lightDepthBuffer()\n ? [this.#size().width * this.#dpr(), this.#size().height * this.#dpr()]\n : [0, 0]\n );\n\n constructor() {\n try {\n this.spotLightInput.patch({\n opacity: 1,\n color: 'white',\n distance: 5,\n angle: 0.15,\n attenuation: 5,\n anglePower: 5,\n });\n } catch {\n queueMicrotask(() => {\n this.spotLightInput.patch({\n opacity: 1,\n color: 'white',\n distance: 5,\n angle: 0.15,\n attenuation: 5,\n anglePower: 5,\n });\n });\n }\n injectBeforeRender(() => {\n const mesh = this.mesh.nativeElement;\n if (!mesh) return;\n this.material.uniforms['spotPosition'].value.copy(mesh.getWorldPosition(this.#vec));\n mesh.lookAt((mesh.parent as THREE.SpotLight).target.getWorldPosition(this.#vec));\n });\n }\n}\n","import { NgIf } from '@angular/common';\nimport { CUSTOM_ELEMENTS_SCHEMA, Component, InjectionToken, Input } from '@angular/core';\nimport { NgtArgs, NgtInjectedRef, extend, injectNgtRef } from 'angular-three';\nimport { Group, SpotLight, SpotLightHelper } from 'three';\nimport { NgtsSpotLightInput } from './spot-light-input';\nimport { NgtsVolumetricMesh } from './volumetric-mesh';\n\nextend({ SpotLight, SpotLightHelper, Group });\n\ndeclare module './spot-light-input' {\n interface NgtsSpotLightInputState {\n volumetric: boolean;\n }\n}\n\nexport type NgtsSpotLightApi = {\n spotLight: NgtInjectedRef<THREE.SpotLight>;\n debug: () => boolean;\n};\n\nexport const NGTS_SPOT_LIGHT_API = new InjectionToken<NgtsSpotLightApi>('NgtsSpotLight API');\n\nfunction spotLightApiFactory(spotLight: NgtsSpotLight): NgtsSpotLightApi {\n return {\n spotLight: spotLight.spotLightRef,\n debug: spotLight.lightDebug,\n };\n}\n\n@Component({\n selector: 'ngts-spot-light',\n standalone: true,\n template: `\n <ngt-group>\n <ng-container *ngIf=\"lightDebug() && spotLightRef.nativeElement\">\n <ngt-spot-light-helper *args=\"[spotLightRef.nativeElement]\" />\n </ng-container>\n <ngt-spot-light\n [ref]=\"spotLightRef\"\n [color]=\"lightColor()\"\n [distance]=\"lightDistance()\"\n [angle]=\"lightAngle()\"\n [castShadow]=\"true\"\n ngtCompound\n >\n <ngts-volumetric-mesh *ngIf=\"showVolumetric()\" />\n </ngt-spot-light>\n <ng-content />\n </ngt-group>\n `,\n providers: [\n { provide: NGTS_SPOT_LIGHT_API, useFactory: spotLightApiFactory, deps: [NgtsSpotLight] },\n { provide: NgtsSpotLightInput, useExisting: NgtsSpotLight },\n ],\n imports: [NgIf, NgtArgs, NgtsVolumetricMesh],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsSpotLight extends NgtsSpotLightInput {\n @Input() spotLightRef = injectNgtRef<THREE.SpotLight>();\n\n @Input() set volumetric(volumetric: boolean) {\n this.set({ volumetric });\n }\n\n readonly showVolumetric = this.select('volumetric');\n\n constructor() {\n super();\n this.set({\n opacity: 1,\n color: 'white',\n distance: 5,\n angle: 0.15,\n attenuation: 5,\n anglePower: 5,\n volumetric: true,\n debug: false,\n });\n }\n}\n","import { Directive, Input } from '@angular/core';\nimport { NgtSignalStore } from 'angular-three';\n\nexport interface NgtsSpotLightShadowMeshInputState {\n distance: number;\n alphaTest: number;\n scale: number;\n map: THREE.Texture;\n shader: string;\n width: number;\n height: number;\n}\n\n@Directive()\nexport abstract class NgtsSpotLightShadowMeshInput extends NgtSignalStore<NgtsSpotLightShadowMeshInputState> {\n @Input() set distance(distance: number) {\n this.set({ distance });\n }\n\n @Input() set alphaTest(alphaTest: number) {\n this.set({ alphaTest });\n }\n\n @Input() set scale(scale: number) {\n this.set({ scale });\n }\n\n @Input() set map(map: THREE.Texture) {\n this.set({ map });\n }\n\n @Input() set shader(shader: string) {\n this.set({ shader });\n }\n\n @Input() set width(width: number) {\n this.set({ width });\n }\n\n @Input() set height(height: number) {\n this.set({ height });\n }\n\n readonly shadowMeshDistance = this.select('distance');\n readonly shadowMeshAlphaTest = this.select('alphaTest');\n readonly shadowMeshScale = this.select('scale');\n readonly shadowMeshMap = this.select('map');\n readonly shadowMeshShader = this.select('shader');\n readonly shadowMeshWidth = this.select('width');\n readonly shadowMeshHeight = this.select('height');\n}\n","import { NgIf } from '@angular/common';\nimport {\n CUSTOM_ELEMENTS_SCHEMA,\n Component,\n Injector,\n computed,\n effect,\n inject,\n runInInjectionContext,\n} from '@angular/core';\nimport {\n NgtInjectedRef,\n assertInjectionContext,\n checkUpdate,\n extend,\n injectBeforeRender,\n injectNgtRef,\n requestAnimationFrameInInjectionContext,\n} from 'angular-three';\nimport * as THREE from 'three';\nimport { Mesh, MeshBasicMaterial, PlaneGeometry } from 'three';\nimport { FullScreenQuad } from 'three-stdlib';\nimport { NGTS_SPOT_LIGHT_API } from './spot-light';\nimport { NgtsSpotLightShadowMeshInput } from './spot-light-shadow-mesh-input';\n\nconst isSpotLight = (child: THREE.Object3D | null): child is THREE.SpotLight => {\n return (child as THREE.SpotLight)?.isSpotLight;\n};\n\nfunction injectShadowMeshCommon(\n spotLightRef: NgtInjectedRef<THREE.SpotLight>,\n meshRef: NgtInjectedRef<THREE.Mesh>,\n width: () => number,\n height: () => number,\n distance: () => number,\n injector?: Injector\n) {\n injector = assertInjectionContext(injectShadowMeshCommon, injector);\n runInInjectionContext(injector, () => {\n const pos = new THREE.Vector3();\n const dir = new THREE.Vector3();\n\n requestAnimationFrameInInjectionContext(() => {\n effect(() => {\n const spotLight = spotLightRef.nativeElement;\n if (!spotLight) return;\n if (isSpotLight(spotLight)) {\n spotLight.shadow.mapSize.set(width(), height());\n if (spotLight.shadow.map) {\n spotLight.shadow.map.setSize(width(), height());\n }\n spotLight.shadow.needsUpdate = true;\n } else {\n throw new Error('<ngts-spot-light-shadow> must be a child of a <ngts-spot-light>');\n }\n });\n });\n\n injectBeforeRender(() => {\n const spotLight = spotLightRef.nativeElement;\n const mesh = meshRef.nativeElement;\n\n if (!spotLight) return;\n\n const A = spotLight.position;\n const B = spotLight.target.position;\n\n dir.copy(B).sub(A);\n const len = dir.length();\n dir.normalize().multiplyScalar(len * distance());\n pos.copy(A).add(dir);\n\n if (mesh) {\n mesh.position.copy(pos);\n mesh.lookAt(spotLight.target.position);\n }\n });\n });\n}\n\nextend({ Mesh, PlaneGeometry, MeshBasicMaterial });\n\n@Component({\n selector: 'ngts-spot-light-shadow-mesh-no-shader',\n standalone: true,\n template: `\n <ngt-mesh [ref]=\"meshRef\" [scale]=\"shadowMeshInput.shadowMeshScale()\" [castShadow]=\"true\">\n <ngt-plane-geometry />\n <ngt-mesh-basic-material\n [transparent]=\"true\"\n [side]=\"DoubleSide\"\n [alphaTest]=\"shadowMeshInput.shadowMeshAlphaTest()\"\n [alphaMap]=\"shadowMeshInput.shadowMeshMap()\"\n [opacity]=\"debug() ? 1 : 0\"\n >\n <ng-content />\n </ngt-mesh-basic-material>\n </ngt-mesh>\n `,\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsSpotLightShadowMeshNoShader {\n protected readonly shadowMeshInput = inject(NgtsSpotLightShadowMeshInput);\n readonly #spotLightApi = inject(NGTS_SPOT_LIGHT_API);\n\n readonly meshRef = injectNgtRef<THREE.Mesh>();\n readonly DoubleSide = THREE.DoubleSide;\n\n readonly debug = this.#spotLightApi.debug;\n\n constructor() {\n this.shadowMeshInput.patch({ distance: 0.4, alphaTest: 0.5, width: 512, height: 512, scale: 1 });\n\n requestAnimationFrameInInjectionContext(() => {\n effect(() => {\n const map = this.shadowMeshInput.shadowMeshMap();\n if (map) {\n map.wrapS = map.wrapT = THREE.RepeatWrapping;\n checkUpdate(map);\n }\n });\n });\n\n injectShadowMeshCommon(\n this.#spotLightApi.spotLight,\n this.meshRef,\n this.shadowMeshInput.shadowMeshWidth,\n this.shadowMeshInput.shadowMeshHeight,\n this.shadowMeshInput.shadowMeshDistance\n );\n }\n}\n\n@Component({\n selector: 'ngts-spot-light-shadow-mesh-shader',\n standalone: true,\n template: `\n <ngt-mesh [ref]=\"meshRef\" [scale]=\"shadowMeshInput.shadowMeshScale()\" [castShadow]=\"true\">\n <ngt-plane-geometry />\n <ngt-mesh-basic-material\n [transparent]=\"true\"\n [side]=\"DoubleSide\"\n [alphaTest]=\"shadowMeshInput.shadowMeshAlphaTest()\"\n [alphaMap]=\"renderTarget().texture\"\n [opacity]=\"debug() ? 1 : 0\"\n >\n <ngt-value [rawValue]=\"RepeatWrapping\" attach=\"alphaMap.wrapS\" />\n <ngt-value [rawValue]=\"RepeatWrapping\" attach=\"alphaMap.wrapT\" />\n <ng-content />\n </ngt-mesh-basic-material>\n </ngt-mesh>\n `,\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsSpotLightShadowMeshShader {\n protected readonly shadowMeshInput = inject(NgtsSpotLightShadowMeshInput);\n readonly meshRef = injectNgtRef<THREE.Mesh>();\n readonly #spotLightApi = inject(NGTS_SPOT_LIGHT_API);\n\n readonly DoubleSide = THREE.DoubleSide;\n readonly RepeatWrapping = THREE.RepeatWrapping;\n\n readonly debug = this.#spotLightApi.debug;\n readonly renderTarget = computed(() => {\n const width = this.shadowMeshInput.shadowMeshWidth();\n const height = this.shadowMeshInput.shadowMeshHeight();\n\n return new THREE.WebGLRenderTarget(width, height, {\n format: THREE.RGBAFormat,\n encoding: THREE.LinearEncoding,\n stencilBuffer: false,\n // depthTexture: null!\n });\n });\n readonly uniforms = {\n uShadowMap: { value: this.shadowMeshInput.shadowMeshMap() },\n uTime: { value: 0 },\n };\n\n readonly #fsQuad = computed(() => {\n const shader = this.shadowMeshInput.shadowMeshShader();\n if (!shader) return null;\n return new FullScreenQuad(\n new THREE.ShaderMaterial({\n uniforms: this.uniforms,\n vertexShader: /* glsl */ `\n varying vec2 vUv;\n\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n `,\n fragmentShader: shader,\n })\n );\n });\n\n constructor() {\n this.shadowMeshInput.patch({ distance: 0.4, alphaTest: 0.5, width: 512, height: 512, scale: 4 });\n\n injectShadowMeshCommon(\n this.#spotLightApi.spotLight,\n this.meshRef,\n this.shadowMeshInput.shadowMeshWidth,\n this.shadowMeshInput.shadowMeshHeight,\n this.shadowMeshInput.shadowMeshDistance\n );\n\n injectBeforeRender(({ delta, gl }) => {\n this.uniforms.uTime.value += delta;\n const fsQuad = this.#fsQuad();\n const renderTarget = this.renderTarget();\n if (fsQuad && renderTarget) {\n gl.setRenderTarget(renderTarget);\n fsQuad.render(gl);\n gl.setRenderTarget(null);\n }\n });\n\n requestAnimationFrameInInjectionContext(() => {\n effect(() => {\n const map = this.shadowMeshInput.shadowMeshMap();\n if (map) {\n this.uniforms.uShadowMap.value = map;\n }\n });\n\n effect((onCleanup) => {\n const fsQuad = this.#fsQuad();\n onCleanup(() => {\n if (fsQuad) {\n fsQuad.dispose();\n fsQuad.material.dispose();\n }\n });\n });\n\n effect((onCleanup) => {\n const renderTarget = this.renderTarget();\n onCleanup(() => {\n renderTarget.dispose();\n });\n });\n });\n }\n}\n\n@Component({\n selector: 'ngts-spot-light-shadow',\n standalone: true,\n template: `\n <ngts-spot-light-shadow-mesh-shader *ngIf=\"shadowMeshShader(); else noShader\" />\n <ng-template #noShader>\n <ngts-spot-light-shadow-mesh-no-shader />\n </ng-template>\n `,\n imports: [NgtsSpotLightShadowMeshShader, NgtsSpotLightShadowMeshNoShader, NgIf],\n providers: [{ provide: NgtsSpotLightShadowMeshInput, useExisting: NgtsSpotLightShadow }],\n})\nexport class NgtsSpotLightShadow extends NgtsSpotLightShadowMeshInput {}\n","import { NgIf } from '@angular/common';\nimport {\n ChangeDetectorRef,\n Component,\n computed,\n CUSTOM_ELEMENTS_SCHEMA,\n Directive,\n EventEmitter,\n inject,\n Input,\n OnChanges,\n Output,\n signal,\n} from '@angular/core';\nimport { extend, NgtArgs, NgtSignalStore, safeDetectChanges } from 'angular-three';\nimport { AmbientLight, Group, PointLight, SpotLight, Vector2 } from 'three';\nimport { NgtsAccumulativeShadows } from '../accumulative-shadows/accumulative-shadows';\nimport { NgtsRandomizedLights } from '../accumulative-shadows/randomized-lights';\nimport { NGTS_BOUNDS_API, NgtsBounds } from '../bounds/bounds';\nimport { NgtsCenter } from '../center/center';\nimport { NgtsContactShadows } from '../contact-shadows/contact-shadows';\nimport { NgtsEnvironmentPresetsType } from '../environment/assets';\nimport { NgtsEnvironment } from '../environment/environment';\nimport { NgtsEnvironmentInput } from '../environment/environment-input';\n\nconst presets = {\n rembrandt: {\n main: [1, 2, 1],\n fill: [-2, -0.5, -2],\n },\n portrait: {\n main: [-1, 2, 0.5],\n fill: [-1, 0.5, -1.5],\n },\n upfront: {\n main: [0, 2, 1],\n fill: [-1, 0.5, -1.5],\n },\n soft: {\n main: [-2, 4, 4],\n fill: [-1, 0.5, -1.5],\n },\n};\n\ntype NgtsStageShadows = Partial<NgtsAccumulativeShadows> &\n Partial<NgtsRandomizedLights> &\n Partial<NgtsContactShadows> & {\n type: 'contact' | 'accumulative';\n /** Shadow plane offset, default: 0 */\n offset?: number;\n /** Shadow bias, default: -0.0001 */\n bias?: number;\n /** Shadow normal bias, default: 0 */\n normalBias?: number;\n /** Shadow map size, default: 1024 */\n size?: number;\n };\n\ninterface NgtsStageProps {\n /** Lighting setup, default: \"rembrandt\" */\n preset:\n | 'rembrandt'\n | 'portrait'\n | 'upfront'\n | 'soft'\n | { main: [x: number, y: number, z: number]; fill: [x: number, y: number, z: number] };\n /** Controls the ground shadows, default: \"contact\" */\n shadows: boolean | 'contact' | 'accumulative' | NgtsStageShadows;\n /** Optionally wraps and thereby centers the models using <Bounds>, can also be a margin, default: true */\n adjustCamera: boolean | number;\n /** The default environment, default: \"city\" */\n environment: NgtsEnvironmentPresetsType | Partial<NgtsEnvironmentInput>;\n /** The lighting intensity, default: 0.5 */\n intensity: number;\n /** To adjust centering, default: undefined */\n center?: Partial<NgtsCenter>;\n}\n\n@Directive({ selector: 'ngts-stage-refit', standalone: true })\nexport class NgtsStageRefit implements OnChanges {\n readonly #boundsApi = inject(NGTS_BOUNDS_API);\n\n @Input() radius = 0;\n @Input() adjustCamera = true;\n\n ngOnChanges() {\n if (this.adjustCamera) {\n this.#boundsApi().refresh().clip().fit();\n }\n }\n}\n\nextend({ AmbientLight, SpotLight, Vector2, PointLight, Group });\n\n@Component({\n selector: 'ngts-stage',\n standalone: true,\n template: `\n <ngt-ambient-light [intensity]=\"stageIntensity() / 3\" />\n <ngt-spot-light\n [penumbra]=\"1\"\n [position]=\"spotLightPosition()\"\n [intensity]=\"stageIntensity() * 2\"\n [castShadow]=\"!!stageShadows()\"\n >\n <ngt-value [rawValue]=\"shadowsInfo().shadowBias\" attach=\"shadow.bias\" />\n <ngt-value [rawValue]=\"shadowsInfo().normalBias\" attach=\"shadow.normalBias\" />\n <ngt-vector2 *args=\"[shadowsInfo().shadowSize, shadowsInfo().shadowSize]\" attach=\"shadow.mapSize\" />\n </ngt-spot-light>\n <ngt-point-light [position]=\"pointLightPosition()\" [intensity]=\"stageIntensity()\" />\n\n <ngts-bounds\n [fit]=\"!!stageAdjustCamera()\"\n [clip]=\"!!stageAdjustCamera()\"\n [margin]=\"Number(stageAdjustCamera())\"\n [observe]=\"true\"\n >\n <ngts-stage-refit [radius]=\"boundingState().radius\" [adjustCamera]=\"!!stageAdjustCamera()\" />\n <ngts-center\n [position]=\"[0, shadowsInfo().shadowOffset / 2, 0]\"\n [top]=\"!!stageCenter()?.top\"\n [right]=\"!!stageCenter()?.right\"\n [bottom]=\"!!stageCenter()?.bottom\"\n [left]=\"!!stageCenter()?.left\"\n [front]=\"!!stageCenter()?.front\"\n [back]=\"!!stageCenter()?.back\"\n [disableX]=\"!!stageCenter()?.disableX\"\n [disableY]=\"!!stageCenter()?.disableY\"\n [disableZ]=\"!!stageCenter()?.disableZ\"\n [precise]=\"!!stageCenter()?.precise\"\n (centered)=\"onCentered($event)\"\n >\n <ng-content />\n </ngts-center>\n </ngts-bounds>\n <ngt-group [position]=\"[0, -boundingState().height / 2 - shadowsInfo().shadowOffset / 2, 0]\">\n <ngts-contact-shadows\n *ngIf=\"shadowsInfo().contactShadow\"\n [scale]=\"boundingState().radius * 4\"\n [far]=\"boundingState().radius\"\n [blur]=\"2\"\n [opacity]=\"shadowsInfo().opacity\"\n [width]=\"shadowsInfo().width\"\n [height]=\"shadowsInfo().height\"\n [smooth]=\"shadowsInfo().smooth\"\n [resolution]=\"shadowsInfo().resolution\"\n [frames]=\"shadowsInfo().frames\"\n [scale]=\"shadowsInfo().scale\"\n [color]=\"shadowsInfo().color\"\n [depthWrite]=\"shadowsInfo().depthWrite\"\n [renderOrder]=\"shadowsInfo().renderOrder\"\n />\n <ngts-accumulative-shadows\n *ngIf=\"shadowsInfo().accumulativeShadow\"\n [temporal]=\"true\"\n [frames]=\"100\"\n [alphaTest]=\"0.9\"\n [toneMapped]=\"true\"\n [scale]=\"boundingState().radius * 4\"\n [opacity]=\"shadowsInfo().opacity\"\n [alphaTest]=\"shadowsInfo().alphaTest\"\n [color]=\"shadowsInfo().color\"\n [colorBlend]=\"shadowsInfo().colorBlend\"\n [resolution]=\"shadowsInfo().resolution\"\n >\n <ngts-randomized-lights\n [amount]=\"shadowsInfo().amount ?? 8\"\n [radius]=\"shadowsInfo().radius ?? boundingState().radius\"\n [ambient]=\"shadowsInfo().ambient ?? 0.5\"\n [intensity]=\"shadowsInfo().intensity ?? 1\"\n [position]=\"spotLightPosition()\"\n [size]=\"boundingState().radius * 4\"\n [bias]=\"-shadowsInfo().shadowBias\"\n [mapSize]=\"shadowsInfo().shadowSize\"\n />\n </ngts-accumulative-shadows>\n </ngt-group>\n <ngts-environment\n *ngIf=\"environmentInfo() as environmentInfo\"\n [frames]=\"environmentInfo.frames\"\n [near]=\"environmentInfo.near\"\n [far]=\"environmentInfo.far\"\n [resolution]=\"environmentInfo.resolution\"\n [background]=\"environmentInfo.background\"\n [blur]=\"environmentInfo.blur\"\n [map]=\"environmentInfo.map\"\n [files]=\"environmentInfo.files\"\n [path]=\"environmentInfo.path\"\n [preset]=\"environmentInfo.preset\"\n [scene]=\"environmentInfo.scene\"\n [extensions]=\"environmentInfo.extensions\"\n [ground]=\"environmentInfo.ground\"\n [encoding]=\"environmentInfo.encoding\"\n />\n `,\n imports: [\n NgtArgs,\n NgtsBounds,\n NgtsStageRefit,\n NgtsCenter,\n NgIf,\n NgtsContactShadows,\n NgtsAccumulativeShadows,\n NgtsRandomizedLights,\n NgtsEnvironment,\n ],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsStage extends NgtSignalStore<NgtsStageProps> {\n readonly #cdr = inject(ChangeDetectorRef);\n readonly Number = Number;\n\n @Input() set preset(preset: NgtsStageProps['preset']) {\n this.set({ preset });\n }\n\n @Input() set shadows(shadows: NgtsStageProps['shadows']) {\n this.set({ shadows });\n }\n\n @Input() set adjustCamera(adjustCamera: NgtsStageProps['adjustCamera']) {\n this.set({ adjustCamera });\n }\n\n @Input() set environment(environment: NgtsStageProps['environment']) {\n this.set({ environment });\n }\n\n @Input() set intensity(intensity: NgtsStageProps['intensity']) {\n this.set({ intensity });\n }\n\n @Input() set center(center: NgtsStageProps['center']) {\n this.set({ center });\n }\n\n @Output() centered = new EventEmitter() as NgtsCenter['centered'];\n\n readonly boundingState = signal({ radius: 0, width: 0, height: 0, depth: 0 });\n\n readonly #preset = this.select('preset');\n readonly #environment = this.select('environment');\n\n readonly stageShadows = this.select('shadows');\n readonly stageIntensity = this.select('intensity');\n readonly stageAdjustCamera = this.select('adjustCamera');\n readonly stageCenter = this.select('center');\n\n readonly config = computed(() => {\n const preset = this.#preset();\n return typeof preset === 'string' ? presets[preset] : preset;\n });\n\n readonly shadowsInfo = computed<any>(() => {\n const shadows = this.stageShadows();\n const restProps = typeof shadows === 'string' ? {} : (shadows as NgtsStageShadows) || {};\n return {\n contactShadow: shadows === 'contact' || (shadows as NgtsStageShadows)?.type === 'contact',\n accumulativeShadow: shadows === 'accumulative' || (shadows as NgtsStageShadows)?.type === 'accumulative',\n shadowBias: (shadows as NgtsStageShadows)?.bias ?? -0.0001,\n normalBias: (shadows as NgtsStageShadows)?.normalBias ?? 0,\n shadowSize: (shadows as NgtsStageShadows)?.size ?? 1024,\n shadowOffset: (shadows as NgtsStageShadows)?.offset ?? 0,\n ...restProps,\n };\n });\n\n readonly spotLightPosition = computed<[number, number, number]>(() => {\n const config = this.config();\n if (!config) return [0, 0, 0];\n const radius = this.boundingState().radius;\n return [config.main[0] * radius, config.main[1] * radius, config.main[2] * radius];\n });\n\n readonly pointLightPosition = computed(() => {\n const config = this.config();\n if (!config) return [0, 0, 0];\n const radius = this.boundingState().radius;\n return [config.fill[0] * radius, config.fill[1] * radius, config.fill[2] * radius];\n });\n\n readonly environmentInfo = computed(() => {\n const environment = this.#environment();\n if (!environment) return null;\n if (typeof environment === 'string') return { preset: environment };\n return environment;\n });\n\n constructor() {\n super({\n adjustCamera: true,\n intensity: 0.5,\n shadows: 'contact',\n environment: 'city',\n preset: 'rembrandt',\n });\n }\n\n onCentered(props: {\n /** The next parent above <Center> */\n parent: THREE.Object3D;\n /** The outmost container group of the <Center> component */\n container: THREE.Object3D;\n width: number;\n height: number;\n depth: number;\n boundingBox: THREE.Box3;\n boundingSphere: THREE.Sphere;\n center: THREE.Vector3;\n verticalAlignment: number;\n horizontalAlignment: number;\n depthAlignment: number;\n }) {\n const { boundingSphere, width, height, depth } = props;\n this.boundingState.set({ radius: boundingSphere.radius, width, height, depth });\n safeDetectChanges(this.#cdr);\n if (this.centered.observed) this.centered.emit(props);\n }\n}\n","import { Component, computed, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';\nimport { extend, injectBeforeRender, injectNgtRef, NgtArgs, NgtSignalStore, type NgtRenderState } from 'angular-three';\nimport { StarFieldMaterial } from 'angular-three-soba/shaders';\nimport * as THREE from 'three';\nimport { BufferAttribute, BufferGeometry, Points } from 'three';\n\nextend({ Points, BufferGeometry, BufferAttribute });\n\nconst genStar = (r: number) => {\n return new THREE.Vector3().setFromSpherical(\n new THREE.Spherical(r, Math.acos(1 - Math.random() * 2), Math.random() * 2 * Math.PI)\n );\n};\n\nexport interface NgtsStarsState {\n radius: number;\n depth: number;\n count: number;\n factor: number;\n saturation: number;\n fade: boolean;\n speed: number;\n}\n\n@Component({\n selector: 'ngts-stars',\n standalone: true,\n template: `\n <ngt-points [ref]=\"starsRef\">\n <ngt-buffer-geometry>\n <ngt-buffer-attribute attach=\"attributes.position\" *args=\"[bufferAttributes().positions, 3]\" />\n <ngt-buffer-attribute attach=\"attributes.color\" *args=\"[bufferAttributes().colors, 3]\" />\n <ngt-buffer-attribute attach=\"attributes.size\" *args=\"[bufferAttributes().sizes, 1]\" />\n </ngt-buffer-geometry>\n <ngt-primitive\n *args=\"[material]\"\n attach=\"material\"\n [blending]=\"AdditiveBlending\"\n [depthWrite]=\"false\"\n [transparent]=\"true\"\n [vertexColors]=\"true\"\n >\n <ngt-value attach=\"uniforms.fade.value\" [rawValue]=\"fade()\" />\n </ngt-primitive>\n </ngt-points>\n `,\n imports: [NgtArgs],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsStars extends NgtSignalStore<NgtsStarsState> {\n readonly AdditiveBlending = THREE.AdditiveBlending;\n readonly material = new StarFieldMaterial();\n\n @Input() starsRef = injectNgtRef<Points>();\n\n @Input() set radius(radius: number) {\n this.set({ radius });\n }\n\n @Input() set depth(depth: number) {\n this.set({ depth });\n }\n\n @Input() set count(count: number) {\n this.set({ count });\n }\n\n @Input() set factor(factor: number) {\n this.set({ factor });\n }\n\n @Input() set saturation(saturation: number) {\n this.set({ saturation });\n }\n\n @Input('fade') set starsFade(fade: boolean) {\n this.set({ fade });\n }\n\n @Input() set speed(speed: number) {\n this.set({ speed });\n }\n\n readonly #count = this.select('count');\n readonly #depth = this.select('depth');\n readonly #factor = this.select('factor');\n readonly #radius = this.select('radius');\n readonly #saturation = this.select('saturation');\n\n readonly fade = this.select('fade');\n readonly bufferAttributes = computed(() => {\n const positions: number[] = [];\n const colors: number[] = [];\n const sizes = Array.from({ length: this.#count() }, () => (0.5 + 0.5 * Math.random()) * this.#factor());\n const color = new THREE.Color();\n let r = this.#radius() + this.#depth();\n const increment = this.#depth() / this.#count();\n for (let i = 0; i < this.#count(); i++) {\n r -= increment * Math.random();\n positions.push(...genStar(r).toArray());\n color.setHSL(i / this.#count(), this.#saturation(), 0.9);\n colors.push(color.r, color.g, color.b);\n }\n return {\n positions: new Float32Array(positions),\n colors: new Float32Array(colors),\n sizes: new Float32Array(sizes),\n };\n });\n\n constructor() {\n super({\n radius: 100,\n depth: 50,\n count: 5000,\n saturation: 0,\n factor: 4,\n fade: false,\n speed: 1,\n });\n injectBeforeRender(this.#onBeforeRender.bind(this));\n }\n\n #onBeforeRender({ clock }: NgtRenderState) {\n this.material.uniforms['time'].value = clock.getElapsedTime() * this.get('speed');\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}