From 76d5e4f40c08b9a06f36ebfe88aa19c6c635ea75 Mon Sep 17 00:00:00 2001 From: Ritik Anand Date: Sun, 30 Nov 2025 21:38:56 +0530 Subject: [PATCH 1/2] Fix: WebGPUTextureUtils._getDefaultCubeTextureGPU using wrong cache (#32425) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: “SE7EN2028” <“RITIKGOTBUSY@GMAIL.COM”> --- src/renderers/webgpu/utils/WebGPUTextureUtils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/renderers/webgpu/utils/WebGPUTextureUtils.js b/src/renderers/webgpu/utils/WebGPUTextureUtils.js index cde2d7a7eabbfd..60f38fed406e18 100644 --- a/src/renderers/webgpu/utils/WebGPUTextureUtils.js +++ b/src/renderers/webgpu/utils/WebGPUTextureUtils.js @@ -683,7 +683,7 @@ class WebGPUTextureUtils { */ _getDefaultCubeTextureGPU( format ) { - let defaultCubeTexture = this.defaultTexture[ format ]; + let defaultCubeTexture = this.defaultCubeTexture[ format ]; if ( defaultCubeTexture === undefined ) { From 6a8392415b9019be18c516b913ef6f2aa2af3a99 Mon Sep 17 00:00:00 2001 From: Michael Herzog Date: Sun, 30 Nov 2025 17:10:46 +0100 Subject: [PATCH 2/2] SkinnedNode: Ensure `previousBoneMatrices` is defined for cloned skeletons. (#32422) --- src/nodes/accessors/SkinningNode.js | 15 ++++++++++++++- src/objects/Skeleton.js | 9 +++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/nodes/accessors/SkinningNode.js b/src/nodes/accessors/SkinningNode.js index 03824c52bf24c8..42ff7f54e7a2dd 100644 --- a/src/nodes/accessors/SkinningNode.js +++ b/src/nodes/accessors/SkinningNode.js @@ -282,7 +282,20 @@ class SkinningNode extends Node { _frameId.set( skeleton, frame.frameId ); - if ( this.previousBoneMatricesNode !== null ) skeleton.previousBoneMatrices.set( skeleton.boneMatrices ); + if ( this.previousBoneMatricesNode !== null ) { + + if ( skeleton.previousBoneMatrices === null ) { + + // cloned skeletons miss "previousBoneMatrices" in their first updated + + skeleton.previousBoneMatrices = new Float32Array( skeleton.boneMatrices ); + + } + + skeleton.previousBoneMatrices.set( skeleton.boneMatrices ); + + + } skeleton.update(); diff --git a/src/objects/Skeleton.js b/src/objects/Skeleton.js index 31384a9bcd40eb..5d1361086ae3c8 100644 --- a/src/objects/Skeleton.js +++ b/src/objects/Skeleton.js @@ -70,6 +70,15 @@ class Skeleton { */ this.boneMatrices = null; + /** + * An array buffer holding the bone data of the previous frame. + * Required for computing velocity. Maintained in {@link SkinningNode}. + * + * @type {?Float32Array} + * @default null + */ + this.previousBoneMatrices = null; + /** * A texture holding the bone data for use * in the vertex shader.