技术一直行业领先,但是一直低调的rockstar,终于在siggraph19放了大,做了《荒野大镖客2》(大表哥2,Red Dead: Redemption II)中的大气云雾技术分享。
看的也是近几年最过瘾的一篇了,high点:
- 是发售游戏中实际使用的,完整的,系统化的技术合集
- 代表当前最强的大气系统
- 技术探索&整合nice,积累深厚,运用纯熟
- 理论,实际开发已经性能优化有很好的平衡,堪称R&D的典范
篇幅很大,量很多,这里分四篇来写了。
motivation & overview
这也是很多优秀工作室做事的一个方法,在处理开创性事情的时候,就会列出一些依据来进行“合理突破”。
这里笔者也是深有共鸣,是一个很有章法的做事方式。
RockStar这里就包括:
- 在《荒野大镖客1》中已经有了不错的大气系统,而且这个确实很重要,当然要在2中进一步发展
- 受到一些名画的启发,笔者也是在看一些绘画,去一些景色壮观的地方都会带来很强的创作冲动(虽然我是写程序)
- 以及基础的atmosphere scattering系统中,现在确实还有很多可以完善的地方。
通篇是分成三个部分:
- data model
- render
- scene integration
本文先覆盖第一部分:
data model
这部分是一个知难行易的模块,所以直接列下特性和做法。
云的分布
这块比较类似horizon zero(https://blog.csdn.net/toughbro/article/details/48844649)的做法:
使用分布图来定义云的整体分布
(出来效果这样的,同时可以有多层的云)
雾的分布
类似云的分布,雾也是有一个分布:
(没有fog map的版本)
(有fogmap的版本)
云的形状定义
这块参考的15年的horizon zero的做法:https://blog.csdn.net/toughbro/article/details/48844649
基本原理差不多,有一些自己的特色:
这里定义云的形状:
- 1个lut定义云的厚度
- 1x3d noise,2x2d displacement
效果目测要比horizon zero的好一些。