| 1 |
- var BABYLON;!function(e){var i=4,n=function(e){function i(){e.call(this),this.DIFFUSE=!1,this.CLIPPLANE=!1,this.ALPHATEST=!1,this.POINTSIZE=!1,this.FOG=!1,this.LIGHT0=!1,this.LIGHT1=!1,this.LIGHT2=!1,this.LIGHT3=!1,this.SPOTLIGHT0=!1,this.SPOTLIGHT1=!1,this.SPOTLIGHT2=!1,this.SPOTLIGHT3=!1,this.HEMILIGHT0=!1,this.HEMILIGHT1=!1,this.HEMILIGHT2=!1,this.HEMILIGHT3=!1,this.DIRLIGHT0=!1,this.DIRLIGHT1=!1,this.DIRLIGHT2=!1,this.DIRLIGHT3=!1,this.POINTLIGHT0=!1,this.POINTLIGHT1=!1,this.POINTLIGHT2=!1,this.POINTLIGHT3=!1,this.SHADOW0=!1,this.SHADOW1=!1,this.SHADOW2=!1,this.SHADOW3=!1,this.SHADOWS=!1,this.SHADOWVSM0=!1,this.SHADOWVSM1=!1,this.SHADOWVSM2=!1,this.SHADOWVSM3=!1,this.SHADOWPCF0=!1,this.SHADOWPCF1=!1,this.SHADOWPCF2=!1,this.SHADOWPCF3=!1,this.NORMAL=!1,this.UV1=!1,this.UV2=!1,this.VERTEXCOLOR=!1,this.VERTEXALPHA=!1,this.NUM_BONE_INFLUENCERS=0,this.BonesPerMesh=0,this.INSTANCES=!1,this._keys=Object.keys(this)}return __extends(i,e),i}(e.MaterialDefines),t=function(t){function r(i,r){t.call(this,i,r),this.diffuseColor=new e.Color3(1,1,1),this.disableLighting=!1,this._worldViewProjectionMatrix=e.Matrix.Zero(),this._scaledDiffuse=new e.Color3,this._defines=new n,this._cachedDefines=new n,this._cachedDefines.BonesPerMesh=-1}return __extends(r,t),r.prototype.needAlphaBlending=function(){return this.alpha<1},r.prototype.needAlphaTesting=function(){return!1},r.prototype.getAlphaTestTexture=function(){return null},r.prototype._checkCache=function(e,i,n){return i?this._defines.INSTANCES!==n?!1:i._materialDefines&&i._materialDefines.isEqual(this._defines)?!0:!1:!0},r.prototype.isReady=function(t,r){if(this.checkReadyOnlyOnce&&this._wasPreviouslyReady)return!0;var s=this.getScene();if(!this.checkReadyOnEveryCall&&this._renderId===s.getRenderId()&&this._checkCache(s,t,r))return!0;var f=s.getEngine(),a=!1,o=!1;if(this._defines.reset(),s.texturesEnabled&&this.diffuseTexture&&e.StandardMaterial.DiffuseTextureEnabled){if(!this.diffuseTexture.isReady())return!1;o=!0,this._defines.DIFFUSE=!0}s.clipPlane&&(this._defines.CLIPPLANE=!0),f.getAlphaTesting()&&(this._defines.ALPHATEST=!0),(this.pointsCloud||s.forcePointsCloud)&&(this._defines.POINTSIZE=!0),s.fogEnabled&&t&&t.applyFog&&s.fogMode!==e.Scene.FOGMODE_NONE&&this.fogEnabled&&(this._defines.FOG=!0);var d=0;if(s.lightsEnabled&&!this.disableLighting)for(var h=0;h<s.lights.length;h++){var l=s.lights[h];if(l.isEnabled()){if(l._excludedMeshesIds.length>0){for(var c=0;c<l._excludedMeshesIds.length;c++){var u=s.getMeshByID(l._excludedMeshesIds[c]);u&&l.excludedMeshes.push(u)}l._excludedMeshesIds=[]}if(l._includedOnlyMeshesIds.length>0){for(var g=0;g<l._includedOnlyMeshesIds.length;g++){var v=s.getMeshByID(l._includedOnlyMeshesIds[g]);v&&l.includedOnlyMeshes.push(v)}l._includedOnlyMeshesIds=[]}if(l.canAffectMesh(t)){a=!0,this._defines["LIGHT"+d]=!0;var p;if(p=l instanceof e.SpotLight?"SPOTLIGHT"+d:l instanceof e.HemisphericLight?"HEMILIGHT"+d:l instanceof e.PointLight?"POINTLIGHT"+d:"DIRLIGHT"+d,this._defines[p]=!0,s.shadowsEnabled){var S=l.getShadowGenerator();t&&t.receiveShadows&&S&&(this._defines["SHADOW"+d]=!0,this._defines.SHADOWS=!0,(S.useVarianceShadowMap||S.useBlurVarianceShadowMap)&&(this._defines["SHADOWVSM"+d]=!0),S.usePoissonSampling&&(this._defines["SHADOWPCF"+d]=!0))}if(d++,d===i)break}}}if(t&&(a&&t.isVerticesDataPresent(e.VertexBuffer.NormalKind)&&(this._defines.NORMAL=!0),o&&(t.isVerticesDataPresent(e.VertexBuffer.UVKind)&&(this._defines.UV1=!0),t.isVerticesDataPresent(e.VertexBuffer.UV2Kind)&&(this._defines.UV2=!0)),t.useVertexColors&&t.isVerticesDataPresent(e.VertexBuffer.ColorKind)&&(this._defines.VERTEXCOLOR=!0,t.hasVertexAlpha&&(this._defines.VERTEXALPHA=!0)),t.useBones&&t.computeBonesUsingShaders&&(this._defines.NUM_BONE_INFLUENCERS=t.numBoneInfluencers,this._defines.BonesPerMesh=t.skeleton.bones.length+1),r&&(this._defines.INSTANCES=!0)),!this._defines.isEqual(this._cachedDefines)){this._defines.cloneTo(this._cachedDefines),s.resetCachedMaterial();var L=new e.EffectFallbacks;for(this._defines.FOG&&L.addFallback(1,"FOG"),d=0;i>d;d++)this._defines["LIGHT"+d]&&(d>0&&L.addFallback(d,"LIGHT"+d),this._defines["SHADOW"+d]&&L.addFallback(0,"SHADOW"+d),this._defines["SHADOWPCF"+d]&&L.addFallback(0,"SHADOWPCF"+d),this._defines["SHADOWVSM"+d]&&L.addFallback(0,"SHADOWVSM"+d));this._defines.NUM_BONE_INFLUENCERS>0&&L.addCPUSkinningFallback(0,t);var _=[e.VertexBuffer.PositionKind];this._defines.NORMAL&&_.push(e.VertexBuffer.NormalKind),this._defines.UV1&&_.push(e.VertexBuffer.UVKind),this._defines.UV2&&_.push(e.VertexBuffer.UV2Kind),this._defines.VERTEXCOLOR&&_.push(e.VertexBuffer.ColorKind),this._defines.NUM_BONE_INFLUENCERS>0&&(_.push(e.VertexBuffer.MatricesIndicesKind),_.push(e.VertexBuffer.MatricesWeightsKind),this._defines.NUM_BONE_INFLUENCERS>4&&(_.push(e.VertexBuffer.MatricesIndicesExtraKind),_.push(e.VertexBuffer.MatricesWeightsExtraKind))),this._defines.INSTANCES&&(_.push("world0"),_.push("world1"),_.push("world2"),_.push("world3"));var D="simple",T=this._defines.toString();this._effect=s.getEngine().createEffect(D,_,["world","view","viewProjection","vEyePosition","vLightsType","vDiffuseColor","vLightData0","vLightDiffuse0","vLightSpecular0","vLightDirection0","vLightGround0","lightMatrix0","vLightData1","vLightDiffuse1","vLightSpecular1","vLightDirection1","vLightGround1","lightMatrix1","vLightData2","vLightDiffuse2","vLightSpecular2","vLightDirection2","vLightGround2","lightMatrix2","vLightData3","vLightDiffuse3","vLightSpecular3","vLightDirection3","vLightGround3","lightMatrix3","vFogInfos","vFogColor","pointSize","vDiffuseInfos","mBones","vClipPlane","diffuseMatrix","shadowsInfo0","shadowsInfo1","shadowsInfo2","shadowsInfo3","depthValues"],["diffuseSampler","shadowSampler0","shadowSampler1","shadowSampler2","shadowSampler3"],T,L,this.onCompiled,this.onError)}return this._effect.isReady()?(this._renderId=s.getRenderId(),this._wasPreviouslyReady=!0,t&&(t._materialDefines||(t._materialDefines=new n),this._defines.cloneTo(t._materialDefines)),!0):!1},r.prototype.bindOnlyWorldMatrix=function(e){this._effect.setMatrix("world",e)},r.prototype.bind=function(n,r){var s=this.getScene();if(this.bindOnlyWorldMatrix(n),this._effect.setMatrix("viewProjection",s.getTransformMatrix()),r&&r.useBones&&r.computeBonesUsingShaders&&this._effect.setMatrices("mBones",r.skeleton.getTransformMatrices(r)),s.getCachedMaterial()!==this){if(this.diffuseTexture&&e.StandardMaterial.DiffuseTextureEnabled&&(this._effect.setTexture("diffuseSampler",this.diffuseTexture),this._effect.setFloat2("vDiffuseInfos",this.diffuseTexture.coordinatesIndex,this.diffuseTexture.level),this._effect.setMatrix("diffuseMatrix",this.diffuseTexture.getTextureMatrix())),s.clipPlane){var f=s.clipPlane;this._effect.setFloat4("vClipPlane",f.normal.x,f.normal.y,f.normal.z,f.d)}this.pointsCloud&&this._effect.setFloat("pointSize",this.pointSize),this._effect.setVector3("vEyePosition",s._mirroredCameraPosition?s._mirroredCameraPosition:s.activeCamera.position)}if(this._effect.setColor4("vDiffuseColor",this._scaledDiffuse,this.alpha*r.visibility),s.lightsEnabled&&!this.disableLighting)for(var a=0,o=!1,d=0;d<s.lights.length;d++){var h=s.lights[d];if(h.isEnabled()&&h.canAffectMesh(r)){if(h instanceof e.PointLight?h.transferToEffect(this._effect,"vLightData"+a):h instanceof e.DirectionalLight?h.transferToEffect(this._effect,"vLightData"+a):h instanceof e.SpotLight?h.transferToEffect(this._effect,"vLightData"+a,"vLightDirection"+a):h instanceof e.HemisphericLight&&h.transferToEffect(this._effect,"vLightData"+a,"vLightGround"+a),h.diffuse.scaleToRef(h.intensity,this._scaledDiffuse),this._effect.setColor4("vLightDiffuse"+a,this._scaledDiffuse,h.range),s.shadowsEnabled){var l=h.getShadowGenerator();r.receiveShadows&&l&&(h.needCube()?o||(o=!0,this._effect.setFloat2("depthValues",s.activeCamera.minZ,s.activeCamera.maxZ)):this._effect.setMatrix("lightMatrix"+a,l.getTransformMatrix()),this._effect.setTexture("shadowSampler"+a,l.getShadowMapForRendering()),this._effect.setFloat3("shadowsInfo"+a,l.getDarkness(),l.blurScale/l.getShadowMap().getSize().width,l.bias))}if(a++,a===i)break}}s.fogEnabled&&r.applyFog&&s.fogMode!==e.Scene.FOGMODE_NONE&&this._effect.setMatrix("view",s.getViewMatrix()),s.fogEnabled&&r.applyFog&&s.fogMode!==e.Scene.FOGMODE_NONE&&(this._effect.setFloat4("vFogInfos",s.fogMode,s.fogStart,s.fogEnd,s.fogDensity),this._effect.setColor3("vFogColor",s.fogColor)),t.prototype.bind.call(this,n,r)},r.prototype.getAnimatables=function(){var e=[];return this.diffuseTexture&&this.diffuseTexture.animations&&this.diffuseTexture.animations.length>0&&e.push(this.diffuseTexture),e},r.prototype.dispose=function(e){this.diffuseTexture&&this.diffuseTexture.dispose(),t.prototype.dispose.call(this,e)},r.prototype.clone=function(e){var i=new r(e,this.getScene());return this.copyTo(i),this.diffuseTexture&&this.diffuseTexture.clone&&(i.diffuseTexture=this.diffuseTexture.clone()),i.diffuseColor=this.diffuseColor.clone(),i},r.prototype.serialize=function(){var e=t.prototype.serialize.call(this);return e.customType="BABYLON.SimpleMaterial",e.diffuseColor=this.diffuseColor.asArray(),e.disableLighting=this.disableLighting,this.diffuseTexture&&(e.diffuseTexture=this.diffuseTexture.serialize()),e},r.Parse=function(i,n,t){var s=new r(i.name,n);return s.diffuseColor=e.Color3.FromArray(i.diffuseColor),s.disableLighting=i.disableLighting,s.alpha=i.alpha,s.id=i.id,e.Tags.AddTagsTo(s,i.tags),s.backFaceCulling=i.backFaceCulling,s.wireframe=i.wireframe,i.diffuseTexture&&(s.diffuseTexture=e.Texture.Parse(i.diffuseTexture,n,t)),i.checkReadyOnlyOnce&&(s.checkReadyOnlyOnce=i.checkReadyOnlyOnce),s},r}(e.Material);e.SimpleMaterial=t}(BABYLON||(BABYLON={})),BABYLON.Effect.ShadersStore.simpleVertexShader="precision highp float;\r\n\r\n// Attributes\r\nattribute vec3 position;\r\n#ifdef NORMAL\r\nattribute vec3 normal;\r\n#endif\r\n#ifdef UV1\r\nattribute vec2 uv;\r\n#endif\r\n#ifdef UV2\r\nattribute vec2 uv2;\r\n#endif\r\n#ifdef VERTEXCOLOR\r\nattribute vec4 color;\r\n#endif\r\n\r\n#include<bonesDeclaration>\r\n\r\n// Uniforms\r\n#include<instancesDeclaration>\r\n\r\nuniform mat4 view;\r\nuniform mat4 viewProjection;\r\n\r\n#ifdef DIFFUSE\r\nvarying vec2 vDiffuseUV;\r\nuniform mat4 diffuseMatrix;\r\nuniform vec2 vDiffuseInfos;\r\n#endif\r\n\r\n#ifdef POINTSIZE\r\nuniform float pointSize;\r\n#endif\r\n\r\n// Output\r\nvarying vec3 vPositionW;\r\n#ifdef NORMAL\r\nvarying vec3 vNormalW;\r\n#endif\r\n\r\n#ifdef VERTEXCOLOR\r\nvarying vec4 vColor;\r\n#endif\r\n\r\n#ifdef CLIPPLANE\r\nuniform vec4 vClipPlane;\r\nvarying float fClipDistance;\r\n#endif\r\n\r\n#include<fogVertexDeclaration>\r\n#include<shadowsVertexDeclaration>\r\n\r\nvoid main(void) {\r\n\r\n#include<instancesVertex>\r\n#include<bonesVertex>\r\n\r\n gl_Position = viewProjection * finalWorld * vec4(position, 1.0);\r\n\r\n vec4 worldPos = finalWorld * vec4(position, 1.0);\r\n vPositionW = vec3(worldPos);\r\n\r\n#ifdef NORMAL\r\n vNormalW = normalize(vec3(finalWorld * vec4(normal, 0.0)));\r\n#endif\r\n\r\n // Texture coordinates\r\n#ifndef UV1\r\n vec2 uv = vec2(0., 0.);\r\n#endif\r\n#ifndef UV2\r\n vec2 uv2 = vec2(0., 0.);\r\n#endif\r\n\r\n#ifdef DIFFUSE\r\n if (vDiffuseInfos.x == 0.)\r\n {\r\n vDiffuseUV = vec2(diffuseMatrix * vec4(uv, 1.0, 0.0));\r\n }\r\n else\r\n {\r\n vDiffuseUV = vec2(diffuseMatrix * vec4(uv2, 1.0, 0.0));\r\n }\r\n#endif\r\n\r\n // Clip plane\r\n#ifdef CLIPPLANE\r\n fClipDistance = dot(worldPos, vClipPlane);\r\n#endif\r\n\r\n // Fog\r\n#include<fogVertex>\r\n#include<shadowsVertex>\r\n\r\n // Vertex color\r\n#ifdef VERTEXCOLOR\r\n vColor = color;\r\n#endif\r\n\r\n // Point size\r\n#ifdef POINTSIZE\r\n gl_PointSize = pointSize;\r\n#endif\r\n}\r\n",BABYLON.Effect.ShadersStore.simplePixelShader="precision highp float;\r\n\r\n// Constants\r\nuniform vec3 vEyePosition;\r\nuniform vec4 vDiffuseColor;\r\n\r\n// Input\r\nvarying vec3 vPositionW;\r\n\r\n#ifdef NORMAL\r\nvarying vec3 vNormalW;\r\n#endif\r\n\r\n#ifdef VERTEXCOLOR\r\nvarying vec4 vColor;\r\n#endif\r\n\r\n// Lights\r\n#include<light0FragmentDeclaration>\r\n#include<light1FragmentDeclaration>\r\n#include<light2FragmentDeclaration>\r\n#include<light3FragmentDeclaration>\r\n\r\n\r\n#include<lightsFragmentFunctions>\r\n#include<shadowsFragmentFunctions>\r\n\r\n// Samplers\r\n#ifdef DIFFUSE\r\nvarying vec2 vDiffuseUV;\r\nuniform sampler2D diffuseSampler;\r\nuniform vec2 vDiffuseInfos;\r\n\r\n#endif\r\n\r\n#ifdef CLIPPLANE\r\nvarying float fClipDistance;\r\n#endif\r\n\r\n// Fog\r\n#include<fogFragmentDeclaration>\r\n\r\nvoid main(void) {\r\n // Clip plane\r\n#ifdef CLIPPLANE\r\n if (fClipDistance > 0.0)\r\n discard;\r\n#endif\r\n\r\n vec3 viewDirectionW = normalize(vEyePosition - vPositionW);\r\n\r\n // Base color\r\n vec4 baseColor = vec4(1., 1., 1., 1.);\r\n vec3 diffuseColor = vDiffuseColor.rgb;\r\n\r\n // Alpha\r\n float alpha = vDiffuseColor.a;\r\n\r\n#ifdef DIFFUSE\r\n baseColor = texture2D(diffuseSampler, vDiffuseUV);\r\n\r\n#ifdef ALPHATEST\r\n if (baseColor.a < 0.4)\r\n discard;\r\n#endif\r\n\r\n baseColor.rgb *= vDiffuseInfos.y;\r\n#endif\r\n\r\n#ifdef VERTEXCOLOR\r\n baseColor.rgb *= vColor.rgb;\r\n#endif\r\n\r\n // Bump\r\n#ifdef NORMAL\r\n vec3 normalW = normalize(vNormalW);\r\n#else\r\n vec3 normalW = vec3(1.0, 1.0, 1.0);\r\n#endif\r\n\r\n // Lighting\r\n vec3 diffuseBase = vec3(0., 0., 0.);\r\n float shadow = 1.;\r\n float glossiness = 0.;\r\n \r\n#include<light0Fragment>\r\n#include<light1Fragment>\r\n#include<light2Fragment>\r\n#include<light3Fragment>\r\n\r\n\r\n#ifdef VERTEXALPHA\r\n alpha *= vColor.a;\r\n#endif\r\n\r\n vec3 finalDiffuse = clamp(diffuseBase * diffuseColor, 0.0, 1.0) * baseColor.rgb;\r\n\r\n // Composition\r\n vec4 color = vec4(finalDiffuse, alpha);\r\n\r\n#include<fogFragment>\r\n\r\n gl_FragColor = color;\r\n}";
|