angular-three-soba 1.9.2 → 1.10.0

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.
Files changed (82) hide show
  1. package/esm2020/abstractions/lib/billboard/billboard.mjs +3 -3
  2. package/esm2020/abstractions/lib/catmull-rom-line/catmull-rom-line.mjs +3 -3
  3. package/esm2020/abstractions/lib/cubic-bezier-line/cubic-bezier-line.mjs +3 -3
  4. package/esm2020/abstractions/lib/gizmo-helper/gizmo-helper.mjs +6 -6
  5. package/esm2020/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +3 -3
  6. package/esm2020/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +6 -6
  7. package/esm2020/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.mjs +3 -3
  8. package/esm2020/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube.mjs +3 -3
  9. package/esm2020/abstractions/lib/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +6 -6
  10. package/esm2020/abstractions/lib/gizmo-helper/gizmo-viewport/gizmo-viewport.mjs +3 -3
  11. package/esm2020/abstractions/lib/line/line-input.mjs +3 -3
  12. package/esm2020/abstractions/lib/line/line.mjs +3 -3
  13. package/esm2020/abstractions/lib/quadratic-bezier-line/quadratic-bezier-line.mjs +3 -3
  14. package/esm2020/abstractions/lib/text/text.mjs +3 -3
  15. package/esm2020/abstractions/lib/text-3d/text-3d.mjs +3 -3
  16. package/esm2020/cameras/lib/camera/camera-content.mjs +3 -3
  17. package/esm2020/cameras/lib/camera/camera.mjs +3 -3
  18. package/esm2020/cameras/lib/orthographic-camera/orthographic-camera.mjs +3 -3
  19. package/esm2020/cameras/lib/perspective-camera/perspective-camera.mjs +3 -3
  20. package/esm2020/controls/lib/orbit-controls/orbit-controls.mjs +3 -3
  21. package/esm2020/loaders/lib/loader/loader.mjs +3 -3
  22. package/esm2020/materials/lib/mesh-distort-material/mesh-distort-material.mjs +3 -3
  23. package/esm2020/materials/lib/mesh-reflector-material/mesh-reflector-material.mjs +4 -5
  24. package/esm2020/materials/lib/mesh-wobble-material/mesh-wobble-material.mjs +3 -3
  25. package/esm2020/misc/lib/bake-shadows/bake-shadows.mjs +3 -3
  26. package/esm2020/performance/lib/adaptive/adaptive-dpr.mjs +3 -3
  27. package/esm2020/performance/lib/adaptive/adaptive-events.mjs +3 -3
  28. package/esm2020/performance/lib/detailed/detailed.mjs +3 -3
  29. package/esm2020/performance/lib/stats/stats.mjs +3 -3
  30. package/esm2020/shaders/index.mjs +2 -1
  31. package/esm2020/shaders/lib/mesh-refraction-material/mesh-refraction-material.mjs +169 -0
  32. package/esm2020/staging/lib/accumulative-shadows/accumulative-shadows.mjs +6 -6
  33. package/esm2020/staging/lib/accumulative-shadows/randomized-lights.mjs +6 -6
  34. package/esm2020/staging/lib/bounds/bounds.mjs +3 -3
  35. package/esm2020/staging/lib/camera-shake/camera-shake.mjs +3 -3
  36. package/esm2020/staging/lib/center/center.mjs +3 -3
  37. package/esm2020/staging/lib/cloud/cloud.mjs +3 -3
  38. package/esm2020/staging/lib/contact-shadows/contact-shadows.mjs +3 -3
  39. package/esm2020/staging/lib/environment/environment-cube.mjs +3 -3
  40. package/esm2020/staging/lib/environment/environment-ground.mjs +3 -3
  41. package/esm2020/staging/lib/environment/environment-inputs.mjs +3 -3
  42. package/esm2020/staging/lib/environment/environment-map.mjs +3 -3
  43. package/esm2020/staging/lib/environment/environment-portal.mjs +3 -3
  44. package/esm2020/staging/lib/environment/environment.mjs +6 -6
  45. package/esm2020/staging/lib/float/float.mjs +3 -3
  46. package/esm2020/staging/lib/sky/sky.mjs +3 -3
  47. package/esm2020/staging/lib/sparkles/sparkles.mjs +3 -3
  48. package/esm2020/staging/lib/spot-light/shadow-mesh-input.mjs +3 -3
  49. package/esm2020/staging/lib/spot-light/spot-light-input.mjs +3 -3
  50. package/esm2020/staging/lib/spot-light/spot-light-shadow-no-shader.mjs +3 -3
  51. package/esm2020/staging/lib/spot-light/spot-light-shadow-shader.mjs +3 -3
  52. package/esm2020/staging/lib/spot-light/spot-light-shadow.mjs +3 -3
  53. package/esm2020/staging/lib/spot-light/spot-light.mjs +3 -3
  54. package/esm2020/staging/lib/spot-light/volumetric-mesh.mjs +3 -3
  55. package/esm2020/staging/lib/stage/stage.mjs +6 -6
  56. package/esm2020/staging/lib/stars/stars.mjs +3 -3
  57. package/fesm2015/angular-three-soba-abstractions.mjs +54 -54
  58. package/fesm2015/angular-three-soba-cameras.mjs +12 -12
  59. package/fesm2015/angular-three-soba-controls.mjs +3 -3
  60. package/fesm2015/angular-three-soba-loaders.mjs +3 -3
  61. package/fesm2015/angular-three-soba-materials.mjs +9 -10
  62. package/fesm2015/angular-three-soba-materials.mjs.map +1 -1
  63. package/fesm2015/angular-three-soba-misc.mjs +3 -3
  64. package/fesm2015/angular-three-soba-performance.mjs +12 -12
  65. package/fesm2015/angular-three-soba-shaders.mjs +196 -31
  66. package/fesm2015/angular-three-soba-shaders.mjs.map +1 -1
  67. package/fesm2015/angular-three-soba-staging.mjs +87 -87
  68. package/fesm2020/angular-three-soba-abstractions.mjs +54 -54
  69. package/fesm2020/angular-three-soba-cameras.mjs +12 -12
  70. package/fesm2020/angular-three-soba-controls.mjs +3 -3
  71. package/fesm2020/angular-three-soba-loaders.mjs +3 -3
  72. package/fesm2020/angular-three-soba-materials.mjs +9 -10
  73. package/fesm2020/angular-three-soba-materials.mjs.map +1 -1
  74. package/fesm2020/angular-three-soba-misc.mjs +3 -3
  75. package/fesm2020/angular-three-soba-performance.mjs +12 -12
  76. package/fesm2020/angular-three-soba-shaders.mjs +199 -34
  77. package/fesm2020/angular-three-soba-shaders.mjs.map +1 -1
  78. package/fesm2020/angular-three-soba-staging.mjs +87 -87
  79. package/package.json +3 -2
  80. package/plugin/package.json +1 -1
  81. package/shaders/index.d.ts +1 -0
  82. package/shaders/lib/mesh-refraction-material/mesh-refraction-material.d.ts +4 -0
@@ -1 +1 @@
1
- {"version":3,"file":"angular-three-soba-materials.mjs","sources":["../../../../libs/angular-three-soba/materials/src/lib/mesh-distort-material/mesh-distort-material.ts","../../../../libs/angular-three-soba/materials/src/lib/mesh-reflector-material/mesh-reflector-material.ts","../../../../libs/angular-three-soba/materials/src/lib/mesh-wobble-material/mesh-wobble-material.ts","../../../../libs/angular-three-soba/materials/src/angular-three-soba-materials.ts"],"sourcesContent":["import { Component, CUSTOM_ELEMENTS_SCHEMA, inject, Input } from '@angular/core';\nimport { injectBeforeRender, injectNgtRef, NgtArgs, NgtRxStore } from 'angular-three';\nimport { NGTS_DISTORT_MATERIAL_SHADER } from 'angular-three-soba/shaders';\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]=\"get('time')\"\n [distort]=\"get('distort')\"\n [radius]=\"get('radius')\"\n ngtCompound\n attach=\"material\"\n />\n `,\n imports: [NgtArgs],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsMeshDistortMaterial extends NgtRxStore {\n readonly MeshDistortMaterial = inject(NGTS_DISTORT_MATERIAL_SHADER);\n\n readonly material = new this.MeshDistortMaterial();\n\n @Input() materialRef = injectNgtRef<typeof this.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 override initialize(): void {\n super.initialize();\n this.set({ speed: 1, time: 0, distort: 0.4, radius: 1 });\n }\n\n constructor() {\n super();\n injectBeforeRender(({ clock }) => {\n this.material.time = clock.getElapsedTime() * this.get('speed');\n });\n }\n}\n","import { NgIf } from '@angular/common';\nimport { Component, CUSTOM_ELEMENTS_SCHEMA, inject, Input } from '@angular/core';\nimport {\n extend,\n getLocalState,\n injectBeforeRender,\n injectNgtRef,\n NgtArgs,\n NgtPush,\n NgtRenderState,\n NgtRxStore,\n NgtStore,\n startWithUndefined,\n} from 'angular-three';\nimport { BlurPass, MeshReflectorMaterial } from 'angular-three-soba/shaders';\nimport { combineLatest, debounceTime, map } from 'rxjs';\nimport * as THREE from 'three';\n\nextend({ MeshReflectorMaterial });\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$ | ngtPush as defines\"\n [ref]=\"materialRef\"\n [defines]=\"defines\"\n [mirror]=\"reflectorProps.mirror\"\n [textureMatrix]=\"reflectorProps.textureMatrix\"\n [mixBlur]=\"reflectorProps.mixBlur\"\n [tDiffuse]=\"reflectorProps.tDiffuse\"\n [tDepth]=\"reflectorProps.tDepth\"\n [tDiffuseBlur]=\"reflectorProps.tDiffuseBlur\"\n [hasBlur]=\"reflectorProps.hasBlur\"\n [mixStrength]=\"reflectorProps.mixStrength\"\n [minDepthThreshold]=\"reflectorProps.minDepthThreshold\"\n [maxDepthThreshold]=\"reflectorProps.maxDepthThreshold\"\n [depthScale]=\"reflectorProps.depthScale\"\n [depthToBlurRatioBias]=\"reflectorProps.depthToBlurRatioBias\"\n [distortion]=\"reflectorProps.distortion\"\n [distortionMap]=\"reflectorProps.distortionMap\"\n [mixContrast]=\"reflectorProps.mixContrast\"\n >\n <ng-content />\n </ngt-mesh-reflector-material>\n `,\n imports: [NgtArgs, NgtPush, NgIf],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsMeshReflectorMaterial extends NgtRxStore {\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 defines$ = this.select('reflectorEntities', 'reflectorProps', 'defines').pipe(debounceTime(0));\n\n get reflectorProps() {\n return this.get('reflectorEntities', 'reflectorProps');\n }\n\n private readonly store = inject(NgtStore);\n\n private readonly reflectorPlane = new THREE.Plane();\n private readonly normal = new THREE.Vector3();\n private readonly reflectorWorldPosition = new THREE.Vector3();\n private readonly cameraWorldPosition = new THREE.Vector3();\n private readonly rotationMatrix = new THREE.Matrix4();\n private readonly lookAtPosition = new THREE.Vector3(0, 0, -1);\n private readonly clipPlane = new THREE.Vector4();\n private readonly view = new THREE.Vector3();\n private readonly target = new THREE.Vector3();\n private readonly q = new THREE.Vector4();\n private readonly textureMatrix = new THREE.Matrix4();\n private readonly virtualCamera = new THREE.PerspectiveCamera();\n\n override initialize(): void {\n super.initialize();\n this.set({\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\n constructor() {\n super();\n\n this.connect(\n 'normalizedBlur',\n this.select('blur').pipe(map((blur) => (Array.isArray(blur) ? blur : [blur, blur])))\n );\n this.connect('hasBlur', this.select('normalizedBlur').pipe(map(([x, y]) => x + y > 0)));\n this.connect(\n 'reflectorEntities',\n combineLatest([\n this.store.select('gl'),\n this.select('normalizedBlur'),\n this.select('resolution'),\n this.select('mirror'),\n this.select('hasBlur'),\n this.select('mixBlur'),\n this.select('mixStrength'),\n this.select('minDepthThreshold'),\n this.select('maxDepthThreshold'),\n this.select('depthScale'),\n this.select('depthToBlurRatioBias'),\n this.select('distortion'),\n this.select('distortionMap').pipe(startWithUndefined()),\n this.select('mixContrast'),\n ]).pipe(\n map(\n ([\n gl,\n blur,\n resolution,\n mirror,\n hasBlur,\n mixBlur,\n mixStrength,\n minDepthThreshold,\n maxDepthThreshold,\n depthScale,\n depthToBlurRatioBias,\n distortion,\n distortionMap,\n mixContrast,\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 )\n );\n\n injectBeforeRender(this.onBeforeRender.bind(this));\n console.log(this.materialRef);\n }\n\n private 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 private 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.get();\n const { fbo1, fbo2, blurPass } = this.get('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","import { Component, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';\nimport { extend, injectBeforeRender, injectNgtRef, NgtArgs, NgtRxStore } from 'angular-three';\nimport { MeshWobbleMaterial } from 'angular-three-soba/shaders';\n\nextend({ MeshWobbleMaterial });\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]=\"get('time')\"\n [factor]=\"get('factor')\"\n attach=\"material\"\n ngtCompound\n />\n `,\n imports: [NgtArgs],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsMeshWobbleMaterial extends NgtRxStore {\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 override initialize(): void {\n super.initialize();\n this.set({ speed: 1, time: 0, factor: 1 });\n }\n\n constructor() {\n super();\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/angular-three-soba/materials/src/lib/mesh-distort-material/mesh-distort-material.ts","../../../../libs/angular-three-soba/materials/src/lib/mesh-reflector-material/mesh-reflector-material.ts","../../../../libs/angular-three-soba/materials/src/lib/mesh-wobble-material/mesh-wobble-material.ts","../../../../libs/angular-three-soba/materials/src/angular-three-soba-materials.ts"],"sourcesContent":["import { Component, CUSTOM_ELEMENTS_SCHEMA, inject, Input } from '@angular/core';\nimport { injectBeforeRender, injectNgtRef, NgtArgs, NgtRxStore } from 'angular-three';\nimport { NGTS_DISTORT_MATERIAL_SHADER } from 'angular-three-soba/shaders';\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]=\"get('time')\"\n [distort]=\"get('distort')\"\n [radius]=\"get('radius')\"\n ngtCompound\n attach=\"material\"\n />\n `,\n imports: [NgtArgs],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsMeshDistortMaterial extends NgtRxStore {\n readonly MeshDistortMaterial = inject(NGTS_DISTORT_MATERIAL_SHADER);\n\n readonly material = new this.MeshDistortMaterial();\n\n @Input() materialRef = injectNgtRef<typeof this.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 override initialize(): void {\n super.initialize();\n this.set({ speed: 1, time: 0, distort: 0.4, radius: 1 });\n }\n\n constructor() {\n super();\n injectBeforeRender(({ clock }) => {\n this.material.time = clock.getElapsedTime() * this.get('speed');\n });\n }\n}\n","import { NgIf } from '@angular/common';\nimport { Component, CUSTOM_ELEMENTS_SCHEMA, inject, Input } from '@angular/core';\nimport {\n extend,\n getLocalState,\n injectBeforeRender,\n injectNgtRef,\n NgtArgs,\n NgtPush,\n NgtRenderState,\n NgtRxStore,\n NgtStore,\n startWithUndefined,\n} from 'angular-three';\nimport { BlurPass, MeshReflectorMaterial } from 'angular-three-soba/shaders';\nimport { combineLatest, debounceTime, map } from 'rxjs';\nimport * as THREE from 'three';\n\nextend({ MeshReflectorMaterial });\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$ | ngtPush as defines\"\n [ref]=\"materialRef\"\n [defines]=\"defines\"\n [mirror]=\"reflectorProps.mirror\"\n [textureMatrix]=\"reflectorProps.textureMatrix\"\n [mixBlur]=\"reflectorProps.mixBlur\"\n [tDiffuse]=\"reflectorProps.tDiffuse\"\n [tDepth]=\"reflectorProps.tDepth\"\n [tDiffuseBlur]=\"reflectorProps.tDiffuseBlur\"\n [hasBlur]=\"reflectorProps.hasBlur\"\n [mixStrength]=\"reflectorProps.mixStrength\"\n [minDepthThreshold]=\"reflectorProps.minDepthThreshold\"\n [maxDepthThreshold]=\"reflectorProps.maxDepthThreshold\"\n [depthScale]=\"reflectorProps.depthScale\"\n [depthToBlurRatioBias]=\"reflectorProps.depthToBlurRatioBias\"\n [distortion]=\"reflectorProps.distortion\"\n [distortionMap]=\"reflectorProps.distortionMap\"\n [mixContrast]=\"reflectorProps.mixContrast\"\n >\n <ng-content />\n </ngt-mesh-reflector-material>\n `,\n imports: [NgtArgs, NgtPush, NgIf],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsMeshReflectorMaterial extends NgtRxStore {\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 defines$ = this.select('reflectorEntities', 'reflectorProps', 'defines').pipe(debounceTime(0));\n\n get reflectorProps() {\n return this.get('reflectorEntities', 'reflectorProps');\n }\n\n private readonly store = inject(NgtStore);\n\n private readonly reflectorPlane = new THREE.Plane();\n private readonly normal = new THREE.Vector3();\n private readonly reflectorWorldPosition = new THREE.Vector3();\n private readonly cameraWorldPosition = new THREE.Vector3();\n private readonly rotationMatrix = new THREE.Matrix4();\n private readonly lookAtPosition = new THREE.Vector3(0, 0, -1);\n private readonly clipPlane = new THREE.Vector4();\n private readonly view = new THREE.Vector3();\n private readonly target = new THREE.Vector3();\n private readonly q = new THREE.Vector4();\n private readonly textureMatrix = new THREE.Matrix4();\n private readonly virtualCamera = new THREE.PerspectiveCamera();\n\n override initialize(): void {\n super.initialize();\n this.set({\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\n constructor() {\n super();\n\n this.connect(\n 'normalizedBlur',\n this.select('blur').pipe(map((blur) => (Array.isArray(blur) ? blur : [blur, blur])))\n );\n this.connect('hasBlur', this.select('normalizedBlur').pipe(map(([x, y]) => x + y > 0)));\n this.connect(\n 'reflectorEntities',\n combineLatest([\n this.store.select('gl'),\n this.select('normalizedBlur'),\n this.select('resolution'),\n this.select('mirror'),\n this.select('hasBlur'),\n this.select('mixBlur'),\n this.select('mixStrength'),\n this.select('minDepthThreshold'),\n this.select('maxDepthThreshold'),\n this.select('depthScale'),\n this.select('depthToBlurRatioBias'),\n this.select('distortion'),\n this.select('distortionMap').pipe(startWithUndefined()),\n this.select('mixContrast'),\n ]).pipe(\n map(\n ([\n gl,\n blur,\n resolution,\n mirror,\n hasBlur,\n mixBlur,\n mixStrength,\n minDepthThreshold,\n maxDepthThreshold,\n depthScale,\n depthToBlurRatioBias,\n distortion,\n distortionMap,\n mixContrast,\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 )\n );\n\n injectBeforeRender(this.onBeforeRender.bind(this));\n }\n\n private 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 private 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.get();\n const { fbo1, fbo2, blurPass } = this.get('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","import { Component, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';\nimport { extend, injectBeforeRender, injectNgtRef, NgtArgs, NgtRxStore } from 'angular-three';\nimport { MeshWobbleMaterial } from 'angular-three-soba/shaders';\n\nextend({ MeshWobbleMaterial });\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]=\"get('time')\"\n [factor]=\"get('factor')\"\n attach=\"material\"\n ngtCompound\n />\n `,\n imports: [NgtArgs],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsMeshWobbleMaterial extends NgtRxStore {\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 override initialize(): void {\n super.initialize();\n this.set({ speed: 1, time: 0, factor: 1 });\n }\n\n constructor() {\n super();\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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"}
@@ -19,9 +19,9 @@ class NgtsBakeShadows extends NgtRxStore {
19
19
  });
20
20
  }
21
21
  }
22
- NgtsBakeShadows.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtsBakeShadows, deps: null, target: i0.ɵɵFactoryTarget.Directive });
23
- NgtsBakeShadows.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.5", type: NgtsBakeShadows, isStandalone: true, selector: "ngts-bake-shadows", usesInheritance: true, ngImport: i0 });
24
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtsBakeShadows, decorators: [{
22
+ NgtsBakeShadows.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgtsBakeShadows, deps: null, target: i0.ɵɵFactoryTarget.Directive });
23
+ NgtsBakeShadows.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.0", type: NgtsBakeShadows, isStandalone: true, selector: "ngts-bake-shadows", usesInheritance: true, ngImport: i0 });
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgtsBakeShadows, decorators: [{
25
25
  type: Directive,
26
26
  args: [{ selector: 'ngts-bake-shadows', standalone: true }]
27
27
  }] });
@@ -36,9 +36,9 @@ class NgtsAdaptiveDpr extends NgtRxStore {
36
36
  });
37
37
  }
38
38
  }
39
- NgtsAdaptiveDpr.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtsAdaptiveDpr, deps: null, target: i0.ɵɵFactoryTarget.Directive });
40
- NgtsAdaptiveDpr.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.5", type: NgtsAdaptiveDpr, isStandalone: true, selector: "ngts-adaptive-dpr", inputs: { pixelated: "pixelated" }, providers: [RxActionFactory], usesInheritance: true, ngImport: i0 });
41
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtsAdaptiveDpr, decorators: [{
39
+ NgtsAdaptiveDpr.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgtsAdaptiveDpr, deps: null, target: i0.ɵɵFactoryTarget.Directive });
40
+ NgtsAdaptiveDpr.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.0", type: NgtsAdaptiveDpr, isStandalone: true, selector: "ngts-adaptive-dpr", inputs: { pixelated: "pixelated" }, providers: [RxActionFactory], usesInheritance: true, ngImport: i0 });
41
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgtsAdaptiveDpr, decorators: [{
42
42
  type: Directive,
43
43
  args: [{
44
44
  selector: 'ngts-adaptive-dpr',
@@ -70,9 +70,9 @@ class NgtsAdaptiveEvents extends NgtRxStore {
70
70
  });
71
71
  }
72
72
  }
73
- NgtsAdaptiveEvents.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtsAdaptiveEvents, deps: null, target: i0.ɵɵFactoryTarget.Directive });
74
- NgtsAdaptiveEvents.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.5", type: NgtsAdaptiveEvents, isStandalone: true, selector: "ngts-adaptive-events", providers: [RxActionFactory], usesInheritance: true, ngImport: i0 });
75
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtsAdaptiveEvents, decorators: [{
73
+ NgtsAdaptiveEvents.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgtsAdaptiveEvents, deps: null, target: i0.ɵɵFactoryTarget.Directive });
74
+ NgtsAdaptiveEvents.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.0", type: NgtsAdaptiveEvents, isStandalone: true, selector: "ngts-adaptive-events", providers: [RxActionFactory], usesInheritance: true, ngImport: i0 });
75
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgtsAdaptiveEvents, decorators: [{
76
76
  type: Directive,
77
77
  args: [{
78
78
  selector: 'ngts-adaptive-events',
@@ -102,13 +102,13 @@ class NgtsDetailed extends NgtRxStore {
102
102
  });
103
103
  }
104
104
  }
105
- NgtsDetailed.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtsDetailed, deps: null, target: i0.ɵɵFactoryTarget.Component });
106
- NgtsDetailed.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.5", type: NgtsDetailed, isStandalone: true, selector: "ngts-detailed[distances]", inputs: { lodRef: "lodRef", distances: "distances" }, usesInheritance: true, ngImport: i0, template: `
105
+ NgtsDetailed.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgtsDetailed, deps: null, target: i0.ɵɵFactoryTarget.Component });
106
+ NgtsDetailed.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.0", type: NgtsDetailed, isStandalone: true, selector: "ngts-detailed[distances]", inputs: { lodRef: "lodRef", distances: "distances" }, usesInheritance: true, ngImport: i0, template: `
107
107
  <ngt-lOD [ref]="lodRef" ngtCompound (beforeRender)="$any($event).object.update($any($event).state.camera)">
108
108
  <ng-content />
109
109
  </ngt-lOD>
110
110
  `, isInline: true });
111
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtsDetailed, decorators: [{
111
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgtsDetailed, decorators: [{
112
112
  type: Component,
113
113
  args: [{
114
114
  selector: 'ngts-detailed[distances]',
@@ -181,9 +181,9 @@ class NgtsStats extends NgtRxStore {
181
181
  });
182
182
  }
183
183
  }
184
- NgtsStats.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtsStats, deps: null, target: i0.ɵɵFactoryTarget.Directive });
185
- NgtsStats.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.5", type: NgtsStats, isStandalone: true, selector: "ngts-stats", inputs: { showPanel: "showPanel", parent: "parent", classes: "classes", right: "right" }, usesInheritance: true, ngImport: i0 });
186
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtsStats, decorators: [{
184
+ NgtsStats.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgtsStats, deps: null, target: i0.ɵɵFactoryTarget.Directive });
185
+ NgtsStats.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.0", type: NgtsStats, isStandalone: true, selector: "ngts-stats", inputs: { showPanel: "showPanel", parent: "parent", classes: "classes", right: "right" }, usesInheritance: true, ngImport: i0 });
186
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgtsStats, decorators: [{
187
187
  type: Directive,
188
188
  args: [{
189
189
  selector: 'ngts-stats',
@@ -1,6 +1,7 @@
1
1
  import * as THREE from 'three';
2
2
  import { ShaderMaterial, Uniform, Vector2, NoBlending, WebGLRenderTarget, LinearFilter, Scene, Camera, BufferGeometry, BufferAttribute, Mesh, MeshStandardMaterial, Vector3, Color } from 'three';
3
3
  import { InjectionToken } from '@angular/core';
4
+ import { MeshBVHUniformStruct, shaderStructs, shaderIntersectFunction } from 'three-mesh-bvh';
4
5
 
5
6
  class ConvolutionMaterial extends ShaderMaterial {
6
7
  constructor(texelSize = new Vector2()) {
@@ -429,6 +430,203 @@ class MeshReflectorMaterial extends MeshStandardMaterial {
429
430
  }
430
431
  }
431
432
 
433
+ function shaderMaterial(uniforms, vertexShader, fragmentShader, onInit) {
434
+ const material = class extends THREE.ShaderMaterial {
435
+ constructor(parameters = {}) {
436
+ const entries = Object.entries(uniforms);
437
+ // Create unforms and shaders
438
+ super({
439
+ uniforms: entries.reduce((acc, [name, value]) => {
440
+ const uniform = THREE.UniformsUtils.clone({ [name]: { value } });
441
+ return {
442
+ ...acc,
443
+ ...uniform,
444
+ };
445
+ }, {}),
446
+ vertexShader,
447
+ fragmentShader,
448
+ });
449
+ this.key = '';
450
+ // Create getter/setters
451
+ entries.forEach(([name]) => Object.defineProperty(this, name, {
452
+ get: () => this.uniforms[name].value,
453
+ set: (v) => (this.uniforms[name].value = v),
454
+ }));
455
+ // Assign parameters, this might include uniforms
456
+ Object.assign(this, parameters);
457
+ // Call onInit
458
+ if (onInit)
459
+ onInit(this);
460
+ }
461
+ };
462
+ material.key = THREE.MathUtils.generateUUID();
463
+ return material;
464
+ }
465
+
466
+ // Author: N8Programs
467
+ const MeshRefractionMaterial = shaderMaterial({
468
+ envMap: null,
469
+ bounces: 3,
470
+ ior: 2.4,
471
+ correctMips: true,
472
+ aberrationStrength: 0.01,
473
+ fresnel: 0,
474
+ bvh: new MeshBVHUniformStruct(),
475
+ color: new THREE.Color('white'),
476
+ resolution: new THREE.Vector2(),
477
+ viewMatrixInverse: new THREE.Matrix4(),
478
+ projectionMatrixInverse: new THREE.Matrix4(),
479
+ },
480
+ /*glsl*/ `
481
+ uniform mat4 viewMatrixInverse;
482
+
483
+ varying vec3 vWorldPosition;
484
+ varying vec3 vNormal;
485
+ varying mat4 vModelMatrixInverse;
486
+
487
+ #ifdef USE_INSTANCING_COLOR
488
+ varying vec3 vInstanceColor;
489
+ #endif
490
+
491
+ void main() {
492
+ vec4 transformedNormal = vec4(normal, 0.0);
493
+ vec4 transformedPosition = vec4(position, 1.0);
494
+ #ifdef USE_INSTANCING
495
+ transformedNormal = instanceMatrix * transformedNormal;
496
+ transformedPosition = instanceMatrix * transformedPosition;
497
+ #endif
498
+
499
+ #ifdef USE_INSTANCING
500
+ vModelMatrixInverse = inverse(modelMatrix * instanceMatrix);
501
+ #else
502
+ vModelMatrixInverse = inverse(modelMatrix);
503
+ #endif
504
+
505
+ #ifdef USE_INSTANCING_COLOR
506
+ vInstanceColor = instanceColor.rgb;
507
+ #endif
508
+
509
+ vWorldPosition = (modelMatrix * transformedPosition).xyz;
510
+ vNormal = normalize((viewMatrixInverse * vec4(normalMatrix * transformedNormal.xyz, 0.0)).xyz);
511
+ gl_Position = projectionMatrix * viewMatrix * modelMatrix * transformedPosition;
512
+ }`,
513
+ /*glsl*/ `
514
+ #define ENVMAP_TYPE_CUBE_UV
515
+ precision highp isampler2D;
516
+ precision highp usampler2D;
517
+ varying vec3 vWorldPosition;
518
+ varying vec3 vNormal;
519
+ varying mat4 vModelMatrixInverse;
520
+
521
+ #ifdef USE_INSTANCING_COLOR
522
+ varying vec3 vInstanceColor;
523
+ #endif
524
+
525
+ #ifdef ENVMAP_TYPE_CUBEM
526
+ uniform samplerCube envMap;
527
+ #else
528
+ uniform sampler2D envMap;
529
+ #endif
530
+
531
+ uniform float bounces;
532
+ ${shaderStructs}
533
+ ${shaderIntersectFunction}
534
+ uniform BVH bvh;
535
+ uniform float ior;
536
+ uniform bool correctMips;
537
+ uniform vec2 resolution;
538
+ uniform float fresnel;
539
+ uniform mat4 modelMatrix;
540
+ uniform mat4 projectionMatrixInverse;
541
+ uniform mat4 viewMatrixInverse;
542
+ uniform float aberrationStrength;
543
+ uniform vec3 color;
544
+
545
+ float fresnelFunc(vec3 viewDirection, vec3 worldNormal) {
546
+ return pow( 1.0 + dot( viewDirection, worldNormal), 10.0 );
547
+ }
548
+
549
+ vec3 totalInternalReflection(vec3 ro, vec3 rd, vec3 normal, float ior, mat4 modelMatrixInverse) {
550
+ vec3 rayOrigin = ro;
551
+ vec3 rayDirection = rd;
552
+ rayDirection = refract(rayDirection, normal, 1.0 / ior);
553
+ rayOrigin = vWorldPosition + rayDirection * 0.001;
554
+ rayOrigin = (modelMatrixInverse * vec4(rayOrigin, 1.0)).xyz;
555
+ rayDirection = normalize((modelMatrixInverse * vec4(rayDirection, 0.0)).xyz);
556
+ for(float i = 0.0; i < bounces; i++) {
557
+ uvec4 faceIndices = uvec4( 0u );
558
+ vec3 faceNormal = vec3( 0.0, 0.0, 1.0 );
559
+ vec3 barycoord = vec3( 0.0 );
560
+ float side = 1.0;
561
+ float dist = 0.0;
562
+ bvhIntersectFirstHit( bvh, rayOrigin, rayDirection, faceIndices, faceNormal, barycoord, side, dist );
563
+ vec3 hitPos = rayOrigin + rayDirection * max(dist - 0.001, 0.0);
564
+ vec3 tempDir = refract(rayDirection, faceNormal, ior);
565
+ if (length(tempDir) != 0.0) {
566
+ rayDirection = tempDir;
567
+ break;
568
+ }
569
+ rayDirection = reflect(rayDirection, faceNormal);
570
+ rayOrigin = hitPos + rayDirection * 0.01;
571
+ }
572
+ rayDirection = normalize((modelMatrix * vec4(rayDirection, 0.0)).xyz);
573
+ return rayDirection;
574
+ }
575
+
576
+ #include <common>
577
+ #include <cube_uv_reflection_fragment>
578
+
579
+ #ifdef ENVMAP_TYPE_CUBEM
580
+ vec4 textureGradient(samplerCube envMap, vec3 rayDirection, vec3 directionCamPerfect) {
581
+ return textureGrad(envMap, rayDirection, dFdx(correctMips ? directionCamPerfect: rayDirection), dFdy(correctMips ? directionCamPerfect: rayDirection));
582
+ }
583
+ #else
584
+ vec4 textureGradient(sampler2D envMap, vec3 rayDirection, vec3 directionCamPerfect) {
585
+ vec2 uvv = equirectUv( rayDirection );
586
+ vec2 smoothUv = equirectUv( directionCamPerfect );
587
+ return textureGrad(envMap, uvv, dFdx(correctMips ? smoothUv : uvv), dFdy(correctMips ? smoothUv : uvv));
588
+ }
589
+ #endif
590
+
591
+ void main() {
592
+ vec2 uv = gl_FragCoord.xy / resolution;
593
+ vec3 directionCamPerfect = (projectionMatrixInverse * vec4(uv * 2.0 - 1.0, 0.0, 1.0)).xyz;
594
+ directionCamPerfect = (viewMatrixInverse * vec4(directionCamPerfect, 0.0)).xyz;
595
+ directionCamPerfect = normalize(directionCamPerfect);
596
+ vec3 normal = vNormal;
597
+ vec3 rayOrigin = cameraPosition;
598
+ vec3 rayDirection = normalize(vWorldPosition - cameraPosition);
599
+ vec3 finalColor;
600
+ #ifdef CHROMATIC_ABERRATIONS
601
+ vec3 rayDirectionG = totalInternalReflection(rayOrigin, rayDirection, normal, max(ior, 1.0), vModelMatrixInverse);
602
+ #ifdef FAST_CHROMA
603
+ vec3 rayDirectionR = normalize(rayDirectionG + 1.0 * vec3(aberrationStrength / 2.0));
604
+ vec3 rayDirectionB = normalize(rayDirectionG - 1.0 * vec3(aberrationStrength / 2.0));
605
+ #else
606
+ vec3 rayDirectionR = totalInternalReflection(rayOrigin, rayDirection, normal, max(ior * (1.0 - aberrationStrength), 1.0), vModelMatrixInverse);
607
+ vec3 rayDirectionB = totalInternalReflection(rayOrigin, rayDirection, normal, max(ior * (1.0 + aberrationStrength), 1.0), vModelMatrixInverse);
608
+ #endif
609
+ float finalColorR = textureGradient(envMap, rayDirectionR, directionCamPerfect).r;
610
+ float finalColorG = textureGradient(envMap, rayDirectionG, directionCamPerfect).g;
611
+ float finalColorB = textureGradient(envMap, rayDirectionB, directionCamPerfect).b;
612
+ finalColor = vec3(finalColorR, finalColorG, finalColorB);
613
+ #else
614
+ rayDirection = totalInternalReflection(rayOrigin, rayDirection, normal, max(ior, 1.0), vModelMatrixInverse);
615
+ finalColor = textureGradient(envMap, rayDirection, directionCamPerfect).rgb;
616
+ #endif
617
+
618
+ finalColor *= color;
619
+ #ifdef USE_INSTANCING_COLOR
620
+ finalColor *= vInstanceColor;
621
+ #endif
622
+
623
+ vec3 viewDirection = normalize(vWorldPosition - cameraPosition);
624
+ float nFresnel = fresnelFunc(viewDirection, normal) * fresnel;
625
+ gl_FragColor = vec4(mix(finalColor, vec3(1.0), nFresnel), 1.0);
626
+ #include <tonemapping_fragment>
627
+ #include <encodings_fragment>
628
+ }`);
629
+
432
630
  class MeshWobbleMaterial extends THREE.MeshStandardMaterial {
433
631
  constructor(parameters = {}) {
434
632
  super(parameters);
@@ -465,39 +663,6 @@ class MeshWobbleMaterial extends THREE.MeshStandardMaterial {
465
663
  }
466
664
  }
467
665
 
468
- function shaderMaterial(uniforms, vertexShader, fragmentShader, onInit) {
469
- const material = class extends THREE.ShaderMaterial {
470
- constructor(parameters = {}) {
471
- const entries = Object.entries(uniforms);
472
- // Create unforms and shaders
473
- super({
474
- uniforms: entries.reduce((acc, [name, value]) => {
475
- const uniform = THREE.UniformsUtils.clone({ [name]: { value } });
476
- return {
477
- ...acc,
478
- ...uniform,
479
- };
480
- }, {}),
481
- vertexShader,
482
- fragmentShader,
483
- });
484
- this.key = '';
485
- // Create getter/setters
486
- entries.forEach(([name]) => Object.defineProperty(this, name, {
487
- get: () => this.uniforms[name].value,
488
- set: (v) => (this.uniforms[name].value = v),
489
- }));
490
- // Assign parameters, this might include uniforms
491
- Object.assign(this, parameters);
492
- // Call onInit
493
- if (onInit)
494
- onInit(this);
495
- }
496
- };
497
- material.key = THREE.MathUtils.generateUUID();
498
- return material;
499
- }
500
-
501
666
  class SpotLightMaterial extends ShaderMaterial {
502
667
  constructor() {
503
668
  super({
@@ -587,5 +752,5 @@ class SpotLightMaterial extends ShaderMaterial {
587
752
  * Generated bundle index. Do not edit.
588
753
  */
589
754
 
590
- export { BlurPass, ConvolutionMaterial, MeshReflectorMaterial, MeshWobbleMaterial, NGTS_DISTORT_MATERIAL_SHADER, SpotLightMaterial, provideNgtsMeshDistortMaterialShader, shaderMaterial };
755
+ export { BlurPass, ConvolutionMaterial, MeshReflectorMaterial, MeshRefractionMaterial, MeshWobbleMaterial, NGTS_DISTORT_MATERIAL_SHADER, SpotLightMaterial, provideNgtsMeshDistortMaterialShader, shaderMaterial };
591
756
  //# sourceMappingURL=angular-three-soba-shaders.mjs.map