本月早些时候在苹果公司的年度WWDC大会上,该公司推出了他们最新的操作系统macOS Mojave(10.14)。由于本月晚些时候作为公开测试版推出,因此Mojave为Apple的Metal graphics API带来了进一步的VR特定优化,该公司在WWDC的会议中详细介绍了该优化。
在WWDC会议期间,在题为Metal for VR的主题演示中,来自Apple软件架构团队成员的KarolGasiński向开发者介绍了最新的VR优化(MacOS Mojave(10.14)),并概述了开发人员应该如何考虑优化他们的VR游戏图形管道。他还宣布,Mojave将为Vive Pro提供“即插即用支持”。
以前,如果开发人员想要利用MSAA渲染,他们需要为每只眼睛使用专用纹理,这会使绘制调用次数,渲染过程和解决步骤数量翻倍。如果开发人员选择不使用MSAA,Gasiński说,他们必须根据他们想要达到的目标选择不同的渲染布局。
Gasiński表示“没有任何缺点,其他渲染布局的所有好处”。它通过提供渲染空间,视图计数,和抗锯齿模式。这意味着开发人员可以依靠单一渲染布局来适应任何情况,并且具有单次绘制,渲染和解析渲染的好处。
Gasiński进一步宣布了一种新的跨进程纹理共享功能,该功能允许共享具有复杂结构的金属纹理(如多采样, 存储或包含mip贴图)。以前,只有简单的2D纹理可以在进程间共享。新功能允许跨进程共享任何金属纹理。
这些变化还允许VR合成器,调整纹理的过程在VR头戴式头显上正确显示,在一次渲染过程中对双眼进行扭曲调整。总的来说,这些变化简化了从应用程序到头显的渲染流水线,正如Gasiński所示:将立即提供给Mojave上的原生VR应用程序开发人员,并有可能最终看到Unity和Unreal Engine等开发工具的支持。
简而言之,Gasiński谈到了高级帧调整技术,他说开发人员应该使用多线程,拆分命令缓冲区,分离姿态依赖和姿势独立工作负载,按照更新频率分开工作负载(从多GPU配置中受益),并确保每个GPU都有独立的渲染线程以确保异步渲染。
后者是一种受益于多GPU配置的结构,对于苹果而言通常是独一无二的,因为该公司对外部GPU和多GPU系统的支持日益增加。即使在Macbook使用eGPU进行VR渲染的情况下,如果应用程序的渲染管道结构适当,Macbook的内部GPU可以为整体工作负载做出贡献,尽管它本身不足以运行VR应用程序它自己的。目前大多数基于PC的VR应用都是在假定所有工作都将在单个GPU上完成的情况下构建的。
总体而言,这些技术旨在最大限度地减少闲置的GPU时间,在可用于渲染的有限时间范围内尽可能完成尽可能多的工作。
来源:913VR