angular-three-soba 4.0.0-next.76 → 4.0.0-next.78
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cameras/lib/camera-content.d.ts +1 -2
- package/cameras/lib/cube-camera.d.ts +1 -1
- package/cameras/lib/orthographic-camera.d.ts +2 -3
- package/cameras/lib/perspective-camera.d.ts +2 -3
- package/fesm2022/angular-three-soba-cameras.mjs +8 -22
- package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
- package/fesm2022/angular-three-soba-materials.mjs +7 -7
- package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
- package/fesm2022/angular-three-soba-misc.mjs +8 -11
- package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
- package/fesm2022/angular-three-soba-staging.mjs +13 -18
- package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
- package/materials/lib/custom-shader-material.d.ts +2 -2
- package/materials/lib/mesh-portal-material.d.ts +1 -1
- package/materials/lib/mesh-refraction-material.d.ts +2 -2
- package/materials/lib/mesh-transmission-material.d.ts +1 -1
- package/misc/README.md +1 -1
- package/misc/lib/depth-buffer.d.ts +1 -1
- package/misc/lib/fbo.d.ts +1 -1
- package/misc/lib/html/html.d.ts +1 -1
- package/package.json +13 -13
- package/staging/lib/accumulative-shadows.d.ts +1 -1
- package/staging/lib/caustics.d.ts +3 -3
- package/staging/lib/center.d.ts +2 -2
- package/staging/lib/contact-shadows.d.ts +1 -1
- package/staging/lib/lightformer.d.ts +1 -1
- package/staging/lib/render-texture.d.ts +2 -2
- package/staging/lib/spot-light.d.ts +2 -2
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import { Signal } from '@angular/core';
|
|
2
1
|
import * as THREE from 'three';
|
|
3
2
|
import * as i0 from "@angular/core";
|
|
4
3
|
export declare class NgtsCameraContent {
|
|
5
4
|
static ngTemplateContextGuard(_: NgtsCameraContent, ctx: unknown): ctx is {
|
|
6
|
-
$implicit:
|
|
5
|
+
$implicit: THREE.Texture;
|
|
7
6
|
};
|
|
8
7
|
static ɵfac: i0.ɵɵFactoryDeclaration<NgtsCameraContent, never>;
|
|
9
8
|
static ɵdir: i0.ɵɵDirectiveDeclaration<NgtsCameraContent, "ng-template[cameraContent]", never, {}, {}, never, never, true, never>;
|
|
@@ -26,7 +26,7 @@ export type NgtsCubeCameraOptions = Partial<NgtThreeElements['ngt-group']> & Cub
|
|
|
26
26
|
};
|
|
27
27
|
export declare class NgtsCubeCamera {
|
|
28
28
|
options: import("@angular/core").InputSignalWithTransform<NgtsCubeCameraOptions, "" | Partial<NgtsCubeCameraOptions>>;
|
|
29
|
-
protected parameters: import("@angular/core").Signal<Omit<NgtsCubeCameraOptions, "
|
|
29
|
+
protected parameters: import("@angular/core").Signal<Omit<NgtsCubeCameraOptions, "near" | "far" | "envMap" | "frames" | "resolution" | "fog">>;
|
|
30
30
|
private cubeCamera;
|
|
31
31
|
protected camera: import("@angular/core").Signal<THREE.CubeCamera>;
|
|
32
32
|
protected texture: import("@angular/core").Signal<THREE.CubeTexture>;
|
|
@@ -16,7 +16,7 @@ export interface NgtsOrthographicCameraOptions extends Partial<NgtThreeElements[
|
|
|
16
16
|
}
|
|
17
17
|
export declare class NgtsOrthographicCamera {
|
|
18
18
|
options: import("@angular/core").InputSignalWithTransform<NgtsOrthographicCameraOptions, "" | Partial<NgtsOrthographicCameraOptions>>;
|
|
19
|
-
protected parameters: import("@angular/core").Signal<Omit<NgtsOrthographicCameraOptions, "
|
|
19
|
+
protected parameters: import("@angular/core").Signal<Omit<NgtsOrthographicCameraOptions, "envMap" | "makeDefault" | "frames" | "resolution" | "left" | "right" | "top" | "bottom">>;
|
|
20
20
|
protected content: import("@angular/core").Signal<TemplateRef<any> | undefined>;
|
|
21
21
|
protected cameraContent: import("@angular/core").Signal<TemplateRef<any> | undefined>;
|
|
22
22
|
cameraRef: import("@angular/core").Signal<ElementRef<THREE.OrthographicCamera>>;
|
|
@@ -33,8 +33,7 @@ export declare class NgtsOrthographicCamera {
|
|
|
33
33
|
private manual;
|
|
34
34
|
private makeDefault;
|
|
35
35
|
private resolution;
|
|
36
|
-
|
|
37
|
-
protected texture: import("@angular/core").Signal<THREE.Texture>;
|
|
36
|
+
protected fbo: THREE.WebGLRenderTarget<THREE.Texture>;
|
|
38
37
|
constructor();
|
|
39
38
|
static ɵfac: i0.ɵɵFactoryDeclaration<NgtsOrthographicCamera, never>;
|
|
40
39
|
static ɵcmp: i0.ɵɵComponentDeclaration<NgtsOrthographicCamera, "ngts-orthographic-camera", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; }, {}, ["content", "cameraContent"], never, true, never>;
|
|
@@ -16,7 +16,7 @@ export interface NgtsPerspectiveCameraOptions extends Partial<NgtThreeElements['
|
|
|
16
16
|
}
|
|
17
17
|
export declare class NgtsPerspectiveCamera {
|
|
18
18
|
options: import("@angular/core").InputSignalWithTransform<NgtsPerspectiveCameraOptions, "" | Partial<NgtsPerspectiveCameraOptions>>;
|
|
19
|
-
protected parameters: import("@angular/core").Signal<Omit<NgtsPerspectiveCameraOptions, "
|
|
19
|
+
protected parameters: import("@angular/core").Signal<Omit<NgtsPerspectiveCameraOptions, "envMap" | "makeDefault" | "frames" | "resolution">>;
|
|
20
20
|
protected content: import("@angular/core").Signal<TemplateRef<any> | undefined>;
|
|
21
21
|
protected cameraContent: import("@angular/core").Signal<TemplateRef<any> | undefined>;
|
|
22
22
|
cameraRef: import("@angular/core").Signal<ElementRef<THREE.PerspectiveCamera>>;
|
|
@@ -25,8 +25,7 @@ export declare class NgtsPerspectiveCamera {
|
|
|
25
25
|
private manual;
|
|
26
26
|
private makeDefault;
|
|
27
27
|
private resolution;
|
|
28
|
-
|
|
29
|
-
protected texture: import("@angular/core").Signal<THREE.Texture>;
|
|
28
|
+
protected fbo: THREE.WebGLRenderTarget<THREE.Texture>;
|
|
30
29
|
constructor();
|
|
31
30
|
static ɵfac: i0.ɵɵFactoryDeclaration<NgtsPerspectiveCamera, never>;
|
|
32
31
|
static ɵcmp: i0.ɵɵComponentDeclaration<NgtsPerspectiveCamera, "ngts-perspective-camera", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; }, {}, ["content", "cameraContent"], never, true, never>;
|
|
@@ -95,7 +95,7 @@ class NgtsCubeCamera {
|
|
|
95
95
|
<ngt-group #group>
|
|
96
96
|
<ng-container
|
|
97
97
|
[ngTemplateOutlet]="cameraContent() ?? null"
|
|
98
|
-
[ngTemplateOutletContext]="{ $implicit: texture }"
|
|
98
|
+
[ngTemplateOutletContext]="{ $implicit: texture() }"
|
|
99
99
|
/>
|
|
100
100
|
</ngt-group>
|
|
101
101
|
</ngt-group>
|
|
@@ -111,7 +111,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.6", ngImpor
|
|
|
111
111
|
<ngt-group #group>
|
|
112
112
|
<ng-container
|
|
113
113
|
[ngTemplateOutlet]="cameraContent() ?? null"
|
|
114
|
-
[ngTemplateOutletContext]="{ $implicit: texture }"
|
|
114
|
+
[ngTemplateOutletContext]="{ $implicit: texture() }"
|
|
115
115
|
/>
|
|
116
116
|
</ngt-group>
|
|
117
117
|
</ngt-group>
|
|
@@ -158,7 +158,6 @@ class NgtsOrthographicCamera {
|
|
|
158
158
|
this.makeDefault = pick(this.options, 'makeDefault');
|
|
159
159
|
this.resolution = pick(this.options, 'resolution');
|
|
160
160
|
this.fbo = injectFBO(() => ({ width: this.resolution() }));
|
|
161
|
-
this.texture = pick(this.fbo, 'texture');
|
|
162
161
|
extend({ OrthographicCamera, Group });
|
|
163
162
|
effect(() => {
|
|
164
163
|
this.cameraRef().nativeElement.updateProjectionMatrix();
|
|
@@ -185,7 +184,7 @@ class NgtsOrthographicCamera {
|
|
|
185
184
|
this.options(),
|
|
186
185
|
this.groupRef().nativeElement,
|
|
187
186
|
this.cameraRef().nativeElement,
|
|
188
|
-
this.fbo
|
|
187
|
+
this.fbo,
|
|
189
188
|
];
|
|
190
189
|
if (this.cameraContent() && group && camera && fbo && (frames === Infinity || count < frames)) {
|
|
191
190
|
group.visible = false;
|
|
@@ -215,10 +214,7 @@ class NgtsOrthographicCamera {
|
|
|
215
214
|
</ngt-orthographic-camera>
|
|
216
215
|
|
|
217
216
|
<ngt-group #group>
|
|
218
|
-
<ng-container
|
|
219
|
-
[ngTemplateOutlet]="cameraContent() ?? null"
|
|
220
|
-
[ngTemplateOutletContext]="{ $implicit: texture }"
|
|
221
|
-
/>
|
|
217
|
+
<ng-container [ngTemplateOutlet]="cameraContent() ?? null" [ngTemplateOutletContext]="{ $implicit: fbo }" />
|
|
222
218
|
</ngt-group>
|
|
223
219
|
`, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
224
220
|
}
|
|
@@ -239,10 +235,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.6", ngImpor
|
|
|
239
235
|
</ngt-orthographic-camera>
|
|
240
236
|
|
|
241
237
|
<ngt-group #group>
|
|
242
|
-
<ng-container
|
|
243
|
-
[ngTemplateOutlet]="cameraContent() ?? null"
|
|
244
|
-
[ngTemplateOutletContext]="{ $implicit: texture }"
|
|
245
|
-
/>
|
|
238
|
+
<ng-container [ngTemplateOutlet]="cameraContent() ?? null" [ngTemplateOutletContext]="{ $implicit: fbo }" />
|
|
246
239
|
</ngt-group>
|
|
247
240
|
`,
|
|
248
241
|
imports: [NgTemplateOutlet],
|
|
@@ -270,7 +263,6 @@ class NgtsPerspectiveCamera {
|
|
|
270
263
|
this.makeDefault = pick(this.options, 'makeDefault');
|
|
271
264
|
this.resolution = pick(this.options, 'resolution');
|
|
272
265
|
this.fbo = injectFBO(() => ({ width: this.resolution() }));
|
|
273
|
-
this.texture = pick(this.fbo, 'texture');
|
|
274
266
|
extend({ PerspectiveCamera, Group });
|
|
275
267
|
effect(() => {
|
|
276
268
|
this.cameraRef().nativeElement.updateProjectionMatrix();
|
|
@@ -302,7 +294,7 @@ class NgtsPerspectiveCamera {
|
|
|
302
294
|
this.options(),
|
|
303
295
|
this.groupRef().nativeElement,
|
|
304
296
|
this.cameraRef().nativeElement,
|
|
305
|
-
this.fbo
|
|
297
|
+
this.fbo,
|
|
306
298
|
];
|
|
307
299
|
if (this.cameraContent() && group && camera && fbo && (frames === Infinity || count < frames)) {
|
|
308
300
|
group.visible = false;
|
|
@@ -325,10 +317,7 @@ class NgtsPerspectiveCamera {
|
|
|
325
317
|
</ngt-perspective-camera>
|
|
326
318
|
|
|
327
319
|
<ngt-group #group>
|
|
328
|
-
<ng-container
|
|
329
|
-
[ngTemplateOutlet]="cameraContent() ?? null"
|
|
330
|
-
[ngTemplateOutletContext]="{ $implicit: texture }"
|
|
331
|
-
/>
|
|
320
|
+
<ng-container [ngTemplateOutlet]="cameraContent() ?? null" [ngTemplateOutletContext]="{ $implicit: fbo }" />
|
|
332
321
|
</ngt-group>
|
|
333
322
|
`, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
334
323
|
}
|
|
@@ -342,10 +331,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.6", ngImpor
|
|
|
342
331
|
</ngt-perspective-camera>
|
|
343
332
|
|
|
344
333
|
<ngt-group #group>
|
|
345
|
-
<ng-container
|
|
346
|
-
[ngTemplateOutlet]="cameraContent() ?? null"
|
|
347
|
-
[ngTemplateOutletContext]="{ $implicit: texture }"
|
|
348
|
-
/>
|
|
334
|
+
<ng-container [ngTemplateOutlet]="cameraContent() ?? null" [ngTemplateOutletContext]="{ $implicit: fbo }" />
|
|
349
335
|
</ngt-group>
|
|
350
336
|
`,
|
|
351
337
|
imports: [NgTemplateOutlet],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"angular-three-soba-cameras.mjs","sources":["../../../../libs/soba/cameras/src/lib/camera-content.ts","../../../../libs/soba/cameras/src/lib/cube-camera.ts","../../../../libs/soba/cameras/src/lib/orthographic-camera.ts","../../../../libs/soba/cameras/src/lib/perspective-camera.ts","../../../../libs/soba/cameras/src/angular-three-soba-cameras.ts"],"sourcesContent":["import { Directive, Signal } from '@angular/core';\nimport * as THREE from 'three';\n\n@Directive({ selector: 'ng-template[cameraContent]' })\nexport class NgtsCameraContent {\n\tstatic ngTemplateContextGuard(_: NgtsCameraContent, ctx: unknown): ctx is { $implicit: Signal<THREE.Texture> } {\n\t\treturn true;\n\t}\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tcontentChild,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tInjector,\n\tinput,\n\tTemplateRef,\n\tuntracked,\n\tviewChild,\n} from '@angular/core';\nimport { extend, injectBeforeRender, injectStore, merge, NgtArgs, NgtThreeElements, omit, pick } from 'angular-three';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { Group } from 'three';\nimport { NgtsCameraContent } from './camera-content';\n\nexport interface CubeCameraOptions {\n\t/** Resolution of the FBO, 256 */\n\tresolution?: number;\n\t/** Camera near, 0.1 */\n\tnear?: number;\n\t/** Camera far, 1000 */\n\tfar?: number;\n\t/** Custom environment map that is temporarily set as the scenes background */\n\tenvMap?: THREE.Texture;\n\t/** Custom fog that is temporarily set as the scenes fog */\n\tfog?: THREE.Fog | THREE.FogExp2;\n}\n\nexport function injectCubeCamera(options: () => CubeCameraOptions, { injector }: { injector?: Injector } = {}) {\n\treturn assertInjector(injectCubeCamera, injector, () => {\n\t\tconst store = injectStore();\n\n\t\t// backfill the options with default values\n\t\tconst mergedOptions = merge(options, { resolution: 256, near: 0.1, far: 1000 }, 'backfill');\n\t\tconst resolution = pick(mergedOptions, 'resolution');\n\t\tconst near = pick(mergedOptions, 'near');\n\t\tconst far = pick(mergedOptions, 'far');\n\n\t\tconst fbo = computed(() => {\n\t\t\tconst fbo = new THREE.WebGLCubeRenderTarget(resolution());\n\t\t\tfbo.texture.type = THREE.HalfFloatType;\n\t\t\treturn fbo;\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst _fbo = fbo();\n\t\t\tonCleanup(() => _fbo.dispose());\n\t\t});\n\n\t\tconst cubeCamera = computed(() => new THREE.CubeCamera(near()!, far()!, fbo()));\n\t\tconst update = () => {\n\t\t\tconst [scene, gl, camera, { envMap, fog }] = [\n\t\t\t\tstore.scene(),\n\t\t\t\tstore.gl(),\n\t\t\t\tcubeCamera(),\n\t\t\t\tuntracked(mergedOptions),\n\t\t\t];\n\t\t\tlet originalFog: THREE.Fog | THREE.FogExp2;\n\t\t\tlet originalBackground: THREE.Texture;\n\n\t\t\toriginalFog = scene.fog as THREE.Fog | THREE.FogExp2;\n\t\t\toriginalBackground = scene.background as THREE.Texture;\n\t\t\tscene.background = envMap || originalBackground;\n\t\t\tscene.fog = fog || originalFog;\n\t\t\tcamera.update(gl, scene);\n\t\t\tscene.fog = originalFog;\n\t\t\tscene.background = originalBackground;\n\t\t};\n\n\t\treturn { fbo, camera: cubeCamera, update };\n\t});\n}\n\nexport type NgtsCubeCameraOptions = Partial<NgtThreeElements['ngt-group']> &\n\tCubeCameraOptions & {\n\t\tframes: number;\n\t};\n\nconst defaultOptions: NgtsCubeCameraOptions = {\n\tframes: Infinity,\n\tresolution: 256,\n\tnear: 0.1,\n\tfar: 1000,\n};\n\n@Component({\n\tselector: 'ngts-cube-camera',\n\ttemplate: `\n\t\t<ngt-group [parameters]=\"parameters()\">\n\t\t\t<ngt-primitive *args=\"[camera()]\" />\n\t\t\t<ngt-group #group>\n\t\t\t\t<ng-container\n\t\t\t\t\t[ngTemplateOutlet]=\"cameraContent() ?? null\"\n\t\t\t\t\t[ngTemplateOutletContext]=\"{ $implicit: texture }\"\n\t\t\t\t/>\n\t\t\t</ngt-group>\n\t\t</ngt-group>\n\t`,\n\timports: [NgtArgs, NgTemplateOutlet],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsCubeCamera {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, ['fog', 'near', 'far', 'envMap', 'resolution', 'frames']);\n\n\tprivate cubeCamera = injectCubeCamera(pick(this.options, ['near', 'far', 'envMap', 'fog', 'resolution']));\n\n\tprotected camera = this.cubeCamera.camera;\n\tprotected texture = pick(this.cubeCamera.fbo, 'texture');\n\n\tgroupRef = viewChild.required<ElementRef<THREE.Group>>('group');\n\tprotected cameraContent = contentChild(NgtsCameraContent, { read: TemplateRef });\n\n\tconstructor() {\n\t\textend({ Group });\n\n\t\tlet count = 0;\n\t\tinjectBeforeRender(() => {\n\t\t\tconst group = this.groupRef().nativeElement;\n\t\t\tif (!group) return;\n\n\t\t\tconst frames = this.options().frames;\n\t\t\tif (frames === Infinity || count < frames) {\n\t\t\t\tgroup.visible = false;\n\t\t\t\tthis.cubeCamera.update();\n\t\t\t\tgroup.visible = true;\n\t\t\t\tcount++;\n\t\t\t}\n\t\t});\n\t}\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\tTemplateRef,\n\tcomputed,\n\tcontentChild,\n\teffect,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { NgtThreeElements, extend, injectBeforeRender, injectStore, omit, pick } from 'angular-three';\nimport { injectFBO } from 'angular-three-soba/misc';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { Group, OrthographicCamera } from 'three';\nimport { NgtsCameraContent } from './camera-content';\n\nexport interface NgtsOrthographicCameraOptions extends Partial<NgtThreeElements['ngt-orthographic-camera']> {\n\t/** Registers the camera as the system default, fiber will start rendering with it */\n\tmakeDefault?: boolean;\n\t/** Making it manual will stop responsiveness and you have to calculate aspect ratio yourself. */\n\tmanual?: boolean;\n\t/** Number of frames to render, Infinity */\n\tframes: number;\n\t/** Resolution of the FBO, 256 */\n\tresolution: number;\n\t/** Optional environment map for functional use */\n\tenvMap?: THREE.Texture;\n}\n\nconst defaultOptions: NgtsOrthographicCameraOptions = {\n\tframes: Infinity,\n\tresolution: 256,\n\tmakeDefault: false,\n\tmanual: false,\n};\n\n@Component({\n\tselector: 'ngts-orthographic-camera',\n\ttemplate: `\n\t\t<ngt-orthographic-camera\n\t\t\t#camera\n\t\t\t[left]=\"left()\"\n\t\t\t[right]=\"right()\"\n\t\t\t[top]=\"top()\"\n\t\t\t[bottom]=\"bottom()\"\n\t\t\t[parameters]=\"parameters()\"\n\t\t>\n\t\t\t<ng-container [ngTemplateOutlet]=\"content() ?? null\" />\n\t\t</ngt-orthographic-camera>\n\n\t\t<ngt-group #group>\n\t\t\t<ng-container\n\t\t\t\t[ngTemplateOutlet]=\"cameraContent() ?? null\"\n\t\t\t\t[ngTemplateOutletContext]=\"{ $implicit: texture }\"\n\t\t\t/>\n\t\t</ngt-group>\n\t`,\n\timports: [NgTemplateOutlet],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsOrthographicCamera {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, [\n\t\t'envMap',\n\t\t'makeDefault',\n\t\t'frames',\n\t\t'resolution',\n\t\t'left',\n\t\t'top',\n\t\t'bottom',\n\t\t'right',\n\t]);\n\n\tprotected content = contentChild(TemplateRef);\n\tprotected cameraContent = contentChild(NgtsCameraContent, { read: TemplateRef });\n\n\tcameraRef = viewChild.required<ElementRef<THREE.OrthographicCamera>>('camera');\n\tgroupRef = viewChild.required<ElementRef<THREE.Group>>('group');\n\n\tprivate store = injectStore();\n\n\tprivate _left = pick(this.options, 'left');\n\tprivate _right = pick(this.options, 'right');\n\tprivate _top = pick(this.options, 'top');\n\tprivate _bottom = pick(this.options, 'bottom');\n\n\tprotected left = computed(() => this._left() ?? this.store.size.width() / -2);\n\tprotected right = computed(() => this._right() ?? this.store.size.width() / 2);\n\tprotected top = computed(() => this._top() ?? this.store.size.height() / 2);\n\tprotected bottom = computed(() => this._bottom() ?? this.store.size.height() / -2);\n\n\tprivate manual = pick(this.options, 'manual');\n\tprivate makeDefault = pick(this.options, 'makeDefault');\n\tprivate resolution = pick(this.options, 'resolution');\n\n\tprivate fbo = injectFBO(() => ({ width: this.resolution() }));\n\tprotected texture = pick(this.fbo, 'texture');\n\n\tconstructor() {\n\t\textend({ OrthographicCamera, Group });\n\n\t\teffect(() => {\n\t\t\tthis.cameraRef().nativeElement.updateProjectionMatrix();\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst manual = this.manual();\n\t\t\tif (manual) return;\n\n\t\t\tconst camera = this.cameraRef().nativeElement;\n\t\t\tcamera.updateProjectionMatrix();\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst makeDefault = this.makeDefault();\n\t\t\tif (!makeDefault) return;\n\n\t\t\tconst oldCam = this.store.snapshot.camera;\n\t\t\tthis.store.update({ camera: this.cameraRef().nativeElement });\n\t\t\tonCleanup(() => this.store.update(() => ({ camera: oldCam })));\n\t\t});\n\n\t\tlet count = 0;\n\t\tlet oldEnvMap: THREE.Color | THREE.Texture | null = null;\n\t\tinjectBeforeRender(({ gl, scene }) => {\n\t\t\tconst [{ frames, envMap }, group, camera, fbo] = [\n\t\t\t\tthis.options(),\n\t\t\t\tthis.groupRef().nativeElement,\n\t\t\t\tthis.cameraRef().nativeElement,\n\t\t\t\tthis.fbo(),\n\t\t\t];\n\t\t\tif (this.cameraContent() && group && camera && fbo && (frames === Infinity || count < frames)) {\n\t\t\t\tgroup.visible = false;\n\t\t\t\tgl.setRenderTarget(fbo);\n\t\t\t\toldEnvMap = scene.background;\n\t\t\t\tif (envMap) scene.background = envMap;\n\t\t\t\tgl.render(scene, camera);\n\t\t\t\tscene.background = oldEnvMap;\n\t\t\t\tgl.setRenderTarget(null);\n\t\t\t\tgroup.visible = true;\n\t\t\t\tcount++;\n\t\t\t}\n\t\t});\n\t}\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\tTemplateRef,\n\tcontentChild,\n\teffect,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { NgtThreeElements, extend, injectBeforeRender, injectStore, omit, pick } from 'angular-three';\nimport { injectFBO } from 'angular-three-soba/misc';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { Group, PerspectiveCamera } from 'three';\nimport { NgtsCameraContent } from './camera-content';\n\nexport interface NgtsPerspectiveCameraOptions extends Partial<NgtThreeElements['ngt-perspective-camera']> {\n\t/** Registers the camera as the system default, fiber will start rendering with it */\n\tmakeDefault?: boolean;\n\t/** Making it manual will stop responsiveness and you have to calculate aspect ratio yourself. */\n\tmanual?: boolean;\n\t/** Number of frames to render, Infinity */\n\tframes: number;\n\t/** Resolution of the FBO, 256 */\n\tresolution: number;\n\t/** Optional environment map for functional use */\n\tenvMap?: THREE.Texture;\n}\n\nconst defaultOptions: NgtsPerspectiveCameraOptions = {\n\tframes: Infinity,\n\tresolution: 256,\n\tmakeDefault: false,\n\tmanual: false,\n};\n\n@Component({\n\tselector: 'ngts-perspective-camera',\n\ttemplate: `\n\t\t<ngt-perspective-camera #camera [parameters]=\"parameters()\">\n\t\t\t<ng-container [ngTemplateOutlet]=\"content() ?? null\" />\n\t\t</ngt-perspective-camera>\n\n\t\t<ngt-group #group>\n\t\t\t<ng-container\n\t\t\t\t[ngTemplateOutlet]=\"cameraContent() ?? null\"\n\t\t\t\t[ngTemplateOutletContext]=\"{ $implicit: texture }\"\n\t\t\t/>\n\t\t</ngt-group>\n\t`,\n\timports: [NgTemplateOutlet],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsPerspectiveCamera {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, ['envMap', 'makeDefault', 'frames', 'resolution']);\n\n\tprotected content = contentChild(TemplateRef);\n\tprotected cameraContent = contentChild(NgtsCameraContent, { read: TemplateRef });\n\n\tcameraRef = viewChild.required<ElementRef<THREE.PerspectiveCamera>>('camera');\n\tgroupRef = viewChild.required<ElementRef<THREE.Group>>('group');\n\n\tprivate store = injectStore();\n\n\tprivate manual = pick(this.options, 'manual');\n\tprivate makeDefault = pick(this.options, 'makeDefault');\n\tprivate resolution = pick(this.options, 'resolution');\n\tprivate fbo = injectFBO(() => ({ width: this.resolution() }));\n\tprotected texture = pick(this.fbo, 'texture');\n\n\tconstructor() {\n\t\textend({ PerspectiveCamera, Group });\n\n\t\teffect(() => {\n\t\t\tthis.cameraRef().nativeElement.updateProjectionMatrix();\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst manual = this.manual();\n\t\t\tif (manual) return;\n\t\t\tconst [camera, width, height] = [\n\t\t\t\tthis.cameraRef().nativeElement,\n\t\t\t\tthis.store.size.width(),\n\t\t\t\tthis.store.size.height(),\n\t\t\t];\n\t\t\tcamera.aspect = width / height;\n\t\t\tcamera.updateProjectionMatrix();\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst makeDefault = this.makeDefault();\n\t\t\tif (!makeDefault) return;\n\n\t\t\tconst oldCam = this.store.snapshot.camera;\n\t\t\tthis.store.update({ camera: this.cameraRef().nativeElement });\n\t\t\tonCleanup(() => this.store.update(() => ({ camera: oldCam })));\n\t\t});\n\n\t\tlet count = 0;\n\t\tlet oldEnvMap: THREE.Color | THREE.Texture | null = null;\n\t\tinjectBeforeRender(({ gl, scene }) => {\n\t\t\tconst [{ frames, envMap }, group, camera, fbo] = [\n\t\t\t\tthis.options(),\n\t\t\t\tthis.groupRef().nativeElement,\n\t\t\t\tthis.cameraRef().nativeElement,\n\t\t\t\tthis.fbo(),\n\t\t\t];\n\t\t\tif (this.cameraContent() && group && camera && fbo && (frames === Infinity || count < frames)) {\n\t\t\t\tgroup.visible = false;\n\t\t\t\tgl.setRenderTarget(fbo);\n\t\t\t\toldEnvMap = scene.background;\n\t\t\t\tif (envMap) scene.background = envMap;\n\t\t\t\tgl.render(scene, camera);\n\t\t\t\tscene.background = oldEnvMap;\n\t\t\t\tgl.setRenderTarget(null);\n\t\t\t\tgroup.visible = true;\n\t\t\t\tcount++;\n\t\t\t}\n\t\t});\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["defaultOptions"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"angular-three-soba-cameras.mjs","sources":["../../../../libs/soba/cameras/src/lib/camera-content.ts","../../../../libs/soba/cameras/src/lib/cube-camera.ts","../../../../libs/soba/cameras/src/lib/orthographic-camera.ts","../../../../libs/soba/cameras/src/lib/perspective-camera.ts","../../../../libs/soba/cameras/src/angular-three-soba-cameras.ts"],"sourcesContent":["import { Directive } from '@angular/core';\nimport * as THREE from 'three';\n\n@Directive({ selector: 'ng-template[cameraContent]' })\nexport class NgtsCameraContent {\n\tstatic ngTemplateContextGuard(_: NgtsCameraContent, ctx: unknown): ctx is { $implicit: THREE.Texture } {\n\t\treturn true;\n\t}\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tcontentChild,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tInjector,\n\tinput,\n\tTemplateRef,\n\tuntracked,\n\tviewChild,\n} from '@angular/core';\nimport { extend, injectBeforeRender, injectStore, merge, NgtArgs, NgtThreeElements, omit, pick } from 'angular-three';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { Group } from 'three';\nimport { NgtsCameraContent } from './camera-content';\n\nexport interface CubeCameraOptions {\n\t/** Resolution of the FBO, 256 */\n\tresolution?: number;\n\t/** Camera near, 0.1 */\n\tnear?: number;\n\t/** Camera far, 1000 */\n\tfar?: number;\n\t/** Custom environment map that is temporarily set as the scenes background */\n\tenvMap?: THREE.Texture;\n\t/** Custom fog that is temporarily set as the scenes fog */\n\tfog?: THREE.Fog | THREE.FogExp2;\n}\n\nexport function injectCubeCamera(options: () => CubeCameraOptions, { injector }: { injector?: Injector } = {}) {\n\treturn assertInjector(injectCubeCamera, injector, () => {\n\t\tconst store = injectStore();\n\n\t\t// backfill the options with default values\n\t\tconst mergedOptions = merge(options, { resolution: 256, near: 0.1, far: 1000 }, 'backfill');\n\t\tconst resolution = pick(mergedOptions, 'resolution');\n\t\tconst near = pick(mergedOptions, 'near');\n\t\tconst far = pick(mergedOptions, 'far');\n\n\t\tconst fbo = computed(() => {\n\t\t\tconst fbo = new THREE.WebGLCubeRenderTarget(resolution());\n\t\t\tfbo.texture.type = THREE.HalfFloatType;\n\t\t\treturn fbo;\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst _fbo = fbo();\n\t\t\tonCleanup(() => _fbo.dispose());\n\t\t});\n\n\t\tconst cubeCamera = computed(() => new THREE.CubeCamera(near()!, far()!, fbo()));\n\t\tconst update = () => {\n\t\t\tconst [scene, gl, camera, { envMap, fog }] = [\n\t\t\t\tstore.scene(),\n\t\t\t\tstore.gl(),\n\t\t\t\tcubeCamera(),\n\t\t\t\tuntracked(mergedOptions),\n\t\t\t];\n\t\t\tlet originalFog: THREE.Fog | THREE.FogExp2;\n\t\t\tlet originalBackground: THREE.Texture;\n\n\t\t\toriginalFog = scene.fog as THREE.Fog | THREE.FogExp2;\n\t\t\toriginalBackground = scene.background as THREE.Texture;\n\t\t\tscene.background = envMap || originalBackground;\n\t\t\tscene.fog = fog || originalFog;\n\t\t\tcamera.update(gl, scene);\n\t\t\tscene.fog = originalFog;\n\t\t\tscene.background = originalBackground;\n\t\t};\n\n\t\treturn { fbo, camera: cubeCamera, update };\n\t});\n}\n\nexport type NgtsCubeCameraOptions = Partial<NgtThreeElements['ngt-group']> &\n\tCubeCameraOptions & {\n\t\tframes: number;\n\t};\n\nconst defaultOptions: NgtsCubeCameraOptions = {\n\tframes: Infinity,\n\tresolution: 256,\n\tnear: 0.1,\n\tfar: 1000,\n};\n\n@Component({\n\tselector: 'ngts-cube-camera',\n\ttemplate: `\n\t\t<ngt-group [parameters]=\"parameters()\">\n\t\t\t<ngt-primitive *args=\"[camera()]\" />\n\t\t\t<ngt-group #group>\n\t\t\t\t<ng-container\n\t\t\t\t\t[ngTemplateOutlet]=\"cameraContent() ?? null\"\n\t\t\t\t\t[ngTemplateOutletContext]=\"{ $implicit: texture() }\"\n\t\t\t\t/>\n\t\t\t</ngt-group>\n\t\t</ngt-group>\n\t`,\n\timports: [NgtArgs, NgTemplateOutlet],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsCubeCamera {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, ['fog', 'near', 'far', 'envMap', 'resolution', 'frames']);\n\n\tprivate cubeCamera = injectCubeCamera(pick(this.options, ['near', 'far', 'envMap', 'fog', 'resolution']));\n\n\tprotected camera = this.cubeCamera.camera;\n\tprotected texture = pick(this.cubeCamera.fbo, 'texture');\n\n\tgroupRef = viewChild.required<ElementRef<THREE.Group>>('group');\n\tprotected cameraContent = contentChild(NgtsCameraContent, { read: TemplateRef });\n\n\tconstructor() {\n\t\textend({ Group });\n\n\t\tlet count = 0;\n\t\tinjectBeforeRender(() => {\n\t\t\tconst group = this.groupRef().nativeElement;\n\t\t\tif (!group) return;\n\n\t\t\tconst frames = this.options().frames;\n\t\t\tif (frames === Infinity || count < frames) {\n\t\t\t\tgroup.visible = false;\n\t\t\t\tthis.cubeCamera.update();\n\t\t\t\tgroup.visible = true;\n\t\t\t\tcount++;\n\t\t\t}\n\t\t});\n\t}\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\tTemplateRef,\n\tcomputed,\n\tcontentChild,\n\teffect,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { NgtThreeElements, extend, injectBeforeRender, injectStore, omit, pick } from 'angular-three';\nimport { injectFBO } from 'angular-three-soba/misc';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { Group, OrthographicCamera } from 'three';\nimport { NgtsCameraContent } from './camera-content';\n\nexport interface NgtsOrthographicCameraOptions extends Partial<NgtThreeElements['ngt-orthographic-camera']> {\n\t/** Registers the camera as the system default, fiber will start rendering with it */\n\tmakeDefault?: boolean;\n\t/** Making it manual will stop responsiveness and you have to calculate aspect ratio yourself. */\n\tmanual?: boolean;\n\t/** Number of frames to render, Infinity */\n\tframes: number;\n\t/** Resolution of the FBO, 256 */\n\tresolution: number;\n\t/** Optional environment map for functional use */\n\tenvMap?: THREE.Texture;\n}\n\nconst defaultOptions: NgtsOrthographicCameraOptions = {\n\tframes: Infinity,\n\tresolution: 256,\n\tmakeDefault: false,\n\tmanual: false,\n};\n\n@Component({\n\tselector: 'ngts-orthographic-camera',\n\ttemplate: `\n\t\t<ngt-orthographic-camera\n\t\t\t#camera\n\t\t\t[left]=\"left()\"\n\t\t\t[right]=\"right()\"\n\t\t\t[top]=\"top()\"\n\t\t\t[bottom]=\"bottom()\"\n\t\t\t[parameters]=\"parameters()\"\n\t\t>\n\t\t\t<ng-container [ngTemplateOutlet]=\"content() ?? null\" />\n\t\t</ngt-orthographic-camera>\n\n\t\t<ngt-group #group>\n\t\t\t<ng-container [ngTemplateOutlet]=\"cameraContent() ?? null\" [ngTemplateOutletContext]=\"{ $implicit: fbo }\" />\n\t\t</ngt-group>\n\t`,\n\timports: [NgTemplateOutlet],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsOrthographicCamera {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, [\n\t\t'envMap',\n\t\t'makeDefault',\n\t\t'frames',\n\t\t'resolution',\n\t\t'left',\n\t\t'top',\n\t\t'bottom',\n\t\t'right',\n\t]);\n\n\tprotected content = contentChild(TemplateRef);\n\tprotected cameraContent = contentChild(NgtsCameraContent, { read: TemplateRef });\n\n\tcameraRef = viewChild.required<ElementRef<THREE.OrthographicCamera>>('camera');\n\tgroupRef = viewChild.required<ElementRef<THREE.Group>>('group');\n\n\tprivate store = injectStore();\n\n\tprivate _left = pick(this.options, 'left');\n\tprivate _right = pick(this.options, 'right');\n\tprivate _top = pick(this.options, 'top');\n\tprivate _bottom = pick(this.options, 'bottom');\n\n\tprotected left = computed(() => this._left() ?? this.store.size.width() / -2);\n\tprotected right = computed(() => this._right() ?? this.store.size.width() / 2);\n\tprotected top = computed(() => this._top() ?? this.store.size.height() / 2);\n\tprotected bottom = computed(() => this._bottom() ?? this.store.size.height() / -2);\n\n\tprivate manual = pick(this.options, 'manual');\n\tprivate makeDefault = pick(this.options, 'makeDefault');\n\tprivate resolution = pick(this.options, 'resolution');\n\n\tprotected fbo = injectFBO(() => ({ width: this.resolution() }));\n\n\tconstructor() {\n\t\textend({ OrthographicCamera, Group });\n\n\t\teffect(() => {\n\t\t\tthis.cameraRef().nativeElement.updateProjectionMatrix();\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst manual = this.manual();\n\t\t\tif (manual) return;\n\n\t\t\tconst camera = this.cameraRef().nativeElement;\n\t\t\tcamera.updateProjectionMatrix();\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst makeDefault = this.makeDefault();\n\t\t\tif (!makeDefault) return;\n\n\t\t\tconst oldCam = this.store.snapshot.camera;\n\t\t\tthis.store.update({ camera: this.cameraRef().nativeElement });\n\t\t\tonCleanup(() => this.store.update(() => ({ camera: oldCam })));\n\t\t});\n\n\t\tlet count = 0;\n\t\tlet oldEnvMap: THREE.Color | THREE.Texture | null = null;\n\t\tinjectBeforeRender(({ gl, scene }) => {\n\t\t\tconst [{ frames, envMap }, group, camera, fbo] = [\n\t\t\t\tthis.options(),\n\t\t\t\tthis.groupRef().nativeElement,\n\t\t\t\tthis.cameraRef().nativeElement,\n\t\t\t\tthis.fbo,\n\t\t\t];\n\t\t\tif (this.cameraContent() && group && camera && fbo && (frames === Infinity || count < frames)) {\n\t\t\t\tgroup.visible = false;\n\t\t\t\tgl.setRenderTarget(fbo);\n\t\t\t\toldEnvMap = scene.background;\n\t\t\t\tif (envMap) scene.background = envMap;\n\t\t\t\tgl.render(scene, camera);\n\t\t\t\tscene.background = oldEnvMap;\n\t\t\t\tgl.setRenderTarget(null);\n\t\t\t\tgroup.visible = true;\n\t\t\t\tcount++;\n\t\t\t}\n\t\t});\n\t}\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\tTemplateRef,\n\tcontentChild,\n\teffect,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { NgtThreeElements, extend, injectBeforeRender, injectStore, omit, pick } from 'angular-three';\nimport { injectFBO } from 'angular-three-soba/misc';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { Group, PerspectiveCamera } from 'three';\nimport { NgtsCameraContent } from './camera-content';\n\nexport interface NgtsPerspectiveCameraOptions extends Partial<NgtThreeElements['ngt-perspective-camera']> {\n\t/** Registers the camera as the system default, fiber will start rendering with it */\n\tmakeDefault?: boolean;\n\t/** Making it manual will stop responsiveness and you have to calculate aspect ratio yourself. */\n\tmanual?: boolean;\n\t/** Number of frames to render, Infinity */\n\tframes: number;\n\t/** Resolution of the FBO, 256 */\n\tresolution: number;\n\t/** Optional environment map for functional use */\n\tenvMap?: THREE.Texture;\n}\n\nconst defaultOptions: NgtsPerspectiveCameraOptions = {\n\tframes: Infinity,\n\tresolution: 256,\n\tmakeDefault: false,\n\tmanual: false,\n};\n\n@Component({\n\tselector: 'ngts-perspective-camera',\n\ttemplate: `\n\t\t<ngt-perspective-camera #camera [parameters]=\"parameters()\">\n\t\t\t<ng-container [ngTemplateOutlet]=\"content() ?? null\" />\n\t\t</ngt-perspective-camera>\n\n\t\t<ngt-group #group>\n\t\t\t<ng-container [ngTemplateOutlet]=\"cameraContent() ?? null\" [ngTemplateOutletContext]=\"{ $implicit: fbo }\" />\n\t\t</ngt-group>\n\t`,\n\timports: [NgTemplateOutlet],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsPerspectiveCamera {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, ['envMap', 'makeDefault', 'frames', 'resolution']);\n\n\tprotected content = contentChild(TemplateRef);\n\tprotected cameraContent = contentChild(NgtsCameraContent, { read: TemplateRef });\n\n\tcameraRef = viewChild.required<ElementRef<THREE.PerspectiveCamera>>('camera');\n\tgroupRef = viewChild.required<ElementRef<THREE.Group>>('group');\n\n\tprivate store = injectStore();\n\n\tprivate manual = pick(this.options, 'manual');\n\tprivate makeDefault = pick(this.options, 'makeDefault');\n\tprivate resolution = pick(this.options, 'resolution');\n\tprotected fbo = injectFBO(() => ({ width: this.resolution() }));\n\n\tconstructor() {\n\t\textend({ PerspectiveCamera, Group });\n\n\t\teffect(() => {\n\t\t\tthis.cameraRef().nativeElement.updateProjectionMatrix();\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst manual = this.manual();\n\t\t\tif (manual) return;\n\t\t\tconst [camera, width, height] = [\n\t\t\t\tthis.cameraRef().nativeElement,\n\t\t\t\tthis.store.size.width(),\n\t\t\t\tthis.store.size.height(),\n\t\t\t];\n\t\t\tcamera.aspect = width / height;\n\t\t\tcamera.updateProjectionMatrix();\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst makeDefault = this.makeDefault();\n\t\t\tif (!makeDefault) return;\n\n\t\t\tconst oldCam = this.store.snapshot.camera;\n\t\t\tthis.store.update({ camera: this.cameraRef().nativeElement });\n\t\t\tonCleanup(() => this.store.update(() => ({ camera: oldCam })));\n\t\t});\n\n\t\tlet count = 0;\n\t\tlet oldEnvMap: THREE.Color | THREE.Texture | null = null;\n\t\tinjectBeforeRender(({ gl, scene }) => {\n\t\t\tconst [{ frames, envMap }, group, camera, fbo] = [\n\t\t\t\tthis.options(),\n\t\t\t\tthis.groupRef().nativeElement,\n\t\t\t\tthis.cameraRef().nativeElement,\n\t\t\t\tthis.fbo,\n\t\t\t];\n\t\t\tif (this.cameraContent() && group && camera && fbo && (frames === Infinity || count < frames)) {\n\t\t\t\tgroup.visible = false;\n\t\t\t\tgl.setRenderTarget(fbo);\n\t\t\t\toldEnvMap = scene.background;\n\t\t\t\tif (envMap) scene.background = envMap;\n\t\t\t\tgl.render(scene, camera);\n\t\t\t\tscene.background = oldEnvMap;\n\t\t\t\tgl.setRenderTarget(null);\n\t\t\t\tgroup.visible = true;\n\t\t\t\tcount++;\n\t\t\t}\n\t\t});\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["defaultOptions"],"mappings":"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"}
|
|
@@ -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
|
|
134
|
-
b: { value: buffer2
|
|
133
|
+
a: { value: buffer1.texture },
|
|
134
|
+
b: { value: buffer2.texture },
|
|
135
135
|
blend,
|
|
136
136
|
},
|
|
137
137
|
vertexShader: /*glsl*/ `
|
|
@@ -198,9 +198,9 @@ class ManagePortalScene {
|
|
|
198
198
|
// If blend is ongoing (> 0 and < 1) then we need to render both the root scene
|
|
199
199
|
// and the portal scene, both will then be mixed in the quad from above
|
|
200
200
|
blend.value = materialBlend;
|
|
201
|
-
gl.setRenderTarget(buffer1
|
|
201
|
+
gl.setRenderTarget(buffer1);
|
|
202
202
|
gl.render(scene, camera);
|
|
203
|
-
gl.setRenderTarget(buffer2
|
|
203
|
+
gl.setRenderTarget(buffer2);
|
|
204
204
|
gl.render(rootScene, camera);
|
|
205
205
|
gl.setRenderTarget(null);
|
|
206
206
|
quad.render(gl);
|
|
@@ -835,7 +835,7 @@ class NgtsMeshTransmissionMaterial {
|
|
|
835
835
|
this.backResolution = computed(() => this.backsideResolution() || this.resolution());
|
|
836
836
|
this.fboBack = injectFBO(() => ({ width: this.backResolution() }));
|
|
837
837
|
this.fboMain = injectFBO(() => ({ width: this.resolution() }));
|
|
838
|
-
this.bufferTexture = computed(() => this.buffer() || this.fboMain
|
|
838
|
+
this.bufferTexture = computed(() => this.buffer() || this.fboMain.texture);
|
|
839
839
|
this.anisotropicBlurOption = computed(() => this.anisotropicBlur() || this.anisotropy());
|
|
840
840
|
this.discardMaterial = new MeshDiscardMaterial();
|
|
841
841
|
this.material = computed(() => {
|
|
@@ -865,8 +865,8 @@ class NgtsMeshTransmissionMaterial {
|
|
|
865
865
|
if (!material)
|
|
866
866
|
return;
|
|
867
867
|
const [fboMain, fboBack, transmissionSampler, background, backside, backsideThickness, backsideEnvMapIntensity, thickness, side,] = [
|
|
868
|
-
this.fboMain
|
|
869
|
-
this.fboBack
|
|
868
|
+
this.fboMain,
|
|
869
|
+
this.fboBack,
|
|
870
870
|
this.transmissionSampler(),
|
|
871
871
|
this.background(),
|
|
872
872
|
this.backside(),
|