[sig20]对马岛之魂的渲染技术(1/3)

在这里插入图片描述

overview

2020年发售的《对马岛之魂》可以说给行业带来不小的惊喜,也收到玩家的很大的喜爱;
开发商sucker punch,在对马岛之前的代表作是infamous系列(这个系列各种特技其实也挺赞的),是一个美国游戏公司;
公司规模巅峰时期是160人,25qa,ppt里看起来是6个渲染程序,这个规模放在国内已经是“小团队”;

销量超过500万份,并且tga上获得best art direction;
艺术方向本身是:stylized realism;所基于的技术本身就是非常的物理;
本文是含金量不错的一篇文章,覆盖了对马岛的很多的材质系统,主要包括:
在这里插入图片描述

  • 各项异性的specular maps以及filtering(丝绸类材质)
  • 各向异性的asperity scattering brdf(毛绒类材质)
  • 皮肤shading
  • detail maps
    在这里插入图片描述

各项异性的specular maps以及filtering

suckerpunch之前的anisotropic specular就是顺着tangent这种做的ggx,这个最大问题就是这个方向美术没法控制;
在这里插入图片描述
(天刀的各项异性,顺着tangent和binormal来做specular,美术也很苦恼没法做方向控制)
所以首先sucker punch做的第一个事情,就是引入anisotropic specular的方向,可以看下贴图的组成:
在这里插入图片描述
可以看出各项异形的组成包括:u和v方向的gloss,以及定义方向的direction贴图;
这里首先完成的就是第一部分:让各向异性的方向可控,而不只是tangent和binormal的方向;

然后是filter的问题:通过sggx的算法encoding到一个aniso贴图中去;

然后接下来很重要一点就是要在mipmap filtering的时候保证物理正确性;
这里一个案例可以看下[sig18]《使命召唤:二战》的材质光照技术
这里的filter normalmap和gloss时候,不能直接去linear filter,需要将两者结合来保证NDF(normal distribution function)的正确性;

那么在anisotropic specular这里也面临类似的问题,需要能够做到正确的filtering(也就是生成正确的mipmap),这里用到的数学工具就是sggx;
sggx方法详见the sggx microflake distribution

在这里插入图片描述
简单描述就是,sggx是symmetric ggx简写,本来是用作计算volume render领域的方法,论文核心在于对normal distribution function使用了一个机遇project area的估算方式,进而使用椭球的方式来表达复杂解析公式,最终达到了可以支持filter的特性,极大地加速了volumetric data的lod渲染;
也就是核心在于椭球的表达normal distribution function,进而可以filter的特性;
而且ggx的NDF(normal distribution function)是sggx的一个特例,所以是妥妥的对原有的各向异性做了扩展;
在这里插入图片描述
原来anisotropic的ggx的case,表达出来这样的;
最后filter的计算过程变成:
1, 使用sggx matrix把normal和2x2 anisotropic ggx矩阵表达出来:
在这里插入图片描述
2,然后对sggx matrix做线性过滤得到sggx matrix s1
3,然后再把新的sub matrix从s1中反算出来
在这里插入图片描述
同时也有normal的计算;
4,把normal和各向异性的信息存到贴图里:

  • normal:bc5 normalmap
  • anisotropic map :bc7

上面sggx的各种推导有点绕,我们抓住一点:就是一个对于anisotropic case下的NDF filter的方法就好了;

小结

这里的各向异性的部分,sucker punch做了:

  • 支持到了u & v两个方向的各自的gloss定义,以及direction的美术自定义,美术控制力进一步上升
  • 使用sggx matrix的方式来让filter更加物理正确,结果也比较好,
  • sggx的方式比能达到类似效果LEAN map的方式,使用的数据更少
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值