一些VR渲染优化方法

VR渲染需要左右眼两幅不同的画面,现在的大部分引擎都是暴力的直接渲染两遍,这样做想想性能也很难达到75FPS(或90FPS)

以Oculus DK2为例,1920x1080@75FPS,加上Super Sampling就变成了(UE4默认135%)2592x1458@75FPS

如果是Oculus的消费者版本和HTC Vive,分辨率和刷新率更是提升到了2160x1200@90FPS, 推荐配置是GTX980

以140%的Super Sampling为标准的话,只是Color Buffer每秒的数据量就有2160x1200x1.4x1.4x90x4 byte ≈ 1.7GB

这还没算Post Processing里的N多张Render Target和Deferred Rendering的GBuffer、Light Buffer

性能永远是VR渲染的最具有挑战的部分,本着能省一点是一点的思路,VR的渲染优化我总结了这么一些:

虽然VR渲染需要左右两幅画面, 但是有很多效果是不需要画两次的:

  • Shadow Map
  • 部分的Reflection
  • Occlusion Query
  • 大多数Post Processing

API层面的优化, 有这么几个思路:

  • 如果实现了多线程的渲染,一般会有一个Command Buffer,直接分别以不同的View提交两次
  • 针对每个物体分别提交两次, 相比上面这个State切换开销会节省一些
  • 使用Geometry Shader直接把Mesh分成左右眼的,drawcall不会翻倍了。但是坑爹的GS性能不咋地
  • 使用Instancing一次drawcall绘制两个Viewport, 跟GS类似,但性能大约是GS的3倍

这只是减少一些API调用、State切换还有Vertex处理的消耗,那瓶颈最大的Pixel处理的消耗怎么减少呢?

Valve使用一个Stencil Mesh, 剔除了17%的像素

NVIDIA的GameWorks也提供了一种方法, 叫Multi-Resolution Shading,大概的思路就是边缘的像素经过变形后会损失一些,另外人眼对视线中心的像素更敏感,所以周围一圈可以降低分辨率来渲染。通过这种方式可以节省25%到50的像素

硬件方面,NVIDIA和AMD都推出了双GPU渲染的支持,即每块GPU渲染一只眼睛的画面。嗯,这一定是个阴谋,他们肯定在偷着乐:这下显卡不愁卖了

SONY的PS VR在PS4的机能下实现了120FPS。听起来不可思议,实际是60FPS通过reproject插值出中间帧,跟Killzone的Temporal Reprojection 和Oculus的Timewrap差不多原理

参考资料:

Fast Stereo Rendering for VR - Google Slides - Google Docs

'Advanced VR Rendering' by Alex Vlachos (Valve) - Steam

GameWorks VR Presentation - NVIDIA Developer

Asynchronous Timewarp Examined

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏RESTART POiNTER

Web H5视频滤镜的“百搭”解决方案——WebGL着色器

视频滤镜,顾名思义,是在视频素材上duang特效的一种操作。 随着H5页面越做越炫酷的趋势,单一的视频播放已经不能满足我们的需求,视频滤镜在Web页面上的应用越...

2K30
来自专栏hightopo

原 透过WebGL 3D看动画Easing

10410
来自专栏MixLab科技+设计实验室

用代码生成Glitch Art风格的抖音字体

最近看到不少文章教大家用 photoshop 实现抖音的 logo 跟字体,我也非常喜欢这种风格的字体,于是趁着晚上的时间,动手用代码实现了下此类风格的字体特效...

54280
来自专栏MixLab科技+设计实验室

用代码生成Glitch Art风格的抖音字体

最近看到不少文章教大家用 photoshop 实现抖音的 logo 跟字体,我也非常喜欢这种风格的字体,于是趁着晚上的时间,动手用代码实现了下此类风格的字体特效...

1K60
来自专栏数据小魔方

超强脑洞第五弹——ggplot 构造连环饼图

今天这篇之前曾有涉略过,就是利用ggplot的辅助插件工具——scatterpie制作基于气泡图的饼图,之前曾在地图图层上演示过此种类似图表,不过这里我将其与折...

39350
来自专栏数据结构与算法

cf540D. Bad Luck Island(概率dp)

还是想复杂了啊,我列的状态时$f[i][j], g[i][j],t[i][j]$分别表示第$i$天,$j$个$s, r, p$活着的概率

8610
来自专栏阿凯的Excel

甘特图绘制(Excel绘制图表系列课程)!

谈到甘特图,很多人最先想到的是项目经理,想到项目经理,最先想到的就是 嗯!这两个字就是形容包括我在内的所有项目管理人员的! 回归正轨,是这样的,项目经理呢,...

33160
来自专栏大数据挖掘DT机器学习

【python分析】买彩票机选和守号哪个中奖概率高?

作者:Powerxing 厦门大学计算机系13级研究生 很多人有买彩票,不过就是瞎买买。早之前是随机买过一注,然后一直买这个号,不过断过一段时间没买,后来就一...

5.5K70
来自专栏hightopo

透过HT for Web 3D看动画Easing函数本质

11730
来自专栏MixLab科技+设计实验室

人工智能设计师之智能排版v0.0.3

本文继续谈《人工智能设计师》,往期可查阅: 人工智能设计师v0.0.2 DIY一个人工智能设计师_v0.0.1 「 国内首个 」设计+人工智能深度案例分析报告 ...

49670

扫码关注云+社区

领取腾讯云代金券