VR游戏制作渲染优化方法

Posted VRStar教育

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VR游戏制作渲染优化方法相关的知识,希望对你有一定的参考价值。

VR渲染需要左右眼两幅不同的画面,现在的大部分引擎都是暴力的直接渲染两遍,这样做想想性能也很难达到75FPS(或90FPS)以Oculus DK2为例,1920x1080@75FPS,加上Super Sampling就变成了(UE4默认135%)2592x1458@75FPS

如果是Oculus的消费者版本和HTC Vive,分辨率和刷新率更是提升到了2160x1200@90FPS, 推荐配置是GTX980以135%的Super Sampling为标准的话,只是Color Buffer每秒的数据量就有2160x1200x1.35x90x8 byte  2.34GB这还没算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%的像素

VR游戏制作渲染优化方法(一)VR游戏制作渲染优化方法(一)


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


VR游戏制作渲染优化方法(一)VR游戏制作渲染优化方法(一)


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


 

  SONY的PS VR在PS4的机能下实现了120FPS。听起来不可思议,实际是60FPS通过reproject插值出中间帧,跟KillzoneTemporal 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

 


以上是关于VR游戏制作渲染优化方法的主要内容,如果未能解决你的问题,请参考以下文章

ue4和渲染谁赚钱

面试系列—— 虚拟偶像VR SDK开发和优化总结

面试系列——虚拟偶像VR SDK开发和优化总结

有没有比使用 Console.Clear() 更好的方法来制作控制台游戏?

PC VR游戏的CPU性能分析与优化

VR游戏动画就业前景怎么样?