1.1贴图
共使用以上7张贴图,分别是面部阴影贴图、身体颜色贴图、头发颜色贴图、参数贴图、ramp texture、参数贴图、脸部颜色贴图。
1.2Pass
该shader主要有三个pass,分别是角色主要颜色和光照输出的结果,轮廓边,阴影输出。
1.3光照
1.4分支
身体、脸部、头发三个分支
//分支声明
#pragma shader_feature __ _SHADERENUM_BASE _SHADERENUM_FACE _SHADERENUM_HAIR
1.5采样ramp贴图方法
//ramptexture 采样函数
float3 NPR_Ramp(float NdotL) {
float halfLambertRamp = smoothstep(0.0, 0.5, NdotL * 0.5 + 0.5);
if(_InNight > 0.0){
float3 var_rampTex = tex2D(_RampTex, float2(halfLambertRamp, _RampMapYRange));
return var_rampTex;
}
else {
float3 var_rampTex = tex2D(_RampTex, float2(halfLambertRamp, _RampMapYRange + 0.5));
return var_rampTex;
}
}
用的是半兰伯特光照模型,因为是将(半兰伯特模型所得到的结果,所需采样的颜色参数)作为uv坐标来对贴图进行采样,从而可以达到实现不同的颜色效果。
1.6采样高光贴图方法
//specular
float NPR_Specular(float HdotN, float4 var_ParamTex, float3 baseCol) {
//不同分支用不同的高光贴图
#if de