会逐一从0开始说说UnityChan的Shader
UnityChan应该可以说是二次元人模渲染的一个标准了
以下使用了2017年1.2.1的UnityChan版本
主要考虑是资料比较多(起码,乐乐姐有详细说),比较稳定,比较容易入门,适配的Unity的版本比较多
最后会附上整个项目吧,尽量把(估计难,涉及了MMD的2个模型,外加2个UnityChan的模板)
Falloff Texture
falloff 的 skin 是一个渐变图
看看乐乐姐怎么额说的:
计算包含衰减的光照颜色。我们通常计算漫反射是通过对贴图采样后再乘以漫反射系数(n点乘l)。而这里的做法是使用法线和观察方向的点积结果去采样一张衰减纹理,得到衰减值。然后靠这个衰减值去混合原贴图颜色和变暗后的原贴图颜色(其实就是取平方)。这样得到的效果其实并不能说是漫反射光照,因为并没有考虑光源方向,而是使用了类似算边缘高光的方法(算n点乘v)来计算光照衰减。这也是卡通效果里的一些trick吧。附上源码:
// Falloff. Convert the angle between the normal and the camera direction into a lookup for the gradient
float_t normalDotEye = dot( normalVec, i.eyeDir.xyz );
float_t falloffU = clamp( 1.0 - abs( normalDotEye ), 0.02, 0.98 );
float4_t falloffSamplerColor = FALLOFF_POWER * tex2D( _FalloffSampler, float2( falloffU, 0.25f ) );
float3_t shadowColor = diffSamplerColor.rgb * diffSamplerColor.rgb;
float3_t combinedColor = lerp( diffSamplerColor.rgb, shadowColor, falloffSamplerColor.r );
combinedColor *= ( 1.0 + falloffSamplerColor.rgb * falloffSamplerColor.a );
————————————————
版权声明:本文为CSDN博主「妈妈说女孩子要自立自强」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/candycat1992/article/details/51050591
Sphere Cube 和 Cube Map的区别
发现并不能用”别人家“的反射Cube Map 直接拖拉到自己的材质
#ifdef SPHEREMAP_MUL
half3 sph = (half3)texCUBE(_SphereCube, uvw_Sphere);
baseC = albedo * sph;
baseD = baseC * tempDiffuse; // for Diffuse only.
#elif SPHEREMAP_ADD
half3 sph = (half3)texCUBE(_SphereCube, uvw_Sphere);
baseC = albedo + sph;
baseD = albedo * tempDiffuse + sph; // for Diffuse only.
#else
baseC = albedo;
baseD = albedo * tempDiffuse;
#endif