【Digital Dragon 2014】 Assassin's Creed 4 lighting weather atmosphere

今天介绍的是刺客信条4在Digital Dragon 2014分享的光照、天气以及大气相关的渲染方案,分享者是来自育碧(蒙特利尔)的图形程序员Bart Wronski,照例,这里对工作内容做一个总结:

  1. 基于FC3的方案改进而来,原方案采用SH2存储数据,精度较低,导致光照细节缺失较多,不能满足项目需要
  2. 将天光与方向光的贡献拆分开来,且假设天气只影响光照颜色与强度,不影响光照路径
  3. 整体实现思路给出如下:
    1. 依然采用probe来存储数据,probe只布设在navmesh周围,probe间隔两米
    2. 通过烘焙8套数据来实现对TOD的支持
    3. 采用Normalized Radiance来存储光照结果(取中性颜色即白色作为输入光颜色),同样存储四个方向(basis)的数据
      1. 之后在运行时基于天气对输出结果进行调制
      2. 在运行时会基于法线对四个方向的烘焙数据进行插值,得到最后的输出irradiance
      3. 由于只烘焙了一层probe,对于距离probe较远的位置(高度),会基于高度对结果进行调制
        1. 会导致结果精度下降,可以考虑烘焙多层probe来优化
    4. 数据以sector为单位进行存储,在运行时可以通过streaming进行加卸载更新
      1. 为了避免CPU/GPU传输导致的卡顿,会延迟数帧取用
    5. 通过环境光模拟多次反射的效果,避免死黑问题
      1. 运行时会基于法线对ambient cube进行采样,之后与天光遮蔽数据相结合(sky occlusion,俯视图的深度图),得到天光照明效果
    6. AO计算
      1. 将AO分为多种不同粒度的信号数据,不同粒度的AO采用不同的技术来实现。
      2. 粗粒度的AO用的是WorldAO,通过对天光遮蔽贴图进行高斯模糊来得到对AO的模拟
      3. 细粒度的AO用的则是SSAO
        1. 采用了泊松圆盘的算法,通过少量的采样点实现较好的AO效果

具体参见:【Digital Dragon 2014】 Assassin's Creed 4 lighting weather atmosphere

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容