美文网首页
Unity酱~ 卡通渲染技术分析(二)

Unity酱~ 卡通渲染技术分析(二)

作者: 李嘉的博客 | 来源:发表于2020-02-20 01:12 被阅读0次

    前面的话

    上一篇Unity酱~ 卡通渲染技术分析(一) 写了CharaMain.cginc,服装的渲染是怎么实现的。这篇来分析一下头发跟皮肤的实现

    头发

    本来以为unitychan的头发会有各向异性的实现,没想到她也是用的CharaMain.cginc实现的。我们来看看头发的材质


    头发材质

    其他实现都一样,也是通过高光反射贴图来控制高光区域跟反射区域

    计算法线跟视角向量的点积,这样的效果是越垂直于视角向量的高光越大,然后用RGB贴图来控制哪些区域更容易出高光

    RGB

    反射依然是用A通道来控制,越白的地方,反射的越强


    Alpha通道

    如何实现皮肤效果

    这么漂亮的皮肤,其实只用了两个效果就实现了

    漫反射+边缘光

    这一次我们来详细说一下漫反射的实现

        float_t normalDotEye = dot( i.normal, i.eyeDir );
        float_t falloffU = clamp( 1 - abs( normalDotEye ), 0.02, 0.98 );
    

    还是用法线跟视角向量的点积,并且限制在了0.02到0.98的范围。
    本来是夹角越小的值越大,夹角越大的值越小,用1 - 去点积的绝对值后,表示越靠近视角向量的,就越接近0。跟视角向量夹角越大,值也就越大,也就是边缘的部位值会越大

        float4_t falloffSamplerColor = FALLOFF_POWER * tex2D( _FalloffSampler, float2( falloffU, 0.25f ) );
        float3_t combinedColor = lerp( diffSamplerColor.rgb, falloffSamplerColor.rgb * diffSamplerColor.rgb, falloffSamplerColor.a );
    

    用刚刚求出来的值,采样的这张衰减贴图,也就是反映出皮肤质感的重要一步了!值越大,采样出的颜色就越接近肉色。也就是越边缘越接近肉色

    FALLOFF_POWER 是一个衰减系数,skin shader中的值为1,也就是不衰减

    skin falloff 皮肤漫反射

    再加上边缘高光

    皮肤漫反射+边缘光

    总结

    unity chan的技术分析差不多完了,主要的技术特点如下:

    1. 漫反射是用N.V的值去采样一张衰减贴图实现的,这张贴图还可以用来实现皮肤效果
    2. 通过一张高光反射贴图来控制高光的细节,以及哪些区域要显示反射
    3. 边缘光没用菲涅尔反射,而是采样rim贴图后去乘以漫反射值得到的边缘高光
    4. 描边不是纯色的,采样了纹理颜色,再做了暗化处理

    最后再来两张照片吧~~ 这套渲染效果其实还是蛮不错的

    相关文章

      网友评论

          本文标题:Unity酱~ 卡通渲染技术分析(二)

          本文链接:https://www.haomeiwen.com/subject/pkctqhtx.html