SubSurface Scattering 次表面散射

SubSurface Scattering(次表面散射),简称3S。一种光的传输机制,光穿透物体表面并在材料内部以不规则的角度进行多次反射,穿透物体内部的光线以不同于直接从物体表面反射时所具有的角度进行返回,这种综合性很高的物理特性就是我们所说的的 SSS。当我们拿手电筒照射手掌时,会发现手掌即使不透明但光仍然可以穿透,被照射部位呈现红色,这就是生活中随处可见的次表面散射现象。符合这一物理属性的 CG 材质就为 3S 材质,常见的 3S 材质有皮肤、植物、瓷器、玉石、香皂、牛奶等。SSS 是计算机渲染中综合性最高,渲染时间最长也最难把握的一种材质类型。可以这么说,SSS 材质渲染表现的好坏直接决定着一个渲染器的水准。

皮肤由多层结构组成,表面油脂层主要贡献了皮肤光照的反射部分,而油脂层下面的表皮层和真皮层则主要贡献了的次表面散射部分。实验测试表明,光线接触到皮肤时,有大约96%被皮肤各层散射了,只有大约4%被反射。散射效果在皮肤薄的部位更加明显,如鼻孔和耳朵。当光线进入皮肤后,会在肌肉之间继续反弹可能有些被吸收,有些在反弹后以一个特殊的角度射入更深层,再相互作用,直到碰到骨骼才终止这个过程。次表面散射现象使照明的整体效果变得十分柔和,一个区域的光线会渗透到表面的周围区域,而皱纹、毛孔等小的表面细节变得看不清,光线穿入物体越深就衰减和散射得越严重。

渲染器中的3S材质算法

3S材质的表现可以说是所有材质里最困难的,次表面散射现象的模拟比一般的表面反射复杂很多,因为要正确的模拟这种现象,光线不止在物体的表面发生散射,还会折射到物体内部,然后再物体内部发生若干次散射,直到从物体表面的某一点射出,所以对于次表面散射性质的材质来说,光线出射的位置和入射的位置是不一样的,而且每一点的亮度取决于物体表面所有其他位置的亮度,物体的形状,厚度等。

目前实时计算机图形中使用的大多数材料仅考虑物体表面与光的相互作用。实际上,许多材料都是略微半透明的:光线进入表面,吸收、分散和重新发射。半透明材料的固有特性是吸收。光在物体内进一步传播过程中,吸收的比例越大。为了模拟这种效果,必须测量光穿过材料的距离。

基于深度图的SSS

测算该距离的一种方法是以类似于阴影映射的方式使用深度图。从灯光的角度将场景渲染到深度图中,以便存储到最近表面的距离。然后使用标准投影纹理映射将深度图投影到其上并重新渲染场景。在该过程中,当定点着色时,可以通过简单的纹理查找来获得光线进入表面的点处的光的距离。通过从射线离开物体的点减去该值,我们可以收集光穿过物体的距离的估计。

通过该方法获得的距离测量可以以多种方式使用。一种方法是使用它直接索引到艺术家创建的一维纹理,该纹理随距离呈指数下降。这种方法与其他更传统的照明模型相结合,可以创造出不同的材料,如大理石,玉石和蜡。如果模型不凸出,可能会出现问题,但可以使用深度剥离来避免这个问题。深度剥离可用于解释表面下方的变化密度,例如骨骼或肌肉,以提供更准确的散射模型。

纹理空间扩散

次表面散射的一个更明显的影响特点是漫反射光照一般较模糊。不是任意修改漫反射函数,而是通过在纹理空间中模拟漫射来更精确地建模漫射。该技术率先出现在人脸渲染中,最近用于实时的技术领域。

该方法使用顶点着色器展开对象的网格,首先根据原始顶点坐标计算光照。然后使用UV 纹理坐标重新映射顶点作为顶点的屏幕位置,适合从纹理坐标的[0,1]范围转换为标准化设备坐标的[-1,1]范围。通过以这种方式点亮未包裹的网格,我们获得表示对象上的照明的2D图像,然后可以将其处理并作为光照图重新应用于模型。为了模拟漫反射,光图纹理可以简单地模糊。将光照渲染到较低分辨率的纹理本身会产生一定程度的模糊。精确模拟皮肤表面下散射所需的模糊量仍在积极研究中,但仅一次模糊效果很难模拟真实效果。为了模拟扩散的波长依赖性,在(高斯)模糊同时增加采样。这在某种程度上是一种艺术过程。对于人体皮肤,最宽的散射是红色,然后是绿色,蓝色散射很少。

这种方法的一个主要好处是它的屏幕分辨率独立; 在纹理贴图中每个纹理仅进行一次着色,而不是对象上的每个像素。因此,一个明显的要求是对象具有良好的UV映射,因为纹理上的每个点必须仅映射到对象的一个​​点。另外,纹理空间扩散的使用提供了导致柔和阴影的若干因素之一,增强了阴影映射的真实性。


来源 维基百科