결과물(전/후)
Unity Standard shader를 활용하기 위해 surface shader로 작업했습니다.
void surf(Input IN, inout SurfaceOutputStandard o)
{
fixed4 c = tex2D(_MainTex, IN.uv_MainTex) * _Color;
//o.Normal = float3(0, 1, 0);
#ifdef _NORMALMAP
o.Normal = UnpackScaleNormal(tex2D(_BumpMap, IN.uv_MainTex), _BumpScale);
#endif
float snowDensity = 0.5 * WorldNormalVector(IN, o.Normal).y;
o.Albedo = c.rgb * (1 - snowDensity) + float3(1, 1, 1) * snowDensity;
//o.Albedo = snowDensity * float3(1, 1, 1);
//o.Albedo = WorldNormalVector(IN, o.Normal).y * float3(1, 1, 1);
//o.Albedo = WorldNormalVector(IN, o.Normal);
// Metallic and smoothness come from slider variables
o.Metallic = _Metallic;
o.Smoothness = _Glossiness;
o.Alpha = c.a;
}
법선벡터값을 찾아서 얼마나 위를 보고 있는 지 체크하고 눈색깔이랑 Lerp하는 간단한 코드입니다.