SteamVR | Cheney Shen

Technology blog

Archives

Advanced VR Rendering Performance


作者: Alex Vlachos ValveAlex@ValveSoftware.com 这是全文的第二部分,第一部分在GDC 15的时候讲的,下面是链接: Video and slides from last year are free online: http://www.gdcvault.com/play/1021771/Advanced-VR 全篇目标就是:VR渲染如何在保证质量的前提下获得最好的性能。 全文分为四部分: Multi-GPU for VR 这一点主要考虑的方向就是GPU硬件对于性能的提升。 首先回顾上一篇有讲到隐藏网格区域,指的就是对于最后渲染buffer的不会看到的部分位置的像素点不渲染。 首先考虑使用单颗GPU来完成所有工作。 这里单GPU渲染工作方式有很多种,这里以顺序渲染作为例子。 上图展示的就是一次渲染的单GPU工作流,特点是两个眼睛共享shadow buffer。 然后我们再来考虑同时使用多个GPU来渲染。 AMD, Nvidia提供的多GPU协同工作API大同小异,都具备以下的重要功能: 广播draw call + mask来 确定每个GPU的工作内容 每个GPU拥有独立的shader constant buffers并可以独立设置 在GPU之间传输(或异步传输:在目标GPU在工作时不会打断,特别有用)渲染目标主体 使用两个GPU的情况: 每个GPU渲染一只眼睛看到的东西 每个GPU都需要渲染shadow buffer 次GPU的渲染结果需要提交到主GPU上,最终提交给VR system 实践证明这样的方式大概可以提高30-35%的系统性能 使用4个GPU的情况 每个GPU只需要渲染半只眼睛看到的画面 但是每个GPU还是需要独立的都运算一遍shadow buffers 对于 pixel shader的cost来说每个GPU减到原来的1/4,但是对于vertex shader来说,每个GPU都需要做,cost还是1。(相比较于单GPU) 太多的GPU驱动的工作协调会带来更高的CPU…

Read More
  • Categories

  • Tags