Properties {
_MainColor("MainColor",Color)=(1,1,1,1)
_MainTex ("MainTex", 2D) = "white" {}
_NormalMap("NormalMap",2D)="bump"{}
_SnowColor ("SnowColor", Color) = (1,1,1,1)
_SnowDir("SnowDir",vector)=(0,-1,0,1)
_SnowPower("SnowPower",Range(0,5))=0
_Range("Range",Range(-1,1))=0
}
SubShader {
Tags { "RenderType"="Opaque" }
LOD 200
CGPROGRAM
#pragma surface surf Lambert
fixed4 _MainColor;
sampler2D _MainTex;
sampler2D _NormalMap;
fixed4 _SnowColor;
float3 _SnowDir;
float _SnowPower;
float _Range;
struct Input {
float2 uv_MainTex;
float2 uv_NormalMap;
float2 Normal;
float3 worldNormal;INTERNAL_DATA
};
void surf (Input IN,inout SurfaceOutput o)
{
fixed4 texCol=tex2D(_MainTex,IN.uv_MainTex);
o.Albedo=_MainColor*texCol.rgb;
o.Normal=UnpackNormal(tex2D(_NormalMap,IN.uv_NormalMap));
half snow=dot(normalize(_SnowDir),WorldNormalVector(IN,o.Normal));
o.Emission=_SnowColor*snow*_SnowPower;
if(snow<=_Range)
{
o.Emission=_SnowColor*0;
}
}
ENDCG
}
Unity shader 初学 表面着色器 积雪效果
于 2023-08-08 19:35:01 首次发布