var BABYLON;!(function(e){var i=(function(e){function i(){var i=e.call(this)||this;return i.DIFFUSE=!1,i.CLIPPLANE=!1,i.ALPHATEST=!1,i.POINTSIZE=!1,i.FOG=!1,i.UV1=!1,i.VERTEXCOLOR=!1,i.VERTEXALPHA=!1,i.BonesPerMesh=0,i.NUM_BONE_INFLUENCERS=0,i.INSTANCES=!1,i._keys=Object.keys(i),i}return __extends(i,e),i})(e.MaterialDefines),t=(function(t){function n(n,o){var r=t.call(this,n,o)||this;return r.diffuseColor=new e.Color3(1,1,1),r.speed=1,r._scaledDiffuse=new e.Color3,r._defines=new i,r._cachedDefines=new i,r._lastTime=0,r._cachedDefines.BonesPerMesh=-1,r}return __extends(n,t),n.prototype.needAlphaBlending=function(){return this.alpha<1},n.prototype.needAlphaTesting=function(){return!1},n.prototype.getAlphaTestTexture=function(){return null},n.prototype._checkCache=function(e,i,t){return!i||this._defines.INSTANCES===t&&!(!i._materialDefines||!i._materialDefines.isEqual(this._defines))},n.prototype.isReady=function(t,n){if(this.checkReadyOnlyOnce&&this._wasPreviouslyReady)return!0;var o=this.getScene();if(!this.checkReadyOnEveryCall&&this._renderId===o.getRenderId()&&this._checkCache(o,t,n))return!0;var r=(o.getEngine(),!1);if(this._defines.reset(),o.texturesEnabled&&this.diffuseTexture&&e.StandardMaterial.DiffuseTextureEnabled){if(!this.diffuseTexture.isReady())return!1;r=!0,this._defines.DIFFUSE=!0}if(o.clipPlane&&(this._defines.CLIPPLANE=!0),this._defines.ALPHATEST=!0,(this.pointsCloud||o.forcePointsCloud)&&(this._defines.POINTSIZE=!0),o.fogEnabled&&t&&t.applyFog&&o.fogMode!==e.Scene.FOGMODE_NONE&&this.fogEnabled&&(this._defines.FOG=!0),t&&(r&&t.isVerticesDataPresent(e.VertexBuffer.UVKind)&&(this._defines.UV1=!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),n&&(this._defines.INSTANCES=!0)),!this._defines.isEqual(this._cachedDefines)){this._defines.cloneTo(this._cachedDefines),o.resetCachedMaterial();var s=new e.EffectFallbacks;this._defines.FOG&&s.addFallback(1,"FOG"),this._defines.NUM_BONE_INFLUENCERS>0&&s.addCPUSkinningFallback(0,t);var a=[e.VertexBuffer.PositionKind];this._defines.UV1&&a.push(e.VertexBuffer.UVKind),this._defines.VERTEXCOLOR&&a.push(e.VertexBuffer.ColorKind),e.MaterialHelper.PrepareAttributesForBones(a,t,this._defines,s),e.MaterialHelper.PrepareAttributesForInstances(a,this._defines);var f=this._defines.toString();this._effect=o.getEngine().createEffect("fire",a,["world","view","viewProjection","vEyePosition","vFogInfos","vFogColor","pointSize","vDiffuseInfos","mBones","vClipPlane","diffuseMatrix","time","speed"],["diffuseSampler","distortionSampler","opacitySampler"],f,s,this.onCompiled,this.onError)}return!!this._effect.isReady()&&(this._renderId=o.getRenderId(),this._wasPreviouslyReady=!0,t&&(t._materialDefines||(t._materialDefines=new i),this._defines.cloneTo(t._materialDefines)),!0)},n.prototype.bindOnlyWorldMatrix=function(e){this._effect.setMatrix("world",e)},n.prototype.bind=function(i,n){var o=this.getScene();if(this.bindOnlyWorldMatrix(i),this._effect.setMatrix("viewProjection",o.getTransformMatrix()),e.MaterialHelper.BindBonesParameters(n,this._effect),o.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()),this._effect.setTexture("distortionSampler",this.distortionTexture),this._effect.setTexture("opacitySampler",this.opacityTexture)),o.clipPlane){var r=o.clipPlane;this._effect.setFloat4("vClipPlane",r.normal.x,r.normal.y,r.normal.z,r.d)}this.pointsCloud&&this._effect.setFloat("pointSize",this.pointSize),this._effect.setVector3("vEyePosition",o._mirroredCameraPosition?o._mirroredCameraPosition:o.activeCamera.position)}this._effect.setColor4("vDiffuseColor",this._scaledDiffuse,this.alpha*n.visibility),o.fogEnabled&&n.applyFog&&o.fogMode!==e.Scene.FOGMODE_NONE&&this._effect.setMatrix("view",o.getViewMatrix()),e.MaterialHelper.BindFogParameters(o,n,this._effect),this._lastTime+=o.getEngine().getDeltaTime(),this._effect.setFloat("time",this._lastTime),this._effect.setFloat("speed",this.speed),t.prototype.bind.call(this,i,n)},n.prototype.getAnimatables=function(){var e=[];return this.diffuseTexture&&this.diffuseTexture.animations&&this.diffuseTexture.animations.length>0&&e.push(this.diffuseTexture),this.distortionTexture&&this.distortionTexture.animations&&this.distortionTexture.animations.length>0&&e.push(this.distortionTexture),this.opacityTexture&&this.opacityTexture.animations&&this.opacityTexture.animations.length>0&&e.push(this.opacityTexture),e},n.prototype.dispose=function(e){this.diffuseTexture&&this.diffuseTexture.dispose(),this.distortionTexture&&this.distortionTexture.dispose(),t.prototype.dispose.call(this,e)},n.prototype.clone=function(i){var t=this;return e.SerializationHelper.Clone((function(){return new n(i,t.getScene())}),this)},n.prototype.serialize=function(){var e=t.prototype.serialize.call(this);return e.customType="BABYLON.FireMaterial",e.diffuseColor=this.diffuseColor.asArray(),e.speed=this.speed,this.diffuseTexture&&(e.diffuseTexture=this.diffuseTexture.serialize()),this.distortionTexture&&(e.distortionTexture=this.distortionTexture.serialize()),this.opacityTexture&&(e.opacityTexture=this.opacityTexture.serialize()),e},n.Parse=function(i,t,o){var r=new n(i.name,t);return r.diffuseColor=e.Color3.FromArray(i.diffuseColor),r.speed=i.speed,r.alpha=i.alpha,r.id=i.id,e.Tags.AddTagsTo(r,i.tags),r.backFaceCulling=i.backFaceCulling,r.wireframe=i.wireframe,i.diffuseTexture&&(r.diffuseTexture=e.Texture.Parse(i.diffuseTexture,t,o)),i.distortionTexture&&(r.distortionTexture=e.Texture.Parse(i.distortionTexture,t,o)),i.opacityTexture&&(r.opacityTexture=e.Texture.Parse(i.opacityTexture,t,o)),i.checkReadyOnlyOnce&&(r.checkReadyOnlyOnce=i.checkReadyOnlyOnce),r},n})(e.Material);__decorate([e.serializeAsTexture()],t.prototype,"diffuseTexture",void 0),__decorate([e.serializeAsTexture()],t.prototype,"distortionTexture",void 0),__decorate([e.serializeAsTexture()],t.prototype,"opacityTexture",void 0),__decorate([e.serialize("diffuseColor")],t.prototype,"diffuseColor",void 0),__decorate([e.serialize()],t.prototype,"speed",void 0),e.FireMaterial=t})(BABYLON||(BABYLON={})),BABYLON.Effect.ShadersStore.fireVertexShader="precision highp float;\n\nattribute vec3 position;\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\n\n#include\nuniform mat4 view;\nuniform mat4 viewProjection;\n#ifdef DIFFUSE\nvarying vec2 vDiffuseUV;\n#endif\n#ifdef POINTSIZE\nuniform float pointSize;\n#endif\n\nvarying vec3 vPositionW;\n#ifdef VERTEXCOLOR\nvarying vec4 vColor;\n#endif\n#include\n#include\n\nuniform float time;\nuniform float speed;\n#ifdef DIFFUSE\nvarying vec2 vDistortionCoords1;\nvarying vec2 vDistortionCoords2;\nvarying vec2 vDistortionCoords3;\n#endif\nvoid main(void) {\n#include\n#include\ngl_Position=viewProjection*finalWorld*vec4(position,1.0);\nvec4 worldPos=finalWorld*vec4(position,1.0);\nvPositionW=vec3(worldPos);\n\n#ifdef DIFFUSE\nvDiffuseUV=uv;\nvDiffuseUV.y-=0.2;\n#endif\n\n#include\n\n#include\n\n#ifdef VERTEXCOLOR\nvColor=color;\n#endif\n\n#ifdef POINTSIZE\ngl_PointSize=pointSize;\n#endif\n#ifdef DIFFUSE\n\nvec3 layerSpeed=vec3(-0.2,-0.52,-0.1)*speed;\nvDistortionCoords1.x=uv.x;\nvDistortionCoords1.y=uv.y+layerSpeed.x*time/1000.0;\nvDistortionCoords2.x=uv.x;\nvDistortionCoords2.y=uv.y+layerSpeed.y*time/1000.0;\nvDistortionCoords3.x=uv.x;\nvDistortionCoords3.y=uv.y+layerSpeed.z*time/1000.0;\n#endif\n}\n",BABYLON.Effect.ShadersStore.firePixelShader="precision highp float;\n\nuniform vec3 vEyePosition;\n\nvarying vec3 vPositionW;\n#ifdef VERTEXCOLOR\nvarying vec4 vColor;\n#endif\n\n#ifdef DIFFUSE\nvarying vec2 vDiffuseUV;\nuniform sampler2D diffuseSampler;\nuniform vec2 vDiffuseInfos;\n#endif\n\nuniform sampler2D distortionSampler;\nuniform sampler2D opacitySampler;\n#ifdef DIFFUSE\nvarying vec2 vDistortionCoords1;\nvarying vec2 vDistortionCoords2;\nvarying vec2 vDistortionCoords3;\n#endif\n#include\n\n#include\nvec4 bx2(vec4 x)\n{\nreturn vec4(2.0)*x-vec4(1.0);\n}\nvoid main(void) {\n\n#include\nvec3 viewDirectionW=normalize(vEyePosition-vPositionW);\n\nvec4 baseColor=vec4(1.,1.,1.,1.);\n\nfloat alpha=1.0;\n#ifdef DIFFUSE\n\nconst float distortionAmount0=0.092;\nconst float distortionAmount1=0.092;\nconst float distortionAmount2=0.092;\nvec2 heightAttenuation=vec2(0.3,0.39);\nvec4 noise0=texture2D(distortionSampler,vDistortionCoords1);\nvec4 noise1=texture2D(distortionSampler,vDistortionCoords2);\nvec4 noise2=texture2D(distortionSampler,vDistortionCoords3);\nvec4 noiseSum=bx2(noise0)*distortionAmount0+bx2(noise1)*distortionAmount1+bx2(noise2)*distortionAmount2;\nvec4 perturbedBaseCoords=vec4(vDiffuseUV,0.0,1.0)+noiseSum*(vDiffuseUV.y*heightAttenuation.x+heightAttenuation.y);\nvec4 opacityColor=texture2D(opacitySampler,perturbedBaseCoords.xy);\n#ifdef ALPHATEST\nif (opacityColor.r<0.1)\ndiscard;\n#endif\nbaseColor=texture2D(diffuseSampler,perturbedBaseCoords.xy)*2.0;\nbaseColor*=opacityColor;\nbaseColor.rgb*=vDiffuseInfos.y;\n#endif\n#ifdef VERTEXCOLOR\nbaseColor.rgb*=vColor.rgb;\n#endif\n\nvec3 diffuseBase=vec3(1.0,1.0,1.0);\n#ifdef VERTEXALPHA\nalpha*=vColor.a;\n#endif\n\nvec4 color=vec4(baseColor.rgb,alpha);\n#include\ngl_FragColor=color;\n}";