用了50层pass做得毛发效果,光照部分使用环境光+漫反射+各向异性高光,光照*层级作出毛发遮蔽感。
1.顶点外扩
FURSTEP毛发层级 _FurLength毛发长度
p = vertex + normal*_FurLength*FURSTEP + 想要得偏移量
2.噪声采样偏移
_FurTex毛发噪声贴图
uv.zw = TRANSFORM_TEX(v.texcoord, _FurTex)+FURSTEP*0.1;
3.边缘光
rim =1 - max(0, dot(N*V))
4.漫反射
_LightFilter透光系数 _FurShading遮蔽系数
diffuse = A*saturate(dot(N, L) + FURSTEP + _LightFilter))
A = tex + rim - (pow(1 - FURSTEP, 3)) * _FurShading
5.透明度
alpha = clamp(noise - (FURSTEP * FURSTEP) * _FurDensity, 0, 1)
6.各项异性高光
H = normalize(L+V);
dotTH = dot(bitT,H);
sinTH = sqrt(1- dotTH * dotTH);