【翻译】Crafting a Next-Gen Material Pipeline for The Order: 1886

原文链接 by David Neubelt and Matt Pettineo, Ready at Dawn Studios 

介绍-Introduction

 《教团:1886》是PlayStation 4上一款即将来临的第三人称动作冒险游戏。当我们第一次开始项目的前期制作时,电影化(filmic)这个词我们经常用于描述我们想要实现的游戏视觉效果的电影质感。像影视光照,肮脏的街道和高精度细节的角色被认为是创建一个令人信服的19世纪伦敦的写照的关键元素。

在项目非常早的时期,我们就明确了利用基于物理的着色模型将是实现我们想要的游戏表现的关键组成部分。Cook-Torrance之类的微表面双向散射分布函数(BRDF),在我们的材质中被采用做常规的镜面反射BRDF,并且在整个渲染管线中执行能量守恒。我们为皮肤,头发,纤维,以及各向异性材质实现了数个供选择的BRDFs。

我们也意识到,拥有一个健壮的材质管线对于允许艺术家高效的创建数百个材质来填充我们的游戏世界是必要的。为了实现这个目的,我们为我们的材质利用了一个基于继承的资源格式,允许我们来创建一个标准的材质模板库,可以被修改以创建核心材质类型的不同特性的变化。我们同样实现了一个离线的材质组合管线,为材质自动生成参数映射,参数由一堆材质资源和混合映射定义。处理离线组合之外,我们为材质实现了一个执行期分层部分,允许任意的材质在像素着色器中合并。

为了对我们的角色和道具快速添加高质量细节材质,我们制作了一个3D纺织品扫描器。扫描器捕获了高分辨率的反射率和法线贴图,并且从中我们可以获得其他的贴图。我们在我们的材质中使用一个细节图层整合贴图到我们的材质管线中,为了覆盖高频的法线和反射率变化。

最后,当在像素着色器中直接执行我们的镜面反射BRDF时,我们研究并实现了一个技术来减少锯齿。我们的技术基于论文Frequency Domain Normal Map Filtering Han et al. [2007a] ,是用频域以及用于法线贴图mip级别计算的法线分布函数(NDF)对BRDF进行卷积。

核心着色模型-Core Shading Model

微表面镜面反射双向反射分布函数-Microfacet Specular BRDF

由于稳健性和相对于专用着色模型的质量,以及下一代控制台硬件更强大的GPUs的采用有可能加速了这一趋势,基于物理的微表面BRDFs在实时渲染领域快速成为现状。因为《教团:1886》是在PlayStation 4上发布,目标硬件巨大的计算量,我们觉得基于物理的BRDFs是自然的选择。我们默认的镜面反射BRDF采用Cook-Torrance的微表面BDRDF的形式Cook and Torrance [1982] :

这里l是光照方向,v是观察方向,h是半角向量,n是法线,F是菲涅尔项,G是几何体项,D是法线分布函数(NDF)。对于D项我们使用Walter et al. [2007] 发表的GGX分布,并且对于G项我们使用同一论文推导的匹配Smith遮蔽项:

 

这里m是有效的微表面法线方向,α是粗糙度参数。在实际中,BRDF可以通过以下调整被简化:

         

 与Lazarov [2011] 类似,我们之后可以进行一下的替换,引入V,可见性项:

 当n·v小于或等于0的时候,为了让几何体项在物理上真实可信Walter et al. [2007] ,例如典型的几何体项必须构造成G(n,l)=0。这个约束意味着确保光不能从观察者看不到的表面反射出去。满足这个要求需要修改几何体项:

实际应用中我们发现,当使用法线贴图的时候,n·v<0的像素经常出现。如果使用置换映射渲染,这些表面在光栅化之后被遮挡,但是如果使用常规的法线映射技术,这些表面保持可见并且必须被着色。然而这可能使得像素产生之前描述的G项的着色结果,由于在n·v=0处不连续,这样做会产生视觉瑕疵。相反,我们仅仅对这些像素进行着色,没有他们是否是正向的条件。这使得掠射角镜面反射向面对远离观察者的那一边衰减,产生了一个无瑕疵的结果。

图1:左图展示了当n·v<=0时,由于使用条件强制几何体项为0的瑕疵。有图展示了没有条件限制的相同场景。

各向异性镜面反射双向反射分布函数-Anisotropic Specular BRDF

为了处理各向异性材质,我们使用下面的替代:

这里αt是沿着切线方向的粗糙度,αb是沿着次法线方向的粗糙度。

相反的我们并没有暴露两个粗糙度的参数,我们的材质模型利用了一个单独的粗糙度参数α以及一个各向异性参数来描述两个粗糙度值之间的关系

使用来自Burley [2012] 的数学替代,我们得到用于着色的优化形式:

 漫反射双向反射分布函数-Diffuse BRDF

对于漫反射部分,我们使用简化的Lambertain漫反射模型。为了确保能量守恒,漫反射项使用Shirley [1991] 镜面反射部分的菲涅尔项的倒数来平衡:

这里Cdiff是材质的漫反射反射率。应该注意到,这种平衡漫反射项的方式违反了亥姆霍兹互反律,可能会在某些渲染技术中造成问题,如果要求互反律,Shirley et al. [1997] 一个可替代的平衡方案,以额外的计算消耗为代价满足了互反律。

皮肤的漫反射双向反射分布函数-Diffuse BRDF for Skin

 为了模拟存在于皮肤的次表面散射效果,我们使用了Penner and Borshukov [2011] 的预积分皮肤着色技术。这个技术通过预积分一张皮肤扩散分布图近似了次表面散射效果

猜你喜欢

转载自www.cnblogs.com/jaffhan/p/9804845.html