@benjos/create-boilerplate 1.5.2 → 1.5.9
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/README.md +0 -4
- package/dist/constants.d.ts +8 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +18 -0
- package/dist/constants.js.map +1 -0
- package/dist/constants.test.d.ts +2 -0
- package/dist/constants.test.d.ts.map +1 -0
- package/dist/constants.test.js +30 -0
- package/dist/constants.test.js.map +1 -0
- package/dist/createProject.d.ts +2 -0
- package/dist/createProject.d.ts.map +1 -0
- package/dist/createProject.js +52 -0
- package/dist/createProject.js.map +1 -0
- package/dist/createProject.test.d.ts +2 -0
- package/dist/createProject.test.d.ts.map +1 -0
- package/dist/createProject.test.js +85 -0
- package/dist/createProject.test.js.map +1 -0
- package/dist/index.js +16 -73
- package/dist/index.js.map +1 -1
- package/dist/prompts.d.ts +4 -0
- package/dist/prompts.d.ts.map +1 -0
- package/dist/prompts.js +26 -0
- package/dist/prompts.js.map +1 -0
- package/dist/prompts.test.d.ts +2 -0
- package/dist/prompts.test.d.ts.map +1 -0
- package/dist/prompts.test.js +50 -0
- package/dist/prompts.test.js.map +1 -0
- package/dist/types.d.ts +13 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +7 -0
- package/dist/types.js.map +1 -0
- package/package.json +8 -7
- package/template-vanilla/package-lock.json +1038 -1483
- package/template-vanilla/package.json +14 -11
- package/template-vanilla/src/experiences/Experience.ts +1 -1
- package/template-vanilla/src/experiences/cameras/threes/DebugThreeCameraController.ts +1 -1
- package/template-vanilla/src/experiences/cameras/threes/LoaderThreeCameraController.ts +1 -1
- package/template-vanilla/src/experiences/cameras/threes/MainThreeCameraController.ts +1 -1
- package/template-vanilla/src/experiences/cameras/threes/bases/ThreeCameraControllerBase.ts +2 -2
- package/template-vanilla/src/experiences/composers/threes/MainThreeEffectComposer.ts +20 -0
- package/template-vanilla/src/experiences/composers/threes/bases/ThreeEffectComposerBase.ts +54 -0
- package/template-vanilla/src/experiences/composers/threes/bases/passes/ThreePassBase.ts +11 -0
- package/template-vanilla/src/experiences/composers/threes/passes/TemplateThreePass.ts +22 -0
- package/template-vanilla/src/experiences/constants/experiences/ViewId.ts +2 -7
- package/template-vanilla/src/experiences/engines/threes/app/LoaderThreeApp.ts +2 -2
- package/template-vanilla/src/experiences/engines/threes/app/MainThreeApp.ts +10 -7
- package/template-vanilla/src/experiences/engines/threes/app/bases/ThreeAppBase.ts +7 -7
- package/template-vanilla/src/experiences/managers/DebugManager.ts +19 -5
- package/template-vanilla/src/experiences/managers/LoaderManager.ts +4 -5
- package/template-vanilla/src/experiences/managers/threes/ThreeAssetsManager.ts +3 -3
- package/template-vanilla/src/experiences/managers/threes/ThreeRaycasterManager.ts +1 -1
- package/template-vanilla/src/experiences/materials/threes/loaders/{LoaderMaterial.ts → LoaderThreeMaterial.ts} +12 -9
- package/template-vanilla/src/experiences/renderers/threes/LoaderThreeWebGLRenderer.ts +18 -0
- package/{template-vue/src/experiences/renderers/threes/Renderer.ts → template-vanilla/src/experiences/renderers/threes/MainThreeWebGLRenderer.ts} +24 -14
- package/template-vanilla/src/experiences/renderers/threes/bases/ThreeWebGLRendererBase.ts +60 -0
- package/template-vanilla/src/experiences/shaders/threes/composers/templates/TemplatePassFragmentShader.glsl +10 -0
- package/template-vanilla/src/experiences/shaders/threes/composers/templates/TemplatePassVertexShader.glsl +6 -0
- package/template-vanilla/src/experiences/types/global.d.ts +1 -1
- package/template-vanilla/src/experiences/types/styles.d.ts +2 -0
- package/template-vanilla/src/experiences/views/threes/bases/ThreeViewBase.ts +2 -2
- package/{template-vue/src/experiences/views/threes/worlds/components/actors/bases → template-vanilla/src/experiences/views/threes/bases/components}/ThreeAnimatedModelBase.ts +4 -4
- package/{template-vue/src/experiences/views/threes/worlds/components/actors/bases → template-vanilla/src/experiences/views/threes/bases/components}/ThreeModelBase.ts +4 -4
- package/template-vanilla/src/experiences/views/threes/loaders/components/TemplateLoaderThreeActor.ts +5 -5
- package/template-vanilla/src/experiences/views/threes/worlds/World2ThreeView.ts +5 -5
- package/template-vanilla/src/experiences/views/threes/worlds/WorldThreeView.ts +5 -5
- package/template-vanilla/src/experiences/views/threes/worlds/components/Environment.ts +2 -2
- package/template-vanilla/src/experiences/views/threes/worlds/components/{actors/TemplateFont.ts → TemplateFont.ts} +3 -3
- package/{template-vue/src/experiences/views/threes/worlds/components/actors → template-vanilla/src/experiences/views/threes/worlds/components}/TemplateMesh.ts +3 -3
- package/template-vanilla/src/experiences/views/threes/worlds/components/{actors/TemplateMesh2.ts → TemplateMesh2.ts} +3 -3
- package/{template-vue/src/experiences/views/threes/worlds/components/actors → template-vanilla/src/experiences/views/threes/worlds/components}/TemplateModel.ts +4 -4
- package/template-vanilla/tsconfig.json +3 -3
- package/template-vue/package-lock.json +711 -1168
- package/template-vue/package.json +15 -12
- package/template-vue/src/experiences/Experience.ts +1 -1
- package/template-vue/src/experiences/cameras/threes/DebugThreeCameraController.ts +1 -1
- package/template-vue/src/experiences/cameras/threes/LoaderThreeCameraController.ts +1 -1
- package/template-vue/src/experiences/cameras/threes/MainThreeCameraController.ts +1 -1
- package/template-vue/src/experiences/cameras/threes/bases/ThreeCameraControllerBase.ts +2 -2
- package/template-vue/src/experiences/composers/threes/MainThreeEffectComposer.ts +20 -0
- package/template-vue/src/experiences/composers/threes/bases/ThreeEffectComposerBase.ts +54 -0
- package/template-vue/src/experiences/composers/threes/bases/passes/ThreePassBase.ts +11 -0
- package/template-vue/src/experiences/composers/threes/passes/TemplateThreePass.ts +22 -0
- package/template-vue/src/experiences/constants/experiences/ViewId.ts +2 -7
- package/template-vue/src/experiences/engines/threes/app/LoaderThreeApp.ts +2 -2
- package/template-vue/src/experiences/engines/threes/app/MainThreeApp.ts +10 -7
- package/template-vue/src/experiences/engines/threes/app/bases/ThreeAppBase.ts +7 -7
- package/template-vue/src/experiences/managers/DebugManager.ts +19 -5
- package/template-vue/src/experiences/managers/LoaderManager.ts +4 -5
- package/template-vue/src/experiences/managers/threes/ThreeAssetsManager.ts +3 -3
- package/template-vue/src/experiences/managers/threes/ThreeRaycasterManager.ts +1 -1
- package/template-vue/src/experiences/materials/threes/loaders/{LoaderMaterial.ts → LoaderThreeMaterial.ts} +12 -9
- package/template-vue/src/experiences/renderers/threes/LoaderThreeWebGLRenderer.ts +18 -0
- package/{template-vanilla/src/experiences/renderers/threes/Renderer.ts → template-vue/src/experiences/renderers/threes/MainThreeWebGLRenderer.ts} +24 -14
- package/template-vue/src/experiences/renderers/threes/bases/ThreeWebGLRendererBase.ts +60 -0
- package/template-vue/src/experiences/shaders/threes/composers/templates/TemplatePassFragmentShader.glsl +10 -0
- package/template-vue/src/experiences/shaders/threes/composers/templates/TemplatePassVertexShader.glsl +6 -0
- package/template-vue/src/experiences/types/styles.d.ts +2 -0
- package/template-vue/src/experiences/views/threes/bases/ThreeViewBase.ts +2 -2
- package/{template-vanilla/src/experiences/views/threes/worlds/components/actors/bases → template-vue/src/experiences/views/threes/bases/components}/ThreeAnimatedModelBase.ts +4 -4
- package/{template-vanilla/src/experiences/views/threes/worlds/components/actors/bases → template-vue/src/experiences/views/threes/bases/components}/ThreeModelBase.ts +4 -4
- package/template-vue/src/experiences/views/threes/loaders/components/TemplateLoaderThreeActor.ts +5 -5
- package/template-vue/src/experiences/views/threes/worlds/World2ThreeView.ts +5 -5
- package/template-vue/src/experiences/views/threes/worlds/WorldThreeView.ts +5 -5
- package/template-vue/src/experiences/views/threes/worlds/components/Environment.ts +2 -2
- package/template-vue/src/experiences/views/threes/worlds/components/{actors/TemplateFont.ts → TemplateFont.ts} +3 -3
- package/{template-vanilla/src/experiences/views/threes/worlds/components/actors → template-vue/src/experiences/views/threes/worlds/components}/TemplateMesh.ts +3 -3
- package/template-vue/src/experiences/views/threes/worlds/components/{actors/TemplateMesh2.ts → TemplateMesh2.ts} +3 -3
- package/{template-vanilla/src/experiences/views/threes/worlds/components/actors → template-vue/src/experiences/views/threes/worlds/components}/TemplateModel.ts +4 -4
- package/template-vue/tsconfig.app.json +1 -7
- package/template-vue/tsconfig.node.json +0 -1
- package/template-react/.prettierignore +0 -6
- package/template-react/.prettierrc +0 -10
- package/template-react/assets_source/.gitkeep +0 -0
- package/template-react/eslint.config.js +0 -23
- package/template-react/index.html +0 -17
- package/template-react/package-lock.json +0 -4455
- package/template-react/package.json +0 -46
- package/template-react/public/assets/fonts/LICENSE +0 -13
- package/template-react/public/assets/fonts/template.typeface.json +0 -1
- package/template-react/public/assets/hdrs/template.hdr +0 -0
- package/template-react/public/assets/icons/benjosLogoBlack.svg +0 -5
- package/template-react/public/assets/loaders/draco/README.md +0 -32
- package/template-react/public/assets/loaders/draco/draco_decoder.js +0 -34
- package/template-react/public/assets/loaders/draco/draco_decoder.wasm +0 -0
- package/template-react/public/assets/loaders/draco/draco_encoder.js +0 -33
- package/template-react/public/assets/loaders/draco/draco_wasm_wrapper.js +0 -117
- package/template-react/public/assets/loaders/draco/gltf/draco_decoder.js +0 -33
- package/template-react/public/assets/loaders/draco/gltf/draco_decoder.wasm +0 -0
- package/template-react/public/assets/loaders/draco/gltf/draco_encoder.js +0 -33
- package/template-react/public/assets/loaders/draco/gltf/draco_wasm_wrapper.js +0 -116
- package/template-react/public/assets/models/template.glb +0 -0
- package/template-react/public/assets/textures/template.jpg +0 -0
- package/template-react/readme.md +0 -31
- package/template-react/src/App.css +0 -42
- package/template-react/src/App.tsx +0 -10
- package/template-react/src/index.css +0 -68
- package/template-react/src/main.tsx +0 -10
- package/template-react/tsconfig.app.json +0 -34
- package/template-react/tsconfig.json +0 -7
- package/template-react/tsconfig.node.json +0 -26
- package/template-react/vite.config.ts +0 -29
- package/template-vanilla/src/experiences/renderers/threes/LoaderRenderer.ts +0 -18
- package/template-vanilla/src/experiences/renderers/threes/bases/WebGLRendererBase.ts +0 -29
- package/template-vue/src/experiences/renderers/threes/LoaderRenderer.ts +0 -18
- package/template-vue/src/experiences/renderers/threes/bases/WebGLRendererBase.ts +0 -29
- /package/template-vanilla/src/experiences/views/threes/{worlds/components/actors/bases → bases/components}/ThreeActorBase.ts +0 -0
- /package/template-vue/src/experiences/views/threes/{worlds/components/actors/bases → bases/components}/ThreeActorBase.ts +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "template-vanilla",
|
|
3
3
|
"private": true,
|
|
4
|
-
"version": "1.5.
|
|
4
|
+
"version": "1.5.9",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"dev": "vite",
|
|
@@ -13,27 +13,30 @@
|
|
|
13
13
|
"format:check": "prettier --check ."
|
|
14
14
|
},
|
|
15
15
|
"devDependencies": {
|
|
16
|
-
"@eslint/js": "^
|
|
16
|
+
"@eslint/js": "^10.0.1",
|
|
17
17
|
"@types/howler": "^2.2.12",
|
|
18
|
-
"@types/three": "^0.
|
|
19
|
-
"eslint": "^
|
|
18
|
+
"@types/three": "^0.183.1",
|
|
19
|
+
"eslint": "^10.1.0",
|
|
20
20
|
"eslint-config-prettier": "^10.1.8",
|
|
21
|
-
"eslint-plugin-prettier": "^5.5.
|
|
22
|
-
"prettier": "^3.
|
|
23
|
-
"sass-embedded": "^1.
|
|
21
|
+
"eslint-plugin-prettier": "^5.5.5",
|
|
22
|
+
"prettier": "^3.8.1",
|
|
23
|
+
"sass-embedded": "^1.98.0",
|
|
24
24
|
"three-perf": "^1.0.11",
|
|
25
25
|
"typescript": "~5.9.3",
|
|
26
|
-
"typescript-eslint": "^8.
|
|
27
|
-
"vite": "^
|
|
28
|
-
"vite-plugin-glsl": "^1.5.
|
|
26
|
+
"typescript-eslint": "^8.57.1",
|
|
27
|
+
"vite": "^8.0.1",
|
|
28
|
+
"vite-plugin-glsl": "^1.5.6"
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
31
|
"@benjos/cookware": "^1.0.4",
|
|
32
32
|
"@benjos/spices": "^1.0.1",
|
|
33
33
|
"@dimforge/rapier3d": "^0.19.3",
|
|
34
|
+
"@types/stats.js": "^0.17.4",
|
|
34
35
|
"gsap": "^3.14.2",
|
|
35
36
|
"howler": "^2.2.4",
|
|
36
37
|
"lil-gui": "^0.21.0",
|
|
37
|
-
"
|
|
38
|
+
"stats.js": "^0.17.0",
|
|
39
|
+
"three": "^0.183.2",
|
|
40
|
+
"three-custom-shader-material": "^6.4.0"
|
|
38
41
|
}
|
|
39
42
|
}
|
|
@@ -5,7 +5,7 @@ import { OrbitControls } from 'three/examples/jsm/Addons.js';
|
|
|
5
5
|
import { CameraId } from '../../constants/experiences/CameraId';
|
|
6
6
|
import MainThreeApp from '../../engines/threes/app/MainThreeApp';
|
|
7
7
|
import ThreeRaycasterManager from '../../managers/threes/ThreeRaycasterManager';
|
|
8
|
-
import {
|
|
8
|
+
import { ThreeCameraType, type ThreeCameraOptions } from '../../types/cameraTypes';
|
|
9
9
|
import ThreeCameraControllerBase from './bases/ThreeCameraControllerBase';
|
|
10
10
|
|
|
11
11
|
export default class DebugThreeCameraController extends ThreeCameraControllerBase<OrbitControls> {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Vector3 } from 'three';
|
|
2
2
|
import { CameraId } from '../../constants/experiences/CameraId';
|
|
3
3
|
import LoaderThreeApp from '../../engines/threes/app/LoaderThreeApp';
|
|
4
|
-
import {
|
|
4
|
+
import { ThreeCameraType, type ThreeCameraOptions } from '../../types/cameraTypes';
|
|
5
5
|
import ThreeCameraControllerBase from './bases/ThreeCameraControllerBase';
|
|
6
6
|
|
|
7
7
|
export default class LoaderThreeCameraController extends ThreeCameraControllerBase {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Vector3 } from 'three';
|
|
2
2
|
import { CameraId } from '../../constants/experiences/CameraId';
|
|
3
|
-
import {
|
|
3
|
+
import { ThreeCameraType, type ThreeCameraOptions } from '../../types/cameraTypes';
|
|
4
4
|
import ThreeCameraControllerBase from './bases/ThreeCameraControllerBase';
|
|
5
5
|
|
|
6
6
|
export default class MainThreeCameraController extends ThreeCameraControllerBase {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { DomResizeManager } from '@benjos/cookware';
|
|
2
|
-
import { Object3D, OrthographicCamera, PerspectiveCamera, Scene } from 'three';
|
|
2
|
+
import { Object3D, OrthographicCamera, PerspectiveCamera, type Scene } from 'three';
|
|
3
3
|
import type { CameraId } from '../../../constants/experiences/CameraId';
|
|
4
4
|
import MainThreeApp from '../../../engines/threes/app/MainThreeApp';
|
|
5
|
-
import {
|
|
5
|
+
import { ThreeCameraType, type ThreeCameraOptions, type ThreeControls } from '../../../types/cameraTypes';
|
|
6
6
|
|
|
7
7
|
export default abstract class ThreeCameraControllerBase<T extends ThreeControls = ThreeControls> extends Object3D {
|
|
8
8
|
private static readonly _DEFAULT_CAMERA_OPTIONS: ThreeCameraOptions = {
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Camera, Scene, WebGLRenderer } from "three";
|
|
2
|
+
import { GlitchPass } from "three/examples/jsm/Addons.js";
|
|
3
|
+
import ThreeEffectComposerBase from "./bases/ThreeEffectComposerBase";
|
|
4
|
+
import TemplateThreePass from "./passes/TemplateThreePass";
|
|
5
|
+
|
|
6
|
+
export default class MainThreeEffectComposer extends ThreeEffectComposerBase {
|
|
7
|
+
constructor(renderer: WebGLRenderer, scene: Scene, camera: Camera) {
|
|
8
|
+
super(renderer, scene, camera);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
protected override _addPasses(): void {
|
|
12
|
+
super._addPasses();
|
|
13
|
+
this._addPass(new TemplateThreePass());
|
|
14
|
+
this._addPass(new GlitchPass());
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
public override update(dt: number): void {
|
|
18
|
+
super.update(dt);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { DomResizeManager } from "@benjos/cookware";
|
|
2
|
+
import { HalfFloatType, WebGLRenderTarget, type Camera, type Scene, type TextureDataType, type WebGLRenderer } from "three";
|
|
3
|
+
import { EffectComposer, OutputPass, RenderPass, type Pass } from "three/examples/jsm/Addons.js";
|
|
4
|
+
import ThreePassBase from "./passes/ThreePassBase";
|
|
5
|
+
|
|
6
|
+
export default abstract class ThreeEffectComposerBase extends EffectComposer {
|
|
7
|
+
protected static readonly _DEFAULT_RENDER_TARGET_SAMPLES = 4;
|
|
8
|
+
protected static readonly _DEFAULT_RENDER_TARGET_TYPE = HalfFloatType;
|
|
9
|
+
|
|
10
|
+
protected readonly _passes: Pass[];
|
|
11
|
+
private declare _renderPass: RenderPass;
|
|
12
|
+
|
|
13
|
+
constructor(renderer: WebGLRenderer, scene: Scene, camera: Camera, options: { samples?: number, type?: TextureDataType } = {}) {
|
|
14
|
+
const samples = options.samples ?? ThreeEffectComposerBase._DEFAULT_RENDER_TARGET_SAMPLES;
|
|
15
|
+
const type = options.type ?? ThreeEffectComposerBase._DEFAULT_RENDER_TARGET_TYPE;
|
|
16
|
+
super(renderer, new WebGLRenderTarget(DomResizeManager.width, DomResizeManager.height, { samples, type }));
|
|
17
|
+
|
|
18
|
+
this._createRenderPass(scene, camera);
|
|
19
|
+
this._passes = [];
|
|
20
|
+
this._addPasses();
|
|
21
|
+
this._addPass(new OutputPass());
|
|
22
|
+
this.resize();
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
public setCamera(camera: Camera): void {
|
|
26
|
+
this._renderPass.camera = camera;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
public resize(): void {
|
|
30
|
+
this.setSize(DomResizeManager.width, DomResizeManager.height);
|
|
31
|
+
this.setPixelRatio(DomResizeManager.pixelRatio);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
private _createRenderPass(scene: Scene, camera: Camera): void {
|
|
35
|
+
this._renderPass = new RenderPass(scene, camera);
|
|
36
|
+
this.addPass(this._renderPass);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
protected _addPasses(): void {
|
|
40
|
+
//
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
protected _addPass(pass: Pass): void {
|
|
44
|
+
this.addPass(pass);
|
|
45
|
+
this._passes.push(pass);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
public update(dt: number): void {
|
|
49
|
+
for (const pass of this._passes) {
|
|
50
|
+
if (pass instanceof ThreePassBase) pass.update(dt);
|
|
51
|
+
}
|
|
52
|
+
this.render(dt);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import TemplatePassFragmentShader from '../../../shaders/threes/composers/templates/TemplatePassFragmentShader.glsl';
|
|
2
|
+
import TemplatePassVertexShader from '../../../shaders/threes/composers/templates/TemplatePassVertexShader.glsl';
|
|
3
|
+
import ThreePassBase from "../bases/passes/ThreePassBase";
|
|
4
|
+
|
|
5
|
+
export default class TemplateThreePass extends ThreePassBase {
|
|
6
|
+
constructor() {
|
|
7
|
+
super({
|
|
8
|
+
uniforms: {
|
|
9
|
+
tDiffuse: { value: null },
|
|
10
|
+
uTime: { value: null },
|
|
11
|
+
},
|
|
12
|
+
vertexShader: TemplatePassVertexShader,
|
|
13
|
+
fragmentShader: TemplatePassFragmentShader,
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
this.uniforms.uTime.value = 0;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
public update(dt: number): void {
|
|
20
|
+
this.uniforms.uTime.value += dt;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -1,15 +1,10 @@
|
|
|
1
|
-
const HTMLViewId = {
|
|
2
|
-
HTML_LOADER: 'HTML_LOADER',
|
|
3
|
-
} as const;
|
|
4
|
-
|
|
5
1
|
const ThreeViewId = {
|
|
6
2
|
THREE_LOADER: 'THREE_LOADER',
|
|
7
|
-
|
|
8
|
-
|
|
3
|
+
THREE_WORLD_1: 'THREE_WORLD_1',
|
|
4
|
+
THREE_WORLD_2: 'THREE_WORLD_2',
|
|
9
5
|
} as const;
|
|
10
6
|
|
|
11
7
|
export const ViewId = {
|
|
12
|
-
...HTMLViewId,
|
|
13
8
|
...ThreeViewId,
|
|
14
9
|
} as const;
|
|
15
10
|
|
|
@@ -4,7 +4,7 @@ import LoaderThreeCameraController from '../../../cameras/threes/LoaderThreeCame
|
|
|
4
4
|
import { CameraId } from '../../../constants/experiences/CameraId';
|
|
5
5
|
import LoaderManager from '../../../managers/LoaderManager';
|
|
6
6
|
import ThreeCameraControllerManager from '../../../managers/threes/ThreeCameraControllerManager';
|
|
7
|
-
import
|
|
7
|
+
import LoaderThreeWebGLRenderer from '../../../renderers/threes/LoaderThreeWebGLRenderer';
|
|
8
8
|
import LoaderThreeView from '../../../views/threes/loaders/LoaderThreeView';
|
|
9
9
|
import ThreeAppBase from './bases/ThreeAppBase';
|
|
10
10
|
|
|
@@ -27,7 +27,7 @@ class LoaderThreeApp extends ThreeAppBase {
|
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
protected override _generateRenderers(): void {
|
|
30
|
-
this._renderer = new
|
|
30
|
+
this._renderer = new LoaderThreeWebGLRenderer(
|
|
31
31
|
this._scene,
|
|
32
32
|
ThreeCameraControllerManager.get(CameraId.THREE_LOADER).camera
|
|
33
33
|
);
|
|
@@ -8,7 +8,7 @@ import { DebugGuiTitle } from '../../../constants/experiences/DebugGuiTitle';
|
|
|
8
8
|
import { ViewId } from '../../../constants/experiences/ViewId';
|
|
9
9
|
import DebugManager from '../../../managers/DebugManager';
|
|
10
10
|
import ThreeCameraControllerManager from '../../../managers/threes/ThreeCameraControllerManager';
|
|
11
|
-
import
|
|
11
|
+
import MainThreeWebGLRenderer from '../../../renderers/threes/MainThreeWebGLRenderer';
|
|
12
12
|
import World2ThreeView from '../../../views/threes/worlds/World2ThreeView';
|
|
13
13
|
import WorldThreeView from '../../../views/threes/worlds/WorldThreeView';
|
|
14
14
|
import ThreeAppBase from './bases/ThreeAppBase';
|
|
@@ -25,6 +25,7 @@ class MainThreeApp extends ThreeAppBase {
|
|
|
25
25
|
];
|
|
26
26
|
|
|
27
27
|
declare private _debugWireframeMaterial: MeshStandardMaterial;
|
|
28
|
+
declare private _debugPreviousCameraId: CameraId;
|
|
28
29
|
|
|
29
30
|
constructor() {
|
|
30
31
|
super();
|
|
@@ -59,6 +60,7 @@ class MainThreeApp extends ThreeAppBase {
|
|
|
59
60
|
this._cameraController = ThreeCameraControllerManager.get(CameraId.THREE_MAIN);
|
|
60
61
|
|
|
61
62
|
if (DebugManager.isActive) {
|
|
63
|
+
this._debugPreviousCameraId = this._cameraController.cameraId;
|
|
62
64
|
ThreeCameraControllerManager.add(new DebugThreeCameraController());
|
|
63
65
|
}
|
|
64
66
|
|
|
@@ -66,19 +68,19 @@ class MainThreeApp extends ThreeAppBase {
|
|
|
66
68
|
}
|
|
67
69
|
|
|
68
70
|
protected override _generateRenderers(): void {
|
|
69
|
-
this._renderer = new
|
|
71
|
+
this._renderer = new MainThreeWebGLRenderer(this._scene, this._cameraController.camera, { antialias: true });
|
|
70
72
|
this._domElementContainer.appendChild(this._renderer.domElement);
|
|
71
73
|
}
|
|
72
74
|
|
|
73
75
|
protected override _declareViews(): void {
|
|
74
|
-
this._viewBuilder.set(ViewId.
|
|
75
|
-
this._viewBuilder.set(ViewId.
|
|
76
|
+
this._viewBuilder.set(ViewId.THREE_WORLD_1, WorldThreeView);
|
|
77
|
+
this._viewBuilder.set(ViewId.THREE_WORLD_2, World2ThreeView);
|
|
76
78
|
|
|
77
79
|
if (DebugManager.isActive) {
|
|
78
80
|
const viewsDebug = DebugManager.getGuiFolder(DebugGuiTitle.THREE_VIEWS)
|
|
79
81
|
viewsDebug.add({ resetCurrentView: () => this._currentView.reset() }, 'resetCurrentView');
|
|
80
|
-
viewsDebug.add({ createWorld1: () => this.setCurrentView(ViewId.
|
|
81
|
-
viewsDebug.add({ createWorld2: () => this.setCurrentView(ViewId.
|
|
82
|
+
viewsDebug.add({ createWorld1: () => this.setCurrentView(ViewId.THREE_WORLD_1) }, 'createWorld1');
|
|
83
|
+
viewsDebug.add({ createWorld2: () => this.setCurrentView(ViewId.THREE_WORLD_2) }, 'createWorld2');
|
|
82
84
|
}
|
|
83
85
|
}
|
|
84
86
|
|
|
@@ -91,8 +93,9 @@ class MainThreeApp extends ThreeAppBase {
|
|
|
91
93
|
private readonly _onKeyDown = (_e: KeyboardEvent): void => {
|
|
92
94
|
if (DebugManager.isActive) {
|
|
93
95
|
if (DomKeyboardManager.areAllKeysDown(MainThreeApp._TOGGLE_SWITCH_TO_DEBUG_CAMERA_KEYS)) {
|
|
96
|
+
if (this._cameraController.cameraId !== CameraId.THREE_DEBUG) this._debugPreviousCameraId = this._cameraController.cameraId;
|
|
94
97
|
ThreeCameraControllerManager.setActiveCamera(
|
|
95
|
-
this._cameraController.cameraId === CameraId.
|
|
98
|
+
this._cameraController.cameraId === CameraId.THREE_DEBUG ? this._debugPreviousCameraId : CameraId.THREE_DEBUG
|
|
96
99
|
);
|
|
97
100
|
} else if (DomKeyboardManager.areAllKeysDown(MainThreeApp._TOGGLE_WIREFRAME_KEYS)) {
|
|
98
101
|
if (this._scene.overrideMaterial === null) {
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { DomResizeManager, TickerManager } from '@benjos/cookware';
|
|
2
|
-
import { Scene } from 'three';
|
|
3
|
-
import ThreeCameraControllerBase from '../../../../cameras/threes/bases/ThreeCameraControllerBase';
|
|
4
|
-
import { ViewId } from '../../../../constants/experiences/ViewId';
|
|
2
|
+
import type { Scene } from 'three';
|
|
3
|
+
import type ThreeCameraControllerBase from '../../../../cameras/threes/bases/ThreeCameraControllerBase';
|
|
4
|
+
import type { ViewId } from '../../../../constants/experiences/ViewId';
|
|
5
5
|
import LoaderManager from '../../../../managers/LoaderManager';
|
|
6
|
-
import
|
|
7
|
-
import ThreeViewBase from '../../../../views/threes/bases/ThreeViewBase';
|
|
6
|
+
import type ThreeWebGLRendererBase from '../../../../renderers/threes/bases/ThreeWebGLRendererBase';
|
|
7
|
+
import type ThreeViewBase from '../../../../views/threes/bases/ThreeViewBase';
|
|
8
8
|
|
|
9
9
|
export default abstract class ThreeAppBase {
|
|
10
10
|
declare protected _domElementContainer: HTMLElement;
|
|
11
11
|
declare protected _scene: Scene;
|
|
12
12
|
declare protected _cameraController: ThreeCameraControllerBase;
|
|
13
|
-
declare protected _renderer:
|
|
13
|
+
declare protected _renderer: ThreeWebGLRendererBase;
|
|
14
14
|
protected readonly _views: ThreeViewBase[];
|
|
15
15
|
protected readonly _viewBuilder: Map<ViewId, new () => ThreeViewBase>;
|
|
16
16
|
declare protected _currentView: ThreeViewBase;
|
|
@@ -117,7 +117,7 @@ export default abstract class ThreeAppBase {
|
|
|
117
117
|
public get scene(): Scene {
|
|
118
118
|
return this._scene;
|
|
119
119
|
}
|
|
120
|
-
public get renderer():
|
|
120
|
+
public get renderer(): ThreeWebGLRendererBase {
|
|
121
121
|
return this._renderer;
|
|
122
122
|
}
|
|
123
123
|
public get cameraController(): ThreeCameraControllerBase {
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { DomKeyboardManager } from '@benjos/cookware';
|
|
2
2
|
import { KeyboardConstant } from '@benjos/spices';
|
|
3
3
|
import GUI from 'lil-gui';
|
|
4
|
+
import Stats from 'stats.js';
|
|
4
5
|
import { ThreePerf } from 'three-perf';
|
|
5
|
-
import { DebugGuiTitle } from '../constants/experiences/DebugGuiTitle';
|
|
6
|
+
import type { DebugGuiTitle } from '../constants/experiences/DebugGuiTitle';
|
|
6
7
|
import MainThreeApp from '../engines/threes/app/MainThreeApp';
|
|
7
8
|
|
|
8
9
|
class DebugManager {
|
|
@@ -16,8 +17,10 @@ class DebugManager {
|
|
|
16
17
|
KeyboardConstant.CODES.KEY_H,
|
|
17
18
|
];
|
|
18
19
|
|
|
20
|
+
private _isDebugVisible: boolean = true;
|
|
19
21
|
declare private _gui: GUI;
|
|
20
22
|
declare private _threePerf: ThreePerf;
|
|
23
|
+
declare private _stats: Stats;
|
|
21
24
|
|
|
22
25
|
public init(): void {
|
|
23
26
|
if (this.isActive) {
|
|
@@ -46,6 +49,12 @@ class DebugManager {
|
|
|
46
49
|
});
|
|
47
50
|
};
|
|
48
51
|
|
|
52
|
+
private _initStats = (): void => {
|
|
53
|
+
this._stats = new Stats();
|
|
54
|
+
this._stats.showPanel(0);
|
|
55
|
+
document.body.appendChild(this._stats.dom);
|
|
56
|
+
};
|
|
57
|
+
|
|
49
58
|
private _addGuiFolder(title: DebugGuiTitle): GUI {
|
|
50
59
|
return this._gui.addFolder(title);
|
|
51
60
|
}
|
|
@@ -56,19 +65,24 @@ class DebugManager {
|
|
|
56
65
|
return gui;
|
|
57
66
|
}
|
|
58
67
|
|
|
59
|
-
public
|
|
68
|
+
public beginPerf(): void {
|
|
60
69
|
if (!this._threePerf) this._initThreePerf();
|
|
70
|
+
if (!this._stats) this._initStats();
|
|
71
|
+
this._stats.begin();
|
|
61
72
|
this._threePerf.begin();
|
|
62
73
|
}
|
|
63
74
|
|
|
64
|
-
public
|
|
75
|
+
public endPerf(): void {
|
|
76
|
+
this._stats.end();
|
|
65
77
|
this._threePerf.end();
|
|
66
78
|
}
|
|
67
79
|
|
|
68
80
|
private readonly _onKeyDown = (_e: KeyboardEvent): void => {
|
|
69
81
|
if (DomKeyboardManager.areAllKeysDown(DebugManager._TOGGLE_HIDDEN_KEYS)) {
|
|
70
|
-
this.
|
|
71
|
-
this.
|
|
82
|
+
this._isDebugVisible = !this._isDebugVisible;
|
|
83
|
+
this._gui.show(this._isDebugVisible);
|
|
84
|
+
if (this._threePerf) this._threePerf.visible = this._isDebugVisible;
|
|
85
|
+
if (this._stats) this._stats.dom.style.display = this._isDebugVisible ? 'block' : 'none';
|
|
72
86
|
}
|
|
73
87
|
};
|
|
74
88
|
|
|
@@ -11,7 +11,7 @@ class LoaderManager {
|
|
|
11
11
|
private _elapsed = 0;
|
|
12
12
|
private _hasAssetsToLoad = false;
|
|
13
13
|
private _assetsFinished = false;
|
|
14
|
-
private
|
|
14
|
+
private _transitionResolves: (() => void)[] = [];
|
|
15
15
|
private _showTransition: (() => Promise<void>) | null = null;
|
|
16
16
|
private _hideTransition: (() => Promise<void>) | null = null;
|
|
17
17
|
|
|
@@ -85,7 +85,8 @@ class LoaderManager {
|
|
|
85
85
|
this._progress = 1;
|
|
86
86
|
this.onProgress.execute();
|
|
87
87
|
TickerManager.remove(this._onTransitionTick);
|
|
88
|
-
|
|
88
|
+
this._transitionResolves.forEach((resolve) => resolve());
|
|
89
|
+
this._transitionResolves = [];
|
|
89
90
|
}
|
|
90
91
|
};
|
|
91
92
|
|
|
@@ -110,11 +111,9 @@ class LoaderManager {
|
|
|
110
111
|
}
|
|
111
112
|
|
|
112
113
|
await new Promise<void>((resolve) => {
|
|
113
|
-
this.
|
|
114
|
+
this._transitionResolves.push(resolve);
|
|
114
115
|
TickerManager.add(this._onTransitionTick);
|
|
115
116
|
});
|
|
116
|
-
|
|
117
|
-
this._transitionResolve = null;
|
|
118
117
|
}
|
|
119
118
|
|
|
120
119
|
if (onReady) await onReady();
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { Action, AssetUtils } from '@benjos/cookware';
|
|
2
2
|
import {
|
|
3
|
-
DataTexture,
|
|
4
3
|
EquirectangularRefractionMapping,
|
|
5
4
|
LinearSRGBColorSpace,
|
|
6
5
|
RepeatWrapping,
|
|
7
|
-
Texture,
|
|
8
6
|
TextureLoader,
|
|
9
7
|
type ColorSpace,
|
|
8
|
+
type DataTexture,
|
|
10
9
|
type Mapping,
|
|
10
|
+
type Texture,
|
|
11
11
|
type Wrapping,
|
|
12
12
|
} from 'three';
|
|
13
|
-
import { DRACOLoader,
|
|
13
|
+
import { DRACOLoader, FontLoader, GLTFLoader, HDRLoader, type Font, type GLTF } from 'three/examples/jsm/Addons.js';
|
|
14
14
|
import type { AssetId } from '../../constants/experiences/AssetId';
|
|
15
15
|
import { AssetType } from '../../types/assetTypes';
|
|
16
16
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { DomPointerManager } from '@benjos/cookware';
|
|
2
|
-
import {
|
|
2
|
+
import { Raycaster, Vector2, type Intersection, type Object3D, type Object3DEventMap } from 'three';
|
|
3
3
|
import MainThreeApp from '../../engines/threes/app/MainThreeApp';
|
|
4
4
|
|
|
5
5
|
class ThreeRaycasterManager {
|
|
@@ -1,22 +1,23 @@
|
|
|
1
1
|
import gsap from 'gsap';
|
|
2
|
-
import { Color, ShaderMaterial } from 'three';
|
|
2
|
+
import { Color, ShaderMaterial, Uniform } from 'three';
|
|
3
3
|
import LoaderFragmentShader from '../../../shaders/threes/loaders/LoaderFragmentShader.glsl';
|
|
4
4
|
import LoaderVertexShader from '../../../shaders/threes/loaders/LoaderVertexShader.glsl';
|
|
5
5
|
|
|
6
|
-
export default class
|
|
7
|
-
private static readonly _DEFAULT_UNIFORMS_ALPHA: number = 1;
|
|
6
|
+
export default class LoaderThreeMaterial extends ShaderMaterial {
|
|
8
7
|
private static readonly _DEFAULT_UNIFORMS_COLOR: number = 0x3f79f3;
|
|
9
8
|
private static readonly _GSAP_DURATION_FADE_IN: number = 0.5;
|
|
10
9
|
private static readonly _GSAP_EASE_FADE_IN: string = 'power2.out';
|
|
11
10
|
private static readonly _GSAP_DURATION_FADE_OUT: number = 1.5;
|
|
12
11
|
private static readonly _GSAP_EASE_FADE_OUT: string = 'power2.in';
|
|
13
12
|
|
|
13
|
+
private _isFirstLoad: boolean = true;
|
|
14
|
+
|
|
14
15
|
constructor() {
|
|
15
16
|
super({
|
|
16
17
|
transparent: true,
|
|
17
18
|
uniforms: {
|
|
18
|
-
uAlpha:
|
|
19
|
-
uColor:
|
|
19
|
+
uAlpha: new Uniform(1),
|
|
20
|
+
uColor: new Uniform(new Color(LoaderThreeMaterial._DEFAULT_UNIFORMS_COLOR)),
|
|
20
21
|
},
|
|
21
22
|
vertexShader: LoaderVertexShader,
|
|
22
23
|
fragmentShader: LoaderFragmentShader,
|
|
@@ -25,11 +26,13 @@ export default class LoaderMaterial extends ShaderMaterial {
|
|
|
25
26
|
|
|
26
27
|
public async show(): Promise<void> {
|
|
27
28
|
gsap.killTweensOf(this.uniforms.uAlpha);
|
|
29
|
+
this.uniforms.uAlpha.value = this._isFirstLoad ? 1 : 0;
|
|
28
30
|
await gsap.to(this.uniforms.uAlpha, {
|
|
29
31
|
value: 1,
|
|
30
|
-
duration:
|
|
31
|
-
ease:
|
|
32
|
+
duration: this._isFirstLoad ? 0 : LoaderThreeMaterial._GSAP_DURATION_FADE_IN,
|
|
33
|
+
ease: LoaderThreeMaterial._GSAP_EASE_FADE_IN,
|
|
32
34
|
});
|
|
35
|
+
this._isFirstLoad = false;
|
|
33
36
|
}
|
|
34
37
|
|
|
35
38
|
public async hide(): Promise<void> {
|
|
@@ -37,8 +40,8 @@ export default class LoaderMaterial extends ShaderMaterial {
|
|
|
37
40
|
this.uniforms.uAlpha.value = 1;
|
|
38
41
|
await gsap.to(this.uniforms.uAlpha, {
|
|
39
42
|
value: 0,
|
|
40
|
-
duration:
|
|
41
|
-
ease:
|
|
43
|
+
duration: LoaderThreeMaterial._GSAP_DURATION_FADE_OUT,
|
|
44
|
+
ease: LoaderThreeMaterial._GSAP_EASE_FADE_OUT,
|
|
42
45
|
});
|
|
43
46
|
}
|
|
44
47
|
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { NoToneMapping, SRGBColorSpace, type Camera, type Scene, type WebGLRendererParameters } from 'three';
|
|
2
|
+
import ThreeWebGLRendererBase from './bases/ThreeWebGLRendererBase';
|
|
3
|
+
|
|
4
|
+
export default class LoaderThreeWebGLRenderer extends ThreeWebGLRendererBase {
|
|
5
|
+
private static readonly _DEFAULT_TONE_MAPPING = NoToneMapping;
|
|
6
|
+
private static readonly _DEFAULT_OUTPUT_COLOR_SPACE = SRGBColorSpace;
|
|
7
|
+
private static readonly _DEFAULT_TONE_MAPPING_EXPOSURE = 1;
|
|
8
|
+
private static readonly _DEFAULT_CLEAR_COLOR = 0x000000;
|
|
9
|
+
private static readonly _DEFAULT_CLEAR_ALPHA = 0;
|
|
10
|
+
|
|
11
|
+
constructor(scene: Scene, camera: Camera, parameters: WebGLRendererParameters = {}) {
|
|
12
|
+
super(scene, camera, parameters);
|
|
13
|
+
this.toneMapping = LoaderThreeWebGLRenderer._DEFAULT_TONE_MAPPING;
|
|
14
|
+
this.toneMappingExposure = LoaderThreeWebGLRenderer._DEFAULT_TONE_MAPPING_EXPOSURE;
|
|
15
|
+
this.outputColorSpace = LoaderThreeWebGLRenderer._DEFAULT_OUTPUT_COLOR_SPACE;
|
|
16
|
+
this.setClearColor(LoaderThreeWebGLRenderer._DEFAULT_CLEAR_COLOR, LoaderThreeWebGLRenderer._DEFAULT_CLEAR_ALPHA);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -1,41 +1,42 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ACESFilmicToneMapping,
|
|
3
3
|
AgXToneMapping,
|
|
4
|
-
Camera,
|
|
5
4
|
CineonToneMapping,
|
|
6
5
|
CustomToneMapping,
|
|
7
6
|
LinearSRGBColorSpace,
|
|
8
7
|
LinearToneMapping,
|
|
9
8
|
NeutralToneMapping,
|
|
10
9
|
NoToneMapping,
|
|
11
|
-
|
|
10
|
+
PCFShadowMap,
|
|
12
11
|
ReinhardToneMapping,
|
|
13
|
-
Scene,
|
|
14
12
|
SRGBColorSpace,
|
|
13
|
+
type Camera,
|
|
15
14
|
type ColorSpace,
|
|
15
|
+
type Scene,
|
|
16
16
|
type ToneMapping,
|
|
17
|
-
type WebGLRendererParameters
|
|
17
|
+
type WebGLRendererParameters
|
|
18
18
|
} from 'three';
|
|
19
|
+
import MainThreeEffectComposer from '../../composers/threes/MainThreeEffectComposer';
|
|
19
20
|
import { DebugGuiTitle } from '../../constants/experiences/DebugGuiTitle';
|
|
20
21
|
import DebugManager from '../../managers/DebugManager';
|
|
21
|
-
import
|
|
22
|
+
import ThreeWebGLRendererBase from './bases/ThreeWebGLRendererBase';
|
|
22
23
|
|
|
23
|
-
export default class
|
|
24
|
+
export default class MainThreeWebGLRenderer extends ThreeWebGLRendererBase {
|
|
24
25
|
private static readonly _DEFAULT_TONE_MAPPING = CineonToneMapping;
|
|
25
26
|
private static readonly _DEFAULT_OUTPUT_COLOR_SPACE = SRGBColorSpace;
|
|
26
|
-
private static readonly _DEFAULT_SHADOW_MAP_TYPE =
|
|
27
|
+
private static readonly _DEFAULT_SHADOW_MAP_TYPE = PCFShadowMap;
|
|
27
28
|
private static readonly _DEFAULT_TONE_MAPPING_EXPOSURE = 1;
|
|
28
29
|
private static readonly _DEFAULT_CLEAR_COLOR = 0xfafafa;
|
|
29
30
|
private static readonly _DEFAULT_CLEAR_ALPHA = 0;
|
|
30
31
|
|
|
31
32
|
constructor(scene: Scene, camera: Camera, parameters: WebGLRendererParameters = {}) {
|
|
32
33
|
super(scene, camera, parameters);
|
|
33
|
-
this.toneMapping =
|
|
34
|
-
this.toneMappingExposure =
|
|
35
|
-
this.outputColorSpace =
|
|
34
|
+
this.toneMapping = MainThreeWebGLRenderer._DEFAULT_TONE_MAPPING;
|
|
35
|
+
this.toneMappingExposure = MainThreeWebGLRenderer._DEFAULT_TONE_MAPPING_EXPOSURE;
|
|
36
|
+
this.outputColorSpace = MainThreeWebGLRenderer._DEFAULT_OUTPUT_COLOR_SPACE;
|
|
36
37
|
this.shadowMap.enabled = true;
|
|
37
|
-
this.shadowMap.type =
|
|
38
|
-
this.setClearColor(
|
|
38
|
+
this.shadowMap.type = MainThreeWebGLRenderer._DEFAULT_SHADOW_MAP_TYPE;
|
|
39
|
+
this.setClearColor(MainThreeWebGLRenderer._DEFAULT_CLEAR_COLOR, MainThreeWebGLRenderer._DEFAULT_CLEAR_ALPHA);
|
|
39
40
|
|
|
40
41
|
if (DebugManager.isActive) {
|
|
41
42
|
const rendererFolder = DebugManager.getGuiFolder(DebugGuiTitle.THREE_RENDERER)
|
|
@@ -59,13 +60,22 @@ export default class Renderer extends WebGLRendererBase {
|
|
|
59
60
|
.onChange((value: ColorSpace) => {
|
|
60
61
|
this.outputColorSpace = value;
|
|
61
62
|
});
|
|
63
|
+
const postProcProxy = { active: this._isPostProcessingActive };
|
|
64
|
+
rendererFolder
|
|
65
|
+
.add(postProcProxy, 'active')
|
|
66
|
+
.name('post-processing')
|
|
67
|
+
.onChange((value: boolean) => this.setIsPostProcessingActive(value));
|
|
62
68
|
}
|
|
63
69
|
}
|
|
64
70
|
|
|
71
|
+
protected override _generateComposers(): void {
|
|
72
|
+
this._composer = new MainThreeEffectComposer(this, this._scene, this._camera);
|
|
73
|
+
}
|
|
74
|
+
|
|
65
75
|
public override update(dt: number): void {
|
|
66
76
|
const isDebug = DebugManager.isActive;
|
|
67
|
-
if (isDebug) DebugManager.
|
|
77
|
+
if (isDebug) DebugManager.beginPerf();
|
|
68
78
|
super.update(dt);
|
|
69
|
-
if (isDebug) DebugManager.
|
|
79
|
+
if (isDebug) DebugManager.endPerf();
|
|
70
80
|
}
|
|
71
81
|
}
|