<Shader>一个简单的边缘发光的例子

来源:互联网 发布:qq绿标安全域名生成 编辑:程序博客网 时间:2024/06/04 19:10
Shader "Custom/SurfaceRimShaderNew"{Properties{//主颜色 _MainColor("_MainColor ",color) =  (1,1,1,1)_MainTex("_MainTex",rect) = "white"{}_BumpMap("_BumpMap",2d) = "white"{}_RimColor("_RimColor",color) = (1,1,1,1)_RimPower("_RimPower",range(0.6,36.0)) = 8.0_RimIntensity("_RimIntensity",range(1.0,100)) = 10}SubShader{Tags{"RenderType" = "Opaque"}CGPROGRAM//定义兰伯特光照模式#pragma surface surf Lambert//定义输入的结构struct Input{//纹理贴图float2 uv_MainTex;//法线贴图float2 uv_BumpMap;//观察方向float3 viewDir;};//物体的主要颜色float4 _MainColor;//主纹理sampler2D _MainTex;//凹凸纹理sampler2D _BumpMap;//边缘颜色float4 _RimColor;//边缘颜色的强度float _RimPower;float _RimIntensity;//表面的着色气编写void surf(Input IN,inout SurfaceOutput o){//表面反射颜色为纹理的颜色  tex2D  纹理融合的o.Albedo = tex2D(_MainTex,IN.uv_MainTex).rgb  *  _MainColor.rgb;//表面发现为凹凸纹理的颜色o.Normal = UnpackNormal(tex2D(_BumpMap,IN.uv_BumpMap));half rim = 1.0 - saturate( dot( normalize(IN.viewDir),o.Normal ) );//计算出边缘颜色的强度o.Emission = _RimColor.rgb * pow(rim,_RimPower) * _RimIntensity;}ENDCG}}

原创粉丝点击