这个渲染管道花了几乎两年时间才能达到稳定到可以发布的程度。我们的游戏《星梦》(Stardream) 禁用了大部分 Unreal 内置的渲染功能,只保留了基本的光照渲染。几乎所有其他渲染都通过自定义后处理渲染管道进行重建。因此,我们需要重新实现许多视觉特性:反射、雾、爆灯、模糊、凹陷 / SSAO 等。虽然这是大量的工作,但是我们现在有了整个渲染堆栈的完全控制权。
大部分工作都花在时间序列转换系统(Time-of-Day transition system.)上。
当渲染管道重建完毕,我们有了几个看起来不错的“时间点”后,我们需要开发一个更加稳健的方式,来在这些“时间点”之间进行混合。最终,我们使用一个驱动 DataTable 的蓝图系统(Blueprint system),定于了每个“时间”的渲染参数。
在《星梦》,轨道站位于一个显示一个模拟天空的大天幕下。由于这个原因,时间序列转换必须与天幕视觉效果同步一起。
为了处理这样的约束,我们实现了两个参数转换类型:
- 世界空间转换(World-space transitions.) 由色彩在场景中以空间方式混合的参数使用。
- 直接插值(Direct interpolation.)简单的 Lerp 函数对参数进行混合,如
Sun_Rotation或Cavity_Width。
最后,大部分数据使用自定义工具进行性能优化和平台支持(baked for performance and platform support):用于光照、DFAO(动态聚光灯)和立方体域等渲染参数。
这对于 Unreal 来说是一个很不寻常的方法,但它在我们的项目中得到了我们需要的视觉控制。
如果你感兴趣并想在 Steam 上看到它的功能,星梦 的演示版本将很快推出。
在此期间,请在以下位置预约(wishlist)该项目:https://store.steampowered.com/app/3654740/Stardream/
评论 (0)