@combeenation/3d-viewer 4.2.0 → 5.0.0-alpha1
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 +2 -2
- package/dist/lib-cjs/api/classes/dottedPath.js +2 -5
- package/dist/lib-cjs/api/classes/dottedPath.js.map +1 -1
- package/dist/lib-cjs/api/classes/element.d.ts +9 -0
- package/dist/lib-cjs/api/classes/element.js +114 -66
- package/dist/lib-cjs/api/classes/element.js.map +1 -1
- package/dist/lib-cjs/api/classes/event.js.map +1 -1
- package/dist/lib-cjs/api/classes/eventBroadcaster.js.map +1 -1
- package/dist/lib-cjs/api/classes/parameter.js +3 -2
- package/dist/lib-cjs/api/classes/parameter.js.map +1 -1
- package/dist/lib-cjs/api/classes/parameterObservable.js.map +1 -1
- package/dist/lib-cjs/api/classes/parameterizable.js.map +1 -1
- package/dist/lib-cjs/api/classes/placementAnimation.d.ts +1 -0
- package/dist/lib-cjs/api/classes/placementAnimation.js +2 -2
- package/dist/lib-cjs/api/classes/placementAnimation.js.map +1 -1
- package/dist/lib-cjs/api/classes/variant.js +26 -19
- package/dist/lib-cjs/api/classes/variant.js.map +1 -1
- package/dist/lib-cjs/api/classes/variantInstance.js +19 -19
- package/dist/lib-cjs/api/classes/variantInstance.js.map +1 -1
- package/dist/lib-cjs/api/classes/variantParameterizable.js.map +1 -1
- package/dist/lib-cjs/api/classes/viewer.d.ts +40 -1
- package/dist/lib-cjs/api/classes/viewer.js +144 -48
- package/dist/lib-cjs/api/classes/viewer.js.map +1 -1
- package/dist/lib-cjs/api/classes/viewerLight.js +25 -25
- package/dist/lib-cjs/api/classes/viewerLight.js.map +1 -1
- package/dist/lib-cjs/api/internal/debugViewer.js +1 -2
- package/dist/lib-cjs/api/internal/debugViewer.js.map +1 -1
- package/dist/lib-cjs/api/internal/lensRendering.js.map +1 -1
- package/dist/lib-cjs/api/internal/sceneSetup.js +25 -22
- package/dist/lib-cjs/api/internal/sceneSetup.js.map +1 -1
- package/dist/lib-cjs/api/manager/animationManager.js +24 -15
- package/dist/lib-cjs/api/manager/animationManager.js.map +1 -1
- package/dist/lib-cjs/api/manager/gltfExportManager.d.ts +40 -10
- package/dist/lib-cjs/api/manager/gltfExportManager.js +135 -20
- package/dist/lib-cjs/api/manager/gltfExportManager.js.map +1 -1
- package/dist/lib-cjs/api/manager/sceneManager.js +3 -3
- package/dist/lib-cjs/api/manager/sceneManager.js.map +1 -1
- package/dist/lib-cjs/api/manager/variantInstanceManager.js +10 -7
- package/dist/lib-cjs/api/manager/variantInstanceManager.js.map +1 -1
- package/dist/lib-cjs/api/store/specStorage.js.map +1 -1
- package/dist/lib-cjs/api/util/babylonHelper.d.ts +1 -1
- package/dist/lib-cjs/api/util/babylonHelper.js +12 -15
- package/dist/lib-cjs/api/util/babylonHelper.js.map +1 -1
- package/dist/lib-cjs/api/util/globalTypes.d.ts +41 -25
- package/dist/lib-cjs/api/util/resourceHelper.js +3 -1
- package/dist/lib-cjs/api/util/resourceHelper.js.map +1 -1
- package/dist/lib-cjs/api/util/stringHelper.d.ts +1 -1
- package/dist/lib-cjs/api/util/stringHelper.js +2 -2
- package/dist/lib-cjs/api/util/stringHelper.js.map +1 -1
- package/dist/lib-cjs/api/util/structureHelper.d.ts +9 -0
- package/dist/lib-cjs/api/util/structureHelper.js +45 -0
- package/dist/lib-cjs/api/util/structureHelper.js.map +1 -0
- package/dist/lib-cjs/index.js +1 -0
- package/dist/lib-cjs/index.js.map +1 -1
- package/package.json +11 -7
- package/src/api/classes/animationInterface.ts +4 -6
- package/src/api/classes/dottedPath.ts +179 -187
- package/src/api/classes/element.ts +665 -621
- package/src/api/classes/event.ts +310 -313
- package/src/api/classes/eventBroadcaster.ts +47 -49
- package/src/api/classes/parameter.ts +394 -397
- package/src/api/classes/parameterObservable.ts +84 -83
- package/src/api/classes/parameterizable.ts +71 -73
- package/src/api/classes/placementAnimation.ts +130 -130
- package/src/api/classes/variant.ts +806 -778
- package/src/api/classes/variantInstance.ts +60 -52
- package/src/api/classes/variantParameterizable.ts +72 -67
- package/src/api/classes/viewer.ts +592 -490
- package/src/api/classes/viewerLight.ts +301 -301
- package/src/api/internal/debugViewer.ts +61 -53
- package/src/api/internal/lensRendering.ts +2 -3
- package/src/api/internal/sceneSetup.ts +144 -137
- package/src/api/manager/animationManager.ts +122 -97
- package/src/api/manager/gltfExportManager.ts +192 -0
- package/src/api/manager/sceneManager.ts +83 -86
- package/src/api/manager/variantInstanceManager.ts +234 -224
- package/src/api/store/specStorage.ts +48 -51
- package/src/api/util/babylonHelper.ts +329 -325
- package/src/api/util/globalTypes.ts +260 -246
- package/src/api/util/resourceHelper.ts +97 -109
- package/src/api/util/stringHelper.ts +13 -16
- package/src/api/util/structureHelper.ts +43 -0
- package/src/buildinfo.json +2 -2
- package/src/commonjs.tsconfig.json +8 -11
- package/src/declaration.tsconfig.json +6 -8
- package/src/dev.ts +28 -29
- package/src/es6.tsconfig.json +8 -11
- package/src/index.ts +40 -39
- package/src/pagesconfig.json +4 -0
- package/src/tsconfig.json +30 -41
- package/src/tsconfig.types.json +8 -9
- package/src/types.d.ts +0 -1
- package/dist/lib-cjs/api/classes/elementParameterizable.d.ts +0 -14
- package/dist/lib-cjs/api/classes/elementParameterizable.js +0 -135
- package/dist/lib-cjs/api/classes/elementParameterizable.js.map +0 -1
|
@@ -7,46 +7,51 @@ import { Viewer } from '../classes/viewer';
|
|
|
7
7
|
import { Event } from '../classes/event';
|
|
8
8
|
|
|
9
9
|
export class DebugViewer extends Viewer {
|
|
10
|
+
constructor(canvas: HTMLCanvasElement, data: string | StructureJson) {
|
|
11
|
+
super(canvas, data);
|
|
12
|
+
}
|
|
10
13
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
+
public async bootstrap(): Promise<Viewer> {
|
|
15
|
+
for (const event of Event.all) {
|
|
16
|
+
this.eventEmitter.addListener(event, (...args) => console.debug(`Emitting ${event}`, ...args));
|
|
17
|
+
}
|
|
18
|
+
for (const event of [
|
|
19
|
+
Event.VARIANT_INSTANCE_DESTROYED,
|
|
20
|
+
Event.VARIANT_INSTANCE_CREATED,
|
|
21
|
+
Event.VARIANT_INSTANCE_CLONED,
|
|
22
|
+
Event.VARIANT_PARAMETER_COMMITTED,
|
|
23
|
+
]) {
|
|
24
|
+
this.eventEmitter.addListener(event, this.instanceDebugger.bind(this));
|
|
25
|
+
}
|
|
26
|
+
return super.bootstrap();
|
|
27
|
+
}
|
|
14
28
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
this.eventEmitter.addListener( event, ( ...args ) => console.debug( `Emitting ${event}`, ...args ) );
|
|
18
|
-
}
|
|
19
|
-
for( const event of [
|
|
20
|
-
Event.VARIANT_INSTANCE_DESTROYED,
|
|
21
|
-
Event.VARIANT_INSTANCE_CREATED,
|
|
22
|
-
Event.VARIANT_INSTANCE_CLONED,
|
|
23
|
-
Event.VARIANT_PARAMETER_COMMITTED
|
|
24
|
-
] ) {
|
|
25
|
-
this.eventEmitter.addListener( event, this.instanceDebugger.bind( this ) );
|
|
26
|
-
}
|
|
27
|
-
return super.bootstrap();
|
|
28
|
-
}
|
|
29
|
+
protected async initScene(): Promise<Scene> {
|
|
30
|
+
const scene = await super.initScene();
|
|
29
31
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
+
scene.getEngine().runRenderLoop(() => {
|
|
33
|
+
this.fpsDebugger();
|
|
34
|
+
});
|
|
32
35
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
} );
|
|
36
|
+
return scene;
|
|
37
|
+
}
|
|
36
38
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
39
|
+
protected instanceDebugger(instance: VariantInstance) {
|
|
40
|
+
const instances: string[] = [];
|
|
41
|
+
this.variantInstances.all.forEach(variantInstance => {
|
|
42
|
+
instances.push(
|
|
43
|
+
`${variantInstance.name}${variantInstance.variant.visible ? '' : ' [hidden]'}${
|
|
44
|
+
variantInstance.variant.highlighted ? ' [highlighted]' : ''
|
|
45
|
+
}`
|
|
46
|
+
);
|
|
47
|
+
});
|
|
48
|
+
let debugContainer = document.getElementById('cyledge-combeenation-3d-viewer-instance-debugger');
|
|
49
|
+
if (!debugContainer) {
|
|
50
|
+
debugContainer = document.createElement('pre');
|
|
51
|
+
debugContainer.setAttribute('id', 'cyledge-combeenation-3d-viewer-instance-debugger');
|
|
52
|
+
debugContainer.setAttribute(
|
|
53
|
+
'style',
|
|
54
|
+
`
|
|
50
55
|
background: #454545;
|
|
51
56
|
color: #fff;
|
|
52
57
|
position: absolute;
|
|
@@ -54,18 +59,21 @@ export class DebugViewer extends Viewer {
|
|
|
54
59
|
right: 0;
|
|
55
60
|
padding: 10px;
|
|
56
61
|
margin: 0;
|
|
57
|
-
`
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
+
`
|
|
63
|
+
);
|
|
64
|
+
document.body.appendChild(debugContainer);
|
|
65
|
+
}
|
|
66
|
+
debugContainer.innerHTML = JSON.stringify(instances, null, 2);
|
|
67
|
+
}
|
|
62
68
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
+
protected fpsDebugger() {
|
|
70
|
+
let debugContainer = document.getElementById('cyledge-combeenation-3d-viewer-fps-debugger');
|
|
71
|
+
if (!debugContainer) {
|
|
72
|
+
debugContainer = document.createElement('pre');
|
|
73
|
+
debugContainer.setAttribute('id', 'cyledge-combeenation-3d-viewer-fps-debugger');
|
|
74
|
+
debugContainer.setAttribute(
|
|
75
|
+
'style',
|
|
76
|
+
`
|
|
69
77
|
background: #454545;
|
|
70
78
|
color: #fff;
|
|
71
79
|
position: absolute;
|
|
@@ -73,10 +81,10 @@ export class DebugViewer extends Viewer {
|
|
|
73
81
|
left: 0;
|
|
74
82
|
padding: 10px;
|
|
75
83
|
margin: 0;
|
|
76
|
-
`
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
}
|
|
84
|
+
`
|
|
85
|
+
);
|
|
86
|
+
document.body.appendChild(debugContainer);
|
|
87
|
+
}
|
|
88
|
+
debugContainer.innerHTML = `${this.engine.getFps().toFixed(2)} fps`;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
@@ -5,7 +5,6 @@
|
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import '@babylonjs/core/Rendering/depthRendererSceneComponent';
|
|
8
|
-
import { LensRenderingPipeline } from
|
|
8
|
+
import { LensRenderingPipeline } from '@babylonjs/core/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline';
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
export { LensRenderingPipeline };
|
|
10
|
+
export { LensRenderingPipeline };
|
|
@@ -16,56 +16,51 @@ import { Parameter } from '../classes/parameter';
|
|
|
16
16
|
* @param name
|
|
17
17
|
* @param definition
|
|
18
18
|
*/
|
|
19
|
-
const processGround = async function(
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
break;
|
|
55
|
-
default:
|
|
56
|
-
throw new Error( `Ground of type "${definition.type}" not implemented (yet).` );
|
|
57
|
-
}
|
|
58
|
-
} );
|
|
19
|
+
const processGround = async function (
|
|
20
|
+
scene: Scene,
|
|
21
|
+
name: string,
|
|
22
|
+
definition: GroundDefinition
|
|
23
|
+
): Promise<Mesh | GroundMesh> {
|
|
24
|
+
return new Promise(resolve => {
|
|
25
|
+
const _resolve = (ground: Mesh) => {
|
|
26
|
+
if (definition.receiveShadows !== undefined) {
|
|
27
|
+
ground.receiveShadows = definition.receiveShadows;
|
|
28
|
+
}
|
|
29
|
+
resolve(ground);
|
|
30
|
+
};
|
|
31
|
+
switch (definition.type) {
|
|
32
|
+
case 'baked':
|
|
33
|
+
if (!definition.meshId) {
|
|
34
|
+
throw new Error(`A baked ground must define a "meshId".`);
|
|
35
|
+
}
|
|
36
|
+
_resolve(scene.getMeshByID(definition.meshId) as Mesh);
|
|
37
|
+
break;
|
|
38
|
+
case 'ground':
|
|
39
|
+
_resolve(MeshBuilder.CreateGround(name, definition, scene));
|
|
40
|
+
break;
|
|
41
|
+
case 'heightmap':
|
|
42
|
+
if (!definition.url) {
|
|
43
|
+
throw new Error(`A heightmap ground must define an "url".`);
|
|
44
|
+
}
|
|
45
|
+
definition.onReady = (_ground: GroundMesh) => {
|
|
46
|
+
_resolve(_ground);
|
|
47
|
+
};
|
|
48
|
+
MeshBuilder.CreateGroundFromHeightMap(name, definition.url, definition, scene);
|
|
49
|
+
break;
|
|
50
|
+
default:
|
|
51
|
+
throw new Error(`Ground of type "${definition.type}" not implemented (yet).`);
|
|
52
|
+
}
|
|
53
|
+
});
|
|
59
54
|
};
|
|
60
55
|
|
|
61
56
|
/**
|
|
62
57
|
* @param scene
|
|
63
58
|
*/
|
|
64
|
-
const defaultCamera = async function(
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
59
|
+
const defaultCamera = async function (scene: Scene): Promise<Camera> {
|
|
60
|
+
return await processCamera(scene, 'default_camera', {
|
|
61
|
+
type: 'arc',
|
|
62
|
+
active: true,
|
|
63
|
+
});
|
|
69
64
|
};
|
|
70
65
|
|
|
71
66
|
/**
|
|
@@ -73,101 +68,115 @@ const defaultCamera = async function( scene: Scene ): Promise<Camera> {
|
|
|
73
68
|
* @param name
|
|
74
69
|
* @param cameraSetup
|
|
75
70
|
*/
|
|
76
|
-
const processCamera = async function(
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
71
|
+
const processCamera = async function (scene: Scene, name: string, cameraSetup: CameraDefinition): Promise<Camera> {
|
|
72
|
+
let camera: Camera;
|
|
73
|
+
let target = Vector3.Zero();
|
|
74
|
+
if (cameraSetup.target) {
|
|
75
|
+
target = Parameter.parseVector(cameraSetup.target);
|
|
76
|
+
}
|
|
77
|
+
switch (cameraSetup.type) {
|
|
78
|
+
case 'arc':
|
|
79
|
+
// @ts-ignore
|
|
80
|
+
const arcCameraModule = await import(
|
|
81
|
+
/* webpackChunkName: "arc-rotate-camera" */ '@babylonjs/core/Cameras/arcRotateCamera'
|
|
82
|
+
);
|
|
83
|
+
camera = new arcCameraModule.ArcRotateCamera(name, Math.PI / 4, Math.PI / 4, 2, target, scene);
|
|
84
|
+
camera.metadata = {
|
|
85
|
+
alpha: Math.PI / 4,
|
|
86
|
+
beta: Math.PI / 4,
|
|
87
|
+
radius: 2,
|
|
88
|
+
};
|
|
89
|
+
break;
|
|
90
|
+
}
|
|
91
|
+
if (cameraSetup.active) {
|
|
92
|
+
camera.attachControl(scene.getEngine().getRenderingCanvas()!, true);
|
|
93
|
+
}
|
|
94
|
+
if (cameraSetup.fov) {
|
|
95
|
+
camera.fov = cameraSetup.fov;
|
|
96
|
+
}
|
|
97
|
+
camera.storeState();
|
|
98
|
+
return camera;
|
|
102
99
|
};
|
|
103
100
|
|
|
104
101
|
/**
|
|
105
102
|
* @param engine
|
|
106
103
|
* @param sceneJson
|
|
107
104
|
*/
|
|
108
|
-
const sceneSetup = async function(engine: Engine, sceneJson: SceneJson): Promise<Scene> {
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
105
|
+
const sceneSetup = async function (engine: Engine, sceneJson: SceneJson): Promise<Scene> {
|
|
106
|
+
const scene = new Scene(engine);
|
|
107
|
+
scene.clearColor = new Color4(0, 0, 0, 0);
|
|
108
|
+
// cameras
|
|
109
|
+
const cameras: Camera[] = [];
|
|
110
|
+
const cameraDefinitions = get(sceneJson.scene, 'cameras') as CameraDefinitions;
|
|
111
|
+
if (!isEmpty(cameraDefinitions)) {
|
|
112
|
+
for (let cameraName in cameraDefinitions) {
|
|
113
|
+
cameras.push(await processCamera(scene, cameraName, cameraDefinitions[cameraName]));
|
|
114
|
+
}
|
|
115
|
+
} else {
|
|
116
|
+
const camera = await defaultCamera(scene);
|
|
117
|
+
cameras.push(camera);
|
|
118
|
+
}
|
|
119
|
+
// grounds
|
|
120
|
+
const groundDefinitions = get(sceneJson.scene, 'grounds') as GroundDefinitions;
|
|
121
|
+
if (!isEmpty(groundDefinitions)) {
|
|
122
|
+
for (const groundName in groundDefinitions) {
|
|
123
|
+
await processGround(scene, groundName, groundDefinitions[groundName]);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
// TODO: try to split this away from the default rendering pipeline to save module imports
|
|
127
|
+
// The "hdr" setting had negative effect on rendering in Safari. Everything looked a little "edgy". I'm not completely
|
|
128
|
+
// sure if disabling it comes with other negative side effects I don't see right now, so we should probably
|
|
129
|
+
// investigate this a little more in detail at some point.
|
|
130
|
+
const defaultPipeline = new DefaultRenderingPipeline('default-rendering-pipeline', false, scene);
|
|
131
|
+
/* DISABLED: causes problems with Internet Explorer
|
|
135
132
|
defaultPipeline.imageProcessingEnabled = true;
|
|
136
133
|
*/
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
134
|
+
if (sceneJson.scene.globals.aa) {
|
|
135
|
+
defaultPipeline.fxaaEnabled = true; //implicitly does FxaaPostProcess()
|
|
136
|
+
}
|
|
137
|
+
// Set samples regardless of fxaa setting since we don't want to use fxaa but still increase the sample count
|
|
138
|
+
defaultPipeline.samples = 8;
|
|
139
|
+
if (sceneJson.scene.globals['camera-settings']) {
|
|
140
|
+
if (
|
|
141
|
+
sceneJson.scene.globals['camera-settings']!.sharpen &&
|
|
142
|
+
sceneJson.scene.globals['camera-settings']!.sharpen.enabled
|
|
143
|
+
) {
|
|
144
|
+
defaultPipeline.sharpenEnabled = true; //implicitly does SharpenPostProcess()
|
|
145
|
+
//defaultPipeline.sharpen.colorAmount = 1;
|
|
146
|
+
//defaultPipeline.sharpen.edgeAmount = 0;
|
|
147
|
+
}
|
|
148
|
+
if (
|
|
149
|
+
sceneJson.scene.globals['camera-settings']!.bloom &&
|
|
150
|
+
sceneJson.scene.globals['camera-settings']!.bloom.enabled
|
|
151
|
+
) {
|
|
152
|
+
defaultPipeline.bloomEnabled = true;
|
|
153
|
+
if (sceneJson.scene.globals['camera-settings']!.bloom.size) {
|
|
154
|
+
defaultPipeline.bloomScale = sceneJson.scene.globals['camera-settings']!.bloom.size;
|
|
155
|
+
}
|
|
156
|
+
if (sceneJson.scene.globals['camera-settings']!.bloom.threshold) {
|
|
157
|
+
defaultPipeline.bloomThreshold = sceneJson.scene.globals['camera-settings']!.bloom.threshold;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
if (sceneJson.scene.globals['camera-settings']!.contrast) {
|
|
161
|
+
scene.imageProcessingConfiguration.contrast = sceneJson.scene.globals['camera-settings']!.contrast;
|
|
162
|
+
}
|
|
163
|
+
if (sceneJson.scene.globals['camera-settings']!.exposure) {
|
|
164
|
+
scene.imageProcessingConfiguration.exposure = sceneJson.scene.globals['camera-settings']!.exposure;
|
|
165
|
+
}
|
|
166
|
+
if (sceneJson.scene.globals['camera-settings']!.dof && sceneJson.scene.globals['camera-settings']!.dof.enabled) {
|
|
167
|
+
//@ts-ignore
|
|
168
|
+
const module = await import(/* webpackChunkName: "lens-rendering" */ './lensRendering');
|
|
169
|
+
new module.LensRenderingPipeline(
|
|
170
|
+
'lens-rendering',
|
|
171
|
+
sceneJson.scene.globals['camera-settings']!.dof.settings,
|
|
172
|
+
scene,
|
|
173
|
+
1.0,
|
|
174
|
+
cameras
|
|
175
|
+
);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
// TODO: make this dynamic
|
|
179
|
+
/*
|
|
171
180
|
const texture = new HDRCubeTexture("/assets/small_cave_1k.hdr", scene, 256);
|
|
172
181
|
texture.gammaSpace = false;
|
|
173
182
|
scene.environmentTexture = texture;
|
|
@@ -185,10 +194,8 @@ const sceneSetup = async function(engine: Engine, sceneJson: SceneJson): Promise
|
|
|
185
194
|
skybox.material = skyboxMaterial;
|
|
186
195
|
*/
|
|
187
196
|
|
|
188
|
-
|
|
189
|
-
|
|
197
|
+
// TODO: shadows don't work with HemishpericLight
|
|
198
|
+
return scene;
|
|
190
199
|
};
|
|
191
200
|
|
|
192
|
-
export {
|
|
193
|
-
sceneSetup
|
|
194
|
-
};
|
|
201
|
+
export { sceneSetup };
|