@@ -9,8 +9,8 @@ import type { ISmartArrayLike } from "./Misc/smartArray";
99import { SmartArrayNoDuplicate , SmartArray } from "./Misc/smartArray" ;
1010import { StringDictionary } from "./Misc/stringDictionary" ;
1111import { Tags } from "./Misc/tags" ;
12- import type { Vector2 , Vector4 } from "./Maths/math.vector" ;
13- import { Vector3 , Matrix , TmpVectors } from "./Maths/math.vector" ;
12+ import type { Vector2 } from "./Maths/math.vector" ;
13+ import { Vector3 , Vector4 , Matrix , TmpVectors } from "./Maths/math.vector" ;
1414import type { IParticleSystem } from "./Particles/IParticleSystem" ;
1515import { ImageProcessingConfiguration } from "./Materials/imageProcessingConfiguration" ;
1616import { UniformBuffer } from "./Materials/uniformBuffer" ;
@@ -240,6 +240,7 @@ export class Scene implements IAnimatable, IClipPlanesHolder, IAssetContainer {
240240
241241 private _clearColor : Color4 = new Color4 ( 0.2 , 0.2 , 0.3 , 1.0 ) ;
242242
243+ private _tempVect4 = new Vector4 ( ) ;
243244 /**
244245 * Observable triggered when the performance priority is changed
245246 */
@@ -1236,21 +1237,22 @@ export class Scene implements IAnimatable, IClipPlanesHolder, IAssetContainer {
12361237 : this . _mirroredCameraPosition
12371238 ? this . _mirroredCameraPosition
12381239 : ( this . activeCamera ?. globalPosition ?? Vector3 . ZeroReadOnly ) ;
1239-
12401240 const invertNormal = this . useRightHandedSystem === ( this . _mirroredCameraPosition != null ) ;
12411241
12421242 const offset = this . floatingOriginOffset ;
1243- const finalEyePos = TmpVectors . Vector4 [ 0 ] . set ( eyePosition . x - offset . x , eyePosition . y - offset . y , eyePosition . z - offset . z , invertNormal ? - 1 : 1 ) ;
1243+ const eyePos = this . _tempVect4 . set ( eyePosition . x , eyePosition . y , eyePosition . z , invertNormal ? - 1 : 1 ) ;
1244+ const offsetEyePos = eyePos . subtractFromFloatsToRef ( offset . x , offset . y , offset . z , 0 , TmpVectors . Vector4 [ 1 ] ) ;
12441245
12451246 if ( effect ) {
12461247 if ( isVector3 ) {
1247- effect . setFloat3 ( variableName , finalEyePos . x , finalEyePos . y , finalEyePos . z ) ;
1248+ effect . setFloat3 ( variableName , offsetEyePos . x , offsetEyePos . y , offsetEyePos . z ) ;
12481249 } else {
1249- effect . setVector4 ( variableName , finalEyePos ) ;
1250+ effect . setVector4 ( variableName , offsetEyePos ) ;
12501251 }
12511252 }
12521253
1253- return TmpVectors . Vector4 [ 0 ] ;
1254+ // Return the non-offset position
1255+ return eyePos ;
12541256 }
12551257
12561258 /**
0 commit comments