David Catuhe 5 anni fa
parent
commit
bbeeea4161

+ 26 - 2
Playground/babylon.d.txt

@@ -28727,7 +28727,7 @@ declare module BABYLON {
         private _textureUnits;
         /** @hidden */
private _workingCanvas: Nullable<HTMLCanvasElement | OffscreenCanvas>;
         /** @hidden */
private _workingContext: Nullable<CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D>;
-        /** @hidden */
private _bindedRenderFunction: any;
+        /** @hidden */
private _boundRenderFunction: any;
         private _vaoRecordInProgress;
         private _mustWipeVertexAttributes;
         private _emptyTexture;
@@ -31102,7 +31102,9 @@ declare module BABYLON {
          */
         setTextureFromPostProcessOutput(channel: number, postProcess: Nullable<PostProcess>): void;
         /** @hidden */
private _convertRGBtoRGBATextureData(rgbData: any, width: number, height: number, textureType: number): ArrayBufferView;
-        protected _rebuildBuffers(): void;
private _renderLoop(): void;
+        protected _rebuildBuffers(): void;
+        /** @hidden */
private _renderFrame(): void;
private _renderLoop(): void;
+        /** @hidden */
private _renderViews(): void;
         /**
          * Toggle full screen mode
          * @param requestPointerLock defines if a pointer lock should be requested from the user
@@ -43767,6 +43769,28 @@ declare module BABYLON {
         }
 }
 declare module BABYLON {
+        interface Engine {
+            /** Gets or sets the list of views */
+            views: {
+                target: HTMLCanvasElement;
+                camera: Camera;
+            }[];
+            /**
+             * Register a new child canvas
+             * @param canvas defines the canvas to register
+             * @param camera defines the camera to use with this canvas (it will overwrite the scene.camera for this view)
+             * @returns the current engine
+             */
+            registerView(canvas: HTMLCanvasElement, camera: Camera): Engine;
+            /**
+             * Remove a registered child canvas
+             * @param canvas defines the canvas to remove
+             * @returns the current engine
+             */
+            unRegisterView(canvas: HTMLCanvasElement): Engine;
+        }
+}
+declare module BABYLON {
     /**
      * CubeMap information grouping all the data for each faces as well as the cubemap size.
      */

+ 27 - 1
dist/preview release/babylon.d.ts

@@ -29268,7 +29268,7 @@ declare module BABYLON {
         /** @hidden */
         _workingContext: Nullable<CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D>;
         /** @hidden */
-        _bindedRenderFunction: any;
+        _boundRenderFunction: any;
         private _vaoRecordInProgress;
         private _mustWipeVertexAttributes;
         private _emptyTexture;
@@ -31727,7 +31727,11 @@ declare module BABYLON {
         /** @hidden */
         _convertRGBtoRGBATextureData(rgbData: any, width: number, height: number, textureType: number): ArrayBufferView;
         protected _rebuildBuffers(): void;
+        /** @hidden */
+        _renderFrame(): void;
         _renderLoop(): void;
+        /** @hidden */
+        _renderViews(): void;
         /**
          * Toggle full screen mode
          * @param requestPointerLock defines if a pointer lock should be requested from the user
@@ -44537,6 +44541,28 @@ declare module BABYLON {
         }
 }
 declare module BABYLON {
+        interface Engine {
+            /** Gets or sets the list of views */
+            views: {
+                target: HTMLCanvasElement;
+                camera: Camera;
+            }[];
+            /**
+             * Register a new child canvas
+             * @param canvas defines the canvas to register
+             * @param camera defines the camera to use with this canvas (it will overwrite the scene.camera for this view)
+             * @returns the current engine
+             */
+            registerView(canvas: HTMLCanvasElement, camera: Camera): Engine;
+            /**
+             * Remove a registered child canvas
+             * @param canvas defines the canvas to remove
+             * @returns the current engine
+             */
+            unRegisterView(canvas: HTMLCanvasElement): Engine;
+        }
+}
+declare module BABYLON {
     /**
      * CubeMap information grouping all the data for each faces as well as the cubemap size.
      */

File diff suppressed because it is too large
+ 1 - 1
dist/preview release/babylon.js


File diff suppressed because it is too large
+ 73 - 62
dist/preview release/babylon.max.js


File diff suppressed because it is too large
+ 1 - 1
dist/preview release/babylon.max.js.map


+ 58 - 2
dist/preview release/babylon.module.d.ts

@@ -30146,7 +30146,7 @@ declare module "babylonjs/Engines/thinEngine" {
         /** @hidden */
         _workingContext: Nullable<CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D>;
         /** @hidden */
-        _bindedRenderFunction: any;
+        _boundRenderFunction: any;
         private _vaoRecordInProgress;
         private _mustWipeVertexAttributes;
         private _emptyTexture;
@@ -32635,7 +32635,11 @@ declare module "babylonjs/Engines/engine" {
         /** @hidden */
         _convertRGBtoRGBATextureData(rgbData: any, width: number, height: number, textureType: number): ArrayBufferView;
         protected _rebuildBuffers(): void;
+        /** @hidden */
+        _renderFrame(): void;
         _renderLoop(): void;
+        /** @hidden */
+        _renderViews(): void;
         /**
          * Toggle full screen mode
          * @param requestPointerLock defines if a pointer lock should be requested from the user
@@ -46294,6 +46298,31 @@ declare module "babylonjs/Engines/Extensions/engine.multiRender" {
         }
     }
 }
+declare module "babylonjs/Engines/Extensions/engine.views" {
+    import { Camera } from "babylonjs/Cameras/camera";
+    module "babylonjs/Engines/engine" {
+        interface Engine {
+            /** Gets or sets the list of views */
+            views: {
+                target: HTMLCanvasElement;
+                camera: Camera;
+            }[];
+            /**
+             * Register a new child canvas
+             * @param canvas defines the canvas to register
+             * @param camera defines the camera to use with this canvas (it will overwrite the scene.camera for this view)
+             * @returns the current engine
+             */
+            registerView(canvas: HTMLCanvasElement, camera: Camera): Engine;
+            /**
+             * Remove a registered child canvas
+             * @param canvas defines the canvas to remove
+             * @returns the current engine
+             */
+            unRegisterView(canvas: HTMLCanvasElement): Engine;
+        }
+    }
+}
 declare module "babylonjs/Engines/Extensions/index" {
     export * from "babylonjs/Engines/Extensions/engine.occlusionQuery";
     export * from "babylonjs/Engines/Extensions/engine.transformFeedback";
@@ -46307,6 +46336,7 @@ declare module "babylonjs/Engines/Extensions/index" {
     export * from "babylonjs/Engines/Extensions/engine.renderTargetCube";
     export * from "babylonjs/Engines/Extensions/engine.webVR";
     export * from "babylonjs/Engines/Extensions/engine.uniformBuffer";
+    export * from "babylonjs/Engines/Extensions/engine.views";
 }
 declare module "babylonjs/Misc/HighDynamicRange/panoramaToCubemap" {
     import { Nullable } from "babylonjs/types";
@@ -97008,7 +97038,7 @@ declare module BABYLON {
         /** @hidden */
         _workingContext: Nullable<CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D>;
         /** @hidden */
-        _bindedRenderFunction: any;
+        _boundRenderFunction: any;
         private _vaoRecordInProgress;
         private _mustWipeVertexAttributes;
         private _emptyTexture;
@@ -99467,7 +99497,11 @@ declare module BABYLON {
         /** @hidden */
         _convertRGBtoRGBATextureData(rgbData: any, width: number, height: number, textureType: number): ArrayBufferView;
         protected _rebuildBuffers(): void;
+        /** @hidden */
+        _renderFrame(): void;
         _renderLoop(): void;
+        /** @hidden */
+        _renderViews(): void;
         /**
          * Toggle full screen mode
          * @param requestPointerLock defines if a pointer lock should be requested from the user
@@ -112277,6 +112311,28 @@ declare module BABYLON {
         }
 }
 declare module BABYLON {
+        interface Engine {
+            /** Gets or sets the list of views */
+            views: {
+                target: HTMLCanvasElement;
+                camera: Camera;
+            }[];
+            /**
+             * Register a new child canvas
+             * @param canvas defines the canvas to register
+             * @param camera defines the camera to use with this canvas (it will overwrite the scene.camera for this view)
+             * @returns the current engine
+             */
+            registerView(canvas: HTMLCanvasElement, camera: Camera): Engine;
+            /**
+             * Remove a registered child canvas
+             * @param canvas defines the canvas to remove
+             * @returns the current engine
+             */
+            unRegisterView(canvas: HTMLCanvasElement): Engine;
+        }
+}
+declare module BABYLON {
     /**
      * CubeMap information grouping all the data for each faces as well as the cubemap size.
      */

+ 27 - 1
dist/preview release/documentation.d.ts

@@ -29268,7 +29268,7 @@ declare module BABYLON {
         /** @hidden */
         _workingContext: Nullable<CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D>;
         /** @hidden */
-        _bindedRenderFunction: any;
+        _boundRenderFunction: any;
         private _vaoRecordInProgress;
         private _mustWipeVertexAttributes;
         private _emptyTexture;
@@ -31727,7 +31727,11 @@ declare module BABYLON {
         /** @hidden */
         _convertRGBtoRGBATextureData(rgbData: any, width: number, height: number, textureType: number): ArrayBufferView;
         protected _rebuildBuffers(): void;
+        /** @hidden */
+        _renderFrame(): void;
         _renderLoop(): void;
+        /** @hidden */
+        _renderViews(): void;
         /**
          * Toggle full screen mode
          * @param requestPointerLock defines if a pointer lock should be requested from the user
@@ -44537,6 +44541,28 @@ declare module BABYLON {
         }
 }
 declare module BABYLON {
+        interface Engine {
+            /** Gets or sets the list of views */
+            views: {
+                target: HTMLCanvasElement;
+                camera: Camera;
+            }[];
+            /**
+             * Register a new child canvas
+             * @param canvas defines the canvas to register
+             * @param camera defines the camera to use with this canvas (it will overwrite the scene.camera for this view)
+             * @returns the current engine
+             */
+            registerView(canvas: HTMLCanvasElement, camera: Camera): Engine;
+            /**
+             * Remove a registered child canvas
+             * @param canvas defines the canvas to remove
+             * @returns the current engine
+             */
+            unRegisterView(canvas: HTMLCanvasElement): Engine;
+        }
+}
+declare module BABYLON {
     /**
      * CubeMap information grouping all the data for each faces as well as the cubemap size.
      */

+ 1 - 1
dist/preview release/packagesSizeBaseLine.json

@@ -1 +1 @@
-{"thinEngineOnly":115465,"engineOnly":151965,"sceneOnly":495268,"minGridMaterial":625261,"minStandardMaterial":748844}
+{"thinEngineOnly":115461,"engineOnly":152072,"sceneOnly":495375,"minGridMaterial":625368,"minStandardMaterial":748951}

+ 58 - 2
dist/preview release/viewer/babylon.module.d.ts

@@ -30146,7 +30146,7 @@ declare module "babylonjs/Engines/thinEngine" {
         /** @hidden */
         _workingContext: Nullable<CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D>;
         /** @hidden */
-        _bindedRenderFunction: any;
+        _boundRenderFunction: any;
         private _vaoRecordInProgress;
         private _mustWipeVertexAttributes;
         private _emptyTexture;
@@ -32635,7 +32635,11 @@ declare module "babylonjs/Engines/engine" {
         /** @hidden */
         _convertRGBtoRGBATextureData(rgbData: any, width: number, height: number, textureType: number): ArrayBufferView;
         protected _rebuildBuffers(): void;
+        /** @hidden */
+        _renderFrame(): void;
         _renderLoop(): void;
+        /** @hidden */
+        _renderViews(): void;
         /**
          * Toggle full screen mode
          * @param requestPointerLock defines if a pointer lock should be requested from the user
@@ -46294,6 +46298,31 @@ declare module "babylonjs/Engines/Extensions/engine.multiRender" {
         }
     }
 }
+declare module "babylonjs/Engines/Extensions/engine.views" {
+    import { Camera } from "babylonjs/Cameras/camera";
+    module "babylonjs/Engines/engine" {
+        interface Engine {
+            /** Gets or sets the list of views */
+            views: {
+                target: HTMLCanvasElement;
+                camera: Camera;
+            }[];
+            /**
+             * Register a new child canvas
+             * @param canvas defines the canvas to register
+             * @param camera defines the camera to use with this canvas (it will overwrite the scene.camera for this view)
+             * @returns the current engine
+             */
+            registerView(canvas: HTMLCanvasElement, camera: Camera): Engine;
+            /**
+             * Remove a registered child canvas
+             * @param canvas defines the canvas to remove
+             * @returns the current engine
+             */
+            unRegisterView(canvas: HTMLCanvasElement): Engine;
+        }
+    }
+}
 declare module "babylonjs/Engines/Extensions/index" {
     export * from "babylonjs/Engines/Extensions/engine.occlusionQuery";
     export * from "babylonjs/Engines/Extensions/engine.transformFeedback";
@@ -46307,6 +46336,7 @@ declare module "babylonjs/Engines/Extensions/index" {
     export * from "babylonjs/Engines/Extensions/engine.renderTargetCube";
     export * from "babylonjs/Engines/Extensions/engine.webVR";
     export * from "babylonjs/Engines/Extensions/engine.uniformBuffer";
+    export * from "babylonjs/Engines/Extensions/engine.views";
 }
 declare module "babylonjs/Misc/HighDynamicRange/panoramaToCubemap" {
     import { Nullable } from "babylonjs/types";
@@ -97008,7 +97038,7 @@ declare module BABYLON {
         /** @hidden */
         _workingContext: Nullable<CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D>;
         /** @hidden */
-        _bindedRenderFunction: any;
+        _boundRenderFunction: any;
         private _vaoRecordInProgress;
         private _mustWipeVertexAttributes;
         private _emptyTexture;
@@ -99467,7 +99497,11 @@ declare module BABYLON {
         /** @hidden */
         _convertRGBtoRGBATextureData(rgbData: any, width: number, height: number, textureType: number): ArrayBufferView;
         protected _rebuildBuffers(): void;
+        /** @hidden */
+        _renderFrame(): void;
         _renderLoop(): void;
+        /** @hidden */
+        _renderViews(): void;
         /**
          * Toggle full screen mode
          * @param requestPointerLock defines if a pointer lock should be requested from the user
@@ -112277,6 +112311,28 @@ declare module BABYLON {
         }
 }
 declare module BABYLON {
+        interface Engine {
+            /** Gets or sets the list of views */
+            views: {
+                target: HTMLCanvasElement;
+                camera: Camera;
+            }[];
+            /**
+             * Register a new child canvas
+             * @param canvas defines the canvas to register
+             * @param camera defines the camera to use with this canvas (it will overwrite the scene.camera for this view)
+             * @returns the current engine
+             */
+            registerView(canvas: HTMLCanvasElement, camera: Camera): Engine;
+            /**
+             * Remove a registered child canvas
+             * @param canvas defines the canvas to remove
+             * @returns the current engine
+             */
+            unRegisterView(canvas: HTMLCanvasElement): Engine;
+        }
+}
+declare module BABYLON {
     /**
      * CubeMap information grouping all the data for each faces as well as the cubemap size.
      */

File diff suppressed because it is too large
+ 7 - 7
dist/preview release/viewer/babylon.viewer.js


File diff suppressed because it is too large
+ 1 - 1
dist/preview release/viewer/babylon.viewer.max.js


+ 1 - 0
dist/preview release/what's new.md

@@ -14,6 +14,7 @@
   - WebXR updated to spec as of July 10th ([TrevorDev](https://github.com/TrevorDev))
   - WebXR webVR parity helpers (Vive, WMR, Oculus Rift) ([TrevorDev](https://github.com/TrevorDev))
 - Added support for Offscreen canvas [Doc](https://doc.babylonjs.com/how_to/using_offscreen_canvas) ([Deltakosh](https://github.com/deltakosh/)
+- Added support for multiple canvases with one engine [Doc](https://doc.babylonjs.com/how_to/multiple_canvases) ([Deltakosh](https://github.com/deltakosh/)
 
 ## Updates
 

+ 5 - 5
src/Engines/Extensions/engine.views.ts

@@ -23,7 +23,7 @@ declare module "../../Engines/engine" {
          * @param canvas defines the canvas to remove
          * @returns the current engine
          */
-        unRegisterView(canvas: HTMLCanvasElement): Engine;        
+        unRegisterView(canvas: HTMLCanvasElement): Engine;
     }
 }
 
@@ -42,9 +42,9 @@ Engine.prototype.registerView = function(canvas: HTMLCanvasElement, camera: Came
 
     camera.onDisposeObservable.add(() => {
         this.unRegisterView(canvas);
-    })
+    });
 
-    return this;    
+    return this;
 };
 
 Engine.prototype.unRegisterView = function(canvas: HTMLCanvasElement): Engine {
@@ -63,7 +63,7 @@ Engine.prototype.unRegisterView = function(canvas: HTMLCanvasElement): Engine {
         }
     }
 
-    return this;    
+    return this;
 };
 
 Engine.prototype._renderViews = function() {
@@ -105,4 +105,4 @@ Engine.prototype._renderViews = function() {
         // Restore
         scene.activeCamera = previewCamera;
     }
-}
+};

+ 3 - 2
src/Engines/engine.ts

@@ -1359,6 +1359,7 @@ export class Engine extends ThinEngine {
         super._rebuildBuffers();
     }
 
+    /** @hidden */
     public _renderFrame() {
         // Start new frame
         this.beginFrame();
@@ -1370,7 +1371,7 @@ export class Engine extends ThinEngine {
         }
 
         // Present
-        this.endFrame();  
+        this.endFrame();
     }
 
     public _renderLoop(): void {
@@ -1382,7 +1383,7 @@ export class Engine extends ThinEngine {
 
             if (shouldRender) {
                 // Child canvases
-                this._renderViews();      
+                this._renderViews();
 
                 // Main frame
                 this._renderFrame();