Browse Source

merged with master

Benjamin Guignabert 8 years ago
parent
commit
efd3062710

+ 4 - 1
Playground/js/index.js

@@ -91,7 +91,7 @@
 
 
         var onScriptClick = function (evt) {
         var onScriptClick = function (evt) {
             loadScriptFromIndex(evt.target.scriptLinkIndex);
             loadScriptFromIndex(evt.target.scriptLinkIndex);
-        }
+        };
 
 
         var loadScriptsList = function () {
         var loadScriptsList = function () {
             var xhr = new XMLHttpRequest();
             var xhr = new XMLHttpRequest();
@@ -111,6 +111,8 @@
                             a.innerHTML = (index + 1) + " - " + scripts[index];
                             a.innerHTML = (index + 1) + " - " + scripts[index];
                             a.scriptLinkIndex = index + 1;
                             a.scriptLinkIndex = index + 1;
                             a.onclick = onScriptClick;
                             a.onclick = onScriptClick;
+                            option.scriptLinkIndex = index + 1;
+                            option.onclick = onScriptClick;
 
 
                             option.appendChild(a);
                             option.appendChild(a);
                             ul.appendChild(option);
                             ul.appendChild(option);
@@ -212,6 +214,7 @@
             document.getElementById("saveFormTags").value = '';
             document.getElementById("saveFormTags").value = '';
             document.getElementById("saveFormTags").readOnly = false;
             document.getElementById("saveFormTags").readOnly = false;
             document.getElementById("saveFormButtons").style.display = "block";
             document.getElementById("saveFormButtons").style.display = "block";
+            document.getElementById("saveFormButtonOk").style.display = "inline-block";
             document.getElementById("saveMessage").style.display = "block";
             document.getElementById("saveMessage").style.display = "block";
             // document.getElementById("metadataButton").style.display = "none";
             // document.getElementById("metadataButton").style.display = "none";
         };
         };

+ 43 - 14
Tools/Gulp/config.json

@@ -3,7 +3,6 @@
         "filename": "babylon.max.js",
         "filename": "babylon.max.js",
         "minFilename": "babylon.js",
         "minFilename": "babylon.js",
         "minWorkerFilename": "babylon.worker.js",
         "minWorkerFilename": "babylon.worker.js",
-        "minCoreFilename": "babylon.core.js",
         "declarationFilename": "babylon.d.ts",
         "declarationFilename": "babylon.d.ts",
         "declarationModuleFilename": "babylon.module.d.ts",
         "declarationModuleFilename": "babylon.module.d.ts",
         "outputDirectory": "../../dist/preview release",
         "outputDirectory": "../../dist/preview release",
@@ -16,12 +15,13 @@
                 "pointLight", "directionalLight", "spotLight", "animations", "actions", "sprites", "picking", "collisions",
                 "pointLight", "directionalLight", "spotLight", "animations", "actions", "sprites", "picking", "collisions",
                 "particles", "solidParticles", "additionalMeshes", "meshBuilder", "audio", "additionalTextures", "shadows",
                 "particles", "solidParticles", "additionalMeshes", "meshBuilder", "audio", "additionalTextures", "shadows",
                 "loader", "userData", "offline", "fresnel", "multiMaterial", "touchCamera", "procedural", "gamepad",
                 "loader", "userData", "offline", "fresnel", "multiMaterial", "touchCamera", "procedural", "gamepad",
-                "additionalCameras", "postProcesses", "renderingPipeline", "depthRenderer", "additionalPostProcesses",
+                "additionalCameras", "postProcesses", "renderingPipeline", "additionalRenderingPipeline", "depthRenderer", "additionalPostProcesses",
                 "bones", "hdr", "polygonMesh", "csg", "lensFlares", "physics", "textureFormats", "debug", "morphTargets",
                 "bones", "hdr", "polygonMesh", "csg", "lensFlares", "physics", "textureFormats", "debug", "morphTargets",
                 "colorCurves", "octrees", "simd", "vr", "virtualJoystick", "optimizations", "highlights", "assetsManager",
                 "colorCurves", "octrees", "simd", "vr", "virtualJoystick", "optimizations", "highlights", "assetsManager",
                 "mapTexture", "dynamicFloatArray", "serialization", "probes", "layer"
                 "mapTexture", "dynamicFloatArray", "serialization", "probes", "layer"
         ],
         ],
-        "minimal": ["meshBuilder", "standardMaterial", "freeCamera", "hemisphericLight"]
+        "minimal": ["standardMaterial", "freeCamera", "hemisphericLight"],
+        "minimalWithBuilder": ["meshBuilder", "standardMaterial", "freeCamera", "hemisphericLight"]
     },
     },
     "workloads" :
     "workloads" :
     {
     {
@@ -532,7 +532,6 @@
         "additionalPostProcesses" : 
         "additionalPostProcesses" : 
         {
         {
             "files": [
             "files": [
-                "../../src/PostProcess/babylon.anaglyphPostProcess.js",
                 "../../src/PostProcess/babylon.blurPostProcess.js",
                 "../../src/PostProcess/babylon.blurPostProcess.js",
                 "../../src/PostProcess/babylon.refractionPostProcess.js",
                 "../../src/PostProcess/babylon.refractionPostProcess.js",
                 "../../src/PostProcess/babylon.blackAndWhitePostProcess.js",
                 "../../src/PostProcess/babylon.blackAndWhitePostProcess.js",
@@ -540,7 +539,6 @@
                 "../../src/PostProcess/babylon.filterPostProcess.js",
                 "../../src/PostProcess/babylon.filterPostProcess.js",
                 "../../src/PostProcess/babylon.fxaaPostProcess.js",
                 "../../src/PostProcess/babylon.fxaaPostProcess.js",
                 "../../src/PostProcess/babylon.volumetricLightScatteringPostProcess.js",
                 "../../src/PostProcess/babylon.volumetricLightScatteringPostProcess.js",
-                "../../src/PostProcess/babylon.stereoscopicInterlacePostProcess.js",
                 "../../src/PostProcess/babylon.colorCorrectionPostProcess.js",
                 "../../src/PostProcess/babylon.colorCorrectionPostProcess.js",
                 "../../src/PostProcess/babylon.tonemapPostProcess.js",
                 "../../src/PostProcess/babylon.tonemapPostProcess.js",
                 "../../src/PostProcess/babylon.displayPassPostProcess.js"                                
                 "../../src/PostProcess/babylon.displayPassPostProcess.js"                                
@@ -549,7 +547,6 @@
                 "postProcesses"
                 "postProcesses"
             ], 
             ], 
             "shaders" : [
             "shaders" : [
-                "anaglyph.fragment",
                 "blur.fragment",
                 "blur.fragment",
                 "refraction.fragment",
                 "refraction.fragment",
                 "blackAndWhite.fragment",
                 "blackAndWhite.fragment",
@@ -558,7 +555,6 @@
                 "fxaa.fragment",
                 "fxaa.fragment",
                 "volumetricLightScattering.fragment",
                 "volumetricLightScattering.fragment",
                 "volumetricLightScatteringPass.fragment",
                 "volumetricLightScatteringPass.fragment",
-                "stereoscopicInterlace.fragment",
                 "colorCorrection.fragment",
                 "colorCorrection.fragment",
                 "tonemap.fragment",
                 "tonemap.fragment",
                 "displayPass.fragment"
                 "displayPass.fragment"
@@ -570,15 +566,23 @@
                 "../../src/PostProcess/RenderPipeline/babylon.postProcessRenderPipelineManager.js",
                 "../../src/PostProcess/RenderPipeline/babylon.postProcessRenderPipelineManager.js",
                 "../../src/PostProcess/RenderPipeline/babylon.postProcessRenderPass.js",
                 "../../src/PostProcess/RenderPipeline/babylon.postProcessRenderPass.js",
                 "../../src/PostProcess/RenderPipeline/babylon.postProcessRenderEffect.js",
                 "../../src/PostProcess/RenderPipeline/babylon.postProcessRenderEffect.js",
-                "../../src/PostProcess/RenderPipeline/babylon.postProcessRenderPipeline.js",           
+                "../../src/PostProcess/RenderPipeline/babylon.postProcessRenderPipeline.js"
+            ],
+            "dependUpon" : [
+                "postProcesses"
+            ]
+        },                         
+        "additionalRenderingPipeline" : 
+        {
+            "files": [
                 "../../src/PostProcess/babylon.ssaoRenderingPipeline.js",
                 "../../src/PostProcess/babylon.ssaoRenderingPipeline.js",
                 "../../src/PostProcess/babylon.lensRenderingPipeline.js",
                 "../../src/PostProcess/babylon.lensRenderingPipeline.js",
                 "../../src/PostProcess/babylon.hdrRenderingPipeline.js",
                 "../../src/PostProcess/babylon.hdrRenderingPipeline.js",
                 "../../src/PostProcess/babylon.standardRenderingPipeline.js"
                 "../../src/PostProcess/babylon.standardRenderingPipeline.js"
             ],
             ],
             "dependUpon" : [
             "dependUpon" : [
-                "depthRenderer",
-                "postProcesses"
+                "renderingPipeline", 
+                "depthRenderer"
             ], 
             ], 
             "shaders" : [
             "shaders" : [
                 "ssao.fragment",
                 "ssao.fragment",
@@ -642,6 +646,10 @@
             ],
             ],
             "dependUpon" : [
             "dependUpon" : [
                 "core"
                 "core"
+            ],
+            "shaders" : [
+                "lensFlare.vertex",
+                "lensFlare.fragment"
             ]
             ]
         },
         },
         "physics" : 
         "physics" : 
@@ -661,8 +669,6 @@
         {
         {
             "files": [
             "files": [
                 "../../src/Tools/babylon.tga.js",
                 "../../src/Tools/babylon.tga.js",
-                "../../src/Physics/babylon.physicsImpostor.js",
-                "../../src/Physics/babylon.physicsEngine.js",
                 "../../src/Tools/babylon.dds.js",
                 "../../src/Tools/babylon.dds.js",
                 "../../src/Tools/babylon.khronosTextureContainer.js"
                 "../../src/Tools/babylon.khronosTextureContainer.js"
             ],
             ],
@@ -681,7 +687,12 @@
                 "../../src/Rendering/babylon.boundingBoxRenderer.js"
                 "../../src/Rendering/babylon.boundingBoxRenderer.js"
             ],
             ],
             "dependUpon" : [
             "dependUpon" : [
-                "core"
+                "shaderMaterial",
+                "additionalMeshes"
+            ],
+            "shaders" : [
+                "color.vertex",
+                "color.fragment"
             ]
             ]
         },
         },
         "morphTargets" : 
         "morphTargets" : 
@@ -727,6 +738,8 @@
         {
         {
             "files": [
             "files": [
                 "../../src/PostProcess/babylon.vrDistortionCorrectionPostProcess.js",
                 "../../src/PostProcess/babylon.vrDistortionCorrectionPostProcess.js",
+                "../../src/PostProcess/babylon.anaglyphPostProcess.js",
+                "../../src/PostProcess/babylon.stereoscopicInterlacePostProcess.js",
                 "../../src/Cameras/Inputs/babylon.freeCameraDeviceOrientationInput.js",
                 "../../src/Cameras/Inputs/babylon.freeCameraDeviceOrientationInput.js",
                 "../../src/Cameras/Inputs/babylon.arcRotateCameraVRDeviceOrientationInput.js",
                 "../../src/Cameras/Inputs/babylon.arcRotateCameraVRDeviceOrientationInput.js",
                 "../../src/Cameras/VR/babylon.vrCameraMetrics.js",
                 "../../src/Cameras/VR/babylon.vrCameraMetrics.js",
@@ -737,6 +750,11 @@
             ],
             ],
             "dependUpon" : [
             "dependUpon" : [
                 "core"
                 "core"
+            ],
+            "shaders" :[
+                "anaglyph.fragment",
+                "stereoscopicInterlace.fragment",
+                "vrDistortionCorrection.fragment"
             ]
             ]
         },
         },
         "virtualJoystick" : 
         "virtualJoystick" : 
@@ -769,7 +787,18 @@
                 "../../src/Layer/babylon.highlightlayer.js"
                 "../../src/Layer/babylon.highlightlayer.js"
             ],
             ],
             "dependUpon" : [
             "dependUpon" : [
-                "core"
+                "shaderMaterial"
+            ],
+            "shaders" : [
+                "glowBlurPostProcess.fragment",
+                "glowMapGeneration.fragment",
+                "glowMapGeneration.vertex",
+                "glowMapMerge.fragment",
+                "glowMapMerge.vertex",
+                "line.vertex",
+                "line.fragment",
+                "outline.vertex",
+                "outline.fragment"                
             ]
             ]
         }, 
         }, 
         "assetsManager" : 
         "assetsManager" : 

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


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


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


File diff suppressed because it is too large
+ 933 - 875
dist/preview release/babylon.module.d.ts


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


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

@@ -16,7 +16,7 @@
  - babylon.fontTexture.ts was moved from babylon.js to canvas2D ([nockawa](https://github.com/nockawa))
  - babylon.fontTexture.ts was moved from babylon.js to canvas2D ([nockawa](https://github.com/nockawa))
  - Multi-platform Compressed Textures for Desktops & Mobile Devices with fall back.  Batch (dos) scripts to convert entire directories of .jpg's & .png's [Doc](http://doc.babylonjs.com/tutorials/multi-platform_compressed_textures) ([jcpalmer](https://github.com/Palmer-JC))
  - Multi-platform Compressed Textures for Desktops & Mobile Devices with fall back.  Batch (dos) scripts to convert entire directories of .jpg's & .png's [Doc](http://doc.babylonjs.com/tutorials/multi-platform_compressed_textures) ([jcpalmer](https://github.com/Palmer-JC))
  - All deprecated functions and properties were removed ([deltakosh](https://github.com/deltakosh))
  - All deprecated functions and properties were removed ([deltakosh](https://github.com/deltakosh))
- - New build system based on workloads. [More info here](DOC TO DO) ([deltakosh](https://github.com/deltakosh))
+ - New build system based on workloads. [More info here](http://doc.babylonjs.com/generals/how_to_start#custom-builds) ([deltakosh](https://github.com/deltakosh))
 
 
 ### Updates
 ### Updates
 - Added `FIXED_EQUIRECTANGULAR_MIRRORED_MODE` mode for reflection texture. [Demo here](http://www.babylonjs-playground.com/#11GAIH#22) ([deltakosh](https://github.com/deltakosh))
 - Added `FIXED_EQUIRECTANGULAR_MIRRORED_MODE` mode for reflection texture. [Demo here](http://www.babylonjs-playground.com/#11GAIH#22) ([deltakosh](https://github.com/deltakosh))

+ 34 - 13
src/Materials/babylon.effect.ts

@@ -312,18 +312,34 @@
             Tools.LoadFile(fragmentShaderUrl + ".fragment.fx", callback);
             Tools.LoadFile(fragmentShaderUrl + ".fragment.fx", callback);
         }
         }
 
 
-        private _dumpShadersName(): void {
+        private _dumpShadersSource(vertexCode: string, fragmentCode: string, defines: string): void {
+            // Rebuild shaders source code
+            var shaderVersion = (this._engine.webGLVersion > 1) ? "#version 300 es\n" : "";
+            var prefix = shaderVersion + (defines ? defines + "\n" : "");
+            vertexCode = prefix + vertexCode;
+            fragmentCode = prefix + fragmentCode;
+
+            // Number lines of shaders source code
+            var i = 2;
+            var regex = /\n/gm;
+            var formattedVertexCode = "\n1\t" + vertexCode.replace(regex, function() { return "\n" + (i++) + "\t"; });
+            i = 2;
+            var formattedFragmentCode = "\n1\t" + fragmentCode.replace(regex, function() { return "\n" + (i++) + "\t"; });
+
+            // Dump shaders name and formatted source code
             if (this.name.vertexElement) {
             if (this.name.vertexElement) {
-                Tools.Error("Vertex shader:" + this.name.vertexElement);
-                Tools.Error("Fragment shader:" + this.name.fragmentElement);
-            } else if (this.name.vertex) {
-                Tools.Error("Vertex shader:" + this.name.vertex);
-                Tools.Error("Fragment shader:" + this.name.fragment);
-            } else {
-                Tools.Error("Vertex shader:" + this.name);
-                Tools.Error("Fragment shader:" + this.name);
+                BABYLON.Tools.Error("Vertex shader: " + this.name.vertexElement + formattedVertexCode);
+                BABYLON.Tools.Error("Fragment shader: " + this.name.fragmentElement + formattedFragmentCode);
             }
             }
-        }
+            else if (this.name.vertex) {
+                BABYLON.Tools.Error("Vertex shader: " + this.name.vertex + formattedVertexCode);
+                BABYLON.Tools.Error("Fragment shader: " + this.name.fragment + formattedFragmentCode);
+            }
+            else {
+                BABYLON.Tools.Error("Vertex shader: " + this.name + formattedVertexCode);
+                BABYLON.Tools.Error("Fragment shader: " + this.name + formattedFragmentCode);
+            }
+        };
 
 
         private _processShaderConversion(sourceCode: string, isFragment: boolean, callback: (data: any) => void): void {
         private _processShaderConversion(sourceCode: string, isFragment: boolean, callback: (data: any) => void): void {
 
 
@@ -502,10 +518,15 @@
                 this._compilationError = e.message;
                 this._compilationError = e.message;
 
 
                 // Let's go through fallbacks then
                 // Let's go through fallbacks then
-                Tools.Error("Unable to compile effect: ");
-                Tools.Error("Defines: " + defines);
+                Tools.Error("Unable to compile effect:");
+                BABYLON.Tools.Error("Uniforms: " + this._uniformsNames.map(function(uniform) {
+                    return " " + uniform;
+                }));
+                BABYLON.Tools.Error("Attributes: " + attributesNames.map(function(attribute) {
+                    return " " + attribute;
+                }));
+                this._dumpShadersSource(vertexSourceCode, fragmentSourceCode, defines);
                 Tools.Error("Error: " + this._compilationError);
                 Tools.Error("Error: " + this._compilationError);
-                this._dumpShadersName();
 
 
                 if (fallbacks && fallbacks.isMoreFallbacks) {
                 if (fallbacks && fallbacks.isMoreFallbacks) {
                     Tools.Error("Trying next fallback.");
                     Tools.Error("Trying next fallback.");

+ 1 - 1
src/babylon.mixins.ts

@@ -154,7 +154,7 @@ interface Screen {
 }
 }
 
 
 interface HTMLMediaElement {
 interface HTMLMediaElement {
-    crossOrigin: string;
+    crossOrigin: string | null;
 }
 }
 
 
 interface Math {
 interface Math {

BIN
tests/validation/ReferenceImages/bones.png


BIN
tests/validation/ReferenceImages/highlights.png


BIN
tests/validation/ReferenceImages/lens.png


+ 26 - 1
tests/validation/config.json

@@ -103,12 +103,37 @@
       "scriptToRun": "/Demos/Fresnel/fresnel.js",
       "scriptToRun": "/Demos/Fresnel/fresnel.js",
       "functionToCall": "CreateFresnelTestScene",
       "functionToCall": "CreateFresnelTestScene",
       "referenceImage": "fresnel.png"
       "referenceImage": "fresnel.png"
+    }, 
+    {
+      "title": "Highlights",
+      "renderCount": 10,
+      "scriptToRun": "/Demos/Highlights/highlights.js",
+      "functionToCall": "CreateHighlightsScene",
+      "referenceImage": "highlights.png",
+      "rootPath": "/Demos/Highlights/",
+      "replaceUrl": "room.hdr, reflectivity.png, albedo.png"
     },
     },
     {
     {
       "title": "Lines",
       "title": "Lines",
       "scriptToRun": "/Demos/Lines/lines.js",
       "scriptToRun": "/Demos/Lines/lines.js",
       "functionToCall": "CreateLinesTestScene",
       "functionToCall": "CreateLinesTestScene",
-      "referenceImage": "lines.png"
+      "referenceImage": "lines.png",
+      "replace": "updateVerticesDataDirectly, updateVerticesData"
+    },
+    {
+      "title": "Bones",
+      "scriptToRun": "/Demos/Bones/bones.js",
+      "functionToCall": "CreateBonesTestScene",
+      "referenceImage": "bones.png",
+      "replace": "Dude.babylon, dude.babylon"
+    },
+    {
+      "title": "Lens",
+      "scriptToRun": "/Demos/Lens/lensFlares.js",
+      "functionToCall": "CreateLensFlaresTestScene",
+      "referenceImage": "lens.png",
+      "rootPath": "/Demos/Lens/",
+      "replaceUrl": "lens4.png, lens5.png"
     }
     }
   ]
   ]
 }
 }

+ 19 - 2
tests/validation/validation.js

@@ -181,8 +181,25 @@ function runTest(index) {
                 request.onreadystatechange = null; 
                 request.onreadystatechange = null; 
 
 
                 var scriptToRun = request.responseText.replace(/..\/..\/assets\//g, config.root + "/Assets/");
                 var scriptToRun = request.responseText.replace(/..\/..\/assets\//g, config.root + "/Assets/");
-
-                console.log(scriptToRun);
+                var scriptToRun = scriptToRun.replace(/..\/..\/Assets\//g, config.root + "/Assets/");
+
+                if (test.replace) {
+                    var split = test.replace.split(",");
+                    for (var i = 0; i < split.length; i+= 2) {
+                        var source = split[i].trim();
+                        var destination = split[i + 1].trim();
+                        scriptToRun = scriptToRun.replace(source, destination);
+                    }
+                }
+
+                if (test.replaceUrl) {
+                    var split = test.replaceUrl.split(",");
+                    for (var i = 0; i < split.length; i++) {
+                        var source = split[i].trim();
+                        var regex = new RegExp(source, "g");
+                        scriptToRun = scriptToRun.replace(regex, config.root + test.rootPath + source);
+                    }
+                }
 
 
                 currentScene = eval(scriptToRun + test.functionToCall + "(engine)");
                 currentScene = eval(scriptToRun + test.functionToCall + "(engine)");
                 processCurrentScene(test, resultCanvas, result, renderImage, index, waitRing);
                 processCurrentScene(test, resultCanvas, result, renderImage, index, waitRing);