From 95e506d50dcb72b3714f8ecba17918a8e713f38b Mon Sep 17 00:00:00 2001 From: Jeroen Claessens Date: Wed, 16 Oct 2024 11:11:34 +0200 Subject: [PATCH 1/3] feat: add engine field to easier debug if running on webgl or webgpu --- src/renderers/common/Info.js | 8 +++++++- src/renderers/webgpu/WebGPURenderer.Nodes.js | 5 +++++ src/renderers/webgpu/WebGPURenderer.js | 5 +++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/renderers/common/Info.js b/src/renderers/common/Info.js index 2de51487092447..153730e349c3a3 100644 --- a/src/renderers/common/Info.js +++ b/src/renderers/common/Info.js @@ -1,6 +1,6 @@ class Info { - constructor() { + constructor( engine ) { this.autoReset = true; @@ -32,6 +32,12 @@ class Info { textures: 0 }; + if ( engine ) { + + this.engine = engine; + + } + } update( object, count, instanceCount ) { diff --git a/src/renderers/webgpu/WebGPURenderer.Nodes.js b/src/renderers/webgpu/WebGPURenderer.Nodes.js index 2f2dae57f561af..70a4ec7a9521fe 100644 --- a/src/renderers/webgpu/WebGPURenderer.Nodes.js +++ b/src/renderers/webgpu/WebGPURenderer.Nodes.js @@ -1,4 +1,5 @@ import Renderer from '../common/Renderer.js'; +import Info from '../common/Info.js'; import WebGLBackend from '../webgl-fallback/WebGLBackend.js'; import WebGPUBackend from './WebGPUBackend.js'; import BasicNodeLibrary from './nodes/BasicNodeLibrary.js'; @@ -21,6 +22,8 @@ class WebGPURenderer extends Renderer { console.warn( 'THREE.WebGPURenderer: WebGPU is not available, running under WebGL2 backend.' ); + this.info = new Info( 'webgl' ); + return new WebGLBackend( parameters ); }; @@ -35,6 +38,8 @@ class WebGPURenderer extends Renderer { this.isWebGPURenderer = true; + this.info = new Info( BackendClass instanceof WebGPUBackend ? 'webgpu' : 'webgl' ); + } } diff --git a/src/renderers/webgpu/WebGPURenderer.js b/src/renderers/webgpu/WebGPURenderer.js index c8ddb67cf638be..65aabe238348d0 100644 --- a/src/renderers/webgpu/WebGPURenderer.js +++ b/src/renderers/webgpu/WebGPURenderer.js @@ -1,4 +1,5 @@ import Renderer from '../common/Renderer.js'; +import Info from '../common/Info.js'; import WebGLBackend from '../webgl-fallback/WebGLBackend.js'; import WebGPUBackend from './WebGPUBackend.js'; import StandardNodeLibrary from './nodes/StandardNodeLibrary.js'; @@ -34,6 +35,8 @@ class WebGPURenderer extends Renderer { console.warn( 'THREE.WebGPURenderer: WebGPU is not available, running under WebGL2 backend.' ); + this.info = new Info( 'webgl' ); + return new WebGLBackend( parameters ); }; @@ -49,6 +52,8 @@ class WebGPURenderer extends Renderer { this.isWebGPURenderer = true; + this.info = new Info( BackendClass instanceof WebGPUBackend ? 'webgpu' : 'webgl' ); + } } From e34bf8fd38945f261d343c180655078841bc675d Mon Sep 17 00:00:00 2001 From: Jeroen Claessens Date: Wed, 16 Oct 2024 11:12:15 +0200 Subject: [PATCH 2/3] Revert "feat: add engine field to easier debug if running on webgl or webgpu" This reverts commit 95e506d50dcb72b3714f8ecba17918a8e713f38b. --- src/renderers/common/Info.js | 8 +------- src/renderers/webgpu/WebGPURenderer.Nodes.js | 5 ----- src/renderers/webgpu/WebGPURenderer.js | 5 ----- 3 files changed, 1 insertion(+), 17 deletions(-) diff --git a/src/renderers/common/Info.js b/src/renderers/common/Info.js index 153730e349c3a3..2de51487092447 100644 --- a/src/renderers/common/Info.js +++ b/src/renderers/common/Info.js @@ -1,6 +1,6 @@ class Info { - constructor( engine ) { + constructor() { this.autoReset = true; @@ -32,12 +32,6 @@ class Info { textures: 0 }; - if ( engine ) { - - this.engine = engine; - - } - } update( object, count, instanceCount ) { diff --git a/src/renderers/webgpu/WebGPURenderer.Nodes.js b/src/renderers/webgpu/WebGPURenderer.Nodes.js index 70a4ec7a9521fe..2f2dae57f561af 100644 --- a/src/renderers/webgpu/WebGPURenderer.Nodes.js +++ b/src/renderers/webgpu/WebGPURenderer.Nodes.js @@ -1,5 +1,4 @@ import Renderer from '../common/Renderer.js'; -import Info from '../common/Info.js'; import WebGLBackend from '../webgl-fallback/WebGLBackend.js'; import WebGPUBackend from './WebGPUBackend.js'; import BasicNodeLibrary from './nodes/BasicNodeLibrary.js'; @@ -22,8 +21,6 @@ class WebGPURenderer extends Renderer { console.warn( 'THREE.WebGPURenderer: WebGPU is not available, running under WebGL2 backend.' ); - this.info = new Info( 'webgl' ); - return new WebGLBackend( parameters ); }; @@ -38,8 +35,6 @@ class WebGPURenderer extends Renderer { this.isWebGPURenderer = true; - this.info = new Info( BackendClass instanceof WebGPUBackend ? 'webgpu' : 'webgl' ); - } } diff --git a/src/renderers/webgpu/WebGPURenderer.js b/src/renderers/webgpu/WebGPURenderer.js index 65aabe238348d0..c8ddb67cf638be 100644 --- a/src/renderers/webgpu/WebGPURenderer.js +++ b/src/renderers/webgpu/WebGPURenderer.js @@ -1,5 +1,4 @@ import Renderer from '../common/Renderer.js'; -import Info from '../common/Info.js'; import WebGLBackend from '../webgl-fallback/WebGLBackend.js'; import WebGPUBackend from './WebGPUBackend.js'; import StandardNodeLibrary from './nodes/StandardNodeLibrary.js'; @@ -35,8 +34,6 @@ class WebGPURenderer extends Renderer { console.warn( 'THREE.WebGPURenderer: WebGPU is not available, running under WebGL2 backend.' ); - this.info = new Info( 'webgl' ); - return new WebGLBackend( parameters ); }; @@ -52,8 +49,6 @@ class WebGPURenderer extends Renderer { this.isWebGPURenderer = true; - this.info = new Info( BackendClass instanceof WebGPUBackend ? 'webgpu' : 'webgl' ); - } } From 9031cd3097132af9f8353021c1bc7f18999b2bb0 Mon Sep 17 00:00:00 2001 From: Jeroen Claessens Date: Wed, 16 Oct 2024 11:12:53 +0200 Subject: [PATCH 3/3] feat: add backend info to data-engine attribute instead --- src/renderers/common/Backend.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/renderers/common/Backend.js b/src/renderers/common/Backend.js index e4120b076b13ee..c6123f2d9f2501 100644 --- a/src/renderers/common/Backend.js +++ b/src/renderers/common/Backend.js @@ -6,7 +6,7 @@ import Color4 from './Color4.js'; import { Vector2 } from '../../math/Vector2.js'; import { Vector4 } from '../../math/Vector4.js'; import { createCanvasElement } from '../../utils.js'; -import { REVISION } from '../../constants.js'; +import { REVISION, WebGPUCoordinateSystem } from '../../constants.js'; class Backend { @@ -147,8 +147,10 @@ class Backend { domElement = ( this.parameters.canvas !== undefined ) ? this.parameters.canvas : createCanvasElement(); + const backend = ( this.coordinateSystem === WebGPUCoordinateSystem ) ? 'webgpu' : 'webgl'; + // OffscreenCanvas does not have setAttribute, see #22811 - if ( 'setAttribute' in domElement ) domElement.setAttribute( 'data-engine', `three.js r${REVISION} webgpu` ); + if ( 'setAttribute' in domElement ) domElement.setAttribute( 'data-engine', `three.js r${REVISION} WebGPURenderer ${backend}` ); this.domElement = domElement;