var touch,__extends=this&&this.__extends||function(){var e=function(a,o){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,a){e.__proto__=a}||function(e,a){for(var o in a)Object.prototype.hasOwnProperty.call(a,o)&&(e[o]=a[o])})(a,o)};return function(a,o){function t(){this.constructor=a}if("function"!=typeof o&&null!==o)throw new TypeError("Class extends value "+String(o)+" is not a constructor or null");e(a,o),a.prototype=null===o?Object.create(o):(t.prototype=o.prototype,new t)}}();!function(e){var a=function(e){function a(){var o=e.call(this)||this;return o.initShader(),o.setShaderName("CustomShader"),o.setBendDistance(100),o.setColor(new Laya.Vector4(1,1,1,1)),o.setHasLight(!0),o.setHasLambert(!1),o.setHasSpecular(!1),o.setSpecularGloss(10),o.setSpecularColor(new Laya.Vector4(1,1,1,1)),o.setHasFog(!0),o.setFogColor(new Laya.Vector4(1,0,0,1)),o.setFogDensity(.03),o.setFogStart(0),o.setFogEnd(80),o.setFogGradient(2),o.setFogType(a.FOGTYPE_EXP),o.setHasAlphaTest(!1),o}return __extends(a,e),Object.defineProperty(a.prototype,"isBendable",{get:function(){return!0},enumerable:!1,configurable:!0}),Object.defineProperty(a.prototype,"isShuriken",{get:function(){return!1},enumerable:!1,configurable:!0}),a.prototype.setTransparent=function(){this.renderQueue=2,this.depthWrite=!0,this.cull=2,this.blend=1,this.srcBlend=770,this.dstBlend=771,this.alphaTest=!1,this.setAlphaTestValue(.1)},a.prototype.getDiffuseTexture=function(){return this._getTexture(a.DIFFUSETEXTURE)},a.prototype.setDiffuseTexture=function(e){this._setTexture(a.DIFFUSETEXTURE,e)},a.prototype.setMarginalColor=function(e){this._setColor(a.MARGINALCOLOR,e)},a.prototype.getBendOffset=function(){return this._getColor(a.BENDANGLE)},a.prototype.setBendOffset=function(e){this._setColor(a.BENDANGLE,e)},a.prototype.setBendDistance=function(e){this._setNumber(a.BENDDISTANCE,e)},a.prototype.setSpecularGloss=function(e){this._setNumber(a.GLOSS,e)},a.prototype.setColor=function(e){this._setColor(a.COLOR,e)},a.prototype.setSpecularColor=function(e){this._setColor(a.SPECULAR,e)},a.prototype.setHasLight=function(e){e?this._addShaderDefine(a.SHADERDEFINE_ENABLELIGHT):this._removeShaderDefine(a.SHADERDEFINE_ENABLELIGHT)},a.prototype.setHasLambert=function(e){e?this._addShaderDefine(a.SHADERDEFINE_ENABLELAMBERT):this._removeShaderDefine(a.SHADERDEFINE_ENABLELAMBERT)},a.prototype.setHasSpecular=function(e){e?this._addShaderDefine(a.SHADERDEFINE_ENABLESPECULAR):this._removeShaderDefine(a.SHADERDEFINE_ENABLESPECULAR)},a.prototype.setHasFog=function(e){e?this._addShaderDefine(a.SHADERDEFINE_ENABLEFOG):this._removeShaderDefine(a.SHADERDEFINE_ENABLEFOG)},a.prototype.setHasAlphaTest=function(e){e?this._addShaderDefine(a.SHADERDEFINE_ALPHATEST):this._removeShaderDefine(a.SHADERDEFINE_ALPHATEST)},a.prototype.setFogType=function(e){switch(e){case a.FOGTYPE_LINEAR:this._addShaderDefine(a.SHADERDEFINE_LINEARFOG),this._removeShaderDefine(a.SHADERDEFINE_EXFOG),this._removeShaderDefine(a.SHADERDEFINE_EXPFOG);break;case a.FOGTYPE_EX:this._removeShaderDefine(a.SHADERDEFINE_LINEARFOG),this._addShaderDefine(a.SHADERDEFINE_EXFOG),this._removeShaderDefine(a.SHADERDEFINE_EXPFOG);break;case a.FOGTYPE_EXP:this._removeShaderDefine(a.SHADERDEFINE_LINEARFOG),this._removeShaderDefine(a.SHADERDEFINE_EXFOG),this._addShaderDefine(a.SHADERDEFINE_EXPFOG)}},a.prototype.setFogColor=function(e){this._setColor(a.FOGCOLOR,e)},a.prototype.setFogDensity=function(e){this._setNumber(a.DENSITY,e)},a.prototype.setFogGradient=function(e){this._setNumber(a.GRADIENT,e)},a.prototype.setFogStart=function(e){this._setNumber(a.FOGSTART,e)},a.prototype.setFogEnd=function(e){this._setNumber(a.FOGEND,e)},a.prototype.setAlphaTestValue=function(e){this._setNumber(a.ALPHATESTVALUE,e)},a.prototype.initShader=function(){var e={a_Position:Laya.VertexElementUsage.POSITION0,a_Normal:Laya.VertexElementUsage.NORMAL0,a_Texcoord:Laya.VertexElementUsage.TEXTURECOORDINATE0},o={u_AlphaTestValue:[a.ALPHATESTVALUE,Laya.Shader3D.PERIOD_MATERIAL],u_MvpMatrix:[Laya.Sprite3D.MVPMATRIX,Laya.Shader3D.PERIOD_SPRITE],u_WorldMat:[Laya.Sprite3D.WORLDMATRIX,Laya.Shader3D.PERIOD_SPRITE],u_ViewMatrix:[Laya.BaseCamera.VIEWMATRIX,Laya.Shader3D.PERIOD_CAMERA],u_texture:[a.DIFFUSETEXTURE,Laya.Shader3D.PERIOD_MATERIAL],u_CameraPos:[Laya.BaseCamera.CAMERAPOS,Laya.Shader3D.PERIOD_CAMERA],_QOffset:[a.BENDANGLE,Laya.Shader3D.PERIOD_MATERIAL],_Dist:[a.BENDDISTANCE,Laya.Shader3D.PERIOD_MATERIAL],_Color:[a.COLOR,Laya.Shader3D.PERIOD_MATERIAL],_FogColor:[a.FOGCOLOR,Laya.Shader3D.PERIOD_MATERIAL],u_Density:[a.DENSITY,Laya.Shader3D.PERIOD_MATERIAL],u_Gradient:[a.GRADIENT,Laya.Shader3D.PERIOD_MATERIAL],u_FogStart:[a.FOGSTART,Laya.Shader3D.PERIOD_MATERIAL],u_FogEnd:[a.FOGEND,Laya.Shader3D.PERIOD_MATERIAL],_Gloss:[a.GLOSS,Laya.Shader3D.PERIOD_MATERIAL],u_DirectionLight_Direction:[Laya.Scene.POINTLIGHTPOS,Laya.Shader3D.PERIOD_SCENE],u_DirectionLight_Diffuse:[Laya.Scene.POINTLIGHTCOLOR,Laya.Shader3D.PERIOD_SCENE],u_DirectionLight_Ambient:[Laya.Scene.AMBIENTCOLOR,Laya.Shader3D.PERIOD_SCENE]},t=Laya.Shader3D.nameKey.add("CustomShader"),r=Laya.ShaderCompile3D.add(t,"attribute vec3 a_Normal;\nattribute vec2 a_Texcoord;\nattribute vec4 a_Position;\nprecision highp float;\nuniform mat4 u_MvpMatrix;\nuniform mat4 u_ViewMatrix;\nuniform mat4 u_WorldMat;\nuniform vec4 _QOffset; \nuniform float _Dist; \nuniform vec4 _Color; \nuniform float _Gloss; \nuniform vec4 _Specular; \nuniform vec3 u_CameraPos;\nuniform vec3 u_DirectionLight_Direction;\nuniform vec3 u_DirectionLight_Diffuse;\nuniform vec3 u_DirectionLight_Ambient;\nvarying vec4 v_Color;\nvarying vec2 v_Texcoord;\nvarying vec2 v_Texcoord0;\nvarying vec4 v_EyeSpacePos;\nvoid main(){\nv_Texcoord0=a_Texcoord;\n\nmat4 mvMatrix = u_ViewMatrix*u_WorldMat;\nhighp vec4 vPos = u_MvpMatrix *a_Position;\nfloat zOff = vPos.z/_Dist;\nvPos += _QOffset*zOff*zOff;\ngl_Position = vPos;\nmat3 worldMat=mat3(u_WorldMat);\nv_EyeSpacePos=mvMatrix*a_Position;\nv_Texcoord=a_Texcoord;\n#ifdef CUSTOM_ENABLELIGHT \nvec3 worldNormal = worldMat*a_Normal; \nworldNormal = normalize(worldNormal);\nvec3 m_Position=vec3(u_WorldMat*a_Position);\nvec3 worldLightDir = normalize(u_DirectionLight_Direction-m_Position);\nvec3 ambient = u_DirectionLight_Ambient.xyz*_Color.rgb; \n#ifdef CUSTOM_ENABLELAMBERT\nfloat lambert =max(0.0, dot(worldNormal, worldLightDir));\n#else\nfloat lambert = 0.5 * dot(worldNormal, worldLightDir) + 0.5;\n#endif\nv_Color = vec4(lambert * u_DirectionLight_Diffuse.xyz*_Color.rgb + ambient, _Color.a); \n#ifdef CUSTOM_ENABLESPECULAR\nvec3 viewDir=normalize(u_CameraPos-m_Position);\nvec3 halfDir = normalize(viewDir + worldLightDir);\nvec3 specular = u_DirectionLight_Diffuse.xyz*_Specular.rgb*pow(max(dot(worldNormal,halfDir),0.0),_Gloss);\nv_Color+=vec4(v_Color.rgb+specular,v_Color.a);\n#endif\n#else\nv_Color=_Color;\n#endif\n}","precision highp float;\nvarying vec4 v_EyeSpacePos;\nvarying vec2 v_Texcoord;\nvarying vec2 v_Texcoord0;\nvarying vec4 v_Color;\n\tuniform float u_AlphaTestValue;\nuniform sampler2D u_texture;\nuniform float u_Density;\nuniform float u_Gradient;\nuniform vec4 _FogColor;\nuniform float u_FogStart;\nuniform float u_FogEnd;\nfloat ExFog(float distance)\n{\nfloat fogAlpha=exp(-abs(distance * u_Density));\nfogAlpha=1.0-clamp(fogAlpha,0.0,1.0);\nreturn fogAlpha;\n}\nfloat ExpFog(float distance)\n{\nfloat fogAlpha=exp(-pow( abs(distance * u_Density) , u_Gradient) );\nfogAlpha=1.0-clamp(fogAlpha,0.0,1.0);\n\n\nreturn fogAlpha;\n}\nfloat LinearFog(float distance)\n{\nfloat fogAlpha=(distance-u_FogStart)/(u_FogEnd-u_FogStart);\nfogAlpha=clamp(fogAlpha,0.0,1.0);\nreturn fogAlpha;\n}\nvoid main(){\n#ifdef CUSTOM_ALPHATEST\nfloat alpha = texture2D(u_texture,v_Texcoord).w;\n\t\tif( alpha < u_AlphaTestValue )\n\t\t{\n\t\t\tdiscard;\n\t\t}\n#endif\nvec4 tex=texture2D(u_texture,v_Texcoord);\nvec4 color=v_Color*tex;\n#ifdef CUSTOM_ENABLEFOG \n#ifdef CUSTOM_LINEARFOG\nfloat fogAlpha = LinearFog(abs(v_EyeSpacePos.z/v_EyeSpacePos.w));\n#endif\n#ifdef CUSTOM_EXFOG\nfloat fogAlpha = ExFog(abs(v_EyeSpacePos.z/v_EyeSpacePos.w));\n#endif\n#ifdef CUSTOM_EXPFOG\nfloat fogAlpha = ExpFog(abs(v_EyeSpacePos.z/v_EyeSpacePos.w));\n#endif\ngl_FragColor=mix(color,_FogColor,fogAlpha);\n#else \ngl_FragColor=color;\n#endif \n}\n",e,o);a.SHADERDEFINE_ENABLELIGHT=r.registerMaterialDefine("CUSTOM_ENABLELIGHT"),a.SHADERDEFINE_ENABLELAMBERT=r.registerMaterialDefine("CUSTOM_ENABLELAMBERT"),a.SHADERDEFINE_ENABLESPECULAR=r.registerMaterialDefine("CUSTOM_ENABLESPECULAR"),a.SHADERDEFINE_ENABLEFOG=r.registerMaterialDefine("CUSTOM_ENABLEFOG"),a.SHADERDEFINE_LINEARFOG=r.registerMaterialDefine("CUSTOM_LINEARFOG"),a.SHADERDEFINE_EXFOG=r.registerMaterialDefine("CUSTOM_EXFOG"),a.SHADERDEFINE_EXPFOG=r.registerMaterialDefine("CUSTOM_EXPFOG"),a.SHADERDEFINE_ALPHATEST=r.registerMaterialDefine("CUSTOM_ALPHATEST")},a.precompile=function(){var e={a_Position:Laya.VertexElementUsage.POSITION0,a_Normal:Laya.VertexElementUsage.NORMAL0,a_Texcoord:Laya.VertexElementUsage.TEXTURECOORDINATE0},o={u_AlphaTestValue:[a.ALPHATESTVALUE,Laya.Shader3D.PERIOD_MATERIAL],u_MvpMatrix:[Laya.Sprite3D.MVPMATRIX,Laya.Shader3D.PERIOD_SPRITE],u_WorldMat:[Laya.Sprite3D.WORLDMATRIX,Laya.Shader3D.PERIOD_SPRITE],u_ViewMatrix:[Laya.BaseCamera.VIEWMATRIX,Laya.Shader3D.PERIOD_CAMERA],u_texture:[a.DIFFUSETEXTURE,Laya.Shader3D.PERIOD_MATERIAL],u_CameraPos:[Laya.BaseCamera.CAMERAPOS,Laya.Shader3D.PERIOD_CAMERA],_QOffset:[a.BENDANGLE,Laya.Shader3D.PERIOD_MATERIAL],_Dist:[a.BENDDISTANCE,Laya.Shader3D.PERIOD_MATERIAL],_Color:[a.COLOR,Laya.Shader3D.PERIOD_MATERIAL],_FogColor:[a.FOGCOLOR,Laya.Shader3D.PERIOD_MATERIAL],u_Density:[a.DENSITY,Laya.Shader3D.PERIOD_MATERIAL],u_Gradient:[a.GRADIENT,Laya.Shader3D.PERIOD_MATERIAL],u_FogStart:[a.FOGSTART,Laya.Shader3D.PERIOD_MATERIAL],u_FogEnd:[a.FOGEND,Laya.Shader3D.PERIOD_MATERIAL],_Gloss:[a.GLOSS,Laya.Shader3D.PERIOD_MATERIAL],u_DirectionLight_Direction:[Laya.Scene.POINTLIGHTPOS,Laya.Shader3D.PERIOD_SCENE],u_DirectionLight_Diffuse:[Laya.Scene.POINTLIGHTCOLOR,Laya.Shader3D.PERIOD_SCENE],u_DirectionLight_Ambient:[Laya.Scene.AMBIENTCOLOR,Laya.Shader3D.PERIOD_SCENE]},t=Laya.Shader3D.nameKey.add("CustomShader"),r=Laya.ShaderCompile3D.add(t,"attribute vec3 a_Normal;\nattribute vec2 a_Texcoord;\nattribute vec4 a_Position;\nprecision highp float;\nuniform mat4 u_MvpMatrix;\nuniform mat4 u_ViewMatrix;\nuniform mat4 u_WorldMat;\nuniform vec4 _QOffset; \nuniform float _Dist; \nuniform vec4 _Color; \nuniform float _Gloss; \nuniform vec4 _Specular; \nuniform vec3 u_CameraPos;\nuniform vec3 u_DirectionLight_Direction;\nuniform vec3 u_DirectionLight_Diffuse;\nuniform vec3 u_DirectionLight_Ambient;\nvarying vec4 v_Color;\nvarying vec2 v_Texcoord;\nvarying vec2 v_Texcoord0;\nvarying vec4 v_EyeSpacePos;\nvoid main(){\nv_Texcoord0=a_Texcoord;\n\nmat4 mvMatrix = u_ViewMatrix*u_WorldMat;\nhighp vec4 vPos = u_MvpMatrix *a_Position;\nfloat zOff = vPos.z/_Dist;\nvPos += _QOffset*zOff*zOff;\ngl_Position = vPos;\nmat3 worldMat=mat3(u_WorldMat);\nv_EyeSpacePos=mvMatrix*a_Position;\nv_Texcoord=a_Texcoord;\n#ifdef CUSTOM_ENABLELIGHT \nvec3 worldNormal = worldMat*a_Normal; \nworldNormal = normalize(worldNormal);\nvec3 m_Position=vec3(u_WorldMat*a_Position);\nvec3 worldLightDir = normalize(u_DirectionLight_Direction-m_Position);\nvec3 ambient = u_DirectionLight_Ambient.xyz*_Color.rgb; \n#ifdef CUSTOM_ENABLELAMBERT\nfloat lambert =max(0.0, dot(worldNormal, worldLightDir));\n#else\nfloat lambert = 0.5 * dot(worldNormal, worldLightDir) + 0.5;\n#endif\nv_Color = vec4(lambert * u_DirectionLight_Diffuse.xyz*_Color.rgb + ambient, _Color.a); \n#ifdef CUSTOM_ENABLESPECULAR\nvec3 viewDir=normalize(u_CameraPos-m_Position);\nvec3 halfDir = normalize(viewDir + worldLightDir);\nvec3 specular = u_DirectionLight_Diffuse.xyz*_Specular.rgb*pow(max(dot(worldNormal,halfDir),0.0),_Gloss);\nv_Color+=vec4(v_Color.rgb+specular,v_Color.a);\n#endif\n#else\nv_Color=_Color;\n#endif\n}","precision highp float;\nvarying vec4 v_EyeSpacePos;\nvarying vec2 v_Texcoord;\nvarying vec2 v_Texcoord0;\nvarying vec4 v_Color;\n\tuniform float u_AlphaTestValue;\nuniform sampler2D u_texture;\nuniform float u_Density;\nuniform float u_Gradient;\nuniform vec4 _FogColor;\nuniform float u_FogStart;\nuniform float u_FogEnd;\nfloat ExFog(float distance)\n{\nfloat fogAlpha=exp(-abs(distance * u_Density));\nfogAlpha=1.0-clamp(fogAlpha,0.0,1.0);\nreturn fogAlpha;\n}\nfloat ExpFog(float distance)\n{\nfloat fogAlpha=exp(-pow( abs(distance * u_Density) , u_Gradient) );\nfogAlpha=1.0-clamp(fogAlpha,0.0,1.0);\n\n\nreturn fogAlpha;\n}\nfloat LinearFog(float distance)\n{\nfloat fogAlpha=(distance-u_FogStart)/(u_FogEnd-u_FogStart);\nfogAlpha=clamp(fogAlpha,0.0,1.0);\nreturn fogAlpha;\n}\nvoid main(){\n#ifdef CUSTOM_ALPHATEST\nfloat alpha = texture2D(u_texture,v_Texcoord).w;\n\t\tif( alpha < u_AlphaTestValue )\n\t\t{\n\t\t\tdiscard;\n\t\t}\n#endif\nvec4 tex=texture2D(u_texture,v_Texcoord);\nvec4 color=v_Color*tex;\n#ifdef CUSTOM_ENABLEFOG \n#ifdef CUSTOM_LINEARFOG\nfloat fogAlpha = LinearFog(abs(v_EyeSpacePos.z/v_EyeSpacePos.w));\n#endif\n#ifdef CUSTOM_EXFOG\nfloat fogAlpha = ExFog(abs(v_EyeSpacePos.z/v_EyeSpacePos.w));\n#endif\n#ifdef CUSTOM_EXPFOG\nfloat fogAlpha = ExpFog(abs(v_EyeSpacePos.z/v_EyeSpacePos.w));\n#endif\ngl_FragColor=mix(color,_FogColor,fogAlpha);\n#else \ngl_FragColor=color;\n#endif \n}\n",e,o);a.SHADERDEFINE_ENABLELIGHT=r.registerMaterialDefine("CUSTOM_ENABLELIGHT"),a.SHADERDEFINE_ENABLELAMBERT=r.registerMaterialDefine("CUSTOM_ENABLELAMBERT"),a.SHADERDEFINE_ENABLESPECULAR=r.registerMaterialDefine("CUSTOM_ENABLESPECULAR"),a.SHADERDEFINE_ENABLEFOG=r.registerMaterialDefine("CUSTOM_ENABLEFOG"),a.SHADERDEFINE_LINEARFOG=r.registerMaterialDefine("CUSTOM_LINEARFOG"),a.SHADERDEFINE_EXFOG=r.registerMaterialDefine("CUSTOM_EXFOG"),a.SHADERDEFINE_EXPFOG=r.registerMaterialDefine("CUSTOM_EXPFOG"),a.SHADERDEFINE_ALPHATEST=r.registerMaterialDefine("CUSTOM_ALPHATEST"),r.precompileShaderWithShaderDefine(81,0,144),r.precompileShaderWithShaderDefine(81,0,146),r.precompileShaderWithShaderDefine(65,0,146),r.precompileShaderWithShaderDefine(65,0,150),r.precompileShaderWithShaderDefine(65,0,144)},a.DIFFUSETEXTURE=1,a.MARGINALCOLOR=2,a.BENDANGLE=3,a.BENDDISTANCE=4,a.COLOR=5,a.SPECULAR=6,a.GLOSS=7,a.FOGCOLOR=8,a.DENSITY=9,a.GRADIENT=10,a.FOGSTART=11,a.FOGEND=12,a.FOGTYPE_LINEAR=1,a.FOGTYPE_EX=2,a.FOGTYPE_EXP=3,a.ALPHATESTVALUE=13,a}(Laya.BaseMaterial);e.CustomMaterial=a}(touch||(touch={}));