From 4156ee5f71e5b2849f79d1e945d40f1fbaeaf5c1 Mon Sep 17 00:00:00 2001 From: Popov72 Date: Sat, 20 Apr 2024 23:24:51 +0200 Subject: [PATCH 1/2] Fix onResize not triggered in WebGPU --- .../dev/core/src/Engines/abstractEngine.ts | 16 +++++++++ packages/dev/core/src/Engines/engine.ts | 35 ------------------- packages/dev/core/src/Engines/thinEngine.ts | 25 +++++++++++++ 3 files changed, 41 insertions(+), 35 deletions(-) diff --git a/packages/dev/core/src/Engines/abstractEngine.ts b/packages/dev/core/src/Engines/abstractEngine.ts index 2c3dcc6d0f4..02e240759a1 100644 --- a/packages/dev/core/src/Engines/abstractEngine.ts +++ b/packages/dev/core/src/Engines/abstractEngine.ts @@ -2221,6 +2221,22 @@ export abstract class AbstractEngine { this._renderingCanvas.width = width; this._renderingCanvas.height = height; + if (this.scenes) { + for (let index = 0; index < this.scenes.length; index++) { + const scene = this.scenes[index]; + + for (let camIndex = 0; camIndex < scene.cameras.length; camIndex++) { + const cam = scene.cameras[camIndex]; + + cam._currentRenderId = 0; + } + } + + if (this.onResizeObservable.hasObservers()) { + this.onResizeObservable.notifyObservers(this); + } + } + return true; } diff --git a/packages/dev/core/src/Engines/engine.ts b/packages/dev/core/src/Engines/engine.ts index 0c038b2eb94..0bc9d03c551 100755 --- a/packages/dev/core/src/Engines/engine.ts +++ b/packages/dev/core/src/Engines/engine.ts @@ -774,41 +774,6 @@ export class Engine extends ThinEngine { super.beginFrame(); } - /** - * Force a specific size of the canvas - * @param width defines the new canvas' width - * @param height defines the new canvas' height - * @param forceSetSize true to force setting the sizes of the underlying canvas - * @returns true if the size was changed - */ - public override setSize(width: number, height: number, forceSetSize = false): boolean { - if (!this._renderingCanvas) { - return false; - } - - if (!super.setSize(width, height, forceSetSize)) { - return false; - } - - if (this.scenes) { - for (let index = 0; index < this.scenes.length; index++) { - const scene = this.scenes[index]; - - for (let camIndex = 0; camIndex < scene.cameras.length; camIndex++) { - const cam = scene.cameras[camIndex]; - - cam._currentRenderId = 0; - } - } - - if (this.onResizeObservable.hasObservers()) { - this.onResizeObservable.notifyObservers(this); - } - } - - return true; - } - public override _deletePipelineContext(pipelineContext: IPipelineContext): void { const webGLPipelineContext = pipelineContext as WebGLPipelineContext; if (webGLPipelineContext && webGLPipelineContext.program) { diff --git a/packages/dev/core/src/Engines/thinEngine.ts b/packages/dev/core/src/Engines/thinEngine.ts index 7bbdc0efe78..3fa92442317 100644 --- a/packages/dev/core/src/Engines/thinEngine.ts +++ b/packages/dev/core/src/Engines/thinEngine.ts @@ -857,6 +857,31 @@ export class ThinEngine extends AbstractEngine { return this._framebufferDimensionsObject ? this._framebufferDimensionsObject.framebufferHeight : this._gl.drawingBufferHeight; } + /** + * Force a specific size of the canvas + * @param width defines the new canvas' width + * @param height defines the new canvas' height + * @param forceSetSize true to force setting the sizes of the underlying canvas + * @returns true if the size was changed + */ + public override setSize(width: number, height: number, forceSetSize = false): boolean { + if (!this._renderingCanvas) { + return false; + } + + width = width | 0; + height = height | 0; + + if (!forceSetSize && this._renderingCanvas.width === width && this._renderingCanvas.height === height) { + return false; + } + + this._renderingCanvas.width = width; + this._renderingCanvas.height = height; + + return true; + } + /** * Clear the current render buffer or the current render target (if any is set up) * @param color defines the color to use From aed7449d65c2d537e82c9d0868f1067354aa493d Mon Sep 17 00:00:00 2001 From: Popov72 Date: Sat, 20 Apr 2024 23:26:06 +0200 Subject: [PATCH 2/2] Revert --- packages/dev/core/src/Engines/thinEngine.ts | 25 --------------------- 1 file changed, 25 deletions(-) diff --git a/packages/dev/core/src/Engines/thinEngine.ts b/packages/dev/core/src/Engines/thinEngine.ts index 3fa92442317..7bbdc0efe78 100644 --- a/packages/dev/core/src/Engines/thinEngine.ts +++ b/packages/dev/core/src/Engines/thinEngine.ts @@ -857,31 +857,6 @@ export class ThinEngine extends AbstractEngine { return this._framebufferDimensionsObject ? this._framebufferDimensionsObject.framebufferHeight : this._gl.drawingBufferHeight; } - /** - * Force a specific size of the canvas - * @param width defines the new canvas' width - * @param height defines the new canvas' height - * @param forceSetSize true to force setting the sizes of the underlying canvas - * @returns true if the size was changed - */ - public override setSize(width: number, height: number, forceSetSize = false): boolean { - if (!this._renderingCanvas) { - return false; - } - - width = width | 0; - height = height | 0; - - if (!forceSetSize && this._renderingCanvas.width === width && this._renderingCanvas.height === height) { - return false; - } - - this._renderingCanvas.width = width; - this._renderingCanvas.height = height; - - return true; - } - /** * Clear the current render buffer or the current render target (if any is set up) * @param color defines the color to use