Unity PBR Shader之皮肤渲染
一,关于皮肤渲染,理论知识可以参考以下资料:
An Introduction To Real-Time Subsurface Scattering
NEXT GENERATION CHARACTER RENDERING
UE4相关资料:
二,皮肤的观察效果:
1 光照,质感柔和
2 阴影和光照交界处会有轻微的颜色渐变(颜色渗出)
3 透光现象
4 皮肤独有的肌理及油脂层
三,渲染方案:
1 漫反射:次表面散射(SSS),主要有基于屏幕空间次表面散射(SSSSS)和预先积分次表面散射(Pre-Integrated Skin)两种做法。unity中使用第二种方案,通过采样一种SSS Lut图来实现效果,如下:
其中横坐标是NdotL,竖坐标是曲率。为达到质感柔和,及磨皮的效果,这里使用模糊的法线(mipmap)来计算。
2 高光:使用DualSpecularLobe模型。即双层高光
第一层,Lobe1 Roughness 主要控制
第二层,Lobe2 Roughness 次要控制,比Lobe1要光滑一点
Lobe Ratio,通常为0.85,第一层占85%,第二层占15%
3 细节贴图,Detail Normal:脸部法线一般只包含宏观褶皱,皮肤的微观毛孔肌理可通过一张Tilling的细节法线来表现
4 涂层,ClearCoat,实现如唇膏,眼影等的效果。注意能量守恒定律
效果如下: