作者:robertolopezmendez,文章出处:ARM Mali Graphics,发表时间:2016 年 4 月 20 日 09:04:43
简介
上个月,游戏开发者社区共同庆祝了在旧金山举办的业内盛事:游戏开发人员大会 (GDC)。作为游戏行业中历史最悠久的活动,第 30 届游戏开发人员大会吸引了 27,000 多位与会者,创下了新的历史记录。展馆一直到最后一刻都是人山人海,许多演讲为了响应与会者需求不得不移到更大的会议室中举行。
在这篇博客中,我将对 ARM 在 GDC 2016 大会上主办的“打造高质量移动 VR 游戏”研讨会进行总结。我有幸与两位优秀的同事一起主持本次研讨会:Carl Callewaert(Unity Technologies 美洲总监兼 Evangelism 全球主管)以及 Patrick O'Luanaigh (nDreams CEO)。
图 1. 在 GDC 2016 大会上发表演讲。
本研讨会的主题是移动 VR,但每个主讲者从不同角度展开了这一主题。我从开发人员的角度出发,分享了我们将冰洞演示移植到 Samsung Gear VR 的经验。我还介绍了一些在演示中用于实现高质量 VR 内容的高度优化的渲染技术,这些技术基于局部立方体贴图。另外我还讨论了渲染立体反射的重要性,并演示了如何在 Unity 中实现这些反射。
Carl 从游戏平台的角度出发进行了介绍,全球有超过一半的开发人员在使用这一平台。他与听众分享了有关 VR 与 Unity 集成的最新信息,并讨论了一些非常有趣的观点,也就是如何使用已经非常完善的既有体系结构设计准则来构建 VR 游戏环境,营造身临其境感和浸入感。让与会者感到兴味盎然的是,Carl 展示了实时渲染短片 Adam 的第一部分,这是照片级真实效果的浸入式演示,其中重点运用了 Unity 的渲染功能。
最后,Patrick 从已成功发布多款 VR 游戏的游戏工作室角度出发进行了介绍。作为开发环节的一部分,nDreams 对于 VR 中的移动有着广泛的研究。在介绍期间,Patrick 分享了在他们的 VR 游戏目录中致力于提供最佳用户体验的过程中,获得的一些非常有意思的成果。
局部立方体贴图的概念
在研讨会的第一部分,我介绍的内容 I 主要侧重于在冰洞演示中使用的几种渲染技术,这些技术基于局部立方体贴图。为了方便不熟悉局部立方体贴图的用户了解这个概念,下面我将简要进行介绍。
我们先假设有一个局部环境,由任意形状的边界分隔,我们从局部环境中的指定位置,将周边环境放置在一个立方体贴图中。我们按照由向量 V 定义的方向,看看边界中的一些星形,现在问题是:我们需要使用什么向量从立方体贴图纹理中检索星形?
图 2. 局部立方体贴图的概念。
如果我们使用相同的向量 V 而不是星形,就会得到图 1 左半部分所示的笑脸。那么我们需要使用什么向量?我们可以从中间的图中看到,需要使用的向量应该是,从立方体贴图位置指向视图向量与边界的交叉点。只有在采取一些简化措施之后才能解决这种类型的问题。
我们引入了代理几何体,用来简化查找交叉点 P 的问题,如图中右侧所示。最简单的代理几何体是一个盒子,场景的边界盒。我们找到了交叉点 P,并从立方体贴图所在位置到交叉点构建新向量,我们使用这个新的“局部修正向量”从立方体贴图中提取纹理。这里学到的经验是,对于用来检索在局部立方体贴图中烘焙的内容的每个向量,我们需要应用局部修正。
改善 VR 质量和性能
为移动设备开发游戏充满了挑战,因为我们需要非常谨慎地平衡运行时资源。移动 VR 面临的挑战甚至更为艰巨,因为我们必须处理立体渲染增加的复杂性,以及 FPS 性能的严格要求,这样才能成功提供优异的用户体验。
在冰洞演示中使用的几种基于局部立方体贴图的高效渲染技术,在实际应用中证明也非常适合 VR。
基于局部立方体贴图的动态柔和阴影
我们知道,移动设备中的运行时阴影成本非常高;在移动 VR 中这就是性能杀手。ARM 开发的新阴影渲染技术基于局部立方体贴图,有助于节省移动 VR 中的运行时资源,同时提供高质量的阴影。这一技术的实施详细信息可在多个出版物中找到。1, 2, 3
图 3. 基于局部立方体贴图的动态柔和阴影。
这项技术的主要理念是将局部环境边界的透明度离线渲染到静态立方体贴图的 alpha 通道。然后在运行时,在着色器中我们使用“片段到光”向量从立方体贴图中提取纹素,确定片段处于光照还是阴影下。由于我们在处理局部立方体贴图,因此必须在提取操作之前,将局部修正应用到“片段到光”向量。实际情况是,我们在每一帧中使用相同的纹理,确保了高质量的阴影,同时没有像素闪烁或不稳定,而其他阴影渲染技术中存在这些问题。
基于局部立方体贴图的动态柔和阴影可高效用于其他运行时阴影技术,以便组合来自静态和动态几何体的阴影。这项技术的另一个重要功能是,它可以高效地再现阴影的柔和度,即,与造成阴影的物体之间的距离越远,生成的阴影就越柔和。
图 4. 冰洞演示中的组合阴影。
基于局部立方体贴图的反射
局部立方体贴图技术还可用于非常高效地渲染高质量反射。使用此技术时,在立方体贴图的 RGB 通道中离线渲染局部环境。然后在运行时,我们在片段着色器中,按照反射向量的方向从立方体贴图中提取纹素。同样,在处理局部立方体贴图时,我们首先需要将局部修正应用到反射向量,即构建从生成立方体贴图的位置到交叉点 P 的新向量(图 4)。最后,我们使用新向量 R' 从立方体贴图中提取纹素。
图 5. 基于局部立方体贴图的反射。
这一技术的实施详细信息可在以前的博客文章中找到。3, 4, 5此技术也可与其他运行时反射技术结合,用于集成来自静态和动态几何体的反射。3, 6
图 6. 冰洞演示中的组合反射。
VR 中的立体反射
立体反射在 VR 中非常重要,因为如果反射不是立体的(也就是为双眼使用相同的纹理),用户非常容易就会注意到虚拟世界中有些不对劲。这会破坏完全浸入式的感受,对 VR 用户体验造成不良影响。
对于使用镜像摄像机技术在运行时渲染的平面反射6,我们需要应用镜像变换到主摄像机视图矩阵。我们还需要在 x 轴上进行半眼分离移位,以查找渲染反射的起始左/右位置。镜像摄像机将左/右反射交替渲染到单个纹理中,该纹理在着色器中由主摄像机的左/右眼使用,向反射物体应用反射效果。
此时,我们必须在左/右反射摄像机与左/右主摄像机的渲染之间实现完全同步。下图获取自设备,显示主摄像机的左右眼如何使用反射纹理中的不同颜色,这些纹理应用到冰洞演示中的平台。
图 7. 左/右立体反射同步。
如果我们在处理基于局部立方体贴图的反射,则需要使用两个略有不同的反射向量从立方体贴图中提取纹素。对此,我们需要查找(如果未提供)左/右主摄像机位置,并构建用于在着色器中查找反射向量的左/右视图向量。在从立方体贴图中提取反射纹理之前,这两个向量均必须进行“局部修正”。
在最近发表的博客文章中可以找到 Unity 中立体反射的实施细节。6
最新 Unity 改进
在演讲过程中,Carl 介绍了 Unity 在 VR 方面的最新工作,即推出了新的 VR 编辑器,使用该编辑器可以直接从 HMD 中构建 VR 环境。在 GDC 2016 大会上 Timoni West(Unity 首席设计师)主持的演讲中,我们看到了实时演示,其中介绍了这个工具的进展情况。
Carl 向与会者播放的 Adam 演示也是一个很好的证据,表明 Unity 在实时渲染功能方面取得了巨大的进步。下图即为例证。
图 8. Unity 实时渲染短片“Adam”第一部分中的截图。
Carl 还回顾了前一天关于如何在 VR 中营造身临其境感的演讲中的一些要点。我认为,他有关在设计 VR 环境时应重视营造深度感知的理念非常吸引人。古希腊人和古罗马人非常清楚,在引导人们观赏和理解空间美学方面,正确处理视角、光线、阴影和形状对于提供舒适的身临其境感有多重要。
VR 中的移动
研讨会的最后一部分侧重于 VR 中的移动。Patrick 的演讲极大地吸引了与会者的注意力,会后他们交流了许多问题。VR 中的移动是一个非常重要的话题,因为这直接影响到 VR 体验的质量。nDreams 开发团队针对 VR 中不同类型的移动及其对多种用户群体的影响进行了广泛的研究。Patrick 在演讲中展示了有关这项研究成果的数据,这让与会者收获颇丰。
根据 Patrick 的介绍,移动 VR 控制将转向控制器,跟踪控制器和手势跟踪,实现更为复杂精细的输入。
nDreams 的初期测试确认了一些基本情况:
图 9. nDreams 的一些基本研究成果。
在平移运动方面,nDreams 研究了两种主要形式:瞬间传送和闪现。闪现是一种快速传送,您的移动在 120 毫秒内完成。这个移动时间非常短,因此不会感受到任何不适,但用户可以感受到移动和隧道效果。由于使用额外的定向标线,传送被视为更加精确,而闪现则更有浸入感。
旋转研究包括触发形式和快速形式。触发式旋转使用控制器的肩部按钮,每次向左或向右以 45 度的增量旋转。快速旋转则改为使用操作杆按钮。在旋转感知方面,参与者大部分偏好触发式,不过了解快速形式的使用者实际上更加偏爱其灵活性。
下面展示了有关移动和旋转研究结果的一些数据。
图 10. nDreams 移动和旋转研究的一些数据。
下表总结了 Patrick O'Luanaigh 提供的一些最重要的研究成果。
移动需要尽可能真实。最理想的是将速度控制在大约 1.5 米/秒。
不要控制远离玩家的摄像机。
确保没有感知加速。
降低移动速度和扫视速度,相比速度更快来说,这会让人舒服得多。高旋转速度似乎更舒适,
因为旋转通常在有旋转晕眩感之前完成
旋转的最佳解决方案是随身体一起转动。
另一种控制方法鼓励玩家移动自己的身体查看四周。这就是快速旋转。
在旋转感知方面,参与者大部分偏好触发式,不过了解快速形式的使用者实际上更加偏爱其灵活性。
以 100 米/秒的速度快速传送(闪现)不会造成晕眩,并且比单纯的传送更有浸入感。
由于使用额外的定向标线,瞬时传送被视为更加精确。
避免同时移动和旋转。
图 11. nDreams 有关 VR 中移动的研究成果总结。
VR 刚刚迈出了切实的第一步,仍有许多地方等待发掘和学习。这正是 Patrick 在总结他的讲座时的建议,也是我非常喜欢的一点:尝试一切可能!适用于您游戏的方式,未见得与别人相同。
总结
GDC 2016 大会上的打造高质量移动 VR 游戏研讨会颇受欢迎,会后也交流了许多问题。在参加研讨会之后,有许多人参观了 ARM 展位,希望了解研讨会中谈及的冰洞演示以及基于局部立方体贴图的渲染技术的更多信息。从上面介绍的 GDC 2016 大会精彩节选中,我们能够体会到 VR 目前面临着巨大的发展机遇,而开发社区和游戏工作室对这一领域的兴趣正日益浓厚。
最后,我要感谢 Carl Callewaert 和 Patrick O'Luanaigh 主持的精彩演讲。
参考资料