Unity 2019.3开始提供Quest实验性Vulkan支持
对Quest而言是非常有吸引力的图形API
(映维网 2020年02月06日)Unity 2019.3已经提供面向Oculus Quest的实验性Vulkan支持。
1. 什么是Vulkan
Mobile VR从一开始就将OpenGL ES作为图形API,但诸如Vulkan的底层API为开发者提供了更大的灵活性和更低的渲染开销。Vulkan是一个相当新的图形API,具有众多令其优于OpenGL ES的功能。
与OpenGL ES不同,Vulkan是无状态API,这意味着驱动在指令之间不需要存储任何底层状态。Vulkan驱动几乎不执行错误检查,所以每当提交绘制调用或任何命令时,工作量都将大为减少。Vulkan的灵活性优势对VR开发者而言非常有价值。Vulkan为开发者提供了增强的性能和控制,对Quest而言是非常有吸引力的图形API。
更多关于GL和Vulkan之于Mobile VR的不同,请参阅映维网早前分享的博文:研发实战:如何在Oculus Mobile VR平台进行Vulkan开发
2. 为什么是实验性质?
之所以标记为实验版本,这是为了说明其依然存在一系列的问题,质量和性能尚未准备好支持已发行的Quest应用。Oculus计划利用这段实验时期来采集社区对于性能和稳定性的反馈。
这个版本包括一系列的高级渲染功能:多视图和固定注视点渲染(Fixed Foveated Rendering;FFR)。另外,借助上述Vulkan的性能优势,Oculus预计未来数月最终将能够实现约10%的CPU渲染成本优化。
但是,目前尚不能保证所有应用程序都能获得上述的性能优化,所以Oculus将其标记为实验版本。实际上,对于当前的2019.3版本,Vulkan之于某些应用程序的性能可能要比GL稍差。Oculus已经确定了一些性能瓶颈和优化机会,并希望在不久的将来性继续予以提升。
如果你要开始一个新项目或者希望尝试所述新功能,你可以使用Vulkan并向Oculus报告可能遇到的错误。这可以帮助团队继续优化改进。Oculus目前正在努力解决已知问题并提升稳定性。
解决功能和性能方面的错误后,Oculus将删除实验性标签,而Vulkan将成为官方推荐的Quest开发图形API。
3. 为Quest启用Vulkan支持
Unity 2019.3正在转向新的XR Management模型。当结合使用Oculus XR Plugin和XR Plugin Management系统时,2019.3以后将仅提供Vulkan支持。要启用Vulkan,你需要对设置进行一定的改动,并且现有项目应该能够轻松转换为新的XR Management系统。
首先,请导航至Package Manager,并确保未安装“Oculus Android”软件包。接下来,在Project Settings下转到“XR Plugin Management”。确保选择Android选项卡。安装“Oculus XR Plugin”,并在“Plugin Providers”区域选择“Oculus Loader”。最后,要配置特定于Oculus的设置,请导航至“Oculus”选项卡(下图左下角)。
选择Vulkan作为图形API,请导航至Project Settings->Player->Other Settings->Graphics APIs,然后将Vulkan作为第一选择。
4. 结合使用Vulkan与Universal Render Pipeline(URP)
目前,将URP与Vulkan一起使用并不完全稳定,并且可能存在功能和性能错误。在使用Vulkan时,URP功能会稍微落后于内置的RP功能,这是由于与URP相比,当前使用内置RP的Quest开发者数量众多。但是,Oculus将URP视为未来的重中之重,并且希望在接下来的几个月中稳定两者的结合使用。
换句话说,Vulkan仅支持于几周后发布的URP 7.2.0软件包。
5. 已知的Unity Vulkan问题
-
零星的FFR闪烁错误*
-
使用Multiview时执行清除操作可能会产生渲染伪影(影响初始屏幕)*
-
在某些情况下,将Multiview与内置RP一起使用会退回到多通道渲染
-
文本/SDF着色器尚不适用于Multiview
-
深度缓冲区正在解析(存储),导致每帧1-3ms的GPU成本
-
内存使用没有完全优化。对于MSAA应用,最多可容纳约150-250MB的额外内存
-
当重新分配眼睛纹理时,内存泄漏为25-50MB
-
混合现实捕捉无效*
-
URP不稳定*
-
Compositor层(OVROverlay)无效
-
Graphics Jobs不稳定
-
目前尚不完全支持Perf工具
注:末尾的“*”表明问题已修复,并等待推出。
6. 问题回答
问:Vulkan是否能够改善我的应用程序的GPU性能?
答:几乎所有情况都不会。Vulkan是用于生成GPU命令的图形API。如果你的图形API是OpenGL ES,GPU仍然必须以类似的方式执行所述命令。但由于上述原因,CPU渲染线程性能肯定可以得到改善。
问:Oculus Go是否会支持Vulkan API?
答:遗憾的是,Oculus Go使用了较旧的GPU和图形驱动,Oculus无法为Vulkan提供必要的稳定性和性能。Oculus正在与图形驱动提供商紧密合作,共同将Vulkan支持带到Oculus Quest。