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.
- package/esm2022/materials/mesh-reflector-material/mesh-reflector-material.mjs +3 -3
- package/esm2022/materials/mesh-refraction-material/mesh-refraction-material.mjs +2 -2
- package/esm2022/materials/mesh-transmission-material/mesh-transmission-material.mjs +2 -2
- package/esm2022/staging/environment/environment-ground.mjs +2 -2
- package/esm2022/staging/environment/utils.mjs +2 -2
- package/esm2022/staging/spot-light/volumetric-mesh.mjs +23 -9
- package/fesm2022/angular-three-soba-materials.mjs +4 -4
- package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
- package/fesm2022/angular-three-soba-staging.mjs +24 -10
- package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
- package/package.json +7 -7
- package/plugin/package.json +1 -1
|
@@ -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
|
|
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
|
-
|
|
2881
|
-
|
|
2882
|
-
|
|
2883
|
-
|
|
2884
|
-
|
|
2885
|
-
|
|
2886
|
-
|
|
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)
|