Просмотр исходного кода

handling compatibility with material library

Benjamin Guignabert 8 лет назад
Родитель
Сommit
7c8f3603af
33 измененных файлов с 7689 добавлено и 7432 удалено
  1. 3 3
      dist/preview release/babylon.core.js
  2. 3642 3642
      dist/preview release/babylon.d.ts
  3. 3 3
      dist/preview release/babylon.js
  4. 8 8
      dist/preview release/babylon.max.js
  5. 3642 3642
      dist/preview release/babylon.module.d.ts
  6. 3 3
      dist/preview release/babylon.noworker.js
  7. 20 11
      dist/preview release/materialsLibrary/babylon.fireMaterial.js
  8. 1 1
      dist/preview release/materialsLibrary/babylon.fireMaterial.min.js
  9. 20 3
      dist/preview release/materialsLibrary/babylon.furMaterial.js
  10. 1 1
      dist/preview release/materialsLibrary/babylon.furMaterial.min.js
  11. 30 14
      dist/preview release/materialsLibrary/babylon.gradientMaterial.js
  12. 1 1
      dist/preview release/materialsLibrary/babylon.gradientMaterial.min.js
  13. 32 16
      dist/preview release/materialsLibrary/babylon.lavaMaterial.js
  14. 1 1
      dist/preview release/materialsLibrary/babylon.lavaMaterial.min.js
  15. 30 14
      dist/preview release/materialsLibrary/babylon.normalMaterial.js
  16. 1 1
      dist/preview release/materialsLibrary/babylon.normalMaterial.min.js
  17. 20 3
      dist/preview release/materialsLibrary/babylon.shadowOnlyMaterial.js
  18. 1 1
      dist/preview release/materialsLibrary/babylon.shadowOnlyMaterial.min.js
  19. 20 3
      dist/preview release/materialsLibrary/babylon.simpleMaterial.js
  20. 1 1
      dist/preview release/materialsLibrary/babylon.simpleMaterial.min.js
  21. 20 3
      dist/preview release/materialsLibrary/babylon.terrainMaterial.js
  22. 1 1
      dist/preview release/materialsLibrary/babylon.terrainMaterial.min.js
  23. 20 3
      dist/preview release/materialsLibrary/babylon.triPlanarMaterial.js
  24. 1 1
      dist/preview release/materialsLibrary/babylon.triPlanarMaterial.min.js
  25. 20 3
      dist/preview release/materialsLibrary/babylon.waterMaterial.js
  26. 1 1
      dist/preview release/materialsLibrary/babylon.waterMaterial.min.js
  27. 20 3
      materialsLibrary/src/fur/babylon.furMaterial.ts
  28. 31 16
      materialsLibrary/src/gradient/babylon.gradientMaterial.ts
  29. 31 16
      materialsLibrary/src/normal/babylon.normalMaterial.ts
  30. 21 4
      materialsLibrary/src/shadowOnly/babylon.shadowOnlyMaterial.ts
  31. 1 1
      materialsLibrary/src/shadowOnly/shadowOnly.fragment.fx
  32. 21 4
      materialsLibrary/src/terrain/babylon.terrainMaterial.ts
  33. 21 4
      materialsLibrary/src/triPlanar/babylon.triPlanarMaterial.ts

Разница между файлами не показана из-за своего большого размера
+ 3 - 3
dist/preview release/babylon.core.js


Разница между файлами не показана из-за своего большого размера
+ 3642 - 3642
dist/preview release/babylon.d.ts


Разница между файлами не показана из-за своего большого размера
+ 3 - 3
dist/preview release/babylon.js


+ 8 - 8
dist/preview release/babylon.max.js

@@ -31242,7 +31242,7 @@ var BABYLON;
                 }
                 // Shadows
                 if (scene.shadowsEnabled) {
-                    depthValuesAlreadySet = this.BindLightShadow(light, scene, mesh, lightIndex, effect, depthValuesAlreadySet, disableUbo);
+                    depthValuesAlreadySet = this.BindLightShadow(light, scene, mesh, lightIndex, effect, depthValuesAlreadySet);
                 }
                 light._uniformBuffer.update();
                 lightIndex++;
@@ -31737,11 +31737,17 @@ var BABYLON;
             if (this.getScene().getEngine().webGLVersion === 1) {
                 effect.setMatrix("view", this.getScene().getViewMatrix());
             }
+            else {
+                this.bindSceneUniformBuffer(effect, this.getScene().getSceneUniformBuffer());
+            }
         };
         Material.prototype.bindViewProjection = function (effect) {
             if (this.getScene().getEngine().webGLVersion === 1) {
                 effect.setMatrix("viewProjection", this.getScene().getTransformMatrix());
             }
+            else {
+                this.bindSceneUniformBuffer(effect, this.getScene().getSceneUniformBuffer());
+            }
         };
         Material.prototype._afterBind = function (mesh) {
             this._scene._cachedMaterial = this;
@@ -32519,12 +32525,6 @@ var BABYLON;
                     defines: defines,
                     maxSimultaneousLights: this._maxSimultaneousLights
                 });
-                var onCompiled = function (effect) {
-                    if (this.onCompiled) {
-                        this.onCompiled(effect);
-                    }
-                    this.bindSceneUniformBuffer(effect, scene.getSceneUniformBuffer());
-                }.bind(this);
                 subMesh.setEffect(scene.getEngine().createEffect(shaderName, {
                     attributes: attribs,
                     uniformsNames: uniforms,
@@ -32532,7 +32532,7 @@ var BABYLON;
                     samplers: samplers,
                     defines: join,
                     fallbacks: fallbacks,
-                    onCompiled: onCompiled,
+                    onCompiled: this.onCompiled,
                     onError: this.onError,
                     indexParameters: { maxSimultaneousLights: this._maxSimultaneousLights, maxSimultaneousMorphTargets: defines.NUM_MORPH_INFLUENCERS }
                 }, engine), defines);

Разница между файлами не показана из-за своего большого размера
+ 3642 - 3642
dist/preview release/babylon.module.d.ts


Разница между файлами не показана из-за своего большого размера
+ 3 - 3
dist/preview release/babylon.noworker.js


+ 20 - 11
dist/preview release/materialsLibrary/babylon.fireMaterial.js

@@ -121,17 +121,26 @@ var BABYLON;
                 // Legacy browser patch
                 var shaderName = "fire";
                 var join = defines.toString();
-                subMesh.setEffect(scene.getEngine().createEffect(shaderName, attribs, ["world", "view", "viewProjection", "vEyePosition",
-                    "vFogInfos", "vFogColor", "pointSize",
-                    "vDiffuseInfos",
-                    "mBones",
-                    "vClipPlane", "diffuseMatrix",
-                    // Fire
-                    "time", "speed"
-                ], ["diffuseSampler",
-                    // Fire
-                    "distortionSampler", "opacitySampler"
-                ], join, fallbacks, this.onCompiled, this.onError), defines);
+                subMesh.setEffect(scene.getEngine().createEffect(shaderName, {
+                    attributes: attribs,
+                    uniformsNames: ["world", "view", "viewProjection", "vEyePosition",
+                        "vFogInfos", "vFogColor", "pointSize",
+                        "vDiffuseInfos",
+                        "mBones",
+                        "vClipPlane", "diffuseMatrix",
+                        // Fire
+                        "time", "speed"
+                    ],
+                    uniformBuffersNames: [],
+                    samplers: ["diffuseSampler",
+                        // Fire
+                        "distortionSampler", "opacitySampler"
+                    ],
+                    defines: join,
+                    fallbacks: fallbacks,
+                    onCompiled: this.onCompiled,
+                    onError: this.onError
+                }, engine), defines);
             }
             if (!subMesh.effect.isReady()) {
                 return false;

Разница между файлами не показана из-за своего большого размера
+ 1 - 1
dist/preview release/materialsLibrary/babylon.fireMaterial.min.js


Разница между файлами не показана из-за своего большого размера
+ 20 - 3
dist/preview release/materialsLibrary/babylon.furMaterial.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 1
dist/preview release/materialsLibrary/babylon.furMaterial.min.js


Разница между файлами не показана из-за своего большого размера
+ 30 - 14
dist/preview release/materialsLibrary/babylon.gradientMaterial.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 1
dist/preview release/materialsLibrary/babylon.gradientMaterial.min.js


Разница между файлами не показана из-за своего большого размера
+ 32 - 16
dist/preview release/materialsLibrary/babylon.lavaMaterial.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 1
dist/preview release/materialsLibrary/babylon.lavaMaterial.min.js


Разница между файлами не показана из-за своего большого размера
+ 30 - 14
dist/preview release/materialsLibrary/babylon.normalMaterial.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 1
dist/preview release/materialsLibrary/babylon.normalMaterial.min.js


Разница между файлами не показана из-за своего большого размера
+ 20 - 3
dist/preview release/materialsLibrary/babylon.shadowOnlyMaterial.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 1
dist/preview release/materialsLibrary/babylon.shadowOnlyMaterial.min.js


Разница между файлами не показана из-за своего большого размера
+ 20 - 3
dist/preview release/materialsLibrary/babylon.simpleMaterial.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 1
dist/preview release/materialsLibrary/babylon.simpleMaterial.min.js


Разница между файлами не показана из-за своего большого размера
+ 20 - 3
dist/preview release/materialsLibrary/babylon.terrainMaterial.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 1
dist/preview release/materialsLibrary/babylon.terrainMaterial.min.js


Разница между файлами не показана из-за своего большого размера
+ 20 - 3
dist/preview release/materialsLibrary/babylon.triPlanarMaterial.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 1
dist/preview release/materialsLibrary/babylon.triPlanarMaterial.min.js


Разница между файлами не показана из-за своего большого размера
+ 20 - 3
dist/preview release/materialsLibrary/babylon.waterMaterial.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 1
dist/preview release/materialsLibrary/babylon.waterMaterial.min.js


+ 20 - 3
materialsLibrary/src/fur/babylon.furMaterial.ts

@@ -246,11 +246,28 @@ module BABYLON {
                     "heightTexture", "furTexture"
                 ];
                 
-                MaterialHelper.PrepareUniformsAndSamplersList(uniforms, samplers, defines, this.maxSimultaneousLights);
+                var uniformBuffers = [];
+
+                MaterialHelper.PrepareUniformsAndSamplersList(<EffectCreationOptions>{
+                    uniformsNames: uniforms, 
+                    uniformBuffersNames: uniformBuffers,
+                    samplers: samplers, 
+                    defines: defines, 
+                    maxSimultaneousLights: this.maxSimultaneousLights
+                });
                 
                 subMesh.setEffect(scene.getEngine().createEffect(shaderName,
-                    attribs, uniforms, samplers,
-                    join, fallbacks, this.onCompiled, this.onError, { maxSimultaneousLights: this.maxSimultaneousLights }), defines);
+                    <EffectCreationOptions>{
+                        attributes: attribs,
+                        uniformsNames: uniforms,
+                        uniformBuffersNames: uniformBuffers,
+                        samplers: samplers,
+                        defines: join,
+                        fallbacks: fallbacks,
+                        onCompiled: this.onCompiled,
+                        onError: this.onError,
+                        indexParameters: { maxSimultaneousLights: this.maxSimultaneousLights }
+                    }, engine), defines);
             }
             if (!subMesh.effect.isReady()) {
                 return false;

+ 31 - 16
materialsLibrary/src/gradient/babylon.gradientMaterial.ts

@@ -182,23 +182,38 @@ module BABYLON {
                 // Legacy browser patch
                 var shaderName = "gradient";
                 var join = defines.toString();
+
+                var uniformBuffers = [];
+                for (var i = 0; i < 4; i++) {
+                    if (defines["LIGHT" + i]) {
+                        uniformBuffers.push("Light" + i);
+                    }
+                }
+                
                 subMesh.setEffect(scene.getEngine().createEffect(shaderName,
-                    attribs,
-                    ["world", "view", "viewProjection", "vEyePosition", "vLightsType", "vDiffuseColor",
-                        "vLightData0", "vLightDiffuse0","vLightDirection0", "vLightGround0", "lightMatrix0",
-                        "vLightData1", "vLightDiffuse1", "vLightDirection1", "vLightGround1", "lightMatrix1",
-                        "vLightData2", "vLightDiffuse2", "vLightDirection2", "vLightGround2", "lightMatrix2",
-                        "vLightData3", "vLightDiffuse3", "vLightDirection3", "vLightGround3", "lightMatrix3",
-                        "vFogInfos", "vFogColor", "pointSize",
-                        "vDiffuseInfos", 
-                        "mBones",
-                        "vClipPlane", "diffuseMatrix",
-                        "shadowsInfo0", "shadowsInfo1", "shadowsInfo2", "shadowsInfo3", "depthValues", "topColor", "bottomColor", "offset", "smoothness"
-                    ],
-                    ["diffuseSampler",
-                        "shadowSampler0", "shadowSampler1", "shadowSampler2", "shadowSampler3"
-                    ],
-                    join, fallbacks, this.onCompiled, this.onError, { maxSimultaneousLights: 4 }), defines);
+                    <EffectCreationOptions>{
+                        attributes: attribs,
+                        uniformsNames: ["world", "view", "viewProjection", "vEyePosition", "vLightsType", "vDiffuseColor",
+                            "vLightData0", "vLightDiffuse0","vLightDirection0", "vLightGround0", "lightMatrix0",
+                            "vLightData1", "vLightDiffuse1", "vLightDirection1", "vLightGround1", "lightMatrix1",
+                            "vLightData2", "vLightDiffuse2", "vLightDirection2", "vLightGround2", "lightMatrix2",
+                            "vLightData3", "vLightDiffuse3", "vLightDirection3", "vLightGround3", "lightMatrix3",
+                            "vFogInfos", "vFogColor", "pointSize",
+                            "vDiffuseInfos", 
+                            "mBones",
+                            "vClipPlane", "diffuseMatrix",
+                            "shadowsInfo0", "shadowsInfo1", "shadowsInfo2", "shadowsInfo3", "depthValues", "topColor", "bottomColor", "offset", "smoothness"
+                        ],
+                        uniformBuffersNames: uniformBuffers,
+                        samplers: ["diffuseSampler",
+                            "shadowSampler0", "shadowSampler1", "shadowSampler2", "shadowSampler3"
+                        ],
+                        defines: join,
+                        fallbacks: fallbacks,
+                        onCompiled: this.onCompiled,
+                        onError: this.onError,
+                        indexParameters: { maxSimultaneousLights: 4 }
+                    }, engine), defines);
             }
             if (!subMesh.effect.isReady()) {
                 return false;

+ 31 - 16
materialsLibrary/src/normal/babylon.normalMaterial.ts

@@ -186,23 +186,38 @@ module BABYLON {
 
                 var shaderName = "normal";
                 var join = defines.toString();
+
+                var uniformBuffers = [];
+                for (var i = 0; i < 4; i++) {
+                    if (defines["LIGHT" + i]) {
+                        uniformBuffers.push("Light" + i);
+                    }
+                }
+
                 subMesh.setEffect(scene.getEngine().createEffect(shaderName,
-                    attribs,
-                    ["world", "view", "viewProjection", "vEyePosition", "vLightsType", "vDiffuseColor",
-                        "vLightData0", "vLightDiffuse0", "vLightDirection0", "vLightGround0", "lightMatrix0",
-                        "vLightData1", "vLightDiffuse1", "vLightDirection1", "vLightGround1", "lightMatrix1",
-                        "vLightData2", "vLightDiffuse2", "vLightDirection2", "vLightGround2", "lightMatrix2",
-                        "vLightData3", "vLightDiffuse3", "vLightDirection3", "vLightGround3", "lightMatrix3",
-                        "vFogInfos", "vFogColor", "pointSize",
-                        "vDiffuseInfos", 
-                        "mBones",
-                        "vClipPlane", "diffuseMatrix",
-                        "shadowsInfo0", "shadowsInfo1", "shadowsInfo2", "shadowsInfo3", "depthValues"
-                    ],
-                    ["diffuseSampler",
-                        "shadowSampler0", "shadowSampler1", "shadowSampler2", "shadowSampler3"
-                    ],
-                    join, fallbacks, this.onCompiled, this.onError, { maxSimultaneousLights: 4 }), defines);
+                    <EffectCreationOptions>{
+                        attributes: attribs,
+                        uniformsNames: ["world", "view", "viewProjection", "vEyePosition", "vLightsType", "vDiffuseColor",
+                            "vLightData0", "vLightDiffuse0", "vLightDirection0", "vLightGround0", "lightMatrix0",
+                            "vLightData1", "vLightDiffuse1", "vLightDirection1", "vLightGround1", "lightMatrix1",
+                            "vLightData2", "vLightDiffuse2", "vLightDirection2", "vLightGround2", "lightMatrix2",
+                            "vLightData3", "vLightDiffuse3", "vLightDirection3", "vLightGround3", "lightMatrix3",
+                            "vFogInfos", "vFogColor", "pointSize",
+                            "vDiffuseInfos", 
+                            "mBones",
+                            "vClipPlane", "diffuseMatrix",
+                            "shadowsInfo0", "shadowsInfo1", "shadowsInfo2", "shadowsInfo3", "depthValues"
+                        ],
+                        uniformBuffersNames: uniformBuffers,
+                        samplers: ["diffuseSampler",
+                            "shadowSampler0", "shadowSampler1", "shadowSampler2", "shadowSampler3"
+                        ],
+                        defines: join,
+                        fallbacks: fallbacks,
+                        onCompiled: this.onCompiled,
+                        onError: this.onError,
+                        indexParameters: { maxSimultaneousLights: 4 }
+                    }, engine), defines);
             }
             if (!subMesh.effect.isReady()) {
                 return false;

+ 21 - 4
materialsLibrary/src/shadowOnly/babylon.shadowOnlyMaterial.ts

@@ -107,12 +107,29 @@ module BABYLON {
                                 "vClipPlane", "depthValues"
                 ];
                 var samplers = [];
-                    
-                MaterialHelper.PrepareUniformsAndSamplersList(uniforms, samplers, defines, 1);
+                
+                var uniformBuffers = [];
+
+                MaterialHelper.PrepareUniformsAndSamplersList(<EffectCreationOptions>{
+                    uniformsNames: uniforms, 
+                    uniformBuffersNames: uniformBuffers,
+                    samplers: samplers, 
+                    defines: defines, 
+                    maxSimultaneousLights: 1
+                });
                 
                 subMesh.setEffect(scene.getEngine().createEffect(shaderName,
-                    attribs, uniforms, samplers,
-                    join, fallbacks, this.onCompiled, this.onError, {maxSimultaneousLights: 1}), defines);
+                    <EffectCreationOptions>{
+                        attributes: attribs,
+                        uniformsNames: uniforms,
+                        uniformBuffersNames: uniformBuffers,
+                        samplers: samplers,
+                        defines: join,
+                        fallbacks: fallbacks,
+                        onCompiled: this.onCompiled,
+                        onError: this.onError,
+                        indexParameters: { maxSimultaneousLights: 1 }
+                    }, engine), defines);
             }
             if (!subMesh.effect.isReady()) {
                 return false;

+ 1 - 1
materialsLibrary/src/shadowOnly/shadowOnly.fragment.fx

@@ -11,7 +11,7 @@ varying vec3 vNormalW;
 #endif
 
 // Lights
-#include<lightFragmentDeclaration>[0..maxSimultaneousLights]
+#include<__decl__lightFragment>[0..maxSimultaneousLights]
 
 #include<lightsFragmentFunctions>
 #include<shadowsFragmentFunctions>

+ 21 - 4
materialsLibrary/src/terrain/babylon.terrainMaterial.ts

@@ -204,12 +204,29 @@ module BABYLON {
                 var samplers = ["textureSampler", "diffuse1Sampler", "diffuse2Sampler", "diffuse3Sampler",
                     "bump1Sampler", "bump2Sampler", "bump3Sampler"
                 ];
-                
-                MaterialHelper.PrepareUniformsAndSamplersList(uniforms, samplers, defines, this.maxSimultaneousLights);
+
+                var uniformBuffers = [];
+
+                MaterialHelper.PrepareUniformsAndSamplersList(<EffectCreationOptions>{
+                    uniformsNames: uniforms, 
+                    uniformBuffersNames: uniformBuffers,
+                    samplers: samplers, 
+                    defines: defines, 
+                    maxSimultaneousLights: this.maxSimultaneousLights
+                });
                 
                 subMesh.setEffect(scene.getEngine().createEffect(shaderName,
-                    attribs, uniforms, samplers,
-                    join, fallbacks, this.onCompiled, this.onError, { maxSimultaneousLights: this.maxSimultaneousLights }), defines);
+                    <EffectCreationOptions>{
+                        attributes: attribs,
+                        uniformsNames: uniforms,
+                        uniformBuffersNames: uniformBuffers,
+                        samplers: samplers,
+                        defines: join,
+                        fallbacks: fallbacks,
+                        onCompiled: this.onCompiled,
+                        onError: this.onError,
+                        indexParameters: { maxSimultaneousLights: this.maxSimultaneousLights }
+                    }, engine), defines);
             }
             if (!subMesh.effect.isReady()) {
                 return false;

+ 21 - 4
materialsLibrary/src/triPlanar/babylon.triPlanarMaterial.ts

@@ -215,12 +215,29 @@ module BABYLON {
                 var samplers = ["diffuseSamplerX", "diffuseSamplerY", "diffuseSamplerZ",
                     "normalSamplerX", "normalSamplerY", "normalSamplerZ"
                 ];
-                
-                MaterialHelper.PrepareUniformsAndSamplersList(uniforms, samplers, defines, this.maxSimultaneousLights);
+
+                var uniformBuffers = [];
+
+                MaterialHelper.PrepareUniformsAndSamplersList(<EffectCreationOptions>{
+                    uniformsNames: uniforms, 
+                    uniformBuffersNames: uniformBuffers,
+                    samplers: samplers, 
+                    defines: defines, 
+                    maxSimultaneousLights: this.maxSimultaneousLights
+                });
                 
                 subMesh.setEffect(scene.getEngine().createEffect(shaderName,
-                    attribs, uniforms, samplers,
-                    join, fallbacks, this.onCompiled, this.onError, { maxSimultaneousLights: this.maxSimultaneousLights }), defines);
+                    <EffectCreationOptions>{
+                        attributes: attribs,
+                        uniformsNames: uniforms,
+                        uniformBuffersNames: uniformBuffers,
+                        samplers: samplers,
+                        defines: join,
+                        fallbacks: fallbacks,
+                        onCompiled: this.onCompiled,
+                        onError: this.onError,
+                        indexParameters: { maxSimultaneousLights: this.maxSimultaneousLights }
+                    }, engine), defines);
             }
             if (!subMesh.effect.isReady()) {
                 return false;