From 4c2fb5b9b186efd580522a5b3e090c74a370da6b Mon Sep 17 00:00:00 2001 From: Michael Herzog Date: Fri, 12 Dec 2025 12:57:18 +0100 Subject: [PATCH 1/2] WebGPURenderer: Prevent translation of skybox. (#32537) --- src/renderers/common/Background.js | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/renderers/common/Background.js b/src/renderers/common/Background.js index 1fd94a1f03e535..6947c1225bfd1a 100644 --- a/src/renderers/common/Background.js +++ b/src/renderers/common/Background.js @@ -106,7 +106,12 @@ class Background extends DataMap { // compute vertex position const modifiedPosition = isOrtho.select( positionLocal.mul( orthoScale ), positionLocal ); - let viewProj = cameraProjectionMatrix.mul( modelViewMatrix.mul( vec4( modifiedPosition, 1.0 ) ) ); + + // by using a w component of 0, the skybox will not translate when the camera moves through the scene + const viewPosition = modelViewMatrix.mul( vec4( modifiedPosition, 0.0 ) ); + + // we force w=1.0 here to prevent the w_clip=0 divide-by-zero error for ortho cameras. + let viewProj = cameraProjectionMatrix.mul( vec4( viewPosition.xyz, 1.0 ) ); // force background to far plane so it does not occlude objects viewProj = viewProj.setZ( viewProj.w ); @@ -127,12 +132,6 @@ class Background extends DataMap { backgroundMesh.frustumCulled = false; backgroundMesh.name = 'Background.mesh'; - backgroundMesh.onBeforeRender = function ( renderer, scene, camera ) { - - this.matrixWorld.copyPosition( camera.matrixWorld ); - - }; - function onBackgroundDispose() { background.removeEventListener( 'dispose', onBackgroundDispose ); From 1d2a5f7d153f861351e09d1d66b1582772892dd9 Mon Sep 17 00:00:00 2001 From: Verekia <522007+verekia@users.noreply.github.com> Date: Fri, 12 Dec 2025 22:03:31 +0700 Subject: [PATCH 2/2] Prevent undefined GPUShaderStage (#32539) --- src/renderers/webgpu/utils/WebGPUConstants.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/renderers/webgpu/utils/WebGPUConstants.js b/src/renderers/webgpu/utils/WebGPUConstants.js index 47672b02426b5b..3915848688978a 100644 --- a/src/renderers/webgpu/utils/WebGPUConstants.js +++ b/src/renderers/webgpu/utils/WebGPUConstants.js @@ -6,7 +6,7 @@ export const GPUPrimitiveTopology = { TriangleStrip: 'triangle-strip', }; -export const GPUShaderStage = ( typeof self !== 'undefined' ) ? self.GPUShaderStage : { VERTEX: 1, FRAGMENT: 2, COMPUTE: 4 }; +export const GPUShaderStage = ( typeof self !== 'undefined' && self.GPUShaderStage ) ? self.GPUShaderStage : { VERTEX: 1, FRAGMENT: 2, COMPUTE: 4 }; export const GPUCompareFunction = { Never: 'never',