本篇文章的题目采用的是“启示”而不是“变革”,这是因为移动端的游戏引擎依然在遵循自己的策略慢慢地实现全局光线追踪。移动端游戏社区都想实现光线追踪,但是存在不可抗力的原因:硬件的性能不够,不能满足帧率的要求。因此,ImaginaTIon一直在致力优化移动端,并推出了PowerVR光线追踪硬件IP核。
本篇文章主要分为两部分,分别从不同的角度进行阐述。第一部分讨论的是美术相关的问题以及游戏场景资源的生成:几何、颜色、纹理、表面属性和光源。第二部分介绍的是将软件工程集成到虚幻引擎(UE)中来,并采用ImaginaTIon PowerVR GR6500硬件平台以及Vulkan驱动中扩展的光线追踪API。
第一部分:美术(游戏美工抱怨:“我只是想让它漂亮些,为什么会变成这样?”)
毫无疑问,游戏制作美工都想要实现光线追踪效果(提供准确的反射、折射和投射阴影的一键式解决方案)。因为这将会使他们将更多的精力放在美学研究方面,而不是专注于游戏资源的适应技巧从而使得游戏场景显得更加的真实。
我们注意到,光线追踪的解决方法类似于反射探测、屏幕空间和平面反射外加额外的眩光效果,但是它们都有明显的光学限制。在屏幕空间内,物体的反射是不可见的,物体的背面也是没有反射效果的。平面反射通常是采用比较生硬的方式来实现,比如通过巧妙的重新定位相机对场景进行重新渲染。实际上这种方法只适用于平面,而且在移动端由于性能的限制这个功能通常会被禁止。
游戏美工通常花费大量的时间定位和测试反射探测节点以及其它光发射节点,为的是让场景更具视觉冲击力。当然,如果游戏是打算在移动设备上运行,那么我们不得不限制反射探测节点的数量,因为每一帧都需要将它们重新生成来涵盖所有的动画。这种解决方法通常需要成百上千个小时来进行处理以达到预期的效果。当然,这些都需要我们人工实时查看处理过程以确保所有游戏资源预期进行处理。
可以验证的是光线追踪的阴影更加精确而且不需要过多的密集型处理,结果就是更低的功耗以及性能的提升。目前创建非光线追踪的阴影缓存比较复杂而且很容易出现各种问题。从根本上讲,它们是深度图像文件,从光点角度来看它们表示的是距离。由于实际文件大小的限制它们只占用游戏场景的一小部分。一般用于静态物体,对于动画对象每一帧都需要重新加载处理,这会增加处理器的负载。而且如果阴影继承到颜色属性中,那么对于透明的物体也是有问题的。适当的模糊阴影长度能够增加真实感,但是不通过光线追踪或者动态深度测量是不可能实现的。如果渲染引擎采用全局光线追踪就不会出现这些问题。(注:在写这篇文章时我们还没有将混合单光线软阴影算法添加到虚幻引擎支持中)。为了能够显著提升投射阴影的表现力,ImaginaTIon的光线追踪方案会区别对待阴影光线,尤其那些不透明的物体。
游戏场景的其他方面,如管道、材质、模型、光源和物体表面都可以通过光线追踪引擎实现流线型的表现效果。现在游戏美工社区特别期待移动端硬件能够支持光线追踪。尽管,即使有了光线追踪特性也还有很多工作要做,但是花费更多时间使游戏场景变得更加漂亮也是值得的。
第二部分:科学(真正重要的来了)
这个项目的目标是集成光线追踪特性,使之确保光线跟踪效果与现有的光栅效应同等重要。举个例子,当材料的表面属性需要反射效果,那么这个材料的着色器需要编译来投射合适的反射光线。我们付出了很多努力来尊重虚幻引擎(UE)的架构,以便所有效果都能够放在一起很好的展示出来。这意味着你的游戏可以选择光线追踪反射搭配映射阴影在同一个场景同一时刻存在。为了能够实现这个功能,引擎需要编译材料着色器的光线追踪变量,当二次光线在场景内交织时依然能够保持正常。
虚幻4引擎支持桌面版Linux和OpenGL 3.x和4.x已经有一段时间了,2015年年底的时候,初始版本又增加了对Vulkan 1.0的支持,但是只兼容Windows和安卓系统,2016年2月在MWC大会上Epic公司正式发布了这个消息,并展示了一个名为ProtoStar的Demo运行在三星Galaxy S7手机上。现在来自虚幻4引擎Gihub社区的Yaakuro实现了引擎与Vulkan同时运行在桌面版Linux系统上,并且在英伟达桌面版GPU上进行了展示。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)