浏览代码

Merge branch 'master' of https://github.com/BabylonJS/Babylon.js

Julien Moreau-Mathis 8 年之前
父节点
当前提交
3cfccb95db
共有 29 个文件被更改,包括 11913 次插入11496 次删除
  1. 3059 3045
      dist/preview release/babylon.d.ts
  2. 34 75
      dist/preview release/babylon.js
  3. 153 9
      dist/preview release/babylon.max.js
  4. 3059 3045
      dist/preview release/babylon.module.d.ts
  5. 38 79
      dist/preview release/babylon.worker.js
  6. 2616 2616
      dist/preview release/customConfigurations/minimalViewer/babylon.d.ts
  7. 1 1
      dist/preview release/customConfigurations/minimalViewer/babylon.js
  8. 1 1
      dist/preview release/customConfigurations/minimalViewer/babylon.max.js
  9. 2616 2616
      dist/preview release/customConfigurations/minimalViewer/babylon.module.d.ts
  10. 10 0
      materialsLibrary/src/cell/babylon.cellMaterial.ts
  11. 18 0
      materialsLibrary/src/fire/babylon.fireMaterial.ts
  12. 14 0
      materialsLibrary/src/fur/babylon.furMaterial.ts
  13. 10 0
      materialsLibrary/src/lava/babylon.lavaMaterial.ts
  14. 10 0
      materialsLibrary/src/normal/babylon.normalMaterial.ts
  15. 10 0
      materialsLibrary/src/simple/babylon.simpleMaterial.ts
  16. 34 0
      materialsLibrary/src/terrain/babylon.terrainMaterial.ts
  17. 30 0
      materialsLibrary/src/triPlanar/babylon.triPlanarMaterial.ts
  18. 10 0
      materialsLibrary/src/water/babylon.waterMaterial.ts
  19. 1 1
      src/Materials/PBR/babylon.pbrBaseMaterial.ts
  20. 50 0
      src/Materials/PBR/babylon.pbrMaterial.ts
  21. 17 0
      src/Materials/PBR/babylon.pbrMetallicRoughnessMaterial.ts
  22. 17 0
      src/Materials/PBR/babylon.pbrSpecularGlossinessMaterial.ts
  23. 26 0
      src/Materials/Textures/babylon.baseTexture.ts
  24. 7 7
      src/Materials/Textures/babylon.texture.ts
  25. 4 0
      src/Materials/babylon.material.ts
  26. 4 0
      src/Materials/babylon.multiMaterial.ts
  27. 17 0
      src/Materials/babylon.shaderMaterial.ts
  28. 46 0
      src/Materials/babylon.standardMaterial.ts
  29. 1 1
      src/Shaders/ShadersInclude/pbrFunctions.fx

文件差异内容过多而无法显示
+ 3059 - 3045
dist/preview release/babylon.d.ts


文件差异内容过多而无法显示
+ 34 - 75
dist/preview release/babylon.js


文件差异内容过多而无法显示
+ 153 - 9
dist/preview release/babylon.max.js


文件差异内容过多而无法显示
+ 3059 - 3045
dist/preview release/babylon.module.d.ts


文件差异内容过多而无法显示
+ 38 - 79
dist/preview release/babylon.worker.js


文件差异内容过多而无法显示
+ 2616 - 2616
dist/preview release/customConfigurations/minimalViewer/babylon.d.ts


文件差异内容过多而无法显示
+ 1 - 1
dist/preview release/customConfigurations/minimalViewer/babylon.js


文件差异内容过多而无法显示
+ 1 - 1
dist/preview release/customConfigurations/minimalViewer/babylon.max.js


文件差异内容过多而无法显示
+ 2616 - 2616
dist/preview release/customConfigurations/minimalViewer/babylon.module.d.ts


+ 10 - 0
materialsLibrary/src/cell/babylon.cellMaterial.ts

@@ -270,6 +270,16 @@ module BABYLON {
             return results;
             return results;
         }
         }
 
 
+        public getActiveTextures(): BaseTexture[] {
+            var activeTextures = super.getActiveTextures();
+
+            if (this._diffuseTexture) {
+                activeTextures.push(this._diffuseTexture);
+            }
+
+            return activeTextures;
+        }
+
         public dispose(forceDisposeEffect?: boolean): void {
         public dispose(forceDisposeEffect?: boolean): void {
             if (this._diffuseTexture) {
             if (this._diffuseTexture) {
                 this._diffuseTexture.dispose();
                 this._diffuseTexture.dispose();

+ 18 - 0
materialsLibrary/src/fire/babylon.fireMaterial.ts

@@ -258,6 +258,24 @@ module BABYLON {
             return results;
             return results;
         }
         }
 
 
+        public getActiveTextures(): BaseTexture[] {
+            var activeTextures = super.getActiveTextures();
+
+            if (this._diffuseTexture) {
+                activeTextures.push(this._diffuseTexture);
+            }
+
+            if (this._distortionTexture) {
+                activeTextures.push(this._distortionTexture);
+            }
+
+            if (this._opacityTexture) {
+                activeTextures.push(this._opacityTexture);
+            }
+
+            return activeTextures;
+        }
+
         public dispose(forceDisposeEffect?: boolean): void {
         public dispose(forceDisposeEffect?: boolean): void {
             if (this._diffuseTexture) {
             if (this._diffuseTexture) {
                 this._diffuseTexture.dispose();
                 this._diffuseTexture.dispose();

+ 14 - 0
materialsLibrary/src/fur/babylon.furMaterial.ts

@@ -369,6 +369,20 @@ module BABYLON {
             return results;
             return results;
         }
         }
 
 
+        public getActiveTextures(): BaseTexture[] {
+            var activeTextures = super.getActiveTextures();
+
+            if (this._diffuseTexture) {
+                activeTextures.push(this._diffuseTexture);
+            }
+
+            if (this._heightTexture) {
+                activeTextures.push(this._heightTexture);
+            }
+
+            return activeTextures;
+        }
+
         public dispose(forceDisposeEffect?: boolean): void {
         public dispose(forceDisposeEffect?: boolean): void {
             if (this.diffuseTexture) {
             if (this.diffuseTexture) {
                 this.diffuseTexture.dispose();
                 this.diffuseTexture.dispose();

+ 10 - 0
materialsLibrary/src/lava/babylon.lavaMaterial.ts

@@ -339,6 +339,16 @@ module BABYLON {
             return results;
             return results;
         }
         }
 
 
+        public getActiveTextures(): BaseTexture[] {
+            var activeTextures = super.getActiveTextures();
+
+            if (this._diffuseTexture) {
+                activeTextures.push(this._diffuseTexture);
+            }
+
+            return activeTextures;
+        }
+
         public dispose(forceDisposeEffect?: boolean): void {
         public dispose(forceDisposeEffect?: boolean): void {
             if (this.diffuseTexture) {
             if (this.diffuseTexture) {
                 this.diffuseTexture.dispose();
                 this.diffuseTexture.dispose();

+ 10 - 0
materialsLibrary/src/normal/babylon.normalMaterial.ts

@@ -293,6 +293,16 @@ module BABYLON {
             return results;
             return results;
         }
         }
 
 
+        public getActiveTextures(): BaseTexture[] {
+            var activeTextures = super.getActiveTextures();
+
+            if (this._diffuseTexture) {
+                activeTextures.push(this._diffuseTexture);
+            }
+
+            return activeTextures;
+        }
+
         public dispose(forceDisposeEffect?: boolean): void {
         public dispose(forceDisposeEffect?: boolean): void {
             if (this.diffuseTexture) {
             if (this.diffuseTexture) {
                 this.diffuseTexture.dispose();
                 this.diffuseTexture.dispose();

+ 10 - 0
materialsLibrary/src/simple/babylon.simpleMaterial.ts

@@ -259,6 +259,16 @@ module BABYLON {
             return results;
             return results;
         }
         }
 
 
+        public getActiveTextures(): BaseTexture[] {
+            var activeTextures = super.getActiveTextures();
+
+            if (this._diffuseTexture) {
+                activeTextures.push(this._diffuseTexture);
+            }
+
+            return activeTextures;
+        }
+
         public dispose(forceDisposeEffect?: boolean): void {
         public dispose(forceDisposeEffect?: boolean): void {
             if (this._diffuseTexture) {
             if (this._diffuseTexture) {
                 this._diffuseTexture.dispose();
                 this._diffuseTexture.dispose();

+ 34 - 0
materialsLibrary/src/terrain/babylon.terrainMaterial.ts

@@ -332,6 +332,40 @@ module BABYLON {
             return results;
             return results;
         }
         }
 
 
+        public getActiveTextures(): BaseTexture[] {
+            var activeTextures = super.getActiveTextures();
+
+            if (this._mixTexture) {
+                activeTextures.push(this._mixTexture);
+            }
+
+            if (this._diffuseTexture1) {
+                activeTextures.push(this._diffuseTexture1);
+            }
+
+            if (this._diffuseTexture2) {
+                activeTextures.push(this._diffuseTexture2);
+            }
+
+            if (this._diffuseTexture3) {
+                activeTextures.push(this._diffuseTexture3);
+            }
+
+            if (this._bumpTexture1) {
+                activeTextures.push(this._bumpTexture1);
+            }
+
+            if (this._bumpTexture2) {
+                activeTextures.push(this._bumpTexture2);
+            }
+
+            if (this._bumpTexture3) {
+                activeTextures.push(this._bumpTexture3);
+            }
+
+            return activeTextures;
+        }
+
         public dispose(forceDisposeEffect?: boolean): void {
         public dispose(forceDisposeEffect?: boolean): void {
             if (this.mixTexture) {
             if (this.mixTexture) {
                 this.mixTexture.dispose();
                 this.mixTexture.dispose();

+ 30 - 0
materialsLibrary/src/triPlanar/babylon.triPlanarMaterial.ts

@@ -332,6 +332,36 @@ module BABYLON {
             return results;
             return results;
         }
         }
 
 
+        public getActiveTextures(): BaseTexture[] {
+            var activeTextures = super.getActiveTextures();
+
+            if (this._diffuseTextureX) {
+                activeTextures.push(this._diffuseTextureX);
+            }
+
+            if (this._diffuseTextureY) {
+                activeTextures.push(this._diffuseTextureY);
+            }
+
+            if (this._diffuseTextureZ) {
+                activeTextures.push(this._diffuseTextureZ);
+            }
+
+            if (this._normalTextureX) {
+                activeTextures.push(this._normalTextureX);
+            }
+
+            if (this._normalTextureY) {
+                activeTextures.push(this._normalTextureY);
+            }
+
+            if (this._normalTextureZ) {
+                activeTextures.push(this._normalTextureZ);
+            }
+
+            return activeTextures;
+        }
+
         public dispose(forceDisposeEffect?: boolean): void {
         public dispose(forceDisposeEffect?: boolean): void {
             if (this.mixTexture) {
             if (this.mixTexture) {
                 this.mixTexture.dispose();
                 this.mixTexture.dispose();

+ 10 - 0
materialsLibrary/src/water/babylon.waterMaterial.ts

@@ -548,6 +548,16 @@ module BABYLON {
             return results;
             return results;
         }
         }
 
 
+        public getActiveTextures(): BaseTexture[] {
+            var activeTextures = super.getActiveTextures();
+
+            if (this._bumpTexture) {
+                activeTextures.push(this._bumpTexture);
+            }
+
+            return activeTextures;
+        }
+
         public dispose(forceDisposeEffect?: boolean): void {
         public dispose(forceDisposeEffect?: boolean): void {
             if (this.bumpTexture) {
             if (this.bumpTexture) {
                 this.bumpTexture.dispose();
                 this.bumpTexture.dispose();

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

@@ -105,7 +105,7 @@
      * For more information, please refer to the documentation : 
      * For more information, please refer to the documentation : 
      * http://doc.babylonjs.com/extensions/Physically_Based_Rendering
      * http://doc.babylonjs.com/extensions/Physically_Based_Rendering
      */
      */
-    export abstract class PBRBaseMaterial extends BABYLON.PushMaterial {
+    export abstract class PBRBaseMaterial extends PushMaterial {
 
 
         /**
         /**
          * Intensity of the direct lights e.g. the four lights available in your scene.
          * Intensity of the direct lights e.g. the four lights available in your scene.

+ 50 - 0
src/Materials/PBR/babylon.pbrMaterial.ts

@@ -432,6 +432,56 @@
             return "PBRMaterial";
             return "PBRMaterial";
         }
         }
 
 
+        public getActiveTextures(): BaseTexture[] {
+            var activeTextures = super.getActiveTextures();
+
+            if (this._albedoTexture) {
+                activeTextures.push(this._albedoTexture);
+            }
+
+            if (this._ambientTexture) {
+                activeTextures.push(this._ambientTexture);
+            }
+
+            if (this._opacityTexture) {
+                activeTextures.push(this._opacityTexture);
+            }
+
+            if (this._reflectionTexture) {
+                activeTextures.push(this._reflectionTexture);
+            }
+
+            if (this._emissiveTexture) {
+                activeTextures.push(this._emissiveTexture);
+            }
+
+            if (this._reflectionTexture) {
+                activeTextures.push(this._reflectionTexture);
+            }
+
+            if (this._metallicTexture) {
+                activeTextures.push(this._metallicTexture);
+            }
+
+            if (this._microSurfaceTexture) {
+                activeTextures.push(this._microSurfaceTexture);
+            }
+
+            if (this._bumpTexture) {
+                activeTextures.push(this._bumpTexture);
+            }
+
+            if (this._lightmapTexture) {
+                activeTextures.push(this._lightmapTexture);
+            }
+
+            if (this._refractionTexture) {
+                activeTextures.push(this._refractionTexture);
+            }
+
+            return activeTextures;
+        }
+
         public clone(name: string): PBRMaterial {
         public clone(name: string): PBRMaterial {
             return SerializationHelper.Clone(() => new PBRMaterial(name, this.getScene()), this);
             return SerializationHelper.Clone(() => new PBRMaterial(name, this.getScene()), this);
         }
         }

+ 17 - 0
src/Materials/PBR/babylon.pbrMetallicRoughnessMaterial.ts

@@ -69,6 +69,23 @@
         }
         }
 
 
         /**
         /**
+         * Return the active textures of the material.
+         */
+        public getActiveTextures(): BaseTexture[] {
+            var activeTextures = super.getActiveTextures();
+
+            if (this.baseTexture) {
+                activeTextures.push(this.baseTexture);
+            }
+
+            if (this.metallicRoughnessTexture) {
+                activeTextures.push(this.metallicRoughnessTexture);
+            }
+
+            return activeTextures;
+        }
+
+        /**
          * Serialize the material to a parsable JSON object.
          * Serialize the material to a parsable JSON object.
          */
          */
         public serialize(): any {
         public serialize(): any {

+ 17 - 0
src/Materials/PBR/babylon.pbrSpecularGlossinessMaterial.ts

@@ -62,6 +62,23 @@
         }
         }
 
 
         /**
         /**
+         * Return the active textures of the material.
+         */
+        public getActiveTextures(): BaseTexture[] {
+            var activeTextures = super.getActiveTextures();
+
+            if (this.diffuseTexture) {
+                activeTextures.push(this.diffuseTexture);
+            }
+
+            if (this.specularGlossinessTexture) {
+                activeTextures.push(this.specularGlossinessTexture);
+            }
+
+            return activeTextures;
+        }
+
+        /**
          * Serialize the material to a parsable JSON object.
          * Serialize the material to a parsable JSON object.
          */
          */
         public serialize(): any {
         public serialize(): any {

+ 26 - 0
src/Materials/Textures/babylon.baseTexture.ts

@@ -241,5 +241,31 @@
 
 
             return serializationObject;
             return serializationObject;
         }
         }
+
+        public static WhenAllReady(textures: BaseTexture[], onLoad: () => void): void {
+            var numReady = 0;
+
+            for (var i = 0; i < textures.length; i++) {
+                var texture = textures[i];
+
+                if (texture.isReady()) {
+                    if (++numReady === textures.length) {
+                        onLoad();
+                    }
+                }
+                else {
+                    var observable = (texture as any).onLoadObservable as Observable<Texture>;
+
+                    let callback = () => {
+                        observable.removeCallback(callback);
+                        if (++numReady === textures.length) {
+                            onLoad();
+                        }
+                    };
+
+                    observable.add(callback);
+                }
+            }
+        }
     }
     }
 } 
 } 

+ 7 - 7
src/Materials/Textures/babylon.texture.ts

@@ -72,7 +72,7 @@
         protected _format: number;
         protected _format: number;
         private _delayedOnLoad: () => void;
         private _delayedOnLoad: () => void;
         private _delayedOnError: () => void;
         private _delayedOnError: () => void;
-        private _onLoadObservarble: Observable<boolean>;
+        private _onLoadObservable: Observable<Texture>;
 
 
         protected _isBlocking: boolean = true;
         protected _isBlocking: boolean = true;
         public set isBlocking(value: boolean) {
         public set isBlocking(value: boolean) {
@@ -98,8 +98,8 @@
             scene = this.getScene();
             scene = this.getScene();
 
 
             let load = () => {
             let load = () => {
-                if (this._onLoadObservarble && this._onLoadObservarble.hasObservers()) {
-                    this.onLoadObservable.notifyObservers(true);
+                if (this._onLoadObservable && this._onLoadObservable.hasObservers()) {
+                    this.onLoadObservable.notifyObservers(this);
                 }
                 }
                 if (onLoad) {
                 if (onLoad) {
                     onLoad();
                     onLoad();
@@ -287,11 +287,11 @@
             }, this);
             }, this);
         }
         }
 
 
-        public get onLoadObservable(): Observable<boolean> {
-            if (!this._onLoadObservarble) {
-                this._onLoadObservarble = new Observable<boolean>();
+        public get onLoadObservable(): Observable<Texture> {
+            if (!this._onLoadObservable) {
+                this._onLoadObservable = new Observable<Texture>();
             }
             }
-            return this._onLoadObservarble;
+            return this._onLoadObservable;
         }
         }
 
 
         // Statics
         // Statics

+ 4 - 0
src/Materials/babylon.material.ts

@@ -482,6 +482,10 @@
             }
             }
         }
         }
 
 
+        public getActiveTextures(): BaseTexture[] {
+            return [];
+        }
+
         public clone(name: string): Material {
         public clone(name: string): Material {
             return null;
             return null;
         }
         }

+ 4 - 0
src/Materials/babylon.multiMaterial.ts

@@ -47,6 +47,10 @@
             return this.subMaterials[index];
             return this.subMaterials[index];
         }
         }
 
 
+        public getActiveTextures(): BaseTexture[] {
+            return super.getActiveTextures().concat(...this.subMaterials.map(subMaterial => subMaterial.getActiveTextures()));
+        }
+
         // Methods
         // Methods
         public getClassName(): string {
         public getClassName(): string {
             return "MultiMaterial";
             return "MultiMaterial";

+ 17 - 0
src/Materials/babylon.shaderMaterial.ts

@@ -356,6 +356,23 @@
             this._afterBind(mesh);
             this._afterBind(mesh);
         }
         }
 
 
+        public getActiveTextures(): BaseTexture[] {
+            var activeTextures = super.getActiveTextures();
+
+            for (var name in this._textures) {
+                activeTextures.push(this._textures[name]);
+            }
+
+            for (var name in this._textureArrays) {
+                var array = this._textureArrays[name];
+                for (var index = 0; index < array.length; index++) {
+                    activeTextures.push(array[index]);
+                }
+            }
+
+            return activeTextures;
+        }
+
         public clone(name: string): ShaderMaterial {
         public clone(name: string): ShaderMaterial {
             var newShaderMaterial = new ShaderMaterial(name, this.getScene(), this._shaderPath, this._options);
             var newShaderMaterial = new ShaderMaterial(name, this.getScene(), this._shaderPath, this._options);
 
 

+ 46 - 0
src/Materials/babylon.standardMaterial.ts

@@ -1065,6 +1065,52 @@ module BABYLON {
             return results;
             return results;
         }
         }
 
 
+        public getActiveTextures(): BaseTexture[] {
+            var activeTextures = super.getActiveTextures();
+
+            if (this._diffuseTexture) {
+                activeTextures.push(this._diffuseTexture);
+            }
+
+            if (this._ambientTexture) {
+                activeTextures.push(this._ambientTexture);
+            }
+
+            if (this._opacityTexture) {
+                activeTextures.push(this._opacityTexture);
+            }
+
+            if (this._reflectionTexture) {
+                activeTextures.push(this._reflectionTexture);
+            }
+
+            if (this._emissiveTexture) {
+                activeTextures.push(this._emissiveTexture);
+            }
+
+            if (this._specularTexture) {
+                activeTextures.push(this._specularTexture);
+            }
+
+            if (this._bumpTexture) {
+                activeTextures.push(this._bumpTexture);
+            }
+
+            if (this._lightmapTexture) {
+                activeTextures.push(this._lightmapTexture);
+            }
+
+            if (this._refractionTexture) {
+                activeTextures.push(this._refractionTexture);
+            }
+
+            if (this._cameraColorGradingTexture) {
+                activeTextures.push(this._cameraColorGradingTexture);
+            }
+
+            return activeTextures;
+        }
+
         public dispose(forceDisposeEffect?: boolean, forceDisposeTextures?: boolean): void {
         public dispose(forceDisposeEffect?: boolean, forceDisposeTextures?: boolean): void {
             if (forceDisposeTextures) {
             if (forceDisposeTextures) {
                 if (this._diffuseTexture) {
                 if (this._diffuseTexture) {

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

@@ -95,7 +95,7 @@ vec3 computeSpecularTerm(float NdotH, float NdotL, float NdotV, float VdotH, flo
     float specTerm = max(0., visibility * distribution) * NdotL;
     float specTerm = max(0., visibility * distribution) * NdotL;
 
 
     vec3 fresnel = fresnelSchlickGGX(VdotH, reflectance0, reflectance90);
     vec3 fresnel = fresnelSchlickGGX(VdotH, reflectance0, reflectance90);
-    return vec3(specTerm, specTerm, specTerm);
+    return fresnel * specTerm;
 }
 }
 
 
 float computeDiffuseTerm(float NdotL, float NdotV, float VdotH, float roughness)
 float computeDiffuseTerm(float NdotL, float NdotV, float VdotH, float roughness)