V-Ray 使用 Anders Langlands 研发的 alSurface 着色器

由 Grant Warwick 先生进行渲染,Aleks Kirilenko 负责建模

alSurface 着色器的历史

al 着色器中的“al”是以作者 Anders Langlands 来命名的。他目前任职于 Weta Digital 的 VFX sequence 主管 。他写了一系列针对 Arnold 渲染器的着色器。Anders 的动机是为 Arnold 植入可用于制作的 Arnold 着色器,他觉得 VFX 的需求超出了目前 Arnold 所能提供的功能。其中一个他写的最重要的着色器就是 alSurface 着色器,也被称为 uber – shader,这个着色器被大家拿来用在实体、金属、透明物、反射物,甚至次表面散射,例如皮肤材质。

以下是Maya中的alSurface uber-shader的全部接口:

他写的着色器一直在业界广为推崇,但是其中最为津津乐道的是alSurface着色器能够出色地表现皮肤材质。

最近他开放了着色器的原始码,让其他人可以植入到别的渲染器中。

他甚至开了一个网页专门介绍他的 Alshader。
AlShaders 网站

V-Ray 首次导入 alSurface 着色器

基于 V-Ray 论坛中 V-Ray 用户 Luc Begins 的强烈要求,以及 alSurface 着色器现在已经开放了程序代码。Vlado 决定要植入 alSurface 着色器的部份功能,特别是皮肤材质的部份。
这个着色器会考虑到diffuse,两阶的specular与次表面散射,目前唯一缺乏的部份是折射与透明度,可能之后会添加进去。

以下是到目前为止 V-Ray的alSurface 着色器的分解说明:

由于导入alSurface 着色器的目的是以皮肤材质为主, 因此我们来看看跟其他的皮肤材质,Arnold中的aiSkin 着色器与VRay Skin Mrtl这三者有什么差异 (事实上作法很类似)

以下是差异点:

  • Diffuse:
    • VRay Skin Mtl: Diffuse 与 Sub-Surface color事实上是两个不同的贴图然后以diffuse amount混合在一起。
      alSurface:Diffuse与 Sub-Surface color用的是同一张贴图,然后有一个SSS控制surface如何受到subsurface scattering与Lambertian diffuse的影响
  • Sub-Surface Scattering次表面散射:
    • VRay Skin Mtl:有三阶的次表面散射,每个都平等地混合在一起,使用了标准的dipole model计算SSS
      alSurface:同样也有三阶的SSS,但是每个各有权重控制,也提供几种SSS模式。Vlado已经导入了其中两种到V-Ray版的alSurface 着色器 Diffusion法,可以比标准的dipole model保留更多细节。而Directional法允许使用单一个Scatter maps 能保留更多细节。
  • Specular高光:
    • VRay Skin Mtl:使用了两个lobe specular模型,具有锐利与宽广的反射,同时使用Phong作为reflective BRDF。这个模型在很多状况都很好用,但是在扫视(glancing angles)的角度时会因此减切到SSS 产生变暗的问题。这是因为Fresnel效应是根据一个函数计算观察角度与表面法线角度,而忽略了从光线照明表面的方向。
      alSurface:这个模型也用了两个lobe specular,但是除了使用如Phong或Blinn的平滑BRDF 它还此用了微表面(microfacet)。Fresnel效应则是根据一部分BRDF的计算(也就是所谓光泽度的菲涅耳效应,glossy Fresnel)并且会考虑到观察的角度,表面法线与光线的方向,使用者可以选择GGX与 Beckmann BRDF两种模型,根据微表面的特性,可以避免透过逆反射(retro-reflection)在扫视角度的变暗问题。除此之外这个模型在同样的扫视角度不包含SSS。
  • 其他明显的差异:
  • 用在Fresnel的IOR在两个着色器都不同, 因为计算fresnel的方式有所不同。 因此,如果用户使用相同数值 alSurface 着色器的看起来会反射更强。
    VRay Skin Mtl使用glossiness 因此高数值就更光亮,而alSurface 着色器使用roughness因此数值越高就越diffuse。因此,如果你要转换套用的话,贴图就必须要先反转。
    VRay Skin Mtl以Diffuse混合,表示数值1等于100% diffuse。alSurface 着色器则是根据SSS混合,表示数值1等于100% SSS。如果你有用到贴图,Single Scatter Map 可能也需要反转才能套用。

下载 alSurface 着色器地址:

这个着色器目前可以在我们的 Github 下载:

3ds Max 的安装

  • 将 3ds Max 版本的 .dlt 文件复制到 [maxroot] \ plugins \ vrayplugins文件夹。

3ds Max 中的用法

  • 该材质称为 VRayALMtl。

Maya 的安装方法

  • Windows 操作系统
    • 将文件vray_BRDFAlSurface.dll复制到V-Ray plugins的活页夹中(f.e. C:\program files\autodesk\maya2016\vray\vrayplugins)

      将vray_BRDFAlSurface.dll的路径添加到环境变量(environment variables )VRAY_FOR_MAYA2016_PLUGINS_x64和VRAY_PLUGINS_x64
  • Linux 操作系统
    • 将文件libvray_BRDFAlSurface.so复制到V-Ray plugins文件夹(f.e. /usr/autodesk/maya2016/vray/vrayplugins)的文件夹中。

      将libvray_BRDFAlSurface.so文件的路径添加到环境变量(environment variables )VRAY_FOR_MAYA2016_PLUGINS_x64和VRAY_PLUGINS_x64

Maya的用法

    您可以从创建> V-Ray>创建V-Ray插件> BRDF材料创建新的材料。 从该列表中选择BRDFALSurface。

将VRay的SSS与alSurface SSS进行比较

维基人体(wikihuman)的计划一直致力于从ICT数据组提供的数据,以了解组装皮肤着色器的最佳方法。从一开始我们就明白,根据我们拥有的数据集,V-Ray中的标准皮肤着色器不再适合。所以我们制作了新的着色器,可以更符合从ICT获得的Lightstage数据。
然而,alSurface着色器可以在技术上原本就更能使用Lightstage数据。因此,我们决定拿这个着色器跟维基人体的着色器做比较测试。

  • 更新:维基人体计划在这个网站已经进行了深入的比较。

以下是将维基人体的数据,比较两个不同的着色器。我们将很快对Wikihuman.org网站上的着色器做更深入的分析。