返回 登录
0

从家用游戏机到PC虚拟现实游戏: 《不语者》给我们的启示

  1. 简介

《不语者》(Unspoken* ) * 是一款由 Insomniac Games* 公司开发的第一人称魔咒虚拟现实游戏,采用了 Oculus Touch* 控制器。。 Insomniac Games 是一家经验丰富的家用游戏机开发公司,他们的内部引擎经过扩展后可以支持虚拟现实技术开发。 从帧速率为 30 fps 的家用游戏机,到高端虚拟现实设备上的 90 fps,帧速率的大幅提升要求更好的性能感知设计和引擎性能改善,以实现最大程度地利用系统资源。 本文介绍了如何检测系统级别的引擎中所存在的技术瓶颈,其背后的原因,以及如何消除这些瓶颈以提升性能。

  1. 引擎架构

在详细讨论之前,我们首先来介绍一下 Insomniac Games 引擎架构, 该引擎主要由以下部分构成:

i) 主线程 (MT)
- MT 负责对游戏中的物体进行模拟,以及准备下一帧的渲染工作缓冲。 前者包括蒙皮、物理和视觉效果,后者包括视锥和遮挡剔除。

ii) 渲染提交线程 (RS)
- RS 负责处理渲染工作缓冲,并将其转化为渲染命令 (DirectX* 11)。 它可以更新各种资源,并使用即时语境(immediate context),而非延迟语境(deferred context)。 当 RS 没有向 GPU 提交工作时,可以用作工作线程。

iii) 工作线程
- 我们使用 4 个高优先级工作线程和 4 个低优先级工作线程,可以运行蒙皮、物理和视觉效果等。

MT 提前运行一个帧,也就是说,当它在处理 N+1 帧时,RS 将 N 帧的工作提交至 GPU。 虽然这会导致一帧的输入延迟,但是系统本身的并行性和松散耦合特性有助于提升性能。

2.1 家用游戏机与 PC

在家用游戏机上,GPU 几乎与 RS 同步运行。 MT 和 RS 之间保持紧密同步,当 GPU 开始执行后处理工作时,RS 立即唤醒 MT。 这有助于 MT 率先提交蒙皮工作,进而更新顶点缓冲区,以确保帧 RS 随后提交。而且,GPU 能够持续提供处理资源(有可能出现资源不足的风险),同时有效降低输入延迟。

在 PC 上,DirectX Present 发挥着遏制的作用(取决于具体的参数和最大帧延迟),可防止 CPU 过度领先 GPU 现象的发生。 在没有介入性 GPU 查询(用于停止 RS)的情况下,便无法及时唤醒 MT。因此,引擎中的 PC 路径在 Present 返回结果后唤醒 MT…查看全文

了解更多相关内容,请关注CSDN英特尔开发专区

Intel技术双周刊已全面开启:订阅请点击这里

评论