包含此页的版本:
不含此页的版本:
帧时序VR虚拟现实 更多信息
见术语表模式的工作方式与启用VSync的非VR模式下完全相同(请参阅有关事件函数的执行顺序的文档)。唯一的区别是 Unity 不依赖于底层 3D SDK 的VSync垂直同步 (VSync) 是一种显示设置,用于限制游戏的帧速率以匹配显示器的刷新率,以防止图像撕裂。
请参阅术语表,而是它当前渲染时使用的任何 VR SDK。渲染速度比显示器刷新速度快没有任何好处。相反,Unity 专注于最有效地利用时间。
在多线程渲染中,Unity 会同步模拟线程和 CPU 上的渲染线程。这减少了延迟。模拟线程主要执行脚本一段代码,允许您创建自己的组件、触发游戏事件、随时间修改组件属性以及以您喜欢的任何方式响应用户输入。更多信息
请参阅术语表、声音、AI 以及模拟运行所需的其他任务。呈现线程侧重于向图形驱动程序提交绘制调用,图形驱动程序又验证它们并将其发送到 GPU。为了实现线程之间的最大并行性,Unity 会在图形命令传入时执行图形命令,并同时模拟下一帧。
Unity 等待 GPU 完全渲染并显示最后一帧,然后提交下一帧的渲染命令。
在 Unity 提交依赖于视图转换矩阵的第一个渲染命令之前,它必须先从 VR SDK 获取视图矩阵。为了尽可能降低延迟,VR SDK 每帧预测头部变换两次:
一个预测来呈现当前帧。此预测与帧到达屏幕上时,在真实空间中您的头部实际位置相对应。
一个预测来模拟下一帧。
Unity 将当前帧的渲染预测应用于相机在场景中创建特定视点图像的组件。输出要么绘制到屏幕上,要么作为纹理捕获。更多信息
请参阅术语表、控制器以及任何需要信息的内容场景场景包含游戏的环境和菜单。将每个唯一的场景文件视为一个独特的关卡。在每个场景中,你放置你的环境、障碍物和装饰品,基本上是将你的游戏设计和构建成碎片。更多信息
请参阅术语表渲染。如果 Unity 无法渲染下一帧,则会对下一帧使用模拟预测。
有关硬件如何处理渲染的更多信息,请参阅头戴式显示器的制造商文档。
如果 Unity 没有及时提交完全渲染的帧,以便为下一次显示刷新做好准备,则可能会发生一些情况,具体取决于处于活动状态的 VR SDK。VR SDK 可能会:
显示之前提交的帧。这看起来像抖动,并大大降低了体验质量。
根据当前头部姿势旋转重新投影先前提交的帧。这是一个粗略的近似值,可以很好地作为静态内容的回退,但任何具有动画或位置移动的内容看起来都不正确。
应用某种形式的位置重新投影。这可能是填补缺失细节的临时性的。
有关重新投影(有时称为时间扭曲)的更多信息,请参阅 XinReality wiki 关于时间扭曲的条目。
这一切都会自动发生。此时,Unity 通常为时已晚,无法成功完成它应该已经渲染的下一帧。相反,VR SDK 会获取它收到的最后一帧并将其重新投影到最新的预测姿势,然后 Unity 会等到下一次机会渲染完整帧才能回到正轨。如果您的应用程序不断丢帧,Unity 仅每隔一帧渲染一次。
有关硬件如何处理渲染的更多信息,请参阅头戴式显示器的制造商文档。
每个显示器都有 Unity 绑定的特定刷新率。您可以在运行时使用 VRDevice.refreshRate 获取此刷新率。值 1 除以refreshRate为您提供分配给单个帧的时间。
例如,在刷新率为 90 Hz 的情况下,这可能是 11.1 毫秒。