查看原文
其他

支持Vulkan渲染器的Unity预览版发布

2016-10-12 Unity官方 Unity官方平台

我们发布了Unity首个支持Vulkan渲染器的开发者预览版本。Vulkan是新一代的图形及计算接口,提供了更高的性能,对现在的移动和PC设备GPU实现跨平台的访问。谷歌最近发布的Android Nougat版本实现了对Vulkan接口的官方支持,而Unity也在努力让用户能将图形性能提升到一个新的层次。



使用Vulkan渲染器在Lunux上运行Unity Labs场景
优点
Vulkan的主要优点在于:比老式的移动设备渲染接口(例如OpenGL ES 3.x)更快速。Vulkan在设计上充分利用多处理器的优势,允许应用程序在多个线程中并行地构建指令队列。这使得应用程序可以有效利用设备的所有处理器来提升性能。勾选Player Settings的“Enable Graphics Jobs”复选框即可启用Vulkan。然而,我们看到即便在单个线程中运行渲染器,也有很大的性能提升。在我们内部基准测试中发现,在Android设备上Vulkan相较于OpenGL ES 3.1渲染器可以达到35%的帧率提升,即使它们都运行在单独的渲染线程上!

开始
您可以点击[阅读原文]获取实验版本,这个版本是基于Unity 5.5  beta 4发布的。请您记住,在尝试之前请先备份项目!

打开“Play Settings…”,前往“Other Settings”,取消勾选“Auto Graphics API”以开启Vulkan支持。这样,您就会看到所有可选的图形API列表。如果Vulkan不在其中,则点击列表下方的“+”标志添加。随后,将Vulkan拖拽到列表的最上方,它将会在所有支持Vulkan渲染的设备上被启用。所有现有的着色器都会被翻译成Vulkan SPIR-V(除非一些通过#pragma only_renderers或者类似指令明确禁用的),并且能够“正常工作”。


还可以尝试开启Graphics Jobs复选框,它可以提供明显的性能提升,尤其是在多核处理器上。

注意!当目标平台为Android时,确保没有同时启用“Multithreaded Rendering”以及“Graphics Jobs (Experimental)”设置。他们是相互排斥的,并且在最终版本中我们会在开启Graphics Jobs时,自动取消Multithreaded Renderer选项。

现在,只需要build & run。如果一切运行正常,就可以在播放器日志中,打印启动时的部分看到以下内容:



现支持的设备
该Unity预览版可以在以下目标平台上开启Vulkan支持:
  • Windows独立安装包 (编辑器中暂不支持Vulkan)

  • 安卓

  • Linux独立安装包


在Windows上,我们主要测试了Nvidia和AMD的GPU。请您记得更新GPU驱动!Vulkan是一个新技术并且驱动也会持续更新,因此在提交crash报告之前,请先将驱动更新,看看是否修复了问题。

在安卓平台,我们测试了以下设备:
  • Samsung Galaxy S7(欧洲版,ARM Mali GPU架构)。确保是2016年8月后发布的最新固件。之前的固件带有老版本的驱动是无法工作的。

  • Nvidia Shield Tablet (两个版本),Shield Console。

  • Google Nexus 6P, 5X(虽然可能在这些手机上看到相比其他设备更多的问题)。


以下设备是现有固件无法工作的:
  • Samsung Galaxy S7(美版,高通GPU)。我们希望以后带有更新驱动的固件会修复这个问题。三星确保会在2016年10月下一个系统更新时,为基于高通的Galaxy S7发布一个修复Vulkan的驱动。


在Linux上,只测试了Nvidia 的GPU,您需要安装libvulkan1(无论是通过distro还是LunarG Vulkan SDK)以及最新的驱动(367.x或者更新的)。然而,我们发现在从启动画面进入游戏时,还是会随机挂起。因此,您在使用这个实验版本做测试时,可能需要考虑关闭Unity启动画面。

已知问题
由于这还是一个实验性的开发者预览版,所以存在一些我们正在处理中的已知问题。但是,我们依然非常欢迎各位的反馈!如果您发现任意的错误或问题,请告知我们:
  • 现阶段Vulkan上的Graphics Jobs还是实验性的。如果遇到崩溃,请您尝试禁用Graphics Jobs看看是否是它的问题。

  • Graphics Jobs暂不支持GrabPass。

  • 在Nvidia的GPU中,当开启了MSAA(多重采样抗锯齿)并且渲染多了摄像机时,可能发生显示错误。

  • 在Android设备上,Graphics Jobs现在只能运行在2个并发的线程上。因此,建议您选择使用Multithreaded renderer(这是现有的客户端线程渲染器),通常会获得更高的性能。

  • 计算着色器还没有经过测试,就实际情况或各有不同。


希望大家乐于去尝试新的渲染器。请在论坛上联系我们进行反馈:哪些可以工作,哪些不行,哪些是您喜欢的而哪些不是。如果发现Bug,请通过Bug Report系统提交给我们(确保将它关联到Vulkan实验版)。我们特别感兴趣的情况是在Android上Vulkan渲染器比GL ES 3.X更慢或者在Windows上比DX11或者DX9明显地慢。


更多Unity相关的技术文章:


重要提醒


点击“阅读原文”进入Unity官方中文社区!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存