David `Deltakosh` Catuhe 5 роки тому
батько
коміт
8c55193e11

+ 43 - 16
dist/preview release/babylon.d.ts

@@ -1537,7 +1537,7 @@ declare module BABYLON {
      * @hidden
      */
     export interface IMatrixLike {
-        toArray(): DeepImmutable<Float32Array>;
+        toArray(): DeepImmutable<Float32Array | Array<number>>;
         updateFlag: int;
     }
     /**
@@ -2037,6 +2037,21 @@ declare module BABYLON {
     }
 }
 declare module BABYLON {
+    /** @hidden */
+    export class PerformanceConfigurator {
+        /** @hidden */
+        static MatrixUse64Bits: boolean;
+        /** @hidden */
+        static MatrixTrackPrecisionChange: boolean;
+        /** @hidden */
+        static MatrixCurrentType: any;
+        /** @hidden */
+        static MatrixTrackedMatrices: Array<any> | null;
+        /** @hidden */
+        static SetMatrixPrecision(use64bits: boolean): void;
+    }
+}
+declare module BABYLON {
     /**
      * Class representing a vector containing 2 coordinates
      */
@@ -4009,6 +4024,10 @@ declare module BABYLON {
      * Class used to store matrix data (4x4)
      */
     export class Matrix {
+        /**
+         * Gets the precision of matrix computations
+         */
+        static get Use64Bits(): boolean;
         private static _updateFlagSeed;
         private static _identityReadOnly;
         private _isIdentity;
@@ -4025,7 +4044,7 @@ declare module BABYLON {
         /**
          * Gets the internal data of the matrix
          */
-        get m(): DeepImmutable<Float32Array>;
+        get m(): DeepImmutable<Float32Array | Array<number>>;
         /** @hidden */
         _markAsUpdated(): void;
         /** @hidden */
@@ -4050,15 +4069,15 @@ declare module BABYLON {
          */
         determinant(): number;
         /**
-         * Returns the matrix as a Float32Array
+         * Returns the matrix as a Float32Array or Array<number>
          * @returns the matrix underlying array
          */
-        toArray(): DeepImmutable<Float32Array>;
+        toArray(): DeepImmutable<Float32Array | Array<number>>;
         /**
-         * Returns the matrix as a Float32Array
+         * Returns the matrix as a Float32Array or Array<number>
         * @returns the matrix underlying array.
         */
-        asArray(): DeepImmutable<Float32Array>;
+        asArray(): DeepImmutable<Float32Array | Array<number>>;
         /**
          * Inverts the current matrix in place
          * @returns the current inverted matrix
@@ -4164,7 +4183,7 @@ declare module BABYLON {
          * @param offset defines the offset in the target array where to start storing values
          * @returns the current matrix
          */
-        copyToArray(array: Float32Array, offset?: number): Matrix;
+        copyToArray(array: Float32Array | Array<number>, offset?: number): Matrix;
         /**
          * Sets the given matrix "result" with the multiplication result of the current Matrix and the given one
          * @param other defines the second operand
@@ -4179,7 +4198,7 @@ declare module BABYLON {
          * @param offset defines the offset in the target array where to start storing values
          * @returns the current matrix
          */
-        multiplyToArray(other: DeepImmutable<Matrix>, result: Float32Array, offset: number): Matrix;
+        multiplyToArray(other: DeepImmutable<Matrix>, result: Float32Array | Array<number>, offset: number): Matrix;
         /**
          * Check equality between this matrix and a second one
          * @param value defines the second matrix to compare
@@ -4308,7 +4327,7 @@ declare module BABYLON {
          * @param scale defines the scaling factor
          * @param result defines the target matrix
          */
-        static FromFloat32ArrayToRefScaled(array: DeepImmutable<Float32Array>, offset: number, scale: number, result: Matrix): void;
+        static FromFloat32ArrayToRefScaled(array: DeepImmutable<Float32Array | Array<number>>, offset: number, scale: number, result: Matrix): void;
         /**
          * Gets an identity matrix that must not be updated
          */
@@ -4731,13 +4750,13 @@ declare module BABYLON {
          * @param matrix defines the matrix to use
          * @returns a new Float32Array array with 4 elements : the 2x2 matrix extracted from the given matrix
          */
-        static GetAsMatrix2x2(matrix: DeepImmutable<Matrix>): Float32Array;
+        static GetAsMatrix2x2(matrix: DeepImmutable<Matrix>): Float32Array | Array<number>;
         /**
          * Extracts a 3x3 matrix from a given matrix and store the result in a Float32Array
          * @param matrix defines the matrix to use
          * @returns a new Float32Array array with 9 elements : the 3x3 matrix extracted from the given matrix
          */
-        static GetAsMatrix3x3(matrix: DeepImmutable<Matrix>): Float32Array;
+        static GetAsMatrix3x3(matrix: DeepImmutable<Matrix>): Float32Array | Array<number>;
         /**
          * Compute the transpose of a given matrix
          * @param matrix defines the matrix to transpose
@@ -16461,14 +16480,14 @@ declare module BABYLON {
          * @param value Define the value to give to the uniform
          * @return the material itself allowing "fluent" like uniform updates
          */
-        setMatrix3x3(name: string, value: Float32Array): ShaderMaterial;
+        setMatrix3x3(name: string, value: Float32Array | Array<number>): ShaderMaterial;
         /**
          * Set a mat2 in the shader from a Float32Array.
          * @param name Define the name of the uniform as defined in the shader
          * @param value Define the value to give to the uniform
          * @return the material itself allowing "fluent" like uniform updates
          */
-        setMatrix2x2(name: string, value: Float32Array): ShaderMaterial;
+        setMatrix2x2(name: string, value: Float32Array | Array<number>): ShaderMaterial;
         /**
          * Set a vec2 array in the shader from a number array.
          * @param name Define the name of the uniform as defined in the shader
@@ -33722,7 +33741,7 @@ declare module BABYLON {
          * @param matrices matrices to be set.
          * @returns this effect.
          */
-        setMatrices(uniformName: string, matrices: Float32Array): Effect;
+        setMatrices(uniformName: string, matrices: Float32Array | Array<number>): Effect;
         /**
          * Sets matrix on a uniform variable.
          * @param uniformName Name of the variable.
@@ -33736,14 +33755,14 @@ declare module BABYLON {
          * @param matrix matrix to be set.
          * @returns this effect.
          */
-        setMatrix3x3(uniformName: string, matrix: Float32Array): Effect;
+        setMatrix3x3(uniformName: string, matrix: Float32Array | Array<number>): Effect;
         /**
          * Sets a 2x2 matrix on a uniform variable. (Speicified as [1,2,3,4] will result in [1,2][3,4] matrix)
          * @param uniformName Name of the variable.
          * @param matrix matrix to be set.
          * @returns this effect.
          */
-        setMatrix2x2(uniformName: string, matrix: Float32Array): Effect;
+        setMatrix2x2(uniformName: string, matrix: Float32Array | Array<number>): Effect;
         /**
          * Sets a float on a uniform variable.
          * @param uniformName Name of the variable.
@@ -34332,6 +34351,10 @@ declare module BABYLON {
          * Make the canvas XR Compatible for XR sessions
          */
         xrCompatible?: boolean;
+        /**
+         * Make the matrix computations to be performed in 64 bits instead of 32 bits. False by default
+         */
+        useHighPrecisionMatrix?: boolean;
     }
     /**
      * The base engine class (root of all engines)
@@ -50636,6 +50659,10 @@ declare module BABYLON {
          * @see https://doc.babylonjs.com/babylon101/animations#deterministic-lockstep
          */
         lockstepMaxSteps: number;
+        /**
+         * Make the matrix computations to be performed in 64 bits instead of 32 bits. False by default
+         */
+        useHighPrecisionMatrix?: boolean;
     }
     /**
      * The null engine class provides support for headless version of babylon.js.

Різницю між файлами не показано, бо вона завелика
+ 2 - 2
dist/preview release/babylon.js


Різницю між файлами не показано, бо вона завелика
+ 85 - 10
dist/preview release/babylon.max.js


Різницю між файлами не показано, бо вона завелика
+ 1 - 1
dist/preview release/babylon.max.js.map


+ 87 - 32
dist/preview release/babylon.module.d.ts

@@ -1565,7 +1565,7 @@ declare module "babylonjs/Maths/math.like" {
      * @hidden
      */
     export interface IMatrixLike {
-        toArray(): DeepImmutable<Float32Array>;
+        toArray(): DeepImmutable<Float32Array | Array<number>>;
         updateFlag: int;
     }
     /**
@@ -2068,6 +2068,21 @@ declare module "babylonjs/Maths/math.plane" {
         static SignedDistanceToPlaneFromPositionAndNormal(origin: DeepImmutable<Vector3>, normal: DeepImmutable<Vector3>, point: DeepImmutable<Vector3>): number;
     }
 }
+declare module "babylonjs/Engines/performanceConfigurator" {
+    /** @hidden */
+    export class PerformanceConfigurator {
+        /** @hidden */
+        static MatrixUse64Bits: boolean;
+        /** @hidden */
+        static MatrixTrackPrecisionChange: boolean;
+        /** @hidden */
+        static MatrixCurrentType: any;
+        /** @hidden */
+        static MatrixTrackedMatrices: Array<any> | null;
+        /** @hidden */
+        static SetMatrixPrecision(use64bits: boolean): void;
+    }
+}
 declare module "babylonjs/Maths/math.vector" {
     import { Viewport } from "babylonjs/Maths/math.viewport";
     import { DeepImmutable, Nullable, FloatArray, float } from "babylonjs/types";
@@ -4045,6 +4060,10 @@ declare module "babylonjs/Maths/math.vector" {
      * Class used to store matrix data (4x4)
      */
     export class Matrix {
+        /**
+         * Gets the precision of matrix computations
+         */
+        static get Use64Bits(): boolean;
         private static _updateFlagSeed;
         private static _identityReadOnly;
         private _isIdentity;
@@ -4061,7 +4080,7 @@ declare module "babylonjs/Maths/math.vector" {
         /**
          * Gets the internal data of the matrix
          */
-        get m(): DeepImmutable<Float32Array>;
+        get m(): DeepImmutable<Float32Array | Array<number>>;
         /** @hidden */
         _markAsUpdated(): void;
         /** @hidden */
@@ -4086,15 +4105,15 @@ declare module "babylonjs/Maths/math.vector" {
          */
         determinant(): number;
         /**
-         * Returns the matrix as a Float32Array
+         * Returns the matrix as a Float32Array or Array<number>
          * @returns the matrix underlying array
          */
-        toArray(): DeepImmutable<Float32Array>;
+        toArray(): DeepImmutable<Float32Array | Array<number>>;
         /**
-         * Returns the matrix as a Float32Array
+         * Returns the matrix as a Float32Array or Array<number>
         * @returns the matrix underlying array.
         */
-        asArray(): DeepImmutable<Float32Array>;
+        asArray(): DeepImmutable<Float32Array | Array<number>>;
         /**
          * Inverts the current matrix in place
          * @returns the current inverted matrix
@@ -4200,7 +4219,7 @@ declare module "babylonjs/Maths/math.vector" {
          * @param offset defines the offset in the target array where to start storing values
          * @returns the current matrix
          */
-        copyToArray(array: Float32Array, offset?: number): Matrix;
+        copyToArray(array: Float32Array | Array<number>, offset?: number): Matrix;
         /**
          * Sets the given matrix "result" with the multiplication result of the current Matrix and the given one
          * @param other defines the second operand
@@ -4215,7 +4234,7 @@ declare module "babylonjs/Maths/math.vector" {
          * @param offset defines the offset in the target array where to start storing values
          * @returns the current matrix
          */
-        multiplyToArray(other: DeepImmutable<Matrix>, result: Float32Array, offset: number): Matrix;
+        multiplyToArray(other: DeepImmutable<Matrix>, result: Float32Array | Array<number>, offset: number): Matrix;
         /**
          * Check equality between this matrix and a second one
          * @param value defines the second matrix to compare
@@ -4344,7 +4363,7 @@ declare module "babylonjs/Maths/math.vector" {
          * @param scale defines the scaling factor
          * @param result defines the target matrix
          */
-        static FromFloat32ArrayToRefScaled(array: DeepImmutable<Float32Array>, offset: number, scale: number, result: Matrix): void;
+        static FromFloat32ArrayToRefScaled(array: DeepImmutable<Float32Array | Array<number>>, offset: number, scale: number, result: Matrix): void;
         /**
          * Gets an identity matrix that must not be updated
          */
@@ -4767,13 +4786,13 @@ declare module "babylonjs/Maths/math.vector" {
          * @param matrix defines the matrix to use
          * @returns a new Float32Array array with 4 elements : the 2x2 matrix extracted from the given matrix
          */
-        static GetAsMatrix2x2(matrix: DeepImmutable<Matrix>): Float32Array;
+        static GetAsMatrix2x2(matrix: DeepImmutable<Matrix>): Float32Array | Array<number>;
         /**
          * Extracts a 3x3 matrix from a given matrix and store the result in a Float32Array
          * @param matrix defines the matrix to use
          * @returns a new Float32Array array with 9 elements : the 3x3 matrix extracted from the given matrix
          */
-        static GetAsMatrix3x3(matrix: DeepImmutable<Matrix>): Float32Array;
+        static GetAsMatrix3x3(matrix: DeepImmutable<Matrix>): Float32Array | Array<number>;
         /**
          * Compute the transpose of a given matrix
          * @param matrix defines the matrix to transpose
@@ -16889,14 +16908,14 @@ declare module "babylonjs/Materials/shaderMaterial" {
          * @param value Define the value to give to the uniform
          * @return the material itself allowing "fluent" like uniform updates
          */
-        setMatrix3x3(name: string, value: Float32Array): ShaderMaterial;
+        setMatrix3x3(name: string, value: Float32Array | Array<number>): ShaderMaterial;
         /**
          * Set a mat2 in the shader from a Float32Array.
          * @param name Define the name of the uniform as defined in the shader
          * @param value Define the value to give to the uniform
          * @return the material itself allowing "fluent" like uniform updates
          */
-        setMatrix2x2(name: string, value: Float32Array): ShaderMaterial;
+        setMatrix2x2(name: string, value: Float32Array | Array<number>): ShaderMaterial;
         /**
          * Set a vec2 array in the shader from a number array.
          * @param name Define the name of the uniform as defined in the shader
@@ -34877,7 +34896,7 @@ declare module "babylonjs/Materials/effect" {
          * @param matrices matrices to be set.
          * @returns this effect.
          */
-        setMatrices(uniformName: string, matrices: Float32Array): Effect;
+        setMatrices(uniformName: string, matrices: Float32Array | Array<number>): Effect;
         /**
          * Sets matrix on a uniform variable.
          * @param uniformName Name of the variable.
@@ -34891,14 +34910,14 @@ declare module "babylonjs/Materials/effect" {
          * @param matrix matrix to be set.
          * @returns this effect.
          */
-        setMatrix3x3(uniformName: string, matrix: Float32Array): Effect;
+        setMatrix3x3(uniformName: string, matrix: Float32Array | Array<number>): Effect;
         /**
          * Sets a 2x2 matrix on a uniform variable. (Speicified as [1,2,3,4] will result in [1,2][3,4] matrix)
          * @param uniformName Name of the variable.
          * @param matrix matrix to be set.
          * @returns this effect.
          */
-        setMatrix2x2(uniformName: string, matrix: Float32Array): Effect;
+        setMatrix2x2(uniformName: string, matrix: Float32Array | Array<number>): Effect;
         /**
          * Sets a float on a uniform variable.
          * @param uniformName Name of the variable.
@@ -35527,6 +35546,10 @@ declare module "babylonjs/Engines/thinEngine" {
          * Make the canvas XR Compatible for XR sessions
          */
         xrCompatible?: boolean;
+        /**
+         * Make the matrix computations to be performed in 64 bits instead of 32 bits. False by default
+         */
+        useHighPrecisionMatrix?: boolean;
     }
     /**
      * The base engine class (root of all engines)
@@ -52662,6 +52685,10 @@ declare module "babylonjs/Engines/nullEngine" {
          * @see https://doc.babylonjs.com/babylon101/animations#deterministic-lockstep
          */
         lockstepMaxSteps: number;
+        /**
+         * Make the matrix computations to be performed in 64 bits instead of 32 bits. False by default
+         */
+        useHighPrecisionMatrix?: boolean;
     }
     /**
      * The null engine class provides support for headless version of babylon.js.
@@ -54089,6 +54116,7 @@ declare module "babylonjs/Engines/index" {
     export * from "babylonjs/Engines/WebGL/webGL2ShaderProcessors";
     export * from "babylonjs/Engines/nativeEngine";
     export * from "babylonjs/Engines/Processors/shaderCodeInliner";
+    export * from "babylonjs/Engines/performanceConfigurator";
 }
 declare module "babylonjs/Events/clipboardEvents" {
     /**
@@ -79902,7 +79930,7 @@ declare module BABYLON {
      * @hidden
      */
     export interface IMatrixLike {
-        toArray(): DeepImmutable<Float32Array>;
+        toArray(): DeepImmutable<Float32Array | Array<number>>;
         updateFlag: int;
     }
     /**
@@ -80402,6 +80430,21 @@ declare module BABYLON {
     }
 }
 declare module BABYLON {
+    /** @hidden */
+    export class PerformanceConfigurator {
+        /** @hidden */
+        static MatrixUse64Bits: boolean;
+        /** @hidden */
+        static MatrixTrackPrecisionChange: boolean;
+        /** @hidden */
+        static MatrixCurrentType: any;
+        /** @hidden */
+        static MatrixTrackedMatrices: Array<any> | null;
+        /** @hidden */
+        static SetMatrixPrecision(use64bits: boolean): void;
+    }
+}
+declare module BABYLON {
     /**
      * Class representing a vector containing 2 coordinates
      */
@@ -82374,6 +82417,10 @@ declare module BABYLON {
      * Class used to store matrix data (4x4)
      */
     export class Matrix {
+        /**
+         * Gets the precision of matrix computations
+         */
+        static get Use64Bits(): boolean;
         private static _updateFlagSeed;
         private static _identityReadOnly;
         private _isIdentity;
@@ -82390,7 +82437,7 @@ declare module BABYLON {
         /**
          * Gets the internal data of the matrix
          */
-        get m(): DeepImmutable<Float32Array>;
+        get m(): DeepImmutable<Float32Array | Array<number>>;
         /** @hidden */
         _markAsUpdated(): void;
         /** @hidden */
@@ -82415,15 +82462,15 @@ declare module BABYLON {
          */
         determinant(): number;
         /**
-         * Returns the matrix as a Float32Array
+         * Returns the matrix as a Float32Array or Array<number>
          * @returns the matrix underlying array
          */
-        toArray(): DeepImmutable<Float32Array>;
+        toArray(): DeepImmutable<Float32Array | Array<number>>;
         /**
-         * Returns the matrix as a Float32Array
+         * Returns the matrix as a Float32Array or Array<number>
         * @returns the matrix underlying array.
         */
-        asArray(): DeepImmutable<Float32Array>;
+        asArray(): DeepImmutable<Float32Array | Array<number>>;
         /**
          * Inverts the current matrix in place
          * @returns the current inverted matrix
@@ -82529,7 +82576,7 @@ declare module BABYLON {
          * @param offset defines the offset in the target array where to start storing values
          * @returns the current matrix
          */
-        copyToArray(array: Float32Array, offset?: number): Matrix;
+        copyToArray(array: Float32Array | Array<number>, offset?: number): Matrix;
         /**
          * Sets the given matrix "result" with the multiplication result of the current Matrix and the given one
          * @param other defines the second operand
@@ -82544,7 +82591,7 @@ declare module BABYLON {
          * @param offset defines the offset in the target array where to start storing values
          * @returns the current matrix
          */
-        multiplyToArray(other: DeepImmutable<Matrix>, result: Float32Array, offset: number): Matrix;
+        multiplyToArray(other: DeepImmutable<Matrix>, result: Float32Array | Array<number>, offset: number): Matrix;
         /**
          * Check equality between this matrix and a second one
          * @param value defines the second matrix to compare
@@ -82673,7 +82720,7 @@ declare module BABYLON {
          * @param scale defines the scaling factor
          * @param result defines the target matrix
          */
-        static FromFloat32ArrayToRefScaled(array: DeepImmutable<Float32Array>, offset: number, scale: number, result: Matrix): void;
+        static FromFloat32ArrayToRefScaled(array: DeepImmutable<Float32Array | Array<number>>, offset: number, scale: number, result: Matrix): void;
         /**
          * Gets an identity matrix that must not be updated
          */
@@ -83096,13 +83143,13 @@ declare module BABYLON {
          * @param matrix defines the matrix to use
          * @returns a new Float32Array array with 4 elements : the 2x2 matrix extracted from the given matrix
          */
-        static GetAsMatrix2x2(matrix: DeepImmutable<Matrix>): Float32Array;
+        static GetAsMatrix2x2(matrix: DeepImmutable<Matrix>): Float32Array | Array<number>;
         /**
          * Extracts a 3x3 matrix from a given matrix and store the result in a Float32Array
          * @param matrix defines the matrix to use
          * @returns a new Float32Array array with 9 elements : the 3x3 matrix extracted from the given matrix
          */
-        static GetAsMatrix3x3(matrix: DeepImmutable<Matrix>): Float32Array;
+        static GetAsMatrix3x3(matrix: DeepImmutable<Matrix>): Float32Array | Array<number>;
         /**
          * Compute the transpose of a given matrix
          * @param matrix defines the matrix to transpose
@@ -94826,14 +94873,14 @@ declare module BABYLON {
          * @param value Define the value to give to the uniform
          * @return the material itself allowing "fluent" like uniform updates
          */
-        setMatrix3x3(name: string, value: Float32Array): ShaderMaterial;
+        setMatrix3x3(name: string, value: Float32Array | Array<number>): ShaderMaterial;
         /**
          * Set a mat2 in the shader from a Float32Array.
          * @param name Define the name of the uniform as defined in the shader
          * @param value Define the value to give to the uniform
          * @return the material itself allowing "fluent" like uniform updates
          */
-        setMatrix2x2(name: string, value: Float32Array): ShaderMaterial;
+        setMatrix2x2(name: string, value: Float32Array | Array<number>): ShaderMaterial;
         /**
          * Set a vec2 array in the shader from a number array.
          * @param name Define the name of the uniform as defined in the shader
@@ -112087,7 +112134,7 @@ declare module BABYLON {
          * @param matrices matrices to be set.
          * @returns this effect.
          */
-        setMatrices(uniformName: string, matrices: Float32Array): Effect;
+        setMatrices(uniformName: string, matrices: Float32Array | Array<number>): Effect;
         /**
          * Sets matrix on a uniform variable.
          * @param uniformName Name of the variable.
@@ -112101,14 +112148,14 @@ declare module BABYLON {
          * @param matrix matrix to be set.
          * @returns this effect.
          */
-        setMatrix3x3(uniformName: string, matrix: Float32Array): Effect;
+        setMatrix3x3(uniformName: string, matrix: Float32Array | Array<number>): Effect;
         /**
          * Sets a 2x2 matrix on a uniform variable. (Speicified as [1,2,3,4] will result in [1,2][3,4] matrix)
          * @param uniformName Name of the variable.
          * @param matrix matrix to be set.
          * @returns this effect.
          */
-        setMatrix2x2(uniformName: string, matrix: Float32Array): Effect;
+        setMatrix2x2(uniformName: string, matrix: Float32Array | Array<number>): Effect;
         /**
          * Sets a float on a uniform variable.
          * @param uniformName Name of the variable.
@@ -112697,6 +112744,10 @@ declare module BABYLON {
          * Make the canvas XR Compatible for XR sessions
          */
         xrCompatible?: boolean;
+        /**
+         * Make the matrix computations to be performed in 64 bits instead of 32 bits. False by default
+         */
+        useHighPrecisionMatrix?: boolean;
     }
     /**
      * The base engine class (root of all engines)
@@ -129001,6 +129052,10 @@ declare module BABYLON {
          * @see https://doc.babylonjs.com/babylon101/animations#deterministic-lockstep
          */
         lockstepMaxSteps: number;
+        /**
+         * Make the matrix computations to be performed in 64 bits instead of 32 bits. False by default
+         */
+        useHighPrecisionMatrix?: boolean;
     }
     /**
      * The null engine class provides support for headless version of babylon.js.

+ 43 - 16
dist/preview release/documentation.d.ts

@@ -1537,7 +1537,7 @@ declare module BABYLON {
      * @hidden
      */
     export interface IMatrixLike {
-        toArray(): DeepImmutable<Float32Array>;
+        toArray(): DeepImmutable<Float32Array | Array<number>>;
         updateFlag: int;
     }
     /**
@@ -2037,6 +2037,21 @@ declare module BABYLON {
     }
 }
 declare module BABYLON {
+    /** @hidden */
+    export class PerformanceConfigurator {
+        /** @hidden */
+        static MatrixUse64Bits: boolean;
+        /** @hidden */
+        static MatrixTrackPrecisionChange: boolean;
+        /** @hidden */
+        static MatrixCurrentType: any;
+        /** @hidden */
+        static MatrixTrackedMatrices: Array<any> | null;
+        /** @hidden */
+        static SetMatrixPrecision(use64bits: boolean): void;
+    }
+}
+declare module BABYLON {
     /**
      * Class representing a vector containing 2 coordinates
      */
@@ -4009,6 +4024,10 @@ declare module BABYLON {
      * Class used to store matrix data (4x4)
      */
     export class Matrix {
+        /**
+         * Gets the precision of matrix computations
+         */
+        static get Use64Bits(): boolean;
         private static _updateFlagSeed;
         private static _identityReadOnly;
         private _isIdentity;
@@ -4025,7 +4044,7 @@ declare module BABYLON {
         /**
          * Gets the internal data of the matrix
          */
-        get m(): DeepImmutable<Float32Array>;
+        get m(): DeepImmutable<Float32Array | Array<number>>;
         /** @hidden */
         _markAsUpdated(): void;
         /** @hidden */
@@ -4050,15 +4069,15 @@ declare module BABYLON {
          */
         determinant(): number;
         /**
-         * Returns the matrix as a Float32Array
+         * Returns the matrix as a Float32Array or Array<number>
          * @returns the matrix underlying array
          */
-        toArray(): DeepImmutable<Float32Array>;
+        toArray(): DeepImmutable<Float32Array | Array<number>>;
         /**
-         * Returns the matrix as a Float32Array
+         * Returns the matrix as a Float32Array or Array<number>
         * @returns the matrix underlying array.
         */
-        asArray(): DeepImmutable<Float32Array>;
+        asArray(): DeepImmutable<Float32Array | Array<number>>;
         /**
          * Inverts the current matrix in place
          * @returns the current inverted matrix
@@ -4164,7 +4183,7 @@ declare module BABYLON {
          * @param offset defines the offset in the target array where to start storing values
          * @returns the current matrix
          */
-        copyToArray(array: Float32Array, offset?: number): Matrix;
+        copyToArray(array: Float32Array | Array<number>, offset?: number): Matrix;
         /**
          * Sets the given matrix "result" with the multiplication result of the current Matrix and the given one
          * @param other defines the second operand
@@ -4179,7 +4198,7 @@ declare module BABYLON {
          * @param offset defines the offset in the target array where to start storing values
          * @returns the current matrix
          */
-        multiplyToArray(other: DeepImmutable<Matrix>, result: Float32Array, offset: number): Matrix;
+        multiplyToArray(other: DeepImmutable<Matrix>, result: Float32Array | Array<number>, offset: number): Matrix;
         /**
          * Check equality between this matrix and a second one
          * @param value defines the second matrix to compare
@@ -4308,7 +4327,7 @@ declare module BABYLON {
          * @param scale defines the scaling factor
          * @param result defines the target matrix
          */
-        static FromFloat32ArrayToRefScaled(array: DeepImmutable<Float32Array>, offset: number, scale: number, result: Matrix): void;
+        static FromFloat32ArrayToRefScaled(array: DeepImmutable<Float32Array | Array<number>>, offset: number, scale: number, result: Matrix): void;
         /**
          * Gets an identity matrix that must not be updated
          */
@@ -4731,13 +4750,13 @@ declare module BABYLON {
          * @param matrix defines the matrix to use
          * @returns a new Float32Array array with 4 elements : the 2x2 matrix extracted from the given matrix
          */
-        static GetAsMatrix2x2(matrix: DeepImmutable<Matrix>): Float32Array;
+        static GetAsMatrix2x2(matrix: DeepImmutable<Matrix>): Float32Array | Array<number>;
         /**
          * Extracts a 3x3 matrix from a given matrix and store the result in a Float32Array
          * @param matrix defines the matrix to use
          * @returns a new Float32Array array with 9 elements : the 3x3 matrix extracted from the given matrix
          */
-        static GetAsMatrix3x3(matrix: DeepImmutable<Matrix>): Float32Array;
+        static GetAsMatrix3x3(matrix: DeepImmutable<Matrix>): Float32Array | Array<number>;
         /**
          * Compute the transpose of a given matrix
          * @param matrix defines the matrix to transpose
@@ -16461,14 +16480,14 @@ declare module BABYLON {
          * @param value Define the value to give to the uniform
          * @return the material itself allowing "fluent" like uniform updates
          */
-        setMatrix3x3(name: string, value: Float32Array): ShaderMaterial;
+        setMatrix3x3(name: string, value: Float32Array | Array<number>): ShaderMaterial;
         /**
          * Set a mat2 in the shader from a Float32Array.
          * @param name Define the name of the uniform as defined in the shader
          * @param value Define the value to give to the uniform
          * @return the material itself allowing "fluent" like uniform updates
          */
-        setMatrix2x2(name: string, value: Float32Array): ShaderMaterial;
+        setMatrix2x2(name: string, value: Float32Array | Array<number>): ShaderMaterial;
         /**
          * Set a vec2 array in the shader from a number array.
          * @param name Define the name of the uniform as defined in the shader
@@ -33722,7 +33741,7 @@ declare module BABYLON {
          * @param matrices matrices to be set.
          * @returns this effect.
          */
-        setMatrices(uniformName: string, matrices: Float32Array): Effect;
+        setMatrices(uniformName: string, matrices: Float32Array | Array<number>): Effect;
         /**
          * Sets matrix on a uniform variable.
          * @param uniformName Name of the variable.
@@ -33736,14 +33755,14 @@ declare module BABYLON {
          * @param matrix matrix to be set.
          * @returns this effect.
          */
-        setMatrix3x3(uniformName: string, matrix: Float32Array): Effect;
+        setMatrix3x3(uniformName: string, matrix: Float32Array | Array<number>): Effect;
         /**
          * Sets a 2x2 matrix on a uniform variable. (Speicified as [1,2,3,4] will result in [1,2][3,4] matrix)
          * @param uniformName Name of the variable.
          * @param matrix matrix to be set.
          * @returns this effect.
          */
-        setMatrix2x2(uniformName: string, matrix: Float32Array): Effect;
+        setMatrix2x2(uniformName: string, matrix: Float32Array | Array<number>): Effect;
         /**
          * Sets a float on a uniform variable.
          * @param uniformName Name of the variable.
@@ -34332,6 +34351,10 @@ declare module BABYLON {
          * Make the canvas XR Compatible for XR sessions
          */
         xrCompatible?: boolean;
+        /**
+         * Make the matrix computations to be performed in 64 bits instead of 32 bits. False by default
+         */
+        useHighPrecisionMatrix?: boolean;
     }
     /**
      * The base engine class (root of all engines)
@@ -50636,6 +50659,10 @@ declare module BABYLON {
          * @see https://doc.babylonjs.com/babylon101/animations#deterministic-lockstep
          */
         lockstepMaxSteps: number;
+        /**
+         * Make the matrix computations to be performed in 64 bits instead of 32 bits. False by default
+         */
+        useHighPrecisionMatrix?: boolean;
     }
     /**
      * The null engine class provides support for headless version of babylon.js.

+ 48 - 48
dist/preview release/gui/babylon.gui.js

@@ -7,7 +7,7 @@
 		exports["babylonjs-gui"] = factory(require("babylonjs"));
 	else
 		root["BABYLON"] = root["BABYLON"] || {}, root["BABYLON"]["GUI"] = factory(root["BABYLON"]);
-})((typeof self !== "undefined" ? self : typeof global !== "undefined" ? global : this), function(__WEBPACK_EXTERNAL_MODULE_babylonjs_Misc_observable__) {
+})((typeof self !== "undefined" ? self : typeof global !== "undefined" ? global : this), function(__WEBPACK_EXTERNAL_MODULE_babylonjs_Maths_math_vector__) {
 return /******/ (function(modules) { // webpackBootstrap
 /******/ 	// The module cache
 /******/ 	var installedModules = {};
@@ -400,7 +400,7 @@ module.exports = g;
 "use strict";
 __webpack_require__.r(__webpack_exports__);
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AdvancedDynamicTextureInstrumentation", function() { return AdvancedDynamicTextureInstrumentation; });
-/* harmony import */ var babylonjs_Misc_perfCounter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Misc/perfCounter */ "babylonjs/Misc/observable");
+/* harmony import */ var babylonjs_Misc_perfCounter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Misc/perfCounter */ "babylonjs/Maths/math.vector");
 /* harmony import */ var babylonjs_Misc_perfCounter__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_perfCounter__WEBPACK_IMPORTED_MODULE_0__);
 
 /**
@@ -543,7 +543,7 @@ var AdvancedDynamicTextureInstrumentation = /** @class */ (function () {
 __webpack_require__.r(__webpack_exports__);
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AdvancedDynamicTexture", function() { return AdvancedDynamicTexture; });
 /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
-/* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/observable");
+/* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Maths/math.vector");
 /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__);
 /* harmony import */ var _controls_container__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./controls/container */ "./2D/controls/container.ts");
 /* harmony import */ var _style__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./style */ "./2D/style.ts");
@@ -1515,7 +1515,7 @@ __webpack_require__.r(__webpack_exports__);
 /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
 /* harmony import */ var _textBlock__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./textBlock */ "./2D/controls/textBlock.ts");
 /* harmony import */ var _image__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./image */ "./2D/controls/image.ts");
-/* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/observable");
+/* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Maths/math.vector");
 /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_5__);
 
 
@@ -1747,7 +1747,7 @@ babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_5__["_TypeStore"].RegisteredTy
 __webpack_require__.r(__webpack_exports__);
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Checkbox", function() { return Checkbox; });
 /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
-/* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/observable");
+/* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Maths/math.vector");
 /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__);
 /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
 /* harmony import */ var _stackPanel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./stackPanel */ "./2D/controls/stackPanel.ts");
@@ -1930,7 +1930,7 @@ babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["_TypeStore"].RegisteredT
 __webpack_require__.r(__webpack_exports__);
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ColorPicker", function() { return ColorPicker; });
 /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
-/* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/observable");
+/* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Maths/math.vector");
 /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__);
 /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
 /* harmony import */ var _inputText__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./inputText */ "./2D/controls/inputText.ts");
@@ -3319,7 +3319,7 @@ babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["_TypeStore"].RegisteredT
 __webpack_require__.r(__webpack_exports__);
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Container", function() { return Container; });
 /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
-/* harmony import */ var babylonjs_Misc_logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/logger */ "babylonjs/Misc/observable");
+/* harmony import */ var babylonjs_Misc_logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/logger */ "babylonjs/Maths/math.vector");
 /* harmony import */ var babylonjs_Misc_logger__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_logger__WEBPACK_IMPORTED_MODULE_1__);
 /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
 /* harmony import */ var _measure__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../measure */ "./2D/measure.ts");
@@ -3734,7 +3734,7 @@ babylonjs_Misc_logger__WEBPACK_IMPORTED_MODULE_1__["_TypeStore"].RegisteredTypes
 "use strict";
 __webpack_require__.r(__webpack_exports__);
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Control", function() { return Control; });
-/* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/observable");
+/* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Maths/math.vector");
 /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0__);
 /* harmony import */ var _valueAndUnit__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../valueAndUnit */ "./2D/valueAndUnit.ts");
 /* harmony import */ var _measure__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../measure */ "./2D/measure.ts");
@@ -5660,7 +5660,7 @@ __webpack_require__.r(__webpack_exports__);
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DisplayGrid", function() { return DisplayGrid; });
 /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
 /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
-/* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/observable");
+/* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Maths/math.vector");
 /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__);
 
 
@@ -5893,7 +5893,7 @@ __webpack_require__.r(__webpack_exports__);
 /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
 /* harmony import */ var _container__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./container */ "./2D/controls/container.ts");
 /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
-/* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/observable");
+/* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Maths/math.vector");
 /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_3__);
 
 
@@ -5990,7 +5990,7 @@ __webpack_require__.r(__webpack_exports__);
 /* harmony import */ var _container__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./container */ "./2D/controls/container.ts");
 /* harmony import */ var _valueAndUnit__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../valueAndUnit */ "./2D/valueAndUnit.ts");
 /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
-/* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Misc/observable");
+/* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Maths/math.vector");
 /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_4__);
 
 
@@ -6448,7 +6448,7 @@ babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_4__["_TypeStore"].RegisteredTypes[
 __webpack_require__.r(__webpack_exports__);
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Image", function() { return Image; });
 /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
-/* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/observable");
+/* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Maths/math.vector");
 /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__);
 /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
 
@@ -7375,7 +7375,7 @@ __webpack_require__.r(__webpack_exports__);
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "InputPassword", function() { return InputPassword; });
 /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
 /* harmony import */ var _inputText__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./inputText */ "./2D/controls/inputText.ts");
-/* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/observable");
+/* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Maths/math.vector");
 /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__);
 
 
@@ -7414,7 +7414,7 @@ babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__["_TypeStore"].RegisteredTy
 __webpack_require__.r(__webpack_exports__);
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "InputText", function() { return InputText; });
 /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
-/* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/observable");
+/* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Maths/math.vector");
 /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__);
 /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
 /* harmony import */ var _valueAndUnit__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../valueAndUnit */ "./2D/valueAndUnit.ts");
@@ -8427,7 +8427,7 @@ babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["_TypeStore"].RegisteredT
 __webpack_require__.r(__webpack_exports__);
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Line", function() { return Line; });
 /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
-/* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/observable");
+/* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Maths/math.vector");
 /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__);
 /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
 /* harmony import */ var _valueAndUnit__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../valueAndUnit */ "./2D/valueAndUnit.ts");
@@ -8698,7 +8698,7 @@ babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__["_TypeStore"].Registere
 __webpack_require__.r(__webpack_exports__);
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MultiLine", function() { return MultiLine; });
 /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
-/* harmony import */ var babylonjs_Meshes_abstractMesh__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Meshes/abstractMesh */ "babylonjs/Misc/observable");
+/* harmony import */ var babylonjs_Meshes_abstractMesh__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Meshes/abstractMesh */ "babylonjs/Maths/math.vector");
 /* harmony import */ var babylonjs_Meshes_abstractMesh__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Meshes_abstractMesh__WEBPACK_IMPORTED_MODULE_1__);
 /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
 /* harmony import */ var _multiLinePoint__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../multiLinePoint */ "./2D/multiLinePoint.ts");
@@ -8968,7 +8968,7 @@ babylonjs_Meshes_abstractMesh__WEBPACK_IMPORTED_MODULE_1__["_TypeStore"].Registe
 __webpack_require__.r(__webpack_exports__);
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RadioButton", function() { return RadioButton; });
 /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
-/* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/observable");
+/* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Maths/math.vector");
 /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__);
 /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
 /* harmony import */ var _stackPanel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./stackPanel */ "./2D/controls/stackPanel.ts");
@@ -9175,7 +9175,7 @@ __webpack_require__.r(__webpack_exports__);
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Rectangle", function() { return Rectangle; });
 /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
 /* harmony import */ var _container__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./container */ "./2D/controls/container.ts");
-/* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/observable");
+/* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Maths/math.vector");
 /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__);
 
 
@@ -9325,7 +9325,7 @@ __webpack_require__.r(__webpack_exports__);
 /* harmony import */ var _scrollViewerWindow__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./scrollViewerWindow */ "./2D/controls/scrollViewers/scrollViewerWindow.ts");
 /* harmony import */ var _sliders_scrollBar__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../sliders/scrollBar */ "./2D/controls/sliders/scrollBar.ts");
 /* harmony import */ var _sliders_imageScrollBar__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../sliders/imageScrollBar */ "./2D/controls/sliders/imageScrollBar.ts");
-/* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/observable");
+/* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Maths/math.vector");
 /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_7__);
 
 
@@ -10948,7 +10948,7 @@ var SelectionPanel = /** @class */ (function (_super) {
 __webpack_require__.r(__webpack_exports__);
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BaseSlider", function() { return BaseSlider; });
 /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
-/* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/observable");
+/* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Maths/math.vector");
 /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__);
 /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../control */ "./2D/controls/control.ts");
 /* harmony import */ var _valueAndUnit__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../valueAndUnit */ "./2D/valueAndUnit.ts");
@@ -11278,7 +11278,7 @@ __webpack_require__.r(__webpack_exports__);
 /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
 /* harmony import */ var _baseSlider__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./baseSlider */ "./2D/controls/sliders/baseSlider.ts");
 /* harmony import */ var _measure__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../measure */ "./2D/measure.ts");
-/* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/observable");
+/* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Maths/math.vector");
 /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_3__);
 
 
@@ -11871,7 +11871,7 @@ __webpack_require__.r(__webpack_exports__);
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Slider", function() { return Slider; });
 /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
 /* harmony import */ var _baseSlider__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./baseSlider */ "./2D/controls/sliders/baseSlider.ts");
-/* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/observable");
+/* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Maths/math.vector");
 /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__);
 
 
@@ -12126,7 +12126,7 @@ babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__["_TypeStore"].RegisteredTy
 __webpack_require__.r(__webpack_exports__);
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "StackPanel", function() { return StackPanel; });
 /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
-/* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Misc/observable");
+/* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Maths/math.vector");
 /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__);
 /* harmony import */ var _container__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./container */ "./2D/controls/container.ts");
 /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
@@ -12394,7 +12394,7 @@ __webpack_require__.r(__webpack_exports__);
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TextWrapping", function() { return TextWrapping; });
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TextBlock", function() { return TextBlock; });
 /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
-/* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/observable");
+/* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Maths/math.vector");
 /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__);
 /* harmony import */ var _valueAndUnit__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../valueAndUnit */ "./2D/valueAndUnit.ts");
 /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
@@ -12857,7 +12857,7 @@ __webpack_require__.r(__webpack_exports__);
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "KeyPropertySet", function() { return KeyPropertySet; });
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "VirtualKeyboard", function() { return VirtualKeyboard; });
 /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
-/* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/observable");
+/* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Maths/math.vector");
 /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__);
 /* harmony import */ var _stackPanel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./stackPanel */ "./2D/controls/stackPanel.ts");
 /* harmony import */ var _button__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./button */ "./2D/controls/button.ts");
@@ -13246,7 +13246,7 @@ __webpack_require__.r(__webpack_exports__);
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Vector2WithInfo", function() { return Vector2WithInfo; });
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Matrix2D", function() { return Matrix2D; });
 /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
-/* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/observable");
+/* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Maths/math.vector");
 /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__);
 
 
@@ -13471,7 +13471,7 @@ var Matrix2D = /** @class */ (function () {
 "use strict";
 __webpack_require__.r(__webpack_exports__);
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Measure", function() { return Measure; });
-/* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/observable");
+/* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Maths/math.vector");
 /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_0__);
 
 var tmpRect = [
@@ -13620,7 +13620,7 @@ var Measure = /** @class */ (function () {
 "use strict";
 __webpack_require__.r(__webpack_exports__);
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MultiLinePoint", function() { return MultiLinePoint; });
-/* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/observable");
+/* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Maths/math.vector");
 /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_0__);
 /* harmony import */ var _valueAndUnit__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./valueAndUnit */ "./2D/valueAndUnit.ts");
 
@@ -13763,7 +13763,7 @@ var MultiLinePoint = /** @class */ (function () {
 "use strict";
 __webpack_require__.r(__webpack_exports__);
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Style", function() { return Style; });
-/* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/observable");
+/* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Maths/math.vector");
 /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0__);
 /* harmony import */ var _valueAndUnit__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./valueAndUnit */ "./2D/valueAndUnit.ts");
 
@@ -14069,7 +14069,7 @@ var ValueAndUnit = /** @class */ (function () {
 "use strict";
 __webpack_require__.r(__webpack_exports__);
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "XmlLoader", function() { return XmlLoader; });
-/* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/observable");
+/* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Maths/math.vector");
 /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_0__);
 
 /**
@@ -14388,7 +14388,7 @@ var XmlLoader = /** @class */ (function () {
 __webpack_require__.r(__webpack_exports__);
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AbstractButton3D", function() { return AbstractButton3D; });
 /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
-/* harmony import */ var babylonjs_Meshes_transformNode__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Meshes/transformNode */ "babylonjs/Misc/observable");
+/* harmony import */ var babylonjs_Meshes_transformNode__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Meshes/transformNode */ "babylonjs/Maths/math.vector");
 /* harmony import */ var babylonjs_Meshes_transformNode__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Meshes_transformNode__WEBPACK_IMPORTED_MODULE_1__);
 /* harmony import */ var _control3D__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control3D */ "./3D/controls/control3D.ts");
 
@@ -14431,7 +14431,7 @@ var AbstractButton3D = /** @class */ (function (_super) {
 __webpack_require__.r(__webpack_exports__);
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Button3D", function() { return Button3D; });
 /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
-/* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/observable");
+/* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Maths/math.vector");
 /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__);
 /* harmony import */ var _abstractButton3D__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./abstractButton3D */ "./3D/controls/abstractButton3D.ts");
 /* harmony import */ var _2D_advancedDynamicTexture__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../2D/advancedDynamicTexture */ "./2D/advancedDynamicTexture.ts");
@@ -14612,7 +14612,7 @@ var Button3D = /** @class */ (function (_super) {
 __webpack_require__.r(__webpack_exports__);
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Container3D", function() { return Container3D; });
 /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
-/* harmony import */ var babylonjs_Meshes_transformNode__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Meshes/transformNode */ "babylonjs/Misc/observable");
+/* harmony import */ var babylonjs_Meshes_transformNode__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Meshes/transformNode */ "babylonjs/Maths/math.vector");
 /* harmony import */ var babylonjs_Meshes_transformNode__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Meshes_transformNode__WEBPACK_IMPORTED_MODULE_1__);
 /* harmony import */ var _control3D__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control3D */ "./3D/controls/control3D.ts");
 
@@ -14769,7 +14769,7 @@ var Container3D = /** @class */ (function (_super) {
 "use strict";
 __webpack_require__.r(__webpack_exports__);
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Control3D", function() { return Control3D; });
-/* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/observable");
+/* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Maths/math.vector");
 /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0__);
 /* harmony import */ var _vector3WithInfo__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../vector3WithInfo */ "./3D/vector3WithInfo.ts");
 
@@ -15175,7 +15175,7 @@ var Control3D = /** @class */ (function () {
 __webpack_require__.r(__webpack_exports__);
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CylinderPanel", function() { return CylinderPanel; });
 /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
-/* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Misc/observable");
+/* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Maths/math.vector");
 /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__);
 /* harmony import */ var _volumeBasedPanel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./volumeBasedPanel */ "./3D/controls/volumeBasedPanel.ts");
 /* harmony import */ var _container3D__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./container3D */ "./3D/controls/container3D.ts");
@@ -15261,7 +15261,7 @@ __webpack_require__.r(__webpack_exports__);
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HolographicButton", function() { return HolographicButton; });
 /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
 /* harmony import */ var _button3D__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./button3D */ "./3D/controls/button3D.ts");
-/* harmony import */ var babylonjs_Materials_standardMaterial__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Materials/standardMaterial */ "babylonjs/Misc/observable");
+/* harmony import */ var babylonjs_Materials_standardMaterial__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Materials/standardMaterial */ "babylonjs/Maths/math.vector");
 /* harmony import */ var babylonjs_Materials_standardMaterial__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Materials_standardMaterial__WEBPACK_IMPORTED_MODULE_2__);
 /* harmony import */ var _materials_fluentMaterial__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../materials/fluentMaterial */ "./3D/materials/fluentMaterial.ts");
 /* harmony import */ var _2D_controls_stackPanel__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../2D/controls/stackPanel */ "./2D/controls/stackPanel.ts");
@@ -15755,7 +15755,7 @@ var MeshButton3D = /** @class */ (function (_super) {
 __webpack_require__.r(__webpack_exports__);
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PlanePanel", function() { return PlanePanel; });
 /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
-/* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/observable");
+/* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Maths/math.vector");
 /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__);
 /* harmony import */ var _container3D__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./container3D */ "./3D/controls/container3D.ts");
 /* harmony import */ var _volumeBasedPanel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./volumeBasedPanel */ "./3D/controls/volumeBasedPanel.ts");
@@ -15810,7 +15810,7 @@ var PlanePanel = /** @class */ (function (_super) {
 __webpack_require__.r(__webpack_exports__);
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ScatterPanel", function() { return ScatterPanel; });
 /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
-/* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Misc/observable");
+/* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Maths/math.vector");
 /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__);
 /* harmony import */ var _volumeBasedPanel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./volumeBasedPanel */ "./3D/controls/volumeBasedPanel.ts");
 /* harmony import */ var _container3D__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./container3D */ "./3D/controls/container3D.ts");
@@ -15937,7 +15937,7 @@ var ScatterPanel = /** @class */ (function (_super) {
 __webpack_require__.r(__webpack_exports__);
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SpherePanel", function() { return SpherePanel; });
 /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
-/* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Misc/observable");
+/* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Maths/math.vector");
 /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__);
 /* harmony import */ var _volumeBasedPanel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./volumeBasedPanel */ "./3D/controls/volumeBasedPanel.ts");
 /* harmony import */ var _container3D__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./container3D */ "./3D/controls/container3D.ts");
@@ -16023,7 +16023,7 @@ var SpherePanel = /** @class */ (function (_super) {
 __webpack_require__.r(__webpack_exports__);
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "StackPanel3D", function() { return StackPanel3D; });
 /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
-/* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Misc/observable");
+/* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Maths/math.vector");
 /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__);
 /* harmony import */ var _container3D__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./container3D */ "./3D/controls/container3D.ts");
 
@@ -16148,7 +16148,7 @@ var StackPanel3D = /** @class */ (function (_super) {
 __webpack_require__.r(__webpack_exports__);
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "VolumeBasedPanel", function() { return VolumeBasedPanel; });
 /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
-/* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Misc/observable");
+/* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Maths/math.vector");
 /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__);
 /* harmony import */ var _container3D__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./container3D */ "./3D/controls/container3D.ts");
 
@@ -16339,7 +16339,7 @@ var VolumeBasedPanel = /** @class */ (function (_super) {
 "use strict";
 __webpack_require__.r(__webpack_exports__);
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "GUI3DManager", function() { return GUI3DManager; });
-/* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/observable");
+/* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Maths/math.vector");
 /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0__);
 /* harmony import */ var _controls_container3D__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./controls/container3D */ "./3D/controls/container3D.ts");
 
@@ -16606,7 +16606,7 @@ __webpack_require__.r(__webpack_exports__);
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FluentMaterialDefines", function() { return FluentMaterialDefines; });
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FluentMaterial", function() { return FluentMaterial; });
 /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
-/* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Misc/observable");
+/* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Maths/math.vector");
 /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__);
 /* harmony import */ var _shaders_fluent_vertex__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./shaders/fluent.vertex */ "./3D/materials/shaders/fluent.vertex.ts");
 /* harmony import */ var _shaders_fluent_fragment__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./shaders/fluent.fragment */ "./3D/materials/shaders/fluent.fragment.ts");
@@ -16929,7 +16929,7 @@ __webpack_require__.r(__webpack_exports__);
 "use strict";
 __webpack_require__.r(__webpack_exports__);
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fluentPixelShader", function() { return fluentPixelShader; });
-/* harmony import */ var babylonjs_Materials_effect__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Materials/effect */ "babylonjs/Misc/observable");
+/* harmony import */ var babylonjs_Materials_effect__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Materials/effect */ "babylonjs/Maths/math.vector");
 /* harmony import */ var babylonjs_Materials_effect__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Materials_effect__WEBPACK_IMPORTED_MODULE_0__);
 
 var name = 'fluentPixelShader';
@@ -16951,7 +16951,7 @@ var fluentPixelShader = { name: name, shader: shader };
 "use strict";
 __webpack_require__.r(__webpack_exports__);
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fluentVertexShader", function() { return fluentVertexShader; });
-/* harmony import */ var babylonjs_Materials_effect__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Materials/effect */ "babylonjs/Misc/observable");
+/* harmony import */ var babylonjs_Materials_effect__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Materials/effect */ "babylonjs/Maths/math.vector");
 /* harmony import */ var babylonjs_Materials_effect__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Materials_effect__WEBPACK_IMPORTED_MODULE_0__);
 
 var name = 'fluentVertexShader';
@@ -16974,7 +16974,7 @@ var fluentVertexShader = { name: name, shader: shader };
 __webpack_require__.r(__webpack_exports__);
 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Vector3WithInfo", function() { return Vector3WithInfo; });
 /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
-/* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/observable");
+/* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Maths/math.vector");
 /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__);
 
 
@@ -17276,14 +17276,14 @@ if (typeof globalObject !== "undefined") {
 
 /***/ }),
 
-/***/ "babylonjs/Misc/observable":
+/***/ "babylonjs/Maths/math.vector":
 /*!****************************************************************************************************!*\
   !*** external {"root":"BABYLON","commonjs":"babylonjs","commonjs2":"babylonjs","amd":"babylonjs"} ***!
   \****************************************************************************************************/
 /*! no static exports found */
 /***/ (function(module, exports) {
 
-module.exports = __WEBPACK_EXTERNAL_MODULE_babylonjs_Misc_observable__;
+module.exports = __WEBPACK_EXTERNAL_MODULE_babylonjs_Maths_math_vector__;
 
 /***/ })
 

Різницю між файлами не показано, бо вона завелика
+ 1 - 1
dist/preview release/gui/babylon.gui.js.map


+ 1 - 1
dist/preview release/packagesSizeBaseLine.json

@@ -1 +1 @@
-{"thinEngineOnly":116308,"engineOnly":152744,"sceneOnly":515374,"minGridMaterial":652684,"minStandardMaterial":802183}
+{"thinEngineOnly":116955,"engineOnly":153391,"sceneOnly":516268,"minGridMaterial":653578,"minStandardMaterial":803077}

Різницю між файлами не показано, бо вона завелика
+ 1 - 1
dist/preview release/serializers/babylon.glTF2Serializer.js.map


Різницю між файлами не показано, бо вона завелика
+ 1 - 1
dist/preview release/serializers/babylonjs.serializers.js.map


+ 87 - 32
dist/preview release/viewer/babylon.module.d.ts

@@ -1565,7 +1565,7 @@ declare module "babylonjs/Maths/math.like" {
      * @hidden
      */
     export interface IMatrixLike {
-        toArray(): DeepImmutable<Float32Array>;
+        toArray(): DeepImmutable<Float32Array | Array<number>>;
         updateFlag: int;
     }
     /**
@@ -2068,6 +2068,21 @@ declare module "babylonjs/Maths/math.plane" {
         static SignedDistanceToPlaneFromPositionAndNormal(origin: DeepImmutable<Vector3>, normal: DeepImmutable<Vector3>, point: DeepImmutable<Vector3>): number;
     }
 }
+declare module "babylonjs/Engines/performanceConfigurator" {
+    /** @hidden */
+    export class PerformanceConfigurator {
+        /** @hidden */
+        static MatrixUse64Bits: boolean;
+        /** @hidden */
+        static MatrixTrackPrecisionChange: boolean;
+        /** @hidden */
+        static MatrixCurrentType: any;
+        /** @hidden */
+        static MatrixTrackedMatrices: Array<any> | null;
+        /** @hidden */
+        static SetMatrixPrecision(use64bits: boolean): void;
+    }
+}
 declare module "babylonjs/Maths/math.vector" {
     import { Viewport } from "babylonjs/Maths/math.viewport";
     import { DeepImmutable, Nullable, FloatArray, float } from "babylonjs/types";
@@ -4045,6 +4060,10 @@ declare module "babylonjs/Maths/math.vector" {
      * Class used to store matrix data (4x4)
      */
     export class Matrix {
+        /**
+         * Gets the precision of matrix computations
+         */
+        static get Use64Bits(): boolean;
         private static _updateFlagSeed;
         private static _identityReadOnly;
         private _isIdentity;
@@ -4061,7 +4080,7 @@ declare module "babylonjs/Maths/math.vector" {
         /**
          * Gets the internal data of the matrix
          */
-        get m(): DeepImmutable<Float32Array>;
+        get m(): DeepImmutable<Float32Array | Array<number>>;
         /** @hidden */
         _markAsUpdated(): void;
         /** @hidden */
@@ -4086,15 +4105,15 @@ declare module "babylonjs/Maths/math.vector" {
          */
         determinant(): number;
         /**
-         * Returns the matrix as a Float32Array
+         * Returns the matrix as a Float32Array or Array<number>
          * @returns the matrix underlying array
          */
-        toArray(): DeepImmutable<Float32Array>;
+        toArray(): DeepImmutable<Float32Array | Array<number>>;
         /**
-         * Returns the matrix as a Float32Array
+         * Returns the matrix as a Float32Array or Array<number>
         * @returns the matrix underlying array.
         */
-        asArray(): DeepImmutable<Float32Array>;
+        asArray(): DeepImmutable<Float32Array | Array<number>>;
         /**
          * Inverts the current matrix in place
          * @returns the current inverted matrix
@@ -4200,7 +4219,7 @@ declare module "babylonjs/Maths/math.vector" {
          * @param offset defines the offset in the target array where to start storing values
          * @returns the current matrix
          */
-        copyToArray(array: Float32Array, offset?: number): Matrix;
+        copyToArray(array: Float32Array | Array<number>, offset?: number): Matrix;
         /**
          * Sets the given matrix "result" with the multiplication result of the current Matrix and the given one
          * @param other defines the second operand
@@ -4215,7 +4234,7 @@ declare module "babylonjs/Maths/math.vector" {
          * @param offset defines the offset in the target array where to start storing values
          * @returns the current matrix
          */
-        multiplyToArray(other: DeepImmutable<Matrix>, result: Float32Array, offset: number): Matrix;
+        multiplyToArray(other: DeepImmutable<Matrix>, result: Float32Array | Array<number>, offset: number): Matrix;
         /**
          * Check equality between this matrix and a second one
          * @param value defines the second matrix to compare
@@ -4344,7 +4363,7 @@ declare module "babylonjs/Maths/math.vector" {
          * @param scale defines the scaling factor
          * @param result defines the target matrix
          */
-        static FromFloat32ArrayToRefScaled(array: DeepImmutable<Float32Array>, offset: number, scale: number, result: Matrix): void;
+        static FromFloat32ArrayToRefScaled(array: DeepImmutable<Float32Array | Array<number>>, offset: number, scale: number, result: Matrix): void;
         /**
          * Gets an identity matrix that must not be updated
          */
@@ -4767,13 +4786,13 @@ declare module "babylonjs/Maths/math.vector" {
          * @param matrix defines the matrix to use
          * @returns a new Float32Array array with 4 elements : the 2x2 matrix extracted from the given matrix
          */
-        static GetAsMatrix2x2(matrix: DeepImmutable<Matrix>): Float32Array;
+        static GetAsMatrix2x2(matrix: DeepImmutable<Matrix>): Float32Array | Array<number>;
         /**
          * Extracts a 3x3 matrix from a given matrix and store the result in a Float32Array
          * @param matrix defines the matrix to use
          * @returns a new Float32Array array with 9 elements : the 3x3 matrix extracted from the given matrix
          */
-        static GetAsMatrix3x3(matrix: DeepImmutable<Matrix>): Float32Array;
+        static GetAsMatrix3x3(matrix: DeepImmutable<Matrix>): Float32Array | Array<number>;
         /**
          * Compute the transpose of a given matrix
          * @param matrix defines the matrix to transpose
@@ -16889,14 +16908,14 @@ declare module "babylonjs/Materials/shaderMaterial" {
          * @param value Define the value to give to the uniform
          * @return the material itself allowing "fluent" like uniform updates
          */
-        setMatrix3x3(name: string, value: Float32Array): ShaderMaterial;
+        setMatrix3x3(name: string, value: Float32Array | Array<number>): ShaderMaterial;
         /**
          * Set a mat2 in the shader from a Float32Array.
          * @param name Define the name of the uniform as defined in the shader
          * @param value Define the value to give to the uniform
          * @return the material itself allowing "fluent" like uniform updates
          */
-        setMatrix2x2(name: string, value: Float32Array): ShaderMaterial;
+        setMatrix2x2(name: string, value: Float32Array | Array<number>): ShaderMaterial;
         /**
          * Set a vec2 array in the shader from a number array.
          * @param name Define the name of the uniform as defined in the shader
@@ -34877,7 +34896,7 @@ declare module "babylonjs/Materials/effect" {
          * @param matrices matrices to be set.
          * @returns this effect.
          */
-        setMatrices(uniformName: string, matrices: Float32Array): Effect;
+        setMatrices(uniformName: string, matrices: Float32Array | Array<number>): Effect;
         /**
          * Sets matrix on a uniform variable.
          * @param uniformName Name of the variable.
@@ -34891,14 +34910,14 @@ declare module "babylonjs/Materials/effect" {
          * @param matrix matrix to be set.
          * @returns this effect.
          */
-        setMatrix3x3(uniformName: string, matrix: Float32Array): Effect;
+        setMatrix3x3(uniformName: string, matrix: Float32Array | Array<number>): Effect;
         /**
          * Sets a 2x2 matrix on a uniform variable. (Speicified as [1,2,3,4] will result in [1,2][3,4] matrix)
          * @param uniformName Name of the variable.
          * @param matrix matrix to be set.
          * @returns this effect.
          */
-        setMatrix2x2(uniformName: string, matrix: Float32Array): Effect;
+        setMatrix2x2(uniformName: string, matrix: Float32Array | Array<number>): Effect;
         /**
          * Sets a float on a uniform variable.
          * @param uniformName Name of the variable.
@@ -35527,6 +35546,10 @@ declare module "babylonjs/Engines/thinEngine" {
          * Make the canvas XR Compatible for XR sessions
          */
         xrCompatible?: boolean;
+        /**
+         * Make the matrix computations to be performed in 64 bits instead of 32 bits. False by default
+         */
+        useHighPrecisionMatrix?: boolean;
     }
     /**
      * The base engine class (root of all engines)
@@ -52662,6 +52685,10 @@ declare module "babylonjs/Engines/nullEngine" {
          * @see https://doc.babylonjs.com/babylon101/animations#deterministic-lockstep
          */
         lockstepMaxSteps: number;
+        /**
+         * Make the matrix computations to be performed in 64 bits instead of 32 bits. False by default
+         */
+        useHighPrecisionMatrix?: boolean;
     }
     /**
      * The null engine class provides support for headless version of babylon.js.
@@ -54089,6 +54116,7 @@ declare module "babylonjs/Engines/index" {
     export * from "babylonjs/Engines/WebGL/webGL2ShaderProcessors";
     export * from "babylonjs/Engines/nativeEngine";
     export * from "babylonjs/Engines/Processors/shaderCodeInliner";
+    export * from "babylonjs/Engines/performanceConfigurator";
 }
 declare module "babylonjs/Events/clipboardEvents" {
     /**
@@ -79902,7 +79930,7 @@ declare module BABYLON {
      * @hidden
      */
     export interface IMatrixLike {
-        toArray(): DeepImmutable<Float32Array>;
+        toArray(): DeepImmutable<Float32Array | Array<number>>;
         updateFlag: int;
     }
     /**
@@ -80402,6 +80430,21 @@ declare module BABYLON {
     }
 }
 declare module BABYLON {
+    /** @hidden */
+    export class PerformanceConfigurator {
+        /** @hidden */
+        static MatrixUse64Bits: boolean;
+        /** @hidden */
+        static MatrixTrackPrecisionChange: boolean;
+        /** @hidden */
+        static MatrixCurrentType: any;
+        /** @hidden */
+        static MatrixTrackedMatrices: Array<any> | null;
+        /** @hidden */
+        static SetMatrixPrecision(use64bits: boolean): void;
+    }
+}
+declare module BABYLON {
     /**
      * Class representing a vector containing 2 coordinates
      */
@@ -82374,6 +82417,10 @@ declare module BABYLON {
      * Class used to store matrix data (4x4)
      */
     export class Matrix {
+        /**
+         * Gets the precision of matrix computations
+         */
+        static get Use64Bits(): boolean;
         private static _updateFlagSeed;
         private static _identityReadOnly;
         private _isIdentity;
@@ -82390,7 +82437,7 @@ declare module BABYLON {
         /**
          * Gets the internal data of the matrix
          */
-        get m(): DeepImmutable<Float32Array>;
+        get m(): DeepImmutable<Float32Array | Array<number>>;
         /** @hidden */
         _markAsUpdated(): void;
         /** @hidden */
@@ -82415,15 +82462,15 @@ declare module BABYLON {
          */
         determinant(): number;
         /**
-         * Returns the matrix as a Float32Array
+         * Returns the matrix as a Float32Array or Array<number>
          * @returns the matrix underlying array
          */
-        toArray(): DeepImmutable<Float32Array>;
+        toArray(): DeepImmutable<Float32Array | Array<number>>;
         /**
-         * Returns the matrix as a Float32Array
+         * Returns the matrix as a Float32Array or Array<number>
         * @returns the matrix underlying array.
         */
-        asArray(): DeepImmutable<Float32Array>;
+        asArray(): DeepImmutable<Float32Array | Array<number>>;
         /**
          * Inverts the current matrix in place
          * @returns the current inverted matrix
@@ -82529,7 +82576,7 @@ declare module BABYLON {
          * @param offset defines the offset in the target array where to start storing values
          * @returns the current matrix
          */
-        copyToArray(array: Float32Array, offset?: number): Matrix;
+        copyToArray(array: Float32Array | Array<number>, offset?: number): Matrix;
         /**
          * Sets the given matrix "result" with the multiplication result of the current Matrix and the given one
          * @param other defines the second operand
@@ -82544,7 +82591,7 @@ declare module BABYLON {
          * @param offset defines the offset in the target array where to start storing values
          * @returns the current matrix
          */
-        multiplyToArray(other: DeepImmutable<Matrix>, result: Float32Array, offset: number): Matrix;
+        multiplyToArray(other: DeepImmutable<Matrix>, result: Float32Array | Array<number>, offset: number): Matrix;
         /**
          * Check equality between this matrix and a second one
          * @param value defines the second matrix to compare
@@ -82673,7 +82720,7 @@ declare module BABYLON {
          * @param scale defines the scaling factor
          * @param result defines the target matrix
          */
-        static FromFloat32ArrayToRefScaled(array: DeepImmutable<Float32Array>, offset: number, scale: number, result: Matrix): void;
+        static FromFloat32ArrayToRefScaled(array: DeepImmutable<Float32Array | Array<number>>, offset: number, scale: number, result: Matrix): void;
         /**
          * Gets an identity matrix that must not be updated
          */
@@ -83096,13 +83143,13 @@ declare module BABYLON {
          * @param matrix defines the matrix to use
          * @returns a new Float32Array array with 4 elements : the 2x2 matrix extracted from the given matrix
          */
-        static GetAsMatrix2x2(matrix: DeepImmutable<Matrix>): Float32Array;
+        static GetAsMatrix2x2(matrix: DeepImmutable<Matrix>): Float32Array | Array<number>;
         /**
          * Extracts a 3x3 matrix from a given matrix and store the result in a Float32Array
          * @param matrix defines the matrix to use
          * @returns a new Float32Array array with 9 elements : the 3x3 matrix extracted from the given matrix
          */
-        static GetAsMatrix3x3(matrix: DeepImmutable<Matrix>): Float32Array;
+        static GetAsMatrix3x3(matrix: DeepImmutable<Matrix>): Float32Array | Array<number>;
         /**
          * Compute the transpose of a given matrix
          * @param matrix defines the matrix to transpose
@@ -94826,14 +94873,14 @@ declare module BABYLON {
          * @param value Define the value to give to the uniform
          * @return the material itself allowing "fluent" like uniform updates
          */
-        setMatrix3x3(name: string, value: Float32Array): ShaderMaterial;
+        setMatrix3x3(name: string, value: Float32Array | Array<number>): ShaderMaterial;
         /**
          * Set a mat2 in the shader from a Float32Array.
          * @param name Define the name of the uniform as defined in the shader
          * @param value Define the value to give to the uniform
          * @return the material itself allowing "fluent" like uniform updates
          */
-        setMatrix2x2(name: string, value: Float32Array): ShaderMaterial;
+        setMatrix2x2(name: string, value: Float32Array | Array<number>): ShaderMaterial;
         /**
          * Set a vec2 array in the shader from a number array.
          * @param name Define the name of the uniform as defined in the shader
@@ -112087,7 +112134,7 @@ declare module BABYLON {
          * @param matrices matrices to be set.
          * @returns this effect.
          */
-        setMatrices(uniformName: string, matrices: Float32Array): Effect;
+        setMatrices(uniformName: string, matrices: Float32Array | Array<number>): Effect;
         /**
          * Sets matrix on a uniform variable.
          * @param uniformName Name of the variable.
@@ -112101,14 +112148,14 @@ declare module BABYLON {
          * @param matrix matrix to be set.
          * @returns this effect.
          */
-        setMatrix3x3(uniformName: string, matrix: Float32Array): Effect;
+        setMatrix3x3(uniformName: string, matrix: Float32Array | Array<number>): Effect;
         /**
          * Sets a 2x2 matrix on a uniform variable. (Speicified as [1,2,3,4] will result in [1,2][3,4] matrix)
          * @param uniformName Name of the variable.
          * @param matrix matrix to be set.
          * @returns this effect.
          */
-        setMatrix2x2(uniformName: string, matrix: Float32Array): Effect;
+        setMatrix2x2(uniformName: string, matrix: Float32Array | Array<number>): Effect;
         /**
          * Sets a float on a uniform variable.
          * @param uniformName Name of the variable.
@@ -112697,6 +112744,10 @@ declare module BABYLON {
          * Make the canvas XR Compatible for XR sessions
          */
         xrCompatible?: boolean;
+        /**
+         * Make the matrix computations to be performed in 64 bits instead of 32 bits. False by default
+         */
+        useHighPrecisionMatrix?: boolean;
     }
     /**
      * The base engine class (root of all engines)
@@ -129001,6 +129052,10 @@ declare module BABYLON {
          * @see https://doc.babylonjs.com/babylon101/animations#deterministic-lockstep
          */
         lockstepMaxSteps: number;
+        /**
+         * Make the matrix computations to be performed in 64 bits instead of 32 bits. False by default
+         */
+        useHighPrecisionMatrix?: boolean;
     }
     /**
      * The null engine class provides support for headless version of babylon.js.

Різницю між файлами не показано, бо вона завелика
+ 9 - 5
dist/preview release/viewer/babylon.viewer.js


Різницю між файлами не показано, бо вона завелика
+ 1 - 1
dist/preview release/viewer/babylon.viewer.max.js