babylon.mixMaterial.min.js 16 KB

1
  1. var BABYLON,__extends=this&&this.__extends||(function(){var r=function(e,i){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,i){e.__proto__=i}||function(e,i){for(var t in i)i.hasOwnProperty(t)&&(e[t]=i[t])})(e,i)};return function(e,i){function t(){this.constructor=e}r(e,i),e.prototype=null===i?Object.create(i):(t.prototype=i.prototype,new t)}})(),__decorate=this&&this.__decorate||function(e,i,t,r){var f,s=arguments.length,n=s<3?i:null===r?r=Object.getOwnPropertyDescriptor(i,t):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)n=Reflect.decorate(e,i,t,r);else for(var o=e.length-1;0<=o;o--)(f=e[o])&&(n=(s<3?f(n):3<s?f(i,t,n):f(i,t))||n);return 3<s&&n&&Object.defineProperty(i,t,n),n};!(function(c){var x=(function(i){function e(){var e=i.call(this)||this;return e.DIFFUSE=!1,e.CLIPPLANE=!1,e.CLIPPLANE2=!1,e.CLIPPLANE3=!1,e.CLIPPLANE4=!1,e.ALPHATEST=!1,e.DEPTHPREPASS=!1,e.POINTSIZE=!1,e.FOG=!1,e.SPECULARTERM=!1,e.NORMAL=!1,e.UV1=!1,e.UV2=!1,e.VERTEXCOLOR=!1,e.VERTEXALPHA=!1,e.NUM_BONE_INFLUENCERS=0,e.BonesPerMesh=0,e.INSTANCES=!1,e.MIXMAP2=!1,e.rebuild(),e}return __extends(e,i),e})(c.MaterialDefines),e=(function(r){function f(e,i){var t=r.call(this,e,i)||this;return t.diffuseColor=new c.Color3(1,1,1),t.specularColor=new c.Color3(0,0,0),t.specularPower=64,t._disableLighting=!1,t._maxSimultaneousLights=4,t}return __extends(f,r),f.prototype.needAlphaBlending=function(){return this.alpha<1},f.prototype.needAlphaTesting=function(){return!1},f.prototype.getAlphaTestTexture=function(){return null},f.prototype.isReadyForSubMesh=function(e,i,t){if(this.isFrozen&&this._wasPreviouslyReady&&i.effect)return!0;i._materialDefines||(i._materialDefines=new x);var r=i._materialDefines,f=this.getScene();if(!this.checkReadyOnEveryCall&&i.effect&&this._renderId===f.getRenderId())return!0;var s=f.getEngine();if(f.texturesEnabled&&c.StandardMaterial.DiffuseTextureEnabled){if(this._mixTexture1){if(!this._mixTexture1.isReady())return!1;r._needUVs=!0,r.DIFFUSE=!0}if(this._mixTexture2){if(!this._mixTexture2.isReady())return!1;r.MIXMAP2=!0}}if(c.MaterialHelper.PrepareDefinesForMisc(e,f,!1,this.pointsCloud,this.fogEnabled,this._shouldTurnAlphaTestOn(e),r),r._needNormals=c.MaterialHelper.PrepareDefinesForLights(f,e,r,!1,this._maxSimultaneousLights,this._disableLighting),c.MaterialHelper.PrepareDefinesForFrameBoundValues(f,s,r,!!t),c.MaterialHelper.PrepareDefinesForAttributes(e,r,!0,!0),r.isDirty){r.markAsProcessed(),f.resetCachedMaterial();var n=new c.EffectFallbacks;r.FOG&&n.addFallback(1,"FOG"),c.MaterialHelper.HandleFallbacksForShadows(r,n,this.maxSimultaneousLights),0<r.NUM_BONE_INFLUENCERS&&n.addCPUSkinningFallback(0,e);var o=[c.VertexBuffer.PositionKind];r.NORMAL&&o.push(c.VertexBuffer.NormalKind),r.UV1&&o.push(c.VertexBuffer.UVKind),r.UV2&&o.push(c.VertexBuffer.UV2Kind),r.VERTEXCOLOR&&o.push(c.VertexBuffer.ColorKind),c.MaterialHelper.PrepareAttributesForBones(o,e,r,n),c.MaterialHelper.PrepareAttributesForInstances(o,r);var u=r.toString(),a=["world","view","viewProjection","vEyePosition","vLightsType","vDiffuseColor","vSpecularColor","vFogInfos","vFogColor","pointSize","vTextureInfos","mBones","vClipPlane","vClipPlane2","vClipPlane3","vClipPlane4","textureMatrix","diffuse1Infos","diffuse2Infos","diffuse3Infos","diffuse4Infos","diffuse5Infos","diffuse6Infos","diffuse7Infos","diffuse8Infos"],l=["mixMap1Sampler","mixMap2Sampler","diffuse1Sampler","diffuse2Sampler","diffuse3Sampler","diffuse4Sampler","diffuse5Sampler","diffuse6Sampler","diffuse7Sampler","diffuse8Sampler"],d=new Array;c.MaterialHelper.PrepareUniformsAndSamplersList({uniformsNames:a,uniformBuffersNames:d,samplers:l,defines:r,maxSimultaneousLights:this.maxSimultaneousLights}),i.setEffect(f.getEngine().createEffect("mix",{attributes:o,uniformsNames:a,uniformBuffersNames:d,samplers:l,defines:u,fallbacks:n,onCompiled:this.onCompiled,onError:this.onError,indexParameters:{maxSimultaneousLights:this.maxSimultaneousLights}},s),r)}return!(!i.effect||!i.effect.isReady())&&(this._renderId=f.getRenderId(),this._wasPreviouslyReady=!0)},f.prototype.bindForSubMesh=function(e,i,t){var r=this.getScene(),f=t._materialDefines;if(f){var s=t.effect;s&&(this._activeEffect=s,this.bindOnlyWorldMatrix(e),this._activeEffect.setMatrix("viewProjection",r.getTransformMatrix()),c.MaterialHelper.BindBonesParameters(i,this._activeEffect),this._mustRebind(r,s)&&(this._mixTexture1&&(this._activeEffect.setTexture("mixMap1Sampler",this._mixTexture1),this._activeEffect.setFloat2("vTextureInfos",this._mixTexture1.coordinatesIndex,this._mixTexture1.level),this._activeEffect.setMatrix("textureMatrix",this._mixTexture1.getTextureMatrix()),c.StandardMaterial.DiffuseTextureEnabled&&(this._diffuseTexture1&&(this._activeEffect.setTexture("diffuse1Sampler",this._diffuseTexture1),this._activeEffect.setFloat2("diffuse1Infos",this._diffuseTexture1.uScale,this._diffuseTexture1.vScale)),this._diffuseTexture2&&(this._activeEffect.setTexture("diffuse2Sampler",this._diffuseTexture2),this._activeEffect.setFloat2("diffuse2Infos",this._diffuseTexture2.uScale,this._diffuseTexture2.vScale)),this._diffuseTexture3&&(this._activeEffect.setTexture("diffuse3Sampler",this._diffuseTexture3),this._activeEffect.setFloat2("diffuse3Infos",this._diffuseTexture3.uScale,this._diffuseTexture3.vScale)),this._diffuseTexture4&&(this._activeEffect.setTexture("diffuse4Sampler",this._diffuseTexture4),this._activeEffect.setFloat2("diffuse4Infos",this._diffuseTexture4.uScale,this._diffuseTexture4.vScale)))),this._mixTexture2&&(this._activeEffect.setTexture("mixMap2Sampler",this._mixTexture2),c.StandardMaterial.DiffuseTextureEnabled&&(this._diffuseTexture5&&(this._activeEffect.setTexture("diffuse5Sampler",this._diffuseTexture5),this._activeEffect.setFloat2("diffuse5Infos",this._diffuseTexture5.uScale,this._diffuseTexture5.vScale)),this._diffuseTexture6&&(this._activeEffect.setTexture("diffuse6Sampler",this._diffuseTexture6),this._activeEffect.setFloat2("diffuse6Infos",this._diffuseTexture6.uScale,this._diffuseTexture6.vScale)),this._diffuseTexture7&&(this._activeEffect.setTexture("diffuse7Sampler",this._diffuseTexture7),this._activeEffect.setFloat2("diffuse7Infos",this._diffuseTexture7.uScale,this._diffuseTexture7.vScale)),this._diffuseTexture8&&(this._activeEffect.setTexture("diffuse8Sampler",this._diffuseTexture8),this._activeEffect.setFloat2("diffuse8Infos",this._diffuseTexture8.uScale,this._diffuseTexture8.vScale)))),c.MaterialHelper.BindClipPlane(this._activeEffect,r),this.pointsCloud&&this._activeEffect.setFloat("pointSize",this.pointSize),c.MaterialHelper.BindEyePosition(s,r)),this._activeEffect.setColor4("vDiffuseColor",this.diffuseColor,this.alpha*i.visibility),f.SPECULARTERM&&this._activeEffect.setColor4("vSpecularColor",this.specularColor,this.specularPower),r.lightsEnabled&&!this.disableLighting&&c.MaterialHelper.BindLights(r,i,this._activeEffect,f,this.maxSimultaneousLights),r.fogEnabled&&i.applyFog&&r.fogMode!==c.Scene.FOGMODE_NONE&&this._activeEffect.setMatrix("view",r.getViewMatrix()),c.MaterialHelper.BindFogParameters(r,i,this._activeEffect),this._afterBind(i,this._activeEffect))}},f.prototype.getAnimatables=function(){var e=[];return this._mixTexture1&&this._mixTexture1.animations&&0<this._mixTexture1.animations.length&&e.push(this._mixTexture1),this._mixTexture2&&this._mixTexture2.animations&&0<this._mixTexture2.animations.length&&e.push(this._mixTexture2),e},f.prototype.getActiveTextures=function(){var e=r.prototype.getActiveTextures.call(this);return this._mixTexture1&&e.push(this._mixTexture1),this._diffuseTexture1&&e.push(this._diffuseTexture1),this._diffuseTexture2&&e.push(this._diffuseTexture2),this._diffuseTexture3&&e.push(this._diffuseTexture3),this._diffuseTexture4&&e.push(this._diffuseTexture4),this._mixTexture2&&e.push(this._mixTexture2),this._diffuseTexture5&&e.push(this._diffuseTexture5),this._diffuseTexture6&&e.push(this._diffuseTexture6),this._diffuseTexture7&&e.push(this._diffuseTexture7),this._diffuseTexture8&&e.push(this._diffuseTexture8),e},f.prototype.hasTexture=function(e){return!!r.prototype.hasTexture.call(this,e)||(this._mixTexture1===e||(this._diffuseTexture1===e||(this._diffuseTexture2===e||(this._diffuseTexture3===e||(this._diffuseTexture4===e||(this._mixTexture2===e||(this._diffuseTexture5===e||(this._diffuseTexture6===e||(this._diffuseTexture7===e||this._diffuseTexture8===e)))))))))},f.prototype.dispose=function(e){this._mixTexture1&&this._mixTexture1.dispose(),r.prototype.dispose.call(this,e)},f.prototype.clone=function(e){var i=this;return c.SerializationHelper.Clone((function(){return new f(e,i.getScene())}),this)},f.prototype.serialize=function(){var e=c.SerializationHelper.Serialize(this);return e.customType="BABYLON.MixMaterial",e},f.prototype.getClassName=function(){return"MixMaterial"},f.Parse=function(e,i,t){return c.SerializationHelper.Parse((function(){return new f(e.name,i)}),e,i,t)},__decorate([c.serializeAsTexture("mixTexture1")],f.prototype,"_mixTexture1",void 0),__decorate([c.expandToProperty("_markAllSubMeshesAsTexturesDirty")],f.prototype,"mixTexture1",void 0),__decorate([c.serializeAsTexture("mixTexture2")],f.prototype,"_mixTexture2",void 0),__decorate([c.expandToProperty("_markAllSubMeshesAsTexturesDirty")],f.prototype,"mixTexture2",void 0),__decorate([c.serializeAsTexture("diffuseTexture1")],f.prototype,"_diffuseTexture1",void 0),__decorate([c.expandToProperty("_markAllSubMeshesAsTexturesDirty")],f.prototype,"diffuseTexture1",void 0),__decorate([c.serializeAsTexture("diffuseTexture2")],f.prototype,"_diffuseTexture2",void 0),__decorate([c.expandToProperty("_markAllSubMeshesAsTexturesDirty")],f.prototype,"diffuseTexture2",void 0),__decorate([c.serializeAsTexture("diffuseTexture3")],f.prototype,"_diffuseTexture3",void 0),__decorate([c.expandToProperty("_markAllSubMeshesAsTexturesDirty")],f.prototype,"diffuseTexture3",void 0),__decorate([c.serializeAsTexture("diffuseTexture4")],f.prototype,"_diffuseTexture4",void 0),__decorate([c.expandToProperty("_markAllSubMeshesAsTexturesDirty")],f.prototype,"diffuseTexture4",void 0),__decorate([c.serializeAsTexture("diffuseTexture1")],f.prototype,"_diffuseTexture5",void 0),__decorate([c.expandToProperty("_markAllSubMeshesAsTexturesDirty")],f.prototype,"diffuseTexture5",void 0),__decorate([c.serializeAsTexture("diffuseTexture2")],f.prototype,"_diffuseTexture6",void 0),__decorate([c.expandToProperty("_markAllSubMeshesAsTexturesDirty")],f.prototype,"diffuseTexture6",void 0),__decorate([c.serializeAsTexture("diffuseTexture3")],f.prototype,"_diffuseTexture7",void 0),__decorate([c.expandToProperty("_markAllSubMeshesAsTexturesDirty")],f.prototype,"diffuseTexture7",void 0),__decorate([c.serializeAsTexture("diffuseTexture4")],f.prototype,"_diffuseTexture8",void 0),__decorate([c.expandToProperty("_markAllSubMeshesAsTexturesDirty")],f.prototype,"diffuseTexture8",void 0),__decorate([c.serializeAsColor3()],f.prototype,"diffuseColor",void 0),__decorate([c.serializeAsColor3()],f.prototype,"specularColor",void 0),__decorate([c.serialize()],f.prototype,"specularPower",void 0),__decorate([c.serialize("disableLighting")],f.prototype,"_disableLighting",void 0),__decorate([c.expandToProperty("_markAllSubMeshesAsLightsDirty")],f.prototype,"disableLighting",void 0),__decorate([c.serialize("maxSimultaneousLights")],f.prototype,"_maxSimultaneousLights",void 0),__decorate([c.expandToProperty("_markAllSubMeshesAsLightsDirty")],f.prototype,"maxSimultaneousLights",void 0),f})(c.PushMaterial);c.MixMaterial=e})(BABYLON||(BABYLON={})),BABYLON.Effect.ShadersStore.mixVertexShader="precision highp float;\n\nattribute vec3 position;\n#ifdef NORMAL\nattribute vec3 normal;\n#endif\n#ifdef UV1\nattribute vec2 uv;\n#endif\n#ifdef UV2\nattribute vec2 uv2;\n#endif\n#ifdef VERTEXCOLOR\nattribute vec4 color;\n#endif\n#include<bonesDeclaration>\n\n#include<instancesDeclaration>\nuniform mat4 view;\nuniform mat4 viewProjection;\n#ifdef DIFFUSE\nvarying vec2 vTextureUV;\nuniform mat4 textureMatrix;\nuniform vec2 vTextureInfos;\n#endif\n#ifdef POINTSIZE\nuniform float pointSize;\n#endif\n\nvarying vec3 vPositionW;\n#ifdef NORMAL\nvarying vec3 vNormalW;\n#endif\n#ifdef VERTEXCOLOR\nvarying vec4 vColor;\n#endif\n#include<clipPlaneVertexDeclaration>\n#include<fogVertexDeclaration>\n#include<__decl__lightFragment>[0..maxSimultaneousLights]\nvoid main(void) {\n#include<instancesVertex>\n#include<bonesVertex>\ngl_Position=viewProjection*finalWorld*vec4(position,1.0);\nvec4 worldPos=finalWorld*vec4(position,1.0);\nvPositionW=vec3(worldPos);\n#ifdef NORMAL\nvNormalW=normalize(vec3(finalWorld*vec4(normal,0.0)));\n#endif\n\n#ifndef UV1\nvec2 uv=vec2(0.,0.);\n#endif\n#ifndef UV2\nvec2 uv2=vec2(0.,0.);\n#endif\n#ifdef DIFFUSE\nif (vTextureInfos.x == 0.)\n{\nvTextureUV=vec2(textureMatrix*vec4(uv,1.0,0.0));\n}\nelse\n{\nvTextureUV=vec2(textureMatrix*vec4(uv2,1.0,0.0));\n}\n#endif\n\n#include<clipPlaneVertex>\n\n#include<fogVertex>\n\n#include<shadowsVertex>[0..maxSimultaneousLights]\n\n#ifdef VERTEXCOLOR\nvColor=color;\n#endif\n\n#ifdef POINTSIZE\ngl_PointSize=pointSize;\n#endif\n}\n",BABYLON.Effect.ShadersStore.mixPixelShader="precision highp float;\n\nuniform vec3 vEyePosition;\nuniform vec4 vDiffuseColor;\n#ifdef SPECULARTERM\nuniform vec4 vSpecularColor;\n#endif\n\nvarying vec3 vPositionW;\n#ifdef NORMAL\nvarying vec3 vNormalW;\n#endif\n#ifdef VERTEXCOLOR\nvarying vec4 vColor;\n#endif\n\n#include<helperFunctions>\n\n#include<__decl__lightFragment>[0..maxSimultaneousLights]\n\n#ifdef DIFFUSE\nvarying vec2 vTextureUV;\nuniform sampler2D mixMap1Sampler;\nuniform vec2 vTextureInfos;\n#ifdef MIXMAP2\nuniform sampler2D mixMap2Sampler;\n#endif\nuniform sampler2D diffuse1Sampler;\nuniform sampler2D diffuse2Sampler;\nuniform sampler2D diffuse3Sampler;\nuniform sampler2D diffuse4Sampler;\nuniform vec2 diffuse1Infos;\nuniform vec2 diffuse2Infos;\nuniform vec2 diffuse3Infos;\nuniform vec2 diffuse4Infos;\n#ifdef MIXMAP2\nuniform sampler2D diffuse5Sampler;\nuniform sampler2D diffuse6Sampler;\nuniform sampler2D diffuse7Sampler;\nuniform sampler2D diffuse8Sampler;\nuniform vec2 diffuse5Infos;\nuniform vec2 diffuse6Infos;\nuniform vec2 diffuse7Infos;\nuniform vec2 diffuse8Infos;\n#endif\n#endif\n\n#include<lightsFragmentFunctions>\n#include<shadowsFragmentFunctions>\n#include<clipPlaneFragmentDeclaration>\n\n#include<fogFragmentDeclaration>\nvoid main(void) {\n\n#include<clipPlaneFragment>\nvec3 viewDirectionW=normalize(vEyePosition-vPositionW);\n\nvec4 finalMixColor=vec4(1.,1.,1.,1.);\nvec3 diffuseColor=vDiffuseColor.rgb;\n#ifdef MIXMAP2\nvec4 mixColor2=vec4(1.,1.,1.,1.);\n#endif\n#ifdef SPECULARTERM\nfloat glossiness=vSpecularColor.a;\nvec3 specularColor=vSpecularColor.rgb;\n#else\nfloat glossiness=0.;\n#endif\n\nfloat alpha=vDiffuseColor.a;\n\n#ifdef NORMAL\nvec3 normalW=normalize(vNormalW);\n#else\nvec3 normalW=vec3(1.0,1.0,1.0);\n#endif\n#ifdef DIFFUSE\nvec4 mixColor=texture2D(mixMap1Sampler,vTextureUV);\n#include<depthPrePass>\nmixColor.rgb*=vTextureInfos.y;\nvec4 diffuse1Color=texture2D(diffuse1Sampler,vTextureUV*diffuse1Infos);\nvec4 diffuse2Color=texture2D(diffuse2Sampler,vTextureUV*diffuse2Infos);\nvec4 diffuse3Color=texture2D(diffuse3Sampler,vTextureUV*diffuse3Infos);\nvec4 diffuse4Color=texture2D(diffuse4Sampler,vTextureUV*diffuse4Infos);\ndiffuse1Color.rgb*=mixColor.r;\ndiffuse2Color.rgb=mix(diffuse1Color.rgb,diffuse2Color.rgb,mixColor.g);\ndiffuse3Color.rgb=mix(diffuse2Color.rgb,diffuse3Color.rgb,mixColor.b);\nfinalMixColor.rgb=mix(diffuse3Color.rgb,diffuse4Color.rgb,1.0-mixColor.a);\n#ifdef MIXMAP2\nmixColor=texture2D(mixMap2Sampler,vTextureUV);\nmixColor.rgb*=vTextureInfos.y;\nvec4 diffuse5Color=texture2D(diffuse5Sampler,vTextureUV*diffuse5Infos);\nvec4 diffuse6Color=texture2D(diffuse6Sampler,vTextureUV*diffuse6Infos);\nvec4 diffuse7Color=texture2D(diffuse7Sampler,vTextureUV*diffuse7Infos);\nvec4 diffuse8Color=texture2D(diffuse8Sampler,vTextureUV*diffuse8Infos);\ndiffuse5Color.rgb=mix(finalMixColor.rgb,diffuse5Color.rgb,mixColor.r);\ndiffuse6Color.rgb=mix(diffuse5Color.rgb,diffuse6Color.rgb,mixColor.g);\ndiffuse7Color.rgb=mix(diffuse6Color.rgb,diffuse7Color.rgb,mixColor.b);\nfinalMixColor.rgb=mix(diffuse7Color.rgb,diffuse8Color.rgb,1.0-mixColor.a);\n#endif\n#endif\n#ifdef VERTEXCOLOR\nfinalMixColor.rgb*=vColor.rgb;\n#endif\n\nvec3 diffuseBase=vec3(0.,0.,0.);\nlightingInfo info;\nfloat shadow=1.;\n#ifdef SPECULARTERM\nvec3 specularBase=vec3(0.,0.,0.);\n#endif\n#include<lightFragment>[0..maxSimultaneousLights]\n#ifdef VERTEXALPHA\nalpha*=vColor.a;\n#endif\n#ifdef SPECULARTERM\nvec3 finalSpecular=specularBase*specularColor;\n#else\nvec3 finalSpecular=vec3(0.0);\n#endif\nvec3 finalDiffuse=clamp(diffuseBase*diffuseColor*finalMixColor.rgb,0.0,1.0);\n\nvec4 color=vec4(finalDiffuse+finalSpecular,alpha);\n#include<fogFragment>\ngl_FragColor=color;\n}\n";