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