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
}
}
<Shader>一个简单的边缘发光的例子
最新推荐文章于 2024-01-18 02:13:14 发布