{"version":3,"file":"angular-three-soba-shaders.mjs","sources":["../../../../libs/soba/shaders/src/lib/image-shader-material/image-shader-material.ts","../../../../libs/soba/shaders/src/lib/mesh-reflector-material/mesh-reflector-material.ts","../../../../libs/soba/shaders/src/lib/spot-light-material/spot-light-material.ts","../../../../libs/soba/shaders/src/lib/star-field-material/star-field-material.ts","../../../../libs/soba/shaders/src/angular-three-soba-shaders.ts"],"sourcesContent":["import {\n  AnyConstructor,\n  coerceNumberProperty,\n  NgtColor,\n  NumberInput,\n  provideCommonMaterialRef,\n  provideNgtCommonMaterial,\n} from '@angular-three/core';\nimport { NgtShaderMaterial } from '@angular-three/core/materials';\nimport { ImageShaderMaterial } from '@angular-three/soba/materials';\nimport { ChangeDetectionStrategy, Component, Input, NgModule } from '@angular/core';\nimport * as THREE from 'three';\n\nexport type NgtSobaImageShaderMaterialParameters = THREE.ShaderMaterialParameters & {\n  map: THREE.Texture;\n  scale?: number[];\n  imageBounds?: number[];\n  color?: NgtColor;\n  zoom?: number;\n  grayscale?: number;\n};\n\n@Component({\n  selector: 'ngt-soba-image-shader-material',\n  standalone: true,\n  template: `<ng-content></ng-content>`,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    provideNgtCommonMaterial(NgtSobaImageShaderMaterial),\n    provideCommonMaterialRef(NgtSobaImageShaderMaterial),\n  ],\n})\nexport class NgtSobaImageShaderMaterial extends NgtShaderMaterial {\n  @Input() set map(map: THREE.Texture) {\n    this.set({ map });\n  }\n\n  @Input() set scale(scale: number[]) {\n    this.set({ scale });\n  }\n\n  @Input() set imageBounds(imageBounds: number[]) {\n    this.set({ imageBounds });\n  }\n\n  @Input() set color(color: NgtColor) {\n    this.set({ color });\n  }\n\n  @Input() set zoom(zoom: NumberInput) {\n    this.set({ zoom: coerceNumberProperty(zoom) });\n  }\n\n  @Input() set grayscale(grayscale: NumberInput) {\n    this.set({ grayscale: coerceNumberProperty(grayscale) });\n  }\n\n  override get materialType(): AnyConstructor<typeof ImageShaderMaterial.prototype> {\n    return ImageShaderMaterial;\n  }\n\n  protected override get optionFields(): Record<string, boolean> {\n    return {\n      ...super.optionFields,\n      map: false,\n      scale: true,\n      imageBounds: true,\n      color: true,\n      zoom: true,\n      grayscale: true,\n    };\n  }\n}\n\n@NgModule({\n  imports: [NgtSobaImageShaderMaterial],\n  exports: [NgtSobaImageShaderMaterial],\n})\nexport class NgtSobaImageShaderMaterialModule {}\n","import {\n  AnyConstructor,\n  applyProps,\n  coerceNumberProperty,\n  is,\n  NgtUnknownInstance,\n  NumberInput,\n  provideCommonMaterialRef,\n  provideNgtCommonMaterial,\n  Ref,\n  tapEffect,\n} from '@angular-three/core';\nimport { NgtMeshStandardMaterial } from '@angular-three/core/materials';\nimport { BlurPass, MeshReflectorMaterial } from '@angular-three/soba/materials';\nimport { ChangeDetectionStrategy, Component, Input, NgModule } from '@angular/core';\nimport { Observable, tap } from 'rxjs';\nimport * as THREE from 'three';\n\n@Component({\n  selector: 'ngt-soba-mesh-reflector-material',\n  standalone: true,\n  template: `<ng-content></ng-content>`,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    provideNgtCommonMaterial(NgtSobaMeshReflectorMaterial),\n    provideCommonMaterialRef(NgtSobaMeshReflectorMaterial),\n  ],\n})\nexport class NgtSobaMeshReflectorMaterial extends NgtMeshStandardMaterial {\n  @Input() set resolution(resolution: NumberInput) {\n    this.set({ resolution: coerceNumberProperty(resolution) });\n  }\n\n  @Input() set mixBlur(mixBlur: NumberInput) {\n    this.set({ mixBlur: coerceNumberProperty(mixBlur) });\n  }\n\n  @Input() set mixStrength(mixStrength: NumberInput) {\n    this.set({ mixStrength: coerceNumberProperty(mixStrength) });\n  }\n\n  @Input() set blur(blur: [number, number] | NumberInput) {\n    const blurArr = is.arr(blur) ? blur : [coerceNumberProperty(blur), coerceNumberProperty(blur)];\n    this.set({ blur: blurArr, hasBlur: blurArr[0] + blurArr[1] > 0 });\n  }\n\n  @Input() set mirror(mirror: NumberInput) {\n    this.set({ mirror: coerceNumberProperty(mirror) });\n  }\n\n  @Input() set minDepthThreshold(minDepthThreshold: NumberInput) {\n    this.set({ minDepthThreshold: coerceNumberProperty(minDepthThreshold) });\n  }\n\n  @Input() set maxDepthThreshold(maxDepthThreshold: NumberInput) {\n    this.set({ maxDepthThreshold: coerceNumberProperty(maxDepthThreshold) });\n  }\n\n  @Input() set depthScale(depthScale: NumberInput) {\n    this.set({ depthScale: coerceNumberProperty(depthScale) });\n  }\n\n  @Input() set depthToBlurRatioBias(depthToBlurRatioBias: NumberInput) {\n    this.set({ depthToBlurRatioBias: coerceNumberProperty(depthToBlurRatioBias) });\n  }\n\n  @Input() set distortionMap(distortionMap: THREE.Texture) {\n    this.set({ distortionMap });\n  }\n\n  @Input() set distortion(distortion: NumberInput) {\n    this.set({ distortion: coerceNumberProperty(distortion) });\n  }\n\n  @Input() set mixContrast(mixContrast: NumberInput) {\n    this.set({ mixContrast: coerceNumberProperty(mixContrast) });\n  }\n\n  @Input() set reflectorOffset(reflectorOffset: NumberInput) {\n    this.set({ reflectorOffset: coerceNumberProperty(reflectorOffset) });\n  }\n\n  protected readonly reflectorPlane = new THREE.Plane();\n  protected readonly normal = new THREE.Vector3();\n  protected readonly reflectorWorldPosition = new THREE.Vector3();\n  protected readonly cameraWorldPosition = new THREE.Vector3();\n  protected readonly rotationMatrix = new THREE.Matrix4();\n  protected readonly lookAtPosition = new THREE.Vector3(0, 0, -1);\n  protected readonly clipPlane = new THREE.Vector4();\n  protected readonly view = new THREE.Vector3();\n  protected readonly target = new THREE.Vector3();\n  protected readonly q = new THREE.Vector4();\n  protected readonly virtualCamera = new THREE.PerspectiveCamera();\n\n  readonly materialProps$ = this.select(\n    this.store.select((s) => s.gl),\n    this.select((s) => s['blur']),\n    this.select((s) => s['resolution']),\n    this.select((s) => s['mirror']),\n    this.select((s) => s['hasBlur']),\n    this.select((s) => s['mixBlur']),\n    this.select((s) => s['mixStrength']),\n    this.select((s) => s['minDepthThreshold']),\n    this.select((s) => s['maxDepthThreshold']),\n    this.select((s) => s['depthScale']),\n    this.select((s) => s['depthToBlurRatioBias']),\n    this.select((s) => s['distortion']),\n    this.select((s) => s['distortionMap']),\n    this.select((s) => s['mixContrast'])\n  );\n\n  override get materialType(): AnyConstructor<MeshReflectorMaterial> {\n    return MeshReflectorMaterial;\n  }\n\n  protected override preInit() {\n    super.preInit();\n    this.set((state) => {\n      const blur = state['blur'] ?? [0, 0];\n      const hasBlur = blur[0] + blur[1] > 0;\n      return {\n        fbo1Ref: new Ref<THREE.WebGLRenderTarget>(),\n        fbo2Ref: new Ref<THREE.WebGLRenderTarget>(),\n        blurPassRef: new Ref<BlurPass>(),\n        textureMatrix: new THREE.Matrix4(),\n        mixBlur: state['mixBlur'] ?? 0,\n        mixStrength: state['mixStrength'] ?? 1,\n        resolution: state['resolution'] ?? 256,\n        hasBlur,\n        minDepthThreshold: state['minDepthThreshold'] ?? 0.9,\n        maxDepthThreshold: state['maxDepthThreshold'] ?? 1,\n        depthScale: state['depthScale'] ?? 0,\n        depthToBlurRatioBias: state['depthToBlurRatioBias'] ?? 0.25,\n        mirror: state['mirror'] ?? 0,\n        distortion: state['distortion'] ?? 1,\n        mixContrast: state['mixContrast'] ?? 1,\n        reflectorOffset: state['reflectorOffset'] ?? 0,\n      };\n    });\n  }\n\n  protected override postInit() {\n    super.postInit();\n    this.setReflectorOptions(this.select(this.instance$, this.materialProps$));\n    this.setDefines(this.materialProps$);\n    this.setRenderTargets(this.materialProps$);\n    this.registerBeforeRender();\n  }\n\n  protected override get optionFields(): Record<string, boolean> {\n    return {\n      ...super.optionFields,\n      textureMatrix: false,\n      hasBlur: false,\n      mixBlur: false,\n      mixStrength: false,\n      mirror: false,\n      minDepthThreshold: false,\n      maxDepthThreshold: false,\n      depthScale: false,\n      depthToBlurRatioBias: false,\n      distortionMap: true,\n      distortion: false,\n      mixContrast: false,\n      tDiffuse: true,\n      tDepth: true,\n      tDiffuseBlur: true,\n    };\n  }\n\n  protected override get ctorParams$(): Observable<{}> {\n    return this.select((s) => s['reflectorDefines']);\n  }\n\n  private readonly setReflectorOptions = this.effect(\n    tap(() => {\n      const { reflectorOffset, resolution, reflectorDefines } = this.get();\n\n      const props = {\n        reflectorOffset,\n        resolution,\n        defines: reflectorDefines,\n      };\n\n      applyProps(this.instanceValue, props);\n    })\n  );\n\n  private readonly setRenderTargets = this.effect(\n    tap(() => {\n      const gl = this.store.get((s) => s.gl);\n      const {\n        resolution,\n        blur,\n        minDepthThreshold,\n        maxDepthThreshold,\n        depthScale,\n        depthToBlurRatioBias,\n        fbo1Ref,\n        fbo2Ref,\n        blurPassRef,\n      } = this.get();\n\n      const parameters = {\n        minFilter: THREE.LinearFilter,\n        magFilter: THREE.LinearFilter,\n        encoding: gl.outputEncoding,\n        type: THREE.HalfFloatType,\n      };\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      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\n      fbo1Ref.set(fbo1);\n      fbo2Ref.set(fbo2);\n      blurPassRef.set(blurPass);\n\n      this.set({\n        tDiffuse: fbo1.texture,\n        tDepth: fbo1.depthTexture,\n        tDiffuseBlur: fbo2.texture,\n      });\n    })\n  );\n\n  private readonly setDefines = this.effect(\n    tap(() => {\n      const { hasBlur, depthScale, distortionMap } = this.get();\n      this.set({\n        reflectorDefines: {\n          USE_BLUR: hasBlur ? '' : undefined,\n          USE_DEPTH: depthScale > 0 ? '' : undefined,\n          USE_DISTORTION: distortionMap ? '' : undefined,\n        },\n      });\n    })\n  );\n\n  private readonly registerBeforeRender = this.effect<void>(\n    tapEffect(() =>\n      this.store.registerBeforeRender({\n        callback: () => {\n          const material = this.instanceValue as NgtUnknownInstance<MeshReflectorMaterial>;\n          const parent = material?.__ngt__?.parent?.value as unknown as THREE.Mesh;\n          if (!parent) return;\n\n          const gl = this.store.get((s) => s.gl);\n          const scene = this.store.get((s) => s.scene);\n          const { fbo1Ref, fbo2Ref, blurPassRef, hasBlur } = this.get();\n\n          if (!fbo1Ref.value || !fbo2Ref.value) {\n            return;\n          }\n\n          parent.visible = false;\n          const currentXrEnabled = gl.xr.enabled;\n          const currentShadowAutoUpdate = gl.shadowMap.autoUpdate;\n          this.beforeRender(material);\n          gl.xr.enabled = false;\n          gl.shadowMap.autoUpdate = false;\n          gl.setRenderTarget(fbo1Ref.value);\n          gl.state.buffers.depth.setMask(true);\n\n          if (!gl.autoClear) {\n            gl.clear();\n          }\n\n          gl.render(scene, this.virtualCamera);\n\n          if (hasBlur && blurPassRef.value && fbo1Ref.value && fbo2Ref.value) {\n            blurPassRef.value.render(gl, fbo1Ref.value, fbo2Ref.value);\n          }\n\n          gl.xr.enabled = currentXrEnabled;\n          gl.shadowMap.autoUpdate = currentShadowAutoUpdate;\n          parent.visible = true;\n          gl.setRenderTarget(null);\n        },\n      })\n    )\n  );\n\n  private beforeRender(material: NgtUnknownInstance<MeshReflectorMaterial>) {\n    const parent = material.__ngt__.parent?.value as unknown as THREE.Mesh;\n    if (!parent) return;\n\n    const { camera } = this.store.get();\n    const { reflectorOffset, textureMatrix } = this.get();\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, 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    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    textureMatrix.multiply(this.virtualCamera.projectionMatrix);\n    textureMatrix.multiply(this.virtualCamera.matrixWorldInverse);\n    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\n@NgModule({\n  imports: [NgtSobaMeshReflectorMaterial],\n  exports: [NgtSobaMeshReflectorMaterial],\n})\nexport class NgtSobaMeshReflectorMaterialModule {}\n","import { AnyConstructor, provideCommonMaterialRef, provideNgtCommonMaterial } from '@angular-three/core';\nimport { NgtShaderMaterial } from '@angular-three/core/materials';\nimport { SpotLightMaterial } from '@angular-three/soba/materials';\nimport { Component, NgModule } from '@angular/core';\n\n@Component({\n  selector: 'ngt-soba-spot-light-material',\n  standalone: true,\n  template: `<ng-content></ng-content>`,\n  providers: [provideNgtCommonMaterial(NgtSobaSpotLightMaterial), provideCommonMaterialRef(NgtSobaSpotLightMaterial)],\n})\nexport class NgtSobaSpotLightMaterial extends NgtShaderMaterial {\n  override get materialType(): AnyConstructor<SpotLightMaterial> {\n    return SpotLightMaterial;\n  }\n}\n\n@NgModule({\n  imports: [NgtSobaSpotLightMaterial],\n  exports: [NgtSobaSpotLightMaterial],\n})\nexport class NgtSobaSpotLightMaterialModule {}\n","import { AnyConstructor, provideCommonMaterialRef, provideNgtCommonMaterial } from '@angular-three/core';\nimport { NgtShaderMaterial } from '@angular-three/core/materials';\nimport { StarFieldMaterial } from '@angular-three/soba/materials';\nimport { Component, NgModule } from '@angular/core';\n\n@Component({\n  selector: 'ngt-soba-star-field-material',\n  standalone: true,\n  template: `<ng-content></ng-content>`,\n  providers: [provideNgtCommonMaterial(NgtSobaStarFieldMaterial), provideCommonMaterialRef(NgtSobaStarFieldMaterial)],\n})\nexport class NgtSobaStarFieldMaterial extends NgtShaderMaterial {\n  override get materialType(): AnyConstructor<StarFieldMaterial> {\n    return StarFieldMaterial;\n  }\n}\n\n@NgModule({\n  imports: [NgtSobaStarFieldMaterial],\n  exports: [NgtSobaStarFieldMaterial],\n})\nexport class NgtSobaStarFieldMaterialModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}