Pārlūkot izejas kodu

Merge remote-tracking branch 'upstream/master' into xr-model-loading

Raanan Weber 5 gadi atpakaļ
vecāks
revīzija
df2dbf4eb7
100 mainītis faili ar 412 papildinājumiem un 358 dzēšanām
  1. 20 15
      dist/preview release/babylon.d.ts
  2. 1 1
      dist/preview release/babylon.js
  3. 75 53
      dist/preview release/babylon.max.js
  4. 1 1
      dist/preview release/babylon.max.js.map
  5. 40 30
      dist/preview release/babylon.module.d.ts
  6. 21 16
      dist/preview release/documentation.d.ts
  7. 1 1
      dist/preview release/glTF2Interface/package.json
  8. 2 2
      dist/preview release/gui/babylon.gui.js
  9. 1 1
      dist/preview release/gui/babylon.gui.js.map
  10. 1 1
      dist/preview release/gui/babylon.gui.min.js
  11. 2 2
      dist/preview release/gui/package.json
  12. 7 7
      dist/preview release/inspector/package.json
  13. 3 3
      dist/preview release/loaders/package.json
  14. 2 2
      dist/preview release/materialsLibrary/babylon.cellMaterial.js
  15. 1 1
      dist/preview release/materialsLibrary/babylon.cellMaterial.js.map
  16. 1 1
      dist/preview release/materialsLibrary/babylon.cellMaterial.min.js
  17. 2 5
      dist/preview release/materialsLibrary/babylon.fireMaterial.js
  18. 1 1
      dist/preview release/materialsLibrary/babylon.fireMaterial.js.map
  19. 1 1
      dist/preview release/materialsLibrary/babylon.fireMaterial.min.js
  20. 2 2
      dist/preview release/materialsLibrary/babylon.furMaterial.js
  21. 1 1
      dist/preview release/materialsLibrary/babylon.furMaterial.js.map
  22. 1 1
      dist/preview release/materialsLibrary/babylon.furMaterial.min.js
  23. 2 2
      dist/preview release/materialsLibrary/babylon.gradientMaterial.js
  24. 1 1
      dist/preview release/materialsLibrary/babylon.gradientMaterial.js.map
  25. 1 1
      dist/preview release/materialsLibrary/babylon.gradientMaterial.min.js
  26. 2 2
      dist/preview release/materialsLibrary/babylon.gridMaterial.js
  27. 1 1
      dist/preview release/materialsLibrary/babylon.gridMaterial.js.map
  28. 1 1
      dist/preview release/materialsLibrary/babylon.gridMaterial.min.js
  29. 2 2
      dist/preview release/materialsLibrary/babylon.lavaMaterial.js
  30. 1 1
      dist/preview release/materialsLibrary/babylon.lavaMaterial.js.map
  31. 1 1
      dist/preview release/materialsLibrary/babylon.lavaMaterial.min.js
  32. 2 2
      dist/preview release/materialsLibrary/babylon.mixMaterial.js
  33. 1 1
      dist/preview release/materialsLibrary/babylon.mixMaterial.js.map
  34. 1 1
      dist/preview release/materialsLibrary/babylon.mixMaterial.min.js
  35. 2 2
      dist/preview release/materialsLibrary/babylon.normalMaterial.js
  36. 1 1
      dist/preview release/materialsLibrary/babylon.normalMaterial.js.map
  37. 1 1
      dist/preview release/materialsLibrary/babylon.normalMaterial.min.js
  38. 2 2
      dist/preview release/materialsLibrary/babylon.shadowOnlyMaterial.js
  39. 1 1
      dist/preview release/materialsLibrary/babylon.shadowOnlyMaterial.js.map
  40. 1 1
      dist/preview release/materialsLibrary/babylon.shadowOnlyMaterial.min.js
  41. 2 2
      dist/preview release/materialsLibrary/babylon.simpleMaterial.js
  42. 1 1
      dist/preview release/materialsLibrary/babylon.simpleMaterial.js.map
  43. 1 1
      dist/preview release/materialsLibrary/babylon.simpleMaterial.min.js
  44. 2 2
      dist/preview release/materialsLibrary/babylon.skyMaterial.js
  45. 1 1
      dist/preview release/materialsLibrary/babylon.skyMaterial.js.map
  46. 1 1
      dist/preview release/materialsLibrary/babylon.skyMaterial.min.js
  47. 2 2
      dist/preview release/materialsLibrary/babylon.terrainMaterial.js
  48. 1 1
      dist/preview release/materialsLibrary/babylon.terrainMaterial.js.map
  49. 1 1
      dist/preview release/materialsLibrary/babylon.terrainMaterial.min.js
  50. 2 2
      dist/preview release/materialsLibrary/babylon.triPlanarMaterial.js
  51. 1 1
      dist/preview release/materialsLibrary/babylon.triPlanarMaterial.js.map
  52. 1 1
      dist/preview release/materialsLibrary/babylon.triPlanarMaterial.min.js
  53. 2 2
      dist/preview release/materialsLibrary/babylon.waterMaterial.js
  54. 1 1
      dist/preview release/materialsLibrary/babylon.waterMaterial.js.map
  55. 1 1
      dist/preview release/materialsLibrary/babylon.waterMaterial.min.js
  56. 28 31
      dist/preview release/materialsLibrary/babylonjs.materials.js
  57. 1 1
      dist/preview release/materialsLibrary/babylonjs.materials.js.map
  58. 1 1
      dist/preview release/materialsLibrary/babylonjs.materials.min.js
  59. 2 2
      dist/preview release/materialsLibrary/package.json
  60. 1 1
      dist/preview release/nodeEditor/babylon.nodeEditor.js
  61. 5 2
      dist/preview release/nodeEditor/babylon.nodeEditor.max.js
  62. 1 1
      dist/preview release/nodeEditor/babylon.nodeEditor.max.js.map
  63. 2 2
      dist/preview release/nodeEditor/package.json
  64. 1 1
      dist/preview release/package.json
  65. 1 1
      dist/preview release/packagesSizeBaseLine.json
  66. 2 2
      dist/preview release/postProcessesLibrary/package.json
  67. 2 2
      dist/preview release/proceduralTexturesLibrary/package.json
  68. 2 2
      dist/preview release/serializers/babylon.glTF2Serializer.js
  69. 1 1
      dist/preview release/serializers/babylon.glTF2Serializer.js.map
  70. 1 1
      dist/preview release/serializers/babylon.glTF2Serializer.min.js
  71. 1 1
      dist/preview release/serializers/babylonjs.serializers.d.ts
  72. 2 2
      dist/preview release/serializers/babylonjs.serializers.js
  73. 1 1
      dist/preview release/serializers/babylonjs.serializers.js.map
  74. 1 1
      dist/preview release/serializers/babylonjs.serializers.min.js
  75. 2 2
      dist/preview release/serializers/babylonjs.serializers.module.d.ts
  76. 3 3
      dist/preview release/serializers/package.json
  77. 40 30
      dist/preview release/viewer/babylon.module.d.ts
  78. 15 15
      dist/preview release/viewer/babylon.viewer.js
  79. 1 1
      dist/preview release/viewer/babylon.viewer.max.js
  80. 2 0
      dist/preview release/what's new.md
  81. 2 2
      gui/src/3D/materials/fluentMaterial.ts
  82. 2 2
      materialsLibrary/src/cell/cellMaterial.ts
  83. 2 6
      materialsLibrary/src/fire/fireMaterial.ts
  84. 2 2
      materialsLibrary/src/fur/furMaterial.ts
  85. 2 2
      materialsLibrary/src/gradient/gradientMaterial.ts
  86. 2 2
      materialsLibrary/src/grid/gridMaterial.ts
  87. 2 2
      materialsLibrary/src/lava/lavaMaterial.ts
  88. 2 2
      materialsLibrary/src/mix/mixMaterial.ts
  89. 2 2
      materialsLibrary/src/normal/normalMaterial.ts
  90. 2 2
      materialsLibrary/src/shadowOnly/shadowOnlyMaterial.ts
  91. 2 2
      materialsLibrary/src/simple/simpleMaterial.ts
  92. 2 2
      materialsLibrary/src/sky/skyMaterial.ts
  93. 2 2
      materialsLibrary/src/terrain/terrainMaterial.ts
  94. 2 2
      materialsLibrary/src/triPlanar/triPlanarMaterial.ts
  95. 2 2
      materialsLibrary/src/water/waterMaterial.ts
  96. 22 19
      nodeEditor/src/diagram/nodeLink.ts
  97. 2 2
      package.json
  98. 3 2
      serializers/src/glTF/2.0/Extensions/KHR_lights_punctual.ts
  99. 5 2
      serializers/src/glTF/2.0/glTFAnimation.ts
  100. 0 0
      serializers/src/glTF/2.0/glTFExporter.ts

+ 20 - 15
dist/preview release/babylon.d.ts

@@ -768,16 +768,16 @@ declare module BABYLON {
         static readonly TEXTURETYPE_UNSIGNED_INT_5_9_9_9_REV: number;
         /** FLOAT_32_UNSIGNED_INT_24_8_REV */
         static readonly TEXTURETYPE_FLOAT_32_UNSIGNED_INT_24_8_REV: number;
-        /** nearest is mag = nearest and min = nearest and mip = nearest */
+        /** nearest is mag = nearest and min = nearest and no mip */
         static readonly TEXTURE_NEAREST_SAMPLINGMODE: number;
-        /** Bilinear is mag = linear and min = linear and mip = nearest */
+        /** mag = nearest and min = nearest and mip = none */
+        static readonly TEXTURE_NEAREST_NEAREST: number;
+        /** Bilinear is mag = linear and min = linear and no mip */
         static readonly TEXTURE_BILINEAR_SAMPLINGMODE: number;
+        /** mag = linear and min = linear and mip = none */
+        static readonly TEXTURE_LINEAR_LINEAR: number;
         /** Trilinear is mag = linear and min = linear and mip = linear */
         static readonly TEXTURE_TRILINEAR_SAMPLINGMODE: number;
-        /** nearest is mag = nearest and min = nearest and mip = linear */
-        static readonly TEXTURE_NEAREST_NEAREST_MIPLINEAR: number;
-        /** Bilinear is mag = linear and min = linear and mip = nearest */
-        static readonly TEXTURE_LINEAR_LINEAR_MIPNEAREST: number;
         /** Trilinear is mag = linear and min = linear and mip = linear */
         static readonly TEXTURE_LINEAR_LINEAR_MIPLINEAR: number;
         /** mag = nearest and min = nearest and mip = nearest */
@@ -788,14 +788,14 @@ declare module BABYLON {
         static readonly TEXTURE_NEAREST_LINEAR_MIPLINEAR: number;
         /** mag = nearest and min = linear and mip = none */
         static readonly TEXTURE_NEAREST_LINEAR: number;
-        /** mag = nearest and min = nearest and mip = none */
-        static readonly TEXTURE_NEAREST_NEAREST: number;
+        /** nearest is mag = nearest and min = nearest and mip = linear */
+        static readonly TEXTURE_NEAREST_NEAREST_MIPLINEAR: number;
         /** mag = linear and min = nearest and mip = nearest */
         static readonly TEXTURE_LINEAR_NEAREST_MIPNEAREST: number;
         /** mag = linear and min = nearest and mip = linear */
         static readonly TEXTURE_LINEAR_NEAREST_MIPLINEAR: number;
-        /** mag = linear and min = linear and mip = none */
-        static readonly TEXTURE_LINEAR_LINEAR: number;
+        /** Bilinear is mag = linear and min = linear and mip = nearest */
+        static readonly TEXTURE_LINEAR_LINEAR_MIPNEAREST: number;
         /** mag = linear and min = nearest and mip = none */
         static readonly TEXTURE_LINEAR_NEAREST: number;
         /** Explicit coordinates mode */
@@ -20852,11 +20852,6 @@ declare module BABYLON {
          */
         _effect: Nullable<Effect>;
         /**
-         * @hidden
-         * Specifies if the material was previously ready
-         */
-        _wasPreviouslyReady: boolean;
-        /**
          * Specifies if uniform buffers should be used
          */
         private _useUBO;
@@ -29810,6 +29805,11 @@ declare module BABYLON {
         /** @hidden */
         _onBindObservable: Nullable<Observable<Effect>>;
         /**
+         * @hidden
+         * Specifies if the effect was previously ready
+         */
+        _wasPreviouslyReady: boolean;
+        /**
          * Observable that will be called when effect is bound.
          */
         get onBindObservable(): Observable<Effect>;
@@ -34255,6 +34255,11 @@ declare module BABYLON {
          * @returns Promise that resolves after the given amount of time
          */
         static DelayAsync(delay: number): Promise<void>;
+        /**
+         * Utility function to detect if the current user agent is Safari
+         * @returns whether or not the current user agent is safari
+         */
+        static IsSafari(): boolean;
     }
     /**
      * Use this className as a decorator on a given class definition to add it a name and optionally its module.

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1 - 1
dist/preview release/babylon.js


+ 75 - 53
dist/preview release/babylon.max.js

@@ -35118,16 +35118,16 @@ var Constants = /** @class */ (function () {
     Constants.TEXTURETYPE_UNSIGNED_INT_5_9_9_9_REV = 14;
     /** FLOAT_32_UNSIGNED_INT_24_8_REV */
     Constants.TEXTURETYPE_FLOAT_32_UNSIGNED_INT_24_8_REV = 15;
-    /** nearest is mag = nearest and min = nearest and mip = nearest */
+    /** nearest is mag = nearest and min = nearest and no mip */
     Constants.TEXTURE_NEAREST_SAMPLINGMODE = 1;
-    /** Bilinear is mag = linear and min = linear and mip = nearest */
+    /** mag = nearest and min = nearest and mip = none */
+    Constants.TEXTURE_NEAREST_NEAREST = 1;
+    /** Bilinear is mag = linear and min = linear and no mip */
     Constants.TEXTURE_BILINEAR_SAMPLINGMODE = 2;
+    /** mag = linear and min = linear and mip = none */
+    Constants.TEXTURE_LINEAR_LINEAR = 2;
     /** Trilinear is mag = linear and min = linear and mip = linear */
     Constants.TEXTURE_TRILINEAR_SAMPLINGMODE = 3;
-    /** nearest is mag = nearest and min = nearest and mip = linear */
-    Constants.TEXTURE_NEAREST_NEAREST_MIPLINEAR = 1;
-    /** Bilinear is mag = linear and min = linear and mip = nearest */
-    Constants.TEXTURE_LINEAR_LINEAR_MIPNEAREST = 2;
     /** Trilinear is mag = linear and min = linear and mip = linear */
     Constants.TEXTURE_LINEAR_LINEAR_MIPLINEAR = 3;
     /** mag = nearest and min = nearest and mip = nearest */
@@ -35138,14 +35138,14 @@ var Constants = /** @class */ (function () {
     Constants.TEXTURE_NEAREST_LINEAR_MIPLINEAR = 6;
     /** mag = nearest and min = linear and mip = none */
     Constants.TEXTURE_NEAREST_LINEAR = 7;
-    /** mag = nearest and min = nearest and mip = none */
-    Constants.TEXTURE_NEAREST_NEAREST = 8;
+    /** nearest is mag = nearest and min = nearest and mip = linear */
+    Constants.TEXTURE_NEAREST_NEAREST_MIPLINEAR = 8;
     /** mag = linear and min = nearest and mip = nearest */
     Constants.TEXTURE_LINEAR_NEAREST_MIPNEAREST = 9;
     /** mag = linear and min = nearest and mip = linear */
     Constants.TEXTURE_LINEAR_NEAREST_MIPLINEAR = 10;
-    /** mag = linear and min = linear and mip = none */
-    Constants.TEXTURE_LINEAR_LINEAR = 11;
+    /** Bilinear is mag = linear and min = linear and mip = nearest */
+    Constants.TEXTURE_LINEAR_LINEAR_MIPNEAREST = 11;
     /** mag = linear and min = nearest and mip = none */
     Constants.TEXTURE_LINEAR_NEAREST = 12;
     /** Explicit coordinates mode */
@@ -39614,7 +39614,7 @@ var ThinEngine = /** @class */ (function () {
          */
         // Not mixed with Version for tooling purpose.
         get: function () {
-            return "babylonjs@4.1.0-beta.15";
+            return "babylonjs@4.1.0-beta.17";
         },
         enumerable: true,
         configurable: true
@@ -39624,7 +39624,7 @@ var ThinEngine = /** @class */ (function () {
          * Returns the current version of the framework
          */
         get: function () {
-            return "4.1.0-beta.15";
+            return "4.1.0-beta.17";
         },
         enumerable: true,
         configurable: true
@@ -63260,7 +63260,7 @@ var BackgroundMaterial = /** @class */ (function (_super) {
         var _this = this;
         if (useInstances === void 0) { useInstances = false; }
         if (subMesh.effect && this.isFrozen) {
-            if (this._wasPreviouslyReady) {
+            if (subMesh.effect._wasPreviouslyReady) {
                 return true;
             }
         }
@@ -63488,7 +63488,7 @@ var BackgroundMaterial = /** @class */ (function (_super) {
             return false;
         }
         defines._renderId = scene.getRenderId();
-        this._wasPreviouslyReady = true;
+        subMesh.effect._wasPreviouslyReady = true;
         return true;
     };
     /**
@@ -66564,21 +66564,22 @@ var InputBlock = /** @class */ (function (_super) {
         this._emit(state);
     };
     InputBlock.prototype._dumpPropertiesCode = function () {
+        var variableName = this._codeVariableName;
         if (this.isAttribute) {
-            return this._codeVariableName + ".setAsAttribute(\"" + this.name + "\");\r\n";
+            return variableName + ".setAsAttribute(\"" + this.name + "\");\r\n";
         }
         if (this.isSystemValue) {
-            return this._codeVariableName + ".setAsSystemValue(BABYLON.NodeMaterialSystemValues." + _Enums_nodeMaterialSystemValues__WEBPACK_IMPORTED_MODULE_4__["NodeMaterialSystemValues"][this._systemValue] + ");\r\n";
+            return variableName + ".setAsSystemValue(BABYLON.NodeMaterialSystemValues." + _Enums_nodeMaterialSystemValues__WEBPACK_IMPORTED_MODULE_4__["NodeMaterialSystemValues"][this._systemValue] + ");\r\n";
         }
         if (this.isUniform) {
             var valueString = "";
             switch (this.type) {
                 case _Enums_nodeMaterialBlockConnectionPointTypes__WEBPACK_IMPORTED_MODULE_2__["NodeMaterialBlockConnectionPointTypes"].Float:
-                    var returnValue = this._codeVariableName + ".value = " + this.value + ";\r\n";
-                    returnValue += this._codeVariableName + ".min = " + this.min + ";\r\n";
-                    returnValue += this._codeVariableName + ".max = " + this.max + ";\r\n";
-                    returnValue += this._codeVariableName + ".matrixMode = " + this.matrixMode + ";\r\n";
-                    returnValue += this._codeVariableName + ".animationType  = BABYLON.AnimatedInputBlockTypes." + _animatedInputBlockTypes__WEBPACK_IMPORTED_MODULE_9__["AnimatedInputBlockTypes"][this.animationType] + ";\r\n";
+                    var returnValue = variableName + ".value = " + this.value + ";\r\n";
+                    returnValue += variableName + ".min = " + this.min + ";\r\n";
+                    returnValue += variableName + ".max = " + this.max + ";\r\n";
+                    returnValue += variableName + ".matrixMode = " + this.matrixMode + ";\r\n";
+                    returnValue += variableName + ".animationType  = BABYLON.AnimatedInputBlockTypes." + _animatedInputBlockTypes__WEBPACK_IMPORTED_MODULE_9__["AnimatedInputBlockTypes"][this.animationType] + ";\r\n";
                     return returnValue;
                 case _Enums_nodeMaterialBlockConnectionPointTypes__WEBPACK_IMPORTED_MODULE_2__["NodeMaterialBlockConnectionPointTypes"].Vector2:
                     valueString = "new BABYLON.Vector2(" + this.value.x + ", " + this.value.y + ")";
@@ -66596,9 +66597,9 @@ var InputBlock = /** @class */ (function (_super) {
                     valueString = "new BABYLON.Color4(" + this.value.r + ", " + this.value.g + ", " + this.value.b + ", " + this.value.a + ")";
                     break;
             }
-            var finalOutput = this._codeVariableName + ".value = " + valueString + ";\r\n";
-            finalOutput += this._codeVariableName + ".isConstant = " + (this.isConstant ? "true" : "false") + ";\r\n";
-            finalOutput += this._codeVariableName + ".visibleInInspector = " + (this.visibleInInspector ? "true" : "false") + ";\r\n";
+            var finalOutput = variableName + ".value = " + valueString + ";\r\n";
+            finalOutput += variableName + ".isConstant = " + (this.isConstant ? "true" : "false") + ";\r\n";
+            finalOutput += variableName + ".visibleInInspector = " + (this.visibleInInspector ? "true" : "false") + ";\r\n";
             return finalOutput;
         }
         return "";
@@ -71208,7 +71209,7 @@ var SimplexPerlin3DBlock = /** @class */ (function (_super) {
         functionString += "    kernel_weights = kernel_weights*kernel_weights*kernel_weights;\r\n";
         functionString += "    return dot( kernel_weights, grad_results ) * FINAL_NORMALIZATION;\r\n";
         functionString += "}\r\n";
-        state._emitFunction('SimplexPerlin3D', functionString, 'SimplexPerlin3D');
+        state._emitFunction('SimplexPerlin3D', functionString, '// SimplexPerlin3D');
         state.compilationString += this._declareOutput(this._outputs[0], state) + (" = SimplexPerlin3D(" + this.seed.associatedVariableName + ");\r\n");
         return this;
     };
@@ -72711,7 +72712,7 @@ var WorleyNoise3DBlock = /** @class */ (function (_super) {
         functionString += "    d11.y = min(d11.y,d11.z); // Done! (Phew!)\r\n";
         functionString += "    return sqrt(d11.xy); // F1, F2\r\n";
         functionString += "}\r\n\r\n";
-        state._emitFunction('worley3D', functionString, 'worley3D');
+        state._emitFunction('worley3D', functionString, '// Worley3D');
         state.compilationString += this._declareOutput(this._outputs[0], state) + (" = worley(" + this.seed.associatedVariableName + ", " + this.jitter.associatedVariableName + ", " + this.manhattanDistance + ");\r\n");
         return this;
     };
@@ -73727,7 +73728,7 @@ var NodeMaterial = /** @class */ (function (_super) {
             }
         }
         if (subMesh.effect && this.isFrozen) {
-            if (this._wasPreviouslyReady) {
+            if (subMesh.effect._wasPreviouslyReady) {
                 return true;
             }
         }
@@ -73821,7 +73822,7 @@ var NodeMaterial = /** @class */ (function (_super) {
             return false;
         }
         defines._renderId = scene.getRenderId();
-        this._wasPreviouslyReady = true;
+        subMesh.effect._wasPreviouslyReady = true;
         return true;
     };
     Object.defineProperty(NodeMaterial.prototype, "compiledShaders", {
@@ -74753,7 +74754,7 @@ var NodeMaterialBlock = /** @class */ (function () {
         var codeString;
         // Get unique name
         var nameAsVariableName = this.name.replace(/[^A-Za-z_]+/g, "");
-        this._codeVariableName = nameAsVariableName;
+        this._codeVariableName = nameAsVariableName || this.getClassName() + "_" + this.uniqueId;
         if (uniqueNames.indexOf(this._codeVariableName) !== -1) {
             var index = 0;
             do {
@@ -76956,7 +76957,7 @@ var PBRBaseMaterial = /** @class */ (function (_super) {
      */
     PBRBaseMaterial.prototype.isReadyForSubMesh = function (mesh, subMesh, useInstances) {
         if (subMesh.effect && this.isFrozen) {
-            if (this._wasPreviouslyReady) {
+            if (subMesh.effect._wasPreviouslyReady) {
                 return true;
             }
         }
@@ -77079,7 +77080,7 @@ var PBRBaseMaterial = /** @class */ (function (_super) {
             return false;
         }
         defines._renderId = scene.getRenderId();
-        this._wasPreviouslyReady = true;
+        subMesh.effect._wasPreviouslyReady = true;
         return true;
     };
     /**
@@ -88801,6 +88802,11 @@ var Effect = /** @class */ (function () {
         this.onErrorObservable = new _Misc_observable__WEBPACK_IMPORTED_MODULE_0__["Observable"]();
         /** @hidden */
         this._onBindObservable = null;
+        /**
+         * @hidden
+         * Specifies if the effect was previously ready
+         */
+        this._wasPreviouslyReady = false;
         /** @hidden */
         this._bonesComputationForcedToCPU = false;
         this._uniformBuffersNames = {};
@@ -91379,11 +91385,6 @@ var Material = /** @class */ (function () {
          */
         this._effect = null;
         /**
-         * @hidden
-         * Specifies if the material was previously ready
-         */
-        this._wasPreviouslyReady = false;
-        /**
          * Specifies if uniform buffers should be used
          */
         this._useUBO = false;
@@ -91697,14 +91698,14 @@ var Material = /** @class */ (function () {
      * Locks updates for the material
      */
     Material.prototype.freeze = function () {
-        this._wasPreviouslyReady = false;
+        this.markDirty();
         this.checkReadyOnlyOnce = true;
     };
     /**
      * Unlocks updates for the material
      */
     Material.prototype.unfreeze = function () {
-        this._wasPreviouslyReady = false;
+        this.markDirty();
         this.checkReadyOnlyOnce = false;
     };
     /**
@@ -91773,7 +91774,23 @@ var Material = /** @class */ (function () {
      * Marks the material to indicate that it needs to be re-calculated
      */
     Material.prototype.markDirty = function () {
-        this._wasPreviouslyReady = false;
+        var meshes = this.getScene().meshes;
+        for (var _i = 0, meshes_1 = meshes; _i < meshes_1.length; _i++) {
+            var mesh = meshes_1[_i];
+            if (!mesh.subMeshes) {
+                continue;
+            }
+            for (var _a = 0, _b = mesh.subMeshes; _a < _b.length; _a++) {
+                var subMesh = _b[_a];
+                if (subMesh.getMaterial() !== this) {
+                    continue;
+                }
+                if (!subMesh.effect) {
+                    continue;
+                }
+                subMesh.effect._wasPreviouslyReady = false;
+            }
+        }
     };
     /** @hidden */
     Material.prototype._preBind = function (effect, overrideOrientation) {
@@ -92041,8 +92058,8 @@ var Material = /** @class */ (function () {
             return;
         }
         var meshes = this.getScene().meshes;
-        for (var _i = 0, meshes_1 = meshes; _i < meshes_1.length; _i++) {
-            var mesh = meshes_1[_i];
+        for (var _i = 0, meshes_2 = meshes; _i < meshes_2.length; _i++) {
+            var mesh = meshes_2[_i];
             if (!mesh.subMeshes) {
                 continue;
             }
@@ -92138,8 +92155,8 @@ var Material = /** @class */ (function () {
             }
             else {
                 var meshes = scene.meshes;
-                for (var _i = 0, meshes_2 = meshes; _i < meshes_2.length; _i++) {
-                    var mesh = meshes_2[_i];
+                for (var _i = 0, meshes_3 = meshes; _i < meshes_3.length; _i++) {
+                    var mesh = meshes_3[_i];
                     if (mesh.material === this && !mesh.sourceMesh) {
                         mesh.material = null;
                         this.releaseVertexArrayObject(mesh, forceDisposeEffect);
@@ -94381,7 +94398,7 @@ var ShaderMaterial = /** @class */ (function (_super) {
      */
     ShaderMaterial.prototype.isReady = function (mesh, useInstances) {
         if (this._effect && this.isFrozen) {
-            if (this._wasPreviouslyReady) {
+            if (this._effect._wasPreviouslyReady) {
                 return true;
             }
         }
@@ -94483,7 +94500,7 @@ var ShaderMaterial = /** @class */ (function (_super) {
             scene.resetCachedMaterial();
         }
         this._renderId = scene.getRenderId();
-        this._wasPreviouslyReady = true;
+        this._effect._wasPreviouslyReady = true;
         return true;
     };
     /**
@@ -95487,7 +95504,7 @@ var StandardMaterial = /** @class */ (function (_super) {
     StandardMaterial.prototype.isReadyForSubMesh = function (mesh, subMesh, useInstances) {
         if (useInstances === void 0) { useInstances = false; }
         if (subMesh.effect && this.isFrozen) {
-            if (this._wasPreviouslyReady) {
+            if (subMesh.effect._wasPreviouslyReady) {
                 return true;
             }
         }
@@ -95847,7 +95864,7 @@ var StandardMaterial = /** @class */ (function (_super) {
             return false;
         }
         defines._renderId = scene.getRenderId();
-        this._wasPreviouslyReady = true;
+        subMesh.effect._wasPreviouslyReady = true;
         return true;
     };
     /**
@@ -135475,6 +135492,13 @@ var Tools = /** @class */ (function () {
         });
     };
     /**
+     * Utility function to detect if the current user agent is Safari
+     * @returns whether or not the current user agent is safari
+     */
+    Tools.IsSafari = function () {
+        return /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
+    };
+    /**
      * Enable/Disable Custom HTTP Request Headers globally.
      * default = false
      * @see CustomRequestHeaders
@@ -159583,6 +159607,9 @@ var PostProcess = /** @class */ (function () {
         }
         var desiredWidth = (this._options.width || requiredWidth);
         var desiredHeight = this._options.height || requiredHeight;
+        var needMipMaps = this.renderTargetSamplingMode !== _Engines_constants__WEBPACK_IMPORTED_MODULE_3__["Constants"].TEXTURE_NEAREST_LINEAR &&
+            this.renderTargetSamplingMode !== _Engines_constants__WEBPACK_IMPORTED_MODULE_3__["Constants"].TEXTURE_NEAREST_NEAREST &&
+            this.renderTargetSamplingMode !== _Engines_constants__WEBPACK_IMPORTED_MODULE_3__["Constants"].TEXTURE_LINEAR_LINEAR;
         if (!this._shareOutputWithPostProcess && !this._forcedOutputTexture) {
             if (this.adaptScaleToCurrentViewport) {
                 var currentViewport = engine.currentViewport;
@@ -159591,7 +159618,7 @@ var PostProcess = /** @class */ (function () {
                     desiredHeight *= currentViewport.height;
                 }
             }
-            if (this.renderTargetSamplingMode === _Engines_constants__WEBPACK_IMPORTED_MODULE_3__["Constants"].TEXTURE_TRILINEAR_SAMPLINGMODE || this.alwaysForcePOT) {
+            if (needMipMaps || this.alwaysForcePOT) {
                 if (!this._options.width) {
                     desiredWidth = engine.needPOTTextures ? _Engines_engine__WEBPACK_IMPORTED_MODULE_5__["Engine"].GetExponentOfTwo(desiredWidth, maxSize, this.scaleMode) : desiredWidth;
                 }
@@ -159608,11 +159635,6 @@ var PostProcess = /** @class */ (function () {
                 }
                 this.width = desiredWidth;
                 this.height = desiredHeight;
-                var needMipMaps = this.renderTargetSamplingMode === _Engines_constants__WEBPACK_IMPORTED_MODULE_3__["Constants"].TEXTURE_TRILINEAR_SAMPLINGMODE ||
-                    this.renderTargetSamplingMode === _Engines_constants__WEBPACK_IMPORTED_MODULE_3__["Constants"].TEXTURE_NEAREST_NEAREST_MIPLINEAR ||
-                    this.renderTargetSamplingMode === _Engines_constants__WEBPACK_IMPORTED_MODULE_3__["Constants"].TEXTURE_LINEAR_LINEAR_MIPLINEAR ||
-                    this.renderTargetSamplingMode === _Engines_constants__WEBPACK_IMPORTED_MODULE_3__["Constants"].TEXTURE_NEAREST_LINEAR_MIPLINEAR ||
-                    this.renderTargetSamplingMode === _Engines_constants__WEBPACK_IMPORTED_MODULE_3__["Constants"].TEXTURE_LINEAR_NEAREST_MIPLINEAR;
                 var textureSize = { width: this.width, height: this.height };
                 var textureOptions = {
                     generateMipMaps: needMipMaps,

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1 - 1
dist/preview release/babylon.max.js.map


+ 40 - 30
dist/preview release/babylon.module.d.ts

@@ -773,16 +773,16 @@ declare module "babylonjs/Engines/constants" {
         static readonly TEXTURETYPE_UNSIGNED_INT_5_9_9_9_REV: number;
         /** FLOAT_32_UNSIGNED_INT_24_8_REV */
         static readonly TEXTURETYPE_FLOAT_32_UNSIGNED_INT_24_8_REV: number;
-        /** nearest is mag = nearest and min = nearest and mip = nearest */
+        /** nearest is mag = nearest and min = nearest and no mip */
         static readonly TEXTURE_NEAREST_SAMPLINGMODE: number;
-        /** Bilinear is mag = linear and min = linear and mip = nearest */
+        /** mag = nearest and min = nearest and mip = none */
+        static readonly TEXTURE_NEAREST_NEAREST: number;
+        /** Bilinear is mag = linear and min = linear and no mip */
         static readonly TEXTURE_BILINEAR_SAMPLINGMODE: number;
+        /** mag = linear and min = linear and mip = none */
+        static readonly TEXTURE_LINEAR_LINEAR: number;
         /** Trilinear is mag = linear and min = linear and mip = linear */
         static readonly TEXTURE_TRILINEAR_SAMPLINGMODE: number;
-        /** nearest is mag = nearest and min = nearest and mip = linear */
-        static readonly TEXTURE_NEAREST_NEAREST_MIPLINEAR: number;
-        /** Bilinear is mag = linear and min = linear and mip = nearest */
-        static readonly TEXTURE_LINEAR_LINEAR_MIPNEAREST: number;
         /** Trilinear is mag = linear and min = linear and mip = linear */
         static readonly TEXTURE_LINEAR_LINEAR_MIPLINEAR: number;
         /** mag = nearest and min = nearest and mip = nearest */
@@ -793,14 +793,14 @@ declare module "babylonjs/Engines/constants" {
         static readonly TEXTURE_NEAREST_LINEAR_MIPLINEAR: number;
         /** mag = nearest and min = linear and mip = none */
         static readonly TEXTURE_NEAREST_LINEAR: number;
-        /** mag = nearest and min = nearest and mip = none */
-        static readonly TEXTURE_NEAREST_NEAREST: number;
+        /** nearest is mag = nearest and min = nearest and mip = linear */
+        static readonly TEXTURE_NEAREST_NEAREST_MIPLINEAR: number;
         /** mag = linear and min = nearest and mip = nearest */
         static readonly TEXTURE_LINEAR_NEAREST_MIPNEAREST: number;
         /** mag = linear and min = nearest and mip = linear */
         static readonly TEXTURE_LINEAR_NEAREST_MIPLINEAR: number;
-        /** mag = linear and min = linear and mip = none */
-        static readonly TEXTURE_LINEAR_LINEAR: number;
+        /** Bilinear is mag = linear and min = linear and mip = nearest */
+        static readonly TEXTURE_LINEAR_LINEAR_MIPNEAREST: number;
         /** mag = linear and min = nearest and mip = none */
         static readonly TEXTURE_LINEAR_NEAREST: number;
         /** Explicit coordinates mode */
@@ -21484,11 +21484,6 @@ declare module "babylonjs/Materials/material" {
          */
         _effect: Nullable<Effect>;
         /**
-         * @hidden
-         * Specifies if the material was previously ready
-         */
-        _wasPreviouslyReady: boolean;
-        /**
          * Specifies if uniform buffers should be used
          */
         private _useUBO;
@@ -30733,6 +30728,11 @@ declare module "babylonjs/Materials/effect" {
         /** @hidden */
         _onBindObservable: Nullable<Observable<Effect>>;
         /**
+         * @hidden
+         * Specifies if the effect was previously ready
+         */
+        _wasPreviouslyReady: boolean;
+        /**
          * Observable that will be called when effect is bound.
          */
         get onBindObservable(): Observable<Effect>;
@@ -35258,6 +35258,11 @@ declare module "babylonjs/Misc/tools" {
          * @returns Promise that resolves after the given amount of time
          */
         static DelayAsync(delay: number): Promise<void>;
+        /**
+         * Utility function to detect if the current user agent is Safari
+         * @returns whether or not the current user agent is safari
+         */
+        static IsSafari(): boolean;
     }
     /**
      * Use this className as a decorator on a given class definition to add it a name and optionally its module.
@@ -71461,16 +71466,16 @@ declare module BABYLON {
         static readonly TEXTURETYPE_UNSIGNED_INT_5_9_9_9_REV: number;
         /** FLOAT_32_UNSIGNED_INT_24_8_REV */
         static readonly TEXTURETYPE_FLOAT_32_UNSIGNED_INT_24_8_REV: number;
-        /** nearest is mag = nearest and min = nearest and mip = nearest */
+        /** nearest is mag = nearest and min = nearest and no mip */
         static readonly TEXTURE_NEAREST_SAMPLINGMODE: number;
-        /** Bilinear is mag = linear and min = linear and mip = nearest */
+        /** mag = nearest and min = nearest and mip = none */
+        static readonly TEXTURE_NEAREST_NEAREST: number;
+        /** Bilinear is mag = linear and min = linear and no mip */
         static readonly TEXTURE_BILINEAR_SAMPLINGMODE: number;
+        /** mag = linear and min = linear and mip = none */
+        static readonly TEXTURE_LINEAR_LINEAR: number;
         /** Trilinear is mag = linear and min = linear and mip = linear */
         static readonly TEXTURE_TRILINEAR_SAMPLINGMODE: number;
-        /** nearest is mag = nearest and min = nearest and mip = linear */
-        static readonly TEXTURE_NEAREST_NEAREST_MIPLINEAR: number;
-        /** Bilinear is mag = linear and min = linear and mip = nearest */
-        static readonly TEXTURE_LINEAR_LINEAR_MIPNEAREST: number;
         /** Trilinear is mag = linear and min = linear and mip = linear */
         static readonly TEXTURE_LINEAR_LINEAR_MIPLINEAR: number;
         /** mag = nearest and min = nearest and mip = nearest */
@@ -71481,14 +71486,14 @@ declare module BABYLON {
         static readonly TEXTURE_NEAREST_LINEAR_MIPLINEAR: number;
         /** mag = nearest and min = linear and mip = none */
         static readonly TEXTURE_NEAREST_LINEAR: number;
-        /** mag = nearest and min = nearest and mip = none */
-        static readonly TEXTURE_NEAREST_NEAREST: number;
+        /** nearest is mag = nearest and min = nearest and mip = linear */
+        static readonly TEXTURE_NEAREST_NEAREST_MIPLINEAR: number;
         /** mag = linear and min = nearest and mip = nearest */
         static readonly TEXTURE_LINEAR_NEAREST_MIPNEAREST: number;
         /** mag = linear and min = nearest and mip = linear */
         static readonly TEXTURE_LINEAR_NEAREST_MIPLINEAR: number;
-        /** mag = linear and min = linear and mip = none */
-        static readonly TEXTURE_LINEAR_LINEAR: number;
+        /** Bilinear is mag = linear and min = linear and mip = nearest */
+        static readonly TEXTURE_LINEAR_LINEAR_MIPNEAREST: number;
         /** mag = linear and min = nearest and mip = none */
         static readonly TEXTURE_LINEAR_NEAREST: number;
         /** Explicit coordinates mode */
@@ -91545,11 +91550,6 @@ declare module BABYLON {
          */
         _effect: Nullable<Effect>;
         /**
-         * @hidden
-         * Specifies if the material was previously ready
-         */
-        _wasPreviouslyReady: boolean;
-        /**
          * Specifies if uniform buffers should be used
          */
         private _useUBO;
@@ -100503,6 +100503,11 @@ declare module BABYLON {
         /** @hidden */
         _onBindObservable: Nullable<Observable<Effect>>;
         /**
+         * @hidden
+         * Specifies if the effect was previously ready
+         */
+        _wasPreviouslyReady: boolean;
+        /**
          * Observable that will be called when effect is bound.
          */
         get onBindObservable(): Observable<Effect>;
@@ -104948,6 +104953,11 @@ declare module BABYLON {
          * @returns Promise that resolves after the given amount of time
          */
         static DelayAsync(delay: number): Promise<void>;
+        /**
+         * Utility function to detect if the current user agent is Safari
+         * @returns whether or not the current user agent is safari
+         */
+        static IsSafari(): boolean;
     }
     /**
      * Use this className as a decorator on a given class definition to add it a name and optionally its module.

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

@@ -768,16 +768,16 @@ declare module BABYLON {
         static readonly TEXTURETYPE_UNSIGNED_INT_5_9_9_9_REV: number;
         /** FLOAT_32_UNSIGNED_INT_24_8_REV */
         static readonly TEXTURETYPE_FLOAT_32_UNSIGNED_INT_24_8_REV: number;
-        /** nearest is mag = nearest and min = nearest and mip = nearest */
+        /** nearest is mag = nearest and min = nearest and no mip */
         static readonly TEXTURE_NEAREST_SAMPLINGMODE: number;
-        /** Bilinear is mag = linear and min = linear and mip = nearest */
+        /** mag = nearest and min = nearest and mip = none */
+        static readonly TEXTURE_NEAREST_NEAREST: number;
+        /** Bilinear is mag = linear and min = linear and no mip */
         static readonly TEXTURE_BILINEAR_SAMPLINGMODE: number;
+        /** mag = linear and min = linear and mip = none */
+        static readonly TEXTURE_LINEAR_LINEAR: number;
         /** Trilinear is mag = linear and min = linear and mip = linear */
         static readonly TEXTURE_TRILINEAR_SAMPLINGMODE: number;
-        /** nearest is mag = nearest and min = nearest and mip = linear */
-        static readonly TEXTURE_NEAREST_NEAREST_MIPLINEAR: number;
-        /** Bilinear is mag = linear and min = linear and mip = nearest */
-        static readonly TEXTURE_LINEAR_LINEAR_MIPNEAREST: number;
         /** Trilinear is mag = linear and min = linear and mip = linear */
         static readonly TEXTURE_LINEAR_LINEAR_MIPLINEAR: number;
         /** mag = nearest and min = nearest and mip = nearest */
@@ -788,14 +788,14 @@ declare module BABYLON {
         static readonly TEXTURE_NEAREST_LINEAR_MIPLINEAR: number;
         /** mag = nearest and min = linear and mip = none */
         static readonly TEXTURE_NEAREST_LINEAR: number;
-        /** mag = nearest and min = nearest and mip = none */
-        static readonly TEXTURE_NEAREST_NEAREST: number;
+        /** nearest is mag = nearest and min = nearest and mip = linear */
+        static readonly TEXTURE_NEAREST_NEAREST_MIPLINEAR: number;
         /** mag = linear and min = nearest and mip = nearest */
         static readonly TEXTURE_LINEAR_NEAREST_MIPNEAREST: number;
         /** mag = linear and min = nearest and mip = linear */
         static readonly TEXTURE_LINEAR_NEAREST_MIPLINEAR: number;
-        /** mag = linear and min = linear and mip = none */
-        static readonly TEXTURE_LINEAR_LINEAR: number;
+        /** Bilinear is mag = linear and min = linear and mip = nearest */
+        static readonly TEXTURE_LINEAR_LINEAR_MIPNEAREST: number;
         /** mag = linear and min = nearest and mip = none */
         static readonly TEXTURE_LINEAR_NEAREST: number;
         /** Explicit coordinates mode */
@@ -20852,11 +20852,6 @@ declare module BABYLON {
          */
         _effect: Nullable<Effect>;
         /**
-         * @hidden
-         * Specifies if the material was previously ready
-         */
-        _wasPreviouslyReady: boolean;
-        /**
          * Specifies if uniform buffers should be used
          */
         private _useUBO;
@@ -29810,6 +29805,11 @@ declare module BABYLON {
         /** @hidden */
         _onBindObservable: Nullable<Observable<Effect>>;
         /**
+         * @hidden
+         * Specifies if the effect was previously ready
+         */
+        _wasPreviouslyReady: boolean;
+        /**
          * Observable that will be called when effect is bound.
          */
         get onBindObservable(): Observable<Effect>;
@@ -34255,6 +34255,11 @@ declare module BABYLON {
          * @returns Promise that resolves after the given amount of time
          */
         static DelayAsync(delay: number): Promise<void>;
+        /**
+         * Utility function to detect if the current user agent is Safari
+         * @returns whether or not the current user agent is safari
+         */
+        static IsSafari(): boolean;
     }
     /**
      * Use this className as a decorator on a given class definition to add it a name and optionally its module.
@@ -74523,7 +74528,7 @@ declare module BABYLON.GLTF2.Exporter {
          */
         static UnregisterExtension(name: string): boolean;
         /**
-         * Lazy load a local engine with premultiplied alpha set to false
+         * Lazy load a local engine
          */
         _getLocalEngine(): Engine;
         private reorderIndicesBasedOnPrimitiveMode;

+ 1 - 1
dist/preview release/glTF2Interface/package.json

@@ -1,7 +1,7 @@
 {
     "name": "babylonjs-gltf2interface",
     "description": "A typescript declaration of babylon's gltf2 inteface.",
-    "version": "4.1.0-beta.15",
+    "version": "4.1.0-beta.17",
     "repository": {
         "type": "git",
         "url": "https://github.com/BabylonJS/Babylon.js.git"

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

@@ -16064,7 +16064,7 @@ var FluentMaterial = /** @class */ (function (_super) {
     };
     FluentMaterial.prototype.isReadyForSubMesh = function (mesh, subMesh, useInstances) {
         if (this.isFrozen) {
-            if (this._wasPreviouslyReady && subMesh.effect) {
+            if (subMesh.effect && subMesh.effect._wasPreviouslyReady) {
                 return true;
             }
         }
@@ -16133,7 +16133,7 @@ var FluentMaterial = /** @class */ (function (_super) {
             return false;
         }
         defines._renderId = scene.getRenderId();
-        this._wasPreviouslyReady = true;
+        subMesh.effect._wasPreviouslyReady = true;
         return true;
     };
     FluentMaterial.prototype.bindForSubMesh = function (world, mesh, subMesh) {

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1 - 1
dist/preview release/gui/babylon.gui.js.map


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1 - 1
dist/preview release/gui/babylon.gui.min.js


+ 2 - 2
dist/preview release/gui/package.json

@@ -4,7 +4,7 @@
     },
     "name": "babylonjs-gui",
     "description": "The Babylon.js GUI library is an extension you can use to generate interactive user interface. It is build on top of the DynamicTexture.",
-    "version": "4.1.0-beta.15",
+    "version": "4.1.0-beta.17",
     "repository": {
         "type": "git",
         "url": "https://github.com/BabylonJS/Babylon.js.git"
@@ -28,7 +28,7 @@
     ],
     "license": "Apache-2.0",
     "dependencies": {
-        "babylonjs": "4.1.0-beta.15"
+        "babylonjs": "4.1.0-beta.17"
     },
     "engines": {
         "node": "*"

+ 7 - 7
dist/preview release/inspector/package.json

@@ -4,7 +4,7 @@
     },
     "name": "babylonjs-inspector",
     "description": "The Babylon.js inspector.",
-    "version": "4.1.0-beta.15",
+    "version": "4.1.0-beta.17",
     "repository": {
         "type": "git",
         "url": "https://github.com/BabylonJS/Babylon.js.git"
@@ -29,12 +29,12 @@
     ],
     "license": "Apache-2.0",
     "dependencies": {
-        "babylonjs": "4.1.0-beta.15",
-        "babylonjs-gui": "4.1.0-beta.15",
-        "babylonjs-loaders": "4.1.0-beta.15",
-        "babylonjs-materials": "4.1.0-beta.15",
-        "babylonjs-serializers": "4.1.0-beta.15",
-        "babylonjs-gltf2interface": "4.1.0-beta.15"
+        "babylonjs": "4.1.0-beta.17",
+        "babylonjs-gui": "4.1.0-beta.17",
+        "babylonjs-loaders": "4.1.0-beta.17",
+        "babylonjs-materials": "4.1.0-beta.17",
+        "babylonjs-serializers": "4.1.0-beta.17",
+        "babylonjs-gltf2interface": "4.1.0-beta.17"
     },
     "devDependencies": {
         "@types/react": "~16.7.3",

+ 3 - 3
dist/preview release/loaders/package.json

@@ -4,7 +4,7 @@
     },
     "name": "babylonjs-loaders",
     "description": "The Babylon.js file loaders library is an extension you can use to load different 3D file types into a Babylon scene.",
-    "version": "4.1.0-beta.15",
+    "version": "4.1.0-beta.17",
     "repository": {
         "type": "git",
         "url": "https://github.com/BabylonJS/Babylon.js.git"
@@ -28,8 +28,8 @@
     ],
     "license": "Apache-2.0",
     "dependencies": {
-        "babylonjs-gltf2interface": "4.1.0-beta.15",
-        "babylonjs": "4.1.0-beta.15"
+        "babylonjs-gltf2interface": "4.1.0-beta.17",
+        "babylonjs": "4.1.0-beta.17"
     },
     "engines": {
         "node": "*"

+ 2 - 2
dist/preview release/materialsLibrary/babylon.cellMaterial.js

@@ -503,7 +503,7 @@ var CellMaterial = /** @class */ (function (_super) {
     // Methods
     CellMaterial.prototype.isReadyForSubMesh = function (mesh, subMesh, useInstances) {
         if (this.isFrozen) {
-            if (this._wasPreviouslyReady && subMesh.effect) {
+            if (subMesh.effect && subMesh.effect._wasPreviouslyReady) {
                 return true;
             }
         }
@@ -605,7 +605,7 @@ var CellMaterial = /** @class */ (function (_super) {
             return false;
         }
         this._renderId = scene.getRenderId();
-        this._wasPreviouslyReady = true;
+        subMesh.effect._wasPreviouslyReady = true;
         return true;
     };
     CellMaterial.prototype.bindForSubMesh = function (world, mesh, subMesh) {

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1 - 1
dist/preview release/materialsLibrary/babylon.cellMaterial.js.map


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1 - 1
dist/preview release/materialsLibrary/babylon.cellMaterial.min.js


+ 2 - 5
dist/preview release/materialsLibrary/babylon.fireMaterial.js

@@ -491,7 +491,7 @@ var FireMaterial = /** @class */ (function (_super) {
     // Methods
     FireMaterial.prototype.isReadyForSubMesh = function (mesh, subMesh, useInstances) {
         if (this.isFrozen) {
-            if (this._wasPreviouslyReady && subMesh.effect) {
+            if (subMesh.effect && subMesh.effect._wasPreviouslyReady) {
                 return true;
             }
         }
@@ -582,7 +582,7 @@ var FireMaterial = /** @class */ (function (_super) {
             return false;
         }
         this._renderId = scene.getRenderId();
-        this._wasPreviouslyReady = true;
+        subMesh.effect._wasPreviouslyReady = true;
         return true;
     };
     FireMaterial.prototype.bindForSubMesh = function (world, mesh, subMesh) {
@@ -723,9 +723,6 @@ var FireMaterial = /** @class */ (function (_super) {
         if (source._opacityTexture) {
             material._opacityTexture = babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__["Texture"].Parse(source._opacityTexture, scene, rootUrl);
         }
-        if (source.checkReadyOnlyOnce) {
-            material.checkReadyOnlyOnce = source.checkReadyOnlyOnce;
-        }
         return material;
     };
     Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"])([

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1 - 1
dist/preview release/materialsLibrary/babylon.fireMaterial.js.map


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1 - 1
dist/preview release/materialsLibrary/babylon.fireMaterial.min.js


+ 2 - 2
dist/preview release/materialsLibrary/babylon.furMaterial.js

@@ -542,7 +542,7 @@ var FurMaterial = /** @class */ (function (_super) {
     // Methods
     FurMaterial.prototype.isReadyForSubMesh = function (mesh, subMesh, useInstances) {
         if (this.isFrozen) {
-            if (this._wasPreviouslyReady && subMesh.effect) {
+            if (subMesh.effect && subMesh.effect._wasPreviouslyReady) {
                 return true;
             }
         }
@@ -659,7 +659,7 @@ var FurMaterial = /** @class */ (function (_super) {
             return false;
         }
         this._renderId = scene.getRenderId();
-        this._wasPreviouslyReady = true;
+        subMesh.effect._wasPreviouslyReady = true;
         return true;
     };
     FurMaterial.prototype.bindForSubMesh = function (world, mesh, subMesh) {

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1 - 1
dist/preview release/materialsLibrary/babylon.furMaterial.js.map


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1 - 1
dist/preview release/materialsLibrary/babylon.furMaterial.min.js


+ 2 - 2
dist/preview release/materialsLibrary/babylon.gradientMaterial.js

@@ -507,7 +507,7 @@ var GradientMaterial = /** @class */ (function (_super) {
     // Methods
     GradientMaterial.prototype.isReadyForSubMesh = function (mesh, subMesh, useInstances) {
         if (this.isFrozen) {
-            if (this._wasPreviouslyReady && subMesh.effect) {
+            if (subMesh.effect && subMesh.effect._wasPreviouslyReady) {
                 return true;
             }
         }
@@ -591,7 +591,7 @@ var GradientMaterial = /** @class */ (function (_super) {
             return false;
         }
         this._renderId = scene.getRenderId();
-        this._wasPreviouslyReady = true;
+        subMesh.effect._wasPreviouslyReady = true;
         return true;
     };
     GradientMaterial.prototype.bindForSubMesh = function (world, mesh, subMesh) {

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1 - 1
dist/preview release/materialsLibrary/babylon.gradientMaterial.js.map


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1 - 1
dist/preview release/materialsLibrary/babylon.gradientMaterial.min.js


+ 2 - 2
dist/preview release/materialsLibrary/babylon.gridMaterial.js

@@ -508,7 +508,7 @@ var GridMaterial = /** @class */ (function (_super) {
     };
     GridMaterial.prototype.isReadyForSubMesh = function (mesh, subMesh, useInstances) {
         if (this.isFrozen) {
-            if (this._wasPreviouslyReady && subMesh.effect) {
+            if (subMesh.effect && subMesh.effect._wasPreviouslyReady) {
                 return true;
             }
         }
@@ -571,7 +571,7 @@ var GridMaterial = /** @class */ (function (_super) {
             return false;
         }
         this._renderId = scene.getRenderId();
-        this._wasPreviouslyReady = true;
+        subMesh.effect._wasPreviouslyReady = true;
         return true;
     };
     GridMaterial.prototype.bindForSubMesh = function (world, mesh, subMesh) {

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1 - 1
dist/preview release/materialsLibrary/babylon.gridMaterial.js.map


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1 - 1
dist/preview release/materialsLibrary/babylon.gridMaterial.min.js


+ 2 - 2
dist/preview release/materialsLibrary/babylon.lavaMaterial.js

@@ -565,7 +565,7 @@ var LavaMaterial = /** @class */ (function (_super) {
     // Methods
     LavaMaterial.prototype.isReadyForSubMesh = function (mesh, subMesh, useInstances) {
         if (this.isFrozen) {
-            if (this._wasPreviouslyReady && subMesh.effect) {
+            if (subMesh.effect && subMesh.effect._wasPreviouslyReady) {
                 return true;
             }
         }
@@ -671,7 +671,7 @@ var LavaMaterial = /** @class */ (function (_super) {
             return false;
         }
         this._renderId = scene.getRenderId();
-        this._wasPreviouslyReady = true;
+        subMesh.effect._wasPreviouslyReady = true;
         return true;
     };
     LavaMaterial.prototype.bindForSubMesh = function (world, mesh, subMesh) {

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1 - 1
dist/preview release/materialsLibrary/babylon.lavaMaterial.js.map


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1 - 1
dist/preview release/materialsLibrary/babylon.lavaMaterial.min.js


+ 2 - 2
dist/preview release/materialsLibrary/babylon.mixMaterial.js

@@ -552,7 +552,7 @@ var MixMaterial = /** @class */ (function (_super) {
     // Methods
     MixMaterial.prototype.isReadyForSubMesh = function (mesh, subMesh, useInstances) {
         if (this.isFrozen) {
-            if (this._wasPreviouslyReady && subMesh.effect) {
+            if (subMesh.effect && subMesh.effect._wasPreviouslyReady) {
                 return true;
             }
         }
@@ -685,7 +685,7 @@ var MixMaterial = /** @class */ (function (_super) {
             return false;
         }
         this._renderId = scene.getRenderId();
-        this._wasPreviouslyReady = true;
+        subMesh.effect._wasPreviouslyReady = true;
         return true;
     };
     MixMaterial.prototype.bindForSubMesh = function (world, mesh, subMesh) {

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1 - 1
dist/preview release/materialsLibrary/babylon.mixMaterial.js.map


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1 - 1
dist/preview release/materialsLibrary/babylon.mixMaterial.min.js


+ 2 - 2
dist/preview release/materialsLibrary/babylon.normalMaterial.js

@@ -588,7 +588,7 @@ var NormalMaterial = /** @class */ (function (_super) {
     // Methods
     NormalMaterial.prototype.isReadyForSubMesh = function (mesh, subMesh, useInstances) {
         if (this.isFrozen) {
-            if (this._wasPreviouslyReady && subMesh.effect) {
+            if (subMesh.effect && subMesh.effect._wasPreviouslyReady) {
                 return true;
             }
         }
@@ -687,7 +687,7 @@ var NormalMaterial = /** @class */ (function (_super) {
             return false;
         }
         this._renderId = scene.getRenderId();
-        this._wasPreviouslyReady = true;
+        subMesh.effect._wasPreviouslyReady = true;
         return true;
     };
     NormalMaterial.prototype.bindForSubMesh = function (world, mesh, subMesh) {

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1 - 1
dist/preview release/materialsLibrary/babylon.normalMaterial.js.map


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1 - 1
dist/preview release/materialsLibrary/babylon.normalMaterial.min.js


+ 2 - 2
dist/preview release/materialsLibrary/babylon.shadowOnlyMaterial.js

@@ -544,7 +544,7 @@ var ShadowOnlyMaterial = /** @class */ (function (_super) {
     // Methods
     ShadowOnlyMaterial.prototype.isReadyForSubMesh = function (mesh, subMesh, useInstances) {
         if (this.isFrozen) {
-            if (this._wasPreviouslyReady && subMesh.effect) {
+            if (subMesh.effect && subMesh.effect._wasPreviouslyReady) {
                 return true;
             }
         }
@@ -633,7 +633,7 @@ var ShadowOnlyMaterial = /** @class */ (function (_super) {
             return false;
         }
         this._renderId = scene.getRenderId();
-        this._wasPreviouslyReady = true;
+        subMesh.effect._wasPreviouslyReady = true;
         return true;
     };
     ShadowOnlyMaterial.prototype.bindForSubMesh = function (world, mesh, subMesh) {

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1 - 1
dist/preview release/materialsLibrary/babylon.shadowOnlyMaterial.js.map


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1 - 1
dist/preview release/materialsLibrary/babylon.shadowOnlyMaterial.min.js


+ 2 - 2
dist/preview release/materialsLibrary/babylon.simpleMaterial.js

@@ -545,7 +545,7 @@ var SimpleMaterial = /** @class */ (function (_super) {
     // Methods
     SimpleMaterial.prototype.isReadyForSubMesh = function (mesh, subMesh, useInstances) {
         if (this.isFrozen) {
-            if (this._wasPreviouslyReady && subMesh.effect) {
+            if (subMesh.effect && subMesh.effect._wasPreviouslyReady) {
                 return true;
             }
         }
@@ -645,7 +645,7 @@ var SimpleMaterial = /** @class */ (function (_super) {
             return false;
         }
         this._renderId = scene.getRenderId();
-        this._wasPreviouslyReady = true;
+        subMesh.effect._wasPreviouslyReady = true;
         return true;
     };
     SimpleMaterial.prototype.bindForSubMesh = function (world, mesh, subMesh) {

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1 - 1
dist/preview release/materialsLibrary/babylon.simpleMaterial.js.map


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1 - 1
dist/preview release/materialsLibrary/babylon.simpleMaterial.min.js


+ 2 - 2
dist/preview release/materialsLibrary/babylon.skyMaterial.js

@@ -601,7 +601,7 @@ var SkyMaterial = /** @class */ (function (_super) {
      */
     SkyMaterial.prototype.isReadyForSubMesh = function (mesh, subMesh, useInstances) {
         if (this.isFrozen) {
-            if (this._wasPreviouslyReady && subMesh.effect) {
+            if (subMesh.effect && subMesh.effect._wasPreviouslyReady) {
                 return true;
             }
         }
@@ -644,7 +644,7 @@ var SkyMaterial = /** @class */ (function (_super) {
             return false;
         }
         this._renderId = scene.getRenderId();
-        this._wasPreviouslyReady = true;
+        subMesh.effect._wasPreviouslyReady = true;
         return true;
     };
     /**

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1 - 1
dist/preview release/materialsLibrary/babylon.skyMaterial.js.map


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1 - 1
dist/preview release/materialsLibrary/babylon.skyMaterial.min.js


+ 2 - 2
dist/preview release/materialsLibrary/babylon.terrainMaterial.js

@@ -549,7 +549,7 @@ var TerrainMaterial = /** @class */ (function (_super) {
     // Methods
     TerrainMaterial.prototype.isReadyForSubMesh = function (mesh, subMesh, useInstances) {
         if (this.isFrozen) {
-            if (this._wasPreviouslyReady && subMesh.effect) {
+            if (subMesh.effect && subMesh.effect._wasPreviouslyReady) {
                 return true;
             }
         }
@@ -670,7 +670,7 @@ var TerrainMaterial = /** @class */ (function (_super) {
             return false;
         }
         this._renderId = scene.getRenderId();
-        this._wasPreviouslyReady = true;
+        subMesh.effect._wasPreviouslyReady = true;
         return true;
     };
     TerrainMaterial.prototype.bindForSubMesh = function (world, mesh, subMesh) {

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1 - 1
dist/preview release/materialsLibrary/babylon.terrainMaterial.js.map


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1 - 1
dist/preview release/materialsLibrary/babylon.terrainMaterial.min.js


+ 2 - 2
dist/preview release/materialsLibrary/babylon.triPlanarMaterial.js

@@ -486,7 +486,7 @@ var TriPlanarMaterial = /** @class */ (function (_super) {
     // Methods
     TriPlanarMaterial.prototype.isReadyForSubMesh = function (mesh, subMesh, useInstances) {
         if (this.isFrozen) {
-            if (this._wasPreviouslyReady && subMesh.effect) {
+            if (subMesh.effect && subMesh.effect._wasPreviouslyReady) {
                 return true;
             }
         }
@@ -601,7 +601,7 @@ var TriPlanarMaterial = /** @class */ (function (_super) {
             return false;
         }
         this._renderId = scene.getRenderId();
-        this._wasPreviouslyReady = true;
+        subMesh.effect._wasPreviouslyReady = true;
         return true;
     };
     TriPlanarMaterial.prototype.bindForSubMesh = function (world, mesh, subMesh) {

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1 - 1
dist/preview release/materialsLibrary/babylon.triPlanarMaterial.js.map


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1 - 1
dist/preview release/materialsLibrary/babylon.triPlanarMaterial.min.js


+ 2 - 2
dist/preview release/materialsLibrary/babylon.waterMaterial.js

@@ -726,7 +726,7 @@ var WaterMaterial = /** @class */ (function (_super) {
     };
     WaterMaterial.prototype.isReadyForSubMesh = function (mesh, subMesh, useInstances) {
         if (this.isFrozen) {
-            if (this._wasPreviouslyReady && subMesh.effect) {
+            if (subMesh.effect && subMesh.effect._wasPreviouslyReady) {
                 return true;
             }
         }
@@ -870,7 +870,7 @@ var WaterMaterial = /** @class */ (function (_super) {
             return false;
         }
         this._renderId = scene.getRenderId();
-        this._wasPreviouslyReady = true;
+        subMesh.effect._wasPreviouslyReady = true;
         return true;
     };
     WaterMaterial.prototype.bindForSubMesh = function (world, mesh, subMesh) {

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1 - 1
dist/preview release/materialsLibrary/babylon.waterMaterial.js.map


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1 - 1
dist/preview release/materialsLibrary/babylon.waterMaterial.min.js


+ 28 - 31
dist/preview release/materialsLibrary/babylonjs.materials.js

@@ -503,7 +503,7 @@ var CellMaterial = /** @class */ (function (_super) {
     // Methods
     CellMaterial.prototype.isReadyForSubMesh = function (mesh, subMesh, useInstances) {
         if (this.isFrozen) {
-            if (this._wasPreviouslyReady && subMesh.effect) {
+            if (subMesh.effect && subMesh.effect._wasPreviouslyReady) {
                 return true;
             }
         }
@@ -605,7 +605,7 @@ var CellMaterial = /** @class */ (function (_super) {
             return false;
         }
         this._renderId = scene.getRenderId();
-        this._wasPreviouslyReady = true;
+        subMesh.effect._wasPreviouslyReady = true;
         return true;
     };
     CellMaterial.prototype.bindForSubMesh = function (world, mesh, subMesh) {
@@ -1329,7 +1329,7 @@ var FireMaterial = /** @class */ (function (_super) {
     // Methods
     FireMaterial.prototype.isReadyForSubMesh = function (mesh, subMesh, useInstances) {
         if (this.isFrozen) {
-            if (this._wasPreviouslyReady && subMesh.effect) {
+            if (subMesh.effect && subMesh.effect._wasPreviouslyReady) {
                 return true;
             }
         }
@@ -1420,7 +1420,7 @@ var FireMaterial = /** @class */ (function (_super) {
             return false;
         }
         this._renderId = scene.getRenderId();
-        this._wasPreviouslyReady = true;
+        subMesh.effect._wasPreviouslyReady = true;
         return true;
     };
     FireMaterial.prototype.bindForSubMesh = function (world, mesh, subMesh) {
@@ -1561,9 +1561,6 @@ var FireMaterial = /** @class */ (function (_super) {
         if (source._opacityTexture) {
             material._opacityTexture = babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__["Texture"].Parse(source._opacityTexture, scene, rootUrl);
         }
-        if (source.checkReadyOnlyOnce) {
-            material.checkReadyOnlyOnce = source.checkReadyOnlyOnce;
-        }
         return material;
     };
     Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"])([
@@ -1801,7 +1798,7 @@ var FurMaterial = /** @class */ (function (_super) {
     // Methods
     FurMaterial.prototype.isReadyForSubMesh = function (mesh, subMesh, useInstances) {
         if (this.isFrozen) {
-            if (this._wasPreviouslyReady && subMesh.effect) {
+            if (subMesh.effect && subMesh.effect._wasPreviouslyReady) {
                 return true;
             }
         }
@@ -1918,7 +1915,7 @@ var FurMaterial = /** @class */ (function (_super) {
             return false;
         }
         this._renderId = scene.getRenderId();
-        this._wasPreviouslyReady = true;
+        subMesh.effect._wasPreviouslyReady = true;
         return true;
     };
     FurMaterial.prototype.bindForSubMesh = function (world, mesh, subMesh) {
@@ -2346,7 +2343,7 @@ var GradientMaterial = /** @class */ (function (_super) {
     // Methods
     GradientMaterial.prototype.isReadyForSubMesh = function (mesh, subMesh, useInstances) {
         if (this.isFrozen) {
-            if (this._wasPreviouslyReady && subMesh.effect) {
+            if (subMesh.effect && subMesh.effect._wasPreviouslyReady) {
                 return true;
             }
         }
@@ -2430,7 +2427,7 @@ var GradientMaterial = /** @class */ (function (_super) {
             return false;
         }
         this._renderId = scene.getRenderId();
-        this._wasPreviouslyReady = true;
+        subMesh.effect._wasPreviouslyReady = true;
         return true;
     };
     GradientMaterial.prototype.bindForSubMesh = function (world, mesh, subMesh) {
@@ -2706,7 +2703,7 @@ var GridMaterial = /** @class */ (function (_super) {
     };
     GridMaterial.prototype.isReadyForSubMesh = function (mesh, subMesh, useInstances) {
         if (this.isFrozen) {
-            if (this._wasPreviouslyReady && subMesh.effect) {
+            if (subMesh.effect && subMesh.effect._wasPreviouslyReady) {
                 return true;
             }
         }
@@ -2769,7 +2766,7 @@ var GridMaterial = /** @class */ (function (_super) {
             return false;
         }
         this._renderId = scene.getRenderId();
-        this._wasPreviouslyReady = true;
+        subMesh.effect._wasPreviouslyReady = true;
         return true;
     };
     GridMaterial.prototype.bindForSubMesh = function (world, mesh, subMesh) {
@@ -3176,7 +3173,7 @@ var LavaMaterial = /** @class */ (function (_super) {
     // Methods
     LavaMaterial.prototype.isReadyForSubMesh = function (mesh, subMesh, useInstances) {
         if (this.isFrozen) {
-            if (this._wasPreviouslyReady && subMesh.effect) {
+            if (subMesh.effect && subMesh.effect._wasPreviouslyReady) {
                 return true;
             }
         }
@@ -3282,7 +3279,7 @@ var LavaMaterial = /** @class */ (function (_super) {
             return false;
         }
         this._renderId = scene.getRenderId();
-        this._wasPreviouslyReady = true;
+        subMesh.effect._wasPreviouslyReady = true;
         return true;
     };
     LavaMaterial.prototype.bindForSubMesh = function (world, mesh, subMesh) {
@@ -3680,7 +3677,7 @@ var MixMaterial = /** @class */ (function (_super) {
     // Methods
     MixMaterial.prototype.isReadyForSubMesh = function (mesh, subMesh, useInstances) {
         if (this.isFrozen) {
-            if (this._wasPreviouslyReady && subMesh.effect) {
+            if (subMesh.effect && subMesh.effect._wasPreviouslyReady) {
                 return true;
             }
         }
@@ -3813,7 +3810,7 @@ var MixMaterial = /** @class */ (function (_super) {
             return false;
         }
         this._renderId = scene.getRenderId();
-        this._wasPreviouslyReady = true;
+        subMesh.effect._wasPreviouslyReady = true;
         return true;
     };
     MixMaterial.prototype.bindForSubMesh = function (world, mesh, subMesh) {
@@ -4299,7 +4296,7 @@ var NormalMaterial = /** @class */ (function (_super) {
     // Methods
     NormalMaterial.prototype.isReadyForSubMesh = function (mesh, subMesh, useInstances) {
         if (this.isFrozen) {
-            if (this._wasPreviouslyReady && subMesh.effect) {
+            if (subMesh.effect && subMesh.effect._wasPreviouslyReady) {
                 return true;
             }
         }
@@ -4398,7 +4395,7 @@ var NormalMaterial = /** @class */ (function (_super) {
             return false;
         }
         this._renderId = scene.getRenderId();
-        this._wasPreviouslyReady = true;
+        subMesh.effect._wasPreviouslyReady = true;
         return true;
     };
     NormalMaterial.prototype.bindForSubMesh = function (world, mesh, subMesh) {
@@ -4678,7 +4675,7 @@ var ShadowOnlyMaterial = /** @class */ (function (_super) {
     // Methods
     ShadowOnlyMaterial.prototype.isReadyForSubMesh = function (mesh, subMesh, useInstances) {
         if (this.isFrozen) {
-            if (this._wasPreviouslyReady && subMesh.effect) {
+            if (subMesh.effect && subMesh.effect._wasPreviouslyReady) {
                 return true;
             }
         }
@@ -4767,7 +4764,7 @@ var ShadowOnlyMaterial = /** @class */ (function (_super) {
             return false;
         }
         this._renderId = scene.getRenderId();
-        this._wasPreviouslyReady = true;
+        subMesh.effect._wasPreviouslyReady = true;
         return true;
     };
     ShadowOnlyMaterial.prototype.bindForSubMesh = function (world, mesh, subMesh) {
@@ -4993,7 +4990,7 @@ var SimpleMaterial = /** @class */ (function (_super) {
     // Methods
     SimpleMaterial.prototype.isReadyForSubMesh = function (mesh, subMesh, useInstances) {
         if (this.isFrozen) {
-            if (this._wasPreviouslyReady && subMesh.effect) {
+            if (subMesh.effect && subMesh.effect._wasPreviouslyReady) {
                 return true;
             }
         }
@@ -5093,7 +5090,7 @@ var SimpleMaterial = /** @class */ (function (_super) {
             return false;
         }
         this._renderId = scene.getRenderId();
-        this._wasPreviouslyReady = true;
+        subMesh.effect._wasPreviouslyReady = true;
         return true;
     };
     SimpleMaterial.prototype.bindForSubMesh = function (world, mesh, subMesh) {
@@ -5430,7 +5427,7 @@ var SkyMaterial = /** @class */ (function (_super) {
      */
     SkyMaterial.prototype.isReadyForSubMesh = function (mesh, subMesh, useInstances) {
         if (this.isFrozen) {
-            if (this._wasPreviouslyReady && subMesh.effect) {
+            if (subMesh.effect && subMesh.effect._wasPreviouslyReady) {
                 return true;
             }
         }
@@ -5473,7 +5470,7 @@ var SkyMaterial = /** @class */ (function (_super) {
             return false;
         }
         this._renderId = scene.getRenderId();
-        this._wasPreviouslyReady = true;
+        subMesh.effect._wasPreviouslyReady = true;
         return true;
     };
     /**
@@ -5791,7 +5788,7 @@ var TerrainMaterial = /** @class */ (function (_super) {
     // Methods
     TerrainMaterial.prototype.isReadyForSubMesh = function (mesh, subMesh, useInstances) {
         if (this.isFrozen) {
-            if (this._wasPreviouslyReady && subMesh.effect) {
+            if (subMesh.effect && subMesh.effect._wasPreviouslyReady) {
                 return true;
             }
         }
@@ -5912,7 +5909,7 @@ var TerrainMaterial = /** @class */ (function (_super) {
             return false;
         }
         this._renderId = scene.getRenderId();
-        this._wasPreviouslyReady = true;
+        subMesh.effect._wasPreviouslyReady = true;
         return true;
     };
     TerrainMaterial.prototype.bindForSubMesh = function (world, mesh, subMesh) {
@@ -6239,7 +6236,7 @@ var TriPlanarMaterial = /** @class */ (function (_super) {
     // Methods
     TriPlanarMaterial.prototype.isReadyForSubMesh = function (mesh, subMesh, useInstances) {
         if (this.isFrozen) {
-            if (this._wasPreviouslyReady && subMesh.effect) {
+            if (subMesh.effect && subMesh.effect._wasPreviouslyReady) {
                 return true;
             }
         }
@@ -6354,7 +6351,7 @@ var TriPlanarMaterial = /** @class */ (function (_super) {
             return false;
         }
         this._renderId = scene.getRenderId();
-        this._wasPreviouslyReady = true;
+        subMesh.effect._wasPreviouslyReady = true;
         return true;
     };
     TriPlanarMaterial.prototype.bindForSubMesh = function (world, mesh, subMesh) {
@@ -6970,7 +6967,7 @@ var WaterMaterial = /** @class */ (function (_super) {
     };
     WaterMaterial.prototype.isReadyForSubMesh = function (mesh, subMesh, useInstances) {
         if (this.isFrozen) {
-            if (this._wasPreviouslyReady && subMesh.effect) {
+            if (subMesh.effect && subMesh.effect._wasPreviouslyReady) {
                 return true;
             }
         }
@@ -7114,7 +7111,7 @@ var WaterMaterial = /** @class */ (function (_super) {
             return false;
         }
         this._renderId = scene.getRenderId();
-        this._wasPreviouslyReady = true;
+        subMesh.effect._wasPreviouslyReady = true;
         return true;
     };
     WaterMaterial.prototype.bindForSubMesh = function (world, mesh, subMesh) {

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1 - 1
dist/preview release/materialsLibrary/babylonjs.materials.js.map


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1 - 1
dist/preview release/materialsLibrary/babylonjs.materials.min.js


+ 2 - 2
dist/preview release/materialsLibrary/package.json

@@ -4,7 +4,7 @@
     },
     "name": "babylonjs-materials",
     "description": "The Babylon.js materials library is a collection of advanced materials to be used in a Babylon.js scene.",
-    "version": "4.1.0-beta.15",
+    "version": "4.1.0-beta.17",
     "repository": {
         "type": "git",
         "url": "https://github.com/BabylonJS/Babylon.js.git"
@@ -28,7 +28,7 @@
     ],
     "license": "Apache-2.0",
     "dependencies": {
-        "babylonjs": "4.1.0-beta.15"
+        "babylonjs": "4.1.0-beta.17"
     },
     "engines": {
         "node": "*"

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1 - 1
dist/preview release/nodeEditor/babylon.nodeEditor.js


+ 5 - 2
dist/preview release/nodeEditor/babylon.nodeEditor.max.js

@@ -55106,8 +55106,11 @@ var NodeLink = /** @class */ (function () {
             this._path.setAttribute("stroke-linecap", "round");
         }
         else {
-            this._path.setAttribute("d", "M" + startX + "," + startY + " C" + (startX + 80) + "," + startY + " " + (endX - 80) + "," + endY + " " + endX + "," + endY);
-            this._selectionPath.setAttribute("d", "M" + startX + "," + startY + " C" + (startX + 80) + "," + startY + " " + (endX - 80) + "," + endY + " " + endX + "," + endY);
+            var deltaX = endX - startX;
+            var deltaY = endY - startY;
+            var tangentLength = Math.min(Math.sqrt(deltaX * deltaX + deltaY * deltaY) * 0.5, 300);
+            this._path.setAttribute("d", "M" + startX + "," + startY + " C" + (startX + tangentLength) + "," + startY + " " + (endX - tangentLength) + "," + endY + " " + endX + "," + endY);
+            this._selectionPath.setAttribute("d", "M" + startX + "," + startY + " C" + (startX + tangentLength) + "," + startY + " " + (endX - tangentLength) + "," + endY + " " + endX + "," + endY);
         }
         this._path.setAttribute("stroke", this._portA.element.style.backgroundColor);
     };

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1 - 1
dist/preview release/nodeEditor/babylon.nodeEditor.max.js.map


+ 2 - 2
dist/preview release/nodeEditor/package.json

@@ -4,14 +4,14 @@
     },
     "name": "babylonjs-node-editor",
     "description": "The Babylon.js node material editor.",
-    "version": "4.1.0-beta.15",
+    "version": "4.1.0-beta.17",
     "repository": {
         "type": "git",
         "url": "https://github.com/BabylonJS/Babylon.js.git"
     },
     "license": "Apache-2.0",
     "dependencies": {
-        "babylonjs": "4.1.0-beta.15"
+        "babylonjs": "4.1.0-beta.17"
     },
     "files": [
         "babylon.nodeEditor.max.js.map",

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

@@ -7,7 +7,7 @@
     ],
     "name": "babylonjs",
     "description": "Babylon.js is a JavaScript 3D engine based on webgl.",
-    "version": "4.1.0-beta.15",
+    "version": "4.1.0-beta.17",
     "repository": {
         "type": "git",
         "url": "https://github.com/BabylonJS/Babylon.js.git"

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

@@ -1 +1 @@
-{"thinEngineOnly":111641,"engineOnly":148508,"sceneOnly":502109,"minGridMaterial":632544,"minStandardMaterial":757084}
+{"thinEngineOnly":111570,"engineOnly":148415,"sceneOnly":502199,"minGridMaterial":632586,"minStandardMaterial":757114}

+ 2 - 2
dist/preview release/postProcessesLibrary/package.json

@@ -4,7 +4,7 @@
     },
     "name": "babylonjs-post-process",
     "description": "The Babylon.js materials library is a collection of advanced materials to be used in a Babylon.js scene.",
-    "version": "4.1.0-beta.15",
+    "version": "4.1.0-beta.17",
     "repository": {
         "type": "git",
         "url": "https://github.com/BabylonJS/Babylon.js.git"
@@ -28,7 +28,7 @@
     ],
     "license": "Apache-2.0",
     "dependencies": {
-        "babylonjs": "4.1.0-beta.15"
+        "babylonjs": "4.1.0-beta.17"
     },
     "engines": {
         "node": "*"

+ 2 - 2
dist/preview release/proceduralTexturesLibrary/package.json

@@ -4,7 +4,7 @@
     },
     "name": "babylonjs-procedural-textures",
     "description": "The Babylon.js materials library is a collection of advanced materials to be used in a Babylon.js scene.",
-    "version": "4.1.0-beta.15",
+    "version": "4.1.0-beta.17",
     "repository": {
         "type": "git",
         "url": "https://github.com/BabylonJS/Babylon.js.git"
@@ -28,7 +28,7 @@
     ],
     "license": "Apache-2.0",
     "dependencies": {
-        "babylonjs": "4.1.0-beta.15"
+        "babylonjs": "4.1.0-beta.17"
     },
     "engines": {
         "node": "*"

+ 2 - 2
dist/preview release/serializers/babylon.glTF2Serializer.js

@@ -1729,7 +1729,7 @@ var _Exporter = /** @class */ (function () {
         return true;
     };
     /**
-     * Lazy load a local engine with premultiplied alpha set to false
+     * Lazy load a local engine
      */
     _Exporter.prototype._getLocalEngine = function () {
         if (!this._localEngine) {
@@ -1737,7 +1737,7 @@ var _Exporter = /** @class */ (function () {
             localCanvas.id = "WriteCanvas";
             localCanvas.width = 2048;
             localCanvas.height = 2048;
-            this._localEngine = new babylonjs_Maths_math__WEBPACK_IMPORTED_MODULE_1__["Engine"](localCanvas, true, { premultipliedAlpha: false, preserveDrawingBuffer: true });
+            this._localEngine = new babylonjs_Maths_math__WEBPACK_IMPORTED_MODULE_1__["Engine"](localCanvas, true, { premultipliedAlpha: babylonjs_Maths_math__WEBPACK_IMPORTED_MODULE_1__["Tools"].IsSafari(), preserveDrawingBuffer: true });
             this._localEngine.setViewport(new babylonjs_Maths_math__WEBPACK_IMPORTED_MODULE_1__["Viewport"](0, 0, 1, 1));
         }
         return this._localEngine;

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1 - 1
dist/preview release/serializers/babylon.glTF2Serializer.js.map


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1 - 1
dist/preview release/serializers/babylon.glTF2Serializer.min.js


+ 1 - 1
dist/preview release/serializers/babylonjs.serializers.d.ts

@@ -620,7 +620,7 @@ declare module BABYLON.GLTF2.Exporter {
          */
         static UnregisterExtension(name: string): boolean;
         /**
-         * Lazy load a local engine with premultiplied alpha set to false
+         * Lazy load a local engine
          */
         _getLocalEngine(): Engine;
         private reorderIndicesBasedOnPrimitiveMode;

+ 2 - 2
dist/preview release/serializers/babylonjs.serializers.js

@@ -1907,7 +1907,7 @@ var _Exporter = /** @class */ (function () {
         return true;
     };
     /**
-     * Lazy load a local engine with premultiplied alpha set to false
+     * Lazy load a local engine
      */
     _Exporter.prototype._getLocalEngine = function () {
         if (!this._localEngine) {
@@ -1915,7 +1915,7 @@ var _Exporter = /** @class */ (function () {
             localCanvas.id = "WriteCanvas";
             localCanvas.width = 2048;
             localCanvas.height = 2048;
-            this._localEngine = new babylonjs_Maths_math__WEBPACK_IMPORTED_MODULE_1__["Engine"](localCanvas, true, { premultipliedAlpha: false, preserveDrawingBuffer: true });
+            this._localEngine = new babylonjs_Maths_math__WEBPACK_IMPORTED_MODULE_1__["Engine"](localCanvas, true, { premultipliedAlpha: babylonjs_Maths_math__WEBPACK_IMPORTED_MODULE_1__["Tools"].IsSafari(), preserveDrawingBuffer: true });
             this._localEngine.setViewport(new babylonjs_Maths_math__WEBPACK_IMPORTED_MODULE_1__["Viewport"](0, 0, 1, 1));
         }
         return this._localEngine;

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1 - 1
dist/preview release/serializers/babylonjs.serializers.js.map


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1 - 1
dist/preview release/serializers/babylonjs.serializers.min.js


+ 2 - 2
dist/preview release/serializers/babylonjs.serializers.module.d.ts

@@ -661,7 +661,7 @@ declare module "babylonjs-serializers/glTF/2.0/glTFExporter" {
          */
         static UnregisterExtension(name: string): boolean;
         /**
-         * Lazy load a local engine with premultiplied alpha set to false
+         * Lazy load a local engine
          */
         _getLocalEngine(): Engine;
         private reorderIndicesBasedOnPrimitiveMode;
@@ -1867,7 +1867,7 @@ declare module BABYLON.GLTF2.Exporter {
          */
         static UnregisterExtension(name: string): boolean;
         /**
-         * Lazy load a local engine with premultiplied alpha set to false
+         * Lazy load a local engine
          */
         _getLocalEngine(): Engine;
         private reorderIndicesBasedOnPrimitiveMode;

+ 3 - 3
dist/preview release/serializers/package.json

@@ -4,7 +4,7 @@
     },
     "name": "babylonjs-serializers",
     "description": "The Babylon.js serializers library is an extension you can use to serialize Babylon scenes.",
-    "version": "4.1.0-beta.15",
+    "version": "4.1.0-beta.17",
     "repository": {
         "type": "git",
         "url": "https://github.com/BabylonJS/Babylon.js.git"
@@ -28,8 +28,8 @@
     ],
     "license": "Apache-2.0",
     "dependencies": {
-        "babylonjs": "4.1.0-beta.15",
-        "babylonjs-gltf2interface": "4.1.0-beta.15"
+        "babylonjs": "4.1.0-beta.17",
+        "babylonjs-gltf2interface": "4.1.0-beta.17"
     },
     "engines": {
         "node": "*"

+ 40 - 30
dist/preview release/viewer/babylon.module.d.ts

@@ -773,16 +773,16 @@ declare module "babylonjs/Engines/constants" {
         static readonly TEXTURETYPE_UNSIGNED_INT_5_9_9_9_REV: number;
         /** FLOAT_32_UNSIGNED_INT_24_8_REV */
         static readonly TEXTURETYPE_FLOAT_32_UNSIGNED_INT_24_8_REV: number;
-        /** nearest is mag = nearest and min = nearest and mip = nearest */
+        /** nearest is mag = nearest and min = nearest and no mip */
         static readonly TEXTURE_NEAREST_SAMPLINGMODE: number;
-        /** Bilinear is mag = linear and min = linear and mip = nearest */
+        /** mag = nearest and min = nearest and mip = none */
+        static readonly TEXTURE_NEAREST_NEAREST: number;
+        /** Bilinear is mag = linear and min = linear and no mip */
         static readonly TEXTURE_BILINEAR_SAMPLINGMODE: number;
+        /** mag = linear and min = linear and mip = none */
+        static readonly TEXTURE_LINEAR_LINEAR: number;
         /** Trilinear is mag = linear and min = linear and mip = linear */
         static readonly TEXTURE_TRILINEAR_SAMPLINGMODE: number;
-        /** nearest is mag = nearest and min = nearest and mip = linear */
-        static readonly TEXTURE_NEAREST_NEAREST_MIPLINEAR: number;
-        /** Bilinear is mag = linear and min = linear and mip = nearest */
-        static readonly TEXTURE_LINEAR_LINEAR_MIPNEAREST: number;
         /** Trilinear is mag = linear and min = linear and mip = linear */
         static readonly TEXTURE_LINEAR_LINEAR_MIPLINEAR: number;
         /** mag = nearest and min = nearest and mip = nearest */
@@ -793,14 +793,14 @@ declare module "babylonjs/Engines/constants" {
         static readonly TEXTURE_NEAREST_LINEAR_MIPLINEAR: number;
         /** mag = nearest and min = linear and mip = none */
         static readonly TEXTURE_NEAREST_LINEAR: number;
-        /** mag = nearest and min = nearest and mip = none */
-        static readonly TEXTURE_NEAREST_NEAREST: number;
+        /** nearest is mag = nearest and min = nearest and mip = linear */
+        static readonly TEXTURE_NEAREST_NEAREST_MIPLINEAR: number;
         /** mag = linear and min = nearest and mip = nearest */
         static readonly TEXTURE_LINEAR_NEAREST_MIPNEAREST: number;
         /** mag = linear and min = nearest and mip = linear */
         static readonly TEXTURE_LINEAR_NEAREST_MIPLINEAR: number;
-        /** mag = linear and min = linear and mip = none */
-        static readonly TEXTURE_LINEAR_LINEAR: number;
+        /** Bilinear is mag = linear and min = linear and mip = nearest */
+        static readonly TEXTURE_LINEAR_LINEAR_MIPNEAREST: number;
         /** mag = linear and min = nearest and mip = none */
         static readonly TEXTURE_LINEAR_NEAREST: number;
         /** Explicit coordinates mode */
@@ -21484,11 +21484,6 @@ declare module "babylonjs/Materials/material" {
          */
         _effect: Nullable<Effect>;
         /**
-         * @hidden
-         * Specifies if the material was previously ready
-         */
-        _wasPreviouslyReady: boolean;
-        /**
          * Specifies if uniform buffers should be used
          */
         private _useUBO;
@@ -30733,6 +30728,11 @@ declare module "babylonjs/Materials/effect" {
         /** @hidden */
         _onBindObservable: Nullable<Observable<Effect>>;
         /**
+         * @hidden
+         * Specifies if the effect was previously ready
+         */
+        _wasPreviouslyReady: boolean;
+        /**
          * Observable that will be called when effect is bound.
          */
         get onBindObservable(): Observable<Effect>;
@@ -35258,6 +35258,11 @@ declare module "babylonjs/Misc/tools" {
          * @returns Promise that resolves after the given amount of time
          */
         static DelayAsync(delay: number): Promise<void>;
+        /**
+         * Utility function to detect if the current user agent is Safari
+         * @returns whether or not the current user agent is safari
+         */
+        static IsSafari(): boolean;
     }
     /**
      * Use this className as a decorator on a given class definition to add it a name and optionally its module.
@@ -71461,16 +71466,16 @@ declare module BABYLON {
         static readonly TEXTURETYPE_UNSIGNED_INT_5_9_9_9_REV: number;
         /** FLOAT_32_UNSIGNED_INT_24_8_REV */
         static readonly TEXTURETYPE_FLOAT_32_UNSIGNED_INT_24_8_REV: number;
-        /** nearest is mag = nearest and min = nearest and mip = nearest */
+        /** nearest is mag = nearest and min = nearest and no mip */
         static readonly TEXTURE_NEAREST_SAMPLINGMODE: number;
-        /** Bilinear is mag = linear and min = linear and mip = nearest */
+        /** mag = nearest and min = nearest and mip = none */
+        static readonly TEXTURE_NEAREST_NEAREST: number;
+        /** Bilinear is mag = linear and min = linear and no mip */
         static readonly TEXTURE_BILINEAR_SAMPLINGMODE: number;
+        /** mag = linear and min = linear and mip = none */
+        static readonly TEXTURE_LINEAR_LINEAR: number;
         /** Trilinear is mag = linear and min = linear and mip = linear */
         static readonly TEXTURE_TRILINEAR_SAMPLINGMODE: number;
-        /** nearest is mag = nearest and min = nearest and mip = linear */
-        static readonly TEXTURE_NEAREST_NEAREST_MIPLINEAR: number;
-        /** Bilinear is mag = linear and min = linear and mip = nearest */
-        static readonly TEXTURE_LINEAR_LINEAR_MIPNEAREST: number;
         /** Trilinear is mag = linear and min = linear and mip = linear */
         static readonly TEXTURE_LINEAR_LINEAR_MIPLINEAR: number;
         /** mag = nearest and min = nearest and mip = nearest */
@@ -71481,14 +71486,14 @@ declare module BABYLON {
         static readonly TEXTURE_NEAREST_LINEAR_MIPLINEAR: number;
         /** mag = nearest and min = linear and mip = none */
         static readonly TEXTURE_NEAREST_LINEAR: number;
-        /** mag = nearest and min = nearest and mip = none */
-        static readonly TEXTURE_NEAREST_NEAREST: number;
+        /** nearest is mag = nearest and min = nearest and mip = linear */
+        static readonly TEXTURE_NEAREST_NEAREST_MIPLINEAR: number;
         /** mag = linear and min = nearest and mip = nearest */
         static readonly TEXTURE_LINEAR_NEAREST_MIPNEAREST: number;
         /** mag = linear and min = nearest and mip = linear */
         static readonly TEXTURE_LINEAR_NEAREST_MIPLINEAR: number;
-        /** mag = linear and min = linear and mip = none */
-        static readonly TEXTURE_LINEAR_LINEAR: number;
+        /** Bilinear is mag = linear and min = linear and mip = nearest */
+        static readonly TEXTURE_LINEAR_LINEAR_MIPNEAREST: number;
         /** mag = linear and min = nearest and mip = none */
         static readonly TEXTURE_LINEAR_NEAREST: number;
         /** Explicit coordinates mode */
@@ -91545,11 +91550,6 @@ declare module BABYLON {
          */
         _effect: Nullable<Effect>;
         /**
-         * @hidden
-         * Specifies if the material was previously ready
-         */
-        _wasPreviouslyReady: boolean;
-        /**
          * Specifies if uniform buffers should be used
          */
         private _useUBO;
@@ -100503,6 +100503,11 @@ declare module BABYLON {
         /** @hidden */
         _onBindObservable: Nullable<Observable<Effect>>;
         /**
+         * @hidden
+         * Specifies if the effect was previously ready
+         */
+        _wasPreviouslyReady: boolean;
+        /**
          * Observable that will be called when effect is bound.
          */
         get onBindObservable(): Observable<Effect>;
@@ -104948,6 +104953,11 @@ declare module BABYLON {
          * @returns Promise that resolves after the given amount of time
          */
         static DelayAsync(delay: number): Promise<void>;
+        /**
+         * Utility function to detect if the current user agent is Safari
+         * @returns whether or not the current user agent is safari
+         */
+        static IsSafari(): boolean;
     }
     /**
      * Use this className as a decorator on a given class definition to add it a name and optionally its module.

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 15 - 15
dist/preview release/viewer/babylon.viewer.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1 - 1
dist/preview release/viewer/babylon.viewer.max.js


+ 2 - 0
dist/preview release/what's new.md

@@ -272,6 +272,8 @@
 - Playground will now render the returned scene from createScene() when there are multiple scenes added to engine ([Kyle Belfort](https://github.com/belfortk))
 - Fixed bug so Playground will now download .env texture files to ./textures in .zip  ([Kyle Belfort](https://github.com/belfortk))
 - It was not possible to change the gaze and laser color in VR ([#7323](https://github.com/BabylonJS/Babylon.js/issues/7323)) ([RaananW](https://github.com/RaananW/))
+- Fixed issue where textures exported using Safari web browser are Y mirrored. ([#7352](https://github.com/BabylonJS/Babylon.js/issues/7352)) ([Drigax](https://github.com/drigax))
+- Ignore the root nodes used for conversion from right-handed to left-handed when exporting to GLB ([noalak](https://github.com/noalak/))
 
 ## Breaking changes
 

+ 2 - 2
gui/src/3D/materials/fluentMaterial.ts

@@ -139,7 +139,7 @@ export class FluentMaterial extends PushMaterial {
 
     public isReadyForSubMesh(mesh: AbstractMesh, subMesh: SubMesh, useInstances?: boolean): boolean {
         if (this.isFrozen) {
-            if (this._wasPreviouslyReady && subMesh.effect) {
+            if (subMesh.effect && subMesh.effect._wasPreviouslyReady) {
                 return true;
             }
         }
@@ -221,7 +221,7 @@ export class FluentMaterial extends PushMaterial {
         }
 
         defines._renderId = scene.getRenderId();
-        this._wasPreviouslyReady = true;
+        subMesh.effect._wasPreviouslyReady = true;
 
         return true;
     }

+ 2 - 2
materialsLibrary/src/cell/cellMaterial.ts

@@ -95,7 +95,7 @@ export class CellMaterial extends PushMaterial {
     // Methods
     public isReadyForSubMesh(mesh: AbstractMesh, subMesh: SubMesh, useInstances?: boolean): boolean {
         if (this.isFrozen) {
-            if (this._wasPreviouslyReady && subMesh.effect) {
+            if (subMesh.effect && subMesh.effect._wasPreviouslyReady) {
                 return true;
             }
         }
@@ -221,7 +221,7 @@ export class CellMaterial extends PushMaterial {
         }
 
         this._renderId = scene.getRenderId();
-        this._wasPreviouslyReady = true;
+        subMesh.effect._wasPreviouslyReady = true;
 
         return true;
     }

+ 2 - 6
materialsLibrary/src/fire/fireMaterial.ts

@@ -91,7 +91,7 @@ export class FireMaterial extends PushMaterial {
     // Methods
     public isReadyForSubMesh(mesh: AbstractMesh, subMesh: SubMesh, useInstances?: boolean): boolean {
         if (this.isFrozen) {
-            if (this._wasPreviouslyReady && subMesh.effect) {
+            if (subMesh.effect && subMesh.effect._wasPreviouslyReady) {
                 return true;
             }
         }
@@ -203,7 +203,7 @@ export class FireMaterial extends PushMaterial {
         }
 
         this._renderId = scene.getRenderId();
-        this._wasPreviouslyReady = true;
+        subMesh.effect._wasPreviouslyReady = true;
 
         return true;
     }
@@ -393,10 +393,6 @@ export class FireMaterial extends PushMaterial {
             material._opacityTexture = Texture.Parse(source._opacityTexture, scene, rootUrl);
         }
 
-        if (source.checkReadyOnlyOnce) {
-            material.checkReadyOnlyOnce = source.checkReadyOnlyOnce;
-        }
-
         return material;
     }
 }

+ 2 - 2
materialsLibrary/src/fur/furMaterial.ts

@@ -161,7 +161,7 @@ export class FurMaterial extends PushMaterial {
     // Methods
     public isReadyForSubMesh(mesh: AbstractMesh, subMesh: SubMesh, useInstances?: boolean): boolean {
         if (this.isFrozen) {
-            if (this._wasPreviouslyReady && subMesh.effect) {
+            if (subMesh.effect && subMesh.effect._wasPreviouslyReady) {
                 return true;
             }
         }
@@ -303,7 +303,7 @@ export class FurMaterial extends PushMaterial {
         }
 
         this._renderId = scene.getRenderId();
-        this._wasPreviouslyReady = true;
+        subMesh.effect._wasPreviouslyReady = true;
 
         return true;
     }

+ 2 - 2
materialsLibrary/src/gradient/gradientMaterial.ts

@@ -103,7 +103,7 @@ export class GradientMaterial extends PushMaterial {
     // Methods
     public isReadyForSubMesh(mesh: AbstractMesh, subMesh: SubMesh, useInstances?: boolean): boolean {
         if (this.isFrozen) {
-            if (this._wasPreviouslyReady && subMesh.effect) {
+            if (subMesh.effect && subMesh.effect._wasPreviouslyReady) {
                 return true;
             }
         }
@@ -213,7 +213,7 @@ export class GradientMaterial extends PushMaterial {
         }
 
         this._renderId = scene.getRenderId();
-        this._wasPreviouslyReady = true;
+        subMesh.effect._wasPreviouslyReady = true;
 
         return true;
     }

+ 2 - 2
materialsLibrary/src/grid/gridMaterial.ts

@@ -116,7 +116,7 @@ export class GridMaterial extends PushMaterial {
 
     public isReadyForSubMesh(mesh: AbstractMesh, subMesh: SubMesh, useInstances?: boolean): boolean {
         if (this.isFrozen) {
-            if (this._wasPreviouslyReady && subMesh.effect) {
+            if (subMesh.effect && subMesh.effect._wasPreviouslyReady) {
                 return true;
             }
         }
@@ -200,7 +200,7 @@ export class GridMaterial extends PushMaterial {
         }
 
         this._renderId = scene.getRenderId();
-        this._wasPreviouslyReady = true;
+        subMesh.effect._wasPreviouslyReady = true;
 
         return true;
     }

+ 2 - 2
materialsLibrary/src/lava/lavaMaterial.ts

@@ -155,7 +155,7 @@ export class LavaMaterial extends PushMaterial {
     // Methods
     public isReadyForSubMesh(mesh: AbstractMesh, subMesh: SubMesh, useInstances?: boolean): boolean {
         if (this.isFrozen) {
-            if (this._wasPreviouslyReady && subMesh.effect) {
+            if (subMesh.effect && subMesh.effect._wasPreviouslyReady) {
                 return true;
             }
         }
@@ -287,7 +287,7 @@ export class LavaMaterial extends PushMaterial {
         }
 
         this._renderId = scene.getRenderId();
-        this._wasPreviouslyReady = true;
+        subMesh.effect._wasPreviouslyReady = true;
 
         return true;
     }

+ 2 - 2
materialsLibrary/src/mix/mixMaterial.ts

@@ -153,7 +153,7 @@ export class MixMaterial extends PushMaterial {
     // Methods
     public isReadyForSubMesh(mesh: AbstractMesh, subMesh: SubMesh, useInstances?: boolean): boolean {
         if (this.isFrozen) {
-            if (this._wasPreviouslyReady && subMesh.effect) {
+            if (subMesh.effect && subMesh.effect._wasPreviouslyReady) {
                 return true;
             }
         }
@@ -318,7 +318,7 @@ export class MixMaterial extends PushMaterial {
         }
 
         this._renderId = scene.getRenderId();
-        this._wasPreviouslyReady = true;
+        subMesh.effect._wasPreviouslyReady = true;
 
         return true;
     }

+ 2 - 2
materialsLibrary/src/normal/normalMaterial.ts

@@ -131,7 +131,7 @@ export class NormalMaterial extends PushMaterial {
     // Methods
     public isReadyForSubMesh(mesh: AbstractMesh, subMesh: SubMesh, useInstances?: boolean): boolean {
         if (this.isFrozen) {
-            if (this._wasPreviouslyReady && subMesh.effect) {
+            if (subMesh.effect && subMesh.effect._wasPreviouslyReady) {
                 return true;
             }
         }
@@ -255,7 +255,7 @@ export class NormalMaterial extends PushMaterial {
         }
 
         this._renderId = scene.getRenderId();
-        this._wasPreviouslyReady = true;
+        subMesh.effect._wasPreviouslyReady = true;
 
         return true;
     }

+ 2 - 2
materialsLibrary/src/shadowOnly/shadowOnlyMaterial.ts

@@ -72,7 +72,7 @@ export class ShadowOnlyMaterial extends PushMaterial {
     // Methods
     public isReadyForSubMesh(mesh: AbstractMesh, subMesh: SubMesh, useInstances?: boolean): boolean {
         if (this.isFrozen) {
-            if (this._wasPreviouslyReady && subMesh.effect) {
+            if (subMesh.effect && subMesh.effect._wasPreviouslyReady) {
                 return true;
             }
         }
@@ -185,7 +185,7 @@ export class ShadowOnlyMaterial extends PushMaterial {
         }
 
         this._renderId = scene.getRenderId();
-        this._wasPreviouslyReady = true;
+        subMesh.effect._wasPreviouslyReady = true;
 
         return true;
     }

+ 2 - 2
materialsLibrary/src/simple/simpleMaterial.ts

@@ -87,7 +87,7 @@ export class SimpleMaterial extends PushMaterial {
     // Methods
     public isReadyForSubMesh(mesh: AbstractMesh, subMesh: SubMesh, useInstances?: boolean): boolean {
         if (this.isFrozen) {
-            if (this._wasPreviouslyReady && subMesh.effect) {
+            if (subMesh.effect && subMesh.effect._wasPreviouslyReady) {
                 return true;
             }
         }
@@ -210,7 +210,7 @@ export class SimpleMaterial extends PushMaterial {
         }
 
         this._renderId = scene.getRenderId();
-        this._wasPreviouslyReady = true;
+        subMesh.effect._wasPreviouslyReady = true;
 
         return true;
     }

+ 2 - 2
materialsLibrary/src/sky/skyMaterial.ts

@@ -163,7 +163,7 @@ export class SkyMaterial extends PushMaterial {
      */
     public isReadyForSubMesh(mesh: AbstractMesh, subMesh: SubMesh, useInstances?: boolean): boolean {
         if (this.isFrozen) {
-            if (this._wasPreviouslyReady && subMesh.effect) {
+            if (subMesh.effect && subMesh.effect._wasPreviouslyReady) {
                 return true;
             }
         }
@@ -224,7 +224,7 @@ export class SkyMaterial extends PushMaterial {
         }
 
         this._renderId = scene.getRenderId();
-        this._wasPreviouslyReady = true;
+        subMesh.effect._wasPreviouslyReady = true;
 
         return true;
     }

+ 2 - 2
materialsLibrary/src/terrain/terrainMaterial.ts

@@ -126,7 +126,7 @@ export class TerrainMaterial extends PushMaterial {
     // Methods
     public isReadyForSubMesh(mesh: AbstractMesh, subMesh: SubMesh, useInstances?: boolean): boolean {
         if (this.isFrozen) {
-            if (this._wasPreviouslyReady && subMesh.effect) {
+            if (subMesh.effect && subMesh.effect._wasPreviouslyReady) {
                 return true;
             }
         }
@@ -277,7 +277,7 @@ export class TerrainMaterial extends PushMaterial {
         }
 
         this._renderId = scene.getRenderId();
-        this._wasPreviouslyReady = true;
+        subMesh.effect._wasPreviouslyReady = true;
 
         return true;
     }

+ 2 - 2
materialsLibrary/src/triPlanar/triPlanarMaterial.ts

@@ -131,7 +131,7 @@ export class TriPlanarMaterial extends PushMaterial {
     // Methods
     public isReadyForSubMesh(mesh: AbstractMesh, subMesh: SubMesh, useInstances?: boolean): boolean {
         if (this.isFrozen) {
-            if (this._wasPreviouslyReady && subMesh.effect) {
+            if (subMesh.effect && subMesh.effect._wasPreviouslyReady) {
                 return true;
             }
         }
@@ -269,7 +269,7 @@ export class TriPlanarMaterial extends PushMaterial {
         }
 
         this._renderId = scene.getRenderId();
-        this._wasPreviouslyReady = true;
+        subMesh.effect._wasPreviouslyReady = true;
 
         return true;
     }

+ 2 - 2
materialsLibrary/src/water/waterMaterial.ts

@@ -304,7 +304,7 @@ export class WaterMaterial extends PushMaterial {
 
     public isReadyForSubMesh(mesh: AbstractMesh, subMesh: SubMesh, useInstances?: boolean): boolean {
         if (this.isFrozen) {
-            if (this._wasPreviouslyReady && subMesh.effect) {
+            if (subMesh.effect && subMesh.effect._wasPreviouslyReady) {
                 return true;
             }
         }
@@ -484,7 +484,7 @@ export class WaterMaterial extends PushMaterial {
         }
 
         this._renderId = scene.getRenderId();
-        this._wasPreviouslyReady = true;
+        subMesh.effect._wasPreviouslyReady = true;
 
         return true;
     }

+ 22 - 19
nodeEditor/src/diagram/nodeLink.ts

@@ -5,15 +5,15 @@ import { Nullable } from 'babylonjs/types';
 import { Observer, Observable } from 'babylonjs/Misc/observable';
 import { GraphFrame } from './graphFrame';
 
-export class NodeLink {   
+export class NodeLink {
     private _graphCanvas: GraphCanvasComponent;
     private _portA: NodePort;
-    private _portB?: NodePort;    
+    private _portB?: NodePort;
     private _nodeA: GraphNode;
     private _nodeB?: GraphNode;
     private _path: SVGPathElement;
     private _selectionPath: SVGPathElement;
-    private _onSelectionChangedObserver: Nullable<Observer<Nullable<GraphNode | NodeLink | GraphFrame>>>;    
+    private _onSelectionChangedObserver: Nullable<Observer<Nullable<GraphNode | NodeLink | GraphFrame>>>;
     private _isVisible = true;
 
     public onDisposedObservable = new Observable<NodeLink>();
@@ -52,29 +52,32 @@ export class NodeLink {
         return this._nodeB;
     }
 
-    public update(endX = 0, endY = 0, straight = false) {   
+    public update(endX = 0, endY = 0, straight = false) {
         const rectA = this._portA.element.getBoundingClientRect();
         const rootRect = this._graphCanvas.canvasContainer.getBoundingClientRect();
         const zoom = this._graphCanvas.zoom;
         const xOffset = rootRect.left;
         const yOffset = rootRect.top;
-       
+
         var startX = (rectA.left - xOffset + 0.5 * rectA.width) / zoom;
-        var startY = (rectA.top - yOffset + 0.5 * rectA.height) / zoom;  
+        var startY = (rectA.top - yOffset + 0.5 * rectA.height) / zoom;
 
         if (this._portB) {
             const rectB = this._portB.element.getBoundingClientRect();
             endX = (rectB.left - xOffset + 0.5 * rectB.width) / zoom;
-            endY = (rectB.top - yOffset + 0.5 * rectB.height) / zoom;  
+            endY = (rectB.top - yOffset + 0.5 * rectB.height) / zoom;
         }
-    
+
         if (straight) {
-            this._path.setAttribute("d",  `M${startX},${startY} L${endX},${endY}`);      
+            this._path.setAttribute("d", `M${startX},${startY} L${endX},${endY}`);
             this._path.setAttribute("stroke-dasharray", "10, 10");
             this._path.setAttribute("stroke-linecap", "round");
         } else {
-            this._path.setAttribute("d",  `M${startX},${startY} C${startX + 80},${startY} ${endX - 80},${endY} ${endX},${endY}`);        
-            this._selectionPath.setAttribute("d",  `M${startX},${startY} C${startX + 80},${startY} ${endX - 80},${endY} ${endX},${endY}`);
+            const deltaX = endX - startX;
+            const deltaY = endY - startY;
+            const tangentLength = Math.min(Math.sqrt(deltaX * deltaX + deltaY * deltaY) * 0.5, 300);
+            this._path.setAttribute("d", `M${startX},${startY} C${startX + tangentLength},${startY} ${endX - tangentLength},${endY} ${endX},${endY}`);
+            this._selectionPath.setAttribute("d", `M${startX},${startY} C${startX + tangentLength},${startY} ${endX - tangentLength},${endY} ${endX},${endY}`);
         }
         this._path.setAttribute("stroke", this._portA.element.style.backgroundColor!);
     }
@@ -90,30 +93,30 @@ export class NodeLink {
         var svg = graphCanvas.svgCanvas;
 
         // Create path
-        this._path = document.createElementNS('http://www.w3.org/2000/svg',"path"); 
+        this._path = document.createElementNS('http://www.w3.org/2000/svg', "path");
         this._path.setAttribute("fill", "none");
         this._path.classList.add("link");
 
         svg.appendChild(this._path);
 
-        this._selectionPath = document.createElementNS('http://www.w3.org/2000/svg',"path"); 
+        this._selectionPath = document.createElementNS('http://www.w3.org/2000/svg', "path");
         this._selectionPath.setAttribute("fill", "none");
         this._selectionPath.classList.add("selection-link");
 
         svg.appendChild(this._selectionPath);
 
-        this._selectionPath.onmousedown = ()=> this.onClick();
+        this._selectionPath.onmousedown = () => this.onClick();
 
         if (this._portB) {
             // Update
             this.update();
         }
 
-        this._onSelectionChangedObserver = this._graphCanvas.globalState.onSelectionChangedObservable.add(selection => {
-            if (selection === this) {                
+        this._onSelectionChangedObserver = this._graphCanvas.globalState.onSelectionChangedObservable.add((selection) => {
+            if (selection === this) {
                 this._path.classList.add("selected");
                 this._selectionPath.classList.add("selected");
-            } else {                
+            } else {
                 this._path.classList.remove("selected");
                 this._selectionPath.classList.remove("selected");
             }
@@ -133,7 +136,7 @@ export class NodeLink {
 
         if (this._selectionPath.parentElement) {
             this._selectionPath.parentElement.removeChild(this._selectionPath);
-        }        
+        }
 
         if (this._nodeB) {
             this._nodeA.links.splice(this._nodeA.links.indexOf(this), 1);
@@ -144,5 +147,5 @@ export class NodeLink {
         }
 
         this.onDisposedObservable.notifyObservers(this);
-    }   
+    }
 }

+ 2 - 2
package.json

@@ -7,7 +7,7 @@
     ],
     "name": "babylonjs",
     "description": "Babylon.js is a JavaScript 3D engine based on webgl.",
-    "version": "4.1.0-beta.15",
+    "version": "4.1.0-beta.17",
     "repository": {
         "type": "git",
         "url": "https://github.com/BabylonJS/Babylon.js.git"
@@ -106,4 +106,4 @@
         "xhr2": "^0.1.4",
         "xmlbuilder": "8.2.2"
     }
-}
+}

+ 3 - 2
serializers/src/glTF/2.0/Extensions/KHR_lights_punctual.ts

@@ -97,8 +97,9 @@ export class KHR_lights_punctual implements IGLTFExporterExtensionV2 {
                 }
                 else {
                     const lightPosition = babylonLight.position.clone();
+                    let convertToRightHandedSystem = this._exporter._convertToRightHandedSystemMap[babylonNode.uniqueId];
                     if (!lightPosition.equals(Vector3.Zero())) {
-                        if (this._exporter._convertToRightHandedSystem) {
+                        if (convertToRightHandedSystem) {
                             _GLTFUtilities._GetRightHandedPositionVector3FromRef(lightPosition);
                         }
                         node.translation = lightPosition.asArray();
@@ -109,7 +110,7 @@ export class KHR_lights_punctual implements IGLTFExporterExtensionV2 {
                         const len = Math.sqrt(localAxis.x * localAxis.x + localAxis.z * localAxis.z);
                         const pitch = -Math.atan2(localAxis.y, len);
                         const lightRotationQuaternion = Quaternion.RotationYawPitchRoll(yaw, pitch, 0);
-                        if (this._exporter._convertToRightHandedSystem) {
+                        if (convertToRightHandedSystem) {
                             _GLTFUtilities._GetRightHandedQuaternionFromRef(lightRotationQuaternion);
                         }
                         if (!lightRotationQuaternion.equals(Quaternion.Identity())) {

+ 5 - 2
serializers/src/glTF/2.0/glTFAnimation.ts

@@ -178,6 +178,7 @@ export class _GLTFAnimation {
      * @param bufferViews
      * @param accessors
      * @param convertToRightHandedSystem
+     * @param animationSampleRate
      */
     public static _CreateNodeAnimationFromNodeAnimations(babylonNode: Node, runtimeGLTFAnimation: IAnimation, idleGLTFAnimations: IAnimation[], nodeMap: { [key: number]: number }, nodes: INode[], binaryWriter: _BinaryWriter, bufferViews: IBufferView[], accessors: IAccessor[], convertToRightHandedSystem: boolean, animationSampleRate: number) {
         let glTFAnimation: IAnimation;
@@ -224,9 +225,10 @@ export class _GLTFAnimation {
      * @param binaryWriter
      * @param bufferViews
      * @param accessors
-     * @param convertToRightHandedSystem
+     * @param convertToRightHandedSystemMap
+     * @param animationSampleRate
      */
-    public static _CreateNodeAnimationFromAnimationGroups(babylonScene: Scene, glTFAnimations: IAnimation[], nodeMap: { [key: number]: number }, nodes: INode[], binaryWriter: _BinaryWriter, bufferViews: IBufferView[], accessors: IAccessor[], convertToRightHandedSystem: boolean, animationSampleRate: number) {
+    public static _CreateNodeAnimationFromAnimationGroups(babylonScene: Scene, glTFAnimations: IAnimation[], nodeMap: { [key: number]: number }, nodes: INode[], binaryWriter: _BinaryWriter, bufferViews: IBufferView[], accessors: IAccessor[], convertToRightHandedSystemMap: { [nodeId: number]: boolean }, animationSampleRate: number) {
         let glTFAnimation: IAnimation;
         if (babylonScene.animationGroups) {
             let animationGroups = babylonScene.animationGroups;
@@ -244,6 +246,7 @@ export class _GLTFAnimation {
                         let animationInfo = _GLTFAnimation._DeduceAnimationInfo(targetAnimation.animation);
                         if (animationInfo) {
                             let babylonTransformNode = target instanceof TransformNode ? target as TransformNode : target[0] as TransformNode;
+                            let convertToRightHandedSystem = convertToRightHandedSystemMap[babylonTransformNode.uniqueId];
                             _GLTFAnimation.AddAnimation(`${animation.name}`,
                                 glTFAnimation,
                                 babylonTransformNode,

+ 0 - 0
serializers/src/glTF/2.0/glTFExporter.ts


Daži faili netika attēloti, jo izmaiņu fails ir pārāk liels