angular-three-soba 4.0.0-next.9 → 4.0.0-next.91

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 (51) hide show
  1. package/abstractions/README.md +1 -1
  2. package/abstractions/lib/catmull-rom-line.d.ts +16 -15
  3. package/abstractions/lib/edges.d.ts +17 -15
  4. package/abstractions/lib/text-3d.d.ts +1 -1
  5. package/abstractions/lib/text.d.ts +5 -1
  6. package/cameras/lib/camera-content.d.ts +1 -2
  7. package/cameras/lib/cube-camera.d.ts +2 -2
  8. package/cameras/lib/orthographic-camera.d.ts +6 -5
  9. package/cameras/lib/perspective-camera.d.ts +2 -5
  10. package/controls/README.md +28 -28
  11. package/controls/index.d.ts +1 -0
  12. package/controls/lib/camera-controls.d.ts +1 -1
  13. package/controls/lib/orbit-controls.d.ts +11 -6
  14. package/controls/lib/trackball-controls.d.ts +27 -0
  15. package/fesm2022/angular-three-soba-abstractions.mjs +87 -47
  16. package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
  17. package/fesm2022/angular-three-soba-cameras.mjs +61 -37
  18. package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
  19. package/fesm2022/angular-three-soba-controls.mjs +128 -36
  20. package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
  21. package/fesm2022/angular-three-soba-gizmos.mjs +124 -86
  22. package/fesm2022/angular-three-soba-gizmos.mjs.map +1 -1
  23. package/fesm2022/angular-three-soba-loaders.mjs +3 -3
  24. package/fesm2022/angular-three-soba-materials.mjs +82 -86
  25. package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
  26. package/fesm2022/angular-three-soba-misc.mjs +55 -48
  27. package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
  28. package/fesm2022/angular-three-soba-performances.mjs +152 -35
  29. package/fesm2022/angular-three-soba-performances.mjs.map +1 -1
  30. package/fesm2022/angular-three-soba-shaders.mjs.map +1 -1
  31. package/fesm2022/angular-three-soba-staging.mjs +183 -144
  32. package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
  33. package/fesm2022/angular-three-soba-stats.mjs +3 -3
  34. package/gizmos/lib/gizmo-helper/gizmo-helper.d.ts +4 -3
  35. package/loaders/README.md +39 -39
  36. package/materials/lib/mesh-transmission-material.d.ts +4 -4
  37. package/misc/README.md +16 -16
  38. package/misc/lib/deprecated.d.ts +0 -6
  39. package/misc/lib/depth-buffer.d.ts +1 -1
  40. package/misc/lib/fbo.d.ts +1 -3
  41. package/misc/lib/html/html-content.d.ts +2 -2
  42. package/misc/lib/html/html.d.ts +4 -4
  43. package/package.json +6 -6
  44. package/performances/index.d.ts +1 -0
  45. package/performances/lib/adaptive-dpr.d.ts +1 -1
  46. package/performances/lib/bvh.d.ts +49 -0
  47. package/shaders/lib/mesh-refraction-material.d.ts +2 -2
  48. package/staging/lib/caustics.d.ts +3 -3
  49. package/staging/lib/environment/inject-environment.d.ts +1 -2
  50. package/staging/lib/render-texture.d.ts +5 -4
  51. package/staging/lib/stage.d.ts +12 -11
@@ -204,8 +204,8 @@ class NgtsLoader {
204
204
  onCleanup(() => cancelAnimationFrame(rafId));
205
205
  });
206
206
  }
207
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsLoader, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
208
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.4", type: NgtsLoader, isStandalone: true, selector: "ngts-loader", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "progressSpanRef", first: true, predicate: ["progressSpanRef"], descendants: true, isSignal: true }], ngImport: i0, template: `
207
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsLoader, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
208
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.1", type: NgtsLoader, isStandalone: true, selector: "ngts-loader", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "progressSpanRef", first: true, predicate: ["progressSpanRef"], descendants: true, isSignal: true }], ngImport: i0, template: `
209
209
  @if (shown()) {
210
210
  <div
211
211
  class="ngts-loader-container"
@@ -226,7 +226,7 @@ class NgtsLoader {
226
226
  }
227
227
  `, 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:#fff;transition:transform .2s;transform-origin:left center;transform:scaleX(var(--ngts-loader-bar-scale))}.ngts-loader-data{display:inline-block;position:relative;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"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
228
228
  }
229
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsLoader, decorators: [{
229
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsLoader, decorators: [{
230
230
  type: Component,
231
231
  args: [{ selector: 'ngts-loader', template: `
232
232
  @if (shown()) {
@@ -1,12 +1,13 @@
1
1
  import * as i0 from '@angular/core';
2
- import { input, computed, effect, Component, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, inject, DestroyRef, Injector, Directive, viewChild, contentChild, TemplateRef, signal, untracked } from '@angular/core';
2
+ import { input, computed, effect, Component, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, inject, DestroyRef, Directive, viewChild, contentChild, TemplateRef, signal, untracked } from '@angular/core';
3
3
  import { omit, is, pick, NgtArgs, injectBeforeRender, injectStore, getInstanceState, extend, applyProps } from 'angular-three';
4
4
  import CustomShaderMaterial from 'three-custom-shader-material/vanilla';
5
5
  import { MeshDistortMaterial, MeshPortalMaterial, meshPortalMaterialApplySDF, BlurPass, MeshReflectorMaterial, MeshDiscardMaterial, MeshTransmissionMaterial, MeshWobbleMaterial } from 'angular-three-soba/vanilla-exports';
6
6
  import { mergeInputs } from 'ngxtension/inject-inputs';
7
7
  import { NgTemplateOutlet } from '@angular/common';
8
8
  import { injectFBO, getVersion, injectIntersect } from 'angular-three-soba/misc';
9
- import { NgtsRenderTexture, NgtsRenderTextureContent } from 'angular-three-soba/staging';
9
+ import * as i1 from 'angular-three-soba/staging';
10
+ import { NgtsRenderTexture } from 'angular-three-soba/staging';
10
11
  import * as THREE from 'three';
11
12
  import { FullScreenQuad } from 'three-stdlib';
12
13
  import { MeshRefractionMaterial, PointMaterial } from 'angular-three-soba/shaders';
@@ -52,14 +53,14 @@ class NgtsCustomShaderMaterial {
52
53
  onCleanup(() => material.dispose());
53
54
  });
54
55
  }
55
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsCustomShaderMaterial, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
56
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.1.4", type: NgtsCustomShaderMaterial, isStandalone: true, selector: "ngts-custom-shader-material", inputs: { baseMaterial: { classPropertyName: "baseMaterial", publicName: "baseMaterial", isSignal: true, isRequired: true, transformFunction: null }, attach: { classPropertyName: "attach", publicName: "attach", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
56
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsCustomShaderMaterial, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
57
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.1", type: NgtsCustomShaderMaterial, isStandalone: true, selector: "ngts-custom-shader-material", inputs: { baseMaterial: { classPropertyName: "baseMaterial", publicName: "baseMaterial", isSignal: true, isRequired: true, transformFunction: null }, attach: { classPropertyName: "attach", publicName: "attach", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
57
58
  <ngt-primitive *args="[material()]" [attach]="attach()" [parameters]="parameters()">
58
59
  <ng-content />
59
60
  </ngt-primitive>
60
61
  `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
61
62
  }
62
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsCustomShaderMaterial, decorators: [{
63
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsCustomShaderMaterial, decorators: [{
63
64
  type: Component,
64
65
  args: [{
65
66
  selector: 'ngts-custom-shader-material',
@@ -86,17 +87,17 @@ class NgtsMeshDistortMaterial {
86
87
  this.speed = pick(this.options, 'speed');
87
88
  inject(DestroyRef).onDestroy(() => this.material.dispose());
88
89
  injectBeforeRender(({ clock }) => {
89
- this.material.time = clock.getElapsedTime() * this.speed();
90
+ this.material.time = clock.elapsedTime * this.speed();
90
91
  });
91
92
  }
92
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsMeshDistortMaterial, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
93
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.1.4", type: NgtsMeshDistortMaterial, isStandalone: true, selector: "ngts-mesh-distort-material", inputs: { attach: { classPropertyName: "attach", publicName: "attach", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
93
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsMeshDistortMaterial, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
94
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.1", type: NgtsMeshDistortMaterial, isStandalone: true, selector: "ngts-mesh-distort-material", inputs: { attach: { classPropertyName: "attach", publicName: "attach", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
94
95
  <ngt-primitive *args="[material]" [attach]="attach()" [parameters]="parameters()">
95
96
  <ng-content />
96
97
  </ngt-primitive>
97
98
  `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
98
99
  }
99
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsMeshDistortMaterial, decorators: [{
100
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsMeshDistortMaterial, decorators: [{
100
101
  type: Component,
101
102
  args: [{
102
103
  selector: 'ngts-mesh-distort-material',
@@ -121,7 +122,6 @@ class ManagePortalScene {
121
122
  this.material = input.required();
122
123
  this.priority = input.required();
123
124
  this.worldUnits = input.required();
124
- const injector = inject(Injector);
125
125
  const renderTextureStore = injectStore();
126
126
  const buffer1 = injectFBO();
127
127
  const buffer2 = injectFBO();
@@ -130,8 +130,8 @@ class ManagePortalScene {
130
130
  const blend = { value: 0 };
131
131
  const quad = new FullScreenQuad(new THREE.ShaderMaterial({
132
132
  uniforms: {
133
- a: { value: buffer1().texture },
134
- b: { value: buffer2().texture },
133
+ a: { value: buffer1.texture },
134
+ b: { value: buffer2.texture },
135
135
  blend,
136
136
  },
137
137
  vertexShader: /*glsl*/ `
@@ -165,61 +165,57 @@ class ManagePortalScene {
165
165
  return;
166
166
  setEvents({ enabled: events });
167
167
  });
168
- effect((onCleanup) => {
168
+ injectBeforeRender(({ gl, camera }) => {
169
+ const material = this.material();
170
+ const instanceState = getInstanceState(material);
171
+ if (!instanceState)
172
+ return;
173
+ const parent = instanceState.parent();
174
+ if (!parent)
175
+ return;
169
176
  const priority = this.priority();
170
- // we start the before render in effect because we need the priority input to be resolved
171
- const sub = injectBeforeRender(({ gl, camera }) => {
172
- const material = this.material();
173
- const instanceState = getInstanceState(material);
174
- if (!instanceState)
175
- return;
176
- const parent = instanceState.parent();
177
- if (!parent)
178
- return;
179
- const materialBlend = 'blend' in material && typeof material.blend === 'number' ? material.blend : 0;
180
- const [worldUnits, rootScene, scene, [quad, blend]] = [
181
- this.worldUnits(),
182
- this.rootScene(),
183
- renderTextureStore.snapshot.scene,
184
- fullScreenQuad(),
185
- ];
186
- // Move portal contents along with the parent if worldUnits is true
187
- if (!worldUnits) {
188
- // If the portal renders exclusively the original scene needs to be updated
189
- if (priority && materialBlend === 1)
190
- parent['updateWorldMatrix'](true, false);
191
- scene.matrixWorld.copy(parent['matrixWorld']);
192
- }
193
- else {
194
- scene.matrixWorld.identity();
177
+ const materialBlend = 'blend' in material && typeof material.blend === 'number' ? material.blend : 0;
178
+ const [worldUnits, rootScene, scene, [quad, blend]] = [
179
+ this.worldUnits(),
180
+ this.rootScene(),
181
+ renderTextureStore.snapshot.scene,
182
+ fullScreenQuad(),
183
+ ];
184
+ // Move portal contents along with the parent if worldUnits is true
185
+ if (!worldUnits) {
186
+ // If the portal renders exclusively the original scene needs to be updated
187
+ if (priority && materialBlend === 1)
188
+ parent['updateWorldMatrix'](true, false);
189
+ scene.matrixWorld.copy(parent['matrixWorld']);
190
+ }
191
+ else {
192
+ scene.matrixWorld.identity();
193
+ }
194
+ // This bit is only necessary if the portal is blended, now it has a render-priority
195
+ // and will take over the render loop
196
+ if (priority) {
197
+ if (materialBlend > 0 && materialBlend < 1) {
198
+ // If blend is ongoing (> 0 and < 1) then we need to render both the root scene
199
+ // and the portal scene, both will then be mixed in the quad from above
200
+ blend.value = materialBlend;
201
+ gl.setRenderTarget(buffer1);
202
+ gl.render(scene, camera);
203
+ gl.setRenderTarget(buffer2);
204
+ gl.render(rootScene, camera);
205
+ gl.setRenderTarget(null);
206
+ quad.render(gl);
195
207
  }
196
- // This bit is only necessary if the portal is blended, now it has a render-priority
197
- // and will take over the render loop
198
- if (priority) {
199
- if (materialBlend > 0 && materialBlend < 1) {
200
- // If blend is ongoing (> 0 and < 1) then we need to render both the root scene
201
- // and the portal scene, both will then be mixed in the quad from above
202
- blend.value = materialBlend;
203
- gl.setRenderTarget(buffer1());
204
- gl.render(scene, camera);
205
- gl.setRenderTarget(buffer2());
206
- gl.render(rootScene, camera);
207
- gl.setRenderTarget(null);
208
- quad.render(gl);
209
- }
210
- else if (materialBlend === 1) {
211
- // However if blend is 1 we only need to render the portal scene
212
- gl.render(scene, camera);
213
- }
208
+ else if (materialBlend === 1) {
209
+ // However if blend is 1 we only need to render the portal scene
210
+ gl.render(scene, camera);
214
211
  }
215
- }, { injector, priority });
216
- onCleanup(() => sub());
217
- });
212
+ }
213
+ }, { priority: this.priority });
218
214
  }
219
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: ManagePortalScene, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
220
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.1.4", type: ManagePortalScene, isStandalone: true, selector: "ngts-manage-portal-scene", inputs: { events: { classPropertyName: "events", publicName: "events", isSignal: true, isRequired: false, transformFunction: null }, rootScene: { classPropertyName: "rootScene", publicName: "rootScene", isSignal: true, isRequired: true, transformFunction: null }, material: { classPropertyName: "material", publicName: "material", isSignal: true, isRequired: true, transformFunction: null }, priority: { classPropertyName: "priority", publicName: "priority", isSignal: true, isRequired: true, transformFunction: null }, worldUnits: { classPropertyName: "worldUnits", publicName: "worldUnits", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 }); }
215
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: ManagePortalScene, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
216
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.1", type: ManagePortalScene, isStandalone: true, selector: "ngts-manage-portal-scene", inputs: { events: { classPropertyName: "events", publicName: "events", isSignal: true, isRequired: false, transformFunction: null }, rootScene: { classPropertyName: "rootScene", publicName: "rootScene", isSignal: true, isRequired: true, transformFunction: null }, material: { classPropertyName: "material", publicName: "material", isSignal: true, isRequired: true, transformFunction: null }, priority: { classPropertyName: "priority", publicName: "priority", isSignal: true, isRequired: true, transformFunction: null }, worldUnits: { classPropertyName: "worldUnits", publicName: "worldUnits", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 }); }
221
217
  }
222
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: ManagePortalScene, decorators: [{
218
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: ManagePortalScene, decorators: [{
223
219
  type: Directive,
224
220
  args: [{ selector: 'ngts-manage-portal-scene' }]
225
221
  }], ctorParameters: () => [] });
@@ -321,8 +317,8 @@ class NgtsMeshPortalMaterial {
321
317
  }
322
318
  });
323
319
  }
324
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsMeshPortalMaterial, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
325
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.1.4", type: NgtsMeshPortalMaterial, isStandalone: true, selector: "ngts-mesh-portal-material", inputs: { attach: { classPropertyName: "attach", publicName: "attach", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "content", first: true, predicate: TemplateRef, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "materialRef", first: true, predicate: ["material"], descendants: true, isSignal: true }], ngImport: i0, template: `
320
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsMeshPortalMaterial, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
321
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.2.1", type: NgtsMeshPortalMaterial, isStandalone: true, selector: "ngts-mesh-portal-material", inputs: { attach: { classPropertyName: "attach", publicName: "attach", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "content", first: true, predicate: TemplateRef, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "materialRef", first: true, predicate: ["material"], descendants: true, isSignal: true }], ngImport: i0, template: `
326
322
  <ngt-mesh-portal-material
327
323
  #material
328
324
  [attach]="attach()"
@@ -351,9 +347,9 @@ class NgtsMeshPortalMaterial {
351
347
  </ng-template>
352
348
  </ngts-render-texture>
353
349
  </ngt-mesh-portal-material>
354
- `, isInline: true, dependencies: [{ kind: "component", type: NgtsRenderTexture, selector: "ngts-render-texture", inputs: ["attach", "options"] }, { kind: "directive", type: NgtsRenderTextureContent, selector: "ng-template[renderTextureContent]" }, { kind: "directive", type: ManagePortalScene, selector: "ngts-manage-portal-scene", inputs: ["events", "rootScene", "material", "priority", "worldUnits"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
350
+ `, isInline: true, dependencies: [{ kind: "component", type: i1.NgtsRenderTextureImpl, selector: "ngts-render-texture", inputs: ["attach", "options"] }, { kind: "directive", type: i1.NgtsRenderTextureContent, selector: "ng-template[renderTextureContent]" }, { kind: "directive", type: ManagePortalScene, selector: "ngts-manage-portal-scene", inputs: ["events", "rootScene", "material", "priority", "worldUnits"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
355
351
  }
356
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsMeshPortalMaterial, decorators: [{
352
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsMeshPortalMaterial, decorators: [{
357
353
  type: Component,
358
354
  args: [{
359
355
  selector: 'ngts-mesh-portal-material',
@@ -389,7 +385,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImpor
389
385
  `,
390
386
  schemas: [CUSTOM_ELEMENTS_SCHEMA],
391
387
  changeDetection: ChangeDetectionStrategy.OnPush,
392
- imports: [NgtsRenderTexture, NgtsRenderTextureContent, ManagePortalScene, NgTemplateOutlet],
388
+ imports: [NgtsRenderTexture, ManagePortalScene, NgTemplateOutlet],
393
389
  }]
394
390
  }], ctorParameters: () => [] });
395
391
 
@@ -637,14 +633,14 @@ class NgtsMeshReflectorMaterial {
637
633
  projectionMatrix.elements[10] = this.clipPlane.z + 1.0;
638
634
  projectionMatrix.elements[14] = this.clipPlane.w;
639
635
  }
640
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsMeshReflectorMaterial, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
641
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.1.4", type: NgtsMeshReflectorMaterial, isStandalone: true, selector: "ngts-mesh-reflector-material", inputs: { attach: { classPropertyName: "attach", publicName: "attach", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "materialRef", first: true, predicate: ["material"], descendants: true, isSignal: true }], ngImport: i0, template: `
636
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsMeshReflectorMaterial, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
637
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.2.1", type: NgtsMeshReflectorMaterial, isStandalone: true, selector: "ngts-mesh-reflector-material", inputs: { attach: { classPropertyName: "attach", publicName: "attach", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "materialRef", first: true, predicate: ["material"], descendants: true, isSignal: true }], ngImport: i0, template: `
642
638
  <ngt-primitive #material *args="[material()]" [attach]="attach()">
643
639
  <ng-content />
644
640
  </ngt-primitive>
645
641
  `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
646
642
  }
647
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsMeshReflectorMaterial, decorators: [{
643
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsMeshReflectorMaterial, decorators: [{
648
644
  type: Component,
649
645
  args: [{
650
646
  selector: 'ngts-mesh-reflector-material',
@@ -751,8 +747,8 @@ class NgtsMeshRefractionMaterial {
751
747
  }
752
748
  });
753
749
  }
754
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsMeshRefractionMaterial, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
755
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.1.4", type: NgtsMeshRefractionMaterial, isStandalone: true, selector: "ngts-mesh-refraction-material", inputs: { envMap: { classPropertyName: "envMap", publicName: "envMap", isSignal: true, isRequired: true, transformFunction: null }, attach: { classPropertyName: "attach", publicName: "attach", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "materialRef", first: true, predicate: ["material"], descendants: true, isSignal: true }], ngImport: i0, template: `
750
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsMeshRefractionMaterial, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
751
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.2.1", type: NgtsMeshRefractionMaterial, isStandalone: true, selector: "ngts-mesh-refraction-material", inputs: { envMap: { classPropertyName: "envMap", publicName: "envMap", isSignal: true, isRequired: true, transformFunction: null }, attach: { classPropertyName: "attach", publicName: "attach", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "materialRef", first: true, predicate: ["material"], descendants: true, isSignal: true }], ngImport: i0, template: `
756
752
  <ngt-primitive
757
753
  *args="[material()]"
758
754
  #material
@@ -767,7 +763,7 @@ class NgtsMeshRefractionMaterial {
767
763
  </ngt-primitive>
768
764
  `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
769
765
  }
770
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsMeshRefractionMaterial, decorators: [{
766
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsMeshRefractionMaterial, decorators: [{
771
767
  type: Component,
772
768
  args: [{
773
769
  selector: 'ngts-mesh-refraction-material',
@@ -839,7 +835,7 @@ class NgtsMeshTransmissionMaterial {
839
835
  this.backResolution = computed(() => this.backsideResolution() || this.resolution());
840
836
  this.fboBack = injectFBO(() => ({ width: this.backResolution() }));
841
837
  this.fboMain = injectFBO(() => ({ width: this.resolution() }));
842
- this.bufferTexture = computed(() => this.buffer() || this.fboMain().texture);
838
+ this.bufferTexture = computed(() => this.buffer() || this.fboMain.texture);
843
839
  this.anisotropicBlurOption = computed(() => this.anisotropicBlur() || this.anisotropy());
844
840
  this.discardMaterial = new MeshDiscardMaterial();
845
841
  this.material = computed(() => {
@@ -869,8 +865,8 @@ class NgtsMeshTransmissionMaterial {
869
865
  if (!material)
870
866
  return;
871
867
  const [fboMain, fboBack, transmissionSampler, background, backside, backsideThickness, backsideEnvMapIntensity, thickness, side,] = [
872
- this.fboMain(),
873
- this.fboBack(),
868
+ this.fboMain,
869
+ this.fboBack,
874
870
  this.transmissionSampler(),
875
871
  this.background(),
876
872
  this.backside(),
@@ -879,7 +875,7 @@ class NgtsMeshTransmissionMaterial {
879
875
  this.thickness(),
880
876
  this.side(),
881
877
  ];
882
- material.time = clock.getElapsedTime();
878
+ material.time = clock.elapsedTime;
883
879
  // Render only if the buffer matches the built-in and no transmission sampler is set
884
880
  // @ts-expect-error - we know material.buffer is not just undefined | null
885
881
  if (material.buffer === fboMain.texture && !transmissionSampler) {
@@ -927,8 +923,8 @@ class NgtsMeshTransmissionMaterial {
927
923
  }
928
924
  });
929
925
  }
930
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsMeshTransmissionMaterial, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
931
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.1.4", type: NgtsMeshTransmissionMaterial, isStandalone: true, selector: "ngts-mesh-transmission-material", inputs: { attach: { classPropertyName: "attach", publicName: "attach", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "materialRef", first: true, predicate: ["material"], descendants: true, isSignal: true }], ngImport: i0, template: `
926
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsMeshTransmissionMaterial, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
927
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.2.1", type: NgtsMeshTransmissionMaterial, isStandalone: true, selector: "ngts-mesh-transmission-material", inputs: { attach: { classPropertyName: "attach", publicName: "attach", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "materialRef", first: true, predicate: ["material"], descendants: true, isSignal: true }], ngImport: i0, template: `
932
928
  <ngt-primitive
933
929
  *args="[material()]"
934
930
  #material
@@ -945,7 +941,7 @@ class NgtsMeshTransmissionMaterial {
945
941
  </ngt-primitive>
946
942
  `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
947
943
  }
948
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsMeshTransmissionMaterial, decorators: [{
944
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsMeshTransmissionMaterial, decorators: [{
949
945
  type: Component,
950
946
  args: [{
951
947
  selector: 'ngts-mesh-transmission-material',
@@ -986,14 +982,14 @@ class NgtsMeshWobbleMaterial {
986
982
  material.time = clock.elapsedTime * this.options().speed;
987
983
  });
988
984
  }
989
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsMeshWobbleMaterial, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
990
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.1.4", type: NgtsMeshWobbleMaterial, isStandalone: true, selector: "ngts-mesh-wobble-material", inputs: { attach: { classPropertyName: "attach", publicName: "attach", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
985
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsMeshWobbleMaterial, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
986
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.1", type: NgtsMeshWobbleMaterial, isStandalone: true, selector: "ngts-mesh-wobble-material", inputs: { attach: { classPropertyName: "attach", publicName: "attach", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
991
987
  <ngt-primitive *args="[material]" [parameters]="parameters()" [attach]="attach()">
992
988
  <ng-content />
993
989
  </ngt-primitive>
994
990
  `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
995
991
  }
996
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsMeshWobbleMaterial, decorators: [{
992
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsMeshWobbleMaterial, decorators: [{
997
993
  type: Component,
998
994
  args: [{
999
995
  selector: 'ngts-mesh-wobble-material',
@@ -1015,14 +1011,14 @@ class NgtsPointMaterial {
1015
1011
  this.material = new PointMaterial(this.options());
1016
1012
  inject(DestroyRef).onDestroy(() => this.material.dispose());
1017
1013
  }
1018
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsPointMaterial, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1019
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.1.4", type: NgtsPointMaterial, isStandalone: true, selector: "ngts-point-material", inputs: { attach: { classPropertyName: "attach", publicName: "attach", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
1014
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsPointMaterial, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1015
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.1", type: NgtsPointMaterial, isStandalone: true, selector: "ngts-point-material", inputs: { attach: { classPropertyName: "attach", publicName: "attach", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
1020
1016
  <ngt-primitive *args="[material]" [attach]="attach()" [parameters]="options()">
1021
1017
  <ng-content />
1022
1018
  </ngt-primitive>
1023
1019
  `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1024
1020
  }
1025
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtsPointMaterial, decorators: [{
1021
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.1", ngImport: i0, type: NgtsPointMaterial, decorators: [{
1026
1022
  type: Component,
1027
1023
  args: [{
1028
1024
  selector: 'ngts-point-material',