[siggraph17]《使命召唤13:无限战争》光照技术

这里写图片描述
brief
siggraph17, cod13是infinity ward开发的,技术是多方合作出来的,这篇presentation是activition central tech两个哥们带来;
是16年的cod年货,是由cod4的开发商infinity ward承办,全球截止到17年10月,3平台有1千2百万套+的销量;
其中的光照技术等也在持续的进步,早先在treyarch开发的black ops系列,光照技术聊的比较多,也是PBR的早期使用者(直接导致《天涯明月刀OL》在11年时候做了使用PBR的技术方向),目前看来可能是central tech的存在让技术探索在activition多个团队联合起来推动技术发展;

links:
一些brief和演讲者的介绍
http://advances.realtimerendering.com/s2017/index.html
presentation链接:
http://advances.realtimerendering.com/s2017/Precomputed%20Lighting%20in%20CoD%20IW_20_PPS.pptx

sum
这里写图片描述
如上图是一个本文聊的主要内容。
cod13的光照这里主要介绍的是prelighting,也就是:

  • 静态mesh–lightmap
  • 动态mesh–probe lighting
    本文更多的聚焦在probe lighting上面。
    probe lighting可以说是有将近20年历史的技术了,到了这里有3点处理的比较好:
  • 在受光的dynamic mesh上面decouple visibility并离线bake
  • 在probe的放置上面使用专门的算法,来做到一个自适应的保持质量基础上最少probe数量的产生
  • triangular depth map:处理probe之间在有occluder的时候常遇的问题:漏光

dynamic mesh visibility

这里写图片描述
所谓的probe lighting visibility就是可以认为在dynamic mesh上面加上针对probe lighting的ao的东西。
只是这个过程是

  • 离线生成的
  • 纯3d空间的,不是常用的screenspace ao技术,类似voxel based ao技术
    在bake的过程中,是在object space中进行:

  • 将信息bake在vertex上面

  • 使用一个椎体来描述受光的情况

这里写图片描述
由于probelighting描述的也是一个低频光照信息,所以这个visibility信息就做一个大幅度简化,使用一个椎体描述一个顶点上主要受光的信息,这个椎体包括:

  • 主要受光的方向:dir
  • 受光的范围:radius
  • 受光的强度:scale–这个scale主要是当一个点受到光是断断续续的时候,可以使用这个

中间还有一些小trick,比如做一些后处理来处理noise,处理透明部分等等。
以及使用多个probe来产生丰富的lighting,这个在之前的paper中大量都有,不在赘述。

probe 分布
这个就是一个probe在场景里自动摆放的问题,现在不再会有人手动放了,但是平均的生成量太大,也没必要,空浪费bake time和内存。

activision使用tetrahedralize(四面体) voxelize的算法来做这个最优分布。
这里写图片描述
道理和四叉树也是一样的,只是这个是使用四面体来做subdivision的树状结构,细分就是根据我们需要,比如是否包含geometry,是否有navmesh,是否是我们gameplay中的重要的点等等。
选用tetrahedralize的原因是,这个是三维空间里面最简单的“体”,类似三角形是2维空间中最小的体。
tetrahedra的插值也是最简单的。
出来的tet mesh这样的:
这里写图片描述
最后的probe 分布:
这里写图片描述

probe漏光问题解决

这里写图片描述
这个是indirectlighting常出现的问题,本质就是sample点的密度还是太低(低频),导致无法描述高频信息
这里写图片描述
解决办法是做了一个triangular depth map,把四面体每个部分的triangle细分出来15个点,然后存一个被挡住的深度,比如0.6的地方被挡住了,就来一个深度。
这样4个dword就能存好,精度也是足够的。

小结
本文在probe lighting方面几个探索是非常可圈可点的,visibility bake和tet mesh都是非常喜欢的想法。
一些数学细节没有太多覆盖,里面数学其实是不少的,一定程度上也显示activision在这个方面的积累是不错的。

猜你喜欢

转载自blog.csdn.net/ccanan/article/details/78153634