Procházet zdrojové kódy

Added cache for effect in procedurals

David Catuhe před 7 roky
rodič
revize
7f288e6a23

+ 8 - 1
src/Materials/Textures/Procedurals/babylon.proceduralTexture.ts

@@ -38,6 +38,8 @@
         private _fallbackTextureUsed = false;
         private _engine: Engine;
 
+        private _cachedDefines = "";
+
         constructor(name: string, size: any, fragment: any, scene: Nullable<Scene>, fallbackTexture: Nullable<Texture> = null, generateMipMaps = true, public isCube = false) {
             super(null, scene, !generateMipMaps);
 
@@ -133,6 +135,11 @@
                 return true;
             }
 
+            let defines = this._getDefines();
+            if (defines === this._cachedDefines && this._effect.isReady()) {
+                return true;
+            }
+
             if (this._fragment.fragmentElement !== undefined) {
                 shaders = { vertex: "procedural", fragmentElement: this._fragment.fragmentElement };
             }
@@ -140,7 +147,7 @@
                 shaders = { vertex: "procedural", fragment: this._fragment };
             }
 
-            let defines = this._getDefines();
+            this._cachedDefines = defines;
 
             this._effect = engine.createEffect(shaders,
                 [VertexBuffer.PositionKind],