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.
@@ -278,7 +278,7 @@ class NgtsMeshReflectorMaterial extends NgtSignalStore {
278
278
  #onBeforeRender(state) {
279
279
  if (!this.materialRef.nativeElement)
280
280
  return;
281
- const parent = getLocalState(this.materialRef.nativeElement).parent();
281
+ const parent = getLocalState(this.materialRef.nativeElement).parent?.value;
282
282
  if (!parent)
283
283
  return;
284
284
  const { gl, scene } = state;
@@ -305,7 +305,7 @@ class NgtsMeshReflectorMaterial extends NgtSignalStore {
305
305
  }
306
306
  }
307
307
  #beforeRender(state) {
308
- const parent = getLocalState(this.materialRef.nativeElement).parent();
308
+ const parent = getLocalState(this.materialRef.nativeElement).parent?.value;
309
309
  if (!parent)
310
310
  return;
311
311
  const { camera } = state;
@@ -539,7 +539,7 @@ class NgtsMeshRefractionMaterial extends NgtSignalStore {
539
539
  const material = this.materialRef.nativeElement;
540
540
  if (!material)
541
541
  return;
542
- const geometry = getLocalState(material).parent()?.geometry;
542
+ const geometry = getLocalState(material).parent?.value?.geometry;
543
543
  if (geometry) {
544
544
  material.bvh = new MeshBVHUniformStruct();
545
545
  material.bvh.updateFrom(new MeshBVH(geometry.clone().toNonIndexed(), { lazyGeneration: false, strategy: SAH }));
@@ -740,7 +740,7 @@ class NgtsMeshTranmissionMaterial extends NgtSignalStore {
740
740
  this.materialRef.nativeElement.time = state.clock.getElapsedTime();
741
741
  // Render only if the buffer matches the built-in and no transmission sampler is set
742
742
  if (this.materialRef.nativeElement.buffer === this.fboMainRef().texture && !transmissionSampler) {
743
- parent = getLocalState(this.materialRef.nativeElement).parent();
743
+ parent = getLocalState(this.materialRef.nativeElement).parent?.value;
744
744
  if (parent) {
745
745
  // Save defaults
746
746
  oldTone = state.gl.toneMapping;
@@ -1 +1 @@
1
- {"version":3,"file":"angular-three-soba-materials.mjs","sources":["../../../../libs/soba/materials/src/mesh-distort-material/mesh-distort-material.ts","../../../../libs/soba/materials/src/mesh-reflector-material/mesh-reflector-material.ts","../../../../libs/soba/materials/src/mesh-refraction-material/mesh-refraction-material.ts","../../../../libs/soba/materials/src/mesh-transmission-material/mesh-transmission-material.ts","../../../../libs/soba/materials/src/mesh-wobble-material/mesh-wobble-material.ts","../../../../libs/soba/materials/src/angular-three-soba-materials.ts"],"sourcesContent":["import { Component, CUSTOM_ELEMENTS_SCHEMA, inject, Input } from '@angular/core';\nimport { injectBeforeRender, injectNgtRef, NgtArgs, NgtSignalStore } from 'angular-three';\nimport { MeshDistortMaterial, NGTS_DISTORT_MATERIAL_SHADER } from 'angular-three-soba/shaders';\n\nexport interface NgtsMeshDistortMaterialState {\n time: number;\n distort: number;\n radius: number;\n speed: number;\n}\n\n@Component({\n selector: 'ngts-mesh-distort-material',\n standalone: true,\n template: `\n <ngt-primitive\n *args=\"[material]\"\n [ref]=\"materialRef\"\n [time]=\"distortTime()\"\n [distort]=\"distortDistort()\"\n [radius]=\"distortRadius()\"\n ngtCompound\n attach=\"material\"\n />\n `,\n imports: [NgtArgs],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsMeshDistortMaterial extends NgtSignalStore<NgtsMeshDistortMaterialState> {\n readonly material = new (inject(NGTS_DISTORT_MATERIAL_SHADER))();\n\n @Input() materialRef = injectNgtRef<InstanceType<MeshDistortMaterial>>();\n\n @Input() set time(time: number) {\n this.set({ time });\n }\n\n @Input() set distort(distort: number) {\n this.set({ distort });\n }\n\n @Input() set radius(radius: number) {\n this.set({ radius });\n }\n\n @Input() set speed(speed: number) {\n this.set({ speed });\n }\n\n readonly distortTime = this.select('time');\n readonly distortDistort = this.select('distort');\n readonly distortRadius = this.select('radius');\n\n constructor() {\n super({ speed: 1, time: 0, distort: 0.4, radius: 1 });\n injectBeforeRender(({ clock }) => {\n this.material.time = clock.getElapsedTime() * this.get('speed');\n });\n }\n}\n","import { NgIf } from '@angular/common';\nimport { Component, computed, CUSTOM_ELEMENTS_SCHEMA, inject, Input } from '@angular/core';\nimport {\n extend,\n getLocalState,\n injectBeforeRender,\n injectNgtRef,\n NgtArgs,\n NgtRenderState,\n NgtSignalStore,\n NgtStore,\n} from 'angular-three';\nimport { BlurPass, MeshReflectorMaterial } from 'angular-three-soba/shaders';\nimport * as THREE from 'three';\n\nextend({ MeshReflectorMaterial });\n\nexport interface NgtsMeshReflectorMaterialState {\n resolution: number;\n mixBlur: number;\n mixStrength: number;\n blur: [number, number] | number;\n mirror: number;\n minDepthThreshold: number;\n maxDepthThreshold: number;\n depthScale: number;\n depthToBlurRatioBias: number;\n distortionMap?: THREE.Texture;\n distortion: number;\n mixContrast: number;\n reflectorOffset: number;\n}\n\n@Component({\n selector: 'ngts-mesh-reflector-material',\n standalone: true,\n template: `\n <ngt-mesh-reflector-material\n ngtCompound\n attach=\"material\"\n *ngIf=\"defines()\"\n [ref]=\"materialRef\"\n [defines]=\"defines()\"\n [mirror]=\"reflectorMirror()\"\n [textureMatrix]=\"reflectorTextureMatrix()\"\n [mixBlur]=\"reflectorMixBlur()\"\n [tDiffuse]=\"reflectorTDiffuse()\"\n [tDepth]=\"reflectorTDepth()\"\n [tDiffuseBlur]=\"reflectorTDiffuseBlur()\"\n [hasBlur]=\"reflectorHasBlur()\"\n [mixStrength]=\"reflectorMixStrength()\"\n [minDepthThreshold]=\"reflectorMinDepthThreshold()\"\n [maxDepthThreshold]=\"reflectorMaxDepthThreshold()\"\n [depthScale]=\"reflectorDepthScale()\"\n [depthToBlurRatioBias]=\"reflectorDepthToBlurRatioBias()\"\n [distortion]=\"reflectorDistortion()\"\n [distortionMap]=\"reflectorDistortionMap()\"\n [mixContrast]=\"reflectorMixContrast()\"\n >\n <ng-content />\n </ngt-mesh-reflector-material>\n `,\n imports: [NgtArgs, NgIf],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsMeshReflectorMaterial extends NgtSignalStore<NgtsMeshReflectorMaterialState> {\n @Input() materialRef = injectNgtRef<MeshReflectorMaterial>();\n\n @Input() set resolution(resolution: number) {\n this.set({ resolution });\n }\n\n @Input() set mixBlur(mixBlur: number) {\n this.set({ mixBlur });\n }\n\n @Input() set mixStrength(mixStrength: number) {\n this.set({ mixStrength });\n }\n\n @Input() set blur(blur: [number, number] | number) {\n this.set({ blur });\n }\n\n @Input() set mirror(mirror: number) {\n this.set({ mirror });\n }\n\n @Input() set minDepthThreshold(minDepthThreshold: number) {\n this.set({ minDepthThreshold });\n }\n\n @Input() set maxDepthThreshold(maxDepthThreshold: number) {\n this.set({ maxDepthThreshold });\n }\n\n @Input() set depthScale(depthScale: number) {\n this.set({ depthScale });\n }\n\n @Input() set depthToBlurRatioBias(depthToBlurRatioBias: number) {\n this.set({ depthToBlurRatioBias });\n }\n\n @Input() set distortionMap(distortionMap: THREE.Texture) {\n this.set({ distortionMap });\n }\n\n @Input() set distortion(distortion: number) {\n this.set({ distortion });\n }\n\n @Input() set mixContrast(mixContrast: number) {\n this.set({ mixContrast });\n }\n\n @Input() set reflectorOffset(reflectorOffset: number) {\n this.set({ reflectorOffset });\n }\n\n readonly reflectorProps = computed(() => this.#reflectorEntities().reflectorProps);\n readonly defines = computed(() => this.reflectorProps().defines);\n readonly reflectorMirror = computed(() => this.reflectorProps().mirror);\n readonly reflectorTextureMatrix = computed(() => this.reflectorProps().textureMatrix);\n readonly reflectorMixBlur = computed(() => this.reflectorProps().mixBlur);\n readonly reflectorTDiffuse = computed(() => this.reflectorProps().tDiffuse);\n readonly reflectorTDepth = computed(() => this.reflectorProps().tDepth);\n readonly reflectorTDiffuseBlur = computed(() => this.reflectorProps().tDiffuseBlur);\n readonly reflectorHasBlur = computed(() => this.reflectorProps().hasBlur);\n readonly reflectorMixStrength = computed(() => this.reflectorProps().mixStrength);\n readonly reflectorMinDepthThreshold = computed(() => this.reflectorProps().minDepthThreshold);\n readonly reflectorMaxDepthThreshold = computed(() => this.reflectorProps().maxDepthThreshold);\n readonly reflectorDepthScale = computed(() => this.reflectorProps().depthScale);\n readonly reflectorDepthToBlurRatioBias = computed(() => this.reflectorProps().depthToBlurRatioBias);\n readonly reflectorDistortion = computed(() => this.reflectorProps().distortion);\n readonly reflectorDistortionMap = computed(() => this.reflectorProps().distortionMap);\n readonly reflectorMixContrast = computed(() => this.reflectorProps().mixContrast);\n\n readonly #store = inject(NgtStore);\n readonly #gl = this.#store.select('gl');\n\n readonly #reflectorPlane = new THREE.Plane();\n readonly #normal = new THREE.Vector3();\n readonly #reflectorWorldPosition = new THREE.Vector3();\n readonly #cameraWorldPosition = new THREE.Vector3();\n readonly #rotationMatrix = new THREE.Matrix4();\n readonly #lookAtPosition = new THREE.Vector3(0, 0, -1);\n readonly #clipPlane = new THREE.Vector4();\n readonly #view = new THREE.Vector3();\n readonly #target = new THREE.Vector3();\n readonly #q = new THREE.Vector4();\n readonly #textureMatrix = new THREE.Matrix4();\n readonly #virtualCamera = new THREE.PerspectiveCamera();\n\n readonly #blur = this.select('blur');\n readonly #resolution = this.select('resolution');\n readonly #mirror = this.select('mirror');\n readonly #mixBlur = this.select('mixBlur');\n readonly #mixStrength = this.select('mixStrength');\n readonly #minDepthThreshold = this.select('minDepthThreshold');\n readonly #maxDepthThreshold = this.select('maxDepthThreshold');\n readonly #depthScale = this.select('depthScale');\n readonly #depthToBlurRatioBias = this.select('depthToBlurRatioBias');\n readonly #distortion = this.select('distortion');\n readonly #distortionMap = this.select('distortionMap');\n readonly #mixContrast = this.select('mixContrast');\n\n readonly #normalizedBlur = computed(() => {\n const blur = this.#blur();\n return Array.isArray(blur) ? blur : [blur, blur];\n });\n\n readonly #hasBlur = computed(() => {\n const [x, y] = this.#normalizedBlur();\n return x + y > 0;\n });\n\n readonly #reflectorEntities = computed(() => {\n const gl = this.#gl();\n const resolution = this.#resolution();\n const blur = this.#normalizedBlur();\n const minDepthThreshold = this.#minDepthThreshold();\n const maxDepthThreshold = this.#maxDepthThreshold();\n const depthScale = this.#depthScale();\n const depthToBlurRatioBias = this.#depthToBlurRatioBias();\n const mirror = this.#mirror();\n const mixBlur = this.#mixBlur();\n const mixStrength = this.#mixStrength();\n const mixContrast = this.#mixContrast();\n const distortion = this.#distortion();\n const distortionMap = this.#distortionMap();\n const hasBlur = this.#hasBlur();\n\n const parameters = {\n minFilter: THREE.LinearFilter,\n magFilter: THREE.LinearFilter,\n encoding: gl.outputEncoding,\n type: THREE.HalfFloatType,\n };\n const fbo1 = new THREE.WebGLRenderTarget(resolution, resolution, parameters);\n fbo1.depthBuffer = true;\n fbo1.depthTexture = new THREE.DepthTexture(resolution, resolution);\n fbo1.depthTexture.format = THREE.DepthFormat;\n fbo1.depthTexture.type = THREE.UnsignedShortType;\n\n const fbo2 = new THREE.WebGLRenderTarget(resolution, resolution, parameters);\n const blurPass = new BlurPass({\n gl,\n resolution,\n width: blur[0],\n height: blur[1],\n minDepthThreshold,\n maxDepthThreshold,\n depthScale,\n depthToBlurRatioBias,\n });\n const reflectorProps = {\n mirror,\n textureMatrix: this.#textureMatrix,\n mixBlur,\n tDiffuse: fbo1.texture,\n tDepth: fbo1.depthTexture,\n tDiffuseBlur: fbo2.texture,\n hasBlur,\n mixStrength,\n minDepthThreshold,\n maxDepthThreshold,\n depthScale,\n depthToBlurRatioBias,\n distortion,\n distortionMap,\n mixContrast,\n defines: {\n USE_BLUR: hasBlur ? '' : undefined,\n USE_DEPTH: depthScale > 0 ? '' : undefined,\n USE_DISTORTION: distortionMap ? '' : undefined,\n },\n };\n\n return { fbo1, fbo2, blurPass, reflectorProps };\n });\n\n constructor() {\n super({\n mixBlur: 0,\n mixStrength: 1,\n resolution: 256,\n blur: [0, 0],\n minDepthThreshold: 0.9,\n maxDepthThreshold: 1,\n depthScale: 0,\n depthToBlurRatioBias: 0.25,\n mirror: 0,\n distortion: 1,\n mixContrast: 1,\n reflectorOffset: 0,\n });\n\n injectBeforeRender(this.#onBeforeRender.bind(this));\n }\n\n #onBeforeRender(state: NgtRenderState) {\n if (!this.materialRef.nativeElement) return;\n const parent = getLocalState(this.materialRef.nativeElement).parent();\n if (!parent) return;\n\n const { gl, scene } = state;\n const hasBlur = this.#hasBlur();\n const { fbo1, fbo2, blurPass } = this.#reflectorEntities();\n\n if (fbo1 && fbo2 && blurPass) {\n parent.visible = false;\n const currentXrEnabled = gl.xr.enabled;\n const currentShadowAutoUpdate = gl.shadowMap.autoUpdate;\n this.#beforeRender(state);\n gl.xr.enabled = false;\n gl.shadowMap.autoUpdate = false;\n gl.setRenderTarget(fbo1);\n gl.state.buffers.depth.setMask(true);\n if (!gl.autoClear) gl.clear();\n gl.render(scene, this.#virtualCamera);\n if (hasBlur) blurPass.render(gl, fbo1, fbo2);\n gl.xr.enabled = currentXrEnabled;\n gl.shadowMap.autoUpdate = currentShadowAutoUpdate;\n parent.visible = true;\n gl.setRenderTarget(null);\n }\n }\n\n #beforeRender(state: NgtRenderState) {\n const parent = getLocalState(this.materialRef.nativeElement).parent();\n if (!parent) return;\n\n const { camera } = state;\n\n this.#reflectorWorldPosition.setFromMatrixPosition(parent.matrixWorld);\n this.#cameraWorldPosition.setFromMatrixPosition(camera.matrixWorld);\n this.#rotationMatrix.extractRotation(parent.matrixWorld);\n this.#normal.set(0, 0, 1);\n this.#normal.applyMatrix4(this.#rotationMatrix);\n this.#reflectorWorldPosition.addScaledVector(this.#normal, this.get('reflectorOffset'));\n this.#view.subVectors(this.#reflectorWorldPosition, this.#cameraWorldPosition);\n // Avoid rendering when reflector is facing away\n if (this.#view.dot(this.#normal) > 0) return;\n this.#view.reflect(this.#normal).negate();\n this.#view.add(this.#reflectorWorldPosition);\n this.#rotationMatrix.extractRotation(camera.matrixWorld);\n this.#lookAtPosition.set(0, 0, -1);\n this.#lookAtPosition.applyMatrix4(this.#rotationMatrix);\n this.#lookAtPosition.add(this.#cameraWorldPosition);\n this.#target.subVectors(this.#reflectorWorldPosition, this.#lookAtPosition);\n this.#target.reflect(this.#normal).negate();\n this.#target.add(this.#reflectorWorldPosition);\n this.#virtualCamera.position.copy(this.#view);\n this.#virtualCamera.up.set(0, 1, 0);\n this.#virtualCamera.up.applyMatrix4(this.#rotationMatrix);\n this.#virtualCamera.up.reflect(this.#normal);\n this.#virtualCamera.lookAt(this.#target);\n this.#virtualCamera.far = camera.far; // Used in WebGLBackground\n this.#virtualCamera.updateMatrixWorld();\n this.#virtualCamera.projectionMatrix.copy(camera.projectionMatrix);\n // Update the texture matrix\n this.#textureMatrix.set(0.5, 0.0, 0.0, 0.5, 0.0, 0.5, 0.0, 0.5, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0, 1.0);\n this.#textureMatrix.multiply(this.#virtualCamera.projectionMatrix);\n this.#textureMatrix.multiply(this.#virtualCamera.matrixWorldInverse);\n this.#textureMatrix.multiply(parent.matrixWorld);\n // Now update projection matrix with new clip plane, implementing code from: http://www.terathon.com/code/oblique.html\n // Paper explaining this technique: http://www.terathon.com/lengyel/Lengyel-Oblique.pdf\n this.#reflectorPlane.setFromNormalAndCoplanarPoint(this.#normal, this.#reflectorWorldPosition);\n this.#reflectorPlane.applyMatrix4(this.#virtualCamera.matrixWorldInverse);\n this.#clipPlane.set(\n this.#reflectorPlane.normal.x,\n this.#reflectorPlane.normal.y,\n this.#reflectorPlane.normal.z,\n this.#reflectorPlane.constant\n );\n const projectionMatrix = this.#virtualCamera.projectionMatrix;\n this.#q.x = (Math.sign(this.#clipPlane.x) + projectionMatrix.elements[8]) / projectionMatrix.elements[0];\n this.#q.y = (Math.sign(this.#clipPlane.y) + projectionMatrix.elements[9]) / projectionMatrix.elements[5];\n this.#q.z = -1.0;\n this.#q.w = (1.0 + projectionMatrix.elements[10]) / projectionMatrix.elements[14];\n // Calculate the scaled plane vector\n this.#clipPlane.multiplyScalar(2.0 / this.#clipPlane.dot(this.#q));\n // Replacing the third row of the projection matrix\n projectionMatrix.elements[2] = this.#clipPlane.x;\n projectionMatrix.elements[6] = this.#clipPlane.y;\n projectionMatrix.elements[10] = this.#clipPlane.z + 1.0;\n projectionMatrix.elements[14] = this.#clipPlane.w;\n }\n}\n","import { NgIf } from '@angular/common';\nimport { Component, computed, CUSTOM_ELEMENTS_SCHEMA, effect, inject, Input } from '@angular/core';\nimport { extend, getLocalState, injectBeforeRender, injectNgtRef, NgtSignalStore, NgtStore } from 'angular-three';\nimport { MeshRefractionMaterial } from 'angular-three-soba/shaders';\nimport { MeshBVH, MeshBVHUniformStruct, SAH } from 'three-mesh-bvh';\n\nextend({ MeshRefractionMaterial });\n\nexport interface NgtsMeshRefractionMaterialState {\n /** Environment map */\n envMap: THREE.CubeTexture | THREE.Texture;\n /** Number of ray-cast bounces, it can be expensive to have too many, 2 */\n bounces: number;\n /** Refraction index, 2.4 */\n ior: number;\n /** Fresnel (strip light), 0 */\n fresnel: number;\n /** RGB shift intensity, can be expensive, 0 */\n aberrationStrength: number;\n /** Color, white */\n color: THREE.ColorRepresentation;\n /** If this is on it uses fewer ray casts for the RGB shift sacrificing physical accuracy, true */\n fastChroma: boolean;\n}\n\nconst isCubeTexture = (def: THREE.CubeTexture | THREE.Texture): def is THREE.CubeTexture =>\n def && (def as THREE.CubeTexture).isCubeTexture;\n\n@Component({\n selector: 'ngts-mesh-refraction-material',\n standalone: true,\n template: `\n <ngt-mesh-refraction-material\n *ngIf=\"defines() as defines\"\n [ref]=\"materialRef\"\n [defines]=\"defines\"\n [resolution]=\"resolution()\"\n [aberrationStrength]=\"refractionAberrationStrength()\"\n [envMap]=\"refractionEnvMap()\"\n [bounces]=\"refractionBounces()\"\n [ior]=\"refractionIor()\"\n [fresnel]=\"refractionFresnel()\"\n [color]=\"refractionColor()\"\n [fastChroma]=\"refractionFastChroma()\"\n ngtCompound\n attach=\"material\"\n >\n <ng-content />\n </ngt-mesh-refraction-material>\n `,\n imports: [NgIf],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsMeshRefractionMaterial extends NgtSignalStore<NgtsMeshRefractionMaterialState> {\n @Input() materialRef = injectNgtRef<InstanceType<typeof MeshRefractionMaterial>>();\n /** Environment map */\n @Input({ required: true }) set envMap(envMap: THREE.CubeTexture | THREE.Texture) {\n this.set({ envMap });\n }\n /** Number of ray-cast bounces, it can be expensive to have too many, 2 */\n @Input() set bounces(bounces: number) {\n this.set({ bounces });\n }\n /** Refraction index, 2.4 */\n @Input() set ior(ior: number) {\n this.set({ ior });\n }\n /** Fresnel (strip light), 0 */\n @Input() set fresnel(fresnel: number) {\n this.set({ fresnel });\n }\n /** RGB shift intensity, can be expensive, 0 */\n @Input() set aberrationStrength(aberrationStrength: number) {\n this.set({ aberrationStrength });\n }\n /** Color, white */\n @Input() set color(color: THREE.ColorRepresentation) {\n this.set({ color });\n }\n /** If this is on it uses fewer ray casts for the RGB shift sacrificing physical accuracy, true */\n @Input() set fastChroma(fastChroma: boolean) {\n this.set({ fastChroma });\n }\n\n readonly refractionEnvMap = this.select('envMap');\n readonly refractionBounces = this.select('bounces');\n readonly refractionIor = this.select('ior');\n readonly refractionFresnel = this.select('fresnel');\n readonly refractionAberrationStrength = this.select('aberrationStrength');\n readonly refractionColor = this.select('color');\n readonly refractionFastChroma = this.select('fastChroma');\n\n readonly #store = inject(NgtStore);\n readonly #size = this.#store.select('size');\n\n readonly #envMap = this.select('envMap');\n\n readonly defines = computed(() => {\n const envMap = this.#envMap();\n if (!envMap) return null;\n\n const aberrationStrength = this.refractionAberrationStrength();\n const fastChroma = this.refractionFastChroma();\n\n const temp = {} as { [key: string]: string };\n // Sampler2D and SamplerCube need different defines\n const isCubeMap = isCubeTexture(envMap);\n const w = (isCubeMap ? envMap.image[0]?.width : envMap.image.width) ?? 1024;\n const cubeSize = w / 4;\n const _lodMax = Math.floor(Math.log2(cubeSize));\n const _cubeSize = Math.pow(2, _lodMax);\n const width = 3 * Math.max(_cubeSize, 16 * 7);\n const height = 4 * _cubeSize;\n if (isCubeMap) temp['ENVMAP_TYPE_CUBEM'] = '';\n temp['CUBEUV_TEXEL_WIDTH'] = `${1.0 / width}`;\n temp['CUBEUV_TEXEL_HEIGHT'] = `${1.0 / height}`;\n temp['CUBEUV_MAX_MIP'] = `${_lodMax}.0`;\n // Add defines from chromatic aberration\n if (aberrationStrength > 0) temp['CHROMATIC_ABERRATIONS'] = '';\n if (fastChroma) temp['FAST_CHROMA'] = '';\n return temp;\n });\n readonly resolution = computed(() => [this.#size().width, this.#size().height]);\n\n constructor() {\n super({ aberrationStrength: 0, fastChroma: true });\n injectBeforeRender(({ camera }) => {\n if (this.materialRef.nativeElement) {\n (this.materialRef.nativeElement as any)!.viewMatrixInverse = camera.matrixWorld;\n (this.materialRef.nativeElement as any)!.projectionMatrixInverse = camera.projectionMatrixInverse;\n }\n });\n this.#setupGeometry();\n }\n\n #setupGeometry() {\n effect(() => {\n const material = this.materialRef.nativeElement;\n if (!material) return;\n const geometry = getLocalState(material).parent()?.geometry;\n if (geometry) {\n (material as any).bvh = new MeshBVHUniformStruct();\n (material as any).bvh.updateFrom(\n new MeshBVH(geometry.clone().toNonIndexed(), { lazyGeneration: false, strategy: SAH } as any)\n );\n }\n });\n }\n}\n","import { Component, computed, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';\nimport {\n extend,\n getLocalState,\n injectBeforeRender,\n injectNgtRef,\n NgtAnyRecord,\n NgtArgs,\n NgtSignalStore,\n} from 'angular-three';\nimport { injectNgtsFBO } from 'angular-three-soba/misc';\nimport { DiscardMaterial, MeshTransmissionMaterial } from 'angular-three-soba/shaders';\nimport * as THREE from 'three';\n\nextend({ MeshTransmissionMaterial });\n\nexport interface NgtsMeshTranmissionMaterialState {\n /** transmissionSampler, you can use the threejs transmission sampler texture that is\n * generated once for all transmissive materials. The upside is that it can be faster if you\n * use multiple MeshPhysical and Transmission materials, the downside is that transmissive materials\n * using this can't see other transparent or transmissive objects, default: false */\n transmissionSampler: boolean;\n /** Render the backside of the material (more cost, better results), default: false */\n backside: boolean;\n /** Backside thickness (when backside is true), default: 0 */\n backsideThickness: number;\n /** Resolution of the local buffer, default: undefined (fullscreen) */\n resolution: number;\n /** Resolution of the local buffer for backfaces, default: undefined (fullscreen) */\n backsideResolution: number;\n /** Refraction samples, default: 10 */\n samples: number;\n /** Buffer scene background (can be a texture, a cubetexture or a color), default: null */\n background: THREE.Texture | THREE.Color;\n /* Transmission, default: 1 */\n transmission: number;\n /* Thickness (refraction), default: 0 */\n thickness: number;\n /* Roughness (blur), default: 0 */\n roughness: number;\n /* Chromatic aberration, default: 0.03 */\n chromaticAberration: number;\n /* Anisotropy, default: 0.1 */\n anisotropy: number;\n /* Distortion, default: 0 */\n distortion: number;\n /* Distortion scale, default: 0.5 */\n distortionScale: number;\n /* Temporal distortion (speed of movement), default: 0.0 */\n temporalDistortion: number;\n /** The scene rendered into a texture (use it to share a texture between materials), default: null */\n buffer: THREE.Texture | null;\n /** Internals */\n time: number;\n}\n\n@Component({\n selector: 'ngts-mesh-transmission-material',\n standalone: true,\n template: `\n <ngt-mesh-transmission-material\n ngtCompound\n *args=\"[transmissionSamples(), transmissionTransmissionSampler()]\"\n [ref]=\"materialRef\"\n [buffer]=\"transmissionBuffer() || fboMainRef()?.texture\"\n [_transmission]=\"transmissionTransmission()\"\n [transmission]=\"transmissionTransmissionSampler() ? transmissionTransmission() : 0\"\n [thickness]=\"transmissionThickness()\"\n [side]=\"side\"\n [anisotropy]=\"transmissionAnisotropy()\"\n [roughness]=\"transmissionRoughness()\"\n [chromaticAberration]=\"transmissionChromaticAberration()\"\n [distortion]=\"transmissionDistortion()\"\n [distortionScale]=\"transmissionDistortionScale()\"\n [temporalDistortion]=\"transmissionTemporalDistortion()\"\n [time]=\"transmissionTime()\"\n />\n `,\n imports: [NgtArgs],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsMeshTranmissionMaterial extends NgtSignalStore<NgtsMeshTranmissionMaterialState> {\n @Input() materialRef = injectNgtRef<MeshTransmissionMaterial & { time: number; buffer?: THREE.Texture }>();\n /** transmissionSampler, you can use the threejs transmission sampler texture that is\n * generated once for all transmissive materials. The upside is that it can be faster if you\n * use multiple MeshPhysical and Transmission materials, the downside is that transmissive materials\n * using this can't see other transparent or transmissive objects, default: false */\n @Input() set transmissionSampler(transmissionSampler: boolean) {\n this.set({ transmissionSampler });\n }\n /** Render the backside of the material (more cost, better results), default: false */\n @Input() set backside(backside: boolean) {\n this.set({ backside });\n }\n /** Backside thickness (when backside is true), default: 0 */\n @Input() set backsideThickness(backsideThickness: number) {\n this.set({ backsideThickness });\n }\n /** Resolution of the local buffer, default: undefined (fullscreen) */\n @Input() set resolution(resolution: number) {\n this.set({ resolution });\n }\n /** Resolution of the local buffer for backfaces, default: undefined (fullscreen) */\n @Input() set backsideResolution(backsideResolution: number) {\n this.set({ backsideResolution });\n }\n /** Refraction samples, default: 10 */\n @Input() set samples(samples: number) {\n this.set({ samples });\n }\n /** Buffer scene background (can be a texture, a cubetexture or a color), default: null */\n @Input() set background(background: THREE.Texture | THREE.Color) {\n this.set({ background });\n }\n /* Transmission, default: 1 */\n @Input() set transmission(transmission: number) {\n this.set({ transmission });\n }\n /* Thickness (refraction), default: 0 */\n @Input() set thickness(thickness: number) {\n this.set({ thickness });\n }\n /* Roughness (blur), default: 0 */\n @Input() set roughness(roughness: number) {\n this.set({ roughness });\n }\n /* Chromatic aberration, default: 0.03 */\n @Input() set chromaticAberration(chromaticAberration: number) {\n this.set({ chromaticAberration });\n }\n /* Anisotropy, default: 0.1 */\n @Input() set anisotropy(anisotropy: number) {\n this.set({ anisotropy });\n }\n /* Distortion, default: 0 */\n @Input() set distortion(distortion: number) {\n this.set({ distortion });\n }\n /* Distortion scale, default: 0.5 */\n @Input() set distortionScale(distortionScale: number) {\n this.set({ distortionScale });\n }\n /* Temporal distortion (speed of movement), default: 0.0 */\n @Input() set temporalDistortion(temporalDistortion: number) {\n this.set({ temporalDistortion });\n }\n /** The scene rendered into a texture (use it to share a texture between materials), default: null */\n @Input() set buffer(buffer: THREE.Texture) {\n this.set({ buffer });\n }\n /** Internals */\n @Input() set time(time: number) {\n this.set({ time });\n }\n\n readonly transmissionTransmissionSampler = this.select('transmissionSampler');\n readonly transmissionBackside = this.select('backside');\n readonly transmissionTransmission = this.select('transmission');\n readonly transmissionThickness = this.select('thickness');\n readonly transmissionBacksideThickness = this.select('backsideThickness');\n readonly transmissionSamples = this.select('samples');\n readonly transmissionRoughness = this.select('roughness');\n readonly transmissionAnisotropy = this.select('anisotropy');\n readonly transmissionChromaticAberration = this.select('chromaticAberration');\n readonly transmissionDistortion = this.select('distortion');\n readonly transmissionDistortionScale = this.select('distortionScale');\n readonly transmissionTemporalDistortion = this.select('temporalDistortion');\n readonly transmissionBuffer = this.select('buffer');\n readonly transmissionTime = this.select('time');\n\n readonly #discardMaterial = new DiscardMaterial();\n\n readonly #backsideResolution = this.select('backsideResolution');\n readonly #resolution = this.select('resolution');\n\n readonly #fboBackSettings = computed(() => ({ width: this.#backsideResolution() || this.#resolution() }));\n readonly #fboMainSettings = computed(() => ({ width: this.#resolution() }));\n\n readonly fboBackRef = injectNgtsFBO(this.#fboBackSettings);\n readonly fboMainRef = injectNgtsFBO(this.#fboMainSettings);\n\n readonly side = THREE.FrontSide;\n\n constructor() {\n super({\n transmissionSampler: false,\n backside: false,\n transmission: 1,\n thickness: 0,\n backsideThickness: 0,\n samples: 10,\n roughness: 0,\n anisotropy: 0.1,\n chromaticAberration: 0.03,\n distortion: 0,\n distortionScale: 0.5,\n temporalDistortion: 0.0,\n buffer: null,\n });\n let oldBg: THREE.Scene['background'];\n let oldTone: THREE.WebGLRenderer['toneMapping'];\n let parent: THREE.Object3D;\n\n injectBeforeRender((state) => {\n if (!this.materialRef.nativeElement) return;\n\n const { transmissionSampler, background, backside, backsideThickness, thickness } = this.get();\n\n this.materialRef.nativeElement.time = state.clock.getElapsedTime();\n // Render only if the buffer matches the built-in and no transmission sampler is set\n if (this.materialRef.nativeElement.buffer === this.fboMainRef().texture && !transmissionSampler) {\n parent = getLocalState(this.materialRef.nativeElement).parent() as THREE.Object3D;\n if (parent) {\n // Save defaults\n oldTone = state.gl.toneMapping;\n oldBg = state.scene.background;\n\n // Switch off tonemapping lest it double tone maps\n // Save the current background and set the HDR as the new BG\n // Use discardmaterial, the parent will be invisible, but it's shadows will still be cast\n state.gl.toneMapping = THREE.NoToneMapping;\n if (background) state.scene.background = background;\n (parent as NgtAnyRecord)['material'] = this.#discardMaterial;\n\n if (backside) {\n // Render into the backside buffer\n state.gl.setRenderTarget(this.fboBackRef());\n state.gl.render(state.scene, state.camera);\n // And now prepare the material for the main render using the backside buffer\n (parent as NgtAnyRecord)['material'] = this.materialRef.nativeElement;\n (parent as NgtAnyRecord)['material'].buffer = this.fboBackRef().texture;\n (parent as NgtAnyRecord)['material'].thickness = backsideThickness;\n (parent as NgtAnyRecord)['material'].side = THREE.BackSide;\n }\n\n // Render into the main buffer\n state.gl.setRenderTarget(this.fboMainRef());\n state.gl.render(state.scene, state.camera);\n\n (parent as NgtAnyRecord)['material'].thickness = thickness;\n (parent as NgtAnyRecord)['material'].side = this.side;\n (parent as NgtAnyRecord)['material'].buffer = this.fboMainRef().texture;\n\n // Set old state back\n state.scene.background = oldBg;\n state.gl.setRenderTarget(null);\n (parent as NgtAnyRecord)['material'] = this.materialRef.nativeElement;\n state.gl.toneMapping = oldTone;\n }\n }\n });\n }\n}\n","import { Component, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';\nimport { extend, injectBeforeRender, injectNgtRef, NgtArgs, NgtSignalStore } from 'angular-three';\nimport { MeshWobbleMaterial } from 'angular-three-soba/shaders';\n\nextend({ MeshWobbleMaterial });\n\nexport interface NgtsMeshWobbleMaterialState {\n time: number;\n factor: number;\n speed: number;\n}\n\n@Component({\n selector: 'ngts-mesh-wobble-material',\n standalone: true,\n template: `\n <ngt-primitive\n *args=\"[material]\"\n [ref]=\"materialRef\"\n [time]=\"wobbleTime()\"\n [factor]=\"wobbleFactor()\"\n attach=\"material\"\n ngtCompound\n />\n `,\n imports: [NgtArgs],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsMeshWobbleMaterial extends NgtSignalStore<NgtsMeshWobbleMaterialState> {\n readonly material = new MeshWobbleMaterial();\n\n @Input() materialRef = injectNgtRef<MeshWobbleMaterial>();\n\n @Input() set time(time: number) {\n this.set({ time });\n }\n\n @Input() set factor(factor: number) {\n this.set({ factor });\n }\n\n @Input() set speed(speed: number) {\n this.set({ speed });\n }\n\n readonly wobbleTime = this.select('time');\n readonly wobbleFactor = this.select('factor');\n\n constructor() {\n super({ speed: 1, time: 0, factor: 1 });\n injectBeforeRender(({ clock }) => {\n this.material.time = clock.getElapsedTime() * this.get('speed');\n });\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-materials.mjs","sources":["../../../../libs/soba/materials/src/mesh-distort-material/mesh-distort-material.ts","../../../../libs/soba/materials/src/mesh-reflector-material/mesh-reflector-material.ts","../../../../libs/soba/materials/src/mesh-refraction-material/mesh-refraction-material.ts","../../../../libs/soba/materials/src/mesh-transmission-material/mesh-transmission-material.ts","../../../../libs/soba/materials/src/mesh-wobble-material/mesh-wobble-material.ts","../../../../libs/soba/materials/src/angular-three-soba-materials.ts"],"sourcesContent":["import { Component, CUSTOM_ELEMENTS_SCHEMA, inject, Input } from '@angular/core';\nimport { injectBeforeRender, injectNgtRef, NgtArgs, NgtSignalStore } from 'angular-three';\nimport { MeshDistortMaterial, NGTS_DISTORT_MATERIAL_SHADER } from 'angular-three-soba/shaders';\n\nexport interface NgtsMeshDistortMaterialState {\n time: number;\n distort: number;\n radius: number;\n speed: number;\n}\n\n@Component({\n selector: 'ngts-mesh-distort-material',\n standalone: true,\n template: `\n <ngt-primitive\n *args=\"[material]\"\n [ref]=\"materialRef\"\n [time]=\"distortTime()\"\n [distort]=\"distortDistort()\"\n [radius]=\"distortRadius()\"\n ngtCompound\n attach=\"material\"\n />\n `,\n imports: [NgtArgs],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsMeshDistortMaterial extends NgtSignalStore<NgtsMeshDistortMaterialState> {\n readonly material = new (inject(NGTS_DISTORT_MATERIAL_SHADER))();\n\n @Input() materialRef = injectNgtRef<InstanceType<MeshDistortMaterial>>();\n\n @Input() set time(time: number) {\n this.set({ time });\n }\n\n @Input() set distort(distort: number) {\n this.set({ distort });\n }\n\n @Input() set radius(radius: number) {\n this.set({ radius });\n }\n\n @Input() set speed(speed: number) {\n this.set({ speed });\n }\n\n readonly distortTime = this.select('time');\n readonly distortDistort = this.select('distort');\n readonly distortRadius = this.select('radius');\n\n constructor() {\n super({ speed: 1, time: 0, distort: 0.4, radius: 1 });\n injectBeforeRender(({ clock }) => {\n this.material.time = clock.getElapsedTime() * this.get('speed');\n });\n }\n}\n","import { NgIf } from '@angular/common';\nimport { Component, computed, CUSTOM_ELEMENTS_SCHEMA, inject, Input } from '@angular/core';\nimport {\n extend,\n getLocalState,\n injectBeforeRender,\n injectNgtRef,\n NgtArgs,\n NgtRenderState,\n NgtSignalStore,\n NgtStore,\n} from 'angular-three';\nimport { BlurPass, MeshReflectorMaterial } from 'angular-three-soba/shaders';\nimport * as THREE from 'three';\n\nextend({ MeshReflectorMaterial });\n\nexport interface NgtsMeshReflectorMaterialState {\n resolution: number;\n mixBlur: number;\n mixStrength: number;\n blur: [number, number] | number;\n mirror: number;\n minDepthThreshold: number;\n maxDepthThreshold: number;\n depthScale: number;\n depthToBlurRatioBias: number;\n distortionMap?: THREE.Texture;\n distortion: number;\n mixContrast: number;\n reflectorOffset: number;\n}\n\n@Component({\n selector: 'ngts-mesh-reflector-material',\n standalone: true,\n template: `\n <ngt-mesh-reflector-material\n ngtCompound\n attach=\"material\"\n *ngIf=\"defines()\"\n [ref]=\"materialRef\"\n [defines]=\"defines()\"\n [mirror]=\"reflectorMirror()\"\n [textureMatrix]=\"reflectorTextureMatrix()\"\n [mixBlur]=\"reflectorMixBlur()\"\n [tDiffuse]=\"reflectorTDiffuse()\"\n [tDepth]=\"reflectorTDepth()\"\n [tDiffuseBlur]=\"reflectorTDiffuseBlur()\"\n [hasBlur]=\"reflectorHasBlur()\"\n [mixStrength]=\"reflectorMixStrength()\"\n [minDepthThreshold]=\"reflectorMinDepthThreshold()\"\n [maxDepthThreshold]=\"reflectorMaxDepthThreshold()\"\n [depthScale]=\"reflectorDepthScale()\"\n [depthToBlurRatioBias]=\"reflectorDepthToBlurRatioBias()\"\n [distortion]=\"reflectorDistortion()\"\n [distortionMap]=\"reflectorDistortionMap()\"\n [mixContrast]=\"reflectorMixContrast()\"\n >\n <ng-content />\n </ngt-mesh-reflector-material>\n `,\n imports: [NgtArgs, NgIf],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsMeshReflectorMaterial extends NgtSignalStore<NgtsMeshReflectorMaterialState> {\n @Input() materialRef = injectNgtRef<MeshReflectorMaterial>();\n\n @Input() set resolution(resolution: number) {\n this.set({ resolution });\n }\n\n @Input() set mixBlur(mixBlur: number) {\n this.set({ mixBlur });\n }\n\n @Input() set mixStrength(mixStrength: number) {\n this.set({ mixStrength });\n }\n\n @Input() set blur(blur: [number, number] | number) {\n this.set({ blur });\n }\n\n @Input() set mirror(mirror: number) {\n this.set({ mirror });\n }\n\n @Input() set minDepthThreshold(minDepthThreshold: number) {\n this.set({ minDepthThreshold });\n }\n\n @Input() set maxDepthThreshold(maxDepthThreshold: number) {\n this.set({ maxDepthThreshold });\n }\n\n @Input() set depthScale(depthScale: number) {\n this.set({ depthScale });\n }\n\n @Input() set depthToBlurRatioBias(depthToBlurRatioBias: number) {\n this.set({ depthToBlurRatioBias });\n }\n\n @Input() set distortionMap(distortionMap: THREE.Texture) {\n this.set({ distortionMap });\n }\n\n @Input() set distortion(distortion: number) {\n this.set({ distortion });\n }\n\n @Input() set mixContrast(mixContrast: number) {\n this.set({ mixContrast });\n }\n\n @Input() set reflectorOffset(reflectorOffset: number) {\n this.set({ reflectorOffset });\n }\n\n readonly reflectorProps = computed(() => this.#reflectorEntities().reflectorProps);\n readonly defines = computed(() => this.reflectorProps().defines);\n readonly reflectorMirror = computed(() => this.reflectorProps().mirror);\n readonly reflectorTextureMatrix = computed(() => this.reflectorProps().textureMatrix);\n readonly reflectorMixBlur = computed(() => this.reflectorProps().mixBlur);\n readonly reflectorTDiffuse = computed(() => this.reflectorProps().tDiffuse);\n readonly reflectorTDepth = computed(() => this.reflectorProps().tDepth);\n readonly reflectorTDiffuseBlur = computed(() => this.reflectorProps().tDiffuseBlur);\n readonly reflectorHasBlur = computed(() => this.reflectorProps().hasBlur);\n readonly reflectorMixStrength = computed(() => this.reflectorProps().mixStrength);\n readonly reflectorMinDepthThreshold = computed(() => this.reflectorProps().minDepthThreshold);\n readonly reflectorMaxDepthThreshold = computed(() => this.reflectorProps().maxDepthThreshold);\n readonly reflectorDepthScale = computed(() => this.reflectorProps().depthScale);\n readonly reflectorDepthToBlurRatioBias = computed(() => this.reflectorProps().depthToBlurRatioBias);\n readonly reflectorDistortion = computed(() => this.reflectorProps().distortion);\n readonly reflectorDistortionMap = computed(() => this.reflectorProps().distortionMap);\n readonly reflectorMixContrast = computed(() => this.reflectorProps().mixContrast);\n\n readonly #store = inject(NgtStore);\n readonly #gl = this.#store.select('gl');\n\n readonly #reflectorPlane = new THREE.Plane();\n readonly #normal = new THREE.Vector3();\n readonly #reflectorWorldPosition = new THREE.Vector3();\n readonly #cameraWorldPosition = new THREE.Vector3();\n readonly #rotationMatrix = new THREE.Matrix4();\n readonly #lookAtPosition = new THREE.Vector3(0, 0, -1);\n readonly #clipPlane = new THREE.Vector4();\n readonly #view = new THREE.Vector3();\n readonly #target = new THREE.Vector3();\n readonly #q = new THREE.Vector4();\n readonly #textureMatrix = new THREE.Matrix4();\n readonly #virtualCamera = new THREE.PerspectiveCamera();\n\n readonly #blur = this.select('blur');\n readonly #resolution = this.select('resolution');\n readonly #mirror = this.select('mirror');\n readonly #mixBlur = this.select('mixBlur');\n readonly #mixStrength = this.select('mixStrength');\n readonly #minDepthThreshold = this.select('minDepthThreshold');\n readonly #maxDepthThreshold = this.select('maxDepthThreshold');\n readonly #depthScale = this.select('depthScale');\n readonly #depthToBlurRatioBias = this.select('depthToBlurRatioBias');\n readonly #distortion = this.select('distortion');\n readonly #distortionMap = this.select('distortionMap');\n readonly #mixContrast = this.select('mixContrast');\n\n readonly #normalizedBlur = computed(() => {\n const blur = this.#blur();\n return Array.isArray(blur) ? blur : [blur, blur];\n });\n\n readonly #hasBlur = computed(() => {\n const [x, y] = this.#normalizedBlur();\n return x + y > 0;\n });\n\n readonly #reflectorEntities = computed(() => {\n const gl = this.#gl();\n const resolution = this.#resolution();\n const blur = this.#normalizedBlur();\n const minDepthThreshold = this.#minDepthThreshold();\n const maxDepthThreshold = this.#maxDepthThreshold();\n const depthScale = this.#depthScale();\n const depthToBlurRatioBias = this.#depthToBlurRatioBias();\n const mirror = this.#mirror();\n const mixBlur = this.#mixBlur();\n const mixStrength = this.#mixStrength();\n const mixContrast = this.#mixContrast();\n const distortion = this.#distortion();\n const distortionMap = this.#distortionMap();\n const hasBlur = this.#hasBlur();\n\n const parameters = {\n minFilter: THREE.LinearFilter,\n magFilter: THREE.LinearFilter,\n encoding: gl.outputEncoding,\n type: THREE.HalfFloatType,\n };\n const fbo1 = new THREE.WebGLRenderTarget(resolution, resolution, parameters);\n fbo1.depthBuffer = true;\n fbo1.depthTexture = new THREE.DepthTexture(resolution, resolution);\n fbo1.depthTexture.format = THREE.DepthFormat;\n fbo1.depthTexture.type = THREE.UnsignedShortType;\n\n const fbo2 = new THREE.WebGLRenderTarget(resolution, resolution, parameters);\n const blurPass = new BlurPass({\n gl,\n resolution,\n width: blur[0],\n height: blur[1],\n minDepthThreshold,\n maxDepthThreshold,\n depthScale,\n depthToBlurRatioBias,\n });\n const reflectorProps = {\n mirror,\n textureMatrix: this.#textureMatrix,\n mixBlur,\n tDiffuse: fbo1.texture,\n tDepth: fbo1.depthTexture,\n tDiffuseBlur: fbo2.texture,\n hasBlur,\n mixStrength,\n minDepthThreshold,\n maxDepthThreshold,\n depthScale,\n depthToBlurRatioBias,\n distortion,\n distortionMap,\n mixContrast,\n defines: {\n USE_BLUR: hasBlur ? '' : undefined,\n USE_DEPTH: depthScale > 0 ? '' : undefined,\n USE_DISTORTION: distortionMap ? '' : undefined,\n },\n };\n\n return { fbo1, fbo2, blurPass, reflectorProps };\n });\n\n constructor() {\n super({\n mixBlur: 0,\n mixStrength: 1,\n resolution: 256,\n blur: [0, 0],\n minDepthThreshold: 0.9,\n maxDepthThreshold: 1,\n depthScale: 0,\n depthToBlurRatioBias: 0.25,\n mirror: 0,\n distortion: 1,\n mixContrast: 1,\n reflectorOffset: 0,\n });\n\n injectBeforeRender(this.#onBeforeRender.bind(this));\n }\n\n #onBeforeRender(state: NgtRenderState) {\n if (!this.materialRef.nativeElement) return;\n const parent = getLocalState(this.materialRef.nativeElement).parent?.value;\n if (!parent) return;\n\n const { gl, scene } = state;\n const hasBlur = this.#hasBlur();\n const { fbo1, fbo2, blurPass } = this.#reflectorEntities();\n\n if (fbo1 && fbo2 && blurPass) {\n parent.visible = false;\n const currentXrEnabled = gl.xr.enabled;\n const currentShadowAutoUpdate = gl.shadowMap.autoUpdate;\n this.#beforeRender(state);\n gl.xr.enabled = false;\n gl.shadowMap.autoUpdate = false;\n gl.setRenderTarget(fbo1);\n gl.state.buffers.depth.setMask(true);\n if (!gl.autoClear) gl.clear();\n gl.render(scene, this.#virtualCamera);\n if (hasBlur) blurPass.render(gl, fbo1, fbo2);\n gl.xr.enabled = currentXrEnabled;\n gl.shadowMap.autoUpdate = currentShadowAutoUpdate;\n parent.visible = true;\n gl.setRenderTarget(null);\n }\n }\n\n #beforeRender(state: NgtRenderState) {\n const parent = getLocalState(this.materialRef.nativeElement).parent?.value;\n if (!parent) return;\n\n const { camera } = state;\n\n this.#reflectorWorldPosition.setFromMatrixPosition(parent.matrixWorld);\n this.#cameraWorldPosition.setFromMatrixPosition(camera.matrixWorld);\n this.#rotationMatrix.extractRotation(parent.matrixWorld);\n this.#normal.set(0, 0, 1);\n this.#normal.applyMatrix4(this.#rotationMatrix);\n this.#reflectorWorldPosition.addScaledVector(this.#normal, this.get('reflectorOffset'));\n this.#view.subVectors(this.#reflectorWorldPosition, this.#cameraWorldPosition);\n // Avoid rendering when reflector is facing away\n if (this.#view.dot(this.#normal) > 0) return;\n this.#view.reflect(this.#normal).negate();\n this.#view.add(this.#reflectorWorldPosition);\n this.#rotationMatrix.extractRotation(camera.matrixWorld);\n this.#lookAtPosition.set(0, 0, -1);\n this.#lookAtPosition.applyMatrix4(this.#rotationMatrix);\n this.#lookAtPosition.add(this.#cameraWorldPosition);\n this.#target.subVectors(this.#reflectorWorldPosition, this.#lookAtPosition);\n this.#target.reflect(this.#normal).negate();\n this.#target.add(this.#reflectorWorldPosition);\n this.#virtualCamera.position.copy(this.#view);\n this.#virtualCamera.up.set(0, 1, 0);\n this.#virtualCamera.up.applyMatrix4(this.#rotationMatrix);\n this.#virtualCamera.up.reflect(this.#normal);\n this.#virtualCamera.lookAt(this.#target);\n this.#virtualCamera.far = camera.far; // Used in WebGLBackground\n this.#virtualCamera.updateMatrixWorld();\n this.#virtualCamera.projectionMatrix.copy(camera.projectionMatrix);\n // Update the texture matrix\n this.#textureMatrix.set(0.5, 0.0, 0.0, 0.5, 0.0, 0.5, 0.0, 0.5, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0, 1.0);\n this.#textureMatrix.multiply(this.#virtualCamera.projectionMatrix);\n this.#textureMatrix.multiply(this.#virtualCamera.matrixWorldInverse);\n this.#textureMatrix.multiply(parent.matrixWorld);\n // Now update projection matrix with new clip plane, implementing code from: http://www.terathon.com/code/oblique.html\n // Paper explaining this technique: http://www.terathon.com/lengyel/Lengyel-Oblique.pdf\n this.#reflectorPlane.setFromNormalAndCoplanarPoint(this.#normal, this.#reflectorWorldPosition);\n this.#reflectorPlane.applyMatrix4(this.#virtualCamera.matrixWorldInverse);\n this.#clipPlane.set(\n this.#reflectorPlane.normal.x,\n this.#reflectorPlane.normal.y,\n this.#reflectorPlane.normal.z,\n this.#reflectorPlane.constant\n );\n const projectionMatrix = this.#virtualCamera.projectionMatrix;\n this.#q.x = (Math.sign(this.#clipPlane.x) + projectionMatrix.elements[8]) / projectionMatrix.elements[0];\n this.#q.y = (Math.sign(this.#clipPlane.y) + projectionMatrix.elements[9]) / projectionMatrix.elements[5];\n this.#q.z = -1.0;\n this.#q.w = (1.0 + projectionMatrix.elements[10]) / projectionMatrix.elements[14];\n // Calculate the scaled plane vector\n this.#clipPlane.multiplyScalar(2.0 / this.#clipPlane.dot(this.#q));\n // Replacing the third row of the projection matrix\n projectionMatrix.elements[2] = this.#clipPlane.x;\n projectionMatrix.elements[6] = this.#clipPlane.y;\n projectionMatrix.elements[10] = this.#clipPlane.z + 1.0;\n projectionMatrix.elements[14] = this.#clipPlane.w;\n }\n}\n","import { NgIf } from '@angular/common';\nimport { Component, computed, CUSTOM_ELEMENTS_SCHEMA, effect, inject, Input } from '@angular/core';\nimport { extend, getLocalState, injectBeforeRender, injectNgtRef, NgtSignalStore, NgtStore } from 'angular-three';\nimport { MeshRefractionMaterial } from 'angular-three-soba/shaders';\nimport { MeshBVH, MeshBVHUniformStruct, SAH } from 'three-mesh-bvh';\n\nextend({ MeshRefractionMaterial });\n\nexport interface NgtsMeshRefractionMaterialState {\n /** Environment map */\n envMap: THREE.CubeTexture | THREE.Texture;\n /** Number of ray-cast bounces, it can be expensive to have too many, 2 */\n bounces: number;\n /** Refraction index, 2.4 */\n ior: number;\n /** Fresnel (strip light), 0 */\n fresnel: number;\n /** RGB shift intensity, can be expensive, 0 */\n aberrationStrength: number;\n /** Color, white */\n color: THREE.ColorRepresentation;\n /** If this is on it uses fewer ray casts for the RGB shift sacrificing physical accuracy, true */\n fastChroma: boolean;\n}\n\nconst isCubeTexture = (def: THREE.CubeTexture | THREE.Texture): def is THREE.CubeTexture =>\n def && (def as THREE.CubeTexture).isCubeTexture;\n\n@Component({\n selector: 'ngts-mesh-refraction-material',\n standalone: true,\n template: `\n <ngt-mesh-refraction-material\n *ngIf=\"defines() as defines\"\n [ref]=\"materialRef\"\n [defines]=\"defines\"\n [resolution]=\"resolution()\"\n [aberrationStrength]=\"refractionAberrationStrength()\"\n [envMap]=\"refractionEnvMap()\"\n [bounces]=\"refractionBounces()\"\n [ior]=\"refractionIor()\"\n [fresnel]=\"refractionFresnel()\"\n [color]=\"refractionColor()\"\n [fastChroma]=\"refractionFastChroma()\"\n ngtCompound\n attach=\"material\"\n >\n <ng-content />\n </ngt-mesh-refraction-material>\n `,\n imports: [NgIf],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsMeshRefractionMaterial extends NgtSignalStore<NgtsMeshRefractionMaterialState> {\n @Input() materialRef = injectNgtRef<InstanceType<typeof MeshRefractionMaterial>>();\n /** Environment map */\n @Input({ required: true }) set envMap(envMap: THREE.CubeTexture | THREE.Texture) {\n this.set({ envMap });\n }\n /** Number of ray-cast bounces, it can be expensive to have too many, 2 */\n @Input() set bounces(bounces: number) {\n this.set({ bounces });\n }\n /** Refraction index, 2.4 */\n @Input() set ior(ior: number) {\n this.set({ ior });\n }\n /** Fresnel (strip light), 0 */\n @Input() set fresnel(fresnel: number) {\n this.set({ fresnel });\n }\n /** RGB shift intensity, can be expensive, 0 */\n @Input() set aberrationStrength(aberrationStrength: number) {\n this.set({ aberrationStrength });\n }\n /** Color, white */\n @Input() set color(color: THREE.ColorRepresentation) {\n this.set({ color });\n }\n /** If this is on it uses fewer ray casts for the RGB shift sacrificing physical accuracy, true */\n @Input() set fastChroma(fastChroma: boolean) {\n this.set({ fastChroma });\n }\n\n readonly refractionEnvMap = this.select('envMap');\n readonly refractionBounces = this.select('bounces');\n readonly refractionIor = this.select('ior');\n readonly refractionFresnel = this.select('fresnel');\n readonly refractionAberrationStrength = this.select('aberrationStrength');\n readonly refractionColor = this.select('color');\n readonly refractionFastChroma = this.select('fastChroma');\n\n readonly #store = inject(NgtStore);\n readonly #size = this.#store.select('size');\n\n readonly #envMap = this.select('envMap');\n\n readonly defines = computed(() => {\n const envMap = this.#envMap();\n if (!envMap) return null;\n\n const aberrationStrength = this.refractionAberrationStrength();\n const fastChroma = this.refractionFastChroma();\n\n const temp = {} as { [key: string]: string };\n // Sampler2D and SamplerCube need different defines\n const isCubeMap = isCubeTexture(envMap);\n const w = (isCubeMap ? envMap.image[0]?.width : envMap.image.width) ?? 1024;\n const cubeSize = w / 4;\n const _lodMax = Math.floor(Math.log2(cubeSize));\n const _cubeSize = Math.pow(2, _lodMax);\n const width = 3 * Math.max(_cubeSize, 16 * 7);\n const height = 4 * _cubeSize;\n if (isCubeMap) temp['ENVMAP_TYPE_CUBEM'] = '';\n temp['CUBEUV_TEXEL_WIDTH'] = `${1.0 / width}`;\n temp['CUBEUV_TEXEL_HEIGHT'] = `${1.0 / height}`;\n temp['CUBEUV_MAX_MIP'] = `${_lodMax}.0`;\n // Add defines from chromatic aberration\n if (aberrationStrength > 0) temp['CHROMATIC_ABERRATIONS'] = '';\n if (fastChroma) temp['FAST_CHROMA'] = '';\n return temp;\n });\n readonly resolution = computed(() => [this.#size().width, this.#size().height]);\n\n constructor() {\n super({ aberrationStrength: 0, fastChroma: true });\n injectBeforeRender(({ camera }) => {\n if (this.materialRef.nativeElement) {\n (this.materialRef.nativeElement as any)!.viewMatrixInverse = camera.matrixWorld;\n (this.materialRef.nativeElement as any)!.projectionMatrixInverse = camera.projectionMatrixInverse;\n }\n });\n this.#setupGeometry();\n }\n\n #setupGeometry() {\n effect(() => {\n const material = this.materialRef.nativeElement;\n if (!material) return;\n const geometry = getLocalState(material).parent?.value?.geometry;\n if (geometry) {\n (material as any).bvh = new MeshBVHUniformStruct();\n (material as any).bvh.updateFrom(\n new MeshBVH(geometry.clone().toNonIndexed(), { lazyGeneration: false, strategy: SAH } as any)\n );\n }\n });\n }\n}\n","import { Component, computed, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';\nimport {\n extend,\n getLocalState,\n injectBeforeRender,\n injectNgtRef,\n NgtAnyRecord,\n NgtArgs,\n NgtSignalStore,\n} from 'angular-three';\nimport { injectNgtsFBO } from 'angular-three-soba/misc';\nimport { DiscardMaterial, MeshTransmissionMaterial } from 'angular-three-soba/shaders';\nimport * as THREE from 'three';\n\nextend({ MeshTransmissionMaterial });\n\nexport interface NgtsMeshTranmissionMaterialState {\n /** transmissionSampler, you can use the threejs transmission sampler texture that is\n * generated once for all transmissive materials. The upside is that it can be faster if you\n * use multiple MeshPhysical and Transmission materials, the downside is that transmissive materials\n * using this can't see other transparent or transmissive objects, default: false */\n transmissionSampler: boolean;\n /** Render the backside of the material (more cost, better results), default: false */\n backside: boolean;\n /** Backside thickness (when backside is true), default: 0 */\n backsideThickness: number;\n /** Resolution of the local buffer, default: undefined (fullscreen) */\n resolution: number;\n /** Resolution of the local buffer for backfaces, default: undefined (fullscreen) */\n backsideResolution: number;\n /** Refraction samples, default: 10 */\n samples: number;\n /** Buffer scene background (can be a texture, a cubetexture or a color), default: null */\n background: THREE.Texture | THREE.Color;\n /* Transmission, default: 1 */\n transmission: number;\n /* Thickness (refraction), default: 0 */\n thickness: number;\n /* Roughness (blur), default: 0 */\n roughness: number;\n /* Chromatic aberration, default: 0.03 */\n chromaticAberration: number;\n /* Anisotropy, default: 0.1 */\n anisotropy: number;\n /* Distortion, default: 0 */\n distortion: number;\n /* Distortion scale, default: 0.5 */\n distortionScale: number;\n /* Temporal distortion (speed of movement), default: 0.0 */\n temporalDistortion: number;\n /** The scene rendered into a texture (use it to share a texture between materials), default: null */\n buffer: THREE.Texture | null;\n /** Internals */\n time: number;\n}\n\n@Component({\n selector: 'ngts-mesh-transmission-material',\n standalone: true,\n template: `\n <ngt-mesh-transmission-material\n ngtCompound\n *args=\"[transmissionSamples(), transmissionTransmissionSampler()]\"\n [ref]=\"materialRef\"\n [buffer]=\"transmissionBuffer() || fboMainRef()?.texture\"\n [_transmission]=\"transmissionTransmission()\"\n [transmission]=\"transmissionTransmissionSampler() ? transmissionTransmission() : 0\"\n [thickness]=\"transmissionThickness()\"\n [side]=\"side\"\n [anisotropy]=\"transmissionAnisotropy()\"\n [roughness]=\"transmissionRoughness()\"\n [chromaticAberration]=\"transmissionChromaticAberration()\"\n [distortion]=\"transmissionDistortion()\"\n [distortionScale]=\"transmissionDistortionScale()\"\n [temporalDistortion]=\"transmissionTemporalDistortion()\"\n [time]=\"transmissionTime()\"\n />\n `,\n imports: [NgtArgs],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsMeshTranmissionMaterial extends NgtSignalStore<NgtsMeshTranmissionMaterialState> {\n @Input() materialRef = injectNgtRef<MeshTransmissionMaterial & { time: number; buffer?: THREE.Texture }>();\n /** transmissionSampler, you can use the threejs transmission sampler texture that is\n * generated once for all transmissive materials. The upside is that it can be faster if you\n * use multiple MeshPhysical and Transmission materials, the downside is that transmissive materials\n * using this can't see other transparent or transmissive objects, default: false */\n @Input() set transmissionSampler(transmissionSampler: boolean) {\n this.set({ transmissionSampler });\n }\n /** Render the backside of the material (more cost, better results), default: false */\n @Input() set backside(backside: boolean) {\n this.set({ backside });\n }\n /** Backside thickness (when backside is true), default: 0 */\n @Input() set backsideThickness(backsideThickness: number) {\n this.set({ backsideThickness });\n }\n /** Resolution of the local buffer, default: undefined (fullscreen) */\n @Input() set resolution(resolution: number) {\n this.set({ resolution });\n }\n /** Resolution of the local buffer for backfaces, default: undefined (fullscreen) */\n @Input() set backsideResolution(backsideResolution: number) {\n this.set({ backsideResolution });\n }\n /** Refraction samples, default: 10 */\n @Input() set samples(samples: number) {\n this.set({ samples });\n }\n /** Buffer scene background (can be a texture, a cubetexture or a color), default: null */\n @Input() set background(background: THREE.Texture | THREE.Color) {\n this.set({ background });\n }\n /* Transmission, default: 1 */\n @Input() set transmission(transmission: number) {\n this.set({ transmission });\n }\n /* Thickness (refraction), default: 0 */\n @Input() set thickness(thickness: number) {\n this.set({ thickness });\n }\n /* Roughness (blur), default: 0 */\n @Input() set roughness(roughness: number) {\n this.set({ roughness });\n }\n /* Chromatic aberration, default: 0.03 */\n @Input() set chromaticAberration(chromaticAberration: number) {\n this.set({ chromaticAberration });\n }\n /* Anisotropy, default: 0.1 */\n @Input() set anisotropy(anisotropy: number) {\n this.set({ anisotropy });\n }\n /* Distortion, default: 0 */\n @Input() set distortion(distortion: number) {\n this.set({ distortion });\n }\n /* Distortion scale, default: 0.5 */\n @Input() set distortionScale(distortionScale: number) {\n this.set({ distortionScale });\n }\n /* Temporal distortion (speed of movement), default: 0.0 */\n @Input() set temporalDistortion(temporalDistortion: number) {\n this.set({ temporalDistortion });\n }\n /** The scene rendered into a texture (use it to share a texture between materials), default: null */\n @Input() set buffer(buffer: THREE.Texture) {\n this.set({ buffer });\n }\n /** Internals */\n @Input() set time(time: number) {\n this.set({ time });\n }\n\n readonly transmissionTransmissionSampler = this.select('transmissionSampler');\n readonly transmissionBackside = this.select('backside');\n readonly transmissionTransmission = this.select('transmission');\n readonly transmissionThickness = this.select('thickness');\n readonly transmissionBacksideThickness = this.select('backsideThickness');\n readonly transmissionSamples = this.select('samples');\n readonly transmissionRoughness = this.select('roughness');\n readonly transmissionAnisotropy = this.select('anisotropy');\n readonly transmissionChromaticAberration = this.select('chromaticAberration');\n readonly transmissionDistortion = this.select('distortion');\n readonly transmissionDistortionScale = this.select('distortionScale');\n readonly transmissionTemporalDistortion = this.select('temporalDistortion');\n readonly transmissionBuffer = this.select('buffer');\n readonly transmissionTime = this.select('time');\n\n readonly #discardMaterial = new DiscardMaterial();\n\n readonly #backsideResolution = this.select('backsideResolution');\n readonly #resolution = this.select('resolution');\n\n readonly #fboBackSettings = computed(() => ({ width: this.#backsideResolution() || this.#resolution() }));\n readonly #fboMainSettings = computed(() => ({ width: this.#resolution() }));\n\n readonly fboBackRef = injectNgtsFBO(this.#fboBackSettings);\n readonly fboMainRef = injectNgtsFBO(this.#fboMainSettings);\n\n readonly side = THREE.FrontSide;\n\n constructor() {\n super({\n transmissionSampler: false,\n backside: false,\n transmission: 1,\n thickness: 0,\n backsideThickness: 0,\n samples: 10,\n roughness: 0,\n anisotropy: 0.1,\n chromaticAberration: 0.03,\n distortion: 0,\n distortionScale: 0.5,\n temporalDistortion: 0.0,\n buffer: null,\n });\n let oldBg: THREE.Scene['background'];\n let oldTone: THREE.WebGLRenderer['toneMapping'];\n let parent: THREE.Object3D;\n\n injectBeforeRender((state) => {\n if (!this.materialRef.nativeElement) return;\n\n const { transmissionSampler, background, backside, backsideThickness, thickness } = this.get();\n\n this.materialRef.nativeElement.time = state.clock.getElapsedTime();\n // Render only if the buffer matches the built-in and no transmission sampler is set\n if (this.materialRef.nativeElement.buffer === this.fboMainRef().texture && !transmissionSampler) {\n parent = getLocalState(this.materialRef.nativeElement).parent?.value as THREE.Object3D;\n if (parent) {\n // Save defaults\n oldTone = state.gl.toneMapping;\n oldBg = state.scene.background;\n\n // Switch off tonemapping lest it double tone maps\n // Save the current background and set the HDR as the new BG\n // Use discardmaterial, the parent will be invisible, but it's shadows will still be cast\n state.gl.toneMapping = THREE.NoToneMapping;\n if (background) state.scene.background = background;\n (parent as NgtAnyRecord)['material'] = this.#discardMaterial;\n\n if (backside) {\n // Render into the backside buffer\n state.gl.setRenderTarget(this.fboBackRef());\n state.gl.render(state.scene, state.camera);\n // And now prepare the material for the main render using the backside buffer\n (parent as NgtAnyRecord)['material'] = this.materialRef.nativeElement;\n (parent as NgtAnyRecord)['material'].buffer = this.fboBackRef().texture;\n (parent as NgtAnyRecord)['material'].thickness = backsideThickness;\n (parent as NgtAnyRecord)['material'].side = THREE.BackSide;\n }\n\n // Render into the main buffer\n state.gl.setRenderTarget(this.fboMainRef());\n state.gl.render(state.scene, state.camera);\n\n (parent as NgtAnyRecord)['material'].thickness = thickness;\n (parent as NgtAnyRecord)['material'].side = this.side;\n (parent as NgtAnyRecord)['material'].buffer = this.fboMainRef().texture;\n\n // Set old state back\n state.scene.background = oldBg;\n state.gl.setRenderTarget(null);\n (parent as NgtAnyRecord)['material'] = this.materialRef.nativeElement;\n state.gl.toneMapping = oldTone;\n }\n }\n });\n }\n}\n","import { Component, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';\nimport { extend, injectBeforeRender, injectNgtRef, NgtArgs, NgtSignalStore } from 'angular-three';\nimport { MeshWobbleMaterial } from 'angular-three-soba/shaders';\n\nextend({ MeshWobbleMaterial });\n\nexport interface NgtsMeshWobbleMaterialState {\n time: number;\n factor: number;\n speed: number;\n}\n\n@Component({\n selector: 'ngts-mesh-wobble-material',\n standalone: true,\n template: `\n <ngt-primitive\n *args=\"[material]\"\n [ref]=\"materialRef\"\n [time]=\"wobbleTime()\"\n [factor]=\"wobbleFactor()\"\n attach=\"material\"\n ngtCompound\n />\n `,\n imports: [NgtArgs],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsMeshWobbleMaterial extends NgtSignalStore<NgtsMeshWobbleMaterialState> {\n readonly material = new MeshWobbleMaterial();\n\n @Input() materialRef = injectNgtRef<MeshWobbleMaterial>();\n\n @Input() set time(time: number) {\n this.set({ time });\n }\n\n @Input() set factor(factor: number) {\n this.set({ factor });\n }\n\n @Input() set speed(speed: number) {\n this.set({ speed });\n }\n\n readonly wobbleTime = this.select('time');\n readonly wobbleFactor = this.select('factor');\n\n constructor() {\n super({ speed: 1, time: 0, factor: 1 });\n injectBeforeRender(({ clock }) => {\n this.material.time = clock.getElapsedTime() * this.get('speed');\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -2061,9 +2061,9 @@ function setEnvProps(background, scene, defaultScene, texture, blur = 0) {
2061
2061
  const CUBEMAP_ROOT = 'https://market-assets.fra1.cdn.digitaloceanspaces.com/market-assets/hdris/';
2062
2062
  function injectNgtsEnvironment(paramsFactory, injector) {
2063
2063
  injector = assertInjectionContext(injectNgtsEnvironment, injector);
2064
+ const textureRef = injectNgtRef();
2064
2065
  return runInInjectionContext(injector, () => {
2065
2066
  const cdr = inject(ChangeDetectorRef);
2066
- const textureRef = injectNgtRef();
2067
2067
  inject(DestroyRef).onDestroy(() => {
2068
2068
  textureRef.untracked.dispose();
2069
2069
  });
@@ -2212,7 +2212,7 @@ class NgtsEnvironmentGround {
2212
2212
  this.texture = computed(() => {
2213
2213
  const defaultTexture = this.#defaultTexture.nativeElement;
2214
2214
  return this.environmentInput.environmentMap() || defaultTexture;
2215
- });
2215
+ }, { equal: Object.is });
2216
2216
  this.groundArgs = computed(() => (this.texture() ? [this.texture()] : []));
2217
2217
  this.height = computed(() => this.environmentInput.environmentGround()?.height);
2218
2218
  this.radius = computed(() => this.environmentInput.environmentGround()?.radius);
@@ -2877,14 +2877,28 @@ class NgtsVolumetricMesh {
2877
2877
  this.resolution = computed(() => this.spotLightInput.lightDepthBuffer()
2878
2878
  ? [this.#size().width * this.#dpr(), this.#size().height * this.#dpr()]
2879
2879
  : [0, 0]);
2880
- this.spotLightInput.patch({
2881
- opacity: 1,
2882
- color: 'white',
2883
- distance: 5,
2884
- angle: 0.15,
2885
- attenuation: 5,
2886
- anglePower: 5,
2887
- });
2880
+ try {
2881
+ this.spotLightInput.patch({
2882
+ opacity: 1,
2883
+ color: 'white',
2884
+ distance: 5,
2885
+ angle: 0.15,
2886
+ attenuation: 5,
2887
+ anglePower: 5,
2888
+ });
2889
+ }
2890
+ catch {
2891
+ queueMicrotask(() => {
2892
+ this.spotLightInput.patch({
2893
+ opacity: 1,
2894
+ color: 'white',
2895
+ distance: 5,
2896
+ angle: 0.15,
2897
+ attenuation: 5,
2898
+ anglePower: 5,
2899
+ });
2900
+ });
2901
+ }
2888
2902
  injectBeforeRender(() => {
2889
2903
  const mesh = this.mesh.nativeElement;
2890
2904
  if (!mesh)