David `Deltakosh` Catuhe 4 jaren geleden
bovenliggende
commit
fc38b60954
27 gewijzigde bestanden met toevoegingen van 370 en 1867 verwijderingen
  1. 32 9
      dist/preview release/babylon.d.ts
  2. 1 1
      dist/preview release/babylon.js
  3. 1 1700
      dist/preview release/babylon.ktx2Decoder.js
  4. 75 21
      dist/preview release/babylon.max.js
  5. 1 1
      dist/preview release/babylon.max.js.map
  6. 64 18
      dist/preview release/babylon.module.d.ts
  7. 32 9
      dist/preview release/documentation.d.ts
  8. 1 1
      dist/preview release/inspector/babylon.inspector.bundle.js
  9. 8 7
      dist/preview release/inspector/babylon.inspector.bundle.max.js
  10. 1 1
      dist/preview release/inspector/babylon.inspector.bundle.max.js.map
  11. 1 0
      dist/preview release/loaders/babylon.glTF2FileLoader.js
  12. 1 1
      dist/preview release/loaders/babylon.glTF2FileLoader.js.map
  13. 1 1
      dist/preview release/loaders/babylon.glTF2FileLoader.min.js
  14. 1 0
      dist/preview release/loaders/babylon.glTFFileLoader.js
  15. 1 1
      dist/preview release/loaders/babylon.glTFFileLoader.js.map
  16. 1 1
      dist/preview release/loaders/babylon.glTFFileLoader.min.js
  17. 1 0
      dist/preview release/loaders/babylonjs.loaders.js
  18. 1 1
      dist/preview release/loaders/babylonjs.loaders.js.map
  19. 1 1
      dist/preview release/loaders/babylonjs.loaders.min.js
  20. 1 1
      dist/preview release/packagesSizeBaseLine.json
  21. 64 18
      dist/preview release/viewer/babylon.module.d.ts
  22. 61 61
      dist/preview release/viewer/babylon.viewer.js
  23. 2 2
      dist/preview release/viewer/babylon.viewer.max.js
  24. 13 7
      src/Engines/thinEngine.ts
  25. 1 1
      src/Materials/PBR/pbrBaseMaterial.ts
  26. 2 2
      src/Materials/PBR/pbrClearCoatConfiguration.ts
  27. 1 1
      src/Shaders/ShadersInclude/pbrBlockClearcoat.fx

+ 32 - 9
dist/preview release/babylon.d.ts

@@ -35354,6 +35354,10 @@ declare module BABYLON {
          * Make the matrix computations to be performed in 64 bits instead of 32 bits. False by default
          */
         useHighPrecisionMatrix?: boolean;
+        /**
+         * Will prevent the system from falling back to software implementation if a hardware device cannot be created
+         */
+        failIfMajorPerformanceCaveat?: boolean;
     }
     /**
      * The base engine class (root of all engines)
@@ -36369,7 +36373,12 @@ declare module BABYLON {
          * @returns a Uint8Array containing RGBA colors
          */
         readPixels(x: number, y: number, width: number, height: number, hasAlpha?: boolean): Uint8Array;
-        private static _isSupported;
+        private static _IsSupported;
+        private static _HasMajorPerformanceCaveat;
+        /**
+         * Gets a boolean indicating if the engine can be instanciated (ie. if a webGL context can be found)
+         */
+        static get IsSupported(): boolean;
         /**
          * Gets a boolean indicating if the engine can be instanciated (ie. if a webGL context can be found)
          * @returns true if the engine can be created
@@ -36377,6 +36386,10 @@ declare module BABYLON {
          */
         static isSupported(): boolean;
         /**
+         * Gets a boolean indicating if the engine can be instanciated on a performant device (ie. if a webGL context can be found and it does not use a slow implementation)
+         */
+        static get HasMajorPerformanceCaveat(): boolean;
+        /**
          * Find the next highest power of two.
          * @param x Number to start search from.
          * @return Next highest power of two.
@@ -51166,6 +51179,8 @@ declare module BABYLON {
         sphereScaleUnit?: number;
         /** Ratio for the Sphere Size */
         sphereFactor?: number;
+        /** Whether a spur should attach its far end to the child bone position */
+        spurFollowsChild?: boolean;
         /** Whether to show local axes or not  */
         showLocalAxes?: boolean;
         /** Length of each local axis */
@@ -51459,14 +51474,15 @@ declare module BABYLON.Debug {
         changeDisplayMode(mode: number): void;
         /** Sets a display option of the skeleton viewer
          *
-         * | Option          | Type    | Default | Description |
-         * | --------------- | ------- | ------- | ----------- |
-         * | midStep         | float   | 0.235   | A percentage between a bone and its child that determines the widest part of a spur. Only used when `displayMode` is set to `DISPLAY_SPHERE_AND_SPURS`. |
-         * | midStepFactor   | float   | 0.15    | Mid step width expressed as a factor of the length. A value of 0.5 makes the spur width half of the spur length. Only used when `displayMode` is set to `DISPLAY_SPHERE_AND_SPURS`. |
-         * | sphereBaseSize  | float   | 2       | Sphere base size. Only used when `displayMode` is set to `DISPLAY_SPHERE_AND_SPURS`. |
-         * | sphereScaleUnit | float   | 0.865   | Sphere scale factor used to scale spheres in relation to the longest bone. Only used when `displayMode` is set to `DISPLAY_SPHERE_AND_SPURS`. |
-         * | showLocalAxes   | boolean | false   | Displays local axes on all bones. |
-         * | localAxesSize   | float   | 0.075   | Determines the length of each local axis. |
+         * | Option           | Type    | Default | Description |
+         * | ---------------- | ------- | ------- | ----------- |
+         * | midStep          | float   | 0.235   | A percentage between a bone and its child that determines the widest part of a spur. Only used when `displayMode` is set to `DISPLAY_SPHERE_AND_SPURS`. |
+         * | midStepFactor    | float   | 0.15    | Mid step width expressed as a factor of the length. A value of 0.5 makes the spur width half of the spur length. Only used when `displayMode` is set to `DISPLAY_SPHERE_AND_SPURS`. |
+         * | sphereBaseSize   | float   | 2       | Sphere base size. Only used when `displayMode` is set to `DISPLAY_SPHERE_AND_SPURS`. |
+         * | sphereScaleUnit  | float   | 0.865   | Sphere scale factor used to scale spheres in relation to the longest bone. Only used when `displayMode` is set to `DISPLAY_SPHERE_AND_SPURS`. |
+         * | spurFollowsChild | boolean | false   | Whether a spur should attach its far end to the child bone. |
+         * | showLocalAxes    | boolean | false   | Displays local axes on all bones. |
+         * | localAxesSize    | float   | 0.075   | Determines the length of each local axis. |
          *
          * @param option String of the option name
          * @param value The numerical option value
@@ -55393,6 +55409,7 @@ declare module BABYLON {
         CLEARCOAT_TEXTUREDIRECTUV: number;
         CLEARCOAT_BUMP: boolean;
         CLEARCOAT_BUMPDIRECTUV: number;
+        CLEARCOAT_REMAP_F0: boolean;
         CLEARCOAT_TINT: boolean;
         CLEARCOAT_TINT_TEXTURE: boolean;
         CLEARCOAT_TINT_TEXTUREDIRECTUV: number;
@@ -55434,6 +55451,11 @@ declare module BABYLON {
          * Stores the clear coat values in a texture.
          */
         texture: Nullable<BaseTexture>;
+        private _remapF0OnInterfaceChange;
+        /**
+         * Defines if the F0 value should be remapped to account for the interface change in the material.
+         */
+        remapF0OnInterfaceChange: boolean;
         private _bumpTexture;
         /**
          * Define the clear coat specific bump texture.
@@ -56656,6 +56678,7 @@ declare module BABYLON {
         CLEARCOAT_TEXTUREDIRECTUV: number;
         CLEARCOAT_BUMP: boolean;
         CLEARCOAT_BUMPDIRECTUV: number;
+        CLEARCOAT_REMAP_F0: boolean;
         CLEARCOAT_TINT: boolean;
         CLEARCOAT_TINT_TEXTURE: boolean;
         CLEARCOAT_TINT_TEXTUREDIRECTUV: number;

File diff suppressed because it is too large
+ 1 - 1
dist/preview release/babylon.js


File diff suppressed because it is too large
+ 1 - 1700
dist/preview release/babylon.ktx2Decoder.js


File diff suppressed because it is too large
+ 75 - 21
dist/preview release/babylon.max.js


File diff suppressed because it is too large
+ 1 - 1
dist/preview release/babylon.max.js.map


+ 64 - 18
dist/preview release/babylon.module.d.ts

@@ -36610,6 +36610,10 @@ declare module "babylonjs/Engines/thinEngine" {
          * Make the matrix computations to be performed in 64 bits instead of 32 bits. False by default
          */
         useHighPrecisionMatrix?: boolean;
+        /**
+         * Will prevent the system from falling back to software implementation if a hardware device cannot be created
+         */
+        failIfMajorPerformanceCaveat?: boolean;
     }
     /**
      * The base engine class (root of all engines)
@@ -37625,7 +37629,12 @@ declare module "babylonjs/Engines/thinEngine" {
          * @returns a Uint8Array containing RGBA colors
          */
         readPixels(x: number, y: number, width: number, height: number, hasAlpha?: boolean): Uint8Array;
-        private static _isSupported;
+        private static _IsSupported;
+        private static _HasMajorPerformanceCaveat;
+        /**
+         * Gets a boolean indicating if the engine can be instanciated (ie. if a webGL context can be found)
+         */
+        static get IsSupported(): boolean;
         /**
          * Gets a boolean indicating if the engine can be instanciated (ie. if a webGL context can be found)
          * @returns true if the engine can be created
@@ -37633,6 +37642,10 @@ declare module "babylonjs/Engines/thinEngine" {
          */
         static isSupported(): boolean;
         /**
+         * Gets a boolean indicating if the engine can be instanciated on a performant device (ie. if a webGL context can be found and it does not use a slow implementation)
+         */
+        static get HasMajorPerformanceCaveat(): boolean;
+        /**
          * Find the next highest power of two.
          * @param x Number to start search from.
          * @return Next highest power of two.
@@ -53207,6 +53220,8 @@ declare module "babylonjs/Debug/ISkeletonViewer" {
         sphereScaleUnit?: number;
         /** Ratio for the Sphere Size */
         sphereFactor?: number;
+        /** Whether a spur should attach its far end to the child bone position */
+        spurFollowsChild?: boolean;
         /** Whether to show local axes or not  */
         showLocalAxes?: boolean;
         /** Length of each local axis */
@@ -53518,14 +53533,15 @@ declare module "babylonjs/Debug/skeletonViewer" {
         changeDisplayMode(mode: number): void;
         /** Sets a display option of the skeleton viewer
          *
-         * | Option          | Type    | Default | Description |
-         * | --------------- | ------- | ------- | ----------- |
-         * | midStep         | float   | 0.235   | A percentage between a bone and its child that determines the widest part of a spur. Only used when `displayMode` is set to `DISPLAY_SPHERE_AND_SPURS`. |
-         * | midStepFactor   | float   | 0.15    | Mid step width expressed as a factor of the length. A value of 0.5 makes the spur width half of the spur length. Only used when `displayMode` is set to `DISPLAY_SPHERE_AND_SPURS`. |
-         * | sphereBaseSize  | float   | 2       | Sphere base size. Only used when `displayMode` is set to `DISPLAY_SPHERE_AND_SPURS`. |
-         * | sphereScaleUnit | float   | 0.865   | Sphere scale factor used to scale spheres in relation to the longest bone. Only used when `displayMode` is set to `DISPLAY_SPHERE_AND_SPURS`. |
-         * | showLocalAxes   | boolean | false   | Displays local axes on all bones. |
-         * | localAxesSize   | float   | 0.075   | Determines the length of each local axis. |
+         * | Option           | Type    | Default | Description |
+         * | ---------------- | ------- | ------- | ----------- |
+         * | midStep          | float   | 0.235   | A percentage between a bone and its child that determines the widest part of a spur. Only used when `displayMode` is set to `DISPLAY_SPHERE_AND_SPURS`. |
+         * | midStepFactor    | float   | 0.15    | Mid step width expressed as a factor of the length. A value of 0.5 makes the spur width half of the spur length. Only used when `displayMode` is set to `DISPLAY_SPHERE_AND_SPURS`. |
+         * | sphereBaseSize   | float   | 2       | Sphere base size. Only used when `displayMode` is set to `DISPLAY_SPHERE_AND_SPURS`. |
+         * | sphereScaleUnit  | float   | 0.865   | Sphere scale factor used to scale spheres in relation to the longest bone. Only used when `displayMode` is set to `DISPLAY_SPHERE_AND_SPURS`. |
+         * | spurFollowsChild | boolean | false   | Whether a spur should attach its far end to the child bone. |
+         * | showLocalAxes    | boolean | false   | Displays local axes on all bones. |
+         * | localAxesSize    | float   | 0.075   | Determines the length of each local axis. |
          *
          * @param option String of the option name
          * @param value The numerical option value
@@ -57815,6 +57831,7 @@ declare module "babylonjs/Materials/PBR/pbrClearCoatConfiguration" {
         CLEARCOAT_TEXTUREDIRECTUV: number;
         CLEARCOAT_BUMP: boolean;
         CLEARCOAT_BUMPDIRECTUV: number;
+        CLEARCOAT_REMAP_F0: boolean;
         CLEARCOAT_TINT: boolean;
         CLEARCOAT_TINT_TEXTURE: boolean;
         CLEARCOAT_TINT_TEXTUREDIRECTUV: number;
@@ -57856,6 +57873,11 @@ declare module "babylonjs/Materials/PBR/pbrClearCoatConfiguration" {
          * Stores the clear coat values in a texture.
          */
         texture: Nullable<BaseTexture>;
+        private _remapF0OnInterfaceChange;
+        /**
+         * Defines if the F0 value should be remapped to account for the interface change in the material.
+         */
+        remapF0OnInterfaceChange: boolean;
         private _bumpTexture;
         /**
          * Define the clear coat specific bump texture.
@@ -59204,6 +59226,7 @@ declare module "babylonjs/Materials/PBR/pbrBaseMaterial" {
         CLEARCOAT_TEXTUREDIRECTUV: number;
         CLEARCOAT_BUMP: boolean;
         CLEARCOAT_BUMPDIRECTUV: number;
+        CLEARCOAT_REMAP_F0: boolean;
         CLEARCOAT_TINT: boolean;
         CLEARCOAT_TINT_TEXTURE: boolean;
         CLEARCOAT_TINT_TEXTUREDIRECTUV: number;
@@ -115661,6 +115684,10 @@ declare module BABYLON {
          * Make the matrix computations to be performed in 64 bits instead of 32 bits. False by default
          */
         useHighPrecisionMatrix?: boolean;
+        /**
+         * Will prevent the system from falling back to software implementation if a hardware device cannot be created
+         */
+        failIfMajorPerformanceCaveat?: boolean;
     }
     /**
      * The base engine class (root of all engines)
@@ -116676,7 +116703,12 @@ declare module BABYLON {
          * @returns a Uint8Array containing RGBA colors
          */
         readPixels(x: number, y: number, width: number, height: number, hasAlpha?: boolean): Uint8Array;
-        private static _isSupported;
+        private static _IsSupported;
+        private static _HasMajorPerformanceCaveat;
+        /**
+         * Gets a boolean indicating if the engine can be instanciated (ie. if a webGL context can be found)
+         */
+        static get IsSupported(): boolean;
         /**
          * Gets a boolean indicating if the engine can be instanciated (ie. if a webGL context can be found)
          * @returns true if the engine can be created
@@ -116684,6 +116716,10 @@ declare module BABYLON {
          */
         static isSupported(): boolean;
         /**
+         * Gets a boolean indicating if the engine can be instanciated on a performant device (ie. if a webGL context can be found and it does not use a slow implementation)
+         */
+        static get HasMajorPerformanceCaveat(): boolean;
+        /**
          * Find the next highest power of two.
          * @param x Number to start search from.
          * @return Next highest power of two.
@@ -131473,6 +131509,8 @@ declare module BABYLON {
         sphereScaleUnit?: number;
         /** Ratio for the Sphere Size */
         sphereFactor?: number;
+        /** Whether a spur should attach its far end to the child bone position */
+        spurFollowsChild?: boolean;
         /** Whether to show local axes or not  */
         showLocalAxes?: boolean;
         /** Length of each local axis */
@@ -131766,14 +131804,15 @@ declare module BABYLON.Debug {
         changeDisplayMode(mode: number): void;
         /** Sets a display option of the skeleton viewer
          *
-         * | Option          | Type    | Default | Description |
-         * | --------------- | ------- | ------- | ----------- |
-         * | midStep         | float   | 0.235   | A percentage between a bone and its child that determines the widest part of a spur. Only used when `displayMode` is set to `DISPLAY_SPHERE_AND_SPURS`. |
-         * | midStepFactor   | float   | 0.15    | Mid step width expressed as a factor of the length. A value of 0.5 makes the spur width half of the spur length. Only used when `displayMode` is set to `DISPLAY_SPHERE_AND_SPURS`. |
-         * | sphereBaseSize  | float   | 2       | Sphere base size. Only used when `displayMode` is set to `DISPLAY_SPHERE_AND_SPURS`. |
-         * | sphereScaleUnit | float   | 0.865   | Sphere scale factor used to scale spheres in relation to the longest bone. Only used when `displayMode` is set to `DISPLAY_SPHERE_AND_SPURS`. |
-         * | showLocalAxes   | boolean | false   | Displays local axes on all bones. |
-         * | localAxesSize   | float   | 0.075   | Determines the length of each local axis. |
+         * | Option           | Type    | Default | Description |
+         * | ---------------- | ------- | ------- | ----------- |
+         * | midStep          | float   | 0.235   | A percentage between a bone and its child that determines the widest part of a spur. Only used when `displayMode` is set to `DISPLAY_SPHERE_AND_SPURS`. |
+         * | midStepFactor    | float   | 0.15    | Mid step width expressed as a factor of the length. A value of 0.5 makes the spur width half of the spur length. Only used when `displayMode` is set to `DISPLAY_SPHERE_AND_SPURS`. |
+         * | sphereBaseSize   | float   | 2       | Sphere base size. Only used when `displayMode` is set to `DISPLAY_SPHERE_AND_SPURS`. |
+         * | sphereScaleUnit  | float   | 0.865   | Sphere scale factor used to scale spheres in relation to the longest bone. Only used when `displayMode` is set to `DISPLAY_SPHERE_AND_SPURS`. |
+         * | spurFollowsChild | boolean | false   | Whether a spur should attach its far end to the child bone. |
+         * | showLocalAxes    | boolean | false   | Displays local axes on all bones. |
+         * | localAxesSize    | float   | 0.075   | Determines the length of each local axis. |
          *
          * @param option String of the option name
          * @param value The numerical option value
@@ -135700,6 +135739,7 @@ declare module BABYLON {
         CLEARCOAT_TEXTUREDIRECTUV: number;
         CLEARCOAT_BUMP: boolean;
         CLEARCOAT_BUMPDIRECTUV: number;
+        CLEARCOAT_REMAP_F0: boolean;
         CLEARCOAT_TINT: boolean;
         CLEARCOAT_TINT_TEXTURE: boolean;
         CLEARCOAT_TINT_TEXTUREDIRECTUV: number;
@@ -135741,6 +135781,11 @@ declare module BABYLON {
          * Stores the clear coat values in a texture.
          */
         texture: Nullable<BaseTexture>;
+        private _remapF0OnInterfaceChange;
+        /**
+         * Defines if the F0 value should be remapped to account for the interface change in the material.
+         */
+        remapF0OnInterfaceChange: boolean;
         private _bumpTexture;
         /**
          * Define the clear coat specific bump texture.
@@ -136963,6 +137008,7 @@ declare module BABYLON {
         CLEARCOAT_TEXTUREDIRECTUV: number;
         CLEARCOAT_BUMP: boolean;
         CLEARCOAT_BUMPDIRECTUV: number;
+        CLEARCOAT_REMAP_F0: boolean;
         CLEARCOAT_TINT: boolean;
         CLEARCOAT_TINT_TEXTURE: boolean;
         CLEARCOAT_TINT_TEXTUREDIRECTUV: number;

+ 32 - 9
dist/preview release/documentation.d.ts

@@ -35354,6 +35354,10 @@ declare module BABYLON {
          * Make the matrix computations to be performed in 64 bits instead of 32 bits. False by default
          */
         useHighPrecisionMatrix?: boolean;
+        /**
+         * Will prevent the system from falling back to software implementation if a hardware device cannot be created
+         */
+        failIfMajorPerformanceCaveat?: boolean;
     }
     /**
      * The base engine class (root of all engines)
@@ -36369,7 +36373,12 @@ declare module BABYLON {
          * @returns a Uint8Array containing RGBA colors
          */
         readPixels(x: number, y: number, width: number, height: number, hasAlpha?: boolean): Uint8Array;
-        private static _isSupported;
+        private static _IsSupported;
+        private static _HasMajorPerformanceCaveat;
+        /**
+         * Gets a boolean indicating if the engine can be instanciated (ie. if a webGL context can be found)
+         */
+        static get IsSupported(): boolean;
         /**
          * Gets a boolean indicating if the engine can be instanciated (ie. if a webGL context can be found)
          * @returns true if the engine can be created
@@ -36377,6 +36386,10 @@ declare module BABYLON {
          */
         static isSupported(): boolean;
         /**
+         * Gets a boolean indicating if the engine can be instanciated on a performant device (ie. if a webGL context can be found and it does not use a slow implementation)
+         */
+        static get HasMajorPerformanceCaveat(): boolean;
+        /**
          * Find the next highest power of two.
          * @param x Number to start search from.
          * @return Next highest power of two.
@@ -51166,6 +51179,8 @@ declare module BABYLON {
         sphereScaleUnit?: number;
         /** Ratio for the Sphere Size */
         sphereFactor?: number;
+        /** Whether a spur should attach its far end to the child bone position */
+        spurFollowsChild?: boolean;
         /** Whether to show local axes or not  */
         showLocalAxes?: boolean;
         /** Length of each local axis */
@@ -51459,14 +51474,15 @@ declare module BABYLON.Debug {
         changeDisplayMode(mode: number): void;
         /** Sets a display option of the skeleton viewer
          *
-         * | Option          | Type    | Default | Description |
-         * | --------------- | ------- | ------- | ----------- |
-         * | midStep         | float   | 0.235   | A percentage between a bone and its child that determines the widest part of a spur. Only used when `displayMode` is set to `DISPLAY_SPHERE_AND_SPURS`. |
-         * | midStepFactor   | float   | 0.15    | Mid step width expressed as a factor of the length. A value of 0.5 makes the spur width half of the spur length. Only used when `displayMode` is set to `DISPLAY_SPHERE_AND_SPURS`. |
-         * | sphereBaseSize  | float   | 2       | Sphere base size. Only used when `displayMode` is set to `DISPLAY_SPHERE_AND_SPURS`. |
-         * | sphereScaleUnit | float   | 0.865   | Sphere scale factor used to scale spheres in relation to the longest bone. Only used when `displayMode` is set to `DISPLAY_SPHERE_AND_SPURS`. |
-         * | showLocalAxes   | boolean | false   | Displays local axes on all bones. |
-         * | localAxesSize   | float   | 0.075   | Determines the length of each local axis. |
+         * | Option           | Type    | Default | Description |
+         * | ---------------- | ------- | ------- | ----------- |
+         * | midStep          | float   | 0.235   | A percentage between a bone and its child that determines the widest part of a spur. Only used when `displayMode` is set to `DISPLAY_SPHERE_AND_SPURS`. |
+         * | midStepFactor    | float   | 0.15    | Mid step width expressed as a factor of the length. A value of 0.5 makes the spur width half of the spur length. Only used when `displayMode` is set to `DISPLAY_SPHERE_AND_SPURS`. |
+         * | sphereBaseSize   | float   | 2       | Sphere base size. Only used when `displayMode` is set to `DISPLAY_SPHERE_AND_SPURS`. |
+         * | sphereScaleUnit  | float   | 0.865   | Sphere scale factor used to scale spheres in relation to the longest bone. Only used when `displayMode` is set to `DISPLAY_SPHERE_AND_SPURS`. |
+         * | spurFollowsChild | boolean | false   | Whether a spur should attach its far end to the child bone. |
+         * | showLocalAxes    | boolean | false   | Displays local axes on all bones. |
+         * | localAxesSize    | float   | 0.075   | Determines the length of each local axis. |
          *
          * @param option String of the option name
          * @param value The numerical option value
@@ -55393,6 +55409,7 @@ declare module BABYLON {
         CLEARCOAT_TEXTUREDIRECTUV: number;
         CLEARCOAT_BUMP: boolean;
         CLEARCOAT_BUMPDIRECTUV: number;
+        CLEARCOAT_REMAP_F0: boolean;
         CLEARCOAT_TINT: boolean;
         CLEARCOAT_TINT_TEXTURE: boolean;
         CLEARCOAT_TINT_TEXTUREDIRECTUV: number;
@@ -55434,6 +55451,11 @@ declare module BABYLON {
          * Stores the clear coat values in a texture.
          */
         texture: Nullable<BaseTexture>;
+        private _remapF0OnInterfaceChange;
+        /**
+         * Defines if the F0 value should be remapped to account for the interface change in the material.
+         */
+        remapF0OnInterfaceChange: boolean;
         private _bumpTexture;
         /**
          * Define the clear coat specific bump texture.
@@ -56656,6 +56678,7 @@ declare module BABYLON {
         CLEARCOAT_TEXTUREDIRECTUV: number;
         CLEARCOAT_BUMP: boolean;
         CLEARCOAT_BUMPDIRECTUV: number;
+        CLEARCOAT_REMAP_F0: boolean;
         CLEARCOAT_TINT: boolean;
         CLEARCOAT_TINT_TEXTURE: boolean;
         CLEARCOAT_TINT_TEXTUREDIRECTUV: number;

File diff suppressed because it is too large
+ 1 - 1
dist/preview release/inspector/babylon.inspector.bundle.js


File diff suppressed because it is too large
+ 8 - 7
dist/preview release/inspector/babylon.inspector.bundle.max.js


File diff suppressed because it is too large
+ 1 - 1
dist/preview release/inspector/babylon.inspector.bundle.max.js.map


+ 1 - 0
dist/preview release/loaders/babylon.glTF2FileLoader.js

@@ -973,6 +973,7 @@ var KHR_materials_clearcoat = /** @class */ (function () {
         }
         var promises = new Array();
         babylonMaterial.clearCoat.isEnabled = true;
+        babylonMaterial.clearCoat.remapF0OnInterfaceChange = false;
         if (properties.clearcoatFactor != undefined) {
             babylonMaterial.clearCoat.intensity = properties.clearcoatFactor;
         }

File diff suppressed because it is too large
+ 1 - 1
dist/preview release/loaders/babylon.glTF2FileLoader.js.map


File diff suppressed because it is too large
+ 1 - 1
dist/preview release/loaders/babylon.glTF2FileLoader.min.js


+ 1 - 0
dist/preview release/loaders/babylon.glTFFileLoader.js

@@ -3324,6 +3324,7 @@ var KHR_materials_clearcoat = /** @class */ (function () {
         }
         var promises = new Array();
         babylonMaterial.clearCoat.isEnabled = true;
+        babylonMaterial.clearCoat.remapF0OnInterfaceChange = false;
         if (properties.clearcoatFactor != undefined) {
             babylonMaterial.clearCoat.intensity = properties.clearcoatFactor;
         }

File diff suppressed because it is too large
+ 1 - 1
dist/preview release/loaders/babylon.glTFFileLoader.js.map


File diff suppressed because it is too large
+ 1 - 1
dist/preview release/loaders/babylon.glTFFileLoader.min.js


+ 1 - 0
dist/preview release/loaders/babylonjs.loaders.js

@@ -4704,6 +4704,7 @@ var KHR_materials_clearcoat = /** @class */ (function () {
         }
         var promises = new Array();
         babylonMaterial.clearCoat.isEnabled = true;
+        babylonMaterial.clearCoat.remapF0OnInterfaceChange = false;
         if (properties.clearcoatFactor != undefined) {
             babylonMaterial.clearCoat.intensity = properties.clearcoatFactor;
         }

File diff suppressed because it is too large
+ 1 - 1
dist/preview release/loaders/babylonjs.loaders.js.map


File diff suppressed because it is too large
+ 1 - 1
dist/preview release/loaders/babylonjs.loaders.min.js


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

@@ -1 +1 @@
-{"thinEngineOnly":117927,"engineOnly":154367,"sceneOnly":519894,"minGridMaterial":659986,"minStandardMaterial":810521}
+{"thinEngineOnly":118576,"engineOnly":155016,"sceneOnly":520543,"minGridMaterial":660635,"minStandardMaterial":811170}

+ 64 - 18
dist/preview release/viewer/babylon.module.d.ts

@@ -36610,6 +36610,10 @@ declare module "babylonjs/Engines/thinEngine" {
          * Make the matrix computations to be performed in 64 bits instead of 32 bits. False by default
          */
         useHighPrecisionMatrix?: boolean;
+        /**
+         * Will prevent the system from falling back to software implementation if a hardware device cannot be created
+         */
+        failIfMajorPerformanceCaveat?: boolean;
     }
     /**
      * The base engine class (root of all engines)
@@ -37625,7 +37629,12 @@ declare module "babylonjs/Engines/thinEngine" {
          * @returns a Uint8Array containing RGBA colors
          */
         readPixels(x: number, y: number, width: number, height: number, hasAlpha?: boolean): Uint8Array;
-        private static _isSupported;
+        private static _IsSupported;
+        private static _HasMajorPerformanceCaveat;
+        /**
+         * Gets a boolean indicating if the engine can be instanciated (ie. if a webGL context can be found)
+         */
+        static get IsSupported(): boolean;
         /**
          * Gets a boolean indicating if the engine can be instanciated (ie. if a webGL context can be found)
          * @returns true if the engine can be created
@@ -37633,6 +37642,10 @@ declare module "babylonjs/Engines/thinEngine" {
          */
         static isSupported(): boolean;
         /**
+         * Gets a boolean indicating if the engine can be instanciated on a performant device (ie. if a webGL context can be found and it does not use a slow implementation)
+         */
+        static get HasMajorPerformanceCaveat(): boolean;
+        /**
          * Find the next highest power of two.
          * @param x Number to start search from.
          * @return Next highest power of two.
@@ -53207,6 +53220,8 @@ declare module "babylonjs/Debug/ISkeletonViewer" {
         sphereScaleUnit?: number;
         /** Ratio for the Sphere Size */
         sphereFactor?: number;
+        /** Whether a spur should attach its far end to the child bone position */
+        spurFollowsChild?: boolean;
         /** Whether to show local axes or not  */
         showLocalAxes?: boolean;
         /** Length of each local axis */
@@ -53518,14 +53533,15 @@ declare module "babylonjs/Debug/skeletonViewer" {
         changeDisplayMode(mode: number): void;
         /** Sets a display option of the skeleton viewer
          *
-         * | Option          | Type    | Default | Description |
-         * | --------------- | ------- | ------- | ----------- |
-         * | midStep         | float   | 0.235   | A percentage between a bone and its child that determines the widest part of a spur. Only used when `displayMode` is set to `DISPLAY_SPHERE_AND_SPURS`. |
-         * | midStepFactor   | float   | 0.15    | Mid step width expressed as a factor of the length. A value of 0.5 makes the spur width half of the spur length. Only used when `displayMode` is set to `DISPLAY_SPHERE_AND_SPURS`. |
-         * | sphereBaseSize  | float   | 2       | Sphere base size. Only used when `displayMode` is set to `DISPLAY_SPHERE_AND_SPURS`. |
-         * | sphereScaleUnit | float   | 0.865   | Sphere scale factor used to scale spheres in relation to the longest bone. Only used when `displayMode` is set to `DISPLAY_SPHERE_AND_SPURS`. |
-         * | showLocalAxes   | boolean | false   | Displays local axes on all bones. |
-         * | localAxesSize   | float   | 0.075   | Determines the length of each local axis. |
+         * | Option           | Type    | Default | Description |
+         * | ---------------- | ------- | ------- | ----------- |
+         * | midStep          | float   | 0.235   | A percentage between a bone and its child that determines the widest part of a spur. Only used when `displayMode` is set to `DISPLAY_SPHERE_AND_SPURS`. |
+         * | midStepFactor    | float   | 0.15    | Mid step width expressed as a factor of the length. A value of 0.5 makes the spur width half of the spur length. Only used when `displayMode` is set to `DISPLAY_SPHERE_AND_SPURS`. |
+         * | sphereBaseSize   | float   | 2       | Sphere base size. Only used when `displayMode` is set to `DISPLAY_SPHERE_AND_SPURS`. |
+         * | sphereScaleUnit  | float   | 0.865   | Sphere scale factor used to scale spheres in relation to the longest bone. Only used when `displayMode` is set to `DISPLAY_SPHERE_AND_SPURS`. |
+         * | spurFollowsChild | boolean | false   | Whether a spur should attach its far end to the child bone. |
+         * | showLocalAxes    | boolean | false   | Displays local axes on all bones. |
+         * | localAxesSize    | float   | 0.075   | Determines the length of each local axis. |
          *
          * @param option String of the option name
          * @param value The numerical option value
@@ -57815,6 +57831,7 @@ declare module "babylonjs/Materials/PBR/pbrClearCoatConfiguration" {
         CLEARCOAT_TEXTUREDIRECTUV: number;
         CLEARCOAT_BUMP: boolean;
         CLEARCOAT_BUMPDIRECTUV: number;
+        CLEARCOAT_REMAP_F0: boolean;
         CLEARCOAT_TINT: boolean;
         CLEARCOAT_TINT_TEXTURE: boolean;
         CLEARCOAT_TINT_TEXTUREDIRECTUV: number;
@@ -57856,6 +57873,11 @@ declare module "babylonjs/Materials/PBR/pbrClearCoatConfiguration" {
          * Stores the clear coat values in a texture.
          */
         texture: Nullable<BaseTexture>;
+        private _remapF0OnInterfaceChange;
+        /**
+         * Defines if the F0 value should be remapped to account for the interface change in the material.
+         */
+        remapF0OnInterfaceChange: boolean;
         private _bumpTexture;
         /**
          * Define the clear coat specific bump texture.
@@ -59204,6 +59226,7 @@ declare module "babylonjs/Materials/PBR/pbrBaseMaterial" {
         CLEARCOAT_TEXTUREDIRECTUV: number;
         CLEARCOAT_BUMP: boolean;
         CLEARCOAT_BUMPDIRECTUV: number;
+        CLEARCOAT_REMAP_F0: boolean;
         CLEARCOAT_TINT: boolean;
         CLEARCOAT_TINT_TEXTURE: boolean;
         CLEARCOAT_TINT_TEXTUREDIRECTUV: number;
@@ -115661,6 +115684,10 @@ declare module BABYLON {
          * Make the matrix computations to be performed in 64 bits instead of 32 bits. False by default
          */
         useHighPrecisionMatrix?: boolean;
+        /**
+         * Will prevent the system from falling back to software implementation if a hardware device cannot be created
+         */
+        failIfMajorPerformanceCaveat?: boolean;
     }
     /**
      * The base engine class (root of all engines)
@@ -116676,7 +116703,12 @@ declare module BABYLON {
          * @returns a Uint8Array containing RGBA colors
          */
         readPixels(x: number, y: number, width: number, height: number, hasAlpha?: boolean): Uint8Array;
-        private static _isSupported;
+        private static _IsSupported;
+        private static _HasMajorPerformanceCaveat;
+        /**
+         * Gets a boolean indicating if the engine can be instanciated (ie. if a webGL context can be found)
+         */
+        static get IsSupported(): boolean;
         /**
          * Gets a boolean indicating if the engine can be instanciated (ie. if a webGL context can be found)
          * @returns true if the engine can be created
@@ -116684,6 +116716,10 @@ declare module BABYLON {
          */
         static isSupported(): boolean;
         /**
+         * Gets a boolean indicating if the engine can be instanciated on a performant device (ie. if a webGL context can be found and it does not use a slow implementation)
+         */
+        static get HasMajorPerformanceCaveat(): boolean;
+        /**
          * Find the next highest power of two.
          * @param x Number to start search from.
          * @return Next highest power of two.
@@ -131473,6 +131509,8 @@ declare module BABYLON {
         sphereScaleUnit?: number;
         /** Ratio for the Sphere Size */
         sphereFactor?: number;
+        /** Whether a spur should attach its far end to the child bone position */
+        spurFollowsChild?: boolean;
         /** Whether to show local axes or not  */
         showLocalAxes?: boolean;
         /** Length of each local axis */
@@ -131766,14 +131804,15 @@ declare module BABYLON.Debug {
         changeDisplayMode(mode: number): void;
         /** Sets a display option of the skeleton viewer
          *
-         * | Option          | Type    | Default | Description |
-         * | --------------- | ------- | ------- | ----------- |
-         * | midStep         | float   | 0.235   | A percentage between a bone and its child that determines the widest part of a spur. Only used when `displayMode` is set to `DISPLAY_SPHERE_AND_SPURS`. |
-         * | midStepFactor   | float   | 0.15    | Mid step width expressed as a factor of the length. A value of 0.5 makes the spur width half of the spur length. Only used when `displayMode` is set to `DISPLAY_SPHERE_AND_SPURS`. |
-         * | sphereBaseSize  | float   | 2       | Sphere base size. Only used when `displayMode` is set to `DISPLAY_SPHERE_AND_SPURS`. |
-         * | sphereScaleUnit | float   | 0.865   | Sphere scale factor used to scale spheres in relation to the longest bone. Only used when `displayMode` is set to `DISPLAY_SPHERE_AND_SPURS`. |
-         * | showLocalAxes   | boolean | false   | Displays local axes on all bones. |
-         * | localAxesSize   | float   | 0.075   | Determines the length of each local axis. |
+         * | Option           | Type    | Default | Description |
+         * | ---------------- | ------- | ------- | ----------- |
+         * | midStep          | float   | 0.235   | A percentage between a bone and its child that determines the widest part of a spur. Only used when `displayMode` is set to `DISPLAY_SPHERE_AND_SPURS`. |
+         * | midStepFactor    | float   | 0.15    | Mid step width expressed as a factor of the length. A value of 0.5 makes the spur width half of the spur length. Only used when `displayMode` is set to `DISPLAY_SPHERE_AND_SPURS`. |
+         * | sphereBaseSize   | float   | 2       | Sphere base size. Only used when `displayMode` is set to `DISPLAY_SPHERE_AND_SPURS`. |
+         * | sphereScaleUnit  | float   | 0.865   | Sphere scale factor used to scale spheres in relation to the longest bone. Only used when `displayMode` is set to `DISPLAY_SPHERE_AND_SPURS`. |
+         * | spurFollowsChild | boolean | false   | Whether a spur should attach its far end to the child bone. |
+         * | showLocalAxes    | boolean | false   | Displays local axes on all bones. |
+         * | localAxesSize    | float   | 0.075   | Determines the length of each local axis. |
          *
          * @param option String of the option name
          * @param value The numerical option value
@@ -135700,6 +135739,7 @@ declare module BABYLON {
         CLEARCOAT_TEXTUREDIRECTUV: number;
         CLEARCOAT_BUMP: boolean;
         CLEARCOAT_BUMPDIRECTUV: number;
+        CLEARCOAT_REMAP_F0: boolean;
         CLEARCOAT_TINT: boolean;
         CLEARCOAT_TINT_TEXTURE: boolean;
         CLEARCOAT_TINT_TEXTUREDIRECTUV: number;
@@ -135741,6 +135781,11 @@ declare module BABYLON {
          * Stores the clear coat values in a texture.
          */
         texture: Nullable<BaseTexture>;
+        private _remapF0OnInterfaceChange;
+        /**
+         * Defines if the F0 value should be remapped to account for the interface change in the material.
+         */
+        remapF0OnInterfaceChange: boolean;
         private _bumpTexture;
         /**
          * Define the clear coat specific bump texture.
@@ -136963,6 +137008,7 @@ declare module BABYLON {
         CLEARCOAT_TEXTUREDIRECTUV: number;
         CLEARCOAT_BUMP: boolean;
         CLEARCOAT_BUMPDIRECTUV: number;
+        CLEARCOAT_REMAP_F0: boolean;
         CLEARCOAT_TINT: boolean;
         CLEARCOAT_TINT_TEXTURE: boolean;
         CLEARCOAT_TINT_TEXTUREDIRECTUV: number;

File diff suppressed because it is too large
+ 61 - 61
dist/preview release/viewer/babylon.viewer.js


File diff suppressed because it is too large
+ 2 - 2
dist/preview release/viewer/babylon.viewer.max.js


+ 13 - 7
src/Engines/thinEngine.ts

@@ -4314,6 +4314,14 @@ export class ThinEngine {
 
     private static _IsSupported: Nullable<boolean> = null;
     private static _HasMajorPerformanceCaveat : Nullable<boolean> = null;
+
+    /**
+     * Gets a boolean indicating if the engine can be instanciated (ie. if a webGL context can be found)
+     */
+    public static get IsSupported(): boolean {
+        return this.isSupported(); // Backward compat
+    }
+
     /**
      * Gets a boolean indicating if the engine can be instanciated (ie. if a webGL context can be found)
      * @returns true if the engine can be created
@@ -4321,7 +4329,7 @@ export class ThinEngine {
      */
     public static isSupported(): boolean {
         if (this._HasMajorPerformanceCaveat !== null) {
-            return !this._HasMajorPerformanceCaveat; // We know it is hardware supported
+            return !this._HasMajorPerformanceCaveat; // We know it is performant so WebGL is supported
         }
 
         if (this._IsSupported === null) {
@@ -4339,15 +4347,13 @@ export class ThinEngine {
     }
 
     /**
-     * Gets a boolean indicating if the engine can be instanciated on a hardware device (ie. if a webGL context can be found and it does not use a software implementation)
-     * @returns true if the engine can be created on a hardware device 
-     * @ignorenaming
+     * Gets a boolean indicating if the engine can be instanciated on a performant device (ie. if a webGL context can be found and it does not use a slow implementation)
      */
-    public static IsHardwareSupported(): boolean {
+    public static get HasMajorPerformanceCaveat(): boolean {
         if (this._HasMajorPerformanceCaveat === null) {
             try {
                 var tempcanvas = CanvasGenerator.CreateCanvas(1, 1);
-                var gl = tempcanvas.getContext("webgl", { failIfMajorPerformanceCaveat : true }) || (tempcanvas as any).getContext("experimental-webgl", { failIfMajorPerformanceCaveat : true });
+                var gl = tempcanvas.getContext("webgl", { failIfMajorPerformanceCaveat: true }) || (tempcanvas as any).getContext("experimental-webgl", { failIfMajorPerformanceCaveat: true });
 
                 this._HasMajorPerformanceCaveat = !gl;
             } catch (e) {
@@ -4355,7 +4361,7 @@ export class ThinEngine {
             }
         }
 
-        return !this._HasMajorPerformanceCaveat;
+        return this._HasMajorPerformanceCaveat;
     }
 
     /**

+ 1 - 1
src/Materials/PBR/pbrBaseMaterial.ts

@@ -224,7 +224,7 @@ export class PBRMaterialDefines extends MaterialDefines
     public CLEARCOAT_TEXTUREDIRECTUV = 0;
     public CLEARCOAT_BUMP = false;
     public CLEARCOAT_BUMPDIRECTUV = 0;
-    public CLEARCOAT_REMAPP_F0 = true;
+    public CLEARCOAT_REMAP_F0 = true;
     public CLEARCOAT_TINT = false;
     public CLEARCOAT_TINT_TEXTURE = false;
     public CLEARCOAT_TINT_TEXTUREDIRECTUV = 0;

+ 2 - 2
src/Materials/PBR/pbrClearCoatConfiguration.ts

@@ -21,7 +21,7 @@ export interface IMaterialClearCoatDefines {
     CLEARCOAT_TEXTUREDIRECTUV: number;
     CLEARCOAT_BUMP: boolean;
     CLEARCOAT_BUMPDIRECTUV: number;
-    CLEARCOAT_REMAPP_F0: boolean;
+    CLEARCOAT_REMAP_F0: boolean;
 
     CLEARCOAT_TINT: boolean;
     CLEARCOAT_TINT_TEXTURE: boolean;
@@ -195,7 +195,7 @@ export class PBRClearCoatConfiguration {
     public prepareDefines(defines: IMaterialClearCoatDefines, scene: Scene): void {
         if (this._isEnabled) {
             defines.CLEARCOAT = true;
-            defines.CLEARCOAT_REMAPP_F0 = this._remapF0OnInterfaceChange;
+            defines.CLEARCOAT_REMAP_F0 = this._remapF0OnInterfaceChange;
 
             if (defines._areTexturesDirty) {
                 if (scene.texturesEnabled) {

+ 1 - 1
src/Shaders/ShadersInclude/pbrBlockClearcoat.fx

@@ -128,7 +128,7 @@ struct clearcoatOutParams
         // clearCoatRoughness = mix(0.089, 0.6, clearCoatRoughness);
 
         // Remap F0 to account for the change of interface within the material.
-        #ifdef CLEARCOAT_REMAPP_F0
+        #ifdef CLEARCOAT_REMAP_F0
             vec3 specularEnvironmentR0Updated = getR0RemappedForClearCoat(specularEnvironmentR0);
         #else
             vec3 specularEnvironmentR0Updated = specularEnvironmentR0;