Browse Source

Fixed shadermaterial cache

David Catuhe 8 years ago
parent
commit
b5ac8583cf
32 changed files with 926 additions and 880 deletions
  1. 19 19
      dist/preview release/babylon.core.js
  2. 757 747
      dist/preview release/babylon.d.ts
  3. 28 28
      dist/preview release/babylon.js
  4. 49 2
      dist/preview release/babylon.max.js
  5. 28 28
      dist/preview release/babylon.noworker.js
  6. 5 9
      dist/preview release/loaders/babylon.glTFFileLoader.js
  7. 1 1
      dist/preview release/loaders/babylon.objFileLoader.js
  8. 1 1
      dist/preview release/loaders/babylon.stlFileLoader.js
  9. 1 2
      dist/preview release/materialsLibrary/babylon.fireMaterial.js
  10. 1 2
      dist/preview release/materialsLibrary/babylon.furMaterial.js
  11. 1 2
      dist/preview release/materialsLibrary/babylon.gradientMaterial.js
  12. 1 2
      dist/preview release/materialsLibrary/babylon.gridMaterial.js
  13. 1 2
      dist/preview release/materialsLibrary/babylon.lavaMaterial.js
  14. 1 2
      dist/preview release/materialsLibrary/babylon.normalMaterial.js
  15. 1 2
      dist/preview release/materialsLibrary/babylon.simpleMaterial.js
  16. 1 2
      dist/preview release/materialsLibrary/babylon.skyMaterial.js
  17. 1 2
      dist/preview release/materialsLibrary/babylon.terrainMaterial.js
  18. 1 2
      dist/preview release/materialsLibrary/babylon.triPlanarMaterial.js
  19. 1 2
      dist/preview release/materialsLibrary/babylon.waterMaterial.js
  20. 1 2
      dist/preview release/postProcessesLibrary/babylon.asciiArtPostProcess.js
  21. 1 2
      dist/preview release/postProcessesLibrary/babylon.digitalRainPostProcess.js
  22. 1 2
      dist/preview release/proceduralTexturesLibrary/babylon.brickProceduralTexture.js
  23. 1 2
      dist/preview release/proceduralTexturesLibrary/babylon.cloudProceduralTexture.js
  24. 1 2
      dist/preview release/proceduralTexturesLibrary/babylon.fireProceduralTexture.js
  25. 1 2
      dist/preview release/proceduralTexturesLibrary/babylon.grassProceduralTexture.js
  26. 1 2
      dist/preview release/proceduralTexturesLibrary/babylon.marbleProceduralTexture.js
  27. 1 2
      dist/preview release/proceduralTexturesLibrary/babylon.roadProceduralTexture.js
  28. 1 2
      dist/preview release/proceduralTexturesLibrary/babylon.starfieldProceduralTexture.js
  29. 1 2
      dist/preview release/proceduralTexturesLibrary/babylon.woodProceduralTexture.js
  30. 1 1
      dist/preview release/serializers/babylon.objSerializer.js
  31. 1 1
      src/Cameras/babylon.targetCamera.ts
  32. 15 1
      src/Materials/babylon.shaderMaterial.ts

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


File diff suppressed because it is too large
+ 757 - 747
dist/preview release/babylon.d.ts


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


+ 49 - 2
dist/preview release/babylon.max.js

@@ -9910,6 +9910,7 @@ var BABYLON;
             this.origin = origin;
             this.direction = direction;
             this.length = length;
+            this._show = false;
         }
         // Methods
         Ray.prototype.intersectsBoxMinMax = function (minimum, maximum) {
@@ -10062,6 +10063,41 @@ var BABYLON;
                 return distance;
             }
         };
+        Ray.prototype.intersectsMesh = function (mesh, fastCheck) {
+            var tm = BABYLON.Tmp.Matrix[0];
+            mesh.getWorldMatrix().invertToRef(tm);
+            var ray = Ray.Transform(this, tm);
+            return mesh.intersects(ray, fastCheck);
+        };
+        Ray.prototype.show = function (scene, color) {
+            this._renderFunction = this._render.bind(this);
+            this._show = true;
+            this._scene = scene;
+            this._renderPoints = [this.origin, this.origin.add(this.direction.scale(this.length))];
+            this._renderLine = BABYLON.Mesh.CreateLines("ray", this._renderPoints, scene, true);
+            if (color) {
+                this._renderLine.color.copyFrom(color);
+            }
+            this._scene.registerBeforeRender(this._renderFunction);
+        };
+        Ray.prototype.hide = function () {
+            if (this._show) {
+                this._show = false;
+                this._scene.unregisterBeforeRender(this._renderFunction);
+            }
+            if (this._renderLine) {
+                this._renderLine.dispose();
+                this._renderLine = null;
+                this._renderPoints = null;
+            }
+        };
+        Ray.prototype._render = function () {
+            var point = this._renderPoints[1];
+            point.copyFrom(this.direction);
+            point.scaleInPlace(this.length);
+            point.addInPlace(this.origin);
+            BABYLON.Mesh.CreateLines("ray", this._renderPoints, this._scene, true, this._renderLine);
+        };
         /**
          * Intersection test between the ray and a given segment whithin a given tolerance (threshold)
          * @param sega the first point of the segment to test the intersection against
@@ -14725,7 +14761,7 @@ var BABYLON;
             if (!this.lockedTarget) {
                 return null;
             }
-            return this.lockedTarget.position || this.lockedTarget;
+            return this.lockedTarget.absolutePosition || this.lockedTarget;
         };
         // Cache
         TargetCamera.prototype._initCache = function () {
@@ -40502,12 +40538,23 @@ var BABYLON;
             this._vectors3Arrays[name] = value;
             return this;
         };
+        ShaderMaterial.prototype._checkCache = function (scene, mesh, useInstances) {
+            if (!mesh) {
+                return true;
+            }
+            if (this._effect && (this._effect.defines.indexOf("#define INSTANCES") !== -1) !== useInstances) {
+                return false;
+            }
+            return false;
+        };
         ShaderMaterial.prototype.isReady = function (mesh, useInstances) {
             var scene = this.getScene();
             var engine = scene.getEngine();
             if (!this.checkReadyOnEveryCall) {
                 if (this._renderId === scene.getRenderId()) {
-                    return true;
+                    if (this._checkCache(scene, mesh, useInstances)) {
+                        return true;
+                    }
                 }
             }
             // Instances

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


+ 5 - 9
dist/preview release/loaders/babylon.glTFFileLoader.js

@@ -90,8 +90,7 @@ var BABYLON;
     var EBlendingFunction = BABYLON.EBlendingFunction;
 })(BABYLON || (BABYLON = {}));
 
-//# sourceMappingURL=babylon.glTFFileLoaderInterfaces.js.map
-
+//# sourceMappingURL=../../src/glTF/babylon.glTFFileLoaderInterfaces.js.map
 /// <reference path="../../../dist/preview release/babylon.d.ts"/>
 var BABYLON;
 (function (BABYLON) {
@@ -1500,8 +1499,7 @@ var BABYLON;
     BABYLON.SceneLoader.RegisterPlugin(new GLTFFileLoader());
 })(BABYLON || (BABYLON = {}));
 
-//# sourceMappingURL=babylon.glTFFileLoader.js.map
-
+//# sourceMappingURL=../../src/glTF/babylon.glTFFileLoader.js.map
 /// <reference path="../../../dist/preview release/babylon.d.ts"/>
 var BABYLON;
 (function (BABYLON) {
@@ -1703,8 +1701,7 @@ var BABYLON;
     BABYLON.GLTFUtils = GLTFUtils;
 })(BABYLON || (BABYLON = {}));
 
-//# sourceMappingURL=babylon.glTFFileLoaderUtils.js.map
-
+//# sourceMappingURL=../../src/glTF/babylon.glTFFileLoaderUtils.js.map
 /// <reference path="../../../dist/preview release/babylon.d.ts"/>
 var BABYLON;
 (function (BABYLON) {
@@ -1825,8 +1822,7 @@ var BABYLON;
     BABYLON.GLTFFileLoaderExtension = GLTFFileLoaderExtension;
 })(BABYLON || (BABYLON = {}));
 
-//# sourceMappingURL=babylon.glTFFileLoaderExtension.js.map
-
+//# sourceMappingURL=../../src/glTF/babylon.glTFFileLoaderExtension.js.map
 /// <reference path="../../../dist/preview release/babylon.d.ts"/>
 var __extends = (this && this.__extends) || function (d, b) {
     for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
@@ -1969,4 +1965,4 @@ var BABYLON;
     BABYLON.GLTFFileLoader.RegisterExtension(new GLTFBinaryExtension());
 })(BABYLON || (BABYLON = {}));
 
-//# sourceMappingURL=babylon.glTFBinaryExtension.js.map
+//# sourceMappingURL=../../src/glTF/babylon.glTFBinaryExtension.js.map

+ 1 - 1
dist/preview release/loaders/babylon.objFileLoader.js

@@ -740,4 +740,4 @@ var BABYLON;
     BABYLON.SceneLoader.RegisterPlugin(new OBJFileLoader());
 })(BABYLON || (BABYLON = {}));
 
-//# sourceMappingURL=babylon.objFileLoader.js.map
+//# sourceMappingURL=../../src/OBJ/babylon.objFileLoader.js.map

+ 1 - 1
dist/preview release/loaders/babylon.stlFileLoader.js

@@ -80,4 +80,4 @@ var BABYLON;
     BABYLON.SceneLoader.RegisterPlugin(new STLFileLoader());
 })(BABYLON || (BABYLON = {}));
 
-//# sourceMappingURL=babylon.stlFileLoader.js.map
+//# sourceMappingURL=../../src/STL/babylon.stlFileLoader.js.map

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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


+ 1 - 1
dist/preview release/serializers/babylon.objSerializer.js

@@ -87,4 +87,4 @@ var BABYLON;
     BABYLON.OBJExport = OBJExport;
 })(BABYLON || (BABYLON = {}));
 
-//# sourceMappingURL=babylon.objSerializer.js.map
+//# sourceMappingURL=../../src/OBJ/babylon.objSerializer.js.map

+ 1 - 1
src/Cameras/babylon.targetCamera.ts

@@ -48,7 +48,7 @@
                 return null;
             }
 
-            return this.lockedTarget.position || this.lockedTarget;
+            return this.lockedTarget.absolutePosition || this.lockedTarget;
         }
 
         // Cache

+ 15 - 1
src/Materials/babylon.shaderMaterial.ts

@@ -143,6 +143,18 @@
 
             return this;
         }
+
+        private _checkCache(scene: Scene, mesh?: AbstractMesh, useInstances?: boolean): boolean {
+            if (!mesh) {
+                return true;
+            }
+
+            if (this._effect && (this._effect.defines.indexOf("#define INSTANCES") !== -1) !== useInstances) {
+                return false;
+            }
+
+            return false;
+        }
         
         public isReady(mesh?: AbstractMesh, useInstances?: boolean): boolean {
             var scene = this.getScene();
@@ -150,7 +162,9 @@
 
             if (!this.checkReadyOnEveryCall) {
                 if (this._renderId === scene.getRenderId()) {
-                    return true;
+                    if (this._checkCache(scene, mesh, useInstances)) {
+                        return true;
+                    }
                 }
             }