angular-three-soba 2.0.0-beta.3 → 2.0.0-beta.5

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 (98) hide show
  1. package/abstractions/edges/edges.d.ts +1 -1
  2. package/abstractions/grid/grid.d.ts +59 -0
  3. package/abstractions/index.d.ts +1 -0
  4. package/abstractions/text/text.d.ts +0 -1
  5. package/abstractions/text-3d/text-3d.d.ts +1 -1
  6. package/esm2022/abstractions/billboard/billboard.mjs +3 -3
  7. package/esm2022/abstractions/catmull-rom-line/catmull-rom-line.mjs +3 -3
  8. package/esm2022/abstractions/cubic-bezier-line/cubic-bezier-line.mjs +3 -3
  9. package/esm2022/abstractions/edges/edges.mjs +3 -3
  10. package/esm2022/abstractions/gizmo-helper/gizmo-helper.mjs +8 -8
  11. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +3 -3
  12. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +6 -6
  13. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.mjs +3 -3
  14. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube.mjs +3 -3
  15. package/esm2022/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +6 -6
  16. package/esm2022/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport.mjs +3 -3
  17. package/esm2022/abstractions/grid/grid.mjs +150 -0
  18. package/esm2022/abstractions/index.mjs +2 -1
  19. package/esm2022/abstractions/line/line-input.mjs +3 -3
  20. package/esm2022/abstractions/line/line.mjs +3 -3
  21. package/esm2022/abstractions/quadratic-bezier-line/quadratic-bezier-line.mjs +3 -3
  22. package/esm2022/abstractions/text/text.mjs +5 -7
  23. package/esm2022/abstractions/text-3d/text-3d.mjs +3 -3
  24. package/esm2022/cameras/camera/camera-content.mjs +3 -3
  25. package/esm2022/cameras/camera/camera.mjs +3 -3
  26. package/esm2022/cameras/cube-camera/cube-camera.mjs +3 -3
  27. package/esm2022/cameras/orthographic-camera/orthographic-camera.mjs +3 -3
  28. package/esm2022/cameras/perspective-camera/perspective-camera.mjs +3 -3
  29. package/esm2022/controls/orbit-controls/orbit-controls.mjs +3 -3
  30. package/esm2022/loaders/loader/loader.mjs +3 -3
  31. package/esm2022/materials/mesh-distort-material/mesh-distort-material.mjs +3 -3
  32. package/esm2022/materials/mesh-reflector-material/mesh-reflector-material.mjs +3 -3
  33. package/esm2022/materials/mesh-refraction-material/mesh-refraction-material.mjs +7 -6
  34. package/esm2022/materials/mesh-transmission-material/mesh-transmission-material.mjs +3 -3
  35. package/esm2022/materials/mesh-wobble-material/mesh-wobble-material.mjs +3 -3
  36. package/esm2022/misc/animations/animations.mjs +20 -20
  37. package/esm2022/misc/bake-shadows/bake-shadows.mjs +3 -3
  38. package/esm2022/performance/adaptive/adaptive-dpr.mjs +3 -3
  39. package/esm2022/performance/adaptive/adaptive-events.mjs +3 -3
  40. package/esm2022/performance/detailed/detailed.mjs +3 -3
  41. package/esm2022/performance/instances/instance.mjs +3 -3
  42. package/esm2022/performance/instances/instances.mjs +3 -3
  43. package/esm2022/performance/stats/stats.mjs +3 -3
  44. package/esm2022/shaders/grid-material/grid-material.mjs +62 -0
  45. package/esm2022/shaders/index.mjs +2 -1
  46. package/esm2022/staging/accumulative-shadows/accumulative-shadows.mjs +5 -5
  47. package/esm2022/staging/accumulative-shadows/randomized-lights.mjs +3 -3
  48. package/esm2022/staging/bounds/bounds.mjs +3 -3
  49. package/esm2022/staging/camera-shake/camera-shake.mjs +3 -3
  50. package/esm2022/staging/caustics/caustisc.mjs +5 -5
  51. package/esm2022/staging/center/center.mjs +3 -3
  52. package/esm2022/staging/cloud/cloud.mjs +3 -3
  53. package/esm2022/staging/contact-shadows/contact-shadows.mjs +3 -3
  54. package/esm2022/staging/environment/environment-cube.mjs +3 -3
  55. package/esm2022/staging/environment/environment-ground.mjs +3 -3
  56. package/esm2022/staging/environment/environment-input.mjs +3 -3
  57. package/esm2022/staging/environment/environment-map.mjs +3 -3
  58. package/esm2022/staging/environment/environment-portal.mjs +5 -5
  59. package/esm2022/staging/environment/environment.mjs +6 -6
  60. package/esm2022/staging/float/float.mjs +3 -3
  61. package/esm2022/staging/sky/sky.mjs +3 -3
  62. package/esm2022/staging/sparkles/sparkles.mjs +3 -3
  63. package/esm2022/staging/spot-light/spot-light-input.mjs +3 -3
  64. package/esm2022/staging/spot-light/spot-light-shadow-mesh-input.mjs +3 -3
  65. package/esm2022/staging/spot-light/spot-light-shadow-mesh.mjs +13 -11
  66. package/esm2022/staging/spot-light/spot-light.mjs +3 -3
  67. package/esm2022/staging/spot-light/volumetric-mesh.mjs +3 -3
  68. package/esm2022/staging/stage/stage.mjs +6 -6
  69. package/esm2022/staging/stars/stars.mjs +3 -3
  70. package/fesm2022/angular-three-soba-abstractions.mjs +205 -63
  71. package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
  72. package/fesm2022/angular-three-soba-cameras.mjs +15 -15
  73. package/fesm2022/angular-three-soba-controls.mjs +3 -3
  74. package/fesm2022/angular-three-soba-loaders.mjs +3 -3
  75. package/fesm2022/angular-three-soba-materials.mjs +18 -17
  76. package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
  77. package/fesm2022/angular-three-soba-misc.mjs +22 -22
  78. package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
  79. package/fesm2022/angular-three-soba-performance.mjs +18 -18
  80. package/fesm2022/angular-three-soba-shaders.mjs +61 -1
  81. package/fesm2022/angular-three-soba-shaders.mjs.map +1 -1
  82. package/fesm2022/angular-three-soba-staging.mjs +90 -88
  83. package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
  84. package/misc/animations/animations.d.ts +1 -1
  85. package/package.json +16 -16
  86. package/performance/instances/instances.d.ts +2 -2
  87. package/performance/instances/position-mesh.d.ts +1 -1
  88. package/plugin/package.json +2 -2
  89. package/plugin/src/generators/init/init.d.ts +3 -0
  90. package/plugin/src/generators/init/init.js +7 -1
  91. package/plugin/src/generators/init/init.js.map +1 -1
  92. package/shaders/grid-material/grid-material.d.ts +4 -0
  93. package/shaders/index.d.ts +1 -0
  94. package/staging/caustics/caustisc.d.ts +1 -1
  95. package/staging/sparkles/sparkles.d.ts +1 -1
  96. package/staging/spot-light/spot-light-shadow-mesh.d.ts +2 -2
  97. package/staging/spot-light/volumetric-mesh.d.ts +1 -1
  98. package/staging/stars/stars.d.ts +1 -1
@@ -53,10 +53,10 @@ class NgtsCamera extends NgtSignalStore {
53
53
  camera.updateProjectionMatrix();
54
54
  });
55
55
  }
56
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsCamera, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
57
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0", type: NgtsCamera, inputs: { makeDefault: "makeDefault", manual: "manual", frames: "frames", resolution: "resolution", envMap: "envMap", cameraRef: "cameraRef" }, usesInheritance: true, ngImport: i0 }); }
56
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgtsCamera, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
57
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.2", type: NgtsCamera, inputs: { makeDefault: "makeDefault", manual: "manual", frames: "frames", resolution: "resolution", envMap: "envMap", cameraRef: "cameraRef" }, usesInheritance: true, ngImport: i0 }); }
58
58
  }
59
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsCamera, decorators: [{
59
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgtsCamera, decorators: [{
60
60
  type: Directive
61
61
  }], ctorParameters: function () { return []; }, propDecorators: { makeDefault: [{
62
62
  type: Input
@@ -80,10 +80,10 @@ class NgtsCameraContent {
80
80
  static ngTemplateContextGuard(_, ctx) {
81
81
  return true;
82
82
  }
83
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsCameraContent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
84
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0", type: NgtsCameraContent, isStandalone: true, selector: "ng-template[ngtsCameraContent]", inputs: { ngtsCameraContent: "ngtsCameraContent" }, ngImport: i0 }); }
83
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgtsCameraContent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
84
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.2", type: NgtsCameraContent, isStandalone: true, selector: "ng-template[ngtsCameraContent]", inputs: { ngtsCameraContent: "ngtsCameraContent" }, ngImport: i0 }); }
85
85
  }
86
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsCameraContent, decorators: [{
86
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgtsCameraContent, decorators: [{
87
87
  type: Directive,
88
88
  args: [{ selector: 'ng-template[ngtsCameraContent]', standalone: true }]
89
89
  }], propDecorators: { ngtsCameraContent: [{
@@ -157,8 +157,8 @@ class NgtsCubeCamera extends NgtSignalStore {
157
157
  }
158
158
  });
159
159
  }
160
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsCubeCamera, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
161
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: NgtsCubeCamera, isStandalone: true, selector: "ngts-cube-camera", inputs: { cameraRef: "cameraRef", frames: "frames", resolution: "resolution", near: "near", far: "far", envMap: "envMap", fog: "fog" }, queries: [{ propertyName: "cameraContent", first: true, predicate: NgtsCameraContent, descendants: true }], viewQueries: [{ propertyName: "groupRef", first: true, predicate: ["group"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
160
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgtsCubeCamera, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
161
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.2", type: NgtsCubeCamera, isStandalone: true, selector: "ngts-cube-camera", inputs: { cameraRef: "cameraRef", frames: "frames", resolution: "resolution", near: "near", far: "far", envMap: "envMap", fog: "fog" }, queries: [{ propertyName: "cameraContent", first: true, predicate: NgtsCameraContent, descendants: true }], viewQueries: [{ propertyName: "groupRef", first: true, predicate: ["group"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
162
162
  <ngt-group ngtCompound>
163
163
  <ngt-cube-camera [ref]="cameraRef" *args="cameraArgs()" />
164
164
  <ngt-group #group>
@@ -171,7 +171,7 @@ class NgtsCubeCamera extends NgtSignalStore {
171
171
  </ngt-group>
172
172
  `, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }] }); }
173
173
  }
174
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsCubeCamera, decorators: [{
174
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgtsCubeCamera, decorators: [{
175
175
  type: Component,
176
176
  args: [{
177
177
  selector: 'ngts-cube-camera',
@@ -245,8 +245,8 @@ class NgtsOrthographicCamera extends NgtsCamera {
245
245
  this.cameraBottom = computed(() => this.#bottom() || this.#size().height / -2);
246
246
  this.set({ left: 0, right: 0, top: 0, bottom: 0 });
247
247
  }
248
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsOrthographicCamera, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
249
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: NgtsOrthographicCamera, isStandalone: true, selector: "ngts-orthographic-camera", inputs: { left: "left", right: "right", top: "top", bottom: "bottom" }, queries: [{ propertyName: "cameraContent", first: true, predicate: NgtsCameraContent, descendants: true }], usesInheritance: true, ngImport: i0, template: `
248
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgtsOrthographicCamera, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
249
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.2", type: NgtsOrthographicCamera, isStandalone: true, selector: "ngts-orthographic-camera", inputs: { left: "left", right: "right", top: "top", bottom: "bottom" }, queries: [{ propertyName: "cameraContent", first: true, predicate: NgtsCameraContent, descendants: true }], usesInheritance: true, ngImport: i0, template: `
250
250
  <ngt-orthographic-camera
251
251
  ngtCompound
252
252
  [ref]="cameraRef"
@@ -265,7 +265,7 @@ class NgtsOrthographicCamera extends NgtsCamera {
265
265
  </ngt-group>
266
266
  `, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
267
267
  }
268
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsOrthographicCamera, decorators: [{
268
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgtsOrthographicCamera, decorators: [{
269
269
  type: Component,
270
270
  args: [{
271
271
  selector: 'ngts-orthographic-camera',
@@ -306,8 +306,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImpor
306
306
 
307
307
  extend({ PerspectiveCamera, Group });
308
308
  class NgtsPerspectiveCamera extends NgtsCamera {
309
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsPerspectiveCamera, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
310
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: NgtsPerspectiveCamera, isStandalone: true, selector: "ngts-perspective-camera", queries: [{ propertyName: "cameraContent", first: true, predicate: NgtsCameraContent, descendants: true }], usesInheritance: true, ngImport: i0, template: `
309
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgtsPerspectiveCamera, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
310
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.2", type: NgtsPerspectiveCamera, isStandalone: true, selector: "ngts-perspective-camera", queries: [{ propertyName: "cameraContent", first: true, predicate: NgtsCameraContent, descendants: true }], usesInheritance: true, ngImport: i0, template: `
311
311
  <ngt-perspective-camera [ref]="cameraRef" ngtCompound>
312
312
  <ng-container
313
313
  *ngIf="cameraContent && !cameraContent.ngtsCameraContent"
@@ -319,7 +319,7 @@ class NgtsPerspectiveCamera extends NgtsCamera {
319
319
  </ngt-group>
320
320
  `, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
321
321
  }
322
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsPerspectiveCamera, decorators: [{
322
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgtsPerspectiveCamera, decorators: [{
323
323
  type: Component,
324
324
  args: [{
325
325
  selector: 'ngts-perspective-camera',
@@ -129,10 +129,10 @@ class NgtsOrbitControls extends NgtSignalStore {
129
129
  });
130
130
  });
131
131
  }
132
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsOrbitControls, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
133
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: NgtsOrbitControls, isStandalone: true, selector: "ngts-orbit-controls", inputs: { controlsRef: "controlsRef", camera: "camera", domElement: "domElement", makeDefault: "makeDefault", regress: "regress", target: "target", enableDamping: "enableDamping" }, outputs: { change: "change", start: "start", end: "end" }, usesInheritance: true, ngImport: i0, template: ` <ngt-primitive *args="args()" ngtCompound [enableDamping]="damping()" /> `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }] }); }
132
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgtsOrbitControls, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
133
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.2", type: NgtsOrbitControls, isStandalone: true, selector: "ngts-orbit-controls", inputs: { controlsRef: "controlsRef", camera: "camera", domElement: "domElement", makeDefault: "makeDefault", regress: "regress", target: "target", enableDamping: "enableDamping" }, outputs: { change: "change", start: "start", end: "end" }, usesInheritance: true, ngImport: i0, template: ` <ngt-primitive *args="args()" ngtCompound [enableDamping]="damping()" /> `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }] }); }
134
134
  }
135
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsOrbitControls, decorators: [{
135
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgtsOrbitControls, decorators: [{
136
136
  type: Component,
137
137
  args: [{
138
138
  selector: 'ngts-orbit-controls',
@@ -152,8 +152,8 @@ class NgtsLoader extends NgtSignalStore {
152
152
  onCleanup(() => cancelAnimationFrame(rafId));
153
153
  });
154
154
  }
155
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsLoader, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
156
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: NgtsLoader, isStandalone: true, selector: "ngts-loader", inputs: { containerClass: "containerClass", innerClass: "innerClass", barClass: "barClass", dataClass: "dataClass", dataInterpolation: "dataInterpolation", initialState: "initialState" }, viewQueries: [{ propertyName: "progressSpanRef", first: true, predicate: ["progressSpanRef"], descendants: true }], usesInheritance: true, ngImport: i0, template: `
155
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgtsLoader, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
156
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.2", type: NgtsLoader, isStandalone: true, selector: "ngts-loader", inputs: { containerClass: "containerClass", innerClass: "innerClass", barClass: "barClass", dataClass: "dataClass", dataInterpolation: "dataInterpolation", initialState: "initialState" }, viewQueries: [{ propertyName: "progressSpanRef", first: true, predicate: ["progressSpanRef"], descendants: true }], usesInheritance: true, ngImport: i0, template: `
157
157
  <div
158
158
  *ngIf="shown()"
159
159
  class="ngts-loader-container"
@@ -173,7 +173,7 @@ class NgtsLoader extends NgtSignalStore {
173
173
  </div>
174
174
  `, isInline: true, styles: [".ngts-loader-container{--ngts-loader-container-opacity: 0;position:absolute;top:0;left:0;width:100%;height:100%;background:#171717;display:flex;align-items:center;justify-content:center;transition:opacity .3s ease;z-index:1000;opacity:var(--ngts-loader-container-opacity)}.ngts-loader-inner{width:100px;height:3px;background:#272727;text-align:center}.ngts-loader-bar{--ngts-loader-bar-scale: 0;height:3px;width:100px;background:white;transition:transform .2s;transform-origin:left center;transform:scaleX(var(--ngts-loader-bar-scale))}.ngts-loader-data{display:inline-block;position:relative;font-feature-settings:\"tnum\";font-variant-numeric:tabular-nums;margin-top:.8em;color:#f0f0f0;font-size:.6em;font-family:-apple-system,BlinkMacSystemFont,Inter,Segoe UI,Helvetica Neue,Helvetica,Arial,Roboto,Ubuntu,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol;white-space:nowrap}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
175
175
  }
176
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsLoader, decorators: [{
176
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgtsLoader, decorators: [{
177
177
  type: Component,
178
178
  args: [{ selector: 'ngts-loader', standalone: true, template: `
179
179
  <div
@@ -4,7 +4,7 @@ import { NgtSignalStore, injectNgtRef, injectBeforeRender, NgtArgs, extend, NgtS
4
4
  import { NGTS_DISTORT_MATERIAL_SHADER, MeshReflectorMaterial, BlurPass, MeshRefractionMaterial, MeshTransmissionMaterial, DiscardMaterial, MeshWobbleMaterial } from 'angular-three-soba/shaders';
5
5
  import { NgIf } from '@angular/common';
6
6
  import * as THREE from 'three';
7
- import { MeshBVH, SAH } from 'three-mesh-bvh';
7
+ import { MeshBVHUniformStruct, MeshBVH, SAH } from 'three-mesh-bvh';
8
8
  import { injectNgtsFBO } from 'angular-three-soba/misc';
9
9
 
10
10
  class NgtsMeshDistortMaterial extends NgtSignalStore {
@@ -31,8 +31,8 @@ class NgtsMeshDistortMaterial extends NgtSignalStore {
31
31
  this.material.time = clock.getElapsedTime() * this.get('speed');
32
32
  });
33
33
  }
34
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsMeshDistortMaterial, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
35
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: NgtsMeshDistortMaterial, isStandalone: true, selector: "ngts-mesh-distort-material", inputs: { materialRef: "materialRef", time: "time", distort: "distort", radius: "radius", speed: "speed" }, usesInheritance: true, ngImport: i0, template: `
34
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgtsMeshDistortMaterial, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
35
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.2", type: NgtsMeshDistortMaterial, isStandalone: true, selector: "ngts-mesh-distort-material", inputs: { materialRef: "materialRef", time: "time", distort: "distort", radius: "radius", speed: "speed" }, usesInheritance: true, ngImport: i0, template: `
36
36
  <ngt-primitive
37
37
  *args="[material]"
38
38
  [ref]="materialRef"
@@ -44,7 +44,7 @@ class NgtsMeshDistortMaterial extends NgtSignalStore {
44
44
  />
45
45
  `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }] }); }
46
46
  }
47
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsMeshDistortMaterial, decorators: [{
47
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgtsMeshDistortMaterial, decorators: [{
48
48
  type: Component,
49
49
  args: [{
50
50
  selector: 'ngts-mesh-distort-material',
@@ -359,8 +359,8 @@ class NgtsMeshReflectorMaterial extends NgtSignalStore {
359
359
  projectionMatrix.elements[10] = this.#clipPlane.z + 1.0;
360
360
  projectionMatrix.elements[14] = this.#clipPlane.w;
361
361
  }
362
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsMeshReflectorMaterial, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
363
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: NgtsMeshReflectorMaterial, isStandalone: true, selector: "ngts-mesh-reflector-material", inputs: { materialRef: "materialRef", resolution: "resolution", mixBlur: "mixBlur", mixStrength: "mixStrength", blur: "blur", mirror: "mirror", minDepthThreshold: "minDepthThreshold", maxDepthThreshold: "maxDepthThreshold", depthScale: "depthScale", depthToBlurRatioBias: "depthToBlurRatioBias", distortionMap: "distortionMap", distortion: "distortion", mixContrast: "mixContrast", reflectorOffset: "reflectorOffset" }, usesInheritance: true, ngImport: i0, template: `
362
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgtsMeshReflectorMaterial, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
363
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.2", type: NgtsMeshReflectorMaterial, isStandalone: true, selector: "ngts-mesh-reflector-material", inputs: { materialRef: "materialRef", resolution: "resolution", mixBlur: "mixBlur", mixStrength: "mixStrength", blur: "blur", mirror: "mirror", minDepthThreshold: "minDepthThreshold", maxDepthThreshold: "maxDepthThreshold", depthScale: "depthScale", depthToBlurRatioBias: "depthToBlurRatioBias", distortionMap: "distortionMap", distortion: "distortion", mixContrast: "mixContrast", reflectorOffset: "reflectorOffset" }, usesInheritance: true, ngImport: i0, template: `
364
364
  <ngt-mesh-reflector-material
365
365
  ngtCompound
366
366
  attach="material"
@@ -387,7 +387,7 @@ class NgtsMeshReflectorMaterial extends NgtSignalStore {
387
387
  </ngt-mesh-reflector-material>
388
388
  `, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
389
389
  }
390
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsMeshReflectorMaterial, decorators: [{
390
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgtsMeshReflectorMaterial, decorators: [{
391
391
  type: Component,
392
392
  args: [{
393
393
  selector: 'ngts-mesh-reflector-material',
@@ -541,12 +541,13 @@ class NgtsMeshRefractionMaterial extends NgtSignalStore {
541
541
  return;
542
542
  const geometry = getLocalState(material).parent()?.geometry;
543
543
  if (geometry) {
544
- material.bvh.updateFrom(new MeshBVH(geometry.toNonIndexed(), { lazyGeneration: false, strategy: SAH }));
544
+ material.bvh = new MeshBVHUniformStruct();
545
+ material.bvh.updateFrom(new MeshBVH(geometry.clone().toNonIndexed(), { lazyGeneration: false, strategy: SAH }));
545
546
  }
546
547
  });
547
548
  }
548
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsMeshRefractionMaterial, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
549
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: NgtsMeshRefractionMaterial, isStandalone: true, selector: "ngts-mesh-refraction-material", inputs: { materialRef: "materialRef", envMap: "envMap", bounces: "bounces", ior: "ior", fresnel: "fresnel", aberrationStrength: "aberrationStrength", color: "color", fastChroma: "fastChroma" }, usesInheritance: true, ngImport: i0, template: `
549
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgtsMeshRefractionMaterial, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
550
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.2", type: NgtsMeshRefractionMaterial, isStandalone: true, selector: "ngts-mesh-refraction-material", inputs: { materialRef: "materialRef", envMap: "envMap", bounces: "bounces", ior: "ior", fresnel: "fresnel", aberrationStrength: "aberrationStrength", color: "color", fastChroma: "fastChroma" }, usesInheritance: true, ngImport: i0, template: `
550
551
  <ngt-mesh-refraction-material
551
552
  *ngIf="defines() as defines"
552
553
  [ref]="materialRef"
@@ -566,7 +567,7 @@ class NgtsMeshRefractionMaterial extends NgtSignalStore {
566
567
  </ngt-mesh-refraction-material>
567
568
  `, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
568
569
  }
569
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsMeshRefractionMaterial, decorators: [{
570
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgtsMeshRefractionMaterial, decorators: [{
570
571
  type: Component,
571
572
  args: [{
572
573
  selector: 'ngts-mesh-refraction-material',
@@ -776,8 +777,8 @@ class NgtsMeshTranmissionMaterial extends NgtSignalStore {
776
777
  }
777
778
  });
778
779
  }
779
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsMeshTranmissionMaterial, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
780
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: NgtsMeshTranmissionMaterial, isStandalone: true, selector: "ngts-mesh-transmission-material", inputs: { materialRef: "materialRef", transmissionSampler: "transmissionSampler", backside: "backside", backsideThickness: "backsideThickness", resolution: "resolution", backsideResolution: "backsideResolution", samples: "samples", background: "background", transmission: "transmission", thickness: "thickness", roughness: "roughness", chromaticAberration: "chromaticAberration", anisotropy: "anisotropy", distortion: "distortion", distortionScale: "distortionScale", temporalDistortion: "temporalDistortion", buffer: "buffer", time: "time" }, usesInheritance: true, ngImport: i0, template: `
780
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgtsMeshTranmissionMaterial, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
781
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.2", type: NgtsMeshTranmissionMaterial, isStandalone: true, selector: "ngts-mesh-transmission-material", inputs: { materialRef: "materialRef", transmissionSampler: "transmissionSampler", backside: "backside", backsideThickness: "backsideThickness", resolution: "resolution", backsideResolution: "backsideResolution", samples: "samples", background: "background", transmission: "transmission", thickness: "thickness", roughness: "roughness", chromaticAberration: "chromaticAberration", anisotropy: "anisotropy", distortion: "distortion", distortionScale: "distortionScale", temporalDistortion: "temporalDistortion", buffer: "buffer", time: "time" }, usesInheritance: true, ngImport: i0, template: `
781
782
  <ngt-mesh-transmission-material
782
783
  ngtCompound
783
784
  *args="[transmissionSamples(), transmissionTransmissionSampler()]"
@@ -797,7 +798,7 @@ class NgtsMeshTranmissionMaterial extends NgtSignalStore {
797
798
  />
798
799
  `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }] }); }
799
800
  }
800
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsMeshTranmissionMaterial, decorators: [{
801
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgtsMeshTranmissionMaterial, decorators: [{
801
802
  type: Component,
802
803
  args: [{
803
804
  selector: 'ngts-mesh-transmission-material',
@@ -883,8 +884,8 @@ class NgtsMeshWobbleMaterial extends NgtSignalStore {
883
884
  this.material.time = clock.getElapsedTime() * this.get('speed');
884
885
  });
885
886
  }
886
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsMeshWobbleMaterial, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
887
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: NgtsMeshWobbleMaterial, isStandalone: true, selector: "ngts-mesh-wobble-material", inputs: { materialRef: "materialRef", time: "time", factor: "factor", speed: "speed" }, usesInheritance: true, ngImport: i0, template: `
887
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgtsMeshWobbleMaterial, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
888
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.2", type: NgtsMeshWobbleMaterial, isStandalone: true, selector: "ngts-mesh-wobble-material", inputs: { materialRef: "materialRef", time: "time", factor: "factor", speed: "speed" }, usesInheritance: true, ngImport: i0, template: `
888
889
  <ngt-primitive
889
890
  *args="[material]"
890
891
  [ref]="materialRef"
@@ -895,7 +896,7 @@ class NgtsMeshWobbleMaterial extends NgtSignalStore {
895
896
  />
896
897
  `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }] }); }
897
898
  }
898
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtsMeshWobbleMaterial, decorators: [{
899
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgtsMeshWobbleMaterial, decorators: [{
899
900
  type: Component,
900
901
  args: [{
901
902
  selector: 'ngts-mesh-wobble-material',
@@ -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, 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.updateFrom(\n new MeshBVH(geometry.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();\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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"}