加入收藏 | 设为首页 | 会员中心 | 我要投稿 二游网_173173游戏网 (http://www.173173youxi.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 聊聊八卦 > 时尚娱乐 > 正文

《荒野大镖客2》的大气云雾技术

发布时间:2020-03-30 14:33:36 所属栏目:时尚娱乐 来源:新浪游戏
导读:副标题#e# 导语:技术一直行业领先,但是一直低调的Rockstar,终于在SIGGRAPH 2019放了大,做了《荒野大镖客2》(大表哥2,Red Dead: Redemption II)中的大气云雾技术分享。 看得也是近几年最过瘾的一篇了,high点: 是发售游戏中实际使用的、完整的、系
副标题[/!--empirenews.page--]

导语:技术一直行业领先,但是一直低调的Rockstar,终于在SIGGRAPH 2019放了大,做了《荒野大镖客2》(大表哥2,Red Dead: Redemption II)中的大气云雾技术分享。 看得也是近几年最过瘾的一篇了,high点: 是发售游戏中实际使用的、完整的、系统化的技术合集

《荒野大镖客2》的大气云雾技术

  技术一直行业领先,但是一直低调的Rockstar,终于在SIGGRAPH 2019放了大,做了《荒野大镖客2》(大表哥2,Red Dead: Redemption II)中的大气云雾技术分享。

  看得也是近几年最过瘾的一篇了,high点:

  是发售游戏中实际使用的、完整的、系统化的技术合集

  代表当前最强的大气系统

  技术探索&整合nice,积累深厚,运用纯熟

  理论、实际开发已经性能优化有很好的平衡,堪称R&D的典范

  motivation & overview

  这也是很多优秀工作室做事的一个方法,在处理开创性事情的时候,就会列出一些依据来进行“合理突破”。

  这里笔者也是深有共鸣,是一个很有章法的做事方式。

  Rockstar这里就包括:

《荒野大镖客2》的大气云雾技术

  在《荒野大镖客1》中已经有了不错的大气系统,而且这个确实很重要,当然要在2中进一步发展。

  受到一些名画的启发,笔者也是在看一些绘画,去一些景色壮观的地方都会带来很强的创作冲动(虽然我是写程序)。

  以及基础的atmosphere scattering系统中,现在确实还有很多可以完善的地方。

  通篇是分成data model、render、scene integration三个部分。

  data model

《荒野大镖客2》的大气云雾技术

  这部分是一个知难行易的模块,所以直接列下特性和做法。

  云的分布

  这块比较类似Horizon Zero Dawn的做法:

  https://blog.csdn.net/toughbro/article/details/48844649

《荒野大镖客2》的大气云雾技术

  使用分布图来定义云的整体分布:

《荒野大镖客2》的大气云雾技术

  [ 出来效果这样的,同时可以有多层的云 ]

  雾的分布

  类似云的分布,雾也是有一个分布:

《荒野大镖客2》的大气云雾技术

  [ 没有fog map的版本 ]

《荒野大镖客2》的大气云雾技术

  [ 有fog map的版本 ]

  云的形状定义

  这块参考的15年的Horizon Zero Dawn的做法:

  https://blog.csdn.net/toughbro/article/details/48844649

  基本原理差不多,有一些自己的特色:

《荒野大镖客2》的大气云雾技术

  这里定义云的形状:

  1个lut定义云的厚度

  1x3d noise,2x2d displacement

  效果目测要比Horizon Zero Dawn的好一些。

  render

  接下来我们看第二部分,这部分主要谈渲染部分,包括scattering和lighting的render,相对内容也多一些。

  可以说这部分是本篇重点所在。

《荒野大镖客2》的大气云雾技术

  voxel+ray marching

《荒野大镖客2》的大气云雾技术

  处理大气效果时候,为了兼顾近处的精度和场景的宏大,使用了混合方案:

  近处使用voxelization的方式,得到高精度的渲染结果,reference了刺客信条的一个文章:

  https://blog.csdn.net/toughbro/article/details/46706837

  远处使用ray marching的方式,平衡效果和效率

  光照模型

《荒野大镖客2》的大气云雾技术

  这里最终的光照模型,使用这样的公式列出来,这个比较像大家所熟悉的PhysicallyBasedLighting中的macrofacet公式的模样,其中三项如下:

  P:phase的缩写,是光通过media时候的scattering的情况

  V:visibility,我们可以近似理解成shadow类的东西

  L:lighting,也就是光源,直接光,ambient lighting等等

  phase项

《荒野大镖客2》的大气云雾技术

  这里分成两个层级:

  1、基础phase模型,是基于Henyey-Greenstein phase function(简称HG),这个模型对于single forward scattering处理的比较好。

  2、多种scattering组合,基于上面的擅长处理single forward scattering的HG(heney-greenstein)模型。

  3、==使用多级HG模型来模拟multi scattering

  4、==使用一个clamp操作来模拟back scattering

  这里稍微贴下HG模型的样子:

《荒野大镖客2》的大气云雾技术

  这里g项是[-1,1]之间,代表从back scattering到forward scattering的情况,表示media的属性。

  theta就是各个角度,phase function就是关于角度的函数么。

  HG函数这部分还是比较物理的,但是multi scattering部分就是比较变通了,是多级HG来模拟multi scattering,各级之间的权重由美术定义。

  然后给定g,关于theta就可以预计算出来,放到LUT(look up tabble)贴图中:

《荒野大镖客2》的大气云雾技术

  最后放在一起的效果:

  只有1级HG function的时候:

《荒野大镖客2》的大气云雾技术

  2级HG function模拟multi scattering+back scattering:

《荒野大镖客2》的大气云雾技术

  “physically based“的度和变通

  这里也是涉及到一个“physically based“的程度问题,原则上我们是要physically based这样会尽可能的物理化,好处现在PBR已经论证的非常好了。

  但是实际开发中,我们会遇到各种需要折中的地方,或许是物理模型不够好,或许计算过重等等。

(编辑:二游网_173173游戏网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读