自2015年GDC发布LiquidVR?以来,AMD与NVIDIA共同成为全球VR(虚拟现实)领域最受关注的两家显示芯片(GPU)企业。图形是VR领域最关键的方面,没有强大的GPU,人们理想中的虚拟世界就无法展现出来。本期我们将向大家详解AMD Radeon显卡针对VR推出的图形渲染技术LiquidVR?,从中大家对显卡在VR系统设计中的技术的深奥和设计理念也可见一斑,也理解AMD Radeon设计理念的用心之处。

VR作为一个在风口热门的技术,相信大家都有了一定的了解。简单地说,VR是借助一系列体感设备,通过计算机技术模拟人的感官,形成虚拟世界,达到身临其境的一种技术解决方案。虚拟现实的渲染效果是显卡作为关键部件来保证的,而AMD作为VR生态环境的重要组成部分,为VR体验带来了非常关键的图形特性,以提升VR体验的舒适度和临场感。

深度解析AMD Radeon显卡LiquidVR技术对VR延时的减少 (1)

AMD Radeon显卡产品为VR领域带来了一套提供了完整的软件与硬件支持的图形子系统解决方案LiquidVR?。Liquid这个单词在英语中有着平滑、流畅的含义,这应该也是AMD对于VR图形效果的期望。除此以外,舒适度和临场感是VR体验最关键的两个要素,LiquidVR?也是围绕着这些要素来设计的。

深度解析AMD Radeon显卡LiquidVR技术对VR延时的减少 (2)

接下来我就向大家介绍一下LiquidVR?1.0的4大核心特性

1.Latest Data Latch

直译是最新数据抓取。在解释Latest Data Latch之前,我们先来熟悉一个概念——Motion to Photon Latency,直译是运动到成像延迟,运动指的是VR头盔的转动及位置变换,成像指的是根据特定的位置信息所渲染并最终显示在头盔屏幕上的画面。

很显然当这个延迟为0时是最接近真实世界场景的,然而电脑的渲染呈现以及数据传输是需要时间的,所以延迟为0是不可能的,我们所能做的是尽可能的降低这一延迟:当延迟小到一定程度的时候,人的感官就感觉不到差别了。这样也能避免头晕恶心等不适感。

深度解析AMD Radeon显卡LiquidVR技术对VR延时的减少 (3)

Latest Data Latch就是为此而设计,它的思路是在尽可能晚的时间获取最新的头盔位置数据。渲染过程可分为两个阶段——与位置信息无关渲染和与位置信息有关渲染,最新的头盔位置数据可在与位置信息有关渲染之前获取。

传统的头盔位置数据获取的方式需要CPU以中介的形式来协调头盔与GPU之间的数据获取与同步,这无疑增加了系统的开销并降低了CPU的并行度。Latest Data Latch的设计使GPU绕过CPU而直接读取预先开辟的一个高速缓冲区内的头盔位置数据(这个高速缓冲区以循环缓冲的形式以固定的频率不断更新最新的头盔位置数据),并在最合适的时机选取最新的数据作为位置变换的输入进行渲染,从而大大降低Latest Data Latch。

2. Asynchronous Shaders

直译是异步着色引擎,这是在3D图形处理中的叫法(其实就是Asynchronous Compute Engine异步计算单元,简称ACE,这是在异构通用并行计算中的叫法)。首先让我们了解一下异步计算的含义,这是与同步计算相对应的概念。

同步计算是指不同的任务或线程间需要步调一致地进行处理流程,一般情况下需要任务或线程间的同步等待,某些线程需要条件满足后才能继续进行,在条件满足之前一直处于等待状态。而GPU在使用DirectX 11接口时同步的概念就更简单了,渲染和计算任务都被同等地看待,被放进同一个队列逐个执行。很显然这是一种很不合理的做法,也浪费了很多硬件资源。

与之相对应的异步计算则是使没有依赖的计算可以在不同线程中同时执行,在等待某个条件满足的时候可以去执行其它操作。而在GPU处理中,异步计算是指将渲染与计算任务分别放入不同的队列同时执行;由于计算与渲染所用到的硬件单元并不完全重叠,所以同时执行计算与渲染任务可以最大程度利用硬件资源,从而达到提升性能的目的。性能的提升最直接地体现在fps刷新率的提升上,这也为增强画面质量提供了基础,可以为用户带来更加真实的VR体验。

深度解析AMD Radeon显卡LiquidVR技术对VR延时的减少 (4)

这里还要普及一下,ACE是DirectX 12中的重要特性,也是AMD GPU在DirectX 12游戏上表现强势的重要原因之一。在DirectX 11的Direct Compute接口中是不支持异步计算队列的,计算与渲染任务被完全放在同一个队列中排队执行,大大降低了GPU的并行度,也使得AMD的硬件优势无法得以完全展现。因此在使用DirectX 12开发游戏时,如果能够合理利用ACE的话,将能使AMD的性能有巨大提升。而NVIDIA目前还不支持原生ACE,只能通过软件模拟方式来运行,效率非常低下。其明年上市的Pascal同样未能完整支持ACE特性,这使得NVIDIA在DirectX 12时代将会大幅落后于AMD——前提是游戏开发能很好地利用DirectX 12的ACE特性。

3.Affinity Multi-GPU

直译是多GPU联姻,其本意是多GPU协作加速,类似于Crossfire技术。由于VR显示的独特性,与传统显示器相比,VR显示有类似于3D眼镜的立体成像技术,最直接的区别是拥有两个显示屏,分别显示左眼和右眼的画面。这一特性使得VR能够更高效地利用双GPU来达到提升性能的目的。

传统Crossfire一般使用的是AFR(Alternate Frame Rendering)渲染模式,其原理是每个GPU轮流进行下一帧的渲染,这样做的缺点是如果每一帧的渲染需要通过前帧的结果进行位置变换,由于前后两帧数据被存在不同的GPU上,这导致延迟增加。而在VR渲染中,两个GPU分别对左右眼进行渲染,两者之间没有依赖关系,可分别独立渲染,从而降低了延迟。通过Affinity Multi-GPU特性可以使渲染性能接近翻倍,从而为进一步提高画面质量提供了基础。

深度解析AMD Radeon显卡LiquidVR技术对VR延时的减少 (5)

4. Direct to Display

直译是直接显示,意思是渲染完毕的图像可以绕开CPU直接将图像数据快速放入头盔的缓冲区供头盔显示。这个特性与Latest Data Latch是完全相反的操作,Latest Data Latch是GPU从头盔获取位置数据,相当于输入;而Direct to Display是头盔从GPU获取渲染图像数据,相当于输出。由于图像数据远大于头盔位置数据,所以这一特性能更大程度降低延迟,对Motion to Photon Latency的降低至关重要。

由于数据传输的时间大大缩短,这也降低了整个帧处理过程中渲染到显示的时间,从而能够降低Judder现象发生。在VR图形渲染显示过程中,一般会用到VSync,这一技术在传统显示器上也被广泛使用,其原理是根据显示器的固有刷新频率(如60Hz,即每秒显示60帧图像)来进行渲染显示。这就存在一个问题,如果某一帧渲染完成的图像交给显示器的时间超过了每次VSync的时间点,那么这一帧的数据将无法按时呈现在显示器上,这种现象就是Judder。

在拥有了以上4个特性之后,基于AMD的GPU将能够为用户带来更好的身临其境体验,为用户获取高品质VR体验提供了保障。AMD最新发布的专为VR设计的Radeon Pro Duo,它是一颗单卡双芯GPU,将两颗完整版Fiji核心打造成一个独立的GPU,以上4个特性得到更好的体现,将会成为追求高品质体验玩家的极佳选择。

总结:

总的来看,AMD LiquidVR?的四大特性主要从提升图形渲染效率和降低Motion to Photon Latency延迟角度出发,对于VR虚拟世界的生成和体验均具有非常重要的意义。VR内容开发者应当熟悉此类技术,以便帮助自己的内容具有更快的运行效率和更好的体验感受。我们也相信,随着VR技术的进步,LiquidVR?还会持续推出更多的针对VR的图形特性,现在仅仅是万里长征第一步。