From 58c4f4f0eb17633e4c1996cdbf1948b67adff926 Mon Sep 17 00:00:00 2001 From: Christian Helgeson <62450112+cmhhelgeson@users.noreply.github.com> Date: Tue, 14 Oct 2025 16:28:23 -0700 Subject: [PATCH 1/4] update and cache compute pass labels --- examples/webgpu_compute_birds.html | 6 +++-- src/renderers/webgpu/WebGPUBackend.js | 38 +++++++++++++++++++++------ 2 files changed, 34 insertions(+), 10 deletions(-) diff --git a/examples/webgpu_compute_birds.html b/examples/webgpu_compute_birds.html index a5f64a6b1d434a..d6fad9c8eec73d 100644 --- a/examples/webgpu_compute_birds.html +++ b/examples/webgpu_compute_birds.html @@ -412,6 +412,8 @@ } )().compute( BIRDS ).setName( 'Birds Velocity' ); + console.log( computeVelocity ); + computePosition = Fn( () => { const { deltaTime } = effectController; @@ -472,8 +474,8 @@ effectController.rayOrigin.value.copy( raycaster.ray.origin ); effectController.rayDirection.value.copy( raycaster.ray.direction ); - renderer.compute( computeVelocity ); - renderer.compute( computePosition ); + renderer.compute( [ computeVelocity, computePosition ] ); + //renderer.compute( computePosition ); renderer.render( scene, camera ); diff --git a/src/renderers/webgpu/WebGPUBackend.js b/src/renderers/webgpu/WebGPUBackend.js index d75cca0e13ad02..7d46ce3cd78e2c 100644 --- a/src/renderers/webgpu/WebGPUBackend.js +++ b/src/renderers/webgpu/WebGPUBackend.js @@ -1310,7 +1310,7 @@ class WebGPUBackend extends Backend { } - // compute + /** * This method is executed at the beginning of a compute call and @@ -1322,17 +1322,39 @@ class WebGPUBackend extends Backend { const groupGPU = this.get( computeGroup ); - // + if ( groupGPU.computePassDescriptor === undefined ) { - const descriptor = { - label: 'computeGroup_' + computeGroup.id - }; + let computePassLabel = 'computeGroup['; + + if ( Array.isArray( computeGroup ) ) { + + for ( let i = 0; i < computeGroup.length; i ++ ) { + + const group = computeGroup[ i ]; + computePassLabel += `${group.name}_${group.id}${i !== computeGroup.length - 1 ? ',' : ''}`; + + } + + } else { + + computePassLabel += `${computeGroup.name}_${computeGroup.id}`; + + } + + computePassLabel += ']'; + + const descriptor = { label: computePassLabel }; + + groupGPU.computePassDescriptor = descriptor; + + } + // - this.initTimestampQuery( TimestampQuery.COMPUTE, this.getTimestampUID( computeGroup ), descriptor ); + this.initTimestampQuery( TimestampQuery.COMPUTE, this.getTimestampUID( computeGroup ), groupGPU.computePassDescriptor ); - groupGPU.cmdEncoderGPU = this.device.createCommandEncoder( { label: 'computeGroup_' + computeGroup.id } ); + groupGPU.cmdEncoderGPU = this.device.createCommandEncoder( groupGPU.computePassDescriptor ); - groupGPU.passEncoderGPU = groupGPU.cmdEncoderGPU.beginComputePass( descriptor ); + groupGPU.passEncoderGPU = groupGPU.cmdEncoderGPU.beginComputePass( groupGPU.computePassDescriptor ); } From f05a02da0d0c233a03dd5965342a74fcfdf0c90d Mon Sep 17 00:00:00 2001 From: Christian Helgeson <62450112+cmhhelgeson@users.noreply.github.com> Date: Tue, 14 Oct 2025 16:31:22 -0700 Subject: [PATCH 2/4] fix --- examples/webgpu_compute_birds.html | 2 -- src/renderers/webgpu/WebGPUBackend.js | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/examples/webgpu_compute_birds.html b/examples/webgpu_compute_birds.html index d6fad9c8eec73d..4ab063caa5e7bd 100644 --- a/examples/webgpu_compute_birds.html +++ b/examples/webgpu_compute_birds.html @@ -412,8 +412,6 @@ } )().compute( BIRDS ).setName( 'Birds Velocity' ); - console.log( computeVelocity ); - computePosition = Fn( () => { const { deltaTime } = effectController; diff --git a/src/renderers/webgpu/WebGPUBackend.js b/src/renderers/webgpu/WebGPUBackend.js index 7d46ce3cd78e2c..22126c335857ee 100644 --- a/src/renderers/webgpu/WebGPUBackend.js +++ b/src/renderers/webgpu/WebGPUBackend.js @@ -1310,7 +1310,7 @@ class WebGPUBackend extends Backend { } - + // compute /** * This method is executed at the beginning of a compute call and From e55576b622af30a08d6c40ec1b8b38d0b985a6ab Mon Sep 17 00:00:00 2001 From: Christian Helgeson <62450112+cmhhelgeson@users.noreply.github.com> Date: Wed, 15 Oct 2025 12:56:50 -0700 Subject: [PATCH 3/4] update jsdoc --- src/renderers/common/Renderer.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/renderers/common/Renderer.js b/src/renderers/common/Renderer.js index daf9d6d0fd9c92..cc07d667b57fc6 100644 --- a/src/renderers/common/Renderer.js +++ b/src/renderers/common/Renderer.js @@ -2419,7 +2419,7 @@ class Renderer { * Execute a single or an array of compute nodes. This method can only be called * if the renderer has been initialized. * - * @param {Node|Array} computeNodes - The compute node(s). + * @param {ComputeNode|Array} computeNodes - The compute node(s). * @param {?(Array|number)} [dispatchSizeOrCount=null] - Array with [ x, y, z ] values for dispatch or a single number for the count. * @return {Promise|undefined} A Promise that resolve when the compute has finished. Only returned when the renderer has not been initialized. */ From ba86fd892fd7f6f7cec8993d3c9781ab68672904 Mon Sep 17 00:00:00 2001 From: Christian Helgeson <62450112+cmhhelgeson@users.noreply.github.com> Date: Sun, 19 Oct 2025 21:02:04 -0700 Subject: [PATCH 4/4] jsdoc --- src/renderers/common/Renderer.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/renderers/common/Renderer.js b/src/renderers/common/Renderer.js index cc07d667b57fc6..c6f98be8a27a50 100644 --- a/src/renderers/common/Renderer.js +++ b/src/renderers/common/Renderer.js @@ -2419,7 +2419,7 @@ class Renderer { * Execute a single or an array of compute nodes. This method can only be called * if the renderer has been initialized. * - * @param {ComputeNode|Array} computeNodes - The compute node(s). + * @param {ComputeNode|Array} computeNodes - The compute node(s) to be executed. * @param {?(Array|number)} [dispatchSizeOrCount=null] - Array with [ x, y, z ] values for dispatch or a single number for the count. * @return {Promise|undefined} A Promise that resolve when the compute has finished. Only returned when the renderer has not been initialized. */